菜单

采纳?

    试验?

    • Arrow是适用于Kotlin的函数式编程库,是由两个现有流行库(kategoryfunKTionale)合并而成。虽然Kotlin为函数式编程提供了构建模块,但Arrow为应用程序开发人员准备了随时可用的高级抽象包。它提供数据类型、类型类、作用(Effects)、Optics和其他函数式编程模式,并且可以与流行库相集成。我们对于Arrow最初的好印象如今已经在生产环境的应用构建中得到了印证。

      历史信息
    • 我们的一些团队使用了Flutter并且很喜爱它。作为跨平台框架,它可以帮助我们用Dart语言编写原生移动应用。借助Dart,Flutter可以编译成平台原生代码并直接和目标平台通讯,从而避免了桥接和上下文切换。Flutter的热重载(hot-reload)特性亦让人惊叹,它能在编写代码时提供超快的视觉反馈,我们推荐你在项目中尝试使用Flutter。

      历史信息
    • jest-when是一个轻量级的JavaScript库,通过匹配模拟函数调用的参数完善了Jest的功能。Jest是测试整个技术栈的好工具,而jest-when可以帮助检查模拟函数接收的参数。这样就能够为具有很多依赖的模块写出更强壮的单元测试。

      历史信息
    • Micronaut是一个JVM框架,可以用来构建Java,Kotlin或者Groovy服务。它没有通过运行时反射来完成依赖注入(DI)和生成代理(传统框架的常见缺点),而是使用了DI/AOP容器在编译时执行依赖注入,因此具有内存占用小、启动时间短的特点。这使得它不仅在标准的服务器端微服务方面,在物联网、Android应用程序和无服务器功能等环境中也很有吸引力。Micronaut使用Netty,并且对响应式编程提供一流的支持。它还包含了服务发现和熔断等特性,这些特性使得它对云计算非常友好。对于JVM领域的全栈框架来说,Micronaut是一个非常有前途的新成员。我们在越来越多的生产项目中看到了它的身影,这促使我们将其移至试用阶段。

      历史信息
    • 今年年初,React Hooks成为了流行的JavaScript框架。它无需编写类就可以使用状态和其他React功能,从而提供了一种比使用高阶组件或render-props更简洁的方法。诸如Material UIApollo之类的库已经切换到使用Hooks了。测试Hooks时会遇到一些问题,特别是使用Enzyme时,这能帮助我们重新评估是否选择Enzyme作为工具。

      历史信息
    • JavaScript世界日新月异,随着我们在框架使用方面的经验越来越多,我们的推荐也随之改变。有些框架随着我们的深入使用,会使其他类似框架都黯然失色。在React前端测试方面,React Testing Library就是这样一个例子。用它写的测试比其他框架(如Enzyme)脆弱,因为它鼓励独立测试组件间的关系,而不是测试全部实现细节。

      历史信息
    • 使用带标签的模板文字styled components,可以将为React组件设置样式所需的CSS直接放入创建该组件的JavaScript代码中。这大大减轻了管理CSS的痛苦,并且不需要为避免CSS中的命名冲突而想尽办法,比如命名约定等。开发人员在查看组件定义时可以直接看到样式,而不必记住几MB的CSS样式。当然,将CSS放入JavaScript代码中,可能会使跨不同组件样式的一致性变得更加困难,因此我们建议使用这种方法时一定要理解其优缺点。

      历史信息
    • TensorFlow的2.0版本保持了其作为业界领先的机器学习框架的突出地位。TensorFlow最初是一个数字处理程序包,后来逐渐扩展为包括支持各种机器学习方法和执行环境(从移动CPU到大型GPU群集)的库。在此过程中,出现了许多框架,以简化网络创建和训练的任务。同时,其他框架(尤其是PyTorch)提供了一种命令式编程模型,该模型使调试和执行变得越来越容易。TensorFlow 2.0现在默认为命令流(立即执行),并采用Keras作为单个高阶API。尽管这些更改提高了TensorFlow的可用性并使其较PyTorch更具竞争力,但这是一次重大的重写,常常破坏向后兼容性——TensorFlow生态系统中的许多工具和服务框架都无法立即适配新版本。目前,请考虑是否要在TensorFlow 2.0中进行设计和试验,或恢复到版本1以在生产环境中服务和运行模型。

      历史信息

    评估?

    • Fairseq是Facebook AI Research的序列到序列建模工具套件,允许研究人员和开发人员训练定制模型以进行翻译、摘要、语言建模和其他NLP任务。对于PyTorch的用户来说,这是一个不错的选择。它提供了各种序列到序列模型的参考实现,支持跨多个GPU和机器的分布式训练,可扩展性强,并具有许多预训练的模型,其中包括RoBERTa,它是对BERT的优化。

      历史信息
    • Flair是一个简单的基于Python的NLP框架。它让用户可以执行标准的NLP任务,例如命名实体识别(NER)词性标记(PoS)词义消歧和分类,并且在一系列NLP任务中都表现良好。Flair为各种文字和文档嵌入提供了一个简单且统一的界面,包括BERT、Elmo及其自己的Flair嵌入。同时,它还提供多语言支持。这个框架本身是建立在PyTorch之上的。我们在某些项目中正在使用它,并且喜欢它的易用性和强大的抽象。

      历史信息
    • Gatsby.js是一个用于编写JAMstack架构风格网络应用的框架。应用的一部分在构建时生成并且以静态站点的形式进行部署。剩余的功能以渐进式网络应用的方式进行实现并运行在浏览器中。这些应用无需服务端代码即可运行。通常来说,渐进式网络应用会通过调用第三方API,或者现成的SaaS解决方案实现内容管理等功能。在Gatsby.js的例子中,所有的客户端和构建代码都是用React编写。框架包含了一些优化来让程序运行得更快。它将代码与数据分离来最大程度地减少加载时间,并且通过在应用内跳转时预先加载资源来提高性能。接口通过GraphQL进行调用并且通过一些插件来简化和现有服务的集成。

      历史信息
    • 我们已经在项目中看到了许多成功的GraphQL实现,也看到了一些有趣的模式和应用,比如将GraphQL用于服务器端资源聚合。尽管如此,对该框架的滥用、以及使用过程可能遇到的一些问题,我们并非毫无担忧。例如N+1查询可能带来的性能问题,以及添加新模型时需要大量样板代码而导致的复杂性等。这些问题有一些解决方法,例如使用查询缓存等。虽然这项技术不是银弹,我们仍然认为它值得作为系统架构的一部分进行评估。

      历史信息
    • Kotlin生态系统中,KotlinTest是我们团队喜爱的独立测试工具。它提供了我们在之前的雷达中强调的技术——基于属性的测试。它的关键优势在于提供了多种测试方法以构建测试套件。同时,它内置了一组全面的匹配器,使我们能用优雅的内部DSL编写富有表现力的测试。

      历史信息
    • NestJS是使用TypeScript编写的服务器端框架。通过集成Node.js社区的丰富生态,NestJS提供了一种开箱即用的应用程序架构。开发NestJS的思维模型类似于Angular的服务器端版本或Spring Boot的TypeScript版本,因此开发人员的学习曲线很低。NestJS支持诸如GraphQL,Websocket和ORM库之类的协议。

      历史信息
    • 在使用HTML和相关技术来生产书籍和其他印刷品时,必须考虑分页问题。这包括页面计数器、页眉和页脚中的重复元素和分页符。Paged.js是一个开源代码库,它为Paged MediaGenerated Content for Paged Media CSS模块实现了一系列补充代码。它仍处于试验阶段,但填补了HTML的“编写一次,到处发布”的重要空白。

      历史信息
    • Quarkus是Red Hat的一个云原生、容器化优先的用于编写Java应用程序的框架。它具有非常快的启动时间(几十毫秒)和较低的内存占用率,这使其非常适用于Faas或者频繁的在容器编排中进行扩展和收缩。像Micronaut框架一样,Quarkus通过使用提前编译技术在编译时进行依赖注入,避免了反射造成的运行时成本。它还可以很好地和GraalVM的原生映像配合使用来进一步减少启动时间。Quarkus支持命令式和响应式模型。Quarkus与Micronaut和Helidon一起领导着新一代Java框架,这些框架试图在不牺牲开发人员效率的前提下,解决应用的启动性能和内存问题。它已经引起了社区的广泛兴趣,值得关注。

      历史信息
    • 苹果在其新的SwiftUI框架上迈出了一大步,该框架用于在macOS和iOS平台上实现用户界面。我们很高兴SwiftUI跨越了Interface Builder和XCode之间略显混乱的关系,并采用了一致的、声明性的和以代码为中心的方式。现在,你可以在XCode 11中并排查看代码和生成的可视化界面,从而获得更好的开发人员体验。SwiftUI框架还从近年来主导Web开发的React.js的世界中汲取了灵感,它利用视图模型中的不可变值和异步更新机制,构成了统一的反应式编程模型。这为开发人员提供了一个完全原生的替代品,以替代类似React NativeFlutter之类的反应式框架。尽管SwiftUI确实代表了Apple UI开发的未来,但它是一个相当新的事物,还需要花费一些时间来打磨。我们期待改进的文档,和一个可以为测试与其他工程化问题建立一套实践的开发者社区。

      历史信息
    • 随着现代系统的组件依赖数量不断增加,如何创建可靠的环境来运行自动化测试成为了一个反复出现的问题。Testcontainers是一个Java库,它通过在测试中施行容器化的依赖管理来缓解这一问题。这对于扩展可重复的数据库实例或类似的基础结构特别有用,同时它也可以在Web浏览器中用于UI测试。我们的团队发现利用此库提供的可编程、轻量且一次性的容器,集成测试会变得更加可靠。

      历史信息

    暂缓?

    • 我们通常不会将已经移除的工具保留在技术雷达上,但是我们的团队强烈感受到Enzyme应该替换为React Testing Library来用于测试React界面组件。使用Enzyme的团队发现它对于被测试组件内部的聚焦会导致脆弱的、无法维护的测试。

      历史信息
    无法找到需要的信息?

    每期技术雷达中的条目都在试图反映我们在过去六个月中的技术洞见,或许你所搜索的内容已经在前几期中出现过。由于我们有太多想要谈论的内容,有时候不得不剔除一些长期没有发生变化的条目。技术雷达来自于我们的主观经验,而非全面的市场分析,所以你可能会找不到自己最在意的技术条目。

    全新或有挪动,没有变化