2007年11月17日星期六

 
 
 
 
Posted by Picasa

2007年7月31日星期二

【转】孟岩:《精通正则表达式》书评

IT产业新技术日新月异,令人目不暇给,然而在这其中,真正称得上伟大东西的却寥寥无几。1998年,被誉为“软件世界的爱迪生”,发明了BSD、 TCP/IP、csh、vi和NFS的SUN首席科学家Bill Joy曾经不无调侃地说,在计算机体系结构领域里,缓存是唯一称得上伟大的思想,其他的一切发明和技术不过是在不同场景下应用这一思想而已。在计算机软件领域里,情形也大体相似。如果罗列这个领域中的伟大发明,我相信绝不会超过二十项。在这个名单当中,当然应该包括分组交换网络、Web、Lisp、哈希算法、UNIX、编译技术、关系模型、面向对象、XML这些大名鼎鼎的家伙,而正则表达式也绝对不应该被漏掉。正则表达式具有伟大技术发明的一切特点,它简单,优美,功能强大,妙用无穷。对于很多实际工作来讲,正则表达式简直是灵丹妙药,能够成百倍地提高开发效率和程序质量。CSDN的创始人蒋涛先生在早年开发专业软件产品时,就曾经体验过这一工具的巨大威力,并且一直印象深刻。而我的一位从事网络编辑工作的朋友,最近也领略了正则表达式的威力——他用 Perl开发了一个不足20行的小程序,使用正则表达式将一项原本每天耗用10个人时的工作在一分钟之内自动完成。而正则表达式在生物信息学和人类基因图谱的研究中所发挥的关键作用,更是被传为佳话。无论对于软件开发者,还是从事其他知识工作的专业人士,正则表达式都是最有利的工具之一。

所谓正则表达式,就是一种描述字符串结构模式的形式化表达方法。在发展的初期,这套方法仅限于描述正则文本,故此得名“正则表达式(regular expression)”。随着正则表达式研究的深入和发展,特别是Perl语言的实践和探索,正则表达式的能力已经大大突破了传统的、数学上的限制,成为威力巨大的实用工具,在几乎所有主流语言中获得支持。为什么正则表达式具有如此巨大的魅力?一方面,因为正则表达式处理的对象是字符串,或者抽象的说,是一个对象序列,而这恰恰是当今计算机体系的本质数据结构,我们围绕计算机所做的大多数工作,都归结为在这个序列上的操作,因此,正则表达式用途广阔。另一方面,与大多数其他技术不同,正则表达式具有超强的结构描述能力,而在计算机中,正是不同的结构把无差别的字节组织成千差万别的软件对象,再组合成为无所不能的软件系统,因此,描述了结构,就等于描述了系统。在这方面,正则表达式的地位是独特的。正因为着两点,在现在的软件开发和日常数据处理工作中,正则表达式已经是必不可少的工具。如果一个开发工具不支持正则表达式,那它就会被视为玩具语言,如果一个编辑器不支持正则表达式,那它就会被成为阳春应用。连人们原本并不指望应用正则表达式的商用数据库,各家厂商也竞相以支持正则表达式为卖点。正则表达式的声势之隆,是毋庸置疑的。

非常奇怪的是,这样一个了不起的技术,在我国却并没有得到充分推广。以其价值而言,正则表达式不但值得每一个专业程序员掌握,而且值得所有知识工作者去了解。然而现实情况是,不但一般知识工作者大多闻所未闻,很多专业程序员也视之为畏途。为什么会出现这种情况呢?原因有二。其一,正则表达式产生和发展在 UNIX文化体系之中,而我国软件开发社群的知识结构长期受到微软的决定,UNIX文化影响甚微。在2002年推出.NET平台之前,微软在其各项主流平台、产品与开发工具当中,均未对正则表达式给予足够重视,相应地,我们的开发者们对正则表达式也就知之不多。第二,也是更重要的原因,就是正则表达式并不是那么好掌握的,在通向驾驭正则表达式强大力量的道路上,还是有那么几只拦路虎的,而要打虎过岗,不但要花点功夫,还要有正确的方法。

学习正则表达式,入门不难,看一些例子?

2007年7月3日星期二

这里只有我一个了

秀秀走了,朝云也走了,昨天金华也走了

不知道什么时候才能再见了……

2007年5月10日星期四

Ubuntu的发音

Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:)

大多数的美国人读 ubuntu 时,将 u 作为元音发音,类似单词 who 或者 boo ,重音在第二个音节即 u'buntu ,oo-boon-too 。

如果您喜欢撒哈拉,喜欢它令人窒息的温柔、梦幻般的寂寥还有张扬恣肆的旷远,您大可在第一个 u,后面带些嗡嗡声: oom-boon-too。

