4. Profile - (퇴근 후)
- 귀찮귀찮 열매를 먹은 건지, 귀찮은 일은 너무 하기 싫음.
- 가성비가 떨어지는 일은 하기 싫음.
- 일하는 거는 비교적 잘 참는데, 그 외의 일들에 대한 노가다는 잘 못 참음.
- 게임 등 노는 것도 포함.
5. WOW
- World of Warcraft, 다음 달에 영화(Warcraft)로도 나와요.
- 2005년에 출시됨.
- 이 게임을 제대로 즐기기 위해서는, 일단 만렙 달고 레이드를 해야 하던 때.
- 그런데, 40인 레이드를 제대로 하려면 평소에 회사도 안 가고 재료를 구하러 다
녀야 하는 난감한 상황.
- 그 당시 40인 공격대는 웬만한 회사보다 군기가 쎕니다.
- 혹은 퇴근 후에 술약속도 잡지 않고 레이드 및 준비만 해야 함.
6. WOW 조차도 노가다는 하기 싫었음.
- 낚시가 너무 지겨웠어요.
- https://www.youtube.com/watch?v=Zqx08E3
CVFI
- 원래는 이런 작업을 몇 시간 씩 해야 합
니다.
- 낚시를 해서 낚은 물고기들을 경매장에서
팔아서
돈으로 환산하거나 물약을 만들어서 레이드
에서
씁니다.
- 제가 하던 서버에서 경매장의 물고기
7. 사냥도...
- 사냥도 귀찮아 졌습니다.
- https://www.youtube.com/watch?v=IkAEjyy1Pe4
- 모든 사냥의 자동화는 하지 못했고, 사냥꾼이
라는 직업전용으로만 했음.
- 사냥 이후의 전리품들 수집, 무두, 골드 수집.
- 사냥을 하다 간혹 죽는 경우가 있는데, 그러
면 시체를 찾아와서 부활하는 기능까지…
- 중국산 봇도 많이 만났습니다.
- 봇으로 의심하고 말 거는 사람들 때문에 적절
한 채팅 대응기능까지 넣어야 하는가에 대한
심각한 고민도...
8. How?
1. Visual C++로 윈도우 핸들을 얻어와서,
2. 픽셀 정보를 득
3. 어떤 화면이고 어떤 상태인지 알아낸 후,
4. 적절한 (마우스) 이벤트를 던짐.
5. 2번으로 반복.
9. 결국에는...
- 파밍은 자동화를 완벽하게 하고, 편안한 WOW생활을 영위.
- 그냥 버리기는 아까워서, 2007년에 책으로 정리까지 했으나…
- http://www.yes24.com/24/goods/2549646
10. …
- 악플(?)이 아닌 신랄한 댓글에 gg.
- http://blog.yes24.com/blog/blogMain.aspx?blogid=wonlover&artSeqNo=8939
90
- 연예인들이 왜 악플에 고통 받는지 약간이나마 이해할 수 있게 됨.
- 다행히 지금은 절판됨.
- 절대 구매하지 마세요.
11. 애니팡, 캔디팡도...
- 문득 내가 왜 이 단순한 작업에
목숨을 걸고 있나라는 생각이 듦.
- wow bot과 거의 유사하게
픽셀분석해서 퍼즐맞추는 방식.
- mobizen을 연결해서 pc에서
윈도우 핸들 득 후 동일하게 처리.
- 이 때 카톡 친구들이 많이 친구를
끊었음. --;
- 봇과 승부를 하는 것은 정당하지 않다나?
13. 이제 본론으로 들어가죠.
- 전세값이 너무 올라서, 이리저리 아파트 값을 알아보다가 빡침.
- 정보가 공개되어 있음이 분명한데, 관심 지역에 대한 모니터링을 하기가 힘듦.
- 조회 용으로는 괜찮은 application들이 많은데,
noti를 내가 원하는 방식으로 보내주는 app은 없음.
- 제일 유사한게 호갱노노인데, 평수까지 동일해야해서 노티가 거의 안 옴.
14. 퇴근 후에, 내가 만들어야겠다
- UI 붙이는 건 귀찮아라고 말하지만 능력/시간 부족. 게다가 회사에서 하던 일을 퇴근 후에도 또 할 순 없어.
- 텔레그램 봇으로 하자.
- 요즘 봇api가 흥하던데...
- 요구사항
- 지역별 아파트 실거래가를 조회할 수 있어야 함.
- 변경이 있을 경우, 아침마다 noti 메시지 발송.
15. 필요 기술
- Telegram bot api
- https://core.telegram.org/bots/api
- 그러나 telepot라는 library를 사용하는 것이 더 간단해 보임.
- https://github.com/nickoala/telepot
- 데이터는 어떻게?
- crawl 해야 되려나?
- 아니... 현기증 나기도 하고, open api가 있으니 이것을 쓰자
17. Process
- 최소 2개의 process가 필요.
- BOT에게 말을 걸어서 실거래가를 조회하고, noti를 등록하기 위한 process가 필요.
- forever를 사용해서 항상 실행되도록 함.
- https://github.com/foreverjs/forever
- 매일 아침 새로운 거래가에 대해 noti를 날려줄 process가 필요.
- crontab으로 하루에 1번 오전에 실행.
18. DB
- DB도 쓰기 귀찮지만 process가 2개이고, 저장해 놓아야 하는 요구사항이 있음.
- 둘이 conflict을 낼 확률(맹렬히 동시에 접근할 확률)은 거의 없으므로 따로
daemon을 띄우는 애들(mySQL등) 을 쓸 필요는 없어 보임.
- python에 내장된 SQLite을 사용해도 문제 없어 보임.
- Tables(SQLite는 file단위로 관리되므로 각각 db files로 분리)
- Loc : 지역정보 조회를 위한 정보들.
- User : 유저들이 등록한 noti 정보들.
- Logs : Noti를 중복해서 보내지 않기 위해 저장.
19. $
- 아차, 나 금수저 아니지? 서버비는 벌어야 겠다.
- 어떻게 벌지?
- 텔레그램 메시지를 뿌릴때, 링크를 같이 주고 해당 링크페이지에 애드센스를 달면?
20. Data는? (추가된 페이지에 대한)
- data.go.kr에서 곧바로 data를 가져오는 방식인데, 웹페이지를 구성할 때 필요한
정보는 어떻게 하지?
- 따로 정보를 저장해 놓지는 않았고, sync도 문제고...
- data.go.kr에서 js api도 지원해 주네?
- client단에서 js api를 찔러서 해결하자.
- 화면단의 표현은
- highcharts
- bootstrap
21. CORS...
- data.go.kr로 호출하는데 Same Origin Policy 에러가 발생.
- 헐… 서버단에서 CORS 설정을 안 해 둔 듯...
- jsonp는 되려나?
- 역시 서버쪽 설정을 안 해 뒀는지, 안됨 --;
- js api 사용 포기.
- node.js용 api였나보구나...
- 텔레그램쪽을 python으로 한 김에 mod_python으로 구성.
22. 애로사항
- 1주일 정도 만에 만들다 보니, 예외처리가 다양하게 되어 있지는 않음.
- data.go.kr이 생각보다 자주 먹통이 됨.
- 모든 문제의 근원.
- 502 proxy error가 나는 경우가 생각보다 많음.
- 최근 2주일 동안 2번 장애 발생…
- 중간에 DB를 만들어서 주기적으로 갱신을 했어야 했음.
- notification 등록건수가 1,000개에 가까워져서 전송할 메시지가 많은 경우에는,
23. 소스코드 공유 및 결과물
- Github
- https://github.com/dspshin/realestate-bot
(api key가 소스에 박혀 있는데, 설마 누가 약용하겠어? telegram token까지는 박아두지 않음)
- Telegram bot URL
- https://telegram.me/apart_bot
- 홍보
- http://clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=314658
- 자매품
- https://telegram.me/officetel_bot 외 다수...