Monday, March 30, 2009

MySQL数据类型列表

名称
长度
用法
TINYINT(M)
BIT,BOOL,BOOLEAN
1
如果为无符号数,可以存储从0到255的数;
否则可以存储从-128到127的数。
SMALLINT(M)
2
如果为无符号数,可以存储从0到65535的数;
否则可以存储从-32768到32767的数。
MEDIUMINT(M)
3
如果为无符号数,可以存储从0到16777215的数;否则可以存储从-8388608到8388607的数
INT(M)
INTEGER(M)
4
如果为无符号数,可以存储从0到4294967295的数,否则可以存储从-2147483648到2147483647的数。
BIGINT(M)
8
如果为无符号数,可以存储从0到18446744073709551615的数,否则可以存储从-9223372036854775808到9223372036854775807的数。
FLOAT(precision)
4或8
这里的precision是可以直达53的整数。如果precision<=24则转换为FLOAT,如果precision>24并且precision<=53则转换为DOUBLE。
FLOAT(M,D)
4
单精度浮点数。
DOUBLE(M,D),
DOUBLE PRECISION,
REAL
8
双精度浮点。
DECIMAL(M,D),
DEC,NUMERIC,FIXED
M+1或M+2
未打包的浮点数。
DATE
3
以YYYY-MM-DD的格式显示。
DATETIME
HH:MM:SS
8
以YYYY-MM-DD的格式显示。
TIMESTAMP
4
以YYYY-MM-DD的格式显示。
TIME
3
以HH:MM:SS的格式显示。
YEAR
1
以YYYY的格式显示。
CHAR(M)
M
定长字符串。
VARCHAR(M)
最大M
变长字符串。M<=255.
TINYBLOB,
TINYTEXT
最大255
TINYBLOB为大小写敏感,而TINYTEXT不是大小写敏感的。
BLOB,
TEXT
最大64K
BLOB为大小敏感的,而TEXT不是大小写敏感的。
MEDIUMBLOB,
MEDIUMTEXT
最大16M
MEDIUMBLOB为大小写敏感的,而MEDIUMTEXT不是大小敏感的。
LONGBLOB,
LONGTEXT
最大4G
LONGBLOB为大小敏感的,而LONGTEXT不是大小敏感的。
ENUM(VALUE1,….)
1或2
最大可达65535个不同的值。
SET(VALUE1,….)
可达8
最大可达64个不同的值。

Saturday, March 28, 2009

MySQL常用命令

1、显示数据库列表。

show databases;

刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。

2、显示库中的数据表:

use mysql;

show tables;

3、显示数据表的结构:

describe 表名;

4、建库:

create database 库名;

5、建表:

use 库名;

create table 表名 (字段设定列表);

6、删库和删表:

drop database 库名;

drop table 表名;

7、将表中记录清空:

delete from 表名;

8、显示表中的记录:

select * from 表名;

Linux下创建软链接

ln -s target_filename symlink_filename
亦可用于文件夹,将创建的软链接指向某文件夹;
普通的文件操作命令(如cp、rm等)都能直接作用于符号链接。

Thursday, March 26, 2009

R语言主成份分析(Principal Component Analysis)语句

predata = read.table("file", header=TRUE) #读入数据文件,若无header,则header=FALSE

data = scale(data, center = TRUE, scale = TRUE)
#若只标准化不中心化,则为center = FALSE, scale = TRUE, vice versa

R commands for PCA

Here are some R commands for PCA

pcdat = princomp(data) - It does actual job and put the results to pcdat. It will use covariance matrix

pcdat = princomp(data,cor=TRUE) - It will use correlation matrix

summary(pcdat) - It will print standard deviation and proportion of variances for each component

screeplot(pcdat) - It will plot screeplt

biplot(pcdat) or biplot.princomp(pcdat,scale=1) - It will give you biplot

loadings(pcdat) - it will give information how much each variable contribute to each component. For principal components you can ignore loading subsection of the output from this command

