2007年11月2日星期五

奥运会与居民小区

这么说尽管显得觉悟不够,可即使是在当年,我就不是申奥的坚定支持者。理由很简单,我不相信北京奥运能做到收支平衡——又要全国人民为北京买单了。当然我也并不是反对北京申办奥运会,只是个人不认同举国办奥运的操作方式。不过我也明白,奥运会不仅仅是奥运会,中国需要这次机会,所以我那小小的不满也只好装在肚子里了。但是这份不满,近来却有反刍的趋势。

我所住的小区不小,所以出入口有好几个。离我们楼最近的那个出入口,原本是不能通车的。前段时间为了进行装修改造,那个出入口封闭了近一个月。在这段时间里,我每天出门回家都要多花5分钟绕路。这原本是好事,出入口修好了人走车走都方便,所以短时间的不便并非无法忍受。但从这件事开始,小区里还发生了不少其他的变化,就未必件件都是好事了。

首先是小区里没有固定营业场所的小贩全部被取缔。这些小贩有卖水果蔬菜的,有卖零食小吃的,还有收废品的。且不说原本就属于中低收入人群的小贩们日后以何为生,既然他们的生意做得下去,证明居民确实需要这样的服务,可是为了“迎奥运,维护良好卫生环境”,收摊。想买棵葱?不好意思,下午7点以前多走20分钟去农贸市场吧。赶紧的,晚了就关门了。

紧接着,为了“迎奥运,创造良好治安环境”,小区给所有单元的进出口都装上了大铁门。因为小区较老,“产权情况复杂”,物业没有伸手跟居民要安装费。可白给的东西也不是那么好拿的,既然不收你钱,那呼叫铃当然不会每户都赠送一个。如今单元楼是更安全了,没开门磁卡谁也进不去——包括来探访你的亲戚朋友、送报纸快递的、送外卖的。有人找?只好到了楼下打电话叫你下去接。可记得要赶在晚上12点前,电梯关闭时间还是照旧。

生气倒是不至于,妙的是有一种“果然如此”的感觉。“离2008年北京奥运会开幕还有280天”,不知道在“迎奥运”的名目下,还有多少昏招等着我这个普通的小老百姓。

2007年10月28日星期日

电梯司机

有一个上海的朋友过来玩的时候,曾戏言说这个城市各方面都不错,但就是24小时营业的超市太少,显然是下岗女工不够多。果然是首善之都,就业和再就业工作做得好么?未必,至少这里就有很多莫名其妙的职位安排了不少人,比如说电梯司机。

根据国家规定,七层以上住宅必须安装电梯。我现在所住的楼虽然年纪不小,可也有15层高,自然也装了电梯。据说94年曾有文件要求住宅电梯必须配备司机,所以当时每辆住宅电梯都安排了两位司机值班。该文件在2000年已经被废止,但现在仍有很多电梯司机坚守岗位,每天早六点至午夜十二点守在狭小的轿厢里为人民服务。

我这人算来算去没有别的优点,也就是讲礼貌、尊老敬贤值得被人夸几句。无论是商场里的售货员还是脸色比较好看的小贩,买了东西、被人服务了之后我都会习惯性地说句谢谢,对电梯司机当然也不例外。单只凭这一点,我就跟不少电梯司机保持了良好的关系。

例如按前面所说的电梯工作时间,我在午夜十二点之后回家就必须爬楼梯,实在是很郁闷的一件事。而之前我们楼电梯值中班的是一个小女生,跟我关系非常融洽。只要事前跟她打个招呼,那一夜她就会不锁电梯,让我免了好几次爬十二层楼的辛苦。

既然是小女生,活泼好动是免不了的。每天八小时都被关在一个密闭的空间里,闷也闷死。所以经常能看到她在晚上9点左右跑出来遛弯,尤其是夏天,那个时段她几乎肯定不在电梯里。至于对住户的影响其实也没有,按个按钮而已,谁不会?

工作简单枯燥,没有任何技术含量,可以想见工资也肯定不高。听说是每月人民币700元,而且没有假日。这样的工作学不到任何东西,也存不下钱,根本不适合年轻人。果然,第一次见到那个小女生之后一年左右,我们楼的中班电梯司机就变成了一位中年大姐。

这位大姐约莫40来岁,还算面善,人也和气。听口音是本地人,或许还真就属于下岗再就业。跟之前的小姑娘不同,可能是更担心丢掉这份工作,所以很少见到她不在电梯里守着的时候。当然,十二点以后还能坐电梯的待遇肯定是没了,我何苦自讨没趣还让人觉得为难?

不过我毕竟还算年轻,爬爬楼梯其实也没什么。与之相比更让人痛苦的是,这位大姐属于典型的本地中年妇女,就好家长里短嘘寒问暖这一口。见我人还比较客气,更是每次都要唠上几句,一个又一个隐私问题往我身上招呼,还问得忒自然而然。

哪人啊?多大了?交女朋友了吗?啥工作?在哪上班?被问了第一个问题后,我就知道这位大姐不是个好相与的。因此除了下电梯时的那一句谢谢,我采取了坚决不主动搭话,回答问题也尽可能简短、平淡的策略。然而大姐似乎看我挺顺眼,并没有意识到有什么不对的地方。

譬如说前些日子吧,那位大姐又问我每月房租多少钱。在得到答案,并了解到我一个人独住后,竟然又追问了一句:“你赚钱挺多的吧?”“多少才算多?”我差点冲口而出。但念头一转,我就只回了一句:“其实还好,宁愿别的地方省点,图个清净。”

劳动人民朴实起来,有时还真是让人吃不消。我开始怀念之前的那位小姑娘,甚至更早以前住六楼的日子了。

2007年10月24日星期三

好难看的N81

发布会已经开了,11月上市,8G版本建议零售价约4700。这款手机本来我是相当看好的,参数方面非常漂亮,具备成为新一代机皇的潜力。虽然也曾担心Nokia近年来的工业设计越来越没质感,可是看宣传照的感觉还不错,就没多想。

可是这次发布会上的真机实照让我很失望,实在实在实在是非常非常的难看。黑色高光的外壳看起来一股子劣质塑料的味道,八向操纵杆越看越像硕大的方形肚脐,而且拿在ShowGirl手上就爬满了油腻腻的指纹。

一句话,Nokia真的已经堕落了……

2007年10月22日星期一

Razer蓝色响尾蛇

我曾经用的也是30块一套的键盘鼠标,可那已经是很多年前的事情了。改变我这一习惯的是我哥,因为他对我说,键盘鼠标显示器这种东西是天天都会看到摸到的,应该要买好一点。想想说得有道理,我也就从善如流了。更何况,我有个疼爱老弟的哥,这些年用的鼠标都是他送的。

还好我不是很毁东西的败家子,一个鼠标可以用上好多年。上一个我哥给我的鼠标还是罗技的极光旋貂,红色那款,有些年头了。因为近来觉得左键被用得不太灵光,所以趁着去我哥那吃饭的时候,又顺了个新的回来,Razer的蓝色响尾蛇。

