[转] 史上最经典的LINUX内核学习方法论

待到山花烂漫时,还是那些经典在微笑。 有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作(个人概括为“2+1+2”,第一个2是指2本全面讲 解内核的书,中间的1指1本讲解驱动开发的书,后面的2则指2本有关内核具体子系统的书,你是否想到了某某广告里三个人突然站起单臂齐举高呼“1比1 比 1”的场景?)。 《Linux内核设计与实现》 简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时 间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必 读的书籍。新人得有此书,足矣! 《深入理解Linux内核》 简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多。 前面这两本,一本提纲挈领,一本全面深入。 《Linux设备驱动程序》 简称LDD,驱动开发者都要人手一本了。 《深入理解Linux虚拟内存管理》 简称LVMM,是一本介绍Linux虚拟内存管理机制的书。如果你希望深入的研究Linux的内存管理 子系统,仔细的研读这本书无疑是最好的选择。 《深入理解LINUX网络内幕》 一本讲解网络子系统实现的书,通过这本书,我们可以了解到Linux内核是如何实现复杂的网络功能的。(忘了声明下,我这列出来的书名是中文的,但是并不代表我建议大家去看他们的中文版,其中有的翻译的实在太??了,呵呵) 这5本书各有侧重,正如下面的图所展示的那样,恰好代表了个人一直主张的内核学习方法:首先通过LKD或ULK了解内核的设计实现特点,对内核有个整体全局的认识和理解,然后可分为两个岔路,如果从事驱动开发,则钻研LDD,如果希望对内核不是泛泛而谈而是有更深入的理解,则可以选择一个自己感兴趣的子系统,仔细分析它的代码,不懂的地方就通过社区、邮件列表或者直接发Email给maintainer请教等途径弄懂,切勿得过且过,这样分析下来,对同步、中断等等内核的很多机制也同样会非常了解,俗话说的一通则百通就是这个道理。当然,如果你选择研究的是内存管理或者网络,则可以有上面的两本书可以学习,如果是其他子系统可能就没有这么好的运气了。 内核社区 最近几年,社区网站非常的热火,不过此社区非彼社区。 Linux最大的一个优势就是它有一个紧密团结了众多使用者和开发者的社区,它的目标就是提供尽善尽美的内核。内核社区的中心是内核邮件列表(Linux Kernel Mailing List,LKML),我们可以在http://vger.kernel.org/vger-lists.html#linux-kernel上面看到订阅这个邮件列表的细节。 内核邮件列表的流量很大,每天都有几百条消息,这里是大牛们的战场,小牛们的天堂,任何一个内核开发者都可以从中受益非浅。除了LKML,大多数子系统也有自己独立的邮件列表来协调各自的开发工作,比如USB子系统的邮件列表可以在http://www.linux-usb.org/mailing.html上面订阅。 其他网络资源 除了内核邮件列表,还有很多其他的论坛或网站值得我们经常关注。我们要知道,网络上不仅有兽兽和凤姐,也不仅有犀利哥和韩局长。http://www.kernel.org/ 可以通过这个网站上下载内核的源代码和补丁、跟踪内核bug等。http://kerneltrap.org Linux和BSD内核的技术新闻。如果没时间跟踪LKML,那么经常浏览kerneltrap是个好主意。http://lwn.net/ Linux weekly news,创建于1997年底的一个Linux新闻站点。http://zh-kernel.org/mailman/listinfo/linux-kernel 这是内核开发的中文邮件列表,里面活跃着很多内核开发领域的华人,比如Herbert Xu,、Mingming Cao、Bryan Wu等。

用GITHUB开始整理过去十几年HACK过的代码

周末终于可以休息和有一点自己的时间,用GitHub来给自己整理一个Code回忆录。 从上初中开始到现在16年,除了学校交作业,上班工作写的代码,还写过或者更多是改过无数的代码,各种语言,各种网站,各种创意,回头看看很是有趣。 由于从初中开始到现在换了8台电脑,所以很多珍贵的Code回忆都丢了,我从现有的一些备份中开始慢慢还原它们,留给自己一个美好的回忆。 https://github.com/donge/donge.git

FW:LINKEDIN用一幅图告诉你:工程师最想去的10家硅谷创业公司

