2006年02月09日
工具使用

1. 在线拼音输入法

这是一个基于汉语拼音的中文字、词及短语的在线输入法,对于某些没有中文输入法的系统,可以使用这个在线程序来输入中文。
Online Chinese Input Method Editor (IME)

2. 在线Dict.CN机器人

您向MSN机器人询问中英文单词或句子,机器人会实时翻译。另外还有个性化新闻订阅等。
Online MSN Robot …

3. QQ迷你门户

如果您是一位QQ的忠实用户,您可以把Dict.CN在线词典直接添加到你的QQ/TM的面板上,随时随地关注我们的服务。
Dict.CN QQ Mini-Portal   迷你门户使用帮助

4. 浏览器工具

请收藏以下连接到你的浏览器收藏夹Links目录,或直接拖到你的浏览器工具条中。
(查询结果使用图片显示将使速度变慢。只适合在不支持中文的机器上选用。)

IE for Windows Netscape 6+
Mozilla
Explanation
Dict Dict Full Result Page.
Dict Dict Full Result Page display output as image.
Dict Dict Simple Result Page. (simple is simply the best.)
Dict Dict Simple Result Page display output as image.

使用方法:
先在网页中用鼠标选中要查询的单词,然后点击收藏在工具条上的"Dict"链接。
浏览器会查询该单词并跳转到本词典查询结果页。
注意:如果原网页上有javascript错误时点击该链接将不工作,遇到这种情况你就手动打本网站的地址吧。

其它所有浏览器请收藏这个链接: Dict.
(仅为普通链接,没有鼠标选中单词后能点击查询的功能。)

5. 非常好用的鼠标右键单词查询

在IE的鼠标右键菜单中增加一个Dict.CN Definition的选项。以后你只要选中单词,然后点鼠标右键选择Dict.CN Definition选项就可以直接打开对这个单词的定义。
dict.zip 下载后里面是一个注册表文件dict.reg,双击导入注册表。
remove.zip 下载后里面是一个注册表文件remove.reg,双击将删除本功能。
感谢Codedown提供建议。原创主意来自dictlookup



6. Dict.CN 划词翻译

在浏览Dict.CN论坛的帖子时,如果您双击或者用鼠标拖动选择一个单词,立即就会出现一个如下的浮动层,显示单词的意思。这就是Dict.CN为您提供的“划词翻译”功能。如果您是网站站长,您也可以轻松拥有同样强大的词典(功能资源)。



如果您是英语学习论坛网站,可以申请成为Dict.CN划词推荐论坛。您不仅能获得更多定制效果,还能获得Dict.CN词典论坛的首页推荐。
如何在您的网站上增加划词翻译功能:
任何网站只要将以下代码放入您的网页就可以为您的站点添加即划即查的词典功能
<script src="http://dict.cn/hc/" type="text/javascript"></script>
<script type="text/javascript">
dictInit();
</script>
用户取词状态开关:
如果您希望在网页上显示一个用户取词状态开关,则在适当位置放入以下代码:
<span id="dict_status"></span>
效果如下:
* 如果要默认取词为关闭,只有在点击开启后才打开,可在dictInit();之前增加代码:dict_enable=false;



7. Web API接口

为了将Dict.CN的专业词典服务推广到更多的应用领域,我们在此开放Web API的接口。如果您开发了非常实用的插件程序或者漂亮客户端,并希望与其它用户共享,请联系我们,我们将向Dict.CN的用户推荐。

a. HTML
使用web brower控件开发windows服务程序,每个单词可以调用网页http://dict.cn/mini.php?q=word并显示,这里的word是要查询的单词。

