2025-05-04

27 篇热帖

1. Show HN: Free, in-browser PDF editor (breezepdf.com)

BreezePDF:免费浏览器端PDF编辑器

核心功能

一款功能完整的本地化PDF工具包,所有操作均在浏览器内完成,无需上传文件。主要特性包括:

  • 编辑与注释:支持自由绘制、矩形/圆形、线条/箭头、文本高亮、删除线、下划线、红线遮盖、便签、插入/提取表格、查找替换、水印、页码、裁剪、压缩、展平、元数据编辑、复选框/下拉菜单、单选按钮、数字签名等。
  • 页面管理:可旋转页面。
  • 文档处理:支持提取图像、批量自动化处理、邮件合并、OCR(桌面版功能)、打印PDF。
  • 数据提取:可将数据导出为CSV格式。
  • 便捷操作:提供键盘快捷键。

专业版服务 (BreezePDF Pro)

针对需要更多功能的专业用户,提供付费订阅方案:

  • 无限制下载:无月度下载次数限制。
  • 桌面应用程序:支持离线优先使用,自动更新。
  • 命令行工具:可通过终端进行批量处理。
  • 高级功能:包含PDF签名和OCR文本识别。
  • 跨平台支持:兼容macOS、Windows和Linux操作系统。
  • 定价:12美元/月。

隐私保护

  • 本地处理:所有文件处理均通过浏览器内JavaScript在用户设备上完成。
  • 数据安全:文件不会上传至任何服务器,无跟踪、无分析、无第三方访问。

常见问题

  • 免费版限制:Web版完全免费,但每月仅有3次免费下载次数。可无限次打开和编辑PDF,但下载受限。需要无限下载则需订阅桌面专业版。
  • 隐私保护:所有处理均在本地进行,文件不离开设备,服务器不接触文档。
  • 安装要求:Web版无需安装,桌面版为原生macOS应用程序。
  • 导出格式:支持保存为PDF、导出为DOCX(Word)或CSV(表格)。
  • 订阅管理:支持随时取消订阅,当前计费周期结束后服务停止。

联系方式

用户可通过提供的渠道进行咨询或反馈。

5. An Alabama landline that keeps ringing (oxfordamerican.org)

At Auburn University, students at the Foy Information Desk have been answering questions for more than 70 years.

6. What went wrong with wireless USB (oldvcr.blogspot.com)

(Hat tip to the late Bill Strauss and The Capitol Steps' Lirty Dies.) A few moons ago I was thinking of ways to take my Palm OS Fossil Wr...

7. I decided to pay off a school’s lunch debt (www.huffpost.com)

“I immediately wondered if this was real.”

8. DuckDB is probably the most important geospatial software of the last decade (www.dbreunig.com)

DuckDB 通过其空间扩展,极大地降低了使用地理空间数据的门槛,可能成为过去十年最重要的地理空间软件之一。

  • 降低使用门槛:DuckDB 空间扩展将启动地理空间工作所需的步骤简化到仅为两行 SQL 代码(install spatial;load spatial;)。这消除了过去可能需要安装编译多个开源包、配置环境或搭建专门数据库的复杂性,使数据通才也能轻松进行地理空间处理。
  • 推动领域关注:谷歌搜索趋势显示,“地理空间”一词的搜索量在2023年末开始显著上升,这与 DuckDB 发布其空间扩展的时间点吻合。尽管相关关系不等于因果关系,但文章认为 DuckDB 的普及确实促进了地理空间领域的关注度提升。
  • 扩大生态系统:将地理空间能力嵌入通用数据工具,使得更多人能够接触和使用地理空间数据。例如,DuckDB 空间扩展可能间接促进了像 Overture Maps Foundation 这类项目的采用率。
  • 技术优势:DuckDB 空间扩展通过静态打包一系列标准开源 GIS 工具(包括内嵌 PROJ 坐标系统数据库),为多个平台(包括 WebAssembly)提供 SQL 接口,且除了 libc 外没有其他外部依赖。其杀手级功能包括:利用 GDAL 转换多种格式、通过 SQL 进行数据转换、以及更新 QGIS 等工具时不会破坏工作流。
  • 持续优化:DuckDB 团队正在不断优化性能与功能,例如设计新的几何引擎、优化空间连接等,致力于通过承担底层复杂性来简化用户体验。
10. Brian Eno's Theory of Democracy (www.programmablemutter.com)

本文探讨了政治学家亚当·普热沃斯基(Adam Przeworski)的经典民主理论与艺术家布莱恩·伊诺(Brian Eno)的艺术观点之间的联系,旨在为理解民主的稳定与变革提供一个新视角。

普热沃斯基的理论核心是:“民主是一个政党会输掉选举的系统。”他认为民主的稳定取决于两个关键:1)失败者认定拒绝接受失败的代价太高;2)未来存在足够的不确定性,使他们相信有朝一日能重新执政。 这种基于博弈论的观点将民主视为一种自强化均衡,预期会持续稳定运行,直到遭遇巨大的外部冲击。然而,这一静态模型难以解释当今一些民主国家内部出现的自我瓦解趋势。