donge: 最近很是迷茫,没有方向,来看看湾区工程师们的方向吧,哈哈~~明了了吧。 旧金山湾区,包括整个硅谷,到处都是天才级别的软件工程师。但即使如此,对于创业公司来说,能否吸引最好的工程师仍然是企业成败关键的因素之一。而最火爆最有前景的创业公司,往往也就能吸引最多天才工程师的加入。 而作为全球最大的职业社交网络LinkedIn,自然能发现好的工程师都去了哪里,从而知道目前哪些创业公司是工程师们梦寐以求的地方。下面这张信息图,就是LinkedIn根据24万工程师的信息,统计出2012年第一季度湾区最火爆的10家创业公司。这些创业公司在LinkedIn的员工注册人数都在500人以下。 排名第一的Arista、第二的Nicira和第七名Violin Memory都是网络和数据存储服务公司。Arista是一家提供超速网络交换机的创业公司,创始人是Sun公司的联合创始人Andreas von Bechtolsheim,公司为实验室、大学和Google等需要高速数据处理中心的组织和机构提供交换机,价格往往是思科同类产品的十分之一。Violin Memory是闪存阵列供应商,也是为大数据存储服务提供硬件支持。 另外三家:第三名Box、第五名Square和第六名Pinterest都是大家所熟知的创业公司,如需了解请点击名称链接查看详细报道。 : )

开始使用移动客户端WORDPRESS

这篇是用android app推送的blog。 使用xml-rpc的协议与http交互,不过估计和netconf类似,这种多用户接口的安全性是不太让人放心的。希望不会被黑第三次。

无人关注的,纯洁的,正经的个人博客也被黑了!

我的博客被黑客黑了,看样子是阿拉伯国家的友人,在无聊的日子里为大家带来了一丝欢乐~~ 阿拉伯的兄弟真是闲的蛋疼啊,几百年也不写一次的博客,你也能攻击。 害的我恢复了半天,因为是海外主机,还得VPN的,又慢又麻烦。 索性找到一个可以绑定域名的国内微博客,点点,很适合我,话不多。喜欢用手机写,希望可以绑定成功。 不用国内主机的原因就是备案太繁琐,我天天上班哪有时间备啊,希望点点的同学给力一下,不用太麻烦。 to 点点:开复投的项目,我还是很热衷的用户,绑定后帮你宣传哦:) 附黑图一张,留作纪念,2012.2.16,感谢PYM友情取证~~

FW: 为程序员量身定制的12个目标

对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前。新年伊始,我整理了12个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用。

  1. 变得有耐心
  2. 保持健康
  3. 拥抱变化带来的不适应
  4. 学习一门新的编程语言
  5. 自动化
  6. 学习更多数学知识
  7. 关注安全
  8. 备份你的数据
  9. 学习更多理论知识
  10. 接触艺术和人文
  11. 向新的软件学习
  12. 完成一个自己的项目 接下来我会对这些建议逐个介绍。 变得有耐心** ** 程序员们会担心锻炼耐心付出的努力得不到应有的回报。其实,培养耐心只要付出很小的投入就能够得到相对而言很大的收获。下面是开始锻炼耐心可以尝试的一个列表,只要全身心投入其中任意一项,都可以在一个月左右脱离门外汉(成为有经验的新手)的阶段: 烹饪、徒步、滑雪、天文、慢跑、木工、武术、舞蹈 保持健康 ** 程序员通常久坐少动,因此在日常工作中会面临健康问题,但通常都被我们忽略了。一年中花整整一个月来调整你的生活习惯、饮食和生活环境,这会促使你养成持久、健康的生活习惯。每年去一趟诊所检查血压、胆固醇和血糖,看看这些指标最近有什么变化。如果你的手腕开始疼痛或者已经疼了很久,马上停掉手上的工作开始与“鼠标手”(重复性劳损)作战。注意你的坐姿,尤其是肩膀和脖子。我使用了矫姿器来帮助治疗。 跟踪你的体重、摄入以及燃烧的卡路里。如果有必要,可以改变生活方式以养成健康的饮食习惯和减肥。(《Zed Shaw:程序员的常见健康问题》) 程序员的常见健康问题 拥抱变化带来的不适 在我20刚出头的时候,通过观察身边年纪稍大一些的伙伴我发现有些人停滞不前而另一些则活力充沛,我试着寻找背后的原因。答案就是舒适感。舒适会让技术停滞不前。当找到一个能够为我所用的系统时,我们会一直使用它。但技术是不断进步的,而那些停留在舒适区的人永远不会意识到这些进步能够为他们带来好处。不破不立,要让自己适应不舒适的感觉。 下面列出的事情一开始可能会让你感到不适应: 使用德沃夏克键盘 使用vim替代emacs,反之亦然 不使用鼠标 使用不同的窗口管理器 喝清咖啡不加奶油和糖,或者喝清茶 尝试一个月“流行且无聊的新事物” 一个星期中有一天不开手机 学习使用一种可以单手输入的设备 尝试一个不同的操作系统 一个星期中有一天不上网 试着对饮食加以限制:尝试吃素,成为纯素食主义者,不吃乳制品,等等 每天吃一种你不喜欢的食物 将你习惯使用的胳膊用绷带绑起来 学习用你不习惯的那只手写字 开一个博客 参加公共演讲 一个月听一种你不喜欢的音乐 去医院或退休家庭护理做志愿者 一个星期有一天快生活 去一个与自己文化或语言不同的国家旅行 读一篇广受好评但却不是你喜欢题材的小说 看一场广受好评但却不是你喜欢风格的电影或演出 学会用变速杆(手动)开车 反对你相信的一些事情 在一个月的尝试之后,你可以决定是否继续采用新方式,或者找到新方式中好的经验与原有方式的结合点。例如,在我从使用了10年的emacs转向vim时,我会为插入模式设置emacs风格快捷键从而继续使用vim。(《25个Vim教程、视频和资源》) 学习一门新的编程语言 ** 编程语言起起落落。如果只了解一门语言,程序员的解决问题能力以及职业前景都会因此受到限制。花上整整一个月时间吸收一门新语言或者一个新的编程范式,并用它写一个小程序。 下面是一些可以学习但不是非常主流的编程语言: Racket、 Haskell、Scala、Erlang、Clojure、SML/NJOCaml、Squeak、Prolog、Datalog. 如果你无所不知,那么你可以实现一门新的编程语言。

