Home 프로그래머스 인공지능 데브코스 5주차 정리 및 후기
Post
Cancel

프로그래머스 인공지능 데브코스 5주차 정리 및 후기

이번 글에서는 프로그래머스 인공지능 데브코스의 5주차 강의에 대한 정리입니다.
이번 주에는 파이썬을 활용한 프레임워크인 Django의 세부적인 내용들을 추가적으로 학습합니다.
또한 특별히 지금까지 학습했던 내용들을 모두 통합하여 프로젝트를 할 수 있는 Monthly project가 있습니다.
파이썬으로 데이터를 EDA 하고, 이를 웹 페이지로 구성하여 배포까지 하는 것으로 프로젝트의 목표를 잡습니다.

참고 - 다크 모드가 아닌 화이트 모드로 보시면 사진 자료를 편하게 확인 가능합니다!


1. Web Application with Django

  • Django: Python 기반 웹 프레임워크
1
2
3
4
5
6
7
8
pip install django
django-admin startproject <project_name> # django 프로젝트 만들기
django-admin startapp <app_name>         # django 앱 만들기
python manage.py runserver               # django 실행하기

python manage.py makemigrations  # DB migration 만들기
python manage.py migrate         # default로 만든 DB 정보 반영하기 (DB 연동)
python manage.py createsuperuser # 관리자 계정 생성하기
  • Django project and app
    • 한 project는 아래와 같이 여러 app으로 구성
    • project
      • app1
      • app2
      • app3
  • Django의 MVT pattern
    • MVC: Model, View, Controller
    • MVT: Model, View, Template
      • URL: urls.py
      • View: views.py
      • Model: DB, ORM
      • Template: html, template 언어
  • Django에서 view 추가하기
    1. views.py 파일에 함수 만들기
    2. urls.py 파일의 urlpatterns에 path 추가하기
    3. settings.py 파일에서 INSTALLED_APPS에 페이지 이름 추가하기
    4. Django에서는 default로 admin 페이지 확인 가능 (127.0.0.1:8000/admin)
  • Django에서 template 추가하기
    1. views.py 파일과 연동할 수 있는 index.html 파일 만들기
    2. views.py 파일에서 render 함수의 인자로 1번에서 만든 index.html 받아주기
    3. settings.py 파일에서 TEMPLATES 변수에 (index.html 파일이 있는) DIR 추가하기
    4. template 언어를 활용하면, views.py에서 데이터를 받아올 수 있음
    5. template 태그를 활용하면, for, if 등을 활용할 수 있음

2. Django로 동적 웹페이지 만들기

  • Remind: Django의 MVT pattern
    • URL: urls.py
    • View: views.py
    • Template: html, css, javascript
    • Model: models.py
      • 데이터베이스 (RDB - Relational Database, SQL)
      • ORM: Object (객체)


Logo

  • Django에서 admin을 활용하여 DB 연결해보기
    1. models.py에 class로 DB 테이블을 정의하고, 간단한 스키마를 작성
    2. admin.py에 1번에서 만든 class 이름을 admin.site.register로 추가
  • 정리
    1. views.py에 보여주고자 하는 내용을 담은 함수 정의
    2. DB와 연결하고 싶다면, models.py에 DB를 class로 정의
    3. 페이지에서 보여주고자 하는 내용을 template 디렉토리 내에 html 파일로 저장
    4. urls.py에 보여주고자 하는 view 내용을 1번에서 정의한 함수로 URL과 함께 정의
    5. settings.py에 INSTALLED_APPS와 TEMPLATES에 내용 추가

