Archive for September, 2006

本地化一例

Thursday, September 28th, 2006

听说Google Calendar出了本地化版本,出于对ajax localization实现手段的好奇,我读了一下它的JavaScritp代码,发现了蛮有趣的几个本地化语言翻译例子。

获取Google Calendar的JavaScript的方法很简单,”View Source”后定位到.js文件并下载即可(不能用download manager之类下载软件,因为calendar的JS文件与cookie绑定,只有认证后才可获得)。Calendar现在的JS文件从文件名上看像是动态生成的,比如叫“20060927154334doozercompiled__zh_cn.js”(在日历“设置”里切换语言,分别得到多份本地化JavaScript代码)。 这个JavaScript文件不小,所有的本地化消息都保存在里面,用类似Java语言里“\uxxxx”方式对非拉丁字符进行编码,无法直接查看。可以使用JDK自带的native2ascii.exe工具,执行”native2ascii -reverse source.js target.js“把文件中的字符编码转换成可显示的字符串。

下面是在文件里找到的几处翻译:

1. 英文:“e.g., Dinner with Michael 7pm tomorrow

繁中:“例如:明晚 7 時與小李晚餐

简中:“例如,明天晚上 7 点同王平一起吃饭

2. 英文:“e.g., Breakfast at Tiffany’s

繁中:“例如,永和豆漿早餐

简中:“例如,在蒂凡尼早餐

3. 英文:“e.g., 7pm Dinner at Pancho’s

繁中:“例如,晚上 7 時在福華飯店晚宴

简中:“例如,晚上 7 点在必胜客晚餐

大致可以看出Google基本采用传统方式翻译语言包,即首先产生英文包,然后分发到各译员手中分别翻译,各语言的翻译员单独工作,所以就有了对餐厅翻译的繁、简中文差异问题。繁体中文的翻译比较一致,无论早餐、晚餐,地点都换成了台湾民众熟悉的品牌(“福华饭店”我猜是台北比较著名的一个餐厅);简体中文翻译比较有趣,早餐没换地方,估计翻译的人认为蒂凡尼早餐应该是common sense(其实并不是这样),而Pancho对国人太陌生,就换成了“必胜客”,呵呵。为什么不用“全聚德烤鸭”呢,本地化却本地化出了一个洋玩意,合理的解释大概是全球化的强劲已经削弱了本地化的特征,过度的本地化(over localization)反而不入时、不与时俱进。反映出的另外一个问题是国内没有知名的早餐连锁店。上海有“新亚大包”,估计北京人不了解;北京本地的早点品牌上海人不清楚,依我看,还不如也用“永和豆浆”,容易达成共识。

至于“小李”和“王平”的差异应该说是翻译彼此没有直接沟通造成的(虽然是在同一个大文化背景下),比较正常。不过下面这段有关数量级的本地化,繁中和简中却完全一致:

