一个小小的C 写的web server

嗯 现在闲得慌,呵呵。集团正在大手笔地调整几个子公司,我一下子就突然闲了起来。新同事好像动不动就是高级开发工程师,专家,高级专家,资深专家。嘿嘿,我的title还是一个普通普通的开发工程师。加薪无望啊,升职无望。只好静下心好好学习学习。
C乃万物之源,当然要好好学习学习,于是就有了这么个东东:
下载C写的web server,支持cgi和简单的配置文件
代码基本东拼西凑,qps基本马马乎乎,ab测出来的qps,纯html文件,大约也能上2k,php-cgi程序qps在60,我以为是机制问题,后来发现这个php文件在apache下也只能跑到45,可能是php模块太多了,跑得慢),perl-cgi程序qps在150~380,用c写了一个极小的cgi hello world,qps能上900;
嗯,纯属学习,欢迎指教,轻点儿拍砖。

我的大学

2001年7月,我考完高考。考完后,所有的同学都兴奋或是不安地等待,或是四处打听消息。而我,对于考了多少根本不在乎。我非常清楚,清华北大,我考上的几率太小了,所以,试都不用试。因为读上三年高中已经是很难得了,要是考不上,我根本不可能有机会去复读。而差劲的大学,就是考上了以我的家庭条件,也不可能念得了.在湖北,也只能报那么几所学校,武大,或是华中科大。于是我想都懒得想,填了高考志愿:华中科技大学.

填完志愿,很快就到估分环节了。以平时的成绩,上武大华科应该就没问题,估了分之后,我更确信了。接下来的工作,是要为上大学准备。对于我来说,就是学费的问题。

父亲不打算做任何支持。我跟他说的时候,他说,等你考上了再说吧。我知道他是在逃避,他不希望我考上。我上初中的时候,他不想我上,结果外公拿了一部分钱出来,让我上。而高中时,则是高中老师几次去劝说。但是不管能不能上大学,我想的仍然是,都得挣钱啊。上大学需要挣钱,不上大学,也得需要挣钱。

我在县城一个小小的汽水厂找到一份工作,洗汽水瓶。每个瓶子是1分钱还是5分钱吧。我忘了,只记得一天下来累得腰酸背疼,连十块钱都挣不到。干了二十来天后,我挣了150元。

也许是苍天有眼,这一年,郎酒集团搞了个助学活动,宜昌地区一共有7个名额,每个学生可以拿5000块钱,用做上大学的费用。一次付清,且不附带任何附加条件。为了拿到这个钱,我去了宜昌市两次,第一次,是去交报名表,第二次,是去领钱。去宜昌的车费是25,头一次去,还在宜昌住了一晚,我沿着长江走了很久,找到一个很便宜的小旅馆。我打工挣的钱,终于排上用场。如果没有打工得来的这点儿钱,我连去申请这个助学金的机会也没有,因为没有人会给我20来块钱去宜昌。十年之后呢,二十块钱只不过是上岛一杯可乐的钱。这次去宜昌,是我第一次走出小山沟,第一次见到长江。见到长江的时候我很吃惊,那种吃惊我隔了这么久仍然记得,原来长江水竟然是浑的,地理课本上只说黄河水是浑的,可从来没有说过长江水是浑的!

我一个人去拿回了这笔钱,然后接下来的事情仍然没有让我想到。没有亲友祝福。跟之前其他人上大学的反应完全不一样。几年前周连村子有一个孩子上了大学的话,一定会把所有亲友请来,如同结婚、得子一样地大办喜宴。我一个人悄悄地出发了,揣着这几千块钱。

上大学的头一年,我感觉到了自己的不一样。不仅仅是家庭条件的差距,更有性格上的显著不同。我内向,胆儿小,这是最要命的问题。但是值得庆幸的是,我意识到了。第一年,我参加了好几个社团,甚至有不少课都因为这样那样的活动而丢掉了。去了没几天,就在老乡会上认识了一个同镇的师兄,很豪爽地带我到他的寝室玩了几次。后来,我发现我错过了三次高数课,而那时的课是半天半天地上的(一周两次,一次半天)!
接下来,我怎么看书,也不管用,跟不上。本来一本书,老师也就上15个星期左右就讲完了,而我是一来就错过了一本书的十分之一!期中考试,我高数差点儿就不及格了。不过元旦的时候,我大病一场,躺在学校附属医院14天。其实也就是个牙周炎,但是因为进医院是周末,再连上元旦放假,基本就没医生在,就护士给输点液,所以前面5天我高烧,迷迷糊糊地在就睡过去了。现在才知道,其实高烧不退对于人来说,是很可怕的,古时候很多人一烧就过去了,就是现在不明原因的高烧不退,就是很严重的,啥白血病之类的,往往是在高烧不退后才查出来的。记得有一天,有一个中专的实习小护士,很瘦的小MM,过来跟我说,你要多喝水啊。其实来个护士都这么给我说,可是我起不来床,动一动都难,我上哪儿弄开水啊。唯独这个小MM发现我原来高烧着,根本打不了水,于是有空就帮我打开水,倒在杯子里放在床头柜上。那时候,我觉得她简直是个天使。帮我打过开水的,还有一个是班上的团支书,大姐式的热心人物,后来呆在武汉一家法资公司,已经有了baby,日子过得相当美满。

