2024-11-30

27 篇热帖

1. Why pipes sometimes get "stuck": buffering (jvns.ca)

管道有时会“卡住”的现象通常是由输出缓冲导致的。许多程序在通过管道或文件输出时,会先缓存数据(通常约8KB)而非立即写入,以提高性能。这会导致管道中数据延迟显示,甚至看似“无输出”。

原因:缓冲机制

  • 程序会根据输出目标决定缓冲策略:若写入终端,通常使用行缓冲(逐行立即输出);若写入管道或文件,则使用块缓冲(积攒数据后批量写入)。
  • 例如,在 tail -f file | grep thing1 | grep thing2 中,grep thing1 会因输出到管道而缓冲,可能永远积累不到8KB数据,导致后续命令无输出。

程序缓冲行为差异

  • 不缓冲的命令tailcattee
  • 常见缓冲命令及禁用缓冲的标志
    • grep--line-buffered
    • sed-u
    • awk:使用 fflush() 函数
    • tcpdump-l
    • jq-u
    • tr-u
  • 编程语言默认缓冲:C、Python、Ruby、Perl等语言的默认输出函数在管道中会缓冲,需通过特定设置(如Python的 -u 参数)禁用。

缓冲导致的问题

  • Ctrl-C 中断时数据丢失:缓冲数据可能未被刷新而丢失(如 tcpdump 管道中断时)。
  • 重定向到文件也会缓冲,但退出时数据通常会被写入。

解决方案

  1. 使用快速完成的命令:避免缓慢输出的管道(如用 cat file | grep ... | tail)。
  2. 添加行缓冲标志:在 grep 等命令中使用 --line-buffered
  3. awk 替代多级 grep:合并过滤逻辑,减少管道环节。
  4. 使用 stdbuf 工具:通过 stdbuf -o0 关闭缓冲,但依赖 LD_PRELOAD,兼容性有限。
  5. 使用 unbuffer 工具:强制程序输出视为终端(少缓冲),通常可靠,但可能引入颜色等副作用。

其他注意事项

  • 此现象在数据流缓慢(如 tail -ftcpdump)时更明显。
  • 理想情况下可通过环境变量全局控制缓冲,但目前无统一标准。

文章核心在于揭示缓冲对管道行为的隐形影响,并提供实用应对方法。

2. What does this button do? – My new car has a mysterious and undocumented switch (blog.koenvh.nl)

内容状态说明
提供的页面内容为空,实际显示为“404错误:页面不存在”,无法提取具体信息。因此无法生成有效摘要。

3. Sol-Ark manufacturer reportedly disables all Deye inverters in the US (solarboi.com)

Deye品牌逆变器在美国被远程禁用,引发混乱。

  • 事件核心:2024年11月15日,美国多地(包括波多黎各、亚利桑那州)以及巴拿马、加拿大的Deye品牌逆变器突然被远程锁定,屏幕显示禁止在美国使用,并提示联系当地供应商Sol-Ark。这导致依赖这些逆变器的家庭失去了太阳能发电和备用电源功能。
  • 背景与争议:Sol-Ark自2018年起拥有在美国独家销售其逆变器(由Deye代工)的权利。部分公司销售Deye品牌逆变器涉嫌违反此独家协议,Sol-Ark曾通过法律途径维权。此次事件被认为是Deye单方面行动,但直接波及了不知情的终端用户。
  • 各方回应
    • Sol-Ark:声明其无法控制Deye的行动,也不负责非Sol-Ark品牌的逆变器。但作为临时解决方案,宣布在2024年11月15日至12月31日期间,允许受此事件影响的家庭以大幅折扣价购买性能相当的Sol-Ark新逆变器,并负责运往波多黎各(仅限住宅用户)。该公司同时强调了其自有平台的安全性和隐私保护。
    • Deye:最初未公开回应,后据报已发表声明。
  • 更广泛担忧:此事件引发了两个深层担忧:
    1. 地缘政治风险:依赖中国制造的逆变器可能使美国能源基础设施面临潜在远程干预的风险。
    2. 网络安全风险:现代联网逆变器的远程管理功能是潜在的网络攻击目标,可能危及能源安全。
  • 当前状态:事件仍在发展中,对受影响用户的最终解决方案尚不明确。行业反思指出,应谨慎选择具备本地官方支持的逆变器,并考虑更安全的网络配置。
4. If not React, then what? (infrequently.org)

如果不是React,那用什么?

核心观点

文章认为React已成为遗留技术,不应在新项目中使用。前端开发的核心问题不是寻找另一个工具,而是采用真正的工程思维——即基于用户需求、约束条件和证据进行决策,而非盲目追随框架主义。

React的主要问题

  • 技术遗留:React设计于IE6时代,其合成事件系统和虚拟DOM等特性是为兼容旧浏览器而存在,导致代码臃肿和性能问题。
  • 性能缺陷:虚拟DOM并非真正高效,其diffing模型会导致不必要的主线程工作,且无法防止布局抖动等问题。
  • 生态系统臃肿:React项目常包含大量冗余依赖(如core-js、lodash等),显著增加客户端负载。
  • 开发文化误导:React社区存在“框架主义”倾向,即认为采用更多或不同的框架工具能解决所有问题,这忽视了用户真实体验。

框架主义的危害

  • 忽视用户需求:过度关注开发者体验(DX)而非终端用户,导致性能、可访问性下降。
  • 成本高昂:React等框架引入大量抽象层,增加调试难度和维护成本。
  • 阻碍真正工程实践:用工具迭代代替基于数据和约束的解决方案设计。

替代方案:按场景选择技术栈

文章主张根据应用类型选择合适的技术,核心原则是最小化客户端复杂度,优先使用HTML/CSS,并仅在必要时引入JavaScript。

1. 信息类网站(博客、企业官网等)

  • 推荐方案:静态站点生成器(如Hugo、Astro)、语义化HTML、可选渐进增强。
  • 理由:会话时间短,数据更新少,无需客户端状态管理。

