第337期 — 2025-10-11

在浏览器中阅读

周e信

扫描二维码关注微信公众号

Node.js

当我说“字母顺序”时,我指的是“字母顺序”🔗

作者讲述了他和父亲一起徒步旅行后,将手机拍摄的照片整理到共享文件夹时遇到的排序问题。原本以为按照文件名(IMGYYYYMMDDHHmmss)字母顺序排列就等于按日期排序。但实际上,在Windows电脑、Google Drive、KDE Dolphin等多个平台和文件管理器中,排序结果都不正确。即使使用Linux命令ls可以正确排序。

经过一个多月的调查,作者发现问题在于这些操作系统和文件管理器对“字母顺序”的理解与传统意义上的字母顺序不同。它们会将文件名中的数字部分识别为数值,并按照数值大小进行排序。

具体到作者的问题,是由于他父亲的手机在文件名中将毫秒直接接在秒后面,而他的手机用下划线分隔了秒和毫秒。这种差异导致在“智能”排序算法下,没有下划线分隔的文件名因为包含更大的数值而排在后面。

seba

取代流行的 npm 包的15个Nodejs新功能🔗
  1. Node.js 18 + 全局fetch()替代node-fetch(仅旧版本需保留node-fetch);2. Node.js 21.0.0 + 实验性全局WebSocket类替代ws的客户端功能(服务端仍用ws);
  2. Node.js 18.0.0 实验性、20.0.0 稳定版的node:test替代mocha/jest/tap等测试框架(需快照、Mock 等功能仍用第三方);
  3. Node.js 实验性node:sqlite替代sqlite3/better-sqlite3(需高级性能调优仍用社区包);
  4. Node.js 20.12.0 引入、22.17.0 稳定的util.styleText()替代chalk/kleur(需主题、链式语法仍用chalk);
  5. Node.js 内置util.stripVTControlCharacters()替代ansi-colors/strip-ansi(多数场景无需第三方);
  6. Node.js 22 + 的fs.glob()替代glob(旧版本需保留glob);
  7. Node.js 12.10.0+(回调)、14+(Promise)fs.rm({ recursive: true })替代rimraf;
  8. Node.js 10.12.0+fs.mkdir({ recursive: true })替代mkdirp;
  9. Node.js 14.17.0+crypto.randomUUID()替代uuid(v4);
  10. Node.js 20.0.0 + 全局atob/btoa及Buffer替代base64-js/atob polyfills;
  11. Node.js 20.0.0 + 实验性URLPattern替代url-pattern;
  12. Node.js 20.10.0 + 实验性--env-file参数替代基础dotenv(需变量扩展等仍用dotenv);
  13. Node.js 15.0.0 引入、15.4.0 稳定的全局EventTarget替代event-target-shim;
  14. Node.js 21.0.0 + 实验性--experimental-strip-types参数替代基础tsc转译(需类型检查、声明文件仍用tsc)

Lizz Parody

Javascript

@epidemian

使用Object.groupBy 和 Map.groupBy分组🔗

Object.groupBy()适合用字符串键、需 JSON 序列化或处理普通对象的场景,但会将键转为字符串;Map.groupBy()支持非字符串键(如数字、对象)、能保留键的插入顺序,还可使用keys()等专属方法,却无法 JSON 序列化

Matt Smith

移动端

Imgur 因数据监管机构威胁罚款而退出英国🔗

Imgur图片托管网站因数据监管机构威胁罚款而退出英国市场。英国信息专员办公室(ICO)对Imgur的母公司MediaLab进行了调查,原因是担心儿童数据处理问题,并发布了准备处以罚款的意向通知。ICO强调,即使退出英国,公司也不能逃避之前违反数据保护法的责任。Imgur于2009年成立,2021年被MediaLab收购,是一个流行的图片托管和分享网站,服务已于昨日在英国停止。

Aaron Newbury

自由开源应用程序的平台F-Droid 和 Google 的开发者注册法令🔗

F-Droid是一个为Android用户提供安全可靠的自由开源应用程序的平台,与充斥着间谍软件、诈骗和恶意盈利手段的商业应用商店(如Google Play)形成鲜明对比。F-Droid通过审查应用源码,确保其开源且不包含广告或追踪器等不良功能,来保障用户利益。

谷歌的新规定要求所有Android开发者必须在谷歌进行集中注册,包括支付注册费、同意霸王条款、上传个人身份证明文件以及提供所有应用的应用标识符。F-Droid认为,这项规定将扼杀F-Droid以及其他自由开源应用分发渠道,剥夺用户安全可靠的应用选择,因为F-Droid无法强制开发者在谷歌注册,也无法“接管”开源应用的应用标识符。

