巴别塔上的雇工


道德.法律
6月 29, 2008, 7:03 上午
Filed under: 八卦杂谈

闹了大半年的的“华南虎照”事件终于有了阶段性结果,周老虎被批捕,两个副厅长下台,这事处理的慢,但是好歹终于有了个结果,天网恢恢,疏而不漏。

虽然不断有人跳出来抱怨我国环境相对西方某些国家的“不自由”,但是不得不说,目前这个时代是我国有史以来最宽容的一个时代,宽容可以感化世人,但是也会让人有恃无恐。周老虎要是知道忽悠假护照触犯了法律会坐牢,他当初还敢这么干?这已经不是道德不道德的问题,而是违法不违法的问题。

前一段某个阴不阴阳不阳的衰人跳出来说《色.戒》中做过汤唯的裸替,忽悠了几天之后,没人理他(的确是“他”),又蹦出来对全国网友道歉,说前几天他说做过裸替是假的,希望网友原谅,没人理他。在某些人眼里,撒谎已经成为炒作的工具。

曾有个电视节目,某个年轻小伙子在网上散播虚假消息博取同情,要募集经费来做变性手术,节目主持人连线侯耀华和某个形象包装专家,“专家”当然替这个小伙子说话了,说炒作也是一种劳动,获得收益是理所当然的;侯耀华不同意,说因为对年轻一代太娇惯了,所以让他们做出这些违反道德的事情。侯耀华前辈说的在理,不过我想补充,利用虚假信息获得钱财,这已经不是道德的问题,这是违反法律,这是诈骗罪,如果是出了力赚钱就是理所当然,那抢劫贩毒全都合理了。

这些事也看得出我国法制建设还不是很健全,不然用不着还纠缠于道德讨论,对这些诈骗者,就该直接拿下。



什么样的话不能说
6月 27, 2008, 2:05 上午
Filed under: 八卦杂谈

这是一个言论自由的时代,只要不说反党反国家的话就没事,你开一个博,想说什么就说什么,想骂谁就骂谁,想夸谁就夸谁,每人剥夺你的自由,但是从做人做事角度说,还是有的话不能说。

1.
违背道德良心的话不能说。如同前一整子的范跑跑,其实跑了就跑了,认个怂也就罢了,非要标榜自己道德没问题,这事情已经有很多讨论了,不用多费口舌,连亲妈都不救的人说的所谓道德还能听?

2.
不了解情况信口开河的话不能说。某个行为艺术家抵制《功夫熊猫》,自己连看都没看过,当然,此人一方面需要“证据”来证明此片是垃圾,一方面又不想为此片贡献票房,此人肯定觉得要是自己看了再抵制不妥,于是就找了几个朋友反复看了《功夫熊猫》,搜罗出一堆什么熊猫眼睛是绿色的之类不着边际的抵制理由。根本就没看过,就先下定论,然后再用有色眼镜去找“证据”,这种做法是君子所为吗?

3.
自以为聪明的话不能说。王千源同学无疑觉得自己比别人聪明,要不然改名“千源”干吗(她觉得一般政治家只能两面冯源,她要做到“千面冯源”),别人只能有民族情绪,自己能够看到“自由精神”,此人的其他心理用不着多分析了,只想说,人可以聪明,但千万不要自作聪明。



异步(Asynchronous)和可扩展性(Scalability)有关吗?
6月 26, 2008, 8:55 上午
Filed under: 技术体会

对于存在I/O的Service,使用异步是正道,众多专家在说道Asynchronous Programming Model的时候都会提到这会提高系统的可扩展性(Scalability),我对此一直也没有什么质疑。这几天在工作中遇到一个关于系统改进的结果分析,不得不对这个问题重新思考一下。我们的系统以前使用同步模式编程,能同时处理的Requests数量不可能超过线程池(ThreadPool)的大小,现在我们将其改进为Asynchronous模式,就不再受这个限制,在Design阶段,按照专家前辈的说法,我们声称这个改进会大大提高系统的Scalability,但是Test Result显示却不是这样,问题在于对Scalability定义不清,What is Scalability?

In telecommunication and and software engineering, scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner, or to be readily enlarged.

                          —-http://en.wikipedia.org/wiki/Scalability

换成白话,Scalability就是一个系统是否能够很好的处理增加的工作量。Scalability和Performance有关系,但是并不完全等同,一个Scalability很好的系统可能Performance很差,一个Performance很好的系统也可以有很差的Scalability。比如,某个Web Service这么定义:

[WebMethod]

public string GetGreetings()

{

       Thread.Sleep(5000);

       return "Hello World";

}

这个Web Service无疑Performance很差,每个请求都无端的要等待5秒钟才给响应,但是其Scalability没问题,如果每秒N个请求会让请求堵塞在Queue 里面,那添加机器就能够处理过来。

说到Scalability,一般分为Vertical和Horizontal,也就是Scale Up和Scale Out,Scale Up指的是通过对单个Node增强资源(比如RAM,CPU)能够增加系统的处理能力,Scale Out指的是通过简单的增多Node的数量来提高系统的处理能力。Scale Up一般不难做到,而且对单个Node的性能提高肯定会有极限,所以设计系统重点是关注Scale Out。

回到Asynchronous Programming上,Asynchronous能够提高Scalability吗?首先,肯定和Scale Out无关,但是会影响Scale Up。在同步模式下,同时处理请求的数量不会超过ThreadPool中线程的数量,这样,无论如果添加CPU,如何添加RAM,都不会增强单个节点的处理能力,因为超过ThreadPool数量的请求会被放在Queue里,Queue满了就会丢弃请求,即使CPU/RAM还没有充分利用,依然只能等待。当使用Asynchronous模式,ThreadPool的大小不会成为瓶颈,当然,最后CPU或者RAM会成为瓶颈,所以,Asynchronous Programming会提高Scale Up。



密码疑云:她不是一个人在战斗
6月 21, 2008, 2:53 下午
Filed under: 电影电视

俄罗斯2007拍了一个大片《密码疑云》,普金都大力称赞此片,说片中女主角活生生地演绎了俄罗斯特工形象。要说特效和情节,此片和美国大片还是有差距,但是比起国产大片还是超出不少,值得一看。当然,偏重YY成分也不少,到了片尾,YY终于达到了高潮。

我们的俄罗斯美女特工单枪匹马杀死了所有的恐怖分子,解除了核弹引爆装置,拯救了伦敦、巴黎、东京、莫斯科四大城市,在大爆炸中逃出生天。

code_blow

这时候CIA和美军开着悍马过来想捡渔翁之利。

code_hanma2.jpg

俄罗斯美女特工已经是强弩之末了,这时候怎么对付这帮来势汹汹的美国佬呢?

code_us

关键时刻,两架米格29掠过天空。

code_mig

然后又来了两架俄军米24武装直升机 。

code_milu

这种阵式,只有三辆悍马和几杆破枪的美国佬完全被震慑了,只能敬礼致意。

code_solute

我们的俄罗斯美女特工懒得回礼,扬长而去,够牛!

code_leave

这不只是俄罗斯特工打击恐怖主义的胜利,更是俄罗斯国家对西方霸权主义的胜利,乌拉!



三体2杂谈:击败人类的三种策略
6月 20, 2008, 2:37 下午
Filed under: 八卦杂谈

看完《三体2》,依然回味作者刘慈欣给我们带来大气磅礴的史诗故事,不过对于虚构故事,还是很容易找出破绽,我的意思不是指责作者的情节编排不严密,相反,一个作品能让人努力寻找瑕疵,说明作品已经是一块好玉了。

自《三体2》面世以来,我觉得无数的读者都想向大刘说:“刘慈欣,我是你的破壁人!”在书中,最后人类还是阻止了三体人的进攻,但是我们都觉得,三体人其实有N多种方法击败人类,可惜啊!

策略一:善用人奸(人类中的汉奸)。在《三体1》中,ETO(Earth Three-Body Organization)就已经是这场戏的主角了,成员组成普遍素质很高,本着对人类劣根性的彻底绝望,将三体认奉为主,没有三体人的策反就心甘情愿投身帮助三体人毁灭人类的伟大使命,天下还能去哪去找这样优秀的汉奸?只可惜三体人在意识到人类思维不戴蓝牙之后就畏惧退缩了,ETO以为主会不抛弃不放弃,结果关键时刻主没有给予情报,导致ETO遭受政府重创打击。可惜啊,可惜三体人没有谋略思想,虽然派了智子来地球做spy,却不能接受人奸,等再想利用ETO时,ETO的力量已经不能起确定性作用了,最后,没有人奸来帮三体人对付狡猾的人类了。

