首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

futurelight/ 


共489个网摘 [ 1  2  3  4  5  6 ... 17 ]  下一页  |  访问futurelight的个人空间

InfoQ: 编配和编排的定义之争

futurelight收录,使用标签:SOA,时间:2008-9-6 20:25:41 | 相关网摘我也收藏

【InfoQ中文站】随着SOA所受关注渐增,标准化(给予精确的含义)所用术语显得尤为重要。一场有趣的讨论更是阐明的了这点。这场讨论的起因是Michale Poulin抛出了这样一个问题,“orchestration(编配)”和“choreography(编排)”之间的区别何在,并寻求指引能将这一区别“清楚阐述”的解答。他的问题引来了一窝蜂的回复,而不是简单的答案,每个人根据自己不同的理解,给出的含义也略有差异……

Anne Thomas Manes从引用Merriam-Webster(韦氏大词典)上这些词汇的传统含义来展开她的解释:

编排(Choreography):一种象征性地表达舞蹈的艺术:

对舞蹈的组合以及安排,特别是芭蕾
这一活动所产生的作品
编配(Orchestration):针对乐队表演对音乐作品进行的调整;又:对音乐作品的乐队演奏

尽管这一定义并不能真正从IT的角度帮助澄清编配(orchestration)与编排(choreography)之间的差异,但许多讨论的参与者都间接地用到了它。Anne接着又通过引用在现有的WS-*规范,即业务流程执行语言(BPEL)与Web服务编排定义语言(WS-CDL)中的定义,继续进行了阐释:


文章:世界顶尖运动队教练的成功秘诀

futurelight收录,使用标签:.NET,时间:2008-9-6 20:25:08 | 相关网摘我也收藏

【InfoQ中文站】在不久前结束的北京2008奥运会上,中国女子曲棍球队在决赛中惜败给荷兰女子曲棍球队,获得这个项目的银牌。虽未夺金,这已 经是中国女子曲棍球的最佳成绩。荷兰女子曲棍球队目前排名世界第一,在最近三届奥运会上均获得奖牌,最好成绩是在雅典奥运会上获得银牌,是2006年世锦 赛冠军和2007年世界女子曲棍球冠军杯赛冠军。她们的主教练Marc Lammers更获得了2007年度最佳教练的称号。Marc Lammers于2002年接手国家队教练职位,在他的带领下,球队一直处于世界顶尖水平。

曲棍球是一项需要团队参与的运动,与软件开发有类似之处,要想成功,团队因素至关重要。实际上,团队运动有许多令人兴奋的因素可以为软件开发所用。在《世界顶尖运动队教练的成功秘诀》一文中,作者Urs Peter作为资深咨询师,他从Marc Lammers的一个演讲中总结出9项原则,可为敏捷软件开发所用。这些原则包括:

利用有效沟通的威力。
只有做事方式不同,才能产生不同结果。
创新是得到更好结果的绝佳方式,却不是目的;而且,要小心副作用。
不断挑战工作方式。
关注人的长度而不是弱点。
为团队指出明确的努力方向。
眼光向内,只见局限;眼光向外,可能无限。
目标越重要,积极性越高。
将竞争精神、乐趣和有益的自我反思结合在一起,上述种种原则会自然实现。

更多详细内容,请看InfoQ独家文章:世界顶尖运动队教练的成功秘诀。


你的灯亮着吗?——“用数字沟通”后续

futurelight收录,使用标签:项目管理,时间:2008-9-6 20:24:35 | 相关网摘我也收藏

【InfoQ中文站】继InfoQ中文站报道过“数字是有效沟通的要素之一但不是全部”一文后,敏捷中国社区中的讨论又热火朝天的持续了一段时间,本文对其中的讨论进行后续报道。

针对“用数字沟通”一文中的这句话:
"当然,Rick,当然",Sam说"你们开发人员总是这样,什么时候你们才会说'没问题'?听着,如果你愿意周末加班,应该是有奖金的。"
Jeff Xiong说道:
所谓有意义的估计值,是指(1)偏差范围小;(2)朝正向或负向偏差的概率相当。比如我说"我在2050年前后偏差50年会死",这不是什么有意义的估计值;我说"我在2008年之后100年内会死",这也不是什么有意义的估计值。给出越有意义的估计值,提供越多的信息量,就意味着出现偏差的风险越大。

那么在一个事实与估计出现负向偏差(或者正向偏差,取决于你说的对象)则估计者会因此受到惩罚(加班)的环境下,估计者会采用什么样的策略来提供估计值,这种环境会对量化管理/沟通产生怎样的影响。我本来不觉得这是一个很有研究价值的主题。
王鹏飞则反驳说:
未必如此.
……

估计值的偏差程度和风险水平是由估计对象的信息的准确性和估算方法决定的, 与你的所说的"给出越有意义的估计值,提供越多的信息量"并没有内在的因果关系。Anderson在软件工程的敏捷管理书中提供了一组实际项目的参考数据: 信息量足够的项目, 估算偏差为+10%. 信息量极度缺乏的项目,估算偏差在200%甚至更多. 在那个故事中,Rick团队里的Fred对Whatsis是很了解的并且有在多个项目中应用Whatsis的经验. 这就为Rick有可能为Sam提供较为准确的估计数据奠定了基础。
另一个是估计方法的问题. 这直接影响到估计结果的精确程度。

我本人用FDD多年,我总结过一套"风险-人日"的参考值以及确定风险系数的方法, 我用的效果很好。XP中怎么估算,也应该有相应的方法. 为了让估算值尽量保险, 一般会为估算结果加上一个缓冲值, 也就是所谓的偏差。 至于公司环境和商业上的因素, 本身并不影响估算结果的准确性, 但会影响人们如何对待估算结果。

Jeff Xiong继续回应:


John Resig谈TraceMonkey和基于JavaScript的RIA未来

futurelight收录,使用标签:.NET,时间:2008-9-6 20:24:03 | 相关网摘我也收藏

【InfoQ中文站】新发布的TraceMonkey是一个基于于跟踪(trace-based)的即时(JIT)编译器,将由Firefox的下一版本引入,借此提升JavaScript的性能。InfoQ采访了Mozilla JavaScript传道者及jQuery的创建者John Resig,以了解该激动人心的开发及其对基于JavaScript的RIA未来的影响。

