[招人贴] PtMind

April 21st, 2011 :: jackyz

上次 ECUG 2010 以来,Erlang 在国内其实已经在渐渐地进入“实战单元”了。各路大佬本着“悄悄地进村,打枪地不要”的原则,私下里暗自招兵买马,囤积人才,已经有一阵子了。二十一世纪什么最贵?从各路的跳槽消息来看,冯小刚的话似乎也蛮有预见性的嘛。

“暮春三月,江南草长,杂花生树,群莺乱飞……”,又到招人的季节。坊间招人的英雄贴,渐渐地多了起来。以下便是一则。

Read more…

misc

芝加哥老板[chicagoBoss]

April 21st, 2011 :: jackyz

Chicago Boss 这个名字听起来,怎么也让人联想不到 Web 开发领域。反而总让人不由得想起黑帮、枪战、还有私酒泛滥的 1920 年代(估计是最近看《大西洋帝国》给闹的)。但是,的而且确,这个玩意明白无误地就是 Web 开发领域的事儿。

先上亮点:

High Productivity

Compact query syntax:

boss_db:find(person, [age > 25])

Elegant controllers:

edit('GET', []) ->
ok;
edit('POST', []) ->
{redirect, "/somewhere"}.

Simple data models:

-module(person, [Id, FirstName, LastName]).

full_name() ->
FirstName ++ " " ++ LastName.

Rails-y records:

Person = person:new(id, "Joe", "Blow"),
Person:save()

Django templates:

{% for person in people %}
- {{ person.full_name }}
{% endfor %}

Easy Comet – New in 0.4.5

BossMQ introduces a simple API for sending and receiving messages. Here is a complete long-polling chat backend:

send_chat('POST', [Channel]) ->
boss_mq:push(Channel, Req:post_param("msg")).

receive_chat('GET', [Channel]) ->
{ok, Time, Messages} = boss_mq:pull(Channel),
{json, [{time, Time}, {messages, Messages}]}.

With BossMQ, any controller action is a potential Comet endpoint. Thus, Comet endpoints have complete access to your entire application — databases, templates, the whole stack.

High Reliability

100% asynchronous network I/O

  • Under load, uses less RAM than synchronous apps (PHP, Rails, Django)
  • Comet long-polls won’t block the app server
  • Single-process model keeps CPU context switches to a minimum

Supports both SQL and schema-less databases

  • MySQL
  • PostgreSQL
  • MongoDB (NEW)
  • Tokyo Tyrant
  • Mnesia
  • Or write your own adapter — usually ~300 lines of code

Operational simplicity

  • Zero downtime code upgrades in production (NEW)
  • Standalone server does not require Apache, Nginx, etc.
  • Direct SMTP mail delivery does not require Postfix

Unique testing framework

  • Closure-based tests reduce test code size
  • Run functional tests in-memory — no network I/O
  • Integrated web and email testing

Future plans (not yet implemented!)

  • Full OTP compliance
  • Full test coverage
  • See the Roadmap

好吧我得承认,其中的一些亮点其实是来自 Erlang 语言本身的。

毫无疑问,这个项目提供了 Erlang 和 ruby on rails’ way 的跨界组合优势。比如说,在采用高生产力的 rails 方式来构建项目时,如果心存疑虑,担心某一天会被可能的性能问题跳出来反咬一口的话,那么现在又多了一个具有 FP 风格的选择了。

有必要表扬一句的是:chicago boss 的文档整理得相当靠谱,单就这一点而言,在众多的 Erlang Web 项目中,就很有走红潜质。此外,开发过程似乎也可圈可点,按照 roadmad 的特性持续升级,很让人看好。不过也有的地方让人感觉有点奇怪,比如说,源代码竟然是要下载的,而没有用“开源工业标准”的 github ,这多少有点让我不适应。

