erlang中文资料

by kevin 11. 十二月 2012 21:19 >
图书 《erlang程序设计》 已经绝版,去淘宝买印刷版的吧。 本书是讲述下一代编程语言Erlang 的权威著作,主要涵盖顺序型编程、异常处理、编译和运行代码、并发编程、并发编程中的错误处理、分布式编程、多核编程等内容。本书将帮助读者在消息传递的基础上构建分布式的并发系统,免去锁与互斥技术的羁绊,使程序在多核CPU 上高效运行。本书讲述的各种设计方法和行为将成为设计容错与分布式系统中的利器。 Joe Armstrong,Erlang最初的设计者和实现者,也是Erlang OTP系统项目的首席架构师。他拥有瑞典皇家理工学院博士学位,是容错系统开发领域的世界级专家。此外,他还在开发旨在替代XML的标记语言ML9。现任职于爱立信公司。 电子档:http://wenku.baidu.com/view/6ec2a984e53a580216fcfee0.html 《erlang编程指南》 ... [更多...]

一些不错的erlang开源项目

by kevin 9. 十二月 2012 23:54 >
  Erlang的构建工具,创建新项目,编译,发布等 rebar https://github.com/basho/rebar Chicago Boss is a server framework inspired by Rails and written in Erlang. chicagoboss http://www.chicagoboss.org/ Erlyvideo is a flash streaming server, written in erlang。 erlyvideo https://github.com/erlyvideo/erlyvideo 如何使用rebar进行erlang/OTP升级 elevators  https://github.com/extend/elevators mysql 连接库 mysql https:... [更多...]

erlang小技巧-持续更新

by kevin 5. 十二月 2012 00:22 >
将浮点数转换成固定小数位字符串,不使用float_to_list,使用io_lib:format("~.2f",[F])。io_lib:format的返回只是[string()]。 lists:flatten(io_lib:format(Pattern, Args)),实现string_format功能。 生成随机数时,使用当前的timestamp作为种子,避免每个进程重开后生成的随机数是一样的。 erlang上要进行日期运算,使用edate 日期格式化利器erlydtl项目中的dateformat 小数取整通过trunc实现floor(X) -> T = erlang:trunc(X), case (X - T) of Neg when Neg < 0 -> T - 1; Pos when Pos >... [更多...]

chicagoboss加mysql小记(2)

by kevin 4. 十二月 2012 00:12 >
chicagoboss默认的使用poolboy实现mysql连接池,但是连接池的最大连接数只有10,这个可以需要通过修改源代码boss_db_sup.erl(line:19)中的max_overflow。 使用连接池连接mysql,如果服务器设置了tcp_keepalive_time,那么如果一段时间后,如果了某个连接没有数据交互,相应的socket端口会被关闭,更糟糕的是无论是mysql的服务端,还是应用客户端,都不知道该socket已经关闭,下次请求是会提示"socket is closed",而且无法重新打开。解决的办法是修改mysql_recv.erl(line:98),添加tcp连接选项{keepalive, true},显式要求连接不断开。 chicagoboss支持在每个action执行之前,执行before_{action},执行之后,执... [更多...]

ChicagoBoss加mysql小记(1)

by kevin 11. 十一月 2012 05:07 >
公司新项目,使用基于erlang的mvc框架chicagoboss,数据库选择mysql。写了一个月的代码,记录些细节的东西。 将mysql表映射成model的功能,在boos_db_adapter_mysql这个模块中实现。 数据库的每张表,都需要id字段,而且字段类型必须是整形。当然,可以通过修改源码去掉这个约束(研究中)。 表名必须是严格复数格式,例如:order->orders, man->men。(ps:inflector:pluralize方法存在bug) 数据库中的外键字段,要命名成{talbe_name}_id,table_name为主表名字。 实体属性的定义遵循Pascal命名(Word1Word2),同时对应数据库字段名word1_word2