<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>远栈</title><link>https://stackonward.com/zh/</link><description>Recent content on 远栈</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://stackonward.com/zh/index.xml" rel="self" type="application/rss+xml"/><item><title>Jev 是什么？它不写答案，只帮 Agent 选下一步</title><link>https://stackonward.com/zh/posts/jev-system-one-open-source-projects/</link><pubDate>Sat, 19 Sep 2026 13:15:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/jev-system-one-open-source-projects/</guid><description>&lt;p&gt;Jev 这几天火得有点夸张。&lt;a href="https://github.com/browser-use/jev-ultrafast" target="_blank" rel="noopener"&gt;&lt;code&gt;jev-ultrafast&lt;/code&gt;&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt; 创建不到三天就超过 6400 Star，Mac 与 Android 自动操作、Coding Agent 路由、代码审查等项目也接连冒了出来。&lt;a href="https://typesafe.ai/" target="_blank" rel="noopener"&gt;Jev&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt; 是 TypeSafe 推出的模型，专门处理程序预先限定好答案范围的问题。它只返回选择、评分或概率，不写开放式答案。&lt;/p&gt;</description></item><item><title>StarryBlu 开卡、入金与订阅 ChatGPT</title><link>https://stackonward.com/zh/posts/starryblu-chatgpt-subscription/</link><pubDate>Thu, 17 Sep 2026 07:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/starryblu-chatgpt-subscription/</guid><description>&lt;p&gt;如果你想订阅 ChatGPT，但手里没有可以支付的境外银行卡，可以申请一张 StarryBlu 实体卡。卡片开通后，可以从香港银行卡发起 FPS 转账，把港币转入 StarryBlu，再到 ChatGPT 网页填写卡片信息付款。FPS 转账没有手续费；直接用人民币跨境转入，手续费会高一些。&lt;/p&gt;</description></item><item><title>Sub2API 部署教程：在 Ubuntu 24.04 上配置 HTTPS、AI 账号和 API Key</title><link>https://stackonward.com/zh/posts/sub2api-deployment/</link><pubDate>Tue, 15 Sep 2026 00:20:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/sub2api-deployment/</guid><description>&lt;p&gt;如果你已经有 Claude、OpenAI 或 Gemini 账号，想在 Codex、Cherry Studio 等客户端里使用，可以在自己的 Ubuntu 服务器上部署 Sub2API。账号保存在网关后台，客户端只填写网关地址和单独生成的 API Key，不需要拿到原账号的登录信息。&lt;/p&gt;</description></item><item><title>Google Play 日区订阅 ChatGPT｜Android 操作教程</title><link>https://stackonward.com/zh/posts/google-play-chatgpt-japan-subscription/</link><pubDate>Wed, 09 Sep 2026 23:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/google-play-chatgpt-japan-subscription/</guid><description>&lt;p&gt;Android 端可以在 ChatGPT App 内拉起 Google Play 订阅。截图中的日区套餐页显示 Plus 为 &lt;strong&gt;JP¥2,860/月&lt;/strong&gt;；汇率、税费、套餐或账号地区变化后，价格以付款页为准。Google Play 负责扣款和续订，ChatGPT 账号获得套餐权益，付款前要把两个账号都核对一遍。&lt;a href="https://help.openai.com/en/articles/20001056-why-am-i-seeing-a-message-that-my-subscription-is-associated-with-another-account" target="_blank" rel="noopener"&gt;OpenAI 说明移动订阅会同时绑定 Google Play 账号和购买时登录的 ChatGPT 账号&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>香港汇丰开户：从过境到手机申请</title><link>https://stackonward.com/zh/posts/hsbc-hong-kong-account-opening/</link><pubDate>Sat, 05 Sep 2026 18:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/hsbc-hong-kong-account-opening/</guid><description>&lt;p&gt;符合条件的客户可以在香港通过 HSBC HK App 申请开户，不必专程前往屯门。封面的“30分钟开完”只对应这次经历，审批用时和可用功能因人而异。&lt;a href="https://www.hsbc.com.hk/zh-hk/international/banking-in-hong-kong/" target="_blank" rel="noopener"&gt;开户资格与要求&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="过境后先连好网络"&gt;过境后，先连好网络&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;出发前。&lt;/strong&gt; 向运营商确认香港漫游、流量及短信支持。支付宝搜“境外上网”，按行程选套餐。&lt;/p&gt;</description></item><item><title>Claude Code Hooks 怎么用：把确定性检查接入 Claude Code 与 Codex</title><link>https://stackonward.com/zh/posts/claude-code-codex-hooks/</link><pubDate>Sat, 05 Sep 2026 00:50:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/claude-code-codex-hooks/</guid><description>&lt;p&gt;Claude Code Hooks 怎么用，关键不在于记住所有事件，而在于待自动化的动作是否有明确的触发时机和唯一结果。项目已有的配置语法检查适合接入 Hook：文件改完后运行同一条命令，有效配置返回成功，无效配置返回确定错误，不需要模型选择标准。&lt;/p&gt;</description></item><item><title>Agent Skill 怎么写：把重复工作流接入 Claude Code 与 Codex</title><link>https://stackonward.com/zh/posts/agent-skill-project-workflow/</link><pubDate>Sat, 05 Sep 2026 00:20:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/agent-skill-project-workflow/</guid><description>&lt;p&gt;Agent Skill 怎么写，取决于准备封装的流程是否会在不同任务中重复、是否需要根据现场信息作判断，以及执行后能否观察到项目结果。始终成立的仓库事实属于项目规则，只发生一次的需求属于当前 Prompt，无论模型怎样判断都必须执行的事件动作属于 Hook；外部服务和数据连接则由 MCP 或其他工具提供。&lt;/p&gt;</description></item><item><title>AI Coding 提示词怎么写：只写当前任务，不重复项目规则</title><link>https://stackonward.com/zh/posts/coding-agent-task-prompt/</link><pubDate>Fri, 04 Sep 2026 18:20:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/coding-agent-task-prompt/</guid><description>&lt;p&gt;AI Coding 提示词怎么写，取决于这次任务有哪些信息尚未由项目配置提供。项目规则已经保存仓库结构、项目命令和长期边界，Skill 已经保存重复流程，Hook 和 CI 执行确定性动作，权限策略限制工具能力；当前 Prompt 只需说明要改变的状态、已有证据、影响范围、授权边界和完成后必须出现的结果。&lt;/p&gt;</description></item><item><title>AGENTS.md 怎么写：根规则、目录规则与 CLAUDE.md 复用</title><link>https://stackonward.com/zh/posts/agents-md-claude-md-project-rules/</link><pubDate>Fri, 04 Sep 2026 17:20:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/agents-md-claude-md-project-rules/</guid><description>&lt;p&gt;AGENTS.md 怎么写，先看一条信息对谁长期成立、会不会改变 Coding Agent 的行动。全仓共享的目录地图、权威命令和跨模块边界放在仓库根；只约束后端、前端或 Worker 的规则放在对应目录；跨仓库的个人偏好留在用户全局；本次任务要改什么仍写在当前 Prompt。CLAUDE.md 采用同一内容边界，只是由 Claude Code 按自己的文件与加载机制读取。&lt;/p&gt;</description></item><item><title>Claude Code 与 Codex 配置怎样协同：全局、项目、Prompt、Skill 与 Hook</title><link>https://stackonward.com/zh/posts/claude-code-codex-configuration-guide/</link><pubDate>Fri, 04 Sep 2026 17:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/claude-code-codex-configuration-guide/</guid><description>&lt;p&gt;Claude Code 与 Codex 的配置要先分清两件事：谁应该看到这条信息，以及它要在什么时候、以什么方式生效。跨仓库都成立的个人习惯放在用户层；团队共同遵守的项目事实放在仓库里；只约束前端或后端的规则靠近对应目录；本次要改什么留在 Prompt；可重复的判断流程交给 Skill；必须发生的机械动作由 Hook、权限或项目原有的 CI 执行。&lt;/p&gt;</description></item><item><title>为什么不同用户看到的支付方式不一样：地区、币种、钱包与配置排查</title><link>https://stackonward.com/zh/posts/payment-method-availability-diagnosis/</link><pubDate>Fri, 04 Sep 2026 07:08:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/payment-method-availability-diagnosis/</guid><description>&lt;p&gt;RouteNest 的 Pro 月付页出现了三种结果：荷兰买家用 EUR 打开桌面结账，能看到 iDEAL 和银行卡；美国买家用 USD，只看到银行卡和钱包；同一位美国买家改从受限的 App 内 WebView 打开，钱包按钮又不见了。为什么不同用户看到的支付方式不一样？因为每种方式都要分别满足当前账户、这笔订单、买家设备和页面设置，换掉其中一个条件，结果就可能不同。&lt;/p&gt;</description></item><item><title>Hosted Checkout、嵌入式支付和自建结账怎么选</title><link>https://stackonward.com/zh/posts/hosted-embedded-custom-checkout-comparison/</link><pubDate>Fri, 04 Sep 2026 06:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/hosted-embedded-custom-checkout-comparison/</guid><description>&lt;p&gt;RouteNest 把 Pro 订阅的付款表单放进价格页，荷兰买家点 iDEAL 后，浏览器还是跳到了银行。买家授权回来，页面也不能马上开通会员，因为支付 Webhook 还没到。这个过程没有出错：表单在哪里、付款是否需要离站、付款是否已经确认，本来就是三件事。&lt;/p&gt;</description></item><item><title>Product、Plan、Price 怎么建模：SaaS 套餐、优惠与价格版本</title><link>https://stackonward.com/zh/posts/product-plan-price-saas-catalog-modeling/</link><pubDate>Fri, 04 Sep 2026 05:58:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/product-plan-price-saas-catalog-modeling/</guid><description>&lt;p&gt;RouteNest 准备把 Pro 月付从 19 美元调到 24 美元。如果系统只有一条 &lt;code&gt;plan=pro, price=19, stripe_price_id=...&lt;/code&gt; 的可变记录，直接把 19 改成 24，旧订阅便失去原价依据。年付 190 是否一起变化、欧元价是否重算、&lt;code&gt;WELCOME20&lt;/code&gt; 基于哪个金额，以及 Paddle 或 Creem 应使用哪个对象，也都没有稳定答案。&lt;/p&gt;</description></item><item><title>支付服务商审核为什么被拒：怎样提交可核验的 SaaS 业务材料</title><link>https://stackonward.com/zh/posts/payment-provider-review-rejected-verifiable-materials/</link><pubDate>Fri, 04 Sep 2026 05:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/payment-provider-review-rejected-verifiable-materials/</guid><description>&lt;p&gt;申请主体写的是 &lt;code&gt;Northstar Labs Limited&lt;/code&gt;，网站页脚只有产品名 &lt;code&gt;RouteNest&lt;/code&gt;；定价页卖每月 19 美元的自动续费订阅，退款页却仍在描述一次性下载；产品必须登录才能看，审核者没有测试账号；结算账户的受益人还是创始人个人。这些信息可以分别为真，放在一起却说不清是谁通过哪个域名销售什么、怎样交付，以及钱最终付给谁。&lt;/p&gt;</description></item><item><title>Stripe、Paddle、Lemon Squeezy、Creem 怎么选：从准入算到账</title><link>https://stackonward.com/zh/posts/stripe-paddle-lemon-squeezy-creem-comparison/</link><pubDate>Fri, 04 Sep 2026 04:10:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/stripe-paddle-lemon-squeezy-creem-comparison/</guid><description>&lt;p&gt;对一家用香港公司和香港美元账户、向德国个人销售每月 99 美元 SaaS 的团队，Stripe Standard、Stripe Managed Payments、Paddle、Lemon Squeezy 和 Creem 实际代表五种交易安排，卖方身份、税费、可用支付方式、到账节奏和退出难度都不一样。&lt;/p&gt;</description></item><item><title>Payment Processor 和 Merchant of Record 有什么区别：SaaS 收款责任怎么选</title><link>https://stackonward.com/zh/posts/payment-processor-vs-merchant-of-record/</link><pubDate>Fri, 04 Sep 2026 03:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/payment-processor-vs-merchant-of-record/</guid><description>&lt;p&gt;客户购买一份税前 100 美元的 SaaS 年付订阅，结账时另付 20 美元税款。订单在两套系统里都可能显示 &lt;code&gt;paid&lt;/code&gt;，但账上发生的事并不一样：接入普通 Payment Processor 时，通常由你的公司向客户销售并承担这笔交易的税务、退款与交付责任；接入 Merchant of Record（MoR）时，MoR 在协议覆盖的订单中成为买家面对的卖方，再把扣除税款、费用和合同调整项后的供应商款付给你。&lt;/p&gt;</description></item><item><title>中国开发者做海外 SaaS 收款：先判断主体、产品与结算资格</title><link>https://stackonward.com/zh/posts/china-developers-overseas-saas-payments/</link><pubDate>Fri, 04 Sep 2026 01:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/china-developers-overseas-saas-payments/</guid><description>&lt;p&gt;海外买家付完款后，货款应按约定进入签约主体自己的账户，退款、税务和续费也要各有负责方。更换服务商时，客户资料、支付凭证和存量订阅还得有迁移出口。能同时做到这些，才是一条可用的海外 SaaS 收款路线。&lt;/p&gt;</description></item><item><title>发布失败怎么自动恢复原版本：事务状态、入口切换与回滚边界</title><link>https://stackonward.com/zh/posts/automatic-deployment-recovery/</link><pubDate>Thu, 03 Sep 2026 02:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/automatic-deployment-recovery/</guid><description>&lt;p&gt;发布脚本突然退出时，不要直接执行 &lt;code&gt;docker compose down&lt;/code&gt;。恢复动作取决于三个事实：候选版本是否已经接管公开流量、旧入口是否还能恢复、业务验证是否完成。旧版本仍在服务时，只需清理候选；入口可能切到一半时，要恢复旧上游；新版本仍在观察时，也应切回旧版；只有发布已经进入提交阶段，恢复程序才继续补齐提交记录。&lt;/p&gt;</description></item><item><title>Docker Compose 单机短停机发布：健康检查、入口切换与连接排空</title><link>https://stackonward.com/zh/posts/single-server-short-downtime-deployment/</link><pubDate>Thu, 03 Sep 2026 02:25:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/single-server-short-downtime-deployment/</guid><description>&lt;p&gt;单机短停机发布的可靠顺序是：启动候选版本，等待业务就绪，校验并切换 Caddy 上游，从公开域名确认结果，排空旧连接，最后停止旧版本。旧容器不能在候选版本接管流量前删除。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/single-server-short-downtime-deployment/zh/blue-green-release-flow.svg" alt="旧版本在 18080 提供流量，候选版本在 18081 启动并通过健康检查，Caddy 切换后验证公开域名，再排空旧连接" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;入口切换是唯一对外生效点；候选启动和预热都发生在切换之前。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="适用条件与限制"&gt;适用条件与限制&lt;/h2&gt;
&lt;p&gt;同一台主机同时运行蓝、绿两套应用实例，适合满足以下条件的服务：&lt;/p&gt;</description></item><item><title>数据库迁移应该在发布哪一步执行：Expand、Migrate、Contract</title><link>https://stackonward.com/zh/posts/database-migration-release-order/</link><pubDate>Thu, 03 Sep 2026 02:20:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/database-migration-release-order/</guid><description>&lt;p&gt;数据库迁移没有统一的“先于应用”或“晚于应用”答案。安全顺序取决于新旧应用能否同时使用当前 schema：新增兼容结构先执行，应用再上线，数据随后回填；删除字段、改名和收紧约束放到旧版本退出后的独立发布。&lt;/p&gt;</description></item><item><title>Docker 镜像为什么要固定 digest：可复现部署、升级与回滚</title><link>https://stackonward.com/zh/posts/docker-image-digest-pinning/</link><pubDate>Thu, 03 Sep 2026 02:15:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-image-digest-pinning/</guid><description>&lt;p&gt;生产镜像应写成 &lt;code&gt;仓库:版本@sha256:摘要&lt;/code&gt;。版本 tag 让人看懂计划部署哪个版本，digest 让 Docker 拉取确定的内容；仅使用 &lt;code&gt;latest&lt;/code&gt;、&lt;code&gt;stable&lt;/code&gt; 或可移动版本 tag，无法保证重建和回滚得到原来的镜像。&lt;/p&gt;</description></item><item><title>OneDev 完整教程：从 Docker 部署、Git 仓库到 CI/CD 自动发布</title><link>https://stackonward.com/zh/posts/onedev-production-deployment/</link><pubDate>Thu, 03 Sep 2026 02:10:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/onedev-production-deployment/</guid><description>&lt;p&gt;OneDev 可以在一个实例里管理 Git 仓库、代码评审、Issue、CI/CD、构建制品和软件包。需要把代码留在自有服务器，又不想分别维护 Git 服务、CI 和包仓库时，可以考虑使用 OneDev。它的单机资源要求也低于完整 GitLab。&lt;/p&gt;</description></item><item><title>Docker 数据卷、文件权限与密钥怎么配置</title><link>https://stackonward.com/zh/posts/docker-volume-permissions-secrets/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-volume-permissions-secrets/</guid><description>&lt;p&gt;数据库和应用状态写入 volume，只读配置使用 bind mount，密钥通过文件挂载给指定服务。配置完成后还要核对进程 UID/GID，并分别执行容器重建和独立恢复。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-volume-permissions-secrets/zh/storage-boundaries.svg" alt="容器把数据库状态写入 named volume，只读读取宿主配置，并从 secrets 文件读取密码的结构图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;数据库写入 named volume，配置只读挂载，密钥仅挂载到需要它的服务。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="根据数据用途选择-named-volumebind-mount-或-tmpfs"&gt;根据数据用途选择 named volume、bind mount 或 tmpfs&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;适合内容&lt;/th&gt;
					&lt;th&gt;优点&lt;/th&gt;
					&lt;th&gt;主要风险&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;named volume&lt;/td&gt;
					&lt;td&gt;数据库、队列、应用持久状态&lt;/td&gt;
					&lt;td&gt;生命周期由 Docker 管理，路径不与单台主机布局强耦合&lt;/td&gt;
					&lt;td&gt;宿主备份和迁移要明确卷名与驱动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;bind mount&lt;/td&gt;
					&lt;td&gt;Caddyfile、明确的数据目录、宿主脚本&lt;/td&gt;
					&lt;td&gt;路径可见，便于现有备份与权限工具管理&lt;/td&gt;
					&lt;td&gt;强依赖宿主路径、属主和 SELinux/AppArmor 条件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;tmpfs&lt;/td&gt;
					&lt;td&gt;临时敏感文件、无需持久化的高速临时数据&lt;/td&gt;
					&lt;td&gt;不写入持久磁盘&lt;/td&gt;
					&lt;td&gt;重启即丢失，容量占用内存&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href="https://docs.docker.com/engine/storage/" target="_blank" rel="noopener"&gt;Docker storage 文档&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;建议优先用 volume 保存容器生成的持久数据；bind mount 更适合需要直接共享和管理的宿主文件。镜像层不适合承载运行数据，容器删除时可写层也会消失。&lt;/p&gt;</description></item><item><title>Docker 端口怎么暴露：127.0.0.1、0.0.0.0、防火墙与容器网络</title><link>https://stackonward.com/zh/posts/docker-port-firewall-loopback/</link><pubDate>Wed, 02 Sep 2026 23:50:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-port-firewall-loopback/</guid><description>&lt;p&gt;判断 Docker 端口是否暴露，需要分别查看容器内监听地址、宿主机端口绑定，以及防火墙和云安全组。容器内监听 &lt;code&gt;0.0.0.0&lt;/code&gt;，不等于该端口已经暴露到公网。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-port-firewall-loopback/zh/network-boundaries.svg" alt="公网经过云安全组和宿主防火墙访问反向代理，应用与数据库只在 Docker 网络内通信的分层图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;应用和数据库只在 Docker 网络通信；公网只能到达反向代理开放的端口。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="监听地址宿主绑定和服务名属于不同网络层"&gt;监听地址、宿主绑定和服务名属于不同网络层&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置位置&lt;/th&gt;
					&lt;th&gt;示例&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;应用进程监听&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0.0.0.0:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;接受当前容器所有网络接口上的 8080 连接&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;应用进程监听&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;127.0.0.1:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;只接受同一容器回环接口的连接&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker 端口发布&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;127.0.0.1:8080:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;宿主机本地可通过 8080 访问容器 8080&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker 端口发布&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0.0.0.0:8080:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;宿主机全部 IPv4 接口发布 8080，可能被公网访问&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Compose 内部访问&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;http://app:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;同网络服务通过服务名访问容器端口&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两处 &lt;code&gt;0.0.0.0&lt;/code&gt; 的作用不同。应用在容器内监听全部接口，是为了让同网络代理访问；Docker 把端口发布到宿主全部接口，则扩大了宿主机入口。&lt;/p&gt;</description></item><item><title>502 和 504 怎么排查：反向代理、Docker 网络与上游超时</title><link>https://stackonward.com/zh/posts/502-504-troubleshooting/</link><pubDate>Wed, 02 Sep 2026 23:40:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/502-504-troubleshooting/</guid><description>&lt;p&gt;502 和 504 都由网关或反向代理返回，但含义不同：502 表示代理没有从上游得到可用响应，504 表示代理等待上游响应超过时限。排查时先找到产生状态码的那一层，再从该层所在的网络访问上游。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/502-504-troubleshooting/zh/gateway-failure-map.svg" alt="客户端经过 CDN 和反向代理访问应用时，连接失败产生 502、等待超时产生 504 的故障图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;连接拒绝、解析失败和无效响应通常指向 502；上游等待超过代理期限通常指向 504。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="确认哪一层返回-502-或-504"&gt;确认哪一层返回 502 或 504&lt;/h2&gt;