顺便 blah 一下,如今这世道, web 开发似乎已经渐渐地在更多转变为前端以 jquery 为基础的 ajax 开发了,换句话说,前端正在静态页面化。而所谓的后端系统也已经相对标准——更像是 restful 的 CRUD 接口再加上薄薄的一层业务逻辑。前端与后端之间的接口方式与约定已经相当之稳定。那么,比如说,有了 chicago boss 这么有生产力的架构,在后端性能开始吃紧的情况下,趁着系统升级的机会,简单地整一把,平滑地将后端系统“迁移”到更高效的平台上,未尝也不是一个不错的升级方向嘛。

misc

Arduino 暗示的另一种可能

November 25th, 2010 :: jackyz

这篇跳出了软件世界,可以说是完全跑题,各位读者小心。
Read more…

misc

ECUG2010作业

October 21st, 2010 :: jackyz

为期两天的 ECUG2010 圆满闭幕,按照惯例,交作业。

[ slides videos ]

上次在上海办的,没有去成,这次在北京,无论如何,抛下一大堆事情还是去了。感觉很好,非常之好,但是你又很难跟人讲清楚到底好在哪儿,组织、演讲、提问、茶歇、闲聊……,样样都好,但似乎让人感觉超好的又还不止是这些而已……,具体是什么,我说不上来,还是得大家亲身去感受才行。

这次大家的 Topic 密度都很大,就好像你还没站稳,对方就势大力沉地给你一个降龙十八掌,如果没被砸晕的话,你至少也得腾腾腾地退个十步八步才能站得住。而且,每个人讲的东西都很不好消化,以至于,我这里趁着每日清晨思路最为敏捷之时,勇猛精进地消化了这许多天,也只能大概其地理出一个思路,还得赶紧动笔写下来,以免一会儿又犯糊涂了。

下面开始 Blah …
Read more…

misc

回应:[erlang-china:3459] 这里好像已经不活跃了?

October 15th, 2010 :: jackyz

某同学在 Erlang-China Maillist 里问:
> [erlang-china:3459] 这里好像已经不活跃了?
> 看看最近的帖子居然都是2009年的。。。。

然后,有人说了:
> ……社区09年上半年比较活跃吧,主要是因为zhao 翻译完《erlang语言编程》出版了,大家热情都很高。现在那些人估计都有点牛屎了,都在忙着怎办把erlang用到项目里去吧,因此也在社区里消失了……

汗~~!作为“牛屎”之一,特地从“牛屎海”的深处浮起来冒个泡,回应一下。

我确实正是在埋头把 Erlang 用到小小的项目里。而,我们搞技术的都知道,一旦深入项目的具体细节,就“不怎么好玩了”。需要面对大量“乏味的业务问题”,大多数问题也不会指向“技术的发现”。在项目这锅汤里泡上一圈出来,可能会得到一堆“解决业务问题”的小窍门,但肯定不会收获多少“解决特定技术问题”的深入思考。尤其是,如果一切以“多快好省地解决问题”为优先考虑的话,那么,用到的技术很可能大多都会是浅浅的,以体力活居多,没什么技术含量。这大概是难免的,说到底了,技术毕竟还是要服务于业务的。这次的 ECUG 没有什么“技术营养”可以和大家分享,很有些不甘心啊。不过,肯定还是会去参加的,又有一年没见了。大家,很是有些想念。

社区的活跃,或许是铺开来广泛应用的一个前奏吧,后面肯定会有一个潜水期的。还记得 2000 年左右,那会儿我在搞 PHP 也碰见过这种情况,论坛活跃了一阵子,也不知道怎么地,突然就沉寂下来。之后,过了好多年,PHP 似乎才慢慢地“火”起来。我个人从经验角度来看,一个语言社区,无论它活跃也好,不活跃也罢,其实始终也都是“一小撮”,大家其实也不用太在意的。当然了,如果聚光灯到处乱闪,还有一大票粉丝摇旗呐喊,那当然很“带劲”,自我感觉很时尚。但是,如果没有这些光环的话,那其实也没关系,因为大家毕竟不是混时尚界的,让人“掉到这口深坑里”的,仍然是那些些费解而有趣的技术问题,而不是计算机程序设计语言的今冬流行时尚风向标。借用某位同学之前在讨论到 Erlang 能不能火的时候说过过的话——最好的境界是“悄悄地进村,打枪地不要”,大家都低调地闷声发大财,那就挺好。

