<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Yuki&apos;s Blog</title><description>一个关于技术与生活的小站</description><link>https://11suixing11.github.io/homepage/</link><language>zh_CN</language><item><title>本站是怎么搭起来的</title><link>https://11suixing11.github.io/homepage/posts/how-this-blog-is-built/</link><guid isPermaLink="true">https://11suixing11.github.io/homepage/posts/how-this-blog-is-built/</guid><description>从参考站分析到自建框架，再到换用 Fuwari 主题——本站的&quot;建造日志&quot;。</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;一切从一个参考站开始：&lt;a href=&quot;https://hongshi.cc.cd/&quot;&gt;hongshi.cc.cd&lt;/a&gt;（红石の空间站），它使用 Hexo + Solitude 主题搭建。分析之后我选了 &lt;strong&gt;Astro&lt;/strong&gt; 而非同款 Hexo——纯内容站点用 Astro 默认零 JS、构建快，Markdown 体验也好。这篇日志记录本站的进化过程。&lt;/p&gt;
&lt;h2&gt;第一版：自建 MVP&lt;/h2&gt;
&lt;p&gt;先用 Astro 从零搭了一版：首页文章流、文章页（TOC + 代码高亮）、归档、标签、搜索（Pagefind）、深浅色切换、RSS，两栏卡片布局模仿 Solitude 的观感。&lt;/p&gt;
&lt;h2&gt;第二版：换用 Fuwari&lt;/h2&gt;
&lt;p&gt;自建版功能齐全，但细节打磨是场持久战。于是换成了开源的 Fuwari 主题——中文博客圈最流行的 Astro 主题之一，圆角卡片 + 渐变 + 过渡动画的气质与参考站一脉相承，而且自带：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;站内搜索（Pagefind）与 RSS、sitemap&lt;/li&gt;
&lt;li&gt;KaTeX 数学公式、Expressive Code 代码高亮&lt;/li&gt;
&lt;li&gt;GitHub 仓库卡片、提示框（Admonitions）、剧透文本&lt;/li&gt;
&lt;li&gt;swup 页面过渡动画、Photoswipe 灯箱&lt;/li&gt;
&lt;li&gt;主题色自由调节（访客可换色相）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;::github{repo=&quot;saicaca/fuwari&quot;}&lt;/p&gt;
&lt;h2&gt;目录速览&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;src/
├── config.ts          ★ 站点配置（站名/语言/导航/个人资料/主题色）
├── content/
│   ├── posts/         ★ 文章（Markdown）
│   └── spec/          关于页等内容
├── assets/images/     头像、横幅图
└── ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;带 ★ 的是日常最常改的地方。&lt;/p&gt;
&lt;h2&gt;一些经验&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;选主题就是选生态&lt;/strong&gt;：Fuwari 用 pnpm 管理（&lt;code&gt;preinstall&lt;/code&gt; 有 only-allow 校验），务必 &lt;code&gt;pnpm install&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中文标签路由&lt;/strong&gt;：静态托管会把 URL 解码一次再映射文件，所以生成链接时 &lt;code&gt;encodeURIComponent&lt;/code&gt;，而生成路由目录时要用原始中文；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;搜索索引是构建产物&lt;/strong&gt;：Pagefind 在 &lt;code&gt;astro build&lt;/code&gt; 之后生成，开发模式下站内搜索不可用属正常现象。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;下一步&lt;/h2&gt;
&lt;p&gt;评论系统、友链页、自定义头像与横幅……按需添加。底盘是成熟主题，往上加装东西都快。&lt;/p&gt;
</content:encoded></item><item><title>Markdown 排版示例</title><link>https://11suixing11.github.io/homepage/posts/markdown-demo/</link><guid isPermaLink="true">https://11suixing11.github.io/homepage/posts/markdown-demo/</guid><description>标题、列表、引用、表格、代码高亮、数学公式、提示框——一篇文章的排版元素在这里都能找到，可当作写作模板使用。</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章演示站点支持的 Markdown 排版元素，写新文章时可以直接复制这里的语法。&lt;/p&gt;
&lt;h2&gt;文字排版&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;加粗&lt;/strong&gt;、&lt;em&gt;斜体&lt;/em&gt;、&lt;code&gt;行内代码&lt;/code&gt;、&lt;s&gt;删除线&lt;/s&gt;，以及 &lt;a href=&quot;https://astro.build&quot;&gt;链接&lt;/a&gt;。还可以把内容 :spoiler[隐藏起来 &lt;strong&gt;像这样&lt;/strong&gt;]！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;引用块：这里可以放一段名人名言，或者重要提示。
引用可以有多行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;列表&lt;/h2&gt;
&lt;p&gt;无序列表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目一&lt;/li&gt;
&lt;li&gt;项目二
&lt;ul&gt;
&lt;li&gt;嵌套项目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有序列表：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;第一步&lt;/li&gt;
&lt;li&gt;第二步&lt;/li&gt;
&lt;li&gt;第三步&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;任务列表（构建后会渲染成复选框样式）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] 已完成的事&lt;/li&gt;
&lt;li&gt;[ ] 待办的事&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;提示框（Admonitions）&lt;/h2&gt;
&lt;p&gt;支持五种类型：&lt;code&gt;note&lt;/code&gt; &lt;code&gt;tip&lt;/code&gt; &lt;code&gt;important&lt;/code&gt; &lt;code&gt;warning&lt;/code&gt; &lt;code&gt;caution&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;:::note
提示信息，阅读时也不应该错过。
:::&lt;/p&gt;
&lt;p&gt;:::tip[自定义标题]
提示框的标题可以自定义。
:::&lt;/p&gt;
&lt;p&gt;:::warning
警告：这里是需要特别注意的内容。
:::&lt;/p&gt;
&lt;p&gt;也支持 GitHub 风格语法：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
&lt;code&gt;&amp;gt; [!NOTE]&lt;/code&gt; / &lt;code&gt;&amp;gt; [!TIP]&lt;/code&gt; 这种写法同样有效。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;代码高亮&lt;/h2&gt;
&lt;p&gt;代码块基于 &lt;a href=&quot;https://expressive-code.com/&quot;&gt;Expressive Code&lt;/a&gt;，支持文件名标题、行号和终端样式，配色跟随站点深浅色：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// TypeScript
interface Post {
  title: string;
  tags: string[];
}

