Archive for Technology

Google Earth on the Front Cover of Nature

// February 21st, 2006 // No Comments » // GIS

Google Earth on Front Cover of Nature

本期Nature杂志的封面是以Google Earth为主题的,而且里边有5篇关于GIS的文章,包括一篇Editorial - Think Global,一篇Feature - Virtual globes: The web-wide world,一篇Commentary - Mapping disaster zones和2篇News - How does Google Earth work?The virtual world gets bigger。主角显然是Google Earth,不过对GIS也做了不少介绍,有兴趣的可以去Nature的网站上在线看。

不得不承认,Google Earth和Google Maps对GIS的推广和普及真的是功不可没阿,尽管从某种意义上说,它还不能称为一个完整的GIS系统。

The GIS software is already an important tool for understanding spatial and temporal factors in a wide range of disciplines. But many scientists that could use GIS do not, and it has remained largely the preserve of specialists. Goodchild is convinced that tools like Google Earth will increase awareness of GIS’s potential and encourage researchers to explore more powerful GIS techniques. “It’s like the effect of the personal computer in the 1970s, where previously there was quite an élite population of computer users,” Goodchild enthuses. “Just as the PC democratized computing, so systems like Google Earth will democratize GIS.”

Learning Ajax

// January 3rd, 2006 // No Comments » // Technology

Asynchronous Javascript and Xml(Ajax)是当前非常流行的Web开发技术,有很多成功的应用案例,比如Gmail Google MapBackbase等。作为Rich Internet Application(RIA)的一种实现技术,Ajax不仅可以改善用户体验,还可以简化Web开发,通过将页面高度模块化,数据与表现分离,从而可以使服务器端和客户端都可以很好的解耦,降低开发的复杂度。

事 实上,Ajax并不是什么新的技术,只不过是Javascript一些相对比较高级的特性的综合应用。也正因为此,Ajax与其它RIA实现技术(如 Flash、Java Applet)相比,不需要在客户端安装特殊的插件,具有更广泛的浏览器兼容性。一般来说,Ajax所涉及的Javascript特性包括:

  1. 通过XMLHttpRequest的异步请求调用。 客户端Javascript可以通过异步的方式,向后端服务器发送请求、响应返回结果,对页面内容进行部分的更新,而不再需要每次由用户通过改变链接地址,对整个页面进行更新。这是Ajax能够实现页面的平滑刷新,提供用户体验的基础。
  2. 对XML文档的解析与处理。由XMLHttpRequest返回的服务器端信息,可以是纯文本、HTML片段或者是XML文档。对于简单的Ajax应用,纯文本或者HTML片段即可完成任务(如 Gmail);然而对于比较复杂的应用(如 Google Map),服务器返回的信息可能不仅包括页面更新的内容,还包括对页面进行控制的信息,这就需要使用结构化的XML数据,通过Javascript对XML进行解析和处理,获取必要的信息。
  3. 基于prototype的面向对象的Javascript。从Ajax 的字面意思上讲,这一特性并不是一个Ajax应用所必需的。然而,做为一种RIA,其相当大部分的业务逻辑是由客户端Javascript来实现的,如果 使用传统的变量+函数的顺序执行的方式,其设计和实现都将是相当复杂的。而如果能够引入面向对象的思想,可以大大降低Ajax开发的复杂性。而 Javascript的Prototype属性为这一实现提供了基础。

由于Ajax的热门,网上出现了大量介绍Ajax的网站,文章。根据我的学习过程,比较有代表性的包括:

  1. Ajax: A New Approach to Web Applications 这是Jesse James Garrett提出Ajax这个名词的文章。尽管Ajax的应用很早就有了,但是这个术语却是Garret在这篇文章里进行了定义和介绍。文章中用到的2幅图,可以帮助我们理解Ajax与普通Web程序的区别。
  2. Ajax: Getting Started 这是发表在Mozilla Developer Center的一篇文章,通过简单的实例,对Ajax的流程进行了描述,让你对Ajax有一个比较基础的认识,可以作为入手的教程。很多人将其翻译成了中文,发布在网上, 这里便是其中之一,如果习惯看中文的话,可以去看看。
  3. prototype.js开发笔记 prototype.js 是由Sam Stephenson写的JavaScript包。这段构思奇妙编写良好兼容标准的 代码将承担创造胖客户端, 高交互性WEB应用程序的重担,轻松加入Web 2.0特性。我们对于prototype.js的兴趣主要来于两个方面。一是它提供了一系列封装Ajax逻辑的类,可以为我们编写Ajax代码提供便利。 另一方面,通过对prototype属性、call、apply等方法的应用,其提供了一套使用Javascript完成面向对象编程的机制,可以很大程 度上实现封装、继承、多态等OO特性。 这篇文章的作者通过对prototype.js源代码的分析,介绍了这个包的对象,类,方法和扩展的非官方参考。
  4. Ajax Patterns 通过1,2的学习,应该已经对Ajax有一个比较清楚地认识了,并可以编写一些简单的Ajax应用了。然而,如果要真正运用Ajax来进行实际的开发,就 会遇到各种各样的问题。这个Wiki站点就可以帮助你更加深入的了解Ajax,你可以在这里找到Ajax开发过程中方方面面的问题及现有的解决方案。不 过,目前有一些问题的解决方案还不完善,比如固定链接的问题。
  5. Ajaxian 这是一个追踪最新的Ajax应用的Blog。通过这个网站,可以了解最新的Ajax应用实例、方法,新的介绍Ajax技术的文章等等。
  6. AjaxMatters 这是一个关于Ajax的综合网站,包括大量的Ajax的文章、书籍、类库和工具的介绍。
  7. Google-ajaxslt 这是Google提供的一套开源的Javascript下的XSL-T实现,主要用于在客户端通过XSL-T对服务器返回的XML进行呈现,是从其 Google Map的开发过程中提取出来的。
  8. Log4Ajax 对 于Javascript程序的开发,最头疼的一件事情就是对其进行调试。对程序纪录日志,是一种常用的调试方法。这篇文章介绍了如何对Ajax程序纪录日 志,包括客户端和服务器端两方面的内容。事实上,对于调试程序来讲,可能更重要的是客户端的部分。如果只需要在客户端进行日志纪录的话,可以使用 JSLog这个小工具,它提供了一种比较方便的方式进行客户端日志的记录和显示。

这里提到的,只是我读到或使用过的关于Ajax很少的一部分内容,如果你需要了解更多的Ajax的应用框架和开源工具,可以参看Ajax Patterns的 Frameworks页面,而更多的Ajax网站,可以在links页面找到。