﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-墙头草的Java-随笔分类-业界资讯</title><link>http://www.blogjava.net/javagrass/category/36208.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 17 Nov 2010 21:31:47 GMT</lastBuildDate><pubDate>Wed, 17 Nov 2010 21:31:47 GMT</pubDate><ttl>60</ttl><item><title>苹果加入甲骨文OpenJDK项目 Java实现跨平台发展</title><link>http://www.blogjava.net/javagrass/archive/2010/11/17/338307.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Wed, 17 Nov 2010 13:27:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2010/11/17/338307.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/338307.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2010/11/17/338307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/338307.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/338307.html</trackback:ping><description><![CDATA[<p align="left">&nbsp;&nbsp;&nbsp;
苹果表示，OpenJDK项目将把苹果Java技术面向开源软件程序员开放，在获得源代码之后，程序员可以开发出更多应用。苹果同时表示，苹果将继续为
Mac OS X Snow Leopard和即将推出的Mac OS X Lion系统提供Java SE 6，而针对Mac OS X系统的Java
SE 7和未来版本将由甲骨文提供。<a href="http://www.douban.com/people/2838529/recs">我的推荐</a> </p>
<p align="left">　　甲骨文高级副总裁哈桑里兹维（Hasan
Rizvi）称：&#8220;很高兴苹果能够成为OpenJDK社区中的一员，Mac OS
X版Java体现了我们对Java跨平台发展的承诺。Java程序员社区能够确保Java运行环境始终处于行业前沿，并继续为未来的Mac OS
X提供Java的更新版本。&#8221; <br />
</p>
<p>&nbsp;&nbsp;&nbsp; 来自外国的计算机安全专家Dino Dai Zovi认为这样将使Mac OS更加安全。Dino Dai
Zovi表示，大多数Mac用户一般都用不上Java，苹果将Mac平台上的Java交由甲骨文管理将使Mac用户更加安全，否则Java上的漏洞很容易
被利用来攻击Mac OS操作系统。</p>
<img src ="http://www.blogjava.net/javagrass/aggbug/338307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2010-11-17 21:27 <a href="http://www.blogjava.net/javagrass/archive/2010/11/17/338307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析称微软可能会支持并发展Java平台</title><link>http://www.blogjava.net/javagrass/archive/2010/11/01/336683.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Mon, 01 Nov 2010 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2010/11/01/336683.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/336683.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2010/11/01/336683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/336683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/336683.html</trackback:ping><description><![CDATA[北京时间11月1日，据国外媒体报道，在微软专业开发者大会的开幕式上有一些不同寻常的事情发生，鲍尔默对Java平台大加赞赏并且罗列了在Azure中对该平台的一些新支持。而微软与开源社区的关系一直冷淡，因此许多人都在猜测这个事件的深层意义。<a href="http://xiufaxing.blogbus.com/logs/81628777.html">制造超美小脸 最爱约会发型TOP9</a><br />
Forrester首席分析师Jeffrey Hammond称，如果微软不支持Java就会失去更多的业务，特别是一些使用.net和Java的大型企业中。在一年前，Hammond建议微软同时支 持.net和Java以便在云计算中更有竞争力，新开发的Azure就迎合了这种理念。<br />
<br />
微软在开源方面的努力也改变了微软的形象，但是有分析家认为微软不仅在试图窃取开发者社区，而且是在将对Java的重视从Oracle那里转移到别处。<br />
<br />
目前许多Java开发者正在注视着这个领域，最终结果可能是对于.net和Java以及开发者社区的双重提升。<br />
<img src ="http://www.blogjava.net/javagrass/aggbug/336683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2010-11-01 15:18 <a href="http://www.blogjava.net/javagrass/archive/2010/11/01/336683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新兴的行业SOA的最佳实践</title><link>http://www.blogjava.net/javagrass/archive/2010/03/14/315387.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Sun, 14 Mar 2010 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2010/03/14/315387.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/315387.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2010/03/14/315387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/315387.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/315387.html</trackback:ping><description><![CDATA[<p>根据Larry Pizette，Salim Semy，Geoffrey Raines和Steve Foote等合著的MITRE新白皮书，以下几个方面是成功的SOA实施的最佳实践：</p>
<ul>
    <li><strong>判断SOA是否是最好的选择</strong>，根据白皮书：
    <blockquote>虽然SOA能够带来重用、敏捷及松耦合等好处，然而这些好处却不一定总是软件架构师首选的考虑因素。</blockquote>
    例如，实时系统或者网络限制的分布式系统，SOA可能就不是合适的架构选型。</li>
    <li><strong>从解决业务及运维中的挑战来开展SOA活动</strong>，为了使企业能够完全收获SOA实施带来的在时间及成本上的节约，它关注的应该是解决业
    务问题而非只关注技术。
    <blockquote>如果企业的SOA采用是由解决业务问题而驱动的，并与之对齐，那么企业将会看到共享的服务，业务敏捷，和简化的整合带来的好处。
    </blockquote>
    作者们给出了一组SOA实施的工业案例，在这些案例中，都对业务目标进行了很好的定义。</li>
    <li><strong>将服务用于支持关键的业务流程的步骤</strong>，SOA主要的价值主张之一就是通过提供服务并实现能被多个业务流程公用的关键能力来降低IT
    冗余度。
    <blockquote>通过关注跨企业使用的业务流程步骤，服务的重用就自然变成架构的产出之一&#8230;&#8230;将服务定位在合适的业务流程级别是非常必要的（如，
    服务所 包含的能力范围），这样它们就能被轻易地映射到业务流程步骤中。 </blockquote>
    作者们认为，服务的一个重要特征是松耦合，它能在对服务进行修改时带来灵活性。白皮书在最后还谈到了服务契约规范化以及服务可视化，这通常是通过服务注册
    实现的。</li>
    <li><strong>检查你的数据</strong>，
    这意味着SOA不会解决你的数据问题，却会把它们暴露出来。SOA带来灵活性的一种途径是实现业务和数据间的解耦。这通常会导致创建数据服务，由它们提供
    跨企业的通过服务对数据的访问。但是，作者们提醒到，
    <blockquote>
    实施SOA本身不会解决数据问题。在SOA让数据更易于访问的同时，因为数据质量、可用性以及不同社区在词汇上的差异，它依然可能是不可用的&#8230;&#8230;
    缺乏对数据的重视可能会损害SOA实施所带来的价值。</blockquote>
    作者们认为，在SOA实施中成功地融入数据需要：定义数据语义，用于保证在服务消费者和服务提供者之间数据交换的含义一致性；数据质量，用于消除冗
    余，不一致性或失效的数据及数据可用性&#8230;&#8230;提供能够支持异构的，或可能是不可预知服务消费者集合的的跨网络的分布式的数据服务。</li>
    <li><strong>开始于一小点，学习并发展</strong>，白皮书的作者们认为，SOA项目失败的主要原因之一是不合理的范围。
    <blockquote>&#8230;&#8230;架构师们往往希望把他们最初的SOA项目变成是整个企业范围的工作，即便从某个业务场景来看这并不合理&#8230;&#8230;采纳SOA时，最
    好从一小点开始，学习并发展。递增的方法允许我们在实施大范围的SOA项目之前收集经验和教训；它可以最小化业务风险并能递增地收获回报。然而，在界定
    SOA
    工作范围时，至关重要的几个方面是：解决有意义的业务问题、关注架构的检验、清晰地描述期望的产出以及对成功的评判尺度，还要吸取经验教训，以备在将来的
    工作中使用。</blockquote>
    白皮书的作者们基于对行业的研究，建议从试验性SOA开始，解决具体的业务问题并定义清晰的业务和架构成功的准则。他们还建议要吸取经验和教训，并在开展
    下一个SOA项目之前把学到的经验教训传授给企业的其他人员。</li>
    <li><strong>要有远见</strong>，即便从很小的SOA开始，追求长期的SOA远景也是非常重要的。
    <blockquote>今天构建的SOA的结果可能是面向某个特定服务消费者的耦合服务，可能是系统间两两互联的一些通道。此外，缺乏对将来或者不可知
    的使用的计划，SOA可能无法满足将来的服务需求。因此，在SOA实施中，设计时应该考虑到将来可能的需求发展。SOA的架设应该能支持扩容和扩展，既要
    包含 SOA部署的范围的扩展也要包含需求的扩展。</blockquote>
    作者们认为，确保远见的主要步骤包含：服务管理（通过监控），由它提供管理目标是否被很好地实现的信息，它还辅助定位问题及解决问题；确保服务实
    现的延伸性&#8230;&#8230;包含基础设施，使能服务交互，可扩展部署及测试活动；创建合适的安全基础设施等。</li>
    <li><strong>SOA的关键组件之一是治理的保障</strong>.
    <blockquote>对企业范围内的SOA采用中所必需的变更的成功实施需要政策和流程的参与，这主要都是受业务需求驱动的。企业对治理的保障对
    SOA项目的成功是至关重要的。</blockquote>
    白皮书中描述的治理的主要方面包括：架构——设立一个最低限度的约束集合来确保服务实施的一致性；基础设施——建立政策来确保基础设施平台（包
    括消息传输，安全和其他工具服务）在所有项目中都是标准的；信息——定义数据所有权、建立依附于企业所选的数据标准的政策及方针、设立政策来保障
    数据质量度量尺度的遵守等。服务编目——建立政策保证服务声明周期的一致性、策划业务及工具服务、确保开发服务时恰当地利用了现有的企业应用。 </li>
    <li><strong>设定投资回报预期</strong>， 基于行业研究，作者们指出：
    <blockquote>&#8230;&#8230;尽管节约开支是采用SOA的主要动机之一&#8230;&#8230;然而SOA采用的一个根本的挑战是，考虑到过高的学习曲线、技术技能和熟悉程度
    的缺失、成熟行
    业标准的缺失、以及用户企业管理能力的缺失（比如，治理）等情况，如何决定投资SOA来制定整体的SOA实施。一个企业要施行SOA方法，就应该对需要进
    行多少投资以及投资回报有理性的预期。</blockquote>
    他们强调，与传统的基于应用实施相比，最初的SOA实施几乎总要更昂贵一些，而且成本的节约并不会在企业的每个部门发生。在他们看来，大部分成本节
    约都是长期的，并且会反映在SOA提供的组织敏捷以及共享信息的能力上。此外，服务重用将带来维护成本的降低。</li>
