Erlang
金庆
这个作者很懒,什么都没留下…
展开
-
Erlang edoc 多级目录出错
Erlang edoc 多级目录出错使用rebar doc来生成项目文档。但是当erl源文件目录src下建立子目录,并新建erlang文件后,就无法生成文档。例如,新建 src/tttt/, 并添加 dd_util.erl 文件。D:\six>d:/tools/rebar/rebar.cmd doc==> six (doc)ERROR: doc failed while processing D:原创 2015-03-26 17:04:33 · 1266 阅读 · 0 评论 -
Windows编译ejabberd
Windows编译ejabberd(金庆的专栏)安装 erlang OTP. 添加路径到 PATH, 使 erl 可以运行。git clone ejabberd安装 rebar:git clone git@github.com:rebar/rebar.gitE:\Git\rebar>bootstrap.batescript: exception error: no match of right h原创 2016-08-16 19:42:49 · 1735 阅读 · 0 评论 -
ejabberd为游戏免除注册限制
20161103_ejabberd为游戏免除注册限制(金庆的专栏 2016.11)ejabberd聊天服务器默认会限制同一IP注册帐号须间隔600s。 在游戏中需要为每个角色注册一个聊天帐号,不应该有此限制。 可以更改服务器代码,为游戏服务器免除这一注册间隔时间。 假设游戏服用专用的帐号登录ejabberd, 然后为这种帐号免除注册限制。在ejabberd.yml配置访问控制列表(ACL)中原创 2016-11-03 12:07:06 · 718 阅读 · 0 评论 -
ejabberd mod_echo 解析
ejabberd mod_echo 解析(金庆的专栏 2016.8)按开发入门的说明,mod_echo是最简单的模块之一。https://docs.ejabberd.im/developer/当然 mod_hello_world 只有开始和结束日志,没有实际功能,比 mod_echo 更简单。配置说明一定要看,因为其中有模块功能的简介:https://docs.ejabberd.im/admin/原创 2016-08-26 18:59:47 · 1126 阅读 · 0 评论 -
ejabberd模块开发
ejabberd模块开发(金庆的专栏 2016.8)参考:https://docs.ejabberd.im/developer/modules/运行ejabberdctl modules_update_specs 会创建 C:\.ejabberd-modules\source\, 其中下载了https://github.com/processone/ejabberd-contrib可以同样在sou原创 2016-08-25 12:14:49 · 1170 阅读 · 0 评论 -
ejabberd编译更新脚本
ejabberd编译更新脚本(金庆的专栏 2016.8)用rebar编译ejabberd源码,然后复制编译所得beam文件到ejabberd安装目录, 调用ejabberdctl热更新。call rebar compile skip_deps=trueREM Need write right to ejabberd dir.copy ebin\*.beam "C:\Program Files\原创 2016-08-24 10:09:12 · 896 阅读 · 0 评论 -
搭建ejabberd集群
搭建ejabberd集群(金庆的专栏 2016.8)以2台机器搭建一个ejabberd集群。2台机器都是外网一块网卡,内网另一块网卡。新建一个域名,添加2台机器的外网IP.分别用源码安装ejabberd,可以单机运行。复制 .erlang.cookie, 使2台机器都同。更改 /sbin/ejabberdctlERLANG_NODE=ejabberd@localhost 改为ERLANG_NODE原创 2016-08-19 17:10:17 · 2218 阅读 · 2 评论 -
Erlang Port 小心换行
Erlang Port 小心换行(金庆的专栏)Erlang的Port接口使用cin, cout与外部Port进程通信。一般open_port()用binary模式打开。 Port = open_port({spawn, PortExe}, [{packet, 4}, binary, use_stdio]),此时须小心Port进程在Windows上输出原创 2016-01-20 14:45:18 · 1479 阅读 · 0 评论 -
IntelliJ Idea 设置 Dialyzer
IntelliJ Idea 设置 Dialyzer(金庆的专栏)Erlang开发使用IDEA IDE可以设置外部工具Dialyzer, 然后就可以直接Tools->External Tools -> dialyzer 调用进行代码分析。配置方法为:File | Settings | Tools | External Tools需要添加参数 -r -r $ProjectFileDir$/ebin输出原创 2015-11-12 11:00:16 · 2367 阅读 · 0 评论 -
Erlang application stop 调用死锁
Erlang application stop 调用死锁(金庆的专栏)在application行为模块的start()中启动bson应用,在stop()中停止bson,结果application:stop(bson)会死锁。-module(my_app).-behaviour(application).%% Application callbacks-export([start/2, stop/1原创 2015-08-06 10:28:32 · 1429 阅读 · 0 评论 -
emysql add_poop() 超时出错
emysql add_poop() 超时出错(金庆的专栏)sample/a_hello.erl 连接本机更改为连接局域网内的MySql服务器: emysql:add_pool(hello_pool, [{size,1}, {host, "192.168.1.2"}, ...编译运行时会出现超时退出:D:\...\deps\emysql\samples>erl -p原创 2015-08-25 17:48:45 · 1850 阅读 · 0 评论 -
Erlang简单并行服务器
Erlang简单并行服务器(金庆的专栏)Erlang并行服务器为每个Tcp连接创建对应的连接进程,处理客户端数据。参考 Erlang程序设计(第2版)17.1.3 顺序和并行服务器并行服务器的诀窍是:每当gen_tcp:accept收到一个新连接时就立即分裂一个新进程。为每个新套接字连接创建一个并行进程。-module(gs_svr).-author("jinqing").-behaviour(g原创 2015-07-28 15:02:17 · 2169 阅读 · 0 评论 -
Erlang的常驻模块与功能模块
Erlang的常驻模块与功能模块Residence moduleThe module where a process has its tail-recursive loop function(s).If the tail-recursive loop functions are implemented in several modules, all those modules are reside原创 2015-06-10 10:44:24 · 1351 阅读 · 0 评论 -
Erlang递归列举目录下文件
Erlang递归列举目录下文件(金庆的专栏)%%%-------------------------------------------------------------------%%% @author jinqing%%% @copyright (C) 2015, %%% @doc 递归列举目录下的所有文件。%%%%%% @end%%% Created : 29. 四月 2015 16:02原创 2015-05-05 17:06:52 · 1960 阅读 · 0 评论 -
区服节点互连
区服节点互连(金庆的专栏)【上海龙图招聘】所有Erlang服务器节点加入同一集群,使用相同的cookie。使用BIF erlang:set_cookie(node(), C)把本地节点的cookie设置为原子C。1个或多个节点配置为主节点(主服务器)。主节点不必全部启动,但要求至少启动1个。主节点配置可热更新即时生效。主节点启动后,主动连接所有未连接的主节点,每隔5s尝试连接。其他节点,如新开区服原创 2015-05-11 10:32:37 · 1375 阅读 · 0 评论 -
Erlang标准数据结构的选择
Erlang标准数据结构的选择(金庆的专栏)gen_server with a dict vs mnesia table vs etshttp://stackoverflow.com/questions/2154376/gen-server-with-a-dict-vs-mnesia-table-vs-ets给出一个按应用类型选择的方法:Multiple processes on multiple原创 2015-04-20 16:32:27 · 1721 阅读 · 0 评论 -
lager_transform未定义错误
lager_transform未定义错误rebar编译时报错:D:\server\six>d:/tools/rebar/rebar.cmd compile==> mysql (compile)Compiling d:/server/six/deps/mysql/src/mysql_recv.erl failed:d:/server/six/deps/mysql/src/mysql_recv.erl原创 2015-03-31 16:42:47 · 3437 阅读 · 0 评论 -
Erlang 集群互连测试
Erlang 集群互连测试Erlang节点相同cookie全互联成为一个集群(cluster).如果2个集群不同cookie, 然后其中有节点连接到对方集群的节点,这2个集群会合并成一个集群吗?连接到另一个集群时,需要先设置cookie,不然会被拒绝。erlang:set_cookie(Node2, DiffCookie)集群aaaa有节点a1, a2, cookie为 cookie_aaaa.集原创 2015-03-17 10:45:44 · 2843 阅读 · 0 评论 -
ejabberd开发和部署
ejabberd开发和部署(金庆的专栏 2016.8)搭建了自己的ejabberd集群,然后少量更改源码,实现定制的XMPP服务器。从github fork ejabberd 库,定为 master 分支跟踪原始库 master 分支,版本升级时从原库合并一次。从16.09版本分一个 dev 分支,自己的代码就在这个 dev 分支上写。服务器从源码编译安装。代码更改后,make install,原创 2016-10-31 17:13:45 · 1089 阅读 · 2 评论