b. XML
返回最简单的解释,发音,并提供最简单的拼写纠错功能。每个单词可以调用API:http://dict.cn/ws.php?q=word来获得解释,这里的word是要查询的单词。
返回结果有四种元素:
<pron>: 发音
<def>: 解释内容
<rel>: 相关词条
<sugg>: 纠错候选词(需要使用方括号查询,如http://dict.cn/ws.php?q=[word]
如果查询没有结果,返回<def>Not Found</def>
更多意见和建议,请到词典论坛客户端版面讨论。


8. 在您的主页上提供在线词典服务

将以下代码插入到您的网页中: 预览效果:

<form method="post" target="_blank"
action="http://dict.cn/search/">
<input maxlength=256 size=21 name=q><br>
<a href="http://dict.cn" target="_blank">在线词典</a>
<input type="submit" value="Look Up">
</form>


在线词典

如果需要定制显示效果,可以使用更多的参数。

一些高级使用的帮助:

查询主程序位于:Http://dict.cn/search/

参数可以有:

q=string 待查询的词。
example: http://dict.cn/search/?q=string

simple=1 简单页面显示结果。
example: http://dict.cn/en/search/?q=string&simple=1

image=1 中文解释用图片显示。
example: http://dict.cn/en/search/?q=string&image=1


定制效果时希望您能尽量保留在线词典的链接。如想交换链接请点这里

2006年01月19日

http://dzh.mop.com/topic/readSub_6341441_0_0.html
我一直都上POP的!我花两夜写成的原闯文章被管理员不知道什么理由连ID都封杀了

原因什么?我也不知道!我文章里没有任何黄段子 没有任何反叛的 就是教大家如何鉴别处女

POP我今后不会上了!我敢保证有这样的管理员POP必亡

由于写的时候没有备份 好不容易在临时文件夹里才找到!

看完要是觉得不对,板砖尽管砸,爷们不怕疼,要是觉得有些道理,就给咱 顶起。

看了“一篇炮轰非处女的狂文(想想也有点道理)” 的文章,有些感慨。其中有些很对,和我以前发表的一篇文章有

些相似,但更多的是作者本人自己的想法,有些我并不是很赞同的 。作者只是从人性的比较阴暗的地方寻找答案,忽

略了人性的真实的需要和感受。我来作个补充。不对的地方大家可以指出,不过我相信我还是有点发言权的。

现在把我所想到的,所知道的,所感悟到的 全部都教给你们那些想寻找处女,追求珍爱的,有着中国传统观念的带着

一点大男子主义的爷们,让你能在这个虚假迷失本性的花花世界找到那片属于你一个人的净土,而不被那些过早的奉献

给别人的无耻女孩的一些雕虫小技所蒙混,傻乎乎的守着那片被玷污过的田地,还时不时被其当傻子骗,当猴的耍,那

些女人应该为她们以前的放荡或者无知,或者被骗付出应该的代价,这个代价就是 —— 你丫TMD 一旦被被人玩过了,

不要给我讲是什么理由,你要是好自为之,知道自己的过错,就别跟我讲什么条件,说什么不公平,你 对我好,我就对

你好些,因为我爱你,如果你还那样想得寸进尺,想要个处女老婆的地位,就别怪我收拾你。大家别急,先看个故事吧。


对你们也许有所启发。


从前,很久以前的往事:

首先我先讲一下我自己: 我是 1975 年出生在宁夏银川这个相对来讲比较保守的省会城市,我上高中的时候喜欢并暗恋

一个集美貌与智慧于一身的女孩,也是我的同学,那时也没什么 特别的感觉,就是特别喜欢她,可是她太优秀了,优秀

的让我都无法平视她,成绩除了 数学,物理没我好,其他都比我强很多,每次考试她不是 第一就是第二,我呢总在个3、

4 、5上排队,我是个贪玩学习懒惰的人,成绩嘛说的过去,家里条件还算可以,她也知道我喜欢她,而且她也很喜欢我,

她过5月3日生日的那天,她把她爸妈赶了出去,她父母特别宠她,而且她家的条件很好,我俩就在她家里做饭,看电视,

讲故事,讲上大学的打算,一直到晚上11 点多,说来你们也许不信,和她待了有 10 个小时,我连她的手都没有碰过,

胆子真小哦,不过,我生理上是绝对正常滴,而且还是个男人中滴男人哦,当时冲动有,胆子却没有,不知道是不是该后

悔,那时还想着好好准备高考,以后和她结婚,到时候我们在做这些事,哈哈。现在真的怀念那些时候,我和她一直都是

朋友的关系,绝对没有一点点出格的事情,而且我和她以后也会一直这样的,这是后话。如果是现在这个年代的话,我想

恐怕都不知道 到 几了。哎,真不知道是对还是错,不过我只知道,男人在这件事情上永远都比女人受的伤轻,女孩子的

裙子越容易被掀起,裤带越容易被解开,要么你去做鸡要么你有点 B本事,做个女强人象武则天的那种,要不你去找个武

大郎,他可能不在乎你的过去,但他还会在乎你们的未来滴,不然西门庆也不会摔伤的,哈哈。否则的话你的以后的老公

难找的很,中国的国情就是这样,每个男人都把自己的女人看的很紧,恨不能给她做个铁内裤,再加把锁,还只有一把钥

匙,除非这个女人不是她老婆,只是玩玩而已,告诫那些想做还没做的女孩子,别把这种事当作很随意的事,有些事情好

玩,但玩不起,要付出很高代价滴。晕,扯远了,继续讲我的故事。我是一个有点内向的男人,而且带了点大男子主义,

我深信一个男人如果不比自己的老婆强的话,那样一辈子都很难受,所以我并不后悔我当时的行为,男人就要做个负责的

男人,那种责任我肩膀小担负不起。她后来考上了中央财经大学,然后考研,去了对外经贸大学,再后来出国,再后来就

不知道了。而我考上了她们学校附近的一所重点大学,学校虽然很美,MD ,却学了个垃圾专业,倒透了霉。在大学里知道

如果不能跟 女朋友毕业分配到一起,浪费了自己的感情不说,以后的女朋友怎么去找 LG 啊,也就没那个心了,而且学

校里的老乡,恐龙居多,咳,做人啊,真不知道怎样做才好,不过妈妈从小就教育我,做人要本分。如果上天给我个重来

的机会,我觉得我 100% 去找我的暗恋,决不能 让她从我的手边溜走,好的东西一旦错过,就不会再有了,要把握哦,但

是我们仍然不会过早的 偷吃禁果的。我想领结婚证的哪天才是我 占领那神秘土地的时刻。


四年前的往事:

很久以前的事情讲完了,讲讲四年前的我吧。我比起 写“一篇炮轰非处女的狂文(想想也有点道理)”的老弟,没你那

么多钱,就是自己在家乡开了个小小的公司,给老婆买车子嘛,买不起, 正准备给自己买个车的,和老婆前年结的婚,当

时老婆 21 ,长的还算过的去,比那个全什么贤的,身材差点,比哪个李什么欣的,皮肤差点,比那个朱什么茵的,美丽

差点,比那个梁什么琦的,乖巧差点,比那个林什么玲的,哦,好象没什么能比的上,就是对我很温柔。 MD ,俗话说,家

丑不可外扬,现在我就说说家丑吧。说来丢人啊,老婆跟我之前,稀哩糊涂的跟过一个男人,被他哄了哄,骗了骗,下了点

药就迷迷忽忽的,就让他给上了,不过也就一次吧。。。这是我大学毕业 工作了 2年后的事情了。我在这之前一直没有找过

女朋友,后来我遇到了她,她是一个让我心动的女人,也不是很漂亮,她当时也就 18岁吧。大学没考上,心情不好,网上谈

了个朋友,他请她出去玩,吃了几次饭,后来让骗到他的家,就。。。。。。我在我新开张的公司遇到她的时候,她很忧郁,

那种美让我心动,我有一种想安慰她想帮助她的想法。也可以说这是我的初恋,以前的只能说是我的暗恋,我也不知道她身上

有什么魔力,让我一下子就被俘虏了,MD ,爱情这种东西,说不成,缘分更是这样,千里姻缘一线牵。以前家里人介绍了 几

打女人,没一个我能看上的,其中也不乏很漂亮的女孩子,只能说没有缘分啊。我和她谈了有将近 8 个月的时候,还没有做过

那种事情,好慢哦,有点丢脸了,那时我家里人和她家里人都见过面,而且也同意我们结婚了,就在那个晚上就把她带到我们

的新房,然后。。。。。 我是个很敏感的人,我做那事的时候就隐约感觉到了有什么不对,她的衣服很难脱,连哄带骗,说看

看,后来动了点力气,就 解除了身上的武装,我满头的汗,好累,力气活啊,从小还没这么累过,然后就搂着睡觉,等她睡着

了,就。。。。完事后,发现好象和书上说的不一样,跟那些以前我上班单位的同事讲的也不一样,她应该会把床单弄脏的啊,

我事先准备了一块十分洁白的白毛巾滴,我十分纳闷,我以前想过的,与其找个上过大学的女孩子,还不如找个象老婆这样的

小女孩子,这样会保险些,她应该是个处女啊。狂怒中,我大喝一声,把她一把就从床上掀起,她其实一直都醒着,她不敢面

对我,而且当时很怕我,我没照镜子,估计当时我的样子的确很KB,她就哭着 一五一十的讲了过去的经过,我听完,我哭了。

TMD ,我好委屈啊,我等了这么久,等到了27岁,居然等到了个破鞋,以前我妈给我介绍了很多,那些都是 70 年代的女孩子,

个个文静斯文,她们的口碑都很好,几乎都没有 找男朋友的历史,我真是…….悔不该……….

然后我穿了衣服,就往外走,她死死的把我的腿抱住,从卧室一直拖到了到客厅,头在门上重重的撞了一下,她当时不知道痛,

我看了有点心疼,毕竟是我一直爱的女人啊。男人的心都是很脆弱的,至少我是,我最怕女人哭了。和她经过一夜无话的对视,

到天亮了,我撂了一句话,我们分手吧,床上放了 500元钱,我就出去了。


经过了 半个月的调整,人每天都浑浑噩噩的,心上的伤口却一直不肯好,我有点想她了,我去了新房看了一下,钱在 桌上,

房里收拾的很整齐,电视柜上有张纸,上面写的她的留言,说她同意分手,这样她的心就会好过了,她和我交往以来,一直都

生活在担心受怕中,每天都睡不好觉,担心我知道她的过去,现在她总算解脱了,她祝福我能找到满意的女人,她最后悔的事

就是她以前的事情,她说她能理解我的想法。看完,我心里很不是滋味,而更多的是对她的牵挂,不知道她现在在干吗?努力

回忆我删掉的她的电话,手机停机,就打了个电话,家里没有人接,我决定去她家里看一下,在熟悉的楼下等了快 1个小时,

她妈回来了,一看到我,就问我是不是闹矛盾了,我只能说没有,她妈知道问了我我也不会说的,就没再问,就说她在楼上啊,

问我怎么不敲门,我说电话没人接,她妈就带我上楼了。敲了半天她卧室的门,她才睡眼惺忪的很虚弱无神的开了门,我看到

了她的左手上包着纱布,看的我心疼啊。我知道她也是 心里难受,故意作践自己的,用刀片划的。我的心一下就酸了,眼眶

就有点湿润了,男人不能老流眼泪啊,没办法,有点控制不了。待了一个多小时,说了一小会话,我给她说,我明天还来看她,

给她打电话。她没有说话,也没有任何表情。在外面我跟她妈说了一会,她妈说她不吃不喝已经 快4 天了,每天就在自己

的手上划一刀,总共有 15刀了,她妈是护士,每天给她包伤,问她,她什么也不说,想给我打电话,她就以死相逼,没办法,

不知道我们发生什么事情了,我能说什么呢?救人要紧啊,千万别出个什么意外啊,不然我会后悔一辈子的。第二天,我把公司

的事情交待了,买了点东西,就来到她家,直接上楼,也没打电话,她开的门,精神好象好些了,不过人还是特别虚弱。我问她

以后怎么办,她说你随便吧,你自己看吧。我心一软,就把她抱住,她没有挣扎,也没有力气挣扎,我拿起她的手,看着她手上

包裹着的厚厚的纱布,说她怎么这么傻啊,干嘛自己糟蹋自己的身体啊,她哭了,她说她难受,她恨自己,我心里默默的说这还

不是你自己找的嘛,只能怪你自己。不过我不能见死不救,不能看着你这样糟蹋自己,要让她好好生活下去的。待到中午,她母

亲回来了,给她换药,我看到了整个一个左手,划的深浅不一,长短不同的,新旧重叠的十几道刀痕,昨天晚上的刀伤还没有完

全愈合,有的地方还在渗血,我心疼啊,MD ,去他吗的处女不处女,她因为爱我受了这么多伤,而且现在如此的自责后悔,虽

然这是她自找的,但我不是一个决情的人,她是深深的爱着我的,而我仍然深深的爱着她,让处女见鬼去吧。我暗自下定了决心,

等她妈出去了,我就和她讲和吧。。。。

在以后的事情大家能猜到的,我们谈了一年半,就结了婚,结婚证是在我们举行了仪式的半年后领到的。现在每次看到老婆那手

上浅浅的暗红色伤口,心里 有说不出的滋味,有爱,有恨,有悲伤,有无奈,有怜惜,有心疼,有遗憾啊。。。我们的小孩 才

 2 个月,我看到了那位老弟的文章决定有必要把我和老婆的经历也写下来,与人共勉,也警示那些的无知的少女们看好自己

的裤带,别那么容易解开。。。


(插曲)后来我和我老婆谈过这些事情,她说她最爱的人是我,她愿意为我做一切,我相信她的话,女人有时真的很疯狂,这种

事情没有经历过就没有感觉,我是怕她了。起初她妈因为我俩的事情不同意,她缠了她妈好久,大概有 一个月吧。每天就是不

吃饭,不说话,后来她妈妥协了,我们就开始正式 谈恋爱了。我对她的脾气多少了解些,也知道她要是难过就会虐待自己的。


以上这些并不是我真正想说的。和题目无关。现在开始说正题了:

女人有很多种,有很骚的,也有那种很保守的,但是我想说的,不管你们以什么样的理由,委身于人,而那个男人不是你的最终

归宿,你就要为你的行为付出昂贵的代价,除非你比你男人强很多,让你的男人靠你养活,他就无话可说。那是因为有以下几条,

就决定你的地位:

第一 是你永远欠着你老公的,你的心理永远都要有内疚感,别觉得嫁人了就可以理直气壮,你和那些处女永远没办法比,因为

据德国有关权威机构研究,处女一旦跟男人进行性行为,这个男人的精液里的一种特殊物质(醛基氨酶)就会永远的留在这个女

人的子宫里,换句话说,这种物质是一种具有记忆作用的特殊物质,它会以特殊的方式传递给那些受孕的婴儿的,这也就是说为

什么那些嫁过人的女人改嫁后,她再生的孩子的一些体态特征象她的第一个男人的缘故。(不过这种的遗传影响力很小的,打个

比方第一个男人叫  1号,孩子的父亲叫2号,如果2号男人是个矮个子,1号是个大个子,那么恭喜你了,你的孩子很大的

几率是个高个子,而2号如果是个秃头,1号头发浓密,那么也要恭喜你了,你的孩子可能是头发浓密的孩子。但是如果1号有

什么遗传病或者其他传染病,你的孩子的基因会继承这些的,这些病的发病几率会高很多的,其实这也就是 中世纪时期英国的

英格兰贵族为什么只找处女给他传宗接代,而且还要 苏格兰人和爱尔兰人的处女的初夜权的,哈,就是要把苏格兰人和爱尔兰

的人的基因都改变掉,这就是 华莱士为什么要拼死反抗的目的了。freedom 其实也许是个借口,还不是 要个处女老婆吗。他

老婆不就因为不是处女,被英格兰的贵族杀掉的。)


第二 要为你的行为付出代价。因为你生在中国,如果你生在美国你的第一次也许可以和任何人上床(甚至包括你的直系亲属),

没有人去追究你,而如果你生在伊斯兰国家,你的第一次没有给自己的丈夫,你将被你的老公处死,而他不会受到任何法律制裁,

你的家人也会被人唾弃,万幸的是你生在中国,而中国是一个封建化还没完全退去的国家,这个国度里的男人都有些大男子主义,

不过我们应该象韩国人学习,学习他们管理女人的方法,我们中国人最讲究的是女人的三从四德,女人的贞操,女人嘛,你终归

是要嫁人生子的,当然那些女强人和很多的婊 子不需要,但是,你是上述的那两种人吗?你不是的话,你就要 面对以后和你一起

生活的老公,你有什么脸去指责你的男人在外面胡搞,记住这句话: 女人永远想成为自己老公的最后一个女人,而男人永远最想

成为自己老婆的第一个男人 。你不是处女,他的心里就有阴影的。另外你们以为,你们找的对象,就能到成家结婚的那步吗?告

诉你错了,他更想发泄一下,你就恰好充当这样的免费的鸡哦。未成年的女人,或者说女人你要是不到22、23就别做那种事情,

准确的讲要是没有双方父母的同意,或者结婚证拿到手,就看好你的裤带,别随便解开。因为夜长梦多,谁也说不准 2 年后的事

情,更别说再久的事情,还有年龄越小,接触性爱的时间越早,以后变为荡妇淫娃的可能性越大,衰老的时间越早,自己性器官

被损害的几率就越高,所以说你 丫还是等密桃到成熟了再采摘吧,别还是个小屁毛孩子就急着脱裤子。如果你不是处女的话,你

的秘密要老公替你保密的话,就有话柄在老公手里,而且他要是搞个婚外恋,就拿这个说事,说你不是处女,你丢人掉价不说,

而且法律也不会偏袒你的,这时你就能体会到公共舆论的压力了, 哈哈。

想清楚,再脱裤子。


第三 处女老婆可以获得老公更多的爱。因为女人的 YD 是有一定长度和宽度,女人YD 对男人的弟弟是有记忆功能的,换

句话说,女人的YD 对每个进入它的弟弟都会记住,但是它忘记的更快,它最后只会记住进入它的最大的最粗的弟弟,退一

步讲,就是你的老公的弟弟如果没有你的第一个男人的弟弟大的话,你就很难得到满足,当然这种是在你和第一个男人多次

做的结果,而且你和第一个男人做得到过高潮。中国男人的弟弟大多不是很大很长,而现在80年代女大多都是追求个人欲望

和满足的货,男人做老公的确很累,费功费力费子弹的不说,还要在乎老婆的感受,问她满足不?如果说不满足,老公的心

理就会有变化,时间长了可能会导致不应期阳痿,哈哈,那些 不是处女的女人呢,还要怪她老公本领不行,MD,太不公平了。

如果男人的弟弟不是很大的话就一定要找个处女老婆,这样的女孩很容易满足的。如果她以后没有跟别的男人上过床的话,

她会在你的每次冲刺下获得满足,当然你的有点本钱的,别放进去就趴下了,那你要治疗的。(小方法 ,在你的弟弟硬了后,

用 5 度的冷水和大概 45 度左右的热水轮流冷敷和热敷,效果很好的。)所以说,女人一旦 跟过2 以上的个男人上过床以

后,这样的女人就会变的很无耻,她就不会再在乎贞操、名誉、面子,把它们统统扔到脑后,只追求自己的快乐,也就是说

如果男人在金钱、精神,肉体上难以满足她的需要的话,她红杏出墙的可能性几乎是100%,所以要找非处女结婚的,一定要

找个那种让一个男人上过的,而不是跟很多男人 上过床的那种女孩,如果男人要找跟2 个以上的男人睡过觉的女孩的话,首

先你确定是真的要和她结婚吗?如果是就一定先要摸摸自己的钱包,看是不是很鼓,拿尺子量量自己的弟弟,看它是否够大

够威猛,还要象女孩询问一下,跟她上过床的男人的东西有多长,关键问问她有没有跟老外上过,尤其是黑人,因为白人和

黑鬼的东东太大,让咱们中国男人汗颜自惭的,举个例子吧,张曼玉就是这样的女人的,她出道以来先后跟不下3 个白种男

人上过,朝伟怎么样,你是中国人,估计东西也不大,和朝伟上过一两次就没味道了,虽然曼玉和朝伟的关系很好,感情也

不错,嘉铃虽然有些吃醋,但因为自己的原因,她没有资格去管朝伟的,不过让嘉玲感到万幸的是曼玉不会想着和朝伟结婚,

白头到老,哈哈,嘉玲真的应该好好感谢那几个曼玉的白人男朋友的。还有我所敬爱的成龙大哥,居然被几个外国女人嘲笑,

说中国男人功夫不行,尤其是床上功夫,其实是说成龙大哥的弟弟太小了,我靠,成龙大哥是个大鼻子男人哦,他的东东理

论上讲,应该是超过咱们中国男人的平均水平的,呵呵,TMD ,这几个外国骚娘们,估计不是成龙大哥的东西小,而是你们

的太大,可以跑火车了,还有李纹这个烂货,我靠,你丫 TMD 被多少外国老鬼搞过,还想着嫁个中国人,我看是嫁个在

中国的外国鬼,别那么麻烦你真的还是去坦桑尼亚找个黑鬼,那里的黑鬼每个都有20几的,一定能让你满足的。放眼看来,

美国的华人男子几乎没有找白人女人的习惯的,他们不安分的心只会在自己的圈子里跳动,找个华裔老婆,其实说白了,美

国女孩大多开放的很早,保守的几乎是凤毛麟角 ,那里的华人男子真是不容易啊,向你们致敬,守在美丽的湖边居然会口渴,

只想找条家乡小溪满足,只有那些下贱的中国女孩,才会不要脸的去跟老外鬼混,小小的例子,就说张柏芝吧,你丫跟霆峰

怎么玩,那是你们的事情,我们只当个饭桌的谈资,随便说那么两句,你也听不到,你居然不自量力去找外国佬玩真个的,你

丫进去容易,能退的出来吗?你丫不信我们看,以后你要是能安分的嫁个华人,我都不姓李。 又扯远了,继续讲,找老婆其

实一定要找那种安分守己的女孩, 不过这种女孩是处女的也很少了, 要分辨只做过一次或次数很少的女孩,有点难度,不过

仍然可以辨别出来,而要辨别那种被上过几十次,几百次的浪女的话,那就太容易了,鉴定方法将在下面的内容里具体介绍。

各位看官,我会教给你们很好的很准确的方法去辨别,请你们继续看。。。。。。。。。。。。

过去的爱猫扑.爱生活有从良的,或者经常听说小姐钱挣够了就改行,找了个老实的人结个婚,这可能吗? MD ,这种女人你以为找个老

实人从良了就可以了吗?就能收住你那颗不安分的心了吗?太少了,我经常有应酬,每次听到小姐这么说,我都觉得可笑,不

过我是从来不碰小姐的, 一个字——脏,而且还要费钱,我让你满足了,浪费了我的子弹,还不如给老婆呢,还能让她们补

一补,居然还要我掏钱,你丫腿一叉,就哼哼的哆嗦,太不符合经济规律了,痛恨中…………………………..

象她们这些人没几个会真正的从良,如果有的话,我会这样认为,这个女人的运气 8 错,找了个本钱很大的,能满足她的,呵

呵,话粗理不粗。 一般规律,小姐从良了后,多转变成了暗娼,转入地下了,不知道每天给她的老公带回来多少绿帽子,不知

道她老公做了多少年的王八了。真正从良的不是说没有,有,但很少,她们一般没有人能守的住的,因为她们经历了几千几万次

的冲刺,各式各样的弟弟的奋斗,她们从良后的男人的弟弟就未必能够胜任,女人要是常时间不能满足的话,她们衰老的很快的,

而且这种事情本来就象吸毒,大脑的思想有时控制不了身体的感受,就象俗话寡妇门前是非多,寡妇们是可怜的女人,长时间得

不到满足,她们要不是有些事情顾及的话,譬如孩子老人,只要晚上来个男人,稍微用点强,就乖乖就范了,这不是说她不反抗,

而是她们身体上的需要暂时会抑制住她们羞耻感,从而导致的无力反抗,无心反抗。 别想歪了,可不是鼓励你们去强 J寡妇滴!!






现在言归正转


说说我真正想说的事情:


分辨女人是不是处女的方法(准确率99.8):(这是我和 3 个处女小老婆和老婆做对比总结出来的)

首先我说的处女是 长的还可以的,身材还不错,应该很瘦。象恐龙之类的不在此列。(譬如:韩红,不好意思,实在找不到人

了,只好拿你凑数了,其实很喜欢听你的歌的,但是现在需要拿你涮涮,呵呵,别介意哦。)

一是远看,一般来讲

处女走路一定是含肩收胸,走路身子很轻,象风摆细柳,从侧面看一定是身体象前微倾的,头微微偏前,决不会挺着

她的咪咪走路的, 她要悄悄来到你身边的话,你估计百分百被吓一跳。 50%

二是近瞧,一般来讲

处女的眉毛几乎都是顺着长的,你可以仔细观察,眉毛的每根都是 从里到外生长的,没有逆生斜生的,这是绝对正确的,

有人说眉毛的粗细有别,但这个区别很小,我的那个处女小老婆就是粗眉毛,眉毛快有我的眉毛粗了。不过那种就做过

一次两次的女孩容易判断错误。但是那些经常做爱的女孩,这个正确率就是 100% 正确的,不过现在修眉毛的技术很高,

女孩的眉毛都被修的不成样子,尤其那种把眉毛剃掉的女孩,我估计她是心虚吧。呵呵,别担心,办法多,还有其他窍

门可以判断的。 80%


处女的脖子你也要仔细观察,这个65 %的正确,就是处女的脖子几乎都是很细的,就象个大头娃娃,所以说脖子细大部

分是处女,这个要注意就是这个女孩不要太瘦,太瘦容易判断失误的。而且有些干过体力活的女孩,或者运动员不在此列,

她们的脖子会粗些,对她们不要用这种方法分别。 65%

处女的胸一定要仔细看哦。不过要注意场合,当然是人家穿外衣的哦,夏天容易看,不过别让人家当你是个色鬼,就是她

们胸一般都很小,胸形一般是象个水滴,就是下面鼓圆,上面有点洼陷,自己去观察水滴吧,我不好形容的,还有她们的

胸的两乳之间的距离短些,就是离的近些,并且肩膀是象胸口收缩的,就是像抱个竹竿的感觉,这样的判断正确率可以达

到 90%

处女的屁股绝对是要仔细观察的。处女的屁股大多瘦小扁平,没有多少肉,所以我一开始就把肥女排除了,我不喜欢肥

胖的女孩,肥胖的女孩汗多,那种感觉象夏天太阳下的冰激凌,粘忽忽的。 我只喜欢那种腰细腿细的女孩,而且从 《玉

女心经》里就说,少女腿细身体苗条,就是一天做10 次对男人都没有任何坏处,做多了身体是会有影响的,不过适可而止

就够了。老祖宗定的标准绝对是正确的。处女大多都是一些身材不好的女孩,要胸没胸,要屁股没屁股,这不是说她们以

后也这样,而是说她们以后通过性行为会改变的,该大的地方会大,该鼓的地方会鼓,该丰满的地方一定会很丰满的,胸大

屁股丰满的却偏瘦的女孩子,你丫就别装什么纯洁了,不过那些以前胖,减肥成功的女孩子有例外的。 80%

处女的腿一般很细而且会并的很紧的。大多不会轻易张开,走路和坐的时候基本上都是这样的,不过有的很瘦的女人也会这

样,如果她腿分的很开,可能她的妹妹有些病变,估计有些痒,或者别的什么妇科问题。不过处女一般不会得这些病的。家教

好的女孩也是这样的,所以正确率 50%

三是近身观察,一般来讲

处女身上都有香味 每个处女身上都有香味,这个味道每个女孩都不一样,这个要在她洗完澡,细细体味,不过现

在的洗发水,沐浴露会掩盖她身上的味道,但爱猫扑.爱生活,腋下,会阴的味道一般有个一天到两天,就会变回原来味道,哪个香味

和任何花香及其他香味都不同,真的很好闻的。非处女的那些地方会有点骚味的,因为她的身上发出一种想要交配的味道,

那种味道在所有的哺乳动物身上都有, 只不过女人的味道要轻很多,而且人的嗅觉不是很发达。不信的话,你大可找个发

情的公狗来试试,如果它狗胆包天的话,没准会扑上来的。 哈哈,要小心哦。 60%

处女的耳垂和耳后,哈哈,这里是很多人所忽视,我发现这里面有很大的学问,女人耳垂耳后是一个非常敏感的地方,你可以

在亲吻她的面庞的时候,突然在这里吹一口气,就可以看到她的反应了,她会吓一跳,但更多的是那种麻酥酥的感觉,她会

一下子肌肉绷紧,暂时说不出话来,看她的反映大小就可以判断,不是处女的话,她会有反应,不过集中到她的下面了,会流

些水出来。。。 50%

处女的爱猫扑.爱生活 处女的爱猫扑.爱生活一般来讲都应该很小,当然也有发育比较好的,但那个和非处女是有区别的,区别不是很明显,

但仍然可以鉴别出来的,这个非处女就伪装不出来,处女的乳头一般很小,就一点点,有就是那种黑色中性笔的笔芯的管子

那么大,乳晕的颜色是淡淡的红色,而做过很多次的女孩的爱猫扑.爱生活一般大些,乳头很大,乳晕很大颜色发暗 90%

处女的膜 那个膜其实很容易辨别的,假的永远都是假的,真的是分布在口的一种薄膜,暗红色,颗粒状,有不平的起伏而

且不规则,而假的呢,它不会做的那么真,它只是在发生性行为的时候会流一点点血,骗那些从来没见过女人的 B 的 年轻后

生可以,骗任何知道的人都骗不过去,你可以试着用手揪揪它,估计非处女一脚就把你踢下去了。 哈哈 100%

处女的阴部 你可以观察阴部,尤其大 YC ,处女的颜色永远都是粉红色,颜色很淡很浅的那种,而且把腿分的很开后,她

的大 YC,也会闭合的很紧,不会漏出里面的东东。而非处女的呢。颜色要深的多,有点发黑的,或者准确的说是深紫色,腿

张的很大的时候,漏出里面的东东。 80%

四是言谈举止 ,一般来讲

这个很多书籍上有介绍,我就随便讲讲了, 首先处女和男人说话的时候,她一般不会和你对视,她的视线一般在你的下

巴上,而且你可以讲个黄缎子笑话 看看她的反应 这个测试嘛 ,准确率变的很低了, 30%就够了 。

例子 给你准备好了(本例属于转载,特此申明)。可以背会。

少女来到一间屋前,慢慢的踱了进去!她没想到屋里会有人, 但在屋里的却是一个50多岁的老男人。 她听到身后轻轻的

关门声,然后那老男人的脚步声就慢慢向她靠近。隔壁传来一个女人断续的呻吟声,在这种地方,经过走廊时,随便哪个房

内都会不时传出男人和女人们发出的这种令人起鸡皮疙瘩的呻吟。老男人走到女孩对面,轻轻托起她的下巴仔细端详着,她

不喜欢他看她的那种眼神。女孩想起宿舍室友的话,“没什么的,我很小就做过的”,“会出点血,但不是很疼”,……。

老男人看出了女孩眼中的紧张,甚至可以说,带一丝恐惧。他站起身,到旁边倒了一杯水,回来放在女孩的手边。“放松一点,

否则你会更难受。”他说这话的时候嘴角带着笑,可女孩却根本笑不出。 老男人扶着女孩的肩膀,慢慢把她向后仰下去。她

知道后悔已经晚了,现在这个时候,一切只好顺从他,听他的摆布了。“张开一点”,老男人的语气似乎很温柔,但还是能明

显地听出命令的感觉。 女孩照做了。老男人试了一下,觉得这个姿势还不是很舒服,“再张开大点,这样不容易进去。”

女孩又照做了,她觉得自己现在的姿势肯定很不雅,甚至自己都觉得有些恶心。

老男人掏出他那大大的、长长的家伙,在她面前炫耀似的摆弄了几下。女孩知道下面将要发生什么了,她把头向后一仰,无奈

地闭上了眼。 那一刻终于来了,女孩感觉到一个硬硬的东西伸了进来,她本能地想躲,但被那老男人按住了。

疼痛!女孩的身体颤抖了一下,发出了“啊~”的一声。老男人的动作停了一下,“如果很疼的话,说出来,我可以轻点。”

女孩没作声,她只想这一切早点结束。出血了。老男人似乎早有准备,拿起旁边的一块白巾仔细地把血擦掉。

他那硬硬的长长的家伙就那么不断的在她那里进进出出,东撞西撞的。每次碰到最里面,她都几乎疼得抖起来。

女孩口中发出含混的声音,“啊~~恩~~哦~~~”,脸上的表情扭曲了。老男人很仔细地动着,那样子就象是在研究

什么似的。

不知为什么,逐渐地,疼痛已经不明显了,一种麻麻的,痒痒的感觉。

女孩配合着老男人的动作,里面越来越湿,竟然流了出来。她知道这是正常的反应,但仍然觉得很难为情。老男人把

流出来的擦了擦,仍然是那种很仔细的样子。

女孩觉得也许老男人比年轻帅哥会好些,至少很温柔,不会那么粗暴。她有点觉得庆幸。老男人突然在深处猛地用了

一下力,女孩“啊~”了一声,脊背后仰。由于用力,她身体又抖起来。她感到最里面一阵阵的发凉。

终于结束了。

老男人把他那大大的、长长的、硬硬的家伙慢慢从里面拿出来,然后很随便地把前端那乳白色的东西丢在旁边一个

托盘里,长舒了口气。女孩也逐渐清醒过来,她坐起身,很无力地端起身边的那杯水漱漱口。

女孩:这一颗烂牙…

老男人是一个牙医,帮女孩拔牙呢




听了这个笑话知道害羞的女孩真的是很少了。所以说 这个辨别的误差是比较高的。 30%

因为现在的80 年代的女孩子大都懂的很多,我前天打的和司机聊天时,那个司机就说了个事,MD ,上礼拜晚上9 点多的

时候,接了俩个小屁娃,大概也就高一的样子,男孩可能从家里骗了点钱出来,就把女孩也约了出来,说是去宾馆开房,宁

大附近的宾馆便宜,就从老城打的过来,在 车上还没 2 分钟, 2 个人就在后座抱到一起了,小子的手还不老实,在衣服里

摸了上面摸下面 ,女娃一直哼哼,司机的儿子估计也这么大了,他火一上来,就给拉到 派出所了,哈哈。派出所也是多事,

楞把俩娃的父母给叫来了,怎么处理的事情就不知道了,听司机说这个小崽子居然 找了4 、5 个对象了,书包里还有拆开

的避孕套 5 个及一整盒包装的避孕套,和男用女用的催情油各一个, 据小崽子交代,他一晚上能用 6个套,我 靠,

你他吗的 真牛啊,年轻真好,我老喽 。。。

司机算是服了, 晚上就搜他儿子的,不过让他失望了,没找到, 我靠! 明天还要接着搜。。。。 I 服了 YOU!!!!

真佩服这些高中生啊。当年我上高中的时候,我都在干嘛啊??成天踢球,打扑克,下棋,浪费了多少宝贵光阴啊,哎,追

不回来喽 现在的女孩子啊,我,想不出来该怎么说了。 沉思中…….算了不说了,再说又扯远了。


五是提枪上阵 一般来讲,
首先,你要把女孩的衣服脱掉,一般处女的衣服很难脱,必须连哄带骗的脱,这需要技巧和方法,具体人具体对待,不过

非处女的衣服有时也很难脱,不过她是有意识的。这点要有非常的洞察力能能看的出。这点很难分别,我们就不探讨了 20%。

现在是说你成功的除却了她的衣服,这需要你不那么莽撞那么猴急,不过这个要求有点高,有个女人在你旁边,想不做那真

的很难,你可以一点一点慢慢挑逗她的欲望,如果是处女的话,她的反应是不适应,有点茫然,因为是第一次嘛,但一旦她

适应了,就会慢慢随着你的动作而变的热情,阴部会湿润,而不是流很多的水,你可以亲她身上的所有的地方,每亲一个地方,

她的反应都很剧烈的,不象非处女只对局部位置有很强的反应,譬如:嘴,爱猫扑.爱生活,阴部这些地方,你如果肯花足够的时间去做

这些事情的话,你可以先让她将你的小弟弟握住她会一动不动的握住,而不会帮你抚弄揉捏,可能过一会她就松手了,非处女

就不会了,她会大胆勇敢的帮你摸捏,而且,经过有个30分钟的前戏,她会流出很多的水,会把阴部弄的湿淋淋的,并不止一次

的想把你的小弟弟放到她的小妹妹里的,处女永远都会被动的让你引导,而不是主动出击。现在到时候了,你该准备把你的弟

弟放进去了,首先我让你们选择传统姿势,你应该做的是 拿过一个枕头来,放在她的屁屁底下,这样有2 个好处,一是你容易

把弟弟放进去, 二是这样做,对女孩好处多,不会受到太多的创伤,因为第一次女人是不会体味到那种飘着飞着的神仙般的滋

味,她们最直接的感受就是痛,就是上当了的感觉,你要慢慢的进去,别太着急,而非处女呢,估计会迎合着你,顺利的进去,

进去后,好好体味吧,你要感觉她的YD 是不是很紧,处女的一般很紧,夹的你的弟弟很紧,你不大可能就会很松快的抽动,非处

女一般都很松,哦。忘了说了,这个的前提是你的弟弟要足够大足够粗,长度嘛 13就够了,粗嘛周长11就够了,你的弟弟在里面

可以乱窜,哈哈,如果你不是那么急的话就在里面捣鼓个 两三分钟,然后突然停下来,一动不动,如果是处女,她一般也会不

动的, 不知道怎么做,而非处女呢,一定会扭动她的屁屁,要么关心你问你怎么不动了,要么催你了,那你就鼓足马力,努力

奋斗吧。事后, 处女会问怎么办,问她会不会怀孕,而非处女呢,一定催着你去买药了,你收拾完战场后,别急,先观察一下

她的阴部,处女的阴部一般是红肿,而非处女不会,你可以亲亲它,非处女会很快就会想再来一次,而处女因为她那里很痛,虽然有

些外来刺激,但她不会要求你你再来一次,当然你强行进入的话不算,她会想着休息一下的,如果你还没看出真面目的话,你就在第

2 次第3 次,在20分钟的前戏后,来个男下女上的骑马位来检验一下,处女一般是不会动的,她傻傻的会在你身上坐着,而不知道

怎么办,非处女呢,一定是疯狂的扭动。。。哈哈。。。。 你要仔细观察就可以发现其中的区别,在性上就算她用思想用意识控制,

装的再象,但她身体的反应会出卖了她自己的,身体上的反应是绝对 正确的。不过这个需要有经验的男人才能看出是真是假,

有经验 这个的准确率可以达到 100% 没有经验的 这个的准确率低些 80%


六是100%准确,操作简单的绝密手法

处女的判断我已经讲了很多,这其中有 很多是我亲身体会到的,也是我第一次发表这么长的文章,我以前写过一篇文章,比这

篇文章的内容少多了,不够详细,我想我的东西还是有些权威性的。现在我有一个操作简单立码鉴别百分百准确的高级手法,百试百

应,现在先保留一下,如果我的文章的回复 在超过 三万篇以后,我会把它公布在我的油箱里,或者我再发表一下,希望大家多支持。


告戒那些非处女们,别想着卖完了,买个膜,做个手术,你就当自己很纯洁,象块没有玷污的美玉,告诉你们,哈哈。我只要用手

一摸就知道你是不是真的,真的假不了,假的真不了,连你的裤子都不用脱,哈哈。。。给我装 B,我是干什么的。。。就是接露你

们这些当了婊 子还要立牌坊的女人的丑恶嘴脸的虾客。 哈。。。




是男人的就 给我 顶 起!!来点掌声



希望大家在茫茫人海中追寻到你的另一半,那些非处女中有很多 不错的女孩,我的老婆就是这样一位,所以我说很多事情没

有绝对的, 只要你用心去爱,就会得到属于你的真爱。我所说的如果不是处女,就要明白自己的身份,夹着尾巴好好跟老公过

日子, 别一天 TMD 翘尾巴,好象你有多么好一样。

2006年01月18日

http://www.gritwire.com/

Gritwire:类似于 www.netvibes.com 该网站是采用FLASH技术来提供个性化主页服务:提供RSS的在线订阅,可以添加feeds,也可以导入OPML文件;提供WIKI,提醒,链接,播客(poadcast)服务……..

AJAX,今天第一次注意到这个新名词,现在的新技术实在是太多了.就今天看完这篇文章的粗浅的了解,对我以后学习和工作还是很很有可能应用到的.     留此存照,以备后查.


以下为转载======================================
作为J2EE开发人员,我们似乎经常关注“后端机制(backend mechanics)”。我们通常会忘记,J2EE的主要成功之处在Web应用程序方面;许多原因使得人们喜欢利用Web开发应用程序,但主要还是因为其易于部署的特点允许站点以尽可能低的成本拥有上百万的用户。遗憾的是,在过去几年中,我们在后端投入了太多的时间,而在使我们的Web用户界面对用户自然和响应灵敏方面却投入不足。

  本文介绍一种方法,Ajax,使用它可以构建更为动态和响应更灵敏的Web应用程序。该方法的关键在于对浏览器端的JavaScript、 DHTML和与服务器异步通信的组合。本文也演示了启用这种方法是多么简单:利用一个Ajax框架(指DWR)构造一个应用程序,它直接从浏览器与后端服务进行通信。如果使用得当,这种强大的力量可以使应用程序更加自然和响应灵敏,从而提升用户的浏览体验。

  该应用程序中所使用的示例代码已打包为单独的WAR文件,可供下载。

简介

  术语Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用 JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。

  虽然Ajax所需的基础架构已经出现了一段时间,但直到最近异步请求的真正威力才得到利用。能够拥有一个响应极其灵敏的Web站点确实激动人心,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈创建“桌面风格的(desktop-like)”可用性。

  通常,在J2EE中,开发人员过于关注服务和持久性层的开发,以至于用户界面的可用性已经落后。在一个典型的J2EE开发周期中,常常会听到这样的话,“我们没有可投入UI的时间”或“不能用HTML实现”。但是,以下Web站点证明,这些理由再也站不住脚了:

  所有这些Web站点都告诉我们,Web应用程序不必完全依赖于从服务器重新载入页面来向用户呈现更改。一切似乎就在瞬间发生。简而言之,在涉及到用户界面的响应灵敏度时,基准设得更高了。

定义Ajax

  Adaptive Path公司的Jesse James Garrett这样定义Ajax

  Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:

  • 基于XHTMLCSS标准的表示;
  • 使用Document Object Model进行动态显示和交互;
  • 使用XMLHttpRequest与服务器进行异步通信;
  • 使用JavaScript绑定一切。

  这非常好,但为什么要以Ajax命名呢?其实术语Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML的简写”。

Ajax的工作原理

  Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

  在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:

  • 动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
  • 提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载 32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
  • 消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
  • 直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。

  一切皆有可能!但愿它能够激发您开始开发自己的基于Ajax的站点。然而,在开始之前,让我们介绍一个现有的Web站点,它遵循传统的提交/等待/重新显示的范例,我们还将讨论Ajax如何提升用户体验。

Ajax可用于那些场景?——一个例子:MSN Money页面

  前几天,在浏览MSN Money页面的时候,有一篇关于房地产投资的文章引起了我的好奇心。我决定使用站点的“Rate this article”(评价本文)功能,鼓励其他的用户花一点时间来阅读这篇文章。在我单击vote按钮并等待了一会儿之后,整个页面被刷新,在原来投票问题所在的地方出现了一个漂亮的感谢画面。

  而Ajax能够使用户的体验更加愉快,它可以提供响应更加灵敏的UI,并消除页面刷新所带来的闪烁。目前,由于要刷新整个页面,需要传送大量的数据,因为必须重新发送整个页面。如果使用Ajax,服务器可以返回一个包含了感谢信息的500字节的消息,而不是发送26,813字节的消息来刷新整个页面。即使使用的是高速Internet,传送26K和1/2K的差别也非常大。同样重要的是,只需要刷新与投票相关的一小节,而不是刷新整个屏幕。

  让我们利用Ajax实现自己的基本投票系统。

原始的Ajax:直接使用XmlHttpRequest

  如上所述,Ajax的核心是JavaScript对象XmlHttpRequest。下面的示例文章评价系统将带您熟悉Ajax的底层基本知识:http://tearesolutions.com/ajax-demo/raw-ajax.html。注:如果您已经在本地WebLogic容器中安装了ajax-demo.war,可以导航到http://localhost:7001/ajax-demo/raw-ajax.html

  浏览应用程序,参与投票,并亲眼看它如何运转。熟悉了该应用程序之后,继续阅读,进一步了解其工作原理细节。

  首先,您拥有一些简单的定位点标记,它连接到一个JavaScriptcastVote(rank)函数。

function castVote(rank) {
var url = "/ajax-demo/static-article-ranking.html";
var callback = processAjaxResponse;
executeXhr(callback, url);
}

  该函数为您想要与之通信的服务器资源创建一个URL并调用内部函数executeXhr,提供一个回调JavaScript函数,一旦服务器响应可用,该函数就被执行。由于我希望它运行在一个简单的Apache环境中,“cast vote URL”只是一个简单的HTML页面。在实际情况中,被调用的URL将记录票数并动态地呈现包含投票总数的响应。

  下一步是发出一个XmlHttpRequest请求:

function executeXhr(callback, url) {
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = callback;
req.open("GET", url, true);
req.send(null);
} // branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = callback;
req.open("GET", url, true);
req.send();
}
}
}

  如您所见,执行一个XmlHttpRequest并不简单,但非常直观。和平常一样,在JavaScript领域,大部分的工作量都花在确保浏览器兼容方面。在这种情况下,首先要确定XmlHttpRequest是否可用。如果不能用,很可能要使用Internet Explorer,这样就要使用所提供的ActiveX实现。

