All Stories

分了些奇怪的任务给我

  今天开双周例会,结果发现人力不够用了,而我作为最近才加入组的成员,已经肩负重任地看了3个星期的资料了,而且光看资料不说,连个屁都没放出来。于是老大发现这么个人力虽说浪费了也不是很可惜,可惜的是当前那些任务是进度越来越紧张,交付日期可谓近在眼前,让交付件能顺利产生可谓迫在眉睫啊!然后,突然给了我两项任务,我瞬间晕倒。这样下来我真要变成一个复合形人才了,又能做嵌入式软件开发,又能做Windows桌面应用软件开发,还会用SharePoint做Web开发!  照阿菲那颇具讽刺意味的话说,这下不无聊了撒,不会浪费时间了撒。我于是奋发图强,决定天天晚上加班,因为那些任务我好像似乎一点都不知从何下手。经过大致的跟人讨论、自己看文档,又突然发现,晚上加班也是徒劳的,或者说,其实我真的很自大很高估自己,我压根就是觉得不用晚上加班,那点事情也许也是能搞定的,并且如果真的晚上加班,实际上也没有多少意义。唉!

鄢哥又过来培训了

  鄢哥这是第三次来我们公司培训了,每年一次啊!记得上次是差不多一年前来的吧,那时候小思宇刚刚搬出去了,鄢哥过来了,公鸡也跟着过来耍一下,我当时还有点懒得走,结果被小妞小玉玉鄙视了。于是约好在万科城的肥牛府吃一顿,一张长条桌,三男三女坐在那里。今年就只有鄢哥一个人了,小思宇她们也都各自有着各自的事情。真是去年今日此门中,人面桃花相映红啊!  鄢哥其实来了已经一星期了,我早就通知了阿菲,喊她抽空出来吃饭。昨天早上照例8点半醒来,给阿菲发了个短信,这短信还被她后来抱怨了一通,说我太早了。约好傍晚五点半去华强北茂业见面,然后吃饭。我早已睡不下去了,就起来玩电脑,但又没什么特别的兴致。打开Foxmail,翻看起以前从学校BBS上收下来的邮件,里面记录了我在大学四年里的BBS经历。真是令人怀念啊,想当年也算是小有名气的吧。想想当时在学校,是多么的呼风唤雨、叱咤风云啊,看着别人都是菜鸟,可是从学校出来两年,自己成为菜鸟,白白浪费了两年时间不说,之后的路怎么走,可谓是越来越迷茫了!邮件中还保存了很大一部分的聊天记录,依稀可以看到我的感情经历,从afei到ilikeyou,再到最后的lookfor,前两次的小心翼翼,胆怯不前到最后一次的无赖泼皮,死缠烂打。现在看来,我都隐约觉得奇怪我当时居然能说出这么肉麻的话来。也算是我的青春无悔的见证了,哈哈。对于那个家伙,或许我的内心深处真的是怀有感激之情吧,因为她,才使得我后来变得不像以前那样自卑,所以后来虽然几次三番觉得很受伤,但我还是愿意真心诚意地好好待她,而无论结果如何。如果我不说,或许她是永远都不会明白为什么了!  看邮件看得百感交集,下午看到男妹妹在QQ上,于是顺便叫了一下她。虽然大家都在深圳两年了,但居然从毕业后都一直没见过她人!几个人从不同的起点,到相同的目的地,果然五点半的时候,找到了阿菲和鄢哥,看样子男妹妹得过一会才能到了,就下去麦当劳一人点了杯喝的聊天。一直等到男妹妹过来,居然华强北的路都认不到,呼呼。四个人去吃了顿民间瓦罐煨汤,然后送男妹妹上车。鄢哥跑来我屋里睡,跟同住的同学一起聊天到快3点。睡觉,一直到12点,出去吃了顿中饭,鄢哥就回旅馆去了。

