Skip to content


用mysqldumpslow分析mysql的slow query log(转)

mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行

long_query_time = 1
log-slow-queries = /var/youpath/slow.log
log-queries-not-using-indexes

long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,我生成的log就在mysql的data目录
log-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。

把上述参数打开,运行一段时间,就可以关掉了,省得影响生产环境。

接下来就是分析了,我这里的文件名字叫host-slow.log。
先mysqldumpslow –help以下,俺主要用的是
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string

-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的

mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。

用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。

Posted in Mysql, 技术.


WAP的用户行为分析——无聊经济

说WAP是无聊经济,一点也不为过。在使用WAP的原因分布中,“在移动状态下(如上下班途中等)使用”的比例超过了一半,选择“在无聊的时候,打发时间”的比例也超过1/3,而“在一些突发需要上网的时候只能使用WAP”的比例也超过1/4,因此可以发现WAP的移动性即不受地理条件的限制是其吸引用户最主要的方面。此外“包月资费便宜”和“对新技术比较好奇,尝试一下”的比例分别为18.5%和17.0%。

WAP是被迫使用,用户只有在特定情况下,主要是在没有电视和电脑上网等替代品的情况下才使用WAP。据调查,用户一般在以下情况使用WAP:在车上,上课时(无聊时),等车中,临睡时床上,出差途中。

很少有人主动要使用WAP。与游戏相比较,游戏有瘾,人们会去想主动玩游戏,很多人买电脑是为了玩游戏;而很少有人为了上WAP而买手机的。WAP就如同最早的黑白屏幕的286电脑一样,早期只有技术狂热性的和非用不可的人群才会使用。WAP复杂的输入操作,缓慢的速度和内容的单调性等都是限制其发展的因素。

对于数字音乐产业来说,研究WAP用户其实是研究未来音乐消费者的特征。目前是铃声业务业务,接下来是全曲下载业务。未来手机会代替MP3,就如同手机会替代寻呼机一样。这里面会有一部分人会是使用免费的音乐,但仍然有一部分人会付费下载音乐。这个时候,了解什么样的用户会在什么特定情况下会为手机音乐付费,是我们要早做准备的事情。

WAP用户的特征:

WAP用户分布很广,也会有高低用户之分,例如有大城市用户和中小城市的用户;有高端机型用户和低端机型用户;有白领用户和农民工用户。但是,WAP仍然有一个主要消费人群。一般来说,低端用户虽然收入很低,但是却为WAP业务(图铃等)付费的主要人群;高端用户(高端收入、高端机型、大型城市)虽然是WAP的浏览用户,但是他们很少会为WAP业务付费(例如付费图铃业务等)。

高端机型用户一般为白领,销售人员,还有部分大学生,这一类人群中技术发烧性用户比较多;WAP的低端机型的用户一般为务工人群,例如广东外来务工人群,他们住集体宿舍,没有电脑上网,没有电视。

WAP用户有一个共同特点是:群居;在公司和公车上,外地出差中使用WAP;其中学生和打工仔都是没有电脑和电视的宿舍中使用,一般会集中在晚上临睡前上下班的公车上(铃声下载类的操作一般不会在地铁里,因为信号不太好)使用业务。

WAP用户在以下七个方面有鲜明的特征,并且都和“无聊经济”有着关系

1、用户的地域分布

WAP主要分布在广东、北京、上海、江浙等发达省份和城市。广东最多,广东WAP 用户数约为970 万人,占到了全国WAP 用户的1/4,北京和上海的WAP用户数量分别为170 万人和130 万人。

WAP 用户的地域分布集中在我国东部经济相对比较发达的东部地区,这些地方工厂、公司、学校比较集中。但是WAP却不属于最高端人群的业务,而是这些地方的中低端人群消费的业务。以广东为例,广东WAP用户占1/4,但是WAP业务规模却占全国一半以上。这是因为广东外来务工人群居多,一般都是封闭式的工厂,工人住宿舍,WAP是这个人群特有的消遣方式,是一个专门为低收入人群服务的市场。

2、上网条件

