개발환경 세팅하기

진성·2023년 6월 23일
0

MoreGoogleTrends

목록 보기
1/1

1. 개발환경 셋업부터

  1. 환경변수가 꼬인 건지, 파이썬을 삭제하고, 미니콘다를 설치한 후, cmd가 안열리고, conda가 powershell에서 반응이 없고, conda activate 상황에서 pip를 통해 설치하면 가상환경에 설치가 안되는 등 언짢은 상황들이 발생했다. 하루 정도 시스템 복원 등을 시도해보고 이것 저것 해보았으나 답이 안나와, 시원하게 포맷했다.

  2. 지금 와서 생각하기엔, conda도 있고 python도 따로 설치하고 한 상황에서 환경변수가 꼬인건지. Local에 파이썬은 설치안하고 miniconda만 설치해서 항상 create -n 으로만 그때그때 파이썬을 쓰리라 다짐했다.

  3. VScode랑 Pycharm을 혼용했었는데, 이젠 VScode가 제일 좋아... 간단하게 git, VScode 등을 설치하면서 개발환경을 셋업해준다.

  4. 깔끔하게 엎고 시작하는 간단한 프로젝트는 Django 기반 웹 서비스이다. More-Google-Trends라는 식으로 가보고자 한다.

  5. HTML CSS JS 강의를 들었다. 프론트는 이걸로 만들고, BE는 Django로 구현하리라. Django REST를 예전에 사용해보았는데, 이걸 사용해서 API도 만들 예정.

2. 프로젝트 Description

  1. 간단한 프로젝트이다. 기술 스택들의 기본기를 익히고자 시작하는 프로젝트인데, 사용할 스택은 (당장 내가 아는 한) HTML CSS JS Django(REST) Docker AWS 인 듯 하다.

  2. 놀고있는 AWS 서버가 있다. 놀고는 있는데 돈은 내고있는. 거기에 로컬에서 개발한 걸 도커 이미지로 만들어 배포해볼 예정.

  3. 기능은 막 엄청 어려운 것은 없다. Google Trends는 최대 5개의 검색어에 대해 일정 기간동안 사람들이 검색한 '상대빈도'를 Max 100으로 설정해서 데이터를 보내준다. 이는 Pytrends를 사용하면 Pandas DataFrame으로 받아볼 수 있다.

  4. 최근 나는 5개가 아니라 750개 정도되는 검색어에 대해 상대빈도가 필요했다. 이를 위한 알고리즘을 구현했는데, 그 방식은, 아래와 같다.

키워드 5개씩 상대빈도를 받아와서 저장, 이 중 Max인 100 값을 갖는 키워드를 5개 중 대표로 설정
다시 대표들을 5개씩 묶어서 상대빈도를 받아와서 저장 위 과정 반복
최종적으로 모든 키워드 중 최대의 상대빈도를 갖는 키워드를 얻는다.
해당 최종 그룹의 나머지 키워드의 상대빈도(최종그룹값 / 100)를 trickle down하듯,
이전 그룹에게 가중치로 전달, 해당 가중치를 모든 값에 곱함.
이를 아래 그룹까지 전파, 최종적으로 모든 키워드들이 최대 검색량을 갖는 키워드에 대한 상대빈도를 알 수 있다.
  1. O(log n) 알고리즘인데(base 5 to be exact), 사실 빠르다고 보긴 어려운 것이 pytrends가 api 결과를 가져다 줘야해서, 시간이 좀 걸린다.

  2. 기본적인 골자는, 일단 BE부터 생각하면, 5개 초과의 검색어에 대해 상대빈도를 알고 싶은 사용자가 REST API 요청으로 키워드들과 시간을 작성해서 보내면, 이를 작업해서 데이터로 보내주는 사이트를 생각했다. FE의 그래프 시각화 등은 나중에 생각할 부분이고(애초에 구글 트렌드도 5개만 하게 하는게 개수가 조금만 늘어나도 시각화에 의미가 별로 없다).

  3. Challenge라면, 한 번 요청에 소요되는 시간이 긴 편인데, 이를 어떻게 효과적으로 Queueing하고, 결과를 반환할지... 생각해보아야한다. 미래의 내가 해줄거임 일단 구현부터하자고.

3. Docker 설치

  1. WSL2가 필요하다. Win Pro라서 Hyper-V 기반으로도 가능하다고 하나 WSL2가 더 좋은 퍼포먼스를 보인다고 하니 이를 설치한다. 공식 doc을 참조하였다. Ubuntu 20.04 LTS distribution도 설치해둔다. 절차가 복잡할 것도 없고 이전에도 해본거라 금방 했다.
  1. Docker Desktop을 설치하니 알아서 WSL2를 기반으로 돌아가게끔 세팅이 되어있다. 이후 잘 돌아가는지 확인.
$ wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
  1. Moment of Truth -> Docker에 대한 얼핏의 개념만 이해하고 있고, Docker Image를 받아와서 특정 application을 설치 및 사용해본 경험만 있지 어떻게 제대로 활용하는지는 모른다. 그러므로 이를 공부해서 프로젝트에 함께 써볼 것이다. 이 글의 설명 전반을 읽는다. Docker Desktop이 제공하는 Tutorial도 실행.

4. 그러면...

  1. 일단은 프로젝트부터 개발하자. Front는 간략하게 하고 BE의 구조부터 잘 만들어야 할 것이다. Docker 활용은 그 후일듯 하다.
profile
어려운 건 꾸준히, 재밌는 건 빠르게

0개의 댓글