All Stories

sqlite3编译脚本有问题

  这两天才发现,用msys运行configure生成的makefile是直接编译链接有问题的,最后链接的时候总是报找不到一个什么sqlite3Backup函数。今天在源代码文件中查找了一下,发现这个函数是在backup.c文件中定义了的,所以代码有问题的可能性不大。于是看了一下生成的makefile文件,赫然发现没有编译backup.c的动作,加上后,再make一把,果然通过了。  看来sqlite3的configure脚本没有跟着更新啊!

炒点小菜,喝个小酒,惬意人生

  去超市买了点儿肉和菜,回来哧哧喳喳弄了大半个小时,整出3个小菜来,跟同屋的那个江西老表一人倒了大半小饭碗的女儿红,打开电视,看着国内国际时势政治,摆下龙门阵,点评下天下时局,人生真是惬意啊!

有点想通了

  昨天又看了一下《Contributing To Eclipse》,思路有点清晰了,应该有一个任何地方都能访问到的地方,Eclipse中叫插件注册表,存放着所有插件的描述信息,这样无论是核心还是插件,都可以随时读取到与自己相关的插件的所有必要信息,实现相应的功能。  之前还疑惑,与界面相关的插件处理流程会自相矛盾,现在看来应该能解决了。首先需要确认一点,暴露被扩展点的,无论是核心还是插件,都可以从插件注册表中读取扩展的信息,比如菜单项名称,这样就可以添加一个新的菜单项,以及维护一个处理关系,Eclipse中有个某某proxy的机制,这形式不重要,关键是暴露被扩展点的那个部分应该在添加了新的菜单项后,能在菜单项被点击时,准确地知道哪个菜单项被点击了,并依赖插件注册表找到对应的处理流程,以我目前的情况而言,即对应的Lua脚本文件,Lua脚本模块名称,以及处理函数名称,然后将这些信息提交给插件运行模块来运行,插件运行模块则又要与插件装载模块合作,如果运行时发现没有对应的模块或函数,则要先装载对应的脚本文件到解释器中。

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

  真是捉弄人的命运啊!有句话说,命运负责洗牌,而我们才是玩牌的,牌太差,无论技术如何,都是于事无补的。  今天在公司里用错了_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折腾惨了,还穿着高跟鞋,最后是见到凳子就想坐了,哈哈!   回家了,明天的现在,我应该是在家里的床上了,哈哈,这世上没有过不去的坎!