Archive for 05月, 2004

31
May

专家的恐惧与专家的“反恐”

   Posted by: 不存在    in 未分类

 

人民邮电出版社最近出版了一本书,叫做《应用MDA》。据我所知,它是国内第一本介绍MDA概念的图书。目前,MDA还处在“油漆未干”的状态,对于我来说,亟需通过阅读一些资料对此项技术建立初步印象。因此,我阅读这本书时,目的是十分明确的。我想知道,如果MDA是一个答案,那么问题是什么?我本以为这个问题应当是很简单的,略读过这本书之后,我感到,事情其实并不简单。
  
  
  原著作者David Frankel先生是OMGMDA运动的活跃分子,对于这位先生,我并不了解,书中也没有进一步的详细介绍。从这本书整体布局看来,作者在大局把握上似乎经验不足。当然任何一个理智健全的人也不会指望通过一本328页的小书真正掌握MDA的应用技术,此书不过应证了这一点而已。不过Frankel先生在叙述中夹杂了很多背景资料和个人议论,这恰恰是我喜欢捕捉的东西。个人作品较之冰冷而懦弱的官方技术文档,最大的优点便在于文字背后的感情,这种感情不仅能够让读者更顺利地接受书中所描述的技术,而且时不时泄漏出一些小秘密甚至是大秘密。对于我来说,这些秘密或许是真正有价值的、值得讨论的东西。Frankel先生看起来是个比较谨慎的人,尽管如此,他还是给了我很有意思的暗示。不妨看看这段:
  
  
  “我们不得不得出这样的结论:我们对于平台的未来所能做出的唯一预测是,我们无法预测到的事情将会发生。哪怕IT经理人对于平台下了正确的赌注,平台也不太可能保持原样,而是会随着时间的流逝而演变成几乎完全不同的新平台。即使经理的猜测是正确的,依赖于该平台的代码也可能会很快过时,快得令人心碎。”
  
  
  真有意思,不是吗?Frankel先生不够坦白,因为他在这里用“IT经理人”当幌子,可是谁都看得出来,其实他在说“IT技术专家”。尽管如此,抛开这点小小的不坦白,Frankel先生在这里说出了当今软件技术领域的一个大秘密,那就是,整个软件开发领域中的“专家阶层”已经在心理上陷入深深的恐惧中。
  
  
  作者既然没有明说,那么这个结论当然只能是我的印象。而印象之所以为印象,就在于解释起来并不容易。首先的一个难题就是要论证在软件开发领域存在一个所谓的“专家阶层”。“阶层”这个名词实在不好听,我甚至很难解释它与更难听的“阶级”之间的区别何在,因此也不想陷入这个问题的争论之中。但是软件开发领域中确实存在一批所谓的专家,那些通过文章和书籍以及演讲表达他们自认为高人一筹的技术思想的人,那些因为之前的成功而拥有表面自信的人,那些敢于“文人相轻”而且的确有一点点“相轻”资本的人,如果你承认这些人与刚刚入行的战战兢兢的coder确实有所不同,那么就请暂且接受我的这一前提。
  
  
  在软件开发这个圈子里,专家们是让人仰视的。然而这些让人仰视的专家,今天其实正陷入一种深深的集体焦躁和恐惧之中。是的!这些衣食无忧、态度傲慢、言之皇皇、著作等身的专家们,他们正在恐惧!
  
  
  上世纪90年代以来,软件产业的一个基本现象,就是基础平台和工具技术的更迭和变革愈演愈烈,超出任何人的预期和意愿,也完全超出个人所能够应付的范围。在短短十多年间,基础技术经历了从面向过程到基于对象,从基于对象到面向对象,从面向对象到面向组件三次大的变迁,其间还夹杂有GUI革命,32位革命,关系型数据库革命,Web革命,向C++和Java的大迁移,Design Patterns运动,开放源代码运动,面向对象方法学之战,分布式中间件之战,J2EE之战,COM+和Windows DNA的昙花一现,VB开发者面临的.NET之乱等等无以计数的事件。软件工业的发展进步,基本上处于被平台技术的快速变革所驱动的境地。这种快速的变革,使得今天专家阶层,往往会被明天遗弃。一些人今天还在为上一次选择的成功而沾沾自喜,明天就将面临被抛弃的命运。软件平台技术的每一次变革,每一场工具大战,背后都有着千万悲情故事。多少人从荣誉的峰顶跌落?有多少人要吞下苦涩的心情,抛却数年的心血,一切推翻重来?又有多少人故作轻松地说着“必须努力跟上时代”的废话,鼓起越来越贫弱的勇气再战江湖?平台技术的迅速变化,超过所有人预料,而其革命性和颠覆性,使得在这个行业中知识和经验的老化速度之快,技术积累之艰难,达到了让业内人士感到羞辱的地步。整个产业的从业者就好像站在格陵兰岛夏季的浮冰上,对于脚下肆虐断裂的冰层充满着恐惧,他们四处寻找看上去更坚实的浮冰,吃力地跳跃挪移。然而,如果说连MFCVB6CORBA这样的巨型浮冰,现在都面临解体崩塌的危险,那么你还能信任什么呢?
  
  
  在书中,Frankel说:
  
  
  “荷马在他的史诗中描述了西西弗斯的故事,他必须将一块巨石推上海蒂斯的一座小山,但每当接近山顶时,巨石又会滚下来,因此西西弗斯的苦役永无止境。而当今的IT经理人正是现代版的西西弗斯。”
  
  
  对,这就是事实!
  
  
  你以为软件开发领域内的那些“高手”、“专家”们,对于大公司一波又一波的新平台革命真的热烈欢迎吗?你以为那些关于“提高开发效率”、“让你的工作更轻松”之类的宣传口号真的让专家们山呼万岁吗?他们只不过是强颜欢笑!其内心的焦躁和恐惧,才是基本的真相。不错,确实有一小部分涉世未深的新锐们津津乐道,激情澎湃,但这只不过是下一个悲剧故事的开始而已。任何一个专业领域,只有保持变与不变的对立统一,有所积累,有所扬弃,才能够稳步前进。而软件技术领域,已经习惯于在平台技术这样的基础层面上快速震荡,而且到目前为止,都没有任何有效的方法隔离这种震荡,从而使这种震荡严重波及整个产业和专家阶层。
  
  
  这种情况不是一开始就有的,Frankel在书中第一章回顾了70年代COBOL语言在商用主机系统上的统治地位,以及长达十几年的DOS时代,这都是软件发展历史上的黄金期。然而最近几年来,平台技术的震荡过于频繁和剧烈,技术人员疲于奔命,拼上全部精力来掌握平台技术特性,完全成为文档的奴隶,根本没有余力来考虑真正重要的技术问题。这是多么严重的局面!
  
  
  在软件开发专家作为一个群体,数量还比较少的时代,这个问题即使严重,对于他们来说也只能采取“人为刀俎,我为鱼肉”的被动态度。大多数人采用两种办法,一是深深地钻入某一个细分领域,甚至干脆改行,以其他行业(而非软件技术)的稳定性来保护自己。另一种方法则是勇者之选,就是不断跟风赶潮,争当所有时代的弄潮儿,或者换一个角度说,甘愿被各个时代反复蹂躏。
  
  
  然而随着专家群体数量之多,足以形成一个阶层的时候,逃避和被动的姿态就显得过于懦弱。至少在软件开发过程和方法这个领域,既得利益的专家们开始尝试主动的出击。与其屈从于技术浪潮,被玩弄于股掌之中,不如主动制定游戏规则,建立防波堤,稳定软件技术行业的专业阶层。
  
  
  这就是MDA的关键目的之一。看上去很不错,可是怎么做呢?
  
  
  基本思路很简单,Andrew Koenig曾经引述一个英文作家的话:“增加一个间接层,这是解决任何问题的办法,”并指出这句原来或许是讽刺不断自我膨胀的官僚体制的言论,放在软件领域倒的确是箴言。遵循这个箴言,专家们准备打造一个间接层,把浮冰隔离在该层之下,从而可以脚踏实地,高枕无忧。
  
  
  “MDA就是把建模语言当成编程语言来用,而不只是当作设计语言来用。”
  
  
  当然!如果建模语言可以当成编程语言来用,主要通过编程语言来体现的基础平台的变化将很大程度上被隔离在建模语言之下。
  
  
  “MDA无意独领风骚而令其他方法黯然失色,相反,它同其他方法相辅相成。”
  
  
  当然!MDA要让其他方法成为它下面的浮冰,你们尽管去崩塌断裂,彼此搏杀吧,我自岿然不动。
  
  
  “用建模语言编程可以提高生产率,改善质量,并使软件产品生存期更长。”
  
  
  当然!只有提供更高的生产力,才能够获得更强大的整个业界的名正言顺的支持。只有在这种支持的庇护之下,专家阶层的利益才能得到维系。
  
  
  可以说,MDA的目标已经十分明确——通过建立新的理念、技术和工具,将“软件设计”这件事情变成一门与编写代码相分离、真正独立的专业,通过专业化,防止下层平台技术不断震荡波及甚至颠覆专家阶层在技术上的积累。因此,这是一场专家们用专业化手段实现专业分工,以维系专家利益,对抗专业恐惧心态的运动。
  
  
  当然这个定义不是严格的、正式的。在面对听众的时候,我们需要一个更加冠冕堂皇的理由,比如推进软件工程进步,提高效率、改善质量之类。但是我认为“对抗恐惧”这个心理层面的因素也没有什么不好意思表达的,至少在我看来,这算是光明正大的理由,无须掩盖。而且,从Frank e l先生这样的著作来看,也掩饰不了。
  
  
  MDA并不是凭空捏造的,它是传统软件工程的必然发展。传统软件工程(对应于目前流行的敏捷方法)在本质上一直模仿土木建筑工程。土木建筑工程,与很多人设想的相反,一直不断涌现着大量的创新技术,然而,对于这个领域内的专家阶层——建筑师和结构工程师——来说,新技术的出现几乎总是一种好事,他们从来不需要担心新技术的出现会颠覆自己的专业地位。这一点令软件工程领域的专家们羡慕不已。他们付出了很多努力,试图通过对开发过程的研究解决这样的问题,然而对于跟技术结合更加紧密的软件设计者来说,软件过程无异于隔靴搔痒,解决不了问题。
  
  
  MDA要把属于软件设计本质的东西用专有工具表达成为专有的成果,就好像建筑师只需画出建筑图纸,结构师只需画出结构图纸,在软件工程中,工程师凭借MDA,只需要构造出模型。有了模型,软件设计者们梦寐以求的依赖倒置出现了:不再是软件的架构和设计依赖于下层平台,而是下层平台被迫不断完善以满足表达模型的需求。在这种情形下,软件专家们将能够逐渐摆脱平台厂商歇斯底里的斗争带来的剧烈震荡,集中精力研究软件结构问题和设计问题,甚至可能开发出量化的工具来衡量软件结构的优劣,预测软件的可用性,建立真正的工程科学。唯有如此,软件构造这件事情才能够成为一件专业,专家们才能有时间架构起高高的壁垒,防止那些凭借《21天学会XXX》闯进软件开发领域的毛头小子利用一些新技术细节羞辱他们,让这个专业进入分工清晰、阶层分明的成熟阶段。
  
  
  在MDA层面的专家看来,如今爆发在J2EE.NET阵营之间的论战实在可怜。今天那些意气风发的论战者,那些把宝押在某一个千秋万代、唯我不败的平台上的幼稚的人,迟早会发现,要么是脚下的浮冰崩溃,要么是各个平台趋同,毫无区别可言。已经重复了无数次的悲剧,还将重演,只不过瑟瑟发抖的主体有所不同而已。
  
  
  MDA将是打破这一悲剧性宿命的一次尝试,它能成功吗?现在下结论还为时过早。
  
  
  反恐尚未成功,专家仍在努力。

