All Stories

我们都在被人追逐的过程中追逐着其他的人

  真是捉弄人的命运啊!有句话说,命运负责洗牌,而我们才是玩牌的,牌太差,无论技术如何,都是于事无补的。  今天在公司里用错了_tcsncpy和_tcsncat,因此引发的bug找了半天才明白原因,汗颜。  另外,Launch里好严重的内存泄漏,确实,都是些很低级的失误,review很重要。

克制求知欲很重要

  感兴趣的事情太多,精力太有限,克制自己的求知欲真的很重要!

孙同学要去武汉了

  唉,一起玩的人又少了一个……

向SQLServer2005存xml

  今天终于解决了向SQLServer2005存xml时使用的字符集的问题了。  年后第一天上班,看到年前一个邮件,说是有个文件导不进去。拆下来跟踪了一下,发现是中间生成的xml文件不完整,通过简单的试验,直觉告诉我是字符集的问题,因为我将这xml文档的字符编码设成gb2312了,而鬼知道别人会写些什么特殊字符进来。把文本粘贴到UltraEdit中看了一下,果然有一个非gb2312范围的字节。我想,这种情况都出现了,无论如何都不能再继续用gb2312了,只能往utf-8之类的方向去考虑了。实验证明,以utf-8编码的xml文档是完整的,可是又回到一年前的问题,utf-8编码的xml文档写不到SQLServer 2005中xml类型的字段中,只能写gb2312的。  实在没办法,这方面没有人可以提供相关的经验指导,只好去看SQLServer2005的online help,好在是中文的,随便翻了一会儿。中间联想到,会不会是MSXML保存时并没有真正转换编码,实际上当然不是。又联想到,该不会是因为没有BOM吧,结果我没有去试。后来偶然看到其中一段说明,可以用utf-16,而且不在乎有没有BOM,如临大赦啊!  用ADO写回去时,先读出整个文件,因为开头的BOM的原因,需要再用SysAllocStringByteLen生成一个BSTR,不能直接用_bstr_t,再填回数据库,就可以了!

Launch项目小结

  这次回老家过春节,年前几天没事,就着手做那么个小东西。这个小东西的原始需求是从老大那里听来的,老大则是从其他同事那里收集来的,主要的需求是,能自动从指定的路径下找出所有可执行文件,并添加到菜单项上,点击菜单项便能运行这个可执行文件。  这个需求的意义不考虑,直接进到主题,如何实现。刚开始我以为从网上应该很容易找到一个免费或者开源的项目来满足需求,在网上逛了几圈后,只注意到两个有点关系的项目,分别是Launchy和TextBox。我想了想,决定整合这两个项目的特点来做,至于最原始的那个菜单项的需求,就变成一个次要特性了。  主要的设计和开发大概花掉我8天时间,而且每天投入时间应该超过8小时,所以还是比较可观的,尽管功能看起来确实简单,而且迄今还有些未实现的。  程序最终使用VS2008开发,界面用WTL写,VS2008没有WTL相关的向导,装个VisualFC插件可以简化一部分这种工作。其他用到了嵌入式数据库sqlite3,用于保存搜索到的文件信息;用到了msxml,基本是必备的配置文件解析和保存方式;用到了Lua,实现了一定程度上的外部脚本扩展;还有boost、STLPort等等。  总的说来,这个项目的最大几点收获是:一、熟悉了WTL的使用;二、熟悉了Sqlite3的嵌入;三、对用脚本语言实现C++程序的扩展,有了一点心得。还有一些与技术无关的收获:思维导图确实是一种辅助思考过程的好工具;在wiki中随时安排计划,记录进度,撰写文档是一种好的实践。