2. 电商网站

  • 推荐方案:服务端渲染的语义HTML、渐进增强。
  • 理由:页面间数据独立,会话时间可变,需快速加载和新鲜内容。
  • 反面案例:Walmart使用Next.js导致移动端性能问题。

3. 媒体、社交应用

  • 可考虑SPA的场景
    • 需要连续播放媒体浏览(如迷你播放器)。
    • 支持离线功能。
    • 具有大量交互更新(如文档编辑器)。
  • 一般方案:混合使用渐进增强和岛屿架构。

4. 生产力应用(编辑器、邮箱等)

  • 可考虑SPA的场景:会话时间长、数据更新频繁、需要乐观更新。
  • 注意:必须严格控制代码分割和加载策略。

常见反驳与回应

  • “需要快速开发”:React等框架往往导致长期技术债务,最终减慢开发速度。
  • “Facebook在用”:你的项目与Facebook场景不同,且其自身性能也存问题。
  • “团队熟悉React”:Web开发技能可迁移,React知识并非不可替代。
  • “React是行业标准”:实际上React生态碎片化严重,无统一标准。
  • “Next.js足够快”:数据表明其性能显著劣于HTML优先方案。
  • “React Native可用于移动端”:可考虑渐进式Web应用(PWA)或Capacitor等方案替代。

正确做法

  1. 以用户为中心:定义关键用户旅程,基于真实性能数据(如核心网页指标)决策。
  2. 证据驱动:使用真实用户监控(RUM)和实验室测试数据评估方案。
  3. 设置防护栏:通过策略(如英国政府数字服务要求的渐进增强)防止技术选择偏离用户价值。
  4. 进行技术选型测试:针对关键场景构建概念验证,客观评估不同方案的权衡。

结论

放弃React等过重框架是成本节约和用户体验提升的关键。真正的工程实践要求以用户需求为约束,基于证据选择技术栈,而非追逐流行框架。对于绝大多数Web应用,服务端渲染和渐进增强仍是最佳选择;仅在确实需要复杂客户端交互时,才谨慎采用SPA架构,并严格控制其成本。

5. The Deterioration of Google (www.baldurbjarnason.com)

文章指出谷歌搜索引擎质量持续恶化,主要表现为:机器学习算法导致大量优质独立网站被错误降权或除名,同时未能有效过滤AI生成的垃圾内容。谷歌通过“有用内容系统”训练模型,但该系统已变成连工程师都难以理解的“黑箱”,无法准确识别真正有价值的内容。

受影响网站主普遍反映流量暴跌,部分高达97%,面临倒闭危机。即使谷歌召开创作者峰会承认算法存在问题,却始终未能修复。前谷歌机器学习专家曾警告LLM可能导致系统混乱,而大规模裁员加剧了系统理解的流失。

文章认为谷歌作为垄断企业,即使产品效用下降也不影响其收益,因此缺乏改善动力。美国政治环境进一步巩固了科技垄断地位,导致搜索质量问题可能长期存在。独立出版行业正因此遭受毁灭性打击。

6. Geometric line-art of Wacław Szpakowski (2017) (www.theparisreview.org)

瓦茨瓦夫·什帕科夫斯基的几何线条艺术
瓦茨瓦夫·什帕科夫斯基(1883–1973)是一位波兰艺术家,他长期默默创作了一系列由单根连续线条构成的迷宫式几何抽象画。这些作品始于他17岁左右,历经60余年的精心提炼与复杂化,直到他85岁时才以论文《节奏线条》自述其项目,但始终未公开展示。直到他去世五年后的1978年,作品才得以面世,至今仍相对晦涩难懂。

艺术特点与创作过程

  • 单线构成:每幅画由一笔不间断的线条勾勒而成,形成精巧复杂的几何结构。
  • 工艺与痕迹:作品表面极度工整,但偶尔可见擦除痕迹,暗示艺术家可能多次重复描绘同一路径,以达到均匀精准的效果。
  • 内在逻辑:什帕科夫斯基强调其作品并非装饰图案,而是“线性思想”,需观众沿线条从左至右“阅读”方能领悟内在内容。他将绘画过程类比为音乐创作,甚至认为作品可作为乐谱使用。

艺术家的生平与背景
什帕科夫斯基受过建筑学训练,曾任工程师,业余爱好小提琴。他的笔记本融合了建筑观察与自然现象图解,兼具达芬奇式的科学精神。他历经两次世界大战,二战期间参与波兰地下抵抗运动,因此入狱且丧子。尽管动荡,他仍坚持艺术探索,并视之为对抗时代混乱的审美坚持。

展览:《奠基视觉》
纽约米格尔·阿布罗画廊举办首次美国大型什帕科夫斯基个展,展出其26幅绘画及笔记本,并引入7位当代艺术家的作品进行跨时空对话。展览旨在突破他常被简单归为“局外人”或装饰艺术家的标签,重新定位其于抽象艺术谱系中的位置。

当代艺术的回应与对话

  • 弗洛里安·普姆赫斯尔:以石膏浮雕转化什帕科夫斯基的线条路径,强调其绘画的“入口”与“出口”,三维化呈现线条的速度与转向。
  • 居伊·德·宽泰:影片中缓慢移动的指针与抽象形式结合,呼应了什帕科夫斯基对系统化与“内在内容”的探索。
  • 萨姆·卢伊特:作品形式上接近什帕科夫斯基,但线条源于电信技术中的加热电路模型,以批判性视角凸显当代技术理性与什帕科夫斯基原初创意的差异。

展览意义
策展人玛莎·切列诺娃与安雅·科马尔指出,展览试图打破时代隔阂,探讨什帕科夫斯基作品在当代语境中的共鸣。其孤立中的执着创作被视作一种“终极的痴迷”,代表着一种未被教条束缚的创作自由。展览不仅重新发掘了一位被遗忘的先驱,也促使观众反思几何抽象、极简主义与概念艺术之间的历史脉络。

