标签: Ruby
测试驱动开发已死?
Ruby on Rails 的创始人 David Heinemeier Hansson 在 RailsConf 大会上发表了主题演讲,宣称测试驱动开发已死。不出所料,这在 Rails 和更广泛的软件开发社区引发了巨大的争议。这也引发了 David、Kent 和我之间一些有趣的对话。我们认为这些对话很有趣,其他人可能也想看看,所以录制了一系列视频聊天,讨论测试驱动开发在软件开发中的作用。
六边形架构和 Rails
我和我的同事 Badri 就六边形架构及其在 Rails 应用程序中的作用进行了一番对话,并录制了几个视频。在第一个视频中,我们讨论了六边形架构的含义,以及这如何导致在持久化框架中选择活动记录和数据映射器模式。在第二个视频中,我们更广泛地探讨了 Rails 在应用程序中应该扮演的架构角色——你应该把它看作一个平台,还是一组组件。
使用 Rake 构建语言
Rake 是一种构建语言,其用途类似于 make 和 ant。与 make 和 ant 一样,它是一种领域特定语言,但与这两者不同的是,它是一种使用 Ruby 语言编程的内部 DSL。在本文中,我将介绍 rake,并描述一些我在使用 rake 构建本网站时发现的有趣之处:依赖模型、合成任务、自定义构建例程和调试构建脚本。
Ruby Rogues 节目讨论企业应用架构模式
Ruby Rogues 是一个很受欢迎的播客,由一个常设小组讨论 Ruby 编程社区中的话题。他们有一个固定的读书俱乐部,最近选择了《企业应用架构模式》作为他们的特色书籍。因此,他们邀请我作为嘉宾参加他们的节目,讨论这本书及其描述的模式,特别是这些模式与 Rails 框架之间有趣的关系。
Ruby Rogues 播客:重构
Ruby Rogues 是一个关于 Ruby 世界编程的热门播客。他们邀请我回来讨论《重构》的 Ruby 版本。我们谈到了重构的定义,为什么我们发现自己不怎么使用调试器,如何才能使这本书更加现代化,重构工具的作用,注释是否可以被善用,重构和重写的权衡,模块化和微服务,以及软件行业在过去二十年中是如何变化的。
Thoughtworks 的 Ruby
Thoughtworks 从 2006 年开始在生产项目中使用 Ruby,从那时起到 2008 年底,我们已经完成了 41 个 Ruby 项目。在准备 QCon 演讲时,我调查了这些项目,以考察我们可以从这些经验中吸取哪些教训。我描述了我们迄今为止对 Ruby 的生产力、速度和可维护性等常见问题的看法。到目前为止,我们的结论是,Ruby 是一个可行的平台,应该认真考虑用于多种形式的应用程序——特别是使用 Ruby on Rails 的 Web 应用程序。我还介绍了一些技术经验,包括对使用活动记录进行测试的一些想法。
三年 Ruby 实战经验
为了在 2009 年伦敦 QCon 大会上发表演讲,我调查了 Thoughtworks 在 2006-2008 年间使用 Ruby 的情况,在那段时间里,我们完成了 41 个项目。我的演讲涵盖了我们对 Ruby 的生产力、速度和可维护性的看法。我的结论是,Ruby 应该被认真地视为一个开发环境。如果你喜欢阅读而不是观看,我还有一篇文章也涵盖了同样的内容。
2006 年 RailsConf 大会主题演讲
和我的大多数主题演讲一样,这是一个即兴演讲。鉴于会议的主题,这次演讲的主题是 Rails 如何影响软件开发。
集合管道
集合管道是一种编程模式,在这种模式中,你将一些计算组织成一系列操作,这些操作通过将一个操作的输出作为集合输入到下一个操作中来组合。(常见的操作有过滤、映射和化简。)这种模式在函数式编程中很常见,在具有 lambda 表达式的面向对象语言中也很常见。本文通过几个如何形成管道的例子来描述这种模式,既是为了向不熟悉这种模式的人介绍它,也是为了帮助人们理解其核心概念,以便他们能够更容易地将一种语言中的思想应用到另一种语言中。
类实例变量
当你学习对象时,你通常会了解到它们可以捕获两种数据:实例数据和类数据。实例变量是最常见的情况,数据随对象的每个实例而变化。类变量,通常被称为静态变量,在类的所有实例之间共享。每个实例都指向相同的值,任何更改都会被所有实例看到。类变量比实例变量少见得多,尤其是可变类变量。
鸭子接口
也许我太天真了,但我从未想过我关于人性化接口的文章会引发如此多的讨论。遗憾的是,大部分讨论最终都变成了关于 Ruby 的数组和 Java 的列表的相对优点的争论,而不是我试图提出的基本观点,但尽管如此,我认为还是出现了一些很好的对话支流。
其中一个对话线索指出,数组和列表之间的差异还有其他原因,而不仅仅是人性化/最小化哲学。其中一个原因与类似的功能在这两种语言中扮演着不同的角色有关。
动态类型检查
最近,我们的一些开发人员遇到了一种指责,说使用像 Ruby 这样的动态语言,你会使用如此多的动态类型检查,以至于你最终会有效地编写自己的类型系统。所以他们想,既然我们已经编写了大量的真实 Ruby 代码——我们多久进行一次动态类型检查?Michael Schubert 收集了这些数据。
动态类型
我一直不愿意对编程语言中静态类型和动态类型之间的争论发表任何意见。这是一个充满感情色彩的话题,人们似乎更愿意争论而不是倾听。但既然有人问过我几次这个问题,我愿意分享一下我的个人经历。我并不是想说服任何人,但我希望有人能从中找到一些值得思考的东西。
企业级 Rails
在新兴的 Rails 社区中,“企业”一词正在成为一个贬义词。对许多人来说,Rails 框架以其积极的简单性,与过于复杂的“企业级”框架形成了鲜明对比。
评估 Ruby
如果你正在阅读这篇文章,我假设你已经意识到,关于 Ruby 编程语言,特别是用于开发 Web 应用程序的 Rails 框架,已经引起了巨大的轰动。有些人认为它是编程的未来,而另一些人则认为它是一种危险的分流。
Groovy 还是 JRuby
目前,关于 Groovy 和 JRuby 作为运行在 Java 虚拟机上的脚本语言的相对优点,人们正在进行激烈的争论。好奇的人想知道——在这场即将到来的语言战争中,哪种语言会胜出?人们想知道应该为项目选择哪种语言,或者应该学习哪种语言。
学习对象的语言
如果我想教人们面向对象编程,我应该使用哪种语言?
2007 年 RailsConf 大会
我不像以前那样参加那么多会议了,但这样做的好处是我有时间去参加那些我感兴趣的会议。我一直特别喜欢 Ruby 社区,所以我以与会者的身份参加了今年的 RailsConf 大会。
Ruby 注解
Ruby 最受欢迎的特性之一是它对元编程的支持,即那些看起来像是在改变语言本身的特性——引入像新关键字这样的东西。
Ruby 和微软
在 2007 年 RailsConf 大会上,人们对 JRuby 充满了期待。这个小团队将一个垂死的项目变成了一个看起来像是 JVM 上 Ruby 平台的一流实现。他们赢得了很多掌声,这是他们应得的。
因此,随着 JRuby 的出现,人们的注意力转向了另一个常见的托管代码运行时——.NET。微软对 Ruby 的意图目前还不太清楚。他们已经宣布 Ruby 是一种用于编写 Silverlight 脚本的语言——但这仍然留下了很多悬而未决的问题。这是一个完整的 Ruby 语言实现,还是某种形式的 Ruby++——Ruby 的增强子集?
Ruby 人
任何经常阅读我文章的人应该都知道,我已经是一个狂热的 Ruby 爱好者好几年了。我喜欢 Ruby 语言,因为它语法丰富而简洁,并且附带了设计良好的框架。它已经成为我个人项目的常用语言,包括本网站的大部分内容。
Ruby 和 Ploticus
在我最近一篇关于评估 Ruby 的文章中,我提到一位同事开发了一个 Web 应用程序,其中包含一些精美的数字图表。有人发邮件问我他是怎么做到的。我在最初的博客文章中添加了我的简短回答,ploticus,但这又引出了一个问题,即他是如何将 Ruby 与 ploticus 连接起来的?
Rails 上的色情内容
几周前,在旧金山举行了一场名为 GoGaRuCo(金门红宝石大会)的红宝石大会。这次大会引起了人们的关注,因为在其中一场演讲中,演讲者使用带有性暗示的女性图片来阐释对 CouchDB 的讨论。不出所料,结果引发了相当多激烈的、有时甚至是攻击性的辩论。