2011年10月10日星期一

Java Primer

1 public class Primer {  2     public static void main( String[] args ) {  3         boolean flag = true;  4   5         for (int i=3; i<10000000; i+=2) {  6             flag = true;  7   8             for (int j=3; (j*j)<=i; j+=2) {  9                 if ( i%j ==0 ) { 10                     flag = false; 11                     break; 12                 } 13             } 14             if (flag) System.out.println( i ); 15         } 16     } 17 }

2010年4月19日星期一

LaTeX diary

两面模式时的分页:
当选择了文档选项 twoside 时,还可以用一个分页命令:
\cleardoublepages
它的作用同 \clearpage 一样(当前页被中止,所有未打印的图标输出在
后面的页上),而且接下来的页应收奇数页。如果必要的话,由此会得到
一个具有偶数页码的空页。

控制分页:
LaTeX2e 提供了稍微增加当前页高度的可能性:
\enlargethispage{length}
\enlargethispage*{length}
上面两条命令将定义中的 length 只加到当前页的 \textheight 上。
有时候只需要稍微一点的调整,就可以避免一个糟糕的分页。
命令的 * 形式在当前页上无论如何也要调整行距,以最大化文本高度。

--
---- 可移植文档格式 ------------

PDF 格式是数字化文档事实上的工业标准,它可以将文字、
字型、格式、颜色及独立于设备和分辨率的图形图像等封装在
一个文件中。

该格式文件还可以包含超文本链接、声音和影像等信息,支持特长
文件。PDF 格式使用了工业标准的压缩算法,易于传输与储存。

PDF 格式的文档具有纸版书的质感和阅读效果,能"逼真"展现书
的原貌,显示大小可任意调节,完全不依赖操作系统的语言和
字体及显示设备。

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);

2008年12月30日星期二

CS University Tip

美国计算机专业前20名著名学校点评(转)

总的来说,前20的CS可以分成三波:

多以开源起家
一、4个最为优秀的CS Program: Stanford, UC. Berkeley, MIT, CMU

二、6个其他前10 的: UIUC, Cornell, U. of Washington,Princeton, U. of Texas- Austin 和 U. of Wisconsin-Madison,其中UIUC, Cornell, U. of Washington和UW- Madison几乎从未出过前10。

三、其他非常非常优秀的CS:CalTech, U. of Maryland at CP, UCLA, Brown, Harvard , Yale, GIT, Purdue, Rice, 和 U. of Michigan.

Stanford URL: http://www.stanford.edu/ Stanford 的CS是个很大个的CS,拥有40人以上的Faculty成员,其中不乏响当当硬梆梆的图灵奖得主 (Edward A.Feigenbaum, John McCarthy) 和各个学科领域的大腕人物,比如理论方面的权威 Donald E. Knuth; 数据库方面的大牛Jeffrey D. Ullman(他还写过那本著名的编译原理,此人出自 Princeton);以及 RISC 技术挑头人之一的John Hennessy。相信CS的同学对此并不陌生。该系每年毕业30多名 Ph.D.以及更多的 Master。学生的出路自然是如鱼得水,无论学术界还是工业界,Stanford 的学生倍受青睐。几乎所有前10的CS中都有 Stanford 的毕业生在充当教授。当然同样享有如此地位的还包括其他三头巨牛:UC.Berkeley, MIT 和 CMU. 毕业于U. of Utah的 Jim Clark 曾经在 Stanford CS当教授。后来就是这个人创办了高性能计算机和科学计算可视化方面巨牛的SGI公司。SUN 公司名字的来历是:Stanford UniversityNetwork.。顺便提一下,创办 YAHOO的华人杨致远曾在斯坦福的EE攻读博士,后来中途辍学办了YAHOO。 CS科研方面,斯坦福无论在理论,数据库,软件,硬件,AI 等各个领域都是实力强劲的顶级高手。斯坦福的 RISC 技术后来成为 SGI/MIPS的 Rx000系列微处理器的核心技术; DASH,FLASH 项目更是多处理器并行计算机研究的前沿;SUIF 并行化编译器成为国家资助的重点项目,在国际学术论文中SUIF编译器的提及似乎也为某些平庸的论文平添几分姿色。 Stanford 有学生14000多,其中研究生7000 多。CS有175人攻读博士, 350人攻读硕士,每年招的学生数不详,估计少不了,但不要忘了,每年申请CS的申请学生接近千人。申请费高达 $90.00。 斯坦福大学位于信息世界的心脏地带--硅谷。加州宜人的气候,美丽的风景使得Stanford堪称CS的天堂。33.1平方公里的校园面积怕是够学子们翻江蹈海,叱姹风云的了。申请斯坦福是很难成功的,但也并非不可为之。去斯坦福这样的牛校,运气很重要,牛人的推荐也很重要。

