主页 | Web版 | 订阅 | 归档 | Feed

GopherDaily

20250321

每日一谚:Lead with context, end with options, and always close with an error


Go技术生态

Go语言中更快的解释器:追赶C++
PlanetScale使用的开源数据库Vitess自带的SQL评估引擎最初实现为一个AST评估器,直接操作由解析器生成的SQL AST。在过去的一年中,我们逐渐将其替换为一个虚拟机,该虚拟机尽管是用Go原生编写的,但性能与MySQL中原始的C++评估代码相似。最显著的是,新的虚拟机已被反复证明比原始的Go解释器更容易维护,即使它的速度快了好几个数量级。让我们回顾一下我们为获得这些令人惊讶的结果而做出的实现选择。

Go 语言能否成为 AI 领域的新一代 Python 杀手?
机器学习领域长期以来一直是 Python 的天下,其丰富的库(TensorFlow、PyTorch、Scikit-learn 等)使其成为数据科学家和机器学习从业者的首选。但 Go 语言凭借其出色的性能和并发能力,正在迅速崛起,成为 AI 领域的一股新势力。本文探讨了 Go 语言在机器学习中的优势,包括性能、并发性、静态类型、可扩展性和不断发展的生态系统,并分析了 Go 语言在哪些场景下优于 Python,例如高吞吐量预测服务、大规模数据预处理管道、资源受限环境以及构建自定义高性能 ML 组件等。文章还介绍了一些 Go 语言的机器学习库,例如 Gorgonia(类似 TensorFlow 或 PyTorch)、GoLearn(类似 Scikit-learn)和 GoMind,并提供了一个简单的 GoLearn 线性回归模型示例。

深入探讨基于会话的垃圾回收
本文概述了我们在 Dolt sql-server 实现自动垃圾回收时使用的一些实现技术。Dolt 是一个 SQL 数据库,它将所有数据库数据存储在 Merkle-DAG 中,这使其能够支持许多独特的特性,包括数据库本身的 Git 类功能、分支、差异和合并以及远程功能(包括推送、拉取和克隆)。为了支持这些功能,表数据存储在一个独特的、内容寻址的排序索引数据结构中,我们称之为 Prolly Tree。随着时间的推移,ChunkStore 中的块可能会变得未被引用。未被引用的数据是任何无法从当前分支、标签或远程引用中访问到的数据。本文探讨了之前的垃圾回收行为以及基于会话的垃圾回收的实现细节和未来改进。

云原生技术

Mesh VPN 解决方案如何修复 Kubernetes 网络问题
这是我们关于 Kubernetes 安全风险系列文章的第二部分。防火墙和传统的 VPN 并非为 Kubernetes 而构建。我们将探讨 mesh VPN 解决方案和零信任网络如何使 Kubernetes 更易于管理和更安全,而不会带来所有麻烦。

在持续数字化转型时代,我们应该重新发明什么?
当技术不再孤立发展,开始融合成更强大的力量时会发生什么?创新之间的界限正在消失,融合成一个广阔的、不断发展的数字领域。在这个现实中,技术不再是独立存在的……它们相互交叉、相互增强,创造了一个令人兴奋且难以预测的新的转型时代。本文探讨了在持续数字化转型时代,技术发展加速与基础设施访问不均之间的矛盾,以及云原生技术如何成为更具包容性的数字未来的关键推动力量。同时,文章也指出了云原生技术自身带来的挑战,例如日益增长的复杂性,并提出了自动化、人工智能和智能云原生运维等解决方案。

亚马逊的文档文化
本文探讨了亚马逊独特的文档使用文化。作者分享了基于文档的会议如何使亚马逊受益,并指出了改进领域。亚马逊的会议通常从阅读文档开始,这确保了所有参与者都了解了会议的背景信息,并减少了会议中不必要的解释和提问。这种方法虽然需要良好的写作能力,并可能存在一些局限性(例如,查找文档和追踪服务历史的难度),但它也带来了一些显著的优势,例如降低了沟通障碍,提高了效率,并方便了远程办公。作者认为,这种文档为中心的会议方式对大多数组织都具有借鉴意义。

