logoruby


ubuntu启动中添加脚本

Posted in linux by wanguan2000 on the 10月 20th, 2008

今天为服务器配置双网卡的时候,需要配置路由.因为路由是用命令添加的,所以每次关机或重起系统,路由就丢失了.于是想到每次重起的时候执行一段脚本用来添加路由,这样我就不用每次重起都手动添加了.

以下用添加路由为例.

我想在系统启动时执行:

sudo route add -net 10.35.0.0/24 gw 10.35.0.254 dev eth0
sudo route add -net 10.35.51.0/24 gw 10.35.0.254 dev eth0
sudo route add -net 10.35.60.0/24 gw 10.35.0.254 dev eth0

1.首先,我们创建一个 /etc/network.script 文件.输入命令:

sudo nano /etc/network.script

2.接着我们在文本编辑器中输入我们要执行的命令.如上面的:

sudo route add -net 10.35.0.0/24 gw 10.35.0.254 dev eth0
sudo route add -net 10.35.51.0/24 gw 10.35.0.254 dev eth0
sudo route add -net 10.35.60.0/24 gw 10.35.0.254 dev eth0

3.按 Ctrl + O 保存文件,然后按 Ctrl + X 退出.

4.接着我们再用 nano 打开 /etc/rc.local .输入命令:

sudo nano /etc/rc.local

5.在文本编辑中,我们会看到提示说 /etc/rc.local 默认是空的.但我打开的时候,会看到里面其它有一行:

exit 0

如果是这样,我们一定要在 exit 0 之前输入我们要执行的脚本文件.如下:

sh /etc/network.script
exit 0
在ubuntu系统中,系统启动项目放置在/etc/rcS.d,/etc/rc0.d,/etc/rc1.d,/etc/rc2.d, /etc/rc3.d,/etc/rc4.d,/etc/rc5.d这几个文件夹下。其中的rcS.d文件夹是系统最先启动的内容,然后根据系统运行级别 运行对应的rcx.d文件夹内的脚本文件。
在linux系统内,一般运行于3,如果运行X系统则是5。
在rcX.d系列文件夹内,脚本其实是链接,真正的脚本文件存放在/etc/init.d文件夹下。在rcX.d系列文件夹内的脚本链接名字,以K开头的 是传递stop参数用来停止相应的服务(kill),以S开头传递start参数用来启动相应的服务。K或者S后面的数字决定了这个脚本运行的先后顺序, 数字越大运行次序越靠后。
用户添加的一般启动项放在/etc/rc.local文件内。据某些资料说这个文件也是个链接,真正的文件放在/etc/init.d/rc.local文件内。不过我看到的好像不是这样的。/etc/rc.local就是单独的文件。

在ubuntu系统内,提供了rcconf程序和sysv-rc-conf程序用来帮助用户增加删除和调整启动项。比自己直接编辑rc.local文件要方便的多。

评论关闭

rails如何统一出错页面?

Posted in rails by wanguan2000 on the 10月 20th, 2008

rails如何统一出错页面?

每次胡乱瞎搞一通,出现个错误,我们看到是没所谓,客户看到可就不爽了。今天看到javaeye的出错页面不错,找了下资料也给自己的加上统一出错页面。
rails在出错的时候会调用rescue_action(exception) ,我们只要在application.rb覆盖这个函数就可以了:
def rescue_action(exception)
log_error(exception) if logger
erase_results if performed?

if consider_all_requests_local || local_request?
rescue_action_locally(exception)
else
render :file => “#{RAILS_ROOT}/public/error.html”
end
end

这里修改成只有同个网段,应该是局域网的报详细的出错信息,其他用户就给他个统一的友好的出错页面。
刚刚试了一下如果只是local_request?那只有你的机器可以看到,测试员的机器都看不到出错信息。具体的做法就是这样,其实像我这种情况,只需要覆盖
rescue_action_in_public(exception)这个就可以了。
评论关闭

处理无法识别的URL

Posted in rails by wanguan2000 on the 10月 20th, 2008

