2024-04-19

33 篇热帖

2. Calculus Made Easy (calculusmadeeasy.org)

这篇文章认为微积分实际上并不像人们想象的那么困难或枯燥。作者指出,许多教科书作者——尽管他们大多聪明——却倾向于用最复杂的方式讲解,以显示自己的才智,而没有向学习者展示简单计算其实多么容易。

作者自嘲为“一个相当愚笨的人”,通过自学摆脱了这些复杂性的困扰,现在希望将那些并非困难的部分分享给其他“愚笨”的人。只要彻底掌握这些基础,其余的就水到渠成了。文章的核心思想是:一个人能做到的事情,另一个人也能做到。

3. Tesla Recalls All Cybertrucks for Faulty Accelerator Pedals (techcrunch.com)

核心事件:特斯拉因加速踏板缺陷召回全部已交付Cybertruck

特斯拉正在召回其已交付的全部3,878辆Cybertruck电动皮卡。美国国家公路交通安全管理局指出,召回原因是加速踏板存在可能卡住的风险,可能导致车辆失控,引发碰撞危险。

问题详情:

  • 具体故障表现为:加速踏板的脚踏垫片可能脱位并向上滑动,卡入脚坑周围的内饰板中。
  • 特斯拉告知NHTSA,目前尚未收到与该问题相关的碰撞或人员伤亡报告。
  • 公司调查发现,问题源于生产过程中引入了一个“未被批准的变更”——为辅助踏板垫片安装而使用了润滑剂(肥皂)。残留的润滑剂降低了垫片与踏板之间的固定强度。

公司应对与处理:

  • 特斯拉在3月31日和4月3日分别收到相关客户报告后,经过测试,于4月12日决定发起召回。
  • 公司已暂停Cybertruck的交付以解决此问题。
  • 解决方案是对所有已存在的车辆进行加速踏板的更换或改造。同时,特斯拉已开始生产使用新型加速踏板的Cybertruck,并对正在运输途中或停放在交付中心的车辆进行修复。

背景信息:

  • 此次召回发生在特斯拉经历动荡的一周之后。该公司本周一进行了超过10%的裁员,并失去了两位最高级别的高管。随后,特斯拉还要求股东重新投票表决首席执行官埃隆·马斯克此前被法官否决的巨额薪酬方案。
  • Cybertruck自去年底开始交付,这并非该车型首次召回。但此前一次召回规模较小,涉及所有特斯拉车辆软件中警告灯字体过小的问题。该车型于2019年首次亮相。

文章作者: Sean O'Kane 是一名资深记者,十年来专注于报道交通行业的快速演变,特别是特斯拉及众多追随埃隆·马斯克的初创公司。他曾在彭博新闻社和科技媒体The Verge工作。

5. Supabase Storage: now supports the S3 protocol (supabase.com)

Supabase Storage 正式支持 S3 协议 Supabase Storage 现已成为官方的 S3 兼容存储提供商,此功能现已以公开 Alpha 版本提供。同时,可恢复上传功能也从 Beta 转为正式发布。

核心特性 Supabase Storage 引擎完全开源,并提供三种互操作协议:

  1. 标准上传:易于上手。
  2. 可恢复上传:支持大文件断点续传。
  3. S3 上传:提供广泛的工具兼容性。

采用行业标准(S3 API)旨在提升工作负载的可移植性。该 S3 协议与现有的 REST 和 TUS API 向后兼容,用户可以在云端、本地开发及自托管环境中使用。

S3 协议认证方式 提供两种认证选项:

  1. 标准访问密钥(access_key/secret_key):可在存储设置页面生成,与各类 S3 工具兼容,但建议仅在服务端使用,因为它授予完整的存储资源访问权限。未来将支持可限定访问特定存储桶的范围访问密钥。
  2. 基于行级安全(RLS)的用户范围凭证:利用 Supabase 的行级安全策略,通过 S3 协议的 Session 令牌头,将存储操作限定于特定的已认证用户或角色。

S3 兼容集成与数据工程应用 借助 S3 支持,现在可以通过可随时撤销的凭证将 Supabase Storage 连接到众多第三方工具,例如:

  • 备份与迁移工具:AWS CLI、rclone、Cyberduck。
  • 数据工程工具:数据仓库(ClickHouse)、查询引擎(DuckDB、Spark、Trino、Snowflake External Table)、数据加载器(Fivetran、Airbyte)。

其他重要更新

  • 分段上传:现支持通过 S3 协议进行分段上传,可并行上传以最大化吞吐量。
  • 可恢复上传正式发布:基于 TUS 协议,Supabase 为此开源项目贡献了多项高级功能。
  • 新功能
    • 跨桶传输:支持在不同存储桶之间复制和移动对象。
    • 标准化错误代码:统一了服务器错误代码,便于逻辑处理。
    • 多租户迁移改进:提升了跨租户迁移的稳定性和效率。
    • 依赖解耦:存储服务现已完全解耦,可作为独立服务运行。
  • 更多详情可查阅官方文档及 GitHub 仓库。