在VC中调试DLL

  输入法最后的文件后缀虽说一般是ime,但它是个地地道道的dll文件。有过几年地狱般的调试经历,好不容易从MessageBox升级到OutputDebugString,最后终于进化到用IDE里集成的debugger。不过一直以来都是只对完整的可执行文件进行调试跟踪,对dll还没有相关的经验,尽管也写过几个,但那都太简单了,基本不用跟踪就可以正常工作啦。现在的输入法就复杂了,开始没想通怎样可以进行源码级调试,还是退回到OutputDebugString,编译连接一把,在记事本中试一下。后来想想,它应该可以attach相关进程进行调试吧,白天在公司也看到过一个文档,讲的是怎么在VC的IDE里进行相应的设置。其实非常简单,在项目属性里,把调试一页中的命令设为notepad.exe就行了。随便在源代码中打个断点,启动调试,VC会弹出消息框说notepad.exe没有调试信息,不用管,继续,notepad.exe运行后,切换输入法到这个被调试的输入法,如果程序走到断点这里了,就会被断下来了,变量窗口、输出窗口都跟调试exe文件时一模一样,哈哈。有一点需要追加说明一下,这个dll文件一定要放到能被load的地方,像普通的dll的话,放在和exe文件相同的目录就行,输入法就需要先安装一遍,这时ime文件是需要放在系统目录下的,所以方便起见可以直接在项目属性里把最终的输出文件指定到系统目录下就行了。  另外再说一点和UNICODE相关的事。为了和国际接轨,程序使用UNICODE似乎是最好的方法,我就先在输入法安装程序中做试验,一个百来行的小程序,用UNICODE选项进行编译,结果还真发现了问题,有个字符串在写入注册表时总是写不全,这让我很奇怪。同样的代码改用多字符集编译连接就没有问题。看看代码我已经都尽量用各种字符操作的宏了,最后发现原因,_tcslen在UNICODE的情况下,2个字节只算为1,在写入注册表REG_SZ类型的键值时,需要指定字符串长度,所以其实只指定为实际占用空间的一半了,这种情况就需要特别处理。虽然发现了这个问题,在这么个小程序里还影响不是很大,而且很容易暴露问题,但要是输入法程序是用UNICODE编译的不知道还会有什么问题呢!怪不得极U被炒得这么火!

LLYF Articles W.I.P #2

  前些天都说要做个LLYF Articles的,要能把指定目录下的网页文件都打包成chm文件。在公司里反正也无所事事,就用MinGW写了个命令行程序,基本可以实现这个功能了,只是有些方面不完善,当然如果用它来扫描Boost的目录,也是可以生成可用性比较高的HtmlHelp Workshop的工程文件了。但是,不知道为什么,用MinGW想写个GUI的程序,就总是有奇怪的问题,连对话框都弹不出来,几乎一样的代码用VC2005编译一把,就可以好好地弹出对话框来,晕倒!不过也随它去了,反正核心功能部分都已经完成了,哈哈。  今天下午快下班的时候,原来项目部的老大跑过来问我怎么没把计划发给他。我压根没想过这个东西要发给他,于是尽量把责任推到现在的老大的头上去了,其实我确实也写不出什么计划来,硬要我用SharePoint来做,以前没接触过,更不好做估计了,而且也一直没有好用的机器啊!今天把老大旁边那个PIII1G、20GB、256MB的老爷机搬过来,里面还装了个2.4内核的RedHat,呼呼。两个老大在那里扯皮,我在旁边只有偷偷地笑,现在的这个老大简直有点无赖啊!  下一站小乖,呵呵!学一下用WTL做界面吧。

中文输入法

  一直以来,基本上是用着加加系列过来的。以前的拼音加加,以及现在的五笔加加。现在拼音输入法市场可谓战火四起啊,原来的拼音加加已经失去了王者之风,蛋糕被微软、搜狗、google、紫光几个分食了。五笔输入都全是些个人的作品,也许真是因为使用五笔的人比用拼音的少太多吧,大厂商怎么都不原意做个好用的五笔呢。不过现在的极点、加加、小鸭都是很好用,又稳定了。  相对来讲,大概五笔做起来比拼音要简单一点,也可能是因为没有什么创意或技术上的突破吧。五笔是只要能打出字,稳定就行了,命中率什么的基本还不用考虑。而拼音就很大一部分精力可以放在命中率上,微软拼音在这方面就做得很不错,google也是朝这个方面发展,但两家东西都有个很明显的缺陷——响应速度慢。  要做好一个输入法也不容易呢,Windows定的框架就太复杂了,而且Windows平台上各种各样的软件,要全部兼容谈何容易啊!

