动态 · 25

博客

来自 Vectobox 团队的见解、教程和最新动态。

/015 分钟阅读

大多数「标题大小写」按钮都是错的:Chicago 和 AP 到底要求什么

Gone with the Wind 还是 Gone With the Wind?两个都对,取决于你用 Chicago 还是 AP。大多数在线转换器把每个词都大写就叫 Title Case。这里讲清楚正确实现的四风格表,以及那个让 XMLHttpRequest 不会被切成 x_ml_http_request 的零宽正则。

文本标题大小写unicode分词器
阅读全文
/025 分钟阅读

ls -l 里的大写 S,意味着你的 setuid 位根本没生效

执行 chmod 4655 file 再 ls -l,打印出来的是 -rwSr-xr-x——这个大写 S 表示 setuid 已设置但失效,因为 owner 没有执行位可挂。大多数在线 chmod 计算器把它渲染成小写 s,且从不提醒你。这一个把 S/T 大小写算对了,还解析了几乎没有竞品支持的 u+x,go-w 符号语法。

devlinuxpermissionschmod
阅读全文
/035 分钟阅读

利率从 4% 涨到 5%:同时是 +1 个百分点和 +25%,多数计算器只给你一个

利率从 4% 涨到 5%,涨了 1 个百分点,也涨了 25% 相对幅度——两个都对,量的不是一回事。本工具把百分点和百分比变化并排显示,再修掉另外三个常被算错的坑:跌 50% 要涨 100% 才回本,8 折后 ¥80 反推原价是 ÷0.8=100 不是 ×1.2=96,同一笔 60 利润算出加成率 150% 和毛利率 60%。

金融百分比百分点毛利率
阅读全文
/048 分钟阅读

大多数色盲模拟器跳过了 sRGB gamma 解码,结果让红色暗了两档

纯红 #FF0000 在 sRGB 下的线性光强值是 1.0,不是直接除以 255 的 1.0。跳过 IEC 61966-2-1 的解码,Brettel 1997 色盲模拟会把红色变成 #4F4F4F 而不是正确的 #828282 —— 相对亮度误差约 6 倍。本工具用 256 项 LUT 做 gamma 解码,在线性光空间跑 Brettel / Viénot / Machado 三套算法,并按 1999 年论文原文拒绝把 Viénot 应用到 tritan。

accessibilitycolorvisionsrgb
阅读全文
/056 分钟阅读

Math.random() 是个 PRNG。你那颗 d100 是有偏的。

ECMA-262 §21.1.2.13 明确不要求 Math.random 是 CSPRNG,而且 2^32 mod 100 = 96,所以 Math.floor(Math.random() * 100) + 1 这一行在每一掷里都会把 1-96 这几面偏向 96 / 2^32 一点点。本工具用 crypto.getRandomValues 配 Lemire 2019 拒绝采样,并且 Statistics 面板上有一个实时 Pearson χ² 直方图,把开关切回 Math.random、掷个几千次,p 值会肉眼可见地塌下去。

randomdicettrpgcsprng
阅读全文
/066 分钟阅读

你的子网计算器说 /31 有 0 个可用主机。RFC 3021 说有 2 个。

市面上的子网计算器普遍带着四个有据可查的错误:/31 报 0 个可用主机而不是 2 个(违反 RFC 3021)、/32 报 0 或 -1 而不是 1、IPv6 面板上印着一个并不存在的「广播地址」字段(RFC 4291 §2.1 明确写了 IPv6 没有广播)、IPv6 点对点链路还在推荐 /126 或 /64 而不是 RFC 6164 规定的 /127。这一个按 RFC 算,不按 1995 年的教材算。

devnetworkingcidripv4
阅读全文
/076 分钟阅读

Naegele 规则是 1812 年发表的。你用的预产期计算器还在只用它一个。

ACOG Committee Opinion 700 定义了 5 档「超声 vs LMP 差异」改期阈值(5 天 / 7 天 / 10 天 / 14 天 / 21 天)。Google 排名靠前的消费级预产期计算器只算 LMP + 280 天就完事。本工具两个都算,按阈值表选择,CRL 用 Robinson-Fleming 配 BMUS 1.037 修正。

lifepregnancyacogobstetrics
阅读全文
/085 分钟阅读

BMI 25 这条线对 23 亿人是错的:多数计算器没告诉你的 WHO 亚太阈值

WHO 2004 年 Asia-Pacific 专家共识把亚洲人群的超重起点划在 BMI 23、肥胖起点划在 27.5——不是全球版的 25 和 30——因为亚洲人在相同 BMI 下体脂率高 3-5 个百分点。Healthline、Mayo Clinic、CDC 的消费级计算器只显示全球阈值。一个 1.70 m / 66.5 kg 的成年人 BMI 是 23.0:按全球标准是『正常』,按真正适用于半个地球的亚太标准是『超重』。

生活健康bmiwho
阅读全文
/094 分钟阅读

WebAIM 说这个灰色通过 WCAG,APCA 说不行——两边都引 W3C

`#767676` 文字配白底,WCAG 2 比值 4.54:1,以 0.04 的差距过线 AA-Normal。同一对颜色 APCA Lc +71.6,低于 apca-w3 字号表中 16 px / 400 正文要求的 75。两个 W3C 背书的算法,同样的 hex 值,正文字号下结论相反——而所有主流消费级 contrast checker 只实现其中一套。

图像无障碍wcagapca
阅读全文
/105 分钟阅读

一个 emoji 算 7 个字?字数统计里被忽略的三层抽象

'👨‍👩‍👧'.length 是 7,Array.from 是 5,Twitter 算 2,grapheme cluster 算 1。讲清楚 JavaScript 里「一个字」的三层含义,以及为什么字数统计工具必须用 Intl.Segmenter。

