eliir

Eliir Ranch: 监听器 (Listener)

监听的定义: 服务器等待来自任意远端的连接请求.这张图的信息量很大, 可以仔细研究. 图中顶部黄色的 LISTEN 方块就是监听器的所处的位置. 监听器一个监听器是一组进程, 它的用途是在一个指定的端口上监听新的TCP连接. 它管理着一个接收器进程池, 池中的每个接收器一直持续不断的接受连接. 当一个新的连接到达时, 它启动一个新的进程来执行协议处理代码, 所有的套接字编程

Eliir Ranch: 传输协议抽象

传输传输(Transports) 定义了和套接字交互的接口Ranch 的传输层抽象了两个协议处理模块出来, 一个是用于普通的TCP传输层套接字 ranch_tcp, 另一个是SSL加密传输层套接字处理模块 ranch_ssl传输可用于连接(connecting), 监听(listenig), 以及接受(accepting)连接, 也可以接收(receiving)和发送(se

Eliir Ranch: Embedded 模式

嵌入模式允许你把 Ranch 监听器直接插入到你的监控树中. 如果整个应用程序其他部分挂掉了, 可以通过关闭监听器的方法, 来提供更好的容错控制.嵌入(Embedding)要嵌入 Ranch 到你自己的应用程序中, 只需要简单地把子进程规范添加到监控树中即可. 在应用程序的一个(一般在顶层Supervisor, 如果应用程序比较复杂, 也可能是其他层) Supervisor

Erlang/Eliir 社区摘要: 2016-05-16

https://github.com/basho/riak-client-tools/tree/master/devrelRiak 集群配置工具https://www.amberbit.com/blog/2016/5/10/creating-elixir-libraries-as-otp-applications创建作为OTP应用程序Elixir库https://www.a

Erlang/Eliir: 使用 Lee 和 Yecc 解析领域语言(DSL)

本文的目的是处理 Telegram 协议的定义语言TL本文需要对编译原理有一定的了解.Leex 是一个 Erlang 语言实现的词法分析器(Lexical Analyzer). 接收字符流输入, 产生符号流输出.Yecc 是一个 Erlang 语言实现的语法分析器(Syntactic Parser). 接收符号流输入, 产生AST.词法分析器 leex一个 leex 词法分

使用 Rust 语言开发 Erlang NIF

Rustler 项目还不是很成熟, 基本可用. 有兴趣的可以给作者提 Issue.Rustler 是一个在安全的用 Rust 编写 Erlang NIF 的库. 这里安全的含义是, 它不会导致 BEAM(Erlang 虚拟机)的崩溃. 该库提供了一个设施用于生成与BEAM交互的模板, 处理Erlang Term的编码和解码. Rustler 适用于 Erlang 和 Eli

Eliir Ecto: PostgreSQL大自增长主键的设置

要解决的问题数据库中存储的行数超过了 serial 类型所能容纳的数量, 因此需要采用 bigserial 类型的整数作为主键serial 的取值范围为: 1 到 2147483647bigserial 的取值范围为: 1 到 9223372036854775807完整的 Postgresql 字段的数据类型, 可以参考这里迁移脚本defmodule ElectricPro

Erlang/Eliir: 使用 Edeliver 进行持续部署

Edeliver 是一个基于 deliver 的构建和部署工具.它提供了一个 Bash 脚本来帮助你构建, 部署, 以及执行热代码升级Edeliver 部署关系图示本文我们来聊一聊关于 Erlang/Elixir 的部署问题. 最原始的 Erlang, 我们要使用一大堆工具, 比如 reltool, 后来有了rebar, 还后来 relx 也出来了, Elixir 生态链中

Edeliver 持续部署Checklist

本文是基于 Erlang/Elixir: 使用 Edeliver 进行持续部署 文章经过一周的试错, 总结出来的工作流.1. 假定当前版本为0.1.16, 需要升级到0.1.17, 需要在mix.exs文件中提升版本号diff --git a/mix.exs b/mix.exsindex 88a39dc..c338b63 100755--- a/mix.exs+++ b/m

Eliir Ecto: 解决UTC时间戳和本地时间8小时时差的问题

Ecto 默认使用的是UTC时间, 它要比中国区的本地时间晚 8 小时.Ecto 的源码 说明了这个问题. 经过查找资料, 我们在 Ecto 文档 中找到了 timestamps 宏的选项 :autogenerate, 它的格式为一个三元组, 分别是模块, 函数, 参数{Module, :function, []}Ecto 的 timestamps 的时间错是自动生成的,