期间:2017
机器的理由
我记得在我十几岁的时候,有人告诉我人工智能(AI)在未来几年将会做很多了不起的事情。现在,一些几十年后来,其中一些似乎正在发生。最近的一次胜利是计算机通过对弈来教彼此下围棋,迅速变得比任何人类都熟练,其策略人类专家几乎无法理解。人们很自然地想知道未来几年将会发生什么,计算机会很快拥有比人类更大的智能吗?(鉴于最近的一些选举结果,这可能不是一个很难跨越的障碍。)
但当我听到这些时,我想起了毕加索几十年前对计算机的评论:“计算机是无用的。他们只能给你答案。”像机器学习这样的技术所能产生的推理在其结果中是真正令人印象深刻的,并且将对作为软件用户和开发人员的我们很有用。但答案虽然有用,却并不总是全貌。我在上学的早期就知道了这一点——仅仅提供一个数学问题的答案只能让我得到几个分数,而我必须出示的是满分如何我得到了它。得到答案的推理比结果本身更有价值。这是自学成才的围棋人工智能的局限性之一。虽然他们能赢,但他们无法解释自己的策略。
银河和圣胡安的竞赛
《San Juan》和《Race for the Galaxy》都是优秀、快速且有思想的卡牌游戏。种族是更深层次的,它的图标使它对一些人来说不那么平易近人。
功能切换(又名功能标志)
特性切换(通常也称为特性标志)是一种强大的技术,允许团队在不更改代码的情况下修改系统行为。它们属于不同的使用类别,在实现和管理切换时,考虑到这种分类是很重要的。切换引入了复杂性。通过使用智能切换实现实践和适当的工具来管理切换配置,我们可以控制这种复杂性,但我们还应该致力于限制系统中切换的数量。
构建演化架构的前言华体会体育网页版入口
最近,我的同事:尼尔·福特、丽贝卡·帕森斯和帕特·夸写了一本名为《构建进化架构》的书。华体会体育网页版入口他们请我写序,我感到很荣幸。
罗伊出售Thoughtworks
Thoughtworks被Apax基金收购。目前的管理团队将继续像以前一样经营公司。
测试影响分析的兴起
测试影响分析(TIA)是加快构建的测试自动化阶段的一种现代方法。它通过分析源代码的调用图来确定在对生产代码进行更改后应该运行哪些测试。微软已经在这种方法上做了大量的工作,但是开发团队也有可能以相当低的成本实现一些有用的东西。
建筑师电梯-参观上层楼层
许多大型组织发现他们的IT引擎与行政顶层隔了许多层,这也将业务和数字战略从执行这些战略的重要工作中分离出来。架构师的主要角色是乘坐顶层公寓和引擎室之间的电梯,在需要支持这些数字化工作的地方停下来:自动化软件制造,最小化前期决策,并随着技术发展影响组织。
敏捷和架构播客华体会体育网页版入口
Ryan Lockard (Agile起义)邀请我加入丽贝卡Wirfs-Brock这是一个关于敏捷项目架构的播客对话。华体会体育网页版入口Rebecca开发了责任驱动设计,这对我开始我的职业生涯有很大的影响。我们讨论了如何定义体系结构、测试对体系结构的影响、领域模型的华体会体育网页版入口作用、准备什么样的文档,以及需要预先完成多少体系结构。
葡萄栽培和画廊经营者
《葡萄栽培》和《The Gallerist》都是优秀的欧洲游戏,主题都是以生产为中心的商业。
QA在生产
传统上,QA专注于在发布到生产环境之前测试软件,看它是否已经为发布做好了准备。但是,越来越多的现代QA组织也开始关注在生产环境中运行的软件。通过分析日志和其他监视工具,他们发现质量问题并向开发组织强调。这种方法特别适用于那些使用持续交付快速可靠地将软件的新版本投入生产的组织。
破坏服务器的一行代码
会话秘密是用于加密cookie的密钥。应用程序开发人员通常在开发期间将其设置为弱键,而在生产期间不进行修复。本文将解释如何破解这种弱密钥,以及如何使用破解的密钥来获得对承载应用程序的服务器的控制。我们可以通过使用强密钥和仔细的密钥管理来防止这种情况。库的作者应该用工具和文档鼓励这种做法。
自我封装
数据封装是面向对象风格的中心原则。这就是说,对象的字段不应该公开,相反,来自对象外部的所有访问都应该通过访问器方法(getter和setter)进行。有些语言允许公开访问字段,但我们通常警告程序员不要这样做。Self-encapsulation更进一步,表示所有内部对数据字段的访问也应该通过访问器方法进行。只有访问器方法应该接触数据值本身。如果数据字段没有对外公开,这将意味着添加额外的私有访问器。
函数对象
在编程中,对象的基本概念是数据和行为的捆绑。这在编写一组相关函数时提供了一个公共数据上下文。它还提供了一个操作数据的接口,该接口允许对象控制对该数据的访问,从而使支持派生数据和防止数据的无效修改变得容易。许多语言提供了定义类的显式语法,类充当对象的定义。但是,如果您有一种具有一流函数和闭包的语言,那么您可以使用函数作为对象模式(最初由Eugene Wallingford描述)使用这些构造来创建对象。
你说的“事件驱动”是什么意思?
去年年底,我和同事们参加了Thoughtworks的一个研讨会,讨论“事件驱动”应用程序的本质。在过去的几年里,我们一直在构建大量使用事件的系统,它们经常受到赞扬,也经常受到谴责。我们的北美办公室组织了一个峰会,来自世界各地的Thoughtworks高级开发人员出席了会议,分享想法。
这次峰会最大的成果是认识到,当人们谈论“事件”时,他们实际上指的是一些完全不同的东西。所以我们花了很多时间试图梳理出一些有用的模式。这篇笔记是我们所发现的主要问题的简要总结。
综合监测
合成监视(也称为语义监视)定期针对实时生产系统运行应用程序的自动化测试的一个子集。结果被推送到监视服务中,在发生故障时触发警报。该技术将自动化测试与监视相结合,以检测生产中失败的业务需求。
持续集成认证
持续集成是软件开发中的一种流行技术。华体会登录网址在会议上,许多开发人员谈论他们如何使用它,持续集成工具在大多数开发组织中是常见的。但我们都知道,任何像样的技术都需要一个认证项目——幸运的是,认证项目确实存在。它是由持续交付和devops领域最重要的专家之一开发的,以管理速度非常快而闻名,但其结果非常有见地。尽管它相当成熟,但它并没有像它应该的那样广为人知,所以作为一名技术爱好者,我认为与我的读者分享这个认证程序对我来说很重要。您准备好获得持续集成认证了吗?你将如何面对考试将揭示的令人震惊的真相?
Web应用程序安全基础
现代网络开发面临许多挑战,其中安全是非常重要的,但往往没有得到重视。虽然威胁分析等技术越来越被认为是任何严肃开发的必要条件,但也有一些基本实践是每个开发人员可以而且应该理所当然地做的。