Saturday, December 27, 2008

好玩的终端Google

goosh.org
前几天发现了一个好玩的网站, 它提供Google的搜索服务, 也许你会说这没什么, 随便哪里都有. 但这个网站可不一样, 它是纯命令行的搜索. 网页模拟成了终端, 而你需要输入相应的命令. 偶尔用用还是很有趣的.

好用的画流程图的软件--Dia

Dia
为了课程设计去搜寻了一下能在Linux下用的画流程图的工具, 试用了几个网上介绍的, 觉得Dia是一个比较简单方便的软件. Dia有Linux, Window$和Mac版本, 界面风格类似GIMP, 并且画好的流程图可以导出为多种格式.
$ sudo apt-get install dia

Monday, December 22, 2008

Sunday, December 21, 2008

关于在Emacs中注释代码

以前在用Emacs写注释的时候, 用M-;在C/C++里都是在行尾插入"// ", 然后我就可以很方便地添加注释了. 可今天很神奇, 突然就从"// "变成"/* */"了, 这样很是不爽. 看了下Emacs的帮助文档, 发现无论是"// ", 还是"/* */", 都是由两个变量来控制的. 一个叫做comment-start, 另一个是comment-end, 分别控制开头和结尾. 比如说"/* */"这个, 它的comment-start就是"/* ", 而comment-end则是" */". 所以只需要在我的配置文件的C Mode里面添加下面两行就行了:
(setq comment-start "// ")
(setq comment-end "")

另外在看帮助的时候, 又学到了一招. 比如说下面的情况:
/*
* ...
*/
光标在中间那行, 当我输入完注释以后回车想输入下一行, 却发现Emacs不会自动跳到相应的位置并且添加那个星号, 在Vim里就可以. 难道Emacs不支持? 其实不是, 你不需要使用回车来换行, 当你想要输入下一行注释时, 按M-j就行了, 效果和Vim中是一样的, 呵呵~

P.S. 之所以用Emacs来写注释, 一是因为M-;这样按着很爽很方便, 还有一个就是那些注释会对得很整齐, 以前不知道这是为什么, 今天发现原来也是因为一个变量的缘故: comment-column. 这个变量的默认值是32, 每行注释都会从32列开始, 所以会很整齐了.

Wednesday, December 17, 2008

学习了SVN

在没有真正接触版本控制系统以前, 一直不能理解为什么还需要一个专门的工具来管理代码 (当然, 其实你可以用版本控制系统来管理任何可以存储在电脑上的东西). 现在我了解了, 版本控制真是一个很好很强大的东西, 一旦使用, 就会不忍割舍.

先学习了SVN, 现在的主流版本控制系统之一.
$ sudo apt-get install subversion
然后强烈推荐一本SVN的教程: Version Control with Subversion, 这本书虽然有中译本, 但版本太老了, 还是讲1.4的 (现在SVN的版本是1.5.1), 所以还是看原版吧. 绝对是本好书, 光看已经由O'Reilly出版了就知道了. 还是要感谢下作者, 将这本书免费地放到网上 (其实这本书就是由SVN来管理的).

最后写几个著名的代码托管网站, 可能大家都比较了解了, 或者就正在使用着:

The End

$ tar zcf memory.tar.gz ~/mymemory
$ sudo mv memory.tar.gz /paradise
$ sleep 99999d

Monday, December 15, 2008

无神

我坐在这里, 双眼盯着屏幕, 失去了聚焦, 大脑的疼痛感还没有消失, 我试着让自己笑笑, 或者多说上几句, 说了总会好点吧. 我不后悔今天所做的, 我也有一丝地钦佩那个人. 我们都做了自以为正确的事情, 我实现了我的原则, 他也以独有的无赖的方式回应了我. 无论如何, 不论结果怎样, 我都会这样干. 不过, 我不会再想见到这个人了. 他的话语让我厌恶, 彬彬有礼的无赖. 今天什么事情都没干, 希望明天会好点. 如果再这样下去的话, 我想我会沉沦.

Sunday, December 14, 2008

ACSII

感谢Ray.
$ man ascii

在bash中使用遍历补全功能

看了开源世界旅行手册的讲bash的部分后, 学到了一个新的功能: 遍历补全, 可以用来解决在终端下输入某些乱码或者中文的情况(我很懒, 不想自己打...).

需要先修改一个文件:
$ sudo vim /etc/inputrc
...
# some defaults / modifications for the emacs mode
$if mode=emacs

# traversing complementation
"\C-o": menu-complete
...
在那个if判断后面添加就行了, 因为我用的是Emacs的键绑定, 最后重启就生效了, 使用C-o来遍历补全.

Saturday, December 13, 2008

曾经的曾经的曾经...

我想我已经决定了, 未来的30天我会好好珍惜的, 我很开心, 谢谢~

Wednesday, December 10, 2008

懒人的工具: GNOME Do

何为GNOME Do? 一个让你只需要在键盘上敲下几个字母, 移动几下光标, 按几次Tab就可以同Pidgin中的某个好友聊天, 运行你常用的程序, 打开某个想要查看的文档, 或者使用apt安装某个软件的工具. 说得简单点, 这是一个使用纯键盘操作来帮助我们执行一些快捷操作的软件.
$ sudo apt-get install gnome-do
使用Super+空格来呼唤出GNOME Do, Esc退出. 一定要记得去勾选适合自己的插件哦, 这样GNOME Do的威力才能更好地发挥出来呢. 下面是一些截图:

输入gvim就帮我自动定位到了:
GNOME Do 1

我输入gnome-do, 然后按Tab转到下一级选项就可以用上下方向键来选择了, 看到第二个了吗? 那个就是使用apt来安装你输入的字符串, 还是很方便的~
GNOME Do 2

Saturday, December 6, 2008

直接在Nautilus中打开终端

Nautilus Open Terminal
昨天看joy演示时觉得这功能不错, 以前只知道ROX-Filer有这功能, 原来Nautilus也有.
$ sudo apt-get install nautilus-open-terminal
重启即可.

关于使用ctags浏览代码的一些笔记

2010.11.22 10:20更新: 今天才发现我当初是没有弄清楚Vim寻找tags文件的方式, 现在看来, 只需要在源码根目录执行"ctags -R", 然后每次都使用这一个tags文件即可. 因此下面的做法相当于画蛇添足, 现仅留作存档.

2010.11.22凌晨更新: 下面的脚本中由于find用到了扩展的POSIX正则表达式, 因此请注意检查你系统中的find是否支持, 比如BSD系统自带的find就只支持标准的正则表达式.

昨天本来想看下xlockmore的源码的, 开始以为Vim + Tag List就差不多了, 后来发现不行的, 源码里面包含了一些include文件中的类型定义啊, 函数定义啊这些的, 想去看下原型都不行.

于是想到了ctags, 在我正在查看的源文件的目录下生成了一个tags文件. 这下好了, 可以跳转查看了, 不过马上新的麻烦又来了. 我还想在这个新跳转的文件中继续跳转, 但由于它同刚才的不在同一个目录, 所以Vim找不到相应的tags文件. 真是麻烦, 看来必须在每一个目录下都生成一个tags文件才行, 不过我很懒, 不想手动进入每一个目录, 然后重复执行那行命令. 查了一会儿ctags的man page, 没找到想要的功能, 又Google了一下, 还是没找到, 倒是找到了和我遇到相同麻烦的人, 呵呵~ 问了下joy, 貌似他也不是很清楚, 于是我就干脆写个脚本算了. 把这个脚本放在包含所有源码的根目录执行就行了.
#!/bin/bash

if which ctags > /dev/null; then
    echo "Hey, I get it!" > /dev/null
else
    echo "ctags is needed"
    exit 1
fi

base_dir=`pwd`
extension="\([cC]\|[cC][pP][pP]\|[hH]\)"

cd "$base_dir"
for dir in `find . -type d`; do
    cd "$dir"
    file=`find . -maxdepth 1 -regex ".*\.${extension}" -execdir echo 'found' \; -quit`
    if [ -n "$file" ]; then
        echo "$dir"
        ctags -R "$base_dir"
    fi
    cd "$base_dir"
done

exit 0
顺便记下在Vim中通过tags文件跳转的命令:
g^]  跳转
^T 跳回

然后还有个cscope, 可以用来搜索源码, 还没怎么用过.

P.S. xlockmore的源码看着真是费劲, n多的宏定义和typedef, 害得我头都看晕了...

Thursday, December 4, 2008

让GTK+程序使用Emacs的键绑定

$ cat ~/.gtkrc-2.0
# Emacs-like Keybindings
include "/usr/share/themes/Emacs/gtk-2.0-key/gtkrc"
gtk-key-theme-name="Emacs"

有趣的屏幕反色现象~

反色

偶然发现的, Super+M使整个屏幕反色, Super+N使当前窗口反色.

Saturday, November 22, 2008

等着我

预赛结束了, 差两名进决赛, 虽然告诫着自己just a game, 但仍免不了一丝的失落. 发现了自己的不足, 对于自己的弱点还是很能够正视的. 加油, 剩下的人们, 明年等着我!

在Emacs中使用矢量字体

也不是所有的矢量字体都有问题, 只是我现在使用的Courier 10 Pitch这个字体在Emacs中显示的是点阵的效果, 不是很好看. 于是Google了一下, 看到有人引用了zhan的配置, 试了试, 果然很有效果.

配置.Xresources
$ cat ~/.Xresources
Xft.antialias:1
Xft.hinting:1
Xft.hintstyle:hintfull
Emacs.FontBackend:xft
然后
$ xrdb ~/.Xresources

Monday, November 10, 2008

参加三叶草Linux方向考核的一些总结

这标题好像有点正式, 其实也就是上个星期的事情, joy给我们出了几道题, 做为进入三叶草的一个考核. 虽然题不多, 而且难度也不是很大, 不过还是有一些值得写下来的东西.

首先了解了indent这个软件. 以前在桃源上看过joy写的介绍, 没用过, 这次题上有, 就去下来用了用. 只需要简单地配置一下就可以使用了, 不过只能用来缩进C语言, 这个范围有点窄了. 但某些地方还是要比我自己配置的在Vim和Emacs里的缩进要先进一点, 以后可以这两种方法结合着用. 配置参考了joy写的, 自己查了点也添了进去:
$ cat ~/.indent.pro
-bl        // Put braces on line after if, etc.
-bli0      // Indent braces n spacs.
-bls       // Put braces on the line after struct declaration lines.
-c32       // Put comments to the right of code in column n.
-cd32      // Put comments to the right of declarations in column n.
-cp32      // Put comments to the right of #else and #endif statements in column n.
-i4        // Set indentation level to n spaces.
-kr        // Use Kernighan & Ritchie coding style.
-nce       // Do not cuddle } and else.