伊诺在艺术领域的论述提供了不同的思路。在讨论实验性音乐(如科尼利厄斯·卡迪尤的作品)时,伊诺指出,这类音乐的乐谱不是一套精确约束表演的指令,而是一套生成多样性的简单规则。尽管表演者拥有极大的自由,但“一套并非在乐谱中规定的控制”会在表演中自然出现,从而产生秩序。伊诺强调,成功的组织并非僵化地忽略环境变化,而是一个具有响应性的子系统网络,能将环境的不规则性视为塑造自身的机会。这体现了控制论思想:通过“略微驾驭系统的动力”,在方向上进行引导。

文章认为,伊诺的艺术理论恰好为思考民主提供了一个“动力学模型”,弥补了传统博弈论模型的不足。民主治理与音乐表演有相似之处:两者都需要在大规模协调中持续产生多样性。稳定性并非一成不变,而是需要不断动态调整。例如,政党在输了选举后认输,但同时会不断试探规则边界,这就要求民主系统具有适应性,通过“表演”中的非明文规则来维护核心原则。

这种观点强调民主需要平衡稳定性与多样性。一个健康的民主系统应通过其“分布式子系统”(如联邦制下的地方单元)探索不同方案、测试政策创新,并从公民的多样视角中汲取解决复杂问题的智慧。然而,政治极化会威胁这种多样性,它简化了社会信息空间,压制了多元利益与观点的表达,使民主作为“社会信息处理器”的功能受损。

总结而言,作者通过关联普热沃斯基的均衡稳定性与伊诺的动态多样性理论,主张我们需要超越将民主视为静态自强化系统的传统观点。面对当前的民主困境,我们更需要基于伊诺式启发的“有用指南”——即理解民主如何通过持续适应、管理多样性并在动态变化中维持核心身份来保持韧性,而非追求僵化的定律。

12. Old Timey Code and Old Timey Mono Fonts (github.com)

Contribute to dse/old-timey-mono-font development by creating an account on GitHub.

13. How three years at McKinsey shaped my second startup (blog.zactownsend.com)

“If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you...

14. Google Gemini has the worst LLM API (venki.dev)

Google Gemini has the worst LLM API

15. When Flat Rate Movers Won't Answer Your Calls (aphyr.com)

2023年,作者使用Flat Rate Movers(US DOT 488466)进行州际搬家,支付超过1.4万美元,约定包含全程打包、家具保护、定制木箱及保险服务。搬家当日,实际执行方为仅两人的Esquire Moving Inc.团队,未提供约定打包服务,缺少必要包装材料。作者与团队共同工作13小时完成打包和搬运,但搬运过程中家具、艺术品等未受保护,导致严重损坏,房屋门框亦被损毁。

