BeijingOpenParty2010年05月"柳燕隙阳"活动总结

发布于六月 2, 2010 十一月 5, 2010 http://www.beijing-open-party.org/?p=674 wp_1 cleverpig 4

隋冉:OpenParty伴我成长

从第一次跟朋友参加“秋色连波”活动到现在,我每期OpenParty都会到TW的办公室,和大家一起开启分享知识的时光。 12月份在“岩上”活动中带来了我分享的有关网络教育的话题,并且写了个不怎么好听的拉票歌弹着吉他拉票。当时的话题现在看起来还是非常不成熟,但是虽然漏洞百出,仍能看到当时的梦想和激情。是的,很多朋友在问我,创业的事情怎么样了。我回答,在积累,从来没有放弃过。当我冷静下来思考的时候,发现正像很多前辈所说,创业是一个漫长的历程,需要厚积薄发;梦想是内心的一颗稚嫩的小种子,在没有长成参天大树的时候,需要用心去呵护,等待她发芽、壮大、开花、结果、枝干参天,用心,等时间的花朵绽放。 OpenParty的活动在一期期继续,话题越来越多、越来越精彩。除了每次都能感到演讲者的专业与思想深邃、认识越来越多的朋友,让我感到更多的是OpenParty开放、学习、交流的精神,和我自己的逐渐成熟与成长。我会继续坚持每次都去参加OpenParty活动,这是对自己的一种鞭策,看看自己每个月的进步与不足、相会老朋友认识新朋友、鼓励自己继续朝着梦想的方向前进! 每个人都有梦想,只是更多的时候被匆忙的脚步声掩盖,我们没有认真倾听她来自心灵的声音。 每个人都是自己人生的产品经理,我们用尽心力去给我们爱的人和最爱我们的人最好的用户体验。 每个人的心灵都闪耀着独特的光芒。

CNBorn:OpenParty"柳燕隙阳"

"柳燕隙阳"活动再度发挥去年小"QCon"的传统,请来了豆瓣的洪强宁大侠为大家讲解 Python于Web 2.0网站的应用 这个Python布道型话题。 同时依旧云集了诸如:
  • 开源软件定制开发中的软件工程
  • 持续集成最后一公里
  • Go语言介绍
  • 多乐趣介绍
  • 另一种旅行的可能----寻找失落的螺丝钉
等等诸多精彩话题。 简要记述下自己参与的两个话题:
  • Python在Web2.0网站的应用
  • 另一种旅行的可能----寻找失落的螺丝钉

Python 在Web 2.0网站的应用

洪大侠有些遗憾在QCon上面由于时间的限制没能将后面Python实际应用部分的例子讲解透彻。所以这次略微简化了些前面的介绍部分,直接引入那些讲述了Python语言最优秀部分的特性是如何在实战中得到应用的。不过需要注意的是,如果是对于这些特性没有简单了解的Python初学者,欣赏这部分的乐趣依然存在但是可能会降低。而鉴于洪教授的Slides上,这部分没有什么详尽的文字说明,所以自己的记录旨在能够帮助大家作为学习Slides部分的一些简单提示。欢迎大家与Slides一起来配合学习。

Python的介绍

  • 目标:提高开发效率,降低开发成本
  • 代码比例:Slides中给出的比例描述的是豆瓣所有项目中的比例,如果只计算网站前端部分的话,那么Python的比例大概有70%多。

为什么使用Python?

  • 简单易学、开发迅速、易于协作。着重说了第三点"易于协作"。因为如果单独就开发效率来讲Perl的效率也很高,但是Python语言的特性可以避免强烈的个人风格,从而更适合团队开发。
  • 部署方便:三条语句完成上线功能
  • 适用面广:前台后台各种应用
  • 资源丰富:内置电池,应有尽有的库可以选择

