从React到React Fiber (insights.thoughtworks.cn)
React这样的调度策略对动画的支持也不好。如果React更新一次状态,占用浏览器主线程的时间超过16.6ms[1],就会被人眼发现前后两帧不连续,给用户呈现出动画卡顿的效果。

React核心团队很早之前就预知这样的风险的存在,并且持续探索可解决的方式。基于浏览器对 requestIdleCallback和requestAnimationFrame这两个API的支持,以及其他团队对这两个API的实现,如React Native团队。React团队实现新的调度策略–Fiber reconcile。

Fiber)是一种轻量的执行线程,同线程一样共享定址空间,线程靠系统调度,并且是抢占式多任务处理,Fiber 则是自调用,协作式多任务处理。
by @ThoughtWorks 2017-09-28 11:10 分享 查看详情
都100%代码覆盖了,还会有什么问题? (insights.thoughtworks.cn)
很多人看到这个标题时,都会想“你都100%代码覆盖了,怎么还会有问题呢?” 100%的代码覆盖率不等于100%的测试。我们用一个代码例子来你解说。
by @ThoughtWorks 2017-09-27 10:34 分享 查看详情
精益价值、原则和软件实践(上) (insights.thoughtworks.cn)
所谓精益思想的价值和原则非常多,我这里引用ThoughtWorks同事Jonny Schneider即将出版的《Understanding Design Thinking,Lean,and Agile》, 试图通过日常软件开发实践来补充这些看起来很虚的价值和原则,希望能推广精益成为更好的软件开发指导思想。
by @ThoughtWorks 2017-09-23 13:14 分享 查看详情
如何成为优秀的程序员? (insights.thoughtworks.cn)
作为一个从业快10年的程序员,我想给新入行的程序员们一些建议。这些建议是我希望自己可以在毕业时就读到的,也希望它们可以帮助你成为一个更好的程序员。
by @ThoughtWorks 2017-09-21 15:57 分享 查看详情
技术领导者即服务 (insights.thoughtworks.cn)
Tech Lead需要扮演三种重要的角色:技术决策者、流程监督人、干扰过滤器。要一个人做这三方面的贡献很多时候是不切实际的。如果我们能用一个云上的平台来承载这个居中协调者的能力,对整个组织的交付质量和能力成长都会有帮助。
by @ThoughtWorks 2017-09-15 15:58 分享 查看详情
解读基础设施即代码 (insights.thoughtworks.cn)
现代软件开发对基础设施的管理提出了更苛刻的要求:产品要适应瞬息万变的市场,要求基础设施有更快的响应速度。持续交付和DevOps的推行要求产品团队对部署和运维要有更高的自主性。技术的快速进步和演化,也使得基础设施的配置不得不频繁变化。在这种快速变化的过程中,要求基础设施既要灵活,也要安全、可靠。
by @ThoughtWorks 2017-09-15 15:25 分享 查看详情
持续交付模式下的安全活动 (insights.thoughtworks.cn)
在上一篇文章《开发团队面临的三大安全挑战》中,我们对现如今敏捷精益团队所面临的安全挑战进行了总结和分析,在接下来的几篇文章中,我们将逐一为你介绍团队、组织应该如何应对这些挑战。本篇文章先来讲讲如何解决第一个挑战:一次性的安全检查无法匹配持续性的交付模式。
by @ThoughtWorks 2017-09-13 11:27 分享 查看详情
React全家桶与前端单元测试艺术 (insights.thoughtworks.cn)
单元测试的好坏在于“单元”而不在“测试”。如果一个系统毫无单元可言,那就没法进行单元测试,几乎只能用Selenium做大量的E2E测试,其成本和稳定性可想而知。科学的单元划分可以让你摆脱mock,减少依赖,提高并行度,不依赖实现/易重构,提高测试对业务的覆盖率,以及易学易用,大幅减少测试代码。
by @ThoughtWorks 2017-09-08 10:34 分享 查看详情
Keycloak单点登录平台 (insights.thoughtworks.cn)
Keycloak首次在ThoughtWorks技术雷达VOL’16中以“评估”的状态出现。技术雷达15期正式提出“安全是每一个人的问题”,同时也对Docker和微服务进行了强调。

