巴别塔上的雇工


加个西米客玩玩
4月 30, 2008, 1:09 上午
Filed under: 八卦杂谈
今天知道有这样一个Web2.0的服务Similog,添加一段Flash到你的网页中,做些统计和留言之类的功能,我把它添加在主页左侧

本来以为这东西和Live Space很难结合,因为Live Space不让随便添加Custom HTML,我的live space上之前的Custom HTML模块也只是一个Powertoy,也就是微软程序员开发着玩的,不提供技术保证,今天添加Similog的代码的时候才发现,这个Custom HTML已经不是Powertoy了,可以登陆后直接在"Customize->Add Modules"中间看见这个模块,不知道Live Space什么时候升级成这样的。不过,很遗憾,Custom HTML模块中依然不能添加java script,所以无法通过Live Space做广告赚点外快Open-mouthed ,也无法使用Google Analytics统计网站访问情况。

Similog有意或者无意的考虑到很多网站不容许这样,所以嵌入的代码不是javascript,而是flash,不让迁入javascript可以说是为了安全考虑,不让迁入flash也就太老土了,毕竟连Live Space都支持迁入flash了。



与时俱进
4月 26, 2008, 10:21 上午
Filed under: 电影电视
DH_04_12

连Desperate Housewives也与时俱进了一把,最新的第四季第12集中有一句台词:“Tibetan monks remember the pie thing”,当然制作字幕的同志也不落人后,在第11集结尾处,字幕显示“Tibet Was, Is, And Will Always Be Part of China”。



TDD: Do We Need 100% Code Coverage?
4月 26, 2008, 5:56 上午
Filed under: 技术体会

虽然入行就知道TDD(Test Driven Development)这回事,但是直到最近才真正在工作中这么做,有一整子会议特别多,几乎每日一会,正在写code屏幕上突然跳出要开会的提示,赶紧去开会,回来的时候要半天才弄清楚之前写到哪了,这可挺难受的,所以只能玩TDD了,每次回到座位上,先跑一下所有的Unit Testcases,不管是编译出错还是运行出错,立马能知道自己应该从哪里继续开始,当然没错最好:-) 现在没那么多会要开,但是这个习惯保留下来了,应该说这是一个好习惯。

TDD就和他的支持者们宣称的一样,是一件很容易让人上瘾的东西,人生经验告诉我们,什么东西容易上瘾,一定有陷阱,技术性的东西也不例外。

既然TDD,有一个指标就是Code Coverage,看你的Unit Test能够覆盖到多少被测的Working Code,如果你声称“我们已经实践了TDD了”,然后一看你的UT Code Coverage,只有1%,这和没有UT有什么区别,但是我们要不要争取100%的Code Converage呢?玩TDD很容易被这样的目标诱惑:运行,看xUnit的进度条全绿,Code Coverage 70%,找到一些没有被Cover到的Code,添加几个case让这块code,再运行,xUnit进度条变红了,修改一些code,再运行,xUnit全绿了,Code Coverage达到72%了,继续添加case增加Coverage……就和为了高分打游戏一样,程序员为了获得高code coverage孜孜不倦地修改和添加case,为了最高分——100%,我就曾经这样狂热,这好吗?不大好。

首先,Code Coverage高未必表示Code质量高。软件开发很复杂,不能用单一的标准来衡量,code coverage一定程度上能体现软件质量,很自然我们对70%被测过的code要比30%被测过的code更有信心,好歹开发人员用心关注了质量,但是这只限于cover到了,未必是按照实际情况cover到了。打个比方,修一座桥,最后测试的时候,你开一辆奥托上去碾来碾去,把每一寸地都轧到了,100% coverage,结果正式通车的时候,上来一辆解放牌大卡,桥塌了。

其次,为了达到高Code Coverage会让Testing Code复杂。

Testing Code对Working Code说:“不用怕,有我来掩护(Cover)你。”Working Code说:“那谁来掩护你呢?”

保持UT case简洁才是正道,不然,很有肯能写出本身就有问题的cases,那反复跑这样的cases只会重复错误。而且,达到100%Code Coverage,可能会造成很白的白盒测试(Whitebox Testing),这样会让Testing Code和Working Code联系过于紧密,当你想要修改working code的结构的时候,很容易break testing code。

