2005年12月27日星期二

探访“集思学院”

在搜索mapserver与ArcIMS的对比资料时发现了集思学院,人气不是太旺但气氛挺好。
注册了用户,在首页也看到了我的用户名,却不知怎得登录不了。:(
获益有二:
一位老兄贴出了用ka-Map制作的站点,其中类似google map中overlay的效果gograss
目前在考虑的,不知是如何实现的,由于不能登录也无法请教楼主;
看到大家对GRASS的热情,顺便去GRASS网站瞄了瞄,有点喜欢它了,毕竟是有“悠久历史”的开源GIS软件。

2005年12月25日星期日

安装MapServer和ka-Map

四个光光凑钱买了瓶好酒和吃食,混过了平安夜。
节日不属于我,但假期属于我,我要好好享受这能够自由支配的时间。:)

在Linux上安装MapServer,可以使用MapServer站点提供的源码进行编译,可以使用RPM包,但最方便最舒服的方法是使用FGS。
MapTools站点下载FGS安装包
运行命令(sh fgs-***.bin),开始安装,选择安装目录(/usr/local/fgs)和端口(8000),解压完毕;
提示信息很友好,安装完毕后介绍如何在机器启动时自动运行服务、如何设置环境变量;
按照提示运行命令echo ". /usr/local/fgs/setenv.sh" >> ~/.bashrc,这样每次启动时自动设置环境变量;
测试,打开页面http://localhost:8000/gmap-demo/,正常。

从MapTools站点下载ka-Map包
解压后将ka-map主目录及其下内容拷贝到FGS应用程序目录下(如/usr/local/fgs/apps/ka-map-0.1.1);
在/usr/local/fgs/www/conf.d目录下创建ka-map应用程序的配置文件ka-map.conf,仿照gmap-demo.conf,定义ka-map应用程序的虚拟路径和实际路径的映射;
重启fgs (fgs stop & fgs start),打开页面http://localhost:8000/ka-map/,错误“unable to load dynamic library /usr/local/fgs/www/lib/php4/php_mapscript_46.so”;
查看/usr/local/fgs/www/lib/php4目录发现只有4.4.1版本的库和两个链接,打开ka-map的配置文件configure.php,修改$szPHPMapScriptModule变量值;
再打开页面http://localhost:8000/ka-map/,OK!

当前MapTools站点提供的ka-Map包是0.1.1release版,此版本中很多脚本都集中在index.html文件,缺乏模块化,理想状态应该是开发为Google Maps API的全接口状态;
用CVS获取ka-Map的最新开发版本可看出,ka-Map正在向模块化、接口化方向发展;
运行命令(
export CVSROOT=:pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot
cvs checkout ka-map
)检出ka-Map的CVS开发版本。

2005年12月22日星期四

XML技术教程阅读所得

W3Schools上有一系列XML相关技术的入门教程,Excellent!
从中学到了不少东西。

XML Tutorial
“XML is a cross-platform, software and hardware independent tool for transmitting information.“
CR(carriage return)和LF(line feed)来源于早期打字机的操作,不同平台的行结束符不同,Windows是CR+LF,UNIX是LF,Mac是CR,XML中使用LF;
属性值可以用单引号或双引号括起来,以处理属性值中包含引号的情形;
格式书写正确的XML文档称为“well formed”,遵循某一个DTD或XSD规则的XML称为“valid”;
命名空间的来历是用前缀区别元素,缺省命名空间是xmlns;
为了避免编码错误,需要使得XML文档保存的编码和文档中指定的编码一致;
能够通过关联CSS或XSLT文档确定XML文档的表现方式。

XHTML Tutorial
遵照XML的语法约定来规范HTML的结果;
文档头部要关联XHTML的DTD约定;
所有标签使用小写字母;
所有标签都要封闭,都要正确嵌套;
目标是取代HTML。

XML DOM Tutorial
“The W3C DOM provides a standard set of objects for representing HTML and XML documents, and a standard interface for accessing and manipulating them.”
分为core dom、xml dom、html dom三部分和level 1、2、3三个层次;
不同浏览器所附带的XML解析器对DOM的支持和使用方法不同。

XSL(XSLT XPath XSL-FO):
CSS是HTML样式表单,XSL是XML样式表单;
XSL包含XSLT、XPath、XSL-FO三部分;
XSLT定义了语句结构,结合XPath的表达式,将XML文档转化成其他的XML文档或HTML文档;
XPath定义了遍历XML文档元素和属性的算子、表达式和语法;
XSL-FO是描述XML文档输出(屏幕、文本、打印机等)的表现形式的语言;
XSL-FO结合XSLT使用能将XSL-FO代码与XML内容剥离;
符合XSL-FO标准似乎也应当是报表系统的未来?很多XSL-FO处理软件基于Apache FOP

XML Schema Tutorial
将取代DTD,因为它用XML写成,易扩展,支持数据类型和命名空间。

XQuery Tutorial
“XQuery is to XML what SQL is to database tables.“
建立在XPath的基础上。

Linking in XML
XML中的链接分为XLink和XPointer两部分;
XLink定义了在XML中创建超链接的标准方法(相当于a),XPointer定义了如何让超链接指向XML文档中的确切位置(相当于锚标);
除了常见的两端链接,XLink还定义了多端链接。

RDF Tutorial
语义Web的一部分;
设计目标是使机器能够阅读、理解所描述的内容;
使用属性和属性值来描述资源,用URI定位资源;
RDF Schema是RDF的扩展,定义了构建应用相关类和属性的框架,它定义的类与OO中的类相似;
RDF是元数据,Dublin Core是一组描述文档的预定义属性;
OWL建立在RDF之上,用于描述Web信息及其之间的联系,与RDF有许多共通的性质但具有更丰富的词汇表和更强的语法,更易于被机器理解,也是语义Web的一部分。

SMIL Tutorial
SMIL是一个同步多媒体整合语言;
包括多媒体内容的布局、播放顺序和时间、状态转变;
IE5.5+支持,Firefox还不支持。

SVG Tutorial
可以使用embed或object标签将svg嵌入HTML页面,但embed不能被XHTML支持,object又不能支持脚本,使用iframe能被大多数浏览器支持;
Firefox还不能支持SVG的脚本编程(SVG与外部脚本的交互)、动画、filter,IE+AVS都能支持。

2005年12月19日星期一

关于WMS/WFS等的实现

Refractions使用Google Web API检索方法,给出了调查已实现的各种服务的白皮书

希望实现WMS/WFS/WCS、WMC等规范完全兼容的服务组。
MapServer过于复杂,并且用CGI实现,如果应用系统不用CGI实现的话(比如servlet),势必要求Web地图服务和应用相关服务独立部署;
GeoServer用Java实现了WFS/WMS;
SimpleMapServer,需要支持多种数据源,需要输出SVG
Batik,实现SVG的解析和生成的Java库;

客户端
quickWMS,需要增加PAN动作,对getCapability的支持(版本和图层),平滑显示
ka-Map,需要模块化,需要脱离MapServer支持标准WMS
借鉴google map API
Map Builder实现了WMC
要实现复杂地图应用,需要SVG

客户端,基本熟悉了quickWMS,增加了PAN动作,TO-DO:
  1. GetCapabilities的请求与解析(XML)
  2. 根据图层的SRS和BBOX确定图层是否可以在同一个视图显示
  3. 根据图层所支持的返回格式确定要采用的浏览组件
