消息树

1,LP明年4月来上海开演唱会,大呼不可思议。和张画家约好攒钱买内场票。

2,老汪今天和我说周六不能出来打乒乓了。原来体检结果出来不理想,要去医院做进一步检查,唉。祝福老汪早日康复,好人一生平安。

3,老林的公司明年居然要搬来天地软件园,昏。又在一起办公了,不同的就是各位其主罢了。

4,老刘托我去力美健办健身卡。这回总算能找个伴一块儿炼了。

5,对我来说挺最重要的消息是今天发工资。

花了一天时间终于把PHPUnit2跑通了

哈复杂呀哈复杂

之前的操作像往常使用Pear组件一样,把源代码下载到本地后解压至Pear目录,修改文件名为PHPUnit2;然后写了一个最简单的ArrayTest,IE显示一片空白。。。

查手册,倒!居然是Command-line环境下运行的,连phpunit命令都没有,还怎么跑?!继续看安装说明。

在Windows环境下安装PHPUnit2,cmd命令进入命令行环境后执行2条命令:

pear channel-discover pear.phpunit.de

pear install phpunit/PHPUnit

提示安装失败

Did not download optional dependencies: pear/Image_GraphViz, pear/Log, pear/Test
ing_Selenium, use --alldeps to download automatically
phpunit/PHPUnit requires PHP (version >= 5.1.4), installed version is 5.1.1
phpunit/PHPUnit requires PHP extension "reflection"
phpunit/PHPUnit can optionally use package "pear/Image_GraphViz" (version >= 1.2
.1)
phpunit/PHPUnit can optionally use package "pear/Log"
phpunit/PHPUnit can optionally use package "pear/Testing_Selenium" (version >= 0
.2.0)
phpunit/PHPUnit can optionally use PHP extension "json"
phpunit/PHPUnit can optionally use PHP extension "xdebug" (version >= 2.0.0RC1)
No valid packages found
install failed

在安装PHPUnit2之前还必须升级必要的Pear组件,还要把PHP版本从5.1.1升级到5.1.4
这个可犯难了,为了测试一个PHPUnit2居然还要做这么大的调整,万一升级失败影响到原先的程序岂不是罪过大了。

思考了一下,估计是因为下载安装的PHPUnit2版本太高所致,所以想下一份低版本的的PHPUnit2。

pear install http://pear.phpunit.de/get/PHPUnit-2.3.6.tgz

这次一下提示安装成功了,在PHP安装目录下可以看到phpunit.bat文件了。

再跑ArrayTest,提示

'php' 不是内部或外部命令,也不是可运
或批处理文件。
PHPUnit 2.3.6 by Sebastian Bergmann.

Syntax error in ArrayTest.php.

还是不能出正确的运行结果,Baidu在关键时刻发挥作用了。

我转载一段来自网上的解决方案:

在windows下安装完成后还不能直接进行测试,运行测试程序时会出现 'php'不是内部或外部命令,也不是可运行的程序。的错误,经我一路跟踪,最后在PHPUnit2/Util/Fileloader.php这个文件里找到了问题所在,这个文件是载入测试文件用的,同时使用php解释器进行了语法检查,shell_exec('php -l ' . escapeshellarg($filename));,而我的php.exe并没有在系统的path中,所以出现了上述问题,一种办法是将$output到include之前的代码全部注释掉,这样就不用语法检查了,还有一种办法就是在系统path中加入php的安装目录。

好,一切都修改完毕后。

phpunit ArrayTest

PHPUnit 2.3.6 by Sebastian Bergmann.

..

Time: 0.009333

OK (2 tests)


结果终于出现了。


另附一些参考资料:

最权威的莫过于PHPUnit2的官方文档,O'Reilly已经出版。
http://www.phpunit.de/pocket_guide/2.3/en/index.html


PHPUnit

之前有听说过PHPUnit,一直没有机会尝试,先存两篇文档;有空再试一下///

头一次使用这种东西,开始有些手忙脚乱,弄了二天了,终于有点眉目了,记录一下过程。

以下都是在windows下进行,我的php版本是php-5.1.4-win32
因为phpunit要通过pear安装,所以首先要安装pear
找到php的目录下有一个go-pear.bat,双击运行,提示你安装系统级别的还是一个本地拷贝,直接回车,定制安装目录,选择默认即可,直接回车。程序会自动从网站上下载所需要的文件,过一会就提示你安装好了。

