瞎折腾


因为工资是从建行发的,所以我最近开始使用建行的网银。这两天在新的PC(Windows 7 64-bit)上使用,总是出现这样的错误提示:“证书签名错误,参考代码:-10031”。

ccb_10031

上网查询,解决方案都是说插件安装不正确,要求去建行下载“个人客户E路护航网银安全组件”。我反复删除、安装,都无法解决问题。而且我发现,32位版和64位版都可以安装(建行的软件开发人员难道不检查操作系统版本的吗),但结果都是无法使用。在IE里查看证书,CCB的证书状态显示正常。按照网络上其他人的经验,更换其它USB接口,问题仍然无法解决。

最后不得已我尝试使用Firefox浏览器打开网银,此时提示变成了“未安装网银安全组件”,按照指示下载,得到的不是建行网站上能下载的 CCB_E_Setup_Total_20140819_x64.exe 之类,而是名为“中国建设银行二代网银盾E路护航安全组件(大明)”的RAR文件(该文件无法直接通过HTTP下载,但可以通过百度搜索得到)。解压之后得到一个可以直接安装的.exe文件,安装过程与建行网站上下载的安全组件完全一样,但安装完成之后,无论是Firefox还是IE,都可以正常使用建行网银了。

因为看到很多人在网络上询问这个问题,而且有相当多的人一直无法解决这个问题,所以我把自己的经历记在这里,希望对大家有用。

RAR文件
文件名:中国建设银行二代网银盾E路护航安全组件(大明).rar
尺寸:4,997,453 byte
md5sum:6548583e9541c1fb20eef621a6e2eec7

EXE文件
文件名:CCB_E_LCD_ONLY_32bit_2.1.4.3_20130926.exe
尺寸:5,008,800 byte
md5sum:25733348de8d1f6831ba4b14624f5855

有自己的价值观,就必然有自己的态度。之前谈过很多我欣赏的和肯定的,也有必要谈谈让我反感的。所以,不妨先列出我反感的几种流行作派。

我反感的第一条是搬出“某某(古人)说过”来解释中国古代的问题。如今这似乎成了一种流行的方式,搬得出来的古人古话越多,搬得越熟练,说的似乎就越有道理,也越发证明说话人有文化。

然而,用“古人说过”来证明“古代如何”必须符合下面的前提——古人,或者说大部分古人,确实是按照“古人说”的去行事的。不过这个前提似乎并不成立。在中国古代,能够认识文字,并且留传文字记录的人是少数,通常不是官宦人家,便是文人骚客。大多数人根本不识字,更不用说读书了,他们使用的语言也和书面记载的语言大不一样——否则,便不会有白话文取代文言文的“文学革命”了。对于大多数不识字不读书的人而言,别说孔孟经典,就是百家学说,都相当陌生(更何况,对孔孟学说的理解还在不断发展变化)。

(more…)

太阳底下到底有没有新鲜事?这是一个问题。如果有,为什么会有老话说“太阳底下没有新鲜事”;如果没有,我们每天分明又见到各种新奇的事情和问题。这到底是怎么回事呢?

不妨来看个具体的例子:同样是产生热量,我们可以给电热元件通电,也可以点天然气,还可以依靠摩擦生热,甚至还有很多我们意想不到的方式,每一种方式都其独特之处,这么看来,确实是总有新鲜事;但是从另一方面来看,这些方式可以归类为物理的、化学的等几大类,而其本质,无非是能量的转移,这么看来,说“太阳底下没有新鲜事”,又的确有道理。换句话说,“有没有新鲜事”取决于看问题的层面。通常,从具体细节来看,总是有新鲜事发生,但是分类归纳之后,往往并无新鲜可言。

不过,无可否认的是,面对新鲜事物,一句“太阳底下没有新鲜事”,即便是漫不经心说出来的,也非常有分量,充分体现出极具洞察力的专家的自信——我就知道会是这样;更进一步,不止自然科学领域,在社会科学领域,许多人也在寻找那些恒常不变的规律(或者也可以叫共性、要诀、招式),期望从此收获“太阳底下没有新鲜事”的自信。但是,他们真的能做到这一点吗?