6. The Rust calling convention we deserve (mcyoung.xyz)

本文批评Rust当前的函数调用约定过于保守,甚至不如标准的C ABI高效,并提出了一个名为-Zcallconv=fast的新调用约定设计。

当前问题: Rust使用LLVM的C调用约定,这导致对简单类型(如[i32; 3])的传递方式效率低下,本应使用寄存器却使用了指针。作者指出,Clang在使用extern "C"时反而能生成更优的代码。

新设计:-Zcallconv=fast 提议引入编译器标志-Zcallconv,其值fast将启用一种更优化的调用约定。它旨在最大化寄存器使用,允许重排参数以更好地填充寄存器空间。旧约定(legacy)仍保留用于调试兼容性、函数指针和特定符号。

核心实现思路:

  1. 确定寄存器容量:通过LLVM程序确定每个目标架构的最大寄存器传递容量(例如,x86_64为6个整数寄存器和8个SSE向量寄存器)。
  2. 统一函数签名:所有-Zcallconv=fast函数在LLVM IR中应使用相同的、最大化的寄存器集签名。未使用的寄存器参数传递poison值,LLVM会将其优化为“保持寄存器不变”,从而无额外开销。
  3. 参数分配启发式
    • 将超出总寄存器空间有效大小的参数降级为“通过引用”传递。
    • 将参数拆解为基本类型(指针、整数、浮点、布尔值)。
    • 根据有效大小(排除填充字节)对基本类型进行排序。
    • 将最大的、能放入寄存器空间的子集分配给寄存器(按大小逆序分配,小类型可位打包)。
    • 剩余部分通过栈传递,大参数可通过栈上指针传递。
  4. 函数序言/尾声:在函数体内生成解码代码,将寄存器参数还原为标准Rust结构,后续优化会消除冗余操作。函数退出时统一汇编返回值。
  5. 兼容性处理:为可能被取地址或导出的函数生成一个使用legacy约定的包装器。

高级优化可能性: 作者展望了基于函数体分析的ABI优化潜力,例如:丢弃未使用的参数;如果满足条件(如T: Freeze且未逃逸),可将引用替换为传递值类型本身;利用性能分析数据优先分配热点参数的寄存器。

现状与挑战: 当前Rust未采用此方案,主要原因包括:LLVM缺乏直接控制ABI的友好接口、需要深厚的LLVM专业知识(目前贡献者较少)、以及可能增加的编译时间开销。然而,作者认为在优化构建中,运行时性能的提升远胜于编译时间的顾虑,并愿意为此提供LLVM方面的专业知识支持。

7. 3rd Edition of Programming: Principles and Practice Using C++ by Stroustrup (www.stroustrup.com)

《C++程序设计:原理与实践(第三版)》概览

基本信息

  • 书名:Programming: Principles and Practice Using C++, Third Edition (PPP3)
  • 作者:Bjarne Stroustrup(C++语言发明者,哥伦比亚大学计算机科学教授)
  • 出版商:Pearson, Addison-Wesley
  • ISBN:978-0-13-830868-1
  • 出版日期:2024年4月
  • 定位:面向从未编程过的初学者的编程入门书,也适用于希望通过现代C++提升编程风格与技术的程序员。主要设计用于课堂教学,同时兼顾自学。

核心目标与特点

本书旨在帮助学习者掌握编程基本原理现实世界所需的实用技能。主要特点包括:

  • 专注于基础:强调核心概念与技术,而非晦涩的语言细节。
  • 全面入门:涵盖过程式、面向对象和泛型编程,是通用的编程入门而非仅介绍语言。
  • 兼顾层次:既包含现代高级技术,也包含高效利用硬件所需的底层技术。
  • 实用导向:旨在为编写实用、正确、类型安全、可维护且高效的代码打下坚实基础。
  • 现代C++:使用C++20和C++23标准。
  • 涵盖广泛:包括基本概念、设计编程技术、语言特性与库。

第三版(PPP3)的主要更新

相较于第二版(PPP2),PPP3进行了显著优化:

  1. 精简篇幅:体量约为PPP2的一半。
  2. 强化基础:加强了通常在一学期内覆盖的基础章节内容。
  3. 现代特性:充分利用C++20和C++23的关键特性。
  4. 跨平台图形界面:将图形/GUI章节的代码基于Qt重新实现,提高了可移植性(如可运行于浏览器和手机)。
  5. 内容重组:将PPP2中较专门化的章节(原书中的“拓宽视野”部分)移至网站供按需使用,同时移除了纯粹的参考材料(可在线查询,如cppreference.com)。

内容结构与样章

书中涉及内置类型与用户定义类型的设计与使用,包括输入、输出、计算以及简单的图形/GUI。同时介绍了C++标准库的容器与算法。