3. Monthly project

  • 데이터 시각화 웹 페이지 만들기
  • 데이터 EDA를 했던 결과를 웹 상에서 확인할 수 있도록 하는 웹 페이지 만들어보기

  • 내가 고민했던 것들
    1. 어떤 데이터로 하면 좋을까?
    2. EDA로 어떤 것들을 보여주면 좋을까?
    3. Bootstrap 등 오픈 소스를 활용해볼 수 있을까?
    4. 내가 과거에 했었거나, 지금 하고 있는 프로젝트로 적용해볼까?
  • 고민에 대한 생각들
    • 사이드 프로젝트로 하는 것도 결국 웹 구현까지 계획 중이니, 지금 하고 있는 프로젝트로 해보자
    • 수집한 텍스트 데이터로 어떠한 것들을 보여주면 좋을까?
      • Title, Desc, URL, Issued, View_count, Download_count, Region, Label, Keywords
      • 기본적인 데이터 조회가 가능한 News 게시판 같은 형태로 href 걸어서 메인 페이지 구성
      • Issued된 날짜 별 통계 시각화
      • Region에 따른 지역 기반 시각화
      • Label 별 구성 비율에 대한 시각화 (finviz 참고)
      • View_count 및 Download_count에 따른 조회 상태에 대한 통계 시각화
      • Desc 전처리해서 각 데이터 별 핵심 키워드 추출하고, 그것을 보여줄 수 있는 시각화
  • 실제 구현
    • index.html: Main page (Menu 구성)
      • Overview: 전반적인 프로젝트 (웹페이지)에 대한 소개
        • Ref: cards.html, general.html, typography.html, blank-page-header.html
      • Data Detail: 데이터에 대한 EDA를 기록하는 페이지
        • Ref: data-tables.html, general-table.html
      • Data Search: 데이터를 얻을 수 있는 여러 소스들을 모아서 소개해주기
        • Ref: influencer-finder.html
      • Commnuity: 유저들끼리 서로 커뮤니케이션 할 수 있는 공간
        • Ref: influencer-profile.html
  • 최종 결과물 Github

4. 5주차 돌아보기

  • 기간: 2022. 10. 17 ~ 2022. 10. 22

데브코스를 시작하고 벌써 한 달이 지났고, 올해도 거의 마무리가 되어 가고 있다. 최근에는 갑작스럽게 날씨도 많이 추워져서 연말이 다가오는게 피부로도 느껴지는 듯하다. 다시는 돌아오지 않을 나에게 주어진 조금 특별한 이 시간들을 성실하게 잘 사용해보려고 여러가지로 애를 쓰고 있는데 잘하고 있는지는 잘 모르겠다. 여러가지 하려고 하는 욕심이 마음을 앞서다보니 지금 내가 잘하고 있는건가 하는 의문도 들기도 한다. 이럴때 필요한 것들 중 하나는, 내가 가고자 하는 방향이 올바른지를 돌아보는 것이 아닐까 생각해본다. 생각하지 않으면, 흘러가는대로 살아간다고 하는 것처럼 지금 이 시기를 단순히 그렇게 보내고 싶지는 않다. 내 삶의 주체성을 가지고, 내가 계획한 것들을 성취하며 나아가는 사람이 되고 싶다.

특별히 이번주에는 지금까지 데브코스에서 배웠던 내용들을 바탕으로 최종적으로 Monthly project를 진행했다. 꽤 오래 전에 아주 가볍게 배웠던 django를 이번에도 학습하게 되었는데, 그때는 아무것도 모르고 따라하기만 했었다면 이번에는 나름 스스로가 의미있다고 생각될 정도로 결과물이 나온 것 같아서 나름 뿌듯한 것 같다. 물론 당연히, 여전히 부족한게 많이 있겠지만 천천히 하나씩 채워가는 재미도 있는 것 같다.

물론 이번 프로젝트를 하면서 추가적으로 느꼈던 것도 당연히 있었다. 하루, 이틀만에 내가 생각했던 것을 코드로 구현하고 최종적으로 웹 페이지라는 눈에 보이는 결과물로 만들었던 것은 꽤나 재밌고, 뿌듯했던 시간이었다. 그러다보니 스스로 거기에 심취(?)해 있던 것도 없지 않았던 것 같다. 조금 시야를 달리보면 내가 회사와 같이 이러한 기술을 사용하는 곳에서는 단순히 내가 이런 프로젝트를 해봤다의 수준이 아닌, 스스로 온전히 프로젝트를 이끌어 갈 수 있을 만큼의 수준을 요구할 것이다. 과거에는 여러가지를 다방면에서 다룰 줄 아는 Generalist의 모습이 좋았던 것 같아 여러가지를 많이 시도해봤던 것 같다. 물론 그 능력도 필요하고, 대단하겠지만 최근에는 오히려 특정 분야의 Specialist가 되어야 할까 하는 생각이 든다.

오늘도 여전히 내 진로와 미래에 대해 끝없이 고민하고 생각을 정리해본다.



출처: 프로그래머스 인공지능 데브코스 4기 5주차 강의 -> 강의 내용 정리 깃허브 링크

This post is licensed under CC BY 4.0 by the author.

밑시딥1 4강. 신경망 학습

AI 학습용 데이터 라벨링 교육 - 필수과정 (인공지능 윤리와 법)