UC-Berkeley URL: http://www.berkeley.edu/ 同样地处旧金山湾畔,硅谷地带,离 Stanford 只有大约 50公里的加州大学伯克利校区:UC.Berkeley 是美国最激进的学校之一。60年代的嬉皮文化,反越战,东方神秘主义,回归自然文化都起源于此。诗人爱伦金斯堡是当年 Berkeley的代言人。 在当今高科技领域 C. Berkeley 在缔造新的神话,在文学,数学,化学,新闻等20多个大的学科领域中位居前3。 16个诺贝尔奖得主,总数近200的科学院院士、工程院院士,连同众多在硅谷商战中成为亿万富翁的伯克利人撑起了一面汇集天下之英才的大旗。INTEL总裁AndrewGrove 毕业于 UC. Berkeley。 BSD版的UNIX影响了整个OS界,伯克利的 RISC 技术后来成为了SUN公司 SPARC 微处理器的核心技术,巨牛人物 David Patterson 接下了一个6亿美元的项目用于新型计算机体系结构,特别是 IRAM 的研究开发。 UC. Berkeley 有学生 30000多,研究生超过8500。申请费和其他加州大学的分校一样,$40.00。据一项最近的调查,伯克利已经成为美国大学生最向往的研究生院,高居榜首,其申请的难度可想而知。UC.Berkeley的 DEADLINE一般很早,12月中就截至了,其内部 的实际 DEADLINE 其实要迟一些。 Berkeley的CS是个大系,Faculty中有图灵奖得主以及象 Patterson 这样的巨牛。学生的出路同 Stanford,MIT,CMU一样,光辉灿烂,前程锦绣。CS科研方面,Berkeley 也是样样强,门门巨牛。 旧金山湛蓝起伏的海湾,苍翠绵延的山峦,舒心宜人的气候,以及近在咫尺的硅谷…… 这一切的一切不也使得UC.Berkeley 俨然一个CS 学子的世外桃源么?

MIT URL: http://www.mit.edu/ MIT 招生好象不看GRE成绩。但MIT的CS是巨牛的,99年最新排名上它和斯坦福被打了5.0 的满分,并列第一。MIT的CS曾为CS的发展作出不可磨灭的贡献,数据流计算的思想和数据流计算机、人工智能方面的许多重大成就,以及影响了整个 UNIX 界的 X-Window……MIT和斯坦福,CMU, UC. BERKELEY一样,都是几乎在CS界样样巨牛的学校。 MIT的Media Arts and Sciences其知名度不在 Computer Department下。主要是多媒体技术,信息处理,人工智能……有一大批著名的教授,如 Marvin Minsky (Turing Aw ard)

CMU URL: http://www.cmu.edu/ CMU 是个位于匹兹堡的不大的学校,学生7000多,校园好象也不大。但这个学校在工程及其他一些领域却是顶尖的学堂。 CMU的 CS 不单单是个系,而是一个学院,其规模之大,可能只有Stanford, UIUC可比。教师学生的情况同前面3个类似,不再赘述。Mach 操作系统,PVM,C.mmp等都有CMU的巨大贡献。 申请CMU的难度很大,因为尽管CMU的 CS Faculty很多,但每年只招不足30人的研究生队伍。

CORNELL URL: http://www.(cs.)cornell.edu 作为 IVY LEAGUE的成员和一所私立学校,Cornell有其独到的优势。在美国,私立学校一般比公立学校难进,其学生也是经过很严的选拔才录取的,Cornell的CS学生入校后多能享受FELLOW的待遇,其个人经济条件非公立学校可比,加上贵族式校友的提拔,私立学校的出路是很诱人的。 Cornell在理论计算机方面一直是顶级高手,但在其他CS领域并不总能在前10.Cornell学生18000多,研究生过5000。CS每年招攻读Ph.D.的学生25 人左右。