提供的样章包括:

  • 前言
  • 目录
  • 第0章:致读者(介绍本书的方法)
  • 第10章:显示模型(展示课程进行到约第五周时的内容,体现现代C++风格)

支持资源

  • 配套材料:提供讲义幻灯片、代码等。
  • 开发环境链接:提供C++实现和软件开发环境的指引。
  • 模块使用指南:包括如何使用PPP_support.h构建PPP模块,以及相应的头文件(PPP.hPPPheaders.h)。
  • GUI支持:提供PPP3的图形界面库(对应书中10-14章),运行需要安装Qt,并附有用户手册。
  • 其他:各章节示例代码(待定)、勘误表、练习材料(待定)以及基于本书的讲课幻灯片(已更新至PPP3)和代码风格指南。

来自第二版的章节

一些PPP2的章节被单独列出,尽管基于C++14编写,但内容仍然正确且能很好地介绍相关主题,包括:

  • 计算机、人与编程
  • 自定义输入和输出
  • 理想与历史
  • 文本操作
  • 数值计算
  • 嵌入式系统编程
  • 测试
  • C编程语言
  • 术语表
8. Scale of the Universe (scaleofuniverse.com)

宇宙尺度是一个交互式体验网站,旨在启发人们了解可见与不可见世界的广阔范围。用户可以点击物体以获取更多信息,并使用滚动条进行放大或缩小查看。该网站建议开启音频以获得最佳体验。最初由 Cary Huang 创建,后经 Chloe Caruso、Ben Plate 等人重新制作。

11. SeaMonkey All-in-One Internet Application Suite (www.seamonkey-project.org)

SeaMonkey 是一个集成了多种互联网应用的套件,其核心功能包括网页浏览器、高级电子邮件与新闻组客户端、网页源阅读器、IRC 聊天以及 HTML 编辑器。该项目由社区驱动,延续了早前 Netscape 和 Mozilla 的“一体化”概念,并基于 Mozilla 项目提供的跨平台架构进行开发。

主要功能组件:

  • 浏览器: 使用与 Mozilla Firefox 相同的渲染引擎和应用平台,支持标签式浏览、源检测、弹窗拦截、智能地址栏、即时搜索等丰富功能。
  • 邮件与新闻组客户端: 与 Thunderbird 共享大量代码,具备自适应垃圾邮件过滤、标签、邮件视图、网页源阅读、标签式消息处理、多账户管理、S/MIME 加密以及支持 LDAP 的通讯录,适用于个人和企业用户。
  • 其他组件: 包含易用的 HTML 编辑器、ChatZilla IRC 聊天应用以及 DOM 检查器等网页开发工具。此外,可通过众多附加组件(Add-Ons)进一步扩展功能和自定义。

项目与社区:

  • 法律支持由 SeaMonkey 协会(SeaMonkey e.V.)提供。
  • 项目鼓励用户参与讨论、报告问题并共同改进产品。

最新动态与版本发布:

  • 2025年12月31日: 发布 SeaMonkey 2.53.23。此版本为 2.53.x 分支的增量更新,带来了多项增强、改进与修复,并包含底层平台代码的稳定性更新。该版本仅提供 64 位系统支持(Windows、macOS、Linux)。主要改进包括:
    • 新增对 PostMessageOptions 的支持以修复新版 RECAPTCHA 问题。
    • 为 Gecko 引擎添加了对 CSS justify-items 遗留特性的支持。
    • 修复了 Linux 系统关闭时的崩溃问题。
    • 修复了在 macOS 15.1.x 上通过 Finder 或 Dock 启动 SeaMonkey 的问题(建议升级至 macOS 15.2)。
  • 已知兼容性问题: 项目方意识到许多网站因仅支持最新版 Chrome 或 Firefox 而无法正常工作,相关修复工作在另一个代码分支中进行,但尚未准备就绪。
  • 其他重要新闻:
    • 2025年1月12日: 项目成员、开发者 William Andrew Gianopoulos (WG9s) 不幸去世。
    • 2022年11月6日: 提醒 macOS 用户,当时的 SeaMonkey 版本在升级至 macOS 13 Ventura 后会出现启动崩溃问题,建议暂不升级。

获取与支持:

  • SeaMonkey 2.53.23 提供 24 种语言版本。
  • 支持从之前的 2.53.x 版本自动升级,也可手动下载完整安装程序进行覆盖安装。
  • 详细的更新列表、已知问题及常见问题解答可在官方发布说明中查看。
13. C-Macs – a pure C macOS application (github.com)

C-Macs 摘要

C-Macs 是一个完全用纯 C 语言编写的 macOS 应用,不使用任何 Nib 文件或 Objective-C 代码,但通过调用 Objective-C Runtime 实现功能。

主要特点

  • 无依赖设计:应用不含 Nib 文件、Main.m 文件或 Cocoa 框架。
  • 内存高效:运行时内存占用低于 1.5 MB,主要用于窗口绘制。
  • 图形元素:使用 Core Graphics 在左下角绘制一个红色方块。