Ubuntu的中文发音大约为: 乌班图

2007年5月9日星期三

牛人都叫麦克

在西方,麦克无疑是一个牛b爆棚的名字.在这个名字列表上,有一长串风骚无比的妖人.

麦克.乔丹
飞人陛下,篮球之神,多年之后还记得腾空倒手上篮的惊艳

麦克.泰森
前拳皇,现欧美av圈第一猛男,其与av女皇James的肉帛缠绵令无数人鼻血狂喷,意志薄弱者立仆.

麦克.舒马克
车神,极速传说,风驰电掣中的冷静与优雅,冠军拿到手发软.

麦克.马里昂
传奇教父,美国黑手党总扛把子,铁与血,谎言与背叛,千秋万代,一统江湖.

麦克.道格拉斯
好莱坞老牌帅哥,熟女界第一杀手,其与性感女皇石头姐的肉帛缠绵令无数人鼻血狂喷,意志薄弱者立仆.

麦克.西维尔
少男界第一小帅哥,少女少手,依然记得<成长的烦恼>中其对镜子自言自语说"hi,宝贝,你很帅"的经典造型.

麦克.杰克逊
前流行界一哥,太空舞步空前绝后,以变脸绝技和对少年儿童的由衷喜爱著称于世.

麦克.欧文
英格兰小帅哥,风一样的男子,1998深夏风一样的掠过阿根廷的蓝白防线.

......

麦克家族之神圣族谱持续添加中.
now,the question is,who is the next one?
scofield!of course!

公元2006年,美利坚小帅哥scofield以其在越狱事业中一系列的出位表现,令人信服的证明了自己无愧于麦克尔这一神圣而辉煌的名字.

首先,scofield够帅.他以齐祖加强版的拉风造型,上动天听,帅得惊动华盛顿,女总统为之茶饭不思,欲擒而睹之然后快.风流以降,脱衣舞娘、女医师无不闻风而降,拜倒在其牛仔裤下.屏幕外更是粉丝无数,东土有花痴女fans评曰:从未见人能把囚服穿得如此有形有款.可见就其帅度而言,scofield帅哥完全承续了家族中人外形俊朗的优秀血统.(什么?这话有漏洞?泰森不俊朗?好吧,我刚说的是家族中"人",忘掉这个牲口吧.再说别个身材一级棒,也算是视觉系猛男好不好)

其次,scofield够冰雪.他对日常物品的创造性使用,向我们揭示了现象背后深刻本质和丰富内涵.看上去它是个纸鹤,其实它是个指南针,用以探测地下水道的方向.兼可当定情信物,博sara美人一笑,芳心暗许,其功能类同于古代士子之随身玉佩.三可当通讯载体,书密码于其上,约定时间地点,与美女不见不散,相当风骚,不让鸿雁红叶飞鸽等传情手段专美于前.当然,小帅哥的创意远不止一鱼三吃,一物三用.在越狱过程中,此种例子比比皆是.比如,只要功夫深,铁钉磨成螺丝刀.铁钉者,废物也,螺丝刀者,居家旅行越狱逃跑之必备良器也.变废为宝,实乃scofield化腐朽为神奇之又一典范之作.再比如文身,比如牙膏,比如fm调频电台...小帅哥智多而近妖之战例可谓族繁不及备载,略过不细表.

再有,scofield够运道.道可道,非常道.可见,运道是一种很玄的东西.综观英雄,遍览豪杰,大凡一番事业者,术业或有专攻,牛b领域各有不同,好运气则不可或缺.远的不谈,就说这神圣家族中,如果飞人错过禅师,如果拳王错过吸血鬼(成也唐金,败也唐金,这是后话),又如果车神错过法拉利,当然也一样拉风,但可以肯定,绝对不会牛b到如此变态的境界.再说scofield,小帅哥和其亲爱的大哥以至少每集一次的频率遭遇险境,旋又绝处逢生.编剧们妙笔生花,玩的就是心跳.但心跳归心跳,谁也不会天真到以为scofield将就此一命呜呼,而是抱着好奇的心理,去猜测这次又是什么样的天时地利人和将其救出生天.根据好莱坞的"主角不死定律",scofield拥有先验的好运气,用武汉讲那就一个点子高啊,比拉灯大叔到此一游之前的世贸大厦还要高.所以虽意外频出,然而一路跌跌撞撞的逃到第二季第15集,依然活得风生水起,风骚无比.并且,可以预计得是,scofield还将一如既往的风骚下去.

基于以上要点,评审老师-也就是我本人-以1票赞成,0票反对,0票弃权,全票通过scofield加入麦克神圣家族的审查.

scofield!
welcom to the family!

