2009年12月25日星期五

spider国际

很荣幸我的blogspot也和牛博一样走出 GFW,成了 spider国际,耐心地等了超过一个季度,blogspot还能没能再一次跨进钢铁长城,而 picasaweb 和 docs.google 的 spreadsheets 也跑出了 GFW 。

fans.googlegroup 上看到 puff,来到地球上还是第一次用翻墙工具。
为 GFW 出卖灵魂的人们,你们的恶行历史会记下,你们的子孙也会为你们的存在而感到羞耻。

2009年8月4日星期二

Vim text-Objects

下午五点多偶然看到一个 blog 上写到 Vim 的文本对象操作,用了五年多了都没注意到这个用法,多按了多少次键盘......

ci( or ci) 修改光标所在的()内的字符
ci[ or ci] 修改光标所在的[]内的字符
ci{ or ci} 修改光标所在的{}内的字符
ci< or ci> 修改光标所在的<>内的字符
ci" 修改光标所在的""内的字符
ci' 修改光标所在的''内的字符
ci` 修改光标所在的``内的字符
cis 修改光标所在的 inner sentence 的字符
cip 修改光标所在的 inner paragraph 的字符
cib 修改光标所在的 inner block 的字符

上面的命令中 c 是操作命令,也可以是其它操作命令,操作命令后面的部分是文本对象,i 表示 innter,具体可查阅 Vim 手册的
text-objects 部分。

2009年6月16日星期二

Blogspot block off by gfw

Blogspot 又一次被 gfw 挡住了,现在只能用 gmail 来 post, 靠翻墙来浏览。
外交部发言人在关于绿坝的记者招待会上称"中国的互联网是开放的",
MLGBD,又一次成功地将大家搞吐了。

2009年5月8日星期五

Solar System Simulator

NASA 做的太阳系模拟器,可以体验在太阳系不同星体上观察宇宙的视角。

http://space.jpl.nasa.gov/

2009年4月28日星期二

Vim custom

用 Vim 的 imap 提高一点效率,下面是针对 perl 源文件的设置:
autocmd FileType perl imap popen open(FILE, '<++>') or die $!;

针对所有文件的设置:
" ---------- begin global custom ----------
imap zsj =strftime("20%y-%m-%d %H:%M:%S")
imap zeml redspid@gmail.com
" ------------ end global custom ----------
可以用 zsj 输入当前的日期时间,
用 zeml 插入我的 Gmail 地址 ^^
英文中 z 字母的使用频率低,所以我这里的映射都用 z 开头。

下面是所有字母使用频率排序: x%
A 8.19 B 1.47 C 3.83 D 3.91 E 12.25 F 2.26 G 1.71
H 4.57 I 7.10 J 0.14 K 0.41 L 3.77 M 3.34 N 7.06
O 7.26 P 2.89 Q 0.09 R 6.85 S 6.36 T 9.41
U 2.58 V 1.09 W 1.59 X 0.21 Y 1.58 Z 0.08

2009年4月23日星期四

encoding module & wirte config file in XML

使用 Unicode 有许多有用的字符属性(\p{}),

Perl 中使用各种编码也非常方便,只要下面这一行就可以读入 utf-8 编码,向标准输出打印 cp936 编码了。
use encoding 'utf8' OUTPUT=>'cp936';

XML 炒了挺长时间,我还没用到过,前几天是了一下使用 XML 写数据文件和配置文件,感觉比较方便,省去解析数据文件和配置文件的麻烦。
从 www.vim.org 找了 xml.vim 插件来替代 gvim 自带原来的 xml.vim 和 html.vim 。

2009年4月22日星期三

在 Perl 中获得微秒级的时间间隔

在 Perl 中获得微秒级的时间间隔:

1 use Time::HiRes qw(usleep);
2
3 {
4 local $| = 1;
5
6 for (0 .. 9)
7 { usleep(9999); print "Cool LaTeX!\n" }
8 }

2009年4月1日星期三

My Vimperator & 虚拟化 & 云

呵呵,现在我的 FireFox 也变成 Vim 了, Cool !

有的操作还有点不习惯,但总算是不要动鼠标了,我的肩膀和手臂总算得到了全方位的保护。垃圾 BSS 还是不够规范,不能在 FireFox 上使用。

如果没有什么突破性的创新,Vim 的高效编辑模式已经很难被超越了。

近来虚拟化应用和云计算都成了所谓 IT 界人士的口头禅了,Google 了一下相关资料,前景确实看好,但是离普及应用还有距离,主要我觉得还是现在的硬件仍然不够强悍,硬件能力起码增长个20倍才有吸引力。

2009年3月23日星期一

make my code

一直以来编辑、管理的文件都比较简单松散,完全靠手工操作也轻松。随着文档越来越复杂,图片、asy代码、导入文件(\input),手工管理比较麻烦了,于是知道很久前下载的 GNU make 手册仔细看了会,学到够用便 OK :)

听说现在许多 IDE 也可以实现类似 make 的管理功能,但那些只是在管理程序代码上应用,不能达到 make 这样灵活的应用效果,我现在就用 make 来管理我的 LaTeX 文档,我想,其它的 IDE 工具可能不太容易做到。

2009年3月16日星期一

Code comment

今天想到了一个注释代码的好办法。譬如在 Perl 里可以使用
# [ Start a function
....
# End the function ]
这样的形式添加注释,这样可以方便地利用 Vim 的折叠功能。 ^^

2009年3月12日星期四

Perl Encode

为了我那个自动分行的程序,今天仔细研究了一下字符编码,大概搞明白了 perl 对于字符编码的处理。

perl 内部是用`宽字符(一个整数,在 32位系统上MAX=2^32, 64位系统上MAX=2^64)'来表示字符的,对于(从文件、标准输入或程序源码)读入的字符,perl 把它当作字节流存储,并不进行解码。

