Categories

Calendar

January 2009
M T W T F S S
« Dec   Feb »
 1234
567891011
12131415161718
19202122232425
262728293031  

Proggit 圣诞套餐

大家圣诞快乐!

看论文看到崩溃之后,去 Proggit 逛了一圈,发现那边也很热闹,一连看到几个有趣的帖子,于是决定推荐几个:

…is there anything Emacs CANNOT do?
“Emacs is an OS” 的说法其实早就不陌生了,虽然大多数时候我会选择坚决捍卫这句话,但是其实自己也是把他当作一句有趣的玩笑来看待的。进入这个 thread ,看到有人说 Emacs 目前还不能编辑视频——这是理所当然的啊,我也这么觉得,不过下面立即有人给了这样一个链接:Acturally… ,自己点过去看吧,我决定再把 Emacs 打开来拜一拜!

解决 Matlab MEX 编译时 GCC 版本的问题

在 Matlab 里使用 mex 来编译 C/C++ 代码失败,这个问题算是困扰了我好几个月了,主要是我的环境比较恶劣:系统是 Arch Linux ,感觉这个系统比较喜欢追求最新版本,比较无视老版本软件的兼容性问题吧。再加上系统是 64 位的,出现各种兼容性问题似乎也觉得是理所当然的,然后像 Matlab 这样的软件通常使用较老版本的 GCC ,而 GCC 更新的时候又做了一些大改动,总之结果是我每次试图编译的时候都得到类似这样的错误:

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.4.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11′ not found (required by /usr/lib/libgmpxx.so.4)

因为 GCC 新版本里把 GLIBCXX_3.4.11 这个符号去掉了,所以挂掉了。搞得我每次需要运行 mex 编译的代码都要放到另外一台 Windows 机器上跑。也 Google 了很多次都没有找到解决方案。今天一怒之下用了最暴力的方法:/opt/matlab/sys/os/glnxa64/libstdc++.so.6 其实是指向该目录下的另一个文件 libstdc++.so.6.0.9 的软连接,我将他改成指向系统里的新版本的 libstdc++:/usr/lib/libstdc++.so.6.0.13 ,结果问题解决了。那个目录下还有一个 README ,说了这几个文件是从 GCC distribution 里拷贝过来的。于是这样用新版本覆盖应该不会有太大的问题吧? 至少目前还没有出什么问题的。

2009 飘着

2009 年快要过去了,虽然我总是觉得奥运会明明就是今年举行的,但是日历上确实写着 2009 年。大家都写总结了,于是我也写吧,又不想用“总结”这么土的标题,就打开播放列表,找来找去看到“飘着”这首歌,回想自己这一年,也许这个词是很贴切的呢,寒假没有回家,也就飘在学校了,上半年住在玉泉校区,几乎每天飘来紫金港,下半年搬到紫金港校区,也几乎每天飘去玉泉。所以,就这个标题吧,很合适呢,歌也是很好听的。

说起来要写总结还真不是一件容易的事,我自己的记忆向来比较混乱,又是喜欢大幅度跳跃式的搜索,所以需要借助一些辅助的东西,比如 blog 、记事本、零碎的日记等等。其实这个新 blog 的开始大致就是从 2009 年开始的,所以目前的 Post 几乎就可以代表 2009 年了。

2009 年的第一篇 blog 就是关于 2008 年的总结,在那里提到了要给 2009 年定计划,然而最后其实也没有什么计划,甚至连新年愿望也没有什么想法,然而一下子就又该新年了,似乎是到了每天都要感慨光阴似箭的年龄,所以今年写总结的气氛明显感觉比去年要沉重一些呀。

2009 年其实发生的事情还是比较多的吧,一个寒假和一个暑假让我明白了不少事。

名字空间的问题

昨天晚上回到寝室,发现室友都没有在玩游戏,而是关灯睡觉了,很是惊奇,后来才发现原来寝室没有交电费给停电了,我倒是觉得挺开心的 -.- ,至少这样可以早睡了。于是也整理睡觉,正要关机的时候收到湖边的短信,让我帮忙调一段很短的汇编代码,其实我汇编已经几乎忘光了,连 mov 的方向在两种汇编下面分别是怎样的都分不清楚了,不过既然是很短的,那还是看看能不能帮上忙吧。于是第二天一大早就起来,然后就邂逅了这个让我不断地以为自己肯定是还没有睡醒的 bug 。代码是嵌入在 C 语言里的,大概是某个题目吧,要求用汇编来实现把小写字母转换为大写,也就是实现注释中那段 C 语言的功能:

Growl for Windows meets GreaseMonkey

最近学校的 CC98 论坛简直慢得令人发指,总是让我感觉又回到了蓝田时代——洗完脸刷完牙回来了一个页面还没有打开。加上考试周到了,又特别喜欢灌水,所以老是想去刷新页面看有没有新帖子,其实主要也是看的俱乐部水楼、晚安楼之类的地方,不过每次等半天页面终于出来了,发现没有新帖也觉得相当浪费时间和感情。想起 quark 之前有做过一个监视 98 的新帖子,然后用 notification-daemon 给出提示的东西,于是我想也做一个类似的东西好了,让它自己在后台刷新,网络慢点也没有关系,至少我不用一直等在那里了,有新帖的时候再关注一下好了。

