<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>夏季指南</title>
    <link>https://jiawen.live</link>
    <description>前端开发工程师 Gavin 的个人博客：JavaScript / Vue / React / Node.js</description>
    <language>zh-CN</language>
    <lastBuildDate>Sat, 13 Jun 2026 12:19:59 GMT</lastBuildDate>
    <item>
      <title>为开源准备一个项目：README、LICENSE 与最小可复现</title>
      <link>https://jiawen.live/article/48</link>
      <guid isPermaLink="true">https://jiawen.live/article/48</guid>
      <description>把私有项目开源，写完代码只是开始。一份让人能跑起来的 README、一个明确的 LICENSE、一套「clone 即可复现」的最小启动路径，才是开源的诚意所在。</description>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>开源前的密钥治理：gitleaks + 历史清理 + 凭证轮换</title>
      <link>https://jiawen.live/article/44</link>
      <guid isPermaLink="true">https://jiawen.live/article/44</guid>
      <description>把一个私有项目开源前，最怕的是密钥泄露。一次真实的「.env 里混进了云厂商 AccessKey」事故，复盘从扫描、历史清理到凭证轮换的完整处置，以及那条最反直觉的铁律。</description>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>给 AI 对话做限流：Workers / 会话 / AI Gateway 三层防护</title>
      <link>https://jiawen.live/article/38</link>
      <guid isPermaLink="true">https://jiawen.live/article/38</guid>
      <description>一个公开的 AI 对话接口，不限流就是给钱包开了个无底洞。我用三层互补的限流——请求层防刷、会话层防滥用、网关层兜底花费——把「被薅羊毛」的风险摁住。</description>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>DeepSeek vs Gemini：RAG 场景的工具调用风格调优</title>
      <link>https://jiawen.live/article/37</link>
      <guid isPermaLink="true">https://jiawen.live/article/37</guid>
      <description>同一套提示词，DeepSeek 和 Gemini 表现出截然不同的「性格」——一个推理欲望强、爱多调工具，一个极度克制、走最短路径。聊聊这两种风格在 RAG 场景下各自要怎么调。</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>个人项目也要做可观测性：AI Gateway 日志与用量</title>
      <link>https://jiawen.live/article/47</link>
      <guid isPermaLink="true">https://jiawen.live/article/47</guid>
      <description>个人项目没有 SRE 团队，但「两眼一抹黑」更危险——尤其当系统里有按量付费的 LLM。聊聊用极低成本给个人项目加上可观测性：托管组件自带的日志、健康检查、用量看板。</description>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>边缘鉴权：在 Worker 里本地验签 JWT，告别跨境回源</title>
      <link>https://jiawen.live/article/36</link>
      <guid isPermaLink="true">https://jiawen.live/article/36</guid>
      <description>后台点一下「AI 管理」就被登出。排查发现是 Worker 回源到国内服务器验 token，触发了 530。解法不是修网络，而是换架构——把 JWT 验签搬到边缘本地做，彻底不回源。</description>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>滚动更新与零停机部署：deploy.sh 的设计</title>
      <link>https://jiawen.live/article/43</link>
      <guid isPermaLink="true">https://jiawen.live/article/43</guid>
      <description>一个好的部署脚本不只是 docker compose up。它要按 tag 拉镜像、滚动替换、健康检查、失败自动回滚。拆解我那个几十行的 deploy.sh，看零停机部署的几个关键动作。</description>
      <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>repository_dispatch 驱动的跨仓库 CI/CD 与一键回滚</title>
      <link>https://jiawen.live/article/42</link>
      <guid isPermaLink="true">https://jiawen.live/article/42</guid>
      <description>代码和部署配置分在不同仓库，怎么让前者 push 后自动触发后者部署？用 GitHub 的 repository_dispatch 做跨仓库事件桥接，再用「按镜像 tag 部署」实现秒级回滚。</description>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Webhook + HMAC：把 CMS 内容实时同步进向量库</title>
      <link>https://jiawen.live/article/35</link>
      <guid isPermaLink="true">https://jiawen.live/article/35</guid>
      <description>文章一发布，几秒后 AI 助手就能答出来。背后是一条「内容变更 → 带签名 Webhook → 写入 R2 → 增量索引」的同步管道。重点讲怎么用 HMAC-SHA256 + 时间戳防重放，把这条管道做安全。</description>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>webhook 的 fire-and-forget：别让同步拖垮主流程</title>
      <link>https://jiawen.live/article/46</link>
      <guid isPermaLink="true">https://jiawen.live/article/46</guid>
      <description>文章保存成功，就该立刻返回——同步到 AI 知识库这种「副作用」绝不该阻塞它，更不该因为下游挂了而让用户发不出文章。聊聊主流程与副作用的解耦原则。</description>
      <pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>acme.sh + 阿里云 DNS-01：泛域名证书自动续期与 CDN 推送</title>
      <link>https://jiawen.live/article/41</link>
      <guid isPermaLink="true">https://jiawen.live/article/41</guid>
      <description>一张泛域名证书覆盖所有子域，DNS-01 验证签发，daemon 模式自动续期，续期后还自动推送到 CDN。讲清这套「签一次、永不操心」的 HTTPS 自动化，以及冷启动的鸡生蛋问题。</description>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>RAG 为什么用 R2 而非爬虫：数据噪音与召回质量</title>
      <link>https://jiawen.live/article/34</link>
      <guid isPermaLink="true">https://jiawen.live/article/34</guid>
      <description>给 RAG 喂数据有两条路——爬自己的网站，或主动维护干净的 Markdown。我选了后者。因为爬虫抓到的 HTML 混杂着导航、评论、侧边栏，这些噪音会污染向量空间，毁掉召回质量。</description>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>从单体 Koa 到四服务博客：一次渐进式架构演进</title>
      <link>https://jiawen.live/article/45</link>
      <guid isPermaLink="true">https://jiawen.live/article/45</guid>
      <description>个人博客从一个 Koa 单体，长成「API + 前台 SSR + 后台 SPA + 边缘 AI」四个服务。复盘每一步拆分的动因——不是为了微服务而微服务，而是每次都被一个具体痛点推着走。</description>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>nginx 网关按域名分发 + HTTP/3：单机多服务入口</title>
      <link>https://jiawen.live/article/40</link>
      <guid isPermaLink="true">https://jiawen.live/article/40</guid>
      <description>一台服务器、一个 nginx，把 jiawen.live、api.、admin. 几个域名分发到各自的容器，统一收口 TLS 并开启 HTTP/3。讲网关的模板化配置、HTTP/3 的端口要点和证书热加载。</description>
      <pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Tool-driven Agent Loop：让 LLM 只做调度</title>
      <link>https://jiawen.live/article/33</link>
      <guid isPermaLink="true">https://jiawen.live/article/33</guid>
      <description>Agent 的本质不是「让模型无所不知」，而是「让模型学会调用工具」。拆解一个工具驱动的 Agent Loop：调用模型 → 解析工具调用 → 执行 → 带结果再调，循环到收敛，并用最大步数防止贪婪死循环。</description>
      <pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>一套 Docker Compose 同时服务开发与生产：分层覆盖</title>
      <link>https://jiawen.live/article/39</link>
      <guid isPermaLink="true">https://jiawen.live/article/39</guid>
      <description>用三个 compose 文件——基础拓扑、开发覆盖、生产覆盖——让同一套服务定义既能本地一键热重载，又能生产一键带网关和证书部署。讲清分层覆盖的设计与取舍。</description>
      <pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>在 Cloudflare Workers 上从零搭一个 RAG + Agent 服务</title>
      <link>https://jiawen.live/article/32</link>
      <guid isPermaLink="true">https://jiawen.live/article/32</guid>
      <description>不用任何自建中间件，全栈基于 Cloudflare 原生组件（Workers、D1、R2、AI Search、AI Gateway）搭一个能回答「关于我博客」的 AI Agent。这是一次边缘 Serverless AI 的完整实践。</description>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>axios 分层封装：多后端鉴权与 401 处理</title>
      <link>https://jiawen.live/article/31</link>
      <guid isPermaLink="true">https://jiawen.live/article/31</guid>
      <description>后台要同时访问主站 API 和独立的 AI 服务，两个后端鉴权方式、响应结构都不同。用「每个后端一个 axios 实例 + 拦截器」分层封装，把鉴权、信封解包、401 登出收敛到一处。</description>
      <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>构建产物与环境解耦：一次构建、多处运行</title>
      <link>https://jiawen.live/article/30</link>
      <guid isPermaLink="true">https://jiawen.live/article/30</guid>
      <description>12-factor 的「一次构建、多处运行」说起来简单，落到前端镜像就是一个问题：配置该在构建期还是运行期注入？我用容器启动时 envsubst 渲染配置的方式，让一个镜像跑遍所有环境。</description>
      <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>React 19 + Ant Design 5 后台：运行时配置注入（app-config.js）</title>
      <link>https://jiawen.live/article/29</link>
      <guid isPermaLink="true">https://jiawen.live/article/29</guid>
      <description>前端 SPA 怎么在「同一份构建产物」里适配不同环境的 API 地址？答案不是构建期替换，而是容器启动时把环境变量渲染进一个 app-config.js，挂到 window 上供运行时读取。</description>
      <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>APlayer 与浮层的 z-index 之战：移动端遮挡复盘</title>
      <link>https://jiawen.live/article/28</link>
      <guid isPermaLink="true">https://jiawen.live/article/28</guid>
      <description>移动端音乐播放器偶尔盖住 AI 对话浮窗。根因是第三方库写死了一个很高的 z-index。复盘这次问题，顺便聊聊一套页面里该如何统一管理「层级」。</description>
      <pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>给博客做一个流式 AI 对话浮窗：SSE + 组合式函数</title>
      <link>https://jiawen.live/article/27</link>
      <guid isPermaLink="true">https://jiawen.live/article/27</guid>
      <description>在博客右下角加一个会「打字机式」吐字的 AI 助手。前端用 Server-Sent Events 接收流式响应，用一个 useAiChat 组合式函数收敛全部状态，匿名 token 存在 localStorage。</description>
      <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Nuxt 4 SSR runtimeConfig：浏览器与容器内网双地址</title>
      <link>https://jiawen.live/article/26</link>
      <guid isPermaLink="true">https://jiawen.live/article/26</guid>
      <description>SSR 应用有两种「请求 API」的视角——服务端渲染时走容器内网，浏览器水合后走公网域名。用 Nuxt runtimeConfig 的 public / 私有分区优雅地表达这件事。</description>
      <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>把对象存储抽象成一层 S3 接口：兼容 OSS / R2 / MinIO</title>
      <link>https://jiawen.live/article/25</link>
      <guid isPermaLink="true">https://jiawen.live/article/25</guid>
      <description>用 AWS SDK 的 S3 协议作为统一抽象，让开发环境跑本地 MinIO、生产用阿里云 OSS、未来可换 Cloudflare R2，全靠改环境变量。还要避开 SDK 新版默认校验头踩的坑。</description>
      <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>统一响应与语义化错误码：拦截器 + 异常过滤器</title>
      <link>https://jiawen.live/article/24</link>
      <guid isPermaLink="true">https://jiawen.live/article/24</guid>
      <description>让后端所有出口长一个样——成功走拦截器包装成统一信封，失败走异常过滤器配语义化错误码。前端从此只写一份处理逻辑，再也不用为每个接口的返回结构打补丁。</description>
      <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>JWT 双令牌：access/refresh 边界与 Identity 守卫设计</title>
      <link>https://jiawen.live/article/23</link>
      <guid isPermaLink="true">https://jiawen.live/article/23</guid>
      <description>用短命 access token + 长命 refresh token 兼顾安全与体验，再用一个「全局尽力解析、按需强制校验」的身份守卫，让公开接口也能识别登录态。这是我博客后端的鉴权骨架。</description>
      <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Redis 归档缓存的事件驱动失效：EventEmitter2 + TTL 兜底</title>
      <link>https://jiawen.live/article/22</link>
      <guid isPermaLink="true">https://jiawen.live/article/22</guid>
      <description>博客归档页「按年份分组的全部文章」读多写少，适合缓存。但缓存怎么失效才能既实时又稳？我用文章变更事件主动清缓存，再加一个 TTL 兜底，组合出一个稳妥的方案。</description>
      <pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Typegoose 实战：用装饰器写出类型安全的 Mongoose 模型</title>
      <link>https://jiawen.live/article/21</link>
      <guid isPermaLink="true">https://jiawen.live/article/21</guid>
      <description>Mongoose 的 Schema 和 TypeScript 类型天然是两份东西，容易写着写着就对不上。Typegoose 用一个 class + 装饰器同时定义二者，让模型既是 schema 又是类型。</description>
      <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>MongoDB 双 ID 体系：为什么同时保留 _id 与自增 id</title>
      <link>https://jiawen.live/article/20</link>
      <guid isPermaLink="true">https://jiawen.live/article/20</guid>
      <description>一篇文章既有 MongoDB 的 ObjectId（_id），又有一个从 1 开始自增的数字 id。看似冗余，背后是对 URL 友好性、外部引用稳定性与查询性能的权衡。</description>
      <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>用 NestJS + Fastify 重写 Koa 博客后端：架构取舍与收益</title>
      <link>https://jiawen.live/article/19</link>
      <guid isPermaLink="true">https://jiawen.live/article/19</guid>
      <description>把一套基于 Koa 的个人博客后端用 NestJS + Fastify 重写，记录模块化分层、统一响应、依赖注入带来的可维护性提升，以及为什么选 Fastify 而不是 Express。</description>
      <pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Jenkins 不完全指南：从安装到流水线即代码</title>
      <link>https://jiawen.live/article/18</link>
      <guid isPermaLink="true">https://jiawen.live/article/18</guid>
      <description>Jenkins 是老牌的开源持续集成工具。一篇覆盖核心概念、安装、声明式 Pipeline、凭据管理与最佳实践的实用指南，帮你把构建-测试-部署自动化跑起来。</description>
      <pubDate>Mon, 06 Feb 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Docker 快速上手：从镜像到容器的常用命令</title>
      <link>https://jiawen.live/article/1</link>
      <guid isPermaLink="true">https://jiawen.live/article/1</guid>
      <description>一份按「镜像 / 容器 / 网络与数据卷 / 清理」分组的 Docker 常用命令速查，配上每个动作的使用场景与易踩的坑，适合需要时随手翻。</description>
      <pubDate>Thu, 08 Dec 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>阿里云容器镜像加速：配置 registry-mirrors 告别拉取超时</title>
      <link>https://jiawen.live/article/14</link>
      <guid isPermaLink="true">https://jiawen.live/article/14</guid>
      <description>国内拉 Docker Hub 镜像慢甚至超时，配一个阿里云镜像加速器即可。讲清加速器原理、daemon.json 配置与验证方式，以及它不加速私有仓库这点要注意。</description>
      <pubDate>Thu, 18 Nov 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>oh-my-zsh 疑难杂症与提速：插件、主题与启动慢排查</title>
      <link>https://jiawen.live/article/5</link>
      <guid isPermaLink="true">https://jiawen.live/article/5</guid>
      <description>oh-my-zsh 好用但容易越配越慢、越配越乱。整理几个高频问题：启动变慢怎么定位、必装插件、主题与字体、以及配置丢失的排查。</description>
      <pubDate>Wed, 30 Jun 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Vim 窗口管理：split、切换、缩放与标签页</title>
      <link>https://jiawen.live/article/10</link>
      <guid isPermaLink="true">https://jiawen.live/article/10</guid>
      <description>在一个 Vim 里同时看多个文件，靠的是窗口（split）、缓冲区（buffer）与标签页（tab）三个概念。讲清它们的区别与高频操作，把多文件编辑流盘顺。</description>
      <pubDate>Mon, 14 Dec 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Vim 问题集合：退出、中文乱码、复制到系统剪贴板等高频坑</title>
      <link>https://jiawen.live/article/11</link>
      <guid isPermaLink="true">https://jiawen.live/article/11</guid>
      <description>从「怎么退出 Vim」到中文乱码、粘贴变形、剪贴板不通、退格键失灵——汇总新手最常卡住的 Vim 问题与解法，配上原因说明。</description>
      <pubDate>Tue, 20 Oct 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Vim 前端开发插件整理：补全、LSP、文件树与格式化</title>
      <link>https://jiawen.live/article/9</link>
      <guid isPermaLink="true">https://jiawen.live/article/9</guid>
      <description>把 Vim 调成趁手的前端编辑器，关键是几类插件：LSP 补全、语法高亮、文件树、模糊查找、格式化与 Git。整理一套实用配置思路与选型。</description>
      <pubDate>Tue, 13 Oct 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 快速入门：类型系统的核心心智模型</title>
      <link>https://jiawen.live/article/17</link>
      <guid isPermaLink="true">https://jiawen.live/article/17</guid>
      <description>TypeScript 不只是「给 JS 加类型」，它是一套结构化类型系统。从基础类型、接口、泛型到联合/交叉类型，建立写 TS 的核心心智，附 tsconfig 关键开关。</description>
      <pubDate>Fri, 27 Dec 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>HomeBrew 食用指南：macOS 的包管理器怎么用才顺手</title>
      <link>https://jiawen.live/article/4</link>
      <guid isPermaLink="true">https://jiawen.live/article/4</guid>
      <description>HomeBrew 是 Mac 上最常用的包管理器。一份涵盖安装、formula 与 cask 区别、常用命令、国内换源加速与维护清理的实用指南。</description>
      <pubDate>Sun, 13 Oct 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>本地开发绕过跨域：从「关浏览器安全」到正确做法</title>
      <link>https://jiawen.live/article/13</link>
      <guid isPermaLink="true">https://jiawen.live/article/13</guid>
      <description>早年开发常用「带 --disable-web-security 启动 Chrome」来绕过跨域，但它治标且危险。讲清 CORS 到底是什么、为什么会跨域，以及本地开发的正确解法（代理 / 后端 CORS）。</description>
      <pubDate>Wed, 19 Dec 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>React Hooks 快速尝鲜：useState / useEffect 与自定义 Hook</title>
      <link>https://jiawen.live/article/15</link>
      <guid isPermaLink="true">https://jiawen.live/article/15</guid>
      <description>Hooks 让函数组件也能拥有状态与生命周期。一篇从 useState、useEffect 讲到依赖数组陷阱与自定义 Hook 复用逻辑的上手指南，附常见误区。</description>
      <pubDate>Thu, 04 Oct 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Vim 工作流：模式、动作 + 文本对象的「语言」思维</title>
      <link>https://jiawen.live/article/8</link>
      <guid isPermaLink="true">https://jiawen.live/article/8</guid>
      <description>Vim 的高效不在记快捷键，而在理解它把编辑变成一门「动作 + 文本对象」的语言。讲清模式切换、操作符组合与高频动作，建立可生长的编辑心智。</description>
      <pubDate>Wed, 11 Jul 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>macOS 环境变量配置：搞清 PATH 与各 shell 配置文件的加载顺序</title>
      <link>https://jiawen.live/article/3</link>
      <guid isPermaLink="true">https://jiawen.live/article/3</guid>
      <description>在 Mac 上配环境变量总是「这次生效下次又没了」？根因是没搞清不同 shell 的配置文件加载时机。讲清 PATH、zsh/bash 配置文件顺序与正确的持久化方式。</description>
      <pubDate>Tue, 22 May 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>PM2 基本使用：Node 进程的守护、日志与开机自启</title>
      <link>https://jiawen.live/article/6</link>
      <guid isPermaLink="true">https://jiawen.live/article/6</guid>
      <description>PM2 是 Node 应用最常用的进程管理器，负责崩溃自动重启、多实例负载、日志管理与开机自启。一份常用命令 + ecosystem 配置 + 部署实践的速查。</description>
      <pubDate>Wed, 13 Dec 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>用 ffmpeg 批量把 flac 转成 mp3：一条命令搞定整目录</title>
      <link>https://jiawen.live/article/16</link>
      <guid isPermaLink="true">https://jiawen.live/article/16</guid>
      <description>flac 无损好听但体积大、设备兼容性一般。用 ffmpeg 一条循环命令就能批量转成 mp3，还能保留元数据与封面。附码率选择与常见参数说明。</description>
      <pubDate>Wed, 14 Dec 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Nginx 基本使用：命令、配置结构与反向代理</title>
      <link>https://jiawen.live/article/7</link>
      <guid isPermaLink="true">https://jiawen.live/article/7</guid>
      <description>Nginx 日常用得最多的就那几条命令和几段配置。一份涵盖启停/reload、配置结构、静态站点、反向代理与常见排查的速查。</description>
      <pubDate>Thu, 08 Dec 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Git 使用指南：从日常工作流到撤销与协作的常用命令</title>
      <link>https://jiawen.live/article/12</link>
      <guid isPermaLink="true">https://jiawen.live/article/12</guid>
      <description>一份按「日常提交 / 分支协作 / 撤销后悔药 / 远程同步」分组的 Git 实用指南，重点讲清各种「撤销」的区别，以及常用但容易混淆的命令。</description>
      <pubDate>Mon, 21 Dec 2015 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>