7. Rust-Query (blog.lucasholten.com)
# Rust-Query 库概述

**Rust-Query** 是一个旨在为 Rust 提供安全、直观且无需编写 SQL 的关系数据库交互库。其核心目标是利用 Rust 的类型系统,在编译期提供强保证,避免常见的数据库迁移问题,并使复杂查询的编写更加自然。

## 核心设计动机
作者开发此库的主要原因是认为现有 Rust 数据库交互方案缺乏足够的编译时安全性,且 SQL 语法过于冗长。数据库本身提供了数据持久化、原子事务等强大功能,而 SQL 作为主要交互语言,更适合由机器而非人类直接编写。

## 主要特性与设计
该库采用“观点化”设计,深度集成 Rust 类型系统:
1.  **类型安全与编译时检查**:通过类型系统确保查询的正确性,例如外键导航(如 `track.album().artist().name()`)和唯一约束查找(返回 `Option<Rating>`)。
2.  **Null 安全**:可选值在查询中自然映射为 Rust 的 `Option` 类型。
3.  **直观的聚合**:聚合操作(如 `avg`)被设计为对每一行返回确定结果,比传统的 `GROUP BY` 更易理解。
4.  **显式表别名**:连接表时会返回一个代表该表的虚拟值,便于后续操作。
5.  **多版本 Schema 与类型安全迁移**:通过声明式语法(使用 `#[schema]` 宏)定义 Schema 版本。迁移脚本同样具备类型检查能力,允许使用任意 Rust 代码处理数据行。
6.  **行引用与事务生命周期绑定**:行引用仅在事务生命周期内有效,确保数据访问安全。
7.  **封装的行 ID**:库的 API 不暴露底层的行编号(row IDs)。

## 使用示例
- **定义 Schema**:使用类似枚举的语法声明表结构,其中字段类型可引用其他表以建立外键关系,并通过属性宏生成对应的版本化模块。
- **数据插入**:通过 `TransactionMut` 进行插入操作。对于含唯一约束的表,使用 `try_insert` 处理可能的冲突,并获得类型安全的错误信息。
- **数据查询**:在 `txn.query` 闭包中进行。通过 `join` 连接表,使用 `filter_on` 进行过滤,并利用 `aggregate` 计算聚合值。查询结果可收集为向量或结构体。
- **Schema 演进与迁移**:通过添加带版本范围注解的字段来定义新版本的 Schema。迁移过程通过操作对应版本的更新结构体实现,迁移函数内部可执行单行查询或使用 Rust 代码(如 `map_dummy`)转换数据。

## 现状与后端
- **开发状态**:该项目仍处于开发阶段,鼓励用户试用并提供反馈。
- **数据库后端**:目前仅支持 **SQLite** 作为嵌入式数据库后端,且短期内不会改变。

总结来说,**rust-query** 通过将数据库操作全面抽象为 Rust 类型化的、可组合的查询,并在编译时进行验证,为开发者提供了一种更安全、更符合 Rust 习惯的数据库交互方式,同时致力于解决 Schema 迁移这一常见痛点。
8. Breaking the 4Chan CAPTCHA (www.nullpt.rs)

本文介绍了作者通过机器学习方法破解4Chan CAPTCHA的项目历程,旨在训练一个能在浏览器中运行并实现高准确率的模型。

项目核心目标是开发一个模型,在浏览器中以超过80%(优选90%)的准确率解决4Chan CAPTCHA。主要挑战在于数据获取:真实CAPTCHA的爬取受限于4Chan的请求限制和Cloudflare验证,且需要人工标注解法;作者尝试使用商业验证码服务,但准确率仅约72%(80%解决率中90%正确);人工自行解决也因限速和验证码变难而受限。

因此,作者转向生成合成数据。通过算法从真实CAPTCHA图像中提取背景,并手动标注和隔离了18个特定字符的样本图像。基于字符布局模式,构建了一个合成数据生成器,产出了约5万个带标签的合成CAPTCHA,与约500个人工解决的真实样本共同组成训练集。

模型采用CNN-LSTM架构,配合CTC损失函数处理可变长度输出。训练过程中发现一个关键错误:tf.image.resize函数的参数顺序应为(高度, 宽度)而非(宽度, 高度),修正后模型性能大幅改善。训练约8-16个epoch后损失收敛。

模型部署到浏览器时遇到两个问题:TensorFlow模型转换器不兼容Python 3.12,且TensorFlow.js不支持Keras 3。解决方案是降级Python版本并使用传统Keras 2格式进行转换。

最终,该用户脚本在真实4Chan CAPTCHA上实现了超过90%的解决率,且能无差别处理新出现的4字符验证码。项目成功达成了预设目标。

10. The Influence of Bell Labs (www.construction-physics.com)

贝尔实验室作为创新引擎和技术生成器,拥有悠久而传奇的历史。数十年来,它催生了大量重大发明和科学发现,其核心使命是为AT&T的电话网络提供支持。贝尔实验室的显著特点在于融合了学术与工业研究的优势:研究人员无需立即考虑盈利,拥有高度自由探索有前景的方向,可发表论文并参与学术交流,同时享受只有工业实验室才能提供的尖端设备,且无需承担教学或申请经费的压力。

除了实验室本身的成就,其常被忽视的深远影响在于:它激励了20世纪下半叶众多大公司效仿其模式建立研究机构。贝尔实验室极具声望,晶体管的发明证明了资助“基础”科学研究可以改变世界。在二战后政府与私营部门研发支出激增的背景下(1951年美国私人研发支出较战前增长四倍),贝尔实验室的成功促使许多公司建立了以学术自由、不追求短期盈利为特点的研发实验室。

其影响主要体现在三个方面:首先,晶体管开启了半导体时代,企业若想在该领域竞争需具备相应科学知识;其次,它展示了基础研究能产生巨大商业成功的产品(如杜邦公司的尼龙亦强化此观点);最后,贝尔实验室的声望使其能吸引顶尖人才,形成良性循环。