31
May

给 donews blog的几点建议和一个问题

   Posted by: 不存在    in 未分类

建议:

1、  这个摘要功能能不能做成可选的,文章短的就不需要摘要了,太长的可以写摘要,现在这样不论正文多长一律有个摘要的版面实在太丑陋,也不方便阅读。

2、  增加blog通有的一些功能吧,例如日历、计数器什么的。

3、  多增加些页面模板,或是对模板的编辑功能。

 

问题:

文章多了为什么没有分页的导航?

31
May

我的blog 在google中的搜索结果

   Posted by: 不存在    in 未分类

前几天还是头版头条呢,现在竟然下降到第4 条了

31
May

donews的blog版本更新

   Posted by: 不存在    in 碎想录

昨天晚上本来还能看的blog突然莫名其妙的不能访问了,再后来竟然要用户名和口令,还要个域,我先晕了。反正怎么折腾都不能用了,心里想:难道这个donews 的blog要收费,幸亏免费blog server象卖D版盘的一样到处都有,大不了我搬家,可是在没有得到任何通知的情况下这么损失真的心有不甘啊。

今天到公司一试竟然又能用了,呵呵,我是以小人之心度人了,惭愧。不过这活干的还是不好,第一次post文章竟然出错,第二次依然报错,但是已经成功了,现在的程序都骗人。功能上没有什么改进,还有原来汉化的提示都没有了,又成了E文,倒是把“coming soon”换成了“此功能尚未提供”,真不知道升级了什么?

