博客 · 第 11 页
关于工程、设计与一些随手记录。
把孔版套印的约束翻译成设计令牌
这个站点的视觉方向是孔版套印。我真正做的事是把印刷的物理限制写成令牌,于是换观感只动了两个文件,组件一行没改。
进制与单位换算:唯一非线性的是温度
2 到 36 任意进制互转要用 BigInt 兜住精度;十类单位换算中前九类是线性比例,唯独温度是仿射变换,写成一个倍率就一定会错。
颜色与对比度:相对亮度不是通道平均值
三种记法互转只是入口,真正容易写错的是 WCAG 对比度:先做 gamma 还原再加权求和。以及「这上面该用黑字还是白字」为什么不能看亮度是否大于 128。
纯静态站的全文搜索:构建期索引,运行时零后端
静态站做搜索不一定非得接 Algolia。把索引放到构建期生成,搜索完全跑在浏览器里,代价只有构建慢几秒。
哈希与校验和:为什么 CRC32 和 MD5 得自己写
浏览器只在安全上下文提供 SHA 系列,CRC32 与 MD5 不在 Web Crypto 里。顺带解决大文件不该一次读进内存,以及校验值不该靠人眼比对。
正则测试:命中、分组与替换预览,以及零宽匹配的坑
自己写一个正则测试页要处理三件事:把命中位置和分组讲清楚、把替换结果先预览出来、以及别让零宽匹配把页面卡死。
