2024 07 28 HackerNews

2024-07-28 Hacker News Top Stories #

  1. SQLite数据库处理小BLOBs时比文件系统快35%,尤其在Windows上优势明显,减少系统调用次数是原因之一。
  2. 欧洲的科技监管政策可能因过度干预而导致科技市场萎缩,影响技术创新和竞争力。
  3. Tailscale提出新互联网概念,旨在简化网络连接,提供端到端加密和身份验证,打破云计算集中化模式。
  4. 《Linux内核模块编程指南》是一本免费书籍,帮助开发者理解和编写Linux内核模块,涵盖基础概念到高级主题。
  5. 贝叶斯统计中的三种文化——主观、客观和实用,探讨先验选择和模型迭代的重要性。
  6. AMD Zen 5架构采用2步前分支预测器,基于30年理论,提高单核性能,每个周期预测两个分支。
  7. 尼尔·斯蒂芬森的文章《在开始时是命令行》探讨了操作系统发展历程,尤其是CLI与GUI的对比。
  8. 美国法院限制了边境无证搜查手机的行为,强调手机搜索需有合理理由和搜查令。
  9. 色度图的形状源于人眼对红、绿、蓝光的感知,文章解释了色彩匹配函数和色度图生成原理。
  10. Sensor Watch项目将TOTP令牌集成到经典卡西欧F-91W手表,提供安全的2FA认证,无需蓝牙连接。

SQLite: 35% Faster Than the Filesystem #

https://sqlite.org/fasterthanfs.html

该页面的标题为《比文件系统快 35%》,主要讨论了 SQLite 数据库在处理小型二进制大对象(BLOBs)时的性能优势。以下是详细摘要:

1. 概述 #

  • 性能优势:SQLite 在读取和写入小型 BLOB(例如缩略图)时,比直接从磁盘文件使用 fread()fwrite() 快约 35%。
  • 空间效率:一个存储 10KB BLOB 的 SQLite 数据库所占用的磁盘空间比存储相同 BLOB 的单独文件少约 20%。这是因为 SQLite 数据库中的数据更紧凑,而单独文件通常会填充到文件系统块大小的下一个倍数。

2. 性能差异原因 #

  • 系统调用:使用 SQLite 时,open()close() 系统调用只需调用一次,而使用单独文件时,每个 BLOB 都需要调用一次。这意味着 SQLite 的开销更小。
  • 未来性能:文章提到,测试是在 2017 年进行的,使用的 SQLite 版本在 3.19.2 和 3.20.0 之间,未来版本可能会表现得更好。

3. 测试方法 #

  • 测试程序:使用 kvtest.c 程序进行 I/O 性能测试。测试包括生成包含 100,000 个随机 BLOB 的数据库,并将这些 BLOB 导出为单独文件。
  • 性能测量:通过比较从 SQLite 数据库和从单独文件读取 BLOB 的时间,得出 SQLite 的读取速度更快。

4. 相关研究 #

  • 其他研究:2022 年的一项研究表明,SQLite 在实际工作负载下比 Linux 上的 Btrfs 和 Ext4 快约两倍。Jim Gray 等人的研究也表明,对于小于 250KiB 到 1MiB 的 BLOB,数据库读取速度优于文件 I/O。

5. 读写性能测量 #

  • 读取性能:在不同系统上进行的测试显示,SQLite 的读取速度普遍快于直接文件读取,尤其是在 Windows 系统上。
  • 写入性能:写入速度普遍慢于读取,且在所有系统上,写入性能比读取慢 5 到 15 倍。SQLite 的写入操作是事务性的,提供了更好的数据安全性。

6. 总体发现 #

  • SQLite 在读取和写入 BLOB 时通常比将 BLOB 存储在单独文件中更快。
  • 在 Windows 系统上,SQLite 的写入速度在启用防病毒软件时显著优于直接写入磁盘的速度。
  • 读取速度普遍快于写入速度。

7. 附加说明 #

  • 编译与测试:提供了在 Android 上编译和测试的说明,强调了环境设置的重要性。

结论 #

SQLite 在处理小型 BLOB 时,提供了比传统文件系统更快的性能,尤其在读取操作中表现突出。这一发现挑战了“关系数据库比直接文件 I/O 慢”的常见假设。


