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 [...]

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 了。以下是关键命令: [...]

Supported by Webinit Consulting