当需要(譬如要split一个字符串)的时候按照内部`宽字符'解码,如果读入的字符是其它(UTF8、cp936、gb2312、Big5 等等)编码方式时,就需要用Encode::decode 告诉 perl 用正确的方式将字符流解码为 perl内部的`宽字符'。

输出的时候需要将字符流编码。 譬如 windows 中文系统默认为 cp936 编码,这时就需要 Encode::encode("cp936", $str); 告诉 perl 将`宽字符'以 cp936 标准编码,否则在标准输出上将显示乱码。

如果想转换字符编码方式,只需要以正确的方式先将读入的字符 decode,再以需要的编码方式 encode 就行了。

2009年1月20日星期二

带边框的文字



1 currentpen = linewidth(bp);

// draw(string, path, pair, 文字与边界的margin);
2 draw("Hello", box, (0,15mm),1mm);
3 draw("World", ellipse, (0,0),2mm);

2009年1月15日星期四

Map of Florida




size(5cm, 0);
currentpen=linewidth(bp);

draw((356.406,604.316)--(362.262,606.129)--(370.055,609.113)
--(377.555,613.383)--(382.598,616.355)--(386.996,620.234)
--(389.969,623.469)--(392.297,624.762)--(393.332,623.859)
--(394.367,623.211)--(400.316,625.539)--(402.645,627.867)
--(406.914,629.938)--(411.57,632.781)--(418.164,636.402)
--(424.242,637.438)--(433.812,637.824)--(435.234,638.344)
--(437.953,638.082)--(438.984,636.145)--(440.539,636.402)
--(442.09,635.887)--(444.031,636.145)--(445.582,636.531)
--(448.168,634.332)--(449.332,631.875)--(449.461,628.773)
--(450.754,627.609)--(451.531,625.668)--(451.145,624.633)
--(450.367,623.727)--(448.039,623.469)--(445.324,622.824)
--(441.184,620.105)--(439.375,617.262)--(439.117,614.156)
--(440.148,613.512)--(436.66,611.055)--(433.812,610.535)
--(430.578,608.469)--(429.676,607.043)--(431.355,605.75)
--(431.098,604.328)--(427.09,602.648)--(423.984,600.32)
--(419.715,597.992)--(417.258,595.922)--(414.285,593.078)
--(412.344,594.758)--(407.949,597.344)--(406.652,597.215)
--(405.879,593.594)--(406.395,592.301)--(406.914,592.559)
--(407.688,594.629)--(411.309,593.465)--(411.699,592.82)
--(408.465,591.395)--(404.586,590.363)--(402.387,590.102)
--(398.637,591.266)--(391.004,591.266)--(388.031,588.809)
--(385.574,587.773)--(384.539,583.637)--(384.023,582.086)
--(381.953,580.793)--(380.66,578.074)--(377.941,577.172)
--(377.168,574.973)--(374.191,573.031)--(373.027,569.668)
--(371.863,567.34)--(371.863,565.273)--(372.512,562.039)
--(374.062,561.91)--(374.84,562.555)--(375.746,562.168)
--(375.613,559.711)--(378.461,556.734)--(380.012,553.891)
--(380.012,550.785)--(381.047,548.199)--(378.848,547.941)
--(377.297,546.648)--(376.391,544.32)--(375.227,543.027)
--(372.125,536.562)--(370.699,530.484)--(371.219,526.992)
--(371.605,522.207)--(373.289,517.422)--(373.777,514.637)
--(367.336,514.445)--(365.785,512.379)--(364.363,510.953)
--(361.906,511.215)--(360.871,519.359)--(358.543,539.797)
--(358.027,545.227)--(358.25,549.574)--(361.355,551.645)
--(362.52,552.809)--(362.93,559.289)--(362.414,567.941)
--(361.379,585.152)--(360.84,589.508)--(360.859,593.172)
--(363.188,593.301)--(363.836,596.359)--(359.992,596.617)
--(356.367,595.324)--(355.781,596.09)--(356.148,600.18)
--cycle^^(462.328,614.355)--(461.812,616.293)--(461.617,617.328)
--(459.742,618.492)--(458.449,620.367)--(458.836,621.402)
--(459.098,622.762)--(459.938,623.082)--(460.906,620.305)
--(462.07,616.941)--(463.039,615.066)--cycle^^(458.32,625.152)
--(459.16,626.125)--(457.48,628.32)--(454.117,632.59)
--(451.012,635.562)--(445.711,637.57)--(444.352,638.344)
--(441.637,638.473)--(442.023,637.891)--(444.289,637.117)
--(447.973,635.953)--(452.176,633.367)--(455.539,629.875)
--(457.09,627.156)--cycle);