</ul>
<h3><a href="http://www.itstrike.cn/Question/24d327c3-15d6-4451-bb95-18ccba6e0b2c">C#如何在打印文档中添加进一张已有的图片，并打印出来？
</a></h3>
<h3><a href="http://www.itstrike.cn/Question/d467a096-09eb-4042-88a4-707d73c61f76">C#如何通过api显示窗体在任务栏上的图标
</a></h3>
<h3><a href="http://www.itstrike.cn/Question/fecc118b-420b-4931-a434-4b0a2adb43f9">Linq中的not in 语句应该怎么写?
</a></h3>
<p>虽然白皮书相当高层，但是，它的确强调了大部分重要的SOA关注点。对于正在考虑进行SOA实施的人们，它可以的是一个很好的指引，对与SOA执行
者 的，它可以作为一个提醒——SOA不仅关心很酷的技术，还关心架构，业务和投资回报等。</p>
<img src ="http://www.blogjava.net/javagrass/aggbug/315387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2010-03-14 15:13 <a href="http://www.blogjava.net/javagrass/archive/2010/03/14/315387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Data Service for .NET 3.5 SP1更新“再次”发布</title><link>http://www.blogjava.net/javagrass/archive/2010/03/14/315386.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Sun, 14 Mar 2010 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2010/03/14/315386.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/315386.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2010/03/14/315386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/315386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/315386.html</trackback:ping><description><![CDATA[<p>1月底，ADO.NET Data Service团队&#8220;再次&#8221;发布了ADO.NET Data Service for .NET 3.5
SP1的更新。这次的更新实际上是所谓的1.5
CTP的正式发布。这个更新在2009年12月17日曾经发布过一次，不过由于遇到安装问题，很快就被下线了。这个更新带来了诸多新特性和功能加强。</p>
<ul>
    <li>投射（Projections）。让客户端可以通过投射功能，只获得实体对象中所需的属性；或者组合多个实体对象中的属性成为一个新的动态对象。有
    了投射，在客户端使用Data Service和在服务器端使用实体框架就很接近了。</li>
    <li>加强了的数据绑定。现在支持双向的数据绑定。</li>
    <li>行数量统计。之前的版本一直缺少一个重要的也是被大家强烈期待的特性，就是获取数据行的数量。没有这个特性，要知道某个数据的总数，只有把数据全部
    获取到客户端进行统计或者自己编写一个服务器端接口来单独计算。</li>
    <li>自定义feed。通过这个特性，开发人员可以自定义feed中的数据结构。</li>
    <li>服务端驱动的分页。从字面上理解，通过使用这个特性，客户端就可以直接获取到已经在服务器端分好页的数据。对性能的提高不言而喻。</li>
    <li>加强了BLOB的支持。虽然对BLOB的支持在第一个版本中已经支持，但是现在支持任意大小的BLOB数据，可以把元数据和BLOB的内
    容分离等。</li>
    <li>请求管道。服务器端在获取到客户端请求的时候，利用请求管道可以控制对Data Service的访问，可以实现自定义的HTTP响应缓存等等。</li>
    <li>&#8220;Data
    Service Provider&#8221;接口。新添了一个数据服务提供程序的接口，让开发人员可以编写自己的提供程序。在之前的版本中，Data
    Service只能暴露实体框架（EF）和任意.NET类；不过现在有这个接口，理论上可以把任意数据源暴露为Data Service了。</li>
</ul>
<p>当然这个版本也不是尽善尽美，比如还不支持诸如First()这样的很多扩展方法。</p>
<h3><a href="http://www.itstrike.cn/Question/7999bb9b-eff6-46af-bfc7-6606c2794ef4">web.config中怎么配置Access连接?
</a></h3>
<h3><a href="http://www.itstrike.cn/Question/285df329-aa4e-4b1e-8b9d-6e7776898a37">Asp.net如何清空页面上的所有TextBox
</a></h3>
<h3><a href="http://www.itstrike.cn/Question/b6b55262-eaec-4304-9732-7276e8ef6f24">Asp.net里的这两个符号有什么区别?
</a></h3>
<h3><a href="http://www.itstrike.cn/Question/524fc483-11ca-45e6-a216-be211c2274d1">Ado.net中常用的对象有哪些?
</a></h3>
<p>同时，ADO.NET Data Service团队为这个更新提供了一个入门向导：</p>
<ul>
    <li>第一部分，主要讲述了如何安装这个更新，并用新版本创建一个项目，在这个项目中用OData协议把实体框架的数据暴露出来。</li>
    <li>第二部分，创建一个WPF应用程序来使用第一部分中创建的Data Service。</li>
</ul>
<p>这个更新不仅用于.NET 3.5 SP1，也提供给了Silverlight 3，不过暂时处于CTP阶段，正式版会和Silverlight 4一起发布。</p>
<p>值得一提的是，虽然ADO.NET Data Service现在已经更名为WCF Data
Service，但由于这个更新是针对之前的老版本而发布的，所以名称依旧是&#8220;ADO.NET Data Service&#8221;。</p>
<br />
<img src ="http://www.blogjava.net/javagrass/aggbug/315386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2010-03-14 15:12 <a href="http://www.blogjava.net/javagrass/archive/2010/03/14/315386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Test Swarm对JavaScript进行集成测试</title><link>http://www.blogjava.net/javagrass/archive/2009/04/04/263889.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Sat, 04 Apr 2009 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2009/04/04/263889.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/263889.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2009/04/04/263889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/263889.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/263889.html</trackback:ping><description><![CDATA[<p>jQuery JavaScript程序库的创建者John Resig发布了<a href="http://testswarm.com/"><font color="#810081">Test Swarm</font></a>，该平台用于对客户端<a href="http://www.itstrike.cn/Home/Language/JavaScript">JavaScript</a>进行分布式的持续集成测试。由于对传统JavaScript测试环境（无法扩展）深感失望，John的新项目（目前还是私有的alpha版）旨在为众多的开发者和社区提供一个用以测试浏览器的系统。</p>
<p>正如John所述，在各种不同的浏览器中测试jQuery难度非常大：</p>
<blockquote>我们力求在<a href="http://www.itstrike.cn/Home.mvc/Tag/7">jQuery</a>项目中支持所有主流浏览器的当前版本、最新发布版以及即将发布的每日构建版/beta版（我们根据用户升级浏览器的频率对这些支持标准进行了一些平衡——Safari与Opera用户的升级频率非常高）。<br />
<br />
在本文发布时一共包含12个浏览器。
<ul>
    <li>Internet Explorer 6、7、8。（不包括8中的7模式）</li>
    <li>Firefox 2、3及每日构建版</li>
    <li>Safari 3.2、4</li>
    <li>Opera 9.6、10</li>
    <li>Chrome 1、2</li>
</ul>
<p>当然了，这只是Windows平台上的，还不包括OS
X及Linux。对于<a href="http://www.itstrike.cn/Home.mvc/Tag/7">jQuery</a>项目我们采取了明智的策略，通常只在一种平台上进行测试，但理想情况下还需要在所有平台上测试Firefox、
Safari及Opera（这三个是跨平台的浏览器）。最后的结果是在每一次提交前后我们都要在12个独立的浏览器上运行10个独立的测试套件。<strong>跨浏览器的JavaScript测试的可伸缩性还不行</strong>。</p>
</blockquote>
<p>如果测试需要与用户进行交互，那么这对于<a href="http://www.itstrike.cn/Home.mvc/Tag/7">jQuery</a>乃至任何大量使用<a href="http://www.itstrike.cn/Home/Language/JavaScript">JavaScript</a>的Web应用来说都是糟糕透顶的事情了。</p>
<blockquote>一些测试套件（如Yahoo UI、jQuery
UI及Selenium）可以对用户交互进行自动化（你可以编写类似于&#8220;点击按钮&#8221;这样的测试）。大多数情况下这能满足我们的要求，但所有这些仅仅是对实
际用户交互的一种模拟。没有什么东西可以与让人手工运行一些容易重现（并且可验证）的测试相提并论。 <br />
<br />
这是最大的可伸缩性问题。用自动化的测试套件乘以想要运行的测试个数，手工在12个浏览器中运行100个测试简直是天方夜谭。一定还有更好的办法，因为很明显：<strong>跨浏览器的JavaScript测试的可伸缩性还不行</strong>。 </blockquote>
<p>像<a href="http://selenium-grid.seleniumhq.org/">Selenium Grid</a>这样的解决方案<a id="a_uj" title="有几个限制" href="http://ejohn.org/blog/javascript-testing-does-not-scale/">有几个限制</a>：</p>
<blockquote>
<ul>
    <li>据我所知，Selenium Grid需要用Selenium来运行测试。目前还没有哪个主流的<a href="http://www.itstrike.cn/Home/Language/JavaScript">JavaScript</a>程序库使用了Selenium（这么做的代价也不小）。</li>
    <li>它无法测试非桌面机。每个服务器都必须运行一个后台程序来处理众多任务，这样移动设备就不行了。</li>
    <li>它无法测试未知的浏览器。每个浏览器都需要特殊的回调代码以让Selenium加载浏览器，这样<a id="wt_2" title="未知的浏览器" href="http://seleniumhq.org/about/platforms.html#browsers">未知的浏览器</a>（如IE 8、Opera 10、Firefox Nightly及Chrome）可能就没法运行了。</li>
    <li>最重要的是：Selenium Grid要求你拥有大量机器来运行测试，这不太可行，尤其是在分布式的开源<a href="http://www.itstrike.cn/Home/Language/JavaScript">JavaScript</a>开发下更是如此。因此我们需要更加行之有效的解决方案。</li>
</ul>
</blockquote>
<p>John提出的解决方案Test Swarm基于<a href="http://www.itstrike.cn/Home/Language/JavaScript">JavaScript</a>客户端，该客户端会持续不断地向中央服务器发出连接请求以运行测试。服务器收集测试套件并将其发送到各自的客户端上：</p>
<blockquote>以下是我设想的Test Swarm的工作方式：开源的<a href="http://www.itstrike.cn/Home/Language/JavaScript">JavaScript</a>程序库将测试套件提交到中央服务器上，同时用户也会参与进来。程序库的用户需要在其日常的工作中额外开两个浏览器窗口来辅助我们的工作，这样他们会感觉到也在参与着项目（其实就是这样！）。 <br />
<br />
程序库还可以将手工测试发给用户。新的手工测试到来时会通知用户（通过声音提示？），这样他们就能迅速执行了。 <br />
<br />
用户提供的这些帮助也不是无偿的：我们可以统计参与最积极的用户，然后对前几名进行嘉奖（T恤、杯子、书等等）。 </blockquote>
<p>InfoQ联系到了John Resig以进一步了解相关的信息。</p>
<p><strong><strong>InfoQ：<strong>Test Swarm基于何种协议？</strong></strong></strong></p>
<blockquote>基于MIT协议（服务器端采用PHP和MySQL，客户端是一些简单的JavaScript）。 </blockquote>
<p><strong>InfoQ：除了框架所有者以外，<strong>你认为</strong>它对于其他组织有何价值？</strong></p>
<blockquote>我认为这对于其他组织和厂商都大有裨益。下面是我设想的成长计划：
<ul>
    <li>首先开放给主流的JavaScript程序库（他们已经建立好了测试套件和测试体制）。</li>
    <li>接下来开放给其他开源的JavaScript项目。</li>
    <li>然后开放给其他组织，只要这些组织允许匿名用户运行其测试就行。</li>
