K.I.S.S. – 简单哲学 Linux, Freedom, Arch, Python, Gtk+, C … Keep It Simple, Stupid!

23一/090

git中修改commit的message的方法

一不小心commit时message写错了,找了好长时间,走了不少弯路,才找到方法……

git rebase -i master~5

这个是找出master分支最近5次的commit,看见那个写错的了吧?把pick改成edit,保存退出。
此时工作目录已经变成这次commit的样子了,不要慌,然后:

git commit --amend -m "message"

修改这次的message。最后:

git rebase --continue

怎么样,成功了吧?
利用这个方法也可以修改commit的文件。

标签: 没有评论
17一/090

用vim格式化代码

虽然不是第一次听说,但是第一次用的感觉还是很神奇。
以下转自:http://hi.baidu.com/seesea8/blog/item/b96c8e51eb8f352743a75b41.html
从别的编辑器里粘贴到vim里的代码经常由于不正常的缩进变得格式混乱。在vim的官方FAQ (http://vimdoc.sourceforge.net/cgi-bin/vimfaq2html3.pl)找到的:
格式化全文:

gg=G

自动缩进当前行:

==

这个是原文节选:

14.6. How do I format/indent an entire file?

You can format/indent an entire file using the gg=G command, where

gg - Goto the beginning of the file
= - apply indentation
G - till end of file

For more information, read

:help gg
:help =
:help G
:help 'formatprg'
:help C-indenting

标签: , 没有评论
16一/090

CMake 项目卸载方法

CMake 默认不提供 uninstall 这个 target,想要的话,输入:

xargs rm < install_manifest.txt

对于不修改配置的项目足够了。
manifest.txt是CMake生成的安装文件列表。

14一/090

用上Windows 7了

虚拟机上安装的,呵呵,图就不上了,网上有的是。
说起来,Windows 7的安装确实很傻瓜,比XP友好很多,据说跟Vista是一样的。
宽任务栏并没有想象中的那么碍眼,不过特效比起Compiz还是差远了。
不开Aero(开不了)的情况下在虚拟机(512M)里还是很快的,很流畅。
IE 8用着很难受,简直是逼迫别人习惯,就像Windows一贯作风一样。
不得不说,微软在各个细节做的都很细致,一些细小的动画,即使没有Aero也能体验到。
不过在体验了Linux的高定制性之后,即使某些程序的某些方面不如Windows,Windows也不可能成为我的主操作系统了。

13一/090

Arch Linux无法休眠的解决

用了好久 Arch Linux,一个美中不足就是无法休眠。点了休眠按钮,看到它在休眠,可是重启后还是正常启动。
网上查了查,找到解决办法。
添加自己到power组:

#gpasswd -a username power

修改/boot/grub/menu.lst,加上resume=<你的swap分区>,例如:

kernel /boot/vmlinuz26 root=/dev/sda4 resume=/dev/sda5 ro

OK,享受超快的开机速度吧。

11一/090

Vim 对Gtk+ API 函数自动补全(转载)

转自:http://www.91linux.com/html/article/linux_soft/20090103/15308.html

Gtk的API有很多,如何在使用时让VIM自动补全呢?
其实VIM已经有此功能了,这就是VIM的自动补全功能。包括ctrl-N,ctrl-P以及Ommi 补全功能。
当然了,还有对包含的头文件的自动搜索。但是编写gtk程序有一点不方便的是,它包的是gtk.h
,而gtk.h中是一大堆的*.h文件,显然是不可能在gtk.h中找到什么有用的东西的。
是不是有别的什么办法呢?

linux的使用在于小巧组合,vim配合ctags即可完成此任务。步骤如下:
1.首先进入/usr/include/gtk-2.0/gtk目录,下面有很多头文件,我们要在此目录下生成一个tags文件供使用。
2.执行ctags -R
3.将生成的tags文件copy到你的工作目录,即你写程序的地方。
4.再执行ctags -a //将你写的程序的函数appended 到此文件上。

OK,大功告成。这下你写程序时,即可ctrl-N/P来自动补全gtk的API了。
不过使用时列表中的函数是有点多了,选择起来反而有点麻烦,但总比没有要好。

7一/090

Linux下国际化编程(Gettext、i18n)

参考:http://blog.chinaunix.net/u1/59571/showart_1670949.html
一、编写程序
对于国际化程序的编写,终端程序和图形界面程序是不同的,但是后期的翻译步骤是一致的。
终端程序只有gettext函数,可以通过预编译(#define)来简化,而glib中的gi18n.h提供了_()宏,比较方便。把所有文本放在_()中间即可。
下面编写两个示例来说明。
终端程序:

#include 
#include

#include 
#define _(STRING) gettext(STRING)
int main () {
         setlocale (LC_ALL, "");
         bindtextdomain ("test", "./locale/");
         textdomain ("test");
         printf (_("This is English.\n"));
         return 0;
}

GTK+程序:

#include 
#include 
#include 

#define GETTEXT_PACKAGE "gi18n"
#define LOCALEDIR "./locale"

int main(int argc,char **argv)
{
         GtkWidget *window;
         gtk_init (&argc, &argv);
         bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
         bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
         textdomain (GETTEXT_PACKAGE);
         window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
         gtk_window_set_title (GTK_WINDOW(window), _("help"));
         g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (gtk_main_quit), NULL);
         gtk_widget_show (window);
         gtk_main ();
         return 0;
}

二、生成po文件

xgettext -k_ -o lang.po ./*.c

三、编辑po文件
将头部的CHARSET改为"UTF-8",在msgstr后加入翻译。
四、生成mo文件

msgfmt -o test.mo lang.po

注意test是你程序中的GETTEXT_PACKAGE名字。
五、移动mo文件
先建立locale/zh_CN/LC_MASSAGES/这个文件夹,然后把mo文件移动过去,注意locale是你程序中的LOCALEDIR。
六、运行程序
呵呵,看看效果吧,在不同的locale下(可修改$LANG),运行的程序效果不同哦~

源码见这里:http://cid-162cb1a1d5fea75d.skydrive.live.com/self.aspx/.Public/i18n.7z
(第一次用skydrive,不知道会不会很麻烦……)

1一/090

2009年来了

我的小说还是没有进展。

参加了电子设计大赛的培训班,开始努力。

开始研究ubuntu-tweak源码,争取给同学们写个相似的。

时间是最有威力的法术,然后才是心灵。

时间暂停多好。