我用的,或者说我哥送我的鼠标一直都是罗技的,初见Razer时感觉很不一样。这个鼠标的机身比较长,扁扁的,看起来还真有些响尾蛇头的样子。而且装饰性的线条比较多,插进USB口连滚轮也有磨砂的蓝光,倒是挺漂亮。老哥告诉我说Razer的产品都是游戏鼠,CS犯爱用。

不过真用起来,多少还是有些不适应。因为造型的关系,这个鼠标在手掌握住的地方一样比较扁,所以手心的部位有点空,抓起来没有罗技鼠标那么舒适。而且使用时间长一些,鼠标会略微有点发热,冬天自然还好,夏天估计会不太舒服。最不适应的地方倒不是缺点,就是这个鼠标最大的卖点,高达1600dpi的分辨率。

dpi,dots per inch,是鼠标最重要的参数之一。光电鼠标是靠光线的反射来确定鼠标移动的距离和方向的,dpi值越高,代表鼠标定位性能越灵敏。极光旋貂的分辨率是800dpi,而响尾蛇是其两倍。所以刚开始用时稍微一碰,光标就跑了老远,我花了好长时间才习惯下来。

由俭入奢易,由奢入俭难。老哥固然疼我,给了我个好东西。可现在市售的鼠标大多还是800dpi的,我再回过头去用就会有种跋山涉水的感觉。像我这么节俭的人,要是没他送我,自己花个好几百块买鼠标,还是会很肉痛。爱我,焉知不是害我?

我知道,这属于得了便宜还卖乖。

2007年10月6日星期六

Opera中的站点首选项

因为新浪等BSP的图片不允许外链,所以用Google Reader看这样的Feed会很难受。为了解决这个问题,我试着在Opera中,针对www.google.com的站点首选项设置为不发送引用页。但这样设置却起不到预期的作用,还是必须在菜单上修改快速首选项并刷新才行。

注:后来才知道我这是舍近求远,其实只要用HTTPS访问Google Reader就可以了。因为考虑到安全原因,HTTPS规范推荐不发送引用页数据。)

一直都以为是站点首选项和快速首选项的优先级有问题,过了好些日子才想到了另外一种可能。在自己机器上搭了个Web服务器,经测试验证了自己的想法后,才发现原来是自己笨。

Opera中站点首选项针对的是被引用文件所在主机,而非引用页所在的主机。如需要在Google Reader中看新浪Blog的图片,则应该针对album.sina.com.cn设置为不发送引用页,而非www.google.com。

2007年10月3日星期三

找房记

房租即将到期,动了搬家的心思。

今天去看的房子,信息是在网上查到的,虽然写着“非中介”,但把联系电话当关键字搜一下,一看可知不是那么回事。明知这样还去看房,理由无非就是价钱,一个很具诱惑力的价钱。

其实我也没有那么讨厌中介。只要不骗人,利润合理,大家都是一样要过日子的人。想说看看也无妨,只要小心一点,我没那么好骗。这种想法是有点期待天上掉馅饼的味道,我承认。事实证明我是白跑一趟,所以小朋友千万不要学。

房子所在的楼盘叫“壹线国际”,以前没听说过,地点在四惠。那里位于城市的东边,算是一个城郊的分界点,再往东差不多就出了闹市区。而且也是一个交通枢纽,地铁、公交总站、长途客车站都很集中,就是那种早晚高峰和逢年过节都兵荒马乱的地方。

我在四惠下车,很容易就看到了马路北边的“壹线国际”。这个小区整个就是建在一线地铁线路上的,差不多从四惠站跨到四惠东,怪不得叫这个名字。因为地点特别,不能多修入口我能理解,可是我从四惠一直走到到四惠东,才终于找到了小区入口,就让我觉得很不可思议了。

而在问过小区保安之后被告知,我要去看的房子位于小区的西边,也就是我走过来的方向,所以我还得走一段不短的回头路。后来是有了解到,在靠近四惠站的地方有个没有标致的入口。可是从我下车到进房间的门,至少徒步跋涉了3公里,也确实是一个很累人的事实。

那个小区的卖相不坏,因为是新修,看起来不旧不脏乱。可是一路走过,也能发现房屋的空置率很高,很多窗户上就贴着“房屋出租”四个大字。看得出,这不是一个成熟的小区,也肯定是个房产投资者和中介扎堆的地方。

而当我走到房子的门口时,我就听到里边一个女人打电话的声音,有人催她过去带人看房。可是在我和她之后的对话中,她一直坚持自己不是中介,我们所在的房子是“公司分下来的宿舍”。我有表示过我对中介的态度,不过她既然这么说,也就算了吧。

至于房子本身,一居室被隔成了五个单间,包括原来的厨房也被当成了卧室,其中两间还没有窗户。每个房间都有一张单人床,一个小电脑桌和一个小衣柜。目测也就6到8平米的样子,所以也只能放得下这么多东西。公共空间就是走廊和卫生间,电器则只有冰箱和微波炉。我用手敲了敲,隔断用的是砖墙,木地板铺设的活计也做得很粗糙,显然是打算长期出粗用的房子。

那个女人是否可疑已经不需要考虑了,我不会租这样的房子。虽然无论哪个房间都没有房源信息上写的15到35平米,但我也并没有上当受骗的感觉。或许是因为我有充分的心理准备,或许事情本来就应该如此。

“很具诱惑力的价钱”能租到的只是那两个没有窗户、没有空调、没有暖气的房间。虽然让我有联想,可我克制着自己不要用些很恶毒的形容词,因为以后总会有人住到那两个房间里。在现实面前,所有的人都一样卑微。

本以为很快就能搞定,所以我连中饭都没吃,从小区出来已经饿得前胸贴后背了。虽然对于汽车站、火车站周边的饮食小店充满怀疑,可还是忍不住走进了一家西安风味的饭馆,点了一碗臊子米线。

结果“西安”又给了我一个惊喜,出乎意料的好吃。人间美味当然不至于,可是无论汤头、材料、火候、分量都很不错。在肚子很饿的时候面前有这么一碗米线,无疑是件幸福的事。更何况,这碗米线的价格只是人民币6元。

“这个城市充满了各种可能性”,两年前在一条胡同里吃了顿人均17块的涮肉让我有了这样的感叹,今天的这碗米线似乎也起到了同样的效果。

2007年9月19日星期三

Say bye to flickr

flickr被和谐的时候,我多少也觉得有些愤慨。没想到的是,不久之后flickr就从受害者变成了加害者——他们取消了免费账户的原始照片下载权限。

我曾在flickr放了一组很值得留下的照片,而且我以为自己没有留底。flickr此举就代表着,除非我付那25美金的年费,否则就算是我也拿不回自己的原始文件。更过分的是,以往这方面并没有限制,变更服务条款也没有通知我。

一直隐忍着,直到今天在硬盘上乱翻,才在一个角落里意外发现了那一组照片的原始文件。不夸张的说,有种重新取得回忆所有权的感觉。一阵狂喜,接着我删掉了旧的flickr账户,重新注册了一个,并决定以后只看照片,绝不上传。