安装好pear后,在php的目录下发现有一个pear.bat,这个是pear安装包用的程序,
命令行进行php目录,输入 pear install phpunit2
即可,安装完成。
在php目录下会生成一个phpunit.bat,这个是命令行下的测试命令。
我们可以把他复制到我们要测试程序的目录下面。
命令行下输入 phpunit sampleTest
就是对sampleTest这个case进行测试了。

有二点需要注意的地方:

  1. phpunit需要pear的benchmark包,所以要安装 pear install benchmark即可。

  2. 在windows下安装完成后还不能直接进行测试,运行测试程序时会出现 'php'不是内部或外部命令,也不是可运行的程序。的错误,经我一路跟踪,最后在PHPUnit2/Util/Fileloader.php这个文件里找到了问题所在,这个文件是载入测试文件用的,同时使用php解释器进行了语法检查,shell_exec('php -l ' . escapeshellarg($filename));,而我的php.exe并没有在系统的path中,所以出现了上述问题,一种办法是将$output到include之前的代码全部注释掉,这样就不用语法检查了,还有一种办法就是在系统path中加入php的安装目录

HTMLRunner for PHPUnit2

phpunit2目前只有命令行模式,在网上搜索到了HTMLRunner这个东西,
算是phpunit2的一个插件吧,可以让test以html的形式显示结果,比命令行下好看多了,
这里是下载地址
http://www.defusion.org.uk/code/phpunit2-html-runner/

安装及使用方法:
下载后将文件解压到你的web目录,比如"HTMLRunner",访问时就通过
http://localhost/HTMLRunner/。你会看到有一个输入框,如图

case和suite可以在这里输入,一行一个测试,不需要php后缀,例如
../pliteTest
util/HistoryTest
如果输入的测试程序有语法错误,结果是一片空白,什么也不显示,否则显示下面的图

是不是比命令行下的好看多了?
当测试程序显示有错误的时候。页面下方还会有更详细的扩展信息

关于这个插件的详细信息参见上面的网址。

转载自<寻梦的稻草人>

多智能的Pear::DB

今天在修改网站配置文件时,把存放MySQL数据库主机地址的变量名改掉了,但上传后发现Pear::DB连接一切照常,难道连接信息中没有主机名也能正常工作?!当时我还没有更新连接信息啊?! 大惑不解。。。

后来打开DB.php才发现,原来Pear::DB在分析连接信息数据时,如果没有取到数据库主机地址,则自动默认为localhost,而我的数据库主机地址恰恰就是localhost,所以一切照旧也就见怪不怪啦。

$dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost';

就是上面这句条件判断让我蒙混过关啦...

当然最后还是把连接信息中的新变量名替换过来,因为不知道哪天如果数据库主机地址万一发生变化,这个问题就会马上显现出来。

本周的安排

周一《操作系统》《计算机网络技术》

周二跳操

周三跑步(天气好的话)

周四跑步(天气好的话)

周五《操作系统》《计算机网络技术》

周六买晚报订阅单/跳操

周日上课

影像志

已经不记得自己看的第一部电影叫什么名字了。也不记得迄今为止看过多少部电影,只记得曾经有那么一阵很迷恋它,几乎每周风雨无阻行走在周边的音像店之间,离开时候总是一袋子一袋子的碟片,然后慢慢消化。随着电影而感动,有时会困惑,或被激荡的从沙发中跳起来回踱步,也曾笑疼肚子或在沙发上慢慢睡着。

如果说我喜欢看好莱坞制作,那些逢电影必讲安东尼奥尼,塔可夫斯基,文德斯,戈达尔的亲欧文艺青年也许会投来不屑的眼光。但我真的在《柏林苍穹下》、《红白蓝》、《西伯利亚理发师》下睡着,口水留了一大滩。是我还不懂影像艺术吗?真正的文艺都是小众的吗?我根本懒得争辩自己的观影观。合适自己的就是最好的。

