erlang

rebar3使用relx打包了

馋奶兔 提交于 2019-12-10 08:57:44
rebar3: https://github.com/erlang/rebar3 relx: http://github.com/erlware/relx relflox: http://github.com/RJ/relflow rebar3不使用reltool了,转用relx了。 No Reltool Reltool is out and relx is in. If you want to continue using reltool you can manually, it is still bundled with Erlang/OTP. 来源: oschina 链接: https://my.oschina.net/u/191928/blog/645817

Erlang, pass an nif object between functions

喜欢而已 提交于 2019-12-10 08:42:54
问题 I write a C nif code and in function new , it creates a stack struct with enif_alloc_resource and returns that. when i use function enif_make_resources , it always returns <<>> in erlang. Here is my C code: #include "erl_nif.h" static ErlNifResourceType *MEM_RESOURCE; typedef struct { int n; int ps; int pe; ERL_NIF_TERM *data; } Stack; Stack *new(ErlNifEnv *env, int size) { Stack *s = (Stack*) enif_alloc_resource(MEM_RESOURCE, sizeof(Stack)); s->n = size; s->ps = 0; s->pe = size - 1; s->data

rebar3使用run_erl运行erlang项目

你说的曾经没有我的故事 提交于 2019-12-10 08:30:56
在rebar3创建的项目中,启动的脚本是: "$BINDIR/run_erl" -daemon "$PIPE_DIR" "$RUNNER_LOG_DIR" \ "$(relx_start_command)" 搜索一番是通过run_erl运行erlang项目,里面用到了命名管道。 然后可以通过to_erl连接运行中的erlang项目 参考: [Erlang危机](4.4)命名管道 来源: oschina 链接: https://my.oschina.net/u/191928/blog/653851

Cowboy的使用

这一生的挚爱 提交于 2019-12-10 08:30:43
使用rebar3创建erlang项目 rebar3 new app test_cowboy 修改rebar.config {plugins, [ {rebar3_run, {git, "git://github.com/tsloughter/rebar3_run.git", {branch, "master"}}} ]}. {erl_opts, [debug_info]}. {deps, [ {cowboy, {git, "git://github.com/extend/cowboy.git",{tag, "1.0.0"}}} ]}. {relx, [{release, {test_cowboy, "1.0.0"}, [test_cowboy]}, {dev_mode, false}, {include_erts, true}, {system_libs, true}, {include_src, false}, {sys_config, "conf/sys.config"}, {vm_args, "conf/vm.args"}, {extended_start_script, true} ]}. 创建conf文件夹 mkdir conf && cd conf 在conf下创建vm.args和sys.config文件 vm.args ## Name of the node

Erlang安装时加载openssl的libcrypto.a失败,执行crypto:start()报错的解决方案

被刻印的时光 ゝ 提交于 2019-12-10 08:22:38
刚开始碰到这个问题的时候,从网上找的例子。搞了半天不好使,后来发现了原因,主因是自己对linux认知不够,只有发布服务、查看日志的基本功。 先上原文连接:http://blog.csdn.net/zhongruixian/article/details/21076405 然后再讲自己操作失败的原因,主要是为了给自己做下记录。 错误信息: [plain] view plain copy Eshell V5.10.3 (abort with ^G) 1> crypto:start(). ** exception error: undefined function crypto:start/0 2> =ERROR REPORT==== 12-Mar-2014::17:09:15 === Unable to load crypto library. Failed with error: "load_failed, Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'" OpenSSL might not be installed on this system. =ERROR REPORT=

Win10下 Erlang生成依赖项本地副本

