You are the best one!!

发布新日志

  • Unit Test 如何设置连续运行N次

    2014-08-04 16:53:52

    [Test]
    [Repeat(10)]
    public override void Run()
    {
             base.Run();
    }
  • Visual Studio Resharper常用快捷键

    2014-07-29 14:12:10

    加注释
    Ctrl \
    Ctrl K,C
    Ctrl K,U

    方法折起来/展开
    Ctrl MM/MO/MP

    删除行/Copy line
    Ctrl D/X

    打开文件
    Ctrl+Shift+N 

    View Solution
    Ctrl+Shift+L

    全局查找Symbol name
    Ctrl+Shift+Alt+N

    找父类
    Ctrl+U

    在当前类中找member
    Ctrl+F12

    Find Usage
    Shift+F12

    找到全部实现
    Ctrl+Alt+B

    Refactory重命名
    F2

    在方法头/尾切换
    先到{or}处,Ctrl ]

    扩选完整单词/缩选单词
    Ctrl W, Ctrl+Shift+W



  • SQL Server和Oracle的用法区别(实例)

    2014-07-17 11:44:52

    Oracle, SQL 通用版

    {code}
             var result = new List<T>();
             var dbConnection = GetDatabase().Connect();
             var reader = dbConnection.SQLRead(sql);
             while (reader.Read())
             {
                var value = reader.GetValue(0);
                   var newValue = (T)Convert.ChangeType(value, typeof (T));
                   result.Add(newValue);
             }
    {code}
    以上代码作用:将SQL查出来的1列结果转换成C#的List。

    如果粗体代码改成 result.Add((T)reader.GetValue(0)); 只有SQL可以run pass,oracle会有类型转换问题。这是由于如果GetValue在oracle里面是64int的话,转成int时,oracle会有类型转换的问题。

    2. 怎么样在Oracle的select别名中加空格问题

    var sql = "select acc_no as ""Account Number"", acc_name as ""Account Name"" from bankacc 
    这样出来的结果就是 Account Number和Account Name.

    SQL Server 按以下写法不会问题,但Oralce会出错。
    var sql = "select acc_no as ‘Account Number’, acc_name as ‘Account Name’ from bankacc 
    这样出来的结果就是 Account Number和Account Name.

  • C# 委托用于对DataSet排序-高级用法

    2014-04-21 11:57:48

    {code}
    public static string FindKey(ResultItemData dataSet, Predicate<ResultItem> selectionCriteria, Func<IEnumerable<ResultItemData>, IEnumerable<ResultItemData>> sorter)
          {
                var resultItems = sorter(dataSet);
                return resultItems.First(item => selectionCriteria(item)).TheKey;
          }
    {code}

    调用时就可以传Orderby的内容
    var selectedItem = FindKey(OriginalDataSet, item => true, resultItems => resultItems.OrderBy(
                                                                                                                                     item => item.DiaryDate)
                                                                                                                                  .ThenBy(item => item.CashflowNetting)
                                                                                                                                  .ThenBy(item => item.Counterparty)
                                                                                                                                  .ThenBy(item => item.Amount));
  • 安装Ruby for Eclipse 开发环境

    2012-02-08 11:07:03

    1. 下载Ruby:http://www.ruby-lang.org/en/downloads/。 之前下过install版本ruby186-26.exe,就直接安装。安装完后,go to RubyGem Package Manager, use command $gem update --system 更

    新最新版Gem, 更新完后,看到最新版本RubyGems 1.8.16 installed。
     
    2. 下载Eclipse:http://www.eclipse.org/downloads/。下了个最全的package,eclipse-jee-indigo-SR1-win32.zip。只要解压,无需安装。

    3. 下载JDK(Java Develop Kit):jdk-7-windows-i586.exe,直接运行,安装完后JDK版本是1.7.0。
       Note:只有装好JDK后,eclipse才能正常运行。

    4. Install Ruby Development Tools(RDT) for eclipse。以前是有地方下的,现在好像没有了。不过网站提供在线下载。方法:打开eclipse, Help->Install New Software, 在work with里输入:http://download.aptana.com/studio3/plugin/install,然后Enter。接下来一路next就好了。这里要下载很长的时间,有时网络不好。
        Note: 要使用Eclipse开发ruby,必须安装RDT plugin。安装好以后,打开eclipse,在File->New中可以看到Ruby Project。

    5. 安装ie的自动化API - Watir

    三、配置Ruby for Eclipse环境:

    1. 我使用的Ruby版本是1.86,Eclipse版本是3.3.1,安装完成基本上不用再做任何配置,打开Eclispe>Windowns>Preferences>Ruby>Installed Interpreters,可以看到缺省已经设置了JRuby做为虚拟机;

    2. 如果你希望使用原生的Ruby做为虚拟机,则可以点击“Add”按钮设定Ruby的运行目录。到此时设置即告完成,不必像先以前的版本那样设置其它的系统路径。

    四、Hello Ruby:

    1. 选择菜单Eclispe>New>Project>Ruby>Ruby project,建立一个Ruby工程“HelloRuby”;

    2. 在新建的Ruby工程上右击鼠标,选择New>Ruby Class,建立一个新的Ruby类,类名为HelloRuby;

    3. 在新类中写入下列代码,Hello Ruby就完成了。在工程上右击菜单Run as>Ruby Application即可输出结果。

    class HelloRuby
    print "Hello Ruby!"
    end

  • Manifesto for Agile Software Development

    2011-03-29 11:09:32

    http://agilemanifesto.org/iso/zhchs/manifesto.html

    We are uncovering better ways of developing
    software by doing it and helping others do it.
    Through this work we have come to value:
    Individuals and interactions over processes and tools
    Working software over comprehensive documentation
    Customer collaboration over contract negotiation
    Responding to change over following a plan
    That is, while there is value in the items on
    the right, we value the items on the left more.

  • HTML学习笔记

    2010-11-19 14:30:37

    超文本(Hypertext)是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户介面范式,用以显示文本及与文本之间相关的内容。现时超文本普遍以电子文档方式存在,其中的文字包含有可以链结到其他位置或者文档的连结,允许从当前阅读位置直接切换到超文本连结所指向的位置。超文本的格式有很多,目前最常使用的是超文本标记语言(Hyper Text Markup Language,HTML)及富文本格式 (Rich Text Format,RTF)。
  • Selenium学习笔记

    2010-11-19 11:00:36

    What's a Selenium?
    Selenium is a suite of tools to automate web app testing across many platforms.
    http://seleniumhq.org/ is its website.
     
    Applications
    1.  Selenium IDE is a Firefox add-on that records clicks, typing, and other actions to make a test, which you can play back in the browser.
     
    2.  Selenium Remote Control (RC) runs your tests in multiple browsers and platforms. Tweak your tests in your preferred language.
     
    3.  Selenium Grid extends Selenium RC to distribute your tests across multiple servers, saving you time by running tests in parallel.
     
    网友对selemium的中文介绍
    http://www.javaeye.com/topic/107276

  • 网络术语-port number

    2010-11-17 18:16:28

    Port number is part of the addressing information used to identify the senders and receivers of messages.

    Port numbers are most commonly used with TCP/IP connections. Home network routers and computer software work with ports and sometimes allow you to configure port number settings. These port numbers allow different applications on the same computer to share network resources simultaneously.

    80 - HTTP

    21 - FTP

    22 - SSH.  Remote administration of unix computers.

    8080 - Apatche Tomcat
    9080 - WebSphere Application Server HTTP Transport (port 1) default
     

  • Mantis安装手记

    2010-11-09 17:15:25


    Windows下EasyPHP + mantis安装与配置(转)
    1. 简介


    EasyPHP是在Windows平台上运行的软件包,包括Apache服务器,MySQL数据库,PHP,以及phpMyAdmin工具。
    mantis是基于php/MySQL/web 的问题跟踪系统。

    2. 下载


    EasyPHP 1.8的下载地址为http://easyphp.org/telechargements.php3。EasyPHP 1.8包括:
    1) Apache 1.3.33(Win32)
    2) PHP 4.3.10
    3) phpMyAdmin 2.6.1
    4) MySQL 4.1.9

    mantis 1.0.5的下载地址为http://www.mantisbt.org/download.php

    3. 安装


    1)直接运行下载的EasyPHP安装文件easyphp1-8_setup.exe,EasePHP的缺省安装目录为C:\Program Files\EasyPHP1-8。
    2)将C:\Program Files\EasyPHP1-8下phpmyadmin文件夹移到C:\Program Files\EasyPHP1-8\www下。
    3)将下载的mantis_1.0.5.tar.gz文件直接解压到C:\Program Files\EasyPHP1-8\www下。
    4)安装结束,先通过开始菜单 - 程序 - EasyPHP运行EasyPHP,再通过http://localhost:80/运行phpmyadmin和mantis_1.0.5。

    4. 配置


    1)更改Apache ServerAdmin设置
    在C:\Program Files\EasyPHP1-8\apache\conf下的httpd.conf文件中查找ServerAdmin,将ServerAdmin admin@localhost 改为ServerAdmin (有效的邮件地址)。

    2)更改MySQL的root口令
    运行phpmyadmin,编辑用户 'root'@'localhost'权限,更改密码为'admin'。执行后需要修改C:\Program Files\EasyPHP1-8\www\phpmyadmin下config_inc.php文件,将root用户的password由''改为'admin'。

    3)配置mantis
    运行mantis_1.0.5,第一次将自动进入admin页面,要求创建bugtracker数据库。成功后将进入登陆页面,使用administrator/root登录,mantis 便开始工作。(注意:配置mantis成功后,应该删除C:\Program Files\EasyPHP1-8\www\mantis_1.0.5下的admin目录;同时禁止administrator账户或改变administrator账户的缺省口令。)

    4)邮件服务器配置
    在C:\Program Files\EasyPHP1-8\apache下的php.ini文件中查找SMTP,将SMTP = localhost改为你的发件服务器,如SMTP = smtp.sina.com.cn;查找sendmail_from,将前面的分号去掉,并在后面填上邮件地址:sendmail_from = (有效的邮件地址)。

    在C:\Program Files\EasyPHP1-8\www\mantis_1.0.5\config_inc.php文件中添加
        $g_smtp_host='smtp.sina.com.cn';
        $g_smtp_username='帐号';
        $g_smtp_password='密码';
        $g_phpMailer_method =2; 

    5)中文显示
    在C:\Program Files\EasyPHP1-8\www\mantis_1.0.5\config_inc.php文件中添加
    $g_default_language='auto';

    6)文件上传

    在C:\Program Files\EasyPHP1-8\www\mantis_1.0.5\config_inc.php文件中添加
    $g_allow_file_upload=ON;
    $g_file_upload_method=DISK;
    并且在C:\下创建upload目录。(注意最好不要用中文目录名,目录名中间也不要带空格。)

    当你以管理员身份登录,新建项目时,在上传文件路径那一项填上C:\upload即可。

    7)其他问题
    配置完成后,键入http://localhost/mantis_1.0.5/login_page.php 就可以打开mantis登录页面了。但要使网内其他用户也能访问服务器,应该把httpd.conf文件的Listen后的地址(默认为127.0.0.1:80)改为服务器地址。这样就可以从其他客户端访问了。

    大功告成!

  • ruby + mysql + rails 学习笔记

    2009-10-15 15:37:00

    历经坎坷ruby终于连上mysql, 写出来和大家一起分享一下。

    配置信息:

    1. ruby gem 1.3.5

    2. 到mysql官网下载mysql安装包: mysql-5.1.39-win32.msi,安装在c:\mysql下,不要有空格。安装完后,去网上下mysql管理工具mysql-gui-tools-noinstall-5.0-r16-win32。把mysql配置成功后,在里面建个数据库mybook和表book用做测试。把c:\mysql\bin\libmySQL.dll拷贝到c:\ruby\bin.(这步很关键)

    3. 安装mysql的gem。我装的是2.8.1版本。

    4. 测试ruby和mysql连接。

    require "mysql"

    dbc=Mysql.real_connect('localhost','root','','mybook')

    res=dbc.query('select * from books')

    while row=res.fetch_row do

    puts "#{row[0]}"

    end

    5. 安装rails,版本2.3.4

  • ( 转) 使用 Watir 加速面向 Web 应用的自动化测试程序的开发

    2009-10-08 18:18:52

  • A good website for testing documents

    2009-10-08 17:51:02

      I found a good website for testing documents, but it's English only.

    http://www.exforsys.com/tutorials/testing.html

    <\h3>

  • 转载:使用 Eclipse 插件 Ruby Development Tools

    2009-09-22 15:15:59

    本文介绍如何使用 Eclipse 插件 Ruby Development Tools(RDT),这个插件使 Eclipse 能够成为一流的 Ruby 开发环境。那些希望利用 Eclipse 社区丰富的基础设施来支持开发的 Ruby 开发人员会从本文中受益,对有兴趣使用 Ruby 的 Java™ 开发人员也会有所收获。

    为什么要使用 Ruby?

    为什么 Java 开发人员会关心 Ruby?Ruby 是 10 年前在日本开发出来的通用脚本语言。与流行的信念相反,它是一种纯面向对象语言。与 Java 技术不同,Ruby 没有标量,所以所有东西(包括整数)都是一类对象。Ruby 的语法很大程度上借鉴于 Smalltalk、Python 和 Ada。与 Java 语言相同的地方是,Ruby 也是一种单继承语言,但是它提供了 Java 技术所缺乏的某些高级特性,比如闭包(与 steroids 上的匿名内部类相似)和 mix-ins(与接口相似,但是它们与类的绑定不太紧密)。Ruby 也具有很高的可移植性,可以在所有主流操作系统上运行。

    Ruby 现在已经很流行了,人们开始用它建立各种应用程序。因为它是解释语言而且使用动态类型,所以可以在运行时做许多极其灵活的工作,而这在 Java 中是非常困难的。动态类型和表达语法所支持的神奇功能之一是,能够在 Ruby 中创建领域特定的语言,这使开发人员能够在更高的抽象级别上工作,从而脱离语言的“原始”语法。Ruby on Rails 是一个用于创建带后端数据库的 Web 应用程序的框架,它展示了这种优雅性。Rake(Make 和 Ant 相结合的 Ruby 版本)也展示了 Ruby 的这种强大能力。

    使用 Ruby 的另一个理由是,许多敏锐的开发人员已经开始使用它了。那些在 1996 年就认识到 Java 技术即将流行的开发人员(比如 Glenn Vanderburg、Bruce Tate 和 Martin Fowler)现在已经开始使用 Ruby。即使您还不打算全面转向 Ruby,现在也应该研究一下这种语言了。

    对于用 Ruby 进行广泛的开发,主要的限制因素之一是缺少一个出色的开发环境(对于那些不想学习 Emacs 的人来说尤其如此)。RDT 改变了这种状况。在您喜欢的 Eclipse IDE 中使用 Ruby,这会使您感到舒适。





    回页首


    准备

    在开始使用 Ruby 之前,必须安装(或者验证已经具有了) Ruby 解释器和库以及 Ruby Development Environment。

    获得 Ruby

    可以获得适合所有主流平台以及几个次要平台的 Ruby 版本。实际上,您的 Linux® 或 Cygwin 发行版可能已经包含了 Ruby。转到命令提示符下并输入 ruby -v

    如果看到一个版本号,就说明 Ruby 已经有了。如果没有看到版本号,就需要获取 Ruby。先寻找适合您平台的 发行版

    如果您正在使用 Windows®,就更容易了。RubyForge(与 SourceForge 功能相似)有一个称为 One-Click Ruby Installer 的项目,这个程序会在 Windows 上建立 Ruby 环境(参阅 参考资料)。它还包含几个工具,包括称为 FreeRide 的 IDE,但是如果使用 RDT,则可以不用理会大多数这些工具。





    回页首


    获得文档

    在开始使用一种新语言时,文档和其他参考资料是非常重要的。可以在 Ruby 主 Web 站点上获得 Ruby 文档的在线参考,但是您会发现这里的文档有点儿过时了(它针对 Ruby V1.6,而当前版本是 1.8.2)。这是因为最新的文档还没有从日文翻译成英文。但是在 Ruby-doc.org 上可以找到最新的文档。它包含 API 级文档(与 Javadoc 等同)以及一些教程和书籍。(参阅 参考资料。)

    如果您关心 Ruby 开发,那么应该尽快获得 Dave Thomas 和 Andy Hunt 撰写的 Programming Ruby: The Pragmatic Programmer's Guide(参阅 参考资料)。这是对 Ruby 的标准介绍并且介绍了 Ruby 库的需求。在阅读这本书的同时,还可以阅读 Dave Thomas 撰写的 Agile Development with Ruby on Rails,其中介绍了 Ruby on Rails。

    获得 RDT

    既然已经在计算机上安装了可以工作的 Ruby 版本并且获得了文档,现在就需要 RDT 了(参阅 参考资料)。这个 Eclipse 插件提供了许多特性,您在编辑代码时会慢慢熟悉这些特性。RDT 是一个标准的 Eclipse 插件,具有特性和插件,所以可以将 zip 文件直接解压缩到 Eclipse 文件夹。存档文件中的路径会建立目录结构。

    现在可以创建 Ruby 项目了(参见图 1):


    图 1. 创建新的 Ruby 项目
    创建新的 Ruby 项目

    与 Java 技术相比,Ruby 对名称和目录结构的要求宽松多了。在 Ruby 中创建一个项目实际上只是创建一个目录和一个 .project 文件(这里不需要 .classpath 文件,因为 Ruby 没有类路径)。与 Java 技术相比,另一个显著差异是 Ruby 项目向导并不创建显式的 srcbin 目录。Ruby 是解释语言,所以没有输出文件夹。如果项目比较小,那么可以将 Ruby 源代码文件与项目文件放在同一个文件夹中。也可以创建自己的目录结构。您会发现,与 Java 语言相比,Ruby 不太关心目录结构。

    接下来,需要一个 Ruby 源代码文件。没有专门用于创建 Ruby 源代码文件的向导。与 Java 技术不同,对于 Ruby 源代码文件的结构没有什么要求,所以要创建 Ruby 文件,只需使用项目的右击菜单创建一个新文件。


    图 2. 创建 Ruby 源代码文件
    创建 Ruby 源代码文件

    不要忘记在文件名后面加上标准的扩展名 .rb,这是一般的 Ruby 扩展名。创建 Ruby 文件应该会打开 Ruby 透视图。


    图 3. 创建 Ruby 源代码文件会打开 Ruby 透视图
    创建 Ruby 源代码文件会打开 Ruby 透视图

    Ruby 透视图还提供一个大纲视图,这与 Java 透视图提供的大纲视图相似。与 Java 大纲视图相似,它允许导航 Ruby 源代码文件的元素。在图 4 中,raise_salary_by 方法在大纲视图和源代码视图中高亮显示。


    图 4. 大纲视图允许在源代码文件中进行导航
    大纲视图允许在源代码文件中进行导航

    与其他复杂的插件一样,RDT 也在 Window > Preferences 对话框中增加了定制特性。这个首选项对话框如图 5 所示。


    图 5. RDT 的定制首选项
    RDT 的定制首选项

    首选项菜单项允许修改语法高亮显示方式、格式化(在 Ruby 中标准的缩进是两个空格,不是四个,所以要做某些调整)等等。它还允许定制编辑器模板以及选择解释器。





    回页首


    RDT 编辑器

    在 Java 技术环境中,我们已经习惯了高级的编辑器特性,这使我们在转移到没有提供这些特性的其他环境时不太适应。Ruby IDE 缺乏的特性之一是 Content Assist,这种特性针对标识符进行上下文相关的查找。RDT 编辑器对 Ruby 代码提供了 Content Assist。


    图 6. RDT 编辑器提供 Content Assist
    RDT 编辑器提供 Content Assist

    RDT 编辑器中的 Content Assist 没有 Java 环境中那么有针对性,因为 Ruby 支持动态类型。在 Ruby 中,不能将类型赋给变量或者方法返回值。标识符上下文在运行时决定类型。Ruby 使用所谓的“duck typing” —— 也就是说,如果它接受“鸭叫”消息,那么它一定是鸭子。对于那些习惯于强类型语言的人来说,这可能像是一种阻碍,但是这种弱类型耦合使 Ruby 语言能够实现某些更强大的特性。例如,在 Ruby 中可以编写一个异常处理程序,如果调用一个不存在的方法就会触发这个程序,这个异常处理程序可以动态地合成这个方法并且调用它。在强类型语言中很难实现这种元编程。

    Content Assist 弥补的特性之一是 Ruby 对标识符使用的特殊命名约定。例如,在 Ruby 中,所有成员变量在第一次使用时才存在,而且都由 @ 符号作为名称的第一个字符。如果使用 Content Assist 查找成员变量,那么可以输入 @,并且只看到成员变量。


    图 7. Ruby 中的命名约定帮助实现 Content Assist
    Ruby 中的命名约定帮助实现 Content Assist

    动态类型仍然会妨碍 Ruby 中的上下文敏感性。在图 7 中,合法的成员变量只是在上面方法声明中出现的成员变量,即 @name@salary@hire_year。Content Assist 挑选出的其他成员变量来自后面定义的另一个类。RDT 编辑器还不完善,无法过滤出所有语法上正确但是语义上不正确的条目。





    回页首


    运行和调试

    IDE 的关键特性之一是能够在构建应用程序的环境中对应用程序进行运行和调试。RDT 支持这两种功能。

    指定解释器

    Ruby 是一种解释语言,所以必须将一种解释器与环境相关联,然后 RDT 才能运行或调试应用程序。这种关联是在 Windows > Preferences 对话框中 Ruby 标题下面的 Installed Interpreters 项中设置的。


    图 8. 将 Ruby 解释器与环境关联起来
    将 Ruby 解释器与环境关联起来

    将“Location”文本域指向您使用的 Ruby 版本的 bin 目录。RDT 会找到所需的其他信息。关联了解释器之后,就可以运行应用程序了。

    运行 Ruby 应用程序

    运行 Ruby 应用程序与运行 Java 应用程序实际上完全一样。使用 Run 菜单创建一个 Run 配置。


    图 9. 在 RDT 中建立 Run 配置
    在 RDT 中建立 Run 配置

    在运行应用程序时,RDT 启动 Ruby 解释器并且在 Eclipse 工作区底部的一个控制台窗口中运行这个应用程序。


    图 10. 在 RDT 中运行 Ruby 应用程序
    在 RDT 中运行 Ruby 应用程序

    这个例子显示如何运行一个控制台应用程序,但是运行其他类型的应用程序(比如图形化应用程序)也是一样的。

    用 RDT 进行调试

    IDE 需要的最关键的特性之一是能够有效地调试应用程序。Ruby 解释器包含一个命令行调试器,但是在这个图形化工具的时代谁还想使用命令行调试器?幸运的是,Ruby 解释器还通过一个特定(可配置)的端口广播调试信息,RDT 这样的工具能够监听这个端口并且提供开发人员期望的调试支持类型。

    要调试 Ruby 应用程序,需要创建一个 Debug 配置,就像前面创建 Run 配置一样。然后,在左边的空白处点击以设置断点,并使用调试器启动应用程序。与 Java 技术一样,IDE 将询问您是否想切换到 Debug 透视图。回答之后,将看到下面这样的屏幕:


    图 11. 在 RDT 中调试 Ruby 应用程序
    在 RDT 中调试 Ruby 应用程序

    RDT 提供了与 Java 技术相同的调试支持级别。左上方的窗格显示当前正在执行的线程。右上方的窗格显示变量的值。与 Java 语言中一样,可以深入到对象中,查看它们的底层成员变量值。左边中间的窗格显示正在运行的应用程序的源代码,右边中间的窗格显示大纲视图(它在这里的工作方式与在编辑器中一样,让开发人员能够通过点击标识符来进行导航)。Debug 窗口的底部显示 Ruby 解释器在端口 1098 上广播调试信息,RDT 在这个端口上监听调试信息。

    调试支持是 RDT 的关键特性。即使您的编辑器有出色的 Ruby 支持,但是仍然必须依赖命令行调试器来调试应用程序。拥有一个功能全面的调试器可以显著提高生产效率。





    回页首


    测试

    对于 Java 开发人员,Ruby 最难掌握的特性之一是动态类型。如果您已经习惯了强类型语言,那么动态类型看起来可能会导致混乱。动态类型支持所有高级的元编程技巧,这在强类型语言中是很难实现的,甚至不可能。当然,还会失去编译时检查的安全保障。是否有办法同时获得这两种环境的优势呢?

    对于语言,单元测试是必需的,但是在动态语言中它特别重要。单元测试能够比单纯编译揭示出更多的问题。实际上,您应该换个角度看待单元测试和编译之间的关系。近来,在一个软件开发专家讨论会上,软件开发思想家 Relevance 公司的 Stuart Halloway 指出,“在 5 年内,我们将看到编译成为一种比较弱的单元测试形式。”单元测试检验代码是否做了开发人员希望它做的事儿,而不只是对类型进行拼写检查。

    既然单元测试在 Ruby 环境中如此重要,那么当然希望 RDT 可以使运行单元测试更容易。它确实做到了。单元测试已经包含在 Ruby 中,所以不需要下载任何额外的扩展代码。Ruby 库包含一个 TestCase 类和 TestSuite 的概念。可以像创建其他 Ruby 类一样创建单元测试,这需要对 Test::Unit::TestCase 进行子类化。清单 1 是一个称为 Employee 的示例类。


    清单 1. Employee

    				
    class Employee
      def initialize(name, salary, hire_year)
        @name = name
        @salary = salary
        @hire_year = hire_year
      end
      
      attr_reader :name, :salary, :hire_year 
      def raise_salary_by(perc)
        @salary += (@salary * (perc * 0.01))
      end
      
      def to_s
        "Name is #{@name}, salary is #{@salary}, " + 
        "hire year is #{@hire_year}"
      end
      
    end
    

    对应的单元测试是:


    清单 2. Employee 类的单元测试

    				
    require 'test/unit/testcase'
    require 'test/unit/autorunner'
    require 'hr'
    class TestEmployee < Test::Unit::TestCase
      @@Test_Salary = 2500
      def setup
        @emp = Employee.new("Homer", @@Test_Salary, 2003)
      end
      def test_raise_salary
        @emp.raise_salary_by(10)
        expected = (@@Test_Salary * 0.10) + @@Test_Salary
        assert( expected == @emp.salary)
      end
    end
    

    要运行这个单元测试,应该为单元测试类创建一个 Test::Unit 类型的 Run 配置。


    图 12. RDT 包含 Test::Unit Run 配置
    RDT 包含 Test::Unit Run 配置

    在运行这个测试时,可以获得与 Java 单元测试相同的支持元素,包括左下角与 JUnit 相似的面板。


    图 13. 在 IDE 中运行的单元测试示例
    在 IDE 中运行的单元测试示例

    在 Ruby 中还可以创建 TestSuites。TestSuites 是定义套件方法的 Ruby 类,这个方法返回 TestSuite。TestSuite 由在每个 TestCases 中自动定义的套件组成。清单 3 是两个类的 TestSuite 示例。


    清单 3. 两个类的 TestSuite 示例

    				
    require 'test/unit/testsuite'
    require 'test/unit/ui/tk/testrunner'
    require 'test/unit/ui/console/testrunner'
    require 'TestEmployee'
    require 'TestManager'
    class TestSuite_AllTests
        def self.suite
            suite = Test::Unit::TestSuite.new("HR Tests")
            suite << TestEmployee.suite
            suite << TestManager.suite
            return suite
        end
    end
    #Test::Unit::UI::Tk::TestRunner.run(TestSuite_AllTests)
    Test::Unit::UI::Console::TestRunner.run(TestSuite_AllTests)
    

    与前面运行单一 TestCase 的例子不同,套件作为单独的应用程序运行。Ruby 有两种显示 TestSuite 结果的方法。第一种是 Console Test Runner,它在控制台输出结果。第二种是 Tk TestRunner,它创建一个对话框来显示测试结果。Tk TestSuite 对话框见图 14。


    图 14. 图形化的 TestSuite 对话框
    图形化的 TestSuite 对话框




    回页首


    未来的发展

    RDT 的当前版本是 0.50。它的开发人员正在为下一个版本 0.60 而努力。下一个版本中计划的改进包括:

    • 代码折叠 —— 可以将类和方法的代码折叠起来。
    • 大纲视图 —— 更详细,支持局部变量。
    • RI 视图 —— 从 一个 RDT 视图使用 Ruby 的 ri 实用程序。
    • 任务标记 —— 在 Ruby 注释中为可配置的关键字(比如 TODO、FIXME)创建任务。
    • 编辑器改进 —— 自动补齐方括号、圆括号和单/双引号;更好的代码辅助。
    • 审查的快捷方式 —— 对 Debug 会话期间经常使用的审查提供可配置的快捷方式,比如显示对象的所有方法、全局变量,等等。

    下一个版本将更好地使用 JRuby 字节码编译器。JRuby 项目可以将 Ruby 代码编译为 Java 字节码。这意味着 RDT 的下一版本将更容易集成到 Eclipse 环境中,提供更好的支持。





    回页首


    结束语

    Pragmatic Programmer: From Journeyman to Master 一书中最出色的建议之一是:您应该每年学习一种新的编程语言从而跟上潮流,并且通过新语言学习一些新知识。Ruby 就快要广泛流行了,这在某种程度上是由于 Ruby on Rails 项目获得了成功。到了将 Ruby 加进您的工具库的时候了。RDT 是您掌握 Ruby 的好帮手。



     

    参考资料

    学习

    • 您可以参阅本文在 developerWorks 全球站点上的 英文原文

    • Ruby 语言的官方站点 Ruby-lang.org 是通向其他 Ruby 站点和文档的门户。

    • Ruby on Rails 是一个有影响力的基于 Ruby 的 Web 应用程序框架。这个站点允许下载 rails 并且查看示例应用程序。

    • Rubyforge.org 提供 One-Click Ruby Installer,这个程序在 Windows 上建立 Ruby 环境。

    • Ruby-doc.org 上可以找到最新的 Ruby 文档。

    • Dave Thomas 撰写的 Programming Ruby, The Pragmatic Programmer's Guide, 2nd Edition 是 Ruby 语言的指南。这本书采用一种非常容易阅读的方式编写,是新接触 Ruby 的人的首选书籍。即使您不关心 Ruby,也应该阅读这本经典的软件工程著作。

    • 如果您对 Rails 感兴趣,那么 Dave Thomas 和 David Heinemeier Hansson 撰写的 Agile Development with Rails: A Pragmatic Guide 是不错的入门书。这本书明确地指导如何用 Rails 进行开发。

    • Andrew Hunt 和 David Thomas 撰写的 The Pragmatic Programmer: From Journeyman to Master 建议开发人员应该每年学习一种新语言。

    • Glenn Vanderburg 是一位软件思想家,常常提出有意思的观点。他是最先认识到并且宣传 Java 技术的潜力的人之一,他编写了最早的高级 Java 书籍,近几年他积极支持 Ruby。

    • Bitter JavaBitter EJB 的作者 Bruce Tate 也大力支持 Ruby 并且可能从 Java 技术转向 Ruby。他的几本书指导开发人员如何从 Java 人变成 Ruby 人。请阅读 developerWorks 上他的 “Secrets of lightweight development success” 系列。

    • Martin Fowler 是软件工程领域中最响亮的名字之一。他理解深奥的概念并且能够极其透彻地表述这些概念。几年来,他大力宣传 Ruby 的潜力,促使大家转向 Ruby。他常常在自己的 blog 上介绍 Ruby。

    • developerWorks 提供了许多 Ruby 文章和教程,包括 “调试 Ruby 程序技巧 101” 和 “用 Rake 自动执行任务”。

    • 请访问 developerWorks 的 开放源码专区,这里有丰富的 how-to 信息、工具和项目更新,可以帮助您利用开放源码技术进行开发并且将其用于 IBM 产品。


    获得产品和技术

    • 获得 Ruby Development Tools,这个 Eclipse 插件添加了 Ruby 支持,包括 Content Assist、调试和单元测试支持。

    • 可以从 Rubyforge.org 获得 Rake,这是 Ruby 的构建工具。Rake 提供一种用于执行构建的语言,提供了 Make 和 Ant 两者的优秀特性。它还展示了 Ruby 灵活的语法如何轻松地创建具有高度针对性的领域专用语言。

    • 使用 IBM 试用版软件 改进您的下一个开放源码开发项目,这些软件可以下载或者通过 DVD 获得。


    讨论

    转自:http://www.ibm.com/developerworks/cn/opensource/os-rubyeclipse/

  • Where are useful Ruby docs ?

    2009-09-22 15:07:28

    总结一下对研究Ruby很有用的网站。

    1. Ruby 官网: http://rubyforge.org/

    2. Manual for ruby gems: http://docs.rubygems.org/

    3. Manual for Ruby-oci8: http://ruby-oci8.rubyforge.org/en/

    4. Manual for Watir: http://wtr.rubyforge.org/rdoc/

     

  • Windows下EasyPHP + mantis安装与配置(转)

    2009-09-22 14:41:21

    1. 简介


    EasyPHP是在Windows平台上运行的软件包,包括Apache服务器,MySQL数据库,PHP,以及phpMyAdmin工具。
    mantis是基于php/MySQL/web 的问题跟踪系统。

    2. 下载


    EasyPHP 1.8的下载地址为http://easyphp.org/telechargements.php3。EasyPHP 1.8包括:
    1) Apache 1.3.33(Win32)
    2) PHP 4.3.10
    3) phpMyAdmin 2.6.1
    4) MySQL 4.1.9

    mantisBT 1.1.8的下载地址为http://www.mantisbt.org/download.php

    3. 安装


    1)直接运行下载的EasyPHP安装文件easyphp1-8_setup.exe,EasePHP的缺省安装目录为C:\Program Files\EasyPHP1-8。
    2)将C:\Program Files\EasyPHP1-8下phpmyadmin文件夹移到C:\Program Files\EasyPHP1-8\www下。
    3)将下载的mantisbt_1.1.8.zip文件直接解压到C:\Program Files\EasyPHP1-8\www下。解压后,为了方便访问,将目录mantisbt_1.1.8改为mantisbt
    4)安装结束,先通过开始菜单 - 程序 - EasyPHP运行EasyPHP,再通过http://localhost:80/运行phpmyadmin和mantisbt。

    4. 配置


    1)更改Apache ServerAdmin设置
    在C:\Program Files\EasyPHP1-8\apache\conf下的httpd.conf文件中查找ServerAdmin,将ServerAdmin admin@localhost 改为ServerAdmin (有效的邮件地址)。

    2)更改MySQL的root口令
    运行phpmyadmin,编辑用户 'root'@'localhost'权限,更改密码为'admin'。执行后需要修改C:\Program Files\EasyPHP1-8\www\phpmyadmin下config_inc.php文件,将root用户的password由''改为'admin'。

    3)配置mantis
    运行mantis_1.0.5,第一次将自动进入admin页面,要求创建bugtracker数据库。成功后将进入登陆页面,使用administrator/root登录,mantis 便开始工作。(注意:配置mantis成功后,应该删除C:\Program Files\EasyPHP1-8\www\mantisbt下的admin目录;同时禁止administrator账户或改变administrator账户的缺省口令。)

    4)邮件服务器配置
    在C:\Program Files\EasyPHP1-8\apache下的php.ini文件中查找SMTP,将SMTP = localhost改为你的发件服务器,如SMTP = smtp.sina.com.cn;查找sendmail_from,将前面的分号去掉,并在后面填上邮件地址:sendmail_from = (有效的邮件地址)。

    在C:\Program Files\EasyPHP1-8\www\mantisbt\config_inc.php文件中添加
        $g_smtp_host='smtp.sina.com.cn';
        $g_smtp_username='帐号';
        $g_smtp_password='密码';
        $g_phpMailer_method =2;  

    5)中文显示
    在C:\Program Files\EasyPHP1-8\www\mantisbt\config_inc.php文件中添加
    $g_default_language='auto';

    6)文件上传

    在C:\Program Files\EasyPHP1-8\www\mantisbt\config_inc.php文件中添加
    $g_allow_file_upload=ON;
    $g_file_upload_method=DISK;
    并且在C:\下创建upload目录。(注意最好不要用中文目录名,目录名中间也不要带空格。)

    当你以管理员身份登录,新建项目时,在上传文件路径那一项填上C:\upload即可。

    7)其他问题
    配置完成后,键入http://localhost/mantisbt/login_page.php 就可以打开mantis登录页面了。但要使网内其他用户也能访问服务器,应该把conf_files\httpd.conf文件的Listen后的地址(默认为127.0.0.1:80)改为服务器地址。这样就可以从其他客户端访问了。

    大功告成!
  • 又找到一个好的DBI文档。

    2009-09-10 16:47:13

    有些例子,而且是中文的

    http://qzriso.javaeye.com/blog/451946
  • ruby如何调用excel

    2009-08-24 12:11:00

    require 'win32ole'

    def test_excel

      excel = WIN32OLE.new("excel.application")       #new a excel file

      excel.visible = true                            #if true, excel is visible

      workbook = excel.workbooks.open('D:\test.xls')  #open an existing excel file

      worksheet=workbook.worksheets("sheet1")         #locate to sheet1

      worksheet.Range('A1')['Value'] = "Name"         #fill name to cell A1

      workbook.save()                                 #save file

    end

  • ruby如何调用javascript

    2009-08-24 11:56:24

    要实现ruby调用javascript,只要扩展Watir下的IE类就可以解决啦。

    save as js_extension.rb

    module Watir
        class IE
            def execute_script(scriptCode)
                window.execScript(scriptCode)
            end

        end
    end

    require 'js_extension'  #调用前,先require

    ie.execute_script. "script"   

     

     

  • 如何实现ruby 访问 oracel很好的资料

    2009-07-23 17:19:22

    如何实现ruby 访问 oracel很好的资料

    http://developer.51cto.com/art/200704/45660_2.htm
271/212>
Open Toolbar