最重要的,Code Coverage太高会导致ROI(Return of Investment)下降。资源永远都是有限的,有限的程序员,有限的时间,有限的精力,如何有效的分配这些资源获得最大产出是很重要的,把Code Coverage从0%提高到70%(这个数字并不具有代表性)的过程,ROI肯定会很高的,但是之后,ROI会下降,从99%到100%实在不能获得什么有意义的Return,而Investment却是巨大的。程序代码中总会有一些异常情况处理,我们应该尽量模拟这些异常情况,但是不要过了,比如某个函数入口处检查参数是否为null,如果是就抛一个异常,肉眼都能看得出来逻辑的正确性,实在没有必要造一个case看其在参数为null时的行为。

总之,不要追求100%的Code Coverage,而应该把精力集中在模拟code的实际使用情况上,就上面造桥的例子说,考虑清楚这座桥实际中会有什么样的use case,有哪些车会过,最多会有多少车会过,然后模拟这样的情况,这比开一辆奥托轧遍整个桥有意义得多。



Open Source: “Nobody Can Ever Improve The Software”?
4月 25, 2008, 11:28 下午
Filed under: 工作心情

最近,Bill Gates在一次公开讲话中称谈到Open Source,称OS会导致“Nobody can ever improve the software”。有的国内媒体把这段话翻译成“没人能够提高软件性能”,我看不出原话有强调性能的意思,这些媒体的编辑的专业能力让人生疑。

BillG的说这话的上下文是在说今后Microsoft将致力于计算机技术和生物技术的结合(制造生化机械人吗?:-) ),而公司要生存和继续研发,就必须赚钱,而Open Source会导致赚不到钱,所以不能Open Source,程序员和BillG也要吃肉,肉都买不起了,怎么会有心情去improve software呢?

BillG的这个观点,真的是非常…既然BillG是老板,还是给他留点面子吧…比较荒谬!

看看事实,Open Source社区对软件的推动是有目共睹的,我觉得没有必要去一一列举了。至于吃肉的问题,当然不少在OS中作贡献的人士既有钱又有闲,有的还有大公司养着做全职OS,但是也有落魄程序员做OS软件的,比如BitTorrent。

我觉得这次BillG的这次失言可比当年那句“640K software is all the memory anybody would ever need on a computer”。



黄金罗盘
4月 24, 2008, 2:49 下午
Filed under: 电影电视
看电影《黄金罗盘》,觉得有“黄金罗盘”这样有问必答的东西真不错,,如果我有这样的宝贝的话,我第一个想问的问题是什么?我想问:下期彩票(任意彩票)的中奖号码是什么?Open-mouthed

此片要延续《指环王》的三部曲风格,但是故事情节本身就远没有《指环王》强,属于鸡肋片。片中小女孩的叔叔是最新一代的007扮演者,出场就让人感觉气度不凡,不过留了胡子都不认识他了。



该不该抵制法国电影?
4月 22, 2008, 2:47 下午
Filed under: 电影电视

抵制家乐福的事情还没有尘埃落定,又看见抵制法国电影的事情。

张曼玉的前夫奥利维耶·阿萨亚斯拍了个电影《登机门》,最近VeryCD上也有了,有趣的是,在留言部分居然出现了“抵制法国电影”的口号,这就有点莫名其妙了哦:) 就像政治不应该绑定奥运一样,政治也不应该绑定电影,法国有不少电影还是不错的,当然也有不少垃圾作品,就这个《登机门》,我还没来得及看,但是据说就是一个垃圾。在VeryCD上已经有人回应了:“你这个傻瓜,我们在这看的哪个电影交了钱?反正都是D版,我们看得越多,法国电影损失就越多…”这段评论似乎已经被删除了,咳咳,这个哥们说话太直白了:)
补:今天看了,烂片一个,鉴定完毕。