InfoQ:你认为该开发将对RIAs产生何种影响?你认为这会为更加丰富的应用敞开大门么?这看起来是什么样的?

完全没问题。有一些应用领域是很难实现的,目前在JavaScript领域来说就是那些计算密集型应用。实现任何一种复杂的游戏或者图形仿真应用都是极具挑战性的。借助于Tracemonkey(及其他ECMAScript引擎性能的改进),这些挑战现在变得可行了——这真令人感到兴奋。

InfoQ:Dion Almaer在Twitter上提出这样的疑问——“你在JIT代码中借助Firebug来调试代码有多困难?"。你如何看待这一问题?

坦诚地说,区别不会很大(对于前端的Web开发者来说)。大多数改变发生在引擎的内核下,这使得最终的结果对于大多数Web用户来说都是无缝的。

现存的一种情况(现在还不清楚这能否在Firefox 3.1中得以解决)就是,进行跟踪的同时Mozilla内部的JavaScript调试器(允许你设置断点的工具——同时也令Firebug变得强大)无法运行。相对于上面提到的,这完全是另外一码事,因为一旦用户打开调试器,他们仍然可以开心地调试其JavaScript代码(仅仅无法调试JIT代码)。

InfoQ:其他厂商有没有仿效Mozilla,即时编译本地代码呢?


OpenJDK上可以进行动态调用了

futurelight收录,使用标签:Java,时间:2008-9-6 20:23:39 | 相关网摘我也收藏

【InfoQ中文站】John Rose宣布了“国际动态调用日(International InvokeDynamic Day)”,以此来庆祝其通过'invokedynamic'指令首次成功调用了动态方法:

今天凌晨,JVM首次针对invokedynamic指令处理了一个完全的引导周期、链接常量池入口、创建具体的调用地址对象、寻找并调用每个类的引导方法、将具体的调用地址链接到方法句柄,然后通过方法句柄重新高速调用链接的调用地址999次。尽管方法签名一样,但调用者所指的方法名与被调用的是不同的。链接是通过随机的、引导方法中手写的Java代码来实现的。
“invokedynamic”指令是为多语言虚拟机(叫做'Da Vinci Machine')所计划的众多特性之一。Da Vinci中所有计划的增强特性都在MLVM站点的子项目部分进行了描述。动态调用也是JSR-292的一部分,InfoQ早前已经对其进行了讨论,同时它也是对一些针对核心Java VM的实验性的Da Vinci工作的一种改编。John Rose所发表的声明表明'invokedynamic'首次运行在OpenJDK hotspot虚拟机上。




动态调用是针对JVM的动态语言开发者最期望的特性之一。Gilad Bracha曾在InfoQ上讨论过动态调用背后的理论以及为何它是一种必要增强的原因。


JRuby的领导者Charles Oliver Nutter就John Rose的声明发表了以下看法:


IDC揭示中国软件厂商成长路线图

futurelight收录,使用标签:SOA,时间:2008-9-6 20:23:03 | 相关网摘我也收藏

【InfoQ中文站】日前,IDC公司联合国内软件厂商普元在北京对外发布了《软件商成长路线图》白皮书。该白皮书为IDC在2008年3月至5月间对40家中国大中小软件开发商访谈所得,其中分析了国内软件厂商在发展过程中所面临的挑战、机遇和对策,并结合两个有代表性的案例进行说明。

根据IDC 2007年的调查,目前中国的软件服务产业依然相对滞后,这一产业的规模仅占整个IT产业比重的25.8%,而同期全球的这一比重为61.3%,美国的这一比重更是高达69.9%。那么制约中国软件服务业或者软件厂商的因素主要体现在哪里呢?在《软件商成长路线图》白皮书中,IDC对此做了总结:

软件开发按时完成率低:……在参与此次调查的产品型软件开发商中,产品按时完成率低于80%的企业占总数的60%;而由于对项目进度的控制较产品进度的控制相对容易,调查中的服务型软件开发商的项目完成率情况略好于产品型软件开发商,其项目按时完成率低于80%的企业仍占总数的53%。
人员流失影响企业发展:……从数量上来说,中国软件人才整体供过于求。但从质量上看,中国软件开发商面临着严重的人才缺口和人才流失问题,尤其是对高端软件人才缺乏吸引力,高端人才流失到国外软件开发商的现象显著。
企业资源结构不平衡:……IDC的调查显示,“技术当家”的思想仍然大面积主导着中国的软件开发商,直接造成了企业在资源分配上对技术层面的倾斜,而忽视了在项目管理、客户关系以及拓展市场等软实力方面的资源投入。
随后IDC以提升软件开发商的核心竞争力为出发点,从业界模型和调研等两个方面归纳了软件开发商(注:在本白皮书中,IDC将产品许可证占软件服务相关总收入的60%以上的软件开发商定位为产品型,否则为服务型)的四阶段模型并对此进行了分析。比如对服务型软件开发商而言,其竞争力阶段分为关注客户关系、关注项目管理、关注市场拓展、关注资源整合等;而对产品型软件开发商来说,其竞争力阶段分为关注技术、关注产品、关注客户和关注利润等。

比较有意思的是,与往常所听到的各大技术厂商不断加大在研发上的投入力度略有不同的是,IDC的调查显示,在目前多变的市场环境下,软件商的核心竞争力是在对客户业务的理解和快速交付上,而非解决技术架构问题。而要增强企业的竞争力,IDC建议软件商对技术平台和产品平台进行分离,其原因在于:


GWT 1.5: 支持Java 5、性能改进及JavaScript增强

futurelight收录,使用标签:Java,时间:2008-9-6 20:22:24 | 相关网摘我也收藏

【InfoQ中文站】用来创建基于JavaScript web应用的以Java为中心的编译器Google Web Toolkit(GWT),今天(8月28日)它发布了1.5版。InfoQ有幸采访了其技术领导Bruce Johnson以了解关于该发布的更多信息及增加的新特性。

GWT 1.5的主要新特性包括:

Java 5语言支持——支持Java 5的特性如泛型、枚举、注解、自动装箱及可变参数列表
编译优化——编译后的应用的性能再一次得到改进,现有的应用使用GWT1.5重新编译后速度将有很大提升
JavaScript增强——JavaScript的Overlay类型及新的高性能的DOM API提供了强类型的JavaScript对象和DOM编程,而这一切无需增加运行时成本
默认的可视化主题——新版本提供了几个基于CSS的UI主题以初始化应用的感官(look-and-feel)
可以在这里查看完全的变化列表及发布信息。

Johnson阐述了1.5版的几个变化:

[@gwt.eventArgs以前用作]针对RPC的基于javadoc的元数据。这是一个很棒的示例,因为当升级到GWT 1.5时,大多数人一开始都会遇到这个变化。RPC现在变得更简单也更丰富,因为RPC接口可以简单地指定泛型集合。另一个值得注意的事情就是GWT 1.5现在已经完全支持“long”原始数据类型了。在GWT 1.5之前,“long”并没有得到真正支持,因为JavaScript没有64位的整数类型,因此使用本地的JS number并不能表示“long”的全部范围。在GWT 1.5中,我们通过产生额外的代码来确保long的行为是完全正确的,尽管在性能上要比GWT 1.4稍微低点。这是不可避免的:我们必须在性能和正确性上做出抉择,显然我们会选择后者。如果你在GWT 1.4中大量使用了long类型并且速度要比数字范围更加重要的话,请考虑将这些变量改为“int”或者“double”以保持与GWT 1.4一样的速度。
Johnson还详细分析了编译器的变化——以此来支持1.5版:


文章:探索JVM上的LISP

futurelight收录,使用标签:Java,时间:2008-9-6 20:22:00 | 相关网摘我也收藏

【InfoQ中文站】Lisp(List Processing Language)是一门函数式语言,1958年由美国麻省理工学院的AI小组提出,是迄今为止除Fortran语言外历史最悠久、使用最广泛的语言。 Lisp的发展历史也是方言演变的过程。方言多是在没有统一精良的标准时衍生出的结果,是人们发挥自己的聪明才智创立出的符合个人需要的语言标准。今天使 用最为广泛的Lisp方言是Common Lisp和Scheme。

作为一门存在已久的语 言,Lisp必然有其不可替代的独特之处,Lisp的函数结构,语法简单统一,可塑性强,在人工智能领域已得到非常广泛的应用。另外一方面,目前编程语言 的王者Java依然处于颠峰状态,支持者和追随者甚众。那么如何将这两种语言整合起来,达到取长补短、优势倍增的目的,就成为当前最具有现实意义的工作。

本 文用小段篇幅介绍了Lisp语言的特点,比较了它的两种主流方言及其在JVM上的实现。然后介绍了运行环境REPL,并通过一些简单的程序展示了Lisp 语法特点和语言特征,重点是函数(function)、宏(macro)和lambdas。文章的最后,用一个例子演示了Java程序是如何同Lisp程 序进行整合、共同发挥效用的。

阅读完整文章:探索JVM上的LISP。


WOA治理不同于SOA治理

futurelight收录,使用标签:SOA,时间:2008-9-4 11:27:52 | 相关网摘我也收藏

【InfoQ中文站】先不论它讲的是WOA而不是REST这点,在最近的一篇文章里,Dan Foody讨论了治理基于Web的架构。

有人可能会说,是SOA自身的复杂性(受企业自上而下的宗旨影响)造成了它需要正规的SOA治理活动。若没有正规的SOA治理,你就不能指望SOA成功,因为它太容易出错了。
他认为,WOA设法避免了SOA的许多复杂性,因而就不需要复杂的工具或WS-*架构了。(我们假定Dan Foody是知道许多人不乐意在SOA和WS-*之间划等号的。)当然,也有人认为,在必须要实现复杂应用且需要WS-*时,采用REST(也就是WOA)并不简单,但我们先不管这些,因为这里我们主要关注的是Dan Foody的核心问题:“WOA仍然需要治理吗?“。

回答多半是肯定的(如果你是一名企业架构师的话,现在可以不用紧张了)。但我认为“WOA治理“的方式将与SOA治理存在根本的不同(好,这下企业架构师们又该紧张了)。
原因是什么?在传统的SOA中,


调查显示,SOA失败?

futurelight收录,使用标签:SOA,时间:2008-9-4 11:27:27 | 相关网摘我也收藏

【InfoQ中文站】最近有篇报道指出SOA失败、而面向Web的架构(Web Oriented Architecture,WOA)成功,对此Assaf Arkin提出了质疑。他针对的是一篇Information Week文章中的调查结果,该文说道:

IT专业人士们已经对SOA许诺的投资回报表示出了怀疑。InformationWeek 2007年对278位IT专业人士进行的一次网络调查显示,有32%的SOA使用者说他们的项目没有达到期望目标。而这些人之中,有58%说SOA项目给他们的IT环境增添了更多复杂性,有30%说他们花去的成本超过了预期。在所有提供反馈的SOA用户之中,只有10%说结果超出预期——这一结果与Nucleus研究公司的调查结果一致,他们调查发现,在106家接受调查的机构中,只有37%真正通过SOA技术和计划实现了投资回报。

他将此看成是软件开发的行业平均水平,并认为“考虑到行业水平就那样,这个结果并不是那么糟糕或令人沮丧。这就是平均水平”。他说:


InfoQ: 枚举并发集合探讨

futurelight收录,使用标签:.NET,时间:2008-9-4 11:26:31 | 相关网摘我也收藏

【InfoQ中文站】.NET的并行扩展(Parallel Extensions)包括两个并发集合:堆栈和队列。其他集合类还是按照它们固有的方式工作,但是对于语义的处理依然有一些挥之不去的问题。尤其是当集合在一个线程被编辑,而在另外一个线程被枚举的时候,会发生什么呢?

对于单线程的类,答案是众所周之的,枚举器将抛出一个异常。不过对于并发类来说,在这种情况下应该设定一种规则,提供几种选择。

一种选择是,在枚举开始的时候为现存数据创建一个快照。这种方式在循环的过程中会占用更多的内存,不过快照一旦被创建,就可以被自由地锁定。这种方式下隐含的性能问题很难被预估。