&lt;p&gt;浏览器前面可能同时有 CDN、云负载均衡、Caddy 或 Nginx。先保留状态码、响应头、时间和请求 ID：&lt;/p&gt;</description></item><item><title>网站换域名怎么迁移：301、308、Canonical 和 Search Console</title><link>https://stackonward.com/zh/posts/website-domain-migration/</link><pubDate>Wed, 02 Sep 2026 23:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/website-domain-migration/</guid><description>&lt;p&gt;网站换域名时，每个旧 URL 都应单跳到内容对应的新 URL，并保留路径和必要的查询参数。新站的 canonical、站内链接、站点地图、结构化数据和分析配置全部切到新域名；旧域名继续提供有效的 HTTPS 和永久重定向。&lt;/p&gt;</description></item><item><title>网站打开慢怎么排查：从 DNS、TTFB 到 LCP</title><link>https://stackonward.com/zh/posts/slow-website-troubleshooting/</link><pubDate>Wed, 02 Sep 2026 23:20:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/slow-website-troubleshooting/</guid><description>&lt;p&gt;网站变慢时，先确定影响范围，再把一次加载拆成 DNS、连接、TLS、等待首字节、正文下载和浏览器渲染。只有定位到变慢的区间，服务器、CDN、数据库和前端优化才有明确对象。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/slow-website-troubleshooting/zh/performance-path.svg" alt="从用户范围确认到 curl 分段耗时、网络瀑布、服务器指标和浏览器主线程的性能排查路径" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;curl 判断网络和首字节耗时；服务器指标与浏览器时间线分别定位后端和渲染问题。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="先锁定受影响的-url用户和时间"&gt;先锁定受影响的 URL、用户和时间&lt;/h2&gt;
&lt;p&gt;排查前记录具体 URL、发生时间和复现条件：&lt;/p&gt;</description></item><item><title>静态资源缓存策略：Cache-Control、ETag、文件指纹和 CDN</title><link>https://stackonward.com/zh/posts/static-asset-cache-control/</link><pubDate>Wed, 02 Sep 2026 23:10:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/static-asset-cache-control/</guid><description>&lt;p&gt;静态资源不能使用一条统一缓存规则。带内容指纹的 CSS、JavaScript 和字体可以长期缓存；HTML 要能较快发现新版本；未改名的图片只能在可接受的旧内容窗口内缓存；包含账号或支付信息的响应不应进入共享缓存。&lt;/p&gt;</description></item><item><title>HTTPS 证书自动签发与续期：Caddy、ACME 和失败排查</title><link>https://stackonward.com/zh/posts/https-certificate-automatic-renewal/</link><pubDate>Wed, 02 Sep 2026 23:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/https-certificate-automatic-renewal/</guid><description>&lt;p&gt;Caddy 可以自动申请和续期 HTTPS 证书。自动 HTTPS 依赖域名配置、DNS、ACME 验证入口和证书存储；任何一项不可用，签发或续期都会失败。容器已经启动，只能说明 Caddy 进程正在运行。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/https-certificate-automatic-renewal/zh/acme-renewal-flow.svg" alt="Caddy 从读取域名、完成 ACME 验证、保存证书到后台续期和外部监测的流程图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;签发后，证书、私钥和 ACME 账号状态写入数据目录；后台续期仍会再次使用验证入口。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="自动-https-的生效条件"&gt;自动 HTTPS 的生效条件&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://caddyserver.com/docs/automatic-https" target="_blank" rel="noopener"&gt;Caddy 的 Automatic HTTPS 文档&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;要求以下条件同时成立：&lt;/p&gt;</description></item><item><title>2026 阿里云 OSS 绑定自定义 CDN 域名：CNAME、HTTPS、缓存与验证</title><link>https://stackonward.com/zh/posts/aliyun-oss-custom-cdn-domain/</link><pubDate>Wed, 02 Sep 2026 11:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/aliyun-oss-custom-cdn-domain/</guid><description>&lt;p&gt;阿里云 OSS 绑定自定义 CDN 域名，需要依次处理域名归属、OSS 回源、DNS CNAME、HTTPS 和缓存规则。域名在哪家购买并不重要，记录要添加到当前的权威 DNS。CNAME 生效后，还要检查证书、源站内容和重复 GET 的缓存状态。&lt;/p&gt;</description></item><item><title>Caddy、Nginx、Nginx Proxy Manager 怎么选：反向代理与 HTTPS 对比</title><link>https://stackonward.com/zh/posts/caddy-nginx-npm-comparison/</link><pubDate>Wed, 02 Sep 2026 10:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/caddy-nginx-npm-comparison/</guid><description>&lt;p&gt;少量站点、希望配置进入 Git 并自动处理 HTTPS，可以先选 Caddy；已有大量 Nginx 配置或需要细粒度模块能力，继续用 Nginx；更习惯图形界面、管理的站点也不多，再考虑 Nginx Proxy Manager。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/caddy-nginx-npm-comparison/zh/proxy-decision-tree.svg" alt="根据文件或图形界面维护方式选择 Caddy、Nginx 和 Nginx Proxy Manager 的决策树" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;先选维护方式，再看现有资产。大多数小型新站点不需要从性能跑分开始选。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="配置方式和维护对象"&gt;配置方式和维护对象&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;Caddy&lt;/th&gt;
					&lt;th&gt;Nginx&lt;/th&gt;
					&lt;th&gt;Nginx Proxy Manager&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;日常配置&lt;/td&gt;
					&lt;td&gt;Caddyfile 或 JSON&lt;/td&gt;
					&lt;td&gt;Nginx 配置文件&lt;/td&gt;
					&lt;td&gt;Web 管理界面&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;HTTPS&lt;/td&gt;
					&lt;td&gt;自动签发和续期是默认能力&lt;/td&gt;
					&lt;td&gt;通常搭配 Certbot、acme.sh 或云证书&lt;/td&gt;
					&lt;td&gt;界面集成常见证书操作&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Git 管理&lt;/td&gt;
					&lt;td&gt;很适合&lt;/td&gt;
					&lt;td&gt;很适合&lt;/td&gt;
					&lt;td&gt;主要状态在数据库中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;WebSocket&lt;/td&gt;
					&lt;td&gt;常见场景自动处理&lt;/td&gt;
					&lt;td&gt;需要正确设置升级相关头&lt;/td&gt;
					&lt;td&gt;由生成的 Nginx 配置处理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;缓存和限流&lt;/td&gt;
					&lt;td&gt;可以配置&lt;/td&gt;
					&lt;td&gt;能力成熟、控制细&lt;/td&gt;
					&lt;td&gt;受界面与高级配置范围影响&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;额外状态&lt;/td&gt;
					&lt;td&gt;配置和证书目录&lt;/td&gt;
					&lt;td&gt;配置、证书和相关脚本&lt;/td&gt;
					&lt;td&gt;应用、数据库、证书和生成配置&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;三者都能完成常见的 HTTPS 入口和反向代理。文件配置便于审查和回滚；数据库配置便于界面操作，但备份必须同时覆盖数据库和证书。&lt;/p&gt;</description></item><item><title>Docker Compose 生产部署指南：镜像、健康检查、密钥与持久化</title><link>https://stackonward.com/zh/posts/docker-compose-production/</link><pubDate>Wed, 02 Sep 2026 10:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-compose-production/</guid><description>&lt;p&gt;&lt;code&gt;docker compose up -d&lt;/code&gt; 只能说明容器已经启动。生产部署还要固定镜像、保存数据、隔离端口、限制资源，并验证容器和主机重启后的恢复结果。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-compose-production/zh/compose-topology.svg" alt="单机 Docker Compose 生产部署中反向代理、应用容器、持久化卷、密钥和日志的拓扑图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;公网只开放反向代理的 80/443；应用端口留在回环地址或容器网络中。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="compose-适合什么样的生产服务"&gt;Compose 适合什么样的生产服务&lt;/h2&gt;