找一些Free Data用于开发测试:(如Frida
svg客户端的例子songsvg
能够返回svg格式的WMS:mapserver geotools deegree geoserver?
Firefox SVG 相关文档

2005年12月18日星期日

安装PostGIS

下载PostGIS,解压到PostgreSQL源码中的contrib目录中
下载Proj4,编译安装,默认安装在/usr/local
由于安装GEOS需要链接C++库编译PostgreSQL,麻烦,暂时不装
修改PostGIS目录中的Makefile.config,将USE_PROJ设置为1
在PostGIS目录下make & make install
su登录为postgres用户,
启动PostgreSQL数据库服务,
creatlang plpgsql *** (***是你要为之安装PL/pgSQL过程语言的数据库)
psql -f lwpostgis.sql -d *** (这里可能出错误,如果的话,以root身份执行ldconfig -v)
进入psql环境,查看***数据库,可看到多出两个空间相关的表

参考资料:
PostGIS ReadMe
PostgreSQL文档

2005年12月17日星期六

在FC4上安装PostgreSQL的过程

PostgreSQL的官方网站上发布了FC4上的RPM安装包,但用RPM包安装会将安装内容分散在很多文件夹中,所以我选择下载源码编译安装。

首先,在我的用户名登录下,
编译安装:./configure & make & make install
(默认安装在/usr/local/pgsql目录)

接下来,su转为超级用户,
添加postgres用户:adduser postgres (此用户负责维护PostgreSQL数据库和服务器)
改变PostgreSQL安装目录的拥有者:chown -R postgres.postgres /usr/local/pgsql/

然后,su转为postgres用户,
创建数据库簇存储目录:mkdir ~/data (在postgres用户主目录之下)
设置一些路径信息:vi ~/.bash_profile
PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
初始化数据库簇:initdb (有许多参数可以指定,包括locale和字符集)
启动服务器:pg_ctl -l logfile start (日志记录在logfile文件中)
(由于已在配置文件中指定PGDATA,所以initdb和pg_ctl可不必指定-D ~/data)
创建一个数据库:createdb mydb1 (OK!)

PostgreSQL 8.1版本之前有用户和组之分,但现在只有角色的概念。
SQL客户端程序是psql,运行psql时默认使用与当前系统用户名相同的数据库角色进入与当前系统用户名相同的数据库,否则需要指定“-d 数据库名 -U 数据库用户名”。
在postgres用户下,
进入SQL客户端运行环境:psql  (以postgres用户身份进入postgres数据库)
执行SQL命令创建我的角色:create role *** with login password '***' createdb;
在我的用户下,
创建与我的系统用户名相同的数据库:createdb ***
进入SQL客户端运行环境:psql (以***用户身份进入***数据库)
然后执行sql创建表和数据等动作,OK!

参考资料:
LAMP站点上的《在Linux上安装PostgreSQL
PostgreSQL文档

2005年12月16日星期五

开源GIS。

一、参考refractions一篇调研开源GIS当前状态的白皮书《The State of Open Source GIS》,至此日止,此文档最后更新于2005-2-2。
1 文档首先划清了开源的界限,用以下几个问题来评估一个项目是否属于OSS —— “是否有良好的文档,开发团队是否透明,软件是否模块化,开发社区的广泛度如何,用户社区的广泛度如何”。
2 按照实现语言,开源GIS项目开发人员可分为C语言部落和Java语言部落,C语言部落包括参与Mapserver、GRASS、GDAL、OSSIM、 Proj4、GEOS、PostGIS、qGIS、Thuban和OpenEV的开发人员,同时也包括使用易于绑定到C语言的脚本语言(如Perl、 Phython、PHP)的开发人员;Java语言部落包括参与GeoServer、GeoTools、JTS、JUMP/JCS、DeeGree项目的 开发人员。
不同语言实现的软件之间也有交互,如用JDBC访问PostGIS,通过JNI使用MapServer。
另外也有不属于这两类语言的项目,如Web应用,提供基于浏览器接口的工具集和Web服务。

3 C语言开源项目如下图,其中灰色块表示的是用于多个应用软件的共享库:

4 Java语言开源项目如下图,其中灰色块表示的是用于多个应用软件的共享库:

5 C/Java开源GIS项目简介:
GDAL/OGR,GDAL为栅格数据或模块提供读写多种栅格格式的抽象库,OGR为矢量数据或模块提供读写多种矢量格式的抽象库;
Proj4,一个负责坐标投影的库;
GEOS,JTS拓扑库的C++实现,实现了OpenGIS简单要素规范中的要素类型;
OpenEV,最初为Linux开发的GIS桌面应用程序,现也有Windows版本,使用OpenGL图形库,能够快速浏览较大图形文件,结合DEM文件能够创建3D显示;
Mapserver,UMN开发的Web地图服务器;
GRASS,本来是1982年启动的一个美国军方项目,1999年开源,具有栅格、矢量分析能力,是具有较长历史的建模分析工具,拥有大量的模型;
OSSIM,栅格处理工具链,最初由ImageLink公司开发并应用到其软件产品中,OSSIM将图像处理任务切分成多个独立、可并行执行的组件,这些组件能够重组成不同的处理流软件并可以并行运行在机群上来获得提高计算能力;
QGIS,使用QT图形工具包开发的GIS桌面应用程序;
Thuban,使用Phython开发的GIS桌面应用程序,使用WxWindows跨平台图形工具包;
TerraLib,一个GIS功能类和函数的库,实现了元数据模型、空间模型、应用模型、地理编码模型、空间统计模型等数据和服务模块,源自巴西,文档是参杂部分英文的葡萄牙语写成的;
GMT,被设计成一组数据处理和图形生成的小程序,而这些小程序能够串起来用脚本粘接成复杂的数据处理链;
PostGIS,为PostgreSQL数据库添加了空间数据库的功能,扩展内容包括空间对象、空间索引、简单的分析功能、谓词和算子(GEOS)、坐标系统元数据、坐标投影支持(Proj4)、数据导入和导出工具;

GeoAPI,为执行各种地理操作提供标准方法的Java接口库,与ISO和OpenGIS相应规范呼应,希望将GIS的所有Java项目统一在单个接口规范之下;
WKB4J,Java语言实现的WKB(well known binary)解析库,提供Java和WKB格式空间数据源之间的高速互连;
JTS,实现了OpenGIS的简单要素规范,实现了健壮的空间谓词(拓扑关系判定),也包括空间算子(差、并、缓冲等);
Geotools,目标是要开发一个框架中的Java对象核心集,能够使得其他人较容易地开发OGC兼容的服务,包括核心接口API和接口的缺省实现,具有良好的模块化结构,各个OGC规范和数据源都用独立的模块来支持;
GeoServer,WFS规范的J2EE实现,建立在GeoTools之上,还支持Z39.50目录服务(OGC目录服务的一部分);
DeeGree, 消息传递系统的体系结构,实现了WMS 和WFS服务器,GTS、GCS等部分实现,独特的体系结构同时也增大了代码理解的难度,作为CITE项目的一部分,GeoTools和DeeGree协 调开发底层数据模型,将DeeGree的功能(如WMS)带入GeoTools/GeoServer;
JUMP,用于“JCS Conflation Suite”解决数据整合问题的可视化和用户界面工具集,设计能够嵌入空间对象合并算法的可插入环境;
gvSIG,西班牙的一个项目,要提供一个应用开放标准、平台独立的开源工具,设计目标是模块化、互操作性、开源、基于标准、较低开发成本、跨平台;
OpenMap,建造空间应用程序的Java语言组件库,代码有些老化;
uDig, 代表“User-friendly Desktop Internet GIS”,接合GeoTools的设计、数据结构、标准优势,JUMP的用户界面、渲染、互操作优势和Eclipse富客户端平台的可扩展性、工业开发标 准的优势,生成一个新的桌面GIS编辑器,并能够与广泛的本地、网络数据源交互。
6 Web项目
Chameleon,开发Web地图应用的分布式、可配置环境,基于WMS和WMT Viewer Context标准,包括一组能够放置于HTML模板文件中的提供特定功能的组件,并可以配置组件的表现形式;
Community Map Builder,用JavaScript实现了Web Map Context规范,能够显示和控制来自不同WMS服务的不同map;
Mapbender,提供显示、导航和查询WMS相兼容地图服务的能力,其框架包含用户和组管理、访问WMS所生成地图等功能的接口,下一步将支持WFS和目录服务;
quickWMS,WMS客户端的轻巧实现,JavaScript类组,容易使用但功能简单且有较多的错误;
ka-Map,JavaScript实现的Ajax Web Map客户端,包括基于MapServer的服务端支持代码,客户端显示流畅,但和MapServer关联很紧,客户端和服务端代码关联太紧,不是纯粹的WMS客户端。

7 开源GIS项目在体系结构上的分布图:

可见,当前的开源GIS软件已覆盖从底层到桌面应用到Web应用的方方面面。

二、开源GIS项目的聚集站点
SourceForge,拥有OpenEV、GeoAPI、GeoServer、DeeGree、Map Builder、quickWMS等
MapTools,拥有Chameleon、ka-Map等
Refractions,拥有GEOS、PostGIS、uDig等
RemoteSensing,拥有GDAL、Proj4等

FreeGISOpenSourceGIS,汇总GIS开放软件和数据的信息,维护开放GIS项目的索引列表

2005年12月15日星期四

Google Maps API以远

Google提供了Google Maps API,使得Web开发人员能在自己的页面中嵌入Google Map的功能。我想这也应当是我们的WebGIS的一个努力目标,认识Google Maps API能辅助我们的WebGIS设计。
Google Maps API为处理地图显示、地图操作控制、地图标记、异步数据请求、XML数据解析与转换,定义了GMap、GMarker、GPolyline、 GIcon、GEvent、GXmlHttp、GXml、GXslt、GPoint、GSize、GBounds等一套类体系。API文档中有对这些类的详细描述。
Google Maps API带给我很多启示,比如Ajax的应用,比如其API文档中推荐使用标准兼容的XHTML以规范浏览器解析的方法,比如GPolyline的实现中VML的应用,等等。
VML是微软提出的矢量图形的XML表示语言,首先在IE5中实现,并提交W3C作为Web上矢量图形的标准,但随着SVG标 准的出现VML的前景并不太好,至少在标准上是这样。SVG出现的目的同VML差不多,也是利用XML将显示矢量图形的能力纳入Web,但SVG比VML 定义了更丰富的元素,比如交互和动画、关联与查询等。在浏览器的支持上,起初IE不用任何插件支持VML,需要下载Adobe的插件才能查看SVG,而现 在情况大有改观,Firefox1.0以上的版本也能支持VML,并且见到一篇Blog说Firefox1.5能够不用插件支持SVG。广泛支持SVG是大势所趋。已经有很多WebGIS项目是基于SVG实现的,比如GISDevelopment上的一篇文章描述的。
另外,W3C上见到消息说创建了两个富客户端相关的工作组,Web APIs工作组Web Application Format工作组。Web APIs工作组致力于为客户端Web应用开发设计一组标准的API,使得Web富客户端的开发标准化、简单化,其中包括已有的XMLHttpRequest。我想这里面也有Google Maps API的刺激作用。

2005年12月12日星期一

又是Ajax。

以前的帖子中已经介绍了一些关于Ajax技术的或深或浅的文章,这里又有一篇介绍性文章,虽然又不少重复内容,但思路清晰、文笔明确,值得一读。

2005年12月8日星期四

泼向Ajax的冷水。

通过slashdot上找到一篇揭露Ajax缺点的文章
看看作者对Ajax局限性的系统总结,有利于合理使用这个当前几近烫手的技术。
作者提到的Ajax缺点主要有:
Ajax的异步性破坏了Web的原有统一模型,导航无法工作,也使得URL失去了明确的意义;
部分浏览器欠缺对Ajax的支持,部分浏览器欠缺对Ajax部分特性的支持;
许多浏览器不能适当地打印Ajax页面;
Ajax难以学习掌握;
搜索引擎难以索引Ajax页面;
一些网站发现用户更喜爱不使用Ajax技术的设计。

但Web的发展势必要求突破Tim Berner-Lee的原始定义,用户要求更丰富的界面、灵活的操作。
即使Ajax不是改革Web的最终武器,也唤醒了更多人对Web发展的思考。

2005年12月7日星期三

一个德国城市向开源的转变计划

在ZDNet上看到一则12月5日的top news:One city's move to Open Source
从感性上说,解气(嘿嘿),因为我喜欢开放,讨厌微软。
从理性上说,负责这项计划的管理人员有理有据的阐述了逃离微软的必要性和可行性,可能遇到的危险及对应措施,以及一些注意事项。

成思危:自主创新与现代化

成思危先生在电视主题演讲节目《中国经济大讲堂》中, 阐述了自主创新的一些问题1 2 3
简单总结如下:

主持人从我国企业由于缺少核心技术,每生产一台29美元的DVD机需要交纳20美元的专利费,而出口一台DVD机器的纯利润为1.5美元这一事实开场。

创新理论最早由奥地利经济学家雄比德1912年在《经济发展理论》中提出,原始定义为“企业家对生产要素的组合,包括开发新产品、提出新方法、开辟新市场、获得或者控制原料的新来源、采用新的组织形式”,指出这五种新都是创新。
创新的概念随经近百年的发展,但其基本定义没有变:就是指引入或者产生某种新事物而造成变化。

三种类型:技术创新、管理创新和制度创新。技术创新:把新产品、工艺和服务引入市场,实现其商业价值的过程;管理创新:把新思想、方法、手段或新的组织形式引入企业和国家的管理中,并取得相应效果的过程;制度创新:把新关系、体制、机制引入社会和经济活动中,并推动社会和经济发展。
技术创新的三种类型:跟随创新(韩国引入美国CDMA核心技术而开发外围技术专利);集成创新(复印机);原始创新。创新来源:企业的研究开发费用一般占销售额的3%到百分之十几,企业对市场需求的敏感性。
管理的发展:经验管理、科学管理、文化管理。科学管理的发展过程中,由于细分工多层次的方法使得个人创新积极性、组织运行效率低下,经济学家提出重组业务流程,让每个人都有一个独立自主的管理层次,提高个人创新积极性,组织形式改进为扁平结构的组织形式,提高组织运行效率。文化管理的理念中,用共同的企业价值观代替监控机制提高员工凝聚力,这也是创新。
制度创新的作用(切蛋糕的例子,独立董事和监事会共同存在的例子)。

知识产权的重要性日益突出。与知识有关的成本,如专利费、技术使用费、技术服务费等所占的比重越来越高(20%-40%,甚至更高)。
“头脑国家”产生知识、输出知识,“躯干国家”接受知识、应用知识。
我国GDP占世界4%,而消耗的石油、钢铁和水泥却占到20%、20%和40%。

需要国家在立法和政策上支持创新。

风险投资是知识资本和金融资本的结合。风险投资的存在需要:靠近高校和科研单位;靠近工业和企业基地;有制度和政策保障。北京中关村、上海张江园区、深圳。
企业要敢于冒险(要有长远的眼光)、善于冒险(合理确定目标)。
学生需要求实(扎实学习前人经验)、善疑(提问题创新)。既要学,也要问。

2005年12月6日星期二

代码维护中的一点教训。

以前都是我一个人负责整个工程或一个完整模块的开发,自己能够随意地分别保存开发代码的当前编辑版本、测试发布版本和发布版本,可以方便地保证系统的正常演进。
而在有其他人参与开发时,需要各自维护各自的当前编辑版本,并测试发布,然后提交给最终发布环境,在最终发布环境的测试发布区测试完毕再纳入发布版本。在这些过程中问题变得复杂,也伴随着很多潜在的危险。
比如,各自在开发过程中的测试需要与最终发布环境一致的环境,搭建环境并不总是一帆风顺(在Windows系统上部署能够使用JDBC连接的SQL Server 2000就可能出现很多问题);而如果使用最终发布环境作为当前编辑时的调试环境的话,比如对于JavaBean来说,每次更新就需要服务器重启,开发者自己不方便也可能影响到其他人;在最终提交时,某个人的代码可能会因为依赖另外的代码而出现错误。
这几天的开发过程中的教训主要是没有在最终发布服务环境中区分测试发布版本和最终发布版本,以至于差一点丢失了一天的工作。

四世同堂。

昨天刚读完《四世同堂》第一部《惶惑 》,脑中还盘绕着“羊圈胡同”内外形形色色的人物在北平被日本鬼子占领之后形神的变化。
像祁瑞丰、蓝东阳、冠晓荷这等无聊、无耻的人物,不愿多想多说。
印象最深的是瑞宣和钱默吟两位书生。想起瑞宣来就感觉憋闷,他虽有报国的志气和才能,却因四世同堂的大家庭所累,不能像三弟瑞全一样投笔从戎,而只能以保持清白的方式沉默地抵抗敌人的淫威。隐忍的斗士所承受的责任和痛苦并不逊于暴力抗敌的英雄。钱默吟老先生本是一位钟情于花草书画、流连于陶诗的槛外诗人,在妻、子被害,自身受刑之后,脱离抽象的宇宙而融入了复仇保国的大“气”。特别是看到最后摔杯叩头,将后事托付给金三爷的一段情景,直感觉到一股掷碎枷锁后的书生意气,豪爽、坚定又有些悲壮。

2005年12月4日星期日

第一次出游。

周六终于如了心愿,一大早随车去了长城。
同学早就告诉说会降温、有大风,但由于早有了打算,便刹不住念头和腿脚了。
早上七八点出发到下午五点,转了十三陵水库、明皇宫、居庸关长城和定陵,定陵门票太贵没舍得进去。十三陵水库(包括九龙游乐园)没什么可玩的,但听导游简单讲述了“毛主席挥挥手,四十万工农跟着走,不花国家一分钱建造水库”的掌故,另外第一次 感受了动感电影,还好,但缺付立体眼镜。明皇宫里的26个蜡像场景,简单再现了明朝二百多年历史中的重要事件,蜡像很逼真,据导游说其中的一匹蜡像马的表 层是用十几匹真马的皮补缀而成,一个人物的造价在几万元,一个水果的造价在几百元。
最怀念的还是爬长城。没想到爬长城和登山差不多,事先没有心理准备,差点坚持不下来。开始的时候遇到一个印度人,才爬了一个垛口的高度就说坚持不了回去 了,跟他聊天更让我怀疑了我的英语听说能力。上爬的过程中遇到很多外国游客,一位同志对我伸出拇指笑着说“Great”,感觉很友善,后来遇到外国同志, 我也伸出拇指微笑着说“Great”。交流总是让人愉快的,即使是很简单的方式。
随公交旅游车出游省心一些,但要跟着车走遍他们安排的所有景点,即使不喜欢去,而在喜欢的景点的活动时间又太少。
(照片随后附上)

2005年11月28日星期一

游。

前些天看了《徐霞客游记》中游天台山的一篇,文字简洁、轻快,像他的心情与足迹一样。
周末买下了《徐霞客与<徐霞客游记>》,大略看了其游历的坚定与艰辛。
《苏东坡传》看到了苏东坡与名妓、高僧的交游,其中有他或结伴或独自游历杭州景胜的故事。
我也想出游了,一个人,一片淡然。
从这个周末开始。

2005年11月23日星期三

消除JAVA内存泄漏

撞到一篇文章,介绍了JAVA内存泄漏的一些陷阱、防止内存泄漏的编码实践和一个诊断泄漏的工具软件。

2005年11月20日星期日

我的机器人梦想 之六

1 尝试了一下用GDB调试spcaview:
  • 首先在编译时加入-g选项;
  • 运行gdb spcaview,即进入GDB的调试环境;
  • 设断点,如break main;
  • 单步运行,step或next,它们的区别是step进入函数体;
  • 另外还有advance、until、continue等常用命令。
暂时只用到这些。
2 用spcaview -a 1 -o aa.avi命令实验了一下语音输入功能,发现Capture设备的音频抓取功能能够正常运行,Microphone设备的不行,搞不懂为什么。
不过晓得了这一点之后,下一步就可以用VIM+CS静态阅读结合GDB动态调试从spcaview的源码中抽离所需代码了。

Mapdex

搜索到一个检索地理数据的站点Mapdex
这是一个公共ArcIMS服务的索引站点,不是使用详细的元数据来管理,而是采用Google模式,只要发布了地图服务并被Google索引,它就能获得地图服务信息并使之共享。
这里有一篇文章简单介绍了这一站点。
Mapdex试图采用Google的技术从Web上检索地图服务,为用户提供一个简单、一致的检索界面,检索之后跳转到相应服务站点,可算作链接式共享与集成。

如诗不成。

感伤或感慨的时候会假模假样地写下一些文字,所谓“情动于中而形于言,言之不足故嗟叹之,嗟叹之不足故歌咏之,歌咏之不足,不知手之舞之足之蹈之也”。本来是拿不出手的东西,但考虑到重要的是心情和行为的记录,因此不揣冒昧地整理记录在此。
这里的标题借用了William's BLOG中一个分类的名字“如诗不成”,感觉很贴切。

[2003年秋 考研刚到北京时]
夜初定,云破月漏花弄影;
人未静,风扬叶落心远行。
忆往昔,悠悠岁月蹒跚步;
更思量,泥泞雨路终有晴。
浑无计,歌罢弦断少人听。

[2005.4.26 Tue]
东风正自舞,飞絮惹皱湖。
阑珊春意尽,[孤心付何处]。
第四句是朋友补的,韵是有了,但嫌过于直露。

[2005.4.28 Thu]
窗外春光明媚,蝴蝶苍蝇乱飞。
周末没有约会,被窝里藏头露尾。
还睡,
还睡,
解道醒来无味。

[2005.5.8 Sun]
春尽了,
泛起更多愁。
心系文章难成行,
身随项目辗转走。
何日是尽头。

[2005.7.9 Sat]
人也静,
梦已空,
闲来把酒醉清风。
未念生死前程事,
何来苦绪与悲情!

[2005.8.2 Tue]
家去归来又见秋,
无端拈来许多愁。

[2005.9.5 Wed]
秋日气爽天高,风被流云扑倒。
草地唧唧吵吵,几只麻雀在闹。

吉祥物集合

在Jserv's BLOG上看到这张有趣的图片:Richard Stallman、Java之父James Gosling、FSF GNU、Evolution、Perl骆驼、OpenSSH河豚、BSD精灵、Linux企鹅、Java Duke、Mozilla、Apache羽毛、GIMP、OpenOffice、GNOME、GTK、X。
啊哈,还有什么呢?

PostgreSQL的昨天今天和明天[转载]

因为某些需要,一直想了解PostgreSQL的发展与特点。今天在阅读Jserv's BLOG时转到cnhnln's BLOG,看到了这篇文章。转载如下:

PostgreSQL 的昨天今天和明天
--自由软件数据库 PostgreSQL 简介 v2.0

前言

今 天,如果人们谈论起计算机操作系统,肯定有非常多的人会津津乐道自由软件操作系统Linux,毕竟,众人拾柴火焰高, 如今没有任何人敢于忽视 Linux 这个自由软件操作系统在我们星球的存在,就连国内比较特殊的环境下,也不断地有 各种各样的 Linux 秀出现让公众,甚至是那些对计算机知之甚少的群众都能意识到 Linux 的存在。但是,如果我们 说起数据库,可能绝大多数人只会记得有 Oracle,IBM DB2,Informix,Sybase,MS SQL Server,以及在互联网广为 使用的轻量级 Mysql,而提到 PostgreSQL 的名字,可能很多人都会皱起眉毛:“这是什么?”

“PostgreSQL 是一种特性非常齐全的自由软件的对象-关系性数据库管理系统(ORDBMS),它的很多特性正是当今许多商业数据库的前身”
--摘自 PostgreSQL 手册。

为了让大家能够清楚的了解 PostgreSQL,请听我细细道来。

历史

出身名门

谈 到 PostgreSQL,我们不得不谈 Berkeley,也就是中文中的“加州大学伯克利分校”这所大名鼎鼎的大学。 老实说,伯克利(BSD)对计算机科学的贡献可谓巨大,在整个计算机科学的发展史上,几乎到处都有这所学 校的研究人员和学生的足迹。只要稍微对计算机技术史有些记忆的人都会记得在 Unix 操作系统的发展里程碑 上 BSD 这三个字的分量,然而也许正是由于 BSD 在系统和网络领域里的光芒太耀眼,掩盖了 BSD 对计算机技术其他分支的贡献,而
PostgreSQL 正是其中之一。

创世纪——Ingres

追 本溯源地讲,PostgreSQL 最早开始于 BSD 的 Ingres 项目,这个项目主要是研究关系型数据库技术,早在 1970 年 E.F. Codd 就提出了关系模型,从那以后,人类在计算机领域的数据管理就进入了一个新的时期。从此人们开始用抽象的关系语句来描述自己的 数据,大大提高了人类对数据的抽象描述能力。而 Ingres 项目正是就此进行研究的,它始于 1977 年,到 1985 年结束,而其研究成果后来被一家叫 Relational Technologies 的商业公司拿去做成了商品软件,后来这家公司又被 Computer Associates(CA)收购,不知道 CA 的 JASMINE里面是否还有当年 Ingres 的影子?

新项目——Postgres

然 后,从1986年开始,BSD 的 Michael Stonebraker 教授领导了称为 Postgres 的“后Ingres”项目, 其主要目的是数据库管理系统的更高级研究,因此而产生了 PostgreSQL 的直接前身,Postgres,而 PostgreSQL 的名字也是从 Postgres 项目继承过来的。 这个项目的成果是非常巨大的,在现代数据库的许多方面都做出的大量的贡献,比如,面向对象的数据库, 部分索引技术,规则,过程和数据库扩展等方面都走在了数据库管理系统的前列。而且,Stonebraker 教授还做出了一件造福全人类的事情, 那就是把 Postgres 放在了 BSD 版权的保护下,在这个版权的范围里,任何人几乎可以做任何事情,包括增强它和商业化等。条件只是把 BSD 的版权声明包括在软件的源程序里。

Postgres 在 1989 年发布了第一个版本,因为是BSD版权,所以很快在各种研究机构和一些公众服务组织里广泛使用起来, 由于 众多用户使 Postgres 的开发变得更多地是维护代码和打补丁,而日益背离了原先的数据库管理系统的研究的目标, 到了1994年 Postgres 在版本 4.2 的时候正式终止。而 Postgres 的许多成果则转化成一个商业公司 Illustra,后来 Illustra 被 Informix 收购。看到这里,想必大家应该对 Postgres 的影响有一些认识了吧。

炎黄子孙的贡献——Postgres95

Postgres 并没有因为 Postgres 项目的终止而停止发展,而是获得了一次新生:在1994年,两名伯克利的研究生在做研究生课题的时候, 向 Postgres 里增加了现代的 SQL 语言的支持。请不要奇怪,SQL 的祖宗是 E.F. Codd 的关系模型,但是 SQL 作为语言,一直到1992年 才形成真正的国际标准(还是草案),当时称为 SQL2,但是人们常称为 SQL92。而在那之前,所以查询语言都是由不同的数据库管理系统 自己实现的,比如,在 Postgres 里原来是用叫 Postquel 的查询语言;这两位研究生是 Andrew Yu 和 Jolly Chen,看了名字,大家可能会想:“很象中国人的名字嘛”,没错,他们就是黑头发 黄皮肤的炎黄子孙,不过很可惜的是他们并没有在中国的(包括台湾省的)xx大学取得这样的成就。这样,Postgres 迎来了1995年,大概 是受xxxxxxx95 的命名方法的“启发”吧,他们俩把这个版本的 Postgres 命名为 Postgres95,并且继续发布了几个版本,增强了一些特性。

国际化——PostgreSQL

到了 1996 年,Andrew Yu 和 Jolly Chen 相继离开 Postgres95 的开发队伍,(Andrew Yu 加入了 Informix,Jolly Chen 继续读书),而在一些自由软件黑客(注1)的发起下,Postgres 项目又开始了新的历程,最先是由几位 加拿大黑客发起,开始了 PostgreSQL 项目,后来参与的人越来越多,逐渐成为了一个由近20个国家的近四十名黑客组成的团体共同开发的 自由软件项目。PostgreSQL 重新把版本号放到了原先 Postgres 项目的顺序中去,从 6.0 开 始(Postgres 本身到4.2,Postgres95 算5.0)。经过五年多的协作开发,PostgreSQL 可以说是目前世界上最先进,功能最强大的自由软件的数据库管理系统。

目前,PostgreSQL 的稳定版本到了 7.3,具有非常丰富的特性和商业级数据库管理系统的质量。而即将到来的 7.4 版本又将是一次飞跃, 将向高质量大型数据库管理系统的方向又迈进了一步。

在这里,先让我告诉您怎么念 PostgreSQL (的确很绕口):Post-gres-Q-L,大概因为大多自由软件开发人员把 SQL 念做:S-Q-L,而不是 IBM 常说的(squel)。

特点

PostgreSQL 可以说是最富特色的自由数据库管理系统,甚至我们也可以说是最强大的自由软件数据库管理系统。事实上,PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性
检查等特性的唯一的一种自由软件的数据库管理系统。直到最近才有 Inprise 的 InterBase 以及 SAP 等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,目前的提交人员已经超过三十人, 而且在许多黑客的努力下,PostgreSQL 的质量日益提高,也从另外一个侧面上增加了人们使用 PostgreSQL 的信心,毕竟数据库管理系统不能象桌面操作系统那样 一天宕一次还让人觉得挺满意 :-P。

从技术角度来讲,PostgreSQL 采用的是比较经典的 C/S (client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式, 这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写, 由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如 ODBC,JDBC,Python,Perl ,Tcl,C/C++,ESQL 等, 同时也要指出的是,PostgreSQL 对
接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。

说完优点,不能不说几句缺点,不能因为是自由软件而偏袒 PostgreSQL,从 Postgres 开始,PostgreSQL 就经受了多次变化。

首 先,早期的 PostgreSQL 继承了几乎所有 Ingres, Postgres, Postgres95 的问题:过于学院味,因为首先它的目的是数据库研究,因此不论在稳定性, 性能还是使用方便方面,长期以来一直没有得到重视,直到 PostgreSQL 项目开始以后,情况才越来越好,目前,PostgreSQL 已经完全可以胜任任何中上规模范围内的应用范围的业务。目前有报道的生产数据库的大小已经有 TB 级的数据量,已经逼近 32 位计算的极限。 不过学院味也给 PostgreSQL 带来一个意想不到的好处:大概因为各大学的软硬件环境差异太大的缘故,它是目前支持平台最多的数据库管理系统的一种, 所支持的平台多达十几种,包括不同的系统,不同的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。

其次,PostgreSQL 的确还欠缺一些比较高端的数据库管理系统需要的特性,比如联机热备份,数据库集群,更优良的管理工具和更加自动化的系统优化功能 等提高数据库性能的机制等。

但是,话说回来,PostgreSQL 拥有极其强大的扩展能力,你可以很容易地扩展数据类型,内部函数,聚集,操作符等等,而且,别忘了,你拥有所有的源程序, 理论上你可以做任何你可以做的事情。因此,很多缺点,在转瞬之间就会消失也是很正常的。


总而言之,PostgreSQL的特性已经完全可以满足绝大部分用户的需要,而且其质量和特性仍然在日新月异地进步着,所以, 我们有理由相信在不远的将来,PostgreSQL 肯定能够成为一种优秀的,自由的,商业数据库的替代产品。

人物

对 PostgreSQL 做出巨大贡献的人物太多了,我在这里只能摘其一二而为之,

首先是伯克利,作为一个学院,好象不应该进入人物的范畴,但是如果没有 BSD 的优良的学术环境,创造出这样优秀的科学技术成果是不可能的, 只要想想我们的 5000 多所科研单位就能明白。(我是不是应该还要在这里感谢美国?:-P)。

然后是 Michael Stonebraker 教授,正是这位学究的开明才能让这样优秀的科技成果走向了公众,甚至到了“自由的对立面”的我们的手里, 而且是所有的东西,不仅仅是一堆二进制文件。

接下来有我们的同胞,Andrew Yu 和 Jolly Chen,他们为 PostgreSQL 走向现代做出了巨大的贡献。

最 后是现在正在辛勤耕耘的黑客们,这些黑客以他们执着的精神和高超的技术,为 PostgreSQL的日益完善做出了不可磨灭的贡献。 黑客总共有数十人之多,我只好把核心成员挑出来介绍一下,而对于贡献了更多代码的其他重要黑客,只好暂且委屈他们一阵子了,如果有机会,我还会进一步介绍 他们。

Tom Lane:一位卡耐基梅隆大学(CMU)的电子工程学 ph.D(博士),是 PostgreSQL 的非常重要开发人员,其足迹遍部 PostgreSQL 的每一个角落, 可以说对 PostgreSQL 的性能和稳定性以及特性的取舍有极其重要的贡献,在开始参加 PostgreSQL 项目之前,他已经有了十余年的自由软件开发经验, 可以说是老牌的自由软件程序员;

Vadim Mikheev:一位来自俄国的黑客,其特点是专干大项目,比如 V6.3 里面的子查询,V6.5里面的多版本并行控制,以及 7.1 里面的预写式日志系统等, 可以说是 PostgreSQL 的开拓者;

Jan Wieck:一位来自德国的黑客,有十余年的数据库开发经验,原先曾经为 SAP 等大型软件厂商工作,后来加入 PostgreSQL 的开发;他也是喜欢大项目, 不过兴趣是用户端的特性,比如外键,一些过程语言比如 pl/pgsql 等,7.1 版本中的 CLOB(文本大对象)的部分也是他的作品。

Thmas Lockhart:一位毕业于加洲理工学院的美国黑客,主要负责文档和若干种数据类型(尤其是与时间相关的类型),SQL 语法的标准一致性,时间类型,以及完整性约束等。

Bruce Monjian:来自美国,是一些文档和项目协调,以及许多完整性约束和 SQL 语法的标准等,比如 OUTER JOIN,同时维护 TODO 列表和 FAQ。

Marc Fournier:加拿大黑客,主要的协调人,维护站点,邮件列表,以及发布版本等。

Peter Eisentraut:德国/瑞典黑客,主要负责文档编写、完善,认证和权限管理,制作脚本和一些管理配置接口的制定,以及客户端交互工具 psql 等, 其作用日益突出,可以说在 7.2 版本的开发过程中是不可或缺的人物。

另 外还有大量来自欧洲,澳洲和亚洲(日本)等地的黑客。实际上,有越来越多的黑客的作用变得日益重要,在邮递列表中每天都有来自不同黑客的 各种各样的补丁程序。所以,自由软件的特点就是,只要愿意,任何人都可以对它有足够的影响。也就是说,我们命运是真正掌握在自己手里的。

展望

就目前而言, PostgreSQL 的前景非常好,目前的稳定版本是 7.3,这个版本在 7.2 版本的基础上再次做了大量的改进和提高。

7.1 是继 6.5 之后的又一个巨大的变化,她首先引入了预写式日志的功能。这样,事务就拥有了完善的日志机制,可以提供更好的性能, 以及还可以实现更优良的备份和灾难恢复的能力(比如联机热备份和宕机后的自动恢复)。其次是对文本类型的数据段的长度不再限制, 从而很大程度上解决了 PostgreSQL 的大对象的问题。尤其在如今的 web 应用盛行的环境下,这个功能几乎立即将 PostgreSQL 摆到了 可以与其他所有类型的数据库竞争的地位。而且在 SQL 标
准上又有进一步的提高,比如OUTER JOIN 的支持等等。

7.2 版本在 7.1 的基础上改进了原来的数据库定期清理工作中排它锁的过程,使数据库维护不再影响数据库的正常使用,同时增强了查询优化的智能, 使数据库对索引的使用更加准确;同时还消除了每个安装节点的免维护事务次数的限制;国际化;以及还有大量其他方面的增强。
7.3 版本在 7.2 版本的基础上,继续增强了许多特性,包括可返回结果集的用户函数,模式(schema)的支持,准备好的查询规划,DROP COLUMN 的支持, 以及vacuum的优化,更好的查询计划器,更好的权限管理系统等。7.3 版本在许多现实项目中得到了充分的证明和大量的应用。标志着 PostgreSQL 正式成为主流数据库产品之一。
在未来的 7.4 版本中,我们有望可以看到索引空间的重复利用,优化了的 IN 子句(大家不用为 IN 恶劣的性能发愁了),新的前后端协议,更优的聚集函数。 甚至还可能提供 windows 的本机移植版本和具有相当的热备份功能的 PITR (即时恢复)和很多人期待已久的表空间的功能。可以说 7.4 将是一个完全胜任 7x24 应用需求的真正的高端数据库,一个具有开拓企业级应用的数据库。我们有什么理由不欢呼呢?
后记

作为一种数据库管理系统, PostgreSQL 并不象 Linux 与某些商业操作系统相比那样,得到迅速广泛的承认,这一点是可以理解的,Tom Lan 曾经有一段话说得实在: “首先,商业数据库系统不象某些商业操作系统那样实在太烂,相反,商业数据库系统的质量还是非常高的,与之相比,PostgreSQL 仍然有一定差距”但同时他也相信 “我们已经达到商业级的数据库系统的质量......”

的确,自由软件的发展具有跳跃性,因为开发者大 多是利用空余时间进行开发,当开发者云集的时候,新的东西可能一下子就增加上去;而如果在自由软件运动的低潮时, 因为缺少开发人员,所以可能会有一长段时间的沉寂,而后又会随着社会的发展而出现新的活动。也就是一种螺旋的上升。

因而,我们在面对自由 软件的时候,一定要有一点:要相信自己和依靠自己,因为自由软件的发展的确需要每一个爱好者充分发挥自己的聪明才智, 同时,也只有自由软件给你提供了这样的机会——依靠自己的力量改变自己的命运。最后,也只有这样,自由软件之光才能真正照耀我们的世界。

附录
参考资料
历史
http://www.daemonnews.org/199907/devhistory.html
http://www.postgresql.org/osdn/history.pdf
http://www.postgresql.org/osdn/tour.pdf
特性
http://www.postgresql.org/idocs/
http://www.pgsqldb.com/pgsqldoc-7.2c/index.html


注:
1,本文中黑客一词源于英文 Hacker,是指那些计算机尖子,对计算机及全人类都有贡献的创造者, 不是一般媒体上的“黑客”概念,那是指 Cracker,也就是破坏者。

 

作者:何伟平 laser(at)pgsqldb(dot)org laser(at)zhengmai(dot)com(dot)cn
注:如要转载请注明作者和出处 www.pgsqldb.org 或 laser.zhengmai.com.cn

《电影往事》. Electric Shadows

昨天看了这个片子,感觉很好。
一是叙事方式吸引人,有点意识流的味道,现实与回忆交错推动着两段情节的进展,最终将两段情节串联起来,也解决了电 影刚开始时出现的悬念;二是演员表演得好,比较生活化,夏雨操着一口像是潍坊的普通话,挺逗,江珊扮演了一个女警,几个小演员表演都很到位;三是回忆中的儿 童生活、露天电影情节勾起了儿时的记忆—那些无知却单纯的快乐与忧伤、简单的喜爱和厌恶;四是各个人的性格特色与情感纠葛是自我认识的镜子。
这个 电影让我想起儿时家乡村中的生气,虽然也有不愉快,但大人们是安宁满足的—串串门,在村头村尾见了面轻松地聊一会儿,孩子们是快乐的—白天蹦蹦跳跳地 上学,晚上追追打打跑遍整个村子,直到妈妈呼唤几遍才满身是土地跑回家吃饭,整个村子是温暖热闹的;而现在回到家乡,虽然也有不少小孩子,但很少听到他们 的追打闹声了,人们脚步匆匆见面说话少了,见面讨论最多的是上学、挣钱、出外打工。即便是鸡鸣狗叫也很少听到了,感觉到的更多的是冷清和浮躁。是家乡变 了?是我变了?是大的环境变了? 也许都在变化。

2005年11月18日星期五

Firefox锁定X界面之后

打开论坛,点用户名输入框,刚要选择用户名,Firefox又一次莫名其妙地占用了全部资源,鼠标可以移动但不能激活任何事件。
以前我总是Ctrl+Alt+Backspace关闭X,在控制台命令行中杀死Firefox,然后重新启动X。
今天尝试了另一种解决方式:Ctrl+Alt+Fm,进入某一个tty控制台,登陆,杀死Firefox,用Ctrl+Alt+Fn进入原来的X。

解除Firefox访问端口限制

在访问万方数据武汉镜像站点时,当点击端口号为95的链接地址时,Firefox弹出对话框说“由于安全问题,对所提供端口的访问已被禁用”。
最后从Firefox中文社区的一个帖子中找到了解决方法:关闭Firefox,修改[Firefox安装路径]/defaults/pref 下all-*.js脚本,添加这样一行内容
pref("network.security.ports.banned.override", "95");
意思是很明确的。
我的系统中的Firefox的安装路径为/usr/lib/firefox-1.0.4/。

2005年11月13日星期日

极度郁闷

今天下午参加青年基金课题申请的报告答辩会,悲惨。
报告过程中断断续续,回答问题磕磕绊绊、表述不清,最郁闷的是连我自己都开始怀疑自己选的题目是否有研究的价值。
明显感觉到被这些老师鄙视!但不知道怎么搞的,就是说不出话。还是自己准备不够充分,只想到自由思考,但答辩是需要充分准备的。
那个题目还需要继续斟酌和准备,找到闪亮点!不能因为答辩失败就放弃自己的想法!

2005年11月12日星期六

二三事


本来是要做媒公陪人相亲,后来也没了这个概念,玩得不亦乐乎。逛了北海又直奔红猪,游园、泛舟、吼歌,爽是爽了,只是累得两位JJ跟着我们又累又饿。
从朋友那里学到了一种用手表辨别方向的方法:将当前时间(24进制)除以2,得到一个时间值,将此时间值对应的刻度正对太阳,12点钟刻度的指向就是北方。

昨天在国学网站上找到一部《苏东坡传》,是林语堂的英文作品的译文,看起来轻松有趣。

2005年11月11日星期五

人民币

今天坐827路车时,乘务员很“礼貌”地拒绝接受一名乘客的5角人民币,我气不打一处来,但想不出用什么法规质问她。
到办公室之后查到《中华人民共和国人民币管理条例》中的相关规定:

第一章 总则
第三条 中华人民共和国的法定货币是人民币。以人民币支付中华人民共和国境内的一切公共的和私人的债务,任何单位和个人不得拒收。
第四条 人民币的单位为元,人民币辅币单位为角、分。1元等于10角,1角等于10分。人民币依其面额支付。第六条 任何单位和个人都应当爱护人民币。禁止损害人民币和妨碍人民币流通。
第二十一条 特定版别的人民币的停止流通,应当报国务院批准,并由中国人民银行公告。
第二十三条 停止流通的人民币和残缺、污损的人民币,由中国人民银行负责回收、销毁。具体办法由中国人民银行制定。

第四章 流通和保护
第二十七条 禁止下列损害人民币的行为:
(一)故意毁损人民币;
(二)制作、仿制、买卖人民币图样;
(三)未经中国人民银行批准,在宣传品、出版物或者其他商品上使用人民币图样;
(四)中国人民银行规定的其他损害人民币的行为。
前款人民币图样包括放大、缩小和同样大小的人民币图样。
第三十九条 人民币有下列情形之一的,不得流通:
(一)不能兑换的残缺、污损的人民币;
(二)停止流通的人民币。

下面还有相应的处罚规定。

2005年11月9日星期三

波峰。

忽然之间,各种事情纷至沓来,空闲结束了。
前一个项目所属的大课题要验收,需要整理数据、系统和文档;
要参与一个大项目的分析与设计;
要带领两个成员完成一个解决方案的设计与实现;
要考虑青年基金项目的答辩。
生活上,还需要和至少三个人一起吃饭。
呜呼呀!
当然,其中大部分其实是因为自己的努力换来的机会,比如积极创新的工作、建议,开放、广泛的交流。
但 是,突然感觉自己在不由自主地做着原本不喜欢的事情,比如写抽象的文档,比如老老实实在原来很讨厌的地方工作着;有些事情发展也比我想像中要快了一些,比 如我也想着能渐渐脱离以coding为主的工作,但是希望能在较熟练、全面掌握喜欢的技术之后逐渐脱离,而现在就显露出这种苗头,有点害怕。
不管怎么样,继续努力,继续积蓄技术储备、开发创新思维。

2005年11月7日星期一

尝试Ajax WebGIS 之六

developerWorks上发表的Philip McCarthy关于Java Ajax的文章 1 2

文章2讲述了将JavaBean转化为XML文档的方法(手工代码自动序列化、采用代码生成或映射方式的XML绑定框架);讲述了通过XML文档方式或简单文本格式传送服务器响应数据的优缺点;还介绍了一种能够方便地表示与导航复杂结构化数据的技术-JavaScript对象标注(JSON)。
JSON相当于JavaScript语言本身所支持的对象图,能够方便的使用索引访问元素,而且利用它就不必借助XML作为中介,两头转换了,只需要将JavaBean转化为JSON。
JSON的不足:不同的XML文档生成的方法同样适用于JSON,用内省和标注实现一个通用的JavaBean-JSON转换的序列化器是有必要的;如果服务端代码是面向服务的,会广泛支持XML格式,需要特殊调整才能支持JSON方式。


待续 3 直接Web远程(DWR)......

2005年11月6日星期日

经济学家对开源开发方式的支持

从slashdot上看到一则消息,说Center for Economic and Policy Research (CEPR)的经济学家Dean Baker发表了一篇论文Opening Doors and Smashing Windows: Alternative Measures for Funding Software Development。这篇文章谈到了版权、专利(intellectual property rights, IPRs, 知识产权)对软件开发产业的阻碍,不仅仅从技术角度,更是从经济学角度指出IPR给软件开发带来的沉重负担。

2005年11月4日星期五

“同居”生活。

同学来京面试,我让他住在我的宿舍,自己跑去和朋友“同居”。
周末了,这家伙要陪老婆,就把我给甩了。
这一周,每天晚上吃过饭就看电视、玩游戏,到一点多才睡,真成了度假周了。
经历如下:
  • 做饭,HOHO,水平差得远呢;
  • 游戏,有点喜欢上足球游戏了,不过现在操作不熟,也谈不上战术、人员配置什么的;
  • 简历,近距离接触了一下朋友们写简历的情况,英文水平真的需要提高,也欠缺对各种技术、管理、沟通、读书经验(或经历)的总结;
  • 电视,《亮剑》真的不错,共产党的主流电视节目能有这种容纳风度和客观认知历史与自我的能力,不简单;
  • 读书,遇到一本好书,《资治通鉴 现代版》,一个个标题故事,文言、白话再加评论,对于像我等这样繁忙、懒惰、文言功底不强偏偏又喜欢国学、历史的人来说,是最合适的了。

前一个项目的经验

科技部的这个项目结束一段时间了。总结收获如下:

WebGIS开发的基本技术
  • Applet Servlet JavaScript JSP
  • 处理基本地理信息的技术(读取SHP文件, 显示与基本操作等)
  • 但欠缺复杂的考虑(数据量大, 访问量大, 对GML与WFS等标准的支持等)
敏捷开发过程的简单实践
  • 适配性过程 与 以人为本
  • 短周期迭代式开发
  • 开发人员与用户和管理层的"亲密接触"
  • 尊重开发人员的开发方案
准备文档与报告PPT的一点经验
难以说明, 只是作为经历记忆保存
  • 文档的类型, 结构与数量
  • PPT的模板, 结构, 时间与页数
报告中答专家问的教训
  • 应事先做好一些成熟的回答
  • 准备纸和笔记录问题
与人交往的经验与教训
  • 快乐交流
  • 不乱说话

2005年11月3日星期四

尝试Ajax WebGIS 之五

WebGIS是组里今年的攻克目标,我已经在Writely上将大体思路写出来,应该着手实现了。
师兄忙于写论文,只有我们三个来负责了,而他们俩对Web开发还不熟悉,其中一个还担负着其他任务。
在工程方面,还是采用短周期小版本迭代的方法。现在最重要的是人事调节,一定要使用各种方法将队员拧成一股劲,紧密、广泛的交流很重要。说起来简单,真正和人打起交道来就太复杂了,因为要牵涉到很多主观、客观因素。要做好组织管理,一是要对整个工作有整体的把握,合理分派任务;二是要了解、引导队员的情绪。

2005年11月2日星期三

关于写论文

今天看到张五常的一篇文章《博士论文是怎样写成的》,虽然是针对经济学领域,但他的一些观点值得各个学科的研究人员借鉴。
张教授认为,应该对领域知识有广泛的理解并通透掌握一两个工具,然后用这些来认识世界(对解决实际问题)。对现实世界保持好奇心,找到感兴趣的现象,提出假说、搜集资料、总结阐述、将结论一般化,这样研究论文也就水到渠成了。
他认为对现象有兴趣和独立思考很重要,这是当然的。但认为调研别人的研究成果并不重要这一观点,我觉得可以探讨。

在这次青年基金的申请中,我也有同感,从解决实际应用考虑能够方便地寻找研究点,但我是因为基础理论掌握不足才想到从应用中找题目的。

2005年10月31日星期一

遥远的感觉。

今天在BBS上看到一组长短句,应当是一个恋爱中的男孩儿写的。
读起来感觉熟悉而又陌生,这种敏感已经离我远去很久了。
这就是长大的代价之一。伴随着冷静和平和的,是冷漠的悲哀。
下面附上这组句子,纪念曾经的感动和现在的冷漠:

发信人: tearfish (流泪的鱼), 信区: Feeling
标 题: 其实你不知道
发信站: BBS 科苑星空站 (Mon Oct 31 12:29:51 2005), 站内

◇◇ 其实你不知道 ◇◇

等你知道了,你就会明白,什么是爱情……
——写在前面

1

你曾问我想去什么地方,我说是香山。你笑着说那里一点都不好玩。
我只是淡淡一笑。其实你不知道,那样说是因为我原以为你会喜欢那满山的红叶。

2

你说你喜欢我邮件的风格,长长短短的句子,一行一行错落有致地排下来。
其实你不知道,我在电脑的这端许久没有打字。我的邮件总是写写删删,删删写写,才成了长长短短的模样。

3

你问我做不成恋人,我会怎样?我告诉你,做不成恋人我还是你最好的朋友。
你笑了,笑容让我觉得有些疼。你不知道,我是因为爱你才这样说,才宁愿一个人躲在角落里独自抚慰寂寞的伤口。
其实你不知道,我宁愿自己的心隐隐地疼,也不愿让你因为错失真爱而有些许的遗憾。

4

我曾对你说,我打一会儿键盘就会合扣一下十指。你说天凉了,手指需要取暖。
其实你不知道,我在扣紧十指时,都会默默的祝福一下,为心尖上的那个人祝福。

5

你曾奇怪地问我,为什么我不喜欢说话,只喜欢听你说。
其实你不知道,不是我没话可说,我的心里有很多的话想说。
而当看到你的时候,我才明白,其实我只是想很安静地看着你,就这么简单。

6

你曾说,喜欢一个人好累哦,总是在想她快乐还是忧伤,也让自己在快乐与忧伤之间不停地往返。
其实你不知道,也许当你真正喜欢一个人的时候,你才会明白:只有这样,才不会给以后留下遗憾。
才会在某个静谧的黄昏,微笑地回忆起你的曾经。

7

你曾问我的诗为什么总是这么忧郁。我说那是因为我觉得我总是在不断失去很多宝贵的东西。你默然。
其实你不知道,我们总是等到失去了才觉得宝贵。
或许时间会让我们渐渐地明白什么才是值得我们珍惜的,那么现在需要的就是不要在懂得珍惜之前很无意地丢弃了它们。

8

你坚决地不允许我送你回去,你说你不需要别人送。
其实你不知道,我只是想有个安静的时间走走,到了道别的路口看着你远去的背影,心里也会觉得十分的温暖。

9

你曾问我,都不知道未来会不会在一起,我为什么还要这般的付出。
其实你不知道,正是因为不知道将来还能否这般对你,我才要在能疼你的时候好好地疼你,才要在能宠你的时候好好地宠你。

10

其实你不知道,爱情就是这么一个简单的过程,一个从不知道到知道的过程。
等你知道了,你就会明白,什么是爱情。

2005年10月27日星期四

在XML中传送二进制数据

查找关于如何在XML中传送二进制数据,得到一篇文章,介绍了三种方法:
一是将二进制数据直接写入CDATA标签之间,开始于,但二进制数据采用的符号集可能有问题并且数据中可能也包含有]]>字符;
二是使用URL查阅,即独立存储二进制数据,用URL链接到一个XML文档中;
三是使用UU或base64等基于文本的编码将二进制数据重新编码,作为XML文档的一个元素内容,但这是分析器会将二进制数据作为文本内容来分析,将无谓地浪费很多时间。

