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

GopherDaily

2024-09-22

每日一谚:Start with concrete types first. Let interfaces emerge organically


Go技术生态

Go weak包前瞻:弱指针为内存管理带来新选择
聊聊Go引入Weak pointer

Go encoding/json v2介绍
这篇文章深入探讨了实验性的 go-json-experiment/json 包,该包引入了新的特性和标签,以增强对 Golang 中 JSON 结构序列化的控制。文章讨论了 omitzero 标签,它允许省略值为“零”的字段。此外,nocase 和 strictcase 标签则提供了在反序列化 JSON 字段名称时对大小写匹配的灵活性。文章还解释了 inline 标签,它允许将嵌套结构字段合并到父结构的 JSON 输出中。最后,文章介绍了 unknown 标签,详细说明了如何捕获结构中未明确定义的额外 JSON 字段。文章以希望这些特性能在未来的 Go 版本中整合到标准 json 包中,从而惠及更广泛的开发者社区作为结尾

理解Go内存的魔法
阿尔皮特·乔汉(Arpit Chauhan)撰写的文章《理解 Go 的内存魔法》深入探讨了 Go 编程语言中的内存管理复杂性。文章解释了 Go 的内存模型,包括用于动态分配对象的堆和用于局部变量及函数参数的栈。语言提供了内置函数,如 `new`、`make` 和复合字面量,用于内存分配,并配有自动垃圾回收器,以释放未使用的内存,从而防止内存泄漏。作者还提供了高效内存使用的建议,比如避免内存泄漏、明智地使用切片以及定期对代码进行性能分析。文章旨在帮助 Go 开发者通过有效理解和利用 Go 的内存管理特性来编写高效的程序。

Go依赖注入:编写更好代码的实战技巧
穆弗拉吉·雨果(Mufraggi Hugo)撰写的文章《Go 依赖注入:改善代码的实用技巧》提供了五个关键建议,以增强 Go 开发实践。第一个建议强调为具有函数的结构体定义接口的重要性,以提高代码的可维护性并促进测试。第二个建议提倡将结构体和接口合并,以保持代码的聚焦和可管理性,特别是在处理众多函数时。第三个建议建议在依赖注入中仅注入接口,以实现控制反转,使单元测试变得更加简单,尤其是使用 GoMock 等工具时。文章最后强调了这些实践的总体好处,包括更易维护、可测试和灵活的代码。雨果还邀请读者在评论区分享他们的额外建议和经验。

Hashicorp Vault 架构
HashiCorp 的 Vault 是一个复杂的系统,HTTP 服务器在其中处理请求并与各种引擎交互以进行内部数据管理。这些引擎(例如 SecureBarrier 和 _KV_ 引擎)负责键值对存储和其他特定功能。Vault 的架构包括一个基数树,用于高效地将路径路由到正确的引擎,确保对数据的安全和有序的访问。此外,Vault 采用涉及 Cache 和 BarrierView 等层的存储方案,每个层处理数据的方式不同,无论是添加前缀还是查询数据库。该系统的设计允许可扩展性,从而能够在整个请求和执行过程中创建自定义引擎并管理访问权限。

您需要的最后一个反向代理
本文介绍了一个教程,介绍如何使用 Tailscale(一种安全的网络解决方案)设置反向代理,以将云中的虚拟专用服务器 (VPS) 连接到本地托管的基础设施。作者 Alex Kretzschmar 演示了如何自动启动和配置 DigitalOcean VPS 以作为自托管生态系统的入口点。本教程重点介绍了 Caddy(反向代理)和 Tailscale 的 NAT 遍历技术的使用,该技术无需在本地防火墙上打开端口。作者强调,这种设置允许经济高效地托管需要大存储容量的应用程序,因为它支持使用公开互联网的 VPS 进行远程访问,同时安全地连接到本地存储。

云原生技术

实际上,模块化单体是个好主意
本文讨论了模块化单体式应用的概念,将其作为传统微服务架构的替代方案,特别是对于已发展成为单体式代码库的科技初创公司。它强调了扩展整体式架构时面临的挑战,以及过渡到微服务的常见解决方案,尽管涉及复杂性。作者介绍了模块化单体式应用的概念,它涉及将一个单体式应用构建为一系列模块,每个模块处理一部分业务逻辑,以提高可维护性和可扩展性。文章建议这种方法可以从增量构建系统、分支管理工具和代码隔离实施以及其他技术要求中受益。最终,作者将模块化单体应用视为微服务的潜在垫脚石,而不是微服务的替代品,而是通往更加面向服务的架构的潜在垫脚石。

Vercel 简介,面向开发人员的前端即服务
Vercel 提供前端即服务 (FaaS) 平台,可简化 Web 应用程序前端的部署和操作。通过从 Vercel 的仪表板分叉模板并将代码更改推送到 GitHub 存储库,开发人员可以使用更新的代码自动重新部署他们的网站。该服务利用热模块替换 (HMR) 进行高效更新,并提供预览页面进行测试。此外,Vercel 允许自定义网站的外观和功能,例如替换徽标和实施倒计时功能。对于后端集成,开发人员可以探索 Vercel 的存储集成,包括使用 blob 存储来处理大文件。