策略二:善用智子。三体人通过智子锁死人类科技发展,并侦查地球上的一切动向(除了人脑中的思维),智子还能通过快速连续穿越人的视网膜产生视觉效果,这真的是一个好feature,但是三体人仅将这一功能应用于在人眼中打字幕,可惜啊!当人类选出面壁者来思考对付三体人的策略时,完全可以用智子干扰面壁者的视觉,把悬崖变成平路,把红灯变成绿灯,就算整不死你也能把你整疯了,没有面壁者人类就是死路一条。

策略三:别太实诚。战争,你死我活的游戏,什么阴招损招都可以使出来,但是三体人的所有行动除了因为技术差异让人类需要花一些时间来看透之外,完全都是光明正大的出招,到最后要害被人类捏住之后,让干什么就干什么,不留后招,可惜啊!

传奇故事嘛,就是偶然中的必然,这些策略我这样一个普通人类都想得到,是因为我了解人类,也许另外一种文明的思维就真的很难想到。

如同看完《三体1》时觉得这已经是一个完整的故事一样,看完《三体2》,觉得到这里这也已经是一个完整的故事了,但是据说刘慈欣有计划将《三体》写成三部,那将可比中国科幻小说届的《指环王》了。刘慈欣还会给我们带来什么样的惊喜,我们拭目以待。



读《三体2:黑暗森林》
6月 19, 2008, 3:05 下午
Filed under: 八卦杂谈

上周末买了刘慈欣的新作《三体2:黑暗森林》,这一周每天晚上支撑着疲惫的身躯看一点,到今晚终于看完了,好书,好书!

前年看《三体》,被震撼了,在结尾,人类极度的绝望,被三体人锁死科技,被视为“虫子”,虽然通过蝗虫不绝隐喻人类尚有希望,但是这也就是精神层面的自我鼓励罢了。《三体》已经是一个完整的故事,但是谁不想让这个故事延续,延续到人类和三体人真正面对面的厮杀呢?于是,有了《三体2》之《黑暗森林》。

在《三体2》中,三体人和人类的一个巨大差异被揭示:三体人是思维透明的,所想即所说,所说即所想。这是一个纯洁的生命种族,但是即便在科技上大大领先,注定在谋略方面较人类大大落后,因为思维都透明了哪里还有谋略可言。这是一个有趣的现象,生理结构决定种族文化,当三体人面对说的和想的可以不一样的人类时,是恐惧,然后决定必消灭之。

能够和人类智谋对抗的,只有人类中的汉奸(可以称为“人奸”),只可惜三体人抛弃了地球三体邪教,不然,战争结果必定完全不一样。还是那句老话,恐怖分子狠不狠,没有美国鬼子狠,鬼子狠不狠,没有汉奸狠。

整个小说的主题其实副标题“黑暗森林”已经解释清楚了,宇宙就是一个黑暗森林,每个文明发现另一个文明的时候,都没有时间和机会展示善意,必定力图先出招将其摧毁,因为对方也会动手。

人类社会也和黑暗森林差不多,人与人之间,国家和国家之间,文化与文化之间,因为你和我不同,就先开炮再说,当然这样激烈冲突的黑暗时代过去了,但是在今天,仍然处处可以看到,不同个体之间,不忌惮用最坏的假设猜测对方的企图,不忌讳用最狠毒的方式打击对方,如果说这种情形没有普遍出现,那是因为人类社会已经形成了制度约束力,没有谁能够有100%地把握摧毁对方而不受到惩罚,如果有这样的把握的话,狠毒的计划就会被执行,毫无疑问。

这么想似乎太黑暗了,套用书中的话:“黑,真他妈的黑啊!”不过,辩证一点看问题,具体问题具体对待,有个领导艺术培训大师说过,工作中对于别人的话,不管说什么,首先认为对方说这话是出于良好的目的,这有利于增强互信,也有利增强自信,这和黑暗森林法则是相反的,因为在公司企业这样的丛林里,猎人们之间可能有矛盾,但肯定有共同的目标,如果有人作出有损整体的事情,那丛林就会摧毁他。不过,另一个角度看问题,这样的丛林也许比黑暗丛林更加凶险:-)



Trace + DebugView: Tracing Your Program’s Footsteps
6月 14, 2008, 10:48 上午
Filed under: 技术体会

"There is no branch of detective science which is so important and so much neglected as the art of tracing footsteps." —-Sherlock Holmes, A Study of Scarlet

福尔摩斯说跟踪脚印是侦探学里相当重要而又被忽视的部分,我觉得在Debugging学里,Tracing也是一个相当重要而被忽视的技术。