之前说过,WAP是无聊经济,是在没有电视和电脑上网的情况下才被迫使用的。根据WAP用户的使用动机,用户通常都会在闲暇无聊的情况下浏览WAP门户网站,拥有无聊闲暇时间最大的是经常跑外的销售人员,以及公车上班一族,以及上课时无聊的学生一族。在上下班高峰,以及夜间临睡前WAP的使用比例最高。

WAP用户与互联网用户重合度也低,估计在30%以内。WAP用户不是你我这样人手一台电脑的人,很多人都是没有接触过电脑而直接成为WAP用户的。

3、性别

WAP用户中,男性占到了8成,女性仅为2成(目前有调查说女性WAP用户在增加的趋势),而传统互联网网民中男性的比例为58.3%,女性为41.7%,可以发现WAP用户男性用户的比例更高。这和WAP的主要群体的职业也有关系。例如男性对技术性更敏感,愿意探索新事物。而女性一般会选择其他消遣方式,例如与人聊天、电话以及看电视等方式。

4、年龄

WAP 用户中,年龄在18~24 岁的比例超出了一半,为51.6%,年龄在25~30 岁的比

例也超出了1/4,为27.8%,31~40 岁的比例为13.1%, 40 岁以上的比例仅有2.2%。值得

一提的是,“80 后”的用户占到所有用户的73.2%。与传统互联网网民相比,WAP用户的年龄更加年轻,也更加集中于18~30 岁年龄段。年轻人更易接受新鲜事物,对技术性产品学习和掌握也更快。

5、职业

WAP 用户中,学生和基础职业(保安、军人、工人)占大部分。其中学生的比例超过了2 成,企事业单位普通员工的比例约为1/4,企事业单位的管理人员的比例也达到了10.8%,专业技术人员的比例也达到了16.2%,农民工虽然在这里面的比例不是太大,但是农民工却是WAP付费业务消费的中坚力量。

WAP 用户中,文化程度为高中的比例最高,为35.8%,文化程度为大学本科和大专的比例则分别为27.1%和21.7%。

6、收入

WAP 用户的个人月收入在1000-2000 元的比例最高,达到了29.5%,2000-3000元的比例为16.2%,而无收入的比例达到21.1%是由于学生用户占有相当的比例。WAP用户中月

收入在3000元以下的比例达到了78.1%,月收入在3000元以上的比例仅为21.9%。

WAP中高收入的人群是白领阶层,属于技术发烧型的人群。他们无论是电脑还是手机,还是其他数码产品都比较精通。WAP中的中收入人群可能是销售人员,上网条件不太便利。

WAP用户中,每月话费消费在100元以内的占56%。这也证明WAP是为特定的低收入用户服务的业务,他们钱不多。但是有闲,并且很少有其他可替代的娱乐项目;而高收入用户一是时间比较繁忙,有钱无闲;二是有其他的可替代WAP的娱乐项目。

7、PC以及手机操作水平

很多用户都是没有接触过互联网而直接使用WAP的。WAP用户的PC操作水平分三部分人,一是技术型用户,玩家级别的;二是初级水平;三是不会上网的。除了少量技术型用户,大部分用户对PC的操作水平都不是太高。

对于手机操作水平,无论用户使用高端机型还是低端机型,无论是高收入用户还是低收入用户,只要不是属于技术性的用户,对手机操作水平都不是太高。

例如,年龄在30岁以上的领导阶层,尽管使用高端机型,尽管收入也很高,但是他们的PC和手机操作能力都不高;另外是低收入使用低端机型的务工人群,PC和手机操作能力都不高;只有中间的白领和学生,操作能力比较高,他们一般是属于技术行用户。

所以,WAP网站和WAP业务在考虑业务设计时,一定要处处想着WAP用户这些人群的特点。懒人推动技术进步,为了他们着想的人才会赢得先机。

附:其他一些数据(以下数据来自互联网,仅供参考)

1、WAP用户形象目前手机上网的形象目前被认为是时尚一组。即便是农民工兄弟的使用,其形象也是在农民工群体中相对时尚新潮一组。

