Rebar:Erlang构建工具(转载)

Windows下Erlang和RabbitMQ下载安装教程 由于RabbitMQ是基于Erlang语言开发的,所以在安装RabbitMQ之前需要先安装Erlang的运行环境。 一、下载Erlang和RabbitMQ 官网下载地址 Erlang下载地址: http://www.erlang.org/downloads RabbitMQ下载地址:http://www.rabbitmq.com/download.html 百度云下载地址 官网下载比较慢,所以推荐用百度云下载。( Erlang23+RabbitMQ3.8.4) 链接:https://pan.baidu.co 阅读详情

http://www.cnblogs.com/panfeng412/archive/2011/08/14/2137990.html
Rebar是一款Erlang的构建工具,使用它可以方便的编译、测试erlang程序、内联驱动和打包Erlang发行版本。

Rebar是一个独立的erlang脚本,所以使用Rebar发布程序非常简单,甚至可以直接集成在项目文件夹中。默认的情况下,Rebar会按照Erlang/OTP来组织项目的结构,这样一来,构建时的配置工作量就会大大减少。Rebar同时提供了依赖库(包)管理机制,方便程序员重用已存在的模块。Rebar的依赖管理机制支持的方式非常多,甚至包括Git, Hg等少见的方式。

下面是一个简单的例子演示如何将一个已经存在的项目转化为使用rebar来构建。

准备开始
Rebar的命令参数
构建Rebar
Rebar和OTP约定
模板支持
处理发行版本
扩展Rebar
1. 准备开始
学习使用Rebar的最好的方法是使用一个简单的例子来演示如何用Rebar构建Erlang项目。

1.1 创建项目
首先,我们为这个例子项目创建一个文件夹:

1 mkdir myapp
2 cd myapp
然后,下载rebar的二进制文件到这个项目的文件夹。注意:如果在你的PATH中间有已经有rebar了,不会对我们这个例子有影响。

复制代码
1 cd..;
2 git clone git://github.com/basho/rebar.git;
3 cd rebar;
4 ./bootstrap;
5 cd../myapp;
6 mv ../rebar/rebar ./
复制代码
接下来,我们使用rebar的模板系统来构建我们程序的“骨架”。

1 ./rebar create-app appid=myapp
这条命令执行后会产生一个子文件夹“src”,src包含三个文件夹:

myapp.app.src:OTP应用程序的资源文件
myapp_app.erl:一个OTP应用程序的Application behaviour
myapp_sup.erl: 一个OTP应用程序的Supervisor behaviour
1.2 编译
现在,我们可以使用rebar来编译这个应用程序:

1 ./rebar compile
执行完成后,会产生一个新的文件夹ebin,在其下会生成与src文件夹下源文件对应的beam文件。同时,rebar会根据myapp.app.src动态生成一个合适OTP项目资源文件。

编译完成后,如果想清除编译后的beam文件也非常简单:

1 ./rebar clean
1.3 测试

Rebar为eunit和common_test两个测试框架都提供了支持,在下面这个例子中,我们使用eunit来为我们的应用程序写一个测试用例。

打开文件src/myapp_app.erl,在-export()指令之后添加如下代码:

1 -ifdef(TEST).
2 -include_lib(“eunit/include/eunit.hrl”).
3 -endif.
然后在这个文件的最后添加:

1 -ifdef(TEST).
2 simple_test() ->
3 ok = application:start(myapp),
4 ?assertNot(undefined == whereis(myapp_sup)).
5 -endif.
通过使用ifdef保护我们的测试代码,保证最后的测试代码不会随着编译生成的代码进入ebin文件夹。

下面我们来运行这个单元测试用例:

1 ./rebar compile eunit
此时,屏幕上显示以下类似输出结果:

复制代码
1 ==> myapp (compile)
2 Compiled src/myapp_app.erl
3 Compiled src/myapp_sup.erl
4 ==> myapp (eunit)
5 Compiled src/myapp_sup.erl
6 Compiled src/myapp_app.erl
7 Test passed.
复制代码
注意:本次操作中rebar会编译myapp_app.erl文件两遍,第二遍编译会将输出放到一个特殊的文件夹(.eunit)下,生成的文件会包含调试信息和其他有用的测试标记。