等医生同志们休假归来后,查到了病因,打了几针,烧就退了。不过还呆在医院住院部里,天天没啥事干。这时候我就天天搬个小凳子,把高数教辅书摊在病床上天天做题。出了院没几天,就期末考试了,虽然我住院又错过了一个星期的高数课,我竟然得了85分,并列第三。虽然我对那些公式啥的仍然不懂,不过做有几个大题我都做过了,对过答案了….所以高分很正常~

第二学期,就开始根据第一学期的成绩排奖学金了,一等奖学金有一个条件是,必须担任学校或系的学生会干部并有突出贡献,我自觉不行,就只参与了二等奖学金的竟选。奇怪吧,奖学金是先把有不及格历史或是四级未过的人剔除,再提出成绩在若干名的,然后再加上当过学生会干部或是社会活动等条件挑出一部分,然后再由个人发布一篇演讲,自己介绍自己为什么能得这个奖学金,最后由全班投票。不过,国家奖学金,却是由辅导员自己定的(名义上是班长报人选,辅导员定,不过几个候选人名单也是由辅导员给班长的).
大一的奖学金,只发一半。不过这钱先扣掉了学院了一个什么份儿钱,所有奖学金都这么扣一笔,再扣了一笔系里的啥钱,然后拿点儿出来做班费,再给寝室添了点垃圾痛扫把啥的。最后反正不剩下多少了,干脆,我就请同学们去吃了一顿,算是答谢他们在住 院期间照顾我吧。

未进大二,我已已经意识到要开始挣钱了。因为,虽然有助学贷款,有前面拿的助学金,可是我没有想到,一进去就交了军训费啦,保险费啊,被服啦啥的,一下子花去不少。另外住宿舍要交钱,买教材要交钱,还得按月支出生活费。进实验室做实验,也还得交费。而这些都不包含在学费里的。学费虽然是可以贷款的,但是看上去,学费好像就是用来支付老师的工资了。其他的费用,全部得照交不误。

在我看来,挣钱主要有两个渠道,一个是家教,一个是打工。家教嘛,看起来简单,其实不然。武汉高校多,做家教的学生太多了,武胜路门口,学生们跟摆地摊的小贩一样,一长溜。就是揽到活儿了,也不容易。10来块钱一小时,从武昌到汉口就得一个多小时,回来一个小时,一个周天就顶多干俩,挣20来块钱。当然也有个别好点的,给得多。
另外的打工吗,就去公司应聘做兼职了,不过如果什么都不会的,也不好找。这是我后来决定学计算机的原因:一个师兄计算机系的,在外面兼职,挣得不少。
当然,在学校还可以申请一个叫“勤工助学”的东东。极少数情况是直接给钱。这都有个条件,就是得去填各种表,列举你家庭条件差的原因,比如说父母下岗啦,残疾啦啥的。不知道为啥,真正需要的,往往反而不去挣这个。常见的就是,安排个工作岗位,比如说自行车看守啥的。这也是僧多粥少,往往早早报了名也排不上。为啥呢,现在的孩子们都很重视社会经验,认为参加勤工助学能增加社会经验。所以去看车的,一大溜的跨着那个叫安什么的1000多块钱一辆的自行车。这些机会不多,也没多少钱。当然有的岗位比较轻松,不过一般人轮不上,都由辅导员决定。
勤工俭学还有的就不知道是不是勤工俭学的了,曾经有一个长得很壮实人也很老实的同学,老早就在辅导员那儿登记了,后来终于有一天安排他去干活了,干了一整天,搬桌子,整理教室,打扫卫生。晚上累得够呛,挣回来50块钱。另一个同学提醒说,这么累,干钟点工也能挣50块钱了吧!

好吧,跑题了,接着说我的大学。既然师兄为我指道说学好编程,方便在学校接点儿活干,挣得也多点,也能不影响上课。那就,学吧。学什么呢,现在网站比较热,那啥etang,那chinaren,不都挺火热的吗,那就学网站编程吧。

