好听的歌,搞笑的短片,放松一下=)
周末不想加班的雷人大帝
周末不想加班的雷人大帝
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
上月下载了很多百家讲坛的mp3,每天上下班用来打发时间。昨刚把阎崇年老师的明亡清兴60年听完。
明亡清兴从袁崇焕之死说起,经过明万历、泰昌、天启、崇祯,最后又以袁崇焕的历史评价终。把这60年历史讲述的淋漓尽致,人物个性,历史功过描述得很明朗。将明亡清兴的诸重要战役贯穿整个讲座,如萨尔浒大战、锦宁之战、宁远大捷、后来北京之战及最后的山海关大战等。同时还把这时期的主要历史人物作了描述,如万历皇帝的荒淫,不理朝政;天启皇帝爱做木工,是个十足的木匠皇帝;崇祯皇帝的多疑残暴;努尔哈赤的英勇睿智;袁崇焕的大仁、大智、大勇、大廉及尤其是崇高的爱国精神,值得我们借鉴与学习。
感谢大师阎崇年~将毕生的历史研究献给我们^_^
使用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版的~
使用dmidecode可以查看系统各硬件的详细信息CPU,各级缓存,内存,板载插口等信息
如我使用dmidecode | grep -A16 “Memory Device$”查看内存信息
使用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认证具体访式,有待以后研究 ![]()
sshd配置参考http://lamp.linux.gov.cn/OpenSSH/sshd_config.html
rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,
我们下面就对它的选项一一进行分析说明。
对站长来说,丢失数据又没得恢复绝对是恶梦……因此,想到将linux下的数据库和www目录自动备份,因为有win主机闲置,那就存它那了。闲话少说,现在开工:
首先给win主机安装cwrsync(基于cgwin和rsync的同步软件)
…………
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服务状态 ?>
这里对几种常用正则grep、egrep、sed要、awk、perl、vim、javascript等差异作个总结,希望一同补充完善……