April 2009


小时候,家里的墙壁上有一张世界地图,新闻里提到哪个国家,父母就让我去地图上把它找出来。于是,我从小就比较熟悉各个国家的地理位置:这里是南非,这里是英国,这里是秘鲁——直到有一天,我很认真很好奇地问:那么“外国”在什么地方呢?于是全家人大笑,我才知道,“除了中国之外的所有国家,都叫外国”。
这可真是奇怪了,那些国家千奇百怪的,怎么能统一叫“外国”呢?许多年来,这疑问一直在我心里,尤其到了近年,更是不解:这一个简简单单的“外”字,不知道会遮蔽多少东西呢。

前段时间看《24城记》,有人说好,也有人说不好。我觉得还不错,亲历过、接触过大型厂矿和那些产业工人的观众,本片多半会勾出他们不算久远的记忆(譬如,办公室的招牌不是贴在门上,而是支出来挂在走廊里的),至少我是如此。照伽达默尔的说法,艺术就是“遮蔽—去蔽”的过程:创作过程中的熔铸,是为“遮蔽”,接受过程中的解读,是为“去蔽”,整个轮回结束,“艺术”才算完整(这也应了那句话:美是感受的认同)。要解读《24城记》,恐怕还是要有点生活经历,若纯粹“外人”的眼光来看,多半看不懂。
去年吴宇森的《赤壁》上映,争议横飞。我还记得英国《金融时报》的一篇文章,作者似乎很不理解,中国人居然要计较台词问题——他们非要演员在现代戏里说“古代”的话!没错,我们看《罗马》、《特洛伊》,可以完全不在乎人家说的是希腊语还是英语,更不用说古代现代了,但我们看《赤壁》计较台词也无可厚非——金庸在早年的一篇随笔里就写过,写小说要注意用词,“小心”就要写做“留神”;我也曾与《十亿消费者》的译者交流过,第一章“in charge of foreign affairs”的地道翻译,应当是“办夷务”(后改为“办洋务”)……这样的细节,单独说起来或许不足为道,但让观众觉得《赤壁》“不像那么回事”的,不正是这些方方面面吗?只是个中微妙“不足为外人道也”。(补充一点,看过《赤壁》之后,我也发现,好莱坞常用的“以小见大”叙事套路并非万能,在某些场合其实非常苍白)。

同样的道理,也适用于我们自己是“外人”的情况:我们看国外影片,纵使能听懂原声台词,记住的也往往是情节、人物之类粗线条,大量的细节(一首歌、一句话、一个场景),其实很难与我们的生活经历联系起来;回忆自己看中国电影的那种熟悉,就能明白,我们对外国片的接受,流失了多少信息。
桃花源的人说:不足为外人道也。但上面这种困境,恐怕是“没法为外人道”了。要解决它,只能转变身份,由“外”变“内”,当然,这往往是一个艰苦漫长的过程——我的一个朋友,本来英语已经很好,移民加拿大之后好几年,才兴冲冲地告诉我:他终于能基本听懂邻居们的笑话了。

我们阅读历史,往往希望(也确实能够)“把握”到那个时代的“主体”;然而仔细思考自己所处的时代,却未见得能把握到所谓“主体”——所谓“主体”之类,多是把持话语权的人,事后勾勒出来的,所谓“去粗取精”、“去芜存真”,经常放弃了太多的细节,而这些细节,正是置身时代之中众人的切身体会,既亲切,也可信。
李宗仁的回忆录提到,当年蔡锷上马,是先用力一催,待马儿跑出几步,才大步赶上,飞身跳上马鞍,“这才是真正的将军风范”;红军长征的日记,也写到在金沙江边架几大锅鸦片,随意船工吸食,才有大军一夜渡江的奇迹,更记载了大军在贵州畅饮几十缸陈年茅台的豪爽;唐德刚则说起,在美国的中国“小留学生”主办一些“中国文化”的聚会,颇让“老留学生”不满:这些小家伙,四书五经都没读过,在中国都没呆过多久,只是英语讲得好,又怎知道所谓“中国文化”……

我读书,时常能遭遇许多类似的细节。个人感觉,倒是这些细节成就了所谓“时代的感觉”,它们支撑了所谓的“主体”,依靠这些它们,我们的理解和想象才更加丰富而全面。也正因为如此,我手上的这本《红色新闻兵》,就显得尤其珍贵。
红色新闻兵,是“文革”中,新闻战线上一支造反派队伍的名号,也是一本书的名字:原《黑龙江日报》的记者李振盛先生,在文革时期拍摄了十万张照片,从中遴选了一百多张,结集成书。此书一经出版,便在国内外学界引发了巨大影响;然而事实上,在此之前,《新闻兵》中的照片就被广泛使用了,中央党校出版社的《回首文革(中国十年文革分析与反思)》初版封面就是李振胜拍摄的黑龙江省阿城县玉泉公社五万农民坐在山坡上观看中国舞剧团演出的革命芭蕾舞剧《白毛女》的彩色照片,而且,李振盛拍摄的红卫兵批斗黑龙江省省长李范五的照片,也被史景迁教授称赞为是“李最杰出的一组系列照片”。