且以近年来受极大追捧的经管类畅销图书为例,这些书之所以畅销,光看名字就已经可知道原因了:《追求卓越》、《基业常青》、《从优秀到卓越》……作者毫无例外地宣称运用科学方法分析得到了伟大(卓越)公司的经营秘诀,并且尽力将书写的生动有趣、引人入胜,旨在让读者闲庭信步间领略到“伟大的公司何以伟大”的秘诀——比如四大要素、六个步骤、八大法则等等,告诉读者成就伟大的公司并不是什么新鲜事。继而,依葫芦画瓢,也可以将自己的事业做到优秀,做到卓越……但是,就我的经验,这么做多半是缘木求鱼,充其量,可以算一厢情愿,只能体现人们对美好图景的幻象,具体原因在下面详述。

首先,经营公司要解决的问题,与自然科学的问题并不一样。自然科学解决的典型问题类似:生产某样产品需要多少原料,经过怎样的物理化学处理等等。但是公司经营要解决的典型问题则类似:根据有限的资源,到底是生产产品甲,还是产品乙,如果选择产品甲,需要按照什么次序,投入多少资源,有多大的市场,预期可以获得多少回报……每一个问题都是新鲜的,都需要具体分析。实际上,畅销的经管书籍也被迫承认这些方面没有多少成文的规律可循,它们大多以“需要有一个清楚而持续的战略”之类的说辞来敷衍。实际上,战略是否清楚,很可能是随着公司的经营而逐渐明晰的,而且很可能需要经常调整战略,所谓“清楚而持续的战略”,更多是事后的总结和包装,并不能在事前确认。

其次,公司经营的成败,很大程度上取决于与竞争对手的互动态势,而经管畅销书往往对此语焉不详,似乎更注重“内功”。实际上,与竞争对手的互动是非常考验脑力的:对这个对手,可能需要采取这种方式,对另一个对手,又需要采取另一种方式;更复杂的是,对手可能会根据你的应对做出调整,于是这一轮应对结束,下一轮应对开始……了解博弈论的人知道,随着双方的互动,形势的复杂程度可能呈指数级增长。同样的策略不可能适用于所有的对手,甚至对同一个对手,在不同的时机,也需要采取不同的策略。某个企业努力将生产效率提高了一倍,同时竞争对手提高了三倍,或者另辟蹊径抢走了市场,这样的例子是屡见不鲜的。

再次是执行,现在流行的说法是“执行至上”、“无缺陷执行”,但是经营过公司的人都知道,不同的人对“执行”的理解并不相同,同一个目标,不同方面的执行力度也是不同的。有时候需要“一鸣惊人”,确保产品在交付时没有任何缺陷,有时候又需要“先开火再瞄准”,一边运营一边改进。在这样复杂的局面下,“执行至上”或者“无缺陷执行”更像是动听的口号,却并不能产生现实的意义。

最后,卓越的公司,很少有始终“追求卓越”,从一而终地贯彻某些恒常不变法则的,它们的“卓越”,更像是一根链条——在每一个时期,在每一种环境下,采取了正确(或者说没太多错误)的策略。Intel在1985年决定全力进入周期较长但利润丰厚的微处理器领域,这是一个冒险的决定,可以肯定的是,当时的Intel并没有刻意追求“卓越”。这些环节前后相继,总的来看才能成就“卓越”,但由结果去倒推,断言甚至要求一直追求长期的“卓越”,则属于本末倒置了。

所以,我的观点是,在社会科学领域,尤其是在公司的经营管理上,很难说“太阳底下没有新鲜事”——每个阶段,每个方面,我们需要解决的问题都是新鲜的,正像之前在《收割庄稼V.S.砍伐大树》里面说的:解决这些问题并不像收割庄稼,而更像砍伐大树,而砍伐每一颗树时,都需要注意到它的形状和方向。如果一定要追求“没有新鲜事”的境界,找到什么恒常不变的法则,很可能只能“到此为止”:这些法则是每个阶段、每个方面、解决每个问题都必须遵循的一定步骤,却不是伟大公司的充分保证。当然,“成就伟大公司并没有什么恒常不变的法则”,倒真不是什么新鲜事。

