
erlang
杨宗卫的爸爸
开发十于年,从事c++,c等开发,参与过多个项目。虚心学习,认真求教。(杨宗卫的父亲)。
展开
-
mnesia 多节点生成测试
mnesia 生成数据库在多个节点可以直接生成,也可以在启动节点后再连接。这里的测试用erlang.mk 生成工程,测试的方法用趣学erlang中的方法。1. mkdir db2. cd db3. move erlang.mk 到这个文件夹,也可以网上下载。make -f erlang.mk bootstrap bootstrap-rel4.cd src5.vi原创 2017-06-15 17:24:07 · 445 阅读 · 0 评论 -
erlang json: jsx,rfc4627,mochijson2,jsonx 简单比较
先看个例子吧:Word = unicode:characters_to_binary( "大海" ),Doc2 = [{name, Word}, {age, 33}, {phones, [3332211, 4443322, Word]}],A2 = jsonx:encode( Doc2 ), %>A3 = jsx:encode( Doc2 ), %>L = {struct, D原创 2016-09-22 15:20:09 · 2163 阅读 · 2 评论 -
erlang 用 IntelliJ IDEA 工具进行调试
RequirementsMy system is a Windows 8.1 (6.3 build 9600).Download IntelliJ IDEA from JetBrains (I use the Community Edition, currently ideaIC-14.0.3.exe).My installed erlang is:?1转载 2016-09-21 00:49:44 · 4879 阅读 · 0 评论 -
cowboy 里不能创建mnesia 的问题。
今天有一个很奇怪的问题,就是在cowboy 里边调用数据库老是不成功,是什么原因呢,现象就是如果加载了mnesia 在创建时就会有提示:timeout 并且,数据库文件没有生成,用mnesia:info 查看,会看到db is not used. 创建的表没有生成。"opt_disc. Directory "/Users/macbook/Desktop/erlang/cowboy-m原创 2016-09-14 22:33:00 · 452 阅读 · 0 评论 -
cowboy 2.0 程序如何调试
cowboy 2.0 版本程序是如何实现调试?1. 修改 makefile 增加调试信息PROJECT = echo_getPROJECT_DESCRIPTION = Cowboy GET echo examplePROJECT_VERSION = 1DEPS = cowboydep_cowboy_commit = masterERLC_OPTS = +debug_原创 2016-09-07 23:47:11 · 832 阅读 · 0 评论 -
cowboy 编译错误 src/cowboy_http.erl:505
今天编译cowboy 发现编译不过,src/cowboy_http.erl:505: illegal use of variable 'Name' in mapsrc/cowboy_http.erl:507: illegal use of variable 'Name' in mapsrc/cowboy_http.erl:508: illegal use of variable '原创 2016-08-31 17:14:21 · 1006 阅读 · 0 评论 -
cowboy 使用
使用cowboy实现websocket主要实现以下回调函数 下面的函数返回值要具体弄清楚原因参考websocket具体协议 主要就是两个部分 握手和数据传输 -export([init/3]). 常见所有处理程序回调。建立WebSocket连接,这个函数必须返回 upgrade 的元组。 -export([websocket_init/3]). 初始socket状态,也可转载 2016-09-09 09:37:01 · 2131 阅读 · 0 评论 -
mnesia 文档地址
mnesia是erlang提供的一个基于分布式的数据库管理系统。它的分布式和erlang一样都是”天生的”。集群,备份,主从这些在mnesia上面都非常简单。mnesia 基础1. 官方文档Erlang Mnesia Man PageBuilding A Mnesia DatabaseMnesia 中文版 用户手册2. 表的存储形式mnesia中的表有三转载 2016-06-16 14:21:09 · 1071 阅读 · 0 评论 -
mnesia 总结
Q: 加入一个新节点到Mnesia System > mnesia:start().> mnesia:change_config(extra_db_nodes, [some_existing_node]). %% disk-less node now> mnesia:change_table_copy_type(schema, node(转载 2016-06-16 00:26:01 · 523 阅读 · 0 评论 -
mnesia 数据转移
我打算把一个项目里的mnesia数据库完封不动移动到另一个node上。实际上不是移动那个数据库目录再改个名这么简单的。感激大神帮忙。现在总结一下。假设有node: aa@localhost 和 bb@localhost, 在aa@localhost上的mnesia有个user表, 我们要把aa@localhost上面的mnesia移动到bb@localhost。转载 2016-06-15 23:54:23 · 1081 阅读 · 0 评论 -
erlang utf8 与unicode关系
erlang没有字符串数据类型代之以list表达,要搞清楚erlang中如何处理unicode则需要理解list,binary以及字符编码对应关系。 utf-8 unicode 二进制 十进制十六进制 二进制十进制 十六进制 前11100101100010011000110122913714转载 2016-06-13 01:58:17 · 1390 阅读 · 0 评论 -
erlang fsm 学习及用例
1. 有限状态机 有限状态机可以用下面这个公式来表达State(S) x Event(E) -> Actions(A), State(S')表示的就是在S状态时如果有事件E发生,那么执行动作A后把状态调整到S’。理解很好理解,如果能够熟练应用必须得下苦功,多练习。 start_link跟gen-sever 类似,启动后进入init初始化,结果是 ok,StateN转载 2016-09-25 23:39:22 · 510 阅读 · 0 评论 -
erlang 关于表达式的不同用法。
看下边的例子,对于不同的表达式,可以用不同的方法去实现,代码可以体会到里边有的不同。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%filter2( Line )-> Num = re:run(Line, "[0-9]{6}", [{capture,first,list}]), if Num /= nomatch ->原创 2016-10-23 00:07:04 · 547 阅读 · 0 评论 -
10 个有用的工具 Essential Erlang Tools for Erlang Developers
10 Essential Erlang Tools for Erlang DevelopersIntroductionIn this tutorial, I'll cover the tools that I use the most in my day-to-day life as an Erlang developer. All or most of the topics that转载 2016-09-28 15:27:20 · 1430 阅读 · 0 评论 -
erlang mnesia 节点同步数据
Mnesia的机制稍微有些奇怪, 今天一天都比较闲,于是测试study了下, 看看是如果动作. 目标: 逐渐新增N个Mnesia节点,并确保数据在这些节点上保持同步. 过程如下: 1. Mnesia的分布式可以从一个节点开始, 然后慢慢新增. 2. 新增加一个节点的时候, 首先要确保新节点上已经调用过mnesia:start() 3. 在每个已知存活的节点上调用转载 2017-06-13 17:39:52 · 1836 阅读 · 0 评论 -
erlang gen_server 测试
%kitty.erl 文件-module(kitty).-behaviour(gen_server).-export([start_link/0, order_cat/4, return_cat/2, close_shop/1]).-export([init/1, handle_call/3, handle_cast/2, handle_info/2,原创 2017-06-13 13:48:36 · 400 阅读 · 0 评论 -
erlang fsm 使用
有限状态机(问什么从来没有提过无限状态机,请知道的朋友不吝赐教)的官方文档定义是:State(S) x Event(E) -> Actions(A), State(S')If we are in state S and the event E occurs, we should perform the actions A and make a transition to转载 2017-05-21 17:16:08 · 1008 阅读 · 0 评论 -
erlang vm debug 调试编译
1. download source codetar -xzvf otp_src-18.3.tar.gz2. cd /root/source/otp_src_18.33. export ERL_TOP=`pwd`4. cd $ERL_TOP/erts/emulator5. make TYPE=debug smp plain (这里和官网的文档不一样,用官网的生成结果不正确)原创 2017-05-09 11:52:40 · 715 阅读 · 0 评论 -
Erlang/Elixir: 外部通信之-端口驱动
https://segmentfault.com/a/1190000006250778系列:Erlang/Elixir: 外部通信之-NIFErlang/Elixir: 外部通信之-端口驱动Erlang/Elixir: 外部通信之-C节点本文是Erlang/Elixir和外部世界通信的第一篇, 阐述了端口驱动的基本概念以及和外部世界的通信方式, 目前主要有如下几种方转载 2017-05-17 15:41:06 · 794 阅读 · 0 评论 -
Erlang和其他语言的交互
Erlang和其他语言的交互Erlang和其他语言(如C和Java)的交互手段一直是我很感兴趣的主题,周末看了下OTP文档,终于大致理清楚了思路。这里先简单总结四种交互手段,也是更进一步学习Erlang的开始。端口最简单的方式是调用Erlang模块的 open_port/2 ,创建一个端口。Erlang端口可以被认为是一个外部Erlang进程,交互手段是通过标准IO输入输出,对应C转载 2017-05-17 15:38:47 · 880 阅读 · 0 评论 -
erlang c erl_interface
相关文档http://www.erlang.org/doc/tutorial/erl_interface.htmlhttp://www.erlang.org/doc/apps/erl_interface/ei_users_guide.html(1),字符串被截断问题片段说明: 输入[1,2,0,0,2,3] 149行会返回[1,2,0,0.2,3]1转载 2017-05-17 15:37:08 · 707 阅读 · 0 评论 -
erlang vim 插件安装
1.创建目录mkdir -p ~/.vim/autoload ~/.vim/bundle 2.下载pathogen插件wget -O ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim3.修改.vimrc配置文件call pat转载 2017-05-25 15:43:06 · 896 阅读 · 0 评论 -
erlang 备忘
1. 命令行操作: %进入调试 begin application:load(myapp), myapp_server:start(5555) end. % 退出调试 begin myapp_server:stop(), q() end.2. a 是模块名: begin c(a,[debug_info])原创 2016-05-27 15:51:48 · 1955 阅读 · 2 评论 -
erlang 导入库脚本
erlang 导入库时要copy 还要写配置文件,现在写了一个脚本来实现这个功能。调用filetest( "/home/yangzm/erl/ej/" "/opt/erlang/lib/erlang/lib" ).会把ebin 及依赖的ebin都 copy到目标,并在~/.erlang 中添加路径。代码如下:%---------------------------原创 2016-06-10 23:26:33 · 1040 阅读 · 0 评论 -
erlang 下好用的json 库 ej
erlang 下边的json 库用过几个,今天发现了ej库,解析和生成都很方便,下边是使用说明,里边详细的用法看里边的例子就可以了,这里给出的是为什么这么用,里边数据是怎么生成的。1. ej 库下载地址是:https://codeload.github.com/seth/ej/zip/master2. 使用说明% menu.json file%{"menu原创 2016-06-11 00:53:46 · 1317 阅读 · 0 评论 -
erlang 远程调试
远程debug调试官方: /lib/debugger-3.2.6/doc/html/debugger_chapter.html#id58850 看了此文档,也没有找到怎么使用。不知道没提供还是我没找到。1.11 Debugging Remote Nodes By using debugger:start/1, it can be specified if Debugger转载 2016-06-09 09:40:49 · 1082 阅读 · 0 评论 -
erlang mnesia 遍历
Best way to print out Mnesia tableup vote5 down vote favorite2I tried this code snippet:print_next(Current) -> case mnesia:dirty_next(muppet, Current) of转载 2016-05-27 10:31:23 · 1083 阅读 · 0 评论 -
erlang http post and get 请求
参考:http://erlang.org/doc/apps/inets/http_client.htmlget 请求:%同步请求createid() -> inets:start(), Rui = "http://some..../.php", {ok,Result}=httpc:request(get,{Rui,[]},[],[]),原创 2016-05-26 13:12:37 · 3613 阅读 · 0 评论 -
rebar 制作发布版本
全文目录:https://github.com/rebar/rebar/wiki如何使用rebar打包和发布应用。1 查看erlang版本[plain] view plain copy print?$ erl Erlang/OTP 17 [erts-6.2] [source] [64-bit] [asyn原创 2016-05-23 20:30:16 · 2165 阅读 · 0 评论 -
armstrong on software 老乔的文章一则
Wh转y I often implement things from scratchOnce upon a time there was an Erlang programmer who needed an FTP server running on one of the hosts in a private network. In fact he didn't need an FTP s转载 2016-01-28 10:27:08 · 407 阅读 · 0 评论 -
erlang map 使用
主要是遇到 Map匹配的问题,所以顺便回忆一下 Erlang 中的映射组Map,在其它语言中被称作Hash 哈希或者Dict 字典。Erlang 从 R17 版本开始支持映射组创建映射组Erlang 中的映射组用结构 #{} 表示,创建一个映射组可以这样% 不管你怎么排序,最终结果都是按键的字典顺序排列的#{ name => "wittyfox", age => 19转载 2016-01-28 00:14:20 · 6378 阅读 · 0 评论 -
在远程服务器ubuntu14.04上 安装erlang 17.5
远程服务器是ubuntu 14.04 上边的erlang 版本是16.03版本太低,所以我这里想安装一个高版本的,过程如下:1. 到https://codeload.github.com/yrashk/kerl/zip/master 下载kerl-master.zip 上传到服务器(这里我直接用curl -0 + url 下载有问题,所在才用这个方法,否则只有一个文件,也解压不出来原创 2015-12-25 11:12:57 · 1824 阅读 · 0 评论 -
erlang 各版本安装
http://docs.basho.com/riak/1.3.0/tutorials/installation/Installing-Erlang/Installing ErlangContentsInstall using kerlInstalling on GNU/LinuxInstalling on Mac OS XRiak 1.2, 1.2.转载 2015-12-25 10:24:56 · 8024 阅读 · 0 评论 -
erlang 分布测试
分布式是erlang的三大特性之一,都说erlang分布式,最简单最直接的应用就是节点通讯。问题来了,怎么节点通讯,节点连接可能很多人知道,如何在两个节点连接后进行本地与远程通信?这就是本篇所讲的内容。下面是示例代码,完成2个节点的通讯:A节点的代码:[plain] view plaincopy-module(serv转载 2015-12-22 14:52:45 · 2742 阅读 · 0 评论 -
Erlang与C构建的节点通讯
Erlang节点之间的通讯,主要用于两个Erlang节点之间的通讯,但Erlang还支持与java构建的节点通讯,甚至与c构建的节点通讯,前面两种方式在我以前的文章都有讲到,所以这里讲Erlang与c构建的节点通讯。Cnode与erl_interface想用C构建一个erlang节点,要利用Erlang的erl_interface接口来实现。c建立的节点,叫CNode ,其中,erl_转载 2015-12-22 14:13:58 · 614 阅读 · 0 评论 -
erlang 去除限制
Erlang本身对进程数,原子长度等没有限制,但为了提高性能和节省内存,总会在实际实现中和运行环境中作出一些限制。1、进程数量缺省情况下同时存在的最大Erlang进程数量不超过2^18=262144个,最大值为2^27-1=134217727,是由于内存的限制在32位环境中这个数量不太可能达到。有效范围是1024-134217727。怎么知道实际中使用进程限制?转载 2015-12-22 10:28:04 · 1427 阅读 · 0 评论 -
erlang md5 生成
最近要做一个监测服务器代码、数据版本的小程序,大致思路是后台有最新的数据文件和beam文件,每台服务器根据自己的数据文件生成MD5值,在timer里,每隔几分钟将serverId,代码版本号,数据文件的MD5值发送到后台,后台能够取到最新的beam文件已经数据文件,同样生成MD5值,然后与服务器发送过来的进行比较,如果哪个服发来的MD5值和后台最新的beam或者数据生成的MD5值,不一致,可能是在转载 2016-05-27 13:44:55 · 874 阅读 · 0 评论 -
erlang 坑
任何语言在使用中都会遇到这样那样的问题,erlang也是。这里整理下我遇到的一些问题,避免继续踩坑。说实话,“防坑指南”这个标题有点过于标新立异,不过还是希望能引起重视,避免在实际开发中重复犯这些问题。'--' 运算与 '++'运算1> [1,2,3,4] -- [1] -- [2]. [2,3,4]算是erlang经典的问题了。这是从后面算起的,先算转载 2016-05-28 01:52:18 · 1863 阅读 · 1 评论 -
erlang 启动参数
1 System PrinciplesThis chapter describes the strategies and options which are available to start an Erlang system. This section includes the following topics:Starting the systemRe-starting and转载 2016-05-28 02:07:53 · 3626 阅读 · 0 评论 -
erlang 算法
1、消重算法:[plain] view plain copy 1> List = [1,2,3,1,2,4]. [1,2,3,1,2,4] 2> sets:to_list(sets:from_list(List)). [3,2,1,4] 2、排序算法:[plain] view plain copy转载 2016-06-09 00:31:23 · 1172 阅读 · 0 评论