&lt;p&gt;单台主机、服务数量不多、依赖关系清楚时，Compose 足以承担部署：&lt;/p&gt;</description></item><item><title>DNS 记录类型详解：A、AAAA、CNAME、TXT、CAA 怎么配置</title><link>https://stackonward.com/zh/posts/dns-record-types/</link><pubDate>Wed, 02 Sep 2026 09:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/dns-record-types/</guid><description>&lt;p&gt;网站直接指向服务器时常用 A 或 AAAA；接入 CDN、对象存储和托管平台时常用 CNAME；TXT 多用于域名归属和邮件策略；CAA 用来限制证书颁发机构。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/dns-record-types/zh/dns-record-map.svg" alt="A、AAAA、CNAME、TXT 和 CAA 五种 DNS 记录用途的关系图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;A、AAAA 和 CNAME 会影响访问流量去哪里；TXT 与 CAA 保存验证、策略或证书限制。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="aaaaacnametxtcaa-有什么区别"&gt;A、AAAA、CNAME、TXT、CAA 有什么区别&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;记录&lt;/th&gt;
					&lt;th&gt;记录值&lt;/th&gt;
					&lt;th&gt;常见用途&lt;/th&gt;
					&lt;th&gt;容易踩的坑&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;A&lt;/td&gt;
					&lt;td&gt;IPv4 地址&lt;/td&gt;
					&lt;td&gt;域名指向 IPv4 服务器&lt;/td&gt;
					&lt;td&gt;服务器换 IP 后忘记更新&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AAAA&lt;/td&gt;
					&lt;td&gt;IPv6 地址&lt;/td&gt;
					&lt;td&gt;域名指向 IPv6 服务器&lt;/td&gt;
					&lt;td&gt;服务只支持 IPv4，却留下可解析的 AAAA&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CNAME&lt;/td&gt;
					&lt;td&gt;另一个域名&lt;/td&gt;
					&lt;td&gt;CDN、托管平台、对象存储&lt;/td&gt;
					&lt;td&gt;与同名 A、TXT、MX 等记录冲突&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;TXT&lt;/td&gt;
					&lt;td&gt;一段文本&lt;/td&gt;
					&lt;td&gt;域名归属、SPF、DKIM、DMARC&lt;/td&gt;
					&lt;td&gt;主机名重复拼接，或复制值时多了空格&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CAA&lt;/td&gt;
					&lt;td&gt;CA 标识&lt;/td&gt;
					&lt;td&gt;限制哪些机构可以签发证书&lt;/td&gt;
					&lt;td&gt;漏掉正在使用的 CA，导致续期失败&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;不同控制台会把 DNS 名称标成“主机记录”“名称”或“Name”。每条记录都包含名称、类型、值和 TTL。&lt;a href="https://docs.cloud.google.com/dns/docs/records-overview?hl=zh-cn" target="_blank" rel="noopener"&gt;Google Cloud DNS 的记录概览&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;列出了常见用途；A、CNAME 等基础语义见 &lt;a href="https://www.rfc-editor.org/rfc/rfc1034" target="_blank" rel="noopener"&gt;RFC 1034&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;，AAAA 见 &lt;a href="https://www.rfc-editor.org/rfc/rfc3596" target="_blank" rel="noopener"&gt;RFC 3596&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;，CAA 见 &lt;a href="https://www.rfc-editor.org/rfc/rfc8659" target="_blank" rel="noopener"&gt;RFC 8659&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>域名访问流程详解：从 DNS、TLS、CDN、反向代理到应用</title><link>https://stackonward.com/zh/posts/domain-request-flow/</link><pubDate>Wed, 02 Sep 2026 09:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/domain-request-flow/</guid><description>&lt;p&gt;在浏览器输入一个网址后，请求通常要经过 DNS、网络连接、TLS、CDN 或反向代理，最后才到应用。返回的 HTML 也不是终点，浏览器还要继续下载样式、脚本、字体和图片。&lt;a href="https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Getting_started/Web_standards/How_the_web_works" target="_blank" rel="noopener"&gt;MDN 对网页工作方式的说明&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;也把 DNS、HTTP 请求、服务器响应和浏览器组装页面列为连续环节。&lt;/p&gt;</description></item><item><title>2026 支付宝购买美区 App Store 礼品卡：最新入口、兑换与避坑全流程</title><link>https://stackonward.com/zh/posts/alipay-app-store-gift-card/</link><pubDate>Sat, 08 Aug 2026 10:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/alipay-app-store-gift-card/</guid><description>&lt;p&gt;支付宝购买美区 App Store 礼品卡的入口是“旧金山 → 优惠 → 大牌礼卡低至 9 折 → 更多大牌折扣礼卡”。进入 Pockyt Shop 完成付款并复制兑换码，再到美区 App Store 兑换。&lt;/p&gt;
