2024-04-25

40 篇热帖

1. You are what you read, even if you don't always remember it (blog.jim-nielsen.com)

文章探讨了阅读与记忆的关系,强调阅读的核心价值在于潜移默化地塑造思维,而非单纯记住内容。作者首先引用 Dave Rupert 的观点,指出在崇尚效率的文化中,人们容易质疑无法衡量影响的阅读行为,但真正的目标在于拓展思考。接着引用爱默生的名言,类比食物滋养身体却不被完全记住,说明阅读同样无形中塑造了我们。作者将这一观点延伸至网络内容,并提醒应像关注饮食一样注重信息摄入的质量。最后通过一个大学教授的故事补充说明,教育(或阅读)的影响常超越记忆,其价值难以量化却真实存在。整体强调阅读的深层作用在于内在转变,而非即时可测的收获。

2. We have 4 days to contest KYC being required by internet services (www.federalregister.gov)
  • 核心问题:由于大量自动化程序对FederalRegister.gov和eCFR.gov的恶意爬取,美国政府已限制对这些网站的程序化访问。
  • 官方解决方案:要求用户转向使用官方提供的API接口(FederalRegister.gov API和eCFR.gov API)来获取数据,并提供了相关文档链接。
  • 对普通用户的影响:如果人类用户收到访问被拦截的消息,需要完成CAPTCHA验证以申请访问权限,且可能需重复完成验证。
  • 技术支持:若遇到验证码问题或需要申请更宽的IP访问范围,可通过网站右下角的“Site Help”按钮提出请求。
3. A useful front-end confetti animation library (github.com)

canvas-confetti 是一个前端彩带动画库,可在网页上实现炫彩的彩带效果,适用于庆祝场景。它可以通过 NPM 安装(npm install --save canvas-confetti),或直接在 HTML 中通过 CDN 引入(如 jsdelivr)。

主要特性和功能包括:

  1. 安装与使用
  • 支持 NPM 和 CDN 两种引入方式。
  • 使用时需在前端环境中运行(不能直接在 Node.js 环境下使用)。
  • CDN 引入后全局暴露 confetti 方法。
  1. 减少动画选项
  • 提供 disableForReducedMotion 选项,可根据用户的系统设置自动禁用动画,以照顾对动画敏感的用户。默认关闭,但未来可能调整。
  1. API 设计
  • confetti([options]):主方法接收一个可选参数对象,返回 Promise(如浏览器支持)或 null。多次调用会复用同一 Promise,并在动画全部结束后 resolve。
  • options 可配置:
    • particleCount:彩带数量,默认50;
    • angle:发射角度,默认90度(向上);
    • spread:散射角度范围,默认45度;
    • startVelocity:初始速度,默认45像素;
    • decay:速度衰减,默认0.9,范围0~1;
    • gravity:重力作用,默认1,可调;
    • drift:左右漂移量,默认0;
    • flat:关闭三维倾斜,布尔值,默认false;
    • ticks:动画步数,默认200;
    • origin:发射起点对象 x,y,0~1 范围自定义页面坐标;
    • colors:颜色数组,HEX 代码;
    • shapes:形状数组,支持'square', 'circle', 'star'及自定义形状;
    • scalar:缩放因子,默认1;
    • zIndex:层级,默认100,可调整;
    • disableForReducedMotion:是否为减少动画用户禁用,默认false。
  1. 自定义形状支持
  • confetti.shapeFromPath({path, matrix?}):通过 SVG path 字符串创建自定义彩带形状,此方法需浏览器 Path2D 支持。
  • confetti.shapeFromText({text, scalar?, color?, fontFamily?}):支持将 emoji 或字符作为彩带渲染(建议调整 scalar 参数避免模糊)。
  1. 定制 canvas 容器
  • confetti.create(canvas, [globalOptions]):可在指定 canvas 上渲染彩带,支持 resize(自动调整 canvas 尺寸)、useWorker(用 web worker 异步渲染)、disableForReducedMotion。
  • 若使用 useWorker: true,canvas 只能供 confetti 使用,主线程不可操作。
  1. 动画重置
  • confetti.reset():停止动画并清除所有彩带,同时立即 resolve 所有 Promise。
  • 在 confetti.create 实例中,该实例也拥有 reset 方法。
  1. 使用示例
  • 基础用法:confetti() 随机发射默认样式彩带。
  • 高级定制:confetti({particleCount: 150}) 发射更多彩带;confetti({spread: 180}) 增大散射角度。
  • 随机位置、速度、宽幅发射等:
confetti({
  particleCount: 100,
  startVelocity: 30,
  spread: 360,
  origin: { x: Math.random(), y: Math.random() - 0.2 }
});
  • 多方向持续发射(如庆典数秒内连续发射):可结合 requestAnimationFrame 循环调用 confetti 方法。
  1. 可扩展性
  • 支持自定义形状(SVG path或emoji文本),优化各种庆典效果。
  • 多实例管理,适合页面特定区域、分层彩带效果。
  • 自动适配支持 web worker 的浏览器,实现动画主线程不阻塞。

canvas-confetti 适用于各种前端项目,提供丰富的动画个性化设置,支持无障碍和高性能渲染,便于快速集成和二次开发。

4. McKinsey Under Criminal Investigation over Opioid-Related Consulting (www.wsj.com)
5. TSMC unveils 1.6nm process technology with backside power delivery (www.tomshardware.com)

台积电(TSMC)发布了其领先的1.6纳米级工艺技术——A16。该工艺是公司首个埃米级生产节点,相比前代N2P工艺有显著提升。其核心创新是引入了名为“Super Power Rail”(SPR)的背面供电网络(BSPDN)技术。

A16工艺将继续采用与2纳米级节点相同的全环绕栅极纳米片晶体管(GAA nanosheet),但首次集成背面供电。这一设计专为AI和高性能计算处理器优化,旨在解决复杂信号布线与密集供电网络的挑战。台积电的SPR实现方式通过特殊触点将背面供电网络直接连接至每个晶体管的源极和漏极,以降低电阻、最大化性能和能效,其复杂度高于竞争对手的方案。

在性能与能效方面,相较于N2P工艺,A16在相同电压下可实现高达10%的时钟频率提升,在相同频率和复杂度下功耗可降低15%至20%,晶体管密度也能提升7%至10%。

台积电未在2纳米节点上采用此背面供电技术,可能是出于成本考量,从而形成了两个差异化定位的工艺节点,以满足不同客户需求。A16工艺的量产计划于2026年下半年启动,预计采用该技术的产品将于2027年面世。

7. Snowflake Arctic Instruct (128x3B MoE), largest open source model (replicate.com)

Snowflake Arctic Instruct (128x3B MoE) 模型摘要

模型概述

Snowflake Arctic 是一个密集-MoE(混合专家)混合的 Transformer 架构模型,由 Snowflake AI 研究团队从零开始预训练。该团队发布了 Arctic 的基础版(Base)和指令调优版(Instruct)模型检查点,均采用 Apache-2.0 许可证,允许自由用于研究、原型开发和产品中。

核心特性

  • 开源与许可:Apache-2.0 许可证,完全开放。
  • 输入输出:输入仅处理文本,输出可生成文本和代码。
  • 发布时间:2024 年 4 月 24 日。

模型架构

Arctic 采用创新的混合架构:

  • 密集部分:一个 10B 参数的密集 Transformer 模型。
  • MoE 部分:一个残差式的 128x3.66B MoE MLP 层。
  • 总参数量:480B。
  • 活跃参数量:17B(通过 Top-2 门控机制动态选择专家)。 这种设计旨在平衡模型容量与推理效率。

资源与参考

  • 相关资源:包括博客、系列教程(如训练自定义 MoE 模型、生成高质量训练数据)、演示应用等。
  • 代码仓库:最新详情和教程可访问 GitHub 仓库

总结

Snowflake Arctic 是一个大规模开源 MoE 模型,专注于企业级 AI 应用,通过混合架构实现高效智能。其开放许可和丰富资源降低了使用门槛,适用于研究和商业场景。

8. Fragmented thinking is a bigger threat to flow state than interruptions (blog.stackblitz.com)

碎片化思维对心流状态的威胁大于中断

传统认知与新见解

开发者常将“心流状态”(全神贯注、沉浸于工作的状态)视为生产力的巅峰,并认为外部中断(如会议、消息)是主要破坏因素。但最新研究表明,这一观点过于简化。心流状态远不止是“专注”,其原始定义更强调一种无需反思、自然流畅的工作体验,最初源于艺术和体育领域。

心流状态的真实复杂性

  • 条件严格:心流不仅需要专注,还要求个人技能与任务挑战之间达到特定平衡。若任务过于简单或困难,即便专注也无法进入心流。
  • 多重障碍:研究发现,阻碍心流的因素不仅包括外部中断,还包括个人因素(如任务难度不匹配)、团队动力等。
  • 内部中断更致命:2018年研究指出,自我中断(如主动切换任务)比外部中断更具破坏性,会延长任务恢复时间并增加“嵌套中断”。81%的参与者曾高估外部中断的影响。