</ul>
当然通过这些步骤，任何组织都可以轻松下载服务器软件并运行自己的swarm实例——无需通过主要的Test Swarm服务器的测试。 </blockquote>
<p>在最初的声明中，John还提到了<a id="r_:i" title="Test Swarm的&#8220;公司（corporate）&#8221;版" href="http://ejohn.org/blog/javascript-testing-does-not-scale/">Test Swarm的&#8220;corporate&#8221;版</a>：</p>
<blockquote>
<p>Test
Swarm的&#8220;corporate&#8221;版已经引起了很多人的兴趣。目前对此还没有什么计划（除了以开源的形式发布该软件），我倒是想留点空间以便将来的扩展
（或许用户会因手工测试而得到一些报酬——就像Mechanical Turk测试JavaScript那样——我不知道，但确定的是其成长空间很大）。</p>
</blockquote>
<p>如果对Test Swarm感兴趣可以<a id="cyfa" title="索取其alpha版" href="http://testswarm.com/">索取其alpha版</a>。</p>
<p>还可以通过InfoQ上的<a title="JavaScript" href="http://www.infoq.com/cn/javascript">JavaScript</a>、<a title="jQuery" href="http://www.infoq.com/cn/jquery">jQuery</a>、<a id="e45k" title="富Internet应用" href="http://www.infoq.com/cn/ria">富Internet应用</a>及<a id="opcj" title="持续集成" href="http://www.infoq.com/cn/continuous_integration">持续集成</a>频道了解更多信息。</p>
<img src ="http://www.blogjava.net/javagrass/aggbug/263889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2009-04-04 15:32 <a href="http://www.blogjava.net/javagrass/archive/2009/04/04/263889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringOne带来了新的Tomcat Server、VMware伙伴并提供ActionScript</title><link>http://www.blogjava.net/javagrass/archive/2008/12/29/248875.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Mon, 29 Dec 2008 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/29/248875.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/248875.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/29/248875.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/248875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/248875.html</trackback:ping><description><![CDATA[<p>一年一度的SpringOne大会北美会场于最近结束，该大会发布了大量声明并宣布了很多新特性。总之，该大会聚焦于以下两方面：SpringSource企业级产品的继续研发及对明年的<a href="http://www.itstrike.cn/html/Java/Spring/index.html">Spring框架</a>和与之相关的生态圈的预测。</p>
<p><strong>SpringSource tcServer——</strong>SpringOne上的头条新闻就是新的<a href="http://www.springsource.com/products/suite/tcserver">tcServer</a>的<a id="ma:2" title="公诸于众" href="http://www.springsource.com/node/899">公诸于众</a>：</p>
<blockquote>...SpringSource tc Server包含了Apache
Tomcat、增强的操作管理能力及高级服务器和应用诊断功能。该服务器在多种环境下都经受住了考验并且支持企业级的关键任务。SpringSource
tc Server以独立的控制台视图提供了对组织的Tomcat server集中管理和监控能力：定义Tomcat
server组、单独或者是跨越一个服务器组来部署/启动/停止/卸载应用，同时还能够启动和停止Tomcat
server本身。它可以独立的控制台来控制Tomcat
server的整个生命周期。其管理功能还可以监控并控制其他版本的Tomcat（例如，那些在实现tc
Server之前已经部署了的Server）。SpringSource tc
Server提供了高级的诊断功能，如死锁检测和更多的跟踪、可以更快的识别出问题并给出解决方案。在失败发生后的这些诊断功能可以从Server中捕获
跟踪、内存及线程信息以便进行快速诊断并对运行时的问题进行隔离和修复... </blockquote>
<p>tcServer的发布并没有出乎人们的意料，因为早在今年初SpringSource就<a id="sr41" title="收购" href="http://www.infoq.com/news/2008/01/springsource-covalent">收购</a>了Covalent。<a href="http://www.eweek.com/c/a/Application-Development/SpringSource-Leverages-Apache-Tomcat-for-new-App-Server/1/">eWeek</a>注意到过去两年内Tomcat项目中80%的提交来自于SpringSource员工。</p>
<p><strong>Spring IDE 2.2.1——</strong>SpringOne还<a id="llfs" title="发布" href="http://springide.org/blog/2008/11/30/springone-221-release-available/">发布</a>了新版本的Spring IDE。</p>
<p><strong>SpringSource/VMWare</strong>——可能在很多领域都会结出硕果的一个声明就是SpringSource和VMWare之间结成的新的<a id="tsn7" title="伙伴" href="http://www.springsource.com/node/914">伙伴</a>关系。</p>
<blockquote>...与VMware（SpringSource认证的解决方案合作商）的合作包括SpringSource Tool
Suite（一个基于Eclipse的开发环境，使用Spring Portfolio来构建企业级应用）和VMware
Workstation的集成以能够在开发者桌面上动态创建虚拟机...该合作还包括联合开发两个开源的应用服务器虚拟映像（SpringSource
tc Server和dm Server virtual
images），这样就可以跨越桌面和数据中心虚拟化环境来移植企业级Java应用了。&nbsp;SpringSource dm
Server是一个完全模块化、基于OSGi的Java服务器，因其灵活性和可靠性，它可以运行企业级Java应用和基于Spring的应用。
SpringSource tc Server是Apache
Tomcat（应用最广的Java应用服务器）的企业版，它可进行企业级应用并可以处理关键任务，同时还满足了系统管理员的要求。所有这些想法都将成为
VMware和SpringSource围绕着VMware的vCloud的一部分...SpringSource Tool
Suite与VMware
Workstation的集成可以使开发和QA专家为不同的开发和测试场景指定虚拟服务器配置。凭借这些虚拟设备，开发者可以在不同的操作系统和应用服务
器配置上选择多种构建目标而无需额外的硬件设备。虚拟设备配置、开发和调试已经集成到了SpringSource Tool
Suite中了，因此他们可以使用为dm Server、tc Server和Apache
Tomcat提供的那些虚拟映像了...明年1月将发布首个SpringSource/VMware的商业产品。 </blockquote>
<p>正如新闻中所述，IDE和虚拟机的集成看来是2009年的路线图了。官方的VMWare workstation博客也<a id="r-fb" title="说到" href="http://blogs.vmware.com/workstation/2008/12/springsource-partnership-the-inside-story.html">说到</a>此次合作并提到了之前的Eclipse集成（只是一个原型）。</p>
<p><strong>Spring/Adobe</strong>——在SpringOne上，Spring生态圈继续扩张着，有两个关键的与Flex相关的声明。<a href="http://www.infoq.com/news/2008/10/prana-framework-actionscript-3">Prana</a>框架正式更名为<a href="http://www.herrodius.com/blog/157">Spring Actionscript</a>。作为此次更名的一部分，该项目获得了官方的SpringFramework.org论坛、JIRA访问及Fisheye集成。SpringSource还<a id="yq3w" title="宣布" href="http://www.springsource.com/node/1077">宣布</a>了与Adobe的合作以集成Spring与BlazeDS：</p>
<blockquote>...一个新的开源项目Spring BlazeDS
Integration将为Spring和BlazeDS、基于Adobe开源服务器的Java remoting和web
messaging技术提供更为紧密的集成。该集成项目将成为Spring Web家族中的一个关键组件...针对Adobe
Flex的SpringSource Adapter将以Adobe&#174; LiveCycle&#174; Data Services ES for Adobe
Flex&#174;提供集成，这将可以为实时和接近于实时的解决方案创建基于推模式的服务端应用。针对Flex的SpringSource
Adapter将成为SpringSource企业应用客户订阅的一部分... </blockquote>
<p>在社区将BlazeDS集成到了Spring和Spring Security之后，官方支持终于来了。</p>
<p><strong>Spring Integration 1.0</strong>——<a id="ubdz" title="InfoQ最近曾报道过" href="http://www.infoq.com/news/2008/11/spring_integration_rc1">InfoQ最近曾报道过</a>，Spring Integration 1.0已经发布了。Spring Integration支持大多数常用的传输方式，如JMS、web services、文件、RMI等等，同时还有其他选择如FTP，这是由社区通过Spring Extensions贡献的。</p>
<p><strong>Spring 3.0 M1</strong>——对于2009年来说，最具影响力的声明就是Spring 3.0 M1的公诸于众。以下内容来自于Juergen Hoeller的<a id="b_u1" title="官方博客" href="http://blog.springsource.com/2008/12/05/spring-framework-30-m1-released/">官方博客</a>：</p>
<blockquote>
<ul>
    <li>通过基于模块的源码修正了项目布局和构建系统</li>
    <li>使用Java 5编码风格更新了全部代码基（泛型、可变参数）</li>
    <li>更新到JUnit 4.5和JRuby 1.1</li>
    <li>引入了Spring EL解析器（org.springframework.expression包）</li>
    <li>在bean定义中引入了对#{&#8230;}表达式的支持</li>
    <li>为嵌入式表达式引入了@Value注解</li>
    <li>为MVC处理器中URI模板的处理引入了@PathVariable注解</li>
    <li>为MVC处理器中的@RequestParam引入了默认值支持</li>
    <li>为MVC处理器中的HTTP header访问引入了@RequestHeader注解</li>
    <li>引入了AbstractAtomFeedView和AbstractRssFeedView基类</li>
    <li>引入了JSP标签</li>
</ul>
</blockquote>
<p>Spring 3.0需要Java 5+。Willie Wheeler已经撰写了博文，对里程碑上的声明和会议进行了综述。<a id="lrxv" title="第一部分" href="http://springinpractice.wordpress.com/2008/12/02/new-stuff-in-spring-30/">第一部分</a>，<a id="gg_n" title="第二部分" href="http://springinpractice.wordpress.com/2008/12/03/new-stuff-in-spring-30-part-2/">第二部分</a>。</p>
<p><strong>来自Blogsphere的一些想法</strong>——Blogsphere在SpringOne上也表现的非常积极。<a href="http://www.jroller.com/Solomon/entry/spring_one_themes">Solomon Duskis</a>撰写了一些博文，很好的总结了会议的主题，如tcServer、Spring DM的成熟度、Spring和JCP的继续合作以及工业上重量级公司不断加入SpringSource的演变过程。其他主题列举如下：</p>
<ul><strong>所有</strong><br />
    <a href="http://springinpractice.wordpress.com/2008/12/01/rod-johnsons-keynote-address-at-springone-americas-2008/">http://springinpractice.wordpress.com/2008/12/01/rod-johnsons-keynote-address-at-springone-americas-2008/</a><br />
    <a href="http://www.jroller.com/Solomon/entry/spring_one_random_thoughts_and">http://www.jroller.com/Solomon/entry/spring_one_random_thoughts_and </a>
    <p><strong>第一天</strong><br />
    <a href="http://www.i-proving.ca/space/Alec+Ho/blog/2008-12-04_1">http://www.i-proving.ca:80/space/Alec+Ho/blog/2008-12-04_1 </a><br />
    <a href="http://ptrthomas.wordpress.com/2008/12/02/springone-2008-day-1/">http://ptrthomas.wordpress.com/2008/12/02/springone-2008-day-1/</a><br />
    <a href="http://greybeardedgeek.net/?p=66">http://greybeardedgeek.net/?p=66</a></p>
    <p><strong>第二天</strong><br />
    <a href="http://ptrthomas.wordpress.com/2008/12/03/springone-2008-day-2/">http://ptrthomas.wordpress.com/2008/12/03/springone-2008-day-2/</a><br />
    <a href="http://greybeardedgeek.net/?p=71">http://greybeardedgeek.net/?p=71</a></p>
    <p><strong>第三天</strong><br />
    <a href="http://ptrthomas.wordpress.com/2008/12/04/springone-2008-day-3/">http://ptrthomas.wordpress.com/2008/12/04/springone-2008-day-3/</a><br />
    <a href="http://greybeardedgeek.net/?p=83">http://greybeardedgeek.net/?p=83</a><br />
    <a href="http://greybeardedgeek.net/?p=88">http://greybeardedgeek.net/?p=88</a></p>
    <p><strong>第四天</strong><br />
    <a href="http://ptrthomas.wordpress.com/2008/12/05/springone-2008-day-4/">http://ptrthomas.wordpress.com/2008/12/05/springone-2008-day-4/</a><br />
    &nbsp; <br />
    </p>
    <p><br />
    </p>