目前使用群体特征:时尚、对新鲜事物感兴趣、容易接受新事物,对资讯需求大,对技术感兴趣的男性年轻用户居多。

和彩铃业务一样,WAP初期的用户是第一批追求新事物的年轻时尚人群。随着业务的成熟,逐渐会扩散到大众用户市场。

2、WAP内容单调。内容方面是导致使用者放弃手机上网的原因。

内容上的单调、匮乏致使目前使用者新鲜感逐渐消失,导致每次上网都是无特别目的,而内容或服务的介绍文字非常古板,千篇一律缺乏特点与个性。内容更新慢,主要从铃声图片感觉明显--1-2个月才有些变化。

用户对全曲下载的内容要求比彩铃要挑剔的多。使用频率更活跃,也更容易退订因为彩铃用户听不到自己的歌曲,所以很容易沉默。全曲用户需要天天有新东西,因为近半数的用户会天天浏览。

3、WAP 上网的使用特征分析

WAP 用户中新增用户的规模较大,一年内的新增用户占到所有用户的47.5%;6成的用户使用WAP的频率不低于每周一次,平均每次使用WAP的时间以10~30 分钟最多,重度用户占所有用户的40.4%;有54.3%的用户只上或者尽量选择免费的网站,31.6%的被访者表示无所谓收费和免费,14.2%的被访者表示只上手机内置的网站。

WAP 用户认知WAP 站点主要通过三大途径:手机内置、口碑相传和传统互联网;用户使用较多的WAP服务有手机图铃下载、WAP 搜索、在线游戏、在线音乐和在线图书;WAP 用户对目前手机上网的意见主要集中在速度和资费方面。

4、WAP 用户使用频率

对WAP的使用频率分布中,每天使用多次的比例为13.8%,每天一次的比例也有15.3%,

每周至少一次的比例为28.3%,这三者汇总的比例占到了57.4%,这说明WAP用户对WAP

的使用频率较高,近6 成的用户使用WAP的频率不低于每周一次。学生用户的使用频率略

高于非学生用户。

WAP 用户平均每次使用WAP 的时间以10~30 分钟的比例最高,为31.8%,在5~10 分钟的比例也超过了两成,总体上看WAP 用户每次的使用时间都不长,平均在30 分钟以内的比例为64.7%,在1 小时以内的比例为80.9%。非学生用户平均每次使用时间要略高于学生用户。将WAP使用频率与每次使用时长交叉可以发现,使用频率较高的用户平均每次的使用时间长度也比较长,这是由于用户的使用习惯受到惯性影响。

5、WAP 用户对站点选择的态度

27.5%的被访者表示只上免费的WAP网站,还有26.8%的被访者表示尽量选择免费的网站,此两者占到了所有被访者的54.3%。有31.6%的被访者表示无所谓收费和免费,只选择上自己喜欢的网站,此外还有14.2%的被访者表示只上手机内置的网站。调查结果显示,免费网站更受欢迎,但收费网站如果能提供有吸引力的内容也会有相当的市场,还有部分用户由于操作等方面的原因只上手机内置网站,表明手机内置对WAP用户尤其是新用户是一个非常重要的渠道。

6、使用WAP 的平均每月花费

WAP 用户使用WAP 的平均每月花费在11~20 元间的比例占所有用户的1/4 强,在21~50 元间的比例超过了1/5,6~10 元的比例也达到了1/5,超过2/3 的用户每月花费在WAP上的费用在6~50 元之间。

手机图铃下载使用状况:最近半年内使用过WAP 下载手机图铃的比例占到了所有WAP 用户的63.0%,那么意味着半年内使用WAP下载图铃的用户约为2460万人。调查发现通过WAP下载手机图铃的用户典型特征为男性、24~30 岁、月收入为1001~3000 元的企事业单位普通员工。

WAP 音乐使用状况:最近半年内通过WAP 在线试听/下载音乐的比例为40.2%,那么意味着半年内通过WAP玩在线试听/下载音乐的用户约为1570 万人。文化程度为高中及以下,年龄在18~24 岁之间的用户更倾向于通过WAP 在线试听/下载音乐。