碎片化思维:真正的威胁

开发流程中的常规操作(如写提交信息、切换上下文)会暗中破坏心流。这些活动虽非他人打断,却会导致思维碎片化,使开发者难以维持解决问题所需的系统性思考。即使拥有无干扰环境,开发者也可能因内部碎片化而效率低下。

应对策略

  1. 培养正念与习惯
    通过每日反思和自我提醒,增强对自我中断的意识,调整工作习惯,可有效提升专注力。
  2. 减少技术债务
    技术债务会导致开发者浪费23%的工作时间在额外测试、分析和重构上,清理技术债务能减少低层次工作的干扰。
  3. 优化信息获取
    54%的开发者因等待答案而中断工作,63%每天花费至少30分钟搜索解决方案。改善文档、采用协作工具(如开发者门户)可减少上下文切换,维持心流。

结论

保护心流状态需超越抵御外部干扰,更需关注内部工作流程的优化。通过团队协作减少技术债务、改善信息共享,并借助正念习惯管理自我中断,开发者才能更持续地进入并保持心流,提升实际生产力。

9. Tribler: An attack-resilient micro-economy for media (github.com)

Tribler是一个兼容BitTorrent的去中心化媒体平台,旨在替代YouTube等中心化服务。其核心目标是保护用户隐私、构建信任网络、抵御攻击,并直接奖励内容创作者,致力于建立一个没有银行、广告商或政府干预的微经济系统。

核心技术与特性

  1. 匿名与隐私:内置类似Tor的匿名下载系统(与Tor网络独立),使用UDP协议实现NAT穿透,约80%的穿刺成功率。所有功能分布式实现,不依赖中心服务器。
  2. 信任与声誉:基于BitTorrent分享逐步建立公钥信任,引入“频道”系统,用户可投票以增加频道可信度。核心技术为Trustchain,一种始于2012年的独特区块链设计。每个参与者拥有个人区块链,记录多方签名交易,无需挖矿,旨在防篡改且可扩展。
  3. 代币经济:通过“带宽代币”激励用户分享(做种)和中继匿名流量,实现无中间人的带宽交易。内容创作者可直接从粉丝获得收益。
  4. 搜索与发现:支持无中心服务器的种子搜索(2010年已实现),并持续优化去中心化推荐系统。
  5. 抗攻击性:设计强调健壮性,声称“关闭互联网是摧毁Tribler的唯一方式”。通过持续的技术迭代(如IPv8覆盖网络)提升Sybil攻击抵御能力。

研究与发展: 项目自2005年由代尔夫特理工大学发起,有超过100名开发者贡献。当前研究聚焦于:设备端去中心化AI、生成式AI的可信数据、5G覆盖网络、强身份服务、Trustchain的规模化、数字身份与钱包、分布式市场等。已完成项目包括离线数字欧元原型、艺术家公平分配代币、万亿级磁力链接等。

历史与愿景: 2007年与哈佛合作部署早期分布式账本。历史版本持续迭代,如2019年发布Gigachannels,2023年通过Rust后端将匿名下载速度提升十倍。长期愿景是成为媒体和货币的重新发明者,建立一个基于公平、信任和自治的微经济,挑战资本主义中“富者愈富”的本质,目标是为艺术家和基础设施运行者提供100%的收入。

10. Cost of developing new drugs may be lower than industry claims: trial (www.theguardian.com)

MSF临床试验成本披露挑战制药行业高研发成本叙事

无国界医生组织(MSF)首次公布了其一项重要临床试验的支出细节,表明药品开发的真实成本可能远低于制药行业所宣称的数十亿美元。MSF通过一项针对耐药结核病的四联口服药组合治疗(TB Practecal试验)证明,整个试验成本为3400万欧元(约2900万英镑),远低于行业引用的从4000万到39亿欧元不等的估算范围。

核心挑战与透明化工具 MSF呼吁制药公司提高试验成本的透明度,指出行业长期以高昂的研发成本作为药品高定价的理由,却从不公开具体支出。为应对这一“不透明”,MSF开发了一套**“透明核心工具包”**,用于分类记录临床试验过程中的每一项开支,旨在为成本核算提供标准化指南,并希望此举能推动整个行业的公开透明。

试验背景与全球影响 TB Practecal试验针对的是致命性高且在许多中低收入国家难以治疗的耐药结核病。该试验成功证明了包含贝达喹啉在内的四联口服药方案的有效性,将疗程从一年缩短至六个月。这一成果促使世界卫生组织(WHO)将其推荐为利福平耐药结核病的标准治疗方案,目前该方案已在40个国家使用。

贝达喹啉本身的发展历程也揭示了成本争议。该药由强生公司开发,但其高昂价格曾严重影响可及性。后续学术研究披露,该药的研发主要依赖公共资金,其数额是私人投资的五倍。MSF指出,争取该药降价的成功经验证明,研发成本的透明化有助于提高医疗工具的可及性。

行业回应与倡导 制药行业代表国际制药商协会联合会(IFPMA)仍坚持高研发成本的估算(平均约23亿美元),并强调行业每年投入约2000亿美元用于研发。MSF政策顾问Roz Scourse则驳斥了“高价格是为回收高研发成本”的说法缺乏证据基础,认为公开临床试验成本数据是破解这一“证据真空”的关键一步,能为药品定价和可及性政策提供重要依据。

MSF强调,即便在中等收入国家进行试验,为进行高质量研究而升级医疗设施也需要大量投资,因此其成本并非“低廉”。该组织希望通过自身的透明化实践,激励更多的公共和非营利机构公开成本数据,最终推动建立一个药品价格不阻碍患者获得治疗的未来。

11. HTML Attributes vs. DOM Properties (jakearchibald.com)

HTML 属性与 DOM 属性的区别

HTML 属性(Attributes)和 DOM 属性(Properties)是本质不同的概念。同名属性和属性可以被设置为不同值。例如,一个 <div foo="bar"> 元素,通过 getAttribute('foo') 获取的是 'bar',而通过 div.foo 获取的是 undefined;后续单独设置 div.foo = 'hello world' 不会改变其 HTML 属性值。

这种区别因框架的普及而被部分开发者忽略。在框架模板语法中(如 classNamevalue),虽然使用类似属性的语法,但底层有时会设置 DOM 属性,具体行为因框架而异。

核心技术差异

1. HTML 序列化

  • 属性:存在于 HTML 和 DOM 中,修改后会反映在 DOM 序列化(如 outerHTML)中。
  • DOM 属性:仅存在于 DOM 中,不影响序列化的 HTML 输出。
  • 开发者工具元素面板显示的是 HTML 属性,而非 DOM 属性。

2. 值类型

  • 属性值:始终为字符串。
  • DOM 属性值:可以是任意 JavaScript 类型(对象、数字等)。

3. 大小写敏感性

  • 属性名:不区分大小写(HeLlO 会被存储为 hello)。
  • DOM 属性名:区分大小写(TeSttest 是不同属性)。
  • 属性值:区分大小写。

4. 反射(Reflection)

  • 许多规范定义的 HTML 属性(如 idreversed)会通过对应的 DOM 属性进行“反射”,即 DOM 属性读写直接同步到 HTML 属性。
  • 自定义属性(如例子中的 foo)若无规范定义,则不存在反射关系。

5. 命名差异

  • 有时 DOM 属性名与 HTML 属性名不同,例如:
    • className 反映 class 属性(因 class 是旧 JS 保留字)。
    • htmlFor 反映 for 属性。
    • crossOrigin 反映 crossorigin 属性(符合驼峰命名惯例)。
    • ariaLabel 反映 aria-label 属性(2023 年后浏览器普遍支持反射)。

6. 验证、类型转换与默认值

  • DOM 属性:通常包含验证逻辑、类型转换和默认值。
  • HTML 属性:仅存储原始字符串值,无额外处理。
  • 例如 <input>type 属性:设置非法值如 'foo' 时,属性值保持 'foo',但 DOM 属性读取时返回默认值 'text'
  • 布尔属性如 <details open>:DOM 属性 details.open 返回布尔值(true/false),并与属性存在与否关联。

7. 特例:<input>value 属性

  • value DOM 属性反映 value HTML 属性。
  • defaultValue DOM 属性才反映 value HTML 属性。
  • value DOM 属性代表当前状态(用户输入或 JavaScript 设置),初始时回退到 defaultValue,一旦被修改则独立存储。
  • 表单重置时,value 会回退到 defaultValue

设计哲学与框架实践

设计建议

  • HTML 属性应主要用于配置(如默认值)。
  • DOM 属性可用于包含状态(如当前值)。
  • 例外:<details><dialog> 元素将 open 状态直接绑定到 HTML 属性,可能破坏配置与状态的分离原则。