不使用快照,集合还有一组保证措施提供给开发人员。它们中很多都是自相矛盾的,不过在某些条件下它们也都是适合的。

删除的条目总是可读
删除的条目不可再读
如果添加在集合的末尾,那么添加的条目总是可读
如果添加在集合的任何地方,那么添加的条目总是可读
添加的条目总是不可读取
被移动的条目,不能被读取两次
被移动的条目,如果是移动到集合的末尾,那么就能被读取两次
被移动的条目,就算是被移动到集合的开头,也总是可以读取
不超过N条的条目就能被读取,而N是集合的初始大小。

在给出一个选择范围后,Stephen Toub向大家征询关于并行扩展的反馈意见:


F#最新信息:MonoDevelop、新书和新的CTP

futurelight收录,使用标签:.NET,时间:2008-9-4 11:26:06 | 相关网摘我也收藏

【InfoQ中文站】虽然依旧还是一个研究项目,但对于F#的热情持续不减。在今天的综述当中,我们来简短看一下F#有哪些最新信息。

首当其冲的一条信息是,新的MonoDevelop 2.0的F#插件。这个版本的MonoDevelop仍旧还处于预览状态,一些F#特性(例如,语法高亮)只有你得到MonoDevelop的最新源代码来编译后才能工作。

下一条信息是,新书《F# for Scientists》,Don Syme写到,

我还没有得到印刷版,不过我已经读了这本书的草稿了,它真的让人印象深刻。3D虚拟那一章写得是如此的浅显易懂和内容丰富,并行编程技术也表达得简单和丰富,而和Mathematica、MATLAB交互的例子,以及使用网络数据库打开读取重要信息源和工具的入口的例子,构成了现代科学的一个重要部分。
在Amazon的一个评论里,Jamie Bernardin写到,


Google发布基于全新JavaScript引擎的开源浏览器

futurelight收录,使用标签:Java,时间:2008-9-4 11:25:45 | 相关网摘我也收藏

【InfoQ中文站】最终,Google还是进军了浏览器领域。9月3日,Google面向全球用户发布了其历经三年时间研发的浏览器——Google Chrome。此前,Google一直对外否认其有开发浏览器的计划,而且就在不久前Google和Mozilla就对Firefox的支持签署了一份三年的合作协议。对于Google这一产品的推出,浏览器市场的格局将有什么样的变化,业界也是众说纷纭。有媒体表示,Chrome的推出,受到威胁的其实不是一直视Google为最大竞争对手的微软所推出的IE8,而是和Google一直良好合作关系的Firefox:

最担心Google Chrome的不会是微软。尽管多年来广受诟病,但微软在浏览器市场上的份额仍然超过了70%。与Windows捆绑仍然是微软的最大优势。最担心Google Chrome的应当是Mozilla。

Chrome并非基于Firefox,而是基于苹果的WebKit引擎。尽管Safari并没有获得巨大成功,但WebKit却向它提供了一大优势:速度。WebKit和谷歌开发的V8 java脚本渲染引擎联手,理论上将使Chrome在速度上“百尺竿头,更进一步”。即使Chrome的功能达不到出色的水平,也将成为Firefox的强大竞争对手。
那么Google是如何考虑的,InfoQ中文站编辑在今天早些时候采访了Google总部产品管理副总裁Sundar Pichai,他首先介绍了Google推出Chrome浏览器的目的:

我们已经在这个项目上努力了三年,其中我们了解到,随着互联网的普及,越来越多的人将应用部署在网络上。而目前的浏览器因为各种原因,易用性和速度都不能满足我们的要求。Chrome的推出就是为了解决这些不足之处,以更好地支持Web应用。
除此之外,对于更多人关注的相比于IE和Firefox,Google Chrome有哪些让人耳目一新的特点问题,Sundar也从用户界面和技术内核等两个方面进行了分析:


InfoQ: 现代应用性能管理深度概览

futurelight收录,使用标签:SOA,时间:2008-9-4 11:25:10 | 相关网摘我也收藏

【InfoQ中文站】ADP的高级技术架构师Nicholas Whitehead在IBM developerWorks上发表了由三部分组成的文章系列,题为Java运行时监控。在该系列文章中,他给读者介绍了应用性能管理(APM):

在第一部分,他研究了APM系统的属性,描述了系统监控中的反模式,介绍了监控JVM性能的方法,并提供了有效工具化应用源码的技术
第二部分中,他讨论了后编译技术工具,特别是拦截、类包装、字节码工具
在第三部分,通过讨论应用生态系统的性能和可用性,进行了总结
Whitehead一开始先讨论了APM反模式,这些反模式确定了公司在拼凑监控方案时可能会面对的关键问题。他讲了如下几个反模式:
盲点:只监控环境中的一部分,而非所有的因素,会导致分析过程中不确定的结果
黑盒子:类似于盲点,但范围是到应用或组件。一个黑盒子就是一个组件,其监控解决方案不可见其内部的性能
散列和分离的监控系统:该反模式对比了分散监控和统一监控,对具体应用堆栈(比如操作系统、JVM、或数据库)深入但散列的监控很难确定性能问题的根源。Whitehead给出了一幅图,很好地说明了这一点:


Fowler:敏捷还是精益?——毫无意义的问题

futurelight收录,使用标签:项目管理,时间:2008-9-4 11:23:39 | 相关网摘我也收藏

【InfoQ中文站】在最近一篇博客中,Martin Fowler解释了"应该用精益软件开发方法而不是敏捷软件开发吗?"这个问题,他说这是基于一种错误的假设。敏捷和精益的思想相互交织如此之深,以至于你在使用敏捷的时候也总在做精益的事情,反之亦然。我们可以考察它们发展过程的变化,发现它们内在关联的描述,这样更有趣、更有启发性。

Martin Fowler开始简单解释了精益概念的历史,他说,有关精益概念的历史根源可以追溯到20世纪50年代发展起来的精益制造和丰田生产系统。这个系统和它蕴含的思想,为日本制造业,尤其是丰田公司,赢得了广泛的信誉。