众多公司受此启发建立了研究实验室:

  • IBM 在1950年代后大幅扩充研究规模,聘请数千名科学家,设立基础研究项目,模仿贝尔实验室模式,后在扫描隧道显微镜、高温超导等领域取得重大突破。
  • 德州仪器 聘请曾在贝尔实验室工作的Gordon Teal领导其研究实验室,借鉴基础研究模式,最终开发出首个商用硅晶体管并参与发明集成电路。
  • 施乐帕洛阿尔托研究中心(PARC) 成立时旨在独立于现有产品进行基础科学研究,诞生了个人电脑、图形用户界面、以太网等变革性技术。
  • 福特埃克森 等非电子行业公司也建立了类似实验室,追求自由探索且不追求短期回报,分别在SQUID、钠硫电池以及锂离子电池等领域取得成果。

然而,随着AT&T垄断地位的终结,贝尔实验室未能维持其长期研究环境。同样,其启发的研究机构也逐渐转向更紧密联系产品开发、注重短期效益的模式。例如IBM和埃克森的研究变得更加“阶段化”,PARC到1990年代已不再进行完全脱离产品的自由研究。

文章最后指出,企业逐渐不愿资助无限制的探索性研究,部分原因是此类实验室未再产生如晶体管或尼龙般的变革性产品。其长周期“突破”成就(如扫描隧道显微镜、分形几何)更多是科学发现,而非产业变革产品。工业研究实验室的时代可能只是一种非理性繁荣的泡沫,在历史特殊条件(如量子力学发现、二战推动的技术进步)下诞生,难以持续。

11. Buy Nothing Day (buynothingday.co.uk)

“不消费日”(Buy Nothing Day)总结

活动时间与性质
每年11月28日(黑色星期五)举行“不消费日”,这是一个为期24小时的“消费排毒”行动,旨在鼓励人们暂停购物,反思消费对环境和伦理的影响。全球参与者通过自愿停止消费,以个人实验或公开声明的形式表达对过度消费文化的反对,且该活动完全免费。

活动意义
作为消费者,我们需要质疑购买的产品并挑战生产公司。过度消费正对环境和发展中国家构成真实风险。通过简单行动应对气候危机,“不消费日”是一个良好的起点,其核心信息是“少购物,多生活”。

参与方式
参与者可通过“不行动”来参与——即停止消费本身即是一种行动。活动也倡导减少日常消费量,例如减少一次性用品使用、抵制快时尚等,以集体力量改变对单次使用包装、快时尚和废弃文化的依赖。

具体行动建议

  1. 减少一次性用品:避免使用一次性塑料瓶、餐具、外卖包装等,改用可重复使用的杯子、水瓶。
  2. 包装排毒:选择无塑料或无包装的礼物,避免使用无法回收的礼品包装材料(如含箔纸、亮片等)。
  3. 抵制快时尚:避免购买廉价、短寿命的服装,尝试旧衣改造、捐赠或二手交易,并关注品牌伦理实践。

历史与全球影响
“不消费日”由反消费主义媒体Adbusters于90年代发起,现已成为全球50多个国家参与的国际活动。2000年,英国设计师迈克尔·史密斯创建了该活动的英国网站,持续推动“少购物,多生活”的信息。活动指出,全球20%的富裕国家消耗了80%以上的自然资源,导致环境破坏与财富分配不公。发展中国家工人常面临低薪、恶劣劳动环境等问题,而全球化模型并未有效缓解贫困与不平等。

活动形式与联系方式
活动以非对抗性方式进行,鼓励人们以创意方式暂时脱离消费主义。媒体可通过指定邮箱联系活动组织者,相关口号受版权保护。

12. NASA's Europa Clipper: Miles Down, Instruments Deploying (www.nasa.gov)

NASA 欧罗巴快船任务进展总结

任务概况

NASA 的欧罗巴快船(Europa Clipper)探测器于2024年10月14日发射,正前往木星的卫星欧罗巴。这是 NASA 为行星任务开发的最大航天器,目前距离地球已超过1300万英里(2000万公里),以每秒22英里(35公里)的速度相对太阳飞行,预计2030年抵达木星,2031年开始进行49次飞掠探测。

当前进展

  • 状态良好:航天器运行正常,团队接收的工程数据一切顺利。
  • 已部署硬件
    • 巨型太阳能电池板(长度相当于一个篮球场)。
    • 磁力计的伸缩臂,全长28英尺(8.5米),用于未来测量欧罗巴的磁场,以确认地下海洋的存在并研究其特性。
    • 雷达仪器的天线:包括4根长57.7英尺(17.6米)的高频天线和8根长9英尺(2.76米)的甚高频天线。
  • 仪器测试计划:其余七台科学仪器将在12月和明年1月陆续开机进行健康检查。部分仪器(如可见光成像仪、气体和尘埃质谱仪)将在未来约三年内保持防护罩关闭,以防在内太阳系飞行期间受太阳损伤。

近期飞行计划

  • 2025年3月1日:抵达火星轨道,利用火星引力进行加速(重力助推)。届时将开启热成像仪拍摄火星图像测试,并使用雷达仪器收集数据。
  • 2026年12月:飞掠地球进行第二次重力助推。期间将用磁力计测量地球磁场以校准仪器。

主要科学目标

任务旨在通过对欧罗巴的详细探索,评估其是否具备支持生命的条件,具体包括:

  1. 测定冰壳厚度及其与下方海洋的相互作用。
  2. 研究冰壳的成分。
  3. 描述其地质特征。

项目管理

该任务由加州理工学院管理的喷气推进实验室(JPL)牵头,与约翰·霍普金斯大学应用物理实验室(APL)合作,并得到 NASA 多个中心的技术支持。NASA 马歇尔太空飞行中心负责计划管理,肯尼迪航天中心负责发射服务。

13. WASM-4: Build retro games using WebAssembly for a fantasy console (wasm4.org)