框架处理方式

  1. Preact 与 Vue

    • 优先设置 DOM 属性(若属性存在于元素上)。
    • 否则设置 HTML 属性。
    • 服务端渲染时则倾向于设置属性。
  2. React

    • 优先设置 HTML 属性(基于预设列表)。
    • 自定义元素的属性可能被误设为 HTML 属性,导致部分功能失效(React 19 将改进)。
    • 注意:React 中 className 虽使用属性名,但实际设置 class HTML 属性。
  3. Lit

    • 显式区分:使用 .value 语法设置 DOM 属性,否则设置 HTML 属性。

总结

理解 HTML 属性与 DOM 属性的区别对于底层 DOM 操作、自定义元素开发及框架原理理解至关重要。关键区别包括序列化行为、类型、大小写敏感性、反射机制、验证与默认值逻辑。现代框架通过不同的策略在两者间进行转换,以简化开发体验。

12. I now lack the juice to fuel the bluster to conceal that I am a simpleton (lithub.com)

文章核心摘要:

本文是对美国作家帕吉特·鲍威尔(Padgett Powell)的访谈,主要围绕其代表作《Edisto》及其创作生涯展开,核心内容如下:

1. 《Edisto》的创作背景与核心

  • 作品概述:《Edisto》是一部教育小说(Bildungsroman),讲述了12岁的文学神童西蒙斯·马尼高尔特在父母离异、母亲酗酒的家庭变故中,于南卡罗来纳州埃迪斯托的夏日住所成长的经历。他与一位混血朋友“金牛座”建立了友谊,并由此进入美国上世纪中叶种族关系、性革命及青春期困惑的复杂世界。
  • 创作灵感:鲍威尔解释,吸引他创作此书的是年轻叙述者的荒谬性与自由度。他以《哈克贝利·费恩》为例,说明这种设定能让作者“尽情发挥”。小说的素材直接来源于他自身的经历,包括与黑人室友的相处、家中的女佣以及在美国南部的见闻。

2. 对南方文学传统的态度与写作立场

  • 矛盾的立场:鲍威尔将自己的职业生涯描述为在**“相信南方”与“取笑相信南方”之间的微妙接口上跳舞**。他对于被归入福克纳、奥康纳等南方文学大师谱系既不热衷也不排斥。
  • 批判“伤感主义”:他明确表示不喜欢“感伤的、充满血性和粗食(南方意象)的群体”,也不喜欢将故事奉为“万灵药”的创作倾向,称之为“陈腐的乡下话(Cornpone)”。他认为真正的南方写作内核是深刻理解**“人们都被生活击垮了”**,并对 earnestness(认真)抱有“诚挚的怀疑”。

3. 实验性小说《The Interrogative Mood》的创作

  • 创作起源:这部完全由问题构成的小说,起源于鲍威尔对一位同事咄咄逼人邮件的戏谑回复。他在回复一连串荒谬问题中感到极大的乐趣和治疗作用,由此一发不可收拾,写成了这部作品。
  • 文学实验的目的:鲍威尔将“实验性小说”定义为其核心推动力不是“虚构人物做虚构的事”的小说。他认为《The Interrogative Mood》通过彻底抛弃这种叙事,强迫读者进入一种“不去相信”的状态,从而可能获得更强烈的情感冲击和阅读乐趣。

4. 写作风格的形成

  • 鲍威尔将其独特的散文风格归功于在佛罗里达州高中接受了三年的拉丁语教育,最终能翻译《埃涅阿斯纪》。他强调自己的写作只关注“下一个正确的词”,风格与主题是同时涌现的,没有预先考虑。

5. 对现代出版业与读者的批评

  • “敏感编辑”的经历:鲍威尔以自己的书《Indigo》为例,讲述了出版商在营销人员感到“不适”后,引入“敏感编辑”进行删改的经历。编辑将一个对黑人英雄的真实描写(“一个结实的黑人男子从厨房出来”)指责为“物化描述,可能唤起与奴隶制的联想”。他认为这体现了自由派式种族主义——为了消除种族主义而消除种族本身。
  • 美国读者的口味:在文学的未来上,鲍威尔持悲观态度。他认为一部真正好的书不会在美国大众市场畅销,“如果你在这里赚到了钱,那你一定是做错了什么”。他将此归咎于**“美国糟糕的品味”**,认为这与特朗普现象同源。文学小说的未来可能不在于吸引大众,而在于其与大众品味的对立。

6. 其他要点

  • 续作缘由:写作《Edisto Revisited》并非因为觉得故事有必要延续,而是“当时能写的,就写了”。
  • 阅读观:鲍威尔对以“现代视角”(Presentism)审判过去的作品感到困惑,并提及他的课堂因文化敏感性问题而变得愈发难以教授真正的写作。
13. Airlines required to refund passengers for canceled, delayed flights (abcnews.go.com)
## 新规概要
美国交通部推出新规,要求航空公司为取消或严重延误的航班向乘客自动提供现金退款,这是该部门历史上乘客权益的最大范围扩展。

## 退款标准与场景
- **航班取消或重大变更**:若乘客不接受替代交通方案或旅行积分,可获得退款。
- **延误时长阈值**:
    - 国内航班延误超过 **3小时**;
    - 国际航班延误超过 **6小时**。
- **行李丢失**:若托运行李未在 **12小时** 内送达,乘客可获得现金退款。
- **未提供的附加服务**:如已付费的Wi-Fi、选座或机上娱乐等服务未提供,需退款。

## 退款执行细则
- **退款形式**:必须为现金,除非乘客主动选择其他补偿形式,禁止以代金券或积分替代。
- **退款时限**:航空公司需在 **7天** 内完成退款。
- **购票渠道**:适用于通过航空公司、旅行社及第三方平台(如Expedia)购买的所有机票。
- **合规过渡期**:航空公司有 **6个月** 时间调整以符合新规。

## 其他消费者保护措施
- 交通部正制定规则以保障:家庭同座权益、轮椅使用者出行尊严,以及航班延误/取消时的补偿与服务。
- 打击隐藏费用,预计每年为美国消费者节省数十亿美元。

## 行业背景与反应
- **执法案例**:此前西南航空因2022年假日运营崩溃被罚 **1.4亿美元**,创下纪录,交通部称此为行业新标准。
- **航空公司协会回应**:表示大型航空公司已提供多种票价选择(含全退款选项),2020-2023年累计退款 **430亿美元**(2023年约110亿美元)。
- 交通部长强调新规旨在保障乘客权益,虽航空公司对此持保留态度,但将适应新要求。
14. A Beginner's Guide to the ESP8266 (2017) (tttapa.github.io)

本文是一篇针对ESP8266的深度初学者指南,旨在帮助具备微控制器(如Arduino)基础的读者掌握这款高性价比Wi-Fi芯片的使用。文章重点聚焦于ESP8266特有的Wi-Fi通信、网络协议、硬件配置及物联网(IoT)应用。

1. ESP8266 简介与硬件选型

  • 芯片架构:ESP8266是由乐鑫(Espressif)制造的片上系统(SoC),集成Tensilica L106 32位微控制器(MCU)和Wi-Fi收发器。提供11个可用GPIO引脚(芯片共17个,6个用于闪存通信)和1个模拟输入。
  • 开发板选择:市面有多种模块(如AI Thinker的ESP系列)和完整开发板(如NodeMCU、WeMos D1),它们在引脚引出、天线设计和闪存容量上各有差异。

2. 开发环境与硬件准备

  • 编程方式:本文主要讲解使用Arduino IDE编程,对初学者友好。此外也提及了官方C语言SDK、LUA解释器和MicroPython等替代开发方案。
  • 硬件需求:需准备ESP8266开发板、运行Arduino IDE的电脑、3.3V USB转串口转换器、USB线、3.3V电源或稳压器及Wi-Fi网络(注:部分开发板已内置串口转换与稳压模块)。

3. 核心功能与实战项目

文章通过递进的实战项目详细讲解了ESP8266的各项功能:

  • 基础网络与Web服务:配置Wi-Fi连接,使用mDNS进行局域网名称解析;搭建简单Web服务器,以及支持真实文件系统和Wi-Fi文件上传的高级Web服务器。
  • 物联网(IoT)应用
    • OTA更新:通过Wi-Fi无线上传和更新程序,摆脱USB线的束缚。
    • 智能控制与监控:通过手机或电脑无线控制RGB灯带;连接NTP服务器同步系统时间;监控传感器数据(如记录室温存入闪存,并在浏览器中以图表展示)。
    • 消息通知:实现未读邮件的灯光提醒功能。
  • 高级网络特性:涵盖DNS、强制门户(Captive Portals)、Wi-Fi连接库及OSC协议等进阶网络功能。

本指南从硬件基础到高级网络协议,全面覆盖了ESP8266的开发流程与典型物联网应用场景。

