大脑充血 Vol.99

大脑充血 Vol.99

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

作者近期小步推进个人项目:将Clojure编写的Webmention接收器weepinbell更新至v0.5.0,精简依赖、改用SHA256、增加Webhook数据支持,并借WebAssembly复用Go解析器;同时开发Hugo主题tempest,用Lisp生成HTML替代模板语法。他还重拾阅读,并因秋招开始向上海、深圳、北京投简历,反思搬家焦虑与城市步行环境。

🔎

延伸解读

依赖精简与包体积优化

作者将 weepinbell 的依赖大幅削减,包大小从 46MB 降至 15MB。这一改动不仅减少了潜在的安全风险和维护负担,也提升了程序启动和运行效率。对于个人项目而言,依赖管理常被忽视,但作者通过自写简单功能或调用 Java 标准库,实现了更可控的代码基础,值得借鉴。

WebAssembly 在 JVM 上的创新应用

由于缺乏 Clojure/Java 的 microformats 解析器,作者没有选择微服务或 CLI 调用,而是利用 JVM 直接运行 WebAssembly,将 Go 解析器编译为 Wasm 并封装成 mf2clj 库。这展示了 WebAssembly 作为跨语言桥梁的潜力,为 JVM 生态复用其他语言库提供了新思路。

用 Lisp 生成 Hugo 模板的尝试

作者开发 tempest 主题,用 Lisp 的 S-表达式替代 Hugo 的 Go 模板语法,通过预处理生成 HTML。这消除了 mustache 语法的繁琐,让模板编写更接近编程。但作者也指出,复杂逻辑(如条件语句中的链式调用)仍需进一步设计,目前仅适合个人使用。

求职焦虑与城市步行环境

作者因秋招开始向上海、深圳、北京投简历,并反思搬家焦虑。他讨厌搬家,但渴望自由,最终意识到自己有能力走远。此外,他抱怨重庆和山东的步行环境差,电动车多、人行道缺失,这成为他选择沿海城市的一个私心。这些个人经历反映了求职与生活质量的权衡。

Q&A

weepinbell v0.5.0 更新了哪些内容?

weepinbell v0.5.0 更新包括:将生成 Webmention ID 的 MD5 换成 SHA256;精简依赖,包大小从 46MB 降到 15MB;Webhook 支持携带数据,可向 Bark 或 ntfy 端点发送请求,并在 Headers 或 POST Body 中包含 Webmention 信息;计划用 WebAssembly 复用 Go 解析器,并发布了 mf2clj 库到 Clojars。

tempest 是什么?它有什么作用?

tempest 是一个 Hugo 主题,用 Lisp 生成 HTML 替代 Hugo 的模板语法。它通过预处理列表输入给 spinneret,将 .lisp 文件实时转换为 .html 文件,从而消除 {{ mustache }} 语法,让写主题更愉悦。

作者为什么开始投简历?

作者经前辈提醒意识到秋招开始,应该投简历找工作。他本不打算在实习公司久待,但求职让他焦虑,因为不擅长展示自己。同时,他渴望离开当前环境寻求更好机会,并因对步行环境的失望,开始向上海、深圳、北京投简历。

作者对搬家的态度是怎样的?

作者讨厌搬家,讨厌把生活塞进纸箱和搬家袋,讨厌不断丢东西压缩行李,讨厌丢弃生活的一部分,也讨厌适应新生活区域。但他渴望随时前往另一个城市的自由,并愿意承受生活变动的痛苦。

作者如何解决 Clojure 缺少 microformats 解析器的问题?

作者发现 JVM 上可以直接运行 WebAssembly,于是将 Will Noriss 维护的 Go 语言 microformats 解析器编译成 WebAssembly,并写了 mf2clj 库发布到 Clojars。Clojure 程序通过运行嵌入的 WebAssembly 来使用该解析器。

作者对城市步行环境有什么看法?

作者喜欢散步,但在重庆常被电动车惊扰,到山东后发现更糟:小区门口没有人行道,人车共用空间;路边常被围栏挡住,只能走马路;过红绿灯时身边全是电动车;绿灯过马路竟被汽车鸣笛警告,还有电瓶车穿过。他记得沿海城市有限制电瓶车政策,并反思这可能源于对小地方的怨恨。

🏷️

标签

➡️

继续阅读