<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>栈隐札记</title>
    <link>https://zhanyin.site</link>
    <description>Ren Hongchang 的个人博客，记录技术、生活和一些简单思考。</description>
    <language>zh-CN</language>
    <atom:link href="https://zhanyin.site/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>从 Node.js 到 Rust：一个博客编译器的诞生与使用指南</title>
      <link>https://zhanyin.site/posts/from-nodejs-to-rust-compiler/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/from-nodejs-to-rust-compiler/</guid>
      <description><![CDATA[我把博客的构建管线从 Node.js 换成了自己写的 Rust 编译器 kiln。不是因为 Rust 更好——是因为需求变了。这篇文章记录了决策过程、架构设计、踩过的坑，以及一份完整的使用指南：读完你也能用 kiln 从零搭建一个静态站点。]]></description>
      <pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Service 层什么时候有价值，什么时候只是空气</title>
      <link>https://zhanyin.site/posts/when-service-layer-has-value/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/when-service-layer-has-value/</guid>
      <description><![CDATA[如果 Service 层只是把 Repository 方法复制一遍，那它没有价值——它只是给调用链加了一层空气。Service 层的价值在于编排和协调：把多个数据操作组合成一个有业务含义的流程，或者施加约束和副作用。]]></description>
      <pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>为什么错误处理是架构问题，不只是代码问题</title>
      <link>https://zhanyin.site/posts/error-handling-is-architecture/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/error-handling-is-architecture/</guid>
      <description><![CDATA[很多系统不是因为 happy path 写得差出问题，而是因为失败路径像临时搭的棚子——该重试的没重试，该补偿的没补偿，该报警的静默。错误处理不是 if err != nil 后面写什么，是系统面对失败时保持可预测、可恢复、可解释的能力。]]></description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>技术债到底该怎么判断优先级</title>
      <link>https://zhanyin.site/posts/how-to-prioritize-technical-debt/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/how-to-prioritize-technical-debt/</guid>
      <description><![CDATA[技术债不是'代码丑'——是今天的决策降低了未来的变化速度或提高了修复成本。判断优先级靠三个维度：是否阻碍演进、是否影响正确性、是否削弱可观测性。不是所有债都必须还，但所有债都必须被看见。]]></description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>为什么&quot;为了以后扩展&quot;通常是坏理由</title>
      <link>https://zhanyin.site/posts/why-for-future-extension-is-bad/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/why-for-future-extension-is-bad/</guid>
      <description><![CDATA[为了未来不确定的需求增加抽象、配置和分支，不是前瞻，是提前支付复杂度税。YAGNI 不是懒惰，是对不确定性的诚实。]]></description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>状态转换规则需要一个家</title>
      <link>https://zhanyin.site/posts/state-transition-needs-a-home/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/state-transition-needs-a-home/</guid>
      <description><![CDATA[接手一个不熟悉的系统时，总要打开三四个文件，从散落的 if/else 里反向工程出一张状态转换图——这张图本来应该在代码里，但它不在。这篇文章聊的是一个设计层面的观察：把状态转换规则当成独立的东西显式化，哪怕只是一张表，对系统正确性的贡献比很多重量级架构更大。]]></description>
      <pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>等到第二个用例再抽象</title>
      <link>https://zhanyin.site/posts/a-failed-abstraction/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/a-failed-abstraction/</guid>
      <description><![CDATA[看到重复代码就抽出来——这个本能太强了，强到很少有人在动手之前停下来问：我现在知道得够多吗？信息不够的抽象比没有抽象更昂贵，它不解决问题，它创造了一个需要持续修补的东西。]]></description>
      <pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>拆不拆微服务：几笔需要算清的账</title>
      <link>https://zhanyin.site/posts/modular-monolith-vs-microservices/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/modular-monolith-vs-microservices/</guid>
      <description><![CDATA[要不要拆微服务，先把延迟、事务、调试、部署、测试、团队协作这几笔账算清楚，再看负载分化、交付节奏、故障隔离、团队规模这些信号有没有实际发生。]]></description>
      <pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>当监控不再够用：理解可观测性</title>
      <link>https://zhanyin.site/posts/understanding-observability/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/understanding-observability/</guid>
      <description><![CDATA[可观测性不是一套工具，是一种系统能力——从外部输出推断内部状态的能力。从控制论概念起源到 eBPF 前沿，一份技术全景综述。]]></description>
      <pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>跨域匹配：不是共享数据，而是建立可验证的对应关系</title>
      <link>https://zhanyin.site/posts/cross-domain-identity-matching/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/cross-domain-identity-matching/</guid>
      <description><![CDATA[跨域匹配的本质不是同步数据，而是在两个边界之间建立一条有条件的、可解释的、可撤销的对应关系。从 Cookie Sync 到支付回调，同一个模型。]]></description>
      <pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>这个博客系统是怎么工作的</title>
      <link>https://zhanyin.site/posts/lightweight-blog-architecture/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/lightweight-blog-architecture/</guid>
      <description><![CDATA[栈隐札记的技术架构：Node.js 构建脚本、Markdown、模板字符串、纯 CSS，以及为什么选这套方案。]]></description>
      <pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>最后一个不问你&apos;你是谁&apos;的协议</title>
      <link>https://zhanyin.site/posts/rss/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/rss/</guid>
      <description><![CDATA[你大概率已经很多年没见过 RSS 这个词了。RSS 是互联网早期去中心化理想的一个活化石——它不是更好的选择，只是一个不同的选择。这篇文章不劝你用 RSS，只做一件事：告诉你它从哪来、怎么工作、为什么退场，以及它还活在哪。]]></description>
      <pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>你好。</title>
      <link>https://zhanyin.site/posts/hello-again/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/hello-again/</guid>
      <description><![CDATA[栈隐札记的第一篇，打个招呼。]]></description>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>别急着裁图——Native 竞价图片管理的另一种思路</title>
      <link>https://zhanyin.site/posts/openrtb-native-creative-image-strategy/</link>
      <guid isPermaLink="true">https://zhanyin.site/posts/openrtb-native-creative-image-strategy/</guid>
      <description><![CDATA[Native 广告竞价里，bid request 带着各种图片尺寸要求。直觉反应是提前裁好所有尺寸，进阶想法是竞价时实时裁图。两条路都有隐蔽的代价。这篇文章讨论一个不同的方向：把问题从图片处理重新框定为素材可投放性管理——竞价前处理，竞价时匹配，匹配不上不强求。]]></description>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
    </item>

  </channel>
</rss>