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使当前窗口反色.