2026-03-29

11 篇热帖

Founder of GitLab battles cancer by founding companies

骨癌治疗的个人探索与规模化尝试:总结

本文描述了Sytse(吉坦·德·博尔)在面对T5椎体上骨癌(骨肉瘤)时的个人经历,以及他为探索新的治疗方法和规模化该方法所做的努力。由于标准治疗方案失效且临床试验不可用,Sytse采取了积极主动的策略。

核心内容:

总结: Sytse通过积极主动的治疗探索、公开数据共享和规模化尝试,力图改善骨癌患者的治疗选择和医疗体系。 他的经历强调了患者在医疗决策中的作用,以及数据共享和创新在推动医学进步中的重要性。

CSS is DOOMed

DOOM 在 CSS 中:突破浏览器极限的实验

本文讲述了作者使用 CSS 构建 DOOM 游戏的经历,旨在探索现代浏览器 CSS 功能的极限。作者将游戏中的墙壁、地板、炮弹和恶魔等元素都转化为 <div> 元素,利用 CSS 变换实现 3D 空间定位,JavaScript 负责游戏逻辑,而渲染完全由 CSS 完成。

核心思路与技术:

  • 数据提取: 从原始 DOOM WAD 文件中提取地图数据(顶点、线段、扇形、区域),作为 CSS 渲染的基础。
  • CSS 渲染: 使用大量 <div> 元素,通过自定义属性(--start-x, --start-y 等)传递原始 DOOM 坐标,并利用 CSS 函数 hypot()atan2() 进行三角函数计算,实现 3D 几何变换。
  • JavaScript 辅助: JavaScript 负责游戏循环,并作为渲染器的薄层,设置自定义属性、类和创建 HTML 元素。
  • 坐标系统转换: DOOM 使用顶视 2D 坐标系,而 CSS 3D 使用 Y 向上、Z 朝向观察者的坐标系。作者巧妙地利用负 Z 坐标实现坐标转换。
  • 世界移动而非相机移动: 由于 CSS 不支持相机,作者采用“移动世界”的技巧,即以玩家为中心,移动整个场景。
  • 地板渲染: 使用 rotateX(90deg) 将垂直的 <div> 旋转为水平的地面。对于不规则扇形,使用 clip-path 裁剪。
  • 纹理对齐: 使用世界坐标作为 background-position 偏移量,确保相邻扇形之间的纹理无缝对齐。
  • 动画与状态: 使用 CSS 过渡实现门和升降机的动画效果,通过设置 data-state 属性来切换游戏状态。利用 @property 定义自定义属性,实现平滑过渡。
  • 精灵动画: 使用 CSS steps() 函数实现精灵动画,通过 JavaScript 设置精灵的 data-state 属性来切换不同的动画帧。
  • 投射物和爆炸: 利用 CSS 动画实现投射物的运动,并使用 SVG 滤镜模拟爆炸效果。
  • 光照: 使用 filter: brightness() 调整亮度实现光照效果,并使用关键帧动画模拟闪烁效果。
  • 遮蔽: 采用 JavaScript 辅助的纯 CSS 遮蔽技术,隐藏视线范围外的元素。
  • 深度排序: 依赖浏览器自动处理深度排序,避免重叠问题。
  • HUD: 使用锚定定位,使 HUD 元素在不同屏幕尺寸下自动适应。

总结:

该项目展示了现代 CSS 的强大功能,以及其在游戏渲染方面的潜力。虽然性能仍然有限,但作者通过巧妙的技巧和对 CSS 特性的深入利用,成功地在浏览器中实现了 DOOM 的 3D 渲染。该项目不仅是一项技术实验,也为 CSS 的未来发展提供了新的思路和可能性。作者将项目代码发布在 GitHub 上,供其他开发者学习和参考。

Linux is an interpreter

总结:递归的 Linux 内核与自指程序