WASM-4 是一个面向复古游戏开发的虚拟主机,其核心是利用 WebAssembly 技术构建游戏。该项目旨在为开发者提供一个极简且易于上手的创作环境,鼓励在 160x160 像素的分辨率和仅 4 种颜色的严格限制下进行创意表达,从而专注于游戏设计本身而非复杂的技术细节。

该项目的一个关键特点是语言无关性,支持开发者使用任何能够编译为 WebAssembly 的编程语言进行开发,这包括但不限于 AssemblyScript、C/C++、Rust 和 Go 等。

此外,WASM-4 拥有一个多元且友好的社区,由热爱小型化游戏创作的开发者组成,为项目提供了持续的支持和活力。

14. RNA-targeting CRISPR reveals that noncoding RNAs are not 'junk' (phys.org)

该研究使用针对RNA的CRISPR-Cas13技术,揭示了大量非编码RNA在人类细胞中具有重要功能,而非“垃圾”。

背景与问题: 人类基因组中仅约2%编码蛋白质,剩余98%区域的功能长期未知,曾被部分学者称为“垃圾DNA”。理解这些非编码区域的功能是人类遗传学的一个重要问题。

研究方法: 研究团队采用靶向RNA的CRISPR-Cas13技术,避免了编辑DNA可能带来的脱靶效应。他们系统地对五种不同人类细胞系(包括肾癌、白血病和乳腺癌细胞)中近6,200对长链非编码RNA(lncRNA)及其邻近的蛋白质编码基因进行了功能筛查。具体方法是通过CRISPR技术逐一敲低每个lncRNA,观察其对细胞存活、增殖的影响,以判断该lncRNA是否为细胞功能所必需。

主要发现:

  1. 功能性lncRNA的鉴定: 研究共识别出778个对细胞功能至关重要的lncRNA。其中46个是各细胞类型普遍必需的“核心”lncRNA,732个的功能具有细胞类型特异性。
  2. 与蛋白质编码基因的差异: 与必需蛋白质编码基因在不同细胞类型中往往普遍必需不同,必需lncRNA的功能表现出更强的细胞类型特异性
  3. 作用机制: 绝大多数必需lncRNA独立于邻近的蛋白质编码基因发挥作用。
  4. 生物学功能: 这些必需lncRNA能够调控与细胞增殖相关的关键通路,其缺失会阻碍细胞进程并导致细胞死亡。这凸显了它们在人类发育和癌症中的重要性。
  5. 发育与疾病关联: 许多必需lncRNA在人类早期发育阶段高表达,后期表达降低,暗示其在发育中起重要作用。在对约9,000个肿瘤样本的分析中,发现特定lncRNA在特定肿瘤类型中表达异常,且其表达水平与患者的生存率相关。

意义与展望: 这项研究不仅推进了对人类基因组功能的理解,证明了大量非编码RNA并非“垃圾”,而且揭示了CRISPR-Cas13 RNA靶向筛查技术的巨大潜力。所发现的细胞类型特异性必需lncRNA,有望成为癌症诊断的新生物标志物治疗靶点,为个性化医疗提供新方向。

15. US house prices in 1950 vs. 2024, accounting for inflation (brilliantmaps.com)

1950年与2024年美国房价对比分析

根据文章数据,对1950年和2024年美国各州房价(经通胀调整后)进行对比,发现所有州的房价涨幅均至少为通胀率的两倍。涨幅范围从俄亥俄州的107%到阿拉斯加州的675%不等。

关键数据概览

数据来源:1950年房价数据来自美国人口普查局,通胀数据来自美国劳工统计局,2024年房价数据来自Zillow。地图由Datawrapper创建。

房价变化趋势

  • 最低涨幅:俄亥俄州,房价经通胀调整后涨幅为107%(2024年中位数房价230,798美元,1950年经通胀调整后为111,523美元)。
  • 最高涨幅:阿拉斯加州,涨幅达675%(2024年中位数房价362,098美元,1950年经通胀调整后为46,696美元)。
  • 其他高涨幅州:华盛顿州(512%)、缅因州(515%)、加利福尼亚州(500%)。
  • 其他低涨幅州:西弗吉尼亚州(129%)、伊利诺伊州(130%)、密歇根州(144%)。

具体数据示例

1950年中位数房价(原始) 1950年经通胀调整房价 2024年中位数房价 超通胀的绝对涨幅 超通胀涨幅百分比
俄亥俄 8,304美元 111,523美元 230,798美元 119,275美元 107%
阿拉斯加 3,477美元 46,696美元 362,098美元 315,402美元 675%
加利福尼亚 9,564美元 128,445美元 771,057美元 642,612美元 500%
西弗吉尼亚 5,473美元 73,502美元 168,172美元 94,670美元 129%

原文提问

文章最后提问:您认为自20世纪50年代以来,房价为何会超过通胀率?

16. The Problem with Sci-Fi Body Armor (acoup.blog)

文章《科幻身体装甲的问题》探讨了科幻作品中“硬质”非动力装甲设计存在的普遍缺陷,并分析了其与历史真实装甲设计原则的背离。

核心问题:大多数科幻“硬质装甲”设计未能汲取历史上已成熟的设计经验。真实装甲随威胁演变,而科幻装甲则在视觉语言上相互模仿、自我循环,导致其功能性往往不合理。

具体缺陷分析

  1. 过度僵化,牺牲机动性:以《沙丘》和《质量效应》为例。哈克南士兵装甲看似厚重,但演员活动受限,无法进行格斗;而主角版本则通过减少防护来保障表演灵活性。这在现实中本末倒置。《质量效应》的N7装甲同样存在类似问题,其腹部甲板结构在动画中表现为不切实际的弯曲,且肩甲设计(位于上臂而非肩顶)会刺伤颈部并留下巨大防护空隙。
  2. 未针对威胁类型设计:《沙丘》和《质量效应》世界观中,由于能量护盾/动力屏障的存在,主要威胁来自冷兵器(刀剑)。因此,装甲逻辑应近似中世纪板甲,强调覆盖肩部、躯干等关键部位并保障活动度。但科幻设计却常借鉴针对火器设计的现代防弹衣元素(如悬挂式胸甲),这在近战威胁下存在致命缺陷。

