期间:2014
使用Rake构建语言
Rake是一种构建语言,其目的与make和ant类似。与make和ant一样,它是一种领域特定语言,而与这两种语言不同的是,它是用Ruby语言编写的内部DSL。在本文中,我将介绍rake,并描述在使用rake构建这个网站时产生的一些有趣的事情:依赖模型、合成任务、自定义构建例程和调试构建脚本。
api不应该是可版权保护的
api不应该是可版权的,这样程序员就可以重新实现接口,以支持测试、互操作性和鼓励竞争。
在验证中用通知替换抛出异常
如果要验证某些数据,通常不应该使用异常来表示验证失败的信号。在这里,我将描述如何重构这类代码以使用Notification模式。
Garmin俄勒冈600 -简要回顾
我发现专用手持GPS设备有什么价值吗?
互联网上的隐私
在goto Aarhus 2014大会上,我本人、Erik Dörnenburg和Tim Bray花了不少时间考虑互联网上的隐私问题。后来Ola Bini和我们一起讨论了这个问题,当前的情况,以及我们开发者应该做些什么。
微服务体系结构中的测试策略华体会体育网页版入口
在过去几年里,基于服务的体系结构已经向更小、更专注的“微”服务转变。华体会体育网页版入口这种方法有很多好处,比如能够独立部署、扩展和维护每个组件,以及跨多个团队并行化开发。然而,一旦引入了这些附加的网络分区,应用于流程内单片应用程序的测试策略就需要重新考虑了。在这里,我们计划讨论一些管理多个独立可部署组件的额外测试复杂性的方法,以及如何在多个团队各自充当不同服务的监护人的情况下保持测试和应用程序的正确性。
索尼a6000 16-70mm镜头
非正式的评论索尼a6000无反光镜相机搭配索尼蔡司16-70mm镜头。
莫里森订华体会体育网页版入口单板的结构
Morrisons OrderPad是一款平板电脑网络应用程序,可以帮助超市的员工在逛商店的时候下单购买新商品。生成的应用程序将生成一个良好的旁白架构华体会体育网页版入口对于一个由轻量级Java服务器应用程序支持的平板电脑web应用程序。我们强调在客户机上分离应用程序控制和DOM交互,在服务器上使用小型的、有重点的框架、宽堆栈测试环境,并使用试点项目来了解需要什么特性。
Ruby Rogues关于重构的播客华体会app下载二维码
Ruby Rogues是Ruby世界中流行的编程播客。他们邀请我回去讨论Ruby版本的华体会app下载二维码.我们讨论了重构的定义,为什么我们发现我们不怎么使用调试器,如何使这本华体会app下载二维码书现代化,重构工具的作用,注释是否可以用在好的地方,重构和重写之间的权衡,模块化和微服务,以及软件行业在过去20年里发生了怎样的变化。
祭祀建筑华体会体育网页版入口
您正坐在会议上,考虑您的团队在过去几年里一直在开发的代码。您已经决定,您现在能做的最好的事情就是扔掉所有的代码,在一个全新的体系结构上重新构建。华体会体育网页版入口对于那些注定要失败的代码,对于你花在它上面的时间,对于你很久以前所做的决定,你有什么感觉?
我们战胜大规模监视的责任
在2014年的主题演讲中,Erik和我考虑了我们作为软件专业人员应对日益增长的大规模监控浪潮的责任。我们讨论了软件专业人员应该如何在决定构建什么软件方面发挥更大的作用,这要求我们对该领域有更多的了解,并对我们的用户和更大的社会负有更多的责任。我们说为什么隐私很重要,既是人类的需要,也是维护民主社会的需要。我们以电子邮件为例,探讨了对关键基础设施开放、协作开发方法的重要性,并认为我们的自由要求我们所有人都拥有更高级别的加密,并向去中心化迈进。最后,我们简要地提到了“Pixelated”项目,这是Thoughtworks正在做的一个项目,目的是增加加密邮件的使用,以及为什么它的挑战更多的是用户体验,而不是密码学的细节。
我们战胜大规模监视的责任
软件专业人员应该对我们的软件如何影响社会负责。目前最主要的问题之一是隐私问题,而大规模的监控正在破坏这一问题。电子邮件目前是有问题的,因为电子邮件向服务的转移导致了电子邮件提供的集中,这使其更容易监控。我们需要通过努力扩大电子邮件加密的使用来改善隐私,这样大规模监控的成本就会变得令人望而却步。这方面的挑战主要是用户体验和软件打包方面的挑战,而不是需要对密码学有深刻理解的东西。
两个栈CMS
我们建立了许多内容丰富的网站,通常使用流行的内容管理系统(CMS)。最近的一个项目涉及一个全球制造商的营销网站,该网站需要具有高可用性和流量需求的复杂互动内容。我们的反应是应用编辑-发布分离模式,为内容创建和交付构建两个不同的软件栈。在这个平台上,您可以看到这个架构的概述,以及我们对堆栈之间集成问题的响应,提供实时站点的安华体会体育网页版入口全预览,以及处理系统的演进和扩展。
使用Vagrant、Chef和rbenv建立一个ruby开发VM
以下是我建立Vagrant VM以帮助合作者使用我的web发布工具链的经验之谈。我使用Chef来提供VM和rbenv来安装和控制正确的ruby版本。
在苹果笔记应用程序中恢复已删除的笔记
最近,我在苹果笔记本电脑上的Notes应用程序上删除了一条信息。作为一个偏执的备份管理员,并且通常将我所有的工作都提交到像git这样的存储库中,我不太担心意外删除。但苹果的笔记应用没有任何形式的版本控制,很容易被意外删除。我有一个每日rsync备份和运行时机器,但谷歌无法找到一个简单的方法取回笔记。所以如果有人需要这样做,这是我所做的。
Microservice先决条件
当我和人们谈论使用microservices建筑风格我听到了很多乐观的声音。开发人员喜欢使用更小的单元,并期望获得比单个单元更好的模块化。但是与任何架构决策一样,都有权衡。特别是在微服务方面,对运营人员的影响非常严重,他们现在必须处理一个由小型服务组成的生态系统,而不是一个定义明确的单一整体。因此,如果您不具备某些基本能力,就不应该考虑使用微服务风格。
成熟度模型
成熟度模型是一种工具,它可以帮助人们评估个人或团队当前的效率,并帮助人们弄清楚他们下一步需要获得什么能力,以提高他们的绩效。在许多圈子里,成熟度模型已经获得了不好的名声,但是尽管它们很容易被滥用,但在合适的人手中,它们是有帮助的。
蜀Ha国际扶轮
Shu-Ha-Ri是一种思考如何学习一项技术的方式。这个名字来自日本武术(尤其是合气道),和Alistair Cockburn介绍它作为一种学习软件开发技术和方法的思考方式。华体会登录网址
微服务与分布式对象第一定律
在EAA的P中我说过“不要分发你的对象”。这个建议是否与我对微服务的兴趣相矛盾?
金丝雀释放
金丝雀释放是一种降低在生产中引入新软件版本风险的技术,方法是在将更改推出到整个基础架构并使每个人都可以使用之前,将更改缓慢地推出给一小部分用户。
六边形架构和轨道华体会体育网页版入口
我和同事Badri关于六边形体系结构及其在Rails应用程序中的作用的对话视频。华体会体育网页版入口在第一个视频中,我们讨论了六边形体系结构的含义,以及它如何导致持久框架的活动记录和数据映射器模式华体会体育网页版入口之间的选择。在第二部分中,我们将更广泛地讨论Rails在应用程序中应该扮演的架构角色——您应该将其视为一个平台,还是一套组件。
Goto Fail, Heartbleed,和单元测试文化
2014年初,两个计算机安全漏洞被发现:苹果的“goto fail”漏洞和OpenSSL的“Heartbleed”漏洞。两者都有可能出现广泛而严重的安全故障,我们可能永远无法知道其全面程度。考虑到它们的严重性,对软件开发专业人员来说,反思它们是如何被发现的是很重要的,这样我们就可以华体会登录网址提高我们在未来防止这些类型缺陷的能力。本文考虑了单元测试可能扮演的角色,展示了单元测试(更重要的是单元测试文化)如何识别这些特定的错误。它继续研究了这种文化的成本和收益,并描述了这种文化是如何在谷歌灌输的。
平行变化
对影响所有使用者的接口进行更改需要两种思维模式:实现更改本身,然后更新其所有用法。当你试图同时做这两件事时,这可能是困难的,特别是当改变是在一个PublishedInterface使用多个或外部客户端。
平行变化,也被称为扩张和收缩,是一种模式,通过将更改分解为三个不同的阶段:扩展、迁移和收缩,以安全的方式实现对接口的向后不兼容更改。
TDD死了吗?
Ruby on Rails的创始人David Heinemeier Hansson在RailsConf上发表了一个主题演讲,他宣称TDD已经死了。可想而知,这在Rails和更广泛的软件开发社区中引发了大量的争议。华体会登录网址这也引发了我和大卫、肯特之间一些有趣的对话。我们认为这些对话足够有趣,其他人可能也想看,所以录制了一系列视频,在其中我们讨论了TDD在软件开发中的作用。华体会登录网址
单元测试
单元测试在软件开发中经常被提及,这是我在编写程序的整个过程中所熟悉的一个术语华体会登录网址。然而,就像大多数软件华体会登录网址开发术语一样,它的定义非常不明确,当人们认为它的定义比实际更严格时,我发现混淆经常发生。
自我测试代码
自检代码是我在华体会app下载二维码参考与功能软件一起编写综合自动化测试的实践。如果做得好,这允许您调用执行测试的单个命令——并且您确信这些测试将揭示隐藏在代码中的任何错误。
我在YouTube上的演讲播放列表
我的很多演讲都可以在YouTube上看到。这是我在YouTube上的演讲播放列表,我尽我最大的努力保持更新。
报告数据库
大多数EnterpriseApplications用数据库存储持久数据。该数据库支持应用程序状态的操作更新,以及用于决策支持和分析的各种报告。然而,操作需求和报告需求通常是截然不同的——不同的需求来自于不同的模式和不同的数据访问模式。当这种情况发生时,将报告需求分离到报告数据库中通常是一个明智的主意,该数据库获取基本操作数据的副本,但用不同的模式表示它。
Microservices
术语“微服务体系结构”在过去几年里兴起,它描述华体会体育网页版入口了一种将软件应用程序设计为独立可部署服务套件的特定方法。虽然这种体系结构风格没有精确的定义,但是围绕业务能力、自动部署、端点的智能以及语言和数据的分散控制的组织有一些共同的特征。
企业应用程序
在本世纪初,我在写我的书企业应用程序体系结构的模式华体会体育网页版入口.我在写这本书时遇到的一个问题是如何命名它,或者更确切地说,如何称呼我所写的各种软件系统。我一直意识到,我的软件开发经验总是集中在一种特定形式的软件上——比如医疗记录、外汇交易、工资和租赁华体会登录网址会计。它们与打印机、游戏、飞行控制软件或电话开关中的嵌入式软件非常不同。我需要一个名称来描述这类系统,于是确定了术语“企业应用程序”。
我的书版本记录
我现在已经写了不少书了,我时常会被问到的一个问题是,我用什么工具来写这些书。多年来,我已经开发了一个相当漂亮的工具链——至少对我自己来说是这样的,所以下面是我对它是如何连接在一起的概念。
断路器
对于软件系统来说,远程调用运行在不同进程中的软件是很常见的,可能是在跨网络的不同机器上。内存中调用和远程调用之间的一个重大区别是,远程调用可能会失败,或者没有响应就挂起,直到达到某个超时限制。更糟糕的是,如果在一个没有响应的供应商上有许多调用者,那么可能会耗尽关键资源,导致多个系统发生级联故障。在他的著作中释放它在美国,迈克尔·尼加德推广了熔断模式,以防止这种灾难性的连锁反应。
断路器的基本原理非常简单。将受保护的函数调用封装在断路器对象中,该对象监视故障。一旦故障达到一定的阈值,断路器跳闸,所有对断路器的进一步调用都返回一个错误,而不进行受保护的调用。通常情况下,如果断路器跳闸,你还需要某种形式的监视器警报。
疏远的气氛
有许多因素导致了麻烦DiversityImbalance我们在软件社区中发现的。其中一些问题,比如青少年教育的问题,让女孩不愿意STEM学科这是一个长期的问题,我们的职业无法在解决这个问题上发挥核心作用。但有一个直接影响到我们的因素是笼罩在科技界的疏离氛围。
不只是代码猴子(OOP 2014)
这是我在慕尼黑面向对象2014年主题演讲的第二部分,是一个难以描述的演讲。通常我喜欢用一个标题和摘要来描述演讲的内容,但这次演讲是一次旅行,我不想告诉你们我要去哪里,而是和我一起探索地面。我想说的是,它始于我在大多数采用敏捷软件开发时遇到的最大问题——用户、分析人员和程序员之间交互的本质。华体会登录网址它继续探索这些角色,提出了关于程序员与用户关系的问题,我们对他们的责任,最后是我认为程序员需要面对的两大挑战。
重构工作流(OOP 201华体会app下载二维码4)
在过去十年左右的时间里,重构已经成为一种广泛使用的技术,华体会app下载二维码以保持代码库的高内部质量。然而,大多数团队没有充分利用重构,因为他们不知道可以在哪些工作流程中使用重构。华体会app下载二维码在慕尼黑面向对象2014的主题演讲中,我探讨了其中的一些工作流程:例如垃圾回收重构、理解重构和预备重构。华体会app下载二维码我还提醒人们,为什么常见的重构理由会破坏您的最佳努力。华体会app下载二维码(这个演讲也有一个治疗方法infodeck.)
种族隔离的DOM
单页web应用经常变成jQuery汤,其中应用逻辑,DOM操作和服务器访问都混合在一起。这种关注点的混合使得这些应用程序比它们本应具有的更难理解和测试。隔离DOM是一种模块化策略,它将DOM的所有操作分离为专门的JavaScript对象。
限界上下文
有界上下文是领域驱动设计的核心模式。这是DDD的战略设计部分的重点,这是关于处理大型模型和团队的。DDD处理大型模型的方法是将它们划分到不同的有界上下文中,并明确它们的相互关系。
工作流程的重构华体会app下载二维码
华体会app下载二维码重构已经发展成为一种众所周知的技术,大多数软件开发团队至少都声称会定期进行重构。华体会登录网址然而,许多团队并不欣赏可以使用重构的不同工作流程,因此错过了将重构有效地合并到开发活动中的机会。华体会app下载二维码在这篇文章中,我将探讨各种不同的工作流程。我希望它能鼓励团队更深入地将重构集成到他们的工作中,从而产生一个更好设计的代码库,这将使华体会app下载二维码添加新特性更快更容易。
分支的抽象
“抽象分支”是一种以渐进的方式对软件系统进行大规模更改的技术,它允许您在更改仍在进行时定期发布系统。