2024 07 08 HackerNews

2024-07-08 Hacker News Top Stories #

  1. 写作不仅有助于思想的精确化,更是思考过程本身,正确的方法和心理模型能增强这一效果。
  2. YouTube嵌入视频导致网页资源消耗大,使用lite-youtube组件和lazy加载属性可大幅优化性能。
  3. 系统编程Meetup在全球范围内复苏,组织者分享了成功经验,强调内容质量和讲者筛选的重要性。
  4. SerenityOS中一个有趣的内存分配bug导致JPGLoader出错,通过调试和修复HashTable容量问题得以解决。
  5. 隐私是个人权利和社会自由的基石,“没什么可隐藏”不应成为忽视隐私的理由,需采取行动保护。
  6. BeaconDB作为一个道德数据收集的项目,提供Mozilla Location Services的替代方案,强调隐私保护。
  7. Pongo项目在PostgreSQL基础上实现了MongoDB风格的API,提供强一致性,适用于文档数据处理。
  8. 一个TypeScript包允许在WebAssembly QuickJS沙盒中安全执行JavaScript代码,提供虚拟文件系统和HTTP调用支持。
  9. 芫荽在意大利料理中的使用从古罗马时期的广泛流行到现在的边缘化,反映了文化变迁和口味偏好的转变。
  10. 一款免费的极简主义每日习惯追踪应用,支持离线使用和多设备数据同步,帮助用户养成良好习惯。

How to think in writing #

https://www.henrikkarlsson.xyz/p/writing-to-think

这篇文章探讨了写作如何帮助我们思考的重要性。作者指出,将想法写下来有助于使其更加精确和完整,因此,没有对某个主题进行写作的人不可能对其有完全成熟的想法。

文章强调了正确的写作方式对于帮助思考的重要性,提到了通过将想法转化为文字来发现其中的不足之处。作者分享了通过写作来思考的一些基本心理模型,以及更复杂的思维模式,这对于研究或从事其他深度创造性工作的人可能更有用。

文章还提到了通过将想法展开为解释来发现其中的问题,以及如何通过反例来改进和深化自己的理解。最后,作者强调了通过写作和思考来不断完善自己的观点和理解,以及如何在思考过程中发现新的见解。


HN 热度 347 points | 评论 105 comments | 作者:Luc | 1 day ago #

https://news.ycombinator.com/item?id=40892298

  • 写作有助于完善思维,但外部反馈能快速揭示漏洞。
  • 写作帮助我们整理和澄清思绪,是思考的一种方式。
  • 如果大脑存在盲点,通过写作可能不容易发现,需要外部反馈。
  • 写代码可以帮助理解问题,发现之前未考虑到的情况。
  • 没有写作,也可能有清晰的思路,写作并非必须。
  • 讨论论点时,要注重修辞而非逻辑,聪明人也会犯错误。
  • 写作是获取知识和思考的重要方式。
  • 评论中提到的写作语句可能具有迷惑性,应注意理解。
  • 有时候过度完善笔记可能拖延实际行动。
  • 让人产生怀疑的写作 / 思考方式有时会引起不安。

YouTube embeds are heavy and it’s fixable #

https://frontendmasters.com/blog/youtube-embeds-are-bananas-heavy-and-its-fixable/

这篇文章讨论了 YouTube 嵌入式视频在网页中占用大量资源的问题以及解决方法。传统的 YouTube 嵌入式视频大小约为 1.3MB,且每个嵌入式视频之间没有共享资源。文章提出了使用 lite-youtube Web 组件,其大小约为 100KB,共享资源,并不会牺牲功能。作者建议在嵌入式视频中添加 loading=“lazy"属性以提高性能,并提供了一些 CSS 样式来保持视频的流畅性和原始宽高比。

