Erlang
文章平均质量分 64
iteye_18554
这个作者很懒,什么都没留下…
展开
-
Erlang问答网站,欢迎各位提出问题,解答问题。
平时收到很多关于Erlang的问题,我都尽量一一解答,可是时间有限,毕竟还有工作在身。于是,前段时间做了一个关于[url=http://www.erlangqa.com]Erlang问答[/url]的网站。一来可以继续回答关于Erlang的提问二来内容可以归档整理,方便其它人排疑解惑三来也相当于一个简单的社区,大家可以通过问答互相进步请各位强力[url=http://www...原创 2012-03-18 15:07:57 · 157 阅读 · 0 评论 -
Erlang开发建议(杂记版)
以下是在erlang项目开发中的一些记录,即包含很多通俗易懂的原则,也包含一些似是而非的建议,比较混乱,还没有积累到一个可以分门别类的地步,各位就将就看吧..:)* 确保没有任何编译警告* Erlang中String采用list实现,32位系统中,其1个字符用8个字节的空间(4个保存value, 4个保存指针)。因此string速度较慢,空间占用较大* 在Server中...2009-04-24 18:27:31 · 144 阅读 · 0 评论 -
ecug topic - erlang开发实践
从ecug归来,感觉不错,大家学习探讨的积极性很高哦。很高兴,见到了那么多好朋友!附件是我的slides,讲述如何开发一个简单的erlang app,在google code上有对应的代码。各位有兴趣,可以看看哦。...2009-11-11 10:04:02 · 76 阅读 · 0 评论 -
reltool用户指南
说明,最近比较忙,没有太多时间更新blog,请各位朋友谅解. 寻找俺的朋友,可以gtalk : litaocheng[at]gmail.com 或者 twitter : @litaocheng 这篇文章,应该是我写的最久的一篇,请各位多实践. reltool使用指南Author:litaochengMail:litaocheng@gm...2009-11-02 22:27:17 · 217 阅读 · 0 评论 -
系统上线成功,Erlang功不可没
经过一段时间的折腾,昨天Ad系统终于要上线经受考验了。核心系统基于Erlang + Mnesia,采用Erlang的分布式机制。系统部署在2台server(4核,4G内存,比较老),启动4个node,轻松处理2k/s的并发请求,响应时间在500ms左右,erlang node占用内存在200M左右,至此系统还没有进行细致的优化以此来看Erlang还是很强劲的!当然期...原创 2009-04-17 10:00:25 · 89 阅读 · 0 评论 -
Boost message passing between erlang nodes
看这篇文章不错,有些实用性,特转来大家共享.文章内容教长,咱们长话短说,首先说场景与结果场景:作者在本机进行多个Erlang Node之间的消息通信时,效率很高, 可是当两个Node位于不同的机器进行消息发送时,效率相差很大.因此作者尝试进行优化,其在每个Node上加入一个Broker(中间人),进行消息缓冲.消息发送时,不是直接通过 ! 发送,而是交给这个Breoker, 由...2009-04-11 17:10:53 · 64 阅读 · 0 评论 -
Erlang的Unicode支持
在R13A中, Erlang加入了对Unicode的支持。本文涉及到的数据类型包括:list, binary, 涉及到的模块包括stdlib/unicode, stdlib/io, kernel/file。BinaryBinary的type属性增加了utf相关的type:utf8, utf16, utf32,其分别对应UTF8, UTF16,UTF32编码。[size=larg...2009-04-09 15:11:15 · 128 阅读 · 0 评论 -
使用Erlang实现一个迭代器iterator
最近比较忙, 一来是在努力学习Erlang, 二来是恋恋不舍那几个开源的小项目,三来是熟悉亲爱的R13A...加上令人头疼的公司的事情, 导致我很忙... 哎...为了保持博客的新鲜度, 就贴一点充数的资料吧..呵呵...在我前段时间搞的一个开源的mapreduce小框架中, 对于map, reduce数据流的读取, 我抽象出一个迭代器, 进行数据的读取.这样我的数据无...2009-03-19 10:51:09 · 138 阅读 · 0 评论 -
erlang otp 应用发布指南(三) tiny-3.0
tiny-3.0最后,让我们弥补前面tiny-2.0的缺憾, 我们要开发tiny-3.0. tiny-3.0中我们不会在重启application, 我们这次让Application温和的不间断的完成升级. 这里我假设你已经看懂前面的部分,并且亲自动手做了很多尝试.下面是快速,直白的代码罗列..代码修改新建tiny-3.0目录,添加一个module: mydict.erl 采...2009-03-09 22:52:48 · 123 阅读 · 0 评论 -
erlang otp 应用发布指南(二) tiny-2.0 (supervisor)
Release HandlingErlang的Release Handling, 充分利用Erlang的code hot swap特性, 让你的应用可以比较顺畅的进行升级,回退.tiny-2.0tiny-1.0已经成功的部署到了 /opt/local/tiny-1.0/ 目录. 最近,我们对tiny进行了改进, 准备要发布tiny-2.0.我们在回想一下tiny-1.0, 在开始...2009-03-09 22:51:20 · 161 阅读 · 0 评论 -
erlang otp 应用发布指南(一) tiny-1.0非真正OTP
Author:[email protected]:2009-3-1Version:0.2tiny OTP Application为了简单,我们创建一个超级简单的application, 其只有一个module, 其不使用supervisor,只创建一个简单的process, 我们为这个应用名叫:tinyapp (tinyapp-1.0).其...2009-03-04 12:47:15 · 127 阅读 · 0 评论 -
关于io_request
关于io_request相关module涉及到kernel/io, kernel/user, kernel/application_master, stdlib/slave.Erlang中的标准io接口stdlib/io module, 为erlang中的标准的io接口模块,其io操作基于process实现, 如对文件, 标准输入输出等操作,都可以使用此module进行处理(...2009-02-20 14:26:17 · 146 阅读 · 0 评论 -
gen_server2 - OTP gen_server优化版(更正)
rabbitmq的代码中包含一个gen_server2, 其对Erlang OTP中的gen_server进行了一些优化. gen_server.erlloop(Parent, Name, State, Mod, hibernate, Debug) -> proc_lib:hibernate(?MODULE,wake_hib,[Parent, Name, State, M...2009-02-10 13:22:50 · 133 阅读 · 0 评论 -
Erlang节点short names 和long names
erl node启动方法short name:erl -sname Nameerl -sname Name@ShortHostlongname:erl -name Nameerl -name Name@ShortHosterl -name Name@FullHost说明:Name :: atom() || string()ShortHost :: ato...2009-02-02 14:17:42 · 190 阅读 · 0 评论 -
Nitrogen web framework 入门
Nitrogen web framework 入门Author:[email protected]:2009-1-23Version:0.1目录1 概述2 特性3 期待4 术语(Glossary of Terms)5 应用的结构6 一个简单的例子7 更多阅读1 概述...2009-01-23 17:30:41 · 125 阅读 · 0 评论 -
list random shuffle实现
在项目中需要对list进行随机shuffle,但是在erlang的stdlib中没有这个函数。因此需要自己实现一把。参考google两种实现:版本1(速度快,随机化不好):shuffle_v1(L) -> List1 = [{random:uniform(), X} || X L;shuffle_v2(L) -> sh...2009-05-07 13:41:21 · 161 阅读 · 0 评论 -
又有人投入Erlang的怀抱了:37Signals Campfire loves Erlang
就喜欢看这样的东西...This is so juicy I couldn’t resist blogging about it. 37Signals sysadmin and my good friend Mark Imbriaco replaced the Campfire chat room handler, originally written in C, with an Erla...2009-05-14 23:00:31 · 151 阅读 · 0 评论 -
创建gen_server组解决单process瓶颈
并发和顺序是一个令人纠结的问题。下面是开发中遇到的一个问题常规时间,系统表现的很“端庄”,不折腾CPU,不玩弄Mem。可是到高峰时,这个家伙就开始变态了。内存狂飙,直至swap最后无法响应。这个状况,当时折腾了一天多。始终无法找到问题所在。最后通过排查及yufeng的帮助,将问题锁定在某些局部process。Erlang中默认,所有的Process具有同等的执行机会。我们的系统中有...2009-05-27 17:05:12 · 104 阅读 · 0 评论 -
Emakefile并行编译
项目代码越来越多,使用erlang编译也越来越慢。无论是Makefile还是Emakefile都力不从心。使用rebar编译速度会加快,但对原有项目改动太大。通过对make.erl(otp/lib/tools/src/make.erl)进行修改,提供一个支持多进程编译的mmake.erl。其接口和make.erl相似,只是第一个参数为并发编译数,具体看下代码吧,非常简单。对于项目中有编...2011-11-17 13:15:03 · 314 阅读 · 0 评论 -
inet:getstat/2小用法
inet:getstat/2的用处在游戏开发中,client和server之间需要维护一个心跳,用来检测client的网络异常中断(如突然拔掉网线),进而进行一些清理,保存工作.严谨的服务端,除了确保客户端提交的各种请求都合法,此外还需要限制玩家发包速度,用来踢掉一些恶意的客户端(如移动加速,攻击重复发包等). 这两个小功能,在Erlang游戏服务器开发中,通过inet:getst...原创 2011-04-27 09:32:27 · 263 阅读 · 0 评论 -
Erlang游戏开发-协议
Erlang游戏开发-协议选择什么协议?协议包含通讯协议和数据格式.通讯协议通讯协议目前常用的是:HTTP和TCP.其有各自的特点根据游戏的特点而进行选择.HTTPHTTP比较成熟,使用极其广泛.具有丰富的基础软件和工具.对于简单的social game可以使用HTTP作为通讯协议.这类游戏对实时性要求不是很高,使用HTTP也很容易做到性能扩展,可以较好...原创 2011-04-22 16:10:50 · 228 阅读 · 0 评论 -
Erlang服务器内存耗尽bug跟踪过程
本文描述朋友Erlang服务器内存耗尽bug的解决过程。首先说明一下问题,服务器1千多人在线,16G内存快被吃光。玩家进程占用内存偏高:接下来是解决过程。第一步:查看进程数目是否正常? erlang:system_info(process_count). 进程数目合理第二步:查看节点的内存消耗在什么地方?> erlang:memory(). [{total,2099813400}, ...2011-10-25 21:44:19 · 256 阅读 · 0 评论 -
gen-erl-app快速生成erlang app 框架
经常需要创建各种erlang app,这个过程一旦掌握,就很繁琐,因此写了这个小工具,用来生成基于OTP的erlang app框架。其中包含了application, supervisor, gen_server, gen_fsm,makefile还有一个ctl script. 仅仅需要一句话:./gen-erl-app demo 会在当前目录下生成demo app...2010-04-07 14:22:08 · 113 阅读 · 0 评论 -
Erlang定时任务server (仿crontab语法)
好久不写blog了,看到yufeng老大那么活跃,我也“耐不住寂寞”啊。前不久写一个小东西,其中涉及很多定时执行的任务,如数据清理,数据导入,定时计算等等。涉及到这个东西,就想起了linux下的cron,多么贴身的服务啊。但是在我的erlang代码里,却缺少这样一个东西。没有关系,自己动手! 首先是crontab.cfg配置文件,其语法与linux下的crontab一致,可以 ...2009-09-23 18:03:08 · 218 阅读 · 0 评论 -
erl-redis发布
最近几天因为需要,实现了一个redis erlang client。支持很多特性:connection pool,consistent hash,服务器分组等。Redis简洁好用,有兴趣的朋友可以玩一把哦。 Update(2010.10.17):1.0版本中connection pool,和consistent hash都已经去除,目的是为了提供一个简洁纯粹的Erlang ...2010-03-30 11:44:42 · 150 阅读 · 0 评论 -
Erlang进程之错?
前阵子erlang-china关于erlang该不该具有静态特性讨论的如火如荼,期间抛出了一个在erlang开发中迟早会遇到的问题:在一个拥有成千上万并发process的系统中,某些process具有举足轻重的位置,如其记录log信息,提供某个核心查询功能,这样的情况下,无数的进程访问一个进程,导致这个核心进程消息队列异常增大,相应速度下降,timeout接踵而来,最后导致系统当掉。这样的情况...2009-07-27 15:06:42 · 94 阅读 · 0 评论 -
CNode指南
好久不发文章,因为工作太忙。这个东西就凑凑数吧。各位见谅。下一篇可能会介绍port,因为工作中用的比较多. CNode用户指南Author:litaochengMail:[email protected]:2009.7.8目录1 概述2 CNode 相关API2.1 ...2009-07-27 14:13:34 · 607 阅读 · 0 评论 -
Gearman Erlang Client
GearmanGearman是一个通用的任务调度框架。通过Gearman,多种编程语言,多台机器可以有机的结合,从而完成指定的任务。其结构图如下:黄色区域表示由Gearman提供的设施蓝色区域表示由用户自己提供的部分Gearman Job Server为核心的调度器,其管理Client(任务的调用者)和Worker(任务的执行者),负责任务的接收分发,以及将处理...原创 2010-10-17 21:14:58 · 107 阅读 · 0 评论 -
ECUG归来
今天ECUG V圆满结束了,不知不觉作为讲师已经参加过3次大会,实属荣幸。同时ECUG的含义也延伸为:Effective Cloud User Group,虽然和Erlang的紧密贴合少了一些,但是还是预祝下界大会更好。 本届大会topic还是比较丰富的,尤其可贵的是多名外籍讲师的加入:mochimedia CTO Bob Ippolito 和 来自TheNetCi...原创 2010-10-17 21:02:05 · 105 阅读 · 0 评论 -
用Erlang做了很多事
因为工作及时间关系,最近比较忙碌,没有太多的时间写文章。咱Erlang社区也略显冷清,童鞋们赶紧活动起来多说说关于Erlang的事儿 :) 这不也2010年了,回首一下咱和Erlang的那些事...从开始到现在,用Erlang参与项目如下(包括玩具项目和工作相关的项目):erlkad (2008.5) - kademila DHT libe2dynamo(200...原创 2010-01-19 14:08:12 · 134 阅读 · 0 评论 -
Erlang类型及函数声明规格
Erlang类型及函数声明规格Author:litaochengMail:[email protected]:2009.6.8Copyright:This document has been placed in the public domain.Contents概述意义规范...2009-06-08 22:41:20 · 230 阅读 · 0 评论 -
使用etop查看系统中进程信息
Erlang提供了丰富的开发工具,你认为没有的时候,很可能是你不知道它存在. 在OS中,我们经常查看操作系统的进程信息,帮助我们进行诊断。 Erlang提供了一个小工具 etop (Erlang top), 用来查看Erlang运行环境中,内存,ets,binary,进程等相关信息。 这些被收集的信息大部分是通过erlang module的相关bif输出,etop只是做了一...2009-05-29 13:57:06 · 386 阅读 · 0 评论 -
CouchDB了解(-) 特性及实现
概述CouchDB,大家或多或少都听说过。它到底有什么特性,适合哪些应用场景,和我们常用的关系型数据库有什么区别?这些问题,可能我们心里都不是非常清楚。在以前的Blog中(PS,不是在javaeye哦),我提及了几次CouchDB,但是仅仅限于编译,安装这些浮在水面上的工作。今天抽出时间把最近关于CouchDB的一些了解整理一下。CouchDB是什么CouchDB一种半结构化面...2009-01-22 10:31:01 · 283 阅读 · 0 评论 -
使用fprof进行性能分析
Erlang tools lib中包含三个用于性能分析的工具:cprof,eporf和fprof。cprof 提供函数调用计数,其对系统的性能影响最小eprof 提供函数运行时间的百分比fprof 通过将trace存储到文件,提供函数调用计数及运行时间统计信息这里我们主要介绍fprof,首先其提供的信息最为详细,其次因为将trace存储到文件中,我们可以进行较长运行时间的性能分...2009-01-19 17:29:04 · 399 阅读 · 0 评论 -
自己写一个tcp 通用服务器
我们想写这样一个tcp server,其绑定本地某个端口,用户可以接入实现特定的业务,比如一个傻傻的echo server,一个帮助服务器等等。。毫无疑问这个tcp的框架是相同的,想想我们一直以来怎么写tcp server:创建socket -> 绑定端口 -> listen监听 -> accept tcp 连接 -> 处理业务 -> 关闭连接。中间可能会有多线程或者线程池等等不同的实现方式。...2009-01-13 10:51:54 · 360 阅读 · 0 评论 -
binary优化及相关
R12B中引入了bit string(bits),其包含任意数目的bit,如果其包含的bit数目可以被8整除,那么我们称其为binary(bytes)。使用bits有了bits,我们对某些协议的操作更加简便灵活。比如IS 683-PRL 协议,其首部包含5个bit指示后面有多少个连续的11 bit的数据。在以前我们要解析其这个数据包了非常繁琐,请看如下:[code="Erlan...2009-01-13 10:37:01 · 138 阅读 · 0 评论 -
erlang的强数据类型
在mailist中,一位朋友表示疑问,为什么下面的语句提示出错?erlang的运行时数据绑定有什么特殊规则?[code="Erlang"]>{ok, File} = file:open("test.file", [write, raw, {delayed_write, math:pow(10, 3), 1000)]).** exception error: no match of ri...原创 2009-01-13 10:31:42 · 102 阅读 · 0 评论 -
检测image类型及尺寸的erlang模块
[url=http://blog.socklabs.com/2008/07/erlang_snippet_image_type_dete/]Socklabs[/url]在其项目中需要限制用户上传的图片类型为gif,png和jpeg, 同时图片文件大小必须 < 4M, 图片尺寸小于2048*2048.这个模块很简单,以binary的方式读取文件,随后通过图片相应的格式解析,获取格式,尺寸相关信息.随...2009-01-13 10:30:02 · 100 阅读 · 0 评论 -
erlang中的错误处理
erlang中错误大体分为四种: 1. 编译错误 2. 逻辑错误 3. 运行时错误 4. 用户代码生成的错误编译错误,主要是编译器检测出的代码语法错误逻辑错误,是指程序没有完成预期的工作,属于开发人员的问题运行时错误,是指erlang运行时抛出的错误,比如对非数据类型执行算术运算,erlang运行时会捕获异常,并抛出。在erlang中,这类异常的...2009-01-13 10:26:31 · 242 阅读 · 0 评论 -
关于erlang中的garbage collection
在erlang中,每个process都有一个独立的heap(初始大小233个words),process用到的数据都保存在其自身的heap 中。这个heap可以动态的进行扩张与收缩。当heap中的数据达到heap大小的75%的时候,heap的大小会自动增大(依据fibonacci数进行增长,而不是类似某些语言实现中依据倍数增长),当heap中的数据小于heap大小的25%的时候,heap会自动进行...原创 2009-01-13 10:21:17 · 156 阅读 · 0 评论