许可证

  • 无许可证限制,使用者需自行承担风险;若扩展应用,必须确保代码中不包含 Objective-C。

重要注意事项与已知问题

  • 内存管理缺陷:应用未释放分配的内存;虽有隐含的 autoreleasepool,但未显式创建。
  • 代码实践问题:依赖 __attribute__((constructor)),这并非最佳做法;包含了过多不必要的框架和 dylib 链接。
  • 兼容性限制
    • 构建和测试于 OS X Lion(10.7),理论上支持所有现代 Objective-C 运行时系统,但强烈不建议在 10.6 以下旧系统使用。
    • 框架调用符合 OS X 10.0+ 标准,但当前代码仅支持 Intel 架构;未来将优先修复此限制。
14. Earth Online: non-stop satellite monitoring platform (nimbo.earth)

Nimbo Earth Online:不间断卫星监测平台

核心功能

  • 分屏与滑动对比:支持不同日期图像的并排对比,便于直观识别地表变化。
  • 延时动画:一键生成卫星影像动画,可导出分享。
  • 四大数据图层:提供自然色、红外、NDVI(植被指数)、雷达四种可视化图层。
  • 3D视觉:支持三维地形视图,增强空间感知。

关键特性

  • 高分辨率:全球范围内最高达2.5米像素分辨率的实时卫星影像。
  • 月度更新:影像每月更新,历史数据可追溯至2019年10月。
  • 用户友好:注册即可免费使用,界面设计直观,便于探索全球地图。
  • 无云覆盖:通过合成技术生成无云无缝的全球影像。

技术与应用

  • 数据来源:基于Sentinel 1和Sentinel 2卫星数据,自动生成四种合成图层。
  • 颜色一致性:采用内部图形调和技术,确保不同时期影像色彩稳定,变化识别更准确。
  • 历史分析:支持多期影像的时间导航与对比,帮助追踪土地演变、季节性变化或突发事件。
  • 集成支持:可通过TMS/WMTS服务集成到QGIS、ArcGIS等地理信息工具。

使用与访问

  • 免费注册:用户可免费创建账户,立即开始浏览。
  • 地理信用点:每月赠送4000地理信用点,用于地图瓦片请求(1瓦片=1信用点),可通过订阅增加额度。
  • 历史影像:免费访问自2019年10月以来的所有月度合成影像。

平台目标

提供持续更新的全球高分辨率卫星影像,以直观、易用的方式帮助用户监测地表演变,揭示如植被健康、水资源状况或火灾痕迹等隐藏信息。

15. The current state of map design in OpenStreetMap (imagico.de)

OpenStreetMap 地图设计现状概览

当前OpenStreetMap的地图设计生态远不止其默认的 OSM-Carto 样式。尽管OSM-Carto是最具影响力的项目,但本文重点探讨了围绕其构建的多样化衍生项目以及独立创新项目,揭示了OSM地图设计的丰富性与面临的挑战。

核心:OSM-Carto 衍生体系

  1. 德国风格 fork:由Sven Geggus维护,采用传统德国道路地图配色,并实现了复杂的语言选择系统。它保持与上游OSM-Carto的同步,但也因此限制了其进行更大设计变更的能力。
  2. 法国风格 fork:一个较早的硬分叉,保留了OSM-Carto早期的许多颜色。引入了创新特性,如街道照明灯渲染、人行横道显示以及基于光栅渲染的低缩放级别土地覆盖。
  3. AJT-Style:由Andy Townsend维护,是功能最丰富的样式之一,高度侧重于英国和行人路线。它采用传统像素绘制的符号,设计上形式清晰高于直觉可读性,需要图例配合。其技术亮点在于使用庞大的LUA脚本在数据导入时解释标签。
  4. Tracestrack 样式:一个在OSM网站上展示的衍生样式,混合了OSM-Carto和OpenTopoMap的设计组件,并添加了面向欧洲城市的功能。但其代码仅部分开源,存在潜在的许可问题。
  5. 模仿者:一些项目(如ESRI的客户端渲染演示)独立实现了对OSM-Carto外观的模仿。这证明OSM-Carto的视觉设计已成为OSM地图设计的事实标准,同时也反映了从头设计一个同等复杂度地图的高昂成本。

独立创新项目

  1. OpenTopoMap:一个旨在模仿传统地形图的样式,直接使用Mapnik XML编写。它在地形图风格基础上进行了创新,如上下文相关的符号方向、基于孤立性的评级以及曲线标注。
  2. freemap.sk:一个户外导向的精心设计的地图样式,使用TypeScript和Mapnik XML的独特混合编写,以高质量的地形阴影渲染著称。
  3. OpenStreetMap Americana:一个基于OpenMapTiles数据模式和Maplibre GL客户端渲染的新兴项目,旨在连接美国制图传统。其突出贡献是收集了世界上最全面的数字版公路盾牌标识库。
  4. Map Machine:同时是一个渲染引擎和样式,以其海量、高度分化的点状符号集而闻名。
  5. Straßenraumkarte Neukölln:一个局限于柏林局部地区的创新实验性项目,展示了大规模OSM数据城市设计的可能性。

