2009年12月15日星期二

爱党爱自由


您看到的这篇日志标志着我已经 暂时 突破了"Great Fire Wall"的封锁 :-)
步骤如下:
  1. 这里
  2. 针对部分网址添加代理 ipv6.google.com:80,我用的是这个FireFox插件,添加的两个网址规则是 http://([^\.]+\.)?blogspot.com/.* ; http://([^\.]+\.)?blogspot.com/.*
btw 为mininova默哀三分钟..它甚至还在我的链接列表里 ><

2009年4月20日星期一

处子诗——给我的她

哭吧
亲爱的

似该将你拥入怀里
细语道
别哭
可现在我却要说
哭吧
亲爱的

天空哭泣了
淅淅沥沥的雨滴褪去尘土
泣至浓情处
虽人人抱怨交加的风和雨
却难不迷恋雨后天晴的恬静

婴儿哭泣了
柔弱的小手掌挥舞着
努力驱散方才的不快
泣至浓情处
妈妈无奈而又心疼
却知也许待会
宝贝就会在臂弯里睡去
谁能不迷恋那甜甜的
浅浅的笑容

哭吧
亲爱的
黑夜给你我黑色的眼睛
我们却用它寻找光明
要我说
还有哭泣呢
狂风骤雨撕裂绝望
走过那桥梁
便成了
旭日
希望
和涅磐

因此
哭吧
亲爱的

2009年3月18日星期三

Mini Introduction to Factor Graph & Sum-Product-Algorithm

I'll give a brief presentation tomorrow in class.
The following is my slides :

2009年3月16日星期一

The past Pi Day

March 14 is known as The Pi Day, quite funny :-)

U can find more at its offical site.

The pity is that online-shop under the site seems not available for the time being, however u may get what u want at here :P

First 10,000 bits of Pi can be found at here


2009年3月14日星期六

All about ACM Honored Class

“人生到这个世界上的唯一职责就是活下去,去证明自己的生命,自己的反抗,自己的自由”
—— Albert Camus

“只有为他人而生活的生命才是值得的”
—— Albert Einstein


O.我像每个涉世未深的、受过教育的年轻人一样,受困于我们为什么存在于这个世界上、为什么周而复始地学习劳作、该怎样寻找自由这样严肃而颇为深奥的问题,也经常让对个人、家庭、国家、民族、人类、宇宙、时间的思考占据整整一个午后,任由思绪的跳跃。当我还没有作好准备去迎接这些问题的挑战之时,我走进了ACM班的课堂,往后伴随着来自老师和同学不经意的只言碎语,这些问题,毫不客气地与公式、理论、模型争先恐后地索取着大脑每一分钟的运转以及脉搏的每一次跳动。即便一天永远只有二十四小时,去除必须的睡眠、被附以种种理由的玩乐、对新鲜事物的流连忘返所占去的时间,我并不觉得去思考这些问题是一种浪费,至于精力就更不用担心了,闭眼睁眼,它就回来了。这个班级乃至真正的大学存在的理由,正是在于给一群尚显脆弱的追梦者提供最初的、宁静的家园,将陈旧的枷锁、对梦想的嘲笑、对思索的逃避、对身份的焦虑、对暂时无知的苛求尽可能地挡在门外,而门上赫然可见:患得患失行往他处,怕苦怕累勿入斯门,无怨无悔。

任何一代人不光有他们的爱与恨,更有使命,我相信走出ACM班大门的那一刻,每个人都将接过接力棒,科学家、学者、企业家、工程师、教育家、作家、演说家等等,无论身为其一亦或兼任述职,都将成为革新力量的贡献者,成为书写未来的浪漫诗人。

今日离我怀揣朦胧向往怯生生踏入那扇大门已经五个学期有余,那么,做对了什么?做错了什么?坚持了什么?放弃了什么?得到了什么?给予了什么?自问自答。

I.做错了什么?

-没有自己的风格。
还在中学里念书的时候,时常手头做着物理题,环望四周,发现别人都在做数学,便会放下手头的物理,心想还是先把数学做了吧,这样有问题大家还可以讨论一下。步入大学,进入ACM班,面对相当数量可自由支配的时间与经常同期而至的几件事情,我就像无头苍蝇一样在它们之间撞来撞去,这个做一点,那个看一点,于是最后都没做好做完整,还让自己始终处于一种焦虑的状态。这是一种依靠,对于陌生的情况,我企图依靠别人给我一盏指示灯,却不想迷失在五颜六色中,空留困惑与烦躁。

-没有在实践中追求真知。
在过去一段时间的学习中,我曾经相当地呆板,我把课本当成了小说,并没有在精读前浏览通读的习惯,这导致我有时会固执地纠结于某个细节,当最终再翻几页,才发现先前的功夫并不是所谓的“独立思考”,仅是无意义而浪费时间的。在计算机科学这样一门实践占很大比重学科的学习中,我曾经拒绝一边看书一边动手,而是非要等到书看得差不多了,才着手应用,或者因为没有时间根本就流于纸上谈兵。事实上边做边学并不需要付出多少代价,如同单元测试,可以尽可能早的就地更正理解上的错误,因而过去我常常在考场中发现有些东西只是看的时候我以为自己理解了而已,经不起敲打,现在阅读的时候我通常在一边放上一支铅笔、一张纸。