凭心而论,flickr对免费账户的限制本来就很多,加上这么招人恨的一条不知道是为了什么。不允许外链就是了,连原始文件也不让下载,太过分了些。

2007年9月17日星期一

被某人记得

我有在Facebook上注册过,为了看看有啥好玩的。逛了一圈,没找到继续流连的理由,于是就扔在一边了。若不是今天收到了一封email,告知我某人在Facebook上加我为好友,我都快忘记有这么一回事了。

那是一个曾经很熟的人。登录上去才知道,他也刚注册而已,我是他添加的第一个人。

是不是该感到窃喜?因为还有人记得我。事实上,刚开始我确实有这样的情绪。然而继续在Facebook上翻了翻,我才发现完全不是这么回事。

如果你愿意提交email帐户及密码,Facebook会去读取你的通讯录,并告诉你哪些你认识的人曾经在他们家注册过。我的GMail邀请函就是那位曾经很熟的人发给我的,所以他的通讯录里有我。原来如此。

当然,Facebook这个功能很棒。只是我和那位曾经很熟的人,不可能会再次变熟了。所以我的Facebook上其实还是一个好友都没有,我还是没有找到流连的理由。

2007年4月29日星期日

别买NEC光驱

我的光驱是NEC的3550A,买他的原因当然就是冲着可以刷成4551A,支持光雕,虽然我一张盘都没雕过。购买时间是去年夏天,至今一年都不到。可前两天突然发现,买来的DVD和自己刻的DVD-R都不能读了。而且奇怪的是,我发现在Windows和Linux中都不能读的盘,在Dos里却可以读出来。

上网一查,发现这原来不是特例。很多人都遇到了NEC光驱读盘能力弱、使用一段时间后不认自己刻的DVD-R等问题。有没有解决办法也众说纷纭,有把4551A刷回去变好的,有说清理一下光头有用的,不过有一点是可以肯定的了,NEC光驱口碑很次。

那些办法我都还没试过,反正手头还有一个闲置的康宝。不过想想堂堂日系一线厂商,人品竟然沦落成这样,也真是够可怜的。奉劝大家一句,别买NEC的光驱。

2007年4月11日星期三

少年包青天3

“明天我就要走了。你收拾好一切,跟我一起走好吗。你放心,我会好好疼你。你病了,我喂你吃药。你累了,我让你靠在我胸口休息。你老了,我就拉着你的手,我们一起去看夕阳,一起回忆双喜镇的事,回忆年轻时的事,回忆我们的儿子出生时,孙子出生时的事。你放心,我一定会好好照顾自己,不让自己比你先死。我会照顾你到最后,让你舒舒服服地走。然后我会立刻下去陪你,不让你有一点孤独。”

这是《少年包青天3》里,公孙策的对白。要不是因为有PPLive,我也不会看到。如果仅仅是肉麻,那也就罢了。问题在于公孙策是男的,而他倾诉的对象,也是男的。这本是剧情最关键的秘密,我当时就能知道并不是因为我比“大宋第二聪明人”聪明,而是因为我看过《金田一》。

这部强片第一个故事就来“唇红齿白,模样俊俏”的男扮女装,第二个故事不但有日本三大神器,还有火贺派忍者小萝莉。除了这些,对白里还有二尾子、大小和尚的龌龊事、清秀的禁脔,连“对足踝有特别癖好”这种话都有,让人怀疑《秦始皇》是不是真的审了有六年。

若说抄,那是一定的了。不但有日本人的,还有斯皮尔伯格和金大侠。在我看这也不是太紧要的事,反正也就是娱乐大众的一个故事。孔孟、老庄、诗词歌赋,张旭、颜真卿、吴道子,太极、两仪、四象、三天二十八宿,现在的孩子能接触到中国传统的机会不多,以这样的方式传承些东西,也不错。

2007年4月6日星期五

令人失望的谷歌拼音

头一回见到“谷歌”这名字,不是在网络上,而是在《经济观察报》上看到的平面广告。虽说无肉使人瘦,可那占了整版的水墨竹广告,还是让我觉得很俗气。一种说不清的感觉,味道不太对。之后,“Google”还是google.com。反正cache一样不能用,gmail、gtalk也没变成谷歌邮、谷歌通,我找不到任何改变习惯的理由。

看报纸、看杂志、看网站,“本地化”这三个字看得实在有点腻味。感觉那是说给上司听的,说给政府和股民听的。反正只要不撞墙,不管是Google中文还是谷歌,不管服务器和公司注册地是在美国还是中国,对我来说也没多少区别。不过关心还是要关心的,毕竟是几乎天天用到的服务。起码,也可以当娱乐版来看。

这不,传言了大半个月的谷歌输入法真的放出来了,各处讨论又是一派热火朝天的景象。这个热闹一定要凑,我尝试从智能ABC换到搜狗拼音,还在磨合期中,是经不起什么诱惑的。可惜用了一小会,感觉就跟看见那幅广告时一样,味道不对。

谷歌拼音跟搜狗拼音,实在太像了。后来者的谷歌所提供的功能,几乎就是搜狗拼音的一个子集。抄袭或许还谈不上,毕竟后来者借鉴前辈是很正常的事。有很多功能,也未必是搜狗独创。但即便这么想,我也没办法对谷歌这次拿出来的东西,赞一个好字。

谷歌拼音比搜狗拼音多出来的功能有三个。“一键搜索”无非又一个谷歌工具栏,没什么用处。“网络同步”虽然是一个好主意,可也没什么特别的。让我眼前一亮的,只有“英文提示”而已。像我这样英文不好记性又差的人,是挺喜欢有个人能帮忙提示一下的。

可是,拼音输入法是用来输入中文的。谷歌的这几个“创新”,无一与“输入法”的核心功能有关。输入法真正该干好的事情,谷歌拼音却未必做得有多好。

中国人一样要用到英文,谷歌显然意识到了这一点,可“英文”并不等于26个小写字母。试试“v/etc”?“/”键根本就没反应。再试试“vUser-Agent”?上屏的就是“vUser-Agent”,包括前面的那个v。

中文多音字非常多,也因此才发展出了以词定字和拆字辅助码的功能,谷歌拼音目前却一概欠奉。靠“智能组词”解决多音字问题?别开玩笑了。除非谷歌不想做输入法,否则这个功能肯定会加上的。

让他我对搜狗拼音深恶痛绝的错词错音就更不要提了。以搜狗拼音Blog上一篇《每周错词总结》为例。捅漏子、胡涂、倘徉、份量、忿忿、伏输、伏罪、蝴碟、希罕、旁徨、余辉、直接了当,17个错词谷歌拼音有12个。“pingzhuhuxi”出来的是“屏住呼吸”,“bingzhuhuxi”出来的是“摒住呼吸”。“张柏芝”是“zhangbaizhi”,“zhangbozhi”居然是“张伯芝”。

keso说:“用市场创新去代替技术创新,最终可能给竞争者留出机会。”这话我同意,所以“搜狗酷字”之类的功能我也不喜欢。但“放弃搜狗拼音,是因为他们在取得最初的成就之后,过早地将注意力放在了‘换肤’这种噱头上”则不然。与吸引小男生小女生的“换肤”相比,“一键搜索”有的只是铜味。产品品质还差人家一大截就开始惦记自己的流量,又是谁比较不可期?