&lt;h2 id="购买前准备"&gt;购买前准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;一个可以正常付款的支付宝账户；&lt;/li&gt;
&lt;li&gt;一个国家或地区为美国的 Apple 账户；&lt;/li&gt;
&lt;li&gt;iPhone 的 App Store 已登录该账户；&lt;/li&gt;
&lt;li&gt;足够支付订单的人民币资金。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apple 账户地区不是美国时，先按&lt;a href="https://stackonward.com/zh/posts/register-us-apple-id/"&gt;美区 Apple ID 注册教程&lt;/a&gt;完成注册和地区设置。&lt;/p&gt;</description></item><item><title>美区 Apple ID 注册教程：免信用卡、支持中国手机号</title><link>https://stackonward.com/zh/posts/register-us-apple-id/</link><pubDate>Sat, 08 Aug 2026 10:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/register-us-apple-id/</guid><description>&lt;p&gt;注册美区 Apple ID 不需要美国手机号，也不用绑定美国信用卡。准备一个新邮箱和能接收验证码的中国手机号，在 Apple 官网创建账户，再把国家或地区改为美国，付款方式选择“无”即可。&lt;/p&gt;
&lt;h2 id="准备工作"&gt;准备工作&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;一个没有注册过 Apple 账户的邮箱；&lt;/li&gt;
&lt;li&gt;一个可以接收短信的 &lt;button class="copy-inline " type="button" aria-label="复制中国大陆国家代码：&amp;#43;86" title="复制中国大陆国家代码" data-copy-control data-copy-value="&amp;#43;86" data-copy-label="中国大陆国家代码"&gt;
 &lt;span class="copy-inline-text"&gt;&amp;#43;86&lt;/span&gt;
 &lt;span class="copy-inline-action" aria-hidden="true"&gt;
 &lt;span class="copy-control-icon copy-control-icon-default"&gt;&lt;svg viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;rect x="8" y="8" width="11" height="11" rx="2"&gt;&lt;/rect&gt;&lt;path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;span class="copy-control-icon copy-control-icon-success"&gt;&lt;svg viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path d="m5 12 4 4L19 6"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;/span&gt;
 &lt;span class="sr-only" aria-live="polite" data-copy-feedback&gt;&lt;/span&gt;