生态系统面临的挑战与结论

  • 工具限制:当前地图设计工具(如渲染引擎、样式语言)的功能和易用性不足,是阻碍创新的主要障碍。开发者经常需要绕过各种技术限制。
  • 创新稀缺:尽管有兴趣和才华的人很多,但由于工具的限制,真正能推动设计前沿的项目和开发者数量有限。
  • 地理与文化集中:地图设计工作在欧洲和北美项目及设计师中占主导地位。
  • 发展瓶颈:许多提及的项目活动稀少,且依赖复杂、非常规的方法来实现其设计。

文章指出,除非OSM社区内部认识到对地图设计基础工具进行投资的必要性,并推动相关进展,否则现状很难改变。短期内的发展趋势可能将受到OSM基金会近期在地图渲染方面活动的影响。

17. The Basics of Legibility: A Short Guide for Non-Typographers (www.nubero.ch)

易读性基础:非排版师简明指南

核心观点

本文从排版专业角度探讨易读性(legibility)的基本原则,重点分析字母形状设计对阅读体验的影响,并以此为标准批评苹果操作系统字体“San Francisco”在用户界面(UI)中的适用性。

易读性的首要因素:熟悉度

  • 人们阅读最熟悉、最习惯的字体最为顺畅。
  • 历史上,德语地区曾广泛使用“黑体字”(如Mainzer Fraktur),当时的读者能轻松阅读。
  • 现代读者更习惯“古风体”(如Garamond)或“无衬线体”(如Helvetica),因此阅读现代字体更快。
  • 结论:熟悉程度是影响易读性的最关键因素。

苹果“San Francisco”字体的问题

苹果为UI专门设计的SF Pro字体,虽在技术层面(如光学尺寸、空间效率)完成度高,但存在根本缺陷:

  1. 缺乏个性:字体过于平淡,虽为极简,但缺乏如Helvetica、Univers等经典无衬线体的独特性格。
  2. 缺乏明确目的:其设计未能满足UI环境的核心需求——清晰辨识单个词语
    • 在UI中,常需在非连续文本场景(如按钮、菜单)下快速识别单词。
    • 对比专为易读性设计的字体FF Unit,SF Pro中易混淆字符(如数字“1”与小写字母“l”,“Iliad”中I、l、i的辨识度)的区分度不足。
  3. 未启用的备选字形:SF Pro虽包含部分提升易读性的备选字形,但在系统中默认未激活,形同虚设。而FF Unit则将高辨识字形设为默认。

UI环境对易读性的特殊要求

  • 单个词语识别:UI中频繁出现孤立单词(如路标、按钮、菜单项)。此时,字体中单个字母的独特形状至关重要。
  • 反面示例:几何特征过强的字体(如Futura),其字母部件高度相似(如a、e、s的圆形部分),降低快速识别效率。
  • 正面示例:为导航标识设计的字体(如DIN、Fira Sans、FF Unit),通过赋予字母明显个性特征来确保高易读性。

字体选择取决于上下文

  • 无绝对最佳字体:最佳选择取决于具体用途和场景。
  • 功能优先场景:如警告标识、路牌、UI,必须选择高易读性字体(如DIN)。
  • 风格表达场景:如品牌设计、艺术海报,可选择更具表现力、可能牺牲部分易读性的字体(如Sneaker Script),用以传达特定情绪或主题。
  • UI的本质:属于功能优先场景,需要字体清晰、高效传达信息,不应为了风格而牺牲易读性。

总结

  1. 易读性首先依赖于读者的熟悉度,其次才是字体形状的设计。
  2. 用于UI的字体,必须针对非连续文本和单词识别场景进行优化,确保字符形状具有高辨识度。
  3. 苹果的San Francisco字体虽技术精良,但设计初衷偏离了UI对易读性的核心要求,其默认设置未能利用现有易读性特征。
  4. 字体无绝对优劣,选择必须基于使用目的和上下文。在UI这类强调功能性的领域,应优先选择那些为清晰阅读而设计的工具性字体。
19. I spoke with a Google worker fired for protesting $1.2B Israel contract (www.thehandbasket.co)

谷歌公司因员工抗议其与以色列政府价值12亿美元的“Nimbus项目”合同,解雇了28名相关员工。该项目自2021年启动,为以色列政府(包括国防部)提供云计算服务,自启动以来便持续面临内部批评,并在近期加沙局势后关注度加剧。

