使用Portsnap更新Freebsd port tree

portsnap从Freebsd 6.0之后成为ports的默认部分, 从效率上来说比cvsup要快的多,因为它是一次性下载压缩包.

首先找个国内速度快的镜像
vi /etc/portsnap.conf

SERVERNAME=portsnap.hshh.org  //修改这里

直接更新
portsnap fetch update
Looking up portsnap.hshh.org mirrors… none found.
Fetching snapshot tag from portsnap.hshh.org… done.
Fetching snapshot metadata… done.
Fetching snapshot generated at Wed Dec 10 08:53:10 CST 2008:
9a1ae52a520fe4d3e68c95e6ba504df335263db970de9f 51% of   54 MB  505 kBps 00m53s

嘿嘿,速度相当的快,比cvsup爽多了.
 

跨表更新字段

语法 update table1, table2 set filed = value where condition
想使用一下WP,发现它的rss方式无法正常导入boblog的日志,只好自己sql导入.一开始没有注意到要加入第二个到update 表列表中, 如下:
 

update wp_posts set wp_posts.`post_content` =  boblog_blogs.content 

where wp_posts.`post_title` = boblog_blogs.`title`  

查了手册,修改一下,简单解决.

update wp_posts, boblog_blogs set wp_posts.`post_content` =  boblog_blogs.content 

where wp_posts.`post_title` = boblog_blogs.`title`

FreeBSD下pkg_add安装tbz包出错.

Freebsd最小化安装,版本 7.0:

想使用bash:
进入/cdrom/packages/shells

然后 pkg_add bash-3.2.25.tbz
提示: pkg_add: unable to open table of contents file ‘+CONTENTS’ – not a package?

网上搜索没有答案.  

无意中发现在/cdrom/packages/All下的都可以安装,为什么呢? 再次查看/cdrom/packages/shells下的文件,发现原来该文件夹下的文件都是硬链接文件, 郁闷….

PHPUnit简单入门

Php的测试驱动开发闻之已久,却从来没有试用过,今天又看到相关的介绍,就花了点时间简单的看了下. 以下为从官方实例翻译过的来笔记:

从一个案例开始
  通常我们在测试我们的php程序时,会使用诸如print,echo等语句来输出一些结果,以查看我们的程序是否正常或者哪里出错.例如:

<?php   

$array array();   

print sizeof($array);   

array_push($array‘newElement’);   

print sizeof($array);  

结果
0
1
这样我们就知道$array变量是我们预期的结果.现在我们希望能够直观给出测试的结果,而不是看到0, 1这样的结果后再去判断. 我们修改测试代码:

<?php   

$array array();   

print (sizeof($array) == 0) ? "OK\n" "Not Ok\n";   

array_push($array‘newElement’);   

print (sizeof($array) == 1) ? "OK\n" "Not Ok\n"

结果
OK
OK

为了方便重用及修改我们将测试代码的断言部分置于函数中

<?php   

$array array();   

assertTrue(sizeof($array) == 0);   

array_push($array‘newElement’);   

assertTrue(sizeof($array) == 1);   

  

function assertTrue($condition)   

{   

  if (!$condition)   

    throw new Exception(‘Assertion Failed!’);   

}  

 

如此我们就可以简单的实现测试的自动化了.
自动测试的目的是减少错误,使用自动测试你能够明显发现你的代码的错误的减少.还有一些其他的好处……PHPUnit的目标就是如此.那么我们开始我们的PHP Unit Test吧.

一.  安装PHPUnit需要使用Pear Installer安装, 加入phpunit频道到pear寻找频道

D:\wamp\bin\php\php5.2.6>pear channel-discover pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

安装PHPUnit
D:\wamp\bin\php\php5.2.6>pear install phpunit/PHPUnit
Did not download optional dependencies: pear/Image_GraphViz, pear/Log, use –all
deps to download automatically
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 PHP extension "pdo_sqlite"
phpunit/PHPUnit can optionally use PHP extension "xdebug" (version >= 2.0.0)
downloading PHPUnit-3.3.4.tgz …
Starting to download PHPUnit-3.3.4.tgz (268,962 bytes)
………………………………………………..done: 268,962 bytes
install ok: channel://pear.phpunit.de/PHPUnit-3.3.4

安装成功,在pear路径下即可看到PHPUnit文件夹,所有PHPUnit源码都在其中.

成功安装之后,会在PHP主目录下生成一个PHPUnit.bat的文件, 这样我们编写测试用例之后可以在命名行下使用如下的语法即可自动进行测试:
> PHPUnit test_begin.php
test_begin.php为包含了测试用例的文件