这篇文章延续了之前关于使用 curl 将内容写入 /dev/sda 的系列文章,揭示了一个神秘的命令:curl https://astrid.tech/rkx.gz | gunzip | sudo sh 的工作原理。

rkx.gz 的内容分析

该命令执行一个压缩后的 shell 脚本 rkx.gz,解压后发现它是一个 20MB 的 shell 脚本,其主要功能是:

  1. 检查用户是否以 root 身份运行。
  2. 检查是否安装了 kexecbase64cpio 工具。
  3. 将 20MB 的 base64 编码字符串解码,并保存为 r 文件。
  4. 使用 cpior 文件解压,提取出一个名为 k 的文件。
  5. 使用 kexec 加载 k 作为内核,r 作为 ramdisk,并执行。

rkx.gz 的本质

rkx.gz 实际上是一个 Linux 发行版,它通过 kexec 递归地替换当前内核,并启动一个新的内核和 ramdisk。 这种递归调用 kexec 的方式类似于一种尾调用优化,避免了传统递归可能导致的栈溢出问题。

内核与解释器

文章进一步探讨了内核的作用,指出内核可以被视为解释器,负责解释 initrd(初始化 ramdisk)中的指令。 类似地,ld.so 负责解释 ELF 文件,而最终,Linux 内核负责解释 ld.so

Quine 的概念

文章介绍了 Quine 的概念,即能够输出自身源代码的程序。作者进一步指出,通过修改 initrd 的 /init 脚本,可以创建一个 Linux initrd Quine,它会输出自身的内容。

binfmt 机制

文章介绍了 binfmt_misc 机制,允许 Linux 系统将特定文件类型(如 cpio 文件)与特定的解释器(如 QEMU 虚拟机)关联起来。 利用 binfmt 机制,可以执行 cpio 文件,并将其作为 initrd 加载到 QEMU 虚拟机中。

递归的终点

文章最后指出,通过使用 binfmt 机制,可以创建一个无限递归的系统,其中内核的解释器是下一个内核,而下一个内核的解释器则是当前的计算机本身。

总结

这篇文章揭示了一个巧妙的 Linux 系统设计,通过递归地替换内核和使用 binfmt 机制,创造了一个独特的、自指的系统。文章也探讨了内核和解释器之间的关系,以及 Quine 的概念,为读者提供了一个对 Linux 系统底层机制的深刻理解。

Further human + AI + proof assistant work on Knuth's "Claude Cycles" problem

总结:关于x.com的隐私扩展问题

这段内容指出,在使用x.com(推特)时可能会遇到问题。原因可能是某些隐私相关的浏览器扩展程序导致了冲突。 建议用户禁用这些扩展程序后再次尝试。

核心要点:

  • 问题: 使用x.com时可能出现问题。
  • 原因: 某些隐私扩展程序可能造成冲突。
  • 解决方案: 禁用相关扩展程序后重新尝试。

关键词: x.com, 隐私扩展, 问题, 禁用, 尝试

Alzheimer's disease mortality among taxi and ambulance drivers (2024)

摘要:出租车和救护车司机死亡于阿尔茨海默病的一项基于人口的横断面研究

研究背景: 阿尔茨海默病死亡率呈上升趋势,而有效的治疗和预防策略仍不明确。伦敦出租车司机在海马体中观察到功能变化,这表明需要频繁进行空间和导航处理的职业可能与阿尔茨海默病死亡率降低有关。

研究目的: 分析出租车司机和救护车司机死亡于阿尔茨海默病的情况,与其它职业进行比较。

研究设计: 一项基于人口的横断面研究,利用美国国家生命统计系统提供的死亡证明数据,将职业信息与死亡原因进行关联。研究时间为2020年1月1日至2022年12月31日。

研究对象: 18岁及以上所有已故成年人。

主要结局指标: 在研究的443种职业中,出租车司机和救护车司机的阿尔茨海默病死亡率,并对年龄、社会人口因素进行调整。

