也说用colinux启动boot硬盘上的linux(suse)

2009年4月26日星期日

0 评论  

参考:


google 用Colinux来boot硬盘上的Linux系统

colinux-daemon.txt


前提:
      本机双系统,不想在windows上colinux再占用很大空间再虚拟一个Linux系统。
问题:
           colinux如何使用本机已安装的suse系统。
解决方案:
我的suse.conf文件,仅供参考
--------------我是分割线------------
# The default kernel
cobd0="\Device\Harddisk0\Partition4"
cobd8="\Device\Harddisk0\Partition5"

initrd="initrd.gz"
kernel=vmlinux



# Swap device, should be an empty file with 128..512MB.
cobd6="swap_512Mb"

##add more space to system
cobd2="fs_2048Mb"
cobd3="fs_2048Mb1"


# Tell kernel the name of root device (mostly /dev/cobd0,
# /dev/cobd/0 on Gentoo)
# This parameter will be forward to Linux kernel.
root=/dev/cobd0

# Additional kernel parameters (ro = rootfs mount read only)
ro

# Maximal memory for linux guest
mem=512

# Slirp for internet connection (outgoing)
# Inside running coLinux configure eth0 with this static settings:
# ipaddress 10.0.2.15   broadcast  10.0.2.255   netmask 255.255.255.0
# gateway   10.0.2.2    nameserver 10.0.2.3
#eth0=slirp
eth0=slirp,,tcp:22:22/tcp:8080:80/udp:6000:6002/tcp:6000:6002
#eth0=slirp,,tcp:29000:29000
# Tuntap as private network between guest and host on second linux device
eth1=tuntap

# Setup for serial device
ttys0=COM1,"BAUD=115200 PARITY=n DATA=8 STOP=1 dtr=on rts=on"

# Run an application on colinux start (Sample Xming, a Xserver)
exec0=Xming\Xming.exe,":0 -clipboard -multiwindow -ac"

#mounst windows file system
cofs1=d:\ 
cofs0=c:\


sda1=:cofs0
sda5=:cofs5
sda6=:cobd6
sda8=:cobd8

--------------我是分割线------------
sda1=:cofs0
sda5=:cofs5
sda6=:cobd6
sda8=:cobd8
是为了配合suse系统内的/etc/fstab文件(仅供参考),可以使suse系统自己不用作修改。


/dev/sda6 swap swap defaults 0 0
/dev/disk/by-id/scsi-SATA_HTS541040G9AT00_MPB2LAX2EUVESM-part7 /                    ext3       acl,user_xattr        1 1
/dev/sda8 /home ext3 acl,user_xattr 1 2 
/dev/sda1 /windows/C           vfat       users,gid=users,umask=0002,utf8=true,codepage=936 0 0 uid=lnever,gid=users,utf8=true,codepage=936 0 0
/dev/sda5 /windows/D vfat uid=lnever,gid=users,utf8=true,codepage=936 0 0

users,gid=users,umask=0002,utf8=true,codepage=937 0 0
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0



网络问题:
linux登陆后,配置网络如下:

Once you get the Linux Running login and configure the Network with:

IP address: 10.0.2.15 

broadcast: 10.0.2.255

netmask: 255.255.255.0

gateway: 10.0.2.2

nameserver: 10.0.2.3


命令如下,下边命令需要管理员身份: 

For this purpose you can use ifconfig, but do not forget to change the IP address and the gateway with your settings...

ifconfig eth0 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255

route add default gw 10.0.2.2

echo "nameserver 10.0.2.3" > /etc/resolv.conf

 

图形界面:


export DISPLAY=10.0.2.2:0

怎么使LINUX挂载分区可写

0 评论  

这个问题其实比较简单,有很多帖子可以查到。
我就说一种比较方便的。
现在的linux系统装好后,都会生成自动挂载windows分区的fatab表。但是一般都是只读的,这其实很正常,安全第一嘛。
但是在我想充分利用磁盘空间的情况下,这种只读让我不能忍受。我需要下载、修改、编辑论文,而这些论文为了在win和linux都能用,我都放在windows的盘里。