概述一下讲解的Python的一些优点以及相应的库或工具

  • 简单的Web开发代码展示-Douban后台的WebService都是用Web.py开发的
  • 使用更新颖的Flask框架,代码写起来甚至比Web.py更简单
  • Python开发Web简单得益于WSGI,该标准将一个请求分解为不同的中间件来进行处理。当然造成 Python Web Framework众多的原因也是因为这个。
  • nose-使单元测试变得简单
  • numpy-用于数据分析
  • iPython-好用的命令界面扩展,幻灯中演示了直接在iPython中通过数据来绘图
  • virtualenv-方便部署和建立一个干净的Python环境
  • Python的速度不快,基本和Perl一个量级-用C扩展:Douban用的多的是 PyRex/Cython,用类似于Python的语法去写C的扩展
  • 哲学上和其他语言的差异:做一件事情只有一种方法(Py) vs 做一件事情可以有多种方法(Perl)
  • Pythonic-http://bit.ly/pyzencn

利用Python的语言特性简化开发

案例零:本机和线上配置的不同,如何方便解决
  • 使用.py文件作为配置文件,在使用时将该文件 import 进入程序。
案例一:网站页面权限控制的Pythonic解决方案
  • 使用Decorator把权限处理的代码部分抽象出来
  • Decorator和四人帮中的描述的装饰器模式并不完全对等
  • Py中的函数可以当作对象使用
  • 使用__call__来简化代码
案例二:从队列中提取信息调用相应的函数
  • 原始的代码设计需要在代码中放入大段的If.Else来进行处理
  • 被装饰的函数,先换个名字
  • 将函数序列化后存入队列中,Work通过名称找到相应的模块和函数执行
  • 现场观众提出的问题是,在get_attr这部分的性能损耗如何?答:可以忽略,Python内部有对这方面的考虑
  • 在生产环境中,豆瓣使用RabbitMQ作为队列系统
案例三:Memcache
  • 用的是Python-libmemcached(由豆瓣开源的),在这个页面 http://code.google.com/p/memcached/wiki/Clients#Python 可以查到不同库的比较。
  • 变化的key使用decorator如何处理?
  • 传进去一个可以解释的表达式
  • 使用inspect.getargspec
  • get_key这个返回值,是一个函数,产生memcache的key时使用的
  • hint中说的是生成KEY的方式:如果你有更好的方式,欢迎发给Douban,这个会为应聘豆瓣加很多分值
案例四:使用迭代器减少不必要的性能开销
  • iterator和generator
  • itertools供迭代器所使用的库
  • 通过迭代器来减少遍历时数据库访问产生的性能开销
  • imerge把一组迭代器按照顺序进行排序(不在标准库中)
  • generator是简化代码的利器
案例五:序列化操作时间优化,元类操作
  • 简单对象,需要处理的量太大(豆瓣的收藏对象)反序列化的速度太慢,造成瓶颈
  • CPickle vs Marshal 性能对比,Marshal的性能大约提升7倍,同时空间还有43%的节省
  • Marshal只能处理内部类型,怎么才能使用其来处理Python中的自定义对象呢?
  • 从Python 2.6中增加的namedtuple得到启发,使用类似的方法来完成这个工作
  • 首先要明确Python中类的观念,类也是从元类派生出来的
  • 使用元类,在实例化这个类的过程中进行一个序列化该对象信息的操作,而这部分可以很方便地被Marshal所使用
  • 需要注意的是:Meta操作如果处理不当,容易被滥用,从而导致很多可维护性上的问题。推荐只将其用于框架类的实现上,而避免在应用层运用此类实现。
案例六:Descriptor的简单讲解
  • 使用 Descriptor
  • 将对应变量名称作为类中的属性
案例七:让urllib库实现通过代理翻墙 Python的一些实现:
  • Stackless Python:微线程,类似Erlang,高效并行
  • IronPython,PyPy:据说效率都已经超过CPython了
Q&A环节:
  • 关于框架的选择问题:历史原因,如果现在从头开发新的网站,使用现代化框架
  • 变量命名规范:遵守PEP8规范,尽管不是必须
  • BeansDB应用于:图片、MP3、大文本字段

