[转载] 用 Git worktree 做并行开发,不再手忙脚乱
转载自 barrd.dev 的博客:介绍 Git worktree——让多个分支各自拥有独立工作目录、共享同一套仓库历史,从此在功能开发与紧急修复之间切换不再需要 stash 和来回 checkout。
转载自 barrd.dev 的博客:介绍 Git worktree——让多个分支各自拥有独立工作目录、共享同一套仓库历史,从此在功能开发与紧急修复之间切换不再需要 stash 和来回 checkout。
转载自 Martin Fowler 的博客:很多人把 mock object 和 stub 混为一谈,但 Fowler 指出这里其实纠缠着两层差异——一是「状态验证 vs 行为验证」,二是「经典派 TDD vs mockist 派 TDD」。文章用一个订单/仓库的例子演示了两种写法,借 Meszaros 的术语厘清了 dummy、fake、stub、spy、mock 五种测试替身,并从驱动 TDD、夹具搭建、测试隔离、与实现耦合、设计风格等几个维度,把两种风格的取舍掰开了讲。
转载自 Steve Sanderson 的博客:好的单元测试和坏的单元测试差别在哪?作者的核心观点是——单元测试不是用来找 bug 的,找 bug 该靠手工测试和集成测试;单元测试的真正用途是在 TDD 流程里帮你稳健地设计软件组件。文章给出了一条从「纯单元测试」到「纯集成测试」的光谱,并总结了写出落在「甜蜜点」上的单元测试的几条实操建议。
转载自 Christopher Johnson 的博客:布尔变量名是含糊的雷区——flag、done、status 这类名字在凌晨三点的故障排查时会让你抓狂。本文介绍了用 is、has、can、should 四个前缀覆盖 99% 的布尔命名场景,并辅以「禁止否定」「布尔陷阱」等规则,让每个布尔值都成为一个清晰、符合语法的问题。
转载自 Embedded.fm 博客:当一个慢速外设(如 SPI 上的高精度 ADC)持续滴入数据、要攒够 N 个样本才能跑算法时,单缓冲会在「DMA 完成」与「下一个样本到来」之间发生冲突。乒乓缓冲区(ping-pong buffer)用两块大小为 N 的内存轮流承担「被 DMA 写入」与「被 CPU 处理」两个角色,从而在没有拷贝开销的情况下让数据采集与算法处理解耦——它本质上就是一个只有 2 个元素的循环缓冲区。
转载自 Ken Shirriff 的博客(righto.com):1980 年的 Intel 8087 浮点协处理器把所有运算都实现为芯片内部一层被称为「微码」的低级代码。本文以 FXCH(浮点寄存器交换)指令为样本,逐条拆解它背后的 14 条微指令,并讲解 8087 的栈式寄存器组、tag 标签位、异常屏蔽机制,以及作者如何用显微镜和神经网络从硅片里把 1648 条微指令逆向提取出来。
转载自 Haytham Fayek 的博客:详解语音特征提取的完整流程——预加重、分帧、加窗、FFT 与功率谱、Mel 滤波器组、DCT、倒谱系数(MFCC)与均值归一化,并讨论为什么在深度学习时代滤波器组正变得比 MFCC 更受欢迎。
转载自 Google Testing Blog 的 Code Health 系列(作者 Yiming Sun):当代码里出现又长又复杂的布尔表达式时,如何通过提取命名变量、拆分为中间布尔抽象,或封装成带卫语句(guard clause)的方法,让逻辑变得清晰易读。
转载自 Ty Hopp 的博客,介绍一种介于 GitHub flow 与 Gitflow 之间的 git 分支模型:长期存活的 main 与 release 分支、短生命周期的特性分支、定期的 branch cut、stabilization 期、backport 与 hotfix 流程。
作者当面试官时,喜欢让面试者现场编程,找出列表的中位数。本文解释,为什么他认为这道题很合适面试。
转载自 Rob Norris 的博客文章,解释了为什么 io_uring 不是 select/poll/epoll 的简单替代品,而是一个通用的异步系统调用设施。
转载自维基百科的环形缓冲区(Circular Buffer)条目,完整翻译并保留全部图片与动画。