杂记 › 技术笔记

技术笔记

共 52 篇文章

PNG 压了三遍只减 426 字节:无损压缩的真实边界

11 张 PNG 逐档实测:66 组里 55 组省 0 字节,产物喂回去压满三遍累计只降 426 B、0.19%。IDAT 占了 99.97% 以上体积,DEFLATE 的上限由图像内容定死,还能减字节的只有颜色表示这一维。

WebP 转 PNG 后体积涨了几倍:什么时候必须转,怎么把涨幅压住

WebP 转 PNG 实测涨 1.4194 倍到 80.8547 倍,像素却 diffPixels = 0:涨的是 RGBA 容器而不是画质。讲清什么时候必须转、怎么把涨幅压住。

截图缩到四分之一,小字糊成一团的三种原因

截图缩到 320×180 后小字糊成一团,缩到 1024×576 体积反而从 62,744 B 涨到 79,480 B。三条原因都在模板里:默认采样质量 low、只有一处 drawImage、画布永远等于请求值。

同样裁 300×300,头像为什么总偏右下角半格

同一张图裁两次都是 300×300,叠在纯色底上却差半格:居中那次 (oldW - w) / 2 也交给 Math.round,半数一律朝正无穷进位,于是左边距 89、右边距 88。

按每月 1.7 倍预估 18 个月,脚本和表格为什么给出两个数

首月 2、每月乘 1.7、共 18 个月,闭式与逐项累乘给出两个尾数,差在小数第 15 位。浮点、幂运算与显示分档各管一段,真正写进汇报会出事的是项数口径。

接口 JSON 贴成 PHP 数组,哪些值会悄悄变形

接口返回贴成 PHP 数组后,超过 2^53 的订单号会少 1,9223372036854775807 相差 193,{} 与 [] 塌成同一种写法,带尖括号的值复制回来还会少字——变形几乎都出在第一步 JSON.parse。

/26 到底能装几台机器:可用主机数、广播地址与 /31 的例外

/26 的 62 台来自 2 的 6 次方减 2,可这条公式只在前缀不大于 30 时成立:/31 点对点实测可用 2 个地址,/32 只给 1 个,网关还要再从可用位里吃掉 1 个。

表单只跑 Luhn,为什么会放过 4242 4242 4242 4242

4242424242424242 的校验和恰好 80,而 Luhn 只核对这一个余数:抄错一位实测 1008 个变体一个不漏,同奇偶槽位对调的 4410 组却 100.00% 看不见,随手编的号也有约 1/10 过关。

把质量调到 100 再压一次,图片其实一个字节都没动

质量滑到 100 走的是第 180 行原文件直通,208986 B 进 208986 B 出、节省 0 B;99 档反倒顶到 333872 B。还记了 PNG 先转 JPEG 的平方质量、透明丢失与两个不一致的节省算法。

同一个数打两遍,最小公倍数成了 94906266.99999999:先乘后除撞上限的是中间量

同一个数打两遍就露馅:输入 94906267, 94906267 时,最小公倍数成了 94906266.99999999——先乘后除撞上限的是中间量,不是结果。

后缀从最后一个点算起:LICENSE、.gitignore、archive.tar.gz 为什么会漏改

后缀只认最后一个点:27 行样本 UPPER 改 11 行、lower 改 9 行、Title 改 19 行,LICENSE 与 .gitignore 原样返回,archive.tar.gz 只动 gz,带路径还会改到目录名。

批量建目录的脚本里,编号补零和 CON 这两个坑最容易被忽略

同一份 150 行的清单,BAT 写 157 行 / 3544 字节,PowerShell 写 156 行 / 11049 字节;补零位数选小不会重名,CON 却会原样进脚本。

1 2 3 4 下一页