真实装甲的设计原则

  • 威胁决定覆盖:冷兵器时代,打击源于肩部,躯干和肩部最易受致命攻击,故需全面覆盖且最厚。火器时代,子弹弹道平直,威胁集中于身体正面,优先防护中心胸腹,肩部防护可妥协。
  • 结构保障活动:真实板甲通过铰接甲条实现灵活性。刚性胸甲覆盖肋骨区域,下方的腰甲 由可伸缩的甲条构成,允许弯腰;肩甲 则由铰接甲片组成,在保护肩顶的同时允许手臂上举。这种结构平衡了防护与机动。

科幻设计缺陷的原因

  • 视觉语言的自我引用:设计师更倾向于模仿其他虚构作品,而非参考历史实物。
  • 材料限制:影视服装常用塑料、泡沫等轻质材料,难以制作精细的活动连接件,导致结构简化或变得臃肿。
  • 游戏模仿影视:电子游戏中的装甲设计常直接模仿影视,继承了其不合理性,尽管游戏在技术上无材料限制。
  • 审美排斥:设计师认为铰接式甲条等结构显得“中世纪”,不够未来感,尽管这是人体工程学的最优解。

结论:文章指出,尽管存在材料与审美挑战,但通过研究博物馆资料、与复原爱好者交流,当代设计师完全有能力创造出既符合人体工程学、又具备未来感的合理装甲设计。问题核心在于设计思维是否愿意从历史中汲取经验,而非盲目遵循虚构作品的视觉惯例。

17. Brits are scrolling away from X and aren't that interested in AI (www.theregister.com)

这个HTML页面是一个人类验证系统,用于确认用户是人类而非自动化程序。其结构包括标准HTML文档元素,如meta标签(定义字符集和视口)、JavaScript脚本和CSS样式。关键功能是通过异步函数solved处理验证挑战,该函数在用户完成挑战后向服务器发送请求,并在验证成功后重新加载页面。CSS采用响应式设计,确保验证组件在不同屏幕尺寸下正确显示。整个页面专注于技术实现,不涉及文章标题提及的英国用户对X平台或AI兴趣的主题。

18. Ask HN: Platform for senior devs to learn other programming languages?
19. Chinese pebble-bed nuclear reactor passes "meltdown" test (www.ans.org)

中国石岛湾核电站的新型测试证实了其具备自然冷却的能力,研究人员称这是实现商业规模固有安全性的行业首个里程碑。

20. Making Screenshots of Test Equipment Old and New (tomverbeure.github.io)

这篇文章详细介绍了作者如何从各种新旧测试设备中捕获屏幕截图,主要针对示波器、频谱分析仪和矢量网络分析仪等设备。

主要截图方法与接口 文章列举了从测试设备传输截图到PC的多种常见方式,包括:

  • USB闪存盘:现代设备常用,最为便捷。
  • USB线缆:需设置驱动权限和特定命令脚本。
  • 以太网:需配置网络,适用于较现代设备。
  • RS-232串口:可靠但速度慢。
  • 软盘:作者旧设备的软驱已损坏无法写入。
  • GPIB:需要昂贵的接口适配器,在Linux下配置复杂,作者仅成功用于部分设备。
  • 并行打印机端口:在许多旧设备上可用,是作者最常用的接口,需借助自行开发的“Fake Parallel Printer”工具捕获输出。

关键软件工具 作者在Ubuntu Linux环境下使用以下工具进行数据捕获和格式转换:

  • ImageMagick:用于图像格式转换和裁剪。
  • GhostPCL:用于解码PCL格式文件(常见于HP打印机输出)。
  • hp2xx:用于将HPGL绘图仪格式文件转换为位图。
  • Inkscape:用于将封装的PostScript (EPS) 文件转换为位图。
  • PyVISA:用于与测试设备通过GPIB或USB进行通信。
  • HP 8753 Companion:专用于HP 8753C矢量网络分析仪的数据捕获和交互软件。

各设备具体截图流程

  1. TDS 540 示波器 (GPIB接口,输出PCL格式)

    • 通过GPIB捕获数据,使用“仅讲模式”的Python脚本 (gpib_talk_to_file.py)。
    • 选择75x75 DPI的Thinkjet PCL输出格式。
    • 使用gpcl6将PCL转换为PNG,再用ImageMagick裁剪去除边距,得到640x480像素的截图。
  2. HP 54542A 示波器 (并行端口,输出PCL或HPGL格式)

    • 作者未能成功使用GPIB,转而使用“Fake Parallel Printer”工具通过并行端口捕获。
    • PCL方案:选择DeskJet75dpi输出,使用gpcl6和ImageMagick处理。
    • HPGL方案:选择Plotter输出以获得彩色截图,使用hp2xx工具转换。
  3. HP Infinium 54825A 示波器 (并行端口,输出EPS格式)

    • 使用“Fake Parallel Printer”捕获EPS格式数据。
    • 使用Inkscape命令行工具将EPS转换为PNG,然后用ImageMagick裁剪。
  4. TDS 684B 示波器 (并行端口,输出PCX格式)

    • 设备支持多种格式,作者推荐使用PCX格式,因其有压缩且转换速度快。
    • 使用“Fake Parallel Printer”捕获PCX文件,再用ImageMagick转换为PNG。
    • 文章比较了不同颜色设置(Normal, Bold, Hardcopy)的输出效果。
  5. Advantest R3273 频谱分析仪 (并行端口,输出PCL格式)

    • 使用“Fake Parallel Printer”捕获PCL数据。
    • 转换流程较复杂:先用gpcl6生成大尺寸PNG,通过ImageMagick的点采样(point-sampling)以特定相位进行降采样,以正确处理设备按钮的4x4像素抖动图案,最后裁剪到640x480。
  6. HP 8753C 矢量网络分析仪 (GPIB接口)

    • 使用专用的HP 8753 Companion软件,通过USB-GPIB适配器连接。
    • 该软件不仅能截图,还能保存测量数据、上传校准套件等,功能强大。
    • 支持以原始绘图方式或高分辨率模式渲染截图。
  7. Siglent SDS 2304X 示波器 (USB盘、以太网或USB线)

    • 这是作者的现代示波器,无传统接口。最常用的方式是USB闪存盘来回传输。
    • 以太网:支持DHCP,但作者偶尔遇到IP获取问题。
    • USB线:需创建udev规则以获得非root访问权限。提供了使用PyVISA库通过USB-TMC协议捕获截图的Python脚本示例,脚本需根据实际设备的USB VID/PID和序列号进行修改。

