利用Ruby简化你的Java测试
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

作者 霍泰稳 发布于 2007年10月17日 上午3时7分
编者按:因为Ruby on Rails的出现,借用互联网创业的人越来越多,虽然不能说全是RoR的功劳,但至少说明技术门槛的降低加速了互联网的发展。从前从一个点子的产生到实现可能要耗费少则几个月,多则几年的时间,而现在,只要你的点子够新,有实践的可能,几天几周就可以看到原型。而后面的维护也比较方便,几乎可以说是实时进行。本文通过采访技能云网站的策划人熊节和主设计师Iceskysl就是想证明前文所述,据两人介绍,这两个到现在还没有见过面的年轻人通过网络,在不到两周的时间里,将一个创意点子变成了现实。
InfoQ中文站:这个项目发布后,你被人问到的最多的三个问题是什么?
IceskYsl:你们团队几个人;这个项目的目标用户是谁?用了多少时间?
熊节:
不是。最初的主意是我想的,实现的人是IceskYsl。我自己有很多关于互联网的点子,但是没有时间、没有行动力去实现。是IceskYsl的行动力让iTechTag这个点子变成现实。我相信很多人有和我一样的困扰,所以1sters!这种模式挺有吸引力的。
不知道,不操心。我的近期目标只是让iTechTag能跑起来,让它帮助软件开发者们建立自己的声望,让他们的声望为他们自己创造价值。只要对用户有价值,早晚网站也会找到自己的价值,这一点我毫不怀疑。
可以说很快,大概两周就上线了;也可以说一直没有开发完,不断地在提高和改善。这也是Web 2.0的特点,永远都在beta。
InfoQ中文站:介绍一下你自己和你的团队?
IceskYsl:我是IceskYsl,目前还是靠Java吃饭,ROR是暂时还是业余活动,很享受这种方式;1sters!暂时还是个虚拟的、我自己心中理想中的团队模式,也正一步步的走向成熟。我接触RoR有一段时间了,期间被它的灵活吸引,有事没事的就会写写代码,时间不多,写了好几个像模像样的系统如:
熊节:我是熊节,网名叫"透明"的。先后干过媒体、程序员、咨询师三种职业,所以有一堆Web 2.0的点子。可惜每天忙忙叨叨的,这些点子落地的很少。
InfoQ中文站:技能云的创意是从何而来?
IceskYsl:项目的创意随着时间逐步演化,起初只是为程序员及其相关的人提供一个展现自我的平台,为国内的程序员赢得更多的他曾被无形剥夺的东西;进而发展为项目展示、交流、经验分享及其人脉的一个平台。
熊节:这个东西的想法很简单:我要有一个widget挂在我的blog上,告诉别人我有些什么技能,譬如说我Ruby很不错、Java很不错、JavaScript也有经验,等等。为什么我想给别人show这些呢?因为我觉得骄傲,为自己骄傲。我在过去的8年里一直在编程,我掌握了那么多的技能,我觉得很骄傲。说白了就是,我要向别人炫耀自己的技能。
东西很简单,但背后可以有引申。这个炫耀的widget一展开,就引出了别的东西,那就是从哪里得到这些技能的信息。当然了,只有从项目经验里来。只有真正在项目里做过,用过一种技术,你才能说你掌握了这种技能。而且一般来说,技能掌握的熟练程度还是和使用的时间成正比的。所以iTechTag是以项目为基础的。你不能说自己"精通"、"熟练掌握"什么技能,你必须证明,证据就是真实的项目经验。
那么有了一个炫耀的widget,有了一堆项目经验,就可以很方便的导出简历了。(这是我们下一步的重点功能。)技能-经验-简历,这个三位一体就构成了一个程序员的声望(reputation)。谁对这些声望感兴趣呢?当然是正在招人的潜在雇主。换句话说iTechTag的注册用户在炫耀的同时顺手得到了直接面对潜在雇主的机会。这就是我一开始说的,“释放程序员声望的价值”。如果说开源软件是把源代码的价值还给程序员(和用户),那么iTechTag这个模式就像是人才招聘领域的开源,把程序员的价值还给程序员(和潜在雇主)。
InfoQ中文站:为什么会采用 RoR实现,用RoR开发你们体味到什么特殊之处?
IceskYsl:采用ROR是因为我们享受ROR带给我们的快捷和快乐。我们喜欢新的东西,体验者敏捷开发过程中带来的快乐。采用ROR使得我们更加敏捷。我是不会使用Java去开发的,因为它便捷。你可以想象一下“推绳子”的感觉,就是如果你用Java去开发这样的项目,会让你感觉使不上劲,一身力气使不出来或者说憋的慌。我想这也是为什么现在很多Web 2.0的网站都是用RoR或者Python这样的较动态的、轻量的语言做出来的吧。
熊节:我如果自己做肯定会用RoR,因为我是RubyWorks的成员,我对RoR最熟悉。所以在寻找合作伙伴的时候我也注重找RoR的开发者。
InfoQ中文站:这个项目的开发过程是怎么样子的,比如时间、人力等?
IceskYsl:这个项目最先是我的一个网站:www.1sters.com, 上面规划了我理想的工作团队的模式,透明无意看到了,就按照上面的联系方式找到我;说自己有个很不错的Idea;也就是技能云的雏形,和我说了以后,我觉得很棒,于是决定一起做。鉴于他对程序员这个群体把握比较准确,很多方向和他讨论后确定;然后我个人开发。白天用IM沟通一些不确定的问题和需要的功能,晚上下班后我基本上就可以实现。就这样用了两周的业余时间完成了前期的功能开发。后期的测试和维护当然少不了Jeff同学的辛苦劳动。整个过程都差不多是这样的,在技术上为了更好地提高用户体验,我们采用了Ajax技术,为了在不同的平台展示,使用了Restful架构等。
InfoQ中文站:敏捷开发方法在你们的开发过程中有没有得到什么实践?
IceskYsl:目前规模不是很大,使用的不是很多,现在正在TDD。
熊节:呵呵,只有两个人,一个客户一个开发者,这情况用什么过程都嫌太重。两个人的项目最要紧的是交流。只要双方都明白对方的意思,同时有比较好的编程功底,自己注重代码质量,就不需要什么正式的开发方法。
InfoQ中文站:类似于用RoR开发技能云这样的项目,有什么经验和教训和大家分享?
IceskYsl:Idea一定要足够的好,且你自己对这个Idea有充分的兴趣,自己必须是这个Idea的超级拥护者和使用者。必须脱离传统的类似外包项目的模式,否则其中的乐趣你肯定体会不到。
做事情一定要有很强的行动力
我们也是在行动中探索方向,希望越来越多的人了解技能云,支持技能云,如果您有任何建议或者意见或者其他的问题需要交流,欢迎联系我。 Email/GoogleTalk: iceskysl@gmail.com
不完全同意。在方案确定后,进行实施的时候行动力当然是越强越好。但如果走在一条错误的路上,你行动力越强破坏性越大。拿技能云这个网站来说,如果没有熊节这个创意,没有IceskYsl比较成熟的RoR技术,你行动力再强也不可能在两周内完成网站的上线。 所以,在行动力之前还有一点比较重要:看准路,选好工具!
是呀,光想不做是不行的。我目前也是苦于精力有限哪,呵呵。
http://www.1sters.com/ 网站上,把iTechTag写错了,写成iTecgTag了,笔误吧。(网页最底下一行)
哦,确实~多谢提醒~ www.1sters.com 还是很早前开发的,UI方面一直不是很满意,该来改去的,造成的,呵呵~
Ruby on Rails并不值得太惊奇
能够很快的做出来,这是点子不会烂在肚子里的前提~
技能云是跑在老外的服务器上的,今天貌似有点不正常,我们正在联系可靠的服务器提供商,如有愿意提供者,请速联系我们。
技术是适用就好 快速敏捷的方法能如此快速的解决一个项目,很受启发
不过开发经验很重要,一般的应用用两周差不多的时间。
点子倒是还可以
断断续续的,一不小心,两周就过去了~
在新出炉的 itechtag 网站上,策划人熊节再次标榜“我是一个软件工匠”。去年还称自己是 journeyman,怎么这么快又升级了。“软件工匠”也是你可以叫的么。这种低级的宣传手法和伎俩,我称其为“王婆卖瓜”似的个人主动式营销,如今恐怕也只能骗骗小孩子了吧。真不害臊! 熟悉 Pete McBreen 所著、熊节译错了的《软件工艺》的朋友们可能知道,McBreen 借用匠艺传统,按照技能水平和对行业的贡献度和影响力,把程序员划分为三个等级:学徒、技师和工匠。 参照 McBreen 的标准,在 InfoQ 的编辑团队 中,有几个人真正够格,可以自诩为“软件工匠”?恐怕只有 Alexandru Popescu 和 Floyd Marinescu 两人吧。明说自己拥有 10 年以上开发经验的,我看到还有朱永光、郭晓刚等人,照理说都比熊节更成熟、更专业、更优秀,可别人是什么样的态度,有出来耍吗?两厢对照,孰优孰劣,不辨自明。 熊节自述的项目经历一共有 6 个:技能云, RubyWorks, CruiseControl, Selenium, Goodhope 以及杭州工商网上年检系统。 自 2003 年至 2007 年,在总共未满 5 年的时间里,熊节究竟有多少实际的项目经验和资历,已够他“老人家”配上一顶“软件工匠”的帽子呢?读者们可能都不会忘记熊节作为媒体人的两进两出,即便到现在,他在 ThoughtWorks 做“学徒”的时间也不过两年多。即便是学徒,熊节这个“学徒”到底当得怎么样,我们觉得也是应该质疑的。 我想,笃信“媒体就是信息”的熊节,其软肋就在于那种自以为是、热衷表演,非常业余的功利主义态度。 没有 10 年以上软件开发经验的,请不要奢谈什么“软件艺术”,更不要玷污了“软件工匠”这个称谓。 我们觉得 InfoQ 作为具有国际水平的专业程序员交流网站,应该吸取 CSDN.net 和《程序员》杂志的教训,不要再让 InfoQ 成为少数态度极不专业的“业余”程序员进行免费个人表演的秀场。 www.zhangxun.com
... big deal.
oh my god....
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。
InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。
在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。
本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。
人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。
在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。
16 条回复
回复