Enable javascript in your browser for better experience. Need to know to enable it?

黑料门

第31期 | 十月 2024

工具

  • 工具

    采纳 试验 评估 暂缓 采纳 试验 评估 暂缓
  • 新的
  • 移进/移出
  • 没有变化

工具

采纳 ?

  • 42. Bruno

    是一个用于 API 测试、开发和调试的开源桌面工具,类似于 PostmanInsomnia 。它旨在通过简单的离线设计提供更卓越的协作、隐私和安全性。集合直接存储在您的文件系统中,采用自定义的纯文本标记语言 Bru Lang 编写,可以通过 Git 或您选择的版本控制工具进行共享以便协作。Bruno 既可作为桌面应用程序使用,也可作为 。它还提供了官方的 VS Code 扩展,并计划支持其他 IDE。Bruno 已成为多支 黑料门 团队的默认选择,但我们也建议团队在 VPN 和代理环境下工作时保持警惕,因为在这些情况下发出的请求 。

  • 43. K9s

    通过集成更详细的图表和视图,显著地提升了其可视化能力。它现在提供了更友好的日志和指标展示功能,并更加灵活地支持自定义资源(CRDs)的显示。对于 Pods 的操作也得到了扩展,包括与调试工具(如 )更深入的集成,以及对多集群环境的增强支持。对于 CRD 的支持有显著地提升,现在提供了更好的资源导航和管理能力,并且可以更加流畅地与自定义资源进行交互。快捷键面板也得到了增强,以便于对 kubectl 不太熟悉的开发者使用。 K9s 最初主要专注于 DevOps 团队,所以这次改进可以看作是它一次重大的改进。

  • 44. SOPS

    是一个加密文件编辑器,支持多种文件格式的加密,并与密钥管理服务 (KMS) 兼容。我们在处理秘密管理时的建议一直是要将其与源代码解耦。然而,当面临在完全自动化(符合基础设施即代码) 的精神下)和一些手动步骤(使用像 vaults 这样的工具)之间进行选择以管理、种子和轮换种子机密时,团队常常需要权衡。例如,我们的团队使用 SOPS 来管理引导基础设施的种子凭证。然而,在某些情况下,无法从遗留代码库中移除 Secret。在这些情况下,我们使用 SOPS 来加密文本文件中的 Secret。SOPS 可以与云管理的密钥存储(如 AWS 和 GCP 密钥管理服务 (KMS) 或 Azure Key Vault)集成, 作为加密密钥的来源。它还支持跨平台使用,并支持 PGP 密钥。我们的几个团队在需要管理代码库中的秘密时默认使用 SOPS。

  • 45. 视觉回归测试工具

    我们之前强调过 视觉回归测试工具 ,并观察到它们的算法从原始的像素级比较进化到更复杂的模式匹配和光学字符识别(翱颁搁)。早期的视觉回归工具产生了很多误报,只有在界面稳定的后期开发阶段才有用。BackstopJS 通过配置选择器和视口来定位页面上的特定元素进行视觉测试,避免了这个问题。但机器学习使得检测和比较视觉元素更加准确,即使在这些元素移动或包含动态内容的情况下。这些工具变得越来越有用,并且具备利用 AI 和机器学习最新进展的优势。现在,几个商业工具,如 和 ,声称在其视觉回归测试中使用了 AI。我们的一支团队广泛使用了 Applitools Eyes,并对结果感到满意。尽管视觉回归测试不能替代编写良好的端到端功能测试,但它们是测试工具箱中的一个宝贵补充。我们正积极推动它们的采用,因为它们已经成为全面 UI 测试策略中的一个安全默认选项。

  • 46. Wiz

    已成为我们多个项目中的云安全平台首选。我们的团队喜欢它能够比类似工具更早地检测到风险和威胁,因为它能够持续扫描变更。Wiz 可以检测并警报尚未部署到生产环境的工件(如容器镜像、基础设施代码)以及生产环境中的工作负载(如容器、虚拟机和云服务)的错误配置、漏洞和泄露的机密。我们也非常欣赏它为开发团队和领导团队提供的强大报告功能。该分析帮助我们了解漏洞如何影响特定服务,从而能够在该上下文中解决问题。

