Riceball's profileRiceball LEE personal we...PhotosBlogLists Tools Help

Blog


    June 30

    TurboScript - Call DLL Function has worked.

    It can work on the native primitive type. and supports the register, stdcall, pascal calling convention.

    :Add(const a: Integer; const b: Integer): Integer external 'dlltest.dll' DLL REGISTER Name 'AddCalc'; begin //--Begin QueryPerformanceCounter 300 300 Add //..... (Total 2017 Count) 300 Add //--End QueryPerformanceCounter end.

    Performace(QueryPerformanceCounter):

    • LoadOnDemand: 144584
    • PreLoad(not LoadOnDemand): 129625

    Backup, Backup, More Backup

    Recently, My harddisk has corrupted again!

    It be fortunate that I've already commited my source code in CVS Repository.

    But unfortunate I DO NOT BACKUP my bug-tracking database. smile_sad

    It's my fault. Remember It: Backup, Backup, More Backup!

    June 02

    整合CVSNT 和 Mantis 缺陷管理系统

    缺陷管理是贯穿于整个软件开发生命周期中不可缺少的一个环节。

    缺陷包括产品错误,需求和设计变更,新特性或扩展功能(New Feature, Enhancement)等,它存在于整个软件开发生命周期之中。使用缺陷管理系统便于项目组和管理人员获取正确、足够的信息,简化了地域分散的组织的信息共享流程,它还可以实现工作流程的自动化,最大限度减少重复工作。

    错误报告应该包括:

    • 失败描述:摘要、重建步骤、隔离信息;
    • 识别信息:顺序的ID号、报告作者、报告日期。
    • 严重性等级,以评估在测试条件下,错误在系统中的绝对影响;
    • 优先级,评估顾客实际使用中发生事件的可能性,或对顾客的后续影响;
    • 环境:系统软、硬件配置,测试版本号;
    • 附件,错误信息或屏幕截图。

    提交之后,Bug为"新建"状态,由测试人员确认后,状态为“已确认”,然后再由变更控制委员会(视项目规模组织,可以是不同角色的几个人组成或一个人担当)评审决定:

    • 确认是Bug,分配给相关开发人员修复,状态为"已分派";
    • 不是Bug或其他原因,关闭,状态为"已关闭",然后在解决状况中根据实际情况选择;
    • 是Bug,但延迟到下一个版本修复,状态为关闭,在解决状况中设置为暂停。

    开发人员将Bug修复后,其状态改为"Resolved",他们应发布到下一个测试版本(Test Build)中,测试人员测试所有"Resolved" Bug,没有问题应关闭("Closed"状态),未修复则要重新打开("Opened"状态)。

    对其他变更(如需求改变或新增),以上流程同样适用,但可能需要多次分配(assign),如需求变更,业务分析员要更新需求文档,系统分析员要更新设计文档,然后程序员改代码。

    Mantis 是一个PHP开源的缺陷追踪管理系统,配置非常简单。由于我们的研发团队分散于各地,需求、设计、开发、测试和用户反馈来自不同地区,使用电子邮件和文档来跟踪缺陷时,信息共享和错误状态更新特别费时费力,文档工作量也越来越大,于是我们决定启用Web形式的缺陷追踪管理系统,共用数据实现工作流自动化。初步选择决定使用Mantis,在经过测试小组一个多月对Mantis 系统的测试试用后,反馈结果良好,我们马上决定将系统用于跨地域开发的项目,在半年的时间里,系统运行稳定,性能也不错,流程得到了极大的简化,交互性增强,提高了工作效率。

    Mantis基本特性:

    • 操作简单,上手快
    • 同时支持多个项目、68种语言,包括中文;
    • 支持多种大型数据库(MySQL, MSSQL, PostgreSQL, Oracle)
    • 权限设置灵活,不同角色有不同权限,每一个项目都可以设置不同权限,每个项目可设为公开或私有状态,每个缺陷可设为公开或私有状态,每个注释可设为公开或私有状态,每个缺陷可以在不同项目间移动;
    • 主页可发布项目相关新闻,方便信息传播;
    • 方便的缺陷关联功能,除重复缺陷外,每个缺陷都可以链接到其他相关缺陷;
    • 支持上传附件
    • 注册支持验证码和邮件确认
    • 支持自复位密码
    • 缺陷时间追踪
    • 权限置顶功能
    • 动作认证方式(默认,LDAP, HTTP, Active Directory)
    • 缺陷报告可打印或输出为CSV格式,WORD格式,Excel 格式, HTML格式;
    • 可自定义用户缺陷字段;
    • 系统自动跟踪记录缺陷历史,可输入注释;
    • 生成报告和图表:支持绘制各种缺陷趋势图和柱状图(可选);
    • RSS 反馈
    • 可定制的Email通知功能,每个用户可根据自身的工作特点只订阅相关缺陷状态邮件;
    • 支持整合Wiki(可选)
    • 聊天集成(可选)
    • 版本控制集成:支持整合CVS和SVN
    • 缺陷工作流程可以完全定制,不过定制工作流略显繁琐。

    小结:

    集成CVSNT:  必须和CVSNT在一个服务器上!

    增加一个用户如(cvs),该用户要有提交注释的权力!

    然后打开 config_defaults_inc.php,修改如下的配置:

    # --- Source Control Integration ------

    # For open source projects it is expected that the notes be public, however,
    # for non-open source it will probably be VS_PRIVATE.
    $g_source_control_notes_view_status = VS_PRIVATE;

    # Account to be used by the source control script. The account must be enabled
    # and must have the appropriate access level to add notes to all issues even
    # private ones (DEVELOPER access recommended).
    $g_source_control_account = 'cvs';

    # If set to a status, then after a checkin with a log message that matches the regular expression in
    # $g_source_control_fixed_regexp, the issue status is set to the specified status. If set to OFF, the
    # issue status is not changed.
    $g_source_control_set_status_to = RESOLVED;

    # Whenever an issue status is set to $g_source_control_set_status_to, the issue resolution is set to
    # the value specified for this configuration.
    $g_source_control_set_resolution_to = FIXED;

    # Regular expression used to detect issue ids within checkin comments.
    # see preg_match_all() documentation at
    # http://www.php.net/manual/en/function.preg-match-all.php
    $g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i"

    # Regular expression used to detect the fact that an issue is fixed and extracts
    # its issue id. If there is a match to this regular expression, then the issue
    # will be marked as resolved and the resolution will be set to fixed.
    $g_source_control_fixed_regexp = "/\bIssue [#]{0,1}(\d+)\[Done\]/i"

    抓取(checkout)仓库的CVSROOT,修改 loginfo 文件为:

    • ALL C:/Dev/php/php.exe C:/Dev/Mantis/core/checkin.php

    然后提交 loginfo 文件!

    然后只要你提交的文件注释中含有 "issue #122" or "issue 122" 的字眼,就会被自动加入到

    对应的 122 号问题的注释上!而注释中含有"issue #122[Done]"则还会自动改变问题的状态为fixed.

    这样一般cvs就ok了,不过在cvsnt中支持bug id的功能,可以通过参数的形式传入 checkin.php

    • ALL C:/Dev/php/php.exe C:/Dev/Mantis/core/checkin.php  %%s %b %m  
    • %u 是修订着(用户名);
    • %s 是修改的文件或模块名称;
    • %b 是bug id;
    • %m 是log信息。

    不过这就需要对 checkin.php进行改造了!

    要想接收参数,首先要将php.ini中的register_argc_argv参数打开。

    • register_argc_argv = On

     然后注释掉checkin.php文件中所有stdin 的语句,然后加上:

    $t_comment .= "\nModified module and files: " . $_SERVER['argv'][2] .
    "\nBy: " $_SERVER['argv'][1];

    而bug id 则无需进行RegExpress表达式匹配,直接从参数三中读取 $_SERVER['argv'][3]即可。

    另外在中文Windows下TortoiseCVS等提交的注释如果是中文,那么还必须要转码为utf-8!

    否则提交的在Mantis系统的上将是乱码:

    • $t_comment = mb_convert_encoding($t_comment, "utf-8", "gbk");

     

    中文翻译中的完成度不妥,【改】完成度 -> 解决状况

     

    PHP 4.X 不支持MySQL新的Password通讯认证方式!

    如果需要增加MySQL的安全性,你必须将用户密码设置为旧密码格式:

    •  mysqladmin -u username old-password "CvnEDj3Skd4"

    否则PHP将会报告错误:

    • #1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

     PHP 5.X is no problem.