II.做对了什么?

-将美与简洁作为追求与评判依据。
这里所说的美与艺术范畴的美是有区别的,后者需要特殊的天赋,而前者则是有规律可寻、是每个人都能够也应该铭记于心的东西,通过阅读并且在实践中的运用和体会,就能体会到这种美给自身与他人带来的愉悦;至于简洁,本身就是美的一种体现,也是减少潜在错误的有力武器。

-不断的自我审视。
对自己决不麻木不仁,当感觉到问题的存在,就应当剖析它、试图解决它,这也是我现在觉得自己终于走出了前几个学期的阴霾的原因,从一开始认为自己只是因为太懒惰了,接着觉得是因为自己不讲究学习方法的“技术问题”,后来认为原因是没有把心态摆正、太盲目高估自己,直到最后发现是因为潜意识中对他人的依赖,这就像个漫长的 debug 过程,却别在于,当你找到一个方案后运行时测试的代价并非朝夕,但肯定远小于回避导致的代价。

III.坚持了什么?放弃了什么?

-坚持用自己的光亮照亮自己
胡适先生有一句格言:“多研究些问题,少谈些主义”。在追求科学与真理的过程中,尤其是愿意进行深刻思考的人,会陷入一种信仰,或者主义,但这种信仰很可能是盲目的,虔诚被人认作是一种美德,但请仔细想一想,全盘地接受一套制度、跟从一种说法,实际上把人带入了臣服、懒惰、压抑的境地,况且一旦此时萌发了不同于说教的想法,会感到恐惧、没有安全感,因为这是“他们”的标准,做得再好,也只是“他们”,而不是“我们”,把自己至于月亮的境地,当背向太阳时,就将冰冷无比而感觉不到生命的炙热。“答案只有一个”,“幸福的家庭都是相似的”,然而通向真理的道路却是取之不尽而各不相同的,对于每个个体而言。

-坚持浪漫的态度
革新、学习、爱,如果坚持生活、拥有一种浪漫的态度,那它们就可以免于分离而得以融合,几乎所有被我们津津乐道的科学巨匠都是浪漫的生活诗人、生活乐师,而今天许多从事科研的人却丢失、或者主动放弃了这种宝贵的特质,很遗憾也许他们至多能被称作学者,而非大师,也正是这个原因科学这一充满情趣的词汇可能被社会误解。我愿意摘录印度大师 Krishnamurti 的文集《人生中不可不想的事》中的一段话:“你知道学习的意义是什么吗?当你是真的学习时,你是通过你的生活在学的,你没有任何特定的老师,每一件事情都在教导你——一片枯叶、一只飞鸟、一种气味、一滴眼泪;有钱的、贫穷的、哭泣的人们;女人的微笑、男人的骄傲——你从所有的事物中学习,所以你并没有一个特别的指导者,没有哲学家,没有灵性导师。生活本身就是你的老师,你是处在不停歇的学习状态中的”。

-放弃了模棱两可
国人有一个劣习,那就是模棱两可,一张口就闻“大约”、“也许”、“差不多”,做事亦是如此,《差不多先生》于1924年6月28日在申报上发表至今已有如此漫漫八十四载有余,看到今日的情形,不知胡适先生会不会摇头叹气。我要求自己只在确实不知道而弄清楚又会造成耽搁的情况下才使用如上词汇,因为它们对于解决问题不会产生任何帮助,反而减弱了一句话、一段表述其余部分的可信度。事实上,譬如在特定的条件A下,结论是B,完全可以说:“在A的情况下我得到了B的结论”而不是“结论也许是B”,这样一句模糊的废话就不再掩盖两个有价值的依据。

-放弃了聪明
为了更接近智慧。翻看室友记载的课堂笔记,发现就在刚进入ACM班的时候,老师就重弹道:聪明是智慧的天敌。那么当时,断然是被我无视了,日后的很长时间我也只是偶尔感叹(小)聪明不再像以往那么管用,而没有真正想过主动放弃聪明。就像 Knuth 那句被收录在UNIX设计哲学中的格言所示,聪明,好比(自以为是的)“过早的优化”,会成为“是一切罪恶的根源”。

IV.得到了什么?给予了什么?

-诚如在开篇部分提到的,得到的,是庇护所,是天空,如果愿意,就没有面向黑海的彼得大帝雕像,唯有没有一个形容词的万言长卷。于是判断力、领导力、自由等等等等,有了被孕育的土壤,不会因为雕像的指引被黑暗遮蔽而轰然迷失,而是播撒到何处都能绽放。