"寻找失落的螺丝钉"

由自然之友的张文桦带来的,讲述了她多年以来参与公益项目及活动的一些经历,让人受益匪浅。 无意中踏入公益,听说有学姐在做黑熊保护这类的公益工作,很是羡慕。于是她自己的第一份工作,就是从NGO开始的。 讲解了"生态工作假期"这种独特的旅游类型。这种活动形式旨在让出门旅游的游客利用假期中的一部分时间,作为志愿者参与到当地社区的一些生态计划当中。当然,整个计划也为旅行者进行了比较周全的计划:选取风景优美的地点,毕竟前来的游客的首要目的还是旅游,为旅游者为游客创造优美、适宜的环境,还是必须的。 这种活动形式在台湾已经有了一定的规模,在当地社区的参与下,选取符合上述条件的,需要劳力(志愿者的投入)的项目来开展此项计划。 参与完成了:
  • 台湾阳明山外来种清除计划
  • 花莲南华街区旧烟楼修复
不过生态工作假期这种形成花费较高,适合中产阶层。尽管这种旅游公益的形式在自己身边还处于闻所未闻的状态,但是看看台湾相关组织和民众能够达到的高度,无疑能够给我们更多启示。 另一种方式是参与"静会"这种项目,通常是处于某种目的的公益项目(如宣扬和保存原住民文化),需要来访者用专业知识进行相关的项目工作。但是此项目无须收取费用,适合囊中羞涩的公益旅行爱好者。 当时文桦参与的是原住民文化馆:原住民做的文化小铺项目。有很多这样的项目是由台湾的一些有心做此项事业的中产阶层推动的。志愿参与者们问一个NGO的活动主办者:"你们做这个事情有意义吗?"对方的回答是:"这个问题被无数人问了八年,具体的答案我们不清楚,只不过,八年以后的现在,我们还在做这件事。"我想这才是意义所在。 文桦后来又讲述了在美国的圣路易社区参与的服务计划。 计划开始的前三天,组织者给大家时间来融入和了解社区:第一天学习使用$1来买一件东西,旨在通过买东西这个活动与当地人产生更多的交流和理解。第二天在当地人家吃午饭,了解到当地人居住的房子也都是先前志愿者计划帮助的。 第三天开始正式的工作:在工厂搬废钢铁和废家具。由于工作内容实际上是需要相当强健的体格才能完成的体力工作,文桦因为各种原因不能做到和其他人一样好而沮丧。而这时团队中一个瘦小的女孩Sarsh讲述了她在宏都拉斯进行志愿工作中类似的经历,身体并不强健的她要去铲土,从而心里对自己产生了怀疑:如果不能胜任这份工作,那么自己为什么要付出那么多的辛苦来做呢?自己继续做下去还有什么意义呢?后来自己想通了:"为当地人提供更多是心理上的支持,让当地人感觉有其它人关心和参与"。至于自己可以做多少工作,不要勉强,因为会有其它志愿者来帮忙完成。我认为这也是我们参与许多志愿类工作的时候,所应该享有的一种心态。 当地因为就业率低,当地人在开始时不理解这样一个志愿工作的组织。但后来了解了情况,看到情景以后就有了很大的变化,也都积极热心地投入到社区的建设中来。 以上是我根据当时记录下的零散笔记所整理的,文桦自己有一篇更详细的文章记录了在圣路易的经历,欢迎大家查看:http://whitewoods.blog.sohu.com/151525631.html 最后讲到参与望安岛上面的生态旅游计划,整个计划是社会企业类型。由志愿者们推动的生态旅游计划,试图为岛上的生态建设及环境保护提供帮助。文桦最后展示给 大家的照片,无疑为人们投入生态项目而努力的原因做了最好的概括:自然可以包容一切,人们将废旧的玻璃瓶作为垃圾丢在海里,而大海返还给我们的,却是冲刷得光滑完整,无比美丽的玻璃片。

