2011年9月11日

SOA标准体系

SOA标准体系是指SOA领域内多种类、多层次的SOA标准所组成的相互联系的有机整体。这套体系对统一用户与企业对SOA的理解,加快SOA项目实施的规范化,以及增强SOA系统间的互操作能力等方面具有重要意义。

目前国际上尚未有被广泛认可与接受的SOA标准体系。一些国际标准协会组织(如W3C、OASIS、OMG、WS-I等)及国际主流企业发布了若干用于构建SOA系统的规范及标准(常见的是基于Web Services技术的一系列WS-*规范及标准),但这些规范及标准仅在各个标准化协会或企业内形成初步的体系,而且不同组织发布的规范及标准间存在重复甚至冲突的现象,因此,国际上统一的SOA标准体系短时间内还不能成型。

为让用户了解目前国际上各类规范及标准的研制与使用情况,使用户在做系统开发决策时有一定参考依据,同时抱着建设适合国内用户使用的SOA标准体系的目标,ISOL梳理了各个国际标准协会组织及国际主流企业发布的主流规范及标准,整理出84项关于SOA与Web Services的规范及标准,经过体系化分析,划分出14个标准域(见图1-3),形成当前主流SOA与Web Services规范及标准的全集,最终形成国际SOA标准体系研究报告的白皮书--《SOA标准体系V1.0》(已发布在"中国SOA标准服务网"www.soa-china.org.cn上,详细论述可参阅该文档)。

 
图1-3  SOA及Web Services规范及标准域
目前,我国正在基于国内产业和用户需求,建立我国的SOA国家和行业标准体系,此工作已于2007年开始,目前已初步规划出我国SOA国家标准体系,如图1-4所示。此标准体系会在我国标准化专业机构、软件产业界、学术界以及用户的共同合作下进行细化及具体研制。
 
(点击查看大图)图1-4  中国SOA标准体系全景图

我国SOA标准体系工作将围绕4个层次标准的研制工作展开:

SOA基础标准--是支撑SOA系统实现的通用性基础标准,包括《SOA术语》、《SOA总体技术要求》、《SOA标准化指南》以及《SOA集成开发标准》,这一层次的标准将为SOA系统或产品的基本功能、性能作出限定,并为用户和软件厂商提供使用指导。

SOA支撑技术标准--是SOA系统相关的基础技术标准,在图1-4所示11个标准域的若干标准中,我国将对国外已有的相关成熟技术标准(如部分WS-*标准)进行裁剪和修改,并采纳为我国相应的国家标准,部分国内有特殊需求的标准将采取自主研制的方式来制定。

SOA测评标准--包括两类:一类对SOA相关的产品对于SOA标准的符合性及互操作性进行评测,第二类为用户提供SOA建设成熟度评估的评测规范,包括相关评测方法和指标。上述标准规范将作为相应的SOA测评工具和平台的基本依据。

SOA行业/领域标准--将根据行业或领域特征及信息化现状来研究制定适合本行业或本领域的SOA标准体系。此部分标准的研制工作将由我国各行业相关标准化委员会或行业协会来主导制定。目前所列出的几个领域为部分有代表性的行业或领域,其他行业或领域也会逐步扩展进来。

目前,中国SOA标准体系正逐步形成之中:《基于XML的Web服务描述语言》(20030146-T-339)与《基于XML的简单对象访问协议》(20030147-T-339)两项国家标准已完成制定并发布;《Web服务可靠消息传递》(20080478-T-469)与《Web服务互操作框架》(20080477-T-469)已开始研制;《SOA术语》、《SOA总体技术要求》、《SOA标准化指南》与《Web服务管理标准》4个标准处于国家标准公示阶段;《Web服务业务流程规范》等两个标准处于申报阶段;《金融行业SOA标准化指南》等处于计划阶段。

posted @ 2011-09-11 23:29 Adam Duan 阅读(23) 评论(0) 编辑

1.http://onlinebooks.library.upenn.edu

喜欢读英文书的朋友差不多都知道这个在线书库,该书库几乎每天都有新书增加进来,目前其所拥有的在线免费图书已超过2万本,内容涉及众多领域,阅读格式也 多种多样。最好的是,你可以通过每本书所提供的链接,还能顺藤摸瓜地找到其他很多非常有价值的在线书库和丰富多彩的内容。本文所提供的其他一些书库就是本 人通过这一书库的线索找到的。

2.http://quod.lib.umich.edu/m/moa/

Making of America(MOA)是研究美国从南北战争到重建时期社会、历史、文化的极佳的网上资源,当然其收藏内容远不止于此,欧洲各国的历史以及著名作家的经 典著作也非常之多,比如英国湖畔派诗人的全集、休谟的英国史(6卷本)、基佐的法国文明史(8卷本)等等,而且所有图书皆为图形格式或PDF格式,并且都 是扫描输入的,原汁原味。遗憾的是,出于版权保护的考虑,所收图书的作者差不多都是已故距今至少70年以上的。其中很多书都有极高的收藏价值。遗憾之处是 其PDF格式不能整本下载。

