missdeer之程序的野望

哪怕出没于深沉的夜里,也要在自己的黑眸上映上无数朵美丽的桃花,如此方能不自伤,不自悲……

Entries for 六月, 2010

基本完成context视图

  把ctags封装了一把,其实是CodeLite中的codelite_indexer,因为它已经把ctags提取出来了,不过是5.6版本,又对C++部分做了些修改,不过我不清楚这些修改有什么作用。有点奇怪的是,如果在Lua中用的话,只能提取一次tags,再试图提取tags的话会出错,就我现在猜测可能是里面有些全局状态,用过后没有恢复。于是我只好用Rings了,这是个在Lua的state里再创建一个state来执行代码,master state和slave state之间基本可以互不影响,但也可以传递些数据。这样我就每次都是在一个新new出来的Rings的slave state里调用一次ctags。在封装ctags的时候发现codelite_indexer没有把gnu regex编译进去,这需要指定几个宏定义,看makefile就知道了。
  现在已经可以将所有文件都提取一遍tags,并存入数据库中了。而context视图都是在数据库中查找可能匹配的符号信息的。但这需要保证当前数据库中的符号是正确的最新的,所以一个合适的自动更新符号数据库的机制就很有必要,现在还没想好要怎么弄,既要有及时性,又要求不能影响用户的操作体验。
  之后还剩下一个大特性是relative视图了,这个目前有些困难,无论是数据上还是界面上,都没有比较方便的现成解决方案。

这算不算乌龙

  有个纠结了几个月的问题,同样的文件,在我的程序里打开后显示的换行符和其他程序显示的不一样!一直想不通其中的原因,总之我是没怀疑其他软件会出错,因为基本上所有其他的软件表现是一样的,只有我的程序跟它们不一样。
  今天又纠结起来了,于是一狠心,准备全盘照抄CodeLite的源代码,用Beyond Compare合并了绝大部分代码,最后发现,问题仍然存在。于是我不再怀疑编辑核心的问题,准备从其他地方着手分析。比较有嫌疑的是文件读取的部分,我的做法是用Lua将整个文件使用*a参数全部读出,然后用ICU将其从系统默认编码转换成UTF-8,再将这UTF-8的字符串传给Scintilla显示。我猜测会不会这个转换编码的过程把换行符处理过了。于是再单独的Lua环境中测试了一下,发现是没有处理的,其实稍微想想就知道,这应该是不会变的。既然确认转换编码不会影响这个,那么我就再将焦点往前移,看看读出的文件的原始内容是什么。将读出的内容转换成16进制打出来,发现我的程序确实是按照原样显示的。但是Notepad++/CodeLite/Code::Blocks甚至VS都将一个\r\n处理成了\r\r\n,会多显示空行。这是让我有点迷惑的,为什么就只有我的程序是照文件的原样显示的?
  最后还是没有得出确切的结论,据我的猜测,是在文件读取时的方式引起的区别,文本类型的方式在某种读取方式下会多插入换行符?这个可能是存在的,不过我觉得太无趣了,不玩了!

发现QT Animation Framework

  昨天在看QT的examples和demos的时候,猛然发现一组animation framework的示例,看了一下居然就是我一直在纠结在寻找的如何用QT做出那些酷炫界面的方法。话说其实之前也不时地翻一下QT的这些demo的,怎么就没发现呢!
  看了一下程序的运行效果和代码,并配置着读了一篇animation framework的使用介绍,对如何使用QT做出那些动画效果有了一个简单的认识。今天跟@zhangh109讨论时了解到,苹果的系统使用Cocoa core animation functions来达到这种目的,而Android好像没有现成的,要开发人员自己实现。
  到此为止,基本上解决了绝大部分的技术问题,剩下的主要是设计决策了。

想写个twitter客户端

  昨天下午和晚上都在看代码,对QT的使用有了更多的了解,不过还缺少一本能跟上最近QT变化的比较系统的教材。QT在这几年变化比较大,而最近最流行的一本讲QT使用的书,是2006出的《C++.GUI.Programming.with.Qt4》,都整整过去4年了,QT都快出4.7了,这几年新加入QT的内容才是真正令人激动的。
  一直有种想写个twitter客户端的冲动,不过一直没动手,因为手头正经事情还很多,还要留下不少时间去堕落。不过我想待现在手头这个东西完成后,就试着写写吧。昨天去折腾了一下QOAuth,结果它依赖QCA,而QCA又依赖OpenSSL,真是折磨人。
  再花点时间研究一下用QT怎么做一些比较酷的界面效果,就可以动手啦!

崩溃后的冲动

  有一做开源游戏的老外兄弟发邮件来说程序在点了try按钮后就崩溃鸟~我万般郁闷滴说,其实我以为不会有这么脆弱滴说,我还以为基本可用滴说,我现在比较失落滴说……
  总之我没有充分的测试,这是事实。但我现在也没足够的条件啊,我猜测还是在用Crypto++进行RSA签名验证那段崩溃的,不过这也仅仅是猜测。虽然还存在着各种可能的原因,但基于这个猜测,我目前能做的其实不多。我要换掉Crypto++,这个库从一开始引入我就很不情愿,谁让那个libtomcrypt最初就没好好用成功呢。在看雪论坛上看到过有人说,要加大保险系数,自己写RSA算法实现是必须的,不过我不会啊!我最多可能再去网上找段现成的代码来,或者继续研究下libtomcrypt的使用。
  自从那天去了徐家汇后,我就有种想买个组装机的冲动。那天问的说,用次点的集成显卡,2k就能搞定一台了。我想要台多核x64的,最好是4G内存,500G或1T硬盘,这样可以装个64位的Win7,还可以装些WinXP/2003什么的,用来做开发做测试的环境就差不多齐了。如果这样在3k以内可以搞定,就再花个4K多买个Mac Mini,就有了个Mac的开发环境了。比较经济的选择呢!

Get Adobe Flash playerPlugin by wpburn.com wordpress themes