我的父母都是大学生,但严格说起来,我家并不算“知识分子家庭”:我父亲是学无线电的,母亲是学分析化学的。充其量也只算是“双料理科”家庭,少点人文气息;小时候没读过什么人文经典,不过爸爸妈妈从来都不给我太多的限制,只是根据我的兴趣,讲讲各种有意思现象背后的原理。而且,托“理工科”的福,我很小就在母亲实验室用氢气充过气球,用水银温度计测过温度,用比自然教科书上精密得多的仪器制过蒸馏水;也在父亲实验室的示波器上见过各种无线电波的“样子”,在中秋节用天文望远镜看过月亮上的环形山…当然,为此也弄过不少笑话:小朋友们都喜欢互相吹嘘自己父母的工作,有的说自己爸爸是解放军,有人说自己爸爸是大干部,我说“我爸爸是研究电子枪(电子枪是阴极射线管显示器里的元件)的”,当即引来大家的不服气,而且老师也没听说过什么是“电子枪”,于是宣布我在吹牛……

读大学之后,曾有一段时间我总抱憾小时候缺了“人文经典”的课,但这些年陆陆续续看了些书,看法又有改变:虽然没动多少人文,但大言不惭地说,好歹受了点科学的熏陶。真正的科学,总是能“养住”人的好奇心,把精力引导到大千世界的奥妙中去;即便不从事尖端的科学研究,多了解一点点科学,也能大大丰富自己的认知,看到与之前大不一样的世界,生活也会因此多了不少妙趣。

但是,要保持对科学的兴趣,对我们来说并非易事。现在许多人说起“科学”,想到的要么是不苟言笑、木讷寡言的孤僻,要么是全知全能、四处指点的霸气,所以多少有些“敬而远之”的味道。我有幸从小就接受科学的“浸染”,能够以柔润自然的方式体会到科学的妙趣,欣赏知识之美,并保持至今;另一方面也时常有些惋惜,我们本身就缺乏科学的传统,当今的科普又缺乏“柔润”,所以科学或被奉为神明,或被斥为外夷,总之就是“科普不得法”,许多人抱怨生活无聊乏味,这或许也是原因之一。

不过,科学松鼠会算是科普中的异数。借用革命导师的话说,“让科学流行起来”的口号,给科普增加了中国作风和中国气派;虽然某些人觉得不够严谨,但事实是最有说服力的:以我的经验来说,活动总是妙趣横生,嘉宾也总是和蔼严谨,这正是我所欣赏的“柔润”的方式。尤其是创始人姬十三,我见他之后最高兴的是:如今终于可以正经讨论我看《恐龙特急克塞号》时的奇怪念头——“如果几千万光年外的外星人,看到了恐龙灭绝的情形,用录像机录下来,再传回地球,我们就可以知道恐龙灭绝的原因了”,这样的人作“大当家”,还有什么好说的?后来参加“科学嘉年华”的经历,更是肯定了这一点。

在北京的时候,我参加过松鼠会好几次活动,大感意外的是,有许多年轻的家长带着孩子来参加松鼠会的活动,看到他们,我总是想起自己的童年,继而心生羡慕:他们要更加幸福,因为他们遇到的科普更丰富,更好玩,也更深刻;这样的孩子,一定能从容面对科技更加发达的生活。

今天看到松鼠会“寻科学逃兵”的活动,我立刻答应帮忙吆喝两声:年轻的时候,能做点自己真正喜欢的而又有意思事情才好,哪怕累,也是有意思的累(借用韩寒的话说,等你老了回忆自己的年轻岁月,至少敢说真正做了点有意思的事情);真正对科学有兴趣的同学们,不妨大胆去争当“逃兵”,我相信,科学的逃兵,能在松鼠会“淘”出点意思。

——————————【北京 and 上海】招聘职位分割线—————————–
科学编辑
科普图书编辑
实习编辑
IT实习生
NGO合作官员
媒体品牌主管
会计
公益活动志愿者

http://songshuhui.net/job/

时间在流逝,年龄在增长,我们的生活中,规律、克制的成分越来越多,电脑游戏,已经退化萎缩成偶尔偶尔出现的点缀,但是旧日记忆却终究无法忘却;譬如我,总无法忘记1995年那隔行抽色的动画——散发着神秘气息的绿色WESTWOOD,在水波纹里慢慢浮现,又慢慢漾开消失,记得当年一个叫卫易的专栏作家写过:我曾经无数次地戴着耳机奋战在深夜,只因为无法忍受没有音乐的C&C。