executeXhr()方法中最关键的部分是这两行:

req.onreadystatechange = callback;
req.open("GET", url, true);

  第一行定义了JavaScript回调函数,您希望一旦响应就绪它就自动执行,而req.open()方法中所指定的“true”标志说明您想要异步执行该请求。

  一旦服务器处理完XmlHttpRequest并返回给浏览器,使用req.onreadystatechange指派所设置的回调方法将被自动调用。

function processAjaxResponse() {
// only if req shows "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
502 502'votes').innerHTML = req.responseText;
} else {
alert("There was a problem retrieving the XML data:
" +
req.statusText);
}
}
}

  该代码相当简洁,并且使用了几个幻数,这使得难以一下子看出发生了什么。为了弄清楚这一点,下面的表格(引用自http://developer.apple.com/internet/webcontent/xmlhttpreq.html)列举了常用的XmlHttpRequest对象属性。

属性

描述

onreadystatechange

每次状态改变所触发事件的事件处理程序

readyState

对象状态值:

  • 0 = 未初始化(uninitialized)
  • 1 = 正在加载(loading)
  • 2 = 加载完毕(loaded)
  • 3 = 交互(interactive)
  • 4 = 完成(complete)

responseText

从服务器进程返回的数据的字符串形式

responseXML

从服务器进程返回的DOM兼容的文档数据对象

status

从服务器返回的数字代码,比如404(未找到)或200(就绪)

statusText

伴随状态码的字符串信息

现在processVoteResponse()函数开始显示出其意义了。它首先检查XmlHttpRequest的整体状态以保证它已经完成(readyStatus == 4),然后根据服务器的设定询问请求状态。如果一切正常(status == 200),就使用innerHTML属性重写DOM的“votes”节点的内容。

  既然您亲眼看到了XmlHttpRequest对象是如何工作的,就让我们利用一个旨在简化JavaScript与Java应用程序之间的异步通信的框架来对具体的细节进行抽象。

Ajax: DWR方式

  按照与文章评价系统相同的流程,我们将使用Direct Web Remoting(DWR)框架实现同样的功能。

  假定文章和投票结果存储在一个数据库中,使用某种对象/关系映射技术来完成抽取工作。为了部署起来尽可能地简单,我们不会使用数据库进行持久性存储。此外,为使应用程序尽可能通用,也不使用Web框架。相反,应用程序将从一个静态HTML文件开始,可以认为它由服务器动态地呈现。除了这些简化措施,应用程序还应该使用Spring Framework关联一切,以便轻松看出如何在一个“真实的”应用程序中使用DWR。

  现在应该下载示例应用程序并熟悉它。该应用程序被压缩为标准的WAR文件,因此您可以把它放置到任何一个Web容器中——无需进行配置。部署完毕之后,就可以导航到http://localhost:7001/ajax_demo/dwr-ajax.html来运行程序。

  可以查看HTML 源代码,了解它如何工作。给人印象最深的是,代码如此简单——所有与服务器的交互都隐藏在JavaScript对象ajaxSampleSvc的后面。更加令人惊讶的是,ajaxSampleSvc服务不是由手工编写而是完全自动生成的!让我们继续,看看这是如何做到的。

引入DWR

  如同在“原始的Ajax”一节所演示的那样,直接使用XmlHttpRequest创建异步请求非常麻烦。不仅JavaScript代码冗长,而且必须考虑服务器端为定位Ajax请求到适当的服务所需做的工作,并将结果封送到浏览器。

  设计DWR的目的是要处理将Web页面安装到后端服务上所需的所有信息管道。它是一个Java框架,可以很轻松地将它插入到Web应用程序中,以便JavaScript代码可以调用服务器上的服务。它甚至直接与Spring Framework集成,从而允许用户直接向Web客户机公开bean。

  DWR真正的巧妙之处是,在用户配置了要向客户机公开的服务之后,它使用反射来生成JavaScript对象,以便Web页面能够使用这些对象来访问该服务。然后Web页面只需接合到生成的JavaScript对象,就像它们是直接使用服务一样;DWR无缝地处理所有有关Ajax和请求定位的琐碎细节。

  让我们仔细分析一下示例代码,弄清它是如何工作的。

应用程序细节:DWR分析

  关于应用程序,首先要注意的是,它是一个标准的Java应用程序,使用分层架构(Layered Architecture)设计模式。使用DWR通过JavaScript公开一些服务并不影响您的设计。

  下面是一个简单的Java服务,我们将使用DWR框架直接将其向JavaScript代码公开:

package com.tearesolutions.service;

public interface AjaxSampleSvc {
  Article castVote(int rank);
}

  这是一个被简化到几乎不可能的程度的例子,其中只有一篇文章可以投票。该服务由Spring管理,它使用的bean名是ajaxSampleSvc,它的持久性需求则依赖于ArticleDao。详情请参见applicationContext.xml。

  为了把该服务公开为JavaScript对象,需要配置DWR,添加dwr.xml文件到WEB-INF目录下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
 "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN"
 "http://www.getahead.ltd.uk/dwr/dwr.dtd">

<dwr>
 <allow>
  <create creator="spring" javascript="ajaxSampleSvc">
   <param name="beanName" value="ajaxSampleSvc" />
  </create>
  <convert converter="bean" match="com.tearesolutions.model.Article"/>
  <exclude method="toString"/>
  <exclude method="setArticleDao"/>
 </allow>
</dwr>

  dwr.xml文件告诉DWR哪些服务是要直接向JavaScript代码公开的。注意,已经要求公开Spring bean ajaxSampleSvc。DWR将自动找到由应用程序设置的SpringApplicationContext。为此,必须使用标准的servlet过滤器ContextLoaderListener来初始化Spring ApplicationContext。

  DWR被设置为一个servlet,所以把它的定义添加到web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD
 Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
 <display-name>Ajax Examples</display-name>

 <listener>
  <listener-class>
      org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>

 <servlet>
  <servlet-name>ajax_sample</servlet-name>
  <servlet-class>com.tearesolutions.web.AjaxSampleServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <display-name>DWR Servlet</display-name>
  <description>Direct Web Remoter Servlet</description>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
 </servlet>

 <servlet-mapping>
  <servlet-name>ajax_sample</servlet-name>
  <url-pattern>/ajax_sample</url-pattern>
 </servlet-mapping>

 <servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
 </servlet-mapping>
</web-app>

  做完这些之后,可以加载http://localhost:7001/ajax-demo/dwr,看看哪些服务可用。结果如下:

图3. 可用的服务

  单击ajaxSampleSvc链接,查看有关如何在HTML页面内直接使用服务的示例实现。其中包含的两个JavaScript文件完成了大部分的功能:

<script type='text/javascript'
   src='/ajax-demo/dwr/interface/ajaxSampleSvc.js'></script>
<script type='text/javascript'
   src='/ajax-demo/dwr/engine.js'></script>

ajaxSampleSvc.js是动态生成的:

function ajaxSampleSvc() { }

ajaxSampleSvc.castVote = function(callback, p0)
{
  DWREngine._execute(callback, '/ajax-demo/dwr',
 'ajaxSampleSvc', 'castVote', p0);
}

  现在可以使用JavaScript对象ajaxSampleSvc替换所有的XmlHttpRequest代码,从而重构raw-ajax.html文件。可以在dwr-ajax.html文件中看到改动的结果;下面是新的JavaScript函数:

function castVote(rank) {
  ajaxSampleSvc.castVote(processResponse, rank);
}
function processResponse(data) {
 var voteText = "

Thanks for Voting!

"
    + "

Current ranking: " + data.voteAverage
    + " out of 5

"
    + "

Number of votes placed: "
    + data.numberOfVotes + "

";
 502 502'votes').innerHTML = voteText;
}

  惊人地简单,不是吗?由ajaxSampleSvc对象返回的Article域对象序列化为一个JavaScript对象,允许在它上面调用诸如numberOfVotes()和voteAverage()之类的方法。在动态生成并插入到DIV元素“votes”中的HTML代码内使用这些数据。

下一步工作

   在后续文章中,我将继续有关Ajax的话题,涉及下面这些方面:

  • Ajax最佳实践

  像许多技术一样,Ajax是一把双刃剑。对于一些用例,其应用程序其实没有必要使用Ajax,使用了反而有损可用性。我将介绍一些不适合使用的模式,突出说明Ajax的一些消极方面,并展示一些有助于缓和这些消极方面的机制。例如,对Netflix电影浏览器来说,Ajax是合适的解决方案吗?或者,如何提示用户确实出了一些问题,而再次单击按钮也无济于事?

  • 管理跨请求的状态

  在使用Ajax时,最初的文档DOM会发生一些变化,并且有大量的页面状态信息存储在客户端变量中。当用户跟踪一个链接到应用程序中的另一个页面时,状态就丢失了。当用户按照惯例单击Back按钮时,呈现给他们的是缓存中的初始页面。这会使用户感到非常迷惑!

  • 调试技巧

  使用JavaScript在客户端执行更多的工作时,如果事情不按预期方式进行,就需要一些调试工具来帮助弄清出现了什么问题。

结束语

  本文介绍了Ajax方法,并展示了如何使用它来创建一个动态且响应灵敏的Web应用程序。通过使用DWR框架,可以轻松地把Ajax融合到站点中,而无需担心所有必须执行的实际管道工作。

  特别感谢Getahead IT咨询公司的Joe Walker和他的团队开发出DWR这样神奇的工具。感谢你们与世界共享它!

下载

  本文中演示的应用程序源代码可供下载:ajax-demo.war(1.52 MB)。

参考资料

原文出处

An Introduction To Ajax

http://dev2dev.bea.com/pub/a/2005/08/ajax_introduction.html

对于经常上网的人来说如果说现在还没听说过Google,那只能说地球不是适合你待的地方,赶快回到你自己的星球去吧。现在干很多事情找资料都离不开搜索,而Google可以说是用得最普遍的,尤其是找英文资料的时候。Google就是一个工具,工具就有使用效率问题,同样的东西有些人找资料效率就更高,所以有必要对了解一番。

Google相关网站

http://directory.Google.com/    目录检索
http://Groups.Google.com/    新闻组搜索
http://www.Google.com/preferences  设置
http://translate.google.com/translate_t  在线翻译
http://news.google.com/  新闻搜索
http://catalogs.google.com/ 分类广告
http://labs.google.com/  Google实验室
http://www.google.com/apis/  Google api 接口
http://www.google.com/press/zeitgeist.html 热点问题及趋势
http://map.google.com 地图搜索

另:Google最新特色搜索不完全手册 http://blog.donews.com/dgsheng/archive/2006/01/16/696663.aspx

以下为转载=====Google搜索从入门到精通=====

1,前言
2,摘要
3,如何使用本文
4,Google简介
5,搜索入门
6,初阶搜索
6.1,搜索结果要求包含两个及两个以上关键字
6.2,搜索结果要求不包含某些特定信息
6.3,搜索结果至少包含多个关键字中的任意一个
7,杂项语法
7.1,通配符问题
7.2,关键字的字母大小写
7.3,搜索整个短语或者句子
7.4,搜索引擎忽略的字符以及强制搜索
8,进阶搜索
8.1,对搜索的网站进行限制
8.2,查询某一类文件
8.3,搜索的关键字包含在URL链接中
8.4,搜索的关键字包含在网页标题中
8.5,搜索的关键字包含在网页“锚”内
9,其他罕用语法
9.1,搜索所有链接到某个URL地址的网页
9.2,查找与某个页面结构内容相似的页面
9.3,从Google服务器上缓存页面中查询信息
10,图片搜索
11,目录检索
12,新闻组搜索
13,Google的其他杰出功能
13.1,网页快照
13.2,集成化的工具条
13.3,单词英文解释
13.4,网页翻译
13.5,单词纠错
13.6,搜索结果过滤
14,Google尚未发布的一些新特性和功能
14.1,对网页更新日期做出限定
14.2,新闻搜索
14.3,分类广告搜索
14.4,其它Google的最新发展动态
14.5,一个有趣的地方
15,后记
 
——————————————————————————————————
 
1,前言
 
我是在2000年上半年知道Google的。在这之前,我搜索英文信息通常用AltaVista,而搜索中文信息则常用Sina。但自使用了Google之后,它便成为我的Favorite Search engine了。这也得感谢新浪网友曹溪,因为当初正是因为他的大力推介,才使我识得了Google。
 
记得1996年夏季的时候,当我第一次接触Internet,便被扑面而来的魔力征服了。那种天涯咫尺的感觉,真是妙不可言。在经历了疯狂的WWW冲浪和如痴如醉的BBS沉迷之后,我意识到Internet对我影响至深的还是在于学习方式的变迁。
 
如何来描述这种变迁呢?以前的学习,一般需要预先在肚子里存储下足够的知识,必要时,就从海量的信息中提取所需的部分。这种学习方式造就了很多“才高八斗,学富五车”的大才子。但是,到了信息领域大大超出“四书五经”的新时期,预先无目的的吞下海量信息的学习方式就有些不合时宜了。比方说,我们到了大型的图书城,往往有一种不知所措的感觉。旧有的学习方式需要变更以适应这个信息爆炸的年代。目的明确的去学习,即先知道要学什么,然后有目的的去寻找答案,这种方式看上去更加有效率。我不妨把这称为“即学式”,相应的,旧有的称为“预学式”。
 
不过,“即学式”的实施是有前提的。首先,要求学习者拥有一个包罗万象的信息库,以供随时抽取各种目的信息;其次,是需要一个强劲的信息检索工具,以便高效率的从信息库中提取信息。很明显,Internet可以充当那个海量的信息库,而搜索引擎,则正是寻找光明之火的绝好工具。
 
“公欲善其事,必先利其器”。Internet只有一个,而搜索引擎则有N多个。有搜索高手说,所谓搜索,就是“在正确的地方使用正确的工具和正确的方法寻找正确的内容”。但是,对于普通人而言,掌握诸多搜索引擎的可能性似乎不大。用一两个相对强劲的具代表性的工具达到绝大多数搜索目的更为人们所迫切希望。不同的时期,涌现出不同的强者。就目前而言,我们非常幸运的有了:*****Google******
 
 
2,摘要
 
本文简要的介绍了Google的历史和特点,Google的基本搜索语法和高级搜索语法,Google的特色功能,包括图片搜索、新闻组搜索和集成工具条等。尽管本文名为“Google搜索从入门到精通”,但事实上,本文只能算是对Google的一个并不十分完全的介绍而已。
 

3,如何使用本文
 
阅读本文最好具备一些最基本的布尔代数基础,如“与”、“或”、“非”等。不过,即便你没有这方面的知识,也不必在意。对那些实例进行练习,你的疑惑就会迎刃而解。对于刚刚接触网络搜索的读者而言,也许你应该从头到尾的阅读本文;但对于那些有一定搜索基础的读者而言,只需要跳跃着寻找自己所需要的信息就可以了。此外,你也可以参考中文Google大全:
http://www.Google.com/intl/zh-CN/about.html,以及搜索帮助:http://www.google.com/intl/zh-CN/help.html,那是官方Google使用手册以及问题解答中心。
 

4,Google简介
 