对每个测试,PHPUnit命令行测试工具打印一个字符表示进程:

  测试成功打印“.”。

  运行测试方法发生了断言失败打印“F”。

  运行测试方法发生了错误打印“E”。

二.  开始一个简单的示例
对于刚刚在开始中的示例(测试数组大小),我们可以使用PHPUnit来编写自动化测试代码了:

<?php   

//filename: test_begin.php   

  

require_once(‘PHPUnit/Framework.php’);   

  

class ArrayTest extends PHPUnit_Framework_TestCase   

{       

  public function testNewArrayIsEmpty()       

  {           

    // 定义一个数组变量           

    $fixture array();            

    // 断言数组的大小为0.           

    $this->assertEquals(0, sizeof($fixture));       

  }        

     

  public function testArrayContainsAnElement()       

  {           

    // 定义一个数组变量           

    $fixture array();            

    // 为数组变量增加一个元素           

    $fixture[] = ‘Element’;            

    // 断言该数组大小为1           

    $this->assertEquals(1, sizeof($fixture));       

  }   

}  

 

> PHPUnit test_begin.php
结果:
PHPUnit 3.3.4 by Sebastian Bergmann.

..

Time: 0 seconds

OK (2 tests, 2 assertions)

..  表示两次测试成功

这个例子显示了使用PHPUnit编写测试用例的基本步骤:
1.  测试类名为ClassTest,其中Class为你的对象名
2.  测试类ClassTest通常派生自PHPUnit_Framework_TestCase
3.  测试通常是一些名称为test*的公共方法. 另一种方法是, 你可以在方法的注释说明中使用@test 标记来表明这是一个测试方法.
4.  诸如assertEquals之类的方法用以测试一个实际值同预想值是否相对.

一个测试方法可以接受任何的参数(任意类型和数量), 参数通过provider()方法来提供,或者同测试方法一下,使用@dataProvider注释标记来标明.关于provider()的返回参数也有一定要求: 要么是数组(每个数据作为一个参数, 数组中可以包含多组参数), 要么是实现了Iterator接口的对象

 

<?php   

class DataTest extends PHPUnit_Framework_TestCase   

{   

    /**  

     * @dataProvider provider  

     */  

    public function testAdd($a$b$c)   

    {   

        $this->assertEquals($c$a $b);   

    }   

    

    public function provider()   

    {   

        return array(   

          array(000),   

          array(011),   

          array(101),   

          array(113)   

        );   

    }   

}  

?>

 

 

结果:
PHPUnit 3.3.4 by Sebastian Bergmann.
…F
Time: 0 seconds
There was 1 failure:
1) testAdd(DataTest) with data set #3 (1, 1, 3)
Failed asserting that matches expected value .
D:\wamp\www\Test\php\unittest\data_provider.php:9

FAILURES!
Tests: 4, Assertions: 4, Failures: 1.

…F  表示三个测试成功,一次测试失败.
到此就可以简单的使用PHPUnit了,当然PHPUnit的功能远不止此,测试人员应该好好学习一下. 

 

upload.class.php的一点改进

/**
*
* @version $Id: upload.class.php,v 1.4 2007/04/27 00:52 xm.zhuge Exp $
* @copyright (c) 2007 Nandou Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/

*优化了结果信息提示
*更改了默认构造函数的实现,方便参数传递
+增加文件保存路径统计,文件上传数目统计

代码下载

upload.class.package.php 1.2.0(文件上传组件)

upload.class.package.php 1.2.0(文件上传组件)
/**
*
* @package NdPhp
* @version $Id: upload.class.package.php ,v 1.2.0 2007/04/25 11:45:24 xm.zhuge Exp $
* @copyright (c) 2007 Nandou Studio
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
+多文件上传表单生成
+多文件上传处理
+取消最终结果自动输出,方便同模板结合输出
*重命名文件名修正
……

代码下载

NdUpload套件1.0.1

NdUpload套件包含两个文件:NdUpload.php和NdUploadForm.php,分别是文件上传类和表单生成类。

更新日志:
2007-04-11 20:40 , v 1.0.1
*改进了文件类型识别方式

代码下载

表单生成类NdUploadForm

——————————————————————————–

系统环境:Windows XP SP2 + php 5.2.1 + mysql 5.0 + Apache 2.2.24
开发环境:Zend Studio 5.5
参数: safe_mode = Off
error_reporting = E_ALL & ~E_NOTICE
register_globals =Off
magic_quotes_runtime = Off

——————————————————————————–
(全文…)

Pages: 上一页 1 2 3 4 5 6 7 8 下一页