文章反驳了谷歌声称开发者注册是为了安全起见的说辞,指出Google Play也曾多次出现恶意软件,而F-Droid通过开源、公开审计和可复现构建等方式提供了更值得信赖的安全性。文章认为,谷歌的真正目的是巩固权力并加强对开放生态系统的控制。

文章强调用户有权在自己的设备上运行任何程序,强制开发者注册是对自由言论和思想的侵犯。文章呼吁监管机构审查谷歌的行为,保护替代应用商店和开源项目自由运营的能力,保护那些无法或不愿遵守排他性注册计划和个人信息要求的开发者。

文章最后呼吁开发者和用户积极行动起来,向议员、代表或欧盟委员会表达对保护开放分发重要性的支持,捍卫软件应保持公共领域属性的原则,避免不必要的企业垄断。

marcprux

人工智能

Sora 2🔗

OpenAI 发布的 Sora 2 是新一代视频与音频生成模型,能创造逼真、物理一致的视频并支持人物嵌入和多风格创作;它集成在全新的 iOS 应用中,用户可创作、混剪、加入自己形象,同时强调安全、创作自主和青少年保护,被视为迈向“通用世界模拟器”的重要一步。

Kagi 新闻🔗

Kagi News 是一项全新的新闻服务,旨在解决当前新闻模式的弊端,如无休止的通知、诱导性标题和令人疲惫的信息过载。它提供一种全面、私密且尊重读者时间和智能的每日新闻综述。

通过社区管理的RSS订阅源,从全球不同视角获取信息,利用AI提炼成每日简报,并明确标明来源,力求信息多样性和透明度。

kagi

AWS CTO - 开发者越 “老”干活越厉害🔗

开发者并非越老越 “不行”,反而因见过更多问题、积累丰富实战经验,既能快速识别风险,也能保留创造力搞创新,还能看透行业重复套路;他谈及生成式 AI 虽令人兴奋但炒作过度,提到 AWS 在 AI 热潮中坚守 B2B 本职、以隐私安全和技术保障应对,同时指出当下多数企业慌着用生成式 AI 是因怕错过风口,建议先停下让相关人员补课,再按常规与客户沟通需求来决定是否使用,最后鼓励大家动手实践。

WERNER VOGELS

AI 编码陷阱🔗

作者认为目前AI编码工具(如Claude Code)虽然能快速生成代码,但由于缺乏对复杂系统全局的理解,以及无法像人类一样学习和改进,导致实际软件交付的效率提升并不像营销宣传的那么显著。

文章指出,开发者需要花费大量时间理解和修复AI生成的代码,这使得他们更像是在处理“babbling machines”的输出,而不是专注于核心的编码工作。作者将这种情况类比于技术负责人过度承担团队任务,牺牲团队成员的学习和成长机会。

文章提出,应该将AI编码工具视为“闪电般快速的初级工程师”,并通过引入软件开发生命周期的最佳实践.

Chris Loy

运维

网飞如何用预写日志(Write-Ahead Log,简称 WAL)构建高可靠数据平台🔗

这篇文章展示了 Netflix 在其大规模在线 / 数据平台架构中,如何用一个通用的 WAL 抽象来统一处理数据变更、复制、索引、故障恢复等一系列核心问题;

通过将这些逻辑上升到平台层,避免每个应用重复实现,并减少错误、技术债务与碎片化;

它体现了一种“把可靠性基础设施下沉到平台层”的思路,让业务服务能更多关注业务逻辑、本身的处理,而不是数据可靠性、异步补偿、容错等琐碎问题。

Netflix Technology Blog

其他

现在,炎症比胆固醇更能强烈预测心脏病🔗

文章指出,美国心脏病学会(ACC)现在建议每个人都应该通过血液检测来测量炎症指标hs-CRP,因为hs-CRP已成为比胆固醇更强的预测心脏病的指标。

Brandon Ballinger

格陵兰是一个美丽的噩梦🔗

作者讲述了自己前往格陵兰岛的经历。格陵兰岛对丹麦来说是一个复杂的地方,一方面丹麦曾对格陵兰进行过不道德的实验,另一方面丹麦人也对格陵兰感到自豪。

