逐步调整Blog风格

好久没有更新Blog,却突然冒出一长篇英文教程来,呵呵,Blog写的很没条理,是有必要调整一下后续的风格和方向了。

Twitter的启发,其实Blog并不一定要写的“文模文样”的,以轻松和随性的心态对待Blog,才不会让Blog变成一种负担。想当年,周围很多人顺应博客的大潮开始步入Blogger的群体,但大部分都以三分钟的热情而收场,我的Feeds中有很多朋友的Blog,虽然少数仍在笔耕不错,但大部分都已经不再更新。我始终不曾删除它们,希望哪一天能够看到他们回来继续那一份小小的Blog,哪怕只是一声轻轻的问候。:)

从2005年9月开始写Blog至今,已有超过一年半的时间了。当时就是以一种很随意的心态开始了这个Blog,点击率、订阅数、PV……都于我如浮云,只是当作一个Public Diary兼Works Showcase,一步步记录我的人生轨迹。(AdSense的广告纯粹出于一种心里安慰,摆了一年多还没到首期支付额的1/20 =_=!)但受到一些传统文学创作方式的束缚,我始终没能放开来写,Draft中堆积了好多草稿,却迟迟没有完成。只因为把写作看的太正式,所以总觉得不写的像点样子实在不好发布出手。

今后Blog的风格将向两个方向延展,轻松一向略微向Twitter靠拢,但也绝不是就此成为记录流水账和口水话的便签薄;专业一向需要增加一些有思想和技术含量的文章,展现出个人的兴趣和专长。Symbian仍是现阶段的一个技术主题,但后续也会多样化,将Linux、Web 2.0、移动互联网等方面的研究也融入进来,并适当写一些评论方面的文字。

OK,废话不说那么多了,重要的还是行动!

Explore and Hack the Server Heap in Symbian

One of the most important design in Symbian is the well-known server/client framework. As the server and client are in different process spaces, hacking the server is generally difficult to achieve by means of normal application. But another important framework provided by Symbian give us a chance, the Plug-in framework, which is also merged into the ECOM framework in newer Symbian OS.

继续阅读Explore and Hack the Server Heap in Symbian

初步完成Symbian全部字体相关内部类结构的反向工程

经过几个月的逐步积累,终于初步完成了所有这些字体相关类的结构整理和少量简单成员方法的反汇编。包括但不限于:

CFontStoreFile
CFontBitmap
TTypefaceFontBitmap
TOpenFontFileData
COpenFontSessionCacheList
COpenFontGlyph
COpenFontGlyphTreeEntry
COpenFontGlyphCache
COpenFontSessionCacheEntry
COpenFontSessionCache
COpenFontSessionCacheListItem
COpenFontSessionCacheList
COpenFontPositioner (Deprecated)
TKern (Deprecated)
TLigature (Deprecated)
TDiacritic (Deprecated)

终于不必再因为Symbian那少的可怜的字体API接口而进行缚手缚脚的Coding了~

待后续验证和测试通过后,我会逐步公开这些Symbian内部接口。(仅供教学和研究用途)


After months, I’ve finally finished preliminary reverse-engineering analysis on all the font-related internal classes in Symbian. After basic validation and test, I’ll publish all the analysis results, only for educational purpose.

借尸招魂——WinXP 12小时抢救实录

前两天实在被nForce3的驱动程序折腾疯了,甚至于走火入魔到自己mod起驱动程序来。话说这nVidia发布的早期驱动确实bug不少,手术过程中一不留神就会遭致“机瘫Win亡”的惨剧。昨晚,我的新WinXP第一次面临了安装以来最严酷的生死考验。

4月7日·晚9时许

不记得在哪一次修改完驱动组合后,重启WinXP,硬盘哗啦啦的一路高歌猛进,可输入输出设备却似乎跟不上节奏了。显示器首先鸣警:无信号输入,紧接着发现键盘也不听使唤了,Caps Lock/Num Lock尽皆失灵。初看起来不过是又一次寻常的mod失败,Reset并启动安全模式,收拾残局准备下一次尝试。不过,事情似乎没那么简单,这一次罢工的影响远超出我的预料,Safe Mode倒是能进入,也见到了“和蔼”的欢迎提示,不过该死的键盘和鼠标依旧失灵……

晚10时

安全模式的失效意味着WinXP第一道应急防线的彻底沦陷,看来不得不放弃前沿阵地而启用灾难救援预案了。首先想到的是“故障恢复控制台”,Oh, my god! 上次重装WinXP后竟然把这项重要的安全工程给遗漏了,而现在甚至连一张WinXP的安装光盘都找不到(估计是搬家时给漏掉了……)。无奈,只得放弃ERC,出动老将VFloppy for NTFS——这位曾数次助我化险为夷的显赫功臣。正所谓祸不单行,VFloppy竟然向我回禀“NTFS分区挂载失败……”,Shit! 没想到向来无往不利的VFloppy偏偏这个时候失灵了。