HN 热度 424 points | 评论 162 comments | 作者:yla92 | 13 hours ago #

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

  • SQLite 在处理小文件时性能优于文件系统,尤其是在 Windows 上表现显著。
  • 使用 SQLite 时,打开和关闭系统调用只需一次,而使用单独文件时则需多次,导致性能差异。
  • NTFS 在处理大量小文件时表现不佳,开发者在构建时常选择 Linux 以避免性能损失。
  • Windows Defender 等安全软件会影响文件操作的速度,尤其是在同步模式下。
  • 开发者在使用 SQLite 时,常常会将其用于静态资源或特定应用场景,类似于游戏开发中的 CAB 文件。
  • 对于日志存储,SQLite 虽然可以使用,但在处理大规模数据时可能不如专门的列式存储数据库高效。
  • 有人提到将 SQLite 数据库嵌入到 SQLite 的 BLOB 字段中,形成更复杂的存储结构。
  • 讨论中提到,文件系统的优化和数据库的设计目标不同,适用于不同的使用场景。

Europe is in danger of regulating its tech market out of existence #

https://foreignpolicy.com/2024/07/26/europe-tech-regulation-apple-meta-google-competition/

这篇文章讨论了欧洲的科技监管政策如何可能导致科技公司退出市场,从而损害欧洲的技术创新和竞争力。

文章开头提到,苹果公司宣布推出名为“Apple Intelligence”的新产品,但因欧盟的《数字市场法》(DMA)而决定不在欧洲发布。这一决定引发了欧盟委员会执行副主席玛格丽特·维斯塔格的强烈反应,她称之为反竞争行为。然而,作者认为,科技公司选择不在某些地区发布产品实际上可能会促进竞争,而非抑制。

文章引用了经济学家阿尔伯特·赫希曼的观点,指出在不利环境中,企业有“发声”和“退出”两种选择。虽然科技公司通常会尝试通过游说和改善法律来“发声”,但在欧洲,越来越多的公司选择“退出”。例如,Facebook 因加拿大的在线新闻法而撤回新闻内容,谷歌因“链接税”退出西班牙。

作者进一步指出,欧洲的监管政策可能导致一个“碎片化的互联网”,使国际科技巨头选择退出欧洲市场。以 Meta 为例,该公司因欧盟的规定而被迫改变其商业模式,甚至面临核心商业模式被视为非法的风险。

此外,文章提到法国对 Nvidia 的反竞争指控,认为其 CUDA 软件的成功反映了监管的过度干预。作者强调,欧盟的监管措施往往针对成功的外国科技公司,而忽视了本土企业的竞争力。

最后,作者警告说,如果欧洲继续以如此严厉的方式监管科技行业,可能会导致整个地区在技术创新方面落后,最终使欧洲用户面临无法获得先进技术的风险。文章呼吁欧洲重新审视其对科技行业的态度,以避免驱逐科技公司并损害自身的经济利益。


HN 热度 318 points | 评论 630 comments | 作者:paulpauper | 1 day ago #

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

  • 欧洲的监管可能会导致技术市场的消亡,尤其是在 AI 领域。
  • 许多人支持针对大型企业的监管,但担心其他监管措施会抑制创新。
  • AI 在招聘中的使用存在种族偏见,且公司未能有效披露其模型的训练过程。
  • 监管应在体验到创新的利弊后进行,而不是在未经历之前就进行限制。
  • AI 的潜在风险已经显现,深度伪造等问题可能对民主和公共健康信息传播造成严重影响。
  • 监管可能无法有效阻止恶意使用 AI 技术,尤其是来自国外的对手。
  • 许多用户对 Apple 的封闭生态系统感到满意,但也有人认为应允许更多选择和竞争。
  • 监管可能会导致市场失去活力,创新受到压制。
  • 需要在保护用户隐私和促进市场竞争之间找到平衡。

The New Internet #

https://tailscale.com/blog/new-internet