&lt;/button&gt;
 中国手机号；&lt;/li&gt;
&lt;li&gt;一个稳定的美国网络节点；&lt;/li&gt;
&lt;li&gt;一份州、城市和邮编能够对应的美国地址；&lt;/li&gt;
&lt;li&gt;一台用于登录 App Store 的 iPhone。&lt;/li&gt;
&lt;/ul&gt;
&lt;aside class="admonition warning" aria-label="不要退出 iCloud"&gt;
 &lt;div class="admonition-title"&gt;&lt;svg viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z"&gt;&lt;/path&gt;&lt;path d="M12 9v4M12 17h.01"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;不要退出 iCloud&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;美区账户只用于“媒体与购买项目”和 App Store。不要退出设备上的 iCloud，也不要把美区账户登录到 iCloud、照片或设备备份。&lt;/div&gt;
&lt;/aside&gt;

&lt;h2 id="1-在-apple-官网注册美区-apple-id"&gt;1. 在 Apple 官网注册美区 Apple ID&lt;/h2&gt;
&lt;p&gt;Apple 官网现在使用“Apple 账户”这个名称，也就是以前的 Apple ID。打开 &lt;a href="https://account.apple.com/" target="_blank" rel="noopener"&gt;Apple 账户官网&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;，点击右上角“创建你的 Apple 账户”；也可以直接进入 &lt;a href="https://account.apple.com/account" target="_blank" rel="noopener"&gt;账户创建页&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>Figma MCP服务器：AI驱动设计到代码自动化转换 | 提升设计开发协作效率</title><link>https://stackonward.com/zh/posts/figma-mcp/</link><pubDate>Sun, 30 Mar 2025 09:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/figma-mcp/</guid><description>&lt;h2 id="一figma-mcp简介"&gt;一、Figma MCP简介&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Figma-MCP&lt;/strong&gt;是一个实现了Model Context Protocol的服务器，它为AI提供标准化的上下文信息，使其能够直接访问和理解Figma设计资源。这种集成为设计师和开发人员开启了全新的可能性：&lt;/p&gt;</description></item><item><title>n8n自动化工作流搭建指南 | 从Docker部署到RSS钉钉推送实战</title><link>https://stackonward.com/zh/posts/n8n/</link><pubDate>Wed, 05 Feb 2025 10:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/n8n/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;aside class="admonition info" aria-label="阅读收益"&gt;
 &lt;div class="admonition-title"&gt;&lt;svg viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;circle cx="12" cy="12" r="9"&gt;&lt;/circle&gt;&lt;path d="M12 11v5M12 8h.01"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;阅读收益&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;&lt;ol&gt;