7、用户经常访问的WAP站点

WAP 用户经常访问的WAP 网站中,排名前十名的网站为(以下排名不分前后,按照中文名称拼音排序):

n 移动梦网

n 3G 门户

n 空中网

n 乐讯网

n 手机百度

n 手机搜狐网

n 手机腾讯网

n 手机新浪网

n 网易WAP

n 易查搜索

Posted in 其它, 分析报告.


linux下自动校时

在root用户下编辑启动脚本

vi /etc/rc.d/rc.local
#加一句
/usr/bin/rdate -s time-a.nist.gov

ntp比较麻烦点
crontab 可能造成时间不连续

time-a.nist.gov 注:美国NIST守时中心
time.join.uni-muenster.de

Posted in linux 维护优化, 技术.


memcached 和imagemagick安装

www.danga.com
下载
* memcached-1.1.13.tar.gz — Sep 9, 2006

wget http://www.danga.com/memcached/dist/memcached-1.1.13.tar.gz
tar -zxvf memcached-1.1.13.tar.gz
cd memcached-1.1.13
sudo ./configure –prefix=/opt/memcahed
sudo make
sudo make install
/opt/memcached/bin/memcached -d -m 2

imagemagick

Jpeg v6b、libPng、FreeType 的要在安装imagemagick之前先装好,否则imagemagick没法读取jpeg和png图片

wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz

tar zxvf jpegsrc.v6b.tar.gz

cd jpeg-6b

./configure –prefix=/usr/local/jpeg-6b –enable-shared –enable-static
make
mkdir /usr/local/jpeg-6b
mkdir /usr/local/jpeg-6b/include
mkdir /usr/local/jpeg-6b/lib
mkdir /usr/local/jpeg-6b/bin
mkdir /usr/local/jpeg-6b/man
mkdir /usr/local/jpeg-6b/man/man1
make install

 ———————————————————————-

wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.gz

tar zxvf freetype-2.3.5.tar.gz

cd freetype-2.3.5.tar.gz

./configure –prefix=/usr/local/freetype

make

make install