就在快要陷入无助之境时,突然忆起上次重装WinXP的时候顺带在第二硬盘上兴建了一个“Area 51”:一套Ghost版的WinXP,平日一直封存起来,只待灾难来临时成为酝酿最后反击的基地。于是,我用颤抖的双手启动了“Area 51”的硬盘引导,片刻之后,我终于不得不承认,现实就是现实,远没有科幻电影中的情节那般激动人心和荡气回肠,因为我看到的只有一个孤冷的提示:“NTLDR missing…”(弦外音:后备营救系统就好比灭火设施,万万不可放松日常检查!X< )

晚10时30分

很久没有如此背水一战了,在诸般手段尽皆失灵后,我从光盘包里找到了最后的一条救命稻草 —— 一张友人相赠尚未开封的“Ubuntu Linux 64-bit”光盘。用这张“Linux Live CD”引导系统后,终于见到了久违的Linux Desktop。有了这个完整的Linux平台,我总算可以放手实施救援行动了!

晚10时50分

检查了一下WinXP的系统文件夹和启动日志,初步判断可能是PCI总线驱动程序的问题,需要替换回官方的版本。但开始着手替换文件时才发现原来Ubuntu自带的NTFS支持是“只读”的,不得以又去网上找了一个支持完全读写功能的ntfs-3g。因为所用Linux是64bit的缘故,没有现成的安装包可用,只好自己手动编译。折腾完这一堆麻烦事儿后,已经累的不行了。

晚12时30分

替换了驱动程序文件,依旧没有任何起色。看来今天是解决不了问题了,索性直接关掉电脑睡觉去,说不定早上一觉醒来,发现XP还是那个可爱的XP,眼下的一切不过是一场噩梦罢了~(非典型Matrix臆想症……)

4月8日·上午8时15分

被闹铃唤醒后,打开电脑,更衣,洗漱。回头面对屏幕时才想起我的WinXP尚处于生死未卜的境地,原来真是不只是一场噩梦……

既然排除了驱动文件损坏的可能性,那么问题的焦点自然而然的锁定在注册表,看来多半是在安装驱动程序过程中的异常重启对注册表造成了严重创伤。好在我常备有ERUNT……等等,还是先虔诚的祈祷一番再启用它吧,免得又遭遇如VFloppy和“Area 51”同样的厄运。斋戒祝祷完毕后,打开ERUNT,哗,好家伙,竟然悄无声息的吞掉了我1个多G的C盘空间,难怪前些日子发觉C盘剩余空间日渐苍白呢。暂且抛开怨念,眼下毕竟还指望着它救命那。

试着用前一天上午的备份恢复了注册表的System分支(注:硬件驱动相关的问题可以不必恢复Software分支,以减少对系统的负面影响),重启,切换回WinXP引导。数分钟的沉闷之后,终于再一次见到了我那纷乱不堪的桌面。这种感觉,正如古人所云:一日不见,如隔三秋……

上午9时左右

重新安装了Remix 11.10的nForce驱动程序后,WinXP终于又回复了往昔的宁静与安详。全然看不出刚刚所经历的这一番生死劫难。

God forgive me~ 再也不玩危险的mod了……

WinXP crashed again, now live with Linux…

After some crazy modding of nforce drivers, my WinXP crashed fatally. Even the safe mode is not available…

I’ve been seeking for a rescue CD of WinXP, but with no luck. Instead, I found a Ubuntu Linux CD for 64-bit system which is received from my friend. So, I’m now getting attached to Linux~

It’s really not that comfortable for me to live with Linux, even Ubuntu gives the perfect experience on installation and user interface. First, I had to find a Chinese input method in order to end up with this messy English writing… )-X

亦云——谷歌拼音输入法

谷歌拼音输入法,终于从传闻变成了现实。

今天刚刚发布第一个版本的谷歌拼音就在IT界引起了轩然大波。正是因为有了搜狗拼音这个先驱者和竞争者,谷歌拼音的面世才会受到如此关注,看来搜索引擎和输入法确实形成了可预见的共赢关系,以至于连谷歌都会按耐不住。

从软件质量来说,谷歌拼音的第一个公开版本就能达到如此高度确实体现了其卓著的开发能力。如果这真如谷歌自己所宣称的那样,仅仅是两个开发人员利用20%“自由”时间所完成的,那我可真要“Orz”了!但这样说起来,似乎又对搜狗拼音有些不公平,毕竟人家花了无数个版本所积累起来的经验即被谷歌所快速的消化,甚至其引以为豪的海量词库也俨然被谷歌拼音“兼容并包”的吸纳了过来。