当然,说这本书珍贵,不仅在于它真实保留了当年的细节,还有两点原因。
其一是,李振胜先生为拍这些照片冒了生命的危险——要知道,许多场面是不容许拍摄的,底片全部需要审查、上缴、销毁(这条规定也反衬了所谓“天真”、“被蒙蔽”说辞的荒谬——若真是热情万丈,干劲冲天,怎会连照片都不敢保留?倒是亚当·斯密在《道德情操论》中讲过,正义的力量就在于,一切不正义者,都不敢照章记录自己的事迹),偷偷保存底片,可算触犯了弥天大罪。
其二是,李振盛先生曾经专门学习过摄影(虽然是电影),许多照片都把握到了“决定性瞬间”(最明显的就是让和尚自我批斗的照片,他拍到了最具表现力的面部表情),既有平凡的真实感,又富于强烈的表现力——所以,张爱萍将军会为这本作品集题字——让历史告诉未来!

P.S. 阮一峰的网络日志: 李振盛《红色新闻兵》李振盛的blog【强烈推荐】。另,《八九点钟的太阳》DVD版花絮中收录了李振盛先生的访谈。

凡事皆有学问,好恶与否,基本取决于兴趣。若没有兴趣(也就是“趣味感”),便成了负担,相反,则乐在其中。我以为,做菜就是很有意思的事情,尤其是,每每在外面饭馆尝到好吃的菜,就有兴趣做“逆向工程”,回来悉心揣摩,竭力仿制,“仿到位”的一瞬间,成就感是无与伦比的。
可是自己埋头尝试,苦闷太多,终究不如“仙人点拨”。所以做菜本事了得的曹哥答应带我去餐馆后厨转转,就非常让我高兴。清明假期,去后厨看了半天,羡慕人家通明透亮的环境,琳琅满目的辅料,得心应手的工具;除了知道一些菜的详细做法,最重要的收获,还是悟道一些做菜的原则。道术相比,还是“道”更为重要,下面就列出我认为重要的几条原则吧:

做菜应当有想法。

做菜不是条件反射,要做好,心里必须有想法。好的摄影家在按下快门之前,必得有构思:这是一张怎样的照片,要表达怎样的含义。好的厨师也是如此,一道菜,在做之前,必须能想象,这道菜出锅之后的样子,是何种色泽,何种质感,何种香味——一句话,这道菜“到底是个什么意思”。把这一点想明白了,菜做起来就有了大的方向,其它各步、各细节,都以此为标准,为这个方向服务。
譬如,湖南菜里有一道“剁椒蒸芋头”,蒸出来,小小的芋头应当是晶莹粉嫩,具备独特的清香,配上剁椒,主要是为了冲淡颜色的单调,剁椒的味道其实不很重要。

做菜应当了解物性。
食料五花八门,各有各的物性。厨师要能够驾驭各味食料,实现自己内心的想法,就必须充分了解食料的物性,然后才能选择、搭配。举个简单的例子吧:同是常用的加香料,葱、姜、蒜却各有不同,若不了解它们的特质,它们对菜品的影响,不管三七二十一,都拿来直接下锅,就会破坏菜品本身的感觉(主要是味觉和嗅觉)。再举个例子:萝卜丝多见炖汤而少见清炒,土豆丝多见清炒而少见炖汤,这是由菜品的物性所决定的。更细致一点说,同是茄子,南方茄子软,北方茄子硬,大棚茄子水分多,所以有的适合煎,有的适合炒,有的适合蒸。如果对此毫无了解,不问出处,以不变应万变,结果必然就是败坏了菜品的口味。