最后,感谢cctv,感谢chanel v,感谢fox,感谢伊甸园,感谢bt.越狱传奇还在继续,敬请关注.
有道是,故垒西边,千帆过尽,数风流人物,还看今朝之scofield!

以上文章转自:http://bbs.whu.edu.cn/pc/index.php?id=daybreak

【转】深入浅出ShellExecute

Q: 如何打开一个应用程序?
ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );

ShellExecute(this->m_hWnd,"open","notepad.exe",
"c:\\MyLog.log","",SW_SHOW );
As you can see, I haven't passed the full path of the programs.
Q: 如何打开一个同系统程序相关连的文档?
ShellExecute(this->m_hWnd,"open",
"c:\\abc.txt","","",SW_SHOW );
Q: 如何打开一个网页?
ShellExecute(this->m_hWnd,"open",
"http://www.google.com","","", SW_SHOW );
Q: 如何激活相关程序,发送EMAIL?
ShellExecute(this->m_hWnd,"open",
"mailto:nishinapp@yahoo.com","","", SW_SHOW );
Q: 如何用系统打印机打印文档?
ShellExecute(this->m_hWnd,"print",
"c:\\abc.txt","","", SW_HIDE);
Q: 如何用系统查找功能来查找指定文件?
ShellExecute(m_hWnd,"find","d:\\nish",
NULL,NULL,SW_SHOW);
Q: 如何启动一个程序,直到它运行结束?
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "c:\\MyProgram.exe";
ShExecInfo.lpParameters = "";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
或:
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo; //This is an [in] parameter
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field
if(CreateProcess("c:\\winnt\\notepad.exe", NULL,
NULL,NULL,FALSE,0,NULL,
NULL,&StartupInfo,&ProcessInfo))
{
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
}
else
{
MessageBox("The process could not be started...");
}
Q: 如何显示文件或文件夹的属性?
SHELLEXECUTEINFO ShExecInfo ={0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = "properties";
ShExecInfo.lpFile = "c:\\"; //can be a file as well
ShExecInfo.lpParameters = "";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);

有些有问题,比如Q: 如何用系统查找功能来查找指定文件?

帮助文件定位

ShellExecute(hWnd,"open","iexplorer.exe",CString("file://")+filename + CString("#a1"), NULL,SW_SHOWNORMAL);
从注册表中可以获得IE所在路径

explorer.exe的命令参数及其应用

在Windows中,相信大家对“Explorer.exe”并不陌生!通常情况下,在“开始→运行”中输 入“Explorer.exe”命令就能以“资源管理器”方式打开“我的文档”。其实,Explorer.exe还有很多鲜为人知的参数。
  命令格式
  Explorer [/n][/e][[,/root],[path]][[,/select],[path filename]]
  参数说明
  /n表示以“我的电脑”方式打开一个新的窗口,通常打开的是Windows安装分区的根目录。
  /e表示以“资源管理器”方式打开一个新的窗口,通常打开的也是Windows安装分区的根目录。
  /root,[path]表示打开指定的文件夹,/root表示只显示指定文件夹下面的文件(夹),不显示其它磁盘分区和文件夹;[path]表示指定的路径。
  如果不加/root参数,而只用[path]参数,则可以显示其它磁盘分区和文件夹中的内容。另外,[path]还可以指定网络共享文件夹。
  /select,[path filename]表示打开指定的文件夹并且选中指定的文件,[path filename]表示指定的路径和文件名。
  如果不加/select参数,则系统会用相应的关联程序打开该文件。如果[path filename]不跟文件名就会打开该文件夹的上级目录并选中该文件夹。
  应用实例
  1.以“资源管理器”方式打开E盘根目录
  单击“开始→运行”,输入“explorer /e,/root,e:\”,回车即可。如果需要显示其它磁盘分区和文件夹中的内容,可以输入“explorer /e,e:\”。
  2.以“我的电脑”方式打开“E:\Download”目录下的QQ.exe文件在“开始→运行”中键入“explorer /n,/selecte:\download\qq.exe”或“explorer /selecte:\download\qq.exe”,回车即可。
  3.通过“开始”菜单中的“Windows 资源管理器”命令打开特定窗口
  以在Windows XP下打开E盘根目录为例。首先在“开始”菜单中用鼠标右键单击“所有程序→附件→Windows 资源管理器”项,选择“属性”命令。接着在弹出窗口的“目标”栏中输入“%SystemRoot%\explorer.exe /e,e:\”(默认值是“%SystemRoot%\explorer.exe”)即可。

2007年4月24日星期二

What kinds of world does China want?

About in the Feb of 2007, a confenrence about the world ecnomic held , there was a topic talled was what kinds of world does China want?