主要结果: 8,972,221名有职业信息的死者中,3.88% (348,328人) 的死亡原因是阿尔茨海默病。出租车司机中,1.03% (171/16,658人) 死亡于阿尔茨海默病,救护车司机中,率为0.74% (10/1348人)。在进行调整后,救护车司机 (0.91%; 95%置信区间 0.35% to 1.48%) 和出租车司机 (1.03%; 0.87% to 1.18%) 的阿尔茨海默病死亡率最低。其他依赖于实时空间和导航处理较少的交通相关工作,以及其他类型痴呆症中未观察到这种趋势。无论阿尔茨海默病被记录为主要或次要死亡原因,结果均一致。

结论: 涉及频繁导航和空间处理的出租车司机和救护车司机,其阿尔茨海默病死亡率最低。

研究意义: 该研究表明,频繁进行空间认知工作可能与降低阿尔茨海默病死亡率有关,为进一步研究职业和阿尔茨海默病死亡率之间的联系提供了新的线索。虽然本研究不能证明因果关系,但结果提示有必要进一步研究这些职业可能对海马体的作用机制。

研究局限性: 研究存在选择性偏差的可能性,即高风险人群可能更少从事需要记忆力的驾驶职业。此外,死亡证明可能低估了阿尔茨海默病的发病率,且职业数据的准确性也存在问题。

关键词: 阿尔茨海默病,死亡率,职业,导航,空间处理,海马体。

The first 40 months of the AI era

关于AI的思考:从ChatGPT发布至今 (2026年初)

这篇文章记录了作者自2022年11月ChatGPT发布以来对AI的思考和体验。以下是文章的主要观点:

1. ChatGPT的早期印象 (40个月回顾):

  • ChatGPT的发布给作者留下了深刻的印象,远超之前的聊天机器人,如Cleverbot。
  • 作者尝试使用ChatGPT进行内容创作,包括诗歌、D&D背景故事和奇幻世界构建,但发现其风格较为平淡、缺乏个性。
  • 作者发现ChatGPT能够生成简单的代码片段,甚至可以替代在Stack Overflow等论坛搜索解决方案,提高了效率。

2. Claude Code的体验:

  • 作者购买了Claude Pro订阅,并体验了Claude Code。其自然语言交互方式令人惊艳,感觉像是一种全新的电脑控制方式。
  • 作者尝试使用Claude Code开发MTG卡片生成App,但最终还是主要依靠自身代码完成,对AI代码的实际效用表示怀疑。
  • Claude Code在迭代式开发中表现出良好的连贯性和上下文理解能力,能够发现作者未注意到的错误。

3. AI在创业中的应用:

  • 作者尝试利用Claude作为“行政助理”和“导师”来制定并跟踪创业计划,虽然内容看似简单,但过程具有启发性,并最终促使作者启动了小型IT服务公司。
  • 作者提到“glazing”效应,即AI可能导致拖延,但同时也承认它在一定程度上推动了行动。

4. AI的实用性评估:

  • 作者认为AI确实提高了生产力,但具体提升程度难以衡量。
  • 作者质疑AI在项目构建过程中可能带来的范围蔓延,以及是否过度添加了“锦上添花”的功能。
  • 作者目前保留Claude Pro订阅,但考虑到速率限制和本地LLM的性能提升,可能会在年底取消订阅。

5. AI生成内容的创作与消费:

  • 作者坚决不使用AI生成的文本直接用于网站内容创作,认为AI生成的文字缺乏个人风格,与博客的定位不符。
  • 作为读者,作者对AI生成的内容感到反感,认为其接近“恐怖谷”效应,缺乏真实感,容易让人产生不适感。
  • 作者认为AI在游戏开发等领域仍有潜力,或许通过精细的运用和专家级的操作,可以产生高质量的内容。

总结:

作者对AI技术持谨慎乐观态度,肯定了其在某些方面的实用性,但也对其局限性和潜在问题表示担忧。他对AI生成内容的质量表示怀疑,并坚持个人创作的重要性。文章也提出了对AI在未来应用场景的思考和展望。

