Recently in Event Category

OpenParty "梅雪映春"

| 1 Comment
OpenParty "梅雪映春"的准备时间只有7天,却出现了众多水准远超预期,令人惊喜的精彩话题。这还要感谢各位热心的话题贡献者,以及抽出宝贵时间来参加活动的诸位朋友。下面简单记录一下自己现场参与的两个话题。

首先开始的是钱钱带来的《如果做好演讲》。这个话题主要面向对外演讲的技术人员,介绍如何使演讲内容更具吸引力,更易被接受。

做好充足的准备:对外进行的演讲和培训都要在内部先讲上两到三遍。

对于演讲者来说,需要注意的方面:
  • 演讲内容,选择自己擅长的东西
  • 知己知彼,了解参与者的基本情况,他们对于演讲或培训内容的期望(可以直接提问)
  • 不要依赖讲稿,生动的语言可以给听众留下深刻的印象
  • 分享过后将内容总结成脑图,养成良好的知识整理习惯
  • 准备事项Checklist
  • 踩点 - 准时到达会场,尽力避免意外因素
演讲过程中
  • 设计一个足够吸引注意力的开场白
  • 三个要点:
    • 向观众呈现演讲稿梗概
    • 把观众的注意力从幻灯拉回到演讲者身上
    • 用尽浑身解数开始讲故事
  • 忘掉讲稿,一个演讲者首要的任务是讲故事
关于现场氛围的环节

"危机处理"的几种通常方法:
  • 提问 - 引发听众的思考
  • 停顿 - 适当的停顿可以帮助听众理清思路
  • 调侃 - 把严肃的事情换一种方式表达
紧张心理:不要去试图克服,任何人演讲都会紧张,这是一个正常的生理反应。需要让这种反应对演讲起到帮助
  • 不要吃太多肉,适量进食最佳
  • 准备小抄卡片(用到的机会不多但有心理安慰作用);其它工具的辅助,比如Keynote的查看下一页功能
  • 精神胜利法 - 心理暗示
  • 太空漫步法 - 走动一下有助于大脑思考
上面那些技巧,可以帮助你将演讲做得更好 ,却不是让演讲成功的最重要因素。

让演讲成功的两个最重要因素是:
  • Idea, 清晰的、结构化的、内容丰富的信息。
  • 打开那扇门:一次成功的培训和演讲经验,可以帮助演讲者建立感觉和信心
推荐的书籍:

话题结束以后,现场有一位参与者补充分享了一些关于演讲的经验,我认为很有价值,也进行了简要记录。

不用麦克风会有更好的效果:声音可以直达观众耳中。观众听到不自然放大的声音时会产生逃避感,不使用麦克风可以减少距离感,使听众更加认真聆听。实践证明,即使在能容纳500人的会场,通过特殊的发声训练,可以做到不用麦克风进行演讲。

演讲的本质是对话。台下的听众虽然不说话,却是用聆听的形式和演讲者进行交流。所以演讲过程中足够的目光交流很重要。
在偌大的会场上如何更加吸引观众的注意?丰富的肢体动作。思考下戏剧中的演员,在小小的舞台上需要通过鲜艳的装扮以及夸张的肢体语言来放大自己,演讲也是如此。

如何面对现场观众突如其来的挑战?遇到挑战很正常,此时需要演讲者相对强势一些、对自己有足够的信心并建立气场。演讲者应该是控制全场的人,在气势上要压倒对方。演讲时全体听众是演讲者一方的支持者,心理上对于莫名其妙出来挑战的观众并没有好感。


另一个话题是ThoughtWorks徐昊带来的《8小时用HTML5打造VNCViewer》。这个分享非常精彩,其实现过程中的思考方式、使用的新技术都让人有醍醐灌顶的感觉。以下的记录由现场的笔记总结而来,比较粗略,难免有失误,还望大家指正。

由于HTML5具备Canvas, WebSocket,所以萌生了使用HTML5来打造一个VNCViewer的想法。同时为这个项目设定目标:在12小时之内完成。

HTML5的定义

在HTML5之前,HTML这个概念仅指代用以描述数据的语意化文档标签。之前的W3C始终将HTML定位为单纯定义数据的标准,有意淡化BOM(Browser Objective Model)对象。而从HTML5开始,第一次将HTML的概念扩展到HTML+CSS3+JS的集合。在原先的数据表现上添加了一些新的语意化标签如<header>, <footer>等,但BOM的增强更令人兴奋:引入Canvas, WebSQL, WebSocket(在频繁交互的网络应用中节约大量资源), PostMessage(在不同页面之间传递数据)等对象为实现更多种应用提供了可能。

个人项目也要按照标准的项目流程做计划:进行任务分解。有任务分解列表的同时,也要有项目的风险列表。考虑到一些通常的项目风险,比如:一旦协议太复杂以致于不能用很短的时间了解,就会影响项目实现。

首先需要了解VNC协议,任务预计需要两小时。发现VNC的工作原理并不复杂:服务器和客户端经过握手确定协议版本、所支持的编码方式等,随后开始通信,传输屏幕上的显示内容。显示内容传输时支持不同编码方式,协议本身可以扩展以支持更多种编码方式。VNC的协议有43页(链接),1小时阅读完毕。其中主要包括两大部分,显示和接受输入。出于应用需要,不考虑输入部分的实现。

此时任务列表更新为:
  • 建立连接
  • 服务器与客户端间进行握手
  • 开始传送数据
使用HTML5的WebSocket建立连接时,发现WebSocket要求需要HTTP协议才能建立连接;同时建立长连接还需要如下步骤:HTML5端会发送一个请求,询问服务器是否能将协议升级成为WS/WSS协议,服务器需回复确认。但VNC服务器诞生较早,不支持升级协议这个约定。有两种解决方法:自己实现一个VNC Server,或者写一个Proxy来解决问题。因为自己实现VNC Server成本太高,不可能在时间限制内完成,所以选择了写Proxy的方案。
Proxy使用node.js , 一个运行在服务器端的JavaScript框架来完成。起初选用的原因主要还是个人的兴趣,接下来可以看到,最终这个框架拯救了整个项目。这个Proxy只用了10行JavaScript,使服务器和客户端的两个TCP流对接上即可。

服务器端代理部分耗时45分钟

接下来面临的是编码问题,VNC使用底层数据编码,而HTML端是相对高层的数据编码方式,这里通过node.js实现统一;服务器建立连接需要认证,VNC的认证机制使用DES加密。在网上寻找JavaScript DES库的时候,发现能找到的三个库均不能正常工作。不得已自己实现了JavaScript的DES库,耗费了不少时间。此时5个小时过去了,服务器端和客户端已经可以正确连接。

接下来解决显示的问题

Canvas有一个绘制函数几乎可以原生支持VNC的Raw编码方式,于是直接使用这个方法实现。测试时发现基本不能正常使用:由于数据传输量非常大,客户端的性能完全不能满足需求,画图速度太慢,占用资源过高。

6个小时过去了

考虑在信息传输方式上做优化,传递每个像素数据的Raw编码方式所需数据量过大。同时实验中发现不同VNC服务器发送信息的行为不太一样:苹果的服务器按照行的方式发送屏幕显示数据,而某个版本Linux中则是直接把屏幕分为四个区域来处理显示更新。按照区块刷新的编码方式进行了测试,发现并不能解决问题:画面后面的帧显示比原先略快但仍不可用,并且显示第一帧画面的速度非常慢。

