2024-11-11

34 篇热帖

1. IMG_0416 (ben-mini.github.io)

2009-2012年苹果设备“发送至YouTube”功能及IMG_XXXX现象概述

背景与功能

  • 时间范围:2009年至2012年,苹果iPhone和iPod Touch的“照片”应用内置“发送至YouTube”功能,允许用户直接上传视频至YouTube。
  • 影响:该功能简洁高效,推动YouTube视频上传量在2009年上半年激增1700%,归因于苹果与社交网络的深度整合。
  • 终止原因:2012年苹果移除了YouTube官方应用,该功能随之消失,反映了苹果与谷歌关系的转变。

IMG_XXXX命名规则与现象

  • 命名规则:iOS设备拍摄的图片和视频默认以“IMG_XXXX”格式命名,XXXX为从0001开始递增的序列号(超过10000张后重置)。
  • 无意上传:在“发送至YouTube”功能期间,大量用户无意中以默认文件名(如IMG_0416)上传视频,且未意识到内容可被公开访问。
  • 视频特点
    • 真实性:多数视频未经编辑或策划,记录了日常生活的偶然片段,如家庭活动、学习场景或即兴行为。
    • 状态独特:YouTube自动过滤有害内容后,现存视频处于“无害但非公开意图”的状态,形成了一种原生、未经修饰的社交记录。

探索与示例

通过搜索“IMG_XXXX”(如用生日0416)可发现这些视频,作者列举了三个案例:

  1. IMG_0416(2015年3月17日):一位女性拆封自己首次出版的书籍,后证实她是一位作家,该书旨在帮助妻子理解自身角色。
  2. IMG_0416.MOV(2015年6月24日):一名女性通过配对卡牌游戏学习钾盐(potash)基础知识,涉及加拿大钾盐资源等冷知识。
  3. IMG_0416(2011年2月8日):一名年轻男性在波士顿邓肯甜甜圈店戏谑地吸入糖粉,与拍摄者及旁人互动,反映了郊区生活的趣味片段。
  4. 补充案例IMG_0417(2014年3月14日):记录伴侣得知怀孕的时刻,该视频多年后仍留存,或已被家庭偶然发现。

总结与意义

  • 现象本质:这些以IMG_XXXX命名的视频形成了互联网上一种独特的“真实社交动态”,未经雕琢地呈现了陌生人的生活瞬间。
  • 文化价值:尽管内容零散,但涵盖了个人里程碑、学习时刻、家庭互动等多样场景,成为数字时代中自发、匿名的生活记录。
  • 作者观点:此类搜索体验具有“超现实”的沉浸感,展现了网络时代下普通人生活片段意外公开后产生的偶然联系。
2. Procrastination and the fear of not being good enough (swapnilchauhan.com)

这篇文章讨论了作者在读写方面长期拖延的问题,并分析了背后的心理原因及改变计划。

作者两年来一直想多读多写,但实际产出很少。表面上看是“懒惰”,但深入分析后,主要归因于两个深层问题:

  1. 自我怀疑:写作时总担心自己水平不够,因害怕达不到自我预期而无法动笔,形成“不练习→不进步→更不敢写”的循环。
  2. 过度在意他人评价:将自我价值与外界反馈绑定,看到优秀作品时容易自我否定,因担心他人看法而不敢开始。

作者认识到,只有通过持续练习才能提升技能,并决定:

  • 增加写作频率和阅读量;
  • 接受初期作品的不完美,聚焦于个人成长;
  • 忽略外界比较,通过行动突破心理障碍。

文章最后提到,作者已逐步克服这些心理阻碍,并计划持续写作。一篇后续更新指出,许多读者对此有共鸣,相关讨论曾在 Hacker News 上引发反响。

3. Voyager 1 Breaks Its Silence with NASA via Radio Transmitter Not Used Since 1981 (www.smithsonianmag.com)

旅行者1号通过自1981年未使用的备用发射器与NASA恢复通信

故障事件 2023年10月16日,NASA的旅行者1号探测器在执行指令时意外触发了自身的故障保护系统,导致主用的X波段无线电发射器被关闭。由于探测器距离地球超过150亿英里,地面团队在约两天后才确认其进入沉默状态。

意外的通信恢复 10月19日,旅行者1号再次失联。工程团队推测,探测器可能已自动切换至一台自1981年就从未启用过的备用S波段无线电发射器。该发射器工作频率(2-4千兆赫)远低于主用的X波段(8-12千兆赫),功耗更低,但信号也更微弱。

成功取得联系 尽管S波段信号更弱,且探测器现在距离比上次使用时遥远得多,NASA的深空网络仍成功检测到了这一信号。目前,工程师们正谨慎工作,避免贸然尝试重启X波段发射器,以免对探测器造成进一步风险。S波段信号强度不足以支持长期使用和接收科学数据,但足以发送指令并确认探测器指向地球。

背景与设计意义

  • 老化与挑战:旅行者1号于1977年发射,已在星际空间运行47年。此次故障是近年来继通信数据乱码后,其高龄带来的又一次技术挑战。
  • 冗余设计的价值:此次事件凸显了探测器采用冗余硬件设计的远见。备份发射器的启用,使得在主系统故障时仍能保持基本通信。
  • 任务状态:旅行者1号于2012年成为首个进入星际空间的人造航天器。其科学仪器预计可工作至2025年左右,而与该探测器的通信有望维持至2030年代。
4. Apple threatened workers over their talk about pay and remote work, feds charge (www.mercurynews.com)

苹果公司因威胁员工讨论薪酬和远程工作遭联邦政府指控

美国联邦政府指控苹果公司(Apple)因其员工讨论工资和远程工作选择而威胁并报复他们。

核心指控内容:

  • 威胁禁止讨论薪酬公平: 一起投诉指控称,一名经理在电话中告诉一名员工,苹果公司不希望员工讨论工资或薪酬公平问题。
  • 报复特定员工: 软件工程师谢尔·斯嘉丽(Cher Scarlett)据称因相关活动被排挤出公司。

行为性质:

  • 此类行为涉嫌违反保护员工讨论工资和工作条件权利的联邦法律。
5. OpenID Connect specifications published as ISO standards (self-issued.info)

OpenID Connect规范正式成为ISO标准

OpenID Connect核心规范已被正式发布为ISO/IEC国际标准,标志着该技术获得全球最高级别的标准化认可。

已发布的ISO标准清单

以下九项规范已被采纳为ISO/IEC 2024年标准:

  • ISO/IEC 26131:2024 — OpenID Connect Core 1.0(含勘误集2)
  • ISO/IEC 26132:2024 — OpenID Connect Discovery 1.0(含勘误集2)
  • ISO/IEC 26133:2024 — OpenID Connect动态客户端注册1.0(含勘误集2)
  • ISO/IEC 26134:2024 — OpenID Connect RP发起的登出1.0
  • ISO/IEC 26135:2024 — OpenID Connect会话管理1.0
  • ISO/IEC 26136:2024 — OpenID Connect前端通道登出1.0
  • ISO/IEC 26137:2024 — OpenID Connect后端通道登出1.0(含勘误集1)
  • ISO/IEC 26138:2024 — OAuth 2.0多重响应类型编码实践
  • ISO/IEC 26139:2024 — OAuth 2.0表单提交响应模式

背景与意义

OpenID基金会于2023年12月将这些规范作为公开可用规范(PAS)提交给ISO。经过ISO批准投票后正式发布。此举旨在推动OpenID Connect在全球范围内的更广泛采用,特别是在那些法律规定必须使用受国际条约认可的标准组织规范的国家和地区。

规范准备工作

在提交前,OpenID Connect工作组已系统性地对规范进行了勘误修正,确保ISO版本包含了所有已知的修正内容。

未来计划

