2024-11-27

44 篇热帖

1. California's most neglected group of students: the gifted ones (www.latimes.com)

加州最被忽视的学生群体:天才学生

学校通常致力于满足不同学生的特殊教育需求,如学习障碍者、英语学习者、行为问题学生或贫困家庭学生,但广泛忽视了一个重要群体:学术天才学生。过去15年来,美国许多学区已取消或缩减天才教育项目,这一趋势在2021年因BLM运动加剧,因学校面临识别黑人和拉丁裔天才学生比例远低于白人和亚洲学生的种族不平等问题。

天才项目的原始目的是满足有强烈、不规则学习模式的学生需求,但后来在家长竞争中丧失了初衷。天才标签成为声望和优势的象征,天才班往往拥有更丰富的课程和资源,变成了高成就者的课堂,而非真正天才学生的学习环境。这导致天才项目功能扭曲,忽视了天才学生的实际需求。

天才儿童常表现出异步发展现象,即在某些领域超常,但在其他方面挣扎。例如,一个三年级学生可能具有11年级的阅读能力,但社交技能类似幼儿园孩子。他们难以与同龄人连接,并因课程节奏过慢而对学校失去兴趣。作者分享了个人经历:小学时因课程重复感到无聊,行为问题频发;尝试跳级失败,问题不是内容而是学习节奏。

历史上,天才教育项目曾受关注,如“MGM”(智力天才未成年人)项目后更名为“GATE”(天才与天赋教育)。但项目定义模糊,有时成为针对高成就者的学校或充实教育,教师培训不足,效果参差不齐。天才标签的争夺掩盖了其本质需求。

种族问题在识别天才儿童中起作用,尽管标签基于客观标准,但存在偏见。解决方案应是消除识别偏见,而非取消项目。洛杉矶联合学区保留了天才教育,提供多样化项目,但因有色人种学生比例不足,曾调整入学要求后又反向调整。标准应聚焦于学生是否需要并能够快速通过学术材料。

加州政策不强制学校提供天才项目,并在2013年停止资助,导致学校缺乏动力保留它们。完全取消项目不是解决方案,向所有孩子开放也可能降低课程节奏,违背初衷。差异化教学——教师根据学生需求调整课程——虽理想,但在大班级中难以实施。一个成功案例是公共学校的小型项目,允许学生选择学习方式(如写报告、电影、戏剧等),展示所学,但这依赖天才教师,难以复制,该项目现已不存在。

总之,天才学生需求被忽视,项目取消源于目的扭曲和种族不平等。需改进识别标准和教学方法,而非废除支持体系。

2. I Didn't Need Kubernetes, and You Probably Don't Either (benhouston3d.com)

《我不需要Kubernetes,你可能也不需要》内容总结

核心观点

作者认为Kubernetes虽然常被视为容器编排的终极方案,但实际使用中存在成本高昂、管理复杂、过度配置等问题。通过迁移至Google Cloud Run,实现了更简单、更具成本效益且易于管理的基础设施方案。

迁移背景

  • 初始阶段:2013年运营Clara.io(3D编辑平台),使用OVH裸机服务器,存在硬件故障风险且维护工作繁重。
  • 选择Kubernetes:2018年为重建平台Threekit.com评估方案时,正值Kubernetes成为行业主流(Azure、AWS、Docker同期支持),故采用Kubernetes进行托管计算。

放弃Kubernetes的原因

  1. 成本超支
    • 需配置冗余管理节点的基础集群,基础设施成本高。
    • 自动扩缩容缓慢,必须过度预置资源以保证可用性,导致资源浪费。
  2. 处理大量任务困难
    • 内置调度器和Argo在负载下扩展性差或过于复杂。
  3. 过度复杂
    • 功能丰富但使简单任务流程冗长,需要至少一名专职Kubernetes运维工程师。

采用Google Cloud Run的优势

  • 成本效率:按请求使用的CPU和内存计费,支持缩容至零;示例项目每月50万次访问仅需4美元托管费。
  • 快速可靠扩缩容:数秒内完成扩缩容,无需过度预置资源。
  • 无管理开销:基于Google Borg构建,无需管理Kubernetes集群。
  • 简化异步任务:Cloud Run Tasks支持每个作业执行10,000个任务,自动重试且无需管理基础设施。

Kubernetes的潜在缺陷

  • 集群锁定:使用Kubernetes特有功能后难以整合集群外部资源,跨数据中心或专用硬件扩展复杂且成本高。

常见问题解答

  • 编排:使用GitHub Actions CI/CD,通过工作流和矩阵策略管理多服务构建与部署。
  • 存储:使用托管数据库或Cloud Storage处理共享数据。
  • 服务间通信:异步通信用发布-订阅模式;同步通信使用专用域名。
  • 安全性:Cloud Run支持内部服务;公共服务通过JWT验证路由。

误解澄清

  • 云供应商锁定:基于Docker的架构迁移至AWS等其他云约需一周,实际因云服务差异较小,企业较少更换供应商。
  • 与Kubernetes关系:Cloud Run使用Knative接口但运行在Borg上,本质是提供简化PaaS接口,用户无需直接使用Kubernetes或Borg。

现有痛点

  • 服务名称管理:缺乏本地与服务器环境统一的服务名称抽象层。
  • 本地任务模拟:无法在本地模拟Cloud Run Tasks环境进行开发测试。

总结

作者认为对于追求敏捷、简化和成本效益的项目,Cloud Run在成本、速度、可扩展性和简易性上优势明显。而Kubernetes可能更适合大型企业,但其复杂性和成本对多数项目未必必要。

4. Hacker in Snowflake extortions may be a U.S. soldier (krebsonsecurity.com)

核心事件
云存储公司Snowflake因客户仅使用用户名密码(未启用多因素认证)保护账户,导致多家企业数据遭窃。已逮捕两名嫌疑人(加拿大籍Connor Riley Moucka与美籍John Erin Binns),但核心黑客"Kiberphant0m"仍在逃,并持续威胁受害者。

嫌疑人身份线索

  • 通过跨平台(BreachForums、Telegram、Discord)的聊天记录分析,Kiberphant0m疑似为一名美国陆军士兵,近期曾驻扎韩国。
  • 其关联账号"Buttholio"在2023年游戏Discord中自称:"我是美军士兵,购买游戏于美国,但轮调后使用亚洲服务器"。
  • 另一关联账号"Reverseshell"在2022年Telegram群中声明为美军士兵,并分享军装照片,提及使用"军事基地签约网络"。

作案手法与威胁

  1. 数据窃取:利用泄露的Snowflake凭证访问企业数据,包括AT&T、Verizon等电信公司,窃取通话记录、个人信息等。
  2. 勒索施压:要求企业支付赎金删除数据,AT&T曾支付37万美元。在同伙Moucka被捕后,Kiberphant0m公开威胁泄露特朗普、哈里斯等政要通话记录,并声称拥有美国国家安全局(NSA)数据架构。
  3. 犯罪活动:出售DDoS僵尸网络(如Shi-Bot)、SIM劫持服务,以及企业/政府服务器访问权(如美国防承包商、越南政府机构)。

关联身份与证据

  • 多个网络身份(Kiberphant0m、Buttholio、Reverseshell、Vars_Secc、Proman557等)通过Telegram ID、论坛活动相互关联。
  • 使用韩国电信网络,曾在Hackforums、Exploit等论坛出售恶意软件,2023年因违反"不攻击俄罗斯实体"规则被俄语论坛封禁。
  • 自称通过HackerOne提交漏洞获得奖金,涉及Reddit、美国国防部等机构。

当前状态

  • Kiberphant0m否认为美军士兵,声称驻韩经历是"虚构人设",并自信"不会被抓获"。
  • 美国陆军、NSA及HackerOne尚未公开回应。调查机构Unit 221B协助梳理身份关联。

(注:总结严格基于原文信息,未添加推测或外部内容。)

5. Launch HN: Human Layer (YC F24) – Human-in-the-Loop API for AI Systems
6. The capacitor that Apple soldered incorrectly at the factory (www.downtowndougbrown.com)

苹果Macintosh LC III工厂焊接错误的电容器

问题背景

苹果的Macintosh LC III(1993年初至1994年初生产,面向教育市场)及其衍生型号Performa 450、460、466和467,被传闻存在电容器反向安装的问题。尽管苹果未召回,社区对此有怀疑。

作者调查与发现

作者购买了一台Performa 450,检查电路板后确认问题。在电源相关区域,三个表面贴装电解电容器C19、C21和C22均被反向安装:负极向上,与PCB丝印标记的正极在底部一致。原装电容器已泄漏,C21尤其严重,损坏了焊膜和铜层。

电路分析与错误确认

  • 电源轨道对应:C19用于+5V,C21用于+12V,C22用于-5V。每个电容器正极连接电源轨道,负极接地。
  • 错误本质:对于-5V轨道,电容器正极应接地,负极接-5V,以确保正电压差(+5V)。但实际安装中,C22正极接-5V、负极接地,导致电容器承受-5V负电压,这违反电解电容器使用规范(正极端电压应高于或等于负极端)。
  • 对比验证:原版Mac LC、LC II及后续型号LC 475均正确安装了电容器(负极接-5V,正极接地),证明LC III为工厂错误。

