QCon Beijing, TDD, Python, twitter, facebook, agile, js ...                                        #QCon
QCon Beijing• 4.23~4.25
QCon Beijinghttp://www.qconbeijing.com/agenda.html
QCon Beijing•    •    •    •   Facebook        Memcached    •   Twitter    ••            (Agile)    •                     ...
Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
OVERVIEW
OVERVIEW•••
OVERVIEW      python•••
OVERVIEW      python•       twitter••
OVERVIEW      python•       twitter•      facebook•
OVERVIEW•••
OVERVIEW•••
OVERVIEW      Oracle   Micros ft•••
OVERVIEW      Oracle   Micros ft•••
Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
AgileAgile and Scrum in China : Can it work?   4.24
Agile
What is Agile ?
What is Agile ?•   2001   2       17                          “               ”•                    ---•
.........17     ...
Agile Manifesto   •   Individuals and interactions over       processes and tools   •   Working software over       compre...
What is Agile ?•••
12 Principles of Agile•          ,•              ——                      ,•                      ,           ,•      ,•   ...
What is Scrum?••   backlog:•   sprint:                                              30               .                    ...
Some tips from Practices of an          Agile Developer••                1 4••••••••
...
...
Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
TwitterTwitter             4.24
Twitter          -   @nk
Twitter          -   @nk
Twitter                           -            @nk•      exp   single table => partition    table
Twitter                           -            @nk•      exp   single table => partition    table•
Twitter                           -            @nk•      exp   single table => partition    table••
Twitter
Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
Douglas Crockford   javascript   4.25
Crockford• Yahoo!    js                           Douglas Crockford• JavaScript The Good Parts         JavaScript• JavaScr...
Crockford                           Douglas Crockford• IE6• JavaScript• HTML5
CrockfordIE6
Crockford- IE6
Crockford- IE6
CrockfordIE6 ...   2010      3   1   IE6          IE6              IE6
CrockfordIE6 ...          OVER          70% !!!
Crockford- IE6
Crockford- IE6 again
Crockford- JavaScript
Crockford- JavaScript        Macros        Threads        Tail Calls
Crockford- JavaScript
Crockford- JavaScript
Crockford- JavaScript
CrockfordHTML5
CrockfordHTML5        HTML5 ~= HTML +CSS + JSAPI
CrockfordHTML5HTML    •   Semantics (New tags, Link Relations, Microdata)    •   Web Forms 2.0 (Input Fields)    •   Multi...
CrockfordHTML5        • TypographyCSS     • Visuals        • Transitions, transforms and          animations
CrockfordHTML5        • Client Side Storage (Web SQL Database, App            Cache, Web Storage)JSAPI   •   Communication...
CrockfordHTML5          HTML5
Crockford- HTML5
Crockford- HTML5
Crockford- HTML5
Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
PythonPython web2.0   4.23
Python twitter: @hongqn• Python•       Python
Pythonic
Pythonic
Pythonic
Serverpython -m SimpleHTTPServer
web          web.py      http://webpy.org/
web      http://flask.pocoo.org/           jinja
web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks
web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks     the an...
web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks        Tem...
web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks        Tem...
web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks        Tem...
web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks        Tem...
web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks        Tem...
web  • Other frameworks: Quixote, django,leazy ...  • http://bitworking.org/news/    Why_so_many_Python_web_frameworks    ...
doctest - testmod
doctest - testmod
doctest - testfile  file name : example
doctest - unittest        As your collection of doctest’ed modules         grows, you’ll want a way to run all their      ...
doctest - unittest     utest1.py       utest2.py
doctest - unittest
doctest - unittest
doctest - unittest                     >>> python utest_driver.py                     ..                     -------------...
nose       easy_install noseextends unittest to make testing easier.   http://somethingaboutorange.com/mrl/projects/nose/
nose       easy_install noseextends unittest to make testing easier.      http://somethingaboutorange.com/mrl/projects/nos...
nose       easy_install noseextends unittest to make testing easier.   http://somethingaboutorange.com/mrl/projects/nose/W...
nose       easy_install noseextends unittest to make testing easier.   http://somethingaboutorange.com/mrl/projects/nose/W...
nose       easy_install noseextends unittest to make testing easier.   http://somethingaboutorange.com/mrl/projects/nose/W...
numpy        >>> numpy.arange(0, 10, 1)        array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])        >>> numpy.linspace(0, 10, 10) ...
ipythoniPython       http://ipython.scipy.org/doc/stable/html/      bash$ ipython      Python 2.5 (r25:51918, Sep 19 2006,...
virtualenvvirtualenv                                           python        $ virtualenv --no-site-packages vetest       ...
C                       (1)Cython            easy_install cython                                    pythondef say_hello(na...
C                       (2)Cython            easy_install cython                                        setup.pydef say_he...
C            (3)Cython     easy_install cython   $ python setup.py build_ext --inplace   $ ls   build cython_test.c cython...
svn
svn svnconfig.py.sample   cp   config.py
svn      config.py      project_path = “/home/project/xx”      try:         from local_config import *      except ImportErr...
decorator -              email
decorator -decorator            async_func.py
decorator -decorator            async_func.py
decorator -decorator            async_func.py
decorator - cached
decorator - cacheddecorator
decorator - cached
decorator - cached             import inspect
decorator - cached             import inspect                         get params dict
decorator - cached             import inspect                         get params dict              get from mmecache / db
decorator - cacheddecorator              “uinfo_{uid}”            python2.6            “uinfo_{uid}”.format(uid=2)
/•       :Vim / Emacs / Ulipad•          : subversion /mercurial / git• wiki/          /        :Trac•          : Bitten
Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
••• IE6 MUST DIE• HTML5? web• python           TDD•      decorator
More ...• Visit : http://www.qconbeijing.com/
END  follow me on twitter: @vonbo         on           : @vonbo
Upcoming SlideShare
Loading in...5
×

Qcon beijing 2010

726

Published on

Slide I made last year after attended the Qcon Beijing 2010.
Wish you like it.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
726
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Qcon beijing 2010

  1. 1. QCon Beijing, TDD, Python, twitter, facebook, agile, js ... #QCon
  2. 2. QCon Beijing• 4.23~4.25
  3. 3. QCon Beijinghttp://www.qconbeijing.com/agenda.html
  4. 4. QCon Beijing• • • • Facebook Memcached • Twitter •• (Agile) • TDD • Agile and Scrum in China •• • Python • F# Scala Erlang Rebol • JavaScript
  5. 5. Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
  6. 6. OVERVIEW
  7. 7. OVERVIEW•••
  8. 8. OVERVIEW python•••
  9. 9. OVERVIEW python• twitter••
  10. 10. OVERVIEW python• twitter• facebook•
  11. 11. OVERVIEW•••
  12. 12. OVERVIEW•••
  13. 13. OVERVIEW Oracle Micros ft•••
  14. 14. OVERVIEW Oracle Micros ft•••
  15. 15. Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
  16. 16. AgileAgile and Scrum in China : Can it work? 4.24
  17. 17. Agile
  18. 18. What is Agile ?
  19. 19. What is Agile ?• 2001 2 17 “ ”• ---•
  20. 20. .........17 ...
  21. 21. Agile Manifesto • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan
  22. 22. What is Agile ?•••
  23. 23. 12 Principles of Agile• ,• —— ,• , ,• ,• , ,• ,•••• ,•• ,
  24. 24. What is Scrum?•• backlog:• sprint: 30 . backlog,• sprint backlog: sprint• scrumMaster: Scrum• time-box: daily scrum meeting time-box 15• sprint planning meeting: sprint 8 Owner backlog , sprint Product Backlog• Daily Scrum meeting 15 ScrumMaster• Sprint review meeting Sprint Team Sprint Product Owner• Sprint retrospective meeting Sprint
  25. 25. Some tips from Practices of an Agile Developer•• 1 4••••••••
  26. 26. ...
  27. 27. ...
  28. 28. Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
  29. 29. TwitterTwitter 4.24
  30. 30. Twitter - @nk
  31. 31. Twitter - @nk
  32. 32. Twitter - @nk• exp single table => partition table
  33. 33. Twitter - @nk• exp single table => partition table•
  34. 34. Twitter - @nk• exp single table => partition table••
  35. 35. Twitter
  36. 36. Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
  37. 37. Douglas Crockford javascript 4.25
  38. 38. Crockford• Yahoo! js Douglas Crockford• JavaScript The Good Parts JavaScript• JavaScript Brendan Eich “lambda JavaScript ”• json
  39. 39. Crockford Douglas Crockford• IE6• JavaScript• HTML5
  40. 40. CrockfordIE6
  41. 41. Crockford- IE6
  42. 42. Crockford- IE6
  43. 43. CrockfordIE6 ... 2010 3 1 IE6 IE6 IE6
  44. 44. CrockfordIE6 ... OVER 70% !!!
  45. 45. Crockford- IE6
  46. 46. Crockford- IE6 again
  47. 47. Crockford- JavaScript
  48. 48. Crockford- JavaScript Macros Threads Tail Calls
  49. 49. Crockford- JavaScript
  50. 50. Crockford- JavaScript
  51. 51. Crockford- JavaScript
  52. 52. CrockfordHTML5
  53. 53. CrockfordHTML5 HTML5 ~= HTML +CSS + JSAPI
  54. 54. CrockfordHTML5HTML • Semantics (New tags, Link Relations, Microdata) • Web Forms 2.0 (Input Fields) • Multimedia (Audio Tag,Video Tag) • 2D and 3D drawing (Canvas, WebGL, SVG)
  55. 55. CrockfordHTML5 • TypographyCSS • Visuals • Transitions, transforms and animations
  56. 56. CrockfordHTML5 • Client Side Storage (Web SQL Database, App Cache, Web Storage)JSAPI • Communication (Web Sockets) • Desktop experience (Notifications, Drag and Drop API) • Geolocation
  57. 57. CrockfordHTML5 HTML5
  58. 58. Crockford- HTML5
  59. 59. Crockford- HTML5
  60. 60. Crockford- HTML5
  61. 61. Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
  62. 62. PythonPython web2.0 4.23
  63. 63. Python twitter: @hongqn• Python• Python
  64. 64. Pythonic
  65. 65. Pythonic
  66. 66. Pythonic
  67. 67. Serverpython -m SimpleHTTPServer
  68. 68. web web.py http://webpy.org/
  69. 69. web http://flask.pocoo.org/ jinja
  70. 70. web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks
  71. 71. web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks the answer is often that it is way too easy to put together one in Python. That certainly seems plausible since there are so many libraries that implement the components of a web framework and if its easy to plug those pieces together then maybe that lowers the bar of entry for new frameworks.
  72. 72. web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks Templating : kid
  73. 73. web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks Templating : kid SQL : SQLAlchemy
  74. 74. web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks Templating : kid SQL : SQLAlchemy Routing : Selector
  75. 75. web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks Templating : kid SQL : SQLAlchemy Routing : Selector WSGI
  76. 76. web• Other frameworks: Quixote, django,leazy ...• http://bitworking.org/news/ Why_so_many_Python_web_frameworks Templating : kid SQL : SQLAlchemy Robaccia (3 hours, 60 Routing : Selector lines) WSGI
  77. 77. web • Other frameworks: Quixote, django,leazy ... • http://bitworking.org/news/ Why_so_many_Python_web_frameworks Templating :jinja2SQL :dbop.py + model.py LeazyRouting :dispatcher.py + url.py WSGI
  78. 78. doctest - testmod
  79. 79. doctest - testmod
  80. 80. doctest - testfile file name : example
  81. 81. doctest - unittest As your collection of doctest’ed modules grows, you’ll want a way to run all their doctests systematically.
  82. 82. doctest - unittest utest1.py utest2.py
  83. 83. doctest - unittest
  84. 84. doctest - unittest
  85. 85. doctest - unittest >>> python utest_driver.py .. --------------------------------------------- Ran 2 tests in 0.043s OK
  86. 86. nose easy_install noseextends unittest to make testing easier. http://somethingaboutorange.com/mrl/projects/nose/
  87. 87. nose easy_install noseextends unittest to make testing easier. http://somethingaboutorange.com/mrl/projects/nose/ utest1.py utest2.py nosetests bash-3.2$ nosetests --with-doctest .. ------------------------------------ Ran 2 tests in 0.038s OK bash-3.2$
  88. 88. nose easy_install noseextends unittest to make testing easier. http://somethingaboutorange.com/mrl/projects/nose/Write your nose test file:nose_test_case.py
  89. 89. nose easy_install noseextends unittest to make testing easier. http://somethingaboutorange.com/mrl/projects/nose/Write your nose test file: base$ nosetests nose_test_case.py . ---------------------------------------- Ran 1 test in 0.001s OKnose_test_case.py base$
  90. 90. nose easy_install noseextends unittest to make testing easier. http://somethingaboutorange.com/mrl/projects/nose/Write your nose test file: base$ nosetests nose_test_case.py . ---------------------------------------- Ran 1 test in 0.001s OKnose_test_case.py base$ Any function or class that matches the configured testMatch regular expression ((?:^|[b_.-])[Tt]est)
  91. 91. numpy >>> numpy.arange(0, 10, 1) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> numpy.linspace(0, 10, 10) # 0~10, 10 numbers >>> numpy.logspace(0, 2, 10) #1~100,10 numbers >>> a = numpy.arange(4).reshape(2,2) >>> a array([[0, 1], [2, 3]]) >>> numpy.dot(a, a.T) array([[ 1, 3], [ 3, 13]])
  92. 92. ipythoniPython http://ipython.scipy.org/doc/stable/html/ bash$ ipython Python 2.5 (r25:51918, Sep 19 2006, 08:49:13) Type "copyright", "credits" or "license" for more information. IPython 0.10 -- An enhanced Interactive Python. ? -> Introduction and overview of IPythons features. %quickref -> Quick reference. help -> Pythons own help system. object? -> Details about object. ?object also works, ?? prints more. In [1]: ls Flask-0.3.1/ memcached-1.4.5/ objc-json/ web.py-0.34/ einstall.py* numpy/ scipy/ In [2]: print "hello world" hello world
  93. 93. virtualenvvirtualenv python $ virtualenv --no-site-packages vetest $ cd vetest $ source bin/activate (vetest)fbmac:vetest fengbo$ ls bin include lib (vetest)fbmac:vetest fengbo$ python >>> import BeautifulSoup Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named BeautifulSoup >>> exit() $ sudo easy_install BeautifulSoup $ python >>> import BeautifulSoup >>>
  94. 94. C (1)Cython easy_install cython pythondef say_hello(name): Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) print "hello, %s" % name [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.cython_test.pyx >>> import pyximport >>> pyximport.install() >>> import cython_test >>> cython_test.say_hello("world") hello, world >>> exit()
  95. 95. C (2)Cython easy_install cython setup.pydef say_hello(name): from distutils.core import setup print "hello, %s" % name from distutils.extension import Extension from Cython.Distutils import build_extcython_test.pyx ext_modules = [Extension("hello", ["cython_test.pyx"])] setup( name = Hello world app, cmdclass = {build_ext: build_ext}, compile to .so file ext_modules = ext_modules )
  96. 96. C (3)Cython easy_install cython $ python setup.py build_ext --inplace $ ls build cython_test.c cython_test.pyx hello.so setup.py $ python >>> import hello >>> hello.say_hello(“world”) >>> hello, world
  97. 97. svn
  98. 98. svn svnconfig.py.sample cp config.py
  99. 99. svn config.py project_path = “/home/project/xx” try: from local_config import * except ImportError, ex: pass local_config.py project_path = “/home/user/aaa/project/xx”
  100. 100. decorator - email
  101. 101. decorator -decorator async_func.py
  102. 102. decorator -decorator async_func.py
  103. 103. decorator -decorator async_func.py
  104. 104. decorator - cached
  105. 105. decorator - cacheddecorator
  106. 106. decorator - cached
  107. 107. decorator - cached import inspect
  108. 108. decorator - cached import inspect get params dict
  109. 109. decorator - cached import inspect get params dict get from mmecache / db
  110. 110. decorator - cacheddecorator “uinfo_{uid}” python2.6 “uinfo_{uid}”.format(uid=2)
  111. 111. /• :Vim / Emacs / Ulipad• : subversion /mercurial / git• wiki/ / :Trac• : Bitten
  112. 112. Agenda• Overview• Agile• Twitter• Douglas Crockford• Python
  113. 113. ••• IE6 MUST DIE• HTML5? web• python TDD• decorator
  114. 114. More ...• Visit : http://www.qconbeijing.com/
  115. 115. END follow me on twitter: @vonbo on : @vonbo
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×