今天晚自习回来的时候碰到了刚去自习的兄弟,想来也好笑,他们关灯前在寝室,然后九十点才出来上自习。要是宿舍通宵供电,就不用这么麻烦了……不过,怎么说都一样,学期末总是最忙的。
BTW,为了照顾 FVWM,最后 export LANG=en_US.UTF-8 了,只有这样 FVWM 才不崩溃,才找得到可用的字体信息。哎,真烦啊~
到今天中午为止,终于可以说系统完成了初步的 utf-8 设置。现在这个页面的 charset 就是 utf-8 的……折腾了这么久,感觉从 gb2312 到 utf-8 真是一条蛮累人的路。
不知道是不是自己的原因,觉得改 locale 是一件很复杂的事情,一方面没有很好的 unicode 中文字体(最重要的原因)。另一方面因为使用的是 fvwm,总感觉要改动的东西太多了,而且它在我这里非常不稳定,经常有说找不到 GB2312 和 gbk 的 encoding 而无法进入(i don't know why)。
当我用 mkfontscale 时会缺乏 gb2312 和 gbk 的 encoding。相反,如果我用 ttmkfdir, 则很多字体缺少 iso10646 的 encoding。所以我不得自己动手,先 ttmkfdir,得到gb2312 和 gbk 的 encoding,然后用 mkfontscale 生成,最后把 gb2312 和 gbk 的注入(注意,要修改 font.scale 顶部的条目信息)……另外还有一个,就是 emacs,这个东西无法割舍,不管 locale 是什么,都肯定得用下去的,所以还得看看 emacs 的表现如何。
但很不爽的事情是,emacs 在 X11 下工作得很不稳定,总是找不到 usable fonts,反应得很慢,我一时还不懂设置。而且不知道为什么,它和 fcitx 配合得很不好,如果emacs 启动了,再启动 fcitx,emacs 就会崩溃……所以我不得不用了 scim,顺便也可以输入繁体、日文韩文等等。
可以猜到我现在是用的是终端下的 emacs。方便显示,同时也为能使用这个输入法。不过,为此的代价是,很多的key-binding 用不了,因为 emacs 对键盘的控制已经被终端剥夺了……
说了很多废话,丧气话。还是看看有什么好的收获吧。看看你的系统能否认出下面的字体(我胡乱敲打的,仅仅作为例子):
韩文:뉘兀뉘뉘뮈일ol뉘쥐뉘튀쥬좨 日文:をでどあみど発海だだだ
scim 还支持很多的文字,比如阿拉伯文字等等,不想费时间打上去了。还有,如果你也要面临着 gb2312 或 gbk 到 utf-8 的或别的编码的转换,试一下下面的两个软件:
关于支持 unicode 的字体,我也没有什么好的办法,:(
改 locale 牵扯的东西太多了,比如 X11 下的字体,比如原来建立和保存的文本文件,还有一些支持的软件。尝试使用了 gb18030,发现要改动的东西太多,现在都没有准备好,还是算了吧,用 gbk 平滑升级算了,:(
今天有时间,本想 cvs 的,但还是没有成功,猜想也许跟学校封锁的端口有关,正在犯愁。没想到竟从一个个人 blog 里搜到了一个不错的个人网站,题目虽然是教授如何在 windows 下编译 emacs,但也提供 cvs 的 emacs 源代码。于是迫不及待地下载,$configure、$make、#make install,立马就可以使用,实在是太爽了。这里下载。
新版本的 emacs 支持 utf-8,并且使用了 gtk2.0 作为界面,不过对我来说没有什么变化,自从我了解了 toolbar 和 menu,就再没使用它们。最感兴趣的还是对 utf-8 的支持。
现在我的 locale 是 zh_CN.GB2312,但这也不是长久的办法。本想使用 utf-8 的,但尝试了一下,觉得不妥,因为以前用 gb2312 编码的东西,就等于都丢了,而且现在系统对 zh_CN.UTF-8 的支持不好。看看有什么办法升级到 zh_CN.GB18030,不想尝试使用 gbk 了。
今晚像平常一样打开 Opera 看网路上的 blog,开了太多的 tab,忘记在谁那里找到的了。从这个文件可以看看微软的野心,只是事情发生得有点久了……
微软万圣节备忘录是 1998 年 10 月由微软内部所外泄的文件,在万圣节后, 造成媒体及业界相当程度的震憾.文件明白的指出,微软在未来对今年来风起 云涌的开放原始码界的战略, 读本文可一窥微软这家公司在对付对手的手段, 或多或少, 也可以了解到, 何以美国司法部门要控诉微软.
文章有点长,请在这里查看。文章应该是由一位台湾人翻译的,读起来有点别扭。但里面加了蛮多的注释,应该有助于理解。
学校封了1080(?)以上的端口,现在 IRC channel 根本连不上去,真是郁闷。在学校封了端口之后,室友找到了一个通过 80 端口的代理服务器软件,其实就是专门用来砍网游的,最后学校的策略更本不起作用,倒害苦了我们这些平民百姓,惨~
今晚上自习前老妈来了电话,兴冲冲地跟我讲,说家门口的鸟窝上报了。要不是因为关了机,我早就迫不及待地观看了。最后还是拖到了晚上,不过,确实很惊喜诶……
在电脑下工作,写程序,调试程序,偶尔总会想写点什么,可是这些东西又不好发表,只是心理面的一点点想法,所以很想把它记录下来,怕以后会遗忘,就象日记一样。
真希望 Emacs 能提供这样的东西,就象随身携带的日记本一样,可以随时写下点什么。可是 Emacs 自带的 diary 和 todo 都不尽如人意,使用也不算方便。到 google 找吧,可是现在流行的早已是功能强大的诸如 EmacsWiki 和 PlanMode 这样复杂的软件,Wiki 的语法、发布成为 html 或直接与 blog 联接上传的功能对我来说没什么吸引力,因为我只是想要一个日记本,本地的日记本,按月分类,随时插入新的条目,很简单的功能。
于是在对 elisp 不怎么了解的情况下,我硬是生搬硬套 emacs-wiki-jounal 的源代码,加上自己笨拙的技巧,写了一个感觉蛮好用的函数,暂且叫它 sucha-simple-jounal 吧~
其实昨天雏鸟就已经出生了,只不过昨天的照片实在是太模糊,看了眼睛发疼。今天老爸照得清晰多了。第一次看到这么小的雏鸟,还是刚出生的。
本来不想用 TAGS 的,但 semantic 等工具对我来说太难设置了,而且我现阶段也不需要那么专业的工具,所以还是回到 TAGS 的怀抱吧。下面的设置都是在 Linuxforum 的 GNU Emacs/XEmacs 板快偷学的,在此谢过了~
在工程主目录下生成 TAGS 文件用以下命令(adong 提供):
find -name "*.[cSh]" | xargs etags -a
一小段代码,方便 TAGS 的使用(zslevin 提供):
;; M-. 在另一窗口处查看光标处的 tag ;; M-, 查找光标处的 tag,并跳转 ;; C-M-, 提示要查找的 tag,并跳转 (global-set-key [(meta .)] '(lambda () (interactive) (lev/find-tag t))) (global-set-key [(meta ,)] 'lev/find-tag) (global-set-key (kbd "C-M-,") 'find-tag) (defun lev/find-tag (&optional show-only) "Show tag in other window with no prompt in minibuf." (interactive) (let ((default (funcall (or find-tag-default-function (get major-mode 'find-tag-default-function) 'find-tag-default)))) (if show-only (progn (find-tag-other-window default) (shrink-window (- (window-height) 12)) ;; 限制为 12 行 (recenter 1) (other-window 1)) (find-tag default))))关于 etags 的更多的配置,M-x customize-group,然后输入 etags。good luck~
不清楚老师有这样说过没,我上课分心比较严重,一般比较有意思的问题,我才会注意,:) 这几天一直在看书,想起了上面的问题。在我看来,循环可以做的一切事情,都可以用递归来完成。以前只是听说,今天才认真想通。
如下的例子,普通的 for 和 while 循环:
for( i=0; i<n; i++) { LOOP BODY }相当于如下的尾递归:
_for(int i) { if(i<n) { LOOP BODY _for(i+1); } }因此 while 循环就更不在话下。不过相反地,用循环来完成递归的功能就麻烦多了,有些甚至于不可能。
最近做了一些数据结构的实验习题,才发觉程序设计就象老师曾说过的那样,是一种方法和艺术,不像我以前想的那么简单……
举几个例子,求二叉树的高度:
int max( int &n1, int &n2) { return (n1>n2)?n1:n2; }
void bitre_hight( bitre t, int &left, int &right) { if(t!=NULL) { visite_bnode(t,1); if(t->lchild!=NULL) bitre_hight( t->lchild, left++, right); if(t->rchild!=NULL) bitre_hight( t->rchild, left, right++); } }输出左右子树高度最大者
void main() { int left=1, right=1; bitre_hight( t, left, right); printf("the max floor is: %d", max( left, right)); }
int max( int &n1, int &n2) { return (n1>n2)?n1:n2; }
int bitre_hight(bitre t) { if(t!=NULL) { visite_bnode(t,1); return (max(bitre_hight(t->lchild), bitre_hight(t->rchild)) + 1); } }两个程序虽然都能得到同样的结果,但是其求解思想千差万别。
我的求解思想,是通过用两个整形变量计算并存储左右子树的值,最后输出最大值。变量存储,控制机制,呵呵。而老师的思想,就比较精简了,用递归嘛,“方法要统一”。 这一层的高度加上左右子树高度最大者为二叉树的高度 。
最近逛 Zhaoway 的 blog,发现了一个很有意思的测试,于是忍不住尝试了一下……原来我是属于中性的,:-)
| Your Brain is 46.67% Female, 53.33% Male |
|
Your brain is a healthy mix of male and female You are both sensitive and savvy Rational and reasonable, you tend to keep level headed But you also tend to wear your heart on your sleeve |
今天老妈打电话过来,说家门前的那一株九里香里竟然挂了一个鸟窝。九里香是一种很矮的植物,平常看到都是种在路边,竟然会有鸟筑窝?我虽然很高兴,但是总有点不相信。不过老妈没给我怀疑的机会,相片都发过来了,:)