小海's profileFlier's SkyPhotosBlogListsMore ![]() | Help |
|
|
December 14 中世纪的思维盛宴
在这样一个懒散的冬日午后,一个充溢着阳光的房间里靠在桌前,耳边流淌着许巍悠远的歌声在诉说着什么,实在是阅读一本关于中世纪的历史书的最合适的情形。那一个个熟悉又陌生的名字,争先恐后的从书中跃起,在阳光中的尘埃里,大声宣读着他们的理念,自满、虔诚、愚昧、睿智、狡诈;却又随着书页的翻动,慢慢淡去只留下一个剪影,共同组成了那个波澜壮阔的时代。 断断续续用了大半年时间,才结束了这场中世纪的思维探险之旅。一方面是因为大量从前没有接触过的信息和思想,需要时间去深入了解和思考;另一方面也是因为一直不忍读得太快,希望能将思维的盛宴拖的尽可能长一些。 长久以来,在我等被传统教育摧残几至麻木的理科学生眼里,中世纪 (The Middle Age)欧洲的代名词几乎就是黑暗时代 (Dark Ages)、大瘟疫 (Great Plague),亦或百年战争 (Hundred Years’ War)、十字军远征 (Crusades) 这样的考点,以及罗马帝国 (Roman Empire) 的荣光、狮心王 (the Lion-Hearted) 的传奇或伊斯兰全盛时期 (Islamic Golden Age) 的神秘。这整整1000年(公元5-15世纪)仿佛被厚重的名为愚昧的迷雾所遮掩,直到名为文艺复兴 (Renaissance) 的闪电划过天际,欧洲才跃入了一个至今为人羡慕的黄金时代,并立刻与那无知的过去划清界限。 但偶尔在仰慕那些华丽的哥特式建筑 (Gothic Architecture) 的时候,也会悄悄给自己一个问题,那些理应在生存与死亡边缘挣扎的中世纪民众,何以在层层迷雾之中创建如此璀璨的艺术。而在阅读二战或当代关于欧洲民族问题的书籍时,也不时觉得他们那自认为理所当然的理由,似乎隐藏着什么不为我们所知的背书。英国和法国的互相讥讽,德国与法国的时代恩仇以及巴尔干的错综复杂,仿佛都有一个源头。反过来再翻看文艺复兴、工业革命以及现代大陆法系 (Civil Law) 和英美法系 (Common law) 等等至今对我们产生深远影响的事件和概念形成与发展,也无不与那被遗忘的时代有关。
正如作者在导言中说到:
“无论如何,中世纪都不是一个沉睡的、可怕的时代,而是一个充满变化的时代。公元600年的欧洲和公元1000年或1400年的欧洲有着截然不同的景象。 …… 直到今天,中世纪时关于教育、政府、社会结构、社会公正的观念仍然影响着非欧洲国家。大学是中世纪的发明;而现在,大学这种教育机构遍布全球。美国、墨西哥、加拿大、以色列、日本,以及东欧的几个新的民主国家,其立法机构都可以说是源自于中世纪的国会和议会。当今中国、古巴、朝鲜等国的共产主义政体,也源西欧的思想;其中一部分可追溯至卡尔.马克思之前好几百年的中世纪晚期。 …… 简而言之,西欧改变了整个世界,并将它带入我们身处其中的全球化文明;无论这种变化是好是坏,要了解他,我们必须回到中世纪来寻找一部分答案。在漫长的中世纪,欧洲从贫困而极不安定的农业社会发展成强盛而别具一格的文明社会,对当代世界的成形有着深远的影响。” November 20 透视 Java 自从全面进入网络购物时代之后,唯一能保留下来逛商店习惯的就是逛书店了。虽然不再象以前那样每次大包小包往回扛,但却很享受书店里那种氛围。虽然在一堆一堆的烂书中惹眼的还是那些熟悉面孔,但常常能在不经意中发现几个漏网之鱼。
例如前几个月曾在书架角落里面翻出《精通 AspectJ》、《事务性 COM+ 编程》、《应用框架的设计与实现》等几本计划外的好书 :D 加上今天的意外收获《透视 Java》,都是些潜在读者群较小,内容覆盖面不大但较为深入的书,通俗的话说就是识货的人可能不多,呵呵。不过相对于那些有书店和出版社背景的热抄书籍,这些相对冷门的书往往更能脚踏实地一些。
例如这本清华出的《透视 Java ——反编译、修补和逆向技术》,虽然在技术点上讲的并不非常深入,但在逆向工程的Java领域,却能够非常全面的覆盖从混淆到反编译各个环节。
相对《黑客反汇编揭密》这样的底层剖析书籍来说,此书更偏向于技术方向的介绍,以及相关现有工具和实现的比较。第2-5章简单介绍了Java领域逆向工程一些基本的概念和方法;第6-13章则扩展到测试、调试和性能调优等领域;第14-18章提及了一些较为深入的话题。
晚上看了一下第一部分,大概翻了一下后面的内容,感觉此书的定位还是很明确的。属于让圈外人能够走马观花对整个情况有所了解,圈内人则可以当作饭后消遣了解一下Java领域的特定情况。平均4-5页纸的章节,基本上也能做到言之有物,乌克兰人在这方面还是挺厚道的。毕竟折腾逆向工程的人本来就少,大部分对这方面感兴趣的朋友目的性都很强。真要是把每一点展开来讲,估计除非是真正做这方面的人,否则都会被侃晕过去,呵呵。如何把问题展开来讲,又能收的住,而且言之有物,其实是很见功底的,总不能都像《黑客反汇编揭密》那样一个章节写4xx页吧,呵呵。
因此此书的优点和缺点都是讲的太杂了,横的从混淆、反编译扯到跟踪和性能分析,纵的从包、类一级到字节码和JNI。可以说把这个小小领域里面可能涉及到的名词和概念一股脑都打包给了读者。如果不是在 Java 领域折腾过一段时间,并且有相当底层知识和其他领域基本概念的话,估计这么大信息量还真不一定撑的住,呵呵。不过好处是通读一遍把七七八八概念一记,出去忽悠人的话估计挺管用 :D
另外一个亮点是此书相对来说比较新,加上作者知识面比较广,非常适合希望大概了解这个领域,并寻找学习和研究切入点的同学。毕竟这个领域成型的资料相对较少,有这么个roadmap未尝不是件好事。因此单独把此书拿出来 blog 之,如果大家对其中某些技术点有兴趣,可以一起讨论共同学习 :D
September 18 《应用框架的设计与实现——.NET平台》 用一周左右时间零零碎碎抽空把《应用框架的设计与实现——.NET平台》一书翻了一遍,感觉作者 Xin Chen 的确有一些自己的想法,但有些问题并没有想的非常明白。在应用框架的层面来说,书中涉及的范围基本上是较为全面的,但就如其示例实现 SAF (Simplified Application Framework) 的名字一样,有些问题的思考和解决方法过于简单。
从全书的整体布局来说,首先是作者的全局理解不错,前三章对应用框架的分析和理解大部分还是很到位的。相对很多上来就大谈实现技术的所谓企业级开发书籍来说,能想到并且言之有物的将 blueprint 先说明白,说明作者在整体框架的发展上有过较多的思考。而实际上这个层面的思考,是 Windows 平台下企业级开发所最为欠缺的。而从第4章到第15章,每章介绍一个框架的主要构成部分,先原理后实现还是挺不错的,最起码能够浅显易懂,呵呵。不过个人感觉对基础性支持介绍的太多了,不如改为结合实际项目的应用场景分析。毕竟能有目的性看这种书籍的读者,大部分都不会存在技术性知识的缺乏。也不知是否书籍定位的问题,感觉很多问题作者是想到但并没有讲明白,给出的解决方法也仅仅停留在思路层面,很多地方缺乏实用性和完整性。
第4章介绍类工厂服务,给出一个基于 reflection 机制的可配置类工厂实现思路。不过居然没有提及任何 IoC 方面的知识,真难以想象这是一本2004年才出版的书。毕竟将构建对象与使用对象解耦,只是容器最基本的一个层面的功能,更高层面的对象依赖关系管理、配置管理、AOP 支持以及服务生命期管理等等,才是一个真正的企业级容器所必须的。
第5章介绍缓存服务,给出一个基于 hashtable 的缓存实现思路。值得肯定的是明确提出了存储策略的引入,这为平滑支持基于外部存储和基于cluster 的缓存提供了思路,实际上 Java 阵营的大部分 Cache 实现也是类似。亮点是采用 XML DOM 树作为 key 的存储机制的思路,通过 xpath 来定位存储内容,相对于平面的基于 key 对象自身可比较性的思路,有着其特有的易用性。可惜给出的参考实现只能用简陋来形容,作为学习用的范例还凑合。
第6章介绍配置服务,基本上就是基于 CLR 现有配置架构,没有太多新意。直接用 Enterpise Library 的相关 Block 是更好的选择。感觉 windows 平台的开发者在 XML 处理方面的思路太僵化了,来来去去都是 MS 那套机制,不像 Java 阵营百花齐放,digester 与 xstream 齐飞,不同模式让人有选择余地。
第7章介绍事件通知服务,给出一个集中事件分发服务的雏形。这块对事件分发和异步执行的好多想法很不错,但实现的方式太简单了。虽然统一的中间服务简化编程模型,但在参数传递、传送拓扑、底层协议等等很多方面受限。某些时候网状拓扑比这种星状拓扑的灵活性更大,或者基于总线的思路也更先进。这方面 ESB 的思路应该是大势所趋,MS 方面就看 Indigo 的本事了。
第8章介绍 Windows 服务,说白了就是用一个 Windows Service 做容器来运行任务。能明确提出这一点来,可以说作者对如何将应用框架与 Windows 平台结合做过一些思考,可惜仅仅在这儿有所体现,而可以做努力的方向还很多。而且其对服务支持仅仅停留在运行容器支持层面,基本上没有考虑如何在服务与服务之间、服务与使用者之间,提供无缝交互的支持,而隔离的服务对于框架来说是孤立的。
第9章介绍消息队列服务,基本上就是对 MSMQ 和 MQSeries 的简单封装。如果能够考虑消息路由、同步模式等等高级特性,可能会更加实用一些。这一章实际上可以跟事件通知服务合并到一起,毕竟他们是为了解决类似的问题,不应该仅仅以实现技术来划分。
第10、11、12章介绍授权、身份验证、加密服务,基本上就是对 CLR 现有机制的包装和整理。亮点是明确提出应该将授权等定义与具体代码实现分离,并给出一个简单但可用的实现。真不明白这么简单的一个道理,为什么 MS 到现在就是不明白 :S 此外这儿单独提出了对身份扮演的支持,但在与架构一级的整合上力度不够,仅仅给出实现一级的方法。
第13章介绍事件服务,主要包括如何通过 COM+/DTC 使用分布式事务。亮点是明确提出抽取独立调度类提供 COM+ 事务与隔离性支持,避免在实现代码一级静态定义。不过作者似乎对 COM+ 1.5 不是太熟悉,居然没有用新增的服务域的特性。而且他在抽取事务与隔离性支持时,使用了设计上巨龌龊的枚举组合方法,用 4x5=20 个服务类来表示所有组合。其实完全可以通过动态类生成方式,提供更为幽雅的实现。而且事务的定义,也应该有相应的配置文件级支持,作者好像把这块也忽略掉了,而前面几个模块缺都有,真是奇怪。
第14、15章介绍文档层和工作流服务,基本上就只是简单介绍了一下概念,感觉是敷衍了事 :S 而且两章罗罗嗦嗦说了半天,说白了都是用的责任链的模式,还挂着个工作流的羊头。估计可能是因为作者有 biztalk 的背景,这部分大部分工作用现成工具完成了吧。
总体来说此书还是一本非常值得一读的入门级应用框架设计书籍,能够非常清晰明确的提出问题并给出简单的参考实现,但在问题思考的深度、广度,以及解决方法的时效性和先进性方面,只能说是一般而已。相对于 SpringFramework 作者那两本重量级作品,此书也就是大概翻翻就行了。 August 28 some interesting books 刚刚看完《岁月台湾》这本书,感觉非常不错。对大陆和台湾的普通民众来说,海峡对岸的历史和现状一直都是非常神秘的。虽然最近几年随着交往的逐渐增多,相互之间的透明性逐渐增强,但偶对台湾的近代史一直没有一个基本的概念。从教科书或官方媒体了解到的,往往是经过意识形态修正后的扭曲的历史,而《岁月台湾》则是从图片的角度展现一个真实的台湾近代史。从这里能体会到照片的重要意义,毕竟话是靠人说理论是靠人编,但照片缺总是真实的记录下历史的时时刻刻。看着那些与我们同祖同宗流着共同血脉的人,他们的真实生活与喜怒哀乐,真是倍感亲切。
此外昨天逛书店时顺便买了两本萨苏的小集子:《梦里关山走遍》和《中国厨子》。老萨写的文章的确是可读性强,虽然集子里的文章以前都看过,还是手不释卷的把《中国厨子》重读一遍。除了他的文笔和卖关子的功夫,其渊博的知识和涉猎,真正体现出一个世家子弟的风采。说起来世家子弟以前一直是个偏贬义的词,但实际上接触过一些此类人的文与话之后,发现他们在对问题的理解上往往有非常别致的独到之处。这种在文章字里行间体现出来的内涵和底蕴,绝对不是现在看似走红的所谓网络写手能够比拟的。可惜没能买到另外几本:《嫁给太监》、《梦里燕赵》、《蓝天轶事》,回头到网上定吧 :S
相比之下现在流行文化越来越低俗化,书名都开始叫什么《决不裸奔》或《潘金莲的发型》,作者群中也开始出现大量一点写作概念都没有的人,语句前后不通内容纯属 yy。虽然作为一个并不善于书写的民族,能够有越来越多的人参与到写作上,在大的趋势上是好的。但这种冲击给尚未具备鉴别能力的一代,带来的影响就无法预期了。也许随着岁月的流逝,他们也会开始象80年代那批先锋作家一样开始重读百年前的世界名著吧。回头去弄本余华沉寂多年后的新著《兄弟》,看看他在诡异的《灵魂饭》之后从历史沉淀中汲取到了什么。 August 24 咬文嚼字之 Java 版 如果让我推荐学习 Java 语言的书单,除了面向初学者的 Thinking in Java 和面向进阶者的 Inside JVM 之外,现在又可以增加一本面向执着者的 Java Rules。
虽然相对枯燥的第 1 章曾让我一度放下此书改看其他书籍,但在读完第 2, 3 章后我就确信,此书绝对是属于那种可以看两遍以上的书籍。虽然就内容来说,总共 6 章的内容看起来并不多,而且其中有 3 章近 330 页,用来介绍其他书籍里面几乎不屑于详细讨论的基础内容。([4] 原始数据类型和 Object 类、[5] 字符串和其他通用类型、[6] 数组和集合框架)但其内容所涉及技术的深度和广度,绝对是绝大多数所谓“编程”书籍无法比拟的。
举个最简单的例子,在第 2 章 编译单元 的讨论中,作者花了 8 页 16 面纸的篇幅,用来讨论包引用中的 import 语句。而且介绍内容绝对是言之有物、条理清晰,对技术的介绍则是旁征博引、触类旁通。
此书的定位是介于 JLS (Java Language Specification) 和语法书籍之间,从语言设计的角度来展示 JVM 的细节,是阅读前面提到两本书籍后,最合适的黏合剂。可以让读者将 Java 语法和 JVM 实现,通过语言设计和实现的细节,有机的将知识联系到一起。美中不足的是文风有时过于学术化,好些句子绕来绕去让你看不真切。不过也可能是翻译水平问题导致,回头弄本原版的来比对一下。
不过相对于普通的阅读者,这个层面的讨论似乎过于繁琐和细致,因而我将之规类为面向执着者的书籍,呵呵。好在偶连 JLS 语言规范都硬着头皮啃过,看起这个来还不算太吃力,而且经常有意外的收获,非常过瘾 :D
而就翻译质量来说,javaresearch.org 这个组织还算不错,基本上中规中矩,没发现什么太大的纰漏。也好歹没把书名改成个诸如《xxx 深入浅出》、《xxx 技术内幕》或者《Java 和 xxx 不得不说的故事》之类 BT 的名字,原汁原味算是积德了。此外这个组织翻译的 Concurrent Programming in Java 一书也是非常不错。 |
|
|