-给予,就目前而言,我力量微薄,但我给予我的激情、光芒、热量,成为庇护所的一块岩石,未知天空的探索者,长卷下一页的撰写人。

2009年3月13日星期五

Essay On AI

根据我对AI的一些看法,我被归类为:弱AI论者

下面的讨论,服从一个假设,即词语“智能”指的是人类的智能,它的表现形式、它的作用、它的形成。

如何衡量智能?
人类为什么会产生智能,因为有需求,需求有两种,发现与创造。发现是指发现客观世界本来就存在的物质、规律,并用已有的或者创造的符号去刻画它们,所谓新事物在这里更像矛盾修饰法;创造就很难用前面这种语言来定义了,无妨大刀阔斧地认为是发现的补集。人类周而复始地发现与创造,从而使得世界的刻画变得越来越复杂,是的,刻画,而世界本身却岿然不动,当然话说回来,正是这种幻像般的刻画,才是有意义的东西。那么衡量(人类)智能的粗的标准,大可以提这么两个问题:能不能发现,能不能创造。

如何发现?如何质疑?如何交流?
人类发现“新”事物,需要经验、运气、舆论肯定。
在这三点中,经验是机器最容易获得的,至少从表面上看来,随着存储技术的发展机器可以将任何“历史”变成经验的候选,尽管目前如何从中提取出有价值的信息来提升自身的智能仍然是机器面临的瓶颈之一,可至少在经验这一环节上,佐料完全不成问题,菜怎么煮以后可以慢慢琢磨,在这之前,生吞也无妨;
运气则不同,众所周知人类数不清的科学发现是基于误会,得益于鬼使神差做错了实验步骤或者根本就把证明实验做成了证伪,人类中不怎么固执的群体在这种情况下不会放过异常结论,在重现这种异常后,能够再度审视“金科玉律”,发现被误引入的假设或者条件,不是吗?错误经常是由于潜意识中的假设没有被破坏。糟糕的是,机器在这种情况下会干什么?把数据标注为一个负例,即机器不能质疑,实际上也不太可能,因为对机器来说,没有潜在的可破坏的假设,也就没了质疑的线索。机器就像是一个无比忠于老师的学生,认为老师教授的一切都是对的。
舆论的肯定,很奇怪吧,这算哪门子必要条件...当一个人类科学家有了“新”的发现,他会写一篇论文,公诸于众后被权威或者大众肯定或者接受,然后史书记上一笔,某年某月某日某人发现了某物。那么机器怎么知道它发现了新事物呢?物理学规律被提出的时候,不同派别的智者们会坐下来,开个会,吵上几架,占上风的一方满怀信心地凯旋,落下风的则风尘仆仆赶回去思量别人理论中的漏洞,再不济,还有客观世界这个万能检验议告诉世人孰是孰非,或者根本就是两派谁的理论都不完整(参见光学理论的变迁),美中不足的只是该检验仪工作效率较低,有时得花上若干个世纪。回到机器,上文提到“所谓新事物在这里更像矛盾修饰法”,但对机器来说,它们却是如假包换的新事物,而并非“没见过的事物”那么简单,也就是说机器界没有“客观世界”这样一个万能检验仪,机器界只有管用与高效,没有对错,所以机器要么自己判断、要么通过吵架来判断。OK,问题来了,为了避免机器们各自为战发展到最后A派机器们完全不明白B派机器的信息表达形式,需要有一种统一信息表达的方式,伤脑筋阿...人类的语言虽然不止一种,语法也许相径庭,但一方面,人起码都有五官四肢(输入输出设备一致)、一样的大脑(指令体系结构一致)等等,所以衍生出来的东西不会八竿子打不着,还是那句话,再不济,一个中国人可以指着一件东西说:苹果!而大洋彼岸的人会道:Apple! 翻译的鼻祖就是这么干的,不是天上掉下来的,以上一致,在自由发展的情况下,机器基本上做不到,以为他们本来就不同,一台生物计算机和一台量子计算机的交流,也许能达到海豚与人类心有灵犀的程度,但这种交流的能力离需求还是太远了。

如何创造?如何任性?
苦思冥想以后,我仍然无法给“创造”下一个哪怕很罗嗦的定义,但有一点可以肯定,创造力与循规蹈矩是天生格格不入的,这正是机器的命门所在,它只做正确的事情,即便引入随机性,也断然不会有成气候数量的情况机器因为“任性”做了有悖于它价值观的事,机器实在是太功利了...

如何波浪式前进、螺旋式上升?
波浪式前进,螺旋式上升,念经之余,又发现一个问题,机器是个性急的家伙,它总是希望一件事情很快得出是俄非结论,用于今后,并且这些结论基于实实在在的“实验事实“,并不存在提出假设或者推翻假设之说,纠结于是非,也是机器很难孕育智能的重要原因。

Then What is AI ?
根据上面的论述,即最忠实、最孤独、最按部就班、最功利、最死脑经的智能。

2009年3月12日星期四

地平线上的 Network OS

