给软件开发者准备的优质简报,每日阅读 10分钟。
I returned to AWS and was reminded why I left
我回归AWS——被狠狠提醒了为什么当初要离开
- 作者曾是AWS最早的布道者之一,组织了墨尔本首届AWS活动,狂热支持了约15年,但各种不满逐渐积累,最终关系破裂
- 主要痛点包括:AWS长期不开发官方客户端库依赖社区无偿奉献、DynamoDB体验极差且一天内收到75美元账单、出站流量费用从20美分/GB仅降至9美分/GB仍属天价、计费系统复杂且陷阱众多、IAM权限系统被作者形容为"地狱级噩梦"
- AWS整体复杂度极高,与"省去运维复杂性"的宣传自相矛盾;Lambda启动慢、开发复杂且锁定效应严重;AWS还克隆了Elasticsearch、Redis、MongoDB等开源项目推出OpenSearch、Valkey、DocumentDB,遭到社区以SSPL等防御性许可证反击
- 作者多年前已迁移大部分业务,仅保留Route53域名、S3备份和WorkMail邮箱;最近为测试Claude on Bedrock性能以及租用192核1TB内存的高性能机器重新登录AWS
- 使用高性能EC2实例约3小时后,AWS因"疑似安全漏洞"冻结账户,导致WorkMail商业邮箱完全瘫痪、无法创建任何资源
- 非高级支持用户需等待24小时回复,但实际等待超过3天仍无实质解决,作者最终决心彻底迁移剩余服务并永久告别AWS
Using Claude Code: The unreasonable effectiveness of HTML
为什么我选择用 HTML 而非 Markdown 与 Claude Code 协作
- 信息表达力更强:除基本文档结构外,HTML 还能呈现表格、CSS 样式、SVG 插图、代码片段、交互控件、流程图、画布图形等,几乎没有 Claude 能读取但无法有效用 HTML 呈现的信息类型;缺乏这些能力时,Claude 只能退而求其次用 ASCII 图表或 Unicode 字符估算颜色,效果大打折扣
- 阅读和分享体验更佳:超过百行的 Markdown 文件难以阅读,HTML 可通过标签页、插图、链接和响应式设计实现视觉化组织;分享时只需上传至 S3 生成链接即可,不像 Markdown 需要附件形式发送,同事打开链接即可查看
- 支持双向交互:可让 Claude 在文档中添加滑块、旋钮等控件用于调整设计或算法参数,并提供"复制为 Prompt"按钮将修改结果回传给 Claude Code,实现文档与 AI 之间的双向数据流动
- Claude Code 具备独特的内容整合优势:能整合代码目录、MCP 工具(Slack、Linear 等)、浏览器历史、Git 提交记录等多源上下文,生成包含完整图示和结构化内容的文档
- 应用场景涵盖全流程:方案探索(6 种设计并排对比)、代码 PR 审查(带差异注解和流程图)、设计原型与动画调试、信息综合报告(速率限制器原理等)、以及针对 Linear 工单或功能开关的自定义编辑器;每种编辑器末尾都应提供"复制为 JSON"或"复制为 Prompt"按钮以便导出
- 实用建议:直接要求"生成 HTML 文件"或"生成 HTML 产物"即可,无需创建复杂技能;HTML 生成耗时约是 Markdown 的 2-4 倍但结果值得;版本控制是主要短板,HTML 差异难以审查;可通过创建设计系统参考文件让 Claude 生成符合个人审美的样式
Meta Shuts Down End-to-End Encryption for Instagram Messaging
Meta关闭Instagram私信端到端加密功能
- Meta于2026年5月8日正式关闭Instagram私信的端到端加密功能,发言人表示选择使用该功能的用户非常少
- 端到端加密意味着除对话双方外,任何人包括政府机构、执法部门甚至Meta本身都无法读取消息内容
- Meta建议需要端到端加密的用户改用WhatsApp,该平台的加密功能默认启用;Facebook Messenger的个人消息也自动启用端到端加密
- 新墨西哥州总检察长曾起诉Meta,指控该公司明知端到端加密会妨碍其检测和举报儿童性剥削内容;2026年3月陪审团判决Meta支付3.75亿美元民事罚款,Meta正在上诉
- 受此变更影响的用户将收到指引,说明如何下载并保存其媒体文件或消息记录,可能需要升级到更新版本的应用
- 同期TikTok也宣布不计划为私信添加端到端加密,理由是需要平衡用户隐私与处理诈骗、骚扰等安全问题的能力
Show HN: Building a web server in assembly to give my life (a lack of) meaning
ymawky:纯ARM64汇编编写的macOS静态文件Web服务器
- 完全使用ARM64汇编语言开发,仅依赖syscall系统调用而不使用任何libc库,采用fork-per-connection(每连接一fork)并发模型
- 仅支持Apple Silicon(arm64)平台,构建需要Xcode Command Line Tools并运行
make命令编译,代码87%为Assembly,遵循GPL-3.0开源协议 - 支持GET、PUT、DELETE、OPTIONS、HEAD五种HTTP方法,可处理Range请求(支持视频拖拽)、HTTP/1.1主机头验证、%十六进制编码解码,并具备MIME类型自动识别
- 文档根目录默认为
www/,空GET /请求自动返回index.html,PUT请求最大支持1GiB上传,采用原子性写入(先写临时文件再重命名)保证数据完整性 - 内置安全防护机制:拒绝超过PATH_MAX(4096字节)的路径、拒绝路径中包含
www/.ymawky_tmp_的请求、检测并阻止路径遍历攻击(阻止..但允许...等合法文件名)、O_NOFOLLOW_ANY拒绝符号链接文件、10秒超时防止slowloris攻击 - 默认监听127.0.0.1:8080,支持自定义端口参数,非数字字符参数可启动单请求调试模式;支持自定义错误页面(存放于
err/目录),已获193个star
Idempotency is easy until the second request is different
幂等性实现的核心:记住第一次请求的完整语义
- 幂等记录需回答三个问题:谁拥有该key?第一次命令的含义是什么?可以重放什么结果?存储内容应包括作用域、操作名、规范命令哈希、执行状态(IN_PROGRESS/COMPLETED/FAILED_RETRYABLE/UNKNOWN_REQUIRES_RECOVERY等)、响应体或资源引用——仅记录key存在是不够的
- 相同key配合不同命令必须返回409冲突:静默重放第一个响应给完全不同操作会掩盖严重客户端bug,客户端以为重试10EUR支付实则得到100EUR的响应,这不是幂等性而是语义重新解释
- 必须用原子插入获取执行所有权:先查后写会导致两个API实例同时看到空记录并都执行操作,
INSERT ... ON CONFLICT DO NOTHING(带唯一约束)是防止并发重复执行的关键 - 下游提供商超时后状态不可推断:进程崩溃于"提供商成功但未记录结果"时,数据库无法得知资金是否已移动,需要操作状态机(RECEIVED→PROVIDER_REQUEST_SENT→PROVIDER_CONFIRMED→COMPLETED/UNKNOWN_REQUIRES_RECOVERY)和基于下游幂等key的恢复机制
- 队列消费者存在相同的幂等性问题:消息重复投递应保证只产生一条ledger entry、一封邮件通知,outbox模式确保事件发布在事务内、inbox模式保证消费者在副作用持久化后才标记消息已处理
- 请求哈希是合约:对规范化后的命令做哈希,忽略字段顺序和空格、统一金额/时间戳格式、排除传输层元数据,但包含语义headers(如API版本)——改变哈希计算方式会导致旧重试被视为不同命令
GrapheneOS fixes Android VPN leak Google refused to patch
GrapheneOS一周内修复Android 16 QUIC连接优化导致的VPN泄漏漏洞
- GrapheneOS在2026050400版本中修复了Android 16的一个严重VPN绕过漏洞,即使"始终开启VPN"和"无VPN阻止连接"功能启用,攻击者仍可泄露用户真实IP地址
- 安全研究员"lowlevel/Yusuf"发现该漏洞源于Android网络堆栈中新引入的QUIC连接关闭优化(registerQuicConnectionClosePayload),允许仅持有INTERNET和ACCESS_NETWORK_STATE标准权限的普通应用通过特权进程system_server直接发送UDP数据包,完全绕过VPN路由限制
- Google安全团队将该漏洞定性为"不会修复(不可行)"和"非安全公告级别",拒绝修补但授权研究者于4月29日公开披露;GrapheneOS随后通过完全禁用该优化彻底消除了攻击向量
- 研究者在搭载Android 16的Pixel 8设备上使用Proton VPN配合VPN锁定模式成功演示该漏洞,设备真实公网IP在VPN保护完全启用的情况下被泄露至远程服务器
- 除VPN修复外,该版本还包含5月安全补丁、hardened_malloc内存分配器改进、Linux内核更新(6.1/6.6/6.12分支)、libpng中CVE-2026-33636漏洞修复及新版Vanadium浏览器
- 标准Android用户可通过ADB禁用close_quic_connection DeviceConfig标志临时缓解,但需开发者权限且该方案可能随Google移除功能标志而失效
Internet Archive Switzerland
互联网档案馆瑞士分部:拓展全球知识保存使命
- 互联网档案馆瑞士分部(Internet Archive Switzerland)于2026年5月6日成立,总部位于瑞士圣加仑的非营利基金会,延续Brewster Kahle三十年前提出的"Universal Access to All Knowledge"(普及所有知识)使命,将在其国家背景下独立运营
- 初始工作聚焦两个核心领域:保护世界各地濒危档案,以及收集和记录生成式AI浪潮;并计划参与2026年11月在巴黎举行的UNESCO会议,探讨濒危档案的保护策略
- 与圣加仑大学计算机科学学院合作开展**"Gen AI Archive"项目**,由Prof. Dr. Damian Borth领导,目标是探索AI模型存档这一新兴的前沿保存领域
- 圣加仑被选中的原因在于其千年的档案与学术传统,Roman Griesfelder(执行董事)表示该地"稳定性与创新精神并存,并深深植根于对文化遗产重要性的深刻理解"
- 加入互联网档案馆、互联网档案馆加拿大分部及互联网档案馆欧洲分部等机构网络,共同构建分布式、有韧性的全球数字图书馆
Incident Report: CVE-2024-YIKES
事件报告:CVE-2024-YIKES
- 供应链攻击链:被入侵的npm包
left-justify窃取开发者凭证,入侵Rust压缩库vulpine-lz4(GitHub仅12星),该库被Python构建工具snekpack(60%含"data"的PyPI包依赖)vendored,最终恶意代码扩散至约420万台设备 - 加密货币挖矿蠕虫
cryptobro-9000在传播过程中意外执行pip install --upgrade,将snekpack升级至3.7.1(迷惑的共同维护者撤回恶意版本),阴差阳错地终结了此次攻击;然而恶意反弹shell恰好在周二激活,但连接的目标服务器已被同一蠕虫入侵而无法响应 - 安全研究员Karen Oyelaran发现攻击是因为她的主机名匹配攻击者设置的触发条件"karen";
vulpine-lz4的真正维护者已中得€230万欧元彩票、在葡萄牙研究山羊养殖,自称"Cargo的2FA应该是可选的" - 根因被归结为"一只叫Kubernetes的狗吃掉了一个YubiKey";助长因素包括npm对小型包仍允许密码认证、Google AI Overview首条结果指向钓鱼网站、Dependabot被恶意安装的volkswagen组件欺骗而自动合并恶意PR
- 讽刺的是,事后补救措施仍停留在backlog:工件签名和强制2FA自2022年Q3就在队列中,审计847个传递依赖的工作量令人却步;CVE编号在事件结束后第六周才分配,而三篇Medium文章和一场DEF CON演讲早已曝光详情