2007年4月4日星期三

病毒之后

究竟是31号还是1号中的毒,我也不记得了,总之这是个蛮特别的愚人节。感觉,有一点复杂。

虽然裸奔习惯的确不好,可这次事件我就算装了什么病毒监控也一样没用。有人提到说他25号就已经中毒了,那离我在网上找寻解决办法至少有五天。如果是我花了钱,买了一套杀毒软件,却发现不但没有尽到保护责任,反应速度还这么慢,那种感觉肯定很糟。一众杀毒软件商们,看来也就这样了。

在刚发现感染病毒的时候,我并没太当一回事。利用了Windows的新漏洞是挺先锋,可病毒本身并没什么特别的。实际上我用Ruby写的清除程序原始版本,只有50来行。包括分析病毒行为和写代码在内,也不过三、五个小时。

不但如此,我甚至还觉得有一点好玩。毕竟我自己的机器几乎没中过毒,该病毒修改可执行文件的手法也不邪恶,所以刚开始也就没有感到作者很恶意。而且病毒试图在hosts文件里屏蔽的那些网站,都不是什么好去处。过招谈不上,似乎是一种交谈的感觉。他给我弄了点小麻烦,可摊子还没烂到无法收拾。只可惜后续的发展,让事情的味道有了些变化。

先是有很多人在我那篇《遭遇Sysload3.exe》里留言,好像认定了我会放出一个“病毒专杀软件”出来一样。我本来只是想弄个rb2exe,帮帮找到我这里来的人而已。可是留言的人不止一个两个。控制台?命令行?想想也知道那对普通用户来说意味着什么。

既然能帮到那么多人,那这件事就不能不管。而且当时在Google里搜索sysload3.exe,我这里排在搜索结果第一位,就更确定了我的想法。于是去下了一个VB6精简版,花了一个晚上写出第一个版本的rmsl3.exe。真的很久很久没用VB6了,手很生。现在让我写VB6的代码,肯定不太舒服,但怀念的感觉倒是蛮真实的。

为了尽快放出程序,导致界面很简陋,功能也不完善,所以我写了个尽可能详细的说明。用户环境千差万别,没经过什么测试,就对硬盘里成百上千个文件进行读写可不是闹着玩的。我注明了不要随意转载,因为我不想自己写的代码给任何人带来损失。不过还是有人转了,说明也有,就一句话,还有一句对作者的感谢。

我没有责怪那位转载者的意思。在找不到解决办法的情况下发现我的程序,恐怕我说什么都值得试一试。转载如果能帮到更多的人,当然也不违背我的本意。可我仍旧有一种沟通困难的感觉,是理念和角度的不同,还是单纯太毛躁?或许我也不该这么谨小慎微,该对自己的代码更有自信才对。

至于病毒本身和其作者。因为我赶着写程序,直到第一个版本完成了,我才发现这个病毒会篡改php、html等文件的内容。如果跑IIS的Web服务器感染了这个病毒,那可真是一次撂倒一大片。这个发现,让我对病毒作者的感觉有了很大变化。

实际上并不是所有的病毒都只干“坏事”,像CIH那样的毕竟是少数。有些病毒只是占你一点硬盘、耗你一点内存,甚至还有帮你杀其他病毒和堵系统漏洞的病毒。虽然这种未获许可的行为仍然不具有正确性,可我宁愿认为这是高手们的“调皮”。多多少少,我能体会这种感觉。

可是这个病毒篡改php等文件的方法是直接覆盖。这与感染可执行文件的方式不同,是没有办法恢复原始内容的。数据无价,硬盘坏了“想死的心都有”,这话我听过很多次。我认为这是界限,所以“调皮”变成了“恶意”,我甚至有那么点失望的感觉。

不管怎么说,今年的愚人节早就过了。我想这个病毒的作者,应该也看不到我这篇东西。目前rmsl3.exe已被下载了70来次,Google里“sysload3.exe”这个关键字的搜索结果,前三页都没有我的链接,大概不会有多少人找上门来了。所以,这件事情可以告一个段落了。

2007年4月1日星期日

遭遇sysload3

因为机器比较老旧,我一向都是裸奔,下了什么东西运行以前,顶多用AVPDOS32扫描一下。这的确不是一个好习惯,以下就算是一个教训。

事情是这样的,昨天找了几个PS2相关的软件,就发现系统不太正常。执行一些控制台程序,例如ruby.exe、lftp.exe、grep.exe等,会弹出一个新控制台窗口,隐隐觉得不对。打开任务管理器一看,有若干个notepad.exe和iexplore.exe进程。可我当时一个记事本都没打开,肯定有问题。

查看系统启动加载项,发现了诸如iexpl0re.exe、c0nime.exe、winlog0n.exe之类的东西,显然是中木马了。我首先想到的就是360安全卫士,奇虎从良以后这个产品的口碑还是不错的。下载运行,查出了两个恶意软件cmdbcs和upxdnd。强制停掉进程后修复,并把加载项及其指向的文件全部删掉后重启,这下360报告没有找到恶意程序了,可事情还没完。

我上了一会网后还是觉得不对,因为硬盘莫名其妙响了一阵。打开任务管理器,又是若干个notepad.exe和iexplore.exe,注册表的情况也一样,那些木马又都回来了。因为重启以前我仔细检查过,所有的自动加载项和系统服务应该都没有问题。这说明木马并不是在系统启动时加载的,而且这次重启后我并没有运行任何可疑的程序。看来我遇到的并不仅仅是木马那么简单,很有可能是一个会感染可执行程序的病毒。

正好早就听说有款叫“驱逐舰”的杀毒软件用了俄国大蜘蛛Dr.Web的引擎,资源占用很少。下回来之后才发现用网上流传的序列号可以安装,但无法升级病毒库,还得用专门的第三方升级工具才行。早知如此我就下试用版了,反正可以用一个月。这是题外话,以后再说。

用驱逐舰扫描后发现了很多可疑文件,病毒名称为DLOADER.Trojan,括号说明“智能启发”。资料里说,所谓“智能启发”就是查找未知病毒的功能。可麻烦的是,如果选择清除病毒,驱逐舰会把可疑文件整个删掉。我硬盘上被感染的文件不止一个两个,如果全删等于是完完全全重作系统,那还不得累死。再尝试用最新病毒库的卡巴斯基来查,这回更是一无所获。八成是个新病毒,这些个杀毒软件都还没反应呢,只好死马当成活马医了。

想了想,Loader是加载器的意思,D要么是Double要么是Dll。从控制台程序会弹出一个新窗口执行看,病毒可能是修改了可执行文件,先执行了他自己的代码后再新开一个进程执行原始程序。挑了两个被感染的文件和原始文件对比一下,发现都多出了12808字节。如果只是单纯把两个可执行文件合并成一个,那感染文件里肯定有两个PE头。