走进我心中的第一部电影应该是《申肖克的救赎》,典型的好莱坞编剧,典型的好莱坞结局,典型的好莱坞桥段,却营造出非一般典型的感动。第一次看《申》临近结束时,我很怕Andy会最终用那根绳子结束自己的生命。在黑暗,独裁,垄断,窒息气氛的笼罩下,生的勇气就像即将燃尽的火柴杆。当Andy从那根长长的下水管爬出仰天长啸的一幕我想同样感动了一批又一批的观众。再来回味这句话吧——“有一种鸟是关不住的,因为它每一根羽毛都闪烁着自由的光辉!”。

凯文斯派希,《美国丽人》让我认识了他。《洛城机密》再次见到他,《非常嫌犯》还是他。三部电影,一个凯文。就像《阿甘正传》《Apollo13》造就了汤姆汉克斯。《M:I》又把小汤哥捧上了一线男性的地位。而凯文,靠着这三部片子也奠定了他在好莱坞的地位。我喜欢他的眼神,那种空泛,焦点似乎落在你之后的空气中的那种眼神,会让人一下子平静下来。真正的演技派应该都是这个范儿。

最后应该说导演了,是讲马丁西克塞斯,还是斯坦利库布里克。大卫林奇还是蒂姆伯顿。让我想想。。。

12.7 跑步日记

7号一个人去跑步,天气比之前两天恶劣的多——风很大。操场上人不多,寂清的很。

简单的热身后便上路了,月色不错,亮堂堂的洒在跑道上,至少让我不会感到太孤单。5圈之后才感觉气息平稳住了,之后的7圈半变得轻松了许多。5km完成耗时35分钟,比夏天26分钟的最好成绩几乎慢了10分钟。很纳闷冬天肌肉似乎很容易感到疲倦,800M之后两条腿的肌肉就开始感觉酸疼。

mb_convert_encoding VS iconv

不确定消息:

表示iconv在确定编码的情况下效率比mb_convert_encoding高些,mb_convert_encoding的好处就是不需要确定原来字符的编码

Javascript Learning Diary

第一课,大小写敏感

从最简单的一句document.getElementById('sIDValue').innerHTML开始。

调试了足足N+遍,都提示错误“对象不支持此属性或方法”。

莫名了,最后才发现document.getELementById('sIDValue').innerHTML
误打成了大写字母“L”。

修改成小写后,问题引刃而解。

所以在引用DOM时,语句必须严格按照大小写写成:

document.getElementById('sIDValue').innerHTML

=====================================
=====================================

第二课,Javascript中escape()函数生成的字符串在PHP环境下的Decode

DOM中,当有字符串(包括中文字串,西文字串,数字串,meta字串以及混和字串)作为参数放置在url中进行传递时,往往会将字符串用escape()函数编码,而PHP脚本在取得这些字符串时,必需对这些字符串进行解码,以便继续利用。由于escape()函数采用的是unicode编码,所以同平时我们所采用的url编码有所不同,例如中文字“看”在escape()编码后会产生以%u开始的一段字符串“%u770B%”。PHP环境下并没有专门的函数来对此类编码进行解码。通过Google和Baidu的检索发现了有很多人都提出过类似的问题,其中以Neo引用日本Phper的一篇解决方案为最佳。经测试后完全可行。

贴上代码以及引用地址:

$decodestr = uniDecode($encodestr,'utf-8')

function uniDecode($str,$charcode) {
//第一个参数是待解码的字符串,第二个参数是输出时的字符编码集

$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",toUtf8,$str);

return mb_convert_encoding($text, $charcode, 'utf-8');

}

