<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>RainFD&#39;s Blog</title>
    <link>https://rainfd.fun/posts/</link>
    <description>Recent content on RainFD&#39;s Blog</description>
    <image>
      <title>RainFD&#39;s Blog</title>
      <url>https://rainfd.fun/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://rainfd.fun/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.146.6</generator>
    <language>en</language>
    <lastBuildDate>Fri, 18 Apr 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://rainfd.fun/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MCP是什么？</title>
      <link>https://rainfd.fun/posts/20_mcp%E6%98%AF%E4%BB%80%E4%B9%88/</link>
      <pubDate>Fri, 18 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/20_mcp%E6%98%AF%E4%BB%80%E4%B9%88/</guid>
      <description>&lt;p&gt;最近在LLM Agent开发里面有个新的概念很火，叫MCP，是&lt;a href=&#34;https://modelcontextprotocol.io/introduction&#34;&gt;Model Context Protocol&lt;/a&gt;的缩写，意思是模型上下文协议。看了一下官方的解释，就是一个类似USB-C的协议，能让各种数据源、工具按照MCP的标准来连接LLM应用。就是想着统一了规范，LLM应用接入新功能就容易很多了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>K9s简易教程</title>
      <link>https://rainfd.fun/posts/19_k9s%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B/</link>
      <pubDate>Mon, 18 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/19_k9s%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B/</guid>
      <description>&lt;p&gt;K9s是一个基于终端的K8s UI管理工具。只需要一个二进制文件，就可以在任意的命令行终端上对K8s进行管理。这个工具的操作逻辑是基于Vim，熟悉Vim的同学几分钟就能上手。&lt;/p&gt;
&lt;!-- ![k9s](/img/19/logs.png) --&gt;</description>
    </item>
    <item>
      <title>Skaffold实践指南</title>
      <link>https://rainfd.fun/posts/18_skaffold%E5%AE%9E%E8%B7%B5%E6%8C%87%E5%8D%97/</link>
      <pubDate>Wed, 13 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/18_skaffold%E5%AE%9E%E8%B7%B5%E6%8C%87%E5%8D%97/</guid>
      <description></description>
    </item>
    <item>
      <title>Skaffold简易教程</title>
      <link>https://rainfd.fun/posts/17_skaffold%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B/</link>
      <pubDate>Wed, 13 Jul 2022 07:15:25 +0800</pubDate>
      <guid>https://rainfd.fun/posts/17_skaffold%E7%AE%80%E6%98%93%E6%95%99%E7%A8%8B/</guid>
      <description>&lt;p&gt;Skaffold 是什么？简单来说就是一个本地的CICD工具，可以将你的应用快速部署到Kubernetes集群。&lt;/p&gt;
&lt;p&gt;特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提供本地快速的Kubernetes开发体验，优化了从源代码到Kubernetes的流程&lt;/li&gt;
&lt;li&gt;一次配置随处运行&lt;/li&gt;
&lt;li&gt;轻量级，只包含一个二进制文件&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>搭建Linux2.6内核调试环境</title>
      <link>https://rainfd.fun/posts/16_%E6%90%AD%E5%BB%BAlinux2/</link>
      <pubDate>Thu, 22 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/16_%E6%90%AD%E5%BB%BAlinux2/</guid>
      <description>&lt;p&gt;最近在读《Linux内核设计与实现》，在书的开始就要先搭建一个Linux2.6的环境。
