格式化输出io:format的奇技淫巧

格式化输出io:format是我接触Erlang使用的第一个库函数(io:format("Hello World")),随着学习的深入,它也是我debug优先选择最简单直接的工具。
不过它除了简单的输出外,还有很多进阶用法。甚至通过它,你就可以在命令行画出精艳的图表。比如:我在Visualize Erlang/Elixir Nodes On The Command Line observer_cli中绘制的与htop类似图表。
observer_cli
同时这个API的选项特别多,却又非常好用,你完全可以不必了解这些选项(默认值)完成一些简单的需求,也可以使用选项来定制复杂的需求,设计者在扩展性强和易用性间的平衡做得非常到位,这也给我们自己设计API提供了一种参考。

阅读全文

Erlang/OTP安装指南

介绍Erlang/OTP两种安装方式及使用又拍云镜像解决国内下载源码超级慢问题。

阅读全文

ContorlPanel自动切换网络设置

如果你需要每天携带着笔记本往返于家与公司之间,而其中某些的网络参数都需要手动设置,虽然手动设置IP和DNS地址,切换不同的科学上网工具并不困难,但是每天频繁重复这些无聊的操作真的让人很烦燥。在Windows下可以使用NetSetMan,实现一键切换预先设置好的网络配置。但是如果能通过监控电脑的某些状态实现自动切换,就更加锦上添花,所以在OSX,我就找到了ContorlPanel 利器来自动切换网络配置,同时切换不同的科学上网工具。
ContorlPanel在状态栏(鱼儿icon)
我的笔记本常用的网络分成3类:

网络 蓝灯 影梭 VPN 需求
家里WiFi × × YouTube
公司WiFi × × Google
公司有线 × × 公司内部

阅读全文

Iterm2整合Tmux利器

Iterm2的使用者在使用过程中不断的切换工作内容,不可避免的会保持打开众多的标签或窗口,就像chrome不知不觉就是一大堆的标签一样。我们可以使用神器tumx来把工作环境分类,比如分成:github, work, blog。 好处是不同环境间布局不会相互影响且原环境切换到后台后,再切换回来,还是原状态。
tmux是把多个虚拟窗口看成一个物理窗口(terminal multiplexer),通过tmux的命令来操作这些窗口集合,方便切换且不会打乱你原来的工作环境,有点类似于Screen - GNU两者强大之处在于能把整个窗口都切换到后台运行,需要的时候再切换回来, 但是tmux的可操控性更好。
tmux

阅读全文

Http Client Adapter-Maxwell介绍

maxwell 让你写http请求更加简单。

阅读全文

Mnesia Cluster Table 在线增字段

Erlang 集群中Mnesia Table 如何在不影响正常业务的情况下增加/减少字段?

阅读全文

辅助处理Deeply Nested Data函数

put_in和get_in是elixir在很早(0.14)就引入的特性,最开始时叫Kernel.pop_in/2 changelog, 专门用于方便处理deeply nested data structures。

阅读全文

使用behaviour来规范模块对外接口

Erlang/Elixir的Behaviour类似于其它语言中的接口(interfaces),本质就是在指定behaviours的模块中强制要求导出一些指定的函数,否则编译时会warning。

阅读全文

NestedModule的动态函数调用方式

有时我们需要动态生成一些模块名,然后调用它里面的函数。但是我们常常碰到的却是明明有那个模块,结果还是raise模块未定义。。。

阅读全文

on_definition编译期规范函数定义

@on_definition时会调用on_def/6所以我们可以在编译期间对每一个函数自定义你所需要的任何潜规则

阅读全文

Elixir decode&encode CSV 例子

CSV有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

阅读全文

iex中查看指定数据详细信息ihelper

Elixir在1.2后增加了一个新的特性i helper. 在iex shell中使用i可以查看任意数据的数据类型和详细描述

阅读全文

通过系统环境变量灵活管理Config

在elixir的config中我们有时会使用的到一些不想暴露出来的配置项,常用的作法是如Phoenix

阅读全文

mix archives build/install完整例子

日记记录篇章中中使用 mix escript.build 生成一个lifelog 的escript启动脚本。
今天我们尝试一下另一种方式:生成Archives。

阅读全文

节点启动后自动连接其它配置节点

问题: 如何指定一个节点在启动后自动连接到别的节点上?

阅读全文

使用tty终端做一个简单的日记记录

善用tty布局。

阅读全文