<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Jekyll on farmer3-c Blog</title><link>https://farmer3-c.github.io/tags/jekyll/</link><description>Recent content in Jekyll on farmer3-c Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 28 Jun 2026 22:00:00 +0800</lastBuildDate><atom:link href="https://farmer3-c.github.io/tags/jekyll/index.xml" rel="self" type="application/rss+xml"/><item><title>博客框架迁移：从 Jekyll 到 Hugo</title><link>https://farmer3-c.github.io/posts/blog-migration-to-hugo/</link><pubDate>Sun, 28 Jun 2026 22:00:00 +0800</pubDate><guid>https://farmer3-c.github.io/posts/blog-migration-to-hugo/</guid><description>告别 Jekyll，拥抱 Hugo 的简洁与速度</description><content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>之前的博客基于 <strong>Jekyll + Hux Blog 主题</strong>，用了快一年，总觉得不太顺手。Jekyll 是 Ruby 生态，本地构建慢，主题样式偏重（大图背景、多栏布局），对我这种只想简洁写文章的人来说有点臃肿。</p>
<p>于是决定迁移。目标是：</p>
<ul>
<li>🚀 <strong>更快的构建速度</strong></li>
<li>🎨 <strong>极简的页面风格</strong> —— 无背景图、干净利落</li>
<li>🔧 <strong>少折腾</strong> —— 配置简单，开箱即用</li>
<li>📝 <strong>保留所有文章和资源</strong></li>
</ul>
<p>最终选择了 <strong>Hugo + PaperMod 主题</strong>。</p>
<hr>
<h2 id="为什么选-hugo">为什么选 Hugo？</h2>
<table>
	<thead>
			<tr>
					<th>特性</th>
					<th>Jekyll</th>
					<th>Hugo</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>语言</td>
					<td>Ruby</td>
					<td>Go</td>
			</tr>
			<tr>
					<td>构建速度</td>
					<td>~5-10 秒</td>
					<td><strong>~250ms</strong></td>
			</tr>
			<tr>
					<td>安装</td>
					<td>需 Ruby + Gem</td>
					<td><strong>单二进制</strong></td>
			</tr>
			<tr>
					<td>配置</td>
					<td><code>_config.yml</code></td>
					<td><code>hugo.toml</code></td>
			</tr>
			<tr>
					<td>主题生态</td>
					<td>丰富</td>
					<td>丰富</td>
			</tr>
	</tbody>
</table>
<p>Hugo 最大的优势就是<strong>快</strong>——单二进制文件，没有任何依赖，构建 55 篇文章只要 250ms。PaperMod 主题默认就是白色极简风格，没有大图背景，几乎没有需要改动的地方。</p>
<hr>
<h2 id="迁移做了什么">迁移做了什么</h2>
<h3 id="1-文章转换55-篇">1. 文章转换（55 篇）</h3>
<p>原来的 Jekyll 文章格式：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">layout</span><span class="p">:</span><span class="w"> </span><span class="l">post</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Introduction to Linear Programing&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="ld">2025-09-14 23:54:39 +0800</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;farmer3-c&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">header-img</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;img/post-bg-2015.jpg&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mathjax</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>转换为 Hugo 格式：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Introduction to Linear Programing&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;2025-09-14T23:54:39+08:00&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;farmer3-c&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mathjax</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>主要变化：删掉了 <code>layout</code>、<code>header-img</code> 等 Jekyll 特有字段，日期改为 ISO 8601 格式。</p>
<h3 id="2-资源迁移">2. 资源迁移</h3>
<ul>
<li><code>img/</code> → <code>static/img/</code>（路径不变，文章中的图片引用不受影响）</li>
<li><code>pdf/</code> → <code>static/pdf/</code></li>
<li>删除了所有背景大图（<code>*-bg-*.jpg</code>）</li>
</ul>
<h3 id="3-功能集成">3. 功能集成</h3>
<table>
	<thead>
			<tr>
					<th>功能</th>
					<th>实现</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>评论区</td>
					<td>Utterances（基于 GitHub Issues）</td>
			</tr>
			<tr>
					<td>LaTeX</td>
					<td>MathJax 3 支持 <code>$..$</code>、<code>$$..$$</code></td>
			</tr>
			<tr>
					<td>搜索</td>
					<td>PaperMod 内置 Fuse.js</td>
			</tr>
			<tr>
					<td>标签</td>
					<td>自动标签页 <code>/tags/</code></td>
			</tr>
			<tr>
					<td>RSS</td>
					<td>自动生成 <code>/index.xml</code></td>
			</tr>
			<tr>
					<td>字体</td>
					<td>Times New Roman + 宋体</td>
			</tr>
			<tr>
					<td>深色模式</td>
					<td>自动跟随系统</td>
			</tr>
			<tr>
					<td>代码复制</td>
					<td>一键复制代码块</td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="新博客使用指南">新博客使用指南</h2>
