<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Udc on swaw</title><link>https://swaw.com/tags/udc/</link><description>Recent content in Udc on swaw</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 05 Apr 2026 02:54:53 +0800</lastBuildDate><atom:link href="https://swaw.com/tags/udc/index.xml" rel="self" type="application/rss+xml"/><item><title>Xvenv</title><link>https://swaw.com/p/xvenv/</link><pubDate>Sun, 12 Oct 2025 20:11:44 +0800</pubDate><guid>https://swaw.com/p/xvenv/</guid><description>&lt;h1 id="彻底告别环境污染xvenv一个-bat-脚本极速拉起免安装全栈开发环境"&gt;彻底告别环境污染！Xvenv：一个 BAT 脚本极速拉起免安装全栈开发环境&lt;/h1&gt;
&lt;p&gt;在日常开发中，我们几乎都经历过以下“噩梦”时刻：&lt;/p&gt;
&lt;p&gt;系统环境严重污染：为了跑不同项目，装了无数个 Python、Node、Go 版本，PATH 环境变量乱成一锅粥，甚至出现版本冲突，排查起来令人抓狂。
难以忍受的 C++ 编译链：为了写点 Rust 甚至搞点 C++ 扩展，被迫安装动辄十几 GB 的 Visual Studio，不仅下载巨慢，卸载还会残留一堆注册表垃圾。
令人精分的 Git 身份管理：白天写公司项目，晚上搞开源，一个不留神就把公司邮箱 Commit 到了 Github 上，或者多个Github账号来回切换连SSH Key 都配不明白，然后去修改仓库权限。
团队协作卡在第一步：新同事入职，花半天时间看文档“配置开发环境”，结果因为系统环境差异各种报错，“在我电脑上明明能跑”成了千古魔咒。&lt;/p&gt;
&lt;p&gt;想要一个不改系统 PATH、不用安装臃肿 VS、不做任何系统修改、一个项目一套环境，即插即用的随身开发工具箱？&lt;/p&gt;
&lt;p&gt;介绍一下我的开源工具 —— Xvenv，它用最复古的形式（一个单批处理文件），解决了最现代的开发环境隔离问题。&lt;/p&gt;
&lt;h2 id="什么是-xvenv"&gt;什么是 Xvenv？&lt;/h2&gt;
&lt;p&gt;一个极简的 .bat单文件脚本（xvenv.cmd，内部使用 Bat + PowerShell 混编(Polyglot)技术，无需任何外部依赖）。&lt;/p&gt;
&lt;p&gt;你可以把它复制多份，放到不同的项目/目录中，然后只需双击，它就会一键下载、解压、并以免安装方式配置好所有所需的开发环境。所有文件、环境设置…都被锁定在它自身所在目录的.xvenv文件夹中。下次双击，会拉起一个加载了所有所需环境配置的专用终端，你的系统依然洁白如新。&lt;/p&gt;
&lt;p&gt;若同时运行多个不同目录的xvenv.cmd，它们之间亦是完全独立，互不影响。&lt;/p&gt;
&lt;h2 id="强大且纯粹的核心功能模块"&gt;强大且纯粹的核心功能模块&lt;/h2&gt;
&lt;p&gt;Xvenv 的哲学是“按需拼装”。只需在脚本顶部指定你需要的模块名，它就会自动为你搭建好以下支持的环境：&lt;/p&gt;
&lt;h3 id="msvc免安装极速-c-编译链"&gt;msvc免安装极速 C++ 编译链&lt;/h3&gt;
&lt;p&gt;痛点：只是想编译一个 Rust 项目或者装个带有 C 扩展的 Python 包，却要被逼着下几十 GB 的 Visual Studio ？
Xvenv 方案：它是 Xvenv 的核心“黑魔法”。脚本会直接解析微软官方的离线 Manifest，精准提取并下载组装 C++ 头文件、库和工具链组件。完全不需要 Visual Studio，几分钟内生成一个纯绿色的 MSVC 环境。&lt;/p&gt;</description></item><item><title>Xvenv</title><link>https://swaw.com/p/xvenv/</link><pubDate>Sun, 12 Oct 2025 20:11:44 +0800</pubDate><guid>https://swaw.com/p/xvenv/</guid><description>&lt;h1 id="彻底告别环境污染xvenv一个-bat-脚本极速拉起免安装全栈开发环境"&gt;彻底告别环境污染！Xvenv：一个 BAT 脚本极速拉起免安装全栈开发环境&lt;/h1&gt;
&lt;p&gt;在日常开发中，我们几乎都经历过以下“噩梦”时刻：&lt;/p&gt;
&lt;p&gt;系统环境严重污染：为了跑不同项目，装了无数个 Python、Node、Go 版本，PATH 环境变量乱成一锅粥，甚至出现版本冲突，排查起来令人抓狂。
难以忍受的 C++ 编译链：为了写点 Rust 甚至搞点 C++ 扩展，被迫安装动辄十几 GB 的 Visual Studio，不仅下载巨慢，卸载还会残留一堆注册表垃圾。
令人精分的 Git 身份管理：白天写公司项目，晚上搞开源，一个不留神就把公司邮箱 Commit 到了 Github 上，或者多个Github账号来回切换连SSH Key 都配不明白，然后去修改仓库权限。
团队协作卡在第一步：新同事入职，花半天时间看文档“配置开发环境”，结果因为系统环境差异各种报错，“在我电脑上明明能跑”成了千古魔咒。&lt;/p&gt;
&lt;p&gt;想要一个不改系统 PATH、不用安装臃肿 VS、不做任何系统修改、一个项目一套环境，即插即用的随身开发工具箱？&lt;/p&gt;
&lt;p&gt;介绍一下我的开源工具 —— Xvenv，它用最复古的形式（一个单批处理文件），解决了最现代的开发环境隔离问题。&lt;/p&gt;
&lt;h2 id="什么是-xvenv"&gt;什么是 Xvenv？&lt;/h2&gt;
&lt;p&gt;一个极简的 .bat单文件脚本（xvenv.cmd，内部使用 Bat + PowerShell 混编(Polyglot)技术，无需任何外部依赖）。&lt;/p&gt;
&lt;p&gt;你可以把它复制多份，放到不同的项目/目录中，然后只需双击，它就会一键下载、解压、并以免安装方式配置好所有所需的开发环境。所有文件、环境设置…都被锁定在它自身所在目录的.xvenv文件夹中。下次双击，会拉起一个加载了所有所需环境配置的专用终端，你的系统依然洁白如新。&lt;/p&gt;
&lt;p&gt;若同时运行多个不同目录的xvenv.cmd，它们之间亦是完全独立，互不影响。&lt;/p&gt;
&lt;h2 id="强大且纯粹的核心功能模块"&gt;强大且纯粹的核心功能模块&lt;/h2&gt;
&lt;p&gt;Xvenv 的哲学是“按需拼装”。只需在脚本顶部指定你需要的模块名，它就会自动为你搭建好以下支持的环境：&lt;/p&gt;
&lt;h3 id="msvc免安装极速-c-编译链"&gt;msvc免安装极速 C++ 编译链&lt;/h3&gt;
&lt;p&gt;痛点：只是想编译一个 Rust 项目或者装个带有 C 扩展的 Python 包，却要被逼着下几十 GB 的 Visual Studio ？
Xvenv 方案：它是 Xvenv 的核心“黑魔法”。脚本会直接解析微软官方的离线 Manifest，精准提取并下载组装 C++ 头文件、库和工具链组件。完全不需要 Visual Studio，几分钟内生成一个纯绿色的 MSVC 环境。&lt;/p&gt;</description></item><item><title>test</title><link>https://swaw.com/p/test/</link><pubDate>Sat, 11 Oct 2025 20:10:44 +0800</pubDate><guid>https://swaw.com/p/test/</guid><description>&lt;h1 id="彻底告别环境污染xvenv一个-bat-脚本极速拉起免安装全栈开发环境"&gt;彻底告别环境污染！Xvenv：一个 BAT 脚本极速拉起免安装全栈开发环境&lt;/h1&gt;
&lt;p&gt;在日常开发中，我们几乎都经历过以下“噩梦”&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;blockquote&gt;
&lt;p&gt;中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以&lt;/p&gt;
&lt;/blockquote&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;blockquote&gt;
&lt;p&gt;中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以&lt;/p&gt;
&lt;/blockquote&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;&lt;img src="https://fastly.jsdelivr.net/gh/bucketio/img19@main/2026/02/26/1772115901539-ec3e94f9-68db-4cf2-ba2d-746e7ca21cd6.png" alt="本极速拉起免安装全栈开发环境"&gt;&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;&lt;img src="https://fastly.jsdelivr.net/gh/bucketio/img19@main/2026/02/26/1772115901539-ec3e94f9-68db-4cf2-ba2d-746e7ca21cd6.png" alt="本极速拉起免安装全栈开发环境"&gt;&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩
import re # Launch IDEs
from typing import Dict, List, Optional, Pattern, Tuple # Launch
# Launch IDEs
# Launch IDEse dfsgdfg saergsdfgs gsdfg serg sdfg 
Classification = Dict[str, Optional[object]] # Launch IDEs
#噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩
&lt;/code&gt;&lt;/pre&gt;&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;sadfe &lt;a href="https://github.com/yanglbme"&gt;yanglbme&lt;/a&gt; 在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;无序列表项 1&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;嵌套有序列表项 1&lt;/li&gt;
&lt;li&gt;嵌套有序列表项 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无序列表项 2&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;有序列表项 1&lt;/li&gt;
&lt;li&gt;有序列表项 2&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt; &lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Pattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Tuple&lt;/span&gt; &lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Launch IDEse dfsgdfg saergsdfgs gsdfg serg sdfg &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Classification&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Launch IDEse dfsgdfg saergsdfgs gsdfg serg sdfg &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_default_rules&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Pattern&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;Classification&lt;/span&gt;&lt;span class="p"&gt;]]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;401\s+Unauthorized&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IGNORECASE&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;401 Unauthorized&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;403\s+Forbidden&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IGNORECASE&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;403 Forbidden&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;classify_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Pattern&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;Classification&lt;/span&gt;&lt;span class="p"&gt;]]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Classification&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rules&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;custom_rules&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;custom_rules&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;_default_rules&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;</description></item><item><title>test</title><link>https://swaw.com/p/test/</link><pubDate>Sat, 11 Oct 2025 20:10:44 +0800</pubDate><guid>https://swaw.com/p/test/</guid><description>&lt;h1 id="彻底告别环境污染xvenv一个-bat-脚本极速拉起免安装全栈开发环境"&gt;彻底告别环境污染！Xvenv：一个 BAT 脚本极速拉起免安装全栈开发环境&lt;/h1&gt;
&lt;p&gt;在日常开发中，我们几乎都经历过以下“噩梦”&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;blockquote&gt;
&lt;p&gt;中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以&lt;/p&gt;
&lt;/blockquote&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;blockquote&gt;
&lt;p&gt;中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以&lt;/p&gt;
&lt;/blockquote&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;&lt;img src="https://fastly.jsdelivr.net/gh/bucketio/img19@main/2026/02/26/1772115901539-ec3e94f9-68db-4cf2-ba2d-746e7ca21cd6.png" alt="本极速拉起免安装全栈开发环境"&gt;&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;&lt;img src="https://fastly.jsdelivr.net/gh/bucketio/img19@main/2026/02/26/1772115901539-ec3e94f9-68db-4cf2-ba2d-746e7ca21cd6.png" alt="本极速拉起免安装全栈开发环境"&gt;&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩
import re # Launch IDEs
from typing import Dict, List, Optional, Pattern, Tuple # Launch
# Launch IDEs
# Launch IDEse dfsgdfg saergsdfgs gsdfg serg sdfg 
Classification = Dict[str, Optional[object]] # Launch IDEs
#噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩噩
&lt;/code&gt;&lt;/pre&gt;&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;sadfe &lt;a href="https://github.com/yanglbme"&gt;yanglbme&lt;/a&gt; 在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”&lt;/p&gt;
&lt;section class="md-spacer"&gt;&lt;/section&gt;
&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;无序列表项 1&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;嵌套有序列表项 1&lt;/li&gt;
&lt;li&gt;嵌套有序列表项 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无序列表项 2&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;有序列表项 1&lt;/li&gt;
&lt;li&gt;有序列表项 2&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”在日常开发中，我们几乎都经历过以下“噩梦”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt; &lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Pattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Tuple&lt;/span&gt; &lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Launch IDEse dfsgdfg saergsdfgs gsdfg serg sdfg &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Classification&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="c1"&gt;# Launch IDEs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Launch IDEse dfsgdfg saergsdfgs gsdfg serg sdfg &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_default_rules&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Pattern&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;Classification&lt;/span&gt;&lt;span class="p"&gt;]]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;401\s+Unauthorized&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IGNORECASE&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;401 Unauthorized&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;403\s+Forbidden&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IGNORECASE&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;403 Forbidden&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line hl"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;classify_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Pattern&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;Classification&lt;/span&gt;&lt;span class="p"&gt;]]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Classification&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rules&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;custom_rules&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;custom_rules&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;_default_rules&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ban_info&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;is_active&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在日常开发中，我们几乎历过以下“噩梦”时刻：&lt;/p&gt;</description></item></channel></rss>