于是,我就这么走上贼道儿了。
不过当时对于我来说最重要的事情,还是考过四级。那时候过四级是辅导员每天必讲的话题。最简单的理由便是,如果不能过四级,大学就是白上了。因为连个学位证都没有。到毕业了我才知道,原来是有一个毕业证,还有一个学位证,不过四级,是不发学位证。并不是所有接收单位都要求有学位证的。

大学的英语课,基本上都白上了。英语课过得倒是挺滋润,看看英文原版电影,听老师讲讲英美风俗啥的,跟高中果然不一样。不过,这对提高考试成绩真是一点用没有。那段时间,我是把所有的时间都投入到了四级上。并且我大胆地做出决定,即使是把有几门不及格,也不要紧,首先把重点解决了:把四级过了。

后来考完,我终于解脱了。我一定要狠狠地骂上几句,我有半年的青春,就浪费在小小一本smart四级词汇表上了。事实证明,即使是背了几遍,这玩意儿在我的脑子里仍然没有扎上根,也根本没帮我提高四级成绩。也许那个说“考四级就是考词汇”的人没错吧,错的只是我们把四级看得太重了,不过我们有什么办法了,有个老家伙天天到各个寝室催大家背单词!

考四级时,我其实已经迷上电脑了。我已经会鼓捣点VB/ASP,PHP的程序了。那会儿比较土,教材上的PHP文件还是.php3的后缀的。大二下学期开学了,一大坨人就围在电脑前,在etang网上输了准考证号,排队等成绩。一刷,前面有4千多位排着,等一会再刷 ,还有几千个。终于等到了,谢天谢天,过了。险过。于是立马解脱。从未有的解脱。接着去鼓捣先前的程序。

那会儿,我在西九教学楼的机房里,申请到了一个10M的空间,建了一个小小的文学站。如果我有机会做好一个网站的话,这是头一个。程序,是有一个叫“编程浪子”的人写的,我从k666.com上下载下来,然后改头换面,在DreamWeaver 4上面东增西删地乱改。那时候dw是一个很高级的东西,很多人都在frontPage里拖组件,而FrontPage里拖出来的不少动态内容,需要在微软的PWS上才有支持。哈哈,PWS!不是WPS!Microsoft Personal Web Server!如今还有几个人记得,在frontpage里加个计数器呢?
[后来不知道是霍炬还是高春辉,提醒我说,那时候已经不是编程浪子的时代了。不过也许是另一个人取了同样的网名吧。是叫编程浪子还是叫边城浪子,我都不确定了。]
在西九,我认识了网名”大牛”的一个铁哥们,后来我一个人带着600块钱晃荡到北京以后,我就推荐他到北京来上班了。当时在西九的那些64M内存的机器上,我们可怜巴巴地瞪大了眼睛,调试着巨难伺候的ASP.不过后来有几台机器坏掉了,换代了,有了128M的内存,于是我们就草草地吃完饭,在机房外排队,为的是能占着那些128内存的机器。再后来,大牛同学在学校补考,然后我在国企呆了半年之后决晃到北京,把大牛也叫到了北京。再后来….我又到了雅虎,某天为了挣那千把块钱的内部推荐奖金,决定把大牛同学推荐进来,结果人力动作太慢,给大牛打电话时,大牛已经定下了工作。然后再后来,大牛同学到了上班,跟着朋友创业,小日子过得有滋有味…

嗯,接着说。
这段时间,我对捣弄网站简直入迷了,那个小小的文学站,用的是access的数据库(天,我那时候认为它就数据库,虽然一年后教数据库课程的老师给我布置作业的时候,我牛B哄哄地说:Oracle是数据库,SQL server是数据库,Mysql 是数据库,Access算哪门子数据库?),跑得是改巴改巴的程序。那时候,我还有点点年轻人的幻想,仍然希望着将来有一天成为一个作家,于是坚持在上面写点儿东西。居然后来吸引来了几个真正的民间高手,我还记得其中有一个是四川一个小县城税务系统的,天天闲着没事,上网写小说。后来有一批人,天天在网上等他的连载,我这个“斑竹”还很嫉妒他。还有杂志来问我要他的联系方式,商量出版的事情。

再后来,有一个人说,你这么做不大的,我们合作吧。于是,我决定把这个小小的东西迁到他那里。他说有空间,有域名。可是迁移之后,就没下文了。

这之后有很长一段时间我不再那么迷恋上网搞网站。钱也不是那么好挣着,偶而挣一点点而已。我经常为怎么挣钱发愁。有一个学期,我买教材的钱也没有了。不过图书馆不收费。于是,我干脆没什么事就天天在图书馆泡着。课也不去上。图书馆主要是旧书,发黄的书。只有一个图书室是稍新一点儿的计算机类图书。于是我看到了一本讲Java的书。看过介绍之后,我决定学好Java。我的目标在那会儿变成了先考上SCJP,再考上SCJD。这两个分别是sun公司认证java程序员和sun公司认识程序设计师的意思。我拿着一个厚厚的大笔记本儿,天天在图书馆抄java书。很快抄下来厚厚一本。后来我打听到一个消息,考这玩意儿是要交钱的,要交很多钱(好像是1200吧),而且是考不过的话下次再交钱考。我就不再抱那么大希望。更何况--这时候我挂科了。得重修。

这里插进来,提一提两个人,一个是覃健祥,现在也在雅虎口碑,不过是在杭州,混得比我好多了,在杭州买了房子,马上要结婚了,以后也应该就扎根杭州了吧。他当时在学校学工处做一些院系官方网站,属于学校党委下面的吧,我呢,在一个学校门户挂着名,属于团委。这俩部门的区别就是,党委的经费多,团委的经费少。呵呵。他比我大一年,也比我早一年在图书馆的桂花树下看“疯狂站长之PHP”;另一个是郭琪睿,比我晚上年,一直在做Flash和前端编码工作,做过两年的web team leader,现在在创业,据说几天前接刚接到欧洲的一个大单。嗯,他那会儿也在一个校园门户网站做Flash编程。两人都混得很不错。

大三就这么在图书馆里混着,挂了一些科,重修了好几门,重修费不少。据说有的学校是挂科了先重考,不过再交钱重修。我们是直接收钱让你重修,跟下一届或是其他系的下一轮一起听课,一起考试。接了两个活儿,钱也挺少。大三就这么过去了。
大三快结束的时候,有几次实习。先是在校属机械厂搞加工,做个锤子啊,加工个轴承啥的。接着在武汉汽轮机厂去参观,最后去十堰二汽去实习。去十堰的时候也可怜巴巴的,身上带了一百块钱,回来还剩五十,我啥也没买,就是偶而买个泡面啥的。哦,主要是买了张IP电话卡。火车票啊,吃饭啊,住宿啥的,都没收钱。连组织去那个十堰有名的大水库去玩,记得还租了条船,也没有收钱。原因是……一开学就收了一大笔上去。

大四很快来了。大四的主要事情,就是毕业论文和找工作。华科的毕业论文,一向严格,一定要有点儿东西。有个老师从外面接个了项目,需要一个很懂电脑的人,不过好处是,接这个,可以一个课题把我们双学位的两个学科的论文全部摆平。因为这个是用计算机对钢构件的失效做模拟分析。同学们都推荐我,我也就稀里糊涂地上了。结果是,我整整地打了大半年的工。

这个要用到一个叫Ansys的软件,有限元分析的。后来很巧的时,上班的地方是在温特莱,6层就是安世亚太,也就是所谓的ansys中国。但是国内缺乏相关的资料。我的英文烂,求爷爷告奶奶地找同学帮忙,不过那会儿,同学们不是在准备考研,就是忙着找工作,谁能帮我呢。只好自己整英文资料。后来在图书馆居然找到了几本ansys的书,乐坏我了。不过幸好我看了部分ansys的manual,原来这些中文书,全是翻译的人家的manual,或是从英文网页上搞的。把人家的叙述翻译错了也就算了,连ansys命令行的基本格式都搞不懂,有些本来是需要原样输到ansys命令行的,这些翻译大师们,也给翻译了。感觉用google translate toolkit翻译的一样。后来,我看到中文的翻译过来的书,都不怎么信。 不过我英文差,也是有中文的就尽量看中文的。

未完待续。

构造"前进",“后退"按钮能用的Javascript应用

本示例介绍了如何利用window.location.hash()来构造使IE的”前进”和”后退”按钮能用。在网上的很多教程中间,称为使前进,后退按钮能用的AJax教程。
其实,这跟Ajax应用无关。更多的时候,这种场景更适用于弹出层,Tab切换,图片幻灯等。
比如,访问***.html#dialog_1&dialog_2 ,页面会自动弹出两个弹出层,关掉dialog 2,页面地址也会自动换成***.html#dialogg_1. 用户复制这个地址发给好友,好友访问时该弹出层也是显示的。
好了,不多说。因为涉及到Js,我把文件发在这里。请访问
“前进”,“后退”按钮能用的Javascript应用 示例
本系统即将注册成为open source project,敬请关注。

XHProf中文文档

XHProf是facebook在用的php性能分析工具,跟Xdebug相比,性能开销更低,可以用在生产环境。
原文地址在:
http://mirror.facebook.net/facebook/xhprof/doc.html
半成品:XHProf中文文档
约在本周内完成。
[addons at 2009-08-14:目前已经推进到了75%。欢迎斧正。]