抗议以静坐形式在谷歌纽约和加州办公室举行。组织者表示,此前三年已尝试请愿、沟通等多种方式均被管理层忽视,因此采取更激烈行动以引起关注。谷歌安全部门要求抗议者离开,并最终将参与静坐的员工置于行政休假状态(并没收门禁卡),随后以“非法侵入”为由逮捕了他们。

谷歌全球安全主管在内部邮件中警告员工不要违反公司政策,此言论被员工解读为威胁。更令员工震惊的是,被解雇者中包括了并非直接参与静坐、只是路过或表示支持的同事,公司解雇行为被认为具有报复性且不加区分。

被解雇的员工、组织者之一Hasan Ibraheem表示,谷歌的反应是过度的,反映出公司害怕内部员工的集体声音。他认为此次抗议是成功的,因为它唤醒了更多员工的意识,并赢得了内部支持。他呼吁其他科技工作者关注并反对所在公司的类似行为,并强调即使面临报复,为正义发声依然至关重要。

此次事件凸显了科技员工针对公司参与有争议政府合同的内部抗议的升级,以及公司可能采取的严厉压制措施。

20. I Used Netscape Composer in 2024 (plbrault.com)

文章摘要:2024年使用Netscape Composer的体验

背景与动机

作者是一名90年代出生的科技爱好者,为重温童年技术记忆,在一台旧电脑上安装了Windows 98系统,并重新启用了1997年的Netscape Communicator软件套装。其中的Netscape Composer是他最早的网页开发工具,曾用其制作首个网页并通过软盘分享。此次实验旨在探索该老旧软件的局限性,并对比其生成的代码在2024年的表现。

实验规则与目标

  • 目标:使用Netscape Composer(4.8版本,2002年发布)尽可能复刻作者个人网站的主页设计。
  • 限制:仅使用Netscape Composer,不手写HTML或CSS代码,仅允许使用社交媒体图标的图片资源。

视觉结果对比

  • 原始设计:现代网站主页,采用简约风格、圆形头像、表情符号和自定义样式。
  • 制作结果
    • 在Netscape Composer和Netscape Navigator(1024×768分辨率)中显示。
    • 在现代浏览器中的渲染效果。
  • 主要差异
    • 页面无边距,满屏显示。
    • 头像非圆形。
    • 使用纯文本“:-)”替代表情符号(Composer插入特殊字符功能未提供所需符号)。
    • 链接始终带下划线,仅颜色可调。
    • 元素间距无法精细控制,字体依赖浏览器默认值。

生成的HTML代码分析

  • 结构:生成的HTML基于HTML 4.0过渡标准,包含基础元信息、颜色属性及表格布局。
  • 问题
    • 使用已弃用的标签(如<font><center>)和内联样式属性。
    • W3C验证显示多处错误(如无效属性、图片缺少替代文本)。
  • 兼容性:尽管代码过时,但在现代浏览器中仍能按原意渲染。

使用体验

  • 用户体验:尽管软件超过20年历史,但交互设计令人舒适,操作直觉(如文本样式调整、表格插入、图像浮动设置均较顺畅)。
  • 技术限制
    • 无法处理相对链接(自动添加../../前缀)。
    • 图像传输依赖本地FTP服务器和旧版FileZilla。
  • 总结:作者享受实验过程,认为这是对早期Web技术的愉快回顾,并感叹Web平台的健壮性使老旧HTML仍能正常工作。同时指出,良好的用户体验并非现代软件独有。
21. Women Who Code Closing (womenwhocode.com)

女性编程组织(Women Who Code)宣布关闭

组织背景

  • 创立:2011年由旧金山一群工程师发起,旨在为科技行业中的女性提供联结与支持。
  • 发展:从社区小组逐步扩展,2013年在美国加州注册为非营利组织(501(c)3),2018年总部迁至佐治亚州亚特兰大。
  • 规模:成长为拥有超过36万名技术从业者的全球性社区,成员遍布145个国家,由1000多名志愿者领导本地及线上社群。

主要成就

  • 活动与活动:举办超过2万场社区主导活动,并在世界各地举办开发者会议及技术峰会。
  • 资源支持
    • 提供超过350万美元奖学金。
    • 分发超过250万美元的会议门票。
    • 发布超过1.4万个职位机会。
  • 志愿者贡献:记录超过100万小时的高技能志愿服务时间。
  • 核心影响:为女性在科技行业中构建归属感,促进知识分享、职业指导与行业互助。

关闭原因

  • 决策:董事会于2024年4月18日投票决定解散组织。
  • 关键因素:资金来源受到严重冲击,导致无法继续维持运营及核心项目。经过全面评估后认为其他方案均不可行。

后续安排

  • 运营收尾:将有序停止所有活动,取消即将举办的节目,履行剩余义务。
  • 对社区的期望
    • 鼓励曾受益的成员继续将所得经验与支持传递给更多人。
    • 呼吁科技企业与领导者加大对女性及边缘群体的支持,推动行业多样性。
    • 建议社区成员转向其他理念相近的组织寻求持续帮助。