15. When do we stop finding new music? (www.statsignificant.com)

文章摘要:我们何时停止发现新音乐?

本文探讨了音乐品味随年龄增长而趋于停滞的现象,结合个人经历与多项研究数据,分析了“音乐停滞”的成因、时间点及应对心态。

1. 现象引入:个人经历与“音乐停滞” 作者通过Spotify的AI DJ功能发现,自己喜爱的音乐多集中于2000年代和2010年代的特定流派,十年来音乐品味几乎未变。这引发了关于“音乐停滞”(Music Paralysis)的思考。

2. 关键研究发现:音乐品味随年龄变化的趋势

  • 青少年时期的影响力:多项研究(包括《纽约时报》对Spotify数据的分析)表明,个体在13-16岁青少年时期形成的音乐偏好对一生有深远影响。每个世代通常认为自己年代的音乐“更好”。
  • 探索的高峰与停滞的起点:Deezer的调查显示,音乐探索的高峰在24岁左右。此后,探索意愿和多样性下降,31岁左右音乐品味开始停滞。Spotify的内部数据研究则将33岁标识为品味固化的临界点,此时听众的音乐选择显著偏离主流当代作品。
  • 父母身份的影响:数据显示,父母比无子女的同龄人更快地偏离主流音乐趋势。
  • 倾听行为的变化:从30岁起,听众倾向于选择更多非主流音乐,但接触的艺术家数量减少。

3. 音乐停滞的主要原因

  • 生物与心理发展因素:随着年龄增长,音乐在生活中的重要性下降,倾听时间减少,且更多在私人场合进行。一项涵盖25万人的大型研究证实了这一普遍趋势。
  • 现实约束:Deezer调查中,导致“音乐停滞”的主要日常原因是:
    • 面对海量选择不知所措(19%)。
    • 工作繁忙(16%)。
    • 需要照顾幼儿(11%)。
  • 根本原因:停滞并非主要源于流媒体过多的选择,而是投入探索的时间、精力以及与音乐的情感联结减少

4. 理论框架与反思:探索与利用的权衡

  • “探索-利用”困境:文中引入该概念,将寻找新音乐视为“探索”,重温挚爱曲目视为“利用”。
  • “37%法则”的类比:有观点将此法则应用于人生阶段——如果用平均寿命80年的前37%(约30年)进行音乐探索,之后便自然进入“利用”阶段,满足于已知的喜好。这与研究发现的停滞年龄(30-33岁)大致吻合。
  • 观点的转变:作者最终反思,“音乐停滞”可能并非缺陷,而是一种自然的、甚至可能是有益的状态。不断探索可能带来焦虑,而接受并享受已建立的音乐品味,或许更能带来满足感。

结论 文章总结指出,音乐品味的停滞是生物发展、心理变化与生活现实共同作用的结果,通常在30岁出头变得明显。尽管可以通过刻意投入时间来维持开放性和探索新音乐,但拥抱自身稳固的喜好也未必是一种失败。

18. A feature-rich front-end drag-and-drop component library (github.com)

Pragmatic Drag and Drop:一个功能丰富的前端拖放组件库

概述

Pragmatic Drag and Drop 是一个低层级的拖放工具链,旨在安全且成功地利用浏览器内置的拖放功能。它不依赖于任何特定视图层,可与 React、Svelte、Vue、Angular 等任何前端框架配合使用。该库目前为 Trello、Jira 和 Confluence 等大型网络产品提供支持。

核心特性

  • 轻量精简:核心包仅约 4.7kB。
  • 按需增量:只需引入所需的功能模块。
  • 无头设计:完全控制渲染和样式,不绑定特定视觉语言。
  • 框架无关:兼容任何前端框架。
  • 延迟加载:支持延迟加载核心及可选包,以优化页面加载速度。
  • 高度灵活:可创建任意拖放体验,并在拖拽操作中自由进行修改。
  • 广泛兼容:在 Firefox、Safari、Chrome、iOS 和 Android 上均提供完整功能支持。
  • 虚拟化支持:可创建各种虚拟化体验。

构成部分

  1. 低层级拖放行为:包含核心包和一系列可选包,用于构建各类拖放体验。这些组件对视觉语言和辅助技术保持中立,不依赖于 Atlassian 设计系统。
  2. 可选视觉输出:例如拖放指示器,旨在帮助快速构建一致的 Atlassian 用户体验。非 Atlassian 用户可自由使用、模仿其视觉样式或创建完全不同的设计。
  3. 可选辅助技术控件:提供工具链以支持辅助技术用户(如键盘操作)完成拖放流程,其默认实现基于 Atlassian 设计系统,但用户可替换为自己的组件或采用其他无障碍方案。

常见问题解答

  • 能否与自定义设计系统一起使用? 可以。核心包很小,可选包中的某些依赖(如样式方案、视图库或 Atlassian 特定输出)可以被替换为用户自己的技术栈和视觉组件。
  • 能否使用自定义设计语言? 可以。虽然该库包含一些 Atlassian 的设计指南,但用户完全可以自由采用任何设计语言。
  • 关于 @atlaskit:所有 Pragmatic Drag and Drop 的 npm 包均发布在 @atlaskit 命名空间下。未来可能会考虑使用独立命名空间。
  • npm 发布与代码同步:镜像仓库每天与内部仓库同步一次。新版本代码在合并至内部仓库后会立即发布到 npm,因此 npm 上的更新可能比镜像仓库提前最多 24 小时。

其他信息

  • 开源性质:该仓库是内部单向镜像,目前不接受外部代码贡献,但欢迎提交问题或建议。未来可能考虑建立双向镜像以接受贡献。
  • 致谢:由 Alex Reardon、Declan Warn 等多位 Atlassian 工程师及团队成员共同打造,并基于浏览器拖放规范及众多前人库的成果。
19. Rust Stream API visualized and exposed (github.com)

Rust Stream API 可视化解析

核心概述

Rust 的 async/await 机制和 Stream API 为开发者提供了强大的异步操作抽象,能够用简洁的代码构建复杂的异步管道。然而,其优雅的抽象可能隐藏了实际的执行复杂性,特别是在并发控制、背压和执行顺序方面。本文通过可视化实验,揭示了 Stream API 管道中一些出人意料的行为。

可视化实验方法

作者使用 Bevy 引擎对真实的 Rust Stream 管道进行了实时可视化。通过定义流式管道,并在各阶段通过通道报告进度,实现了数据在管道各阶段(如 mapbufferedfilter_map)中流转过程的图形化展示。实验使用 tokio::time::sleep 模拟真实的异步工作负载。

关键实验发现

实验一:buffered 方法

问题buffered(n) 是会在任意一个未来任务完成时立即从源流获取新任务,还是必须等待最早的(即缓冲队列中最靠前的)任务完成并输出后才能获取? 结果buffered 方法只有在最早的未来任务完成并输出到下一阶段后,才会从源流获取新的任务。这是为了维持输出顺序,并防止因缓冲大量已完成任务结果而导致的内存无限增长。

实验二:buffer_unordered 方法

问题buffer_unordered(n) 的行为是类似 buffered,还是会在任何任务完成时立即获取新任务? 结果buffer_unordered 方法会在任意一个未来任务完成时,立即从源流获取新的任务。由于不需要维持输出顺序,已完成的未来任务结果会立即传递到下一阶段,从而实现更高的吞吐量。

实验三:filter_map 方法的并发性

问题:异步的 filter_map 是串行执行还是并行执行提供的闭包? 结果filter_map 方法串行执行每一个异步闭包。若需要并发过滤,可组合使用 mapbufferedfilter_map(future::ready)

实验四:bufferedfilter_map 的组合行为(最关键发现)

问题:一个运行缓慢的 filter_map 阶段如何影响前一个 buffered 阶段的并发性? 结果出乎意料地,整个管道的并发性会停滞。当 async_predicate 执行时,buffered 阶段中的未来任务(async_work)会暂停执行,没有新任务启动,直到当前批次的任务全部完成。 原因分析

  1. 模型本质:Stream 管道是由多个嵌套的适配器(Adapter)结构体(如 FilterMap<Buffered<Map<...>>>)组成的。
  2. 轮询机制:当调用 stream.next().await 时,实际的异步未来任务仅在被轮询(poll)时才会推进
  3. 阻塞点:在 buffered 阶段,用于并发管理的 FuturesOrdered 队列只有在被其上层的 filter_map 轮询时才会被轮询。当 filter_map 在执行自身的 async_predicate 时,它不会去轮询下游的 buffered 阶段,导致缓冲队列中的未来任务得不到轮询而“卡住”。
  4. 影响:这种阻塞效应对于具有多次 .await 点(即需要多次轮询才能完成)的异步任务影响尤为明显,会显著增加管道整体延迟。

结论与思考