Tailscale 的博客文章《新互联网》由首席执行官 Avery Pennarun 撰写,探讨了 Tailscale 的愿景及其对未来互联网的影响。以下是文章的详细摘要:

  1. 背景与愿景

    • Tailscale 的创始人回顾了互联网的发展,指出过去的局域网(LAN)时代相对简单,而现代互联网的复杂性使得开发者的工作变得困难。
    • 文章强调,尽管技术在不断进步,但开发者面临的日常挑战却在增加,尤其是在网络和系统的复杂性方面。
  2. 复杂性的根源

    • 现代开发者往往在编写代码之前就考虑如何扩展到数十亿用户,这种思维方式导致了不必要的复杂性。
    • 文章批评了当前的技术教育,认为它过于强调扩展性,而忽视了简单性和效率。
  3. Tailscale 的解决方案

    • Tailscale 旨在简化网络连接,消除传统互联网架构中的复杂性。它通过创建一个新的 OSI 层,提供一种更直接的连接方式,使每个设备都能轻松互联。
    • 文章提到,Tailscale 使得每个设备都能获得证书、IP 地址和 DNS 名称,从而实现端到端加密和身份验证。
  4. 去中心化的未来

    • Tailscale 的目标是打破当前云计算的集中化模式,减少对大型云服务提供商(如 AWS)的依赖。
    • 文章指出,许多开发者在使用云服务时面临高昂的费用和复杂的管理,而 Tailscale 提供了一种更灵活和经济的替代方案。
  5. Taildrop 示例

    • 文章通过 Taildrop 功能展示了 Tailscale 的潜力,Taildrop 允许用户在不经过云服务的情况下直接在设备间传输文件,消除了传统方法中的费用和复杂性。
  6. 未来展望

    • Avery Pennarun 强调,尽管目前只有少数人使用 Tailscale,但公司致力于让更多人接入这一新互联网。
    • 他认为,未来的互联网应该是开放和可访问的,任何人都能参与其中。

总的来说,文章传达了 Tailscale 对未来互联网的愿景,强调了简化网络连接的重要性,以及去中心化的潜力。Tailscale 希望通过其技术,帮助开发者更专注于解决实际问题,而不是被复杂的网络架构所困扰。


HN 热度 317 points | 评论 200 comments | 作者:ingve | 1 day ago #

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

  • Tailscale 等公司通过解决现代互联网问题而获得利益,可能会阻碍更根本的解决方案的实现。
  • IPv6 的推广缓慢与技术复杂性、用户习惯和市场需求等多种因素有关,而非单纯由某些公司造成。
  • 用户对 IPv6 的接受度受到地址记忆难度和配置复杂性的影响,影响了其普及。
  • 许多用户认为网络安全应在终端而非网络层面进行,强调“零信任”网络的重要性。
  • 依赖单一公司提供互联网基础设施的做法存在风险,可能导致集中化问题。
  • 竞争和多样性是互联网健康发展的关键,过度集中化可能导致创新受限。
  • 尽管 Tailscale 提供便利,但其商业模式可能会影响用户对互联网自由和开放性的看法。
  • 许多用户对去中心化的互联网持怀疑态度,认为技术和社会因素共同影响了其发展。

The Linux Kernel Module Programming Guide #

https://sysprog21.github.io/lkmpg/

《Linux 内核模块编程指南》是一本关于 Linux 内核模块开发的免费书籍,旨在帮助开发者理解和编写内核模块。以下是该指南的详细中文摘要:

1. 介绍 #

  • 作者与致谢:书籍由多位作者共同维护,涵盖了 Linux 内核的多个版本。
  • 内核模块定义:内核模块是可以动态加载和卸载的代码段,允许在不重启系统的情况下扩展内核功能。

2. 模块基础 #

  • 模块包:Linux 发行版提供了如 modprobeinsmoddepmod 等命令来管理模块。
  • 查看已加载模块:使用 lsmod 命令可以查看当前内核中已加载的模块。

3. 示例 #

  • Hello World 模块:通过创建一个简单的“Hello World”模块,介绍了模块的基本结构和编译过程。
  • 模块初始化与清理:每个模块至少需要一个初始化函数和一个清理函数。

4. 预备知识 #

  • 模块的开始与结束:模块通过初始化函数开始,通过清理函数结束。
  • 可用函数:模块只能使用内核提供的函数,不能使用用户空间的标准库函数。

5. 设备驱动 #

  • 字符设备驱动:介绍了如何编写字符设备驱动,包括文件操作结构和设备注册。
  • 设备文件:每个硬件设备在 /dev 目录下都有对应的设备文件。

6. /proc 与 sysfs 文件系统 #

  • /proc 文件系统:用于与内核交互,模块可以通过该文件系统读取和写入信息。
  • sysfs:提供了一种与模块交互的方式,允许用户空间程序访问内核对象。