确认的办法很简单,每个可执行文件头部都有一句“This program cannot be run in DOS mode”(不同的编译器不一样,这是VC的),搜就是了。果然,在偏移量0×3200找到了第二个PE头。0×3200是十进制的12800,试着把感染文件头部12800字节和最后的8字节去掉,与原始文件对比,相符。我应该是不需要重装系统了,松了一口气……

恢复文件有眉目了,顺带我还发现了些挺有趣的东西。这个病毒会调用IE去下载文件,这样至少能躲过防火墙。下载的目的文件是http://a.2007ip.com/css.css,这实际上是一个ini文件。病毒会根据这个文件的指示下载若干个木马,上面提到upxdnd和cmdbcs就是这么来的。还有一个http://if.iloveck.com/test/hos.gif,这是个纯文本文件,用来覆盖hosts,屏蔽若干网址。UpdateMe指向的是病毒文件,也就是说这个病毒是可以通过网络升级的。

最有趣的是还是tongji那一行,这一行指向http://if.iloveck.com/test/tongji.htm。这是一个html页面,调用了CNZZ.com的统计代码。每一台被病毒感染的机器都会用IE调用这个地址,包括IP、系统版本、浏览器信息等都会被记录下来。病毒作者给“网站”取的名字叫“安装率”,可惜阅读统计报告需要密码,不然我也想看看究竟有多少人中了他的招。

好了,说正经的:

  • 病毒原始文件名为sysload3.exe,长度12800字节,MD5校验99720C731D19512678D9594867024E7E。
  • 病毒程序被执行后,会试图添加启动加载项“System Boot Check”。
  • 可执行文件被感染后增加12808字节,头部12800字节,尾部8字节。病毒体长度不定,被感染文件尾部的8字节即为病毒体长度。
  • 到目前为止,卡巴斯基无法发现该病毒,驱逐舰虽然可以发现被感染文件,但不能清除。
  • 用360安全卫士删掉恶意软件,并将注册表中的木马加载项删除后,可清除掉病毒主体。但如果有被感染文件存在,一旦执行系统将再次被感染。
  • 打开360安全卫士的保护功能,当病毒进行注册表操作时会报警,可防止病毒被添加进系统加载项,这样能进行带毒操作。可我不清楚病毒代码究竟干了多少事,所以这不是个好主意
  • 我不想一个个去试那些杀毒软件了,所以会尝试自己写一个清除程序。如果在看到这篇东西时兄台的杀毒软件仍然对付不了这个病毒,可以留言问问我。

Update

因为我似乎是网上第一个放出该病毒删除工具的人,因此这一篇也成为我写blog以来,访问和留言人数最多的东西。当时还有人跑来留言,为别的某些网站和论坛打广告拉人,想想也蛮有意思的。现在事件已经过去,问题也都解决了,所以这里不再提供我所写的病毒删除工具,同时把文字恢复到其本来的样子。

2007年3月3日星期六

Torrent文件格式

ed2k链接包含了文件长度和md4值,有了这两部分信息就很容易验证某个文件是否正确。而我在用BT下载某个文件前,有时想检查一下本地是否已经有了该文件的副本。可是很遗憾,我的目的无法达到,或者说不一定能够达到。

本文只涉及Toreent文件格式,TheoryOrg有一份v1.0的BT协议文本,有兴趣了解BT协议其他部分的可以自己看一下。

Torrent文件格式简单得可爱,其使用了一种叫bencoding的数据表达方法,支持四种数据格式:字符串、整数、列表、字典。一个Torrent文件就是一个经过编码的bencoding字典。bencoding的编码方式如下:

字符串
格式为“[[长度]:[数据]]”。其中第一部分长度为ASCII表示的十进制数字,两部分中间用冒号分隔。例:4:spam。
整数
格式为“[i[数据]e]"。开始标识i和结束标识e之间也是用ASCII表示的十进制数字,bencoding允许表示负数和0,所以i-3e和i0e是合法的,但不允许有先导0,故i04e非法。
列表
格式为“[l[bencoded数据]e]”。例如:l4:spami-3ee表示["spam", -3]。需要注意的是bencoding列表是有序的,解码和读取时不能打乱顺序。
字典
格式为“[d[bencoded字符串][bencoded数据]e]”。bencoding字典包含2N个bencoded数据,每2个一对,第一个字符串为[数据名],第二个为[]。例如:d3:who2:me4:lovel1:a1:bee表示{"who" => "me", "love" => ['a', 'b']}。

有了以上说明就足够解码一个Torrent文件了,而一个合法的Torrent文件包含如下内容:

info
包含文件信息的一个字典。info有单文件和多文件两种,详细说明见下。
announce
tracker服务器地址。
announce-list
可选,包含其他可用tracker服务器地址的列表。
creation date
可选,torrent文件创建时间,UNIX标准格式,表示自UTC1970年1月1日0时以来的秒数。
comment
可选,torrent创建者写的备注。
created by
可选,创建torrent文件的程序名和版本。

除以上外,Torrent文件可能还包含encoding、nodes等内容,大概是由后续版本的BT协议规定的。nodes有可能跟DHT有关。

Info字典有两种格式,以下为两种共有的部分:

piece length
每块数据的长度。
pieces
字符串格式,长度除以20即为总块数,每20字节又表示1块数据的SHA1值。
private
值为1或0的整数,可选。看不太懂什么意思,似乎是说如该值为1,则只能从torrent文件中指定的tracker服务器找别的peer,不设或为0则不限制。

只包含一个文件的Info字典:

name
文件名。
length
文件长度。
md5sum
可选,32字节长的文件MD5值。

包含多个文件的Info字典:

name
存放文件的目录名。
files
包含多个字典的列表,每个字典表示一个文件的信息。

files列表中的每个字典包含的内容:

length
文件长度。
md5sum
可选,含义同上。
path
包含一个或多个字符串的列表。0到-2个表示文件目录,最后一个表示文件名。例如["dir1", "dir2", "file.ext"]表示文件保存在dir1/dir2子目录下,文件名为file.ext。

因为BT上传和下载都用不到md5sum值,即使下载完成验证文件,也可以通过pieces包含的SHA1值来完成,所以BT协议把md5sum标记为可选。我随手找来百多个torrent文件检查了一下,创建torrent文件的程序包括Azureus、BitComet和uTorrent,没有一个torrent文件包括了md5sum。这也难怪,SHA1和MD5是完全不同的算法,要加入md5sum势必延长torrent文件的创建时间,能省自然就省了。可这样的省略,也使得我上述的目的很难达到了。

最单纯的情况下,torrent文件只包括一个目标文件的信息,那只要从本地文件创建一个torrent,再比较两个torrent的pieces部分,就可以判断出本地文件是否为目标文件的副本。问题是很多torrent文件都包括了不止一个目标文件,如果其余文件只是txt、nfo、jpg等,还可以下载回来一并验证。但如果torrent包括几个大型文件的信息,又只想验证本地是否有其中一个文件的副本,则几乎没办法做到了。

假如有md5sum,一切会变得非常简单。我测试所用的那些torrent中,绝大部分都是BitComet创建的。不知道写信给作者提建议,他会不会理我。

2007年1月31日星期三

如何在XP中使用微软雅黑

