博文

再见了,OCSP

2024/10/29,Microsoft Root Program 修改了[一个不起眼的文档](https://learn.microsoft.com/en-us/security/trusted-root/program-requirements) 中不起眼的一段,为持续一年多的 OCSP 告别仪式画上了一个句号,结束了 OCSP 大刀阔斧地向 CRL 举起大刀阔斧的时代。 让我们在这里纪念它,最后的 OCSP 强制要求([时光机](https://web.archive.org/web/20241002221253/https://learn.microsoft.com/en-us/security/trusted-root/program-requirements)),它代表了公开加密基础设施一次长达 20 年的探索,也记录了人类网络基建突飞猛进的 20 年对技术的反向改变: ``` All end-entity certificates must contain an AIA extension with a valid OCSP URL. These certificates may also contain a CDP extension that contains a valid CRL URL. All other certificate types must contain either an AIA extension with an OCSP URL or a CDP extension with a valid CRL URL. ``` ## 什么是 或许我不需要解释什么是 OCSP(Online Certificate Status Protocol,在线证书状态协议),因为国内开发者早已深受其害:几乎每个 Nginx 优化教程都在教你打开 OCSP Stapling。 正如我们所知,OCSP 本质是一个 HTTP 服务,用户在每次遇到证书时将证书序列号明文发给 CA 的服务器,CA 再明文返回一个是否可用的状态。 这比传统的 CRL(Certificate Revocation List,证书吊销列表) 可酷多了:用户不再需要每次上网就苦哈哈地用 56K modem 从 **每个** CA 那里下个数 M 的文件(其中包含这个

一次关于 smokeping TCPPing 效率过低的检查

最近给家里的古代实例 smokeping 一次加了 几十 个 TCPPing target 来全面探测出国网络质量,但是发现没有数据生成。 探索日志易得大量: ```bash TCPPing: <censored>: timeout (11 s) reached, killing the probe. ``` 可以猜到,问题出自配置的 `timeout = 1` + `pings = 10`。 自行运行 TCPPing 对应的脚本可知,其每次 ping 所需时间约为 15 秒。 但是对于一个延迟不过 100ms 的目标而言为何需要比默认已经非常过分的 10 秒更高的超时时间呢? ## 无脑处理 在对 smokeping 用的 tcpping 进行 `bash -x` 后不难发现,卡是卡在了对 `tcptraceroute` 的调用,这是一个古代程序,因为现代 `traceroute` 已经支持 TCP 了。 对于古代物品的第一维修方式,自然应当是考虑进行更新。 于是我在 [这里](https://github.com/deajan/tcpping/blob/master/tcpping) 找到了支持新版 `traceroute` 的兼容 smokeping 参数的脚本并进行替换。 每次 ping 所需时间成功降低到 5s,看起来似乎不错,但是对于较大规模的 target 来说仍然难以忍受。 对于恰好卡在线上的规模,可能会见到: ``` TCPPing: WARNING: smokeping took 120.916475057602 seconds to complete 1 round of polling. It should complete polling in 120 seconds. You may have unresponsive devices in your setup. ``` 通过增加并发数可以缓解,但那也太不优雅了。 ## 探索 正如前文所说,卡的根源对 `tcptraceroute` / `traceroute` 的调用,对这两个程序手动调用时,我的随手测试用例 `223.5.5.5` `192.168.0.1` 是非常快的,而自己 VPS 的测试则非常缓慢。 而比较其输出,可以发现,较快的测试

记录一个 Directory Opus 反复抢夺焦点问题

最近很摸鱼,计划中的讲解 `RNG` 和 `sch_cake` 的博文咕了好久又不想碰了,于是记录下之前让我很恼火的一件事。 ### 症状 doups 反复抢夺前台焦点,导致输入状态不停被打断。 ### 检查过程 通过 procexp 守株待兔后不难发现,抢夺焦点的罪魁祸首是 `msrdc`,其父进程是 `WSLg.exe`。 不难猜出,原因是 dopus 的树视图中有 WSL 项,因此反复试图列出 WSL 内容缓存,然后拉起 WSL 进而拉起 WSLg。 ### 解决方案 关闭 dopus 中的 WSL。 ___ 好,今年份的博文就发到这里 :)

一种 bash script 进行错误处理的思路备忘

在 bash 脚本中使用 `set -e` 是很常见的操作了,这个命令按照 POSIX 标准有下面的作用: -e When this option is on, when any command fails (for any of the reasons listed in Section 2.8.1, Consequences of Shell Errors or by returning an exit status greater than zero), the shell immediately shall exit, as if by executing the exit special built-in utility with no arguments, with the following exceptions: 1. The failure of any individual command in a multi- command pipeline shall not cause the shell to exit. Only the failure of the pipeline itself shall be considered. 2. The -e setting shall be ignored when executing the compound list following the while, until, if, or elif reserved word, a pipeline beginning with the ! reserved word, or any command of an AND-OR list other than the last. 3. If the exit status of a compound command other than a subshell command was the result of a failure

又懒又穷该选用什么 DB 呢?

近期因为 [Arc](https://t.me/arc_null) 先生推荐了 **[zitadel](https://github.com/zitadel/zitadel)**,然后我因为他说到 pgsql 支持有问题,突然想起来这个问题。 当然对于标题的问题,结论肯定是很明显的 pqsql,我们有没有一个合适的数据来证明这一点呢。 考虑到穷,所以没有太多核的机器,考虑到懒,所以一定要即开即用不做任何多余的配置,这就是下面的测试原则。 ## 太长不看 先看下面方法论,确保理解场景。 越大越好: ``` MySQL 8.0.32 QPS 8979.31 MariaDB 10.5.22 QPS 25788.07 (287% mysql) PostgreSQL 15.3 QPS 35383.99 (394% mysql) ``` 越小越好(此数字由 人工 智能采样估测): | DB | usr time% | sys time% | io time% | ram(incl. buffer) | | --- | --- | --- | --- | --- | | MySQL | 12 | 5 | 30 | 970M | | MariaDB | 27 | 14 | 18 | 920M | | Postgre | 30 | 25 | 15 | 710M | 如何理解呢?如果不能理解的话不如加入 pgsql 夸夸人。 ## 方法论 参考 [这篇 MariaDB 声称自己吊打 MySQL 的文章](https://mariadb.com/resources/blog/benchmark-mariadb-vs-mysql-on-commodity-cloud-hardware/),但我选择了默认参数配置的 sysbench oltp_read_write 脚本,单表 2000000 条,4 线程,20 分钟测试。 具体 workload 为,每 transaction 包含下面的内容(使用的 between 区间为 100): - 10 个单点 SELECT `SELECT c FROM t WHERE id=?` - 1 个区间 SELECT `SELECT c FROM t WHERE id BETWEEN ? AND ?` - 1 个区间求和 `SE

一些手机闪光灯及一些电子垃圾的照明质量测试记录

## 引言 深夜睡不着想 /remake ,突然就想到了手机的闪光灯问题:之前深受索尼的垃圾手电筒之害晚上起夜永远找不到卫生纸,就测了下手上还能开机而且有闪光灯的手机的闪光灯的 CRI。 测试使用一台国产的光谱照度计进行(因为买不起进口的): ![](https://vip2.loli.io/2022/06/25/4PGpTIeJ5hXqLRN.jpg) 手机被放置在由南旗盒子、kindle、路过的铁盒子堆成的测试台上,灯光对准测试仪的传感器,测试期间关闭所有灯光,多次测试取高值。 ## 测试记录 ### 常规组 常规组选择了一些普通、平凡、无趣的智能手机来进行测试。 组中有三个苹果,均手动调至最大亮度。 [TL;DR](#常规组结果) #### iPhone 13 mini ![](https://vip2.loli.io/2022/06/25/lqkOE9xfS2VmdUa.jpg) 数值很好看,光谱也不像普通的 LED,可以被称为全光谱 LED 拿去做相机的补光灯了。 #### Sony Xperia 5 II ![](https://vip2.loli.io/2022/06/25/3gqePQwTLz7RSkA.jpg) 亮度低到离谱,光谱也不好看。索尼罪大滔天搞到百姓怨声载道.jpg #### 万普拉斯 8t ![](https://vip2.loli.io/2022/06/25/XgP8Ar9Nwz1ZmGo.jpg) 亮度大概够照亮你的美了。 #### Redmi K40 ![](https://vip2.loli.io/2022/06/26/LPdjoqaFDuvzRH4.jpg) 同上,不过这个光谱比上面的 1+8t 好一些。 #### 鬼族 16th ![](https://vip2.loli.io/2022/06/25/eTLP9fSbcUsjAaE.jpg) 今日珠海小厂,亮度差些,但是 CRI 还是可以的。 P.S. with MoKee,忘了 bugme 有没有调亮度了,我估计是有的。 #### iPhone SE2 ![](https://vip2.loli.io/2022/06/25/iGXoRdQf3OcS8ga.jpg) 亮度是真的强,显色是真的烂。 本机为正常途径(指 W

在 VPS 上使用 Cloudflare Warp 提升媒体解锁能力 & 路由解决办法

## 为什么要用 Warp play余额充多了没处花买了warp+ ,warp 可以有效拯救服务器的媒体解锁能力,妈妈再也不怕咕噜咕噜(非洲方言:指咕鸽)把我给 `Region: CN` 了 而且还能顺便处理掉咕噜咕噜天天弹点选消失型验证码让我搜一次点一年的优异体验 (和群友吹水顺手测了下梯子落地鸡的 [RegionRestrictionCheck](https://github.com/lmc999/RegionRestrictionCheck),看到花了不大价钱买的 Youtube Premium 不能用,感觉像吃了屎一样,正好从记忆的角落翻出来了 warp 这个东西 想起来跟着龟龟白嫖了warp+的流量 ,就顺手试试) ## 效果预览 ![](https://vip2.loli.io/2021/07/31/y9NU1VZEQ5ljie4.png) ## 安装 Wireguard 因为 warp 使用 wireguard 协议,所以我们需要安装 wg 的客服合一p2p端软件 [Instruction 参见](https://www.wireguard.com/install/) rh 系都进 epel 了,除了 rh 系都进官方源了,我真想不出还有什么再在这件事上多费口舌的必要 ![算了](https://vip1.loli.io/2021/07/31/uNeLJ5o7zVk4ajE.png) ## 其他系统需求 本文基于 Debian 10,所使用的 `ipproto`这个 selector 在 18 年底才 [被引入 iproute2](https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=b2e8bf158460568ec5b48cba69f657f95891c901) ,Debian 的速度当然是还算快的,但是对于[19年11月 前的 RHEL](https://bugzilla.redhat.com/show_bug.cgi?id=1678111) / [200428 前的 CentOS](https://git.centos.org/rpms/iproute/c/72258cdf3818ca898511fda04947914f6a11be