man mount
看到里边有个选项叫做uid,只需要把挂载参数里加上一个uid=你的用户名,就ok了。
这句仅供参考:
/dev/disk/by-id/scsi-SATA_HTS541040G9AT00_MPB2LAX2EUVESM-part5 /windows/D vfat uid=lnever,gid=users,utf8=true,codepage=936 0 0

ubuntu 7.10源和导入key的方法

2009年4月25日星期六

0 评论  

eb http://cn.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse



deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe


deb http://debian.ustc.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src http://tw.archive.Ubuntu.com/ubuntu gutsy main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu gutsy-security main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse


deb http://archive.Ubuntu.org.cn/ubuntu-cn/ feisty main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse

deb http://archive.Ubuntu.org.cn/ubuntu-cn/ feisty main restricted universe multiver


下边的脚本导入所有的key

for i in $(grep -o -E "http.*\.(gpg|asc|key)" /etc/apt/sources.list); do echo -n "$i "; wget $i -q -O - | sudo apt-key add -; done; keylist=""; for key in $(grep -o "[A-Fa-f0-9]\{8\}" /etc/apt/sources.list); do if [ -z "$(echo "$keylist"|grep "$key")" ]; then keylist="$keylist $key"; gpg --keyserver subkeys.pgp.net --recv $key && gpg --export --armor $key | sudo apt-key add -; fi; done;

whereis ocamlbrowser

2009年4月24日星期五

0 评论  

希望找到比较好的处理xml的方式,下载了ocaml和cduce。

刚开始,一直找不到cduce的API,很是郁闷,以为cduce只是某些语法而已。
今天在cduceTorial里看到这句话,

 It is recommended that you browse through the available functions of
  the CDuce library using a tool like ocamlbrowser.

即,建议用工具ocamlbowser之类的工具来浏览CDuce库的可用函数API
找不到ocamlbrowser!!!!

google了很久,发现了ocamlbrowser在godi-ocaml-labltk内。

ocaml-labltk需要tcl和tk的库,但是godi安装此包时提示没有tcl,tk库

我从网上下载了tcl最新的也不行。最后看编译信息时,发现,ocaml-labltk查找库只是查看以下几个文件夹:tcl8.4 tcl8.3 tcl8.1.....tcl.8.0,tk也一样。

余下的就简单了,
下载tcl 8.4 tk8.4,编译安装,一切ok.


输入命令,ocamlbrowser,启动一窗口。

Models->path editor,在左侧边框找到路径,add-to-path。
此处的path必须是库对应的文件夹,此路径可以用find查找。
#find /opt/godi -name cduce
/opt/godi/bin/cduce
/opt/godi/lib/ocaml/pkg-lib/cduce
将带有lib的那条路径添加add-to-path。就可以查看cduce的API了。

不过,我发现ocamlbrowser关闭后,path除了标准的都消失了,下次启动还需要添加,有些麻烦。





git报错”You have some suspicious patch lines“

2009年4月13日星期一

0 评论  

解说来源:http://www.dont-panic.cc/capi/2007/07/13/git-on-windows-you-have-some-suspicious-patch-lines/


The cause for this problem is the carriage-return/line-feed problem of Git under Windows/cygwin: The patches contain a trailing line-feed if you edited them with a Windows editor and not strictly inside cygwin. This will trigger the pre-commit hook to fail on patches where the last line of a file has been changed.

原因是:

git认为"回车"和"自动换行"不一样。如果用某些编辑器编辑了后,文件中就会出现line-feed,这就会触发git的pre-commit钩子,对存在line-feed的文件报错。


To solve the problem, you need to edit .git/hooks/pre-commit and comment out the following lines:

if (/\s$/) {
bad_line("trailing whitespace", $_);
}