Private equity turned vulnerable elderly people into human ATMs

四季度手老龄护理行业:私营股权、债务和危机 (Four Seasons and the Care Home Industry: Private Equity, Debt and Crisis)

本文讲述了罗伯特·基尔古尔 (Robert Kilgour) 先生的故事,他于 1989 年创立了 Four Seasons Health Care,并逐步将这家公司发展成为英国最大的养老院运营商之一。文章也探讨了私营股权基金如何进入养老院行业,以及这种进入所带来的后果。

基尔古尔的创业故事:

1987 年,基尔古尔计划将苏格兰的 Station Court 翻新为公寓,但政府取消了开发商补贴,使他陷入困境。他随后将 Station Court 改建为养老院,于 1989 年创立了 Four Seasons Health Care。 随后,政府将社会护理责任转移给地方议会,为基尔古尔及其它商人提供了机会,养老院需求激增。基尔古尔在 Fife 地区开设了多家养老院,并积极参与政治活动。

Four Seasons 的扩张与私营股权的介入:

为了扩大业务,基尔古尔与会计师 Hamilton Anstead 合作,共同担任 Four Seasons 的联合首席执行官。在短短两年内,Four Seasons 发展到 43 家养老院。1999 年,基尔古尔和 Anstead 决定出售公司,并与私募股权公司 Alchemy Partners 达成协议。然而,在交易完成不久后,基尔古尔被要求离职。

私营股权基金的策略:杠杆收购 (Leveraged Buyout):

文章解释了私营股权基金常用的杠杆收购策略:使用少量自有资金购买公司,其余资金通过贷款,并将债务转嫁到被收购公司。如果投资成功,基金可以出售公司并获利;如果失败,则被收购公司承担债务。由于英国和美国人口老龄化,养老院市场被认为是“抗衰退”的投资,吸引了大量私营股权基金的关注。

“销售与租赁回购” (Sale and Leaseback) 模式:

私营股权基金通过将养老院拆分为运营公司 (opco) 和物业公司 (propco) 来快速获取现金,再将物业公司出售给其他人。虽然这种模式理论上可以有效融资,但实际上往往存在问题,养老院失去自有的房产,如同家庭卖掉了自己的房子,租金上涨会影响养老院运营成本。

Four Seasons 的衰落:

在 Alchemy Partners 的所有权下,Four Seasons 逐渐陷入困境。2004 年被德国保险公司 Allianz Capital Partners 收购,2006 年又被卡塔尔私募股权基金收购。2008 年金融危机爆发后,Four Seasons 的债务飙升至 15.6 亿英镑,最终进入清算程序。

Guy Hands 和 Terra Firma 的介入:

2012 年,Terra Firma 基金在 Guy Hands 的领导下收购了 Four Seasons。 Hands 试图将 Four Seasons 打造为“护理行业的 IBM”,提供可靠的服务,但政府削减了对养老院的资金支持,导致 Terra Firma 的计划破产。

养老院的困境:成本削减与人员短缺:

文章引用了 Compassion in Care 慈善机构创始人 Eileen Chubb 的调查,揭示了私营股权基金对养老院进行成本削减,导致员工工作量增加,服务质量下降。研究表明,被私营股权基金收购的养老院,居民死亡率更高,压力性溃疡和疼痛的发生率也更高。

疫情带来的冲击:

新冠疫情暴露了英国养老院行业的脆弱性,养老院面临人员短缺、资源不足等问题。政府虽然追加了资金,但大型、由私营股权基金控制的养老院员工的工资和福利仍然受到影响。

结论:

文章最终指出,私营股权基金对养老院行业的介入,虽然带来了短期利益,但长期来看,导致了养老院服务质量下降、人员短缺和财务困境。基尔古尔最终选择退出 Four Seasons,并决心创办一家不同类型的养老院,但养老院行业面临的挑战依然严峻。

