Month: April 2009

爱做菜,爱生活

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

做菜应当有想法。

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

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

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

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

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