← 返回文章列表
建站AstroWebGL

这个博客是怎么搭起来的

一个以博客为主体、知识库为子模块的个人站点:笔记怎么从 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 那条程序化着色器路线开始。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原