文章指出,传统的 YouTube 嵌入式视频在加载页面时会导致 32 个请求、1.3MB 的数据传输和 2.76 秒的加载时间。作者强调了资源的重复使用问题,即每个嵌入式视频都会增加页面的负担。为了解决这一问题,文章介绍了使用 lite-youtube-embed Web 组件的方法,该组件能够以更高效的方式提供与传统嵌入式视频相同的功能,但速度更快、效率更高,并具有默认的隐私保护功能。

最后,文章提到了其他一些替代方案,包括使用 Shadow DOM 版本、自行构建 Web 组件等。作者强调了减少资源使用对环境的重要性,并呼吁使用开源 Web 组件来复制嵌入式视频的体验。


HN 热度 279 points | 评论 162 comments | 作者:surprisetalk | 11 hours ago #

https://news.ycombinator.com/item?id=40897205

  • 有人提到 YouTube 的嵌入式视频加载过重,建议使用代理缩略图代替,以提高用户体验和隐私保护。
  • 有人认为网页加载速度对用户参与度至关重要,但也应考虑页面整体加载速度,以避免用户流失。
  • 有人建议使用 Firefox 的全屏模式或图片中的图片模式,以改善视频观看体验。
  • 有人讨论了 YouTube 的设计缺陷,如过多的推广视频和页面布局不佳。
  • 有人提到 Google 倾向于优化自身利益,而不一定是为了用户体验。
  • 有人指出 YouTube 的设计可能是为了增加“参与度”指标,而不是为了用户体验。
  • 有人讨论了网页加载时间对用户参与度的影响,以及轻量级 YouTube 嵌入的可行性。
  • 有人提到使用代理缩略图代替 YouTube 嵌入,以减轻页面负担。
  • 有人讨论了 YouTube 嵌入的资源消耗和用户体验问题。
  • 有人建议使用本地下载替代 YouTube 嵌入,以提高用户体验和隐私保护。
  • 有人讨论了 YouTube 嵌入的设计缺陷和资源浪费问题。

A reawakening of systems programming meetups #

https://notes.eatonphil.com/2024-07-07-systems-meetups.html

这篇文章讨论了系统编程 Meetup 的复苏现象。作者提到了一些高质量的系统编程 Meetup,如慕尼黑数据库 Meetup、柏林系统小组、旧金山分布式系统 Meetup、纽约系统、班加罗尔系统等。

文章总结了一些令人失望的科技 Meetup 历史,以及优秀系统编程 Meetup 的新趋势,并提供了关于组织自己系统编程活动的鼓励和指导。作者还分享了自己的经历,包括对之前 Meetup 的不满,以及如何开始了纽约系统咖啡俱乐部,吸引对系统编程感兴趣的人聚集在一起。文章强调了 Meetup 的组织之难,但也表达了对组织者的尊重。

最后,作者分享了关于如何找到讲者、场地、以及保持高质量内容的建议,鼓励更多人参与并组织类似的 Meetup 活动。


HN 热度 211 points | 评论 79 comments | 作者:paulgb | 10 hours ago #

https://news.ycombinator.com/item?id=40897506

  • 有人认为应该由市政府提供免费的聚会场地,以支持本地非营利和特殊兴趣团体。
  • 一些人建议聚会主持人应该有一定的筛选标准,如让演讲者先参加几次会议才能演讲,演讲时不提及雇主/产品等。
  • 有人提到在日本有社区中心可以用作聚会场地,费用很低。
  • 有人认为应该避免让聚会变成产品推销会,而应该注重技术分享和讨论。
  • 有人表示大学应该开放他们的设施举办活动,但需要小心避免滥用。
  • 有人提到在波特兰曾经有很多技术聚会,但随着时间推移,这些聚会逐渐消失,主要是因为运营聚会需要大量工作,而且资金来源变少。

Malloc broke Serenity’s JPGLoader, or: how to win the lottery (2021) #

https://sin-ack.github.io/posts/jpg-loader-bork/

这篇文章讲述了在 SerenityOS 操作系统中解码 JPG 图像时出现的一个有趣的 bug。当查看 JPG 图像时,图像显示出了错误的颜色,经过调查发现是由于 RGB 和 BGR 的混淆导致的。通过对 JPGLoader.cpp 进行修改,问题得以解决。