错误影响与潜在风险

  • 原装电容器容忍性:原装液态电解电容器额定16V,虽受反向-5V损坏,但未引发严重事故,因-5V轨道主要用于RS-422串口,影响有限。
  • 现代替换风险:使用钽电容器替换时,反向安装会导致-5V轨道电压异常(如降至-2.3V)、过电流(达1.3A),可能引发过热、爆炸或起火,并损坏电源供应(-5V轨道额定75mA)。

解决方案与建议

作者强调错误已确认,并呼吁维修者更换电容器时反向安装C22:正极接地,负极接-5V。可通过万用表验证:

  • 断电时,使用连续性测试确认连接。
  • 开机时,测量电容器两端应为+5V(正探针接正极,负探针接负极)。

此错误在多数在线维修指南中被忽略,需提高 awareness 以确保安全修复。

7. Show HN: TeaTime – distributed book library powered by SQLite, IPFS and GitHub (github.com)

TeaTime 是一个基于 IPFS、SQLite 和 GitHub 构建的完全静态的分布式图书库系统。其前端实例自动更新并托管在 Netlify 和 GitHub Pages 上。

核心架构与工作原理

  • 分布式与解耦:Web 应用与其数据库、获取的文件完全分离。
  • 数据库来源:使用标记为 teatime-database 话题的 GitHub 仓库作为数据库源。每个仓库包含一个 config.json 文件,其中指向一个 SQLite 数据库。
  • 查询流程:用户选择数据库后,TeaTime 通过 sql.js-httpvfs 查询远程的 SQLite 文件。数据库中的每一行代表一个图书馆条目,其中包含一个用于从 IPFS 获取对应文件的哈希值列。
  • 高韧性:由于前端是静态站点,数据库由静态文件构成,均可轻松分叉、复制和部署。文件通过 IPFS 分发,增强了系统的健壮性。

主要功能

  • 支持按标题、作者、年份或格式进行搜索。
  • 维护阅读历史,并能在重新打开文件时恢复阅读位置。
  • 支持本地下载文件。
  • 使用 IndexedDB 缓存文件以实现快速加载。
  • 支持拖放文件到 TeaTime 进行渲染。
  • 提供暗黑模式全屏模式
  • 无 Cookie,无登录要求。
  • 完全分布式。

开发与创建数据库

  • 前端开发:TeaTime 是一个 Nuxt.js 应用。可以通过克隆仓库、安装依赖 (npm install) 并运行 (npm run dev) 在本地轻松运行。
  • 创建数据库
    • 简易方法:分叉基于 JSON 的数据库仓库,调整 JSON 文件,GitHub Actions 将自动生成 SQLite 文件并发布到 GitHub Pages。
    • 手动创建:需要遵循示例,生成包含特定模式(id, title, author, year, lang, size, ext, ipfs_cid)的 SQLite 表。
    • 配置与优化:数据库配置在 config.json 中。如果 SQLite 文件过大,可以分割,并建议使用 FTS(全文搜索)。创建后需将仓库发布到 GitHub Pages 并添加 teatime-database 话题。

如何贡献

  • 非代码贡献:分叉此仓库以及你喜欢的数据库仓库。为有用的数据库仓库点赞(star),这会影响它们在 TeaTime 用户界面中的排序,便于其他用户发现优质数据库。
  • 建议通过手动方式(git clone 后添加自己的远程源并推送)进行分叉,以避免直接链接的仓库关系。
9. Show HN: App that asks 'why?' every time you unlock your phone (play.google.com)

Intenty:通过反思引导健康手机使用

核心机制 Intenty 是一款旨在培养正念手机使用的应用。其核心功能是在用户每次解锁设备时显示一个全屏思考提示(nudge),打断无意识的手机查看习惯,将自动化行为转化为有意识的选择。整个过程仅需几秒钟。

主要特点

  • 基于反思而非封锁:与传统应用限制或屏幕时间封锁不同,Intenty 不限制手机功能,而是通过提问引发用户反思使用目的。
  • 8种研究支持的提示类型:包括“意图提示”(说出使用目的)、“必要性提示”、“准备提示”、“数字排毒提醒”、“现实回归提示”(使用5分钟后)、“专注保护”、“减速呼吸提示”和“机会成本提示”。用户也可自定义提示问题。
  • 个性化控制:用户可安排提示显示时间、频率和节奏,设置个人反思内容,并可在需要时启用“严格模式”。
  • 极简设计:采用全屏提示界面,无游戏化元素,避免引发屏幕时间焦虑。
  • 隐私保护:所有数据均本地存储于设备,无云同步、分析或账户系统,用户数据永不离开设备。
  • 技术权限说明:可能使用“显示在其他应用上层”、“电池优化禁用”等系统权限,所有功能均在本地运行。其中无障碍服务仅用于提供快速锁屏按钮,为可选且默认关闭,不收集数据。

设计原理 该应用基于行为科学原则,包括元认知意识有意摩擦选择架构。其提示旨在在习惯性操作触发前激活前脑,通过微小的反思瞬间积累,促成持久的行为改变。

适用场景 旨在帮助用户:

  • 在无需封锁应用的前提下减少手机查看次数
  • 获得功能手机的简洁性同时保留智能手机功能
  • 可持续地打破无意识刷屏习惯
  • 进行无惩罚感的手机数字排毒
  • 通过温和干预实现数字健康
  • 无需任意限制即可自然减少屏幕使用时间
  • 通过意识觉醒克服手机成瘾
  • 在无限制条件下提升数字健康与专注力
10. Marshall Brain died hours after alleging retaliation at NC State (www.technicianonline.com)

文章标题:Marshall Brain died hours after alleging retaliation at NC State

提供的内容是一个网页错误页面,具体为“Not Found, Error 404”,表示所请求的页面不存在。标题提到了“Marshall Brain died hours after alleging retaliation at NC State”,暗示了一个关于Marshall Brain在NC State指控报复后几小时内死亡的事件,但实际内容中没有提供任何文章细节、背景信息或事件描述。错误消息指出页面已丢失或无法访问。

11. Ask HN: Recommendation for a SWE looking to get up to speed with latest on AI
12. What happens if we remove 50 percent of Llama? (neuralmagic.com)

Sparse Llama 3.1 8B:50%参数剪枝后的高效稀疏基础模型

Neural Magic公司发布了Sparse Llama 3.1 8B,这是首个基于Meta Llama 3.1 8B构建的稀疏、高精度基础模型。该模型通过移除50%的参数(采用2:4稀疏模式,即每四个参数中移除两个),在保持近乎完整的模型性能的同时,显著提升了推理效率。

核心特性

  1. 高精度保留:在Open LLM Leaderboard v1基准测试中实现了98.4%的准确率恢复,在更具挑战性的Mosaic Eval Gauntlet中恢复率为97.3%
  2. 硬件加速:其2:4稀疏模式专为NVIDIA Ampere及更新架构的GPU优化,可单独为推理带来最高30%的吞吐量提升20%的延迟降低
  3. 量化兼容:与先进的4位量化方法(如GPTQ和Sparse-Marlin)完全兼容,结合使用时,根据硬件和场景的不同,可实现1.2倍至3.0倍的推理加速。

技术背景与训练

  • 该研究基于SparseGPT、SquareHead知识蒸馏和Sparse Llama 2等先前成果。
  • 为优化稀疏训练,研究团队精心筛选了高质量公开数据集,将预训练集缩减至仅130亿个token,大幅降低了环境成本。
  • 训练过程高效,在32块H100 GPU上仅用26小时即完成收敛。

性能评估

  • 基础模型评估:在多个少样本基准测试(如GSM8K、MMLU)中表现与密集模型高度接近。
  • 微调任务:在数学(GSM8K)、编码(Evol-CodeAlpaca)和对话(Ultrachat-200K)等领域的微调中,稀疏模型不仅完全恢复了精度,在某些任务上甚至超越了密集基线模型
  • 推理性能
    • 单流延迟:结合稀疏与4位量化后,在A5000/A6000 GPU上实现3.0倍加速,在A100 GPU上实现2.1倍加速。其中,稀疏性单独贡献了1.1至1.2倍的加速。
    • 吞吐量:在多查询异步部署场景下,最大查询速率实现了1.2至1.8倍的提升。

开源与应用

模型权重、评估代码及基准测试结果均已开源,发布在Neural Magic的Hugging Face组织页面上,旨在推动社区在高效AI领域的研究与开发。

总结:Sparse Llama 3.1 8B通过先进的稀疏化与量化技术,成功构建了一个参数减半、但性能损失极小且推理效率显著提升的稀疏基础模型,为大语言模型在资源受限场景下的部署提供了新的高效解决方案。

15. Comparing AWS S3 with Cloudflare R2: Price, Performance and User Experience (kerkour.com)

AWS S3 与 Cloudflare R2 对比:价格、性能与用户体验

价格对比