明天见了,各位。

misc

[ANN] ECUG 2010 (BeiJing)

August 21st, 2010 :: jackyz

CN Erlounge 系列会议,新的一季会来到帝都,冠以 ECUG 2010 (Essential Cloud User Group)的新名字(改名说明看这里),将于 10.16. 到 10.17. 之间举行。

各位 Erlang 的粉丝,赶紧行动起来吧。

[提交Topic]

[注册参会]

PS. 翻墙是所有技术人员必知必会的基本技能,上述在线报名表格乃是基于 google 的 spreadsheets 服务构建,如果无法顺利访问,请自行翻墙。

news

争论 OOP in Erlang

August 15th, 2010 :: jackyz

官方的 Erlang-Question Maillist 确实是个值得“长期潜水”的地方——因为,这里时常会有“水怪”出没,比方,象火爆的 Joe Armstrong 爷爷和热辣的 Ulf Wiger 大叔之类。比方说,讨论象“争论 Erlang 到底 OO 不 OO”这样的“诱饵话题”,通常会比较容易吸引到“大水怪”们跑过来……,然后就有好戏看了。就算话题本身的乐趣有限,争论本身也不会让人失望。通过争论,我们能够看到各种各样的背景、引用、推论、思维方式乃至文化……,这些可都是人类精神世界多样性的珍贵样本,比起技术本身也毫不逊色。

看戏点[这里],推荐[订阅]此邮件列表。

以下为 BLAH,没时间的同学自行跳过。

Read more…

misc

一个开源游戏项目的诞生

July 13th, 2010 :: jackyz

自从众多“主流开发者”第一次听说以来,直到现在,Erlang 仍然是一门“有点怪异的小众语言”。可它也有一个充满活力的小社区。在 Maillist 中我们常能“围观”到一些有趣事件的发生,最近,我们就能亲眼目击到《一个开源游戏的诞生》这出大戏。

Erlang 在游戏业素有盛名,国内和国外有一些游戏或多或少的采用了 Erlang 系的技术方案。这是有原因的,一方面,这个行业在整个计算机领域中处于并发与分布问题的最前线,他们是最有动力去尝试用其他的语言来解决手头碰到难题的一群人。另一方面 Erlang 本身消息驱动的要素,与游戏这一特定的开发领域在抽象模型上又有着高度的重合。

五年前,DevMaster 上 Joel Raymont 的那篇《Writing Low-Pain Massively Scalable Multiplayer Servers》(中文版《轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》),在整个技术领域引起了非常大的反响,某种程度上,起到了大大推广 Erlang 语言的效果。但是,由此而诞生的 OpenPoker 项目,从纯粹的开源软件视角上看,却不幸成为了一个“犹抱琵琶半遮面”的半吊子项目——没有社区、没有交流、没有文档,源码没有完全公开——作者本人还要靠着这个项目的咨询费来养家糊口,一个纯粹的单人开源项目。这实在是一件非常可惜的事。作为一条事后的章鱼预言家,我敢说,如果一开始就打定主意去做一个开源的软件,比如说,就象 CouchDB 的 Damien Katz 和 MochiMedia 的 Bob Ippolito 一样,把全副身家都押宝在 OpenSource 的商业模式上, OpenPoker 完全可能走得更远。

开源软件搞了这么多年,从一开始的 SourceForge 到现在的 GitHub 和 BitBucket 我们终于有了“开源并不只是把源码放出去就可以了”的共识。开源软件其实是一套软件价值观——以软件本身的质量为核心价值。同时也是一套开发组织管理的哲学——当最初的项目创始人耗尽了他的热情,软件可以轻松的移交到新的开发者手上,通过这种热情的接力,软件能够日渐完善和历久常青。它是围绕着软件本身,以程序员的诉求为重点的开发方式,有着一套完整的依托于互联网的方法和设施。开源最终会导向可进化的,更高质量的软件产品。在开源软件这团热气腾腾的五彩祥云之中,热情是其原动力,灵活的团队是其灵魂,充分而高效的交流和协作则是这种开发方式的固有特色,至于社区、文档、特性管理乃至源码本身,这些我们所能见到的“特色”都只是交流协作的某种“外在形式”而已。

对于 Erlang + OpenSource + Game 而言,五年以前的 OpenPoker 错失了一次绝好的机会,如果上天再给一个重来一次的机会呢?现在看起来,这个机会已经来了,那就是 PEMMOX (Project Erlang Massively Multiplayer Online eXperience)项目。

各位童鞋请自备梯子墙头围观

http://www.trapexit.org/forum/viewtopic.php?p=57004
http://groups.google.com/group/pemmox/topics

众位游戏界的 Erlangor ,请把你们带有中国风的 ID 加到 Authors List 中去吧。

news

一篇有趣的 OO 讨论

April 24th, 2010 :: jackyz

在程序设计语言的圈子里,有关 OO 的争辩,几乎是各大社区每过一阵就会又发生一次的“风景”。单就辩论本身而言,对于一部分同学来说,因为围观的次数实在太多,无论是辩论的过程还是结论,其实大都已经不再新鲜。

但,从另外一个角度来说,每次这样的辩论,几乎总是能给我们带来一些新鲜的“猛料”。他们在辩论之中的引用、类比、或是提及,就像是一本好书末尾的“引用来源”列表(这个东西我们历来都不重视啊)。我们所要做的只是轻点鼠标按图索骥而已。这样的阅读通常都很让人愉快,因为它们每每都能给我带来“新鲜的空气”。不知其他人是否也有同感,或许是因为国外的治学风气更好(注明引用来源的好习惯),又也许是语言的隔阂(这些好东西都是英文的),再不就是我个人的理论基础太薄弱(太不喜欢读论文),原因不太可考;反正单就我自己而言,每次阅读这些东西都能让我在受益匪浅(长见识啊)的同时又切身体会到与其他科技“发达国家”之间学术水平的遥远差距(人家几十年前的论文,对我来说根本就是闻所未闻)。

这一次,激烈的辩论发生在 Clojure 社区。大家可以点下面的链接围观(也可以当作提高英语水平的好“毒物”):

照例,提醒一句,总是有些好东西在墙外,请自备工具。

misc

CouchDB —— 可以期待的美好未来

March 17th, 2010 :: jackyz

有关 CouchDB 的最新动向是: Damien Katz 已经离开了 IBM ,他和他的团队,在 200w $ 投资的帮助之下,开始创业。美国投资人的魄力与专业素养,让我这个中国软件人羡慕不已,什么时候我们中国也会出现这种“纯粹谈技术就能够决定是否投你”的投资人呢?新公司名叫 Couch IO (请注意,名字当中,没有出现 DB 这两个字母)。是的,开源软件界备受瞩目的新星 —— CouchDB 团队已经踏上了全新的旅程,他们正朝着下一个目标进发。我很愿意见到他们取得成功!

CouchDB 狐狸书

CouchDB 狐狸书 中,作者 Jan Lehnardt 描述了一种全新的 Web 开发模式,有这样一句话来形容这种新的开发方式。

CouchDB has changed the way I think about developing web applications

在有着 10+ 年 Web 开发经验的我看来,尤其是在确实理解了他们心目中的开发方式之后,我觉得,这并不是一句阿谀奉承的面子话。而是,实事求是地说 —— 完全没有夸张的成分。

我在这里极其“概略”的介绍一下这种匪夷所思开发方式的若干基本要素:
Read more…

study , ,