3.http://posner.library.cmu.edu/Posner/

这里还要向大家极力推荐Posner先生的这个个人藏书网站,书籍的数量虽然不是很多,但每本差不多都是善本,甚至可能有孤本。比如他所收藏的莎士比亚戏 剧集居然是第一个剧团演出本!吉本的《罗马帝国兴衰史》好像也是第一版的。所有图书皆为原书扫描输入,保留了这些善本书的全貌,非常值得藏书家收藏!缺点 也跟MOA一样,不能整本下载。 个人非常推荐!~

4.http://www.archive.org/details/texts

Internet Archive也是一个不错的在线书库,其中的百万书库项目(Million Book Project)号称到2005年底要将百万册图书数字化,不过到目前为止该书库好像只有1万多本书,但这样的成绩也很不错啦。其中的很多书都有 DjVu、PDF版,也有不少好书,值得一看。

5.http://www.bartleby.com/

Bartleby.com敢号称自己是“Great Books Online”当然有其理由,因为光它的“哈佛经典丛书”就多达100卷,哪位读者要是能将其读完,我看成为大师级人物应该不成问题。此外还有很多极有价 值的百科全书和词典,比如哥伦比亚百科全书(第六版)、美国文化遗产词典、名人名言词典等,所有的辞汇还都带发音,相当不错。

6.http://etext.lib.virginia.edu/

这是美国弗吉尼亚大学的电子图书中心,你要是只看其书库分类目录,你肯定会怦然心动,感觉这个中心简直是一个宝库,然而遗憾的是,其中很多的东东只限于该校师生访问,并不对外。但是其对外的部分也算不错了,值得好好淘一淘。

7.http://selfknowledge.com/index.shtml

这个经典作家书库收集的作家和书籍颇为不少,但大多以文学为主。值得一提的是它配有百科辞典功能,每本书中的很多词汇都可链接到辞书中,读者可听到该词的正规发音以及释义,有些书还有真人阅读片断,实为外语学习的好帮手。

8.http://socserv.mcmaster.ca/econ/ugcm/3ll3/

McMaster大学的经济思想史书库,所收集的经济学家著作相当齐全,实为研究经济学的不可多得的好网站。当然,其藏书也并非全跟经济学有关,比如也亚里士多德、孟德斯纠、伯克等人的著作。

9.http://oll.libertyfund.org/Home3/index.php

这是自由基金会组织建立的在线书库,经常更新,而且差不多都是经典著作,涵盖了社会政治、哲学、经济、历史等多领域的著作,很多著作还是扫描输入的PDF 版,比如吉本的12卷本《罗马帝国兴衰史》就是原书复印的,而且可以全书下载。此外像格拉斯哥版的亚当·斯密全集据说也是斯密最好的版本。 这里也推荐~

10.http://texts.cdlib.org/ucpress/

加州大学的这个学者文库相当不错,很多书都是非常新的著作,制作也相当不错。遗憾的是也分成了对内和对外两类,好在对外的数百本书也都是不错的专著,值得好好读。其中关于中国社会、历史、经济、文化方面的书也不少,其中有一本论述**喇嘛的书,很值得一读。
11.http://www.perseus.tufts.edu/

帕修斯数字图书馆是研究西方古典著作的最佳网站,几乎所有目前遗存的古希腊和古罗马经典都能在此找到,很多书都有希腊文、拉丁文原本以及英文译本,而且有 希腊文和拉丁文词汇研究工具,原文著作中的几乎每一个词都可以点击察看其英文词意以及使用频率等。除此之外,该图书馆还有英国文艺复兴时期书库,有莎士比 亚和马洛的全部戏剧。 但现在外网似乎已经登不上去。

