
Erlang
文章平均质量分 74
hidetobj
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ECUG III -- Elrang中国用户组第三次活动
详情请见: [url]http://ecug.org/[/url] 大家也帮忙宣传宣传原创 2008-11-06 11:00:05 · 139 阅读 · 0 评论 -
Mnesia用户手册:三,构建Mnesia数据库
本章详细介绍了设计Mnesia数据库和编程结构的基本步骤: 1)定义schema 2)数据模型 3)启动Mnesia 4)创建新表 1,定义schema Mnesia系统的配置在schema里描述 schema是一个特殊的表,它包含了表名、每个表的存储类型(表应该存储为RAM、硬盘或两者)以及表的位置等信息 不像数据表,schema表里包含的信息只能通过schema相关的方法来...2008-08-27 21:46:06 · 169 阅读 · 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 · 246 阅读 · 0 评论 -
Mnesia用户手册:一,介绍
Mnesia是一个分布式数据库管理系统DBMS,适合于需要连续运算和软实时特性的电信应用及其他Erlang应用 目录 1,介绍 2,Mnesia快速上手 3,构建一个Mnesia数据库 4,事务和其他访问上下文 5,多种Mnesia特性 6,Mnesia系统信息 7,联合Mnesia和SNMP 8,Mnesia错误消息 9,备份callback接口 10,活动访问call...2008-08-26 15:47:50 · 261 阅读 · 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 · 252 阅读 · 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 · 167 阅读 · 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 · 149 阅读 · 0 评论 -
ubuntu下编译安装Erlang
先要这样 [code] apt-get install build-essential apt-get install libncurses5-dev apt-get install m4 apt-get install libssl-dev [/code] 然后要用新立得装如下库: libc6 unixodbc gcj 然后下载源代码 [code] tar -x...2008-01-18 02:28:27 · 240 阅读 · 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 · 160 阅读 · 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 · 210 阅读 · 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 · 431 阅读 · 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 · 331 阅读 · 0 评论 -
Erlang内存管理和运行模式笔记
Erlang进程非常轻量级 进程间通过消息传递进行通讯 进程接收消息时无法判断消息是共享的还是物理上复制过来的,这取决于Erlang运行时系统 每个进程都有一个邮箱,或者说是消息队列,队列中包含所有发给该进程的消息的指针 消息本身是一个term,存储在堆上 进程调用receive语句时会扫描邮箱直到找到第一个匹配的消息 发送消息时接收者由进程id来指定,而不管进程位于何处 Erl...原创 2008-09-25 16:40:26 · 323 阅读 · 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 · 251 阅读 · 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 · 283 阅读 · 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 · 221 阅读 · 0 评论 -
Erlang与ActionScript3采用JSON格式进行Socket通讯
前提: 需要下载[url=http://code.google.com/p/as3corelib/]as3corelib[/url]来为ActionScript3处理JSON codec server.erl [code] -module(server). -export([start/0,start/1,process/1]). -define(defPort, 8888). ...原创 2008-09-02 16:37:55 · 145 阅读 · 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 · 211 阅读 · 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 · 134 阅读 · 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 · 90 阅读 · 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 · 151 阅读 · 0 评论 -
Programming Erlang读书笔记8: Concurrency Programming
在Erlang里: 1,创建和销毁进程非常快 2,进程间发送消息非常快 3,在所有的操作系统间进程行为一致 4,可以有大量的进程 5,进程不共享内存并且完全独立 6,与进程交互的唯一途径是发送消息 Concurrency Primitives [code] Pid = spawn(Fun) Pid!Message receive Pattern1 [when...2008-01-09 19:44:22 · 145 阅读 · 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 · 139 阅读 · 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 · 266 阅读 · 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 · 454 阅读 · 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 · 231 阅读 · 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 · 155 阅读 · 0 评论 -
Erlang的分布式编程
1,什么是分布式程序? Erlang分布式程序是设计用来在网络计算机上运行并且只可以通过消息传递来协调活动 2,为啥要写分布式程序? 1) 性能 通过将程序的不同部分分布到不同计算机来并行运行,以此提升性能(适用于密集型、CPU是瓶颈的计算) 2) 可靠性 通过将程序分布来构建容错系统,以此提升可靠性。如果一台机器失败了,我们可以在另一台机器上继续计算 3) 伸缩性 如果我们s...2008-08-13 23:01:12 · 185 阅读 · 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 · 313 阅读 · 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 · 343 阅读 · 0 评论 -
OTP Design Principles: Gen_Server Behaviour
OTP Design Principles: Gen_Server Behaviour 1,Client-Server原则 client-server模型由一个中心服务器和任意多的客户端组成 该模型主要用来做资源管理操作,不同的客户端共享一个通用的资源,服务器负责管理该资源 2,例子 [code] -module(ch3). -behaviour(gen_server). ...原创 2008-08-22 12:19:52 · 107 阅读 · 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 · 123 阅读 · 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 · 143 阅读 · 0 评论 -
Programming Erlang读书笔记7: Concurrency
1, Erlang程序由许多进程组成,这些进程可以相互发送消息 2,这些消息可能接收并理解也可能不接收不理解,如果你希望消息被接收并理解,你必须等待应答 3,进程组可以连在一起,如果一组进程中的一个死掉,则该组的其他进程会收到一个说明那个进程为啥死掉的消息...2008-01-09 13:01:05 · 108 阅读 · 0 评论 -
Programming Erlang读书笔记6: 编译和运行Erl程序
启动和停止Eshell [code] $ erl 1> 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 · 244 阅读 · 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 · 122 阅读 · 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 · 122 阅读 · 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 · 147 阅读 · 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 · 132 阅读 · 0 评论 -
Programming Erlang读书笔记1:Why Erlang?
公司产品终于上线了,一切告一段落,可以有大把时间看书写字了。 新年最令人激动事:可以开始系统的学习Erlang了! Erlang的书籍和教材还很少,《Programming Erlang》是Erlang的发明者Joe Armstrong自己写的学习Erlang的书,可谓经典 为什么要学习Erlang?现在还不知道,学完了才知道Erlang值不值得学。 搞程序的需要宗教信仰啊。 [b]...2008-01-02 16:33:04 · 145 阅读 · 0 评论