GitHub Actions 的痛点
作者在过去两周重写了他们的 GitHub Actions CI 脚本,这是他们第三次重做 CI 设置。他们的 CI 非常复杂,包括合并队列、多个运行器(自托管、blacksmith.sh、GitHub 托管)、Rust 构建、Docker 镜像和大量的集成测试。文章详细描述了在使用 GitHub Actions 过程中遇到的各种问题,例如强制执行状态检查与合并队列的奇怪方法、令人困惑的安全模型、Docker 与 GitHub Actions 的糟糕组合以及使用 YAML 开发工作流的挑战。作者分享了解决这些问题的经验,并表达了对 GitHub Actions 未来改进的期望。

从零构建容器镜像 — Danish Prakash
本文深入探讨了容器镜像的内部机制,通过从零构建一个简单的“hello world”镜像,解释了OCI镜像的四个核心组件:层、配置、清单和索引。文章详细介绍了如何创建层(文件系统变更集)、配置容器运行方式、使用清单定位层和配置,以及索引如何管理多个镜像。此外,文章还比较了基于scratch和alpine base image构建镜像的区别,并演示了如何使用podman加载和运行构建的镜像。

代码格式化的艺术
现代编程语言都需要代码格式化工具来使代码美观一致。格式化工具是源代码转换工具,它解析源代码并将生成的 AST 以规范的形式重新打印,从而规范化空格和可选的语法结构。它们消除了匹配缩进和括号放置以符合样式指南的繁琐工作。文章深入探讨了代码格式化的复杂性,特别是处理抽象语法树(AST)、字符宽度计算以及高效的布局算法等方面,并介绍了一种基于 DOM 的方法来构建代码格式化器。

代码是新的无代码
本文是一篇客座文章,作者是 GenSX 的创始人兼首席执行官 Evan Boyle。文章认为,随着 AI 在代码编写和解释方面的进步,以及 React 等组件化编程模型的普及,代码本身正变得比以往任何时候都更容易上手,从而超越了无代码工具的局限性。文章比较了基于图的无代码自动化工具(例如 Make、Zapier、n8n)和基于树的代码自动化方法,指出后者在处理复杂流程时的优势。作者建议,利用 AI 代码助手(例如 GitHub Copilot、Cursor 和 Claude)结合 GenSX 等组件化框架,可以实现一种“对话驱动开发”模式,让更多人能够通过简单的自然语言描述来构建软件,而无需深入学习编程语法。

使用 Ollama 和 Kibana 在本地测试 DeepSeek R1 的 RAG 功能
这篇博文介绍了如何在本地运行 DeepSeek 实例,并将其与 Kibana 连接起来,以使用其检索增强生成(RAG)功能。文章涵盖了使用 Ollama 进行本地推理的设置,包括裸机和容器两种方法,并演示了如何使用 curl 进行测试以及如何将 Ollama 连接到 Kibana。此外,文章还探讨了 DeepSeek R1 在 RAG 中的优缺点,并通过一个示例展示了其在处理具有挑战性问题时的能力和局限性。

AI

OpenAI 的新音频模型,但我们能依赖它们多少?
OpenAI 今天发布了几个新的与音频相关的 API 功能,包括文本转语音和语音转文本。这些都是非常有前景的新模型,但它们似乎仍然存在意外(或恶意)指令遵循的风险。文章详细介绍了 gpt-4o-mini-tts、gpt-4o-transcribe 和 gpt-4o-mini-transcribe 三个模型,并分析了其潜在风险,指出将数据和指令混合仍然是大型语言模型的致命弱点。

如何使用 Anthropic MCP 服务器与开放式 LLMs、OpenAI 或 Google Gemini
本文介绍如何使用 Anthropic 提出的开放标准模型上下文协议 (MCP) 服务器,结合任何开放式大型语言模型 (LLM)、OpenAI 或 Google Gemini 来构建 AI 智能体。文章以一个简单的命令行界面 (CLI) 智能体为例,演示了如何通过 MCP 服务器控制和交互 SQLite 数据库,并详细讲解了MCP协议的构成要素以及代码实现细节。