我们当年ACM班面试的时候,群殴的题目是:一个计算机科学家要具备哪些素质
我自己胡说了些什么,已经不太记得了
黄牛当时说的,是计算机科学家要能够预见CS的未来(to some extend)
PH不久前在日志里提到,忙碌是独立思考的核武器

不久前跟黄牛讨论到我们面临的尴尬境地:看得少,自然可做的东西少,看得多了,框框也多了,被带入了轨道,能做的,也就是小修小补的事情。尚没有能力把握平衡点前,以前还是选择看,现在则觉得,还不如先想象,再看看现实长什么样,如此,当知道所考虑的东西已有前人踏青,也不至于沮丧,因为很可能在方法上都有很大区别。
所有的新东西,在它发展的伊始,总是百家争鸣的,慢慢地,再优胜劣汰或者优汰劣胜、标准化、失去活力、被淘汰、写入历史书。我们在书上看到的东西,基本上就是大鱼吃完小鱼、虾米后的产物了,很少有剖析发展历程的,因此我们很难知道一样东西变成这样的动机、曲折、最初目标、依附的背景,就像看那些引理+定理+推论的书籍一样,很容易遗忘并产生自卑感,因为摊开在你面前的是精巧而面面据到的、系统的方面,而自己某一时间只会做一些看上去很naive的东西,如此,即便独立思考,也是思考不出什么东西的,所以还是适当break一些为妙

我坚信网络操作系统会改变人们运用互联网获取(提供)资源的方法、运用电脑办公娱乐的方法、使用软硬件的方法...
它肯定不是没有生命力的新技术,也不会只是一个概念,操作系统只是外衣,云计算都不知道算不算序曲。如果足够细心的话,互联网上的点滴基本上都预示着即将滚滚而至的新时代

对出现在地平线上的 Network OS,感觉还是太过朦胧,想象它可以怎样改变世界,带来怎样的研究点与商机;或者现有的工具,比如某种网络协议、某种程序设计语言,在新时代是走向废纸篓还是铁树开新花?
不幸的是,我知道的太少了,如果知识库能有SXR一半的容量,前瞻也不是不可能,当然我还有想象,某实验室每周都要召开闲聊会议,我觉得这很好,不知道YB能不能接受一个外人也参加呢

最后附上某天记录在自己的 google note 上的一段话,可以看出还是带有很多旧想法的,就算抛砖引玉好了 :-)

-----------------------------------------------------------

隐藏在界面下面的“废铜烂铁”,嗡嗡作响的风扇、滴滴答答的硬盘磁头移动声,最好都不要被我看到,事实上,MVC都应该被运用到硬件中。
如果 NetworkOS的时代到了,那么人们大可以在增加的仓库里放上主机,而笔记本电脑只要剩下输入输出设备就可以了,那个时候,Mac Air 那种级别的轻便肯定就不稀奇了。与主机的互联,要么是无线,要么,可以实现像装修时排布电线一样把信号线路配置好,主机和“终端”只要插上标准接口就可以了。

NetworkOS 还能带来新的社区,试想当你打开终端,搜索“可用的操作系统”,一串“系统”罗列在你面前,这是什么感受?绝妙的感受!当然前提是,有好心人开放他们的系统(主机),或者系统的某些服务是公开的。由此可以带来很多新的话题,比如操作系统也作为了一种元素被纳入了社会化协作网络的讨论,用什么协议保证安全?维持高效?提供便利?是的,人们又有的好热烈探讨一番了,当然商家们也不会放过这一契机,总之,又有活干了,并且伴随着一革命性的变化,Computer Science的方方面面又将进入新的一轮循环,算法是否高效、数据分布是否合理、密码协议有无漏洞等等等等,都必须拿出来重新审视,就像缓存技术与多核技术曾经逼迫(或者说驱动)人们一样。

-----------------------------------------------------------

未完待续,有什么比较有意思的想法会继续贴出来,欢迎交流

2009年3月7日星期六

害怕从而依靠

对于陌生不再害怕。

差不多一年前这个时候,编译课设刚开始,好难的任务呀,这么多模块,于是拿来Qianfeng文档瞅瞅,不知不觉陷入框框,路途是坦荡了一些,但提交以后,却没什么尽兴的感觉

大概因为一二年级成绩不太好,所以潜意识有点对自己信心不足,虽然被生活中的乐观与自信掩盖,但碰到这种陌生的东西,就会感到心里没底,感叹:这东西怎么做呀....然后就像yyu所说的,开始找依靠 ,比如以前常见的景象,我拉着谁说,帮我看看这个程序,开始抱怨诡异的错误。时间久了,就越发对自己的代码能力有所否定,甚至一度觉得,我丫就不适合拍代码...

花了整整一个学期的时间,在砍柴前磨刀,是思维上的打磨,理清了思路,看清了问题所在,是时候不再困惑了。

最近在做的两件事情,都是阴差阳错,一是原本挂着“社会化搜索研究”的PRP实际上是参加IBM的web应用大赛,二是答应了mentor参与一个聚类(Cluster)的项目而我答应的时候以为是机群(Cluster)。这两件事情,totally,陌生的,于我。