在定义的所有的路由规则之后(包括rails自带的路由)

map.connect ‘*invalid’, :controller => ’search’ , :action => ‘index’

评论关闭

ruby math 介绍

Posted in ruby by wanguan2000 on the 10月 20th, 2008

支持浮点运算的类. 在Math模块中, 定义了两套内容相同的方法和特殊方法, 因此,既可以使用模块的特殊方法, 又可以将模块包含到类中之后,使用它的普通方法.

例:

pi = Math.atan2(1, 1)*4;
include Math
pi2 = atan2(1, 1)*4

模块函数:

Math.acos(x)
Math.asin(x)
Math.atan(x)

以弧度返回x的反三角函数值.

返回值的范围分别是[0, +π] 、[-π/2, +π/2]、 (-π/2, +π/2).

在acos(x), asin(x)中,x的取值范围必为 -1.0 <= x <= 1 .(通常返回NaN)

ruby 1.7 特性: acos(), asin()遇到超出范围的参数时,会引发Errno::EDOM异常.
Math.atan2(y, x)

返回 [-π , π] 之间的 y/x的反正切值.
Math.acosh(x) ((<ruby 1.7 特性>))
Math.asinh(x) ((<ruby 1.7 特性>))
Math.atanh(x) ((<ruby 1.7 特性>))

返回x的反双曲线函数值.

asinh(x) = log(x + sqrt(x * x + 1))
acosh(x) = log(x + sqrt(x * x – 1)) [x >= 1]
atanh(x) = log((1+x)/(1-x)) / 2     [-1 < x < 1]

在acosh(x)中,x的取值范围是x >= 1 . (通常会引发Errno::EDOM异常)

在atanh(x)中,x的取值范围是 -1.0 < x < 1 .(通常会引发Errno::EDOM异常)
Math.cos(x)
Math.sin(x)
Math.tan(x)

返回[-1, 1]之间的以弧度表示的x的三角函数值.
Math.cosh(x) ((<ruby 1.7 特性>))
Math.sinh(x) ((<ruby 1.7 特性>))
Math.tanh(x) ((<ruby 1.7 特性>))

返回x的双曲线函数的值.

cosh(x) = (exp(x) + exp(-x)) / 2
sinh(x) = (exp(x) – exp(-x)) / 2
tanh(x) = sinh(x) / cosh(x)

Math.erf(x) ((<ruby 1.8 特性>))
Math.erfc(x) ((<ruby 1.8 特性>))

返回 x 的误差函数(erf)、补余误差函数(erfc)的值.
Math.exp(x)

返回x 的指数函数的值.
Math.frexp(x)

返回实数x 的指数部分和假数部分.
Math.hypot(x, y) ((<ruby 1.7 特性>))

返回sqrt(x*x + y*y).
Math.ldexp(x,exp)

先以2为底数进行exp的指数运算, 然后乘以实数x,返回计算结果.
Math.log(x)

返回x的自然对数.

x必为正数(通常情况下, 若为负值则返回NaN , 若为0则返回-Infinity)

ruby 1.7 特性: 遇到超出范围的参数时, 若为负数则引发Errno::EDOM异常, 若为0则引发Errno::ERANGE异常.
Math.log10(x)

返回x的常用对数.

x必为正数(通常情况下, 若为负值则返回NaN , 若为0则返回-Infinity)

ruby 1.7 特性: 遇到超出范围的参数时, 若为负数则引发Errno::EDOM异常, 若为0则引发Errno::ERANGE异常.
Math.sqrt(x)

返回x的平方根. 若x为负值, 则引发ArgumentError异常.

ruby 1.7 特性: 通常情况下, 若x为负值,则引发Errno::EDOM异常.

常数:

E

自然对数的底数

p Math::E
# => 2.718281828

PI

圆周率

p Math::PI
# => 3.141592654

评论关闭

ruby使用区间实现了3中不同特性:序列,条件和间隔。

Posted in ruby by wanguan2000 on the 10月 16th, 2008