解决方法:

编辑.git/hooks/pre-commit文件,找到下面这三行

if (/\s$/) {
bad_line("trailing whitespace", $_);
}

注释之(#号注释)


git忽略文件设置

2009年4月11日星期六

0 评论  

在.git/info/exclude写入文件格式即可。

latex过程的过滤文件设置

例子:

# git-ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
*.[oa]
*~
*.aux
*.bak
*.bbl
*.lof
*.log
*.lot
*.lst
*.out
*.pdf
*.toc

latex文档中的首行缩进、每段缩进、空行间隔

0 评论  

参考:
1. lnote
2. lshort
3. http://www.math.zju.edu.cn/ligangliu/LaTeXForum/tex_chinese.htm

CJK包 首段首行默认不缩进,为了使首行默认缩进

\usepackage{indentfirst}


使除首段以外的段落,首行缩进,
\setlength{\parindent}{2em}
        成缩进两个汉字距离的格式。

注意问题:
一:这个环境下,开始结束一个段落的符号就不能用\\(用这个新段不缩进),而必须用\par。
二:输出一个空行必须是\\+一个空行,而不能是\par+一个空行






如何在linux下查看eps的bounding

2009年4月9日星期四

0 评论  

 问题一(插入大图,但是只需要其中的一部分)
我想将四、五行代码做成图片嵌入在tex文件中,于是写成tex,用convert转换成eps,在includegraphic。
但是有个问题就是,生成的eps非常大,但是我需要的部分却很小,于是需要一些处理。
方法一:(很是费了一番周折)
1  tex->pdf,
2 用了一个专门的截图软件scrot,截取需要的部分,为png格式
3 convert png ->eps,
4 include eps
这个过程很繁琐,一不留神,重新再来。

方法二(这是我真正需要的方法)
\includegraphic{bb=0 0 41 32}{a.eps}

此处bb,就是bounding box,概念可以google下。
此处他的作用就是指定图片需要包含的部份。比如上边那句就是说 包含a.eps部分为 左上坐标(0, 0),右下坐标(41,32),其它部分还有选项管理,不在本文讨论范围。
完美解决包含大图中一部分的问题:) 

于是引来问题二
问题二  如何求bounding box
同样有两种方法:
方法一:
ebb a.eps
可以取得bouding box的范围,我没有深究,大概意思应该是  一张大pdf中,有图的部分的边界。

方法二:
Linux中,gostview 打开 eps,鼠标划到哪里,就显示哪里的坐标。
windows里,yap,跟随ctex套件发行,有同样功能。

试了试,用着很好,呵呵







Emacs 的基本操作(基本操作,c/c++/register/etags/GNU-serv/bookmark/键绑定/其它)

2009年4月7日星期二

0 评论  

原文地址:http://dsec.pku.edu.cn/~jinlong/emacs/emacs.html#serv




Emacs 的基本操作

Emacs 中的光标移动

C-f     光标前进一个字符
C-b 光标后退一个字符
C-p 上移一行
C-n 下移一行

M-f 前进一个单词
M-b 后退一个单词

C-a 行首
C-e 行尾

M-a 句首
M-e 句尾

M-{ 上一个段落
M-} 下一个段落

C-v 屏幕上卷一个屏
M-v 屏幕下卷一个屏

C-M-v 另一个窗口下卷一个屏幕
C-M-V 另一个窗口上卷一个屏幕

M-< 文件头
M-> 文件尾

C-u n 或 M-n 重复执行n次后继命令

Emacs中的删除

C-d     删除光标上的字符
DEL 删除光标前的字符

M-d 删除光标后的单词
M-DEL 删除光标前的单词

C-k 从光标位置删除到行尾
C-S-Backspace 删除当前行

C-y 恢复删除最近的一个
M-y 循环恢复删除上一个

文本块操作

C-@     标记文本块的开始

C-x C-x 互换插入点和文本标记的位置