12.http://www.gutenberg.org/catalog/
(聽説這個連接似乎已經被屏蔽或失效了,提供一個替換的。。。http://www.promo.net/pg/)

古登堡项目可以说是目前全球最大的免费在线图书网站,有很多书库,包括上面的一些书库都收藏有古登堡的图书。虽然其中的大多数书籍都是TXT格式的,但也 有一部分书制作还算不错,比如爱德蒙·伯克的12卷本全集、带有著名画家达利插图的但丁《神曲》等,此外还有一些图书的音频资料。缺点是这个网站经常会上 不去。 不知道什么时候又不能上,我在学校里的网络限制还好些,很多在外网被封禁的网站都能顺利浏览。

13.http://www.blackmask.com/

这个网站收藏的图书比较多,每本书也有很多格式,我个人推荐使用微软的Reader格式。不过该网站的搜索功能不怎么样,其他方面还算不错。

14.http://gallica.bnf.fr/

这是全球互联网上大概最齐全的法语图书资源库了,也是希拉克总统希望挑战撒克逊语言在互联网上统治地位的一个阵地。对法语爱好者来说这真是不可多得的宝库,其中有巴尔扎克全集、波德莱尔全集……,还有很多中世纪的法语书籍和图形资料,原版扫描,非常宝贵。

15.http://www.marxists.org/reference/subject/philosophy/index.htm

这是一个哲学书库,虽然只有文本格式,但所收藏的书籍多为哲学史上的名著,从古代到当代都有,相当的丰富

-------------------------------
原來已經發過一次了阿
那我再整理一下吧
16.http://www.woyouxian.com/index/20index.html
我有閑書庫
國内相當不錯的閲讀網站,雖然書少了點,但很不錯。大多是文學名著
17.http://www.literature.org/
也是一個很不錯的在綫閲讀網站。主要都是文學方面的作品。
18.http://www.asiaing.com/ebook/7.html
亞洲進行時。這是它的小説版塊,還有其他類別的書籍,比较不錯的一個電子書下載網站,大部分都是PDF格式的,質量很高速度也很快。但是圖書數量有限,而且有些書只提供一些章節預讀,但對於一個正規的網路來説已經很不錯了~裏面的原版PDF真的做的挺好的
19.http://www.en8848.com.cn
一个比较不错的英文小说阅读网,很多国内流行的畅销书的PDF版都能在里面找到,而且质量通常都不错。
20.http://www.fictionbook.ru/en/
一个俄国的英文原版小说小载站,比较齐全,不断有更新,可惜网站的语言是俄语。有些显示为乱码,里面的书搜集的大多是长篇小说,有兴趣的可以去看看,感觉最大的特点

posted @ 2011-09-11 08:41 Adam Duan 阅读(18) 评论(0) 编辑

2011年7月19日

哈佛大学 60 名学生做了一个实验,发现一个有趣的现象:Google = 遗忘。

他们的实验是这样的:

把 40 条诸如“鸵鸟眼睛比脑袋大”之类的碎片信息输入到电脑,然后问人们能否记住这些消息。那些坚信自己能记住的人,结果往往很少记得。

他们得出的结论是,由于信息获取的便捷,尤其是 Google 搜索引擎和 IMDb 资料库提供的这种便捷,人们把从这些途径获取的信息存储在了“外层记忆空间(external memory)”,而无法真正进入人类大脑。一旦离开这些工具,人们的知识也随之而去,正如前面那个实验一样。

哥伦比亚大学 34 名大学生的研究得出了同样的结论:人们往往更容易记住信息储存在哪里了,而不记得到底储存了什么信息。

现在停下来想一想,你今天第一次用 Google 搜索的内容是什么?

是不是像《盗梦空间》那样感到了惊慌——“你怎么来到这里(梦境)的?”

如果想不起来了,恭喜你,你站在爱因斯坦这一边。这个笑话是:

爱迪生要招一名助理,面试了很多年轻人,没有看上的,就跟爱因斯坦抱怨。
爱因斯坦看了问题。
第一个问题,从纽约到芝加哥有多少英里?爱因斯坦说这个要查 铁路指南
第二个问题,不锈钢是用什么做成的?爱因斯坦说这得翻 金相学手册
第三个问题,没有第三个问题,爱迪生打断了爱因斯坦。
显然,在爱迪生的标准里,爱因斯坦也不合格。

这个故事想说的是,死记硬背不重要,要把更多的时间花在更有意义的时间上,比如发挥更大的想象力和创造力;知识,只要能通过某种方法找到它就行了。

所以大胆地享受高科技吧,你不是 Google 的奴隶,你只是关键词的奴隶。

posted @ 2011-07-19 15:42 Adam Duan 阅读(12) 评论(0) 编辑

2008年12月10日

 子选择器招数(Hack) 

最安全的过滤器依赖于未实现的CSS,而不是浏览器Bug。因为这些过滤器使用有效的CSS选择器来应用有效的声明,所以严格地说,他们根本不是过滤器。他们仅仅是某些浏览器所不能理解的有效CSS规则。这些过滤器中的第一个称为子选择器招数。Windows上的IE6和更低版本的IE不支持子选择器,所以可以使用它对这些浏览器隐藏规则。为了让这种过滤器起到作用,必须确保在子选择器前后没有空格

在这个示例中,使用子选择器招数(Hack)对IE 5-6/Win 隐藏透明的北京PNG图象。

html>body {
   background-image:(bg.png)
}

IE7 预期会支持子选择器,还会支持PNG透明度。通过以这种方式使用子选择器,就允许IE的新版本看到透明背景,而不需要修改代码,因而提供了向前兼容性。等于ie5i56视而不见,而IE7可以用得恰当好处,这里并不是多浏览器兼容,而是向前兼容。

属性选择器招数(Hack)

另一种过滤器规则的有趣方法是使用属性选择器。许多当前的浏览器(比如 Safari–Mac苹果上的  Firefox IE7)支持使用属性选择器,但是IE6并不支持它。因此,可以使用属性选择器在比较高级的浏览器中对类和ID应用样式。在这个示例中,使用属性选择器在 符合标准的浏览器中将背景PNG应用于内容div:

div[id="content"] {
     background=url(bg.png);
}

你可以用这些让不同浏览器显示出不同的效果,当然也可以使用它在多浏览器里显示同样的效果。

 

 

对于CSS当中让IE7IE6Firefox兼容最著名且最有用的CSS过滤器之一是星号 * Html HACK这个过滤器非常容易记住,它可以制定IE6和更低版本。正如你知道的,Html 元素被认为是网页上的第一个元素,即根元素。但是,IE 的所有当前版本有一个匿名的根元素,它包围着Html 元素。那么这个匿名的元素或者说隐藏的元素到底是什么元素呢?其实它就是鼎鼎大名的* 号,所以我们可以用星号来指定的规则应用于那些被星号包围的 HTML

IE6以及更老的IE5.5

* html {
  font-size:small;
}

在任何非ie的浏览器因为没有这个规则(Html元素被*号包围),所以其他的浏览器就会当作看不见,所以当你指定这个规则的时候,你可以放心的应 用在IE6以及前一版本的IE5.5要展示效果中。IE 7 并没有完全去掉这个 Hack。而是用这样的办法来让过滤,那就是用 *+

IE7

*+html {
  font-size:small
}

这样的表达,就是说除了IE7能认识这个font-size:small以外,其他的浏览器都不会看到这一条的,可以说这是IE7的专属Hack

这样的方式可以写在同一个CSS文件,并且同时都会针对不同的浏览器产生独特的效果。所以在设计页面或者样式的时候,你不妨用FireFox 来做第一浏览器,对照Firefox样式写好后,再把页面放到IE7下看看,进行适当的调整,再放到IE6下面看看,进行适当的调整。基本上按 <div><ul><li></li></ul></ul>的顺序嵌套的 话,IE6IE7的规则是差不多的。调好了IE6的样式就等于调好了IE7的样式,反之亦然。再者,用Firefox来写样式还是更符合W3C一些,因 IE6IE7要考虑到以前的兼容性,不得不在规范上做些让步,达到兼容的目的。虽然大家都很憎恶为什么多一个Firefox,但是这是没办法的:( 你要掌控它而不是被它掌控了^_^

基本上用星号搭配搞定IE6IE7Firefox以后,像Opera之类的浏览器也会正常显示的。就不用单独考虑他们的兼容问题了。

posted @ 2008-12-10 11:19 Adam Duan 阅读(460) 评论(0) 编辑

有条件注释是一种专门的(因为是非标准的)、对常规(X)Html注释的Microsoft扩展。顾名思义,有条件注释使你能够根据条件(比如浏览 器版本)显示代码块。因为使非标准的,但是有条件注释对于其他所有浏览器作为常规注释出现,因此本质上是无害的。有条件注释在Windows 上的IE5中首次出现,并且得到了Windows浏览器的所有后续版本的支持。

要想将一个特定的样式表交给IE5IE6IE7或更高的版本,那么可以在(X)Html文档的开头放置一下代码:

<!--[if IE]
<style type=”text/css”>
@import (”ie.css”);
</style>
–>

Windows上的IE5和更高版本会接收样式表ie.css,而其他所有浏览器只会看到一些被注释掉的文本。可以使用有条件注释指定一种特定的浏览器,比如IE6.0

<!-- [if IE 6]
<style type=”text/css”>
@import (”ie60.css”);
</style>
–>

还可以指定一组浏览器,比如IE5.5和更高的版本:

<!-- [if gte IE 5.5000]
<style type=”text/css”>
@import (”ie55up.css”);
</style>
–>

或者IE7

<!-- [if It IE 7]
<style type=”text/css”>
@import (”ie70.css”);
</style>
–>

这种办法极其有效,而且非常容易记住。主要的确定是这些注释需要放在HTML中,而不是放在CSS中。如果某一阶段你希望停止支持某种浏览器,就需 要从每个页面中删除注释,当然这只是针对静态页面的站点了,如果你是动态网站的话,把CSS作为可动态调用的一部分,这样修改起来也很方便的。如果你觉得 还不好,那我们再看另外一个过滤器Tantek Celik

Tantek Celik 基于浏览器解析错误创建了一系列过滤器(http://tantek.com/css/examples/),允许使用@import规则将样式表提供给选择的浏览器。因为他们是CSS规则,所有这些过滤器可以放在一个CSS文件中,这样就可以再一个地方集中的控制过滤的文件。将招数Hack隔离到浏览器特定的CSS文件中,可以大大简化对招数Hack的管理。如果决定停止对某一浏览器(比如IE 5.0)的支持,那么只需要删除相关的样式表,而不需要再大量页面代码中进行搜索和修改。

注意: /**/ CSS中的注释格式。其实下面所说的所有过滤方法都是 /**/注释 \ 转义的混合效果。

要想将CSS文件传递给 Windows 上的IE5.5 IE5,可以使用 Tantek 的中统过滤器:

@media tty {
 i{content:”\”;/*” “*/}} @import ‘ie5x.css’; /*”;}
}

这个过滤器看起来像一堆无意义的规则,而且对于许多浏览器确实如此。只能理解CSS 1 浏览器不认识@media 规则,因此完全忽略它。能力更强的浏览器会看到@media 规则中的一个声明,其目标是寻找<i>元素。由于第二个引号前面有一个转义字符,Content 属性的值被认为是一个无意义的字符串。基本上,现代浏览器会看到下面这样的规则:

@media tty {
  i { content:”Blah, blah blah”;}
}

转义字符是一个保留字符(通常是反斜线),它使解析器忽略后面的保留字符。所以所以,如果希望使用 CSS content 属性自动生成一个引号,那么必须对它进行转义,否则它就会结束前引号:
blockquote:before {content: “\”"}

tty 媒体类型指的终端和电传打印机。新运的使,当前没有设备支持这种媒体类型,所以符合标准的浏览器实际上会忽略整个规则。

但是,IE5.x/Windows 不理解转移字符的,所以会提前结束内容声明。后面的字符会结束<i> @media规则,这导致应用@import 规则。所有多于的字符都被注释掉,因此再 IE 5.x/Win 看来整个规则像下面这样:

@media tty {
  i { content:”blah” ;
       /* blah */
     }
}
@import ‘ie5x.css’
/* blah */

这非常复杂,但是幸运的是,你不需要知道这些过滤器是则怎么工作的,只需要知道怎么使用他们就可以了。

为了向IE 5.x/Win 的特定版本提供CSS文件,创建了中通过滤器的两个变体,他们利用了这些特定浏览器中各种Bug。这些过滤器称为IE 5/Windows 带通过滤器:

@media tty {
  i {content:”\”;/*” “*/}}; @import ‘ie50win.css’; {;}/*”;}
}/* */

IE 5.5/Windows 带通过滤器}

