本文详细描述了在 Rust 项目中使用 Git 预提交钩子时遇到的挫折经历——一个简单的 FizzBuzz 实现。作者最初创建了一个基本的 Rust 程序,并设置了一个预提交钩子,以自动使用 `rustfmt` 格式化代码。然而,钩子的初始实现是在工作区运行,而不是在索引上运行,导致无法在提交之前捕获格式化问题。 后续的迭代尝试通过在已签出的索引版本上运行,然后仅在已修改的文件上运行来改进钩子。虽然这些改进解决了一些问题,但作者发现了一些根本性的限制:钩子会破坏 rebase 操作,在不同的分支上不可靠(由于不同的提交历史和钩子版本),并且会干扰 stash 等工作流程。 最终,作者得出结论,预提交钩子是一个“从根本上来说有缺陷的想法”,因为其固有的不稳定性和潜在地干扰合法的开发流程。他们强烈建议使用 **pre-push 钩子** 代替,强调它们应该快速、可靠,并在索引上运行,而不是工作区,并且在贡献文档中提供清晰的手动设置说明。
卡内基梅隆大学的研究人员开发出一种突破性的“计算透镜”,能够同时将整个场景清晰地聚焦,无论景深如何。与仅限于单一焦平面的传统透镜不同,该系统动态调整图像的焦点,模拟真实世界的曲率。
这项创新结合了改进的洛曼透镜、空间光调制器和复杂的自动对焦算法,利用对比度检测和相位检测两种方法。这使得它能够实现快速、准确的对焦——达到每秒21帧——而不会出现光圈变小带来的缺点,例如亮度降低或衍射。
该技术于2025年国际计算机视觉会议上展示,其潜力远不止于摄影。应用包括改进的显微镜技术,用于详细的生物成像;增强自动驾驶车辆的清晰度;以及在AR/VR系统中更逼真的深度感知。这代表了一种新颖的光学设计,有望从根本上改变相机捕捉和感知世界的方式。
## 增加你的运气表面积
运气在成功中扮演着角色,但你可以主动*增加*体验它的机会。关键并非超自然,而是扩大你的“运气表面积”——积极、意外的机会找到你的概率。这通过持续**工作**和**告诉人们**你的工作来实现。
发布你的作品——无论是开源库、博客文章、演讲还是播客——都能建立起你技能和热情的公开记录。这会吸引像工作机会、演讲邀请和宝贵联系这样的机会。不要等待完美;分享你的过程、成功,甚至失败。
克服分享的恐惧至关重要。许多有能力的人会犹豫,认为他们的工作不值得注意。然而,分享知识可以激励他人,并将你定位为专家。选择你的目标受众所在的平台并持续发布。
通过拥抱公开工作,你会发现自己吸引着积极的、意想不到的结果——从增加认可度到改变人生的机会。这是一个简单的公式:持续的努力 + 开放的沟通 = 一个显著更大的运气表面积。
## QNX开发者桌面现已发布
QNX发布了其**QNX开发者桌面**的初始版本,这是一个在QNX 8.0上直接运行的自托管开发环境。 这消除了交叉编译的需要,简化了新手和移植Linux应用程序的开发。
该桌面环境基于XFCE和Wayland构建,包含编译器(clang, gcc)、Python、IDE(Geany, Emacs, Vim)、网页浏览器和文件管理等基本工具。 它预装了来自QNX开源仪表板的600多个独特端口,提供广泛的可用软件。
目前作为Ubuntu的QEMU镜像提供(计划支持Windows、macOS和树莓派),“快速启动目标镜像”可以通过QNX软件中心免费许可下载。 尽管此第一个版本仍在完善中,但它为构建和测试QNX应用程序提供了坚实的基础。
该团队欢迎反馈,并计划未来的更新侧重于稳定性、文档、CI集成和扩展的平台支持。
## 2025:发现之年
2025年是一个探索多样化的年份,涵盖了技术、艺术和文学。一个关键主题是深入研究系统——从早期电话网络的复杂性(记录在AT&T的《距离拨号笔记》中),到雅可比纸牌游戏的优雅简洁。编程兴趣包括探索串联语言Joy,继续使用Clojure,以及对历史上的施乐Alto系统着迷。
阅读涵盖了小说(R. Austin Freeman、查尔斯·狄更斯、Margaret St. Clair、Sylvia Townsend Warner)和非小说,包括传记以及对科马克·麦卡锡图书馆的深入研究。突出的读物包括丹尼尔·克洛斯的漫画小说《耐心》和赫尔曼·黑塞的《纳西索斯与戈尔德蒙德》。
除了书籍,还包括对编程(递归实数运算)、日本漫画咖啡馆(《迷失在Manboo》)以及对艺术家和游戏设计师的访谈等方面的深刻文章。个人转变包括增加对非技术主题的写作,以及使用电子表格的新任务跟踪系统。
展望2026年,计划包括继续写作、发布游戏规则,以及进一步探索人工智能和笔记系统,所有这些都源于亲手创作和更深入阅读的渴望。这一年受到充满活力的思想家和创作者社区的启发。
## 从 Matomo 迁移到 Umami:10 年数据拯救
作者在使用 Matomo(前身为 Piwik)进行网站分析十年后,寻求更现代的解决方案,并在 2022 年过渡到 Umami。虽然 Umami 提供了更简洁的 UI 和更简单的托管(NextJS/PostgreSQL 与 Matomo 的 PHP/MySQL),但一个主要障碍是迁移 10 年的历史数据。
由于不存在直接导出/导入功能,作者开发了一个 Python 工具 `matomo-to-umami`(可在 GitHub 上找到),以直接将数据从 Matomo 的 MySQL 数据库迁移到 Umami 的 PostgreSQL 数据库。这涉及仔细映射数据模型并生成兼容的 SQL INSERT 语句。
迁移过程包括一次预览运行和使用本地 Docker 环境进行彻底测试,以确保数据准确性——验证诸如跳出率、浏览器和国家/地区等指标。成功迁移了 angristan.fr 和 stanislas.blog 这两个网站的数据后,作者终于可以停用他们的 Matomo 实例并简化他们的分析设置,同时保留了宝贵的历史数据。该工具被提供给面临类似迁移挑战的其他人作为资源。