unicodegraphemeemojijavascript
阅读全文
/116 分钟阅读

节假日要算还是要查:一个零依赖日期引擎里的三种取舍

美国节假日 22 行 spec 跑遍所有年份。英国要写 Easter 的 Anonymous Gregorian 算法。中国节假日是 2020-2030 的手工表。一个 date calculator 为什么用三套策略,并且不装一个 npm 包。

日期日历节假日农历
阅读全文
/124 分钟阅读

多数实际利率计算器在恶性通胀场景下偏 461 bps

Irving Fisher 1930 年给的恒等式是 r = (1+i)/(1+π) − 1。网上几乎所有消费级『real return』计算器跑的是一阶近似 r ≈ i − π。在 G7 通胀水平上,这个近似没问题;在 50% 名义 / 30% 通胀场景下,近似公式高估 461.5 个基点。交叉项 r·π 就是误差本身,随两个利率的乘积线性扩大。

金融通胀fishercpi
阅读全文
/136 分钟阅读

图片取色用 CIELAB,不要用 RGB:k-means 跑在哪个颜色空间决定了结果

在 RGB 空间跑 k-means 提取主色,输出永远是几个糊掉的棕色。换成 CIELAB,提出来的是设计师眼里那几个真正的颜色。原理一段话讲完,实现是一张 256 项的查表加一个 3×3 矩阵。

颜色k-meanscielab图像处理
阅读全文
/144 分钟阅读

Powerball '4 + Powerball' 中奖概率是 1/913,129——多数手算偏 64 倍

Powerball 官方 Prize Chart 把『4 个白球 + Powerball』tier 的中奖概率列为 1/913,129.18。hypergeometric 精确推导 = C(5,4)·C(64,1)/C(69,5) × 1/26 = 320/292,201,338。丢掉 C(64,1) 因子——也就是『5 中 4 再加红球』直觉的算法——得到 1/58,440,267,恰好偏 64 倍。这个组合学因子是市面消费级彩票计算器普遍踩的坑。

随机彩票概率hypergeometric
阅读全文
/155 分钟阅读

SHA-3 和 Keccak 不是同一个哈希:差在 padding 那一个字节

SHA3-256('') 和 Keccak-256('') 跑的是完全相同的置换,输出却完全不一样。原因是输入末尾被填上的那一个字节——0x06 还是 0x01——这也是 Ethereum 的 keccak256 永远不会等于 Node 的 crypto.createHash('sha3-256') 的根本原因。

密码学sha3keccak以太坊
阅读全文
/164 分钟阅读

表单模式必须双向:为什么多数 URL 编码器在遇到字面 `+` 时崩

WHATWG 的 x-www-form-urlencoded 序列化规则同一段话里写了两条映射:空格 → `+`,`+` → `%2B`。少了第二条,任何含有字面加号的输入都会在往返中静默损坏——C++ 这个语言名、带国家码的电话号、一个算术表达式。多数挂广告的在线 URL 编码器只实现了一半。

开发者urlpunycode编码
阅读全文
/176 分钟阅读

CSV 转 JSON 的六个翻车现场:大多数转换器都做错了

从 RFC 4180 引号转义到类型推断吃掉前导零,盘点 CSV ↔ JSON 转换里那些上线之后才会暴露的坑。

csvjsonndjsonrfc 4180
阅读全文
/185 分钟阅读

等额本息 vs 等额本金:30 年房贷里被隐藏的几万块差额

拆解房贷背后的 PMT 公式、两种还款方式、两种提前还款策略和「双周还款」的真相,用代码和真实数字算清楚 30 年里的总成本差距。

房贷等额本息等额本金提前还款
阅读全文
/196 分钟阅读

去除照片 EXIF 的正确姿势:剥离容器,而不是重新编码

「重新保存一遍」会把你的照片重新做一次有损压缩。沿 JPEG marker 与 PNG chunk 走一遍则不会动一个像素。一篇 EXIF / GPS 字节级的拆解,教你用对的方式清掉元数据。

exif元数据图片隐私jpeg
阅读全文
/205 分钟阅读

Cron 表达式生成器指南:5 字段 POSIX,从零开始

用可视化生成器学会读、写、调试 5 字段 POSIX cron 表达式,自动生成自然语言解释,预览下一组执行时间。

cron定时任务运维开发
阅读全文
/214 分钟阅读

JWT 解码器指南:如何安全地解析 JSON Web Token

了解 JWT 的工作原理、如何在浏览器中解码 JWT,以及在客户端处理令牌时常见的陷阱。

jwt安全web鉴权
阅读全文
/225 分钟阅读

密码生成器指南:2026 年的长度、熵与口令短语

学会按 2026 安全指南生成强密码与口令短语。长度优先、熵的数学、EFF 词库,以及那些悄悄削弱账户安全的小习惯。

安全密码随机web
阅读全文
/234 分钟阅读

正则表达式测试器使用指南:模式、标志与捕获组

在浏览器中安全地构建、调试和学习正则表达式。本文讲解 JS RegExp 语法、标志位、捕获组以及最常见的陷阱。

正则javascript开发web
阅读全文
/245 分钟阅读

UUID 生成器指南:2026 年的 v4、v7 与 v1

什么时候用 UUID v4,什么时候用 v7、v1?为什么 v7 终于成了新表主键的合理默认。位布局、真实场景配方,以及那些没人提醒你的坑。

uuid随机数据库web
阅读全文
/253 分钟阅读

深入理解 Web 开发中的随机性

探索伪随机数与真随机数的区别,了解在 Web 应用中何时使用哪种方案。

javascript随机数安全web开发
阅读全文