所谓Trace,就是在程序的某些点留下一些记号,这样我们在程序之外也能跟踪到程序员的流程和状态,在Windows中,缺省情况下,Trace是通过输出到OutputDebugString完成的,当然,你不需要直接调用这个API,有高层的API封装(包括.net API),你也让Trace输出到Console或者其他愿意接受trace的模块中去。这里只讨论通过OutputDebugString输出的情况,这些Trace谁会去接受呢,任何程序只要遵守一个Protocol就能接收到这些Trace,通常Debugger会扮演这个角色,还有就是DebugView

结合Trace和DebugView,号称可以达到"Debug without Debugger Tool"的境界,我还没有达到这个境界,时不时我还是需要求助Debugger工具,但是求助次数减少了,因为不需要Debugger我能够通过DebugView看到我的程序的“脚印”。这在开发的时候相当方便,如果程序已经Deploy出去了,这就显得重要了,因为你不可能在Production Server上去安装一个debugger对不对,但是你可以拷贝一个DebugView进去看程序的Trace,对于安装的程序没有任何影响,实际上,你都不需要拷贝DebugView到Production Server上,因为DebugView支持remoting,只要能够访问到对方机器就可以了。

DebugView的界面很简捷方便,如下,还提供Filter和Highlight功能。因为所有的程序都可以王OutputDebugString输出,当然因该filter掉那些你不关心的程序的trace。有时候你想要让关键Trace显眼一点,可以highlight包含指定字符串的Trace。

image

不过我还是要批评一下DebugView,由于缺少实例和文档介绍,费了我半天才弄明白怎么用Highlight这个功能。帮助说明上说Highlight在"DebugView Filter"对话框中配置,当这个对话框探出之后,看到的是下面的东东。

image

上半部分是Filter,下半部分是Highlight,但是如何输入我想Highlight的字符串呢?也许你能一眼看出来,但是我没有,试了半天,终于发现红红的长条DropDown List原来也是一个输入栏,直接在里面输入就行了。

image



功夫熊猫:相信自己
6月 14, 2008, 7:40 上午
Filed under: 电影电视

没有抵制住抢鲜的诱惑,看了《功夫熊猫》,我有四个词要说: I Love This Movie, Yeah~~  好像是五个词:-)

此片的背景、对白、人物(或者应该说是动物)全都是中国化的,如果不是英文配音,几乎会让人觉得这就是一部中国电影。故事背景是在一个中国的小山村,村边有座山,山上有座庙,庙里有一个乌龟大师和貌似星球大战犹达大师的师傅……画面风格使用中国传统的山水画,很多对白体现了庄周思想,只可惜使用英文说的,人物(动物)主角是熊猫,超级大反派是一只雪豹。这自然要对比一下中外动画片,我觉得玩特效是肯定玩不过梦工厂之流,特效只是动画片的一个方面,但是人家现在在特效之外的地方也做的相当好了,让人惭愧。

故事情节没什么新意,主角胖胖熊猫误打误撞被选为龙之战士,担起对抗反角雪豹的责任……就这样一个简单的故事,但是故事讲的很好。熊猫最后终于明白了功夫的真谛,做好自己,相信自己,发挥自己的优势(肥胖),最终将强敌打败。如片中台词所说“You just need to believe”,相信自己,“There is no secret ingredients”,没什么超级的秘方,做好自己,发挥优势,就能胜利。



一片泽国
6月 13, 2008, 12:32 下午
Filed under: 城市丛林
傍晚的时候北京下了超强暴雨,还好我早上走的时候看天色不好把家里窗户都关上了,家里没有受灾,但是小区受了灾,回家的时候发现,停车场由于地势低洼,已经成了一片泽国,排气管低的车是开不进去了,还好,我么有车Open-mouthed 趟着齐膝盖的水,到家想洗个澡,却发现水压不够燃气热水器启动不了,也许水泵被调去抽给水去了。



Velocity: Memcached From Microsoft
6月 12, 2008, 1:05 上午
Filed under: 技术体会
最近Microsoft推出了一款产品Velocity,提供分布式缓存(Distributed Cache)功能,引发了不少Blog讨论这一产品,不过我看很多文章在说这一产品的时候,都有意或者无意的没有提,这个产品的概念源自于Open Source的memcached。这一次Microsoft只不过又是重新实现了一下别人的想法,至于实现得怎么样,还要再看看。