告別布尔值:提升软件设计之道

2025-08-28

本文探讨了在软件设计中过度使用布尔值的问题。作者指出,许多看似合理的布尔值实际上可以被更丰富的数据类型替代,例如日期时间、枚举等。使用布尔值会丢失信息,并导致代码难以维护。作者建议,应仔细分析布尔值背后的数据含义,并选择更合适的类型进行存储,例如使用日期时间记录事件发生时间,使用枚举表示状态或类型。只有在作为中间计算结果的临时变量时,布尔值才较为合理。通过这种方式,可以提升软件设计的质量,避免潜在的bug,并提高代码的可维护性和可理解性。

阅读更多
开发

Rust环形缓冲区:高效处理数据流的利器

2025-02-20

在开发MIDI项目时,作者需要一种方法来存储最近的消息,同时避免内存无限制增长。环形缓冲区成为了理想的选择。文章详细解释了环形缓冲区的概念、工作原理和应用场景,并比较了Rust标准库`VecDeque`以及`circular-buffer`和`ringbuffer`等第三方库的优缺点。`VecDeque`虽然灵活,但会自动调整大小;而`circular-buffer`和`ringbuffer`则提供固定大小的环形缓冲区,避免了内存重新分配的开销,但灵活性略低。最终,作者推荐在需要固定大小环形缓冲区的场景下使用第三方库,以节省开发时间和精力。

阅读更多
开发

大型语言模型的伦理困境:我为什么不再使用它们

2025-02-19

作者详细探讨了大型语言模型(LLM)的伦理问题,并解释了为什么自己不再使用它们。文章从能源消耗、训练数据来源、对人类劳动的替代、信息准确性和偏差以及权力集中等五个方面,深入剖析了LLM潜在的负面影响。作者认为,LLM 的高能耗与数据隐私问题令人担忧,其对人类工作的替代可能造成社会冲击,而模型自身的偏差和信息错误则可能导致误导性结论。此外,LLM 技术掌握在少数大型科技公司手中,也加剧了权力集中。作者呼吁在使用LLM时,应积极解决这些伦理问题,否则其应用可能是不道德的。

阅读更多
AI

Rust的魅力不止于性能:一个程序员的真情告白

2025-01-12

一位程序员分享了其热爱Rust编程语言的诸多理由,远不止其高性能和内存安全。文章重点阐述了Rust类型系统的表达能力和安全性,其强大的编译器错误提示,以及兼具函数式和命令式编程风格的灵活性。作者认为Rust虽然学习曲线较陡峭,但其带来的代码可预测性、并发编程安全性以及开发乐趣远超其他语言,例如Go。总而言之,Rust是一种值得推荐的编程语言,即使在不需要极致性能的场景下。

阅读更多
开发

调试我妻子的闹钟

2024-10-27

本文讲述了作者如何调试妻子闹钟的过程。闹钟的问题是每天早上到了设定的时间不会响铃,而是会重置时间。作者首先排除了电池问题,然后打开闹钟检查内部结构,发现并没有明显的损坏。最终作者推测,闹钟在电池电量不足时,会尝试从交流电源获取电压为蜂鸣器供电,但由于某种原因导致整个电路板电压下降,从而触发了“断电”显示闪烁并重置时间。

阅读更多
23
未分类 闹钟

Rust需要一个面向懒人开发者的Web框架

2024-10-07

文章指出,尽管Rust语言有很多优势,但目前缺乏一个能方便开发者快速构建Web应用的框架。作者认为,一个理想的框架应该包含路由、模板、登录、权限、数据库、后台任务、监控等功能,并以此为目标开发了一个名为“newt”的Web工具包。作者希望借此文与更多开发者交流,共同构建更完善的Rust Web生态。

阅读更多
27
未分类

TIL:8种UUID版本及其适用场景

2024-08-26

文章介绍了8种UUID版本,分别是v1到v8,并解释了每种版本的生成方式和适用场景。文章推荐在大多数情况下使用v4(随机生成)或v7(按时间排序),如果需要在UUID中包含自定义数据,则可以使用v5或v8。文章还解释了v1、v2、v3和v6版本的使用场景,并建议尽可能使用v7替代v1和v6。

阅读更多
46
未分类

与其用“auth”,不如用“permissions”和“login”

2024-05-27

文章指出在计算机领域,用“auth”来指代“authentication”(认证)和“authorization”(授权)容易造成混淆,并建议使用更清晰的术语:用“login”表示登录认证,用“permissions”表示授权。作者认为,清晰的术语不仅有助于沟通,还能避免将两个概念混淆,从而设计出更好的软件。

阅读更多
53
未分类 认证 授权