事后作者多次联系Flat Rate索赔,对方仅回复自动邮件,提供通用索赔表。后续数月通过电话、邮件、书面信件反复沟通均无果,电话持续转至语音信箱。虽然公司曾派遣检查员评估损坏并承诺反馈,但最终再次失联。作者尝试通过律师函、向美国卡车协会申请仲裁、向联邦汽车运输安全管理局、纽约州交通部等机构投诉,均未获得实质进展。

关键转折点在于作者发现可通过FMCSA公开数据库查询搬家公司的保险信息。输入Flat Rate的US DOT编号后,获取到其货物保险承保方为Hanover Insurance Company。作者直接联系保险公司,提交证据材料,而保险公司此前从未收到Flat Rate的索赔报告。经保险公司调查,Flat Rate甚至未回应保险公司的询问。最终,Hanover Insurance基于照片证据直接向作者支付了货物损坏的赔偿,但房屋损坏及服务未履行的费用仍未获补偿。

作者仍追究Flat Rate的责任,并建议其他遇到类似问题的用户可查询FMCSA数据库,绕过搬家公司直接联系其承保方以推动索赔。

17. How LWN is faring in 2025 (lwn.net)

LWN 在2025年正面临经济挑战,预计能够度过难关,但存在困难。自3月初起,其新订阅和续订数量明显下降,这大致与美国政府加剧对全球贸易体系的攻击及由此导致的经济下滑相吻合。订阅下降虽未构成生存威胁,但令人担忧。

LWN 正在尽可能缩减开支,并持续为 Linux 和自由软件社区提供高质量报道。读者可通过订阅或推动雇主进行团体订阅来提供支持。订阅是LWN多年来得以持续运营的唯一依靠。

除当前困境外,LWN还面临其他潜在问题:持续的通货膨胀使订阅收入的实际购买力下降;尽管目前暂无涨价计划,但若情况恶化可能会调整价格。作为美国公司,LWN的大量订阅来自国外,若国际社会对美国企业的负面情绪加剧,或全球贸易进一步受损,都可能影响其接受海外支付的能力,甚至可能危及美国对自由软件的参与和支持。

目前,LWN正专注于应对当前的经济风暴。好消息是,自1998年成立以来,LWN已多次经历困难周期,并凭借读者的持续支持坚持至今。LWN承诺将继续致力于提供值得读者支持的内容,并对订阅者表示衷心感谢。

18. Nevermind, an album on major chords (farina00.github.io)

《Nevermind》专辑的音乐特点分析揭示了其独特之处:

1991年,涅槃乐队的《Nevermind》专辑取得了意外的广泛成功,以其原始粗粝的吉他音色和直白的声音吸引了大量听众。尽管大多数听众仅是单纯欣赏,但专辑中隐藏着创新的和声用法。深入分析发现,在失真过载的吉他声浪之下,每首歌曲都采用了以大调和弦(主要为强力和弦)为核心的和声进行,并且这些进行脱离了传统的音阶体系。专辑中极少使用小调和弦,也避免了复杂和弦(如七和弦、挂留和弦、增减和弦等)

这种主要使用大调和弦创作整张专辑的方式,在当时是极为罕见和创新的。虽然其他歌手和乐队此前也可能在个别歌曲中运用过类似技巧,但《Nevermind》是第一张完全建立在此基础上的主流摇滚专辑。文章指出,科特·柯本并非遵循既有的音乐理论规则,而是完全依靠音乐直觉进行创作。他自己也坦言不懂乐理,甚至不知道吉他上大调和弦与小调和弦的按法。

19. TScale – Distributed training on consumer GPUs (github.com)

Contribute to Foreseerr/TScale development by creating an account on GitHub.

20. Understanding Memory Management, Part 5: Fighting with Rust (educatedguesswork.org)

