﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-心酸果冻</title><link>http://www.blogjava.net/zhoudq/</link><description>庄周梦蝶，孰蝶是我，我是孰蝶？一梦至今，蝶我已难分</description><language>zh-cn</language><lastBuildDate>Wed, 13 May 2026 13:43:46 GMT</lastBuildDate><pubDate>Wed, 13 May 2026 13:43:46 GMT</pubDate><ttl>60</ttl><item><title>Bill Joy MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder, and why?”。我觉得挺有意思的，也来凑个热闹。排名不分先后。</title><link>http://www.blogjava.net/zhoudq/archive/2008/05/31/204217.html</link><dc:creator>心酸果冻</dc:creator><author>心酸果冻</author><pubDate>Fri, 30 May 2008 17:29:00 GMT</pubDate><guid>http://www.blogjava.net/zhoudq/archive/2008/05/31/204217.html</guid><wfw:comment>http://www.blogjava.net/zhoudq/comments/204217.html</wfw:comment><comments>http://www.blogjava.net/zhoudq/archive/2008/05/31/204217.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoudq/comments/commentRss/204217.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoudq/services/trackbacks/204217.html</trackback:ping><description><![CDATA[<p>Bill Joy MIT BBS上说微软电话面试的一道题就是&#8220;Who do you think is the best coder, and why?&#8221;。我觉得挺有意思的，也来凑个热闹。排名不分先后。 </p>
<p>传奇编程高手：<br />
Bill Joy<br />
John Carmack <br />
David Cutler <br />
Donald E. Knuth <br />
Ken Thompson <br />
Rob Pike <br />
Dennis M. Ritchie <br />
Edsger Wybe Dijkstra <br />
Anders Hejlsberg </p>
<p>Bill Joy<br />
Bill Joy, 前任Sun的首席科学家，当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然，Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统，就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了，但足见他的功力。另一个传说是，1980年初的时候，DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了，拒绝把BBNTCP/IP加入BSD，因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了，端的是一箭封喉，很快就写出了高性能的伯克利版TCP/IP。当时BBN和DARPA签了巨额合同开发TCP/IPStack，谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在，还是相当散漫的哈)。只见BBN问：你怎么写出来的？而B伯伯答：简单，你读协议，然后编程就行了。最令偶晕倒的是，B伯伯硕士毕业后决定到工业界发展，于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出来乐。。。象这种软硬通吃的牛人，想不佩服都不行的说。据Bill Joy的同事说，一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处，B伯伯发言，直切要害，提出漂亮的构想，让同事们彻底崩溃。对了，他还是Java Spec和JINI的主要作者之一。 </p>
<p>John Carmack<br />
John Carmack，id Software的founder和Lead Programmer。上个月和一个搞图形的师兄聊天，他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC上搞个小动画都能让人惊叹一番的时候，J哥哥就推出了石破天惊的Castle Wolfstein, 然后再接再励，doom, doomII, Quake...每次都把3-D技术推到极致。J哥哥的简历上说自己的专长是"Exhaust 3-D technology"，真是牛人之言不我欺的说。做J哥哥这样的人是很幸福的，因为各大图形卡厂家一有了新产品就要向他&#8220;进贡&#8221; ，不然如果他的游戏不支持哪种卡，哪种卡基本就会夭折乐。当初MS的Direct3D也得听取他的意见，修改了不少API。当然，J哥哥在结婚前十数年如一日地每天编程14小时以上，也是偶们凡人望尘莫及的。对了，J哥哥高中肆业(？)，可以说是自学成才。不过呢，谁要用这个例子来为自己学习不好辩护，就大错特错了。那 Leonardo Da Vinci还是自学成才呢(人是私生子，不能上学)。普通人和天才还是有区别的。对了，其实偶们叫&#8220;达分奇&#8221;是相当不对的，因为Vinci是地名，而Da Vinci就是从Vinci来的人的意思。换句话说，Leonardo Da Vinci就是&#8220;从Vinci来的Leonardo&#8221;的意思。叫别人&#8220;Da Vinci&#8221;就不知所谓乐。嗯，扯远了，打住。 More about Carmack Here </p>
<p>David Cutler<br />
David Cutler，VMS和Windows NT的首席设计师，去微软前号称硅谷最牛的kernel开发员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来，然后说：&#8220;who can't write an OS in a week?"，也是牛气冲天的说。顺便说一句，D爷爷到NT3.5时，管理1500名开发员，自己还兼做设计和编程，不改coder本色啊。D爷爷天生脾气火爆，和人争论时喜欢双手猛击桌子以壮声势。:-) 日常交谈F-word不离口。他面试秘书时必问："what do you think of the word '****'?" ，让无数美女刹羽而归。终于有一天，一个同样火爆的女面对这个问题脱口而出："That's my favorite word"。于是她被录取乐，为D爷爷工作到NT3.5发布。 </p>
<p>Donald E. Knuth<br />
Don Knuth(Donald E. Knuth)。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿，学数学的不知道欧拉，学音乐的不知道莫扎特，学Delphi的不知到 Anders Hejlsberg，或者学Linux不知道Linus Torvalds一样，不可原谅啊。:-)为了让文章完整，就再罗唆几句吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别人时收一两千美元，那些公司拿了code，加工一下卖出去就是上万上十万。不过也没见高爷爷不爽过，学者本色的说。想想那可是60年代初啊，高爷爷写编译器写多了，顺带就搞出了个Attribute Grammar和LR(k)，大大地造福后人啊。至于高爷爷在CalTech的编程比赛(有Alan Kay得众多高高手参加)总是第一，写的Tex到86年就code freeze，还附带2^n美分奖励等等都是耳熟能详，偶就不饶舌乐。顺便说一下，高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可谓字字铿锵，堪为前言的典范。他的技术文章也是一绝，文风细致，解释精当，而且没有学究气，不失轻快跳脱。记得几年前读Concrete Mathematics，时不时开怀大笑，让老妈极其郁闷，觉得我nerdy到家，不可救药。其实呢，子非鱼，安知鱼之乐，更不知那完全是高爷爷的功劳。说到写作高手，不能不提Stephen A. Cook。他的文章当年就被我们的写作老师极力推荐，号称典雅文风的样本。库爷爷一头银发，身材颀长，总是面带谦和的微笑，颇有仙风道骨，正好和他的仙文相配的说。高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走，但他捐献了好多作品，都可以在网上看到，比如著名的Mathematical Writing，MMIXWare，The Tex Book等，更不用说足以让他流芳百世的Tex乐。 </p>
<p>Ken Thompson<br />
Ken Thompson，C语言前身B语言的作者，Unix的发明人之一(另一个是Dennis M. Riche老大，被尊为DMR)，Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代，普通人都认为只有大型机才能运行通用的操作系统，小型机只有高山仰止的份儿。至于用高级语言来写操作系统，更是笑谈。Ken爷爷自然不是池中物，于是他和DMR怒了，在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不知道，一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写，于是C在随后20年成就了不知多少豪杰的梦想和光荣。Ken爷爷还有段佳话：装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户，获得最高权限。Bell Lab里的科学家都心比天高，当然被搞得郁闷无比。于是有高手怒了，跳出来分析了UNIX代码，找到后门，修改代码，然后重新编译了整个UNIX。就在大家都以为&#8220;这个世界清净了&#8221;的时候，他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限，百思不解后，只好继续郁闷。谁知道这一郁闷，就郁闷了14年，直到Ken爷爷道出个中缘由。原来，代码里的确有后门，但后门不在Unix代码里，而在编译Unix代码的C编译器里。每次C编译器编译UNIX的代码，就自动生成后门代码。而整个Bell Lab的人，都是用Ken爷爷的C编译器。 </p>
<p>Rob Pike<br />
Rob Pike, AT&amp;T Bell Lab前Member of Technical Staff ，现在google研究操作系统。罗伯伯是Unix的先驱，是贝尔实验室最早和Ken Thompson以及Dennis M. Ritche开发Unix的猛人，UTF-8的设计人。他还在美国名嘴David Letterman的晚间节目上露了一小脸，一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的是，罗伯伯还是1980年奥运会射箭的银牌得主。他也是个颇为厉害的业余天文学家，设计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典，The Unix Programming Environment 和 The Practice of Programming 的作者之一。如果初学者想在编程方面精益求精，实在该好好读读这两本书。它们都有中文版的说。罗伯伯还写出了Unix下第一个基于位图的窗口系统，并且是著名的blit 终端的作者。当然了，罗伯伯还是号称锐意革新的操作系统，Plan9，的主要作者。可惜的是，Plan9并没有引起多少人的注意。罗伯伯一怒之下，写出了振聋发聩的雄文 Systems Software Research is Irrelevant，痛斥当下系统开发不思进取，固步自封的弊病。虽然这篇文章是罗伯伯含忿出手，颇有偏激之词，但确实道出了系统开发的无奈：开发周期越来越长，代价越来越大，用户被统一到少数几个系统上，结果越来越多的活动是测量和修补，而真正的革新越来越少。就在罗伯伯郁闷之极的时候，google登门求贤来乐。如果说现在还有一家大众公司在不遗余力地把系统开发推向极致的话，也就是google 乐。随便看看google的成果就知道了。具有超强容错和负载平衡能力的分布式文件系统GFS (现在能够用100,000台廉价PC搭起一个巨型分布系统，并且高效便宜地进行管理的系统也不多哈)，大规模机器学习系统(拼写检查，广告匹配，拼音搜寻。。。哪个都很牛的说)，更不用说处理海量并行计算的各式google服务了。Rob在System Software Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前沿成果了。想不到他错了，因为google关心。google网络了大批功成名就的牛人，还有大量初生牛犊般博士做开发，显然不是没事耍酷，而是因为它们的开发总是试图吸取系统研究的最新成果。 想必Rob Pike在google很幸福。愿他做出更棒的系统。 </p>
<p>Dennis M. Ritchie<br />
Dennis M. Ritchie 既然Ken Thompson是我的偶像，新闻组上人称DMR的Dennis M. Ritchie自然也是，毕竟两人共同缔造了UNIX，而Dennis几乎独力把C搞大(当然，C的前身是B，而B是Ken Thompson一手做出来的)。J 两人1983年分享图灵奖，是有史以来少数几个因工程项目得奖的工程师(本来是唯一的一对儿，但Alan Kay才因为SmallTalk得奖，所以就成了唯二的乐) 。一个人一生能做出一个卓越的系统已经不易，DMR的C和UNIX长盛不衰近30年，至今生机勃勃，DMR此生可以无憾的说。D爷爷也算有家学渊源：他老爸在AT&amp;T贝尔实验室工作了一辈子，并在电路设计方面卓有成就，还出了本颇有影响的书The Design of Switching Circuits，据说在交换理论和逻辑设计方面有独到的论述。当然，D爷爷和他老爸是不同时代的人：他老爸的研究成形于晶体管发明之前，而D爷爷的工作离了晶体管就玩儿不转乐。:-D不要看D爷爷搞出了C，其实他最爱的编程语言是Alef，在Plan9上运行，支持并行编程。Alef的语法和C相似，但数据类型和执行方式都和C大大不同。说到语言，D爷爷对后来人有非常中肯的建议：抱着学习的目的来开发你自己的语言，不要冀望于它被众人接受。这个建议不光对语言开发有用，也适用于其它大型系统的开发。别的不说，DMR后来领导自己的团队在1995年和1996分别推出了Plan9和 Inferno操作系统，又用多少人知道呢？其实，D爷爷当初也没想过C会风行世界。他开发C的初衷和 Eric S. Raymond在Cathedral and Bazaar里阐述的一样，就是要消除自己对现有工具的不爽之处。谁知D爷爷无心插柳，C竟然受到众多程序员的狂热拥戴，连D爷爷自己都大惑不解。在一次采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当然C一度是Unix上的通用语言也是原因。但不管怎么说，D爷爷对编程语言出色的审美意识奠定了C广为流传的基础。最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样：开卡车。不过D爷爷更喜欢开NASCAR，而KM独爱巨无霸。J D爷爷自称心中不供偶像，如果一定要说一个，那就是Ken Thompson了。现在Ken爷爷退休当飞机教练去了，而D爷爷当了贝尔实验室系统开发部的头，整日忙于开支票。他俩合作20年，屡屡创造历史。这段令人神往的佳话，也就长留你我心中乐。P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是写了那本经典K&amp;R C。据D爷爷说，他，Ken, 和Kernighan三人中，Kernighan最能写文章，他次之，而Ken写得最少；但说到编程，Ken爷爷才是当之无愧的老大。 </p>
<p>Edsger Wybe Dijkstra<br />
Edsger Wybe Dijkstra 对，就是E.W. Dijkstra. 一提到EWD，很多人就会想起找最短路径的Dijkstra Algorithm，就好像一提到Sir. Tony Hoare，就想起Quick Sort一样。其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法，无非是戴爷爷在1956年为了展示新计算机 ARMAC的计算能力，初试身手的成果，属于他的算法处女作。据戴爷爷自述，他搞出最短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒太阳喝咖啡，突然就把这个算法想出来乐。而且当时的算法研究还比较原始，牛人们忙着用计算机搞数值计算，对离散算法不屑一顾。那时连一个象样的专注于离散算法的专业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年，他才把这个算法发表在Numerische Mathematik的创刊号上，权为捧场。:-) EWD在多个领域牛气冲天，端的是理论和编程两手硬的高手。只不过他的很多工作比较深刻，学校的老先生们觉得本科生接受不了，不给本科生讲而已。戴爷爷大概因为最短路径算法一战成名，于是有人请他参加另一台计算机X1的设计工作，并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么，但要知到，X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情愿，但经不住项目负责人Bram和Carel的轮番&#8220;吹捧&#8221;：我们知道实时中断让您工作变得非常困难，但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿，接下了这个烫手山芋。两三年后，他不仅搞出了实时中断，还围绕这个写出了自己的博士论文，顺利戴上博士帽。让戴爷爷真正成名立万的还是在X1上开发的Algo60，最早的高级语言之一。戴爷爷没日没夜地工作了8个月，就搞出了Algo60，也因此获得了1972年的图灵奖。因为Algo60，戴爷爷发表了一篇石破天惊的文章：Recursive Programming，于是人们才知道，原来高级语言也可以高效地实现递归，原来从此以后，所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道：堆栈。而且Algo60还让戴爷爷深入地思考多道程序设计的问题，最终发明了每个系统程序员都绕不开的概念：semaphore。当然，戴爷爷总是把他发明的概念严格形式化，极具科学家本色的说。和这些成就想比，他提出的吃饭的哲学家问题，也就没什么好说的了。说来好笑，当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练，也不是专门搞数值分析的，所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴爷爷这样的牛人创造历史。他一边教数值分析(:-D) ，一边开始开发一个<br />
</p>
<img src ="http://www.blogjava.net/zhoudq/aggbug/204217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoudq/" target="_blank">心酸果冻</a> 2008-05-31 01:29 <a href="http://www.blogjava.net/zhoudq/archive/2008/05/31/204217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>没事，写一个帮你处理Windows垃圾文件东东</title><link>http://www.blogjava.net/zhoudq/archive/2008/02/06/179401.html</link><dc:creator>心酸果冻</dc:creator><author>心酸果冻</author><pubDate>Wed, 06 Feb 2008 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/zhoudq/archive/2008/02/06/179401.html</guid><wfw:comment>http://www.blogjava.net/zhoudq/comments/179401.html</wfw:comment><comments>http://www.blogjava.net/zhoudq/archive/2008/02/06/179401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoudq/comments/commentRss/179401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoudq/services/trackbacks/179401.html</trackback:ping><description><![CDATA[一、新建一个temp.bat的文件。<br />
二、右键打开，把下面的代码复制进去。
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">@echo&nbsp;off&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/s/q&nbsp;%systemdrive%\*.tmp&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/s/q&nbsp;%systemdrive%\*._mp&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/s/q&nbsp;%systemdrive%\*.log&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/s/q&nbsp;%systemdrive%\*.gid&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/s/q&nbsp;%systemdrive%\*.chk&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/s/q&nbsp;%systemdrive%\*.old&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/s/q&nbsp;%windir%\*.bak&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/q&nbsp;%systemdrive%\recycled\*.*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/q&nbsp;%windir%\prefetch\*.*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />rd/s/q&nbsp;%windir%\temp&nbsp;&amp;&nbsp;md&nbsp;%windir%\tempemp%&nbsp;&amp;md&nbsp;%temp%&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/q&nbsp;%userprofile%\cookies\*.*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />del/f/q&nbsp;%userprofile%\recent\*.*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />rd/s/q&nbsp;\</span><span style="color: #000000">"</span><span style="color: #000000">%userprofile%\Local&nbsp;Settings\Temporary&nbsp;Internet&nbsp;Files\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />cls&nbsp;&amp;&nbsp;echo&nbsp;系统垃圾清除完成:)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />echo.&nbsp;&amp;&nbsp;pause<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<br />
三、保存，双击执行，OK.
 <img src ="http://www.blogjava.net/zhoudq/aggbug/179401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoudq/" target="_blank">心酸果冻</a> 2008-02-06 15:52 <a href="http://www.blogjava.net/zhoudq/archive/2008/02/06/179401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谁说程序员不幽默了？New Song: Java EE 5!(转)</title><link>http://www.blogjava.net/zhoudq/archive/2007/11/18/161332.html</link><dc:creator>心酸果冻</dc:creator><author>心酸果冻</author><pubDate>Sat, 17 Nov 2007 19:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhoudq/archive/2007/11/18/161332.html</guid><wfw:comment>http://www.blogjava.net/zhoudq/comments/161332.html</wfw:comment><comments>http://www.blogjava.net/zhoudq/archive/2007/11/18/161332.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoudq/comments/commentRss/161332.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoudq/services/trackbacks/161332.html</trackback:ping><description><![CDATA[<p>谁说程序员不幽默了？Roumen就发挥了一下，嘿，以下是他写的歌： Java EE 5!<br />