UIUC URL: http://www.uiuc.edu/ UIUC 的工程院在全美堪称至尊级的巨牛,其 CS,ECE,EE 在历史上都屡建战功。在 CS 方面,从早期的超级计算机ILLIAC I, II, III, IV 到后来的 CEDAR,都是CS发展史上,特别是并行计算机发展史上的重要事件,影响、引导了很长时期的发展。 David Kuck曾是并行处理界的一代先驱。 超级计算机研究开发中心:CSRD,美国国家超级计算及应用中心:NCSA等众多的机构,使得 UIUC 的 CS 常常成为研发的领军头领。大家可能还记得,Netscape-Navigator 的最初开发人员中有个 Marc,Anderssen。这位来自 WISCONSIN 的小伙在 UIUC 读本科,大四的时候在NCSA参与编写了 MOSAIC,后来他去了硅谷,并在那里遇到了前面提到过的大牛: Jim Clark,SGI 的前创始人,两人一见如故,联手创办了著名的网景,并一度在浏览器市场上独霸武林。 随着一代代至尊大师的离去,UIUC 的 Faculty 看上去似乎并不引人注目。但得提醒你,UIUC 的 CS 向来以实干著称。我期待着他们下一个惊世之举。 UIUC是个大学校,学生数过35000,研究生院的近万。UIUC 的 CS 很大个,40余个 Faculty 提供了全面的 CS 教育和科研项目。每年30多个博士的毕业数目似乎只有斯坦福可以匹敌。 UIUC 的 Polaris 并行化编译器是这个领域和斯坦福的 SUIF 直接叫板的拳头产品。清华开发并行编程环境时选用了这个系统。只是代码庞大,运作缓慢的 Polaris 搞的清华有那么一点点瘪西西... UIUC 在计算机硬件,软件,AI,DB,等各个领域都相当巨牛。特别是硬件,前面提到的 ILLIAC,CEDAR.....事实上,UIUC 在超级计算机系统的研究开发方面决不逊于 CS 四大天王中的任何一个,甚至有过之而无不及。NCSA 建立在 UIUC这一事实本身就是佐证。 UIUC-CS 的学生毕业后去学术界的不少,Stanford, Berkeley...都有UIUC 的博士挑大梁。但更多 UIUC-CS 学人还是进入业界,成为业界实干的中坚。

U. of Washington URL: http://www.washington.edu/ 位于 Seattle的 UW 得天独厚--计算机界的巨牛MS就在西雅图,而且 更为要命的是,Bill Gates 就是那里儿的人。这位 Harvard 的辍学者给了哈福许多 MONEY, 但同给UW的钱财相比,实在是小巫见大巫。 U. of Washington 位于分光秀丽的 WASHINGTON 湖畔,气候四季如春。33000多学生中研究生有8000。Seattle 最令人厌恶的地方可能就是一年有160天会降水。 UW的 CS 较大,30多名 Faculty 成员,每年近20个优质博士毕业,以及大量的Master。估计每年的招生数应该不低,UW的CS在各个方面比较均衡,最强的软件排名第5,而其他领域也一般都能位居前10,好象没有明显弱的地方。 图灵奖得主 Dick Karp 从Berkeley告老还乡后又被返聘到了 UW 的 CS。U. of Washin gton 的 CS 要求很高,Ph.D.学生入学的平均 GPA 高达 3.86, GRE2160+,加上一般较早的 DEADLINE,申请UW是相当有难度的。

Princeton URL: http://www.princeton.edu/ Princeton 是个令人神往的地方,这里曾经世界的科学中心。Princeton的CS不大, 18个 Faculty 成员,学生数也不算多。科研上除了排名第5的理论,似乎还没注意到其他闪光点。但是,Princeton 无疑培养出了大量计算机界的优秀人物,Jeffrey D. Ullman, John McCarthy 等大名鼎鼎的巨牛人物均出自 Princeton. 在 Princeton 领受的教育是最好的教育熏陶。 Princeton 学校不大。

2008年12月17日星期三

I am married

2008年12月6日,我结婚了。

2008年10月20日星期一

Exhaustive Attack method

#! /usr/bin/perl
use warnings;
use strict;

my %dict = ('A'=>'E', 'E'=>'F', 'F'=>'H', 'H'=>'J', 'J'=>'K',
'K'=>'M', 'M'=>'P', 'P'=>'A', ' '=>'A');
my $max = 'P';
my $str_len = 4;

my @tmp;
for (my $i=0; $i<$str_len; $i++) { push(@tmp, ' ') }

sub up {
my($pos) = @_;
if (($tmp[$pos] eq $max) and ($pos < $str_len)) {
$tmp[$pos] = $dict{$tmp[$pos]};

$pos++; up($pos);
} else {
$tmp[$pos] = $dict{$tmp[$pos]};
return 0;
}
}

while (!(($tmp[0] eq $max) and ($tmp[1] eq $max)
and ($tmp[2] eq $max) and ($tmp[3] eq $max))) {
up(0);

for (@tmp) { print if ($_ ne ' ') }
print "\n";
}

2008年9月12日星期五

Infinity

只有两种事物是无穷无尽的--宇宙和人类的愚蠢。但对于前者,我不敢确定。
-- Albert Einstein

2008年9月8日星期一

卤肉

突然想自己做卤菜,星期天下午从联华超市买了包卤料,又从小区外的超市买了斤肉,把紫砂的电炖锅拿出来,按卤料包装上的说明将原料洗吧洗吧就入锅了,嘿嘿。
这个炖锅也忒慢,1个多小时才烧开,大约炖两个小时肉就很松了,香气四溢啊。但是开始水放得多了点,于是继续炖2个多小时,一直到晚上9点,终于可以开锅了,哈喇子流得稀里哗啦 ^^
虽然中途加了4次盐,还是淡了点,味道和外面卖的卤肉味道也不太一样,不过还是可以的。继续改进,明天添图