Showing posts with label 技术 [ Technology ]. Show all posts
Showing posts with label 技术 [ Technology ]. Show all posts

Sep 9, 2008

你如何选择技术类图书?

    当你想学一门编程语言,一种软件设计方法,一种设计思想的时候,如何选择合适的、通俗易懂的、能高效阅读的书呢?面对书架上玲琅满目的同类书籍,是否有些眼花,是否选书是比较耗时间的事情?今天谈一谈我选书的经历。

    我个人选书的标准是:经典的>获奖的> 国外的>畅销的>国内的。这个标准其实很有问题,度量标准就不一样。事实上,通常经典的=获奖的=国外的=畅销的。这里没有鄙视国内作者的意 思,现实就是这样。国内也有些的很好的书,但相比老外的,实在是少的很。

    有了大概的标准,怎么选书呢?豆瓣!豆瓣确实是个好东西。去搜吧,搜出一箩筐来。

    首先看介绍。凡是有“经典”、“奖”、“畅销”字样的介绍,都要重点考虑。还有就是看版本,发行的版本越高,那就是越经典了。通过介绍,来了解这本书是否适合自己的水平,不要选个高深的来做入门教材,那效果可不好。

    然后就是看读者评价。通常的评价是关于内容和翻译的。对于个别人关于翻译的评价,个人觉得不要太在意,每个人的阅读水平不同。当然,如果一致评价翻译的太差,那建议找原版的,只要你的E文够好。对于内容的评价也要重视,这是对图书介绍很好的补充,也许你就能从内容评价中找到自己想要的重点。这里有一点,所有网上书店也有评价系统,但那些评价里,托儿比较多,还是豆瓣实在。

    接下来呢,找一张纸,抄下你要的书,去书店吧。实际看一看,内容是否真的符合自己的需要,翻译的水平如何。当然,如果你没时间,如果你对前面的了解很有把握,这一步可以省略。实际看书的时候,注意一下封底的推荐,老外的书都有一些大牛的推荐语录,国内现在也流行,看看那些大牛的推荐,也很有参考价值。

    买书嘛,建议还是网上买,就图个便宜。就到豆瓣上去看吧,个人喜欢卓越。

    以上是我个人的选书过程。下面介绍一下JOLT。JOLT大奖,号称软件业的奥斯卡,呵呵。以下摘字百度知道:


“Jolt 大奖素有“软件业界的奥斯卡”之美誉,共设通用类图书、技术类图书、语言和开发环境、框架库和组件、开发者网站等十余个分类,每个分类设有一个“ 震撼奖”(Jolt Award)和三个“生产力奖”(Productivity Award)。一项技术产品只有在获得了Jolt奖之后才能真正成为行业的主流,一本技术书籍只有在获得了Jolt奖之后才能真正奠定经典的地位。赞助商 Jolt可乐的广告词是“震撼全世界”,Jolt奖就让我们看到,是谁在震撼着我们今天的世界。虽然Jolt并不起决定作用,但代表了某种技术趋势与潮流.”

    看到JOLT这个关键字,你得高度重视哦。 大家熟知的《About Face》和《CSS实战手册》,就是获奖书目。CSDN读书频道有相关专题。大家都属于IT人士,所以里面很多书是值得好好读的。个人感觉面向对象的分析与设计、UML,是应该好好学习的,除了可以帮助你开发出好的软件,更重要的是,这所提出的分析问题的思维方式,而不仅仅是为写软件。

    你在选书方面有什么心得体会呢,欢迎交流^o^

Read more...

Apr 17, 2008

[转]RIA技术概览

《程序员》杂志05年第二期原文,个人网站转载请注明作者(王林/Azure)和出处(中国RIA开发者www.riacn.com)并且保留这段版权说明,商业网站转载需要得到CSDN的许可。