@media tty{
  i {content:”\”;/*” */}}@m; @import ‘ie55win.css’; /*;}
}

另一种可能希望明确指定的浏览器是Mac 上的IE 5.2。为此,可以使用TantekIE5/Mac带通过滤器,它利用了另一个转义Bug,这一次是在注释中:

/*\*//*/
@import “ie5mac.css”;
/**/

IE 5/Mac 错误地对第二个星号进行转义,导致应用@import 规则。因此, IE5/mac 会看到下面这样的规则:
/* blah   */
@import “ie5mac.css”;
/**/

而其他所有浏览器都会正确的忽略转义的元素,因为它放在一个注释中,@import 规则被注释掉了。其他所有浏览器都会看到下面这样的规则(实际上就是没有规则)

/* blah *//*
  blah
*/

与其他带通过滤器一样,不需要理解这个过滤器的工作原理,直接使用即可。这些过滤器的出色之处在于,他们巧妙的利用了老式浏览器中的Bug。因此,应该可以放心的使用他们,他们应该不会在新式的浏览器中造成问题。

PS:也许你过两天也发现了你独特的过滤器哦~~ :)

posted @ 2008-12-10 11:17 Adam Duan 阅读(97) 评论(0) 编辑

2008年12月9日

在理想的环境中,编写正确的CSS会在支持CSS的每个浏览器中正常工作。不幸的是,我们并不是生活在理想的世界中,浏览器有不少的Bug和不一致的地方。为了创建能够在各种浏览器上显示相同样式的页面,CSS开发人员需要发挥创造性。通过利用Bug(hack)和未实现的CSS,开发人员能够选择性地对不同浏览器应用不同地规则。“招数Hack”和“过滤器”是CSS开发人员地强大工具。但是,正因为功能强大,使用时应该谨慎。了解各种常用招数Hack以及他们地工作原理确实很重要。但是,了解在什么时候应用他们以及什么时候不应该使用也同样重要。

