6. 아이디어
표현수단
즐겨 먹는 음식
내가 읽은 책 역시 나를 표현하는 막강한 수
입고 다니는 옷
단이 될 수 있다.
언어 습관
책 관심
같은 책을 읽은 친구들을 찾아주자는 간단한 생각에서 발단
7. 사업성
- 비지니스 모델 : 네 가지
- 경쟁상대 : 국내 / 국외
- 홍보 : facebook, 유명인사
8. 기술
- 개발
- 환경 ( 개발/운용)
- virtual env 사용
- 소스관리, bitbucket
- 배포, fabfile
- 편집기, emacs
- Django
- 장고의 장점 (패키지, template tags)
- Package ( sorl.thumbnail, endless_pagination, djcelery, django_facebook )
- cron 이용하여 간단한 리포팅 결과 얻기
- register.inclusion_tag
- 외부 API
- facebook,
- interpark
9. 환경
개발 운용
노트북 VPS
Genuine Intel(R) CPU Intel(R) Xeon(R) CPU
U4100 @ 1.30GHz E5504 @ 2.00GHz
Local Server(just4fun.co.kr)
runserver Nginx
Gunicorn
Mysql
# Django를 호스팅하는 업체가
없어서 VPS(Virtual private
server)가 필요했음.
# 위 업체는 직통연락처가 없어
서 장애시 문제가 되나, 크게
저렴하다는게 매력
10. 소스관리
소스 형상 관리툴 : github 쓰다가 변경
* 항상 쓰는 명령어는 add, commit 그리고 push
; Fabric is a Python (2.5 or higher) library and command-
line tool for streamlining the use of SSH for application
deployment or systems administration tasks.
Fabric - 노가다에서 탈출하고 싶다면 반드시 사용(south급)
- 서로 다른 환경이라도 비교적 쉽게 customizing 가능
; python 환경을 OS 완 분리시켜줌.
Virtualenv - 서로다른 python 버젼 테스트에 유리
- 패키지 관리 편리
11. 개발
편집기
; 개발화경에서 장고 실행기
Runserver - 표준 출력으로 실시간 로그 확인 가능
- 소스 수정후 파일 저장을 하면 바로 적용가능
; python 의 gdb
pdb - 굉장히 유용함.
12. 패키지
; thumbnail 처리를 도와줌
Sorl-thumbnail
; Twitter-style or Digg-style pagination
endless_pagination
; Celery is an asynchronous task queue/job queue based
dcelery on distributed message passing.
django_facebook
; Django Facebook enables your users to easily register using the Facebook API.
13. django_facebook
$ pip install django_facebook
# settings.py
FACEBOOK_APP_ID
FACEBOOK_APP_SECRET
Features
- Access the Facebook API
- Store likes, friends and user data locally
- Facebook FQL access
- OAuth 2.0 compliant
- Automated reauthentication
- Includes Open Facebook
14. Book data
다른 사이트의 OPEN API를 찾아
봤지만, 그 중에 인터파크가 가장 깔
끔하게 데이타를 내려줌.
yes24, 교보는 OPEN API를 찾을수
없었고, 국내 포탈 사이트는 항상 자
기 서비스를 거쳐가게 하려는 의도가
있어 만족할 수 없었음. # 인터파크 책 API ( link)
- 책검색 API
- 베스트셀러 API
- 추천도서 API
- 신간도서 API
15. 인터파크 책 목록
책검색 API http://book.interpark.com/api/search.api?key=interpark&query=대한민국
(search.api)
베스트 셀러 API http://book.interpark.com/api/bestSeller.api?key=interpark&categoryId=100
(bestSeller.api)
추천도서API http://book.interpark.com/api/recommend.api?key=interpark&categoryId=100
(recommend.api)
신간도서API
http://book.interpark.com/api/newBook.api?key=interpark&categoryId=100
(newBook.api)
16. register.inclusion_tag
페이지의 일부 영역에 MTV 개념을 적용하여 재사용 가능
@register.inclusion_tag('hoodpub/list_inc_user_info.html')
def list_inc_user_info(user):
return {'user': user }
@register.inclusion_tag('hoodpub/list_inc_book.html',
takes_context = True )
def list_inc_book(context, user_id):
request = context['request']
books = _get_booklist(request, user_id, 4)
return {'books': books }
TEMPLATE(html)
<div class="index_row" style="min-height:70px;">
{% list_inc_user_info user %}
</div>
<div class="index_row ">
{% list_inc_book user.get_profile.facebook_id %}
</div>
17. cron
#원하는 시간에 정해진 작업을 시키자!
사용예
- 모니터링 결과메일로 받아보기 (일일 2회)
- 책 목록 받아오기 (매일)
- 킨들에 무료 신문 보내기 (매일)
$ crontab -l
00 02 * * * /bin/bash /home/hoodpub/web_project/web/lib/interpark/run_regularly.sh &>>
/tmp/run_regular.log
20,50 * * * * /home/hoodpub/.virt_env/web/bin/python
/home/hoodpub/web_project/web/lib/interpark/get_frequent_books.py &>> /tmp/run_regular.log
30 07,19 * * * /home/hoodpub/.virt_env/web/bin/python
/home/hoodpub/web_project/web/lib/get_status.py &>> /tmp/send_monitor.log
19. 문제/개선요소
디자인 아름답지 못하다.
투박하다
예쁜 디자이너와 함께 작업해야함.
고민 필요
App 화 모바일 환경에 최적화 X (서비스 특성상 특별한 모바일 하드웨어
불필요)
가상서버 Intel(R) Xeon
투자를 받고 싶어요.
서버 환경 (R) CPU E5504 @ 2.00
GHz
20. 소감
안도감 기술적으로 두려움이 컸으나, 방대한 장고 커뮤니티를 보고 나니 안심
맷집 단기간에 결과를 보기는 쉽지 않다.
정신적, 경제적, 사회적으로 딴딴한 맷집이 필요
사람 기술, 돈, 능력 그 무엇보다도 사람이 우선
기타 최대한 빨리 피드백을 듣고 반복 수정하자.
구글 프리젠테이션 'Research' 기능의 편리함.
21. 계획
# 지도 매핑 서비스
# 공공 데이타 활용 ( 링크)
# 토스트 마스터 국내 클럽 위치 출력
# 취업