基于本次成功的PAS提交经验,OpenID基金会计划将其他已完成的规范家族提交给ISO,包括:

  • FAPI 1.0规范
  • 未来完成的eKYC-IDA规范
  • FAPI 2.0规范

此次标准化成就是OpenID Connect技术发展的重要里程碑,有助于提升其在企业级和合规敏感场景中的可信度和采用率。

6. Australia's 3G Shutdown – Why your 4G/5G Phone is now Blocked (medium.com)
7. Visual Basic 6 rebuilt in C# – complete with form designer and IDE in browser (bandysc.github.io)

该项目通过 C# 重建了 Visual Basic 6 的运行环境与开发工具,主要实现了以下功能:

  • VB6 运行时环境:使用 C# 重新实现了 VB6 的核心运行库。
  • 可视化窗体设计器:提供图形界面用于设计应用程序的窗体。
  • 浏览器端 IDE:将完整的开发环境(IDE)部署在浏览器中,用户可直接在网页上进行开发。
8. What's New in F# 9 (learn.microsoft.com)

F# 9 作为 .NET 9 的一部分发布,引入了多项增强,旨在提升程序的安全性、健壮性和性能。主要更新如下:

语言特性增强

  • 可空引用类型:为与 .NET C# 库交互提供了类型安全的可空处理方式,允许显式声明可空的引用类型(例如 string | null),编译器会提供相关警告和模式匹配支持。
  • 鉴别联合属性:鉴别联合的每个案例现在会自动生成 .Is* 属性(例如 .IsEmail),简化了对值所属案例的检查。
  • 部分主动模式返回布尔值:部分主动模式现在可以直接返回 bool,而非必须返回 unit option,使模式定义更简洁。
  • 计算表达式允许空体:支持编写空的计算表达式(例如 seq { }),编译器会调用构建器的 Zero 方法。
  • 扩展方法优先:当类型同时拥有同名的内在属性和扩展方法时,编译器优先解析扩展方法,支持链式调用。
  • 哈希指令参数放宽:编译器指令(如 #nowarn#time)现在接受非字符串参数,无需引号。
  • #nowarn 支持 FS 前缀:警告代码可以带有 FS 前缀(例如 #nowarn FS0057)。
  • #help 指令增强:在 F# 交互环境中可直接显示对象或函数的文档,无需引号。
  • [<TailCall>] 属性警告:当该属性被误用于非递归函数或 let 绑定值时,编译器会发出警告。
  • 属性目标强制执行:编译器正确检查属性目标(如 let 值、函数等),防止将属性错误地用于不适用的语言元素。

标准库(FSharp.Core)更新

  • 集合的随机函数ListArraySeq 模块新增随机相关函数,包括 ShuffleChoiceChoicesSample,每种均有三种重载(共享随机实例、传入随机实例、自定义随机器函数)。
  • CustomOperationAttribute 无参构造函数:简化计算表达式自定义操作的定义,无需显式命名。
  • C# 集合表达式支持:从 C# 中初始化 F# 的列表和集合时,可使用集合表达式语法(例如 [1, 2, 3])。

性能优化

  • 相等检查优化:针对结构体的相等检查(如 Array.contains)显著减少了内存分配和速度提升。
  • 结构体鉴别联合字段共享:结构体鉴别联合中名称和类型相同的字段可共享内存位置,大幅减少内存占用(例如从 60 字节降至 16 字节)。
  • 整数范围优化:对 start..finishstart..step..finish 表达式生成优化代码,不再仅限于 int 类型和步长为 ±1 的情况,循环速度提升可达 8 倍。
  • 列表/数组推导优化:针对 for x in xs -> ... 的列表和数组推导式进行了优化,数组场景速度提升可达 10 倍,内存分配减少。

开发体验改进

  • 解析器恢复:改进了编辑时代码不完整情况下的工具支持(如语法高亮),支持更多未完成的语法结构。
  • 诊断信息:新增或改进了多个编译错误/警告信息,提供更精确的定位(例如活动模式参数数量不匹配、计算表达式中 use!and! 的使用等)。
  • 真实可见性:通过 --realsig+ 编译器标志可修复 F# 私有成员在 IL 中被生成为 internal 的问题,防止非 F# 项目通过 InternalsVisibleTo 不当访问。
  • Visual Studio 工具增强
    • 实时缓冲区:IDE 默认使用实时文件缓冲区,无需保存文件即可获得更新支持。
    • 分析器与代码修复:提供移除不必要括号的代码修复建议。
    • 自定义可视化工具支持:调试器可视化工具现在支持 F# 项目。
    • 管道中签名提示:在复杂管道中,当函数已应用了部分参数(如 lambda)时,现在会显示下一个参数的签名帮助。
9. MdBook – a command line tool to create books with Markdown (rust-lang.github.io)
# MdBook 概要总结

**工具定义**:mdBook 是一个使用 Markdown 文件创建书籍的命令行工具。

**核心用途**:适用于创建产品文档、API 文档、教程、课程材料等需要清晰导航和可定制化呈现的内容。

**主要特性**:
-   **轻量语法**:采用简洁的 Markdown 语法,让用户专注于内容创作。
-   **内置功能**:支持集成搜索和多种编程语言的代码语法高亮。
-   **高度可定制**:
    -   可通过主题文件自定义输出样式。
    -   支持预处理器扩展自定义语法和内容。
    -   支持后端渲染至多种输出格式。
-   **技术优势**:使用 Rust 编写,注重速度、安全与简洁性。
-   **自动化测试**:可自动测试书中的 Rust 代码示例。

**应用实例**:该工具被 Rust 语言项目采用,例如《Rust 程序设计语言》一书就是使用 mdBook 生成的典范。

**开源信息**:
-   项目免费且开源,源代码托管在 GitHub。
-   用户可在 GitHub 的 issue 跟踪器上提交问题或功能请求。
-   社区欢迎通过阅读贡献指南并提交拉取请求来参与修复错误和添加功能。

**许可证**:mdBook 的源码与文档均基于 **Mozilla Public License v2.0** 许可证发布。
10. JVM Anatomy Quarks (shipilev.net)

JVM Anatomy Quarks 系列文章概述

系列性质
“JVM Anatomy Quarks”是一个持续更新的迷你文章系列,每篇文章聚焦于一个关于 JVM(Java 虚拟机)的基础知识点。系列名称强调各篇文章之间相互关联,不宜孤立阅读,其中描述的知识点通常会彼此交互作用。

内容特点

  • 每篇文章阅读时间约为 5-10 分钟。
  • 内容深度集中于单一主题、测试、基准测试或观察。
  • 文章中提供的证据和讨论可能具有轶事性,未经正式审核,可能存在错误、不一致、写作风格、语法语义问题、重复或矛盾之处。
  • 读者需自行判断内容的可信度与适用性,使用风险自担。

作者信息
作者为 Aleksey Shipilëv,JVM/性能领域专家。可通过 Twitter(@shipilev)或邮件(aleksey@shipilev.net)联系作者提出问题、评论或建议。

资源获取
系列文章持续更新,并提供自动生成的完整合集下载,格式包括:

  • ePUB:文件最小(低于 MB),由 Pandoc HTML 转 ePUB 生成。
  • MOBI:文件较小(约 MB),由 KindleGen ePUB 转 MOBI 生成。
  • PDF:文件较大(数十 MB),由 wkhtmltopdf HTML 转 PDF 生成,质量较高。
11. Pi Chess Board (readymag.website)

PI Chess Board 项目总结

这是一个名为“PI Chess Board”的在线展示项目,其核心描述为“Automated Chess Board”(自动化国际象棋棋盘)。该项目使用 Readymag 平台设计与构建,本质上是一个用于展示该棋盘产品或概念的、包含11个页面的交互式网站。

核心信息与技术平台

  • 项目标识:项目ID为 5057562,属于用户 u2481798807
  • 创建与更新:项目创建于2024年10月18日,最后一次发布于2024年10月23日,内容最后更新于2025年1月27日。
  • 设计工具:完全基于 Readymag 在线设计平台构建,代码中包含大量该平台特定的元数据、样式和脚本。

网站结构与内容

项目包含 11个独立的页面(或幻灯片),采用垂直滚动(vertical)的浏览方式。从页面标题可推断其内容结构如下:

  1. 多种标题页:包含背景图像、白色背景和反色(彩色)背景等不同版本。
  2. 内容展示页:包括纯文本页、反色文本页、图文结合页、三栏文本页。
  3. 多媒体与交互页:包含图像集合页、带热点(hotspot)的图像交互页。
  4. 联系信息页:用于展示联系方式。

设计要素与风格

  • 字体:项目使用了多种字体,包括系统字体(如Arial)、Google字体(如Roboto、Inter)以及通过TypeToday和Typekit提供的字体(如Graphik)。代码中定义了复杂的段落和链接样式。
  • 组件使用:网站利用了Readymag的多种组件,包括背景、文本、图片、Lottie动画、视频、iframe、形状和热点。
  • 动画效果:启用了动画功能,包括加载(load)、滚动(scroll)和悬停(hover)动画。
  • 响应式设计:配置了针对不同设备(如手机竖屏)的视口(viewport)和布局,具备响应式特性。

功能与技术实现

  • SEO与社交分享:配置了Open Graph(OG)标签和Twitter Card元数据,优化了社交平台分享时的标题、描述和封面图显示。
  • Cookie管理:集成了 Cookiebot 服务,并通过CSS和JavaScript对Cookie同意对话框进行了深度自定义,以匹配项目风格。
  • 性能与加载:代码中包含了大量CSS和JavaScript模块的预加载(preload)指令,旨在优化页面加载性能。
  • 资源托管:所有资源(字体、脚本、样式表、图片)均通过CDN(如st-p.rmcdn.netc-p.rmcdn.net)进行托管和分发。
  • 配置管理:大量项目设置(如样式、页面顺序、组件ID)被序列化为JSON并嵌入到HTML的<script>标签中(__RM_PROPS__ServerData),由前端JavaScript在运行时读取并应用。

总结

总而言之,PI Chess Board 是一个利用 Readymag 平台快速构建的、功能丰富的交互式产品展示网站。它通过精心设计的11个幻灯片页面,结合多媒体元素、定制化样式、动画效果和社交优化,来展示“自动化国际象棋棋盘”的概念。其技术实现侧重于平台组件的深度定制、性能优化和跨设备兼容性。

13. Show HN: Krita RGBA Tech – Bringing Realistic Metal to Life in Open-Source Art (github.com)

Krita RGBA Tech 金属效果笔刷套件摘要

📦 资源内容

  • 32种笔刷:涵盖闪光、金箔、锤纹金属等多样金属效果。
  • 13个纹理:包含铜绿污渍、金属箔等材质。
  • 3个图案:灵感源自装饰艺术与浮世绘。
  • 1个调色板:提供贴近真实金属的色彩。
  • 23个笔尖:含独特RGBA笔尖,支持自定义笔刷创作。
  • 1份PDF指南:包含安装说明、参考图与创作灵感。

⚙️ 特性与兼容性

  • 完全免费、图标清晰、命名描述性强、资源已分类。
  • 支持画笔与鼠标优化,颜色选择无限制,采用RGBA模式。

📥 获取与安装

  • 下载渠道:Ko-Fi与GitHub均提供 .bundle 格式文件。
  • 安装步骤
    1. 安装Krita。
    2. 进入“设置” > “管理资源库…”。
    3. 导入 .bundle 文件。
    4. 重启Krita即可使用。

⚖️ 许可与致谢

  • 采用 CC-BY-SA 许可证。
  • 部分笔刷使用了Memileo的资源,已注明出处。

⚠️ 已知问题与解决方案(NixOS用户)

  • 问题:libpng可能截断iTXt元数据,导致笔刷加载异常。
  • 解决方案
    • 重新编译libpng并应用指定补丁。
    • 或通过NixOS的replaceDependency方法替换依赖库。
  • 详细修复步骤与代码示例已在文中提供。
14. Standing desk might be as bad as sitting all day (www.sciencealert.com)

研究概述
一项由澳大利亚和荷兰研究人员进行的新研究发现,长时间站立可能并不比久坐更健康,甚至可能带来生命威胁风险。该研究挑战了站立式办公桌作为对抗久坐生活方式的普遍看法,指出站立本身不能有效预防心血管疾病,并可能增加循环疾病的风险。

数据与方法
研究基于英国生物库(UK Biobank)的数据,跟踪了83,013名成年人近七年的时间。参与者使用腕戴设备记录活动、睡眠和久坐时间。研究人员将站立和坐着的时间与心血管疾病(如冠心病、心力衰竭和中风)以及循环疾病(如站立性低血压、静脉曲张、慢性静脉功能不全和静脉溃疡)的发生率进行匹配分析。

主要发现

  • 心血管疾病风险:研究未发现站立时间与心血管疾病风险之间存在关联,表明站立可能无法降低由久坐引起的心血管问题。
  • 循环疾病风险:长时间站立与循环疾病风险显著相关。每天站立超过两小时,每额外半小时风险增加11%。
  • 久坐风险:长时间坐着同样有害;每天久坐超过10小时,每额外小时循环疾病风险增加26%。

风险机制
研究作者推测,无论是站立还是坐着,缺乏走动或其他身体运动可能导致血液在下肢淤积,从而增加直立性循环疾病的风险。站立时保持静止状态尤其容易引发这一问题,而行走等活动则能缓解风险。

研究意义与限制

  • 实践建议:研究人员强调,站立不应被视为久坐生活方式的“万能药”。需要将站立与其他形式的身体活动(如行走)结合,以减少健康风险。
  • 研究局限:作为观察性研究,该研究不能证明站立或坐着直接导致这些疾病,但为身体活动的重要性提供了新证据。

结论
这项研究发表在《国际流行病学杂志》上,其样本规模庞大,结果提示:在改善健康时,应避免依赖单一姿势(如站立),而应注重多样化的身体活动。

15. SST: Container Support (sst.dev)

SST 平台在历史上主要支持无服务器应用部署,但近期已逐步扩展,在 AWS 上提供原生的容器支持。此次更新涉及整个平台。

1. 组件 SST 推出了一系列新组件来支持容器化开发:

  • Cluster & Service:用于通过 ECS 和 Fargate 将容器化应用部署到 AWS,同时自动配置服务发现。
  • Vpc:简化了 VPC 的创建,并可选择性地添加堡垒主机或 NAT 网关。
  • Postgres, Redis, & Efs:这些数据服务组件专门设计为能与上述 Cluster 和 Vpc 组件良好协作。
  • 成本:与无服务器组件的按使用付费不同,这些组件采用传统定价模式。SST 特别注重入门成本优化,并在文档中新增了“成本”部分,帮助用户理解费用。

2. CLI 命令行工具新增两项关键功能以支持容器开发:

  • dev 属性:允许在 sst dev 多路复用器的新标签页中本地运行应用。
  • sst tunnel 命令:使本地机器能够连接到部署在 VPC 中的资源,解决了容器相关组件通常需要 VPC 的连通性问题。

3. 控制台 SST 控制台现在支持显示容器日志。此外,自动部署功能现在支持在与应用程序相同的 VPC 中运行,使得部署过程能够访问应用内的所有资源。

开始使用 SST 已更新所有教程(包括 Bun、Nuxt、Next.js、Express 等多种框架),以帮助用户快速上手新的容器支持。前端部署现在同时支持无服务器和容器两种模式。

未来计划 未来几周内,SST 将扩展支持范围至 Rails、Laravel、Python、Elixir、Go 等其他语言和框架。

16. Virtual Windows 3.11 Computer (pieter.com)

虚拟 Windows 3.11 计算机模拟界面总结

目的

这是一个基于网页的交互式模拟界面,旨在重现经典的 Windows 3.11 操作系统 环境,允许用户通过虚拟键盘进行交互,可能用于怀旧、教育或演示目的。

结构

  • 界面布局:采用 HTML 和 CSS 构建,包含一个模拟的计算机屏幕和键盘区域。
  • 控制选项:提供 全屏模式(Go fullscreen)和 着色器切换(Toggle shader)按钮,用于增强视觉体验。
  • 键盘显示:详细列出了完整的键盘布局,包括:
    • 功能键(如 ESC、BACKSPACE、TAB、ENTER、SHIFT、CTRL、ALT)
    • 数字键和符号键(如 1、2、3 等)
    • 字母键(如 Q、W、E 等)
    • 方向键(↑、↓、←、→)和其他控制键(如 DEL、PRINT)。
  • 状态信息:界面显示加载(Loading...)和下载(Downloading...)状态,指示模拟系统可能正在初始化或加载资源。
  • 作者信息:标注为 @levelsio + @bai0,表明开发团队或贡献者。

关键功能

  • 键盘模拟:用户可以通过点击或输入虚拟键盘上的键来模拟 Windows 3.11 的键盘操作,支持标准计算机输入。
  • 视觉控制:全屏模式允许用户扩展界面,而着色器切换可能用于调整图形效果(如复古着色或渲染优化)。
  • 交互性:界面设计为可交互,通过键盘元素接收用户输入,模拟经典操作系统的用户体验。
  • 加载机制:包含加载和下载提示,表明模拟环境可能需要时间来准备资源,例如系统文件或图形着色器。

附加细节

  • 界面可能基于 JavaScript 或其他前端技术实现,以处理用户交互和渲染。
  • 键盘布局覆盖了 Windows 3.11 时代的典型键位,反映了该操作系统的界面风格。
  • 整体设计注重简洁和复古,以还原早期计算机的视觉和交互感觉。

此总结基于提供的内容,聚焦于界面的目的、结构和功能,未添加额外信息或个人观点。

17. I Sent an Ethernet Packet (github.com)

本文记述了作者在尝试从零构建TCP/IP协议栈项目中,成功发送第一个以太网数据包的经历,重点围绕调试过程中遇到的三个主要问题及其解决方法。

项目背景与硬件 作者长期计划在微控制器上实现完整的TCP/IP栈。本次使用STM32F401微控制器和Wiznet W5100以太网控制器芯片。W5100内置硬件TCP/IP栈,但作者仅使用其“MAC原始模式”来直接发送和接收以太网帧,以实现从零构建协议栈的目标。数据交换通过SPI总线进行,遵循特定的四字节命令格式(操作码、地址、数据)。

遇到的问题与调试过程

  1. 问题一:无信号输出

    • 现象:向W5100发送命令时,MISO线返回垃圾数据,而非预期的固定模式。
    • 原因:作者使用的以太网屏蔽板是针对Arduino设计的,其SPI信号被连接到ICSP编程头,而非标准引脚。当该板连接到非Arduino的Nucleo开发板时,SPI信号实际未接通。
    • 解决:通过焊接飞线,将SPI信号正确连接到W5100芯片。
  2. 问题二:通信不稳定

    • 现象:物理连接修复后,第一次软件复位命令正常,但随后的读取命令返回错误数据。
    • 分析:使用逻辑分析仪捕获SPI信号后,作者推测可能是片选信号切换过快,导致W5100芯片内部状态机未能及时响应。
    • 解决:在改变片选信号状态前添加数微秒的延时,问题得到解决。
  3. 问题三:发送垃圾数据包

    • 现象:成功发送数据包后,Wireshark捕获到的不是作者构造的测试帧,而是一段更大的垃圾数据。
    • 分析:作者编写了Python脚本,将逻辑分析仪捕获的SPI通信CSV数据解析为可读的寄存器操作日志。通过对比标准Arduino库的通信记录,发现了自己的驱动代码中的错误:w5100_write16函数在写入一个16位寄存器时,错误地两次写入了相同的低地址,而没有正确递增地址写入高字节
    • 影响:这个错误破坏了W5100的发送指针状态,导致其在发送命令时行为异常。
    • 解决:修正寄存器写入函数后,预期的测试数据包成功出现在Wireshark中。

总结与思考 作者最终成功发送了第一个以太网数据包。这个过程强调了在底层嵌入式开发中,深入理解硬件、善用调试工具(如逻辑分析仪)以及编写辅助分析脚本的重要性。作者认为,探索和创建调试工具本身就是解决问题的关键部分,尽管在某些追求效率的专业环境中这种做法可能不被重视。目前,项目已进入新的阶段,挑战转向了对RFC协议的理解和多任务编程等更高层次的问题。

18. AlphaFold 3 Code (github.com)

AlphaFold 3 代码库概要

本文档介绍了AlphaFold 3推理管道的代码实现及其使用相关的重要信息。

核心功能与用途

本软件包实现了AlphaFold 3的推理流程,用于准确预测生物分子的相互作用结构。其核心功能是运行数据处理管道(如基因和模板搜索)及模型推理。

获取与使用限制

  • 模型参数获取:运行AlphaFold 3需要单独申请模型参数,需通过指定表格向Google DeepMind申请,获准后方可使用。
  • 使用条款:模型参数的使用受特定条款约束,仅限从Google直接获取的用户使用。
  • 非商业用途:AlphaFold 3也可在alphafoldserver.com上以非商业目的使用,但支持的配体和共价修饰有限。

安装与运行

  1. 安装:详见专门的安装文档。
  2. 测试:安装后,可使用提供的JSON格式输入文件(示例包含蛋白质序列)进行测试。
  3. 运行命令:主要通过Docker容器运行,需挂载输入、输出、模型参数和公共数据库目录,并调用run_alphafold.py脚本。
    • 关键命令行标志:
      • --run_data_pipeline:控制是否运行数据处理管道(CPU计算,耗时)。
      • --run_inference:控制是否运行模型推理(需要GPU)。

输入、输出与性能

  • 输入、输出及性能:具体格式和细节请参考各自对应的专门文档。
  • 已知问题:已知问题记录在专用文档中,并鼓励用户在问题追踪器中提交新问题。

许可与免责声明

  • 源代码许可:采用 CC-BY-NC-SA 4.0 许可,即非商业性、相同方式共享
  • 模型参数条款:受单独的《AlphaFold 3模型参数使用条款》约束。
  • 免责声明:本项目“按原样”提供,不作任何保证。用户需自行承担使用风险。输出是不同置信度的预测结果,仅为理论建模,不可用于临床目的或作为专业医疗建议的依据

引用与致谢

  • 引用要求:任何使用本代码、模型参数或输出并披露结果的出版物,都必须引用指定的Nature论文。
  • 致谢:文档感谢了AlphaFold 3团队、合作者以及所使用的众多第三方开源库(如JAX、NumPy、RDKit等)的贡献者。
  • 数据库:列出并说明了代码包中使用或镜像的参考数据库(如BFD、PDB、UniProt等)及其原始许可。

联系方式

如有疑问或反馈,可通过alphafold@google.com联系AlphaFold团队。

19. Nixie Tubes (2015) (danyk.cz)

Nixie Tubes (2015)

基本原理与特性

辉光管是一种充气冷阴极灯管,内部通常填充低压氖气(有时混合氩气或汞)。它用于显示数字或符号,结构包含一个公共阳极和多个形状为字符的阴极。当在阳极与某一阴极之间施加约150-200V(通常为170V)的电压时,该阴极周围会发出橙色的辉光放电,从而显示出对应字符。其原理与氖灯类似。

历史、现状与应用

辉光管在LCD、LED和VFD显示器普及前被广泛使用,现已停产。然而,它们正经历复兴,尤其被爱好者用于制作复古风格数字时钟。设计可分为:

  • 传统设计:采用铁芯变压器、TTL逻辑电路(如7490, 7400, 74141驱动芯片)等。
  • 现代/混合设计:可能包含开关电源、LED背光、微控制器(如AVR/PIC)、GPS/DCF-77授时、SMD元件甚至遥控功能。

尽管已停产,但市场上仍有大量库存(尤其是前苏联国家),从小型(约2cm)到大型(5cm以上)不等。历史上,辉光管主要用于测量和计算设备(如电压表、频率计、计算器),用于时钟的情况较少。

主要类型与技术参数

文章详细列出了苏联、东德(RFT系列)、波兰(Dolam系列)及其他厂商(如Tesla、Philips/Valvo)的众多型号,并附有实物图片对比。关键参数总结如下:

苏联辉光管型号概览

型号 数字高度 显示内容 寿命(小时) 备注
IN-1 18 mm 0-9 ≥1000 早期型号
IN-4 17 mm 0-9 ≥1000 双阳极,亦可作普通管使用
IN-8, IN-8-2 18 mm 0-9, 小数点 ≥5000 / 10000 IN-8-2为焊接引线版本
IN-12A/B 18 mm 0-9, 小数点 ≥5000 / 7500 常见型号
IN-14 18 mm 0-9, 双小数点 ≥5000 / 12500
IN-16 13 mm 0-9, 双小数点 ≥5000
IN-17 9 mm 0-9 ≥7500 / 9000 小型
IN-18 40 mm 0-9 ≥2000 / 5000 大型

关于寿命:辉光管的实际寿命远超数据手册标称的最低保证寿命。标称值指故障率可忽略的时间,而非平均寿命。早期型号(如IN-1)寿命较短(约1000小时),后期通过添加汞延长寿命(如IN-12, IN-14)。在均匀使用所有阴极的场合(如时钟),寿命可达数万甚至数十万小时。

RFT Z***M 系列 (东德) 概览

该系列型号繁多,以字母和数字区分特性:

  • Z568M / Z5680M:数字高度达50mm,是经互会最大的辉光管。
  • Z566M / Z5660M:30mm高数字,红色/透明玻璃版本。
  • Z570M/Z573M/Z574M:13mm高数字,分别无小数点/右小数点/左小数点。
  • Z590M:10mm高数字,左右两侧均有小数点。
  • Z870M:双阳极五进制管。
  • 许多型号有透明玻璃版本(后缀带“0”)和配套的符号管(如Z567M显示+ - ~,Z580M显示公制前缀)。

ZM**** 系列及其他厂商型号概览

  • ZM1020:15.5mm高数字,顶部观看。
  • ZM1030:15.5mm高数字,双阳极五进制管。
  • ZM1040/ZM1042:31mm高数字,侧面观看。
  • ZM1080/ZM1080T:13mm高数字,T型可替代多种RFT型号。
  • 波兰Dolam系列:如LC-516(类似IN-1),LC-631(类似Z5660M)。
20. Algorithms We Develop Software By (grantslatton.com)

这篇文章探讨了软件开发中常用的几种启发式方法,并将其类比为在问题空间中的寻路算法。作者分享了几位工程师实践中总结的高效方法:

  1. 每日重置法:一种源于极限编程运动的实践。工程师在一天开始时着手开发某个功能,若当日未完成则删除所有代码(可保留单元测试),次日重新开始。若连续数日无法实现,则先重构底层基础设施,再返回实现原功能。此方法通过反复重写,逐步优化路径,最终获得极其简洁的解决方案。

  2. “一切写两遍”建议:作者建议初级工程师先解决问题,保存代码分支后完全重写。第二次实现通常只需初次25%的时间,但代码质量显著提高。这是一种以1.25倍时间换取2倍质量提升的权衡,特别适用于需长期维护的项目。该方法是“每日重置”的温和版本,每次重写都在优化解决方案的路径。

  3. 数量即质量:引用“数量本身就构成质量”这一观点,强调初级工程师积累代码量的重要性(如达到10万行)。反复解决相同问题有助于巩固模式认知,前5000行完美代码可涵盖主要模式,剩余行数则是通过重复强化神经联结。

  4. “枪顶头”启发法:要求工程师先提出一个耗时较长的方案(如4周),然后通过极端时间限制(“必须在24小时内完成”)打破思维定式与锚定偏见。此方法常能激发出更高效的解决方案,虽实际无法在一天内完成,但新方案往往能在几天内实现,十倍提升效率。其核心在于为解决方案设定下限,从而引导工程师找到更优路径。

  5. 与寻路算法的关联:作者将上述方法类比为问题空间中的寻路过程,指出其与迭代加深、有界松弛A*、束搜索、模拟退火等算法有相似之处。不同启发法在不同约束和知识背景下各有优劣,提升工程能力本质上就是成为更好的问题空间寻路者。

文章总结认为,虽然这些启发法可能指向一个更普遍的理论框架,但核心在于通过多样化的搜索策略在解决方案空间中找到最佳路径。

21. Web Locks API (developer.mozilla.org)

Web Locks API 摘要

概念与用途

Web Locks API 用于管理对共享资源的访问。锁是一个抽象概念,通过名称标识,允许多个浏览器标签页或工作线程协调对同一资源的操作。典型的应用场景是确保同一时刻只有一个标签页执行特定任务(如同步数据),从而实现领导者选举模式

基本使用流程:

  1. 请求锁:调用 navigator.locks.request() 并指定锁名称和回调函数。
  2. 执行任务:在回调函数内执行异步操作,此时锁被持有。
  3. 自动释放:当回调函数完成(或其返回的 Promise 解决)后,锁自动释放。

在锁被持有期间,来自同一或其他上下文的相同锁请求将被排队等待,直到当前锁释放。

API 主要入口与特性

  • 主方法navigator.locks.request(lockName, options?, callback)。返回一个 Promise,在锁释放后解决。
  • 作用域:锁基于源(origin) 隔离,不同源的锁互不影响。
  • 可选功能
    • 支持从异步任务返回值。
    • 提供共享(shared)独占(exclusive) 模式(默认独占)。
    • 支持条件获取、诊断查询和防死锁机制。

请求选项(Options)

请求锁时可配置选项:

  • mode:设为 "shared" 允许多个请求同时持有锁(读者-写者模式);默认 "exclusive" 只允许一个持有者。
  • ifAvailable:如果设置,锁无法立即获取时请求会失败(回调收到 null)。
  • steal:如果设置,会释放当前持有的同名锁,并授予新请求,跳过排队。
  • signal:传入 AbortSignal 以中止锁请求(可用于实现超时机制)。

监控与诊断

  • 使用 navigator.locks.query() 方法可查询当前源下锁管理器的状态,返回一个包含已持有和已请求锁的快照(包括名称、模式等信息),用于调试。

高级用法

  • 手动控制锁持有时间:通过在回调中返回一个由脚本显式解决的 Promise,可实现任意时长的锁持有。
  • 死锁预防:在复杂场景中(如嵌套或多锁请求),可能发生死锁。建议策略包括:避免嵌套请求、确保锁请求顺序一致或设置超时。死锁仅影响相关锁和代码,不影响浏览器或其他标签页。

接口与扩展

  • LockManager:提供 request()query() 方法。通过 navigator.locks(或 WorkerNavigator.locks)获取实例。
  • Lock:表示一个已授予的锁,包含名称和模式信息,在请求回调中提供。

浏览器兼容性与规范

该 API 已有对应规范(Web Locks API),浏览器兼容性信息可在相关资源中查询。

22. The Silurian Hypothesis (pacificklaus.com)

文章标题为“The Silurian Hypothesis”,但页面访问失败,返回404错误。错误信息表明该页面不存在,可能是因为访问链接错误或相关文件未找到。

23. Apple courier may have stolen 2 MacBooks, ... Apple is not going to help (forums.macrumors.com)

文章内容摘要

所提供的并非文章正文,而是访问网页时遇到的Cloudflare安全验证页面

页面核心状态

  • 标题:显示为“Just a moment...”(稍等片刻...),表明正在等待验证。
  • 错误信息:页面主体提示用户需要“启用JavaScript和Cookies才能继续”。
  • 技术目的:该页面是一个安全挑战页面,旨在验证访问者是否为真实用户而非机器人。其内容包含复杂的脚本和重定向逻辑,用于执行此安全检查。

页面结构

  • 采用HTML5文档结构,包含基本的元数据。
  • 通过内联样式定义了简洁的错误提示界面。
  • 包含一段核心的JavaScript脚本,该脚本是Cloudflare挑战平台的一部分,负责处理安全验证流程。
  • 内容安全策略(CSP)头信息非常严格,限定了脚本、样式、图片等资源的加载来源,主要用于支撑安全挑战功能。

结论: 由于访问被Cloudflare的安全系统拦截,原始文章关于“Apple快递员可能偷窃两台MacBook”的具体内容无法获取。当前可见内容仅为一个等待通过安全验证的中间页面。

24. Elephant learned to use a hose as a shower. Then her rival sought revenge (www.science.org)

总结:Cloudflare安全挑战页面

目的:该内容是一个Cloudflare安全挑战页面,用于验证用户身份,防止自动化程序(如机器人)访问网站。它旨在保护网站免受恶意流量攻击,确保只有通过人机验证的用户才能继续浏览。

结构

  • HTML文档基础:以<!DOCTYPE html>开头,设置语言为英语(en-US),包含标准HTML5结构。
  • 元数据
    • Content-Type设置为UTF-8编码的HTML。
    • viewport标签确保响应式设计。
    • content-security-policy定义了严格的安全策略,限制脚本、样式、图片等资源的来源(例如,只允许来自selfchallenges.cloudflare.com的资源)。
    • robots标签设置为noindex,nofollow,防止搜索引擎索引此页面。
  • 样式:内联CSS,定义页面布局,包括居中显示主要内容、响应式调整和错误提示的样式(例如,错误文本使用base64编码的SVG图标)。
  • 主体内容
    • 显示“Just a moment...”标题,提示用户等待验证。
    • 包含一个noscript标签,当JavaScript禁用时显示错误信息:“Enable JavaScript and cookies to continue”。
  • 脚本
    • JavaScript代码处理Cloudflare挑战逻辑。
    • 通过window._cf_chl_opt对象配置挑战参数,如挑战类型(managed)、随机数(nonce)和URL令牌。
    • 动态加载挑战脚本(来自/cdn-cgi/challenge-platform/...),执行人机验证。
    • 使用history.replaceState修改浏览器URL,添加挑战令牌,确保验证后正确重定向。
  • 自动刷新meta http-equiv="refresh"设置为360秒,可能在验证超时时自动刷新页面。

关键功能

  1. 人机验证:要求用户启用JavaScript和cookies,以加载并运行Cloudflare挑战脚本,完成验证。
  2. 安全防护:通过content-security-policy限制资源加载,防止跨站脚本(XSS)等攻击。
  3. URL管理:在验证过程中动态修改URL参数,确保用户验证后能正确访问目标内容。
  4. 错误处理:如果JavaScript或cookies未启用,显示错误提示,引导用户解决问题。
  5. 挑战配置:脚本中包含复杂的参数和令牌(如cFPWvcH等),用于与Cloudflare服务器通信,进行安全验证。

总结:这是一个技术性页面,其核心目的是通过Cloudflare服务进行安全验证,防止恶意访问。它结合了HTML、CSS和JavaScript来实现人机检测和页面管理,结构紧凑且功能明确,专注于网站安全防护。

25. Bjorn: A powerful network scanning and offensive security tool for Raspberry Pi (github.com)

Bjorn:树莓派强大的网络扫描与攻击性安全工具

Bjorn 是一款专为配备 2.13 英寸电子纸屏 HAT 的树莓派设计的“类似电子宠物”式的复杂、自主网络扫描、漏洞评估与攻击性安全工具。

主要特点

  • 网络扫描:识别网络中的存活主机和开放端口。
  • 漏洞评估:利用 Nmap 等工具进行漏洞扫描。
  • 系统攻击:对多种服务(FTP、SSH、SMB、RDP、Telnet、SQL)实施暴力破解攻击。
  • 文件窃取:从存在漏洞的服务中提取数据。
  • 用户界面:通过电子纸 HAT 显示屏和网页界面提供实时状态监控与交互。

安装要求

适用于 Raspberry Pi Zero W(32位)Raspberry Pi Zero W2(64位)

  • 需安装 Raspberry Pi OS(Debian 12 bookworm 版本)。
  • 用户名和主机名必须设置为 bjorn
  • 需连接 2.13 英寸电子纸 HAT(已测试 v2 和 v4 屏幕)。

可通过下载并运行自动安装脚本快速安装:

wget https://raw.githubusercontent.com/infinition/Bjorn/refs/heads/main/install_bjorn.sh
sudo chmod +x install_bjorn.sh && sudo ./install_bjorn.sh

安装后需重启设备。安装过程会下载大量软件包,耗时较长。

使用流程

工具可自主执行网络侦察、漏洞发现、暴力破解攻击及数据窃取。所有发现的数据会自动保存在 data/output/ 目录,并通过电子纸屏幕和网页界面展示。

示例输出展示了其典型工作流程:发现主机与端口、识别漏洞、破解凭证、窃取敏感数据(如数据库内容、配置文件)。

扩展与贡献

Bjorn 设计为社区驱动的模块化工具,用户可创建和分享自定义攻击模块。项目欢迎贡献新模块、错误修复、文档和功能改进。

注意:此工具仅用于教育和授权测试目的。

许可与信息

  • 作者:infinition
  • GitHub 仓库infinition/Bjorn
  • 许可证:MIT 许可证(2024)
  • 支持:可通过 GitHub 报告问题。
26. Is 3D printing being held back by an invalid patent?
27. Control iPhone with the movement of your eyes (support.apple.com)

iPhone 眼球追踪功能概述 通过“眼球追踪”功能,用户可仅凭眼睛控制 iPhone。屏幕指针会跟随眼球移动,当用户注视某项内容并保持凝视(停留)时,即可执行操作(如点击)。所有数据均在设备端处理。

准备工作

  • 摄像头要求:使用 iPhone 内置前置摄像头。
  • 环境要求:确保摄像头视野清晰、面部光线充足,并将 iPhone 放置在稳定平面上,距离面部约一英尺半(约 45 厘米)。
  • 设备兼容性:需使用支持此功能的 iPhone 机型。

开启与校准

  1. 开启功能:前往“设置”>“辅助功能”>“眼球追踪”,打开开关。
  2. 校准操作:根据屏幕指示进行校准。随着圆点出现在屏幕不同位置,需用眼睛跟随其移动。注意:每次开启功能都需重新校准。

使用方法

  • 默认行为:校准后,屏幕会通过轮廓高亮显示注视的项目。
  • 停留控制
    • 若关闭“吸附到项目”,当凝视屏幕某位置时,会出现停留指针并开始计时(圆圈逐渐填充)。
    • 计时完成后,将执行默认操作(如点击)。
  • 执行其他操作:需通过“辅助触控”菜单执行额外手势或物理按键操作。

重新校准

  • 自动触发:若面部或 iPhone 位置改变,功能可能自动启动重新校准。
  • 手动触发
    1. 注视屏幕左上角并保持凝视。
    2. 停留指针出现并开始计时,完成后即开始校准。
    3. 跟随屏幕圆点移动视线。
  • 自定义触发角:可更改启动重新校准的屏幕角落或为其他角落分配操作。

可调选项 前往“设置”>“辅助功能”>“眼球追踪”进行以下调整:

  • 平滑度:调节指针移动的平滑程度或响应速度。
  • 吸附到项目:使指针自动移向最接近视线的项目。
  • 键盘按键缩放:在键盘上停留时,放大正在注视的键盘区域;再次停留可输入按键。
  • 自动隐藏:仅在凝视达到设定时长时显示指针,视线移动时指针自动淡出。
  • 停留控制:开启/关闭停留控制,并可调整默认停留操作与时长。
  • 显示面部引导:开启/关闭以获得调整面部位置的帮助。
  • 指针外观:可前往“设置”>“辅助功能”>“指针控制”更改指针大小与颜色。
28. Welcome to the Antarctic Fire Department (www.antarcticfire.org)

南极消防部门简介

使命与地点

  • 南极消防部门旨在通过在地球上最高、最干、风最大、最冷、环境最严酷的大陆——南极洲,提供消防与救援支持服务,从而助力世界科学事业的进步。
  • 该部门以罗斯岛为基地,为美国南极计划在麦克默多站、阿蒙森-斯科特站以及美国空军机场提供专业的紧急服务。

工作环境与人员

  • 部门的所有作业都发生在地球上环境最极端的区域(南纬60°以南)。极低的温度和恶劣的工作条件,意味着在南极担任消防员需要具备非凡的素质。
  • 因此,该部门以其拥有多元化、敬业且坚韧不拔的团队为荣,这是世界上任何其他消防部门都无法比拟的。

独特的机会与职业

  • 在此工作提供了一个前往少有人至、未来也罕有人会踏足之地的独特机会。南极洲是地球上少数未受永久人类居住影响的地方之一,拥有难以言喻的宁静美景。
  • 虽然在南极工作充满挑战,但也极具回报。消防员在驻扎期间不仅能学到保护自身免受环境威胁的重要技能,还能理解并保护他们工作所处的原始生态系统。
  • 部门提供短期和长期的职位机会,包括:消防员/急救员、消防员/医疗人员、副中队长、值班队长和紧急调度员。

该部门欢迎并邀请您进一步了解南极洲、部门本身、“冰上”生活以及等待您的终身机遇。

29. Salary expectations questions – How should you answer them? (2020) (fearlesssalarynegotiation.com)

薪资期望问题应对指南

核心观点

过早透露当前薪资或期望薪资会严重削弱你的谈判筹码。公司掌握薪资范围、预算等关键信息,而你通常一无所知。过早报价可能导致你低估自身价值(少拿钱)或高估而被排除(失去机会)。即使公司最初有预算限制,在面试过程中,如果你表现出色,他们可能会调整预算来吸引你。

薪资期望问题的本质

  • “你的期望薪资是多少?” 实质是让你猜测公司愿意支付的价格,而你几乎不可能猜准。
  • “你目前的薪资是多少?” 实质是寻找一个最低出价基准(当前薪资+小幅加薪),而非你实际的市场价值。

应对策略与话术

1. 初次被问及(第一级)

  • 目标: 不透露具体数字,将焦点转移到你能贡献的价值上。
  • 话术:

    “我不太方便透露目前的薪资。我更希望能专注于我能为贵公司带来的价值,而不是我当前工作的报酬。对于期望薪资,我没有一个具体的数字,你们比我更清楚我的技能和经验能为公司带来什么价值。我希望这次变动能在职责和薪酬上都成为我向前迈出的一大步。”

2. 当对方坚持(第二级)

  • 目标: 请对方先提供薪资范围,而非你猜测。
  • 话术:

    “听起来你是在为一个薪资范围对我进行资格筛选。如果你愿意告诉我这个范围,我很乐意告诉你它是否在我的考虑范围内。”

    • 注意: “在考虑范围内”不等于承诺接受,为后续谈判留有余地。

3. 当对方施压或威胁(第三级 - 最终手段)

  • 目标: 将拒绝的理由提升至职业道德层面。
  • 话术:

    “我不方便分享现任雇主的专有薪酬信息,我知道他们也不会乐意我这么做。我仍在职,因此不便透露他们支付同类岗位薪酬的专有信息。我确实没有一个具体的期望薪资数字,期待听取你们的建议。”

4. 同时被问及当前和期望薪资

  • 综合话术:

    “我不太方便透露目前的薪资。我更希望能专注于我能为贵公司带来的价值。对于期望薪资,我没有一个具体的数字,你们比我更清楚我的技能和经验能为公司带来什么价值。我希望这次变动能在职责和薪酬上都成为我向前迈出的一大步。”

在申请表上的应用

  • 纸质申请: 薪资相关问题留空。
  • 在线申请: 尝试留空提交;若系统强制要求,可填写“0”、“1”或“999999999”等虚假数字,后续口头沟通时使用上述话术应对。

应对招聘人员的常见反驳

  • “以免浪费彼此时间”: 使用第二级话术,请对方先提供范围。
  • 威胁停止面试流程: 极为罕见。如果发生,说明该公司过于注重压价而非寻找合适人选,可能不值得加入。
  • 要求提供W-2税单或工资单: 拒绝提供。这与职位资格无关,属于个人隐私。

如果已经透露了信息,如何补救?

已透露期望薪资:

  • 寻找新信息(如职责范围比预想更大、福利不如预期等)作为谈判依据。
  • 话术: “自从我给出最初的薪资范围后,我对公司、职位和薪酬方案有了更多了解。基于这些新信息,我更希望薪资能在[你的还价]水平。”

已透露当前薪资:

  • 面试初期: 全力在面试中表现,讲述你将如何提升团队价值,扭转对方“最低出价”思维为“有竞争力的出价”。
  • 已获offer: 谈判空间变小,但仍可尝试基于你的最低可接受薪资进行还价,或探讨能否改善offer其他方面。

总结

保护你的薪资信息是面试和谈判中的关键策略。通过礼貌而坚定地将话题转向你的价值,并坚持让对方先透露薪资范围,你可以避免自我设限,并最终获得一个更符合你实际市场价值的、有竞争力的薪酬方案。

30. Chegg is on its last legs after ChatGPT sent its stock down (gizmodo.com)

根据文章标题《Chegg is on its last legs after ChatGPT sent its stock down》所示,核心信息如下:

  • 公司困境:教育科技公司Chegg目前处境艰难,濒临绝境(“on its last legs”)。
  • 主要冲击:这一危机的直接原因是由ChatGPT引发的。ChatGPT作为一种人工智能聊天机器人,能够回答复杂的学术问题,直接冲击了Chegg的核心在线辅导和作业帮助业务。
  • 市场反应:这种冲击在资本市场上体现得极为剧烈,导致Chegg的股价暴跌(标题中“sent its stock down”)。尽管标题未提供具体数字,但通常此类报道会指出股价出现了断崖式下跌,这反映了投资者对其商业模式未来生存能力的巨大担忧。

综上所述,该文章聚焦于AI技术(以ChatGPT为代表)对传统教育服务行业构成的颠覆性挑战,并以Chegg股价崩盘为例,揭示了其商业模式在人工智能时代面临的根本性生存危机。

31. Way too many ways to wait on a child process with a timeout (gaultier.github.io)

本文探讨了在Unix系统中实现子进程等待超时功能的多种方法,旨在构建一个结合重试与超时的命令行工具ueb(micro exponential backoff)。该工具最多重试10次,等待时间从128ms开始指数增长,且超时时间与等待时间相同。文章通过对比九种不同实现方式,揭示了Unix系统编程中信号处理和进程管理的复杂性。

问题背景

在分布式系统中,重试与超时是常见需求。现有工具如timeout(仅超时)和eb(仅重试)功能不全面,因此需要自行实现一个结合两者功能的工具。实现的核心挑战在于:Unix的等待函数(如waitpid)均不支持超时参数,需借助其他机制。

实现方法

  1. 信号法(sigsuspend):使用SIGCHLDSIGALRM信号,通过sigsuspend等待。但信号处理复杂,易引入全局状态和安全风险。
  2. sigtimedwait:直接等待信号并设置超时,简化了信号法,但部分系统不支持。
  3. 自管道技巧:在信号处理函数中向管道写入数据,用poll监听管道以实现超时。避免了直接处理信号,但需管理管道状态。
  4. 简化自管道:利用子进程关闭管道端触发POLLHUP事件,完全避免信号和全局状态。
  5. Linux signalfd:将信号转换为文件描述符,但仅限于Linux。
  6. 进程描述符:使用pidfd_open(Linux)或pdfork(FreeBSD)获得进程文件描述符,通过poll等待。解决了PID回收问题,但API跨平台不统一。
  7. kqueue(macOS/BSD):原生支持监控进程事件,无需信号,但需管理队列状态。
  8. io_uring:通过异步系统调用等待,但仅支持现代Linux内核,且存在安全限制。
  9. 线程法:创建线程执行子进程,主线程等待线程超时。但引入线程复杂性和数据竞争风险。
  10. 主动轮询:循环检查子进程状态,浪费资源且不精确,不推荐。

总结与推荐

  • 可移植性要求高:使用sigsuspend
  • 避免信号:优先选择进程描述符(跨平台封装)或kqueue。
  • 现代Linux环境:可使用io_uringsignalfd。 文章强调,进程描述符和kqueue等新抽象减少了传统信号带来的复杂性和错误,体现了良好API设计的重要性。最终代码仅依赖libc,体积小且无额外依赖。
32. The Internet Gopher from Minnesota (www.abortretry.fail)

文章摘要:《来自明尼苏达的互联网地鼠》

本文探讨了在万维网(World Wide Web)出现之前,互联网上结构化文本信息系统的发展历史,重点关注了 Gopher 协议的角色与影响。Gopher 由明尼苏达大学于1991年开发,是一种基于菜单的分布式文档检索系统,旨在提供一种简单、高效的方式来组织和访问互联网上的结构化信息。它通过层次化的菜单结构,允许用户浏览文本文件、文档和其他资源,而无需复杂的图形界面。

在万维网普及之前,Gopher 曾是互联网信息共享的重要工具,尤其受到学术界和早期网络用户的青睐。然而,随着万维网的崛起,Gopher 逐渐被边缘化,部分原因在于其协议限制和缺乏对超文本的支持。尽管如此,Gopher 在互联网历史上具有重要意义,它为后来的网络协议和信息检索系统提供了借鉴,并反映了互联网从纯文本向多媒体演变的过渡阶段。

文章还提到了 Gopher 的技术特点,如其轻量级设计和易用性,并探讨了它在互联网文化中的遗产。尽管今天 Gopher 已不再主流,但一些社区仍在维护相关服务,以纪念其对互联网发展的贡献。

(注:由于提供的文章内容为付费订阅专属,此处摘要基于标题和描述性文字推断核心主题,实际内容可能包含更多历史细节、技术分析或文化评论。)

33. Thoughts on the Resiliency of Web Projects (aaronparecki.com)

关于Web项目韧性的思考

文章记录了作者在进行服务器大扫除后,对Web项目长期维护价值的反思。

核心行动与现状

作者对服务器上的每个网站进行了处理:记录信息归档为静态HTML将代码迁移至私有Git服务器或直接删除。清理旧代码并将动态站点转为静态HTML降低了风险。

作者面临一些已运行多年但维护困难的项目(如 indieauth.com, webmention.io, switchboard.p3k.io),它们因版本和依赖问题难以更新,却又因持续使用而无法轻易关闭。

对简单技术的推崇

作者高度评价像 oauth.netw7apk.com 这类使用原生PHP模板的网站。它们无需框架升级,维护压力低,修改方便(直接FTP上传即可生效)。作者喜欢这种避免搭建开发环境、处理依赖和复杂部署流程的简单性。

启动新项目前的反思清单

作者列出了未来开启新项目前应自问的问题,旨在提升项目韧性

  1. 能否简化?例如,是否可作为现有网站的一个标签页?
  2. 技术选择:能否使用纯PHP而无框架/库?依赖意味着长期的维护负担。
  3. 数据存储:能否避免使用数据库?数据库增加了迁移、备份等复杂性。若必须使用,能否设计避免无限增长?
  4. 用户影响:项目是否会存储数据或成为公共服务?若是,需规划用户注册和联系机制
  5. 长期承诺:是否准备好维护这个代码库长达10年

成功案例:Meetable

作者提到长期维护的开源事件网站 Meetable 作为一个正面例子。该项目始于2019年,在虚拟活动中发挥了作用,并持续为IndieWeb和IETF工作组提供服务。作者为其投入了精力,优化了安装配置流程,并增加了无外部依赖的Passkey登录功能。

总结

文章反映了作者在长期维护多个Web项目后,对技术选型与项目可持续性的务实思考。其核心思想是:优先选择简单、无依赖的技术方案,谨慎评估新项目的长期维护成本,以增强项目的韧性和降低未来负担。

34. How Chordcat works – a chord naming algorithm (blog.s20n.dev)

Chordcat 和弦命名算法工作原理

输入与预处理
算法接收键盘按下的键索引(0-88),通过对每个索引取模12得到音符值(0-11),存储在无重复的集合“notes”中。此步骤将物理键位转换为标准音符,为后续分析做准备。

根音迭代与音程计算
对“notes”中的每个音符,算法依次将其视为根音。对于每个根音,计算集合中其他音符与该根音的音程(半音差),存储在“intervals”集合中。例如,若根音为C,音符E和G分别计算音程为4和7半音。

数据库匹配与差异分析
算法维护一个预定义和弦数据库,每个条目包含基础名称及对应的标准音程集合。对于每个候选根音和其音程集合,算法遍历数据库条目,计算以下差异:

  • 额外音符:音程集合中存在但数据库条目中不存在的音程。
  • 省略音符:数据库条目中存在但音程集合中不存在的音程。
    差异音程代表意外音符(如b13、#11),其总和记录为“num_accidentals”。

排序与名称选择
每个匹配结果生成一个和弦对象,包含根音、基础名称、额外音符列表、省略音符列表及意外音符数量。算法使用意外音符数量对和弦进行排序,数量越少表示名称越准确。例如,音符集合{C, E, G}与根音C匹配时,“C major”(意外音符数为0)优先于其他候选。

数据结构与存储
使用Chord结构体存储和弦信息,并通过operator<=>重载支持基于意外音符数量的比较。结果存储在multiset中,以允许多个和弦具有相同意外音符数量(并列情况)。

代码实现概述

  • name_that_chord函数:执行上述流程,输入键索引列表,输出候选和弦的多重集合。
  • insert_chords辅助函数:对单个根音,将音程集合与数据库比较,计算差异并插入结果集。
    算法通过系统遍历和差异计算,实现从原始键位到和弦名称的自动化推断。