Boost::any实现分析

  在看《Conversations》的时候,看到有一章,专门讲到了Boost::any,不禁又勾起我对Boost的敬佩之情。  打开any.hpp,看到any类的实现非常简单,2个构造函数,1个拷贝构造函数,2个赋值运算符重载,1 个指针类型的成员变量,以及几个辅助函数。可正是这样一个简单的类,实现了极为巧妙极其方便的功能。看看C++对COM中的Variant的封装,把各种 想得到的数据类型都嵌入到union中,同时需要一个附加字段来指定当前实际的数据类型,代码看起来不但臃肿冗余,而且也不好用。  来看看any的实现代码,首先它是被放在boost名字空间的,其次,any当然不是一个模板类,不然在对不同的数据类型实例化后,不能方便地以统一的类型表示了: class any { public: // structors any() : content(0) { } templatetypename ValueType> any(const ValueType & value) : content(new holderValueType>(value)) { } any(const any & other) :...

今天去买衣服了

  呆在家里实在有点不甘心,总是想出去,不留在屋里就好。于是跑到华强北去买衣服,夏天快来了,需要准备一下了,从上衣到裤子,还了鞋子,都要买。2点到的华强北,因为没吃早饭和中饭,所以就先去麦当劳吃了4个鸡翅和1包薯条,喝了杯可乐。然后逛到茂业,运动品牌的T恤实在是贵啊,只好去买JSW的,51块钱还能买2件。再去买鞋子,Puma有几个款式的我倒是喜欢,但没有大码的,没办法,最后只好去买了双Nike的比较休闲的。  买鞋子的时候,xcc和他女朋友也来了,买完鞋子就三个人一起去电脑市场。又去买硬盘了,呵呵,比阿菲买的时候又便宜了一些。然后又去买U盘,一直逛到5点多。我和xcc去梅林吃饭,他女朋友则回去了。说起来,从我生日过后,都没跟xcc一起吃饭了。吃完后,又去他家里坐了一会儿。

源代码高亮的Html化工具

  想起要写些关于Boost源代码的东西,要把代码贴到blog上来,不免想要弄稍微好看点,虽然有个Boost中自带的演示Boost::regex的cpp2html工具,不过觉得太单调了点。上Google搜索了一下,还是能搜索不少来,其中一个放在GNU上的source-highlight引起了我的注意,这是一个由Lorenzo Bettini编写的命令行程序,能支持好多种语言的源代码输入,同时又支持包括Html、XML、LaTeX、DocBook等格式的输出。看到最新版本已经是2.6了,不过作者已经不屑于发布Windows下的可执行文件了,只好去sf.net的GnuWin32工程里找了一个2.1.2版本用用。这个小程序做得挺灵活的,作为输入的源文件规则和作为输出的目标格式都是通过外部的配置文件来说明的,这样如果要添加支持新的语言,只要添加新的配置文件就可以了,不需要修改重新编译程序。这是个很棒的小程序!  小丫头现在都知道怎么骗我了哦,真让我感动得想哭,突然觉得这种感觉就像《Hunter X Hunter》里奇犽的哥哥说他妈妈哭了,因为奇犽现在都会砍她了,她好感动的。

asio会合入Boost吗

  今天在各处blog闲逛,发现有谈到asio的,这个在很早前就听说过,Boost想要合入一个网络应用开发库,于是提到了asio。以前这方面只听说过ACE,但想想也知道不可能把ACE合入Boost,一是,ACE太大了,源代码压缩的体积超过现在所有Boost库的合集,再则ACE的实现方式跟Boost的风格截然不同。  看到asio已经到了可以实用的阶段,我也索性再多看几眼。asio和其它的Boost库一样,只有头文件,而且唯一的依赖就是C++标准库和现有的Boost库。看了看从CVS取出的最新Boost代码,里面已经有asio了,但文档只有用BoostBook格式的,从它的官方网站上看到还是有html格式的,还是比较完整的,像是用doxygen生成的,照我说来,Boost里的众多库帮助文档的风格太不一致了,连表现方式都不一致,有的是html的,有的是BoostBook的,有的是man的,不过虽说不一致,它们的内容还算是详细的,但像asio做的,好像没有其它的了。  以后要是Boost有个日志库了,那就可以彻底不用ACE了,呵呵。不过还不知道asio什么会被合入进来呢,最近在maillist上也好像没有特别提到这个库啊。