碎碎念
天杀的,苹果说刘亦菲是我朋友
哈哈,没有标题党。不仅是刘亦菲,还有刘诗诗,刘德华,刘备,刘涛……
可我还是得骂你,某个刘姓的名字我输了几百遍了,你都记不住……
李彦宏:中国人有时候喜欢拿隐私换取便利。

如果服务器声称的 Content-Length 比实际发送的数据大,客户端会直接不显示这不全的数据,而是报错误。有点儿意思,我排查了半天以为是我代码哪里写错了。(数据大小和实际数据分开存的,数据损坏了,所以出现了不一致。)
1 2 3 4 5 6 7 8 |
|
以及:
1 2 |
|
视频压缩原来真的很慢很慢……
尝试把一个十年前的视频(47秒)用最慢的方式压缩了一下,耗时5️⃣0️⃣分钟!
从 46MB 压缩到 2.3MB,肉眼看起来质量不差。选用的格式仍然是我目前最爱的 AV1 编码,容器是 webm(第一次用)。
开了 64 个线程(随手写的,忘记系统是多少核了),内存占用仅 ~300MB,CPU 占用仅 ~250%.
1 2 3 4 5 6 |
|
过程真漫长啊!不得不想得十几年前为了把视频装进 MP4 的年代了,那时候看着“视频转换大师”那个进度条……实在不理解为什么会这么慢,当然,现在也不理解。我以为至少能跟上视频的速度的(1秒时间转换1秒视频进度
)。
看起来 Safari 对 .webm 的支持很差,放弃了,继续用 .mp4(但是编码方式仍然是 AV1)。
热知识,为什么有些 JPEG 图片的 宽x高 是反的?
就像下面这张图一样,一眼过去就知道:宽<高。

但是为什么用 exiftool 看的时候显示却怪怪的?
1 2 3 4 5 |
|
插曲:本来是准备拿当前页面上显示的图片为例子说明为什么图片显示正确/错误了。然后马上醒悟到:我马上就会改掉这个 bug/feature。这会导致文章不匹配。于是决定不写这段了。
结论:相机📷在为了拍照时更快速地存储图片,不管是横拍还是竖拍,都会以同样的数据存储。只是再加了一个 Orientation 元数据字段表示图片应该如何旋转后才能作为最终的展示图片。
结论2:经过一些转换工具转换后,可能会有一个 Rotation 元数据,意义和 Orientation 非常相似,也是表示“旋转”。
上面这张图的结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
其中的 CW 我猜是 ClockWise(顺时针) 的缩写,意即最终需要顺时针旋转 90°.
那么问题来了,我这张照片肉眼来说不是“挺正”的吗?
可能的 Orientation 值
| 值 | 名称 | 说明 | 显示方向 |
|---|---|---|---|
| 1 | Horizontal (normal) | 正常方向,无需旋转 | 🔼 顶部朝上 |
| 2 | Mirror horizontal | 水平翻转 | 🔁 左右颠倒 |
| 3 | Rotate 180 | 顺时针或逆时针旋转 180° | 🔽 顶部变底部 |
| 4 | Mirror vertical | 垂直翻转 | ↕️ 上下颠倒 |
| 5 | Mirror horizontal and rotate 270 CW | 水平翻转后顺时针旋转 270°(等于左旋90°+镜像) | ↙️ |
| 6 | Rotate 90 CW | 顺时针旋转 90° | ▶️ |
| 7 | Mirror horizontal and rotate 90 CW | 水平翻转后顺时针旋转 90° | ↗️ |
| 8 | Rotate 270 CW | 顺时针旋转 270°(等于逆时针 90°) | ◀️ |
看起来 Orientation 和 Rotation 有点费解🫤:
1 2 3 4 5 6 |
|
同一张图片一个是顺时针旋转90度,一个是顺时针旋转270度(逆时针旋转90度)。这两个不是上下颠倒了吗?
吓尿了简直:
- EXIF orientation handling is a ghetto | Dave Perrett
- recurser/exif-orientation-examples: Example images for the various EXIF orientation flags, in both landscape and portrait orientation.
尝试把设置 image-orientation: none1 后,图片向左旋转了 90°;所以大概可以暂时不管 Rotation 的值?🤔
鉴于浏览器能正常渲染并设置尺寸的图片。说明 img.natureWidth2 和 img.natureHeight 很可靠。那么,就让浏览器来帮这个忙了。 参考:/admin/statics/editor.js。但是要注意:这个单位是 CSS 像素。
我可太喜欢火狐的这个版本的外观了
超级喜欢,看起来非常扁平化、干净、紧凑。特别是全屏模式是,更加干净清爽。
这也是我第一次接受标签栏在侧边,竟然异常顺手。