在微服务盛行的时代,现代Web服务的拆分对鉴权和授权也提出了新的挑战,而这正是Keycloak解决的问题。
by @ThoughtWorks 2017-09-06 10:46 分享 查看详情
持续交付2.0:云原生持续交付 (insights.thoughtworks.cn)
《持续交付》提出了一系列贯穿整个软件交付生命周期的最佳实践。但它成书的年代(2010年)云计算尚未得到广泛应用,尤其在软件开发过程中的应用非常有限。如果站在今天的技术水平和对云计算的理解水平基础上回顾《持续交付》的内容,我们有可能提出一组全新的、原生于云环境的持续交付实践。
by @ThoughtWorks 2017-09-04 11:01 分享 查看详情
Build Security In PII (insights.thoughtworks.cn)
PII泄露的事故正如很多信息安全故事一样,如果不出事故则不会被重视,但是一旦出现事故,结果往往则是无法挽回的。
by @ThoughtWorks 2017-09-01 11:04 分享 查看详情
征服遗留系统 (insights.thoughtworks.cn)
遗留系统是个难题,在应对一个巨大的遗留系统时没有捷径,同时也没有神奇的秘籍或令人目眩的黑科技。重要的是,团队需要意识到在面对一个遗留系统的时候我们需要具备什么。
by @ThoughtWorks 2017-09-01 10:40 分享 查看详情
又一个交付故事:技术决策的迷局 (insights.thoughtworks.cn)
上一个故事是关于自治团队解放生产力的,除了生产力之外,交付的另一个关键因素是软件架构,架构是在软件开发过程中并不那么容易改变的东西。然而与过去时代所不同的是,今天的软件架构并不是所谓的架构师高高在上做出的一些决策后就不再改变了,在这个技术快速变化的时代,今天的架构更像是在时间线上一系列的轻量技术决策积累的一个结果。而这个故事,就是关于技术决策的。
by @ThoughtWorks 2017-08-30 11:51 分享 查看详情
基于ReSwift和App Coordinator的iOS架构 (insights.thoughtworks.cn)
当我们在谈iOS应用架构时,我们听到最多的是MVC,MVVM,VIPER这三个Buzz Word,他们的逻辑一脉相承,不断的从ViewController中把逻辑拆分出去。本文则想从另一个角度和大家探讨一个新的iOS应用架构方案,架构的本质是管理复杂性,在讨论具体的架构方案前,我们首先应该明确一个iOS应用的开发,其复杂性在哪里?
by @ThoughtWorks 2017-08-28 10:29 分享 查看详情
DevOps团队之殇 (insights.thoughtworks.cn)
DevOps在一遍遍被人们提及、一次次在项目中被实践时,也在不断地被重新定义,DevOps是什么?这个问题可能到现在也比较难说清楚,但是项目中的“DevOps”做了些什么,却是清晰可见的。本文就结合笔者的切身经历,谈一谈关于DevOps交付的价值以及在企业转型过程中遇到的一些问题。
by @ThoughtWorks 2017-08-23 10:33 分享 查看详情
从分布式计算到分布式训练 (insights.thoughtworks.cn)
对于大数据和人工智能来讲,现在仅仅是萌芽时期,后面还有大量的工作要做,而模型的训练无论是单机还是分布式,都还没有达到真正稳定的生产批量效果,这些挑战,不仅仅来自于技术的实现,同时也来自于业务的配合。
by @ThoughtWorks 2017-08-21 10:18 分享 查看详情
一个交付故事 (insights.thoughtworkers.org)
我们与A记之间故事的明线是团队结构的不断变化,然而背后的暗线,却是技术趋势以及所带来的影响。在采用新技术的同时,调整团队结构,给予团队更大的自治,从而释放生产力,这是高效交付的秘诀。
by @ThoughtWorks 2017-08-18 11:07 分享 查看详情
系统级集成测试的断舍离 (insights.thoughtworkers.org)
最新一期(2017年第16期)ThoughtWorks技术雷达建议企业暂缓搭建企业级集成测试环境,而是采用增量的方式发布关键组件到生产环境。增量发布涉及到一些重要的技术包括契约测试、将发布与部署解耦、专注于平均恢复时间和生产环境下的QA 。
by @ThoughtWorks 2017-08-18 11:06 分享 查看详情
讲真,别再使用JWT了 (insights.thoughtworkers.org)
我并不否认JWT的价值,只是它经常被误用。在Web应用中,别再把JWT当做session使用,绝大多数情况下,传统的cookie-session机制工作得更好。JWT适合一次性的命令认证,颁发一个有效期极短的JWT,即使暴露了危险也很小,由于每次操作都会生成新的JWT,因此也没必要保存JWT,真正实现无状态。
by @ThoughtWorks 2017-08-16 11:00 分享 查看详情
在医疗健康领域引入软件开发安全实践 (insights.thoughtworkers.org)
“Build Security in DNA”简称BSI,是在开发过程中内置安全的软件开发实践。 顾名思义,BSI是要将各种安全措施从早期就纳入到软件开发生命周期的每个阶段; 因此,安全是内建的,而不是事后补齐的。通过早期引入这些实践并在整个开发生命周期中进行审查,团队会更早地考虑到安全性的问题并尽早收到反馈。这让团队获得了更多的时间和选项来响应和预防安全问题。
by @ThoughtWorks 2017-08-14 16:28 分享 查看详情