ruby使用区间实现了3中不同特性:序列,条件和间隔。
一、序列
在ruby中只用”..”和”…”区间操作符来创建序列。两个点的形式是创建闭合的区间(包括右端的值),而3个点的形式
是创建半开半闭的区间(不包括右端的值)。
注意:
1、任何类型的对象都可以构造区间,只要这些对象可以使用它们的<=>操作符来进行比较,同时支持succ方法,返回序列中的下一个对象
2、区间在内部用列表表示,1..100序列被存储为Range对象,它包含对两个Fixum对象的引用。可以通过to_a方法把区间转换成列表。
(1..10).to_a —[1,2,3,4,5,6,7,8,9,10]
二、区间作为条件
当区间作为条件的时候,它表现的就像一个双向开关,当区间的第一部分的条件为true时,它们就打开,当区间第二部分
的条件为true时,他们就关闭。
注意,每一个区间对象唯一对应一个状态机。
1、在条件语句中区间作为条件时,当开始条件为true时,状态机从原来状态变更一次,然后紧接着判断结束条件,如果
结束条件为false,则状态机的最终状态为由开始条件时的状态,如果为true,则状态机的发生状态变更。
注意,结束条件的发生的状态变更不会影响这条语句的返回结果,这个语句的返回结果由开始条件所决定的状态机的结果而定。
但是状态机的结果受结束条件的影响。
2、在循环或迭代中运用区间作为条件时,如果每次循环或迭代所使用的区间对象是同一个对象,那么每次循环后的状态机将影响下次循环。
      下面是列子:

 

ruby 代码

  1. puts a = (11..20).collect {|i| (i%4==0)..(i%3==0) ? i : nil}  

结果显示如下:

1、  如果状态机原来状态是关,且开始条件为true,则状态机将从关变成开,如果状态机原来状态是开,则状态不变

2、  如果状态机状态为开,且结束条件为true,则状态机将从开变关,如果状态机状态是关,则状态不变。

3、  调用的返回结果由当前状态机的状态列决定。如果为开就返回true,否则返回false

4、  区间对象第一次调用时,其状态机状态为关,以后每次调用时,其状态机的初始状态是上次调用结束后状态机的状态。

注意:如果是采用三点式的区间不会在进入开状态后立即进入求解结束条件,

 三、区间作为间隔
区间作为间隔测试:用于判断一些值是否会落入区间表达的间隔内。使用===操作符完成这个。

评论关闭

引物设计数据库

Posted in rails by wanguan2000 on the 10月 14th, 2008

create database primer_database;
use primer_database;

create table primers(

id int not null auto_increment,
primer_name varchar(100) not null,
forward_primer varchar(100) not null,

forward_TM  decimal(8,2),
foGC_percent decimal(8,2),
forward_length decimal(8,0),

reverse_primer varchar(100),
reGC_percent decimal(8,2),
reverse_length  decimal(8,0),

product_sequence varchar(50000),
product_Gcpercent  decimal(8,2),
product_length  decimal(8,0),
product_TM  decimal(8,0),

citation  varchar(400),
designer varchar(100) not null,
validity boolean,
electrophoregram mediumblob,

created_at timestamp not null,

primary key(id)
);

评论关闭

firewatir watir WIN32OLE

Posted in ruby by wanguan2000 on the 10月 4th, 2008

install: 

gem update –system

gem install watir –include-dependencies

require ‘firewatir’
include FireWatir
#ff.visible = false
ff = Firefox.new
ff.goto ‘www.google.com’
ff.text_field(:name, ‘q’).set(’keyword’)
ff.button(:name, ‘btnG’).click
ff.close

#2

require ‘watir’
include Watir
ie = Watir::IE.new
ie.goto(”http://www.zend2.com/browse.php?u=%3A%2F%2Fwww.chemicalbook.com%2FShowSupplierProductsDetail_518_6100.aspx&b=10“)
#ie.text_field(:name, “q”).set(”arwenedu”)
#ie.button(:name, “btnG”).click

aFile = File.new(”yahoo22.html” , “w”)
aFile << ie.html
aFile.close

ie.close

评论关闭

url 转义

Posted in rails by wanguan2000 on the 10月 1st, 2008

在用get方法或者post访问服务器时,请求的参数多个名称/值对,各个名称/对之间是用与号(&)分隔。如get请求:

http://localhost:8080/Chess/register?Name=ZhangSan&address=HuNan&Age=23http://localhost:8080/Chess/register?Name=Zhang%20San&address=HuNan&Age=23

这些名称/值对必须符合url编码,也就是说一些特殊的字符,如空格,问号,与号以及其他一些非字母字符(特别是中文-unicode编码)都必须进行编码,从而不至于混淆。

下面是我找到的有关url 编码字符对应表。当使用特殊字符时只需用右边的编码替换左边的符号就可以了,比如名字中有空格的话,如Name=Zhang San,而空格的url编码为%20则请求格式为:

URL Encoded Characters

backspace %08
tab %09
linefeed %0A
creturn %0D
space %20
! %21
” %22
# %23
$ %24
% %25
& %26
‘ %27
( %28
) %29
* %2A
+ %2B
, %2C
– %2D
. %2E
/ %2F
0 %30
1 %31
2 %32
3 %33
4 %34
5 %35
6 %36
7 %37
8 %38
9 %39
: %3A
; %3B
%3E
? %3F
@ %40
A %41
B %42
C %43
D %44
E %45
F %46
G %47
H %48
I %49
J %4A
K %4B
L %4C
M %4D
N %4E
O %4F
P %50
Q %51
R %52
S %53
T %54
U %55
V %56
W %57
X %58
Y %59
Z %5A
[ %5B
\ %5C
] %5D
^ %5E
_ %5F
` %60
a %61
b %62
c %63
d %64
e %65
f %66
g %67
h %68
i %69
j %6A
k %6B
l %6C
m %6D
n %6E
o %6F
p %70
q %71
r %72
s %73
t %74
u %75
v %76
w %77
x %78
y %79
z %7A
{ %7B
| %7C
} %7D
~ %7E
¢ %A2
£ %A3
¥ %A5
| %A6
§ %A7
« %AB
¬ %AC
¯ %AD
º %B0
± %B1
ª %B2
, %B4
µ %B5
» %BB
¼ %BC
½ %BD
¿ %BF
À %C0
Á %C1
 %C2
à %C3
Ä %C4
Å %C5
Æ %C6
Ç %C7
È %C8
É %C9
Ê %CA
Ë %CB
Ì %CC
Í %CD
Î %CE
Ï %CF
Ð %D0
Ñ %D1
Ò %D2
Ó %D3
Ô %D4
Õ %D5
Ö %D6
Ø %D8
Ù %D9
Ú %DA
Û %DB
Ü %DC
Ý %DD
Þ %DE
ß %DF
à %E0
á %E1
â %E2
ã %E3
ä %E4
å %E5
æ %E6
ç %E7
è %E8
é %E9
ê %EA
ë %EB
ì %EC
í %ED
î %EE
ï %EF
ð %F0
ñ %F1
ò %F2
ó %F3
ô %F4
õ %F5
ö %F6
÷ %F7
ø %F8
ù %F9
ú %FA
û %FB
ü %FC
ý %FD
þ %FE
ÿ %FF

评论关闭

smiles

Posted in cheminformatics by wanguan2000 on the 10月 1st, 2008

http://www.chemexper.com/
ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF/

http://sparc.chem.uga.edu/sparc/

评论关闭

Open Babel: The Open Source Chemistry Toolbox

Posted in cheminformatics by wanguan2000 on the 10月 1st, 2008

http://openbabel.org/wiki/Main_Page

Open Babel is a chemical toolbox designed to speak the many languages of chemical data. It’s an open, collaborative project allowing anyone to search, convert, analyze, or store data from molecular modeling, chemistry, solid-state materials, biochemistry, or related areas.

http://www.ccl.net/cca/software/UNIX/babel/index.shtml

Open Babel: The Open Source Chemistry Toolbox
http://openbabel.org/wiki/Main_Page

Convert and manipulate chemical data files (development version)
Openbabel is a GPL and C++ rewrite of the ‘babel’ program to convert the
various file formats used in chemical software. The command-line interface
is mostly identical to the old ‘babel’ executable and recognizes these
file formats among many others:

Alchemy, ChemDraw, CML, GAMESS, Gaussian, HyperChem, MDL Isis and Molfile,
MOPAC, MPQC, PDB, SMILES and XYZ.

This package contains the static library and the header files.

Linux4Chemistry
http://www.redbrick.dcu.ie/~noel/linux4chemistry/linux4chemistry.py

In perl, I know that thera are many chemistry-related modules like Chemistry::File::SDF, Chemistry::File::smiles, and so on.
http://search.cpan.org/~itub/Chemistry-Smiles-0.13/Smiles.pm
http://search.cpan.org/~itub/Chemistry-File-SMILES-0.45/SMILES.pm
http://search.cpan.org/~brequesen/Chemistry-Artificial-SQL-0.01/lib/Chemistry/Artificial/SQL.pm

Ubuntu8.04安装XCrysDen
2008-05-23 10:33
准备软件:
1. sudo apt-get install openbabel
2. sudo apt-get install imagemagick
3. sudo dpkg -i whirlgif_3.04-1_i386.deb
4. sudo apt-get install lpr

安装命令
——–
1. tar zxvf xc-1.4.1bin-linuxPC-static.tar.gz
2. cd XCrySDen-1.4.1bin-static/
./xcConfigure.sh
3. relogin bashrc
. ~/.bashrc

chemruby
http://rubyforge.org/projects/molruby
This project aims at providing a cheminformatics tools shell and a simple plugin mechanism for extending the system with additional tools on an on-going basis.

openbabel 软件包文件清单
/usr/bin/babel
/usr/bin/obchiral
/usr/bin/obenergy
/usr/bin/obfit
/usr/bin/obgrep
/usr/bin/obminimize
/usr/bin/obprop
/usr/bin/obrotamer
/usr/bin/obrotate
/usr/bin/roundtrip
/usr/share/doc/openbabel/AUTHORS
/usr/share/doc/openbabel/FAQ.html
/usr/share/doc/openbabel/NEWS.gz
/usr/share/doc/openbabel/README
/usr/share/doc/openbabel/THANKS
/usr/share/doc/openbabel/changelog.Debian.gz
/usr/share/doc/openbabel/changelog.gz
/usr/share/doc/openbabel/copyright
/usr/share/man/man1/babel.1.gz
/usr/share/man/man1/obchiral.1.gz
/usr/share/man/man1/obfit.1.gz
/usr/share/man/man1/obgrep.1.gz
/usr/share/man/man1/obprop.1.gz
/usr/share/man/man1/obrotate.1.gz
/usr/share/openbabel/2.1.1/SMARTS_InteLigand.txt
/usr/share/openbabel/2.1.1/aromatic.txt
/usr/share/openbabel/2.1.1/atomtyp.txt
/usr/share/openbabel/2.1.1/bondtyp.txt
/usr/share/openbabel/2.1.1/element.txt
/usr/share/openbabel/2.1.1/ghemical.prm
/usr/share/openbabel/2.1.1/isotope-small.txt
/usr/share/openbabel/2.1.1/isotope.txt
/usr/share/openbabel/2.1.1/logp.txt
/usr/share/openbabel/2.1.1/mr.txt
/usr/share/openbabel/2.1.1/patterns.txt
/usr/share/openbabel/2.1.1/phmodel.txt
/usr/share/openbabel/2.1.1/psa.txt
/usr/share/openbabel/2.1.1/resdata.txt
/usr/share/openbabel/2.1.1/torlib.txt
/usr/share/openbabel/2.1.1/types.txt
/usr/share/povray/include/babel31.inc

http://sourceforge.net/project/showfiles.php?group_id=40728

评论关闭