FW: 为什么程序员的社会地位不高?

新闻来源:oschina 到目前为止,在过去60年中在世界排名前20的国家中,没有哪条街是以程序员或者计算机科学家的名字命名的。没有任何一个世界主要城市拥有程序员或者计算机科学家的雕像。 没有程序员或者计算机科学家获得过总统奖章(Presidential Medal)或者国会金质奖章(Congressional Gold Medal)。 没有国家级别的针对程序员或者计算机科学家的颁奖典礼。但是我们有艺术、运动、经济、娱乐等大型颁奖典礼。更没有红地毯或者类似诺贝尔奖来表彰程序员的成就和为人类作出的贡献。 即使程序员、计算机科学家的工作让整个世界大唱赞歌,他们也只是坐在后排座位,看着别人发表演讲,拿起奖杯。 唯一的一个例外,是英国的计算机科学家 Alan Turing (图灵)被誉为计算机之父。图灵有以下荣誉:一座桥和一条街被命名为“Alan Turing Way”。图灵的雕像从2001年6月23日开始立在了曼彻斯特。从1966年开始,图灵奖每年都会颁发给在这个领域有杰出贡献的人。图灵奖被誉为计算机世界的最高奖项,等同于诺贝尔奖。 大部分的程序员和计算机科学家的薪水都不如销售,管理,设计,医生等等。当然程序员在约会方面也没有优势,他们不是艺术家,音乐家,设计师,建筑师,运动员……程序员们绝对不处于男女关系链(Sexual food chain)的上层。 时代杂志在过去的85年中曾经提名过4位计算机领域的年度人物,The Computer - 1982年,Andrew Grove - 1997年,Jeffrey P. Bezos - 1999年,Mark Zuckerberg - 2010年。 图为Facebook的创始人,Mark Zuckerberg 和他的华人女友Chen。 不管怎样,计算机明星要进入人们的日常生活,学校,街道,市场,媒体等等还有很长的路要走。 于是,我就在思考一个问题,为什么程序员和计算机科学家不能得到合理的认可和荣誉?我看看周围的世界,我在想假如没有这些怪人,世界将会怎样?从iPhone到其他最新的电子产品,少了这些疯狂工作的怪人,一切将不复存在。 还有一个令人不悦的事实: 在2011年10月8日,C语言的发明人Dennis Ritchies和乔布斯差不多时间离开我们。但是关于Ritchie的报道寥寥无几,几乎被世人忽略。只有非常少的媒体,博客和论坛报道了这件事。全世界铺天盖地都是乔布斯的消息,包括美国总统在内的数不清的商界精英和媒体都在报道乔布斯的人生、成就以及遗留的问题。 我想问“Dennis Ritchie 的成就不如乔布斯吗?乔布斯的成就给我们的生活带来了更多的进步?”假如你的答案是NO,那么你怎么解释我上面说的事实、现状?! 于是,基于上述事实,我做了一些调查。我的发现令我震惊,也让我觉得很好笑。 第一个发现:这就是程序员的命。程序员的自我尊重和自我认知价值太低。 有一个现象可以证明这一点:程序员们互相厌恶。他们通常在非程序员面前抨击别的程序员。把一个程序员的代码给另外一个程序员,往往,常常,后者会给前者的工作以负面评价。 艺术家不会这样。 销售员不会这样。 管理者不会这样。 政治家这么做只是为了赢得选票。 其他专业人士他们会公开的支持同行,即使他们有竞争。(例如律师,请不要问我为什么美国事实上是被这帮混蛋统治的)。 简而言之,上面提到的这些行业人员拥有更大的行业事业,以自己的工作和行业自豪。 螃蟹思维是要不得的!(螃蟹思维:一堆螃蟹在盒子里面,盒子是开口的,但是任何一个螃蟹尝试向上爬的时候,其他的螃蟹就会把它拉下来,不让它爬出去。) 第二个发现:大部分人讨厌程序员。 销售讨厌程序员。 管理者讨厌程序员。 设计师讨厌程序员。 政治明星讨厌程序员。 女孩们讨厌程序员。 为什么?我不知道。我们需要让少一些人讨厌我们! 第三个发现:程序员们并不追求浮华的头衔,性感的典礼、奖项、他们讨厌聚光灯。 程序员们喜欢编程。他们想要独自编程。编程是他们的目标,是他们的政治,是他们的荣耀。他们对公共演讲不感兴趣。他们讨厌不如他们聪明的人。他们讨厌不理解C++编程逻辑的人。 于是他开始慢慢说服自己生来就是内向的。所以他害怕外出,害怕接电话,害怕去泡吧,害怕去见陌生人,害怕所有能为他建立社会关系和社会地位的活动。 图为Marissa Mayer,Google的美女高管,程序员出生,常常代表Google在公众场合发表意见,接受采访。 我有一个梦想: 1. 书呆子、怪人也有资格获得总统奖章、国会金质奖章以及其他能够承认他们贡献的高等级的奖项。 2. 我是一个程序员,我和其他程序员是朋友,不是敌人。我不在别人面前贬低程序员。(大家一起跟我念!) 3. 程序员是聪明勇敢的,而且我们也很风趣。“内向不是我们的DNA,所以我们并不是生来就内向,我可以调整我的态度和社交能力。”(大家跟我一起念!)