</ul>
相关文章:<br />
<div id="mostEmailed" class="tabContent tabContentActive">
<ol>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/02-1426.html">Spring的JDBCTemplate</a></li>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/02-1424.html">Spring2.5 访问Session属性的四种方法</a></li>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/02-1425.html">利用 Spring2.5 和 Reflection 简化测试</a></li>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/02-1428.html">Spring实现动态数据源</a></li>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/04-2194.html">在Spring基础上实现自定义异常处理</a></li>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/02-1427.html">Spring自动代理机制</a></li>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/12-3782.html">Spring 2.0 用 AspectJ 实现 AOP</a></li>
    <li><a href="http://www.itstrike.cn/html/Java/Spring/200812/12-3783.html">Spring 通用的方法拦截</a></li>
</ol>
</div>
<br />
<img src ="http://www.blogjava.net/javagrass/aggbug/248875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-29 13:01 <a href="http://www.blogjava.net/javagrass/archive/2008/12/29/248875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jigsaw——JSR277的丧钟？</title><link>http://www.blogjava.net/javagrass/archive/2008/12/25/248174.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Wed, 24 Dec 2008 16:15:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/25/248174.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/248174.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/25/248174.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/248174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/248174.html</trackback:ping><description><![CDATA[<p>紧跟着<a id="rr6o" title="早前发布" href="http://blogs.sun.com/mr/entry/massive_monolithic_jdk">早前发布</a>的关于模块化JDK的声明，Mark Reinhold宣布<a id="oz8." title="Jigsaw项目" href="http://blogs.sun.com/mr/entry/jigsaw">Jigsaw项目</a>成为<a href="http://openjdk.java.net/">OpenJDK</a>的一部分。下面的内容援引了其声明：</p>
<blockquote>为了在接下来的几年中能够模块化JDK 7，同时也为了更好地宣传JSR 294的工作，Sun打算不久之后在OpenJDK社区中创建Jigsaw项目。 <br />
<br />
该努力必然会创建一个简单、低层次的模块系统，其设计将聚焦于模块化JDK这个目标。开发者可以在自己的代码中使用该模块系统，Sun也会全力支持该系统，但它并不会成为官方Java SE 7平台规范的一部分，也不一定会得到其他SE 7实现的支持。 <br />
<br />
如果未来的Java SE平台包含了特定的模块系统，那么Sun将提供一种方式来移植Jigsaw模块以使之符合相应的标准。同时，我们还会积极地寻求与其他模块系统交互的方式，尤其是OSGi。 </blockquote>
<p>模块化JDK这个目标应该是可以实现的，尤其是<a href="http://harmony.apache.org/">Apache Harmony</a>已经证明了JDK是可以被模块化的（使用OSGi）。然而这个目标却因另一个原因而变得更加有趣：<strong>它将在JCP外实现</strong>。</p>
<p>由于缺少可视化的发展过程，再加上闭门造车的实现，对于大多数人来说很难参与进<a href="http://jcp.org/en/jsr/detail?id=277">JSR 277</a>，更别提对其献计献策了。通常这会导致标准的误入歧途，使得标准过于关注实现的细节而忽视了通用性。不仅如此，这还会导致标准成为事后诸葛亮——想解决问题时（例如<a id="vsrp" title="奇数的版本号" href="http://alblue.blogspot.com/2008/05/version-numbers-and-jsr277.html">奇数的版本号</a>）却发现已经太迟了。根据声明所述，JSR277还处于&#8220;领导地位&#8221;，但它实际已死。</p>
<p>从JSR277中分离出的<a href="http://jcp.org/en/jsr/detail?id=294">JSR294</a>（以前可是个庞然大物，不过现在已经<a id="fe1i" title="模块化" href="http://www.osgi.org/blog/2008/04/jsr-294-superpackages-no-more.html">模块化</a>了）是个很大的进步；它将引入一些语言上的变化，这会使得模块化的实现独立于任何特定的模块化进程。</p>
<p>从声明中看到的激动人心的事情还有OSGi已经成为模块化的事实上的标准了，这种合作是件好事。但这不一定意味着它将基于OSGi实现，事实上，它只是建议最好与OSGi而不是其他方式合作：</p>
<blockquote>JSR
277的JAM模块系统并不适合作为模块化JDK的基础，那么OSGi框架如何呢？该模块系统非常成熟、稳定和健壮。其核心甚至已经在Java虚拟机中实
现出来了，也就是Apache Harmony。OSGi并没有与Java语言集成，相反，它构建在Java SE平台之上而不是其中。 <br />
<br />
这最后的问题也能解决。Sun现在计划直接与OSGi联盟合作以便OSGi框架的未来版本能充分利用JSR 294的特性进而能和语言集成的更加紧密。 </blockquote>
<p>我相信未来的OSGi标准会使用JSR 294的模块，尽管还有一些<a id="vd9e" title="建议的改变" href="http://www.osgi.org/blog/2008/04/jsr-294-superpackages-no-more.html">建议的改变</a>。不管怎么样，下周在<a href="http://www.devoxx.com/display/JV08/">Devoxx 08</a>举办的<a href="http://www.devoxx.com/display/JV08/Modularity+in+Java">Modularity in Java</a>讲座应该会对Java的未来做出一些有趣的预言。</p>
<img src ="http://www.blogjava.net/javagrass/aggbug/248174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-25 00:15 <a href="http://www.blogjava.net/javagrass/archive/2008/12/25/248174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>饭岛爱的个人档案</title><link>http://www.blogjava.net/javagrass/archive/2008/12/24/248171.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Wed, 24 Dec 2008 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/24/248171.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/248171.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/24/248171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/248171.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/248171.html</trackback:ping><description><![CDATA[<strong></strong>最近日本著名AV女优<a href="http://www.cnblogs.com/star65225692/archive/2008/12/24/1361913.html">饭岛爱自杀</a>,引起娱乐界一片哗然,不过国内有不少90后对她不甚了解,故贴出她的个人档案<br />
姓名:饭岛爱(Ai Iijima) <br />
出生地: 日本 <br />
生日: 1973/8/25 <br />
星座: 处女 <br />
身高: 161(cm) <br />
血型: A <br />
三围: 85/56/85(cm) <br />
出版自传《柏拉图式性爱》（饭岛爱的自传式电影，被列为限制级）<br />
饭岛爱是一位日本艺人、前AV女优，东京都江东区龟户出生，于1992年出道。<br />
1992年，饭岛爱参加东京电视台深夜节目《东京情色派》的〈丁字裤小爱〉单元的演出，在该节目中自掀裙子露出丁字裤，被称为&#8220;丁字裤女王&#8221;而成名，踏入日本演艺圈。<br />
她在2000年10月出了半自传性的小说《柏拉图式性爱》，在日本畅销百万本。<br />
2007年3月3日，日本《SPORTS NIPPON》报道，饭岛爱因花粉症、背部刺痛、肾功能失调与膀胱炎等健康问题而退出日本演艺圈。2008年2月24日，饭岛爱在个人博客上表示感染了幽门螺杆菌。
<img src ="http://www.blogjava.net/javagrass/aggbug/248171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-24 23:50 <a href="http://www.blogjava.net/javagrass/archive/2008/12/24/248171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JRuby 1.1.6发布，改善对Ruby 1.9的支持</title><link>http://www.blogjava.net/javagrass/archive/2008/12/19/247380.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Fri, 19 Dec 2008 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/19/247380.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/247380.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/19/247380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/247380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/247380.html</trackback:ping><description><![CDATA[<p><a href="http://dist.codehaus.org/jruby/1.1.6/" id="u:b-" title="JRuby 1.1.6现在可以下载了">JRuby 1.1.6现在可以下载了</a>（<a title="JRuby 1.1.6的发布说明" href="http://docs.codehaus.org/display/JRUBY/2008/12/17/JRuby+1.1.6+Released" id="g0l7">JRuby 1.1.6的发布说明</a>）。</p>
<p>其中一个主要的特性是<a title="11月份提交的对Ruby 1.9解析器的支持" href="http://github.com/vvs/jruby/commit/6299ee6303397908b1d2ac3b5ee9bee571e6e3d8" id="ovzu">11月后期提交的对Ruby 1.9解析器的支持</a>。正如发布说明中提到的，JRuby目前支持了Ruby 1.9中的大部分库，而<a title="在2009年第一季度会提供完整的支持" href="http://twitter.com/headius/status/1034407116" id="q_x3">在2009年第一季度会提供全面的支持</a> 。对Ruby 1.9的支持可以通过--1.9命令行开关来打开。JRuby嵌入器可以设置版本，比如说，使用一个<a title="org.jruby.RubyInstanceConfig" href="http://github.com/vvs/jruby/tree/master/src/org/jruby/RubyInstanceConfig.java" id="hkin">org.jruby.RubyInstanceConfig</a>实例，它能够被传入JavaEmbedUtils.initialize(List loadPaths, RubyInstanceConfig config)方法。</p>
<p>发布说明中还提到了<a title="对于org.jruby.javasupport.JavaEmbedUtils类的改进" href="http://github.com/vvs/jruby/tree/master/src/org/jruby/javasupport/JavaEmbedUtils.java" id="w7la">对于org.jruby.javasupport.JavaEmbedUtils类的改进</a>，这个类对那些将<strong>JRuby嵌入到普通<a href="http://www.itstrike.cn/html/Java/">Java</a>代码</strong>中的开发者来说非常有用。与JRuby交互会需要使用JRuby的内部API，而这些API在不同的版本中很有可能发生变化。但现在可以通过<a title="BSF" href="http://jakarta.apache.org/bsf/" id="enxf">BSF</a>或者<a href="http://www.itstrike.cn/html/Java/">Java</a> 6中引入的<a title="JSR 223 hosting API" href="https://scripting.dev.java.net/" id="uxdl">JSR 223 hosting API</a>来解决这个问题。使用BSF需要有BSF库，而JSR 223会把代码限定在<a href="http://www.itstrike.cn/html/Java/">Java</a> 6上。但<strong>JavaEmbedUtils</strong>类可以让开发者初始化JRuby实例，调用方法，将Ruby类型转变成<a href="http://www.itstrike.cn/html/Java/">Java</a>类型等等，而无需依赖BSF或者JSR 223。</p>
<p><a title="发布说明" href="http://docs.codehaus.org/display/JRUBY/2008/12/17/JRuby+1.1.6+Released" id="eqt_">发布说明</a>还包括：</p>
<blockquote>  - 一份修复故障IO引用bug的列表<br />
- 更加快速的Array.sort<br />
- 无需解压即可在jar中运行的gem<br />
- 将gem库存在jar中，并通过classpath来加载<br />
- 修复两个RC过程中可测的内存泄漏<br />
- 自从1.1.5以来的74个bug修复<br />
</blockquote>
<p>修复的bug示例有：</p>
<ul>
    <li><a href="http://jira.codehaus.org/browse/JRUBY-3189">JIRA-3189</a> "java.lang.Iterable should have an each method"</li>
    <li><a href="http://jira.codehaus.org/browse/JRUBY-3230">JIRA-3230</a> fixes Hpricot which was broken in the 1.1.5 release</li>
    <li><a href="http://jira.codehaus.org/browse/JRUBY-3233">JIRA-3233</a> fixes a problem with instantiating Java objects with Rails 2.2.2</li>
    <li><a href="http://jira.codehaus.org/browse/JRUBY-3126">JIRA-3126</a> "Allow Rubygems to be loaded and used from within jar files"</li>
