php 站点优化工具xdebug

in

主页: http://xdebug.org

so 模式安装为php模块:

php.ini中加入下面几行。

extensions=xdebug.so

[Xdebug]
zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.profiler_enable=on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.profiler_output_name="cachegrind.out."

使用kcachegrind(linux)或者wincachegrind(windows)查看分析结果

MySQL的性能调优工具:比mysqlreport更方便的tuning-primer.sh

Sundry MySQL提供的脚本相比mysqlreport更进一步:除了报表还进一步提供了修改建议。安装和使用非常简单:

wget http://www.day32.com/MySQL/tuning-primer.sh
chmod +x tuning-primer.sh
./tuning-primer.sh

和mysqlreport一样,tuning-primer.sh也支持.my.cnf

[client]
user = USERNAME
password = PASSWORD
socket = /tmp/mysql.sock

样例输出:在终端上按照问题重要程度分别用黄色/红色字符标记问题

使用postgreSQL搭建比lucene方便N倍的全文搜索 第一部分

[文章作者:陈臻 本文版本:v1.1 最后修改:2009.4.13 转载请注明原文链接:http://www.54chen.com/c/601 ]

所有用到到包有:

cmake-2.6.4.tar.gz (编nlpbamboo用)

CRF++-0.53.tar.gz(同上)

nlpbamboo-1.1.1.tar.bz2(分词用)

postgreSQL-8.3.3.tar.gz(索引用)

安装pgsql

tar -zxvf postgreSQL-8.3.3.tar.gz

cd postgre-8.3.3
./configure –prefix=/opt/pgsql
make
make install

useradd postgre

chown -R postgre.postgre /opt/pgsql
su - postgre
vi ~postgre/.bash_profile
添加
export PATH
PGLIB=/opt/pgsql/lib
PGDATA=/data/PGSearch
PATH=$PATH:/opt/pgsql/bin
MANPATH=$MANPATH:/opt/pgsql/man
export PGLIB PGDATA PATH MANPATH

# mkdir -p /data/PGSearch

# chown -R postgre.postgre /data/PGSearch

# chown -R postgre.postgre /opt/pgsql

#sudo -u postgre /opt/pgsql/bin/initdb –locale=zh_CN.UTF-8 –encoding=utf8 -D /data/PGSearch
#sudo -u postgre /opt/pgsql/bin/postmaster -i -D /data/PGSearch & //允许网络访问
#sudo -u postgre /opt/pgsql/bin/createdb kxgroup
# vim /data/PGSearch/pg_hba.conf 如下增加可访问的机器:

host all all 10.2.19.178 255.255.255.0 trust

#su - postgre

$pg_ctl stop

$postmaster -i -D /data/PGSearch &
安装中文分词(Cmake CRF++ bamboo)
Cmake是为了编译bamboo,CRF++是bamboo依赖的。

tar -zxvf cmake-2.6.4.tar.gz

cd cmake-2.6.4
./configure
gmake
make install

tar -zxvf CRF++-0.53.tar.gz
cd CRF++-0.53
./configure
make
make install

tar -jxvf nlpbamboo-1.1.1.tar.bz2
cd nlpbamboo-1.1.1
mkdir build
cd build/
cmake .. -DCMAKE_BUILD_TYPE=release
make all
make install

cp index.tar.bz2 /opt/bamboo/
cd /opt/bamboo/
tar -jxvf index.tar.bz2

#/opt/bamboo/bin/bamboo

如果出现:

ERROR: libcrfpp.so.0: cannot open shared object file: No such file or directory

就执行:

ln -s /usr/local/lib/libcrfpp.so.* /usr/lib/
ldconfig

增加上中文分词扩展到pgsql

#vim /root/.bash_profile 也增加:

PGLIB=/opt/pgsql/lib
PGDATA=/data/PGSearch
PATH=$PATH:/opt/pgsql/bin
MANPATH=$MANPATH:/opt/pgsql/man
export PGLIB PGDATA PATH MANPATH

#source ~/.bash_profile

cd /opt/bamboo/exts/postgres/chinese_parser/
make
make install

su - postgre
cd /opt/pgsql/share/contrib/
touch /opt/pgsql/share/tsearch_data/chinese_utf8.stop
psql kxgroup
\i chinese_parser.sql 导入

再执行下面的sql,已经可以将一段话分词了:

SELECT to_tsvector(’chinesecfg’, ‘结果在命令行下执行bamboo才知道’);

先到这里,下一部分讲述对TEXT字段进行索引和查询,完整构造一整个搜索引擎。

Qt 中QModelIndex的一个不正确用法解说

最近项目中用到了QDirModel实现一个树形结构,这个功能需要首先记住某个QModelIndex处的文件路径,再某时间段后使用这个记录的QModelIndex的文件路径。
接下来操作过程不断出现程序崩溃的情况,怎么查也找不到问题。大概折腾了两三个小时的时间,便决定采用另一种方法,记录这个结果的绝对路径,然后使用的时候通过这个路径得到一个QModelIndex,这样竟然不再出现问题。
回头想了一下,原来在记录了这个QModelIndex后,又执行了多个相关的树结构的操作,那么原先的那个QModelIndex可能已经无效了,这个随便的错误用法导致程序随机出现一些崩溃现象,才明白过来这种用法的错误之处。
总结一点,这个QModelIndex不能做类似的用途,由于它是动态生成的位置变量,具有相当的“不稳定性”特点。

Adobe开放了RTMP协议规范

in

Adobe又一个开源的东西。虽然开源,但商用还是要获得Adobe的许可。RTMP(the Real-time Messaging Protocol)协议作为客户端和服务器端的传输协议,这是一个专门为高效传输视频、音频和数据而设计的 TCP/IP 协议,使用 RTMP 协议传输的数据是未经加密的,包括用户名和密码等认证信息。

RTMP详细说明书下载:点击这里
License说明书下载:点击这里
到Adobe官方网站上查看最权威的定义:点击这里。(责任编辑:A6)

调整phpmyadmin中的session过期时间

在config.inc.php的行

$cfg['blowfish_secret'] = 'xxxxx'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

后面加入下面两行,根据需要调整一下数值。

$cfg['LoginCookieValidity']=360000; // [number of seconds]
// Define how long is login cookie valid.
$cfg['LoginCookieStore'] = 3600000; // integer [number of seconds]

sftp协议中服务器有quota限额时的表现分析

1. 服务器上没有一点空间,这个时候创建个目录失败

2, 服务器上没有一点空间,这时可以创建空文件,向文件写入n个字节后, write报错.

3. 创建一个空文件都不可以的时候。

nullfxp 1.7.0 released

in

nullfxp 1.7.0 ChangeLog:

升级libssh2包,提高文件传递的速度。

实现sftp协议的同步功能。

在win32平台上使用原生vc编译器编译。

修正显示服务器端文件的stick属性位问题。

修正反复出现的中文文件名问题。

修正诸多小bug。

新加suse 11.1 RPM 包,包括32位及64位版本。

下载地址:
Download Nullfxp 1.7.0
View All Version

想起来以前写过的一段C代码

这段代码的功能是调试C语言中的内存漏洞。
原理:
使用自定义的宏malloc, calloc, realloc, free 来覆盖libc中的相应函数声明,这些宏中实现记录函数的调用位置(如在哪个文件,哪一行),记录的数据存放在一个链表中,然后再调用libc中的相应内存处理函数。等到程序结束时,通过遍历这个链接,能找到那些没有正常释放的内存分配位置,从而达到获得内存漏洞的相关信息,以便及时修补这些内存问题。
这段代码那是帮我找到了几个隐藏很深的内存漏洞问题,还花了几天的时间,不过总算没有白写了。

现在看来这段代码的功能与dmalloc相似,当时还没听说过dmalloc,所以硬生生写出这么一段代码。
后来我也有用过dmalloc,但一直没有看过dmalloc如何实现的,它的实现肯定要更底层一些,不会只是简单的宏替换了。

dmalloc的原理也是在调用相关的内存函数时做记录的吗?还有什么函数能hook这些libc函数的调用呢?

我的这部分代码丢了,只记得一点实现原理了,有空的话看看dmalloc的实现,对我这部分的理解更有帮助些。

使用本地DNS缓存,加快网络访问速度

最近一段时间,无论是在公司还是在家里,都感觉网络域名的解析速度相当慢,不知道是什么原因。浏览网页感觉慢,却不是因为网速慢,而主要在dns解析这一步占用了不少时间。

我使用的gentoo linux,安装本地dns缓存
emerge net-dns/dnsmasq

然后编辑/etc/dnsmasq.conf,搜索“listen-address”把注释号去掉,并修改为:

listen-address=127.0.0.1

rc-update add dnsmasq default
启动 /etc/init.d/dnsmasq start

如果你使用的是dhcp获取IP地址,可以修改(或者创建)/etc/resolve.conf.head

内容为:

search domain
nameserver 127.0.0.1

如果使用表态IP地址,则可以直接编辑/etc/resolve.conf, 在最前面加一行:
nameserver 127.0.0.1

现在测试一下,是不是从感觉网速快多了。

Syndicate content