试验 ?

  • 47. AWS Control Tower

    仍然是我们在多团队环境中管理 AWS 账户的首选工具。它提供了一个便捷的机制,可以预配置安全和合规控制,这些控制将自动应用于新的着陆区。这是 的一个实例,因为这些控制在创建新基础设施时被应用和验证,消除了后续进行手动合规检查的需求。 自我们上次使用以来不断发展,现在已在更多的 AWS 区域提供。AFT 允许通过基础设施即代码 流水线来创建 Control Tower 账户。我们喜欢 AFT 的定制化能力,它可以通过发送 webhooks 或采取特定操作,安全地与外部工具 GitHub Actions集成。我们的团队报告说使用 AWS Control Tower 管理账户效果很好,但我也希望 AWS 能接受社区对该项目的贡献,尤其是在我们发现改进机会时。

  • 48. CCMenu

    对于实践持续集成(CI) 的团队来说,了解中央构建在 CI 中的状态非常重要。在疫情之前,团队会议室中的大屏幕 可以让人一目了然地获取这些信息。随着远程工作成为常态,团队需要一种适用于开发者个体工作站的解决方案。在 Mac 上, 就是一款这样的工具,这是一个由 黑料门 员工编写的小应用程序。最初它是 的一部分,适用于所有可以提供 格式信息的服务器,包括 Jenkins 和 TeamCity。最近的重写增加了对 GitHub Actions 的支持,并为更深入集成更多 CI 服务器和身份验证方式奠定了基础。

  • 49. ClickHouse

    是一个开源的列式在线分析处理(OLAP)数据库,用于实时分析。它于 2009 年作为一个实验项目启动,之后发展成为一个高性能且线性可扩展的分析数据库。其高效的查询处理引擎结合数据压缩,使其适合在不进行预聚合的情况下运行交互式查询。ClickHouse 也是 OpenTelemetry 数据的优秀存储选择。它与 的集成允许您存储大量的追踪数据并高效分析。

  • 50. Devbox

    尽管开发工具不断进步,保持一致的本地开发环境仍然是许多团队面临的挑战。为新工程师进行入职设置通常需要运行命令或自定义脚本,而这些操作可能会在不同机器上不可预测地失败,导致环境不一致。为了解决这个问题,我们的团队越来越依赖。Devbox 是一个命令行工具,提供了简洁的界面,用于创建可复现的、按项目定义的本地开发环境,它利用了 Nix 包管理器,但不使用虚拟机或容器。Devbox 极大地简化了团队的入职流程,因为一旦为代码库配置好环境,在新设备上只需一个 CLI 命令(devbox shell)就能复现已定义的环境。Devbox 支持 shell 钩子、自定义脚本以及生成 ,以便与 VSCode 集成。

  • 51. Difftastic

    是一种用于在语法感知的基础上高亮显示代码文件差异的工具,和传统的文本 diff 工具(例如经典的 Unixdiff 命令)有很大不同。例如,在像 Java 或 TypeScript 这样的以分号分隔的语言中,Difftastic 会忽略为了分割长语句而插入的换行符。该工具仅突出显示对程序语法有影响的更改。它首先将文件解析为抽象语法树,然后使用 Dijkstra 算法计算它们之间的距离。我们发现,Difftastic 在审查大型代码库时特别有用。只要编程语言有解析器,它就可以用于任何编程语言,并且开箱即用地支持 50 多种编程语言以及 CSS、HTML 等结构化文本格式。尽管这不是一个新工具,但在大语言模型(LLM)代码助手时代,人工审查越来越庞大的代码库变得至关重要,我们认为有必要强调这一工具的价值。

  • 52. LinearB

    是一个软件工程智能平台,为我们的工程领导者提供数据驱动的洞察,以支持持续改进。它对关键领域进行对齐,如基准测试、工作流自动化以及增强开发者体验和生产力的针对性投资。我们对 LinearB 的体验表明,它能够在工程团队中培育改进和效率的文化。我们的团队使用该平台来跟踪关键的工程指标,识别需要改进的领域,并实施基于证据的行动。这些功能与 LinearB 的核心价值主张高度一致:基准测试、自动化收集指标,并实现数据驱动的改进。LinearB 集成了源代码、应用生命周期、CI/CD 和沟通工具,使用预配置和自定义的工程指标,提供有关开发者体验、生产力和团队绩效的全面定量洞察。作为 交付核心四指标 的支持者,我们特别欣赏 LinearB 对这些特定指标的强烈关注,以及其衡量软件交付性能关键方面的能力,这对于提升效率至关重要。历史上,团队在收集交付核心四指标特定指标时会面临挑战,往往依赖复杂的自定义仪表盘或手动过程。LinearB 持续提供一个引人注目的解决方案,能够自动跟踪这些指标,并提供实时数据,以支持围绕开发者体验、生产力和可预测性进行的主动决策。

  • 53. pgvector

    是一个开源的 PostgreSQL 扩展,用于进行向量相似性搜索,允许将向量与结构化数据一起存储在单一且成熟的数据库中。虽然它缺少一些专用向量数据库的高级功能,但它受益于 PostgreSQL 的 ACID 合规性、时间点恢复等强大功能。随着生成式 AI 驱动的应用程序的兴起,我们看到越来越多的模式是存储并有效搜索嵌入向量以进行相似性匹配,pgvector 有效地解决了这一需求。pgvector 在生产环境中的使用日益增多,尤其是在团队已经使用云提供商管理的 PostgreSQL 时,它表现出能够满足常见向量搜索需求,而无需单独的向量存储库。我们的团队在对比结构化和非结构化数据的项目中发现了它的价值,展示了其广泛采用的潜力,因此我们将其移动到试验环(Trial ring)。

  • 54. Snapcraft 构建工具

    是一个开源的命令行工具,用于在 Ubuntu、其他 Linux 发行版和 macOS 上构建和打包名为 的自包含应用程序。Snaps 可以在包括 Linux 机器、虚拟环境和车辆车载计算机系统在内的硬件平台上轻松部署和维护。虽然 Snapcraft 提供了一个公共的 用于发布 snaps,但我们的团队使用这个构建工具将自动驾驶系统打包为 snap,而不将其发布到公共应用商店。这使我们能够在本地构建、测试和调试嵌入式软件系统,同时将其发布到内部工件库。

  • 55. Spinnaker

    是由 创建的一个开源持续交付平台。它将集群管理和云端烘焙镜像的部署作为核心功能。我们喜欢 Spinnaker 对微服务部署的特定做法。在之前的版本中,我们提到了缺乏将流水线配置为代码的能力,但这一问题已通过添加 spin CLI 得到解决。尽管我们不建议在简单的持续交付场景中使用 Spinnaker,但在复杂的情况和同样复杂的部署管道中,它已经成为许多人的首选工具。

  • 56. TypeScript OpenAPI

    (或称 tsoa)是 Swagger 生成 OpenAPI 规范的一个替代方案,用于从代码中直接生成 API 规范。它采用代码优先的方式,将 TypeScript 控制器和模型作为唯一的真实数据来源,并使用 TypeScript 注解或装饰器,而不像使用 OpenAPI 工具时需要复杂的文件和配置。它能够生成 2.0 和 3.0 的 API 规范,并且支持为 Express、Hapi 和 Koa 生成路由。如果你在使用 TypeScript 编写 API,值得看看这个项目。

  • 57. Unleash

    尽管我们仍然推荐使用最简特性开关,但随着团队的扩展和开发速度的加快,管理手工制作的开关变得更加复杂。现在我们团队广泛使用 ,它能够应对这种复杂性并支持 CI/CD。它既可以作为服务使用,也可以自托管。Unleash 提供了多个语言的 SDK,拥有良好的开发者体验和友好的管理界面。尽管目前还没有对 的官方支持,但你可以找到由社区维护的 Go 和 Java 。Unleash 既可以用于简单特性开关,也支持分组和渐进式发布,使其成为适合大规模功能管理的选择。