然后根据joy的题的要求写了一个将Window$下的文本文件转换为Linux下的格式的脚本. 功能很简单, 不过有时候也挺实用的, 现在还只能处理单个文件, 准备以后加入批处理功能.

最后这个和这次的题没有多大关系, 只是因为上次看joy演示的时候很好奇那个在Emacs中自动添加文件头的东西. 于是先去网上找了下, 找到一个叫做template的插件. 虽然不是joy那个, 不过发现这个插件的好处就是可以自动帮我在tex文件的开头插入导言区, 这下可省事多了, 呵呵~ 然后问了joy, 知道了那个插件叫做auto-header.el. 最开始还下了一个错误的版本, 导致Emacs启动错误, 推荐大家在这里下载. 这个的配置参考猫猫的配置.
$ cat ~/.emacs
;; template
(require 'template)
(template-initialize)

;; auto-header.el
(require 'auto-header)
(setq header-full-name "Dreamseeker"
      header-email-address "gaochangjian<at>gmail<dot>com"
      header-copyright-notice "Copyleft (c) INF, Dreamseeker"
      header-update-on-save '(filename modified counter copyright)
      header-field-list '(filename
                          blank
                          description
                          blank
                          author
                          created
                          blank
                          modified_by
                          modified
                          blank
                          status
                          update
                          blank
                          copyright))
;; auto update the number of count
(global-set-key (kbd "s-h") (lambda ()
                              (interactive)
                              (if (header-exists-p)
                                  (header-update-count)
                                (header-make t))))

Sunday, November 9, 2008

终于MPlayer可以全屏了

因为ATI, 我一直都不能全屏观看电影, 每次就着个小窗口, 没有了以前全屏的感觉. 昨天帮同学调他的MPlayer时, 无意中发现这么一个配置, 于是回来试了试, 居然成功了! 真是意外的收获, 呵呵~
$ cat ~/.mplayer/config
zoom=yes

Friday, November 7, 2008

BRAND SHINING DAY

难得的溢满阳光的午后, 能够迎着风, 挥洒着, 笑着, 漫步着, 心脏轻快地跳动着, 就着舒缓的节奏, 喝着奶昔, 耳朵里萦绕着Rock 'n' Roll, 几日的忙碌被抛到九霄云外, it's my holiday!

Sunday, November 2, 2008

用Emacs听歌

这真是一个很geek的想法, 要不是joy让我做, 我才不会去试呢. 就像虽然我知道Gnus可以用来收发邮件, 但我也决不会用它来管理我的Gmail. 以前用ERC, 现在觉得麻烦也换成XChat了. 事实证明, 我也不是一个CLI的狂热者.

好了, 该介绍今天的主角了: EMMS. 解压放到你的Emacs的load-path就行了, 下面是我的.emacs中的配置:
;; EMMS
(add-to-list 'load-path "/usr/share/emacs/site-lisp/emms/")
(require 'emms-setup)
(emms-standard)
(emms-default-players)
(setq emms-repeat-playlist t
emms-source-file-default-directory "/home/xiaolan/music/"
emms-lyrics-coding-system nil ;; let emacs to identify the encode of lyrics
emms-lyrics-dir "/home/xiaolan/music/lyrics")
;; show info at mode-line
(require 'emms-mode-line)
(emms-mode-line 1)
;; show time of music
(require 'emms-playing-time)
(emms-playing-time 1)
;; show lyrics
(require 'emms-lyrics)
(emms-lyrics 1)
;; auto identify encode
(require 'emms-i18n)
;; auto save and import playlist
(require 'emms-history)
(emms-history-load)
参考了这篇文章.

键绑定是必须设置的, 不然每次都手动敲, 会累死你的.
(global-set-key (kbd "<f6>") 'emms-play-directory)
(global-set-key (kbd "<f5>") 'emms-playlist-mode-go)

这是截图, 有显时间和歌词功能:
EMMS

Thursday, October 30, 2008

Window$与Linux的启动速度不完全比较分析报告

今天和超哥谈到了电脑的启动速度问题, 于是回寝室就以我的这台电脑作为实验品试验了一下.

先说下系统环境: Linux是Arch, 2.6.27的内核, Window$是XP Professional SP3. 计算的标准是从计算机加电自检开始计时, 到完全进入图形界面, 并且可以正常开始工作. 下面就是我的计时结果:
Linux 42s
Window$ 1m8s

差别其实也不是很大, 本来以为Window$再怎么也得要个一两分钟, 差不多Window$到登录界面的时候就用了40s左右, 剩下的就是Window$独特的漫长的自启动程序的加载过程, 这个Linux下也有, 不过至少少了个杀毒软件的启动时间. 还好这机器被腐蚀得还不是很严重, 只有两三个启动程序.

Intel的那个6s启动的Netbook想想还是比较吓人的.

Monday, October 20, 2008

停刊了

今天突然看到joy的帖子, 他说桃源停刊了, 我知道他肯定也考虑了很久, 毕竟最初创办也是他的决定, 现在自己又要做出这样的决定, 我想他的感受我体会不了. 想想自己虽然只参与了一期的发布, 不过那几天认真地投入还是让我学到了很多, 不论是技术, 还是那些认识的人们. 参加桃源只是我在一个下午的突发奇想, 然后就给joy发了第一封邮件, joy很友善地欢迎了我的加入, 接着就是连续几天地投入, 最后看着大家的成果在论坛发表, 那种感觉真的很幸福. 昨天Ray寻着大猫的足迹举办了一次重要的讲座, 前几天论坛还有人问新的一期什么时候来, 现在应该有答案了吧.

神经漫游者

头好痛, 在强迫着自己喝下了一杯又一杯的啤酒以后, 我终于吐得一塌糊涂. 那一瞬间, 大脑是空白的, 只依稀听到有人在问我什么. 我只想重重地倒下, 然后不再醒来. 对于这种酿制品还是不习惯, 什么时候学会的呢? 是在叶队那里, 也是吃鱼, 不过第一次的尝试也没有留下什么不好的记忆. 然后我还是会尽量避免, 我会说我不喝, 以前都是直接说不会喝的, 呵呵~ 现在似乎还能从嘴里吐出那种让我头晕的气味, 有点恶心, 我再也不想重复今晚的记忆了.

赶到Ray的讲座时已经讲完了, 我还答应Ray说应该会来的呢, 只看到一群人围着似乎是Ray的笔记本在那演示着什么. 不过那特效也挺华丽的就是了, 好多以前都没见过. 然后看到一个貌似Ray的人, 不知猜对了没. 对于Ray, 我有点抱歉, 本来上个月就兴致勃勃地说好去捧场的呢, 结果谁又能预料今天发生的一切呢.

今天真是不寻常的一天.

Oct 19 2008

Sunday, October 19, 2008

终于用上xeCJK!

以前在Ubuntu的时候就因为源里的XeTeX版本太低了而无法使用 (源里的是0.996, 偏偏xeCJK需要0.997以上...), 现在好了, TeX Live 2008出来了, 用Arch源里的装好以后XeTeX的版本也上去了:
$ xetex --version
XeTeX 3.1415926-2.2-0.999.6 (Web2C 7.5.7)
kpathsea version 3.5.7
Copyright 2008 SIL International.
Kpathsea is copyright 2008 Karl Berry and Olaf Weber.
There is NO warranty. Redistribution of this software is
covered by the terms of both the XeTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the XeTeX source.
Primary author of XeTeX: Jonathan Kew.
Kpathsea written by Karl Berry, Olaf Weber, and others.

Compiled with ICU version 3.8.1 [with modifications for XeTeX]
Compiled with zlib version 1.2.3; using 1.2.3.3
Compiled with FreeType2 version 2.3.7; using 2.3.7
Compiled with fontconfig version 2.6.0; using 2.6.0
Compiled with libpng version 1.2.29; using 1.2.32
Compiled with xpdf version 3.02pl2
感觉就是一个字: 爽! 哈哈~

顺便记下Arch下安装LaTeX+XeTeX+常用宏包的过程:
$ sudo pacman -S texlive-core texlive-latexextra

然后到CTeX论坛上下载xeCJK, 将相应文件放到texlive的安装目录里, 刷新文件名数据库:
$ sudo mktexlsr

最后就是修改导言区了:
\usepackage{xeCJK}

\setmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std} % 设置默认的英文字体
\setCJKmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std} % 设置默认的中文字体

很简单是吧? Just enjoy.

关于Arch的二三事 (续)

没想到居然拖了这么久才继续写, 难道现在静下来写下日志都成了一种奢侈...

安装完以后配置X还是比较方便的, 毕竟有工具可以自动生成配置文件, 我是用的hwd来配置xorg.conf的. 比较麻烦的地方可能就是显卡了, 毕竟我的是ATI的显卡, 不像NVIDIA的用官方工具来自动配置就好了. 我选择安装的是开源的驱动, 然后参考这篇Wiki稍微修改了一下xorg.conf, 不然进X就是黑屏. 不过我感觉我现在的配置还没有完全发挥显卡的效果, 看以后再仔细研究下.

然后是SCIM的配置, 安装很简单啦, 主要是配置, 详情请参考这篇Wiki.

对于经常使用bash的人来说, 自动补全肯定会是一个有用的功能. 强烈建议安装bash-completion这个包, 可以增强bash的自动补全, 比如说可以实现在sudo之后的命令自动补全. 安装好以后, 再修改.bashrc使得一直都生效:
. /etc/bash_completion

在我刚安装好GVIM之后, 打开却发现和以前的很不一样. 首先没有菜单, 然后它也没有按照我选的颜色方案正确显示, 而是什么灰色背景的颜色配置, 显得很难看. 菜单问题在网上找到了解答, 是通过修改.gvimrc解决:
$ cat ~/.gvimrc
set encoding=utf8
set langmenu=zh_CN.UTF-8
set imcmdline
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
而颜色问题则困扰了我一段时间, 后来无意中发现Vim的一个全局配置文件/etc/gvimrc, 才找到了问题的根源. 原来是这个文件修改了颜色的配置, 遂注释掉相应部分, 于是我熟悉的界面又全部回来了.

还有一些杂感. 为了看chm文件安装了CHM Reader, 不过却什么都显示不了, 不知道是不是又是因为64位的缘故, 现在在用kchmviewer, 说实话, qt的界面不是很喜欢就是了. 为了能够听到我心爱的CD们, 开始我还去手动挂载光驱呢, 结果失败, 普通CD就可以顺利挂载, 音频CD却不行, 最后还是依靠强大的Rhythmbox搞定了, 这软件听CD必备啊.

由于课程的缘故, 现在的配置还不能完全调整到和以前一样, 我也在一点一点地完善中, 不过还是能够从中学到很多的, 让这个系统慢慢地符合我的习惯就行了.

Wednesday, October 8, 2008

关于Arch的二三事

已经把Ubuntu格了, 现在的系统已经基本上满足我的应用了, 配置是痛苦的, 不过配置好了是幸福的, 呵呵~

困扰我最久的是挂载U盘、移动硬盘的问题, 首先你可以根据这篇Wiki配置hal. 不过手动mount很烦的, 刚好在LinuxSir上找到了一个可以实现自动挂载并且支持热插拔的方法:
$ cat /etc/udev/rules.d/10-automount.rules
KERNEL=="sd[b-z]", NAME="%k", SYMLINK+="usbhd-%k", GROUP="users", OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[b-z][0-9]", SYMLINK+="usbhd-%k", GROUP="users", NAME="%k"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mkdir -p /media/usbhd-%k"
ACTION=="add", KERNEL=="sd[b-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat",
RUN+="/bin/mount -t vfat -o rw,utf8=true,codepage=936,noauto,flush,quiet,nodev,
nosuid,noexec,noatime,dmask=000,fmask=111 /dev/%k /media/usbhd-%k", OPTIONS="last_rule"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mount -t auto -o rw,locale=zh_CN.UTF-8,noauto,
sync,dirsync,noexec,nodev,noatime /dev/%k /media/usbhd-%k", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/umount -l /media/usbhd-%k"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rm -rf /media/usbhd-%k", OPTIONS="last_rule"
我觉得这个还不错, 很方便, 那个文件是我自己建的, 本来是没有的. 如果你要手动挂载的话, 那么推荐你用pmount, 这个可以允许非root用户挂载可移动设备, 而且没有乱码, 也没有权限问题.

然后是URxvt, 以前在Ubuntu下是用.Xreources作为配置文件名的, 但到了Arch发现用这个文件名不起作用, 于是找到方法修改为.Xdefaults即可.

在启动的时候还遇到了一个诡异的问题, 错误提示如下:
clocksource tsc unstable
开始还以为是升级出现的问题, 因为我每次都是升完级重启以后就出现这个错误, 然后系统就进不了了. 为此我重装了至少两三次(真有毅力 - -), 最后无奈Google了一下, 发现居然是AMD+ATI的问题, 而且解决方法也是如此简单, 当时就想晕了... 在grub的启动菜单的kernel中加一个参数clocksource=acpi_pm就行了.

话说用64位系统就是跟自己过不去... 我算是体会到了. 最难的一个问题就是QQ, 现在流行有三种方法: Eva, 官方QQ, Pidgin. 因为Eva用习惯了, 我理所当然地去仓库中找, 好吧, 官方的没有, 那我去AUR找, OK, 找到了, 有两个, 选了最近的那个, 另外一个貌似已经过期了. 然后就提示什么什么依赖不能满足, 于是我一个一个地去安, 每个都还挺大, 真是花时间... 再安, 这次安上了, 运行起来似乎也很正常, 又看到了熟悉的登录界面, 然后我点登录, 只见什么东西一闪就关了, 然后在终端里看到一堆的错误, 我晕, 这要折腾到什么时候啊~ 于是我毅然决然地决定放弃AUR的包了, 那咱就将就用下官方的吧, 以前在Ubuntu下也是64的, 也能用上, 于是我满怀希望去下好, 解压运行, 我看到的又是一堆错误, 这次连登录界面都没看到... 很好很强大, 于是我还剩下一个Pidgin了, 这次很顺利, 安装登录都是, 然后我以为我终于可以安心的时候, 我发现Pidgin自动退出了, 我又开, 过了一会儿, 它又自动退出, 我再开, 它还是退出, 它是故意的... 为了一个QQ, 真是太难了. 就在我决定放弃, 以后安个虚拟机来运行QQ的时候, 我在LinuxSir上看到这样一个帖子, 用16楼给的链接下了一个Eva的包含PKGBUILD和gcc补丁的档案, makepkg遇到了一个小错误, 可以按照那个帖子中的办法解决, 然后应该就很顺利了, 最后我终于用上了Eva, 哈哈~

暂时想到这些, 睡了先, 明天再写.

Monday, September 22, 2008

may the source be with you

节选自《算法的力量》 李开复

给程序员的七个建议

(1)练内功。不要只花功夫学习各种流行的编程语言和工具,以及某些公司招聘广告上要求的科目。要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络,离散数学等基础课程学好。大家不妨试试高德纳所著The Art of Computer Programming里的题目,如果你能够解决其中的大部分题目,就说明你在算法方面有一定的功力了。

(2)多实战。通过编程的实战积累经验、巩固知识。很多中国大学毕业生缺乏编程和调试经验;学习C语言,考试过关就算学会了;课题项目中,只要程序能够编译,运行,并且输入输出满足要求就算了事。这些做法是不行的。写程序的时候,大家必须多想想如何把程序写得更加精炼、高效、高质量。建议大家争取在大学四年中积累编写十万行代码的经验。我们必须明白的是:好程序员是写出来的,不是学出来的。

(3)求实干。不要轻视任何实际工作,比如一些看似简单的编码或测试。要不懈追求对细节一丝不苟的实干作风与敬业精神。我发现不少程序员对于知识的掌握很肤浅,不求甚解,没有好奇心,不会刨根问底。比如,学会了C++,是否了解一个对象在编译后,在汇编代码中是如何被初始化的?这个对象的各个成员在内存中是如何存放的?当一个成员函数被调用时,编译器在汇编代码中加入了哪些额外的动作?虚函数的调用是如何实现的? 这些东西恐怕在编程语言或编译原理中都没有详细提到,只有通过踏实的实干才能真正掌握。

(4)重视数学学习。数学是思维的体操,数学无处不在。学计算机至少要学习离散数学、概率论、布尔代数、集合论和数理逻辑。这些知识并不难,但是对你未来的工作帮助会很大。 尤其当你对一些“数学密集型”的领域如视频、图像处理等有兴趣时,这些知识将成为你手中的利器。

(5)培养团队精神,学会与人合作。今天的软件工程早已经不是一个人可以单独操作的,而必须靠团队合作才能成功。不懂得合作的人是不能成大器的。大家要多去寻找可以与人一起做项目的机会。

(6)激励创新意识,培养好奇心,不要死记硬背。没有掌握某种算法技术的根本原理,就不会有应变和创新的能力。想成为一位好程序员(其实从事任何一个行业都是如此),重要的是要养成钻研,好奇,创新,动手,合作的优秀习惯,不满足于填鸭,不满足于考试交差,不满足于表象。这不是学几门课能够一蹴而就的。

(7)有策略地“打工”。在不影响学业的前提下,寻找真正有意义的暑期工作或兼职。去找一个重视技术的公司,在一个好的“老板”指导下完成真正会被用户使用的程序。

Sunday, September 21, 2008

这几天使用LaTeX的一些新感受

在学校找了个用LaTeX排版的差事, 也不知道能做多久, 不过花了3天时间排了本近60页的杂志, 还是很有成就感的, 嘿嘿~

期间也发现有一些遗忘的地方, 于是我这几天干的最多的一件事情就是在CTeX论坛上搜和在Google上搜, 对于以前的一些东西又有了新的理解.

先来说说代码显示吧, 以前用了一个很笨的方法来做出那种灰色背景的效果, 结果在排大猫的那段很长很长的代码时出现了问题. 那代码要跨页, 所以以前的表格方法不能把代码全部显示出来, 导致大量代码被丢弃了, 很显然这种方法已经行不通了. 于是上网去找解决方案, 找到一个listings的宏包, 看介绍不错, 还支持语法高亮呢. 然后就兴致勃勃地用上了, 实现灰色背景还是很简单的, 可一编译又发现了一个很严重的问题, 如果某行代码太长超过一行了, 虽然listings可以自动换行, 但那行就没有灰色背景了! 这样的效果可想而知, 于是我还很认真地花了一些时间去把listings的说明文档好好看了一遍, 想找找有没有什么解决的办法, 结果还是失败了, 不过看CTeX论坛上也是有些人遇到这种情况, 而有些人正常, 难道是人品问题 (- -)? 没办法, 为了好的代码显示效果, 只能另辟蹊径了. 恐怕我当初也不会想到, 最后的方法竟然如此简单, 仅仅是把代码放在一个shaded环境里就行了, 如下:
\usepackage{color}
\usepackage{framed}

\definecolor{shadecolor}{gray}{0.85}
放在导言区就行了, 然后像这样处理代码:
\begin{shaded}
\begin{verbatim}
...
\end{verbatim}
\end{shaded}
什么跨页, 什么换行, 一切都搞定, 哈哈~

然后还是讲讲代码, 当初我在排第一段代码的时候就遇到了困难, 因为这里面有中文注释... 以前从来没考虑过这种事情, 查了下, 是verbatim环境使用的字体Typewriter不支持显示中文的缘故, 这也是LaTeX默认用来显示代码的字体. 不过看别人用CJK的显示都是正常的, 看来CJK确实要高级些, 没办法, 谁叫咱用的是XeTeX, 毕竟现在还不是很成熟. 我想用xeCJK啊, 残念, 编译不出来就这样, 唉~ 然后在这里找到了解决办法:
\setsansfont{DejaVu Sans YuanTi Mono}
\makeatletter
\def\verbatim@font{\sffamily\small}
\makeatother
只好忍痛替换了tt字体, 用上了猪猪的强大字体, 等宽加中文都支持.

因为杂志的栏目分类不能出现编号, 所以默认的那种是不行的, 下面是解决:
\phantomsection % 让目录中的链接正确
\section*{\textcolor{darkgreen}{\textbf{本刊致谢}}} % 不显示编号, 并且不出现在目录中
\addcontentsline{toc}{section}{卷首语} % 添加到目录中
\sectionmark{卷首语} % 页眉

关于浮动环境, 这个以前真的是很头疼的, 往往它不会按照所设想的位置放置, 搞得某些图片直接占据了一整页. 然后某天在CTeX上看到一个很强大的回复, 可以把浮动环境放在任何你需要的地方, 一个字, 爽! 如下:
\usepackage{float}

\begin{figure}[H] % 就是这个神奇的H
...
\end{figure}

还有一个计数器的问题, 因为杂志有一个封面, 所以会占据掉一整页. 这样正文就是从第2页开始计数了, 虽然是个小问题, 不过还是希望能够符合习惯点. 解决也很简单的, 这还得归功于图书馆的那本强大的LaTeX书, 如下:
\setcounter{page}{0}
这句就将页码的计数器设置为0了, 所以放在第2页的代码前面就行了.

P.S. 因为杂志的缘故, 认识了joy, 牛逼的Emacs, Python, shell脚本使用者, 好好学习, 天天向上.

Wednesday, September 17, 2008

使用OO遇到的Java运行环境错误

没到Ob之前打开OO都不会有什么错误提示, 不过现在用终端了, 反而看到了一些错误提示, 也许是以前就有的, 只是看不到罢了. 错误提示如下:
javaldx: Could not find a Java Runtime Environment!
开始以为是Java的环境变量配置错误, 又按照Ubuntu Wiki上的设置重新检查了一次, 结果还是出现那个提示, 后来在Ubuntu官方论坛上找到了解决办法:
sudo apt-get install openoffice.org-java-common

Sunday, September 14, 2008

强大的终端电影

昨天在Ubuntu社区上看到的, 以前貌似听说过这么一个东西, 不过没见过, 见到了以后感觉的确很震撼. 当然, 你得要了解 Star Wars Episode IV: A New Hope 才行, 不然要理解其中的剧情还是有一定难度的, 毕竟这属于抽象派的. 话说这个有谁看完过?
telnet towel.blinkenlights.nl
下面是一些截图:

20th Fox
这个20世纪福克斯的的确很搞, - -

StarWars
Star Wars!

C-3PO & R2-D2
R2-D2 & C-3PO

Wednesday, September 10, 2008

URxvt & PyPanel & Openbox的一些配置

URxvt:
$ cat ~/.Xresources
! font
URxvt.font:xft:Bitstream Vera Sans Mono:pixelsize=13:antialias=true,
xft:WenQuanYi Zen Hei:pixelsize=13:antialias=true

! color
URxvt.foreground:#ffffff
URxvt.background:#2e3436
URxvt.color0:#2e3436
URxvt.color1:#cc0000
URxvt.color2:#4e9a06
URxvt.color3:#c4a000
URxvt.color4:#3465a4
URxvt.color5:#75507b
URxvt.color6:#06989a
URxvt.color7:#d3d7cf
URxvt.color8:#555753
URxvt.color9:#ef2929
URxvt.color10:#8ae234
URxvt.color11:#fce94f
URxvt.color12:#729fcf
URxvt.color13:#ad7fa8
URxvt.color14:#34e2e2
URxvt.color15:#eeeeec

! follow URL
URxvt.urlLauncher:firefox
URxvt.matcher.button:1
URxvt.perl-ext-common:matcher

! scrollbar
URxvt.scrollBar:True
URxvt.scrollBar_right:True
URxvt.scrollBar_floating:False
URxvt.scrollstyle:plain
URxvt.saveLines:500
PyPanel的部分配置, 只是把我修改过的贴了出来, 其它的都是默认的:
$ cat ~/.pypanelrc
#------------------------------------------------------------------------------
# Colors: Format is hex triplet - 0xrrggbb
#------------------------------------------------------------------------------
BG_COLOR = "0x000000" # Panel background and tinting color
TASK_COLOR = "0xffffff" # Normal task name color
FOCUSED_COLOR = "0x33ccff" # Focused task name color
SHADED_COLOR = "0x808080" # Shaded task name color
MINIMIZED_COLOR = "0x808080" # Minimized task name color
DESKTOP_COLOR = "0xffffff" # Desktop name color
CLOCK_COLOR = "0xffffff" # Clock text color
LINE_COLOR = "0x606060" # Vertical line color

#------------------------------------------------------------------------------
# Panel Spacing and Location Options: Measured in pixels
#------------------------------------------------------------------------------
P_LOCATION = 1 # Panel placement: 0 = top, 1 = bottom
P_WIDTH = 1400 # Panel width: 0 = Use full screen width
P_START = 20 # Starting X coordinate of the panel
P_SPACER = 0 # Spacing between panel objects
P_HEIGHT = 24 # Panel height

#------------------------------------------------------------------------------
# Panel Text Font: This option takes either a traditional or Xft font string
# Ex: "-schumacher-clean-medium-r-normal-*-12-*-*-*-*-*-*-*"
# "aquafont-8"
#------------------------------------------------------------------------------
FONT = "DejaVu Sans YuanTi-11"

#------------------------------------------------------------------------------
# Background Alpha/Shade Level: 0 (Fully Translucent) -> 255 (Fully Opaque)
# BG_COLOR is used for tinting
#------------------------------------------------------------------------------
SHADE = 255

#------------------------------------------------------------------------------
# Misc. Options: 1 = Enabled/Yes, 0 = Disabled/No
#------------------------------------------------------------------------------
ABOVE = 1 # Panel is always above other apps
APPICONS = 1 # Show application icons
AUTOHIDE = 0 # Autohide uses the CLOCK_DELAY timer above
SHADOWS = 0 # Show text shadows
SHOWLINES = 1 # Show object seperation lines
SHOWBORDER = 0 # Show a border around the panel

#------------------------------------------------------------------------------
# Panel Layout: -----------------------------------
# [ 1 ][ 2 ][ 3 ][ 4 ][ 5 ]
# -----------------------------------
#
# The panel layout is split into 5 sections numbered 1, 2, 3, 4 or 5 as shown
# in the diagram above. Each of the following objects can be enabled by
# assigning it a section number or disabled by assigning it 0:
#------------------------------------------------------------------------------
DESKTOP = 0 # Desktop name section
LAUNCHER = 0 # Application launcher section
TASKS = 3 # Task names section
TRAY = 4 # System tray section
CLOCK = 5 # Clock section
Openbox:
$ cat ~/.config/openbox/autostart.sh
#!/bin/bash

# PyPanel
if which pypanel > /dev/null; then
pypanel &
fi

# use feh to set the background
if [ -f $HOME/.fehbg ]; then
eval `cat $HOME/.fehbg` &
fi

# D-bus
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
eval `dbus-launch --sh-syntax --exit-with-session`
fi

# Make GTK apps look and behave how they were set up in the gnome config tools
if which gnome-settings-daemon >/dev/null; then
gnome-settings-daemon &
fi

# Preload stuff for KDE apps
if which start_kdeinit >/dev/null; then
LD_BIND_NOW=true start_kdeinit --new-startup +kcminit_startup &
fi

Arch Linux & Openbox

Openbox
花了两天下午折腾了下Arch和Openbox (以下简称Ob), Arch还是比较简单的, 具体安装到一些配置可以参考这篇Wiki, 那个启动速度的确很爽, 准备有时间了就把现在的电脑格了, 装上Arch.

Ob倒是花了些时间, 主要是以前对于DE和WM的区别不是很了解. 这个一定要装上ObConf, 我主要用来更换主题和更改字体. 那些菜单什么的配置, gtk主题的配置可以参考Toy的文章. panel用的是PyPanel, 稍微花了点时间配置, 主要是颜色, 对RGB不敏感啊... 用的ROX-Filer做的file manager, 这个看ee的介绍貌似很强大, 快捷键那是一套一套的, 不过还是鼠标点习惯点. 还有URxvt, 这个刚开始觉得也太难看了吧, 然后就Google了半天, 找到一些好的配置, 自己修改了一下, 主要把颜色改成GNOME中的Tango配色方案. 差不多就这些了, 我平时用的软件少, 暂时还没有遇到什么大的问题, 毕竟那是以后的事情了. 下篇会贴一些上面提到的一些软件的配置.

Tuesday, September 9, 2008

彩色man的less替代方案

今天突然想到猫猫的回帖, 于是去试了试, 的确很棒. 以前的那个用most来显示彩色man page的文章, 用了一段时间就会发现几个问题, 首先most不支持反向搜索, 也就是不能按N来反向搜索相同的关键字, 这也是我觉得最麻烦的一个地方. 其次在使用mark标记上, most不能自定义保存位置在某个寄存器上, 它只会保留一个标记点, 而且也不支持像Vim那样的使用两个单引号来在两个最近的标记点中跳转. 所以, 我换到了less, 不过今天在IRC上看到mOo说他用less查看普通文件是彩色的, 关于这个我还没找到该怎么办. 以下是修改.bashrc的部分:
# colorful man page
export PAGER="/usr/bin/less -s"
export BROWSER="$PAGER"
export LESS_TERMCAP_mb=$'\E[01;34m'
export LESS_TERMCAP_md=$'\E[01;34m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;33m'

Saturday, September 6, 2008

珍惜

今天进行了一次很诡异的谈话, 3个人, 那2个每一个对我来说都是很熟悉的人, 可我们3个在一起的时候我就不知道该干什么了. 想起暑假时和大坏、珍妮一起的时候, 也是他们两个一直在摆, 然后我在一边喝着饮料, 会不时地插上几句. 我对他们说我已经习惯这样了, 当一个安静的聆听者, 可今天又好像有点不一样, 也许是因为是兰在和另一个男生一直在那摆, 然后我又说不上什么. 他们理所当然地谈论到我, 一致的意见是我缺乏交际能力, 我嘴上没说什么, 可不免在心里念叨着. 我觉得干嘛要每个人都那样能说会道, 或者说花言巧语, 我不愿多说, 只想在热衷的技术上倾注更多的热情. 有时我也会话多, 不过一般都是在谈论技术的时候. 都说21世纪需要复合型人才, 看来我就是典型的不合格者了, 都不知道自己有时候太geek了是否是好事. 大家都是追求了钱才去追求精神上的提升, 而我不想在精神上堕落着. 以前对小马说我活着不是为了钱, 她有点不屑, 现在的我还是可以坚定地说出这句话, 不过钱这个字在我心中的比重的确比以前大了. 我不想让兰受苦, 她已经受够了, 如果继续在我身上延续的话, 那我只会成为又一个伤害她的人. 晚上兰给我发了条短信, 她说我给了别人不能给的东西. 我应该学着怎样更好地珍惜一个人了.

Saturday, August 30, 2008

C++学习笔记(十) -- 通过多态访问私有成员

// -1156203886

#include <iostream>

using namespace std;

class Base
{
public:
virtual ~Base() {}

virtual void debugPrint() const
{
cout << "in Base" << endl;
}
};

class Derived : public Base
{
private:
void debugPrint() const
{
cout << "in Derived" << endl;
}
};

int main()
{
Base* aPo = new Derived();

aPo->debugPrint();

return 0;
}
以上代码的输出结果为"in Derived", 最开始我一直想不通为什么可以在类的外部访问一个私有成员函数, 经过一番搜索以后, 知道了原因.

这段代码的问题在于, 编译时是不会有错误的, 因为那个指针的静态类型是指向基类的对象的, 而基类中的虚函数是public的, 可以直接在外部访问, 这在编译器看来是没有一点错误的. 然而动态绑定却是在实际运行时, 这时候指针就转到子类里了, 它不会判断这个成员到底是私有还是公有的, 所以就输出了上面的结果. 有人把这看成是C++的一个bug, 也有人认为这符合OO的思想, 向类的用户隐藏了细节, 唯一不对的是这样的编程风格.

Friday, August 29, 2008

Sunday, August 24, 2008

几款修改音频tag的小软件

今天试用了几个用来修改音频tag的软件, 这里记录了一点心得.

1. mid3v2
这是一个在终端下运行的小软件, 安装方法是:
sudo apt-get install python-mutagen
使用方法:
$ mid3v2 -a 陈绮贞 -A 失败者的飞翔 -t 失败者的飞翔 失败者的飞翔.mp3

2. Ex Falso
这是以GTK+作为前端的软件, 因为图形化的界面, 所以操作会相对mid3v2简便一些, 同时这个软件也支持多个文件修改为相同的tag.
sudo apt-get install exfalso
这是界面截图:
Ex Falso
综上, 这些全都是专门用来修改tag信息的, 当然, 一些播放器也有这个功能, 比如Audacious. 而且清一色的Python, 看来我暂时是用不上了, 还是先去学点原理吧.

Saturday, August 23, 2008

配置LaTeX & XeTeX & AUCTeX

这几天折腾了一下LaTeX, 对于其中的概念也有了一些了解. 这篇日志主要是说下在Ubuntu 8.04下配置LaTeX+XeTeX环境的过程, 还有Emacs里的AUCTeX的配置.

  1. 首先是LaTeX与XeTeX的安装
  2. $ sudo apt-get install texlive texlive-latex-extra texlive-xetex lmodern

    当时为了安装最新的XeTeX, 花了很多时间在编译安装上, 最后只弄好一个半成品, 无法使用. 于是决定舍弃zhspacing宏包, 直接装了源里的XeTeX.

    经过以上步骤后, 应该就可以正常编译TeX文件了, 用XeTeX调整字体也很爽. 如果你也使用Emacs来编辑TeX文件的话, 那么一定要安上AUCTeX这个扩展, 下面是一些配置详情.

  3. AUCTeX
  4. $ sudo apt-get install auctex

    安装好以后, 重点是配置.emacs文件, 因为AUCTeX本身是不支持通过xelatex编译的.
    ;; AUCTeX
    (defun auctex ()
      (add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t; %`xelatex%(mode)%' %t" TeX-run-TeX nil t)) ;; 这里我编译了两次
        (setq TeX-command-default "XeLaTeX") ;; 设定默认编译命令为XeLaTeX
        (setq TeX-save-query nil)            ;; 保存之前不询问
        (setq TeX-show-compilation t))       ;; 在新窗口显示编译过程
    (add-hook 'LaTeX-mode-hook 'auctex)
    
    (custom-set-variables
     '(TeX-output-view-style (quote (("^dvi$nnnnnnn" ("^landscape$" "^pstricks$\\|^pst-\\|^psfrag$") "%(o?)dvips -t landscape %d -o && gv %f") ("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$" "%(o?)dvips %d -o && gv %f") ("^dvi$" ("^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "^landscape$") "%(o?)xdvi %dS -paper a4r -s 0 %d") ("^dvi$" "^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "%(o?)xdvi %dS -paper a4 %d") ("^dvi$" ("^a5\\(?:comb\\|paper\\)$" "^landscape$") "%(o?)xdvi %dS -paper a5r -s 0 %d") ("^dvi$" "^a5\\(?:comb\\|paper\\)$" "%(o?)xdvi %dS -paper a5 %d") ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d") ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d") ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d") ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d") ("^dvi$" "." "%(o?)xdvi %dS %d") ("^pdf$" "." "acroread %o %(outpage)") ("^html?$" "." "netscape %o")))))
    最后那个有点长, 主要是没有找到合适的方法像添加XeLaTeX一样只需要写新增的条目, 所以这里就把原有的和修改以后的都写了出来. 其实只改了一个地方, 已经用红色标注出来了, 就是在使用C-c C-v预览PDF文件的时候使用什么软件来打开. 我这里就是acroread, 你用的其它的话, 可以相应修改.

    这样修改好以后, 以后就可以直接使用C-c C-c编译, C-c C-v预览, C-c `在错误间跳转了.

    8月5日更新:
    如果不是用的源安装的LaTeX, 比如我为了用上最新版的XeTeX, 就选择单独安装TeX Live. 这时再用源安装AUCTeX的时候, 会因为依赖关系而又把源里的LaTeX相关包给装上, 囧

    不过幸运的是这并不会与TeX Live冲突, 原因在于:
    $ echo $PATH
    /home/xiaogaozi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    嘿嘿, 我的TeX Live的可执行文件都放在了/usr/local/bin里, 而源里安装的放在了/usr/bin, 自然优先级不同啦~

    但是TeX Live中的install-info文件会导致源安装AUCTeX的时候失败, 所以如果是先安装的TeX Live, 再安装AUCTeX, 就需要先把TeX Live的install-info"消灭"掉:
    $ sudo mv /usr/local/bin/install-info /usr/local/bin/install-info.bak

附上我的TeX文件模板, 很杂, 也许有的在article上能用上, 而有的则只能在book上用上.

\documentclass[adobefonts]{ctexart}

\CTEXoptions[captiondelimiter={\quad}]

\usepackage{amsmath}            % AMS的数学宏包
\usepackage{amssymb}            % AMS的数学符号宏包
\usepackage{graphicx}           % 插入图片需要的宏包
\usepackage{float}              % 强大的浮动环境控制宏包
\usepackage{framed}             % `shaded'环境需要用到
\usepackage{enumitem}           % 增强列表功能
\usepackage{alltt}              % 在`alltt'环境中为等宽字体, 但可以使用LaTeX命令

% \usepackage{shortvrb}           % 简化\verb的写法
% \MakeShortVerb{\|}

\usepackage{color}              % 可以定义各种颜色
\usepackage[x11names]{xcolor}   % 下面的RoyalBlue3颜色需要用到的宏包
% 自定义的几种颜色
\definecolor{shadecolor}{gray}{0.85}
% \definecolor{darkblue}{rgb}{52,101,164}
% \definecolor{darkgreen}{rgb}{78,154,6}

% % 设置背景颜色
% \definecolor{bisque}{rgb}{.996,.891,.755}
% \pagecolor{bisque}

\usepackage[pdfauthor={Dreamseeker},
            pdftitle={For Alist},
            colorlinks=true,
            urlcolor=blue,
            linkcolor=RoyalBlue3]{hyperref} % 为超链接设置颜色, 修改PDF文件信息

\title{\textbf{For Alist}}
\author{Dreamseeker}
% \date{}

\usepackage[pagestyles]{titlesec} % 定制页眉页脚
% % 设置页眉页脚
% \newpagestyle{main}{%
%   \sethead[$\cdot$~\thepage~$\cdot$][][\thesection\quad%
%   \sectiontitle]{\thesection\quad\sectiontitle}{}{%
%   $\cdot$~\thepage~$\cdot$}
%   \setfoot{}{}{}\headrule}
% \pagestyle{main}
% \renewpagestyle{plain}{\sethead{}{}{}\setfoot{}{}{}}
\pagestyle{plain}

\usepackage[top=1in,bottom=1in,left=1.25in,right=1.25in]{geometry} % 设置页边距

\setlength{\belowcaptionskip}{1em} % 设置caption之后的距离

% XeTeX logo
\def\XeTeX{\leavevmode
\setbox0=\hbox{X\lower.5ex\hbox{\kern-.15em\reflectbox{E}}\kern-.1667em
\TeX}%
\dp0=0pt\ht0=0pt\box0}

% For LaN
\newcommand{\LaN}{L{\scriptsize\hspace{-0.47em}\raisebox{0.23em}{A}}\hspace{-0.1em}N}

\begin{document}

\maketitle

\tableofcontents
\newpage

\end{document}

另外推荐下好用的LaTeX, XeTeX入门文档:

  1. The (Not So) Short Introduction to LaTeX2e, 一个比较全面的文档, 是一个老外写的, CTeX论坛翻译的在这里下载, 版本相对老一点. 我刚开始看的就是这个, 觉得还是要边看边动手, 而且要勤动手, 毕竟说全面, 也只是相对下面两个文档的, 对于初学者来说, 里面很多讲得也不是很详细的, 毕竟这些都是比较短小的文档. 因为是老外写的, 所以看完以后你还是不会知道怎样在文档中输出中文.

  2. LaTeX Notes, 清华的一个老师写的LaTeX笔记, 比较务实地将经常用到的命令都讲了出来, 而且内容整体上比上一个新, 所以上一个主要是用来掌握基础, 看完你基本上可以写一个格式和这个PDF差不多的文章了. 最后还专门讲了一下中文化的一些内容, 不过现在用XeTeX了, 也基本上用不上了, 回顾下历史也是不错的.
    P.S. 文中古诗无数, 附精美照片一张.

  3. XeTeX/LaTeX中文排版之胡言乱语, 这个作为了我的XeTeX入门教程, 其实XeTeX的主要学习的地方还是在导言区. 这是一个很短小的文档, 总共只有7页, 对于提高排版质量有一定用处.

Saturday, August 16, 2008

C++学习笔记(八) -- cin状态错误造成的死循环

int i;
while (1)
{
cout << "input a number: ";
cin >> i;
if(cin && i >= 0 && i <= 100)
break;
else
{
cin.clear();
cout << "error" << endl;
}
}
上面这段代码中, 在要求输入i的地方, 如果输入了非数字, 就会造成死循环. 具体原因在于非数字字符仍然保留在缓冲区中, 所以当下一次cin读取的时候, 就直接从缓冲区中读取, 这样一直循环, 每次都是读取的非数字字符, 造成了死循环. 修改else里面的语句为:
else
{
cin.clear();
cin.ignore(1024, '\n');
cout << "error" << endl;
}
ignore()的作用主要是从缓冲区中取字符并丢弃, 就起到了刷新缓冲区的作用.

Friday, August 15, 2008

Emacs和Vim中将tab转化为空格

Emacs:
在.emacs中添加:
(setq-default indent-tabs-mode nil)
对于已经保存好的文件, 可以选中需要转化的区域, 然后:
M-x untabify

Vim:
在.vimrc中添加:
set expandtab
对于已经保存好的文件, 可以选中需要转化的区域, 然后:
:retab

笑笑

笑笑走的时候告诉我: 如果想我了, 就默念我的名字吧. 现在的我正努力地默念着, 她能听到吗? 我们仿佛处在了两个世界, 笑笑看不到我, 我也看不到她.

如果你已经不能控制
每天想我一次
如果你因为我而诚实

如果你看我的电影
听我爱的CD
如果我能带你一起旅行

如果你决定跟随感觉
为爱勇敢一次
如果你说我们有彼此

如果你会开始相信
这般恋爱心情
如果你能给我如果的事

Wednesday, August 13, 2008

使用less查看压缩文件的内容

今天在IRC上看到ee说的, 就试了下, 果然可以, 不管gz, bz2, zip, rar都可以, 真是舒服~

Saturday, August 9, 2008

今天体验了一下w3m

w3m
Adobe的Flash插件在Linux上的表现实在是差, 直接导致上新浪这类类似的大型门户时, CPU轻轻松松就接近100%. 以前没有看门户的习惯, 这几天奥运了, 想上去看点新闻, 无奈太高的CPU占用率使得打开一个网页需要极强的耐心和信心. 于是请出以前就听说过的w3m, 反正我也只是想看点文字, 那上面的图片啊, 视频啊什么的, 都不大感兴趣. 用起来还是很简单的, 没有想象中的那么难使用, 不过那里面的键绑定实在是多, 选了几个常用的:
h, j, k, l
这几个和Vim中的一样, 移动光标

C-t
在新标签中打开链接

C-q
关闭当前标签

{
前一个标签

}
后一个标签

C-v
下一页

b
上一页

q
退出

o
设置w3m的选项

H
帮助

Tuesday, August 5, 2008

crash

失敗者的飛翔
一瞬间的我变得那么无助, 只能感受到背后的阳光和前方消失的背影. 我呆呆地望着头顶悬停的蜻蜓, 似乎一切都正在离我远去. 胸腔内好像有什么东西没有密封好, 渗透了那么一点酸酸的液体在我的血管中回环. 我凭什么拥有爱一个人的权力...

Wednesday, July 30, 2008

GNOME下修改KDE程序的字体

修改~/.kde/share/config/kdeglobals, 添加:
[General]
XftHintStyle=hintmedium
StandardFont=DejaVu Sans YuanTi,9,-1,5,50,0,0,0,0,0
activeFont=DejaVu Sans YuanTi,9,-1,5,50,0,0,0,0,0
fixed=Bitstream Vera Sans Mono,9,-1,5,50,0,0,0,0,0
font=DejaVu Sans YuanTi,9,-1,5,50,0,0,0,0,0
menuFont=DejaVu Sans YuanTi,9,-1,5,50,0,0,0,0,0
taskbarFont=DejaVu Sans YuanTi,9,-1,5,50,0,0,0,0,0
toolbarFont=DejaVu Sans YuanTi,9,-1,5,50,0,0,0,0,0

将光盘提取为iso文件

第一种方法:
dd if=/dev/cdrom of=filename.iso

第二种方法:
cp /dev/cdrom filename.iso

Wednesday, July 23, 2008

MPlayer有声音没图像的解决

看来又是A卡惹的祸, 修改~/.mplayer/config文件, 添加
vo=sdl
在我的机器上就可以了, 至于vo的其它参数可以参见MPlayer视频输出驱动.

Tuesday, July 22, 2008

MLDonkey自动退出的解决办法

今天在一台AMD64的机子上把MLDonkey弄好, 结果打开几分钟以后, 程序就因出现段错误而自动退出, 重复试了几次都是这样, 后来在参考了http://forum.ubuntu.org.cn/viewtopic.php?t=127651&postdays=0&postorder=asc&start=0这个帖子后解决了问题.

首先将原有的MLDonkey删除, 然后到http://sourceforge.net/project/showfiles.php?group_id=156414这里下载MLDonkey.
1. ./configure --enable-ocamlver=3.10.2 # 如果你没有安装OCaml 3.10.2, 那么中途会有一个询问是否去网上下载并安装, y即可
2. make
3. 这里不需要执行sudo make install了, 执行sudo cp mlnet /usr/bin
P.S. MLDonkey的编译真先进, 用着就一个感觉: 爽, 差不多和apt一样智能了.

Thursday, July 17, 2008

Wednesday, July 16, 2008

亲爱的Vi$ta, 我重百你

最近买了一个USB的键盘用来接在本本上用, 哪想在Ubuntu下用的好好的, 到了伟大的Vi$ta下却一点反应都没有, 还以为是键盘的问题, 设备管理器里面居然是未知设备! 经过多方搜索, 终于找到解决方法, 在设备管理器里面选择手动安装驱动, 路径定位到C:\Window$\win$x$就可以了, 千万不要用那什么自动获取, 用那个只有失败.

另附上名言警句一句: 外事不决问Google, 内事不决问百度.

Sunday, July 6, 2008

snapshot

果蝇
已经记不请这是谁的试卷了, 分裂间期, 分裂前期, 分裂中期, 分裂后期, 分裂末期, 第一次, 第二次...

4

Saturday, July 5, 2008

彩色man

转自: http://forum.ubuntu.org.cn/viewtopic.php?t=117838

man

sudo apt-get install most
创建.mostrc
$ cat ~/.mostrc
% Color settings

color normal lightgray black
color status yellow blue
color underline yellow black
color overstrike brightblue black


% less-like keybindings

unsetkey "^K"
unsetkey "g"
unsetkey "G"
unsetkey ":"

setkey next_file ":n"
setkey find_file ":e"
setkey next_file ":p"
setkey toggle_options ":o"
setkey toggle_case ":c"
setkey delete_file ":d"
setkey exit ":q"

setkey bob "g"
setkey eob "G"
setkey down "e"
setkey down "E"
setkey down "j"
setkey down "^N"
setkey up "y"
setkey up "^Y"
setkey up "k"
setkey up "^P"
setkey up "^K"
setkey page_down "f"
setkey page_down "^F"
setkey page_up "b"
setkey page_up "^B"
setkey other_window "z"
setkey other_window "w"
setkey search_backward "?"
setkey bob "p"
setkey goto_mark "'"
setkey find_file "E"
setkey edit "v"
修改.bashrc
# most
export PAGER='/usr/bin/most -s'
export BROWSER='/usr/bin/most -s'

Thursday, July 3, 2008

Game: Help 小明.

小明初学 C 语言,写了个程序,想打印 99 个 '#'. 程序如下:

int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

但是这个程序是错的.

Question 1: 请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
Question 2: 同样的限制条件, 使得只打印一个 '#'
Qeustion 3: 同样的限制条件, 打印 100 个 '#'


------------ DONT SPOIL THE FUN ---------------
---- 华丽的分界线, 请大家确保对上述每个问题思考 10 分钟再往下看 ----

















































































































































Question 4: 请大家用自己喜爱的 scripting language 编个程序来解决以上 3 问

Monday, June 30, 2008

呼叫转移

make

原来make也有呼叫转移的功能...

Vim的diff模式常用命令

:diffsplit {filename}
进入diff模式, 默认是水平分割, 但我比较喜欢垂直分割, 可以在.vimrc中添加set diffopt=vertical

[c & ]c
在差异的部分进行跳转

:diffget
用另一个缓冲区来修改当前缓冲区, 消除不同之处, 仅对光标所在行附近有影响

:diffput
用当前缓冲区来修改另一个缓冲区, 消除不同之处, 仅对光标所在行附近有影响

:diffupdate
刷新

C++学习笔记(七) -- 虚继承中的初始化

在虚派生中, 由最低层派生类的构造函数初始化虚基类. 无论虚基类出现在继承层次中任何地方, 总是在构造非虚基类之前构造虚基类.

from: 《C++ Primer》(第四版)

Saturday, June 28, 2008

Vimfox

Vimperator

这几天在网上看很多大段的内容, 又懒得去碰鼠标的滚轮, 于是就想只依托键盘来滚动页面, 但那几个方向键按起来是非常得不爽, 滚动一点都不平滑, 再加上Vim也用习惯了, 就去整了这么一个插件.

好了, 现在向大家隆重推出史上最牛X的插件--Vimperator
使用甚是简单, 请参阅:help

C++学习笔记(六) -- 继承中的重载

C++中不允许重载基类中的函数, Java中可以. 原因在于, C++中基类与派生类的作用域不同, 通过派生类的对象调用与基类中同名的函数时, 编译器只会在派生类中寻找该函数, 若函数参数不匹配, 则会发生编译错误. 如需重载, 可以在派生类中使用using声明扩展基类中函数的作用域.

Friday, June 27, 2008

Thursday, June 26, 2008

彩蛋收集计划 II

Ubuntu
彩蛋-01

彩蛋-02

彩蛋-03
Alt+F2: free the fish

彩蛋-04
Alt+F2: gegls from outer space

彩蛋-05

彩蛋-06

彩蛋-11
apt-get --help

OpenOffice
彩蛋-07
彩蛋-08
在Calc的单元格中输入: =Game("StarWars")

Firefox
彩蛋-09

彩蛋-10

Tuesday, June 24, 2008

果冻

爱心果冻-01
某人的爱心果冻, 上面还有我的牙印.

爱心果冻-02
看来某人以后不能单独食用了

Monday, June 23, 2008

大·海

大海
昨天在学校里突然听到了《大·海》的插曲, 吉田洁的日本人はるかな旅中的那首Tvエンディングテーマ, 不知是不是刚刚才见了兰的关系, 我又感到了当初听到这个插曲的感觉, 1分48秒那个宏大的转折, 就像听龙猫, 听天空之城, 听久石让, 我会想要闭上眼睛, 感觉全身的毛孔都在呼吸, 一种莫名的亢奋.

期待《大·海》

Saturday, June 21, 2008

让Pidgin聊天发送消息使用Ctrl+Enter

修改~/.gtkrc-2.0文件, 如果没有, 则手动创建一个.
binding "my-bindings"
{
  bind "Return" { "insert-at-cursor" ("\n") }
  bind "<ctrl>Return" { "message_send" () }
}
widget "*pidgin_conv_entry" binding "my-bindings"

Saturday, June 14, 2008

在Window$中使用Vim的taglist插件

1. 到这里下载ctags, 然后解压到任意非中文路径目录, 推荐根目录, 这样在后面修改_vimrc文件时也会方便些.
2. 在_vimrc文件中添加
let Tlist_Ctags_Cmd = 'D:\ctags\ctags.exe'
3. 下载taglist, 放到$VIM/vim71/plugin中.
4. 在Vim中输入:Tlist就可打开taglist.

不过我发现在Window$中不能使用taglist来浏览包含在中文路径中的源文件, 也不知这是为什么.

Friday, June 13, 2008

纪念日

FK

Emacs中文字体调整

一直尝试想让Emacs用上文泉驿正黑的矢量字体, 可一直就没成功过, 于是最后认定文泉驿正黑暂时还不支持在Emacs中的显示, 就又去找了zhuqin的史上最伪合成字体——DejaVu Sans YuanTi, 修改.emacs文件, 搞定.
(set-fontset-font (frame-parameter nil 'font)
  'unicode '("DejaVu Sans YuanTi" . "unicode-bmp"))

Thursday, June 12, 2008

使用JDEE编译时报错不支持现有Java版本的解决办法

当刚刚安装完JDEE, 如果没有做任何设置, 那么当编译Java文件时JDEE会显示一个错误, 说不支持现在的Java版本, 具体的解决办法是:
xiaogaozi@LAN:~$ java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)
记下其中的版本号, 然后在Emacs中执行
M-x costomize-variable <RET> jde-jdk-registry
将其中的Version项修改为刚才记下的版本号就行了.

Wednesday, June 11, 2008

Emacs 常用命令 (持续更新)

C-x C-f
打开文件

C-x C-s
保存, 输入"!"保存所有缓冲区

C-x d
Emacs中的目录管理, 类似Vim的":e .", 下面是一些常用命令:
^访问目录的父目录
q退出缓冲
R重命名
D删除文件
C-x C-f创建文件
+创建目录
g刷新缓冲所有文件 (这很有用, 当你新建了文件以后, 需要手动刷新)


C-@
用来作为一个选定区域的开始标记, 由于对于现在的键盘来说, 要按出这个组合键实在是很麻烦, 在Emacs中文站上找到一行.emacs的配置, 把这个组合键替换成了C-x <SPC>, 但是因为这个组合键同GDB的设置断点的组合键冲突, 于是我稍微修改了一下:
;; Replace `C-@' to `C-^'.
(global-set-key (kbd "C-^") 'set-mark-command)


M-w
复制选定的文本, 这里有一个简单的Emacs Lisp函数可以实现当没有选定任何本文的时候, 使用M-w来选定一行文本:
;; Make `M-w' can copy a line.
(defun xiaogaozi-kill-ring-save (&optional n)
  "If region is active, copy region. Otherwise, copy line."
  (interactive "p")
  (if mark-active
      (kill-ring-save (region-beginning) (region-end))
    (if (> n 0)
        (kill-ring-save (line-beginning-position) (line-end-position n))
      (kill-ring-save (line-beginning-position n) (line-end-position)))))
(global-set-key (kbd "M-w") 'xiaogaozi-kill-ring-save)


C-x h
选定整个缓冲区

C-w
剪切选定的文本

C-y
粘贴

C-/
撤销

C-x r k
剪切选定的矩形区域

C-x r y
粘贴

C-x r t STRING <RET>
替换选定矩形区域

C-x r o
在选定矩形区域前插入一个空格

C-x r M-w
复制选定的矩形区域, 但这需要插件的支持, 可以在这里下载rect-mark.el, 然后修改.emacs文件:
;; rect-mark.el
;; Support for marking a rectangle of text with highlighting.
(define-key ctl-x-map "r\C-@" 'rm-set-mark)
(define-key ctl-x-map [?r ?\C-\ ] 'rm-set-mark)
(define-key ctl-x-map "r\C-x" 'rm-exchange-point-and-mark)
(define-key ctl-x-map "r\C-w" 'rm-kill-region)
(define-key ctl-x-map "r\M-w" 'rm-kill-ring-save)
(define-key global-map [S-down-mouse-1] 'rm-mouse-drag-region)
(autoload 'rm-set-mark "rect-mark"
  "Set mark for rectangle." t)
(autoload 'rm-exchange-point-and-mark "rect-mark"
  "Exchange point and mark for rectangle." t)
(autoload 'rm-kill-region "rect-mark"
  "Kill a rectangular region and save it in the kill ring." t)
(autoload 'rm-kill-ring-save "rect-mark"
  "Copy a rectangular region to the kill ring." t)
(autoload 'rm-mouse-drag-region "rect-mark"
  "Drag out a rectangular region with the mouse." t)


C-x r <SPC> X
保存当前光标位置到寄存器X

C-x r j X
跳转到寄存器X存储的位置

C-x r s X
保存选定区域到寄存器X

C-x r i X
插入寄存器X中保存的内容

M-% STRING <RET> NEWSTRING <RET>
普通的查找替换, 选定特定区域之后就只会在其中查找.

C-M-% REGEXP <RET> NEWSTRING <RET>
支持正则表达式的查找替换, 其余同上.

C-M-n
跳转到下一个匹配的括号

C-M-p
跳转到上一个匹配的括号

M-g M-g
跳转到指定行

M-;
多行注释, 如果没有选中任何区域, 则在当前行尾添加注释.

C-M-\
多行缩进

Tuesday, June 10, 2008

ng

今天才发现原来一直以来用得最多的一个字"嗯"的拼音居然是ng, 以前一直都打成en的, 唉, 浅薄了, 还专门去翻了一下词典, 果然是ng, 而且有三种声调, 分别是二声, 三声和四声. en的读音里只有这个"恩", 看来还是SCIM的智能拼音强大, 以前都错怪它了, 现在看来只有它最规范, 什么XX拼音的就不说了.

Vim 常用命令 (持续更新)

"+x
剪切

"+y
复制

"+gP
粘贴

:ls
列出缓冲区列表

:buffer #
打开相应缓冲区号中的文件

:bnext
:bprevious
:bfirst
:blast


:pwd
显示当前目录

:cd 目录名
改变当前目录

:e 文件名
在当前目录创建文件

:wa
保存所有已经命名的缓冲区

:e .
打开目录列表, 这个插件很神奇, 很强大, 这里有几个常用的命令:
- 访问目录的父目录
c 将你浏览的目录设为当前目录
R 为文件重命名
D 删除文件
d 建立新目录
<c-l> 刷新列表

在头文件上输入gf命令, Vim会寻找并打开文件, 如果该头文件不在此目录中, 则可以通过
:set path+=目录名
的方式添加需要查找的路径.

m{a-zA-Z}
在当前光标位置设置标记, 若是大写字母则是跨文件标记.

'{a-zA-Z}
跳转到相应标记的位置


'' 注意: 这是两个单引号
可以在两个最近的跳转位置中来回跳转

"xy
抽取选定文本到寄存器x

"xp
将寄存器x中的内容放到当前光标之后

:reg
显示所有编号和命名寄存器的内容

=
多行缩进

替换块
CTRL-V选定块后, 按c输入替换文本, 然后<Esc>

[[ & ]]
这会跳到上一个或是下一个在第一列的{, 如果你的代码风格是函数块开头的{都是单独占据一行的话, 那么这个命令就可以在所有函数块间跳转了.

gd
将光标放在某变量上, 可以使用这个命令跳转到定义该变量的位置.

Sunday, June 8, 2008

使用WAMP搭建本地服务器

最近在编动态网页, 需要首先搭建一个本地服务器作为测试场所, 以下是一些基本的设置.

1. Apache
安装很简单, 一路next, 到需要填网址那一步时, 全部写成localhost. 安装完以后需要修改配置文件.
$ cat httpd.conf
DocumentRoot 修改为网站的主目录

同时添加
<Directory "网站主目录">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

2. PHP
安装时记得把MySQL的模块支持选上. 如果你不是将Apache安装在默认的安装路径, 那么在安装结束时会有一个错误提示, 提示你需要手动去修改httpd.conf文件, 但经过我的测试, 不需要修改.

3. MySQL
安装同样很简单, 完毕后运行设置向导, 几乎可以按默认的设置配置.

P.S. 我在使用时曾经遇到过一个错误, 显示为
Can't connect to MySQL server on 'localhost' (10061)
在网上搜寻很久都没有找到解决办法, 最后干脆把MySQL重装了一遍, 结果这个错误神奇地消失了, 于是我觉得最好先安PHP, 再安MySQL.

Friday, June 6, 2008

神奇的 static

术语"static"有一段不寻常的历史. 起初, C引入关键字static是为了表示退出一个块后依然存在的局部变量. 在这种情况下, 术语"static"是有意义的: 变量一直存在, 当再次进入该块时, 仍然存在. 随后, static在C中有了第二种含义, 表示不能被其他文件访问的全局变量和函数. 为了避免引入一个新的关键字, 关键字static被重用了. 最后, C++第三次重用了这个关键字, 与前面赋予的含义完全不一样, 这里将其解释为: 属于类且不属于类对象的变量和函数. 这个含义与Java相同.

from: 《Java2核心技术 卷I: 基础知识》(第7版) P111

Monday, June 2, 2008

The Matrix

The Matrix
很显然, 这不是一部伟大的电影, 导演把大部分的时间都放在展现无与伦比的特效上了, 而那个本身就不是很明确的主题则显得可有可无.

在这部电影中我个人比较喜欢的是背景环境的设定, 除了这个带有强烈科幻色彩的故事背景外, 其余的都是好莱坞惯有的情节了, 随便找一部来都会跟这部3部曲差不多, 恐怕唯一的区别是这部电影很长. 如果你确实想看特效, 那我推荐你去看星战.

故事的时间发生在未来, 二零几几年我忘了, 人类成功发明人工智能(AI), 使得机器人有了很高的智慧. 然后由于某个未知的原因, 机器人开始统治人类, 人类开始生活在由Matrix创造的虚拟世界中生活, 而全然不知. 他们的原始身体插满了信号传输线, 整天泡在营养池里, 思想却以为自己正在地球的某个角落或快乐, 或痛苦地生活着, 全人类都被放在了像上面那张图中一样的高楼里, 过着被Matrix麻醉的寄生生活.

然后的然后, 就是一群醒来的人类开始反抗, 追寻自由.

Sunday, June 1, 2008

C++学习笔记(五) -- inline函数

编译器隐式地将在类内定义的成员函数当作内联函数.

Web 是神通广大的

今天很郁闷, 到网上到处收刮Window$下的网页制作软件, 找到一个Amaya, W3C出品, 我得承认这个软件对于现在的我来说确实是太难用了, 虽然它有所见即所得功能, 不知道W3C的大牛们都是怎么使用的. 还有一个KompoZer, 这个软件的使用也不是很方便, 主要是不习惯, 我比较喜欢像Bluefish那样可以在代码层上帮助你的软件, 毕竟我也只是个新手.

说实话, 就我现在的水平, 想要制作一个漂亮的网站也只能是Ctrl+C, 再Ctrl+V, 关于语言的知识实在是匮乏, 我对那啥实训已经没什么兴趣了, 无非又是一次重复的过程, 没有学到真正的知识, 以后面临的就是巨大的困难, 那种模仿秀, 或者说抄袭式的制作真的意义不大. 程序需要融入自己的灵魂, 其它事情也是, 否则剩下的就只有空洞与空虚, 由一行行毫无感情的字母堆砌着.

好好学电脑! 好好学Web!

Friday, May 30, 2008

真实

9点47分的操场, 有安静, 有和煦的阳光, 有香甜的微风, 我决定让她出来晒晒太阳, 这一切多么得不真实, 在这个纷纷扰扰的世界, 又有什么是真实的? 有人能告诉我答案吗? Help, help, help me!

Thursday, May 29, 2008

"什么叫做爱情?"

正方观点: 承诺是可以瞎说的, 誓言是可以胡扯的, 我爱你是可以说着玩的, 钱是不能没有的.

反方观点: (沉默是金)

正方大便: 请问反方一辩, 恋爱是为了满足生理需求, 还是心理需求呢?

反方一辩: 未来需求.

正方二便: 请问对方辩友, 两个人相爱最需要什么呢?

反方二辩: 两颗心.

正方三便: 我抗议! 反方辩友连问题都不提一个, 让我去网上找的那么多资料一点都用不上.

反方三辩: 请问f-u-c-k是什么意思?

"现在请双方做最后总结陈词"

正方死便: 综上所述, 我方的观点是爱情七十二计, 就是一场游戏, 谢谢~

反方四辩: 拉巫是埃文斯, 萌妮是希特.

"最后的结果是"

"正方获胜!!!"

"请听各位评委的发言"

评委甲: 反方就是一群傻逼, 鉴定完毕.

评委乙: 正方就是一群天才, 绝对顺应时代发展, 鉴定完毕.

评委丙: 现在很流行"耍"朋友.

...

评委癸: 人之初, 性本善.

"感谢各位收看此次我辩我辩我辩辩辩论赛"

Wednesday, May 28, 2008

很可耻地睡过鸟

当我还在很舒服地做着美梦时, 突然听到了你的声音, 然后我就醒了, 才发现已经7点59了. 不管了, 直接从床上跳下来, 以神一样的速度, 花了8分钟时间从起床到7号楼, 才发现原来你已经下来了. 带着深深歉意的我开心地过完了这一天, 我忏悔...

- -! 强大的 Air


原来笔记本是可以用来杀人的

Monday, May 26, 2008

mylove

xiaogaozi@LAN:~$ sudo apt-get install mylove
[sudo] password for xiaogaozi:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
读取状态信息... 完成
E: 无法找到软件包 mylove

Flash 显示中文为方格的解决办法

$ sudo vim /etc/fonts/conf.d/49-sansserif.conf
修改最后一个<string>对中的"sans-serif"为"WenQuanYi Zen Hei", 重启浏览器即可.


BY-NC-SA署名-非商业性使用-相同方式共享

Sunday, May 25, 2008

C++学习笔记(四) -- 头文件包含定义

对于头文件不应该含有定义这一规则, 有三个例外. 头文件可以定义类、值在编译时就已知道的 const 对象和 inline 函数. 这些实体可在多个源文件中定义, 只要每个源文件中的定义是相同的.

from: 《C++ Primer》(第四版) P59

还是会寂寞


词、曲: 陈绮贞

早已忘了想你的滋味是什么 因为每分每秒都被你占据在心中
你的一举一动牵扯在我生活的隙缝 谁能告诉我 离开你的我 会有多自由

也曾想过躲进别人温暖的怀中 可是这么一来就一点意义也没有
我的高尚情操一直不断提醒着我 离开你的我 不论过多久 还是会寂寞

别对我小心翼翼 别让我看轻你 跟着我 勇敢地走下去
别劝我回心转意 这不是廉价的爱情 看着我 对我说真爱我

神经漫游者

2小时59分前, 我感觉压抑, 还没有从那个充满肮脏的社会中脱离, 它让我怀疑在这个世界上, 到底还有什么美好的东西存在. 人与人之间的确是有很多不同的, 那种思想上的划分也许是永远也改变不了的. 一个离奇的故事, 一个离奇的电影, 我会笑, 是因为主人公的神经质, 但我不知道这是在表达什么. 要说暴力、血腥, 或者性, 我想这不算什么, 至少它还没有像《发条橙子》那样一直充斥着, 到底谁该可怜, 谁该嘲讽, 谁该去死.

2小时39分前, 我回到现实, 我相信爱, 相信梦想, 相信这美好的一切. 我想, 我听到了到现在为止最温暖的话语.

Saturday, May 24, 2008

C++学习笔记(三) -- cin的布尔值

关于 cin 的布尔值的确定:
首先 cin 是 istream 类的一个对象, 而 istream 类继承于 ios_base 类, 于是 ios_base 的状态决定了 cin 为 true 或者 false.

ios_base 类中有四个状态标志 (state flag), 分别是: eofbit, failbit, badbit, goodbit. 当前三个标志的值为0, 即为 false 时, goodbit 为 true. 这就决定了 cin 为 true 还是 flase.

VirtualBox 安装完毕后的一些设置


最近在玩虚拟机, 不收费的里面, 也就VirtualBox最简单, 但安装完毕后我们还得进行一些必要的设置, 不过如果你安装的是Window$版, 以下步骤可以省略.

  1. 将当前用户添加进vboxusers群组. 这是最基本的一个设置, 否则你连虚拟机都启动不了.

  2. $ sudo usermod -a -G vboxusers `whoami`

  3. 解决VirtualBox访问USB子系统失败

    • 首先建立usbfs群组
      $ sudo groupadd usbfs
    • 然后将当前用户添加进usbfs群组
      $ sudo usermod -a -G usbfs `whoami`
    • 获取usbfs群组的GID
      $ cat /etc/group | grep "usbfs"
      比如在我的机器上显示的是
      usbfs:x:1001:xiaogaozi
      那么usbfs的GID就是1001
    • 修改/etc/fstab文件
      $ sudo vim /etc/fstab
      在末尾添加
      none            /proc/bus/usb   usbfs   devgid=<yourgid>,devmode=664 0 0
    • 重启

    P.S. 有人说 OSE (Open Source Edition) 不支持USB, 没试过, 也不知正确与否.

  4. 对于 Ubuntu 8.04, 会遇到在虚拟机中无法使用键盘的情况, 解决办法是
  5. $ sudo apt-get install scim-bridge-client-qt
    然后注销就可以了.

Monday, May 19, 2008

Visual C++ 中运行多项目解决方案的方法


如图所示, 这个解决方案中有多个项目, 但在编译完毕运行时只会运行第一个建立的项目. 只需稍微设置下就能解决了:

右键那个想要运行的项目名, 选择"设为启动项目", 然后编译运行就OK了.

mourn





天堂, 在哪里?

Sunday, May 18, 2008

Friday, May 16, 2008

elf

那一刻, 她是一个天使, 她像一个精灵, 我完完全全被折服, 那一刻, 我会心甘情愿地粉碎自我, 这对于我弥足珍贵的记忆, 温柔甜美而残暴的魔鬼.

Dear elf, I wish you have a beautiful dream.

Wednesday, May 14, 2008

MPlayer中文字幕乱码解决办法

修改~/.mplayer/config文件, 添加
subcp=cp936  # cp936=gb2312
subfont-text-scale=5

然后如果是Ubuntu 9.10之前版本的系统, 需要链接一个中文字体 (命令如下), 这样中文字幕就不会出现乱码了.
$ cd ~/.mplayer
$ ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttf subfont.ttf
而Ubuntu 9.10则不需要链接中文字体 (因为链接了也没用...), 在使用mplayer播放时加上"-ass"参数即可, 比如:
$ mplayer -ass filename

我们都还在


2008年5月12日14点28分, 四川汶川发生震级8级地震, 截至今天死亡人数超过1.2万.
2008注定是荣耀与灾难交辉的一年, 灾难的是中国人的土地, 荣耀的是中国人的心.

这世界混乱了, 感受着那种仿佛暴风雨来临前的震动, 我背上书包, 往某个方向走着. 好多人, 我的快速穿行似乎不合时宜, 人们应该静静地呆在一个地方, 然后等待. 等待, 这个词恐怕是这几天来经历过最多的. 快接近了, 我暂时停下了脚步, 戴上了眼镜, 我得有一个工具帮助我从混乱的人群中发现什么. 她们说她去了那边, 我拨开人群, 那里人更多, 没有, 我呆呆地站在那里, 也许在那边. 我的手指在白色的按键上重复地按着, 该死的移动, 狭小的学校到处挤满了人, 钟楼有了很明显的裂缝, 开始封锁寝室了, 在这等等吧, 终于发出去了一条. 一个女生一直在一旁唧唧歪歪, 一个女生拿着自己的手提, 还有她的小白兔. 想起了萌芽的一篇小说《寻找雅格布》, 我的内心是否也有一个声音在大声呼喊, 然后无助地看着它在人群中淹没, 不过我是幸运的, 一直都是, 我找到了你.

我好开心, 因为有你在这里.

Saturday, May 10, 2008

MLDonkey相关设置

以下操作基于Web界面

Options:
client_name -> yourname
max_hard_upload_rate -> 20
max_hard_download_rate -> 0
ED2K-max_connected_servers -> 200
ED2K-force_client_high_id -> true
ED2K-force_high_id -> true
enable_kademlia -> true

Servers:
Import Server.met -> http://www.emule.org.cn/server.met

然后打开"~/.mldonkey/downloads.ini"文件, 找到web_infos, 修改"server.met"后的值为"http://www.emule.org.cn/server.met", 删除 ("guarding.p2p", 96, "http://www.bluetack.co.uk/config/level1.gz"); 一行.