多了个系统分类,但不知道怎么显示出来。

31
May

最小化七宗罪(Seven)

   Posted by: 不存在    in 碎想录

    暴食   贪婪   懒惰  妒忌  愤怒   骄傲  淫欲
  GLUTTONY GREED SLOTH ENVY WRATH PRIDE LUST

看了这7个词,你肯定会想到布拉德·皮特那部有名的电影,会想到高智商犯罪,或许还会想到宗教。

这些都太有点远,有点大,我要说的是把这七个词最小化,收回目光看看我自己在生活中是不是有这些毛病。当仔细审视自己的时候还真的很可怕,比如懒惰、比如嫉妒、比如骄傲、比如贪婪、比如愤怒,在自己的内心还就真实的存在着。

暴食,从形式上是食量大,从表现上是肥胖,从内心看是太放纵自己的欲望,和淫欲在心理上没什么区别,都是毫无节制的对某种快感的追求。

7个词在讲什么,在规范我们的生活,在约束我们的没有方向的心。之所以注意它们,因为比较符合我一贯提倡的一句话:人要过简朴的生活。

28
May

关于架构(Architecture)

   Posted by: 不存在    in 碎想录

关于架构的说法,从大胖子那里抄来的:


构架-Architecture。构架是一种结构上的定义,它表达了软件结构中的元素、元素之间的联系、这些元素的外部可见性。这是抽象的结构,其不具有具体的功能化的用途,它只是规定了你应该按照一定的标准建立你的具有具体功能的程序。安构架的规定,你就可以建立自己的构件或者类似的结构,而在这个构架的基础上进行进一步的集成。同时构架应该足够的抽象,以使我们能够利用一个构架或者一组类似的构架去建立一系列的具体程序,也就是建立一个产品线。如此我们就可以将大量的面对具体的应用进行的编程,划分为针对构架的编程和针对具体应用的集成两个部分,从而使程序的成本和质量得到大面积的改进。这样建造程序的方法需要有高水准的人进行,而这些高水准的人建造的这些基于构架的产品成本和质量要大大优于那些普通的程序,其在竞争中占据绝对的优势。同时使用这样的生产方式,将不在需要大量的编码人员,而是需要大量的服务人员和业务人员。现在的大部分程序员将进行角色的转换,退出现在的生产一线。程序员这种职业将回到其高智力、高技术水准、高经验、高收入、高社会地位的位置,所谓的软件蓝领的叫嚣将被无情的终结。

 

前段时间公司招聘,期间有个MM打电话给我,她不是要找一份工作,是要找事情做。她介绍他们一批人是技术的狂热追求者,他们不能忍受公司的管理方式,都是自由职业者,在JAVA方面有他们自己成熟的架构,希望与我们合作,有项目的时候就帮助我们做架构,但不介入具体应用。当时我们的项目正需要有经验的开发人员,所以我对他们很感兴趣,但是不是要他们设计架构,是要他们进行开发。最后由于双方需求的分歧而没有合作,其实,处于中国这样的社会环境和软件开发现状,一个项目组的人员还没有把角色定位的很细、很明确,有时候要一个人干不同性质的工作。所以,单独出来做软件工程中的一个环节,观念有点超前,也还是有点难度的。

27
May

目录服务中LDAP的基本模型

   Posted by: 不存在    in tech

目录服务中LDAP的基本模型
  近几年,随着LDAP(Light Directory Access Protocol,轻量级目录访问协议)技术的兴起和应用领域的不断扩展,目录服务技术成为许多新型技术实现信息存储、管理和查询的首选方案,特别是在网络资源查找、用户访问控制与认证信息的查询、新型网络服务、网络安全、商务网的通用数据库服务和安全服务等方面,都需要应用目录服务技术来实现一个通用、完善、应用简单和可以扩展的系统。