7. 线程与进程 #

  • 阻塞进程与线程:介绍了如何管理内核中的进程和线程,包括睡眠和完成机制。
  • 避免冲突与死锁:使用互斥锁、Spinlocks 等机制来避免并发问题。

8. 调试与日志 #

  • 打印宏:使用 printk 和其他日志宏来记录内核信息。
  • 调试技巧:提供了一些调试内核模块的技巧和工具。

9. 常见陷阱 #

  • 使用标准库:强调内核模块与用户空间程序的不同,避免使用用户空间的标准库。
  • 中断管理:介绍了如何处理硬件中断和相关的中断处理程序。

10. 进一步学习 #

  • 后续学习资源:提供了进一步学习内核模块编程的建议和资源链接。

本指南适合希望深入了解 Linux 内核模块编程的开发者,涵盖了从基础知识到高级主题的广泛内容。


HN 热度 295 points | 评论 30 comments | 作者:wrycoder | 20 hours ago #

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

  • 有人希望更新《Linux 设备驱动》和 Linux 内核书籍,认为 Linux 基金会应该支持这类努力。
  • 使用 QEMU 进行内核调试是一个有效的方法,尤其是在没有控制台的情况下。
  • Greg KH 表示不会再出版《Linux 设备驱动》第四版,可能是因为不想鼓励低质量的贡献。
  • 讨论如何提高开发者贡献质量,认为提供更多的教育材料可能有助于改善贡献质量。
  • 有人提到《Linux 内存管理》一书正在编辑中,期待其发布。
  • 有人质疑书中是否使用了大型语言模型(LLM)来撰写或改进文本,认为这可能影响内容的质量。
  • 认为使用“delve”这个词并不一定意味着文本是由 AI 生成的,可能只是一个有效的同义词。

Bayesian Statistics: The three cultures #

https://statmodeling.stat.columbia.edu/2024/07/10/three-cultures-bayes-subjective-objective-pragmatic/

这篇文章讨论了贝叶斯统计中的三种文化:主观贝叶斯(Subjective Bayes)、客观贝叶斯(Objective Bayes)和实用贝叶斯(Pragmatic Bayes)。以下是对这三种文化的详细总结:

  1. 主观贝叶斯(Subjective Bayes)

    • 主观贝叶斯强调在假设数据生成分布的基础上,研究者将其先验信念编码为参数的先验分布。然后,他们进行后验推断,而不再回顾先前的假设。
    • 这种方法的严格遵循者并不多见,且现代研究者通常不会明确标识为主观贝叶斯。
  2. 客观贝叶斯(Objective Bayes)

    • 客观贝叶斯的哲学源于希望进行假设检验(例如使用贝叶斯因子)以及对“贝叶斯羞耻”的深刻感受。其推断依赖于假设模型和可用数据,所用的先验分布在信息论上是最不具信息量的。
    • 这种方法在一些学术会议和出版物中仍然受到关注,尤其是在使用广泛的伽马和正态先验分布的 BUGS 示例中。
  3. 实用贝叶斯(Pragmatic Bayes)

    • 实用贝叶斯的哲学由安德鲁·盖尔曼提出,强调将贝叶斯数据分析过程理想化为三个步骤:
      1. 建立完整的概率模型,涵盖所有可观察和不可观察的量,确保模型与科学问题和数据收集过程一致。
      2. 在观察到数据的基础上,计算和解释适当的后验分布。
      3. 评估模型的拟合度及其后验分布的含义,检查模型的合理性和结果对建模假设的敏感性。
    • 这种方法类似于工程中的迭代设计,强调实践中的反馈和模型改进。

文章还提到,贝叶斯统计的实践者在选择先验和似然时,往往会面临主观与客观的界限模糊的问题。作者认为,先验的选择并不比似然的选择更具主观性,且在哲学上,应该将先验和似然视为“知识”而非“信念”。

最后,文章提到 C.P.斯诺的“两个文化”论和 Breiman 的“统计建模:两个文化”论文,强调了在统计学中生成过程建模与灵活模型使用之间的区别。

这篇文章通过对三种文化的分析,探讨了贝叶斯统计的多样性及其在科学研究中的应用,强调了在实际应用中,模型的适应性和反馈的重要性。


