针对有网友说看不见文章内容, 现提示如下: 点击每一个标题行任一地方都会展开和隐藏此文章内容(不要点击标题). 目前展开隐藏功能只支持IE浏览器,虽然可以改成支持FF浏览器,不过现在一直没时间去弄,等有时间再修改了。 |
blog名称:乱闪Blog 日志总数:267 评论数量:1618 留言数量:-26 访问次数:2662104 建立时间:2005年1月1日 |
|

| |
学习c++的50条忠告(初学者必看)
|
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++! |
|
学编程的人不能不看的好文章
|
看了下面的这篇文章,深有感触,枣子碰到的问题也是我们大多数程序员的通病,也许我们大多数人都只是在做一些比较小型的软件,对软件运行的效率不在乎,就算对速度和效率在乎的也可能是一些在数据库操作方面的。大家看完了,也许会有很多感想,但这只是我同意枣子的个人观点。 〔枣子www.vcroad.net wutao8@263.net〕; 作为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分,1.是我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以 在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net 1.面试经过 大约在年前我接到了台湾瑞晟〔Realtek〕苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的! 21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道编程题目,题目是这样的: 〔由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换〕; 1〕; 写一个函数计算当参数为n〔n很大〕;时的值 1-2+3-4+5-6+7......+n 哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来! 于是很快我给出我的解法: long fn〔long n〕; { long temp=0; int i,flag=1; if〔n<=0〕; { printf〔"error: n must > 0〕;; exit〔1〕;; } for〔i=1;i<=n;i++〕; { temp=temp+flag*i; flag=〔-1〕;*flag; } return temp; } 搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程序优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案! long fn〔long n〕; { long temp=0; int j=1,i=1,flag=1; if〔n<=0〕; { printf〔"error: n must > 0〕;; exit〔1〕;; } while〔j<=n〕; { temp=temp+i; i=-i; i>0?i++:i--; j++; } return temp; } 虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而且运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序! long fn〔long n〕; { if〔n<=0〕; { printf〔"error: n must > 0〕;; exit〔1〕;; } if〔0==n%2〕; return 〔n/2〕;*〔-1〕;; else return 〔n/2〕;*〔-1〕;+n; } 搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的!”多么精辟的语言,我已经不想再说什么了!接着是第二个问题: 2〕;,他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1〔n〕;=n/2!+n/3!+n/4!+n/5!+n/6! fn2〔n〕;=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn〔int n,int flag〕;实现,当flag为0时,实现fn1功能,如果flag为1时实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路: 定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环: for〔i=0;i<6;i++〕; { temp=temp+n/t[flag]; } 最后得到计算值!呵呵,典型的空间换时间的算法! 这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活的问题,那时的我已经很放松了, 因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过! 2.由面试想到的 真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所以我就从我的角度,我的所见所想来谈一些感想: 不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级4个班,98级5个班,99级10个班,2000级17个班,人多了,老师怎么办?我们学校的做法是让研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员〔注意我指的是优秀,只会编几个糟烂程序的人算不上〕;的比例应该是100:0.1 在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件业发展作出贡献,有多少人能真正写出优秀的程序名扬海外! 我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年前www.vcroad.net做为其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上windows的界面和游戏的可玩性,写完后受到了不少好评,我当时真的很佩服自己!但是现在看呢:没有一句注释,好多丑陋的函数名比如:void chushihua〔〕;,好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢?很值得思考啊! 还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,不错,两个程序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它! 3.我打算做的! 其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来! 真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师! (下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是www.vcroad.net原创,谢谢您的支持) 作者:金蝶中间件公司CTO袁红岗 不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。 1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。 2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。 4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。 5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。 6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。 7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。 8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。 这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。 |
|
J2EE初学者需要理解的五个问题
|
一、J2EE提出的背景 1、 企业级应用框架的需求 在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务。这些服务性的软件系列同陈为中间件。 2、 为了通用必须要提出规范,不然无法达到通用 在上面的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于是提出标准的概念。其实J2EE就是基于JAVA技术的一系列标准。 注:中间件的解释 中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力。我们后面说到的容器的概念就是中间件的一种。 二、相关名词解释 容器:充当中间件的角色 WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的 WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。 EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。 WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量 session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。 RMI/IIOP:远程方法调用/internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。 JNDI:JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。 JAVAMAIL:JAVA邮件服务。提供邮件的存储、传输功能。他是JAVA编程中实现邮件功能的核心。相当MS中的EXCHANGE开发包。 JTA:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 JAF:JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。 EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE技术是一种很好的集成实现。 三、J2EE的优越性 1、 基于JAVA 技术,平台无关性表现突出 2、 开放的标准,许多大型公司已经实现了对该规范支持的应用服务器。如BEA ,IBM,ORACLE等。 3、 提供相当专业的通用软件服务。 4、 提供了一个优秀的企业级应用程序框架,对快速高质量开发打下基础 四、体系结构图 mailto:luopc@edu-edu.com.cn了解更详细的通俗体系内容,请给我来信。 五、现状 J2EE是由SUN 公司开发的一套企业级应用规范。现在最高版本是1.4。支持J2EE的应用服务器有IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。. 摘自:javaresearch.org
|
|
散列函数中的碰撞
|
[翻译]王小云论文:散列函数中的碰撞
散列(哈希)函数 MD4、MD5、HAVAL-128 和 RIPEMD 中的碰撞
原著:Wang Xiaoyun Feng Dengguo Lai Xuejia Yu Hongbo [由于不知道各人具体的姓名,不便用中文] (中国济南 山东大学 数学和系统科学院 250100、中国北京 中国科学研究院软件学会 100080、中国上海 上海交通大学计算机科学和机械部) xywang@sdu.edu.cn 原文:收藏 翻译:lover_P
1 MD5 中的碰撞
MD5 由 Ron Rivest [9] 设计,是 MD4 [8] 的加强版。1993 年,Bert den Boer 和 Antoon Bosselaers [1] 发现了 MD5 算法的伪碰撞,它从两组不同的初始值得到了相同的消息。H. Dobbertin [3] 发现了一个单体状态的碰撞,它由一个给定的初始值 IV0' 所得到的两个不同的 512 位消息构成。
IV0': A0' = 0x12AC2375, B0' = 0x3B341042, C0' = 0x5F62B97C, D0' = 0xBA763ED
我们的攻击可以发现很多对具有相同原始初始值 IV0 的两个 1024 位 MD5 消息:
IV0: A0 = 0x67452301, B0 = 0xEFCDAB89, C0 = 098BADEFD, D0 = 0x10325476
M' = M + ΔC1, ΔC1 = (0, 0, 0, 0, 231, ..., 215, ..., 231, 0)
Ni' = Ni + ΔC2, ΔC2 = (0, 0, 0, 0 231, ..., -215, ..., 231, 0)
(位置4、11和14非零)
此时,
MD5(M, Ni) = MD5(M', Ni')
在 IBM P690 上,要用将近一个小时的时间来寻找这样的 M 和 M',之后,只需要 15 秒到 5 分钟的时间就可以找到 Ni 和 Ni',此时的 (M, Ni) 和 (M', Ni') 将产生相同的散列值。此外,我们的攻击可以工作于任意给定的初始值。
下面是会产生碰撞的两对 1024 位消息,这两个例子具有相同的前半部 512 位。
X1
M
2dd31d1 c4eee6c5 69a3d69 5cf9af98 87b5ca2f ab7e4612 3e580440 897ffbb8 634ad55 2b3f409 8388e483 5a417125 e8255108 9fc9cdf7 f2bd1dd9 5b3c3780
N1
d11d0b96 9c7b41dc f497d8e4 d555655a c79a7335 cfdebf0 66f12930 8fb109d1 797f2775 eb5cd530 baade822 5c15cc79 ddcb74ed 6dd3c55f d80a9bb1 e3a7cc35
X1'
M'
2dd31d1 c4eee6c5 69a3d69 5cf9af98 7b5ca2f ab7e4612 3e580440 897ffbb8 634ad55 2b3f409 8388e483 5a41f125 e8255108 9fc9cdf7 72bd1dd9 5b3c3780
N1
d11d0b96 9c7b41dc f497d8e4 d555655a 479a7335 cfdebf0 66f12930 8fb109d1 797f2775 eb5cd530 baade822 5c154c79 ddcb74ed 6dd3c55f 580a9bb1 e3a7cc35
H
9603161f f41fc7ef 9f65ffbc a30f9dbf
X2
M
2dd31d1 c4eee6c5 69a3d69 5cf9af98 87b5ca2f ab7e4612 3e580440 897ffbb8 634ad55 2b3f409 8388e483 5a417125 e8255108 9fc9cdf7 f2bd1dd9 5b3c3780
N2
313e82d8 5b8f3456 d4ac6dae c619c936 b4e253dd fd03da87 6633902 a0cd48d2 42339fe9 e87e570f 70b654ce 1e0da880 bc2198c6 9383a8b6 2b65f996 702af76f
X2'
M'
2dd31d1 c4eee6c5 69a3d69 5cf9af98 7b5ca2f ab7e4612 3e580440 897ffbb8 634ad55 2b3f409 8388e483 5a41f125 e8255108 9fc9cdf7 72bd1dd9 5b3c3780
N2
313e82d8 5b8f3456 d4ac6dae c619c936 34e253dd fd03da87 6633902 a0cd48d2 42339fe9 e87e570f 70b654ce 1e0d2880 bc2198c6 9383a8b6 ab65f996 702af76f
H
8d5e7019 6324c015 715d6b58 61804e08
表1 MD5 的两对碰撞
2 HAVAL-128 中的碰撞
HAVAL 也在提议之内 [10]。HAVAL 也是一种散列算法,通过对任意长度的消息经过 3、4 或 5 遍摘要产生一个长度为 128、160、192 或 224 位的指纹。
对 HAVAL 的一个简化版的攻击由 P. R. Kasselman 和 W. T. Penzhorn 给出 [7],这由 HAVAL-128 的最后一轮(摘要)构成。而我们只通过大约 26 次 HAVAL 计算就破坏了整个 HAVAL-128 算法。这里我们给出 HAVAL-128 碰撞的两个例子,其中
M' = M + ΔC, ΔC = (2i-1, 0, 0, 0, 2i-12, ..., 2i-8, 0, ..., 0)
由于位置 0、11、18 非零,且 i = 0, 1, 2, ..., 31,因此 HAVAL(M) = HAVAL(M')。
M1
6377448b d9e59f18 f2aa3cbb d6cb92ba ee544a44 879fa576 1ca34633 76ca5d4f a67a8a42 8d3adc8b b6e3d814 5630998d 86ea5dcd a739ae7b 54fd8e32 acbb2b36 38183c9a b67a9289 c47299b2 27039ee5 dd555e14 839018d8 aabbd9c9 d78fc632 fff4b3a7 40000096 7f466aac fffffbc0 5f4016d2 5f4016d0 12e2b0 f4307f87
M1'
6377488b d9e59f18 f2aa3cbb d6cb92ba ee544a44 879fa576 1ca34633 76ca5d4f a67a8a42 8d3adc8b b6e3d814 d630998d 86ea5dcd a739ae7b 54fd8e32 acbb2b36 38183c9a b67a9289 c47299ba 27039ee5 dd555e14 839018d8 aabbd9c9 d78fc632 fff4b3a7 40000096 7f466aac fffffbc0 5f4016d2 5f4016d0 12e2b0 f4307f87
H
95b5621c ca62817a a48dacd8 6d2b54bf
M2
6377448b d9e59f18 f2aa3cbb d6cb92ba ee544a44 879fa576 1ca34633 76ca5d4f a67a8a42 8d3adc8b b6e3d814 5630998d 86ea5dcd a739ae7b 54fd8e32 acbb2b36 38183c9a b67a9289 c47299b2 27039ee5 dd555e14 839018d8 aabbd9c9 d78fc632 fff4b3a7 40000096 7f466aac fffffbc0 5f4016d2 5f4016d0 12e2b0 f5b16963
M2'
6377488b d9e59f18 f2aa3cbb d6cb92ba ee544a44 879fa576 1ca34633 76ca5d4f a67a8a42 8d3adc8b b6e3d814 d630998d 86ea5dcd a739ae7b 54fd8e32 acbb2b36 38183c9a b67a9289 c47299ba 27039ee5 dd555e14 839018d8 aabbd9c9 d78fc632 fff4b3a7 40000096 7f466aac fffffbc0 5f4016d2 5f4016d0 12e2b0 f5b16963
H
b0e99492 d64eb647 5149ef30 4293733c
表2 两对碰撞,其中 i = 11 且这两个例子只有最后的一个字不同
3 MD4 中的碰撞
MD4 由 R. L. Rivest [8] 设计。H. Dobbertin 于 Eurocrypto '96 的攻击 [2] 能够找到概率为 1/222 的碰撞。我们的攻击却可以通过手算来找到碰撞,如:
M' = M + ΔC, ΔC = (0, 231, -228 + 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0)
且 MD4(M) = MD4(M')。
M1
4d7a9c83 56cb927a b9d5a578 57a7a5ee de748a3c dcc366b3 b683a020 3b2a5d9f c69d71b3 f9e99198 d79f805e a63bb2e8 45dd8e31 97e31fe5 2794bf08 b9e8c3e9
M1'
4d7a9c83 d6cb927a 29d5a578 57a7a5ee de748a3c dcc366b3 b683a020 3b2a5d9f c69d71b3 f9e99198 d79f805e a63bb2e8 45dc8e31 97e31fe5 2794bf08 b9e8c3e9
H
5f5c1a0d 71b36046 1b5435da 9b0d807a
M2
4d7a9c83 56cb927a b9d5a578 57a7a5ee de748a3c dcc366b3 b683a020 3b2a5d9f c69d71b3 f9e99198 d79f805e a63bb2e8 45dd8e31 97e31fe5 f713c240 a7b8cf69
M2'
4d7a9c83 d6cb927a 29d5a578 57a7a5ee de748a3c dcc366b3 b683a020 3b2a5d9f c69d71b3 f9e99198 d79f805e a63bb2e8 45dc8e31 97e31fe5 f713c240 a7b8cf69
H
e0f76122 c429c56c ebb5e256 b809793
表3 MD4 的两对碰撞
4 RIPEMD 中的碰撞
RIPEMD 由 RIPE 项目(RACE Integrrity Primitives Evalustion, 1988-1992)开发。在 1995 年,H. Dobbertin 提供的只有两轮(摘要)的 RIPEMD 简化版 [4] 并不是无碰撞的。而我们发现完整的 RIPEMD 也不是无碰撞的。下面是 RIPEMD 的两对碰撞:
Mi' = Mi + ΔC, ΔC = (0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 218 + 231, 0, 0, 0, 0, 231)
M1
579faf8e 9ecf579 574a6aba 78413511 a2b410a4 ad2f6c9f b56202c 4d757911 bdeaae7 78bc91f2 47bc6d7d 9abdd1b1 a45d2015 817104ff 264758a8 61064ea5
M1'
579faf8e 9ecf579 574a6aba 78513511 a2b410a4 ad2f6c9f b56202c 4d757911 bdeaae7 78bc91f2 c7c06d7d 9abdd1b1 a45d2015 817104ff 264758a8 e1064ea5
H
1fab152 1654a31b 7a33776a 9e968ba7
M2
579faf8e 9ecf579 574a6aba 78413511 a2b410a4 ad2f6c9f b56202c 4d757911 bdeaae7 78bc91f2 47bc6d7d 9abdd1b1 a45d2015 a0a504ff b18d58a8 e70c66b6
M2'
579faf8e 9ecf579 574a6aba 78513511 a2b410a4 ad2f6c9f b56202c 4d757911 bdeaae7 78bc91f2 c7c06d7d 9abdd1b1 a45d2015 a0a504ff b18d58a8 670c66b6
H
1f2c159f 569b31a6 dfcaa51a 25665d24
表4 RIPEMD 中的碰撞
5 备注
除了上面我们破坏的几个散列函数,其他一些散列函数也并不具有理想的安全性。例如,SHA-0 [6] 的碰撞就可以通过大约 240 次 SHA-0 计算找到,以及 HAVAL-160 的一个概率为 1/232 的碰撞也是可以被找到的。
注意这篇报告中的所有消息和其他的值都是按照32位字分组的,每个32位字中的最左边一个字节是关键字节(译注:大尾数法表示)。
1 B. den Boer, Antoon Bosselaers, Collisions for the Compression Function of MD5, Eurocrypto,93. 2 H. Dobbertin, Cryptanalysis of MD4, Fast Software Encryption, LNCS 1039, D. , Springer-Verlag, 1996. 3 H. Dobbertin, Cryptanalysis of MD5 compress, presented at the rump session of EurocrZpt'96. 4 Hans Dobbertin, RIPEMD with Two-round Compress Function is Not Collision-Free, J. Cryptology 10(1),1997. 5 H. Dobbertin, A. Bosselaers, B. Preneel, "RIPMEMD-160: A Strengthened Version of RIPMMD," Fast Software EncrZption, LNCS 1039, D.Gollmann, Ed., Springer-Verlag, 1996, pp. 71-82. 6 FIPS 180-1, Secure hash standard, NIST, US Department of Commerce, Washington D. C., April 1995. 7 P. R. Kasselman, W T Penzhorn , Cryptananlysis od reduced version of HAVAL, Vol. 36, No. 1, Electronic Letters, 2000. 8 R. L. Rivest, The MD4 Message Digest Algorithm, Request for Comments (RFC)1320, Internet Activities Board, Internet Privacy Task Force, April 1992. 9 R. L Rivest, The MD5 Message Digest Algorithm, Request for Comments (RFC)1321, Internet Activities Board, Internet PrivacZ Task Force, April 1992.3RIPEMD-1281 10 Y. Zheng, J. Pieprzyk, J. Seberry, HAVAL--A One-way Hashing Algorithm with Variable Length of Output, Auscrypto'92. |
|
关于最近研究XmlHttp的一些心得
|
最近研究了一下xmlhttp,还是很有意思的东东。我喜欢让它在IE6和firefox中都运行正常,后台用的是dom4j进行解析。
1.下载 http://webfx.eae.net/dhtml/xmlextras/xmlextras.zip 包,里面有个xmlextras.js,把它拿出来,我用来生成XmlHttp对象。 2.在xmlextras.js中加上以下代码: // check browsers var ua = navigator.userAgent; var opera = /opera [56789]|opera\/[56789]/i.test(ua); var ie = !opera && /msie [56789]/i.test(ua); // preventing opera to be identified as ie var mozilla = !opera && /mozilla\/[56789]/i.test(ua); // preventing opera to be identified as mz /* end browser checks */if(mozilla) { XMLDocument.prototype.selectSingleNode = function(tagname) { var result = this.evaluate(tagname, this, null, 0, null); return result.iterateNext(); } XMLDocument.prototype.selectNodes = function(tagname) { var result = this.evaluate(tagname, this, null, 0, null); var xns = new XMLNodes(result); return xns; } //定义一个新的类以兼容 IE 中 selectNodes() 的返回类型。 function XMLNodes(result) { this.length = 0; this.pointer = 0; this.array = new Array(); var i = 0; while((this.array[i]=result.iterateNext())!=null) i++; this.length = this.array.length; } XMLNodes.prototype.nextNode = function() { this.pointer++; return this.array[pointer-1]; } XMLNodes.prototype.reset = function() { this.pointer = 0; } } 让firefox支持和IE一样的一些接口。
3.XmlHttp返回之后,如果需要XmlHttp.responseXML对象,在firefox中一切正常,但是在ie6中就不常了, 所以需要,重新 new 一个 XmlDocument:
var doc = XmlDocument.create(); doc.loadXML(xmlHttp.responseText); 4.如果
|
|
XML应用,你知道多少?
|
将改变我们生活的XML有关的这些应用,你知道多少?
1. XHTML XHTML 1.0 [W3C 推荐标准]基本上是对 HTML 4 的改写,使其成为结构良好的 XML。HTML 是一种 SGML 应用,当 XML 作为对 SGML 在 Web 应用上的简化和规范化开发出来的时候,HTML(本身是 Web 上的通用语言)就成为采用 XML 的首选目标。于是出现了 HTML 的一种变体,称为 XHTML。XHTML 研究的目标是一种更容易解析(因为 XML 的语法更加严格)的 HTML 语言。XHTML 很容易用现成的 XML 工具处理,力求更好地分离内容与表示。XHTML 是最古老的 XML 应用之一,有许多利益集团在不同的部分和版本中起过作用。我将尽力对其中的大部分加以概括。
与三种HTML 4 DTD——Strict、Transitional 和 Frameset 对应,XHTML 1.0 定义了不同的 DTD 和名称空间。Modularization of XHTML [W3C 推荐标准]提供了一个框架,把 XHTML 分解成单独的模块,作为不同的 DTD 定义。比如,用于定义列表的所有元素和属性组成一个模块,而和表示有关的元素类型则放在另一个模块中。这样,就可以通过增加、减少和修改通用的独立模块开发和重新定义 XHTML。沿着这条路线,第一步就是 XHTML Basic [W3C 推荐标准],它定义了任何作为 XHTML 的语言都必须具有的最小 XHTML 模块集。XHTML Basic 本身可以作为 Web 客户的内容语言,如移动电话、PDA、寻呼机和置顶盒。XHTML 1.1 [W3C 推荐标准]基本上就是使用模块框架分解的 XHTML 1.0 Strict DTD。
XHTML 2.0 [开发中]是对 XHTML 的重写,没有考虑与 HTML 的向后兼容。这种想法差不多就是为 Web 编写一种全新的内容语言,学习过去的经验而又不束缚于过去。其中大的变化有:
取消了 <br/>、 <img/> 以及其他认为过于面向表示的元素
取消 HTML 风格的表单,改为支持 XForm(本系列文章前已述及)
取消 HTML 风格的链接改为 HLink(本系列文章中前已述及)
用 XML Event 代替许多 JavaScript 驱动的动态任务
用 XFrame 代替 HTML 风格的框架
更重要的是,XHTML 2.0 做了许多扩展,增强了作者表达内容结构和含义的能力。打破向后兼容性引起了争议。一些评论者认为保持 (X)HTML 的名称只修改版本号会造成混乱。其他人则说这些修改非常必要,而 XHTML 实际上仍然是一种可扩展超本文标记语言,因此保留原来的名称非常合适。
XHTML 常常和其他嵌入格式一起使用,如 MathML、RDF、SVG、SMIL 和 VoiceXML(后面都将予以介绍)。这种混合文档称为多模的或者非单体的。W3C、ISO 以及其他组织正投入巨大的努力鼓励对这种文档的强力支持。
2. Docbook Docbook 原来是一种流行的 SGML 格式,用于编纂书籍和文档,尤其是带有较多技术特性的文档。后来增加了一个 XML 版本,DocBook XML V4.2 [OASIS 委员会规范]是最新的成果。Docbook 非常流行,得到了许多工具的支持,其中很多工具非常成熟。它作为避免混合表示问题与内容格式的一个范例而受人尊敬。最近,一些开发人员开始抱怨它从过去的版本继承了太多的负担,纷纷讨论(甚至包括它的主要开发者 Norm Walsh)为这种格式重新开发一种新的、不向后兼容的版本。
Text Encoding Initiative (TEI) 甚至比 Docbook 更古老,这种文档格式在某种程度上与 Docbook 的应用范围类似,区别在于它通常处理的是人文学科的文本而非技术文本。TEI 本身不是一种 SGML 或 XML 应用,而是一组用于构造语言(DTD)的指导原则。最常用的 TEI 变体是 TEI Lite [社区标准]。TEI 以其复杂性驰名,这在一定程度上限制了它被大量采用,但是它得到了很好的维护,并在一些社区中有狂热的用户。
3. XSL-FO Extensible Stylesheet Language Formatting Objects (XSL-FO) [W3C 推荐标准]是一种使用 XML 定义的表示语言。(注意,链接规范的标题是 "Extensible Stylesheet Language (XSL)",但内容事实上只包括 XSL 的格式化对象方面。)XSL-FO 是一种 XML 格式,可被任何用户代理用于按照开发人员给定的精确规范呈现内容。它的角色类似于 Web 用户界面中的 XHTML, 但是更加复杂,以便表达适用于打印形式的格式化细节。这些细节和级联样式表(CSS——本系列文章前已述及)中所规定的没有什么不同,但是在 XSL-FO 中,这些细节构成了这种标记语言本身的一个实例,而不是呈现单个标记的指令。
XSL-FO 常用作 XSLT(本系列文章前已述及)的输出格式。事实上,最初 XSLT 和 XSL-FO 是一个系统,称为 XSL,但是工作组明智地将这两个部分分成了两个不同的规范。有多种开放源代码的或者商业化的工具可以将 XSL-FO 转化成 TeX、Adobe 的 PDF 以及其他适于打印和排版的(非 XML)输出格式。这种应用模式使 XSL-FO 非常流行,但是 XSL-FO 一直希望成为 WYSIWYG 工具或者类似工具的原生呈现格式,它的这种应用也开始受到推动。XSL-FO 1.1 [开发中]是这种语言的升级,增加了注释、索引、书签之类的特性,并增强了图像的处理能力。
4. SVG Scalable Vector Graphics (SVG) 1.1 [W3C 推荐标准]是一种描述二维图像的语言。它主要是一种向量图形语言,尽管也支持一些光栅图形特性。SVG 的非凡雄心是提供一种实用的、灵活的、使用(以冗长闻名的)XML 表示的图像格式,而且在这点上做的很成功。SVG 的特性包括:嵌套转换、剪辑路径、alpha 蒙板、光栅过滤效果、模板对象,当然还有可扩展性。SVG 也支持动画、缩放和移动视图、各种图形原语、分组、脚本、超链接、结构化元数据、CSS、一种专用的 DOM 超集(DOM 和 CSS 前已述及),并且很容易嵌入其他 XML 文档。SVG 的一些设计决策经历了不很激烈的争论,其中包括向量路径在单个属性中使用空格分隔的数字列表表示,但是总体上 SVG 已经成为应用最广泛的并受到热烈欢迎的一种 XML 应用。该规范已经被翻译成了多种语言。
SVG 1.1 是对 SVG 1.0 [W3C 推荐标准]的更新,增加了一些新特性,也包括一些更正。最大的区别是 SVG 1.1 以类似 XHTML 1.1+ 的方式进行了模块化。这种模块化使得 SVG 能够扩展甚至精简,就像 Mobile SVG Profiles: SVG Tiny and SVG Basic [W3C 推荐标准]那样。后者定义了 SVG 模块的精简集,适用于移动电话和 PDA。SVG 1.2 [开发中]致力于增加许多新工具,使 SVG 不仅作为一种图像格式,而且成为具有广泛应用前景的平台。
5. VoiceXML Voice Extensible Markup Language (VoiceXML) Version 2.0 [开发中]是一种创建音频、语音和电话应用程序的语言。它包含的音频对话框具有以下特点:语音合成、数字音频、声音识别和电话音质拨号输入和话音输入录制。它寻求把基于 Web 的开发和内容传递的优势带入交互式语音响应应用程序中。VoiceXML 是 W3C Speech Interface Framework [开发中]的一部分,后者还包括其他的标准,由于这些标准与电话行业的界限非常模糊,这里就不讨论了。VoiceXML 2.0 标志着 VoiceXML 规范从 VoiceXML Forum 转向 W3C,前者仍然在努力改进这种技术。关于 VoiceXML 已经有了一些专利声明,其中一些意味着 VoiceXML 用户将面临版权和许可费的问题。
6. MathML Mathematical Markup Language (MathML) 2.0 [W3C 推荐标准]是一种 XML 语言,按照该规范的说法,其目的是“促进数学和科学内容在 Web 上,以及其他应用程序如计算机代数系统、打印排版及语音合成中的使用和重用。MathML 可用于对能够高质量显示的数学符号表示编码,也可用于为语义起着更重要作用的应用程序对数学内容编码,如科学软件或语音合成。”MathML 常用于在教育、科学论文、工业规范、规章内容等领域中表示等式、公式或者类似的信息。这个版本对 MathML 1.01 [W3C 推荐标准]增加了一些相对较新的特性。MathML 经常和 XHTML、SVG 以及其他应用一起使用。
7. Synchronized Multimedia Integration Language (SMIL) SMIL 2.0 [W3C 规范],按照 W3C 的说法,“支持简单地编辑交互式[音频/视频]演示文稿。SMIL 通常用于[‘丰富媒体’或多媒体]演示文稿,其中集成了流式音频和视频、图像、文本或者任何其他媒体类型。SMIL是一种简单易学的类 HTML 语言,许多 SMIL 演示文稿都是使用简单的[文本编辑器]编写的。”SMIL 是 W3C Synchronized Multimedia activity 的一个产品,已经升级到了 SMIL 1.0 [W3C 推荐标准],增加了和动画、元数据、内容控制、链接、定时与同步、事件处理、过渡效果等有关的特性。
8. RDF 差不多在 W3C 致力于以 XML 为代表的下一代标记技术的同时,它也开始了下一代 Web 资源形式化描述技术的研究。Resource Description Framework (RDF) [W3C 推荐标准]是一种模型,用于描述一组 Web 资源声明。这些声明被概念化为三元组,每一个都包含主语(一个 URI——本系列文章前已述及)、谓词(也是一个 URI)和对象(一个 URI 或字面数据值)。要理解这种声明的意义,可以想一想描述 Web 页面的 HTML meta 标签。如果套用在 RDF 上,主语就是 Web 页面本身的 URI,谓词是一个标准 URI 表示一般的描述,而对象就是描述的实际文本。通过大量使用 URI,RDF 希望尽量减少这些声明成分标识的歧义,从而更加形式化以便于机器处理。RDF 能否实现这一目标还存在争议,但是 RDF 以其非常活跃的社区和范围广泛的工具而知名。
RDF 是 W3C Semantic Web activity 的支柱;Semantic Web 是 Web 的一种视像,不仅仅是内容的表示,还包括内容的注释以帮助表达它的含义。比如,在 Semantic Web 中描述 Web 资源时,可以区分 "python"(一种蛇)和 "python"(一种计算机编程语言)这样的概念。RDF 标准化由大量规范组成,包括:
Resource Description Framework (RDF): Concepts and Abstract Syntax [W3C 推荐标准]提出了目标、核心概念、基本数据模型以及 RDF 的抽象语法。
RDF/XML Syntax Specification [W3C 推荐标准]定义了 RDF 的一种通用 XML 表示。许多观察者包括我自己,都抱怨 RDF/XML 语法可怜的标记设计。
RDF Vocabulary Description Language 1.0: RDF Schema [W3C 推荐标准]定义了一个 RDF 词汇表,可用于定义其他 RDF 词汇表。
RDF Semantics [W3C 推荐标准]不是供内心缺乏勇气的人看的,它探讨了 RDF 数据模型底层的形式数学理论。
Web Ontology Language (OWL) [W3C 推荐标准]是 RDF 的一个应用,通常用 RDF/XML 编码,增加了丰富的词汇表可用于对 RDF 资源进行正式分类和归纳。
9. XML Topic Maps Topic Maps [ISO 国际标准,编号 13250]提供了组织信息的一个系统,在某些方面是与 RDF 竞争的一种 Semantic Web 技术。具体而言,XML Topic Maps [ISO 13250 的一部分]是 Topic Maps 一种 Web 友好的版本,使用 XML 语法,并以 URI 作为标识符。与 RDF 相似,Topic Maps 定义了一种类似图的模型,但更细微的差别和这样一个事实有关,即 Topic Maps 的一个重要规定是实际概念与其计算机表示的区分。Topic Maps 的这种做法是 Semantic Web 的一种基本工具,还是增加了不必要的复杂性,在 Topic Maps 与 RDF 支持者之间的这种争论永远不会划上句号。XML Topic Maps 使用了一种非常清晰的 XML 语法,这种语法基于 XLink。
------------参考自IBM developworks |
|
最全的HTML特殊字符列表
|
  Nonbreaking space ¡ ¡ ¡ Inverted exclamation ¢ ¢ ¢ Cent sign £ £ £ Pound sterling ¤ ¤ ¤ General currency sign ¥ ¥ ¥ Yen sign ¦ ¦ ¦ or &brkbar; Broken vertical bar § § § Section sign ¨ ¨ ¨ or ¨ Diæresis / Umlaut © © © Copyright ª ª ª Feminine ordinal « « « Left angle quote, guillemot left ¬ ¬ ¬ Not sign ­ ­ Soft hyphen ® ® ® Registered trademark ¯ ¯ ¯ or &hibar; Macron accent ° ° ° Degree sign ± ± ± Plus or minus ² ² ² Superscript two ³ ³ ³ Superscript three ´ ´ ´ Acute accent µ µ µ Micro sign ¶ ¶ ¶ Paragraph sign · · · Middle dot ¸ ¸ ¸ Cedilla ¹ ¹ ¹ Superscript one º º º Masculine ordinal » » » Right angle quote, guillemot right ¼ ¼ ¼ Fraction one-fourth ½ ½ ½ Fraction one-half ¾ ¾ ¾ Fraction three-fourths ¿ ¿ ¿ Inverted question mark À À À Capital A, grave accent Á Á Á Capital A, acute accent    Capital A, circumflex à à à Capital A, tilde Ä Ä Ä Capital A, diæresis / umlaut Å Å Å Capital A, ring Æ Æ Æ Capital AE ligature Ç Ç Ç Capital C, cedilla È È È Capital E, grave accent É É É Capital E, acute accent Ê Ê Ê Capital E, circumflex Ë Ë Ë Capital E, diæresis / umlaut Ì Ì Ì Capital I, grave accent Í Í Í Capital I, acute accent Î Î Î Capital I, circumflex Ï Ï Ï Capital I, diæresis / umlaut Ð Ð Ð Capital Eth, Icelandic Ñ Ñ Ñ Capital N, tilde Ò Ò Ò Capital O, grave accent Ó Ó Ó Capital O, acute accent Ô Ô Ô Capital O, circumflex Õ Õ Õ Capital O, tilde Ö Ö Ö Capital O, diæresis / umlaut × × × Multiply sign Ø Ø Ø Capital O, slash Ù Ù Ù Capital U, grave accent Ú Ú Ú Capital U, acute accent Û Û Û Capital U, circumflex Ü Ü Ü Capital U, diæresis / umlaut Ý Ý Ý Capital Y, acute accent Þ Þ Þ Capital Thorn, Icelandic ß ß ß Small sharp s, German sz à à à Small a, grave accent á á á Small a, acute accent â â â Small a, circumflex ã ã ã Small a, tilde ä ä ä Small a, diæresis / umlaut å å å Small a, ring æ æ æ Small ae ligature ç ç ç Small c, cedilla è è è Small e, grave accent é é é Small e, acute accent ê ê ê Small e, circumflex ë ë ë Small e, diæresis / umlaut ì ì ì Small i, grave accent í í í Small i, acute accent î î î Small i, circumflex ï ï ï Small i, diæresis / umlaut ð ð ð Small eth, Icelandic ñ ñ ñ Small n, tilde ò ò ò Small o, grave accent ó ó ó Small o, acute accent ô ô ô Small o, circumflex õ õ õ Small o, tilde ö ö ö Small o, diæresis / umlaut ÷ ÷ ÷ Division sign ø ø ø Small o, slash ù ù ù Small u, grave accent ú ú ú Small u, acute accent û û û Small u, circumflex ü ü ü Small u, diæresis / umlaut ý ý ý Small y, acute accent þ þ þ Small thorn, Icelandic ÿ ÿ ÿ Small y, diæresis / umlaut Latin Extended-B ? &fnof ƒ latin small f with hook, =function, =florin, U0192 ISOtech Greek Α &Alpha Α greek capital letter alpha, U0391 Β &Beta Β greek capital letter beta, U0392 Γ &Gamma Γ greek capital letter gamma, U0393 ISOgrk3 Δ &Delta Δ greek capital letter delta, U0394 ISOgrk3 Ε &Epsilon Ε greek capital letter epsilon, U0395 Ζ &Zeta Ζ greek capital letter zeta, U0396 Η &Eta Η greek capital letter eta, U0397 Θ &Theta Θ greek capital letter theta, U0398 ISOgrk3 Ι &Iota Ι greek capital letter iota, U0399 Κ &Kappa Κ greek capital letter kappa, U039A Λ &Lambda Λ greek capital letter lambda, U039B ISOgrk3 Μ &Mu Μ greek capital letter mu, U039C Ν &Nu Ν greek capital letter nu, U039D Ξ &Xi Ξ greek capital letter xi, U039E ISOgrk3 Ο &Omicron Ο greek capital letter omicron, U039F Π &Pi Π greek capital letter pi, U03A0 ISOgrk3 Ρ &Rho Ρ greek capital letter rho, U03A1 Σ &Sigma Σ greek capital letter sigma, U03A3 ISOgrk3 Τ &Tau Τ greek capital letter tau, U03A4 Υ &Upsilon Υ greek capital letter upsilon, U03A5 ISOgrk3 Φ &Phi Φ greek capital letter phi, U03A6 ISOgrk3 Χ &Chi Χ greek capital letter chi, U03A7 [Page]
Ψ &Psi Ψ greek capital letter psi, U03A8 ISOgrk3 Ω &Omega Ω greek capital letter omega, U03A9 ISOgrk3 a &alpha α greek small letter alpha, U03B1 ISOgrk3 b &beta β greek small letter beta, U03B2 ISOgrk3 g &gamma γ greek small letter gamma, U03B3 ISOgrk3 d &delta δ greek small letter delta, U03B4 ISOgrk3 ε &epsilon ε greek small letter epsilon, U03B5 ISOgrk3 ζ &zeta ζ greek small letter zeta, U03B6 ISOgrk3 η &eta η greek small letter eta, U03B7 ISOgrk3 θ &theta θ greek small letter theta, U03B8 ISOgrk3 ι &iota ι greek small letter iota, U03B9 ISOgrk3 κ &kappa κ greek small letter kappa, U03BA ISOgrk3 λ &lambda λ greek small letter lambda, U03BB ISOgrk3 μ &mu μ greek small letter mu, U03BC ISOgrk3 ν &nu ν greek small letter nu, U03BD ISOgrk3 ξ &xi ξ greek small letter xi, U03BE ISOgrk3 ο &omicron ο greek small letter omicron, U03BF NEW p &pi π greek small letter pi, U03C0 ISOgrk3 ρ &rho ρ greek small letter rho, U03C1 ISOgrk3 ? &sigmaf ς greek small letter final sigma, U03C2 ISOgrk3 σ &sigma σ greek small letter sigma, U03C3 ISOgrk3 τ &tau τ greek small letter tau, U03C4 ISOgrk3 υ &upsilon υ greek small letter upsilon, U03C5 ISOgrk3 φ &phi φ greek small letter phi, U03C6 ISOgrk3 χ &chi χ greek small letter chi, U03C7 ISOgrk3 ψ &psi ψ greek small letter psi, U03C8 ISOgrk3 ω &omega ω greek small letter omega, U03C9 ISOgrk3 ? &thetasym ϑ greek small letter theta symbol, U03D1 NEW ? &upsih ϒ greek upsilon with hook symbol, U03D2 NEW ? &piv ϖ greek pi symbol, U03D6 ISOgrk3 General Punctuation ? &bull • bullet, =black small circle, U2022 ISOpub … &hellip … horizontal ellipsis, =three dot leader, U2026 ISOpub ′ &prime ′ prime, =minutes, =feet, U2032 ISOtech ″ &Prime ″ double prime, =seconds, =inches, U2033 ISOtech  ̄ &oline ‾ overline, =spacing overscore, U203E NEW ? &frasl ⁄ fraction slash, U2044 NEW Letterlike Symbols ? &weierp ℘ script capital P, =power set, =Weierstrass p, U2118 ISOamso ? &image ℑ blackletter capital I, =imaginary part, U2111 ISOamso ? &real ℜ blackletter capital R, =real part symbol, U211C ISOamso ? &trade ™ trade mark sign, U2122 ISOnum ? &alefsym ℵ alef symbol, =first transfinite cardinal, U2135 NEW Arrows ← &larr ← leftward arrow, U2190 ISOnum ↑ &uarr ↑ upward arrow, U2191 ISOnum → &rarr → rightward arrow, U2192 ISOnum ↓ &darr ↓ downward arrow, U2193 ISOnum ? &harr ↔ left right arrow, U2194 ISOamsa ? &crarr ↵ downward arrow with corner leftward, =carriage return, U21B5 NEW ? &lArr ⇐ leftward double arrow, U21D0 ISOtech ? &uArr ⇑ upward double arrow, U21D1 ISOamsa ? &rArr ⇒ rightward double arrow, U21D2 ISOtech ? &dArr ⇓ downward double arrow, U21D3 ISOamsa ? &hArr ⇔ left right double arrow, U21D4 ISOamsa Mathematical Operators ? &forall ∀ for all, U2200 ISOtech ? &part ∂ partial differential, U2202 ISOtech ? &exist ∃ there exists, U2203 ISOtech ? &empty ∅ empty set, =null set, =diameter, U2205 ISOamso ? &nabla ∇ nabla, =backward difference, U2207 ISOtech ∈ &isin ∈ element of, U2208 ISOtech ? ¬in ∉ not an element of, U2209 ISOtech ? &ni ∋ contains as member, U220B ISOtech ∏ &prod ∏ n-ary product, =product sign, U220F ISOamsb ∑ &sum − n-ary sumation, U2211 ISOamsb ? &minus − minus sign, U2212 ISOtech ? &lowast ∗ asterisk operator, U2217 ISOtech √ &radic √ square root, =radical sign, U221A ISOtech ∝ &prop ∝ proportional to, U221D ISOtech ∞ &infin ∞ infinity, U221E ISOtech ∠ &ang ∠ angle, U2220 ISOamso ∧ &and ⊥ logical and, =wedge, U2227 ISOtech ∨ &or ⊦ logical or, =vee, U2228 ISOtech ∩ &cap ∩ intersection, =cap, U2229 ISOtech ∪ &cup ∪ union, =cup, U222A ISOtech ∫ &int ∫ integral, U222B ISOtech ∴ &there4 ∴ therefore, U2234 ISOtech ~ &sim ∼ tilde operator, =varies with, =similar to, U223C ISOtech ? &cong ≅ approximately equal to, U2245 ISOtech ≈ &asymp ≅ almost equal to, =asymptotic to, U2248 ISOamsr ≠ &ne ≠ not equal to, U2260 ISOtech ≡ &equiv ≡ identical to, U2261 ISOtech ≤ &le ≤ less-than or equal to, U2264 ISOtech ≥ &ge ≥ greater-than or equal to, U2265 ISOtech ? &sub ⊂ subset of, U2282 ISOtech ? &sup ⊃ superset of, U2283 ISOtech ? &nsub ⊄ not a subset of, U2284 ISOamsn ? &sube ⊆ subset of or equal to, U2286 ISOtech ? &supe ⊇ superset of or equal to, U2287 ISOtech ⊕ &oplus ⊕ circled plus, =direct sum, U2295 ISOamsb ? &otimes ⊗ circled times, =vector product, U2297 ISOamsb ⊥ &perp ⊥ up tack, =orthogonal to, =perpendicular, U22A5 ISOtech ? &sdot ⋅ dot operator, U22C5 ISOamsb Miscellaneous Technical ? &lceil ⌈ left ceiling, =apl upstile, U2308, ISOamsc ? &rceil ⌉ right ceiling, U2309, ISOamsc ? &lfloor ⌊ left floor, =apl downstile, U230A, ISOamsc ? &rfloor ⌋ right floor, U230B, ISOamsc ? &lang 〈 left-pointing angle bracket, =bra, U2329 ISOtech ? &rang 〉 right-pointing angle bracket, =ket, U232A ISOtech Geometric Shapes ? &loz ◊ lozenge, U25CA ISOpub Miscellaneous Symbols ? &spades ♠ black spade suit, U2660 ISOpub ? &clubs ♣ black club suit, =shamrock, U2663 ISOpub ? &hearts ♥ black heart suit, =valentine, U2665 ISOpub ? &diams ♦ black diamond suit, U2666 ISOpub Using NE NE NCR Using NCR C0 Controls and Basic Latin " " " quotation mark, =apl quote, U0022 ISOnum & & & ampersand, U0026 ISOnum < < < less-than sign, U003C ISOnum > > > greater-than sign, U003E ISOnum Latin Extended-A ? &OElig Œ latin capital ligature oe, U0152 ISOlat2 ? &oelig œ latin small ligature oe, U0153 ISOlat2 ? &Scaron Š latin capital letter s with caron, U0160 ISOlat2 ? &scaron š latin small letter s with caron, U0161 ISOlat2 ? &Yuml Ÿ latin capital letter y with diaeresis, U0178 ISOlat2 Spacing Modifier Letters ? &circ ˆ modifier letter circumflex accent, U02C6 ISOpub ? &tilde ˜ small tilde, U02DC ISOdia General Punctuation ? &ensp   en space, U2002 ISOpub ? &emsp   em space, U2003 ISOpub ? &thinsp   thin space, U2009 ISOpub ? &zwnj ‌ zero width non-joiner, U200C NEW RFC 2070 ? &zwj ‍ zero width joiner, U200D NEW RFC 2070 ? &lrm ‎ left-to-right mark, U200E NEW RFC 2070 ? &rlm ‏ right-to-left mark, U200F NEW RFC 2070 – &ndash – en dash, U2013 ISOpub — &mdash — em dash, U2014 ISOpub ‘ &lsquo ‘ left single quotation mark, U2018 ISOnum ’ &rsquo ’ right single quotation mark, U2019 ISOnum ? &sbquo ‚ single low-9 quotation mark, U201A NEW “ &ldquo “ left double quotation mark, U201C ISOnum ” &rdquo ” right double quotation mark, U201D ISOnum ? &bdquo „ double low-9 quotation mark, U201E NEW ? &dagger † dagger, U2020 ISOpub ? &Dagger ‡ double dagger, U2021 ISOpub ‰ &permil ‰ per mille sign, U2030 ISOtech ? &lsaquo ‹ single left-pointing angle quotation mark, U2039 ISO proposed ? &rsaquo › single right-pointing angle quotation mark, U203A ISO proposed |
|
MSCOMM控件的属性
|
CommPort :设置或返回端口代号。VB中有16个端口限制。
MSComm1.CommPort=1 ‘使用Com1端口
l Setting :设置初始化参数。以字符串形式设置或传回连接速度,奇偶校验,数据位,停止位等4个参数。如“9600,N,8,1”,奇为O,偶为E。
MSComm1.Setting=”9600,N,8,1”
l Input :从输入寄存器传回并移除已被读取的字符。
Buffer=MSComm1.Input ,读入Buffer字符串变量中
l Output : 写入输出寄存器
l InputLen:指定由串行端口读入的字符串长度。默认值为0,此值会使得控件的Input指令一次读取所有输入缓冲区的数据。如果我们需要对固定的字符串长度做特别的运算时,要设置该属性。
l HandShaking :指定通信两方的握手协议。握手协议要做的就是数据传输速度的控制,也称为”流量控制(Flow Control)”。简单说,如果一方送出的数据的速度超过另一方所能处理的速度,接收方便会要求传送方暂停送出数据。
RTS/CTS 握手协议是硬件握手协议,它用RTS脚位及CTS脚位的功能。
XON/XOFF 即软件握手协议。它使用XON表示暂停数据的传送;而使用XOFF表示恢复传送。其中由于XON使用chr(19)作为控制信号,若所传送的数据中含有chr(19)字符,将使得传送暂停,而发生错误。
l Rthreshold: 设置或返回接收事件的字符数。当接收寄存器达到所设置的字符数时,将会引发Oncomm事件中的接收事件。默认为0。表示无论寄存器有多少字符均不会引发接收事件。
l CommEvent:只要由通信错误或事件发生时都会产生Oncomm事件。
l DTREnable:判断在通信时是否启用Data Terminal Ready(DTR)线路。DTR是由计算机传送到调制解调器的信号,指示计算机在等待接收传输。当设为True时,DTR线会在连接端口打开时置高电位。在端口关闭时置低电位。使用者可以置低电位来挂断电话。
l RTSEnable:决定是否使Request To Send 线有效。一般情况下,由计算机传送RTS信号到调制解调器,以请示准许传送数据。True为高电位。
l InBufferCount:传回在接收寄存器中的字符数。设0,以清空接收寄存器。
l InputMode:取出接收寄存器数据的形式。(字符串或二进制形式),对于数据中只用ANSI字符集,则使用字符串形式。ComInputModeText。有控制字符Nulls或含有ASCII128以上的字符,使用comInputMode Binary.
l DSRHolding:传回DSR脚位状态。高为True,低为False。
l CTSHolding:传回通信端口的CTS脚位状态
l CDHolding:传回通信端口的DCD脚位状态。 |
|
利用XML技术获取域名的世界排名数字
|
利用以下的代码,可以从WWW.ALEXA.COM网站中返回域名的世界排名数字,相信这个代码很有用处。 以前总是看到美萍网站的网站导航里面,每隔站点都能够显示世界排名数字,不知道是怎么得到的。经过不断的努力,我终于利用简单的ASP+XML的方法得到了这个数字。惊喜之余,也拿出来和大家共享吧!相信聪明的您通过修改这个代码将会把它的功能发挥到极致!在这里我有一个小小的要求,如果您改出来了什么好东东,也给我发一份,好吗?
代码拷贝框 <%
'=========================================================
' 文件:AlexaRank.asp
' 功能:返回域名的世界排名数字
' 时间:2004-06-24
' 作者:Guidy
' 版权:iXuEr Studio
'=========================================================
' Copyright (C) 2004-2006 114XP.CN All rights reserved.
' 官方网站:HTTP://www.114xp.cn
' 技术论坛:HTTP://bbs.114xp.cn
' 电子信箱:guidy@qq.com.guidy@psysch.com
'=========================================================
Server.ScriptTimeOut=120
On Error Resume Next
Dim Url
Url = "www.114xp.cn"
Response.Write(AlexaRank(Url))
Response.End()
'==========================================================
Function AlexaRank(Url)
'过滤无用信息,只剩余世界排名
'此方法是作者认真分析网页代码而得出的,所以不保证永久有效
'如果您还有什么更好的办法,不妨来告诉我,共同探讨嘛~~
Dim AlexaUrl,RpStr,TempStr
Dim x,n
RpStr = "</td><td class=""bodyBold"" align=""center"" bgcolor=""#ffffff""><img" '此行不准改动
AlexaUrl = "http://www.alexa.com/data/details/traffic_details?q=&url=" & Url
TempStr = GetHTTPPage(AlexaUrl)
n = InStr(TempStr,RpStr) - 1
TempStr = Left(TempStr,n)
TempStr = StrReverse(TempStr)
x = InStr(TempStr,">") - 1
TempStr = Left(TempStr,x)
TempStr = StrReverse(TempStr)
AlexaRank = TempStr
End Function
'==========================================================
Function GetHTTPPage(url)
'利用XML技术来获取网页数据
on Error resume next
Dim HTTP
Set HTTP=Server.CreateObject("Microsoft.XMLHTTP")
HTTP.Open "GET",Url,False
HTTP.Send()
If HTTP.ReadyState<>4 then
exit function
end If
GetHTTPPage=Bytes2BSTR(HTTP.ResponseBody)
Set HTTP=Nothing
If Err.Number<>0 Then Err.Clear
End function
'==========================================================
Function Bytes2BSTR(vIn)
'还原网页数据为文本字符
Dim StrReturn
Dim i,ThisCharCode,NextCharCode
StrReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
StrReturn = StrReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
StrReturn = StrReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
Bytes2BSTR = StrReturn
End Function
%>
[Ctrl+A 全部选择 然后拷贝]
|
|
什么是Blog? 什么是RSS?新闻聚合工具
|
作者: arron 加入时间: 2005-01-10 文档类型: 转载 来自: 浏览统计: total: 106 year: 106 quarter: 106 month: 106 week: 34 today: 1
什么是Blog?
- Blog,是Weblog的简称。 - Weblog,是Web 和Log的组合词。Web,指World Wide Web;Log,原义是“航海日志”,后指任何类型的流水记录。Weblog 是在网络上的一种流水记录形式。 - Blogger或Weblogger,是指习惯于日常记录并使用Weblog工具的人。
什么是RSS?
它是什么:站点用来和其他站点之间共享内容的简易方式(也叫聚合内容)。 RSS使用XML作为彼此共享内容的标准方式。
它代表什么:Really Simple Syndication (或RDF Site Summary,RDF站点摘要)
例如:一些免费的软件能够让你阅读那些RSS使能的站点,比如 NewsIsFree 和 Amphetadesk。
它有什么用处:让别人容易的发现你已经更新了你的站点,让人们很容易的追踪他们阅读的所有weblogs。
新闻聚合工具
很多Blogger都在他们的站点上放了标记,那只要我们喜欢,就可以将它添加到新闻阅读软件中,以后我们不必打开浏览器在不同站点到处转,在新闻阅读软件中,我们就可以自动收集我们预订的Blog和其他新闻大站的新闻了。 什么是NewzCrawler?
NewzCrawler是一款网页新闻阅读和浏览器,通过它,我们能从不同的来源中访问到许多新闻内容:
基于XML格式(XML\RSS,CDF,BACKSLASH,SCRIPTINGNEWS等)的聚合(Syndicated)新闻。
Usenet新闻组中的新闻。
网页新闻。
NewzCrawler从订阅的每一个新闻频道中收集新闻内容,然后以几种不同的方式显示来:滚动的新闻列表,新闻气球(就是浮动的提示框)和新闻Ticker。和其他相似的软件相比,NewzCrawler是在后台从不同的新闻源获取检索新闻,速度快,同时显示的方式可以订制。而且,它是目前唯一一个能获取不同来源新闻的软件。
我用NewzCrawler能做什么?
从不同的内容源(XML\RSS,Usernet Newsgroup,Web)读取新闻。
以所见即所得的HTML编辑方式编写消息,然后将他们发布到放在那些支持Blogger API的网站上的weblog中,或者发布到新闻群组。
使用内置的浏览器浏览新闻文章。
不断地从NEWS TICKER和NEWS BALLON这两种雅致的方式中获得最新新闻的消息。
还可以把一些新闻和网页通过电子邮件发送给你的朋友。
通过关键字进行新闻搜索。
以可订制的树状方式管理、组织新闻频道。
用MS Agenet来为你读新闻。 |
|
用CSS制作的显示隐藏菜单
|
作者: 不详 加入时间: 2004-10-19 文档类型: 来自: 浏览统计: total: 81 year: 81 quarter: 81 month: 81 week: 31 today: 1
<head> <script> if (!document.getElementById) document.getElementById = function() { return null; }
function initializeMenu(menuId, actuatorId) { var menu = document.getElementById(menuId); var actuator = document.getElementById(actuatorId);
if (menu == null || actuator == null) return;
//if (window.opera) return; // I'm too tired
actuator.parentNode.style.backgroundImage = "url(/images/plus.gif)"; actuator.onclick = function() { var display = menu.style.display; this.parentNode.style.backgroundImage = (display == "block") ? "url(/images/plus.gif)" : "url(/images/minus.gif)"; menu.style.display = (display == "block") ? "none" : "block";
return false; } } window.onload = function() { initializeMenu("productsMenu", "productsActuator"); initializeMenu("newPhonesMenu", "newPhonesActuator"); initializeMenu("compareMenu", "compareActuator"); } </script> <style> body { font-family: verdana, helvetica, arial, sans-serif; }
#mainMenu { background-color: #EEE; border: 1px solid #CCC; color: #000; width: 203px; }
#menuList { margin: 0px; padding: 10px 0px 10px 15px; }
li.menubar { background: url(/images/plus.gif) no-repeat 0em 0.3em; font-size: 12px; line-height: 1.5em; list-style: none outside; }
.menu, .submenu { display: none; margin-left: 15px; padding: 0px; }
.menu li, .submenu li { background: url(/images/square.gif) no-repeat 0em 0.3em; list-style: none outside; }
a.actuator { background-color: transparent; color: #000; font-size: 12px; padding-left: 15px; text-decoration: none; }
a.actuator:hover { text-decoration: underline; }
.menu li a, .submenu li a { background-color: transparent; color: #000; font-size: 12px; padding-left: 15px; text-decoration: none; }
.menu li a:hover, submenu li a:hover { /*border-bottom: 1px dashed #000;*/ text-decoration: underline; }
span.key { text-decoration: underline; } </style> </head> <body> <div id="mainMenu"> <ul id="menuList"> <li class="menubar"> <a href="#" id="productsActuator" class="actuator">Phones</a> <ul id="productsMenu" class="menu"> <li> <a href="#" id="newPhonesActuator" class="actuator">New Phones</a> <ul id="newPhonesMenu" class="submenu"> <li><a href="#">9290</a></li> <li><a href="#">8390</a></li> <li><a href="#">8290</a></li> <li><a href="#">8270</a></li> </ul> </li> <li> <a href="#" id="compareActuator" class="actuator">Compare</a> <ul id="compareMenu" class="submenu"> <li><a href="#">All Phones</a></li> <li><a href="#">Service Provider</a></li> </ul> </li> </ul> </li> </ul> </div> </body>
运行代码框 <head>
<script>
if (!document.getElementById)
document.getElementById = function() { return null; }
function initializeMenu(menuId, actuatorId) {
var menu = document.getElementById(menuId);
var actuator = document.getElementById(actuatorId);
if (menu == null || actuator == null) return;
//if (window.opera) return; // I'm too tired
actuator.parentNode.style.backgroundImage = "url(/images/plus.gif)";
actuator.onclick = function() {
var display = menu.style.display;
this.parentNode.style.backgroundImage =
(display == "block") ? "url(/images/plus.gif)" : "url(/images/minus.gif)";
menu.style.display = (display == "block") ? "none" : "block";
return false;
}
}
window.onload = function() {
initializeMenu("productsMenu", "productsActuator");
initializeMenu("newPhonesMenu", "newPhonesActuator");
initializeMenu("compareMenu", "compareActuator");
}
</script>
<style>
body {
font-family: verdana, helvetica, arial, sans-serif;
}
#mainMenu {
background-color: #EEE;
border: 1px solid #CCC;
color: #000;
width: 203px;
}
#menuList {
margin: 0px;
padding: 10px 0px 10px 15px;
}
li.menubar {
background: url(/images/plus.gif) no-repeat 0em 0.3em;
font-size: 12px;
line-height: 1.5em;
list-style: none outside;
}
.menu, .submenu {
display: none;
margin-left: 15px;
padding: 0px;
}
.menu li, .submenu li {
background: url(/images/square.gif) no-repeat 0em 0.3em;
list-style: none outside;
}
a.actuator {
background-color: transparent;
color: #000;
font-size: 12px;
padding-left: 15px;
text-decoration: none;
}
a.actuator:hover {
text-decoration: underline;
}
.menu li a, .submenu li a {
background-color: transparent;
color: #000;
font-size: 12px;
padding-left: 15px;
text-decoration: none;
}
.menu li a:hover, submenu li a:hover {
/*border-bottom: 1px dashed #000;*/
text-decoration: underline;
}
span.key {
text-decoration: underline;
}
</style>
</head>
<body>
<div id="mainMenu">
<ul id="menuList">
<li class="menubar">
<a href="#" id="productsActuator" class="actuator">Phones</a>
<ul id="productsMenu" class="menu">
<li>
<a href="#" id="newPhonesActuator" class="actuator">New Phones</a>
<ul id="newPhonesMenu" class="submenu">
<li><a href="#">9290</a></li>
<li><a href="#">8390</a></li>
<li><a href="#">8290</a></li>
<li><a href="#">8270</a></li>
</ul>
</li>
<li>
<a href="#" id="compareActuator" class="actuator">Compare</a>
<ul id="compareMenu" class="submenu">
<li><a href="#">All Phones</a></li>
<li><a href="#">Service Provider</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</body>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行] |
|
XMLHTTP 对象及其方法
|
作者: 加入时间: 2005-01-23 文档类型: 转载 来自: 浏览统计: total: 9 year: 9 quarter: 9 month: 9 week: 9 today: 1
MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。 创建XMLHTTP对象的语句如下: Set objXML = CreateObject(Msxml2.XMLHTTP) 或 Set objXML = CreateObject(“Microsoft.XMLHTTP”) ' Or, for version 3.0 of XMLHTTP, use: ' Set xml = Server.CreateObject(MSXML2.ServerXMLHTTP) 对象创建后调用Open方法对Request对象进行初始化,语法格式为: poster.open http-method, url, async, userID, password Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示: http-method: HTTP的通信方式,比如GET或是 POST url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序 async: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作 userID 用户ID,用于服务器身份验证 password 用户密码,用于服务器身份验证 XMLHTTP对象的Send方法 用Open方法对Request对象进行初始化后,调用Send方法发送XML数据: poster.send XML-data Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。 XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示: 值 说明 0 Response对象已经创建,但XML文档上载过程尚未结束 1 XML文档已经装载完毕 2 XML文档已经装载完毕,正在处理中 3 部分XML文档已经解析 4 文档已经解析完毕,客户端可以接受返回消息 客户机处理响应信息 客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的: ● responseTxt:将返回消息作为文本字符串; ● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用; ● responseStream:将返回消息视为Stream对象。 |
|
XHTML+CSS=网站重构
|
作者: 加入时间: 2005-01-23 文档类型: 转载 来自: 浏览统计: total: 26 year: 26 quarter: 26 month: 26 week: 26 today: 1
一,什么是WEB标准?
WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA(European Computer Manufacturers Association)的ECMAScript标准。我们来简单了解一下这些标准:
1.结构标准语言
(1)XML
XML是The Extensible Markup Language(可扩展标识语言)的简写。目前推荐遵循的是W3C于2000年10月6日发布的XML1.0,参考( http://www.w3.org/TR/2000/REC-XML-20001006 )。和HTML一样,XML同样来源于SGML,但XML是一种能定义其他语言的语。XML最初设计的目的是弥补HTML的不足,以强大的扩展性满足网络信息发布的需要,后来逐渐用于网络数据的转换和描述。关于XML的好处和技术规范细节这里就不多说了,网上有很多资料,也有很多书籍可以参考。
(2)XHTML
XHTML是The Extensible HyperText Markup Language可扩展标识语言的缩写。目前推荐遵循的是W3C于2000年1月26日推荐XML1.0(参考 http://www.w3.org/TR/xhtml1 )。XML虽然数据转换能力强大,完全可以替代HTML,但面对成千上万已有的站点,直接采用XML还为时过早。因此,我们在HTML4.0的基础上,用XML的规则对其进行扩展,得到了XHTML。简单的说,建立XHTML的目的就是实现HTML向XML的过渡。
2. 表现标准语言
CSS是Cascading Style Sheets层叠样式表的缩写。目前推荐遵循的是W3C于1998年5月12日推荐CSS2(参考 http://www.w3.org/TR/CSS2/ )。W3C创建CSS标准的目的是以CSS取代HTML表格式布局、帧和其他表现的语言。纯CSS布局与结构式XHTML相结合能帮助设计师分离外观与结构,使站点的访问及维护更加容易。
3.行为标准
(1)DOM
DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范( http://www.w3.org/DOM/ ),DOM是一种与浏览器,平台,语言的接口,使得你可以访问页面其他的标准组件。简单理解,DOM解决了Netscaped的Javascript和Microsoft的Jscript之间的冲突,给予web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对像。
(2) ECMAScript
ECMAScript是ECMA(European Computer Manufacturers Association)制定的标准脚本语言(JAVAScript)。目前推荐遵循的是ECMAScript 262( http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM )。
二、为什么要建立网站标准?
我们大部分人都有深刻体验,每当主流浏览器版本的升级,我们刚建立的网站就可能变得过时,我们就需要升级或者重新建造一遍网站。例如1996-1999年典型的"浏览器大战",为了兼容Netscape和IE,网站不得不为这两种浏览器写不同的代码。同样的,每当新的网络技术和交互设备的出现,我们也需要制作一个新版本来支持这种新技术或新设备,例如支持手机上网的WAP技术。类似的问题举不胜举:网站代码臃肿、繁杂浪费了我们大量的带宽;针对某种浏览器的DHTML特效,屏蔽了部分潜在的客户;不易用的代码,残障人士无法浏览网站等等。这是一种恶性循环,是一种巨大的浪费。
如何解决这些问题呢?有识之士早已开始思考,需要建立一种普遍认同的标准来结束这种无序和混乱。商业公司(Netscape、Microsoft等)也终于认识到统一标准的好处,因此在W3C(W3C.org)的组织下,网站标准开始被建立(1998年2月10日发布XML1.0为标志),并在网站标准组织(webstandards.org)的督促下推广执行。
简单说,网站标准的目的就是:
提供最多利益给最多的网站用户 确保任何网站文挡都能够长期有效 简化代码、降低建设成本 让网站更容易使用,能适应更多不同用户和更多网路设备 当浏览器版本更新,或者出现新的网络交互设备时,确保所有应用能够继续正确执行。 对于网站设计和开发人员来说,遵循网站标准就是使用标准;对于你的网站用户来说,网站标准就是最佳体验。
三、采用网站标准有什么好处?
对网站浏览者的好处:
文件下载与页面显示速度更快; 内容能被更多的用户所访问(包括失明、视弱、色盲等残障人士); 内容能被更广泛的设备所访问(包括屏幕阅读机、手持设备、搜索机器人、打印机、电冰箱等等) 用户能够通过样式选择定制自己的表现界面 所有页面都能提供适于打印的版本
对网站所有者的好处:
更少的代码和组件,容易维护 带宽要求降低(代码更简洁),成本降低。举个例子:当 ESPN.com 使用 CSS改版后,每天节约超过两兆字节(terabytes)的带宽。 更容易被搜寻引擎搜索到 改版方便,不需要变动页面内容 提供打印版本而不需要复制内容 提高网站易用性。在美国,有严格的法律条款(Section 508)来约束政府网站必须达到一定的易用性,其他国家也有类似的要求。
四、怎么改善现有网站?
我们大部分的设计师依旧在采用传统的表格布局、表现与结构混杂在一起的方式来建立网站。学习使用XHTML+CSS的方法需要一个过程,使现有网站符合网站标准也不可能一步到位。最好的方法是循序渐进,分阶段来逐步达到完全符合网站标准的目标。如果你是新手,或者对代码不是很熟悉,也可以采用遵循标准的编辑工具,例如Dreamweaver MX 2004,它是目前支持CSS标准最完善的工具。
1.初级改善
为页面添加正确的DOCTYPE
很多设计师和开发者都不知道什么是DOCTYPE,DOCTYPE有什么用。DOCTYPE是document type的简写。主要用来说明你用的XHTML或者HTML是什么版本。浏览器根据你DOCTYPE定义的DTD(文档类型定义)来解释页面代码。所以,如果你不注意设置了错误的DOCTYPE,结果会让你大吃一惊。XHTML1.0提供了三种DOCTYPE可选择:
(1)过渡型(Transitional )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-transitional.dtd">
(2)严格型(Strict )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-strict.dtd">
(3)框架型(Frameset )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-frameset.dtd">
对于我们初级改善来说,只要选用过渡型的声明就可以了。它依然可以兼容你的表格布局、表现标识等,不至于让你觉得变化太大,难以掌握。
Tip:你懒得输入上面过渡型代码的话,可以访问 http://www.macromedia.com/ 网站的首页,然后查看源代码,把head区同样的代码拷贝粘贴就可以了。
设定一个名字空间(Namespace)
直接在DOCTYPE声明后面添加如下代码:
<html XMLns="http://www.w3.org/1999/xhtml">
一个namespace是收集元素类型和属性名字的一个详细的DTD,namespace声明允许你通过一个在线地址指向来识别你的namespace。只要照样输入代码就可以。声明你的编码语言
为了被浏览器正确解释和通过标识校验,所有的XHTML文档都必须声明它们所使用的编码语言。代码如下:
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
这里声明的编码语言是简体中文GB2312,你如果需要制作繁体内容,可以定义为BIG5。
用小写字母书写所有的标签
XML对大小写是敏感的,所以,XHTML也是大小写有区别的。所有的XHTML元素和属性的名字都必须使用小写。否则你的文档将被W3C校验认为是无效的。例如下面的代码是不正确的:
<TITLE>公司简介</TITLE>
正确的写法是:
<title>公司简介</title> 同样的,<P>改成<p>,<B>改成<b>等等。这步转换很简单。
为图片添加 alt 属性
为所有图片添加alt属性。alt属性指定了当图片不能显示的时候就显示供替换文本,这样做对正常用户可有可无,但对纯文本浏览器和使用屏幕阅读机的用户来说是至关重要的。只有添加了alt属性,代码才会被W3C正确性校验通过。注意的是我们要添加有意义的alt属性,象下面这样的写法毫无意义:
<img src="logo_unc_120x30.gif" alt="logo_unc_120x30.gif">
正确的写法:
<img src="logo_unc_120x30.gif" alt="UNC公司标志,点击返回首页">
给所有属性值加引号
在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。
例:height="100",而不能是height=100。
关闭所有的标签
在XHTML中,每一个打开的标签都必须关闭。就象这样:
<p>每一个打开的标签都必须关闭。</p> <b>HTML可以接受不关闭的标,XHTML就不可以。</b>
这个规则可以避免HTML的混乱和麻烦。举例来说:如果你不关闭图像标签,在一些浏览器中就可能出现CSS显示问题。用这种方法能确保页面和你设计的一样显示。需要说明的是:空标签也要关闭,在标签尾部使用一个正斜杠"/"来关闭它们自己。例如:
<br /> <img src="webstandards.gif" />
经过上述七个规则处理后,页面就基本符合XHTML1.0的要求。但我们还需要校验一下是否真的符合标准了。我们可以利用W3C提供免费校验服务( http://validator.w3.org/ )。发现错误后逐个修改。在后面的资源列表中我们也提供了其他校验服务和对校验进行指导的网址,可以作为W3C校验的补充。当最后通过了XHTML验证,恭喜你已经向网站标准迈出了一大步。不是想象中的那么难吧!
2.中级改善
接下来我们的改善主要在结构和表现相分离上,这一步不象第一步那么容易实现,我们需要观念上的转变,以及对CSS2技术的学习和运用。但学习任何新知识都需要花点时间的,不是吗?诀窍在于边做边学。假如你一直采用表格布局,根本没用过 CSS,也不必急于跟表格布局说再见,你可以先用样式表代替 font 标签。随着你学到的越多,你能做的就越多。好,一起来看看我们需要做哪些事:
用CSS定义元素外观
我们在写标识时已经养成习惯,当希望字体大点就用<h1>,希望在前面加个点符号就用<li>。我们总是想<h1>的意思是大的,<li>的意思是圆点,<b>的意思是“加粗文本”。而实际上, <h1>能变成你想要的任何样子,通过CSS,<h1>能变成小的字体,<p>文本能够变成巨大的、粗体的,<li>能够变成一张图片等等。我们不能强迫用结构元素实现表现效果,我们应该使用CSS来确定那些元素的外观。
例如,我们可以使原来默认的6级标题可以看起来大小一样: h1, h2, h3, h4, h5, h6{ font-family: 宋体, serif; font-size: 12px; }
用结构化元素代替无意义的垃圾
许多人可能从来都不知道HTML和XHTML元素设计本意是用来表达结构的。我们很多人已经习惯用元素来控制表现,而不是结构。例如,一段列表内容可能会使用下面这样的标识:
句子一<br /> 句子二<br /> 句子三<br /> 如果我们采用一个无序列表代替会更好: <ul> <li>句子一</li> <li>句子二</li> <li>句子三</li> </ul> 你或许会说“但是<li>显示的是一个圆点,我不想用圆点”。事实上,CSS没有设定元素看起来是什么样子,你完全可以用CSS关掉圆点。
给每个表格和表单加上id 给表格或表单赋予一个唯一的、结构的标记,例如
<table id="menu">
接下来,在书写样式表的时候,你就可以创建一个“menu”的选择器,并且关联一个CSS规则,用来告诉表格单元、文本标签和所有其他元素怎么去显示。这样,不需要对每个%lt;td>标签附带一些多余的、占用带宽的表现层的高、宽、对齐和背景颜色等等属性。只需要一个附着的标记(标记“menu”的id标记),你就可以在一个分离的样式表内为干净的、紧凑的代码标记进行特别的表现层处理。
中级改善我们这里先列主要的三点,但其中包含的内容和知识点非常多,需要我们逐步学习和掌握,直到最后实现完全采用CSS而不才用任何表格实现布局。 |
|
Google搜索从入门到精通v4.0
|
Google搜索从入门到精通v4.0 8/15/2002 donquix@sina.com donquix —————————————————————————————————— 内容 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,最底下有一个选项SafeSearch Filtering。不过,中文状态下的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了吗?” |
|
|