前者mentor说他只负责牵线搭桥,就是组队,其他的就看我们了,而我变成了所谓的leader,称不称职当由别人去说,至少,我成了被依靠的对象;

后者mentor干脆把我托孤给远在大洋彼岸的老同学,于是完全没有face-to-face的交流,并且由于不熟,甚至都不好意思去依靠什么,唯独生怕给mentor丢脸呢;

是啊,干脆没有依靠,经历了,反而觉得陌生的东西也就纸老虎....天朝女乒顶多也就被神秘之师咬疼一次..

在这之前,开发网络应用的技术、流程、规范,团队里没一个人知道,面对长长的开源库list我只好一个个去google看是做什么的。现在,learning by doing,不也挺有声有色么

原来bishop的那本机器学习讲义,随便翻翻,满目不认识的符号,被我认定为不可看的东西,后来因为项目需要硬着头皮开了个头去看图模型的部分,纯理论,不也津津有味么

伟大领袖yyu说,抱着走---》搀着走---》扶着走---》独当一面。甚是。

From .csv To Derby

对于Web应用来说什么最重要?数据。因此这次我们来探讨一种比较山寨的数据迁移方式。
没有数据毫无疑问是痛苦的,人们YY数据的时候一般习惯在 Exel 或者 WPS 的电子表单里把表格填写好,然后呢?怎么把表格放到数据库里呢?又或者,我要把表格的Ci、Cj、Ck列放到数据库里某个表(关系)的Ai、Aj、Ak列(属性)呢?

简单地寻觅一下,你就可以发现 xls 格式的文件可以转为 csv 格式,后者的全称是 Comma Separated Value,言下之意就是(若干)用(英文)逗号分开的值,本质是一种文本格式,Exel 和 WPS 都可以把电子表单直接另存为这种格式,并且让人振奋的是,很多数据库都提供了内嵌过程从 csv 文件导入数据,或者把数据导出到 csv 文件,从而提供了不同数据库间数据迁移的一种可能。

当然事情没那么简单,有两个地方是相当头疼的。

第一,既然是用逗号分隔表单的列、用成对双引号指明字符串,那如果原始数据中就有逗号呢?如果字符串中也有引号呢?不幸的是,Exel 和 WPS 并没有支持配置这两种分隔符,并且让我颇感意外的是,数据库也没有支持通过转义字符的方式解决此类问题,至少我正在使用的 Derby 是没有的。
第二,如果使用的是轻量级的数据库比如 Derby,那么很可能它对内嵌过程的支持比较差,所谓比较差可能仅仅是错误提示不靠谱,但这都一个新手来说可能是致命的...

第一个问题的解决办法有三种:
A. 一种看上去比较不靠谱的方法,并且需要修改操作系统设置,很不美。
B. 适合数据规模比较小的情况,换句话说,如下操作是可以完成而不会让你的机器卡上半天的:打开电子表单-->选中需要导入的区域-->把该区域内容复制到记事本中并保存为 csv 格式。这样做的原因,是操作系统会在列与列之间自动补一个用于分隔的制表符(\t),相对于逗号,它引起错误识别的概率就小很多了
C. database@yssy 上有一位热心水友提供了如下解决方案(引用他的原话):
写一个批处理:
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem InputFile:输入文件 OrgDelimiter:要修改的的分隔符 NewDelimiter:替换后的分隔

set /p "InputFile=Input the filename to be processed:"
set "OutputFile=Modfied_%InputFile%"
set "OrgDelimiter=;"
set "NewDelimiter= "
set "TempLine="
echo Processing the file!!!
for /f "usebackq tokens=*" %%c in ("%InputFile%") do (
set TempLine=%%c
set TempLine=!TempLine:%OrgDelimiter%=%NewDelimiter%!
echo !TempLine!>>%OutputFile%
)
:End
echo Finish Processing,The result file was saved as %OutputFile% in the same d
irectory as %InputFile%.

复制上面一段到*.txt文件中,存成和你已经导出的csv文件同目录下的*.bat文件双击运行*.bat输入要修改的csv文件。可以得到一个新文件。
可以支持大规模,并且不一定非把逗号替换成制表符,而是任意的,我想最好应该是不可打印字符,这样最不可能导致错误,但注意,只能是字符,而不能替换成字符串,这是因为 Derby 的内嵌过程把分隔符的类型定义为了 char(1)

下面讨论第二个问题:
在 Derby 中,数据迁移的内嵌函数主要有3个:
具体的参数定义就不细说了,读官方文档即可,罗列一下我觉得需要注意的几个地方:
  • 如果有恰好有两个用户都建立了同名 Schema ,Derby不会报重名错,而是会使用默认,并报出完全不着边际的错误信息
  • .csv 文件中,EOF不能跟在最后一行数据后,而要另起一行
  • 在参数表中分隔符的表示方法是 ' ' 而不是 '\t'
  • Derby的错误信息真的很烂 - - b
  • 设定目标文件参数时注意相对路径(或者干脆用绝对路径)
  • 虽然理论上应该是大小写不敏感的,但这几条内嵌过程中,表名却不接受小写...