结束语

  • 董事会及团队对所有成员、志愿者、合作伙伴及支持者表示深切感谢。
  • 强调尽管组织实体关闭,但其精神与社区联结将持续激励女性在科技领域发展。
22. Show HN: Vapi – Convince our voice AI to give you the secret code (blog.vapi.ai)

Vapi 宣布完成 5000 万美元 B 轮融资

Vapi 是一家专注于企业级语音 AI 的公司,近日宣布成功完成 B 轮融资,筹得资金 5000 万美元。

本轮融资旨在支持公司发展,以推动下一代企业语音 AI 技术的进步与应用。

24. Ask HN: One-person companies—how do you manage it all and stay sane?
26. A former slave who became a cowboy, a rancher, and a Texas legend (www.texasmonthly.com)

丹尼尔·韦伯斯特·华莱士是19至20世纪美国得克萨斯州一位非凡的黑人牧场主,绰号“80约翰”。他于1860年出生在维多利亚县一个奴隶家庭,童年在种植园劳作,几乎没有接受过正规教育。内战后,他获得自由,并在1876年投身牛仔生涯,参与多次长途牛群驱赶,足迹遍及各大牛道,如奇瑟姆小道等。

华莱士凭借出色的才能和品格,获得了著名牧场主克雷·曼的赏识,成为其得力助手,管理牧场事务并掌管财务。他不仅在牛群管理、烙印和驯马方面技艺精湛,还擅长心算,记忆力超群。他克服了种族障碍,在西部牛仔文化中赢得了跨种族的尊重,甚至在1885年后成为少数能管理白人牛仔的黑人领班之一。

华莱士的人生目标是拥有自己的土地和牛群。通过为曼工作并精打细算,他逐步积累资本。1885年,他购买了第一块土地,并进入学校学习读写。他与妻子劳拉·迪·欧文斯结婚后,共同经营牧场,生活节俭。1903年,他加入了得克萨斯州牧场主协会,是当时该协会唯一的黑人成员。

华莱士在畜牧技术上不断创新,例如引进赫里福德牛和短角牛杂交、采用风车技术和建造混凝土水槽,这些做法后来被广泛效仿。他还积极回馈社区,资助建设教堂和学校。通过数十年的奋斗,他建立了占地约8800英亩的牧场,积累了相当于今天约2200万美元的财富。

华莱士于1939年去世。他和妻子通过遗嘱将牧场置于信托中,旨在为后代提供教育资金并保持土地完整。如今,其家族牧场由信托管理,价值估计达1500万美元。2024年,华莱士被列入国家牛仔与西部遗产博物馆的“西方伟人名人堂”,他的故事逐渐得到认可,成为牛仔文化多元历史的重要一章。

27. Dnsmasq wins the first BlueHats Prize (nlnet.nl)

Dnsmasq 项目维护者 Simon Kelley 获得了法国跨部门数字理事会颁发的首个 2024 年 BlueHats 奖,奖金为 10,000 欧元。该奖项旨在表彰对关键自由及开源软件项目做出贡献的维护者。

Dnsmasq 项目 是一个为小型网络提供核心服务的轻量级软件,包括 DNS、DHCP、路由通告和网络引导等功能。它因其低资源占用和高度集成的特点,被广泛应用于家用路由器、物联网设备以及 Android 移动操作系统中。

由法国教育部、网络安全局(ANSSI)及数字局(DINUM)官员组成的评审团认为,Dnsmasq 对网络安全具有持续的重要性。奖项凸显了这类虽然低调但构成软件基础设施关键、且由可靠团队长期维护的项目的价值。

Simon Kelley 表示,他对获奖感到高兴,认为奖金固然重要,但更关键的是这项公共认可表明 dnsmasq 仍是一项值得投入的工作。

该项目始于 2000 年代初,最初是为了解决 Simon Kelley 将笔记本电脑通过个人电脑连接到互联网的需求。他随后将项目作为自由软件发布,并不断改进至今。

奖项提名者 Samuel Bizien-Filippi 指出,Dnsmasq 是一个多功能服务器,简化了网络配置,是中小企业和公共管理部门网络中基础但常被忽视的组件。他们机构利用其进行客户端网络配置、系统自动安装和本地域名解析。

BlueHats 奖旨在鼓励自由开源软件用户重视并投资于软件维护工作。目前还有三项同类奖项待颁发,提名通道仍然开放。

28. The PostgreSQL community debates ALTER SYSTEM (lwn.net)

PostgreSQL 社区围绕是否应添加一个允许管理员禁用 ALTER SYSTEM 命令的配置参数,展开了长达数月的讨论。ALTER SYSTEM 命令用于在运行时修改数据库配置并持久化到 postgresql.auto.conf 文件中。