R2的主要创新在于免费且无限制的入站和出站流量(ingress/egress),使其在大多数场景下比S3更便宜。R2的基础存储价格也更低。

  • 存储价格:S3为$0.023/GB,R2为$0.015/GB。
  • GET请求:S3为$0.40/百万次(前2万次免费),R2为$0.36/百万次(前1000万次免费)。
  • PUT等写入请求:S3为$5/百万次(前2000次免费),R2为$4.5/百万次(前100万次免费)。
  • 出站流量(Egress):S3为$0.09/GB,R2免费

价格示例

  1. 存储和分发50TB公共资产(如AI模型、游戏资源)
    • S3总成本:$30,661.45(其中流量费占$29,491.20)。
    • R2总成本:$764.4。
  2. 用作数据仓库(10TB存储),从同一区域的EC2实例查询
    • S3总成本:$284。
    • R2总成本:$190.5。
  3. 用作数据仓库,但从另一家云服务商的计算实例查询
    • S3总成本:$464(包含$180流量费)。
    • R2总成本:$190.5(流量费为零)。
  4. 存储500TB视频监控录像,仅少量数据被检索,S3使用智能分层
    • S3总成本:$2,503。
    • R2总成本:$7,500。

结论:S3唯一可能比R2便宜的场景是:拥有大量不常访问的数据,并使用S3智能分层存储类

性能对比

  • S3:基于硬盘(非SSD),延迟通常不低于约30毫秒。新推出的S3 Express One Zone可提供个位数毫秒延迟,但可靠性较低。
  • R2:基于Cloudflare Workers和Durable Objects构建,存在吞吐量限制。其性能因访问方式而异
    • 通过公共URL(如xxx.r2.dev)访问时性能更好。
    • 通过S3 API和预签名URL(xxx.cloudflarestorage.com)访问时,延迟更高且不稳定,可能与R2的认证层有关。

同区域性能测试(获取50KB对象)

访问方式 平均延迟 p50延迟 p99延迟
S3 40ms 35ms 52ms
r2.dev URL 78ms 58ms 96ms
cloudflarestorage.com URL 89ms 71ms 123ms

跨数据中心流量问题:从AWS EC2实例访问Cloudflare R2存储桶时,延迟在白天工作时间会因网络路由拥塞而出现峰值。路径中的设备越多,延迟峰值可能越明显。

用户体验

  • R2的优势用户体验更简单直接
    • 存储桶默认私有。
    • API密钥管理简单,仅需3次点击即可创建针对特定存储桶、权限正确的密钥。
    • 相比之下,AWS需要创建IAM策略、凭证、存储桶策略等,流程复杂。
  • R2的主要缺点
    1. S3 API不完全兼容:使用官方AWS SDK时可能遇到错误,需要调整代码。
    2. 无法精确选择存储位置:存储桶位置由Cloudflare根据创建请求的来源自动决定,只能提供“位置提示”(如“西欧”)或设置管辖区限制,但无法确保存储在特定城市(如巴黎)。这可能导致严重的延迟惩罚。
      • 这是R2最大的缺点之一,也是Cloudflare产品中一个反复出现的问题。

总结与前瞻

作者认为,除了少数场景(如对~40ms延迟有严格要求、已有成熟的AWS架构、或因组织原因难以引入其他供应商)外,绝大多数项目和组织可能更适合使用Cloudflare R2。R2免除了高昂的出站流量费,降低了成本。

最后,文章提到了2024年4月宣布的R2 Pipeline API(测试版)。这是一个托管式数据管道,提供HTTP、WebSocket和Kafka端点,可以批量将事件/消息摄入R2。它可以看作是托管版的AWS Kinesis + S3,为构建无服务器、可扩展的ETL管线提供了便利。

16. ISPs say their "excellent customer service" is why users don't switch providers (arstechnica.com)

互联网服务提供商(ISP)行业游说团体向美国联邦通信委员会(FCC)声称,因其客户服务已非常优秀且市场竞争充分,故无需新的监管规定。他们表示,激烈的市场竞争迫使ISP必须提供高质量服务以留住客户,否则用户会轻易转向其他选择。

然而,FCC收到的信息与游说团体的说法相去甚远。加州和俄勒冈州的监管机构指出,市场竞争实际非常有限,大多数用户缺乏真正的选择。例如,加州仅26%的家庭拥有两种或以上宽带技术的选择。他们列举了用户投诉的常见问题,包括客服电话等待时间过长、账单错误(如取消服务后仍被收费)以及故障修复不及时。

残障人士倡导团体也提交了意见,要求制定基线标准以确保美国手语(ASL)视频通话等服务的质量,并强调必须保留真人客服支持,不能仅依赖人工智能聊天机器人。

FCC于10月在党派投票中通过了关于客户服务的调查通知,这是潜在制定新规的第一步。然而,即将上任的共和党主席布伦丹·卡尔对此表示反对,他认为这超出了FCC的权限,应由联邦贸易委员会处理,并主张FCC应专注于减少监管、促进部署。随着政府换届,FCC领导层即将更换,这项调查很可能不会推进,ISP也预计将获得它们所期望的结果:即无新规出台,且现有部分规则可能被取消。游说团体继续主张,不应施加“不必要、非法且可能有害的”监管,而应通过减轻监管负担来鼓励市场竞争。

17. Murderbot, she wrote (www.wired.com)

玛莎·威尔斯塑造了21世纪科幻小说中最具标志性的角色之一:一个不愿成为救世主的人类拯救者——杀人机器人(Murderbot)。尽管名字令人畏惧,但这个角色实际上厌恶杀戮,社交笨拙,内心丰富,更愿意追剧。该角色首次出现于威尔斯2017年的中篇小说《全系统红灯》中,随后发展为一个系列,为威尔斯赢得了四项雨果奖、两项星云奖和六项轨迹奖,并即将被Apple TV+改编为电视剧。

威尔斯现年60岁,三十年来几乎每年出版一本书,但直到杀人机器人系列问世前,她一直处于相对低调的状态。她长期居住在德克萨斯州的大学城,这里远离纽约或洛杉矶等文学中心。她的职业生涯起步于德克萨斯农工大学,她曾参与学生科幻社团Cepheid Variable,并在那里结识了未来的丈夫特洛伊斯·威尔逊。

威尔斯的写作之路并非一帆风顺。在2000年代中期,她因工作环境不健康而辞职,随后遭遇了2008年经济衰退,职业生涯陷入低谷,曾多次放弃写作项目。2010年,她一度考虑放弃。然而,在参观母校德克萨斯农工大学库欣纪念图书馆的科幻展览时,看到自己的作品与经典并列,这给了她继续前行的动力。

此后,她获得了突破,出版了《云路》系列,并得到了著名作家N.K.杰米辛的赞赏。2016年,当她在努力完成《云路》系列结局时,一个关于安全机器人的场景突然出现在她脑海中,这就是杀人机器人的起源。2017年,该中篇小说出版后大受欢迎,销量惊人,迅速成为现象级作品。

就在职业生涯迎来巅峰时,威尔斯于2023年被诊断出患有乳腺癌。她经历了手术和放疗,目前癌症已痊愈。在此期间,她通过博客分享抗癌经历,得到了读者和朋友的广泛支持。她的社区,包括大学时期的友人和科幻迷,始终是她的重要支柱。

威尔斯和丈夫目前居住在他们称为“杀人机器人庄园”的家中,生活平静。尽管她已获得巨大成功,但在家乡仍然鲜为人知。她最近婉拒了雨果奖对杀人机器人小说《系统崩溃》的提名,希望机会留给他人。威尔斯的经历体现了坚持、社区支持以及从挫折中重生的力量。

18. Teen mathematicians tie knots through a mind-blowing fractal (www.quantamagazine.org)

青少年数学家通过分形证明结定理

背景与问题

  • 研究起源:2021年,多伦多大学研究生Malors Espinosa为高中生设计数学问题,旨在让他们体验真正的数学研究。
  • 核心问题:在分形结构Menger海绵中,是否所有数学结(即扭结的闭合循环)都能被嵌入,同时保持其结构完整性?Menger海绵是一种自相似分形,通过迭代移除立方体中心和面心立方体构建,具有孔隙多、体积趋零、表面积无限的特性。
  • 历史基础:1926年,Karl Menger证明任何曲线(包括简单线条和分形)都可以变形并嵌入其海绵中,使其成为“通用曲线”。但该定理未区分拓扑等价的曲线,如各种结。

研究团队与方法

  • 参与者:三名高中生Joshua Broden、Noah Nazareth和Niko Voth,以及导师Malors Espinosa。他们通过每周Zoom会议合作。
  • 证明方法
    • 弧展示(Arc Presentation):将结表示为网格上的点,其中每行每列恰好两个点,连接水平和垂直线以可视化结的交叉。
    • 利用Cantor集:Cantor集是Menger海绵的一维类似物,通过迭代移除线段中间三分之一构建。学生发现,在海绵面上坐标属于Cantor集的位置没有孔洞,因此结可以通过这些点安全嵌入。
    • 关键步骤:证明任何结的弧展示可以压缩或拉伸,使其角点与Cantor集对齐,从而确保结能完全嵌入Menger海绵的某个迭代版本。

