All Stories

过去这两年

过去这两年

  今天在网上闲逛看别人的blog,在csdn上看到一个blog,博主写了篇《过去这两年》的文字,博主82年人,应该是和我同届的,文中他画了张图,总结了自己的工作学习的情况。  再回头看看我的情况。我2005年7月1日直接从重庆学校飞到这边,算是7月4日入职的,到现在也十足两年了。两年中,做SDH设备的软件测试不计节假日共约21个月(2005年7月中~2007年3月底)。当时得知自己去做测试,心中也不免诸多怨忿和失望,完全全新的领域,加上并不感兴趣,而且劳动态度不端正,以及自身先天(?)的素质影响下,成绩如何可想而知。不过到后来便有点麻木了,觉得干什么都一样,而且男人选择自己感兴趣的行业作为职业似乎是种很不成熟的表现,呵呵。  两年来,几乎什么都没学到,什么荣誉都没得到,什么好处都没捞到。真是失败啊,对比那位博主,只能感叹人与人之间的差异很多时候是没法填补的。  只能说,在以后的日子里,在自己力所能及的范围内,尽量努力,不为什么,只为能赚更多的钱,这是最直接最首要的目的。

输入法变大好多

输入法变大好多

  昨天今天翻看五笔爱好者论坛几年前讨论大熊猫输入法的老帖子,发现一些有趣的想法,比如词库用数据库来实现。  今天就动手把SQLite3.4版的代码下下来,并加入输入法的工程一起编译,看起来好像编译是没问题,不知道实际用的时候怎么样。  另外想到的是,要让输入法能直接使用sogou拼音输入法的皮肤,也就是ssf格式的文件,其实也是zip文件,只是后缀名改了,于是要加入unzip的代码,而既然加了zip格式的解压功能,索性把rar格式的解压也加进去算了。这两块的代码因为直接就测试使用了,还真出现了一些问题。首先是unrar的代码都是.hpp和.cpp后缀的,而整个输入法的工程原来一直只用C,所以要用extern "C"来修饰一下。然后发现unrar的文件包含关系还真是奇怪,它会直接include那些cpp文件,但如果直接把那些cpp文件加到工程里来编译是会出错的,这从它的makefile中也可以看出来,并不直接编译其中几个cpp文件,但也不能把它们直接删掉,真是奇怪啊!再后来的问题是,因为我想反正输入法最后生成的就是一个动态链接库嘛,让它多导出几个函数可以让辅助工具使用,所以加入RARDLL预定义宏,指示把rar代码编译成DLL,再把几个函数名写到def中去,这样就可以导出这些函数了。但还会有问题,再加个预定义宏SILENT,就能正常运行通过了。之后出问题的是unzip的代码,首先unzip的代码并不能自动覆盖已有的同名文件,所以只好在调用前先把目标文件夹内的文件都删掉。后来看起来好像运行得还算正常,但突然发现,release模式下,不能直接激活输入法,在激活时会调用unzip来解压文件,这时就直接崩溃了。但如果是先用rar或7z格式的皮肤,就不会崩溃,再切换到zip格式的文件,用unzip也不会崩溃,比较怪异。最怪异的是,这只有在release模式下直接运行会出错,如果是通过VC下的调试器,或OllyDbg这样的调试器里运行,就算是release也不会出错。这就导致问题很难定位了,本来就没有多少调试方面的措施在输入法里,而这又是第三方库的代码。想到debug模式的是没这问题的,于是又想到编译链接选项里动脑筋,经过少量的试验,最后发现,只要加上了缓冲区检查编译选项,release模式的也不会崩溃了。唉,VC的这些选项还真是大有学问啊!  今天一下加入了3个开源库,于是趁机把版权声明也整理了一下,呵呵,一个小小的输入法还用到了不少东西呢,现在就有7z、unzip、unrar、lua,还有从网上找来的一小段一小段的代码,以后辅助工具里估计还会加入Boost的东西。最后用debug模式生成的ime文件有1.9MB,用release模式生成的有1.04MB,用upx的--best选项压缩一下,最小也有近500KB,一个五笔输入法做到这种程度不容易啊,哈哈。而且还不是最终成品,成品应该还会再大点点。

忙得昏天黑地

忙得昏天黑地

  自从老大一声令下要仔细认真测试,短短两三天时间内,挂到我下面的问题就有近70个,这两天奋力迎战,到今天下班前,还剩下30多个未解决的,其实是暂时不容易解决的。  昨天下午,疯丫头还发邮件问我去不去拿MP3,结果这邮件我都是到下班的时候才看到。大概今天她自己都觉得我可怜了,自己送过来了,哈哈。

两天没写blog了

两天没写blog了

  两天没写blog了,这两天主要是想加个在线造词功能进去,可是没成功,让人比较泄气。所以说,五笔加加真的是设计得很好的一款软件,各方面都比较完善,各种细节点闪现着作者的缕缕灵气。  公司里的事就太多了,这两天打过来一堆的问题,估计总共有50多个吧,解决了一些,到现在还剩下近40个,而且很多很多是暂时解决不了了,架构方面就有问题。有些则是技术方面的问题暂时得不到解决,唉!  得快点把输入法搞定,其实也就剩下两个问题了,造词和状态栏窗口刷新。之后就赶紧做辅助工具,Boost又丢下好久了,要趁写其它程序里好好跟进学习啊!