function toUtf8($ar){
foreach($ar as $val){
$val = intval(substr($val,2),16);
if($val < 0x7F){ // 0000-007F
$c .= chr($val);
}elseif($val < 0x800) { // 0080-0800
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
}else{ // 0800-FFFF
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
return $c;
}

日本phper的贡献: http://web.archive.org/web/20041031225806/http://vivian.stripper.jp/index.php?itemid=100

Neo的引用
http://www.neo.com.tw/archives/000152.html

国人phper的贡献(未测试):
http://www.hooson.cn/show.php?id=33

补记: 在测试这段代码时,mb_convert_encoding()函数也带来了一些麻烦。首先在Linux+PHP 4.4.2的环境下,提示Call to undefined function: mb_convert_encoding,编辑php.ini文件,启用mbstring.dll的引入,重启Apache后,提示依旧。后在Windows+PHP5.1.1环境下同样处理生效。原因可能是在Linux环境下必须重新编译mbstring模块才能使其生效。其实这个函数的作用只是对已经解码完毕的字符串再进行一次转码,用于显示以及浏览。如果是在utf-8环境下工作的脚本,并不需要再进行这次转换,直接输出$text即可显示,另外采用iconv()函数也可以实现相同的功能。

第九天

昨晚00点30分睡下的,晚上和董浩雱去跑步。

撇大条正常。今天早饭一个鸡蛋+一大碗豆浆+一个菜包子。

每天指标喝水8杯,喝得牙酸。。。

订了一桶威宝的CD-R,昨天送来的。把家里的小电影都转移到CD-R上了,硬盘空间腾出不少。

Wishlist里的移动硬盘估计要划掉了,以后干脆就用CD-R得了,免得资源重复。实在需要到时候搞个1G的U盘,凑活着用用应该也够了。哪来这么多重要资料啊,Seagate的CEO说的好啊,“大硬盘就是给你存色情电影的。。。”嘿嘿,真说到咱们兄弟心坎里去了。

今天天气好的话一个人去跑了,晚上还打算复习一下《计算机所网络技术》和《操作系统》,今年要未雨绸缪,不能被动复习。

周日上午和夏林约好去买皮鞋,周六可能还要去真挚服试样。

ONES

呵呵,好惊悚的标题。

原来CD-RW买来以后就不太常用,加之之前Nero无法正常使用。只有把CD-RW当成ROM来使,昨天终于决定去网上找个刻录软件,居然发现一个叫ONES的软件,600KB大小,无需安装。基本功能完全满足,Yeah! 立马将电脑中肥硕的Nero卸载掉。

绿色软件,不经意间让你见识他们的威力。

第七天

终于睡了一个好觉。

新一年的健身计划今天展开,目标彻底消灭小肚腩!

开学,开健,开源

12月3日,自考一如既往地开始了新的学期,好容易从床底下翻开一年之前的笔记和书本,种种往事又浮上心间。老课新上别有一番心境,“雄关漫道真如铁,而今迈步从头越。” 过去的也就不要再唏嘘感慨了,把握现在才是最重要的。

2007 Wish list

1,100G移动硬盘/1G U盘

2,Canon IXUS 60/800 IS

3,Omron HEM-746C电子血压计

4,Moto E680i旅冲+电池

5,护目灯

6,Dell 1907FP显示器 / iiyama HM903DTB显示器

第四天,第五天,第六天

第四天,天气降温的很厉害,日夜的温差很大。20点半去的操场,基本没什么人。花了半个小时勉勉强强跑了4km,浑身冒汗。回家冲了澡一直到02点睡的。

第五天睡到晌午,下午骑车和妈妈去试了西服。不错不错,总体还是比较满意的。晚上耐不住又出去跑了一个5km,通体湿透。可能觉着身体比较疲倦的缘故吧,23点多就睡了。

第六天上午睡觉,下午、晚上上课,精神状态不错,两堂课都没打瞌睡。晚上不知怎么地,居然跟我玩起了失眠,00点睡下一直闹到02点还没睡着。是换了厚被子的缘故还是。。。今天一早又醒了一次。算起来一晚上的有效睡眠才4个小时不到,严重不足的说。

三天内大条正常,有意识的减少了饭量。晚上把喝牛奶和吃水果的时间大大提前,避免过去胀腹入睡的状况。肚子似乎真的如愿小了一些,不知道是否是心理作祟。

Sitepoint

Sitepoint已经好几天不能访问了。之前还在看Hf's Blog上关于正则的系列教程。没想到突然之间就挂了,好像在上海的朋友都没有办法访问他,是大洋彼岸的Sitepoint出问题了?疑问。。。掺杂着担心,希望明天一早就能看到他熟悉的蓝橙相间的主页。

补记:今天通过Proxy来访问Sitepoint一切正常,难道是给GFW做了?!。。。无言

第三天

昨天午饭后,没有上楼午睡,出去走了10来分钟。晚上和董浩雱一起去操场跑了几圈,感觉还不错。23点准时上床睡觉,睡前吃了一个很小的苹果,一瓶高钙奶。昨天没有撇大条,今天上午8点起床,早饭一袋豆奶 + 一块蛋糕,骑车上班。微微有点出汗。