结果与扩展

  • 主要成果:成功证明所有结都可以嵌入Menger海绵中。
  • 扩展研究:尝试将结嵌入四面体版本的Menger海绵。对于trefoil结和pretzel结,找到了嵌入方法,但其他类型结的问题仍开放。
  • 挑战:四面体版本缺乏对称面,增加了嵌入难度,学生经历了反复失败和调整的过程。

意义与影响

  • 数学意义:为分形结构提供了新视角,可能启发使用结来衡量分形复杂性的方法。
  • 教育意义:展示了高中生在引导下参与前沿数学研究的潜力,培养了他们的问题解决和批判性思维。
  • 应用与艺术:类似MegaMenger活动,该工作可能激发基于分形的物理构造或艺术创作。

结论

这项研究通过创新的方法,将经典分形与结理论结合,扩展了Menger海绵的“通用性”,并为分形拓扑性质的研究开辟了新方向。学生们的贡献突出了数学探索中提问和协作的重要性。

19. Forced to upgrade (herman.bearblog.dev)

被迫升级的 iPhone 使用体验

作者使用 iPhone 8 长达 7 年,认为其硬件性能完全满足需求。主要问题在于 电池老化,一年前通过更换电池使手机恢复良好状态。然而今年,部分应用开始要求 iOS 17 或更高版本,而 iPhone 8 因发布已超过 6 年,无法再获得系统更新,被永久锁定在 iOS 16.7.10。

作者对此感到沮丧,认为手机硬件仍然完好,却因 软件支持终止 而被迫淘汰。尽管理解苹果的更新政策(通常提供 6 年支持),但仍觉得“因妥善保管物品而受罚”。

最终,作者购买了 iPhone 16,期望其能获得更长的软件支持周期。但在使用中发现,新手机的功能与旧款 并无显著差异,且带来一些不适应:

  • 屏幕尺寸增大,手感变差
  • 失去了 Touch ID 功能
  • 相机升级感知不明显

作者认为苹果仍是 支持周期最长 的厂商(6 年),三星提供 4 年主要系统更新和 5 年安全更新,而谷歌新款旗舰手机现已承诺 7 年更新支持。

整体而言,作者表达了对 设备因软件策略而非硬件失效被淘汰 的不满,同时承认这一现象在行业内具有合理性。

20. Rails is better low code than low code (radanskoric.com)

Rails 比低代码更适合作为低代码工具

初始需求与选择

作者接到一个简单的CRUD应用需求,用于管理预订。他考虑使用Ruby on Rails或低代码工具。通过想象两个时间线,文章对比了两种选择的发展过程。

原型阶段

  • 低代码工具:使用模板快速自定义,几小时内完成并上线,速度快。
  • Rails:通过脚手架生成模型,使用Turbo修改代码,更新测试,用Kamal部署,一天内完成。

额外功能添加

需求增加时,两者都需处理常见的CRUD功能。

  • 低代码工具:大多数功能可通过配置或点击添加,但遇到难题时需定制lambda函数,意外破坏其他功能,缺乏自动化测试,手动测试风险高。
  • Rails:需要额外编码,但Rails压缩复杂性,代码量不大。更新测试保持信心,使用版本控制,重构代码使后续更改更容易,应用更贴合问题领域。

独特功能实现

一个创新功能出现,低代码平台未预见到。

  • 低代码工具:需大量hack,使用lambda函数和非预期方式实现,导致代码复杂且难以维护,作者需详细文档记录。
  • Rails:迭代解决方案,关闭部分默认设置,自定义代码,保持代码整洁和测试,最终重构以确保可维护性,大部分代码仍为简单Rails代码。

SaaS扩展

应用因成功而需转为公开SaaS。

  • 低代码工具:需从头重写,使用开源框架。
  • Rails:可直接探索多租户方案,应用已为生产就绪,扩展相对容易。

核心论点

  • 低代码工具:封闭系统,专精特定案例,但在不确定性高时选项性低,定制和扩展困难,维护成本高。
  • Rails:开放系统,虽不如低代码通用,但可通过剥离层适应问题,提供未来灵活性。20年演化压缩复杂性,适合快速开发,在需求不确定时价值更高。
  • 结论:低代码适合需求固定、无创新的内部系统或非程序员;Rails则适合有编程背景、可能面临创新或扩展的场景,是更好的低代码替代品。
21. Learn perfect pitch in 15 years (www.moderndescartes.com)

文章标题: Learn perfect pitch in 15 years

主要内容概述:

本文是作者分享其成年后逐步获得绝对音高的个人经历与思考。核心观点是:绝对音高并非与生俱来或不可习得,而是一个可以通过长期、专注的音乐训练和聆听而逐步发展的能力。

1. 对绝对音高的普遍认知

绝对音高通常被认为包含以下能力:

  • 识别非音乐性声音(如警报、鸣笛)的音高。
  • 命名音乐音符的音高。
  • 识别和弦中的单个音符。
  • 哼唱出指定的音符。
  • 判断一首歌是否偏离了原调(这是门槛最低的一种形式)。

2. 作者的音乐历程与绝对音高的发展

  • 童年与青春期(5-18岁):作者幼时学过钢琴,后转为单簧管。约12岁时,他能在单簧管上重复听过的音符,被老师认为拥有绝对音高。但作者认为这可能只是基于单簧管因结构限制而产生的特定微音高和音色差异进行识别,并非真正的绝对音高,因为他无法识别其他乐器的音符。
  • 大学及成年初期(18-30s)
    • 钢琴绝对音高:在麻省理工学院一年级期间,作者投入大量时间聆听古典乐和练习钢琴。到大一结束时,他发展出了明确的、仅限于钢琴音色的绝对音高能力。
    • 扩展与干扰:随后,作者通过学习音乐理论、参加合唱、欣赏各种器乐和声乐作品,逐步将绝对音高能力扩展到管弦乐、弦乐、人声等新音色。期间,早年单簧管的记忆曾造成干扰(单簧管是降B调乐器)。
    • 成熟与泛化:大约25岁,能识别多种乐器音色;约28岁,能识别人声音高;约32岁,能识别非音乐性声音(如警报)的音高,并能判断音准偏差。作者指出,这项能力并非一蹴而就,而是存在“好日子和坏日子”的渐进过程,长期不聆听音乐会导致识别速度暂时变慢。

3. 对绝对音高的分析与理解

  • 非二元的连续过程:作者强调,绝对音高并非“有或无”的二元状态,而是一个平滑且漫长的连续学习曲线,从识别相对音程到最终瞬间锁定音高。
  • 神经与认知模型:作者推测,绝对音高可能是大脑在长期训练后,将音乐的心理表征“淬炼”为对应西方十二平均律中十二个音级的稳定神经表征。在他的体验中,识别音高时没有联觉(如颜色、视觉钢琴键盘),只有纯粹的音高感质。
  • 关于能力来源的思考:作者反思了可能影响其发展的各种个人因素(如童年环境、感官敏感性、记忆力、早期乐器选择、家庭钢琴长期失准等),认为情况因人而异。

4. 关于学习绝对音高的建议

基于个人经验,作者提出了可能有助于培养绝对音高的条件:

  1. 学习一种需要调音准确的乐器(如用调音器校准吉他)。
  2. 避免学习非C调乐器(如降B调单簧管),以免造成音高记忆的混乱。
  3. 消除环境中明显跑调的声音源。
  4. 学习识谱,并在听音乐时同步跟随乐谱,进行主动聆听。
  5. 学习乐理,理解音符如何组合成旋律与和声。
  6. 将聆听视为需要长时间(如一万小时)练习的技能。
  7. 拓展听觉范围,聆听介于调性与无调性之间的音乐(如拉威尔、普罗科菲耶夫等作曲家的作品)。
  8. 享受音乐本身!找到能打动自己的作品和演绎。

结论:作者通过长达十五年的个人实践表明,绝对音高可以通过持续、多样化的音乐沉浸与主动训练在成年后获得,并对此过程与大脑学习机制提出了个人见解。

22. Htmy – Async, pure-Python rendering engine (volfpeter.github.io)

Htmy:异步、纯Python渲染引擎

Htmy 是一个纯Python的异步服务端渲染引擎,旨在让开发者无需学习新的模板语言,即可利用Python的全部能力进行Web开发。

核心特性

  • 异步优先:充分利用现代异步工具。
  • 强大上下文:提供类似React的上下文支持,避免属性钻取。
  • 函数组件:支持使用装饰器语法定义同步和异步函数组件。
  • HTML标签:内置所有基础HTML标签。
  • 流式传输:支持异步HTML流式传输,优化首次字节时间。
  • 原生格式支持:支持动态格式化和插槽渲染的原生HTML/XML文档,无需自定义语法。
  • Markdown支持:提供可自定义的Markdown解析和渲染工具。
  • 国际化:支持基于JSON的异步国际化。
  • 错误处理:内置ErrorBoundary组件,实现优雅降级。
  • 非固执己见:可自由选择后端、CSS和JS框架。
  • 高度可定制:渲染引擎、组件、格式化和上下文管理等均可轻松定制。
  • 属性转换:自动将属性名从蛇形命名法转换为烤肉串命名法。
  • 兼容性:可通过包装器与其他任何模板库兼容。
  • 类型完备:完全类型化。
  • Trio兼容:通过AnyIO支持Trio框架。