然而,为什么会出现这个问题呢?经过对过去 1000 个提交的二分查找,最终找到了导致 JPG 图像出错的提交。原来是由于对 AK 库进行的更改,导致 JPGLoader 中的 HashTable 容量发生变化,进而影响了 JPG 图像的解码顺序。

最终通过修复 Hash 表容量问题,成功解决了 JPG 图像颜色错误的 bug。整个调试过程持续了大约 10 个小时,最终问题得以解决。


HN 热度 190 points | 评论 154 comments | 作者:fanf2 | 15 hours ago #

https://news.ycombinator.com/item?id=40896102

  • 许多哈希表实现引入随机因素,避免依赖元素顺序导致问题,同时防止安全问题;
  • 现在许多实现保证哈希表按插入顺序迭代,避免选择有序或无序地图;
  • JavaScript 的迭代顺序过去不固定,但浏览器实现后来将其固定为插入顺序;
  • 对于标准库中的哈希映射,应随机化迭代顺序或保证迭代顺序,避免 Hyrum’s Law;
  • Python 经历了从“任意但确定性”到“故意非确定性”再到从 3.6 开始的“插入顺序”;
  • Perl 也改变了行为,从 5.18 开始每个解释器启动时使用随机种子;
  • Rust 有具有随机顺序的 HashMap 和按键排序的 BTreeMap,还可以使用 IndexMap crate 保持映射插入顺序;
  • 对于可适应 CPU 缓存的不可变数据,利用排序向量比映射更快且占用更少内存;
  • 索引映射不应明显比 HashMap 占用更多内存,除非键和值非常小。

Why privacy is important, and having “nothing to hide” is irrelevant (2016) #

https://robindoherty.com/2016/01/06/nothing-to-hide.html

这篇文章探讨了为什么隐私重要,以及拥有“没有什么可隐藏”是无关紧要的观点。文章指出澳大利亚、德国、英国和美国政府正在破坏个人隐私,但有些人却认为这并不是问题。作者强调隐私是赋予个人的权利,是自由表达、结社和集会的基础,这些对于一个自由民主社会至关重要。政客们声称“如果你没有什么可隐藏,那就没有什么可害怕”的说法是故意曲解整个辩论。

文章还探讨了隐私与自由之间的关系,指出隐私丧失会导致自由受到威胁。个人的网络使用受到监视,思维模式和意图可能被推断出来,而知道自己被监视会使你不太可能研究某个特定主题。此外,文章还提到了信息聚合的问题,即即使你认为没有必要隐藏的信息也可能被聚合成一个具有潜在隐私问题的档案。

作者还讨论了个人和社会因大规模监视而产生的冷漠效应,以及监视系统可能被滥用和误用的风险。文章警告说,如果继续沿着当前的道路前行,将更多权力纳入我们的监视系统,我们曾经认为是私人生活的东西将被逐渐削弱到无以复加,我们所认为理所当然的自由将不复存在。文章最后提出了一些行动建议,包括加入隐私黑客组织、传播隐私意识、保护个人数据免受大规模监视等。


HN 热度 186 points | 评论 126 comments | 作者:imadj | 1 day ago #

