프로젝트/COHO - 코인 호재 캘린더 16

[COHO] (React.js, Django) 코인 거래소 크롤링

체크 포인트 03 - Python 크롤링 우선 거래소별 정렬을 하기 위해서 거래소별 코인 종목 리스트가 필요했다. 하지만 업비트를 제외한 국내 거래소에서는 api로 종목을 알수 없는 구조여서 크롤링을 하기로 했다. 몇 가지 문제점은 5초간 blocking하는 거래소들이 많은데, 여기서 크롤링을 실패해서 다른 사이트를 찾아서 해결했다. 또한 동적으로 크롤링을 해야해서 selenium을 사용했는데 배포단계에서 이를 어떻게 할지 모르겠다. 총 4개의 거래소를 크롤링했다. 업비트, 빗썸, 코인원, 코인빗 이렇게 한국어 패치도 했다. 업비트 from urllib.request import Request, urlopen from bs4 import BeautifulSoup import re import reques..

[COHO] (React.js, Django) 디자인 수정 antd #2

체크 포인트 02 - Calendar 수정, Django 연동 지난번이랑 큰 차이는 없어보이지만, Django와 연동을 시켰다. 그리고 antd에서 열심히 뒤져봤는데 Modal이 제일 깔끔하게 떨어지는 것 같아서 이걸 사용하는 걸로 했다. 생각보다 문제는 없었다. Django RESTFUL API 연동을 시켜야 했다. 우선 urls.py에 api 주소를 넣는거는 무조건 해야하고, 헷갈리는 부분을 정리하겠다. 1. settings.py에 이거 넣어주기 REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.AllowAny', ] } INSTALLED_APPS = [ 'rest_framework', 'django.contr..

[Android] 코호 - 안드로이드 배포

안드로이드 배포 안녕하세요. 코호의 안드로이드 배포를 정리해보겠습니다. 코호의 출시는 4월 9일에 처음 시작했지만, 결국 4월 26일에 정상 출시가 되었습니다. 그 사이에 수많은 일이 있었습니다.. 첫 번째 삭제 WebView의 스팸 정책에 위반된다는 내용. 사이트의 소유자임을 증명해야 했습니다. 사실 여기서 바보같은 짓을 해버렸습니다. 사이트 내에서 크롤링한 사이트 링크를 넘겨주는데, 이 링크의 문제라고 생각했습니다. 크롤링을 허락 맡고 했니? 이것에 대한 증명을 해야한다고 생각했습니다. 그래서, 크롤링이 불법이 아니라는 해외 판결 사례와, 구글 플레이스토어에 올라와있는 비슷한 크롤링 앱들을 제시하면서 이의제기를 보냈습니다. 이의제기는 3일이 걸려 도착했습니다. 두 번째 삭제 이 사이트 너꺼 맞아? 결..

[Django] 코호 - 실시간 코인 호재 캘린더 PROC 12

우선 며칠간 글을 안썼는데, 그동안 웹 배포를 마쳤다. 내가 한 것은 아니지만, 과정을 기록하겠다. 장고 크론탭을 1시간 마다 실행 시켜야 했는데, 코인 크롤러가 멀티프로세스로 되어 있어서 오류가 발생했다. 서버가 다운되는 문제가 생겼다. 그래서 이제는 6분 정도 걸리는 코드를 생으로 돌리기로 했다. 크론탭은 리눅스 환경에서 실행이 가능한데, 윈도우에서 테스트를 하려고 도커를 열심히 공부했지만, 결국에는 잘 안됐다. 덕분에 도커라는게 뭔지 어렴풋이 알게 되었다. 말보다 웹 사이트를 보여주면 간단할 것 같다. 업데이트는 꾸준히 까진 아니고, 모바일 출시 했을 때, 반응이 좋으면 업데이트에 신경쓰기로 했다. 이제 안드로이드와 IOS에 웹뷰로 배포를 시작할 것이다. 여기 담당은 내가 맡기로 했다. 안드로이드는..

[Django] 코호 - 실시간 코인 호재 캘린더 PROC 11

결국에는 다시 원점으로 돌아왔다. 배포는 이번주 주말까지는 무조건 완료하기로 했다. 과연 이번주 주말까지 끝낼 수 있을지도 의문이다. 솔직히 시간은 많지만, 점점 의욕이 떨어지는 기분이다. 끝이 다다를수록 심해지는데 어쩔 수 없다. 번아웃을 극복해야 한다. 해결한 문제 멀티 프로세스와 멀티 스레드를 사용해도 속도가 더 줄어들지 않아 전부 멀티 프로세스로 바꿨다. 요약하자면 Rollback을 시켰다. ORM의 구조를 바꿨다. JSON형태로 바로 넘겨주기로 했다. model.py의 class내용을 바꿨다. 마주친 문제 ORM데이터의 구조를 바꿨는데, sql파일을 migrate를 다시 해주어야 했다. 찾아보니깐 attribute를 바꿨을 때 python mange.py syncdb이걸 사용하라고 되어있는데 없..