设计理念与组件

Htmy的设计围绕简单协议和实用类展开,从渲染引擎到内置组件均可轻松定制、扩展或替换。库不依赖高级Python特性,易于理解、开发和调试。

  • 组件定义:任何拥有同步或异步htmy(context: Context) -> Component方法的对象都是一个Htmy组件。字符串、列表或元组也是组件。也可以使用@component装饰器将函数转换为组件。
  • 异步支持:组件内部可直接执行异步业务逻辑,减少样板代码,并自由划分渲染与非渲染逻辑。

内置组件与工具

Htmy提供了丰富的内置工具和组件:

  • html模块:完整的HTML标签集。
  • SnippetSlots:用于在原生文件格式中创建动态、可定制的文档片段,并支持插槽渲染。
  • md:用于加载、解析、转换和渲染Markdown内容的工具。
  • i18n:基于JSON的异步国际化工具。
  • Tag等基类:用于创建自定义XML标签。
  • ErrorBoundaryFragment等:用于错误处理、组件包装、上下文提供和格式化的实用工具。
  • ETreeConverter:将XML转换为组件树的工具。

渲染与上下文

  • 渲染htmy.Renderer是默认渲染器。在异步框架中可直接await渲染,在同步环境中需通过asyncio.run()执行。
  • 上下文:通过Context对象(一个映射)在组件子树中共享数据,避免属性钻取。上下文提供者组件(实现htmy_context()方法)向子树添加数据。
  • 格式化器:内置Formatter类负责标签属性名称和值的格式化(如将下划线转换为短横线),可通过扩展或替换进行完全自定义。

其他重要方面

  • 同步 vs 异步:组件应根据内部是否需要await来选择异步或同步。建议将可能长时间运行的同步调用委托给工作线程。
  • XSS防护:默认进行XML/HTML转义以确保安全。SnippetMD组件例外,需确保输入内容的安全性。
  • AI辅助:库已注册在Context7,便于AI编程工具提供辅助。
  • 兼容性与性能:设计上兼容其他模板库(如Jinja)。性能取决于用法,Snippet组件可接近字符串格式化的性能,而大型组件树渲染可能较慢。可通过包装其他库或预渲染来优化。
  • 框架集成:已有与FastAPI集成的框架(如holmFastHX)。
  • 定位:旨在作为Jinja的强大灵活替代品,同时提供完整的IDE支持、静态代码分析和原生Python语法优势,且为异步优先。
  • 依赖:最小化依赖,主要依赖anyio(异步)和markdown
  • 开发与贡献:使用ruffmypypytest进行开发,并欢迎社区贡献。
  • 许可证:MIT许可证。
23. I Stopped Using Kubernetes. Our DevOps Team Is Happier Than Ever (blog.stackademic.com)

根据提供的文章标题《I Stopped Using Kubernetes. Our DevOps Team Is Happier Than Ever》,本文内容无法直接获取,因为所提供的文本是Cloudflare的安全验证页面,而非文章正文。该页面通过JavaScript挑战来阻止自动化程序访问,旨在确保访问者是真实用户。

基于文章标题,可以推断文章可能探讨了以下核心主题:

  • 作者或其所在的DevOps团队决定停止使用Kubernetes这一容器编排工具。
  • 停用Kubernetes后,团队的整体幸福感和工作体验得到了显著提升。
  • 文章可能分析了Kubernetes的复杂性、管理开销或与团队工作流程的不匹配之处,这些因素可能是他们做出改变的原因。
  • 同时,文章可能介绍了团队在放弃Kubernetes后所采用的替代技术或更简化的工作流,并说明了这些改变如何使团队受益。

请注意,以上内容是基于标题的合理推测,并非对无法访问的实际文章内容的总结。

24. GenChess (labs.google)

文章总结:Google Labs AI实验项目概览

本文主要介绍了Google Labs旗下一系列正在实验和开发中的AI工具与产品,旨在通过创新技术辅助用户在创作、研究、学习、工作等领域的活动。

核心工具与功能:

  • Google Flow:AI创意工作室,用于创作故事、视频和音乐(包括Google Flow Music)。
  • Stitch:AI设计工具,能将自然语言描述转化为高保真用户界面(UI)。
  • Pomelli:AI营销工具,用于快速生成符合品牌调性的营销内容。
  • Literature Insights:文献工具,辅助查找论文、整理数据表格并生成报告、幻灯片等产物。
  • Hypothesis Generation:多智能体研究工具,模拟科学方法以识别知识缺口并生成新假设。
  • Computational Discovery:智能体研究引擎,通过生成和评估代码变体来发现模型并加速迭代。

其他实验项目涵盖多个领域:

  • 研究与学习:包括 Project Genie(创建探索多样化世界)、Learn About(对话式学习工具)、Illuminate(将论文转为AI生成的讨论)、AI Edge Eloquent(将口语化文本转化为清晰书面文字)。
  • 生产力与协作:例如 CC(Gmail中的AI生产力助手)、Vantage(通过AI模拟团队合作来评估技能)。
  • 职业发展与个人提升:如 Career Dreamer(AI职业探索工具)、Portraits(基于专家经验的AI教练工具)、Learn Your Way(将内容转化为个性化动态学习体验)。

Google Labs愿景与相关产品: Google Labs是谷歌进行AI创新实验的平台,用户可早期体验并提供反馈,帮助塑造未来AI产品。文中还提及了已从实验发展为成熟产品的案例,包括:

  • Google Gemini(原Bard):个人AI写作、规划助手。
  • Google NotebookLM(原Project Tailwind):基于可信信息源的研究思考伙伴。
  • Google AI Studio(原MakerSuite):用于构建应用和网站的“氛围编程”平台。

这些工具和项目共同展示了谷歌在利用AI增强创造力、加速科研、提升个人学习与工作效率方面的广泛探索。

25. Raspberry Pi CM5 is a faster, drop-in upgrade (www.jeffgeerling.com)

树莓派 Compute Module 5:更快的即插即用升级

核心升级
树莓派 Compute Module 5 是对 Compute Module 4 的全面升级,外形尺寸保持不变,可作为大多数现有 CM4 载板的直接替换件。其主要性能提升包括:

  • CPU:采用 BCM2712 SoC,搭载 4 个 Cortex-A76 核心,主频 2.4GHz,性能较 CM4 提升约 2-3 倍。
  • 内存:改用 LPDDR4x RAM,速度提升 3-4 倍,并支持片上 ECC。
  • 存储:eMMC 速度更快,PCIe 升级至 Gen 3,带宽显著增加。
  • 接口:USB 2.0 升级为 USB 3.0,无线模块性能增强。
  • 功耗:满载功耗约增加一倍,但待机功耗略有降低(实测约 2.3 瓦)。
  • 启动:启动速度比 CM4 快约 4 秒。

兼容性与扩展
CM5 保留与 CM4 相同的 200 针 Hirose 连接器和物理尺寸,因此兼容绝大多数现有载板。它相当于一个无接口插头的树莓派 5,为工业、商业设备(如 3D 打印器、显示屏、KVM 切换器)提供了便捷的升级路径。Raspberry Pi 提供了新版 IO 载板(售价 20 美元),新增电源按钮、USB-C 供电、USB 3.0 端口、双 MIPI 摄像头/显示屏端口及内置 M.2 SSD 插槽。

性能基准
实测显示 CM5 在多项任务中实现跨越式提升:

  • 通用计算:高性Linpack测试显示能效提升约 1.5 倍,Linux 内核编译速度超过 3 倍。
  • 视频处理:4K/1080p 转码速度提升约 3 倍。
  • 图形性能:GLMark 得分从 750 提升至 1916,更好地支持 4K 显示。
  • 内存带宽:LPDDR4x 内存带来显著速度提升。

价格与版本

  • 8GB 版本价格与 CM4 相同(Lite 版起售 75 美元)。
  • 4GB 版本价格高出 5 美元。
  • 2GB 版本价格从 35 美元升至 45 美元。
  • 本代取消了 1GB 版本。

竞争环境
尽管市场出现了基于 Rockchip 等芯片的竞品 Compute Module,且部分在基准测试中表现更优,但 Raspberry Pi 凭借成熟的软件支持、广泛的生态兼容性(载板、外设、操作系统)保持了核心优势。测试显示,竞品在 GPU 驱动等层面仍可能面临兼容性问题。

结论
Raspberry Pi Compute Module 5 在保持物理兼容性的前提下,实现了全面的性能飞跃。对于现有 CM4 用户,它是成本合理的即插即用升级方案,能够显著提升设备计算能力,同时降低了移植开发成本。

26. SSH Artwork (github.com)

SSH Artwork 文章摘要

