Mistral Large 4 1 分钟前

本文探讨了《Entombed》在 1983 年为 Atari 2600 设计的独特迷宫生成算法。由于内存仅有 128 字节,原版游戏无法存储持续滚动的迷宫,因此会使用一个神秘的 32 项查找表,在本地逐行生成迷宫。五个相邻单元格构成一个形状不寻常的四格骨牌窗口,根据这些单元格决定下一个格子是墙壁、通道还是随机结果。生成完成后,还会进行两轮修正,修改已完成的线路,以减少重复内容和封闭区域,但该算法既不能保证生成完美的迷宫,也不能保证迷宫一定可以通关。 受这一算法启发,作者为一款受《Wolfenstein 3D》启发的光线投射游戏实现了一个基于《Entombed》的迷宫。这个改编版本将每一行表示为 32 位数值,保留所有生成的行,移除原版镜像化的游戏区域,扩大迷宫,并允许玩家和敌人破坏墙壁。项目后来采用了类似“后室”(Backrooms)的视觉风格,并使用 Three.js 重新制作,加入视觉效果和类似《暗黑破坏神》的缩略地图,以便在浏览器中游玩。

黑客新闻 最新 | 往期 | 评论 | 提问 | 展示 | 工作 | 提交 登录 Show HN:困在光线投射引擎中 (stelabouras.com) 5 分 作者:stelabouras 1 小时前 | 隐藏 | 往期 | 收藏 | 讨论 帮助 考虑申请 YC 2027 年冬季批次! 申请开放至 11 月 2 日。 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请加入 YC | 联系我们 搜索:

本文介绍了如何在 Mac OS X Leopard 或 Snow Leopard 上恢复 iChat AV 的音视频通话功能。iChat 最初依赖 Apple 已停用的 SNATMAP 服务来发现用户的公网 IP 地址和 UDP 端口,以建立点对点 RTP 通话。如今,其 HTTP 配置请求会重定向到 HTTPS,而操作系统过时的 TLS 协议栈无法处理这种重定向,导致通话双方只能交换无法使用的局域网私有地址。 作者通过数据包捕获和借助大语言模型进行的逆向工程,重新实现了 SNATMAP 协议,并将其构建为一个简单的 Python UDP 服务器。16 字节的请求包含类型、随机数、本地 IP 和本地端口;响应则返回随机数,以及服务器观察到的公网 IP 和端口。 作者在实验室中使用两台虚拟 OpenWrt 路由器和两台 Mac 进行测试,随后将该服务部署到公网,并通过 `/etc/hosts` 将 `configuration.apple.com` 映射到该服务的 IP 地址。完成用户配置并启用 NAT 源端口保留后,旧版 iChat 再次可以通过互联网正常通话,并且也能使用现代的 Logitech C920 网络摄像头。

``` 黑客新闻 最新 | 往期 | 评论 | 提问 | 展示 | 工作 | 提交 登录 重现 iChat 音视频会议功能 ( pipetogrep.org ) 4 分 由 thepipetogrep 发布 55 分钟前 | 隐藏 | 往期 | 收藏 | 1 条评论 帮助 jadar 46 分钟前 [–] 太棒了!我记得小时候曾试图弄清楚这是如何工作的,但始终没有理清。今天,我的梦想实现了。;) 回复 考虑申请 YC 2027 年冬季批次! 申请 截至 11 月 2 日开放。 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请加入 YC | 联系我们 搜索: ```

这篇文章认为,Common Lisp 可能是最适合 LLM 辅助编程的语言,因为它能缩短反馈周期。它采用基于映像的开发方式,无须重启即可更新函数;出现错误时,还可以直接进入交互式调试器,查看调用栈和变量。这让 LLM 能够检查问题、修改代码,并立即恢复程序运行。 由于代码和数据都采用相同的列表表示形式,Lisp 能够提供强大的宏,从而用领域特定抽象扩展语言。因此,企业可以把其产品理念直接编码到语言中,帮助用户安全地定制 ERP 等系统。宏还可以大幅精简大型程序——据称,其代码长度可能只有 Python 版本的六分之一或七分之一——从而降低 LLM 的令牌成本,并让更多程序内容保留在上下文中。 作者也看重 Common Lisp 自 1994 年以来一直保持的稳定性,以及其较小的依赖生态系统,这降低了供应链风险。尽管熟悉 Lisp 的工程师不多,相关的包生态系统也相对有限,但当 LLM 能够编写、移植和维护代码,而优秀的工程师又能快速掌握这门语言时,这些缺点可能就没那么重要。