2005年10月25日星期二

戈拿旺巴西烤肉

有必要纪念一下去戈拿旺吃巴西烤肉的经历,因为这是我们平均个人花钱最多的一次。
上周六,一个光光同学结束了Toefl考试想放松,我想吃烤肉但汉拿山太远,因此两个光光光顾了科院南路知春东里的戈拿旺巴西烤肉。
半 自主形式,甜点、饮料随便取,十三样烤肉由烤肉师傅转着圈送到各桌上,喜欢哪一样可以再要。服务员和烤肉师傅的服务态度很好。工作日每位48元,周末每 位58元,因为周末晚有巴西风情舞蹈表演,舞蹈还好但时间太短并且不能做到互动,因此无法实现舞蹈的真正意义反而显得乱乱的。据服务员说店主年青时曾是歌 唱演员,所以经常有演艺圈人士在店里出没,我们倒没有发现。
感觉烤肉味道一般,对我来说有点腻,还是喜欢汉拿山,汉拿山也更实惠一些。不过这个店里有一种像是用香蕉做的冰淇淋挺好。
好像有些小资:),但总得有些学习之外的生活。

2005年10月22日星期六

斯蒂夫的三个小故事

在潘石屹的BLOG上读到了斯蒂夫·乔布斯:我生命中的三个故事
你 不可能充满预见地将生命的点滴串联起来;只有在你回头 看的时候,你才会发现这些点点滴滴之间的联系。所以,你要坚信,你现在所经历的将在你未来的生命中串联起来。你不得不相信某些东西,你的直觉,命运,生 活,因缘际会……正是这种信仰让我不会失去希望,它让我的人生变得与众不同。
生 活有时候就像一块板砖拍向你的脑袋,但不要丧失信心。 热爱我所从事的工作,是一直支持我不断前进的惟一理由。你得找出你的最爱,对工作如此,对爱人亦是如此。工作将占据你生命中相当大的一部分,从事你认为具 有非凡意义的工作,方能给你带来真正的满足感。而从事一份伟大工作的惟一方法,就是去热爱这份工作。如果你到现在还没有找到这样一份工作,那么就继续找。 不要安于现状,当万事了于心的时候,你就会知道何时能找到。如同任何伟大的浪漫关系一样,伟大的工作只会在岁月的酝酿中越陈越香。所以,在你终有所获之 前,不要停下你寻觅的脚步。不要停下。
时间有限,所以不要把时间浪费在别人的生活里。不要被条条框框束缚,否则你就生活在他人思考的结果里。不要让他人的观点所发出的噪音淹没你内心的声音。最为重要的是,要有遵从你的内心和直觉的勇气,它们可能已知道你其实想成为一个什么样的人。
物有所不足,智有所不明。(Stay Hungry. Stay Foolish.” 
搜到这句话的另一个译法:“求知若饥,虚心若愚。”

我的机器人梦想 之五

ho ho 又有了一些进展:spca5xx安装成功;认识了一个多媒体开发库SDL。
spca5xx的安装是编译源码完成的。站点上提供的 rpm安装包是针对FC3系统的,会将spca5xx.ko安装到/lib/modules/下对应 FC3的内核模块目录中,但我没有尝试使用rpm安装后将模块文件移动到FC4的内核模块目录,不知道这样是不是也可以。之后,编译安装 spcaview,用于测试驱动。
测试了一款飞视的摄像头,0ac8:301b的芯片,效果挺好,但需要手工加载spca5xx驱动,WHY?
由于spcaview运行需要SDL(simple directmedia layer),因此认识了这个跨平台的多媒体开发包。也许它能减轻我下面音频和视频编程方面的负担。不知利用它能否绕过当前在音频编程方面遇到的困难。

SDL似乎没有录制声音的API。
也许可以参考IHULinphone,它们是使用Speex做语音压缩模块的VoIP应用程序。
spacview的代码中包含audioin的功能。

2005年10月21日星期五

动态构造返回文本、图像复合内容

不知道怎样更好地表达,想要实现的目标大致是这样的:
当用户请求时,服务端(Servlet)能够实时生成响应内容(包括文本、图像) ,并能够直接通过response对象的输出流将所有响应内容返回给用户。
这里有两点疑问:一是HTTP似乎规定一个响应只能指定一种content-type类型,也就是说文本相应内容和图像相应内容必须分别返回,是这样吗?二是当返回内容类型为image/*的图像数据时,如何才能嵌入文本页面?
检索。
  • 一个课程片断讲述了HTTP Response Header的设置,包括图像响应数据的生成发送流程;
  • Orion应用服务器的tutorial教程中包含很多使用Java进行Web开发的基础知识,如Filter的实现等;
  • 这一个页面演示了实时生成图像的脚本代码以及如何使用此脚本的页面,就是它给了我解决上面第二个疑问的启示;
  • Sun的开发者论坛中有人提出了同样的问题,并且有了明确的回答,验证了我的想法;
  • 还得到一篇介绍如何用Servlet实现图像处理相关功能的不错的文章。
总之,要实现这一目标,可以首先实现一个返回文本内容的Servlet:
//设置内容类型out.setContentType("text/html");
//输出文本内容
//在需要显示图像处输出
然后实现返回图像数据的Servlet:
//设置内容类型out.setContentType("image/*"); JPEG、PNG等
//绘制图像,使用BufferedImage、Graphics等
//将图像数据写到输出流ImageIO.write(img, "jpg", out);

OK.

2005年10月20日星期四

几种版本控制工具的比较

今天搜索了几种版本控制工具的信息。
首先了解到Linux内核开发与BitKeeper之间的恩怨BitKeeper是商业产品,曾经发放免费使用授权,现已中止。文章的中文版在此处
BitKeeper免费使用授权中止后,Linux2.6的内核开发被延误了半个多月的时间,Linus试用了monotone、Darcs等工具,感觉太慢(毕竟Linux内核这样的项目太大了一些)。于是便有了Git工具,它是Linus开发转由他人维护的。另外,Cogito基于Git核心提供了更方便的使用方式。遗憾的是,Git+Cogito只针对Linux环境。
LWN推荐了Darcs工具。
网站Better-SCM站如其名,认为CVS已经老矣,比较了Aegis、Arch、BitKeeper、Darcs、Monotone、Perforce、Subversion、Vesta等几种可选工具。在此页面对这几种工具进行了比较总结。
通过调查可知,目前版本控制工具的发展方向是从集中式模式向分布式模式转变。但开源的新工具大多针对Linux环境,虽然有的提供Windows等环境支持功能,但也需要模拟GNU环境进行编译。另外,如Darcs等新工具似乎还没有图形界面。
具体选择哪种工具,还应当作多方面考虑,比如平台环境、项目特点、项目长期维护要求、团队意愿、期望的工作模式等等。

2005年10月19日星期三

曾经的管理教训与经验。

Experience is treasure in our lifetime.

一、中学
经历:学生干部
收获:懂得承担;以身作则;身先士卒;还是基本的品德要求(如诚实)。

二、大学
曾经有多次机会锻炼管理和领导能力 ,但最终得到的大多是教训而不是经验。
经历:领导学生社团;带领两三名同学为学生处设计站点;组织若干同学翻译外文专业书。
教训:亲身参与技术的热情阻碍了管理的执行;缺少对组员的激励。
借口:将主要心思用于学业;缺少资金。

三、读研之后
慢慢摸索,目前得到的更多的是交流经验和工程经验以及职业化素质。
-自觉实践敏捷开发方法
:适配性过程(短周期迭代,简单为要,测试驱动)和以人为本(交流,尊重,效率)
:的理念与方法使我参与设计与实现的项目能够顺利完成。
-开放、无私的交流
:坚持开放、真诚、简单地与同事交流;
:在被外派而远离同事的情况下,主动通过邮件与同事交流,表达我的想法和检索到的资料。
-主动创新、全心全意为团队着想
:在长期观察与思考团队的组织管理情况之后,向导师提出了一份建议书;
:主动思考团队的学科建设,调研之后向导师提议,与同事讨论;
:主动思考、调研、设计我们团队对于WebGIS的解决方案。

2005年10月18日星期二

临渊羡鱼,不如退而结网。

既然已经完成了选择,那就继续储备,为将要到来的机会做准备。

2005年10月17日星期一

开心。纪念一下。 :)

十一期间,我针对实验室的组织管理写了一份千字“谏言”发给了老板。主要是因为长期感受到工作环境的憋闷,看到同事、同学们怨气都快凝结成水了,觉得不改变很不利于团队的长期发展。
因为是要向老板索求“放松的权利”,因此信件发出之后便一直忐忑不安。没想到今天回实验室(当前我被老板外派做项目)送东西的时候,听师弟说上周开会时老板宣布取消晚上加班。呵呵,开始闻到自由的空气了。对实验室的发展多了许多信心。
还有一些问题有待解决,比如实现开放的工作模式、高效广泛的内部交流、轻松团结的气氛等。相信老板会考虑的,至少已经迈出了一大步。

2005年10月16日星期日

一个基于Google Map的应用

通过播客站点Very Spatial认识了一个基于Google Map的新闻事件报道应用工具News Map, 将最新的路透社新闻按照发生地点标记在地图上。

尝试Ajax WebGIS 之四

本想自己先尝试一下使用Ajax技术实现WebGIS,待成熟一些再和组里讨论具体方案,没想到周四下午就被拉回组里讨论基于现有平台的WebGIS解决方案,周五只好把还不太成熟的想法简单总结一下写到Writely上与组员交流。
为了便于与组里交流,今后这一主题的进展将在Writely上完成,待基本完成时再发布。

2005年10月15日星期六

今日论语 之一

有时候随手翻翻《论语》,看到有感触的语句时就贴出来,记做“今日论语”。
理论上应该像模像样地在每句论语之后发一通感慨,只可惜本人理论水平、文学水平都很有限,即使心潮澎湃、思绪万千也难以表达一二,只好贴出来与网络共享。


[子罕篇第九.4] 子绝四—毋意,毋必,毋固,毋我。
“孔子杜绝了四种毛病,能够做到不主观臆断、不绝对肯定、不固执己见、不自以为是。”

[季氏篇第十六.4] 孔子曰:“益者三友,损者三友。友直,友凉,友多闻,益矣。友便辟,友善柔,友便佞,损矣。”
“孔子说:‘有益的朋友有三种,有害的朋友有三种。结交正直的朋友、诚实的朋友、博学多闻的朋友,是有益的。结交谄媚逢迎的人、表面奉承而背后诽谤人的人、善于花言巧语的人,是有害的。’”

[阳货篇第十七.14] 子曰:“道听而途说,德之弃也。”
“孔子说:‘听到小道消息而四处传播,是背弃道德的行为。’”

对GPS的忧虑

九月在剑桥的一个讨论会上,一位英国退休官员提出了对GPS系统健康状况的忧虑
GPS系统依赖于一个卫星网络,需要24颗才能覆盖全球。目前28颗GPS卫星中有16颗已经超龄半年以上,本来计划工作7年半,但现在它们已经服役8到14年,而卫星一旦发射是无法维修的。
补充发射新的卫星是维持GPS系统运行的方法,但发射卫星的速度能否及得上那些“元老”的衰落速度似乎不容乐观。
文章还提到,Galileo系统至少要到2010年才能完全部署成功。

2005年10月14日星期五

NASA SVS

NASA Goddard Scientific Visualization Studio(SVS)主要针对地球空间信息的可视化,更是通过融和卫星实时图像、可视化技术、多媒体技术将当前的地理现象制作成影片格式,比如关于飓风的科技短篇生动形象地展现了飓风的原理。
与多媒体技术(甚至包括导演、编剧艺术)结合生成影片的方式扩展了空间信息技术的表现形式,但也只是提供给大众的最终的表现形式,只能作为成品资料保存而难以复用,多媒体技术在空间信息技术中的应用难道只能是这种形式吗?

我的机器人梦想 之四

在找到了一些机器人的视觉、听觉、电子、机械方面的资料和可用软件资源之后,就想动手尝试一下。
qc-usb摄像头驱动主要针对罗技摄像头,老款 的难以买到且性能较差,新款的价格较高。spca5xx摄像头驱动能够支持较多芯片组,其中所支持的Z- star(也就是中微星vimicro)芯片组是当前性价比较高的大众摄像头中广泛使用的。下面需要寻找一款合适的摄像头。
音频方面,需要尝试使用ALSA API。既然aplay能够正常工作,就先实验语音输出的编码;而arecord不能正常工作,需要寻找我当前系统下语音输入失败的原因。
电 子机械方面的知识欠缺很多,只是通过阅读上一篇记录中提到的几篇文章和书本《嵌入式硬件设计》才对电源、电机、电机控制器以及电路图阅读等有了一点了 解。有时间可以去请教公寓附近的雷神模型店老板,但需要对目标机器人有较详细的设计思路和想法才能询问如何选择元件,也许应当先绘制出简单的机械图和原理 框图。

2005年10月13日星期四

尝试Ajax WebGIS 之三

这两天大致读了ka-Map的代码。

ka-Map推出的示例应用效果可与Google Maps相媲美。虽然Google Maps为普通用户提供了API接口,但其实现细节和地图数据却是封闭的,而ka-Map及其依赖的服务端技术都是完全开放的。ka-Map应用了 Ajax,使用JavaScript脚本操作DHTML元素实现客户端复杂的交互操作,使用XMLHttpRequest异步调用服务端的PHP脚本,服 务端采用MapServer的PHP/MapScript模块,使得PHP脚本能够调用MapServer的C语言API接口。
ka-Map的代码结构图如下:

index.html 文件中包括由DHTML元素组成的地图界面,以div层为主要结构,分幅地图是一组img;还包括大量的JavaScript脚本负 责操作这些DHTML元素,以控制与用户的交互行为。脚本通过设置分幅地图img的src以实现地图的显示,通过改变div的位置实现地图的移动,通过鼠 标与键盘动作处理函数相应用户操作,通过调用xhr.js提供的call()函数和自定义的回调函数从服务端获取数据并处理。
xhr.js脚本文件实现了创建XHttpRequest连接,以及使用XHttpRequest连接与服务器交流的函数。
init.php当页面初次加载时被客户端调用,负责生成一些关键参数传递给客户端(以JavaScript脚本格式传递)。
tile.php负责返回客户端要求的分幅地图,并实现缓存功能。

下面该考虑自己的Ajax实现了。

2005年10月12日星期三

尝试Ajax WebGIS 之二

  • 不使用XMLHttpRequest的Ajax:Remote Script,主要使用DHTML元素执行隐式调用达到部分刷新页面的目的。
  • GISDevelopment上的一篇文章将Ajax与图像分幅列为当前WebGIS的一大改变。
  • O'Reilly的XML.COM上一篇文章介绍如何使用ka-Map创建基于Ajax的Web Map,示例程序中使用的数据是从FreeGIS获取的SHP格式的国家边界数据和从SpatialGuru获取的云图背景。
  • ka-Map来自于MapTools(致力于开源Web Map开发,是数个开源项目的集中地。经典!),这一个开源项目的目标是要为开发高交互Web Map应用界面提供一套Javascript API,服务端使用MapServer的PHP API接口。从DM Solution提供的一个实例应用可见其强大功能。
有了ka-Map这个榜样,我可以更快地尝试Ajax+Java版的WebGIS应用了。

2005年10月11日星期二

我的机器人梦想 之三

Introduction to robotics technology (2001.9)
机器人可以简单分为机械装置和智能系统。
电动机(Motor),包括直流电机、交流电机、步进电机和伺服电机,伺服马达是具备了传动装置和反馈控制系统的普通直流电机。
驱动器(Driving Mechanism),齿轮和链条、滑轮和皮带、变速箱。
无线电控制伺服马达(R/C servomotor),一般小巧便宜,有几种类型用于模型玩具中。
机器人开放控制系统Orocos
开源科学计算软件开发库GNU OctaveGSL

Evolving the wireless robot (2003.8)
简单的概念和想法,可能遇到的问题及设想的解决方法。

以下是Erik Zoltán关于如何建造无线机器人每月一篇的文章:
Wireless robotics: A recipe for sucess in wireless robotics (2005.8)
无线机器人的定义:有一台计算机;使用无线技术与其他计算机系统或机器人交流;能够移动。
技术难点:无线技术的选择以及当前无线技术的技术局限性;AI技术的局限性使得难以实现预期的机器人感知功能;与电子元件打交道也是一个挑战,知识方面要补充,操作方面要熟练并注意安全,可以采用有条理的、测试驱动的方法来构造硬件原型。
阐述为何使用自底向上的设计方法。我认为应该结合使用两种方法,大处着眼,小处着手。

Wireless robotics: How to drive your wireless robotics (2005.9)

选择计算机:T41本本;
选择电机和电机控制器:伺服电机/32口伺服电机控制器;
最好分别为电机和电机控制器配电源,因为电机一般需要的电压较高且其电子噪声较大;
电机控制器通过串口与计算机通信,尝试在计算机上用指令驱动电机,不知道有没有提供Linux下的软件的电机控制器厂商;
可选步骤:改变伺服电机使之能够连续旋转。

Wireless robotics: Fast robot prototyping (2005.10)
用铝片、树脂板、纸板等简单材料制作简单的原型机器人。


2005年10月10日星期一

Web字处理

现在的Web开发真可以说是“没有做不到只有想不到”。
Writely提供了一个用Ajax技术实现的Web协同编辑字处理软件。
原来就想要是有网站提供编辑、存放文档的服务,就能随时随地(只要有Web;))写论文、记录资料与想法了。BLOG也可以记录,但BLOG是开放的,另外在文本格式上功能欠缺一些。
尝试了一下Writely,发现一插入图片就会将浏览器消灭掉(Linux下如此,Windows下正常),其他的功能比如表格、列表、颜色、标签、较大量文本、甚至语法检查等都还好。还需要一段时间来测试其稳定性。

Geomatics

阅读论文时经常遇到空间数据/信息、地理数据/信息、 spatial data/information、geography information等等术语,头都大了,空间信息相关的各个学科领域的繁杂关系也让我发怵。
李德仁介绍Geomatics中译名的论文把我从“雾迷津渡”中拉了出来——原来统领遥感、地理信息系统、全球定位系统、测地学、制图学等与空间信息相关的学科的学科定义早就有了,这就是Geomatics,李认为中译名应叫做“地球空间信息学”。
Geomatics一词最早在法国出现于1969年,1996年被ISO采纳,定义为“Geomatics is a field of activity which, using a systematic approach, integrates all the means used to acquire and manage spatial data required as part of scientific, administrative, legal and technical operations involved in the process of production and management of spatial information. These activities include, but are not limited to, cartography, control surveying, digital mapping, geodesy, geographic information systems, hydrography, land information management, land surveying, mining surveying, photogrammetry and remote sensing”。简明定义为“Geomatics is the modern scientific term referring to the integrated approach of measurement, analysis, management and display of spatial data”。
Geomatics学科研究的对象,在ISO给出的定义中明确指出是spatial information(空间信息)。但space(空间)是一个比较抽象、多元的概念,在物理学、天文学、数学、哲学、心理学中都有space(空间)的概念。那么ISO定义中的空间信息又是指的哪个空间的信息呢?至于Geography(地理学),它的定义是“研究地球及其生命的科学;尤指对陆地、海洋、大气的描述,对动植物、包括人类的分布状态以及人类根据种种自然力的相互关系所从事的劳动的描述”,它是应用空间认知来尝试理解事件在某个位置发生的原因。明白了这些概念的区别,能帮助自己在适当的地方使用比较合适的说法。
WikiPedia上关于Geomatics的介绍在
概念打架的情形很让人讨厌,同时也说明了学科还没有发展成熟。比如构件、组件的概念,至今仍在交叉混用。

-Ofun

-O标记用于告诉编译器优化的目的何在。顾名思义,-Ofun的意思就是为了好玩而优化。
-Ofun是Geoff Broadwell根据Pugs项目的成功经验而总结出的项目开发思想,以及一些具体实施方法。核心思想是兴趣驱动,再辅以相应的组织、控制方法。
文章主要针对的是开源项目的组织开发,但对于围墙里的项目研发还是有很多可借鉴的地方的。比如以人为本,兴趣至上(没有兴趣创造兴趣),可工作代码比只有Idea更有趣,应用现代的、分布式的版本控制工具,建设rich、supportive的团体等等思想与方法。也许有人会说,这些东西早就出现过了,**开发方法就强调这些。但又有多少项目开发组是确实这样做的呢?就让-Ofun以及那么多欣欣向荣的开源项目团队再给我们围墙中的开发管理者提个醒吧。

我的机器人梦想 之二

图像处理、机器视觉:
  • spca5xx摄像头驱动
  • 罗技快看摄像头的驱动qc-usb
  • Intel OpenCV开发库,实验学习中....
Linux音频编程:
  • IBM开发网上的一篇入门指南文章,简洁、实用的好文章;
  • Alsa驱动,包括Alsa开发指南;
  • Sun、CMU、MERL、HP、MIT和UCSC联合开发的Java版开源语音识别Sphinx-4
  • Intel 声音-口部结合的语音识别开源软件AVSR
  • Stephen Cook编写的Speech Recognition HOWTO介绍了语音识别基础与一些开发工具;
aplay、arecord是使用alsa API针对alsa设备编写的命令行工具,在我的T41上aplay可以使用default设备正常播放wav示例声音文件,却不能使用arecord录取声音!!

2005年10月9日星期日

尝试Ajax WebGIS 之一

Google Map应用令人心动。
在用Java Plug-in完成上一个WebGIS项目的同时,我也在考虑是否有必要使用Ajax方式来解决。
现在项目结束了,最好的验证方法还是动手实现一下。
我认识并使用Ajax 的过程如下:
  1. Jess James Garrett的经典文章Ajax: A New Approach to Web Applications
  2. WikiPedia对Ajax相关介绍与资源链接的汇总
  3. Mozilla开发网站上的Ajax编程入门文章Ajax: Getting Started
  4. clearnova公司提供的一些基本的Ajax示例代码和一篇介绍Ajax的很有趣的PPT;
  5. 传说中的prototype,没有文档,不知道怎么用,幸好又找到一篇解读prototype的文章12:) ;
  6. ....
进行中,接下来要考虑如何在Ajax应用程序中异步获取、显示图像数据。

在线阅读大英图书馆的珍藏手本

从slashdot上看到的消息,大英图书馆(The British Library) 将珍藏的名人手写本在网上公布出来,包括达芬奇的笔记、《爱丽丝漫游奇境记》的原稿等等。它是以shockwave形式将这些作品的数字版发布的,界面比较漂亮、简洁、方便。
简单看了一下《爱丽丝漫游奇境记》,我想每个人都会惊叹于作者的美丽心灵,包括故事内容、文笔书写、书本设计和从此种种透露出的对于孩子的喜爱之情,简直像是初恋的年轻人为深爱的姑娘精心准备的礼物。这本书让我注意到了漂亮的英文手写体。英文也有书法。

2005年10月8日星期六

我的机器人梦想 之一

喜欢机器人技术,开始想做自己的机器人也是在一年以前了。
由于时间精力有限,一直进展不大,思路也多次更改。
通过slashdot认识了HR2之后,重新考虑,决定实现一个这样的机器人:
  • 尺寸与HR2相仿,手掌大小;
  • 外部电源驱动;
  • 头部、肢体具备基本行动能力;
  • 机器人本体具备视觉、听觉传感器和语言能力;
  • 控制系统、计算系统和数据系统放在本本上;
  • 机器人本体与本本通过USB接口传输感觉数据,通过串口传输控制信号。

目前需要首先搜索、测试视觉、听觉和语音方面的算法实现,而后部署眼睛、耳朵、嘴巴实际测试,之后整合传感系统。最后考虑机器人本体的组装与肢体运动。

Google Reader

通过slashdot认识了Google Reader。用Gmail帐户登陆,其方便的操作方法、简洁动感的界面和流畅的响应速度很是招人喜爱。

2005年10月6日星期四

发布系统怎么了?

已经在blogger注册两天了,还是不能查看我的BLOG,其他人的BLOG好像也不能查看。
blogger控制面板能够正常运行,怎么blogspot发布系统宕掉了么?

slashdot

偶然闯进了slashdot。
首先被其简洁、充满生命力的界面吸引,而后是五花八门但都是我想了解的信息,以及“News for nerds, stuff that matters”的口号,对信息的分类形式和信息的刷新速度等等都深深吸引着我。
今天搜索了一下slashdot,得到12的介绍和文字,其中我非常同意2总 结的slashdot成功的三点经验“light, diy and hyperlink”。slashdot是公布面向公众的技术、商业信息的信息广场,由于创办人优美的运行模式和技术使其更成功。而BLOG则是共享个人 生活经历、技术经验等信息的个体单位。作为技术人员,我个人很难接受把BLOG当做流水帐记事本的方式。网络需要对公众更有价值的信息。
我目前还只是slashdot的信息消费者,惊讶于slashdot成员获取信息的速度和广度,但我关注slashdot的内容和生命力,希望能逐渐成为信息贡献者。

2005年10月5日星期三

安家落户...

一直对BLOG持观望态度,感觉需要花费很多时间来维护,最近突然想要在网上拥有自己的一片小天地,似乎是现实生活的延伸,心向往之。
要长久维护它,需要热情,需要兴趣,也需要平和。