目录服务的组成

  目录服务就是按照树状信息组织模式,实现信息管理和服务接口的一种方法。目录服务系统一般由两部分组成:第一部分是数据库,一种分布式的数据库,且拥有一个描述数据的规划;第二部分则是访问和处理数据库有关的详细的访问协议。

  目录服务与关系型数据库不同的是,目录不支持批量更新所需要的事务处理功能,目录一般只执行简单的更新操作,适合于进行大量数据的检索;目录具有广泛复制信息的能力,从而在缩短响应时间的同时,提高了可用性和可靠性。目前,目录服务技术的国际标准有两个,即较早的X.500标准和近年迅速发展的LDAP标准。

  X.500是一个协议族

  X.500实际上不是一个协议,它是由一个协议族组成:X.501模型强调目录服务基本模型和概念;X.509认证框架是如何在X.500中处理目录客户和服务器的认证;X.511 抽象服务定义X.500被要求提供的功能性服务;X.518 分布式操作过程表明如何跨越多台服务器处理目录服务;X.519 协议规范即是X.500协议,包括目录访问协议DAP、目录系统协议DSP、目录操作绑定协议DOP和目录信息Shadowing协议DISP;X.520 选定的属性类型要求是X.500自己使用的属性类型;X.521选定的对象类即为X.500自己使用的对象类;X.525复制是如何在目录服务器之间复制目录内容。

  在这些X.500标准中主要定义有多种内容。一个信息模型:确定目录中信息的格式和字符集,如何在项中表示目录信息(定义对象类、属性等模式);一个命名空间:确定对信息进行的组织和引用,如何组织和命名项——目录信息树DIT和层次命名模型;一个功能模型:确定可以在信息上执行的操作;一个认证框架:保证目录中信息的安全,如何实现目录中信息的授权保护——访问控制模型;一个分布操作模型:确定数据如何进行分布和如何对分布数据执行操作,如何将全局目录树划分为管理域进行管理——目录管理模型,客户端与服务器通信的协议—目录访问协议DAP,将用户请求在服务器之间进行链接所需的目录系统协议DSP,将选定的信息在服务器之间进行复制所需的目录信息映像协议DISP,用于自动在服务器之间协商连接配置的目录操作绑定协议DOP。

  X.500虽然是一个完整的目录服务协议,但在实际应用的过程中,却存在着不少障碍。由于目录访问协议DAP这种应用层协议是严格遵照复杂的ISO七层协议模型制定的,对相关层协议环境要求过多,主要运行在UNIX机器上,在许多小系统上,如PC和Macintosh上无法使用,因此没有多少人按照DAP开发应用程序,TCP/IP协议体系的普及,更使得这种协议越来越不适应需要。

  LDAP目录访问标准

  LDAP协议从1993年批准,产生了LDAP V1版本,随后于1997年发布了第三个版本LDAP V3,它的出现是LDAP协议发展的一个里程碑性标志,它使LDAP协议不仅仅作为X.500的简化版,同时提供了LDAP协议许多自有的特性,使LDAP协议功能更为完备,具有了更大的生命力。

  LDAP V3协议也不是一个协议,而是一个协议族。RFC 2251——LDAP V3核心协议,定义了LDAP V3协议的基本模型和基本操作;RFC 2252——定义了LDAP V3中的基本数据模式(Schema)(包括语法、匹配规则、属性类型和对象类)以及标准的系统数据模式;RFC 2253——定义了LDAP V3中的分辨名(DN)表达方式;RFC 2254——定义了LDAP V3中的过滤器的表达方式;RFC 2255——LDAP统一资源地址的格式;RFC 2256——在LDAP V3中使用X.500的Schema列表;RFC 2829——定义了LDAP V3中的认证方式;RFC 2830——定义了如何通过扩展使用TLS服务;RFC 1823——定义了C的LDAP客户端API开发接口;RFC 2847——定义了LDAP数据导入、导出文件接口LDIF。

  在这些协议中,主要定义了LDAP的内容,同时主要定义了一个信息模型:确定LDAP目录中信息的格式和字符集,如何表示目录信息(定义对象类、属性、匹配规则和语法等模式);一个命名空间:确定对信息进行的组织方式——目录信息树DIT,以DN和RDN为基础的命名方式,以及LDAP信息的Internet表示方式;一个功能模型:确定可以在信息上执行的操作的通讯协议以及在客户端进行这些操作的API接口;一个安全框架:保证目录中信息的安全,匿名、用户名/密码、SASL等多种认证方式,以及与TLS结合的通讯保护框架;一个分布式操作模型:基于Referral方式的分布式操作框架;一个LDAP扩展框架:基于控制和扩展操作的LDAP扩展框架 。

  但在LDAP协议中尚未定义通用的访问控制模型和复制协议(对应X.500的映射协议DISP),尽管不同的LDAP厂商均实现了自己的控制模型和复制机制,但是LDAP标准的发展正集中在访问控制模型、复制协议(DUP)以及扩展操作上,这些扩展操作包括查询的分页和排序、语言标签、动态目录、LDAP服务发现等。