又懒下来了

又懒下来了

  在回家的路上又被堵了很久,让我再一次觉得很气愤,深圳的开车的人是全国素质最差的,明明已经堵车了,明明走不 通了,明明再挤进去会变得更糟,可是他们还是会乱闯乱挤,除了道德上的因素,我都要怀疑他们智力上是否也有问题。  人又懒下来了,回到家,只是看了看如何加入造词功能,其实这些代码原来的人已经都写好了的,我拿到后觉得没什么用,删掉的,注释掉的,确实精简掉了很多至少我自己用不上的功能。现在只是到了放开的时候,在输入上屏后,要记录下来历史记录。以后按到快捷键,就进入半自动造词模式,就可以从历史记录中取出内容来。顺便还把添加历史记录的部分代码优化了一下,应该能增加些速度吧。  公司里还是像往常一样,搜简历,然后看代码,增加新代码,修改老代码。暂时接手维护了另外两个模块,还好功能都是基本上已经完成了,只要再加一点点就行了。突然老大说,上面的头儿说要做成C/S模式的,主要是为了信息安全,真晕!本来还暗暗高兴了一下,可以趁此机会好好学习一下网络编程了,结果他们好像决定用DCOM、WebService这样的东东来实现,唉,不感冒啊!~

修正了3处bug

修正了3处bug

  昨天把输入法中的两个存在已久,但一直没引起重视的bug修正了。其中一个是,分号转英文或大写字母转英文的时候,不能混合输入数字;另一个是,大键盘输入数字后回车,紧接着输入句号或斜线都会变成英文标点。这两个标点都是在我引入分号转英文、大写字母转英文和大键盘输入数字转义时引入的,但因为其实这些场景自己用得很少,而且影响也不是非常大,所以一直没有很重视,昨天忍不下去了,就改了。  今天把分号选择第二个候选字的功能也修复好了,因为那段时间引入分号转英文,就直接把这选择第二候选的功能屏蔽掉了。这回看到要修复好像很容易,况且很多人好像都习惯使用这个来进行第二三候选,不像我只用左右shift,呵呵。  还要加入五笔加加那样的手动造词功能,嗯!其它bug也还很多,比如状态栏有时候出不来,状态栏的窗口跟随,保存词库时死循环。

暂时避规崩溃问题

暂时避规崩溃问题

  今天发现有一个办法可以暂时让英文长度超长时宿主程序崩溃的问题,但也很无奈,不知道是什么原因。办法是在release的编译模式下让链接选项中选上生成调试信息的选项,这样最终生成的文件体积就会大一点,但确实不会有崩溃的现象了。真是奇怪啊!今天其它什么几乎都没做,想着开始给它进行优化了,主要是从速度方面。  在公司里的活儿也郁闷呢,VSS2005如果没有.NET的环境的话,连那两个DLL组件都注册不了啊!

把设置对话框改好了

把设置对话框改好了

  终于又了了一块心病啊,把设置对话框改好了,终于可以显示成属性对话框了,看起来比原来的专业多了,原来的那个真的太难看了,所有的选项都放在一个对话框里,最开始的更夸张,所有的选项都是复选按钮,几十个复选按钮堆在一个对话框里,这个不爽啊!  之前也是试图改过几次的,但是能半途放弃了,因为总是遇到死机。也真是奇怪,一个输入法能引起死机,应该说一个属性对话框能引起死机,也太不可靠了吧。本来还以为是我的电脑的问题,今天去公司弄了一下,公司的电脑也死掉了。说明确实是我的代码的问题,仔细看了看另外一个可以正常工作的代码,发现有些消息我没有处理。加上后,果然在某些时候能弹出对话框来了,再然后就定位到肯定是我在填入实例句柄和父窗口句柄的时候引入的问题。回到家又经过少量实验,发现实例句柄用DLL创建时获得的那个就行了,父窗口句柄可以是NULL,也可以是宿主应用程序中接受输入焦点的那个窗口,不要是输入法自己的那些窗口就行了。  真是心情舒畅啊!不过好像状态栏换肤有问题,另外一个大心病是英文长度超过10个引起的崩溃问题。  小乖输入法渐渐地向可以发布的状态靠拢了!

输入法 W.I.P

输入法 W.I.P

  把输入法改成可以支持多用户配置了,把一部分的配置信息移到配置文件中来了,但有点没弄好的是,安装的时候需要问当前默认的输入模式是拼音还是五笔,本来是写入到注册表中去的,所以比较简单,不知道写ini文件用InnoSetup是不是也支持得比较好呢!  状态栏也可以支持换肤了,呵呵,有一点不同的是,状态栏是有默认自带的皮肤的,但我自己实在做不出什么好看的来啊。  用Intel编译器编译出来的Release版本,居然超过10个字符不会崩溃,晕。总是不放心啊,感觉像是哪里我的代码是写得有问题的。