웹킷과 자동화의
약속된 승리
python으로 에반게리온: Q 표 예매하기
발표자 소개
발표자의 나쁜 습관
발표자의 나쁜 습관
첫경험?
예매를 하려고 했는데...
● 갑자기 갑님이랑 워크샵 일정이 잡힘.
○ 위치는 머나먼 휘닉스 파크.
○ 워크샵 일정과 예매 오픈시간이 겹침.
● 스마트폰으로 예매 시도..
강원도의 흔한 통화권 이탈
망했어요
두번째 삽질
자동화를 해볼까?
자동화 하기엔 너무나도 복잡한...
우리에겐 심플한 모바일 페이지가!!
웹페이지 처리 자동화 하기
● Selenium
● Greesemonkey
● Chrome Extensions
● Phantomjs
아예 웹 브라우져를 (재빨리) 만들어버
리자
● 새로운 기술을 바닥부터 배우기엔 시간이 없
다.
● 기존의 웹 브라우져(의 sandbox)에서 제공하
는 기능만으로는 뭔가 부족하다.
● 그리고 쓰기 쉬운 python을 이용하자!!!
Webkit
● 대부분의 모바일 브라우져에서 쓰이는 웹 렌
더러 엔진
● 웹 브라우져에서 제공되는 기능 대부분이 사
용 가능
GObject Introspection
● GObject/Gtk 에서 사용되는 language
binding middleware
○ 여기에 있는 대부분의 API를 지원
● Python을 아주 잘 지원합니다.
● 더 자세히 알고 싶으면 예전 발표자료 나 제목
의 링크를 참조하세요.
GObject Introspection의 단점.
● Documentation이 부실합니다..(..)
○ 바인딩을 위한 middleware 만 제공
○ api 형태는 짬으로 헤쳐나가야 함.
■ webkit-gtk Creference 참조
■ 그런데 dom쪽은 reference조차 없음
● js dom api를 참조
구현할 것
● 특정 페이지를 열면 특정 메소드 수행
○ 로그인 페이지 열면
■ 인증정보 넣고 확인버튼 찾아서 click
○ 극장선택 페이지 열면
■ 원하는 극장/상영관 찾아서 click
○ 결재 페이지 열면
■ 카드 번호와 개인정보 입력후 확인버튼 찾아서
click
● 골든박스 찾아보기
○ 가운데 자리와의 거리를 얻어온 다음, 정렬해서 첫번
째 자리를 얻어옴
개발하기 위해 필요한 것
● 특정 페이지 열기
○ load_uri() 메소드 제공
● 웹 브라우져의 이벤트
○ load-status 라는 property 제공
● DOM
○ get_dom_document() 메소드 제공
○ DOM api는 c reference 문서조차 없음.
■ 쉘에서 하나하나 찾아봐야;;
■ CamelCase vs under_scores
● 특정 js 코드 실행하기
○ execute_script() 메소드 제공
명당자리 찾기
● 앉고싶은 지점을 정한 후 가까운 자리를 찾으
면 됨.
결전의 시간!
망했어요(2)
러시아에선 외양간이 소를 고칩니다.
● 정해진 시간에 페이지 처리를 못하면 reload
추가
덤으로 몇 가지 최적화
● dns prefetch
○ hostname이 하나밖에 안쓰여서, 그렇게 큰 효과는 없
음.
● 이미지 로딩하지 않기
● 그외 설정할 수 있는 여러가지 값
세번째 전쟁
버.. 버틸 수가 없다.
한층 더 열악해진 상황
● 단 하루, 달랑 2회 상영
○ 수요에 비해 공급이 너무 적음
● 덕들 중에 나처럼 생각하는 사람이 있을텐
데...
● 메가박스 페이지는 처리하기 귀찮..
○ cgv는 한땀한땀 div id로 잘 감싸져있는데..
○ megabox는 ...
어쨌든 대충 완성했는데...
망했어요(3)
러시아에선 외양간이 소를 고칩니다.(2)
● alert창 무시하기 추가
● 이대로 포기해야 하나...
취소표를 노리자!!!
● 예매 후 여러가지 이유로 취소를 합니다.
○ 시간이 안맞다던가...
○ 자리 양도라던가...
● 주기적으로 빈자리 확인 후 자동예매 하도록
긴급 수정
7시간 후...
그 외 여러 응용 방법?
● iPhone 도입 후 웹 어플리케이션(특히 모바일
용)으로 할 수 있는 것이 점점 늘어나고 있음
○ 디아블로 한정판 온라인 구매
○ 구글 IO 참가 신청
얼렁뚱땅 결론
● 한번에 잘되는거 없다.
○ 테스트. 테스트. 그리고 또 테스트
● 기술적 접근도 중요하지만, 도메인 지식 또한
상당히 중요하다.
● 프로그래머의 가치를 올려주는 것은 자동화.
http://github.com/ganadist/cgv_reservation
Implementation