为了把环境搭好，折腾了好几天。所以来分享一下搭建流程以及可能遇到的坑。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于RISC-V开发板的二三事</title>
      <link>https://rainfd.fun/posts/15_%E5%85%B3%E4%BA%8Erisc-v%E5%BC%80%E5%8F%91%E6%9D%BF%E7%9A%84%E4%BA%8C%E4%B8%89%E4%BA%8B/</link>
      <pubDate>Thu, 10 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/15_%E5%85%B3%E4%BA%8Erisc-v%E5%BC%80%E5%8F%91%E6%9D%BF%E7%9A%84%E4%BA%8C%E4%B8%89%E4%BA%8B/</guid>
      <description>&lt;p&gt;最近再刷MIT的6.S081操作系统课程。今年的课是基于RISC-V架构讲的，运行的系统是跑在qemu模拟器上。随着对RISC-V的了解不断加深，我对这个ISA就越感兴趣，所以想着买一块RISC-V的开发板过来，直接在上面跑课程lab，或者试试移植linux来玩玩。但现实还是说明这个ISA还是太年轻了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ROOK安装教程</title>
      <link>https://rainfd.fun/posts/14_rook%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/</link>
      <pubDate>Fri, 13 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/14_rook%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/</guid>
      <description>&lt;p&gt;ROOK —— 一个云原生的开源的存储编排工具，提供了多种存储解决方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python环境&amp;工程搭建</title>
      <link>https://rainfd.fun/posts/13_python%E7%8E%AF%E5%A2%83%E5%B7%A5%E7%A8%8B%E6%90%AD%E5%BB%BA/</link>
      <pubDate>Mon, 15 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/13_python%E7%8E%AF%E5%A2%83%E5%B7%A5%E7%A8%8B%E6%90%AD%E5%BB%BA/</guid>
      <description>&lt;p&gt;之前一直在线上服务器裸敲Python，很久没有在自己的mac上写了。最近有任务要用Python来实现，借此好好整理关于Python环境设置和工程搭建遇到的问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>K8sDNS 和 CoreDNS</title>
      <link>https://rainfd.fun/posts/12_k8sdns/</link>
      <pubDate>Fri, 03 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/12_k8sdns/</guid>
      <description>&lt;p&gt;最近看到一篇文章&lt;a href=&#34;%5E1&#34;&gt;CoreDNS生产案：pod出现dns解析大量失败的问题&lt;/a&gt;，发现自己对DNS和K8s的DNS使用机制都不是很了解，这里就来深入一下。&lt;/p&gt;
&lt;!-- ![coredns](/img/12/coredns.png) --&gt;</description>
    </item>
    <item>
      <title>Awk使用教程</title>
      <link>https://rainfd.fun/posts/11_awk-usage/</link>
      <pubDate>Mon, 03 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/11_awk-usage/</guid>
      <description>&lt;p&gt;Awk 使用教程和使用案例&lt;/p&gt;
&lt;!-- ![awk](/img/11/awk.jpg) --&gt;
&lt;p&gt;&lt;em&gt;本文是&lt;a href=&#34;https://www.linuxcommands.site/linux-text-processing-commands/linux-awk-command/awk-syntax/&#34;&gt;Awk command tutorial in linux/unix with examples and use cases&lt;/a&gt;的部分译文&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>记一次线上Redis警报</title>
      <link>https://rainfd.fun/posts/10_redis-timeout/</link>
      <pubDate>Mon, 16 Dec 2019 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/10_redis-timeout/</guid>
      <description>&lt;p&gt;这周周五收到了两个不同系统的Redis集群警报，无独有偶，都是提示连接数超过80%。这个问题在公司其他系统挺常见的，在此记录一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>记一次线上K8s临时存储与驱逐的问题</title>
      <link>https://rainfd.fun/posts/9_k8s-disk-resource-consumption/</link>
      <pubDate>Thu, 31 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/9_k8s-disk-resource-consumption/</guid>
      <description>&lt;p&gt;线上容器被驱逐引出的一系列问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用Travis CI构建部署GithubPage</title>
      <link>https://rainfd.fun/posts/8_travis-ci-build-githubpage/</link>
      <pubDate>Sun, 20 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/8_travis-ci-build-githubpage/</guid>
      <description></description>
    </item>
    <item>
      <title>成为DevOps工程师-版本控制Git篇</title>
      <link>https://rainfd.fun/posts/7_%E6%88%90%E4%B8%BAdevops%E5%B7%A5%E7%A8%8B%E5%B8%88-%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6git%E7%AF%87/</link>
      <pubDate>Sat, 18 May 2019 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/7_%E6%88%90%E4%B8%BAdevops%E5%B7%A5%E7%A8%8B%E5%B8%88-%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6git%E7%AF%87/</guid>
      <description>&lt;p&gt;网上关于Git的文章实在是太多了，所以我就不浪费时间介绍一些基本概念和操作。
