Meta正面临指控,源于最近的诉讼和美国调查报告,称其能够访问用户的加密WhatsApp聊天记录——尽管该平台声称实现了端到端加密。该诉讼由Quinn Emanuel Urquhart & Sullivan提起,基于匿名举报人的说法,声称Meta可以访问“几乎所有”用户通信。 Meta强烈否认这些指控,称其“绝对不属实”,并暗示该诉讼是为了支持NSO Group,一家最近在WhatsApp提起的案件中败诉的间谍软件公司。Meta正在寻求对Quinn Emanuel的制裁,指控其进行宣传噱头。 专家对此表示怀疑,指出在大型公司内部掩盖此类漏洞的难度。虽然WhatsApp会收集用户元数据,但访问消息*内容*的核心说法存在争议。美国商务部的调查尚未得到证实。Meta坚持WhatsApp的加密是安全的,并承诺捍卫用户隐私。
## htmx Server-Sent Events (SSE) 扩展总结 htmx-ext-sse 扩展通过连接到服务器发送事件 (SSE) 流,实现网页的实时更新。SSE 是 WebSockets 的一种轻量级替代方案,通过标准的 HTTP 连接运行 – 使其防火墙友好。与 WebSockets 不同,SSE 是**单向的**(仅服务器到客户端)。 **主要特性与属性:** * **`hx-ext="sse"`**: 在 HTML 元素上启用扩展。 * **`sse-connect="<url>"`**: 指定 SSE 服务器的 URL。 * **`sse-swap="<message-name>"`**: 定义哪个服务器消息更新元素的内容。 * **`hx-trigger="sse:<message-name>"`**: 基于 SSE 消息触发 HTTP 回调。 * **`sse-close=<message-name>`**: 收到特定消息时,优雅地关闭连接。 **安装:** 可以通过 CDN 或 npm 轻松添加,确保在加载扩展*之前*加载 `htmx.org`。 **接收事件:** SSE 消息包括事件名称和数据。使用 `sse-swap="message"` 处理未命名的事件,并使 `sse-swap` 值与服务器的事件名称匹配以处理命名的事件。 可以在同一元素或子元素上监听多个事件。 该扩展还包括自动重连逻辑以提高可靠性,并分发自定义事件以进行生命周期管理(连接打开、错误、消息、关闭)。 提供了一个演示服务器用于测试。 此扩展取代了旧的 `hx-sse` 属性,现有用户需要迁移。
## 常春藤:从消遣到高精度数学 出于对一个有趣项目的需求,作者用Go语言创建了常春藤,一种伪APL语言,它意外地演变成了一个用于高级数学计算的工具。尽管最初比其他APL衍生语言弱,但常春藤采用精确算术(大整数和有理数)被证明出奇有用,甚至被用于移动应用程序。 Go语言库中高精度浮点数的出现带来了新的挑战,促使作者深入研究如何以扩展精度计算超越函数,如正弦和余弦。现有的算法不足以满足需求,作者不得不重新审视和完善数学概念。 常春藤的实现利用了泰勒级数和参数归约等技术,最终采用了Spouge近似(由Causley改进)来计算Gamma函数。这涉及到复杂的系数计算,由常春藤的基于数组的结构高效地处理。尽管承认存在不完美之处以及优化参数方面仍然存在疑问,作者还是取得了令人印象深刻的精度——Gamma函数超过48位小数——展示了常春藤进行高精度数学运算的能力。这个项目源于对有趣编码练习的渴望,最终推动了语言所能达到的极限。
## 使用被动安全 API 迁移到微服务 迁移到微服务架构需要构建“被动安全”的 API——设计成能够优雅地处理故障,而不会造成数据损坏或重复。这意味着确保请求要么精确一次完成,要么进入清晰可见的可恢复状态。 作者通过实现一个用于处理订单的端点来应对这一挑战,最初面临外部 API 调用、重试和潜在中断的问题。解决方案涉及几个关键步骤: 1. **异步处理:** 使用消息代理将非关键任务(如通知)卸载到后台工作进程。 2. **事务性分阶段作业(消息输出箱):** 通过在事务*内*将消息插入数据库表来保证消息传递,然后由单独的工作进程可靠地发布它们。 3. **幂等性:** 使用客户端提供的唯一“幂等性密钥”来确保可以安全地重试请求,而不会产生意想不到的副作用。这涉及跟踪请求阶段和恢复点。 4. **消息收件箱:** 使用单独的表跟踪已处理的消息 ID,以去重消息。 这种方法确保在数据库事务中不会发生外部副作用,至少一次传递消息,并安全地处理重试。最终,这种设计创建了一个健壮、有弹性的 API,能够在分布式微服务环境中处理故障并保持数据一致性。为长期可维护性,清理旧的幂等性密钥和处理废弃的请求也至关重要。
启用 JavaScript 和 Cookie 以继续。
Please provide the content you want me to translate. I need the text to be able to translate it to Chinese.
经过十年的 Linux 使用和广泛的“发行版跳跃”——从 Mint 到 Arch,Gentoo(以及随之而来的倦怠!),Fedora,最后是 NixOS——作者开始探索声明式发行版的世界。 最初,作者曾认为 Nix 只是一个 DevOps 工具,但随着项目依赖管理和系统软件包漂移带来的挫败感日益增加,作者改变了想法。 Nix 能够创建隔离的、按项目划分的环境(解决了 Ruby 版本问题),并且其声明式方法——通过配置文件定义*期望*的系统状态,而不是查询当前状态——被证明极具吸引力。 这促使作者对 Guix 产生了兴趣,Guix 是一个使用 Guile Scheme 进行配置的 Nix 分支。 尽管之前因稳定性问题而犹豫不决,但 Guix 1.5.0 的改进,特别是对 KDE 的一流支持,促使作者尝试使用它,并记录了安装和初步体验。 声明式系统所提供的控制、可重复性和版本控制是其核心吸引力所在。
这个轶事突显了与遗留系统合作的令人沮丧的现实,以及向后兼容性的令人惊讶的怪癖。作者的任务是在IBM System 370的黑白调试器中添加颜色,于是开始寻找相关的文档——在一堆文档中找到一本实体文件夹。
搜索揭示了一种囤积信息的职场文化(特别是同事马修对手册的保护态度),这种文化源于害怕成为找不到所需资源的人。最终,文档被找到,显示`WRTERM`宏*确实*支持颜色,但只有黑色(默认)或红色——而且仅当终端配备了罕见的“双色带”时。
这个故事说明,看似简单的改进可能会受到几十年来的设计选择和早期计算硬件的限制,同时还要应对在互联网时代之前获取信息的实际挑战。