杂谈 - blog, KDE, 与 markdownit

最近比较忙, 暂时没有想到要写点什么, 那就先水一篇吧.

博客

在上一篇文章里, 我简单说了一下我的新的前端架构, 从目前来看的话, 进行的还是比较顺利的. 但是短期内上线还是不太可能, 毕竟 AI 给我的预期工作量在 4-7 周, 单位是 "人/日" (其实就是 20-35 人/日). 那么这个数字是什么意思呢? 大致就是说一个人全职写这个的话, 4-7 周可以完工.

其实这还是一个乐观值, 因为我自己写代码不需要写文档 (说什么呢, 不要污蔑人, 什么叫懒, 我只是相信 "代码本身就是最好的文档" 而已), 没有 CI/CD 开销 (我已经写好了现成的), 无须重新设计视觉呈现 (不改样式, 直接照搬过来, 设计苦手desu).

一想到这还是一个只有一万行代码的小项目, 重构起来就这么麻烦, 很难想象, 对于那些上百万行的大型项目要怎么进行重构. 都说重构是个好东西, 但是实际上又没有多少人愿意去重构, 原因可能就是因为代价有点过于的大了.

代码能跑就不要动

当然, 代码量也代表不了什么, 毕竟我写的全是简单的 CRUD (增删改查). 对于底层开发 (比如说 Linux 内核), 1人/日 能有三位数的代码量已经算是 "突破性进展" 了 (有点夸张了). 相比之下, 我这些东西 AI 可能跑两圈就解决了.

但是我个人并不是很喜欢 Vibe Coding (感觉我已经是老古董了, 布药优化我~), 我之所以写代码就是因为它很有趣, 但是用 AI 代劳的话, 这种 "乐趣" 就染上了 "班味", 像是玩不成 KPI 就拿不到这个月的生活费一样. (毕竟某个家伙写一个简单的图片上传接口, 写了半个月还没有写完, 注意这不是夸张修辞, 是物理意义上的)

有时候甚至因为写代码, 导致连 OSU! 都忘记打了. 最主要的是, 我可以全程跟着我的兴趣走, 想写的部分就多参考一下, 怎么可以写的更加的优雅, 不想写的部分直接调用第三方库随便糊弄一下就行. 反正我写的东西又不需要通过什么硬性的审查.

(说起来, 我的 SonarQube 代码质量检查现在都还没过, 我也不知道为什么, 他说我的测试覆盖率没有超过 80%, 但是我本地测试 83% 的行都被覆盖了. 改天用 AI 糊弄一下吧)

深不可测

扯远了, 争取在博客上线二周年之前写完吧, 如果那个时候没有写完的话... 那就没有写完吧, 算我咕了, 咕~. 其实我也忘记了是什么时候上线的, 但是去翻了一下很久之前的 hexo 博客的东西, 看到最早的文件创建日期是 7月20, 那么就直接就把日期定在 7月21 吧. 作为一个鼓捣 Linux 的爱好者, 一天的时间还上线不了一个网站不成.

鼓捣 KDE

Religious: Arch Wiki

说到 Linux, 还是挺伤心的, 我的 "KDE 应用程序启动器" (就是叫 Plasma/Kickoff 的那个东西) 最近出了点问题, 他相当于 Windows 上的 "开始菜单", 那个点击 Windows 键会弹出来的东西.

但是他现在在我的桌面环境中出现了一点问题, 在某些情况下他不会出现, 即使点击了也没有反应. 我原本因为是因为突然断电导致的文件损坏, 于是尝试重新安装 + 清理配置文件, 鼓捣了一圈发现还是没有解决. 索性直接回滚了一次快照... 但是问题并没有解决.

在后面还发现原来不止 Kickoff 有问题, 是 Plasma shell 任务栏上的所有小组件都有这个问题, 他们都会在某些情况下无法展开 "悬浮窗". 感觉越鼓捣越懵了.

但是因为这是 Linux, 所以前端界面的选择是挺多的, 不想用 KDE 系列的环境也有很多其他的选择, 比如说之前很火的 niri. 但是我个人并不喜欢 "平铺式" 的桌面环境, 只有类似于 Windows 和 MacOS 上的 "堆叠式" 桌面环境才用的来. (我连 Vim 的键位都背不来, 你还能指望我记下来这么多的窗口操作快捷键吗)

被困住了

于是想把整个 Plasma shell 替换掉, 没了 Plasma shell 的 KDE Plasma 还算是 KDE Plasma 吗? 我觉得算, 但也觉得不算, 毕竟底层的混成器 (Compositor) 依旧是 KDE Kwin.

关于 Wayland 与 X11, 在 X11 中负责整个界面渲染的是一个统一的组件, 叫作窗口管理器 (Window Manager, 简称 wm), 但是 Wayland 出于安全考虑, 重新设计了一种显示架构, 在这种新的架构中担任原本 X11 中窗口管理器角色的组件叫作 "混成器".

之前我还因为嫌弃基于 X11 的 SDDM (登录界面) 没有硬件加速, 把他的后端改成了基于 Wayland 的 Kwin, 这样 SDDM 与进入桌面后的一致性就很高了. (虽说 SDDM 的 Wayland 支持还是实验性的, 比如说我的虚拟键盘就用不了了)

Kwin 和 Plasma shell 的关系呢? 可以把 Kwin 看成是一个空舞台, 最开始本来就是什么都没有, 而 Plasma shell 就是你能够看到和交互的所有元素, 比如面板(状态栏), 桌面壁纸, 剪切板等等