试用之后的第一感觉,谷歌拼音简直就是 搜狗拼音 + 微软拼音 的“杂交” ,兼具了搜狗的网络词库优势和微软拼音的整句辅助识别功能,再加上谷歌自己的一点小小改进。词句识别率和默认词频状况感觉大致与搜狗拼音相当,速度上略胜一筹。不过作为晚于其竞争对手杀入市场的生力军,缺乏创新的“闪光点”就使得印象分大打折扣。毕竟输入法也是有一定用户黏合性的产品,如何在竞争中争取到对方的用户才是后来者所需面临的主要挑战。

个人还是比较看好谷歌拼音后续的发展势头,毕竟好的开头加上Google的产品开发理念(好像被谷歌继承的时候有些缩水……),完全可以造就一个实力派的输入法产品。同时,我相信作为国产输入法的佼佼者,搜狗拼音绝对有不输于谷歌的开发实力(但愿有了谷歌的竞争,搜狗别再为换肤这种花哨的功能而瞎忙活了~)。就目前的成熟度来说,谷歌拼音还不足以替代我手中的搜狗拼音输入法,除非新版本中实现以下几项功能:

(1)外观字体、颜色的调节。我喜欢大字体、高对比度,在LCD上不费眼睛,轻轻松松打字。
(2)状态栏隐藏。对于一个实用主义者来说,输入法状态栏除了碍眼之外,别无其它用途,hotkey才是王道。
(3)支持候选框的竖显。说实话,如果你习惯了竖显的后选字栏,才会发现头脑对候选项索引反应速度可以加快不少。如果你希望达到180字/分钟的打字速度,这一点是不可忽视的哦。(但愿不是因为我的大脑构造有别于常人吧……)
(4)我非常钟意搜狗拼音的“智能删除误造词”功能。只因为我这个人经常“高速盲打”,“盲”到词语上屏之后才发现输错了拼音。搜狗的这个功能实在非常体贴!

折腾nForce Remix Driver

因为新安装LAN接入宽带的缘故,重新启用了封存已久的nForce3内置网卡。(此前一直用的无线接入,所以板载网卡基本闲置)

搜索驱动程序的时候发现nVidia的nForce3芯片组官方驱动竟然还是2005年11月的版本,虽然nForce3早已退出市场,但没有新驱动使用的滋味就好像有被遗弃一般。无意中,一款由国外网友squall_leonhart制作的nForce2/3/4系列mod驱动程序吸引了我的注意。他将目前nVidia为nForce4及以上型号所发布的驱动程序可以用于nForce2/3的组件提取出来,制成了这个mod驱动。目前最新的版本是11.10:(驱动之家等国内网站收录的还是9.35的版本)
http://www.ngohq.com/submit-news-members/8174-nforce-11-10-unified-remix-x32-x64.html

初试这款驱动便在安装时碰了一块大石头……安装Ethernet Driver组件至一半时,系统直接无任何征兆的复位。之后WinXP启动过程中蓝屏,提示网络适配器驱动故障。惊恐之余发现安全模式还算能正常进入,立即卸载了网卡驱动。这时再来细读驱动包的Readme时才发现一个重要的提示:“必须首先干净的卸载原网卡驱动”。(汗,又一次着了不看文档的道……)

这一次按部就班的完成了安装过程,一路有惊无险。重启WinXP后,一切看起来都工作正常并充满了新驱动带来的“活力”(八成还是心里暗示……)。欣喜之余,不禁感叹nVidia的无情,明明ForceWare都可以受益于统一驱动构架,但nForce2/3系列却被早早的遗弃,而这款mod驱动用事实证明了nForce4的驱动其实还是完全适用的,也不知道nVidia究竟是出于什么考虑。

还没切身感受到新驱动所带来的变化时,没想到又遭打击。PPPoE的网络连接在运作没多久后就“罢工”了 ,源源不断送出消息包的同时,接收的消息包统计却止步不前。断开连接后甚至无法再次创建PPPoE,只能用禁用-激活网卡的方式强制恢复。可惜,前面遇到的故障并非偶然,每一次连接不到10分钟就会遭遇“断流”。

这一次学乖了,先看驱动包的Readme和发布帖子中的说明,又找到如下一句话:“ if you have problems with ethernet 65.xx please use 9.53 unified remix”。Shiiiiit! 无福享受最新版本,看来只好回退到老的9.53版了……

安装9.53后,上述问题依旧,一怒之下索性干脆将Ethernet Driver组件替换回官方5.11驱动包中的版本。没想到的是,“断流”的问题俨然阴魂不散的缠住我不放了,纵使我想要全身而退亦不可得……

