开源GIS实验田

OpenSource GIS Space

  • 内容导航

  • 最新评论

    • : 嗯嗯,是呢,虽然我现在还不是很懂...
    • mowu: 有要帮忙的吱一声...
    • 直流电机: 非常强悍,感觉现在的软件公司和学...
    • Gao Ang: 这将是一次开源GIS百科全书式的大会 ...
    • SHG: 恭喜恭喜 希望到时有更多国外的专...
  • 热门主题

  • 随机阅读

    • 2010 年九月
      « 八   十 »
       12345
      6789101112
      13141516171819
      20212223242526
      27282930  
    • Gao Ang

      GaoMiao's Portrait
      有了理想
      就不要寻找放弃的理由

      站点搜索

    • 只言片语

      人在年轻的时候应该浪迹天涯,用心身去领略异国的风土人情,去倾听子夜的钟乐。 ——斯蒂文森

    Archive for 九月, 2010

    DITA技术分析报告

    7th 九月 2010

    达尔文信息分类体系架构DITA是面向主题的文档交付解决方案,DITA基于XML表示并继承XML的文档描述元素,覆盖内容信息组织、编写、生成和交付的整个出版过程,并可以面向不同领域的技术出版物进行扩展和定制。

    DITA侧重于交付主题粒度的知识单元,再将知识单元进行重组和映射,生成最终交付的出版文档。DITA的设计理念,与传统着眼于书籍或文档交付的排版技术在思路上有很大区别。同时在应对局部知识点更新方面,DITA有着先天的优势。

    在DITA的主题(Topic)粒度划分方面,我认为主题作为片段信息的载体,首先应具备自包含的特性,即主题具有信息描述的完备性,能够准确完整的表达内容含义,所以划分的粒度不易过细。同时,作为建立后续关联映射的基础单元,主题的粒度也不易过粗,应该便于通过DITA映射进行知识的共享和重用。

    在近期参与的国家数字复合出版工程预研工作,对DITA技术体系进行了分析和梳理,并对DITA与主流的数字出版技术进行了对比。DITA涵盖的内容非常丰富,仅最新1.2版本的技术说明和语言规范就有1200余页文档,包含创作和组织面向主题文档的各种信息,以及DITA使用过程中的组织、拓展和约束内容。

    目前我对DITA的了解仅是庞大体系中的一小部分,在与合作单位的讨论交流中,就掌握的内容整理了一份DITA技术分析汇报,欢迎感兴趣数字出版的朋友共同交流DITA技术。

    DITA技术分析汇报(PDF:1M):http://www.gaoang.com/files/dita-spec-gaoang.pdf

    Posted in 标准研究 | No Comments »

    JVM上的并发编程利器:Clojure语言

    6th 九月 2010

    诞生于2007年的Clojure是JVM平台上的Lisp实现,Lisp 以强大的功能和表达性而著称,但应用范围存在着固定的局限,于是发起人Rich Hickey设计Clojure的初衷便是希望得到一门能够服务于高并发应用场景,较Lisp更为先进的函数式编程语言。

    Clojure 保持了函数式语言的主要特点,同时避免了不稳定状态、递归和高阶函数。Clojure在语法上非常简单,其设计优势在于,让开发者绝大部分工作专注在真正解决问题上,而非耗费在如何模块化设计和如何进行解耦层面上。与Lisp语言相似,Clojure也是基于S-表达式设计。S-表达式给出了表达半结构化数据的约定,以其在Lisp 语言中的广泛应用而为人熟知。S-表达式在Lisp 中既用作代码,也用作数据,其最通用的特性是使用S- 表达式作为括号化的前缀表示。

    与JRuby 、Jython 、Scala等依托于JVM 运行的语言相同,Clojure 是运行在Java虚拟机平台上的Lisp 方言,能够直接调用Java 类库,借助JVM 平台广泛的适用性,为Clojure语言的应用拓展了空间。此外,Clojure 可以说是社区智慧的结晶,在Rich Hickey等核心开发者之外,Clojure 语言的补丁、文档、测试和不少新功能的开发思路都是来自于开源社区参与者的贡献。

    Clojure 之所以受到广泛关注,最主要的原因来自于其并发特点,如支持软件事务存储(Software Transactional Memory,STM )等特性。在实际应用方面,站点FlightCaster为用户提供了航班延误的预告信息,同时也为iPhone和Blackberry提供了终端应用。FlightCaster的Web前台用Rails 实现并部署在Heroku上,后台数据分析和处理程序则由Clojure实现,同时在后台使用了Hadoop、Cascading、Cloudera等工具。在FlightCaster 站点中,数据预处理并转换成适当视图用以分析的操作,以及所有统计推断和机器学习代码都使用Clojure 实现。FlightCaster站点将Clojure数据结构用作通信和存储的中间表示,Clojure 代码分析得到的航班预告模型,以Json中间格式来表示,然后推送到Rails 前端,以Json格式读取数据并展示给用户。

    对于Clojure 开发者来说,开发工具首选是使用NetBeans IDE的Enclojure插件,Enclojure 提供了支撑Clojure 开发的一组类库,包含独立的REPL(Read/Evaluate/Print/Loop)支持,同时支持REPL 和远程JVM 建立连接。Enclojure 提供的编辑器支持具备语法高亮显示、函数声明定位,S-表达式导航,Lisp 风格缩排,代码结构化导航,内置项目模板,断点设置和单步调试,并能够对代码错误给出超链接提示。此外Eclipse 也提供了专门的Clojure 语言开发插件CounterClockwise,在源代码编辑,代码调试,REPL 支持方面也有独到之处,适合于习惯于Eclipse 的开发者使用。

    本文曾发表于《程序员》杂志-2010年09期-“程序天下事”栏目。

    Posted in 编程语言 | No Comments »