GopherDaily

GopherDaily

2024-02-14

每日一谚:Avoid using math/rand, use crypto/rand for keys instead


Go技术生态

Go 1.22的路由增强功能
Go 编程语言为“net/http”包的路由器引入了两个新功能:方法匹配和通配符,它们允许用户将常见路由表示为模式而不是 Go 代码,从而减少了许多项目的依赖性。

在22分钟内了解1.22

13 年后我如何在 Go 中编写 HTTP 服务
作者提供了关于如何在 Go 中编写 HTTP 服务的综合指南,涵盖了服务器和处理程序结构、优化、测试以及跨不同类型请求的常见工作的应用等主题。

Golang 中的解耦 Struct 标签
本文讨论了 Golang 中 struct 标签的局限性,重点介绍了两种解耦 struct 标签的方法:使用相同的结构或分离模型,这需要映射模型,或者使用 Golang 类型转换,避免手动映射并保持模型分离。

Go 可组合迭代器函数
Nicolas A Perez 讨论了 Go 的未来,对函数迭代器的引入表示兴奋,函数迭代器是一项新功能,允许在任何函数迭代器上使用范围循环,以及如何使用此功能来流水线数据并提高可通信性和性能。

掌握Go编程中的开/闭原理
开/闭原则(OCP)是面向对象编程的一个基本概念,是增强软件应用程序灵活性和可维护性的关键因素,可以在使用接口的Go编程中有效实现。

在 Fly.io 上从 S3 切换到tigris
负责副项目 Giftyweddings.com 的 Ben Hoyt 将他的网站从 Amazon S3 切换到 Tigris on Fly.io(一种与 S3 兼容的存储服务),并成功地将他的网站从 S3 切换到 Tigris,尽管有一些小的代码更改和一些意外的行为。

深入了解 Web RTC 或自行编写 SFU
该文档讨论了作者在 Golang 中编写SFU服务器,该服务器使用 Web RTC 在浏览器或应用程序之间传输流数据,并解释了交换会话描述 (SD) 和网络连接信息 (ICE) 候选服务器的过程,以及信号和协调器服务器在控制传入和传出流方面的作用。

Go 中指针的综合指南
本文提供了 Go 编程语言中指针的综合指南,解释了它们的基础知识、内存管理、引用传递、指针算术、数组、函数和高级概念,以及使用它们的最佳实践。

CPU亲和力:因为即使是单个芯片也是不均匀的
本文讨论了 CPU 关联性的概念,这是一种允许用户将进程或线程分配给特定计算资源的技术,以及它的优势,例如低延迟线程间通信,尤其是在多线程应用程序中。

MACH 架构:实用指南
Ashan Fernando 提供了有关 Mach 架构的实用指南,这是一套用于构建敏捷、以客户为中心且面向未来的软件应用程序的设计原则,使用 Bit 组件创建架构的简单版本。

云原生技术

(差不多)在一家初创公司运行基础设施 4 年后,我认可或后悔的每一个基础设施决定
作者分享了他在一家初创公司运行基础设施四年的经历和遗憾,包括做出诸如选择 AWS 而不是 Google Cloud、使用托管数据库、使用 AWS 高级支持以及不采用身份平台等决策。

Kubernetes 管理前端的内部工作原理——软件工程师的观点
本文探讨了 Kubernetes 管理前端的架构,重点介绍了它们的构建和部署方式,并为尝试从自己的 Kubernetes 前端开始的开发人员提供了简要概述。

Anatomy of a CVE
The article "Anatomy of a CVE" by Simone Ragonesi and Sara Trappetti explores the recent discovery of four vulnerabilities in the runc container infrastructure by Snyk Security Labs, which can allow for container breakout, and highlights the importance of understanding these vulnerabilities for effective security.

Understanding Multi-Stage Builds in Docker: Streamlining Python App Deployment
The article "Understanding Multi-stage Builds in Docker: Streamlining Python App Deployment" by Durgesh Samriya discusses the advantages of multi-stage builds for Python applications, including reduced image size, enhanced security, and improved build times.

设计数据密集型 App Notes
本文讨论了数据模型和查询语言在软件开发中的重要性,重点介绍了三种主要的数据模型:关系模型、文档模型和基于图形的数据模型,以及它们对不同类型的数据和关系的适用性。

DataDog vs New Relic - 真正的赢家 [2024 指南]
本文比较了 Datadog 和 New Relic(流行的监控工具)在应用程序监控、日志管理、基础设施监控和 OpenTelemetry 支持等功能上的表现,发现 Datadog 提供了对数据的更精细控制和对应用程序性能的更好洞察,而 New Relic 提供了更简单的用户体验和更好的真实用户监控。

