All Stories

重构ReviewTools

  今天决定开始对代码审查辅助工具动手,结果发现这个代码写得太复杂了,彻底晕死!本来看起来似乎是个很简单的小程序,功能也算比较简单,就是能添加一些信息,把这些信息保存到一个文件,到需要时能从文件中读出这些信息,另外一个功能是能把信息输出到Excel文件中,或者以一定规则输出到Lotus Notes中。  结果发现,为了跟Excel和Lotus Notes交互,必然使用到了COM接口,然而奇怪的是,原来那个作者把对Excel和Lotus Notes的操作简单地用VBS封装了一遍,结果是另一种脚本COM组件的形式出现,再在MFC程序中调用这些脚本组件,实在是不必要。  其次,因为本程序设计的是能在Source Insight中激活并添加信息,所以需要Source Insight的扩展来支持,也许是Source Insight的宏能力比较弱,原作者就设计成在C盘根目录下放置一个很小的cmdline.exe,让宏直接把所有信息当作命令行参数传入给这个小程序,通过它来调用主程序,于是为了在不同进程间传递数据,便把这个主程序设计成了一个进程外组件了。唉,又是COM,烦死人了。我也要把它改成不用COM的,用Event、File Mapping、Metux、Command Line Parameter应该能解决这个问题。  再次,界面上有个TreeView,TreeView的Data域不知道绑了多少数据上去,晕死!关键是不要绑MSXML的COM接口指针上去啊!  最后,我要在这个基础上重构的话,工作量比重新做一个大概少不了多少了!

好久没有shopping了

  去东门逛了一下午,买了件比较板的衬衣,一条黑色的休闲裤,薄薄的,适合夏天穿,为了搭配这身衣裤,还特地买了条皮带,这样800大洋就花出去了。然后是一双休闲类的皮鞋,又是400多大洋。好久没有这样添置自己的行头了,也许真应该好好地改变一下自己的外观形象,明天穿着人模人样地去公司晃悠一下。  不过逛得好累哦!

失落啊

  中午疯丫头跟我说,明天她就去那边了。不免有点失落,以前测试组的同事一个一个地全都调走了。虽然早就知道她一直忙着调动的事情,忙着去那边面试,忙着跟这边的领导周旋,直到前不久,大概也是因为正好赶上了产品线整合以及部门整合,领导也变动,终于同意放她去marketing那边。今天还偶然看到她居然,有纹身,而且不是在很明显的部位,呵呵,还骗我说是贴纸贴上去的,太假啦!

昨天搞到2点

  昨天突然下决心要搞一下月历显示部分。惰性总是我的最大困扰之一。慢慢调试,发现其实要实现这个功能代码并不需要多少,大概不到100行吧,之前实在是高估了困难以至于一直懒得,也是怕的去动手做了。不过虽然代码量不大,到最后可以基本稳定地用也是花了不少时间去慢慢修改的。  今天去驾校上了理论课,由于晚上睡得晚,早上起得早,加上中午还没午觉睡,于是上课时间都被我用来睡觉了,都不知道讲了些什么。  回到家大概5点左右吧,还算早的,于是又写了一会儿代码,把农历也显示出来了,哈哈,虽然原来打算能让农历显示在右边或下边,可以灵活配置,今天实现的时候发现如果要显示在右边,似乎比较麻烦,还让它只能显示在下边吧,嘻嘻。  这样就可以使用那些大块留白的皮肤了,真是happy呀!  再把配置模块做一下,就基本可以拿出去让人用一下了,只是GDI+输出文字时,有时候会输出不是预期的效果,原因至今不明,还待以后慢慢定位。

其实log4cxx也不错

  简单看了看log4cxx的例子,上网找一下相差的资料,它自带的例子实在是太简单了,虽然知道它源自于log4j的移植,但到底它移植度有多少就不得而知了。从网上找到的资料看来,log4cxx对log4j的配置文件支持就很完备,直接在外面写一个配置文件,程序中只要添加一行装入配置文件的代码,然后所有的修改只要针对配置文件进行就可以了,不需要修改程序源代码,真是方便至极呀。  尝试了一下给WallpaperHelper加入日志功能,对于这样一个完全不需要追求运行性能的桌面应用程序来讲,加入日志功能似乎只有好处没有坏处,至少可以在程序出现问题的时候根据日志记录定位问题发现的现场状况。  偶然上apache的网站看了看,自从我从svn里check out出源代码来编译了一把log4cxx以后,某一天居然正式发布了0.10版本,气愤,于是只好再update一把,重新把各个VC版本的都编译一把,这个确实让我觉得有点烦,这类工作最好完全自动化,自动从svn里更新代码,自动调用ANT来编译,而且要能自动应用多种版本的VC来编译,然后分类打包好,唉!CruiseControl本来是做这种事情的好东西,不过我却没有完成利用起来!  在boost的news group上看到,1.36版本居然不打算正式支持VC7.1了,晕倒,看来迁移到VC2008还是正确的哈!

