JavaScript Proxy 不变式:拦截读取,也不能改写已经锁定的属性事实 给对象套上 Proxy,经常是为了记录访问、补默认值,或提供计算字段。一个常见误解是,只要写了 get 拦截器,读取结果就完全由自己决定。对象如果已经明确锁定某些属性,运行时仍会检查返回值是否与这些事实一致,检查失败... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
JavaScript Object.assign:目标写到一半报错,前面的修改为什么还在 给现有配置对象合并新选项时,一次调用抛出了异常,很容易误以为目标完全没变。如果业务在捕获异常后继续使用旧配置,就可能混入已经成功写入的字段。要判断这种问题,需要观察每一次读取和赋值,而不能只看最后有没有返回对象。Ob... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Python quantiles 分位数:同一组数据,inclusive 与 exclusive 为什么给出不同切点 先固定方法,再比较数字比较两份任务耗时报告时,平均值完全相同,四分位数却不同,不一定是谁算错了。有限数据的分位数需要约定每个观测值对应的位置,再计算中间切点。Python 标准库 statistics.quantil... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Bash command 与 type:绕过同名函数以后,为什么仍可能执行内建命令 同一个名字不一定指向同一个东西你在终端输入一个常用命令,输出却多了提示文字;复制进脚本后又恢复正常。先别急着重装程序,这个名字可能被别名或 shell 函数包装过。Bash 会按自己的解析和查找规则决定运行目标,命令... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
SQLite 生成列:STORED 会跟着原列更新,为什么 table_info 里还找不到它 把一行内的派生值交给数据库一个板材清单保存宽度和高度,每次修改尺寸后都要更新面积。若不同脚本各自维护第三个普通字段,某条写入路径忘了重算,就会留下互相矛盾的数据。SQLite 的生成列能把同一行内的计算关系写进表结构... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
SQLite RETURNING:拿到的值为什么还没包含 AFTER 触发器的修改 插入成功后,到底读到了哪一版应用插入一条记录,顺便用 RETURNING 取得编号和显示名,省掉一次查询。如果表里还有 AFTER INSERT 触发器会整理显示名,接口返回值可能与紧接着查询的表内值不同。排查这类问... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python ZIP 重名成员:按文件名读取之前,先确认压缩包里有几份 压缩包不是文件名字典收到一个资料包,程序读取 report.txt 后就开始生成摘要,看起来很自然。但 ZIP 可以保存多个名字相同的成员。界面只展示名称时,它们很容易被误看成一份;程序若先把成员列表转成以名称为键的... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Python singledispatch:第二个参数不参与选路,bool 也会走整数分支 给一种操作安排多种实现写一个小型导出器时,数字要补零,文字要原样保留,布尔值要显示开关状态。开始用几个判断就够了,但类型不断增加后,可以把同一种操作的实现分别注册到 singledispatch。调用入口仍是一个函数... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Python graphlib 依赖排序:字典里要写前置任务,完成后才能放行下一步 先把“依赖谁”写清楚制作一份报告时,抓取资料后才能校验,校验通过后才能计算图表与排版,最后才能打包。若只是按函数在文件里的位置执行,流程一长就难以看清先后关系。标准库 graphlib 可以把这些约束转成可执行顺序,... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Python ContextVar:任务创建后,父任务改值为什么不会传过去 日志中的请求编号从哪里来一个异步服务同时处理几份文档,底层日志函数想知道当前属于哪次请求。逐层传入编号很清楚,但调用链很深时,也可以用 ContextVar 保存随执行上下文传播的少量信息。它的关键问题是:在哪个时点... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读