评估 ?

  • 58. Astronomer Cosmos

    是一个为 Airflow 设计的插件,旨在为 dbt core 工作流提供更原生的支持。安装该插件后,当使用 DbtDag 包装 dbt 工作流时,它将 dbt 节点转换为 Airflow 任务/任务组,使工程师能够直接在 Airflow UI 中可视化 dbt 依赖图及其执行进度。它还支持使用 Airflow 连接代替 dbt 配置文件,从而可能减少配置扩散。我们正在试验该工具,探索它在 Airflow 中与 dbt 更无缝集成的潜力。

  • 59. ColPali

    是一款新兴工具,利用 实现 PDF 文档检索,旨在解决从包含图像、图表和表格的多媒体文档中提取数据的难题,这对于构建强大的检索增强生成 (RAG) 应用至关重要。与依赖文本嵌入或光学字符识别(OCR)技术的传统方法不同,ColPali 处理整页 PDF 文档,使用视觉 Transformer 创建嵌入,综合考虑文本和视觉内容。这种整体方法不仅提高了文档检索的效果,还增强了对为何检索到特定文档的推理能力,大大提升了 RAG 在数据丰富的 PDF 文档中的表现。我们已经在多个客户项目中测试了 ColPali,结果显示出很大的潜力,但该技术仍处于早期阶段。对于拥有复杂视觉文档数据的组织来说,值得考虑进行评估。

  • 60. Cursor

    AI 辅助编程工具的竞赛仍在继续,而其中最引人注目的一个就是 。Cursor 是一个以 AI 为核心的代码编辑器,旨在通过深度整合 AI 到编码工作流中来提升开发者的生产力。虽然我们在之前的雷达评估中已经关注到它,但显然,Cursor 近期的持续改进已为其带来了质的飞跃。在我们的使用中,Cursor 展现了基于现有代码库的强大上下文推理能力。尽管其他 AI 代码工具如 GitHub Copilot 已经可以围绕代码片段进行代码生成或协作,Cursor 的多行和多文件编辑操作让它脱颖而出。Cursor 是基于 VSCode 代码库分叉开发的,提供了一种符合开发者直觉的快速且直观的交互方式。通过快捷键 ctrl/cmd+Kctrl/cmd+L 即可完成强大的操作。Cursor 在 AI 编程工具的竞赛中引领了新一轮的竞争,尤其是在开发者交互和代码库理解方面更为突出。

  • 61. Data Mesh Manager

    提供了典型 data mesh 平台的元数据层。它特别关注数据产物的定义以及使用 倡议规范数据契约,并可以通过相关的 集成到构建管道中。该应用还提供了数据目录,用于发现和探索数据产物及其元数据,并允许进行联邦治理,包括定义数据质量指标和管理数据质量规则。作为该领域的首批原生工具之一,它不仅仅是试图将现有平台改造为数据网格范式。

  • 62. GitButler

    尽管Git 的 功能强大且实用,但其命令行界面在管理多个分支和提交暂存方面以复杂性着称。 是一个 Git 客户端,它提供了图形界面,旨在简化这一过程。GitButler 通过独立于 Git 跟踪未提交的文件更改,并将这些更改暂存到虚拟分支中来实现这一目标。有人可能会认为这是对不应存在的问题的解决方案;如果你经常进行小规模更改并频繁推送到主干,就不需要多个分支。然而,当你的工作流程涉及 pull request(PR)时,分支结构可能会变得复杂,尤其是在 PR 合并之前有较长的审查周期时。为了解决这个问题,GitButler 还与 GitHub 集成,允许你选择性地将更改分组为 pull request,并直接从该工具发出。GitButler 是旨在管理 PR 流程中固有复杂性的工具中又一新增选项。

  • 63. JetBrains AI Assistant

    是一款为所有 IDE 提供支持的编码助手,旨在顺畅集成以支持代码补全、测试生成和风格指南遵循。它基于 和 等模型,因其能够记住编码风格并在后续会话中保持一致性输出而脱颖而出。我们的开发人员发现其测试生成功能特别有用,并指出它在处理较长输出时没有稳定性问题。然而,与一些竞争对手不同,JetBrains 没有托管自己的模型,这对于担心第三方数据处理的客户可能并不适用。尽管如此,该工具与 JetBrains IDE 的集成使其成为探索 AI 驱动编码助手的团队的一个有前景的选择。

  • 64. Mise

    在多语言环境中工作的开发人员经常发现自己需要管理多个不同语言和工具的版本。 旨在解决这个问题,提供一个工具来替代 , 、、、 等工具,并且可以作为 asdf的直接替代品。Mise 是用 Rust 编写的,以提高 shell 交互的速度;与使用基于 shell 的 shim 的 asdf 不同,mise 预先修改 PATH 环境变量,从而直接调用工具运行时。这也是 mise 比 asdf 更快的部分原因。对于那些已经熟悉 asdf 的开发人员,mise 提供了相同的功能,但有一些关键区别。由于是用 Rust 编写的,mise 更快,并且拥有一些 asdf 所没有的功能,例如能够同时安装同一工具的多个版本,以及更宽容的命令,包括模糊匹配。它还提供了一个集成的任务运行器,方便执行代码检查、测试、构建、服务器和其他与项目相关的任务。如果您厌倦了使用多个工具来管理开发环境,并且对其他工具有时笨拙的语法感到不满,那么 mise 绝对值得一试。

  • 65. Mockoon

    是一个开源的 API 模拟工具。它具有直观的界面、可自定义的路由和动态响应功能,还可以自动创建模拟数据集。Mockoon 兼容 OpenAPI,允许生成不同的场景,能够在本地进行测试并与开发流水线集成。你还可以创建“部分模拟”,通过拦截请求,仅模拟 Mockoon 中定义的调用。这部分模拟有助于模拟特定的 API 路由或端点,并将其他请求转发到实际的服务器。部分模拟在某些场景下非常有用,但存在滥用风险,可能导致不必要的复杂性。除此之外,Mockoon 仍然是快速搭建模拟 API、改进和自动化开发流程的宝贵工具。

  • 66. Raycast

    是一款适用于 macOS 的启动器,允许你通过键盘快速启动应用程序、运行命令、搜索文件并自动化任务。我们的团队认为其针对开发者的开箱即用功能非常有价值,并且它的非常简单,允许与第三方应用和服务,如 VSCode、Slack、Jira 和 Google 等,进行交互。Raycast 专为提高生产力设计,减少上下文切换,是希望简化日常任务的用户的有用工具。专业版用户还可以使用 Raycast AI,这是一款专门的 AI 驱动搜索助手。

  • 67. ReadySet

    是一个适用于 MySQL 和 PostgreSQL 的缓存层。与依赖手动失效的传统缓存解决方案不同,ReadySet 利用数据库复制流来增量更新其缓存。通过,ReadySet 实现了比传统只读副本更低的尾延迟。ReadySet 与 MySQL 和 PostgreSQL 在协议上兼容,因此可以将其部署在数据库前,以横向扩展读取工作负载,而无需更改应用程序。

  • 68. Rspack

    许多我们团队在开发基于 Web 的前端时,已经从旧的打包工具(比如 Webpack)转向了 Vite。该领域的新进者是 ,经过 1.5 年的开发,刚刚发布了。Rspack 被设计为 Webpack 的直接替代品,兼容 Webpack 生态系统中的插件和加载器。这在迁移复杂的 Webpack 设置时,相较于 Vite 可能具有一定优势。我们团队迁移到 Vite 和 Rspack 等新工具的主要原因是开发者体验,特别是速度。没有什么比在获取上次代码更改反馈前需要等待一两分钟更能打断开发流程的了。Rspack 使用 Rust 编写,提供的性能显著快于 Webpack,在许多情况下甚至比 Vite 更快。

  • 69. 语义路由

    在构建基于 LLM 的应用时,将请求路由到特定代理或触发某一流程之前,确定用户意图是至关重要的。 充当 LLM 和代理之间的快速决策层,基于语义意义进行高效且可靠的请求路由。通过使用向量嵌入推断意图,Semantic Router 减少了不必要的 LLM 调用,提供了一种更加简洁、具有低成本的用户意图理解方式。它的潜力不仅限于意图推断,还可以作为各种语义任务的多功能构建模块。它的响应速度和灵活性使其在需要避免 LLM 带来的额外开销,快速实时决策的环境中成为强有力的竞争者。

  • 70. 软件工程代理(software engineering agents)

    目前在生成式 AI (GenAI) 领域最热门的话题之一是 软件工程代理 (software engineering agents)的概念。这些编程辅助工具不仅仅是在代码片段上帮助工程师,它们的目标是扩大解决问题的范围,理想情况下能够自主完成任务,且减少人为干预。其理念是,这些工具能够接收 GitHub issue 或 Jira ticket,提出计划并进行代码更改,甚至创建供人类审查的 pull request。这是提升 AI 编程辅助工具影响力的下一步逻辑,但想要实现覆盖广泛编码任务的通用代理的目标仍然非常雄心勃勃,目前的工具尚未令人信服地展示出这一点。然而,我们认为对于范围较小、较简单的任务,这种工具将很快起到作用,帮助开发人员腾出时间处理更复杂的问题。正在发布和推广测试版代理的工具包括 、 、 Tabnine's 的 ,以及 。 基准测试列出了更多此类工具,但我们建议对 AI 领域的基准测试保持一定的谨慎态度。

  • 71. uv

    Rust 因为其启动性能非常适合编写命令行工具,我们看到一些工具链正在用它重写。我们在之前的雷达报告中提到过Ruff,这是一个用 Rust 编写的 Python linter。在本期报告中,我们评估了,这是一个用 Rust 编写的 Python 包管理工具。uv 的价值主张是“超快”,在基准测试中,它的性能大幅超过其他 Python 包管理工具。然而,在我们的雷达评估中,我们讨论了在构建工具中优化几秒钟是否真的算是一个显著的提升。相比于性能,对于一个包管理系统来说,更重要的是生态系统、成熟的社区和长期的支持。尽管如此,我们项目团队的反馈表明,这一小幅速度提升可能会极大改善反馈周期和整体开发者体验——我们通常手动使 CI/CD 缓存变得非常复杂,以实现这微小的性能提升。uv 简化了我们的 Python 环境管理。考虑到在 Python 开发的包和环境管理方面仍有很大的改进空间,我们认为 uv 是一个值得评估的选择。

  • 72. Warp

    是一款适用于 macOS 和 Linux 的终端工具,它将命令输出分割为块以提高可读性。Warp 提供了,如智能命令建议和自然语言处理。它还包括笔记本功能,允许用户组织命令和输出,并添加注释和文档。你可以利用这些功能创建 README 文件或入职材料,以结构化和互动的方式呈现和管理终端工作流。Warp 还可以轻松集成 ,一个灵活的跨终端提示工具,允许你自定义终端体验,并检索有关正在运行的进程、所使用工具的特定版本、Git 详细信息或当前 Git 用户等信息。

  • 73. Zed

    在 文本编辑器项目关闭后,其创建者构建了一个名为 的新编辑器。Zed 使用 Rust 编写,并经过优化以充分利用现代硬件,给人感觉非常快速。它具备我们对现代编辑器的所有期望功能:支持多种编程语言、内置终端以及多缓冲编辑等。通过与多个 LLM 提供商的集成,Zed 还提供 AI 辅助编码功能。作为结对编程的热衷者,我们对 Zed 内置的远程 很感兴趣。开发者可以通过他们的 GitHub ID 找到彼此,然后实时协作于同一工作区。虽然现在还无法判断开发团队是否能够并愿意摆脱 Visual Studio Code 生态系统的吸引,但 Zed 是一个值得探索的替代方案。

暂缓 ?

  • 74. CocoaPods

    一直是 Swift 和 Objective-C Cocoa 项目中广受欢迎的依赖管理工具。然而,CocoaPods 团队,该项目在作为 iOS 和 macOS 开发者关键工具超过十年后,进入了维护模式。尽管工具和其资源仍将继续可用,但将不再进行主动开发。其鼓励开发者们转向 Swift Package Manager,它与 Xcode 原生集成,并且获得了来自苹果的更好的长期支持。

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

订阅技术雷达简报

?

立即订阅

查看存档并阅读往期内容