https://news.ycombinator.com/item?id=40892259

  • 大多数人说“我没有什么可隐藏”只是在模仿他们尊重的人或至少说话好的口号,特别是自斯诺登以来,只是轻率的失败主义,认为“他们已经拥有了我的所有信息”这也是一种不好的思考方式
  • 主要问题是没有非暴力纠正问题的手段,当反馈系统失败时,事情会变得更糟,直到人们采取行动,那将是破坏性的
  • 隐私是任何起义的必要和必需的元素,因此通过消除它,无法采取任何纠正行动,滥用将不断恶化
  • 许多“无需隐藏”的支持者隐含地假设唯一的问题涉及大多数原则性良好的代理人进行基于事实的调查,然而这远不是整个问题
  • 政府总是寻求对公民进行更多监视,如果我们不反击并努力保护我们的自由和隐私,我们最终会陷入奥威尔的《1984》中
  • 政府总是寻求更多监视,这对他们来说就像毒品一样,如果我们不反击并努力保护我们的自由和隐私,我们最终会陷入奥威尔的《1984》中
  • 许多政府已经放弃了权力,包括监视,斯塔西和皮诺切特都失去了权力
  • 他们会寻求更多监视,因为大多数公民希望安全和一个能干和高效的政府胜过个人自由
  • 政府总是寻求对公民进行更多监视,这是因为大多数公民意识到,如果他们将个人安全外包给最强大的第三方,他们的生活平均会更好
  • 直到这个第三方变得不方便腐败,我们继续拥有社会,因为普通人意识到,如果他们将个人安全外包给最强大的第三方,他们的生活平均会更好

Show HN: BeaconDB – An Alternative to Mozilla Location Services #

https://beacondb.net/

网站 https://beacondb.net/ 是一个名为 beaconDB 的网站,它的内容主要包括以下几个方面:

  1. 数据收集:该网站通过道德途径进行数据收集,只有用户自愿选择参与才会进行数据收集。
  2. 隐私保护:网站发布的信息会被混淆,以保护信标和贡献者的隐私。
  3. 抗滥用:更新现有数据需要在信标的物理范围内获取信息。
  4. 贡献:beaconDB 最近开始接受提交。用户可以使用手机上的应用程序来为自己的地区增加覆盖范围。
  5. 使用:beaconDB 是实验性质的,不应该用于关键服务。如果您拥有运行最新预览版本 microG 的 Android 手机,可以轻松尝试 beaconDB。
  6. 开发者:beaconDB 提供了一个与 Ichnaea 请求格式兼容的端点。但是,如果您的软件用户量大,请不要将其作为默认位置服务,因为 beaconDB 基础设施尚不能处理大量请求。
  7. 数据转储:目前还没有数据转储可用,因为作者仍在研究如何保护贡献者和 AP 所有者的隐私。

该网站还提供了源代码、聊天和隐私声明等信息。


HN 热度 185 points | 评论 44 comments | 作者:joelkoen | 17 hours ago #

https://news.ycombinator.com/item?id=40895672

  • 评论中提到,BeaconDB 的数据收集是自愿的,但如果邻居扫描 WiFi 网络并上传到 BeaconDB,我并没有完全自愿,因此更像是选择退出而不是选择加入。
  • 数据收集者选择收集数据,对于数据收集者来说,你的 WiFi 就像是公开的。
  • BeaconDB 不会以明文形式发布 AP macaddr 的信息,数据转储将只包含不可逆转的加密哈希数据或聚合数据。
  • MAC 地址只有 48 位,某些位受限制,可以通过暴力破解来逆转所有哈希。
  • BeaconDB 是目前唯一不属于大型科技公司的数据库,因此许多人开始贡献数据支持替代方案。

Mongo but on Postgres and with strong consistency benefits #

https://github.com/event-driven-io/Pongo

GitHub 上的项目"Pongo"是一个基于 PostgreSQL 的 MongoDB 替代方案,具有强一致性的优势。Pongo 将 PostgreSQL 视为文档数据库,并利用 JSONB 支持。相比传统的 JSON 类型,JSONB 以二进制格式存储 JSON 数据,带来了性能和存储效率方面的显著优势。

Pongo 使用类似于 MongoDB 的 API,并将其转换为本机 PostgreSQL 查询,从而实现了类似 Marten 和 AWS DocumentDB 的概念。项目提供了示例代码和详细的用法说明,展示了如何使用 Pongo 语法进行数据操作,包括插入、更新、删除和查询等操作。此外,Pongo 还介绍了 PostgreSQL JSONB 的存储优势,包括数据预解析、高级索引选项和灵活的半结构化数据存储能力。