Stream API 提供了简洁优雅的异步数据处理管道,但其内部并发和背压行为可能不符合直觉,尤其在多个阶段组合时,可能导致次优的执行效率。 是否应使用 Stream API? 这取决于权衡。它在开发效率和代码清晰度上优势明显,但在追求极致吞吐量的场景下,其性能表现可能不尽如人意。作者认为,在许多情况下,为了性能而完全放弃 Stream API 可能属于“过早优化”,但开发者必须清楚了解其上述特性,以便在必要时做出正确的架构选择。

20. TIS-100: Tessellated Intelligence System (www.zachtronics.com)

TIS-100: Tessellation智能系统是一款开放式编程游戏。玩家需要通过重写损坏的代码段来修复TIS-100系统,并逐步解锁其隐藏的秘密。它是一款你可能从未要求过的汇编语言编程游戏。

游戏的核心特点包括:

  • 玩法与目标:玩家需要修复超过20个编程谜题。游戏鼓励竞争,玩家可以与朋友乃至全球玩家比拼,力争最小化代码的周期数、指令数和节点数
  • 资源与美学:游戏提供了一本可打印的TIS-100手册,详细说明了系统的内部工作原理,其设计风格致敬了复古计算机手册的美感。
  • 创造性与扩展性:游戏内置了3个沙盒模式,允许玩家设计自己的挑战。其中包含一个“视觉控制台”,玩家甚至可以在游戏内创造属于自己的小游戏。
  • 叙事与悬念:游戏故事贯穿始终,玩家将探寻TIS-100系统的神秘起源——它的创造者是谁,以及其被创造的目的是什么。
21. Borrow Checking, RC, GC, and the Eleven () Other Memory Safety Approaches (verdagon.dev)

这篇文章旨在探索内存安全技术的多样性和复杂性。作者通过虚构的“魔法书”故事引入,指出除了广为人知的垃圾回收、引用计数和借用检查外,实际上存在多达十几种内存安全方法及其混合模式。

核心内容:内存安全技术列表

文章主体列举了16种内存安全技术,并进行了简要说明:

  1. 仅移动编程:对象仅能被一个变量拥有,所有权可转移。基于仿射类型,Rust、Austral和Vale等语言使用了不同形式。
  2. 引用计数:主流方法,可与追踪式垃圾回收共存。若与不可变区域借用结合,可提升性能。
  3. 借用检查:通过限制指针的临时使用来确保安全。Austral等语言通过线性类型增强了正确性。
  4. 仅竞技场编程:始终使用竞技场(arena)进行内存分配,而非malloc/free。C、Ada、Zig等语言应用此模式,结合指针追踪可防止释放后使用。
  5. Ada/SPARK作用域规则:指针不能指向比自身作用域更深的对象。
  6. 区域:如Pony的iso,可建立对象的隔离子图。通过“打开”隔离子图并将其视为临时不可变区域,可优化性能。
  7. 栈竞技场:自动为每个栈帧管理内存,类似仅竞技场编程但更自动化。
  8. 分代引用:通过比较指针和对象的“代数”来防止释放后使用。与区域结合可显著提升速度。
  9. 随机分代引用:分代引用的更快变体,允许数据内联存储在栈、数组或其他结构中,减少缓存未命中。
  10. MMM++:对象从全局数组分配,槽位可重用,避免了释放后使用的典型问题。嵌入式和实时系统中常见此模式。
  11. 跟踪式垃圾回收:Pony通过隔离actor避免了全局暂停。Verona结合区域,让用户精细控制回收时机。
  12. 交互网:HVM运行时采用此技术高效管理纯不可变数据,无需垃圾回收或引用计数。
  13. 约束引用:结合了引用计数与单一所有权(C++意义上的)。拥有单一所有者,销毁时断言无其他引用。支持侵入式数据结构等模式,但检查在运行时进行。
  14. 线性引用计数:一种理论上可在编译时完全消除计数器的概念。通过定义“叉子”和“细齿”引用类型来实现。
  15. 非可变值语义:类似每个对象只有一个引用,但引用可在函数调用中借出。简单快速,但可能需要更多克隆操作。
  16. CHERI:硬件-软件混合方案,使用128位指针(包含地址范围和权限)实现空间内存安全。Cornucopia等方案为其增加了时间安全。
  17. 永不释放(作为趣味补充):从不调用free,从而根本避免释放后使用问题。导弹软件曾采用此思路。

辅助技术与观点

文章还提及了一些可辅助构建内存安全模型的底层技术,如类型稳定性、最终引用、唯一引用、变更检测器等。作者指出,内存安全问题的本质并非简单的“释放后使用”,而是“在内存被重用并改变类型后使用”。

结论与呼吁

作者认为内存安全是一个广阔且开放的领域,存在无数技术组合的可能性。每种方法(如RC的弱引用、C++的侵入式结构、线性类型的高级RAII、GC的易用性)都有独特优势。他鼓励开发者探索和设计新的内存安全混合模型,以期获得更好的架构、更少的约束,并催生出更多有价值的附带特性。

22. Magic Numbers (exple.tive.org)

以太网的最大传输单元(MTU)被设定为1500字节,这一数字看似随意,实则源于历史硬件限制。最初,以太网是为Xerox Alto计算机设计的,其内部数据路径运行在3MHz。以太网头部为36字节,因此MTU 1500加上头部共1536字节(12288比特)。在3Mb/s传输速率下,正好需要2^12微秒传输这些比特,使得数据可以不经过缓冲直接写入Alto的内存,从而节省当时昂贵的硬件成本。

这种设计在现代看来可能显得不合理,因为当今计算机类型多样且网络安全至关重要,但在以太网发明之初,计算机和网络稀缺,安全问题尚未凸显,因此为特定硬件优化而选择“魔数”被视为合理的权衡。许多如今广泛接受的技术标准,其形成往往基于当时特定硬件的过时特性,这些标准在技术演进中可能显得奇怪,却保留了历史痕迹。

23. Launch HN: Nango (YC W23) – Source-available unified API
24. Boeing retaliated against its own engineers working for FAA, union says (www.seattletimes.com)

波音被指报复代表FAA监督工作的工程师

波音公司的白领工会(SPEEA)指控波音管理层报复了两名工程师,这两名工程师代表联邦航空管理局(FAA)监督飞机设计工作,此举加深了对波音自我监管体制的担忧。自2024年1月5日阿拉斯加航空737 MAX飞机机身面板在空中脱落事件后,该体制已受到严厉批评。

事件概述

  • 背景:2022年,波音在整合777和787宽体飞机的新航空电子包时,两名工程师坚持要求公司重新评估先前的工程工作。
  • 管理层反对:波音管理层以增加成本和延误生产为由表示反对。
  • FAA介入:FAA支持工程师的立场,争端在2023年中期解决后,波音对两名工程师给出了负面绩效评估,影响了他们的加薪和晋升前景。
  • 后果:一名工程师因对待方式离职,另一名正在通过工会上诉绩效降级。

波音的回应

波音否认报复指控,称内部调查经过文件审查和十余名证人访谈后,未发现报复或干预证据。公司强调对报复行为零容忍,并鼓励员工提出安全问题。但工会要求获取内部调查报告,波音以调查保密为由拒绝提供。

自我监管体制问题

  • FAA代表工程师:波音有超过1000名工程师被授权作为FAA的“眼睛”,监督公司设计工作,必须独立于管理层的成本和进度压力。
  • 历史问题:2018年和2019年737 MAX坠机事件后,工程师们曾指控管理层干预安全测试,削弱了内部监督的可信度。
  • 国会与FAA行动:国会开始逆转将FAA安全监督委托给波音的趋势。2024年2月,FAA专家小组报告指出,代表FAA的员工因波音内部安全报告系统未能确保“开放沟通和非报复”而担心提出安全问题。

当前进展

  • 工会投诉:SPEEA向国家劳动关系委员会提出投诉,要求获取波音内部调查报告。
  • FAA调查:FAA正在调查这些指控,并依据2022年新政策要求波音监控、报告和调查所有干预指控。
  • 波音改革承诺:在一系列质量失误和机身面板事件后,波音领导层承诺改革安全报告系统,并重申员工可无顾虑地提出安全问题。但工会表示,公司仍在定期对抗报复案例。

该指控凸显了波音在安全文化上的潜在缺陷,以及自我监管体制下的信任危机,FAA的调查结果可能影响未来飞机认证的监督模式。

25. Autotuner: How to speed up your Rails app (railsatscale.com)

Autotuner:如何加速Rails应用

核心问题

Ruby的垃圾回收器(GC)设计上具有自适应性,但针对特定工作负载(如高并发的Rails应用)可能并非最优。GC支持多达19个可调参数,但手动调优需要深入理解GC内部机制,且每次Ruby主要版本更新都可能引入参数变更,导致调优配置过时甚至降低性能。这种复杂性阻碍了大多数Rails开发者进行GC优化。

解决方案:Autotuner gem

