<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>折腾记录 on 卓琪的开发笔记</title>
    <link>https://zhuoqidev.com/categories/%E6%8A%98%E8%85%BE%E8%AE%B0%E5%BD%95/</link>
    <description>Recent content in 折腾记录 on 卓琪的开发笔记</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <copyright>© 2026 Liu ZhuoQi</copyright>
    <lastBuildDate>Mon, 04 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://zhuoqidev.com/categories/%E6%8A%98%E8%85%BE%E8%AE%B0%E5%BD%95/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>用 Hugo 和双栈 CDN 搭建个人网站</title>
      <link>https://zhuoqidev.com/posts/hello-world/</link>
      <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/hello-world/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;为什么选 Hugo&#xA;    &lt;div id=&#34;为什么选-hugo&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%80%89-hugo&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;做个人博客选框架，我的第一标准是&lt;strong&gt;维护成本低&lt;/strong&gt;——不想三个月后因为 npm 依赖地狱放弃写作。&lt;/p&gt;&#xA;&lt;p&gt;Hugo 是单二进制文件，无需 Node.js，构建几千篇文章只需 1-2 秒，PaperMod 主题开箱就有暗色模式、全文搜索、RSS、Open Graph、阅读时间估算。日常写作只需碰 Markdown。&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;整体架构&#xA;    &lt;div id=&#34;整体架构&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e6%95%b4%e4%bd%93%e6%9e%b6%e6%9e%84&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34; id=&#34;1&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#1&#34;&gt; 1&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;2&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#2&#34;&gt; 2&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;3&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#3&#34;&gt; 3&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;4&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#4&#34;&gt; 4&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;5&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#5&#34;&gt; 5&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;6&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#6&#34;&gt; 6&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;7&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#7&#34;&gt; 7&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;8&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#8&#34;&gt; 8&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;9&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#9&#34;&gt; 9&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;10&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#10&#34;&gt;10&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;11&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#11&#34;&gt;11&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;12&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#12&#34;&gt;12&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;13&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#13&#34;&gt;13&lt;/a&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34; id=&#34;14&#34;&gt;&lt;a class=&#34;lnlinks&#34; href=&#34;#14&#34;&gt;14&lt;/a&gt;&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  ┌─────────────────────────────┐&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  │       DNS 分线路解析          │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  │   (阿里云云解析 GeoDB)        │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  └──────┬──────────────┬────────┘&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                         │              │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              国内访客    ▼    国际访客  ▼&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          ┌──────────────────┐  ┌─────────────────┐&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          │  阿里云 CDN      │  │ Cloudflare Pages │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          │  ↓               │  │  (免费，全球CDN) │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          │  阿里云 OSS      │  └─────────────────┘&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          │  (静态托管)      │&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          └──────────────────┘&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  ↑&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        GitHub Actions 自动构建 &amp;amp; 双栈推送&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;这套方案全年花费约 ¥206：&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>在 Hugo 文章里内嵌 CSS 动画 Demo</title>
      <link>https://zhuoqidev.com/posts/css-animation-demo/</link>
      <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://zhuoqidev.com/posts/css-animation-demo/</guid>
      <description>&lt;p&gt;Hugo 用 shortcode 可以很优雅地内嵌代码演示。这里展示三种方式：&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;1. 内联 CSS demo（无需外部服务）&#xA;    &lt;div id=&#34;1-内联-css-demo无需外部服务&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#1-%e5%86%85%e8%81%94-css-demo%e6%97%a0%e9%9c%80%e5%a4%96%e9%83%a8%e6%9c%8d%e5%8a%a1&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;直接在文章里跑一个旋转加载动画：&lt;/p&gt;&#xA;&lt;div class=&#34;inline-demo&#34; style=&#34;margin: 1.5rem 0;&#34;&gt;&#xA;  &lt;iframe&#xA;    id=&#34;demo-c9e1e4cadf51119cb40d357b2fe4d93d-0&#34;&#xA;    style=&#34;width:100%; height:200px; border:1px solid #dedad4; border-radius:6px; background:#faf8f5;&#34;&#xA;    scrolling=&#34;no&#34;&#xA;    sandbox=&#34;allow-scripts allow-same-origin&#34;&gt;&#xA;  &lt;/iframe&gt;&#xA;  &lt;p style=&#34;font-size:0.8rem; color:#777; text-align:center; margin-top:0.5rem;&#34;&gt;纯 CSS 旋转加载器&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;template id=&#34;demo-c9e1e4cadf51119cb40d357b2fe4d93d-0-src&#34;&gt;&#xA;&lt;style&gt;&#xA;  .loader {&#xA;    width: 48px;&#xA;    height: 48px;&#xA;    border: 4px solid #e8e4de;&#xA;    border-top-color: #c44020;&#xA;    border-radius: 50%;&#xA;    animation: spin 0.8s linear infinite;&#xA;  }&#xA;  @keyframes spin {&#xA;    to { transform: rotate(360deg); }&#xA;  }&#xA;&lt;/style&gt;&#xA;&lt;div class=&#34;loader&#34;&gt;&lt;/div&gt;&#xA;&lt;/template&gt;&#xA;&lt;script&gt;&#xA;(function() {&#xA;  var src = document.getElementById(&#34;demo-c9e1e4cadf51119cb40d357b2fe4d93d-0-src&#34;).innerHTML;&#xA;  var iframe = document.getElementById(&#34;demo-c9e1e4cadf51119cb40d357b2fe4d93d-0&#34;);&#xA;  var doc = iframe.contentDocument || iframe.contentWindow.document;&#xA;  doc.open();&#xA;  doc.write(&#xA;    &#39;&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&#34;utf-8&#34;&gt;&#39; +&#xA;    &#39;&lt;style&gt;*{box-sizing:border-box}body{margin:0;display:flex;align-items:center;&#39; +&#xA;    &#39;justify-content:center;min-height:200px;background:#faf8f5;&#39; +&#xA;    &#39;font-family:system-ui,sans-serif}&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&#39; +&#xA;    src +&#xA;    &#39;&lt;/body&gt;&lt;/html&gt;&#39;&#xA;  );&#xA;  doc.close();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;p&gt;一个渐变色文字动画：&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