export function sortPosts(posts: Post[]): Post[] {
  return [...posts].sort((a, b) =&amp;gt; b.title.localeCompare(a.title));
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;pnpm run dev      # 开发
pnpm run build    # 构建 + 搜索索引
pnpm run preview  # 预览构建产物
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;表格&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm run dev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;启动开发服务器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm run new-post&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;新建文章脚手架&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pnpm run build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;构建 + 生成搜索索引&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;数学公式&lt;/h2&gt;
&lt;p&gt;数学公式由 KaTeX 渲染：&lt;/p&gt;
&lt;p&gt;行内公式：质能方程 $E = mc^2$。&lt;/p&gt;
&lt;p&gt;块级公式：&lt;/p&gt;
&lt;p&gt;$$
\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
$$&lt;/p&gt;
&lt;h2&gt;GitHub 仓库卡片&lt;/h2&gt;
&lt;p&gt;正文里可以嵌入 GitHub 仓库卡片（加载时从 GitHub API 拉取信息）：&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;saicaca/fuwari&quot;}&lt;/p&gt;
&lt;h2&gt;分隔线&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;以上就是全部常用元素，写文章时直接对照抄语法即可。&lt;/p&gt;
</content:encoded></item><item><title>你好，世界</title><link>https://11suixing11.github.io/homepage/posts/hello-world/</link><guid isPermaLink="true">https://11suixing11.github.io/homepage/posts/hello-world/</guid><description>博客的第一篇文章——说说这个站点是怎么来的，以及怎么写一篇新文章。</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;欢迎来到我的博客！👋&lt;/p&gt;
&lt;p&gt;这是本站的第一篇文章。站点由 &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; 驱动，主题使用开源的 &lt;a href=&quot;https://github.com/saicaca/fuwari&quot;&gt;Fuwari&lt;/a&gt;。如果你也想要一个这样的博客，可以照着折腾。&lt;/p&gt;
&lt;h2&gt;为什么要有这个博客&lt;/h2&gt;
&lt;p&gt;写博客最直接的好处是&lt;strong&gt;倒逼输出&lt;/strong&gt;：学了新东西，只有能把它讲明白，才算真的学会了。其次，把自己的折腾过程记录下来，日后翻起来会特别省事——很多坑没必要踩第二遍。&lt;/p&gt;
&lt;h2&gt;怎么写一篇新文章&lt;/h2&gt;
&lt;p&gt;最方便的方式是用模板自带的脚手架：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm run new-post
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;它会自动生成文件骨架，或者你也可以直接在 &lt;code&gt;src/content/posts/&lt;/code&gt; 目录下新建一个 &lt;code&gt;.md&lt;/code&gt; 文件，手动写好头部元信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: 文章标题
published: 2026-09-29
description: 一句话摘要（会显示在列表卡片上）
tags: [随笔, 教程]
category: 随笔
draft: false
---