作者一行人前往格陵兰岛的过程十分曲折,由于大雾,飞机被迫在空中盘旋数小时后飞往冰岛加油,最终返回丹麦重新出发。抵达格陵兰首府努克后,作者感受到当地人平静的生活节奏,但也意识到当地恶劣的自然环境。努克的交通拥堵让人费解,而当地的商店主要出售酒类、零食和保质期长的食物,肉类很少。

随后作者一行人飞往伊卢利萨特,那里的蚊虫数量惊人。作者还描述了当地的雪橇犬的生活环境,以及观看冰山和体验当地交通工具的经历。作者还了解了当地人食用鲸鱼肉的习俗,以及捕鲸方式的工业化。

最后,作者总结说,格陵兰岛是一个独特而严酷的地方,虽然当地人非常友善,但它也是他所去过的最不适宜人类居住的地方。如果你喜欢这样的体验,格陵兰岛会是一个不错的选择。但不要对雪橇犬和鲸鱼产生感情。

diff差异算法以及适用于go的diff库🔗

作者因不满现有 diff 工具库(用于对比文件 / 数据变化,如代码评审时查看修改)的局限 —— 或仅支持文本、输出难读,或 API 复杂、极端场景下性能差,遂开发了一款 Go 语言 diff 库。文章先说明 diff 工具的用途,对比了 Go 生态中多款现有库的不足,接着分析开发 diff 库的两大难点:一是基于迈尔斯算法等的工具在数据差异大时性能受限,耐心算法等又有适用范围;二是即便找到最小差异,不同展示方式可读性差异大。随后介绍新库的优势,支持任意类型输入、灵活输出(统一格式与结构化结果),提供三种模式平衡速度与差异最小化,还通过预处理、启发式优化、后处理提升性能与可读性,设计了简洁 API,最后提及库当前满足自身需求,欢迎反馈,也保留了待研究的问题。

Florian Zenker

Signal 协议进行重大升级 - 后量子棘轮🔗

Signal 宣布对其 Signal 协议进行重大升级,引入了 Sparse Post Quantum Ratchet (SPQR),旨在增强协议抵抗未来量子计算威胁的能力,同时保持前向保密 (FS) 和事后入侵安全性 (PCS) 的现有安全保障。

Graeme Connell and Rolfe Schmidt

Privacy Badger 是 EFF 制作的用于阻止监视的免费浏览器扩展程序🔗

Privacy Badger是一款由电子前哨基金会(EFF)开发的免费浏览器扩展,旨在阻止公司在线上监视用户。它通过自动分析和阻止侵犯用户隐私的第三方追踪器来实现。与传统的广告拦截扩展不同,Privacy Badger主要关注隐私保护,只有当广告同时也追踪用户时才会拦截。它采用算法来判断是否进行追踪,并会向网站发送Global Privacy Control (GPC) 信号和Do Not Track (DNT) 信号,告知用户不希望被追踪。如果追踪器忽略这些信号,Privacy Badger会自动拦截它们。

Electronic Frontier Foundation

Gmail 将不再支持通过 POP 检查来自第三方帐户的电子邮件🔗

从2026年1月开始,Gmail将不再支持以下功能:

  • Gmailify: 将Gmail的特色功能(例如垃圾邮件防护和收件箱组织)应用于第三方电子邮件帐户。
  • 通过POP从其他帐户检查邮件: 将不再支持通过POP协议从第三方帐户获取电子邮件到Gmail帐户。

Google

75岁以后在美国退休是何种光景🔗

根据美国劳工统计局的数据,在 75 岁及以上的美国人中,有近 9% 仍在工作或者仍在找工作。这个比例比 20 年前(约 6%)要高。

同样,在 65–74 岁这一组的人中,劳动参与率也有显著提高。

采访推迟退休者的生活状态 文章采访了四位选择推迟退休的美国人,探讨他们在高龄工作/退休阶段的财务状况和日常时间安排。

这些受访者的经历体现了:即便年纪已大,他们仍愿意继续工作,从事兼职或灵活安排的岗位,以维持收入、延缓资源枯竭,或维持社交与精神状态。

背后的动因与挑战

寿命延长 & 退休金压力:随着人均寿命的延长,传统的退休年龄与退休金制度面临挑战。很多人觉得退休金或社会保障不够支撑长寿时期的生活。

健康、能力与意愿:是否能继续工作,不只是取决于体力和健康状态,还取决于个人意愿、职业类型、市场需求等因素。

社会与制度适配:高龄就业者常面临年龄歧视、岗位不匹配、福利制度不完善等问题。文章也可能讨论这些制度上和社会态度上的矛盾与困境。

Anne Tergesen, Veronica Dagher

扫描二维码关注微信公众号