Erlang
文章平均质量分 74
hidetobj
这个作者很懒,什么都没留下…
展开
-
ECUG III -- Elrang中国用户组第三次活动
详情请见:[url]http://ecug.org/[/url]大家也帮忙宣传宣传原创 2008-11-06 11:00:05 · 122 阅读 · 0 评论 -
Mnesia用户手册:三,构建Mnesia数据库
本章详细介绍了设计Mnesia数据库和编程结构的基本步骤:1)定义schema2)数据模型3)启动Mnesia4)创建新表1,定义schemaMnesia系统的配置在schema里描述schema是一个特殊的表,它包含了表名、每个表的存储类型(表应该存储为RAM、硬盘或两者)以及表的位置等信息不像数据表,schema表里包含的信息只能通过schema相关的方法来...2008-08-27 21:46:06 · 142 阅读 · 0 评论 -
Mnesia用户手册:二,Mnesia快速上手
本章介绍了Mnesia:1)启动一个Erlang session并制定Mnesia数据库的目录2)初始化数据库结构3)启动Mnesia并创建必要的表1,初次启动Mnesia以下是Mnesia系统启动的一个简单展示:[code]unix> erl -mnesia dir '"/tmp/funky"'Erlang (BEAM) emulator version 4....2008-08-27 14:09:15 · 199 阅读 · 0 评论 -
Mnesia用户手册:一,介绍
Mnesia是一个分布式数据库管理系统DBMS,适合于需要连续运算和软实时特性的电信应用及其他Erlang应用目录1,介绍2,Mnesia快速上手3,构建一个Mnesia数据库4,事务和其他访问上下文5,多种Mnesia特性6,Mnesia系统信息7,联合Mnesia和SNMP8,Mnesia错误消息9,备份callback接口10,活动访问call...2008-08-26 15:47:50 · 235 阅读 · 0 评论 -
OTP Design Principles: Supervisor Behaviour
Supervisor Behaviour是一个用来实现一个supervisor进程来监控其他子进程的模块子进程可以是另一个supervisor,也可以是一个worker进程worker进程一般使用gen_event,gen_fsm或gen_server behaviour来实现一个使用该模块来实现的supervisor有一个接口方法的标准集,包括跟踪和错误报告的功能supervis...原创 2008-08-26 00:06:48 · 225 阅读 · 0 评论 -
gen_event例子:terminal_logger
定义三个terminal_logger:$$ terminal_logger1.erl[code]-module(terminal_logger1).-behaviour(gen_event).-export([init/1, handle_event/2, handle_call/2, handle_info/2, code_change/3, terminate/2])...原创 2008-08-25 16:23:08 · 146 阅读 · 0 评论 -
OTP Design Principles: Gen_Event Behaviour
1,事件处理原则在OTP里,event manager是一个命名对象,它可以接收event一个event可以是一个error、alarm或者一些应该被log的信息在event manager里会安装一些event handler当event manager被通知一个event时,event会被所有安装的event handler来处理event manager实现为一个进程,而...原创 2008-08-25 16:06:37 · 124 阅读 · 0 评论 -
ubuntu下编译安装Erlang
先要这样[code]apt-get install build-essentialapt-get install libncurses5-devapt-get install m4apt-get install libssl-dev[/code]然后要用新立得装如下库:libc6unixodbcgcj然后下载源代码[code]tar -x...2008-01-18 02:28:27 · 208 阅读 · 0 评论 -
Programming Eralng读书笔记10: 分布式编程
分布式程序指设计用于运行在网络中的可以通过消息传递相互交流彼此的活动的计算机上的程序分布式应用的好处:Performance、Reliability、Scalability、Intrinsically distributed application、Fun、1, key-value server的简单例子:[code]-module(kvs).-export([star...2008-01-15 13:09:45 · 133 阅读 · 0 评论 -
Mnesia用户手册:四,事务和其他访问上下文
本章讲述Mnesia事务系统和事务属性,它们让Mnesia成为一个容错的、分布式的数据库管理系统讲述内容包括锁(table lock和sticky lock)、如何绕开事务(dirty operation)、嵌套事务(nested transaction):1)事务属性,包括原子性,一致性,隔离性,持久性(ACID)2)锁3)脏操作4)Record名与Table名5)act...2008-08-29 00:06:51 · 171 阅读 · 0 评论 -
Mnesia用户手册:五,Mnesia高级特性
本章描述了构建分布式、容错的Mnesia数据库相关的高级特性:1)索引2)分布和容错3)表分片4)本地内容表5)无盘节点6)更多的schema管理7)Mnesia事件处理8)Mnesia应用调试9)Mnesia里的并发进程10)原型1,索引如果我们知道record的key,那么数据获取和匹配在执行起来都很高效相反如果不知道record的key...2008-09-01 17:27:40 · 390 阅读 · 0 评论 -
Erlang实现简单Web服务器
转贴一个简单的Web服务器:httpd.erl[code]%% httpd.erl - MicroHttpd-module(httpd).-author("ninhenry@gmail.com").-export([start/0,start/1,start/2,process/2]).-import(regexp,[split/2]).-define(de...原创 2008-09-01 17:59:44 · 292 阅读 · 0 评论 -
Erlang内存管理和运行模式笔记
Erlang进程非常轻量级进程间通过消息传递进行通讯进程接收消息时无法判断消息是共享的还是物理上复制过来的,这取决于Erlang运行时系统每个进程都有一个邮箱,或者说是消息队列,队列中包含所有发给该进程的消息的指针消息本身是一个term,存储在堆上进程调用receive语句时会扫描邮箱直到找到第一个匹配的消息发送消息时接收者由进程id来指定,而不管进程位于何处Erl...原创 2008-09-25 16:40:26 · 270 阅读 · 0 评论 -
Erlang:一个通用的网络服务器
原文: [url=http://20bits.com/2008/06/16/erlang-a-generalized-tcp-server/]Erlang: A Generalized TCP Server[/url]前面几篇文章里谈到了Erlang的[url=http://20bits.com/2008/05/02/network-programming-in-erlang/]gen_t...2008-09-24 16:50:14 · 213 阅读 · 0 评论 -
Erlang里的make
Erlang自带一个make工具我们看一个例子目录结构:[code]--Emakefile-include --test.hrl-src --test.erl-ebin[/code]Emakefile:[code]{'src/*', [{i, "include"}, {outdir, "ebin"}]}.[/code]test...原创 2008-09-22 17:38:50 · 246 阅读 · 0 评论 -
介绍Erlang里的Record
原文: [url=http://20bits.com/2008/06/15/erlang-an-introduction-to-records/]Erlang: An Introduction to Records[/url]在Erlang内部只有两种混合的数据类型:List和Tuple,而这两种都不支持命名访问,所以如果没有额外的库的话想创建像PHP、Ruby或Python中的关联数组(...2008-09-12 15:52:42 · 184 阅读 · 0 评论 -
Erlang与ActionScript3采用JSON格式进行Socket通讯
前提:需要下载[url=http://code.google.com/p/as3corelib/]as3corelib[/url]来为ActionScript3处理JSON codecserver.erl[code]-module(server).-export([start/0,start/1,process/1]).-define(defPort, 8888)....原创 2008-09-02 16:37:55 · 119 阅读 · 0 评论 -
Erlang的JSON库
使用下列JSON库:[url]http://www.lshift.net/blog/2007/02/17/json-and-json-rpc-for-erlang[/url]该JSON库采用[url=http://www.erlang.org/ml-archive/erlang-questions/200511/msg00193.html]Joe Armstrong prefered ...原创 2008-09-02 15:40:14 · 181 阅读 · 0 评论 -
Erlang和ActionScript3的Socket通讯
server.erl[code]-module(server).-export([start/0,start/1,process/1]).-define(defPort, 8888).start() -> start(?defPort).start(Port) -> case gen_tcp:listen(Port, [binary, {packet, 0},...原创 2008-09-02 13:18:35 · 109 阅读 · 0 评论 -
Erlang和Ruby的Socket通讯
server.erl[code]-module(server).-export([start/0,start/1,process/1]).-define(defPort, 8888).start() -> start(?defPort).start(Port) -> case gen_tcp:listen(Port, [binary, {packet, 0},...原创 2008-09-01 22:12:07 · 74 阅读 · 0 评论 -
Programming Erlang读书笔记9: 并行程序里的错误
使用BIF link将两个节点连接起来,如果其中一个节点B退出,则另一个节点A会收到{'EXIT', B, Why}的信号可以创建一个on_exit(Pid, Fun)方法来捕获某个Pid进程的死掉:[code]on_exit(Pid, Fun) -> spawn(fun() -> process_flag(trap_exit, true), li...2008-01-14 17:31:41 · 125 阅读 · 0 评论 -
Programming Erlang读书笔记8: Concurrency Programming
在Erlang里:1,创建和销毁进程非常快2,进程间发送消息非常快3,在所有的操作系统间进程行为一致4,可以有大量的进程5,进程不共享内存并且完全独立6,与进程交互的唯一途径是发送消息Concurrency Primitives[code]Pid = spawn(Fun)Pid!Messagereceive Pattern1 [when...2008-01-09 19:44:22 · 118 阅读 · 0 评论 -
OTP Design Principles Overview
1,Supervision Trees来源于workers和supervisor模型workers就是实际执行计算的进程supervisors是监控workers的进程,如果workers进程崩溃,supervisors可以负责重启workers进程supervision tree将代码分层为supervisors和workers,方便构建容错系统2,Behaviours...原创 2008-08-21 17:28:32 · 110 阅读 · 0 评论 -
Why OO sucks
为什么OO很恶心原文: [url]http://www.sics.se/~joe/bluetail/vol1/v1_oo.html[/url]作者:Joe Armstrong当我第一次知道OOP的概念时,我非常疑惑,但是不知道为啥——它仅仅在感觉上“不对”。在OOP问世之后变得粉流行(稍后解释为什么),而批评OOP就像“在教堂里咒骂”。OO成为了每个受尊敬的语言必须具备...2008-08-20 16:53:35 · 242 阅读 · 0 评论 -
如何写超强伸缩性的多游戏玩家服务器
附标题:如何构建超强伸缩性的游戏服务器而集容错、负载均衡和无限伸缩性于一身原文:[url=http://www.devmaster.net/articles/mmo-scalable-server/]Writing Low-Pain Massively Scalable Multiplayer Servers[/url][b]介绍[/b]本文以我的OpenPoker项目为例子,...2008-08-20 12:55:14 · 417 阅读 · 0 评论 -
Joe Armstrong:关于并行编程和Erlang的十个问题
原文:[url=http://www.thinkingparallel.com/2007/03/20/ten-questions-with-joe-armstrong-about-parallel-programming-and-erlang/]Ten Questions with Joe Armstrong about Parallel Programming and Erlang[/url]...2008-08-18 22:24:19 · 199 阅读 · 0 评论 -
Erlang里实现MapReduce
参考: [url]http://weblambdazero.blogspot.com/2008/08/mapreduce-in-erlang.html[/url]MapReduce的主要原理是将一个数据集上的计算分发到许多单独的进程上(map),然后收集它们的结果(reduce)。在Erlang里实现MapReduce非常细节也十分简单,例如Erlang的作者Joe Armstrong...2008-08-17 23:35:14 · 123 阅读 · 0 评论 -
Erlang的分布式编程
1,什么是分布式程序?Erlang分布式程序是设计用来在网络计算机上运行并且只可以通过消息传递来协调活动2,为啥要写分布式程序?1) 性能通过将程序的不同部分分布到不同计算机来并行运行,以此提升性能(适用于密集型、CPU是瓶颈的计算)2) 可靠性通过将程序分布来构建容错系统,以此提升可靠性。如果一台机器失败了,我们可以在另一台机器上继续计算3) 伸缩性如果我们s...2008-08-13 23:01:12 · 148 阅读 · 0 评论 -
gen_server入门
gen_server入门1)什么是gen_server?gen_server是OTP(Open Telecom Platform)的一个组件,OTP是Erlang的应用程序框架,gen_server定义了自己的一套规范,用来写Erlang服务器程序gen_server manual: [url]http://www.erlang.org/doc/man/gen_server.htm...2008-08-12 00:33:50 · 269 阅读 · 0 评论 -
Erlang基于Socket实现简单聊天室
1,chat_server.erl[code]-module(chat_server).-export([start/1]).-define(TCP_OPTIONS, [list, {packet, 0}, {active, false}, {reuseaddr, true}]).start(Port) -> Pid = spawn(fun() -> manage...2008-08-11 15:56:00 · 320 阅读 · 0 评论 -
OTP Design Principles: Gen_Server Behaviour
OTP Design Principles: Gen_Server Behaviour1,Client-Server原则client-server模型由一个中心服务器和任意多的客户端组成该模型主要用来做资源管理操作,不同的客户端共享一个通用的资源,服务器负责管理该资源2,例子[code]-module(ch3).-behaviour(gen_server)....原创 2008-08-22 12:19:52 · 92 阅读 · 0 评论 -
gen_server Hello World
简单的gen_server Hello World程序代码:[code]-module(genserver).-behaviour(gen_server).-export([start/0, hello/1]).-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_...原创 2008-08-22 13:45:57 · 107 阅读 · 0 评论 -
OTP Design Principles: Gen_Fsm Behaviour
1,有限状态机FSM,有限状态机,可以用以下形式来描述做一个关系集:[code]State(S) x Event(E) -> Actions(A), State(S')[/code]意思是,如果我们位于状态S,然后事件E发送了,则我们应该执行动作A,并且将状态改为S'2,例子有一个代码锁的门,如果输入的代码顺序是对的,那么将门打开30秒如果输入代码不完全,则等待...原创 2008-08-22 17:29:33 · 122 阅读 · 0 评论 -
Programming Erlang读书笔记7: Concurrency
1, Erlang程序由许多进程组成,这些进程可以相互发送消息2,这些消息可能接收并理解也可能不接收不理解,如果你希望消息被接收并理解,你必须等待应答3,进程组可以连在一起,如果一组进程中的一个死掉,则该组的其他进程会收到一个说明那个进程为啥死掉的消息...2008-01-09 13:01:05 · 86 阅读 · 0 评论 -
Programming Erlang读书笔记6: 编译和运行Erl程序
启动和停止Eshell[code]$ erl1> halt().[/code]查看/添加代码查找路径[code]code:get_path().code:add_patha(Dir).code:add_pathz(Dir).erl -pa Dir1 -pa Dir2 ... -pz DirK1 -pz DirK2[/code]查看载入...2008-01-08 18:21:48 · 204 阅读 · 0 评论 -
Programming Erlang读书笔记5: Advanced SP
所有的BIFs都属于erlang module,如erlang:tuple_to_list()、erlang:time(),但是大部分BIFs都auto-imported了,所以可以直接调用tuple_to_list()、time()erlang module的所有BIFs列表见:[url]http://www.erlang.org/doc/man/erlang.html[/url]B...2008-01-07 18:38:19 · 96 阅读 · 0 评论 -
Programming Erlang读书笔记4: Exceptions
语法:[code]try FuncOrExpressionSequence of Pattern1 [when Guard1] -> Expressions1; Pattern2 [when Guard2] -> Expressions2; ...catch ExceptionType: ExPattern1 [when ExGuard1] -> ExExpre...2008-01-07 10:39:52 · 104 阅读 · 0 评论 -
Programming Erlang读书笔记3: Sequential Programming
module是Erlang代码的基本单元,我们写的所有function都存储在module里面,module存储在.erl文件里面module编译成.beam文件后方可运行在Erlang_HOME建立一个名为.erlang的文件:[code]io:format("consulting .erlang in ~p~n", [element(2, file:get_cwd())])...2008-01-04 17:29:03 · 124 阅读 · 0 评论 -
Programming Erlang读书笔记2:Getting Started
去[url]http://www.erlang.org/download.html[/url]下载Windows版本的Erlang,将bin目录加入到系统path中cmd进去输入erl回车,就进入Eshell了,输入q().或者Ctrl+C/Break可以退出Eshell(命令末尾加.然后回车才会执行函数)在Eshell里输入help().可以看到命令列表(实际上是函数列表)基...2008-01-03 13:20:31 · 112 阅读 · 0 评论 -
Programming Erlang读书笔记1:Why Erlang?
公司产品终于上线了,一切告一段落,可以有大把时间看书写字了。新年最令人激动事:可以开始系统的学习Erlang了!Erlang的书籍和教材还很少,《Programming Erlang》是Erlang的发明者Joe Armstrong自己写的学习Erlang的书,可谓经典为什么要学习Erlang?现在还不知道,学完了才知道Erlang值不值得学。搞程序的需要宗教信仰啊。[b]...2008-01-02 16:33:04 · 122 阅读 · 0 评论