何时需要细粒度授权中的属性?
Aserto 首席执行官 Omri Gazitt 讨论了在细粒度授权中使用属性与关系,强调虽然关系可以成为管理复杂性的强大工具,但在某些情况下,属性仍然是必需的,例如用户终止开关、数值表达式评估和环境属性。

Terraform 获得模块测试、资源管理器等的升级
HashiCorp 团队宣布了对 Terraform Cloud 和 Enterprise 的升级,包括测试集成模块发布、用于工作区可见性的资源管理器、基于不活动的空灵工作区销毁、优先级变量集、UI 中的资源替换、运行触发器的自动应用以及 Terraform 版本选择器中的版本约束。

AI

Meta 的 AI 主管 Yann LeCun 谈 AGI、开源和 AI 风险
Meta 首席 AI 科学家 Yann LeCun 讨论了实现通用人工智能 (AGI) 的挑战、Meta 开源方法的优点以及 AI 的潜在生存风险。

部署 LLM 之前要考虑的 5 件事
本文讨论了部署大型语言模型 (LLM) 的利弊,该技术可以自动响应客户查询,包括其潜在的法律风险、成本、维护和测试程序,以及提供可靠答案的能力。

如何使用 OpenAI Whisper 和 OpenFaaS 转录音频
本教程演示了如何使用 OpenAI 的 Whisper 模型和 Python 函数将音频文件转录为文本,使用安装在 K3s 集群上的 NVIDIA GPU 和 OpenFaaS 的 GPU 加速,或更常见的 CPU 推理。

未来是人工智能,但人工智能存在软件交付问题
本文讨论了人工智能 (AI) 在软件开发中应用的挑战和机遇,强调了持续集成和交付 (CI/CD) 实践、自动化测试以及与业务目标保持一致的必要性,以有效地交付 AI 驱动的软件。

流行工具与项目

hashicorp/terraform
Terraform 使你能够安全、可预测地创建、更改和改进基础结构。它是一种源代码可用的工具,可将 API 编码为声明性配置文件,这些文件可以在团队成员之间共享、视为代码、编辑、审查和版本控制。

spf13/cobra
现代 Go CLI 交互的指挥官

k8sgpt-ai/k8sgpt
让每个人都能获得 Kubernetes 的超能力

hashicorp/vault
用于机密管理、加密即服务和特权访问管理的工具

helm/helm
Kubernetes 包管理器

valyala/fasthttp
Go 的快速 HTTP 包。针对高性能进行了调整。热路径中的内存分配为零。比 net/http 快 10 倍

grpc/grpc-go
gRPC 的 Go 语言实现。基于 HTTP/2 的 RPC

hashicorp/terraform-provider-aws
Terraform AWS 提供商

hyperledger/fabric
Hyperledger Fabric 是一个企业级许可分布式账本框架,用于开发解决方案和应用程序。其模块化和多功能设计可满足广泛的行业用例。它提供了一种独特的共识方法,可在保护隐私的同时实现大规模性能。

hashicorp/consul
Consul 是一种分布式、高度可用且可感知数据中心的解决方案,用于跨动态分布式基础架构连接和配置应用程序。

google/wire
Go 的编译时依赖关系注入

tektoncd/pipeline
云原生 Pipeline 资源。

golang/go
Go 编程语言

bluenviron/mediamtx
即用型SRT / WebRTC / RTSP / RTMP / LL-HLS 媒体服务器和媒体代理,允许读取、发布、代理、录制和播放视频和音频流。

projectcalico/calico
云原生网络和网络安全

kubernetes-sigs/kustomize
自定义 kubernetes YAML 配置

marcel-dempers/docker-development-youtube-series

dagger/dagger
应用程序交付即随处运行的代码

IBM/sarama
Sarama 是 Apache Kafka 的 Go 库。

uber-go/zap
Go 中极快、结构化、分级的日志记录。

Shopify/toxiproxy
⏰ 🔥 用于模拟混沌和弹性测试的网络和系统条件的 TCP 代理

influxdata/telegraf
插件驱动的服务器代理,用于收集和报告指标。

hashicorp/packer
Packer 是一种工具,用于从单个源配置为多个平台创建相同的计算机映像。

bitnami-labs/sealed-secrets
用于单向加密密钥的 Kubernetes 控制器和工具

argoproj/argo-rollouts
Kubernetes 的渐进式交付


编辑:Tony Bai

编辑主页:tonybai.com

GopherDaily主页:gopherdaily.tonybai.com

GopherDaily归档:gopherdaily.tonybai.com/more

GopherDaily项目:github.com/bigwhite/gopherdaily

订阅GopherDaily

取消订阅GopherDaily

另一个邮件列表:https://gopher-daily.com

Copyright 2023 GopherDaily