&lt;li&gt;掌握n8n私有化部署的完整流程&lt;/li&gt;
&lt;li&gt;学习RSS到钉钉的消息流转实现&lt;/li&gt;
&lt;li&gt;深入理解n8n的Python扩展开发&lt;/li&gt;
&lt;li&gt;获取即用型钉钉推送工作流模板&lt;/li&gt;
&lt;li&gt;掌握自动化工作流的调试技巧&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/aside&gt;

&lt;h2 id="适用人群"&gt;适用人群&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;需要搭建自动化RSS信息聚合的团队&lt;/li&gt;
&lt;li&gt;想要实现钉钉群自动化推送的开发者&lt;/li&gt;
&lt;li&gt;对工作流自动化感兴趣的运维工程师&lt;/li&gt;
&lt;li&gt;寻找开源自动化工具的技术爱好者&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="一私有化部署n8n"&gt;一、私有化部署n8n&lt;/h2&gt;
&lt;h3 id="11-基础环境配置"&gt;1.1 基础环境配置&lt;/h3&gt;
&lt;p&gt;在开始安装n8n之前，我们需要创建必要的目录结构。以下命令会在用户主目录下创建所需的文件夹：&lt;/p&gt;</description></item><item><title>VSCode智能编程指南 | Roo Code配置与Deepseek模型使用</title><link>https://stackonward.com/zh/posts/roo-code-and-deepseek/</link><pubDate>Tue, 04 Feb 2025 19:38:12 +0800</pubDate><guid>https://stackonward.com/zh/posts/roo-code-and-deepseek/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;aside class="admonition info" aria-label="阅读收益"&gt;
 &lt;div class="admonition-title"&gt;&lt;svg viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;circle cx="12" cy="12" r="9"&gt;&lt;/circle&gt;&lt;path d="M12 11v5M12 8h.01"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;阅读收益&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;&lt;ol&gt;