[Django] 코호 - 실시간 코인 호재 캘린더 PROC 10

이번주 배포가 목표다. 계획상 내일 배포를 해야하지만, 많이 부족하다. 일단 배포를 해보고 업데이트 하는걸로 하려고 한다. 배포 안하고 계속 수정만 한다면 보이는 결과가 없어서 힘이 빠질 것 같기 때문이다. 3주가 개발에 있어서는 짧지만 우리가 하는 프로젝트의 크기를 생각했을 때, 3주면 결과를 내야한다고 생각한다. 다음주에는 모바일 배포가 목표인데, 간단히 웹뷰만 띄워서 배포하는게 목표다. 해결한 문제 멀티 프로세스와 멀티 스레드를 동시에 사용해서 속도를 90초에서 60초로 줄였다. 하지만 멀티 프로세스가 잘 동작하지 않는 것 같아서 조금 더 해결해야 할 것 같다. 또한 속도를 더 줄일 수 있는 방법을 계속 찾아볼 것이다. 아래의 블로그에서 참고했다. 단순 멀티 스레드 속도가 멀티 프로세스보다 속도가 ..

[Django] 코호 - 실시간 코인 호재 캘린더 PROC 9

오늘은 시간을 조금 들였다. 가끔 의욕이 많은 날이 있는 것 같다. 해결 한 문제 딕셔너리 구조를 바꿨다. 캡쳐도구로 그린거여서 글씨가 이상하다. 캘린더에 날짜별로 추가를 하기때문에 데이터를 날짜별로 가공하는게 좋겠다고 말했다. 같은 날짜에 같은 코인 정보가 여러개였고, 이를 묶어서 저장하기로 했다. 원래는 parser.py에서 크롤링 함수도 구현하고, 멀티프로세스도 돌렸는데 점점 복잡해져서 코인마켓컬 사이트 크롤링 함수를crawler_coinmarketcal.py여기에 넣고, 코인스캘린더 크롤링 함수를 crawler_coinscalendar.py여기에 넣었다. 훨씬 간단해진 느낌이다. 마주친 문제 우선 시간이 90초가 넘게 걸린다. 멀티 프로세스를 사용해도 이렇다. 이건 어쩔수가 없는 것 같다. 코인스..

[Django] 코호 - 실시간 코인 호재 모음 PROC 8

일주일만에 돌아왔당. 소마 면접을 준비해야 했기 때문에 신경을 하나도 못썼다. 그렇지만 오늘부터 다시 시작. 이번주 배포가 목표다. 부족하지만 일단 배포하고 피드백 받고 업데이트 해나가는게 더 빠를 것 같아서 그렇게 정했다. 내가 쉬는 동안 친구가 웹 프론트를 많이 수정했다. 내가 수정한게 아니니깐 나중에 허락맡고 올리도록 하겠다. 해결한 문제 Django ORM과 크롤링 파이썬 파일 연결 아래의 사이트에서 참고했다. 캡쳐한 결과는 조금 신나서 막했었다. beomi.github.io/2017/03/01/HowToMakeWebCrawler-Save-with-Django/ 마주친 문제 솔직히 아직 장고 사용법을 잘 모르겠다. 하지만 계속 이렇게 하다보면 언젠가는 알지 않을까 싶었다. 해결 해야 할 문제 이제..

[Django] 코호 - 실시간 코인 호재 모음 PROC 7

Django urls path('', include('blog.urls'))을 추가해주어야 한다. HTML 시작하기 html의 기본을 익히는 과정이다. 사실, HTML을 생활코딩에서 조금 공부했었다. 이정도는 알 수 있어서 넘어갔다. Django ORM(Querysets) 장고를 데이터베이스에 연결, 데이터를 저장하는 방법 1일 템플릿 동적 데이터 Django 템플릿 CSS - 에쁘게 만들기 2일 템플릿 확장하기 애플리케이션 확장하기 Django 폼 더 나아가기 2일이면 끝낼 수 있을 것 같다. SW마에스트로 2차를 붙어서 다음주에 면접을 간다. 9일 정도 남았는데, 하나도 준비를 안했다. -> 면접 끝나고 공부시작해야겠따.