关于沟通,一幅好图总是能胜过千言万语:
相关的一本书:《用图表说话》
在/usr/bin/目录创建一个trash文件:
#! /bin/sh
DATE=`date +%Y%m%d`
TRASH="$HOME/.trash"
# Make sure the dest directionry is exists.
if [ ! -d $TRASH ]; then
mkdir $TRASH
if [ ! -z $SUDO_USER ]; then
chown $SUDO_USER $TRASH
chgrp $SUDO_GID $TRASH
fi
fi
if [ ! -d $TRASH/$DATE ]; then
mkdir $TRASH/$DATE
if [ ! -z $SUDO_USER ]; then
chown $SUDO_USER $TRASH/$DATE
chgrp $SUDO_GID $TRASH/$DATE
fi
fi
while [ $# -gt 0 ]
do
if [ `expr substr $1 1 1` = "-" ]; then
if [ $1 = "--" ]; then
sift
break
fi
shift
else
break
fi
done
mv $* $TRASH/$DATE
将本机80端口的请求转发到8080端口:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 例如:libhello.so libhello.a
为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。
ln -s libhello.so.1.0 libhello.so.1 ln -s libhello.so.1 libhello.so
首先应该明确:*nix系统中,使用tar对文件打包时,一般不建议使用绝对路径。
通常是在两台环境相似的机器上进行同步复制的时候,才有需要使用绝对路径进行打包。使用绝对路径打包时如果不指定相应的参数,tar会产生一句警告信息:”tar: Removing leading `/’ from member names”,并且实际产生的压缩包会将绝对路径转化为相对路径。 Read the rest of this entry »
首先,先介绍一款CSS sprites工具:SpriteMe(http://spriteme.org/),这是由《High Performance Websites》的作者史蒂夫·桑德斯(Steve Souders),开发的一款CSS Sprites产生工具。
SpriteMe的安装十分之简单,只要把这个链接拖动到你的浏览器收藏夹就可以:SpriteMe – 当然你也可以马上点击一下试用一下。 Read the rest of this entry »
令人振奋的消息:一个月前被Facebook收购的FriendFeed,在昨天放出了他们的私家Web服务器:名为Tornado的Web服务器框架。Facebook的开源产品阵营再添一员大将,此前这家位于硅谷的全球最大社交网站相继开放了他们的跨语言RPC框架(Thrift)、FBML引擎(Facebook Open Platform)、PHP调试工具(XHProf)等,每一个都是重量级产品。
Tornado由Python编写,是一款轻量级的Web服务器,同时又是一个开发框架。采用非阻塞I/O模型(epoll),主要是为了应对高并发 访问量而被开发出来,尤其适用于comet应用。Python社区原本也有很多优秀的开源Web服务器和框架,但是FriendFeed出于对性能和一些 特性的需要,尤其是其业务上对实时性要求非常之高,主流的Web服务器和框架很难兼顾到这些业务特点,所以FriendFeed决定自己开发。
确 实,Tornado在性能上卓而不凡,有图为证:
Tornado有点像web.py 和 Google的 webapp,但是附加了很多工具,同时针对FriendFeed的业务特点,进行了一些优化从而带来非阻塞式Web服务器的优点,归纳起来Tornado有如下特性:
在Facebook的支持下,有理由相信Tornado会成为web.py、Django的有力竞争者。
昨天第一次参加招行信用卡的“99积分兑换”活动就顺利的抢了一套Lock&Lock。前后在网上搜了一下,看到很多网友在骂招行,质疑活动存在暗箱操作。
是不是真的存在暗箱操作我不得而知。不过我昨天从早上就开始做功课,发现这个活动是有技巧的,只是大多数非IT从业人员不大会借助工具,所以觉得别人能在1分钟之内填信用卡信息提交表单觉得是一件难以想象的事。实际上,只要你掌握了本文所讲的技巧,相信你也可以做到“秒杀”。
好了,来,开始吧: Read the rest of this entry »
在Linux文件系统中,一个用户对文件或目录所拥有的权限分为三种:”可读”、”可写”和”可执行”,分别用 1 、2 和 4 来表示,它们之间可以任意组合:有“可读”、“可写”权限就用 3 来表示(1 + 2 = 3);有”可读“、”可执行“权限就用5来表示(1 + 4 = 5),三种权限全部拥有就用 7 表示(1 + 2 + 4 = 7)。
实际上,这种运算是基于二进制的。 Read the rest of this entry »
Google Analytics的ID一般形如:UA-18xxxxx-1,UA-18xxxxx-4,我们可以将它分成两段来看:字段1:UA-18XXXXX是指帐户的ID;字段2:字段1后附加的1、4,刚分别是指该帐户名下的两个网站。不过我一直不知道这种ID怎么产生的。
最近查阅到Mysql手册才发现,原来Mysql原生就很好的支持了这种含自动增长字段的复合主键,所以字段2是存储引擎自动计算出来的。计算方式:MAX(auto_increment_column) + 1 WHERE prefix=given-prefix [1]。 Read the rest of this entry »