在配置hexo的过程中,希望的效果是首页的文章分页,然后 archives和tags的文章不分页。
开始以为是主题的代码实现bug,蒙头去改。后来才发现是配置问题,在hexo的issue里面也有这样的记录.
本人的hexo版本是 3.0 ,步骤如下:
1.安装 hexo-generator-archive: npm hexo-generator-archive --save
2.配置_config.yml,修改:

1
# Pagination
## Set per_page to 0 to disable pagination
per_page: 6
pagination_dir: page
archive_generator:
  yearly: true
  monthly: true
  per_page: 0
category_generator:
  per_page: 0
tag_generator:
  per_page: 0
Read More

MQTT 协议详解

预览

1
2
3
4
5
6
%%        7   6   5   4      3     2   1      0
byte1 message_type dupflag QoSLV RETAIN
byte2 Remaining Length
byte3 Variable header
byten ....
MSG
Read More

Efficiency guide 译文

timer模块

通过erlang:send_after/3erlang:start_timer/3 来启动一个定时器会比使用timer模块更加有效率。timer模块使用一个独立的进程来管理定时器,因此该进程很容易过载,如果很多进程频繁创建或取消定时器。

list_to_atom/1

Atoms 是不参与垃圾回收的。一旦一个原子被创建,它将不会被回收,Erlang虚拟机会因为atoms数量太多(默认1048576)而导致崩溃。
因此,转换输入的字符参数变成atom会导致系统变得不安全。如果只允许已经定义的原子可以允许被转换,可以使用 list_to_existing_atom/1去避免服务器崩溃。(这就使得我们需要提前创建所有允许被创建的atiom

Read More

ERLANG NIF 编写

很多时候一下计算量大,效率要求很高的地方也许使用c会好于erlang。

Erlang层代码

  • 通过 -on_load模块属性,实现erlang vm 加载模块时同时加载c的共享库文件。
  • nif的函数erlang入口为 func(args) -> erlang:nif_error({error,not_loaded}).

C层代码

  • 包含 erl_nif.h , #include<erl_nif.h>
Read More

Riak安装与MapReduce测试

1.安装环境:

  1. Ubuntu 14.04
  2. riak-2.1.1 源码编译
  3. erlang版本R16B03-1(注意 riak目前还不支持R17以上的erlang 版本)

2.依赖安装

  1. ssl :sudo apt-get install libssl0.9.8
  2. pam library: sudo apt-get install libpam0g-dev

3.下载并编译riak

Read More

ejabberd_receiver 分析

ejabberd_receiver是ejabberd 中 网关层的数据receive模块,客户端发送的数据通过ejabberd_receiver 接收并通过xml port解析后发送给 ejabberd_c2s的实例处理,至于它的加密、压缩、解压之类的就不说了。

主要说一下这个shaper(字母翻译:脉冲整形器,个人理解,流量控制)机制,什么意思呢?

原来 ejabberd_receiver会根据本次socket接收到的包的大小,判断是否需要缓冲一会再接收下一个socket包,这里用到了socket参数{active, once}

Read More