虽然观感是很个人的问题,但中易宋体的内嵌点阵确实要比微软雅黑来得清晰锐利。不过微软雅黑的意义在于实现了中文字体的ClearType和平滑缩放,这却是中易宋不能比拟的优势。看久了,大概也就习惯了吧。

目前微软雅黑的版本窜到了5.0,但仍有不小改进空间。文字大小参差不齐的情况依然。中文数字“一”在连续出现时会连在一起,如“一一解决”看起来就是个破折号。最难看的是标点符号部分,尤其是左右单、双引号,两对符号形状完全一样,只是略为靠左或靠右。

想在XP中使用Vista的字体,网上流传的方法大多不太完整,要不就显得太为暴力。这里提供一个较为全面的方案,除了尽可能安全外,还解决了如日文和韩文乱码等问题。

首先需要获得Vista的内置字体,简体中文的字体名为微软雅黑,还有繁体中文的微软正黑,日文的Meiryo,韩文的Malgun。这几个字体目前最新的版本都是v5.00,HuangYongTao在他的Blog上有提供下载。

以下是各字体的文件名、文件大小和CRC值,如果已经从其他地方获得了字体文件,可查阅一下自己的是否是最新版本:

Update

v5.0版的韩文字体Malgun在资源管理器中显示的字符偏小,与雅黑和Meiryo配合不佳,不是经常用韩文的人就别装了吧。

网上出现了很多雅黑的修改版本,如碧海潮声的“雅黑宋体”和“极限雅黑”,都宣称解决了若干问题。好不好看大家可以试试,只要不是直接替换宋体的方式,都可以用我这里的脚本来安装,就是字体名需要修改一下。

Windows 7中包含了v6.01版的msyh.ttf和v6.02版的msyhbd.ttf。这个版本解决了姓名连字符“·”显示为方框的问题,降低破折号笔画高度以示与中文数字“一”的区别(但“一一说明”中的“一”还是连着的),似乎也部分解决了在XP中撑大对话框的问题。不过我总觉得这一版字体的颜色变淡了,另外标点符号也没有变化。

v6版雅黑我找到了一个Rayfile下载地址,这是一个安装包,即使系统内已存在雅黑也可以完成替换。如果不放心,也可以用7-Zip打开并解压缩手动安装。我想其他字体在Windows 7中应该也有更新的吧,等找到再说。

文件名尺寸CRC
v6.0X
msyh.ttf(6.01)21,719,9805C83D8E6
msyhbd.ttf(6.02)14,602,860C861592C
v5.0
msyh.ttf15,044,4408954581A
msyhbd.ttf14,685,87641CDF7AB
v5.0
msjh.ttf14,713,704A634C5A2
msjhbd.ttf14,509,688E9DA1497
v5.0
meiryo.ttc7,815,29279FA7E43
meiryob.ttc8,054,096C386FBC6
v5.0
malgun.ttf4,337,10465B587BE
malgunbd.ttf4,513,520F1F5ED97

将获得的字体放入C:\Windows\Fonts目录即可完成安装。除了微软雅黑外,其余字体并非必须。这里多嘴说一句,虽然微软正黑体中也包含了简体字,但由于该字体是根据台湾教育部标准字形进行制作的,笔画标准会与大陆通行的有所不同。因此并不建议以微软正黑作为日常使用的字体,尤其是不应该给在校学生使用。

然后打开控制面板,显示、外观、效果,将字体边缘平滑设为“清晰”,这是为了打开Windows的ClearType字体描绘功能。确定后在“高级”中将所有能改字体的项目都改为微软雅黑,字体尺寸可维持不变。再在IE菜单上选工具、Internet选项,常规页上选字体,将网页字体设为微软雅黑。

经过如上设置后,系统的大部分内容都会用微软雅黑进行描绘了。如觉得显示效果还不够理想,可在绿色下载站下载ClearType Tuning进行微调。如果链接失效,在搜索引擎里找“字体清晰工具”也能找到下载链接。个人觉得用这个工具将雅黑的黑度增加一些,看起来比较不会累。

接下来的设置就需要修改注册表了,如果这对你来说有点困难的话,可以在本文最后下载我写的修改脚本。

运行注册编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize,将GUIFont.Facename的键值改为微软雅黑。这一键值会影响部分通用GUI元素所使用的字体,例如按钮、记事本等等。

再定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink,新建一条名为“Microsoft YaHei”的多字符串值,将“gulim.ttc,gulim”和“MSGOTHIC.TTC,MS UI Gothic”以回车分隔写入。这里我懒得bq了,不明白的话参考同项中的Tahoma等字体的写法就知道了。

这一步类似于Linux中常说的字体替换,Gulim为XP附带的韩文字体。微软雅黑中并不包含所有的日文及韩文字符,如缺少了这一步,文件管理器中的日文及韩文文件名就会是方块。gulim.ttc和msgothic.ttc是XP附带的韩文和日文字体,当然也可以替换为Vista的Malgun和Meiryo。

如定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes,新建一个名为“宋体”的字符串值,并设置为“Microsoft YaHei”,可使系统在更多地方使用微软雅黑。例如登录界面中的“欢迎使用”四个大字,还有部分直接汉化EXE文件的程序。不过该方法仍然无法使系统全面使用微软雅黑,IE中还会出现宋体与微软雅黑相杂的情况,是否使用请自行选择。

另外还有HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage下的932、936、949、950子键,这些子键控制了对应代码页下的默认文字字体,FixedWidthFont为等宽字体,ProportionalFont为矢量字体。936为简体中文代码页,可将对应键值改为微软雅黑。932是日文代码页,949是韩文代码页,950是繁体中文代码页。

最后是HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts下的23、24、25、26。这些子键控制了IE中声明了页面语言,但没有指定文字字体的页面用什么字体进行描绘,也就是对应繁体中文、日文、韩文的“默认字体”。实际上Internet选项中进行的修改,就是保存在这里。

以上这些就是我在注册表中找到的所有有关字体的设置。需要注意的是,即使进行了上述修改,也没办法做到使XP系统全面使用微软雅黑。因为只要该字体存在,部分在资源文件中指定使用宋体的程序,仍然不会用微软雅黑进行显示。

如果非要不可也有两个办法可以解决。一则是用字体编辑工具,将微软雅黑的字体名改为“宋体”,并删除系统中原来的simsun.ttc文件。不过这已经超过了本文所想涉及的范围,有兴趣的可以自己查阅相关信息试一下。第二个办法就是直接将simsun.ttc文件删掉。这个办法同样可以使几乎所有的文字用微软雅黑进行显示,不过后遗症是可能有部分文字会显示为方框。如何取舍,可以自己斟酌着办。

为了使用方便,我写了一个自动完成注册表的修改和恢复工作。如已安装了中日韩三地的四个字体文件,直接双击该脚本即可自动完成上述的所有修改工作。如想要恢复系统原始设置,用文本编辑器打开脚本,将bRestore设置为true并再次运行脚本即可。如果只想安装微软雅黑,也可以打开脚本编辑一下参数再运行。

sSC = "Microsoft YaHei"
sSCl = "微软雅黑"
sSCf = "msyh.ttf"