LDAP四种基本模型

  信息模型:描述LDAP的信息表示方式

  在LDAP中信息以树状方式组织,在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值;LDAP中的信息模式,类似于面向对象的概念,在LDAP中每个条目必须属于某个或多个对象类(Object Class),每个Object Class由多个属性类型组成,每个属性类型有所对应的语法和匹配规则;对象类和属性类型的定义均可以使用继承的概念。每个条目创建时,必须定义所属的对象类,必须提供对象类中的必选属性类型的属性值,在LDAP中一个属性类型可以对应多个值。

  在LDAP中把对象类、属性类型、语法和匹配规则统称为Schema,在LDAP中有许多系统对象类、属性类型、语法和匹配规则,这些系统Schema在LDAP标准中进行了规定,同时不同的应用领域也定义了自己的Schema,同时用户在应用时,也可以根据需要自定义Schema。这有些类似于XML,除了XML标准中的XML定义外,每个行业都有自己标准的DTD或DOM定义,用户也可以自扩展;也如同XML,在LDAP中也鼓励用户尽量使用标准的Schema,以增强信息的互联互通。

  在Schema中最难理解的是匹配规则,这是LDAP中为了加快查询的速度,针对不同的数据类型,可以提供不同的匹配方法,如针对字符串类型的相等、模糊、大于小于均提供自己的匹配规则。

  命名模型:描述LDAP中的数据如何组织

  LDAP中的命名模型,也即LDAP中的条目定位方式。在LDAP中每个条目均有自己的DN和RDN。DN是该条目在整个树中的唯一名称标识,RDN是条目在父节点下的唯一名称标识,如同文件系统中,带路径的文件名就是DN,文件名就是RDN。

  功能模型:描述LDAP中的数据操作访问

  在LDAP中共有四类10种操作:查询类操作,如搜索、比较;更新类操作,如添加条目、删除条目、修改条目、修改条目名;认证类操作,如绑定、解绑定;其它操作,如放弃和扩展操作。除了扩展操作,另外9种是LDAP的标准操作;扩展操作是LDAP中为了增加新的功能,提供的一种标准的扩展框架,当前已经成为LDAP标准的扩展操作,有修改密码和StartTLS扩展,在新的RFC标准和草案中正在增加一些新的扩展操作,不同的LDAP厂商也均定义了自己的扩展操作。

  安全模型:描述LDAP中的安全机制

  LDAP中的安全模型主要通过身份认证、安全通道和访问控制来实现。

  身份认证 在LDAP中提供三种认证机制,即匿名、基本认证和SASL(Simple Authentication and Secure Layer)认证。匿名认证即不对用户进行认证,该方法仅对完全公开的方式适用;基本认证均是通过用户名和密码进行身份识别,又分为简单密码和摘要密码认证;SASL认证即LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证。

  通讯安全 在LDAP中提供了基于SSL/TLS的通讯安全保障。SSL/TLS是基于PKI信息安全技术,是目前Internet上广泛采用的安全服务。LDAP通过StartTLS方式启动TLS服务,可以提供通讯中的数据保密性、完整性保护;通过强制客户端证书认证的TLS服务,同时可以实现对客户端身份和服务器端身份的双向验证。

  访问控制 虽然LDAP目前并无访问控制的标准,但从一些草案中或是事实上LDAP产品的访问控制情况,我们不难看出:LDAP访问控制异常的灵活和丰富,在LDAP中是基于访问控制策略语句来实现访问控制的,这不同于现有的关系型数据库系统和应用系统,它是通过基于访问控制列表来实现的,无论是基于组模式或角色模式,都摆脱不了这种限制。

  在使用关系型数据库系统开发应用时,往往是通过几个固定的数据库用户名访问数据库。对于应用系统本身的访问控制,通常是需要建立专门的用户表,在应用系统内开发针对不同用户的访问控制授权代码,这样一旦访问控制策略变更时,往往需要代码进行变更。总之一句话,关系型数据库的应用中用户数据管理和数据库访问标识是分离的,复杂的数据访问控制需要通过应用来实现。

  而对于LDAP,用户数据管理和访问标识是一体的,应用不需要关心访问控制的实现。这是由于在LDAP中的访问控制语句是基于策略语句来实现的,无论是访问控制的数据对象,还是访问控制的主体对象,均是与这些对象在树中的位置和对象本身的数据特征相关。

  在LDAP中,可以把整个目录、目录的子树、制定条目、特定条目属性集或符合某过滤条件的条目作为控制对象进行授权;可以把特定用户、属于特定组或所有目录用户作为授权主体进行授权;最后,还可以定义对特定位置(例如IP地址或DNS名称)的访问权。

LDAP的应用

  由于LDAP所具有的查询效率高、树状的信息管理模式、分布式的部署框架以及灵活而细腻的访问控制,使LDAP广泛地应用于基础性、关键性信息的管理,如用户信息、网络资源信息等。LDAP的应用主要涉及几种类型。信息安全类:数字证书管理、授权管理、单点登录;科学计算类:DCE(Distributed Computing Envirionment,分布式计算环境)、UDDI (Universal Description,Discovery and Integration, 统一描述、发现和集成协议);网络资源管理类:MAIL系统、DNS系统、网络用户管理、电话号码簿;电子政务资源管理类:内网组织信息服务、电子政务目录体系、人口基础库、法人基础库。

  目前,LDAP已应用在北京大学校园网络用户管理系统、Novell的eProvision应用解决方案、上海公务网统一用户管理、中国数字图书馆系统的用户管理部分,以及北京、上海、天津、福建等省级CA等。

  某市公务网中的LDAP应用案例:在该市公务网中具有三个LDAP服务器,一个LDAP服务器为公务网项目中CA的主,一个LDAP服务器为公务网项目中CA的从,第三个目录服务器存储有上海公务网中的所有用户信息。在该系统中建立了一个基于Web方式的用户管理系统,各个局维护自己的数据,CA系统中的用户信息以及办公自动化系统、电子邮件系统、授权管理系统、共享资源管理系统,通过RMI接口实现与用户组织树目录服务系统中信息的同步。

