每日HackerNews RSS

Python 指导委员会一致批准了 **PEP 810,“显式惰性导入”**,称赞它比之前的尝试(PEP 690)有所改进。 关键特性引入了 **`lazy` 关键字**,用于延迟导入执行——优于 `defer` 等替代方案——并且将出现在导入语句的开头(例如,`from foo lazy import bar`)。 委员会提出了一些建议:拒绝使用 `dict` 的子类来实现,维持当前拒绝在 `__lazy_modules__` 中使用通配符导入,并明确指出 `.pth` 文件将*不*支持惰性导入。 此外,他们要求提供一个 `sys.get_lazy_imports()` 函数,澄清在设置惰性导入模式时的优先级(通过环境变量、命令行选项或 `sys.set_lazy_imports()`),并对惰性导入排序的风格保持中立,将其留给代码检查工具。 总的来说,委员会认为 PEP 810 为 Python 社区取得了宝贵的平衡。

1. 创建职位空缺。定义职位,包括职位描述和级别,然后选择候选人可以在挑战中使用哪些编程语言。Niju 从我们的库中精选相关的、实际的编码挑战,以确保评估的实用性。2. 邀请候选人。分享一个独特的面试链接。候选人可以随时完成 20 分钟的挑战,同时录制屏幕、音频和视频,并“大声思考”——模拟真实的结对编程环节。这种低压力的形式可以捕捉他们的编码流畅度、解决问题的能力和沟通风格。3. 分析报告。收到一份详细的、人工智能驱动的报告,其中包含完整的文字记录、代码回放以及对技术技能和思维过程的分析。这使您能够全面了解候选人的表现,从而进行公平和一致的评估。

作者正在进行“无社交媒体十一月”活动,断开与个人社交媒体账户的连接——包括退出YouTube和Reddit——以挑战持续在线互动的吸引力。他们鼓励同样感到不堪重负的读者加入这场数字排毒,建议注销账户并删除应用程序以打破根深蒂固的习惯。 这场挑战并非永久放弃,而是一个重新评估与社交网络关系的机会。参与者可以在十二月恢复以前的习惯,修改它们,或继续休息。作为社交媒体的替代方案,作者建议探索博客,并为朋友Pika提供的博客服务提供折扣码。他们邀请读者分享他们的经验,并通过博客进行交流。

```json { "promptFeedback": { "blockReason": "其他" }, "usageMetadata": { "promptTokenCount": 532, "totalTokenCount": 532, "promptTokensDetails": [ { "modality": "文本", "tokenCount": 532 } ] }, "modelVersion": "gemma-3-27b-it", "responseId": "DOEIad-1Ha2rjuMP65GCoAQ" } ```

## 17世纪科学中的赛博朋克根源 本文探讨了赛博朋克的核心要素——高科技、城市环境和反文化——与17世纪科学进步之间的惊人相似之处。它认为,将推理机械化的努力,以戈特弗里德·莱布尼茨的“普遍特征”(一种通用的科学语言)为例,预示了现代控制论,甚至黑客思维。 作者重点关注了一封最近发现的罗伯特·胡克写给莱布尼茨的信,赞扬了后者的项目。胡克设想这种语言不仅是科学进步的工具,更是一种*赋权*个人的手段,允许人们独立于权威自由探索思想——这是一种明显的“赛博朋克”愿景。 胡克本人——一位叛逆的发明家和创新者——体现了这种精神。作者认为胡克应该与莱布尼茨一同被视为控制论和赛博朋克核心反文化元素的奠基人,强调了他们共同的愿望,即通过技术创新挑战既定体系。这种比较邀请我们通过现代、类型化的视角重新评估历史上的科学进步。

## 产品市场契合之前:后端重写 Skald团队在推出他们的RAG API平台后不久,做出了一个非常规的决定,将后端从Python/Django重写为Node/Express + MikroORM。尽管有人建议优先发布并实现产品市场契合,然后再关注规模化,但他们选择重写是因为Python的异步能力存在重大挑战。 核心问题源于对LLM和embedding API的严重依赖,这需要大量的异步I/O。Django的异步支持被证明复杂且不可靠,与JavaScript的事件循环或Go的goroutine相比,基础薄弱。现有的解决方案感觉像是变通方法,而不是原生解决方案。 虽然考虑过FastAPI,但团队最终选择了Node,以统一他们的代码库——此前代码库分为Python和Node——并利用他们现有的基于Node的后台工作者。迁移用了三天时间,涉及大量的测试,并最终使吞吐量提高了大约3倍。 虽然失去了Django易用的ORM是一个缺点,但团队对更高效和可扩展的架构的长期益处持乐观态度,即使这意味着需要重建一些工具。他们公开承认自己对Python异步缺乏经验,并欢迎反馈,在GitHub上分享他们的PR以供社区审查。