</ul>
<p>最后，<a title="JRuby1.1.6RC1是最近一次Ruby大比拼中所使用的JRuby版本" href="http://www.infoq.com/news/2008/12/ruby-performance-shootout" id="ujkl">JRuby1.1.6RC1是最近一次Ruby大比拼中所使用的JRuby版本</a>。</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/javagrass/aggbug/247380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-19 18:17 <a href="http://www.blogjava.net/javagrass/archive/2008/12/19/247380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Terracotta进行透明的JRuby集群</title><link>http://www.blogjava.net/javagrass/archive/2008/12/18/247206.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Thu, 18 Dec 2008 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/18/247206.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/247206.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/18/247206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/247206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/247206.html</trackback:ping><description><![CDATA[<p><a id="sbex" href="http://www.infoq.com/news/2008/05/MagLevAtRailsConf">Gemstone在RailsConf上所展示的<font color="#000000">Maglev Demo</font></a>展现了Gemstone的分布式VM技术，它可以透明地跨越多个Gemstone VM以共享相同的对象内存。</p>
<p><strong>Terracotta</strong>是一项Java技术，它也可以完成类似的功能。Fabio Kung已经开始了一些尝试以将Terracotta应用到JRuby上。过去他也尝试过一些类似的项目。Gemstone<a id="z4jb" title="还尝试了在其基于Java的产品上支持JRuby" href="http://www.infoq.com/news/2007/08/gemstone-ruby">还尝试了在其基于Java的产品上支持JRuby</a>，之前他们也尝试过<a id="i5gv" title="将Terracotta应用到JRuby上" href="http://jonasboner.com/2007/02/05/clustering-jruby-with-open-terracotta/">将Terracotta应用到JRuby上</a>，尽管没有取得实质性的突破。</p>
<p>我们采访了<strong>Fabio Kung</strong>以了解该项目，他称这个项目为&#8220;JMaglev&#8221;，我们想知道要想让JRuby和Terracotta协同工作需要做哪些事情以及需要解决哪些问题。</p>
<p>首先，Fabio谈到了他的实现以及他是如何对JRuby进行了修改以让其正常工作：</p>
<blockquote>我使用了Terracotta POJO集群以便JRuby内核可被集群中的所有节点所共享。事实上，每次运行都会有一些全局变量，像下面这样： <br />
<pre>public class Ruby {<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
// ...<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
private GlobalVariables globalVariables = new GlobalVariables();<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
} <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</pre>
及：
<pre>public class GlobalVariables {<br />
<br />
<br />
<br />
// ...<br />
<br />
<br />
<br />
private List values = new ArrayList();<br />
<br />
<br />
<br />
}<br />
<br />
<br />
<br />
</pre>
<br />
Terracotta仅仅对这个全局变量列表进行集群。对该列表的任何改变都会被复制到集群中的所有JRuby运行时。这样做的好处在于你可以将任何
ruby对象增加到该列表中，甚至连复杂的对象如regexps、hashes和procs都可以。所有的全局变量都会自动被共享，同时由全局变量所引用
的任何对象都会被Terracotta加到集群中。 <br />
<br />
为了做到这一点，我需要对JRuby进行一些修补，使其可以被&#8220;集群&#8221;。事实上，JRuby中的每个ruby对象都会维护一个ruby运行时引用。由于共
享的对象会用在很多不同的运行时中，所以JRuby必须得支持运行时的增加及删除。我可以解决这个问题，但是每个JVM上只能有一个Ruby运行时。在这
个地方仍然有一些尚未解决和需要讨论的问题，如： <br />
<br />
——全局对象标识符：在所有节点中object_id都应该相同么？——共享的元类（metaclass）：当不同节点中的对象类、父类或者是包含的模块发生变化时怎么办？——在单个JVM上对多个运行时的支持。 <br />
<br />
对于这些问题我采取了简单的解决方法，但每种方法都需要一整篇博文才能说明白:-) </blockquote>
<p>Fabio解释了他知道的一些针对<strong>JRuby</strong>和<strong>Terracotta</strong>的用例：</p>
<blockquote>通过使用Terracotta的High
Availability模式，我认为&#8220;JMaglev&#8221;（或许需要起个更好的名字）绝对能成为一个很棒的memcached而无需侵入Ruby代码。然
而还有很多事情需要做。这就是我将其开放的原因所在，如果大家感兴趣，都可以尽一份力：<a href="http://github.com/fabiokung/clustered-jruby/">http://github.com/fabiokung/clustered-jruby/</a><br />
<br />
很多服务器都可以配置在Terracotta中，其中一个服务器叫&#8220;主&#8221;服务器（或者叫活动服务器），其他的处于备用模式。这很有意思，因为一旦活动服务
器崩溃，其他的就会自动顶替上去。在Terracotta的企业版中甚至还有一种可用的模式，该模式可以开启多个活动服务器，这与memcached所做
的事情差不多，但是memcached不会持久化对象。 <br />
<br />
Terracotta可作为一个分布式缓存，同时无需Java序列化：它仅仅复制改变的东西。你只需要将想从数据库中取出的对象共享给集群中所有的节点即
可。通过使用JMaglev，你只需将他们放到全局变量中即可——$shared = Person.find(:all)。 <br />
<br />
其他可能的用例是在Rails应用中的多个进程和机器上共享HttpSession。如果将rails应用部署到JRuby中，那么可以使用透明的集群对象来维护集群中所有节点所共享的HttpSession。 <br />
<br />
事实上，任何Terracotta用例都是JMaglev用例。坦诚地说，就是因为这是可行的，我才这么做。这与Avy
Briant的Maglev例子非常像：他说可以使用SmallTalk
VMs运行Ruby代码，然后Gemstone的那些家伙让他证明这是可行的:-) <br />
<br />
我希望那些比我更富创造力的人们能为&#8220;JMaglev&#8221;想出更多创造性的用例。 </blockquote>
<p>分布式的对象内存仅仅是<strong>Gemstone/S</strong>（以及MagLev）诸多特性中的一个；另一个重要特性是<strong>持久化</strong>。正如Gemstone的<a id="tel6" title="Monty Williams在最近的一个关于Rails的播客中所说" href="http://podcast.rubyonrails.org/programs/1/episodes/monty-williams-on-maglev">Monty Williams在最近的一个关于Rails的播客中所说</a>，Gemstone/S支持对象内存的持久化，这意味着我们<strong>无需ORM</strong>甚至是<strong>RDBMS</strong>来存储数据。</p>
<p>当被问到&#8220;JMaglev&#8221;是否支持类似的功能时，Fabio说到：</p>
<blockquote>所有共享的ruby对象都位于Terracotta服务器中，而Terracotta服务器能自动地持久化这些对象，即使他们不
是序列化的也可以。客户端持有这些真正的、共享的对象的桩（stubs）。你只需将服务器配置成持久化模式即可。我还没有测过，但这需要在XML配置文件
中增加一行。 <br />
<br />
我认为Terracotta可作为一个面向对象的数据库以持久化JRuby对象，但我觉得这不是目前最主要的目标。Terracotta现在可以通过其
High Availability模式来持久化共享的对象，这存在于fail-safe-high-available部署中。<a href="http://www.terracotta.org/web/display/docs/Configuring+Terracotta+For+High+Availability">http://www.terracotta.org/web/display/docs/Configuring+Terracotta+For+High+Availability</a>。 </blockquote>
<p>Terracotta的站点上列出了很多Terracotta集成模块（Terracotta Integration Modules，即TIM），其中一些面向的是流行的ORM解决方案。当被问到这是否有助于持久化时，Fabio说到这些TIM的目的是不同的：</p>
<blockquote>这些TIM并不涉及共享对象的自动持久化。他们仅有助于Terracotta与这些ORM框架的协作。例如，hibernate
TIM与持久化没有任何关系。它仅仅是简化了Hibernate对集群的（分布式的）EhCache（以及其他）的使用而无需真正的分布式缓存，如
JBoss TreeCache和memcached。 </blockquote>
<p>Fabio展示了<a id="we5c" title="JRuby与Terracotta是如何协作的" href="http://fabiokung.com/2008/10/08/jruby-sharing-objects-across-multiple-runtimes-jmaglev/">JRuby与Terracotta是如何协作的</a>。要想尝试一下，请参考<a id="vq0j" title="Fabio在Github上的clustered-jruby仓库" href="http://github.com/fabiokung/clustered-jruby/tree/master">Fabio在Github上的clustered-jruby仓库</a>，它提供了你所需要的所有内容。</p>
<p><br />
</p>
Orther:<br />
<a href="http://www.itstrike.cn/html/Java/Ibatis/" target="_blank">Ibatis技术文档</a><br />
<a href="http://www.itstrike.cn/html/Java/Hibernate/200812/18-5794.html" target="_blank" title="Hibernate常见问题总结">Hibernate常见问题总结</a><br />
<br />
<img src ="http://www.blogjava.net/javagrass/aggbug/247206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-18 20:01 <a href="http://www.blogjava.net/javagrass/archive/2008/12/18/247206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iBatis技术文档大全(随时更新)</title><link>http://www.blogjava.net/javagrass/archive/2008/12/17/246881.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Wed, 17 Dec 2008 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/17/246881.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/246881.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/17/246881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/246881.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/246881.html</trackback:ping><description><![CDATA[<strong><a href="http://www.itstrike.cn/html/Java/Ibatis/200812/17-5307.html">iBatis的JpetStore示例中MVC机制实现的研究，BeanAction，BaseBean</a><br />
<br />
<strong><a href="http://www.itstrike.cn/html/Java/Ibatis/200812/17-5306.html">IBatis的分页研究</a><br />
<br />
<strong><a href="http://www.itstrike.cn/html/Java/Ibatis/200812/17-5305.html">ibatis JshopStore5的sqlmap的xml错误，NestedSQLException错误</a></strong><br />
<br />
<strong><a href="http://www.itstrike.cn/html/Java/Ibatis/200812/17-5304.html">ibatis--部分更新表记录字段的方法</a></strong><br />
<br />
<strong><a href="http://www.itstrike.cn/html/Java/Ibatis/200812/17-5303.html">ibatis支持枚举类型</a><br />
<br />
<strong><a href="http://www.itstrike.cn/html/Java/Ibatis/200812/16-4991.html">由ibatis引起的框架设计思考</a><br />
<br />
<strong><a href="http://www.itstrike.cn/html/Java/Ibatis/200812/16-4990.html">Ibatis VS Hibernate</a><br />
</strong></strong></strong></strong></strong>
<img src ="http://www.blogjava.net/javagrass/aggbug/246881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-17 15:27 <a href="http://www.blogjava.net/javagrass/archive/2008/12/17/246881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruby FFI可以用本地库访问JRuby，MRI了</title><link>http://www.blogjava.net/javagrass/archive/2008/12/12/245978.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Fri, 12 Dec 2008 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/12/245978.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/245978.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/12/245978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/245978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/245978.html</trackback:ping><description><![CDATA[<p>MRI和Rubinius支持Ruby的本地扩展，这使得本地代码可以与Ruby代码及Ruby解释器或VM进行交互。<a id="wwmk" title="Ruby 1.8.0引入了Ruby/DL" href="http://whytheluckystiff.net/articles/rubyOneEightOh.html">Ruby 1.8.0引入了Ruby/DL</a>，它可以加载共享库并调用Ruby代码中提供的函数。<a id="cc:j" title="Ruby/DL文档" href="http://www.jbrowse.com/text/rdl_en.html">Ruby/DL文档</a>说明了如何导入函数、如何与C类型协同工作及如何将Ruby映射为C类型等等。Ruby/DL还提供了两种回调方式，也就是说对于一个接收函数指针的C函数来说，我们可以将一个Ruby代码块传进去。</p>
<p><a id="v-5m" title="Rubinius引入了自己的Foreign Function Interface（FFI）" href="http://blog.segment7.net/articles/2008/01/15/rubinius-foreign-function-interface">Rubinius引入了自己的Foreign Function Interface（FFI）</a>，它与Ruby/DL非常像，尽管<a id="veq6" title="FFI的API看起来有些不同" href="http://pluskid.lifegoo.com/?p=370">FFI的API看起来有些不同</a>，对于类型签名来说，它使用了Ruby符号和排列方式而并没有采取C代码的方式，也没有使用Ruby/DL中所用的客户化类型格式。</p>
<p>早在今年初，构建于<a href="http://www.infoq.com/news/2007/09/jna-jruby">JNA</a>之上的<a href="http://www.infoq.com/news/2008/07/jruby113-rcov-rubinius-ffi-mvm">jruby-ffi</a>就已经发布了（JRuby不支持Ruby/DL）。</p>
<p>虽然对Rubinius和JRuby提供了支持，但在使用MRI的Ruby世界中还是有很多地方依然在使用Ruby/DL或其它方式来使用共享库。为了解决这个问题，<a id="nww9" title="Wayne Meissner" href="http://wmeissner.blogspot.com/2008/11/more-on-ruby-ffi.html">Wayne Meissner</a>（已经创建了jruby-ffi）创建了<a id="ge6y" title="ruby-ffi项目" href="http://kenai.com/projects/ruby-ffi">ruby-ffi项目</a>，它现在提供了相同的FFI接口，就像Rubinius之于JRuby、Ruby 1.8.x及Ruby 1.9.x.一样。通过ruby-ffi，我们可以跨越所有这些Ruby实现以相同的Ruby代码来访问共享库了。</p>
<p>Ruby <a id="bweu" title="FFI 0.2.0已经发布了" href="http://kenai.com/projects/ruby-ffi/lists/users/archive/2008-12/message/2">FFI 0.2.0已经发布了</a>，可以通过<font face="Courier New">gem install ffi</font>进行安装。<a id="him2" title="你可以在其项目的wiki上查看相关的文档" href="http://kenai.com/projects/ruby-ffi/pages/Home">你可以在其项目的wiki上查看相关的文档</a>，这些<a id="mmr-" title="示例" href="http://kenai.com/projects/ruby-ffi/pages/Examples">示例</a>是很好的入门材料。<a id="mz_y" title="Charles Nutter对FFI的使用进行了更详尽的说明并给出了一些例子。" href="http://blog.headius.com/2008/10/ffi-for-ruby-now-available.html">Charles Nutter对FFI的使用进行了更详尽的说明并给出了一些例子。</a></p>
<p><br />
</p>
Orther:<br />
<h5><a href="http://www.itstrike.cn/html/Java/Springjiaocheng/200812/12-3783.html"><span style="font-size: 12pt;">Spring 通用的方法拦截</span></a></h5>
<strong><a href="http://www.itstrike.cn/html/Java/Springjiaocheng/200812/02-1428.html"><span style="font-size: 12pt;"><span style="font-size: 8pt;"><span style="font-size: 12pt;"><span style="font-size: 14pt;"><span style="font-size: 12pt;">Spring实现动态数据源</span></span></span></span></span></a></strong>
<img src ="http://www.blogjava.net/javagrass/aggbug/245978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-12 16:23 <a href="http://www.blogjava.net/javagrass/archive/2008/12/12/245978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>T-SQL静态代码分析</title><link>http://www.blogjava.net/javagrass/archive/2008/12/09/245142.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Tue, 09 Dec 2008 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/09/245142.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/245142.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/09/245142.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/245142.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/245142.html</trackback:ping><description><![CDATA[<p>静态代码分析，在Windows平台上长期受到忽视，近几年却变得越来越重要。静态分析重新获得关注，始于一款Microsoft内部的工具——
FX Cop，由于它非常受欢迎，所以微软将其公开发布。在Visual Studio 2005中，FX Cop作为Visual
Studio团队开发版的一部分集成到该IDE中。</p>
<p>带有附加功能或免除单元测试需要的第二代工具正在研发当中，包括.NET4的<a href="http://www.infoq.com/cn/news/2008/12/Code-Contracts" target="_blank">Code Contracts</a>和自主研发的<a href="http://www.infoq.com/news/2007/02/NStatic" target="_blank">NStatic</a>。</p>
<p>托管代码并不是唯一获得关注的领域。Ubitsoft公司正对T-SQL应用相同的技术。随着数据库增长，封装在T-SQL中的业务逻辑数量变化相当明显，有时候甚至在重要性方面胜过普通代码。要协助管理这一情况，Ubitsoft公司创建了<a href="http://www.ubitsoft.com/products/sqlenlight/sqlenlight.php" target="_blank">SQL Enlight</a>。我们就此和他们的开发主管Iliyan Stoyanov进行了沟通。</p>
<p>这是个相当新颖的产品，你可以给我们一些关于SQL Enlight如何诞生的背景吗？</p>
<blockquote>我们设计SQL Enlight作为T-SQL管理和反射工具，但由于我们需要更多的时间来实现心中的所有想法，所以决定先发布T-SQL重格式化功能，稍后逐步来添加新功能。</blockquote>
<p>你决定对Transact-SQL脚本分析提供支持是基于哪一点考虑呢？</p>
<blockquote>从本项目开始，该分析功能就是我们其中一个目标，但我们决定推迟它的发布，直到我们完成T-SQL语法分析器扩展为止，它支持新的SQL Sever 2005 T-SQL语法。</blockquote>
<p>你如何决定给分析添加哪些规则呢？</p>
<blockquote>我们实现的分析规则基本上来自互联网找到的提示和实践，或者来自SQL Enlight用户提交给我们的分析规则请求。</blockquote>
<p>你们的技术支持提到过你正研发一个新版本，它会对整个数据库进行分析。可以给我提供一些关于它的信息吗？</p>
<blockquote>是的。我们正研发新的1.6版本，它将是我们SQL Enlight1.x版本的里程碑。该新版本会包含两项重要特性——创建自定义分析规则功能和支持在数据库上运行分析。我们也打算包含命令行工具和MsBuild任务。</blockquote>
<p>SQL Enlight当前版本支持这些分析规则。</p>
<p><strong>设计</strong></p>
<ul>
    <li>包括NULL常量在内的相等和不等比较</li>
    <li>非ANSI外部联接语法</li>
    <li>非ANSI内部联接语法</li>
    <li>过时的语法，字符串_别名=表达式</li>
    <li>在执行数据操作语句（像INSERT/UPDATE/DELETE)之后，使用TRY..CATCH结构或者检查该@@ERROR变量</li>
    <li>在存储过程、视图和表值函数中支持SELECT *</li>
    <li>使用SCOPE_IDENTITY()替换@@IDENTITY</li>
    <li>支持ORDER BY子句中使用常量已经过时</li>
    <li>TOP子句用在不带ORDER BY子句的查询</li>
    <li>在INSERT语句中总是使用列的列表</li>
    <li>反对不带WITH关键字的表提示用法</li>
    <li>（聚集或非聚集）索引类型未指定</li>
    <li>避免使用GOTO语句来改善可读性</li>
    <li>考虑使用括号来改善可读性和避免由于逻辑操作符的优先级导致的错误。</li>