尽管 Pongo 并非 ORM(对象关系映射),但它专注于有效处理文档数据的特性。项目还指出 Pongo 目前尚未完全符合 MongoDB 标准,但在安全性和可用性方面已经可以投入生产使用。


HN 热度 152 points | 评论 78 comments | 作者:oskar_dudycz | 10 hours ago #

https://news.ycombinator.com/item?id=40897518

  • JSONB 列在某些应用中很有用,但引入了很多额外的查询复杂性,失去了一些从关系模型中加速查询性能的方法。
  • 有人尝试使用 JSONB 列作为关系表的前端,外部与数据库的交互使用 JSON,内部实际上创建了一个实时的材料化视图。
  • Pongo 提供了类似于 Node 的 MongoDB 驱动程序的 API,使用 PostgreSQL 作为后端存储。
  • Postgres 和 MongoDB 在处理事务逻辑时偶尔会出现错误,但这并不妨碍使用它们。
  • Deadlocks 是应用程序问题,如果数据模型不同,可以完全消除死锁。
  • 使用 JSONB 在 RDBMS 中存储数据在某些情况下效果很好,同时还可以利用 Postgres 的所有功能。
  • Postgres 支持外部数据包装器(FDW),这是分布式数据库的基本构建块。
  • 分布式强一致性可能会影响分布式数据存储的延迟和可用性。
  • MongoDB 曾被营销为存储非结构化文档的理想选择,但现在随着 Postgres 也具备这种功能,MongoDB 的独特性正在被重新评估。

Show HN: Execute JavaScript in a WebAssembly QuickJS sandbox #

https://github.com/sebastianwessel/quickjs

这个 GitHub 项目是一个使用 TypeScript 编写的包,用于在 WebAssembly QuickJS 沙盒中执行 JavaScript 代码。它允许您在安全的环境中执行 JavaScript 代码,利用了快速轻量的 QuickJS 引擎编译为 WebAssembly,提供了一个强大的代码执行环境。该项目具有以下特点:

  • 安全性:在安全的隔离环境中运行不受信任的 JavaScript 代码。
  • 文件系统:可以挂载虚拟文件系统。
  • 自定义 Node 模块:可挂载自定义的 Node 模块。
  • Fetch 客户端:可以提供一个 Fetch 客户端来进行 http(s)调用。
  • 测试运行器:包含一个测试运行器和基于 Chai 的断言。
  • 性能:受益于轻量高效的 QuickJS 引擎。
  • 多功能性:可以轻松集成到现有的 TypeScript 项目中。
  • 简单易用:用户友好的 API,用于在沙盒中执行和管理 JavaScript 代码。

您可以在该项目的完整文档中查看更多信息,也可以在存储库中找到示例。基本用法包括加载和初始化 QuickJS wasm,创建每次执行 js 代码时的运行时实例,以及执行代码。该项目基于 quickjs-emscripten、quickjs-emscripten-sync、memfs 和 Chai 等库,并使用了一系列工具。项目采用 MIT 许可证,适合希望在 TypeScript 应用程序中安全执行 JavaScript 代码的开发人员。


HN 热度 130 points | 评论 33 comments | 作者:sebastianwessel | 12 hours ago #

https://news.ycombinator.com/item?id=40896873

  • 评论中有人认为这个工具对于在 WebAssembly QuickJS 沙箱中安全执行 JavaScript 代码非常有用。
  • 有人提到这个工具可以在安全、隔离的环境中运行不受信任的 JavaScript 代码。
  • 评论中指出这个工具可以挂载虚拟文件系统和自定义 Node 模块。
  • 有人强调这个工具提供了 fetch 客户端来进行 http(s)调用。
  • 评论中提到这个工具包含了测试运行器和基于 chai 的 expect
  • 有人称赞这个工具利用了轻量高效的 QuickJS 引擎。
  • 评论中指出这个工具易于与现有的 TypeScript 项目集成。
  • 有人认为这个工具提供了用户友好的 API 来在沙箱中执行和管理 JavaScript 代码。