在这里我推荐一些相关的资源，以及介绍一些不常见但实用的技巧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>成为DevOps工程师-配置Ansible篇</title>
      <link>https://rainfd.fun/posts/6_%E6%88%90%E4%B8%BAdevops%E5%B7%A5%E7%A8%8B%E5%B8%88-%E9%85%8D%E7%BD%AEansible%E7%AF%87/</link>
      <pubDate>Sat, 20 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/6_%E6%88%90%E4%B8%BAdevops%E5%B7%A5%E7%A8%8B%E5%B8%88-%E9%85%8D%E7%BD%AEansible%E7%AF%87/</guid>
      <description>&lt;p&gt;什么是Ansible？Ansible能干什么？&lt;/p&gt;</description>
    </item>
    <item>
      <title>成为DevOps工程师-配置Terraform篇</title>
      <link>https://rainfd.fun/posts/5_%E6%88%90%E4%B8%BAdevops%E5%B7%A5%E7%A8%8B%E5%B8%88-%E9%85%8D%E7%BD%AEterraform%E7%AF%87/</link>
      <pubDate>Sun, 07 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/5_%E6%88%90%E4%B8%BAdevops%E5%B7%A5%E7%A8%8B%E5%B8%88-%E9%85%8D%E7%BD%AEterraform%E7%AF%87/</guid>
      <description>&lt;p&gt;在博文&lt;a href=&#34;https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737&#34;&gt;How To Become a DevOps Engineer In Six Months or Less&lt;/a&gt;中，作者介绍了一条DevOps的学习路线&lt;/p&gt;
&lt;!-- ![devops_six_parts](/img/5/devops_six_parts.png) --&gt;
&lt;p&gt;本系列文章将依据这条路线，因地制宜，介绍各个环节和这些工具的使用。&lt;/p&gt;
&lt;p&gt;本文正是第一篇：配置 Terraform篇。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bottle源码阅读笔记（二）：路由</title>
      <link>https://rainfd.fun/posts/4_bottle%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0%E4%BA%8C%E8%B7%AF%E7%94%B1/</link>
      <pubDate>Wed, 14 Jun 2017 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/4_bottle%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0%E4%BA%8C%E8%B7%AF%E7%94%B1/</guid>
      <description>&lt;p&gt;程序收到请求后，会根据URL来寻找相应的视图函数，随后由其生成页面发送回给客户端。其中，不同的URL对应着不同的视图函数，这就存在一个映射关系。而处理这个映射关系的功能就叫做路由。路由的实现分为两部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;生成URL映射关系&lt;/li&gt;
&lt;li&gt;根据请求匹配正确的视图函数
本文将围绕这两个部分进行分析。&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Bottle源码阅读笔记（一）：WSGI</title>
      <link>https://rainfd.fun/posts/3_bottle%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0%E4%B8%80wsgi/</link>
      <pubDate>Mon, 05 Jun 2017 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/3_bottle%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0%E4%B8%80wsgi/</guid>
      <description>&lt;p&gt;Bottle是一个Python Web框架。整个框架只有一个文件，不到4k行的代码，没有Python标准库以外的依赖，却包含了路由、模板和插件等Web框架常用功能。通过阅读Bottle源码来了解什么是Web框架和Web框架是怎么工作是再合适不过了。由于Bottle是一个支持WSGI的框架，在阅读源码之前，我们先来了解什么是WSGI。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python &#34;__slots__&#34; 详解</title>
      <link>https://rainfd.fun/posts/2_python__slots__%E8%AF%A6%E8%A7%A3/</link>
      <pubDate>Fri, 07 Apr 2017 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/2_python__slots__%E8%AF%A6%E8%A7%A3/</guid>
      <description>&lt;p&gt;当一个类需要创建大量实例时，可以通过&lt;code&gt;__slots__&lt;/code&gt;声明实例所需要的属性，&lt;/p&gt;
&lt;p&gt;例如，&lt;code&gt;class Foo(object): __slots__ = [&#39;foo&#39;]&lt;/code&gt;。这样做带来以下优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;更快的属性访问速度&lt;/li&gt;
&lt;li&gt;减少内存消耗&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>[译]如何在Web开发中使用Python</title>
      <link>https://rainfd.fun/posts/1_%E8%AF%91%E5%A6%82%E4%BD%95%E5%9C%A8web%E5%BC%80%E5%8F%91%E4%B8%AD%E4%BD%BF%E7%94%A8python/</link>
      <pubDate>Thu, 23 Feb 2017 00:00:00 +0000</pubDate>
      <guid>https://rainfd.fun/posts/1_%E8%AF%91%E5%A6%82%E4%BD%95%E5%9C%A8web%E5%BC%80%E5%8F%91%E4%B8%AD%E4%BD%BF%E7%94%A8python/</guid>
      <description>&lt;p&gt;原文：&lt;a href=&#34;https://docs.python.org/3/howto/webservers.html&#34;&gt;HOWTO Use Python in the Web&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;这篇文档展示了Python如何融入到web中。它介绍了几种Python结合web服务器的方法，以及开发网站的一些常规做法。&lt;/em&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