本文介绍了 SSH Artist 工具,用于生成具有特定哈希可视化图案的SSH密钥。主要内容如下:

SSH公钥可视化功能

  • OpenSSH 5.1引入了视觉哈希表示,用于将SSH主机密钥渲染为易于记忆和识别的视觉形式。
  • 该功能受“随机艺术”启发,旨在帮助用户更轻松地拒绝变更的主机密钥。
  • 可通过 VisualHostKey 配置选项控制,但目前默认禁用,因算法仍可能变化。

使用方式

  • 可使用命令 ssh-keygen -lv -f ~/.ssh/id_ed25519.pub 可视化现有密钥。
  • 通常生成的图案因随机性而杂乱。

工具目的

  • 允许用户通过绘制目标图案(在 arts/target.art 文件中)生成具有类似可视化外观的密钥。
  • 本质是牺牲安全性(追求特定图案)来满足个人审美需求。

实际效果

  • 示例中用户尝试生成类似OOO图案的密钥,通过运行 pipenv run python main.py 并耐心等待,最终获得与目标相似但不完全匹配的图案。
  • 结果仍不完美,但展示了工具的基本功能。
27. The Art and Mathematics of Genji-Ko (www.oranlooney.com)

源氏香的艺术与数学

历史与文化背景

源氏香是日本室町时代贵族间流行的一种香道游戏,源于对香料鉴赏的极致追求。参与者需辨别五种香料的异同,并以特定记法“源氏纹”提交答案。该名称源于平安时代文学经典《源氏物语》,52种传统图案与《源氏物语》中第2至53章的章节标题一一对应,赋予了游戏文学与季节的隐喻。

游戏规则与记法

  • 玩法:参与者闻五种香料样本,判断哪些相同。答案正确可得一分,错误则零分。一局通常包含五轮。
  • 记法(源氏纹):以五条竖线代表五种香料。若几种香料相同,则用横线连接其顶部。若存在多个分组,需以不同高度绘制横线以避免混淆,并遵循以下原则:
    1. 分组应尽可能高。
    2. 被包含的分组应更低,形成视觉嵌套。
  • 特殊案例:例如“夕霧”图案中,最低的分组反而位于中间,违反了常规规则,需单独处理。

数学原理:贝尔数

源氏纹的总数恰好为52,这与数学中的贝尔数(Bell numbers)直接相关。贝尔数 ( B_n ) 表示包含 ( n ) 个元素的集合的划分数目。其递推公式为: [ B_{n+1} = \sum_{k=0}^n \binom{n}{k} B_k ] 通过计算可得 ( B_5 = 52 ),证实了源氏纹图案的总数。贝尔数增长极快,近似公式为: [ B_n \sim \frac{1}{\sqrt{2 \pi n}} \left( \frac{n}{\ln n} \right)^n ]

算法生成与优化

文章提供了用Python生成源氏纹的算法:

  1. 使用递归生成五元素的所有可能分组(即所有可能的划分)。
  2. 对每个分组,通过成本优化器确定各分组的高度,以遵循传统布局规则。
  3. 结合《源氏物语》章节顺序排列图案,并手动修正四个特殊案例(如“夕霧”)。

文化影响

尽管香道在日本并不普及,但源氏纹作为设计元素广泛应用于和服、香具及传统工艺品中。其图案在图形设计中常以多样组合呈现,形成连绵不断的视觉效果。

附录说明

文章末尾提供了源代码、替代风格图表、完整章节对应表、相关术语对照及贝尔数渐近行为的进一步分析。

28. Ancient Sumerians created the first writing system (lithub.com)

古代苏美尔人创造首套书写系统

文明诞生背景

公元前四千纪中叶,美索不达米亚平原(今伊拉克南部)在幼发拉底河与底格里斯河交汇处,因环境严酷(常发洪水、干旱和瘟疫)且资源匮乏,反而促使人们大规模协作。通过共同修建灌溉系统和堤坝控制水患,社会复杂性得以提升,催生了人类最早的城邦文明——苏美尔。

乌鲁克:首座大都市

约公元前3000年,乌鲁克成为苏美尔主要城邦之一,拥有约八万居民和宏大的城墙、神庙。其城建规模堪比后来的罗马和雅典。城市生活需要管理食物分配、贸易和劳动力,这催生了记录系统的需求。

书写系统的起源与演变

  1. 记账需求:苏美尔人最初使用陶筹(代表羊、谷物等)来记录交易。后来将陶筹放入陶球(称为“ bulla ”)内,并在球表面压印符号表示内容和数量。
  2. 象形文字阶段:约公元前3300年,人们开始直接在陶球表面刻画符号,取代了内部陶筹。最初的符号近似图画,如“山”既指山地,也引申为“外国”和“征服”。
  3. 楔形文字形成:约公元前2900年,为提高效率,书吏改用芦苇笔在湿泥板上压印,形成楔形笔画。这使符号逐渐脱离象形,走向抽象和标准化。
  4. 表音化突破:约公元前2500年,苏美尔人发现同音词可扩展书写能力。例如,用表示“大蒜”的符号(发音为“sum”)来书写同音的“给予”。这种“画谜”方法使文字开始与语音挂钩。
  5. 阿卡德人的影响:约公元前3000年后,闪族语系的阿卡德人迁入美索不达米亚北部,与苏米人长期混居。为适应两种不同语言的记录需求,书写系统进一步向表音化发展,最终演变为可表达语音的通用楔形文字。

文字的材料与传播

  • 载体:苏美尔人使用当地丰富的黏土制作泥板,廉价易得,且干燥后可永久保存。废弃泥板常被堆放或用作建筑填料,意外得以留存数千年。
  • 传播:表音化后的楔形文字成为跨地区通用书写工具,影响力从伊朗扩展到地中海沿岸。

文明意义

苏美尔人创立了最早的王权、法律、外交和贸易体系,并发明了轮子、帆船、拱券等技术。其书写系统是人类历史的关键转折,不仅记录法律、经济、文学(如《吉尔伽美什史诗》),也为后世的数学、科学和行政管理奠定基础。


总结:苏美尔人在应对环境挑战的过程中,因社会管理需求催生了世界上最早的书写系统。该系统从象形记账符号逐步演化为抽象楔形文字,并通过同音假借实现表音化,最终成为跨语言、跨文化的通用记录工具,对人类文明发展产生深远影响。

29. DeepThought-8B: A small, capable reasoning model (www.ruliad.co)

所提供的内容来自Ruliad网站,显示为一个错误消息,表明请求的页面不存在。该消息指出“此页面不存在”,并指示用户前往主页。文章标题为“DeepThought-8B: A small, capable reasoning model”,但具体内容无法通过此页面访问。这暗示相关推理模型的详细信息未在该页面提供,用户可能需要通过其他方式获取。

30. Emacs arbitrary code execution and how to avoid it (eshelyaron.com)

Emacs 任意代码执行漏洞 (CVE-2024-53920) 摘要

漏洞概述

该安全漏洞存在于 Emacs 的 Emacs Lisp (.el) 文件处理机制中。核心问题是宏展开过程可以执行任意、不受限的 Emacs Lisp 代码,且在常见的用户配置下,这一过程会被自动触发。

技术原理

  1. 宏的危险性:Lisp 宏是一种元编程工具,但其在 Emacs Lisp 中的展开是不安全的。内置宏(如 static-ifrxcl-eval-when 等)在展开时可以直接执行参数中的代码。
  2. 自动触发机制:当用户在 Emacs 中打开一个 .el 文件时,会启用 ELisp 模式。该模式提供的某些常用功能会自动进行宏展开,从而执行恶意代码:
    • 代码诊断Flymake(内置)和 Flycheck(流行扩展)在检查 Emacs Lisp 代码时会进行字节编译,此过程包含宏展开。
    • 代码补全:自动补全功能(如 Corfu、Company 包或内置的 Completion Preview 模式)为了分析上下文,也会触发宏展开。
  3. 攻击向量:攻击者只需构造一个包含恶意宏调用的 .el 文件,诱使用户在 Emacs 中打开。若用户的配置自动启用了上述功能(这在 Doom Emacs 等流行配置中是默认设置),或攻击者通过文件本地变量指令(如 -*- eval: (flymake-mode 1) -*-)强制启用了 Flymake,则恶意代码将自动执行。

漏洞影响

  • 影响范围:至少影响 Emacs 26.1 至 29.4 的所有版本。
  • 漏洞状态:这是一个长期存在的已知问题,此前曾有公开讨论但未得到彻底修复。本文作者于 2024 年 8 月报告后,分配了 CVE-2024-53920 编号。

缓解措施

对于使用 Emacs 29.4 及更早版本的用户,建议采取以下防护措施:

  1. 绝对避免在 Emacs 中直接打开或编辑任何不可信的 .el 文件。
  2. 禁用自动检查:确保不可信的 .el 文件不会自动启用 Flymake 或 Flycheck。
  3. 禁用自动补全:在不可信的 .el 文件中禁用自动补全功能。
  4. 设置安全选项:将 Emacs 配置选项 enable-local-eval 设置为 nil,以阻止文件本地变量中的 eval 指令被执行,防止攻击者通过该方式强制启用危险功能。
  5. 升级至 Emacs 30:Emacs 30 版本已内置缓解机制,可禁用在不可信文件中由 Flymake 和代码补全触发的宏展开。建议升级到最新版本(当前为 30.0.93 预发布版)以从根本上解决问题。
