환경변수가 꼬인 건지, 파이썬을 삭제하고, 미니콘다를 설치한 후, cmd가 안열리고, conda가 powershell에서 반응이 없고, conda activate 상황에서 pip를 통해 설치하면 가상환경에 설치가 안되는 등 언짢은 상황들이 발생했다. 하루 정도 시스템 복원 등을 시도해보고 이것 저것 해보았으나 답이 안나와, 시원하게 포맷했다.
지금 와서 생각하기엔, conda도 있고 python도 따로 설치하고 한 상황에서 환경변수가 꼬인건지. Local에 파이썬은 설치안하고 miniconda만 설치해서 항상 create -n 으로만 그때그때 파이썬을 쓰리라 다짐했다.
VScode랑 Pycharm을 혼용했었는데, 이젠 VScode가 제일 좋아... 간단하게 git, VScode 등을 설치하면서 개발환경을 셋업해준다.
깔끔하게 엎고 시작하는 간단한 프로젝트는 Django 기반 웹 서비스이다. More-Google-Trends라는 식으로 가보고자 한다.
HTML CSS JS 강의를 들었다. 프론트는 이걸로 만들고, BE는 Django로 구현하리라. Django REST를 예전에 사용해보았는데, 이걸 사용해서 API도 만들 예정.
간단한 프로젝트이다. 기술 스택들의 기본기를 익히고자 시작하는 프로젝트인데, 사용할 스택은 (당장 내가 아는 한) HTML CSS JS Django(REST) Docker AWS 인 듯 하다.
놀고있는 AWS 서버가 있다. 놀고는 있는데 돈은 내고있는. 거기에 로컬에서 개발한 걸 도커 이미지로 만들어 배포해볼 예정.
기능은 막 엄청 어려운 것은 없다. Google Trends는 최대 5개의 검색어에 대해 일정 기간동안 사람들이 검색한 '상대빈도'를 Max 100으로 설정해서 데이터를 보내준다. 이는 Pytrends를 사용하면 Pandas DataFrame으로 받아볼 수 있다.
최근 나는 5개가 아니라 750개 정도되는 검색어에 대해 상대빈도가 필요했다. 이를 위한 알고리즘을 구현했는데, 그 방식은, 아래와 같다.
키워드 5개씩 상대빈도를 받아와서 저장, 이 중 Max인 100 값을 갖는 키워드를 5개 중 대표로 설정
다시 대표들을 5개씩 묶어서 상대빈도를 받아와서 저장 위 과정 반복
최종적으로 모든 키워드 중 최대의 상대빈도를 갖는 키워드를 얻는다.
해당 최종 그룹의 나머지 키워드의 상대빈도(최종그룹값 / 100)를 trickle down하듯,
이전 그룹에게 가중치로 전달, 해당 가중치를 모든 값에 곱함.
이를 아래 그룹까지 전파, 최종적으로 모든 키워드들이 최대 검색량을 갖는 키워드에 대한 상대빈도를 알 수 있다.
O(log n) 알고리즘인데(base 5 to be exact), 사실 빠르다고 보긴 어려운 것이 pytrends가 api 결과를 가져다 줘야해서, 시간이 좀 걸린다.
기본적인 골자는, 일단 BE부터 생각하면, 5개 초과의 검색어에 대해 상대빈도를 알고 싶은 사용자가 REST API 요청으로 키워드들과 시간을 작성해서 보내면, 이를 작업해서 데이터로 보내주는 사이트를 생각했다. FE의 그래프 시각화 등은 나중에 생각할 부분이고(애초에 구글 트렌드도 5개만 하게 하는게 개수가 조금만 늘어나도 시각화에 의미가 별로 없다).
Challenge라면, 한 번 요청에 소요되는 시간이 긴 편인데, 이를 어떻게 효과적으로 Queueing하고, 결과를 반환할지... 생각해보아야한다. 미래의 내가 해줄거임 일단 구현부터하자고.
$ wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop Running 2
docker-desktop-data Running 2