X.500与LDAP的比较分析

  从目录服务技术的发展来看,LDAP标准实际上是在X.500标准基础上产生的一个简化版本,两者之间的关系与那种为解决同一个问题出现的两个独立发展的技术有很大的不同之处,因此需要在此基础上对这两个标准进行理解和分析。

  首先,作为IETF(Internet Engineering Task Force)一个正式的标准,LDAP是X.500标准中的目录访问协议DAP的一个子集,可用于建立X.500目录。因此这两个目录服务技术标准有着许多的共同之处,即在平台上,都实现了一个通用的平台结构,提供了一个操作系统和应用程序需要的信息服务类型,可以被许多平台和应用程序接收和实现;在信息模型上,都使用了项、对象类、属性等概念和模式来描述信息;在命名空间方面,都使用了目录信息树结构和层次命名模型;在功能模型上,都使用了相似的操作命令来管理目录信息;在认证框架方面,都可以实现用户名称和密码,或者基于安全加密方式的认证机制;在灵活性上,它们的目录规模都可大可小,大到全球目录树,小到只有一台目录服务器;在分布性方面,目录信息都可以分布在多个目录服务器中,这些服务器可以由各组织管理,既保证了目录信息总体结构一致性,又满足了分级管理的需要。

  LDAP与X.500的DAP相同之处是,LDAP也是被设计用来从分层目录中提取信息。但与之不同的是,为保持网络的带宽,LDAP对来自X.500目录询问的应答次数加以限制。最初LDAP只是一种访问X.500目录的简单方法,是X.500的功能子集,但随着它的成熟和独立发展,已经增加了许多在X.500中没有的新特性。现在的LDAP既可以为X.500目录服务提供一个轻型前端,也可以实现一个独立的目录服务。

  LDAP的独特之处

  首先,AP(Access Protocol)既是一个X.500的访问协议,又是一个灵活的可以独立实现的目录系统。

  其次,DAP(Directory Access Protocol)基于Internet协议,X.500基于OSI(开放式系统互联)协议:建立在应用层上的X.500 目录访问协议DAP,需要在OSI会话层和表示层上进行许多的建立连接和包处理的任务,需要特殊的网络软件实现对网络的访问;LDAP则直接运行在更简单和更通用的TCP/IP或其它可靠的传输协议层上,避免了在OSI会话和表示层的开销,使连接的建立和包的处理更简单、更快,对于互联网和企业网应用更理想。

  再者,LDAP协议更为简单:LDAP继承了X.500最好的特性,同时去掉了它的复杂性。LDAP通过使用查找操作实现列表操作和读操作,另一方面省去了X.500中深奥的和很少使用的服务控制和安全特性,只保留常用的特性,简化了LDAP的实现。

  其它,LDAP通过引用机制实现分布式访问:X.500 DSA通过服务器之间的链操作实现分布式的访问,这样查询的压力集中于服务器端;而LDAP通过客户端API实现分布式操作(对于应用透明)平衡了负载;

  最后,LDAP实现具有低费用、易配置和易管理的特点。经过性能测试,LDAP比X.500具有更少的响应时间;LDAP提供了满足应用程序对目录服务所需求的特性。

26
May

人月神话的封面图

   Posted by: 不存在    in 未分类

刚下了《人月神话》的pdf版,准备好好拜读,看到封面图很有意思,但是没明白什么意思,想贴出来。



————————————————————————–


知道了一个寓意:软件工程就是泥潭中的怪兽

26
May

忙里偷闲逛万圣

   Posted by: 不存在    in 碎想录

    提起北京的书店,万圣书园也是一个响当当的名字。在文科书店里面一个是风入松,一个就是万圣书园了。风入松在北大南门,从门口进去要下到地下一层,走过长长的走廊,才入得店门;万圣书园在清华南门,也临街,进门后要上到二层才是书店的主体。


 


    以前的工作地方离风入松近,偶尔逛逛,现在工作的地方又离万圣近,早就想去看看可是一直没有空余的时间,只隔着窗户看。其实和万圣还真有缘,第一次去是90年代的事情了,那时候骑辆自行车满北京的钻小胡同去找好玩的地方,万圣就是这么被我发现的。2000年的时候要找一本书,跑了很多地方都找不到,从网上给万圣发了封email,本来也没抱什么希望的,可是很快就收到了回信,一直不能忘记这件事情。现在离她那么近,竟然一直不去看看,心中总有一丝愧意。


 


    今天也不是什么特别的日子,手头依然有很多事情要做,吃完午饭后去银行办事,路过万圣门口,心想不管什么事情了,今天一定要看看。一层摆的都是特价书,面积也小,我进去的时候没有人在一层看书,随便浏览了一下我就沿着楼梯上二楼,沿楼梯左手边都摆着推荐的精品书,还是直接上去。二楼面积很大,不过站在楼梯口是看不出来的,正对着楼梯口的是一个类似咖啡厅的场所,时间关系没有进去确认,向左走就是图书区了,进来就是禅宗方面的书,我长时间的翻看。后来还是想先熟悉一下地形,于是整个走了一圈,基本了解了书的组织形式和摆放位置。


 


   虽然是匆匆的看了看,还是 发现了很多想看的书,不过现在的书价真的好贵,有时间我会经常来读。万圣,等着我!

25
May

大话量子力学

   Posted by: 不存在    in science

花花公子德布罗意: 一页纸多一点的博士论文拿到诺奖
在这里想讲一个故事。
  
讲故事之前自然总要为故事取一个名字,而我的这个故事的名字就叫做“大话量子力学”。
  
“大话”者,典自于“大话西游”也。   何为?盖因此故事之于正史颇似“ 大话西游”之于“西游记”。
  
所不同者,“大话西游”与“西游记”皆为虚妄,只有正统与无厘头之分,而我的故事却更接近于真正的历史。

故事发生在二十世纪初的法国。
  
巴黎。
  
一样的延续着千百年的灯红酒绿,香榭丽舍大道上散发着繁华和暧昧,红磨坊里弥漫着躁动与彷徨。
  
而在此时的巴黎,有一个年轻人,名字叫做德布罗意(De Broglie),从他的名字当中可以看出这是一个贵族,事实上德布罗意的父亲正是法国的一个伯爵,并且是正是一位当权的内阁部长。这样一个不愁吃不愁穿只是成天愁着如何打发时光的花花公子自然要找一个能消耗精力的东西来磨蹭掉那些无聊的日子(其实象他这样的花花公子大约都会面临这样的问题)
  
德布罗意则找到了一个很酷的“事业”——研究中世纪史。据说是因为中世纪史中有着很多神秘的东西吸引着这位年轻人。  
  