总结 文章的核心是针对不同年代和型号的测试设备,提供了一套实用的截图捕获与处理方案。对于旧设备,主要依赖并行端口模拟工具捕获原始打印数据(PCL, HPGL, EPS, PCX等),并借助一系列命令行工具转换为标准图像格式。对于现代设备,则利用USB、网络等现代接口。整个过程充分利用了Linux下的开源工具链,是解决老旧测试设备数据导出问题的一份详尽参考。

21. Simple Sabotage for the 21st Century – Specific Suggestions (specificsuggestions.com)

21世纪简单破坏:具体建议

核心主张

当今的压迫与暴力系统已数字化,战争通过计算机进行,气候虚假信息通过网络会议策划,拒绝医疗的决定被编码进软件。对抗不公最有力的工具已在普通人手中。一系列微小、日常、低风险的行动,能持续对压迫性系统造成实质性拖累,为更公正、可持续的系统创造替代机会。

“简单破坏”的定义与原则

简单破坏超越恶意捣乱,其结果应有害于压迫性工具和系统。它具备以下特征:

  • 低门槛:无需特殊工具或装备,由普通人利用其职业中常见的材料和日常物品(如会议室、电子邮件、普通软件)执行。
  • 低风险:旨在最大限度降低受伤、被发现和报复的风险,依赖的是日常与平凡。
  • 间接性:可通过制造“错误决策”(如将代码提交至错误仓库、邮件抄送错误人员)等高度间接的方式造成物理破坏或严重延误,利用的是工作环境中普遍存在的“人为失误”空间。
  • 创造性:鼓励从不同视角看待周围环境,发现破坏机会(例如拔掉一个WiFi接入点可能使整个工作区瘫痪)。
  • 有目标性:应仅针对已知用于执行压迫或注定用于有害系统的对象与材料(如几乎所有监控技术),应优先针对直接恶意的过程(如驱逐、生态破坏、制造反人员武器)。
  • 底线:绝不旨在阻碍援助或破坏辅助性技术及健康服务分配。

执行建议与注意事项

  • 具体行动示例:拔掉路由器、提交有缺陷的代码、更改文件扩展名、假装无知、隐藏关键技术与物资、在共享白板笔上不盖笔帽,乃至支持无利可图的商业目标。
  • 环境考量:当代工作环境普遍存在高度监控。在使用雇主提供的数字设备(电脑、智能手机)或安装了雇主软件的个人设备上,以及公共设备(如图书馆设备)上操作时,必须假定所有行为均受监控。
  • 能力建设:不应尝试超出个人或其工具能力范围的行动(例如,新手不应尝试部署恶意软件或伪造法律文件)。
  • 信息共享:相关材料与建议应广泛传播,不应依赖于单一个体,以增强抗打击韧性。

动机与哲学基础

文章通过引述多位思想家与活动家的名言,为行动者提供精神动力:

  • 马里奥·萨维奥:当机器的运作变得令人深恶痛绝时,一千人坐下来阻止,就能让任何机器停止。
  • 埃利·威塞尔:我们必须选择立场,中立帮助压迫者,沉默鼓励施虐者。
  • 马丁·路德·金:非暴力是强大而正义的武器。
  • 多萝西·戴:我们的问题源于对这个肮脏腐朽体制的接受。
  • 阿兰达蒂·洛伊:战争只有在士兵拒绝战斗、工人拒绝装载武器、人们抵制帝国经济前哨时才会停止。

核心精神是:利用已有的自由与权力去解放和赋权他人,勿因力量微小而无所作为,任何机会都需主动创造。自由、公正、平等是我们的目标。

公共性质

本作品及所有具体建议与源代码均已置于公共领域,首次发布于2024年11月28日,并鼓励公众自行修订与再发布。相关交互式建议表可查阅原网页。更传统环境下的破坏策略可参考美国战略情报局出版的《简单破坏战地手册》。

22. Accessing a DRM Framebuffer to display an image (embear.ch)

本文介绍了在基于DRM(Direct Rendering Manager)接口的现代Linux图形驱动上如何显示图像,以解决传统帧缓冲设备在新驱动上不可用的问题。

背景与挑战
在嵌入式设备开发中,常使用 dd if=/dev/urandom of=/dev/fb0 命令快速测试显示功能。但该方法依赖传统的帧缓冲设备驱动,而iMX6等设备的上游驱动采用DRM接口,不再提供帧缓冲字符设备,因此需要手动配置完整的显示管线。

DRM显示管线概述
DRM显示包含三个核心阶段:

  1. CRTC:接收帧缓冲区和图层(如主图层、光标图层)数据,输出合成后的图像。
  2. 编码器:将内存数据转换为显示信号(如DVI、LVDS)。
  3. 连接器:检测显示设备连接状态及支持的分辨率(如通过EDID),也可能是无信号反馈的虚拟连接器。

drm-framebuffer应用实现
为简化测试,文章开发了一个简单应用drm-framebuffer,模拟dd命令的功能,用法示例:

dd if=/dev/urandom | drm-framebuffer -d <dri设备> -c <连接器>