<a href="http://tap.javalobby.org/javaee5.mp3"><br />
new geeky song about Java EE 5 (hosted on Javalobby).</a> </p>
<p>It goes like this... </p>
<p>Ladies and gentlemen, this is Java EE 5! </p>
<p>One, two, three, four, five<br />
There's a technology I use day and night<br />
For my application with a web frontend<br />
They told me to use .Net<br />
But I really don&#180;t wanna</p>
<p>So many bugs I fixed last week.<br />
My code is neat and talk is a cheap<br />
I like Glassfish, JSF, persistence API<br />
And as I continue you know they&#180;re gettin&#180; sweeter</p>
<p>So what can I do I really beg you my Lord<br />
To me codin' it&#180;s just like a sport<br />
All the bad code from the past, let me dump it<br />
Please set in the trumpet</p>
<p>A little bit of injection in my life<br />
A little bit of persistence by my side<br />
A little bit of NetBeans is all I need<br />
A little bit of EJB's what I see<br />
A little bit of standards in the sun<br />
A little bit of XML all night long<br />
A little bit web services here I am<br />
A little bit of code makes me real man</p>
<p>This is Java EE 5! </p>
<p>Jump up and down and move your code around<br />
Shake your head to the sound bury bad code under ground<br />
Move one step left and one step right<br />
One to the front and one to the side<br />
Refactor it once and refactor it twice<br />
If it looks like this you're doin&#180; it right</p>
<p>A little bit of injection in my life<br />
A little bit of persistence by my side<br />
A little bit of NetBeans is all I need<br />
A little bit of EJB's is what I see<br />
A little bit of standards in the sun<br />
A little bit of XML all night long<br />
A little bit web services here I am<br />
A little bit of code makes me real man</p>
<p>This is Java EE 5! </p>
<p>Maybe I will grow up once. Maybe I won't... </p>
<p>作者：http://blogs.sun.com/roumen/entry/new_song_java_ee_5</p>
<img src ="http://www.blogjava.net/zhoudq/aggbug/161332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoudq/" target="_blank">心酸果冻</a> 2007-11-18 03:26 <a href="http://www.blogjava.net/zhoudq/archive/2007/11/18/161332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你还在用if else吗？(转)</title><link>http://www.blogjava.net/zhoudq/archive/2007/11/11/159780.html</link><dc:creator>心酸果冻</dc:creator><author>心酸果冻</author><pubDate>Sun, 11 Nov 2007 11:53:00 GMT</pubDate><guid>http://www.blogjava.net/zhoudq/archive/2007/11/11/159780.html</guid><wfw:comment>http://www.blogjava.net/zhoudq/comments/159780.html</wfw:comment><comments>http://www.blogjava.net/zhoudq/archive/2007/11/11/159780.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoudq/comments/commentRss/159780.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoudq/services/trackbacks/159780.html</trackback:ping><description><![CDATA[面向过程设计和面向对象设计的主要区别是：是否在业务逻辑层使用冗长的if&nbsp;else判断。如果你还在大量使用if&nbsp;else，当然，界面表现层除外，即使你使用Java/C#这样完全面向对象的语言，也只能说明你的思维停留在传统的面向过程语言上。<br />
<br />
传统思维习惯分析<br />
<br />
　　为什么会业务逻辑层使用if&nbsp;else，其实使用者的目的也是为了重用，但是这是面向过程编程的重用，程序员只看到代码重用，因为他看到if&nbsp;else几种情况下大部分代码都是重复的，只有个别不同，因此使用if&nbsp;else可以避免重复代码，并且认为这是模板Template模式。<br />
<br />
　　他范的错误是：程序员只从代码运行顺序这个方向来看待它的代码，这种思维类似水管或串行电路，水沿着水管流动（代码运行次序），当遇到几个分管（子管），就分到这几个分管子在流动，这里就相当于碰到代码的if&nbsp;else处了。<br />
<br />
　　而使用OO，则首先打破这个代码由上向下顺序等同于运行时的先后循序这个规律，代码结构不由执行循序决定，由什么决定呢？由OO设计；设计模式会取代这些if&nbsp;else，但是最后总是由一个Service等总类按照运行顺序组装这些OO模块，只有一处，这处可包含事务，一般就是Service，EJB中是Session&nbsp;bean。<br />
<br />
　　一旦需求变化，我们更多的可能是Service中各个OO模块，甚至是只改动Service中的OO模块执行顺序就能符合需求。<br />
<br />
　　这里我们也看到OO分离的思路，将以前过程语言的一个Main函数彻底分解，将运行顺序与代码其他逻辑分离开来，而不是象面向过程那样混乱在一起。所以有人感慨，OO也是要顺序的，这是肯定的，关键是运行顺序要单独分离出来。<br />
<br />
　　是否有if&nbsp;else可以看出你有没有将运行顺序分离到家。<br />
<br />
设计模式的切入口<br />
<br />
　　经常有人反映，设计模式是不错，但是我很难用到，其实如果你使用if&nbsp;else来写代码时（除显示控制以外），就是在写业务逻辑，只不过使用简单的判断语句来作为现实情况的替代者。<br />
<br />
　　&nbsp;还是以大家熟悉的论坛帖子为例子，如ForumMessage是一个模型，但是实际中帖子分两种性质：主题贴（第一个根贴）和回帖（回以前帖子的帖子），这里有一个朴素的解决方案：<br />
建立一个ForumMessage，然后在ForumMessage加入isTopic这样判断语句，注意，你这里一个简单属性的判断引入，可能导致你的程序其他地方到处存在if&nbsp;else&nbsp;的判断。<br />
<br />
　　如果我们改用另外一种分析实现思路，以对象化概念看待，实际中有主题贴和回帖，就是两种对象，但是这两种对象大部分是一致的，因此，我将ForumMessage设为表达主题贴；然后创建一个继承ForumMessage的子类ForumMessageReply作为回帖，这样，我在程序地方，如Service中，我已经确定这个Model是回帖了，我就直接下溯为ForumMessageReply即可，这个有点类似向Collection放入对象和取出时的强制类型转换。通过这个手段我消灭了以后程序中if&nbsp;else的判断语句出现可能。<br />
<br />
　　从这里体现了，如果分析方向错误，也会导致误用模式。<br />
<br />
　　讨论设计模式举例，不能没有业务上下文场景的案例，否则无法决定是否该用模式，下面举两个对比的例子：<br />
<br />
　　第一.&nbsp;这个帖子中举例的第一个代码案例是没有上下文的，文中只说明有一段代码：<br />
<br />
main()&nbsp;{&nbsp;<br />
if（case&nbsp;A）{&nbsp;<br />
<br />
//do&nbsp;with&nbsp;strategy&nbsp;A&nbsp;<br />
<br />
}else(case&nbsp;B){<br />
<br />
//do&nbsp;with&nbsp;strategy&nbsp;B&nbsp;<br />
<br />
}else(case&nbsp;C){&nbsp;<br />
<br />
//do&nbsp;with&nbsp;strategy&nbsp;C&nbsp;<br />
<br />
}<br />
<br />
}&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
<br />
　　这段代码只是纯粹的代码，没有业务功能，所以，在这种情况下，我们就很难确定使用什么模式，就是一定用策略模式等，也逃不过还是使用if&nbsp;else的命运，设计模式不是魔法，不能将一段毫无意义的代码变得简单了，只能将其体现的业务功能更加容易可拓展了。<br />
<br />
　　第二.在这个帖子中，作者举了一个PacketParser业务案例，这段代码是体现业务功能的，是一个数据包的分析，作者也比较了各种模式使用的不同，所以我们还是使用动态代理模式或Command模式来消灭那些可能存在的if&nbsp;else<br />
<br />
　　由以上两个案例表明：业务逻辑是我们使用设计模式的切入点，而在分解业务逻辑时，我们习惯则可能使用if&nbsp;else来实现，当你有这种企图或者已经实现代码了，那么就应该考虑是否需要重构Refactoring了。<br />
<br />
<br />
if&nbsp;else替代者<br />
<br />
　　那么实战中，哪些设计模式可以替代if&nbsp;else呢？其实GoF设计模式都可以用来替代if&nbsp;else，我们分别描述如下：<br />
<br />
状态模式　<br />
　　当数据对象存在各种可能性的状态，而且这种状态将会影响到不同业务结果时，那么我们就应该考虑是否使用状态模式，当然，使用状态模式之前，你必须首先有内存状态这个概念，而不是数据库概念，因为在传统的面向过程的/面向数据库的系统中，你很难发现状态的，从数据库中读取某个值，然后根据这个值进行代码运行分流，这是很多初学者常干的事情。参考文章:状态对象：数据库的替代者<br />
　　使用传统语言思维的情况还有：使用一个类整数变量标识状态：<br />
&nbsp;<br />
<br />
public&nbsp;class&nbsp;Order{<br />
<br />
private&nbsp;int&nbsp;status;<br />
<br />
//说明：&nbsp;<br />
<br />
//status=1&nbsp;表示订货但为查看&nbsp;；<br />
<br />
//status=2&nbsp;表示已经查看未处理；<br />
<br />
//status=3&nbsp;表示已经处理未付款<br />
<br />
//status=4&nbsp;表示已经付款未发货<br />
<br />
//status=5&nbsp;表示已经发货<br />
<br />
}&nbsp;<br />
&nbsp;<br />
<br />
　　上述类设计，无疑是将类作为传统语言的函数来使用，这样导致程序代码中存在大量的if&nbsp;else。<br />
<br />
<br />
策略模式　<br />
　　当你面临几种算法或者公式选择时，可以考虑策略模式，传统过程语言情况是：从数据库中读取算法数值，数值1表示策略1，例如保存到数据库；数值为2表示策略2，例如保存到XMl文件中。这里使用if&nbsp;else作为策略选择的开关。&nbsp;<br />
<br />
<br />
command模式　<br />
　　传统过程的思维情况是：如果客户端发出代号是1或"A"，那么我调用A.java这个对象来处理；如果代号是2或"B"，我就调用B.java来处理，通过if&nbsp;else来判断客户端发送过来的代码，然后按事先约定的对应表，调用相应的类来处理。<br />
<br />
<br />
MVC模式　<br />
　　MVC模式的传统语言误用和Command模式类似，在一个Action类中，使用if&nbsp;else进行前后台调度，如果客户端传送什么命令；我就调用后台什么结果；如果后台处理什么结构，再决定推什么页面，不过，现在我们使用Struts/JSF这样MVC模式的框架实现者就不必范这种低级错误。<br />
<br />
<br />
职责链模式　<br />
　　职责链模式和Command模式是可选的，如果你实在不知道客户端会发出什么代号；也没有一个事先定义好的对照表，那么你只能编写一个个类去碰运气一样打开这个包看一下就可以。与Command是不同在AOP&nbsp;vs&nbsp;Decorator一文中有分析。<br />
<br />
<br />
代理或动态代理模式　<br />
　　代理对象可以是符合某种条件的代表者，比如，权限检验，传统面向过程思维是：当一个用户登陆后，访问某资源时，使用if&nbsp;else进行判断，只有某种条件符合时，才能允许访问，这样权限判断和业务数据逻辑混乱在一起，使用代理模式可以清晰分离，如果嫌不太好，使用动态代理，或者下面AOP等方式。<br />
<br />
<br />
AOP或Decorator模式<br />
　　<br />
　　其实使用filter过滤器也可以替代我们业务中的if&nbsp;else，过滤器起到一种过滤和筛选作用，将符合本过滤器条件的对象拦截下来做某件事情，这就是一个过滤器的功能，多个过滤器组合在一起实际就是if&nbsp;else的组合。<br />
　　所以，如果你实在想不出什么办法，可以使用过滤器，将过滤器看成防火墙就比较好理解，当客户端有一个请求时，经过不同性质的防火墙，这个防火墙是拦截端口的；那个防火墙是安全检查拦截等等。过滤器也如同红蓝白各种光滤镜；红色滤镜只能将通过光线中的红色拦截了；蓝色滤镜将光线中的蓝色拦截下来，这实际上是对光线使用if&nbsp;else进行分解。<br />
<br />
<br />
　　如图，通过一个个条件过滤器我们立体地实现了对信号的分离，如果你使用if&nbsp;else，说明你是将图中的条件1/2/3/4合并在一起，在同一个地方实现条件判断。<br />
　　需要深入了解过滤器的实现细节和微小区别，请参考文章：AOP&nbsp;vs&nbsp;Decorator<br />
<br />
OO设计的总结　　&nbsp;<br />
<br />
　　还有一种伪模式，虽然使用了状态等模式，但是在模式内部实质还是使用if&nbsp;else或switch进行状态切换或重要条件判断，那么无疑说明还需要进一步努力。更重要的是，不能以模式自居，而且出书示人。<br />
<br />
　　真正掌握面向对象这些思想是一件困难的事情，目前有各种属于揪着自己头发向上拔的解说，都是误人子弟的，所以我觉得初学者读Thinking&nbsp;in&nbsp;Java（Java编程思想）是没有用，它试图从语言层次来讲OO编程思想，非常失败，作为语言参考书可以，但是作为Java体现的OO思想的学习资料，就错了。<br />
<br />
　　OO编程思想是一种方****，方****如果没有应用比较，是无法体会这个方****的特点的，禅是古代一个方****，悟禅是靠挑水砍柴这些应用才能体会。<br />
<br />
　　那么OO思想靠什么应用能够体会到了？是GoF设计模式，GoF设计模式是等于软件人员的挑水砍柴等基本活，所以，如果一个程序员连基本活都不会，他何以自居OO程序员？从事OO专业设计编程这个工作，如果不掌握设计模式基本功，就象一个做和尚的人不愿意挑水砍柴，他何以立足这个行业？早就被师傅赶下山。<br />
<br />
　　最后总结：将if&nbsp;else用在小地方还可以，如简单的数值判断；但是如果按照你的传统习惯思维，在实现业务功能时也使用if&nbsp;else，那么说明你的思维可能需要重塑，你的编程经验越丰富，传统过程思维模式就容易根深蒂固，想靠自己改变很困难；建议接受专业头脑风暴培训。<br />
<br />
　　用一句话总结：如果你做了不少系统，很久没有使用if&nbsp;else了，那么说明你可能真正进入OO设计的境地了。（这是本人自己发明的实战性的衡量考核标准）。
  <img src ="http://www.blogjava.net/zhoudq/aggbug/159780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoudq/" target="_blank">心酸果冻</a> 2007-11-11 19:53 <a href="http://www.blogjava.net/zhoudq/archive/2007/11/11/159780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fedora 7系统安装配置心得(转)(有图哦)</title><link>http://www.blogjava.net/zhoudq/archive/2007/10/23/155369.html</link><dc:creator>心酸果冻</dc:creator><author>心酸果冻</author><pubDate>Tue, 23 Oct 2007 10:18:00 GMT</pubDate><guid>http://www.blogjava.net/zhoudq/archive/2007/10/23/155369.html</guid><wfw:comment>http://www.blogjava.net/zhoudq/comments/155369.html</wfw:comment><comments>http://www.blogjava.net/zhoudq/archive/2007/10/23/155369.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoudq/comments/commentRss/155369.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoudq/services/trackbacks/155369.html</trackback:ping><description><![CDATA[<div class="item-content">