在后面讲陆续讲这样的一些东西。

  1. 招数和过滤器之间的差异。
  2. 好的过滤器和差的过滤器以及如何复责任地使用他们。
  3. IE地有条件注释。
  4. 星号Html过滤器和星号、加号Html过滤器。
  5. 注释反斜线过滤器和Holly招数。
  6. 反斜线过滤器和修改后地简化框模型招数(MSBMH)。
  7. !important 和下划线过滤器。
  8. 子过滤器和属性过滤器

多浏览器兼容是一件苦力活,其实没有什么难度,针对不同地浏览器利用上面讲地方法,适当地写上不同浏览器支持地样式,这样多浏览器在一块就和谐了。 甚至在不同的操作系统也可以和谐共处。比如MAC和PC。要相信自己能够战胜这样的困难,多浏览器兼容需要不停的调试,需要耐心,我以前曾写过一个没有利 用任何Bug(Hack、!important)的CSS,也可以完美支持所有的浏览器,虽然一个页面的CSS需要几天来调试,但是这件苦力活并不是不可能完成的。其实还是一句老话,世上无难事,只怕有心人。

Hack和过滤器其实是一种迫不得已的办法,不要稍微掌握了几招然后就开始炫耀,到处乱写,虽然能够达到你的最初目的。不要到了完工的时候看一看你的CSS文件似乎到处是Hack,到处都是补丁,似乎已经为每个浏览器都量身定做了一遍CSS。在使用hack和过滤器的时候其实更应该多理解CSS的标准规范,实际上要用到hack的情况是很少的。Hack本身一词也是不包含正面意义的,而是讲这是一种迫不得已的行为,是利用了不正确的浏览器行为。