在任一款基于精益制造和丰田生产系统的工作方法中,精益已经开始作为一个涵盖性的术语在使用了,包括精益建造,精益实验室,以及精益软件开发。

敏捷也是一个涵盖性的术语,它被用在诸如Scrum和XP这些分享敏捷核心原则的开发方法中。当一些人说他们正在用敏捷软件开发的时候, 这可能意味着他们正在使用敏捷开发方法中的任何一个,或者是


文章:Ruby/Rails──不一样的"Web"应用

futurelight收录,使用标签:Web开发,时间:2008-9-4 11:23:13 | 相关网摘我也收藏

【InfoQ中文站】前些日子,Ricky Zheng以“rubynroll”的id在JavaEye上发表过两篇博客,名为“Ruby/Rails:不一样的‘web’应用”和“Ruby/Rails:不一样的‘web’应用”(续)”。他以一个农场自动化系统为示例,探讨了如何在一个传统的嵌入式领域项目中为了拥抱变化而引入web技术,研究如何定制以Rails为基础的领域特定的MVC框架。

InfoQ中文站有幸邀请到作者,对这两篇博客进行了归纳整理,作者在文后总结道:

当遇到需求变化时,运用恰当的技术手段有时候可以柳暗花明,特别是跨领域交叉应用,往往能收到意想不到的效果。Web技术的蓬勃发展带来了异彩纷呈的诸多 框架技术,开发工具,以及丰富的人才储备,这些资源对于非Web领域也有巨大的吸引力。本文所举的这个例子就是巧妙地通过基于Rails的DSF来解决实 际问题。实际上这个例子还有一个精彩的插曲值得一提,那就是客户希望可以脱离W设备和ZB网络来开发应用程序,简单地说,就是希望有一个W设备的硬件模拟 器。在传统解决方案里面,硬件模拟器是一项非常复杂的工作,但在这里,由于整个解决方案采用的是Web技术,因此实际上模拟器的核心就是一个简单的MML 到HTML的转换程序加上少许JavaScript而已,浏览器就摇身变成了一个硬件模拟器。突破传统思维的束缚,就容易找到金矿。

我不是一个Web程序员,也从未开发过用户超过十个人的传统Web程序,但这并不意味着Web技术对我无用。正相反,Web技术经常被应用到我所从事的嵌入式系统领域。基于Rails的DSF解决方案为加速Web技术在其它领域的应用开启了一道光明之门。
敬请阅读全文:Ruby/Rails──不一样的'Web'应用。


跟ASP.NET MVC一起使用jQuery

futurelight收录,使用标签:.NET,时间:2008-9-4 11:22:48 | 相关网摘我也收藏

【InfoQ中文站】最近人们对微软的ASP.NET MVC框架投入了越来越多的关注。ASP.NET MVC功能强大、灵活,除了框架内包含的库之外,开发人员还可以使用其他库,jQuery这款流行的JavaScript框架自然也不例外。

jQuery是一款容易上手的JavaScript库,任何Web开发平台都可以使用,它跟ASP.NET MVC框架的结合尤为引人瞩目。James Estes曾在InfoQ上发表过一篇文章,名为jQuery正在靠1.2版及jQuery UI赢得人心,谈到了jQuery最近的一次发布,并介绍了很多杰出的特性。

藉由ASP.NET MVC内置的扩展性,开发人员便可以使用第三方库,例如jQuery。在使用ASP.NET Webforms的时候,如果使用jQuery而不是ASP.NET AJAX,难度会比较大。

刚开始撰写本文的时候,ASP.NET MVC的版本是Preview 4,有些在Preview 4中使用的技术可能无法在早期版本中正常工作。Preview 4可以在CodePlex上下载。

初步配置

我不打算把它写成一篇完整的jQuery指南,只是简单给出几个跟ASP.NET MVC一起使用这款JavaScript库的示例。Chad Myers有一篇很精彩的指南,包括了如何上手。

首先要保证你有ASP.NET MVC,所以请先从CodePlex上下载安装(注意:你需要运行Visual Studio 2008才能使用ASP.NET MVC框架)。
ASP.NET MVC框架装好以后,就应该已经创建好了一个新的ASP.NET MVC Web Application工程。
下一步,下载jQuery,下载Packed或者是Minified版本,然后放到上面那个工程的Content目录下。
添加一个对Content目录下jQuery文件的引用。
简单示例
Ryan Lanciaux写过一篇很优秀的文章,名为jQuery和ASP.NET MVC框架,其中列出了很多在ASP.NET MVC框架中使用jQuery的关键因素。Ryan在文章中进行了详细阐述:


文章:AtomServer──数据分发的发布动力

futurelight收录,使用标签:SOA,时间:2008-9-4 11:22:27 | 相关网摘我也收藏

【InfoQ中文站】考虑这样一个场景:你为之工作的公司是由完全独立的站点组成的联邦,而且在各种不同平台上用了半打不同编程语言来实现。每个独立站点都有其自己的数据库与模式,被拥有不同技术集合的各个团队管理,分布在美国和欧洲的八个站点上。别忘了,公司还在扩张。

你的任务?使这些截然不同的系统能彼此之间方便快捷的共享关键数据。

Bryon Jacob和Chris Berry通过他们的实践很好地对这一挑战进行了回应,他们的法宝究竟是什么呢?一是基于RESTful的设计,二是基于发布-订阅的模式。

没错,你猜对了,就是它:Atom。如今的Atom大有挑战JCR和UDDI的趋势。InfoQ曾经就此采访过Dan Diephouse,MuleSource也用它来做注册中心和存储仓库(Registry/Repository)。

这一次Bryon Jacob和Chris Berry为我们贡献了Atom存储的开源实现AtomServer。行了,开始我们的发现之旅吧!

查看完整文章:AtomServer──数据分发的发布动力。


InfoQ: Ruby和Rails软件栈概览

futurelight收录,使用标签:Web开发,时间:2008-9-1 10:59:03 | 相关网摘我也收藏

【InfoQ中文站】尽管大多数时候使用Ruby编程是很有乐趣的,但是安装和设置所有需要的软件组件可就不是了。幸运的是,Ruby软件栈的数目正在增长当中,来源亦各不相同:Amazon EC2镜像、虚拟机镜像或者为现存系统提供的简便安装程序。