M-h 标记整个段落
C-x C-p 标记整个页面
C-x h 标记整个缓冲区

查找与替换

简单查找替换

C-s     向前递增查找
C-r 反向递增查找

C-s C-w 向前递增查找,把光标所在的单词作为查找对象
C-r C-w 反向递增查找,把光标所在的单词作为查找对象

replace-string 查找替换光标后所有的内容
M-% 查询替换操作

对于M-%,需要注意的是其相关的一些操作:

SPACE或y    用新字符串替换原来的,并进入下一个位置
DEL或n 不替换,进入下一个位置
. 在当前位置做替换后退出查询-替换操作
, 替换,并显示替换情况(再按空格或y进入下一个位置)
! 对后面的内容全部进行替换,不再提问
^ 返回上一个替换了的位置
RETURN或q 退出查询替换操作
C-r 进入递归编辑状态
C-w 删除此处内容并进入递归编辑状态(好进行其他修改)
M-C-c 退出递归编辑状态,继续完成查询-替换操作
C-] 退出递归编辑状态和查询替换操作

正则表达式查找与替换

C-M-s Return      向前查找正则表达式
C-M-r Return 反向查找正则表达式

C-M-s 向前递归查找正则表达式
C-M-r 反向递归查找正则表达式

query-replace-regexp 查询-替换正则表达式
replace-regexp 无条件替换正则表达式(慎用)

正则表达式中的字符:

^          匹配行首
$ 匹配行尾
. 匹配任意单个字符
.* 匹配任意个字符
\< 匹配单词的开头
\> 匹配单词的结尾
[] 匹配[]中的任何一个字符,如[a-z]匹配任何一个小写字母

Emacs 的C/C++ 模式

指定为C++模式的方法

一般根据扩展名自动设定,不用指定,不过有时候你希 望.h文件是C++模式的(缺省是C模式),在文件第一行(或其末尾)上加入

  // -*- C++ -*-

语法高亮

不是C模式专有,顺便提一下,M-x global-font-lock-mode RET 或 在.emacs中加入(global-font-lock-mode t)。在console下,Emacs21才支持语 法高亮。(语法高亮,不同关键字用不同的颜色来突出)

编译和调试

M-x compile RET 编译
M-x gdb RET 调试

C-x ` (出错信息中)下一个错误,一个窗口显示错误信息,另一个
显示源码的出错位置
C-u C-x ` 在compile buffer 列出同样的错误。
C-c C-c 转到出错位置

启动gdb调试器后,光标在源码文件缓冲区中时:

C-x SPC         在当前行设置断点
C-c C-c 中断
C-c C-z 中止
C-x C-a C-s step
C-x C-a C-n next
C-x C-a C-t tbreak
C-x C-a C-r continue
C-x C-a C-d 删除当前断点
C-x C-a C-l 到达最后一行

显示vector元素值

GDB 在调用成员函数的时候需要首先找到函数的代码才能执行。如果一个成员函数是内联的、并且没有在程序中被使用, 那么 GDB 将找不到其代码,也就不能执行此成员函数。
方法1    在源程序的查看之前的位置使用一次  at() 成员函数。
方法2 执行 print vec_obj 可以列出 vector 的内部数据结构,使用这些结构也可以查看各个元素。
假设列出了如下内容:
$1 = {<std::_Vector_base<int,std::allocator<int> >> = {
_M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>},
< No data fields>}, _M_start = 0x8095040,
_M_finish = 0x809505c, _M_end_of_storage = 0x8095060}}, <No data fields>}

可以这样查看第一个元素:print vec_obj._M_impl._M_start[0]

为方便使用,可以定义一个宏来使用:
define print_vector
print $arg0._M_impl._M_start[$arg1]
end

这样,print_vector vec_obj 2 就可查看第三个元素。

在C/C++代码中操作

M-a        移动到当前语句的开始
M-e 移动到当前语句的末尾