</ul>
<p><strong>命名</strong></p>
<ul>
    <li>在命名函数的时候避免使用&#8220;fn_&#8221;前缀</li>
    <li>在命名存储过程的时候避免使用&#8220;sp_&#8221;前缀</li>
</ul>
<p><strong>性能</strong></p>
<ul>
    <li>变量@variable已声明但从未使用</li>
    <li>变量@variable已使用但之前未分配</li>
    <li>变量@variable已分配但其值从未使用</li>
    <li>在LIKE谓词中以&#8220;%&#8221;开始的模式</li>
    <li>考虑使用表变量来代替临时表</li>
    <li>在触发器中避免返回结果</li>
    <li>使用非常小的变量长度类型（大小为1或者2）</li>
    <li>在存储过程和触发器中使用&#8220;SET NOCOUNT ON&#8221;选项</li>
    <li>在WHERE子句中避免使用不等操作符（&lt;&gt;,!=）</li>
    <li>本地游标没有关闭</li>
    <li>本地游标无明确释放</li>
    <li>本地游标引用无明确释放</li>
    <li>在WHERE子句的函数中避免封装过滤列</li>
    <li>可以从WHERE子句中提取确定性函数调用，避免不必要的表扫描</li>
    <li>输入参数从未使用</li>
    <li>输出参数从未赋值</li>
    <li>在WHERE子句中避免使用&#8220;NOT IN&#8221;谓词</li>
    <li>不要使用不带聚合函数的&#8220;GROUP BY&#8221;子句</li>