1998年的夏天,我在同学H的家里第一次见到了那个游戏,银光闪闪的战舰,喷出巨大的火舌,顷刻间,强櫓灰飞烟灭。他告诉我说,这是《星际争霸》。然后,就开始无止境的厮杀,我因为家里管得严,自己的电脑玩不了(当时用的486),多数时候只能短暂观摩;班上有几个同学,每天省下午饭钱,去学校后面的电脑房玩《星际》,若干次被学校领导抓住,拍下录像全校公开放映批评也在所不惜;同学X天资聪颖,负责帮老师收奥赛班的学费,每次上缴之前会先“挪用”了叫大家去一起玩,以后再东拼西凑出来交给老师(这就是原始的无息贷款啊);有一次上语文课,易老师说:你看你们这几个同学,肯定又是玩电脑去了,为什么呢?用一个词来行容,就是目光迷离…;当时网络很不发达,于是大家每个月争相去买各类游戏杂志,只为看上面的战报,结果我们第一次知道了有个加拿大小伙子叫GRRR,知道了克隆,如今看来朴实甚至粗陋的文字,总能勾起大家无尽的遐想……
之后上大学,CS兴起了,网络游戏(龙族、万王之王)兴起了,一小撮星际的爱好者只能在学校地理系(现在的城市与环境科学学院)机房里厮杀,我当时总在图书馆,看书累了就去玩两局,ID是1st……

毕业之后,就没玩任何电脑游戏了,即便公司有时为了沟通感情,组织大家玩CS,也只是敷衍敷衍;直到07年数字电视开通的那一天,我发现居然有个频道叫“游戏风云”,播放的是熟悉的星际的画面,于是往日的记忆瞬间就穿越了时间的距离……我清楚地记得,当时的演播环境还很原始,大师(大师是玩家对郁小刚的爱称,他因为对战术的深入把握,赢得了“泛亚太第一流的战术大师”的美誉)出场的时候,我们打趣说这是哪个网吧的老板,Alone(注:Alone是PLU的工作人员,常年坚持解说星际比赛,以插科打诨见长)到现场来,仍然穿着凉鞋,而导播居然没有注意……
2007,2008,2009,2010,这四年来,游戏仍然玩的极少,只是陆陆续续看了些《游戏风云》的节目,眼见节目逐渐有了自己的风格,细节也逐渐完善,有了冠名,有了定制服装,有了宣传动画;看到他们的每一点进步,我心里都很佩服:毕竟,这是没有人涉足过的领域,也是不确定性非常大的工作,但到底有人坚持了下来,难得的是,节目一直在成长。所以,面对2009 PLU星际第一人的决赛的门票,我毫不迟疑地买下了。

2010年4月18日,在上海华山路680号上戏剧院,我目睹了一场老男人的聚会,举目看去,大家的年龄都差不多。星际争霸,是专属于那个年龄段的记忆。

(more…)

从某种意义上说,人的一生,就是不断突破个体经验的局限,解决未知问题、体验未知生活的过程——否则,我们只需要简单重复劳动,就足以应付了。也正因为如此,要避免在未知局面下的束手无策,借鉴前人/他人的经验,就是非常有效而且高效的做法。今天我要谈的这本书,正与他人的经验有关。

97 Things Every Software Architect Should Know,这是一本很“奇怪”的书,书名很“托大”内容很“平实”的书。我与这本书结缘也很奇特:去年博文视点的编辑徐定翔告诉我,正在翻译一本书,请我帮忙看看译稿,提提建议(后来才知道译者还有阿里B2B的章显洲)。我虽然没做过架构师,但恭敬不如从命,就答应了。