本文探讨了在Rust中进行实际开发时,其内存管理系统(基于所有权和借用检查器)所引发的一系列具体挑战与应对策略,主要涵盖以下几点:

1. 所有权转移与迭代器陷阱 一个简单的 for y in x 循环会导致变量 x 被“移动”,之后无法再使用。这是因为该语法会调用 x.into_iter(),该方法会取得 x 的所有权。解决方案是使用 for y in &x,它会调用 (&x).into_iter(),从而仅借用 x。文章通过演示函数重载和Trait方法的歧义性,解释了为何必须使用完全限定语法 IntoIterator::into_iter(x)

2. 方法调用中的借用冲突 当从容器(如 Album)中获取一个内部元素的引用(first_photo)后,如果再想修改该容器(调用 album.add_photo()),就会因不可变引用(用于获取元素)与可变引用(用于修改容器)共存而引发借用错误。即使原始代码未同时使用两者,编译器也会因后续使用了引用而报错。文章探讨了多种解决方法:

  • 重新获取引用:在需要时重新调用获取方法。
  • 存储句柄:使用索引而非直接引用,但需注意索引有效性。
  • 克隆数据:创建数据的副本,但可能有性能开销。
  • 重构代码:调整代码结构,避免引用与修改操作的时间线重叠。

3. 生命周期(Lifetimes)基础与注解

  • 核心规则:任何引用都不能超出其指向的数据的生命周期。
  • 编译器如何推断:在简单情况下(如单个输入参数的函数),编译器可以自动推断生命周期。
  • 显式标注:当函数有多个引用参数并返回引用时,编译器无法推断返回值的生命周期关联,需要显式注解(如 'a)来声明约束。例如:fn longest<'a>(x: &'a str, y: &'a str) -> &'a str 表明返回值的生命周期与两个输入参数中较短的那个绑定。
  • 结构体中的生命周期:包含引用的结构体必须为其成员添加生命周期标注。
  • 非词法生命周期(NLL):现代Rust编译器能更精确地判断引用的“活性”范围,减少了不必要的借用错误。

4. 线程安全与内存安全的统一性 Rust的线程安全保证很大程度上建立在与内存安全相同的基础之上:所有权、借用检查和生命周期。

  • 移动语义:数据的所有权可以安全地从一个线程移动到另一个线程(如通过 move 闭包)。
  • 共享与可变性的矛盾:默认情况下,数据不能在多个线程间同时共享且可变。这防止了数据竞争。
  • 同步原语:为了在多线程间共享可变数据,Rust提供了 MutexRwLock 等线程安全的封装器,通常与 Arc(原子引用计数)结合使用,以在编译时和运行时强制执行访问规则。

总结:文章通过实际代码示例,深入展示了Rust借用检查器在防止内存错误(如悬垂指针、数据竞争)方面的强大但也可能带来初始适应成本的特点,并阐述了其背后的核心概念(所有权、借用、生命周期)如何协同工作以确保内存安全和线程安全。

21. Perfect Random Floating-Point Numbers (specbranch.com)

完美随机浮点数生成

传统方法的缺陷

许多编程语言和库采用以下方法生成[0, 1)区间内的均匀随机浮点数:

  1. 生成一个随机整数(位数根据浮点精度确定)
  2. 转换为浮点数
  3. 除以该整数得到[0, 1)范围的结果

该方法存在两个基本缺陷:

  • 覆盖范围有限:只能访问2^62个float64数中的2^53个,仅占总空间的1/512
  • 最低有效位偏差:生成的整数最低有效位存在偏差,本质上是一个定点随机数生成器后接浮点转换

浮点数结构

浮点数由三个字段组成:

  • 符号位(s)
  • 指数(e)
  • 尾数(m)

一个规格化浮点数值为:F = (-1)^s × 2^(e-eBias) × (1.m)

重要特性:[-1, 1]区间包含了所有浮点数的一半,每个浮点数都具有固定精度(float64为53位),数值在不同数量级上均匀分布。

随机生成的理想目标

完美的浮点随机数生成应满足:生成浮点数的概率等于将实数四舍五入到该浮点数的概率

不同舍入模式下,指数范围边界处的概率分布不同:

  • 向下舍入:2的幂次数与上方数字概率相同
  • 向上舍入:2的幂次数与下方数字概率相同
  • 最近舍入:平均上下方的概率

新算法设计

算法分为两个阶段:

1. 定点阶段(缩放定点)

  • 通过重复生成尾数来确定指数范围
  • 处理尾数为0的特殊情况(通过递归缩放)
  • 生成一个在[1, 2)范围内的浮点数后减去1,得到定点随机数

2. 完成阶段(位回填)

  • 根据定点结果的指数差值计算需要回填的尾数位数
  • 根据舍入模式生成随机位:
    • 向下舍入:生成指定位数的随机数
    • 向上舍入:生成随机数并加1
    • 最近舍入:按特定模式生成以匹配概率分布

Go实现要点

// 关键步骤:
// 1. 生成尾数并处理为0的情况(极低概率递归)
// 2. 构造定点数并减去1
// 3. 计算尾数位数差值
// 4. 根据舍入模式回填随机位

性能与测试结果

  • 性能:与传统方法相当,得益于分支预测优化
  • 随机性测试
    • 传统方法在1亿样本后有16个最低有效位可辨别非随机
    • 新算法生成的所有位都完全随机
    • 对32位浮点数尤为重要(仅24位精度)

结论

这是首个能完整访问所有浮点数输出空间且概率分布正确的高效算法。它通过两个额外步骤实现:位回填和极低概率的递归处理,解决了浮点随机数生成的不准确性问题,可提高模拟和计算的准确性。

22. Numerical Linear Algebra Class in Julia TUM (venkovic.github.io)

慕尼黑工业大学数值线性代数课程概要

课程名称:计算科学与信息工程数值线性代数 (CITHN2006),旨在为计算科学和信息工程领域的学生提供数值线性代数的理论基础和实践技能。课程通过一系列讲座组织,每个讲座配有幻灯片资源,部分内容还包含Jupyter笔记本,强调使用Julia语言进行算法实现。

课程主题结构

课程内容涵盖从基础到高级的数值线性代数主题,具体列表如下:

  1. 线性代数基础:回顾向量空间、矩阵运算和线性方程组的核心概念。
  2. Julia语言介绍:介绍Julia的语法、特性及其在科学计算中的应用。
  3. 浮点算术和误差分析:探讨计算机中浮点数的表示、舍入误差及其对数值稳定性的影响。
  4. 稠密线性系统的直接方法:讲解高斯消元、LU分解等用于求解稠密线性方程组的技术。
  5. 稀疏数据结构和基本线性代数子程序:介绍稀疏矩阵的存储格式(如CSR、CSC)和BLAS库的作用。
  6. 稀疏线性系统的直接方法简介:概述稀疏矩阵的直接求解算法,如Cholesky分解和迭代细化。
  7. 正交化和最小二乘问题:描述Gram-Schmidt正交化、QR分解及其在最小二乘拟合中的应用。
  8. 线性系统的基本迭代方法:包括雅可比、高斯-赛德尔和松弛法等迭代求解技术。
  9. 特征值问题的基本迭代方法:介绍幂法、反幂法等用于计算矩阵特征值和特征向量的迭代算法。
  10. 局部最优块预条件共轭梯度法 (LOBPCG):专门讲解LOBPCG算法,用于大规模特征值问题的求解。
  11. Arnoldi和Lanczos过程:描述Krylov子空间构建方法,为GMRES和Lanczos算法奠定基础。
  12. Jacobi-Davidson方法:讲解Jacobi-Davidson特征值算法,特别适用于内部特征值计算。
  13. 线性系统的Krylov子空间方法:包括共轭梯度法(CG)、广义最小残差法(GMRES)等。
  14. 线性系统的预条件迭代方法:讨论预条件子的设计(如ILU、代数多重网格)以加速迭代收敛。

考试与资源

课程提供最终考试资料,包括夏季2025和冬季2025-26的PDF版本,以评估学生对主题的掌握程度。整体课程结合理论讲解与实践编程,利用Julia语言作为主要工具,旨在培养学生解决计算科学和信息工程中线性代数问题的能力。

24. Deadly Screwworm Parasite's Comeback Threatens Texas Cattle, US Beef Supply (www.bloomberg.com)

Bloomberg connects decision makers to a dynamic network of data, delivering business and financial information, news and insights globally.

25. “An independent journalist” who won't remain nameless (www.thehandbasket.co)

Too many legacy outlets still refuse to credit indie journos. Enough is enough.

26. RethinkDNS Resolver That Deploys to CF Workers, Deno Deploy, Fastly, Fly.io (github.com)

The RethinkDNS resolver that deploys to Cloudflare Workers, Deno Deploy, Fastly, and Fly.io - serverless-dns/serverless-dns

27. Why I Am Not Going to Buy a Computer (1987) [pdf] (classes.matthewjbrown.net)

Wendell Berry 为什么不买电脑

Wendell Berry 于1987年撰文阐述了他拒绝购买电脑的理由,这些理由基于个人价值观、环境关切和技术批判。

主要原因

  • 能源依赖:Berry 作为作家,不希望工作依赖于剥离式开采的煤,这与他反对破坏自然的立场冲突。他使用铅笔和纸写作,妻子用一台1956年购买的打字机协助,形成了“文学家庭作坊”,无需电力支持。
  • 对电脑制造商的批评:他指责制造商通过广告诱惑农民购买昂贵设备,并将电脑强加于缺乏书籍的学校,忽视电脑对和平、经济正义、生态健康等真正重要事物的贡献。
  • 个人关系的牺牲:采用电脑可能取代他与妻子的合作关系,这种合作基于信任和共同工作,被视为有价值的关联。
  • 实用性存疑:Berry 质疑电脑是否真正改善写作,要求证据表明使用电脑能创作出明显优于经典作品(如但丁)的文字。

技术评估标准

Berry 提出了九项技术革新标准,适用于自己的工作:

  1. 比被替换的工具更便宜。
  2. 规模至少一样小。
  3. 明显且可证明地更好。
  4. 使用更少能源。
  5. 尽可能利用太阳能(如人体能量)。
  6. 可由普通人修复。
  7. 可在本地购买和维修。
  8. 来自私人小店,支持维护和修理。
  9. 不破坏已有的良好事物,包括家庭和社区关系。

读者回应与作者的反驳

文章引发读者来信,部分人批评Berry的观点:

  • Gordon Inkeles 讽刺地将妻子比作“低科技设备”。
  • James Rhoads 认为使用电脑不影响道德立场。
  • Nathaniel S. Borenstein 强调电脑在环境行动中的价值。
  • Toby Koosman 提到电脑可解放配偶从事更意义的工作。
  • Bradley C. Johnson 指出Berry的立场存在矛盾。

Berry 在回复中:

  • 批评这些回应的“技术原教旨主义”,认为技术拥护者无法容忍不同意见。
  • 捍卫妻子的角色,指出她自愿参与工作,并非被迫。
  • 强调个人消费对环境的影响,认为减少依赖比依赖集中化解决方案更重要。
  • 坚持认为不使用电脑是比使用更新颖的理念,旨在直接解决个人责任问题。

核心主题

Berry 的论点聚焦于个人责任、减少能源依赖和质疑技术进步的价值。他主张通过直接行动减少个人消费,而非依赖电脑等技术工具,并批判了环境运动中只关注生产而忽视消费的倾向。