Autotuner通过分析应用流量自动生成个性化GC调优建议,以Rack插件形式运行,收集每次请求前后的GC数据及响应时间。其内置的启发式算法(如HeapSizeWarmup)会识别应用预热阶段和性能瓶颈,并提供具体参数建议(例如建议将堆大小设置为稳定运行时的峰值,避免启动阶段频繁GC)。

关键收益

在Shopify的实际案例中,GC调优对尾部延迟改善显著:

  • 主应用的99.9百分位GC耗时减少87%(从1秒降至0.15秒)
  • Storefront Renderer的99.9百分位GC耗时减少59%,整体响应时间提升18%

实验与验证方法

生产环境调优需谨慎,建议分三组对比测试:

  1. 未调优组:作为基准对照
  2. 稳定组:已验证有效的调优配置
  3. 实验组:逐步应用Autotuner建议

优化指标包括:

  • 启动性能:GC调优可加速应用预热
  • 平均响应时间:降低GC频率可提升平均性能
  • 极端延迟:减少尾部延迟(如99/99.9百分位)

验证流程

  1. 在实验组应用单条建议,与稳定组比较数日性能数据
  2. 若有效则加入稳定组,否则丢弃该配置
  3. 重复尝试所有建议后,对比稳定组与未调优组的整体提升

注意事项

  • GC调优可能存在权衡(如平均性能提升但极端延迟增加)
  • 需定期重新评估调优配置(Ruby版本升级或业务负载变化时)
  • 测试应覆盖足够流量以降低数据偏差

总结

Autotuner将GC调优自动化,帮助开发者突破GC黑盒,通过数据驱动的建议提升Rails应用性能。本文阐述了调优必要性、工具原理及生产环境验证方法,为性能优化提供实用路径。

26. Bicycle use now exceeds car use in Paris (english.elpais.com)

巴黎自行车使用量现已超过汽车

巴黎正经历一场深刻的出行方式变革。根据巴黎区域研究所(Paris Région Institute)的最新研究,在巴黎市中心,自行车出行占比已达11.2%,而汽车仅占4.3%。在郊区与市中心之间的通勤中,自行车占比(14%)同样超过了汽车(11.8%)。在高峰时段,自行车出行比例甚至高达18.9%

标志性基础设施与快速扩张

以里沃利街(Rue de Rivoli)为代表,巴黎的街道格局正在重塑。这条曾由汽车主导的主干道,如今已被专用自行车道和公交/出租车道取代。塞巴斯托波尔大道(Boulevard de Sébastopol)的日均自行车流量经常超过1万次。巴黎已建成超过1000公里的自行车适行设施,其中包括300多公里的自行车专用道。

政府的规划与挑战

巴黎市长安妮·伊达尔戈(Anne Hidalgo)领导的政府已拨款2.5亿美元,计划在2026年前使整个城市适用于两轮交通。即将到来的夏季奥运会也将加速这一计划。

然而,目标的实现存在延迟。尽管伊达尔戈的第二个任期已过去62%,但其“自行车计划”仅完成了27%。副市长戴维·贝尔尼亚尔(David Belliard)承认存在延误,但仍持乐观态度。

变革的驱动与体验

自行车的普及始于2019年的公交罢工,并在2020年新冠疫情封锁后因临时自行车道(“冠状病毒道”)的设立而得到巩固。市政自行车租赁服务Vélib也新增了3000辆自行车。

许多巴黎市民,如62岁的埃德梅·多罗兹莱(Edmée Doroszlai),感受到了骑行环境的显著改善和安全性提高。便捷的自行车道鼓励了更多家庭使用自行车出行。

仍存的挑战与未来愿景

尽管成就显著,挑战依然存在:

  • 停车设施不足:安全停放点匮乏是制约自行车使用的关键因素。巴黎计划新增超过13万个自行车停车位,但有人认为这远远不够(例如乌得勒支中央车站拥有1.25万个自行车位)。
  • 区域连接与安全:改善巴黎与郊区之间的连续骑行通道,以及确保入口地区的适宜性,是未来的重点。同时,街道上仍存在因交通方式变革带来的摩擦和安全担忧。

过去12年,巴黎的汽车流量下降了40%。巴黎正在适应这种改变,通过法规(如全市限速30公里/小时)和宣传,推动公共空间的共享使用。

总结而言,巴黎通过大规模基础设施建设,成功促使自行车使用量超越汽车,标志着城市交通模式的根本转变。虽然面临进度、连接和设施等挑战,但这一变革不仅重塑了城市风貌,也增强了其应对气候变化的韧性。

27. Augment, a GitHub Copilot rival, launches out of stealth (techcrunch.com)

Augment 发布:AI 编程工具市场的新竞争者

AI 正在推动编程领域的变革,开发者普遍采用相关工具。调查显示,目前有 44% 的软件工程师已在开发中使用 AI 工具,预计到 2028 年,75% 的开发者将使用各类编程助手。前微软开发者 Igor Ostrovsky 认为,AI 能够提升软件质量、团队效率并重拾编程的乐趣,因此创立了 Augment 这一 AI 驱动的编程平台。

Augment 近日宣布完成 2.52 亿美元融资,估值达 9.77 亿美元,投资方包括谷歌前 CEO Eric Schmidt 以及 Index Ventures、Lightspeed 等知名风投。公司团队汇集了多位行业资深人士:Ostrovsky 曾参与微软未发布的 Midori 操作系统开发,联合创始人 Guy Gur-Ari 曾是谷歌 AI 研究科学家,管理层还包括前 Pure Storage CEO Scott Dietzen 和前谷歌工程总监 Dion Almaer。

目前 Augment 尚未公开产品细节和底层模型,仅透露使用了经过微调的“行业领先”开源模型,并计划通过 SaaS 订阅模式盈利,具体定价将在今年正式版发布时公布。公司声称已有数百名开发者来自多家企业正在使用早期版本。

然而,AI 编程助手市场竞争异常激烈。主要参与者包括:

  • 科技巨头:GitHub Copilot(拥有超 130 万个人和 5 万企业客户)、AWS CodeWhisperer、Google Gemini Code Assist。
  • 众多初创公司:Magic、Tabnine、Codegen、Cognition 等,其中 Cognition 近期据传融资 1.75 亿美元。

行业面临严峻挑战:

  1. 经济可行性:高昂的算力成本导致许多公司难以盈利,甚至 Copilot 每月每用户也可能亏损 20-80 美元,生成式 AI 编程初创公司 Kite 已于 2022 年关闭。
  2. 技术问题:研究显示,编程助手可能导致更多错误代码进入代码库,增加维护负担;可能放大现有漏洞;开发者使用 AI 建议后编写的代码安全性可能下降。
  3. 法律风险:模型训练数据可能涉及版权和开源许可问题,部分厂商已因此面临集体诉讼。

Ostrovsky 声称,现有编程助手未能充分理解开发者意图、提升软件质量或保护知识产权,而 Augment 团队凭借深厚的 AI 和系统专业知识,旨在解决这些不足。

Augment 总部位于帕洛阿尔托,目前约有 50 名员工,预计年底人数将翻倍。在快速增长且充满挑战的市场中,其能否持续吸引用户并克服行业共性难题,仍有待观察。

28. Fine tune LLAMA3 on million scale dataset in consumer GPU using QLora, DeepSpeed (medium.com)
29. MemoryDB: A fast and durable memory-first cloud database (www.amazon.science)

根据提供的文章内容,文章标题提及“MemoryDB”,但正文并未包含关于MemoryDB数据库的任何具体技术描述、功能、架构或性能信息。所提供的全部内容均为多个亚马逊(Amazon)和AWS不同团队的职位招聘信息。

主要内容摘要如下:

  • 亚马逊Leo卫星团队:该团队负责低轨卫星网络项目,旨在为缺乏可靠网络连接的地区提供互联网服务。团队正在招聘卫星姿态测定与控制工程师,负责设计与分析控制算法、支持硬件软件开发、集成测试以及在轨操作。
  • AWS自动推理应用科学家团队:该团队致力于为需要自动化推理、隐私和主权解决方案的客户服务。招聘要求解决复杂问题、主导战略方案设计与实施、提供跨组织技术影响力并指导他人发展。多个相同的职位描述被重复列出。
  • AWS生成式AI创新中心团队:该团队专注于利用生成式AI和机器学习技术为客户构建创新解决方案。应用科学家需研究与开发前沿算法、与客户合作以理解业务问题并提供解决方案、输出最佳实践并向产品团队反馈市场信息。
  • 共同的文化与福利:多个职位描述均强调了亚马逊/AWS的包容性文化、多元化与包容(DEI)活动、灵活的工作安排以平衡工作与生活,以及持续的培训与职业发展机会。

总结:本文内容与MemoryDB数据库的技术特性无关,而是包含了亚马逊多个技术团队(涉及卫星工程、自动推理、生成式AI)的详细招聘信息,重点介绍了各自的核心职责、团队文化与公司提供的职业发展资源。