<p>计算机基本配置如下:<br />
CPU:Intel Core 2 Duo E4300<br />
显卡:NVidia GeForce 7600GS<br />
主板:ABit IB9(P965+ICH8)<br />
内存2G/硬盘160G<br />
安装时选择用户定制，加上开发环境，以防止编译时找不到相关的模块.<br />
系统内核为默认的2.6.21－1.3194.fc7.<br />
以下配置基于Gnome环境.<br />
<br />
来个图爽爽,嘿嘿:<br />
<img height="800" alt="" src="http://www.blogjava.net/images/blogjava_net/zhoudq/Fedora.jpg" width="1280" border="0" /><br />
</p>
<p><br />
一:准备工作</p>
<p>在桌面空白处右击,选择"创建启动器","名称"处填写"终端","命令"为gnome-terminal,选个自己喜欢的图标<br />
两个重要的yum源:<br />
rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/7/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm<br />
rpm -ivh http://rpm.livna.org/livna-release-7.rpm<br />
为了在一定程度上加快yum速度:<br />
yum install yum-fastestmirror yum-presto<br />
安装方便管理的图形配置界面:<br />
yum install yumex<br />
挂载系统的NTFS分区:<br />
编辑/etc/fstab,内容如下:<br />
LABEL=/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext3&nbsp;&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 1<br />
tmpfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /dev/shm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpfs&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0<br />
devpts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /dev/pts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; devpts&nbsp; gid=5,mode=620&nbsp; 0 0<br />
sysfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysfs&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0<br />
proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proc&nbsp;&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0<br />
dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /mnt/C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ntfs&nbsp;&nbsp;&nbsp; umask=000,nls=utf8, 0 0<br />
dev/sda7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /mnt/F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ntfs&nbsp;&nbsp;&nbsp; umask=000,nls=utf8, 0 0<br />
dev/sda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /mnt/G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ntfs&nbsp;&nbsp;&nbsp; umask=000,nls=utf8, 0 0<br />
dev/sda9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /mnt/H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ntfs&nbsp;&nbsp;&nbsp; umask=000,nls=utf8, 0 0<br />
把C:/WINDOWS/Fonts目录中的字体文件拷贝到/usr/share/fonts<br />
在终端下输入fc-cache -fv重新启动完成字体的配置.</p>
<p>二:显卡驱动</p>
<p>官方驱动下载页面:<a href="http://www.nvidia.com/object/linux_display_ia32_100.14.11.html"><font color="#ae0405" size="2">http://www.nvidia.com/object/linux_display_ia32_100.14.11.html</font></a><br />
下载得来的驱动文件为NVIDIA-Linux-x86-100.14.11-pkg1.run<br />
安装方法如下:<br />
在运行到登录会话时按Ctrl+Alt+F2<br />
以root身份登录,输入 init 3<br />
然后进入驱动文件所在目录,<br />
sh NVIDIA-Linux-x86-100.14.11-pkg1.run<br />
根据提示一步步操作,完成后输入 init 5进入X<br />
关掉烦人的Nvidia logo:<br />
在shell下输入nvidia-xconfig --no-logo即可</p>
<p>编辑/etc/X11/xorg.conf，加入以下字段<br />
Section "Module"<br />
&nbsp;&nbsp; Load&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "glx"<br />
&nbsp;&nbsp; Load&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "extmod"<br />
EndSection<br />
此步目的为防止MPlayer报错.</p>
<p>三:多媒体播放<br />
<br />
到<a href="http://www.mplayerhq.hu/design7/dload.html"><font color="#ae0405" size="2">http://www.mplayerhq.hu/design7/dload.html</font></a>下载MPlayer源码,字体,皮肤及解码包<br />
编译命令为:<br />
./configure --prefix=/usr/local/mplayer/ --enable-gui --enable-freetype --with-codecsdir=/usr/lib/codes/ --with-win32libdir=/usr/lib/wincodes/ --language=zh_CN<br />
make&amp;&amp;make install<br />
或者直接<br />
yum install mplayer*<br />
<br />
XMMS安装方法同理，官方网站为<a href="http://www.xmms.org/"><font color="#ae0405" size="2">www.xmms.org</font></a><br />
默认情况下乱码问题比较严重,美化方法为:<br />
首选项--&gt;字体：选中'使用字体集'，'使用X字体'，两个框内用下行内容代替<br />
-adobe-helvetica-medium-r-normal-*-14-*-*-*-p-*-iso8859-1,-*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0<br />
在标题格式里只填上 %f 即只选择显示文件的名称.</p>
<p>在<a href="ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/"><font color="#ae0405" size="2">ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/</font></a>目录下载如下文件:<br />
sp-sc-1.0.2-1.fc7.fcn.y0.i386.rpm<br />
gsopcast-0.2.9-1.fc7.fcn.y0.i386.rpm<br />
直接双击安装,这样网络电视便安装完毕.</p>
<p>四:QQ MSN </p>
<p>QQ建议选择Eva,下载地址:<a href="ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/"><font color="#ae0405" size="2">ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/</font></a><br />
rpm -ivh eva-0.4.9-0.20070723.fc7.fcn.y5.i386.rpm<br />
pidgin的样子实在是太土了，而且某些特定类的QQ号都上不去.</p>
<p>一个比较难找的pidgin依赖的XML解析器的安装方法:<br />
在<a href="http://search.cpan.org/"><font color="#ae0405" size="2">http://search.cpan.org/</font></a>搜索中输入XML::Parser<br />
返回结果中下载XML-Parser-2.34.tar.gz,解压后输入 perl Makefile.PL<br />
make&amp;&amp;make install </p>
<p>pidgin的官方下载站点为:<a href="http://www.pidgin.im/download/source/"><font color="#ae0405" size="2">http://www.pidgin.im/download/source/</font></a><br />
下载pidgin-2.1.0.tar.bz2,解压缩后在终端输入<br />
./configure --prefix=/usr/local<br />
make&amp;&amp;make install<br />
若用yum的方法安装完会报错,和其他的库有冲突,无法使用.<br />
<br />
MSN推荐aMSN,官方站点为<a href="http://www.amsn-project.net/index.php"><font color="#ae0405" size="2">http://www.amsn-project.net/index.php</font></a><br />
下载源码编译的方法太烦琐,所以直接yum install amsn*<br />
<br />
五:其他<br />
<br />
到<a href="http://java.sun.com/javaee/downloads/index.jsp"><font color="#ae0405" size="2">http://java.sun.com/javaee/downloads/index.jsp</font></a>下载JavaEE 5 SDK,<br />
安装方法:sh java_ee_sdk-5_02-linux.bin<br />
安装路径选择/opt/sun<br />
然后在/etc/profile.d下新建一空白文件,<br />
内容如下:<br />
export JAVA_HOME=/opt/Sun/jdk<br />
export PATH=$JAVA_HOME/bin:$PATH<br />
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar<br />
另存为java.sh</p>
<p>PDF阅读器选择AdobeReader,官方下载地址为:<br />
<a href="http://www.adobe.com/products/acrobat/readstep2_allversions.html"><font color="#ae0405" size="2">http://www.adobe.com/products/acrobat/readstep2_allversions.html</font></a><br />
选择Unix/Linux--&gt;Linux(.rpm)--&gt;Chinese(Simplified)<br />
也可在<a href="ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/"><font color="#ae0405" size="2">ftp://ftp.fedora.cn/pub/fedora-cn/linux/7/i386/</font></a>下载.<br />
由于该版本存在一些BUG，所以安装完毕后需要作如下修改:<br />
用Emacs编辑器打开/usr/local/Adobe/Acrobat/bin目录下的acroread，<br />
将822行改为:MIN_GTK_VERSION="2040"<br />
597行改为:echo $mfile| sed 's/libgtk-x11-/([0-9]*/).0.so.0./([0-9]/)00*./([0-9]*/)/|/(.*/)//1/2/3/g'<br />
保存修改即可.</p>
<p>google-desktop是款很不错的实用工具,官方站点:<br />
<a href="http://desktop.google.com/zh/linux/download.html"><font color="#ae0405" size="2">http://desktop.google.com/zh/linux/download.html</font></a><br />
rpm -ivh google-desktop-linux-1.0.2.0061.rpm或直接双击.</p>
<p>去<a href="http://www.gnome-look.org/"><font color="#ae0405" size="2">http://www.gnome-look.org/</font></a>找几个喜欢的主题,<br />
GDM/GTK 2.X的主题包格式要求为tar.gz,其他格式的居然无法识别<br />
在 系统--&gt;首选项--&gt;观感--&gt;主题 安装GTK 2.X主题<br />
在 系统--&gt;管理--&gt;登录屏幕--&gt;本地 安装GDM主题<br />
XMMS Themes无格式要求,下载后可直接放在/usr/share/xmms/skins</p>
<p>cedega的下载安装详见:<a href="http://linuxdesktop.cn/2007/05/16/cedega6-download"><font color="#ae0405" size="2">http://linuxdesktop.cn/2007/05/16/cedega6-download</font></a><br />
crossover的下载地址为:<a href="http://www.mediafire.com/?3dozmxylnjf"><font color="#ae0405" size="2">http://www.mediafire.com/?3dozmxylnjf</font></a><br />
下载的文件大小为85.23MB,其实只用到其中的crossover-pro-6.0.0-1.i386.rpm<br />
具体使用方法见<a href="http://www.codeweavers.com/support/docs/crossover-pro/"><font color="#ae0405" size="2">http://www.codeweavers.com/support/docs/crossover-pro/</font></a><br />
页面下的CrossOver Linux Professional Users Guide</p>
<p>六:桌面特效</p>
<p>compiz fusion官方下载站点为<a href="http://releases.compiz-fusion.org/"><font color="#ae0405" size="2">http://releases.compiz-fusion.org/</font></a><br />
不过提供的下载文件都是源码包，由于文件众多，一个个地编译显然有点烦,<br />
故国外有人做成了rpm包,详见:<br />
<a href="http://fedoraforum.org/forum/showthread.php?t=159056&amp;page=1&amp;pp=15"><font color="#ae0405" size="2">http://fedoraforum.org/forum/showthread.php?t=159056&amp;page=1&amp;pp=15</font></a><br />
可到<a href="http://devel.foss.org.my/~kagesenshi/repo/pub/"><font color="#ae0405" size="2">http://devel.foss.org.my/~kagesenshi/repo/pub/</font></a>下载kagesenshi.repo，<br />
将该文件放在/etc/yum.repos.d路径下.<br />
<br />
yum install compiz*<br />
完成对Compiz的安装更新.<br />
然后在 系统--&gt;首选项--&gt;个人--&gt;会话 中的"启动程序"处点击"新建"<br />
"名称"写 Compiz Fusion<br />
"命令"写 /usr/bin/fusion-icon<br />
这样每次登录后就会自动启动Compiz特效了.<br />
<br />
在Compiz Fusion Icon处右击,弹出菜单中<br />
Select Window Decorator选择 Emerald<br />
Compiz Options勾选 loose binding<br />
Select Window Manager选择 compiz<br />
然后在Settings Manager中勾选自己喜欢的效果.</p>
<p>最新的Compiz Fusion效果视频展示见<a href="http://you.video.sina.com.cn/b/6110125-1298710774.html"><font color="#ae0405" size="2">http://you.video.sina.com.cn/b/6110125-1298710774.html</font></a><br />
</p>
</div>
   <img src ="http://www.blogjava.net/zhoudq/aggbug/155369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoudq/" target="_blank">心酸果冻</a> 2007-10-23 18:18 <a href="http://www.blogjava.net/zhoudq/archive/2007/10/23/155369.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面试题一道,看看你是否会?</title><link>http://www.blogjava.net/zhoudq/archive/2007/10/23/155363.html</link><dc:creator>心酸果冻</dc:creator><author>心酸果冻</author><pubDate>Tue, 23 Oct 2007 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhoudq/archive/2007/10/23/155363.html</guid><wfw:comment>http://www.blogjava.net/zhoudq/comments/155363.html</wfw:comment><comments>http://www.blogjava.net/zhoudq/archive/2007/10/23/155363.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoudq/comments/commentRss/155363.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoudq/services/trackbacks/155363.html</trackback:ping><description><![CDATA[<font style="font-size: medium; line-height: 1.3em">每5分钟遍历一下页面(</font><wbr><a href="http://post.baidu.com/f?kw=%D2%EC%C8%CB%B0%C1%CA%C0%C2%BC" target="_blank"><font style="font-size: medium; line-height: 1.3em">http://post.baidu.com/f?kw=%D2%EC%C8%CB%B0%C1%CA%C0%C2%BC</font><wbr></a><wbr><font style="font-size: medium; line-height: 1.3em">),&nbsp;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">请统计页面中"《"和"》"之间有多少个"异人"这两个字,将这数值弹出一个alert并且发信给指定的邮件地址&nbsp;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">获取页面内所有地方的以"&lt;&lt;&nbsp;&gt;&gt;"为标示的这个符号代表书名号,获取之中的内容&nbsp;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">&lt;&lt;使用正则表达式&gt;&gt;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">功能点:&nbsp;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">1)URL抓取页面&nbsp;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">2)正则表达式匹配&nbsp;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">3)邮件系统调用&nbsp;</font><wbr><br />
<font style="font-size: medium; line-height: 1.3em">请注意设计思路和代码规范&nbsp;<br />
<br />
<br />
<br />
<br />
注:本人博客刚开,请大家不胜指教.</font><wbr>
  <img src ="http://www.blogjava.net/zhoudq/aggbug/155363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoudq/" target="_blank">心酸果冻</a> 2007-10-23 18:01 <a href="http://www.blogjava.net/zhoudq/archive/2007/10/23/155363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>