Why Italy Fell Out of Love with Cilantro #

https://www.atlasobscura.com/articles/what-are-italian-herbs

这篇文章探讨了意大利草药中的一种,也就是芫荽(又称香菜)。文章指出在古罗马时代,芫荽是一种常见的调味品,被用于制作酱汁、沙拉、烤肉和调味饮料等。然而,到了 19 世纪末,意大利人逐渐停止使用芫荽。

在现代意大利,芫荽的使用已经大大减少,尤其是芫荽叶几乎不再被使用,而芫荽籽仅在一些特定的菜肴中使用。文章还提到了芫荽在古罗马时代的种植和用途,以及在中世纪后逐渐式微的原因,包括来自北方日耳曼部落的影响和进口香料的兴起。

最终,文章指出现代意大利人将芫荽视为外来调味品,不再与意大利菜系联系在一起,反映了意大利人对烹饪身份的认同变化。


HN 热度 123 points | 评论 136 comments | 作者:pepys | 18 hours ago #

https://news.ycombinator.com/item?id=40895441

  • 有人认为香菜的味道像肥皂,但随着时间的推移,他们逐渐开始喜欢香菜的味道;
  • 有人认为香菜的味道类似臭虫,但并不觉得像肥皂;
  • 也有人表示从未觉得香菜的味道像肥皂,甚至开始喜欢它;
  • 有人认为香菜的味道类似肥皂,因此总是告诉餐厅不要放香菜;
  • 有人刚开始尝试香菜时觉得像肥皂,但随着时间的推移,逐渐习惯并喜欢上了;
  • 也有人提到人类的味蕾会随着时间和经常性的接触而改变,类似于对苦味的适应;
  • 还有人分享了关于土豆的经历,表明个人口味可能会随着时间和经验而改变。

Show HN: A free minimalist daily habit tracker #

https://rdht.vercel.app/

这是一个每日习惯追踪应用,可以完全离线使用,无需网络连接。你可以追踪每个习惯的连续天数,记录完成情况和最长连续天数。如果需要休息,可以暂停应用,然后随时回来继续。

你可以通过简单易用的可视化地图查看每天的完成情况。此应用支持完全离线使用,如果需要在多个设备之间同步数据,可以使用电子邮件进行登录。


HN 热度 122 points | 评论 66 comments | 作者:pixd | 1 day ago #

https://news.ycombinator.com/item?id=40893866

  • 观点 1: 对于类似应用的评论,指出内容过多、易丢失,建议应用帮助“去线性化”日常时间线。
  • 观点 2: 赞赏应用设计精致,提到自己也开发了类似应用,但难以持续使用。
  • 观点 3: 对于“免费试用”字样的反馈,建议明确付费计划,避免误解。
  • 观点 4: 指出首页两张低分辨率图片问题,建议直接展示组件。
  • 观点 5: 肯定应用外观和响应性,提及使用的技术和限制。
  • 观点 6: 建议增加习惯的折叠视图和任务完成指示。
  • 观点 7: 在 iPhone 上的显示问题,提及键盘遮挡描述字段,建议改进。
  • 观点 8: 称赞应用设计,提到自己也在开发类似应用,分享经验。
  • 观点 9: 对应用设计风格表达个人看法,建议更换更平静和积极的品牌形象。
  • 观点 10: 指出对于提高生产力,应该包容内在童心,对应用设计风格提出独特看法。
  • 观点 11: 对于习惯追踪工具的个性化需求,分享自己开发的追踪器。
  • 观点 12: 对于习惯追踪中的“连续打卡”功能表示兴趣,分享其他类似应用。
  • 观点 13: 赞赏应用设计简洁,提及添加历史记录的功能。
  • 观点 14: 自我推广一款名为 Quick Calories 的应用,分享链接并提到自己的减肥经历。