More Related Content

PDF
깃헙 페이지로 호스팅 하기 사전 자료
PDF
웹 본격적으로 배우기 전 감 잡기 - 1
PPTX
버스도착알람시스템 구현하기 - IoT 기기
PDF
1.c term project report
PDF
Prettier 소개
PPTX
SiegeMode! C++ Advanced Project Ver
PPTX
MFC 발견 (1)
PPTX
MFC 발견 (2)
깃헙 페이지로 호스팅 하기 사전 자료
웹 본격적으로 배우기 전 감 잡기 - 1
버스도착알람시스템 구현하기 - IoT 기기
1.c term project report
Prettier 소개
SiegeMode! C++ Advanced Project Ver
MFC 발견 (1)
MFC 발견 (2)

What's hot (10)

PDF
M5 6 1
PDF
NDC14 - 사례로 배우는 디스어셈블리 디버깅
PPTX
개발자의 컴퓨터
PDF
EMOCON 2015 - Jspm & systemjs
PPTX
C++과 Lua script연동
PDF
클래스의 기초 지식
PPTX
Boss2D 설치과정
PDF
Bs camp
PDF
Geveloper 160816
PDF
WebGL 20150428
M5 6 1
NDC14 - 사례로 배우는 디스어셈블리 디버깅
개발자의 컴퓨터
EMOCON 2015 - Jspm & systemjs
C++과 Lua script연동
클래스의 기초 지식
Boss2D 설치과정
Bs camp
Geveloper 160816
WebGL 20150428
Ad

Similar to 웹표준과 자동화의 약속된 승리 (20)

PDF
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
PDF
PyCon Korea 2017 - 케이블 영화 채널 편성표 수집 - MovieScheduler
PPTX
Nodejs, PhantomJS, casperJs, YSlow, expressjs
PDF
Vuejs를이용한서비스구축
PDF
Modern PHP
PPTX
Django로 배우는 쉽고 빠른 웹개발 study 자료
PPTX
부동산 텔레그램봇 사내공유 @Tech
PDF
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
PPTX
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
PDF
NAVER의 웹/HTML5환경 대응 현황
PPTX
7. html5 api
PDF
HTTP 완벽 가이드 9~10장
PDF
장고로 웹서비스 만들기 기초
PDF
Django in Production
PDF
스타트업 인턴 개발자 3달간의 고군분투기 김은향
PDF
KPW2012::LT::spot
PPTX
업무자동화를 위한 파이썬
PPTX
Quic을 이용한 네트워크 성능 개선
PDF
화성에서 온 개발자, 금성에서 온 기획자
PDF
스마일게이트 서버개발캠프 - 5vengers
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
PyCon Korea 2017 - 케이블 영화 채널 편성표 수집 - MovieScheduler
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Vuejs를이용한서비스구축
Modern PHP
Django로 배우는 쉽고 빠른 웹개발 study 자료
부동산 텔레그램봇 사내공유 @Tech
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
NAVER의 웹/HTML5환경 대응 현황
7. html5 api
HTTP 완벽 가이드 9~10장
장고로 웹서비스 만들기 기초
Django in Production
스타트업 인턴 개발자 3달간의 고군분투기 김은향
KPW2012::LT::spot
업무자동화를 위한 파이썬
Quic을 이용한 네트워크 성능 개선
화성에서 온 개발자, 금성에서 온 기획자
스마일게이트 서버개발캠프 - 5vengers
Ad

More from Young-Ho Cha (12)

PDF
마세라티의 비밀
PDF
More than nexus, better than nexus.
PDF
7급 공무원도 쉽게 따라하는 쉘 스크립트
PDF
Cairo clock for android wear
PDF
GITHUB와 함께 Social하게 코딩하기
PDF
코드 리뷰 시스템 소개
PDF
7급 공무원도 쉽게 따라하는 프로파일링 도구 만들기
PDF
자막을 뿌리려면 해야 할 여러가지 삽질모음
PDF
Browser history and overview
PPTX
Introduce native client
PPTX
Introduce gobject introspection
ODP
페챠쿠챠
마세라티의 비밀
More than nexus, better than nexus.
7급 공무원도 쉽게 따라하는 쉘 스크립트
Cairo clock for android wear
GITHUB와 함께 Social하게 코딩하기
코드 리뷰 시스템 소개
7급 공무원도 쉽게 따라하는 프로파일링 도구 만들기
자막을 뿌리려면 해야 할 여러가지 삽질모음
Browser history and overview
Introduce native client
Introduce gobject introspection
페챠쿠챠

웹표준과 자동화의 약속된 승리