作为一般规则,使用以来与不支持的CSS的过滤器,而不是依赖于某种浏览器bug的过滤器,这可能比较安全。

对比相对高级的浏览器应用规则和生命,同时可以确定老式的浏览器会平稳的退化。当浏览器新版本发布时候,如果它现在支持你作为过滤器使用的CSS,那么它应该会如预期那样工作。因为浏览器会越来越符合标准,如果使用比较高级的CSS克服老式浏览器中的问题,这个问题很有希望在新的版本中得到解决。因此,使用不支持的CSS作为过滤机制是一种相对安全的方法。之所以说“相对”是因为浏览器有可能支持新的CSS,但是仍然表现出你试图修复的Bug。

因为使用依赖于解析bug的过滤器是一种有点冒险的方法。这是因为依赖于bug而不是特性。与前面的方法相似,如果解析bug被修复了,而你试图修 复的bug还没有得到解决,那么可能会遇到问题。但是,更严重的是,解析bug在浏览器的新版本中可能有新的表现形式。例如,假设Firefox的一个新 版本有某个解析bug。如果使用这个bug作为过滤器向IE提供不同的宽度值,从而解决专用框模型的问题,那么Firefox有可能突然继承这个宽度,这 可能会破坏许多站点的设计。

CSS中,有许多方法可以实现同样的效果,所以如果某些东西造成了问题,那么可以尝试另一种方法。许多CSS错误是由过分复杂的代码和标记造成的。如果使代码保持简单了,那么可以避免使用大多数招数Hack。

那么应该使用怎样的策略保证一个网站的CSS简单明了,而且又能适应众多浏览器呢?如果经过充分的思考,认识到只能应用某种Hack或过滤器,那么需要以明智且受控制的方式应用它。如果CSS短小而且简单,并且只需要应用很少几个Hack,那么将这些Hack放在主CSS文件中可能是安全的。但是,Hack往往相当复杂,使代码更加难懂。如果CSS文件很长,或者需要使用的招数比较多,那么最好将它们放在它们自己的样式表中。这不但使代码容易阅读,而且如果Hack在新的浏览器中造成了什么问题,那么可以准确的知道它的位置。与此相似,如果决定取消对某种浏览器的支持,那么只需要删除适当的CSS文件,就可以删除相关联的Hack。或者用程序判断浏览器信息,然后链接相应的CSS文件。或者可以用条件注释(见下一篇)。