<h3 id="环境准备">环境准备</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 安装 Hugo（Windows）</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 从 https://github.com/gohugoio/hugo/releases 下载 hugo_extended 版本</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 解压后添加到 PATH 即可</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 验证安装</span>
</span></span><span class="line"><span class="cl">hugo version
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="本地预览">本地预览</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 在博客根目录启动服务器</span>
</span></span><span class="line"><span class="cl">hugo server
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 浏览器访问 http://localhost:1313/</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 修改文件后自动刷新</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="新建文章">新建文章</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">hugo new content posts/my-new-post.md
</span></span></code></pre></td></tr></table>
</div>
</div><p>然后在 <code>content/posts/my-new-post.md</code> 中编辑：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;文章标题&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;文章摘要&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;2026-06-28T23:00:00+08:00&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;farmer3-c&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">Tag1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">Tag2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mathjax</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">  </span><span class="c"># 如果用到 LaTeX 则启用</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">draft</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="添加图片">添加图片</h3>
<p>将图片放到 <code>static/img/</code> 目录下，在文章中引用：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">![<span class="nt">描述</span>](<span class="na">/img/your-image.png</span>)
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="添加-pdf">添加 PDF</h3>
<p>将 PDF 放到 <code>static/pdf/</code> 目录下：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">[<span class="nt">下载文档</span>](<span class="na">/pdf/filename.pdf</span>)
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="部署">部署</h3>
<p>推送到 GitHub 即可自动构建部署：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git add -A
</span></span><span class="line"><span class="cl">git commit -m <span class="s2">&#34;更新&#34;</span>
</span></span><span class="line"><span class="cl">git push origin main
</span></span></code></pre></td></tr></table>
</div>
</div><p>GitHub Actions 会自动运行 Hugo 构建，将 <code>public/</code> 目录部署到 GitHub Pages。</p>
<hr>
<h2 id="文件结构">文件结构</h2>
<pre tabindex="0"><code>farmer3-c.github.io/
├── hugo.toml              # 主配置文件
├── content/
│   ├── posts/             # 所有文章
│   ├── about/             # 关于页面
│   └── search.md          # 搜索页
├── static/
│   ├── img/               # 图片资源
│   ├── pdf/               # PDF 文件
│   └── CNAME              # 自定义域名
├── layouts/
│   └── partials/
│       ├── comments.html  # Utterances 评论
│       └── extend_head.html  # MathJax 3
├── assets/
│   └── css/extended/
│       └── custom.css     # 自定义样式
└── .github/workflows/
    └── hugo.yml           # 自动部署
