Thursday, December 4th, 2008
Ragel可以把正则表达式翻译成有限状态机(FA)的各种语言表示,包括C、C++、Objective-C、D、Java和Ruby。Regular Expression和FA的用途很广,可以用于协议分析、数据解析、词法分析、用户数据校验等。在Ragel的帮助下,写一个atoi的函数非常容易,而且比标准库提供的atoi函数性能要高。
?View Code C/*
* Convert a string to an integer.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
%%{
machine atoi;
write data;
}%%
long long atoi( char *str )
{
char *p = str, *pe = str + strlen( str );
int cs;
long long val = 0;
bool neg = false;
%%{
action see_neg {
neg = true;
}
action add_digit {
val = val * 10 + (fc – ‘0′);
}
main :=
( [...]
回想一下自己的每个工作日,果然挺geek的。BTW,谁看到了我的blog的,有兴趣写写自己的每一个工作日怎么过的么?
7:00am 起床,洗漱,看一下中国当日的财经新闻
7:45am 上班
8:00am 到办公室
12:00pm 午餐
12:30pm 继续
4:00pm 下班,偶尔到超市买菜
5:00pm 看研究的题目,paper
6:00pm 晚餐,看当天的世界财经新闻
7:30pm 开始研究工作
10:30pm 中国股市开市
11:30pm 研究工作结束
12:30pm 中国股市上午收市,睡觉。
There is a very promising program. Being accepted into the program means money in the future. But the current situation is lack of money. To do, or not to do?
Sunday, December 30th, 2007
两次无梦的睡眠以后,到了多伦多,飞机从香港到多伦多,航程15小时,晚点了8小时。多伦多天气很好,暴风雪过后是很漂亮的晴天,尽管天很黑——这是维度的威力。
因为航班晚点的原因,而且也要把所有的行李一同清关,所以行李不能直接转到下一班航班上。在check-in的柜台,办理check-in手续的姐姐很无奈的望着我,说:你要把超重的行李都转移到一个箱子,然后给手续费噢。我很无辜的说:我第一次来啊,行李很多,对不起哦,下次不会啦。于是argue成功。感谢这个check-in柜台的大姐姐。
办boarding pass是自助的,一开始不太习惯,后来还好,按了一会屏幕,还是一样嘛。
机场里到处是上网的地方,只是要钱。为了skype回家,所以给钱也没办法啦,充分利用吧。可惜这里没有赤立角机场那里的好,香港机场到处是电源插座,这里的座位旁边基本没有,有插座的地方全是很诡异的,例如厕所旁边……所以laptop不能充电了。
逐渐开始天亮了,马上要到远方的小岛去了。
Saturday, December 29th, 2007
每年的12月29日,都有所不同。初中的12月29日,是在上网聊天打P中度过的;高中的12月29日,是在题目和书海中度过的;到了南京的12月29日,则是开始体会银色圣诞——之所以不是白色的原因,完全是因为南京的冬天温度不低,下雪经常只是下了几瓣雪花就停了。
当我还是一个初中小屁孩的时候,大家唯一能想到的好玩的事情是吃喝玩乐,我却喜欢坐在书堆里;到了所有人在准备高考的时候,我做了高考的逃兵,混比赛成绩求取保送;再长大一些以后,大学里,大伙都想混一个好成绩,我却想着公司,生意,恋爱。现在同龄人工作的工作,考研的考研,我又想,我应该有心思静下来想想学习的事情。这好像总是显得我很奇怪。
其实这挺彷徨的,一个人,没有陪同,也不知道在新的国度里能不能立住脚,找到一份好工作,做一个突出的学生。不过我知道一件事情,就是从此我需要独立,需要付出120%以上的努力,需要和其它肤色的人讲不同的语言。谁知道呢,能不能立脚,也是一种值得珍惜的经历,弥足珍贵。
我还挺幸运的,至少在出发之前,就找到了地方居住,不需要凄凄惨惨孤孤单单的找一个落脚的屋子。至少房间是光洁明亮的,而不是著名的留学生公寓——地下室。12月窗外的景色,自然就是白色的,不过尚且气候温和,而夏季天气更是宜人。
坐在机场里,有机会静默的想一些事情。机场里来来往往的人,匆匆的来,匆匆的去,匆匆的分别,匆匆的相聚;这一切的匆匆,构成了夜的背景。我心不知道堵住了什么,空空的,又好像满满的。
可能很多重新出发的人,也会跟我想的相似。此刻脚下是新的起点,要对自己说:站稳了,别趴下。
Tuesday, April 10th, 2007
话说 Google 做了一个谷歌拼音输入法,举世瞩目,including 本土的、对岸的甚至国外的。然后事情来了,谷歌被揭发抄袭搜狗输入法。结果狐狸咬狗,然后又狗咬狐狸,一地鸡毛。
照我说,亲爱的 Schmidt 是请错人了。虽然李开复先生在微微软的活动能力还可以,但显然碰到狗狗就硬朗不起来了。结果谷歌是走了一个,又走一个。“敬爱的李开复老师”,如果你有知,就知道道歉是没用的,赶快辞职下台吧。
Technorati Tags: Google, China, 拼音, 搜狗, plagiarism
Friday, September 8th, 2006
作为系统管理员,我们首先要担心的问题是一个系统的安全性和稳定性,其次才是它的效能和效率。
一个系统是否安全,一般来说取决于以下几点:
系统对外接口的多寡,及其安全性
系统内部向外的接触能力
进入系统内部后,接触系统信息的可能性
对于必须开放访问的系统来说,成熟而可靠的系统保护措施是十分重要的。而对作为各种程序运行平台的操作系统而言,系统中的各种列表,例如目录、文件、进程等,都可以成为怀有恶意的用户甚至是骇客的窥探的窗口。例如一个已经侵入系统获得普通用户权限的骇客,可以通过观察系统中的各种服务器进程和相关的配置文件,探测系统的保护机制和各种漏洞。譬如一个普通用户,如果具有执行 Apache 的权限,那他就很有可能可以通过 Apache 的编译参数、版本查找服务器的漏洞。一个很重要的原则是:把服务器上的所有用户都看成是怀有恶意的使用者,所以系统必须限制普通使用者的权限。这是一个无关道德的问题,而是一个技术问题。
对于 Windows 来说,系统的权限控制可以通过 Active Directory 来实现。但这只是对文件访问的控制,而并没有涉及系统的进程、网络接口。当然,复杂的 AD 规则当然包括对网络服务的访问,可是这只是限制的系统的接口部分,并没有从根本上解决上述问题。Linux 本身也并没有复杂的系统安全机制,一如传统的 Unix 一样,Linux 是通过普通的文件权限来保护系统,而这并不足够。
为了解决上述问题,Linux 内核有几个相关的 patch,包括由 NSA 开发的 SELinux、Brad Spengler 开发的 GRSecurity 和 RSBAC Team 开发的 RSBAC。由于效能和简便性方面的原因,这里选择使用 GRSecurity。相关的比较可以看这里、这里、这里和这里。
GRSecurity (grsec) 内核的安装和配置
在 kernel 网站和 grsecurity 网站分别下载内核源代码和对应版本的 grsec patch。这里以目前的最新版,kernel 2.6.17.11 以及 grsec-2.1.9为例。
解开 linux-2.6.17.11.tar.bz2 压缩包之后,就可以进行 patch 了。以下是关键命令:
然后找到你的原来的内核配置文件,并配置之。
在 make oldconfig 的时候,请根据你的需要回答Y/N。后面将会继续 make menuconfig。
这里要选择 Security Level。可以根据你的需求选择 Low/Medium/High/Custom。不过一般来说,我在这里是选择 Medium 的。其它选项可以根据需求配置。下面是配置 [...]