D.H.Q的烂笔头

Just code for fun~

Archive for 12, 2012

zotonic 在 Ubuntu 下的安装配置

zotonic 是一个用erlang写的、高效、实时的WEB框架,也可以当作一个内容管理系统(CMS)用,据说比一般的PHP CMS要快10倍以上,刚好工作上也用到 erlang,于是就有了把 wordpress 转为 zotonic 的念头。

继续阅读 »

Mac 系统下类似于 apt-get 的软件包管理器 -- Homebrew

对于一个习惯了在 Ubuntu 的终端上通过 apt-get 来安装工具软件的我来说,也希望在Mac上找到类似的工具,能很方便的一条命令就能安装所需的软件,而不用手工的去查找下载编译,或者是折腾安装所需的一些依赖关系。很惊喜发现,Mac上也有类似的工具软件包管理器 -- Homebrew

Homebrew 并不是什么软件包都能装,它只是能装一些系统缺省的软件包,例如:wget、nginx、mysql等等。不过随着 homebrew0.9版 新加了 tap 操作,支持安装第三方数据源的软件包,以后支持安装的软件包会更多、更丰富。

Homebrew安装

安装 Homebrew 很简单,只需在终端上输入一行 Ruby 脚本(所以要先搭建 Ruby 运行环境,Mac 下已经预装了 Ruby)就行:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

继续阅读 »

Erlang 的 dict 模块函数方法介绍

Erlang 的 dict 模块比较完整的实现了一个键值(Key - Value)字典。通过这个模块,你可以插入,附加(append),删除,更新字典里的键值对,它也提供了获取字典大小和检查键是否存在等调用接口,而且还包含一些对字典键值进行操作的函数方法,例如:递归(fold)、过滤(filter)、遍历映射(map)字典等特殊操作函数。

new() -> dictionary()

初始构造一个新的字典(其实是返回一个内部定义的dict记录record)

dict:new().
%% 下面是返回的dict记录的初始值,具体请看\lib\stdlib-1.18.2\src\dict.erl
-record(dict, {
	size=0		      	:: non_neg_integer(),   	% Number of elements
	n=?seg_size	      	:: non_neg_integer(),   	% Number of active slots
	maxn=?seg_size	   	:: non_neg_integer(),		% Maximum slots
	bso=?seg_size div 2	:: non_neg_integer(),   	% Buddy slot offset
	exp_size=?exp_size 	:: non_neg_integer(),   	% Size to expand at
	con_size=?con_size 	:: non_neg_integer(),   	% Size to contract at
	empty		      	:: tuple(),					% Empty segment
	segs		      	:: tuple()	      			% Segments
}).

store(Key, Value, Dict1) -> Dict2

以键值(Key - Value)对的形式存储在字典里。如果字典里已经存在 Key 的键,则把跟 Key 相关的值替换为 Value

D = dict:new(),
D1 = dict:store(k1, v1, D).
%% D2 = dict:store(k2, v2, D1).
%% D3 = dict:store(k2, v3, D2).

from_list(List) -> Dict

把一个 Key-Value 形式的列表转换为一个字典

dict:from_list([{k1, v1}, {k2, v2}, {k3, v3}]).
%% 相当于
D = dict:new(),
D1 = dict:store(k1, v1, D),
D2 = dict:store(k2, v2, D1),
D3 = dict:store(k3, v3, D2).

继续阅读 »

linux命令学习 -- sed

sed(streams editor) 是一个文件处理的编辑器,具有对文件数据进行新增、替换、删除、打印、取代特定行数据等功能。它本身是一个管道命令,操作文件数据时,先把文件数据的每一行数据放在一个临时的缓冲区,然后再执行指定的操作,最后处理完再把数据显示输出。如果没有指定直接修改的选项,sed是不会改变文件的数据。

sed 的用法格式:

sed [选项] '操作命令' 被操作的文件

例如有一个test.txt的文件,内容如下:

a
b
c
d
e
$
abcdefghijklmnopqrstuvwxyz

想删除文件里的第2和第3行,可以这样写sed:

sed -e '2,3d' ./test.txt

可以看到,文件text.txt原来第2和第3行的数据"b"、"c"是不会显示出来。上面“-e”是选项,“'2,3d'”是操作命令(命令要以两个引号''括住),“./test.txt”是要被操作的文件。

常用的sed选项:

  • -n : (或--quiet或--silent)安静(silent)模式,只显示操作命令处理后的数据,例如要显示第2和第3行数据,可以对比查看“sed -n '2,3p' ./test.txt”跟“sed '2,3p' ./test.txt”的输出区别
  • -e : 后跟操作命令(script),表示以指定的操作命令来处理输入的文件数据,例如上面的:sed -e '2,3d' ./test.txt
  • -f : 把sed的操作命令写在一个文件里, 例如:sed [选项] -f scriptfile filename,-f scriptfile则可以执行scriptfile内的sed操作命令
  • -r : sed的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
  • -i : 直接修改读取的文件数据,而不是在屏幕上输出
  • -h : (或--help)显示帮助
  • -V : (或--version)显示版本信息

更多的sed选项信息可以"sed -h"输出查看。

继续阅读 »

Ubuntu 12.04 LTS下memcache的安装使用

Memcache 是一个免费、开源、高性能的分布式内存对象缓存系统。它把WEB应用程序所需的数据以Key-Value的形式存储在内存中,提高了WEB应用程序数据的读取速度,减轻了数据库的负载,从而加速动态WEB应用程序的响应速度

继续阅读 »
返回顶部