开始,我关注更多的只是文字和专业名词/术语方面,从技术本身的考虑比较少。因为一来自己不是架构师,也没有这方面的经验;二来,这种口气的标题,总觉得有点狂妄。不过,跟着译稿一篇篇看下来,我的看法逐渐改变了:虽然这本书更类似97篇随笔,但到底是经过选择和编辑的,即便“随笔”,也是围绕着“软件架构师”的“随笔”,它们大致勾勒了架构师这个职业的方方面面——职责、权力、问题等等,我之前以为架构师更多地偏向技术方面,也就是负责“规划”整个软件系统的结构,但本书各位作者,都认为架构师应当是甲方和乙方之间的桥梁,一方面,负责准确理解客户的意图,另一方面,拿出规划给技术部门实施。也正因为这种定位,软件架构师虽然大都是从技术人员成长而来,却不能继续埋头在技术(技术架构)的道路上走下去,而需要补充多方面的知识,培养多方面的能力——怎样与客户沟通,怎样选择合适的架构(不能仅仅从技术方面考虑),怎样说服(注意不是命令)技术部门采纳自己的方案。书中不仅点出了这些问题,也给出了一些解决的建议;譬如第85章就告诉读者,说服甲方,仅仅依靠技术的术语是远远不够的,必须把整个技术方案包装成有吸引力的商业模型,这样说服力才会大大增加。如果希望成为称职的软件架构师,此类知识还是尽早了解的好,毕竟,都依靠自己去摸索,在挫折中学习,实在很不划算。
另一方面,架构师也脱离不开技术,所以,技术人员阅读本书,又可以从另一个角度(也可以说是更高的层次)来审视自己的工作及其意义,我的感觉是,一些经验,自己之前只有模糊的认识和体会,但书中的文章它们挑出来,表述得更明确、更到位,于是自己心里也更加有数了。譬如第82章指出“你客户的客户才是真正的客户”,这是非常之对的,而许多技术人员因为自身角色和视角的关系,往往很少意识到这一点:假设你给客户开发了一个电子商务网站,该网站的信誉评价功能不够完善,对此,你的客户可能仅仅认为“这个功能需要改进”,而客户的客户,也就是真正使用这个网站的人,他们的反应很可能是“这个网站买不到真货”,选择离开。有句俗话说:聪明人就是能多为别人着想的那种人。如果能够明确且重视这一条经验,甲乙双方的合作很可能就会融洽得多,技术人员的价值也会随之上升许多。类似这样的经验,书中还有很多,作为技术人员,阅读的时候很可能会感觉“于我心有戚戚焉”,至少,我看到“要经常反思自己做过的项目”时,就是这种感觉。

鱼与熊掌不能兼得,随笔专辑性质的书,照顾了“广”,就难以照顾“深”,因此,在亚马逊网站上,指责的意见都是针对这方面的:lack of detail,random accumulation…。但是我想,书有很多种,定位当然也不一样,应当各司其职——满足了自身定位的书,就是“好书”。这本书也是如此,读者权当这是在旁听架构师的茶话会好了——资历尚浅的听一听,开阔开阔自己的眼界,资历深的听一听,整理整理自己的经验,都能收获愉快的阅读体验;况且,还有平时难得听见的“小道消息”——世界上最先进的F22战斗机,对飞行控制的要求极端严格,应当选择怎样的软件;M1A1艾布拉姆斯主战坦克,开炮的时候会产生极强烈的电磁脉冲干扰计算机工作,这情况下要采用什么数据库……

Down with GFW

by yurii

In a place no one can tell,
dwells gfw, the great firewall,
like a demon from the hell,
valuable information, it blocks them all.


Bureaucrats said, internet opens a door,
meanwhile, they shut out sites for fun,
day by day, the wall grows tall,
one by one, bypass software fall down.


People told me, the wall’s father is  Fang,
something of, a so-called scientist,
for his idea, netizen’s nightmare begun,
due to his wall, websites became “connection reset”


GFW, down with you!
Sooner or later, we will get back our own view!

Comment: In 1987, China sent out its first email declaring “Across the Great Wall we can reach every corner in the world!”

GFW, go hell!

beta技术沙龙越办越有意思了,上次错过了阙宏宇的mod_cache(还有关于线程进程的讨论)就很可惜,这次关于Lucene的演讲,是无论如何不应该错过了。