“var tn={“零”:0,”〇”:0,”零”:0,”壹”:1,”一”:1,”弌”:1,”貳”:2,”贰”:2,”二”:2,”弍”:2,”兩”:2,”两”:2,”叄”:3,”叁”:3,”三”:3,”弎”:3,”參”:3,”参”:3,”肆”:4,”四”:4,”伍”:5,”五”:5,”陸”:6,”六”:6,”柒”:7,”七”:7,”捌”:8,”八”:8,”玖”:9,”九”:9,”拾”:10,”十”:10,”什”:10,”念”:20,”貳拾”:20,”廿”:20,”卄”:20,”二十”:20,”叄拾”:30,”卅”:30,”三十”:30,”肆拾”
:40,”卌”:40,”四十”:40,”佰”:100,”百”:100,”仟”:1000,”千”:1000,”萬”:10000,”万”:10000,”百萬”:1000000,”億”:100000000,”京”:1000000000,”吉”:1000000000,”垓”:1000000000000,”太”:1000000000000,”兆”:1000000000000,”拍”:1000000000000000,”艾”:1000000000000000000,”泽”:1.0E21,”皆”:1.0E21,”尧”:1.0E24,”佑”:1.0E24,”分”:0.1,”厘”:0.01,”釐”:0.01,”毫”:0.0010,”毛”:0.0010,”微”:1.0E-6,”塵”:1.0E-9,”奈”
:1.0E-9,”纳”:1.0E-9,”漠”:1.0E-12,”皮”:1.0E-12

说实话,上面的变量定义的确厉害,极有可能是通过辞海查出来的。这又是一个over localization的例子,有多少中国人知道”拍”、”皆”、”尧”呢。从翻译流程上看,这些变量的翻译是简、繁双方通过气以后达成共识双方共用的。

IBM专利制度改革

Tuesday, September 26th, 2006

IBM今天正式对外发布新的专利政策,包括通过技术社区开放式审核,提高专利质量;放弃对特定商业方法的专利申请等具体措施。

“…avoid filings that cloak authorship under the name of an individual or dummy company..”

“..will publish its patent filings on the Web for public review..” 

“..so-called business methods alone…without technical specifics…should not be patentable.” 

“..intended as a step toward improving the quality of patents issued in general..” 

全文:Hoping to Be a Model, I.B.M. Will Put Its Patent Filings Online

吃蟹

Tuesday, September 26th, 2006

又到了每年的吃蟹季节。周末在菜场买了8只大闸蟹(雄),每斤27块钱,虽不是阳澄湖的,味道也还不错。这种普通蟹价格便宜,吃起来没有心理负担,又免去了别人问你今年吃过大闸蟹没有的尴尬,同时满足了物质上和精神上的需求。

ICU4More

Friday, September 22nd, 2006

ICU是实现Unicode标准最好的开源类库(没有“之一”),目前有ICU4C和ICU4J两个主要版本。IBM作为ICU最重要的支持力量,为它多年的发展做了很大贡献。坦白说,在设计新的编程语言的时候,internationalization往往被放在相当次要的位置,被人忽略。即使像Ruby这种由日本人发明的语言,其国际化支持也十分有限(不得不承认,掌握、精通Unicode是很挑战的工作,而且需要相当的耐心与毅力)。

既然有了ICU这么好的实现,在为各类新兴语言打国际化补丁的时候自然成为最重要的参考,由此可以派生出ICU4A-Z来。

我在Krugle里输入”ICU” 查了一下,发现了针对Ruby和Python语言实现的ICU扩展:icu4rPyICU。现在脚本语言这么多、这么热,新的ICU4?扩展随时可能出现。假如,我是说假如,JVM被越来越多的用来运行这些脚本语言,是不是有可能简化这样的扩展,充分利用JVM上可能提供的ICU服务做一层简化的映射层,实现脚本语言的globalization。当需要要添加新的脚本语言支持时,根据contract写一个特定的映射库放到JVM上跑就好了。不过说说简单,该怎么实现,没想过。

好消息是,更多的人开始重视国际化,这是新兴脚本语言的机会,也是ICU的机会。

我对code review的几点理解

Tuesday, September 19th, 2006

Code Review就是通过审查代码,发现代码中可能存在的问题并给予纠正,这些问题可能包括设计上的、实现上的或者编程风格等多方面。目前做code review一是靠人读代码,二是借助于一些工具。人工阅读效率慢,但有深度,可以解决设计上的问题;工具利用模式匹配做静态分析找到不合适函数调用,速度快但缺乏context无法进行深层分析。目前Rational的“Code Review”插件提供了上百条规则对Java代码进行分析。

有关人工review和机器review的关系,可以讨论好几天。两者相同之处都是发现问题,不同之处是人工review侧重内在逻辑和实现方法,避免框架性质的错误(宏观+部分微观);机器review关注细节、可重现,对于典型错误的处理很有帮助(微观)。

我喜欢用现实生活的例子来解释技术,尤其是在从去年build了装修的domain knowledge后。基本上可以说,人工review好比房屋设计、机器review好比选材。选材很重要,装修过的人都知道开关选“西蒙”、“梅兰日兰”,水管选“皮尔萨”、龙头选“高仪”,水槽选“皇冠”、“弗兰卡”、水泥选“象”牌、电线选“熊猫“、刷子选“大师”…“没有好材,再好的戏也出不来”。选材容易之处在于从不知道变成知道门槛很低,久而久之就会慢慢熟起来,变得有经验,象我现在这样。设计则不然,就是同一套房子,两次设计也是会有差别,而且没法定量评价 – 人对美与和谐的追求无止境。出好的设计需要时间和经验磨练,与之相关的知识的传递比起checklist形式的静态分析规则更难。同样,没有好的设计(譬如在马桶对面的墙上镶一面镜子会怎么样?这是装修里常见的一个bad practice),再好的材料堆砌在一起也是无用的。

没有经过静态分析的程序可能跑起来不错,而实际上可能像一块奶酪一样,满身是漏洞,问题一出现就很严重而且直接面对问题的是可能是最终用户;没有经过人工review的代码跑起来也可能不错,只是潜在的问题,如性能、扩展性能会在需求变更的时候显现出来,直接面对麻烦的可能是程序员。

上周面试实习生的时候,我问了一个问题,.NET平台上存在多种语言,如果你来设计一个静态分析工具的话,该怎么做,需要考虑哪些因素?(参考:FxCop) 其实现在的Java也开始支持其他脚本语言,为了适应JVM之上的多种语言,未来基于Java平台的代码分析工具也会从源代码转向bytecode的分析,那是JVM唯一能听懂的语言。

徒有虚名的iTunes

Friday, September 15th, 2006

大家都说苹果的东西好,可我觉得iTunes做的很差,难用程度可以和索尼的SonicStage媲美(SS 4.0比iTunes还好用点)。好多人说IBM的软件难用,我看iTunes易用性比WebSphere、DB2差很多 – 想想看,iTunes可是为最普通的用户设计的。

iTunes的问题在于没有按正常人的思维设计软件。iPod连上后,很自然就是从磁盘里拖文件往iPod图标里放,不灵;然后尝试“曲库”,“导入”,各种模式切换来切换去,不知它想干什么。这类灌歌软件最怕有中间状态:从source转到用户不知道的中间状态,再转到target设备上,加上很多选项、对话框设计的一塌糊涂,简直是场噩梦。

我以前说给电视机频道重新排序需要理工科本科学历,而学会从iTunes上导入音乐到iPod上需要计算机科学硕士以上文凭。我真不知道其他iPod用户花了多少时间才能把CD和硬盘上的mp3成功导进来的。以讹传讹害死人。

苹果和索尼这两家出产最优秀硬件的公司在软件(至少是iTunes和SonicStage)上表现令人失望。

Blackberry来了

Thursday, September 14th, 2006

公司将于年内为国内员工架设Blackberry Enterprise Server,与Lotus Domino连接从而利用移动网络实现在Blackberry设备上处理Notes邮件。IBM美国员工的无线邮件服务终于在BB成功登录中国移动后显身。

可惜我已经有了Dell X51V,没有充足的理由再申请预算购置BB,网络服务费估计我也付不起,以至于将长期游荡在低端客户群里,与动感地带为伍。

Blackberry做了一件事:people integration。当然,下面这个也叫people integration:
ibm people integration

新版的Sametime 7.5 for Blackberry已经在内部放出;for Windows Mobile版也在测试中。 在地铁里用BB sametime,酷。

抄表

Wednesday, September 13th, 2006

今天在地铁里取了免费《时代报》的读者一定看到了这样一条新闻:为了便于工作繁忙的白领们及时交付水电煤费,上海准备推出用手机、数码相机对计量表进行拍照,然后通过电子邮件、彩信发给水电煤气公司,实现抄表作业的服务。

不知道其他城市是怎样抄表的,我所在的小区水、电表是在户外的,抄表员在业主不在家的时候也可以抄表,但燃气表是在室内,需要自己每两个月抄一次,贴在门上。如果碰巧忘记,上门的抄表员就会估计一个数字,打入帐单中。

对于自动抄表,我以前听说有用RFID技术的,是不是Honeywell搞的,记不清了。上海的新做法,是用数字的方法实现模拟的抄表:最后一步需人工看数码照片,记录读数。

不考虑该办法的实际成本,假如要设计这样一套系统,把需要考虑的问题和备选方案,稍微列一下:

1. 如果发email的话,单一收件地址肯定不行,要爆掉;或者每个区每个街道一个专用email地址;还得要求邮件标题符合一定规范,帮助自动过滤分类;要考虑客户email客户端的编码,GB2312/UTF-8都得能处理;不少免费邮件会自带广告,不小心会被收件服务器当垃圾邮件过滤掉;一定有很多人不注意,拍好的照片不压缩、不resize,一个几兆的文件丢过去,还有人只发了信忘记带上附件;如果出现错误邮件,收件方是否需要一一回复确认,还是听之任之;

2. 如果使用Web提交方式,上面一些如邮件编码等问题可以避免,可控性明显加强,做的好一点就可以像Wiki page的attachment。另外需要用户注册,每个用户必须有唯一ID与家庭住址门牌号对应,每户每月(或双月)只能上传一次照片,照片在燃气公司处理前可以修改,处理后只读,方式同网上购物的订单管理;

3. Flicker + 市民信箱

4. 短信绑定用户、验证身份;发送附加照片的彩信到指定号码;每条彩信收费2元。

能想出这个办法的人还是很佩服的,一直认为“笨拙的使用高科技”是可爱、可敬的,况且提出这个方案需要头脑和勇气,要赞的。

Be yourself

Tuesday, September 12th, 2006

自打Google中国搬了家,各类博客、转发邮件里有关Google新办公室的图片层出不穷,加上Keso的推波助澜,好不热闹。我在想,Google中国除了免费食品和毛绒玩具外,还有什么可以和公众交流的呢?对,有黑板报(半数是炫耀贴),然后呢?

我对Google中国全盘西化式风格不太以为然。想想Google新员工原来所在的大学计算机系实验室是个什么样子,眼睛一闭,八九不离十就能猜到了。怎么毕业没几天突然就对毛绒玩具、涂鸦、起名字这些事情感起兴趣来了?没错,是终于可以领工资了,而且应该不低,不过这些刚毕业不到一年的工程师们至少一半以上还在租房,他们周末自己会去宜家吗。

与其每个人发30刀让原本本分的工程师刻意证明自己有创意而去做点什么,不如省下钱建个图书馆,一个人 240人民币大约可以买6本计算机书,200个人就能买1000多本,钱再多也得计划的用。

咱中国老百姓老老实实上学读书、工作过日子,骨子里和老美不太一样。如果每个新员工进入Google的第一件事是挖空心思搞点邪乎的“创意”来,这样的环境能否称为健康,非业务外的“创意”是否有被management team潜在纳入绩效考核范围的可能。

Be yourself,可以献给Google新人,作为IT业同行,我一直认为Google是创新、进取的公司,只是一切应该更自然一些,更中国一些。

知识就是力量

Monday, September 11th, 2006

我当真有点火星了。今天才刚从人家的博客里知道了猪八戒网臭皮匠网学都这样的“威客”网络,才知道利用网络贩卖自己的知识和点子已经有这么多丰富的平台了。

我在想我有啥本事可以在网上捞个活,给人取名字不行;给公司取名字可以(曾经成功为某贸易公司取英文名);卡通Flash不懂;视频制作水准一般;有多年版主经验,可充当网托儿。。

为了表达通过网络靠知识赚钱的认可,我也发布一条信息,征求解答(报价5元):

请问上海在哪里可以买到从上海到江苏靖江的长途汽车票,要求:

1. 发车时刻表、购票点和上车点(从浦东出发近,最好);
2. 有电话购票及送票服务,最好;
3. 有网址,最好。

Roadrunner

Thursday, September 7th, 2006

Roadrunner听上去像一款SUV的名字,又大又黑的那种,比如Ford Explorer,Lincoln Navigator,一听就很猛。

其实它是由IBM负责制造的超级计算机的名字,这款超级电脑由16,000个Cell处理器组成,08年完工后将安装在阿拉莫斯国家实验室,作用是“intended to safeguard and sustain the nation’s nuclear weapons stockpile” 。吓死人。

在上海的IBM CSTL部门,有与Cell有关的开发项目,对嵌入式、底层开发感兴趣的可以来试试。

Roadrunner的新闻来源:I.B.M. to Build Supercomputer Powered by Video Game Chips

老沃森与彼得·德鲁克66年前的一段对话

Wednesday, September 6th, 2006

为了准备1940年《财富》杂志10周年特刊,杂志老板请到了德鲁克来帮忙。这期刊物中有一篇关于IBM公司的报道,由于编辑部疏忽,没来得及审核就准备出版,可文章偏偏就出了问题:作者撰文对IBM老沃森大加指责,并进行人身攻击,而当时的IBM经历了大萧条时代的不裁员、提出“Think”口号并在纽约成功参与了世博会(这次世博会上IBM员工乘坐的火车脱轨翻车,这又是另外一个故事了)。

《财富》和德鲁克都知道捅了篓子,为了保护文章作者,德鲁克专门负责处理来自IBM的置疑。果然,老沃森打电话到《财富》,于是有了下面这段老沃森和管理大师的对话:

“我是沃森,想和有关IBM那篇文章的执笔人谈谈。”

“对不起,他不在。您可以跟我讨论,我是德鲁克,负责那篇文章的编辑。”

“我不是要讨论那篇报道,我想和执笔者本人谈一谈。”

“可否先告诉我,我一定代为转告。”

“你跟他说,我希望他加入IBM,做我们公关部的主任。薪水多少由他自己定。” 我想,这大概就是我从前听说的”利诱“吧,借以说服执笔者不刊登有关自己公司的报道。

“沃森先生,您该了解,不管执笔人是不是仍旧在本杂志服务,那篇文章还是会刊登出来的。”

“我当然知道这点,如果你们不登,他也不用来IBM了。”

“对不起,沃森先生,您看过那篇文章了吗?”

听我这么一问,他不禁火冒三丈:“有关我自己和我公司的报道,我怎么会放过?”

“那么,您还想让执笔人做你们的公关主任吗?”

“当然,至少他对我很认真。”

以上内容节选自德鲁克回忆录《旁观者》,昨晚看到这段时就打算今天搬到网上来,一同分享。

IBM Eye

Tuesday, September 5th, 2006

IBM Eye是一个IBM官方和非官方新闻、信息和评论的汇总地,根据自述该网站最早是由IBM员工维护,后交由外部人员管理。我是在内部的dogear上看到的这个链接,大致扫了一下,基本都是正面消息,特推荐一下,^_^。

发生网

Saturday, September 2nd, 2006

发生网“,在一部分南方口音里,就成了“花生网”,就连我这个只会说普通话的人也觉得后者读起来更容易、更上口一些。

发生网要做的,是事件聚合,让你知道周围正在发生的事情。这个想法很酷,如果在实现上能有所突破的话。我偶尔会胡乱想想,但始终没有想清楚收集信息,尤其是实时信息的方法,怎么样才能把普通人所知道的,感受到的东西,以最小的代价(或某些激励机制)在第一时间变成数字内容。

发生网是个平台,根据城市、场所分类进行发贴、回帖、贴标签,可以收藏感兴趣的事件、建立小组,等等。从这个角度看,发生网和抓虾在平台和结构上几乎相同,只是内容的性质和收集方式的区别(抓虾用Crawler;发生网在起始阶段应该也有不少自动收集、发布的程序,长远是靠用户)。

发生网现在对我有足够的吸引力吗?说实话,还差一点。 现在的发生网更像客齐集,一眼看上去很多的展会、门票、打折的信息,我可以想象这些内容对不少用户来说粘性还是不足,看了一屏后基本可以关窗口了。

看看以下这两个方面是否会带来更多思考:

1. 信息源。官方信息来源稳定,但不是内容发展的根本之道。与官方信息相比,我们(至少是我)需要更多的、实时的非官方、民间的、草根信息。比如说上海柯达影城的排片表,到网上很容易就能找到,发生网把这些内容聚集在一起,让信息消费更容易,从而创造了价值;但如果我发现现在是上午11点一刻,很像知道12点那场电影票是否还有票,可以做到吗?发生、发生,就是要最鲜活的、最实时的信息,同样,这也是最难以实现的。上个礼拜在抓虾聊天的时候,我胡乱举了个例子,说我人在浦东,想知道现在徐家汇美罗城一楼的必胜客还有没有人排队。这条信息的获得,对于我是要花费47块钱出租车费和30分钟的时间才能知道的,而对于在美罗城下等男朋友、女朋友的小女生、小男生们,这条信息的获得代价就是回一下头,瞅一眼。

2. 实时。超级挑战的课题。因为必须有线上、线下人的参与,比如手机加定位,配上超级聪明的运营模式才行。

无论怎样,发生网终于发生了,让我很有满足感,因为有相同想法的人站了出来,勇敢的去实现。