2013年6月

base64编码

By firefoxbug

shell base64编码


[root@firefoxbug] str="hello world"

[root@firefoxbug] echo -n "$str" | base64

aGVsbG8gd29ybGQ=

[root@firefoxbug] echo "$str" | base64 注意要加 -n ,不然会有换行,编码就有问题了。

aGVsbG8gd29ybGQK

shell base64解码


-d :decode

[root@firefoxbug]  echo -n "$str" | base64 | base64 -d

hello world

python base64编码


[code]
#!/usr/bin/python
#-*-coding:utf-8-*-

import base64
sour_str = "hello world"
print base64.encodestring(sour_str)
[/code]

python base64解码


[code]
#!/usr/bin/python
#-*-coding:utf-8-*-

import base64
sour_str = "hello world"
decode_str = base64.encodestring(sour_str)
print base64.decodestring(decode_str)
[/code]

Nginx+Lua搭建

Nginx作为后起之秀,Lua又号称是最快的脚本,大连回来之后想去看看Nginx+Lua,大概搭建了,但是不怎么会用。下面是搭建的过程,我采用了Openresty,这样方便点。

yum install openssl-devel readline-devel pcre-devel

git clone http://luajit.org/git/luajit-2.0.git
cd luajit-2.0/
make && make install
export LUAJIT_LIB=/usr/local/lib   
export LUAJIT_INC=/usr/local/include/luajit-2.0  

wget http://openresty.org/download/ngx_openresty-1.2.7.8.tar.gz
tar -zxvf ngx_openresty-1.2.7.8.tar.gz 
cd ngx_openresty-1.2.7.8
./configure --with-luajit
gmake && gmake install

PATH=/usr/local/openresty/nginx/sbin:$PATH
export PATH

- 阅读剩余部分 -

shell字符串操作

By firefoxbug
string="abcABC123ABCabc"
字符串长度:

echo ${#string}			#15
echo `expr length $string`	#15

索引


用法:expr index $string $substring

expr index $string "ABC"	#4

提取子串


用法:${string:position}

echo ${string:3}		#ABC123ABCabc

提取指定长度子串
用法:${string:position:length}

echo ${string:3:3}		#ABC

从末尾提取子串
用法:
${string: -length}注意有空格
${string:(-length)}

echo ${string:(-3)}		#abc

子串剔除

从左边开始截吊第一个匹配的$substring
用法:${string#*substring}

echo ${string#*abc}		#ABC123ABCabc
substr="abc";echo ${string#*$substr}	##ABC123ABCabc

从左边开始截吊最后一个匹配的$substring
[php]
echo ${string##*abc} #
[/php]

从右边开始截吊第一个匹配的$substring
用法:${string%substring*}

echo ${string%abc*}		#abcABC123ABC

从右边开始截吊最后一个匹配的$substring

echo ${string%%abc*}		#

子串替换


用$replacement来替换第一个匹配的$substring
用法:${string/substring/replacement}

echo ${string/ABC/XYZ}		#abcXYZ123ABCabc

用$replacement来替换全部匹配的$substring
用法:${string//substring/replacement}

echo ${string//ABC/XYZ}		#abcXYZ123XYZabc

如果$substring匹配$string的开头部分,那么就用$replacement来替换
用法:${string/#substring/replacement}

echo ${string/#abc/xyz}		#xyzABC123ABCabc

如果$substring匹配$string的结尾部分,那么就用$replacement来替换
用法:${string/%substring/replacement}

echo ${string/%abc/xyz}		#abcABC123ABCxyz

fedora install xmind

[php]
wget http://www.xmind.net/xmind/downloads/xmind-linux-3.3.1.201212250029_i386.deb
ar -x xmind-linux-3.3.1.201212250029_i386.deb
tar xvf data.tar.gz
cp -r usr/local/xmind/ /opt/
cp usr/share/mime/packages/xmind.xml /usr/share/mime/packages/
cp usr/share/applications/xmind.desktop /usr/share/applications/
tar -zxvf control.tar.gz
chmod 755 postinst
./postinst
sed -i 's:/usr/local:/opt:g' /usr/share/applications/xmind.desktop
[/php]

Shell 操作fifo

看下面的命令

[root@firefoxbug firefoxbug]# mkfifo /tmp/test.fifo
[root@firefoxbug firefoxbug]# echo "hello" > /tmp/test.fifo

注意:这时候第二条命令就卡住了,阻塞了,原因就是没有读端,只有读端做好读的准备,写端才能写入

(这里默认都是阻塞管道)

[root@firefoxbug firefoxbug]# read a < /tmp/test.fifo

这时候再 echo 就可以成功写入了,读端也可以成功读取。

- 阅读剩余部分 -

Nginx 变量设置

Nginx 设置变量

set $variable "value"; set指令对于域有要求,必须在 server 域内,要想设置全局变量可以用 map 实现。

map "value" $variable{
default "value";
}

这样就可以引用 $variable 变量了。

Nginx 日志格式可以自己定义,你想加个什么字符串之类的,比如在  access 日志前面加个 access 字符

串标记:

log_format access 'access $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';

那么产生的日志前面就会加了“access”字符串,当然也可以加Nginx自定义的变量,比如 $host。

linux date 命令

做个笔记

%Y  YYYY格式的年份(Year)

%m  mm格式的月份(),01-12

%d   dd格式的日期(day of month),01-31

%H   HH格式的小时数(),00-23

%M  MM格式的分钟数(),00-59

%S   SS格式的秒数(),00-59

%F   YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d

%T   HH-MM-SS格式的时间(Time),同%H:%M:%S

%s   自1970年以来的秒数。C函数time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000

%w   星期几,0-6,0表示星期天

%u   星期几,1-7,7表示星期天

%b 月份简写

%B 月份全拼

- 阅读剩余部分 -