2007-11-16

ubuntu安装otp R11B 的一些记录

关键字: erlang, compile, otp, ubuntu
新的ubuntu系统会缺少一些工具 和lib. 用apt-get来获得 apt-get install build-essential apt-get install libncurses5-dev apt-get install m4 apt-get install libssl-dev 接着再编译就okay了. 运行 # erl 1> appmon:start(). 会发现界面没有, 程序停在那里. 这是因为缺少了tcl/tk库.  apt-get install  tk8.3-dev 装的时候, 会出现如下问题: ...
2007-10-08

emulator调试日志: driver篇

关键字: erlang,otp,emulator, driver,port
--------- driver篇 --------------- driver一般通过erl_ddll.erl中的load_driver/2函数来实现. load_driver(Path, Driver) ->     do_load_driver(Path, Driver, [{driver_options,[kill_ports]}]). ... do_load_driver(Path, Driver, DriverFlags) ->     case erl_ddll:try_load(Path, D ...
2007-10-08

修正Programming Erlang中linked driver实例的小问题

关键字: erlang,joe,armstrong,driver, port
    也许很多人碰上过, 用example1_lid:start()会碰上如下错误:      ** exited: {error,could_not_load_driver} **     用gdb跟了一下, 发现其实load driver是没有问题, 问题出在load driver之后的版本匹配, driver_incorrect_version.     解决办法很简单,两步:   1. 把example1_lid.c中的 &nbs ...
2007-10-06

emulator调试日志: port篇

关键字: erlang,otp,emulator, port
------------------ port 篇 ------------- open_port/2这个是由bif实现, 源文件在erl_bif_port.c中, 函数是BIF_RETTYPE open_port_2(BIF_ALIST_2) 其中: #define BIF_RETTYPE Eterm #define BIF_ALIST_2 Process* A__p, Eterm A_1, Eterm A_2 此函数调用了同文件中的 static int open_port(Process* p, Eterm name, Eterm settings, int *err_ ...
2007-09-04

supervisor一小技巧

关键字: simple_one_for_one
simple_one_for_one可以让supervisor的所有child都以相相同的处理步骤来动态加载child. ejabberd的ejabberd_tmp_sup就是此技巧的一例.
2007-08-29

gen_server

关键字: gen_server
State用来存数据, 任何erlang term都行 gen_server:start_link({local, ch3}, ch3, [], []) => {ok, Pid}第一个参数表示本地(local方式)建立一个名为ch3的进程.第二个参数表示回调函数(比如handle_call, handle_cast)所在的模块.注意,前者是进程名,后者是模块名. 两个可以不一样. 进程是从程序结构方面来说的, 而模块是从目录结构这方面来说的.第一个参数可以省略成为start_link/3,此时进程不会注册名称,以pid代替. gen_server:start_link()是同 ...
2007-08-29

application

关键字: erlang,otp,application
用pman 可以看出application controller 是一个gen_server实例, 由gen_server:loop/6执行相应的功能.  此进程注册名为application_controller
2007-07-26

epmd源码学习

关键字: erlang,epmd
注: 此处节点是指分布式中分布在各终端的点, 而结点是指存在数据结构中的元素. 各结点组成一个链表 c 代码   typedef struct {     Node *reg;            /*已注册的结点链表*/     Node *unreg;   & ...
2007-07-15

Tracing和dbg

关键字: erlang,trace,dbg
代码不必用特殊的标记(比如debug_info)来编译,也可以trace. erlang:trace是最底层的BIF实现的trace功能。格式如下 erlang:trace(PidSpec,How,FlagList) 它要通过erlang:trace_pattern(MFA,MatchSpec,FlagList)来辅助输出. MatchSpec这东西很难写,在dbg模块中可以用dbg:fun2ms,它可以把函数转成MatchSpec. 比如: dbg:fun2ms(fun(_) -> return_trace() end). 相当于 [{'_',[ ...
2007-07-15

ets,dets与大数据存储

关键字: erlang,ets,dets
ets与dets都是用来存大数据的机制 ets是Erlang term storage的缩写, dets则是disk ets. 它们不同的就是ets存在内存里面,而dets则存在磁盘上。 ets存的数据表是暂时性的,拥有它的进程挂了,它也会挂掉. dets就算程序完成或者挂了,数据表还是持久存在的.如果是异常退出的, 可以进行修复. ets表看起来像是由erlang实现的,但实际上它是由运行时系统实现的,所以具有更高的性能. 且有一个特性: ets表不会被垃圾回收! 操作 建表 ets:new和dets:open_file 插入 et ...
2007-07-11

用telnet来与ejabberd交互

关键字: erlang,ejabberd,telnet
看了一篇文章,觉得用telnet来调试ejabberd也是一种好办法,同时可以明文看到服务器返回的xml. 先telnet上去  代码   # telnet 192.168.0.97 5222   Trying 192.168.0.97...   Connected to erlt97.3322.org (192.168.0.97).   Escape character  ...
2007-07-11

ejabberd管理页面和客户端

关键字: erlang,ejabberd,webadmin
转战到97机器。在ejabber.config加上这么一行.  这样就有管理权限了, {user, "admin", "192.168.0.97"},表示admin@192.168.0.97这个用户。   {acl, admin, {user, "admin", "192.168.0.97"}}.     在浏览器的地址栏输入http://192.168.0.97: ...
这些天捣鼓了下ejabberd,准备研究它的代码,做为榜样~ 我这儿用的是1.1.3的代码,而svn上面的代码有些地方做了比较大的改动. 安装很简单 ./configure   make && make install   就ok了. ejabberd 会安装在var/lib/ejabberd目录, 配置文件在/etc/ejabberd目录,默认是ejabberd.cfg, 日志放在/var/log/ejabberd目录下. ...
2007-06-29

mnesia相关笔记

关键字: erlang,mnesia
当前版本OTP 5.5的mensia建表的表名可以和记录名不一样. 代码 mnesia:create_table(t_employee, [{attributes, record_info(fields, employee)}]).   根据employee记录建立t_empolyee表
2007-06-27

OTP设计原则:应用

关键字: erlang,otp
7 Applications This chapter should be read in conjunction with app(4) and application(3). 7.1 Application Concept When we have written code implementing some specific functionality, we might want to make the code into an application, that is a component that can be started and stopped as a uni ...
2007-06-26

erlang网络编程的几个性能调优和注意点

关键字: erlang,tuning,性能
前些天给echo_server写了个非常简单的连接压力测试程序, 代码   -module(stress_test).      -export([start/0, tests/1]).      start() ->       tests(12345).      tests(Port) ...
2007-06-24

erlc

关键字: erlang,erlc
erlc 命令 erlc 概要 编译器 描述 The erlc program provides a common way to run all compilers in the Erlang system. Depending on the extension of each input file, erlc will invoke the appropriate compiler. Regardless of which compiler is used, the same flags are used to provide parameters such a ...
2007-06-23

echo_server

关键字: erlang,echo
代码   -module(echo_server).   -export([start/0,stop/0]).      -define(LISTEN_PORT,12345).     % 开放端口   -define(MAX_CONN, 5000).        % 最大连接数&n ...
2007-06-22

OTP设计原则:Supervisor行为

关键字: erlang,fp,supervisor
5 Supervisor Behaviour This section should be read in conjunction with supervisor(3), where all details about the supervisor behaviour is given. 这节应该和supervisor(3)结合来读,所有关于supervisor行为的细节都在那儿。 5.1 Supervision Principles A supervisor is responsible for starting, stopping and monitoring its chi ...
2007-06-22

OTP设计原则:Gen_Event 行为

关键字: erlang,otp,gen_event
4 Gen_Event 行为 这一章应该与gen_event(3)结合起来看,gen_event(3)对所有接口函数和回调函数都有详细描述.  4.1 事件处理原则 在OTP中, an event manager is a named object to which events can be sent. An event could be, for example, an error, an alarm or some information that should be logged. In the event manager, zero, one or seve ...
2007-06-22

OTP设计原则:Gen_Fsm 行为

关键字: erlang,otp,gen_fsm
3 Gen_Fsm 行为 This chapter should be read in conjunction with gen_fsm(3), where all interface functions and callback functions are described in detail. 3.1 Finite State Machines 3.1 有限状态机 A finite state machine, FSM, can be described as a set of relations of the form: java 代码State(S) x&n ...
2007-06-22

OTP设计原则:Gen_Server行为

关键字: erlang,otp,gen_server
2 Gen_Server Behaviour This chapter should be read in conjunction with gen_server(3), where all interface functions and callback functions are described in detail. 2.1 Client-Server Principles The client-server model is characterized by a central server and an arbitrary number of clients. The ...
2007-06-22

OTP设计原则:概要

关键字: erlang,otp,fp
1 Overview OTP 设计原则 是一套教你如何运用进程,模块和目录等条件来组织Erlang代码的原则. 1.1 Supervision Trees 管理树 A basic concept in Erlang/OTP is the supervision tree. This is a process structuring model based on the idea of workers and supervisors. Erlang/OTP中的一个基本概念就是 管理树. 这是一个以工作者和管理者思想为基础的进程结构模型. Workers are ...
2007-06-21

whereis函数

关键字: erlang,fp,whereis
whereis(RegName) -> pid() | port() | undefined Returns the pid or port identifier with the registered name RegName. Returns undefined if the name is not registered. 原来是erlang核心模块的东东, erlang:whereis/1.  传入注册的名称RegName, 返回进程ID或端口ID.如果没注册的话,返回undefined.
2007-06-21

tcp_server.erl注解

关键字: erlang,fp,tcp,server
java 代码   %% Copyright (C) 2002, Joe Armstrong   %% File    : tcp_server.erl   %% Author  : Joe Armstrong (joe@sics.se)   %% Purpose : Keeps ...
coderplay
搜索本博客
存档
最新评论