January 2010 Archives

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,了解最新的详细情况。大家一直以来的支持,是活动组织者最大的动力。

柬埔寨背包记四:风雨过后

| 1 Comment
我于09年9月27日-10月8日在柬埔寨独自背包旅行,其间的经历和收获数不胜数。相关的经历我曾在 Beijing Open Party 上有过一次交流分享,现在把旅行途中以及后来的一些记录陆续发布到这里,请感兴趣的朋友关注这里的更新。要查看本系列更多文章,欢迎点击页面右侧的Cambodia标签。除正文中的照片以外,还可以在我的Footbig以及我的豆瓣相册中欣赏因篇幅原因未能在文章中出现的照片上一次交流分享的slide可以在我的slideshare页面看到。

早晨起床向窗外一看,果然天气在转好。翻出相机准备开始拍照时,自己却一下子傻了眼----单反相机里一层水雾,什么也看不清。

昨天下了一天大雨,自己觉得单反相机没有那么娇气,就没有采取防水措施,昨天的糟糕天气就这么坚持下来了。实际上下午雨很大,单反在雨衣里有些水雾,我就直接把相机挂在雨衣外面了。可完全没想到第二天会有这么大的问题(现在回想起来,这一晚相机就放在潮气十足的小摄影包里面,这也是个绝对错误的做法)。这一下慌了神,拿下镜头看了看,反光板看不到水汽,似乎在镜头内部。甩了甩感觉情况好些,于是想就在出发的路上吹吹风,或许就好了。于是怀着忐忑不安的心情出发,可路走到一半我就彻底高兴不起来了,镜头水雾的问题通过吹风解决了,但相机却怎么都无法开机了。

被打击到极点。想象一下一个千里迢迢来游玩却没有相机的人该是什么样的心情吧。当时的感觉真是糟透了,脑子里一直想的就是自己应该怎么办。

但已经出发,没有办法,就这样开始了吴哥大圈(Grand Tour)的旅程。第一站去了昨天去过的巴戎寺,因为在看自己打印出来的攻略时,发现其中被攻略中的作者遗漏的巴戎寺第三层我也没有找到,自己决定不要像作者那样留下遗憾,赶快去补上。由于雨势渐缓的关系,游客比昨天多了很多。

身处文化奇迹之中而自己手里却没有相机实在是一件异常痛苦的事情,虽然可以用自己随身携带的一次性相机来拍照,但还是弥补不了这个遗憾。

bayon_dc.jpg辛苦爬上了巴戎寺的二层平台,却没有找到通往三层的入口。向一个导游打听,他指给我一个台阶,说上层因为维修原因关闭了,近一段时间都不能参观。遗憾。思绪烦乱的我去看了日本人修复巴戎寺图书馆的过程,意外地发现整个工程让人惊叹。几千块石头组成的小型建筑,需要将整个建筑完全拆开,每块石头依次编号,重新组合。那编号绘制的图纸看起来震撼人心,非常严谨。(此方法已是吴哥寺庙修复的一种通用工程方法)

从巴戎寺出来就去看周边景点,癫王平台和战象平台。这时天又开始阴下来,心情还是不好。走上平台有小孩子热情地为你指路,之前看过攻略,这是一种后收费的导游,如果你不需要,就礼貌地告诉他们不需要导游就可以了,这些孩子都很友好,也不会死缠着你。

lk_e_platform.jpg去过这两个平台,就去看了巴芳寺,巴芳前面的长廊非常漂亮,很有气魄,径直走在上面有种难以名状的神秘感。寺本身很大,遗憾的是通过长廊走到寺前,又是一个写着"维护,禁止入内"的招牌,于是只能折返。

这时昨天晚上买的凉鞋出了问题,开始感觉非常磨脚。由于自己没有经验,尺寸买小了导致两脚磨得非常厉害。混着满地的泥土和雨水,每走一步都是一阵生疼。配合上午这困境,自己一阵苦笑。一步一挨地走到皇宫,简单看了一下,照了一张照片就往回走,实在是没有办法。

royalpalace_angkor.jpg忍着脚上的痛楚,走到琵琶南。雨一直在淅淅沥沥地下,没有相机,望着眼前神秘的景色,心里觉得别扭极了。

tep_pranam.jpg心里下了狠心要把这问题解决才行,于是和小司机商量,他说离住处不远有个相机行,应该可以修。于是中午毅然返城。

整个暹粒今天的天气已经比昨天好了很多,雨量大大减小,但是城里的水却更多了。这是由于城市处于较低的地势。一路上简直就是一片汪洋,TukTuk苦挨了一路,终于也在离住处不远的地方熄火了。

步行前往小司机说的那家照片行,被告知:没法修单反。不过在拿相机给店员看的时候,发现相机又可以开机了,真是意外惊喜。但感觉还是很不稳定,还得想办法。新买一个相机感觉不是很划算,于是问店员有没有相机出租。惊喜得是居然有,说着拿出三个卡片机来让我挑选,一眼就相中一台松下的小机器。于是以$10一天的价格租下,解决了最让我头疼的大问题。

为了庆祝自己克服一个巨大的难关,饱吃了一顿泰餐。中午稍加休息,下午出发继续游览吴哥大圈。这时雨完全停了,远处的天气慢慢露出了一点蓝色。气候凉爽,自己也终于完全放松下来。就在这样的一种气氛中,来到了比粒寺(Pre Rup)。