我司有才的年会片,成研风云

很吊哦~~

FW: 为什么项目经理拿的钱比程序员多?

新闻来源:开源中国 偶然在programmers.stackexchange.com上看到了这个有趣的问题,有人问:既然普遍认为编程是比较难的工作,为什么业务分析人员和项目经理们会拿比程序员更多的薪水?虽然大多数的时候程序员都被发现是最晚离开公司的人,可那些家伙的工作却能拿更多的报酬,为什么会这样? 回答的人很多,但似乎只有一个是比较合情合理的,它是从经济学原理的角度分析的这个问题。 人们所能获得的报酬往往会低于老板们的“最高标准”,而高于人们自己的“最低要求”。在这个范围内,你的实际收入依赖于你相对于你的老板的讨价还价的能力。 假设你给公司提供的服务价值每天1000美元。如果你用枪指着他,他会给你这个价格,因为他别无选择。如果你别无选择,你只能接受每天100美元水平。这是你的浮动范围。 假设你是一个新手,没有背景关系,不出名,你的老板是谷歌。谷歌有很强的讨价资本,它可以等待,去雇用其他人,很多人都想为它工作。你的资本很少,你需要付房租,所以你只能接受每天100多美元,而不是1000美元。 假设你是地球上最后一个会COBOL语言的程序员,而你的老板的主机上正跑着COBOL程序。那么,你拥有很强的讨价还价的资本,你将能得到接近每天1000美元的报酬。 所以,要么是你的项目经理或业务分析员对公司更有价值,要么就是他们有更多的讨价还价的资本。我并不认为是前一种情况,也 就是说,应该是后一种情况。善于人际交往的人很少。这种事情也不能外包——因为他们需要接触客户。他们的相对稀缺给了他们更多讨价的资本,所以他们有了更 高的报酬。 这个巧妙的回答来自NRM,尽管跟其它的各种和政治相关的解答比起来有点乏味,但它确实反映了实际情况。就像他提到的,善于交际的人稀少,这种人在任何公司都能来到巨大的好处,尤其是在软件开发领域。

我结婚了

所有我认识的人和认识我的人,感谢你们在我的世界中出现。 This is the moment, 我结婚了~ 请帖: http://donge.org/invite.htm 如未通知到,尽管来找我补上:)