Erlang 内存管理: 内存分配器简介

2016-05-05
阅读 1 分钟
6k
这里介绍的是 Erlang 自己实现的内存分配器, 并非操作系统的内存分配器, Erlang 需要调用操作系统的分配器获取一大块内存, 并用于 Erlang 系统内部的内存分配, 来满足比如创建进程, 原子, 二进制数据, 驱动等数据结构的内存需求.

Elixir Ecto: 事件流处理和回调

2016-05-01
阅读 3 分钟
3.9k
Ecto 提供了 before_insert, after_insert这样的回调函数来在数据库操作前后做一些事情, 我们经常把这种函数称为钩子. 我们这里有一个例子, 用户注册完成后需要向其邮箱发送一封激活邮件. 通常我们在控制器(UserController)中实现一个create函数用于创建用户, 例如:

Elixir Ecto: 自定义数据类型

2016-04-30
阅读 3 分钟
4k
需求: 系统中需要存储超过Postgres的int8(8字节, 64位)的整数, 那只有把它存储为字符串了. 原因:因为, 在我的Elixir项目中这个hash值用到了很多很多地方, 类型是整数, 并且用于二进制协议的解析和编码, 我想要的效果就是从数据库出来的数据到程序中就是我期望的类型, 而不是在程序中到处用:erlang.string_to_integer/1来...

Elixir Ecto: 模型的嵌入(Embed)

2016-04-30
阅读 5 分钟
4.2k
Postgres 9.4 及其以上版本可以存储类似 arrays, json, jsonb 这样的非结构化数据. Ecto 作为一个 Elixir 的数据封装器, 提供了这些非结构话的数据到 Elixir 原生数据类型的序列化和反序列化. 嵌入的记录具有所有常规模型所具有的东西, 比如结构化的字段, 生命周期回调, 变更集. 下面研究如何把结构嵌入到 Ecto 模型当中.

Elixir Ecto: 多对多关系

