Professional Documents
Culture Documents
卷首语
企业的“社区”属性
社区因为没有足够的资金做支持,很难很好的发展下去,结果好象形成了一个恶性循环。
Intel OTC 从在中国的成立开始,就担负起了建设中国开源社区的使命。Intel OTC 的众多项目
(Xen、moblin 等)也是国际领先的开源虚拟化项目,在资金投入方面也是大手笔,这很好的解决了中国
开源社区形成规模的瓶颈。Intel OTC 在中国的成立并不断发展壮大,更似为中国的开源社区注入了一剂
强心剂,为中国的开源社区建设增添了活力。
中国的开源社区光靠 Intel OTC 是肯定不够的,需要更多的开源人士的参与,需要更多有实力的
研究机构的参与,也需要更多优秀的开源项目投放到中国的开源社区进行研发。而作为开源的企业,或
者是支持开源的企业,所从事的开源项目,最终都将回馈给开源社区,因此,无论是其个人还是该团队,
都将会被打上开源社区的标签,具有开源社区的属性。在目前我国开源形式逐步深化发展的情况下,在
开源社区需要得到更多注目及培育的情况下,我们需要更多具有社区属性的企业投身社区,支持社区,
我们需要更多的企业引入或发起在国际上具有影响力的开源项目,投入中国开源社区的培育与建设,只
有这样,建设具有国际品质的开源社区才不是一句空话。
今天,Intel OTC 已经在中国发展数年并且壮大起来,在中国开源领域及事务上越来越具有主导
权和话语权,而其对开源社区的培养也正在落到实处。EMC 的毛文波博士也正在带领一支队伍从事一些
开源的项目的研发,涉足中国的开源社区。希望在可预见的将来,有着更多的 XXX OTC 在中国成立、发
展,从事开源工作,参与我国的开源事务,培育我国的开源社区,企业的参与将对我国开源社区的培育
起到至关重要的作用。
卷首语..............................................................................................................................................................2
产业聚焦..........................................................................................................................................................7
倪光南、陈怀临受聘《开源》顾问.................................................................................................................7
最有可能被封杀的开源项目.............................................................................................................................8
ASIANUX MOBILE 继续进军 NETBOOK................................................................................................................10
最新国产 LINUX 智能手机抢鲜看....................................................................................................................11
提早收钱 戴尔中止 WINDOWS XP 预装..........................................................................................................12
红帽 CEO:良好业绩归功于甲骨文并购 BEA...............................................................................................13
LINUX 与 WINDOWS 结合 IBM AKKA 问世.......................................................................................................14
JAVA 实现完全开源...........................................................................................................................................15
RICHARD STALLMAN 中国行北京站....................................................................................................................16
FIREFOX 3.0 一周下载量破 2000 万.................................................................................................................18
浏览器之争战火再燃.......................................................................................................................................21
一个时代结束:比尔·盖茨人生掠影.............................................................................................................33
博客文摘........................................................................................................................................................40
为什么说,微软是我们的朋友?...................................................................................................................40
文档格式的“真实的谎言”...........................................................................................................................42
开源软件渐成主流...........................................................................................................................................45
开源社区........................................................................................................................................................50
项目动态...........................................................................................................................................................50
FIREFOX 3.0 发布 微软 IE 小组献上蛋糕.........................................................................................................50
CENTOS 5.2 正式发布.......................................................................................................................................51
UBUNTU 8.10 INTREPID IBEX ALPHA 1 发布...........................................................................................................52
ARCH LINUX 2008.06 发布..................................................................................................................................53
OPENSUSE 11.0 正式版提供下载.....................................................................................................................54
惊艳的 UBUNTU 8.10 主题.................................................................................................................................55
MOBLIN 应用开发者大会——越南站记行......................................................................................................57
ENTERPRISE 2.0 开源技术趋势..........................................................................................................................62
知识学堂........................................................................................................................................................68
LINUX 下设备完全驱动(一)........................................................................................................................68
DEBIAN 与创始者 IAN MURDOCK........................................................................................................................78
经验技巧........................................................................................................................................................84
企业应用......................................................................................................................................................109
嵌入式..........................................................................................................................................................125
如何成为一个优秀的程序员.........................................................................................................................125
PXA 272 开发经验总结.................................................................................................................................132
谈谈写程序与学英语.....................................................................................................................................134
编读往来......................................................................................................................................................140
产业聚焦
倪光南、陈怀临受聘《开源》顾问
应《开源》杂志邀请,倪光南院士,陈怀临先生受聘为《开源》顾问,将对今后的《开源》电子杂
志在方向上进行把握,在电子杂志出版中予以指导,在重大选题上给予支持。
在《开源》创刊初期,倪光南院士就在百忙之中予以了指导,提出许多宝贵意见,鼓励杂志编辑部成
员并充分肯定了杂志的创办意义。倪光南院士认为,我国开源事业的环境仍不够好,开源媒体(尤其是
传统纸媒上)遇到了很多困难,《开源》杂志的创办开启
了一种新的媒体模式,这对于目前我国的开源事业将有很
大的促进作用,因为在大多数人看来,电子杂志和纸面媒
体的传播效果是类似的。对于杂志坚持了五期,并有了良
好的下载量和读者反馈,倪光南院士给予了充分的肯定,
认为杂志的存在是难能可贵的,只要持之以恒,必将会有
更多热爱开源的读者支持。
倪光南简介:
1994 年被遴选为首批中国工程院院士,现为中国中文信息学会理事长,中科院计算所研究员。
陈怀临简介:
亚嵌教育首席科学家。系统计算研究所(www.xtrj.org)创办人和首席科学家,《弯曲评论》
(www.tektalk.cn)创办人和首席科学家。主要从事系统软件研发和信息产业战略研究,评论工作。
最有可能被封杀的开源项目
SourceForge 一年一度的“社区选择奖”正在紧锣密鼓的筹办当中,预计正式提名名单将于近期公布。
有意思的是,SourceForge 让下属的 geek 网站创始人 CmdrTaco 命名一个新的奖项类别,CmdrTaco 提出的
名称叫做——“最有可能被政府封杀的项目”。在统计了读者的留言和提议后,正式提名名单已经公布,
分别是:Truecrypt(加密工具)、EFF Patent Busting(寻找对公众利益损害最严重的专利)、GNU
Software Radio(开放软件无线电项目)、WikiLeaks(泄密网站)、Cryptome.org(公开间谍机构绝密档
案的网站)、Tor(匿名服务)、Freenet(分布式的 P2P 网络服务),最后一个则是匿名懦夫
(CowboyNeal)。
提早收钱 戴尔中止
Windows XP 预装
红帽 CEO:良好业绩归功于甲骨文并购 BEA
尽管美国的经济总体陷入衰退,但是开源软件上红帽(Red Hat)的业绩依然不错。这其中部分原因
归结于新产品对于收入增长促进,而部分原因竟然归结于另一个软件巨人甲骨文公司。红帽首席执行官
吉姆·卫赫士 (Jim Whitehurst)在 2009 财季电话会议上总结了公司整个财季的财政表现,他相信甲骨文并
购 BEA 是红帽收入增长的一个重要驱动力。
红帽在截止于 5 月 31 日的 09 财年的第一季度
力业绩颇丰。在上个季度,公司成功实现了 1730
万美元的纯利润,约合每股 8 美分,公司销售额
增长 32%,达 1.566 亿美元。而在去年同期,Red
Hat 公司的纯利润仅有 1620 万美元。如果不考虑
偿还短期债务所支付的资金,Red Hat 公司在 09
财年第一季度的纯利润将达 3700 万美元,约合每
股 18 美分。
卫赫士在电话会议上表示,“甲骨文并购
BEA 从某种程度上导致了行业竞争的脱位。我并
不是说甲骨文并购的方式有问题,而是当你进入了一个竞争对手较少的领域,公司之间偶然的接触会使
得双方更加倾向于在对方身上寻找合作机会,这很显然被证明非常符合我们的利益。”
甲骨文曾于今年一月份成功并购了全球领先的应用基础结构的中间件(middleware,对应用程序隐藏
了实际网络和通信协议的细节的软件)软件公司 BEA。因为此前红帽的 JBoss 中间件部门一直在和 BEA
竞争企业市场。因此,此次的并购使得甲骨文直面红帽的竞争。此外在 Linux 平台上,甲骨文的
Unbreakable Linux 也在和红帽展开竞争。
Java 实现完全开源
2008 年 5 月 31 日,哲思自由软件峰会在清华大学主楼报告厅隆重举行。受哲思自由软件邀请,自由
软件的创始人和精神领袖 Richard Stallman 现场做了两个多小时的演讲,与会的演讲嘉宾还有倪光南院士,
王星耀院长,宫敏博士以及哲思自由软件社区的创始人徐继哲。亚嵌教育第 12、13、14 期嵌入式系统工
程师就业班的在读学员及往届的老学员 100 多人参加了此次峰会。6 月 1 日,Richard Stallman 应邀参观访
问了亚嵌 AKAE 嵌入式研究中心,与学员们见面并合影留念,这是亚嵌学员的荣幸,也是嵌入式 Linux
业界对亚嵌教育多年来成绩的认可。
倪光南院士“向自由软件学习什么”揭开了本次峰会的序幕。他讲到的关于软件的知识产权问题,
也是在场很多人关注的一个问题。Sun 公司副总裁,Sun 中国工程研究院王星耀院长就 Open Source at Sun
主题进行了演讲,主要阐述了 SUN 公司的开源战略和对社区的贡献。
宫敏博士背磁盘的故事带给大家很大的感动和震撼。在瑞典研究院的时候,听到一个关于“为什么
Linux Kennel 最早产生在了芬兰而没出现在瑞典”的讨论,有人说因为芬兰有一个世界上最大最全的源代
他在自己的演讲中一再强调,自由软件不是免费软件,也不是开源软件,“……Software should be
自由‘ but not ‘免费’”,他基本不懂中文,但是“自由”和“免费”发音还是很标准的。Linux 只是一
个自由软件系统的内核,没有 Linux,GNU 软件照样可以运行在其它的内核上。所以说 Linux 一定要加上
GNU slash Linux (GNU/Linux)。Microsoft,Adobe,Apple 这些公司的软件都不是 Free Software,他们窥
视用户的隐私,让用户成为他们的奴隶。
浏览器之争战火再燃
◆陈杰
浏览器的过去
火狐的崛起
十年后的今天,比尔盖茨 50 岁了,依然是全球最富有的人。微软公司也已经迈入了而立之年,但仍
旧是全球最大的软件公司。不同的是,人们基本上已经将微软的 IE 与 Web 浏览器之间划上了等号。然而,
江湖上从来不缺乏勇于挑战强权的侠客,风平浪静的湖底其实已经暗流汹涌。各路英雄好汉虽然还没有
正式打出“打倒 IE”的大旗,但早已经蠢蠢欲动。在这些挑战者中,不乏名声响当当的人物,如拥有
移动新平台
随着互联网和手持设备的流行,越来越多的用户喜欢通过手持设备随时随地访问网络,传统 PC 平台
的浏览器之争也随之蔓延到了移动平台,若在新兴的移动平台获得较大市场份额无疑会占据 Web 浏览器
竞争的制高点。对于 w3counter 统计的在 PC 平台上不足 1%份额的 Opera 浏览器,在移动平台上却处于领
先地位。据国外媒体报道,Opera 的移动 Web 浏览器 Opera Mini 在推出几个月之后,共吸引了全球 200 万
用户。虽然每个用户不是每天都浏览网页,但是每天通过 Opera Mini 浏览器访问的网页数量达到 4 百万
页,这点表明了 Opera 已经在移动用户中变得非常流行。网页在 Opera Mini 的压缩下,通常大小为 10~
20Kbit,以现在的使用量计算,大约每天产生的数据量为 38~76Gbit,这点证明了 Opera Mini 可以为运营
商带来丰厚的利润。
自从 2005 年 T-Mobile 在他们的手机上加载了 Opera Mini 浏览器后,移动浏览器已经被证实了其经济
效用。在使用 Opera Mini 的第一个月,平均每个用户每月访问网页的数量为 330 页,这也使得移动数据
传输增长了 489%。
阮哲伟向记者介绍到,“Opera 其实在各个平台上都有自己的产品,在 PC 平台上甚至是跨操作系统
的浏览器,在 Windows、Linux 和 Mac Os 操作系统上,我们都有不少的客户,只是 Opera 在移动终端做
opera 运行在移动终端上
标准成为障碍
中国有句俗话,叫做“没有规矩,不能成方圆”。这里面的规矩也就是一些规则,在现代商业社会
存在各种各样的规则,但规则达到一定规模,并达到潜移默化的水准时,就成为了标准。在 IT 领域,厂
商、技术、产品种类繁多,需要各种各样的标准加以约束、规范。在 Web 浏览器领域,标准更显得格外
重要,如果缺乏一个开放的标准,那将存在浏览器间互不兼容,网站遵从于不同浏览器进行开发,最终
问题,因为这样才能提高网络银行的安全性。”
除了不同浏览器之间的不兼容,IE 浏览器与 Web 标准的不一致性也广招非议。当 IE 7.0 无法通过
Web 标准项目(WaSP) 的标准测试后,这一消息也引起了 Web 开发商和客户的广泛注意。互联网上出现了
许多争论,甚至有人呼吁联合抵制 IE。开发人员和标准组织声称,如果微软能够更好地遵循 Web 标准,
企业和与 Web 密切相关的组织能节约很多资源,Web 就能够以更低的代价,更迅速地增长。
Google 的开源平衡措施
◆Linuxpk.com Hugh 编译
问:Google 内部对开源的看法?
答:我问过我自己“我在向谁讲演?”开源事业?不是。开源爱好者?也不是。我其实是在寻找可以
共同工作的开源开发者。我们组有如下目标:总体上支持开源的发展,意味着支持开源的基础设施、支
持开源代码的发布,不管是 Google 内部还是总体上的、再有就是创造更多的开源开发者,因为尤其当我
刚加入,大家都觉得 Google 从开源世界带走了很多人并走开了。部分正确,因为人们会来到这里说“噢,
我一直在我的开源项目上工作,我现在想找个新的问题来解决,”然后我们在新的问题上好好上一课,
所以说,某种程度上说,他们走开了。
问:我对是将更改贡献给上游项目还是由自己来维护感到很好奇。你们对此是怎么评估的?
问:你们所采用的开源项目中哪些是最重要的?
问:Java 的开源改变了你们的什么吗?
答:其实没有。我认为它对外面的世界改变得更大。Java 现在是个相当成熟的语言了。我们使用它已
经有好长时间了。以前是 JCP(the Java Community Process 掌管 Java 的未来)――以前它也标榜着开放。但
它从未特别开放。现在有问题就是关于围绕开源对于 Java 有何意义,尤其是 J2ME(Java 用于手机 gadgets
的移动版本)和 TCK(the technology compatibility kit 技术兼容包)。
问:那你们有很多的内部定制吗?
答:不多。Google 的信息在向世界提供前会先暴露给一些有趣的硬件。所以,在内部我们为那个硬件
写例码。但最终这些代码会被公之于众。我们资助了 Berkeley 的一个叫做 Xorp 组织,它们要将 Broadcom
的高速网络芯片移植到 Linux 上。我们并没有兴趣控制它。所以它是定制的吗?绝对是。但它是高度定制
的吗?我认为并不是像你们想得有那么高度定制。
答:有些地方是这样。
问:那么核心的搜索产品呢?
答:我当然忧虑。我认为那大体上是不正确的感知。你总是可以付出更多,但总有人认为感到不满
足。我们还可以回报更多吗?当然。我改善这个问题的其中一个方法就是通过像 Summer of Code 这样的
项目。Google 每年,不包括像 Android 或者像 GWT 这样的非常大的,每隔一两周就发布一个新的开源项
目。或是每个月都对成百上千个项目打补丁。我保守估计我们每年从这家公司发布大约一百万行代码。
如果你和开源开发者——那些在开源项目上工作的人谈到这些,我想他们会理解的。对于我们来说是我
们要和谁互动。我总是觉得爱好者社区最终会理解的,我认为是这样的。有些人因为我们没有拥抱 Affero
形式的 GPL 便感到愤怒,但对于我们来说那么做是不切合实际的。当他们在 GPLv3 中有了个 Affero 形式
的条款,我告诉 Eben 的是“听着,你可以采用任何你想要采用的东西。我们仍会尽可能地支持 FSF 和
SFLC,但这意味着我们不能在内部使用这个许可证,因为这样做对我们来说不切合实际。”我认为这是
一个比较符合实际的回复。Affero 发布出来了。它对于那些使用它对人很不错。但对我们来说不行。
这就是自由软件。你不必为使用它而负有任何的义务。在公司内我们有很好的控制,我们不使用我们不
想用的东西。
问:你们比较偏向于哪些许可证?
问:你们在何种程度上资助专家们坐在一起在重要的项目上工作?
问:你们内部使用很多的开源软件。那你们在使用之前会有诸如知识产权之类的审查或者评审吗?
答:当然。我们有两种方式。当有人想要从外界带进来一些代码--开源的或者商用的--你需要将
其放入一个特殊的,我们叫做“第三方”的目录下。它们要被放到一个叫做 readme.google 里(来描述)他
们在哪里获得的软件,使用什么样的许可证,许可证被归类于哪一种类下。我们只寻找那些有清楚明了
许可证的。有些项目知识产权归属模糊,我们知道它们,我们知道谁在运营它们,我们从不会使用它们。
因为 Google 并不发行很多的软件,因此我们要比那些销售硬件和软件的公司要轻松得多。有些情况
下,许可证上确实要费些力 --Google Search Appliance,及一些可下载的应用程序。它们需要一些格外
的注意力。类似地,像大一点的项目,如 Google Android,我们会有高一些规格的待遇--每两周我们就
到一起看许可证展望发生了改变。
追踪模式对我们来说很管用。我们写的工具可以让程序经理或发行经理将警告调至某一级别,它会
告诉他们在用什么开源软件及如何遵守其许可。在临近软件发布时我们会为他们建立一个镜像。
这就是我们追踪事情的第一种方式。第二种就是无论何时 Googler 向某个更改列表添加东西――我们
正在开始做的事――我们用我们的 Code Search 产品将其与因特网上所有的已知开源代码进行比较。我们
将那份来自于 Google 工程师的更改列表与代码数据库的进行比较寻找相同之处。当我们发现了相同之处,
我们会仔细看一看是否是完全相同。如果完全相同,我们要确保它被放到正确的目录下并且贴上相应的
标签。如果不完全相同,我们会召集那个工程师以确保贴对标签并且在许可证许可的范围内做事。
那个工具还处在初始阶段。我们正尝着使其自动化。但它很了不起因为它要比对大量的语法。我们
组的目标就是不打断项目建设或终止开发。它使得开发者能够尽可能多地使用开源软件。我们认为这很
健康,因为他们不是写那些代码,而是用它写别的代码。
问:你们会确认代码是否注册专利或版权了吗?
答:不会。我们的列表里有法务人员。我们有两个主要的列表用来追踪这些事情。对进来的代码进
行开源验证并对发布的代码进行开源。有法律参与的。专利方面的东西不能掉以轻心。
答:如果你在开源方面小有名气,那当然有帮助了。如果你拥有一个健康的开源项目,我相信会很
问:如果在社交关系方面有经验呢?
答:开源对此的显现非常的快速。你可以看一看他们的代码,看一看他们在邮件列表上参与的活动,
他们如何与真实的人们之间交流关于程序缺陷的问题,以及真实用户的问题。这可是份无价的资源。
Summer of Code 并不是用来招聘的。如果是的话,代价可太高昂了。去年参加的 900 名学生写了二百多
万行开源代码。其中有三分之一的会继续在他们的项目上工作,因为其余的要回到学校去上课。
有的学生已经在他们的项目上工作了两三年了。我们的主要目的是让这些学生在暑假时能做一些编程方
面的东西而是去做那些和计算机科学搭不上边的工作。今年是第四年了。已经有 95 个国家的 1109 名学生
报名参加了。
一个时代结束:比尔·盖茨人生掠影
图 3:从上个世纪 90 年代中期到晚期,应该算是微软的“黄金时代”,当时该公司不断推出新软件,
投资者为其强大的盈利能力而欢呼雀跃。1995 年,盖茨和微软推出了 Windows 95 操作系统。
图 5:1997 年,盖茨与老对手史蒂夫·乔布斯(Steve Jobs)“一笑泯恩仇”,并结束了与苹果长时间的争
执。
图 12:2007 年 1 月,盖茨与微软 CEO 史蒂夫·鲍尔默(Steve Ballmer)共同发布 Windows Vista 操作系统。
图 13:从下月开始,盖茨将正式退出微软日常管理工作,但仍然担任董事长一职。
博客文摘
为什么说,微软是我们的朋友?
◆袁萌
博客地址:http://blog.csdn.net/yuanmeng001
文档格式的“真实的谎言”
◆胡才勇
博客地址:http://blog.sina.com.cn/hucaiyong
我曾“瞄”了一眼《文档格式的真实谎言》,之所以用“瞄”,是因为我看到以下这段文字时,我
已经没有任何看下去的兴致了,结果有好事者还非把此文贴到我的博客上,只是我依然没有兴趣看完它,
在此对以下这段文字作个标记:
“首先所谓的南非、巴西等国家的上诉针对的是 ISO,质疑的是 ISO 的流程和公信力,与微软的
Open XML 无关。至于结果,那也是南非、巴西和 ISO 之间的事情。在笔者看来,并不是歧视南非、巴西
这样的国家组织。其实作为一个 IT 产业极度不发达的国家,人家 ISO 允许你加入并参与事务,就已经体
现了公正、平等。不知道南非和巴西这样的国家对于 IT 产业有怎样的了解?对于全球的 IT 产业和标准做
了哪些贡献?相反,这样的小国参与重要的 IT 标准的事务极易被人利用(这次的上诉也不排除被利用的
可能性)。所以笔者认为,此次的上诉,ISO 应该首先调查他们上诉的动机,不能因为两个 IT 小国的上
诉就对自己早已经建立和完善的流程产生怀疑。”
近来,微软不断地推进自己开放的举措值得肯定。我也应邀和微软的相关博士们进行过沟通。虽然大
家立场不同,观点也大相径庭,但至少已可以就一些具体问题进行探讨;而且我也能特别感受到微软两
位博士愿意沟通的诚意,特别感佩。相反,一些专门为微软打抱不平的人,似乎总容易急火攻心,口不
择言,缺少最起码的公平、公道之心。似乎一些“小国家”(也许中国也是 IT 的小国)加入 ISO 只能投
赞成票就像其它投赞成票的“更小”的国家那样,否则就是“被人利用”,还去怀疑人家的“动机”。
这样不好。
每个人、每个公司都会面对许多挑战,请先做个深呼吸,Take IT easy(我也会一点英文,只是很差)。
我相信微软明白自己的所有挑战,微软近来极力宣传自己的开放策略,并也开始采取一些具体措施,在
我看来就是微软积极应对“反垄断”困境的一个好办法。微软已有开放的心态了,其他的人更应该轻松
面对,别为微软“打抱不平”打过了头,给人一个负面形象:怎么替微软说话的人这么霸道啊?!
既然有关文档格式的争论还在继续,有人还把《文档格式的真实谎言》贴到我的博客,我也把我此前
曾在多种场合说过的一些观点集中阐述一下。你可以不看,也可以不同意。
“多种标准有利于用户选择”是其中最大的“真实谎言”
“转换器”不可能全面解决多格式转换的问题
“标准应由市场自由选择”,貌似公正的谎言
“采用国产软件用户需要彻底转变”
再次重申这些“真实谎言”的存在,是为了说明,这场有关文档格式的“斗争”的复杂性和长期性。
开源软件渐成主流
◆顾宏军
博客地址:http://ossplus.linuxpk.com
面向最终用户
经过多年的发展,开源社区已经创造了大量的应用软件:包括操作系统,开发工具,数据库,办公
套件等等,也有 ERP、CRM 等企业级应用,但是要用户采用这样开源产品,光有程序还是远远不够的,
还需要有效集成、市场推广、用户体验、技术支持、用户文档等。
以往开源软件多只注重技术层面,而较少关注其他方面的内容,使得很多开源软件只在部分专业人
士和追随者中间流传,随着越来越多的人意识这这一问题,很多项目或公司开始从用户角度看问题,切
实解决用户遇到的问题,如改进 Linux 下软件安装的 CNR 项目,专注桌面的 Linux 发行版 Ubuntu 等。
Ubuntu 项目拥抱开源社区,利用社区的力量,专注于集成优秀开源项目,并持续改善用户体验,免
费进行 CD 版分发,使得 Ubuntu 在短短 2 年多时间里拥有里大量用户,被 Dell、Acer 等选中,在部分机
型中进行预装,成为 Linux 桌面的领导者。
面向行业应用
引领技术革新
虚拟化技术可以提高计算系统的利用率,可以让他们自由决定何时以及怎样升级系统和应用软件,
而且能够在需要时迅速部署资源,所有这些都可以帮助客户降低成本。而开源社区的活力给这项技术加
上了飞翔的翅膀。随着开源思想的深入人心,尤其是 Linux 内核的成熟提供了最佳的借鉴平台,开发者将
他们的想法付诸实现变得愈发容易。
超越开放源码
开源运动所带来的深远影响远不只是几行源代码,它还带来了软件开发方法、硬件设计等多方面的
变革。
1.开发方法变革
从表面来看,开源软件最大的优势是“开放源代码”,但从技术角度来说,归根结底,是两个串联
在一起的基本因素发挥着推动作用:大众频繁有效的参与重构运动。开源模式已经被证明是非常成功的
软件开发模式,SUN、IBM 等已将部分软件通过开源的方式进行开发,很多的 Web2.0 应用也采用和开源
软件类似的开发模式。正如《Open Source Development With CVS》的作者 Karl Fogel 在开篇第一章所说
的,“软件商店里能得到的不是有用的软件”,开源软件的代码质量要明显好于商业软件(一般是指成
功开源软件)。微软 Vista 开发用了 6 年,而 Flickr 每天就发布 8-10 次,Web2.0 应用所推崇的"持续开
发"和"一直 beta"其实就是开源软件的"release early,release offen "。
2.开源硬件
自从 Linux 在开发、聚集程序员、占有商业市场等方面日渐成功后,硬件工程师开始构思硬件设计参
考开源软件的可能性,并开始有同好于互联网上分享硬件的源码(Verilog/VHDL),最重要的有
OpenCores.org。
开源硬件由低端到高端的技术都有,吸引越来越多的工程师加入。同时,由于不少开源硬件都与开
虽然目前能够开源的只是硬件中比较软的那部分——计算机辅助设计软件和硬件描述语言写就的源
代码,但是也许多年之后,开源硬件也会和开源软件一样流行。目前,已有相当数量的开源硬件项目出
现:如开源 3D 打印机项目 RepRap,开源信息设备项目 Chumby,开源 Roland 303 MIDI 电子合成器;开
源 MP3 播放器 Daisy;开源 8080 兼容 CPU 等。
开源软件正在飞速发展和完善中,它已被众多普通用户、开发人员所采纳,它正在进入越来越广泛
的软件领域,很多公司也开始采用开源的开发模式,很多开源商业模式也被开发出来。开源的产生和发
展是 IT 行业的必然趋势,开源软件将对整个软件产业的发展产生深远的影响。 开源运动不是昙花一现,
现今它正熠熠生辉,并发散出巨大的生机。
开源社区
项目动态
蛋糕上突出显示了蓝色的
Internet Explorer 7.0/8.0 图标。在
Firefox 3.0 正式发布之后,不知道
Microsoft 的 IE 开发者们将如何取长
补短。
CentOS Linux 是一个依 GPL 规范,及利用 RedHat Enterprise Linux (RHEL) 的源代码 (source code)
来重新编译 (compile) 的 Linux 版本。
下载地址:http://mirrors.kernel.org/centos/5.2/isos/i386/
DVD 地址:http://mirrors.kernel.org/centos/5.2/isos/i386/CentOS-5.2-i386-bin-DVD.iso
来自合作伙伴 LDCN 的消息,根据 Ubuntu 8.10 Intrepid Ibex 发布时间表,Ubuntu 8.10 Alpha1 是于 6 月
13 日发布的。因为各种原因,发布延迟了。在跳票了整整半个月之后,Ubuntu 8.10 Intrepid Ibex Alpha1
终于发布了。Ubuntu 8.10 将于 2008 年 10 月 30 日发布,这个版本将面向更广泛的领域,如高端计算机和
移动桌面。
* GNOME 2.23.4
* GCC 4.3.1
* X.Org 7.3
下载
* http://cdimage.ubuntu.com/releases/intrepid/alpha-1/ (Ubuntu)
* http://cdimage.ubuntu.com/kubuntu/releases/intrepid/alpha-1/ (Kubuntu)
* http://cdimage.ubuntu.com/xubuntu/releases/intrepid/alpha-1/ (Xubuntu)
下载地址
archlinux-2008.06-core-i686.iso :http://archlinux.mirrors.uk2.net/iso/2008.06/archlinux-2008.06-core-i686.iso
archlinux-2008.06-core-x86_64.iso:ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/iso/2008.06/archlinux-2008.06-
core-x86_64.iso
相当实用的一个挂件,你可以把你常用的快捷方式上在这上面,在它的底部还有一个流动条,当快
捷方式较多的时你可以通过它来切换。如果你注意看图片你会发现这滚动的过程中还有模糊的动态特效。
Moblin 应用开发者大会——越南站记行
◆陈绪
到目前为止,Moblin 大会涵盖的国家包括:中国大陆(北京/上海),台北,日本,韩国,印度,越
南。本人有幸前往越南的河内(首都)和胡志明市,为广大社区开发者(主要是草根),提供了多个
Moblin 的技术专题讲座。本文从旅行全程的生活和大会等多个层面,给大家提供到越南出差和旅行的一
些实战经验,并通过越南大会,管窥 Moblin 将给大家带来的巨大影响和机遇。
前往越南的准备知识
有了越南同事的邀请信,在 7 个工作日内,我获得了前往越南的签证。注意,和去美国不同,申请
去越南的签证是不需要面试的。
河内之旅
图.河内巴亭广场
4.河内 Linux user group 的组织者 David Tremblay 先生,讲述了河内的 OSS 活动情况;
6.Moblin 大赛的相关介绍。
从河内去胡志明市
6 月 25 日中午,乘飞机前往胡志明市。胡志明市,一般称为 HCMC,当然它还有另外一个名字:西
贡(Saigon)。和河内狭窄的街道相比,胡志明市更象一个现代的城市。对了,我发现越南的这两个城市,
都有一个共同点,就是满街的摩托车。男男女女,老老少少,都骑着摩托车,而且大家都带着头盔,其
中很多人带着各式各样的口罩。绿灯一亮,路口的摩托车象洪水一样冲过来。同时,小型的加油站也是
遍布城市的各个区域。我问了一下当地同事:头盔是政府规定必须戴的,旨在解决安全问题,不戴则要
重罚;而口罩是为了对付当地城市的空气污染。
晚上去了饭店附近的一家越南面馆。面汤的味道非常独特,感觉和贵州酸汤鱼的汤差不多。一方面
是饿了,一方面是味道感觉非常好,我一气吃了两碗。所以,这里给大家推荐一下越南的本地面。另外,
来越南之前,就听说这里的“菠萝蜜干”非常好吃和独特,所以在河内就去买了点。这个东西可不是菠
萝,而是另外一种食品,当地人叫 Jackfruit。
胡志明市之旅
图.胡志明市夜景
晚上和印度的同事一起去吃了一下附近的一家印度饭馆,消费不高,味道不错。
6 月 27 日,从胡志明市出发,抵达广州,然后转机,返回北京。虽然广州受到“风神”台风的侵袭,
我的旅程一切顺利,按时抵京。
听众问题总结
Moblin 的核心特性,在于基于节能的小型设备上,提供丰富的互联网和媒体体验。
Moblin 软件架构中,包括哪些组成部分?
Moblin 的生态系统如何?
Moblin 在全球生态系统中获得了巨大进展。
展望
随着 Web 服务标准被逐渐推广和采纳,SOA(面向服务的架构)也因为其在企业软件项目中的重要
性获得了越来越多的认可。而近期 Web 2.0 风光无限,并以暴风骤雨的节奏猛烈袭击着互联网行业,SOA
和 Web 2.0 似乎成了当今 IT 行业最热门的两个词汇,然而,行业内更为先进的思潮是:怎么样将 Web 2.0
结合 SOA 并应用到企业软件中去?答案就是新出现的 IT 名词:企业 2.0。
企业应用是支撑企业运营的基础,企业应用需求多变,业务复杂,工期紧张。把企业应用转换为企
业 2.0 是件开销巨大的工作,企业不太可能因为“企业 2.0”是新技术就把应用全部采用企业 2.0 的商业产
品来实现。但是企业 2.0 挟 Web 2.0 与 SOA 的综合优势让企业推却不了,在这样的情况下,比较好的方法
是使用开源的企业 2.0 产品先行实验,在比较低的投入下,运行自己的企业 2.0。
软件领域一直没有完全探索清楚的一个问题,是业务模块的组件化问题。怎么样划分组件?采用什
组件化开发和动态布署的特性,一直是集中在业务逻辑领域的,Web 中并不存在所谓的组件化开发
的概念。但是,最近著名的 Web 框架开源项目 Struts2.0 启动了一个支持热布署的插件开发功能。该热布
署插件可以让 Web 应用在上线后,通过浏览器上传新的 Web 组件,并在线热布署,这样就可以把新的功
能组件插入到已经上线的 Web 应用中去。
BPM 的 SOA 本质
SOA 产品的巨人化
SOA 的实践化
图 3 Tuscany 的构件装配
知识学堂
Linux 下设备完全驱动(一)
◆郄晓烨
Linux 设备驱动概述
1. 内核和驱动模块
操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作
系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用 nVIDIA
芯片,还是 ATI 芯片的显示卡,只需知道输入命令后,需要的文字就显示在屏幕上。硬件驱动程序是操
作系统最基本的组成部分,在 Linux 内核源程序中也占有较高的比例。
lsmod 列出当前系统中加载的模块,例如:
上面显示了当前系统中加载的模块,左边数第一列是模块名,第二列是该模块大小,第三列则是该
模块使用的数量。
# modprobe ide-cd
此时会发现,cdrom 模块也会自动插入。
insmod 也是插入模块的命令,但是它不会自动解决依存关系,所以一般加载内核模块时使用的命令
为 modprobe。
rmmod 可以删除模块,但是它只可以删除没有使用的模块。
2.设备文件
系统中的设备都用一个设备特殊文件代表,叫做设备文件,设备文件又分为 Block(块)型设备文件、
Character(字符)型设备文件和 Socket(网络插件)型设备文件。Block 设备文件常常指定哪些需要以块
(如 512 字节)的方式写入的设备,比如 IDE 硬盘、SCSI 硬盘、光驱等。而 Character 型设备文件常指定
直接读写,没有缓冲区的设备,比如并口、虚拟控制台等。Socket(网络插件)型设备文件指定的是网络
设备访问的 BSD socket 接口。
# mknod harddisk b 3 0
使用下面命令可以查看设备编号:
#file /dev/hda
#file /dev/tty1
/dev/tty1: character special (4/1)
由上可以看到,它的类型为 Character 型(字符型)设备文件,主设备号为 4,辅设备号为 1。同样,
/dev/tty2 代表着第二个虚拟控制台,是 Character 设备,编号为 (4/2)。
3.使用/proc 目录中的文件监视驱动程序的状态
# ls /proc
1 4725 5032 5100 5248 5292 crypto kcore partitions
14 4794 5044 5110 5250 5293 devices kmsg pci
2 4810 5075 5122 5252 5295 dma ksyms self
3 4820 5079 5132 5254 5345 driver loadavg slabinfo
4 4831 5080 5151 5256 6 execdomains locks stat
4316 4910 5081 5160 5258 7 fb lvm swaps
4317 4912 5082 5170 5262 70 filesystems mdstat sys
4318 4924 5083 5180 5271 8 fs meminfo sysrq-trigger
4319 4950 5084 5189 5287 9 ide misc sysvipc
4620 4963 5085 5232 5288 apm interrupts modules tty
4676 5 5086 5242 5289 bus iomem mounts uptime
4680 5005 5087 5244 5290 cmdline ioports mtrr version
4706 5018 5088 5246 5291 cpuinfo irq net
需要知道的是,这些文件都是实时产生的虚拟文件,访问它们就是访问内存中真实的数据。这些数
据是实时变化产生的,可以通过以下命令来查看文件的具体值:
# cat /proc/interrupts
CPU0
0: 50662 XT-PIC timer
1: 3 XT-PIC keyboard
2: 0 XT-PIC cascade
/proc/sys 目录下的文件一般可以直接更改,相当于直接更改内核的运行参数,例如:
上面代码可以将内核中的数据包转发功能打开。
#ide_info /dev/had
系统初始化过程驱动程序的安装
在 Linux 安装过程中,系统上的硬件会被检测,基于检测到的结果安装程序会决定哪些模块需要在引
导时被载入。Red Hat 的安装程序为 anaconda,它提供了自动检测硬件,并且安装的机制。
定制引导盘
# mount /mnt/cdrom
# mkdir /mnt/imgdir
# gunzip < /mnt/cdrom/isolinux/initrd.img > /ext2img
# mount -t ext2 -o loop /ext2img /mnt/imgdir
# cd /mnt/imgdir
# ls -F
bin@
dev/
etc/
linuxrc@
lost+found/
modules/
proc/
sbin/
tmp/
var/
# cd modules
# ls
module-info
modules.cgz
modules.dep
modules.pcimap
pcitable
# ls
3c59x.o
3w-xxxx.o
8139cp.o
8139too.o
8390.o
aacraid.o
acenic.o
aic79xx.o
……
自动配置安装
# kudzu
那么 kudzu 程序如何认识硬件的呢?可以查看/usr/share/hwdata/目录下的文件,根据这些文件中的
PnP 信息,kudzu 可以识别各种硬件设备。
幸福的家庭
丰富的职业生涯
1997 年到 1998 年,Ian 带领志愿者建立了 Software in the Public Interest。紧接着 1998 年到 2001 年,
Open Source Initiative 也诞生了。
此外,作为核心成员 Ian 参加了 Linux File System Standard(现在的 Linux Standard Base)的起草工作。
著名的 Linux Journal 网站的建立也有 Ian 的功劳。
Debian 的诞生和发展
◆2000 年名为 potato 的 Debian 2.2 出现,有超过 2000 个软件,并且拥有成熟的 APT 架构;
开放式开发
模块化组件
尽管 Debian 的开发者各自开发他们的组件,但是严格的开发规范让所有的开发人员都可以独立加入
到系统中,而不会干扰或破坏其它的软件包。使用同样的开发工具、遵循同样的开发规范,所有的志愿
者都可以制作出真正的模块化系统。
◆对软件的发行没有限制;
◆发行的软件必须包含有源码,并且这些源码的发行也不能有任何限制;
◆可以更改软件,并且可以重新发行更改后的软件;
◆没有歧视,软件的许可方式不应因用户所属的领域或者组织而有所不同。
Debian 的魅力
数以万计的软件和对多达 6 种硬件体系架构的支持,让
Debian 成为最大的 Linux 发型版之一,支撑它稳定的运行是从 2.1
版本开始出现的 APT 架构。
Debian 对开源软件有着很深的承诺,并且觉得应该把这样的承诺化为一份正式的文档。这就是社群
契约(Social Contract)的由来。事实上,现在的 Debian 是一个组织非常好的项目,并且在开放源码运行中
也有着相当的地位。
经验技巧
《Linux 一句话精彩问答》是 Linux 初学者很好的入门文档,想必很多朋友当时都是边看该文档,边
敲打键盘,玩着 Linux 过来的。该文档由本刊副总编陈绪主编,迄今已经收录近千个精彩问答。从第二期
期开始将在桌面应用(即经验技巧)栏目进行连载,希望能帮助到更多刚接触到 Linux 的朋友们。
Linux 一句话精彩问答——系统配置篇(5)
◆陈绪
蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;灰色表示其它文
件;红色闪烁表示链接的文件有问题了;黄色是设备文件,包括 block, char, fifo。
用 dircolors -p 看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等定义
#!/bin/sh
while (true)
do
pstree |grep "*\[httpd\]$"|sed 's/.*-\([0-9][0-9]*\)\*\[httpd\]$/\1/'
sleep 3
done
1083 如何新增一块硬盘
三、分区
四、格式化
mkfs
五、修改 fstab
vi /etc/fstab
1084 看分区的卷标
一 8.0 中
1.放入第一张光盘;
2.cd /mnt/cdrom/Redhat/RPMS;
如果你还想装日文、韩文,安装第二张光盘上的 ttfonts*.rpm.
二 9.0 中
ttfonts-zh_CN-2.12-1.noarch.rpm(简体中文)
1086 终端下抓屏
1087 让一个程序在退出登陆后继续运行
2 # command
# disown
1089 cp 时显示进度
cp -r -v dir1 dir2
cp -a -d -v dir1 dir2
init q
1094 如何让多系统共存
1095 如何在图形界面和控制台(字符界面)之间来回切换
1 图形界面到控制台:Ctr+Alt+Fn(n=1,2,3,4,5,6);
2 各控制台之间切换:Alt+Fn(n=1,2,3,4,5,6);
3 控制台到图形:Alt+F7
<1>ls:列目录。
<2>mkdir:建目录。
<3>find:查找文件。
<5>vi:编辑器。
50 个让你疯狂的软件
以及其开源软件替代方案(一)
作者:immy Atkinson
编译:Cheiron(Linuxpk.com)
基本的
办公套件
办公工具
生产力
图形程序
网络编辑
21、从 Adobe GoLive CS2 到 Mozilla SeaMonkey:GoLive 是 Adobe Creative Suites 产品的一部分,
所以它可以和你的 InDesign 文档一起工作,允许把这些文档转换成网页。但是,在你选择 Adobe Suite 之
前,你也许希望试试 Mozilla 的 SeaMonkey。Mozilla SeaMonkey 项目包含一个网络浏览器,邮件客户端,
HTML 制作程序和 IRC 聊天客户端。设计者的思路是简明的,但是它却运用了表格和 CSS,轻松的处理
了层和其他元素的位置。 扩展包括了 Scribefire,一个和你的浏览器整合的博客编辑器,让你轻松的更新
你的博客。
轻松玩转 Firefox(1)
◆kennycx(linuxpk.com )
1 .Firefox 的安装
# ./firefox-installer
2. Tab 增强
基于 IE 的一些浏览器双击标签页就可以关闭其标签页,TabbrowserExtensions 扩展也可以实现这个功能,
在配置选单中选择操作,在鼠标点击动作下的在标签页上双击,选择关闭标签页,在标签栏上双击选择
新建标签页。这样,在标签页中双击将关闭其标签页,在标签栏中双击将打开新的标签页,是不是方面
了我们的浏览啊。
选择启动->浏览器启动内容,选择恢复最后的标签页会话,这将在下次启动时打开最后的标签页
会话。在备份标签页会话中选择恢复上次强制关闭时的标签页会话,这将在 Firefox 发生异常时不至于丢
失这在浏览的页面。
3 .用 Adblock 扩展阻止广告
4 .鼠标手势功能
5 .快速切换代理
深入理解 SetUID
◆PHPChina 肥同小可
一、什么是 SetUID
# ls -l /etc/passwd /etc/shadow
普通用户对这两个文件并没有写权限,在更改密码的时候不可能将密码写入进去,那么,为什么
普通用户可以更改密码呢?
其实,真正的秘密不在于文件的权限,而是在于更改密码的命令――passwd。
# ls -l /usr/bin/passwd
再尝试以普通用户身份登录后修改密码,是否还能成功?当然不会。这就是因为取消了 passwd 命
令的特殊权限 SetUID。 为便于我们深入理解,再看下面的例子:
$ touch newfile01
$ ls -l newfile01
# ls -l /bin/touch
$ /bin/touch newfile02
$ ls -l newfile02
# ls -l /bin/touch
$ /bin/touch newfile03
$ ll newfile03
# ls -l test
二、SetUID 的危险性
对于 SetUID 的使用,可以打一个生动的比喻:有一个绝密机关,不得已必须有些不能见这些秘密
的人进来做一些事情。于是授权一些特殊的“车辆”(没有窗户,车门紧闭,看不到外面,只有一个小
做下面这个试验看看:
$ vi /etc/shadow
# which vi
alias vi='vim'
/usr/bin/vim
再来看一个令人不安的情况:
$ kill 8916
1. 关键目录应严格控制写权限。比如“/”、“/usr”等;
2. 用户的密码设置要足够强壮,8 位以上,大小写字母、数字、符号的组合,如:Am@ri31n,且定
期更换;
下面是一个作者编的小程序与大家分享,主要作用是检查有没有/backup/setuid/list 文件记录之外的其
它文件被设置了 SetUID 权限。在系统调试完成,所有需要安装的软件安装结束后,执行下面命令生成检
查对照文件:
# mkdir -p /backup/setuid
#!/bin/bash
cd /tmp
do
if [ "$?" != "0" ]
then
fi
done
/bin/rm -f setuid.check
编辑配置文件/etc/fstab ,找到要设置的分区(如/home)所对应的设置行:
# vi /etc/fstab
修改模式的设置“defaults”,添加“nosuid”选项,并重新挂载/home 分区:
# vi /etc/fstab
PEAR 安装与使用
◆ liyropt(Linuxpk.com )
1. PEAR 的安装
php go-pear.php
会出现提示
输入 1-7 可以修改安装路径,如果是默认,请按回车。接下来按一直按回车就可以了。值得一提的是,在
最后,安装程序会在/etc/php.ini 中自动加入 pear 的加载路径。 但这必须在重启 httpd 服务以后才能使用
(/etc/init.d/httpd restart)。
2. PEAR 的使用
ln -s /path/to/pear/bin/pear /usr/bin/pear
如安装 包 Numbers_Roman(实现阿拉伯数字与罗马数字之间转换),
3. 加载 Pear 包
<?php
require_once("Numbers/Roman.php");
?>
企业应用
电信网:封闭世界的开源需求
首先,传统方式提供新业务的周期较长,电信运营商无法快速的将用户的需求反馈到业务或应用
中,无法提供差异化业务,陷入只能提供带宽的窘境。
另外,不同的通信技术都将持续提高 IP 分组承载能力作为发展的重点,未来丰富而新颖的多媒体
业务都将围绕 IP 技术来展开,互联网现存或发展中的业务必将影响电信网业务的发展,互联网业务的开
发模式也会逐步渗透进电信网的业务开发。
在融合的网络环境下,快速而有效的提供差异化的交互式多媒体业务是未来电信业务发展的重点。
在以客户和业务为中心的发展模式中,如何快速的开发新业务、原型化业务实现,是目前各大电信运营
商都在积极思考的问题。如果能够采用一种更为开放、独立于厂商的方式实现 IMS 核心网和业务平台,
势必会为电信业务的发展注入新的活力。
Fraunhofer-Gesellschaft (弗劳恩霍夫应用研究促进协会)[1]是德国也是欧洲最大的应用科学研究
机构。协会成立于 1949 年 3 月 26 日,以德国历史上著名的科学家、发明家和企业家约瑟夫?冯?弗劳恩霍
夫(Joseph von Fraunhofer, 1787-1826)命名。该协会有 58 个研究所,近 13000 科研人员一年为 3000 多客
户完成约 10000 项科研开发项目,年经费 10 亿欧元。其中 2/3 来自企业和公助科研委托项目,另外 1/3 来
自联邦和各州政府,用于前瞻性的研发工作,确保其科研水平处于领先地位。为满足企业及社会的需求
不断的提供高质量的研发服务。弗劳恩霍夫开放通讯技术系统研究所(FOKUS)[2]主要从事智能环境、
下一代网络和自主通信系统、模式驱动工程、电子政务等领域的研究,为来自工业、科研资助和公共管
理领域的伙伴提供网络与技术集成,中间件的适配和管理,服务与应用的建设和管理,分散电信系统的
测量与检测,自动化方法和软件,开展过程优化等方面的技术支持。
OSIMS 项目
OSIMS 即 Open IMS Core[4],由 FOKUS 研究所在 2006 年 11 月 16 日第二届 International FOKUS
IMS Workshop 上开放源代码,原属于 FOKUS Open IMS Playground 的核心网部分,在 BerliOS 开源项目
管理网站上的项目名称是 Open IMS Core(开源 IMS 核心网)[5]。该项目实现了 IMS 核心网定义的各
CSCF 功能和 HSS 功能。(图 2)
图 2 - OSIMS
1.CSCF 功能
P-CSCF(图 3):
图 3. OSIMS P-CSCF
◆支持路径头;
◆Service-Route 验证/执行;
◆鉴权的完整性保护;
◆支持 Security-Client、Security-Server、Security-Verify 头;
◆支持 Visited-Network-ID 头;
I-CSCF(图
4):
图4
OSIMS
I-CSCF
◆完全的 Cx 接口支持(LIR,UAR)
◆基于用户能力的 S-CSCF 选择
◆支持拓扑隐藏(THIG)功能
◆网络域名安全(NDS)
S-CSCF(图 5):
图 5. OSIMS S-CSCF
为了保持更快的响应时间,S-CSCF 的注册服务器实现了一个基于哈希表的复杂结构,用户身份
相关的信息被保存在这里,用于以后的呼叫路由处理。这个注册服务器也接受注册状态事件的订购,并
提醒订购者注册状态的改变。
◆完全的 Cx 接口支持(MAR、SAR、PPR、RTR)
◆支持 Service-Route 头
◆支持路径头
◆支持 P-Asserted-Identity 头
◆支持 Visited-Network-ID 头
◆支持 iFC 触发
◆支持通过“reg”时间服务器的接入限制
◆基于会话状态的处理
2.HSS 功能
图 6. OSIM FHoSS
FHoSS 实现的特性包括:
◆集成简单的鉴权中心(AuC)功能
GUI 层:
数据访问层:
◆Zh 接口
展望
参考资料:
[1] 弗劳恩霍夫协会主页:http://www.fraunhofer.de/EN/
[2] 弗劳恩霍夫开放通讯技术系统研究所:http://www.fokus.fraunhofer.de/home/index.php?lang=en&seite=
经过多年的发展,开源已成为一种趋势,开源软件成为软件产业的一股重要力量,在 CRM、ERP
等企业应用领域,出现了一大批开源应用;这是一个系列文章,介绍中小企业如何使用开源 CRM 系统进
行客户关系管理,主要内容包括 VtigerCRM 安装,初始化,业务流程,系统维护等,如果时间允许也会
介绍其它的开源 CRM,本文是这一系列的第一篇,讲解 VtigerCRM 的安装,大家有问题都可通过 Linux
宝库获得解答。
安装 VtigerCRM 基础运行环境
注:VtigerCRM 运行环境在不同系统下安装方式不同,但是系统设置,使用等各个平台下都相同。
Linux 上 AMP 环境安装,如果使用的是 Ubuntu Server CD,Ubuntu 安装的时候,选择了安装 LAMP,系
统将会自动安装 Apache2,PHP5,MYSQL5,在安装了 AMP 环境后,最好立即为 MYSQL 设置一个 root 密
码,并为您的网络应用长须设置好它需要的数据库,用户名和密码。
VtigerCRM 下载与中文补丁
VtigerCRM 下载推荐从官方网站下载,通过第三方网站获取的有可能被篡改过。VtigerCRM 需要
PHP5 才能运行,最新版已不提供 PHP4 支持,另外,PHP 官方也将结束 PHP4 的安全更新。
1、下载 VtigerCRM
(2)修改 config.inc.php
修改:$default_charset = 'ISO8859-1';
改为:$default_charset = 'UTF-8';
注:设置默认编码,
修改:$default_language = 'en_us';
改为:$default_language = 'zh_cn';
注:设置默认语言为中文
(3)中文字体的问题
然后修改 include\utils\GraphUntils.php
VtigerCRM 系统安装
图 1:VtigerCRM 初始化安装
2、安装程序检测系统环境
图 2:安装程序检测系统环境
3、VtigerCRM 系统基本设置
图 3:Vtiger 安装设置
4、确认安装设置
图 4:系统设置确认
5、配置文件写入,点击"Next",即开始数据库初始化
图 5:配置文件写入 图 6:数据库的初始化
6、数据库表的创建,数据库初始化
如图 6 所示。
7、VtigerCRM 安装成功
8、VtigerCRM 登录
图 7:系统安装成功
嵌入式
如何成为一个优秀的程序员
——致亚嵌就业班的报名者和新学员
◆亚嵌教育(www.akaedu.org) 宋劲杉
作者简介:清华大学自动化系硕士,北京亚嵌教育研究中心(www.akaedu.org)高级讲师,5
年嵌入式系统开发经验,2 年嵌入式行业教学经验。参与多个嵌入式系统项目开发工作,精通 Linux 内
客地址:http://djkings.javaeye.com/。
我们的老师每天都要应对报名者和学员提出的很多同样的问题,以下是这类典型问题的汇总:嵌
入式行业(或者 IT 业)有没有前途?我听说编程编到三十五岁就没人要了,一定要转行找出路是吗?做
驱动开发和做应用开发哪个更有前途?我一开始看什么书都看不懂,怎么才能理出一个学习顺序?诸如
此类。这使我迫切地感觉到,应该总结这样一份非具体技术问题的 FAQ 了。本文仅代表我个人观点,有
问题欢迎 Email: songjinshan@akaedu.org。
1、各种软件技术之间是怎样的关系?
我把软件技术分为三个层次:
◆问题域:计算机图形学、音视频编码、信息安全、模式识别、信息检索、自然语言分析、人工智能、
科学计算等;
◆ 系统功能:硬件描述语言、计算机体系结构与编程模型、指令集与汇编语言、C 语言、内核、文件系
统、设备驱动、网络协议、POSIX 等。
计算机最终是做什么用的呢?最终是通过问题域的各种技术为用户解决问题的,这些技术都包含
很高深的算法,然而它们必须在一个平台上运行,它们需要利用平台提供的各种基础设施,比如计算能
力、I/O 能力和网络互联能力。系统功能和系统集成层就是用来实现这个平台的。系统功能层实现计算、
I/O 和网络的基本功能,系统集成层对这些基本功能做一些抽象和包装,提供更方便灵活的接口。
2、为什么要学习嵌入式技术?
在亚嵌的学习期间,你将详细了解系统功能层的各部分是如何工作的,也会在面向对象编程、
GUI、数据库、网络服务等系统集成层的技术方向进行探索。嵌入式系统可说是麻雀虽小五脏俱全,虽然
没有 PC 和服务器那么复杂,但计算机系统的各种组成一样也不缺。因此,以嵌入式系统作为切入点开始
学习软件技术是非常好的选择,避开不必要的复杂性,把握计算机系统最根本的概念和技术要点。打下
扎实的基础之后,你的职业发展则完全不必局限于嵌入式领域,即使你日后做 PC 或服务器开发,在亚嵌
所学的知识和技能同样使你终生受益。正如庖丁解牛,心中有全牛,自然就能游刃有余。
另一方面,你一定见到各大网站都有大量的宣传,说现在嵌入式行业前景空前的好,嵌入式人才
紧缺,有几百万职位空缺等等。这些说法也是对的,但我们需要更深入地理解这说明了什么问题。刚才
我们说,嵌入式系统也是一个完整的计算机系统,和 PC 或服务器没有本质的区别,事实上,嵌入式、PC
和服务器的界限已经越来越模糊了。以前的嵌入式就是单片机,只能做简单的运算处理,现在的 ARM 处
理器性能比从前的奔腾还强,打游戏、看电影都没问题,谁能说它不是 PC 呢?另外有些专用的嵌入式系
统已经在充当服务器的功能了,而集群技术更是可以使许多廉价的处理器组合在一起发挥大型服务器的
作用。由于嵌入式越来越多地应用到电器、汽车和各种设施上,无处不在,并且与 PC、服务器呈融合的
趋势,所以嵌入式行业前景空前的好。
3、有人说软件技术变化太快,现在学的东西过两年就要淘汰,是吗?
各种流行的开发工具和高级语言虽然变化很快,但是底层的编程语言却非常稳定,各种操作系统
的内核都是用 C 语言写的,以前是这样,以后也不会改变。另一方面,各种编程语言的设计思想也是非
常稳定的。其实世界上只有两种编程语言,一种是 C,一种是 LISP,前者是 imperative 的,是对计算机模
型的抽象,后者是 functional 的,是对数学函数模型的抽象。面向对象是一种重要的软件工程思想,却算
不上一种新的语言模型,应该归在 C 的一类。属于同一类的各种语言其实都大同小异,一个精通 C++的
人学习 Java 需要多长时间?熟悉语法一个星期,熟悉类库三个星期,一个月足矣,以往的经验都可以套
计算机科学与编程语言无关,甚至与计算机本身也没太大关系,它研究的对象并不是计算机,而
是人分析问题解决问题的方法论。程序写出来最主要不是为了给计算机执行的,而是为了给人看的,使
用编程语言和使用自然语言一样是为了表达和交流,只不过程序还可以顺便给计算机执行而已。
以上这些话并不是我说的,而是一位著名的计算机科学家说的。所以,在编程语言的层面上争论
是没有意义的。很多初学者错误地认为掌握了编程语言就等于学会了计算机,一种编程语言都还没有掌
握好,更没有上升到方法论的层面,只有这种无知的人才会去争论哪种语言好的问题。掌握了编程语言
远远不等于学会了计算机,而只是最开始的一步,最简单的一步,到了工作中,用到什么语言就去学什
么语言,什么语言过时了就丢掉,编程语言不需要积累因为它太简单了,真正需要积累的是方法论。
很多人喜欢参与到这类争论之中,毫无例外,每个人都在为自己熟练掌握的编程语言辩护,就是
“我会的语言最好,我不会的语言都不好”,其实这些人真正想说的是“我会的语言最好是千秋万代,
我就不必学新的语言,不必适应新的变化了”,概括起来说就是一个字,懒。真正的高手都是会很多编
程语言的,国外有些做技术咨询的,每年都要学好几门新的编程语言,这样才能应对市场的变化。不断
丢掉旧的编程语言学习新的,看起来好像完全是白费力气,没有积累,其实,每种编程语言的设计都有
独到之处,体现了每种语言的精髓,在融汇百家之后积累下来的正是方法论。
争论哪种语言能做的事情更多、功能更强是没有意义的。从理论上说,任何一种符合图灵机模型
的编程语言,加上适当的 I/O 扩展都可以做任何事情,用 shell 脚本也可以写出很像样的游戏来。只不过
各种语言的设计目标不同,表达能力不同,做不同的事情所需的代码量不同而已。
另外一种错误认识是:哪种语言的市场最大,开发人员最多,哪种语言就最好。单从这种意义上
说,Java 的确比 C 更好,所以往届有学员问我们为什么只教 C 语言。请你注意,操作系统内核是用 C 写
的,各种底层的应用程序包括 Java 虚拟机也是用 C 写的。如果你想学 Java,在亚嵌的学习完成后你将有
能力分析 Java 虚拟机的实现,站在计算机系统的高度来学 Java 才会使你成为真正的 Java 高手。如果你只
想速成,想早点学成一门技术去做拧螺丝的工作,那么亚嵌不适合你。
5、我听说编程编到三十五岁就没人要了一定要转行找出路是吗?
这个观点虽然很流行,但根本不值一驳。现在三十五岁转行的那些人,都具有前面所说的那些特
征,对学习新技术不感兴趣,对探索计算机的本质不感兴趣,得过且过,下了班就是打游戏、看电视,
总之就是懒。如果是开出租、摆摊,勤快人懒人都有饭吃,而 IT 这一行对懒人是非常无情的,懒人就不
该入 IT 这一行,不从自身找原因,却到处散布这种言论,怪社会不好,打击新人的信心,着实可恨。
另外一种情况,编程编到三十五岁,进入公司的管理层,或者自己创业,这都是很勤快的人,如
果他们把这种勤快用在技术上肯定也可以做得更好,所以也无法证明编程编到三十五岁会因为没有出路
而转行。
编程不是个体力活,需要高强度的思考和智力投入,分析能力、思考能力都需要时间积累起来,
所以并不是越年轻干得越好。相反,我认为三十岁以前写的代码都是垃圾,三十岁以后才能写出像样的
程序来。如果希望一辈子走技术的道路而不会被迫转行,就要不断地把自己的工作性质从“体力活”变
成“脑力活”。什么叫“不断地”变呢?这里的“体力活”并不是指种地、盖房子这种劳动,而是指简
单重复地编写代码,这时你会感觉,派给你的工作都能凭以往的经验轻松应付了,但是千万不要满足于
现状,就像温水煮青蛙一样,这是危险的处境!要摆脱这种处境就需要学习、思考、提高,让公司派给
你更有挑战性的工作,在工作中应用新学到的知识和技术就是“脑力活”了,但是用得久了又会变成简
单重复的“体力活”,这时就需要再学习、再提高,所以叫做“不断地”把自己的工作性质从“体力活”
变成 “脑力活”。如果有一天你发现,自己长期陷于简单重复的劳动之中,并且业余时间非常少,无法
学习提高,这说明公司不会用人,你就该考虑跳糟了。
从另外一个角度来说,如果希望一辈子走技术的道路,就要有自己的核心竞争力,这个核心竞争
力决不是凭以往的经验能够做某些工作的能力,而是学习能力、思考能力和解决有挑战性的新问题的潜
力。在 IT 这一行,凭借以往的经验干重复的活是干不长久的,原因很简单,一个问题不会被解决两次,
当你发现你的经验能够解决一类问题时,别人早把解决这一类问题的套路编写成 framework,新上手的人
即使不具备你的这些经验也可以调用 framework 中的类和函数来解决问题,然后在这个 framework 的基础
上积累新的经验解决新的问题。正因为如此,全世界开发人员的经验才会积累起来,促使软件技术发展
得如此迅速。这并不是说经验完全没有用,最关键的,学习和思考也是建立在以往经验的基础之上的。
另一方面,现有的 framework 并不一定是某方面开发经验的完美整合,也需要不断发展,用新的办法重新
解决老问题,以 Web 开发为例,从早期的 ASP、PHP 到后来的.NET、J2EE,到现在的 Ruby on
Rails、Django 等等,这些 framework 解决的是同一问题,就是如何快速有效地开发 Web 应用,这方面的
6、做驱动开发还是做应用开发更有前途?
意思就是说,“你告诉我哪个更有前途,我就好好学哪个,另外一个就不用学了”。问这种问题
的学员往往会同时问另外一些问题:我以后就想做驱动开发,你教我这些应用开发的技术有什么用?C++
用得多吗?学了有什么用?我以后不想做 GUI,你教我 Qt 有什么用?
学习最忌讳的就是“有用的就学,没有用的就不学”这种功利的态度。两个问题:第一,在你还
没学进去、还不了解这种技术时,要如何判断这种技术学了有没有用?只能是根据道听途说,看各种论
坛上都怎么说的,岂不知论坛上参与这种讨论的 100%都是菜鸟,有的水平还不如你。第二,就算你学的
技术没有用上,有什么损失吗?从亚嵌毕业的学员从事各种各样的开发工作,有做驱动的,有做系统编
程的,有做 GUI 的,有做 Web 开发的,只要确定了做一类工作,就不可能把在亚嵌四个月学的知识都用
上,但至少也用得上 3/4 的知识,假设剩下的 1/4 你一辈子也没机会用上了,那也就损失你一个月的学习
时间而已,相比于你的收获,这算是很大的损失吗?请注意,上面的假设是不成立的,没用上的那 1/4 也
只是暂时没用上而已,程序员要换工作或者换项目是很常见的,任何人都不可能只涉及一类开发工作,
只要有扎实的基础、完备的知识体系,任何工作都能轻松上手。
扎实的基础,完备的知识体系,我们在安排就业班课程体系的时候,正是以这两点为依据的。有
的课程内容很少有学员在以后工作中会用到,但是缺了这一环就不成为一个完备的知识体系,例如 MMU
和 Cache,那这种课该不该上呢?毫无疑问该上。有的课程培养一种基本的编程思想,例如通过 C++来讲
面向对象编程,通过 Qt 来讲面向对象、事件驱动和状态机编程,这些编程思想是程序员必备的基本素质,
而 C++和 Qt 可能有些学员以后工作用不到,那这种课该不该上呢?毫无疑问该上。至于还有些人争论说
C++不如 Java 用得多,Qt 不如 GTK 用得多,请翻回去看 FAQ4,这种争论是无意义的,有工夫争论谁优
谁劣,不如把两种都学了,会更有收获。
回到做驱动开发还是做应用开发更有前途的问题。我只能说,做好了都有前途,做不好都没有前
途,只会做一样而完全不懂另一样是最没前途的。不要以为内核开发者就不写应用程序,Linus 写了一个
源代码管理系统 git 来维护内核,因为觉得现有的源代码管理系统都不好用。牛人都是这样,需要什么就
写什么,才不管是 kernel space 还是 user space。同样,做应用开发如果不懂内核,也没有办法很好地利用
内核提供的服务写出性能最优的程序。做内核难,因为调试难,要跟踪大量的并发线程,因为入门难,
要写一个 hello world 都需要学很多知识。做应用也难,回头去看 FAQ1,计算机科学从理论到实践大部分
都在上面两层做文章。所以不存在哪个更难哪个更有前途的问题,任何关于哪个更难的讨论都是 too
7、我一开始看什么书都看不懂,怎么才能理出一个学习顺序?
懒真的是人的本性,就连学习的过程都希望是一条路顺利地走下去,不用动脑就能学会的:身后
走过的路都是“已知”,每走一步就把眼前新的“未知”变成“已知 ”,如此一路走来,把所有的“未
知”都变成“已知”就算学成了。可惜,知识不是一条路,而是一个圈,你从任何一个地方跳进这个圈
开始走,身后都是“未知 ”,眼前也都是“未知”。有的人就是不能容忍自己的身后是“未知”:看一
本书,一个新的概念 A 是用我不了解的概念 B、C 来解释的,我连 B、C 都不懂怎么学 A?没法学了!
不是人家书写得不好,而是没有任何办法能把一个圈扯成一条直线的。学习的过程本质上就是一
个循环往复的过程,唯一的办法就是“存疑”:在本子上记着,有 B、C 这样两个概念是我暂时不理解
的,然后就不再去想这回事,而是相信自己已经理解了 B、C,基于自己的理解和假设去学习 A,由 A 再
去理解 X、Y,这样学下去,走完一圈之后再回来,自然就明白当初对 B、C 的假设正确不正确了,理解
了这两个概念,就从本子上划掉,这时需要再走一圈,把原来的一些错误认识纠正过来。所以,任何书
都要至少看两遍,第二遍看的时候你会对很多概念有新的认识,因为你看过这个概念后面的章节,在此
基础上产生了新的认识。古人早就明白这个道理,所以提出了“温故而知新”。
亚嵌的课程体系经过多年教学实践的锤炼,已经很好地理顺了知识之间的关系,使你从最佳的位
置跳进这个圈开始学习,所谓“最佳位置”是指,在你初学的时候需要容忍的“未知”尽可能少,需要
做的假设尽可能少,但要想消除所有的“未知”是不可能的,例如没有学内核就要学 C 语言。根据你以
往的经验和一些运气因素,你对内核的一些假设可能正确也可能错误,但这并不影响你学 C 语言,对内
核的一些错误假设可能会导致在学 C 语言的过程中有些误解,但没关系,只要跟着我们的课程体系一步
一步走下来,这些误解和错误的假设最终都会纠正过来。
8、有哪些好书可以推荐一下吗?
能问出这个问题的都是聪明的学员。看书学习是入门过程中非常重要的一环,如果用一本烂书入
UNIX Network Programming Volume 1, 3rd Edition: The Sockets Networking API;
1. GPIO 作为中断使用
* 设置产生中断的方式;上升延,还是下降延;
IPR0-IPR39 寄存器;来设置中断的优先级。
根据不同的应用模式选择不同的中断方式。例如网卡就应该设置其中一种延方式触发。GRER 和
GFER 的对应位不能同时设置为 1。如果这样做了,驱动误认为收到或者发送了两次包。 例如:SD 卡中
断可以设置 GRER 和 GFER 的对应位都为 1。这样插入卡和拔出卡就可以用同一个中断。不需要使用两个
GPIO 中断来实现。
* 设置 GPIO 为输入状态;
* 不用作中断模式;
* 空闲;
* 插入到 PC 连接状态。
谈谈写程序与学英语
◆亚嵌教育(www.akaedu.org) 宋劲杉
俗话说,没有金刚钻,就别揽瓷器活儿。套用到 IT 业,英语不行,就别做程序员。网上关于程序
员学英语的文章不少,但我想谈谈我自己的看法。首先详细讨论一下为什么程序员离了英语不行,然后
针对程序员应该怎么学英语说说我的体会。
英语是计算机的母语,是程序的母语,所以必然是程序员的母语。程序中的变量名、函数名起得
好不好是决定代码质量和可维护性的最关键因素。高质量的代码应该是这样的:代码基本上是自解释的
(self-explanatory),不需要太多注释,不管代码的规模有多大,具有相关知识背景的读过文档的人都可
以立刻上手、立刻参与维护和开发。要想使代码能够自解释,给变量和函数起个好名字很关键,很显然,
只能用英文起名字,一是用汉语拼音起名字可读性很差,二是英文单词通常比汉语更 expressive(看吧,
如果用汉语来说,就得说"表达能力更强"、"更有表现力"这么罗嗦),由于程序的复杂性,变量和函数往
往表示一些很抽象的概念,起个既准确又简洁的名字并不容易,可是很多时候,用汉语需要很多字才能
说清楚的一件事,用英文一个单词再加点词形变化就能说清楚了。例如 APUE 上讲 sleep 函数的实现,其
中有个变量表示"本来应该睡到某个时刻,但是提前被信号唤醒了,唤醒时与本来应该睡到的时刻相差的
说说英语对于看书学习的重要性。中文技术书和
英文技术书的水平根本不在一个量级上,这是有很多原因
的,不能全归结于中文书的作者水平差。最重要的是,出
中文书的低回报率决定了作者不可能花太多心血在上面,
你去 amazon 看看一本书卖多少美刀,再去 chinapub 看看
一本书卖几块钱。老外写一本书,可以做到全书没有一个
拼写错误(当然英文的拼写检查工具更完善也是部分原
因),中文能找出一本没有错别字的书吗?Knuth 可以悬
赏让全世界读者来找磋,中文书作者有哪个敢这么做?不
是因为老外态度有多认真治学有多严谨,而是因为他们赚
到了,就应该拿出高质量的作品来,不然会被读者骂的。
英文技术书的翻译质量通常很差。也不能归结于
译者的水平差,我也翻译过书,也努力想译好,但真的很
难译好。IT 业的新名词层出不穷,像"内核"、"网络"这种
常见术语还好,稍微专一点的术语都没有统一的译名。我
们在教学中发现,很多学员看书时搞不清这本书的名词 A
和那本书的名词 B 是什么区别,来问老师,才发现原来 A 和 B 就是一回事儿。这是一个单词对应多个译
名的情况,还有一个译名对应多个单词的情况,比如 field、domain、realm 都译成"域",block、bulk 都译
成"块",argument、parameter 都译成"参数",attribute、property 都译成"属性",虽然这些词的意思本来就
差不多,但是在一篇文章里,作者可以换着用,不同的单词表示不同的概念,翻译完了一看,都成一个
概念了。英文书背后都有 index,看到一半忘了某个名词是怎么定义的就可以翻 index,而译文通常没有
index,名词都已经乱七八糟了,没法做 index。还有更发指的是,老外喜欢造词,现有的单词上加一点变
然后说说英语在开发工作中的重要性。看书学习通常只起一个引导入门的作用,在工作中更有用
的是手册、文档。学完了 C 语言开始写程序了,谁还会去查 K&R 附录中的库函数?查 man page 才是最
有效率的。然而手册比入门书更少有中文译版,因为手册是随时变的,会随着软件版本更新,而且需要
看这些开发手册的人通常不会有英文障碍,有英文障碍的人即使看了翻译的手册也写不出好程序来,所
以当然没必要翻译了。不管什么技术,官方的手册和技术标准才是最原始的第一手资料,看别的书都是
以讹传讹,由于自然语言不可避免是有歧义的,文档中表达得不准确的地方就会被文档的读者也就是技
术书的作者误解,技术书中再有表达不准确的地方又被译者误解。我们小时候都玩过传话的游戏,几个
人站一排,通过悄悄话传一句话,传到最后变成什么了?所以,学网络协议,就得看 RFC,学 ARM,就
得看 ARM 公司的 Architecture Reference Manual,要学习 C 语言就得看 C99,有歧义不要紧,自己去揣测
原作者的意思,总比道听途说的可靠。
我们的学员出去面试经常被问到的一个问题就是:在开发工作中遇到问题,书和文档上都没有答
案,网上搜一下也没有答案,怎么办?要我说,能看懂源代码的就去源代码中找答案,这称为 hacking,
不管是内核、libc 还是各种 framework,你调用的东西有问题都能从它的代码中找到原因。如果没有能力
hacking,或者时间紧不想去 hacking,最好的办法就是去官方邮件列表和 IRC 问。如果英文不行就没办法
了,只能去一些中文论坛:"各位大虾帮忙,小弟有一个问题求救!跪求!!在线等!!!"在线等了好几
天也无人问津,或者答非所问。岂不知逛这些论坛的没有大虾,都是菜鸟,大虾们都在 IRC 上聊得正欢
呢。我在做 Qt 开发时曾经有一个问题,当时在教育网,上国外网不方便,去各大中文论坛问了好几天也
没人给出满意的回答,后来花钱连了国外网,去 trolltech 官方新闻组提问,只等了几分钟就得到了满意的
解决办法。这次经历给我留下了深刻印象,从此以后再也没有去中文论坛。
那么,如果现在英文水平很差,又想做程序员,应该怎么学英语呢?我下面说的方法有两个前提,
一是你的英文至少达到高中毕业水平,也就是语法基本都学完了,即使用得不熟练也知道有那么回事儿,
二是你希望尽快在工作中用上英语,写程序够用就行,而不是有考 T 考 G 这样的更高要求。
学习英语有听说读写四个方面的要求,做程序员至少需要读和写非常流畅,如果在外企工作还需
要听和说的能力。技术英语和考 T 考 G 是不一样的,一是听和说不像读和写那么重要,不必担心自己
是"聋哑英语",没关系,丝毫不影响你成为编程高手,二是要求的词汇量要小得多。考 T 考 G 都要拿一
本单词书背,很少有人会觉得背单词很有意思,至少我是觉得很痛苦,幸运的是看技术书不需要多少词
现在就拿起一本英文原版书开始看吧。和学游泳一样,阅读的能力只能通过阅读本身来练习。我
的经验是,不必先系统学习了单词和语法再看书,可以在看书时用到什么就补什么。我建议初学者看电
子版,因为现在的词典软件都可以鼠标取词,边看边查很方便,很多勤快人喜欢把查过的单词都抄下来,
我觉得没有必要,反正查字典很方便,下次再看到了就再查,多查几次总会记住的,抄下来就打断了看
书的思路,而且不见得抄下来就能记住。也许是因为我这人比较懒,我用的都是懒办法。很多人不喜欢
看电子书,理由是盯着屏幕看书太累,那么盯着屏幕写
程序累不累?这种人显然不适合做程序员。语法不熟练
怎么办?大多数情况下单词的意思都明白了就不影响阅
读。技术书有时候喜欢用长句,其中可能包含各种从句,
如果实在读不懂就去查语法书,同样也不需要把这种从
句彻底弄明白,只要这一句能看过去就行了,以后多查
几遍书,自然就掌握了。另外,技术书是说明文,通常
不应该有过去时,看到过去时就需要注意了,很可能是
虚拟语气,如果不注意这一点,看到的意思可能和真实
的意思正好相反。
应该从哪本书开始看起呢?从你当前最需要学的技
术书看起。看书是相当花时间的,如果能一边学英语一
边学技术,这时间利用得就很有效率。比如,如果你的
C 语言已经学得相当好了,不要专门为了学英语去重看一遍原版的 K&R。市面上有一些专门的计算机英
语教材,我的建议是不要看,浪费时间,nonsense。初学时最好选一本有中文译本的书,有看不懂的地方
可以翻中文版来对照,但是不要相信中文的翻译,原因在前面讨论过了。如果你是初学编程,没有任何
基础,我可以推荐一本英文很浅显技术也很浅显的书:How To Think Like a Computer Scientist,有
Python、Java 和 C++版本,可自由下载。
要逐渐养成良好的阅读习惯。一是不要每个生单词都去查,有些单词很生僻,查了也记不住,记
住了也不会再见到它了,但是前面讲过,都是作者在卖弄词汇量,无视它丝毫不影响阅读,因此要学会
猜测单词的意思,能不查就不查,继续贯彻"懒"的原则。二是看书不要动口,不念出声也不行,就是不要
以上本着"够 用就好"的原则,多次
提到用懒办法,但是 学技术学英语这两件
事不能懒,贵在坚持。 要养成良好的阅读习
惯也有很多东西需要 坚持,其中最根本的
是持续高度集中注意 力,充分调动记忆能
力、推理能力、猜测 能力,就像考试做阅
读题一样看每一段话。 最根本也是最重要
的,"有英文原版就不 看中文版"这个原则一
定要坚持。一开始看 英文书可能会很慢,
但只要一直坚持就会 慢慢达到原来看中文
书的速度,再坚持下 去就会比中文书看得
更有效率,因为避免 了很多歧义和术语翻
译的问题。有人会说, 项目紧任务急,看英
文资料太慢,这次就 先用中文尽快解决工
作中的问题吧,等以后有时间了再看英文书学习。可是什么时候才会有时间呢?工作总是一个接一个的,
老板怎么会付了工资让你闲着呢?如果你有这样的困难,我的建议是干脆辞职,学好了英文再去工作。
你只要想想,你的同行们在外企全英文的环境下工作,英文和技术每天都在突飞猛进,而你还在用效率
极其低下的方式学习和工作,你和别人的差距不是越来越大了吗?另一方面,现在的在校学生从小学就
最后说说写作。刚开始练习时不要怕写错,能表达清楚自己的意思即可。我看过很多源代码和文
档中的英文,一看就是中国人写的,谓语动词不分单复数,名词复数不加 s,处处可见中国式英语,但是
丝毫不影响我对这些编程大牛的景仰,因为其中的思想我看懂了,并且我认为很强大。我有一个朋友,
中学毕业就出来混的,由于工作的性质总要跟老外打交道,他从来不惧和老外交流,虽然连一个囫囵的
句子都说不出来,但总是能用中学学的那点单词让老外明白他的意思,这一点我就非常佩服。总之就是
说,不要因为不知道怎么写是对的就不敢动笔写,只要敢交流,并且别人能懂你的意思,就是很有效的
交流。而且随着阅读量的增加,自然能写出一手好英文,前面讲过了,创作总是从模仿开始的。不怕出
错才能有一个好的开始,才能逐步练习提高,而练习的最终目的当然还是希望写好,不仅字句通顺无语
法错误,还能适当修辞。
编读往来
Jxy:
很偶然的发现了《开源》杂志,大致连贯地看了下已经出版的 5 期,说说我的感受。
1.杂志在排版上是不断进步的,5 期下来,从封面,到栏目版式,已经形成了一套整体的风格,能给读者带来较深刻的
印象,并且能带来较强烈的认同感。
2.从内容上是不断完善的,很小的一个细节,从 4 期开始将桌面应用栏目更改为经验技巧,这样的定位应该更有利于选
题和读者的投稿,而单纯的桌面应用和企业应用很多层面上是难以划分的。
的编辑部队伍是这个杂志的保障。
开源某些领域的权威,看得出杂志的编辑在内容上是费了心思的。
5.杂志形式有一些建议,得考虑读者的阅读习惯,PDF 的格式在电脑上阅读起来还是很费劲的,以后可以考虑通过电子
6.内容上,目前不便发言,5 期内容很丰富,待仔细阅读完成后再来谈谈自己的感想。
ghosTM55:
《开源》的新闻评论非常到位,个人建议杂志在技术报道以及研究的篇幅方面可以进一步增大。并且可以开一
个小板块,将一个月论坛内优秀的技术讨论帖发布上来,这样可以潜移默化的引领一种社区的技术研究氛围。美工方面
再加强一下,可以考虑先从字体开始,在排版的时候尝试使用一些开源的字体。另外就是建议《开源》有一个主色调,
pedant:
什么盈利啊!!!
有关 web 版杂志进一步的建议:
人解决,靠一个人解决也非一个有效的长久机制。
我也愿意作为志愿者帮助复核,但是考虑平日工作关系,无法挤出一段完整的时间,都是零零碎碎的时间,相信
很多朋友有跟我一样的情况。所以,这一次我要提的进一步的建议就是:google sites。
内容,排版、文字修订等工作完全可以通过志愿者完成,这样既省了发起人的精力,又让志愿者享受到“开源”哲学的
codingtmd:
我在 cnbeta 上看到了这个连接,就点开了。书我看了,还好,看的出来编写的很用心。但是我想起了我以前,
想想原因,无非如下几点:
1.不正规,完全散兵游击,依赖于休息时间,出稿和排版等工作都没有时间表。
2.坚持下去很难。
3.刚开始的时候影响面很窄,没有多少人看,于是信心和热情渐渐就磨灭了。
我看见上面一个朋友说“一个杂志,尤其免费杂志,开始做,就需要坚持”,真的很有道理,尤其我自己有类
似的经历,人气和影响力是要慢慢积累的,希望《开源》的编委们能好好耐心办好这份杂志,办一件事情容易,但是坚
持把一件事情办好,很难!加油!