RIA技术概览

    互联网已经日益成为应用程序开发的默认平台,传统的Web应用程序(Web Application)是基于HTML页面、服务器端数据传递的模式。而HTML是适合于文本的,随着Web应用程序复杂性越来越高,传统的Web应用程序已经渐渐不能满足Web浏览者更高的、全方位的体验要求了,这就是被Macromedia公司称之为的"体验问题"("Experience Matters")。此时一种被称为Rich Internet Application(简称RIA,中文翻译作"丰富互联网应用程序")的具高度互动性和丰富用户体验的网络应用程序出现了。Macromedia公司也借此机会开发了相关的技术和开发工具,促进RIA的开发和普及。

    1. RIA的产生背景

    企业级应用程序经历了几次系统架构方面的重要转变,在此过程中,客户端的表现能力有起有落。图1显示了Rich Internet Application的发展过程:


图1.Rich Internet Application的发展(摘自Macromedia Flex:创建企业Rich Internet
Application 的表示层解决方案)
    • 基于主机的应用程序:应用程序提供基于文本的非图形化用户界面,只有内部人员才能进行访问。
    • 客户机/服务器(Client/Server,简称C/S)应用程序:二十世纪九十年代随着Windows的出现和客户端处理能力的增强,出现了客户机/服务器应用程序,它们采用图形用户界面,客户端的数据处理能力比较强。但由于客户端应用程序需要进行不断的更新,因此部署成本比较高,只能为少数人所使用。
    • 浏览器/服务器(Browser/Server,简称B/S)应用程序:九十年代中期,互联网飞速发展,出现了浏览器/服务器应用程序,Web的广泛使用解决了C/S应用程序部署、和更新的困难。但由于采用了HTML页面形式的用户界面,客户端的数据处理能力较C/S应用程序有所回落。
        C/S架构的缺点主要是部署、更新的问题。B/S架构的缺点主要是受制于HTML的限制,无法像C/S那样使用丰富的效果来展示数据,用户体验比较糟糕。另外,稳定的客户端/服务器连接,也是必要条件,网络中断将使B/S程序无法运行。从C/S到B/S,这两者受限于技术本身分别发展成了重客户端和重服务器端的模式,而RIA的出现给我们带来重新在客户端和服务器端进行更好的平衡的机会。

        2. 什么是RIA

        RIA 是集桌面应用程序的最佳用户界面功能与Web应用程序的普遍采用和快速、低成本布署以及互动多媒体通信的实时快捷于一体的新一代网络应用程序。RIA中的 Rich Client(丰富客户端)提供可承载已编译客户端应用程序(以文件形式,用HTTP传递)的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型,这种模型由采用的Web服务所驱动。结合了声音、视频和实时对话的综合通信技术使RIA具有前所未有的网上用户体验。

        下图就是RIA的应用程序模型:


    图2.RIA的应用程序模型

        3. RIA的优势

        RIA 具有的桌面应用程序的特点包括:在消息确认和格式编排方面提供互动用户界面;在无刷新页面之下提供快捷的界面响应时间;提供通用的用户界面特性如拖放式(drag and drop)以及在线和离线操作能力。RIA具有的Web应用程序的特点包括如:立即布署、跨平台、采用逐步下载来检索内容和数据以及可以充分利用被广泛采纳的互联网标准。RIA具有通信的特点则包括实时互动的声音和图像。

        客户机在RIA中的作用不仅是展示页面,它可以在幕后与用户请求异步地进行计算、传送和检索数据、显示集成的用户界面和综合使用声音和图像,这一切都可以在不依靠客户机连接的服务器或后端的情况下进行。

        对于企业来说,部署RIA的好处在于:

        1)RIA可以继续使用现有的应用程序模型(包括J2EE和.NET),因而无需大规模替换现有的Web应用程序。通过Rich Client技术,可以轻松构建更为直观、易于使用、反应更迅速并且可以脱机使用的应用程序。

        2)RIA可以帮助企业提供多元化的重要业务效益,包括产提高销量、提高品牌忠诚度、延长网站逗留时间、较频繁的重复访问、减少带宽成本、减少支持求助以及增强客户关系等。

        4. RIA目前的发展态势

        在过去的两到三年中,Web开发人员一直是想构建一种比传统HTML更丰富的客户端:这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。RIA技术的出现允许我们在因特网上以一种像使用Web一样简单的方式来部署富客户端程序。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用C/S架构的胖客户端技术运行复杂应用系统的机构和采用基于B/S架构的瘦客户端技术部署Web应用系统地机构来说,RIA确实提供了一种廉价的选择。下面介绍一下目前出现的几种比较有实力或者有特点的RIA客户端开发技术:

        1) Macromedia Flash/Flex
        Flash 从6.0开始Flash就逐步具备建立窗体风格的应用程序的功能。据Macromedia称已经有98%以上的桌面系统的浏览器都安装了 Macromedia Flash Player。这使得以Macromedia Flash Player为客户端的RIA可以支持种类广泛的平台和设备。
    Flex是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,它可以运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的基于XML的MXML来定义丰富的用户界面。该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在Flash Player中运行。

        2) Laszlo
        Laszlo 是一个开源的RIA开发环境。使用Laszlo平台时,开发者只需编写名为LZX的描述语言(其中整合了XML和Javascript),运行在J2EE 应用服务器上的Laszlo平台会将其编译成SWF格式的文件并传输给客户端展示。从这点上来说,Laszlo的本质和Flex是一样的。Flash是任何浏览器都支持的展示形式,从而一举解决了浏览器之间的移植问题。而且,在未来的计划中,Laszlo还可以将LZX编译成Java或.NET本地代码,从而大大提高运行效率。

        3) Avalon
        Microsoft的Avalon是下一版本的 Windows(代号"Longhorn")的一部分,是一个图形和展示引擎,主要由新加到.NET框架中的一组类集合而成。Avalon定义了一个在 Longhorn中使用的新标记语言,其代号为"XAML"(可扩展应用程序标记语言)。可以使用XAML来定义文本、图像和控件的布局,程序代码可以直接嵌入到XAML中,也可以将它保留在一个单独的文件内。这与Flex中的MXML或者Laszlo中的LZX非常相似。不同的是:基于 Avalon的应用程序必须运行在Longhorn环境中,而Flex和Laszlo是不依赖于平台的,仅仅需要装有Flash播放器的浏览器即可。

        4) Java SWT
        Java 已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于 Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API:一个非常完整且非常复杂的图形API。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立Rich Client的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)和Java浏览器插件的低市场占有率。

        5) XUL
        XUL (念作"zool")是一种基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其它XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。

        6) Bindows
        Bindow 是用Javascript和DHTML开发的Web窗体框架。Javascript用于客户端界面的显示和处理,XMLHTTP用于客户端与服务器的信息传输。Javascript在客户端的表现力不容置疑,利用Javascript几乎可以实现Windows应用程序所能干的大部分事情,XMLHTTP 一直以来常被用于实现"无刷新"的Web页面,它和 Javascript配合,可以完成数据从服务器和客户端的传输。Bindows的一个主要的缺点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。这点Bindows根本没有遵循"用多少去多少"的准则。另外,内部大量利用了IE6 的技术,没有考虑到非IE的浏览器,限制了Bindows的流行。

        5. RIA未来的发展预测

        就目前RIA的使用情况来说,离"RIA时代"还有很远的一段距离。今后几年时间内传统的Web应用程序和RIA将会共存。笔者认为真正具有实力担当起普及丰富客户端应用重任的只有基于Flash Player的Flash/Flex应用程序和Microsoft的基于Avalon的应用程序。短期时间内(估计2-3年时间)可能是 Flash/Flex应用程序在新兴的网络应用程序市场上占有主导地位。随着时间的推移,Flash/Flex应用程序的市场占有率可能会慢慢被基于 Avalon的应用程序所蚕食。当然,Flash Player和Flex以后也会不断推出新版本,相对于升级操作系统或安装Avalon运行环境,人们肯定更愿意升级Flash Player。Flash/Flex应用程序也有其本身固有的软肋,Flash Player的执行效率和对本地资源的操作限制是无法和Avalon相比的,相对于浏览器中的插件而言,Avalon的应用程序拥有更加广阔的可操作空间和更高的执行效率。

        目前Microsoft还在推广一种叫做Smart Client(智能客户端)的客户端程序技术,Microsoft称Smart Client是比Rich Client更优秀的客户端,因而采用Smart Client的应用程序算不算RIA目前我个人还无法作答。这里我们之所以提及Smart Client,是因为Smart Client的特性跟我们谈的Rich Client有太多的相似之处。Smart Client拥有自动更新、离线状态下的数据处理和可以使用本地资源等特征,其中的可使用本地资源这一项无疑是一大卖点,因为浏览器中的 Flash/Flex应用程序目前还无法操作本地的一些资源,比如Flash/Flex应用程序无法将网上的文件保存到本地或者修改本地文件。虽然 Macromedia的Central1.5已经可以对本地文件进行简单的操作,并且flex1.5开发的RIA也能够运行于Central上,但是如何使Central能够得到大范围推广还是个问题。相对于轻量级的Rich Client,Smart Client更接近C/S架构中的客户端程序。Rich Client和Smart Client的定位还是有所区别的:Rich Client更适合作为轻量级的基于浏览器的网络应用程序客户端;Smart Client更适合作为Windows桌面应用程序的智能客户端。

        不管我们今天称之为的RIA今后会不会成为主流应用程序,人们对开发具有高度互动性、丰富用户体验以及功能强大的客户端的追求是不变的。有理由相信,拥有成熟技术和极高市场占有率的Flash客户端将会在RIA道路上越走越远。Microsoft未来的重量级武器:Avalon和Smart Client能否后来者居上让我们拭目以待。

    Read more...

    Jan 16, 2008

    学习从HTML过渡到XHTML

    XHTML使用XML的特性来定义和HTML 4.01标准几乎完全相同的标记语言。XHTML比HTML使用起来框框要多很多。

    大多数情况下,创建XHTML文档和创建HTML文档没有什么区别。要创建XHTML文档,需要做和知道下面几件事情。

    1、声明文档类型

    为了能让XHTML浏览器可以正确地解析和显示XHTML文档,XHTML文档首先要声明文档类型,告诉浏览器创建文档所使用的XML版本。然后说明在文档中定义元素的XHTML DTD的版本。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    这里使用的是过渡版的DTD。可以声明为严格版的DTD和过度版的DTD。

    2、理解名称空间

    XML DTD定义了任意数量的元素和属性名称。这些元素和属性名称都存储在DTD唯一的名称空间(namespace)中。浏览器在读取和解释文档时,会在名称空间中寻找这些元素和属性的使用方法,这样才能正确解释。

    XML可以使用多个DTD,因此需要多个名称空间。在创建过渡版本的HTML文档时,如果要同时包含其他符合XML的元素,就要声明其他的名称空间。使用 xmlns(XML namespace的缩写)属性来定义一个或多个可供选择的名称空间。

    XHTML文档中至少应该包含一个xmlns属性,以指定整个文档所使用的主要名称空间。
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    如果要定义其他名称空间,比如需要使用数学标记,可以再次使用xmlns来定义。
    <html xmlns="http://www.w3.org/1998/Math/MathML>x2/X</div">
    
    这种情况下,与XML兼容的浏览器会使用http://www.w3.org/1998/Math/MathML名称空间来判断

    标签是依据MATH版本来显示成除法等式,还一句XHTML版本来解释为层。

    如果在每次都要显示为除法等式,那这样的xmlns定义效率就低了。更好的方法是在文档的开始处确定和标注名称空间,然后在需要改变的元素前标注一个前缀来调用。如:
    <html xmlns:math="http://www.w3.org/1998/Math/MathML">
    
    现在math命名空间可以在随后的文档中简写成“math”,如:
    <math: div>x2/X</div>
    
    绝大多数XHTML文档都不需要定义多个名称空间,但应该知道和理解存在着多个名称空间。

    3、XHTML比HTML严格之处

    XHTML和HTML的最大区别是,XHTML格式良好。

    3.1 正确地嵌套元素

    就是必须按照打开标记元素的顺序关闭他们。这个很容易理解,不多解释。

    XHTML有一个嵌套限制,如下:

    <a>标签不能包含其他<a>标签。

    <pre> 标签不能包含<img>、<object>、<big>、<small>、<sub> 或<sup>标签。

    <button> 标签不能包含<input>、<select>、<textarea>、< label>、<button>、<form>、<fieldset>、<iframe> 或 <isindex>标签。

    <label>标签不能包含其他<label>标签。

    <form>标签不能包含其他<form>标签。

    3.2 结束标签

    就是每个宝航其他标签或内容的标签都必须有对景的结束标签。这个也很容易理解,不多解释。

    3.3 处理空元素

    对于空白标签使用空格加斜杠的格式来表示,如<br />。这个也很容易理解,不多解释。

    3.4 区分大小写

    XHTML严格区分大小写,使用小写字母定义所有的HTML标签和属性。其他大写或混写标签和属性都不符合规范。

    3.5 引用的属性值

    所有属性值必须加上双引号。

    3.6 明确的属性值

    在XHTML中,每个属性都必须有一个值。没有只的属性必须使用自己的名称作为值。例如checked=”checked”。

    3.7 处理特殊字符

    对于在文章的Javascript和CSS声明中使用的< 和&字符,XHTML要严格的多。因为XML浏览器会简单地删除掉文档中所有<!--和-->中的注释内容,所以隐藏的焦痕和样式表将被删除。虽然可以将脚本放在CDATA中,但旧的浏览器不认识,也会将脚本忽略。所以推荐将脚本和样式保留在外部文件中,然后在文档中使用适当的外部链接来调用他们。

    此外,在XHTML中,属性值中的特殊字符一定要用对应的实体。例如&一定要写成&。大于号和小于号一定要写成<和>等。

    3.8 id和name属性

    id和name属性都用来允许为文档中的任何元素关联一个标识符,以便可以被超链接或脚本调用或使用。

    XHTML给id属性非常高的优先权,所以建议使用id属性来绑定文档中的元素。弱国必须要在某个标签中使用name属性,最好在其中也加入相同的id属性。

    4、XHTML 1.1

    XHTML1.1是以XHTML 1.0的严格的DTD开始的,在这个基础上进行了修改。1.1版本消除了所有不赞成使用的元素,以及仍在web上得到广泛使用的说哦有浏览器扩展。

    要注意两个地方:第一,lang属性已经从每个元素中去除,应该使用 xml:lang属性;第二,name属性已经从<a>和<map>中除去,应该使用id属性。最后1.1标准定义了一组新的元素,称为“ruby”文本的印刷功能。这个我没见过,也没怎么弄清楚怎么使用,以后再说明。

    以上就是XHTML使用需要知道和注意的地方,其实和HTML区别不大。

    至于是否需要和应该使用XHTML,这个已是大势所趋,显然。网上关于web 2.0的介绍和讨论中经常会说到,就不说了。

    最后是一个最小化的XHTML文档的例子。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/TR/xhtml1" xml:lang="en" lang="en">
    <head>
    <title>Your document title</title>
    </head>
    <body>
    ...your content goes here...
    </body>
    </html>
    

    参考:《HTML & XHTML权威指南》

    Read more...