Beagle the desktop search tool

我所了解的人当中大多数都会把自己的磁盘整理得头头是道,很少有找不到自己的文件的情况,当然我自己也是这样的。可是有些时候使用桌面搜索引擎不是找得到找不到的问题,有时候要定位一个文件确实是比较麻烦的,即使你清楚地知道它在哪里。我自己体会最深刻的就是文档 API 。看看系统自带了多少文档吧: $ ls -1 /usr/share/doc/ | wc -l 1486 1486 项。挺吓人的数字,每次都输入 /usr/share/doc/qt4-doc/html/qhttp.html [...]

不愉快的 Qt 之旅

今天尝试用 Qt 来写一个小程序,从网上抓取一些东西,并解析一下保存到本地。很简单的功能,但是却写得非常不舒服。 大致看了一下 Qt 提供的库,似乎应有尽有了。一大堆 GUI Widget 可以构建丰富的界面,方便的 QHttp 可以用于下载 Web 页面,并使用 QRegExp 进行解析,还有 Qt 强大的 QTextCodec 可以在各种编码之间进行转换。并且 Qt 4 提供了 MCV 方式,让我能轻松地把事务和视图分开处理。一切都是那么完美,似乎是专门为我准备的一样。然而它们并不是为我准备的。 我相信使用 QHttp [...]

Play with macro

Lisp 的宏可谓是异常强大。我所接触过的宏大约算三种: 一种是 C 语言的宏,这几乎可以算是功能最弱但又用得最多的宏了。只做非常简单的语法分析,并进行文本替换。但是实际上这种简单的宏为 C/C++ 带来了许多额外的能力,不过从来这个东西好像也没有专门的文献以及教材详细讲解,大多是经验丰富的程序员们通过源代码互相传播关于宏的知识,而且许多方面在各个不同的编译器上的结果都是不一样的,所以一直以来宏也只有那部分非常常见的用法为大家所广泛接收并使用。事实上,如果你感兴趣,可以去看一看 boost.preprocessor ,你会了解到其实宏可以做很多很多的事情。 一种是 C++ [...]

110 周年校庆

今天是学校 110 周年生日啦,学校发了餐票,可以在餐厅免费就餐。去吃饭的时候就被吓坏了,有“亚洲最大的食堂”的称号的餐厅竟然挤得水泄不通!我不太喜欢人太多,不过看到今天校庆这么热闹,也是很开心的。晚上还有校庆晚会,可惜抽签没有抽到,没有拿到票,不能去现场看,只能在寝室看直播了: mplayer -cache 8000 -af pan=1:1 mms://10.10.5.81/zjulive 晚会也是很好看的啊。如果有清晰版的 DVD 卖的话,一定要买几张,送给亲友,自己也留个纪念。 当然,也衷心祝福学校生日快乐,祝愿浙大越办越好!

smart-snippet and smart-skeleton

随着 Ruby on Rails 火起来,TextMate 也突然变得很火。没有 Mac 机器,不能体验到 TextMate 是什么感觉,不过在网络上看到 TextMate 的视频演示,其中有一个功能确实是很不错的。就是那个 snippet 。定义一些模板,然后在合适的时候展开,以减少输入重复的内容,这个是每个稍微强一点的编辑器都有的功能了,同一个“域”,在多处展开也是非常常见的功能。但是通常的编辑器都是对每个会放到多个地方的“域”进行提问(例如,弹出一个对话框),TextMate [...]

引用已经析构了的局部变量

在平常的编程里面,这样的代码算是再普通不过了: void func() { SomeType local_obj; another_func(local_obj); // ... } 然而最近我却遇到了问题。在使用 boost::asio 的时候,使用了这种常规的做法。结果遭遇段错误。后来才意识到是在进行异步调用。 another_func 拿着 local_obj (事实上,真正的代码是一个 local 的容器,我把它的 iterator 传递到了一个异步调用里面)却在 func 返回的时候就已经被析构了。不过,在异步调用里面也可以很容易地自动管理对象的生存期,很常用的方法就是使用 [...]

视力下降了

最近真正有些感觉到不对劲了,看一些稍微远一点的东西竟然开始模糊起来。也许视力是有些下降了。我可不喜欢戴眼镜,觉得戴上眼镜之后不管做什么都太不方便了。眼睛还是得要好好保养。要减少在电脑前的时间,多一点休息时间和阅读时间,要不然身体糟糕了就一切都没有了。可惜杭州这个地方地势太平坦,周围的高楼一建起来,就什么都看不到了,仅有的绿色就是院子里面的几棵桔子树了,远眺也是一片空白,或者是乌云,或者是飞机拖出来的一跳长长的云尾。相比之下,还是更喜欢家乡那边的大山。