从 Cline 看 prompt 工程
本文介绍了 Anthropic 的 prompt 工程指引,并分析了 Cline 的系统提示词。文章详细阐述了如何编写清晰直接的 prompt,提供示例,使用 XML 标签,指定人设,预填充回答,以及链式使用 LLM 等技巧,并结合 Cline 的实际应用,深入探讨了 prompt 工程在 LLM 应用开发中的实践。

深入探讨 MCP 和 AI 工具的未来
本文探讨了模型上下文协议 (MCP) 的作用、它如何改变 AI 与工具的交互方式、开发人员已经用它构建了什么以及仍需解决的挑战。MCP 是一种开放协议,允许系统以可跨集成推广的方式为 AI 模型提供上下文。它定义了 AI 模型如何调用外部工具、获取数据和与服务交互。本文还探讨了 MCP 的一些用例,包括开发人员为中心的工作流程和使用大型语言模型客户端的新体验,并展望了 MCP 生态系统的未来可能性,例如托管和多租户、身份验证、授权、网关、MCP 服务器的可发现性和可用性、执行环境、标准客户端体验以及调试等。

自主式 AI 和 MCP 生态系统
本文介绍了自主式 AI 和 AI 代理的概念,以及如何通过模型上下文协议 (MCP) 与大型语言模型 (LLM) 和外部系统进行交互。文章详细解释了 AI 代理如何通过工具调用与 LLM 协同工作,并利用 MCP 生态系统实现与各种 API、数据库和开发环境的无缝集成,最终提高工作效率。

Claude 现已支持网络搜索
Claude 现已支持网络搜索,以提供更及时、更相关的回复。借助网络搜索功能,Claude 可以访问最新的事件和信息,从而提高其在需要最新数据的任务中的准确性。Claude 将网络信息整合到回复中时,会提供直接引用,方便您轻松核实来源。Claude 会以对话的形式处理和提供相关的来源,而无需您自己查找搜索结果。此增强功能通过实时洞察扩展了 Claude 广泛的知识库,从而提供基于最新信息的答案。

流行工具与项目

google/osv-scanner
Vulnerability scanner written in Go which uses the data provided by https://osv.dev

cloudwego/hertz
Go HTTP framework with high-performance and strong-extensibility for building micro-services.

rs/zerolog
Zero Allocation JSON Logger

sinclairtarget/git-who
Git blame for file trees

openbao/openbao
OpenBao exists to provide a software solution to manage, store, and distribute sensitive data including secrets, certificates, and keys.

redis/go-redis
Redis Go client

cloudnative-pg/cloudnative-pg
CloudNativePG is a comprehensive platform designed to seamlessly manage PostgreSQL databases within Kubernetes environments, covering the entire operational lifecycle from initial deployment to ongoing maintenance

hashicorp/nomad
Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.

kubernetes-sigs/external-dns
Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services

kubevirt/kubevirt
Kubernetes Virtualization API and runtime in order to define and manage virtual machines.

helm/helm
The Kubernetes Package Manager

go-resty/resty
Simple HTTP, REST, and SSE client library for Go

moby/moby
The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

milvus-io/milvus
Milvus is a high-performance, cloud-native vector database built for scalable vector ANN search

VictoriaMetrics/VictoriaMetrics
VictoriaMetrics: fast, cost-effective monitoring solution and time series database

nektos/act
Run your GitHub Actions locally 🚀

containers/podman
Podman: A tool for managing OCI containers and pods.

pulumi/pulumi-aws
An Amazon Web Services (AWS) Pulumi resource package, providing multi-language access to AWS

coreybutler/nvm-windows
A node.js version management utility for Windows. Ironically written in Go.

tidwall/gjson
Get JSON values quickly - JSON parser for Go

ollama/ollama
Get up and running with Llama 3.3, DeepSeek-R1, Phi-4, Gemma 3, and other large language models.

AdguardTeam/AdGuardHome
Network-wide ads & trackers blocking DNS server

shirou/gopsutil
psutil for golang


编辑:Tony Bai

编辑主页:tonybai.com

GopherDaily项目:github.com/bigwhite/gopherdaily

Copyright 2019-2024 GopherDaily