Archives

我们喜欢用倒装都

一位伟人曾经说过:“生活不是缺少美,而是缺少发现。”这话忒对了!

最近我就发现,我们平时说话的时候也喜欢时不时地用一下传说中的倒装!下面这些例子就是:

“干嘛呢你?”

“能干什么都?”

“去过了已经。”

“快要下雨了好像。”

“我就要走了马上。”

再来几句常用的陕西话,也是倒装。

“额的神呀!这女娃美滴很!”

“今儿天热太太。”

可惜现在的倒装句是越来越少了。相比之下,古文中的倒装就比较多,比如,

“何陋之有?”

“吾谁与归?”

“而今安在哉?”

“古之人不余欺也!”

英文就更不用说了,倒装更多,尤其是书面语中,而且还有全倒装。

莫非中文真的落后了?

Because I wanted to live deliberately

仅从名字来看,很难想到《死亡诗社》是怎样一部电影。看到它,我们首先想到的可能是和死亡有关,但事实相反,这是一部相当优秀的青春励志片。

它讲述的是一个“浪漫诗人”老师Keating如何教会年轻的学生找到生活的激情,和属于自己的人生道路。“死亡诗社”正是他自己年轻时组织的一个社团,带领同伴,去山洞里一起朗诵诗歌。学生们像老师那样,成立了自己的死亡诗社。受到了老师上课的感染,学生们学会了寻找自己的“激情”。无奈现实是残酷的,保守的父亲把自己的儿子逼得自杀,死板的校长开除了Keating老师……在影片最后,当Keating离开学生们时,学生们不顾校长的威胁,一个个相继站到了课桌上,对他说“Oh, captain, my captain!”感动……

里面提到了梭罗的《瓦尔登湖》中的一首诗:

我步入丛林,
因为我希望活得从容,
我希望活得深刻,
吸取生命中所有的精华,
把非生命的一切都击溃。

以免当我生命终结时,
我发现自己从没有活过。

I went to the woods
because I wanted to live deliberately.
I wanted to live deep,
and suck out all the marrow of life.
To put to rout all that was not life
and not, when I had come to die,
discover that I had not lived.

非常唯美,恐怕作任何评论都是多余的。看完之后二话没说,赶紧从当当网上把《瓦尔登湖》给收了。

I think Yanping was right, life is important. ;-)

不知道的几个技巧

以前俺好傻好天真。。。

俺以前总以为,一个文档内容要是不停地变化,查看其最新的内容就得先less foo然后不停地按End键。现在,俺终于知道了,tail这东西,它有个选项叫-f,就是干这事儿的!这就省去俺多按N次End键的工夫!

俺以前总以为,要打印某个文件第m行到第n行之间的内容必须用awk,或者head与tail的管道组合。现在,俺总算是明白了,做个事的其实是sed,它短短一句就可以完成!比如,打印第3行到第10行之间的内容就用:

sed -n ‘3,10p’ warnings.txt

俺以前总以为,查找某个进程就得ps aux | grep xxx,现在,俺知道了,其实还有个东西,它叫pgrep,所以可以这样用:

pgrep -l xxx

类似,也有个东西叫pkill。

俺以前居然不知道还有个叫disown的东西,现在,俺终于知道了,挺有用。

俺以前不知道rm还可以这样删除名字以-开头的文件:rm — -xxxx。

在emacs下使用mew

作者: 西邮 王聪

Mew是emacs里面一款很好很强大的邮件客户端插件,最近因迷恋emacs所以决定要把邮件客户端也换成emacs里面的。

在这里,我以Fedora和Gmail为例简单说一下配置过程。

首先需要安装mew,Fedora用户直接

yum install mew

就可以了。安装好之后就开始配置,不用担心,其实很简单。需要修改的配置文件就两个,一个是~/.emacs,另一个是Mew专用的~/.mew.el。虽然说这些配置项放哪个文件里都成,但是最好还是人为区分一下,免得弄得~/.emacs里一团糟。;-)