一个 Hacker News 讨论帖围绕文章《为什么 Common Lisp 是最好的编程语言》展开。该文章认为,Common Lisp 尤其适合 AI 辅助开发:它拥有强大的宏,可以将特定领域的产品决策编码其中;代码简洁;交互式调试器还能展示栈帧和变量,使 LLM 无需重启程序,就能诊断问题、修改代码并继续执行。 许多评论者质疑这种语言的独特性,指出 C#、JavaScript、Python 的 PDB 和 Smalltalk 也具备类似的调试能力。其他人则质疑交互式调试在生产环境中是否现实,尤其是对于 Web 服务器,暂停调试可能导致请求或进程被冻结。有人还提到 Erlang 也是一个有用的替代方案,不过它的故障处理更依赖于让参与者崩溃并重试,而不是在运行过程中进行检查和修复。 怀疑者还 challenges? Need translate: "也质疑宏和自定义 DSL 能减少 LLM token 消耗这一说法,因为仍然必须提供文档和上下文,而 Common Lisp 较小的生态系统也可能带来额外的维护工作。总体而言,讨论认为这一观点有趣,但缺乏充分证据支持。" Need no extra. Ensure "challenges" no. Let's formulate all Chinese.</mm:think>一个 Hacker News 讨论帖围绕文章《为什么 Common Lisp 是最好的编程语言》展开。该文章认为,Common Lisp 尤其适合 AI 辅助开发:它拥有强大的宏,可以将特定领域的产品决策编码其中;代码简洁;交互式调试器还能展示栈帧和变量,使 LLM 无需重启程序,就能诊断问题、修改代码并继续执行。 许多评论者质疑这种语言的独特性,指出 C#、JavaScript、Python 的 PDB 和 Smalltalk 也具备类似的调试能力。其他人则质疑交互式调试在生产环境中是否现实,尤其是对于 Web 服务器,暂停调试可能导致请求或进程被冻结。有人还提到 Erlang 也是一个有用的替代方案,不过它的故障处理更依赖于让参与者崩溃并重试,而不是在运行过程中进行检查和修复。 怀疑者还质疑宏和自定义 DSL 能减少 LLM token 消耗这一说法,因为仍然必须提供文档和上下文,而 Common Lisp 较小的生态系统也可能带来额外的维护工作。总体而言,讨论认为这一观点有趣,但缺乏充分证据支持。

作者回顾了自己的开源历程:从 2011 年在 TShock 提交的一个 issue,到 2014 年在 GitHub 合并最初的几个 PR。其中,一次满怀热情、涉及 300 行代码的清理修改,被一位素不相识的人在一夜之间合并。这一经历体现了开源的核心:信任、共同努力与人与人的连接。 如今,AI 生成的 issue 和 PR 大量涌入各类仓库,其中既有看似合理却存在错误的成果,也有垃圾内容和未经请求的代码改写。创建贡献几乎只需片刻,但审查这些贡献的成本依然很高,对志愿维护者尤其如此。自动化审查淹没了人与人的讨论,而凭空生成、并不存在的问题报告,则浪费了宝贵的时间。 因此,一些项目和平台正在限制或关闭外部贡献,包括 Hono、curl、OpenJDK、Godot、Ladybird,甚至 GitHub 本身。作者每天都使用 AI,也不责怪维护者做出这些理性的选择;但他感到遗憾的是,贡献如今变成了一种负担,而不再是一份礼物。如果找不到简单的解决方案,开源可能会变得更小,并逐渐演变为仅限受邀者参与,从而恰恰排除那些曾为开源增添活力的热心外来者。

Hacker News 上关于“开源已如我们所知的那样消亡”的讨论,聚焦于 AI 生成的拉取请求和低质量贡献如何压垮开源项目的维护者。核心担忧是信任体系的崩塌:大量代码在没有真实社区参与的情况下涌入,维护者不仅要管理软件,还要应对一群陌生人的投稿。 评论者建议限制贡献数量、优先接纳值得信赖的贡献者,并通过邮件列表、论坛或 Discord reviving 较小规模的社区。也有人警告,过于严格的“善意证明”要求可能被 AI 代理钻空子,这符合古德哈特定律。还有人指出,开发者越来越多地维护由 AI 辅助的私有小型技术栈,因此不再那么依赖外部贡献,削弱了开源协作。 看法并不一致。部分参与者仍然乐观,认为开源比以往任何时候都更容易进入,能够产出更完善的软件,而且过去也曾成功适应重大的技术变革。真正的挑战或许不是开源本身的消亡,而是重新设计贡献机制,让自动化工具在不淹没人类讨论、不侵蚀信任的前提下帮助维护者。
联系我们 contact @ memedata.com