31. 'So hot you can't breathe': Extreme heat hits the Philippines (www.japantimes.co.jp)

根据提供的信息,这是一篇标题为《“热到无法呼吸”:极端高温袭击菲律宾》的新闻报道。然而,文章的正文内容已因新闻专线的授权条款限制而过期,在系统中不再可用。因此,无法获取关于该事件的具体细节、影响或官方应对措施等实质内容。

32. TypeScript: Branded Types (prosopo.io)

TypeScript 品牌类型

本文介绍如何在TypeScript中实现品牌类型(也称为不透明类型),以在类型系统层面区分结构相同的类型,解决了TypeScript默认的结构化类型系统所带来的类型兼容性问题。

核心问题

TypeScript采用结构化类型系统,即只要两个类型的结构(属性及其类型)完全相同,它们就是兼容的,可以互换使用。但在某些场景下,我们希望在类型层面上强制区分结构相同的类型,以确保类型安全。

解决方案:品牌化

通过为类型添加一个唯一的品牌标识字段,使其在类型系统中变得不同。关键点在于:

  1. 使用Symbol作为品牌字段名:确保该字段不会与类型中的其他业务字段发生冲突。
  2. 仅在类型层面操作:品牌字段是通过类型运算符添加的,不会影响运行时的数据结构(类型在编译后被擦除)。
  3. 依赖品牌值进行区分:类型是否兼容不仅取决于结构,还取决于品牌字段的值是否相同。

实现与用例

基本品牌化:通过交叉类型为现有类型添加品牌。

const brand = Symbol('brand'); // 保持私有
type A = { x: number } & { [brand]: 'A' };
type B = { x: number } & { [brand]: 'B' };

此时,类型 AB 虽然结构部分相同,但由于品牌值 'A''B' 不同,它们不再兼容。

泛型品牌化工具类型:创建可复用的品牌化和反品牌化类型工具。

type Brand<T, U> = T & { [brand]: U };
type RemoveBrand<T> = T[Exclude<keyof T, typeof brand>];

使用 Brand<T, U> 可以轻松地将类型 T 品牌化为 U;使用 RemoveBrand<T> 可以移除类型的品牌。

实际应用(类与构造函数):品牌化不能直接用于类的实例化,需要通过对构造函数进行类型转换来实现。

type Ctor<T> = new (...args: any[]) => T;
const addBrand = <T>(ctor: Ctor<T>, name: string) => {
    return ctor as Ctor<Brand<T, typeof name>>;
};
// 用法
class Dog { constructor(public name: string) {} }
const DogBranded = addBrand(Dog, 'Dog');
const dog = new DogBranded('Spot'); // 类型为品牌化的 Dog

对应的,可以通过类型断言移除品牌的附加信息。

总结

品牌类型提供了一种纯粹在TypeScript类型系统中实现名义类型的方法。它通过添加一个具有唯一标识值的编译时字段,强制区分结构相同的类型,从而增强了类型安全性,且不会带来任何运行时开销。文中提供的BrandRemoveBrand等泛型工具类型使得这一技术易于在项目中应用。

33. Nearsightedness is at epidemic levels – and the problem begins in childhood (theconversation.com)

近视流行病:从现状到防治

流行现状与影响

  • 全球趋势:近视患病率急剧上升,预计到2050年,全球约50%的人口将需要视力矫正(2000年为23%,部分国家历史上不足10%)。
  • 经济负担:仅在美国,每年用于视力矫正、检查及相关费用的支出可能高达72亿美元。

主要成因

  • 行为因素主导:近视的主要驱动因素是行为而非遗传。虽然父母近视会增加风险,但无单一“近视基因”。
  • 近距离用眼:长时间聚焦于眼前物体(如书本、屏幕、绘画),即“近距离工作”,显著增加近视风险。
  • 户外活动不足:缺乏户外时间(特别是自然光照)与近视发生率和进展密切相关。研究显示,每日户外活动少者,近视风险高出四倍以上;每周每增加一小时户外活动,近视风险降低约2%。

历史与地域因素

  • 教育模式转变:全球近视激增与东亚等地区近50年来的快速教育发展和工业化相关。儿童在室内学习时间增加,户外活动减少。
  • 案例佐证:二战后北美北极地区因推行学校教育,因纽特人近视率从个位数升至70%以上。东亚国家近视率增长尤为显著。

潜在风险与防治

  • 长期危害:高度近视会增加视网膜脱离、黄斑变性等严重眼病风险,每增加一个屈光度,黄斑变性风险上升约40%。
  • 早期干预:通过眼镜或隐形眼镜矫正模糊视力,可阻止近视进展。部分国家已推行儿童强制性视力检查。
  • 有效预防措施:减少近距离用眼时间、增加户外活动(尤其在自然光下)。现代生活中若难以减少近距离用眼,建议频繁休息或在户外阳光下进行阅读和浏览。
34. Air Force picks Anduril, General Atomics to develop unmanned fighter jets (breakingdefense.com)

美国空军选定安杜里尔与通用原子两家公司开发无人僚机原型

美国空军宣布,已选定国防初创公司安杜里尔和无人机制造商通用原子航空系统公司,为其“协同作战飞机”计划下一阶段建造和测试无人机原型。此次决定将竞争者从五家缩减至两家,波音洛克希德·马丁诺斯罗普·格鲁曼三家公司被淘汰出局。

空军表示,未被选中参与建造生产代表性测试样机并执行飞行测试的公司,仍保留在由20多家公司组成的更广泛的行业合作伙伴库中,未来将有机会竞争生产合同等后续任务。

项目背景与目标 CCA计划是美国空军一项耗资数十亿美元的主要项目,旨在部署多达1000架无人机。空军计划在2026财年对第一轮CCA工作做出“竞争性生产决定”,并在本十年结束前形成全面作战能力。该项目将经历多个“增量”阶段:当前为第一增量,主要完成详细设计、建造原型和测试;第二增量已计划纳入2025财年预算。

中选公司及方案

  • 通用原子将推出其Gambit系列无人机
  • 安杜里尔通过2023年收购Blue Force技术公司获得了Fury无人机,并将其作为竞标方案。

两家公司高层均对此次中标发表声明。安杜里尔CEO称该计划是“为非传统国防公司参与大型项目铺平道路”,通用原子总裁则强调其在无人机系统方面的长期经验将有助于“以可承受的成本为作战人员提供大规模作战能力”。

落选公司反应

  • 波音表示失望但“决心不减”,将继续推进其自主飞机家族,包括MQ-25“黄貂鱼”和MQ-28“幽灵蝙蝠”等。
  • 洛克希德·马丁重申致力于推进自主系统技术,特别是在CCA与F-35和F-22的集成方面。
  • 诺斯罗普·格鲁曼未立即回应。

未来动向 被淘汰的公司仍可通过自筹资金继续推进其设计,以竞争未来的第一增量生产合同。此外,第二增量将为被淘汰公司及新公司(可能包括国际合作伙伴)提供新的机会。空军还表示,该计划可能涉及对外军售。

另一项并行的CCA工作专注于开发无人机的自主软件,已有20至30家供应商参与,其进展独立于硬件开发。

35. US bans TikTok owner ByteDance, will prohibit app in US unless it is sold (arstechnica.com)

美国禁止TikTok所有者字节跳动,除非出售否则将禁止该应用
美国国会已通过法案,要求字节跳动在约9个月内剥离TikTok美国业务,否则该应用将在美国被禁止。法案被纳入对外援助拨款法案中,并获得两党支持。

  • 立法理由:参议院商务委员会主席Maria Cantwell表示,此举旨在防止外国对手进行间谍、监视和恶意操作,保护美国民众、军人和政府人员。
  • 反对声音:部分参议员批评该法案实质是“TikTok禁令”,可能侵犯第一修正案权利。Ed Markey称“审查不是美国人民的作风”,Ron Wyden担忧法案赋予的广泛权力可能被未来政府滥用。
  • 字节跳动回应:公司计划提起诉讼阻止该法律,称其违反1.7亿美国用户的第一修正案权利。TikTok美国公共政策负责人Michael Beckerman强调“这只是漫长过程的开始”。TikTok声明称已投资数十亿美元保障美国数据安全,并“终将在法庭上胜诉”。

争议焦点:法案以国家安全为由,但批评者指出可能损害言论自由和市场竞争。尽管有参议员提出异议,包含该法案的拨款法案仍获通过,法律挑战即将开始。

36. Digital Wood Joints (openup.design)

数字木工接头

木工接头既是功能构件也是艺术元素,在传统家具与日本古建筑中均展现了工匠技艺与功能美学的完美平衡。随着工业化发展,传统木工接头因生产效率需求逐渐被边缘化。