&lt;li&gt;了解Deepseek模型的基本特点&lt;/li&gt;
&lt;li&gt;掌握Roo Code插件的配置方法&lt;/li&gt;
&lt;li&gt;Deepseek模型搭配Roo Code在编程中的应用&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/aside&gt;

&lt;h2 id="deepseek模型简介"&gt;Deepseek模型简介&lt;/h2&gt;
&lt;div class="table-responsive" role="region" aria-label="可横向滚动的表格" tabindex="0"&gt;
 &lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;DeepSeek-V3&lt;/th&gt;
					&lt;th&gt;DeepSeek-R1&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;适用领域&lt;/td&gt;
					&lt;td&gt;自然语言处理、知识问答、创意文案生成&lt;/td&gt;
					&lt;td&gt;数学建模、代码生成、复杂逻辑推理任务&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;开发者工具&lt;/td&gt;
					&lt;td&gt;支持本地部署，适合中小规模应用&lt;/td&gt;
					&lt;td&gt;提供蒸馏小模型（1.5B-70B），适配资源有限场景&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;API特性&lt;/td&gt;
					&lt;td&gt;高性价比，适合通用需求&lt;/td&gt;
					&lt;td&gt;支持&amp;quot;DeepThink&amp;quot;模式输出思维链，适合专业开发&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;/div&gt;

