碎碎念
明明就是在循环体内定义的变量,为什么不初始化后再次使用?
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 |
|
一段手动从 Go 翻译到 JS 的代码,奇奇怪怪。
看 insertAdjacentElement 的第一眼:这啥玩意儿?看了图后:设计得真好
insertAdjacentElement(position, element)1
- 'beforebegin': Before the targetElement itself.
- 'afterbegin': Just inside the targetElement, before its first child.
- 'beforeend': Just inside the targetElement, after its last child.
- 'afterend': After the targetElement itself.
一堆的 before/begin/after/end 真的有够晕的。
但是直到看了图示的第一眼:简直了,世界上没有比这更清晰明了的解释了:
1 2 3 4 5 6 7 |
|
不要点进来!不要点进来!不要点进来! #NSFW
不要点开!不要点开!不要点开!
重要的事情说三遍!重要的事情说三遍!重要的事情说三遍!


听说脚臭(菠萝蜜)的果实煮了后吃起来像板栗🌰️
是真的,我刚刚吃了。

真的是真的,味道很像板栗🌰,粉粉糯糯,超爱吃。
哪个天才发现的啊😧?以前丢了好多、买了好多板栗吃。
YAML 太难了,GPT-5 日常 XXX 乱说
-
YAML 里面用 JSON 的时候,引号什么时候可以省略?
-
在 YAML(包括 JSON 风格写法)里,字符串并不总是要加引号,但能省略的前提是:
- 值不包含特殊字符(空格、冒号、# 等)
- 不会被 YAML 解析成其他类型(数字、布尔、null、时间等)
- 不会因为前导/尾随空格丢失信息
1 2 3 4 5
# ❌ 这样会报错 title: hello world # ✅ 必须加引号 title: "hello world" -
空格不用引号啊,XXX 乱说。
-
我明白你的意思,你是觉得 YAML 普通键值对里值里有空格其实也不用加引号,对吧?确实,我刚才说得过于保守了。YAML 的规范允许这种:
1title: hello world它会直接解析成字符串 "hello world",不会报错。因为 YAML 在 block style 下,冒号后的空格到行尾,都会被当成同一个标量(除非有 # 注释符或缩进表示多行)。
所以正确规则是:
-
空格本身不要求加引号,无论是 block style 还是 flow style:
1 2
title: hello world tags: [hello world, foo bar] -
必须加引号的情况是:
- 开头或结尾有空格(否则会被 YAML 去掉)
- 含有 #(否则会被当成注释)
- 想保留冒号 : 并且后面紧跟空格
- 想避免被 YAML 自动识别成布尔、null、数字、日期
-
链接:https://chatgpt.com/share/689bfce3-45f4-8008-b652-b67d9edef04f。
简单调了一组在浅色和深色背景下看起来都还不错的配色
拿来干啥?我也不知道,就是折腾了一下。
1 2 3 4 5 6 7 8 9 10 |
|
表格预览(“<colors></colors>”):
| 名字 | 代码 | 前景 | 背景 | ||
|---|---|---|---|---|---|
| 浅色 | 深色 | 浅色 | 深色 | ||
| coral | |
Text |
Text |
Text |
Text |
| salmon | |
Text |
Text |
Text |
Text |
| red | |
Text |
Text |
Text |
Text |
| hotpink | |
Text |
Text |
Text |
Text |
| deeppink | |
Text |
Text |
Text |
Text |
| palevioletred | |
Text |
Text |
Text |
Text |
| tomato | |
Text |
Text |
Text |
Text |
| darkorange | |
Text |
Text |
Text |
Text |
| orange | |
Text |
Text |
Text |
Text |
| yellow | |
Text |
Text |
Text |
Text |
| darkkhaki | |
Text |
Text |
Text |
Text |
| magenta | |
Text |
Text |
Text |
Text |
| purple | |
Text |
Text |
Text |
Text |
| slateblue | |
Text |
Text |
Text |
Text |
| mediumseagreen | |
Text |
Text |
Text |
Text |
| green | |
Text |
Text |
Text |
Text |
| yellowgreen | |
Text |
Text |
Text |
Text |
| olive | |
Text |
Text |
Text |
Text |
| darkseagreen | |
Text |
Text |
Text |
Text |
| lightseagreen | |
Text |
Text |
Text |
Text |
| teal | |
Text |
Text |
Text |
Text |
| cyan | |
Text |
Text |
Text |
Text |
| aqua | |
Text |
Text |
Text |
Text |
| cadetblue | |
Text |
Text |
Text |
Text |
| steelblue | |
Text |
Text |
Text |
Text |
| deepskyblue | |
Text |
Text |
Text |
Text |
| blue | |
Text |
Text |
Text |
Text |
| burlywood | |
Text |
Text |
Text |
Text |
| tan | |
Text |
Text |
Text |
Text |
| rosybrown | |
Text |
Text |
Text |
Text |
| sandybrown | |
Text |
Text |
Text |
Text |
| goldenrod | |
Text |
Text |
Text |
Text |
| darkgoldenrod | |
Text |
Text |
Text |
Text |
| peru | |
Text |
Text |
Text |
Text |
| chocolate | |
Text |
Text |
Text |
Text |
| white | |
Text |
Text |
Text |
Text |
| silver | |
Text |
Text |
Text |
Text |
| darkgray | |
Text |
Text |
Text |
Text |
| gray | |
Text |
Text |
Text |
Text |
| slategray | |
Text |
Text |
Text |
Text |
| black | |
Text |
Text |
Text |
Text |
我知道哪些是 leaf blocks,只是让你帮我找回记忆,不是让你乱答
模型仍然是主流的 GPT-4o,这模型也不差吧?你们天天 Vibe Coding 就靠这吗?


参考
同时换了家里的入网方式➕️路由器后,自制的硬盘柜风扇就不受控制了1。直观现象是:HomeKit 设备显示为离线。
由于当初没来得及给 ESP8266 写 OTA 升级程序,最终还是被迫把机箱拆开来用串口看了日志。日志卡在了连上 WiFi 并成功获取到 IPv4 的地方。好家伙,不知道怎么办了。尝试开启 Verbose 日志,发现是进一步卡在了获取 IPv6 的地方。由于新路由器我关了 IPv6,所以复用的 example 代码的网络连接函数直接宕机了…… 离谱。
都怪我代码写得太粗糙…… 想加个 OTA,官方的太复杂,而我自己包装的只适用于 ESP32 系列,遂罢。 ESP32 官方基于 C语言 写的 API 还是太简陋、太过于面向过程了。是不喜欢操作对象吗?一点都不 fancy。所以他们好像又拿 C++ 写了一遍,但是好像又只能给 Arduino 平台用。那我还不如玩手机。
一个小插曲: 一不小心一年没玩硬件了,竟然看着代码完全是懵的。用 minicom 和 picocom 竟然都无法正确显示串口内容。狗屁通说 ESP8266 的波特率是 74880。What?这什么鬼波特率,从来没过如此奇葩。虽然但是,前面两个还是不行。make 了一下原来才发现应该用 make monitor 来观察串口输出。虽然但是,它用的波特率真的是 74880。但是为什么别家的用不了?
OrbStack 无法将用 sshfs 挂载的文件系统显示在 Finder 上
以前还可以用 MacFuse + SSHFS 挂载 ext4 文件系统,好像自从 MacOS 某个版本强制开启 SIP(System Integration Protection,系统完整性保护)后,第三方开发者的内核驱动全部被干没了。一直很好奇果子自身用什么方式挂载 Linux 文件系统。
突然想到 OrbStack 在 Finder 侧栏能非常方便地显示其运行的虚拟机/容器的文件系统。所以能不能在 Linux 内 sshfs,然后随着 Linux 系统一同显示出来?
结论是:不能。
显示的是挂载前的目录(的内容)。新创建的文件也是到挂载前的目录内。取消挂载后可以在 Linux 内看到。
块编辑器换成 Blocknote 了,AI 风太重了
注意
这篇文章不是用块编辑器写的。
我觉得功能太简单了,无法写出复杂内容的页面。对于我自己来说,不如手写舒服。
集成此功能的主要目的是多样化支持(免费代码越写越死),后续还想支持 Typst: Compose papers faster。
总共花了两天时间:看文档,学 React 框架,最终差强人意地集成进来了,代码改动其实很少,主要时间在学习各种东西。
那还是说几个不好体验吧:
- LOGO 的这种蓝紫色风格太 AI 了。有一种 Vibe Coding 的感觉,有点不适。
- 很难自定义,文档看起来很多,其实可用内容很少。而且部分内容需升级成 Pro 才能看。
- 很多组件没有文档。比如
Image,得靠从文档结构反推用法。 - “
Image组件如何重写上传UI”不给看,难以自定义。
- 很多组件没有文档。比如
- 会允许一些不规范的内容存在:
- 允许段落内出来列表。见:BlockNote - Tables。HTML 规范是不允许
<p>内出现<ul>的。
- 允许段落内出来列表。见:BlockNote - Tables。HTML 规范是不允许
文档结构(Document Structure)没有明确的规范文档,只能从实践反推规范。从“文档结构”到“HTML”的渲染过程是我自己手写的。只能做到尽量兼容。
对表格的编辑体验比较满意,勉强算比较接近 Confluence 的编辑体验了。
测试用 Blocknote 编写的文章:《测试 Blocknote 块编辑器》。
测试 Blocknote 块编辑器
QQ 居然暴露了通过 QQ 号直接获取头像的接口
依稀记得很多年前就被禁止了,没想到在逛网站《关于建立blog的第一篇文章👻 - 李欲裕》的时候发现居然能通过 QQ 号直接获取头像:
我的头像:https://q.qlogo.cn/headimg_dl?dst_uin=191035066&spec=4
spec 参数看起来是用来配置图片大小,测试了一下 5 是高清图。
又可以加个 TODO 了,虽然不一定会做:
- 增加通过 QQ 号获取评论者头像并显示
但是链接中不能包含QQ号以防止隐私泄露。上述网站是可以直接看到 QQ 号码的,有点不注重隐私。
尝试给文章加个可视化编辑器,Editor.js 让我很难受
我一直不想给博客文章编辑器加“更好用的”/可视化编辑器的一大主要原因就是:真的不好用/不如手写。
今天尝试了一下 Editor.js,说说我遇到哪几个不能忍的小问题:
-
“Clean JSON Output” 并不 Clean
段落内带加粗的文本“aaa bbb ccc”实际生成的是:
1aaa <b>bbb</b> ccc你跟我说这叫 clean?

我以为是我的用法有问题,结果看了官方的例子也是如此。
-
行内格式化工具应用后无法取消
比如:给末尾的文本应用加粗/代码等格式后,后续所有的文本都会自动应用此格式且无法取消也无法再插入普通文本。
说起来有点空洞,看视频吧:
可能的解决办法是:输入一段普通文本,再把它取消为代码。太离谱的操作了。
难受,怎一个难受了得!写点东西手来来回回地切换来切换去,是要急死我。
太离谱了,看了《The WHATWG Blog — The Road to HTML 5: contentEditable》这篇文章:
-
contentEditable居然是 IE 发明的,而且版本是 5.5 (2000年的时候)。IE 居然这么前卫。 -
现代 HTML5 里面的等同物居然是通过逆向工程抄袭 IE 并成为规范的。
天杀的,微软作为 HTML 标准成员之一居然不舍得开放一下实现?不知道是该夸还是该骂。
想起刚刚往表格里面插入了一张图,然后准备试试网上找到的各种编辑器是否支持插图到表格。结果是:均不支持。
看起来我还是得继续手写。是不是呢、是不是呢!
表格也不支持拖动表头。
所以,看起来我要么是完全手写,要么就上一个“全功能的”编辑器。
为什么 Steam 总是一打开就卡死?
为什么为什么?你知道你旁边就是垃圾桶🗑️吗?

就连 BugReport 程序也能转菊花🌼️,你去死好吗?
体验了一下 bitchat,开箱即用
注册了个 X/Twitter 的免费开发者账号,还不知道要干什么
很早以前就想注册,但那时候不免费、不便宜,而且好像很容易被回收,所以一直搁置。
今天看到有人说 X 的 API 很好注册,于是我就又尝试了一下。居然……没有审核,秒过。

接下来是思考一下能做点儿啥?也许,能同步碎碎念和推特?
每个月能免费拥有:500次写入、100次读取。
把前司最后一件装备卸下了


坑爹茶杯头(CupHead)打得我奶痛
觉得普通模式实在太难了,所以我一直打的简单模式。这样也可以通关所有墨池岛/世界,并进入终章。
但是,直到进入终章的时候才告诉我没有拿到所有的灵魂契约(简单模式拿不到,前面只有方框,没有打勾✅️),害得我又得重新跑回去把所有 BOSS 重新打一遍……🤬🤬🤬🤬🤬。坑爹茶杯头毁我青春。
终于拿到了所有的灵魂契约,但是已经死亡了 1200+ 次。
好的,总算是打完了魔鬼。出现了专家模式,但是已经没有耐心再打了。



耐性恢复了,购买了 DLC 内容,把盐大厨也打通关了。

最搞笑的是,居然唯一一个评分为 A 的章节竟然是最后一节!
拖了一个多月,终于还是把车险给上了
从六月初到现在七月底,虽然隔一差二地微信➕电话轰炸,但是没有回过一条消息、没有接过一次电话。直到今天脱保第 4 天。
费用从 ¥3800+ 降到了 ¥3200+,看了一眼列出来的各种险种,好像没有奇怪的东西,然后就还是乖乖地交了钱。说起来还是有点担心车子的,一年两箱油就这样把车放在农村被大太阳晒着🥵。
交完之后去问了一下我姐她的车(比我晚买半年)费用是多少,好家伙,¥2900,还返现了 ¥200. 我是傻逼🐷️。

有时候就在想,车™️真是个纯消费品啊,无任何收益。每天贬值,还要每个月几百的保险费用、停车费用。
无印良品 ≠ MUJI无印良品
对象说最近购买的无印良品被子怎么这么便宜:

这不,我就刷到了一条视频:

还是中国商家牛逼啊。连我自己也差点忘记了,以前确实是知道这个事情的。😑
在深圳也能吃到重庆楼下的“池中吃老火锅🍲”了

连个注册®️商标都没有,一定很地道!![doge [doge]](/v3/dynamic/emojis/weixin/doge.png)
以及,买了一个小火锅灶:

简直就是灭蟑螂🪳神器

名字叫:呋虫胺。只管按照 1:100 的比例往地上喷一遍,待会儿等着捡尸就行了。无色、无味、无毒(对哺乳动物而言)。比传统常见的喷雾方式效果好很多!
除了“双马尾”外,蟑螂🪳居然还有另外一个名字:蜚蠊!
通关了《Stray(迷失猫猫🐱)》
孤帆远航⛵️(Far: Lone Sails)通关了
世界末日,只剩一个人、一辆车,不停地在沿途拾荒并作为燃料。引擎开关会自动断开,需要不断地开启。狗屁通:你看起来很忙吗?那就对了!终点是大海,车辆已经无法前行。但配有一处灯塔,也许是象征向远方呼救。
一开始玩不懂,觉得无聊。查了攻略,玩法没错,果然无聊。我不是特别喜欢这类游戏。节奏太慢了!而且剧情玩法略显简单。

快进来看女装大佬!
不会吧?不会吧!
Limbo(地狱边境)通关了
结局是个小女孩👧🏻️,感觉并不地狱……?
反而是剧情中有一些情节比较血腥,实在阴森。
看到了游戏信息:
姐姐命运不明,男孩进入了命运边境
Gris 通关了,很漂亮
BitTorrent 竟然还可以聊天?
如图所示1:

不过我没有很惊讶,毕竟 BitTorrent 是非常经典的 P2P 协议。
想起当年自己也写过小巧能用的 BitTorrent 客户端实现。
那还是在实现之前几年,我就粗略翻看过 BitTorrent 协议,仅一页,非常精练(见 bep_0003.rst_post)。当时觉得非常神奇,被无数人使用的 BT 软件协议竟然如此简单?我完全不敢相信。后来直到真的自己实现了一个2才发现,确实很简单。 也许是我的第一个完整的 UDP 应用。
本文的协议特指原始的 BitTorrent P2P 协议,不包含类似 DHT(分页式哈希表)增强协议。
这年头,硬盘价格也水涨船高了😕
2023 年 4 月份买第一张盘(希捷)的时候1才 ¥1580,大概 ¥100/TB。大概是随着最近大语言模型的需求,硬盘这涨得也太离谱了……


原来的价格只有大客户才能买到了。这是淘宝,而京东更贵。不买了。
所有数据目前只有独立一份备份,丢了就永久没了。
不好,被对象看到后愉愉给我买了一块😭️。