## 阿瑟·惠特尼极简 C 解释器深度解析 本文详细介绍了一项引人入胜的探索,即阿瑟·惠特尼创建的一个极其紧凑的 C 解释器。惠特尼以其在 K 语言和 kdb+ 数据库方面的工作而闻名。该解释器大约 50 行代码,展示了一种独特的编码风格,优先考虑密度并最大限度地减少滚动——旨在将所有逻辑保持在单个屏幕上可见。 惠特尼的代码大量借鉴了 APL,采用了一种非传统的 C 风格,具有广泛的宏使用、隐式参数和非常规的类型处理(使用 `char*` 同时表示字符串和整数)。虽然对这种风格的看法不一,但作者进行了逐行分析,以理解其原理和潜在优势。 核心要点不仅仅在于代码的简洁性,而在于*在实现之前进行深思熟虑的设计*。该解释器的成功取决于定义明确的原始指令和一个清晰的问题心理模型。作者将这种方法与自己迭代和重构的倾向进行对比,认为更早期的规划是有益的。 分析突出了优势——简洁的代码、可重用的原始指令——和劣势——潜在的可读性问题、对非标准 C 扩展的依赖。最终,这项练习引发了对编码方法的反思,表明在深入实现*之前*优先考虑概念清晰度,并通过更周密的的设计可能提高代码质量。作者建议未来的练习来扩展该解释器,进一步测试这种独特编码方法的可行性。

## 阿瑟·惠特尼的 C:深入探讨密集编码 一篇最近的文章和随后的 Hacker News 讨论深入探讨了阿瑟·惠特尼非常规的 C 代码。惠特尼以其在数组编程语言如 APL 和 J 方面的工作而闻名。他的风格优先考虑极致的紧凑性,大量使用宏并尽量减少空格,从而使代码在极少的行数内完成令人惊讶的任务。 虽然毫无疑问是有效的,但对于那些习惯于标准 C 实践的人来说,这段代码以难以阅读而闻名。评论员认为,理解惠特尼的作品需要掌握 APL 的基本概念,因为他本质上试图*像编写 APL 一样编写 C*。一些人发现将变量重命名为表情符号或使用语义高亮可以提高可读性。 这场讨论凸显了代码密度与可维护性之间的矛盾。虽然惠特尼的方法允许对程序进行整体视图,但它牺牲了许多人的清晰度。许多人同意,虽然引人入胜,但这种风格对于大多数项目来说不实用,并强调了代码作为交流的重要性,而不仅仅是巧妙。最终,争论的中心在于,极致紧凑性的好处是否超过了对理解和协作的成本。

请启用 JavaScript 并禁用任何广告拦截器。

(Empty input provided. There is nothing to translate.)

## 终端 Unicode 支持:2024 年更新 本文是对 2023 年“终端模拟器大乱斗 – Unicode 版!”的后续,使用 `ucs-detect` 工具进行更新测试,该工具现在能够自动检测对 DEC 私有模式、六边形图形、像素大小和软件版本的支持。核心挑战依然是:在固定宽度网格内准确渲染 Unicode 的庞大范围。终端经常错误计算字符宽度,导致对齐问题和难以阅读的文本。 **Ghostty** 和 **Kitty** 成为表现最佳的终端,其中 Ghostty – 一个用 Zig 构建的新终端 – 展现了特别正确的 Unicode 实现。Kitty 的文本分割算法与 Python `wcwidth` 规范紧密一致,凸显了对 Unicode 标准的共同承诺。 测试揭示了显著的性能差异;**iTerm2** 和 **GNOME Terminal** 明显较慢。作者优化了 `wcwidth` 库,发现其现有的 LRU 缓存二分查找对于重复性的人类语言来说最有效。 该研究还发现了不一致性(例如 **Terminology** 的结果波动)和报告方面的局限性(例如 **Konsole** 和 **Contour** 的 DEC 私有模式支持)。展望未来,新兴的 **文本尺寸协议** 为可变大小的文本提供了一条有希望的途径,可能提高复杂脚本的可读性并增强可访问性。

## 2025年终端模拟器现状:总结 一篇近期文章和Hacker News讨论探讨了当前终端模拟器的格局。虽然Ghostty和Kitty等新选项正在获得关注,但Konsole和iTerm2等老牌玩家仍然具有竞争力。讨论中,Windows Terminal的表现令人惊讶,在一些测试中排名较高。 关键点包括对图像支持(Sixel与Kitty协议)、滚动条搜索(Ghostty期望的功能)以及Unicode兼容性的重要性的争论。许多用户重视定制和脚本能力,WezTerm因其Lua扩展性而受到赞扬。 对话还涉及对更高效的远程图形解决方案的需求,以及极简终端(如`st`)和功能丰富的选项之间的持续争论。最终,“最佳”终端取决于个人需求和优先级,没有一个模拟器在所有标准上占据主导地位。 许多用户表示更喜欢满足他们需求的现有工具,而不是追求最新的功能。

更多

联系我们 contact @ memedata.com