孤者浪人 提交于 2019-12-10 08:18:08
有时候几个不同的应用程序会用到相同的依赖项,在这种情况下,我们会在应用程序的外部创建一个依赖项目录结构。对于我的本地项目,我会把所有已下载的rebar依赖项保存在一个地方。例如,我把所有这些依赖项保存在 G:\ErlangWorkSpace\erl_imports 路径下。 我这台机器的组织方式是ErlangWorkSpace 目录下的任何文件都不会有备份。因为这些我感兴趣的文件在Web上到处都是,所以没有必要创建本地备份。 默认你的主机已经安装了rebar和git,在git bash 下分别执行 rebar -V 和 git version 指令,如下说明已经安装成功: 1、在 G:\ErlangWorkSpace\erl_imports路径下新建一个 rebar.config 文件,在rebar.config文件下列出我想要使用的所有依赖项,它的的内容如下: {deps,[ {cowboy,".*",{git,"git://github.com/extend/cowboy.git","master"}}, {ranch,".*",{git,"git://github.com/extend/ranch.git","master"}}, {bitcask,".*",{git,"git://github.com/basho/bitcask.git","master"}},

rebar3发布,归属权更新到erlang团队了

荒凉一梦 提交于 2019-12-10 08:17:54
rebar3的beta 4发布很久了,一直奇怪为啥没有发布3.0稳定版。今天一看,不但发布了3.0 stable版本,而且github的地址也改了,由github.com/rebar/rebar3 改为 github.com/erlang/rebar3 了,再次感谢basho团队的大公无私。rebar原来是basho构建erlang应用的一个工具,后来开源,不断发展壮大,归属权也一变再变,独立出来成为一个新的项目,不再属于basho,然后现在归属erlang团队。erlang开发受益不浅,十分感谢。 来源: oschina 链接: https://my.oschina.net/u/191928/blog/637735

用rebar来构建,编译,测试,发布Erlang应用程序

半城伤御伤魂 提交于 2019-12-10 08:17:42
rebar 是一个遵循Erlang/OTP原则的Erlang项目构建工具,使用它可以减少构建标准Erlang/OTP项目架构配置的工作量,并且可以很容易的编译,测试,发布Erlang应用程序。更强大的是,rebar提供了一种依赖管理机制,它可以使开发者很方便的通过Git,Hg等方式重用常见的第三方Erlang模块或库。 安装 你可以从 https://github.com/rebar/rebar/wiki/rebar 下载并编译好的版本,也可以自己下载rebar的源代码,自己编译一个: git clone git://github.com/rebar/rebar.git cd rebar ./bootstrap 上面编译好之后,在当前目录下就会生成一个名为 "rebar" 独立的 erlang 脚本(escript),把它放在你想创建标准 Erlang/OTP 项目的目录路径下即可使用。 在终端输入 "rebar -c" 将列出所有可执行的 rebar 命令。或者输入 "rebar -h" 查看更多的 rebar 参数信息。 用rebar 创建项目 创建一个名为rebarapp的文件夹 mkdir rebarapp cd rebarapp 创建名为rebarapp项目: ./rebar create-app appid=rebarapp rebar 会根据默认模板(template

【读书笔记】"Erlang In Anger" Erlang应用的错误调试

耗尽温柔 提交于 2019-12-10 08:00:27
全书 封面不明觉厉 这本书很薄,只有93页,而且是免费的,有兴趣的朋友可以去看一看。虽然书中没有提到Elixir,但对于学习Elixir也很有帮助。这本书适合对Erlang和OTP有初步了解的人阅读。书中附带练习。 首先讲的是如何阅读代码 阅读别人的代码首先要搞清楚代码的类型。作者将Erlang的代码分成几类: 生代码 —— 一般是初学者的练习,不能算完整的项目; OTP应用 —— 包含了说明文档,测试,配置文件等等,可以直接使用。 库应用 —— 一般有两个模块 appname, appname_something 普通应用 —— 一般两个模块 appname,appname_app OTP发行包 —— 使用rebar3将项目和它的所有依赖打包在一起后得到的 第二章讲的是如何编写开源的Erlang应用 介绍了一下rebar3,它是用于生成Erlang发行包的工具。 一个OTP发行包往往包含多个OTP应用。 如果初始状态是不可靠的,那么Supervisor的作用就很小了。 比如,如果不能保证重启后连接正常,就需要在初始代码中发送重连消息,避免频繁的崩溃。 所以,初始状态的限制条件越少越好。 三种应用策略: permanent:一旦出问题,整个系统崩溃; transient:normal问题没事,别的问题崩溃; temporary:什么问题都没事,只会报告。 第三章讲的是为过载情况设计

Truncated error report in erlang

旧时模样 提交于 2019-12-10 07:55:03
问题 Warning: erlang n00b ahead. I'm trying to get a grasp of erlang, and just trying a basic hello world application with cowboy. I'm simulating an error, basically returning an invalid value somewhere in my code, and trying to interpret the error, which is: =ERROR REPORT==== 11-Jul-2013::15:45:00 === Error in process <0.167.0> with exit value: {{try_clause,{ok, {http_req,#Port<0.3619>,ranch_tcp,keepalive,<0.167.0>,<<3 bytes>>,'HTTP/1.1', {{127,0,0,1},60312},<<9 bytes>>,undefined,8081,<<1 byte>>