HN 热度 294 points | 评论 104 comments | 作者:luu | 1 day ago #

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

  • 作者认为贝叶斯统计学者在两个维度上存在差异:一是是否根据对世界的知识或信念来设定先验,二是是否根据模型的拟合优度和输出的合理性进行迭代。
  • 有评论指出,许多自称贝叶斯的从业者实际上在行业中属于“无迭代”类别,迭代被视为必要且显而易见。
  • 迭代本身并非坏事,但在科学研究中,迭代的目标常常与科学的真实需求不符。
  • 科学与工程之间的区别在于,科学关注的是“哪种处理更好”,而工程则关注“如何改进处理”。
  • 有人认为,贝叶斯与频率派的争论在某种程度上是哲学与工程之间的延伸,科学家应当重视两者的价值。
  • 频率派方法在社会科学中仍然占主导地位,但其误用历史导致了对其的不信任。
  • 贝叶斯统计的灵活性使其易于被非统计学家滥用,尤其是在复杂模型中。
  • 许多研究者在使用贝叶斯方法时声称使用无信息先验,但实际上可能并不符合这一标准。
  • 统计显著性测试与假设检验是两种不同的方法,且各自有不同的哲学背景。
  • 统计学的历史背景影响了现代统计方法的应用,尤其是在数据稀缺的情况下。

Zen 5’s 2-ahead branch predictor: how a 30 year old idea allows for new tricks #

https://chipsandcheese.com/2024/07/26/zen-5s-2-ahead-branch-predictor-unit-how-30-year-old-idea-allows-for-new-tricks/

这篇文章讨论了 AMD Zen 5 架构中的“2-Ahead 分支预测单元”,这是一个基于三十年前的理论的新设计。文章首先回顾了分支预测的基本概念及其在现代微处理器中的重要性。分支预测的主要目的是在程序执行中减少因条件跳转而导致的性能损失。

随着处理器性能的提升,尤其是从 ENIAC 的 5 kHz 到现代 CPU 的 5+ GHz,处理器采用了流水线逻辑来并行处理多个操作。然而,条件跳转的存在使得保持流水线的高效运转变得复杂。处理器必须在跳转条件评估完成之前,尽可能准确地预测接下来的指令,以避免流水线停滞。

Zen 5 的“2-Ahead 分支预测单元”是一个重要的架构改进,旨在提高单核性能。该设计允许处理器在每个周期预测两个分支,从而减少因跳转而造成的性能损失。文章提到,虽然这一概念早在 90 年代就已提出,但随着技术的发展,AMD 重新审视并实现了这一想法。

Zen 5 的设计包括双端口的指令获取和操作缓存,使得处理器能够同时处理多个指令流。这种设计使得 Zen 5 能够在遇到两个已采取的分支时,依然保持高效的指令获取和解码能力。此外,Zen 5 还引入了三种预测窗口,进一步提升了指令流的处理能力。

总的来说,Zen 5 的“2-Ahead 分支预测单元”标志着 AMD 在提高 CPU 架构性能方面的重要进展,预示着未来 Zen 系列处理器将具备更强的分支预测能力。


HN 热度 282 points | 评论 146 comments | 作者:matt_d | 1 day ago #

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

  • 讨论了分支预测的历史和重要性,强调了其在现代 CPU 设计中的关键作用。
  • 对于 Zen 5 的 2 步前分支预测器,评论者认为其能够提高指令获取效率,可能会改善性能。
  • 有人提到,现代服务器的网络 I/O 限制可能在处理网页时更早出现,而不是 CPU 核心的饱和。
  • 讨论了数据库性能对应用程序扩展的影响,认为数据库吞吐量是扩展的主要限制因素。
  • 提到许多旧的计算机科学概念在现代硬件上重新变得可行,反映了技术的循环利用。
  • 认为多线程和分支预测的结合可能会在某些情况下提升性能,但也可能导致资源浪费。
  • 讨论了现代 CPU 在处理复杂任务时的能力,强调了对内存带宽的需求。
  • 有观点认为,分支预测的准确性在现代 CPU 中已经非常高,因此在大多数情况下,额外的资源投入并不划算。

In the Beginning Was the Command Line (1999) #

https://web.stanford.edu/class/cs81n/command.txt

《在开始时是命令行》是尼尔·斯蒂芬森(Neal Stephenson)撰写的一篇文章,探讨了计算机操作系统的发展及其对用户体验的影响。以下是该文的详细中文摘要:

文章背景 #

文章开头提到,二十年前,苹果公司的创始人乔布斯和沃兹尼亚克提出了在家中销售信息处理机器的奇特想法,随后取得了成功。同时,比尔·盖茨和保罗·艾伦则提出了更为奇怪的想法:销售计算机操作系统。操作系统的概念在当时被认为是抽象的,缺乏实体形态,用户对其理解相对模糊。

操作系统的演变 #

随着时间的推移,操作系统的市场变得庞大,甚至引发了对垄断的担忧。人们对操作系统的认知逐渐加深,甚至非技术用户也能理解不同操作系统之间的兼容性问题。文章通过对比不同操作系统(如 Mac、Windows、Linux 等)来探讨它们的用户体验和市场表现。

技术与情感的结合 #

斯蒂芬森通过汽车的比喻,阐述了用户与技术之间的情感联系。他指出,尽管某些操作系统(如 Windows)在技术上可能不如其他系统(如 Linux),但由于其市场占有率和用户习惯,许多人仍然选择使用它们。这种现象反映了用户对技术的情感依赖和对品牌的认同。

图形用户界面(GUI)与命令行界面(CLI) #

文章讨论了图形用户界面(GUI)与命令行界面(CLI)的区别。虽然 GUI 使计算机更易于使用,但也使用户与计算机之间的互动变得更加间接。斯蒂芬森认为,现代操作系统通过隐喻和抽象层次使用户体验变得复杂,用户在使用时并不总是意识到背后的技术细节。

开源软件的崛起 #

随着 Linux 等开源操作系统的出现,斯蒂芬森指出,传统的商业操作系统面临着越来越大的竞争压力。开源软件的自由和灵活性吸引了大量用户,尽管许多人仍然选择使用微软的操作系统。

结论 #

文章最后,斯蒂芬森总结了操作系统市场的复杂性,强调了技术、情感和市场力量之间的相互作用。他认为,尽管微软在操作系统市场占据主导地位,但随着用户对更好、更便宜的替代品的需求增加,未来的市场格局可能会发生变化。

这篇文章不仅探讨了技术的演变,还深入分析了用户与技术之间的情感联系,以及市场如何影响用户的选择。


HN 热度 273 points | 评论 170 comments | 作者:conanxin | 16 hours ago #

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

  • 许多评论者认为,Neal Stephenson 的文章在今天仍然具有重要的启示性,尤其是在命令行界面(CLI)与图形用户界面(GUI)之间的对比中。
  • 有人指出,Linux 和 macOS 在用户体验上有显著差异,Linux 被视为更为复杂和强大的系统,而 macOS 则更注重用户友好性。
  • 一些评论者提到,macOS 在过去十年中似乎变得“傻瓜化”,许多功能变得不易访问,用户需要通过设置或终端来恢复。
  • 也有观点认为,macOS 的核心功能和 Unix 的兼容性并没有显著变化,仍然是一个强大的开发环境。
  • 讨论中提到,命令行的优势在于其简洁性和可预测性,能够更有效地进行操作和调试。
  • 还有人提到,现代操作系统的更新和推广方式已经变得更加商业化,用户对新版本的关注度降低。
  • 一些评论者认为,CLI 的学习曲线陡峭,但一旦掌握,能够显著提高工作效率。
  • 讨论中也提到,开源软件的支持和社区参与是其成功的重要因素,尤其是在 Linux 发行版中。
  • 最后,有人强调了技术文化的变化,认为现代用户对技术的理解和接受程度正在发生变化。

Courts Close the Loophole Letting the Feds Search Your Phone at the Border #

https://reason.com/2024/07/26/courts-close-the-loophole-letting-the-feds-search-your-phone-at-the-border/

这篇文章讨论了美国法院对海关和边境保护局(CBP)在边境对手机进行无证搜索的限制。尽管 CBP 长期以来声称可以在没有搜查令的情况下进行常规检查,但纽约东区法官尼娜·莫里森(Nina Morrison)裁定,手机搜索属于“非常规”搜索,类似于身体搜查,而不仅仅是检查行李。