正文内容（Markdown）……
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;几个约定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;published&lt;/code&gt; 决定排序，越新越靠前；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tags&lt;/code&gt; 会自动聚合成标签云，&lt;code&gt;category&lt;/code&gt; 是分类；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image&lt;/code&gt; 可以设置封面图（支持相对路径、&lt;code&gt;/public&lt;/code&gt; 路径或网络图片）；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;draft: true&lt;/code&gt; 的文章不会发布；&lt;/li&gt;
&lt;li&gt;文件名就是文章 URL，例如 &lt;code&gt;hello-world.md&lt;/code&gt; → &lt;code&gt;/posts/hello-world/&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;接下来的计划&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] 把关于页和头像换成自己的&lt;/li&gt;
&lt;li&gt;[ ] 加上评论系统&lt;/li&gt;
&lt;li&gt;[ ] 折腾一些好玩的页面&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;建站的乐趣一半在于折腾本身。慢慢来，比较快。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>MindNotes Pro 的本地优先取舍</title><link>https://11suixing11.github.io/homepage/posts/mindnotes-local-first/</link><guid isPermaLink="true">https://11suixing11.github.io/homepage/posts/mindnotes-local-first/</guid><description>一个范围更小的浏览器白板，如何在离线、依赖、归因和维护边界上做取舍。</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这不是一篇「替代谁」的宣言。Excalidraw、tldraw 这类项目把浏览器白板做到了很高的水准，MindNotes Pro 的目标更窄：在一个普通浏览器里，尽量快地打开、离线地写画、清楚地导出，并且让实现保持可读。&lt;/p&gt;
&lt;h2&gt;为什么要做一个范围更小的白板&lt;/h2&gt;
&lt;p&gt;我经常需要的是临时画思路、整理截图、写几行文字，然后把结果导出。这个场景不一定需要账户、多人协作、模板市场或云端同步。它更像纸笔：打开，写，保存，关掉。&lt;/p&gt;
&lt;p&gt;所以 MindNotes Pro 的边界从一开始就很朴素：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据默认留在本地浏览器。&lt;/li&gt;
&lt;li&gt;核心绘图体验不依赖外部 CDN。&lt;/li&gt;
&lt;li&gt;功能优先服务单人笔记和轻量白板。&lt;/li&gt;
&lt;li&gt;不把没有实现的协作、账号、后端能力写进卖点。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;依赖数量不是奖牌，它只是约束&lt;/h2&gt;
&lt;p&gt;早期 README 里过度强调「少依赖」，这很容易变成一种营销话术。更准确的说法是：我用较小的依赖面来限制复杂度，但这不是为了证明别人做得重，而是为了让这个项目更容易维护。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;选择&lt;/th&gt;
&lt;th&gt;带来的好处&lt;/th&gt;
&lt;th&gt;付出的代价&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;React + Canvas&lt;/td&gt;
&lt;td&gt;UI 和绘图状态容易组织&lt;/td&gt;
&lt;td&gt;需要认真处理重绘、选择框和历史记录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zustand&lt;/td&gt;
&lt;td&gt;状态模型直接、调试成本低&lt;/td&gt;
&lt;td&gt;store 变大后必须拆分职责&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本地导出&lt;/td&gt;
&lt;td&gt;用户不需要上传数据&lt;/td&gt;
&lt;td&gt;浏览器兼容和格式细节都要自己兜底&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;无云协作&lt;/td&gt;
&lt;td&gt;实现和隐私模型更简单&lt;/td&gt;
&lt;td&gt;团队实时编辑不是当前目标&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;向成熟工具学习，但把归因讲清楚&lt;/h2&gt;
&lt;p&gt;白板软件有很多已经被验证过的交互模式：快速缩放、样式复制、框选、对齐、键盘快捷键。学习这些模式并不丢人，真正危险的是把学习包装成原创。&lt;/p&gt;
&lt;p&gt;现在项目文档会更明确地说明：MindNotes Pro 参考了 Figma、Excalidraw、tldraw 等工具的通用交互经验，同时只维护自己实际实现和测试过的功能。外部项目的具体 PR、issue 或设计细节不再被当作宣传材料。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一个开源项目可以受启发，但不能靠模糊归因来显得更专业。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;接下来的维护重点&lt;/h2&gt;
&lt;p&gt;比起继续堆功能，我更想先补几件基础工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;清理现有测试失败，把 canvas、history、selection 的回归用例稳定下来。&lt;/li&gt;
&lt;li&gt;把导出、快捷键、选择引擎这类高风险路径补成更小的测试单元。&lt;/li&gt;
&lt;li&gt;减少 README 里不可验证或容易过期的数字。&lt;/li&gt;
&lt;li&gt;继续把贡献指南、路线图和安全说明写得像一个真实维护中的仓库。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;这个项目适合谁&lt;/h2&gt;
&lt;p&gt;如果你需要一个单人使用、离线优先、可以直接打开写画的浏览器白板，MindNotes Pro 可能合适。如果你需要多人实时协作、复杂素材库、企业权限或长期云端存储，成熟白板产品会更合适。&lt;/p&gt;
&lt;p&gt;把适用场景说清楚，通常比把口号喊得更响更有用。&lt;/p&gt;
&lt;h2&gt;项目入口&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://11suixing11.github.io/mindnotes-pro/&quot;&gt;Live demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/11suixing11/mindnotes-pro&quot;&gt;Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/11suixing11/mindnotes-pro#roadmap&quot;&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item></channel></rss>