Sipeed NanoKVM:RISC-V 粘贴式
Sipeed NanoKVM 是一款紧凑且经济高效的 RISC-V 粘贴式设备,旨在通过网络进行远程控制,即使它所连接的计算机被锁定或关闭。它通过运行自己的专有操作系统来实现这一目标,该操作系统目前没有可用的开源版本,这是 Sipeed 的决定,取决于达到某些销售或社区里程碑。尽管 NanoKVM 具有创新功能,例如内置 OLED 显示屏、与 Tailscale 集成以及支持电源控制和 LAN 唤醒,但由于其软件和硬件的专有性质,NanoKVM 的安全性面临审查。在测试期间,该设备在远程服务器控制方面表现出良好的延迟,但固件仍需要改进,尤其是在流媒体质量和错误修复方面。虽然 Sipeed 已经在发货 NanoKVM,但该公司承认需要进一步开发以充分发挥该设备的潜力。

API 安全最佳实践:保护传输中的数据
由于 API 的普及和相关的网络威胁,API 安全在现代 Web 开发中至关重要。本文强调了保护 API 免受常见 Web 攻击以保护后端应用程序和用户数据的重要性。API 安全的关键实践包括通过 HTTPS 加密通信、验证端点、将 API 隐藏在安全网关后面、实施精细访问控制、速率限制、设置请求正文大小限制、使用标准错误消息、删除默认框架标头、验证和清理用户输入以及使用安全 HTTP 标头。此外,建议集成日志记录、应用程序监控、执行定期代码审计、渗透测试和压力测试,以保持强大的 API 安全性。本文还建议使用安全 Linter、SAST 工具和 API 防火墙作为综合安全策略的一部分。

在云中自动化 Kubernetes 集群的安全性
Cast AI 是一家专门从事 Kubernetes 自动化平台的公司,已将其服务扩展到包括自动化 Kubernetes 安全态势管理 (KSPM)。这项新产品旨在通过提供对 Kubernetes 集群中的错误配置、映像漏洞和合规性问题的实时扫描来解决 DevOps 团队的关键安全问题。此外,KSPM 工具还旨在检测运行时异常并促进修复,例如自动修补节点操作系统。这种安全解决方案的推出凸显了 AI 在网络安全中的重要性,尤其是在识别和理解先发制人地解决潜在威胁的流程方面。

AI

流式处理 LLM API 的工作原理
本文档探讨了来自各种托管 LLM 提供商的流式语言模型 (LLM) API 的工作原理。它揭示了这些 API 遵循一般模式,返回带有 'content-type: text/event-stream' 标头的数据,并使用由 ' '.每个数据块都包含一个 'data:' JSON 行,有些数据块还包含一个具有事件类型的 'event:' 行。本文档提供了如何使用 curl 和 HTTPX 等工具与这些 API 交互,以及如何使用不同编程语言处理流事件的示例。它还包括有关该主题的相关资源和讨论的集合。

流行工具与项目

encoredev/encore
开发平台,用于构建具有声明式基础设施的健壮类型安全的分布式系统

livekit/livekit
WebRTC 的端到端堆栈。SFU 媒体服务器和 SDK。

iawia002/lux
👾 快速简单的视频下载库和用 Go 编写的 CLI 工具

go-task/task
用 Go 编写的任务运行器 / 更简单的 Make 替代方案

techschool/simplebank
后端大师课:用 Go 构建一个简单的银行服务

AdguardTeam/AdGuardHome
全网广告和跟踪器阻止DNS服务器

ossf/scorecard
OpenSSF 记分卡 - 开源的安全健康指标

konstructio/kubefirst
Kubefirst 开源平台

ollama/ollama
启动并运行 Llama 3.1、Mistral、Gemma 2 和其他大型语言模型。

gohugoio/hugo
世界上最快的网站构建框架。

fleetdm/fleet
面向 IT、安全和基础架构团队的开源平台。(Linux、macOS、Chrome、Windows、云、数据中心)

caddyserver/caddy
快速且可扩展的多平台 HTTP/1-2-3 Web 服务器,具有自动 HTTPS

DiceDB/dice
DiceDB 是一个内存中的实时数据库,具有基于 SQL 的反应性。它经过高度优化,可在现代硬件上构建和扩展真正的实时应用程序,同时是 Redis 的直接替代品。

pulumi/pulumi
Pulumi - 任何编程语言🚀的基础设施即代码

containers/podman
Podman:用于管理 OCI 容器和 Pod 的工具。

juanfont/headscale
Tailscale 控制服务器的开源自托管实现

google/gvisor
适用于容器的应用程序内核

XIU2/CloudflareSpeedTest
🌩「自选优选 IP」测试 Cloudflare CDN 延迟和速度,获取最快 IP !当然也支持其他 CDN / 网站 IP ~

slackhq/nebula
一个可扩展的叠加网络工具,专注于性能、简单性和安全性

navidrome/navidrome
🎧☁️ 与 Subsonic/Airsonic 兼容的 Modern Music Server 和 Streamer

zitadel/zitadel
ZITADEL - 身份基础设施,为您简化。


编辑:Tony Bai

编辑主页:tonybai.com

GopherDaily项目:github.com/bigwhite/gopherdaily

Copyright 2019-2024 GopherDaily