然而,计算机控制木工机械进入工匠工坊后,木材连接方式迎来革新契机。奥芬巴赫设计学院(Hochschule für Gestaltung Offenbach)C…Lab在Jochen Gros教授与设计师Friedrich Sulzer的带领下,经过多年研究开发出50种数字木工接头

这些接头分为三类:

  • 框架接头
  • 板材接头
  • 箱体接头

该研究成果旨在为木工从业者提供灵感,鼓励其在项目中实验应用这些接头,或自主开发新的数字木工接头。所有接头均提供多种数据格式,便于直接投入实践使用。

37. Meta Reports First Quarter 2024 Results (investor.fb.com)

Meta 2024年第一季度业绩报告页面概览

该页面是Meta平台(原Facebook)的投资者关系页面,旨在提供公司财务和业务信息,但页面主要内容为网站导航与订阅功能,未直接显示第一季度的具体财务业绩数据。

核心功能模块

  1. 投资者信息订阅

    • 邮件警报:用户可通过输入邮箱地址订阅各类通知。
    • 订阅列表:包括投资者新闻、所有SEC文件、季度及年度报告、内部交易、最新新闻与公告等选项。
    • 验证码:页面包含一个验证码输入框,用于安全验证。
  2. 快速链接

    • 提供指向Meta公司历史、常见问题解答、股票信息、顾问资源等页面的直接链接。
  3. 附加资源链接

    • 包含《反奴隶制与人口贩运声明》和《负责任矿产采购政策及披露》的链接,体现公司治理相关信息。
  4. 产品与公司信息

    • 展示了Meta及其旗下主要应用的Logo(如Facebook、Messenger、Instagram、WhatsApp),并链接至各自官方网站。
    • 底部设有“关于我们”、“创建主页”、“职业机会”、“隐私”、“条款”、“帮助”等通用网站链接。

页面结论

该页面主要作为Meta投资者关系网站的门户和导航页。要获取2024年第一季度具体的财务报告,用户需要通过页面上的订阅功能接收通知,或点击指向“季度报告”的链接进行查看。页面本身未包含业绩摘要、收入、利润等具体财务数据。

39. Tiny GPU: A minimal GPU implementation in Verilog (github.com)

Tiny GPU:基于Verilog的极简GPU实现

项目概述

Tiny GPU是一个用于从底层理解GPU工作原理的极简实现,用少于15个完全文档化的Verilog文件构建。它专注于通用计算GPU(GPGPU)和ML加速器的核心原理,而非图形特定硬件,旨在弥补GPU硬件实现层面学习资源匮乏的现状。

核心架构

GPU整体

  • 设计为一次执行一个内核。
  • 通过加载内核代码到全局程序内存、数据到数据内存、设置线程数并触发启动信号来执行内核。
  • 主要组成单元包括:设备控制寄存器、调度器、可配置数量的计算核心、数据内存控制器、程序内存控制器和缓存(开发中)。

设备控制寄存器

存储内核执行的元数据,此处仅存储需启动的总线程数。

调度器

负责将线程组织成可并行执行于单个核心的“块”,并将这些块分配给可用核心。当所有块处理完毕后,报告内核执行完成。

内存

  • 全局内存:数据内存支持8位地址寻址(256行)和8位数据;程序内存支持8位地址寻址和16位指令。
  • 内存控制器:跟踪所有来自计算核心的内存请求,根据外部内存带宽进行限流,并将响应路由回相应资源。
  • 缓存:在开发中,用于存储频繁访问的数据以减少对全局内存的重复访问。

核心

每个核心处理一个块。为最大化并行性,核心内为块中的每个线程提供专用的资源:算术逻辑单元(ALU)、加载存储单元(LSU)、程序计数器(PC)和寄存器文件。

  • 调度器:管理核心内线程的执行,当前实现在处理完一个块的所有指令后才处理新块,且线程同步顺序执行。
  • 取指器:从程序内存异步获取当前PC指向的指令。
  • 译码器:将指令译码为控制信号。
  • 寄存器文件:每个线程拥有独立的寄存器文件,支持SIMD模式。最后三个寄存器为只读,提供 %blockIdx%blockDim%threadIdx 信息。
  • ALU:为每个线程专用,处理加、减、乘、除等算术运算和比较指令(CMP)。
  • LSU:处理LDR(加载)和STR(存储)指令,并管理异步内存请求的等待时间。
  • PC:决定每个线程下一条指令。默认每条指令后PC递增1;通过 BRnzp 指令和NZP寄存器实现分支和循环。

指令集(ISA)

实现了一个简单的11指令集,用于矩阵加法、乘法等概念验证内核:

  • BRnzp:条件分支跳转。
  • CMP:比较两个寄存器,结果存于NZP寄存器。
  • ADD, SUB, MUL, DIV:基本算术运算。
  • LDR, STR:从全局内存加载/存储数据。
  • CONST:加载常量到寄存器。
  • RET:标记线程执行结束。

执行流程

核心控制流

依次经过:取指、译码、请求内存(如需要)、等待内存响应、执行计算、更新寄存器和NZP寄存器。

线程执行

每个线程遵循上述控制流,在其独立的寄存器文件上进行计算。通过只读寄存器中的 %blockIdx%blockDim%threadIdx 实现SIMD功能。

内核示例

  • 矩阵加法:8个线程分别对两个1x8矩阵进行元素相加,展示了SIMD编程和异步内存访问。
  • 矩阵乘法:4个线程计算两个2x2矩阵的乘积,演示了循环(分支)的使用。

仿真环境

支持对以上内核进行仿真,需安装 iverilogcocotbsv2v。运行测试后,日志文件将记录初始内存状态、完整执行跟踪和最终内存状态。

高级功能(未来方向)

为简化设计,省略了现代GPU中的多项优化:

  • 多级缓存与共享内存:更精细的缓存层次和块内线程共享内存。
  • 内存合并:合并相邻内存请求以提高带宽利用率。
  • 流水线:允许同时执行多个指令以提升资源利用率。
  • 线程束调度:同时执行一个核心内的多个线程批次。
  • 分支发散:处理线程因数据不同而走向不同分支的情况。
  • 同步与屏障:支持块内线程同步。

后续计划

包括添加指令缓存、适配Tiny Tapeout、实现基本的分支发散、内存合并、流水线以及优化时序等。

40. The Rise and Fall of the LAN Party (aftermath.site)

局域网聚会(LAN Party)的兴衰

一、背景与兴起

在1990年代末至2000年代初,随着《半条命》、《反恐精英》、《虚幻竞技场》等三维图形复杂的第一人称射击游戏(FPS)兴起,对网络延迟要求极高。当时互联网速度普遍较低,无法满足这类游戏的需求。局域网聚会(LAN Party) 应运而生,参与者将个人电脑(包括笨重的CRT显示器、主机箱和外设)搬运到同一物理场所,通过网络交换机连接,实现高速、低延迟的本地对战和文件共享。

二、文化特征与活动规模

LAN Party从小型私人聚会发展到大型活动(如QuakeCon、DreamHack),成为21世纪初的标志性社交场合。其文化特征包括:

  • 游戏:流行FPS游戏(如《反恐精英》的Dust II地图、《虚幻竞技场》的Facing Worlds地图)和即时战略游戏(如《星际争霸》、《魔兽争霸III》)。
  • 技术环境:以CRT显示器、米色机箱、自定义电脑硬件为典型,体现了用户驱动的DIY精神。
  • 文化潮流:照片记录了当时的新金属音乐、动漫文化(如《龙珠Z》)、网络梗文化(如“All your base are belong to us”)及特定消费品(如Bawls Guarana能量饮料)。

三、意义与价值

LAN Party代表了游戏从孤立活动向社交化、网络化转型的阶段。参与者需投入体力与技术准备,体现了早期互联网的探索精神。这些聚会也被视为用户拥有更多控制权的时代,玩家可自定义游戏内容(如创建Mod)、自主搭建网络环境。

四、衰落原因

2010年代后LAN Party逐渐式微,主要原因包括:

  1. 技术进步:高速互联网普及,使低延迟在线对战成为可能。
  2. 在线服务的兴起:如Xbox Live推出便捷的匹配系统,简化了多人游戏流程,但减少了用户控制权(如无法自建服务器)。
  3. 数字发行与平台垄断:Steam等数字平台取代了实体拷贝和文件共享,游戏转向服务器中心化架构,限制了局域网对战的可能性。
  4. 商业模式变化:游戏开发更依赖持续服务和微交易,用户对软件和体验的控制权降低。

五、反思与启示

LAN Party的衰落不仅源于技术便利性,也反映了数字生态的结构性转变:用户自主性被削弱,游戏体验日益由公司控制。作者认为,尽管游戏和科技已普及,但随之而来的是监控加强、数据失控和注意力被商业化。LAN Party所代表的早期互联网探索精神——强调集体创造力、自主权和真实社交——在当今中心化的数字世界中显得尤为珍贵。