February 27th, 2009 :: jackyz
喷口水() { // (以下内容含有 “反偶像剧” 情节,不喜欢的同学请将目光自行跳过)。
伟大领袖 Chairman Mao 曾经说过 “三天不学习,赶不上刘少奇” 。若干年后,他老人家也许没想到,需要向众小将祭起 “教主宝讯” 的绝招,才能再将少奇同志震翻在地。这其中的原委至今仍是江湖未解之谜,不过,想来也不能排除 “因功课荒废太多而感到绝望” 的因素……。
所以……,各位同学,这则小故事告诉我们:再牛叉的人,也要不断学习,不能自满,否则就可能自爆或者扭曲。
} // 口水喷完。
我们这些搞程序的,怎么说也都算是 “IT 民工” 中的 “技术工种” ,大家平时的工作都很累,休息时读点 Paper ,一来可以开阔眼界愉悦身心,二来还能增长知识发育心智,实在是不可多得的休闲娱乐。废话少说(说得还少?),下面,我们就直接进入 Paper 推荐的环节:
- On the criteria to be used in decomposing systems into modules – David Parnas
- A Note On Distributed Computing – Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall
- The Next 700 Programming Languages – P. J. Landin
- Can Programming Be Liberated from the von Neumann Style? – John Backus
- Reflections on Trusting Trust – Ken Thompson
- Lisp: Good News, Bad News, How to Win Big – Richard Gabriel
- An experimental evaluation of the assumption of independence in multiversion programming – John Knight and Nancy Leveson
- Arguments and Results – James Noble
- A Laboratory For Teaching Object-Oriented Thinking – Kent Beck, Ward Cunningham
- Programming as an Experience: the inspiration for Self – David Ungar, Randall B. Smith
需要说明的是:
- 部分 Paper 竟然要收费才能下载,我个人鄙视这种 “收点小钱事小,阻碍知识传播事大” 的行为,请大家自己想办法,召唤好心人贡献好用的链接。
- 以上 Paper 全部为英文,没能力阅读英文的同学请和我一起大声呼唤翻译达人现身;有能力阅读英文的同学请直接阅读原文;有能力翻译的同学,这些 Paper 可都是鼎鼎大名啊,请你千万不要放过这些极具翻译价值的经典论文。
- 有其他同样值得推荐的 Paper ?请不要客气,自己在留言中补充之。
update: 上次转文,偷懒没有注明原文出处,罪过不小,现在补上:原文在 这里 。
misc
February 22nd, 2009 :: Arbow
JavaEye的lzy.je同学发表了《gen_server tasting 之超简单名称服务》系列文章,似乎关注的不多,本人在这里小荐一下。这系列文章先从学习OTP gen_server所写的一个例子开始,逐渐推广开,使用gen_fsm,supervisor等OTP组件,最后还有简单的测试报告,图文并茂,属于OTP平台开发的实战性文章。
文章比较长,这里就不转贴了,请猛击下面的链接查看:
http://lzy.javaeye.com/blog/321718
http://lzy.javaeye.com/blog/324962
http://lzy.javaeye.com/blog/327399
misc
February 22nd, 2009 :: jackyz
我本人仍然 “一如既往地” 关注着 JavaScript 世界的新进展,在此罗列一下最近见到的几个有趣的项目,顺便(要点就是) BLAH 几句。
Mozilla 的 Bespin 是一个以 TextMate 为目标的 Web Base IDE 项目。 (注:TextMate 号称 Mac OS 下“最伟大”的 IDE,本人才疏学浅,多番尝试始终无法装好 OSX86 ,因而至今仍然未能一试,甚憾) 有意思的是,它采用了一种与几乎所有 HTML Base Editor 截然不同的显示方案 —— 用 Canvas 来 “画” 字符,而不是 HTML 标签。他们这么做了,得到的体会与我们的直观预测不同,而是:效率高,反应速度快(即便是在显示非常大的文件的情况下)。而采用 JavaScript 作为 IDE 的开发语言,作为一个设计决策,带来的好处是:具有最广泛的群众基础,能做到最大限度 Write Once Runs Everywhere (汗一下 Java 和 Flash)。同样,以 JavaScript 作为扩展语言,也使其可扩展能力 (据说 TextMate 的核心竞争力就在于此) 达到了空前的标准。
这个项目还处于早期,离 TextMate 的目标也还相当遥远,但,以 Mozilla 的影响力,加上开源对于 Hacker 的致命诱惑,再加上以 JavaScript 作为开发语言带来的“亲民感”。不难预测,它的发展将会非常迅猛(看看满坑满谷的 Firefox 插件吧)。也许很快就会变得相当好用也说不定。
Box2DJS 则是一个 Physics Engine for JavaScript 项目。我最近在 iPhone 上玩了一款叫做 Touch Physics 的游戏,相当好玩。因而,在看到这个 Box2DJS 的时候,我十分吃惊。原来,只要有了这样的 Physics Engine 做出一个这样的游戏就会变成一个简单之极的 Wrap 工作。毫无疑问,有了这样的秘密武器,开发符合 “物理学规律” 的小游戏已经变得没有技术含量。Box2DJS 的目标运行平台同样也设定为 Canvas + JavaScript 也就是说,同样是 Browser Platform。
无独有偶,这次参加 BeiJingOpenParty 的 “有狐” 又了解到一个国内程序员 (Yahoo 的 EEEE 团队) 开发的非常有趣的项目 —— OpenResty 。OpenResty 是一个为 “以纯 JavaScript 构建的动态网站” 服务的项目。换句话说,你可以用买 “静态网页” 空间的钱,加上 OpenResty 的服务,就可以轻轻松松地做出一个 “动态网站” 来,比如作者的这个博客站点,你可以保存到本地,照样好用。
原理其实并不复杂,因为所有动态的东西 OpenResty 已经用 Restful 的接口提供给你了,只要有个寄生在静态页面之中的 JavaScript 就可以调用这些接口,得到你想要的动态效果。这和 CouchDB 的想法如出一辙,通过和开发者交流,我感觉,在实现念上,也和 CouchDB 颇有类似之处 —— OpenResty 在内部包装了一个 PostgreSQL 的关系数据库,并以 Rest 接口对外暴露,而 CouchDB 则是自己实现了一个 DB 再用 Rest 暴露出来。所不同的是 OpenResty 做得更多。实际上,他就是一个为 “在静态空间建立动态应用” 的需求而专门设计的 Rest 服务 —— 你需要用到的大部分服务,除了数据存储之外的,比如人类图片验证,权限控制等等,它已经为你准备好了。在这样的系统支持之下,你看到的整个 Web 应用,实际上只是运行在你 Browser 之中。这里的 Browser 就好比此前 PC (或者以后的手机)上的 OS,是整个应用的运行环境,换句话说,Browser 本身就已经是一个真正意义上的 Platform。
这里提到的 Browser Platform 并不是一个新名词。以 Browser 作为 Platform ,这正是我们广大的 B/S 系统开发人员们每天都在做的事情。而 “伟大的哥的米斯” —— Google 同学也正在朝着这个 “One Browser Rule All” 的目标 “不泄” 努力。这股洪流之中,只有一个微软 (此处用作形容词) 的代表 “既得利益集团” 的反对声音。看到呼之欲出的 HTML5 标准和作为 HTML5 参考实现(同时也是事实标准)的 Firefox 3.x 为我们展现出未来的这么多种可能,有幸见证这样的变革,我深感荣幸。
misc
February 13th, 2009 :: jackyz
原文出处:http://erlangdisplay.javaeye.com/blog/319839
原文作者:litaochen
盗版者言:couchdb 这个明星项目(本站之前也有做过介绍),最近的曝光率越来越高了。在 IBM 支持其顺利进入 apache 的孵化器(并顺利毕业)之后,其业界声望可谓冉冉升起,隐隐然已是武林新秀。在数据库江湖 IBM Oracle Mysql 三大门派利益纠葛的博弈之中,横空出世的 couchdb 足可谓是 “倒关系型数据库” 阵营的一支奇兵。而 Damien Katz 本人也从当初背水一战 “卖房搬家写软件” 的窘迫,终于等到了熬出头来的一天,能从自己一手拉扯大的项目中获得稳定丰厚的回报。这在当今这个已经没有英雄程序员的时代,也算得上是一个传奇。 (欲知 “米国程序员成功记” 的更多详情,请猛击这里,感谢方块同学的投递)。litaochen 同学的这一篇《CouchDB了解——特性及实现》比起之前本站之前的简短介绍,角度和深度又大有不同,非常值得一读,故,盗版之。
Read more…
misc
February 4th, 2009 :: jackyz
ShiningRay,也就是 《JavaScript高级程序设计》 这本书的译者,Nirvana Studio 的曹力同学 (也就是 CN Erlouge III 照片集里[这张]背着双肩包的帅哥)。 这一次为我们带来了重量级的文档翻译——《Erlang OTP 设计原理》,没错,就是 Erlang 联机文档中《OTP Design Principles》这一部分的完整中文版。
OTP 是 Erlang 里非常重要的一个部分, OTP 之于 Erlang 就好比 EJB 之于 Java (当然不包括 EJB 失败的那些地方),又或者,类似于框架之于程序设计语言,如果你不明白我在说什么,没关系,我自己也有点糊涂,反正只要记住它很重要就对了。可以这么说,学完 Erlang ,你对于程序设计有了一些新的思路和技术,但它们离完整而成熟的具有 “工业强度” 的解决方案还是有一段距离。而 OTP 就是这样的成熟解决方案。之前发明和大规模应用 Erlang 的那些伟大的程序员们,他们从大量的实践中抽象和总结出了一些使用 Erlang 的 “定式” ( Erlang 的术语是行为,概念上类似于模式,如果将其称作模式,又似乎会有点混淆)。并为之考虑好了各种可能的情况,他们将这些高度可重用的代码放在了 OTP 之中。它实际上是一个相当通用的 “架子” ,你需要做的只是先理解 “架子” 的逻辑(设计原理),再以此为基础,分解和建模你的系统,依葫芦画瓢地在 “架子” 上 “填充” 你自己的 “业务代码” 。
曹力同学花费了大量宝贵的春节时间,为我们带来这样一篇重要文档的中文版,严重感谢!建议每一位已经学完 Erlang 语言基础部分的同学都抽点时间,好好读一读这篇《Erlang OTP 设计原理》。
misc
Recent Comments