这是吴哥区域里我最喜欢的寺庙。这座砖红色的寺庙醉人的氛围,让我在下午的那个时刻,第一次真正地把脑子里的各种计划清空,而安静地抚摸着近十个世纪以前的雕塑,眺望远处的田野,静静地体会这难得的宁静以及异乡的壮美。昨天风雨中谦卑的祈祷者,终于体会了大自然的报偿。

prerup_big.jpg比粒寺从结构上来说很简单。但非常值得一提的,是其台阶完全不是变态的吴哥风格,非常好走。而 Pre Rup 的名称源自"变形", 据考证称这里可能是国王升天之前的最后一步----火化场。

游览完比粒寺,驱车前往北边的东梅奔寺。这座寺庙总体来说,就是小了一号的比粒寺,因此给我的独特印象不多。

接着继续向北前往Ta Som。这是座庞大的寺庙,里面人不多。到处顷塌的大石倒是让我感觉很像塔布隆寺。

tasom_large.jpg转到最后的城门,看到一堆孩子在玩水。原来是土地的地方现在都变成了河(昨天雨太大了)。不过自己很纳闷,好像没发现小司机说的大树?看到里面有几棵树也挺大的,似乎没有什么特别的,就没怎么放在心上。
回来整理照片时才发现,Ta Som 有一棵完全和石雕长在一起的树,奇怪自己竟然没发现这重要的风景。赶快翻照片,发现原来我所站的门就是那棵树,而要拍到它,要跨入河里然后回头才行!还好自己照了张那棵树的侧影,稍稍弥补了下这个遗憾。

tasom_tree.jpg从Ta Som 出来向西,又遇到了由北向南急流的大水。水有多大呢:路上有一座桥,但是现在只能见到一半栏杆了,大水早就已经把桥淹没了。

TukTuk走不了这路了,看了下水淹路段大约400米左右,淌水步行+推车还是挺辛苦的。不过前面有个拖车在做拉活生意,把TukTuk放在拖车上,连人带车过大河,另外还带上了带着摩托车困在桥栏杆上的两个女孩。到地方后付钱 $1。我还以为是我和司机两个人的,没想到是全车4个人的价钱。那两个女孩为此还感谢我,于是就这样本来想节省时间还便宜买了个人情。

下一站龙蹯水池。入口处同样积水,有车可以付费运你过去。我一看积水只有十几米的样子,再加上刚才也趟过半天水了,就直接淌水过去了。(脚上上午被磨破的地方还露着,中午时换了双不磨脚的鞋。但已经顾不上其它的卫生要求了)

龙蹯就是中央有雕塑的吴哥水池,是为圣剑寺供水用的。有趣的是书上说水池已经几百年没有水了,可是到那里一看,大池里水不少,小池也坑坑洼洼地积了些水。看来这次的雨还真是不一般呢。

neak_pean.JPG在龙幡水池的路上,有地雷受害者乐团在演奏,他们都是因地雷致残的人,靠音乐来生活。柬埔寨一直是世界上地雷危害最为严重的国家之一,七十~八十年代遍布全国的地雷给民众带来了无穷的灾难。他们的音乐很悦耳很好听,捐了一点儿钱 。

接着前往大吴哥区域最大的寺庙----圣剑寺。一进去就发现这真是座庞大的建筑,屋子都是少有的密集型,十分壮观。但是考虑到需要到巴肯山看落日,时间已经不够多,只好把详细游览它的行程放到明天了。

从圣剑寺出来,以最快的速度在5:00PM之前到达巴肯山。上山的路基本上是一直在转圈,因此也没有什么坡度,不过有一根登山杖会很管用。十五分钟后到达山顶,见到了巴肯寺。爬上一贯陡峭的台阶后,向四周望去,皆是阴天......

天气的原因看不到日落实在是没办法,干脆就在这里眺望下雾蒙蒙的远方,享受这辛苦一天最后的浏览时光。人流在这里聚集最多。南方天空有一抹乌云被抹开,露出了天蓝的天空,令人无比神往。夕阳也从西方露出一点点儿霞光,引得大家争相去拍摄。另外巴肯山上还有传统的,传说可以保佑生育的图腾,引得无数男女拍照去留念。18:00,天色暗下来了,工作人员请大家下山。

phnom_bakheng.jpg这时自己之前参考攻略特别为下山这段路准备的手电发挥了作用。开始路上只见手电的微光,后来越来越亮直到最后成为路上唯一的光源。因为此时下山的路已经是全黑了,虽然路上没有太大的危险,但是路毕竟也不算特别平坦,看不到的话难免有崴脚之类的风险,所以手电这里还是必须的。

从山上下来,黑夜已经开始了。找到小司机,返城回去。结束大圈的旅程。

顺便说下这两天的车费都是¥15,(TukTuk)标价,但从明天开始的女王宫、高布斯滨旅程开始价钱就要翻倍了,因为路程要比这两圈要远得多。

晚上去GH附近的New Apsara Supermarket采购,这超市东西种类多,价格实在还非常干净。然后在外面一个街摊上吃了顿炒饭。然后就早早回去看电视休息了,准备明天的长距离之行。

未完待续

要查看本系列更多文章,欢迎点击页面右侧的Cambodia标签。本系列文章可能会省略一些旅行中的细节内容,如果您也打算出游,并还想了解更多详细信息的话,欢迎在网站页面留言,我会很高兴帮助您。