{"version":"https://jsonfeed.org/version/1.1","title":"Litz's Blog","home_page_url":"https://litzs.site","feed_url":"https://litzs.site/feed.json","items":[{"id":"https://litzs.site/posts/new.html","url":"https://litzs.site/posts/new.html","title":"测试","content_html":"<h1>测试</h1>\n<p>测试文章</p>\n<p>112233</p>\n<pre><code>python</code></pre>","date_published":"2026-09-21T00:00:00.000Z","date_modified":"2026-09-21T10:30:20.141Z","tags":[]},{"id":"https://litzs.site/posts/markdown-test.html","url":"https://litzs.site/posts/markdown-test.html","title":"Markdown 语法测试（已更新）","content_html":"<h2>标题与段落</h2>\n<p>Markdown 是一种轻量级标记语言，由 <strong>John Gruber</strong> 于 2004 年创建。</p>\n<p><strong>[已更新]</strong> 此行用于验证后台编辑后能否同步到 VPS。</p>\n<h3>三级标题</h3>\n<h2>文本样式</h2>\n<ul>\n  <li><strong>粗体文本</strong> 用于强调重要内容</li>\n  <li><em>斜体文本</em> 用于轻微强调</li>\n  <li><del>删除线</del> 表示已过时内容</li>\n  <li><code>行内代码</code> 用于标记变量或命令</li>\n</ul>\n<h2>代码块</h2>\n<pre language-python><code>def fibonacci(n: int) -&gt; list[int]:\n    if n &lt;= 0: return []\n    fib = [0, 1]\n    for i in range(2, n):\n        fib.append(fib[-1] + fib[-2])\n    return fib[:n]</code></pre>\n<h2>表格</h2>\n<table><thead><tr><th>语言</th><th>用途</th><th>难度</th></tr></thead><tbody><tr><td>Python</td><td>数据科学</td><td>中等</td></tr><tr><td>Rust</td><td>系统编程</td><td>较高</td></tr><tr><td>JavaScript</td><td>前端</td><td>中等</td></tr></tbody></table>\n<h2>引用</h2>\n<blockquote><p>学而不思则罔，思而不学则殆。 —— 孔子</p></blockquote>\n<h2>数学公式</h2>\n<p>质能方程 $E = mc^2$。</p>\n<p>二次方程求根公式 $x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}$。</p>\n<h2>图片</h2>\n<p><img src=\"/uploads/legacy-2076ee49108bd5afa876.svg\" alt=\"城市风景\" loading=\"lazy\"></p>\n<h2>视频</h2>\n<p>&lt;iframe src=&quot;//player.bilibili.com/player.html?bvid=BV1GJ411x7h7&amp;page=1&quot; scrolling=&quot;no&quot; border=&quot;0&quot; frameborder=&quot;no&quot; framespacing=&quot;0&quot; allowfullscreen=&quot;true&quot; style=&quot;width:100%;height:450px;border-radius:8px;max-width:800px&quot;&gt;&lt;/iframe&gt;</p>\n<h2>结语</h2>\n<p><strong>[已更新]</strong> 此文章已通过后台编辑验证同步功能。</p>","date_published":"2026-09-20T00:00:00.000Z","date_modified":"2026-09-22T09:45:11.511Z","tags":["markdown","测试","编辑器"]},{"id":"https://litzs.site/posts/video-embed-demo.html","url":"https://litzs.site/posts/video-embed-demo.html","title":"视频嵌入测试：四种播放模式","content_html":"<p>这篇文章用来测试博客的视频嵌入功能。支持 B站 和 YouTube 两大平台，书写语法为 <code>![[bilibili(BVxx)]]</code> 或 <code>![[youtube(id)]]</code>。</p>\n<p>当前实现了四种播放模式，下面逐一演示。</p>\n<p>&lt;!-- more --&gt;</p>\n<h2>一、标准模式（默认）</h2>\n<p>最基本的用法：缩略图占位 → 点击内联播放。B站用渐变色兜底卡（构建期可注入封面），YouTube 自动取 hqdefault 缩略图。</p>\n<pre><code>![[bilibili(BV17x411w7KC)]]</code></pre>\n<p>![[bilibili(BV17x411w7KC)]]</p>\n<p>YouTube 同理：</p>\n<pre><code>![[youtube(dQw4w9WgXcQ)]]</code></pre>\n<p>![[youtube(dQw4w9WgXcQ)]]</p>\n<h2>二、画轴展开动画</h2>\n<p>点击播放时，播放器从画面中心向两侧展开（像展开一幅卷轴），0.9 秒缓动动画。所有视频默认带此效果，无需额外参数。</p>\n<p>展开后鼠标悬停可看到右上角的 <strong>全屏按钮</strong>，点击可进入沉浸式弹窗模式。</p>\n<h2>三、八角画框 + 宣纸装饰（deco=octagon）</h2>\n<p>给视频加一个八角形异形窗口，配合宣纸纤维纹理和朱印角标。静态时像一幅挂画，播放后自动恢复为正常矩形。</p>\n<pre><code>![[bilibili(BV17x411w7KC, deco=octagon)]]</code></pre>\n<p>![[bilibili(BV17x411w7KC, deco=octagon)]]</p>\n<p>带封面图的版本（构建期注入 B 站封面 URL）：</p>\n<pre><code>![[bilibili(BV17x411w7KC, cover=http://i1.hdslb.com/bfs/archive/5242750857121e05146d5d5b13a47a2a6dd36e98.jpg, deco=octagon)]]</code></pre>\n<p>![[bilibili(BV17x411w7KC, cover=http://i1.hdslb.com/bfs/archive/5242750857121e05146d5d5b13a47a2a6dd36e98.jpg, deco=octagon)]]</p>\n<p>YouTube 八角画框版：</p>\n<pre><code>![[youtube(dQw4w9WgXcQ, deco=octagon)]]</code></pre>\n<p>![[youtube(dQw4w9WgXcQ, deco=octagon)]]</p>\n<h2>四、沉浸式弹窗（mode=immersive）</h2>\n<p>点击视频后不原地播放，而是弹出居中大窗口，带毛玻璃背景遮罩。适合想要沉浸式观看体验的场景。关闭方式：点击遮罩、按 ESC 键、或点右上角 ×。</p>\n<pre><code>![[bilibili(BV17x411w7KC, mode=immersive)]]</code></pre>\n<p>![[bilibili(BV17x411w7KC, mode=immersive)]]</p>\n<p>YouTube 沉浸式版：</p>\n<pre><code>![[youtube(dQw4w9WgXcQ, mode=immersive)]]</code></pre>\n<p>![[youtube(dQw4w9WgXcQ, mode=immersive)]]</p>\n<h2>五、组合效果</h2>\n<p>所有参数可以自由组合。比如八角画框 + 沉浸式弹窗：</p>\n<pre><code>![[bilibili(BV17x411w7KC, cover=http://i1.hdslb.com/bfs/archive/5242750857121e05146d5d5b13a47a2a6dd36e98.jpg, deco=octagon, mode=immersive)]]</code></pre>\n<p>![[bilibili(BV17x411w7KC, cover=http://i1.hdslb.com/bfs/archive/5242750857121e05146d5d5b13a47a2a6dd36e98.jpg, deco=octagon, mode=immersive)]]</p>\n<h2>语法速查</h2>\n<table><thead><tr><th>参数</th><th>值</th><th>说明</th></tr></thead><tbody><tr><td><code>cover</code></td><td>URL</td><td>B站封面图地址（构建期注入，YouTube 自动取 hqdefault）</td></tr><tr><td><code>mode</code></td><td><code>immersive</code></td><td>沉浸式弹窗模式（默认内联播放）</td></tr><tr><td><code>deco</code></td><td><code>octagon</code></td><td>八角异形窗口 + 宣纸纹理 + 朱印角标</td></tr></tbody></table>\n<p><strong>默认行为</strong>：无额外参数 = 标准 facade + 画轴展开动画 + 内联播放 + 可展开全屏。</p>","date_published":"2026-09-15T00:00:00.000Z","date_modified":"2026-09-21T10:30:20.145Z","tags":["视频","前端","测试"]},{"id":"https://litzs.site/posts/tools/vuepress-guide.html","url":"https://litzs.site/posts/tools/vuepress-guide.html","title":"VuePress + Hope 主题搭建指南","content_html":"<h2>技术栈概览[^1]</h2>\n<table><thead><tr><th>组件</th><th>说明</th></tr></thead><tbody><tr><td>VuePress 2</td><td>静态站点生成器，基于 Vue 3</td></tr><tr><td>Hope Theme</td><td>功能丰富的主题，支持博客、文档</td></tr><tr><td>Vite</td><td>构建工具，开发体验极佳</td></tr><tr><td>Vercel</td><td>部署平台，自动 CI/CD</td></tr></tbody></table>\n<h2>核心目录结构</h2>\n<pre><code>src/\n├── .vuepress/\n│   ├── config.ts      # 主配置\n│   ├── theme.ts       # 主题配置\n│   ├── navbar.ts      # 导航栏\n│   ├── sidebar.ts     # 侧边栏\n│   └── styles/        # 自定义样式\n├── posts/             # 博客文章\n└── README.md          # 首页</code></pre>\n<h2>高亮示例</h2>\n<p>VuePress 支持在代码围栏上标注需要高亮的行：</p>\n<p><code></code>`ts {2,4-5} line-numbers</p>\n<p>const app = createApp(); const theme = createTheme(); // 这行会被高亮 app.use(theme); const router = useRouter();   // 这两行也会被高亮 router.push(&quot;/posts/&quot;);</p>\n<pre><code>\n## 写作流程\n\n1. 在 `src/posts/` 下新建 `.md` 文件\n2. 编写 Front Matter（标题、日期、分类、标签）\n3. 用 Markdown 写正文（语法速查见 [[markdown-cheatsheet]]）\n4. 推送到 Git，Vercel 自动构建部署\n\n## 自定义样式\n\n在 `src/.vuepress/styles/palette.scss` 中修改主题色：\n\n```scss\n$theme-color: #0d9488;</code></pre>\n<p>在 <code>src/.vuepress/styles/index.scss</code> 中添加自定义 CSS 覆盖。</p>\n<p>[^1]: 本站后来迁移到了完全自定义的主题，Hope 只作为起步时的参考。</p>","date_published":"2026-07-25T00:00:00.000Z","date_modified":"2026-09-21T10:30:20.142Z","tags":["VuePress","博客","教程"]},{"id":"https://litzs.site/posts/hello-world.html","url":"https://litzs.site/posts/hello-world.html","title":"Hello World - 博客启程","content_html":"<h2>为什么要写博客</h2>\n<p>写博客是一种很好的学习方式。当你试图把一件事情讲清楚的时候，你会发现自己对它的理解远比想象中模糊。</p>\n<blockquote><p>写作是思考的最终形式。</p></blockquote>\n<h2>这个博客用了什么技术</h2>\n<ul>\n  <li><strong>VuePress 2</strong> - 基于 Vue 3 的静态站点生成器</li>\n  <li><strong>Hope Theme</strong> - 功能丰富的 VuePress 主题</li>\n  <li><strong>Vite</strong> - 极速构建工具</li>\n  <li><strong>Vercel</strong> - 零配置部署平台</li>\n</ul>\n<h2>接下来</h2>\n<p>这里会记录我的技术探索、阅读笔记和生活随想。希望这个小小的角落能成为思考的栖息地。</p>","date_published":"2026-07-25T00:00:00.000Z","date_modified":"2026-09-21T10:30:20.138Z","tags":["博客","开始"]},{"id":"https://litzs.site/posts/desk.html","url":"https://litzs.site/posts/desk.html","title":"一平方米的书桌：一次「够用就好」的布置实验","content_html":"<p>&lt;!-- ✏️ 这是一篇示例文章，展示生活类图文排版。 🖼️ 把图片换成你自己拍的照片，路径格式保持不变即可。 --&gt;</p>\n<p>过去一年，我在购物软件里搜索「桌面好物」的次数，大概比搜索「晚饭吃什么」还多。</p>\n<p>直到上个月，我做了一个相反的实验：不是往书桌上加东西，而是往外拿。</p>\n<p>&lt;!-- more --&gt;</p>\n<h2>桌面上只留四样东西</h2>\n<p>清空、擦拭、然后一件一件放回——每放一件，都要回答一个问题：「过去一周，我真的用过它吗？」</p>\n<p>最后留在桌面上的，只有四样：</p>\n<ol>\n  <li><strong>显示器</strong>——唯一的屏幕，笔记本合盖当主机；</li>\n  <li><strong>键盘</strong>——一把用了五年的机械键盘，键帽打油，但手感熟悉；</li>\n  <li><strong>台灯</strong>——色温 2700K，晚上只开它；</li>\n  <li><strong>一个本子</strong>——所有待办和胡思乱想都写在纸上。</li>\n</ol>\n<p><img src=\"/uploads/legacy-907b41cce7d74599cfbb.svg\" alt=\"桌面细节：键盘与笔记本\" loading=\"lazy\"></p>\n<p><em>打油的键帽和写了一半的本子，比任何「好物」都诚实。</em></p>\n<h2>灯光是最便宜的氛围感</h2>\n<p>这次实验最大的收获，不是扔掉了什么，而是发现了灯光的意义。</p>\n<p>白天拉开纱帘，自然光从左侧进来，是工作的光；晚上关掉顶灯，只留桌上那盏 2700K 的台灯，暖黄色的光罩住一平方米，是属于自己的光。</p>\n<p><img src=\"/uploads/legacy-6dfdab270cfb5ce03c70.svg\" alt=\"夜晚的台灯与书桌\" loading=\"lazy\"></p>\n<p><em>同一张书桌，白天属于效率，夜晚属于自己。</em></p>\n<p>同一平方米，两种完全不同的气质。而切换它们，只需要一次开关。</p>\n<h2>一件后悔的事</h2>\n<p>如果非说有什么遗憾，就是那盆被我移走的多肉。它其实不占地方，只是需要每周浇一次水——而我高估了自己的勤快。</p>\n<p>「够用就好」不是苦行，是诚实地对待自己的习惯。</p>\n<h2>写在最后</h2>\n<p>实验进行了一个月。书桌还是那一平方米，但坐下来的时候，心比之前安静了很多。</p>\n<blockquote><p>整理桌面的过程，其实是把「我以为我需要的」和「我真正需要的」分开的过程。</p></blockquote>\n<p>东西变少了，空间变大了。这大概就是成年人版本的断舍离：不扔东西，只是把它们放回该在的位置——包括欲望。</p>","date_published":"2026-07-24T00:00:00.000Z","date_modified":"2026-09-21T10:30:20.137Z","tags":["生活","桌面","折腾"]},{"id":"https://litzs.site/posts/home-server.html","url":"https://litzs.site/posts/home-server.html","title":"旧笔记本的再就业：我的家庭服务器折腾记","content_html":"<p>&lt;!-- ✏️ 这是一篇示例文章，展示技术类图文排版：封面图 + 正文插图 + 代码块 + 表格。 🖼️ 图片路径在 src/.vuepress/public/images/posts/ 下，替换成你自己的截图或照片即可。 --&gt;</p>\n<p>抽屉里躺着一台 2015 年的旧笔记本：屏幕有一道裂纹，电池鼓包，风扇像拖拉机。卖二手不值钱，扔了又可惜。</p>\n<p>直到有一天我意识到：它当不了主力机，但当一台 7×24 小时在线的家庭服务器，简直是降维打击。</p>\n<p>&lt;!-- more --&gt;</p>\n<h2>为什么是旧笔记本</h2>\n<p>折腾之前先想清楚，为什么不买台树莓派或者成品 NAS：</p>\n<table><thead><tr><th>方案</th><th>优势</th><th>劣势</th></tr></thead><tbody><tr><td>树莓派</td><td>功耗低、社区活跃</td><td>要另配电源、外壳、存储，算下来不便宜</td></tr><tr><td>成品 NAS</td><td>省心、有现成系统</td><td>贵，而且我想折腾的不是「用」，是「搭」</td></tr><tr><td><strong>旧笔记本</strong></td><td><strong>自带屏幕、键盘、电池（天然 UPS）、网卡</strong></td><td>功耗略高，占地方</td></tr></tbody></table>\n<p>旧笔记本最妙的是那块电池——拆掉危险，留着就是一块免费的不间断电源，停电时足够服务优雅关机。</p>\n<h2>装系统：Debian 最小化安装</h2>\n<p>拔掉原机的 Windows，装上 Debian 12 最小化版本。老机器 4G 内存完全够用：</p>\n<pre language-bash><code># 安装后先做三件事\nsudo apt update &amp;&amp; sudo apt upgrade -y\nsudo systemctl disable --now bluetooth   # 用不到的服务全关掉\nsudo apt install -y docker.io docker-compose-plugin git</code></pre>\n<p>合盖不休眠是关键一步：</p>\n<pre language-bash><code>sudo sed -i &#39;s/#HandleLidSwitch=.*/HandleLidSwitch=ignore/&#39; /etc/systemd/logind.conf\nsudo systemctl restart systemd-logind</code></pre>\n<p><img src=\"/uploads/legacy-6babb71edbb5a04e9f28.svg\" alt=\"安装完成后的第一个终端\" loading=\"lazy\"></p>\n<p><em>看到光标在深色终端里闪烁的那一刻，折腾才刚刚开始。</em></p>\n<h2>跑起来：一个 Compose 文件管所有</h2>\n<p>所有服务用一个 <code>docker-compose.yml</code> 管理（容器新手可以先读 [[docker-basics]]），目前稳定运行的有四个：</p>\n<pre language-yaml><code>services:\n  nginx-proxy:          # 反向代理，统一入口\n    image: nginx:alpine\n    ports: [&quot;80:80&quot;]\n  vaultwarden:          # 密码管理\n    image: vaultwarden/server:latest\n  uptime-kuma:          # 服务监控\n    image: louislam/uptime-kuma:latest\n  syncthing:            # 多端文件同步\n    image: syncthing/syncthing:latest</code></pre>\n<pre language-bash><code>docker compose up -d     # 一条命令，全部上线</code></pre>\n<p><img src=\"/uploads/legacy-0cadb3bce6a9691431c9.svg\" alt=\"监控面板上的服务状态\" loading=\"lazy\"></p>\n<p><em>看着监控面板上一排绿色的「运行中」，是折腾者独有的快乐。</em></p>\n<h2>踩坑两则</h2>\n<p><strong>坑一：散热。</strong> 笔记本塞在电视柜里，一周后热得烫手，Docker 直接卡死。后来垫高留出风道，加了个 USB 小风扇，温度直降 15℃。</p>\n<p><strong>坑二：IP 漂移。</strong> 路由器重启后笔记本 IP 变了，所有收藏的书签全废。务必在路由器里绑定静态 IP。</p>\n<blockquote><p>家庭服务器的第一课不是技术，是「别假设任何东西是稳定的」。</p></blockquote>\n<h2>最后</h2>\n<p>这台旧笔记本现在的状态是：CPU 占用常年 3%，功耗 8W，安静地待在电视柜里，替我管着密码、盯着服务、同步着照片。</p>\n<p>它没能成为一台好电脑，但成为了一台好服务器。</p>\n<blockquote><p>物尽其用，大概就是折腾的终极意义。</p></blockquote>","date_published":"2026-07-23T00:00:00.000Z","date_modified":"2026-09-21T10:30:20.139Z","tags":["折腾","家庭服务器","Docker","Linux"]},{"id":"https://litzs.site/posts/citywalk.html","url":"https://litzs.site/posts/citywalk.html","title":"城市漫步：一条走了十年的路","content_html":"<p>&lt;!-- ✏️ 这是一篇示例文章，用来展示「图文并茂」的排版效果。 🖼️ 把每张图的路径换成你自己的照片即可（例如 /images/posts/my-photo.jpg）， 图片文件放进 src/.vuepress/public/images/posts/ 目录。 📝 文字直接替换成你自己的内容，排版结构（小标题、引用、插图）可以照搬。 --&gt;</p>\n<p>从公司到家，导航说十一分钟。但我总要走二十五分钟——因为中间那段梧桐路，值得慢慢走。&lt;sup title=&quot;梧桐路其实没有正式的名字，这是我给它起的。十年里它在市政地图上一直被标着「待建路段」。&quot;&gt;1&lt;/sup&gt;</p>\n<p>十年，两千多个来回。这条路比我更诚实，它记得我每一个阶段的样子。</p>\n<p>&lt;!-- more --&gt;</p>\n<h2>第一个五年：赶时间</h2>\n<p>刚来这座城市的时候，我走路是带风的。&lt;sup title=&quot;每分钟一百二十步，是某个播客里的「高效通勤标准步频」。我当时深信不疑。&quot;&gt;2&lt;/sup&gt;耳机里放着播客，步频精确地控制在每分钟一百二十步，眼睛只盯着前方五十米。</p>\n<p>那时候觉得，走路是一种通勤损耗，是要被压缩的成本。</p>\n<p><img src=\"/uploads/legacy-0381ee99c886c6d9fa6b.svg\" alt=\"午后的梧桐树影\" loading=\"lazy\"></p>\n<p><em>树影斑驳的午后，是这条路最慷慨的时刻。</em></p>\n<p>直到某个加班到崩溃的深夜，我为了平复心情绕了远路。没有耳机，没有目的，第一次听见了自己的脚步声。那晚之后，我开始故意走慢。</p>\n<blockquote><p>走路的速度，大概就是生活的速度。快有快的效率，慢有慢的分辨率。</p></blockquote>\n<h2>第二个五年：看风景</h2>\n<p>慢下来之后，这条路开始向我展示它的细节：</p>\n<ul>\n  <li>梧桐树春天发芽，是先从最高处的那根枝条开始的；</li>\n  <li>拐角的面包店每天下午四点出炉法棍，香气能飘过半个路口；</li>\n  <li>修车摊的老伯养了一只橘猫，永远趴在打气筒旁边打盹；</li>\n  <li>第三盏路灯下有一块松动的地砖，雨天踩上去会溅水——十年了，没人修，也没人抱怨。</li>\n</ul>\n<p><img src=\"/uploads/legacy-f733cd0e66ef3983279b.svg\" alt=\"街角的店铺与自行车\" loading=\"lazy\"></p>\n<p><em>街角的面包店换过三次招牌，自行车换过两代主人。</em></p>\n<p>这些细节没有任何「用处」。它们不产生价值，不解决问题，但它们让一条路变成了「我的路」。</p>\n<h2>路还是那条路</h2>\n<p>去年冬天，梧桐路翻新，老路灯换成了新的，松动的地砖终于被修好了。我有点怅然，像老朋友换了张脸。</p>\n<p>但春天来的时候，新栽的树也发芽了，先从最高处的那根枝条开始。</p>\n<p>我想，路不需要一直不变。变与不变之间，走路的人长大了——这才是这条路真正通向的地方。</p>\n<blockquote><p>所谓故乡，大概就是一条你闭着眼睛也能走完、却永远看不腻的路。</p></blockquote>","date_published":"2026-07-21T00:00:00.000Z","date_modified":"2026-09-21T10:30:20.127Z","tags":["随笔","城市","摄影"]}]}