最后附上一个 Sample : 把 data.csv 中的数据迁移到 TEST 表中
建立 TEST 表:
create table TEST (foo int, bar varchar(100), foobar varchar(100));
data.csv 中的文本:
1 hello world!
2 goodbye cruel world!

调用 Derby 的内嵌过程:
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(null,'TEST','data.csv',' ',null,null,0);

PS : 区分字符串的双引号问题还有待解决,Plz contact me if u know a non-ugly solution :P

2009年2月27日星期五

2009年2月26日星期四

Don't Click

如果没有鼠标的点击,会怎么样呢?去这里体验一下吧 :-)

一开始我还误解了说明,以为是个整人的网站,猜点了"click here"以后就键盘鼠标统统失灵任它摆布了...click了以后才发现,是宣传 click-free 文化的,值得一提的是动画效果都快让我晕了 - - b

不让我点?我偏点 :P 于是看到了如下嘈杂的景象:


2009年2月24日星期二

Java实现重定向并编辑Http请求的方案小结

最近在做一个WEB应用,其中一个问题是:把客户端递交到servlet上的请求,经过编辑 后转发给另一个服务器上的servlet.

Sample :
- 比方原请求为 http://abcdefg?id=1&name=oyxx
- 现在希望根据服务器上掌握的密码,编辑请求后送往 SJTU
- 直接让客户端发送请求 http://www.sjtu.edu.cn/****?id=1&name=oyxx&pswd=*** 会被拒掉,而且通过 GET 方法明文发送请求也不安全,可能需要改成 POST 方法

Fact :
- 客户端(FireFox, IE ...)只能向网页所属服务器提交HttpRequest,因此重定向不可避免
- javax.servlet.http.HttpServlet 的两个方法,doGet 与 doPost ,参数都是HttpServeletRequest与HttpServeletResponse,没有找到类似 setXXX 的方法可供修改请求参数,唯一可以被设置的是HttpSession的属性,原以为是个救命稻草,后来发现它的本来面目其实是客户端与服务端交互的cookie
- JDK提供的HttpURLConnection有点Old有点弱,参数设置麻烦不说,还需要解析转发服务器返回的响应,再把结果作为相应返回给客户端

Backup :
- 如果仅仅是重定向而不需要更改请求信息,Servlet中,javax.servlet.RequestDispatcher 接口提供的两个方法 include 和 forward 就能解决问题了