Overestimation of microplastics potentially caused by scientists' gloves

密尔沃基大学研究:手套残留物可能导致微塑料检测结果高估

密歇根大学的一项研究表明,科学家在测量空气、水等环境中微塑料时,使用腈纶或乳胶手套可能会导致结果高估。这种高估是由于手套残留的硬脂酸盐(stearates)造成的。

主要发现:

  • 硬脂酸盐的干扰: 研究发现,为了便于从模具中取下,制造商通常会在一次性手套上涂抹硬脂酸盐。这些硬脂酸盐在结构和外观上都与某些类型的微塑料非常相似,导致在检测过程中产生误判。
  • 潜在的系统性误差: 研究人员认为,使用普通腈纶或乳胶手套可能会造成实验室设备被硬脂酸盐污染,从而导致微塑料污染数据的过高估计。
  • 清洁室手套的替代方案: 研究人员建议使用清洁室手套,因为它们不含硬脂酸盐涂层,能减少颗粒释放。
  • 误判数量: 实验表明,手套平均每平方毫米区域会产生约2000个虚假阳性结果。
  • 视觉区分困难: 通过扫描电子显微镜和光学显微镜观察,硬脂酸盐与塑料聚乙烯的视觉区分非常困难。
  • 数据修正的可能性: 与统计学教授 Ambuj Tewari 合作,研究人员开发了区分手套来源的虚假阳性结果和环境微塑料的方法,为重新分析受污染数据集提供了希望。

研究过程:

  • 最初,在测量密歇根州大气中的微塑料时,Clough 发现捕获的微塑料数量远超预期,引发了对污染源的调查。
  • 研究人员测试了七种不同类型的手套,模拟了研究人员手套与滤纸或载玻片等接触的场景。
  • 他们还比较了不同类型手套释放颗粒的数量,发现清洁室手套释放的颗粒最少。

研究意义:

  • 该研究强调了化学家在微塑料研究领域的重要性,他们能够识别塑料和其他污染物之间的化学结构差异。
  • 尽管硬脂酸盐的存在可能导致检测结果高估,但研究人员强调,环境中的微塑料污染仍然是一个严重的问题。
  • 研究成果发表在《皇家化学学会分析方法》期刊上,并得到了密歇根大学文学、科学和艺术学院“应对挑战”研究倡议的资助。

总而言之,这项研究揭示了微塑料研究中一个潜在的盲点,并为科学家提供了改进检测方法和重新评估现有数据的建议。

Android’s new sideload settings will carry over to new devices

Android 应用安装限制更新总结

以下是关于 Android 应用安装限制更新的关键信息:

背景:

Google 正在采取措施,旨在减少用户从未经认证的开发者处安装应用程序的情况,以防止恶意软件传播。 这项改动不会影响从 Google Play 商店安装应用,而是针对手动安装 APK 文件 (即“侧载”) 的过程。

主要变化:

  • 24 小时等待期: 从 8 月份开始,安装来自未参与 Google 开发者注册的开发者的应用程序时,将出现强制性的 24 小时等待期。
  • 绕过选项: 用户可以在最初的 24 小时后选择永久允许安装来自未经认证的开发者应用。
  • ADB 命令不受影响: 使用 Android 调试桥 (ADB) 命令安装应用将不受此等待期限制。
  • 设备间携带: 最新的消息是,用户在一种设备上完成的绕过设置(允许安装未经认证的应用)可以转移到新的设备上。这意味着用户只需要在第一台设备上设置一次,后续设备将不再需要等待 24 小时。

总结:

Google 的新规则旨在提高 Android 应用安装的安全性,但同时也考虑到高级用户的需求。通过允许 ADB 命令绕过等待期,以及将绕过设置转移到新设备的能力,Google 试图减轻对用户体验的影响。 预计这些变化将于 8 月份开始陆续推出。

OpenCiv1 – open-source rewrite of Civ1

OpenCiv1 项目摘要 (OpenCiv1 Project Summary)