周报(2025-04-15)
✍️ 给 Apple Notes 增加高级编辑功能
苹果手机和电脑均自带且自动同步的笔记应用 Notes,缺乏一些高级/现代的编辑功能,特别是 Markdown 支持。这里有个插件扩展了 Notes 的功能,增加了格式条、Markdown、斜线命令双向链接🔗等功能。
Apple Notes 居然还能支持插件,这么封闭的系统竟然如此“开放”?太让我意外了😯。
这款插件基础功能是免费的,但是未开源。隐私🔏问题可能需要考虑一下。
SMTP 被推荐使用 587 而不是 465 就很奇怪
465端口默认就强制 TLS,而587是选择性开启。我的观点:
- 对于现代社会来说,不支持 TLS 的客户端我觉得应该彻底抛弃。
- 选择性开启 TLS 显然增加了实现复杂度。
- 为了支持旧客户端,还不如继续使用早期的 25 号端口。
- 25 号端口可以发送垃圾邮件,其它端口就不行?
以下是 ChatGPT 的回答。
SMTP 的 465 和 587 端口都是用于发送邮件的,但它们的加密方式不同,适用场景也稍有差异:
🔒 465 端口(SMTPS)——"隐式 SSL/TLS"
- 连接时就加密:一建立连接就是 TLS,加密是强制的。
- 用的是旧的方式:最早由 Netscape 推出(非标准),后来被弃用又重新推荐。
- 比较适合一些老的邮件客户端。
- 在配置里你会看到叫
smtps://或SMTP over SSL。
✅ 适合: 当你明确要用 SSL,并且客户端/服务器都支持 465。
🛡️ 587 端口(SMTP+STARTTLS)——"显式加密"
- 默认是普通连接,之后通过
STARTTLS升级为加密。 - 是现在的 官方推荐端口,符合 RFC 6409。
- 几乎所有现代邮件服务(包括 Gmail、Outlook)都支持。
- 更安全灵活,适合客户端发信和用户认证发送。
✅ 适合: 大多数情况,包括发邮件、登录邮箱账号等,推荐使用 587。
📌 对比总结:
| 特性 | 465 (SMTPS) | 587 (SMTP+STARTTLS) |
|---|---|---|
| 加密方式 | 隐式 TLS(连接时立即加密) | 显式 TLS(用 STARTTLS) |
| 标准性 | 非标准,曾被弃用 | 标准(RFC 6409) |
| 兼容性 | 有些服务不支持 | 现代服务广泛支持 |
| 推荐程度 | 不再首选 | ✅ 推荐用于客户端发信 |
如果你正在写代码或设置发信程序,推荐优先用 587 + STARTTLS。
如果某些客户端或服务器只支持 465,那就用 465 + SSL。
我的建议是不要把小整数存为对象
我觉得整数就已经足够节约内存了,把小整数存为对象肯定更占内存。建议 Python 的优化朝这方面发展。1

周报
任意域名解析:nip.io - wildcard DNS for any IP Address1
这个服务能把任何以 IP 地址为记录名的域名动态解析到对应的 IP 地址,不需要先添加记录。方便为任何 IP 地址设置域名。
内存结构展示2
8️⃣个字节的内存可以存放哪些类型的数据?下图是一些示例。对于刚接触计算机💻、正在了解内存的人来说非常有帮助。

Linux 二进制文件 ELF 格式介绍3
别的不说,我最讨厌 C 语言的一点就是:结构体成员名全部有相同的现在说来没任何用处的无聊前缀。
比如图中的:e_, p_, sh_。
C 语言以前确实是我的最喜欢的语言,后来喜欢 C++,现在是坚定的 Go 派。

