Archive

Archive for August, 2009

让人惊讶的 Erlang-Web

August 20th, 2009 :: jackyz

Erlang-Web 并不是一个“新”项目,它的出现已经有一阵子了(第一次的公布是在 2008 年的 11 月)。一直以来,因为并没有太多的机会去实际使用 Erlang 来写“传统” MVC 的 Web 程序(了解我的人都知道,我一直在鼓吹采用激进的纯客户端的 JavaScript 的 MVC 来做 Web 开发),所以并没有去真正了解它的特性。这种状况一直持续到最近,一个偶然的原因,需要做一点传统的 Web 开发,这才有机会回头再来审视众多的服务端 MVC Web 开发技术,并有机会认识 Erlang-Web 的强大。

对于一个全新的传统 Web 项目而言(通常这意味着内容要对搜索引擎友好、URL Friendly、有节制的使用 Ajax 等等需求),对于服务端开发框架的考察无非就是需要关注如下这么几个方面:

首要考虑的是编码的“效率”,在这个坐标上,通常都是认为 Ruby On Rails 和 Python Django 之类的“Full Stack Web Framework”具有较高的得分。大量的默认习惯性配置,代码模版,等等,借助这些设施,通常较少的实际编码就能得到相当不错的成果。

然而,这类 Full Stack 框架通常“水比较深”,也就是说,它什么都提供了,但是有点“过了头”。稍微有点“另类”的想法通常容易导致痛苦。在这个坐标上,反而会希望框架再“谦逊一点”,毕竟只是一个 MVC 设施,简洁明了和可裁减也很重要。越简单的越好改,对熟手而言,用起来更能随心所欲。

再然后就是省时省力上的考量,和美工的流程配合、上传下载、URL Mapping、拦截设施、Email模块、与其他系统的接口,等等,该有的都要有,不该有的有了也好,不强买强卖就行。简而言之,能用较少的“脑力”来完成任务,就是上上大吉。

于是,我惊讶的发现自己在越来越多的关注 PHP 之类的技术(其中的一些确实是很不错的选择)。但要知道,对我个人而言,使用这门语言大约是在 9 年以前。这时我才想起曾经听过 Erlang-Web 的大名。没准怎么样呢,大不了回去再用 PHP ,先看看再说。我们了解一下它的特性:

  • Annotations —— 支持“区分主要任务和外围事务”的设施,帮助清晰和重用代码。
  • Architecture of types —— 类型系统,并用这一类型系统来对应界面。
  • Dispatching and Reverse dispatching —— 从 Friendly URL 映射到程序,及其反向功能——生成 Friendly URL。
  • Validation —— 校验用户输入。
  • Internationalization —— 传说中的 i18n 支持。
  • Request dictionary —— 在其他 MVC 中被传来传去的,什么都往里扔的 Request Object 的对应物。
  • DBMS —— 数据库支持,目前只支持 Mnesia 和 CouchDB (太 Erlang 了一点,要是能支持 MySQL ,就算是做做样子也好,胜在够有亲和力呀)。
  • Project configuration file —— 组织配置文件的设施。
  • Data flow —— 处理默认值,格式化参数等等的设施。
  • Template engines —— 模版引擎,目前支持 wtpl 和 Django 的 dtl 模版语言。
  • 其他 —— 一些有意思的组件,如 twitterl, wpart_rss, ew_backup, wpart_erlsyntax, e_auth, e_auth_dets 名字都很简约,可以直接望文生意。

配上 Erlang 内置的分布式和高并发特性,再加上 Mnesia 的诸多优势,看起来还是有一些亮点吧。当然了,特性并不完美,而且学习曲线很可能还有一点“陡峭”。但对于一个处于活跃开发周期中的项目而言,这应该不是什么大问题。长久以来流行在 Erlang 社区的这个说法——“Erlang 并不适合开发 Web 项目”——现在是不是时候改变了呢? ;)

misc

[Ann]CN Erlounge IV

August 11th, 2009 :: jackyz

Call for CN Erlounge IV !

“Erlounge”是国外 Erlanger 对聚会的特定称谓,而“CN Erlounge”这一名称则是从 2007 年珠海的第二次会议开始,一直沿用至今。在 2008 年致力于 CN Erlounge 会务召集与组织的官方网站 ECUG.org 开通,并成功组织了精彩纷呈的 CN Erlounge III 上海站会议。如今,保持着一贯的热情与高效的 ECUG 会务组又在为我们忙碌的准备着今年的盛会 —— CN Erlounge IV 。让我们感谢他们的辛勤付出,也感谢会议历届的赞助商们。