解决传输数据量的问题,需要从传输协议上入手。VNC协议默认有5种Encode方式,分别是:
  • 全屏更新
  • 区域刷新
  • Hextile(将屏幕分成16x16的诸多小块来进行刷新,详解
  • zlib 将raw的数据进行压缩然后再传输
  • hextile+zlib,将Hextile格式的数据进行压缩再传输
参考一些资料,均推荐使用zlib方式对数据进行压缩处理,可以节省带宽、提高速度(未经压缩的画面一帧的流量是4.3M)。此时需要一个JavaScript的zlib实现来进行解码工作。发现没有这样的库...... 此路不通。

能否使用HTML5的Worker进行后期处理?查阅文档发现Worker进程不能直接访问DOM对象,所以不能在Canvas上面进行绘画。而且传递大数据量时速度很慢。简单地说这个功能适用于计算密集的任务,但不适合这种数据密集的任务。

最后解决问题的关键功能,是一个比较陈旧、平时几乎不再使用的浏览器功能 - DataURI Encoding。即把资源经由Base64编码后直接显示在页面中。这里面最重要的突破在于:从最终目的中思考,用户最终的目的是什么?所需的VNC解码内容和哪些浏览器支持的原生信息格式最为接近?
首先想到的答案是视频,但是发现如果使用HTML5的<video>标签需要把VNC流转换为视频格式。这个工作太复杂,几乎无法完成。
如果不能作为视频来处理的话,那么作为图片显示的方式是否可行呢?把VNC的数据流转化为图片,浏览器即可通过硬件加速来显示图片。将VNC流转换成相应的图片格式在客户端进行太复杂,同时非常消耗资源。这时之前在服务器端选用的node.js技术发挥了重要作用。在VNC服务器端编写了一个新的VNC编码方式,可以直接将VNC的数据流以JPEG的方式进行编码(解决了传输数据量的问题),然后在服务器的node.js端对数据流进行解码,直接向浏览器传回通过Base64编码的JPEG图片,即可做到以很低的延迟显示VNC服务器的内容。

至此,整个项目完成,共耗时8小时23分钟

OpenParty "琴瑟和鸣"

| No Comments
2010年11月份的OpenParty "琴瑟和鸣"活动话题众多,热情的分享者们带来了不少精彩的话题。从哈佛大学的《幸福课》体会分享到Web安全架构,从PHP框架开发到西班牙弗拉明戈舞蹈,话题依然保持着多元化的特性。关于活动的详细信息欢迎大家访问OpenParty网站。在此简要记录一下自己参与的两个话题的信息。

首先是由张韡武带来的西班牙国粹艺术-弗拉明戈的介绍。

这个介绍中首先讲解了什么是美、以及舞蹈艺术是人们发自内心想要表现美的一种形式。18世纪下半页弗拉明戈发源于西班牙南部的安达卢西亚。在起源之后,主讲人继续介绍了弗拉明戈的发展与传承,以及与其它艺术形式,如书法等的共通性。弗拉明戈一个显著的特征在于,它更多是由艺术家出于表达的内心情感而被创造,而非达到某种即成的"美的标准",迎合某种潮流或观众的需求。这使得弗拉明戈的气质更加个性化,也更加鲜活。

印象最深的是在话题的最后,应邀而来的弗拉明戈舞蹈家现场即兴表演后的一句话:弗拉明戈是一种舞蹈,也是提倡热爱生活,以积极的情绪面对生活的一种态度。

这个话题的细节内容很多,同时还有很多的视频欣赏,感兴趣的朋友请移步这里查看视频。

---

接下来是Tin带来的《爬虫点滴-实现搜索用Spider的一些细枝末节》话题。

首先Tin讲述了下自己进入研究爬虫这个领域的体会。了解些搜索引擎的基本知识,同时在没有经验的情况下,看看社区的项目是怎样做的。没有公开的相关知识,请教下身边的朋友怎样做,从而了解这个领域可能遇到的问题和风险。随后自己动手,开始做一些简单的原型。全网爬虫最简单的Python实现只需不到100行代码。待这个原型运行起来后,就会开始碰到一些问题。此时就要求助于相关的论文。参考论文以改进对自己系统的设计,使其逐渐完善成形。下一个步骤是监控,搜索引擎爬虫作为一个无人看守的系统,需要有很多指标来检测整个系统的运行情况。这些指标也同样反应了这个爬虫的质量。经过1-2个月的运行,通常都会遇到性能和存储上的问题(开始应用分布式存储,做好容量预测),解决这些问题在依靠查看论文、学习前人经验的同时,还要自己进行大量的实践。通过重复这个流程,建立各种指标来完善系统,是一个持续的过程。

爬虫分为两个大类:

全网抓取
  • 最大的问题是存储容量
  • 去噪(过滤掉各种不需要的信息)
  • 任务调度(面对近乎无限的互联网,用有限的抓取资源,最大程度地获取有价值的信息)

小而专的垂直抓取
  • 主要工作在于解析一个特定领域的信息
  • 对这些信息进行识别
  • 关键在于把重复的劳动变成流程、使其模版化

全网抓取的构成(搜索引擎技术基本要素)四个部分
  • 抓取
  • 内容处理
  • 倒排索引
  • 搜索前端

抓取工作需要解决的一些问题:
  • 归一化(去掉重复文本)
  • 锚/文字链接处理
  • 页面优先级处理、权重处理
  • 新鲜度控制
  • 礼貌度
  • 死链和检测
  • 吞吐量:1个CPU的机器,也可以吃满百兆带宽

正文提取:只索引有意义的部分
对于搜索引擎应用来说,分词非常重要
相关度(相关度词汇语意库)

全网抓取问题
  • 必须使用分布式存储,因为传统的数据库在运转两个月以后都会无法负担
  • 排链接
  • 看论文,不同的实现方法

垂直抓取技术的实践
  • 先对网页进行Tidy
  • 用CSS-Selector进行语义识别和抓取
  • 可以使用Proxy来抓取

No-SQL数据库与爬虫原生相关

H-Base
  • 需要SA介入
  • 是BigTable实现

实践Cassandra并最终放弃
  • 是Dynamo实现
  • 难以实现锁
  • 稳定性成问题
  • 节点挂得多,存不进数据
  • 要考虑可用性、分区容忍性,可移植性

Google Caffine
  • 在数据库实现了事务和Trigger
  • 爬虫使用多线程
  • 尽量少考虑异步实现(异步很难调试)
  • 锁/timestamp 都是基础服务(flickr用mysql 一张表一个字段实现了timestamp)

其它的一些体会
  • Microformat很重要
  • Web应该开放

OpenParty "玲珑秋月"

| No Comments
2010年10月份的OpenParty "玲珑秋月" 活动在经过了九月份的休整以后,携着跨越了艺术、技术、旅行等领域的话题归来,关于活动的详细信息欢迎大家访问OpenParty网站来了解。在此简要记录一下自己参与的几个话题的信息。

首先到是王海磊带来的"Code Generated Art"话题。这个话题是我个人期待已久的融合了计算机技术及艺术的话题。演讲者王海磊对于自己的描述是"一个艺术家,设计师和计算机程序员,现在在致力于通过计算机技术来创造新媒体艺术"。下面我简要描述一下自己在这个话题中感受最深的部分。希望能帮助大家对于新媒体艺术有一些简要的了解。

计算机与互联网已经影响了人类社会的每个方面,为什么不能影响艺术呢?由于对于艺术的追求以及对于计算机技术的喜爱,最终这个方向成为王海磊的职业发展方向。

大家可能已经见过很多计算机生成的漂亮的分形画面,其中可能很简单就可以得到十分美丽的画面,那这些画面都是艺术品么?单纯美丽的画面并不是艺术品,艺术品的一个先决条件是创作者在创作伊始,通过一个可能的故事和线索,引起的一种触动,甚至是深入哲学层次的思考来决定的。

用计算机代码生成的艺术通常被称作 Generative Art,程序可以用来做我们从来没有想过的事情,而不仅仅是我们日常使用计算机去做的那些事情。

计算机程序只是工具,它并不创造艺术。整个"生成艺术品"的创造过程可以描述为:有一个灵感来触动你,有一个想法,把自己想要的东西以计算机语言的方式呈现出来,然后计算机语言操作计算机来产生图像。

一个"生成艺术"的计算机程序可以产生很多图片,从成百上千张中选出几个满意的不是一个轻松的过程;其挑选标准是能恰如其分地表达作品的目的,如果这些图像都不能达到目标效果,那么就修改程序,反复这个过程。

程序员朋友们可能感兴趣的是:需要通过什么工具来完成这些艺术品,其中使用到的工具包括:NodeBox, Processing, Python, Ruby, Objective-C,其实工具并不是最重要的,就生成作品这个需求来说,在Photoshop里面写脚本也可以做到相同的效果。

作品展示:
  • "等高线图"  - 展现地理信息数据里的简洁有效的抽象美。
  • "盲文排列"  - "眼睛",主题:盲文就是盲人的眼睛
  • "天目" -  由500万条线构成,为了达到这种质感,实验了很久
  • "女书"

前一阵在北京还举办了新媒体艺术展,并且参展"艺术北京2010"----中国最高等级的现代艺术展,说明Generative Arts这种艺术形式已经得到了现代艺术界认可。

对这个话题有着更多兴趣的朋友,欢迎访问王海磊参与的缘分新媒体艺术空间网站

---

我自己带来的"尼罗河背包记"话题,则吸引了很多对于旅游和埃及感兴趣的朋友。

这次出门旅行,最让我感到震撼的,并不完全是旅途中壮丽的景色和遗迹──的确,阿布辛贝神庙和金字塔带来的是跨越数千年的震撼,但是最深刻的体验却是旅途中遇到的人和事,那些来自不同国家的年轻旅行者的所见所想使得世界不再仅仅只是停留在地球仪上的概念,而是身边可以感受和了解的实在。

从去年的旅行话题分享经验看来,我一直在重新思考旅行话题分享的意义。分享话题的意义何在?"向他人表达我去过这里"?这样的意义根本就不重要,因为无论去过多少地方、有过怎么样的境遇,这些都将变得不再重要,原因是它们已经不再是单独的故事,而是化作了旅行者不可分割的一部分;在他人看来波澜壮阔的冒险旅程,可能只是旅行者认为最不起眼的部分,而那些真正让旅行者震颤、感动、赋予了整个旅行以意义的东西,却不能非常简单地用任何文字或者书面的形式来加以表达,唯有亲身体验方能感受。所以,旅行游记的最根本价值,正如我以前所说过的那样,依然是激励着更多人上路,去观察并探索外面的世界,这个世界是广阔的,但除非你亲自去探索和发现它,否则这概念上的广阔并没有太多的实际意义。

此次演讲中的slides已经上传到OpenParty网站,大家可以在这个"尼罗河背包记"页面上看到;这次旅行途中的一些照片,我已经在我的豆瓣相册上传,欢迎感兴趣的朋友前往察看。同上次旅程一样,关于这次旅行路上的详细见闻,也会在将来在这里的旅行文章连载中出现,敬请期待。

---

"从0到30万,我做liageren.com这一年"这个话题是由俩个人网站的创始人刘文举(Dave)带来的创业话题,其中讲述了很多创业之中的故事和乐趣,也有着对于很多创业者至关重要的经验。

在最早萌生了"为情侣使用的网站"这个idea之后,Dave就自己尝试去做,同时自己也是网站的最初用户。后来毅然辞职,将这个网站作为事业来进行。期间也经历了用户增多的喜悦以及资金不足的困境,现在俩个人已经是相同领域网站中的佼佼者。

网站的几次转型,其中有不太成功的尝试,如策划了面向单身用户的交友功能,但是发现所取得的效果并不十分理想:有类似功能的网站很多,并不能突出自身的特色,相反,俩个人一直以来作为一个专为情侣设计的网站,突然加入的单身功能也让已有的用户感到十分困惑。后来就逐渐淡化了单身用户的功能。从中得到的经验教训是,要始终坚持提高网站的辨识度。

尽早尝试盈利,不要过分依赖投资。现金流就是创业者流淌的血液,这是创业中至关重要的一环。俩个人尝试通过为收费用户提供vip服务的方法,很早就开始了在盈利模式上的努力,并且效果不错。

刘文举的话题中,我个人认为最具有价值的一个部分就是"如果创业可以重来",这部分中列举了在创业中经历的很多经历和故事,以及如果能够将这个过程重新来一次,作为一个有经验的创业者会避免的问题。这部分列举的很多要点,都是来自亲身体验,如"不要试图满足所有的用户;开发者和真实用户的距离有一光年;用户不在乎你的技术",这些没有体验就不会感受到的真知灼见,对于创业者来说是很有价值的。

我的记录只覆盖了这个话题的一小部分,感兴趣的朋友可以在这里察看Dave的幻灯简介。

OpenParty "清雨榕香"

| 1 Comment
2010年8月的OpenParty "清雨榕香"活动创下了各个话题参与人数的新高,很多话题的会议室都密密地站满了人,在各个热门话题的驱使下,大家的热情依然不减,在一个下午的时间里体验了一个又一个知识分享的小高潮。关于活动话题的详情,请参见OpenParty网站上关于本次活动的链接,下面简要记叙下我参与的几个话题的相关信息。

首先是来自淘宝网的苏宁带来的"淘宝广告技术部开发流程和Scrum实践",淘宝的Scrum实践一直应用于广告竞价系统的开发,取得了一些成果。想必大家都想要细细了解一下Scrum在大公司内部的实际应用案例,这个话题提供了很多相关的信息,帮助大家更好地了解Scrum以及实践Scrum时会遇到的一些问题。我的记录基本上遵循了讲解时的Slide结构,有一些内容是从现场的讲解中了解到的,也补充了进去。

Sprint 刚开始时
  • 使用excel来管理,自动生成燃尽图
  • 流程:产品经理提出需求->Sprint->产生Backlog->进行开发及测试,最终到产品上线->Review
  • 只有产品、开发、测试几个角色,角色比较少
  • 受干扰因素少,Scrum流程比较精简
现在Scrum开发流程
  • 功能需求数目增加
  • 很多时候都是项目进行一半的时候才引入Scrum
  • 团队中角色数目的增长
复杂的Scrum逐渐开始
  • 经常有工作中遇到的种种问题而引发的中断,此时Scrum要如何进行配合(明确分工,通过流程进行配合)

淘宝的Scrum角色
  • 产品
  • 架构师
  • TL/PM/Scrum Master
  • 开发
  • 测试
  • PE
  • 运维工程师

角色的作用

  • 产品经理
    • 提出需求、提出产品文档,对项目进行验收
    • 需要注意的是,在淘宝,相对于一般的Scrum流程,对于文档的要求要更高一些。只有更高的文档要求,才能保证公司业务可以更从容地面对人员变动等情况。
  • 架构师
    • 分析需求对系统架构、功能上的变动
    • 出台系统调整方案
    • 系统总体设计
    • 掌握系统改造成本
  • TL/PM/Scrum Master
    • 组织Sprint
    • 追踪项目开发进度
    • 沟通协调
  • 测试
    • 需求提出之后,测试就会进来
    • 了解需求动机
    • 测试用例
    • 各种测试
    • TDD
  • 开发
    • 模块
    • 代码开发
    • 单元/内部集成测试
    • Bug修复
    • 上线手册(这部分是必须的)要交给运维来Review
  • 运维(产品运维)
    • 了解业务需求、系统瓶颈
    • 熟悉模块接口和数据接口
    • 故障应对措施
    • 流量增长模型
    • 实际上线操作
整体Scrum流程
  • 由产品经理和架构师来共同确定功能需求,完善比功能基本明确需求对于系统功能的变更和影响,产生未细化的Backlog
  • 然后将未细化的Backlog通过Sprint来产生细分的backlog,交由开发者进行开发
  • 开发人员在开发的过程中,需要和测试和运维一起进行协作来完成。在交由运维人员进行上线以前,运维人员必须从测试人员那里拿到上线许可。不经过测试人员认可的项目不能上线。   

目标
  • 一切不以上线为目的的开发都是耍流氓
团队配置
  • 开发测试比例 2:1
  • 尝试结队编程,在一段时间内实行,后来发现成本比较高,就放弃了。
计划会/需求沟通
  • 需求点罗列
  • 需求的实现思路
  • 任务分解
  • 每日晨会的三个经典问题
Sprint总结会议
  • 头脑风暴,集思广益
  • 成功
  • 不足
  • 改进方案
任务分解:WBS
  • 规定了上线时间,能否完成?
  • 需要落实到每个人,每个人的各个工时,算出总工时,然后再确定上线时间。
  • 而需求要做到能分解的就分解掉
  • 如果需求提出方不能满足所计算出的上线时间,那么就要进行研究讨论看看砍掉哪方面的需求以达到更短的上线时间。
  • 人日的计算方法;通常一个人的工作还要有分工,60%开发,40%运维;按照一个人每天6小时的工作来计算
Scrum策略及工具
  • 调整工位:一个项目的人员坐在一起,减少沟通的成本
还举了两个案例,基本上讲述了在项目进行过程中,没有在早期就注意到影响项目的一些风险,导致风险被拖后
而项目进行过程中的变数非常大,经常有意想不到的情况来打断项目开发的过程,解决问题的成本非常高
对于工程师来说,要尽力产生可复用的代码
要多考虑风险,尽早解决危机,一个Scrum能解决的问题,不要带到下一个Scrum

淘宝内部使用的Sprint工具
  • Excel
  • Sharepoint  + Project
  • XPlanner - (记录工程师实际的工作用时,最后自动生成burndown chart,但是最后由于工程师反映此项工作太耗时间,被搁置了)
  • Mindmap,现在主要使用mindmap来在一个巨大的脑图上记录各种信息。这个脑图非常细致,规定了各个人要进行的任务,任务的划分也非常细致,时间精确到小时

Sprint分解会
  • 开发人员自己领取任务。这部分淘宝的做法和Scrum的标准做法有些许不同。
  • Scrum模式本身的推崇由开发人员自己来规定并设计项目开发点,但是淘宝在实施上发现过于浪费时间了,于是就变成了由产品经理等需求提出人和架构师定出粗略项目,最后在开会前就定好要开发的功能点,只做任务分解
关于开发人员需要完成的上线文档的详述:
  • 其中包括文档信息,RPM包的版本信息,为测试部署的相关文档,包括上线操作、回滚操作的具体步骤
  • 上线手册应该手把手传达给运维人员如何进行操作,目标是做到无须询问开发人员就可以实现项目上线。所以淘宝对项目开发人员的文档水平要求都非常高
  • 这些上线的文档都要进行Review!
对于需求的要求:
  • 最好有最终的文字描述,用文字解释详细,并且有实例。

------

接下来是由豆瓣的工程师石头带来的"从豆瓣Pulse谈起 - HTML5 相关技术在实际项目或产品中的应用"话题

op20100828_douban_html5_1.jpgHTML5在视觉,交互等诸多领域,为Web带来了全新的体验

最大的问题:浏览器兼容性 - 应该有意识地去引导用户使用性能更高,功能更多的现代浏览器,

CSS3技术非常的绚丽,很多效果的实现已经完全不需要Flash了。石头在现场针对前端的一些实际应用都分别进行了详尽的举例,详情请见Slide和视频

Douban Pulse 这个产品中已经使用了一些CSS3的新特性,带来了很好的用户体验。

关于具体的信息,大家可以参考现场石头的Slide以及视频,更形象直观 http://app.beijing-open-party.org/topic/20

op20100828_douban_html5_2.jpg------

南极、禅院与现代社会

这是由有着丰富经历的廖大侠带来的精彩话题。我想很多朋友起先和我一样,可能是向往着精彩的景色和见闻来关注这个话题的。事实上最终这个话题带给大家的更多的是对于精神领域更深入的了解。在这个繁忙的社会,我们事实上很难抛开一切,安静地思考自己。而这个话题中带来的一些观点,恰恰从这个方面填补了我们的欠缺。

廖大侠简单谈到他个人的一些经历就已经足够让大家感到钦佩:本科在天文台做论文,研究生时跟随导师做火星研究,是国内专业研究火星的团队成员之一;寺庙进行禅修;曾也想成为一名吉他手;现在在从事数据挖掘相关的工作...... 这履历本身就已经是足够精彩的故事。随后故事进入正题,开始讲述随南极科考队进入南极的故事。

op20100828_antarctica_1.jpg一些关于南极的有趣故事:

  • 夏天是天堂,冬天是地狱
  • 企鹅坐浮冰旅行
  • 南极很干燥,号称比沙漠还要干燥
  • 南极的环境,是和火星最相似的环境
  • 极夜也不是一片黑暗:中午的时候虽然没有太阳,但天还是亮的,就像早晨还未出太阳时一样,而且夜晚的月亮也经常很亮
op20100828_antarctica_2.jpg
现场播放了南极实拍的企鹅视频,看到视频里漫山遍野,数不清数目的企鹅,自己感觉非常震撼。因为那种感觉来自于你需要以一个新的角色来看待你自己,在那样的大陆上,人类并不是主宰,相反,只是来到这里努力适应生存的地球的一份子而已。

在南极的严酷环境中,身边的社会结构有着全然不同的转换。一个小小的团队,就是在那里全部的社会构成。因为资源才是真正的稀缺品,钱变得没有任何意义。而小群体中的每个人都有着明确的分工和责任,是团体共同生活发展所不可或缺的一部分。我们从来不是一个社会的旁观者,在一个庞大的社会中可能并不容易清晰地意识到这一点,但是在那样一个小环境中,这种观点和意识变得无比重要。

op20100828_antarctica_3.jpg
在这样的社会生活中所感受到的

  • 永远不要抱怨
  • 服务意识、合作精神与专业技能一样重要,有时甚至更重要,一个人足以影响整个团队
  • 谁是最重要的人?生活中身边的人
  • 不要试图去改变不可改变的东西
  • 学会静心很重要
  • 切勿贪多务杂
  • 努力使自己的心达到空虚、明净污染、不扭曲变态的理想状态

OpenParty "荷风清韵"

| 2 Comments
本次OpenParty "荷风清韵"活动的话题展现出强烈的多元化色彩,涵盖了从软件助力天文学研究、社群活动、读书分享乃至笑来老师带来的时间管理话题,到类似Nginx脚本编程等前沿IT话题,难免让在场的朋友应接不暇。按照惯例将自己现场收听的三个话题做一下简单整理。

量天-软件工程如何助力天文宇宙学研究

由冬清带来的,介绍天文领域软件开发项目的介绍,让在场的各位科学爱好者大开眼界。

冬清所在的公司Gsegment作为地面应用软件开发团队,参与了目前世界上最大的空间望远镜赫歇尔卫星空间项目。 在工作中,也认识到现在我国的航天工程力量明显不如欧洲航天局/NASA等组织,所以Gsegment为团队订下了长远的目的和理想:致力于通过工程来促进科学,提高我国工程能力。

Herschel计划是Horizon 2000计划的4个Corner Stone的其中之一,包含卫星在内的整个计划从决策到交付历经10年,观测卫星于09年5月14日发射,可保障使用期3年。如果把成本均摊到使用期,相当于每天开销百万欧元。Herschel天文台是红外亚毫米波天文台,在这个波段可看到宇宙早期的情况,同时由于波长长,在大气内难以观察,才有对应的卫星观测项目。天文台的观测仪器囊括了光学观测、谱分析等多种功能,可以用来在外星球寻找水。软件中重要的部分,HCSS Hershel 通用科学系统,开发历时十年,三百万行代码,20名开发人员使用Java开发而成。天文信息需要大量分析,卫星信号首先进入科学中心,然后通过由科学家编写的系统化产品生成脚本(Pipeline),最终产生可供分析和研究的数据。

现场还讲解了很多天文学的概念和知识,遗憾的是限于自己的知识水平有限,无法向大家做更完善的讲述了。

同时Gsegment也在招聘技术人员,欢迎有Python或Java编程经验的,想要致力于尖端工程科研方向的朋友请与他们取得联系。


奇遇花园与社群活动:猴子屁股与社群多样性

由奇遇花园的老板詹膑带来的话题,这个话题恰恰不像他自谦的是"广告",而从社群的概念这个角度入手,给大家讲述了社群理念,并从中建立联系、组织和活动的一些基本原则。

茫茫人海中,每个人都是独一无二的。社群多样性有助于解决社会问题。想对社群研究有深入浅出的理解,詹老师推荐《人类动物园》这本书。为什么会有新社群?旧有的社群在瓦解:班级、单位等,新的社群正在通过崭新的渠道产生,同时由于种种原因,这种讨论在学术范畴所进行的可能逐步减小。而将社群活动的理念推广,并做出有价值的活动,无疑是推动社会进步的一种良好方式。

我个人认为这个话题为在各种社区努力的组织者、参与者从概念上了解社群氛围与活动作出了很大贡献。同时奇遇花园在8月份还迎来了为众多社区提供服务的店庆开放月,这种对社区的贡献值得赞扬,欢迎大家给予更多的关注。


Nginx 脚本编程

由淘宝的 agentzh 大侠带来的Nginx脚本编程话题,由于其角度的新颖和前沿性,成为了本次活动的一个重量级话题。

Agentzh从去年9月开始研究Nginx源码,其中Nginx中高性能的实现也为阅读带来了很多障碍。遇到困难的地方就使用抄写的手法,白天抄写,在晚上一个人冥想。在研究和学习期间得出这样一个结论:Nginx远不是http server,这个软件的野心要远远超过大多数人对它的理解。

冥想和研究的最初结果就是独自开发的Nginx Echo模块,在Nginx的配置文件中实现了echo, sleep, time等功能。目前是为Nginx开发模块的开发者通常都会参考的一个典型范例。(此项目的文档之详细及深入,实在值得绝大多数的中国开源软件开发者学习)

Nginx 的核心代码大约 10W 行,就其来说,已经是很紧凑的规模了,相比之下,Apache的核心代码大约有 30W 行。而Agentzh所在的团队针对Nginx所写的的扩展的规模,都已经有3W行了。

Apache的多线程模型中,每个线程I/O阻塞,使用多线程拼并发。Nginx不支持多线程,而是使用多个进程来对应CPU 核数,从而提升在多核CPU下的性能。

而为Nginx开发子模块时需要注意的关键问题也是实现非阻塞I/O。因为实现高性能的前提,就是在处理的各个流程部分实现I/O非阻塞,如果仅仅是Nginx本身实现了I/O非阻塞,而处理的子模块却无法实现,那么整个性能的优化就变得没有意义了。

前面抛砖引玉的部分结束,接着从echo模块开始,agentzh将自己开发的众多Nginx模块逐个进行了介绍,通过在nginx.conf文件中应用这些模块,实际上就基本构成了单独使用Nginx来进行高效率非阻塞I/O服务器端开发的前提。我在这里也凭借记录将这些模块在这里简单罗列一下,具体的详情和范例可以参见 agentzh 的幻灯片:Slide1, Slide2

if statement的实现  - (ngx_dev_kit, set-misc-nginx-module)模块

array的实现 - (array-var-nginx-module)模块

子请求,一个请求中执行其它请求,可以提高服务器的并发度,提高平均相应时间,但是注意同时也增大了服务器的压力。子请求的具体应用实例:前端通过多个子请求的方式来异步获得处理结果,然后Nginx可以把结果合并并展示(比如合并成为JSON 用于AJAX)。

用C重写的Non-blocking memcached 模块 - (memc-nginx-module),可以实现在nginx.conf中直接用非阻塞方式操作memcached

用error_page 这个命令来实现等同于程序语言中try/catch的语句

memcached 连接池 - (ngx_http_upsteram_keepalive)  来实现连接池

使用非阻塞方式来访问 MySQL - (drizzle-nginx-module, rds-json-nginx-module)

这里有个问题,就是通常使用的libmysql是I/O阻塞的,如果在这个应用场景中使用这个库则无法发挥Nginx的高效率。在这里使用了Drizzle模块中的driver可以实现非阻塞IO访问mysql, sqlite3

rds-json-nginx-module模块负责将数据库查询的结果以json格式提供输出

使用Nginx来操作memcache及MySQL所带来的一些性能优势:

  • 单机几千QPS常见,千兆网卡跑满!
  • (个别应用场景) MEMCACHED 不使用连接池 2W QPS,使用后14W QPS
  • Qunar网站上面的一个Ajax应用案例实测,单机7k-8k QPS
  • 比较Java+Tomcat平台与单纯使用Nginx来实现的相关性能对比 - Java: 50~60 QPS;  Nginx: 700~800 QPS

Nginx直接接受表单提交的信息 - (ngx_form_input模块)

Nginx非阻塞直接操作Postgre数据库 - (ng_postgre模块), 得益于libpq API对于非阻塞的实现

srcache模块 - (srcache-nginx-module) 用来对页面和数据结果进行缓存(和前面提到的memc模块有区别,这里的sr表示SubRequest)

在Nginx配置文件中嵌入Lua脚本 - (lua-nginx-module)  很快Nginx的Lua子模块中就可以使用非阻塞IO的方式来调用Nginx的子请求了

现场讲述的一个Nginx-Lua应用实例:单纯用Nginx来实现数据库集群中用户Hash的计算

所提到的应用方式已经在淘宝量子统计以及Qunar中实际应用。

(Jul 10, 2010 更新:细节修改,感谢 agentzh 及 vipcalio 的指正)

本次活动在技术上涉及的方面很多,限于个人知识水平的限制,记录如在某些方面有什么偏差和不足,欢迎大家指正。想要了解活动详情以及本次活动其它话题的朋友,可以在此查看"荷风清韵"活动的所有话题情况。同时也请关注OpenParty网站对于此次活动的总结。

OpenParty "柳燕隙阳"

| No Comments
"柳燕隙阳"活动再度发挥去年小"QCon"的传统,请来了豆瓣的洪强宁大侠为大家讲解 Python于Web 2.0网站的应用 这个Python布道型话题。同时依旧云集了诸如:开源软件定制开发中的软件工程持续集成最后一公里Go语言介绍多乐趣介绍另一种旅行的可能----我的公益生活索引等等诸多精彩话题。简要记述下自己参与的两个话题: Python 在Web 2.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 与我们联系。

OpenParty "熙春暖意"

| No Comments
"熙春暖意"是农历新年后的第一期OpenParty活动。当天北京的天气虽不像活动的标题一样美丽----迎接我们的是一个寒意依旧,沙尘满天的日子,不过这不能阻挡众多热爱分享和交流的朋友的脚步。此次活动话题众多,还有一位前辈史无前例地贡献了一连三场话题,实在佩服。参与人数再度达到百人,现场到处都可以看到三两一组对技术/文化/其它各种各样话题进行交流的人,气场还是那么足。

还是简要叙述下自己参与的三个话题:

UI/UE设计讨论

这个是个现场讨论的话题,在话题组织者的带领下,大家针对UI/UE设计领域的问题各抒己见,自己在不少方面也有了更新的了解。限于讨论性话题的分散性,在这里仅简单记录下印象比较深刻的观点。

话题组织者引导大家做了这样一个用户体验试验:请一位用户扮作盲人,另一位用户帮助他读出鼠标所指处的文字来引导'盲人'用户完成某一个特定的任务。在这个看似简单的实验里,却能发现很多平常难以窥见的细节,如屏幕阅读会读出很多不需要的东西,从而给用户造成困惑等。事实上这个实验也是行业中的实际案例,在国外的某个网站项目中,有盲人用户致电客服,提出了很多实用性上的问题。其实不只是针对盲人,一个文字冗余、不直观、不对用户友好的界面设计,也是用户体验产品的直接障碍。
抓住用户目标性和随意性浏览的特点,达到用户和网站需求的平衡
通过调查、用户测试、观察、客观反馈、访问数据等方式进行用户的研究,"提升正面反馈,消除负面反馈"。
用户体验的度量。

现场参与的朋友也谈到了很多:

新版本上线前实施AB测试,引导 10%的用户到新版本设计。查看用户是否"尖叫"(即对新设计有尖锐的抵触),如果存在尖叫状况,新设计下线->进入Rollback设计流程。
谈到现今互联网领域的UI/UE问题,除了一些设计以及体验上的问题以外,还有一位朋友提出了"网站的服务意识差,用户的被服务意识也很差,如果更好地沟通以及交流反馈,在有些时候也是问题。用户积极参与的意识很重要。"

--------

把街机搬回家

@gokeeper 带来的,当天让无数技术男燃起的话题。讲述了如何把原汁原味的街机搬回家,要注意:使用的不是寻常的模拟器、PC摇杆,而是真正的街机硬件、街机框体和摇杆,当然还包括投入代币这种可勾起无数人美好回忆的体验。

其实如果想照葫芦画瓢实现一个也不是什么大问题,gokeeper的解决方案也说明了,山寨产品+淘宝+用心实现的激情基本上可以解决全部的问题。

自己简单记录下来的几个要点,供大家参阅:

  • 街机主板的游戏卡槽上,连接一款通过电脑来提供游戏的转接卡,价格不贵。
  • 山寨厂街机框体可定制,价格 1200 元左右,包括框体、29寸CRT、定制的摇杆和按钮。注意相较之下日本原厂的使用近十年的框体还要万余元,山寨厂的街机框体,价格便宜量又足。
  • 电视的扫描频率问题。显卡默认输出的刷新率过高,需通过更换驱动等特殊方式,降到15KHz左右
  • 淘宝上订购的精巧的投币装置 40元
  • 整套设备还具备传统街机难以想象的扩展能力,可以通过KAI与网上的玩家进行对战,还可以与Xbox 360进行连接,在庞大的街机框体上执行家用机游戏。

--------

网页正文提取初步

宋进亮博士带来的话题,整个话题其实也是自然语言识别领域的一小部分内容,不过宋博士的开场就先声明:"整个应用不限定特定行业,演讲中不用忽悠人的词",于是整个话题也就在轻松的环境下讲述了众多非常有料的内容。

现场演示的实例: 从Blog以及网站页面里面抓取正文

大体上看,目前的文字抓取方式,无外乎以下三种方法:
  • 通过正则表达式抓取:通过诸如 BeautifulSoup 这样的工具进行。
    • 方法简单,但是性能可能会有问题。与所抓取的目标网页依赖过大,一旦网页格式发生变动,就需要对抓取的方式进行一些更新。出于偷懒的原则,如果程序能够自动识别变化,那样才比较完美。
  • 标签特征,本话题所述方法即属于此类别
  • 基于视觉的处理,跨越标签领域,有一些的技术门槛,此话题暂不涉及。
    • (在2009年2月的OpenParty"有狐"活动中,有位来自雅虎中国的朋友分享了一篇在服务器端使用Firefox进行网页抓取和内容识别工作的话题,实际上就是基于视觉的处理实现)

基于文本密度算法的实现,是上述的标签特征类别的方法。
基本公式:纯文本字符数/HTML源码字符数

原始方法
  1. 记录HTML标签起始位置
  2. 统计HTML源码首尾包括的字符数和其中的文本字符数

使用Python的matplotlib对统计的结果进行图示查看,从直方图中直观地可以发现,网页中有一部分的文本密度明显高于其它部分。在整个过程中还可以使用Tidy软件包来清理HTML代码,实例中演示的Sina页面,使用Tidy进行清理后进行识别的效果要好很多。

从实际状况出发,对算法进行小调整:从以前的文本前后判断,变成标签前后判断

优点:数据的整体性更好。
缺点:数据的分布情况不够直观,有干扰。可以适当地加入一些值的过滤方式来实现

整个实现方法所使用的代码量:加入注释以及模式过滤的原脚本大约有200多行Python代码,如果是根据网上论文的原始实现,大约100多行Python代码

所参考的论文中描述的人工智能文本识别方法:
  • 使用神经网络模型
    • 可使用FANN库,有相应的Python封装
  • 采用原始的一刀切方式,会有丢行的现象产生。    
  • 个别行的密度会比较小。

神经网络模型的算法,可以采用机器进行学习的方式进行。不过要注意,学习所采用的原料和实际使用中所针对的目标相似度的关系也很重要。学习的量较少,可能会达不到完成任务所需的精度;而学习量过大,出现"过学习"的状况,也可能会出现过度吻合,从而导致对目标数据的变化非常敏感。

其它智能方法

针对HTML标签序列
  • 统计方法
  • 贝叶斯
  • 马尔可夫
  • CRF

不过为了达成我们的目标,找到最窍门的地方,才是最关键的。比如在很多应用场合下,看似粗旷的'一刀切'方法可能效果也非常不错。

这里介绍的自然语言识别只是一个具体的分支应用,而这个大领域还包括很多其他的内容,如逐渐变热的分词技术,也是值得关注的。

总的来说,自然语言识别技术需要根据应用领域、应用环境来提供相应的解决方案。没有银弹!

我一知半解的记录肯定略有偏差,想要详细了解此内容的朋友(如查阅上文提到的论文等内容),欢迎访问宋博士"提取HTML文档正文"的页面以及他的Blog访问详情。 

------

依旧分身乏术,本期活动还有很多其它大牛带来的精彩话题,只好期待其它参与朋友的记录了。现在每次在活动现场的事情越来越丰富:与各方朋友交流信息、控制话题时间安排、拍照、结识新朋友...... 诸多事情精力有限,再加上 OpenParty 的话题越来越多元化,自己对各个话题基于简单了解的记录,难免粗浅以至问题多多,还望大家多多包涵(了解细节请多参考来自演讲者的第一手资料)。我只希望自己这些简单的记录是引导大家进入某个话题或领域的一小步,就好像 OpenParty 帮助大家结识、了解和交流一样,我们没有奢望这种简单的事情能够立即带来什么翻天覆地的变化,但是这些却打开了无数的门,孕育了无数种可能。这就是最让我们兴奋的事情。


OpenParty "聚萤"

| 1 Comment
2010年开场的OP活动依然精彩,此次活动吸引了近百名朋友前来参加。此篇文章仍像以往一样,简要描述下在本次活动中,自己聆听的几个话题。

首先是ThoughtWorks咨询师钱钱带来的"敏捷需求分析"话题。此话题分量很足,在此简要呈现下我的零星记录,作为个人对整个话题思路(不完整)的简单梳理。

敏捷软件需求

软件需求遇到的最大问题是什么?基本上都是沟通和交流的相关问题
需求从哪里来:客户(市场)、用户
我们需要确定的是:谁是用户?当前业务流程情况?业务目标是什么?
项目需求确定中遇到的最大问题是什么?需求文档驱动的过程不堪重负


ThoughtWorks如何进行需求分析

项目启动:QuickStart
    概要的需求分析,初步估算规模
不是不需要文档和需求分析:但是也不期望一次弄清楚所有需求。在项目启动阶段,先实行粗粒度的计划,暂时不考虑远期偏向细节的东西。
粒度最好可以控制到,单一发布中,每两周一个迭代。
这期间最重要的,是了解业务、分解业务。这在各个领域、各个公司、各种情况下都不同,没有规则可以遵循。


项目启动阶段(概要分析阶段)

产出:
    1 愿景和动机、驱动力,业务价值
    2 需求列表
    3 可视化项目原型

同时评估项目风险、成本,提供可视的、便于评估的文档。
通过需求分析师、客户面对面的信息交流,把需求、目标具体化,最终创建大家一致、认可的目标和分析。可以通过一些具体的东西来实现,比如财务流程图,业务流程图,功能分解图。


在文档不堪重负的情况下,如何表述需求?使用 User Story (用户故事)卡片


为什么用卡片:单一的需求文档只是信息的聚合,而分解为可以量化和检索的知识,更加便于我们评估和分析。
每个 User Story的基本定义为:一小块对客户有价值的功能。
这个原则是如何产生的呢,通过角色流程( Role-Process)的方法,绘制出流程图, User Story是该图上基本的元素

Story的3C原则:
  • Card 需求存在
  • Conversation 一段对话和交流
  • Confirmation 用户需求的确定性

如何分辨 User Story的质量呢?好的User Story遵循INVEST原则

  • Independent 可以独立开发
  • Negotiable 可以协商
  • Valuable 有价值
  • Estimate 大小可评估
  • Sized appropriately 合适的粒度 (1~3天为最合适的粒度)
  • Testable 可测试性


需求可以分解为:产品、模块、特性、用户故事、开发任务五种不同的的类型,逐步细化。

举例:
产品:电子商务系统
模块:电子商务模块
特性:购物车、在线支付
用户故事:添加到购物车,查看购物车
开发任务:更改数目、计算总额
任务分解后,先排出优先级,对技术可行性作出验证。


UserStory的生命周期:使用Mingle管理,建立 StoryWall
可视化管理:
  • 墙上贴卡片
  • 直观
  • 增强了管理透明度

总的来说,敏捷=开发实践+项目管理实践

简单谈两句我个人对于敏捷的非常粗浅的理解:
    这其实更是一种管理技巧与方法,而不是具体的技术问题。如果仅从一个(懒惰的)程序员自身的角度出发,那么整套东西基本是很多看起来奇怪、有些还打破了日常工作习惯的行为准则的堆砌。但如果你有幸能够参与多个角色(如同时作为产品的销售、开发、决策人员其中的数职),来从一个更高的高度来审视并经历过一个或数个软件项目的时候,就会发现这些行为准则完全都是为了一个清晰的目标:为了按时、高质量地完成软件项目。同时竭力避免软件项目各个过程中各种由于人员、交流以及其它问题所造成的不利影响。

结尾的时候钱钱推荐了一本书:User Stories Applied ---- TW敏捷需求分析师必读,欢迎感兴趣的朋友参阅。

----

Mozilla在会场展示了火狐中文版本的一个功能,"火狐魔镜"。简单的说,就是可以把任何网站页面上单独的一部分取出作为Widget放在桌面的功能。整个演示很眩。

我个人认为整个话题最好的地方在于异常良好的互动性。整个话题是一次互动的交流、这个产品的走向、发展以及未来开源的情况,在场观众都得到了即时的了解。同时通过和在场观众的互动,Mozilla方面也更好的获得了开发需求的反馈,用户也可以窥见未来产品的方向。我认为这种形式非常值得借鉴,是参与开源社区产品的公司,与开源产品的用户一种非常好的交互模式。

----

接下来就是超群带来的MongoDB介绍。通过超群抛砖引玉的介绍,让听众对于MongoDB的特性有了比较好的了解。

具体的信息可以参考当时演讲的slides: MongoDB in Action 很适合入门,同时MongoDB 项目的 Tutorial 也值得推荐。

我再次简要描述一下大家普遍关注的几个方面:

性能Benchmark
    可以参考这个页面,http://www.mongodb.org/display/DOCS/Benchmarks

比较值得记录的如下:
  • 不支持JOIN
  • 不支持事务
  • 支持其它大多数常用SQL功能
提供了三种Replication的方式
  • 主从
  • pair形式
  • 有限的主-主
便捷、自动Sharding (这点很Cool!)

GridFS 内建的文件系统
两个应用:
  • nginx模块,可以直接读取GridFS
  • fuse模块 让*nix操作系统可直接挂载 GridFS
提问时间,我根据自己最近对kv的一些肤浅了解提了如下问题:Tokyo Cabinet 最近的版本增添了table存储功能,也已经跨越了kv的阶段,与TC的table相比,MongoDB的优势在哪里?
回答:首先,tc 的table诞生比较晚,相较其它部分,有不够成熟的风险;tc的库还是单文件库,倘若要分库,没有MongoDB的sharding 方便。

不过MongoDB占用磁盘过多,我个人觉得如果磁盘IO可以提高的话,性能或许还有提高的可能。超群目前的应用情况是,几百万条记录,占用磁盘空间几百兆。

由于自己现在在做Django,特别关心了下MongoDB和Django的结合,有如下项目可供感兴趣的朋友参考:

两个Django结合MongoDB应用的例子

DjanMon
Using PyMongo

django-mumblr
Mumblr is a basic Django tumblelog application that uses MongoDB.
Using MongoEngine

另外这里还有一个非官方的MongoDB Django Backend:

Django MongoDB Backend

总的来说, MongoDB在我看来,是用来在使用基本SQL功能又想要获得类似KV存储数据库性能的领域,同时又希望尽可能降低转换成本的合适选择。感兴趣的朋友不妨尝试看看。

----

一月份的活动也是我加入OpenParty核心团队后的首次活动,可以向大家透露的一点是,现在OpenParty团队正在努力在各个方面进行改进,力争为大家创造更好的交流、学习环境。感兴趣的朋友也可关注OpenParty 官方Blog,了解最新的详细情况。大家一直以来的支持,是活动组织者最大的动力。

OpenParty "岩上"

| No Comments
12月份的活动聚集了来自Apple、设计、架构、出版等行业的大牛们前来分享话题,所以来到现场参与活动的人数达到了 OpenParty 活动的新高峰,100多人几乎坐满了宽敞的ThoughtWorks办公室。

恰逢 OpenParty 成立两周年,现场还播放了温馨的回忆片花,感谢长期以来大家对于OpenParty的热爱与支持。

重点讲述一下资深的Apple专家 @hengdm 带来的重量级话题,iPhone软件开发设计流程。(现场投票58票,为 OpenParty 活动历史以来最高,可见此话题多么受欢迎)

---

"用设计Windows软件的心态去做OS X应用软件,下场必然失败;
用设计Windows软件的心态去做iPhone应用软件,下场必然失败"

设计师以及设计团队的灵光闪现,固然可以促成一款好软件的诞生,但是这种灵光闪现却可能带来更多无法管控的内容,影响软件的整体质量和体验。所以,苹果公司在软件产品设计流程的管理中,严格控制了规范流程,尽力避免软件受到这些灵光闪现的影响,而从一个理性、量化、可以阐述的角度,来规范软件的用户体验和质量。

如果用一种苹果独有的体验标准来衡量软件的体验和质量的话,那就是"让用户感觉自己使用这个软件的动作都变得十分优雅"。


总体上说,iPhone User Interface Design分为四个部分

  • 平台的范例:了解用户的使用情景和使用习惯
  • 软件产品定义:明确软件的功能目标
  • 设计及原型
  • 对软件的打磨与改进

Coding 的部分,所耗费的时间在整个的设计流程中,绝对不是最多的。通常夹杂在第三步和第四步之间。


"我们造就工具,工具也造就我们"

作为产品设计人员,一个必要的宗旨是做有水准的产品,对用户负责。用户从来就不是你所想象的那样,会因为"素质低"而使用并习惯设计不好的产品。现实的情况是,如果产品的设计人员足够认真地进行产品的设计和打磨,那么就会有足够多认真的用户,来一起使用并且认同一款产品,从而形成正常的良性循环。端木非常不赞同国内脑残产品的做法,对用户的不负责,就是对自己的不负责。

iPhone的革命性创新,对于软件以及交互式体验设计提出了新的需求。内置电子罗盘、GPS、Internet浏览器等各种功能和设备的结合,为产品设计者带来了更多的用户信息,而如何应用、认知这些信息从而产生有价值的产品及用户体验,是关键所在。

从操作体验上进行阐述:软件的操作界面,从1970年至今经历了打孔纸带→终端界面→图形界面这三个大的演变,总体的发展历程来看,用户的行为,离直接操作数据越来越接近,操作方式也逐渐由抽象变得更加直接。iPhone更是第一次给用户以"直接用手来触控数据"的体验,而非像传统的操作方式还需要一个中介媒介(输入设备)来进行,这个技术上的不大的变化,带来了感知体验上巨大的提升。

从一些具体的设计细节来看iPhone给用户界面体验带来的变化:

  • 鼠标点击,所影响的尺寸为1x1px
  • 手指触摸,所影响的尺寸为22x22-55x55px
  • 滚动条在以往的手持移动设备中(如Windows Mobile),还存在。但是在苹果的概念中,滚动条的设计与用户直接的体验设计向背离。用户可以用手指直接滚动屏幕,与常识性的概念完全一致。同时滚动条的样式还存在,但是仅仅作为一个信息指示用的工具(提示页面位置)的工具而存在了。
  • 同理,下拉菜单也变成了转轮,完全摒弃了在大屏幕系统上常见的各种GUI控件先入为主的概念,而完全从用户操作的角度考虑,来达到用户可以直接操作并反馈的效果,而不是纠结与细小的,难以控制的组件中。

可以说,抛弃以往由输入设备、遗留GUI设计等原因的操作定式,而将对于用户的操作变得更直接以后,带给用户的提升和震撼,是可以想象的。

不过请注意,上面讲述的都是将操作界面变得更直接更加易于使用。但是这种情况并不适用于100%的应用程序。合理应用间接操作的设计,也可以达到良好的效果。那么什么样的应用需要并不那么直接的,也就是刻意被复杂化的操作呢?举个例子,比如在游戏中,如果玩家可以通过手指快速点击游戏中的目标,那么游戏就变得毫无挑战性了,所以游戏中,将操作间接处理,让玩家需要左右摇摆位置变换目标,再按发射按钮开火,这样以来,间接的操作就给游戏带来了挑战性,组成了游戏乐趣的核心。由此可见,针对不同的应用,提供不同的设计思想和操作模式,是十分重要的。


明确软件设计的目的:不是功能的大集合,而是明确要解决一个怎样的困难,为用户提供一个具体的解决方案。

界定应用程序的三大基本要素:这个应用程序与其它应用程序的不同之处/需要解决的问题/所面向的用户群

Context/使用情景:不同的用户所需要的使用界面的差异。列举了商务人士/消防员这两个不同的职业,倘若使用iPhone应用程序的话,对于应用程序界面感受的具体需求会是怎么样的。

通过iPhoto软件桌面版和iPhone版本的设计区别来重点讲述,设计软件中基本要素的体现:

iPhoto桌面版作为一款功能全面的软件,其基本的功能介绍有几十项之多,基本覆盖了一个通常用户对于一个好的相片管理软件的需求。其功能可以主要概括为以下三个项目,组织照片、编辑照片、分享照片。

那么,iPhone的版本,是否也应该照搬这个设计呢?答案是不,有如下的几个原因:

  • 首先,单单就界面元素的设计来说,很多在桌面版本中应用得十分出色的界面元素,如操作面板、照片显示风格等,都不适用于直接搬入iPhone版本中,画面太小,会导致操作起来不友善。
  • 从功能上来说,用户时候需要在移动中,从手持设备上认真的组织自己的照片?是否需要在路上用手指细细地编辑自己的照片呢?答案基本上是否定的。不过,分享照片这个功能,确实是iPhone版本可以大放异彩的地方,所有人的都会有分享照片的场合,而一个随身携带的设备,恰恰是这个功能应用最好的载体和实现者。

思考到这里,这个软件就有了一个明确的设计方向。iPhone版本的iPhoto软件,应该有清晰、流畅的浏览体验,并且可以让用户迅速和别人分享该照片。

这就体现了iPhone软件设计的一个很重要的宗旨,选取最少的功能,简单就是美。但注意这一切是在了解用户需求,并集中精力去解决用户所遇到的问题的基础之上。而与之理念相反的、功能复杂、冗长的产品,绝称不上是个好产品。

整个设计中,还包含了无数的细节,而高的价值,往往都体现在这些细节中。通常来讲,AppStore中的优秀软件,都用了大约60%-70%的时间来进行产品的设计和定义,实际的编码时间所占的比例,要远远少于通常的软件项目。这就意味着,iPhone平台上的优秀软件在用户交互以及满足用户需求的方面做的更好。从而让整个平台以及平台生态系统的易用性体验,达到一个新的高度。而苹果这些设计理念,都注入到了 iPhone Human Interface Guideline 这部文档中,此文档堪称iPhone开发人员的圣经,不单单介绍了iPhone开发中这些元素、以及针对用户体验相关的要求,更是把与此相关的来龙去脉全部呈现并细致讲解,是苹果无数理念的结晶。


提供优秀操作特性的基础元素:
  • 多点触摸
  • 虚拟键盘,可根据应用需求进行定制,摆脱了实体键盘在体积以及直观程度上的困扰
  • 可隐藏的控件
  • 减少用户输入操作,自动提示和补全,提供默认选择

根据掌上设备的特点,捕捉用户的行为习惯,为用户提供最好的体验。端木在讲述时举了这样一个例子:用户在早上的某个时段、特定位置经常查看一些内容;晚上在某个位置特定时段查看一些其它内容,在几天之后,软件自动识别出相应的规律,并自动为用户展现相应的内容。用户会觉得软件的人性化程度非常高,从而对产品有着更强的投入感。所以,利用好获得的用户信息资源,可以有很好的成效。

具体到控件设计应用的一些指示:
  • 工具栏加材质,图标一定要保持简单
  • 可点击的控件都带有触感
  • 导航
    • 指示层级位置,直观
    • 显示目标,回退按钮名称为上一级内容名称
    • 使用标准控件
  • 列表
    • 使用图标,便于用户记忆
    • 两种不同的展开箭头:进入新界面和不进入新界面的
  • Tab的使用可以减少层级结构,有效组织内容,可以参考iPod应用程序下面的Tab栏

苹果的设计美学体现在很多细小的地方,一个非常明显的例子就是联系人管理中的联系人详细信息页面:这个页面设计中的行间距、颜色搭配、版式等等都是苹果美学元素的最佳体现。端木限于时间关系没有过多描述,简单的说,行间距中文字实际上并不是居中的,而是下方比上方空白多出一个像素,原因是这样的视觉效果给人以更加稳妥的感觉。


针对不同应用程序类型,使用图形界面元素所需要注意的技巧:
iPhoneDesign.png
严肃类工具:直观的界面,便于操作,使用标准化的控件
有趣类的工具:可以加入些个性活泼的因素
有趣的娱乐软件(如游戏):不能使用标准控件,在界面上提供足够的新意和感觉
严肃的娱乐软件(如iTunes商店):可以适当使用一部分图形来提高体验认知。可以用动画来帮助用户理解行为,接受反馈


创造实用的小工具:最受欢迎的工具都是单一工具,只做一件事,数据不要太复杂。

讲述设计过程中的纸上原型设计时,讲到了Things团队精彩的设计过程。而细致的设计流程通常需时一个月,这是非常重要的过程。

界面上的打磨与改进:加入软件自动提示、根据用户行为提供足够反馈等细节功能的提升。但注意要避免:
  • 加入动画不意味着全部界面元素都在动
  • 设置有意义的动画
  • 各种视觉效果要以不影响用户的主要任务为前提


总结:
  • 产品给予用户直接的操作体验,在可操作元素上进行视觉反馈。
  • UE>UI
  • 最好产品的元素定义,经过仔细的设计流程,最终生产、发布软件产品,如此才能保证有一个良好用户体验的产品设计


总体来说,这个话题从主旨上强化了很多我在 Getting Real 里面学习到的理念,又经历了一个打破条条框框,从新的方向开拓思维的旅程。也感受到了苹果的团队,对于细节已经不再是一种要求,而几乎就是一种痴迷,绝对的痴迷。这种乔布斯气质领导下,很难出现质量不高的产品。当然,细节只是关键环节的其中一环:正确的方向和思路,完善而严谨的细节设计,良好的用户体验,这些要素缺一不可,而成功地把握它们,并在其中找到绝对的平衡,才是苹果的成功之道。端木恒的演讲非常精彩和有感染力,slide的设计更是出色。实为一次绝佳的收获。

接下来又收听了西乔带来的"理性的设计"话题,由于时间和精力有限,无法做非常细致的呈现了,感兴趣的朋友可以移步这里查看现场视频录像

OpenParty "秋色连波"

| 1 Comment
阔别了两个月的 OpenParty 于十月的最后一天再次到来,此次非技术类话题占了主力,我自己也贡献了长假期间独自柬埔寨背包旅游的话题。像以往一样还是谈谈自己经历的内容。

首先是 MediaZero 带来的,关于中国纪录片发展现状的话题

"一个国家没有纪录片,就好像一个家庭没有相册" -- MediaZero 的这句口号很有力

实际上较早前的一次 OpenParty 就在一位纪录片爱好者朋友口中得知了MediaZero ,了解到这是一个经常举办纪录片沙龙的地方。觉得很有意思,通常自己看电影比较多,纪录片也看过不少,但是没有特别去留意纪录片这种类型,自己心里还是都将其作为电影来看待。所以看到有人对一种特殊的形式充满了热忱,还是很好奇的。

纪录片的生态环境:在中国,制作和播放成为一体(CCAV,同时具备政治宣传作用),这就造成了没有一个生态体系可以保障纪录片可以作为一种有市场的产品持续运作。国外的情况是纪录片的制作和播放分离,更有成熟的院线保证放映渠道,形成了一个生态链  ,保证了市场。

MediaZero 只有8个人,在行业里坚持做了9年,也只是勉强可以生存下来。通常纪录片很难卖出播放权,一般来说央视来买就算是大单了,很多地方电视台更是用白菜价来收购,为了生存往往也只能这样卖。中国的大陆桥公司引进了很多批量生产的纪录片,如Discovery, National Geography,而 MediaZero 认为自己首要的任务是向世界展示优秀的中国纪录片,同时将世界上的优秀纪录片带入中国。

实际经验:纪录片在中国走音像制品的道路会很惨。若干年前一个成绩十分不错的纪录片被乐观地制成大量音像制品,但是却只能在随后的若干年中被当成赠品送出......

在传播渠道非常狭窄的情况下,开始举办纪录片沙龙,地点就在 MediaZero 公司,迄今已经举办超过700场,在这个领域有着非常大的影响。

对这个事业的追求,整个团队倾注了很多理想。在发展过程中所遇到的困难主要是想要发行却没有相应的市场、渠道狭窄、同时纪录片本身的质量也会成为一个问题。从片源的质量着手,于是MediaZero又办起了纪录片工作坊,做相关纪录片从业人员的咨询业务,同时请来业内资深人士如贾樟柯等来授课(贾樟柯获奖之前就来讲过课,据悉课程十分精彩,而讲稿可以在她们的网站上面下载)。对业内人士的培训,可以提高国内纪录片的质量,从长远的角度上来看,也是在改变一个行业的生存土壤。

介绍中来自MediaZero 的 Coraline推荐了三个纪录片

神秘球 - 一个男子跨越国界追求自己最想从事的事情(缅甸的一种竞技项目)从而发现自己的故事
输家赢家 - 中国公司收购德国工厂,并将其整个迁出德国的故事。中西文化的强烈对比。
(以上两个片,据Coraline本人讲,是那种"看完就要咬桌子"般精彩的纪录片,强烈推荐)
Mad for English (看了一部分片段,很精彩,手法漂亮的纪录片,有着和一般电影一样甚至超越一般电影的精彩程度)

12月MediaZero倾注极大心血的国际纪录片论坛(筹备期间有着很多困难:资金不足、筹办资格需要挂靠上级单位,广电总急发话......),是一次该领域的盛事,很多资深人士都会到场,同时也有许多精彩的纪录片会届时放映,欢迎大家关注。纪录片赏片沙龙每周四晚7点举办,地点在MediaZero办公室。

----------

09年9月27日-10月8日我在柬埔寨独自背包旅行,此次的OpenParty上我针对自己的所见所闻、以及一些总结出来的背包客感受,进行了一个"高棉文化背包客之旅"的演讲。

在做这个话题之初,我首先考虑的是分享旅行经验的意义。旅行的宝贵经历和经验,是旅行者自身的、永恒的。如果你想让别人也一同分享你旅途中的体验,那就应该精心提供尽可能多的东西来帮助受众们了解和体会。所以单单照片是不够的。分享给别人的东西,应该首先是具备尽可能完整信息的介绍,你需要有简单的线索和结构,并且一定要确保提供给别人足够的信息量,又要保证整个架构非常清晰。从这次我准备和进行分享的过程来看,我觉得并不容易。

一位台湾朋友的柬埔寨之旅的slideshow(链接)给了我非常深刻的印象。其中对于线索和照片的处理,让人不用聆听他现场的讲解,就能非常完美地回归他的旅程。我虽然参考了他的制作,但是还远远没有到他那样的高度(OP上我用的slide主要是为了现场讲解,日后我会对这个幻灯片进行进一步的修改,以更适合在网上共享,目前的版本可以在这里查看)。

总的来说,这个足够吸引人的话题,现场的反响还是不错的,没有白费一个星期的熬夜准备。具体的内容我就不在这里详述了,我会陆续把正在撰写的游记发布到cnborn.net/blog,欢迎大家关注。不过我想简单说一个问题,就是在人们听到你要去一个遥远的国家独自旅行的时候,有无数的人都会问你:"怎么想要去哪里的?听说......不危险么......" 等等等等的话,其实我觉得回答这样的问题是最简单的:困难无数,但你要明确的,是在自己心里,是否有一个清晰的声音和愿望在指引你,而事实却在很多时候比想象的要简单,借用Lonely Planet的老板Tony Wheeler的一句话:"只要你迈出了第一步,恭喜你,你就已经成功了一半!"

很巧的是,去年在此分享柬埔寨、越南、老挝三国旅行的前辈朋友也在场,给我的介绍还做了一些补充,十分感谢。事实上正是去年12月的OpenParty的这个话题激发了我对这此旅行的计划,我用了9个月的时间把它变成了现实。同时我也希望有更多的朋友能被这种传递下来的激情所感染,慢慢去走得更远、看得更远。这种精神上的传播、分享和启迪,才是OpenParty最大的价值所在。

在演讲交流以及后来和 @diamondtin 的交流中,也发现了自己作为初级背包客还欠缺的一些经验:原来在潮湿的地区,除了需要用塑料袋包相机外,还需要干燥剂,我当时却什么都没有用,导致单反不仅仅在旅行期间不好用,还差点废掉。需要学习的东西太多了。

这里旅行的照片,我已经开始陆续在几个地方上传,感兴趣的朋友请查看 我的Footbig我的豆瓣相册, 以及未来这里发表的游记文章。不同网站相册中的图片基本上不重复,欢迎观赏。

----------

Peter的话题"社区商业模式"我很感兴趣,是一个以社区模式为导向的创业指南谈。可惜时间的原因,只听了很少的一部分。有一些观点值得简要记录一下。

"看一个公司的战略,可以简单地从它网站的栏目看出来。一个社区导向的公司,必然会有Communities这样一栏"

"在芬兰有很多1-2个人的小公司,而这些公司的基本生存状态是由几个公司合作,组成项目团队给像Nokia这样的大公司做项目。"

"创业的顾问团队非常重要,有重量级人物的话,对外可以显著提升整个团队的给别人的印象及信用程度,对内也可以汲取到资深人士的一些宝贵经验。所以,不要吝惜创业时的那些share。"

"不要去做大而全的产品,而要让自己的产品最大化地贴近细分市场。"

坚持生存下去就是胜利。

另外,Peter是每年度OSCamp(OpenSourceCamp)的组织者,今年的OSCamp定于11月28日在北京召开,形式和OpenParty非常近似,欢迎各位同道前来参加。