另外,如果你想检查我们单元测试的覆盖率,可以通过在myapp/rebar.config添加一行进行配置:

1 {cover_enabled, true}.
然后,重新运行我们的测试用例,输入结果如下:

1 ==> myapp (compile)
2 ==> myapp (eunit)
3 Test passed.
4 Cover analysis: /Users/dizzyd/tmp/myapp/.eunit/index.html
有关详细的代码覆盖率分析,被保存在.eunit/index.html文件里。

  1. Rebar的命令参数
    Rebar提供了开发中最常用的一些操作,包括:

编译
单元测试和覆盖分析
静态分析(通过Dialyzer和Xref)
生成文档
依赖管理
另外,rebar和reltool提供模板机制以方便OTP嵌入式系统利用。

最经常使用的命令:

命令 描述
compile 编译项目中所有可用的源文件
eunit 使用Eunit执行单元测试
doc 使用Edoc生成文档
clean 去掉所有生成的文件。包括编译,单元测试等过程生成的
较少用的命令(按照字母序):

命令 描述
analyze 使用Dialyzer执行静态分析
build_plt 构建Dialyzer PLT; 具体描述请看:Dialyzer documentation
check_plt 检查Dialyzer PLT是否是最新,需要的话重新构建
create 根据模板创建一个典型的项目
create-app 根据模板文件priv/templates/simpleapp.template ,创建一个典型的OTP应用
create-node Create a prototypical OTP embedded system (described by the priv/templates/simplenode.reltool.config template)
delete-deps 删除rebar.config 设置的依赖库(包)源文件D
generate 使用 Reltool 构建一个embedded system
get-deps 检索rebar.config 文件中配置的依赖的代码
xref 使用Xref 分析依赖
Rebar可以通过compile指令编译多种格式的源文件:

源文件 目标文件 描述
src/.erl ebin/.beam ERlang的源文件
src/.app.src ebin/.app Erlang应用程序的资源文件
c_src/*.c priv/.so port driver的c语言源代码或者NIF共享链接库
mibs/.mib priv/mibs/.bin SNMP 的mib 文件
src/.xrl src/.erl Leex 生成的文件
src/.yrl src/.erl Yecc 生成的文件
asn1/.asn1 src/.erl ASN-1文件
templates/*.dtl ebin/*_dtl.beam ErlyDTL模板文件 (需要额外安装 ErlyDTL)
src/.lfe ebin/.beam LFE 源文件 (需要额外安装LFE)
src/.peg ebin/.beam Neotoma PEG 语法源文件 (需要额外安装Neotoma)
src/*.proto ebin/*_pb.beam, include/*_pb.hrl Protocol Buffers 参数(需要额外安装protobuffs)
Rebar可以在rebar.config文件中配置的各种选项:

命令 选项参数 描述
compile erl_first_files 需要提前编译的erlang源文件(例如behavior模块)
compile erl_opts 编译器支持的其他选项,详情请见 here
compile mib_first_files 需要提前编译的mib文件列表 (例如, mib 文件中import部分的引用的RFC文件
compile src_dirs 列出其他包含erlang源文件的目录
compile erlydtl_opts 更多的支持的选项查阅 ErlyDTL Templates
clean clean_files 需要在clean步骤删除的文件列表,列出那些需要clean指令删除的其他模块的文件
doc edoc_opts edoc 支持的指令,详见:here
eunit eunit_opts Eunit支持的指令,详见 here
eunit cover_enabled 开启erlang的覆盖率分析
eunit eunit_compile_opts Eunit编译时用到的其他的选项
analyze dialyzer_opts 指定Dialyzer PLT 文件
build_plt dialyzer_opts 指定Dialyzer PLT 文件
check_plt dialyzer_opts 指定 Dialyzer PLT 文件
get-deps, delete-deps base_dir 为deps_dir 指定一个候选的目录
get-deps, delete-deps deps_dir 制定一个文件夹存储依赖
get-deps, delete-deps deps 依赖的列表
generate target_dir 目标文件夹
generate overlay_vars Overlay variables file
xref xref_warnings 打开xref的警告
xref xref_checks Xref模块中analyze/3支持的选项,具体可以参考: here
3. 构建Rebar
下载rebar:

1 $git clone git://github.com/basho/rebar.git
构建rebar:

1 cdrebar2 ./bootstrap
3 Recompile: src/rebar_core
4 ==> rebar (compile)
5 Congratulations! You now have a self-contained script called “rebar” in your current working directory. Place this script anywhere in your path and you can use rebar to build OTP-compliant apps.
此时,我们有了一个rebar执行脚本,拷贝这个脚本到项目目录,开始我们的rebar之旅。

  1. Rebar和OTP约定
    Rebar按照OTP的约定组织项目,OTP约定可以参考:OTP设计原则。基于此,应用程序的目录需要下列子文件夹:

src
ebin
priv
include
应用程序的资源文件(*.app)应该放到ebin文件夹下。

除了上面文件夹,rebar还支持下列的原则:

test:包含EUnit测试脚本的文件夹
c_src:包含c语言写的port drivers
5. 模板支持
我可以使用我的模板吗?

是的,只要把模板文件(mytemplate.template)放到.rebar/templates下,然后通过下列命令使用:

1 ./rebar create template=mytemplate
6. 管理发行版本
reltool.config简介:

erlang通过配置文件reltool.config来帮助创建节点,配置文件中包含rebar和reltool(Erlang R13B引入的发布管理工具)创建节点需要的信息。

创建应用如下:

1 ./rebar create-app appid=exemplar
注意:create-app和create-node选项能够在rebar_templater.erl中找到,其他的支持的参数都能在simpleapp.template和simplenode.template中找到。

要创建一个节点,需要先手动创建一个rel目录:

1 mkdir rel
2 cd rel
然后创建节点:

复制代码
1 ../rebarcreate−nodenodeid=exemplar2 ls -lR
3 .:
4 total 8
5 drwxr-xr-x 2 jiuling.ypf users 4096 Apr 1111:08files
6 -rw-r–r– 1 jiuling.ypf users 806 Apr 1111:08 reltool.config
7 ./files:
8 total 28
9 -rw-r–r– 1 jiuling.ypf 334 Apr 1111:08 app.config
10 -rwxr–r– 1 jiuling.ypf users 1120 Apr 1111:08 erl
11 -rwxr–r– 1 jiuling.ypf users 4370 Apr 1111:08 exemplar
12 -rwxr–r– 1 jiuling.ypf users 4819 Apr 1111:08 nodetool
13 -rw-r–r– 1 jiuling.ypf users 423 Apr 1111:08 vm.args
复制代码
同时,还需要在rebar.config中添加一行sub_dirs:

1 {sub_dirs, [“rel”]}.
最后,执行rebar:

1 $./rebar generate
2 ==> rel (generate)
此时,在rel子目录中就会生成examplar应用:

复制代码
$ ls -l rel/exemplar/
total 24
drwxr-xr-x 2 jiuling.ypf users 4096 Apr 1111:09 bin
drwxr-xr-x 8 jiuling.ypf users 4096 Apr 1111:09 erts-5.8
drwxr-xr-x 2 jiuling.ypf users 4096 Apr 1111:09 etc
drwxr-xr-x 18 jiuling.ypf users 4096 Apr 1111:09 lib
drwxr-xr-x 3 jiuling.ypf users 4096 Apr 1111:09 log
drwxr-xr-x 3 jiuling.ypf users 4096 Apr 1111:09 releases
复制代码
7. 扩展Rebar

在标准发布版本中,rebar能够支持大部分erlang开发者的需要。当你碰到需要扩展rebar的需求时,rebar提供一种简单的方法帮助加入新功能。

(1)Contexts

想要知道如何扩展rebar,一个关键的因素就是理解rebar的核心机制——Contexts。Contexts决定在项目目录结构中选择那些命令选项执行。

对于哪个目录能够执行哪个选项,contexts没有限制,通过配置资源文件rebar.app,例如想要在项目的任何一个目录都执行any_dir_modules,需要在rebar.app中添加:

复制代码
1 {application, rebar,
2 [{description,”Rebar: Erlang Build Tool”},
3 %% …
4 {env, [
5 %% …
6 %% any_dir processing modules
7 {any_dir_modules, [
8 %% …
9 rebar_exemplar
10 ]},
11 %% …
12 ]}
13 ]}.
复制代码
(2)Module context

Module context允许rebar的选项与项目中的文件夹和发布文件夹都关联。

你可以通过查看rebar.app了解这些,从中学习如何用modules配置参数来使用app_dir和rel_dir。

例子,EDoc command修改rebar.app:

复制代码
1 {application, rebar,
2 [{description,”Rebar: Erlang Build Tool”},
3 {vsn,”2”},
4 {modules, [ rebar,
5 %% …
6 rebar_edoc,
7 %% …
8 mustache ]},
9 {registered, []},
10 {applications, [kernel,
11 stdlib,
12 sasl]},
13 {env, [
14 %% …
15 %% Dir specific processing modules
16 {modules, [
17 {app_dir, [
18 %% …
19 rebar_edoc,
20 %% …
21 ]},
22 {rel_dir, [
23 rebar_reltool
24 ]}
25 ]}
26 ]}
27 ]}.
复制代码
(3)引入rebar_edoc模块

复制代码
1 -module(rebar_edoc).
2 -export([doc/2, clean/2]).
3 -include(“rebar.hrl”).
4
5 %% @doc Generate Erlang program documentation.
6 %% @spec doc(#config{}, string()) -> ok
7 -spec(doc(Config::#config{}, File::string()) -> ok).
8 doc(Config, File) ->
9 {ok, AppName, _AppData} = rebar_app_utils:load_app_file(File),
10 EDocOpts = rebar_config:get(Config, edoc_opts, []),
11 ok = edoc:application(AppName, “.”, EDocOpts),
12 ok.
13
14 %% @doc Remove the generated Erlang program documentation.
15 %% @spec clean(#config{}, string()) -> ok
16 -spec(clean(Config::#config{}, File::string()) -> ok).
17 clean(Config, _File) ->
18 EDocOpts = rebar_config:get(Config, edoc_opts, []),
19 DocDir = proplists:get_value(dir, EDocOpts, “doc”),
20 rebar_file_utils:rm_rf(DocDir).
复制代码

从零到一:手把手教你用海康VisionMaster完成第一个字符识别项目(附完整流程与避坑点) 本文详细介绍了如何使用海康VisionMaster完成首个字符识别项目,涵盖从环境搭建、图像预处理到系统集成的完整流程。特别分享了Blob分析配置、字符识别优化等实战技巧,帮助开发者避开常见陷阱,快速掌握VisionMaster的基本操作,提升工业自动化场景下的字符识别效率。 阅读详情

相关推荐

基于STM32的INA226电压电流检测仪

该功率检测装置以STM32F103C8T6微控制器为核心,集成功率检测、数据交互、状态显示和用户提示功能,通过模块化设计实现稳定运行。系统包括按键、LED指示灯、OLED屏幕、INA226电压电流检测、复位电路、晶振电路、蜂鸣器驱动、输入输出接口、调试接口和3.3V降压电路等模块。微控制器通过按键检测用户输入,启动功率检测,采集数据并通过OLED显示,异常情况触发蜂鸣器报警,LED状态指示同步反馈。3.3V降压电路为所有模块提供稳定电源,晶振电路确保时序精度。INA226芯片通过I2C接口与微控制器通信,实

a2784288164的博客 1908

Rebar:Erlang构建工具

Rebar是一款Erlang的构建工具,使用它可以方便的编译、测试erlang程序、内联驱动和打包Erlang发行版本。 Rebar是一个独立的erlang脚本,所以使用Rebar发布程序非常简单,甚至可以直接集成在项目文件夹中。默认的情况下,Rebar会按照Erlang/OTP来组织项目的结构,这样一来,构建时的配置工作量就会大大减少。Rebar同时提供了依赖库(包)管理机制,方便程序员重用已...

weixin_34218579的博客 308

MATLAB实战:5步搞定铣削稳定性叶瓣图(附完整代码解析)

本文提供了一份基于MATLAB的铣削稳定性叶瓣图实战指南。通过5个清晰步骤,从动力学原理出发,详细解析了利用半离散法构建稳定性判据、模块化代码设计、高效参数扫描及高级可视化的完整流程,并附有完整代码,帮助工程师快速预测和规避加工颤振,优化铣削工艺参数。

weixin_29197051的博客 193

rebar安装及创建项目

rebar作为erlang开发中编译,构建,发布,打包,动态升级的常用工具,下面我记录下rebar工具的安装及使用 从源码安装rebar  1. 建立文件 install_rebar.sh 2. 拷贝如下shell到 install_rebar.sh git clone git://github.com/rebar/rebar.git cd rebar ./bootstrap s...

weixin_30772105的博客 405

Halcon: 获取仿射矩形-rectangle2的四个顶点、四条边的中点

Halcon 工业应用实用教程中的一个例子: * CenterY : 仿射矩形中心y * CenterX: 仿射矩形中心x * Phi: 仿射矩形角度 * Len1: 仿射矩形宽的一半 * Len2: 仿射矩形高的一半 * CornerY: 仿射矩形端点y * CornerX: 仿射矩形端点x * LineCenterY: 仿射矩形边中点y * LineCenterx: 仿射矩形边中点x * 矩...

ruotianxia的博客 8572

mongoDB 数据莫名其妙的没了

问题 之前没有接触过mongoDB,然后接手一个项目使用的是MongoDB,我就跟着网上的教程搭建一个MongoDB的服务,并运行起来。 一开始没有啥问题,成功的把服务与MongoDB都启动以来,运行也没有问题。但是过了几天,我再次打开时发现,以前的数据神奇的消失了。我还在想,是有什么定时清除的么,还是什么原因导致崩了然后数据就被清理了。 查找原因 第一次遇到我没有在意,重启了一下MongoDB,...

技术熊的博客小窝 1万+

深入解析微软mscorpdb.dll:PDB文件创建与写入的完整指南 [特殊字符]

在Windows平台的软件开发中,**PDB文件**(程序数据库文件)扮演着至关重要的角色。作为微软编译器工具链的核心组件,**mscorpdb.dll**负责PDB文件的创建、写入和管理。本文将深入探讨这个神秘组件的内部机制,帮助你全面理解PDB文件的生成过程。无论你是Windows开发者、逆向工程爱好者,还是对编译器技术感兴趣的工程师,这篇文章都将为你揭开PDB文件创建的神秘面纱。 ## 什

gitblog_00017的博客 626

Claude Code × SolidWorks:批量填属性、格式转换、BOM 汇总自动化实战

摘要:本文介绍利用 Claude Code 生成 VBA 宏实现 SolidWorks 批量处理任务的自动化方案。包含5个实战案例:批量填写自定义属性(60分钟任务→10秒)、批量格式转换(80分钟→30秒)、多配置工程图自动生成(120分钟→2分钟)、滚珠丝杠选型计算(15分钟→10秒)和装配体递归BOM导出(40分钟→1分钟)。所有代码基于SolidWorks 2020+ API,提供完整VBA实现和操作指南,可显著提升设计效率。

m0_64424835的博客 609

Golang Fuego与主流Go框架对比:为什么它是生成OpenAPI文档的最佳选择

Golang Fuego是一个创新的Web框架,它能够从源代码自动生成OpenAPI 3规范文档,为Go开发者提供了一种更高效、更准确的API文档管理方式。在众多Go Web框架中,Fuego以其独特的OpenAPI文档生成能力脱颖而出,成为需要快速构建API并保持文档同步的开发团队的理想选择。 ## 🚀 框架架构对比:Fuego的独特设计 Golang Fuego采用了一种灵活的架构设计,

gitblog_00935的博客 533

优化相机姿态和三维点云的Bundle Adjustment算法及其编程实现

重投影误差是指将优化后的相机姿态和三维点云投影到图像平面上,与对应的图像特征点之间的距离。Bundle Adjustment(捆绑调整)是一种用于同时优化相机姿态和三维点云的算法,它可以提高三维重建和相机定位的精度。下面是一个简单的Python示例代码,演示了如何使用Bundle Adjustment算法优化相机姿态和三维点云的参数。通过以上步骤,Bundle Adjustment算法可以不断地优化相机姿态和三维点云的参数,从而提高重建和定位的精度。Bundle Adjustment算法的编程实现。

CyberXZ的博客 740

【图论】系列(一)之图论的构成

图论是研究图的数学分支,本章介绍了图论的基本构成和概念

qq_30066733的博客 748

Ubuntu下安装Erlang、rebar

Ubuntu下安装erlang、rebar 安装erlang 在官网下载需要版本的安装包。 我选择的是esl-erlang_22.0-1_ubuntu_bionic_amd64.deb。 注:从windows向linux子系统复制文件可以通过如下命令 cp /mnt/c/download/esl-erlang_22.0-1_ubuntu_bionic_amd64.deb /home/mfile 通过以下命令安装: dpkg -i esl-erlang_22.0-1_ubuntu_bionic_am

Dylan_2018的博客 1157

Python爬虫:爬取拼多多平台商品信息、销量、价格等数据

在本篇博客中,我们将深入探讨如何使用Python爬虫技术爬取拼多多平台的商品信息,包括商品的标题、销量、价格等详细数据。拼多多的商品页面通常是分页展示的,因此我们需要遍历多个页面,获取所有商品的信息。每个商品在拼多多平台上都有一个唯一的商品ID,我们可以通过该ID访问商品页面。通过以上的技术方案和代码示例,你已经掌握了如何使用Python爬虫获取拼多多平台上的商品信息、销量、价格等数据。等技术,解决拼多多平台的反爬虫机制,成功抓取我们所需的商品数据。,我们能够应对拼多多的反爬虫机制,稳定地获取到商品数据。

2201_76125261的博客 3655

rebar的使用

这篇文章不得不珍藏&转载:http://www.linezing.com/blog/?p=347Rebar是一款Erlang的构建工具,使用它可以方便的编译、测试erlang程序、内联驱动和打包Erlang发行版本。Rebar是一个独立的erlang脚本,所以使用Rebar发布程序非常简单,甚至可以直接集成在项目文件夹中。默认的情况下,Rebar会按照Erlang/OTP来组织项目的结构,这样一来

sunjiangangok的博客 2770

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

erlang 用rebar 工具构建项目

这个应该是第一教材:书写是对思维的缓存/好记性不如烂博客 Rebar:Erlang构建工具:详细命令解释 Erlang Rebar 创建工程总结 这里也有亮点 可以再练习一下 使用 rebar 创建 application(basho- lager 应用实例) -diao 怎么发布 转载于:https://www.cnblogs.com/ShankYan/p/4209580.ht...

113

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

rebar3创建erlang项目步骤

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34221775的博客 899

erlang rebar

转载自:http://www.linezing.com/blog/?p=347  http://www.erlangsir.com/2011/05/27/rebar%EF%BC%9Aerlang%E6%9E%84%E5%BB%BA%E5%B7%A5%E5%85%B7/   Rebar是一款Erlang的构建工具,使用它可以方便的编译、测试erlang程序、内联驱动和打包Erlang发行版本。...

xgene 215

Erlang Rebar 创建工程总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.youkuaiyun.com/alivetime/article/details/7727381转载地址,感谢博主 目录(?)[+] Erlang的application类似Java中的工程, 有两种类型: 类库和独立运行的application. 好比java中

u014659211的专栏 790

Centos安装rebar3

源码编译安装 1.安装git yum install git 2.获取源码 git clone https://github.com/erlang/rebar3.git 3.编译 cd rebar3 ./bootstrap ./rebar3 local install ===...

chixiaao8698的博客 1389

转载:rebar和erlang

使用rebar生成erlangrelease并进行热代码升级 http://blog.sina.com.cn/s/blog_6530ad590100wmkn.html 使用rebar工具开发erlang工程项目和发布erlang工程项目 http://blog.sina.com.cn/s/blog_6530ad590100wmkx.html 转载于:https://www.c...

weixin_33729196的博客 75
上一篇: Linux守护进程运行命令daemonize
下一篇: Linux常用指令
erlang_hell
博客等级 码龄14年 57粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值