生物信息学编程语言选择

我们应该选择什么样的编程语言呢,因为要投入很多,所以这个选择显得很慎重,又因为是刚刚开始,掌握的信息有极其有限,面对选择就很茫然,如何选择呢?看看身边的人用什么编程语言,看看相关的招聘广告中要求什么语言,看看什么语言的书买得多,当然只看这些因素不同时间,不同地点,不同的环境,带着许多偶然性,下面就让我们跟随Paul Graham, 看看黑客们是如何选择编程语言的: Continue reading

使用perl脚本抓取网页总结

使用perl实现网页抓取,对网络蜘蛛的初步尝试。

环境

 windows xp,IIS,perl 5.88,CMD

使用到的模块

use LWP::Simple; 用来得到网页
use HTML::HeadParser; 对部分进行解析,得到标题、编码、关键词等
use HTML::FormatText::WithLinks; 将html变成文本可读样式
use Encode qw/encode decode/; 解决不同网页的编码问题

 需求

在CMD中调试,最后IIS中调用,解析结果要保存到数据库中,数据库中采用utf8编码,解析的网页为gb2312编码,所以理清编码特别重要。

关于编码首先应该弄清楚的概念

  • Perl字符串是使用utf8编码的,也就是说读进perl的字符的编码格式都是utf8;
  • 读取输入时,perl会自动将其转换为urf8,输出时的编码依据运行环境已经上下游环境。

 乱码问题

脚本使用ANSI编码,只是数据库的内容使用decode,结果内容有个别字符乱码,是HTML::FormatText::WithLinks; 将html变成文本可读样式时出现问题。可以算是一个bug

 解决方法

脚本实用utf8编码,得到的网页首先进行decode,再进行其他的处理,问题解决,但在cmd下调试的时候,会有“Wide character in print”警告信息,因为环境是gbk,输出urt8编码是会报警,使用encode(“euc-cn”, $value),对输出进行转义,可以解决这个问题,而网上说的加 use encoding “utf-8”; 不能解决这个问题。

 其他需要注意的问题

  •  调用匹配的内容再去匹配其他内容时,注意对该内容的元字符进行转义;
  • 入库的内容也要进行转义;

 遗留问题:IIS对perl的支持,配置没有问题,增加了对.pl、.cgi的定义,测试时发现在IE下正常,在firefox下弹出保存文件的对话框,但是以前的.pl正常。估计于haed的输出有关系,还有待于进一步的测试。 Continue reading

配置Eclipse支持perl脚本开发

1 Installation

EPIC(Eclipse Perl Integration)是一个基于Eclipse平台的开源Perl集成开发环境。其支持的功能有语法高亮、语法检查、代码提示、Perldoc支持、模版、Perl调试器和正则表达式插件等。

在安装EPIC之前需要安装Eclipse3.1以上版本,此外还需要安装Perl解释器(Unix和Linux平台通常会缺省安装Perl,Windows平台上可以安装ActivePerl,下载地址www.activestate.com)。