到目前为止,全文检索已经完全不算高技术门槛了,记得以前看过一本书里面写:“今天,任何程序员,都可以很容易地构造一个全文检索应用”。是的,全文检索的基本原理大家都知道差不多了,剩下的只是实践。我见过纯粹自己开发的,具有AS(Advanced Search)、BS(Basic Search)、DI(Digest)等结构,“像模像样”的全文检索架构,不过应用更多的,却是在开源项目上完善、定制而来的,Apache的Lucene就是众多开源全文检索项目中,名气最大、资格最老、应用也最广泛的一个。本期beta技术沙龙,讲的就是大型网站中lucene的应用,主讲人是手机之家团队的唐福林(“手机之家”总是有些东东来共享,比如上次的DAL,这真是不错)。

众所周知,用Lucene构造一个“索引-查询”的应用是非常简单的,搭好环境,参照(修改)示范代码,很容易就可以成功。但是,要构造一个真正大规模、稳定、可靠的应用,就不说这么简单。程序的编写、模块的分布、架构的设计,都有许多费心思的讲究。按照PPT提供的数据,手机之家目前的Lucene应用,采用的是Lucene 2.4.1 + JDK 1.6(64 bit)的组合,运行在8 CPU, 32G内存的机器上,数据量超过3300万条,原始数据文件超过14G,每天需要支持超过35万次的查询,高峰时期QPS超过20。单看这些数据可能并没有大的亮点,但它的重建和更新都是自动化完成,而且两项任务可以同时运行,另一方面,在不影响服务可靠性的前提下,尽可能快地更新数据(如果两者发生冲突,则优先保证可用性,延迟更新),其中的工作量还是非常大的。

演讲的主要内容都PPT里,非常丰富,我就不再赘述了。要补充的是,这份PPT做得非常清楚,需求-目标-进度-设计-上线-测试-上线,整个流程非常清楚,给出的数据同样非常精当,我想,这也反映了手机之家团队的开发规范。

因为对Lucene的使用稍微有些经验,我在这里补充几句,权当狗尾续貂:

  1. 在大规模的应用中,Lucene更适合用于狭义的“搜索”,而不应当负责数据的存储。我们看看Lucene的源代码也可以知道,Document和Field的存储效率是不够好看的。手机之家的团队也发现了这一点,他们的办法是,用Lucene存放索引,用Memcache + Berkeley DB(Java Edition)负责存储。这样有两个好处,一是减小了Lucene的数据规模,提高了程序的效率;另一方面,这套系统也可以提供某些类似SQL的查询功能。实际上,Lucene Project自己似乎也注意到了这个问题,在Store中新增了一个db选项,其实也是利用的Berkeley DB。如果仅仅用Lucene存放索引,而不存放Document,并且合理配置,一台机器可以支持几十G甚至上百G的索引;如果需要用Lucene存放索引,最好在读取时使用FieldSelector,只读取需要的Field,如果使用恰当,性能会有10%左右的提升。
  2. 在大规模应用中,Cache是非常重要的。PPT中也提到,可以在程序提供服务之前,进行几次”预热“搜索,填充Searcher的Cache。据我们(银杏搜索)的经验,也可以在应用程序中,再提供针对Document的Cache,这样对性能有较大的改善(同一个JVM内部的Cache,速度更快一些)。Lucene自己似乎也注意到了这个问题,在2.4版本中提供了Cache,并提供了一个LRU Cache实现。不过据我们测试,在极端情况下,这个Cache可能会突破大小限制,一路膨胀最后吃光内存,甚至从网络上找的许多LRU Cache实现在极端条件下都有可能出现这样的问题(这也是我们百思不得其解的地方:反复检查程序的逻辑都没有问题),最终自己写了一个LRU Cache,并修改多次,目前来看是稳定的。
  3. 在编写Java服务程序的时候,记得设置退出的钩子函数(RunTime.getRunTime.addShutdownHook)是一个非常好的习惯。许多Java程序员都没有这种意识,或者有,也只是写一个finalize函数,结果程序非正常退出时,可能造成某些外部资源的状态不稳定。拿Lucene来说,之前的IndexWriter是默认autoCommit的,这样每添加一条记录,就提交一次,好处是如果中断,则之前添加的记录都是可用的,坏处则是,索引的速度非常低。在新版本中autoCommit默认为False,速度提升明显(我们测试的结果是,提高了大约8倍),但如果中途异常退出,则前功尽弃。如果我们添加了退出的钩子函数,捕获到退出信号则自动调用writer.close()方法,就可以避免这个问题。
  4. 目前的Lucene是兼容JDK 1.4的,它的binary版本也是JDK1.4编译的,如果对性能要求比较高,可以自行下载Lucene Source Code,用更新版本的JDK编译出.jar文件,据我测试,速度大约有30%的提升。
  5. 如果对并发的要求较高,可以考虑采用多IndexSearcher的技术,也就是在一个应用服务中,开启多个IndexReader(可以对同样的索引开启多个),每个IndexReader再生成一个IndexSearcher,将这些Searcher放在一个“池”里头,给搜索请求调用。这样可以大幅度提高并发的性能,代价是在写程序的时候就要考虑到这一点,进行相应的调整。

