My search engines(Get information from Microsoft,Wiki and other technical site)

2007年3月1日星期四

使用GWT简化AJAX开发


(2007-02-01 10:22:59)

Google Web工具包(GWT)是一种Java开发框架,它力求简化AJAX应用程序的开发。GWT让开发人员可以使用常用的Java开发工具,开发及调试用Java开发的AJAX应用程序,并且把同一应用程序作为客户端HTML和JavaScript以及服务器端Java来部署。

Google Web工具包是一种应用开发平台,它包括Java类库、名为窗口组件(widget)的AJAX风格的用户界面组件、基于RPC的请求/响应通信框架以及集成调试环境。GWT提供了java.lang和java.util程序包的子集,还提供了方便基于组件的GUI开发的Java API。开发后的程序经编译成HTML和JavaScript,可部署到浏览器上。

GWT应用程序有两种执行模式。一是宿主模式,这种模式把GWT应用程序作为普通的Java应用程序来执行,允许进行标准的Java调试。为了支持宿主模式,GWT提供了专有的Web浏览器,可与Java虚拟机(JVM)进行交互。还有一种是Web模式,这种模式让GWT应用程序可以作为原生JavaScript和HTML来部署及执行,由GWT Java到JavaScript编译器利用Java源代码生成。

GWT有四大组件/库,分别如下。 GWT Java到JavaScript编译器:该组件可把Java源代码转换成原生JavaScript和HTML;GWT宿主Web浏览器: 该组件让GWT应用程序可以作为Java代码在支持JVM的Web浏览器里面执行;JRE仿真库:该库提供了java.lang和java.util程序包的子集;GWT Web UI类库:该库是一组专有的接口和类,名为窗口组件,可用于构建基于浏览器的GUI组件。

GWT应用程序需要提供一个“入口点”类以及独立的配置数据单元,它们捆绑起来即可形成一个应用“模块”。每个模块包括:根据模式module-name.gwt.xml命名的一个配置文件以及实现com.google.gwt.core.client.EntryPoint接口的一个类——该接口充当了应用程序的主入口点。GWT的JavaScript运行库依赖这种基于模块的结构。以下代码显示了一个典型的模块配置文件。

< module>

< !-- Inherit the core Web Toolkit stuff. -->

< inherits name='com.google.gwt.user.User'/>

< !-- Specify the app entry point class. -->

< entry-point class='com.example.client.MyApp'/>

< /module>

模块的入口点类必须实现com.google.gwt.core.client.EntryPoint接口,并且提供no-arg构造函数。模块装入后,为其入口点类创建实例,GWT框架调用其onModuleLoad()方法。

GWT入门