法官指出,手机中的信息相当于个人思想的反映,因此搜索手机数据对隐私的影响远大于检查物理物品。她强调,在边境进行手机搜索需要有合理的理由和搜查令。此外,法官还提到手机搜索对新闻自由的影响,引用了《拦截者》和《VICE》的报道,指出 CBP 曾基于记者对敏感政治问题的报道而搜索他们的手机,这可能危及其机密来源。

这项裁决是对政府在边境搜索电子设备能力的进一步限制,之前的案例也要求至少有“合理怀疑”才能进行手机搜索。尽管涉及的案件中被告的行为不当,但法官仍然认为,政府不应利用边境的法律漏洞来规避法律程序。

总之,这一裁决强调了宪法对隐私权的保护,尤其是在数字时代,手机和其他电子设备中存储的信息具有高度的个人性和敏感性。


HN 热度 267 points | 评论 116 comments | 作者:mhb | 23 hours ago #

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

  • 美国在边境对手机进行搜索的做法令人震惊,且与自由国家的形象不符。
  • 有人认为美国要求提供社交媒体账户的做法令人不安。
  • 许多人表示在多次过境中并未被要求提供社交媒体信息。
  • 非美国公民在这些侵入性搜索中缺乏保护,应该被视为人权问题。
  • 其他国家如澳大利亚也存在类似的边境搜索做法。
  • 讨论中提到,当前的“自由”国家在边境审查方面的现状令人担忧。
  • 法院的裁决可能会被上诉,且不同地区的法院对无证搜索的裁决存在分歧。
  • 有人认为最高法院可能会支持无证边境搜索的做法。
  • 讨论中提到,当前法院的组成可能对被告不太友好。
  • 有人表示,边境的搜索权利在某种程度上是合理的限制。
  • 许多评论者对美国的宪法权利在边境的适用性表示质疑。
  • 讨论中提到,非公民在美国境内享有的宪法权利有限。
  • 有人提到,拒绝合作可能会导致外国人被拒绝入境。
  • 许多评论者认为,边境搜索的法律依据存在争议。
  • 有人提到,法院的裁决可能不会改变现有的边境搜索实践。
  • 讨论中提到,手机搜索的隐私问题比身体搜查更为复杂。
  • 有人分享了在边境被要求解锁手机的经历,认为这涉及到个人隐私权。
  • 讨论中提到,政府在边境的行为可能会导致对公民权利的侵犯。

Why does the chromaticity diagram look like that? #

https://jlongster.com/why-chromaticity-shape

这篇文章的标题是《为什么色度图看起来是这样的?》,作者探讨了色彩理论,特别是 XYZ 色彩空间的概念。以下是文章的详细摘要:

  1. 引言:作者对色彩理论产生了浓厚的兴趣,开始研究 1931 年创建的 XYZ 色彩空间。文章中提到的色度图形状让人困惑,作者希望理解其背后的原理。
  2. 色彩匹配函数:文章首先介绍了色彩匹配函数,这些函数描述了特定波长的光(红、绿、蓝)如何组合以产生目标颜色。通过实验,科学家们确定了这些函数,尽管存在一些限制(如负值光源的概念)。
  3. XYZ 色彩空间:XYZ 色彩空间是 RGB 色彩空间的线性变换,解决了 RGB 模型中的一些问题。XYZ 空间能够描述所有颜色,包括那些无法在物理设备上显示的颜色。
  4. 色度:色度图是色彩的客观规格,独立于亮度。通过将 XYZ 值归一化,可以得到 xy 色度图。文章解释了如何从 XYZ 空间转换到 xy 空间,并展示了色度图的生成过程。
  5. 颜色填充:作者探讨了如何在色度图中填充颜色,提出了一种方法,通过遍历每个像素并计算相应的颜色值来实现。尽管存在一些挑战,作者展示了如何使用光的亮度值来生成 XYZ 值,并将其转换为 RGB 空间。
  6. 光谱生成:文章还讨论了如何生成光谱,利用色彩匹配函数来获取可见光波长的 XYZ 值,并将其转换为 RGB 进行渲染。
  7. 色彩空间的复杂性:作者反思了色彩空间的复杂性,尤其是在不同设备和显示器之间的色彩表现差异。文章提到,CMY 和 RGB 色彩系统的不同之处在于,RGB 是加法色彩系统,而 CMY 是减法色彩系统。
  8. 结论:最终,作者总结了色度图的形状是如何源于人眼对红、绿、蓝光的感知。通过实验得出的色彩匹配函数直接影响了色度图的形状,反映了人眼对颜色的感知方式。

