月度归档:2014年04月

windows7 64位 php5.3安装php_mongo.dll方法

windows 7 64位系统安装php mongodb 模块时需要选择64位的dll才能正确使用目前最新支持的是php_mongo-1.3.2RC1-5.3-vc9-x86_64.dll 这个dll,我的php是TS模式的。试了几次都没成功最后用最新版的1.3.2RC1的就成功了。

dll的下载地址为:https://github.com/mongodb/mongo-php-driver/downloads 支持php5.2,php5.3,php5.4三个版本的。 最新版本是1.3.2RC1

玩的开心!!!

JavaScript 秘籍系列(1)异步

经过一年多的参悟,哥明白了一些JavaScript的秘密。这里分享下,JavaScript是一个披着c语言皮的lisp语言,和ruby一样灵活。他有很多诡秘的特性,这里先介绍的就是他的异步特性。

异步,JavaScript是一个事件驱动的语言。怎么理解呢,他是一个事件队列,在不停的等待触发。有事件来了,相应的代码就会执行。这点很不像c语言和php这类过程式语言和Java、c++这类面向对象的语言。

首先说一个示例。

var a = 123;

(function() {
a = 124;
})();

alert(a);

这段代码会怎么执行呢?第一行代码会赋值123给a ,接着 匿名函数会直接赋值124给a,然后输出 a的值124;

如果使用异步的调用就不会是这样了

function bark (callback) {
 
 
 setTimeout(function(){
 a++;
 callback("aa"+ a);
 },0);
}

var cb = function(msg) { console.log(msg);}

var a = 123;
bark(cb);
a ++;
var mg = 'bb'+ a;
cb(mg);

这段代码就会异步执行,先输出bb开头的,然后输出aa开头的代码。这种操作一般都是用来将一些事件先执行了,耗时的事情稍后让他自己慢慢执行。

异步的方式还有很多:

1,事件驱动,on事件,omit触发事件。

2,就是setTimeout和setInterval驱动的异步执行策略。

剩下的就是在这两个基础上组合实现的设计模式的实现了。

Vim ctags 代码跟踪

VIm下使用借助ctags跟踪c,php代码特别方便。如果是ubuntu可以使用命令安装:

sudo apt-get install ctags

安装完成后就可以通过

ctags -r -o taglist_file src_dir 简历tags文件。

接着在vim里就可以使用ctrl + ']' 去跟踪代码, 通过ctrl+t 返回跳转前的代码位置。基本这样就可以很好的使用Vim跟踪代码了。

 

Mysql 忘记root密码怎么办?

Mysql 忘记root密码怎么办? 在服务器shell首先关闭mysql服务。

service mysql stop

然后使用非授权模式打开mysql服务器,

bin/safe_mysqld --skip-grant-tables & 

mysql    -u root
> use mysql
> update user set password=password("new_pass") where user="root";  
> exit;

退出mysql,然后重启mysql服务

servie mysql restart

这时就可以用新的密码登录mysql了

PHPTidy 纠错html代码

html抓取的时候经常会出现html代码错乱问题,怎么修复呢?这就需要PHPtidy这个利器了。一般php会默认带的。
具体用法就不多说了。直接贴代码:

/**
* 清理html并纠错
*/
function tidyHtml($html) {
$b = mb_detect_encoding($html);
if($b != 'UTF-8'){
$html = mb_convert_encoding($html, 'UTF-8');
}
$tidy = new tidy;
$tidy->parseString($html,array(),'UTF8');

$tidy->cleanRepair();
$txt = $tidy->html()->value;

preg_match_all('/\(.*)\<\/body\>/msi',$txt,$ret);
$ret = $ret[1][0];
// $ret = strip_tags($ret,'

php xml to array转换函数

php解析xml到php数组是个问题,不太好搞。看了下往上经典的处理方式就是

$b = json_decode(json_encode((array)$xml),true);

这个方式有个问题就是<![CDATA[会被处理为空得数据

不得已自己写了一个函数处理这个问题


function xml2Array($xml) {

$arr = null;

if($xml->attributes() ) {

foreach($xml->attributes() as $k=>$v) {

$arr['@a'][$k]= $v->__toString();

}

}

/*

if($xml->getName() == 'description') {

var_dump($xml);

var_dump($xml->count());exit;

}

*/

if($xml->count()) {

foreach($xml as $v) {

$va = $v->getName();

if($xml->count() > 0){

$va = $v->getName();

if(count($xml->$va) > 1) {

$arr[$v->getName()][]= xml2Array($v);

} else {

$arr[$v->getName()] = xml2Array($v);

}

} else {

$arr[$v->getName()] = xml2Array($v);

}

}

} else {

if($arr['@a']) {

$arr['_v'] = $xml->__toString();

} else {

$arr = $xml->__toString();

}

}

return $arr;

}

好店开张

又一次搭建起来了这个博客,以后可以长期开始写博客了。。吼吼

计划:

1,自己运营一个网站。。。

2,写技术博客