为了帮助你正确的选择过滤器或者Hack,推荐这个站点(http://centricle.com/ref/css/filters/)。这个站点提供了表格来描述那些过滤器在那些浏览器中是有效的,非常详尽。

常用Hack浏览器匹配图:

常用 css hack

 

posted @ 2008-12-09 17:02 Adam Duan 阅读(228) 评论(0) 编辑

可能有些人早就知道,canvas 这个元素,这个是在 w3c HTML5.0 方案确定的元素, 可惜的是 IE 不支持这个元素,
火狐在很早的版本就支持了这个元素, 下面是一些浏览器支持 canvas 元素预览图。

 

FirefoxSafariOperaExplorerCanvas
2.0 ○ 2.0 ○ 9.2 ○ 0002 △
3.0 ○ 3.0 ○ 9.5 ○  

 

ExplorerCanvas 是 Google 公司推出的一个专门让IE支持 canvas 元素的扩展类,即 excanvas.js,最新版本是 0002版本
为什么是三角呢,因为只提供部分属性方法支持。
---------------------------------------------------------------------------------------------------------

不可否认的javascript的先天缺点:


   可怜的javascript由于微软,坚决反对,对js的扩展,而且IE占有 70%浏览器市场,使得js html 扩展举步维艰,因为微软主推 Silverlight,而
Adobe 公司放弃了svg 主推 Flash, 所以javascript 就是一个可怜儿,没人理。

但是javascript 是个神奇的语言,官方不给,民间自创,没有的方法,函数,可以通过原型构建新对象,所以像JQ,等这些扩展
控件百花齐放,javascript 没有图像库,绘图类,但是可以在其他浏览器用canvas 元素,在IE可以用vml 构造canvas 。

但是给我的感觉无论是,div实现图形还是 canvas 元素,给人的感觉都是太肤浅了,不支持的太多了比如最重要的文字、字体,旋转,变形。
和现有的flash 和层出不穷的 Silverlight没的比、不能比、没法比、千万不要比。

  这里我有一句忠告就是用 javascript 绘图 = 自捏,还是老老实实的用  Silverlight 或 flash 。
--------------------------------------------------------------------------------------------------------

不可否认的javascript的先天优点:

    代码量小,不用客户端安装任何插件,这对企业级的内网用户再合适不过了,有很多优秀的js库可以丰富js脚本。
这里要感谢一下 Google ,它推出的 excanvas.js 扩展类,虽然不是完美,功能太少,但是至少让
javascript 在多浏览器下,真正支持了绘图。

这里我推荐一个网站吧,因为国内几乎没有人用js绘图,所以相关的资料很少
但在日本就不一样了,他们把html5 称为次时代html语言。
http://www.html5.jp/     小日本的网站,提供了非常详细的 html5 的参考资料,包括canvas 元素,而且方法,属性
都非常友好的告诉了你,那个浏览器支持和不支持。

 

 canvas 元素还是很有用的,假如你想快速开发,给客户生成报表,图饼一类的,你可以不用借助于 Silverlight 或 flash 。
推荐几个小日本的控件(都是基于excanvas.js )

 

 

 

 

 

 

 

这几个控件使用超级简单

 柱形图设置

Code


   7 个数字组,代表的是一周的7天,如果你有多个商品可以定义更多 商品F,商品G, 控件自动分配。
我测试过所有浏览器都支持,如果作为企业用户,你不想用 Flash 等可以用这个,修改维护都很方便

圆饼图设置

Code

 

更简单你想增加一个比较就加一个 ["sample13",10] 一条记录,控件会自动计算百分比。 

js控件下载

-------------------------------------------------------------------------------------------------

骨灰级的应用 canvas 元素

    世界之大,无奇不有,人外有人,天外有天,真不是道听途说。

             丹麦人,javascript 狂热者,+ 天才。
   Jacob Seidelin 

   这是他 2D 作品 (最好用火狐,谷歌浏览器,IE会很慢)
    http://www.nihilogic.dk/labs/mario/mario_large_music.htm  
    只有14k代码的超级玛丽(作者开源)
    他用canvas 元素实现的,没有用任何图片,14K 哦,给我1400K 我也实现不了。
 
    最近他又在研究 3D

 

   下面是他用 js + canvas 做的3D小游戏 (最好用火狐,谷歌浏览器,IE会很慢)

   http://www.nihilogic.dk/labs/wolf/   3D射击     X 开门 C 子弹
   http://www.nihilogic.dk/labs/chess/  3D国际象棋(可以鼠标旋转场景)

---------------------------------------------------------------------------

   总结:对我们来说,认识下 canvas 元素,也可以学习下应用 excanvas.js 
可以参考http://www.html5.jp/   ,不难,如果不用 flash,Silverlight,只是报表
应用还是个不错的选择,当然如果你是js游戏发烧友可以更进一步的发掘,当然
建议,如果你不是 Jacob Seidelin 那种狂热型,还是用 flash,Silverlight 更好。

 

posted @ 2008-12-09 16:29 Adam Duan 阅读(2676) 评论(0) 编辑
IE与Firefox的CSS兼容大全
作者:AYI 日期:2006-10-25
  1.DOCTYPE 影响 CSS 处理
  2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行
  3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中
  4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width
  5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式,值得注意的是,一定要将xxxx !important 这句放置在另一句之上
  6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
  7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以
    8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。
  9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:div{margin:30px!important;margin:28px;}
  注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:div{maring:30px;margin:28px}
  重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;

  10.IE5 和IE6的BOX解释不一致
  IE5下div{width:300px;margin:0 10px 0 10px;}
   div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以 300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改 div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}
  关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)

  11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义ul{margin:0;padding:0;}
  就能解决大部分问题

  
    注意事项:

  1、float的div一定要闭合。

  例如:(其中floatA、floatB的属性已经设置为float:left;)<#div id=\"floatA\" >
<#div id=\"floatB\" >
<#div id=\"NOTfloatC\" >
  这里的NOTfloatC并不希望继续平移,而是希望往下排。
  这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。
  在<#div class=\"floatB\">
<#div class=\"NOTfloatC\">
  之间加上<#div class=\"clear\">
  这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。
  并且将clear这种样式定义为为如下即可:.clear{
clear:both;}
  此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;
  当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。
  例如某一个wrapper如下定义:.colwrapper{
overflow:hidden;
zoom:1;
margin:5px auto;}

  2、margin加倍的问题。

  设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。
  解决方案是在这个div里面加上display:inline;
例如:
<#div id=\"imfloat\">


  相应的css为
#IamFloat{
float:left;
margin:5px;/*IE下理解为10px*/
display:inline;/*IE下再理解为5px*/}

  3、关于容器的包涵关系

  很多时候,尤其是容器内有平行布局,例如两、三个float的div时,宽度很容易出现问题。在IE中,外层的宽度会被内层更宽的div挤破。一定要用Photoshop或者Firework量取像素级的精度。

  4、关于高度的问题

  如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。(似乎有时候不会自动往下撑开,不知道具体怎么回事)

  5、最狠的手段 - !important;

  如果实在没有办法解决一些细节问题,可以用这个方法.FF对于"!important"会自动优先解析,然而IE则会忽略.如下.tabd1{
background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/
background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */}
  值得注意的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过
