发布新日志

  • Subversion Commit E-mail Notification configuration

    2009-04-02 15:49:06

    If you want to get the notification email about the code update when a team member commits the code. And the mail contains the Author, Date, Modified,Log and Commit information, just like the following type:

    Author: lulei

    Date: 2009-04-02 15:12:50 +0800 (Thu, 02 Apr 2009) New Revision: 6615

     

    Modified:

       nat/7.Test/test_file/test2.txt

    Log:

    Commit: Test for the commit notification. 

    Modified: nat/7.Test/test_file/test2.txt ===================================================================

    --- nat/7.Test/test_file/test2.txt  2009-04-02 07:08:21 UTC (rev 6614)

    +++ nat/7.Test/test_file/test2.txt  2009-04-02 07:12:50 UTC (rev 6615)

    @@ -8,5 +8,23 @@

     

     test it again when updating the repository of subversion.

     

    +test it again when updating the repository of subversion.

    +

    +test it again when updating the repository of subversion.

     

    This function is very useful and helpful to managers, but it needs more extra effort.

     

    But it can be done by using the svn inbuilt hooks.For more information about the hooks, please refer to the manual of Subversion.

     

    OK, let's do something for the mail notification.

     

    First, you can access the website:http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/commit-email.pl.in, and stored the file "commit-email.pl.in" into your local disk.

     

    Secondly,please copy the file "commit-email.pl.in" into the hooks directory of your Subversion repository, mine is "/svnroot/repo/hooks".

    And then renanme the file "commit-email.pl.in" as "commit-email.pl".Defaultly, I thought you have installed perl on your server.

     

    OK, cd to the hooks directory inside of your repository, rename the post-commit.tmpl to post-commit, and then chmod 755 to post-commit and commit-email.pl. Now, let's open the post-commit with your favorite editor, and put the following content at the bottom of the file:

    /usr/bin/perl /svnroot/repo/hooks/commit-email.pl "$REPOS" "$REV" --from subversion_notifcation@example.com -s 'SVN Commit Notification' user_whom_to_notify@example.com another_user_whom_to_notify@example.com

    And then open the file "commit-email.pl" and make changes to the configuration according to your own requirement and server, sepcillay the svnlook path.

     

    Congratulations! You are done, :)

     

    Now the email address user_whom_to_notify@example.com, anthor_user_whom_to_notify@example.com will get the notification emails whenever someone commits codes.

     

    Hope this article is helpful to you.

     

    So far, I still have an problem about the environment variables.Because sometimes you can not get the right result because of the variables.

    OK,if any problems, you can contact me.

     

     

  • Linux下Subversion的安装与配置.

    2009-03-31 09:45:44

    Subversion的版本控制以及代码管理功能相当优越,这也是为什么CVS正逐渐失势的原因.还有Subversion可以和很多IDE集成如eclipse等.更多Subversion的优点,可以去网上查看.

    今天主要记录一下Subversion在Linux平台下的安装与配置过程.

    Subversion的获取路径:http://subversion.org/

    本例以安装Subversion-1.5.0-tar.gz为基础.

    1.解压安装Subversion-1.5.0-tar.gz

    #tar -xzvf Subversion-1.5.0-tar.gz

    #cd Subversion-1.5.0

    #./configure --with-apx=usr/local/apache2/bin/apx --prefix=usr/local/subversion

    #make

    #make install

    2.创建Subversion代码仓库.

    #svnadmin create /var/repo

    使用如下命令将代码仓库目录所有者权限设置为用户user1

    Chown -R user1:user1 /var/repo

    3.配置Apache服务器(默认Apache Server已安装)

    加载SVN模块,在httpd.conf文件中找到如下三行并去掉前面的注释符号:

    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule dav_module modules/mod_dav.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    然后再文件末尾添加如下内容:

    <Location /svn>

    DAV svn

    SVNPath /var/repo/

    AuthzSVNAccessFile /usr/local/apache2/conf/authz.conf

    AuthType Basic

    AuthName "Subversion Repository"

    AuthUserFile /usr/local/apache2/conf/usrpwd

    Require vaild-user

    </Location>

    配置验证方式,使用Apache的验证方式.

    #htpasswd -cm /usr/local/apache2/conf/usrpwd user1

    根据提示输入密码,实现创建用户.

    配置authz.conf文件.它是用来控制用户访问仓库权限的

    [repo:/]               //这表示,仓库repo的根目录下的访问权限
    user1 = rw             // repo仓库user1用户具有读和写权限

    #[/]                   // 这个表示在所有仓库的根目录下
    #* = r                 // 这个表示对所有的用户都具有读权限


    #[groups]                             // 这个表示群组设置
    #svn1-developers = user1, user2       // 这个表示某群组里的成员
    #svn2-developers = user2


    #[svn1:/]            
    #@svn1-developers = rw                // 如果在前面加上@符号,则表示这是个群组权限设置

    重启Apache,就可以通过如下URL访问仓库了:

    http://localhost/svn/repo

    这里必须是合法的用户才可以登录访问.也可以通过某些客户端软件访问,如TortoiseSVN等.

     

  • Subversion+Bugzilla+Codestriker CM Environment Integration

    2009-03-31 09:36:10

    参阅本资料,本管视读者已掌握MySQL,Apache Server基本使用以及相关的Linux环境下的常用命令.

    Requirements:

    Subversion的成功安装与配置,可参考本管之前的日志:http://www.51testing.com/?uid-75198-action-viewspace-itemid-113835

    Bugzilla的成功安装与配置,可参考本管之前的日志:

    http://www.51testing.com/index.php?uid-75198-action-viewspace-itemid-97966

    Codestriker的安装,具体步骤记录如下:

    Codestriker的当前最新版本是:1.9.8, 获取地址:http://codestriker.sourceforge.net/

    1.创建Codestriker数据库:

    #mysql -uroot -p×××      //进入mysql

    #CREATE DATABASE codestrikerdb CHARACTER SET utf8;

    GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,REFERENCES
    ON codestrikerdb.* TO codestriker@localhost IDENTIFIED BY 'cspasswd';

    FLUSH PRIVILEGES;

    QUIT

    2.配置Codestriker.

    #tar zxvf /var/www/codestriker-1.9.8.tar.gz

    #chown -R apache.apache /var/www/codestriker-1.9.8

    这里的apache是指Apache服务的用户.根据实际情况自行调整.

    3.配置codestriker.conf

    Codestriker数据库参数配置配置:

    $db = 'DBI:mysql:dbname=codestrikerdb';
    # Database user.
    $dbuser = 'codestriker';     //数据库用户
    
    # Database password.
    $dbpasswd = 'cspasswd';	  //用户密码
    E-Mail配置:
    根据实际情况进行配置.主要有以下几个参数:
    # Location of the mailing host.  This is used when sending out # codestriker comments.
    $mailhost = 'localhost';
    # Set the user and password parameters if $mailhost requires  
    # SMTP authentication.  If commented out, it is assumed         # thentication  is not required.
    $mailuser = 'smtpuser';
    $mailpasswd = 'smtppasswd'
    Subversion配置:
    # Location of the svn binary.
    $svn = '/usr/local/subversion/bin/svn'; #subversion install path
    @valid_repositories =
    (
    'svn:file:///svnroot/repository',
    );
    $repostitory_name_map = 
    {
    'svn:http://URL/visit/Subversion;username;passowrd' => 'Input what you want'
    example: 'svn:http://127.0.0.1/repo;tom;tom' => 'repo name'
    };
    Bugzilla配置:
    主要如下几个参数需要进行配置:
    # Bug tracking type.
    $bug_db = 'bugzilla';
    # Bug database connection details.
    $bug_db_host = 'localhost';          //bugzilla数据库所在主机
    $bug_db_name = 'bugs';               //bugzilla数据库名  
    $bug_db_password = 'bugs_password';  //bugzilla数据库密码
    $bug_db_dbname = 'bugs';             //bugzilla数据库名  
    
    
    # Bugzilla codestriker user id.
    $bug_db_user_id = '2';
    user id可根据实际情况进行配置,具体可使用如下命令查询实际user id:
    SELECT userid FROM profiles WHERE
    login_name = 'codestriker@yourhost.yourdomain';
    # The URL to the bug tracking system.  The bug number is appended to the
    # end of this string when URLs are generated.  This can be left blank if
    # there is no need for bug-tracking integration.  Below are some example
    # URLs for Bugzilla and Flyspray.
    #$bugtracker = '';
    $bugtracker = 'http://localhost/bugzilla/show_bug.cgi?id=';
    #$bugtracker = '/flyspray_dev/?do=details&id=';
    codestriker.conf文件中的其他参数可选,根据实际情况进行配置即可.
    4.运行install.pl文件.
    # cd /var/www/codestriker/bin
    # ./install.pl
    根据提示安装缺失的perl模块.
    5.配置Apache Server.
    在httpd.conf文件末尾添加如下内容:
    ScriptAlias /codestriker/  /var/www/codestriker/codestriker-1.9.8/cgi-bin/
    Alias /codestrikerhtml/  /var/www/codestriker/codestriker-1.9.8/html/
    
    <Directory "/var/www/codestriker/codestriker-1.9.8/cgi-bin/">
       AllowOverride None
       Options ExecCGI
       Order allow,deny
       Allow from all
       SetHandler cgi-script.
    </Directory>
    
    <Directory "/var/www/codestriker/codestriker-1.9.8/html/">
       AllowOverride None
       Allow from all
    </Directory>

    最后重启Apache Server.即可通过如下URL访问codestriker,并在其中查看相关bugzilla信息以及svn代码review.

    http://localhost/codestriker/codestriker.pl

    关于svn提交代码时自动在codestriker中创建topic,需要根据实际情况修改svn参考conf目录下的post-commit.pl文件.若配置成功的话在提交代码时会有相关信息显示topic等.

    至此codestriker+subversion+bugzilla的集成环境配置完毕.

     

     

     

     

  • Linux 常用命令总结

    2009-02-10 14:30:54

    1. Linux图形界面与文本模式切换命令

    方法一:

       图形界面下,打开终端,输入 init 3 进入文本模式.

       进入文本模式后, 输入命令 init 5 可返回图形界面.

    方法二:

       图形界面下,使用组合键:Ctrl+Alt+F1~F6,进入文本模式. Ctrl+Alt+F7,返回图形模式

       Ctrl+Alt+F1, 直接进入文本模式下的home目录

       Ctrl+Alt+F2, 直接进入文本模式下的根目录"/"

       Ctrl+Alt+F3, 直接进入文本模式,但需要输入用户名密码进行验证登录

       Ctrl+Alt+F4/F5/F6, 直接进入文本模式,但均需要输入用户名密码进行验证登录

    2. 目录切换

       目录切换命令:cd 目标目录, 如: cd /usr/local/,回车进入/usr/local/目录下

       cd .. 返回上一级目录

       cd / 返回根目录

    3. 列出目录内容

       列出目录内容命令: ls 参数

       ls -l, 每列仅显示一个文件或一个目录

       ls -a, 目录下的所有文件和目录

       ls有很多参数,具体功能可用man查看使用方法.

    4. man命令的使用

       man命令可以用来查看一些命令的功能及参数,

       如:man cd (查看cd命令的使用方法), 回车可显示cd命令的所有功能及用法.

       退出man命令界面, 在终端显示的冒号后输入字母q,即可退出.

    5. lsb_release -a

       可用来查看系统等版本信息.

       cat /etc/redhat-release

       直接查看操作系统版本.

      

    待续...

     

  • Samba服务配置

    2009-02-03 16:59:28

    Samba服务的配置主要有以下几点需要注意:

    1.创建Samba服务器待认证用户

      使用useradd或adduser命令创建用户如"test", adduser test

    2.把Unix用户转换成Linux & Samba & Windows用户,并生成smbpasswd文件

      使用如下命令执行此步操作:

      cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    3.使用smbpasswd命令修改刚才创建的用户"test"密码

      smbpasswd test

      根据提示输入新密码

    4.编辑SAMBA的配置文件(smb.conf,改文件一般存在/etc/samba/目录下), 你要确定加入或减去下列标有comment的可选项:

    netbios name = SMBServer
    workgroup = THEDOMAIN
    server string = Linux Samba NT Server
    log file = /var/log/samba/%m.log
    max log file = 0
    security = user
    encrypt password = yes
    smb password file = /etc/samba/smbpasswd
    ssl CA certificate = /usr/share/ssl/.... (cancel comment)
    socket ōptions = (cancel comment)
    local master = yes
    preferred master = yes
    domain master = yes
    domain logons = yes
    logon scrīpt = logon.bat
    wins support = yes

    5.创建共享资源,根据需要进行设置

    [netlogon]
    comment = Initialization scrīpts
    path = /home/netlogon
    read ōnly = yes
    guest ōk = yes
    browseable = no

    [home]
    comment = User Directory
    path = /home/%U
    browseable = yes
    writable = yes

    [public]
    comment = Public Directory
    path = /home/public
    browseable = yes
    writable = yes
    guest ōk = yes
    create mask = 0777
    force create mask = 0777

    修改完配置文件后,重启samba服务:#service smb restart

    然后就可以通过windows访问linux相应目录了.

  • 不能这么沉沦下去...

    2008-12-26 14:13:40

    最近发生了一些事情,不想说的太明白,但是它们确确实实的影响了我的心情.

    然后这两天我也发现自己早上起床的动力有点不足了,开始想赖床了.说实话我很讨厌赖床的时候还想着我不能样子的想法.所以一般我会选择在周末休息的时候好好休息一下,然后在平时上班时间准时起床,出门.

    可能是天开始真正冷了吧,可是这不应该是原因啊.我已经进入了人生另一个最重要的阶段,我想对自己说:"向着目标沉稳的走下去".没有什么事业是可以在被窝里完成的.加油...

  • 圣诞大战湖人众将完成救赎

    2008-12-26 14:07:09

    92-83, 圣诞大战的比分最终定格在这里.

    回想6个月前的那个夏天,TD北岸花园球馆那个孤寞的背景,至少我会一直铭记.NBA的宣传片里也会帮你回想那段历史.

    6个月后NBA历史上里最有渊源的宿敌再次相遇,湖蜜和凯蜜在今天来到之前已经乱七八糟的喷了好久.但是总体看起来还是凯蜜们比较强势.依仗celtics严密的团队防守,他们已经拿到19连胜,凯蜜们也是相当看好BIG3踩着湖人队尸首完成20连胜.

    比赛结束了,凡是有关圣诞大战报道的网页里开始热闹了...,看得出来湖密们很满意这场比赛,确实这是一场伟大的比赛...

    预测湖人接下来至少会有一波10连胜,因为这场比赛他们重新收获了信心,收获了一场重要的胜利.

    关注中...

  • LAL两连败

    2008-12-22 10:47:04

    昨天LA Lakers继2分败给Miami Heats后, 再一次折戟Orlando, 首尝赛季2连败...

    Kobe Byant也在昨天的比赛中刷新个人赛季得分新高,41分, 可是球队还是输了球.Lakers的防守依然是老问题, 就像老温特说的:"防守是态度问题", 我觉得Lakers目前还没有把防守放到第一位, 1号位的问题有些被放大, 在三角进攻中, 只要求转移到流畅, 队员跑位合理, 这都不是问题. 现在的湖人想要击败Boston Celtics还有很大难度.

    我有一种感觉这两场比赛可能是Phil的安排, 昨天在比赛最关键的时候Phil没有暂停, 还是让队员再场上去处理不利的局面.不过这已经是老帅第一次这么做了. 可能他已经预感到可能会输球, 但是他没有阻止. 或许他是在为圣诞大战而蓄力吧.这个时候就更期待周五的比赛了.

    提到Phil, 不由得想起来Popovic, 这个赛季蓄须而来, 造型甚为惊人, 确实有几分教父的感觉, 狡猾的波波加上那一头雪白的头发和胡须, 让我有理由相信这个赛季San Antonio Spurs一定会努力实现奇数年定律的.

  • 又快过年了...

    2008-12-22 10:25:35

    又快过年了...

    没一点点激动和兴奋, 前些天又发现多了两根白发, 很白很白, 从发梢到发根都白了, 白的有些晶莹剔透.

    是不是我已经到了白发的年龄了? 一到阴天, 心情还是莫名的低落, 心很虚, 盼着回家, 可又不知道回去除了看

    看父母还有什么可以做的.

  • KG, PP34 and Ray Allen turned on a new leaf in their history

    2008-12-12 17:07:15

    Celtics今天创造了队史上一项新纪录, 21(胜)-2(负)的战绩超过了上个世纪中下叶的最好记录20-2.

    今天KG, Ray Allen, PP34在整个对阵Washington的比赛中再一次向世人展示了celtics这个赛季势要卫冕奥

    布莱恩杯的决心和能力.对于Celtcis整体防守能力,我们现在不得不承认是联盟第一.

    期待明天CP3带领大黄蜂和celtics的那一战, 我相信今年东部的小皇帝也足以给celtics带来很好的考验,期待

    Celtics和湖人会师总决赛啊.虽是kobe的球迷,我不得不说今年湖人队防守跟cletics相比还差很多啊, 期待湖

    人再硬朗一些!两虎相争的日子就来了哦,12/26号的圣诞大战一定不能错过.

     

  • 去年的最佳教练也被炒鱿鱼了!

    2008-12-04 14:20:55

        季前听闻小奥尼尔被卖到猛龙了,感觉这下Chris Bosh要爽歪歪了:"终于给老子找来个不错的内线搭档了". 于是猛龙在接下来开始的preseason game里的表现给了人些许期待. Bosh的状态也好的出奇, 场均得分列联盟前列."MVP?Why not?",Bosh如是说.可见其自信爆炸当量足以比拟当初美国人扔在日本头上的原子弹.
        "萨姆.米切尔被炒鱿鱼了!", 不会吧, 可是这就是NBA, 什么都有可能发生!于是米切尔也成为继艾迪.乔丹之后成为联盟这个赛季第三位被炒得主帅.难怪猛龙队管理层不爽,球队有内有外,现在的战绩却越打越差,远跌出人们的期望.
        这个赛季之前还是公认的联盟强队的太阳,在这个赛季开始后就已经彻底沉沦下去,丝毫看不出有什么要恢复的迹象.所以本人也预测如果小牛以及太阳再打不出应有的成绩,教练必然也会下课,而且这两支球队在2010年彻底重建.
  • 哥们搬走了.....

    2008-12-04 14:05:11

    很郁闷啊, 我的哥们胡搬到别的地方住了.....
    今后找他打球就不方便了,最近在修炼斯诺克,呵呵,争取明年报名苏州的业余斯诺克比赛.
    可能有点不知天高地厚哦,挺感兴趣的,即使上去就被淘汰下来也没什么,也是个学习的机会啊!
  • 我的NBA

    2008-12-04 14:02:06

    今天在这添加个NBA模块, 偶尔来聊聊NBA发生的大事. 呵呵, 拙见, 望见谅. 欢迎批评指正.


  • Linux下Bugzilla安装与配置

    2008-11-20 11:46:36

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

    Bugzilla的安装配置,其实也没有传说中的那么困难,问题就在没有经验.刚刚完成bugzilla的配置,我想记录下来我的详细安装过程,一是留点记录进一步记忆理解,二是供朋友们参考. 好了言归正传!

    (以下所列皆为本人安装配置过程中的所用资源,不同版本的文件,系统等参照本文安装不保证一定成功)

    OS: Linux Red Hat Enterprise 5 (确保gcc编译器等都已安装上去,手工安装gcc比较麻烦)

    DB: MySQL-server-community-5.0.67-0.rhel5.i386.rpm, MySQL-client-community-5.0.67-0.rhel5.i386.rpm, MySQL-devel-community-5.0.67-0.rhel5.i386.rpm, MySQL-share-compat-5.0.67-0.rhel5.i386.rpm, MySQL-share-community-5.0.67-0.rhel5.i386.rpm. (http://www.mysql.org)

    Apache: httpd-2.2.3-6.el5 (http://www.apache.org)

    Bugzilla: Bugzilla-3.2rc2(目前是最新的稳定版本, http://www.bugzilla.org)

    开始安装:

    前提Linux平台都已搭建完备,本文以此为基础,Linux安装不作赘述.

    安装配置mysql

    1.安装mysql,顺序:MySQL-server***.rpm, MySQL-client***.rpm, MySQL-share-community***.rpm, MySQL-devel***.rpm, MySQL-share-compat***.rpm.

    2.初始化数据库: 输入如下命令为root添加密码, (真该死这个破blog不能方便贴图)!

    输入:/usr/bin/mysqladmin -u root password '你的密码',如你使用123456作为密码,则输入:/usr/bin/mysqladmin -u root password 123456 即可.

    3.创建bugs用户,并分配权限.(注:bugzilla-2.18rc1版本后已经不需要用户自己创建bugs数据库了,用户只需创建bugs用户即可)

    进入mysql(输入命令:mysql -uroot -p, 回车后根据提示输入刚才你初始化的密码), 登入mysql后查看现有数据库情况,输入命令如下,

    mysql>show databases;(别忘了这里的分号,该命令将显示所有database,初始默认有: information_schema, mysql, test)

    输入如下创建bugs用户并分配权限:

    mysql>GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP, REFERENCES ON bugs.* TO bugs@localhost INDENTIFIED BY '$db_pass';

    mysql>FLUSH PRIVILEGES;

    注: '$db_pass'为bugs用户的密码,随你设定,但一定要紧记此密码,下面将会用到. 本人设为bugs,即输入 GRANT ... BY 'bugs';

    至此数据库方面配置完毕!

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

    配置apache

    关于apache的学习资料进apache官网:http://www.apache.org,查找学习,这里不做介绍.

    最新版本的apache需要修改的地方不多,主要有3个地方要注意:(修改配置文件httpd.conf即可,该文件一般存在你安装路径的/conf/下,若使用Linux系统自带的apache,则可到/etc/httpd/conf/查找, vi编辑保存)

    a.DocumentRoot,需要设置为你的bugzilla文件所在路径,以及<Diretory "你的bugzilla文件所在路径">

    b.使用"./"找到AddHandler.cgi这行内容,去掉注释,如果已经去掉,保留即可.如果不添加该语句,会把cgi文件中的内容当成文本形式显示出来,而不是运行cgi程序.

    c.创建一个目录的权限说明, 一般如下所示:本例中bugzilla所在路径为:/var/www/html/bugzilla

    <Directory "/var/www/html/bugzilla">

      Options ExecCGI FollowSymLinks

      AllowOverride Limit

      Order allow,deny

      Allow from all

    </Directory>

    主要修改的内容是, 在Options中增加ExecCGI,该选项让该目录下的CGI脚本可以运行. 其次把AllowOverride的参数改为Limit, 这样修改可以让bugzilla通过生成.htaccess文件来控制目录的访问权限.

    至此apache配置完毕!记得apache配置完毕后,要重启啊,这样你的配置才会生效!

    配置bugzilla

    bugzilla的运行还需要perl的一些模块的支持, 在这提供一个网站www.cpan.org, 该网站提供了perl所有的模块, 用户可以在这search所需的perl模块.好了,下面开始!

    cd 到你bugzilla所在的目录, 如:cd /var/www/html/bugzilla/

    执行./checksetup.pl文件,查看perl模块情况.直接在输入:./checksetup.pl,回车即可.接下来会给出很多信息,仔细看你会发现有些模块已经安装ok,并给出版本,如:CGI.pm (v3.21)   ok: found v3.42,但是初次安装会有很多模块缺失,会提示not found等信息.

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

    关于安装perl缺失模块,有2个方法:

    1. 如果网络连接正常,可尝试网络安装,根据运行./checksetup.pl后的提示信息输入,即可自动下载安装缺失模块,此方法最为方便,运气好的话,可能一次性就OK.

    此处以安装perl-Magick为例:输入 /usr/bin/perl install-module.pl Image::Magick, 即可.

    2. 手动安装,需要到www.cpan.org下载相关模块,此过程较为复杂(因为模块间存在依赖关系,不是每个模块都是一次安装就OK的),但可加深理解.手动安装过程中,有以下几点需要注意:

    a.一般情况下Linux自带的perl已经有了DBI模块,此时根据提示正常安装DBD-mysql即可.若perl的DBI模块还没有的话,又或是Linux没有安装perl,则到www.perl.org下载最新的perl模块安装。

    b.perl模块的的安装方法多为:

    perl Makefile.PL

    make

    make test

    make install

    到此应该知道为什么强调要安装gcc编译器了吧?

    有些模块之间存在依赖性, 若make test过程中,产生异常可于make install后,重新执行perl Makefile.PL命令,此时可看到安装异常的原因.若存在模块依赖,则会提示需要安装相应模块.

    当perl的必须模块以及数据库的DBD都安装成功后,再次执行./checksetup.pl文件,查看perl模块的安装情况,若必须的perl模块都安装成功后,则会提示编辑/bugzilla/目录下刚生成的的localconfig文件, 使用vi编辑该文件,修改该文件中的2个参数的值:

    a. $index.html='0' 改为 $index.html='1', 这样会生成一个index.html文件,该文件指向index.cgi.

    b. 把$db_pass=''的空字符改为你当初创建bugs用户时为其分配的密码.

    保存修改后退出,再次执行./checksetup.pl文件,此时将创建bugs数据库以及数据库中的表格,同时提示输入管理员的用户名, 真实姓名, 口令是什么. 自此bugzilla的配置完成.

    注:提示输入管理员的用户必须使用邮箱名称,如:test@163.com, 这是bugzilla的默认规定.

    最后使用浏览器打开bugzilla地址,进入第一次登陆界面.

    如果出现提示没有权限访问bugzilla的话,则说明bugzilla目录权限需要重新设置,可使用如下命令修改目录权限: chown -R apache.apche <Bugzilla目录名>,然后重新访问就可以了.

    OK,终于总结完毕了,有问题留言吧,我会及时上来看的,谢谢!

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

     

     

  • 网站测试的系统测试方法

    2008-09-16 11:09:44

    Web的系统测试方法

    随着Internet和Intranet/Extranet的快速增长,Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,电子商务迅速增长,早已超过了国界。范围广泛的、复杂的分布式应用正在Web环境中出现。Web的流行和无所不在,是因为它能提供支持所有类型内容连接的信息发布,容易为最终用户存取。

      Yogesh Deshpande和SteveHansen在1998年就提出了Web工程的概念。Web工程作为一门新兴的学科,提倡使用一个过程和系统的方法来开发高质量的基于Web的系统。它"使用合理的、科学的工程和管理原则,用严密的和系统的方法来开发、发布和维护基于Web的系统"。目前,对于web工程的研究主要是在国外开展的,国内还刚刚起步。

      在基于Web的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大。而且,随着基于Web的系统变得越来越复杂,一个项目的失败将可能导致很多问题。当这种情况发生时,我们对Web和Internet的信心可能会无法挽救地动摇,从而引起Web危机。并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。

      在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术。

      一般软件的发布周期以月或以年计算,而Web应用的发布周期以天计算甚至以小时计算。Web测试人员必须处理更短的发布周期,测试人员和测试管理人员面临着从测试传统的C/S结构和框架环境到测试快速改变的Web应用系统的转变。

      一、功能测试

      1、链接测试

      链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。

      链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。

      2、表单测试

      当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。

      3、Cookies测试

      Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。

      如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。

      4、设计语言测试

      Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、Javascrīpt、ActiveX、VBscrīpt或Perl等也要进行验证。

      5、数据库测试

      在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。

      在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。

      二、性能测试

      1、连接速度测试

      用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。

      另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。

      2、负载测试

      负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求?

      3、压力测试

      负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。

      进行压力测试是指实际破坏一个Web应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。

      压力测试的区域包括表单、登陆和其他信息传输页面等。

      三、可用性测试

      1、导航测试

      导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?

      在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。

      导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。

      Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。

      2、图形测试

      在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:

      (1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。

      (2)验证所有页面字体的风格是否一致。

      (3)背景颜色应该与字体颜色和前景颜色相搭配。

      (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。

      3、内容测试

      内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。

      信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的"拼音与语法检查"功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关文章列表"。

      4、整体界面测试

      整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个Web应用系统的设计风格是否一致?
    对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般Web应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。

      对所有的可用性测试来说,都需要有外部人员(与Web应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。

      四、客户端兼容性测试

      1、平台测试

      市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。

      因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。

      2、浏览器测试

      浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、Javascrīpt、ActiveX、plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,Javascrīpt是Nets
  • 测试人员容易遗漏一些隐藏的缺陷

    2008-09-16 11:08:37

     通常软件测试会暴露软件中的缺陷,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,软件测试不可能发现所有的缺陷,而软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是测试中容易忽略的,也就是说,通过测试方法和用例可以充分暴露这些缺陷,遗憾的是,它们往往被忽略或者某种原因忘记测试了,这就给软件留下了隐患或者危机。这些容易被忽略的缺陷包括:

      1、安装缺陷

      通常项目组完成代码后,发布时候安装打包是最后一个环节,而软件测试人员通常在测试的时候,没有仔细的测试这一部分,而把用例集中在其他功能上。安装时候的缺陷通常通过拷贝而不是运行安装程序方式给测试人员安装软件,结果正式安装时候出现问题,引起例如控件没有注册,注册表没有导入等。删除时候没有注意安装文件夹是否存在用户文件,造成数据丢失;使用绝对路径;安装顺序没有说明书。

      2、配置文件

      有些文件在ini等配置文件中写出了管理员口令密码等信息,而且是明文的!这是一个安全隐患。另外,有些安装文件的 XML 文件,为了方便在数据库和中间层连接文件中写入了Admin 口令和密码。作为一个合格的软件测试人员,必须检查这些可以用记事本打开的文件。因为,一个稍有常识而且喜欢探索的用户,可能从中获取信息而成为不自觉的黑客。所以,配置文件可能成为软件安全方面的一个缺陷。

      3、网页安全缺陷

      现在网站开发已经注意到:登陆网站进入其内部网页后,直接拷贝网址,然后粘贴到另一IE 窗口输入,可以绕过登陆直接访问。也许商业网站很关注这个问题,但是很多行业软件却很容易忽略。

      网页安全缺陷还可能存在于 IE 弹出的子窗口。有些设计不严格的软件,在主页面关闭的时候子页面还可以运行,这是一个明显的漏洞,而且还大大增加了错误发生的几率。

      4、判断顺序/逻辑缺陷

      对界面进行多个输入判断的时候,非常容易出现这种问题。例如判断年月顺序,判断长度,判断非空等。假如操作员仅仅满足单个条件,保存不能成功;而按界面从上之下顺序一一满足条件之后,保存是没有问题的。但是,改变一下输入的次序,校验失效。例如,一一满足条件之后,不保存,倒过来将上面的输入改成非法输入,然后保存,结果居然也能成功,这是因为原先的判断由于发生过,或者根据语句顺序只检查最后一个判断,所以没有报错。这种错误尤其在 Java scrīpt 脚本的页面中要注意。能够保存不能保证数据正确,有可能引起系统崩溃或者后续数据错误。所以,在测试的时候,不要按照正常的顺序输入,而是要打乱步骤,看看代码是否强健,是否在判断逻辑上没有错误。良好的代码应该经得起折腾,至少保存时会再此全部进行判断,而不只是简简单单走到判断的最后一行。

      5、调试语句和冗余信息

      维护项目和升级改造的推广系统最容易潜伏这类缺陷。典型表现在没有删除或者屏蔽调试语句。弹出一个界面不友好的提示信息,会使不明真相的用户产生误以为系统发生了严重故障,从而引起对软件的不信任感。页面中某个角落存在当前客户不需要的冗余按钮和功能也是一种缺陷。多余的功能会使用户以为是额外附加部分而去使用,其结果可想而知;而多余的按钮会误导好奇心强的用户操作,产生不必要的错误。

      同样值得关注的还有参数设置,由于没有实际数据,开发人员在调试或者单元测试的时候,习惯性的进行自我设定而忘了删除,软件测试人员可能会忽略掉了这部分测试,也可能导致在客户现场发生错误而影响系统发布和验收。

      6、不可重现的故障

      新参加软件测试的人员或者新来的开发人员总是要问,不可重现的缺陷是否需要记录,有必要吗?回答是肯定的。测试必须如实的记录发生的问题,也许不能重现,或者使非软件系统本身问题,但是,可能这些偶然性背后是有规律的,不记录这些,就不可能发现这些规律。

      7、多节点的逆向流转缺陷

      当前软件不少喜欢使用工作流来驱动。工作流的问题,就是可能出现多个流向分支。测试容易忽略的部分,就是工作流多节点的逆向流转。例如,通过不通过涉及两个分支,但是流程逆转的时候,有可能不是回到上一节点而是平级的另一个节点去了。软件测试要格外注意这类用例的设计。另外,有些时候默认分支在向前的时候是有默认值的,例如默认通过,那么保存的时候要提示用户是否通过,否则可能由于操作疲劳而走错了节点,引起回退。

      8、输入框缺陷

      试过往输入框粘贴数据而不是直接输入吗?可能这里会出现问题。按 Ctrl+V 的时候,输入框会根据长度大小自动截断输入长度。但是用鼠标,截断可能会失效。有一次测试人员就是用这种方法把一篇 Word 文档输入进去了,保存的时候,数据库崩溃。有些网站登陆的口令****可以拷贝下来的,只要放在剪贴板里面马上明文显示。

      输入框可以说是问题最多的部分,能够引起的麻烦也很多。日期、数字、文本等等,都需要耐心的测试一下。

      9、界面布局缺陷

      曾经有一次,项目经理回来向测试部反映一个问题,客户对界面不满意。原因很简单,因为界面上删除按钮和保存按钮挨得很近。结果有些操作不熟练的业务人员,很容易误按。这个问题是测试人员没有意料到的,因此注意关闭、删除、退出按钮与保存、下一步等按钮的距离。类似的按钮应按此规则排列分布。

      界面布局还可能发生在窗口最大化和最小化上,有可能窗口缩小的时候没有下拉框或不匹配分辨率,对用户来讲,这个错误实在很低级。有些用户由于操作习惯,非常不喜欢腾出手使用鼠标,尤其是大量输入的界面,因此,要注意设置键盘的快捷方式。还有,按 Tab定位到下一焦点时要注意顺序,避免跳转太灵活而让操作人员感到无从适应,在界面进行维护或者修改的时候,不要忘了软件测试开发人员是否无意改变了这些快捷方式和跳转顺序。

      10、版本和补丁包的环境问题

      理论上讲,这属于兼容性测试应该覆盖的问题。有些客户很喜欢更新最新的软件版本或者微软时不时打些补丁包,问题就出现了。有时候升级不一定是好事。这些问题最好在测试的时候增加几个用例,多用不同软件版本的机器跑一跑。软件测试有个定律是:你没跑过的地方,就一定会出事。经常听到开发人员抱怨,怎么我的机器没问题,你的机器就有事了呢?这不能完全靠配置管理员解决问题,环境配置项是大家最容易忽略的。

      11、用户管理缺陷

      用户管理的角色和授权需要好好研究一下,作过测试的人员都知道,有时候为了测试的方便,测试用户都是具有超级权限的用户。而且,比较容易忽略用户管理这一部分的测试。往往发往客户的时候,很多测试用户都没有删除。

      另外,有些接口的用户和口令,到软件使用寿命结束都没有更改过。在一次测试中,软件测试人员发现,给一个用户授超级用户权限,之后更改这个用户为受限权限。使用中发现,用户居然没有真正回收权限,用户管理界面上没有任何不对。及早准备用户管理用例,不要等到测试快结束时候才想起。

      12、常识缺陷

      从逻辑或者统计学上讲,计算机是允许如此处理的,但是从常识上来讲,这些情况不可能发生。例如电话号码不可能出现小数点,终止时间不能大于开始时间等等。除此之外,常识还要结合业务特点来进行判断,因此,开发和测试人员要格外注意对自己知识的培养以及增加对需求细节的了解。不能因为一味追求进度而采用最简单的代码来实现,对用户来说,这些错误可能是很荒谬的。

      尽管我们不可能完美的测试一个软件,但是我们仍然可以改进我们的软件测试。每次测试结束,及时总结测试中的不足,进一步完善用例。思考一下那些容易忽略的软件缺陷,能提高对软件测试的认识,提高所在组织软件的质量。

    转自:http://www.51testing.com/html/200807/n87899.html

  • 网站测试-常用性能测试指标

    2008-09-16 11:01:54

    通用指标
    ProcessorTime:服务器CPU占用
    Memory Available  Mbyte可用内存数
    Physicsdisk Time物理磁盘读写时间情况
    Web服务器指标
    Requests Per Second:平均每秒钟响应次数=总请求时间秒数
    Successful Requests:成功的请求
    Failed Requests:失败的请求
    Successful Hits:成功的点击次数
    Failed Hits:失败的点击次数
    Hits Per Second :每秒点击次数
    Successful Hits Per Second :每秒成功的点击次数
    Failed Hits Per Second :每秒失败的点击次数
    数据库服务器性能指标
    User Connections :用户连接数
    Number of deadlocks:数据库死锁
    Butter Cache hit :数据库Cache的命中情况
  • 需求跟踪矩阵与需求双向跟踪

    2008-08-26 09:18:59

    刚刚接触CMMI的人在研究Requirement Management这个PA的时候,对SP 1.4 Maintain Bidirectional Traceability of Requirements可能会比较疑惑,足以让国内大多数的没有真正软件工程开发管理的软件工程师,开发管理者不知所云了。
    所谓的&ldquoTraceability of Requirements&rdquo即&ldquo需求跟踪矩阵(Requirements Traceability Matrix)&rdquo,用比较通俗的话来说,就是不要将需求遗漏了,虽然听来简单,但是真正能够实施此活动的并不多,通常来做的多为 &ldquo纵向跟踪(Vertical traceability)&rdquo,也即生命周期内的跟踪,再说的明白一点就是沿着&ldquo用户需求――软件需求――概要设计――详细设计――编码实现――单元测试――集成测试――集成测试――系统测试――验收测试&rdquo进行需求的跟踪。

    What is bidirectional traceability?


    In the Requirements Management (REQM) process area, specific practice 1.4 states, ?Maintain bidirectional traceability among the requirements and the project plans and work products.? Bidirectional traceability primarily applies to vertical traceability and at a minimum needs to be implemented both forward and backward (i.e., from requirements to end products and from end product back to requirements).


    Vertical traceability identifies the origin of items (e.g., customer needs) and follows these same items as they travel through the hierarchy of the Work Breakdown Structure to the project teams and eventually to the customer. When the requirements are managed well, traceability can be established from the source requirement to its lower level requirements and from the lower level requirements back to their source. Such bidirectional traceability helps determine that all source requirements have been completely addressed and that all lower level requirements can be traced to a valid source.


    Horizontal traceability is also important and is mentioned in subpractice 3, but it is not required to satisfy bidirectional traceability. Horizontal traceability identifies the relationships among related items across work groups or product components for the purpose of avoiding potential conflicts. It enables the project to anticipate potential problems (and mitigate or solve them) before integration testing. For example, horizontal traceability would follow related requirements across two work groups working on two associated components of a product. The traceability across these two work groups enables the work groups to see when and how a change in a requirement for one of the components may affect the other component. Thus, horizontal traceability enables the project to anticipate potential problems (and mitigate or solve them) before integration testing.


    纵向跟踪是最普遍的一种跟踪方式,也是CMMI进行SCAMPI最低要求。即针对此PA,或者说这个SP,做到纵向跟踪后,一般的主任评估师就认为已经满足条件了,可以打及格分数了。
    CMMI V1.1版本中的要求是:RM SP 1.4 Maintain Bi-directional Traceability of Requirements.
    其具体要求是:Maintain bi-directional traceability among the requirements and the project plans and work products.
    CMMI V1.2版本中的要求是:RM SP 1.4 Maintain Bi-directional Traceability of Requirements.
    其具体要求是:Maintain bidirectional traceability among the requirements and work products.
    大家从描述上就能看到区别了。
    《CMMI® Version 1.2 and Beyond》中的描述如下:
    v1.2 SP 1.4 practice statement now reads, &ldquoMaintain bidirectional traceability among the requirements and work products.&rdquoProject plans are no longer mentioned in this SP statement.
    Bidirectional Traceability descrīption is improved in the notes and Glossary.

    这个也证明了SEI发现了此SP的描述或者要求和实际的有出入,难以执行;但是为什么呢?
    其实大家在google上搜索一下关键字&ldquobidirectional traceability &rdquo就会发现很多的资料在解释&ldquobidirectional traceability &rdquo,即所谓的&ldquoVertical
    traceability &rdquo和&ldquoHorizontal traceability &rdquo时,概念并不统一,而且对于&ldquoVertical
    traceability &rdquo和&ldquoHorizontal traceability &rdquo的概念解释甚至是相反的。

    话说了这么多,其实归根到底的原因是:什么是&ldquo横向跟踪&rdquo(Horizontal traceability )?
    SEI的Tim Kasse(CMMI模型制定者之一)在其著作《Practical Insight into CMMI》中曾经对&ldquo横向跟踪&rdquo(Horizontal traceability )进行了如下解释:
    Horizontal traceability refers to the traceability from the requirements to the associated plans such as the project plan, quality assurance plan, Configuration Management plan, risk management plan, and so forth.
    即横向跟踪是需求到计划的跟踪。

    文章链接:http://bbs.51testing.com/viewthread.php?tid=74646
  • 奥运男篮:China VS Spain

    2008-08-13 10:19:47

    相信大多数篮球迷都看了昨晚China vs Spain的比赛了!

    比赛一度让我感觉赢Spain有戏,前三节三分雨下的很好,大致昨晚也确实打得不错!

    可是中国队后卫上的短缺永远都是块心病,前场包夹失误立马增多的场景都见怪不怪了!

    可是中国在内线应该还是有一定的优势的,实际情况却是:

    姚明被Gasol打爆了,太空易状态低迷,原本被人寄予厚望的2个点都歇菜了!这样的比赛还能赢么?

    尤纳斯最后的换人固然有问题,可是姚明,太空易也应该对这场失利负责!

    不管怎样,这场比赛至少打出了自己的风格。这点值得欣慰!自家球队,能力再差还得继续顶......

    中国队加油......

  • Windows平台下调用制定打印机

    2008-06-04 14:43:35

    Windows CE平台下使用CreateDC获取打印机dc,

    HDC CreateDC(
      LPCTSTR lpszDriver,        // driver name
      LPCTSTR lpszDevice,        // device name
      LPCTSTR lpszOutput,        // not used; should be NULL
      CONST DEVMODE* lpInitData  // optional printer data
    );
    一般最后一个参数是要设置的,如
    HDC dc = CreateDC(TEXT("XXX.dll"), TEXT("XXXX"), TEXT("XXX Build-In"), (DEVMODE *)(&lpdevmodew));
    而windows下,If "lpszDriver” is DISPLAY, then lpInitData must be NULL. The display device's current DEVMODE is used.
    dc = CreateDC(TEXT("打印机驱动,XXX.dll"),TEXT("打印机列表中的特定打印机名"), NULL, NULL);
    我原想把CE平台下的打印功能移植到Windows下,就因为最后一个参数的问题,别的基本可以照搬了,还有打印时需要的DOCINO结构也要填完整的,不然也会出错。MSDN还是要认真看才行啊,不能一扫而过哦!
432/3<123>
Open Toolbar