为了开始使用GWT,先要从Google(http://code.google.com/webtoolkit/download.html)下载及提取针对你所用特定操作系统的GWT SDK。GWT的库包括类和接口,即窗口组件,可用来为AJAX应用程序构建用户界面组件。窗口组件的布局由名为窗格的容器窗口组件来管理,容器窗口组件可以嵌套在其他窗格组件里面。

下列代码显示了如何为一个按钮窗口组件创建实例,并且嵌入在名为MyContanerPanel的容器窗格里面:

Final com.google.gwt.user.client.ui.Button button=new com.google.gwt.user.client.ui.Button("Click me");

button.addClickListener(new com.google.gwt.user.client.ui.ClickListener()

{

public void onClick(com.google.gwt.user.client.ui.Widget sender)

{ System.out.println("The 'Click me' button was clicked"); } }

com.google.gwt.user.client.ui.RootPanel.get("MyContainerPanel").add(button);

GWT应用程序的GUI由类似前一个例子的Java代码组成,代码可以用标准的Java调试工具在宿主模式下进行调试。宿主模式下执行的应用程序在由com.google.gwt.dev.GWTShell类所体现的一个专有外壳里面运行。这个类可以独立执行,也可以在IDE里面执行。在宿主模式下运行时,GWT在专有浏览器的窗口里面执行Java字节码。

一旦应用程序准备好了,GWT编译器就可以用来把Java源代码转换成JavaScript,因而可以把Java应用程序转换成类似的JavaScript应用程序。com.google.gwt.dev.GWTCompiler类用于从命令行把GWT应用程序编译成JavaScript。

就GWT而言,通常在Web浏览器里面进行的所有活动都被称为客户端处理。如果客户端代码准备在Web浏览器里面运行,那么它最终会成为JavaScript。因而,只使用那些由上述GWT编译器来转换的库和Java语言构件很重要。

同样,通常在服务器主机上进行的所有活动都被称为服务器端处理。应用程序与服务器进行交互时,它会使用GWT的远程过程调用(RPC)框架,通过浏览器(客户端)对服务器端代码提出请求。

构建GWT应用程序

GWT随带一个命令行实用程序applicationCreator,它可以自动生成运行最基本的GWT应用程序所需的所有文件。这些文件构成一个项目的基本框架,可以在此基础上构建应用程序。本文演示的这个应用程序可从远程站点检索图书,并将结果显示在Web浏览器中基于AJAX的GUI。为了给这个名为BookSearch的应用程序构建一个框架,用下列命令启动applicationCreator实用程序:

applicationCreator -out ./BookSearch com.example.client.BookSearch

一定要用安装的GWT的目录名取代。applicationCreator实用程序可在BookSearch目录下生成众多文件,包括类com/example/client/BookSearch.java中的一些基本的客户端功能。该实用程序还能生成名为BookSearch-shell的宿机模式启动脚本和名为BookSearch-compile的编译脚本。要在宿主模式下运行BookSearch框架应用程序,应执行BookSearch-shell脚本。

创建主页

最终的BookSearch应用程序使用有两个td元素的一个表。一个含有处理搜索词语的窗口组件,另一个含有显示图书相关数据列表的窗口组件。该表添加到com/example/public目录中的BookSearch.html,如下所示:

< table width="100%" border="0" summary="Book Search">

< tr valign="top">

< td id="searchterm" align="center" width="100%">

< /td>

< /tr>

< tr valign="top">

< td id="booklist" align="center" width="100%">

< /td>

< /tr>

< /table>

现在,UI布局可进行初始化,以便可以添加UI窗口组件。以下代码显示了对BookSearch应用程序的UI布局进行初始化所需的代码:

public void onModuleLoad()

{

private static final int VISIBLE_ROWS = 5;

public void onModuleLoad()

{

RootPanel booklistPanel = RootPanel.get("booklist");

if (booklistPanel != null)

{BookListWidget booklistWidget = new BookListWidget(VISIBLE_ROWS);

booklistPanel.add(booklistWidget);

RootPanel searchtermPanel = RootPanel.get("searchterm");

if (searchtermPanel != null)

{

SearchTermWidget searchTermWidget =new SearchTermWidget(booklistWidget);

searchtermPanel.add(searchTermWidget);

}}}}

所有初始化代码都在BookSearch类的onModuleLoad()方法里面。onModuleLoad()方法是由com.google.gwt.core.client.EntryPoint接口定义的惟一一个方法。模块装入后,该方法被调用。请注意com.google.gwt.user.client.ui.RootPanel类是如何用来通过ID来检索BookSearch.html元素引用的。GWT依靠命名约定来查找映射到HTML元素ID的窗口组件类。

创建客户端行为

我们这个应用程序的客户端行为封装在三个主要的UI窗口组件实例里面:负责搜索词语处理的窗口组件实例、拥有搜索服务提供程序和分页列表的容器窗口组件实例、将集成一组窗口组件实例形成导航条和图书分页列表的分页列表窗口组件实例。以下代码显示了处理图书列表检索、含有分页列表的窗口组件:

public class BookListWidget extends com.google.gwt.user.client.ui.Composite

{

private final PageableListWidget pageableListWidget;

private String searchTerm = "";

public BookListWidget(int visibleRows)

{

String[] columns = new String[]{"Title","ISBN","Edition","MSRP"};

String[] styles = new String[]{"title","isbn","edition","msrp"};

pageableListWidget = new PageableListWidget(bookSearchProvider, columns, styles, visibleRows);

initWidget(pageableListWidget);

}

protected void onLoad()

{pageableListWidget.refresh(); }

protected void setSearchTerm(String searchTerm)

{

if (this.searchTerm.equals(searchTerm))

{ return; }

this.searchTerm = searchTerm;

pageableListWidget.refresh();

}}

BookListWidget类扩展了com.google.gwt.user.client.ui.Composite类,可为集成了一个或若干个相关窗口组件的组合UI组件提供方便。这里只用了一个组合式的嵌套窗口组件: PageableListWidget。PageableListWidget类也扩展了com.google.gwt.user.client.ui.Composite类,并含有多个子窗口组件,包括一个定制的导航条窗口组件和一个处理图书相关数据列表的com.google.gwt.user.client.ui.Grid窗口组件。导航条窗口组件包括com.google.gwt.user.client.ui.DockPanel窗口组件的实例以及com.google.gwt.user.client.ui.Button类的几个实例

SearchTermWidget扩展了com.google.gwt.user.client.ui.Composite类,总共含有一个标签、一个文本框和一个按钮。文本框含有搜索词语,按钮启动每次搜索。

创建服务器端行为

现在可以为应用程序添加服务器端功能了。对BookSearch应用程序而言,需要调用远程API,才能检索与给定的搜索词语相匹配的图书列表。GWT提供了RPC框架,可用于把服务提供给客户端,还可以调用它进行实际搜索。 图中显示了BookSearch应用程序的通信机制。

实现服务器端代码的第一步就是为搜索服务定义接口。该接口必须扩展com.google.gwt.user.client.rpc.RemoteService接口,并含有将提供给GWT客户端代码的方法。下列代码显示了搜索服务接口。其惟一的一个方法将搜索词语作为输入,并返回一组含有表示匹配列表的数据的Book对象:

public interface SearchService

extends com.google.gwt.user.client.rpc.RemoteService

{

Book[] getBooks(String searchTerm, int startIndex, int maxCount);

}

来自JavaScript的AJAX调用是异步的,因此,必须定义与RemoteService接口相对应的异步接口。该异步接口的方法签名与远程接口的方法签名相匹配,不过多了类型com.google.gwt.user.client.rpc.AsyncCallback这个参数。异步服务完成后,就会调用该参数。返回类型也被清除,因为回调对象将用于传送响应。下列代码显示了SearchService的异步接口:

public interface SearchServiceAsync

{

void getBooks(String searchTerm, int startIndex, int maxCount, com.google.gwt.user.client.rpc.AsyncCallback callback);

}

AsyncCallback类有两个方法:onSuccess()和onFailure(),远程服务成功或失败后,就会调用这两个方法。

现在可以为SearchService类创建异步实现类。只要使用Apache HTTPClient框架,通过与搜索相关的远程API,调用HTTP GET方法,就可以为实际搜索操作的逻辑提供便利。这里,搜索API由Safari Books Online提供,并由URL:http://my.safaribooksonline.com/xmlapi/search=来调用。从Safari Books Online搜索API返回的结果是一个XML文档。该文档作为文档对象模型(DOM)文档,使用Java API for XML Processing(JAXP)框架来处理。

下列代码显示了使用Apache Commons HttpClient类调用搜索API,并使用JAXP API将结果作为DOM文档来处理:

HttpClient client = new HttpClient();

GetMethod get = new GetMethod(url);

org.w3c.dom.Document xmlDoc = null;

try

{

// 调用远程搜索API

int resultCode = client.executeMethod(get);

if (resultCode == 200)

{

InputStream in = get.getResponseBodyAsStream();

DocumentBuilder builder = builderFactory.newDocumentBuilder();

xmlDoc = builder.parse(in);

}

else

{

throw new IOException("HTTP error with response code: "+ resultCode);

}}

finally

{

// 释放连接

get.releaseConnection(); }

一旦该DOM文档创建完毕,就可以遍历其中的每个元素,找到匹配项目、添加到图书列表,如下列代码所示:

org.w3c.dom.NodeList nodeList = xmlDoc.getElementsByTagName("book");

if (nodeList != null)

{

int len = nodeList.getLength();

for (int i = 0; i < len; i++)

{

org.w3c.dom.Element bookElement = (org.w3c.dom.Element)nodeList.item(i);

org.w3c.dom.Element title = (org.w3c.dom.Element) bookElement.getElementsByTagName("title").item(0);

String titleStr = (title != null ? title.getTextContent() : "");

org.w3c.dom.Element isbn = (org.w3c.dom.Element)bookElement.getElementsByTagName("isbn").item(0);

String isbnStr = (isbn != null ? isbn.getTextContent() : "");

org.w3c.dom.Element edition = (org.w3c.dom.Element) bookElement.getElementsByTagName("edition").item(0);

String editionStr = (edition != null ? edition.getTextContent() : "");

org.w3c.dom.Element msrp = (org.w3c.dom.Element) bookElement.getElementsByTagName("msrp").item(0);

String msrpStr = (msrp != null ? msrp.getTextContent() : "");

books.add(new Book(titleStr, isbnStr, editionStr, msrpStr));

}

从客户端代码调用搜索服务

由于搜索服务类和接口已实现,就可以增强客户端类,以便调用服务,处理响应。步骤如下:首先创建SearchServiceAsync类的实例,如下所示:

searchService = (SearchServiceAsync)GWT.create(SearchService.class);

然后,根据SearchServiceAsync实例设定入口点的URL,如下所示:

ServiceDefTarget target = (ServiceDefTarget)searchService;

String moduleRelativeURL = GWT.getModuleBaseURL() + "booksearch";

target.setServiceEntryPoint(moduleRelativeURL);

第三步,为搜索按钮SearchTermWidget类的onClick方法添加逻辑,并且用SearchTermWidget类的文本框里面的搜索词语来更新相关的BookListWidget类,如下所示:

Button searchBtn = new Button("Search", new ClickListener()

{

public void onClick(Widget sender)

{ booklistWidget.setSearchTerm(searchTermTxtBox.getText()); } }

接着,通过调用更新方法,更新PageableListWidget实例的UI。通过调用updateRow

Data方法——它会调用搜索服务的getBooks方法,用新的搜索词语更新BookSearchProvider。

最后,搜索服务执行及调用通过getBooks方法传送给它的AsyncCallback实例的onFailure或者onSuccess方法:

searchService.getBooks(searchTerm, startRow, maxRows, new AsyncCallback()

{

public void onFailure(Throwable caught)

{ // 处理失败 }

public void onSuccess(Object result)

{// 用结果更新com.google.gwt.user.client.ui.Grid窗口组件} }

onSuccess方法被调用后,com.google.gwt.user.client.ui.Grid窗口组件的实例可以用新的图书列表来更新。

链接:GWT消除Web应用难题

Google Web工具包是面向AJAX应用开发的一种Java开发框架。GWT消除了基于AJAX的RPC通信机制的许多技术细节,并提供了窗口组件库,可用于构建丰富的UI。GWT让开发人员可以使用常用的Java开发工具,实现及调试用Java开发的基于AJAX的应用程序,然后把应用程序作为客户端的HTML和JavaScript以及服务器端的Java来编译及部署。

GWT利用Java作为通用语言,把客户端代码和服务器代码融合在一起。这种通用环境以及增强的调试功能等特性确实也存在几个缺点。譬如说,GWT完全依赖JavaScript的可用性。要是没有JavaScript,UI根本无法正常工作。而且,只要是传统Web客户端开发技术力图找出有安全漏洞的地方,都会因为GWT使用Java开发客户端和服务器端代码而将漏洞隐藏起来,因而给人以安全运行的虚假感。

GWT的抽象构成了一种黑盒框架,消除了Web应用开发面临的许多难题,因为它让开发人员转向AJAX风格的开发模型。不过,这种黑盒环境给集成其他非AJAX技术的工作增添了复杂性。因而,GWT最适用于围绕丰富GUI、单一页面模式开发的应用程序。

(沈建苗 编译 计算机世界报)

免费的晚餐--google技术学习

作者:江南白衣,原文出处: http://www.blogjava.net/calvin/archive/2007/01/31/96844.html ,转载请保留出处。

如果说Google的搜索引擎是免费的早餐,Gmail们是免费的午餐的话,

http://labs.google.com/papers/ 就是Google给开发人员们的一份免费的晚餐。

不过,咋看着一桌饭菜可能不知道从哪吃起,在自己不熟悉的领域啃英文也不是一件愉快的事情。

幸好,有一位面试google不第的老兄,自我爆发搞了一份Google Interal的PPT:

http://cbcg.net/talks/googleinternals/index.html,大家鼠标点点就能跟着他匆匆过一遍google的内部架构。

然后又有崮崮山路上走9遍(http://sharp838.mblogger.cn)与美人他爹(http://my.donews.com/eraera/),翻译了其中最重要的四份论文:

《MapRedue:在超大集群上的简易数据处理》--Simplified Data Processing on Large Clusters

《The Google File System》

《海量数据分析:Sawzall并行处理》--Interpreting the Data: Parallel Analysis with Sawzall

《Bigtable:结构化数据的分布存储系统》--A Distributed Storage System for Structured Data


Google帝国,便建立在大约45万台的Server上,其中大部分都是"cheap x86 boxes"。而这45万台Server,则建立于下面的key infrastructure:

1.GFS(Google File System):

GFS是适用于大规模分布式数据处理应用的分布式文件系统,是Google一切的基础,它基于普通的硬件设备,实现了容错的设计与极高的性能。

李开复说:Google最厉害的技术是它的storage。我认为学计算机的学生都应该看看这篇文章(再次感谢翻译的兄弟)。

它以64M为一个Chunk(Block),每个Chunk至少存在于三台机器上,交互的简单过程见:

2.MapReduce

MapReduce是一个分布式处理海量数据集的编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。像Grep-style job,日志分析等都可以考虑采用它。

MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。

我自己接触MapReduce是Lucene->Nutch->Hadoop的路线。
Hadoop是Lucene之父Doug Cutting的又一力作,是Java版本的分布式文件系统与Map/Reduce实现。
Hadoop的文档并不详细,再看一遍Google这篇中文版的论文,一切清晰很多(又一次感谢翻译的兄弟)。

孟岩也有一篇很清晰的博客:Map Reduce - the Free Lunch is not over?

3.BigTable

BigTable 是Google Style的数据库,使用结构化的文件来存储数据。
虽然不支持关系型数据查询,但却是建立GFS/MapReduce基础上的,分布式存储大规模结构化数据的方案。

BigTable是一个稀疏的,多维的,排序的Map,每个Cell由行关键字,列关键字和时间戳三维定位.Cell的内容是一个不解释的字符串。
比如下表存储每个网站的内容与被其他网站的反向连接的文本。
反向的URL com.cnn.www(www.cnn.com)是行的关键字;contents列存储网页内容,每个内容有一个时间戳;因为有两个反向连接,所以archor列族有两列:anchor:cnnsi.com和anchhor:my.look.ca,列族的概念,使得表可以横向扩展,archor的列数并不固定。

为了并发读写,热区,HA等考虑,BigTable当然不会存在逗号分割的文本文件中,,是存储在一种叫SSTable的数据库结构上,并有BMDiff和Zippy两种不同侧重点的压缩算法。

4.Sawzall

Sawzall是一种建立在MapReduce基础上的领域语言,可以被认为是分布式的awk。它的程序控制结构(if,while)与C语言无异,但它的领域语言语义使它完成相同功能的代码与MapReduce的C++代码相比简化了10倍不止。

1 proto "cvsstat.proto"
2 submits: table sum[hour: int] of count: int;
3 log: ChangelistLog = input;
4 hour: int = hourof(log.time)
5 emit submits[hour] <- 1;


天书吗?慢慢看吧。

我们这次是统计在每天24小时里CVS提交的次数。
首先它的变量定义类似Pascal (i:int=0; 即定义变量i,类型为int,初始值为0)

1:引入cvsstat.proto协议描述,作用见后。
2:定义int数组submits 存放统计结果,用hour作下标。
3.循环的将文件输入转换为ChangelistLog 类型,存储在log变量里,类型及转换方法在前面的cvsstat.proto描述。
4.取出changlog中的提交时间log.time的hour值。
5.emit聚合,在sumits结果数组里,为该hour的提交数加1,然后自动循环下一个输入。

居然读懂了,其中1、2步是准备与定义,3、4步是Map,第5步是Reduce。

5. 小结:

本文只是简单的介绍Google的技术概貌,大家知道以后除了可作谈资外没有任何作用,我们真正要学习的骨血,是论文里如何解决高并发,高可靠性等的设计思路和细节.....

Google Desktop Search使用指南


引:Google作为网上著名的搜索引擎,现在不单单是帮助搜索网上信息、还有加速网页浏览、专利查找等专项搜索,而且还提供了搜索桌面系统的工具—Google Desktop Search。

Google作为网上著名的搜索引擎,现在不单单是帮助搜索网上信息、还有加速网页浏览、专利查找等专项搜索,而且还提供了搜索桌面系统的工具— Google Desktop Search,有了它,就可以更好的管理浏览过的电子邮件、计算机文件、聊天、网页了。那就跟随笔者来尽快地认识它吧!

软件小档案

软件名称: Google Desktop Search

软件版本: v5.0.612.17663

软件大小: 2234K

支持语言: 简体版

软件分类: 网络工具/网络搜索

运行环境: Win2000/XP/2003

软件下载: Google Desktop Search

一、界面浏览

软件安装以后,在任务栏中显示很漂亮的花环图标,所有的操作命令都在右键菜单中包含着。如图1所示。“搜索桌面”就是用用网页的形式来搜索本地 系统上的资源;“使用偏好/编制索引”则是为搜索建立条件和规则;“锁定搜索”则是为了保护隐私,关闭搜索;“补充工具栏/桌面栏/浮动桌面栏/无”则是 随时安装自己喜欢的插件、在任务栏中显示固定搜索栏、在桌面一侧显示浮动搜索等。

二、功能体验

在开始搜索前,需要设置偏好,即编制索引规则。这个在安装程序后,网页也会跳出来要求用户进行设置,当时如果不做,真正使用时可以随时进行设 置。点击“编制索引”菜单中的“重新建立索引”命令,如图2所示,后台便会开始将新文件重新纳入索引中,这不妨碍当前的其他工作。此时,便可以点击“桌面 使用偏好”,便打开了“使用偏好”属性框,在里面可以设置搜索类型、索引编制插件、搜索以下位置、请勿搜索这些项目、加密索引等项目。如图3所示。

图2

确定搜索的文件格式,比如word、PDF、任务、电子邮件、Zip文件等;要搜索QQ聊天记录,需要选择上“QQ聊天”,如果还要其他的,点 击“插件下载页”,在打开的网页中可以挑选要服务的项目并下载,比如有整合到Firefox搜索工具栏中的Google桌面搜索、AutoDWG文件的搜 索、Google Earth插件等种类繁多;添加要搜索的额外磁盘或网络文件夹及不作搜索的文件夹及网址,默认情况下本地磁盘都建立索引;勾选上加密索引,会对桌面搜索进 行加密从而降低运行性能。完成设置后,便点击“保存使用偏好”按钮,回到搜索页。



1、搜索文件,比如PDF文件

系统中所有的项目都纳入索引后,点击“索引状态”,便可以看到目前有多少搜索项。而且会随着使用而随时增加。如图4所示。

点击“高级搜索”,在出现的“搜索选项”中,点击“文件”选项,在“文件类型”的下拉列表中选择“PDF”,在“在此位置”下拉列表中选择“桌 面”或者某个“磁盘”,在“日期范围”中可以选择“年”、“月”、“日”、“天”,甚至在“包含字词”文本框中输入关键词,最后,点击“搜索桌面”按钮, 便开始执行了。如图5所示。在随后显示的结果中,可以选择某个文件,点击便会用Adobe Reader打开,如图6所示。

【提示】其他格式文件的搜索,方法类似。搜索会将原来已经删除的,但仍滞留在缓存中搜索出来,但是用文本的方式查看并无法恢复,点击“删除”后,下次就不再搜索出来了。


  2、聊天记录的搜索,比如QQ

  在搜索之前,在“偏好设置”中选中“聊天”项,在“索引编制插件”中选择“QQ聊天”项,登录QQ后,当我们同网友进行聊天时,在后台便会记录下来,方便随时查询。如图7所示。点击其中一项,可以用文本方式打开对话内容。

  【提示】默认的聊天软件是Google Talk、MSN Messenger等,QQ作为插件在兼容性上也非常好。能实时的用文本的方式显示会话人及其内容。

  3、邮件的搜索

  支持的邮件客户端软件有Gmail、Outlook、Outlook Express等,当接收后,便可以通过搜索查到。如图8所示。可以点击某一邮件进行查看,回复或转发时则自动调出客户端程序。而且,在客户端软件窗口, 比如Outlook中,会嵌套上浮动工具栏,输入发送者的邮箱地址,很方便查询相关的邮件。



  4、网页的搜索

  可以点击“浏览时间线”,查看最近或者过去曾经浏览过的网页,也可以在搜索桌面中,输入特定的网址,单独的列出该网页的内容,非常的方便!如图 9所示。在任何时候,点击两下“Ctrl”键可以调出“快速搜索框”窗口,只要在里面输入要查找的内容,便可轻松查询到要看的信息。如图10所示。

  三、其他特色功能

  右键点击任务栏上的图标,选择“补充工具栏”命令,可以调出纵式工具栏显示于屏幕右侧,如图11所示。在这个工具栏中可以显示出当前的热点新 闻、添加工作日志、设置幻灯片、经常要浏览的网页剪辑等。另外,点击最上边的“添加”按钮,可以添加其他的插件,比如时钟、聊天、电子地图、天气预报等, 方便使用!

  写在最后:

  除了可以查找本地中的网页、邮件、聊天记录、文件外,用户还可以搜索其他机器中的文件,这只要一个Google用户即可,由于篇幅的原因,在这里就不详述了,感兴趣的朋友不妨一试!


2007年2月27日星期二

上网轻松办公!Google文件详细试用

时 下,随着网络的发展,网络应用愈演愈烈,一些实用且有趣的在线程序频频发布,如:在线办公系统、在线图片处理、在线输入法等等,它们具有方便、省时、免安 装的优点,因此受到越来越多人的喜爱。前不久,谷歌推出了在线办公软件的中文版本——Google文件,就是这么一款免安装的在线办公系统。下面大家随我 一起体验一下吧。


一、注册帐户,获取使用权

在浏览器地址栏中输入http://docs.google.com/,即可进入Google文件主页。然而要想使用Google文件的相关服务,就必须先注册Google帐户,点击“创建新的Google帐户”链接,按照提示填写注册信息,完成后,单击“我接受;创建我的帐户”即可。

创建Google帐户

返回Google文件主页后,在电子邮件栏中输入注册时的邮箱地址,在密码栏中输入相关密码,单击“登录”按钮即可进入到自己的Google文件空间, Google文件为每个文档和电子表格的大小设置了上限,其中每个文档最大可达500KB,每个电子表格最多可有10000行或20页。

登录Google文件

二、熟悉的Office操作模式

1、支持多种上传方式

进入Google文件后,即可创建文档和电子表格,操作和使用方法与微软Office差不多。Google文件支持的文档格式有:html、txt、doc、rtf、odt和sxw;而支持的电子表格类型则包括:csv、xls和ods。

除了自行创建文档和电子表格外,Google文件还支持文件上传功能,点击“上传”链接,进入上传页面上传即可。Google文件的上传功能支持本地硬盘、网上文件和电子邮件发送三种上传模式,在利用本地硬盘上传和网址上传过程中,Google文件允许用户对上传文件进行重命名。

支持三种上传方式

小提示:在利用Google进行文档或电子表格编辑过程中,应保证网络带宽及网络畅通,否则处理会失败。



2、特殊字符也可输入

在使用Office办公软件编辑文档时,常常需要输入一些特殊字符,而键盘上并没有提供这些字符的按键,如:平方米(㎡)、千分号(‰)等等,通常我们都会利用插入符号的方法进行字符查找输入。

Google文件同样提供了“特殊字符插入”功能,在文档编辑页面中,切换至“插入”选项卡下,点击“特殊字符”链接,在打开的“插入特殊字符”窗口中,点击需要输入的字符即可。

插入特殊字符

3、文件内容比较直观

Google文件的文档编辑页面提供了“修订版”选项卡,这一功能类似于Word 2007中新增的“比较”功能。

在进行文档的修订时,通常很难区分修订前、后的内容,Google文件的“修订版”功能可以记录所有用户手动更改、保存过的文档版本,有效防止误操作发生,还能让你在修改中针对同一文档的多个版本进行对比。

Google文件的内容比较功能

而在Google文件的电子表格中,则提供了“版本”选项卡,类似于文档中的“修订版”功能,可对电子表格进行内容比较,对于共享的文档和电子表格,Google文件还将详细记录每次更改、保存的用户名。


4、文件可定时自动保存

通常我们在编辑文档或电子表格的过程中,总会忘记保存文件,当遇到特殊情况时(如:突然停电、系统死机等问题)就难以应对,导致辛苦了半天所写的文件内容白白丢失。

在Google文件中增加了人性化的定时保存功能,用户无须进行设置,即可高枕无忧的编辑文件,Google文件默认情况下三分钟保存一次,并会显示保存日期和时间。

Google文件拥有自动保存功能



三、协作发布,网络共享

除了强大的文件编辑功能外,Google文件还具备多人协作、公开发布和网络共享功能,所有者对文档和电子表格具有所有权,可编辑文档和电子表格,还可邀 请更多的协作者和浏览者加入进来。协作者也可以参与编辑文档和电子表格,同样可以邀请更多的协作者和浏览者(但电子表格的所有者有取消该权限的功能),浏 览者可以查看文档和电子表格的最新版本,但无法作出更改。

打开任一文档或电子表格,点击右上角的“协作”链接,进入协作编辑邀请发送页面,在邀请框中可以填写协作者和浏览者的电子邮件地址。然后,单击“邀请这些人员”按钮发出邀请函。

邀请协作者和浏览者

协作者在收到邀请函后即可进行文档或电子表格编辑操作,但需要注意的是,协作者必须拥有Google帐户才能进行文档和电子表格的编辑。

所有者拥有发布文档或电子表格的权利,当文档或电子表格编辑完成后,点击页面右上角的“发布”链接,即可进入发布文档或电子表格页面,点击“发布文档”或“立即发布”按钮,你的文档或电子表格即可发布到互联网上。

发布电子表格

除了发布文档或电子表格到互联网上,Google文件还支持将文档发布到你的博客上,在“发布此文档”页面中点击“设置博客站点”链接,打开“博客站点设 置”窗口,Google文件支持大部分流行的博客站点,选择博客服务托管供应商,输入用户名和密码后,单击“确定”按钮即可。

设置博客站点

总结:功能实用,足以应付日常需求

Google以搜索引擎为中心,将其服务不断拓展,Google文件服务的发布,使用户在办公领域又多了新选择,相对昂贵的Office软件来说, Google文件提供的功能并不逊色,提供了我们常用的Word、Excel的相关功能,虽然提供的功能选项没有微软Office丰富,但足以应付我们日 常的办公需要。

通过试用,Google文件的文档和电子表格功能没有出现任何编码错误和兼容性问题,对中文的支持也比较好,其用户群体进一步扩大。除此之外,Google文件的最大优势就在于其一体化平台,集多种服务于一身,规模效应不可小视。如果由于种种原因而导致你所使用的电脑上没有安装办公软件的话,Google文件的相关服务的确是不错的选择。


【测评】简便直观实用!Google地图搜索体验

如今,地图搜索更多的融入到搜索引擎中,极大地方便了使用者查寻精确的地理位置,如:定位某车站、医院、学校的准确方位等,很大程度上方便了人们的生活及外出。

前不久,Google中国推出了地图搜索,以强大的内容和技术支持作为坚强的后盾,拓展了搜索的广度和深度,使搜索变得更加简单、方便,并着重体现了互动性、智能化和人性化的一面。

一、简单便捷,地图搜索

现在,进入Google中文主页,在搜索分类中有了“地图”一栏,点击即可进入Google地图搜索页面。Google地图搜索主页包括上方的“搜索框”,左侧的“示例搜索区”和右侧的“地图数据区”。



Google地图搜索首页

在捜索框内输入要查询的地名,如上海市,可直接在搜索框中输入城市名“上海”,然后单击“搜索地图”按钮,即可找到该城市地图。

Google地图搜索允许用户自行设置默认地点,这样用户在下次访问时,将以你所设置的城市为起始地址。



搜索“上海”

除了以城市名为关键字进行搜索外,Google地图搜索还支持对特定目标进行精确搜索,即:以一个城市的街道和街号为关键进行搜索,如:外滩。还可对同一城市的十个地点进行了特定目标精确搜索,Google地图搜索都能准确、快速、正确的识别。

点评】Google地图搜索以特有的专业地图搜索服务器和实时更新的庞大数据库系统作为坚强的后盾,具备上、下、左、右平移,放大,缩小,缩略图等常规功能,使搜索变得简单化、人性化和智能化。

二、模糊查找,搜索周边

除了常规的精确查找外,Google地图搜索还支持模糊搜索。当用户对查找地名不清楚或只知道在某一地区附近时,可启用Google地图搜索的“搜索周边”功能进行大范围模糊查找。

单击“搜索周边”标签页,在搜索框内按提示分别输入地点和要查询的关键词,也可以选择使用单个搜索框来搜索周边,只需在输入的地点后面嵌入“附近的”或一 个空格即可。例如:要查找上海外滩附近所有餐厅,可在第一个搜索框中输入内容,在第二个搜索框中输入地点,然后单击“搜索周边”按钮即可。



模糊查找,搜索周边

在搜索结果页面的左侧将以列表形式显示所有在上海外滩周边的餐厅,而在右侧的地图数据页面中将以气泡形标注出精确位置,单击即可查看餐厅名称、所属区域及路段。



查看搜索周边结果

点评:作为地图搜索中精确搜索的有利补充,“周边搜索”功能的加入,可以以区域或者点为单位随意控制范围大小和信息类型,对周边进行搜索,为精确查找提供了必要的支撑,进一步拓宽了选择的范围。

三、行车路线,智能导航

Google 地图搜索将“公交换乘”和“驾车指引”两项功能融为一体,形成自己独特的“行车路线”,通过输入“起点”和“终点”来查询搜索结果,测量搜索距离。笔者以 “上海东方明珠”为起点,“上海博物馆”为终点,对Google地图搜索的“行车路线”功能进行了测试。



查看行车路线中的拐点放大图

在测试结果页面中,显示了详细的出发点和到达终点,以及两地之间的距离,并有具体的驾车指引路线,在“地图数据区域”中,还可以看到更为直观的利用关键点进行定位的拐点放大地图。

点评:城市行车路线方案与地图标注,将地图、路线、描述完美的结合在一起,是一个非常实用的功能,很大程度上可以方便人们的出行。Google地图搜索行 车路线功能为用户提高了智能化的导航功能,可以准确测算出两地之间的实际距离,帮助用户在电子地图上规划行车路线,从而引导用户按规划的路线准确的抵达目 的地。

总结:功能实用,有待加强

依托强大的专业地图搜索服务器和实时更新的数据库系统以及 Google人性化的服务作后盾,Google地图搜索从搜索范围和搜索精确度来看都相当出色,突破了简单、普通的仅供查阅的地图模式,并在地图中加入了 放大缩小、拖动平移、自动测量距离等实用的功能选项,使搜索操作起来简单而又直观,Google地图搜索完全能够满足人们在日常生活中的需要。

不过,Google地图目前尚未提供在其地图上保存或标示多个目的地的功能,对于地图搜索来说,这项功能是非常实用且必要的。

另外,在行车路线功能中,Google地图显得还不完善,虽然有详细的行车导航方案,但只提供了一种,而在实际生活中,多种可选择路线也是非常有必要的。


Powered By Blogger

Google Analytics(分析)

关注者