总结

自己能够记录和参与的活动必然有限,想要了解活动详情的朋友,可以在此查看"柳燕隙阳"活动的所有话题情况。同时也请关注OpenParty网站对于此次活动的总 结。 本期活动筹备,进行的同时,由OpenParty Developer开发团队发起的OpenParty新网站项目也正式开始了线上运转。这个项目设计的初衷是将OpenParty活动中一些必要的部分都放在网站上来进行(如话题提交、活动报名等),目前虽然已经上线运行,但是还处于非常初期的阶段,未来我们还会进一步把一些计划和设想融入其中,欢迎大家提出宝贵意见。本项目为遵循GPLv3协议的开源软件,项目位于 http://code.google.com/p/openparty,欢迎大家关注,并且我们非常期待有时间、有兴趣的朋友能够参与到OpenParty开发者的团队当中来,感兴趣的朋友,可以发送邮件到 dev [at] beijing-open-party.org 与我们联系。

糖醋鼻子:柳燕隙阳后记

活动现场

多乐趣作为一个新的互联网成员,作为分享链条的一个节点,定会成长的越来越好,那么我顺便也提一些建议,比如与更多的微博系统互联、增加动画效果的云标签、加入tag和评论对象功能。这些应该会让使用更加方便舒爽。 活动开始前,我终于看到了最近被炒的很热的iPad,嗯,果然是人见人爱,不得不再次感叹高科技带来的各种冲击和享受,年内的口袋又要超支啦。 洪大师给大家带来的Python在web2.0网站的应用,内容深入浅出,最终以53票的成绩位居此次Party的话题榜首,足见大师的魅力和大家的热情。

另一种旅行的可能

第二个session中来自张文桦的“另一种旅行的可能”,为大家讲述了旅行+公益活动的完美组合,也把分享和共享精神提升到了另一种境界,她的话题让大家不得不感慨如此一个公式:可能+热情+坚持=所有。

持续集成

第三个session中,我继续留在了大厅中,再一次学习了肖鹏带来的“持续集成”,以下是同步在多乐趣记录要点:
  • 持续集成反映了过程状态,正向误差(常绿)和逆向误差(常红)都是不正常的。
  • 持续集成是改进过程的过程,有广义和狭义之分。
  • 持续集成可以使用分时、分域、分层等策略来解决具体的问题,它是过程进化的第一步。
  • 建议测试代码和开发代码使用统一的配置管理。
  • 等效构建再次被强调,它是有效持续集成的基础。
  • 提交代码前的构建环境应该和提交目标的环境等效。
  • 持续集成一个重要的目标在于跟踪、反馈,忽略这两点,持续集成的效果将大打折扣。
  • 结束语“无欲速,无见小利,欲速则不达…(后面半句没记下)”。
总之一句话,持续集成是开发过程的润滑油和后视镜,只有以高效合理的方式让自己得到反馈,才能让项目健康成长。

分享的喜悦

时间在大家的讨论中一点点的过去,但在这里,时间让我们去分享,它也与我们分享成长的每一个坎坷、喜悦、激情、欢呼,从参与者数量的成长、各地分舵的呼声、新网站的上线、多乐趣的合作…这一切一切,都让每个组织者、贡献者、参与者心潮澎湃。所以很想用一个曾经用过的标题来诠释这个后记“我们一起走过”。

worldhello:五月柳燕隙阳

...

我当听众