</code></pre><hr>
<h2 id="总结">总结</h2>
<p>这次迁移大概花了一晚上的时间，最耗时的是 55 篇文章的格式转换和内部链接检查。迁移之后，博客构建速度从秒级降到了毫秒级，主题干净了很多，写文章的体验也好了不少。</p>
<p>希望这篇记录对想从 Jekyll 迁移到 Hugo 的朋友有帮助 😄</p>
]]></content:encoded></item><item><title>博客优化问题与解决方案总结</title><link>https://farmer3-c.github.io/posts/blog-problems-and-solutions/</link><pubDate>Sat, 16 May 2026 01:00:00 +0800</pubDate><guid>https://farmer3-c.github.io/posts/blog-problems-and-solutions/</guid><description>Jekyll 博客遇到的问题及修复方法</description><content:encoded><![CDATA[<h1 id="博客优化问题与解决方案总结">博客优化问题与解决方案总结</h1>
<p>最近对博客进行了多次优化，遇到了各种问题，现在总结一下遇到的问题及解决方案，供大家参考。</p>
<h2 id="1-service-worker-自动刷新问题">1. Service Worker 自动刷新问题</h2>
<h3 id="问题描述">问题描述</h3>
<p>博客添加了 Service Worker 后，每次检测到更新都会显示 &ldquo;Content updated. REFRESH&rdquo; 按钮，需要手动点击刷新。</p>
<h3 id="解决方案">解决方案</h3>
<p>修改 <code>js/sw-registration.js</code>，移除手动刷新提示，直接使用 <code>location.reload()</code>。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">command</span> <span class="o">==</span> <span class="s2">&#34;UPDATE_FOUND&#34;</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&#34;UPDATE_FOUND_BY_SW&#34;</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// 自动刷新页面，无需手动点击
</span></span></span><span class="line"><span class="cl">  <span class="nx">location</span><span class="p">.</span><span class="nx">reload</span><span class="p">();</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="后续问题">后续问题</h3>
<p>启用自动刷新后，网站出现了<strong>无限刷新循环</strong>的问题，用户体验极差。</p>
<h3 id="最终解决方案">最终解决方案</h3>
<p>移除 Service Worker 的自动刷新机制，改用 Stale-While-Revalidate 缓存策略：</p>
<ul>
<li>优先显示缓存内容</li>
<li>后台更新缓存</li>
<li>用户下次访问时自然看到新内容</li>
</ul>
<hr>
<h2 id="2-导航栏显示文章标题问题">2. 导航栏显示文章标题问题</h2>
<h3 id="问题描述-1">问题描述</h3>
<p>导航栏突然显示了文章标题 &ldquo;编译实践Lv1. main 函数&rdquo;，而不是正常的页面链接。</p>
<h3 id="根本原因">根本原因</h3>
<p>之前误将一篇博客文章放到了 <code>css/</code> 文件夹，Jekyll 将其当作页面处理，导致导航栏循环显示所有有 title 的页面。</p>
<h3 id="解决方案-1">解决方案</h3>
<p><strong>彻底解决方案：</strong> 硬编码导航栏，只显示固定页面。</p>
<p>修改 <code>_includes/nav.html</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">ul</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;nav navbar-nav navbar-right&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ site.baseurl }}/&#34;</span><span class="p">&gt;</span>Home<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ site.baseurl }}/about/&#34;</span><span class="p">&gt;</span>About<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ site.baseurl }}/archive/&#34;</span><span class="p">&gt;</span>Archive<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;</span><span class="nt">li</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;search-icon&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;javascript:void(0)&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="p">&lt;</span><span class="nt">i</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;fa fa-search&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">i</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>同时从 git 历史中彻底移除误放的文章。</p>
<hr>
<h2 id="3-about-和-archive-页面-404-问题">3. About 和 Archive 页面 404 问题</h2>
<h3 id="问题描述-2">问题描述</h3>
<p>点击导航栏的 About 和 Archive，跳转到 <code>/about.html</code> 和 <code>/archive.html</code>，显示 404 错误。</p>
<h3 id="原因">原因</h3>
<p>博客使用了 <code>permalink: pretty</code> 配置，正确的 URL 应该是 <code>/about/</code> 和 <code>/archive/</code>（带斜杠），而不是 <code>.html</code> 结尾。</p>
<h3 id="解决方案-2">解决方案</h3>
<p>修改导航栏链接格式：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"><span class="c">&lt;!-- 修改前 --&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ site.baseurl }}/about.html&#34;</span><span class="p">&gt;</span>About<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ site.baseurl }}/archive.html&#34;</span><span class="p">&gt;</span>Archive<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c">&lt;!-- 修改后 --&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ site.baseurl }}/about/&#34;</span><span class="p">&gt;</span>About<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ site.baseurl }}/archive/&#34;</span><span class="p">&gt;</span>Archive<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="4-github-pages-构建队列卡住问题">4. GitHub Pages 构建队列卡住问题</h2>
<h3 id="问题描述-3">问题描述</h3>
<p>推送代码后，GitHub Actions 一直显示 &ldquo;Queued&rdquo; 状态，超过 10 分钟甚至更久都没有构建。</p>
<h3 id="原因分析">原因分析</h3>
<p>这是 <strong>GitHub 服务本身的问题</strong>，不是代码问题。根据 GitHub Status 页面显示，GitHub Actions 服务正在经历事故（Incident）。</p>
<h3 id="解决方案-3">解决方案</h3>
<ol>
<li>
<p><strong>等待 GitHub 修复</strong></p>
<ul>
<li>通常需要 30 分钟到几小时</li>
<li>关注 <a href="https://www.githubstatus.com/">https://www.githubstatus.com/</a> 获取最新状态</li>
</ul>
</li>
<li>
<p><strong>检查 GitHub 服务状态</strong></p>
<ul>
<li>GitHub Status: <a href="https://www.githubstatus.com/">https://www.githubstatus.com/</a></li>
<li>Twitter: @githubstatus</li>
<li>Downdetector: downdetector.com/status/github</li>
</ul>
</li>
<li>
<p><strong>本地验证代码正常</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">bundle <span class="nb">exec</span> jekyll build
</span></span></code></pre></td></tr></table>
</div>
</div><p>如果本地构建成功，说明代码没问题，只是 GitHub 服务问题。</p>
</li>
</ol>
<h3 id="预防措施">预防措施</h3>
<ul>
<li>推送代码前先在本地预览</li>
<li>避免在 GitHub 服务不稳定时推送重要更新</li>
</ul>
<hr>
<h2 id="5-新文章推送后不显示问题">5. 新文章推送后不显示问题</h2>
<h3 id="问题描述-4">问题描述</h3>
<p>新写的文章 <code>git push</code> 之后在博客网站没有显示。</p>
<h3 id="常见原因">常见原因</h3>
<ol>
<li>
<p><strong>文件名格式问题</strong></p>
<ul>
<li>要求：<code>YYYY-MM-DD-title.md</code></li>
<li>避免在文件名末尾使用特殊字符</li>
</ul>
</li>
<li>
<p><strong>Front Matter 格式问题</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">layout</span><span class="p">:</span><span class="w"> </span><span class="l">post</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;文章标题&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="ld">2026-03-06</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="l">Tag1, Tag2] </span><span class="w"> </span><span class="c"># 标签用逗号分隔，不要有空格</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p><strong>标签格式问题</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># 错误：包含空格的标签</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="l">Algorithm programming problem]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># 正确：逗号分隔或加引号</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="l">Algorithm, programming, problem]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># 或</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;Algorithm programming problem&#34;</span><span class="p">]</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div></li>
</ol>
<h3 id="解决方案-4">解决方案</h3>
<ul>
<li>确保文件名格式正确</li>
<li>检查 front matter 格式</li>
<li>修复后重新提交推送</li>
</ul>
<hr>
<h2 id="6-latex-数学公式渲染失败问题">6. LaTeX 数学公式渲染失败问题</h2>
<h3 id="问题描述-5">问题描述</h3>
<p>博客中的 LaTeX 代码显示为纯文本 <code>[Math Processing Error]</code>，无法正常渲染。</p>
<h3 id="解决方案-5">解决方案</h3>
<p>更新 MathJax 配置到稳定版本。</p>
<p>修改 <code>_includes/mathjax_support.html</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">&#34;text/x-mathjax-config&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">MathJax</span><span class="p">.</span><span class="nx">Hub</span><span class="p">.</span><span class="nx">Config</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">    <span class="nx">tex2jax</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">inlineMath</span><span class="o">:</span> <span class="p">[</span> <span class="p">[</span><span class="s1">&#39;$&#39;</span><span class="p">,</span><span class="s1">&#39;$&#39;</span><span class="p">],</span> <span class="p">[</span><span class="s1">&#39;\\(&#39;</span><span class="p">,</span><span class="s1">&#39;\\)&#39;</span><span class="p">]</span> <span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="nx">displayMath</span><span class="o">:</span> <span class="p">[</span> <span class="p">[</span><span class="s1">&#39;$$&#39;</span><span class="p">,</span><span class="s1">&#39;$$&#39;</span><span class="p">],</span> <span class="p">[</span><span class="s1">&#39;\\[&#39;</span><span class="p">,</span><span class="s1">&#39;\\]&#39;</span><span class="p">]</span> <span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="nx">processEscapes</span><span class="o">:</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nx">TeX</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">equationNumbers</span><span class="o">:</span> <span class="p">{</span> <span class="nx">autoNumber</span><span class="o">:</span> <span class="s2">&#34;AMS&#34;</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="nx">extensions</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;AMSmath.js&#34;</span><span class="p">,</span><span class="s2">&#34;AMSsymbols.js&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;HTML-CSS&#34;</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">scale</span><span class="o">:</span> <span class="mi">100</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS_HTML&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="使用方法">使用方法</h3>
<p>确保文章头部开启了 mathjax：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mathjax</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>支持的语法：</p>
<table>
	<thead>
			<tr>
					<th>类型</th>
					<th>语法</th>
					<th>示例</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>行内公式</td>
					<td><code>$...$</code></td>
					<td>$E=mc^2$</td>
			</tr>
			<tr>
					<td>行间公式</td>
					<td><code>$$...$$</code></td>
					<td>$$\int_0^1 x^2 dx$$</td>
			</tr>
			<tr>
					<td>括号公式</td>
					<td><code>\[...\]</code></td>
					<td>\[a^2 + b^2 = c^2\]</td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="7-添加相关文章侧边栏功能">7. 添加相关文章侧边栏功能</h2>
<h3 id="功能描述">功能描述</h3>
<p>在文章页面左侧显示同标签的其他文章列表，方便读者浏览相关内容。</p>
<h3 id="解决方案-6">解决方案</h3>
<ol>
<li>创建 <code>_includes/related-posts.html</code></li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl">{% if page.tags.size &gt; 0 %}
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;related-posts&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">hr</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;hidden-sm hidden-xs&#34;</span> <span class="na">style</span><span class="o">=</span><span class="s">&#34;margin: 0 0 20px 0;&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">h5</span> <span class="na">style</span><span class="o">=</span><span class="s">&#34;color: #333; margin-bottom: 15px; font-size: 14px; font-weight: bold;&#34;</span><span class="p">&gt;</span>相关文章<span class="p">&lt;/</span><span class="nt">h5</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="p">&lt;</span><span class="nt">ul</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;related-posts-list&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">        {% assign current_url = page.url %}
</span></span><span class="line"><span class="cl">        {% assign tag_posts = &#34;&#34; | split: &#34;&#34; %}
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        {% for tag in page.tags %}
</span></span><span class="line"><span class="cl">            {% for post in site.tags[tag] %}
</span></span><span class="line"><span class="cl">                {% unless post.url == current_url %}
</span></span><span class="line"><span class="cl">                    {% unless tag_posts contains post %}
</span></span><span class="line"><span class="cl">                        {% assign tag_posts = tag_posts | push: post %}
</span></span><span class="line"><span class="cl">                    {% endunless %}
</span></span><span class="line"><span class="cl">                {% endunless %}
</span></span><span class="line"><span class="cl">            {% endfor %}
</span></span><span class="line"><span class="cl">        {% endfor %}
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        {% for post in tag_posts limit: 10 %}
</span></span><span class="line"><span class="cl">        <span class="p">&lt;</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;{{ post.url | prepend: site.baseurl }}&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">                {{ post.title | truncate: 28 }}
</span></span><span class="line"><span class="cl">            <span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="p">&lt;/</span><span class="nt">li</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">        {% endfor %}
</span></span><span class="line"><span class="cl">    <span class="p">&lt;/</span><span class="nt">ul</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">{% endif %}
</span></span></code></pre></td></tr></table>
</div>
</div><ol start="2">
<li>修改 <code>_layouts/post.html</code>，在左侧添加：</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"><span class="c">&lt;!-- Left Sidebar - Related Posts --&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;col-lg-2 visible-lg-block sidebar-container&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl">    {% include related-posts.html %}
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="总结">总结</h2>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>状态</th>
					<th>解决方案</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>自动刷新</td>
					<td>✅ 已解决</td>
					<td>移除自动刷新，改用自然更新</td>
			</tr>
			<tr>
					<td>导航栏异常</td>
					<td>✅ 已解决</td>
					<td>硬编码导航栏</td>
			</tr>
			<tr>
					<td>页面 404</td>
					<td>✅ 已解决</td>
					<td>修复链接格式</td>
			</tr>
			<tr>
					<td>GitHub 构建卡住</td>
					<td>⏳ 等待恢复</td>
					<td>等待 GitHub 服务修复</td>
			</tr>
			<tr>
					<td>文章不显示</td>
					<td>✅ 已解决</td>
					<td>修复文件名和标签格式</td>
			</tr>
			<tr>
					<td>LaTeX 渲染失败</td>
					<td>✅ 已解决</td>
					<td>更新 MathJax 配置</td>
			</tr>
			<tr>
					<td>相关文章功能</td>
					<td>✅ 已实现</td>
					<td>添加侧边栏组件</td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="经验教训">经验教训</h2>
<ol>
<li><strong>本地预览很重要</strong> - 推送前先在本地测试</li>
<li><strong>GitHub 服务也会出问题</strong> - 遇到问题先检查服务状态</li>
<li><strong>文件名和格式要规范</strong> - 遵循 Jekyll 的命名规则</li>
<li><strong>做好备份</strong> - 重要修改前先 commit</li>
</ol>
<hr>
<p><em>本文持续更新中&hellip;</em></p>
]]></content:encoded></item></channel></rss>