C-M-a 移动到当前函数的开始
C-M-e 移动到当前函数的结尾

M-q 若光标在注释文本中间,则进行段落重排,保留缩进和前导字符

C-M-h 把光标放在当前函数开头,把文本块标记放在函数结尾, 即把函数整个选作为一个文本块。

C-c C-q 对整个函数进行缩进
C-x h 选定整个buffer, 然后C-M-\可以对代码进行重新排版

C-c C-u 移动到当前预处理条件的开始位置
C-c C-p 移动到上一个预处理条件
C-c C-n 移动到下一个预处理条件

M-; 对当前行进行注释
C-x C-x 快速返回移动前的光标位置

C-c C-c 对一块代码进行注释;取消注释用命令 uncomment-region

子模式

auto-state    当你输入时自动缩进,自动换行
hungry-state 当你Backspace时,自动删除尽可能多的空白和空行

C-c C-t 同时转换(开/关)auto-state和hungry-state子模式
C-c C-a 转换 auto-state 子模式
C-c C-d 转换 hungry-state 子模式

C-c . 设置缩进风格(按TAB键可列出可用的风格,缺省的为gnu,其
缩进为2个字符;linux为8个;k&r为5个…)
TAB 重新缩进当前行

M-/ 自动补齐(缓冲区中能找得到的串)
M-; 行尾加入注释

C-c C-e 扩展宏

C-c C-c 注释掉整个区域
C-c C-\ 将区域中的每一行结尾都加入一个'\'字符

Emacs中的register

在多个文件中逛的时候,我们常常需要快速切换到先前访问的某个位置。因此,我们需要把文件及其光标位置暂时存放在某个地方。

在Emacs中,我们可以使用register暂时性保存这些信息。

将当前光标所在位置保存入一个register中:

C-x r SPACE + register名(一个字符,比如a吧)

然后我们就可以到处瞎逛,若要回到保存的register a位置,我们可以输入:

C-x r j a

挺好用的吧:)

如果你记性和我一样不好,恐怕会常常想看看自己保存了哪些register,我们可以输入:

M-x view-register    查看某一个register
M-x list-registers 查看所有的register

其实我常用的就是以上功能,为了使笔记稍微完整一点,下面开始Copy 《GNU Emacs Manual》的相关章节:

在下面,我们使用r来命名所有的register:

Save Positions in Registers

C-x r SPC r
Save position of point in register r (point-to-register).
C-x r j r
Jump to the position saved in register r (jump-to-register).

Saving Text in Registers

C-x r s r
Copy region into register r (copy-to-register).
C-x r i r
Insert text from register r (insert-register).
M-x append-to-register RET r
Append region to text in register r.
M-x prepend-to-register RET r
Prepend region to text in register r.

Saving Rectangles in Registers

C-x r r r
Copy the region-rectangle into register r (copy-rectangle-to-register).
With numeric argument, delete it as well.
C-x r i r
Insert the rectangle stored in register r (if it contains a rectangle) (insert-register).

Saving Window Configurations in Registers

C-x r w r
Save the state of the selected frame's windows in register r (window-configuration-to-register).
C-x r f r
Save the state of all frames, including all their windows,
in register r (frame-configuration-to-register).

Keeping Numbers in Registers

C-u number C-x r n r
Store number into register r (number-to-register).
C-u number C-x r + r
Increment the number in register r by number (increment-register).
C-x r g r
Insert the number from register r into the buffer.

使.emacs立即生效

M-x eval-current-buffer

Etags

建立Etags文件:

在代码目录中运行etags -R

如果要向现有tags表中添加,则运行etags -a

访问Tag文件:

M-x visit-tags-table

常用热键

M-. 访问tag C-u M-.访问下一个tag M-* 返回

Emacs 中的 GNU-Serv

常常使用console的人往往也改不了这么个习惯,就是进了X就开个终端,然后在里头埋头干活,看到什么文件想修改就vi一把。我也是这个习惯。vi比emacs启动快多了。