&lt;h2 id="roo-code配置教程"&gt;Roo Code配置教程&lt;/h2&gt;
&lt;h3 id="步骤1插件安装"&gt;步骤1：插件安装&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;通过VSCode扩展市场安装：搜索&amp;quot;Roo Code&amp;quot;并安装&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://images.stackonward.com/2025/2025-02-04/20250204223228.png" alt="Roo Code插件安装"&gt;&lt;/p&gt;</description></item><item><title>Nginx Proxy Manager部署指南 | 可视化管理Nginx反向代理和SSL证书</title><link>https://stackonward.com/zh/posts/nginx-proxy-management/</link><pubDate>Fri, 11 Oct 2024 00:00:32 +0800</pubDate><guid>https://stackonward.com/zh/posts/nginx-proxy-management/</guid><description>&lt;h1 id="自建nginx-proxy-manager"&gt;自建&lt;a href="https://nginxproxymanager.com/guide/#quick-setup" target="_blank" rel="noopener"&gt;Nginx Proxy Manager&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;前置条件：在服务器安装完成&lt;code&gt;Docker&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="部署npm"&gt;部署NPM&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;创建安装NPM的目录，例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /root/data/docker_data/npm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;编辑&lt;code&gt;docker-compose.yml&lt;/code&gt;文件&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /root/data/docker_data/npm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 输入安装脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;version: &lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; app:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: &lt;span class="s1"&gt;&amp;#39;jc21/nginx-proxy-manager:latest&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: unless-stopped
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &lt;span class="s1"&gt;&amp;#39;80:80&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# 保持默认即可，不建议修改左侧的80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &lt;span class="s1"&gt;&amp;#39;81:81&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# 冒号左边可以改成自己服务器未被占用的端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - &lt;span class="s1"&gt;&amp;#39;443:443&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# 保持默认即可，不建议修改左侧的443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - ./data:/data &lt;span class="c1"&gt;# 冒号左边可以改路径，现在是表示把数据存放在在当前文件夹下的 data 文件夹中&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - ./letsencrypt:/etc/letsencrypt &lt;span class="c1"&gt;# 冒号左边可以改路径，现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;安装NPM&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /root/data/docker_data/npm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;输入 &lt;a href="http://ip:81/" target="_blank" rel="noopener"&gt;http://ip:81&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt; 访问&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;默认登陆名和密码：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Email: admin@example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Password: changeme
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="更新-nginx-proxy-manager"&gt;更新 Nginx Proxy Manager&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /root/data/docker_data/npm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive &lt;span class="c1"&gt;#备份一份数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose pull
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker image prune &lt;span class="c1"&gt;# prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="卸载-nginx-proxy-manager"&gt;卸载 Nginx Proxy Manager&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /root/data/docker_data/npm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf /root/data/docker_data/npm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="nginx-proxy-manager添加反向代理"&gt;Nginx Proxy Manager添加反向代理&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://images.stackonward.com/md/2024/202410110015772.png" alt="添加反向代理步骤1"&gt;&lt;/p&gt;</description></item><item><title>Uptime Kuma网站监控搭建指南 | 开源免费的监控告警系统</title><link>https://stackonward.com/zh/posts/uptime-kuma/</link><pubDate>Fri, 11 Oct 2024 00:00:32 +0800</pubDate><guid>https://stackonward.com/zh/posts/uptime-kuma/</guid><description>&lt;h1 id="服务器部署一款开源的监控工具uptime-kuma"&gt;服务器部署一款开源的监控工具：&lt;a href="https://github.com/louislam/uptime-kuma" target="_blank" rel="noopener"&gt;Uptime Kuma&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;img src="https://images.stackonward.com/md/2024/202410110058830.png" alt="Uptime Kuma界面预览"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;前置条件：在服务器安装完成&lt;code&gt;Docker&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;创建安装目录&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /root/data/docker_data/uptime_kuma
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;编辑&lt;code&gt;docker-compose.yml&lt;/code&gt;文件&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /root/data/docker_data/uptime_kuma
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 输入安装脚本,以下版本为1.23.X版本，如需最新版本，需自行修改&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;version: &lt;span class="s1"&gt;&amp;#39;3.3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; uptime-kuma:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; image: louislam/uptime-kuma:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; container_name: uptime-kuma
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - ./uptime-kuma-data:/app/data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - 3001:3001 &lt;span class="c1"&gt;# &amp;lt;Host Port&amp;gt;:&amp;lt;Container Port&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; restart: always
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;运行安装命令&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 打开防火墙3001端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;输入http://服务器地址:3001 访问&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://images.stackonward.com/md/2024/202410110059112.png" alt="Uptime Kuma登录界面"&gt;&lt;/p&gt;</description></item><item><title>关于远栈</title><link>https://stackonward.com/zh/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stackonward.com/zh/about/</guid><description>&lt;p&gt;远栈 StackOnward 关注一个软件产品从构思、开发到上线运营的完整过程。&lt;/p&gt;
&lt;h2 id="关注领域"&gt;关注领域&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;产品与工程&lt;/strong&gt;：产品设计、架构、前端、后端、数据与 AI。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支付与订阅&lt;/strong&gt;：定价、Checkout、支付、订阅、权益与财务。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网站与增长&lt;/strong&gt;：网站建设、性能、SEO、内容、社媒、广告与销售。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运维与自动化&lt;/strong&gt;：服务器、容器、监控、发布、工作流与脚本。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="浏览"&gt;浏览&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackonward.com/zh/posts/"&gt;文章&lt;/a&gt;：全部文章与发布时间。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackonward.com/zh/topics/"&gt;专题&lt;/a&gt;：按领域浏览。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackonward.com/zh/series/"&gt;系列&lt;/a&gt;：按顺序阅读。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackonward.com/zh/resources/"&gt;资源&lt;/a&gt;：脚本、模板、工作流与示例。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="联系"&gt;联系&lt;/h2&gt;
&lt;p&gt;技术交流、内容合作与项目咨询：&lt;/p&gt;</description></item></channel></rss>