可以通过Eclipse Update Manager来安装EPIC。选择菜单Help->Software and Updates->Find and Install,在弹出的Install/Update对话框中选择Search for new features to install然后单击下一步,在弹出的Install对话框中单击New Remote Site,在弹出的对话框中输入Name(例如EPIC)和URL(http://e-p-i-c.sf.net/updates)然后单击确定。接下来在Install对话框中选中刚才新建的Site,单击完成。按照向导的指示完成后续的过程,忽略途中提示的未经签名的警告。重启Eclipse后,EPIC应该已经安装完毕了。 Continue reading

perl:Catalyst框架

Catalyst 是对最近颇为流行的 MVC 模型或者说是 Ruby on rails 在 Perl 上的实现。在我看来,Perl 其实功能啥都不缺,就缺一组合。而 Catalyst 就是一个快速 Web 开发的漂亮组合拳。

M – Model, 一般用来将数据库对象化,这样能比较容易访问和操作。Perl 中最有名的就是 Class::DBI

V – View, 就是视图,用来处理界面显示。Perl 中比较有名的是 Template-Toolkit 和 Mason

C – Controller, 就是控制器。就是针对不同的 action 或 request, 来执行不同的代码。另外有个名词就是分发/Dispatch

Catalyst 中可以使用很多不同的 Model 和 View/Template. 看个人喜好而定,我一般偏向于使用最流行的 CDBI 和 TT.

Class::DBI 和 TT 本来在 Perl 世界中就很出名。而按一般逻辑思维,视图与模型搞定后就剩下事件处理了。Catalyst 无缝地整合了这两者,而事件处理/Controller 则让我赞不绝口。

AWStats:IIS服务器日志文件的转换脚本

在实际应用中,许多的时候我们并没有权限配置服务器,只能得到一份特定格式的日志文件,这时候就需要首先将这些脚本转换为AWStats支持的格式,以下是我用Perl写的转换脚本,脚本会生产新的日志文件,将AWStats用到的字段提取出来,将没有的字段设置为空。

支持参数 -i “原来日志存放的路径” -o “新文件存放的路径”,注意路径后面加“\”

Continue reading

使用Nmake实现windows下的编译安装

Windows下perl的模块也可以安装使用了,对于perl的原文件,一直不会安装,使用perl自带的工具  ppm,nnd,那个慢呀,今天来,想上网找些新的Repository,以期改变其下载速度,无意间找到一篇关于bioperl windows下安装的 说明,里面有关于bioperl的repository,我弄好后,安装一个模块,依然常常是timeout,我就索性把后面的都读了读,里面写了 另外的一种安装方法,就是使用编译器,对原代码进行安装,同时提供了编译工具Nmake的链接,文件不大,很快就下载好了,我随 便安装了一个模块,mygod,very good!,这下好了,我就可以摆脱两个系统了,既然我没有办法舍弃windows,那就完全用windows 好了,但是我开发出来的东西不会对windows有任何的依赖,这才是问题的所在。

使用perl的感想

2007-11-3 9:52
学习perl模块知识,进一步了解对象,了解对象的结构,对象之间的关系,并且可以做到快速的熟悉新的对象,会构建自己的对象,徘徊中前进这本身就是一种成长的方式,关键是要知道去总结,比如对于bioperl的应用,对于自己遇到的每一问题,以及这个问题解决过程做一个很好的终结,只有这样自己才能进步的更快,更快的掌握这样的语言。
1 代码测试或者开发要强调环境,在写代码时首先把环境注释到开始的地方。
2 不懂的地方,不要去触摸,比如设置系统,比如安装软件,这次平台的建设,自己因为这个浪费了很多的时间,比如自己随意的设置了bios里面的选系,造成不能上网,当时设置后没有发现影响,到重新安装好系统后,问题出来了,总想是系统安装的问题,结果找原因花了好多的时间。比如安装ubuntu的时候自己随便的安装软件,也是因为安装软件太容易的了,所以就想把自己常用的或者可能用到的软件全部的安装上去,结果造成软件的冲突,apache启动后mysql模块不能正常的加载。所以做任何一件事情都应当慎重,去一个改变都要去测试一下,有什么影响。
3 写日志,每天做什么了,都要写进日志,并且要将日志进一步的人性化,同时写软件的时候也要留日志接口,将对数据库做的更改记录到日志,将对于软件做的更改记录的日志当中。
4 代码里面添加注释,这个变得越来越重要了。让代码便的尽量的容易看懂,对自己都是非常好的。
5 一次就把事情做好,比如一个脚本的强壮性,比如报错,比如日志,比如接口,等把这一切都做好以后,才算这件事情做好,不要做一半,不要把最难的做了,而后面决定是否容易使用的最重要的环节却给仍下了。
6 对于自己常用的软件要注意保存不同的版本,我想以后能看懂人家的更新通报就是一个非常大的进步了,用perl可以做很多的事情,所以坚定了我的目标就是perl。