Googlewww.Google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明,Google Inc. 于1999年创立。2000年7月份,Google替代Inktomi成为Yahoo公司的搜索引擎,同年9月份,Google成为中国网易公司的搜索引擎。98年至今,Google已经获得30多项业界大奖。到Google的新闻中心(
http://www.Google.com/press/index.html),你可以找到关于一切关于Google的历史和新闻资料。
 
Google的成功得益于其强大的功能和独到的特点:
Google检索网页数量达24亿,搜索引擎中排名第一;
Google支持多达132种语言,包括简体中文和繁体中文;
Google网站只提供搜索引擎功能,没有花里胡哨的累赘;
Google速度极快,年初时据说有15000多台服务器,200多条T3级宽带;
Google的专利网页级别技术PageRank能够提供准确率极高的搜索结果;
Google智能化的“手气不错”功能,提供可能最符合要求的网站;
Google的“网页快照”功能,能从Google服务器里直接取出缓存的网页。
Google具有独到的图片搜索功能;
Google具有强大的新闻组搜索功能;
Google具有二进制文件搜索功能(PDF,DOC,SWF等);
Google还有很多尚在开发阶段的令人吃惊的设想和功能。
等等

 
5,搜索入门
 
要用Google做搜索,当然首先要进Google网站-www.Google.com;不过,163.com和yahoo.com.cn使用的实际上也是Google搜索引擎,只是对搜索结果进行了编排,而且无法提供一些特色功能,如图片搜索等。因此,如果你要搜索网页的话,就直接使用Google.com吧。
 
第一次进入Google,它会根据你的操作系统,确定语言界面。需要提醒的是,Google是通过cookie来存储页面设定的,所以,如果你的系统禁用cookie,就无法对Google界面进行个人设定了。
 
Google的首页很清爽,LOGO下面,排列了四大功能模块:网站、图像、新闻组和目录服务。默认是网站搜索。现在进行第一次搜索实践,假定你是个搜索新手,想要了解一下搜索引擎的来龙去脉和搜索技巧。在搜索框内输入一个关键字“搜索引擎”, 选中“搜索中文(简体)网页”选项,然后点击下面的“Google搜索”按钮(或者直接回车),结果就出来了。
 
搜索:“搜索引擎”
结果:已搜索有关搜索引擎的中文(简体)网页。 共约有707,000项查询结果,这是第1-10项 。 搜索用时0.08秒。
仔细看一下搜索结果的前十项,就会发现绝大部分链接是搜索引擎本身,而不是对搜索引擎的或者搜索技巧方面的介绍。
注意:文章中搜索语法外面的引号仅起引用作用,不能带入搜索栏内。

 
6,初阶搜索
 
上例是最基本的搜索,即查询包含单个关键字的信息。但是,你可以发现,上例中,单个关键字“搜索引擎”,搜索得的信息浩如烟海,而且绝大部分并不符合自己的要求,怎么办呢?我们需要进一步缩小搜索范围和结果。
 
6.1,搜索结果要求包含两个及两个以上关键字
 
一般搜索引擎需要在多个关键字之间加上“ ”,而Google无需用明文的“ ”来表示逻辑“与”操作,只要空格就可以了。现在,我们需要了解一下搜索引擎的历史,因此期望搜得的网页上有“搜索引擎”和“历史”两个关键字。
 
示例:搜索所有包含关键词“搜索引擎”和“历史”的中文网页搜索:“搜索引擎 历史”结果:已搜索有关搜索引擎 历史的中文(简体)网页。 共约有78,600项查询结果,这是第1-10项 。 搜索用时0.36秒。
 
用了两个关键字,查询结果已经从70多万项减少到7万多项。但查看一下搜索结果,发现前列的绝大部分结果还是不符合要求,大部分网页涉及的“历史”,并不是我们所需要的“搜索引擎的历史”。 怎么办呢?删除与搜索引擎不相关的“历史”。我们发现,这部分无用的资讯,总是和“文化”这个词相关的,另外一些常见词是“中国历史”、“世界历史”、“历史书籍”等。
 
6.2,搜索结果要求不包含某些特定信息
 
Google用减号“-”表示逻辑“非”操作。“A –B”表示搜索包含A但没有B的网页。
示例:搜索所有包含“搜索引擎”和“历史”但不含“文化”、“中国历史”和“世界历史”的中文网页搜索:“搜索引擎 历史 -文化 -中国历史 -世界历史”结果:已搜索有关搜索引擎 历史 -文化 -中国历史 -世界历史的中文(简体)网页。 共约有36,800项查询结果,这是第1-10项 。 搜索用时0.22秒。
我们看到,通过去掉不相关信息,搜索结果又减少了将近一半。第一个搜索结果是:
搜索引擎直通车≡搜索引擎发展历史搜索引擎直通车, … 搜索引擎专业介绍站点. …
www.se-express.com/about/about.htm – 14k – 网页快照 – 类似网页
非常符合搜索要求。另外,第八项搜索结果:
463搜索王
本站检索 整个网站 在此输入关键词. 你的当前位置:首页 >> Internet搜索手册 >> 搜索引擎的历史. …
www.cnco.net/search/history.htm – 21k – 网页快照 – 类似网页
也符合搜索要求。但是,10个结果只有两个符合要求,未免太少了点。不过,在没有更好的策略之前,不妨先点开一个结果看看。点开se-express.com的这个名为“搜索引擎发展历史”的网页,我们发现,搜索引擎的历史,是与互联网早期的文件检索工具“Archie”息息相关的。此外,搜索引擎似乎有个核心程序,叫“蜘蛛”,而最早成型的搜索引擎是“Lycos”,使搜索引擎深入人心的是“Yahoo”。了解了这些信息,我们就可以进一步的让搜索结果符合要求了。
 
注意:这里的“ ”和“-”号,是英文字符,而不是中文字符的“+”和“-”。此外,操作符与作用的关键字之间,不能有空格。比如“搜索引擎 – 文化”,搜索引擎将视为关键字为“搜索引擎”和“文化”的逻辑“与”操作,中间的“-”被忽略。
 
6.3,搜索结果至少包含多个关键字中的任意一个。Google用大写的“OR”表示逻辑“或”操作。搜索“A OR B”,意思就是说,搜索的网页中,要么有A,要么有B,要么同时有A和B。在上例中,我们希望搜索结果中最好含有“archie”、“lycos”、“蜘蛛”等关键字中的一个或者几个,这样可以进一步的精简搜索结果。
 
示例:搜索如下网页,要求必须含有“搜索引擎”和“历史”,没有“文化”,可以含有以下关键字中人任何一个或者多个:“Archie”、“蜘蛛”、“Lycos”、“Yahoo”。
搜索:“搜索引擎 历史 archie OR 蜘蛛 OR lycos OR yahoo -文化”
结果:已搜索有关搜索引擎 历史 archie OR 蜘蛛 OR lycos OR yahoo -文化的中文(简体)网页。 共约有8,400项查询结果,这是第1-10项。 搜索用时0.16秒。
 
我们看到,搜索结果缩小到8千多项,前20项结果中,大部分都符合搜索要求。如果你想了解一下解搜索引擎的历史发展,就不妨研究一下现在搜索到的结果吧。
 
注意:“与”操作必须用大写的“OR”,而不是小写的“or”。
在上面的例子中,我介绍了搜索引擎最基本的语法“与”“非”和“或”,这三种搜索语法Google分别用“ ”(空格)、“-”和“OR”表示。顺着上例的思路,你也可以了解到如何缩小搜索范围,迅速找到目的资讯的一般方法:目标信息一定含有的关键字(用“ ”连起来),目标信息不能含有的关键字(用“-”去掉),目标信息可能含有的关键字(用“OR”连起来)。

 
7,杂项语法
 
7.1,通配符问题
 
很多搜索引擎支持通配符号,如“*”代表一连串字符,“?”代表单个字符等。Google对通配符支持有限。它目前只可以用“*”来替代单个字符。比如,“以*治国”,表示搜索第一个为“以”,末两个为“治国”的四字短语,中间的“*”可以为任何字符。
 
7.2,关键字的字母大小写
 
Google对英文字符大小写不敏感,“GOD”和“god”搜索的结果是一样的。
 
7.3,搜索整个短语或者句子
 
Google的关键字可以是单词(中间没有空格),也可以是短语(中间有空格)。但是,用短语做关键字,必须加英文引号,否则空格会被当作“与”操作符。
示例:搜索关于第一次世界大战的英文信息。
搜索:“”world war I””结果:已向英特网搜索"world war i". 共约有937,000项查询结果,这是第1-10项 。 搜索用时0.06秒。
 
7.4,搜索引擎忽略的字符以及强制搜索
 
Google对一些网路上出现频率极高的英文单词,如“i”、“com”、“www”等,以及一些符号如“*”、“.”等,作忽略处理。
示例:搜索关于www起源的一些历史资料。
搜索:“www的历史 internet”
结果:以下的字词因为使用过于频繁,没有被列入搜索范围: www 的. 已搜索有关www的历史 internet的中文(简体)网页。 共约有75,100项查询结果,这是第1-10项 。 搜索用时0.22秒。
 
我们看到,搜索“www的历史 internet”,但搜索引擎把“www”和“的”都省略了。于是上述搜索只搜索了“历史”和“internet”。这显然不符合要求。这里我顺便说一点搜索引擎分词的知识。当我们在搜索“www的历史”的时候,搜索引擎实际上把这个短语分成三部分,“www”、“的”和“历史”分别来检索,这就是搜索引擎的分词。所以尽管你输入了连续的“www的历史”,但搜索引擎还是把这个短语当成三个关键字分别检索。
 
如果要对忽略的关键字进行强制搜索,则需要在该关键字前加上明文的“+”号。
 
搜索:“+www +的历史 internet”
结果:已搜索有关+www +的历史 internet的中文(简体)网页。 共约有25,000项查询结果,这是第1-10项 。 搜索用时0.05秒。
 
另一个强制搜索的方法是把上述的关键字用英文双引号引起来。在上例“”world war I””中,“I”其实也是忽略词,但因为被英文双引号引起来,搜索引擎就强制搜索这一特定短语。
 
搜索:“”www的历史” internet”
结果:已搜索有关"www的历史" internet的中文(简体)网页。 共约有7项查询结果,这是第1-6项 。 搜索用时0.26秒。
 
我们看到,这一搜索事实上把“www的历史”作为完整的一个关键字。显然,包含这样一个特定短语的网页并不是很多,不过,每一项都很符合要求。
注意:大部分常用英文符号(如问号,句号,逗号等)无法成为搜索关键字,加强制也不行。
 
8,进阶搜索
 
上面已经探讨了Google的一些最基础搜索语法。通常而言,这些简单的搜索语法已经能解决绝大部分问题了。不过,如果想更迅速更贴切找到需要的信息,你还需要了解更多的东西。
 
8.1,对搜索的网站进行限制
 
“site”表示搜索结果局限于某个具体网站或者网站频道,如
www.sina.com.cn”、“edu.sina.com.cn”,或者是某个域名,如“com.cn”、“com”等等。如果是要排除某网站或者域名范围内的页面,只需用“-网站/域名”。
 
示例:搜索中文教育科研网站(edu.cn)上关于搜索引擎技巧的页面。
搜索:“搜索引擎 技巧 site:edu.cn”
结果:已搜索有关搜索引擎 技巧 site:edu.cn的中文(简体)网页。 共约有608项查询结果,这是第1-10项 。 搜索用时0.05秒。
 
示例:上著名IT门户网站ZDNET和CNET搜索一下关于搜索引擎技巧方面的资讯。
搜索:“"search engine" tips site:
www.zdnet.com OR site:www.cnet.com”
结果:已
www.zdnet.com内搜索有关"search engine" tips OR site:www.cnet.com的网页。 共约有1,040项查询结果,这是第1-10项 。 搜索用时0.09秒。
 
注意,在这里Google有个小BUG。“已
www.zdnet.com内搜索…”,其实应该表述成“已www.zdnet.comwww.cnet.com内搜索…”。
 
示例:搜索新浪科技频道中关于搜索引擎技巧的信息。
搜索:“搜索引擎 技巧 site:tech.sina.com.cn”
结果:已在tech.sina.com.cn搜索有关搜索引擎 技巧 的中文(简体)网页。 共约有163项查询结果,这是第1-10项 。 搜索用时0.07秒。
 
注意:site后的冒号为英文字符,而且,冒号后不能有空格,否则,“site:”将被作为一个搜索的关键字。此外,网站域名不能有“
http://”前缀,也不能有任何“/”的目录后缀;网站频道则只局限于“频道名.域名”方式,而不能是“域名/频道名”方式。
 
8.2,在某一类文件中查找信息
 
“filetype:”是Google开发的非常强大实用的一个搜索语法。也就是说,Google不仅能搜索一般的文字页面,还能对某些二进制文档进行检索。目前,Google已经能检索微软的Office文档如.xls、.ppt、.doc,.rtf,WordPerfect文档,Lotus1-2-3文档,Adobe的.pdf文档,ShockWave的.swf文档(Flash动画)等。其中最实用的文档搜索是PDF搜索。PDF是ADOBE公司开发的电子文档格式,现在已经成为互联网的电子化出版标准。目前Google检索的PDF文档大约有2500万左右,大约占所有索引的二进制文档数量的80%。PDF文档通常是一些图文并茂的综合性文档,提供的资讯一般比较集中全面。
 
示例:搜索几个资产负债表的Office文档。
搜索:“资产负债表 filetype:doc OR filetype:xls OR filetype:ppt”
结果:已搜索有关资产负债表 filetype:doc OR filetype:xls OR filetype:ppt的中文(简体)网页。共约有481项查询结果,这是第1-10项 。 搜索用时0.04秒。
 
 
注意,下载的Office文件可能含有宏病毒,谨慎操作。
 
示例:搜索一些关于搜索引擎知识和技巧方面的PDF文档
搜索:“"search engine" tips OR tutorial filetype:pdf”
结果:已向英特网搜索"search engine" tips OR tutorial filetype:pdf. 共约有12,600项查询结果,这是第1-10项 。 搜索用时0.22秒。
 
我们来看其中的一个结果:
[PDF]Search Engines Tips
文档类型: PDF/Adobe Acrobat – HTML 版
http://www.google.com/press/zeitgeist.html See what people are searching on at Google.com * Search Engine Watch http://searchenginewatch.com/ Some free tips …
 
www.allvertical.com/PromoKits/SearchEngineTips.pdf – 类似网页
 
可以看到,Google用[PDF]来标记这是一个PDF的文档检索,另外,它还给出了该PDF文档的HTML版本,该HTML版保留了文档的文字内容和结构,但没有图片。
 
8.3,搜索的关键字包含在URL链接中
 
“inurl”语法返回的网页链接中包含第一个关键字,后面的关键字则出现在链接中或者网页文档中。有很多网站把某一类具有相同属性的资源名称显示在目录名称或者网页名称中,比如“MP3”、“GALLARY”等,于是,就可以用INURL语法找到这些相关资源链接,然后,用第二个关键词确定是否有某项具体资料。INURL语法和基本搜索语法的最大区别在于,前者通常能提供非常精确的专题资料。
 
示例:查找MIDI曲“沧海一声笑”。
搜索:“inurl:midi “沧海一声笑””
结果:已搜索有关inurl:midi "沧海一声笑"的中文(简体)网页。 共约有27项查询结果,这是第1-10项 。 搜索用时0.34秒。
 
注意:“inurl:”后面不能有空格,Google也不对URL符号如“/”进行搜索。例如,Google会把“cgi-bin/phf”中的“/”当成空格处理。
“allinurl”语法返回的网页的链接中包含所有作用关键字。这个查询的关键字只集中于网页的链接字符串。
 
示例:查找可能具有PHF安全漏洞的公司网站。通常这些网站的CGI-BIN目录中含有PHF脚本程序(这个脚本是不安全的),表现在链接中就是“域名/cgi-bin/phf”。
搜索:“allinurl:"cgi-bin" phf +com”
结果:已向英特网搜索allinurl:"cgi-bin" phf +com. 共约有51项查询结果,这是第1-10项 。 搜索用时0.11秒。
 
8.4,搜索的关键字包含在网页标题中
 
“intitle”和“allintitle”的用法类似于上面的inurl和allinurl,只是后者对URL进行查询,而前者对网页的标题栏进行查询。网页标题,就是HTML标记语言title中之间的部分。网页设计的一个原则就是要把主页的关键内容用简洁的语言表示在网页标题中。因此,只查询标题栏,通常也可以找到高相关率的专题页面。
 
示例:查找日本明星藤原纪香的照片集。
搜索:“intitle:藤原纪香 "写真集"”
结果:已搜索有关intitle:藤原纪香 "写真集"的中文(简体)网页。 共约有315项查询结果,这是第1-10项 。 搜索用时0.15秒。
 
8.5,搜索的关键字包含在网页的“锚”(anchor)链点内
 
所谓“锚”,就是在同一个网页中快速切换链接点。与URL和TITLE类似,Google提供了两种对anchor的检索,“inanchor”和“allincnchor”。对此不作详述。
 
9,其他罕用语法
 
9.1,搜索所有链接到某个URL地址的网页
 
如果你拥有一个个人网站,估计很想知道有多少人对你的网站作了链接。而“link”语法就能让你迅速达到这个目的。

示例:搜索所有含指向华军软件园www.newhua.com”链接的网页。
搜索:“link:
www.newhua.com”
结果:搜索有链接www.newhua.com的网页 。 共约有920项查询结果,这是第1-10项 。 搜索用时0.12秒。
 
注意:“link”不能与其他语法相混合操作,所以“link:”后面即使有空格,也将被Google忽略。另外还要说明的是,link只列出Google索引链接很小一部分,而非全部,所以如果你用Google没有搜到链到你的主页的链接,也不必灰心丧气。
 
 
除了上述功能,link语法还有其它妙用。一般说来,做友情链接的网站都有相似地方。这样,你可以通过这些友情链接,找到一大批具有相似内容的网站。比如说,你是个天文爱好者,你发现某网站非常不错,那么,可以用link语法查一下与之做链接的网站,也许可以找到更多符合你兴趣的内容。
 
9.2,查找与某个页面结构内容相似的页面
 
“related”用来搜索结构内容方面相似的网页。例:搜索所有与中文新浪网主页相似的页面(如网易首页,搜狐首页,中华网首页等),“related:wwwsina.com.cn/index.shtml”。我到现在也不明白这个语法有什么作用,如果有谁知道,请不吝指教。预先感谢。:)
 
9.3,从Google服务器上缓存页面中查询信息
 
“cache”用来搜索Google服务器上某页面的缓存,通常用于查找某些已经被删除的死链接网页,相当于使用普通搜索结果页面中的“网页快照”功能。
其它罕用语法如info、stock等不一一介绍,有兴趣的读者可以参阅Google大全。
 
 
10,图片搜索
 
Google自称可以检索390,000,000张图片,并称自己为“互联网上最好用的图像搜索工具”。从使用结果来看,Google的图片搜索的确不错,但个人以为比AltaVista的还是要差一些,主要体现在检索图片数量比不上AV,匹配度比AV的图片搜索器也差了些。但AltaVista国内用户无法正常访问,因此对中国用户而言,Google的图片搜索引擎已经是最好的了。
 
Google首页点击“图像”链接就进入了Google的图像搜索界面“images.Google.com”。你可以在关键字栏位内输入描述图像内容的关键字,如“britney spears”,就会搜索到大量的小甜甜布兰妮的图片。我目前尚不是很清楚图片的排列标准,不过以观察来看,似乎图片文件名完全符合关键字的结果排列比较考前,然后才按照普通的页面搜索时的标准排列。

Google给出的搜索结果具有一个直观的缩略图(THUMBNAIL),以及对该缩略图的简单描述,如图像文件名称,以及大小等。点击缩略图,页面分成两祯,上祯是图像之缩略图,以及页面链接,而下祯,则是该图像所处的页面。屏幕右上角有一个“Remove Frame”的按钮,可以把框架页面迅速切换到单祯的结果页面,非常方便。
 
Google图像搜索目前支持的语法包括基本的搜索语法如“ ”、“-”、“OR”、“site”和 “filetype:”。其中“filetype:”的后缀只能是几种限定的图片类似,如JPG,GIF等。
 
示例:查找新浪网上本拉登的图片
搜索:“拉登 OR 拉丹 site:sina.com.cn”
结果:搜索有关 拉登 OR 拉丹 site:sina.com.cn 的图片。 共有6项查询结果,这是第1-6项。 搜索用时0.36秒。
 
这里我想说明一点的是,images.google.com作为专门的图片搜索引擎,实际上有其特殊的用途。
 
举个例子,互联网上本拉登的照片成千上万,但是,它们都是分散的,往往随机的分布于各种新闻报道中。如果用搜索图片库的方式(最容易想到的如“Ben Ladin photo”),来搜索本拉登的照片,显然是不恰当的,因为很少有人专门为拉登建一个在线相册。在这个时候,images.google.com就派上用场了。

但是,如果查找的图片在网上有很多主题“gallary”,如诸多电影电视明星的照片,则明显就不适合用images.google.com来查找了。
images.google.com对于很多报纸杂志的编辑,绝对是一个雪中送炭式的工具。比如要在某个版面上插一张专题图片,用google的图片搜索功能几秒钟就可以搞定。
 
综上,可以有这样的一般性结论:如果要搜索的图片是分散的,则用google图片搜索;如果要搜索的图片通常是处于某个图片集合中的,则不适合用google图片搜索。
 
11,目录检索
 
如果不想搜索广泛的网页,而是想寻找某些专题网站,可以访问Google的分类目录“
http://directory.Google.com/”,中文目录是“http://directory.Google.com/Top/World/Chinese_Simplified/”。分类的网站目录一般由专人负责,分类明确,信息集中。因此读者应该养成这样的习惯:首先考虑所需要的信息能否在一个专门主题的网站上找到。不过需要说明的是,用目录检索,往往需要用户对查询的领域很熟悉。否则,连查询的内容属于哪个类目都不知道,目录浏览也就无从谈及了。
 
目前Google使用的分类目录采用了ODP的内容。“Open Directory Project”是网景公司所主持的一项大型公共网页目录。由全世界各地的义务编辑人员来审核挑选网页,并依照网页的性质及内容来分门别类。因此,在某一目录门类中进行搜索往往能有更高的命中率。另外,Google根据其专业的“网页级别”(PageRank)技术对目录中登录的网站进行了排序,可以让一般的检索更具高效率。
 
示例:查找一下介绍搜索引擎方面的中文网站
搜索:先进入中文简体分类目录,再进入“计算机”目录,再进入“互联网络”子目录,再进入“搜寻”子目录。我们看到在“World > Chinese Simplified > 计算机 > 互联网络 > 搜寻”下,还有两个子目录“分类目录 (33) 搜索引擎 (10)”,以及6个相关网站。显然,这些都是我们所需要的信息。
 
除了用鼠标层层点入,也可以在目录中检索。比如,在上例的“互联网络”目录下,选中“只在互联网络中搜索”选项,在搜索栏内填入“搜索引擎”进行搜索。
 
结果:在分类Google 网页目录项中搜索搜索引擎。 共约有387项查询结果,这是第11-20项 。 搜索用时0.09秒。
 
可以看到,上述查询结果比普通的检索更有效,因为在分类“互联网络”下进行搜索剔除了很多不相关的诸如新闻之类的无效信息。不过,对于中文用户而言,现在最大的问题是志愿的中文目录编辑太少,导致收录站点太少,因此搜索结果范围显得过于狭隘。但愿这个问题能随着Google以及ODP项目在国内名声的响亮而能得到改观。

12,新闻组搜索
 
新闻组有详尽的分类主题,某些主题还有专人管理和编辑,具有大量的有价值信息。由于新闻组包含的信息实在是海量,因此不利用工具进行检索是不大可能的。DEJA一直是新闻组搜索引擎中的佼佼者。2001年2月份,Google将DEJA收购并提供了所有DEJA的功能。现在,除了搜索之外,Google还支持新闻组的WEB方式浏览和张贴功能。
 
进入Google新闻组“
http://groups.Google.com/”,你有两种信息查找方式。一种是一层层的点击进入特定主题讨论组,另一种则是直接搜索。现在,我们进行一个最简单的搜索试验,查找一下新闻组中关于山顶洞人的讨论信息。
 
搜索:“山顶洞人”
结果:在各群组内搜索 山顶洞人 共约有2,400项查询结果,这是第1-10项 。 搜索用时0.94秒。
 
搜索结果默认按照“留言内容”排列,但是你也可以点击“依照日期”按钮,让帖子按照发布日期排列。
 
因为新闻组中的帖子实在是多,而且又涉及一些普通搜索所没有的语法,所以建议使用“高级群组搜寻”进入高级搜索界面。新闻组高级搜索提供留言内容、分类主题、标题、留言者、留言代码、语言和发布日期作为条件进行搜索。其中作者项指作者发帖所用的唯一识别号电子信箱。
 
13,Google的其他杰出功能
 
13.1网页快照
 
网页快照是Google抓下来缓存在服务器上的网页。它有三个作用:
第一, 如果原地址打开很慢,那么可以直接查看Google缓存页面,因为Google服务器速度极快。
第二, 如果原链接已经死掉或者因为网络的原因暂时链接不通,那么可以通过Google快照看到该页面信息。当然,快照内容不是该页最新页面。
第三, 如果打开的页面信息量巨大,一下子找不到关键词所在位置,那么可以通过Google快照,因为快照中Google用黄色表明关键字位置。
 
 
13.2,集成化的工具条
 
为了方便搜索者,Google提供了工具条,集成于浏览器中,用户无需打开Google主页就可以在工具条内输入关键字进行搜索。此外,工具条还提供了其他许多功能,如显示页面PageRank等。最方便的一点在于用户可以快捷的在Google主页、目录服务、新闻组搜索、高级搜索和搜索设定之间切换。欲安装Google的工具条,可以访问“
http://toolbar.Google.com/”,按页面提示可以自动下载并安装。不过,Google工具条目前只支持IE5.0以上版本。
对于经常进行网络搜索者而言,Google工具条实在是必备的东西!!
 
13.3,单词英文解释
 
写英文文章的时候,最头疼的事情就是对某个英文单词的用法不确定。现在有了Google,一切就迎刃而解了!无论你是想查找某个生词的意思还是想了解某个单词的用法,均可使用在线词典。
 
进入英文Google,输入你要查的单词。举个例子,我想查一下suggest的用法。结果如下:“Searched the web for suggest. Results 1 – 10 of about 8,000,000. Search took 0.08 seconds. ”注意看上面句子中,单词suggest下出现了一个横线,点击这个链接,就跳转到另外一个网站“
http://www.dictionary.com/”,Google已经把单词提交给该网站的查询脚本。看看这个网站所提供的详尽解释吧。
 
13.4,网页翻译
 
你懂英文,但是你不见得就懂德文、法文、拉丁文。如果搜索出来的页面是这些语言怎么办?呵呵,Google提供了网页翻译功能!!虽然目前只支持有限的拉丁语、法语、西班牙语、德语和葡萄牙文,但是我不得不承认,这是个杰出功能。
试着做以下搜索:“big bang site:fr”。这个表示查找关于宇宙大爆炸的法文网页。看第一条结果:
The Big Bang Website – [ Translate this page ]… A propos de Big Bang. Le dernier numéro en date. Les anciens numéros.Autres activités. Concerts progressifs en France. Emissions de radio. Liens. 
perso.club-internet.fr/calyx/bigbang/ – 3k – Cached – Similar pages
有点晕。没关系,点击“Translate this page”按钮。再看结果,嗯,大致能看明白,这原来是个叫“big bang”的乐队的网站,与大爆炸无关…
机器翻译是一个很前沿的人工智能课题,想指望翻译出来的结果跟专门用英语撰写的内容是不可能的。但西文间的互相转译比中英文机译强得多得多了。至少能看明白。
 
13.5,单词纠错
 
