D.H.Q的烂笔头

Just code for fun~

Archive for 3, 2013

Linux/Unix 的目录文件权限

在 Linux/Unix 下,如果想知道目录文件的权限分配,可以用 ls 命令查看:

ls -l

一般情况都会输出类似以下的结果(假设当前目录有以下文件或文件夹):

-rw-r--r--    1 dengjoe  staff    608  1  9 20:02 Emakefile
-rw-r--r--    1 dengjoe  staff   1473  1  9 20:02 GNUmakefile
-rw-r--r--    1 dengjoe  staff     51  1  9 20:02 Makefile
-rw-r--r--    1 dengjoe  staff   1393  1  9 20:02 README.md
drwxr-xr-x    3 dengjoe  staff    102  1  9 20:02 bin
drwxr-xr-x   13 dengjoe  staff    442  1  9 20:02 deps
drwxr-xr-x  561 dengjoe  staff  19074  3 31 10:06 ebin
drwxr-xr-x   10 dengjoe  staff    340  1  9 20:02 include
drwxr-xr-x   47 dengjoe  staff   1598  1  9 20:02 modules
drwxr-xr-x   16 dengjoe  staff    544  1 15 15:35 priv
drwxr-xr-x   19 dengjoe  staff    646  1  9 20:02 src
-rwxr-xr-x    1 dengjoe  staff    287  1  9 20:02 start.sh

拿 start.sh 来说,它的文件信息是:

-rwxr-xr-x    1 dengjoe  staff    287  1  9 20:02 start.sh

对应的每一列指的是:

-rwxr-xr-x  :   权限 
1           :   链接数(文件就是1,文件夹的话就是 ls -a 的列出的条数)
dengjoe     :   该文件的拥有者
staff       :   该拥有者所在的用户群组
287         :   文件大小
1  9 20:02  :   最后修改时间
start.sh    :   文件名

继续阅读 »

Debian / CentOS 系统下的 IPSEC + L2TP VPN 一键安装部署

最近的免费的 VPN(Virtual Private Network) 很不给力,之前在网上看到的由筑波大学免费提供的 VPN -- VPN Gate,开始用着还好,不过用了一段时间后不知为什么,很难连接上去,况且用得也不爽,速度慢死!还好自己在 Linode 上有一个 VPS(Virtual Private Server),免费的难用,那就自架一个呗,自力更生,丰衣足食。

对于 VPN 类型的选择,之前试装过 PPTP(点对点隧道协议,Point to Point Tunneling Protocol,默认使用 1723 端口,连接协议是 TCP)的 VPN,不过由于 Mac 下 MTU(最大传输单元,Maximum Transmission Unit) 的配置问题,在 mac 下 PPTP 的 VPN 一直没链接成功,所以 VPN 类型选用的是  L2TP(第二层隧道协议,Layer Two Tunneling Protocol,默认使用 1701 端口,连接协议是 UDP)。因为 L2TP 没有数据加密功能,因此需要安装 IPsec(Internet Protocol Security) 来加密 L2TP 的数据包。

其实以前也安装配置过 L2TP 的 VPN,不过上次被 GFW 封了 IP,Linode 换了新 IP 之后,之前配置的 VPN 就用不了,需要更换 VPN 配置里的 IP 参数值才能再次使用。每次都手动配置也很麻烦,所以搞了个懒人安装配置的脚本,省心,安逸,也方便以后安装配置,或者是像我这种被封 IP 后执行下脚本又能正常使用。嗯,能自动完成的东西就没必要手动折腾了。

详细的安装过程看下面注释,这里就不赘述了。

Debian 系统安装脚本(在 Linode 上的 Debian 6 和  Ubutun12.04、Ubuntu12.10 正常安装使用):

继续阅读 »

zotonic 下的 wordpress 版 more 标签实现

对于文章摘要,zotonic 在后台写作页面那里专门有一个栏,给你填写文章的大概内容摘要,当然,摘要显示的格式也是纯文本来了。写完了文章内容还要去写文章的摘要,挺麻烦的。对于一个之前体验过 wordpress 的用户来说,是很怀念 wordpress 下的 more 标签。

什么是 more 标签

其实 more 标签只是一个内容是 "<!--more-->" 的 html 注释,因此这个 more 标签的内容是不会在文章正文中显示出来的,它允许你在文章正文中选择一个断点,插入 more 标签内容 -- "<!--more-->",这个断点的以上的文章内容将作为文章的摘要显示在首页上。

wordpress 下 more 标签的实现

也不难实现,就是以 more 标签为标记,对文章正文内容做一个截取了。wordpress 就是用 php 的正则匹配方法 -- preg_match 来实现的:

preg_match('/<!--more(.*?)?-->/', $content, $matches)

'/<!--more(.*?)?-->/' 是匹配 more 标签的正则表达式,$content 是文章的内容,$matches 就是匹配成功后返回的结果。

zotonic 下的实现

zotonic 下可以用 re:split 方法对文章正文进行正则截取:

[Summary | _] = re:split(Content, "<!--more(.*?)?-->", [{return, list}])

Content 是文章的正文,Summary 则是匹配后返回的摘要。

继续阅读 »

CentOS(Fedora)下源代码编译安装 erlang 环境的 shell 脚本

填上 erlang 源代码下载地址(erl_url)和安装路径(prefix),然后执行这个 shell 脚本就行。

#!/bin/sh



erl_url="http://www.erlang.org/download/otp_src_R16B.tar.gz"

prefix="/usr/local/erlang" 


yum update -y
yum upgrade -y

#yum groupinstall -y "Development Tools" "Perl Support"
yum groupinstall -y "Development Tools"

yum install -y kernel-devel m4 fop ncurses-devel openssl-devel tk unixODBC unixODBC-devel

if [ ! -s "./erlang_otp.tar.gz" ]; then
    wget -c -O erlang_otp.tar.gz $erl_url
fi

tar zxvf erlang_otp.tar.gz
cd ./otp_src*/

./configure --prefix=$prefix --without-javac \
    --enable-kernel-poll \
    --enable-threads \
    --enable-dynamic-ssl-lib \
    --enable-shared-zlib \
    --enable-smp-support \
    --enable-hipe 

make && make install

#if [ ! -s "~/.bashrc" ]; then
#    touch ~/.bashrc
#fi
#echo 'export PATH="/usr/local/erlang/bin:$PATH"' >> ~/.bashrc
#source ~/.bashrc
ln -sfv $prefix/bin/* /usr/local/bin/

yum clean all

erl -noshell -eval "erlang:display('Erlang Success Install')" -s init stop

上面脚本在 CentOS 6.4 和 Fedora 17 下正常运行安装。

继续阅读 »

Node.js + NPM + express 学习笔记

node.js 是一个基于 Google Chrome 浏览器的 V8 JavaScript 引擎,用来构建快速、可扩展的网络应用程序平台。由于它使用事件驱动,非阻塞式的I/O的编程模型,所以 node.js 一种轻量,高效的编程语言,且适合在跨平台分布式的设备上运行数据密集型实时的应用程序

继续阅读 »
返回顶部