Solution :
- Commons-HttpClient ,使用方法可以RTFM :P
- 从来自客户端的请求中读取参数
-- 若以 GET 方法进行重定向,则把编辑过后的请求Query接在重定向目标URL(e.g : http://www.abc.com/servlet_d)后作为 getMethod 构造方法的参数即可
-- 若是 POST 方法,postMethod 构造方法的参数仅是重定向目标的URL,请求参数则通过其 setParameter 方法设置
- 处理来自重定向目标的响应时,调用各自(getMethod/postMethod)的 getResponseBodyAsStream 方法,可以得到包含响应信息的 InputStream,通过正确的编码可以解析为字节流,假如响应返回的是比较流行的 JSON 对象,JSON-lib 提供了从字符串到 JSON Object 再到 JavaBean 的转化

2009年2月18日星期三

Memory.学前(三)

一个小P孩靠什么来获得知识呢?最好的途径当然就是玩。所以本节的重点就是:白相罐。

话说我们这一拨生在80年代末的人,也不断经历着各 种各样的变化。错开了人口高峰(大概在82、83年的样子),见证了港澳的回归、一代伟人小平的逝世、GDP的腾飞、教科书的变动、中招高考制度的改革, 处在一个拐点上,有点像实验品(这么说并没有反社会的意思)。我们的哥哥姐姐已经成或多或少成为了社会的生力军,他们是独生子女的第一代,当他们的父母老 去时,4个人需要依靠2个人来赡养,而诸如此类的社会问题我们逃不掉也不该回避。

不过比上述种种更值得咀嚼的是,我们是拥有精彩童年的最 后一拨幸运儿。在房地产大潮席卷而来之前,尚有约莫十来年的时间让我们去享受弄堂嬉戏、玩伴和天色渐晚时父母召唤回家吃饭的喊声(或是被揪着耳朵回 去?)。我至今都不能想象独门独户的楼宇以及那些价值高昂还多数被汽车占去了的土地上,如何孕育童年的共同趣味,相比之下90后们真是可怜,这大概也是他 们中那么多人去闷骚地尝试非主流的原因吧 - - |||

一直觉得,我们这拨小P孩特别能动脑筋,发明了无数游戏,很多是户外多人的;且 当年爸爸工作的电脑科还只有一台骨灰级IBM,PC离进入普通家庭还很远,拥有任天堂的红白机的人家大伙就趋之若骛,通常要通过软硬兼施的外交,还得和“ 财主”搞好伙伴关系,才能力压群雄脱颖而出玩上一把;上学前几乎无人有小金库,若是想要跟着哥哥们偷偷跑去游戏机房,还得想好怎么应付爸妈,不过结局却总 是锻炼了抗击打…

对每个男孩,游戏机的诱惑力都不言而喻,当然很快我就不指望老爸能表现出哪怕一丁点给买一台平机的迹象,好在堂兄(前文提及同住的那位)那儿有,于是那个美妙的亭子间成了家里最为我向往的地方——也是爸爸回到家第一个去搜查的地方….
在 念幼儿园的时候,每天下午奶奶把握接回家以后,会去忙家务,此时爸妈还没有下班,hiahiahia,知道会发生什么了吧?最快的速度,冲向亭子间!不幸 的是,有时候会玩过了点,要么就是爸爸突然比平时早回来了一会儿,机智勇敢的我怎能坐以待毙,曾经尝试过躲在衣橱里或者从亭子间小楼梯侧墙上的小窗口爬到 二楼的房间,然而当时毕竟是太嫩了,而且游戏玩得兴奋的时候开关门和走上楼梯的声响太容易被忽略,竹笋烤肉是家常便饭的,偶尔奶奶会拉开嗓门道:“咸白 相,哉白相哪亚要喂莱来”,我才有概率依依不舍得离开。

不过我还是没有因此而玩物丧志,一方面是因为家中老虎常坐镇,再则那确实不是我的 最爱,流行的带有半赌博性质的拍卡活动(圣斗士卡&七龙珠卡)和塑料子弹枪大战等(因为过于危险后来被forbbiden了),也都参与不多。印 象中,小时候,积木和船模才是我的两大宝贝。

今天看来,积木无疑是小时候种种玩具中最开发智力、创造力的一种,不管它是当时刚进军中国市 场的乐高,还是便宜一点的国货宝高(连名字都仿…),甚至是最最朴素的一套彩漆木积木,都能让我全神贯注一个周末,最不能忍的事情就是邻居家的小孩跑来我 家的时候不小心踢掉了我的作品,不过若是它不够完美,我也会毫不犹豫推倒重来的。那是周末的典型生活就是在爸妈醒来之前起床,带着菜篮子PDPD跑去家里 附近的点心滩,买好全家的早点,然后一路吃回家,开始搭我的积木,把各种型号品牌的积木混在一起,搭完以后用其他玩具,比如塑料玩具兵、容貌玩具等等等 等,自编自导一台情景剧,这才是生活!
至于船模,则长期占据了我家厨窗若干层,那时只爱船模,飞机坦克一概不感兴趣,还必须不是仿真模型而是拼完 后能放在浴缸里开的那种,不过隔水普遍很差,经常开着开着就海难了…最珍爱的是一艘理论上可以依靠马达水下航行的潜艇,无奈说明书上变态地注明须要3号电 池,市场上买不到@@

童年的记忆还有数不清的寄托,比如风靡一时的四驱车,舒克与贝塔这样的动画片,只是后来的应试教育扼杀了不少它们带给我们的宝贵财富,搞笑的是,现在的教育越来越合理,扼杀的少了,可是童年带给小P孩们的,也少了。

Memory.学前(二)

(不太习惯第三人称,还是换回第一人称吧)

很喜欢Jay的《听妈妈的话》:

小朋友你是否有很多问号
为什么别人在那看漫画
我却在学画画
对这钢琴说话别人在玩游戏
我却靠在墙壁背我的abc
我说我要一架大大的飞机
我却得到一台旧旧录音机
为什么要听妈妈的话
长大后你就会开始懂得这段话

有 调查表明,孩子的外貌等物理特征受母亲影响较大,而性格等精神特征则更取决于父亲。因此上面的歌词不妨改成“听爸爸的话”。从屁颠屁颠学步、咿呀学语开 始,直至初中低年级,都是爸爸扮演着人生导师的,不过那并不说明我身上会有太多他的影子,事实上,在踏入象牙塔之前,每逢晚饭时间,父子俩经常在饭桌上就 一些“可挖坑型话题”进行火星四溅的交流,俗话说,秀才遇到兵,有理说不清,幼齿时期我高举耍无赖大旗,但在我企图转型为逻辑型时,却发现罗列已知条件接 着循循善诱逐步下套的辩论方法对我爸根本不起作用,就像传说中当时只有DennyLiu的慢半拍反应防得了林希文的假动作一样。

他们那代人是不幸的,爸爸当年为了让叔叔留在城里,插队到了崇明五四农场,然而塞翁失马焉知非福,那里是他和妈妈相遇的地方,说得酸点,也算是邂逅了:)
我 一直相信,若不是时代的错误,凭借爸爸的洞察力、勤奋和固执,定能披上一星传奇色彩,在农场的时候,大伙下来班就天南地北地海吹,或是跳舞,只有他会独自 在一边阅读那套改变了那一代许多人生活的《数理化自学丛书》,没有老师和同学,孤独的行者。返城以后,爸爸考上了当时还很强大的立信会计,后来奶奶退休, 顶替名额给了爸爸,让他也成了真正的广大劳动人民一员,也是在这个时期,欧阳平同志和周濓民同志喜结连理,婚纱照上老爸形象还算凑合,一手由我妈挽着,一 手持一副白色手套,据观察,那个年代的婚纱照都是这副刻板的样子。