关键步骤包括:

  1. 获取帧缓冲区:打开/dev/dri/cardX设备,获取DRM资源,通过连接器名称定位目标连接器,读取首选分辨率。
  2. 创建哑帧缓冲区:使用DRM_IOCTL_MODE_CREATE_DUMB创建可CPU访问的帧缓冲区(32位像素,24位色深,BGR格式),并通过drmModeAddFB注册到DRM。
  3. 内存映射:通过DRM_IOCTL_MODE_MAP_DUMBmmap将帧缓冲区映射到用户空间,以便直接写入像素数据。
  4. 写入与显示:从标准输入读取数据填充缓冲区,随后调用drmModeSetCrtc将缓冲区绑定到CRTC以输出图像。应用在操作前后会分别获取和释放DRM主控权,以便其他进程(如窗口管理器)访问。

使用示例与注意事项

  • 使用前需确保无窗口管理器(如X11、Weston)占用DRM主控权,可通过切换到虚拟控制台(如Ctrl+Alt+F2)实现。
  • 示例命令使用ImageMagick处理图像并输出到指定连接器:
    convert -resize 720x image.png | convert -extent 1920x1080 -gravity Center - bgra:- | drm-framebuffer -d /dev/dri/card1 -c HDMI-A-1
    
  • 该应用适用于设备早期调试阶段,验证显示接口是否工作。正常开发中应使用Qt、GTK等框架间接操作DRM。

总结
本文通过一个轻量级应用展示了如何直接使用DRM接口显示图像,为现代Linux图形驱动提供了类似传统帧缓冲设备的测试方法,有助于嵌入式设备显示功能的快速验证。

23. Make the most of your burl (www.cindydrozda.com)

摘要

本文介绍了一个由Cindy Drozda制作的视频演示,标题为《Make the most of your burl》,专注于如何充分利用树瘤(burl)。该视频于2024年11月16日现场录制,属于现场教学性质。内容受版权保护,所有权利归Cindy Drozda所有,未经许可不得使用或复制。作者通过此内容邀请观众保持联系,以便及时获取未来的演示信息,体现了互动和推广元素。

26. Square Roots and Maxima (leancrew.com)

这篇文章探讨了概率论中一个有趣的关系:两个独立均匀分布随机变量的最大值的累积分布函数(CDF),与另一个均匀分布随机变量平方根的CDF相同,均为 (x^2)。

作者通过数值模拟验证了这一理论结论。主要步骤如下:

  1. 生成指定数量(如 n=20, 100, 10000)的均匀分布随机数。
  2. 分别计算这些随机数两两取最大值以及单个取平方根后的序列。
  3. 对结果进行排序,通过计算每个值的秩除以总样本数 n,来估计经验CDF。
  4. 将绘制的经验CDF阶梯曲线与理论CDF曲线 (y=x^2) 进行对比。

结果表明,随着样本量增加,两种变换得到的样本CDF都收敛于理论CDF,从而直观地证实了 Grant Sanderson 视频中的结论。

文章后半部分重点展示了用于生成该对比图的 Python 代码。代码使用 NumPy 生成随机数并进行计算,使用 Matplotlib 的 step 函数绘制阶梯状CDF图。关键点包括:

  • 使用 np.random.default_rng 并设置种子以确保结果可重现。
  • 通过数组拼接(concatenate)在排序后的数据序列前后添加 0 和 1,以完善CDF的起止点。
  • step 函数的 where='post' 参数确保阶梯在数据点之后跳跃,符合CDF定义。
  • 使用 ColorBrewer 推荐的配色方案以提高图表可读性。

作者总结认为,虽然数值模拟不能替代严格证明,但它是一种快速、直观验证数学结论的有效工具,尤其是在计算力丰富的今天。

27. Move semantics in Rust, C++, and Hylo (lukas-prokop.at)

本文通过一个Person结构体的传递示例,对比了C++、Rust和Hylo三种语言在处理值传递、移动语义和借用方面的核心差异,并探讨了相关语言设计的演进。

核心示例对比

作者定义了一个简单的Person结构体,将其传递给一个show函数,并观察传递后原始值是否能被使用。三种语言给出了不同答案:

  • C++:默认行为是按值传递,会创建一个副本。原始值p在传递后仍可使用。
  • Rust:默认行为是移动,所有权转移给函数。原始值p在传递后失效,不能再使用。
  • Hylo:通过参数修饰符(如let明确指定传递语义。在let修饰下,函数接收的是不可变借用,原始值在其生命周期结束前(例如最后一次使用)仍可访问。

进阶用法与关键特性

文章进一步探讨了各语言中避免拷贝或实现安全共享的机制:

  • C++ std::move:旨在“移动”而非拷贝对象,但其语义复杂,容易误用(如示例中移动后对象状态不确定),且可能产生未定义行为。
  • Rust:提供显式克隆(clone 来创建副本,或通过借用(& 实现安全共享访问。借用由借用检查器确保安全。
  • Hylo:提供更细粒度的参数修饰符来区分传递意图。例如sink修饰符表示函数将“消费”该值,调用后原值不可再用(类似Rust的移动),与let(不可变借用)形成明确对比。要实现共享访问,同样需要显式复制(copy)。

语言设计演进与观点

作者认为,从C到C++,再到Rust和Hylo,体现了对值属性(如可变性、初始化状态、生命周期)管理的不断精细化:

  1. 早期(如C):简单区分按值拷贝或传递指针。
  2. C++阶段:引入引用以提升易用性,但将拷贝与引用的决策混为一谈,且std::move的语义并不直观。
  3. 现代语言(Rust与Hylo):追求更显式和安全的设计。Rust通过移动语义和借用检查器解决了最核心的内存安全问题。Hylo则走得更远,尝试通过调用约定let, set, sink, inout等)来编码更多值的属性,从而在语法层面提供更清晰的意图表达。

结论

文章总结指出,Hylo语言尽管处于早期阶段,但其设计理念——将更多值的属性(如可复制性、传递意图)通过类型系统或调用约定显式化——是有价值的探索。它为理解编程语言如何平衡安全性、表达力和易用性提供了新的视角。