此列表无意要包括所有的东西,仅仅是给你一个概览,来看看当前可用的各种Ruby软件栈。

RubyWorks
RubyWorks产品栈是 ThoughtWorks提供的,由若干开源产品所组成,已经配置过使其协同工作,通过Linux发布版的常用工具就可以方便的安装和更新。可用于 RedHat Enterprise Linux 4/5、CentOS、Debian Etch和Ubuntu Feisty。如果你安装了rubyworks软件包,你就得到了一个基于HAProxy的Mongrels集群,并可以通过monit进行监控。ThoughtWorks对于软件栈也提供付费支持服务。

EC2 on Rails
正如其名字一般,EC2 on Rails是一个Amazon的Elastic Computing Cloud EC2的镜像。这是个Ubuntu Linux服务器镜像,可以运行一个Mongrel集群,其背后的技术包括Apache 2.2、mysql、memcached、monit以及更多为你准备好的东西。它还能创建一个Amazon S3的数据备份。管理方面由Capistrano摆平,你只需要安装ec2onrails的gem就可以得到所有你想要的一切。

Elastic Server On-Demand
Elastic Server On-Demand, 来自于CohesiveFT,在下载VMWare、Parallels、Xen或者EC2镜像之前,你可以


InfoQ: JRuby 1.1.4 Released

futurelight收录,使用标签:Java,时间:2008-9-1 10:58:30 | 相关网摘我也收藏

【InfoQ中文站】JRuby 1.1.4 现在可以下载了。虽然还只是维护性质的版本,其中仍然提供了很多改善。

在发布说明 中提到的功能列表包括如下一些主题。Java集成的变化:

- Java集成层的大规模重构
- 绝大多数功能2-20倍的速度提升(调用、构造、数组)
- 众多长期存在的Ruby和Java交互的bug得到修复
- 现存的特性更健壮、可靠
- 闭包可以通过接口传递给静态方法和构造函数
- Java的异常可以直接从Ruby中抛出、处理
我们之前提到了JRuby 1.1.4与Java集成的更多细节。InfoQ最近与Nick Sieger的访谈也提到了在Java集成上的工作。

对Ruby 1.9支持:

- 开始支持Ruby 1.9(通过-1.9标志)
- 本生complex/rational

本生程序库集成(我们曾谈到过Rubinius的FFI端口对JRuby的支持):


InfoQ: 战胜变化中的阻力

futurelight收录,使用标签:项目管理,时间:2008-9-1 10:58:02 | 相关网摘我也收藏

【InfoQ中文站】在Agile 2008大会上,《Test Driven: TDD and Acceptance TDD for Java Developers》的作者Dave Nicolette和Lasse Koskela举办了一场研讨会,“战胜变化中的阻力”。不管是实施敏捷还是重新布置办公室,只要是变化就都会遇到阻力。问题在于遇到阻力时怎样应对。


当我们提出改变的建议而遭遇阻力,我们往往都会先做出情绪化的反应(生气或是沮丧):这群傻B,犟驴……Dave认为,这种想法丝毫无济于积极的推行变化。

阻力的根源可以分为以下三种:

认知:我不明白需要改变什么东西,会带来什么好处,怎么改变。
情绪:我能做到么?我会喜欢它么?我是不是感觉受到了威胁?
行为:我拒绝被人吩咐做事。
其形式又可以分成如下类型:


InfoQ: 在玩牌中学到分布式团队的沟通

futurelight收录,使用标签:项目管理,时间:2008-9-1 10:57:31 | 相关网摘我也收藏

【InfoQ中文站】在Agile2008上,Charles Suscheck演示了怎样用修改后的Rummy玩法,教给大家项目中沟通、计划和协作的重要性。这个游戏对团队的各种分布情况,以及在项目进行中增删人手所带来的影响进行了探索。

在Charles的话题上,参与者分成了三组,每组有5、6个人。

第一组被告知,他们只能通过“email”进行沟通。有一个特定的“邮件服务器”,大家通过它相互传递写下的消息。
第二组可以通过“电话”交流。
第三组没有沟通手段的限制。
每组都有一个人充当“用户”。游戏开始以后,所有用户都会得到完整的游戏规则,其中包括每一轮游戏中的规则变化。除了“用户”以外,其他人将会得到另一套不完整的规则。

在Charles的游戏设计中,会同时出现6种不同的团队:


亚马逊以弹性块存储为云提供虚拟存储功能

futurelight收录,使用标签:SOA,时间:2008-9-1 10:57:03 | 相关网摘我也收藏

【InfoQ中文站】今年四月,亚马逊的CTO Werner Vogels宣布为Amazon EC2进行持久存储的开发。持久存储一直是EC2平台的一个薄弱环节。长久以来,服务器实例(server instantces)一直以父节点映像启动,当服务器发生故障或重启时,磁盘会恢复到原有映像。如今亚马逊已经可以利用弹性块存储(EBS)来解决这个问题了。Vogels认为EBS是对亚马逊一系列存储模式的完善和补充,他讲道:

我们自信地认为目前正在开发的存储基础设施解决方案对开发人员来说非常有用,它首先专注处理最普遍的存储模式。我们目前有三种高层的模式:

键值对(Key-Value)存储。亚马逊的大多数存储模式都建基于通过主键访问某个值或对象。我们基于这种模式开发了Amazon S3。

简单结构化数据(Simple Structured Data)存储。第二大类存储模式是通过简单的查询接口访问结构化的数据集。这种模式利用快速索引来支持大数据集的高速查找。Amozon SimpleDB支持此种模式。我们发现一个比较普遍的做法是在SimpleDB中存储Amazon S3对象的二级键值,这样查询SimpleDB的结果就是S3中的(主)键。

块(Block)存储。还有多种存储模式,从特殊的文件系统例(如ZFS)到管理自身块存储的应用(比如缓存服务器),再到关系型数据库。Amazon EBS支持这些模式,它能提供用于实现多种存储模式的基本存储块。

亚马逊提供了EBS在价格、耐久性和性能方面的一些细节信息,重点包括:


IntelliJ IDEA 8: 超越Java

