msgbartop
坚持原创
msgbarbottom

06 May 08 php中使用单元测试的艺术

关于测试的谬误:
1.时间消耗大
2.代码过于复杂,无法测试
3.只要可以工作,我不需要测试
4.测试很无聊

让我们一一打破这些说法:
1.说测试占用时间,这要看你怎么看待时间的价值,我的答案是,测试会节省你未来修改代码时的时间,如果你是一气呵成,从不修改和重构代码,那单元测试可能对你没用,或者你的整个应用简单之至,一两百行代码就搞定,那单元测试可能对你没用。单元测试,当我们写代码时,我们可以用单元测试来验证单独的类或方法,或对某个需求或一组操作进行单元测试,

2.对于代码过于复杂,无法测试的答案,这并不是单元测试的错,而是你的错,是你编写了不实用的代码。如果在你写代码的同时,进行了单元测试,就不会发生这种情况,而且这也是一种降低代码间耦合的好方法。
3.可以工作的代码,和可以工作的测试,是不同事物。测试保证当你添加新功能,重构或做新的修改时,不会影响到程序的完整性,一旦有失败产生,可以迅速定位到错误。对于团队中不熟悉程序代码的新成员,可以一下看到他们所范的错误,帮助他们更好的理解程序和定位错误

进阶:TDD 测试驱动开发
面对一个全新的项目,我们经常遇到,无所适从不知从何入手的情况,或者我们根据经验,把需求拆分成独立的小块

(未完,持续改进中。。。。。)

13 Mar 08 时间用法备忘

每天开始时间戳 mktime(0,0,0);

每周开始时间戳 :
$cur_weekday = date(’N');
$start = strtotime(”-{$cur_weekday} day”)+86400;
$start = strtotime(date(”Y-m-d 00:00:00″,$start));//去掉多余的时间,从周一0点开始

每月开始时间戳:

$cur_month = date(’n');
$start = mktime(0,0,0,$cur_month,1);

21 Oct 07 PHP Security Note:Suhosin

FreeBSD下的php.ini配置文件中,强烈推荐不要依赖PHP的安全模式,主要是因为扩展库(external libraries)的原因,安全模式所要解决的问题不能被正确处理,以往修复了很多问题,而且还有可能存在更多的问题允许用户绕过安全模式的约束。对于增强性安全的要求,FreeBSD推荐使用Suhosin扩展。(以下大致翻译自Suhosin官方文档)

概述

Suhosin设计的目的一方面是保护你的服务器抵御一些周知的安全问题,另一方面防止php应用程序或PHP核心本身未知的潜在的脆弱性。Suhosin包括两个独立的部分,既可以单独使用也可以组合使用。第一部分是一个对PHP核心的小的补丁,在底层实现了对缓冲区溢出或格式化字符(format string)脆弱性的保护;第二部分是个强大的PHP扩展,实现了所有其他保护。Suhosin还提供了同象ZendOptimizer这样的第三方二进制扩展的兼容性。
(more…)

08 Sep 07 php4即将退出历史舞台

今天才看到php.net上发布的公告,已经发布将近两个月了,留作回忆:

“2007年7月13日,3年前的今天PHP5正式发布,过去的3年里php5的性能已经大大超越PHP4,PHP6发布在即,php4即将结束.

2007年12月31号以后,将不会有新版本发布,截至版本为4.4(挺搞笑个版本号,命啊,呵呵) ,修改严重安全隐患的截至日期2008-8-08(北京奥运会开幕那天,呵呵,老外也喜欢吉利数字)

然后大概就是说赶快用这段时间把代码转移到PHP5上来吧。给出了相关链接如下:

php4到php5的转换

php5.0到5.1的转换

php5.1到5.2的转换

05 Sep 07 Pear

(大致翻译自官方文档,摘录请标明出处)

在php里Pear可不是梨子,他的全称是“PHP扩展和应用库”,PEAR的目的是提供:

1.为php用户提供一个结构化的开源php代码库;
2.代码分发和包维护系统
3.php标准代码风格
4.php扩展共享库
5.一个用来支持PHP/PEAR社区的网站、邮件列表或下载镜像

PEAR是一个由它的开发者支配的社区驱动项目。

结构化的库和php应用程序

PEAR代码用包(Packages)来分割,每个包都是各自独立的项目,有他自己的开发团队和版本号,发布周期,文档和与其他包的依赖关系。包用gzip压缩过的tar包发布,内置一个简单说明文件,用PEAR Installer安装到你的系统上。

包通过严格的依赖关系彼此相关,但是在基于包名称的包之间却没有自动的依赖关系。例如, “HTTP_Post” 默认情况下独立于 “HTTP”,不禁止相似名称包之间的依赖关系,例如,“DB_DataObject”依赖于“DB”包。

一种风格指导,PEAR编码规范-the PEAR Coding Standards (short PCS), 在PEAR开发者间协作。加强代码质量,加强作为PEAR包发布的源代码的协同表现。

代码分法和包维护

所有的PEAR包在pear.php.net 中心服务器上注册和下载, 第三方服务器叫做“频道”(channels),也可以发布用PEAR Installer安装的包。更多信息点击“频道列表”。pear.php.net并不认可来自这些频道的包,仅且支持那些发布自pear.php.net的包。

Pear.php.net不仅提供供人们阅读的HTML文档 ,还提供“机器友好的”(目前是REST)接口,所有的通讯通过HTTP协议,pear.php.net站点提供的其他功能:

  • 用户账户管理 (independent of the CVS server)
  • package management
  • release management

包用gzip压缩的tar包发布,内置XML描述文件(package.xml),包含关于包的描述信息,文件列表和它们的角色,依赖关系等。

PHP 扩展共享库 (PECL)

PECL作为php扩展的一个分割项目发布(用C语言编译,象PDO扩展),PECL也用包的形式发布,并用PEAR installer的pecl命令来安装。
更多信息和全部包可以访问http://pecl.php.net/