31. How to print your Guild Wars 2 character (stuff.tamius.net)

文章标题与内容不符。提供的实际内容是一个网站错误页面,而非《How to print your Guild Wars 2 character》文章。

错误页面摘要

该页面显示了 Cloudflare 错误 522,表明连接源服务器时超时,导致网页无法显示。

  • 错误类型:Connection timed out (Error 522)
  • 发生时间:2026-05-29 04:13:36 UTC
  • 主机:stuff.tamius.net
  • 提供解决方案
    • 对于网站访客:建议稍后几分钟再试。
    • 对于网站所有者:建议联系托管服务提供商,告知服务器未完成请求。错误522通常意味着能连接到服务器,但请求未完成,最可能原因是服务器资源被占用。
  • 附加信息:Cloudflare Ray ID a032aa65fbf25b5f,访问者IP 153.3.251.216。页面底部注明由Cloudflare提供性能与安全保障。
32. I Wrote "Janet for Mortals" (ianthehenry.com)

《写给凡人的Janet》书籍介绍与创作回顾

书籍概述

作者撰写了一本名为《写给凡人的Janet》(Janet for Mortals)的免费在线书籍,旨在介绍Janet编程语言。作者希望通过这本书让更多人了解并享受使用Janet的乐趣。该书具有交互式特性,内置REPL(交互式解释器),读者可随时调用以实践代码。

创作过程

  • 时间投入:作者花费20周业余时间完成书籍,最初估计为12周,但额外时间用于开发相关编程项目。
  • 书籍长度:最终英文散文约4.4万字(不含代码),相当于《了不起的盖茨比》的篇幅。
  • 写作工具:使用Sublime Text编辑器和Markdown格式撰写,并在Janet语言两次版本更新时同步修订了调试和原生模块章节。

附属项目

在写书期间,作者完成了多个相关项目,总耗时约8周:

  1. 网站开发(2周):构建了支持Janet语法高亮的静态网站和内置REPL。REPL使用CodeMirror编辑器,并集成了自动补全和反馈功能(通过(report)函数收集用户意见)。后端用Haskell编写,存储反馈数据。
  2. jimmy(1周):为C++持久数据结构库immer编写Janet绑定,作为C++互操作示例。
  3. Toodle.Studio(2周):基于Bauble的艺术游乐场,展示Janet在浏览器中与JavaScript的异步互操作。作者还为其设计了海龟动画标志。
  4. cmd(2周):命令行参数解析库,受OCaml的Core.Command启发,提升Janet的脚本工具体验。
  5. judge(1周):内联快照测试框架的重写版,新增测试宏和交互模式,改善开发流程。
  6. to do(2小时):命令行待办事项管理器,用于脚本章节演示,基于PEGs和sh库实现。

推广与反馈

  • 发布与传播:书籍在Hacker News、Lobsters等平台推广,首日获得约3万独立访客,但实际深度读者较少(基于日志分析,约387个IP加载5个以上章节)。
  • 用户互动:内置REPL收到494份反馈报告,包括拼写修正、功能建议及少量无厘头内容(如音乐链接)。

有趣事实

  • 书籍名称源于Janet语言得名自《The Good Place》中的角色,符合“凡人”主题。
  • 访问量最低的章节是“测试与调试”,尽管作者认为书中最后三章最具趣味性。
  • 用户反馈中不乏创意互动,但作者遗憾无法直接回复部分提问。
36. The Opposite of Documentation is Superstition (2020) (buttondown.com)

本文以作者使用OneNote的“墨迹转形状”功能为切入点,讨论了缺乏文档说明如何导致用户对功能产生非理性的“迷信”理解,并引用心理学实验加以类比。

作者使用Surface Go和OneNote进行手写笔记,并尝试其“墨迹转形状”功能。该功能可将手绘自由形状(如方形)转换为规整图形,但效果不稳定且文档极度匮乏。作者偶然发现手绘线段有时能被转换为标准线段,却无法掌握其规律,也找不到任何官方说明列表或详细文档,只能依赖一段一分钟的介绍视频。这使得功能如同“黑箱”,用户难以区分是功能识别失败还是自身绘制问题。

作者由此联想到斯金纳1948年的鸽子实验(该实验本身存在争议):鸽子因随机获得食物而发展出无逻辑的“迷信”行为。作者将自身经历类比,指出在缺乏文档、规则未知的情况下,用户会像实验中的鸽子一样,为功能的随机表现编造不合理的解释,逐渐形成“迷信”。

最后,作者强烈呼吁编写更详细的文档,以避免用户因信息缺失而产生非理性行为,并提升功能的可用性与透明度。

37. Redis Inc seeks control over future of Rust redis-rs client library (devclass.com)

提供的内容是一个HTML页面,其核心功能是工作量证明(Proof of Work)验证机制,而非所期望的文章正文。

页面包含以下关键组件:

  1. 一个“Wicketkeeper”组件:用于生成需要用户(或浏览器)解决的计算挑战。
  2. JavaScript处理逻辑:当挑战被成功解决(solved函数被调用)后,脚本会向服务器(/_labrador/pow/v0/verify)发送验证请求。
  3. 验证成功后的操作:如果服务器返回状态码200(即验证通过),页面将在500毫秒后自动重新加载,从而可能显示真正的文章内容。

总结:此文件不是包含“Redis Inc seeks control over future of Rust redis-rs client library”文章内容的页面,而是一个反机器人的验证门。因此,无法基于此内容提供对所述主题的摘要。要获取文章摘要,需要先通过此验证并访问实际的文章页面。

39. I Got an IP Address (github.com)

这篇文章讲述了作者在微控制器上从头构建网络协议栈的经历,主要目标是通过实践深入理解网络底层工作原理。作者之前已实现发送原始以太网帧,本文重点记录如何利用DHCP协议从本地网络获取IP地址,同时介绍了固件的整体架构设计与调试过程。

架构设计

作者采用FreeRTOS作为实时操作系统,以实现独立的任务(轻量级进程)并处理并发。架构核心要求包括:

  1. 硬件无关的底层收发机制。
  2. 各协议模块作为独立进程运行。
  3. 数据包能路由至关心它的进程。

为此设计了通用以太网驱动层,通过一个包含initioctlreadwrite函数的结构体接口,与硬件(如W5100芯片)解耦,便于更换底层硬件。

数据包收发机制

  • 发送:其他任务不直接调用硬件驱动,而是通过net_transmit()将数据包放入FreeRTOS队列,由Net任务统一调度发送。返回true仅表示入队成功,不代表已发出。引入了一个complete标志位,允许发送任务阻塞等待发送完成。
  • 接收Net任务循环执行:检查发送队列、从硬件接口读取数据包、将数据包匹配给系统中的协议处理程序。匹配通过注册的回调函数链式进行,第一个匹配成功的函数负责处理或进一步委派。
  • 数据包缓冲NetPacketBuffer_t结构包含长度和最大1500字节的缓冲区。

协议栈分层实现

数据包在协议栈中自下而上匹配处理:

  1. 以太网层Net任务首先过滤,只接受广播包或目标MAC为本机的包。
  2. IP层:检查是否为IPv4包,并基于目标IP(本机、广播)和协议字段(如UDP、TCP)进行匹配和委派。
  3. UDP层:引入“端口”概念。模块维护一个连接链表。匹配时检查包的源/目标端口及IP地址是否与已注册连接相符,成功则将包推入对应连接的接收队列。
  4. DHCP层:作为UDP的上层应用,使用端口68(客户端)和67(服务器)进行通信。

DHCP工作流程详解

DHCP是一个用于自动获取IP地址的状态机协议。

  1. DHCPDISCOVER(发现):客户端以广播形式(源IP 0.0.0.0,目标IP 255.255.255.255)发送请求,包含MAC地址、主机名及所需参数列表(如子网掩码、网关)。
  2. DHCPOFFER(提供):服务器响应,直接发往客户端MAC,提供IP地址、租约时间等信息。
  3. DHCPREQUEST(请求):客户端广播选定某个服务器提供的配置,正式请求该IP。
  4. DHCPACK(确认):服务器确认租约,客户端进入绑定状态。之后还涉及租约续期与重新绑定的过程。

文中展示了构造DHCPDISCOVER数据包的代码示例,涉及各层头部字段和DHCP选项的填写。由于网络字节序(大端)与微控制器(小端)不同,需要使用net_write_u32等函数进行转换。

调试与问题排查