MSXML格式化输出

  一直以来只用MSXML进行XML操作,在Windows平台上,确实是一个非常非常好的XML操作库。只是一直以来有点不爽的是,用它的save方法保存的东东,用记事本之类的纯文本编辑器打开看,是没有缩进格式的,就是直直的一行数据一直写完为止。想过一些办法,但最终还是放弃了,libxml2里有个叫xmllint的小程序,可以格式化一个xml文件,不过毕竟是第3方工具了,而且它依赖的是libxml,不是msxml。  下决心在google上搜了一番,英文的不知道搜什么关键字,中文的倒是找着几篇,最后觉得CSDN上的一种方法比较适合我目前的情况,因为我就是用MSXML DOM的。例子是用JavaScript写的,转换成VC还费我一点功夫,不过最后总算大体满足要求了,但是还是有个老问题,用它保存的东东,最后字符编码改成UTF-16了,而且强行插入不了Processing Instruction,晕。

这漱口水还真辣

  同学去巴基斯坦前留给我一瓶李施德林漱口水,放了好些天一直没开封,这种东西还没用过,感觉有点新鲜。今天好奇心起,拆开来倒了一点,说明上说20ml即可,我没有这样量化的概念,就倒在它的瓶盖上,然后含嘴里,照说明上说的30s后吐出,可我好像不到30s就辣得不行了,忙不迭跑到卫生间吐出来,连忙倒了几杯自来水漱了几次才缓过来。晕倒,学不像啊!

Side by Side的MFC9.0 DLL和GDI+异形窗体

  自从用上了VC2008,用它来编译日历程序,就开始被Windows先进的Side by Side技术困扰着。其实说被它困扰有点过分了,毕竟是自己水平太臭,眼界太窄,见识太少。在开发机上怎么整都是好好的可以运行的,换个机器就不行了。盲人摸象般的整了几天,还是没能解决,代码是在家里写的编译的,拿着可执行文件到公司的机器就是不能正常运行。昨天晚上又在网上搜索了很久很久,终于在MSDN上看到一篇文章,虽然是以VC2005来讲的,但对VC2008是一样的原理,按照上面说的分好目标目录,做好安装包,今天拿到公司一试,果然没有原先那个什么应用程序配置错误的消息框了,终于解决这个让我郁闷了几天的问题。  不过今天偶然发现,我用GDI+实现异形窗体,在Win2003下不能显示,在公司网上找了个别人写的也是用GDI+画窗体的,也是不能显示。但装了个雪狐日历精灵的早期版本看了看,它也是用GDI+画的,却能好好地显示在上面,应该是那段代码有问题,唉,看来得用虚拟机装上2000/XP/2003,做好全面的测试才行了,不在实际的环境中运行还真不知道会出什么问题呢!

让SourceInsight消失吧

  今天组里几个人突然谈论起组织结构调整,然后我们现在做的东西命运怎么样,我们将来的命运怎么样,最后一个结论是要让我们做的东西成为精品,这样我们才有可能不被人随便摆布,不被拆散。  然后就说到重构当前这个项目的代码。说来说去,我还是去做图形编辑这块,同时兼顾文本编辑器的重构。这是我最希望的情形,对于代码编辑器,我一直有不少想法需要付诸实践,现在说起来要让这个工具能大规模被推广应用,就需要各方面都做成精品(也许这也只是我们的一厢情愿而已)。我能做的大概就是在代码编辑方面努力做好,简单说来就是能让开发人员也能用得顺手,让Source Insight从这里消失吧。目前的状况是,Source Insight缺少代码折叠、Tab标签浏览、中文支持不佳、外部接口不方便这几个大缺点,对于基本的语法着色、自动完成、语法参考还是不错的,速度也挺快的。如果把Source Insight的这些缺点补上,再加上有它的那些好用的特性,还愁不让它消失么!