做菜的火候很重要。
如今我国已经成为“食品添加剂大国”,超市里,各种调味料玲琅满目,让人目不暇接。然而要把菜真正做好,依靠调味料是绝对不行的——调味料确实能“提鲜”,但各种菜品都“提”出同一种“鲜味”,更不用说令人担心的健康问题了。相反,菜品本身是复杂的综合体,包括味觉、色觉、嗅觉、触觉等多方面的因素,要把握好这些,重要的就是火候。
所谓火候,主要指两个方面,一是火力的大小,还有就是加工的时间。两者互相关联,但不可互相代替。大体来说,火力决定菜的质感、形状,加工时间决定菜的生熟。
餐馆的肉菜做得鲜嫩可口,除了事先腌制的因素之外,也与火候有关:餐馆的灶台,火力大多很猛,下锅之后就可以让肉表面的蛋白质凝固,既能保持肉片的形状,又可以锁紧内部的结构和水分,翻炒几下便可出锅。而家里做菜火力大多不够猛烈,即便放了很多调味料,鲜美可口,终究缺乏质感,原因就在于此。要在家解决这个问题,切肉的时候就得有讲究,而且,一次绝不可下锅太多——这样,才能真正把握住火候。

还是那句话,凡事皆有学问,做菜也不例外。虽然它只是日常生活的一部分,但讲究也很多:我们去不同的人家吃饭,会觉得有些人家的饭菜很可口,有些人家的饭菜就很乏味,其实,这也是一种生活态度的表现。对此,曹哥有句名言:喜欢做菜的,都是热爱生活的人。

P.S.
曹哥跟人合伙开的新店,名叫“痴心不改”,英文注解是:Once & Always,我在厨房研习的时候,忽然想到另一条:Flavor, Forever,大家觉得如何?:)

本期beta技术沙龙的主题是“手机之家新系统介绍及架构分享 ”。手机之家是老高(高春辉)一手创办的网站,在我的印象里,上一次记得高春晖还是他的“高春辉的个人主页”,之后,好像就一直在折腾手机之家。现在的手机之家,每天PV超过700万,作为一个手机专业网站,相当了得(从我看到的数据,远远超过友人网)。

因为堵车的缘故,我赶到活动现场,演讲已经过去了大半,只抓住个尾巴。不过,手机之家有7年的发展经验,浓缩到这小小的讲座,即便只窥到一鳞半爪,也是很有启发的。

印象比较深刻的一点是Cache的结构。通常,Cache都被“扁平化”为单层的key-value对,这样的好处是,Cache的用户都可以方便地使用,没有太多的限制;而坏处在于,数据的结构被完全拆散了,同一个对象可能会按照不同的key来存储,而且各个对象之间的关联完全不存在了。
对这个问题,手机之家的解决办法是,在Cache和应用程序之间增加一个管理层,将程序员与Cache隔离开来,程序员可以不关心Cache的机制,只需要按照namespace(也就是划分层级的规范)来开发就可以。这个管理层,可以实现对Cache中对象的批量操作,也可以在某个对象发生变化之后,更新相关联的对象(直接更新父节点)。
这种办法的效果不错,而且演讲结束之后,还有朋友专门提出关于namespace的问题,看来,大家都觉得这思路很巧妙。

另一点印象就是老高他们重点介绍的DAL,也就是Data Access Layer,它把存储和缓存整个装到一起,与业务逻辑层完全隔离——业务逻辑单元完全只需要按照DAL设定的“增、删、改、查”四个接口操作数据就可以了。虽然普通的DBMS(譬如最常见的MySQL)也提供了这四种操作的接口,但相比DAL,一方面缺乏高效的缓存管理,另一方面,在大负载量、大容量下应用,还需要做许多工作;而有了DAL,前端程序不但不需要关心表的设计和结构,甚至连表的切分都不需要关心,相当省心。目前的DAL可以应付手机之家的现状,但PPT中也介绍了DAL 2.0的若干构想,包括提供类似Lucene(也就是全文检索)的查询功能,以及拆分核心功能、兼容插件的架构。
看得出来,DAL好像要从一个为手机之家打造的模块,变成“通吃(兼容)各家网站”的工具,在过去,有手机之家的经验做积累,对于未来的走向,也有明确的规划。我觉得,这是一条有风险、也有前途的路:一方面,对于通用组件的开发,我时常感到头痛,也许是经验不够的缘故,事先定义好的接口,往往(必然)被新冒出的需求所困扰,或者修改接口,或者眼睁睁把新需求踢出自己的“一亩三分地”,承认自己干不了;另一方面,之前固然有LiveJournal造出memcached的例子,但这样的几率实在是不高,况且,国内开源软件的氛围也与国外大不相同。
不过,无论如何,我都很佩服老高的这种“野心”:敢想才能敢干,而且,如果DAL真的能成功,成为“现成”的解决方案,就能省下大量的资源,投入到更有意义更有价值的地方,这绝对是一件功德无量的事情。

有兴趣的朋友,可以参考活动的PPT🙂

手机之家的架构分享
beta沙龙-手机之家架构的发展和变化
与”手机之家新系统介绍及架构分享”有关

P.S.手机之家还在招聘 PHP/Java 人手,有意者给老高发邮件: gaochunhui (AT) gmail.com