笔者记忆力很差,英文单词经常拼写错误。但Google有纠错功能。比如在写上文的时候,我要用到英文单词“tutorial”,我只是依稀记得好像是“tatorial”的样子,但不肯定,于是用Google查了一下,它马上提醒:“您要找的会不会是:tutorial ”,呵呵,正是这个单词。
 
13.6,繁简转换
 
对中文用户而言,常希望能同时检索繁体和简体信息。Google能做到这一点。Google默认使用繁简自动转换功能,因此你输入的简体关键字也将被转换成繁体做检索。这样省了不少力气。当然,如果你不希望这样的话,也可以在“使用偏好”中把这个选项关掉。
 
13.7,搜索结果过滤
 
网络上的成人内容浩如烟海,而且很多站点具有欺骗或者其他不良企图,浏览者很容易掉入其中的陷阱。为此,Google新设立了成人内容过滤功能,见Google的设置页面,
http://www.Google.com/preferences,最底下有一个选项SafeSearchFiltering。不过,中文状态下的Google尚没有这个功能。
 

14,Google尚未发布的一些新特性和功能
 
14.1,对网页更新日期做出限定“daterange:”
 
评价一个搜索引擎的好坏,更新频率是一个很关键因素。通常情况下,我们总希望能找到最新的网页。Google已经开发了对更新日期做限定的搜索语法,但目前还未公布。而且比较麻烦的是,Google现在支持的日期格式为julian(凯撒日)格式,把通用日期数值切换成julian格式需要借助第三方网站:
http://www.tesre.bo.cnr.it/~mauro/JD/。不过,在下面这个自称是“Google终极搜索界面”的网页上,你已经可以利用Google的这项新特性了,它自动提供日期转换功能。
Google Ultimate Interface:
http://www.faganfinder.com/google.html
Google为什么要这样做呢?也许是在测试阶段,不想让太多人使用吧。
 
14.2,新闻搜索“
http://news.google.com/”
 
Google的新闻搜索尚在B测试阶段,但使用起来已经非常不错了。新闻首页按头条新闻,各国新闻,以及不同领域做了分类。你可以通过Google搜索各大门户和新闻网站的新闻,简单、快捷、方便。遗憾的是,目前Google新闻只检索英文信息。
 
 
14.3,分类广告搜索“
http://catalogs.google.com/”
 
这也在B测试阶段。主要是对电子分类广告做检索。广告页为JPG图片格式。
 
14.4,其它Google的最新发展动态
 
想了解Google公司的工程师们都在忙些什么吗?去看一下Google实验室(
http://labs.google.com/)吧。Google的最新设想都在这个地方向访问者展现出来。现在处于发展和试验阶段的新功能有:术语查询、语音查询、键盘查询等等。
网络工程师和程序员可以看看这个地方:
http://www.google.com/apis/,我想可以让你喜出望外的。
 
14.5,一个有趣的地方
 
想看看世界各国网民都用Google搜索什么信息么?到
http://www.google.com/press/zeitgeist.html看一下就知道了。从这些资讯中,你大致可以了解到世界热点和流行时尚走向。
 
15,后记
 
这个文章4.0版本与3.0版本相比,变更很大,主要把一些与Google无关的东西删除了,另外随Google的变化作了一些修正,并增加了一些Google尚未发布的新功能。关于搜索技巧和搜索实例,是各个搜索引擎共通的东西,是搜索者长期的经验积累,要写出来,是件工程很浩大的事情,因此在这个小文章中我就不献丑了。
随着时间的推移,我发现搜索已经成为网络生活的一部分。工作需要搜索技术文档、客户信息;购物需要搜索商品信息和指南;娱乐需要搜索相关背景资料和图片。
搜索已经变得无处不在,而Google则相应的成了工作和生活中的一个必备工具。套用雅虎的一句广告词,我们也许应该这样说:“今天你Google了吗?”

www.pencilmation.com

这篇文章比较详细具体的介绍了各种Linux发行版本之间的区别,对于正确了解目前各种*nix系统很有帮助。文中说道,”很多人听说过GNU/Linux(通常称作“Linux”),但在分辩各种不同版本之间的区别方面会有困难。本文将介绍它们的差别在哪里,以及GNU/Linux是如何区别于类似的系统。“

http://www.softwareinreview.com/cms/content/view/26/1/


Written by Jem Matzan   
Monday, 09 January 2006

A lot of people have heard of GNU/Linux (more commonly referred to as just "Linux") and are having trouble finding out what the differences are between different versions — or distributions — that are available. This article will show how they differ, and how GNU/Linux differs from similar operating systems.

What Is GNU/Linux?

GNU/Linux is a modular operating system that looks and acts like a more intelligently programmed, up-to-date Unix. The term itself — GNU/Linux — is extremely vague and doesn’t exist in the literal sense. You don’t go to the store and buy GNU/Linux; instead you buy a software distribution (or distro for short) that uses GNU/Linux as its basis. So while you can’t buy "Linux" at the store, you can buy SUSE Linux or Linspire.

Distributions can fundamentally differ in several ways:

  • Base operating system
  • Software management and updating
  • Hardware management
  • Desktop environment and theme
  • Proprietary extras

The sections below will cover each of these topics in depth. If there is one particular area that you are confused about, feel free to skip down to the appropriate section. The next topic will cover how GNU/Linux differs from Unix and other Unix-like operating systems.

BSD, Unix, OS X, Linux?

There are many Unix-like operating systems and derivatives. Which ones are which?

Category OSes Origin of code?
GNU GNU/Linux, GNU/HURD, GNU/Mach, GNU/BSD Free Software Foundation; kernels developed separately except HURD. The Linux kernel was originally written by Linus Torvalds, and is currently maintained by him.
BSD FreeBSD, OpenBSD, NetBSD, DesktopBSD, BSD/OS UC Berkeley, originally; each project has been developed separately since the early-mid 1990s, however.
Unix Solaris, AIX, IRIX, HP/UX, Tru64, UnixWare, OpenServer Bell Labs (AT&T) developed the original Unix code. UNIX is now a trademarked operating system certification program instead of an operating system, and no longer requires that a compliant OS contain AT&T Unix source code to achieve brand certification. Despite that, all of the extant Unix derivatives are compliant with at least one published UNIX standard.
Darwin Darwin, OS X Based on the NeXTSTEP operating system, which used the Mach kernel and some FreeBSD programs and networking code. OS X is developed from Darwin.
Minix Minix Originally written by Andrew Tanenbaum, but now mostly developed by a handful of others

GNU/Linux is only one possible combination of the GNU operating system with a separate kernel. GNU’s own kernel is HURD, but it’s been in development for a long time and is nowhere near ready for production. GNU/BSD and GNU/Mach exist, but more for experimental purposes than anything else. So in effect, GNU/Linux is the only GNU-based operating system that matters. Theoretically, you could use the operating system components from BSD and eliminate GNU entirely (or almost entirely) from GNU/Linux, but that would — again — be purely an academic pursuit.

Of the above-listed operating systems, only GNU/Linux has a variety of software distributions. The others are software distributions in themselves. The one exception is Solaris, which is based on code from the OpenSolaris project. There is at least one other OpenSolaris-based distribution aside from Solaris, and others are probably in development.

Most of these operating systems are similar in superficial ways. All are command line-based at heart, even if many of them default to graphical interfaces. Most of them share the majority of their terminal commands — or have commands that have largely similar functionality and syntax — so if you know one system very well, it is not difficult to learn a different one. GNU’s userland utilities were improved replacements of Unix commands; BSD was originally developed from Unix source code, so its userland utilities started out as clones of Unix commands and have evolved from there. Some of these OSes can use the same software programs if properly configured. Some are restricted to specific hardware architectures, while others are extraordinarily versatile in terms of what computers they can operate on.

The amount of code- and program-sharing among all of these operating systems varies. All of them are guaranteed to have either BSD code integrated somewhere, or at least one GNU utility (usually the GNU Compiler Collection, the BASH terminal program, or the Emacs text editor, among many others) included by default.

Base operating system differences

Among GNU/Linux distributions, there can be many variances in the base operating system (kernel and userland utilities). Some have unique methods of managing startup scripts; others mimic BSD or Unix. You can know everything there is to know about creating and modifying init scripts on Red Hat Enterprise Linux, then be totally lost when trying to implement the same changes on Gentoo Linux.

Almost all distros make their own small, custom changes to the Linux kernel in order to accommodate other changes or additions that the distribution maintainers want to make. This makes each distro’s kernel unique, and probably incompatible with other distributions. Commercial desktop GNU/Linux distros usually have extensively hacked kernels that support proprietary programs like Win4Lin, VMware, and proprietary hardware drivers.

GNU/Linux distributions are generally binary compatible with each other. That means that a program that will work on SUSE Linux will also work on Xandros and Linspire and any other distribution of the same generation and hardware architecture. Like all other operating systems, programs that are compiled for one architecture will not work on others. The only exception is 32-bit x86 binaries, which will work with most 64-bit AMD64 and Intel EM64T computers.

Software management and updating

Chances are, if you’ve selected the right GNU/Linux distribution for your needs, you won’t have to add any extra software to it. If you do, most distros have software repositories that contain thousands of extra software packages that have been certified to work with your configuration. All you have to do is figure out which programs you want, select them from a list, and everything is installed for you. It’s much like using Windows Update.

Also like Windows Update, all major GNU/Linux distributions come equipped with a software update framework. Unlike Windows Update, however, GNU/Linux updaters will find patches and bug fixes for all of the software on your computer — not just the basic operating system. Each distribution has its own specialized update tools, but they are all generally easy to use.

On a more basic level, GNU/Linux distributions install software in one of two ways: by compiling from source code, or — more commonly — by installing precompiled binary packages.

Source-based distributions like Gentoo and Arch still have a software management framework like the big fancy commercial distros, but you have extra options. You can add in compiler flags to make programs a little faster or use less memory, or you can build applications with hooks to other programs so that your software is more interoperable. Binary distributions make guesses as to what your needs will be, and try to cover all of the bases by compiling everything in. In the real world, you’re not going to notice much of a difference by adding compiler optimizations and other options, but if you like tinkering with your computer, you’ll enjoy the experience.

Source-based distros will take a lot longer to manage because it takes time to compile large programs. You can use binary packages to get started, but updates are applied by compiling from source code. A binary installation of the KDE desktop environment takes only slightly longer than the time consumed downloading the binaries from the Internet, but compiling the full KDE system from source can literally take days. The same can be said of such behemoths as OpenOffice.org, GNOME, and Mozilla.

Binary distributions almost exclusively use two package formats for programs: RPM (a recursive acronym for RPM Package Manager), and DEB (short for Debian, a GNU/Linux distribution that is commonly used as a basis for others). In the old days, you may have had to go searching for RPMs or DEBs of programs that you wanted. In this day and age, however, you use your package manager to find and retrieve them for you. In the event that you must install one of these packages by hand, there are graphical alternatives to the standard command line tools for installing them. There are even tools available to use DEB packages on RPM-based distros, and vice-versa. Usually programs are packaged in both formats, though.

Red Hat (and Fedora Core), SUSE, and Mandriva are three well-known distributions that use RPM packages. Linspire, Xandros, Debian, Ubuntu, and Mepis are some of the most popular DEB-based distributions. Both package formats are heavily entrenched in these and other distributions; neither seeks to replace the other.

Occasionally you might see someone on a message forum or mailing list complaining about RPMs and "dependency hell." This is because individual packages usually depend on other packages, and that means tracking down several RPMs to install one program, then doing some command line kung-fu to install them in the right order. Again, this is the old way of doing things — nowadays you let your package manager do the work for you.

Popular package managers include:

Hardware management

Commercial GNU/Linux distributions include software that automatically detects and installs the proper drivers for all of your computer hardware and peripherals. Usually it works perfectly without any user intervention necessary. Sometimes it encounters unsupported hardware, or hardware that requires a newer kernel or driver. Some distros share the same autodetection and hardware management code, some have a totally unique hardware management framework.

Non-commercial distros are usually good at detecting hardware, but never contain proprietary drivers for ATI and Nvidia video cards, some kinds of wireless network chips, RAID cards, and video capture cards. Drivers for these devices require licensing and distribution agreements that non-commercial distribution developers are generally unwilling to negotiate, agree to, or pay for. This means that if you want to take full advantage of your 3D graphics card, you will have to download and install a proprietary video driver. A simple Google search will usually yield installation instructions. Again, this is best done by adding software repository sources to your package manager instead of installing them by hand.

Desktop environments and themes

The two primary desktop environments in the world of GNU/Linux are GNOME and KDE. Most distros support both, and usually default to one or the other. There are also window managers, which don’t have the large number of integrated programs, but are usually considered to be more responsive and efficient on slower computers. Which one you should use is entirely a matter of preference.

Aside from desktop environment, each distribution has its own special color, icon, login, desktop, and menu theme. You can change the theme — there are several dozen good themes available, and more coming out every week — so don’t let the default look and feel of the desktop discourage you. You can make KDE look almost exactly like Windows XP, and you can make GNOME look almost exactly like Apple OS X. Window managers are even more customizable, but often require you to edit configuration files by hand.

Proprietary extras

In addition to the proprietary hardware drivers mentioned previously, there are also proprietary software extras that are an important complement to the desktop computing experience. Most people will, at one time or another, need to access a PDF, Java applet, Flash animation, or video file on the World Wide Web. And when they need to see those files, they need browser plugins to do it. Unfortunately, all of the most functional plugins for these technologies are not free-as-in-rights, and won’t be included with the majority of GNU/Linux distributions. If you want them, you have to either choose a commercial distro (there are some recommendations in a section below), or add them by hand. As I’ve said before, adding them by hand is not necessarily difficult, but it will take some reading and research to get everything working perfectly. If you are not prepared to do this, do not choose a GNU/Linux distro that does not include these extras.

Recommendations

If you don’t know what you’re doing, don’t choose distributions that require a lot of legwork to configure basic services or install extra software. If you are new to GNU/Linux and want a great desktop experience, I recommend trying these distros (listed in no specific order):

All of these distros will cost you something — usually under US $100. A lot of experienced GNU/Linux enthusiasts will recommend non-commercial distributions like Ubuntu, Fedora Core, or Debian. These are good distros and are available free of charge, but require that you add proprietary video drivers and Web browser plugins by hand, and don’t have the same kind of automatic hardware management that the four distros I listed above have. That means that you could end up rather frustrated by your GNU/Linux experience. Also stay away from the open source edition of SUSE Linux — that is also missing many of the proprietary extras that you’re used to in Windows or OS X (the commercial version of SUSE does have plugins for Java, Flash, and PDF). It’s not tough to add them if you follow this guide, but many people are not prepared to get that technical with their software.

If you’re looking for a distro that is more suited to server use, try these:

Again, people will argue that other distros or Unix-like OSes are better, but the above-mentioned distributions are easy to install, configure, and manage, and come with extensive documentation and commercial support. You will have a much easier time with them, and you’re better off going with one of these if you’re new to GNU/Linux or Unix-like operating systems in general. You can make virtually any GNU/Linux distribution into a server of any kind; it’s just a matter of how much work you have to do to prepare and maintain it. If you don’t want to do a lot of work, choose one of the above distros.

Non-commercial desktop distributions of note include:

If you would prefer more of a challenge, as either a server or a desktop OS, try these distros:

Lastly, if you would like to see what a GNU/Linux desktop can look like, you can download Knoppix, a distro that runs entirely from a CD. You write the ISO file to a blank CD-R disc, then restart your computer with the disc in the CD drive. You’ll run a whole distribution right from the CD. When you’re done playing around, just select the Shutdown menu option, remove the CD from the drive, and restart — nothing will be written to your hard drive.

Copyright 2006 Jem Matzan.



今日又是一个周末,南昌的天气不错,冬天的太阳照在身上整个人都感觉慵懒起来。在网上闲逛之时发现了SVN,虽然当前VSS或CVS已足以使用,权当了解了解,以备后用。
Subversion 系统 (转自UNIX中文宝库    http://www.douzhe.com )

多年来,并发版本系统(CVS)一直是在Linux上管理代码或者文本的标准。作为基于RCS上建立但却允许多用户协作的系统而言,CVS记录所有文件的修改信息。这对于程序开发者、网络设计者和系统管理员而言,是非常有用的。
然而,CVS逐渐显示出它的衰老,出现了相似的源代码管理软件。然而大多这种东西都是以牟利为主要目的的。
Subversion就是一种相对新鲜的源代码管理系统。虽然事实上它还在不断的反展之中,但是Subversion已经是一个非常稳定而且成熟的产品。它是一个全新的系统,其功能可以和CVS媲美,同时,它要比CVS更直观,更容易操作。本文就Subversion的安装和一些特殊功能作一个介绍。
安装服务器端

下载Apache和SVN源码包
从官方网站台下载httpd-2.0.52.tar.gz,subversion-1.1.1.tar.gz
(因为redhat 9默认安装的Apache没有并包含–enable-so选项,所以无法产生mod_dav_svn.没有这个模块,SVN就无法采用http方式运行,所以必须重新编译新的Apache)
以root身份执行:
#tar zxvf httpd-2.0.52.tar.gz
#cd httpd-2.0.52
#./configure –enable-dav –enable-so –enable-maintainer-mode
#make
#make install
此时会产生/usr/local/apache2目录,接着执行:
#tar zxvf subversion-1.1.1.tar.gz
#./configure –with-apxs=/usr/local/apache2/bin/apxs
# rm /usr/local/lib/libsvn*
# make clean && make && make install

此时会自动在/usr/local/apache2/conf/httpd.conf添加
LoadModule dav_svn_module  modules/mod_dav_svn.so
安装完成后,运行svnserver –version确认版本为1.1.1。
SVN服务器安装结束.

安装客户机端

window客户机:
直接安装TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi,方法同一般软件安装相同。
Linux客户机:
方法舆安装服务器相同。
(注意redhat 9默认安装的SVN版本为0.17.1,它的客户端命令svn无法舆新的SVN服务器通讯,必须重新安装)

建立仓库Repository

Subversion 的档案库是个中央仓储, 用来存放任意数量项目的受版本控管资料,建立方法很简单
#svnadmin create path/to/repos
举个例子:
#svnadmin create /home/mysvn
#chown –R nobody /home/mysvn
运行服务器

Subversion服务器有两种运行方式,一是可以作为Apache 2.0的一个模块, 以WebDAV/DeltaV协议与外界连通;另外,也可使用Subversion 自带的小型服务器程序svnserve。该程序使用的是自带的通讯协议,可以很容易地透过SSH以
以http方式运行
在/usr/local/apache2/conf/httpd.conf中加入:

 DAV svn
 SVNPath /home/mysvn

在服务器的浏览器中输入网址:
http://localhost/svn/repository/
这时候,你会看到这样的显示:

这表明服务器已经以http方式正常运行了.
以svnserve方式运行
这种方式的运行又可以分为以下两种(这和vsftp有些相似)
1) standalone mode
直接运行 #svnserve –d
运行 lsof -i :3690可以看到SVN服务器已经在运行
2) xinetd mode
在/etc/xinetd.d/下生成svnserve文件,内容如下
service svnserve
{
disable = no
socket_type             = stream
protocol                 = tcp
wait                    = no
user                    = apache
server                  = /usr/local/bin/svnserve
server_args             = -i
}
编辑 /etc/services 档,加入底下两行:
svnserve        3690/tcp                        # Subversion svnserve
svnserve        3690/udp                        # Subversion svnserve
重启xinetd服务,运行 lsof -i :3690可以看到SVN服务器已经在运行

客户机访问

客户机的访问方法舆服务器的运行方式有直接关系
window客户机:
1) 服务器以http方式运行
安装完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi后,在你想工作的目录下点击右键,执行checkout,按上图输入即可。

2) 服务器以svnserve方式运行
同上的区别只是URL of repository变为 svn://svn服务器ip/home/mysvn
或者 svn+ssh://svn服务器ip/home/mysvn
(注意不是//svn服务器ip//svn/repository)
linux客户机:
1) 服务器以http方式运行
执行 #svn checkout http: //svn服务器ip/svn/repository
2) 服务器以svnserve方式运行
执行 #svn checkout svn://svn服务器ip/home/mysvn
或者 #svn checkout svn+ssh://svn服务器ip/home/mysvn

客户认证机制

这舆服务器的运行方式有关
服务器以http方式运行
比如我们想给 Sally 与 Harry 送交存取档案库的权限. 首先, 我们必须把它们加入到密码档案.
# ### 第一次: 以 -c 建立档案
# htpasswd -c /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
# htpasswd /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
#
接着,在/usr/local/apache2/conf/httpd.conf的加入:

 DAV svn
 SVNPath /home/mycvs
 AuthType Basic
 AuthName "Subversion repository"
 AuthUserFile /etc/svn-auth-file
Require valid-user

重新激活 Apache后,如果有人要访问SVN服务器,系统会要求他输入用户名和密码。 只有输入Sally 或Harry的用户名和相应的密码,才可以对档案库进行修改和访问

