使用新主题了,大家给个意见哈

好听的歌,搞笑的短片,放松一下=)

九 25th, 2009

周末不想加班的雷人大帝

标签:

该死的DOMDocument!

九 24th, 2009

PHP处理XML类文档主要有两个模块,一般简单点用SimpleXML,不过他只能作遍历、取值、取属性等操作,而不能进行删除修改节点的操作。使用libxml的DOMDocument功能比较强大,不过也比较麻烦。今天就遇见一问题,折腾很久~

有XML格式如下:

<foo xmlns="test">
<bar attr='a'></bar>
<bar attr='b'></bar>
<bar attr='c'></bar>
</foo>

开始尝试解析

<?php
    $dom = new DOMDocument;
    $dom->loadXML($xmls);//xmls变量为以上XML的字符串内容
    $messages = $dom->getElementsByTagName('bar');
    foreach($messages as $k=>$message){
        if(!is_object($message) || ($message->getAttribute('attr') == 'a')){
            continue;//属性attr 为a的保留        
        }
        $message->parentNode->removeChild($message);
    }
    echo $dom->saveXML();

//原以为删除了attr属性不为a的bar节点,可是却混淆了!后来尝试了replaceChild等,也不是太理想,而且还麻烦
//最后在PHP官方发现也有人提了此问题,并且人家找到办法绕过了此BUG
You can’t remove DOMNodes from a DOMNodeList as you’re iterating over them in a foreach loop. For example… 意思是说在遍历节点的时候进行删除操作会得到意想不到的结果,因此将要删除的结点暂存起来,最后再来删除
修正以上代码:

<?php
    $dom = new DOMDocument;
    $dom->loadXML($xmls);//xmls变量为以上XML的字符串内容
    $messages = $dom->getElementsByTagName('bar');
    $deletemessages = array();
    foreach($messages as $k=>$message){
        if(!is_object($message) || ($message->getAttribute('attr') == 'a')){
            continue;//属性attr 为a的保留        
        }
        $deletemessages[] = $message;
    }
    //删除
    foreach($deletemessages as $k=>$v){
        $v->parentNode->removeChild($v);
   }
    echo $dom->saveXML();

好了!这样就正常了……
参考PHP文档:http://us3.php.net/manual/en/domnode.removechild.php

标签:

百家讲坛之明亡清兴60年听完啦

九 8th, 2009

上月下载了很多百家讲坛的mp3,每天上下班用来打发时间。昨刚把阎崇年老师的明亡清兴60年听完。

明亡清兴从袁崇焕之死说起,经过明万历、泰昌、天启、崇祯,最后又以袁崇焕的历史评价终。把这60年历史讲述的淋漓尽致,人物个性,历史功过描述得很明朗。将明亡清兴的诸重要战役贯穿整个讲座,如萨尔浒大战、锦宁之战、宁远大捷、后来北京之战及最后的山海关大战等。同时还把这时期的主要历史人物作了描述,如万历皇帝的荒淫,不理朝政;天启皇帝爱做木工,是个十足的木匠皇帝;崇祯皇帝的多疑残暴;努尔哈赤的英勇睿智;袁崇焕的大仁、大智、大勇、大廉及尤其是崇高的爱国精神,值得我们借鉴与学习。

感谢大师阎崇年~将毕生的历史研究献给我们^_^

标签:

ubuntu下免输密码自动连远程主机

九 1st, 2009

使用putty的用户都知道,可以使用-l -pw参数设置快捷方式,以自动连接至远程主机,也可以用key方式 。

ubuntu下要用终端terminal自动连,也可以实现。首先装sshpass,apt-get就可以了。

然后在system->preferences->main menu里加一个new item项,其中command写上gnome-terminal –command ’sshpass -p pass ssh user@anyhost’就可以了。怎么样,很方便吧^_^

当然,putty亦有linux版的~

标签:

Linux中使用dmidecode查看硬件信息

八 28th, 2009

使用dmidecode可以查看系统各硬件的详细信息CPU,各级缓存,内存,板载插口等信息

如我使用dmidecode | grep -A16 “Memory Device$”查看内存信息

标签:

ssh连接慢解决方法

七 17th, 2009

使用kde的konsole连接局域网内服务器慢,今用ssh -v 看了下,发现是

debug1: Next authentication method: gssapi-with-mic

一直等待。原来/etc/ssh/ssh_config中GSSAPIAuthentication选项被配置成yes后,会发起一个_kerberos.<hostname>的GSSAPI认证请求,这样,ssh会一直等待至GSS认证超时失败。所以等待了很久。
解决办法,将该选项置为no
GSSAPIAuthentication no
至于GSSAPI认证具体访式,有待以后研究 :lol:
sshd配置参考http://lamp.linux.gov.cn/OpenSSH/sshd_config.html

标签:

rsync 详细说明(转)

七 1st, 2009

rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,
我们下面就对它的选项一一进行分析说明。

标签:

将linux文件同步至windows下实现自动备份

六 23rd, 2009

对站长来说,丢失数据又没得恢复绝对是恶梦……因此,想到将linux下的数据库和www目录自动备份,因为有win主机闲置,那就存它那了。闲话少说,现在开工:
首先给win主机安装cwrsync(基于cgwin和rsync的同步软件)
…………

标签:

memcache实践小记

六 23rd, 2009

memcache是一个高效快速的,以内存存取的高速缓存,其保存方式通过“键”=>“值”的方式,对key进行hash存储,因而查询速度快,避免硬盘的反复擦写,也正如此,断电或重启就得重新为它“灌”内容了。
准备工作:
1.先安装libevent,因为memcached是依赖它的
2.memcached下载与安装

# ./memcached -d -m 50 -p 11211 -u root
参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行
3.启动./memcached -p 11211 如果报如下错

error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

那么,注册一下libevent扩展
# vi /etc/ld.so.conf.d/libevent-i386.conf
内容为你编译生成的libevent库的路径,默认为/usr/local/lib
运行
# ldconfig
好了,这样memcachd就装好了,接下来安装php支持,可以通过phpize或静态编译方式 ,我是通过后者
下载最新版pecl memcache包解压至phpdir/ext
#rm configure
#buildconf –force 当然这个需要
#./configure –with-memcache –enable-memcache
需要注意: 要运行“buildconf”脚本,需要 autoconf ,如果没有或版 本过低就先升级它
OK,写几行试试~

<?php
set_time_limit(1000);
$host = 'localhost';
$memcache = new Memcache;
$memcache->connect($host,11211);
 
for($i=0;$i<100000;$i++){
/*存上10w个看看*/
    $memcache->set('k'.$i,$i,false,1000);
}
 
print_r($memcache->getServerStatus($host));
print_r($memcache->getStats());//查看memcached服务状态
?>
标签:

各种工具(语言)之正则表达式语法差异比较

六 20th, 2009

这里对几种常用正则grep、egrep、sed要、awk、perl、vim、javascript等差异作个总结,希望一同补充完善……

标签: , ,