这篇文章深入探讨了色彩理论的基础,尤其是色度图的形成原理,结合了科学实验和数学模型,提供了对色彩感知的深刻理解。


HN 热度 253 points | 评论 74 comments | 作者:samwillis | 1 day ago #

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

  • 有人认为在笛卡尔坐标系中绘制色度图会产生误导,因为色度图使用的是重心坐标,导致色域的形状看起来扭曲。
  • CIE 1976 u’v' 色度图被认为更接近感知均匀性,可能比 xy 色度图更好。
  • 色度图实际上是从原点到 X+Y+Z=1 平面的中心投影,而不是色彩空间的切片。
  • 色彩管理的复杂性使得许多人在处理颜色时遇到困难,尤其是在定制印刷和显示器校准方面。
  • Pantone 的价值在于其提供的标准化颜色参考,尽管有人认为其收费过高。
  • 讨论中提到的色彩空间(如 CAM16 和 CIELAB)在描述人类色彩反应方面更为直观和有效。
  • 色彩的感知不仅仅依赖于眼睛的锥体细胞,脑部的解读也起着重要作用。
  • 许多评论者对 HDR(高动态范围)的理解存在混淆,认为其设计和实现存在许多不一致性和复杂性。
  • 讨论中提到的色彩理论和色度图的复杂性使得许多商业决策变得复杂且难以理解。

TOTP tokens on my wrist with the smartest dumb watch #

https://blog.singleton.io/posts/2022-10-17-otp-on-wrist/

这篇文章介绍了如何将时间基的一次性密码(TOTP)功能集成到经典的卡西欧 F-91W 手表中,使用了 Sensor Watch 项目提供的新逻辑板。以下是详细摘要:

  1. 手表改造

    • 作者更换了卡西欧 F-91W 的原始石英机芯,安装了 Sensor Watch 的 ARM Cortex M0+ 逻辑板。该板保留了原有的 LCD 显示屏、按钮和蜂鸣器,且可编程。
    • 该手表无需蓝牙连接,具有长达数月的电池续航,用户可以在家中重建功能。
  2. TOTP 功能

    • 作者配置了 Google 和 GitHub 账户的 2FA(双重身份验证)密钥,使得一次性密码可以直接在手腕上查看。
    • TOTP 是一种基于时间的算法,生成的密码用于安全登录多个网站。
  3. 手表界面

    • 按下“MODE”按钮可以切换到 2FA 令牌界面,按“ALARM”按钮可以在不同网站的令牌之间循环。
    • 还开发了一个新的“速率计”表盘,用于测量划船或其他活动的频率。
  4. TOTP 密钥的添加

    • 用户需要从网站获取 TOTP 密钥或二维码,并将其转换为十六进制字节,添加到手表的源代码中。
    • 具体步骤包括编辑源代码文件、添加密钥、设置密钥大小等。
  5. 新表盘的编写

    • 作者分享了如何编写新的“速率计”表盘的代码,主要通过处理按钮事件和时钟滴答来实现。
    • 代码示例展示了如何在不同事件下更新显示内容。
  6. 总结

    • 作者对这个项目的乐趣和简单性表示满意,并鼓励读者尝试自己制作 Sensor Watch。

这篇文章展示了如何通过简单的硬件改造和编程,将传统手表转变为现代化的多功能设备,特别是在安全性和实用性方面的提升。


HN 热度 236 points | 评论 56 comments | 作者:alexmolas | 1 day ago #

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

  • 有人对在网页上输入 TOTP 密钥表示不安,建议使用本地工具进行转换。
  • 使用 CyberChef 等本地运行的工具可以提高安全性。
  • 对于手表的外观有不同看法,有人认为其设计不够美观。
  • 讨论了手表的兼容性和不同型号的外观。
  • 有人认为将 TOTP 显示在手表上可能存在安全隐患,但也有人认为不易被察觉。
  • TOTP 的安全性依赖于初始密钥的安全传输,攻击者需要在初始设置时截获密钥。
  • 讨论了 TOTP 与其他身份验证方式的优缺点,认为硬件密钥更安全。
  • 有人对 TOTP 的使用场景表示疑惑,认为其安全性不如预期。
  • 讨论了使用 TOTP 的便利性与潜在风险之间的平衡。