Git rerere 复用冲突解决:文件已改好,为什么仍要检查暂存区 长期维护一个主题分支时,同一处冲突可能在试合并、撤销和再次合并中反复出现。Git rerere 可以记住此前如何把冲突内容改成解决后的内容,在再次遇到匹配冲突时尝试复用。这能省去机械编辑,但历史解法是否符合本次业务要... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
JavaScript 类字段初始化:super 调过子类方法,值为什么又被覆盖 父类构造器调用了一个子类重写的方法,日志也显示赋值成功;可 new 返回后,字段又变回初始值。这个问题通常不是有另一个异步任务在改对象,而是子类实例字段尚未初始化。构造阶段的调用顺序,和阅读类声明时的视觉顺序并不相同... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
JavaScript thenable 同化:普通对象带 then,为什么 await 会调用它 给旧接口加上 async 包装后,原本应该返回一条记录,却突然返回数字;另一个对象只是读取字段就报错。此时不能只检查它是不是 Promise 实例。JavaScript 的异步结果接纳一种协议:如果对象的 then ... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python 解析 MIME 邮件:三个 text 部分,为什么只有一个该当正文 按 text 类型全部拼起来,会读到什么解析一封带附件的邮件时,把 walk 遍历到的所有 text/plain 拼成正文,可能把附带的说明文件也读进去;再把 text/html 加上,又会重复一次正文。MIME 邮... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python ElementTree 查找 XML:标签看起来叫 item,为什么 find 仍返回空 看到的短名字,不是完整身份从接口拿到一份 XML,肉眼能看到 item,代码 root.find("item") 却返回 None,很容易先怀疑编码或文件没有读完整。如果元素声明了默认命名空间,解析后的标签身份包含命... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python mock.patch 补丁位置:函数明明来自这里,为什么替换后仍没有生效 替换了函数,调用方却没有改变给代码写测试时,经常想把读取接口替换成一个可控结果。patch 没有报错,替身也创建成功,业务函数却仍返回原值,问题可能出在名称查找位置。函数从哪个文件定义出来,与执行到调用语句时从哪里取... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python reload 重载模块:函数更新了,旧引用为什么仍可能执行旧代码 修改源文件以后,谁真正变了在交互式调试里修改模块,再调用 importlib.reload,往往能继续试验。但重载不是重新启动解释器:模块内的名称会重新绑定,其他地方保存的函数引用未必跟着更新。更容易误判的是,旧函数... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Bash case 的三个结尾:停止匹配、直接贯穿与继续检查怎样区分 一个文件分类脚本想给 report.log 同时标记“日志”和“报告”,把 case 分支结尾改了一下,却又标上了“表格”。问题往往不在文件名,而在分支执行完之后选择了哪一种控制方式。Bash 的三个结尾长得接近,后... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Bash set -e 的条件边界:函数放进 if 后,内部失败为什么继续执行 脚本开头已经写了 set -e,一个包含多步操作的函数单独调用时会在失败后退出。后来为了输出更友好的错误信息,调用者把它放进 if 条件,失败步骤之后的命令却继续运行,甚至走进成功分支。这不是失败命令突然成功,而是调... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Git 附注标签:标签的对象标识,为什么与它指向的提交不同 发布脚本把标签解析出的标识和构建提交标识直接比较,发现不相等,于是认定打错标签。然而这个标签可能正是指向正确提交的附注标签。两边比较的对象类型不同:一边是装着发布说明的标签对象,另一边才是包含代码快照的提交对象。轻量... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读