这个博客是怎么搭起来的
一个以博客为主体、知识库为子模块的个人站点:笔记怎么从 Obsidian 变成网页,原书怎么在线读,shader 怎么在文章里直接跑。
这个站点分成两部分:你现在看到的博客,以及挂在它下面的知识库。博客是写给别人看的文章和作品;知识库是我按 Karpathy 的「LLM Wiki」思路整理的学习笔记——读过的书和文章先放进 raw/,再由 AI 编译成互相链接的知识页面。
笔记怎么变成网页
知识库本身是一个独立的 Git 仓库,网站只读取它,从不写入。构建时,自定义的内容加载器把 wiki/ 里的几百个 Markdown 页面读进来,顺手做几件事:
- 把 Obsidian 的
[[双链]]解析成站内链接,找不到的目标标红并记进体检报告; - 用 KaTeX 渲染公式,Mermaid 流程图在滚动到附近时才懒加载;
- 统计反向链接,于是每一页底部都能看到「被哪些页面引用」;
- 按领域地图页的顺序生成「上一篇 / 下一篇」。
原书在线读
raw/ 里有不少几百兆的 PDF。阅读器用 pdf.js,并让服务器支持 HTTP Range:打开一本 270 MB 的书,实际只下载了大约 4 MB,翻到哪儿再取哪儿。EPUB 用 epub.js 渲染,阅读位置记在浏览器里。
文章里直接跑 shader
图形学的东西光看文字很难有感觉,所以文章里可以嵌入可编辑的片元着色器。下面这个就是:改一下代码里的数字,画面会立刻重新编译。
一圈会呼吸的冰0.0s
改一改
也可以直接改右边的代码:停手约 0.3 秒会自动重新运行;改坏了点「还原代码」。
首页的浮冰也是同一个思路:一段光线步进(raymarching)的片元着色器,冰块用平滑并集融在一起,沿法线反向采样距离场来估计厚度,薄的地方更透亮。
接下来
把知识库里的重点页面一页页重写成「精修课」:先讲直觉,再讲原理,配自己画的图和能直接改的 shader。第一批从 The Book of Shaders 那条程序化着色器路线开始。