本文详细介绍了使用SimH PDP-11模拟器从磁带镜像(`unix_v4.tap`)引导UNIX V4的过程。磁带包含一个文件系统归档文件(`unix_v4.tar`)和一个磁盘镜像(`disk.rk`)。初始提取将引导代码与磁盘镜像分离。 安装过程包括将RK05磁盘镜像从磁带转储到SimH中的虚拟磁盘,然后使用`uboot`从该磁盘启动。启动后,系统需要重新构建内核。这可以通过导航到`/usr/sys/run`并执行一系列`cc`和`as`命令来编译和链接必要的内核组件,从而创建一个新的内核镜像(`a.out`)。 最后,将新内核移动到`/nunix`,同步,并启动,从而获得一个可用的UNIX V4系统。未来的工作包括自动化安装、配置内核、添加设备文件和手册页,以及解决V4之前内核恢复和缓冲区处理的问题。
## Claude 代码总结:一个基于终端的使用摘要
这个项目为 Claude 代码用户创建了一种有趣且视觉上引人入胜的“年度总结”体验——类似于 Spotify 的年度总结——直接在你的终端中呈现。它是在一个疯狂的周末构建的,分析你的 `stats-cache.json` 文件(包含 token 和消息使用数据),并将其与全球其他用户进行比较。
创建者使用了一种独特的科技栈:一个编译为 WASM 的 C 光线追踪器,用于渲染 3D 圣诞老人 Claude,TypeScript 与 OpenTUI 用于前端,Bun 用于打包,以及 Cloudflare D1 用于托管聚合统计数据的 SQLite 数据库。该项目利用了 Bun 的速度和易用性,以及令人惊讶的强大 WASM 生态系统。
由于缓存统计数据的范围限制,数据目前仅限于上个月。创建者希望用户能够享受这种有趣的视觉化和比较见解。代码可在 GitHub 上获取,展示了令人惊讶的流畅 WASM 渲染体验,以及现代 Web 工具的强大功能。
## x-ray:检测有缺陷的PDF删减
x-ray是一个Python库,旨在识别PDF文档中未正确删减的文本。它由Free Law Project开发,该组织在处理大型PDF集合时经常遇到此问题。x-ray会标记仅被黑色矩形或高亮覆盖的文本实例——在选中时很容易被读取。
该工具将PDF文件路径(或URL)作为输入,并输出JSON报告,详细说明发现的任何“不良删减”,包括其位置(边界框)和暴露的文本。它可以通过命令行、Python模块,甚至直接使用URL输入来使用。
X-ray利用PyMuPDF进行PDF解析,识别矩形,定位其中的文本,并检查是否存在指示不良删减尝试的纯色填充。虽然有效,但PDF格式的复杂性意味着它并非完美无缺,欢迎任何改进其检测能力的贡献。该项目是开源的(BSD许可),并积极寻求捐赠和贡献以解决剩余的挑战。
## 跑道设计与要求:摘要
跑道对于固定翼飞机运行至关重要,其设计受飞机类型、任务需求和运行频率等因素的强烈影响。美国国防部标准(详见UFC 3-260-01)将跑道分为A类或B类,规定了长度、宽度和坡度等施工规范。虽然民用分类标准不同,侧重于翼展和进近速度,但两者都使用路面——通常是混凝土或沥青——尽管其他材料也可用于特殊用途。
关键设计要素包括跑道方向,通过分析风数据确定,以最大化有利条件,以及长度,根据飞机性能、海拔和温度计算得出。安全至关重要,延伸至跑道本身之外,设有净空区和事故潜在区,以限制损坏风险并指导兼容开发。
跑道标记和灯光——严格符合FAA标准——增强了可见性,而仪表着陆系统(ILS)等电子导航辅助设备(NAVAIDs)提供电子引导。严格的等级要求确保排水和飞机安全。最终,综合规划考虑所有这些因素对于有效的安全跑道建设至关重要。
## HTTP 缓存解释:RFC 9111 摘要
RFC 9111 定义了 HTTP 缓存(浏览器、代理、CDN)如何存储和重用响应,使用 `Cache-Control` 头部。该头部使用指令——添加到请求或响应中——来规定缓存行为。缓存通过将响应的年龄与其“新鲜度时间线”进行比较来确定响应是否“新鲜”(无需重新请求),该时间线由服务器通过 `max-age`(秒)、`Expires` 或 `s-maxage`(针对共享缓存)设置。
当响应变为“陈旧”时,缓存会尝试“验证”——向服务器发送条件请求以检查更新,如果内容未更改,则避免完全数据传输。这使用 `ETag` 或 `Last-Modified` 头部进行版本跟踪。
关键的 `Cache-Control` 指令包括:`max-age`(新鲜度时长)、`must-revalidate`(在使用陈旧内容之前需要验证)、`no-cache`(始终验证)、`no-store`(根本不缓存)、`private`(仅针对单个用户,不用于共享缓存)和 `public`(允许共享缓存)。
浏览器刷新会触发不同的缓存行为:“软”刷新尝试验证,而“硬”刷新完全绕过缓存。`immutable` 指令旨在减少重新验证,但由于重载策略不断发展,浏览器支持有限。缓存经过身份验证的请求需要小心使用 `public`、`s-maxage` 或 `must-revalidate` 指令。