域名 whois 查询服务
https://w.is/,网址很短,数据显示还不错。不过好像没有 API 服务。
存储设备及其延迟45
文章中用动画示例清晰地调解了常用读写设备及其延迟特性。

沁恒对于CH32V003升级的芯片CH570,带2.4G无线和蓝牙6
CH32V003是我玩过的第一款RISC-V芯片,之前做智能家居的时候用于替代STC51的。功能很现代,价格极其便宜。
本来还有点不舍51,用了CH32才发现那叫一个爽:比如,可以用上最先进的编译器,而不是51那各种又破又不规范的编译器套件。再也不想碰。甚至还写了一个CH32V003的模板项目。
新上线的这个CH570拥有了2.4G无线🛜功能,要是早点出来就好了。我就不用给 nRF24L01/Ci24R1 写驱动程序了(尽管看起来写得非常漂亮🤩)。

原来,微信视频号不仅没有外链,还有加密🔐
之前在日记2024-03-09.md里面就发现微信的视频号无法外部分享,今天看到别人也提到了这个问题。
视频号很早之前是有链接的,后来为防搬运做了DRM,隐藏链接外加内容加密,隐藏链接经历了几次调整后现在不让用默认浏览器打开,抓包拿到的stodownload.mp4已加密没法播放,废掉了大部分下载器和嗅探工具。不过可能出于性能考虑,视频号只加密了文件头,不像C某TV丧心病狂对ts流做了帧加密78
听起来加密方式很简单,大概和以前的迅雷看看一样9。
以及一个视频嗅探器:putyy/res-downloader: 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载!。
心血来潮,仅用数百行代码实现了我日常高频使用的“RSS 订阅功能1”,用于替换用了近🔟年之久的 Feedly。我的使用习惯很简单:看完最新文章,随手就关闭。从不体验其它功能。
为什么要自己实现?为了管理/自定义方便。
只需要像下面这样在 Markdown 里面一行一个添加订阅源即可自动渲染:
1 2 3 4 |
|
“已读/未读”使用浏览器都有的 a:visited {} 来实现,且自动跨平台同步。
所以,我有时候纳闷,像 feedly 这种替代 Google Reader 的产品如何盈利,护城河在哪里?
一个错误的想法:由于博客现在支持用户系统了,于是想把订阅的每个网站的文章在我的系统内自动创建一篇对应的文章,对于实现来说,是一件非常简单又取巧的事。后来一想,这也太不尊重版权保护2了,遂放弃。
Feedly有哪些不好?
至少目前是我觉得我用得不太爽的地方:
- 代码不能滚动,被强制折行。 作为一个程序员,肯定关注了很多技术博客,难免会有代码在文章中,自动折行的代码看起来非常难受,更别说是小屏幕上了。
- 表格也没有边框,不能滚动。 复杂内容的表格显示简直一团糟。
用CSS很简单就能控制的设置,但是就是没有自定义。
放弃使用霞鹜文楷字体了
因为看起来特别舒服的原因使用了霞鹜文楷一年多?但是最近决定放弃,几个原因:
- 粗体显示很普通,不明显;
- 和英文字体显示起来不匀称;
- 字体太大,加载慢。
第一次见到 HTTP 103 状态码:103 Early Hints1。
网站:https://exiftool.lucasgelfond.online/。
以及,为什么有人的 favicon 有 2.4M 这么大……![狗头 [狗头]](/v3/dynamic/emojis/weixin/doge.png)
周报
Maple Mono 字体
新发布的一款看起来很漂亮的等宽字体,中英文严格 2:1. 其它特性:无限字重、智能连字等。
可惜我不怎么用斜体,它的斜体还是很好看的。
🔨 HammerSpoon
一款可以用 Lua 来编写的脚本引擎,用于控制 MacOS。
回到深圳了,看了下时光机,发现已经离开了近半年……

