Category Archives: 学习

Ragel状态机生成器

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的一天

回想一下自己的每个工作日,果然挺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 中国股市上午收市,睡觉。

attend or not?

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?

多伦多

两次无梦的睡眠以后,到了多伦多,飞机从香港到多伦多,航程15小时,晚点了8小时。多伦多天气很好,暴风雪过后是很漂亮的晴天,尽管天很黑——这是维度的威力。
因为航班晚点的原因,而且也要把所有的行李一同清关,所以行李不能直接转到下一班航班上。在check-in的柜台,办理check-in手续的姐姐很无奈的望着我,说:你要把超重的行李都转移到一个箱子,然后给手续费噢。我很无辜的说:我第一次来啊,行李很多,对不起哦,下次不会啦。于是argue成功。感谢这个check-in柜台的大姐姐。
办boarding pass是自助的,一开始不太习惯,后来还好,按了一会屏幕,还是一样嘛。
机场里到处是上网的地方,只是要钱。为了skype回家,所以给钱也没办法啦,充分利用吧。可惜这里没有赤立角机场那里的好,香港机场到处是电源插座,这里的座位旁边基本没有,有插座的地方全是很诡异的,例如厕所旁边……所以laptop不能充电了。
逐渐开始天亮了,马上要到远方的小岛去了。

出发,新起点

每年的12月29日,都有所不同。初中的12月29日,是在上网聊天打P中度过的;高中的12月29日,是在题目和书海中度过的;到了南京的12月29日,则是开始体会银色圣诞——之所以不是白色的原因,完全是因为南京的冬天温度不低,下雪经常只是下了几瓣雪花就停了。
当我还是一个初中小屁孩的时候,大家唯一能想到的好玩的事情是吃喝玩乐,我却喜欢坐在书堆里;到了所有人在准备高考的时候,我做了高考的逃兵,混比赛成绩求取保送;再长大一些以后,大学里,大伙都想混一个好成绩,我却想着公司,生意,恋爱。现在同龄人工作的工作,考研的考研,我又想,我应该有心思静下来想想学习的事情。这好像总是显得我很奇怪。
其实这挺彷徨的,一个人,没有陪同,也不知道在新的国度里能不能立住脚,找到一份好工作,做一个突出的学生。不过我知道一件事情,就是从此我需要独立,需要付出120%以上的努力,需要和其它肤色的人讲不同的语言。谁知道呢,能不能立脚,也是一种值得珍惜的经历,弥足珍贵。
我还挺幸运的,至少在出发之前,就找到了地方居住,不需要凄凄惨惨孤孤单单的找一个落脚的屋子。至少房间是光洁明亮的,而不是著名的留学生公寓——地下室。12月窗外的景色,自然就是白色的,不过尚且气候温和,而夏季天气更是宜人。
坐在机场里,有机会静默的想一些事情。机场里来来往往的人,匆匆的来,匆匆的去,匆匆的分别,匆匆的相聚;这一切的匆匆,构成了夜的背景。我心不知道堵住了什么,空空的,又好像满满的。
可能很多重新出发的人,也会跟我想的相似。此刻脚下是新的起点,要对自己说:站稳了,别趴下。

李开复先生应该一死以谢天下

话说 Google 做了一个谷歌拼音输入法,举世瞩目,including 本土的、对岸的甚至国外的。然后事情来了,谷歌被揭发抄袭搜狗输入法。结果狐狸咬狗,然后又狗咬狐狸,一地鸡毛。
照我说,亲爱的 Schmidt 是请错人了。虽然李开复先生在微微软的活动能力还可以,但显然碰到狗狗就硬朗不起来了。结果谷歌是走了一个,又走一个。“敬爱的李开复老师”,如果你有知,就知道道歉是没用的,赶快辞职下台吧。
Technorati Tags: Google, China, 拼音, 搜狗, plagiarism

Linux 安全系列:用 grsecurity 保护 Linux

作为系统管理员,我们首先要担心的问题是一个系统的安全性和稳定性,其次才是它的效能和效率。
一个系统是否安全,一般来说取决于以下几点:

系统对外接口的多寡,及其安全性
系统内部向外的接触能力
进入系统内部后,接触系统信息的可能性

对于必须开放访问的系统来说,成熟而可靠的系统保护措施是十分重要的。而对作为各种程序运行平台的操作系统而言,系统中的各种列表,例如目录、文件、进程等,都可以成为怀有恶意的用户甚至是骇客的窥探的窗口。例如一个已经侵入系统获得普通用户权限的骇客,可以通过观察系统中的各种服务器进程和相关的配置文件,探测系统的保护机制和各种漏洞。譬如一个普通用户,如果具有执行 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 的。其它选项可以根据需求配置。下面是配置 [...]

Supported by Webinit Consulting