该不该抵制家乐福?
4月 18, 2008, 3:39 下午
Filed under: 八卦杂谈
最近全国都爆发了抵制家乐福的活动,同时也爆发了该不该抵制的争论。我的观点,家乐福在中国的土地上经营,销售的大部分是中国制造的商品,增加了中国的就业机会,方便了中国民众的生活,给中国政府纳税,抵制似乎没有什么意义,但是,店的老板股东们一方面赚中国的钱,一方面又做损害中国的事情,没点反映是不是也太逊了,即使这样的老板股东只是少数。如果不去家乐福不会给你的生活带来什么影响(中国有很多别的超市),完全可以不去,反正我是不会去,有多个选择我为什么要去让我不爽的店。另一方面,我也没必要给去了家乐福的同胞扣上汉奸的帽子,毕竟有的人觉得家乐福能够带来便利,而且我们也应该有容人之心,每个人都拥有自己观点的权利,道理不怕拿出来被辩论。


装修门脸
4月 18, 2008, 2:03 上午
Filed under: 城市丛林

图像249

为了迎接奥运,让外国人看到一个整洁的北京,最近到处可以看到修饰靠近街道房屋外观的工程。今天在路上看到好几个工人和蜘蛛侠一样在外墙工作,够辛苦的。不管怎么样,借奥运的东风, 北京市民的环境得到了一些改善,还是获得一些好处。



Let China Sleep. When She Awakens, the world will be …
4月 16, 2008, 11:57 上午
Filed under: 山河好大
小时候常听到的一个说法,拿破仑曾说过“中国一旦觉醒,世界就将轰动”,这条“名言”被中小学作文无数次引用来提高民族自豪感,看人家拿破仑这样的牛人当初都知道我中华一觉醒,地球都要抖三抖,那我们中国肯定大有希望了。

不过,我们来看一下拿破仑的原话,只找到英文版,因为这话是对英国人说的,很有可能原话就是英文陈述的:“Let China sleep. When she awakens, the world will be SORRY.” 注意原话中用的是Sorry,不是Shocked或者Surprised,也有一种说法是“…She will shake the world”,我很怀疑这是杜撰,还有一种说法是拿破仑紧接着说“…虽然,她没有苏醒过来的迹象”。不管怎么样,有一点可以确认,拿破仑说这话的时候,已经被囚禁在大西洋的圣赫勒拿岛上三年了,肯定过得很不爽,这时候一个英国人从中国回来,根据所见所闻,觉得有必要靠武力敲开中国的大门,在回国报告之前,路过圣赫勒拿岛,就想去拜访一下拿破仑找点建议,当这个英国人说了他的想法之后,拿破仑就说了上面的话。我觉得这时候的拿破仑的精神状况估计很不高,处于你和他说东,他就说西的状态,处处和人反着干,他对中国的了解到底有多少,能够断言中国的命运?现在我们也没法确认拿破仑到底为什么说这句话了,不过,就在说这话之后不久,鸦片战争爆发,中国的苦难开始了。

不管拿破仑原意如何,中国人普遍认只要自我觉醒,世界就会震动,事实也的确如此。在电影《精武英雄》中,编导还安排了两个日本人的对话:
    “日本现在就好比一只强壮的蚂蚁,它现在能够在中国占一点便宜,是因为中国这只大象还没有醒。”
    “不过中国这只笨大象目前也没有要醒过来的样子。”
    “但是她终究会醒的。”

话说回来,拿破仑说什么又有什么关系呢,他说这话的时候,中国被人欺负,他作古几百年了,中国终于开始强壮了,他的同胞后代们也坐不住了,让我深信当初拿破仑说的是SORRY,所以,走自己的路,让别人说去吧。



说实话的法国参议员
4月 15, 2008, 2:30 下午
Filed under: 山河好大
圣火在法国巴黎的遭遇,让国人对法国人很失望,一直以为中法友谊还可以,突然发现这个国家的政府这样的狼子之心,这个国家的媒体这样的厚颜无耻,这个国家的人民这样的无视事实,现在才发现法国人是白眼狼,法国人是无赖,法国人是XX……不过今天看到这样的视频,发现原来法国还是有明白人的,这个国家还是有希望的。此人叫Jean-Luc Mélenchon,是法国巴黎地区Essonne市的参议员,他还有一篇Blog关于此事,我不懂法语,但是可以用Translate Google看。

如他所说,为什么不能放下有色眼镜,用平等的姿态和别人对话呢,可是就是有人不愿意这样做,而且西方世界这样的人还不少,这样的形势下,国人只有自强不息,做好事情就是最好的反击。