我在~/.emacs里为Mew添加了下面这些东西:

(autoload ‘mew “mew” nil t)
(autoload ‘mew-send “mew” nil t)
(if (boundp ‘read-mail-command)
(setq read-mail-command ‘mew))
(autoload ‘mew-user-agent-compose “mew” nil t)
(if (boundp ‘mail-user-agent)
(setq mail-user-agent ‘mew-user-agent))
(if (fboundp ‘define-mail-user-agent)
(define-mail-user-agent
‘mew-user-agent
‘mew-user-agent-compose
‘mew-draft-send-message
‘mew-draft-kill
‘mew-send-hook))

(set-default ‘mew-decode-quoted ‘t)
(when (boundp ‘utf-translate-cjk)
(setq utf-translate-cjk t)
(custom-set-variables
‘(utf-translate-cjk t)))
(if (fboundp ‘utf-translate-cjk-mode)
(utf-translate-cjk-mode 1))
(require ‘flyspell)

然后在编辑~/.mew.el(没有就先创建)。我用的可以在这里下载,我这个是综合了网上各路神仙的配置之后的结果。;-) 然后你根据自己需要把它修改成你自己的就行了。

配置完成后我们进入mew模式就可以收发邮件了。我再总结一下它的基本使用方法:

w 写信
M-TAB 补齐收信人信息
Q 退出mew
i 收信
g 跳转邮箱
o 对邮件进行分类
d 把邮件标记为删除

  • 作星号标记
    u 清除标记
    x 对所有标记进行处理
    a 不带引用的回复,不建议使用
    A 带引用的回复,推荐
    f 转发邮件
    y 保存邮件,会提示是保存整个邮件和是仅保存正文
    SPACE 阅读邮件
    ENTER 让阅读的邮件向上滚动一行
  • 向下滚动一行
    n 下一封邮件
    p 前一封邮件
    j 跳到某一封邮件
    N 下一封带星号的邮件
    P 上一封带星号的邮件
    S 按某个指定项目对邮件排序
    / 按指定条件搜索邮件,并进入虚拟模式
    tt 进入虚拟模式,根据线索查看,普通模式下是不可以的
    C 如果设置了多个邮箱,用此切换
    C-cC-m 编辑新邮件,放入草稿中
    C-cC-c 发送邮件
    C-cC-q 取消草稿
    C-cC-a 插入附件
    C-cTAB 插入签名
    C-cC-l 转换当前邮件的编码格式
    C-cC-y 复制部分邮件,带引用前缀
    C-cC-t 复制部分邮件,不带引用前缀
    C-cC-a 把当前的发信人加入地址薄
    C-uC-cC-a 比C-cC-a多加入昵称和名字,推荐

恩,我就知道这些,但这些也已经足够对付日常使用了。如果需要更多,可查看mew官方网站上的手册

参考资料:

1. Mew官方手册:http://www.mew.org/release/info/index.html.en

2. http://www.zhangw.com/emacs/dotmewel.html

3. http://learn.tsinghua.edu.cn:8080/2004211031/publish/GNU/mew.html

昨天比较倒霉

事实证明昨天确实很倒霉。

先是在配置mew时把辛辛苦苦积攒了N个月的邮件存档给弄没了,因为mew默认使用的收件箱是~/Mail/inbox,这个目录它要自动创建,而我的mutt偏偏用的是一个名为~/Mail/inbox的mbox文件!结果就是被直接覆盖。。。妈呀,眼睁睁地看着它就没了!悲伤啊~!

然后是,晚上睡觉时一不小心把热水袋给踢坏了!结果水都漏了,被子也湿了,实在没法睡了,然后又把老妈叫醒换的新被子。折腾了半天才睡成。

内核紧急升级

vmsplice(2)惹祸了,爆出了一个安全漏洞,可以很容易提升root权限~!受影响的内核一大片。详细见下面这个bugreport:

https://bugzilla.redhat.com/show_bug.cgi?id=432229

这个bug很快就被修复:

http://lkml.org/lkml/2008/2/10/118