2016-04-29
阅读 5 分钟
3.8k
本文是参考下面的文章做的一个实际例子[链接][链接][链接][链接][链接] 代码库 [链接] 定义多对多关系 创建移植脚本 {代码...} 移植脚本的内容分别为: 20160429075137_create_table_users.exs {代码...} 20160429075138_create_table_chat_groups.exs {代码...} 20160429075146_create_table_chat_group_users.exs {代码...

Elixir Ecto: 使用 ExMachina 批量生成测试数据

2016-04-29
阅读 2 分钟
2.8k
{代码...} 如何使用 {代码...} 测试 {代码...}

Elixir: 使用Mixin实现OOP的继承效果

2016-04-27
阅读 2 分钟
3.1k
原理 使用use以宏的方式把代码注入到实例模块中, 作用类似其他语言中的抽象基类, 或Mixin 说明 先上一段代码, 可以把它认为是一个基类模块, 子类模块可以继承这个基类中已经实现了的方法(函数) 基类模块 {代码...} 子类模块, 注意在子类模块中我们并没有定义get/1函数, 但是我们仍能够使用 {代码...} 在IEx中测试 {代码....

Elixir Ecto: 入门上手

2016-04-27
阅读 5 分钟
6.6k
关于可组合的查询你可以通过 Ecto.Query.from/2 创建一个查询, 这个查询可以作为另一个查询的输入. 类似于 Elixir 的|> 操作符的功能, 可以通过管道合并多个查询条件. 例如: {代码...}

Rebar3: 入门上手

2016-04-24
阅读 2 分钟
13k
虽然现在主要使用Elixir, 但现在大部分的依赖都是Erlang开发的, 所以还是有必要学习一下Erlang环境下的主要构建工具rebar3, 版本3在2的基础上做了大量的变化. 下面简单介绍一下rebar3的上手入门过程.

Elixir Plug: 使用Plug开发Web应用程序

2016-04-23
阅读 3 分钟
5.7k
对于没有Erlang背景知识的同学, 有比较陡峭的学习曲线. 但是Elixir语言提供了一个库: Plug, 用它我们能够开发基于Erlang VM的Web应用.

工作流: Gitlab和Telegram集成

2016-04-22
阅读 5 分钟
5.5k
设置Web Hook的URL地址(例如http://192.168.8.1:8888/gitlab/project), 选择要发送的事件, 并保存

Elixir: 魔术符号

2016-04-21
阅读 3 分钟
4k
~s 字符串转义 {代码...} 有时候你自己手工转义可能会产生引号不配对的问题, 这个魔术符号帮组你避免一些转义上的错误. 大写的-S, 一般用于编写文档, 支持多行文本 {代码...} ~c 字符列表 {代码...} ~w 单词列表, 用于构造列表, 支持三种修饰符 a(atom), c(char), s(string) {代码...} 作为一种构造列表的语法糖, 它可以...

Elixir: 调试

2016-04-19
阅读 3 分钟
6.1k
当我们学习一门新的语言时, 要查看一个变量的值, 一般是通过该语言提供的标准输出函数把变量的值打印在终端上查看. Elixir 和其他语言相比有不同的地方, 除了提供了 IO.puts/2, 以及 IO.inspect/2 标准的控制台输出函数输出变量的值. 还提供了其他调试方法.

Elixir交互式Shell: 5. 配置IEx

2016-04-11
阅读 1 分钟
2.4k
Elixir交互式Shell: 1. 运行时系统标记Elixir交互式Shell: 2. 常用命令Elixir交互式Shell: 3. 创建本地和远程ShellElixir交互式Shell: 4. 处理文件和脚本Elixir交互式Shell: 5. 配置IEx 这是IEx系列五部分中的最后一部分, 在这一部分中, 我们将说明如何配置IEx. 显示配置文档 {代码...} 设置列表显示数目 {代码...} 设置...

Elixir交互式Shell: 4. 处理文件和脚本

2016-04-11
阅读 2 分钟
3.8k
import_file的作用是, 对导入的文件进行求值, 就像直接在shell中输入一样, 和复制一个文件的内容并粘贴到IEx Shell中的效果一模一样

Elixir交互式Shell: 3. 创建本地和远程Shell

2016-04-11
阅读 4 分钟
3.7k
Elixir交互式Shell: 1. 运行时系统标记Elixir交互式Shell: 2. 常用命令Elixir交互式Shell: 3. 创建本地和远程ShellElixir交互式Shell: 4. 处理文件和脚本Elixir交互式Shell: 5. 配置IEx 这是IEx系列五部分中的第三部分, 在这一部分中, 我们将说明如何创建本地和远程IEx Shell. 用户切换菜单(CTRL + G)可以让我们对IEx Sh...

Elixir交互式Shell: 2. 常用命令

2016-04-10
阅读 5 分钟
3.5k
Elixir交互式Shell: 1. 运行时系统标记Elixir交互式Shell: 2. 常用命令Elixir交互式Shell: 3. 创建本地和远程ShellElixir交互式Shell: 4. 处理文件和脚本Elixir交互式Shell: 5. 配置IEx 这是IEx系列五部分中的第二部分, 在这一部分中, 我们将说明如何使用IEx中的命令 补全 在IEx中数输入Elixir, 让后按Tab键, 显示不全的...

Elixir交互式Shell: 1. 运行时系统标记

2016-04-10
阅读 5 分钟
2.6k
Elixir交互式Shell: 1. 运行时系统标记Elixir交互式Shell: 2. 常用命令Elixir交互式Shell: 3. 创建本地和远程ShellElixir交互式Shell: 4. 处理文件和脚本Elixir交互式Shell: 5. 配置IEx 这是IEx系列五部分中的第一部分, 在这一部分中, 我们将说明如何设置Erlang系统的运行时开关标记 设置Erlang使用的调度器个数 {代码.....

Erlang版本管理工具: Kerl

2016-04-10
阅读 3 分钟
7.1k
首先给大家分享一个笑话, 这是程序员专用笑话, 祝各位开心! 英语说明很简单, 就是叫你如何画一个猫头鹰, 分为两个步骤: 第一步: 画一些圆 第二部: 画剩余的部分 安装 安装过程非常简单, 两行命令即可, 最好能把kerl添加到PATH环境变量中. 下载 {代码...} 修改执行权限 {代码...} 使用 显示所有的发布版本 {代码...} 构建...

(译)Études for Elixir Chapter 3: 原子,元组和模式匹配

2016-04-10
阅读 3 分钟
1.8k
Étude 3-1: 模式匹配 在area函数中使用原子和模式匹配来计算一个矩形, 三角形和椭圆形的面积. 如果你的参数为shape, a, b: 面积公式为: TYPE FORMULA DESCRIPTION :rectange a * b 矩形 :triangle a * b / 2.0 三角形 :ellipse :math.pi() * a * b 椭圆形 实现代码: {代码...} Étude 3-2: Guards 在函数匹配的情况下, 再...

(译)Études for Elixir Chapter 2: 函数和模块

2016-04-10
阅读 2 分钟
1.7k
编写包含一个函数的模块, 该函数以一个矩形的长度和宽度作为参数并返回面积. 模块名称名为Geom, 函数命名为area. 保存为文件geom.ex. 函数有两个参数.

Elixir 代码示例 1: 字符串

2016-04-10
阅读 1 分钟
3.9k
字符串连接 {代码...} 参考: Kernel.<>/2 字符串插值 {代码...} 原子转字符串 {代码...} 连接字符串列表 {代码...} 删除前后空白 {代码...} 替换 {代码...} 切分 {代码...} 解析为浮点数 {代码...} 解析为整数 {代码...} 反转 {代码...}

Elixir 代码示例 2: Map

2016-04-10
阅读 2 分钟
1.9k
转换为关键字列表 {代码...} 转换为结构 通过一个Map来构造一个Struct {代码...} 模式匹配 {代码...} 匹配不存在的key {代码...} Map 语法 {代码...} 计算一个Map的大小 {代码...} 参考: Kernel.map_size/1 更新一个Map的值 {代码...}

Elixir 代码示例 3: 列表

2016-04-10
阅读 1 分钟
2.2k
其中, Enum.filter的第二个参数为一个函数, 该函数返回true, 对应的元素被保留, 返回false对应的元素被从结果列表中过滤掉.

Elixir: Doctest, 在API文档中直接编写测试

2016-04-08
阅读 2 分钟
2.4k
快速上手 编写模块Doctest, 以及测试文档 {代码...} 编写测试代码, 放在文件tests/doctest_test.exs文件中 {代码...} 执行测试 {代码...} 接下来我们事先Doctest模块中的add/2函数并在此运行测试 {代码...} 再次测试, 我们看到测试通过了 {代码...} 注意要点 文档测试以4个空格缩进, 并紧接着一个iex> 如果测试代码有...

Riak: 在OSX上快速搭建Riak开发集群

2016-04-07
阅读 2 分钟
5.4k
首先从Github上克隆riak-dev-cluster工具, 该工具创建的只是一个测试集群, 主要用于在开发中进行测试, 不建议在产品环境中使用.

Erlang/Elixir: 外部通信之-NIF

2016-04-07
阅读 3 分钟
5.4k
系列:Erlang/Elixir: 外部通信之-NIFErlang/Elixir: 外部通信之-端口驱动Erlang/Elixir: 外部通信之-C节点 本文阐述了如何使用rebar3来构建一个简单的NIF(内建函数) 使用Makefile模板 让我们从创建一个新的名为test_nif的lib, 使用test_nif项目中的cmake模板开始 {代码...} 设置钩子 {代码...} Makefile 是由rebar3 new ...

Elixir版本管理工具: KIEX

2016-04-07
阅读 1 分钟
3.1k
curl -sSL https://raw.githubusercontent.com/taylor/kiex/master/install | bash -s

[Translate] Elixir: Erlang 和 Elixir的差异

2016-04-06
阅读 8 分钟
3.9k
原文: [链接] 水平有限, 翻译有误或不恰当的地方, 请在回复中指出. 函数调用 Elixir允许你调用函数的时候省略括号, Erlang不行. Erlang Elixir some_function(). some_function sum(A,B) sum a,b 从模块中调用一个函数, 使用不同的语法, 在Erlang, 你可以写: {代码...} 从List模块中调用last函数. 在Elixir中使用.符号代...

Elixir 开发小技巧 持续更新 (Updated at: 2016-04-18)

2016-04-01
阅读 5 分钟
6.9k
Map 的嵌套匹配 添加时间: 2016-04-30 {代码...} 对参数 company 进行匹配, 析构出其中的 manager 字段 对 manager 再次析构出其中的 name 字段 然后查询 Criminals 表进行对比 在单个表达式中一次匹配 {代码...} Elixir单元测试超时 添加时间: 2016-04-18 {代码...} 上面是一个超时的错误提示, 通过上面的描述, 我们可...