December 2007 Archives

Java学习的30个目标

| No Comments | No TrackBacks

本文将告诉你学习Java需要达到的30个目标,希望能够对你的学习有所帮助。对比一下自己,你已经掌握了这30条中的多少条了呢?

1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该十分了解UML,尤其是class,object,interaction以及statediagrams。

2.你需要学习JAVA语言的基础知识以及它的核心类库(collections,serialization,streams, networking, multithreading,reflection,event,handling,NIO,localization,以及其他)。

3.你应该了解JVM,classloaders,classreflect,以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。

4.如果你将要写客户端程序,你需要学习WEB的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWING,AWT, SWT。你还应该对UI部件的JAVABEAN组件模式有所了解。JAVABEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。

5.你需要学习java数据库技术,如JDBCAPI并且会使用至少一种persistence/ORM构架,例如Hibernate,JDO, CocoBase,TopLink,InsideLiberator(国产JDO红工厂软件)或者iBatis。

6.你还应该了解对象关系的阻抗失配的含义,以及它是如何影响业务对象的与关系型数据库的交互,和它的运行结果,还需要掌握不同的数据库产品运用,比如:oracle,mysql,mssqlserver。

7.你需要学习JAVA的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,
codesigning, digitalsignatures,cryptography,certification,Kerberos,以及其他)还有不同的安全/认证 API,例如JAAS(JavaAuthenticationandAuthorizationService),JCE (JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS (JavaGeneralSecurityService)。

8.你需要学习Servlets,JSP,以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。

9.你需要熟悉主流的网页框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他们下面的涉及模式,如MVC/MODEL2。

10.你需要学习如何使用及管理WEB服务器,例如tomcat,resin,Jrun,并且知道如何在其基础上扩展和维护WEB程序。

11.你需要学习分布式对象以及远程API,例如RMI和RMI/IIOP。

12.你需要掌握各种流行中间件技术标准和与java结合实现,比如Tuxedo、CROBA,当然也包括javaEE本身。

13.你需要学习最少一种的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。

14.你应该学习如何利用JAVAAPI和工具来构建WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM (JavaAPIforXMLMessaging), JAXR(JavaAPIforXMLRegistries),或者JWSDP(JavaWebServicesDeveloperPack)。

15.你需要学习一门轻量级应用程序框架,例如Spring,PicoContainer,Avalon,以及它们的IoC/DI风格(setter,constructor,interfaceinjection)。

16.你需要熟悉不同的J2EE技术,例如JNDI(JavaNamingandDirectoryInterface),JMS (JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService), JMX (JavaManagementeXtensions),以及JavaMail。

17.你需要学习企业级 JavaBeans(EJB)以及它们的不同组件模式:Stateless/StatefulSessionBeans,EntityBeans(包含 Bean- ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者 Message-DrivenBeans(MDB)。

18.你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic,JBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。

19.你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流JAVA规格和执行。例如AspectJ和AspectWerkz。

20.你需要熟悉对不同有用的API和frame work等来为你服务。例如Log4J(logging/tracing),Quartz (scheduling),JGroups(networkgroupcommunication),JCache (distributedcaching), Lucene(full-textsearch),JakartaCommons等等。

21.如果你将要对接或者正和旧的系统或者本地平台,你需要学习JNI (JavaNativeInterface) and JCA (JavaConnectorArchitecture)。

22.你需要熟悉JINI技术以及与它相关的分布式系统,比如掌握CROBA。

23.你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。

24.你应该熟练掌握一种JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了:)

25.JAVA(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。

26.你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(Ant,Maven)。

27.你需要熟悉一些在JAVA开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。

28.你需要能够深入了解加熟练操作和配置不同的操作系统,比如GNU/linux,sunsolaris,macOS等,做为跨平台软件的开发者。

29.你还需要紧跟java发展的步伐,比如现在可以深入的学习javaME,以及各种java新规范,技术的运用,如新起的web富客户端技术。

30.你必需要对opensource有所了解,因为至少java的很多技术直接是靠开源来驱动发展的,如java3D技术。(BlogJava-Topquan's Blog)

热门职业:推销网络广告

| No Comments | No TrackBacks

在1967 年的经典影片《毕业生》 The Graduate 里,麦圭尔先生 Mr. McGuire 向年轻的本杰明.布拉多克 Benjamin Braddock 传授的职业忠告就两个字:塑料。如果他今天在纽约街头遇到年轻的本杰明,他很可能会传授 6 个字:网络广告销售。纽约硅巷及以外地区销售人员的短缺,引发了价格战、高奖金和高工资,而这一切是 1999 年硅谷工程师开创出高薪先河后从未有过的。

为什么会涌现出如此巨大的需求?首先,尽管整个经济的发展前景尚不明朗,但网络公司仍然大举向纽约拓展其广告运营业务。最近,谷歌公司 Google 宣布,公司计划为其迅速发展的曼哈顿办事处增加一个内部的广告业务部,而美国在线公司 [AOL,它和《财富》杂志一样都隶属于时代-华纳公司 Time Warner ] 将于明年春天把公司总部从弗吉尼亚州的杜勒斯迁往纽约。与此同时,传统媒体公司也在加强它们的数字业务。[哥伦比亚广播公司 CBS 最近收购 Wallstrip.com 和 Last.fm 就是证据。]

不 过,目前还有一个重大转变─那就是 Web 2.0 真谛的显现,即在网上挣钱靠的不是卖内容或订阅,而是广告。鲁珀特.默多克 Rupert Murdoch 对此深表赞同。前不久他表示,他正在考虑停止《华尔街日报》 Wall Street Journal 的网上订阅模式。结果,传统媒体公司、大型网络公司都开始向麦迪逊大街迁移,新兴企业也不例外。

招聘一名销售总监“是我们遇到过的最大挑战”,视频分享网站 Blip.tv 的联合创始人迪娜.卡普兰 Dina Kaplan 说。她表示,她每天要花 6 个小时寻找合适的人选。很快,她就要招到人了─她说,“我们打算从一家电视网挖个人过来”─而且此人的薪水可能是她本人的两倍。

卡普兰仍然有可能遇到麻烦。猎头公司说,传媒公司正在花大价钱挽留销售人员。技术高管调查公司巴洛集团 Barlow Group 的托德.赞格里洛 Todd Zangrillo 说,在这些公司中,薪水加奖金有可能超过 40 万美元。而且公司规定可以还价。赞格里洛说,有一位在某大型电视台工作的人选现在能挣 50 多万美元,“他直接说,`除非你们的出价能高于 60 万美元,否则免谈。'”

招聘人员也从这股需求中获得了可观的利润。Blip.tv 的卡普兰以市价即新员工薪水的 15% 聘请了一位招聘人员。但是两个月里,她只得到了一份不合格的简历,于是她考虑换一名招聘人员,此人承诺可以找到更合适的人选,不过要价很高:月聘金 1 万美元,外加所招员工第一年薪水的 33%。

与此同时,所有有经验的人士现在都得在工作日抽出一些时间接听招聘人员的电话。Gawker Media 公司销售副总裁克里斯.巴蒂 Chris Batty 说,他有时候一天接到 3 个电话。杰夫.扎雷茨基 Jeff Zaretsky 去年辞掉了在 AOL 的销售工作,跳槽去了一家开发社交网络软件的新兴公司 KickApps。他说,他每周都会接到几个电话,或是有人在 LinkedIn.com 上与他联系。 在写这篇报道时,有一位 CEO 给本人开出了“5 万左右”的薪水,让我转投其门下。 

尽管看起来好像任何一名大学毕业生都应该能推销网络空间,但招聘人员表示,事情并非这么简单:销售代表除了要建立良好的关系以外,还得精通技术语言,比如 RSS feed 软件、Ajax 技术等,他还要能够想出新点子,从而创造性地运用窗口小部件、小附件和其他一大堆网络工具。

不过,也不是所有的人都在追逐这股狂潮。Gothamist.com 的出版人杰克.多布金 Jake Dobkin 面试过几名应聘销售总监的人,但他说他不会参加价格战,而是要培养一名新人,或者干脆在市面平静下来之前,由他本人做这份工作。“我见过市场的起起落落。”多布金说。他在 2003 年网络泡沫破灭之后即成立了 Gothamist,那时候没人对网络广告感兴趣。现在情况看起来也许不错,但他不愿冒任何风险。(财富杂志)

NetBeans:Ruby开发者的新伙伴

| No Comments | No TrackBacks

创建Rails项目的时候,IDE会让你选择要用原生Ruby还是JRuby,选择要用哪个数据库驱动(如果是JRuby还包括JDBC),还乐意 很方便地升级到最新版的Rails。确认新建项目对话框之后,项目的默认目录结构就会建好。这是Rails的一大优点,由于所有的应用结构都差不多,所以 你拿到别人建立的项目也会很快上手。NetBeans的项目浏览器能让你对项目文件之间的整体逻辑有个直观的感受,你也可以方便地浏览它们。

你可以直接在IDE里面使用Rails生成器——在项目上点右键就可以选择使用哪个生成器,填好参数,运行,接着你就会在输出窗口看到生成器的输出了。

你在开发的时候还可以用上编辑器的代码完成、重构、快速修补等等功能(本系列的第一部分介绍了编辑器的部分特性)。要是准备好运行你的程序了,什么配置都不用做,直接按下运行按钮就可以了——NetBeans捆绑了Webrick服务器来运行你的应用。浏览器窗口会自动打开。如果你打算调试程序,IDE还会在调试模式运行Webrick服务器。当然,你也可以很容易地把服务器换成Mongrel。

IDE还集成了Rake,因此你可以在项目中执行Rake目标:

调试Rake目标也很容易,运行迁移脚本,与Rails控制台交互,这些都可以在IDE里完成。你还可以通过一个特殊的对话框安装各种Rails插件。还有很多其他Rails开发方面的特性,希望我举的这些例子能让你对在NetBeans中开发Rails应用有个初步的印象。

编辑特性

我在上一部分已经介绍过一些编辑方面的特性(代码完成和重构)。我认为NetBeans的编辑器应该是大多数Ruby开发者都会喜欢的——随时都会 发现一些贴心的小功能。例如当你创建一个新方法的时候,编辑器会自动插入结束语句,并把光标定位到方法中间那一行。你还可以看到各种元素,比如变量在文件 中出现的所有位置:

如果我想给一个变量改名,只需要按一下Ctrl-R,文件中所有用到该变量的地方都会一下子改好:

漂亮的语法着色方便了在代码中定位,甚至RubyDocs也有语法着色。你一边输入,编辑器就会一边把错误用下划线标出来,NetBeans还会告诉你哪些变量是没用到的,好让你删掉它们。

如果你按着CTRL键,同时把鼠标移到任何类、方法或者变量上面,编辑器会把你带到它们的声明。你还可以看到一个小提示,告诉你当前选中元素的用途。

你也可以使用代码模板。你可以在很多预定义的模板里面选择,自己创建新模板也很容易。在模板里面可以设置模板展开后光标的位置,还可以预先插入各种变量。因此要是你经常使用某些API,模板就很有帮助。

还有很多编辑特性不能一一介绍,请查阅关于Ruby编辑的Wiki页面:http://wiki.netbeans.org/wiki/view/RubyEditing

Gem管理器

Gem管理器(Tools | Ruby Gems)可以安装新版本的地Gem,浏览、升级已经安装的Gem等等,请看下面的截图。用户界面和NetBeans插件管理器以及Rails插件管理器 都很相似,因此你并不会感到陌生。在Ruby仓库里有很多很多Gem,想找什么库的时候全文搜索一下会很有帮助。

Ruby选项

我前面提过,你可以在原生Ruby或者JRuby之间切换。IDE默认使用JRuby,因为它捆绑了JRuby,不过只要告诉IDE现有Ruby的安装位置,它就会改用你指定的Ruby,不管是什么操作系统。

选项对话框里面还可以选择是使用经典调试器,还是使用快速调试器。不过在JRuby环境下你只能用经典调试器,虽然慢一点,但能适应各种情况。在原 生Ruby环境下可以使用快速调试器(很容易安装,IDE会去下载它),这是Ruby推荐使用的调试器。选项对话框还有两个选项页:“格式化”控制编辑器 里的格式化设置,“提示”控制编辑器里那些“小灯泡”的出现。

单元测试

单元测式功能集成得很出色。例如当你创建一个新模型的时候,一个新的单元测时也会自动创建好。这是Ruby on Rails的一个特色,它的哲学是单元测试太重要了,绝对不可缺少。单元测试也可以直接在编辑器里运行,编辑器里当然还可以浏览测试类。

如果你真的很在意测试,可以安装“ZenTest”Ruby Gem(通过Tools | Ruby Gems),之后项目的右键菜单就会多一个“AutoTest”选项。它会启动项目的自动测试,每当你修改了一个文件,它都会自动执行单元测试。 AutoTest在很多情况下都能判断出需要运行哪些单元测试——尤其是Rails项目。如果它判断不了,就会运行所有单元测试。

使用控制台

尽管我们已经尽可能把功能集成进IDE,还是有你想用控制台的时候。比如当你想通过交互的方式尝试一些Ruby API的时候,控制台就很有用。选择Window | Other | Ruby Shell (IRB)就会打开Ruby Shell。控制台会在IDE的底部打开,你可以不受拘束地享受Ruby交互语言的强大能力。

更多信息

关于NetBeans的Ruby支持,你可以在它对应的Wiki页面上找到更多信息:http://wiki.netbeans.info/wiki/view/Ruby

Ruby文档页面上有不少演示和教程:http://www.netbeans.org/kb/60/ruby/index.html

最后,你可从以下地址免费下载NetBeans IDE:http://www.netbeans.org/community/releases/60/index.html。你还可以选择安装只包含Ruby的精简版IDE(特别提供了安装包),或者安装完整版的Java IDE附带Ruby支持。只包含Java的版本也可以通过Tools | Plugins增加Ruby支持。

在下一篇中,我们将讨论安装若干实验性插件之后得到的额外功能,还会讨论一些与社区相关的论题,比如如何参与到这个项目以及未来的计划。与此同时,请务必试一下NetBeans的Ruby支持。如果你经常用搞Ruby开发,NetBeans就是你要找的IDE!(Roman Strobl 译者 郭晓刚)

查看英文原文:NetBeans: Ruby Developer's New Best Friend (Part 2)

iPhone 1.1.3版新功能曝光

| No Comments | No TrackBacks

GearLive网站已经拿到了尚未发布的iPhone 1.1.3版本固件,并用照片讲解了1.1.3版中即将到来的许多新功能。具体如下: 

   iPhone 1.1.3版新功能曝光

iPhone 1.1.3版新功能曝光
手指拖动图标 首页重新编排

iPhone 1.1.3版新功能曝光
Google Maps软件增加新功能

iPhone 1.1.3版新功能曝光
新选项

iPhone 1.1.3版新功能曝光
可以使用手机网络信号进行定位(伪GPS)

iPhone 1.1.3版新功能曝光
群发短信

iPhone 1.1.3版新功能曝光

iPhone 1.1.3版新功能曝光

iPhone 1.1.3版新功能曝光
将Safari浏览器书签(网页链接)添加至主页面

Ruby on Rails 2.0的新特性介绍

| No Comments | No TrackBacks

万众瞩目的Ruby on Rails 2.0已经发布了,Rails框架在2004年诞生以来,一直保持着相当快的版本升级速度:2005年发布了Rails1.0版本,2006年初发布 Rails1.1版本,2007年初发布Rails1.2版本,而还没有等到2008年,在2007年圣诞前夕的12月6日,Rails2.0已经发布。

Rails框架每个大的版本升级都给我们带来了相当多的新功能,新惊喜。Rails1.0带给我们完善的单元测试和集成测试;Rails1.1带给我们DataBase Migration和RJS;Rails1.2让我们看到了REST的光明前景,那么Rails2.0又将带给我们什么呢?我粗略的翻译了一下Rails框架作者DHH写的Rails2.0框架介绍文章,以下翻译自DHH的文章,原文在:

http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done

在经过差不多一年的开发之后,Rails2.0终于发布了。这是一个棒极了的Rails版本,包括了大量堪称伟大的新特性,无数的bugfix和大量功能的打磨。我们花了无数的精力去打造这样一个非常完美合理的软件包。

这也是Rails框架发展历史上的一个里程碑。我个人在Rails框架上面的开发工作已经有四年半的时间了,并且我们现在的贡献者也越来越多。我对这几年我们所做出的工作和我们一直坚持的信念感到非常的满意。我们一直在坚持这一点并且不断推动它。

在详细的介绍Rails2.0之前,我要向那些为Rails框架做出过贡献的每一个人致以深深的谢意,不论是像一个家庭那样其乐融融的Rails核心开发团队,还是成千上万的、而且年复一年为Rails提交补丁,积极参与Rails社区人们。Rails2.0也是大规模开源软件开发社区的一个重大胜利,而你完全可以自豪于你在Rails社区当中扮演的角色和做出的贡献。干杯!

现在让我们简单的窥一斑见全豹的看看Rails的那些闪闪发光的特性:

Action Pack: Resources

Controller里面充斥着大量action方法的时代已经过去了,我们对REST架构的应用进行了大量的改进和提高。首先,我们不再使用分号来隔离自定义的方法,而是采用斜线,例如原来是 /people/1;edit的URL,现在改成了 /people/1/edit.另外我们还对URL路由资源添加了命名空间的支持,因此像后台管理的接口你可以像这样非常简单的定义:

 
ruby 代码

   1. map.namespace(:admin) do |admin|  
   2.   admin.resources :products,  
   3.     :collection => { :inventory => :get },  
   4.     :member     => { :duplicate => :post },  
   5.     :has_many   => [ :tags, :images, :variants ]  
   6. end 

 

这种方式可以让你按照如下的方式定义命名路由,例如:inventory_admin_products_url和 admin_product_tags_url等等。为了方便的记录所有的路由规则,我们添加了一个rake任务叫做“rake routes”,它能够列举出来routes.rb定义的所有命名路由规则。

此外我们还引入了一个新的约定,即所有基于资源的controller默认都是复数形式的。这样即便单个资源在不同的路由规则中被多次引用,仍然可以指向同一个controller来处理,例如:

 
ruby 代码

   1. # /avatars/45 => AvatarsController#show  
   2. map.resources :avatars 
   3.  
   4. # /people/5/avatar => AvatarsController#show   
   5. map.resources :people, :has_one => :avatar 

 

Action Pack: Multiview

与资源映射一起进行功能增强的还有MultiView。我们已经有了respond_to方法,但我们可以更进一步,把MultiView控制延伸到模板里面去。我们现在可以根据模板文件的后缀格式来决定使用什么render机制。因此,show.rhtml你可以写成 show.rhtml.erb,这就表明是一个默认的rhtml模板,和你过去在Action里面使用respond_to声明的format.html 是一个意思。此外你还可以使用诸如show.csv.erb,它表明显示为csv格式的数据,并且使用默认的erb去render它。

所以,新的模板格式是: action.format.renderer。例如:
* show.erb: 不管什么格式的显示方式都使用默认的erb显示show模板
* index.atom.builder: 用Builder库来render XML文件,输出的文件类型为RSS的AOTM类型
* edit.iphone.haml: 使用用户自己定义的HAML render机制来输出模板内容到iPhone手机上面

说到iPhone手机,我们可以自己造一个专用的类型来实现内部路由。当你需要类似iPhone这样的特殊的HTML接口的时候,我们所要做的就是:

 
ruby 代码

   1. # should go in config/initializers/mime_types.rb  
   2. Mime.register_alias "text/html", :iphone 
   3.  
   4. class ApplicationController < ActionController::Base  
   5.   before_filter :adjust_format_for_iphone 
   6.  
   7.   private  
   8.     def adjust_format_for_iphone  
   9.       if request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(iPhone|iPod)/]  
  10.         request.format = :iphone 
  11.       end 
  12.     end 
  13. end 
  14.  
  15. class PostsController < ApplicationController  
  16.   def index  
  17.     respond_to do |format|  
  18.       format.html   # renders index.html.erb  
  19.       format.iphone # renders index.iphone.erb  
  20.     end 
  21.   end 
  22. end 

 

你完全可以在config/initializers/mime_types.rb里面注册自己的mime type类型的映射,这个文件默认已经提供了。

Action Pack: Record identification

为了驱使你使用基于资源的映射,我们对资源映射的controller和view的URL处理进行了大量的简化。我们添加了大量的命名约定,让你可以直接把model对象转化为资源映射的路由,例如:

 
ruby 代码

   1. # person is a Person object, which by convention will   
   2. # be mapped to person_url for lookup  
   3. redirect_to(person)  
   4. link_to(person.name, person)  
   5. form_for(person) 

 

Action Pack: HTTP Loving

如你所期望的那样,Rails2.0的Action Pack更加贴近HTTP,并且充分利用HTTP协议,例如资源、多种视图,还有更多的呢。我们添加了一个模块来处理HTTP的Basic验证,它能够让授权的API轻松跨越SSL协议,而且他是如此的简单易用。下面是一个例子(更多的例子请参考ActionController:: HttpAuthentication):

 
ruby 代码

   1. class PostsController < ApplicationController  
   2.   USER_NAME, PASSWORD = "dhh", "secret"   
   3.  
   4.   before_filter :authenticate, :except => [ :index ]  
   5.  
   6.   def index  
   7.     render :text => "Everyone can see me!"   
   8.   end 
   9.  
  10.   def edit  
  11.     render :text => "I'm only accessible if you know the password"   
  12.   end 
  13.  
  14.   private  
  15.     def authenticate  
  16.       authenticate_or_request_with_http_basic do |user_name, password|   
  17.         user_name == USER_NAME && password == PASSWORD  
  18.       end 
  19.     end 
  20. end 

 

此外,我们也做了很多工作让你把JavaScript和CSS文件组织到一个逻辑单元里面去,而不需要让浏览器发起多次HTTP请求,分别获取每个 JavaScript和CSS文件,以便减少HTTP请求次数。使用javascript_include_tag(:all, :cache => true) 这个helper在生产环境下自动把public/javascripts/目录下面的所有js文件打包到单个 public/javascripts/all.js文件里面,但在开发环境下,仍然保持每个文件独立的修改。

我们还添加了一些选项让,仅仅几行代码,就能够让浏览器去访问多台服务器上面的资源。如果你添加如下设置:ActionController::Base.asset_host = “assets%d.example.com”,那么Rails框架就会自动的把静态资源的请求分发到多台物理服务器上面去,例如分发到 assets1.example, assets2.example.com, assets3.example.com等等。这样浏览器可以同时向多台服务器下载资源,增加你的应用的访问速度。

Action Pack: Security

能够很简单的创建出来安全的应用总是一件令人愉快的事情,而Rails2.0提供了大量先进的功能来达到这一点。非常重要的是我们现在提供了一种内建的机制来处理CRSF攻击。我们在所有的HTML表单和AJAX请求当中包含了一个特殊的token,而请求来自于其他的应用的时候,你就可以检测到。所有的这些选项在新创建的Rails2.0项目当中默认就是打开的状态,对于你升级到Rails2.0的项目要打开这一个选项也很容易,使用 ActionController::Base.protect_from_forgery就可以了,详细的说明请看: ActionController::RequestForgeryProtection。

对于允许用户在应用当中提交HTML代码的情况,防止XSS攻击现在也变得更加简单了。TextHelper#sanitize方法从过滤黑名单变成了验证白名单。如果你已经使用了sanitize方法,你就会自动获得更好的保护。当然你也可以自行调整默认允许的HTML tag,请看TextHelper#sanitize获取详情。

最后,我们还添加了“HTTP only cookies”支持,这一特性并不是所有的浏览器都支持,但是对于支持的浏览器你就可以派上用场了。

Action Pack: Exception handling

大多数常见的异常都可以统一处理,而不是每个需要单独的处理。通常情况下,你只需要覆盖rescue_action_in_public方法,来进行统一的异常处理即可。但是你也有可能需要使用自己的case语句来处理特定场合的异常。因此我们现在提供了一个类级别的宏叫做rescue_from,你可以使用它来声明针对某个特定的Action来捕获异常,例如:

 
ruby 代码

   1. class PostsController < ApplicationController  
   2.   rescue_from User::NotAuthorized, :with => :deny_access 
   3.  
   4.   protected  
   5.     def deny_access  
   6.       ...  
   7.     end 
   8. end 

 

Action Pack: Cookie store sessions

Rails2.0默认的Session存储机制现在是基于Cookie的方案。Session也可以不必存储在服务器的文件系统或者数据库系统里面,而是以ruby hash的格式每次作为cookie发送到客户端浏览器来保持。这样做不单单会比传统的服务器端保存Session的方式要快一些,而且完全不需要维护。你不需要在服务器上面运行cron job任务来清理session文件,也不必担心因为你忘记清理session文件导致你的服务器/tmp分区下面因为塞满了50万的session文件,从而让你的服务器crash掉。

如果你能够遵循一些最佳实践,保持session最小化,例如只在session里面存放user_id和flash信息,那么这种session 机制就会很棒。但是,如果你打算在session里面保存核弹发射代码的话,这一存储机制就不是一个好主意了。因为它们无法被加密(例如用户伪造 is_admin=true),它们很容易被用户看到。如果对于你的应用程序来说,这是一个必须注意的问题,那么你就应该使用传统的session存储机制(但你首先应该先做一下调查)。

Action Pack: New request profiler

在一个真实的应用当中找出性能瓶颈是一个艰难的活,但有了我们新的request profiler,工作会变得简单很多。request profiler跟踪一个完整的执行脚本,报告执行结果,你可以像这样来使用它:

 
ruby 代码

   1. $ cat login_session.rb  
   2. get_with_redirect '/'  
   3. say "GET / => #{path}"   
   4. post_with_redirect '/sessions', :username => 'john', :password => 'doe'  
   5. say "POST /sessions => #{path}"   
   6. $ ./script/performance/request -n 10 login_session.rb 

 

这样你就可以得到一份非常详尽的HTML和text格式的运行报告,每个步骤执行了多少时间,有了这个东西,你就可以很清楚的知道怎样优化你的应用程序了。

Action Pack: Miscellaneous

还有一个值得一提的是AtomFeedHelper。它可以让你更容易的使用增强的builder格式来创建RSS输出,例如:

 
ruby 代码

   1. # index.atom.builder:  
   2. atom_feed do |feed|  
   3.   feed.title("My great blog!")  
   4.   feed.updated((@posts.first.created_at))  
   5.  
   6.   for post in @posts 
   7.     feed.entry(post) do |entry|  
   8.       entry.title(post.title)  
   9.       entry.content(post.body, :type => 'html')  
  10.  
  11.       entry.author do |author|  
  12.         author.name("DHH")  
  13.       end 
  14.     end 
  15.   end 
  16. end 

 

在Rails2.0里面,我们已经进行了大量的性能优化,因此对于helper的调用开销已经变得很小了,而且对于简单的命名路由,我们还使用了cache,让它们能够执行的更快。

最后我们把in_place_editor和autocomplete_for这两个helper从Rails框架当中挪出去,放到了Rails官方SVN的插件目录下面了。

Active Record: Performance

ActiveRecord进行了无数的bug修复和少量的调整,但是仍然有一些值得一提的亮点。我们添加了一个非常简单的查询缓存,它能够在同一个请求的过程当中记录相似的SQL调用,并且缓存查询结果。查询缓存对于那些很难用:include来解决的N+1次查询问题会非常有帮助。另外我们也彻底提高了fixtures的性能,对于大多数常规的测试套件,性能提高了50-100%。

Active Record: Sexy migrations

现在我们有一种新的migration文件中声明的格式。以前我们是这样写的:

 
ruby 代码

   1. create_table :people do |t|  
   2.   t.column, "account_id",  :integer 
   3.   t.column, "first_name",  :string, :null => false 
   4.   t.column, "last_name",   :string, :null => false 
   5.   t.column, "description", :text 
   6.   t.column, "created_at",  :datetime 
   7.   t.column, "updated_at",  :datetime 
   8. end 

 

而现在,我们可以这样写:

 
ruby 代码

   1. create_table :people do |t|  
   2.   t.integer :account_id 
   3.   t.string  :first_name, :last_name, :null => false 
   4.   t.text    :description 
   5.   t.timestamps  
   6. end 

 

Active Record: Foxy fixtures

近来fixtures功能受到了很多抨击,对于fixtures的批评主要集中在fixtures之间声明的依赖关系上。在fixtures里面通过声明id属性来作为主键,从而构造fixtures之间的关联关系是个郁闷的活。现在你可以通过这种方式声明和编写fixtures:

 
ruby 代码

   1. # sellers.yml  
   2. shopify:  
   3.   name: Shopify  
   4.  
   5. # products.yml  
   6. pimp_cup:  
   7.   seller: shopify  
   8.   name: Pimp cup  

 

如上面所示,不再需要定义id属性,通过id来关联fixtures了,你现在可以直接使用fixtures的名字来建立关联关系。

Active Record: XML in, JSON out

ActiveRecord支持XML的序列化已经有一段时间了。在Rails2.0当中,我们还添加了XML的反序列化功能,所以你现在可以这样用 Person.new.from_xml(“David“) 来获取person对象。当然我们也添加了序列化到JSON格式的功能,它和XML序列化的支持是一样的,还可以支持关联关系的抓取,只需要写 person.to_json就可以了。

Active Record: Shedding some weight

为了让ActiveRecord更加简洁和通用,我们把acts_as_list,acts_as_tree等acts_as_xxx功能挪出了 Rails,放在了Rails官方的SVN插件里面。如果你需要用到诸如acts_as_list的话,那么你需要安装这个插件,你可以. /script/plugin install acts_as_list 来安装,安装好以后,acts_as_list功能又回来了,用法没有任何区别。

更加激进一点的改动是我们把所有的商业数据库驱动全部挪到了外部的gem包里面。因此Rails2.0仅仅自带MySQL、SQLite和 PostgreSQL数据库驱动。这三个数据库是我们更加积极测试和支持的数据库。当然,这并非意味着我们排斥商业数据库,我们只是希望它们能够在 Rails发行版本之外保持自己独立的开发和发布计划。对于商业数据库来说,这其实是一件好事情,让厂商可以在基础版本上面添加更多的异常和处理机制,使它们工作的更好。

所有的商业数据库驱动现在都放在gems包里面,符合如下命名规则:activerecord-XYZ-adapter。所以如果你安装了 activerecord-oracle-adapter包,那么这台机器上面所有的各种版本的Rails应用程序都可以访问Oracle数据库了,你却无需修改任何一行应用的代码。

这种方式对于新的数据库驱动来说在Rails社区也可以更加方便的获得支持。只要你把数据库驱动安装命名规范打包成为gem,用户就可以安装这个gem,立刻在Rails程序当中使用到它们了。

Active Record: with_scope with a dash of syntactic vinegar

ActiveRecord::Base.with_scope被劝阻使用以避免用户在controoler,特别是filter里面误用。现在我们鼓励用户仅仅在model里面使用这种格式,这也是当初我们设计这项功能的初衷和保持一个良好实践的需要。当然,这仅仅只是鼓励和劝阻,如果你在衡量得失之后,非要坚持在model之外使用with_scope的话,你尽管可以用这种方式来调用:.send(:with_scope)。

ActionWebService out, ActiveResource in

在SOAP和REST的争论当中,Rails选择坚定的站在REST这一边似乎不出人意料。如果你并没有集成其他异构系统需求的话,那么我们强烈劝阻你使用SOAP。作为很自然的选择,ActionWebService现在并不在Rails框架的依赖当中,gem包仍然保留,但是这是一个重要的信息,建议你尽量不用它。

与此同时,我们把新的ActiveResource包从beta版本升级挪入Rails框架之内。ActiveResource很像 ActiveRecord,只不过面向的不是model,而是资源。它有和ActiveRecord非常相似的API,并且可以和基于资源的Rails应用良好的整合。例如,ActiveResource提供了一个vanilla scaffold,你可以参考。

ActiveSupport

ActiveSupport没有多少新东西,我们只是添加了大量新的方法,例如Array#rand可以随机取得集合的元素, Hash#except可以过滤掉不想要的key和其他大量的Date类型的扩展。另外单元测试增加了一个assert_difference的便利方法。简而言之,仅仅是bugfix和调整。

Action Mailer

Action Mailer有不少更新,除了一大堆bugfix之外,我们添加了一个选项可以注册可选的模板渲染机制,此外还给email的单元测试添加一套assert_emails,例如验证邮件投递的数量:
ruby 代码

   1. assert_emails 1 do post :signup, :name => ‘Jonathan’ end 

 

Rails: The debugger is back

为了更好的整合调试器,我们对Rails框架整体进行了一系列的改进。我最得意之作就是调试器的断点功能回来了,这不仅仅只是一个类似irb dump那样的断点数据观测,而是一个真正的调试器。你可以单步前进、单步后退、列举当前位置等等。这完全得益于ruby-debug这个gem包,所以我们推荐你安装这个gem包,然后Rails新的调试器就可以工作了。

如果你想使用调试器,那么首先安装ruby-debug这个gem包,然后把“debugger”命令写在你的应用程序当中,接着用- debugger或者-u参数启动服务器,当代码执行到debugger命令的地方,你就可以在运行服务器的终端上面直接操纵应用了,完全不需要使用 script/breakpointer或者其他的什么东西。当然你还可以在单元测试当中使用调试器。

Rails: Clean up your environment

在Rails2.0之前的版本,config/environment.rb当中塞满了各种各样的启动配置信息和代码。现在你可以把这些东西分门别类的放在独立的文件当中,然后把文件放在config/initializers目录下面,当Rails应用启动的时候,它们就会被自动的加载。新的 Rails2.0应用自带了两个这样的例子,分别是inflections.rb(定义你自己的单复数规则)和mime_types.rb(定义你自己的扩展类型)。我们鼓励你把启动配置信息放在独立的文件里面,而不要去改动environment.rb文件。

Rails: Easier plugin order

现在我们开始把很多功能从Rails剥离出来放到插件里面去了,你也许有可能有一些其他依赖这些功能的插件。例如在你自己的 acts_as_extra_cool_list插件被加载之前,需要首先加载acts_as_list插件,因为 acts_as_extra_cool_list扩展了acts_as_list。

在Rails2.0之前,设定插件的加载次序需要你在config.plugins里面列举所有的插件。这种做法主要的问题是当你仅仅需要 acts_as_list插件加载次序在前,而不关心其他插件加载次序的时候,未免需要多写太多东西。而现在你仅仅这样写就可以了: config.plugins = [ :acts_as_list, :all ]。

And hundreds upon hundreds of other improvements

上面我提到的这么多特性也仅仅只是Rails2.0的冰山一角。我们可以列举出来成千上万的bug修复、功能调优、新功能的添加。许许多多的热情的贡献者不知疲倦的在各个细节上面改进Rails框架,但是这些工作都是非常重要的。

我希望你能够不介意麻烦去阅读Rails的CHANGELOG,了解更多的Rails2.0的改进。

So how do I upgrade?

如果你希望升级到Rails2.0,那么你应该首先升级到Rails 1.2.6版本。它对于所有在Rails2.0当中被挪出去的功能给出了警告信息。如果你的应用程序在Rails 1.2.6上面良好的运行,并且没有任何警告信息,那么你就可以升级到Rails 2.0了。当然如果你用到了Rails的分页的话,你需要安装classic_pagination这个插件。如果你需要使用Oracle数据库,那么你需要安装activerecord-oracle-adapter这个gem包,诸如此类等等等等。

新鲜的思想给数据存储市场所有的方面都带来了改善的硬件和软件。由于能够真正称做“颠覆性的”的技术进步,存储已经从一个重要而被忽略的工具变成了能够为企业提供竞争优势的东西。

当我们说颠覆性的时候,我们是指完全改变一个行业的东西,考虑一下“苹果iPod的出现和索尼Walkman的退出市场”。

下面是近出现的令存储行业一片沸腾的一些新技术:

Seanodes和RevStor公司:使用现有的服务器空间进行存储。

Xsigo Systems:首次做I/O硬件虚拟化。

Gear6:缓存与携带。

Pillar Data Systems: 商品化硬件和出色的软件效率。

Moonwalk:在节点面向主体的软件中不需要中间件软件。

Panasas:使用并行文件系统打开I/O的高速通道。

RPost: 注册的电子邮件,律师喜欢。

Caringo: 读/写功能的保时捷。

CopperEye:把高速索引功能与商品化硬件结合起来以进行大海捞针式的搜索。

下面简单介绍上述每一项突破性的技术以及这些技术对于数据存储行业产生的颠覆性的影响。

颠覆者:法国Seanodes公司

颠覆性技术:几乎所有传统的存储公司都想销售其阵列或者存储服务器。

Seanodes是位于巴黎的一家只有25个人的新兴企业。这家公司在11月20日推出了一种革命性的存储软件,首次让机构使用不充分的内部应用服务器存储空间用作虚拟化的存储池。

Seanodes新的Exanodes软件使用一种为高性能计算和企业环境设计的新架构识别应用服务器中没有使用的存储空间,并且把这个存储空间应用于公司的生产流程中。

Seanodes首席执行官和创始人Jacques Baldinger对eWEEK网站说,我们正在做VMware一直为应用服务器做的存储工作。Exanodes软件是完全对称的:当VMware汇聚、组织和合并在应用服务器中的CPU功能时,Exanodes软件汇聚、组织和合并应用服务器中的存储设备。

颠覆者:美国RevStor公司

颠覆性技术:见上述“Seanodes”公司

新进入存储解决方案市场的RevStor公司在11月份推出了SANware软件。这个新的软件产品能够利用连接到网络的台式电脑、笔记本电脑和服务器中的没有使用的存储空间,把这些存储空间转变为一个单一的存储网格,与Seanodes公司的产品类似。文件能够被分解成许多块并且以看起来好像是随机的方式存储在多个地方。这是访问性、安全和资产利用等方面的一个技术突破。

RevStor公司创始人和首席执行官Russ Felker介绍说,在此之前,管理多台计算机的能力一直限制在客户定制的模式,大企业解决方案将耗费数万美元。SANware使用一种正在申请专利的分割和加密算法开发出一种单一的使用方便的应用程序改变了这种情况。尽管其使用了独特的方法,SANware对计算机性能的影响只有大约1至3,用户几乎都察觉不到。

颠覆者:澳大利亚的Moonwalk

颠覆性技术:企业能够在分层次的存储局域网存储系统中使用的技术。

澳大利亚的Moonwalk公司4月份推出了它称之为“包括一切的数据管理和保护软件”Moonwalk 6.0套装软件。

Moonwalk首席执行官Peter Harvey对eWEEK网站说,这个软件不使用任何中间件软件,能够实现整个企业范围的数据移植、拷贝和移动的自动化和积极的管理。这个软件使用在每一个节点上的1MB至4MB的“代理”像存储管理员一样处理数据移动。

位于澳大利亚Milton的Moonwalk公司在这个软件中取消了分层次的存储方法和存储资源管理应用程序。这些应用程序仅提 供了存储使用的可见性。

颠覆者:美国Xsigo公司

颠覆性技术:存储经理和首席信息官将非常高兴地尽快把这个技术用于其系统中。

Xsigo Systems可能是又一家名称古怪,很难读出名称发音的IT公司(这家公司名称的发音实际上是See-go)。但是,这家公司很有可能成为数据中心领域知名的公司。

这家位于加州桑尼维尔的Xsigo经过的三年的研发之后在9月份举行的VMworld会议上推出了一种产品。Xsigo的主要产品是售价为3万美元的数据中心设备“VP780 I/O Director”。Xsigo坚持称,这个产品将打开迄今为至很难接触到的通向数据中心的I/O领域。

I/O Director使用特殊的处理器和InfiniBand连接,通过虚拟化经过系统的数据流克服普通服务器I/O的局限性。这种设备合并电缆连接和使用虚拟资源替换多个物理网络和存储接口(网络接口卡和主机总线适配器)。这些虚拟资源就像同样的物理设备的应用程序和操作系统一样。

颠覆者:美国的Gear6公司

颠覆性技术:没有直接影响到传统的存储局域网厂商,因为这个技术能够作为一个插件集成到任何现有的系统中。然而,作为一个单独的产品,它将取代一些老式的存储系统。

Gear6认为,避开人们一直怀疑的I/O存储瓶颈的最佳途径是增加主要缓存的容量。这将取消传统的网络存储提供商使用的所有的分层次的通道。

这家公司的CACHEfx设备为依靠向集群和其它I/O密集型设备高速传输数据的机构提供大规模可伸缩的、集中的存储缓存解决方案。Gear6的设备通过消除共享的I/O瓶颈提高了数据中心I/O性能和提高服务器使用水平,帮助企业实现存储和服务器投资的最大化。

Gear6位于加州圣何塞,提供服务器虚拟化、集群计算和网络规模环境对应用程序工作量影响的状况,即使在工作量高峰状态也能够动态改善和管理可持续的I/O性能。

颠覆者:美国的Caringo

颠覆性技术:传统的存储公司和存储经理对于这种技术尽快应用于他们的系统将感到非常高兴。

Caringo拥有专利的CAStor存储I/O架构旨在为小型、中型和大型文件提供高性能。这些文件包括电子邮件信息、文件和图像以及丰富媒体和视频等内容。但是,这个区别是:如果大多数系统的性能性当与一辆大众汽车,那么,Caringo就相当于一辆保时捷汽车。

测试和用户已经表明,32个节点的CAStor集群能够提供32K文件的大约每秒写3200次和读2500次的性能。例如,这台设备每天(24小时工作)能够写276亿次,在处理电子邮件通讯量最大的环境中是非常充分的。

颠覆者:美国的Panasas公司。

颠覆性技术:任何其它存储系统都使用正常的NFS。几乎所有的存储系统目前都这样做。

存储系统厂商Panasas很快将在高性能和开源软件领域引起轰动。这家公司最近向开源软件团体开放了名为“DirectFLOW”的高级并行文件系统的源代码。

Panasas创始人和首席技术官Garth Gibson说,这种并行网络文件系统(也称所pNFS)是Panasas公司创建的一种复杂的技术,旨在解决存储I/O瓶颈和加快用户应用并行存储解决方案。这种技术能够实现客户机与存储设备之间的直接的并行数据传输,而不是标准的、更窄的、单路文件系统。

这相当于增加了第二层双向快车道。一条道用于数据,另一条道用于元数据,使系统I/O提高一倍。

pNFS是NFS 4.1版的一个重要组件,是10几年来广泛应用的NFS的一次重要的性能升级。

颠覆者:美国Pillar数据系统公司

颠覆性技术:几乎颠覆了所有传统的存储公司。

Pillarg数据系统公司创建于2001年,几乎完全是由甲骨文创始人和首席执行官拉里-埃里森出资建立的。这家公司开发中档 和大企业网络存储系统。其产品是企业应用中最有效的产品之一。

Pillar Data首席执行官、埃里森一手提拔的存储助手Mike Workman说,作为第二代存储提供商,Pillar Data吸取了老厂商的教训,推出了在许多方面领先于其它厂商的新设计。

该公司的Pillar Axiom软件在基于政策的管理功能的推动下在一个集中管理的存储平台上集成了存储局域网和网络附加存储功能。Pillar Axiom系统把多层企业网络存储整合为一个单一的系统,能够升级到数百TB的存储容量。

颠覆者:美国的RPost公司。

颠覆性技术:颠覆了传统的电子邮件存档公司。

新的立法和法院裁决认为,电子信息与纸的文件具有同样的法律效力。然而,如果对方不愿意承认他们收到你的电子邮件和这封电子邮件说了你所说的事情,你的证据的资格和辩护就成了问题,你就遇到了一个重大的法律问题。

注册的电子邮件向发件人提供一个验证的证明,证明这封电子邮件已经发出并且合法地发送到了任何互联网地址。收件人通过电子邮件收到一个收据,证明内容、时间和法律送达。RPost注册的电子邮件最大线度地减少了否认收到电子邮件或者内容,把责任减小的最小程度并且让用户更好地理解实际上发送了什么信息,发送给谁,什么时间。

RPost注册的电子邮件为任何注册的电子邮件发件人发送给全球任何地方的收件人的电子邮件提供了合法的和可验证的证明和保护,无论收件人使用什么系统或者软件,不管他们如何进行设置,也不需要他们以任何方式回复。成本:每天每用户1每元。

颠覆者:英国的CopperEye公司。

颠覆性技术:颠覆了所有其它传统的存储公司。

CopperEye公司的Greenwich服务器是第一种把高级的索引系统与现成的商品化存储硬件结合在一起的存储软件产品。

CopperEye能够实现在大量商务数据进入数据库之前最快速度地访问大量商务数据(多达数TB),允许商务智能软件提供不断输入数据的数据库的商业价值,而不必付出成本和影响重新构造一个基础设施。

CopperEye首席执行官Kate Mitchell介绍说,CopperEye的方法是,存储在商业数据库中的许多商业交易数据一旦创建完毕就不能改变,因此不需要关系数据库的能力和高级开销。这些数据是大量发生的历史交易,必须按照法律规定的期限和商业目的进行保留,当提出选择性的查询时,按照用户要求返回非常具体的一套记录。(ccw)

WordPress 2.3.2 Released

| No Comments | No TrackBacks

WordPress 2.3.2 is an urgent security release that fixes a bug that can be used to expose your draft posts. 2.3.2 also suppresses some error messages that can give away information about your database table structure and limits and stops some information leaks in the XML-RPC and APP implementations. Get 2.3.2 now to protect your blog from these disclosures.

As a little bonus, 2.3.2 allows you to define a custom DB error page. Place your custom template at wp-content/db-error.php. If WP has a problem connecting to your database, this page will displayed rather than the default error message.

For more detail on what’s new in 2.3.2, view the list of fixed bugs and see the changes between 2.3.1 and 2.3.2.

Messenger 9将与Google Talk互通互联

| No Comments | No TrackBacks

12月29日消息,据国外媒体报道,微软Live Messenger 9将于Google Talk实现互通互联。

目前,尽管Live Messenger 9尚在内部测试阶段,但已经实现与Google Talk的相互通信。此外,Messenger 9还具有多点同时登录、自定义联系人声音、支持动态头像和举报垃圾邮件等4项新功能,

而且,由于Google Talk已经与AIM和ICQ相互通信,微软的Live Messenger 9也将支持AIM和ICQ。 去年7月,微软Live Messenger 已经与雅虎通(Yahoo Messenger)实现文本通信。

另据微软雇员Andrew Jenks透露,Windows Live Messenger 9.0将于2008年底上市。(ccidnet)

AOL将正式停止开发Netscape浏览器

| No Comments | No TrackBacks

12月29日消息,据外电报道,火狐浏览器很长时间以来一直使Netscape(网景)浏览器暗然失色。不过,值得注意的是,AOL将正式停止开发Netscape浏览器软件。

Netscape公司的Tom Drapeau星期五(12月28日)在博客中称,AOL的重点是向以广告支持的网络业务过渡,没有留下使Netscape浏览器软件达到用户期望所需要 的投资规模。考虑到AOL当前的业务重点和Mozilla基金会开发了重要的火狐浏览器软件,我们认为现在正是结束Netscape品牌浏览器软件开发, 把控制权完全交给Mozilla,并且鼓励Netscape用户使用火狐浏览器的大好时机。

Drapeau称,对Netscape Navigator浏览器的技术支持将持续到2008年2月1日。但是,AOL建议用户改用火狐浏览器。Netscape.com门户网站仍然存在。怀旧的人可以把火狐浏览器的皮肤改为Netscape的外观。

Drapeau称,AOL设法利用Mozilla基金会的火狐浏览器振兴Netscape浏览器企图没有取得成功。虽然AOL内部团队投入了大量的时间 和精力振兴Netscape Navigator浏览器,但是,这些努力都没有成功地使它获取微软IE浏览器的市场份额。现在,Netscape Navigator浏览器的技术支持仅限于少数几个工程师。他们的任务是为火狐浏览器制作Netscape的皮肤。

Netscape Navigator浏览器悲伤的一章已经结束了。但是,它还会随着火狐浏览器与微软IE的竞争继续活下去。(ccidnet)

苹果计划发布iTunes中的新功能,iTunes Tagging-ready,在下月中旬旧金山举行的Macworld Expo上,苹果将会公布iPod Docks接口的高清收音机设备.

这些设备将拥有标签功能,电台在播放高清信号的时候会搭载相应的Tag,并自动将这些信息列表到iPod,与电脑同步后,播放列表会出现在iTunes中,并可以由消费者选择是否从iTunes Store购买刚刚听到的内容.高清广播技术的发明者iBiquity Digital已经向苹果授权,目前Sony, Griffin Technology, Cambridge Soundworks都发布了相应的HD广播产品,而苹果是第一个明确支持播放标签的.

iTunes Tagging 迅速引来了一大批支持者,CBS Radio, Clear Channel, Cumulus, Cox, Entercom,Greater Media等著名电台齐刷刷地表示将支持iTunes标签功能,他们相信iTunes将给广播业界带来强大的支持.iTunes Tagging 将让用户第一时间接收到最新的唱片信息,而广播机构将能获得直接的分成收入,是一个双赢的市场.(cnbeta)

2008年:你是否准备好迎接新的浏览器?

| No Comments | No TrackBacks

尽管全世界的用户都在翘首以待厂商对Internet Explorer 7(IE7) 的完全支持,IE 8看起来好像马上呼之欲出了。

一直以来,微软一直对其发展蓝图守口如瓶。但是,微软观察家Mary Jo Foley在最近发布的一篇博客中写到:“微软将在2008年上半年发布IE 8 的测试版(Public Build)。” Mary Jo Foley还预测IE 8新增的功能将包括:更好地支持CSS;添加网页锁定功能;对IE渲染引擎和Javascript升级;改进用户名和密码管理系统等等功能

微软称 IE 8已经通过了Web标准计划(Web Standards Project)的“Acid2 Browser Test”测试,从而克服了潜在的反托拉斯行动(potential anti-trust action)。它可以显示浏览器是否会用某一个方式呈现网站。如果这个浏览器可以正确地呈现网站,也就意味着这个浏览器支持某一个公认的网络标准。微软还在Channel 9 Web网站上公布了一个IE 8通过“Acid2 Browser Test”测试的视频。

微软是在层叠样式表单(CSS)和简易信息聚合(RSS)等一些网络标准被研发出来之前就已经开发IE 浏览器了,因此一些旧版本的IE是不支持目前的一些标准的,所以开发人员要为IE 8写一些支持新Web标准的程序。同时微软表示,因为目前市场上已经多年没有可以与IE竞争的浏览器,所以微软并不着急升级IE来迎合Web标准。

去年10月微软发布IE 7浏览器,之后微软又觉得有必要为新的Web标准推出新的IE浏览器。不过微软IE浏览器部门总经理Dean Hachamovitch在IE博客中透露,现在很多网站都是根据旧版IE制作的,并不能在IE 7上完美呈现。微软希望在IE 8中解决这些问题。另外,微软说表示会根据IE 8 beta版的试用反馈来决定何时推出正式版。

Mozilla也不甘落后,近期刚刚发布了Firefox 3的测试版。Firefox 3使用了最新的Gecko 1.9排版引擎,支持硬件加速,全面提升了HTML的渲染速度,支持全屏缩放,并通过了Acid 2 test,对CSS提供了完美的支持.

Firefox 3进行了大约900处bug修正和功能改进,并提供了一些新特性和用户界面增强,其中最明显的进步莫过于内存占用和泄漏问题改善。据悉,新版解决了自 2.0版以来的300多处内存泄漏问题。Firefox 3 另一个比较引人注目的改进是它提供了最新的“位置管理器(Places Organizer)”,利用它,你不但可以完成传统意义上的书签组织工作,同样也可以创建和保存自己的搜索行为。除此之外,书签的收藏按钮也直接变成了一个闪亮的五角星,融入了用户的浏览器地址栏中;而用户也可以在自己以前所珍藏的书签身上应用先进的标签(Tag)功能了。

新版的Firefox 3还提供全新的“位置管理器(Places Organizer)”。基本上来讲,它是一款专注于标签功能(Tags)和智能搜索的升级版书签管理器(你可以这样想象,如果你的Firefox是千千静听,书签是mp3音乐的话,这个管理器就是一份智能化的播放列表)。现在,你可以使用三条规则来保存搜索行为:“包含此文本(Containing the text)”,“已浏览(Visited)”和 “位置(Location)”。在保存搜索行为的时候,这三条规则可以分开使用,也可以同时使用。

即将到来的Firefox 3不仅会有更好的性能、更丰富的特性,还会有更好看的图标体系,不过只有到开发收尾阶段的时候才会最终定案。这一方面是因为新图标需要首先等待用户界面设计稳定下来,而且自身设计也相当耗时间,另外图标设计对性能和稳定性没什么影响,因此开发优先级相对较低。当然,把图标设计放在后程也有一个问题,就是很难得到足够的用户反馈,弄不好最后出来的图标就会被很多人痛骂。鉴于此,Mozilla用户体验设计师Alex Faaborg在其博客里公布了Firefox 3的图标样式,邀请大家一起讨论。Firefox 3会有大约120个图标,算上不同尺寸的变种就会达到190个,Windows XP、Windows Vista、Linux、Mac OS X四个平台下都是如此。

Firefox 3将有一个对摄影师来说非常有价值的新特性——色彩管理——这个开源浏览器将可以读取图片中存储的色彩设置信息,根据显示器显示效果不同而对色彩进行调整,以获得更精确的色彩渲染。

快速,稳定,安全,宜用性,全功能,是用户社区对最新发布的Mozilla FireFox 3的看法. 新Firefox甚至在断网的情况下可以运行网络化的程序

Firefox 3新特性列举如下:

1.改进的扩展支持;

2.远程收藏夹功能;

3.OpenID的支持;

4.集成了安全气囊式崩溃报告功能;

5.微格式的支持(microformats support?我只知道它会支持动画版的PNG格式);

6.将网页保存为PDF文件;

浏览器的创新是一件好事,但对用户来说也绝不是信手拈来就能用得的。只是一定要对这些2008年新发布的浏览器对您的项目的影响作一个计划和预算。 (硅谷动力)

微软Java虚拟机将于2007年12月31日终止

| No Comments | No TrackBacks

 基于3年多前与Sun达成的协议,微软将在2007年年底,即2007年12月31日正式终止对MSJVM的支持。

微软将不再分发 MSJVM,并且不再为 MSJVM 提供增强功能。按微软惯例,相关安全补丁也不再发布。JVM是Java虚拟机的简称,利用JVM软件,用户能够运行以Java编写的应用程序,而Java编程语言则是由Sun公司创造的。微软与Sun曾为此打过十几年的官司,最终以微软败诉收场。"

在此之前,微软已经鼓励用户积极地采取措施,以便及时了解废弃软件的相关信息并停止使用 MSJVM。目前包括 MSJVM 的微软产品和 SKU 也将陆续报废,或由不包含 MSJVM 的版本代替。

同时微软建议了一些过渡方案。“尽管微软 不能保证其他公司提供的解决方案的安全性和可靠性,但是有几种 Java Runtime Environment (JRE) 解决方案可供客户选择,以便在从 MSJVM 过渡的时候采用。”(csdn)