Hoodpub


Startup with Django
최현민




2006-2007 eWastecenter
2008-2011 Posco ICT
2011-2012 WindRiver
2012-현재 !무직!



python 을 통해 새롭게 웹을 경험하
는 장고 초보
HoodPub



www.hoodpub.com

2012.08 출생
'같은 책을 읽은 다른 사람들과 어울
릴 때, 책읽기의 기쁨은 두 배가 된
다.'


책에 대한 관심사를 바탕으로 사람을 이어주는
작은 SNS.
순서

 # 아이디어

 # 사업성

 # 기술

 # 문제/개선요소

 # 소감
아이디어
아이디어
표현수단

  즐겨 먹는 음식
                          내가 읽은 책 역시 나를 표현하는 막강한 수
  입고 다니는 옷
                          단이 될 수 있다.
  언어 습관




책 관심

  같은 책을 읽은 친구들을 찾아주자는 간단한 생각에서 발단
사업성

 - 비지니스 모델 : 네 가지


 - 경쟁상대 : 국내 / 국외


 - 홍보 : facebook, 유명인사
기술
     - 개발
       - 환경 ( 개발/운용)
       - virtual env 사용
       - 소스관리, bitbucket
       - 배포, fabfile
       - 편집기, emacs

     - Django
       - 장고의 장점 (패키지, template tags)
       - Package ( sorl.thumbnail, endless_pagination, djcelery, django_facebook )
       - cron 이용하여 간단한 리포팅 결과 얻기
       - register.inclusion_tag

     - 외부 API
       - facebook,
       - interpark
환경
                 개발                    운용
     노트북                    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)가 필요했음.

                            # 위 업체는 직통연락처가 없어
                            서 장애시 문제가 되나, 크게
                            저렴하다는게 매력
소스관리

               소스 형상 관리툴 : 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 버젼 테스트에 유리
               - 패키지 관리 편리
개발

                 편집기




                 ; 개발화경에서 장고 실행기

     Runserver   - 표준 출력으로 실시간 로그 확인 가능

                 - 소스 수정후 파일 저장을 하면 바로 적용가능




                 ; python 의 gdb
       pdb       - 굉장히 유용함.
패키지
                                  ; 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.
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
Book data

 다른 사이트의 OPEN API를 찾아
봤지만, 그 중에 인터파크가 가장 깔
끔하게 데이타를 내려줌.




 yes24, 교보는 OPEN API를 찾을수
없었고, 국내 포탈 사이트는 항상 자
기 서비스를 거쳐가게 하려는 의도가
있어 만족할 수 없었음.                # 인터파크 책 API ( link)

                            - 책검색 API

                            - 베스트셀러 API

                            - 추천도서 API

                            - 신간도서 API
인터파크 책 목록

책검색 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)
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>
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
기타
# logging

# heroku

# google analytics

# email server setting ?
문제/개선요소


 디자인     아름답지 못하다.
         투박하다
                                예쁜 디자이너와 함께 작업해야함.




                                고민 필요
 App 화   모바일 환경에 최적화 X          (서비스 특성상 특별한 모바일 하드웨어
                                불필요)




         가상서버 Intel(R) Xeon
                                투자를 받고 싶어요.
 서버 환경   (R) CPU E5504 @ 2.00
         GHz
소감
 안도감   기술적으로 두려움이 컸으나, 방대한 장고 커뮤니티를 보고 나니 안심




 맷집    단기간에 결과를 보기는 쉽지 않다.
       정신적, 경제적, 사회적으로 딴딴한 맷집이 필요




 사람    기술, 돈, 능력 그 무엇보다도 사람이 우선




 기타    최대한 빨리 피드백을 듣고 반복 수정하자.
       구글 프리젠테이션 'Research' 기능의 편리함.
계획
# 지도 매핑 서비스

# 공공 데이타 활용 ( 링크)

# 토스트 마스터 국내 클럽 위치 출력

# 취업
질문과 응답

Hoodpub 기술 발표

  • 1.
  • 2.
    최현민 2006-2007 eWastecenter 2008-2011 PoscoICT 2011-2012 WindRiver 2012-현재 !무직! python 을 통해 새롭게 웹을 경험하 는 장고 초보
  • 3.
    HoodPub www.hoodpub.com 2012.08 출생 '같은 책을읽은 다른 사람들과 어울 릴 때, 책읽기의 기쁨은 두 배가 된 다.' 책에 대한 관심사를 바탕으로 사람을 이어주는 작은 SNS.
  • 4.
    순서 # 아이디어 # 사업성 # 기술 # 문제/개선요소 # 소감
  • 5.
  • 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 installdjango_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
  • 18.
    기타 # logging # heroku #google analytics # email server setting ?
  • 19.
    문제/개선요소 디자인 아름답지 못하다. 투박하다 예쁜 디자이너와 함께 작업해야함. 고민 필요 App 화 모바일 환경에 최적화 X (서비스 특성상 특별한 모바일 하드웨어 불필요) 가상서버 Intel(R) Xeon 투자를 받고 싶어요. 서버 환경 (R) CPU E5504 @ 2.00 GHz
  • 20.
    소감 안도감 기술적으로 두려움이 컸으나, 방대한 장고 커뮤니티를 보고 나니 안심 맷집 단기간에 결과를 보기는 쉽지 않다. 정신적, 경제적, 사회적으로 딴딴한 맷집이 필요 사람 기술, 돈, 능력 그 무엇보다도 사람이 우선 기타 최대한 빨리 피드백을 듣고 반복 수정하자. 구글 프리젠테이션 'Research' 기능의 편리함.
  • 21.
    계획 # 지도 매핑서비스 # 공공 데이타 활용 ( 링크) # 토스트 마스터 국내 클럽 위치 출력 # 취업
  • 22.