一直搞不清楚 “Restart” 和 “Reboot” 有什么区别,反正我就是 sudo reboot 一把梭:
┌─────────────────┤ Pending kernel upgrade ├──────────────────┐
│ │
│ Newer kernel available │
│ │
│ The currently running kernel version is 5.15.0-89-generic │
│ which is not the expected kernel version 5.15.0-134-generic.│
│ │
│ Restarting the system to load the new kernel will not be │
│ handled automatically, so you should consider rebooting. │
│ │
│ <Ok> │
│ │
└─────────────────────────────────────────────────────────────┘
┌──────────────┤ Outdated processor microcode ├───────────────┐
│ │
│ Processor microcode update │
│ │
│ The currently running processor microcode revision is │
│ 0x00f8 which is not the expected microcode revision 0x00fe. │
│ │
│ Restarting the system to load the new processor microcode │
│ will not be handled automatically, so you should consider │
│ rebooting. │
│ │
│ <Ok> │
│ │
└─────────────────────────────────────────────────────────────┘
所以 JS 全称的标准写法应该是:JavaScript ? ![狗头 [狗头]](/v3/dynamic/emojis/weixin/doge.png)

一年两箱油终于准备出门了

远程启动记录
为了防止启动小电瓶亏电,不定期启动一下1。
title: 给车充电
dates:
start: 2025-04-14
remind:
every: [1w]
但是该车并不能看到电瓶的当前电量/电压🔋,只能看到动力电池⚡️电量。所以,只能盲目开个10分钟/20分钟空调,以期待其能给小电瓶充充电。
注意
前面有两次充电记录没记录。
注意
五月到七月之间爸爸回过家,手动充过电,暂时没记录。
| 📅日期 | 动力电池电量🔋 | 剩余续航里程🧭 |
|---|---|---|
| 2025-04-14 | 92% | 388km |
| 2025-04-22 | 91% | 369km |
| 2025-05-01 | 88% | 372km |
| 2025-05-15 | 87% | 356km |
| 2025-07-02 | 97% | 407km |
| 2025-07-07 | 97% | 398km |
| 2025-07-14 | 94% | 395km |
| 2025-08-04 | 86% | 365km |
| 2025-08-11 | 85% | 357km |
| 2025-08-25 | 79% | 333km |
| 2025-09-01 | 77% | 325km |
| 2025-09-12 | 76% | 319km |
| 2025-09-23 | 74% | 310km |
| 2025-10-13 | 69% | 278km |
| 2025-10-27 | 65% | 274km |
| 2025-11-03 | 64% | 264km |
| 2025-11-11 | 60% | 254km |
| 2025-11-17 | 57% | 240km |
| 2025-11-24 | 54% | 227km |
| 2025-12-01 | 51% | 213km |
| 2025-12-08 | 48% | 201km |
| 2025-12-15 | 44% | 186km |
| 2025-12-22 | 39% | 163km |
| 2026-01-04 | 33% | 121km |
| 2026-01-13 | 27% | 113km |
| 2026-01-21 | 20% | 84km |
| 2026-01-26 | 13% | 55km |
2026-02-01 找亲戚把电充满了。
摄影器材➕2,拍出好作品了嘛?还没有呢……

开箱视频:
Cloudflare 果然是活菩萨,出口带宽完全免费🆓!
真零出口费用!这要放在国内,厂家要死光吧?
前 10GB 存储免费!
马上就动手用起来!

相关链接
这玩意儿可用性也太低了😅😅😅,一会儿 500,一会儿 502. 还好不是主力。

爆改了一晚上代码,把博客的文章资源文件系统用 SQLite3 数据库实现了(即把原来在磁盘的文件丢进数据库里面了),几千个文件,数据库最终几百兆。没有缓存,感觉速度还行(并发读,极少写)。
虽然其它数据库几乎都不推荐把太大的内容丢字段里面,会比较严重地影响性能。但是 SQLite 从多方了解到是可以的且是官方比较推荐的做法(有很多相关的 API 可用,并且官方说一些基准测试下使用 SQLite 读写文件比直接操作文件系统还快 30%+,离谱)。
所以,我就动手重构了……
另外一个优点是,现在博客正常运行只需要3️⃣个文件了:
- 配置文件 内容极少,大部分可有可无
- 文章数据库 保存文章、评论、用户系统等主要内容
- 文件数据库 用于保存文章/评论的附件,比如图片等
这样一来维护和备份就更加方便了。
上线体验了几分钟,感觉没有明显的速度变化。
继续观察👀。
一年一度的大爷大妈热爱的环节又到了
:

