Linux C 语言开源讲座
主讲人: 百由 (开源项目维护人,微博:weibo.com/gigah )
内容概述:Linux C 语言开发入门;开源项目参与方式;conn 项目介绍;Linux
内核编译。
目标听众:Linux C 语言编程爱好者,入门级程序员。
听课准备:学员最好自备笔记本,并且安装一个 Linux,无论是直接安装在硬盘上,还是安装在一个
虚拟机里面。学员选用哪个 Linux 发行版无所谓,主讲人选用 Fedora 15 的 64 位版。
讲座详细内容
1. Linux C 语言开发入门
内容:如何编辑一个 C 语言程序文件,如何编译(一个简单的Makefile),如何运行/gdb 调试。
时间:讲课约 5 分钟,学员动手练习约 10 分钟,共约 15 分钟。.
2. C 语言的应用简介
内容:C 语言可以干什么?哪些牛 X 的程序是 C 写的?我们可以用 C 来
试试搞一个项目,推广开源软件的学习和交流,项目名称:开源软件学习交流计划。再弄个好玩好记的项目名字:西游记。
西游记嘛,有一个好玩的过程,主要是把西方的开源软件学习过来(当然更支持我们自己的项目,比如
rt-thread)。
项目是非盈利公益性质。主要想法是忽悠现在的开源高手程序员们,给初级程序员讲课答疑解惑,引导大家学习应用开源软件,提高软件开发能力。程序员学习过程中,通过应聘工作、职业发展等取得良好收获,然后回馈这个过程,以此实现这个项目的滚动循环发展。
以下是初步想到的几个方面。
* 理事会
找一帮真正的爱好者,集体智慧,一起推动。
* 开源软件学习发展攻略
画一个有意思的大图(以及一个配套的简明攻略),从技术学习路线一直到大公司招聘职位,让程序员一眼就可以看出来从技术到职业发展的路线规划。
表现形式可以参考游戏的地图和攻略。
做一个小开源项目,用于网络测试的。
conn 是 connect 的简写。这个程序的各方面尽量遵循 unix 的风格,向 unix 的前辈们致敬!
项目网址: http://code.google.com/p/conn
上面有近期的开发路线图。
这个项目会配合下一步的C语言开发培训计划。
这个项目也会成为 gigah 的一个测试工具。
欢迎大家使用!欢迎大家参与项目开发!
版本: 0.1
提交时间:2008-04-08
本版作者:鲁义明 (Yiming Lu) lu.yiming.lu@gmail.com
所属: GigaHttpd 开发文档
* 先说实话
写这一版设计思想的时候,我知道自己还很无知,很多想法可能都是错的,甚至整个设计都是彻底不可行。不过没关系,让我们来持续改进。
* HTTP Server 功能的简单描述
接收一个 HTTP 请求,返回请求的数据。
* 功能细化一下
(1) 建立一个 TCP 连接。
(2) 接收 HTTP 请求,GET 或 POST,验证身份 Session,解析 URL。
(3) 从所有 Object 中找到对应 URL 的 Object。
(4) 如果这个 Object 需要计算(比如 Post Body 中解析出来数据进行运算
),则启动计算过程,保存计算结果。
(5) 将这个 Object 的数据返回给用户。
* 我们面对的挑战
每秒处理并响应 10 亿个 HTTP 请求,每个请求处理过程都要经过以上的步骤。
* 我们可用的资源
(1) 1000 台 PC。
(2) 每台 P
俺的开源 Web Server,支持 10 亿人民在线,继续前进一步!
去 SourceForge.net 注册成开源项目,步骤比预期的复杂,来来回回三趟,好几天,终于成功,纪念一下!
网址: http://gigahttpd.sourceforge.net
其实几年前就在 SourceForge 注册了个人账号,当时本打算帮忙把周老大的 'Win32 on Linux'
注册上去,结果后来没弄成。后来就一直闲着了。
前几天开始申请注册这个 Web Server,先简单的写了个申请,被打回来了(Reject),要求再增加 10
来项的详细说明,后来再次打回来,要保证不在人家的地盘放 ISO File Format,唉,郁闷了好几天!我估计人家一看我要写个支持
1G 用户在线的 Web Server,而且还扬言要取代
Apache,还是个不懂英语语法的中国人,肯定以为我脑子进水了,然后被门挤了,没事儿逗他们玩呢。。。
好在我对天发誓,要真的写程序,这才感动了不知道哪方的神灵, finally approve 了。
正在写第一版需求文档。老大们,你们谁的 Web Server
性能不够了,我想听听你们的痛苦——没钱的问题就不用跟我说了。
&nb
我打算开始写一个 Web 服务器(Server),在大型应用中可以替换掉 Apache
之类的程序。本服务器的最大的特点是希望同时支持10亿人在线。现在希望找志同道合的程序员一起来写。
项目名称:GigaHttpd
[技术方面]
平台:Linux(多内核、分布)
语言:C、汇编
系统结构:从设备驱动、内核内存管理、进程调度、TCP/IP协议栈、应用程序等等方面大幅调整,优化性能,用最少的成本支持10亿人同时在线——初步希
望每个 HTTP 请求/响应的时间小于10秒,理想情况小于1秒。核心代码实现后可以编写接口支持 PHP 之类的应用。
开发模式及版权保护:开源模式,所有源代码公开,GPL或类似协议,中国版权法能够保护的开源协议。
开发团队及协作:通过论坛、邮件列表、Bugzilla 之类的交流。
注释及文档语言:简体中文。
[应用方面]
样例网站:开发团队维护一个样例网站(Demo WebSite),以展示性能。
核心开发团队不创建其他应用。
技术支持:如果有其他大型应
关于这个新机器的,8G 内存。
刚买回来,安装了 FC8 32 位版,只能认不到 4 个 G,郁闷了一气,于是开始下载 FC8 的 64
位版。进而就觉得产生了一堆问题,64 位 Linux 上的应用多吗?虚拟机是否也能支持 64 位,另外在虚拟机里面的操作系统是否也必须
64 位,这个就太痛苦了,郁闷了半天。
今天看了网页,突然想起来了,编译内核的时候打开 PAE
支持不就行了!这么低级,哈哈,有些日子没编译内核了,而且还是自己最熟悉的内存管理。
好了,暂时可以不用管 64 位了,不过从现在开始准备转向 64 位,所有的代码都要规范一下,特别是 long 的长度开始 64
位了。对了,一直头疼的字符串搜索函数也应该可以改进了,用 long 比较来实现,一个汇编指令就可以比较 8 个字节,解析 48
个字节长的 URL,只要 6 次汇编比较,太好了!
呵呵,前进一小步。
刚拼了一个电脑,盼望了好久终于买回来了,记录一下高兴心情。
配置如下。
CPU:Intel Core2 Q6600 (4核),哈哈,这个是最重要的!
内存:8G,嗬嗬,我保证尽快把它们用光。
硬盘:1T,好贵的硬盘啊!这回我可以任意保存MP3和电影了。
显示器:三星20寸宽屏,分辨率 1680x1050,超酷,到现在还不适应这么大的屏幕,以后看大片可以很爽了。
主板:技嘉的S33M,显卡、声卡都集成到主板上了,呵呵,没打算用这个机器打游戏。
机箱:2U 的机架机箱,黑色很重,厚钢板。
当然,好事总是有代价的,一万块钱啊!普通机器够买两个了。
思考和分析有好处。在经过《货币战争》的启发与思考后,看到现实的贸易冲突就有了更深的认识和感触。比如,今天在“早报网”看到的美国财政部长保尔森写的文章,就可以引发很多的思考,包括疑虑。
文章网址:
http://www.zaobao.com/special/china/sino_us/pages6/sino_us071212.html
转贴文章的部分内容如下:
人民币汇率是担忧因素
在中国通货膨胀风险正在上升之际,一个更为灵活的货币现在尤其重要。提高货币灵活性,将会让中国的中央银行利用货币政策来增强中国的金融和价格稳定。
正如温家宝总理最近强调所言,中国必须实行全面措施控制上升的通货膨胀、日益增大的资产泡沫以及过热的经济。我们也持有同样的关注。
在美中关系里面,人民币汇率问题已经成为面对中国竞争更
(一)
看了《货币战争》(以下简称《货》),又在网上看了一些评论讨论,后背有些冷,感觉枪炮已经架到家门口了,于是整理了几天思路,顺便写出来。
《货》是本好书,虽然有些金融业内人士看不上,但我这个外行还是强烈的支持一下作者。起码写作的初衷很好,为了咱们这个刚出道的国家能更好的应对国际金融挑战,减少损失。
就算《货》中对很多历史事件的因果解释不一定准确,甚至感觉有很多牵强附会,但是有一点是可以明确肯定的,西方的“国际银行家”对我们这个新手的贪婪欲望与“剪羊毛”的决心,是不用怀疑的。让人感觉麻烦的是我们怎么应对。
(二)
先分析敌人。《货》对“国际银行家”的能力手段欲望阴谋描述很多,包括夸大,但是没有深入分析他们的弱点。
首
先,“国际银行家”是社会(西方资本主义社会)的主宰力量吗?就算把所有的银行、金融力量聚合起来,形成的经济力量是社会的主宰力量吗?这个很可能不是。
到目前为止,按照一般的认识分析,政治力量应该是社会的主宰力量。金融力量能超过治政治势力吗?我们来做几个假设来分析,假定