服务器以svnserve方式运行
默认下客户可以以匿名方式通过svn://方式任意访问档案库,为了限制其权限,比如只允许读操作,可以通过修改档案库conf子目录中的svnseve.conf文件来实现。
#vi /home/mysvn/conf/svnseve.conf
修改[general]字段下内容为:
anon-access = read
如果设为anon-access = none,则匿名用户不可以通过svn://方式访问档案库
为了实现用户认证,我们一般采用svn+ssh://访问机制。
首先在svnseve.conf文件设置anon-access = none禁止匿名用户通过svn://方式访问档案库,然后在其后加入
auth-access = write
auth-access 是限制有援权的使用者(使用svn+ssh:// 来登入) 的存取权限,我们设为是可以读写。
当用户通过svn+ssh://访问时,服务器会自动激活ssh认证机制,要求用户输入密码,对于window用户来说还需要安装第三方软件openssh,才可以采用这种机制
Hook scripts
挂勾 (hook) 是改动档案库时所触发的程序, 比如当你提交更动前,会先触发pre-commit,提交更动后,则会触发post-commit,我们可以利用hook来实现一些自动控制。档案库的hook 子目录中, 预设是放置各个档案库挂勾的模板:
post-commit.tmpl          
pre-revprop-change.tmpl
post-revprop-change.tmpl  
start-commit.tmpl
pre-commit.tmpl        
如果要使用这些hook,就必须把它的后缀名.tmpl去掉,拷贝为
post-commit          
pre-revprop-change
post-revprop-change  
start-commit
pre-commit
这里主要介绍pre-commit和post-commit(事实上它们就是在特定的情况下被触发的普通的shell程序,至于shell的内容由用户自己随意编写,但是要保证名称不能改动)
pre-commit
本挂勾执行的时间为异动完成之后, 送交之前.档案库会传递两个自变量给这个程序: 档案库的路径, 以及准备送交的异动名称. 如果程序传回一个非零的结束值, 送交会被中止, 而异动会被删除.

如何应用pre-commit我们不妨举个例子:
假如有一个项目由Mail Team,Login Team和PHP Team三个Team共同通过SVN系统开发完成。当项目准备发布的时候,PM人员发现Mail功能方面存在一些 bug,需要Mail Team去修改,为了防止其它Team的人员修改系统,我们可以在任何改动档案库的企图之前用pre-commit去检查log message信息,(因为任何更动档案库的操作都必须提供log message信息,PM可以事先舆Mail Team约定好一个log message),如果舆pre-commit中设定的log message不相符,则不能提交更动。
pre-commit源程序如下:
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/local/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
  grep –w "bug1234" > /dev/null || exit 1
exit 0
本例中的log message为”bug1234”,任何人想要提交更动就必须用 –m “bug1234”参数,采用-m “bug123”,-m “bug12345”都会提交失败。
post-commit
本挂勾执行的时间是在异动送交, 新修订版被建立之后. 大多数的人用这个挂勾来寄出关于本次送交的电子邮件, 或是建立档案库的备份. 档案库会传递两个自变量给这个程序: 档案库的路径, 以及新建立的修订版号. 本程序的结束码会被忽略.

Subversion 源码树的 tools/hook-script 目录中包含了一个 commit-email.pl 命令,可以用来寄送包含描述指定送交的电子邮件. 这个邮件包含了更动路径列表, 该送交所对应的记录讯息, 使用者, 送交的日期,以及一个以 GNU diff 样式表示的本次更动差异. 我们可以将这个程序舆post-commit这个hook搭配起来使用来实现档案库更动后自动mail给相关人员的功能。
post-commit源程序如下:
#!/bin/sh
REPOS="$1"
REV="$2"
commit-email.pl "$REPOS" "$REV"
PM@yourdomain.com
##需要指明commit-email.pl的绝对路径

特殊性质

除了对你的目录与档案进行版本控制之外, Subversion 还提供了一个接口, 可用来新增, 修改, 以及移除已纳入版本控制的目录与档案的版本控制描述资料. 我们称这个描述资料为性质,在这里我主要介绍以下几个比较重要的特殊性质
svn:mime-type
svn:mime-type 性质在 Subversion 中有很多作用. 除了作为储存档案的多用途网际网络邮件延伸语法 (MIME) 分类之外, 这个性质的内容还会决定几项 Subversion 的行为特征.
举个例子, 如果 svn:mime-type 性质设为文字的 MIME 类别 , Subversion 会假设该档的内容是二进制(也就是人类看不懂的资料). Subversion 提供的功能中, 其中一项是在从服务器收到工作档的更新中, 依文字内容与文字列进行合并. 但是对含有二进制资料的档案, 根本就没有 “文字列” 的概念. 因此, Subversion 对这些档案在更新时, 不会试着进行内文合并. 它改用另一种方式。
一般来说Subversion 在执行 svn import 与 svn add 子命令时, 会使用二进制侦测运算法的方式来协助使用者.但是如果 Subversion 猜错了, 或是你希望将 svn:mime-type 设定成更为明确的值(可能是 image/png)你都可以移除或是手动编辑这个性质.
svn:ignore
svn:ignore 性质包含了档案样式的列表, Subversion 处理时会忽略. 它可以与执行时期设定的 global-ignores 选项一起工作, 以便在类似 svn status 的命令中过滤掉未纳入版本控制的目录与档案.
我们知道新增的文件和目录必须透过 svn add 命令, 才会被纳入 Subversion 的管理. svn status 命令会将工作复本中未纳入版控制目录与档案显示出来.
$ svn status calc
M     calc/button.c
?      calc/calculator
?      calc/data.c
?      calc/debug_log
?      calc/debug_log.1

在这个范例中, 用?标注出来的文件就是未纳入版控制的档案.如果你不想每次执行 svn status 时, 都看到这些档案, 那幺svn:ignore 性质就是解决方案。你可以透过 svn propedit svn:ignore calc 对 calc 目录加上一些忽略样式. 举个例子,将以下的值作为 svn:ignore 性质的新内容:
calculator
debug_log*
加上这个性质后再执行你的 svn status 输出便会不同:
$ svn status
M     calc
M     calc/button.c
?      calc/data.c
现在, 所有不想看到的东西都从输出中消失了!


svn:keywords
Subversion 具有取代关键词(有关纳入版本控制档案的有用信息)进入档案内容的功能.
举个例子, 假设你有个文件, 想要在里面显示最近一次修改的日期. 你可以把这个负担加诸文件的作者身上, 让他们每一次送交更动之前, 顺便添加最近一次修改日期的部份. 但是迟早有人会忘记这件事. 换个方式, 只要叫 Subversion 对 LastChangedDate 关键词进行关键词取代即可.
Subversion 定义了可用来进行取代的关键词列表. 这个列表包含了以下五个关键词:
LastChangedDate
LastChangedRevision
LastChangedBy
HeadURL
Id
如果只把关键词定位锚加进档案里的话, 什幺事也不会发生.要告诉 Subversion 是否该对某一个档案进行关键词取代,得使用svn:keywords这个性质。当它被设定时, 它会控制该档案哪个关键词应该被取代.
举个例子, 假设你有一个纳入版本控制的档案, 名为 weather.txt, 看起来像这样:
Here is the latest report from the front lines.
$LastChangedDate$
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
如果没有设定该档案的 svn:keywords 性质, Subversion 什幺事也不会作. 让我们开启关键词 LastChangedDate 的内容取代.
$ svn propset svn:keywords "LastChangedDate Author" weather.txt
property `svn:keywords’ set on ‘weather.txt’
$
在你送交了这个性质更动之后, Subversion 会显示为:
Here is the latest report from the front lines.
$LastChangedDate: 2002-07-22 21:42:37 -0700 (Mon, 22 Jul 2002) $
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
这样不管谁提交这个文件,都会在里面显示最近一次修改的日期。
svn:eol-style
除非另外指定版本控制档案的 svn:mime-type 性质, Subversion 会假设档案包含人类可读的资料.这对于列尾符号 (EOL) 是很不幸地, 因为不同的操作系统会使用不同的符号来表示一列的结尾. 举个例子, 一般用在 Windows 平台上的列尾符号是两个 ASCII 控制字符 :返回字符 (CR) 与换行字符 (LF). 但是 Unix 软件就只使用 LF 字符来表示一列的结尾.这样以来window客户提交的档案中的CR 字符在 linux客户端会显示成 ^M, 而linux客户提交的档案中CR 字符在 Windows 客户端会被忽略。结果将档案里的所有文字列合并成一个超长的文字列, 这是因为没有返回CRLF字符组合的存在来表示一个换行。 解决的方法是 svn:eol-style 性质. 当这个性质设定为native时, Subversion 会根据系统的类型来决定是否对该档案的结尾进行自动处理。.
svn:externals
有的时候, 一个工作复本可能包含了数个不同来源的工作复本. 举个例子, 你可能想要有数个不同的目录, 各来自不同的档案库.我们可以通过svn:externals 性质来宣告这一对对应关系。内容是子目录对应至 Subversion 档案库 URL 的多行表格.
$ svn propget svn:externals calc
third-party/sounds          http://sounds.red-bean.com/repos
third-party/skins          
http://skins.red-bean.com/repositories/skinproj
third-party/skins/toolkit  
http://svn.red-bean.com/repos/skin-maker
当有人取出 calc 目录的工作复本, Subversion 还会继续取出在外部定义里的项目.
$ svn checkout
http://svn.example.com/repos/calc
A  calc
A  calc/Makefile
A  calc/integer.c
A  calc/button.c
Checked out revision 148.

Fetching external item into calc/third-party/sounds
A  calc/third-party/sounds/ding.ogg
A  calc/third-party/sounds/dong.ogg
A  calc/third-party/sounds/clang.ogg
Checked out revision 14.

Fetching external item into calc/third-party/skins


小结

Subversion有一份很好的文档——《Version Control with Subversion》(http://svnbook.red-bean.com/)。它提供了有关Subversion的各方面内容,如使用、管理和开发等。
经过数年的开发,以替代CVS为目标的Subversion,相信以其强大的功能,对CVS良好的继承性,一定会有很好的发展。

作者简介
姓名:雷凯
工作单位:升技主板(苏州)研发中心
联系地址:苏州市新区马运路罗礼科技有限公司研发中心 邮编 215000
E-mail:
tigerleihm@yahoo.com.cn

参考资料:Version Control with Subversion (http://svnbook.red-bean.com/)

“本文作者是雷凯 升技主板(苏州)研发中心工程师。他目前在中国苏州 升技主板(苏州)研发中心工作。可以通过tigerleihm@yahoo.com.cn 与他联系。”
2006年01月17日

近日在Mop看一人的转贴,很有些感悟。不过时常是看到这种帖子,只是一时感慨,过后就忘。这次就留个快照罢。


问题一,
如果你家附近有一家餐厅,东西又贵又难吃,桌上还爬着蟑螂,你会因为它很近
很方便,就一而再、再而三地光临吗?
回答:你一定会说,这是什么烂问题,谁那么笨,花钱买罪受?

可同样的情况换个场合,自己或许就做类似的蠢事。
不少男女都曾经抱怨过他们的情人或配偶品性不端,三心二意,不负责任。明知在一起没
什么好的结果,怨恨已经比爱还多,但却“不知道为什么”还是要和他搅和下去,分不了
手。说穿了,只是为了不甘,为了习惯,这不也和光临餐厅一样?

――做人,为什么要过于执著?!

问题二,
如果你不小心丢掉100块钱,只知道它好像丢在某个你走过的地方,你会花200块
钱的车费去把那100块找回来吗?
回答:一个超级愚蠢的问题。

可是,相似的事情却在人生中不断发生。做错了一件事,明知自己有问题,却*也不肯认
错,反而花加倍的时间来找藉口,让别人对自己的印象大打折扣。被人骂了一句话,却花
了无数时间难过,道理相同。为一件事情发火,不惜损人不利已,不惜血本,不惜时间,
只为报复,不也一样无聊?
失去一个人的感情,明知一切已无法挽回,却还是那么伤心,而且一伤心就是好几年,还
要借酒浇愁,形销骨立。其实这样一点用也没有,只是损失更多。

――做人,干吗为难自己?!

问题三,
你会因为打开报纸发现每天都有车祸,就不敢出门吗?
回答:这是个什么烂问题?当然不会,那叫因噎废食。

然而,有不少人却曾说:现在的离婚率那么高,让我都不敢谈恋爱了。说得还挺理所当然
。也有不少女人看到有关的诸多报道,就对自己的另一半忧心忡忡,这不也是类似的反应
?所谓乐观,就是得相信:虽然道路多艰险,我还是那个会平安过马路的人,只要我小心
一点,不必害怕过马路。

――做人,先要相信自己。

问题四,
你相信每个人随便都可以成功立业吗?
回答:当然不会相信。

但据观察,有人总是在听完成功人士绞尽脑汁的建议,比如说,多读书,多练习之后,问
了另一个问题?那不是很难?
我们都想在3分钟内学好英文,在5分钟内解决所有难题,难道成功是那么容易的吗?改变
当然是难的。成功只因不怕困难,所以才能出类拔萃。
有一次坐在出租车上,听见司机看到自己前后都是高档车,兀自感叹:“唉,为什么别人
那么有钱,我的钱这么难赚?”
我心血来潮,问他:“你认为世上有什么钱是好赚的?”他答不出来,过了半晌才说:好
像都是别人的钱比较好赚。
其实任何一个成功者都是艰辛取得。我们实在不该抱怨命运。

――做人,依靠自己!

问题五,
你认为完全没有打过篮球的人,可以当很好的篮球教练吗?
回答:当然不可能,外行不可能领导内行。

可是,有许多人,对某个行业完全不了解,只听到那个行业好**,就马上开起业来了。
我看过对穿着没有任何口味、或根本不在乎穿着的人,梦想却是开间服装店;不知道电脑
怎么开机的人,却想在网上**,结果道听途说,却不反省自己是否专业能力不足,只抱
怨时不我与。

――做人,量力而行。

问题六,
相似但不相同的问题:你是否认为,篮球教练不上篮球场,闭着眼睛也可以主导
一场完美的胜利?
回答:有病啊,当然是不可能的。

可是却有不少朋友,自己没有时间打理,却拼命投资去开咖啡馆,开餐厅,开自己根本不
懂的公司,火烧屁股一样急着把辛苦积攒的积蓄花掉,去当一个稀里糊涂的投资人。亏的
总是比赚的多,却觉得自己是因为运气不好,而不是想法出了问题。

――做人,记得反省自己。

问题七,
你宁可永远后悔,也不愿意试一试自己能否转败为胜?
解答:恐怕没有人会说:“对,我就是这样的孬种”吧。

然而,我们却常常在不该打退堂鼓时拼命打退堂鼓,为了恐惧失败而不敢尝试成功。
以关颖珊赢得2000年世界花样滑冰冠军时的精彩表现为例:她一心想赢得第一名,然而在
最后一场比赛前,她的总积分只排名第三位,在最后的自选曲项目上,她选择了突破,而
不是少出错。在4分钟的长曲中,结合了最高难度的三周跳,并且还大胆地连跳了两次。她
也可能会败得很难看,但是她毕竟成功了。
她说:“因为我不想等到失败,才后悔自己还有潜力没发挥。”
一个中国伟人曾说;胜利的希望和有利情况的恢复,往往产生于再坚持一下的努力之中。

――做人,何妨放手一搏。

问题八,
你的时间无限,长生不老,所以最想做的事,应该无限延期?
回答:不,傻瓜才会这样认为。

然而我们却常说,等我老了,要去环游世界;等我退休,就要去做想做的事情;等孩子长
大了,我就可以……
我们都以为自己有无限的时间与精力。其实我们可以一步一步实现理想,不必在等待中徒
耗生命。如果现在就能一步一步努力接近,我们就不会活了半生,却出现自己最不想看到
的结局。

――做人,要活在当下。

 来自MIT人工智能实验室:如何做研究?

作者:人工智能实验室全体研究生
编辑:David Chapman
版本:1.3
时间:1988年9月
译者:柳泉波 北京师范大学信息学院2000级博士生
摘要 本文的主旨是解释如何做研究。我们提供的这些建议,对做研究本身(阅读、写作和程序设计),理解研究过程以及开始热爱研究(方法论、选题、选导师和情感因素),都是极具价值的。
Copyright 1987, 1988 作者版权所有
备注:人工智能实验室的Working Papers用于内部交流,包含的信息由于过于初步或者过于详细而无法发表。不像正式论文那样,会列出所有的参考文献。

1. 简介
并没有什么神丹妙药可以保证在研究中取得成功,本文只是列举了一些可能会有所帮助的非正式意见。

目标读者是谁?

本文档主要是为MIT人工智能实验室新入学的研究生而写,但对于其他机构的人工智能研究者也很有价值。即使不是人工智能领域的研究者,也可以从中发现对自己有价值的部分。

如何使用?

  要精读完本文,太长了一些,最好是采用浏览的方式。很多人觉得下面的方法很有效:先快速通读一遍,然后选取其中与自己当前研究项目有关的部分仔细研究。
  本文档被粗略地分为两部分。第一部分涉及研究者所需具备的各种技能:阅读, 写作和程序设计,等等。第二部分讨论研究过程本身:研究究竟是怎么回事,如何做研究,如何选题和选导师,如何考虑研究中的情感因素。很多读者反映,从长远看,第二部分比第一部分更有价值,也更让人感兴趣。
  如何通过阅读打好AI研究的基础。列举了重要的AI期刊,并给出了一些阅读的诀窍
   如何成为AI研究领域的一员:与相关人员保持联系,他们可以使你保持对研究前沿的跟踪,知道应该读什么材料。

  学习AI相关领域的知识。对几个领域都有基本的理解,对于一个或者两个领域要精通。
  如何做研究笔记。
  如何写期刊论文和毕业论文。如何为草稿写评审意见,如何利用别人的评审意见。如何发表论文。
  如何做研究报告。
  是有关程序设计的。AI程序设计与平常大家习惯的程序设计有所不同。
  有关研究生涯最重要的问题,如何选导师。不同的导师具有不同的风格,本节的意见有助于你找到合适的导师。导师是你必须了解如何利用的资源。
  关于毕业论文。毕业论文将占据研究生生涯的大部分时间,本部分涉及如何选题,以及如何避免浪费时间。
  有关研究方法论,尚未完成。
  或许是最重要的一节:涉及研究过程中的情感因素,包括如何面对失败,如何设定目标,如何避免不安全感,保持自信,享受快乐。

2. 阅读
  很多研究人员花一半的时间阅读文献。从别人的工作中可以很快地学到很多东西。本节讨论的是AI中的阅读,在第四小节将论述其他主题相关的阅读。
  阅读文献,始于今日。一旦你开始写作论文,就没有多少时间了,那时的阅读主要集中于论文主题相关的文献。在研究生的头两年,大部分的时间要用于做课程作业和打基础。此时,阅读课本和出版的期刊文章就可以了。(以后,你将主要阅读文章的草稿,参看小节三)。
  在本领域打下坚实的基础所需要的阅读量,是令人望而却步的。但既然AI只是一个很小的研究领域,因此你仍然可以花几年的时间阅读本领域已出版的数量众多论文中最本质的那部分。一个有用的小技巧是首先找出那些最本质的论文。此时可以参考一些有用的书目:例如研究生课程表,其他学校(主要是斯坦福大学)研究生录取程序的建议阅读列表,这些可以让你有一些初步的印象。如果你对AI的某个子领域感兴趣,向该领域的高年级研究生请教本领域最重要的十篇论文是什么,如果可以,借过来复印。最近,出现了很多精心编辑的有关某个子领域的论文集,尤其是
Morgan-Kauffman出版的。
  AI实验室有三种内部出版物系列:Working Papers,Memos和Technical Reports,正式的程度依次增加,在八层的架子上可以找到。回顾最近几年的出版物,将那些非常感兴趣的复制下来。这不仅是由于其中很多都是意义重大的论文,对于了解实验室成员的工作进展也是很重要。
  有关AI的期刊有很多,幸运的是,只有一部分是值得看的。最核心的期刊是Artificial Intelligence,也有写作"the Journal of Artificial Intelligence "或者"AIJ"的。AI领域真正具备价值的论文最终都会投往AIJ,因此值得浏览每一年每一期的AIJ;但是该期刊也有很多论文让人心烦。Computational Intelligence是另外一本值得一看的期刊。Cognitive Science也出版很多意义重大的AI论文。Machine Learning是机器学习领域最重要的资源。IEEE PAMI(Pattern Analysis and Machine Intelligence)是最好的有关视觉的期刊,每期都有两三篇有价值的论文。International Journal of Computer Vision(IJCV)是最新创办的,到目前为止还是有价值的。Robotics Research的文章主要是关于动力学的,有时候也有划时代的智能机器人论文。IEEE Robotics and Automation偶尔有好文章。
  每年都应该去所在学校的计算机科学图书馆(在MIT的Tech Square的一层),翻阅其他院校出版的AI技术报告,并选出自己感兴趣的仔细加以阅读。
  阅读论文是需要练习的技能。不可能完整地阅读所有的论文。阅读论文可分为三个阶段:第一阶段是看论文中是否有感兴趣的东西。AI论文含有摘要,其中可能有内容的介绍,但是也有可能没有或者总结得不好,因此需要你跳读,这看一点那看一点,了解作者究竟做了些什么。内容目录(the table of contents)、结论部分(conclusion)和简介(introduction)是三个重点。如果这些方法都不行,就只好顺序快速浏览了。一旦搞清楚了论文的大概和创新点,就可以决定是否需要进行第二阶段了。在第二阶段,要找出论文真正具有内容的部分。很多15页的论文可以重写为一页左右的篇幅;因此需要你寻找那些真正激动人心的地方,这经常隐藏于某个地方。论文作者从其工作中所发现的感兴趣的地方,未必是你感兴趣的,反之亦然。最后,如果觉得该论文确实有价值,返回去通篇精读。
  读论文时要牢记一个问题,“我应该如何利用该论文?”“真的像作者宣称的那样么?”“如果……会发生什么?”。理解论文得到了什么结论并不等同于理解了该论文。理解论文,就要了解论文的目的,作者所作的选择(很多都是隐含的),假设和形式化是否可行,论文指出了怎样的方向,论文所涉及领域都有哪些问题,作者的研究中持续出现的难点模式是什么,论文所表达的策略观点是什么,诸如此类。
  将阅读与程序设计联系在一起是很有帮助的。如果你对某个领域感兴趣,在阅读了一些论文后,试试实现论文中所描述的程序的“玩具”版本。这无疑会加深理解。 可悲的是,很多AI实验室天生就是孤僻的,里面的成员主要阅读和引用自己学校实验室的工作。要知道,其他的机构具有不同的思考问题的方式,值得去阅读,严肃对待,并引用它们的工作,即使你认为自己明晓他们的错误所在。
  经常会有人递给你一本书或者一篇论文并告诉你应该读读,因为其中有很闪光的地方且/或可以应用到你的研究工作中。但等你阅读完了,你发现没什么特别闪光的地方,仅仅是勉强可用而已。于是,困惑就来了,“我哪不对啊?我漏掉什么了吗?”。

实际上,这是因为你的朋友在阅读书或论文时,在头脑中早已形成的一些想法的催化下,看出了其中对你的研究课题有价值的地方。

3. 建立关系
  一两年后,对自己准备从事的子领域已经有了一些想法。此时——或者再早一点——加入Secret Paper Passing Network是很重要的。这个非正式的组织是人工智能真正在做什么的反映。引导潮流的工作最终会变成正式发表的论文,但是至少在牛人完全明白一年之后,也就是说,牛人对新思想的工作至少领先一年。
  牛人如何发现新思路的?可能是听自于某次会议,但是最可能来自于Secret Paper Passing Network。下面是该网络工作的大致情况。Jo Cool有了一个好想法。她将尚不完整的实现与其他一些工作融合在一起,写了一份草稿论文。她想知道这个想法究竟怎么样,因此她将论文的拷贝发送给十位朋友并请他们进行评论。朋友们觉得这个想法很棒,同时也指出了其中的错误之处,然后这些朋友又把论文拷贝给他们各自的一些朋友,如此继续。几个月后,Jo对之进行了大量修订,并送交给AAAI。六个月后,该论文以五页的篇幅正式发表(这是AAAI会议录允许的篇幅)。最后Jo开始整理相关的程序,并写了一个更长的论文(基于在AAAI发表论文得到的反馈)。然后送交给AI期刊。AI期刊要花大约两年的时间,对论文评审,包括作者对论文修改所花费的时间,以及相应的出版延迟。因此,理想情况下,Jo的思想最终发表在期刊上需要大约三年时间。所以牛人很少能从本领域出版的期刊文章中学到什么东西,来得太迟了。你,也可以成为一个牛人。下面是建立学术关系网的一些诀窍:
  有很多讨论某个AI子领域(如连接主义或者视觉)的邮件列表,选择自己感兴趣的列表加入。
  当与很熟悉本领域的人讨论自己的思想时,他们很可能不直接评价你的想法,而是说:“你读过某某吗?”这并不是一个设问,而是建议你去阅读某份文献, 它很可能与你的想法有关系。如果你还没有读过该文献,从跟你交谈的高手那里得到该文献的详细信息,或者直接从他那里借一份拷贝下来。
  当你读到某份让你感到很兴奋的论文,复印五份送交给对之感兴趣的其他五个人。他们可能会反馈回来很好的建议。
  本实验室有很多针对不同子领域的非正式(持续发展的)论文讨论组,他们每星期或每两星期聚会一次,对大家阅读完的论文进行讨论。
  有些人并不介意别人去翻看他们的书桌,也就是说,去翻阅他们堆在书桌上的不久要阅读或者经常翻阅的论文。你可以去翻翻看,有没有自己感兴趣的。当然了,首先要得到主人的许可,要知道有些人确实反感别人翻自己的东西。去试试那些平易近人的人。
  同样,有些人也并不介意你翻看他们的文件柜。实验室中可是有很多学问精深的人,他们的文件柜里也是有好多宝贝。与利用学校图书馆相比,这通常是更快更可靠的寻找论文的方式。
  只要自己写下了些东西,将草稿的拷贝分发给那些可能感兴趣的人。(这也有一个潜在的问题:虽然AI领域的剽窃很少,但也确实有。你可以在第一页写上“ 请不要影印或者引用”的字样以做部分防范。)大部分人并不会阅读自己收到的大部分论文,因此如果只有少数人返回评论给你,也不用太在意。你可以如此反复几次——这是期刊论文所必需的。注意,除了自己的导师,一般很少将两次以上的草稿送给同一个人。
  当你写完一篇论文后,将论文的拷贝送给那些可能感兴趣的人。别以为人家自然而然地就会去阅读发表论文的期刊或者会议录。如果是内部的出版物(备忘录和技术报告)就更不容易读到了。
  你保持联系的人越是各式各样,效果就越好。尝试与不同研究组,AI实验室,不同学术领域的人交换论文。使自己成为没有联系的两个科研组交流的桥梁,这样,很快的,你的桌子上就会冒出一大摞相关的论文。
如果某篇论文引用了自己感兴趣的某些东西,做好笔记。维护一份自己感兴趣参考文献的日志。到图书馆去看看能不能找到这些论文。如果要了解某个主题的发展轨迹,可以有意地去做一张引用的“参考文献”图。所谓的参考文献图,是指引用组成的网:论文A引用B和C,B引用C和D,C引用D,等等。注意那些被经常引用的论文,这通常是值得阅读的。参考文献图有奇妙的性质。一个是经常有研究同一主题的研究组相互不了解。你搜索该图,突然发现了进入另一部分的方式,这通常出现于不同学校或者不同方法存在的地方。尽可能了解多种方法是很有价值的,这总比非常深入的了解某一种方法更好。
  暂时搁置。跟别人交谈。告诉他们你在做什么,并询问人家在做什么。(如果你对与别的学生讨论自己的想法感到害羞,也要坚持交谈,即使自己没有什么想法,与他们讨论自己认为确实优秀的论文。这将很自然地引导到下一步做什么的讨论。)每天中午在活动楼七层有一个非正式的午餐讨论会。在我们实验室,人们都习惯于晚上工作,所以午餐的时候可以跟别人组成松散的小组进行讨论。 如果你与外界的交流很多——做演示或者参加会议——去印张事务名片,
  主要要使自己的名字容易记住。从某个时间开始,你将会开始参加学术会议。如果你确实参加了,你会发现一个事实,几乎所有的会议论文都令人生厌或者愚蠢透顶。(这其中的理由很有意思,但与本文无关,不做讨论)。那还去参加会议干吗?主要是为了结识实验室之外的人。外面的人会传播有关你的工作的新闻,邀请你作报告,告知你某地的学术风气和研究者的特点,把你介绍给其他人,帮助你找到一份暑期工作,诸如此类。如何与别人结识呢?如果觉得某人的论文有价值,跑上去,说:“我非常欣赏您的论文”,并提问一个问题。
  获得到别的实验室进行暑期工作的机会。这样你会结识另外一群人,或许还会学到另外一种看待事物的方式。可以去问高年级同学如何获取这样的机会,他们或许已经在你想去的地方工作过了,能帮你联系。
  通常的情况,你只能做AI领域的事情,对AI领域之外的事情一无所知,好像有些人现在也仍然这么认为。但是,现在要求好的研究者对几个相关的领域都了解颇深。
计算的可行性本身并没有对什么是智能提供足够的约束,其他的领域给出了其他形式的约束,例如心理学获得的经验数据。更重要的是,其他的研究领域给了你思考的新工具,看待智能的新方法。学习其他领域的另外一个原因是AI本身并没有评价研究价值的标准,全是借自于其他领域。数学将定理作为进展;工程会问某个对象是否工作可靠;心理学要求可重复的试验;哲学有严格的思辨;等等。所有这些标准有时都在AI中起作用,熟悉这些标准有助于你评价他人的工作,深入自己的工作以及保护自己的工作。
  经过六年左右的课程方可获得MIT的PhD,你可以在一到两个非AI领域里打下坚实的基础,在更多的领域内具有阅读水平,并且必须对大部分内容具有一定程度的理解。下面是如何学习自己所知甚少领域的一些方法:
  选修一门研究生课程,这很牢靠,但通常不是最有效的方法。
  阅读课本。这方法还算不错,不过课本的知识经常是过时的,一般还有很高比例的与内容无关的修辞。
  找出该领域最棒的期刊是什么,向该领域的高人请教。然后找出最近几年值得阅读的文章,并跟踪相关参考文献。这是最快的感受该领域的方法,但有时候你也许会有错误的理解。
  找出该领域最著名的学者,阅读他们所著的书籍。
  跟该领域的研究生泡在一起。
  参看外校研究该领域的系的课程表。拜访那里的研究院办公室,挑选有用的的文献数学可能是接下来需要了解的最重要的学科。对于工作在视觉或者机器人学的人来说更关键。对于以系统为中心的工作,表面上看,并不相关,但数学会教你有用的思维方式。你需要能阅读定理,如果具有证明定理的能力将会给本领域的大多数人留下深刻的印象。很少有人能自学数学,光做个听众是不够的,还得做习题集。尽可能早地选修尽可能多的数学课,其他领域的课程以后选也很容易。
  计算机科学是以离散数学为基础的:代数,图论,等等。如果你要从事推理方面的工作,逻辑是很重要的。逻辑在MIT用得不多,但是在斯坦福以及其他地方,这是认识思维的主流方法。所以你必须具备足够的逻辑知识,这样你才能保护自己的观点。在MIT数学系选修一两门课程就足够了。要是研究兴趣在感知和机器人,那么不仅需要离散数学,还需要连续数学。在分析,微分几何和拓扑学具有扎实的基础将会给你提供最常使用的技巧。统计和概率只是一般有用。
  认知心理学与AI共享几乎完全相同的观点,但是实践者确实具有不同的目标,他们主要是做实验而不是写程序。每一个人都需要知道认知心理学的某些知识。
在MIT,Molly Potter开了一门很好的有关认知心理学的初级研究生课程。
  如果你想做有关学习的工作,那么发展心理学是很重要的。发展心理学从一般意义上讲也是很有用的,它能告诉你对于人类智能来说,哪些事情难哪些容易。 它还给出了有关认知体系结构的认知模型。例如,有关儿童语言习得的工作就对语言处理理论施加了坚实的约束。在MIT,Susan Carey开了一门很好的有关发展心理学的初级研究生课程。
  心理学中更“软”的部分,例如心理分析和社会心理学,对AI的影响看似很小,但具有潜在的重大意义。它们会给你非常不同的理解人是什么的方式。象社会学和人类学这样的社会科学可以起相似的作用。具有多种观点是很有用的。上述学科你需要自学。不幸的是,很难区分出这些领域哪些是优秀的成果哪些是垃圾。到哈佛去学习:对于MIT的学生来说,很容易交叉注册哈佛的课程。
  神经科学告诉我们有关人体可计算硬件的知识。随着最近可计算神经科学和联结主义的兴起,对AI具有非常大的影响。MIT的脑和行为科学系提供了非常好的课程,视觉(Hildreth, Poggio, Richards, Ullman),移动控制(Hollerbach, Bizzi)和普通神经科学(9.015,由专家组讲授)。
  如果你想研究自然语言处理,语言学是很重要的。不仅如此,它还包含了很多有关人类认知的约束。在MIT,语言学主要由Chomsky学院负责。你可以去看看是不是符合自己的兴趣。George Lakoff最近出版的书《Women, Fire, and Dangerous Things》可作为另外一种研究程序的例子。
  工程,特别是电机工程,已经被很多AI研究机构作为一个研究领域。我们实验室在培养程序中加入了很多需要确实做一些东西的要求,例如分析电路。了解EE也有助于建造定制的芯片或者调试自己的Lisp机器上的电源。
  物理学对于那些对感知和机器人感兴趣的人具有强大的影响。
  哲学是所有AI领域看不见的框架。很多AI工作都有蕴含着哲学的影响。学习哲学也能帮助你运用或者读懂很多AI论文中用到的观点。哲学可沿着至少两个正交的轴分解。哲学通常是某种东西的哲学;有关思维和语言的哲学与AI更相关。然后存在着多种哲学学派,从比较大的范围来分,哲学可分为分析哲学和大陆哲学。分析哲学有关思维的观点与AI领域大多数研究者一致。大陆哲学则对我们习以为常的很多东西有非常不同的看待方式。它曾经被Dreyfus用于证明AI是不可能的。就在不久前, 有几位研究者认为大陆哲学与AI是相容的,提供了另外一种解决问题的方法。MIT的哲学属于分析哲学,哲学学院深深地受到Chomsky在语言学方面工作的影响。
  看起来要学习太多的东西,是不是?确实如此。要小心一个陷阱:认为对于所有的X,“只有我对X了解的更多,这个问题才会变得容易”。要知道,与之相关需要进一步了解的东西是永远没完的,但最终你还是要坐下来,解决问题的。

5. 笔记
  很多科学家都有做科研笔记的习惯,你也应该这样。可能你曾被告知从五年级开始,对于每一门科学课都应该记笔记,确实如此。不同的记笔记方式适用于不同的人,可以做在线笔记,记在笔记本或者便笺簿上。可能需要在实验室有一个,家里还有一个。
  在笔记本上记录下自己的想法。只有你自己才会去读它,因此可以记得比较随意。记录下自己的思索,当前工作中遇到的问题,可能的解决方案。对将来可能用到的参考文献作小结。
  定期翻阅你自己的笔记本。有些人会做月度总结,方便将来的引用。 笔记中记录中的东西经常可以作为一篇论文的骨干。这会使生活变得轻松些。相反,你会发现写粗略的论文——标题,摘要,分标题,以及正文的片段——是一种记录自己当前工作的有效方式,即使你并不准备把它变成一篇真正的论文。(过一段时间你或许会改变想法)。
  你或许会发现Vera Johnson-Steiner的书《Notebooks of the Mind》很有用, 该书并不是描写如何做笔记的文献,它描述了随着思想片断的积累,创新思想是如何出现的。

6. 写作
写作的理由有很多。
  在整个读研的过程中,你需要写一到两篇(这取决于你所在系的规定)毕业论文,以获得PhD或者MS。
  勤于写作不仅仅给你练习的机会。
  学术的规则就是要么发表,要么腐烂。在很多领域和学校,这通常开始于你成为一名教授时,但是我们实验室的很多研究生毕业之前就已经开始发表论文了。
鼓励发表和分发论文是很好的政策。
  写下自己的想法是很好的调整思路的方式。你会经常地发现自以为很完美的想法一旦写下来就显得语无伦次。
  如果你工作的目的是不仅为自己还要为他人服务,就必须把它发表。这也是研究的基本责任。如果你写得精彩,会有更多的人来了解你的工作。
  AI但凭单打独斗是很难做的,你需要经常地从他人那里获得反馈。对你的论文作评论就是最重要的一种形式。任何事情,要做就要做到最好。
  阅读有关如何写作的书籍。Strunk和White的《Elements of Style》对基本的应该如何不应该如何做了介绍。Claire的《The MLA’s Line By Line》(Houghton Mifflin)是有关在句子级别如何编辑的书籍。Jacques Barzun的《Simple and Direct : A Rhetoric for Writers》(Harper and Row, 1985)是有关如何作文的。
  写论文时,读读那些写作高超的书,并思考作者的句法运用。你会发现不知不觉地,你已经吸收了作者的风格。
  要成为写作高手,需要付出颇多,历经数年,期间还要忍受和认真对待他人的批评。除此之外,并无捷径可走。
  写作有时候是很痛苦的,看起来好像是从“实际的”工作中分心了。但如果你已经掌握了写作技巧,写起来会很快。而且如果你把写作当作一门艺术的话,你能从中得到很多乐趣。
  你肯定会遇到思路阻塞的情况,这有很多的可能原因,没有一定可以避免的方法。追求完美可能导致思路阻塞:无论开始写什么,总觉得不够好。要理解写作是一个调试的过程。先写一个草稿,然后返回修订。写草稿有助于理顺思路,如果写不出来正文,那就写个大纲。逐步对之细化,直到已经很容易写出子部分的内容。如果连草稿也写不出来,隐藏掉正在写作的所有窗口,然后随便输入自己脑袋里想到的东西,即使看起来好像是垃圾。当你已经写出了很多文本后,重新打开窗口,将刚才写的东西编辑进去。
  另外一个错误是以为可以将所有的内容依次写出。通常你应该将论文的核心内容写出来,最后才是介绍部分。引起作者思路阻塞的另一个原因是不切实际的以为写作是很容易的事情。写作是耗时耗力的,如果发现自己每天只能写一页,也不要放弃。
  完美主义可能会导致对本来已经足够好的论文还在不停地打磨。这是浪费时间。(这也是一种有意无意之间逃避做研究的表现)。将论文看作你与本领域其他人交谈时的一句话。在交谈中,并不是每一句话都是完美的。很少有人会期待自己的某次谈话就是全部的故事,是与对方的最后一次交流。
  写信是一种很好的练习。很多技术论文,如果其风格更类似于给朋友的信,那么会有很大的提高。坚持记日记也是练习写作的方法(也会使你试验更多的文体,不仅仅是技术论文)。这两种方法还有其它的实质作用。
  一个常见的陷阱是花很多时间去追求修辞而不是内容。要避免这样。LaTeX并非完美,但是它有很多你所需的修饰语。如果这还不够,还可从其他从事这一研究的人那里借用一些词语用法。很多站点(例如MIT)维护了一个写作修辞的库。
  清楚自己要表达什么。这是清楚的写作中最难最重要的因素。如果你写了拙劣的东西,且不知道如何修改,这很有可能是因为你不知道自己要说什么。一旦搞清楚了自己要说什么,说就行了。
  论文的写作要有利于读者查找到你所做的工作。无论是段落的组织还是通篇的组织,都要将最核心的部分放在前面。要精心写作摘要。确保摘要已经反映出你的好思路是什么。确保自己明白自己的创新点是什么,然后用几句话表达出来。太多的论文摘要只是一般性地介绍论文,说是有一个好思路,却不说是什么。
  不要用大话来贩卖你的工作。你的读者都是很优秀的人,正直且自尊。与之相反,也不要为自己的工作道歉或者进行消减。
  有时候你意识到某个子句、句子或者段落不够好,却不知道如何修改。这是因为你钻到死胡同里出不来了。你需要返回重写这一部分。现实中这种情况很少发生。
  确保自己的论文中有中心思想。如果你的程序在10毫秒内解决了问题X,告诉读者你是如何办到的。不要只是解释呢的系统是如何构建的,是做什么的,还要解释其工作原理和价值所在。
  写作是给人看的,而不是机器。因此光观点正确是不行的,还要易懂。不要靠读者自己去推理,除非是最明显的推论。如果你在第七页的脚注上解释了某个小玩意的工作原理,接着在第二十三页没有进一步解释就引用了它,此时如果读者感到困惑一点都不值得奇怪。正式的论文要写清楚是很难的。不要模仿数学领域的文献,它们的标准是尽可能少的解释,使读者感到越困难越好。这并不适用于AI。
  写完一篇论文后,删掉第一段或者头几句话。你会发现那是与内容无关的一般性话语,更好的介绍语句在第一段最后或者第二段的开头。
  如果你等做完所有的工作后才开始写作,会失去很多。一旦开始了某个科研项目,要养成这样的习惯:写作解释当前工作进展或者每几个月学习所得的非正式论文。
从你的研究笔记中的记载开始。花两天的时间写下来——如果你花的时间更长,说明你是一个完美主义者。将论文与你的朋友分享。写的是草稿——不是为了被引用的那种。将论文复制数十份,送给那些感兴趣的人(包括你的导师)。与写正式论文相比,这样做具有很多相同的好处(评论,理清思路,写作练习等等),而且从某种意义上讲,付出无需那么多。经常地,如果你做得不错,这些非正式论文以后可以作为正式论文的骨干内容,也就是从AI实验室的Working Paper成为一篇期刊文章。
  一旦你成为Secret Paper Passing Network的成员,会有很多人给你寄论文拷贝要求评论。获得他人对自己的论文的评论是很有价值的。因此你评论的论文越多,你获得支持就越多,也会收到更多人对你论文的评论。不仅如此,学习评价别人的论文有助你的选择。
为论文写有用的评论是一门艺术。
  要写出有用的评论,需要读两遍论文。第一遍了解其思想,第二遍开始作评论。
  如果某人在论文中屡次犯同一错误,不要每次都标记出来。而是要弄清楚模式是什么,他为什么这样做,对此还可以做什么,然后在第一页清晰地指出或者私下交流。
  论文的作者在合并你的评论时,将会遵循最小修改的原则。如果可以,就只修改一个词,不行再修改一个词组,再不行才修改整个句子。如果他的论文中某些拙劣之处使得他必须修改整个段落,整个小节甚至整篇论文的组织,要用大字体的字母指出来,这样他才不会忽视。
  不要在论文写毁灭性的批评如“垃圾”。这对于作者毫无帮助。花时间提出建设性的建议。要设身处地地为作者着想。
  评论有很多种。有对表达的评论,有对内容的评论。对表达的评论也可以很不同,可以是校对打字稿,标点,拼写错误,字词丢失等。应该学一些标准的编辑符号。 还可以是校正语法,修辞,以及混乱不清楚的段落。通常人们会持续地犯同一语法错误,因此需要花时间明确地指出。接下来是对组织结构的评论:不同程度(子句,句子,段落,小节乃至一章)的次序混乱,冗余,无关的内容,以及丢失论点。
  很难描述对内容进行评论的特征。你可能建议作者扩展自己的想法,考虑某个问题,错误,潜在的问题,表达赞美等。“因为Y,你应该读X”是一种总是有用的评论

   你无须接受所有的意见,但是必须都认真对待。将论文的部分内容裁掉是挺令人痛心的,但往往也提高了论文的水平。你经常会发现某个意见确实指出了问题,但是解决方法你觉得不可接受,那么就去寻找第三条道路。

  要多发表论文,这其实比想象中的容易。基本上,AI出版物评审者评审论文的标准是:(a)有新意;(b)在某些方面,符合标准。看看IJCAI的会议录,你会发现论文录取的标准相当低。这种情况由于评审过程本身固有的随机性而变得更糟糕了。所以一个发表论文的诀窍是不停地试。
  确保论文可读性比较好。论文被拒绝的原因,除了没有意义之外,就是无法理解或者组织糟糕。
  论文在投往期刊之前,应该交流一段时间,并根据反馈的评论进行适当的修订。要抵制那种急匆匆地把结果投往期刊的做法。在AI领域,没有竞赛,而且不管怎么说,出版周期的延迟要大大超过对草稿进行评论的时间。 读一读你想投稿的期刊或者会议的过刊,确保自己论文的风格和内容是适合的。
  很多出版物都有一页左右的“作者投稿须知”,仔细看看。
  主要的会议都会在被接收的论文中评出内容和表达俱佳的获奖论文,仔细研究研究。
  通常是向会议投交一篇篇幅比较短的有关部分工作内容的早期报告,然后再往期刊投交一份篇幅长的最终的正式论文。
  论文被决绝了——千万不要沮丧灰心。
  期刊和会议的论文评审过程存在很大的不同。为了节省时间,会议论文的评审必须迅速,没有时间细究或者交流。如果你被拒绝了,你就失败了。但期刊论文则不同,你可以经常地与编辑争辩,通过编辑与评审人争辩。
  评审人一般都会对你有帮助的。如果你收到了令人生厌的评审报告,应该向大会的程序主席或者编辑投诉。不能期望可以从会议论文评审人的报告那里得到多少反馈。但对于期刊论文,往往可以得到非常棒的建议。你不必完全按照评审报告的建议去做,但是,如果你不按照报告去做,那么就必须解释原因,并且要意识到这可能会导致进一步的负面评价。不管怎么样,无论是哪种的评审,作为评审者都要有礼貌。因为在余下的职业生涯中,你将会与被评审者在一个学术圈子里。
  MIT AI Lab Memos大体上是或者接近发表的水平。实际上,Technical Reports基本上都是这些Memos的修订版本。Working Papers则更不正式,这是很好的将自己的论文分发给同事们的方法。要出版这些内部文件,只需到Publications Office(在活动楼八层)领一份表格,并有两位教员签字即可? 就像其它的科研活动一样,论文写作所花的时间总是比期望的要高。论文的发表在耗费时间这个问题上则更严重。当你完成了一篇论文,投出去,等待发表。数月后,论文以及评论被返回来。你不得不对论文进行修改。然后又是几个月,才返回对你的修改的确认。如果你同时发表了该论文的不同形式,如有一篇短的投会议,一篇长的投期刊,这样的过程将反复数个回合。结果有可能是当你已经厌倦了,研究主题也已经令人生厌后数年,你仍然在修改那篇论文。这启示我们:不要去做那些需要热情投入但是很难发表论文的研究——苦不堪言。

7. 讲演
  与同行交流的另外一种方式就是讲演,上面提到的有关论文写作的问题,同样适用于讲演。站在听众面前从容讲演而不会使听众恹恹欲睡的能力,对于你成功地获得别人的承认、尊敬乃至最终的求职都是很关键的。讲演的能力不是天生的,下面是一些学习和练习讲演的方法:
  Patrick Winston有一篇很好的有关如何作讲演的小论文。每年的一月,他都会就此作讲演,演示和描述它的演讲技巧。
  如果你觉得自己是一个糟糕的演讲者,或者想成为一名优秀的演讲者,选一门公共演讲课。初级的表演课也很有用。
  如果你的导师有定期的研究讨论会,自愿去作演讲。
  MIT AI实验室有一系列的半正式座谈会,叫做Revolving Seminar。如果你觉自己的某些观点值得写进AI Memo或者会议论文中,自告奋勇去作一场报告。 深入了解实验室的不同机器人项目,当你外地的亲朋好友来的时候,你可以领着他们逛一圈,并就机器人做60分钟的报告。
  由于修改演讲远比修改论文容易,有些人会觉得这是很好的寻找如何表达思想的方式。(Nike Brady有一次曾说,他所有最好的论文都来自于演讲)。
  在一间空屋子里练习,最好就是你马上要做的报告。这有助于调整报告的技巧:每一张幻灯讲些什么;转换的延迟以及保持平滑;保持解释和幻灯的同步;估计报告的时间长度。你花在调整设备上的时间越少,留下来的与人交流的时间就越长用镜子,录音机或者录像机练习是另外一种方法。实验室有这三种设备。 这也有助于调整自己的发音和肢体语言。
  对于比较正式的报告——特别是你的答辩——应该在几个朋友面前练习一遍,请他们批评指正。
  观察别人是如何做报告的。有很多访问MIT的人会做报告。参加这样的报告会能够感受自己不熟悉的领域,并且如果报告令人提不起兴趣,你可以暗中分析报告者错在哪里。
  找一位朋友,将你最近的想法说给他听。这既可以提高的交际技巧,又能调试自己的思路。

8. 程序设计
  并不是所有的AI论文都包含代码,而且本领域的很多重量级人物从来没有写过一个重要的程序。但是为了初步的近似AI工作原理,你必须会程序设计。不仅仅是很多AI研究工作需要编写代码,而且学会程序设计能给你什么是可计算的什么是不可计算的直觉,这是AI对认知科学贡献的主要来源。 在MIT,本质上所有的AI程序设计都使用Common Lisp。如果还不知道,赶快学吧。当然,学习一门语言并不能等同于学习程序设计;AI程序设计包含的一些技术与那些在系统程序设计或者应用程序设计中用到的大不相同。开始学的时候,可以先看看Abelson和Sussman的《Structure and Interpretation of Computer Programs》,并做一些练习。这本书与AI程序设计本质上并不相干,但是包含了一些相同的技术。 然后读Winston和Horn写的Lisp书第三版,书里有很多优雅的AI程序。最后,进行实际的程序设计,而不是阅读,才是最好的学习程序的方法。
  学习Lisp程序设计有很多传统。有些人习惯一起写代码,这取决于个性。还有的人寻找机会直接向有经验的程序员学习,或者请他对你的代码进行评价。阅读别人的代码也是很有效的方法。如果可以向高年级同学要他们的源代码。他们可能会有些抱怨K底约旱谋喑谭绺癫罴耍绦蚴导噬喜⒉荒芄ぷ髟圃啤2还茉趺囱詈竽慊竦昧 嗽创搿H缓竽阋邢傅赝ㄆ亩粒夂芊咽奔洹MǔT亩敛⑼耆斫獗鹑舜胨ǖ氖奔溆肽阕约罕喑掏瓿傻氖奔涫且谎嗟模虼艘苹迷谀愕耐芬桓龌蛘咄妨礁 鲅谟檬艿氖奔淙ピ亩帘鹑说拇搿D憬又醒У胶芏嘁郧安辉氲皆诳伪局幸裁 挥械募记伞H绻愣恋搅舜蠖未蠖尾豢衫斫饷挥凶⑹偷某绦颍憔突崦靼撞挥Ω萌绾 涡创肓恕 !? 在软件工程课里学习到的那些知识在AI程序设计中依然有用。要给代码加注释。

使用正确的数据抽象。将图和你的代码隔离开,由于你使用的语言基本上是Common Lisp,因此可移植性很好。诸如此类。
  经过头几年的学习后,应该写一些自己的标准AI模块,如:
  真值维护系统
  规划器
  规则系统
  不同风格的解释器
  具有流程分析的优化编译器
  具有继承特性的框架系统
  几种搜索方法
  基于解释的学习器
  任何你感兴趣的东西都可以尝试用程序实现。你可以抓住问题的实质,在几天之内完成一个功能版本。修改已有的程序是另外一种有效的方法,前崾悄阋丫垂?样的东西,并且确实了解其工作原理,优缺点以及效率等问题。
  不象其他通常的程序员,AI程序员之间很少相互借阅代码。(演示代码例外)。这部分由于AI程序很少有真正起作用的。(很多著名的AI程序只在作者论文所提到的 三个例子上起作用,虽然最近这种情况已经有所改善)。另外一个原因是AI程序通常是匆忙凑成,并没有考虑一般化的问题。使用Foobar的“标准”规则解释器,开始时很有效,不久就会发现缺少一些你需要的功能,或者不够有效率。虽然可以对代码进行修改满足自己的需要,但记住理解别人的代码是很耗时的,有时候还不如自己写一个。有时候构建一个标准包的工作本身就可以成为一篇论文。
  像论文一样,程序也有可能过于追求完美了。不停重写代码以求完美,最大化的抽象所有的东西,编写宏和库,与操作系统内核打交道,这都使得很多人偏离了自己的论文,偏离了自己的领域。(从另外一方面,或许这正是你需要将来谋生的手段)


9. 导师
  在MIT,有两种类型的导师,教学导师和论文导师。
  教学导师的工作比较简单。每一位研究生都被分配了系里的一位老师作为教学导师。教学导师的作用是作为系方代表,告诉你对你的正式要求是什么,如果你的进度慢了敦促你,批准你的课程计划等。如果一切顺利的话,你每年只需要见教学导师两次,在注册日那天。从另一方面讲,如果你遇到了困难,教学导师替你向系里反映或者提供指导。
  论文导师是监督你研究的人。选择论文导师是你读研期间最重要的选择,比选题都重要得多。从更广的意义上讲,AI是通过师傅带徒弟的方式学习的。有很多领域的技术方面或者研究过程方面的非正式知识,只能从导师那里学到,在任何教科书上都找不到。
  很多AI教员都是行为古怪的人,毕业生也如此。导师与研究生的关系是非常个性化的,你的个人特点必须与导师的配合得很好,这样你们才能合作成功。
  不同的导师具有不同的风格。下面是一些需要值得考虑的因素:
  你需要多大程度的指导?有些导师会给你一个定义良好的适合做论文的问题,对解决方法进行解释,并告诉你如何开展工作。如果你陷在某个地方了,他们会告诉你如何开展下去。其他的导师属于甩手型,他们可能对你的选题毫无帮助,但是一旦你选好题目,他们对于引导你的思路具有非常大的作用。你需要考虑清楚自己适合独立工作还是需要指导。
  你需要多大程度的联系?有的导师要求每周与你见面,听取你工作进展的汇报。他们会告诉你应该读的论文,并给你实际的练习和项目做。其他的导师每学期与你的谈话不会超过两次。
  你能承受的压力有多大?有些导师施加的压力是很大的。
  需要多少情感支持?
  听取导师意见的认真程度如何?大多数导师会相当正式的建议你的论文题目。有些导师是值得信赖的,他们给出的建议,如果按照执行,几乎肯定会做出一篇可接受程度的论文,如果不是令人兴奋的论文的话。其他的则一下子抛出很多思路,大部分是不切实际的,但是有一些,或许会导致重大突破。如果选了这样的一位导师,你首先得把自己当作一个过滤器。
  导师提供了什么类型的研究组?有些教授会创造环境,把所有的学生聚集在一起,即使他们做的不是同一个项目。很多教授每周或者每两周与自己的学生们会面。这对你有用么?你能与教授的学生和睦相处么?有些学生发现他们更能与其他教研组的学生建立良好的工作关系。
  你想参与大的项目么?有些教授将大系统分解,每个学生负责一部分。这给了你与一组人讨论问题的机会。
  你想被共同监督么?有些论文项目包含了多个AI领域,需要你与两个以上的教授建立密切的工作关系。虽然你正式的论文导师只有一位,但是有时候这并不反映实际情况。
  导师愿意指导其研究领域之外的论文题目么?你是否能与导师一起工作,比你做什么本身更重要。MIT的机器人系就曾指导过量子物理学和认知建模方面的论文;推理方面的教员指导过视觉方面的论文。但是有些教员只愿意指导自己研究兴趣领域内的论文。这对于那些欲获得终身职位的年轻教员来说尤其如此。
  导师会为了你跟体制作斗争吗?有些导师会为了你跟系里或者某些有敌意的实体作斗争。有时候体制对某些类型的学生不利(特别是对于女学生和怪癖的学生),因此这一点很重要。
  导师愿意并且能够在会议上推荐你的工作吗?这是导师工作的一部分,对你将来工作意义重大。
  上述这些因素,不同学校的情况很不相同。与大部分学校相比,MIT提供了多得多的自由。
  找论文导师是你研究生一年级最主要的任务。研一结束时,或者研二学年开始阶段,你必须有一个论文导师。下面是一些诀窍:
  查阅实验室的研究总结。其中有一页左右的篇幅描述了每个教师以及很多研究生目前在做什么。
  如果你对某些教师的研究工作感兴趣,查阅其最近的论文。
  在第一学期,与尽可能多的教师交谈。去感受他们喜欢做什么,他们的研究和指导风格是什么。
  与预期导师的研究生交谈。要保证与导师的多个学生交流,因为每位导师在与不同的学生交流时有不同的工作方胶徒涣餍Ч2荒鼙灰桓鲅目捶ㄋ笥?。
  很多教师所在研究组的会议对新同学都是公开的。这是非常好的了解导师工作方式的途径。
  作为一门学科,AI不同寻常的一点是很多有用的工作是由研究生完成的,而不是博士——他们忙着做管理去了。这有几个后果。一是某个教师的声望,是否会获得终身聘用,在很大程度上取决于学生的工作。这意味着教授有很强烈的动机吸引最好的学生为自己工作,并给与有效的指导和足够的支持。另外一个后果是,由于大部分学生的论文方向是由导师形成的,因此整个领域的方向和发展很大程度上取决于导师选择什么样的研究生。
当选定了导师,决定了自己对导师的要求后,要确保导师知道。不要由于交流不好,浪费时间于自己并不想做的项目上。
不要完全依赖你的导师,要建立自己的网络。找一些能定期评审你的工作的人是很重要的,因为研究时很容易走火入魔。网络中的人可以包括自己实验室或者外单位的研究生和老师。
在与其他学生、老师甚至自己的导师的关系中,很可能会碰到种族主义者,性别歧视,同性恋或者其他令人尴尬的事情。如果你不幸碰到了,去寻求帮助。MIT的ODSA出版了一本叫做“STOP Harrassment”的小册子,里面有很多建议。《Computer Science Women’s Report》,可在LCS文档室找到,也与之相关。


实验室中有些同学只是名义上由导师指导。这对于那些独立性很强的人来说很好。但是如果你已经完成了某项导师指导的工作,除非你确保没有导师也行且自己有牢靠的支持网络,否则就不要这么干。

10. 论文
做毕业论文将占据研究生生活的大部分时间,主要是去做研究,包括选题,这比实际的写作耗时更多。
硕士论文的目的是为做博士论文练兵。博士水平的研究如果没有准备好的话,是很难进行的。硕士论文最本质的要求是展示自己的掌握程度:你已经完全理解了本领域最新进展,并具备相应的操作水平。并不需要你对本领域的最新知识有所拓展,也不要求发表你的论文。然而我们实验室的论文总是比较大气的,因此很多硕士论文实际上都对本领域的发展作出了显著的贡献,大约有一半都出版了。这并不一定是好事情。
很多人精力都集中于硕士的工作,所以MIT有这样的名声:硕士论文的质量往往比博士论文高。这有悖于硕士工作本来是为博士研究作准备的原有目的。另外一个因素是所做研究要对领域有所贡献,至少需要两年,这使得研究生学习时间之长令人难以忍受。现在或许你感受不到匆忙,但当你已经在实验室呆了七年后,你肯定迫不及待地想逃出去。硕士从入学到毕业平均时间是两年半,但是,计算机系强烈鼓励学生提前毕业。如果某个硕士生的题目过于庞大,可将之分解,一部分来做硕士论文,另一部分给博士生作博士论文。
想要了解硕士论文研究是什么样的,读几本最新的硕士论文。记住比较好的论文是那些出版的或者成为技术报告的,因为这标志着该论文被认为是扩展了领域的最新知识——换句话说,他们的论文远远超出了硕士论文的水平。还要读一些通过的但是没有出版的论文,所有通过的论文都可以在MIT图书馆中找到。博士论文必须对最新知识有所拓展,博士论文的研究必须具备可出版的质量。MIT的泱泱气质又表现出来了,很多博士论文在几年内都是某个子领域的权威工作。对于MIT的博士论文来说,开创一个新领域,或者提出并解决一个新问题,并不是什么了不起的事情。虽然,这并不是必需的。
一般来说,需要两到三年的时间来做博士论文。很多人花一到两年的时间跟硕士生活说再见,以及选题。这段时间可以去尝试一些别的事情,例如做助教或者在某个非AI领域打下坚实的基础或者组织个乐队。博士论文的实际写作时间大约是一年。选题是论文工作中最重要最困难的部分:
  好的论文题目不仅能够表达个人观点,而且可与同行交流。
  选择题目必须是自己愿意倾注热情的。个人远景观点是你作为一个科学家的理由,是你最为关切的意象,原则,思路或者目标。有多种形式。或许你想造一台可与之交谈的计算机,或许你想把人类从计算机的愚蠢使用中拯救出来,或许你想展示万物都是统一的,或许你想在太空发现新生命。远景观点总是比较大的,你的论文并不能实现你的远景,但是可以朝着那个方向努力。
  做论文时,最困难的就是如何将问题消减至可解决的水平,同时规模又足以做一篇论文。“解决AI的宽度优先”是常见毛病的一个例子,题目太大太虚了。你会发现需要不断的缩小题目的范围。选题是一个渐进的过程,不是一个离散的事件,会持续到你宣布论文已经完成那一刻为止。实际上,解决问题通常比精确地描述问题要容易得多。如果你的目标是一个五十年的工程,那么合理的十年工程是什么,一年的呢?如果目标的结构庞大,那么最核心的部件是什么,如何最大程度的了解核心部件?
 一个重要的因素是你可以忍受多大程度的风险。在最终的成功和风险之间需要权衡。这也并不总是对的,AI中有很多研究者尚未涉及的想法。
  好的论文选题有一个中心部分,你确信肯定可以完成,并且你和你的导师都同意这已经满足毕业要求了。除此之外,论文中还有多种扩展,有失败的可能,但如果成功了,会增加论文的精彩程度。虽然不是每一个论文选题都符合这个模式,但值得一试。
  有些人觉得同时在多个项目中工作可以在选题的时候选择可以完成的那个。这确实降低了风险。另外一些人则愿意在做任何工作之前,选一个单独的题目。
  可能你只对某个领域感兴趣,这样你的选题范围就狭窄得多。有时候,你会发现系里的老师没有一个人能够指导你选择的领域。可能还会发现好像那个领域没什么很自然的选题,反而对别的领域有好想法。
  硕士选题比博士选题更难,因为硕士论文必须在你所知不多没有足够自信时就完成。
  博士选题需要考虑的一个因素是是否继续硕士阶段所研究的领域,可能拓展或者作为基础,或者干脆转到另外一个领域。待在同一个领域事情就简单了,可能只需要一到两年就毕业了,特别是如果在硕士阶段的工作中已经发现了适合做博士论的题目。不足之处在于容易定型,改换领域则能增加知识的宽度。
  有的论文题目很新奇,有的则很普通。前者开创了新领域,探索了以前未曾研究过的现象,或者为很难描述的问题提供了有效的解决方法;后者则完美地解决了定义良好的问题。两种论文都是有价值的。选择哪一种论文,取决于个人风格。
  论文的“将来的工作”部分,是很好的论文题目来源。
  无论选什么样的题目,必须是前人未曾做过的。即使是同时有人做的工作 也不好。有很多东西可作,根本无需竞争。还有一种常见的情况,读了别人的论文后感觉很惊慌,好像它已经把你的问题解决了。这通常发生在确定论文题目过程中。
实际上往往只是表面类似,因此将论文送给某个了解你的工作的高人看看,看他怎么说。
   MIT AI实验室的论文并非全是有关人工智能的;有些是有关硬件或者程序 计语言的,也行。
选好题后,即使有点虚,你必须能够回答下列问题:论文的论点是什么?你想说明什么?你必须有一句,一段,五分钟的答案。如果你不知道自己在干什么,别人也不会严肃对待你的选题,更糟糕的是,你会陷在选题——再选题的圈子里而不能自拔。
开始作论文研究后,一定要能够用简单的语言解释每一部分的理论和实现是如何为目标服务的。
记住,一旦选好了题目,你必须与导师就论文完成的标准达成清晰的一致。如果你和他对论文具有不同的期望,最后你肯定死得很惨。必须定义好“完成测试”的标准,像一系列的能够证明你的理论和程序的例子。这是必须做的,即是你的导师并不这么要求。如果环境发生了根本的变化,测试也要随之改变。
首先尝试论文问题的简化版本。用实例检验。在形成理论抽象之前,要完整的探究具有代表性的例子。
做论文的过程中,有很多浪费时间的方式。要避免下列活动(除非确实跟论文相关):语言表达的设计;用户接口或者图形接口上过分讲究;发明新的形式化方法;过分优化代码;创建工具;官僚作风。任何与你的论文不是很相关的工作要尽量减少。
一种众所周知的现象“论文逃避”,就是你突然发现改正某个操作系统的BUG是非常吸引人也很重要的工作。此时你总是自觉不自觉的偏离了论文的工作。要记住自己应该做些什么。(本文对于部分作者来说就属于论文逃避现象)。

11. 研究方法论
本部分内容比较少,请添加研究方法学定义了什么是科研活动,如何开展研究,如何衡量研究的进展,以及什么叫做成功。AI的研究方法学是个大杂烩。不同的方法论定义了不同的研究学派。
方法是工具。使用即可,不要让他们来使用你。不要把自己陷于口号之中:“AI研究需要牢靠的基础”,“哲学家只会高谈阔论,人工智能则需要拼搏”,“在问为什么之前,先搞清楚计算的是什么”。实际上,要在人工智能领域取得成功,你必须擅长各种技术方法,还必须具备怀疑的态度。例如,你必须能够证明定理,同时你还必须思考该定理是否说明了什么。
很多优秀的AI篇章都是巧妙地在几种方法论中取得平衡。例如,你必须选择一条在太多理论(可能与任何实际问题都无关)和繁琐的实现(把实际的解决方法表达得语无伦次)之间的最佳路线。你经常会面临区分“干净”和“肮脏”的研究决策。你应该花时间将问题在某种程度上形式化吗?还是保持问题的原始状态,此时虽然结构不良但更接近实际?采用前一种方法(如果可行的话)会得到清晰确定的结果,但这一过程往往是繁琐的,或者至少不会直接解决问题。后者则有陷入各种处理的漩涡之中的危险。任何工作,任何人,必须作出明智的平衡。
有些工作象科学。你观察人们是怎样学习算术的,大脑是如何工作的,袋鼠是如何跳的,然后搞清楚原理,形成可检验的理论。有些工作象工程:努力创建一个更好的问题解决器或者算法。有些工作象数学:跟形式化打交道,要理解属性,给出证明。有些工作是实例驱动的,目标是解释特定的现象。最好的工作是以上几种的结合。
方法具有社会性,看看别人是如何攻克类似难题的,向别人请教他们是如何处理某种特殊情况的。

12. 情感因素
研究是艰苦的工作,很容易对之失去兴趣。一个令人尴尬的事实是在本实验室读博的学生只有很少比例最后获得学位。有些人离开是因为可以在产业界赚到更多的钱,或者由于个人的原因;最主要的原因则是由于论文。本节的目标是解释这种情况发生的原因,并给出一些有益的建议。
所有的研究都包含风险。如果你的项目不可能失败,那是开发,不是研究。面对项目失败时是多么艰难啊,很容易将你负责的项目失败解释为你自己的失败。虽然,这实际上也证明了你有勇气向困难挑战。
在人工智能领域很少有人总是一直成功,一年年地出论文。实际上,失败是经常的。
你会发现他们经常是同时做几个项目,只有一些是成功的。最终成功的项目也许反复失败过多次。经历过很多由于方法错误的失败之后,才取得最终的成功。
在你以后的工作生涯中,会经历很多失败。但是每一个失败的项目都代表了你的工作,很多思想,思考方式,甚至编写的代码,在若干年后你发现可用于另外一个完全不同的项目。这种效果只有在你积累了相当程度的失败之后才会显现出来。因此要有最初的失败以后将会起作用的信念。
研究所花费的实际时间往往比计划的要多得多。一个小技巧是给每个子任务分配三倍于预期的时间(有些人加了一句:“……,即使考虑了这条原则”)。
成功的关键在于使得研究成为你日常生活的一部分。很多突破和灵感都发生在你散步时。如果无时无刻地都潜意识的思考研究,就会发现思如泉涌。成功的AI研究者,坚持的作用一般大于天资。“尝试”也是很重要的,也就是区分浅薄的和重要的思路的能力。
你会发现自己成功的比例是很随机的。有时候,一个星期就做完了以前需要三个月才能完成的工作。这是令人欣喜的,使得你更愿意在本领域工作下去。其他一些时候,你完全陷在那里,感觉什么也做不了。这种情况很难处理。你会觉得自己永远不会做出任何有价值的东西了,或者觉得自己不再具备研究者的素质了。这些感觉几乎肯定是错误的。如果你是MIT录取的学生,你就是绝对合格的。你需要的是暂停一下,对糟糕的结果保持高度的容忍。
通过定期设置中短期的目标,例如每周的或者每月的,你有很多工作要做。增加达到这些目标的可能性有两种方法,你可以把目标记在笔记本中,并告诉另外一个人。你可以与某个朋友商定交换每周的目标并看谁最终实现了自己的目标。或者告诉你的导师。
有时你会完全陷在那里,类似于写作过程的思路阻塞,这有很多可能的原因,却并无一定的解决方法。
  范围过于宽泛了,可尝试去解决流程中的子问题。
  有时候对你研究能力的怀疑会消磨掉你所有的热情而使得你一事无成。要牢记研究能力是学习而得的技能,而不是天生的。
  如果发现自己陷入严重的困境,一个多星期都毫无进展,尝试每天只工作一小时。几天后,你可能就会发现一切又回到了正轨。
  害怕失败会使得研究工作更加困难。如果发现自己无法完成工作,问问自己是否是由于在逃避用实验检验自己的思路。发现自己最近几个月的工作完全是白费的这种可能,会阻止你进一步开展工作。没有办法避免这种情况,只要认识到失败和浪费也是研究过程的一部分。
  看看Alan Lakien的书《How to Get Control of Your Time and Your Life》,其中包含很多能使你进入充满创造力的状态的无价方法。
很多人发现自己的个人生活和做研究的能力是相互影响的。对于有些人来说,当生活中一切都不如意时,工作是避难所。其他的人如果生活陷入混乱时就无法工作了。如果你觉得自己确实悲痛得难以自拔,去看看心理医生。一份非正式的调查表明,我们
实验室大约有一半的学生在读研期间看过一次心理医生。
使得人工智能那么难的一个原因是没有被普遍接受的成功标准。在数学中,如果你证明了某个定理,你就确实做了某些事情;如果该定理别人都证不出来,那么你的工作是令人兴奋的。人工智能从相关的学科中借来了一些标准,还有自己的一些标准。不同的实践者,子领域和学校会强调不同的标准。MIT比其他的学校更强调实现的质量,但是实验室内部也存在很大的不同。这样的一个后果就是你不可能令所有的人都满意。另外一个后果就是你无法确定自己是否取得了进展,这会让你觉得很不安全。对你工作的评价从“我所见过最伟大的”到“空虚,多余,不明所以”不一而足,这都是很正常的,根据别人的反馈修订自己的工作。
有几种方法有助于克服研究过程中的不安全感。被承认的感觉:包括毕业论文的接受,发表论文等。更重要的是,与尽可能多的人交流你的思路,并听取反馈。首先,他们能贡献有用的思路;其次,肯定有一些人会喜欢你的工作,这会使得你感觉不错。