作者搭建了独立的调试环境:使用USB转以太网适配器连接笔记本电脑,并在笔记本上运行dnsmasq作为轻量级DHCP服务器。通过Wireshark抓包对比,发现初始实现中服务器无响应。 关键排查步骤:

  1. 用另一台电脑的网卡作为客户端验证服务器配置正确。
  2. 用Python脚本模拟发送数据包,通过增删选项逐步逼近固件发出的数据包形态,发现该模拟包能获得响应。
  3. 最终通过字节级对比发现,固件发出的包缺少IP层校验和。Wireshark默认不校验校验和,因此未报告错误。补上ip_compute_and_write_checksum后,成功获得了DHCPOFFER,最终取得IP地址192.168.10.38

总结

本次实践从发送原始帧推进到了实现DHCP获取IP,理解了网络栈的分层架构、协议交互细节以及调试方法。作者欣赏了Linux网络工具的强大,并计划未来在此基础上实现更高层协议(如ARP)和建立双向连接。

40. Fine, I'll Play With Skiplists (buttondown.com)

本文探讨了LSM树(Log-Structured Merge Tree)存储引擎中的一个关键组件——内存表(memtable)的数据结构选择问题。作者认为,从高层次看,LSM树因其组件模块化且大部分数据不可变(除内存表外)而相对简单。然而,在具体实现层面,用于处理并发读写访问的内存表是一个难点,传统上常采用无锁并发跳表(lock-free concurrent skiplist)。

文章详细列出了内存表需满足的要求:支持快速的点读和范围扫描(迭代器需与SST文件合并,因此不能阻塞写入);必须支持在刷盘时进行有序扫描以构建SST文件(排除了无序的哈希表);写入操作应是线性化的(排除了线程本地缓冲区的方案)。此外,内存表是纯插入的(通过墓碑标记表示删除),这简化了数据结构设计。为了控制内存使用,通常采用双内存表策略,即当一个内存表满时将其设为只读并刷盘,同时切换到另一个内存表。

在这些约束下,跳表成为一个合适的选择。跳表本质是一个多层有序链表,通过随机选择节点高度来构建不同层级的索引,以在期望中获得良好的查找性能。

作者随后对比了单写者与多写者跳表的实现。单写者实现相对简单,可直接更新指针。而支持多写者时,需要使用比较并交换(CAS)操作来解决并发插入同一位置可能导致的写入丢失问题,这是一种乐观并发控制。

关于跳表参数,作者关注了两个方面:

  1. 概率参数 p:用于决定节点层级高度的几何分布参数。Pebble代码中断言最优 p 值为 1/e。作者通过模拟发现,最优 p 值会随着元素数量增加而变化,并非恒定,但可能趋向于 1/e。作者个人偏好使用 p=1/2,因为可以通过一个位运算技巧高效计算高度。
  2. 最大高度:当 p 值较大或元素数量很多时,最大高度的限制会影响性能。作者通过模拟观察了不同最大高度设置的影响。

文章最后,作者表示仍在探索跳表,并考虑其他可能性(如写时复制B树),但当前的重点是理解并简化跳表在并发内存表场景下的实现。

41. The industry structure of LLM makers (calpaterson.com)

LLM制造商的行业结构分析

核心论点:行业结构决定企业盈利能力

文章通过对比航空业(糟糕的商业模式)与可口可乐(极佳的商业模式),论证了企业的盈利与否主要取决于其所处的行业结构(迈克尔·波特的“五力模型”),而非内部效率、努力或创新。行业结构的五个关键力量是:供应商议价能力、买方议价能力、直接竞争强度、新进入者威胁、替代品威胁

LLM制造商的行业结构分析

文章认为,大型语言模型(LLM)制造商(如OpenAI、Anthropic等)目前的行业结构并不乐观,更接近航空业或网景公司(Netscape),而非谷歌或可口可乐:

  1. 供应商议价能力极强:LLM的核心供应商并非云服务商,而是提供训练芯片的英伟达(NVIDIA)。英伟达拥有近乎垄断的定价权,对LLM制造商的利润空间构成巨大压力。
  2. 买方议价能力较高:LLM用户缺乏忠诚度,容易在不同模型(如ChatGPT、Claude)间切换。企业用户也倾向于使用抽象层来灵活更换模型,这使得LLM产品趋于同质化和可替代。
  3. 直接竞争激烈:市场竞争者众多,价格竞争激烈。特别是Meta等公司以近乎免费的方式开源其模型,进一步压低了行业利润水平。
  4. 新进入者威胁大:由于相关技术论文公开、模型训练门槛相对降低,新团队持续涌入市场,加剧了竞争。
  5. 替代品威胁存在:对于某些场景(如法律),人类工作者仍是更可靠(尽管更昂贵)的替代品。文章指出,一旦某个LLM应用被验证,常会被更高效的传统元数据技术替代。

关于巨额融资的疑问

尽管商业模式前景堪忧,LLM制造商仍获得了巨额风险投资(如OpenAI融资66亿美元)。文章推测可能的解释包括:希望自研芯片以减少对英伟达的依赖、试图通过资金投入建立技术壁垒或品牌忠诚度,并承认这存在类似WeWork(估值从470亿跌至不足6亿)的投资风险。

总结与展望

  • 技术成功≠商业成功:即使LLM制造商无法盈利,LLM技术本身仍可能持续发展并产生价值(如同免费的网络浏览器技术)。
  • AI业务的出路:文章认为,避免自建基础模型,转而利用现有昂贵训练出的模型(如Anthropic的模型)来开发应用,可能是更具成本效益的商业模式。
  • 最终类比:LLM制造商的经济性质更像拥有强大单一供应商(英伟达)的航空公司,而非拥有高利润率、无强势供应商的软件公司(如微软Office)。
42. Ask HN: Has anyone tried adapting a court reporter keyboard for writing code?
43. Cursed Linear Types in Rust (geo-ant.github.io)

这篇文章探索了在 Rust 中实现“线性类型”(即必须且只能使用一次的类型)的一种启发式方法,主要基于 Jack Wrenn 的 “Undroppable Types” 思想。

核心目标是创建一个 UseOnce<T> 结构体,强制其实例必须被消费(使用)一次,且只能一次。任何未消费的情况应在编译时产生错误。

实现方案

其主要实现思路与关键代码如下:

  1. 结构UseOnce<T> 内部使用 MaybeUninit<T> 来存储值。
  2. 消费:提供一个 consume 方法。该方法接受一个闭包,并将内部值传递给该闭包。在方法内部,使用 ManuallyDrop 包装 self,并通过 unsafe 的 swap 操作取出内部值,从而在语义上“消费”了 UseOnce 实例。
  3. 强制消费(关键技巧):为 UseOnce<T> 实现 Drop trait。其 drop 方法内部包含一个 const { panic!("...") } 块。编译器在静态分析时,如果推断出该实例的 drop 方法必然会被执行(即实例没有被正常消费),就会在编译期评估这个 panic,从而导致编译错误。而如果 consume 方法被正确调用,编译器能够推理出 drop 实现不会被生成,因此不会报错。

主要限制与“诅咒”之处

作者指出了该实现的几个严重局限,故称其为“被诅咒的”(Cursed):

  1. 可绕过性:可以通过 std::mem::forget 来丢弃实例而不消费它,从而绕过强制消费的限制。不过作者认为这仍算是一种显式行为。
  2. 值泄露:初始的 consume API 允许通过传递身份函数(identity function)将内部值转移出来。改进后的 API 提供 consumeconsume_mut 两个方法,它们仅通过对内部值的共享引用或可变引用来提供访问,利用借用检查器防止值被简单地带出作用域。consume_mut 还使用了 Pin 来防止值被移动。
  3. 依赖编译器优化前推理:这是最根本的限制。该技巧依赖于编译器在非优化cargo build)模式下,能够静态分析出 drop 不需要被生成。如果在 UseOnce 的创建和消费之间插入任何普通的函数调用,即使最终消费了实例,也会因为干扰了编译器的分析而导致编译错误。这极大地限制了其实际应用场景。
  4. 链接时错误的替代方案:为解决函数调用干扰问题,文章提到了一种更“诅咒”的方案:在 Drop 实现中链接一个不存在的外部函数,从而将错误从编译时推迟到链接时。但这会让错误信息变得更不友好。

总结

这篇文章演示了一种利用 Rust 的 Drop 语义和 const 上下文评估来近似实现线性类型的巧妙但脆弱的方法。它揭示了在 Rust 中强制实现“必须使用一次”语义的挑战,该方法严重受限于编译器的静态分析能力,因此在实际代码中并不实用,主要作为概念验证和对语言边界的有趣探索。

44. Chebyshev Polynomials in the 16th Century (2022) (arxiv.org)

本文介绍了学术平台中与文章关联的多种工具与功能。

主要工具与功能

  • 文献与引文工具:包括用于探索和浏览相关文献的“文献浏览器”等功能,旨在辅助研究者发现和组织参考文献。
  • 代码、数据与媒体:提供了与文章相关联的代码、数据集和多媒体材料的访问链接或管理方式。
  • 演示与推荐:包含演示材料,并集成了推荐系统与搜索工具,帮助用户寻找相关论文。
  • 社区协作项目:页面介绍了“arXivLabs”,这是一个实验性框架,允许社区合作者直接在网站上开发和分享新功能。它遵循开放、社区、卓越和用户数据隐私的价值观。