30th June 2010
DITA和DocBook是数字出版领域的两种标准,通过定义规范化的文档描述规则,来解决文档交付过程中遇到的问题。面向不同类型的交付出版物,DITA和DocBook各有见长,但在实际应用中也有自身的限制因素。结合近期我参与的项目实践,对两个标准的对比分析总结如下。
DITA解决了出版物的结构化描述和内容重组问题,且支持多语言版本制作,适用于对格式有严格限定的技术手册类出版物。但DITA不能实现很完美的样式渲染,且对于内容与格式一体化的复杂出版物,DITA很难进行主题和界定与划分。所以使用DITA进行书籍出版的成本和难度较高。
相比较来说,DocBook适用于通用出版物,文档易于组织和排版。但DocBook内容以Section段落组织,不具备DITA的内容映射机制,无法做到类似Topic这样粒度的内容划分与重组。且对于内容需要频繁修改的文档排版,Docbook略显力不从心。
DITA和DocBook专注于交付技术信息,但DITA侧重于交付主题,而DocBook侧重于交付书籍。DITA提供基于主题级粒度的信息分类,允许作者组织并描述特定信息领域。在生成多种文档格式的信息重用过程中,能够保持内容的高度一致性。在最终交付物的输出格式方面,DITA能够生成PDF、CHM、HTML等大部分的出版交付类型。DocBook常用的交付格式为PDF和HTML,其他输出格式需要借助相关的功能插件。
LaTeX也是出版常用的格式,但我感觉LaTeX与DITA或DocBook侧重解决的技术层面有较大的不同。LaTeX是富格式文本集,尽管对科技论文撰写很合适,LaTeX适用于作者个人创作,但LaTeX文档内容和标签的耦合度非常紧密,并不适合于出版社的排版工作,以及文档内容的抽取重用,还有多种交付文档的组合生成。
在学习应用方面,DITA包含众多语法和标签定义,在应用过程中的学习曲线较陡,在文档生成过程中一般需要使用Ant命令进行编译。而DocBook相对容易理解和使用,一般使用者从了解到上手使用DocBook制作文档仅用一天时间即可。希望了解更多DITA与DocBook的对比分析的朋友,可以进一步阅读DCL数据转换实验室包含更为详尽内容的文章。
Posted in 思维记录 | 3 Comments »
1st January 2010
数据访问集成中间件OGSA-DAI,在最新3.2.x版本中,已整合了分布式查询中间件DQP。DQP的作用是将分布式异构的关系型数据库通过数据服务进行集成,使客户端在SQL查询中访问多个数据源,如同操作单一数据源中多个不同的数据表。
在DQP分布式查询执行前,首先要获取已配置数据资源的schema表结构,并在获取的每个schema表名前加入相应的数据源前缀,以便在将分布式数据源整合后的虚拟数据库中进行标识。
DQP查询并不支持所有SQL查询的函数和操作符,其查询语法支持SQL 92标准的 子集。在分布式查询过程中,DQP中间件并不存储任何本地数据,而是根据提交的查询请求串,将解析后的子查询提交给相应的后端数据库资源的DAI服务来获取数据。
当DQP接收到查询请求串时,根据DQP支持的SQL语法进行解析,并通过查询解析生成抽象语法树(Abstract Syntax Tree)。SQL执行所依据的查询计划也根据抽象语法树获得,并在初始查询计划的基础上进行效率优化。优化后的查询计划被DQP中间件分发给数据源对应的数据服务,并调用服务后端的OGSA-DAI工作流来并行执行子查询过程。
对于DAI单数据源查询,中间件会将整串SQL语句推送给后端数据库解析执行,而DQP分布式查询,需要将查询解析后分发,所以如果在DQP查询中嵌入自定义标量(Scalar)或聚合(Aggregate)函数,需在DQP中间件中进行功能拓展实现。另外,DQP提供使用 Graphviz生成查询计划的方法,只需在部署后的DQP配置文件DQPCompilerConfig.xml中添加VisualiseOptimiser类,并指定DOT和PNG输出路径,即可生成可视的SQL执行查询计划图。
Posted in 思维记录 | No Comments »
20th June 2009
在开源Java GIS领域中,OpenJUMP无疑是敏捷小巧,且功能全面的GIS客户端代名词,能为使用者带来类似ESRI ArcExploer般的地图浏览、编辑和空间分析功能。
OpenJUMP前身是JUMP GIS项目,JUMP名称为Java Unified Mapping Platform的缩写,最初由加拿大GIS公司Vivid Solutions和Refractions Research共同开发。这两家公司都以提供Java GIS解决方案而闻名,并且分别向开源GIS社区贡献了Java空间分析库JTS和通用Java GIS平台uDig。
OpenJUMP在GPL协议授权下开放源代码,并在系统构建时使用了Java拓扑分析套件JTS、Java高级绘图库JAI、工程与科学计算库JMathTools等已有类库。在矢量数据源支持方面,OpenJUMP支持GML 2.0,WKT(Well Known Text)、ESRI Shapefile以及JUMP自有的JML格式。
在OGC服务方面,OpenJUMP已提供了WMS支持,并且在JUMP可拓展性框架支持下,可以很方便的添加第三方WFS和WPS插件。除此之外,OpenJUMP直接支持PostGIS数据集的加载、绘制和写回,并且提供ArcSDE、Oracle Spatial以及MySQL Spatial的访问接口,通过支持空间拓展的数据库获取空间数据。
OpenJUMP内置了GIS空间分析操作,包含Buffer缓冲区分析,Intersection叠加求交、Union叠加求和等空间分析功能,可以用来实现特定的空间分析计算,并可以通过插件方式为OpenJUMP进行功能的定制或拓展。在拓展方面,OpenJUMP提供Java API接口,并且支持轻量级Java脚本BeanShell和Python的API拓展开发。
在德国,OpenJUMP被作为GIS专业教学软件,来为学生演示矢量栅格数据绘制,以及基本的空间分析功能,并以此让更多人从学生阶段就多接触开源GIS的软件环境。感兴趣的朋友可以下载OpenJUMP的上手指南,来了解OpenJUMP平台上所提供的各项GIS功能。
Posted in 思维记录 | No Comments »
1st June 2009
《Google API大全:编程·开发·实例》一书(豆瓣,China-pub)将在2009年6月5号的Google开发者大会首发。本书的作者中,不少是来自Google公司开发一线的工程师,同时也包括始终关注Google API,并活跃在开发者社区的程序员和架构师,他们是:段念、何峰、苏哲、高昂、张凯峰、IceskYsl、王翔、田淼、王俊煜、林胜、李明、刘宏伟。欢迎感兴趣Google API的朋友们关注,作者序全文如下:
10年前,使用Email邮箱收发邮件,只是很少一部分技术人员才能享受到的便利;5年前,出行时如果没有随身携带地图,只好在路人的指点下摸索找寻。而今天,无处不在的互联网和丰富多彩的互联网应用,已然嵌入了我们的生活。GMail带给我们免费、好用且容量不断增加的邮件服务,Google Maps成了我们出行前必不可少的参阅工具,甚至通过移动终端将地图随时带在身边。所有这些,都悄无声息成为我们生活的一部分。
互联网技术每天都在更新和发展,促成这一切发生的,正是背后极具创造性的程序员,和那些通过产品为用户带来价值的新技术公司。在这些公司中,Google毫无疑问是在帮助用户改变互联网使用方式上做得最为出色的。
Google以其独具特色的互联网应用,一直引领着互联网产品开发的方向。同时,Google为其绝大部分产品提供了面向开发者的API调用接口。这些设计良好的API,帮助开发者通过Mashup调用将Google产品所提供的内容集成在第三方应用中。
Google 多达几十种的开放API无法一一列举,但我们在日常使用互联网时一定在不经意间享受过它所带来的便利。提供地图服务的Maps API,实现互联网社区化联系的OpenSocial API,开发定制个性化首页的iGoogle Themes API,简化广告营销管理活动的AdWords API,提供网络应用程序平台的App Engine,等等。这些API的出现,不仅仅为开发者带来更具灵性的开发创意,为用户带来更为丰富多彩的互联网产品,更重要的是,它们说明了 Google的产品不是封闭的,而是属于整个互联网开放平台的,任何人都可以在Google的产品之上进行拓展,并享用Google产品为互联网带来的便利。
本书的写作的目的,也正在于此,即对Google开放API进行梳理和介绍,辅以行之有效的实例,让更多的开发者了解Google API、深入Google API,灵活使用Google API来开发实用且融入灵感与创意的互联网应用。
请移步Google Document继续阅读序言全文
Posted in 思维记录, 诸子百家 | 4 Comments »
18th December 2008
EndNote这款老牌文献管理软件同时提供了Windows和Mac OS X的发布版,目前最新是X2版本,这个版本改善了用户在全文搜索以及文献整理时的体验。
目前文献查找常用的数据库如:Elsevier Science Direct、SpringerLink、Web of Science等等都提供了对于EndNote的支持,并且在文献搜索页面上会有类似于”Export Citations”的选项,只要将引文内容和摘要的查找结果保存,并导出为RIS格式,即可将引文的内容导入到EndNote已打开的数据库之中。CNKI等中文数据库的导入方法也可以在在上一篇EndNote教程中找到解决方法。
在文献管理方面,EndNote提供了近200种文章撰写模板(Template)、600余种导入参考文献的过滤器(Filter)和近3000种参考文献的编排格式(Output Style),但如果投稿国内期刊的话,提供的模板大多是用不上的,可以根据自己的需要修改或定制。
参考文献的编排格式方面,中科院博士论文定制EndNote的ENS样式文件还比较美观,直接将其拷贝到安装目录Styles文件夹下就可使用,基本上适合大多数中文期刊对于参考文献的排版要求。
在与Word联动方面,EndNote已经支持的比较完美了,利用Word的宏可以实现参考文献先后顺序的动态调整。对于非Office用户,希望EndNote对OpenOffice的支持也早日成为现实。
Posted in 思维记录 | 2 Comments »
1st August 2008
闲暇时喜欢翻书,但也许是习惯了屏幕前飞快的阅读速度,如今看书已不像原先啃书那般细致。阅读时往往对引出道理的故事很感兴趣,而到了讲道理的细节,便一扫而过。
然而最近在读的《编程之美》一书,却是无论如何也无法像读其他书籍那样浮光掠影般翻看,而是字斟句酌,生怕遗漏了半点细节。如果说在看《算法导论》这样的经典著作时偶尔会有枯燥,那么这种感觉在阅读《编程之美》一书时是无法体会到的。想来或许是,单纯的理论讲解或许显得枯燥,仅是应用的叙说又会感觉浅显。《编程之美》一书拿捏的却恰到好处,从游戏题解到数字技巧,从数据结构到数学问题,大多数算法的引出都有具体应用场景作为铺垫,不会让读者感觉题目是凭空飞来而摸不着头脑。在题解过程中,通过分析带动算法探究,以讨论带领读者着循序渐进,而丝毫没有解释说教的架子。
在维基百科上,对于Problem-Solving是这样解释的:解题是思维的一种形式,被认为是最为复杂的智力活动之一。解题同时也是是高层次的认知提炼过程,需要综合运用常规思考和基本技能,并在其上进行创造性思维。的确,解题需要我们的创造性思维,而深入解题的思考过程,着实比得到标准答案更让人兴奋。想起曾读过一本计算数学领域的书籍:《如何求解问题:现代启发式方法》,与《编程之美》一书便有着异曲同工之妙。书中着重探讨用数学工具分析问题、求解问题的方法和途径,启发读者来培养独立自主的思考能力,用学到的方法解决现实生活中的问题,而并非是仅仅给出问题的标准答案就收工了事。最终的结果往往不是关键,而求解问题的一步一步才包含着最为精华的内容。
思考的过程比答案本身更为珍贵,同样,从这个意义上说,学习思考的方式往往比学到知识本身更有用。
请移步GDoc继续阅读书评全文
Posted in 思维记录, 诸子百家 | No Comments »
8th July 2008
《Web开发大全:ROR版》一书经历数月写作,目前已经排版出片并交付印刷,将在08年七月末上架。感谢共同撰写本书的五位作者给于的帮助,他们是:骆古道、王大力、董彬、黄翀与苏锐。拙作推荐序也一并附于书中(感谢周筠和李剑对序言所做的修改),希望本书能为关注Rails的开发者带来新的收获,序言全文如下:
众所周知,Rails框架从诞生之日起,就没有一个强大的公司充当其坚实的后盾。尽管如此,在Rails框架近几年的发展成熟过程中–对于开发者来说–依然显现出了不可思议的吸引力和极其强大的生命力。
Rails的普及流行,并非是因为这项技术被夸大或高估。毫无疑问,这是源自于社区的支持,源自于社区开发者对于Rails框架的认可。Rails框架发展到今天,一直是依靠社区的力量,推动着Rails不断向前迈进,也正是来自于社区的反馈,影响着Rails框架未来发展的方向。
本书之所以出版,归根结底,同样是源自于Rails开发者社区。在Web开发过程中,对于那些希望在Rails之路深入下去的程序员来说–不管你是否幸运–总会有这样那样的问题会突然间跳出在你面前,在未曾打招呼的情况下,便把你在之前成功运行示例中获得的那点成就感无情蚕食掉。于是,当我们在帮助手册中一无所获,我们开始寄期望于社区,希望找到被同样问题折磨过,又坚强爬起来的人,期望他们为我们留下经验与启示,让自己的编程道路经历荆棘坎坷之后最终涅槃重生。
如同你预想的那样,本书的作者皆是源自于开发者社区,或者在技术博客上耕耘着经验与你分享,或者就是你曾在技术论坛中常会遇见却又从未留意的一个普通ID,就是这些平凡的技术布道者,构筑起了你的坚强后盾。小小的一株草无法成长为参天大树,但是将我们的力量凝聚在一起,这些点点滴滴,会让你感觉你不是一个人在战斗,在你摔倒的地方,同样曾有人顽强地爬起来继续前行…
请移步GDoc继续阅读序言全文
Posted in 思维记录 | 2 Comments »
8th July 2008
Globus 4.2.0版本新近发布,在4.2版本中,包含GT4使用的Web服务规范的更新,并且增加了服务的新特性。发布说明中更新了此版本的所有改动,简要列举如下:
- Java WS Core中增加持久化HTTP/S链接支持
- Java WS Core中增加动态部署和JBOSS 4.0.x支持
- WSRF操作中增加C语言命令行工具
- 授权(Delegation)服务中增加用于查询资源属性的GetResourceProperties以及QueryResourceProperties方法
- 增强服务端基于属性的授权框架
- 安全描述符框架增强
- 为Replica Location Service (RLS) 提供Web服务接口
- 触发服务中增强多重触发规则TriggerRules支持并增强配置接口
- 提供Java API来辅助从外部信息源创建资源属性
- 为GRAM4提供新的资源管理器API
在Java WS Core之中,提供了WS Addressing 1.0、WSRF 1.2以及WS Notification的支持。并且在WS Core中增加了近十个命令行工具来辅助服务容器的管理。除了通用运行组件之外、安全、数据管理、信息服务、执行管理等部分都做了更新。关于各组件新增功能更为细节的描述,可以在组件更新说明中了解。
Posted in 思维记录 | No Comments »