时间一转就到了1919,这是一个科学界急剧动荡动着的年代。就在这一年,德布罗意突然移情别恋对物理产生了兴趣,尤其是感兴趣于当时正流行的量子论。
  
具体来说就是感兴趣于一个在当时很酷的观点:光具有粒子性。
  
这一观点早在十几年前由普朗克提出,而后被爱因斯坦用来解释了光电效应,但即便如此,也非常不见容于物理学界各大门派。   德布罗意倒并不见得对这一观点的物理思想有多了解,也许他的理解也仅仅就是理解到这个观点是在说“波就是粒子”。

  
或许是一时冲动,或许是因为年轻而摆酷,德布罗意来到了一派宗师朗之万门 下读研究生。  
  
  从此,德布罗意走出了一道足以让让任何传奇都黯然失色的人生轨迹。

历史上德布罗意到底花了多少精力去读他的研究生也许已经很难说清,事实上德布罗意在他的5年研究生生涯中几乎是一事无成。事实上也可以想象,一个此前对物理一 窍不通的中世纪史爱好者很难真正的在物理上去做些什么。

白驹过隙般的五年转眼就过去了,德布罗意开始要为他的博士论文发愁了。
  
其实德布罗意大约只是明白普朗克爱因斯坦那帮家伙一直在说什么波就是粒子,(事实上对于普朗克大约不能用“一直”二字,此时的普朗克已经完全抛弃自己当初的量子假设,又回到了经典的就框架。)而真正其中包含的物理,他能理解多少大约只有上 帝清楚。
  
五年的尽头,也就是在1924,德布罗意终于提交了自己的博士论文。 他的博士论文只有一页纸多一点,不过可以猜想这一页多一点的一份论文大约已经让德布罗意很头疼了,只可惜当时没有枪手可以雇来帮忙写博士论文。
  
他的博士论文只是说了一个猜想,既然波可以是粒子,那么反过来粒子也可以 是波。
  
而进一步德布罗意提出波的波矢和角频率与粒子动量和能量的关系是:
      动量=普朗克常数/波矢
      能量=普朗克常数*角频率
      这就是他的论文里提出的两个公式
  
而这两个公式的提出也完全是因为在爱因斯坦解释光电效应的时候提出光子的动量和能量与光的参数满足这一关系。

可以想象这样一个博士论文会得到怎样的回应。
  
在对论文是否通过的投票之前,德布罗意的老板朗之万就事先得知论文评审委员会的六位教授中有三位已明确表态会投反对票。
  
本来在欧洲,一个学生苦读数年都拿不到学位是件很正常的事情,时至今日的欧洲也依然如此。何况德布罗意本来就是这么一个来混日子的的花花公子。
  
然而这次偏偏又有些不一样——德布罗意的父亲又是一位权高望众的内阁部长,而德布罗意在此厮混五年最后连一个Ph.D都没拿到,双方面子上自然也有些挂不住。
  
情急之中,朗之万往他的一个好朋友那里寄了一封信。
  
当初的朗之万是不是碍于情面想帮德布罗意混得一个PhD已不得而知,然而事实 上,这一封信却改变了科学发展的轨迹。
 

这封信的收信人
 
是爱因斯坦。

信的内容大致如下:

尊敬的爱因斯坦阁下:
在我这里有一位研究生,已经攻读了五年的博士学位,如今即将毕业,在他提 交的毕业论文中有一些新的想法………………
  
请对他的论文作出您的评价。
  
另外顺便向您提及,该研究生的父亲是弊国的一位伯爵,内阁的**部长,若您……,将来您来法国定会受到隆重的接待

                                 朗之万

在信中,大约朗之万的潜台词似乎就是如果您不肯给个面子,呵呵,以后就甭来法国了。

不知是出于知趣呢,还是出于当年自己的离经叛道而产生的惺惺相惜,爱因斯坦很客气回了一封信,大意是该论文里有一些很新很有趣的思想云云。

此时的爱因斯坦虽不属于任何名门望派,却已独步于江湖,颇有威望。有了爱因斯坦的这一封信,评审委员会的几位教授也不好再多说些什么了。

于是,皆大欢喜。
  
浪荡子弟德布罗意就这样“攻读”下了他的PhD(博士)。
  
而按照当时欧洲的学术传统,朗之万则将德布罗意的博士论文印成若干份分寄到了欧洲各大学的物理系。
  
大约所有人都以为事情会就此了结,多少年以后德布罗意那篇“很新很有趣” 博士论文也就被埋藏到了档案堆里了。
  
德布罗意大约也就从此以一个PhD的身份继续自己的浪荡生活。。

但历史总是喜欢用偶然来开一些玩笑,而这种玩笑中往往也就顺带着改变了许多人的命运。

在朗之万寄出的博士论文中,有一份来到了维也纳大学。

1926年初。
  
维也纳。
  
当时在维也纳大学主持物理学术活动的教授是德拜,他收到这份博士论文后,将它交给了他的组里面一位已经年届中年的讲师。
  
这位讲师接到的任务是在两周后的seminar(学术例会)上将该博士论讲一下。
  
这位“老”讲师大约早已适应了他现在这种不知算是平庸还是算是平静的生活,可以想象,一个已到不惑之年而仍然只在讲师的位置上晃荡的人,其学术前途自然是朦 胧而晦暗。 而大约也正因为这位讲师的这种地位才使得它可以获得这个任务,因为德拜将任务交给这位讲师时的理由正是“你现在研究的问题不很重要,不如给我们讲讲德布罗意的论文吧”。
  
这位讲师的名字叫做——薛定谔(Schrodinger)

在接下来的两周里,薛定谔仔细的读了一下德布罗意的“博士论文”,其实从 内容上来讲也许根本就用不上“仔细”二字,德布罗意的这篇论文只不过一页纸多一点,通篇提出的式子也不过就两个而已,并且其原型是已经在爱因斯坦发表的论文中出现过的 。
  