futurelight收录,使用标签:Java,时间:2008-9-1 10:56:18 | 相关网摘我也收藏

【InfoQ中文站】8月22日,JetBrains公司的开发经理Dmitry Jemerov回答了InfoQ提出的有关IntelliJ IDEA最新版的相关问题。

JetBrains站点上列出了IntelliJ IDEA 8的一些主要变化,如:

改进的性能
针对JavaScript和Flex的调试器
Flex代码编辑
集成Spring 2.5
改进的Groovy和Grails支持
支持Scala和Python
该列表还包含了上面没有列出的其他条目和信息。接下来Dmitry Jemerov回答了InfoQ提出的一些问题。

InfoQ: 除了发布说明所述以外, IntelliJ IDEA 8还有哪些主要变化?
Dmitry Jemerov: 从内部来说,最大的变化就是进行了重构,以从IntelliJ IDEA中抽取出一个通用基础,这样我们就可以在相同的代码集上构建其他产品了。MPS已经在使用IntelliJ IDEA平台了,同时我们的产品线中还有大量尚未发布的产品,它们也构建在相同的平台上。

InfoQ: Flex集成的程度如何?与Java兼容么?
DJ: 对于Flex,我们现在只专注于代码编辑功能(针对MXML的一个可视化设计器暂时还没有实现出来)。当然,Java支持已经开发很长时间了,现在更棒了,但是Flex支持也按照同样的方式来进行。针对Flex的一些新特性有自动导入、优化导入、构造方法和 访问修饰符的生成等等。

版本8中还增加了一个针对Flex的调试器,同时我们也在为无缝的编辑支持而努力(这样你就无需像IDEA 7那样使用Ant任务来编译项目了)。

