6 Erlang 库
6.1 OTP 库中有什么?
完整的库描述包含在开源分发版中,也 在线。 亮点是
O&M 支持
SASL、EVA、INETS 和 SNMP 提供与运营和维护相关的功能:版本处理、警报和事件处理、通过 Web 浏览器和 SNMP 进行管理。
CORBA
ORBER、CosEvent、CosTransactions 和 IC 包含对所有 CORBA 相关内容的支持。
数据库
Mnesia 和 Mnemosyne 提供了一个实时分布式数据库,它可以同时存在于 RAM 中和磁盘上。 还有一个标准的 ODBC 客户端驱动程序。
ASN.1
有一个 ASN.1 编译器,它可以生成 Erlang 代码。
标准库
丰富的模块集合提供了从字符串、列表和正则表达式操作到随机数生成和日历查找的所有内容。
结构组件
gen_server、gen_fsm 和监督树提供实现客户端/服务器子系统、状态机和受监督的容错系统的标准方法。
GUI 和图形
wx、gs 和 webtool 提供构建 GUI 的方法。
除此之外,还有 HTTP、SSH 和 FTP 服务器。
6.2 是否有数据结构的集合,例如平衡树?
链表是 Erlang 的基本组成部分,元组也是如此。 其他标准数据结构是
模块 | 描述 |
sets | 集合,即一组唯一元素。 |
gb_sets | 集合,但基于通用平衡数据结构 |
gb_tree | 通用平衡树 |
dict | 映射,也称为关联数组 |
queue | 双端队列 |
ets | 哈希表和有序集(树),存储在进程外部 |
dets | 磁盘上的哈希表 |
(注意:使用频率较低的模块 ordset 和 orddict 仅仅是有序列表,因此对于常见的操作(如插入)具有 O(n)。)
6.3 是否有 Erlang 的串行端口驱动程序?
Johan Bevemyr 写了一个适用于 unix 机器。 该代码已经移动了几次,目前似乎在 github 上。
在邮件列表中已经讨论过编写一个更通用的驱动程序,该驱动程序也适用于 Windows 机器。 这方面并没有什么进展(缺乏兴趣?)。
6.4 是否有用于构建 GUI 的工具包?
有几个。
wx 应用程序允许您使用 wxWidgets(一个跨平台工具包)制作 GUI。 wx 是 OTP 分发版的一部分。
对于喜欢 glade(GTK 接口构建器)的用户,有一个 绑定 到 GTK,它与 glade 紧密耦合。
相关工作包括一个流行的 OpenGL 建模器。
6.5 我已经编写了一个应用程序/库。如何打包它以便其他人可以使用它?
这取决于。
对于旨在与其他开源项目一起使用的开源项目,事实上的分发方式是使用 github。 然后,构建和安装依赖项应该理想情况下只需输入“make”。
最流行的做法是使用 rebar。
另一种选择是 'erlang.mk',它反过来可以使用 relx。
6.6 我已经编写了一个库来处理 XYZ。如何将其添加到标准 Erlang 分发版中?
这比大多数人想象的要困难得多。 Kent Boortz 在 邮件列表中 描述了许多障碍。
还有其他传播代码的方式,包括从自己的网站分发代码或在代码托管网站上启动项目。 github 在 Erlang 开发人员中非常受欢迎。