posted @ 2008-12-09 14:48 Adam Duan 阅读(75) 评论(0) 编辑
/*     
  电话号码的验证     
  要求:     
  (1)电话号码由数字、"("、")"和"-"构成     
  (2)电话号码为7到8位     
  (3)如果电话号码中包含有区号,那么区号为三位或四位     
  (4)区号用"("、")"或"-"和其他部分隔开     
  (5)移动电话号码为11或12位,如果为12位,那么第一位为0     
  (6)11位移动电话号码的第一位和第二位为"13"     
  (7)12位移动电话号码的第二位和第三位为"13"     
  */   
  function   PhoneCheck(   me   )   {     
  if(   !   isPhone(   me.value   )   )   {   
  me.select();   
  me.focus();   
  alert(   "您输入电话错误!"   );   
  }   
  }   
  //   电话格式正则表达式验证   
  function   isPhone(Phone)   {     
  return   /(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{7,8}$)|(^0{0,1}13[0-9]{9}$)/.test(Phone);     
  }

posted @ 2008-12-09 13:54 Adam Duan 阅读(448) 评论(1) 编辑

2008年12月8日

AVM2开放源代码

这几个星期发生在Flash社区的震撼事件,包括Adobe将ActionScript Virtual Machine 2(AVM2)的核心源代码捐献给Mozilla组织,变成了一个叫做Tamarin的开源项目。Tamarin的目标是实现一个高效的ECMAScript 4th edition(ES4)引擎,它会成为现在Firefox中代号为SpiderMonkey的JavaScript引擎的新核心,同时也用于运行ActionScript3的AVM2。

如果你想知道Tamarin有多震撼,先来看Tamarin和现有SpiderMonkey的执行效率对比,其中强类型代码(Typed Code)模式是指将JavaScript转换为ActionScript3,并且将function与prototype转换为class:

(摘自:Tamarin vs. javascript Performance

看到这样的执行效率比较,再想一想IE那个执行效率比FF还要低得多的JavaScript引擎,或许将来Apollo应用的配置要求这样写:四核处理器加Internet Explorer或双核处理器加Mozilla Firefox,哈哈……我的意思是,如果你一定要用IE你就要多投资金到处理器上换取等效的JavaScript执行效率。

Tamarin开放源代码的战略意义是很实在的,这样Adobe就可以让开源社区服务于它的Flash Player了。Tamarin作为一个标准的ES4引擎,虽然现今只有AVM2和SpiderMonkey基于它,但这也足够形成一个强大的战略同盟 ——Adobe或Mozilla社区对Tamarin的改进都会让双方同时受惠。将来可能有更多软件考虑引入基于ES4的脚本语言支持,如果选用 Tamarin的话将会让其开发者社区便得越来越壮大。哪天再出来一个神通把它tune up一下的话,其执行效率将可能远远抛离IE,这时候同样的脚本应用只在Flash或FF中流畅运行,你想不放弃IE都不行。

Adobe Apollo

另一个震撼的事件是Adobe的Apollo即将来临,这家伙将有十足的实力在全平台上与WPF/E对抗。

首先Apollo支持Just In Time(JIT)编译,这样其跨硬件平台能力就可以和Java/.NET比了。.NET所谓的跨平台是狭隘的,JIT主要是指跨硬件平台,软件平台则直到WPF/E才真正肯跨出了第一步,提供对MacOSX的支持。Apollo在挑选浏览器引擎时却费尽了心思,就为了选一个将来容易跨越更多软件平台的。

Apollo最终选中的浏览器引擎是开源的Webkit。 Adobe官方宣布明年上半年正式发布的Apollo 1.0将支持Windows和MacOSX,但如果你了解一下Webkit这东西就发现它其实有足够的潜力实现大小平台通吃。Webkit本身作为 Safari的核心,所以确保了MacOSX平台的支持;其次它也是KDE上KHTML浏览器的核心,进军Linux也应该没问题;最后它连 Symbian Series 60(S60)也都支持,Adobe只需要去和Nokia握握手或许就能让Apollo进驻S60的智能手机,要知道在智能手机上S60的市场占有率可比 Windows Mobile(WM)多得多。

反过来看看WPF/E,估计也是2007年上半年能够发布1.0正式版,官方支持的平台也是Windows和MacOSX,但MS已经支持其 Linux的支持将依靠第三方来实现,也就是不会用官方的WPF/E for Linux支持。至于移动设备,将来就算能支持估计还是仅支持WM,这样适用范围还是受到了很大的限制。

http://www.5uflash.com/uploads/allimg/080403/1719550.jpg

 

posted @ 2008-12-08 16:05 Adam Duan 阅读(67) 评论(0) 编辑

公告

导航

统计