Evolve automation

程序员很受伤的三个器官是眼睛、手腕和腰,自动化是保养这些部位的良药之一。尽量把工作自动化,就无需整日一目十行地在屏幕上搜索,也无需频繁地敲打键盘和点击鼠标,从而腾出时间站起来活动筋骨或去运动。

“不积跬步,无以至千里”,在软件开发过程中全面实施自动化也不是朝夕之间就能完成的事。但是,如果不去做的话,就永远也实现不了。其实,“自动化”也不是什么神乎其神的事,说白了,就是能让程序做的事就不要手工做。比如,我们项目的check in流程分两步,首先提交代码,然后发一封check in email,列出修改(包括添加和删除)的文件,再简单描述一下这段代码的功能或目的。我很听话地按照这种模式工作了近三年,直到最近才发觉有点傻。第一,email的标题和提交时使用的message基本是一样的,email的格式和部分内容也是固定的;第二,列出相关文件的操作也很烦琐。于是,我写了一个Perl脚本,利用CvsEmail::Send两个Perl模块简化了这一过程。对于经常做merge的人来说,这个脚本节省的时间更加客观。当然,更好的解决方案是把这个功能做在服务器端,可惜想在Intel,服务器往往都在开发人员的控制之外。

自动化的效果不仅体现在工作效率上,对程序员的精神鼓励也很重要。程序员在实现自动化的过程中提高了自信,获得了成就感,工作的动力也会随之提升;而自动化节省的时间,使得程序员可以把精力用于更有趣也更重要的工作中去,从而更充分地实现人生价值。

Install Perl Module from CPAN

我们的测试过程大部分已经自动化了,但还是需要在每次代码更新后手工提交。虽然我只负责其中一种测试,但对时刻关注是否有代码更新感到十分厌烦,有时候甚至会忘记为某次代码更新做测试。于是想着这个过程是否也能自动化。

我负责的测试是以web方式提供的,每次都是打开浏览器,填几项内容,然后提交,测试跑完后会用email的方式发出测试报告。因此,我的自动化要做这么几件事:

  1. 定期检查是否有代码更新。因为测试十分耗时,所以两次代码更新之间的间隔会比较长,所以我认为每一小时检查一次就足够了。
  2. 如果发现有代码更新(我们每次代码更新都会修改一个特定的文件,因此只要检查那一个文件就可以了),就更新所有代码,然后编译。
  3. 提交测试。

为了实现第三步的自动化,我决定使用LWP这个Perl Module。但是Cygwin本身并没有这个module,必须要自己装。下面是我安装这个module的方法。

  1. 首先配置CPAN Module,方法是在bash下面运行

    $ perl -MCPAN -eshell

    配置过程会询问一些问题,其中CPAN的镜像可以选择http://cpan.linuxforum.net/

  2. 接下来要更新CPAN Module,而不是直接装LWP。否则会遇到undefined subroutine &Digest::base::new之类的错误。方法是运行

    cpan> install Bundle::CPAN

    这一步是关键,切记切记。我开始不知道,还在网上搜索这个错误信息,发现有人说是Perl的问题,我就把整个Cygwin更新到1.5.19.4,结果啥用也没有,还把其它东西弄得一塌糊涂。

  3. 装好新的CPAN Module,先退出,然后再运行1里面的命令进入CPAN的shell,这时就可以装LWP了

    cpan> install Bundle::LWP

    安装Bundle::LWP意味着不仅安装LWP,而且安装它需要的其它module。