显然,我的手机还是熬不到今年新品发布会。
为了去迎接 npy 的到来,太开心,换干净的裤子👖,结果手机从裤兜倒出来砸在地上,一股子玻璃破碎的声音,可惜了我才换4️⃣个月的屏幕💔:


屏幕下面一部分几乎无法正常使用了,上面倒是完全无问题。这我倒是很佩服苹果手机的质量,坏成这样了还能使用。
在地图上随便找了一家县城的手机维修店,店主向供货商咨询了两分钟后给我开了两个价:
- 有 100/200 多的非官方屏
- 也有 400 多的官方拆解屏
为了保持手感,最终选择了官方拆解屏,虽然对于一个用了近7️⃣年的手机来说略贵,但还是忍痛换下了。不过,效果很好,旧屏很新,手感几乎无异。
心想,要是再坏,我就换 100 块的屏幕了,到时候坏了随便换。
关于日历、生日和纪念日的几个问题
如果今天是1月31号,约定一个月后的今天为期。那么一个月的今天该是几号呢?
狗屁通的回答:
如果今天是 1 月 31 号,一个月后的“今天”通常指 同一天的下一个月,但如果下个月没有这一天,就取该月的最后一天。
• 2 月通常只有 28 天(闰年 29 天),所以 2 月没有 31 号。
• 因此,一个月后的今天应该是 2 月的最后一天:
• 平年(28 天)→ 2 月 28 日
• 闰年(29 天)→ 2 月 29 日
例如:
• 2025 年 1 月 31 日 → 2025 年 2 月 28 日(平年)
• 2024 年 1 月 31 日 → 2024 年 2 月 29 日(闰年)
如果你是按照 30 天计算一个月,那会是 3 月 2 日,但通常自然语言的“一个月后”是按日历月计算。
如果某人生日是 2.29,他如何过生日?
狗屁通的回答:
如果某人的生日是 2 月 29 日,但遇到 平年(没有 2 月 29 日) 时,他通常有以下几种过生日的方式:
1. 2 月 28 日过生日(最常见)
• 逻辑:2 月 29 日的“前一天”是 2 月 28 日,因此许多人选择在 2 月 28 日庆祝。
• 例如:2001、2005、2023 年等平年,很多 2.29 的人会在 2.28 庆祝。
2. 3 月 1 日过生日
• 逻辑:2 月 29 日的“次日”是 3 月 1 日,因此有些人选择这天庆祝。
• 例如:如果出生证明上写的是“满 X 岁”,那通常到 3 月 1 日才真正“满年”。
3. 只有闰年才正式庆祝(4 年一次)
• 逻辑:严格按照 2 月 29 日,只在闰年庆祝大生日,平年时就象征性地选一天或者干脆不办。
• 例如:有人会在 2024 年大办生日,之后等到 2028 年再正式庆祝一次。
4. 根据心情选择
• 一些人会根据情况随意选择 2.28 或 3.1,甚至直接“生日周”庆祝。
以前用的充电桩都是非常粗的那种,今天用的理想很细、但竟然也可以达到 60kW 的功率。看起来理想技术还是不错的。


一年半,4 万公里,多不多?

逗狗咬,讨人嫌!
在 #越南 买当地电话卡的时候,被告知其 SIM 卡不支持“个人热点(Hot Spot)”功能。似信非信买了一张,果然在 iPhone 上无法开启 #个人热点(表现为:根本没有这个功能/选项)。
我一度非常疑惑,从我了解的技术上来说,运营商提供的 SIM 卡没有任何能限制个人热点无法使用的可能,因为这个功能是纯手机网络栈(软件层面)提供的能力,与网络硬件、甚至是接入层(SIM)无任何关联。
我更愿意认为这是运营商的垄断行为迫使 iPhone 遵守合规而不允许使用,也即:纯政策行为。
查了一下 iPhone 官方的运营商网络支持情况,越南电信(Viettel)是支持个人热点的,只是“使用个人热点和解锁功能可能会产生额外费用或需要满足额外要求。请联系运营商以了解更多信息。”。
神奇的现象:我发现我自己没插越南手机卡的 iPhone 手机上也无法开启热点(无此选项)。
所以有没有大佬了解相关知识?
相关问题:


