Erlang-China

erlang 中文社区

[CN Erlounge II]第二届 Erlang Fans 交流会


时间:2007-10-13 ~ 2007-10-14,为期2天

地点:珠海(详细聚会地址待确定)

人物:主要面向珠三角地区,但不排斥。任何对Erlang感兴趣的人。

活动主持:许式伟(金山实验室)

交流会重要时间点:

1. 报名(普通参会者或讲师)截止日期:2007-10-1
2. 讲师讲稿投稿截止日期:2007-10-8
3. 详细的会议日程安排公布:2007-10-10
4. 会议时间:2007-10-13、2007-10-14

报名方式:

0. 报名者请简单自我介绍。
1. 普通参会者,发邮件到 xushiweizh@gmail.com,注明参加Erlang Fans交流会。
2. 会议讲师,发邮件到 xushiweizh@gmail.com,注明想讲的议题。

注:交流会限制人数,如果名额已满,我会回信说明。

交流会推荐议题:

1. erlang ide
2. erlang diagnost (log, trace, debug, etc)
3. erlang distribution
4. erlang emulator implementation
5. code replement (hot code swap)
6. erlang interact with C (C node,port,driver, etc)
7. anything else.

交流会形式:

1. 多数时间由交流会主讲人讲解他对Erlang的心得,其他人提问(Q&A)方式交流。
2. 留出一小段时间,安排沙龙式的对等交流机会。

交流会规则:

1. 我本人起发起人和组织交流的作用。
2. 交流会主讲人(讲师)报销来回火车票或汽车票、住宿。
3. 任何人可报名免费参与听讲。


【第二届】Erlang Fans交流会(补充事宜)


详细参见:http://erlang-china.org/news/erlang-fans-fair.html

这里做些补充:

  1. 考虑到上海到珠海坐春秋航空的飞机有特价机票,本次活动的讲师也可报销上海至珠海来回的飞机票(要求是春秋航空)。
  2. 报名(普通参会者或讲师)截止日期:2007-10-1。报名者请从速。
  3. 本次会议的选址已经完成。我们会在珠海罗马假日海滨西餐厅(日东广场,临近珠海海滨泳场,可观海,吹海风)举行本次会议。可通过Google Earth了解(珠海的地图超清晰)该餐厅周边信息。

Erlang runs on cell phone


摘两则最近 Erlang 领域的几则有趣信息,关于 mobile device 的。

LShift 的老兄让 Erlang 成功的跑在了自己基于 open mokoFIC neo1973 手机上[这里],还好心的提供了 tarball 和 buildscript 。

另一个哥们则让 Erlang 跑在了 iPhone 上[这里],可以想象,要想跑在同为 darwin9 平台的 iTouch 上也只需要做相同的事。

还有一个哥们在基于 Debian GNU/Linux kernel 2.6.1 的 Nokia N800 上跑起了 Erlang / Ejabberd 服务[这里],还架了 home.goryachev.org 给大家玩。

计算机硬件发展的一个显而易见的趋势是:从大屏幕到小屏幕,从坐着看到走着看。运行在“移动手持互联网设备”上的 Erlang 可以用来做什么呢?走路时写个程序,还是变身为一个凶悍的手机机器人?这取决于你的想象力。


Joe Armstrong的博士论文——《面对软件错误构建可靠的分布式系统》


上次上传不成功,再试一次。

原来文件名改为英文的就好了。

译文附件连接:Joe’s thesis

各位慢慢看吧,想要深入了解Erlang/OTP的设计思想,就应该看看。

本译文只是提供一个快速阅读的便利,推荐大家看看原文,原文连接:

http://www.erlang.org/download/armstrong_thesis_2003.pdf


about distel


貌似不少人都碰上distel 的 node down的问题. 干脆我注册个号来发一帖.

我这边碰上过这个问题,之后查明原因是因为 node name的问题, 直接给localhost死活不认,只好给它设各名字,在.emacs里加elisp代码,让emacs中erlang起来的时候就设置一个名字,然后connect to node的时候连到这个就可以了. 或者 直接 erl -sname xxx 也可以

另外connect to remote node的时候,需要给两个node设置 相同的cookie,不然会disallow (或者别的什么东西). 用 erl -setcookie 这个我没写到elisp里,需要用的时候手动跑好了. 下面贴下我的distel setup吧.

erlang-mode 的安装就不提了.

下载: distel.el
  1. ;distel
  2. (add-to-list 'load-path "/home/yuxihe/src/distel/elisp")
  3. (when (locate-library "distel")
  4. (require 'distel)
  5. (distel-setup)
  6. (add-hook 'erlang-mode-hook
  7. '(lambda ()
  8. (unless erl-nodename-cache
  9. (distel-load-shell))))
  10.  
  11. (defun distel-load-shell ()
  12. "Load/reload the erlang shell connection to a distel node"
  13. (interactive)
  14. ;; Set default distel node name
  15. (setq erl-nodename-cache 'distel@localhost)
  16. (setq distel-modeline-node "distel")
  17. (force-mode-line-update)
  18. ;; Start up an inferior erlang with node name `distel'
  19. (let ((file-buffer (current-buffer))
  20. (file-window (selected-window)))
  21. (setq inferior-erlang-machine-options '("-sname" "distel"))
  22. (switch-to-buffer-other-window file-buffer)
  23. (inferior-erlang)
  24. (select-window file-window)
  25. (switch-to-buffer file-buffer))))

如果还是node down,可以试试把这个改成

  1. (setq inferior-erlang-machine-options '("-sname" "distel@localhost")).

这样就跟上面的node -cache-name 匹配了.

另外,我在windows下使用distel有些问题,linux下表现良好, 报一个诡异的错误,发到maillist得知人家也有些碰上这个问题,不过他们是在 utf-8 branch的emacs上碰到问题,我是在binary release的22.1下有问题.

尝试改了下derl.el的代码,没解决,郁闷死.


editplus stx for erlang?


看了一下 erlang-china.org 的来源关键词,没想到,一个排名相当靠前的关键词是“editplus erlang”,想想也是,我当初也是费了好大的劲来配置这个东东,这里贡献出来我的editplus 语法高亮文件给大家共产。

回想一下试验过的 erlang 开发环境,陆陆续续的,也有不少了,目前我最满意的 erlang 开发环境(组合)是这样的,哈哈,忍不住拎出来显摆了:

windows 2k + colinux + debian + emacs + erlang mode + putty

因为平常工作还是离不开 win(别和我说 xp,在我的破机器上 2k 比 xp 跑得愉快得多了,所以我就“主动降级”了),没办法,太多东西了,实在没法一下子转投 linux 的怀抱,只能虚拟。而 colinux + debian 正好提供了一个近乎 native 运行的 unix 环境,资源占用很小,运行速度很快。平时当个 service 跑着也不吃力。最大的好处是所有的软件包都是原生的 unix 软件,啥也不用改,直接拖下来就用,个人感觉比 cygwin 强多了。一路 apt-get install emacs erlang 装下来就是了。

编程的时候,putty 登上去(当然要配好 public key 啥的,以节约生命)就可以用 emacs 。在 unix 下,编译,测试,再也不用担心做好的代码换到 unix 环境就跑不起来了。如果要 x 环境,那就装上 vnc: xfce4 + vnc4server + realvnc view4 ,登录进去,效果一流(额外的好处是可以随时关掉窗口,下次登录回到会话,啥也不会丢)。如果你又想念 eclipse 的 erlide 了,那也没关系,随时在 win 下跑起来便是,apt-get 一个 cvs 回来装上,代码同步就解决了。

现在的烦恼是 emacs 还没习惯,渐渐找感觉中。。。


Unit Test in Erlang


Erlang被称作是“工业级的语言”,在测试领域,理应是有相当成熟度的。而,Joe老先生本人,也是崇尚“拿测试结果说话”的人(在《Programming Erlang》书中,上来就搞测试,然后再开讲的例子比比皆是)。就连 Erlang/OTP 本身的代码质量也是有严密的测试作为保障的。所以,如果在Erlang领域,你见到远比其他语言为多的测试相关工具、框架、包,丝毫也不应该感到惊奇。下面,我们就来看看“Erlang的测试兵器谱”中,都有什么好家伙。


Erlang Gtalk 讨论群9月份聊天记录


9月份聊天记录,全2000多行,杀猫慎入:)


Erlang Gtalk 讨论群8月份聊天记录


Gtalk 讨论群上面都是比较活跃的,大家的讨论也不乏亮点,现在整理出技术讨论的部分,方便大伙


erlang on barcampbeijing 2007


周日参加了barcampbeijing 2007,算是近距离感受了一下老外的“party文化”。

应该说,这确实是个非常不错的聚会组织形式——有想法的就直接在 board 上贴主题。大家化十几分钟安排下时间,然后就开讲,或者开聊。简单直白又很有效率,话题绝对新鲜,气氛轻松得来又不会变成闲扯,信息量其实极大,一整天听下来,绝对头晕脑胀。

我贡献了一个 erlang intro 的 topic ,主要是想抛块砖,看看有没有感兴趣的同好。结果参加的人果然很少。不过,6个听众中,倒有3个老外,我认为:这表明 Erlang 目前尚在“从老外到老中”的标准普及过程之中。可苦了我这个“中国英语教育的失败案例”,纯中文开讲,可怕的英文发音暴露无疑。

提问中,有两个提问有点意思,值得share一下:

1,Joe Armstrong老先生现在是在哪里工作呢?

潜台词是:ruby在google领工资,java在sun领工资,so erlang创始人到哪里领工资,要知道,不从 big names 那里领工资也可能会给人以靠不住的感觉。这个俺还真不晓得,今天从 trustNo1 (八卦啊)那里打听了一下,据说 joe armstrong 老爷爷又回到 Ericsson 了。so,算是 close 了这个问题吧。

2,为什么这个语言到现在才变得被大家广泛关注?

我想,这个的原因恐怕是因为:我们正在进入一个多核的时代,大家都想在多核环境下以线型的方式来提高性能(编程的人不用为此耗费脑细胞),但在 share something/with lock 语言和 os 级的重型 thread/process 机制的现有主流框架下,这个问题难以很漂亮的得到解决。后一个问题还相对容易,N多语言好像就在尝试。但前一个问题,也就是 share something 导致的复杂而琐碎的 lock 机制,使得这个问题变得异常棘手(如果语言允许 x = x + 1 那么就必须要解决锁的问题,但,大家习惯了 x = x + 1 怎么办?拿走?给我我会很开心,拿走我就要不爽了)。在这个时候,完全无锁设计的 Erlang 因其工业级的成熟度,就“重新被大家发现”了。至于 hot code swap 或者其他 cluster 特性,在我看来,也许并非问题真正的关键。

另外,我从 faq 中“重新发现”了这么一段话:

1.4. What sort of problems is Erlang not particularly suitable for?

People use Erlang for all sorts of surprising things, for instance to communicate with X11 at the protocol level, but, there are some common situations where Erlang is not likely to be the language of choice.

The most common class of ‘less suitable’ problems is characterised by performance being a prime requirement and constant-factors having a large effect on performance. Typical examples are image processing, signal processing, sorting large volumes of data and low-level protocol termination.

Another class of problem is characterised by a wide interface to existing C code. A typical example is implementing operating system device drivers.

Most (all?) large systems developed using Erlang make heavy use of C for low-level code, leaving Erlang to manage the parts which tend to be complex in other languages, like controlling systems spread across several machines and implementing complex protocol logic.

这段话解决了我的一个疑惑——什么时候不应该考虑使用 Erlang ?我应该停止幻想 erlang 的代码比 C 还跑得快,至少在单机环境下就是如此。知道一个东西是什么,很重要,知道一个东西不是什么,好像也很重要。:D