离弦之Ray

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

#

最近需要使用Perl,就随便总结一下。

首先当然是环境的建立了,linux下不用管,都是自带了,直接就可以编写Perl脚本去了。

在Windows下需要去下载并且安装一个Active Perl,可以到这个网站http://www.activestate.com/Products/activeperl/index.mhtml去下载。

关于开发工具,已经存在一个Eclipse的插件,里面还带有正则表达式测试等功能,但是不是很成熟。其实只用带有代码着色的文本工具即可,然后在命令行调用Perl yourPerl.PL就可以了。

Perl最具特点是它有很多包含各种功能的Module可以被使用,你可以到http://www.cpan.org/去Search,downlads它们。
这些模块下载下来以后是一个压缩文件,将其解压缩以后,里面一般会有Makefile.PL,用perl命令去运行这个脚本即
perl Makefile.PL
接下来如果是在linux下,依次打入命令:
make
make test
make install
注意make test会提示你这个模块所依赖的模块是否已经被安装,最好把它依赖的模块也一起安装了,否则后面可能会出问题。
不知道有没有ANT里面 fetch-depends类似的功能,暂时没有找到。
如果你在windows下,make就要换成nmake了。

有少数的模块里面并没有Makefile.PL而是一个Build.PL,需要特殊的模块来安装,这个模块叫什么记不清了,可以去上面那个网站去搜索一下。

好了,环境工具都搞定了,找本书吧,O'Relly 的Learning Perl是很好的入门读物,甚者那个骆驼标志已经成为事实上Perl的代言人了。

然后就开始你的Perl旅程吧。


posted @ 2008-07-13 14:29 离弦之ray的技术天空 阅读(263) | 评论 (0)编辑 收藏

问:如何对私有方法进行单元测试?

答:重点在于,你不应该有任何方法是从一开始设计出来就是private的,因为你的每段程序都应该在单元测试的驱动之下产生,而测试是不可能驱动出 来一个private方法的。那么private方法从哪里来?只能从重构而来。所以答案是:private方法是不需要测试的,因为它是重构的产物,而 重构是不改变程序可观察之行为的。既然行为不改变,测试自然也不需要有任何改变,所以不需要针对private方法建立任何新的测试。

问:但是,如果private方法确实出现问题了怎么办?如果确实希望用测试来弄清一个private方法里面到底发生了什么,该怎么办?

答:如果一个private方法复杂到你不能一眼看清它,那它就太复杂了,你应该把它重构成为一个独立的class,然后针对这个class来建立单元测试。

 

 

 

posted @ 2008-04-16 20:54 离弦之ray的技术天空 阅读(2014) | 评论 (3)编辑 收藏

浏览器彻底换成了FireFox
编程用的是IDE是Eclipse
Server用的是Jboss
Office用的是Open Office


等待…………梦想中的Gphone

posted @ 2008-04-08 19:27 离弦之ray的技术天空 阅读(150) | 评论 (0)编辑 收藏

mysql的procedure不支持数组参数,在网上找了个强人的代码,与大家分享。
http://www.phpx.com/happy/thread-111759-1-1.html


DELIMITER ;
DROP DATABASE IF EXISTS PRO;
USE MYSQL
CREATE DATABASE PRO;
USE PRO
DROP TABLE IF EXISTS TEMP;
CREATE TABLE TEMP (
  ID                        INT(8)                NOT NULL AUTO_INCREMENT,
  FOREIGN_KEY               INT(8)                NOT NULL,
  PRIMARY KEY (ID)
) TYPE=MyISAM AUTO_INCREMENT=1 COMMENT='测试';

DELIMITER ;
DELIMITER //
DROP PROCEDURE IF EXISTS DNA  //
CREATE PROCEDURE DNA (IN THE_CNT INT(8), IN THE_STR VARCHAR(10000))
BEGIN
  DECLARE i INT(8) DEFAULT 0;
  REPEAT SET i = i + 1;
  INSERT INTO TEMP VALUES (NULL, SUBSTRING_INDEX(SUBSTRING_INDEX(THE_STR, ',', i), ',', -1));
  UNTIL i >= THE_CNT END REPEAT;
END
//
DELIMITER ;

CALL DNA(7, '231,24,1114,151,7831241,9134,989');
SELECT * FROM TEMP;
+----+-------------+
| ID | FOREIGN_KEY |
+----+-------------+
|  1 |         231 |
|  2 |          24 |
|  3 |        1114 |
|  4 |         151 |
|  5 |     7831241 |
|  6 |        9134 |
|  7 |         989 |
+----+-------------+
posted @ 2008-03-06 19:44 离弦之ray的技术天空 阅读(2204) | 评论 (0)编辑 收藏

刚才试图搞mysql的存储过程,被郁闷了一回,最简单的存储过程,只要加上begin 和end就有莫名其妙的错误。

比如
CREATE PROCEDURE p()
BEGIN
  SELECT * FROM T;
END;
够简单了吧?就是报错,其实是分号的问题,说的正规点叫分隔符。

应该这样
1.    delimiter //
2.    CREATE PROCEDURE p()
3.    BEGIN
4.      SELECT * FROM T;
5.    END//
6.
7.    delimiter ;

第一行把分隔符改成双杠,这样到中间 FROM T的时候mysql不会认为SQL命令已经结束了;
第七行把分隔符再改回来,不然以后不习惯。
posted @ 2008-03-06 19:35 离弦之ray的技术天空 阅读(668) | 评论 (0)编辑 收藏

仅列出标题
共11页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last