因滥用流量模式而被阻止。
因滥用流量模式而被阻止。
## 美国枪支所有权的转变 传统上,枪支所有权与保守派联系在一起,但现在正变得越来越多样化,自特朗普总统当选以来,自由派、有色人种和 LGBTQ+ 群体获得枪支的人数显著增加。像自由派枪支俱乐部这样的组织,会员人数急剧增加,培训请求增加了五倍。 接受 NPR 采访的个人表示,他们感到恐惧,源于特朗普政府的政策和言论——包括对潜在的内乱和极端组织胆大妄为的担忧。一位来自马里兰州的黑人医生,从小就被禁止玩甚至*玩具*枪,现在每周进行训练,担心家人的安全。其他人也表达了类似的焦虑,在 2024 年选举期间和选举结束后关键事件发生时,“如何购买枪支”的在线搜索量激增。 数据支持这一趋势;芝加哥大学的一项研究表明,2010 年至 2022 年间,民主党人的枪支拥有率上升了 7%。尽管强调自卫是唯一目的,但这些新的枪支拥有者表示,他们希望为最坏的情况做好准备,尽管他们希望永远不需要使用武器。白宫对此表示异议,反而指责“激进左派”的暴力行为。
## 读取-评估-补丁:一种新的测试方法
本文详细介绍了一种以简单理念为中心的软件开发流程:编写修改自身源代码的程序。这种方法不使用传统的 REPL(读取-评估-打印循环),而是使用“读取-评估-补丁循环”,其中表达式会被评估,并且*结果会直接补丁到源代码文件本身*。
这创建了一个持久的 REPL,有效地将源代码文件变成活的测试用例。通过运行表达式并保存其输出,开发者可以建立起期望行为的历史记录。后续运行会突出任何偏差,充当自动化测试——尽管需要手动解释更改是失败还是预期的差异。
作者提倡这种方法,并非作为传统测试理念的替代品,而是一种高度符合人体工程学的*生成*测试的方法。它通过消除手动编写预期输出的需要,利用探索代码行为的自然过程来最大限度地减少摩擦。虽然需要最初的努力来构建有意义的表达式,但它通常感觉“免费”,因为它反映了开发者已经使用的探索性编码过程。
该技术可以在各种语言中实现,可以使用“行内快照测试”或甚至基本的 bash 脚本(Cram)等工具,并且可以与其他测试方法(如基于属性的测试)结合使用。最终,它被呈现为增强测试的强大机制,而不是僵化的教条。
启用 JavaScript 和 Cookie 以继续。
## 昆虫作为未来的太空食品? 欧洲研究人员正在探索昆虫作为可持续和营养丰富的食物来源,以支持长期的太空任务。这项研究建立在20世纪40年代的实验基础上——包括第一只进入太空的动物,果蝇——研究表明,昆虫通常能很好地应对微重力的压力,维持生长甚至繁殖。 昆虫具有高度适应性,能够有效地将废物转化为蛋白质,并且富含铁和维生素B等必需营养素,其含量通常高于传统肉类。蟋蟀和粉虫等物种已被批准在欧洲供人类食用,并具有诱人的风味——坚果味的蟋蟀、像培根一样的粉虫,以及柠檬酸味的蚂蚁! 目前的研究重点是了解微重力如何影响昆虫的生命周期和生物过程。虽然过去的实验提供了宝贵的数据,但研究人员旨在进行更长时间的观测,以观察昆虫在轨道上的完整生命周期。欧洲航天局宇航员萨曼莎·克里斯托弗雷蒂最近在一次任务中品尝了蟋蟀粉棒,暗示着未来“美味的带腿太空零食”可能会成为现实。
## Ruby 3.x 性能:YJIT 与 ZJIT 简介 正在开发新一期的 *Ruby Under a Microscope*,重点关注 Ruby 3.x 及其性能增强,特别是 YJIT 和 ZJIT JIT 编译器。这些编译器旨在通过将频繁执行的部分转换为机器语言来加速 Ruby 代码。 YJIT 通过监控函数和块的调用频率来工作。一旦达到阈值(小型程序默认值为 30,大型程序为 120),YJIT 就会将该代码编译成优化的“YJIT 块”——机器语言指令序列。它最初编译小节,使用“分支桩”来处理数据类型未知的情况,并观察运行时行为以专门化编译后的代码。 下一代 ZJIT 在此基础上构建。YJIT 和 ZJIT 都依赖于计数方法和块的调用,以识别用于编译的“热点”。作者正在探索这些编译器的内部工作原理,包括检查生成的机器代码以及利用 Rust 技能,强调 Shopify 和其他 Ruby 团队的令人印象深刻的贡献。这项工作旨在提供对 Ruby 代码如何转换以提高运行时性能的详细了解。
## 使用自定义错误简化 Axum 中的错误处理
本文详细介绍了一种简化使用 Rust 构建的 Axum Web 应用程序中错误处理的方法。解决的核心问题是匹配 `Result` 类型并返回适当 HTTP 状态码时,经常需要冗长的样板代码。
解决方案是创建一个新的类型 `AppError`,它包装 `anyhow::Error` 并实现 `IntoResponse` 和 `From<E>` 特性。这允许开发者利用 `?` 运算符进行简洁的错误传播。无需冗长的 `match` 语句,错误会自动转换为正确的 HTTP 响应。
具体来说,`IntoResponse` 处理将 `AppError` 转换为 Axum `Response`,通常返回一个 500 内部服务器错误,并带有错误消息或渲染后的模板。`From<E>` 实现能够自动将各种错误类型(如 `sqlx::Error`、`serde_json::Error`)转换为 `AppError`,前提是它们可以转换为 `anyhow::Error`。
这种方法显著减少了代码混乱,提高了可读性和可维护性。作者提供了一个 GitHub 仓库([原文链接]),展示了在 HATEOAS 项目中使用 htmx 的实际实现。
(Empty input provided. There is nothing to translate.)
本课程提供C语言编程、RISC-V指令集和处理器设计学习资源。**直播课程将于2025年9月开始。** 学生可以通过顶部导航栏找到完整的讲义和使用reveal.js制作的材料(可导出为PDF)。 预计完成时间约为每项资源2小时(通常为视频讲座),但面向“中级”学习者——那些具有一定编程经验(超过500行代码和调试技能)以及积极态度的人。初学者预计需要花费更多时间。 如有问题、材料错误或建议,请联系于子豪 (yuzihao#ict.ac.cn)。请注意,该网站正在积极开发中,页面加载可能会偶尔停滞——简单的刷新应该可以解决此问题。可以通过“课程首页”链接访问过去的课程。