InfoQ: 对Python和Scala的支持程度如何?
DJ: 首先,我要说的是Python和Scala都不会绑定到IntelliJ IDEA 8的最终发布版上。其插件正在开发中,但等到IDEA 8的最终版发布时,大家可以用插件管理器单独下载这些插件的Beta版。(Scala插件目前已经可用了,其地址为:http://plugins.intellij.net/plugin/?id=1347)

我再强调一次,对于支持的其他语言,我们基本上也遵循着相同的步骤。对于Scala来说,主要的挑战在于需要提供一个类型系统的完全实现,而这对于代码完成功能来说是必不可少的。这就是我们当前正在集中精力所作的事情。除了这个以外,我们已经完成了大多数常用的语言支持特性:语法和错误高亮、格式化、结构 化视图、自动导入、实现/重写等等。

Python是一个动态语言,这给我们带来了前所未有的挑战,然而我们也将用类似的办法实现。我们已经计划实现一个Python调试器。

InfoQ: 有没有打算将IntelliJFX插件作为IDE的核心插件(如Java、Groovy等)?


.NET 3.5 SP1允许从网络共享环境中运行托管应用程序

futurelight收录,使用标签:.NET,时间:2008-9-1 10:55:31 | 相关网摘我也收藏

【InfoQ中文站】微软已经发布了.NET Framework 3.5 SP1,相对于以前的版本,新版包含了一个安全方面的改进,它允许开发人员从网络共享文件中运行托管应用。

根据微软的官方说明,.NET Framework 3.5 SP1中有个特性是这样的:

从网络共享文件里打开的托管应用运行时和本地应用拥有一样的行为,即完全信任。
在过去,由于安全的原因,你无法从网络共享环境中运行托管代码。当初之所以在.NET中引入这个特性,是为了阻止从网络上进行的安全攻击。然而它并没有解决相关的安全威胁,因为非托管代码在这类环境中一直是能够被执行的。

微软程序经理Brad Adams最近所做的一个调查显示,很多人都想从网络共享环境中运行托管代码。微软回应了该需求,并在.NET 3.5 SP1中增加这一特性。

对于这个安全方面的改变,.NET运行时团队(Runtime Team)的架构师Vancel Morrison评论说:

我们犯了一个错误。在2001年,我们以为自己是在“默认即安全”方面的急先锋,也因此固执地认为,最终我们一定能弥补从网络共享文件运行非托管代码的“漏洞”。我们也忽视了这一决定所带来的痛苦。

但是随着时间的推移,我们发现自己太天真了。改变非托管代码行为的收益率太低了,另外,对于安全性来说,更加清楚的一点是,它必须足够简单,也就是说对所有事情一视同仁。因此,如果你不想从网络运行托管代码程序,那么也不应该将非托管代码程序区别对待。

Vance也认为,由这一改变所引入的安全威胁并不是那么严重:


.NET世界中的AtomPub

futurelight收录,使用标签:.NET,时间:2008-9-1 10:54:59 | 相关网摘我也收藏

【InfoQ中文站】伴随着.NET 3.5 SP1的出现,同时微软也决定对其Live Platform服务提供Atom Publishing协议(AtomPub)支持,AtomPub正在不断从.NET世界中获得动力。此外,针对WCF和.NET的AtomPub服务器——BlogSvc.net基于Provider模型实现了AtomPub协议。

BlogSvc.net是位于CodePlex上的一个开源项目,由Jarret Vance创立:
BlogSvc是Atom Publishing协议的一个开源实现。它构建于Provider模型之上。目前提供的Provider包括文件系统和数据库。该服务与Live Writer兼容。

BlogSvc由C# 3.5编写,使用了WCF中新的web编程模型,并大量使用了LINQ及其他新的语言特性。BlogSvc可以与IIS联合使用,也可单独使用。

早在官方发布.NET 3.5 SP1之前,BlogSvc.net就已经写好,因此它自己提供了联合对象模型(syndication object model)的实现。正如Steve Maine 所述 ,微软也“为Atom Publishing协议规范中定义的所有构造增加了强类型的OM,并将其放在System.ServiceModel.Syndication命名空间中”。


Steve和Scott Hanselman指出,


关于是否需要开放Web基金的争论

futurelight收录,使用标签:SOA,时间:2008-8-29 14:57:04 | 相关网摘我也收藏

【InfoQ中文站】在OSCON 2008大会上, David Recordon宣布了开放Web基金(Open Web Foundation)的成立,其宗旨是:

……为“社区驱动的规范”打造一个家园。遵循和Apache软件基金类似的开源模式,本基金致力于构建一个轻量级的框架,来帮助社区处理必要的法律需求,以制定成功的而且能被广泛采纳的规范。
本基金试图打破为每个规范建立一个单独基金的趋势,并且意识到我们可以团结起来推广我们的努力。关于会员资格、治理,以及知识产权等等细节将于接下来几周内发布以征求公众评阅与反馈。

鉴于我们正在商定该基金的具体细节,我们鼓励并诚邀各路朋友参与商讨。如有疑问,请参考我们的Q&A页面。同样,我们更加欢迎您参与到我们的社区里,群策群力,一起讨论你希望看到的这一基金制定的规范。
多么令人称赞的目标啊,背后又有着Google、Yahoo、O'Reilly等等的大力支持,看上去似乎很是有趣。Dion Almaer为这一进展“激动不已”:

(请点击“阅读原文”按钮阅读全文)


Pratik Patel谈企业JPA、Fetch Groups及Spring 2.5

futurelight收录,使用标签:Java,时间:2008-8-29 14:55:46 | 相关网摘我也收藏

【InfoQ中文站】Apache OpenJPA框架提供一些JPA扩张特性,比如Fetch Groups等,为企业Java开发者获取与Java对象所对应的数据的工作提供了更大的灵活性。Pratik Patel阐述了如何结合JPA设计技术,使用JPA API和Spring 2.5框架来开发Java应用。在最近的No Fluff Just Stuff(NFJS)俄亥俄州中心软件座谈会上,他就企业JP这一话题做了一次演讲。

Pratik谈到了如何为使用JPA API实现持久化的Java应用设计多个持久化单元(persistence units,即PU),也谈到相关的性能调优技术。他提到EJB 3.0 Entities(正式的叫法是Entity Beans)采用了基于“POJO持久化”设计概念的JPA。他说,在Java应用中使用供应商提供的特定扩展(比如“Fetch Groups”)来进行JPA开发是很有必要的。

Spring 2.5框架与JPA的集成良好,可以管理多个持久化单元,也可以通过一些JPA配置细节(如数据源)把persistence.xml迁移到Spring配置文件中,JPA的配置也就更加灵活。在使用Spring配置JPA把大段代码分割为小模块的时候,开发人员就可以利用扩展点。同样,Spring Test模块对JPA类(如AbstractJpaTests)的单元测试、集成测试都提供很好的支持。AbstractJpaTests类使用了一个后台classloader在运行时增强类,它围绕事务来包装测试方法,同时提供帮助类来声明应用上下文。Spring JPA模块(LocalContainerEntityManagerFactoryBean)还可以在容器外 (请点击“阅读原文”按钮阅读全文)


InfoQ: 初探“技术债务”

futurelight收录,使用标签:Java,时间:2008-8-29 14:54:16 | 相关网摘我也收藏

【InfoQ中文站】最近举行了一个技术债务研讨会,以改进我们对“技术债务(technical debt)”的理解及其解决之道,该研讨会迸发出一些有趣的观点。其中一个观点引起了包括Michael Feathers和Brian Marick在内的很多人的注意,那就是我们应该将对问题的理解集中在“资产”而不是“债务”上。

会议组织者Matt Heusser和Steve Poling介绍了他们对这个持续两天的会议的愿景:
成功的会议应能采取一些具体的度量,通过这些度量来对技术债务进行切实可行的讨论。当我们说自找麻烦就像借钱一样时,我们并没有自欺欺人,这一点会议已经给我们提供了证据。(往好点说,我们证明了另一个动态是在开玩笑。)该会议还将阐述债务管理和债务偿还策略以及它们何时会显现出来。
该会议意在解决如下三个主要问题:
什么是技术债务?什么不是?
我们如何对其进行度量?其影响如何?
我们能否像管理其他债务一样去管理技术债务?

该会议迸发出一些有趣的观点,Heusser总结如下: (请点击“阅读原文”按钮)


文章:从卓越工程角度看微软中国开发团队的成长

futurelight收录,使用标签:.NET,时间:2008-8-29 14:52:20 | 相关网摘我也收藏

【InfoQ中文站】卓越工程是指在工程上能达到杰出和优异。软件开发也是工程范畴的,那么开发团队的成长也就离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从工程系统中的三个重要因素分析了微软中国开发团队是如何“从优秀到卓越”的。

作者徐鹏阳现任微软中国研发集团服务器与开发工具事业部部门经理,带领CLR/Silverlight和WinForms两个研发团队。自1995年初加入微软以来,先后参与了Microsoft SQL Server 7.0,2000,2005,Windows Vista和Silverlight 1.0 的研发和发布。结合团队成长过程中的一些真实故事,徐鹏阳从人才、流程和工具等三个方面做了深入的分析。比如在谈到如何让新人更好地融入到现有团队,他举例说:

我们中国开发团队大多由年轻人组成,是微软分布式开发中的新生力量。我们通常会向美国团队 “借用”几个资深工程师来这里帮助招聘和训练本地员工。当然,我们也会把优秀的中国员工送到总部做短期融合培训,主要是和美国团队一起工作,了解公司文化和产品开发流程,以及与美国同事建立良好合作关系,便于以后开展工作。
对于流程的重要性,徐鹏阳也有切身的体会,他举了一个自己在雷德蒙工作时的例子:

我在雷德蒙工作时,曾有个兄弟团队的资深软件开发工程师干过这样一件事。产品开发进入修补漏洞的后期,在这个阶段只有重要的漏洞才能去修补,而且代码提交前要经过伙伴测试(Buddy Test),这样做的目的是要保持产品质量的稳定性,可他过于自信了,在没有经过伙伴测试就把代码提交了。结果他的提交使第二天的每日构建(Daily Build)通不过多个重要的测试用例,兄弟团队也没法儿用它进行其它测试,白白浪费了一天时间。

阅读全文:从卓越工程角度看微软中国开发团队的成长。(请点击“阅读原文”按钮)



共489个网摘 [ 1  2  3  4  5  6 ... 17 ]  下一页

futurelight/相关标签



网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
Copyright © 2000-2008, CSDN.NET, All Rights Reserved