回顾近期参加 SmashingConf 和 CSS Day 的经历,作者强调了拉近会议演讲者与参会者之间距离的重要性。她注意到许多参会者感到拘谨,或不确定自己的反馈是否有意义,因此她积极促成双方交流,鼓励大家主动与演讲者分享心得。 作者分享了自己作为演讲者的脆弱感,指出随着 Twitter 等平台的式微,判断演讲效果变得更加困难。即使是经验丰富的演讲者,在下台后也常会自我怀疑,并非常珍惜简单、正向的反馈。她坦言,有时自己也会忘记向朋友表达支持,误以为对方已经知道自己的想法。 最终,这篇文章向所有参会者发出了温暖的呼吁:如果你喜欢某场演讲,请告诉演讲者。你的反馈绝非“微不足道”。无论是轻拍肩膀的致意,还是简短的交流,你的赞赏对那些倾注心血准备演讲的人来说都极其宝贵。请不要畏惧沟通;演讲者也是普通人,他们很希望知道自己的工作引起了你的共鸣。
这篇文章探讨了如何在没有计算器辅助的情况下,估算大数阶乘(如 52!)的位数。
作者引入了伽玛函数,将其作为对所有正实数阶乘的一种推广。通过利用斯特林公式——即通过拉普拉斯方法对伽玛函数的积分进行推导——人们可以有效地估算这些巨大数值的量级。
该估算的核心在于计算斯特林公式的以 10 为底的对数。正如作者以 52! 为例所演示的那样,该方法得出的结果与实际值非常接近。尽管该公式包含一项随输入值增大而变得不那么重要的次要项,但作者指出,将其包含在内可以确保更高的精度。总之,这种方法将计算巨大阶乘这一艰巨任务转化为了一种可控的数学练习,为衡量它们的规模提供了一种可靠的途径。
CloudX 发布了 `cloudx-io/setup-go`,这是 GitHub `actions/setup-go` 的直接替代品,旨在通过优化缓存管理来提升 Golang CI 的性能。
标准的 `actions/setup-go` 操作存在两个主要缺陷:
1. **缓存冲突**:在并行工作流(例如分别进行 lint、测试和构建的任务)中,并发任务会争抢并覆盖同一个共享的缓存键。这会导致缓存陈旧且不完整,从而引发不必要的重复测试。
2. **更新频率低**:默认操作仅在 `go.mod` 文件发生更改时才会刷新缓存。因此,随着代码库的发展,缓存会变得越来越陈旧,导致 CI 任务重复处理已完成的工作。
`cloudx-io/setup-go` 通过在缓存键中加入唯一的任务标识符和运行 ID 解决了这一问题。这确保了并行任务拥有独立的缓存,并保证缓存会在每次成功运行后更新。
在 CloudX 的单体代码库中,该方案使测试任务的运行时间缩短了 69%,并消除了 86% 的冗余测试执行。尽管这种策略会增加缓存存储的使用量,但所带来的速度提升显著降低了 CI 总账单费用并缩短了开发人员的等待时间。该工具现已开源,可供追求更快、更可靠 Golang CI 的项目使用。