<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>xingranya</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://blog.xran.uk/</id>
  <link href="https://blog.xran.uk/" rel="alternate"/>
  <link href="https://blog.xran.uk/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, xingranya</rights>
  <subtitle>星苒鸭的技术博客，记录前端开发、运维、AI 与编程实践中的实操教程和故障排查。</subtitle>
  <title>星苒鸭 · 博客</title>
  <updated>2026-07-09T10:00:00.000Z</updated>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="AI" scheme="https://blog.xran.uk/tags/AI/"/>
    <category term="GitHub" scheme="https://blog.xran.uk/tags/GitHub/"/>
    <category term="Tauri" scheme="https://blog.xran.uk/tags/Tauri/"/>
    <category term="开源项目" scheme="https://blog.xran.uk/tags/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/"/>
    <category term="效率工具" scheme="https://blog.xran.uk/categories/%E6%95%88%E7%8E%87%E5%B7%A5%E5%85%B7/"/>
    <category term="知识管理" scheme="https://blog.xran.uk/tags/%E7%9F%A5%E8%AF%86%E7%AE%A1%E7%90%86/"/>
    <id>https://blog.xran.uk/gsat-github-stars-ai-knowledge-base/</id>
    <link href="https://blog.xran.uk/gsat-github-stars-ai-knowledge-base/"/>
    <published>2026-07-09T10:00:00.000Z</published>
    <summary>
      <![CDATA[<p>你的 GitHub Stars 有多少个了？一百？五百？还是已经四位数了？</p>
<p>说实话，大多数人的 Stars 列表就是一个「收藏即学会」的幻觉——点完 Star 的那一刻觉得以后一定会看，结果半年过去了，连那个项目叫什么都想不起来。更尴尬的是，你隐约记得收藏过一个很好用的 Markdown 编辑器，但翻了三页都没找到。</p>
<p><strong>GSAT（GitHub Stars AI Tools）</strong> 就是来解决这个问题的。它是一款本地桌面应用，把你散落在 GitHub 上的 Stars 同步到本地，然后用 AI 帮你读懂每一个项目——自动生成中文摘要、标签建议，甚至可以用自然语言搜索你的收藏库。</p>
<p>简单说：<strong>给你的 Stars 一次真正被「读懂」的机会。</strong></p>]]>
    </summary>
    <title>GSAT：把 GitHub Stars 变成本地 AI 知识库</title>
    <updated>2026-07-09T10:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="修复" scheme="https://blog.xran.uk/tags/%E4%BF%AE%E5%A4%8D/"/>
    <category term="开源" scheme="https://blog.xran.uk/tags/%E5%BC%80%E6%BA%90/"/>
    <category term="故障排查" scheme="https://blog.xran.uk/categories/%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5/"/>
    <category term="灵动岛" scheme="https://blog.xran.uk/tags/%E7%81%B5%E5%8A%A8%E5%B2%9B/"/>
    <category term="编程实践" scheme="https://blog.xran.uk/categories/%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5/%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/"/>
    <id>https://blog.xran.uk/Splayer-Next-%E7%81%B5%E5%8A%A8%E5%B2%9B%E4%BF%AE%E5%A4%8D/</id>
    <link href="https://blog.xran.uk/Splayer-Next-%E7%81%B5%E5%8A%A8%E5%B2%9B%E4%BF%AE%E5%A4%8D/"/>
    <published>2026-06-27T06:46:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="给-SPlayer-Next-修复-MacBook-刘海屏下的灵动岛对齐"><a href="#给-SPlayer-Next-修复-MacBook-刘海屏下的灵动岛对齐" class="headerlink" title="给 SPlayer-Next 修复 Ma]]>
    </summary>
    <title>Splayer-Next 灵动岛修复</title>
    <updated>2026-06-27T06:46:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Markdown" scheme="https://blog.xran.uk/tags/Markdown/"/>
    <category term="Mermaid" scheme="https://blog.xran.uk/tags/Mermaid/"/>
    <category term="Pandoc" scheme="https://blog.xran.uk/tags/Pandoc/"/>
    <category term="VS Code" scheme="https://blog.xran.uk/tags/VS-Code/"/>
    <category term="Word" scheme="https://blog.xran.uk/tags/Word/"/>
    <category term="macOS" scheme="https://blog.xran.uk/tags/macOS/"/>
    <category term="效率工具" scheme="https://blog.xran.uk/categories/%E6%95%88%E7%8E%87%E5%B7%A5%E5%85%B7/"/>
    <id>https://blog.xran.uk/vscode-pandoc-mermaid-markdown-to-word-macos/</id>
    <link href="https://blog.xran.uk/vscode-pandoc-mermaid-markdown-to-word-macos/"/>
    <published>2026-05-01T09:55:52.000Z</published>
    <summary>
      <![CDATA[<p>这篇记录一个在 macOS 上比较顺手的方案：用 <strong>Pandoc</strong> 加 <strong>mermaid-filter</strong>，把 Markdown 文档里的 Mermaid 代码块自动渲染成图片，并嵌入到 Word 文档中。</p>]]>
    </summary>
    <title>VS Code 中将含 Mermaid 图形的 Markdown 文档转换为 Word（macOS 版）</title>
    <updated>2026-05-01T09:55:52.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Agent" scheme="https://blog.xran.uk/tags/Agent/"/>
    <category term="Antigravity" scheme="https://blog.xran.uk/tags/Antigravity/"/>
    <category term="Google 账号" scheme="https://blog.xran.uk/tags/Google-%E8%B4%A6%E5%8F%B7/"/>
    <category term="HTTP 400" scheme="https://blog.xran.uk/tags/HTTP-400/"/>
    <category term="故障排查" scheme="https://blog.xran.uk/categories/%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5/"/>
    <category term="身份同步" scheme="https://blog.xran.uk/tags/%E8%BA%AB%E4%BB%BD%E5%90%8C%E6%AD%A5/"/>
    <id>https://blog.xran.uk/antigravity-http-400-invalid-project-resource-name-fix/</id>
    <link href="https://blog.xran.uk/antigravity-http-400-invalid-project-resource-name-fix/"/>
    <published>2026-03-05T07:34:00.000Z</published>
    <summary>
      <![CDATA[<h3 id="故障现象-Symptoms"><a href="#故障现象-Symptoms" class="headerlink" title="故障现象 (Symptoms)"></a>故障现象 (Symptoms)</h3><p>在使用 Antigravity 的 Agen]]>
    </summary>
    <title>【已解决】Antigravity 报错：HTTP 400 &quot;Invalid project resource name projects/&quot; 修复</title>
    <updated>2026-03-05T07:34:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Codex CLI" scheme="https://blog.xran.uk/tags/Codex-CLI/"/>
    <category term="PowerShell" scheme="https://blog.xran.uk/tags/PowerShell/"/>
    <category term="Windows 终端" scheme="https://blog.xran.uk/tags/Windows-%E7%BB%88%E7%AB%AF/"/>
    <category term="故障排查" scheme="https://blog.xran.uk/categories/%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5/"/>
    <category term="故障排查" scheme="https://blog.xran.uk/tags/%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5/"/>
    <id>https://blog.xran.uk/codex-cli-powershell-cursorposition-error-fix/</id>
    <link href="https://blog.xran.uk/codex-cli-powershell-cursorposition-error-fix/"/>
    <published>2026-02-28T16:02:13.000Z</published>
    <summary>
      <![CDATA[<h2 id="问题现象"><a href="#问题现象" class="headerlink" title="问题现象"></a>问题现象</h2><p>在 Windows 使用 Codex CLI 时，几乎每条命令后都出现类似报错：</p>
<div class="code-]]>
    </summary>
    <title>Codex CLI 在 PowerShell 中报错「Exception setting CursorPosition: 句柄无效」的修复记录</title>
    <updated>2026-02-28T16:02:13.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Android" scheme="https://blog.xran.uk/tags/Android/"/>
    <category term="Root" scheme="https://blog.xran.uk/tags/Root/"/>
    <category term="安卓折腾" scheme="https://blog.xran.uk/categories/%E5%AE%89%E5%8D%93%E6%8A%98%E8%85%BE/"/>
    <category term="排查" scheme="https://blog.xran.uk/tags/%E6%8E%92%E6%9F%A5/"/>
    <category term="模块" scheme="https://blog.xran.uk/tags/%E6%A8%A1%E5%9D%97/"/>
    <id>https://blog.xran.uk/android-root-troubleshooting-common-issues/</id>
    <link href="https://blog.xran.uk/android-root-troubleshooting-common-issues/"/>
    <published>2026-02-06T09:30:00.000Z</published>
    <summary>
      <![CDATA[<p>搞机翻车并不可怕，可怕的是：你一着急连着改三四个地方，最后根本不知道是哪一步把系统搞崩了。</p>
<p>这篇给你一套“低成本排查法”：从现象出发，把问题拆小，尽量用<strong>回滚&#x2F;禁用</strong>来定位，而不是硬刷硬改。</p>
<blockquot]]>
    </summary>
    <title>搞机常见问题排查：卡开机/无限重启/模块冲突</title>
    <updated>2026-02-06T09:30:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="ADB" scheme="https://blog.xran.uk/tags/ADB/"/>
    <category term="Android" scheme="https://blog.xran.uk/tags/Android/"/>
    <category term="Fastboot" scheme="https://blog.xran.uk/tags/Fastboot/"/>
    <category term="安卓折腾" scheme="https://blog.xran.uk/categories/%E5%AE%89%E5%8D%93%E6%8A%98%E8%85%BE/"/>
    <category term="救砖" scheme="https://blog.xran.uk/tags/%E6%95%91%E7%A0%96/"/>
    <id>https://blog.xran.uk/android-backup-unbrick-fastboot-partitions/</id>
    <link href="https://blog.xran.uk/android-backup-unbrick-fastboot-partitions/"/>
    <published>2026-02-06T09:00:00.000Z</published>
    <summary>
      <![CDATA[<p>搞机的刺激来自“可控地冒险”。真正让人崩溃的不是翻车，而是：<strong>你翻车时没有任何回滚手段</strong>。</p>
<p>这篇把“备份与救砖”的核心知识整理成一份工具箱：你至少要知道哪些分区最关键、fastboot 能做什么、怎样把风险降到最低。</p>
<b]]>
    </summary>
    <title>救砖与备份：boot/vbmeta/分区与 fastboot 工具箱</title>
    <updated>2026-02-06T09:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Android" scheme="https://blog.xran.uk/tags/Android/"/>
    <category term="Root" scheme="https://blog.xran.uk/tags/Root/"/>
    <category term="兼容性" scheme="https://blog.xran.uk/tags/%E5%85%BC%E5%AE%B9%E6%80%A7/"/>
    <category term="安全" scheme="https://blog.xran.uk/tags/%E5%AE%89%E5%85%A8/"/>
    <category term="安卓折腾" scheme="https://blog.xran.uk/categories/%E5%AE%89%E5%8D%93%E6%8A%98%E8%85%BE/"/>
    <id>https://blog.xran.uk/root-hide-play-integrity-lsposed-zygisk/</id>
    <link href="https://blog.xran.uk/root-hide-play-integrity-lsposed-zygisk/"/>
    <published>2026-02-06T08:30:00.000Z</published>
    <summary>
      <![CDATA[<p>Root 后最常见的“现实打脸”不是刷不进系统，而是：某些应用开始报错、闪退、提示环境异常，甚至直接拒绝运行。这背后通常和<strong>系统完整性检测</strong>有关。</p>
<p>这篇不讲“对抗”，只讲你需要理解的原理与更稳妥的使用方式：<strong>怎么降低]]>
    </summary>
    <title>Root 环境隔离与应用兼容性：完整性检测是什么？</title>
    <updated>2026-02-06T08:30:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Android" scheme="https://blog.xran.uk/tags/Android/"/>
    <category term="KernelSU" scheme="https://blog.xran.uk/tags/KernelSU/"/>
    <category term="Magisk" scheme="https://blog.xran.uk/tags/Magisk/"/>
    <category term="Root" scheme="https://blog.xran.uk/tags/Root/"/>
    <category term="安卓折腾" scheme="https://blog.xran.uk/categories/%E5%AE%89%E5%8D%93%E6%8A%98%E8%85%BE/"/>
    <id>https://blog.xran.uk/magisk-vs-kernelsu-choose-guide/</id>
    <link href="https://blog.xran.uk/magisk-vs-kernelsu-choose-guide/"/>
    <published>2026-02-06T08:00:00.000Z</published>
    <summary>
      <![CDATA[<p>Root 方案没有“绝对最好”，只有“更适合你的设备与用途”。目前比较主流的两条路线是 Magisk 与 KernelSU。它们都能实现 Root 权限管理与模块化扩展，但原理、生态与风险点并不一样。</p>
<blockquote>
<p><strong>重要提醒</st]]>
    </summary>
    <title>Magisk vs KernelSU：怎么选更适合你的 Root 方案</title>
    <updated>2026-02-06T08:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="AI 技术" scheme="https://blog.xran.uk/categories/AI-%E6%8A%80%E6%9C%AF/"/>
    <category term="Prompt Injection" scheme="https://blog.xran.uk/tags/Prompt-Injection/"/>
    <category term="大模型" scheme="https://blog.xran.uk/tags/%E5%A4%A7%E6%A8%A1%E5%9E%8B/"/>
    <category term="安全" scheme="https://blog.xran.uk/tags/%E5%AE%89%E5%85%A8/"/>
    <category term="隐私" scheme="https://blog.xran.uk/tags/%E9%9A%90%E7%A7%81/"/>
    <id>https://blog.xran.uk/llm-security-privacy-deployment/</id>
    <link href="https://blog.xran.uk/llm-security-privacy-deployment/"/>
    <published>2026-02-06T07:30:00.000Z</published>
    <summary>
      <![CDATA[<p>做大模型应用时，最容易被忽略的往往不是效果，而是安全与隐私：日志里写了用户敏感信息、API Key 泄漏、把不可信内容当成指令执行、把模型输出当成“事实”……</p>
<p>这篇给你一份偏工程落地的清单，适合你做 Web&#x2F;服务端接入 LLM 时直接对照。</p>]]>
    </summary>
    <title>大模型安全与隐私：从密钥到数据脱敏的落地清单</title>
    <updated>2026-02-06T07:30:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="AI 技术" scheme="https://blog.xran.uk/categories/AI-%E6%8A%80%E6%9C%AF/"/>
    <category term="Prompt" scheme="https://blog.xran.uk/tags/Prompt/"/>
    <category term="大模型" scheme="https://blog.xran.uk/tags/%E5%A4%A7%E6%A8%A1%E5%9E%8B/"/>
    <category term="提示工程" scheme="https://blog.xran.uk/tags/%E6%8F%90%E7%A4%BA%E5%B7%A5%E7%A8%8B/"/>
    <category term="生产力" scheme="https://blog.xran.uk/tags/%E7%94%9F%E4%BA%A7%E5%8A%9B/"/>
    <id>https://blog.xran.uk/prompt-engineering-templates-and-pitfalls/</id>
    <link href="https://blog.xran.uk/prompt-engineering-templates-and-pitfalls/"/>
    <published>2026-02-06T07:00:00.000Z</published>
    <summary>
      <![CDATA[<p>提示工程听起来像“技巧”，但我更愿意把它当成：<strong>把任务规格写清楚</strong>。你写得越清楚，模型越稳定；你写得越模糊，模型越像在“自由发挥”。</p>
<p>这篇给你一套可复用模板，配上常见坑位，适合做写作、总结、代码、规划等大多数任务。</p>
<p>]]>
    </summary>
    <title>提示工程：一套可复用的提示模板（附常见坑）</title>
    <updated>2026-02-06T07:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="AI 技术" scheme="https://blog.xran.uk/categories/AI-%E6%8A%80%E6%9C%AF/"/>
    <category term="Embedding" scheme="https://blog.xran.uk/tags/Embedding/"/>
    <category term="RAG" scheme="https://blog.xran.uk/tags/RAG/"/>
    <category term="向量库" scheme="https://blog.xran.uk/tags/%E5%90%91%E9%87%8F%E5%BA%93/"/>
    <category term="检索" scheme="https://blog.xran.uk/tags/%E6%A3%80%E7%B4%A2/"/>
    <id>https://blog.xran.uk/rag-practice-chunk-embedding-rerank/</id>
    <link href="https://blog.xran.uk/rag-practice-chunk-embedding-rerank/"/>
    <published>2026-02-06T06:30:00.000Z</published>
    <summary>
      <![CDATA[<p>大模型最让人头疼的一点是：<strong>它会很自然地编故事</strong>。而 RAG（Retrieval-Augmented Generation）要做的事很直接：在回答前先检索资料，把“依据”塞进上下文，让回答变得可追溯。</p>
<p>这篇按一条完整链路讲清楚：从]]>
    </summary>
    <title>RAG 实战：切分、Embedding、检索、重排一条线</title>
    <updated>2026-02-06T06:30:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="AI 技术" scheme="https://blog.xran.uk/categories/AI-%E6%8A%80%E6%9C%AF/"/>
    <category term="LM Studio" scheme="https://blog.xran.uk/tags/LM-Studio/"/>
    <category term="Ollama" scheme="https://blog.xran.uk/tags/Ollama/"/>
    <category term="大模型" scheme="https://blog.xran.uk/tags/%E5%A4%A7%E6%A8%A1%E5%9E%8B/"/>
    <category term="推理" scheme="https://blog.xran.uk/tags/%E6%8E%A8%E7%90%86/"/>
    <category term="本地部署" scheme="https://blog.xran.uk/tags/%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2/"/>
    <id>https://blog.xran.uk/local-llm-ollama-lmstudio-setup/</id>
    <link href="https://blog.xran.uk/local-llm-ollama-lmstudio-setup/"/>
    <published>2026-02-06T06:00:00.000Z</published>
    <summary>
      <![CDATA[<p>把大模型放到本地跑，最常见的理由只有两个：</p>
<ul>
<li><strong>隐私</strong>：数据不出本机（尤其是公司资料&#x2F;个人笔记）</li>
<li><strong>成本</strong>：不想按 token 付费，或者经常离线</li>
</]]>
    </summary>
    <title>本地跑大模型：Ollama / LM Studio 选型与调参思路</title>
    <updated>2026-02-06T06:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="AI 技术" scheme="https://blog.xran.uk/categories/AI-%E6%8A%80%E6%9C%AF/"/>
    <category term="LLM" scheme="https://blog.xran.uk/tags/LLM/"/>
    <category term="Prompt" scheme="https://blog.xran.uk/tags/Prompt/"/>
    <category term="大模型" scheme="https://blog.xran.uk/tags/%E5%A4%A7%E6%A8%A1%E5%9E%8B/"/>
    <category term="推理" scheme="https://blog.xran.uk/tags/%E6%8E%A8%E7%90%86/"/>
    <id>https://blog.xran.uk/llm-basics-tokens-sampling-context/</id>
    <link href="https://blog.xran.uk/llm-basics-tokens-sampling-context/"/>
    <published>2026-02-06T05:30:00.000Z</published>
    <summary>
      <![CDATA[<p>很多人第一次用大模型，会被几个词劝退：Token、上下文窗口、Temperature、Top-p……看起来很“玄学”。其实把它们放进一个统一视角里，你会发现它们只是回答两个问题：</p>
<ul>
<li><strong>模型能看到多少信息</strong>（上下文）</l]]>
    </summary>
    <title>大模型基础：Token、上下文、温度与采样到底在干嘛</title>
    <updated>2026-02-06T05:30:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="API" scheme="https://blog.xran.uk/tags/API/"/>
    <category term="REST" scheme="https://blog.xran.uk/tags/REST/"/>
    <category term="分页" scheme="https://blog.xran.uk/tags/%E5%88%86%E9%A1%B5/"/>
    <category term="幂等" scheme="https://blog.xran.uk/tags/%E5%B9%82%E7%AD%89/"/>
    <category term="编程实践" scheme="https://blog.xran.uk/categories/%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/"/>
    <category term="设计" scheme="https://blog.xran.uk/tags/%E8%AE%BE%E8%AE%A1/"/>
    <id>https://blog.xran.uk/api-design-errors-idempotency-pagination/</id>
    <link href="https://blog.xran.uk/api-design-errors-idempotency-pagination/"/>
    <published>2026-02-06T05:00:00.000Z</published>
    <summary>
      <![CDATA[<p>API 设计这件事，最怕的是：功能能用，但细节“阴间”。例如：</p>
<ul>
<li>出错只给一句 “error”，前端根本无法处理</li>
<li>客户端重试一次，订单下了两次</li>
<li>分页翻到一半数据乱跳，用户以为丢了</li>
</ul>
<p>这篇不]]>
    </summary>
    <title>API 设计要点：错误码、幂等、分页与限流</title>
    <updated>2026-02-06T05:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Context" scheme="https://blog.xran.uk/tags/Context/"/>
    <category term="Go" scheme="https://blog.xran.uk/tags/Go/"/>
    <category term="并发" scheme="https://blog.xran.uk/tags/%E5%B9%B6%E5%8F%91/"/>
    <category term="性能优化" scheme="https://blog.xran.uk/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/"/>
    <category term="编程实践" scheme="https://blog.xran.uk/categories/%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/"/>
    <id>https://blog.xran.uk/go-concurrency-workerpool-context/</id>
    <link href="https://blog.xran.uk/go-concurrency-workerpool-context/"/>
    <published>2026-02-06T04:30:00.000Z</published>
    <summary>
      <![CDATA[<p>Go 的并发很容易写出“能跑的版本”，但把并发写到<strong>可控、可取消、不会泄漏 goroutine</strong>，才是线上代码的分水岭。</p>
<p>这篇用三个最常用的积木，拼出一套可以直接复用的并发骨架：</p>
<ul>
<li><strong>Work]]>
    </summary>
    <title>Go 并发模式：Worker Pool + Context + 限流</title>
    <updated>2026-02-06T04:30:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Node.js" scheme="https://blog.xran.uk/tags/Node-js/"/>
    <category term="内存泄漏" scheme="https://blog.xran.uk/tags/%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F/"/>
    <category term="性能优化" scheme="https://blog.xran.uk/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/"/>
    <category term="编程实践" scheme="https://blog.xran.uk/categories/%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/"/>
    <category term="调试" scheme="https://blog.xran.uk/tags/%E8%B0%83%E8%AF%95/"/>
    <id>https://blog.xran.uk/nodejs-memory-leak-debugging-guide/</id>
    <link href="https://blog.xran.uk/nodejs-memory-leak-debugging-guide/"/>
    <published>2026-02-06T04:00:00.000Z</published>
    <summary>
      <![CDATA[<p>Node 服务跑着跑着变慢、内存一路上涨、最后被 OOM 杀掉——这类问题非常常见。更糟糕的是：它往往“上线一段时间才出现”，很难在本地复现。</p>
<p>这篇给你一套偏实战的排查路径：从“确认是不是泄漏”到“定位是哪类对象没释放”。</p>
<p><img decodi]]>
    </summary>
    <title>Node.js 内存泄漏排查：把“越跑越慢”抓现行</title>
    <updated>2026-02-06T04:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Python" scheme="https://blog.xran.uk/tags/Python/"/>
    <category term="可观测性" scheme="https://blog.xran.uk/tags/%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7/"/>
    <category term="工程化" scheme="https://blog.xran.uk/tags/%E5%B7%A5%E7%A8%8B%E5%8C%96/"/>
    <category term="日志" scheme="https://blog.xran.uk/tags/%E6%97%A5%E5%BF%97/"/>
    <category term="编程实践" scheme="https://blog.xran.uk/categories/%E7%BC%96%E7%A8%8B%E5%AE%9E%E8%B7%B5/"/>
    <id>https://blog.xran.uk/python-logging-structured-best-practices/</id>
    <link href="https://blog.xran.uk/python-logging-structured-best-practices/"/>
    <published>2026-02-06T03:30:00.000Z</published>
    <summary>
      <![CDATA[<p>很多项目早期都靠 <code>print()</code> 走天下：能看到输出就行。但当你把服务放到服务器&#x2F;容器里，问题会立刻变成：</p>
<ul>
<li>日志太多，<strong>查不到关键行</strong></li>
<li>多进程&#x2F;多实例，<]]>
    </summary>
    <title>Python 日志最佳实践：从 print 到结构化</title>
    <updated>2026-02-06T03:30:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Linux" scheme="https://blog.xran.uk/tags/Linux/"/>
    <category term="SSH" scheme="https://blog.xran.uk/tags/SSH/"/>
    <category term="安全" scheme="https://blog.xran.uk/tags/%E5%AE%89%E5%85%A8/"/>
    <category term="运维" scheme="https://blog.xran.uk/tags/%E8%BF%90%E7%BB%B4/"/>
    <category term="运维技术" scheme="https://blog.xran.uk/categories/%E8%BF%90%E7%BB%B4%E6%8A%80%E6%9C%AF/"/>
    <id>https://blog.xran.uk/ssh-security-hardening-checklist/</id>
    <link href="https://blog.xran.uk/ssh-security-hardening-checklist/"/>
    <published>2026-02-06T03:00:00.000Z</published>
    <summary>
      <![CDATA[<p>如果你的服务器对公网开放，SSH 就是第一道大门。现实是：只要端口开着，扫描器和爆破脚本就会一直来敲门。</p>
<p>这篇给你一份偏“实战”的加固清单：不追求花哨，追求<strong>稳、可回滚、不把自己锁在门外</strong>。</p>
<p><img decodin]]>
    </summary>
    <title>SSH 安全加固清单：从“能用”到“难进”</title>
    <updated>2026-02-06T03:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xingranya</name>
    </author>
    <category term="Grafana" scheme="https://blog.xran.uk/tags/Grafana/"/>
    <category term="Prometheus" scheme="https://blog.xran.uk/tags/Prometheus/"/>
    <category term="可观测性" scheme="https://blog.xran.uk/tags/%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7/"/>
    <category term="监控" scheme="https://blog.xran.uk/tags/%E7%9B%91%E6%8E%A7/"/>
    <category term="运维技术" scheme="https://blog.xran.uk/categories/%E8%BF%90%E7%BB%B4%E6%8A%80%E6%9C%AF/"/>
    <id>https://blog.xran.uk/prometheus-grafana-monitoring-basics/</id>
    <link href="https://blog.xran.uk/prometheus-grafana-monitoring-basics/"/>
    <published>2026-02-06T02:30:00.000Z</published>
    <summary>
      <![CDATA[<p>没有监控的服务就像“闭眼开车”：平时可能没事，一出事就全靠猜。Prometheus + Grafana 是最常见的一套开源监控组合，适合从个人服务器到中小规模集群。</p>
<p>这篇不追求把所有细节讲满，而是先帮你建立一套清晰的骨架：<strong>指标从哪来 → 怎么存]]>
    </summary>
    <title>Prometheus + Grafana：搭一套“看得见”的监控</title>
    <updated>2026-02-06T02:30:00.000Z</updated>
  </entry>
</feed>