去年 CN Erlounge III 的内容让人印象深刻,而今年 Erlang 的世界又格外精彩,不知不觉间,已经让人对于此次盛会内容又有了更高的期待。

ECUG 成立于 2007-10-14 日的 CN Erlounge II。全称为 Erlang China User Group(Erlang中国用户组)。它是一个民间团体,致力于促进 Erlang 中文社区的交流,以发展和壮大 Erlang 中国社区(了解 “Erlang 中国社区的发展历程”)。

按照 ECUG 的计划,预计每年我们都会举行一次全国性的Erlang开发者大会。这个会议我们简称为 CN Erlounge。下面是历届的 CN Erlang 大会资料:

1. 2007年9月8日,CN Erlounge I,珠三角Erlang爱好者小聚。无会议资料,但酝酿了之后具有里程碑意义的CN Erlounge II。
2. 2007年10月13~14日,CN Erlounge II 在珠海召开。金山为大会主要赞助方。
3. 2008年12月20~21日,CN Erlounge III 在上海召开。盛大网络为大会主要赞助方。

今年 Erlang 中国社区人气有了明显的提高,也陆陆续续有互联网公司使用 Erlang 到他们的产品中。也有很多人开始用 Erlang 风格的并发模型(Erlang Style Concurrency)在自己熟悉的语言(如 C/C++、Java 等)中做事情,一些语言更号称自己已经实现 Erlang Style Concurrency 模型。另外,也踊跃出一批基于 Erlang Style Concurrency 模型的新语言(比如Scala)。在我们看来,Erlang是否会最终非常成功,目前言之过早,但是 Erlang 风格的并发模型(Erlang Style Concurrency)的成功,却是已经不容置疑的事实。

今年将于10月24~25日举行的 Erlang 开发者大会属于第四次 Erlang 开发者大会,简称 CN Erlounge IV。

CN Erlounge 的官方支持站点:ECUG.ORG。

CN Erlounge IV – 发起

1. 时间:2009-10-24 ~ 2008-10-25,为期2天
2. 地点:杭州(详细待定)
3. 议题: 研究、探讨、关注Erlang风格的并发模型(Erlang Style Concurrency)的技术及最新进展(不局限于Erlang语言)
4. 面向人群:对Erlang风格的并发模型有一定了解并有兴趣应用于实际工程的人。
5. 会议主持:ECUG 会务组

会议形式

1. 多数时间由交流会讲师针对某个 Topic 进行论述,其他人提问(Q&A)方式交流。
2. 留出一小段时间,安排沙龙式的对等交流机会。

会议规则

1. 会议的讲师报销来回路费和住宿(申请成为讲师)。点击这里可以查看已经确定的讲师名单。
2. 任何人可报名免费参与听讲(注册并申请参加本会议)。

注:由于场地限制,我们可能没法接受所有的与会申请,请谅解。如果名额已满,我们会回信说明。

重要时间点

1. 讲师注册及Topic征集截止日期:2009-9-15
2. 普通参会者报名截止日期: 2009-10-1
3. 讲师投稿截止日期:2009-10-10
4. 详细会议议程安排公布:2009-10-15
5. 会议日期:2009-10-24 ~ 2009-10-25

CN Erlounge IV – Topic征集

Topic范围

讲师的议题是否必须限定和 Erlang 相关呢?答案是否定的。我们需要Focus的是我们的问题域:如何高效地(包括性能和开发效率)进行分布式编程。我们都关注 Erlang 在这个方向上取得的成就,但不能也不想限制自己的眼界,Erlang 决不是我们唯一。只要你的议题和 Erlang 关注的问题域相关,和分布式、和多核时代面临的挑战相关,就没有“跑题”。Erlang 社区应该是睿智的、包容的。

投稿请发往 ECUG 会务组。

讲稿建议

1. 内容有深度,而不是泛泛而谈。忌局限于一个事实或者一个实践,但是没有任何结论。
2. 内容有一个Focus的问题域。告诉大家你要解决什么问题,它又是如何被解决的。
3. 如果能够结合一个实际的应用实践,那是最棒不过了。

misc