不过在 Windows 下没有 notification-daemon 可以用,而且诸如 Python、Ruby 之类的脚本在 Windows 下跑起来都觉得相当别扭。记得之前看过一个叫做 Growl for Windows 的东西(这家伙的缩写真有点那个……),好像就是 Mac 下的那个 Growl 的 clone 。于是去仔细看了一下,似乎支持一套标准的协议,而且各个语言的 binding 都很全。

为 Python 的 HTTP 客户端加入自定义的 Cookie

几乎所有脚本语言都提供了方便的 HTTP 客户端处理的功能,Python 也不例外,使用 urllib 和 urllib2 可以很方便地进行 HTTP GET 和 POST 等各种操作。并且还允许以类似于插件的形式加入一些 handler ,来定制 request 和 response ,比如代理的支持和 cookie 的支持都是这样添加进来的。具体来说,通过如下方式构造一个 opener :

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())

然后这个 opener 就可以处理 cookie 了,相当方便,并且可定制性也……好吧,总之,现在我希望能在客户端手动插入一些 cookie 值,但是不管是 HTTPCookieProcessor 还是 cookielib 里的 CookieJar 都没有提供类似的方法可以来实现。

CPU 风扇的问题

在上次讲调试的小课堂里我曾经提到过我前一阵子遇到过一个 Matlab 的问题,具体症状是,开启 Matlab 来做计算,过了大约一天以后,再去看,就会发现系统处于完全无响应的状态,完全挂掉了,键盘有一个灯在闪烁。

碰到了好几次之后我相当崩溃,这个 bug 几乎处于不可调试的状态,首先要重现 bug 就很麻烦,虽然几乎都能重新,但是我不可能一直坐在那里盯着屏幕等一天(具体需要几个小时来重现我也不太清除),而且 bug 出现之后系统会挂掉,唯一的办法是强制重启,这个时候所有现场都被销毁了。另一方面,阅读代码的必杀技也没法用,因为我的程序是一段不长的 Matlab 代码,在这样的脚本语言里,内存都是自动管理的,我能想到的危害最大的操作大概就是申请超大内存了,一般会有两个结局:如果 swap 空间还能承受得了的话,会使用 swap 空间,并导致系统奇慢无比,不过并没有挂掉;如果 swap 空间都不够用了,那么 Linux 系统会把这个进程 kill 掉,而不是同归于尽。总的来说,不太可能是这段 Matlab 脚本导致了这么严重的问题,如果真有问题的话,估计是出在 Matlab 了,并且还是非常强悍的 bug ,会让系统彻底挂掉。

漫谈 Clustering (5): Hierarchical Clustering

本文是“漫谈 Clustering 系列”中的第 8 篇,参见本系列的其他文章。

系列不小心又拖了好久,其实正儿八经的 blog 也好久没有写了,因为比较忙嘛,不过觉得 Hierarchical Clustering 这个话题我能说的东西应该不多,所以还是先写了吧(我准备这次一个公式都不贴 )。Hierarchical Clustering 正如它字面上的意思那样,是层次化的聚类,得出来的结构是一棵树,如右图所示。在前面我们介绍过不少聚类方法,但是都是“平坦”型的聚类,然而他们还有一个更大的共同点,或者说是弱点,就是难以确定类别数。实际上,(在某次不太正式的电话面试里)我曾被问及过这个问题,就是聚类的时候如何确定类别数。

MSTC 小课堂之 C 语言调试技术

一方面现在越来越大类培养了,另一方面我们自己的审视标准也在上升吧,总是有一种现在小课堂参与率不够高的一种“错觉”,反正觉得有些劳民伤财。所以,一方面现在我们开始降低小课堂的成本(比如,省略掉横幅这个较昂贵的宣传方式),另一方面尽量让主题更加大众化一些。

比如上次 quark 的关于 Word 的小课堂,就效果不错。说起来当时听说 MSTC 居然要讲 MS 的技术了,一些老朋友还深表诧异! 而这次我来讲的 C 语言调试的课堂,其实主要是想讲调试的,但是还是在前面加了个“C 语言”就是要显得大众一点,C 语言现在是很多专业都要学的课嘛。

MSTC 月刊创刊号

idea 应该就是若缘半夜突然醒来决定写下来的了,然后最后把创刊号做出来,实在是花了很多心血,也经历了不少波折,不过,天色已晚,还是不多说了。好像外面在刮风打雷下雨了,再不回去就只能待在实验室了。这里奉上 MSTC 月刊创刊号下载。

总的来说,很不容易,我虽然做的苦力并不多,但是也感觉异常辛苦。不过大概也是第一次排版杂志的关系吧,对于要做什么完全没有概念。但是,感觉真的是每月都做的话,大概大家都承受不了这么大的负担呢。总之,先起个好头,后面的慢慢来吧!

另外,由于最近忙碌了好久,一直没有怎么更新 blog ,两个系列也拖了好久,偶尔想来写都是一些无聊的内容,实在不想把这里水掉,所以索性另外开了一个 blog: http://diary.pluskid.org ,于是在那里我可以放开水了,完全不写技术的东西,而这里,还是尽量保证质量吧!所以,对于看我灌水不感兴趣的朋友就不用关注那个新 blog 了。