pcdat$scores - It will plot scores of each observation for each variable

For further details about this and other R commands type

help.start()

linux下常用解压和压缩命令

.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
---------------------------------------------
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
---------------------------------------------
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
---------------------------------------------
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
---------------------------------------------
.tgz
解压:tar zxvf FileName.tgz
压缩:未知
.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf FileName.tar.tgz FileName
---------------------------------------------
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
---------------------------------------------
.rar
解压:rar a FileName.rar
压缩:r ar e FileName.rar

rar请到:http://www.rarsoft.com/download.htm 下载!
解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp rar_static /usr/bin/rar
---------------------------------------------
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
lha请到:http://www.infor.kanazawa-it.ac.jp/.../lhaunix/下载!
>解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp lha /usr/bin/
---------------------------------------------
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
---------------------------------------------
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh
.lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
sEx请到: http://sourceforge.net/projects/sex下载!
解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp sEx /usr/bin/

转自:http://blog.chinaunix.net/u/4536/showart_231709.html

Wednesday, March 25, 2009

lftp命令集

lftp支持多种网络传输协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库),对于熟悉shell的人,lftp的使用会是非常亲切,因为lftp的命令非常像一个shell: 你可以使用Tab键补全命令;使用上下箭头快速切换到曾经输入的命令。它还允许多个后台任务执行等功能,还有书签、排队、镜像、断点续传、多进程下载等功能。

这里我只记录一些lftp常用的命令和参数,如果想获得全部用法,可以在shell中使用

lftp –help

或者在启动lftp后直接输入

help [command]

例如

help mirror

1、匿名登录ftp站点:

lftp ftp://your-domain/

或者

lftp

然后

open ftp://your-domain/

2、使用用户名(name)和密码(pass)登录ftp站点:

lftp ftp://your-domain/ -u name,pass

或者

lftp ftp://your-domain/ -u name

然后输入密码。

3、指定端口号为9000:

lftp ftp://your-domain/ -p 9000

4、下载单个文件:

get ReadMe.txt

5、断点续传:

get -c ReadMe.txt

6、批量下载文件:

mget *.mp3

7、下载一个目录:

mirror remote_dir_name [local_dir_name]

或者

mget -d remote_dir_name/*

-d参数表示在本地创建与远端目录相同名字的目录并把远端目录下所有文件下载到本地新建目录。

8、上传一个本地目录:

mirror -R local_dir_name [remote_dir_name]

或者

mput -d local_dir_name/*

9、10线程镜像一个目录:

mirror –parallel=10 remote_dir_name [local_dir_name]

10、8线程下载一文件:

pget -n 8 ReadMe.txt

该命令缺省线程为5。

11、只上传本地目录中比远程目录中新的文件:

mirror -R -N local_name [remote_name]

12、后台任务管理:
使用CTRL+Z使当前任务转入后台,或者在执行任务命令时加上“&”符号,这些和shell中一样,使用”jobs”查看后台进程,使用“queue”排队新的任务。如果lftp在退出时还有任务在进行,则lftp自动进入后台执行。

13、读取站点中所有文件的大小到本地记录文件:

du remote_dir_name log.txt

14、书签功能:

bookmark [SUBCMD]

子命令:
add []:把当前位置或特定位置加入以“name”命名的书签。
del :删除指定书签。
edit:编辑书签。
list:列出书签。

15、删除目录:

rm -r dir_name

建立目录:

mkdir dir_name

16、搜索文件:

ls -R | grep ReadMe.txt

或者

find -d 3 | grep ReadMe.txt

此处搜索深度为3。

转自:http://www.leninlee.cn/?p=306

Tuesday, March 24, 2009

使用Python操作MySQL之基础篇

使用Python操作MySQL
首先下载MySQLdb,地址:http://sourceforge.net/projects/mysql-python/

1. 使用
import MySQLdb
1.1. 连接
conn = MySQLdb.Connection(host, user, password, dbname)
1.2. 选择数据库,如果上面没有指定数据库,则使用此方法指定!
conn.select_db(’database name’)
1.3. 获得cursor
cur = conn.cursor()
1.4. cursor位置设定
cur.scroll(int, mode)
mode可为相对位置或者绝对位置,分别为relative和absolute。
1.5. select
cur.execute(‘select clause’)
例如
cur.execute(‘select * from mytable’)

row = cur.fetchall()
或者:
row1 = cur.fetchone()
1.6. insert
cur.execute(‘inset clause’)
例如
cur.execute("insert into user (Name, Password) values ('maggie','12345')")
conn.commit()

1.7. update
cur.execute(‘update clause’)
例如
cur.execute("update user set Name = 'eric chau' where id = 1")
conn.commit()

1.8. delete
cur.execute(‘delete clause’)
例如
cur.execute("delete from user where id = 1")
conn.commit()

完整代码:

from MySQLdb import Connect

def conn():
#conn = Connect('localhost','root','root')
#conn.select_db('eric')
conn = Connect('localhost','root','root','eric')
cur = conn.cursor()
cur.execute('select * from user')
cur.scroll(0)
row1 = cur.fetchone()
print 'id:', row1[0]
print 'name:', row1[1]
print 'password:', row1[2]
#cur.execute("insert into user (Name, Password) values ('maggie','12345')")
#cur.execute("update user set Name = 'eric chau' where id = 1")
cur.execute("delete from user where id = 11")
conn.commit()
if __name__=='__main__':
conn()

由于python的数据库模块有专门的数据库模块的规范,所以,其实不管使用哪种数据库的方法都大同小异的,这里就给出一段示范的代码:

#-*- encoding: gb2312 -*-
import os, sys, string
import MySQLdb

# 连接数据库 
try:
conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')
except Exception, e:
print e
sys.exit()

# 获取cursor对象来进行操作

cursor = conn.cursor()
# 创建表
sql = "create table if not exists test1(name varchar(128) primary key, age int(4))"
cursor.execute(sql)
# 插入数据
sql = "insert into test1(name, age) values ('%s', %d)" % ("zhaowei", 23)
try:
cursor.execute(sql)
except Exception, e:
print e

sql = "insert into test1(name, age) values ('%s', %d)" % ("张三", 21)
try:
cursor.execute(sql)
except Exception, e:
print e
# 插入多条

sql = "insert into test1(name, age) values (%s, %s)"
val = (("李四", 24), ("王五", 25), ("洪六", 26))
try:
cursor.executemany(sql, val)
except Exception, e:
print e

#查询出数据
sql = "select * from test1"
cursor.execute(sql)
alldata = cursor.fetchall()
# 如果有数据返回,就循环输出, alldata是有个二维的列表
if alldata:
for rec in alldata:
print rec[0], rec[1]

cursor.close()

conn.close()

转自:http://hi.baidu.com/cheneychen/blog/item/064f9d2b1b5d50fde6cd40dd.html

PlayList

死了都要爱
牵手

vim中缩进一块代码的方法

v模式选中,然后按[Shift+,或.],就是输入大于号小于号,大于号向右缩进。

在Python脚本中调用bash命令

import os
...
os.system('bash commands...')
...
Enjoy:)

Friday, March 20, 2009

Linux文件内容查看工具介绍

1、cat 显示文件连接文件内容的工具;

cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。

比如:
[root@localhost ~]# cat /etc/fstab

为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;


1.0 cat 语法结构;

cat [选项] [文件]...

选项
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
--help 显示此帮助信息并离开


1.1 cat 查看文件内容实例;

[root@localhost ~]# cat /etc/profile 注:查看/etc/目录下的profile文件内容;
[root@localhost ~]# cat -b /etc/fstab 注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
[root@localhost ~]# cat -n /etc/profile 注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
[root@localhost ~]# cat -E /etc/profile 注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;

cat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;

[root@localhost ~]# cat -n /etc/profile
[root@localhost ~]# nl /etc/profile

cat 可以同时显示多个文件的内容,比如我们可以在一个cat命令上同时显示两个文件的内容;

[root@localhost ~]# cat /etc/fstab /etc/profile

cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;

[root@localhost ~]# cat /etc/fstab /etc/profile | more


1.2 cat 的创建、连接文件功能实例;


cat 有创建文件的功能,创建文件后,要以EOF或STOP结束;

[root@localhost ~]# cat > linuxsir.org.txt << EOF 注:创建linuxsir.org.txt文件;
> 我来测试 cat 创建文件,并且为文件输入内容; 注:这是为linuxsir.org.txt文件输入内容;
> 北南南北 测试; 注:这是为linuxsir.org.txt文件输入内容;
> EOF 注:退出编辑状态;

[root@localhost ~]# cat linuxsir.org.txt 注:我们查看一下linuxsir.org.txt文件的内容;

我来测试 cat 创建文件,并且为文件输入内容;
北南南北 测试;

cat 还有向已存在的文件追加内容的功能;

[root@localhost ~]# cat linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;
I am BeiNanNanBei From LinuxSir.Org . 注:内容行
我正在为cat命令写文档


[root@localhost ~]# cat >> linuxsir.txt << EOF 注:我们向linuxsir.txt文件追加内容;
> 我来测试cat向文档追加内容的功能; 注:这是追回的内容
> OK?
> OK~
> 北南 呈上
> EOF 注:以EOF退出;


[root@localhost ~]# cat linuxsir.txt 注:查看文件内容,看是否追回成功。
I am BeiNanNanBei From LinuxSir.Org .
我正在为cat命令写文档

我来测试cat向文档追加内容的功能;
OK?
OK~
北南 呈上



cat 连接多个文件的内容并且输出到一个新文件中;

假设我们有sir01.txt、sir02.tx和sir03.txt ,并且内容如下;

[root@localhost ~]# cat sir01.txt
123456
i am testing

[root@localhost ~]# cat sir02.txt
56789
BeiNan Tested

[root@localhost ~]# cat sir03.txt
09876
linuxsir.org testing

我想通过cat 把sir01.txt、sir02.txt及sir03.txt 三个文件连接在一起(也就是说把这三个文件的内容都接在一起)并输出到一个新的文件sir04.txt 中。

注意:其原理是把三个文件的内容连接起来,然后创建sir04.txt文件,并且把几个文件的内容同时写入sir04.txt中。特别值得一提的是,如果您输入到一个已经存在的sir04.txt 文件,会把sir04.txt内容清空。

[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt

[root@localhost ~]# more sir04.txt
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testing

cat 把一个或多个已存在的文件内容,追加到一个已存在的文件中

[root@localhost ~]# cat sir00.txt
linuxsir.org forever

[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt

[root@localhost ~]# cat sir00.txt
linuxsir.org forever
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testing

警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;


2、more 文件内容或输出查看工具;


more 是我们最常用的工具之一,最常用的就是显示输出的内容,然后根据窗口的大小进行分页显示,然后还能提示文件的百分比;

[root@localhost ~]# more /etc/profile


2.1 more 的语法、参数和命令;

more [参数选项] [文件]

参数如下:
+num 从第num行开始显示;
-num 定义屏幕大小,为num行;
+/pattern 从pattern 前两行开始显示;
-c 从顶部清屏然后显示;
-d 提示Press space to continue, 'q' to quit.(按空格键继续,按q键退出),禁用响铃功能;
-l 忽略Ctrl+l (换页)字符;
-p 通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;
-s 把连续的多个空行显示为一行;
-u 把文件内容中的下划线去掉

退出more的动作指令是q


2.2 more 的参数应用举例;

[root@localhost ~]# more -dc /etc/profile 注:显示提示,并从终端或控制台顶部显示;
[root@localhost ~]# more +4 /etc/profile 注:从profile的第4行开始显示;
[root@localhost ~]# more -4 /etc/profile 注:每屏显示4行;
[root@localhost ~]# more +/MAIL /etc/profile 注:从profile中的第一个MAIL单词的前两行开始显示;


2.3 more 的动作指令;

我们查看一个内容较大的文件时,要用到more的动作指令,比如ctrl+f(或空格键) 是向下显示一屏,ctrl+b是返回上一屏; Enter键可以向下滚动显示n行,要通过定,默认为1行;

我们只说几个常用的; 自己尝试一下就知道了;

Enter 向下n行,需要定义,默认为1行;
Ctrl+f 向下滚动一屏;
空格键 向下滚动一屏;
Ctrl+b 返回上一屏;
= 输出当前行的行号;
:f 输出文件名和当前行的行号;
v 调用vi编辑器;
! 命令 调用Shell,并执行命令;
q 退出more

当我们查看某一文件时,想调用vi来编辑它,不要忘记了v动作指令,这是比较方便的;


2.4 其它命令通过管道和more结合的运用例子;

比如我们列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来,比如:

[root@localhost ~]# ls -l /etc |more


3、less 查看文件内容 工具;

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大;您是初学者,我建议您用less。由于less的内容太多,我们把最常用的介绍一下;


3.1 less的语法格式;

less [参数] 文件

常用参数
-c 从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
-f 强制打开文件,二进制文件显示时,不提示警告;
-i 搜索时忽略大小写;除非搜索串中包含大写字母;
-I 搜索时忽略大小写,除非搜索串中包含小写字母;
-m 显示读取文件的百分比;
-M 显法读取文件的百分比、行号及总行数;
-N 在每行前输出行号;
-p pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile
-s 把连续多个空白行作为一个空白行显示;
-Q 在终端下不响铃;

比如:我们在显示/etc/profile的内容时,让其显示行号;

[root@localhost ~]# less -N /etc/profile


3.2 less的动作命令;

进入less后,我们得学几个动作,这样更方便 我们查阅文件内容;最应该记住的命令就是q,这个能让less终止查看文件退出;

动作
回车键 向下移动一行;
y 向上移动一行;
空格键 向下滚动一屏;
b 向上滚动一屏;
d 向下滚动半屏;
h less的帮助;
u 向上洋动半屏;
w 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;
g 跳到第一行;
G 跳到最后一行;
p n% 跳到n%,比如 10%,也就是说比整个文件内容的10%处开始显示;
/pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
v 调用vi编辑器;
q 退出less
!command 调用SHELL,可以运行命令;比如!ls 显示当前列当前目录下的所有文件;

就less的动作来说,内容太多了,用的时候查一查man less是最好的。在这里就不举例子了;


4、head 工具,显示文件内容的前几行;

head 是显示一个文件的内容的前多少行;

用法比较简单;

head -n 行数值 文件名;

比如我们显示/etc/profile的前10行内容,应该是:

[root@localhost ~]# head -n 10 /etc/profile


5、tail 工具,显示文件内容的最后几行;

tail 是显示一个文件的内容的前多少行;

用法比较简单;

tail -n 行数值 文件名;

比如我们显示/etc/profile的最后5行内容,应该是:

[root@localhost ~]# tail -n 5 /etc/profile

转自:www.linuxsir.org

linux cat 命令用法

cat主要有三大功能:
1.一次显示整个文件。
$ cat filename
2.从键盘创建一个文件。
$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件。
$cat file1 file2 > file

使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
范例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打
cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 写到软碟,请打
cat IMG_FILE > /dev/fd0
注:
1. OUTFILE 指输出的 image 档名。
2. IMG_FILE 指 image file。
3. 若从 image file 写回 device 时,device 容量需与相当。
4. 通常用在制作开机磁片。

无题

窗含西岭千秋雪
门泊东吴万里船
很有意境~

Friday, March 13, 2009

Pyhon中的range()函数用法

range function generates lists containing arithmetic progressions:
>>> range(10)
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
It is possible to let the range start at another number, or to specify a different increment (even negative; sometimes this is called the `step'):

>>> range(5, 10)
     [5, 6, 7, 8, 9]
>>> range(0, 10, 3)
     [0, 3, 6, 9]
>>> range(-10, -100, -30)
     [-10, -40, -70]

To iterate over the indices of a sequence, combine range() and len() as follows:

>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
...     print i, a[i]
...
    0 Mary
    1 had
    2 a
    3 little
    4 lamb

Thursday, March 12, 2009

苏词三首

水调歌头

明月几时有?把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间?

转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。


念奴娇 赤壁怀古

大江东去,浪淘尽,千古风流人物。故垒西边,人道是、三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。

遥想公谨当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间、强虏灰飞烟灭。故国神游,多情应笑我,早生华发。人间如梦,一尊还酹江月。


水龙吟 次韵章质夫杨花词

似花还似非花,也无人惜从教坠。抛家傍路,思量却是,无情有思。萦损柔肠,困酣娇眼,欲开还闭。梦随风万里,寻郎去处,又还被、莺呼起。

不恨此花飞尽,恨西园、落红难缀。晓来雨过,遗踪何在,一池萍碎。春色三分,二分尘土,一分流水。细看来,不是杨花,点点是、离人泪。

Python中的异常与异常处理

异常是因程序出现了错误而在正常控制流以外采取的行为,分为两个阶段:引起异常发生的错误阶段和检测阶段。
Python中常见的异常有:
NameError: 尝试访问一个未初始化的变量
ZeroDivisionError: 除数为零
SyntaxError: Python解释器语法错误
IndexError: 请求的索引超出序列范围
KeyError: 请求一个不存在的字典关键字
IOError: 输入/输出错误
AttributeError: 尝试访问未知的对象属性
检测和异常处理:try-except语句
...try:
...     try_suite    #监控这里的异常
...except: Exception[, reason]:
...     except_suite    #异常处理代码
例如:
...try:
...     f = open('blah', 'r')
...except IOError, e:
...     print 'could not open file:', e

打印为:
could not open file: [Errno 2] No such file or directory

SecureCRT使用VIM时的高亮显示

在SecureCRT中设置 选项(options)->会话选项(session options)->终端(Terminal)->仿真(Emulation)->终端(Terminal):Linux
Restart...OK!

Wednesday, March 11, 2009

什么是外显子相位? What is exon phase?

内含子相位是由麻省理工学院的内含子发现者菲立浦·夏普定义的,它指内含子在基因内相对于遗传密码的3个核苷酸的位置。如果一个内含子是处在2个完整的密码间,则这一内含子定义为相位0;如果内含子是位于密码子内的第一和2个核苷酸之后,则定义为相位1和相位2。因此,内含子相位是一个只包括3个变量的极为简单的分子特征。内含子相位可以在相隔几亿年甚至十亿年保持恒定不变,因为导致相位变化的任何DNA小片段的缺失与插入都可能导致基因功能完全改变的移码突变,而被自然选择淘汰。另一方面,到今天为止的分子生物学研究表明内含子通常是没有功能的。因此,无论内含子的相位是什么,都会因为不影响基因功能而免于自然选择被保留下来。这就构成了内含子相位的随机统计分布预期的生物学依据。

Tuesday, March 10, 2009

Latex学习笔记

如何给方程组编一个序号?
引入amsmath包,写如下代码:
\usepackage{amsmath}
...
\begin{eqnarray}
\begin{split}
Y_{1}=\mathbf{a'_{1}X}=a_{11}X_{1}+a_{12}X_{2}+\cdots+a_{1p}X_{p}\\
Y_{2}=\mathbf{a'_{2}X}=a_{21}X_{1}+a_{22}X_{2}+\cdots+a_{2p}X_{p}\\
\vdots\qquad\qquad\qquad\qquad\quad\\
Y_{1}=\mathbf{a'_{p}X}=a_{p1}X_{1}+a_{p2}X_{2}+\cdots+a_{pp}X_{p}
\end{split}
\end{eqnarray}
效果如图:

如何插入图片(仅支持eps格式图片)?
\usepackage{graphicx}
...
\begin{figure}[!htbp]
\includegraphics[width=\textwidth]{file.eps}
\caption{此处为标题}\label{标签}
\end{figure}

如何使用中文?
在完全安装了CTEX的中文支持后,可通过下面配置直接使用中文:
\usepackage{CJK}
\begin{CJK}{GBK}{song}
\begin{document}
...
\end{CJK}
\end{document}

Monday, March 9, 2009

什么是测度?What is Measure?

σ代数的定义:

σ代数又叫σ域,σ代数上可以定义测度。定义:设X\ 为集合。满足以下条件的集合系\mathcal{F}称为X\ 上的一个σ代数:
它的性质:σ代数是一个代数(域)也是一个λ系,它对集合的交、并、补、可列交、可列并运算都是封闭的,可测空间就是定义在一个σ代数上。

测度的定义:

数学上,测度(Measure)是一个函数,它对一个给定集合的某些子集指定一个数,这个数可以比作大小、体积、概率等等。传统的积分是在区间上进行的,后来人们希望把积分推广到任意的集合上,就发展出测度的概念,它在数学分析和概率论有重要的地位。测度论是实分析的一个分支,研究对象有σ代数、测度、可测函数和积分,其重要性在概率论和统计学中有所体现。
形式上说,一个测度\mu\ (详细的说法是可列可加的正测度)是个函数。设\mathcal{A}是集合X\ 上的一个σ代数,\mu\ \mathcal{A}上定义,于扩充区间[0,\infty]中取值,并且满足以下性质:

空集的测度为零: \mu(\emptyset) = 0
可数可加性,或称σ可加性:若E_1,E_2,\cdots\mathcal{A}中可数个两两不交的集合的序列,则所有E_i\ 的并集的测度,等于每个E_i\ 的测度之总和:
 \mu(\bigcup_{i=1}^\infty E_i) = \sum_{i=1}^\infty \mu(E_i)
这样的三元组(X, \mathcal{A}, \mu)称为一个测度空间,而\mathcal{A}中的元素称为这个空间中的可测集。

开张——引兰亭集序于此,乃望“群贤毕至,少长咸集”

兰亭集序

  永和九年,岁在癸丑,暮春之初,会于会稽山阴之兰亭,修禊事也。群贤毕至,少长咸集。此地有崇山峻岭,茂林修竹,又有清流激湍,映带左右。引以为流觞曲水,列坐其次,虽无丝竹管弦之盛,一觞一咏,亦足以畅叙幽情。

  是日也,天朗气清,惠风和畅。仰观宇宙之大,俯察品类之盛,所以游目骋怀,足以极视听之娱,信可乐也。

  夫人之相与,俯仰一世。或取诸怀抱,悟言一室之内;或因寄所托,放浪形骸之外。虽趣舍万殊,静躁不同,当其欣于所遇,暂得于己,怏然自足,曾不知老之将至; 及其所之既倦,情随事迁,感慨系之矣。向之所欣,俯仰之间,已为陈迹,犹不能不以之兴怀,况修短随化,终期于尽!古人云,“死生亦大矣。”岂不痛哉!

  每览昔人兴感之由,若合一契,未尝不临文嗟悼,不能喻之于怀。固知一死生为虚诞,齐彭殇为妄作。后之视今,亦犹今之视昔。悲夫!故列叙时人,录其所述。虽世殊事异,所以兴怀,其致一也。后之览者,亦将有感于斯文。