cp /usr/local/freetype/include/freetype2/freetype/* /usr/local/include/

——————————————————————–

wget http://www.zlib.net/zlib-1.2.3.tar.gz

tar zxvf zlib-1.2.3.tar.gz

cd zlib-1.2.3

./configure –prefix=/usr/local/zlib

make

make install

—————————————————————-

wget http://jaist.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.29.tar.gz

 tar zxvf libpng-1.2.29.tar.gz

 cd libpng-1.2.29

./configure  prefix=/usr/local/libpng

make

make install

—————————————————————–
http://www.imagemagick.org/script/install-source.php#unix

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz

tar zxvf ImageMagick.tar.gz

cd ImageMagick-6.3.1
sudo ./configure –prefix=/usr/local/imagemagick –enable-shared –enable-lzw –with-modules LDFLAGS=’-L/usr/local/imagemagick/lib -R/usr/local/imagemagick/lib’  CPPFLAGS=”-I/usr/local/
jpeg-6b/include -I/usr/local/libpng/include -I/usr/local/freetype/include -I/usr/local/freetype/include/freetype2″ LDFLAGS=”-L/usr/local/lib -L/usr/local/jpeg-6b/lib -L/usr/local/libpng/lib -L/usr/local/freetype/lib”
sudo make
sudo make install

/sbin/ldconfig /usr/local/imagemagick/lib

/usr/local/imagemagick/bin/convert logo: logo.gif

Posted in Imagemagick, Memcached/redis.

Tagged with , .


bash

单引号(‘)双引号(“) 反斜杠(\)

$(command) `command` 命令替換(command substitution),推荐用$()
${}

meta
* IFS:由 或 或 三者之一組成(我們常用 space )。
* CR:由 產生。
IFS 是用來拆解 command line 的每一個詞(word)用的,因為 shell command line 是按詞來處理的。
而 CR 則是用來結束 command line 用的,這也是為何我們敲 命令就會跑的原因。
除了 IFS 與 CR ,常用的 meta 還有:
= : 設定變量。
$ : 作變量或運算替換(請不要與 shell prompt 搞混了)。
> :重導向 stdout。
< :重導向 stdin。
|:命令管線。
& :重導向 file descriptor ,或將命令置於背境執行。
( ):將其內的命令置於 nested subshell 執行,或用於運算或命令替換。
{ }:將其內的命令置於 non-named function 中執行,或用在變量替換的界定範圍。
; :在前一個命令結束時,而忽略其返回值,繼續執行下一個命令。
&& :在前一個命令結束時,若返回值為 true,繼續執行下一個命令。
|| :在前一個命令結束時,若返回值為 false,繼續執行下一個命令。
!:執行 history 列表中的命令
….

$ A=ls
$ B=la
$ C=/tmp
$ $A -$B $C

export variable

showvar() {
var=${str=expr}
echo \$var is $var
echo \$str is $str
}
变量null,unset,not null的差别

=和:=的差别

fork
source
exec
的差别

( ) 將 command group 置於 sub-shell 去執行,也稱 nested sub-shell。
{ } 則是在同一個 shell 內完成,也稱為 non-named command group。
所謂的 function ,就是用一個名字去命名一個 command group ,然後再調用這個名字去執行 command group 。
從 non-named command group 來推斷,大概你也可以猜到我要說的是 { } 了吧
在 bash 中,function 的定義方式有兩種:
方式一:

function function_name {
command1
command2
command3
….
}

方式二:

fuction_name () {
command1
command2
command3
….
}

${ } 的一些特異功能:
假設我們定義了一個變量為:
file=/dir1/dir2/dir3/my.file.txt
我們可以用 ${ } 分別替換獲得不同的值:
${file#*/}:拿掉第一條 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最後一條 / 及其左邊的字串:my.file.txt
${file#*.}:拿掉第一個 . 及其左邊的字串:file.txt
${file##*.}:拿掉最後一個 . 及其左邊的字串:txt
${file%/*}:拿掉最後條 / 及其右邊的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一條 / 及其右邊的字串:(空值)
${file%.*}:拿掉最後一個 . 及其右邊的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一個 . 及其右邊的字串:/dir1/dir2/dir3/my
記憶的方法為:
[list]# 是去掉左邊(在鑑盤上 # 在 $ 之左邊)
% 是去掉右邊(在鑑盤上 % 在 $ 之右邊)
單一符號是最小匹配﹔兩個符號是最大匹配。[/list]
${file:0:5}:提取最左邊的 5 個字節:/dir1
${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2

我們也可以對變量值裡的字串作替換:
${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt

利用 ${ } 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
${file-my.file.txt} :假如 $file 沒有設定,則使用 my.file.txt 作傳回值。(空值及非空值時不作處理)
${file:-my.file.txt} :假如 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值。 (非空值時不作處理)
${file+my.file.txt} :假如 $file 設為空值或非空值,均使用 my.file.txt 作傳回值。(沒設定時不作處理)
${file:+my.file.txt} :若 $file 為非空值,則使用 my.file.txt 作傳回值。 (沒設定及空值時不作處理)
${file=my.file.txt} :若 $file 沒設定,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (空值及非空值時不作處理)
${file:=my.file.txt} :若 $file 沒設定或為空值,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (非空值時不作處理)
${file?my.file.txt} :若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。 (空值及非空值時不作處理)
${file:?my.file.txt} :若 $file 沒設定或為空值,則將 my.file.txt 輸出至 STDERR。 (非空值時不作處理)

tips:
以上的理解在於, 你一定要分清楚 unset 與 null 及 non-null 這三種賦值狀態.
一般而言, : 與 null 有關, 若不帶 : 的話, null 不受影響, 若帶 : 則連 null 也受影響.

還有哦,${#var} 可計算出變量值的長度:
${#file} 可得到 27 ,因為 /dir1/dir2/dir3/my.file.txt 剛好是 27 個字節…

接下來,再為大家介稍一下 bash 的組數(array)處理方法。
一般而言,A=”a b c def” 這樣的變量只是將 $A 替換為一個單一的字串,
但是改為 A=(a b c def) ,則是將 $A 定義為組數…
bash 的組數替換方法可參考如下方法:
${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數)
${A[0]} 可得到 a (第一個組數),${A[1]} 則為第二個組數…
${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量)
${#A[0]} 可得到 1 (即第一個組數(a)的長度),${#A[3]} 可得到 3 (第四個組數(def)的長度)
A[3]=xyz 則是將第四個組數重新定義為 xyz …

接下來,再為大家介稍一下 bash 的組數(array)處理方法。
一般而言,A=”a b c def” 這樣的變量只是將 $A 替換為一個單一的字串,
但是改為 A=(a b c def) ,則是將 $A 定義為組數…
bash 的組數替換方法可參考如下方法:
${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數)
${A[0]} 可得到 a (第一個組數),${A[1]} 則為第二個組數…
${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量)
${#A[0]} 可得到 1 (即第一個組數(a)的長度),${#A[3]} 可得到 3 (第四個組數(def)的長度)
A[3]=xyz 則是將第四個組數重新定義為 xyz …

諸如此類的….
能夠善用 bash 的 $( ) 與 ${ } 可大大提高及簡化 shell 在變量上的處理能力哦~~~ ^_^

好了,最後為大家介紹 $(( )) 的用途吧:它是用來作整數運算的。
在 bash 中,$(( )) 的整數運算符號大致有這些:
+ – * / :分別為 “加、減、乘、除”。
% :餘數運算
& | ^ !:分別為 “AND、OR、XOR、NOT” 運算。

例:
[code]$ a=5; b=7; c=2
$ echo $(( a+b*c ))
19
$ echo $(( (a+b)/c ))
6
$ echo $(( (a*b)%c))
1[/code]

在 $(( )) 中的變量名稱,可於其前面加 $ 符號來替換,也可以不用,如:
$(( $a + $b * $c)) 也可得到 19 的結果

此外,$(( )) 還可作不同進位(如二進位、八進位、十六進位)作運算呢,只是,輸出結果皆為十進位而已:
echo $((16#2a)) 結果為 42 (16進位轉十進位)
以一個實用的例子來看看吧:
假如當前的 umask 是 022 ,那麼新建文件的權限即為:
[code]$ umask 022
$ echo “obase=8;$(( 8#666 & (8#777 ^ 8#$(umask)) ))” | bc
644[/code]

事實上,單純用 (( )) 也可重定義變量值,或作 testing:
a=5; ((a++)) 可將 $a 重定義為 6
a=5; ((a–)) 則為 a=4
a=5; b=7; ((a < b)) 會得到 0 (true) 的返回值。
常見的用於 (( )) 的測試符號有如下這些:
[list]<:小於
>:大於
<=:小於或等於
>=:大於或等於
==:等於
!=:不等於[/list]
不過,使用 (( )) 作整數測試時,請不要跟 [ ] 的整數測試搞混亂了

Posted in shell, 技术.

Tagged with .


tinymce在ie6下表现比较差

extended_valid_elements无法使用,HTML代码编辑时内容会消失.
IE6下在贴word文档时不能正确转换,ie7和FF下没有问题
IE7下会出现Ø ,FF下没事
讨论http://drupal.org/node/32883
解决方法是入库时用PHP替换http://tinymce.moxiecode.net/punbb/viewtopic.php?id=4352

Posted in Others, 技术.


apache rewrite 针对目录转向

恭喜公司.com再此被百度收录。
网站改版后,由于目录和文件命名的改变,以前收录的URL就是404了,现需转发至资料备份服务器。
使用php的话效率低了,所以用apache直接转发。

 
#笨方法
<coolcode>
Redirect temp /doc/ http://222.222.222.222/doc/
Redirect temp /news/ http://222.222.222.222/news/
Redirect temp /parttimetalent/ http://222.222.222.222/parttimetalent/
Redirect temp /fulltimetalent/ http://222.222.222.222/fulltimetalent/
Redirect temp /person/ http://222.222.222.222/person/
Redirect temp /ebook/ http://222.222.222.222/ebook/
</coolcode
>

#使用正则
<coolcode>
RedirectMatch temp ^/(doc|news|parttimetalent|fulltimetalent|person|ebook)/(.*) http://222.222.222.222/$1/$2
</coolcode>

#反向代理;对图片、js等目录都需处理,比较麻烦
#需开启proxy_module和proxy_http_module,费资源
<coolcode>
ProxyPass /doc/ http://222.222.222.222/doc/
ProxyPass /Include/ http://222.222.222.222/Include/
ProxyPassReverse /doc/ http://222.222.222.222/doc/
</coolcode>

关于在转向时使用301还是302,可以参考
http://www.chinamyhosting.com/seoblog/2006/04/12/301-redirect/

如果想收录新站就用301,保持原站索引用302

Posted in Apache, 技术.

Tagged with , .


apache 进程 cpu 和 找不到图片

发布新版首页时,高峰时
task达到800,cpu 60%
keepAlive off后
下降至3百多到,cpu 10~40%.
补上一张找不到的ICON后
下降至3百不到,cpu 10%.

404的图片对apache的进程和cpu还是有点影响的,10~30%左右

Posted in Apache, 其它, 分析报告, 技术.

Tagged with .


apache关闭某目录的PHP解析

可以在http.conf的目录区域增加”php_flag engine”参数,关闭对某个目录的php解析,起到保护的作用。



    DocumentRoot /opt/htdocs/www
    ServerName local.c1gstudio.com


    php_flag engine Off
    AddOutputFilterByType DEFLATE text/html text/plain text/xml

 

关闭后php文件将会变成可下载的纯文本文件,所以请小心使用。

Posted in Apache, PHP, 技术.

Tagged with , .


apache下rewrite防盗链

在http.conf中添加模块

LoadModule rewrite_module modules/mod_rewrite.so
#可能需要的其它相关模块
LoadModule mime_module modules/mod_mime.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule headers_module modules/mod_headers.so

rewrite方式
可以自定的我内容,如显示友好的图片
可以地址中带URL进行破解
充许空referer
在根目录下新建allow目录存放允许访问的内容,如leech.gif
——————————-

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/allow
RewriteRule ^.*$ – [L]
RewriteCond %{REQUEST_FILENAME} \.(gif|jpg|jpeg|png|swf|css|rar|zip)$ [NC]
RewriteCond %{HTTP_REFERER} !^$ [NC] #空referer
RewriteCond %{HTTP_REFERER} !192.168.1.111 [NC]
RewriteCond %{HTTP_REFERER} !192.168.1.221 [NC]
RewriteCond %{HTTP_REFERER} !domain\.com [NC]
RewriteCond %{HTTP_REFERER} !domain\.net [NC]
RewriteCond %{HTTP_REFERER} !anotherdomain\.com [NC]
RewriteRule (.*) /allow/leech.gif [R,NC,L]

SetEnv方式
直接转到403页面去,如果请求是图片的话,那就是一个红X
————————-


SetEnvIfNoCase Referer “^http://192.168.1.111″/ local_ref=1
SetEnvIfNoCase Referer “^http://192.168.1.221″/ local_ref=1
SetEnvIfNoCase Referer “^http://.*\.domain\.com” local_ref=1
SetEnvIfNoCase Referer “.*\.domain\.com” local_ref=1
SetEnvIfNoCase Referer “^http://domain.com”/ local_ref=1
SetEnvIfNoCase Referer “^http://*\.domain\.net” local_ref=1
SetEnvIfNoCase Referer “.*\.domain\.net” local_ref=1
SetEnvIfNoCase Referer “^http://domain\.net”/ local_ref=1
SetEnvIfNoCase Referer “^http://*\.anotherdomain\.com” local_ref=1
SetEnvIfNoCase Referer “.*\.anotherdomain\.com” local_ref=1


SetEnv NoLOG 1
Order Allow,Deny
Allow from env=local_ref

参考
http://blogsdiy.org/2007-04/prevent-hotlinking/

Posted in Apache, 技术.

Tagged with , .