GNU-Serv改变了这个情形。

首先要安装gnu-serv这个包,在我的机器上apt-get install gnu-serv就可以了。

接下来修改.emacs文件

  (require 'gnuserv)
(gnuserv-start)

接下来修改.bashrc文件

  alias e='gnuclient'

这样,在终端下就可以通过 e foo来编辑foo文件了,它会自动关联到已经打开的emacs中。

更强大的功能在于,你还可以在远程执行gnuclinet,在本机编辑文件后自动存放到远程机器上。

Emacs中的bookmark

将当前页面加入bookmark

  M-x bookmark-set

修改.bashrc,将list-bookmarks绑定到F9上

  (global-set-key [(f9)] 'list-bookmarks)

这样,就可以通过F9键访问书签了。

常用键绑定

F2  寻找wiki
F3 进入dired模式
F4 进入eshell模式
F12 t 进入todo模式
F12 c 访问Calendar模式
F12 p 在当前页添加Planner
F12 g 查阅当天的plan
F12 r 添加笔记
F9 列出bookmarks

在Emacs 中添加Appointment

这个主要是添加约会和提醒用的,首先修改.emacs文件打开约会提醒功能。

(setq appt-issue-message t)

然后可以通过appt-add添加新的约会提醒,到时间Emacs就会弹出窗口提醒。如果这期间要取消约会,那么可以通过appt-delete删除。

Calendar和Diary

Calendar是配合Diary进行行程安排的,两者配合可以用于规划比较长远的事情。

我已经把Calendar模式绑定到了F8上,以下列举几个常用的命令:

.  跳回当天
o 跳到某一个月
g 这一系列命令表示goto,可以跳到指定的某一天。
g d 跳到某年某月某日
g c 跳到某年某星期的星期几
g C 跳到阴历的某一天
p 这一系列命令表示print,例如p C显示显示当前的阴历日期
i 这一系列命令表示插入行程安排
i d 加入当前这一天的行程安排,类似还有m w y
i w 跳到某个星期的星期一,按下i w可以加入每个星期都必须做的事情
i a 跳到某天,按下i a可以加入周年纪念日

好习惯应该是经常打开calendar,跳到某天,按下d就可以显示这一天的行程安排。

Emacs 中的 To-Do Mode

To-do可以用来做日程安排,todo,done,top分别表示要完成的事情,已完成的事情,和优先事情。

首先要修改.emacs文件

  (setq todo-file-do "~/.emacs.d/todo-do")

(setq todo-file-done "~/.emacs.d/todo-done")

(setq todo-file-top "~/.emacs.d/todo-top")

下面是一些快捷操作

i    加入一个条目

e 编辑条目

k 删除条目

+/- 在不同category之间切换

j 跳转到不同的category

f 对已完成的事情进行归档,并可以进行评论。

如果按i想把条目归入新档时出现错误,可以用todo-add-category加入

想要添加什么事情,随手就可以通过F5进入todo-mode,按寻找一个category,按I添加一个新的entry。完成之后再切换到todo去,按下d或者f删除entry。每个星期可以通过bookmark访问一下done文件,顿时觉得生活过得好充实。

todo部分转载自coda@newsmth。

用planner安排日程

这里有篇不错的入门文档

安装planner

在我的机器上只需要 apt-get install planner-el即可,非Debian的系统也不麻烦。

接下来要配置.emacs文件。

;;;planner
(require 'planner)
(global-set-key (kbd "<f12> p") 'planner-create-task-from-buffer)
(setq planner-publishing-directory "~/document/wiki/diary/plan")
;;;;Start planner together with Calendar
(planner-calendar-insinuate)
(setq planner-calendar-show-planner-files t)

常用快捷键

查询任务
M-x plan 查询所有未完成的工作
M-x planner-goto-today 查询当天未完成的工作

添加任务 C-c C-t或者M-x planner-create-task-from-buffer

标记任务完成 C-c C-x或者M-x planner-update-task

修改任务描述 M-x planner-edit-task-description

重新安排一个任务 C-c C-c

重新安排多个任务 区域选定后M-x planner-copy-or-move-task

Change a plan of task M-x planner-replan-task

Delete a task M-x planner-delete-task

Reordering task M-p 升序 M-n 降序

修改优先级 C-M-p 提升;C-M-n 降低

以下是从info中复制过来的

Ideas for using planner more effectively:

  • Add `(plan)' to the end of your `~/.emacs' so that you are reminded about your tasks every day.
  • Bind useful functions to shortcut keys and get used to creating tasks and notes from anywhere.
  • Think about how you plan your day and look for ways to improve it. Ask the mailing list for tips.
  • Browse the rest of this manual, the source code, and other resources on the Net for tidbits you can use.
  • Have fun!

Useful functions outside planner buffers:

  • `planner-create-task-from-buffer'
  • `remember'
  • `planner-goto-today'
  • `planner-goto'
  • `plan'

Useful functions inside planner buffers:

  • `C-c C-t' (`planner-create-task-from-buffer')
  • `C-c C-x' (`planner-task-done')
  • `M-x planner-edit-task-description'
  • `C-c C-c' (`planner-copy-or-move-task'), `M-x planner-copy-or-move-region'
  • `M-x planner-replan-task'
  • `M-x planner-delete-task'
  • (`planner-raise-task') and (`planner-lower-task')
  • (`planner-raise-task-priority') and (`planner-lower-task-priority'),
  • `planner-replan-note'
  • `planner-update-note'

--

如何得到gcc的抽象语法树(AST) fdump-translation-unit

2009年4月6日星期一

1 评论  

无数论文上看到,gcc -fdump-transaltion-unit 就可以得到很具体的抽象语法树,可是我换了N多版本,得到最多信息的就算自定义函数的语句序列了,

也试验了N多的工具,能用(gcc 4.3下成功编译)的工具就不多,得出的信息更是不适合。
于是,自己写算了!!

折腾了半天,看了一个叫print_node的函数,结果却是gcc debug用的,发现不行,就没有深究。

问了下google, 找到这个比较有用的信息。


On Mon, Mar 23, 2009 at 10:17, Praveen D V <for.pdv@gmail.com> wrote:

> With the new version I'm not able to get those dumps.
> I just downloaded latest release and compiled it. ÂIt too doesn't dump
> those typedef trees.
> Any other pointers?

You will need to modify the GCC dump routines yourself to dump the
typedefs. Start with dump_node and the calls made to dump_begin
(TDI_tu,...).

As I said before, these routines change almost constantly and we don't
even try to keep the output consistent. They are just debug
instruments for us.

简单翻译下:
有人抱怨说,-fdump-translation-unit 写的信息不够!怎么办?

gcc的开发者说,呵呵,俺们本来没有打算保持输出信息的完整性,但是毛主
席他老人家说过,自己动手,丰衣足食,所以,你自己把dump_begin和
dump_node改吧改吧, 把你想要的都打出,不就得了。


呵呵,受教了

Workrave:拯救你的手指,肌肉和眼睛[推荐一下]

2009年4月3日星期五

2 评论  

推荐这种软件,必须的:) 


Workrave 是一个定时提醒工具,可以检测你鼠标和键盘的使用频率来判断你的工作强度,然后会给你提醒。比如连续打键盘 10 分钟就会让你小休息一下,连续看电脑 2 小时会让你休息 10 分钟等等,这些都可以按自己的情况来设置的。另外在提示你休息的同时,还提供一个短片来指导你休息,比如怎么运动手指,手臂,休息眼睛,等等,挺不错的小 软件。

Workrave

Workrave 主页:http://www.workrave.org/welcome/

P.S. 我们再次向你推荐 Workrave,珍惜自己的健康,从现在做起。