一个晚上的时间就这样花在不停的替换尝试各版本的驱动程序上了,最终让我无意中找出了问题的根源——nForce的Ethernet Driver和Look’n’Stop发生了冲突,只要安装网卡驱动时拒绝Look’n’Stop随之而来的安装提示就不会再遭遇“断流”的困扰。而实际上,至少到目前位置,也没有发现任何Look’n’Stop的功能因据装附属驱动而受到影响的情况。

揪出“祸根”后,重新装上最新的11.10版remix驱动也表现一切正常!

最后,总结一下与remix驱动有关的几点:

(1) nForce3官方“最新”的5.11驱动在我的WinXP中只要修改网卡属性就会毫不留情的立即重启,无论是从设备管理器还是Web界面中进行修改。

(2) Remix 9.53版的Network Access Manager无法安装,提示“在本机无效” ,不清楚是我的个别遭遇还是nForce3使用remix驱动的共通问题。

(3) 使用nVidia驱动中自带的测速功能对新旧版本的SATA速度进行了测试,没有发现误差之外的性能提升。(分别用两块硬盘在SATA-1模式下进行的测试:希捷7代 120G、希捷10代 320G)据国外论坛的网友称,新版本的GART driver带来了3D性能的明显提升,这个我倒没测试,但愿如此。

(4) 使用官方驱动包时,我的uTorrent 1.6.1 Stable版本在启动过程中提示nVidia的网卡驱动与之有冲突,可能导致内存泄露和CPU占用过高。不过我倒暂时还没遇到上述问题,而安装Remix版本的驱动后则没有了这个提示。

(5) Remix 11.10版的Ethernet Driver和Network Access Manager在nForce3上无法开启“防火墙”组件(可能因为nForce4的硬件防火墙驱动与nForce3不兼容吧),所以如果希望使用nForce3的硬件防火墙功能,则Ethernet Driver和NAM组件必须使用官方nForce3的驱动包。

Update (2007.4.7) : 经过几天的“试用体验”之后,彻底对nForce3所谓的“硬件防火墙”失望了。安装硬件防火墙驱动(NAM)后,无论是否激活防火墙,网络的稳定性都会受到影响。具体表现为刚连上网的一小段时间内,网络使用正常,但只要累积连接数上升(比如用BT或Emule),则连接稳定性急剧下降,导致网络浏览和下载速度都很不理想。想要保持稳定性的唯一途径就是频繁的重连网络……

至于nVidia所声称的低CPU占用率,我实在不敢苟同,至少光是一个nSvcAppFlt进程就与我的软件防火墙Look’n’Stop不相上下,而内存占用更是达到24M余(Look’n‘Stop才3M多)。在网上搜索了一下相关的信息,发现针对nForce3的硬件防火墙果然是骂声一片,看来uTorrent的声明也并非全无道理。

Sigh… 又被nVidia欺骗了,放弃这个华而不实的“硬件防火墙”,还是老老实实用回我的Look’n’Stop吧。X(

(6) Remix版本的网卡驱动由于不是WHQL认证的版本,所以无法直接在网络连接试图中禁用网卡(提示“一个或多个不支持即插即用的协议”)。不要紧,用设备管理器的禁用-启动功能则一切正常。

从百草园到三味书屋

我这里要说起的百草园并不是儿时的乐土,三味书屋也不是先生的书房。在深圳这钢筋水泥构筑的现代化森林中,原来也有这么一隅之地,名曰“百草园”。从百草园出来,你不用走上半里路,只需跨过一道围栏,就可以看到“三味书屋”了。其实,它不过是一间平凡的书店,似乎也并没有多售几本鲁迅先生的书。

说了这么多,只因我今天刚搬进了百草园,现在正坐在三味书屋的楼上,联入园区免费的Wi-Fi网络,写着我的blog。

不得不承认,搬家对大多数人来说,都是一件辛苦的事情。不过,好在我的全部家当除了一张电脑桌外,就只剩下几口箱子了。搬家的辛苦其实并不在路途的颠簸和行李的搬运,因为这些都只需一个电话,便会有专业人士熟练的为你打理好一切。真正的辛苦,是当搬家公司的师傅数完money,驾车而去,留下我一个人望着满屋纷乱的物品和积满灰尘的墙角时。

做完一次彻彻底底的清洁、收拾好大部分的物品后,已经是午夜时分了。皎洁的月光洒在窗外的树叶上,映衬出百草园的静谧。望着夜空下的中心花园,我开始想象接下来将要在这里度过的一段岁月。在这个由国际著名设计师主持设计的欧式风格公寓群、号称星级酒店式管理、国家级智能化和物业管理示范小区中,将是怎样的一番生活滋味呢?

百草园