接下来,有时间可以去分享他人的讲座了,于是窜到了“汉”,因为这两个会议室挨着,而且话题很特别,关于“Go语言”。 演讲者是Googglle。主要介绍Google推出 Go 语言始末,以及引领我们走进 Go 语言。最大的特色就是在API层对并发的支持,不但在效率上有着质的飞跃,在编码上也大大简化。当然,目前还存在开发工具上的欠缺以及缺乏大的开源项目应 用。如果有开源项目应用,倒是可以拿过来研究一下。 结尾除了问了googglle 关于 Go 语言的工具和开源应用的问题,还问了问 googglle 是否是 google 的一员,不过,googglle说他很想成为 google 的一员。我想凭借其深厚的 C/C++ 技术功底,googglle定能心想事成。 接下来回到大厅,吃些茶点,听着 Thought Works 的工程师摆龙门阵。这个题目,是我们早早计划要听的,我们团队中负责 Cruise Control 的同事一早就做好了听的准备。Thought Works 的培训师果然厉害,有着深厚的理论功底,讲话滴水不漏,最终没有看到实践上的内容。最后,只好在结束后群起而包围之。

回家堵车

傍晚6点,会议结束,我们装着一脑袋的满足回家了。二环奇堵,这还只是周六哇。最后到跟前发现两车刮蹭。这肯定不是今天 Open Party 参与者所为,当你拥有一份 Open 的心态时,怎会去在马路上争那一时之快呢?

特别感谢:

个人致谢: 糖醋鼻子、罗婧、 轻眉、璎珞、隋冉、 CNBorn、Wendy、 李英豪、钱安川、 Tin、李响、李剑、 worldhello、Chloe、 雨嘉、肖鹏、文桦、 程勇、李伟进、朱捍东、 蚂蚁、李兆海、丛林、 西乔、端木、Donkey、BillyJohn、Wentrue、陶黎、杜正斌、JasonMa、佘广、刘江、 杜正彬、刘静、ChrisLo、Limo、Makestory... 社区致谢: 华章出版社 图灵教育出版社 OReilly出版社 Google中国 Matrix.org.cn OpensourceCamp JetBrains 是他们的努力和奉献, 让我们享受这一切!

活动照片:

糖醋鼻子:柳燕隙阳活动实录

活动视频:

http://v.ku6.com/playlist/index_3792852.html

活动讲稿:

http://app.beijing-open-party.org/event/1

更多活动动态

请随时访问OpenParty活动网站,或者在Twitter.com新浪微博上搜索关键字#openparty!

BeijingOpenParty2010年05月"柳燕隙阳"活动总结的评论

  • eoagueashl' Profile image eoagueashl - 4 年,9 月前 <br><br><a href="http://tiffanyandco721.webs.com"> blog </a><br><br><a href="http://simpleweddingdresses0.webs.com"> </a><br><br><a href="http://cheapwatches366.webs.com"> About blog </a>
  • itolchinmoha' Profile image itolchinmoha - 4 年,9 月前 <br><br><a href="http://rolexbasel8.webs.com"> blog </a><br><br><a href="http://uggsonsalekids81.webs.com"> </a><br><br><a href="http://ChristianLouboutinShoes767.webs.com"> About blog </a>
  • earleenghiloni' Profile image earleenghiloni - 4 年,8 月前 <br><br><a href="http://tiffanyjewelryoutlet19.webs.com"> blog </a><br><br><a href="http://discountuggs49.webs.com"> </a><br><br><a href="http://nikeshoes85.webs.com"> About blog </a>
  • ottimoekeit' Profile image ottimoekeit - 4 年,1 月前 <br><br><a href="http://omegawatches73.webs.com"> blog </a><br><br><a href="http://omegawatches73.webs.com"> </a><br><br><a href="http://omegawatches73.webs.com"> About blog </a>
  • dperdirk' Profile image dperdirk - 3 年,11 月前 <br><br><a href="http://tiffany527.webs.com"> blog </a><br><br><a href="http://tiffany527.webs.com"> </a><br><br><a href="http://tiffany527.webs.com"> About blog </a>
  • eclevetris' Profile image eclevetris - 3 年,10 月前 <br><br><a href="http://timberlandshoesoutlet40.webs.com"> blog </a><br><br><a href="http://timberlandshoesoutlet40.webs.com"> </a><br><br><a href="http://timberlandshoesoutlet40.webs.com"> About blog </a>

如要发表评论,请先 登录