stable维护者今天接连推出3个稳定版升级皆是为了修复这个漏洞,见下:

2.6.24.2
http://lkml.org/lkml/2008/2/11/17

2.6.23.16
http://lkml.org/lkml/2008/2/11/19

2.6.22.18
http://lkml.org/lkml/2008/2/11/27

Fedora似乎也已经推出了新的kernel package,各位Fedora用户请尽快升级。

BTW,在Fedora7上试了试那个expliot,怎么不起作用呢?总是段错误~~

emacs的一些设置

在上一篇博客中提到emacs和gnome-terminal在alt键上的冲突,今天在摆弄发现冲突远不止这个。

最明显的一个就是和scim也有冲突!ctrl+space默认是调出scim输入法,而在emacs里其实是mark(我不想用ctrl+@,因为那要按三个键。;-)。如果在gnome-terminal下面用emacs的话就无法mark了。搜搜了,解决方法是,把mark功能映射到shift+space上,把原来的ctrl+space去了,如下:

(when window-system
(global-unset-key [?C- ])
(global-set-key [?S- ] ‘set-mark-command)
)

还有一个就是,emacs默认(最起码在fc7上如此)要在启动时显示一个启动画面,这样每次都得ctrl+l,不爽,去了它。

(setq inhibit-startup-message t)

让ctrl+y也可以粘贴来自X粘贴板的内容:

(setq x-select-enable-clipboard t)

还没完,gnome-terminal还占用着一些ctrl+*键,比如:ctrl+-,这个虽然也能屏蔽掉,但其它还有一堆。算了算了,我还是换Konsole吧~!

关于Meta键

最近在着手使用emacs,难免要和Meta键打交道。可是遇到一个小冲突。那就是,在FC上,Alt键被设置为Meta,而Alt又偏偏正好是某些窗口菜单的快捷键,比如gnome-terminal。这样问题就来了,如果我在gnome-terminal里使用emacs的话,本来是想使用M-b来移动光标,按Alt+b却调出了gnome-terminal的一个菜单,也就是说这个按键被窗口先于emacs捕捉到了。

简单搜了搜,没有太合适的方法。最理想的一个方法是把Win键映射成Meta,把Alt键上的Meta去掉。修改了一下~/.Xmodmap,倒是把Win键给映射过去了,但Alt仍然会被窗口捕捉到。估计还要修改xterm的配置,未果。最后找到的一个临时解决方法是,在gnome-terminal的“编辑->快捷键”里面把快捷键都禁用掉。反正我是基本上不会用Alt键来调用菜单~

那段C代码

上次提到了一些C语言的题目,留了两个没解决。其中第8个已经被“木天”解释了,我就不赘述了,有兴趣的看那篇文章下面的评论。还有一个,第26个,今天仔细看了看,其实也很简单。

[再链接一次原题:http://www.gowrikumar.com/c/]

具体原理如下:

首先,这个程序的作用是,把从第一个命令行参数传递进来的字符串(必须只含字母)用“点阵”打印出来。它必须至少带一个参数,否则就会崩溃。这大概是这个程序的一个瑕疵吧。

它是怎么做到的呢?很简单,既然是“点阵”,它就肯定要把“字体”存放好,然后读出。“字体”就存放在那个数组里面! 对比输出,和循环中的代码,我们不难发现,这个点阵是6x6的,因为屏幕输出的原因,必须是从上到下先逐行打印,每行必须是从左到右。而每行有多少个点,在哪个位置有点,这些信息都存放在一个数的比特位中!

再来看那个数组,一个数字表示一行,6个数就能存在一个字符的字体。所以这个数组也可以6个一组划分开。需要说明的是,A是从下标6开始的。至于前面的那6个0,主要是起保护作用,防止输入字符超出字母的范围时数组越界。

也是不错的一段代码。Enjoy it!

2008新年快乐!

今天就是大年三十了!

祝各位鼠年快乐!!

在新的一年里“数钱数到手抽筋,睡觉睡到自然醒”! ^_^..