</ul>
<img src ="http://www.blogjava.net/javagrass/aggbug/245142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-09 09:24 <a href="http://www.blogjava.net/javagrass/archive/2008/12/09/245142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SD2C技术大会关键词：云计算、SOA和SaaS</title><link>http://www.blogjava.net/javagrass/archive/2008/12/08/245048.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Mon, 08 Dec 2008 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/08/245048.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/245048.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/08/245048.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/245048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/245048.html</trackback:ping><description><![CDATA[<p>12月4日，由CSDN和《程序员》杂志举办的<a href="http://www.sd2china2008.com/" target="_blank">软件开发2.0技术大会（SD2C）</a>在北京召开，在本次大会的主题演讲以及话题设置里，提到最多的三个关键词分别是<strong>云计算</strong>、<strong>SOA</strong>和<strong>SaaS</strong>。来自Google、微软、IBM、普元和阿里巴巴等公司的技术负责人对这些关键词分别进行了阐释。</p>
<p>云计算不仅是这次大会的一个热点，也是2008年技术领域的热点，以Google为代表，微软、IBM以及国内的安全厂商如趋势、瑞星等都将自己的产品和&#8220;云&#8221;联系在一起。在谷歌中国工程研究院副院长和工程总监幺宝刚的<a href="http://211.100.26.82/CSDN_Live/245/ybg.wmv" target="_blank">&#8220;共同打造云计算时代的开发网络平台&#8221;演讲</a>中，他特别提到Google云计算的网络平台全部是开源和免费的，而且从后台计算到前台展现以及开发云计算应用的语言和工具都提供了相应的产品：</p>
<blockquote>要实施云计算，后台的计算能力必须得到提升，要使得提供给开发商的API得到迅速响应，Google的App
Engine即是为了解决这一问题；另外在前端的展现上也要流畅，这样云端的强大功能才能体现出来，为了解决以前浏览器执行JavaScript脚本速度
慢的问题，Google提供了自己的Chrome浏览器，特别通过其V8渲染引擎优化JavaScript的解析速度；而为了达到用户能随时随地访问互联
网服务的目的，Google又推出面向手机和移动设备的操作系统Android；最后，Google还提供对脚本语言Python的支持，提供方便进行
Web应用开发的GWT，而且都以开源的形式提供。</blockquote>
<p>相比于Google的开放特性，微软依然是在自己现有的产品上进行改良优化，提供基于云端的服务。微软中国平台与开发合作部平台策略首席顾问赵立威就提到，云计算的出现不是对原有开发模式的终结，而是给个人和企业应用提供一个新的选择，他特别强调了<a href="http://211.100.26.82/CSDN_Live/245/zlw.wmv" target="_blank">微软为适应云计算而推出的操作系统——Windows Azure</a>：</p>
<blockquote>（Windows
Azure）是基于微软数据中心网络的操作系统，构成了将来微软云计算服务平台的最底层核心，它提供最基础的计算、存储和管理能力。基于这样一套操作系
统，不管你的应用、业务系统将来运行在哪里，只要在Azure上面，就能享受包括升级在内的不间断服务，帮助提供基于云端的强大的计算处理能力。在
Windows Azure底层架构上面，微软提供了SQL服务、Live服务、.NET服务、SharePoint和动态CRM等5个服务。</blockquote>
<p>如果说Google和微软对云计算还停留在宣传阶段的话，Amazon则已经趟出了自己在云计算领域的商业模式，其EC2和S3已经为众多厂商提供数据存储服务，而且价格不菲。在Amazon Web服务推广部高级经理和云计算战略师Jeff Barr的演讲中，<a href="http://211.100.26.82/CSDN_Live/245/jeff.wmv" target="_blank">他简明点出未来云计算的方向</a>：</p>
<blockquote>未来云计算会怎么样？只要你上了线，全世界都是你的服务器。你可以将你的时间更多地放到自己的服务和创造性上，你的未来会越来越光明。</blockquote>
<p>在云计算概念出来后，虽然SOA已经不如前几年那么火热，但是在企业应用领域，它依然是个绕不开的话题。对于目前SOA的发展，普元软件首席架构师焦烈焱<a href="http://211.100.26.82/CSDN_Live/245/pyj.wmv" target="_blank">认为SOA已经进入大规模实施阶段</a>：</p>
<blockquote>SOA已经进入实用阶段，不管是企业集成厂商还是企业软件客户，对于SOA概念已经逐渐接受，因此更多的企业忙于对SOA进行实施和实践，而无心再进一步进行市场推广。</blockquote>
<p>Oracle公司全球研发中心副总裁Frank Xiong在其<a href="http://211.100.26.82/CSDN_Live/245/oracle.wmv" target="_blank">&#8220;互联网创新与企业级应用新模式&#8221;演讲</a>中，也提到在未来一段时间内，SOA依然会继续影响企业级应用市场：</p>
<blockquote>我基本上可以判断，将来一定会有一批专业的软件公司，会专注在开发各种小的服务的模块。而把这些模块商业化，再卖给其他要组成这
些软件的公司，比如说你的帐单可以是SOA，或者帐目管理也是SOA，顾客管理也是SOA，这些SOA的服务都有共同的特点、共同的开发的层面，所以说会
很快被商业化。</blockquote>
<p>不论是Salesforce的SaaS，还是微软的S+S，软件即服务（Software as a
Service）对整个软件产业的进程已经起到了变革的作用。通过SaaS方式，Salesforce本能的年度收入已经突破10亿美元。在国内，阿里巴
巴下属软件公司阿里软件也在朝这一方向努力，希望能够为国内中小企业开发商提供SaaS平台支持。<a href="http://211.100.26.82/CSDN_Live/245/yewei.wmv" target="_blank">阿里软件研发中心总监叶伟在其演讲中</a>，提到了SaaS对终端用户、开发商的好处，以及目前SaaS面临的难题：</p>
<blockquote>对用户来说，SaaS的价值第一是按需付费，用多少买多少；第二是免除了安装维护的费用；第三是先天性防毒；第四是随处可用。而
对软件开发商来说，SaaS的价值第一是没有盗版问题；第二是借助于互联网，产品推广的成本很低；第三是维护的成本很；第四，也是最重要的一点是客户是可
积累的，续签率非常高。对于多租户情况下的SaaS，其不足之处一是要满足高性能，二是要满足高个性化，三是目前的基础设施还不够完善。</blockquote>
<p><strong>注：本文引用部分均非演讲者原话，为记者根据CSDN网站所提供的视频整理所得！</strong></p>
<img src ="http://www.blogjava.net/javagrass/aggbug/245048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-08 16:07 <a href="http://www.blogjava.net/javagrass/archive/2008/12/08/245048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruboss——面向Rails的Flex框架</title><link>http://www.blogjava.net/javagrass/archive/2008/12/08/244958.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Mon, 08 Dec 2008 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/08/244958.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/244958.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/08/244958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/244958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/244958.html</trackback:ping><description><![CDATA[<script type="text/javascript"><!--
google_ad_client = "pub-7685635382855681";
/* JavaGrass文章页468x60, 创建于 08-12-6 */
google_ad_slot = "5108955503";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<br/ />
<p>Ruby on Rails（ROR）是一个基于Ruby的用于快速Web应用开发的开源框架。Rails和RIA社区目前都在积极地寻求两者的集成方案，而Flex框架<a href="http://ruboss.com/">Ruboss</a>就是这样一个成果。InfoQ采访了Ruboss的联合创始人及CEO Peter Armstrong以更深入地了解该框架。</p>
<p>根据Armstrong所述，Ruboss框架是一种尝试以简化Flex应用和RESTful服务器端框架的集成。现在这些框架包括RoR和
Merb。Ruboss还提供了一个RESTful 接口以使其可以与Adobe
AIR的嵌入式SQLite数据库进行通信。&nbsp;Ruboss框架之于Rails和Merb的关系就好象Adobe LiveCycle Data
Services ES之于J2EE应用的关系。</p>
<p>当被问到为何不利用现有的一些框架，如Cairngorm或PureMVC时，Armstrong解释到：</p>
<blockquote>他们太简单了，无法满足我们的需要。Ruboss框架的架构与Cairngorm、Mate及PureMVC都不同。它是一个数
据集成框架，专注于Flex与RESTful框架的集成。把Ruboss看作是&#8220;Flex +
Rails&#8221;是很不错，但更加贴切的描述应该是&#8220;Flex + 简单的RESTful
CRUD&#8221;，其中Rails只是最流行且目前集成的最好的一个框架而已。 <br />
<br />
我们所需要的东西应能无缝地集成Flex和RoR并且会将Rails开发上的一些设计原则和生产力带到Flex中。我们觉得Rails是最具有生产力的服务器端框架之一，而Flex是最好的客户端RIA技术之一。因此，自然而然地我们想将这二者结合起来。 <br />
<br />
因此，我们真的没有与Cairngorm、PureMVC或Mate进行竞争。例如，虽然你所编写的Flex代码会以类似于Cairngorm的方式（它
通过命令模式对使用进行了简化）去使用Ruboss，但你还可以用比Cairngorm更简洁的方式去使用Ruboss。 </blockquote>
<p>Armstrong继续谈到Ruboss一些独特的特性：</p>
<blockquote>首先，我们是唯一一个将RESTful
CRUD作为通用接口的Flex框架，这一点与Rails、Merb及AIR中的SQLite是不同的。这种简化、优雅的设计使得大家可以对Ruboss
框架进行扩展以支持目前我们尚未提供的一些服务。例如，Ruboss的使用者可以将其连接到CouchDB上。因此，Ruboss就可以对服务进行扩展以
达到与Flex的完美集成。 <br />
<br />
其次，你使用Ruboss编写的代码不仅对传输方式来说是抽象的，而且还非常简单和优雅。第三，你可以快速上手并运行起来。通过使用Ruboss，你可以
在5分钟内创建一个完全的Flex+Rails应用。没有任何Flex框架能做到这一点，也没有任何Flex框架可以让你在这么短的时间内就完成从数据模
型的编写到应用运行的整个过程。想知道怎么做吗，看看<a id="hd-d" title="Ruboss&#8220;pomodo&#8221;指南" href="http://github.com/ruboss/ruboss4ruby/wikis/getting-started-with-ruboss-and-ruby-on-rails">Ruboss&#8220;pomodo&#8221;指南</a>吧。 <br />
<br />
最后，我们认识到没有任何一个框架能满足所有的数据集成需求或是解决所有应用的架构问题。因此，我们所做的就是尽力解决那80%的常见问题。 </blockquote>
<p>Armstrong又谈到了Ruboss框架的路线图：</p>
<blockquote>对于该框架来说，我们打算在本地和远程服务提供商之间增加数据同步支持，因为目前这是应用开发者必须要自己解决的问题。我们还打
算将对Merb+DataMapper的支持提升到Merb+Active
Record上来。这之后，我们会考虑扩展Ruboss以支持更多的服务，如SimpleDB及Google AppEngine。 </blockquote>
<p>Peter Armstrong还是<a id="twpi" title="Flexible Rails" href="http://manning.com/armstrong/">Flexible Rails</a>一书的作者及<a href="http://manning.com/armstrong3/">Hello! Flex 4</a>的主要编写者。</p>

