<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>s1oopX</title><link>http://localhost:4321/</link><atom:link href="http://localhost:4321/rss.xml" rel="self" type="application/rss+xml"/><description>s1oopX 的个人技术站，记录桌面工具、AI 工作流、Web 服务与部署实践。</description><language>zh-cn</language><item><title>Kubernetes、GitOps 与平台演进：从调度能力到可治理的生产系统</title><link>http://localhost:4321/posts/kubernetes-gitops-platform-evolution/</link><guid>http://localhost:4321/posts/kubernetes-gitops-platform-evolution/</guid><pubDate>Tue, 18 Aug 2026 12:30:00 GMT</pubDate><description>从 Google Borg/SRE、Netflix Kayenta、Spotify Backstage 和 CNCF 开源生态出发，分析 Kubernetes 的适用条件、生产边界、GitOps、渐进式发布与 Compose 迁移路线。</description></item><item><title>MySQL、PostgreSQL、Redis 与 MongoDB：从工作负载到恢复目标的选型指南</title><link>http://localhost:4321/posts/database-selection-guide/</link><guid>http://localhost:4321/posts/database-selection-guide/</guid><pubDate>Sat, 15 Aug 2026 13:10:00 GMT</pubDate><description>不按 QPS 或流行度给数据库排队，而从数据模型、一致性、查询、扩展、RPO/RTO 和团队能力比较 MySQL、PostgreSQL、Redis 与 MongoDB，并分析 GitHub、Discord 的公开实践。</description></item><item><title>Docker Compose、CI/CD 与多 VPS：从能部署到可回滚的生产实践</title><link>http://localhost:4321/posts/docker-compose-cicd-multi-vps-production/</link><guid>http://localhost:4321/posts/docker-compose-cicd-multi-vps-production/</guid><pubDate>Wed, 12 Aug 2026 12:20:00 GMT</pubDate><description>以单 VPS 到多 VPS 的演进为主线，拆解不可变镜像、逐节点发布、健康验证、回滚、密钥与数据边界，并对照 GitHub、GitLab、Netflix、AWS 和 Cloudflare 的公开实践。</description></item><item><title>个人隐私网络与私人服务器架构：场景、原理与成熟方案</title><link>http://localhost:4321/posts/personal-privacy-network-architecture/</link><guid>http://localhost:4321/posts/personal-privacy-network-architecture/</guid><pubDate>Mon, 10 Aug 2026 12:10:00 GMT</pubDate><description>从 WireGuard、Cloudflare Tunnel、Headscale、NetBird 到 Tor，按私人访问、公共服务、策略分流和匿名活动拆分个人隐私网络的信任边界与实施路径。</description></item><item><title>Pi 的公开信：AI 会话为什么必须可迁移</title><link>http://localhost:4321/posts/session-portability-rethink/</link><guid>http://localhost:4321/posts/session-portability-rethink/</guid><pubDate>Sat, 08 Aug 2026 05:24:00 GMT</pubDate><description>Pi 背后的 Earendil Engineering 发出一封关于 Session Portability 的公开信：当推理、搜索、压缩和子 Agent 消息被封装在供应商内部，用户带走的是完整会话，还是一份无法继续工作的聊天记录？</description></item><item><title>把 Pi 配成自己的 Coding Agent</title><link>http://localhost:4321/posts/pi-custom-coding-agent/</link><guid>http://localhost:4321/posts/pi-custom-coding-agent/</guid><pubDate>Thu, 06 Aug 2026 08:27:00 GMT</pubDate><description>Pi 的重点不是开箱即用，而是把供应商、权限、交互和工作流拆成可替换的层。结合一份社区配置笔记，整理一条更克制、可维护的 Pi 配置路线。</description></item><item><title>Wi-Fi 延迟尖刺：换信道只解决了一半</title><link>http://localhost:4321/posts/wifi-channel-interference/</link><guid>http://localhost:4321/posts/wifi-channel-interference/</guid><pubDate>Tue, 04 Aug 2026 11:32:00 GMT</pubDate><description>信号强度接近 90%，网络却会突然卡住两秒。一次从网关对照、信道扫描、次日复测到 2.4G 外设 A/B 测试的完整排障记录。</description></item><item><title>Google 能收录，为什么手机却打不开我的网站</title><link>http://localhost:4321/posts/cloudflare-preferred-edge/</link><guid>http://localhost:4321/posts/cloudflare-preferred-edge/</guid><pubDate>Sun, 02 Aug 2026 11:29:00 GMT</pubDate><description>搜索结果已经出现，国内手机直连却失败。一次从代理路径差异、Cloudflare Anycast 地址对照到公开网站可达性方案的完整排查。</description></item><item><title>当 Agent 开始长时间工作：额度与日常用量</title><link>http://localhost:4321/posts/claude-max-token-usage-rethink/</link><guid>http://localhost:4321/posts/claude-max-token-usage-rethink/</guid><pubDate>Wed, 29 Jul 2026 12:30:00 GMT</pubDate><description>一次 Claude Max 尝试让我重新审视模型额度。结合两个月的开发统计，以及从 Hermes 到 Loop 的使用变化，记录 Agent 工作流如何消耗上下文、请求和配额。</description></item><item><title>从 Loop 到 Graph：Agent 开始学习如何协作</title><link>http://localhost:4321/posts/graph-engineering-rethink/</link><guid>http://localhost:4321/posts/graph-engineering-rethink/</guid><pubDate>Fri, 24 Jul 2026 10:35:00 GMT</pubDate><description>Graph Engineering 不是又一个框架名，而是一种组织复杂 Agent 任务的方式：把任务拆成节点，用边决定顺序和分支，用状态保存进度、产物和失败位置。</description></item><item><title>从 WordPress 到 Astro：选型迁移的思考</title><link>http://localhost:4321/posts/site-stack-selection/</link><guid>http://localhost:4321/posts/site-stack-selection/</guid><pubDate>Sun, 19 Jul 2026 12:10:00 GMT</pubDate><description>这次重做个人站，我没有追求最多的功能，而是围绕写作、作品展示和 VPS 运维重新确定了一套足够简单、可以长期维护的技术栈。</description></item><item><title>分布式定时任务重复执行故障复盘与幂等设计</title><link>http://localhost:4321/posts/distributed-scheduled-task-idempotency/</link><guid>http://localhost:4321/posts/distributed-scheduled-task-idempotency/</guid><pubDate>Mon, 13 Jul 2026 12:20:00 GMT</pubDate><description>从商户日结任务重复执行出发，分析故障转移、分布式锁、批次记录、租约状态机、唯一约束与跨系统幂等的职责边界。</description></item><item><title>编辑器加 AI，还是 Agent 当主角：Zed、Cursor 与 ZCode 的分野</title><link>http://localhost:4321/posts/agent-first-gui-rethink/</link><guid>http://localhost:4321/posts/agent-first-gui-rethink/</guid><pubDate>Wed, 08 Jul 2026 15:00:00 GMT</pubDate><description>结合 Zed、Cursor 和 ZCode 的实际体验，区分编辑器优先与 Agent 优先两种工作方式，并讨论长任务、上下文连续性和 GUI 性能各自解决的问题。</description></item><item><title>我不再逐轮 Prompt，而是开始设计 Loop</title><link>http://localhost:4321/posts/loop-engineering-rethink/</link><guid>http://localhost:4321/posts/loop-engineering-rethink/</guid><pubDate>Thu, 02 Jul 2026 14:30:00 GMT</pubDate><description>用一次 39 篇博客改造实验，拆解 /goal、Stop hook、验收条件、停滞检测与预算刹车，说明 Loop Engineering 何时有效、何时只会放大失控。</description></item><item><title>高并发大促缓存雪崩故障复盘</title><link>http://localhost:4321/posts/promotion-cache-avalanche-postmortem/</link><guid>http://localhost:4321/posts/promotion-cache-avalanche-postmortem/</guid><pubDate>Tue, 30 Jun 2026 12:30:00 GMT</pubDate><description>从缓存命中率骤降、数据库连接池耗尽到订单失败，拆解大促故障的证据链、止损顺序、缓存重建、限流熔断、核心链路降级与验证方法。</description></item><item><title>241 天、39 篇：我怎样把折腾变成可复用的经验</title><link>http://localhost:4321/posts/half-year-review-rethink/</link><guid>http://localhost:4321/posts/half-year-review-rethink/</guid><pubDate>Wed, 24 Jun 2026 14:43:00 GMT</pubDate><description>首页在线时钟走到 241 天，站内也正好有 39 篇文章。回头看这段经历，真正的变化不是换了多少技术栈，而是开始把失败、判断和验证过程留下来。</description></item><item><title>我为什么还在维护自己的个人网站</title><link>http://localhost:4321/posts/why-i-keep-building-my-site/</link><guid>http://localhost:4321/posts/why-i-keep-building-my-site/</guid><pubDate>Wed, 17 Jun 2026 12:00:00 GMT</pubDate><description>把文章、项目和工具判断放在自己的域名与仓库里，不是为了逃离平台，而是为了保留结构、上下文和迁移选择。</description></item><item><title>把自建服务发到公网之前：域名、源码和管理入口会泄露什么</title><link>http://localhost:4321/posts/public-service-exposure-chain-rethink/</link><guid>http://localhost:4321/posts/public-service-exposure-chain-rethink/</guid><pubDate>Thu, 11 Jun 2026 10:20:00 GMT</pubDate><description>公开一个链接后，别人看到的不只是页面。域名、历史 DNS、源站端口、前端代码和管理入口会连成一条暴露链，发布前应逐层检查。</description></item><item><title>Tunnel 让服务能访问，Access 决定谁能访问</title><link>http://localhost:4321/posts/cloudflare-tunnel-access-boundary/</link><guid>http://localhost:4321/posts/cloudflare-tunnel-access-boundary/</guid><pubDate>Thu, 04 Jun 2026 12:45:00 GMT</pubDate><description>Cloudflare Tunnel 把内网服务接到公网，但它不负责识别访问者。公开主页、管理后台、OAuth 回调和部署接口需要按路径建立不同边界。</description></item><item><title>容器镜像拉不下来时：从代理、同步到离线交付</title><link>http://localhost:4321/posts/container-image-delivery-rethink/</link><guid>http://localhost:4321/posts/container-image-delivery-rethink/</guid><pubDate>Fri, 29 May 2026 13:05:00 GMT</pubDate><description>有网、受限网和完全离线环境需要的不是同一条命令。把镜像获取当成交付链路，才能在代理缓存、私有仓库和 save/load 之间选对方案。</description></item><item><title>VLESS + REALITY 一定要用 443 吗？端口选择与复用边界</title><link>http://localhost:4321/posts/vless-reality-port-rethink/</link><guid>http://localhost:4321/posts/vless-reality-port-rethink/</guid><pubDate>Sat, 23 May 2026 15:10:00 GMT</pubDate><description>VLESS + REALITY 不绑定 443 端口。真正需要弄清的是端口可达性、监听冲突、反代复用和 Cloudflare 代理边界，而不是把 443 当成协议要求。</description></item><item><title>别再把 VLESS、REALITY 和 Xray 当成一件事：代理栈分层</title><link>http://localhost:4321/posts/proxy-stack-layering-rethink/</link><guid>http://localhost:4321/posts/proxy-stack-layering-rethink/</guid><pubDate>Sat, 16 May 2026 13:10:00 GMT</pubDate><description>VMess、VLESS、Trojan、TLS、REALITY、XTLS 和 Xray 经常被放在一张对比表里，但它们不在同一层。先把实现、协议、传输和握手拆开，选型才不会混乱。</description></item><item><title>部署不是步骤清单：我用八个分面检查新服务</title><link>http://localhost:4321/posts/workflow-facets-rethink/</link><guid>http://localhost:4321/posts/workflow-facets-rethink/</guid><pubDate>Sun, 10 May 2026 15:30:00 GMT</pubDate><description>把部署拆成可达、守护、防护、可观测、配置密钥、变更、数据和运维入口八个分面，并为每一面留下可以验证的证据。</description></item><item><title>读完 Karpathy 的 LLM Wiki，我不再把 RAG 当默认答案</title><link>http://localhost:4321/posts/llm-wiki-vs-rag-rethink/</link><guid>http://localhost:4321/posts/llm-wiki-vs-rag-rethink/</guid><pubDate>Mon, 04 May 2026 14:45:00 GMT</pubDate><description>对照约百份个人资料后，我决定先用可读的 Markdown Wiki 积累知识，在召回和规模真正成为问题时再增加 BM25、向量或混合检索。</description></item><item><title>我把什么交给 AI，什么必须自己验证</title><link>http://localhost:4321/posts/coding-with-ai-rethink/</link><guid>http://localhost:4321/posts/coding-with-ai-rethink/</guid><pubDate>Mon, 27 Apr 2026 13:36:00 GMT</pubDate><description>半年 AI 辅助编程复盘：从 Dockerfile 和反向代理的两次教训出发，用任务边界、上下文、验证、理解债、纠偏和风险六个问题约束生成结果。</description></item><item><title>拿 YouTube 架构当镜子：我的小站该补什么</title><link>http://localhost:4321/posts/distributed-youtube-arch-rethink/</link><guid>http://localhost:4321/posts/distributed-youtube-arch-rethink/</guid><pubDate>Tue, 21 Apr 2026 12:29:00 GMT</pubDate><description>不照搬大型视频平台，而是按 CDN、计算副本、异步任务、数据和容错逐层对照，区分值得做的小实验、当前应补的基础能力和暂时不需要的复杂架构。</description></item><item><title>一个页面请求怎样到达我的 Astro 站点</title><link>http://localhost:4321/posts/fullstack-request-flow-rethink/</link><guid>http://localhost:4321/posts/fullstack-request-flow-rethink/</guid><pubDate>Wed, 15 Apr 2026 14:22:00 GMT</pubDate><description>按当前部署还原 s1oopX 站点的真实链路：Cloudflare 边缘、Tunnel、回环 Nginx、静态发布目录，以及 OAuth 和部署 webhook 的动态分支。</description></item><item><title>从照着做，到隔天还能讲清楚：我的学习闭环</title><link>http://localhost:4321/posts/how-i-learn-rethink/</link><guid>http://localhost:4321/posts/how-i-learn-rethink/</guid><pubDate>Wed, 08 Apr 2026 13:15:00 GMT</pubDate><description>过去一年反复忘记学过的东西后，我把流程改成复现、单变量实验、脱稿解释和延迟复做；写博客不再是学习完成后的展示，而是暴露理解缺口的检查。</description></item><item><title>从开放 80/443 到 Cloudflare Tunnel：连接方向改变了什么</title><link>http://localhost:4321/posts/cloudflare-tunnel-rethink/</link><guid>http://localhost:4321/posts/cloudflare-tunnel-rethink/</guid><pubDate>Thu, 02 Apr 2026 14:00:00 GMT</pubDate><description>Tunnel 让源站主动连接 Cloudflare，从而关闭公网 Web 入站；它缩小暴露面，却不会替代身份验证、凭据保护、独立管理通道和故障恢复。</description></item><item><title>GitHub Actions 不直接 SSH：我把验证与部署拆开了</title><link>http://localhost:4321/posts/github-actions-cicd-rethink/</link><guid>http://localhost:4321/posts/github-actions-cicd-rethink/</guid><pubDate>Fri, 27 Mar 2026 12:23:00 GMT</pubDate><description>Actions 使用只读权限完成类型检查、构建和自测；VPS 只接受成功 workflow_run 的签名 webhook，并按精确提交发布、健康检查和自动回滚。</description></item><item><title>Let&apos;s Encrypt 教我的不是免费证书，而是续期必须可验证</title><link>http://localhost:4321/posts/lets-encrypt-https-rethink/</link><guid>http://localhost:4321/posts/lets-encrypt-https-rethink/</guid><pubDate>Sat, 21 Mar 2026 14:01:00 GMT</pubDate><description>从 HTTP-01、DNS-01、Certbot timer 和 dry-run 讲清自动续期，也说明迁移到 Cloudflare Tunnel 后，访客证书、Tunnel 通道和本机服务分别由谁保护。</description></item><item><title>Nginx 反向代理：最容易错的不是端口，而是代理边界</title><link>http://localhost:4321/posts/nginx-reverse-proxy-rethink/</link><guid>http://localhost:4321/posts/nginx-reverse-proxy-rethink/</guid><pubDate>Sat, 14 Mar 2026 13:54:00 GMT</pubDate><description>从 proxy_pass 的 URI 替换、真实客户端地址、外层 HTTPS、容器网络到 nginx -t 与 reload，整理我实际踩过的反向代理边界。</description></item><item><title>Spring Boot 容器化：从能启动到可以回滚</title><link>http://localhost:4321/posts/springboot-docker-deploy-rethink/</link><guid>http://localhost:4321/posts/springboot-docker-deploy-rethink/</guid><pubDate>Sun, 08 Mar 2026 13:09:00 GMT</pubDate><description>用多阶段构建、Maven 缓存、非 root 运行、回环端口和不可变镜像串起 Spring Boot 部署，并补上健康检查、配置密钥、数据库迁移与回滚边界。</description></item><item><title>UFW + fail2ban：先收监听，再谈封禁 IP</title><link>http://localhost:4321/posts/ufw-fail2ban-rethink/</link><guid>http://localhost:4321/posts/ufw-fail2ban-rethink/</guid><pubDate>Mon, 02 Mar 2026 12:26:00 GMT</pubDate><description>从端口盘点、安全启用、IPv6、Docker 绕过 UFW 到 systemd journal，说明防火墙与 fail2ban 各自能做什么、不能替代什么。</description></item><item><title>systemd 守护服务：不只是写一行 Restart=always</title><link>http://localhost:4321/posts/systemd-service-rethink/</link><guid>http://localhost:4321/posts/systemd-service-rethink/</guid><pubDate>Tue, 24 Feb 2026 14:19:00 GMT</pubDate><description>从 nohup 迁移到 systemd 后，我重新理解了 restart 策略、enable、启动限速、日志、健康检查和 sandbox；进程回来不等于服务已经恢复。</description></item><item><title>我每天真的会敲的那几条 Linux 命令</title><link>http://localhost:4321/posts/linux-daily-commands-rethink/</link><guid>http://localhost:4321/posts/linux-daily-commands-rethink/</guid><pubDate>Tue, 17 Feb 2026 13:12:00 GMT</pubDate><description>Linux 命令成千上万，日常管服务器真正高频的就那么几组。这篇不堆大全，只记我每天真的会敲的，以及为什么是这几组——对应「喘不喘、谁占了、日志说什么」三件事。</description></item><item><title>SSH 加固：把钥匙留在自己手里</title><link>http://localhost:4321/posts/ssh-key-hardening-rethink/</link><guid>http://localhost:4321/posts/ssh-key-hardening-rethink/</guid><pubDate>Wed, 11 Feb 2026 12:05:00 GMT</pubDate><description>VPS 一接公网，几分钟内就有人来试密码。这篇不讲 SSH 大全，讲我为什么选 ed25519、为什么改端口值得，以及「改配置别关当前会话」的退路纪律。</description></item><item><title>买人生第一台 VPS：我在挑什么，到手先做什么</title><link>http://localhost:4321/posts/my-first-vps-rethink/</link><guid>http://localhost:4321/posts/my-first-vps-rethink/</guid><pubDate>Thu, 05 Feb 2026 14:58:00 GMT</pubDate><description>代码写了几个月一直跑在本机。这篇不讲 VPS 怎么买，讲我作为练手机在挑什么、为什么不上高配，以及到手那三件事的顺序我为什么这么排。</description></item><item><title>Docker Compose：为什么我不手敲一串 docker run</title><link>http://localhost:4321/posts/docker-compose-rethink/</link><guid>http://localhost:4321/posts/docker-compose-rethink/</guid><pubDate>Fri, 30 Jan 2026 12:02:00 GMT</pubDate><description>真实项目很少只有一个容器。这篇不讲 Compose 语法大全，讲我用手敲 docker run 翻过什么车、为什么把整套服务写进一个 yml，以及那条差点把数据删没了的教训。</description></item><item><title>Docker：治「我机器上能跑」这桩老案子</title><link>http://localhost:4321/posts/docker-intro-rethink/</link><guid>http://localhost:4321/posts/docker-intro-rethink/</guid><pubDate>Sat, 24 Jan 2026 14:55:00 GMT</pubDate><description>装服务装到后面，系统里 Python、Java 各种库混在一起，依赖打架。这篇不讲 Docker 命令大全，讲它到底在解决什么——以及为什么我说它是 venv 那条线的延续。</description></item><item><title>深夜的 Bug、咖啡馆的下午：关于“跳过最直接的线索”</title><link>http://localhost:4321/posts/debug-and-cafe-rethink/</link><guid>http://localhost:4321/posts/debug-and-cafe-rethink/</guid><pubDate>Sat, 17 Jan 2026 13:48:00 GMT</pubDate><description>两次调试失误的底子是同一个偏差：跳过眼前最直接的线索，去查更“高级”的可能。这篇记录浪费掉的时间、真正有效的两分钟，以及后来固定下来的排查顺序。</description></item><item><title>当过前端被不统一坑过之后，我怎么做后端统一返回</title><link>http://localhost:4321/posts/global-exception-unified-response-rethink/</link><guid>http://localhost:4321/posts/global-exception-unified-response-rethink/</guid><pubDate>Sun, 11 Jan 2026 12:41:00 GMT</pubDate><description>接口能返回数据只是第一步。这篇做两件让接口专业起来的事：统一返回结构、集中处理异常。不讲模板，讲我为什么把它当成给前端的契约，以及「给用户看友好、给自己看堆栈」这条判断。</description></item><item><title>JPA：白送的 CRUD，和它背后的理解缺口</title><link>http://localhost:4321/posts/spring-data-jpa-mysql-rethink/</link><guid>http://localhost:4321/posts/spring-data-jpa-mysql-rethink/</guid><pubDate>Mon, 05 Jan 2026 14:34:00 GMT</pubDate><description>接口有了，让数据落库。这篇用 Spring Data JPA 接 MySQL。不讲怎么配，讲「继承个接口就白送 CRUD」的爽和险——爽在省事，险在我可能根本不懂它在生成什么 SQL。</description></item><item><title>2025 年终：狗熊掰玉米的一年，和开博两个月</title><link>http://localhost:4321/posts/2025-year-end-rethink/</link><guid>http://localhost:4321/posts/2025-year-end-rethink/</guid><pubDate>Mon, 29 Dec 2025 13:06:00 GMT</pubDate><description>一篇没有代码的年终复盘。回看这一年，我学东西像狗熊掰玉米——学一个丢一个。这篇记录我怎么意识到问题，以及开博两个月为什么能缓解它。</description></item><item><title>Spring Boot 第一个接口：和 FastAPI 对照着看，框架之上不变的是什么</title><link>http://localhost:4321/posts/spring-boot-first-rest-api-rethink/</link><guid>http://localhost:4321/posts/spring-boot-first-rest-api-rethink/</guid><pubDate>Tue, 23 Dec 2025 13:27:00 GMT</pubDate><description>还记得 Python 那边的 FastAPI 接口吗？这篇写一个 Java 版对照。不讲注解清单，讲两种风格差在哪，以及学第二门后端框架最大的收获——开始看见框架之上不变的那些东西。</description></item><item><title>看懂一个 Spring Boot 项目的骨架：从「文件夹一堆」到「两样东西」</title><link>http://localhost:4321/posts/maven-spring-boot-structure-rethink/</link><guid>http://localhost:4321/posts/maven-spring-boot-structure-rethink/</guid><pubDate>Wed, 17 Dec 2025 12:20:00 GMT</pubDate><description>第一次打开 Spring Boot 项目，文件夹一堆不知道从哪看起。这篇不讲 Maven 大全，讲我怎么从被结构吓到，到抓住 pom.xml 和标准目录，以及「约定优于配置」到底在替我省什么。</description></item><item><title>从 Python 到 Java 的第一周：别扭的不是语法，是思维方式</title><link>http://localhost:4321/posts/python-to-java-week-one-rethink/</link><guid>http://localhost:4321/posts/python-to-java-week-one-rethink/</guid><pubDate>Thu, 11 Dec 2025 14:13:00 GMT</pubDate><description>决定啃 Java。从 Python 转过来第一周是真的别扭。这篇不讲语法清单，讲别扭底下是什么——不是语法要重学，是从「怎么快点写出来」转到「怎么让结构更清晰、更不容易错」。</description></item><item><title>写一个有礼貌的小爬虫：能抓和该抓是两件事</title><link>http://localhost:4321/posts/python-requests-bs4-rethink/</link><guid>http://localhost:4321/posts/python-requests-bs4-rethink/</guid><pubDate>Thu, 04 Dec 2025 12:59:00 GMT</pubDate><description>Python 阶段收尾写个小爬虫。这篇不讲 requests 和 BeautifulSoup 怎么用，讲我对「爬虫的水平不体现在抓得多猛，而在多有分寸」的判断——能抓不代表该抓。</description></item><item><title>装饰器与 with：我从「黑魔法」到「原来是省这个」的转弯</title><link>http://localhost:4321/posts/python-decorator-context-rethink/</link><guid>http://localhost:4321/posts/python-decorator-context-rethink/</guid><pubDate>Fri, 28 Nov 2025 14:52:00 GMT</pubDate><description>装饰器和 with 一开始很像黑魔法。这篇不讲语法细节，讲我怎么从「看不懂这层包装」到想清楚：它们就是把横切的重复逻辑从主流程里剥离。</description></item><item><title>CRUD：我第一次让接口和数据库对上号的那几个判断</title><link>http://localhost:4321/posts/fastapi-sqlite-crud-rethink/</link><guid>http://localhost:4321/posts/fastapi-sqlite-crud-rethink/</guid><pubDate>Sat, 22 Nov 2025 13:45:00 GMT</pubDate><description>光返回死数据不算后端。这篇给接口接上 SQLite。不讲 CRUD 怎么写，讲我为什么选 SQLite 练手、Pydantic 模型替我管了什么，以及「占位符不是图省事」从第一天就该刻进去。</description></item><item><title>为什么这次写接口我选 FastAPI，不是 Flask</title><link>http://localhost:4321/posts/fastapi-first-api-rethink/</link><guid>http://localhost:4321/posts/fastapi-first-api-rethink/</guid><pubDate>Sat, 15 Nov 2025 12:38:00 GMT</pubDate><description>Web 框架一搜一大把。Flask 我写过小工具，Django 用 DRF 做过完整 REST API，这次却选了 FastAPI。这篇不讲怎么用，讲我为什么在这个节点选它、它和 Flask 的取舍差在哪。</description></item><item><title>为什么我坚持每个 Python 项目一个 venv</title><link>http://localhost:4321/posts/python-venv-pip-rethink/</link><guid>http://localhost:4321/posts/python-venv-pip-rethink/</guid><pubDate>Sun, 09 Nov 2025 14:31:00 GMT</pubDate><description>学 Python 第一件该养成的习惯不是写代码，是管环境。这篇不讲 venv 语法，讲我往全局装包装出事之后，为什么把「每项目一个 venv」当成新建项目的第一条命令。</description></item><item><title>Git：我什么时候开始怕「改不回去」的</title><link>http://localhost:4321/posts/git-basics-rethink/</link><guid>http://localhost:4321/posts/git-basics-rethink/</guid><pubDate>Mon, 03 Nov 2025 13:24:00 GMT</pubDate><description>开始写代码最先撞上的不是语法报错，是改了半天发现思路不对想回滚、文件已经覆盖了。这篇不讲命令大全，讲我什么时候开始养成提交习惯、哪次没提交翻的车，以及分支这块我到现在还偏保守。</description></item><item><title>开博第一篇：一个安静记录折腾的地方</title><link>http://localhost:4321/posts/hello-blog-rethink/</link><guid>http://localhost:4321/posts/hello-blog-rethink/</guid><pubDate>Tue, 28 Oct 2025 12:17:00 GMT</pubDate><description>你好，我是 s1oopX。这是博客的第一篇。开博理由很简单：折腾的东西越来越多，脑子越来越不够用——写下来，是为了下次不用从零开始。</description></item></channel></rss>