All Stories

小丫头打电话来了

  在上网的时候,小丫头突然打电话来,出乎意料地。然后两个人聊了大半个小时,照小丫头的说法,都从公司里聊到家里了。还是照原来一样,小丫头在那里抱怨了一通,呵呵。五一要不要去成都呢,犹豫ing……  写程序总是遇到些奇怪的问题。这两天在研究直接用PSDK写一个能支持在2个TreeView中进行节点拖放的窗口,昨天还一直很奇怪的,只有一个 TreeView能作为拖放的宿,另一个则怎么也不行,但两个TreeView的代码明显是相同的,因为都是从同一个类中的方法啊!今天给窗口加了个拆分 条,可以让鼠标拖动TreeView之间的拆分条来调整两个TreeView的大小,结果稀里糊涂的居然发现两个TreeView都能作为拖放的宿了,真 是奇怪呀,明明我一点都没改动TreeView的代码啊!  从别人那里要来了一个通过COM接口跟GT3K交互的Demo,这个Demo是在Excel中用VBA写的,不知道如果在VC中用,还有多少困难,看来得学一下COM的知识了,比较麻烦呀!  另外一边的人打电话来说,要讨论一下单板软件的相关计划等,呵呵,要做嵌入式开发去了,这让我觉得有点兴奋,因为从来没有接触过这方面的东西,只是别人写的代码倒是看过不少,虽然也从来不看代码流程,只是为了PI值发现些很低级的语法错误。  SharePoint总算第一次被我调得可以显示一点东西出来了,不过还没有研究怎么使用,因为那台老爷机实在太慢了,我无法忍受在这样蜗牛的速度中 进行操作学习。SharePoint的资料是少了点,没办法的时候,只能跟别人交流交流了。而且,才发现目前只要装Windows SharePoint Service 3.0就够用了,不用装Server了,哈哈。  把输入法的界面改了一下,Comp窗口和Cand窗口合在一起了,就像现在流行的输入法一样,不再是传统界面啦,这有一个好处——可以方便地让它支持 Skin,或者不规格窗口。不过老问题还是存在:Firefox中还是出不来。而且一直想把设置窗口改成用PropertySheet样式,但总是要么不 出来,要么弄死机,郁闷,只好暂时就要原来的了。还有个问题,也是这两天才遇到的,在用UNICODE编译的时候,为什么stprintf总是得到乱码?

关于C++0x的比较新的消息

  这算不上最新消息,因为从Boost Develop的maillist上看都已经是前天发出来的消息了。上周C++标准委员会在英国Oxford召开了一次会议,主要是为了能在今年秋季时在Kona召开的会议中完成标准的草稿。完成草稿后,就会发布给ISO的成员国以及公众,以便收集各方的意见,这将持续1年时间用于处理各种意见。然后就可以发布正式的标准了,而ISO还会再经过1年时间对这个标准进行批评认可。  在csdn的blog上还看到过有人兴奋地谈到,这个C++0x说不定是C++07,这样看来,如果以ISO发布的时间点看,应该是C++09了,呵呵。  之后,照安排,C++标准委员会还会有几次会议: - July, 2007, Toronto, Canada. - October, 2007, Kona, Hawaii, US. - March, 2008, Redmond, Washington, US. - June/July, 2008, Sophia Antipolis (Nice area), France - October/November, 2008,...

分了些奇怪的任务给我

  今天开双周例会,结果发现人力不够用了,而我作为最近才加入组的成员,已经肩负重任地看了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一起吃饭了。吃完后,又去他家里坐了一会儿。