<img src ="http://www.blogjava.net/javagrass/aggbug/244958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-08 10:36 <a href="http://www.blogjava.net/javagrass/archive/2008/12/08/244958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Envers加入Hibernate</title><link>http://www.blogjava.net/javagrass/archive/2008/12/06/244716.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Fri, 05 Dec 2008 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/06/244716.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/244716.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/06/244716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/244716.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/244716.html</trackback:ping><description><![CDATA[<script type="text/javascript"><!--
google_ad_client = "pub-7685635382855681";
/* JavaGrass文章页468x60, 创建于 08-12-6 */
google_ad_slot = "5108955503";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<br/ />
<p>Envers是一个来自于JBoss的开源项目，致力于提供简化版的持久化JPA类。InfoQ曾经在2008年七月<a id="yl9b" href="http://www.infoq.com/news/2008/07/envers_1_0_0_ga" title="报道">报道</a>过其首个GA版1.0.0的发布。随后，Envers 1.1.0提供了若干新的功能。</p>
<p>1.1.0版的主要关注点在于增加了对持久集合的支持。Envers的创立者Adam Warski<a id="fp:q" href="http://www.jboss.org/feeds/post/envers_1_1_0_ga_released" title="描述">描述</a>了这个新的功能：</p>
<blockquote> 现在你可以版本化任何关系、&#8220;简单&#8221;类型的集合以及映射等。现在支持所有JPA定义的集合映射，而且其中大多数的集合映射在Hibernate中也是支持的。<br />
</blockquote>
<p>最新版本还包括了其他一些改进和错误修正，以及更新的<a id="xgjs" href="http://www.jboss.org/envers/downloads" title="demo">demo</a>。在Envers的持续改进中，又出现了别的新闻。2008年10月30日，Envers正式成为Hibernate的一个模块。Envers的网站、文档和论坛在今后一段时间内会保持<a id="mrpk" href="http://www.jboss.org/envers/" title="原地址">原地址</a>。Adam Warski在博客中列举了<a id="i5az" href="http://www.jboss.org/feeds/post/envers_moves_to_hibernate" title="主要变化">主要变化</a>：</p>
<blockquote>
<ul>
    <li>代码现在存于<a href="http://anonsvn.jboss.org/repos/hibernate/core/trunk/">hibernate-core</a>存储（envers模块）。不会再对旧的存储库提交代码。</li>
    <li>问题跟踪迁移到Hibernate的JIRA上。所有公开的问题都已经移到了那里。</li>
    <li>Envers现在使用maven2构建，替代了过去的ant。</li>
</ul>
</blockquote>
<p>这对于Adam Warski和Envers的其他贡献者来说是一个激动人心的时刻，迁移到Hibernate家族将会继续Envers的模块开发，并成为开发者在持久化Java对象时必不可少的利器。</p>

<img src ="http://www.blogjava.net/javagrass/aggbug/244716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-06 00:21 <a href="http://www.blogjava.net/javagrass/archive/2008/12/06/244716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun停止资助SwingX的举动激怒社区</title><link>http://www.blogjava.net/javagrass/archive/2008/12/06/244715.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Fri, 05 Dec 2008 16:20:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/12/06/244715.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/244715.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/12/06/244715.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/244715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/244715.html</trackback:ping><description><![CDATA[<script type="text/javascript"><!--
google_ad_client = "pub-7685635382855681";
/* JavaGrass文章页468x60, 创建于 08-12-6 */
google_ad_slot = "5108955503";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<br/ />
<div dir="ltr">Sun在2004年JavaOne会议上宣布了SwingLabs项目，其一直在孕育着基于Swing的UI新技术，这些技术可能会被核心JDK采纳。该项目最初吸引了很多Sun以外的开发人员，但是在去年有所下降。Jeanette Winzenburg通过在<a title="SwingLab论坛的帖子" href="http://forums.java.net/jive/thread.jspa?threadID=52665&amp;tstart=0" id="hih3">SwingLab论坛的帖子</a>宣布Sun现在决定停止资助SwingX项目。这一举动激怒了Swing开发社区的很多人，他们越来越意识到，由于新的JavaFX技术，核心Swing API正在沦落为一个支持性的GUI库。Kirill Grouchnikov在他的<a title="博客" href="http://www.pushing-pixels.org/?p=758" id="tpok">博客</a>中就这一话题直截了当的说道：</div>
<blockquote> &#8220;在Sun内部，核心Swing正在作为一种UI的技术遗产而逐步退休，上周则是记录了一个伤心的（不过也可以预料的）里程碑——停止资助SwingX项目。&#8221;<br />
</blockquote>
<div dir="ltr">Kirill分析了SwingLabs的历史，他指出Sun在2007年1月<a title="决定" href="http://forums.java.net/jive/thread.jspa?threadID=21745" id="xt8i">决定</a>放弃SwingX Painter层和JXComponent接口的举动严重削弱了社区参与的热情：</div>
<blockquote>&#8220;这明显失去了外部参与者的信任，他们再也不会回来了，甚至是Sun内部开发人员也退出了这个项目。&#8221;<br />
</blockquote>
<p>Krill同时对JavaFX持严重怀疑态度：</p>
<blockquote>
<div dir="ltr">我不知道JavaFX未来会怎么样。Sun在这上面压了太多赌注，没有人想把他们的活动时间永远留在互联网上。我所知道的
是，JavaFX已经明显的阻碍了所有核心Swing的开发。在过去18个月里，我们看到重大的架构提议（JSR 295和JSR
296）换了负责人并被冻结。Java 6 Update 10中的Java
2D、AWT和Swing方面的所有面向客户的改进都是为了满足JavaFX的需要。</div>
</blockquote>
<p>与JavaFX关系密切的Sun高级工程师Josh Marinacci在<a title="随后的帖子" href="http://forums.java.net/jive/thread.jspa?messageID=315074&amp;tstart=0#315074" id="hh8i">随后的帖子</a>中指出上面的这种担忧是不成熟的，SwingX和SwingLabs会继续前进，Swing开发人员会从Java SE 6 Update 10和Java 7中获益：</p>
<blockquote>
<div dir="ltr">作为一个终身从事Java客户端的开发人员，我对Java的现状非常满意。Java客户端应用正在变得更快、更稳定、更易
于开发。这对Swing和 JavaFX应用都是如此。JavaFX
1.0版目前处在调整中，我相信当你看到我们的工作成果之后，你会很开心。这对于一个Java平台上的GUI应用开发人员是一个激动人心的时刻。</div>
</blockquote>
<p>Sun依然公开支持JavaFX。在Adobe的MAX会议上，Sun重申JavaFX桌面1.0版将在12月初
发布（目前已经确定为12月4号），JavaFX移动和TV版会在2009年第一季度发布。此外，Sun在过去一年里积极招聘工程师从事JavaFX开发
工作，包括来自苹果公司和Adobe公司的人员。但事实上软件对Sun的贡献很少。Sun在2009财年第一季度的全部软件收入为12400万美元，而存
储收入为50700万美元，服务器和其他系统收入为124600万美元。Sun事先没有通知个人而宣布裁员大约6000名员工，这肯定会引起Java社区
包括 Sun内部人员的忧虑。对于那些致力于Java和Swing开发的人员来说，Sun对Java
7中Swing的计划缺乏透明度才是一个真正的问题。</p>

<img src ="http://www.blogjava.net/javagrass/aggbug/244715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-12-06 00:20 <a href="http://www.blogjava.net/javagrass/archive/2008/12/06/244715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 谷歌将在奥地利建”服务器农场”投资数千万欧元</title><link>http://www.blogjava.net/javagrass/archive/2008/11/25/242500.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Tue, 25 Nov 2008 04:02:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/11/25/242500.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/242500.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/11/25/242500.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/242500.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/242500.html</trackback:ping><description><![CDATA[谷歌于上周四表示，已经在奥地利购买了一处占地75公顷的地产，计划未来两年建设一座新&#8220;服务器农场&#8221;。
<p>　　据国外媒体报道称，谷歌发言人凯&#183;奥博贝克（Kay
Oberbeck）在一份声明中说，公司对十多个欧洲国家进行了考察，最终选中了位于林茨市附件的科隆斯多夫村，该村人口约为3000。谷歌选中科隆斯多
夫村的原因是其良好的经济环境、附近有合格的人才和充足的水电供应。</p>
<p>　　谷歌新服务器农场最初将雇佣50-100名员工。</p>
<p>　　服务器农场中安装有大量高性能服务器，满足互联网用户对数据的需求。除了需要充足的电力外，服务器农场还需要充足的水源对计算机设备进行冷却。</p>
据称，谷歌用于建设该服务器农场的费用将达到数千万欧元。
<img src ="http://www.blogjava.net/javagrass/aggbug/242500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-11-25 12:02 <a href="http://www.blogjava.net/javagrass/archive/2008/11/25/242500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 网友设计python脚本程序检测搜索引擎含竞价排名数量</title><link>http://www.blogjava.net/javagrass/archive/2008/11/25/242498.html</link><dc:creator>墙头草</dc:creator><author>墙头草</author><pubDate>Tue, 25 Nov 2008 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/javagrass/archive/2008/11/25/242498.html</guid><wfw:comment>http://www.blogjava.net/javagrass/comments/242498.html</wfw:comment><comments>http://www.blogjava.net/javagrass/archive/2008/11/25/242498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javagrass/comments/commentRss/242498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javagrass/services/trackbacks/242498.html</trackback:ping><description><![CDATA[百度等中文搜索引擎的搜索结果中夹杂着不少广告，混淆用户视听。以为热心的网友<strong><a target="_blank" href="http://sites.google.com/site/lfm911/">lfm911</a></strong>自己制作了一个小软件，用来检测百度、谷歌中国、有道、搜狗和中国雅虎五大搜索引擎的搜索结果中，是否包含了通过花钱买到的排名。
<center><a href="http://www.dwgoogle.cn/articles/994.html"><img src="http://www.blogjava.net/images/blogjava_net/javagrass/1.jpg" alt="" width="460" height="140" /></a></center>
<p>　　查询数为总共发送的query个数，失败查询数为非正常返回的结果（可能被封禁了）。结果数是从抓取下来的页面中解析出来的结果个数（包括竞价
拍名结果），结果中广告是搜索引擎根据竞价排名，嵌到正常结果中间的结果。赞助商结果是指在正常结果上面的一些广告，而右侧广告是指在搜索结果页右侧的非
搜索结果。</p>
<center><img alt="" src="http://www.blogjava.net/images/blogjava_net/javagrass/2.jpg" width="460" height="169" /><br />
百度、谷歌、有道三者所包含的竞价排名数量，其中，谷歌和有道包含数为0</center>
<p>　　敬请区分赞助商链接和竞价排名的区别，我们在批判的是竞价排名（混淆在搜索结果中的广告），而非赞助商链接。</p>
<center><a href="http://www.dwgoogle.cn/articles/994.html"><img alt="" src="http://www.blogjava.net/images/blogjava_net/javagrass/3.jpg" width="460" height="193" /><br />
</a></center>
<center><img alt="" src="http://www.blogjava.net/images/blogjava_net/javagrass/4.jpg" width="460" height="151" /><br />
（点击看大图）</center>
<p>　　点击<a target="_blank" href="http://sites.google.com/site/lfm911/Home/tech/search-engines/ad-finder.zip?attredirects=0">这里</a>可以下载这个小软件，不过我不太会用Python脚本，如果你会的话，可以自己用了试试看。</p>
<img src ="http://www.blogjava.net/javagrass/aggbug/242498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javagrass/" target="_blank">墙头草</a> 2008-11-25 12:00 <a href="http://www.blogjava.net/javagrass/archive/2008/11/25/242498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>