在我出生以后,爸爸曾经有机会成为现在大热的金融投资业的先行者。那时 他应聘一家投资信托公司,被录取了,权衡再三,放弃了。理由是,留在出版社工作中午有空骑车赶回家抱我到院子里晒太阳。看客,你被感动了吗?或许,如果更 换了那份更有前途的工作,很大概率就从经济上改变了整个家庭的轨迹,受益更多,但是这也就不是我爸了。这是最让我觉得自己亏欠爸爸的一件事,若非如此,他 不会失去这个机会,不会现在还是一个事业上并不十分突出的男人,只能再次说一句,真是可惜。

我爸有一个信条,那就是严格约束加大棒政策, 几乎没有胡萝卜,相形之下我妈只是比较烦人,在如何收拾我这一命题上跟爸爸还差得很远。在后文中会提到我小时候的种种事迹,那些事情很多都附带着我爸的一 顿打,打完以后,妈妈和奶奶会说,先来吃饭吧,吃完再XXXX,然后爸爸会枪毙这一决议,让我饿上个半小时,“脑子里记记牢!”… 后来一直觉得自己骨头挺硬,小时候的被打经历应该起到蛮大作用,不过自从初二以后就没有被爸爸再打过,反而有点心慌,怕看到他失望让他叹气。至于与大棒相 辅相成的另一面:严格约束,我始终觉得是值得商榷和有争议的,爸爸几乎就是强加他认为对的事情,极尽所能禁止认为错的那些东西。豪不惭愧得说,小时候我还 是尽显足球天赋的,无奈爸爸只是难得允许我在弄堂里和伙伴们踢踢野球,而后来上了小学,N次企图参加校足球队,都被他扼杀了,因为他是那种典型的觉得22 个人抢1个球还不如每人发1个的人。直到今天,我在7点钟看体育新闻的时候,家里的电视机还是会被无情得切到新闻联播…

初中毕业的时候曾 经让同学给我写过校友录,其中一个问题是:你最崇拜的人是(or你的偶像是)_____ ,有人写的是“老爸”。就我而言,虽然爸爸的智慧、冷静与沉着、为我作出的牺牲毋庸置疑,但我并不崇拜他,那比生活在虎父的阴影下好不了多少,我只是我。 爸爸,当然还有妈妈,成功得完成了他们的引导,把我至少培养成了一个积极向上、正派的人,那就够了,剩下的,该由我自己走。

Memory.学前(一)

1987年12月9日某时某分,彗星袭月、白虹贯日、苍鹰击于殿上,一小P孩出生在全国著名三级甲等医院——现上海交通大学医学院附属瑞金医院的产科病房。爷爷乃一家之长,遂取名欧阳希修,意为希望他爱好文学,长大以后能像大文豪欧阳文忠公一般。

小 P孩从小在卢湾区茂名南路某弄堂里的旧式洋房里长大,他太公在解放前曾是银行高级职员,买下了这栋房屋,不过1921年,神州大地上发生了开天辟地的大变 化,最终在第28个年头,星火得以燎原,此后推行了一系列土地改革等政策,而对上海这样的人口、房屋都相对密集的都市,我党决定将房屋均分给劳苦大众,于 是他家多了3户邻居,也是在那个激情燃烧的年代,父亲和叔叔被取名为平和均,同样长大在这个屋檐下。

茂名南路165弄16号,这桩红砖的 两层建筑,门前十多米高的大树;斑驳的木门;吱呀作声的楼梯;两侧墙壁悬挂着的晒篓;楼梯转角处的米桶;晾着的鳗香;邻里共用的厨房;油腻腻的煤气灶;一 小截自己总是蹦着过、还被用来分辨脚步声的过道;可以延展的厚重木桌;文革时被抄家摔坏又被爸爸用铅丝固定的两把扶手椅;明亮宽敞的内阳台;堆满家什和书 籍的小房间;小时候最向往、战斗过的亭子间;共住的奶奶叔叔婶婶,还有堂兄艺昭(爷爷望兄从艺);冬天会钻到被窝里依偎在他脚跟的老猫。

他们她们它们,承载着他大半个童年。

如今这栋将当时的一切揉合在一起的老屋,却早已随着经济蓬勃的步伐、地产的汹涌浪潮、推土机轰鸣作业、砖瓦零落扬起的尘土,灰飞烟灭了,真是遗憾,尽管他不并是个太迷恋故旧的人。