sTC = "Microsoft JhengHei"
sTCl = "微軟正黑體"
sTCf = "msjh.ttf"

sJP = "Meiryo"
sJPf = "meiryo.ttc"

sKR = "Malgun Gothic"
sKRf = "malgun.ttf"

bTC = 1 ' 是否安装了微软正黑字体,如否请将1改为0
bJP = 1 ' Meiryo,日文字体
bKR = 1 ' Malgun Gothic,韩文字体

bRestore = false ' 反安装则改为true

set oSh = wscript.createobject("WScript.Shell")
sub WriteReg()
  if bRestore then
    if sVal <> "" then
      oSh.run "reg add """ + sPath + """ /f /v """ + sKey + """ /t " + sType + " /d """ + sVal + """", 0
    else
      oSh.run "reg delete """ + sPath + """ /f /v """ + sKey + """", 0
    end if
  else
    oSh.run "reg add """ + sPath + """ /f /v """ + sKey + """ /t " + sType + " /d """ + sNVal + """", 0
  end if
end sub

' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize"

sKey = "GUIFont.Facename"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes"

sKey = "宋体"
sType = "REG_SZ"
sVal = ""
sNVal = "Microsoft YaHei"

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink"

sKey = "Microsoft YaHei"
sType = "REG_MULTI_SZ"
sVal = "gulim.ttc,gulim\0MSGOTHIC.TTC,MS UI Gothic\0mingliu.ttc,PMingLiU\0"
sNVal = ""
if bKR = 1 then
  sNVal = sNVal & "malgun.ttf,Malgun Gothic\0"
else
  sNVal = sNVal & "gulim.ttc,gulim\0"
end if
if bJP = 1 then
  sNVal = sNVal & "meiryo.ttc,Meiryo\0"
else
  sNVal = sNVal & "MSGOTHIC.TTC,MS UI Gothic\0"
end if
if bTC = 1 then
  sNVal = sNVal & "msjh.ttf,Microsoft JhengHei\0"
else
  sNVal = sNVal & "mingliu.ttc,PMingLiU\0"
end if

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\932"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "MS Gothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "MS PGothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\936"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "新宋体"
sNVal = "微软雅黑"

call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\949"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "GulimChe"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "Gulim"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\950"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "New MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\23"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "GulimChe"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "Gulim"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\24"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "MS Gothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "MS PGothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\25"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "New MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\26"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "新宋体"
sNVal = "微软雅黑"

call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"

call WriteReg
' ========

2007年1月28日星期日

《战神》:好故事,虽然不太懂

最近没发现什么好玩的游戏,又把《God of War》翻出来了,正好还有个God难度没打过。一路都还算顺遂,可现在卡在Ares之战的第二场。看到网上有人说这里卡了两个月,所以我也不着急,慢慢磨吧。

能让我这种Light User拿起手柄挑战最高难度的五周目,《战神》当然很好玩。不过我想说的不是关卡设计或者打击手感什么的,我觉得更加难得的是,一个动作游戏还能编出个不错的故事来。

《战神》是一个18禁游戏,除了有暴力血腥的镜头以外,连故事情节都很少儿不宜。但没打过游戏的人也别误会,所谓“少儿不宜”,跟色情没什么关系。只因为这个游戏里没有所谓的好人,没有正义和邪恶的对决,一切的杀戮都显得毫无意义。

主角Kratos本来就是个嗜血的斯巴达人。当他在一次战斗中失败,面对敌人即将落下的斧头时,他大喊Ares的名字乞求帮助。Kratos得救了,并且从此成为了Ares的仆人。为了将战火献给他的主人,Kratos发动了一次又一次的战争。直到有一次,他在一个Athena的神庙中亲手杀死了自己的妻儿。Kratos陷入了痛苦中,并且从此不再侍奉Ares。游戏的主要流程,就是Kratos如何在Athena及Olympus众神的授意下杀死Ares的过程。

听起来是一个普通的复仇故事,顶多还有一层凡人弑神的含义,实际上并非如此。Kratos在杀死自己的妻儿之后,并没有主动开始仇恨Ares。他仅仅是本能地在痛苦着,但为什么痛苦,他自己并不知道。为了摆脱那个缠绕着他的梦魇,他纵情声色,企图忘掉过去,他侍奉众神,希望得到解脱,就这样过了十年。

会因为杀死妻儿感到痛苦,证明Kratos有着为人的基本良知,但也仅仅如此了。自己的妻儿是人,别人也是人,但在Kratos眼中却并非如此。为了前进,不管是人还是怪,杀戮对于Kratos来说很平常,反倒救人却只有在必要时才是值得做的事。说到底,Kratos是个没有人性,不会思考的杀戮机器而已。也就是因为这样,他才会一再被众神愚弄和利用。

在爱琴海上,Kratos诘问Athena何时才能让他脱离过去。可Athena向他要求了一个最终任务,杀死Ares,拯救她的城市。Athena向他承诺,完成任务之后,他所做的一切“will be forgiven”。一切结束之后,Athena又说:“众神承诺原谅你,因此你已经获得原谅了。可众神并没有承诺使你获得解脱。没有人,也没有神能忘掉你曾犯下的罪行。”

Kratos所乞求的对象,Olympus山上的众神,全是些无法领人信服的存在。Athena出面愚弄了Kratos,授意他杀死自己的兄弟Ares。Zeus、Poseidon、Hades、Artemis,甚至Ares的情人Aphrodite都来帮助Kratos完成任务。“Go With Gods, Kratos. Go force, in the name of Olympus.”听起来很蛊惑人,可众神都跟Ares作对,是为什么?

游戏没有交待,我也不愿轻易以为,众神只是为了阻止Ares的战火蔓延在世界上。最终之战以前,Ares对着天空喊了一段话,听起来不过是个不得父亲宠爱的孩子在抱怨着。而将Kratos从冥界带回来的老人是谁?神殿前使妻儿的灰烬覆着在Kratos皮肤上的老妇又是谁?不负责地猜测一下,前者恐怕是Zeus,后者就是Athena本人。

Kratos并不明白,究竟是什么使自己如此痛苦。过去的事已然发生,那就永远存在。神并不是值得依靠和寄望的对象。从一开始就注定了,一切的乞求都是无谓的。能够原谅自己的,只有自己。但他却从一个极端走向另一个极端,他选择了自杀。

如果要自杀的话,何苦等待这十年?在那个存在冥界的世界里,死亡真的能带来解脱么?可笑的是,众神连死亡的权利都不给他。Athena说众神不会允许一个曾帮助他们的人死于自己的手,而且Olympus山上也需要一位新的战神,他们要Kratos坐在那个位置上。

我不理解为什么Kratos会顺从众神的安排。跟某人聊起时,他说一个曾经自杀的人,获救以后万念俱灰,会有一种无可无不可的心态。我无法接受这种解释,我只能说,Olympus山是个自私之地,Kratos也是个无可救药的可怜人。

附:

东西没写完,游戏却打完了,看来我运气还不错……

Ares之战分三场,能以God难度打到这里的人肯定都经历过了。第一场是最简单的,放一个Army of Hades然后L3+R3,整个神化过程中能召唤三次Hades的军队。完成了Ares的血槽也差不多见底了,运气好MP也能补满。如果不满,Ares头上冒圈后与他较力,等爬到Ares背上时故意按错键会被甩下来,几乎不扣HP。这时冲上去猛攻,Ares再次冒圈就能补充HP和MP了。在进入第二场之前,必须保证自己的HP和MP都是满的。

第二场最难,而且过关需要点RP。作战的基本思想是保护自己优先于保护妻儿,拖延使用MP的时间。比较有利的位置是妻儿的右边,镜头的左边。主力技是链刃的□□△,最理想的状态是将敌人都引到镜头右边,每次□□△都能使全部敌人倒地。镜头左边如有敌人,数量也不能超过一个。需要注意防御,防御成功就用□键将敌人弹开。如果在屋顶被掀开以后,自己的HP没什么损失,妻儿的HP还有一半以上,MP也没用过,第一阶段作战就算成功。

屋顶被掀开以后战斗进入第二阶段。画面后方出现的弓箭手的攻击因为有神坛阻挡,可以不用管。当妻儿HP损失一半以上时,就可以考虑使用一次Army of Hades了。当妻儿HP减到只剩五分之一左右,神化。Army of Hades及Poseidon's Rage交替使用,手快的话,结束神化状态以前还能召唤第三次Hades的军队。这时妻儿的HP也差不多见红了,在有Hades的军队的保护下,冲上去按住○为妻儿补充HP。将妻儿HP补满,神化槽也能补充过半。这时自己的HP和MP也应该有一半左右,继续牵制敌人。

当出现手拿Artemis之刃的敌人时,战斗进入第三阶段。这时如果神化槽还没满,召唤Hades的军队,给妻儿补血并补满神化槽。Artemis之刃对付妻儿几乎是秒杀,眼见不对立刻神化,依旧是Army of Hades及Poseidon's Rage交替使用。如果之前的战斗顺利的话,神化未结束战斗就结束了。

即使没有也不要慌,每一个敌人出现点会出现的敌人都是固定的。如果先把某个出现点的敌人干光,之后这个点就不会再有敌人冒出来。如果到山穷水尽的地步了,场地上的敌人也不超过两个时,那还有一拼的可能,只要坚持就有希望。

第三场相比第二场就容易得多,只需要多一点点的耐心就可以,而且有一个诀窍可以迅速解决战斗。Ares除了魔法,近身攻击有两种,防御不能技只能跑,可防御技在躲过后,Ares会大喊一声,触角也会立起来,这是攻击的大好机会。如果此时Kratos离Ares较近,冲上去□键,如未打中就R3跑掉。如命中,连按△键重攻击。在4连击达成时,几乎100%会形成较力。只要赢了,就能砍掉Ares不少HP,而且Ares还会有很长时间的硬直。重复这个过程,较力两次就能把Ares干掉。

2007年1月26日星期五

智能ABC之后

Vista拿掉了智能ABC,很多人都不满意,包括我在内。于是网上开始流传着“Vista版智能ABC”,以及关闭IE7保护模式的方法。可排除了个人情绪之后,我也只能说,这怪不了微软。

在微软主页上我翻到了一条旧闻,标题是《国家有关部门与微软签署Windows 95™中文版项目标准规划合作协议书》。其中有这么两句:“Windows 95™中文版将选择全国信息技术标准化委员会推荐的标准规划化中文字和规划化中文输入法。该委员会将根据中国政府有关部门的规定,以合理的方式和价格向微软进行技术转让。”

大家都知道,Win95中除了拼音、区位之类几乎没什么实用性的输入法外,主要附带的输入法就是智能ABC和郑码两种。前者的开发者为北京大学朱守涛,后者的版权则属于北京中易电子公司。两者与信标委应该都不存在上下级关系,“该委员会……向微软进行技术转让”不知从何谈起,想来无非也就是“政府协调”吧。

这桩生意大概不会为朱守涛和中易公司带来多大收益,“合理的方式”肯定不会是按拷贝计算版权金。至于一次性技术转让费能有多少,想想甲方是谁也知道不会多。而且相比中易公司,朱守涛先生在这桩买卖里所处的位置更为不利。

汉语拼音不可能申请专利,而郑码显然是有专利的。但像v键前导临时输入英文字符,i键前导输入高频字和大写数字一类的功能,专利局还是有可能会受理的。可朱守涛先生有没有试图申请?还是微软连这一步也事先想到了,已经获得了专利授权?总之以结果来看,微软想踢开中易做出一个“微软郑码”并不可能,但微软拼音中出现一个“智能ABC模式”已经成为了现实。

说到这里,似乎我是在为智能ABC叫屈,其实并非如此。要知道,一众扇子对于智能ABC的依赖,除了附加功能和输入风格外,最重要的就是字词排序。而由第三方实现一个智能ABC的完全克隆,显然没有可能。只要智能ABC继续开发,凭借多年来预装地位所带来的用户惯性,即使Vista拿掉智能ABC,保有相当市场份额也不是难事。实际上并不是用户放弃了智能ABC,而是智能ABC放弃了自己。

无法删除错误的自造词,自造词达到上限造成出错,v模式bug引起软件不正常退出,一直以来智能ABC都有些不大不小的毛病。随着Windows的升级,这些毛病不但没有修正,反而还越来越多。直至Win2k中那种既非宋体又非仿宋体的候选字字体出现,我甚至有点怀疑,这是故意的。

到WinXP推出,包括难看的字体在内,问题依旧还摆在那里。这些时间智能ABC的开发者都干什么去了?办了家叫阳宁的公司,卖了份授权给中科红旗和华镭,还开发了一个“智能ABC袖珍版”——只是没见到有什么手机、PDA、机顶盒用过。

一直到2004年11月7日,Windows的智能ABC才更新到了v5.22版。字体总算改过来了,而且终于可以输入那个著名的“镕”字了。不但如此,像“嗯”、“瓩”这一类字,也可以按照正确的读音进行输入,算是一个值得骄傲的新特性。然而原本存在的某些问题依旧存在,还引入了新的问题——cmd.exe窗口中候选字序列消失了。并且这是一个要卖38元的共享版本,安装包中还附送了两个俗称流氓软件的插件。

要不要卖钱是软件作者自己有权决定的事,可安装包里还捆了别的东西,这种行为也太小气点了吧。原本正常使用的功能突然消失,是测试问题,还是cmd.exe高手向,没几个人用?我无语。

从1994年的Windows 3.2,到2003年的Windows Server 2003,智能ABC作为Windows的预装输入法有近十年时间。我还曾经寄望于Vista中的智能ABC,可从那充满死链的官网来看,这个输入法恐怕很难再有下一个版本了。说再见的时候到了么,我有一种被甩掉的感觉。

煽情一把,留个纪念:

Windows 3.2
v3.10.147
Windows 98SE
v4.00.950
Windows 2000
v5.00.2190.1
Windows XP
v5.1.2600.0
Windows Server 2003
v5.2.3790.0
znABC v5.22a
v5.22.216