讨论的起点与核心分歧

  • 提案初衷:2023年9月,Gabriele Bartolini 提议增加一个配置参数(GUC)来禁用 ALTER SYSTEM。其主要目的是在 Kubernetes 或基于声明式配置管理(如 Ansible)的环境中,提升“默认安全性”和配置一致性,防止数据库内部修改覆盖外部管理的配置。
  • 主要反对意见:以 Tom Lane 为代表的反对者认为,这并非真正的安全功能,因为拥有执行 ALTER SYSTEM 权限的用户(通常是超级用户)完全可以通过其他方式修改服务器配置。他们担心这会成为一种“伪安全”措施,并可能引来错误的安全漏洞报告(CVE)。Lane 提议使用事件触发器或在应用层(如修改文件权限)自行实现限制。

误解与沟通 讨论中出现了关键的理念误解:提案方强调这是一个可用性特性,旨在关闭在声明式管理环境中不适用的配置通道;而反对方则持续将其视为一个失败的安全特性

重启与最终实现

  • 2024年1月,Robert Haas 重启讨论,承认该特性不是安全功能,但担忧其会被误解。他总结了多种实现方案,包括配置参数、哨兵文件等,并推动共识形成。
  • 2024年3月,Jelte Fennema-Nio 提交了具体的实现补丁,该补丁主要是一个配置参数。补丁版本最终加入了明确的文档说明,强调“此设置不能视为安全功能,它仅禁用 ALTER SYSTEM 命令,并不阻止超级用户通过其他远程方式修改配置”。

参数命名与细节争论

  • 参数最初命名为 externally_managed_configuration,后经讨论改为更准确的 allow_alter_system
  • Lane 曾提议当禁用此参数时,服务器应强制检查配置文件不可被 postgres 用户写入,但此建议被拒绝,因为这与特性初衷不符。
  • 经过最后的开发周期讨论,该补丁于2024年3月29日由 Haas 合并。

总结 这场讨论揭示了开源社区中技术决策的复杂性,涉及功能定位(安全 vs. 可用性)、用户体验、实施细节以及沟通成本。最终,一个旨在增强特定环境下配置管理一致性的、非安全性的可用性功能得以实现。

29. Apple deletes WhatsApp, Threads from China app store on orders from Beijing (www.cnn.com)
31. Morton: Bit Interleaving in C/C++ (github.com)

Morton 位交错实现

该GitHub仓库实现了一个用于C/C++的位交错(Bit Interleaving)功能,主要用于生成莫顿码(Morton Code),也称为Z-order曲线编码。

核心功能

仓库提供了morton()unmorton()函数,分别用于编码和解码莫顿码。其核心是将两个二进制数的位交错组合成一个新的二进制数。仓库中的图示清晰展示了这一过程:

morton(0b1100,0b0011) 的结果是 0b10100101

图中箭头直观显示了输入位如何交错排列到输出位中。

实现与性能特点

该实现注重性能,并提供了几种不同的代码路径:

  1. SWAR实现:默认使用SWAR(SIMD Within A Register)技术,执行时间约为2纳秒。
  2. BMI2指令集优化:如果编译环境支持-mbmi2编译选项,则会使用更高效的BMI2指令集,此时morton()unmorton()函数的执行时间可降至不到1纳秒。
  3. 基础实现:在没有启用任何编译器优化的情况下,执行时间约为10纳秒。

一个关键的设计特性是整个实现完全无分支,这确保了执行时间的恒定性,避免了因分支预测失败带来的性能波动。

仓库结构与文件

仓库包含以下主要文件:

  • morton.h:头文件,声明了核心函数接口。
  • morton.c:源文件,包含了位交错的核心实现代码。
  • test.c:测试文件,用于验证函数的正确性。
  • bench.c:基准测试文件,用于评估函数性能。
  • Makefile:用于编译和构建项目。

相关背景

莫顿码(Z-order曲线)是一种将多维数据映射到一维空间的编码方式,在计算机图形学、空间数据库索引等领域有广泛应用。该仓库的实现参考了以下资源:

  • Z-order曲线维基百科页面
  • 斯坦福大学的位操作技巧集合
  • Stack Overflow上关于64位莫顿码编码/解码的讨论

许可证

项目采用ISC许可证开源。

33. New Mexico: Psychologists to dress up as wizards when providing expert testimony (www.futilitycloset.com)

在1995年,新墨西哥州参议院提出了一项惊人修正案,要求心理学家或精神科医生在被告能力听证会上提供专家证词时,必须穿戴巫师装扮。具体规定包括:戴至少两英尺高的尖顶帽,帽子表面印有星星和闪电图案;佩戴至少18英寸长的白胡子;用魔杖刺穿空气来强调证词的关键点;法警需同时调暗法庭灯光并敲击锣鼓两次。该修正案在参议院获得一致通过,并准备提交给众议院。但赞助人邓肯·斯科特随后解释,此举意在讽刺心理健康从业者过度充当专家证人的现象。修正案最终被撤回,从未成为法律。