OpenCiv1 是一个开源项目,旨在重写 1991 年由 Sid Meier 和 Bruce Shelley 设计的经典游戏《文明 1》。

版权注意事项 (Copyright Considerations):

  • 重要: 该项目代码并非游戏完整可运行版本。为了合法运行 OpenCiv1,用户必须拥有正版 DOS 《文明 1》游戏。因此,原游戏的文件(.txt、.pic、.pal 等)未包含在 GitHub 仓库中,因为它们受版权保护。
  • 游戏的部分汇编代码被虚拟 CPU 模拟,其余代码已完全用新的、无版权的代码重写。最终发布时,所有资源(如图形、音乐和文本)也将被替换为无版权资源。

当前状态 (Current Status):

游戏已达到可运行状态,但需要用户拥有正版《文明 1》游戏。

贡献方式 (How to Contribute):

欢迎社区成员参与贡献,具体指南请参考 Contributing guidelines。贡献方式包括:

  • 测试游戏功能并提交问题 (Issues)。
  • 将伪汇编代码翻译成 C# 代码。
  • 设计默认和自定义的视觉和音频主题 (推荐使用 SVG 和 MIDI/SoundFonts)。

常见问题解答 (Frequently Asked Questions):

  • 为什么使用 C# 而不是 C 和 x86 汇编? C# 具有跨平台、安全、灵活、受管理、流行和 API 丰富的特点。
  • OpenCiv1 与原版游戏有哪些不同? 主要原因包括:避免 DOSBox 模拟以实现原生运行、避免版权侵犯、提供无版权代码、图形和音频、增加新功能(如在线游戏、高清图形、高清音频、插件等)、以及提升游戏的平台独立性和易用性。
  • OpenCiv1 的源代码会与原版《文明 1》源代码相同吗? 不会。 OpenCiv1 的源代码不包含任何原版《文明 1》源代码,而是完全不同的代码,并使用 MIT 许可证。
  • OpenCiv1 会像 FreeCiv 一样与原版游戏大相径庭吗? 不会。目标是尽可能保留原版游戏的所有规则和功能,以及视觉和音频外观。
  • 《文明 7》即将发布,第一代游戏是否会过时? 许多人认为第一代《文明》仍然非常有趣。
  • 是否有额外的键盘快捷键? 除了默认快捷键外,还有:
    • Alt + D - 启用/禁用调试模式。
    • Alt + P - 暂停/继续游戏。
    • Alt + 1 - 显示/隐藏屏幕 1。
    • Alt + 2 - 显示/隐藏屏幕 2。
    • Alt + 3 - 显示/隐藏屏幕 3。
    • 使用 Shift + 导航键 (上、下、左、右、Home、End、PageUp 和 PageDown) 代替 Shift + 键盘上的数字键进行地图滚动。

依赖 (Dependencies):

  • .NET Core 8
  • Visual C++ 2015-2019 可再发行组件 (在某些 Windows 机器上)

运行方式 (How to Run):

将 Release 中的文件复制到安装的 DOS 《文明 1》游戏目录中,然后运行 OpenCiv1 可执行文件即可。

编译方式 (How to Compile):

使用 Visual Studio 2022 Community Edition 进行调试或编译,或者使用命令行方法:

  • git clone <https://github.com/rajko-horvat/OpenCiv1>
  • cd OpenCiv1
  • dotnet build -c Debug

项目里程碑 (Project Milestones):

项目分为两个阶段:完全重写代码 (第一阶段) 和修复错误、移植代码到现代平台 (第二阶段)。

  • 第一阶段里程碑:
    • 达到游戏可玩状态 (已完成)。
    • 重写游戏代码、功能和特性 (进行中)。
    • 归档游戏代码。
  • 第二阶段计划里程碑:
    • 移植到 Razor 平台 (Web 界面、在线游戏)。
    • 高清图形和音频。
    • 适当的文本本地化。
    • 地图缩放功能等小更新。