웹서비스 시도
최근 flask를 통해 배운 python을 웹에서 구동하기를 내 블로그와 연동하고 싶었습니다.
거기에 주식 예측하는 것을 실시간으로 구현해보는 것이 이번 프로젝트의 목표입니다.
github pages(블로그)는 정적으로 웹을 구현해주는 것으로 알고 있습니다.
반면 flask로 실시간으로 작업하는 것은 동적으로 작동하기에 heroku를 이용하여,
따로 배포를 해서 back-end로 필요한 작업들을 하고 front-end를 깃허브 블로그에 연결하는 것이 목표입니다.
현재 진행도는 실시간으로 비트코인의 변화만 받아서 보여주는 정도입니다.(3/16)
현재 진행도는 코인을 검색하면 종가를 일단위로 최대 1년동안 보여주고, 다음 3일간의 얼마일지 예측이 가능합니다.
백엔드 서버 구축(Flask with heroku)
코인의 데이터를 얻기 위해 upbit(업비트)에서 운영하는 api를 사용하였습니다. 업비트 개발자 센터
제가 하려는 것은 지금으로 부터 24시간 뒤의 값을 예상하여 보여주는 것이기에,
ARIMA 모델을 사용하여 안정적인 시계열 데이터로 가정하여 미래를 예측하였습니다.(코인은 불안정… )
시계열의 데이터를 분석하는 것이기에 3년 정도의 데이터를 분석하는 것이 좋지만
불안정한 데이터는 아주 최근의 데이터만 분석하는 것이 오히려 정확도가 높게나와 최대 1년의 데이터를 분석하였습니다.
pillow로 만든 그래프
이쁘게(제가 보기에) 나왔습니다. heroku에 그냥 이 그래프를 올려서 보여줄 수 있겠지만, 저는 깃허브 블로그에 포스팅을 하고 싶기에 구글링을 통해 자바스크립트로 웹자료를 불러서 작업하는 것을 봐서 따라 하게 되었습니다.
참고블로그
자바스크립트에 대해 하나도 몰랐기에 조코딩에 웹앱 만들기를 참고 하였습니다.
또 링크에 있는 블로그는 json형식의 데이터만 heroku로 배포하고 그 데이터를 가져다 깃허브 블로그에 사용하였습니다. json이 뭔지도 모르지만 기억나는 pandas에 Dataframe을 json형식으로 바꾸는 것이 있어 그래서 일단 백엔드도 json형식으로 배포를 하였습니다.
프론트엔드(Google Chart)
이 프로젝트를 시작한지 일주일정도의 시간으로 다른 알고리즘 공부와 모델 공부들도 하기에 시간이 부족해 자바스크립트가 뭔지 모르는 상태로 작업하게 되었습니다.심지어 HTML도 모르는 상태입니다.(아직도 모릅니다)
그래서 codepen의 사이트에 이쁘거나 이런식으로 해야겠다라고 구상한것이 맨 위의 사진입니다.
하지만 D3,Vue,jquery 등등 모르는데 여기 저기 베끼기만 하니 하나도 모르고 뭔가 만들어지는 것도 아니어서 내 데이터로 그래프라도 그리자는 생각에 구글차트를 보게 되어 시도하게 되었습니다.
처음에 백엔드로 올린 자료는 단순 string으로 단순 line차트에 그리는데 문제는 없었습니다.
이때 데이터를 가져와 구글차트에서 원하는 형식으로 만들어 주는 과정에 자바스크립트도 for문이 되고, jquery로 데이터를 받는 법만 익히고 (),{},[]를 언제 어디서 왜 어떤 기능이 있는지 아직도 제대로 모르지만 느낌으로 여러가지 참고 하며 만들어 봤습니다.
이제 차트의 확대기능을 넣고 싶어 구글차트 dashboard에 컨트롤러와 차트를 그려 넣는 것이 있기에 시도를 하였는데 필요한 자료형중 하나가 datetime이었습니다.
또 처음 보는 것이 나와서 어떻게 만드는지 이미 누가 만든건 없나 검색하며 참고하여 다시 백엔드에서 datetime에 맞게 다시 배포하는 작업을 진행하였습니다.
다 하고 나서 더 괜찮게 생긴 차트 없나 보다가annotation Charts라고 이미 확대기능까지 다 가지고 있는 linecharts급으로 이제는 간단히 만들 수 있는 차트가 있어 사용하게 되었습니다.
아쉬운 점
저는 heroku와 깃허브를 연결시켜 당연히 깃 푸시를 하면 깃허브에 올라가며 heroku에 도 자동으로 배포되는 줄 알고 있었는데,github에는 커밋이 안되어 있었다…
그날 푸시만 10번은 한거같은데 ㅠㅠ 1일 1커밋이 깨져서 너무 아쉬운데 이것을 나중에 알게 되어 아쉬운 만 남는 프로젝트였습니다.