然而论文里说的话却让薛定谔一头雾水,薛定谔只知道德布罗意大讲了一通“ 波即粒子,粒子即波”,除此之外则是“两个黄鹂鸣翠柳“——不知所云。
  
两周之后,薛定谔硬着头皮把这篇论文的内容在seminar上讲了一下,讲者不懂 ,听者自然也是云里雾里,而老板德拜则做了一个客气的评价:
  
“这个年轻人的观点还是有些新颖的东西的,虽然显得很孩子气,当然也许他需要更深入一步,比如既然提到波的概念,那么总该有一个波动方程吧”
  
多年以后有人问德拜是否后悔自己当初作出的这一个评论,德拜自我解嘲的说“你不觉得这是一个很好的评论吗?”
  
并且,德拜建议薛定谔做一做这个工作,在两周以后的seminar上再讲一下。

两周以后。
  
薛定谔再次在seminar上讲解德布罗意的论文,并且为德布罗意的“波”找了一个波动方程。
  
这个方程就是“薛定谔方程”!
  
当然,一开始德布罗意的那篇论文就已经认为是垃圾,而从垃圾产生出来的自然也不会离垃圾太远,于是没人真正把这个硬生生给德布罗意的“波”套上的方程当一回事,甚至还有人顺口编了一首打油诗讽刺薛定谔的方程:
  
欧文用他的psi,计算起来真灵通:但psi真正代表什么,没人能够说 得清。  
(欧文就是薛定谔,psi是薛定谔波动方程中的一个变量)

故事的情节好像又一次的要归于平庸了,然而平庸偏偏有时候就成了奇迹的理由。
  
大约正是薛定谔的“平庸”使得它对自己的这个波动方程的平庸有些心有不甘,他决定再在这个方程中撞一撞运气。

上面讲到的情节放到当时的大环境中来看就好像是湖水下的一场大地震——从湖面上看来却是风平浪静。
  
下面请允许我暂时停止对“老”讲师薛定谔的追踪,而回过头来看一看这两年 发生物理学界这个大湖表面的风浪。
  
此前,玻尔由普朗克和爱因斯坦的理论的启发提出了著名的“三部曲”,解释 了氢光谱,在这十几年的发展当中,由玻尔掌门的哥本哈根学派已然是量子理论界的“少 林武当”。
  
1925,玻尔的得意弟子海森堡提出了著名的矩阵力学,进一步抛弃经典概念,揭示量子图像,精确的解释了许多现象,已经成为哥本哈根学派的镇门之宝——量子届的 “屠龙宝刀”。不过在当时懂矩阵的物理学家没有几个,所以矩阵力学的影响力仍然有限 。事实上就是海森堡本人也并不懂“矩阵”,而只是在他的理论出炉之后哥本哈根学派的 另一位弟子玻恩告诉海森堡他用的东西在数学中就是矩阵。

再回过头来再关注一下我们那个生活风平浪静的老讲师薛定谔在干些什么—— 我指的是在薛定谔讲解他的波动方程之后的两个星期里。
  
事实上此时的他正浸在温柔乡中——带着他的情妇在维也纳的某个滑雪场滑雪。
  
不知道是宜人的风景还是身边的温香软玉,总之是冥冥之中有某种东西,给了 薛定谔一个灵感,而就是这一个灵感,改变了物理学发展的轨迹。

薛定谔从他的方程中得出了玻尔的氢原子理论!

倚天一出,天下大惊。
  
从此谁也不敢再把薛定谔的波动方程当成nonsense(扯淡)了。
  
哥本哈根学派的掌门人玻尔更是大为惊诧,于是将薛定谔请到哥本哈根,详细切磋量子之精妙。
  
然而让玻尔遗憾的是,在十天的漫长“切磋”中,两个人根本都不懂对方在说些什么。在一场让两个人都疲惫不堪却又毫无结果的“哥本哈根论剑”之后,薛定谔回到了维也纳,
  
薛定谔回到了维也纳之后仍然继续做了一工作,他证明了海森堡的矩阵力学和他的波动方程表述的量子论其实只是不同的描述方式。
  
从此“倚天”“屠龙”合而为一。
  
此后,薛定谔虽也试图从更基本的假设出发导出更基本的方程,但终究没有成 功,而不久,他也对这个失去了兴趣,转而去研究“生命是什么”。

历史则继续着演义他的历史喜剧。
  
德布罗意,薛定谔都在这场喜剧中成为诺奖得主而名垂青史。

尾声

其实在这一段让人啼笑皆非的历史当中,上帝还是保留了某种公正的。薛定谔 得出它的波动方程仅在海森堡的矩阵力学的的诞生一年之后,倘若上帝把这个玩笑开得更大一点,让薛定谔在1925年之前就导出薛定谔方程,那恐怕矩阵力学就根本不可能诞生了(波动方程也就是偏微分方程的理论是为大多数物理学家所熟悉的,而矩阵在当时则没有 多少人懂)。如此则此前在量子领域已辛苦奋斗了十几年的哥本哈根学派就真要吐血了!
  
薛定谔方程虽然搞出了这么一个波动方程,却并不能真正理解这个方程精髓之处,而对它的方程给出了一个错误的解释——也许命中注定不该属于他的东西终究就不会让他得到。对薛定谔方程的正确解释是有哥本哈根学派的玻恩作出的。(当然玻恩的解释也让物理界另一位大师——爱因斯坦极为震怒,至死也念念不忘“上帝不会用掷色子来决定这个世界的”,此为后话)。
  
更基本的量子力学方程,也就是薛定谔试图获得但终究无力企及的的基本理论 ,则是由根本哈根学派的另一位少壮派弟子——狄拉克导出的,而狄拉克则最终领袖群伦,建起了了量子力学的神殿。