Your SlideShare is downloading. ×
0
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Python在豆瓣的应用
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Python在豆瓣的应用

14,297

Published on

@ PyCon China 2011

@ PyCon China 2011

Published in: Technology
1 Comment
112 Likes
Statistics
Notes
  • 很好
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
14,297
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
665
Comments
1
Likes
112
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. Python 应 2011.12
    • 2. About Me• / hongqn• 2002 Python• 2004 Python• 2006 现 构师• http://www.douban.com/ people/hongqn/
    • 3. Python and Douban
    • 4. Python in Douban
    • 5. 协 发环
    • 6. 协 发环+
    • 7. 协 发环+ +
    • 8. 协 发环 Face to Face ++ +
    • 9. 术团队 动 发 术 产 发QA
    • 10. 动 发 术 产 发QA
    • 11. Mako
    • 12. Mako• A very fast template engine
    • 13. Mako• A very fast template engine• Mako IS Python
    • 14. 态 处static(): 动处 态 URL <link href="${static(/css/douban.css)}" rel="stylesheet" type="text/css">
    • 15. 态 处static(): 动处 态 URL <link href="${static(/css/douban.css)}" rel="stylesheet" type="text/css"> 发环 http://dev.douban.com/css/douban.css
    • 16. 态 处static(): 动处 态 URL <link href="${static(/css/douban.css)}" rel="stylesheet" type="text/css"> 发环 http://dev.douban.com/css/douban.css线 环 http://img3.douban.com/css/packed_douban9922754105.css
    • 17. 联...html code....<script>${istatic(/js/sns/tribe/manage_members.js)|n}</script>
    • 18. 预编译@import
    • 19. 预编译@import pyScss
    • 20. 动 发 术 产 发QA
    • 21. APNS Agent
    • 22. APNS Agent• 应 Apple Push Notification Service (APNS) 讯
    • 23. APNS Agent• 应 Apple Push Notification Service (APNS) 讯• gevent
    • 24. APNS Agent• 应 Apple Push Notification Service (APNS) 讯• gevent• bottle
    • 25. APNS Agent• 应 Apple Push Notification Service (APNS) 讯• gevent• bottle• APNSWrapper
    • 26. 动 发 术 产 发QA
    • 27. Quixote
    • 28. Quixote• Pretty old (we are using version 1.2)
    • 29. Quixote• Pretty old (we are using version 1.2)• Simple
    • 30. Quixote• Pretty old (we are using version 1.2)• Simple• Fast
    • 31. Quixote• Pretty old (we are using version 1.2)• Simple• Fast• Stable
    • 32. Quixote• Pretty old (we are using version 1.2)• Simple• Fast• Stable• Traversal based
    • 33. Traversalhttp://www.douban.com/group/python/members
    • 34. Traversalhttp://www.douban.com/group/python/members /
    • 35. Traversalhttp://www.douban.com/group/python/members / import luz.group group
    • 36. Traversalhttp://www.douban.com/group/python/members / import luz.group group _q_lookup(request, python) python
    • 37. Traversalhttp://www.douban.com/group/python/members / import luz.group group _q_lookup(request, python) python .members(request) members
    • 38. Traversalhttp://www.douban.com/group/python/members / import luz.group group _q_lookup(request, python) python ._q_access(request) .members(request) members
    • 39. Traversalhttp://www.douban.com/group/python/members / import luz.group group raise DeletedGroupError _q_lookup(request, python)
    • 40. Traversalhttp://www.douban.com/group/python/members / import luz.group group raise DeletedGroupError _q_lookup(request, python) _q_exception_handler(request, e)
    • 41. Traversalhttp://www.douban.com/group/python/members / import luz.group group raise DeletedGroupError _q_lookup(request, python) _q_exception_handler(request, e) route based url dispatch 录级 进
    • 42. Decorators@need_post@require_login@check_switch(annotation)@check_permission(admin)@jsonizedef preview(self, request):
    • 43. Generators
    • 44. Generatorsfeed feed feed
    • 45. Generatorsfeed feed feed iterator iterator iterator
    • 46. Generatorsfeed feed feed iterator iterator iterator imerge iterator
    • 47. Generatorsfeed feed feed iterator iterator iterator imerge iterator pager list
    • 48. Meta Programmingclass MetaPage(object): __metaclass__ = MetaObserverclass Vote(Commentable, MetaPage): kind = K_VOTE kind_name = voteassert MetaObserver.get_class_by_name(vote) is Vote
    • 49. OneRing • Build Desktop Application Using Web Technology • HTML5 + CSS + JS • WebKit + Qt + Python
    • 50. 动 发 术 产 发QA
    • 51. Restful MongoDB Service• 给 业 储• django-piston• sleepy
    • 52. 动 发 术 产 发QA
    • 53. pylint • 码 态检查 • SQL inject 检查 • XSS 检查
    • 54. onimaru • 错误 统 • Based on django-sentry
    • 55. release manager • 动 tag • 认测试结 •发 线报 • django powered
    • 56. 动 发 术 产 发QA
    • 57. cmy - MySQL Client• MySQL 户 Python/C API编• select 语•• 访问时 python对• 时 MySQLdb
    • 58. C++ Intergration • cos_sim load_data.pydef load(): for user, subject, rating in CmyResult( "select user_id, subject_id, rating from user_interest"): cos_sim_io.add_edge(user, subject, rating) Python 载 C++计
    • 59. 动 发 术 产 发QA
    • 60. Online Profiler 12164 function calls (12109 primitive calls) in 0.250 CPU secondsOrdered by: internal time, call countList reduced from 274 to 60 due to restriction <60>ncalls tottime percall cumtime percall filename:lineno(function) 1000 0.098 0.000 0.098 0.000 cmemcached.py:22(restore) 61 0.064 0.001 0.070 0.001 cmemcached.py:64(get) 14 0.026 0.002 0.121 0.009 cmemcached.py:68(get_multi) 908 0.010 0.000 0.017 0.000 decorator.py:22(gen_key) 908 0.005 0.000 0.033 0.000 decorator.py:39(_) 67 0.004 0.000 0.199 0.003 debug.py:26(_) 898 0.004 0.000 0.004 0.000 format.py:57(_) 953 0.003 0.000 0.095 0.000 cmemcached.py:70(<genexpr>) 1 0.003 0.003 0.149 0.149 __init__.py:1866(get_loc_period_events) 908 0.002 0.000 0.007 0.000 format.py:10(format) 2 0.002 0.001 0.143 0.071 __init__.py:346(gets) 963 0.002 0.000 0.075 0.000 wrapper.py:138(get) 67 0.001 0.000 0.001 0.000 debug.py:36(format_call) 878 0.001 0.000 0.001 0.000 __init__.py:1240(is_published) 8 0.001 0.000 0.128 0.016 wrapper.py:146(get_multi) 233 0.001 0.000 0.001 0.000 cgi.py:1031(escape)
    • 61. DoubanService• thrift RPC 务• PasteScript实现 码 务• https://github.com/twitter/thrift_client Python 负载 failover• nagios munin 监
    • 62. Dpark• 计• Modeled after Spark, but using Python• mesos实现资 调 dpark = DparkContext() rdd = dpark.textFile(filepath) def filter(line): return pattern in line for line in rdd.filter(filter).collect(): sys.stdout.write(line)
    • 63. pypcap + dpkt • Warm up MySQL slaves • Analyze MySQL issue with real- time queries
    • 64. DAE• Modeled after Google AppEngine, but for internal use only• virtualenv to manage dependencies• gunicorn + gevent• Best practice built-in• Developing...
    • 65. 编 语 in
    • 66. 编 语 in
    • 67. 编 语 in
    • 68. 编 语 in
    • 69. 编 语 in
    • 70. 编 语 in
    • 71. 编 语 in
    • 72. 编 语 in
    • 73. Q &A
    • 74. Thanks

    ×