P.S. 据我观察,国内公司内部的项目,一般取的名字都中规中矩,以’er’结尾的比较多,多是Indexer, Crawler, Layer之类。好像很少有外国那种“天马行空”的奇特名字,譬如Hadoop(这是一个“没来由”的名字)、Lucene(这是个少见的姓)。国内我接触过不多,以前抓虾有个重要的DB叫tudui(“土堆”),目前银杏有个项目叫LaserTank,都是跟实际用途毫不相关的,印象反而深刻。

虽然医生嘱咐要静养,可谁让“小姬看片会”那么好玩呢?周六下午两点钟,我顶着大太阳来到微软亚洲研究院地下一层的会议厅,加入了第9期小姬看片会。

本次看片会的主题是“人工智能如何改变世界”,选的影片是BBC的VISIONS OF THE FUTURE。这样“科技含量高”(用松鼠的行话说,就是“高级”),又比较偏IT的主题,放在这里举办(尤其还有免费饮料提供),真是再合适也没有了。
参加的人很多,看来大家热情都比较高,我首先找了个僻静地方“潜伏”下来,过会儿居然有人来打招呼,一看居然是刘未鹏,不久又遇到图灵的刘江老师。寒暄一阵,眼看影片要开始了,我提议搬三把椅子坐到中间的过道里,这样比较靠前,大家一致同意,于是搬了三把椅子,在过道里前后排成一列,影片正好开始。

影片分好几个方面,介绍了广义上的“人工智能”:模拟人类行为、虚拟现实、机器与生物的结合等等。关于狭义的“人工智能”,也就是与“智慧”相关的内容,并没有占太多的比重。我觉得,作为科普影片,这样的安排,是没有错的。
影片结束之后,照例是嘉宾与观众的互动环节,这次的嘉宾都很“高级”,几乎都是IT专业人士,即便有研究科幻非IT人士,来头也相当大。难能可贵的是,他们回答起问题来,丝毫没有普通人想象中的“死板”,而是妙趣横生,许多时候台上台下笑成一片,这正好应了松鼠会的口号:让科学变得有趣。另一方面,它也说明,活动办得非常成功。