扯远了, 我原本打算使用 waybar 来替换掉 Plasma shell 的面板, 用 rofi 来替代掉 Kickoff, 用 mako 替代掉 KDE 通知中心. 但是... 因为 Kwin 对于第三方的兼容性很差, 并且出于安全考虑, 对于可能有隐私风险的 API 直接白名单硬编码了允许访问的应用程序. 对于在 waybar 上对接 Kwin 实现 Taskbar 这种需求根本就从源头无法实现. 枯了

(因为我几乎完全不会 C++, 所以当然是拷打 AI, 让他干活了)

相信着你 (指)

Vibe Codings

不得不说的是, 现在的 AI 真的强, 之前因为嫌弃 Python 跑的太慢了, 所以想要直接把 Markdown 渲染引擎换成 Rust 的. 说起来 Python 也是著名胶水语言.

我选择的实现是 Markdown-it, 因为之前稍微的了解了一下他的实现原理, 并且他的扩展性也能算得上还是很强的. 但是因为 Rust 的复杂语法, 我差不多 90% 的时间都在研究为什么要这么写, 还剩下 10% 的实践在抄 AI 贴出来的示例代码. 感觉像是被 AI 拖着往前走

并且 Python 绑定的部分, 梦回 Next.js, 两边都需要维护各自的状态, 并且还要强制处理可能出现的各种意外情况, 写着写着代码里就塞满了 unsafe. (用来解引用 Python 这边发来的裸指针) Rust 应当支付我的心理损失费, 我都写 Python 了, 你还能指望我写代码有多厉害吗.

压力一个写 Python 的?

并且因为 Python 解释型语言的特性, 很难把 Python 这边的逻辑搬进 Rust, 那么要支持 Python 端的自定义插件的话, 就只能 Rust 跑一段, 然后挂起, 把中间结果传给 Python 解释器, 然后 Python 这边跑完之后也挂起, 让 Rust 继续跑... 这种频繁跨越语言边界 (FFI Boundary) 的行为也是有性能开销的 (倒是有点类似 Linux 程序的 "内核态" 和 "用户态"?), 如果插件多的话, 甚至可能还不如直接使用纯 Python 的实现跑得快.

但是插件少的话还是有优势的, 虽说加上 Python 插件就会慢十倍, 但是还是能比纯 Python 要快个好几倍... 怎么能说 Python 慢呢, 那只是 Rust 太快了

不过呢, 虽然说 Markdown-it 对插件的支持很好, 但是实际上差不多也就只是提供了一个插件编排框架和一些辅助函数, 你自己还是需要手动对原始字符串进行操作. 实际上用起来可能还没有 unified 这种提供 AST (Abstract Syntax Tree, 抽象语法树) 的用起来方便. (毕竟后者的抽象级别比前者高了一层)

我怀疑近期这么多的投毒事件, 就是因为有人在使用 LLM 来大范围扫描开源软件的漏洞, 并且很多的底层库看来确实没什么人去维护. 这张图的含金量还在上升. 或许 "整个互联网能够正常运转" 这件事本身就只是个可能性比较大的意外?

"现代" 数字基础设施的整体架构


之前还靠 AI 写了一个浏览器插件, 用来翻译的. 因为我之前在使用的那个翻译插件需要先选中要翻译的内容, 然后点右键, 在弹出来的邮件菜单里点击翻译才能完成一次翻译. 我觉得这太麻烦了, 让 AI 写了一个划词翻译插件, 效果如下

划词翻译插件

(看的书是 Clean Architecture, 中文名《架构整洁之道》)

我也稍微看了一下, 整个插件都挺简单的, 前台和后台加起来差不多一百多行. 本来还想让他接一个 Transformers.js 直接在浏览器里跑一个本地的模型负责翻译, 但是不知道为什么, 跑不起来, 也就没管了. (我怀疑是资源占用太多了, 被 firefox 干掉了)


要不是上次写的文章, 我都快忘记了, 原来我还写了一个音乐播放器来着, 如果不出意外的话, 下面应该是一个音乐播放器. 哼哼, 作为一个戳泡泡玩家, 肯定要借 (抄) 鉴 (袭) 一下官网的播放器了的样子了. (好像出意外了, 封面之类的东西消失了, 他原本的样子应该是 这样的, 堀江晶太我的超人!)

很美好的一首歌, 可以联想到晨露, 鲜花, 在田野里奔跑之类的东西. 既然 op 这么美好, 那么剧情一定也很治愈吧

魔夜应该是我见过的音乐审美最高的视觉小说了, 好多的音乐感觉都能成为典范了. This is true music


最近还重新回顾了一下魂三, 魂三应该都可以算是我的入坑作了, 是我装好自己的电脑之后玩的第一批游戏之一. 虽然当时玩的真的很菜, 我跟我的朋友在古达那里卡了一个下午没有打过去, 还是在第二天参考了轮椅教程才打过的.

打游戏太菜

现在的话, 古达甚至差点无伤过了. (被出其不意的铁山靠肘飞了) 虽然游戏技术变好了, 但是游戏的乐趣却不如从前了...

包括我 2025 年最喜欢的两个游戏 1. 丝之鸽 2. 老头环 (你知道的, 我一般不把视觉小说当游戏看)

刚玩老头环的时候就一直觉得这个味道太对了, 简直跟当年的感觉简直一模一样. 唯一不好的一点就是有点太简单了. (本人盾戳流)

盾戳小骑士