74.125.93.113 android.clients.google.com
209.85.229.139 android.clients.google.com
209.85.229.101 android.clients.google.com
64.233.189.102 android.clients.google.com
2009年10月19日星期一
下面是一些常用的被封网站的HOST IP地址,最近一段时间应该很有用。包含...
下面是一些常用的被封网站的HOST IP地址,最近一段时间应该很有用。包含...: "# 下面是一些常用的被封网站的 HOST IP 地址,最近一段时间应该很有用。包含了 Google.com youtube.com twitter.com facebook.com 。至于 blogger 被封了 IP 地址,修改 HOST 文件无效,就 不多折腾了,需要的话可以直接用在线代理或者翻墙工具。 #Google 64.233.189.147 www.google.com 64.233.189.104 www.google.com 64.233.189.99 www.google.com 64.233.189.147 www.l.google.com 209.85.147.109 pop.gmail.com 209.85.147.109 smtp.gmail.com 64.233.189.18 mail.google.com 64.233.189.19 mail.google.com 64.233.189.83 mail.google.com 64.233.189.18 www.gmail.com 64.233.189.19 www.gmail.com 64.233.189.83 www.gmail.com 64.233.189.19 googlemail.l.google.com 64.233.189.101 writely-china.l.google.com 64.233.189.101 writely.l.google.com 64.233.189.102 docs.google.com 64.233.189.101 docs.google.com 64.233.189.100 docs.google.com 64.233.189.104 map.google.com 64.233.189.99 map.google.com
# 64.233.189.147 map.google.com 64.233.189.104 maps.google.com 64.233.189.99 maps.google.com 64.233.189.147 maps.google.com 64.233.189.99 maps.gstatic.com 203.208.39.93 khm.google.com 203.208.39.91 mt0.google.com 203.208.39.93 mt1.google.com 203.208.39.91 mt2.google.com 203.208.39.91 mt.l.google.com 64.233.189.99 maps.l.google.com 64.233.189.99 scholar.google.com 64.233.189.104 scholar.google.com 64.233.189.147 scholar.google.com 64.233.189.104 scholar.l.google.com 64.233.189.102 groups.google.com 64.233.189.100 groups.google.com 64.233.189.101 groups.google.com 64.233.189.101 groups.l.google.com 64.233.189.101 id.google.com 64.233.189.102 id.google.com 64.233.189.100 id.google.com 64.233.189.100 id.l.google.com #youtube
# 203.208.39.104 www.youtube.com 203.208.39.160 gdata.youtube.com 203.208.39.99 youtube.com 203.208.39.104 upload.youtube.com 203.208.39.160 insight.youtube.com 203.208.39.99 help.youtube.com 203.208.39.104 www.youtube.com 203.208.39.160 gdata.youtube.com 203.208.39.99 youtube.com 203.208.39.104 upload.youtube.com 203.208.39.160 insight.youtube.com 203.208.39.99 help.youtube.com #twitter 128.121.146.228 twitter.com 128.121.146.228 www.twitter.com 128.121.146.101 assets0.twitter.com 128.121.146.101 assets1.twitter.com 128.121.146.101 static.twitter.com 128.121.146.229 assets2.twitter.com 128.121.146.229 assets3.twitter.com 65.74.185.41 twitter.zendesk.com 65.74.185.41 help.twitter.com #Facebook 124.40.42.105 www.facebook.com
# 69.63.180.173 login.facebook.com 69.192.34.110 s-static.ak.facebook.com 69.63.176.69 secure-profile.facebook.com 69.63.176.59 secure-media-sf2p.facebook.com 69.63.178.13 ssl.facebook.com 96.6.122.57 profile.ak.facebook.com 64.211.21.152 b.static.ak.facebook.com 以上文本请根据: window 用户复制到:C:WINDOWSsystem32driversetc Linux 用户复制到:/ect/hosts 其他操作系统的用户我不太清楚,麻烦自行解决。Thank you. 关于自己折腾这些 IP 地址: 1/用自由门这个工具上面的 IP 地址解析工具解析被封的网址; 2/用 Http://0bad.com/ 解析被封网址的 A 记录; 3/用 OpenDNS 缓存工具查询: http://www.opendns.com/support/cache ; 4/随时关注其他被封网站的 HOST IP 地址; 5/方法不只上面几种,大家可以举一反三; 6/有些被封了 IP 地址的网站用 HOST 方法也是不行的,只能翻墙了; 注意:
# 1/请低调传播本文档,保证只给值得信任和身边的朋友的原则; 2/我会定期更新本文档的 HOST ip 地址,可以收藏; 3/大家可以联系我提供最新的 HOST IP 地址大全; 联系: E-MAIL: ellck.m@gmail.com Twitter: https://twitter.com/eLlck 再次提醒:低调传播... Edit this page (if you have permission) | Google Docs -- Web word processing, presentations and spreadsheets."
# 64.233.189.147 map.google.com 64.233.189.104 maps.google.com 64.233.189.99 maps.google.com 64.233.189.147 maps.google.com 64.233.189.99 maps.gstatic.com 203.208.39.93 khm.google.com 203.208.39.91 mt0.google.com 203.208.39.93 mt1.google.com 203.208.39.91 mt2.google.com 203.208.39.91 mt.l.google.com 64.233.189.99 maps.l.google.com 64.233.189.99 scholar.google.com 64.233.189.104 scholar.google.com 64.233.189.147 scholar.google.com 64.233.189.104 scholar.l.google.com 64.233.189.102 groups.google.com 64.233.189.100 groups.google.com 64.233.189.101 groups.google.com 64.233.189.101 groups.l.google.com 64.233.189.101 id.google.com 64.233.189.102 id.google.com 64.233.189.100 id.google.com 64.233.189.100 id.l.google.com #youtube
# 203.208.39.104 www.youtube.com 203.208.39.160 gdata.youtube.com 203.208.39.99 youtube.com 203.208.39.104 upload.youtube.com 203.208.39.160 insight.youtube.com 203.208.39.99 help.youtube.com 203.208.39.104 www.youtube.com 203.208.39.160 gdata.youtube.com 203.208.39.99 youtube.com 203.208.39.104 upload.youtube.com 203.208.39.160 insight.youtube.com 203.208.39.99 help.youtube.com #twitter 128.121.146.228 twitter.com 128.121.146.228 www.twitter.com 128.121.146.101 assets0.twitter.com 128.121.146.101 assets1.twitter.com 128.121.146.101 static.twitter.com 128.121.146.229 assets2.twitter.com 128.121.146.229 assets3.twitter.com 65.74.185.41 twitter.zendesk.com 65.74.185.41 help.twitter.com #Facebook 124.40.42.105 www.facebook.com
# 69.63.180.173 login.facebook.com 69.192.34.110 s-static.ak.facebook.com 69.63.176.69 secure-profile.facebook.com 69.63.176.59 secure-media-sf2p.facebook.com 69.63.178.13 ssl.facebook.com 96.6.122.57 profile.ak.facebook.com 64.211.21.152 b.static.ak.facebook.com 以上文本请根据: window 用户复制到:C:WINDOWSsystem32driversetc Linux 用户复制到:/ect/hosts 其他操作系统的用户我不太清楚,麻烦自行解决。Thank you. 关于自己折腾这些 IP 地址: 1/用自由门这个工具上面的 IP 地址解析工具解析被封的网址; 2/用 Http://0bad.com/ 解析被封网址的 A 记录; 3/用 OpenDNS 缓存工具查询: http://www.opendns.com/support/cache ; 4/随时关注其他被封网站的 HOST IP 地址; 5/方法不只上面几种,大家可以举一反三; 6/有些被封了 IP 地址的网站用 HOST 方法也是不行的,只能翻墙了; 注意:
# 1/请低调传播本文档,保证只给值得信任和身边的朋友的原则; 2/我会定期更新本文档的 HOST ip 地址,可以收藏; 3/大家可以联系我提供最新的 HOST IP 地址大全; 联系: E-MAIL: ellck.m@gmail.com Twitter: https://twitter.com/eLlck 再次提醒:低调传播... Edit this page (if you have permission) | Google Docs -- Web word processing, presentations and spreadsheets."
2009年10月18日星期日
SQLAlchemy & sqlite3
SQLAlchemy 支持多种数据库,有SQLite, Postgres, MySQL, and Oracle,看到它的许多例子都以 Sqlite 为例,我很高兴,因为我喜欢使用 Sqlite 这个小型的数据库。我想它对 sqlite 的支持应该很好。以后的学习都以 sqlite 为主。
--
Roley Zhang from Gmail
创建一个数据引擎
from SQLAlchemy import *
sqlite_engine = create_engine('sqlite://filename=d:/test.db')
这是使用了近似协议的描述方式。还可以传入字典方式:
from sqlalchemy import *
sqlite_engine = create_engine('sqlite', {'filename':'d:/test.db'})
这是最简单的。还可以带参数:
echo=True 表示输出调试结果,缺省为stdout
logger为一个类文件对象(不是一个文件名),当echo=True时用来输出。缺省为stdout
还有其它几个参数,暂时用不上就不管它了。
然后就是表结构的描述了。
使用MetaData进行描述表结构
--
Roley Zhang from Gmail
2009年10月16日星期五
emacs cvs manual
http://www.donews.net/raoqn/archive/.../04/59395.aspx
Emacs 提供了一个功能齐全的 CVS 界面 PCL-CVS,使得 CVS 的工作基本可以单
键完成,此外,Emacs 的 VC 也非常方便。下面简单介绍 PCL-CVS 的使用,之后再
简要介绍 VC 的方便之处。
1. 当然,先用命令行 check out 出源码拷贝
$ cd ~/work
$ cvs -d
server:user@host:/path/to/repository co MODULE
2. 从 Emacs 开始
几个命令都可以进入 PCL-CVS 中,例如用 cvs-examine:
M-x cvs-examine RET path/to/MODULE RET
RET 表示回车键;path/to/MODULE,源码复本的目录,cvs-examine 缺省为当前
目录。此时 Emacs 打开名为 *cvs* 的缓冲,就是 PCL-CVS 的主界面。
PCL-CVS 只是命令行 cvs 的前端界面。在 *cvs* 缓冲中的命令,基本只需要按
一两下键盘,Emacs 将其翻译为 cvs 控制命令。每执行一次,Emacs 会在缓冲
底部显示对应的 cvs 命令,以供参考。
3. 在 cvs 缓冲中常用的命令
n, p 移动光标。
f, o, RET 打开当前文件。
M-s 列出所有文件的当前状态。
x 在缓冲中去掉所有是 Up-To-Date 的状态的文件,这样比较干净。
M-u 更新本地拷贝。
U 放弃所做的改动,小心别把你没有提交的工作弄没了。
m 标记文件,用于对多个文件同时操作。u 去掉标记并下移;Backspace
去掉标记并上移;M-Backspace 同时去掉 buffer 中所有标记。% 用正
则表达式标记文件。
c 准备提交所做的改动,会*出一个 *cvs-commit* 缓冲,用来写修改的
日志,写完完按 C-c C-c,执行提交。如果有标记,同时对所标记的所
有文件相库提交。
C 和 c 类似,但是清除上次提交时留在 *cvs-commit* 缓冲中的内容,不
过如果当前目录里的 ChangeLog 文件中有相关内容,会自动插入。
d 有一个提示,询问用哪种方式 diff。此时常用的可能是:
d d 或 d =,比较文件,本地拷贝和最后一次提交时的修订版;
d h 比较本地拷贝和当前源码库中最新版;
d b 比较本地拷贝和该文件的备份;
d e 用 ediff 比较文件,本地拷贝和最后一次提交时的修订版。
d y 和前一天的比较
r 删除文件,从当前拷贝的工作目录中删除,需要提交。
a 添加文件,添加到当前拷贝的工作目录中,需要提交。
i 把某个文件的名字添加到 .cvsignore 文件,这样在运行 cvs 命令时,
cvs 不再理会此文件。编辑 .cvsignore 文件,每一行一个或一类文件。
下面是一个 .cvsignore 文件的例子。有些类型的文件 cvs 缺省就是忽
略的,比如 .o 文件。
t 设置 tag,提示输入 tag 名字。
l 查看一个文件,所标记的多个文件,或目录文件的 log 信息。
s 通过 cvs status 命令查看文件或目录的状态,会*出一个漂亮的
*cvs-info* 缓冲,列出文件的状态信息。
z, q 关闭 *cvs* 缓冲。
4. cvs buffer 中几种状态的说明(括号中是此时可能需要用到的命令):
cvs buffer 中按一下 M-s 可以列出所有文件。每个一行,分别列出了当前的
CVS 状态、修订版和文件名。
"Up-to-date" 文件和库中文件一致,也就是说,目前是最新的修订版,而且没
有被改动过。(按 f 或 RET,进入文件进行编辑,l 看修改历史,+ 看 tag 信
息)
"Need-Update" 文件相对于源码库,不是最新的,需要更新。(M-u 更新,d h
比较当前文件和源码库中的区别)
"Modified" 文件已经被改动过,但还没有提交到源码库。(c/C 提交,d d 比
较,d e 用 ediff 比较,U 放弃修改,小心使用)
"Added" 用 cvs add 命令新添加的文件,添加了新文件只在本地有效,需要提
交到源码库。(c/C 提交)
"Removed" 用 cvs 的 remove 命令删除的文件,同 add 一样,需要提交到源码
库。(c/C 提交)
"Needs-Merge" 你编辑文件的时候,别人又向源码库提交过,因此本地的改动,
和源码库中的需要合并。(先 M-u 更新,如果发生冲突,手工修改,再 c/C 提
交,d b 和原来的备份比较,d h 和库中比较)
"Conflict" 你的提交和源码库中当前的状态有冲突,需要手工修改,并再提交
一次。(手工修改,再 c/C 提交)
"Unknown" 源码库中没有该文件,这或许不是你想要的,或许是刚刚新建的。
(如果想让 cvs 忽略此文件,按 i;想添加到源码库,按 a,再提交;用 r 删
除)
"Missing" 源码库中有,可是本地拷贝中却没有了。(M-u 更新,可以从新从源
码库得到拷贝)
5. 用 Emacs 的前缀参数修改 cvs 命令的选项
很多 cvs 命令可以给一个前缀参数,改变缺省的行为。多数的前缀参数都是
C-u,而多数改变的行为,就是修改传递给 cvs 的默认选项。
每执行一次操作,pcl-cvs 的 *cvs* 缓冲底部都会显示实际执行的 cvs 命令,
这些命令往往带有一些参数,如何修改这些参数呢?就通过给 pcl-cvs 的命令
加前缀 C-u。一般的,一个 C-u 只改变当前命令所用的 cvs 选项,如果前缀两
个 C-u,则是永久改变所用选项。
例如,d d 缺省比较当前拷贝和库中你check out时的修订版。
如果用 C-u d d 会提示输入 cvs 的选项,此时你可以给任意的 cvs diff
选项,用以进行各种各样灵活的比较。比如,输入 -r1.10 -r2.3 RET,此
次比较的就是源码库中当前文件修订版 1.10 和 2.3 之间的区别。
如果 C-u C-u d d,输入 -r1.10 RET,以后的 d d 命令都会带着 -r1.10
仿佛永久修改了默认选项。当然,可以再 C-u C-u d d 修改回去。
再如,cvs add 命令添加二进制文件需要 -kb 选项,用 C-u a 则提示输入cvs
add flags,输入 -kb RET,OK。
6. 查看一些信息
在一个文件或目录上,或标记了一些文件,按 l 可以在 *cvs-info* 缓冲中看
到这些文件的 log 信息,就是提交到源码库中的更新日志;按 s 可以看到状态
信息;按 + 也是状态信息,但是 tag 表为树型结构。
按 l 查看 log 信息时,*cvs-info* 缓冲的状态为 (Log-View CVS)。此时,有
很多方便的操作,比如比较两个修订版之间的不同,修改源码库中的 log 信息,
打开某个文件任意的修订版。比如,在 *cvs* 的某个目录上面按了 l,然后转
到 *cvs-info* 缓冲中,这里面列出的时该目录中所有文件的 log 信息,此时
的常用命令如下。
n, p 移动光标,在一个文件内的不同修订版之间
N, P 移动光标,在不同的文件之间,M-n, M-p 同样
m 设置 mark
d 和设置 mark 的那个修订版进行 diff
e 修改当前 log,编辑完,C-c C-c 提交
f, o, RET
这几个都是打开当前的修订版,稍有区别。用 f 的时候如果提示
vc-find-version 没有定义,手工加载一下 vc 库
M-x load-library RET vc RET。
z 关闭该缓冲
如果在 *cvs* 的目录里按 s,此时的 *cvs-info* 缓冲为(CVS-Status CVS)状
态,在这个缓冲中,也可以做类似的一些操作:
N, P 在文件之间移动, M-n, M-p 同样
n, p 上一行,下一行
f, o, RET
把光标移动到某个 tag 的名字上,则可以直接打开那个 tag 所在
的修订版
T, t 把每个文件所列的 tag 表转为树型结构,T 为横向的树,t 为竖向
的树
diff 命令产生的 *cvs-diff* 缓冲中也类似,N/P 在文件之间移动,n/p 在不
同的 diff 之间移动。此外,在任何一行代码的未知按 o 或 RET 可以直接转到
文件中的实际未知,很方便的。
7. Emacs 的 VC 的方便之处
在 PCL-CVS 中,几乎可以做任何 CVS 相关的操作。但有时候未免有些麻烦,配
合 Emacs 的 VC (Version Control) 会方便很多。
Emacs 的 VC 模式的作者就是著名的 Eric S. Raymond。VC 的功能很强大,而
且方便灵活。可以使用在三种版本管理系统中:RCS、CVS、SCCS,操作方式一致。
和 PCL-CVS 不同的是,VC 使用 C-x v 前缀完成大部分功能,不像PCL-CVS 使
用一个主界面,这使 VC 显得更方便。
几个主要的命令:
C-x v v vc-next-action
顾名思义,执行下一个动作,下一个动作是什么就执行什么,如果
是 Unknown 就 cvs add,如果是 Modified 就 commit,如果是
Up-to-date 就什么都不用做了。最方便的是只需在当前 buffer 中
执行。
C-x v m vc-merge
将库中别人所做的改动与本地的改动合并,和库中的版本保持一致。
C-x v a vc-update-change-log
更新更改日志文件 ChangeLog。如果源码库或本地拷贝中还没有,
试一下这个,它会根据 cvs 的提交日志,自动产生 ChangeLog,如
果已经有了,但已经有一段时间没有更新过,它会自动更新
ChangeLog 文件到最新的一条记录。
C-x v ~ vc-version-other-window
PCL-CVS 也可以方便的查看某个历史版本,不过都需要转到相应的
控制界面(*cvs* 或 *cvs-info* buffer)中。而 VC 的这个命令可
以在当前缓冲中用,会提示输入版本号,然后显示在另一个窗口中,
并保存在当前目录,文件名为 FILENAME.~REV~。
有时候,用 CVS 管理的东西不需要整体的控制,比如自己的笔记、随笔之类,
用 Emacs 设置上 bookmark,打开就写点,写完马上就提交,往往不必打开
PCL-CVS,恰恰 VC 这些灵活的命令非常合适。
继续了解 VC:
C-x v = vc-diff
比较文件。如果用了前缀参数,会询问和哪个文件的哪个版本比较。
C-x v u vc-revert-buffer
放弃没有提交的改动,恢复原状,也就是你的本地拷贝的版本,并
不管库中的最新改动。如果想同时和库中别人所做的改动保持一致,
用 C-u 作为前缀参数。
C-x v g vc-annotate
看看你的每行代码的状态(编辑历史)。每行的颜色用来表示这行代
码的新旧程度,蓝色的时间最长,红色的最短,其他的居中。默认
的最长时间为一年,超过一年的都显示为蓝色。用前缀参数可以修
改所显示的版本和默认最长时间。
这个缓冲中还有一些有趣的功能,可以直接转到某个修订版。每行
的最前面为当前行最后一次修改的修订版,在这行上按 J,整个缓
冲中的内容全都替换为这个修订版;按 N (或 P) 为缓冲中当前的
后一个(前一个)修订版;按 A 转到当前行上次被修改的版本。N/P
按修订版历史浏览,A 按当前行修改历史浏览,J 跳转该行所指修
订版,W 回到该文件的当前修订版。注意,模式行上文件名的后面
标注了缓冲当前内容的修订版。另外,D 可以比较当前行上的修订
版和前一修订版的区别,N/P 可以使用前缀参数。
C-x v d vc-directory
打开一个带版本控制功能的 Dired buffer,功能和 pcl-cvs 的
*cvs* buffer 有些类似。或许对非 CVS 的版本管理比较有用。
8. 相关配置
由 CVS 管理的模块中都有 "CVS" 目录,打开 cvs-dired-use-hook 时,在
"CVS" 目录上按 F,直接进入该模块的 *cvs* buffer:
(setq cvs-dired-use-hook 'always)
给 cvs-examine 一个方便的绑定:
(define-key global-map "\C-xve" 'cvs-examine) 绑定到 C-x v e。
Emacs 提供了一个功能齐全的 CVS 界面 PCL-CVS,使得 CVS 的工作基本可以单
键完成,此外,Emacs 的 VC 也非常方便。下面简单介绍 PCL-CVS 的使用,之后再
简要介绍 VC 的方便之处。
1. 当然,先用命令行 check out 出源码拷贝
$ cd ~/work
$ cvs -d
2. 从 Emacs 开始
几个命令都可以进入 PCL-CVS 中,例如用 cvs-examine:
M-x cvs-examine RET path/to/MODULE RET
RET 表示回车键;path/to/MODULE,源码复本的目录,cvs-examine 缺省为当前
目录。此时 Emacs 打开名为 *cvs* 的缓冲,就是 PCL-CVS 的主界面。
PCL-CVS 只是命令行 cvs 的前端界面。在 *cvs* 缓冲中的命令,基本只需要按
一两下键盘,Emacs 将其翻译为 cvs 控制命令。每执行一次,Emacs 会在缓冲
底部显示对应的 cvs 命令,以供参考。
3. 在 cvs 缓冲中常用的命令
n, p 移动光标。
f, o, RET 打开当前文件。
M-s 列出所有文件的当前状态。
x 在缓冲中去掉所有是 Up-To-Date 的状态的文件,这样比较干净。
M-u 更新本地拷贝。
U 放弃所做的改动,小心别把你没有提交的工作弄没了。
m 标记文件,用于对多个文件同时操作。u 去掉标记并下移;Backspace
去掉标记并上移;M-Backspace 同时去掉 buffer 中所有标记。% 用正
则表达式标记文件。
c 准备提交所做的改动,会*出一个 *cvs-commit* 缓冲,用来写修改的
日志,写完完按 C-c C-c,执行提交。如果有标记,同时对所标记的所
有文件相库提交。
C 和 c 类似,但是清除上次提交时留在 *cvs-commit* 缓冲中的内容,不
过如果当前目录里的 ChangeLog 文件中有相关内容,会自动插入。
d 有一个提示,询问用哪种方式 diff。此时常用的可能是:
d d 或 d =,比较文件,本地拷贝和最后一次提交时的修订版;
d h 比较本地拷贝和当前源码库中最新版;
d b 比较本地拷贝和该文件的备份;
d e 用 ediff 比较文件,本地拷贝和最后一次提交时的修订版。
d y 和前一天的比较
r 删除文件,从当前拷贝的工作目录中删除,需要提交。
a 添加文件,添加到当前拷贝的工作目录中,需要提交。
i 把某个文件的名字添加到 .cvsignore 文件,这样在运行 cvs 命令时,
cvs 不再理会此文件。编辑 .cvsignore 文件,每一行一个或一类文件。
下面是一个 .cvsignore 文件的例子。有些类型的文件 cvs 缺省就是忽
略的,比如 .o 文件。
t 设置 tag,提示输入 tag 名字。
l 查看一个文件,所标记的多个文件,或目录文件的 log 信息。
s 通过 cvs status 命令查看文件或目录的状态,会*出一个漂亮的
*cvs-info* 缓冲,列出文件的状态信息。
z, q 关闭 *cvs* 缓冲。
4. cvs buffer 中几种状态的说明(括号中是此时可能需要用到的命令):
cvs buffer 中按一下 M-s 可以列出所有文件。每个一行,分别列出了当前的
CVS 状态、修订版和文件名。
"Up-to-date" 文件和库中文件一致,也就是说,目前是最新的修订版,而且没
有被改动过。(按 f 或 RET,进入文件进行编辑,l 看修改历史,+ 看 tag 信
息)
"Need-Update" 文件相对于源码库,不是最新的,需要更新。(M-u 更新,d h
比较当前文件和源码库中的区别)
"Modified" 文件已经被改动过,但还没有提交到源码库。(c/C 提交,d d 比
较,d e 用 ediff 比较,U 放弃修改,小心使用)
"Added" 用 cvs add 命令新添加的文件,添加了新文件只在本地有效,需要提
交到源码库。(c/C 提交)
"Removed" 用 cvs 的 remove 命令删除的文件,同 add 一样,需要提交到源码
库。(c/C 提交)
"Needs-Merge" 你编辑文件的时候,别人又向源码库提交过,因此本地的改动,
和源码库中的需要合并。(先 M-u 更新,如果发生冲突,手工修改,再 c/C 提
交,d b 和原来的备份比较,d h 和库中比较)
"Conflict" 你的提交和源码库中当前的状态有冲突,需要手工修改,并再提交
一次。(手工修改,再 c/C 提交)
"Unknown" 源码库中没有该文件,这或许不是你想要的,或许是刚刚新建的。
(如果想让 cvs 忽略此文件,按 i;想添加到源码库,按 a,再提交;用 r 删
除)
"Missing" 源码库中有,可是本地拷贝中却没有了。(M-u 更新,可以从新从源
码库得到拷贝)
5. 用 Emacs 的前缀参数修改 cvs 命令的选项
很多 cvs 命令可以给一个前缀参数,改变缺省的行为。多数的前缀参数都是
C-u,而多数改变的行为,就是修改传递给 cvs 的默认选项。
每执行一次操作,pcl-cvs 的 *cvs* 缓冲底部都会显示实际执行的 cvs 命令,
这些命令往往带有一些参数,如何修改这些参数呢?就通过给 pcl-cvs 的命令
加前缀 C-u。一般的,一个 C-u 只改变当前命令所用的 cvs 选项,如果前缀两
个 C-u,则是永久改变所用选项。
例如,d d 缺省比较当前拷贝和库中你check out时的修订版。
如果用 C-u d d 会提示输入 cvs 的选项,此时你可以给任意的 cvs diff
选项,用以进行各种各样灵活的比较。比如,输入 -r1.10 -r2.3 RET,此
次比较的就是源码库中当前文件修订版 1.10 和 2.3 之间的区别。
如果 C-u C-u d d,输入 -r1.10 RET,以后的 d d 命令都会带着 -r1.10
仿佛永久修改了默认选项。当然,可以再 C-u C-u d d 修改回去。
再如,cvs add 命令添加二进制文件需要 -kb 选项,用 C-u a 则提示输入cvs
add flags,输入 -kb RET,OK。
6. 查看一些信息
在一个文件或目录上,或标记了一些文件,按 l 可以在 *cvs-info* 缓冲中看
到这些文件的 log 信息,就是提交到源码库中的更新日志;按 s 可以看到状态
信息;按 + 也是状态信息,但是 tag 表为树型结构。
按 l 查看 log 信息时,*cvs-info* 缓冲的状态为 (Log-View CVS)。此时,有
很多方便的操作,比如比较两个修订版之间的不同,修改源码库中的 log 信息,
打开某个文件任意的修订版。比如,在 *cvs* 的某个目录上面按了 l,然后转
到 *cvs-info* 缓冲中,这里面列出的时该目录中所有文件的 log 信息,此时
的常用命令如下。
n, p 移动光标,在一个文件内的不同修订版之间
N, P 移动光标,在不同的文件之间,M-n, M-p 同样
m 设置 mark
d 和设置 mark 的那个修订版进行 diff
e 修改当前 log,编辑完,C-c C-c 提交
f, o, RET
这几个都是打开当前的修订版,稍有区别。用 f 的时候如果提示
vc-find-version 没有定义,手工加载一下 vc 库
M-x load-library RET vc RET。
z 关闭该缓冲
如果在 *cvs* 的目录里按 s,此时的 *cvs-info* 缓冲为(CVS-Status CVS)状
态,在这个缓冲中,也可以做类似的一些操作:
N, P 在文件之间移动, M-n, M-p 同样
n, p 上一行,下一行
f, o, RET
把光标移动到某个 tag 的名字上,则可以直接打开那个 tag 所在
的修订版
T, t 把每个文件所列的 tag 表转为树型结构,T 为横向的树,t 为竖向
的树
diff 命令产生的 *cvs-diff* 缓冲中也类似,N/P 在文件之间移动,n/p 在不
同的 diff 之间移动。此外,在任何一行代码的未知按 o 或 RET 可以直接转到
文件中的实际未知,很方便的。
7. Emacs 的 VC 的方便之处
在 PCL-CVS 中,几乎可以做任何 CVS 相关的操作。但有时候未免有些麻烦,配
合 Emacs 的 VC (Version Control) 会方便很多。
Emacs 的 VC 模式的作者就是著名的 Eric S. Raymond。VC 的功能很强大,而
且方便灵活。可以使用在三种版本管理系统中:RCS、CVS、SCCS,操作方式一致。
和 PCL-CVS 不同的是,VC 使用 C-x v 前缀完成大部分功能,不像PCL-CVS 使
用一个主界面,这使 VC 显得更方便。
几个主要的命令:
C-x v v vc-next-action
顾名思义,执行下一个动作,下一个动作是什么就执行什么,如果
是 Unknown 就 cvs add,如果是 Modified 就 commit,如果是
Up-to-date 就什么都不用做了。最方便的是只需在当前 buffer 中
执行。
C-x v m vc-merge
将库中别人所做的改动与本地的改动合并,和库中的版本保持一致。
C-x v a vc-update-change-log
更新更改日志文件 ChangeLog。如果源码库或本地拷贝中还没有,
试一下这个,它会根据 cvs 的提交日志,自动产生 ChangeLog,如
果已经有了,但已经有一段时间没有更新过,它会自动更新
ChangeLog 文件到最新的一条记录。
C-x v ~ vc-version-other-window
PCL-CVS 也可以方便的查看某个历史版本,不过都需要转到相应的
控制界面(*cvs* 或 *cvs-info* buffer)中。而 VC 的这个命令可
以在当前缓冲中用,会提示输入版本号,然后显示在另一个窗口中,
并保存在当前目录,文件名为 FILENAME.~REV~。
有时候,用 CVS 管理的东西不需要整体的控制,比如自己的笔记、随笔之类,
用 Emacs 设置上 bookmark,打开就写点,写完马上就提交,往往不必打开
PCL-CVS,恰恰 VC 这些灵活的命令非常合适。
继续了解 VC:
C-x v = vc-diff
比较文件。如果用了前缀参数,会询问和哪个文件的哪个版本比较。
C-x v u vc-revert-buffer
放弃没有提交的改动,恢复原状,也就是你的本地拷贝的版本,并
不管库中的最新改动。如果想同时和库中别人所做的改动保持一致,
用 C-u 作为前缀参数。
C-x v g vc-annotate
看看你的每行代码的状态(编辑历史)。每行的颜色用来表示这行代
码的新旧程度,蓝色的时间最长,红色的最短,其他的居中。默认
的最长时间为一年,超过一年的都显示为蓝色。用前缀参数可以修
改所显示的版本和默认最长时间。
这个缓冲中还有一些有趣的功能,可以直接转到某个修订版。每行
的最前面为当前行最后一次修改的修订版,在这行上按 J,整个缓
冲中的内容全都替换为这个修订版;按 N (或 P) 为缓冲中当前的
后一个(前一个)修订版;按 A 转到当前行上次被修改的版本。N/P
按修订版历史浏览,A 按当前行修改历史浏览,J 跳转该行所指修
订版,W 回到该文件的当前修订版。注意,模式行上文件名的后面
标注了缓冲当前内容的修订版。另外,D 可以比较当前行上的修订
版和前一修订版的区别,N/P 可以使用前缀参数。
C-x v d vc-directory
打开一个带版本控制功能的 Dired buffer,功能和 pcl-cvs 的
*cvs* buffer 有些类似。或许对非 CVS 的版本管理比较有用。
8. 相关配置
由 CVS 管理的模块中都有 "CVS" 目录,打开 cvs-dired-use-hook 时,在
"CVS" 目录上按 F,直接进入该模块的 *cvs* buffer:
(setq cvs-dired-use-hook 'always)
给 cvs-examine 一个方便的绑定:
(define-key global-map "\C-xve" 'cvs-examine) 绑定到 C-x v e。
--
Roley Zhang from Gmail
2009年10月14日星期三
emacs python 代码缩进 操作 - Google Search
emacs python 代码缩进 操作 - Google Search: "Emacs 里python-mode 的缩进可以用C-c > 和C-c < 来成块地控制。"
2009年10月13日星期二
Ipython 交互式 python 解释器 - Life is being……
Ipython 交互式 python 解释器 - Life is being……: "Ipython 交互式 python 解释器
[星期三, 四月 15, 2009 | View Comments ]
ipython当前最新稳定版本 0.9.1,它是一个 python交互式 shell,比默认的 python解释器功能丰富,提供了一种便捷功能能够让你快速测试所构建模块的各种想法,特性和接口,支持类,函数,变量等多种对象的自动补全,支持 shell命令(可执行ls,cd,cp,rm等等命令)以及Readline,自动缩近,内置了许多很有用的功能和函数,并且还有强大的帮助系统。
源代码安装方式只需到官方下载最新版本然后解压(默认安装到site-packages目录)
tar zxvf ipython-0.9.1.tar.gz
cd ipython
sudo python setup.py install
ubuntu下则在终端中输入 sudo apt-get install ipython即可安装,之后输入ipython便可看到运行效果如下:
$ipython
Python 2.6.2c1 (release26-maint, Apr 8 2009, 01:02:22)
Type 'copyright', 'credits' or 'license' for more information.
IPython 0.9.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]:
python中也可支持自动补全,不过需要进行如下设置:
>>> import rlcompleter, readline
>>> readline.parse_and_bind('tab: complete')
而ipython中默认支持,支持类,函数,变量等的自动补全,例如:
In [1]: import o
opcode operator optparse os os2emxpath ossaudiodev
In [1]: import xm
xml xmllib xmlrpclib
可以直接执行如下Unix Shell
In [1]: alias nss netstat -lptn %l
In [2]: cd /tmp
In [3]: !ps aux | grep $user | grep $process
In [4]: pwd
In [5]:
(reverse-i-search)`alias': alias nss netstat -lptn %l
In [6]: %cd?? : 查看Magic %cd的使用帮助以及源码
In [7]: obj?, obj??: 获取相关对象以及magic对象的帮助 (同样也可写做?obj, ??obj).
In [8]: ?:查看ipython的帮助说明文档
In [9]:help(urllib):查看urllib库帮助文档,这个在python解释器中同样可用
ipython带有好多个实用的magic函数,可通过lsmagic查看,也可通过命令补全查看。下面就介绍一些有用的magic函数
%bg function
将 function 放到后台执行,之后可以用jobs将其结果取回。jobs.status()则可以查看现有任务的状态。
%ed 或 %edit
默认调用Vim编辑文件并执行,如果只编辑不执行,用 %ed -x filename 即可。
%env
显示环境变量
%dhist %hist %history
显示所打开文件夹或者敲入命令等历史记录
%macro [options] name n1-n2 n3-n4 ... n5 .. n6 ...
创建一个名称为 name 的宏,执行 name 就是执行 n1-n2 n3-n4 ... n5 .. n6 ... 这些代码。
%page
假如你所处理的对象有太多信息无法一次显示在屏幕中,就可以使用page [-r]
In [1]: p = !ps aux
In [2]: page p
%pdoc
显示类,函数等的docstring
%pinfo some_module[.function[.object]]
显示类,函数或者变亮等对象的详细信息
%pycat filename
高亮显示 python 文件(无需加.py后缀名)
%psearch x*
搜索所有以x(任意字符)开头的对象包括关键字
%psource module
显示模块的定义源代码
%rep n
显示上一次运行或者指定行号(n)的代码
%save filename n1-n2 n3-n4 ... n5 .. n6 ...
将指定行数(n1-n2 n3-n4 ... n5 .. n6 ... )的代码保存为文件
%store
保存本次会话中的某个变量生命,在下一次打开ipython时仍然可用
%time statement
计算一段代码的执行时间
%timeit statement
自动选择重复和循环次数计算一段代码的执行时间
%type
显示对象数据类型
%who
%who_ls
%whos
列出所有的交互式对象,who_ls以列表形式显示,whos则显示更多内容
%unalias:
清除指定的别名
%upgrade:
更新你的IPython安装
%exit 或
选择y退出ipython运行环境"
[星期三, 四月 15, 2009 | View Comments ]
ipython当前最新稳定版本 0.9.1,它是一个 python交互式 shell,比默认的 python解释器功能丰富,提供了一种便捷功能能够让你快速测试所构建模块的各种想法,特性和接口,支持类,函数,变量等多种对象的自动补全,支持 shell命令(可执行ls,cd,cp,rm等等命令)以及Readline,自动缩近,内置了许多很有用的功能和函数,并且还有强大的帮助系统。
源代码安装方式只需到官方下载最新版本然后解压(默认安装到site-packages目录)
tar zxvf ipython-0.9.1.tar.gz
cd ipython
sudo python setup.py install
ubuntu下则在终端中输入 sudo apt-get install ipython即可安装,之后输入ipython便可看到运行效果如下:
$ipython
Python 2.6.2c1 (release26-maint, Apr 8 2009, 01:02:22)
Type 'copyright', 'credits' or 'license' for more information.
IPython 0.9.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]:
python中也可支持自动补全,不过需要进行如下设置:
>>> import rlcompleter, readline
>>> readline.parse_and_bind('tab: complete')
而ipython中默认支持,支持类,函数,变量等的自动补全,例如:
In [1]: import o
opcode operator optparse os os2emxpath ossaudiodev
In [1]: import xm
xml xmllib xmlrpclib
可以直接执行如下Unix Shell
In [1]: alias nss netstat -lptn %l
In [2]: cd /tmp
In [3]: !ps aux | grep $user | grep $process
In [4]: pwd
In [5]:
(reverse-i-search)`alias': alias nss netstat -lptn %l
In [6]: %cd?? : 查看Magic %cd的使用帮助以及源码
In [7]: obj?, obj??: 获取相关对象以及magic对象的帮助 (同样也可写做?obj, ??obj).
In [8]: ?:查看ipython的帮助说明文档
In [9]:help(urllib):查看urllib库帮助文档,这个在python解释器中同样可用
ipython带有好多个实用的magic函数,可通过lsmagic查看,也可通过命令补全查看。下面就介绍一些有用的magic函数
%bg function
将 function 放到后台执行,之后可以用jobs将其结果取回。jobs.status()则可以查看现有任务的状态。
%ed 或 %edit
默认调用Vim编辑文件并执行,如果只编辑不执行,用 %ed -x filename 即可。
%env
显示环境变量
%dhist %hist %history
显示所打开文件夹或者敲入命令等历史记录
%macro [options] name n1-n2 n3-n4 ... n5 .. n6 ...
创建一个名称为 name 的宏,执行 name 就是执行 n1-n2 n3-n4 ... n5 .. n6 ... 这些代码。
%page
假如你所处理的对象有太多信息无法一次显示在屏幕中,就可以使用page [-r]
In [1]: p = !ps aux
In [2]: page p
%pdoc
显示类,函数等的docstring
%pinfo some_module[.function[.object]]
显示类,函数或者变亮等对象的详细信息
%pycat filename
高亮显示 python 文件(无需加.py后缀名)
%psearch x*
搜索所有以x(任意字符)开头的对象包括关键字
%psource module
显示模块的定义源代码
%rep n
显示上一次运行或者指定行号(n)的代码
%save filename n1-n2 n3-n4 ... n5 .. n6 ...
将指定行数(n1-n2 n3-n4 ... n5 .. n6 ... )的代码保存为文件
%store
保存本次会话中的某个变量生命,在下一次打开ipython时仍然可用
%time statement
计算一段代码的执行时间
%timeit statement
自动选择重复和循环次数计算一段代码的执行时间
%type
显示对象数据类型
%who
%who_ls
%whos
列出所有的交互式对象,who_ls以列表形式显示,whos则显示更多内容
%unalias:
清除指定的别名
%upgrade:
更新你的IPython安装
%exit 或
选择y退出ipython运行环境"
2009年9月2日星期三
让Twitter无处不在,目前可用大波列表 -- 红人网事
让Twitter无处不在,目前可用大波列表 -- 红人网事: "看这篇文章的人,如果不知道大波是什么,我就不作解释了,google一下啦。知道的人自然晓得这是好东西,收藏一下吧。
目前可用大波(200908081835更新):
Currently Available DabrMirror list (update: 200908081835)
http://funp.org/
http://t.orzdream.com/
http://higfw.com/
http://t.neolee.cn/
http://t.ikemi.org/
https://t.kunshou.net/
http://s.zuo.la/
http://t.zhufeng.me/
http://cafebeta.com/twitter/
http://t.niechen.com/
http://t.leeiio.me/
http://cao.im/
http://yylyyl.co.cc/t/
http://m.inick.org/
http://heix.pp.ru
http://t.xitian.org/
如果你有可用大波地址,请 @scavin 联系添加,谢谢。我们共同努力,让 Twitter 无处不在
If you have available dabrmirror, please contact @scavin,Thanks
Dabr(大波) 服务列表(以下地址有部分目前无法访问,请使用上面的列表)
官方 Dabr: http://dabr.co.uk (国外,推荐)
@scavin: http://t.appinn.com/ (国内)
@Sofish: http://g.happinesz.cn/ (国内)
@neolee: http://t.neolee.cn/ (国外)
@Ksky: http://t.ydo.me/ (国外)
@Chada: http://funp.org/ (国外,推荐)
@17th: http://t.ikemi.org/ (国外) 叽歪: http://j.ikemi.org 饭否: http://f.ikemi.org
@doublleaf : http://t.doubleaf.com (国外 被墙)
@xzzxyd: http://t.zhe.la/ (国外)
@wzy: http://t.80sfamily.com (国外)
@billzhong: http://heix.pp.ru/ (国外)
@shizhao: http://shizhao.org/dabr/ (国外)
@Kevin: http://okevin.net/twitter/ (国外)
@zhutouinfo: http://t.zhutou.info/ (国外)
@jason5ng32: http://chanmao.ws/dabr/ (国外)
@tinn: http://touke.net/t/ (国外)
@zuola: http://s.zuo.la/ (国外)
@Herock: http://wespeaker.com/t/ (国外)
@haitai: http://t.huhaitai.com/ (国外)
@noirz: http://oaic.cn/mu/ (国外)
@xzheng: http://t.16class.cn/ (国外)
@iworm: http://twitter.iworm.net/ (国外)
@leeiio: http://t.leeiio.me/ (国外)
@POPOEVER: http://higfw.com/ (国外)
@interjc: http://t.interjc.net/ (国外)
@betacafe: http://cafebeta.com/twitter/ (国外)
@inick: http://dabr.inick.org/ (国外)
@SunSivan: http://t.sivan.in/ (国外)
@igeeker: http://tt.lovegaogao.cn (国外)
@hanyee: http://hanyee.cn/dabr (国外)
@paveo: https://www.owind.com/t/ (国外,https,推荐)
@user188: http://mytwitter.us/ (国外)
@Glif: http://glif.cn/t/ (国外)
@scavin: http://t.lzzxt.com (国外)
@DashHuang: http://dash.cn/twitter/ (国外)
@9875321: http://hen.huang.hen.bao.li/twitter/ (国外,推荐)
http://www.linuxhobby.com/t/ (国外)
http://www.17175.cn/dabr/ (国外)
@duetg: http://t.duetg.com/
http://t.kunshou.net/ (推荐)
欢迎在 Twitter 上联系 @scavin 继续添加
Dbar 安装教程
何 必 呢: 使用Dabr架设私人Twitter手机版
软件生活: 强大可山寨的twitter网页客户端 – dabr.co.uk
小众软件: Dabr 安装- Twitter 手机版网页程序安装教程"
目前可用大波(200908081835更新):
Currently Available DabrMirror list (update: 200908081835)
http://funp.org/
http://t.orzdream.com/
http://higfw.com/
http://t.neolee.cn/
http://t.ikemi.org/
https://t.kunshou.net/
http://s.zuo.la/
http://t.zhufeng.me/
http://cafebeta.com/twitter/
http://t.niechen.com/
http://t.leeiio.me/
http://cao.im/
http://yylyyl.co.cc/t/
http://m.inick.org/
http://heix.pp.ru
http://t.xitian.org/
如果你有可用大波地址,请 @scavin 联系添加,谢谢。我们共同努力,让 Twitter 无处不在
If you have available dabrmirror, please contact @scavin,Thanks
Dabr(大波) 服务列表(以下地址有部分目前无法访问,请使用上面的列表)
官方 Dabr: http://dabr.co.uk (国外,推荐)
@scavin: http://t.appinn.com/ (国内)
@Sofish: http://g.happinesz.cn/ (国内)
@neolee: http://t.neolee.cn/ (国外)
@Ksky: http://t.ydo.me/ (国外)
@Chada: http://funp.org/ (国外,推荐)
@17th: http://t.ikemi.org/ (国外) 叽歪: http://j.ikemi.org 饭否: http://f.ikemi.org
@doublleaf : http://t.doubleaf.com (国外 被墙)
@xzzxyd: http://t.zhe.la/ (国外)
@wzy: http://t.80sfamily.com (国外)
@billzhong: http://heix.pp.ru/ (国外)
@shizhao: http://shizhao.org/dabr/ (国外)
@Kevin: http://okevin.net/twitter/ (国外)
@zhutouinfo: http://t.zhutou.info/ (国外)
@jason5ng32: http://chanmao.ws/dabr/ (国外)
@tinn: http://touke.net/t/ (国外)
@zuola: http://s.zuo.la/ (国外)
@Herock: http://wespeaker.com/t/ (国外)
@haitai: http://t.huhaitai.com/ (国外)
@noirz: http://oaic.cn/mu/ (国外)
@xzheng: http://t.16class.cn/ (国外)
@iworm: http://twitter.iworm.net/ (国外)
@leeiio: http://t.leeiio.me/ (国外)
@POPOEVER: http://higfw.com/ (国外)
@interjc: http://t.interjc.net/ (国外)
@betacafe: http://cafebeta.com/twitter/ (国外)
@inick: http://dabr.inick.org/ (国外)
@SunSivan: http://t.sivan.in/ (国外)
@igeeker: http://tt.lovegaogao.cn (国外)
@hanyee: http://hanyee.cn/dabr (国外)
@paveo: https://www.owind.com/t/ (国外,https,推荐)
@user188: http://mytwitter.us/ (国外)
@Glif: http://glif.cn/t/ (国外)
@scavin: http://t.lzzxt.com (国外)
@DashHuang: http://dash.cn/twitter/ (国外)
@9875321: http://hen.huang.hen.bao.li/twitter/ (国外,推荐)
http://www.linuxhobby.com/t/ (国外)
http://www.17175.cn/dabr/ (国外)
@duetg: http://t.duetg.com/
http://t.kunshou.net/ (推荐)
欢迎在 Twitter 上联系 @scavin 继续添加
Dbar 安装教程
何 必 呢: 使用Dabr架设私人Twitter手机版
软件生活: 强大可山寨的twitter网页客户端 – dabr.co.uk
小众软件: Dabr 安装- Twitter 手机版网页程序安装教程"
订阅:
博文 (Atom)