我不是研究人工智能的,只是以前稍微看过一点点资料,参加完这次活动,也有两点想法,可惜小姬没给我当场提问的机会(观众实在是太热情了),写在自己blog上吧。
关于“人工智能”,我想大概可以分为好几个方面,之一就是“仿真”(也就是模拟生物体的机能),在片中我们可以看到,现在已经有机器人可以惟妙惟肖地模仿人类的许多行为,譬如会走路的机器人Asimo;换句话说,神秘而简单的生物行为,可以通过物理模型、数学公式来分解,加以实现。人类“潜意识”里的某些“感性”动作,譬如“向前走五步”,可以转化为一系列精妙的指令,以另一种方式来“理性”实现。当然,这个方面也存在困难,譬如王启宁博士所说,用电气元件模拟生物行为,总是存在若干困难,因而有时候,“电气元件–生物”混合的方式,反而效率更高。这一点在影片中也有提及,研究人员记录了小白鼠脑内的海马区(与短期记忆相关的区域)在不同情况下的电流脉冲,再照这些规则制造出芯片,植入小白鼠体内,据称“反应速度提高了40%左右”。我对这个例子很有兴趣,可惜,它在影片中只是一带而过。
另一个方面,也是大家非常感兴趣的方面,就是“机器能否具有智慧”,或者说“机器能否像人一样思维”。这个问题,关于这个问题,前面有过著名的图灵检验,后来塞尔教授又提出过“中文屋子”问题,于是产生了“强人工智能/弱人工智能”的分野。按照程序的逻辑,我们关心的是“接口”,而不是“实现”。也就是说,不管我们面对的“其实”是机器,还是人,只要我们无法做出区分,就可以认定,对方“就是”人,虽然就其“本质”上来说仍然是机器。我之所以对那个小白鼠的例子感兴趣,原因也在这里:如果我们不去关心这些脉冲所“承载”的意义,而只是在“黑屋子”外,模拟我们观察到的一切,能产生完全相同的结果,那么或许可以说,电脑模拟的这些信号,本身也“承载”了同样的意义?
关于这个问题,现场的毛老师也提到,关于“什么是人(智慧)”,我们目前可能很难给出一个确定的定义,而只能通过多个特征加以描述和归纳,如果机器实现了这些特征,我们仍然“愿意”觉得,这还是与人有区别的,或者说,大家心中,其实多少还有一点对“人类本质”的偏执。在我看来,这有点类似波普尔所说的“本质论”和“标签论”的关系,通过“贴标签”而不是“追求本质”的方式(譬如把某种现象定义为“重力”而不是研究“重力的本质是什么”),科学已经取得了长足的进展,未来有一天,如果我们彻底无法区分面对的是人还是机器,我们是认定“这就是人”,还是心智紊乱,或者苦心积虑地找到另一种“定义”,把对方排除出“人”的范畴?这是个有意思的问题。
另说一点,在看片的时候,我忽然想到象棋与围棋,机器“深蓝”已经可以在国际象棋上打败人类世界冠军,但是对于围棋,目前人工智能却束手无策,最好的围棋程序,也敌不过一般的围棋爱好者。大家认为,主要原因是围棋的可能性太多,决策树太过复杂,超过了目前计算机的计算能力。如果人类的大脑能够处理这样两类计算量迥然不同的任务,这到底说明,我们理解棋类游戏的算法思路有问题(也就是说,大脑的运算能力是一定的,只是我们还没找到围棋的高效算法),还是人类大脑的运算(思维)能力,其实是不能以单一维度衡量的(从某个维度上来说,在解决围棋的问题上,大脑可以展现出远远高于象棋的计算能力)?

好了,闲话这么多,就此打住。最后给松鼠会提两点意见:
1.我看片的时候,听讲解的同时看了看字幕,发现字幕有一些翻译错误,所幸不是很严重。因为字幕是合成在影片一起的,所以,这样的问题也不能怪罪松鼠会。不过以后准备材料时,多注意一些这样的细节(如果同一部片子有多个字幕,不妨选择质量最好的那个版本),另外互动环节如果出现问题应该当时纠正(比如有人说“吃转基因食品,我们的基因就会随之变化”,应当有人马上澄清),可能更好点。
2.如果能够在影片结束后,做一些入门性的背景介绍(譬如这一次的,可以介绍图灵检验,中文屋,图灵完备性等概念),这样可以真正“以科普为中心”,而不会“以影片为中心”,对主题起到辅助和补充的作用(而不限于影片所介绍的知识),在专业的嘉宾和热情的观众之间夯实基础的沟通桥梁,效果可能更好。

杭州的事情,一路看下来,已经没什么好说的了。我委实很难想象,也更难以理解,要怎样的教养,才能在撞死人之后能够无动于衷,漠然地坐在车里,遮住脸孔;

我也难以理解,要经历怎样的阵仗,才能面对这样的境况,依然谈笑风生,镇静若素……


再看接下来的表演,我只想到蒲松龄的那句话:“禽兽之变诈几何哉?只增笑尔”。古人尚且知道,扬汤止沸,莫如釜底抽薪。“担心引起群体事件”之类拙劣的借口,哪谈得上什么“尊重传统”,纯粹就是对传统的彻底倒退和背叛。

在这样的现实面前,你再去看去年那句著名的口号,只会想到两个字:荒谬!或者,我们不妨把它改得更确切些:

One City, Two Worlds!

Next Page »