要回家了

  可是怎么我一点都不激动,不兴奋呢,反而有种失落的感觉!   上午在公司开了两个小时总结会,总的说来,对自己在这一个季度的表现还是比较满意的,虽然中间过程有些不爽,但总体上结果还是勉强能够自我安慰的。   下午在公司,又开了两个小时的会,这倒没什么内容了,我本来这一年来就没有参与这些项目活动,冷然一个旁观者的身份。   下了班,跟F还有两位cm0大大一起去华强北吃海鲜,虽然那家叫明香的馆子屡次路过,也听人提起过很多次,但来深圳3年半了,还没去过一次。吃得很安逸,也正是这一刻安逸的短暂,才让人觉得眷恋。   吃完晚餐,4个人一起去逛街,真是不得不感叹作为一个男人,F居然那么喜欢逛街,我本来一直以为自己逛街的能力也够强的了,被小妞她们培养了近一年的,结果我发现差距了,我完全是被动型的那种耐力好,而F是主动型的精力充沛,兴趣盎然!倒是把两位cm0折腾惨了,还穿着高跟鞋,最后是见到凳子就想坐了,哈哈!   回家了,明天的现在,我应该是在家里的床上了,哈哈,这世上没有过不去的坎!

Chrome不是只快一点点

  今天在公司网上看到有人在发Chrome的绿色可执行包,于是又好奇心起,下载下来玩了一下。以前也装来玩过,不过当时的版本还没有足够的稳定,时不时崩溃或挂起,于是摆弄了三两下就不玩了。这次下载下来的似乎则要稳定得多,毕竟是经过好久的beta测试了。   这次给我最大的震憾是chrome的速度真的很快,比IE和Firefox不是快一点两点,而是快很多!也许在外网环境还没有这种体会,因为等待的时间全耗在网络延时上了,在局域网环境下,网络延时极小,浏览器的渲染速度差异就很明显了。   本来在公司里,我也只是用3.0版的Firefox,因为用它来浏览redmine比用IE快多了,其他的应用场合主要是写wiki,用的mediawiki程序,以及看CruiseControl的报告,还有一些静态页面,比如用doxygen生成的html文档。换用chrome后,只能用震惊来形容,除开网络延时不说,真的是一点链接即出来整张页面!   不过总的说来,以chrome目前的状态,我也只能在公司里用用,写写wiki,看看报告,换到外网复杂的网络环境,chrome还不能胜任。首先,firefox有Adblock plus扩展,对广告的拦截效果非常好,用过它的人已经离不开它,chrome就没有类似的东东。其次,firefox下的鼠标手势,增强标签浏览,内嵌IE等,都是日常需要的功能,chrome也不行。再还有,似乎chrome的稳定性还是有待提高,偶尔还是会出现阻死在那儿的现象。   要是哪天firefox能弄得这么快就好咯!

用xmind画思维导图

  最近几次在网上看到有人提到xmind这个东东,今天偶然看到有安装包,也不用上网下载了,就装来试了试,是一个基于Eclipse RCP开发的,简单看了下,快捷键的使用习惯上跟MindManager是一样的,其他的常用功能也基本都有,而且还有官方的中文版本,又是免费的,实在是最佳的思维导图绘制工具。  之前试过FreeMind、MindMapper和MindManager,最终觉得MindManager最好用,但这三个只有FreeMind是免费的,用盗版的MindManager心里总有点疙瘩。现在好了,换xmind了,哈哈!

ACE还可以try...catch

  今天稀里糊涂地试了一下,把线程里的run_reactor_loop给try了一下,居然有用,欣喜若狂。现在想想真是糊涂啊,这也太扯了吧!  不过话说回来,那块的代码在上次写完后,一直心有余悸,不敢再去动它,也不愿意再看它,有点反胃的感觉。今天下决定看了看,还真发现几处bug,有没关闭句柄的,有没有添加消息映射的而处理代码却是写好了的。今天这么一整,至少崩溃问题又要少一些吧!  虽然现在用ACE已经勉强能够运行了,可我还是有点想再换回用boost::asio去。当年用boost::asio也不知道是哪里出错了,死活不能好好地连接上再互相发点数据,现在有了这点儿用ACE的基础,而且比起当初boost::asio也是正式release的版本很久了,也许一方面是我用得不对,也有可能另一方面是因为我用的从svn里直接check out出来的代码确实有点儿问题呢!