自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 Erlang问答网站,欢迎各位提出问题,解答问题。

平时收到很多关于Erlang的问题,我都尽量一一解答,可是时间有限,毕竟还有工作在身。于是,前段时间做了一个关于[url=http://www.erlangqa.com]Erlang问答[/url]的网站。一来可以继续回答关于Erlang的提问二来内容可以归档整理,方便其它人排疑解惑三来也相当于一个简单的社区,大家可以通过问答互相进步请各位强力[url=http://www...

2012-03-18 15:07:57 191

Emakefile并行编译

项目代码越来越多,使用erlang编译也越来越慢。无论是Makefile还是Emakefile都力不从心。使用rebar编译速度会加快,但对原有项目改动太大。通过对make.erl(otp/lib/tools/src/make.erl)进行修改,提供一个支持多进程编译的mmake.erl。其接口和make.erl相似,只是第一个参数为并发编译数,具体看下代码吧,非常简单。对于项目中有编...

2011-11-17 13:15:03 337

Erlang服务器内存耗尽bug跟踪过程

本文描述朋友Erlang服务器内存耗尽bug的解决过程。首先说明一下问题,服务器1千多人在线,16G内存快被吃光。玩家进程占用内存偏高:接下来是解决过程。第一步:查看进程数目是否正常? erlang:system_info(process_count). 进程数目合理第二步:查看节点的内存消耗在什么地方?> erlang:memory(). [{total,2099813400}, ...

2011-10-25 21:44:19 293

原创 inet:getstat/2小用法

inet:getstat/2的用处在游戏开发中,client和server之间需要维护一个心跳,用来检测client的网络异常中断(如突然拔掉网线),进而进行一些清理,保存工作.严谨的服务端,除了确保客户端提交的各种请求都合法,此外还需要限制玩家发包速度,用来踢掉一些恶意的客户端(如移动加速,攻击重复发包等). 这两个小功能,在Erlang游戏服务器开发中,通过inet:getst...

2011-04-27 09:32:27 297

原创 Erlang游戏开发-协议

Erlang游戏开发-协议选择什么协议?协议包含通讯协议和数据格式.通讯协议通讯协议目前常用的是:HTTP和TCP.其有各自的特点根据游戏的特点而进行选择.HTTPHTTP比较成熟,使用极其广泛.具有丰富的基础软件和工具.对于简单的social game可以使用HTTP作为通讯协议.这类游戏对实时性要求不是很高,使用HTTP也很容易做到性能扩展,可以较好...

2011-04-22 16:10:50 255

原创 Redis应用-Log汇总

最近项目中使用Redis比较多,非常喜欢这个小巧而强大的家伙。准备写一个简单的系列,讲述使用Redis可以做什么,我们将充分挖掘Redis的潜能。这是第一篇,准备用Redis作为Log汇总。 Redis介绍Reids是一个比较高级的开源key-value存储系统,采用ANSI C实现。其与memcached类似,但是支持持久化数据存储,同时value支持多种类型:字符串(同...

2010-10-18 16:42:10 203

原创 Gearman Erlang Client

GearmanGearman是一个通用的任务调度框架。通过Gearman,多种编程语言,多台机器可以有机的结合,从而完成指定的任务。其结构图如下:黄色区域表示由Gearman提供的设施蓝色区域表示由用户自己提供的部分Gearman Job Server为核心的调度器,其管理Client(任务的调用者)和Worker(任务的执行者),负责任务的接收分发,以及将处理...

2010-10-17 21:14:58 115

原创 ECUG归来

今天ECUG V圆满结束了,不知不觉作为讲师已经参加过3次大会,实属荣幸。同时ECUG的含义也延伸为:Effective Cloud User Group,虽然和Erlang的紧密贴合少了一些,但是还是预祝下界大会更好。 本届大会topic还是比较丰富的,尤其可贵的是多名外籍讲师的加入:mochimedia CTO Bob Ippolito 和 来自TheNetCi...

2010-10-17 21:02:05 116

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 146

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 160

原创 用Erlang做了很多事

因为工作及时间关系,最近比较忙碌,没有太多的时间写文章。咱Erlang社区也略显冷清,童鞋们赶紧活动起来多说说关于Erlang的事儿 :) 这不也2010年了,回首一下咱和Erlang的那些事...从开始到现在,用Erlang参与项目如下(包括玩具项目和工作相关的项目):erlkad (2008.5) - kademila DHT libe2dynamo(200...

2010-01-19 14:08:12 163

ecug topic - erlang开发实践

从ecug归来,感觉不错,大家学习探讨的积极性很高哦。很高兴,见到了那么多好朋友!附件是我的slides,讲述如何开发一个简单的erlang app,在google code上有对应的代码。各位有兴趣,可以看看哦。...

2009-11-11 10:04:02 104

reltool用户指南

说明,最近比较忙,没有太多时间更新blog,请各位朋友谅解. 寻找俺的朋友,可以gtalk : litaocheng[at]gmail.com 或者 twitter : @litaocheng 这篇文章,应该是我写的最久的一篇,请各位多实践.    reltool使用指南Author:litaochengMail:litaocheng@gm...

2009-11-02 22:27:17 231

Erlang定时任务server (仿crontab语法)

好久不写blog了,看到yufeng老大那么活跃,我也“耐不住寂寞”啊。前不久写一个小东西,其中涉及很多定时执行的任务,如数据清理,数据导入,定时计算等等。涉及到这个东西,就想起了linux下的cron,多么贴身的服务啊。但是在我的erlang代码里,却缺少这样一个东西。没有关系,自己动手! 首先是crontab.cfg配置文件,其语法与linux下的crontab一致,可以 ...

2009-09-23 18:03:08 231

Erlang进程之错?

前阵子erlang-china关于erlang该不该具有静态特性讨论的如火如荼,期间抛出了一个在erlang开发中迟早会遇到的问题:在一个拥有成千上万并发process的系统中,某些process具有举足轻重的位置,如其记录log信息,提供某个核心查询功能,这样的情况下,无数的进程访问一个进程,导致这个核心进程消息队列异常增大,相应速度下降,timeout接踵而来,最后导致系统当掉。这样的情况...

2009-07-27 15:06:42 111

CNode指南

好久不发文章,因为工作太忙。这个东西就凑凑数吧。各位见谅。下一篇可能会介绍port,因为工作中用的比较多.  CNode用户指南Author:litaochengMail:litaocheng@gmail.comDate:2009.7.8目录1   概述2   CNode 相关API2.1 ...

2009-07-27 14:13:34 644

Erlang类型及函数声明规格

Erlang类型及函数声明规格Author:litaochengMail:litaocheng@gmail.comDate:2009.6.8Copyright:This document has been placed in the public domain.Contents概述意义规范...

2009-06-08 22:41:20 259

使用etop查看系统中进程信息

Erlang提供了丰富的开发工具,你认为没有的时候,很可能是你不知道它存在. 在OS中,我们经常查看操作系统的进程信息,帮助我们进行诊断。 Erlang提供了一个小工具 etop (Erlang top), 用来查看Erlang运行环境中,内存,ets,binary,进程等相关信息。 这些被收集的信息大部分是通过erlang module的相关bif输出,etop只是做了一...

2009-05-29 13:57:06 403

创建gen_server组解决单process瓶颈

并发和顺序是一个令人纠结的问题。下面是开发中遇到的一个问题常规时间,系统表现的很“端庄”,不折腾CPU,不玩弄Mem。可是到高峰时,这个家伙就开始变态了。内存狂飙,直至swap最后无法响应。这个状况,当时折腾了一天多。始终无法找到问题所在。最后通过排查及yufeng的帮助,将问题锁定在某些局部process。Erlang中默认,所有的Process具有同等的执行机会。我们的系统中有...

2009-05-27 17:05:12 118

又有人投入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 180

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 172

Erlang开发建议(杂记版)

以下是在erlang项目开发中的一些记录,即包含很多通俗易懂的原则,也包含一些似是而非的建议,比较混乱,还没有积累到一个可以分门别类的地步,各位就将就看吧..:)* 确保没有任何编译警告* Erlang中String采用list实现,32位系统中,其1个字符用8个字节的空间(4个保存value, 4个保存指针)。因此string速度较慢,空间占用较大* 在Server中...

2009-04-24 18:27:31 180

原创 系统上线成功,Erlang功不可没

经过一段时间的折腾,昨天Ad系统终于要上线经受考验了。核心系统基于Erlang + Mnesia,采用Erlang的分布式机制。系统部署在2台server(4核,4G内存,比较老),启动4个node,轻松处理2k/s的并发请求,响应时间在500ms左右,erlang node占用内存在200M左右,至此系统还没有进行细致的优化以此来看Erlang还是很强劲的!当然期...

2009-04-17 10:00:25 118

Boost message passing between erlang nodes

看这篇文章不错,有些实用性,特转来大家共享.文章内容教长,咱们长话短说,首先说场景与结果场景:作者在本机进行多个Erlang Node之间的消息通信时,效率很高, 可是当两个Node位于不同的机器进行消息发送时,效率相差很大.因此作者尝试进行优化,其在每个Node上加入一个Broker(中间人),进行消息缓冲.消息发送时,不是直接通过 ! 发送,而是交给这个Breoker, 由...

2009-04-11 17:10:53 79

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 163

使用Erlang实现一个迭代器iterator

最近比较忙, 一来是在努力学习Erlang, 二来是恋恋不舍那几个开源的小项目,三来是熟悉亲爱的R13A...加上令人头疼的公司的事情, 导致我很忙... 哎...为了保持博客的新鲜度, 就贴一点充数的资料吧..呵呵...在我前段时间搞的一个开源的mapreduce小框架中, 对于map, reduce数据流的读取, 我抽象出一个迭代器, 进行数据的读取.这样我的数据无...

2009-03-19 10:51:09 152

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 137

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 181

erlang otp 应用发布指南(一) tiny-1.0非真正OTP

Author:litaocheng@gmail.comData:2009-3-1Version:0.2tiny OTP Application为了简单,我们创建一个超级简单的application, 其只有一个module, 其不使用supervisor,只创建一个简单的process, 我们为这个应用名叫:tinyapp (tinyapp-1.0).其...

2009-03-04 12:47:15 147

关于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 164

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 140

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 209

Nitrogen web framework 入门

Nitrogen web framework 入门Author:litaocheng@gmail.comData:2009-1-23Version:0.1目录1   概述2   特性3   期待4   术语(Glossary of Terms)5   应用的结构6   一个简单的例子7   更多阅读1   概述...

2009-01-23 17:30:41 139

CouchDB了解(-) 特性及实现

概述CouchDB,大家或多或少都听说过。它到底有什么特性,适合哪些应用场景,和我们常用的关系型数据库有什么区别?这些问题,可能我们心里都不是非常清楚。在以前的Blog中(PS,不是在javaeye哦),我提及了几次CouchDB,但是仅仅限于编译,安装这些浮在水面上的工作。今天抽出时间把最近关于CouchDB的一些了解整理一下。CouchDB是什么CouchDB一种半结构化面...

2009-01-22 10:31:01 297

使用fprof进行性能分析

Erlang tools lib中包含三个用于性能分析的工具:cprof,eporf和fprof。cprof 提供函数调用计数,其对系统的性能影响最小eprof 提供函数运行时间的百分比fprof 通过将trace存储到文件,提供函数调用计数及运行时间统计信息这里我们主要介绍fprof,首先其提供的信息最为详细,其次因为将trace存储到文件中,我们可以进行较长运行时间的性能分...

2009-01-19 17:29:04 454

使用inets http:request时请注意?

这两天在调试程序,今天刚刚去除了一个小bug:使用inets http client进行Post请求时,mochiweb 总是接收错误,开始怀疑json encode错误,否决;后来想到是不是http request错误呢?认真查看文档:request(Method, Request, HTTPOptions, Options)request() - {url(), headers(), ...

2009-01-15 21:57:16 156

再谈Erlang代码热替换

Erlang一个非常值得称道的特性就是代码热替换(Hot Code Sawpping),我们在调用函数时,通过M:F(A)的方式,可以保证总是加载最新的代码。在《Erlang程序设计》中E4部分,通过一个小例子展示了代码的动态加载,两个module代码如下:a.erl[code="Erlang"]-module(a).-compile(export_all).-impo...

2009-01-14 23:21:52 206

Application and Includeed Application

今天MailList中一个问题,在Application和Includeed Application中调用application:get_application/0,返回都是Primary Applicaion Name,为什么是这样呢?在Erlang OTP中Application可以包其他Application,也就是Included Application。我前阵子在项目中也尝试使用...

2009-01-13 16:53:16 183

Tiny Notes About Erlang Syntax

[b]Literal Term[/b]int, float, atom, tuple, list, binaryin predefined attributes and user-defined attributes, the Value must be literal term. for example:some_module.erl...-attr1(1).-att...

2009-01-13 11:48:18 76

boot_server 及 Erlang emulator启动过程

在分布式系统中,因为涉及到大量的机器,所以部署略微有些繁琐。使用Erlang开发的系统,我们可以通过boot_server来加载我们的代码,免去了ssh登陆服务器,更新代码这样繁琐的步骤。我们只需要将最新的beam文件放到一个server,作为Erlang的boot_server,其他的机器启动Erlang时,通过连接这个Boot Server加载最新的应用代码,完成程序的启动。架...

2009-01-13 11:45:34 340

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除