[{"content":"本期教程的内容为零元开通海外虚拟卡。本卡的优点是可以支持 99% 的支付场景，同时支持微信、支付宝、美团等绑定在国内消费。当前限时 0 开卡费、七天 0 手续费，并且开卡赠送 1 美金。\n重要说明： 本教程是免费开卡、绑卡使用的教程，非成品卡。不建议购买成品卡绑定使用，不太安全而且不稳定。此卡亲测成功可以绑定和使用 Google Pay、Apple Pay、Microsoft、ChatGPT、Gemini、Gork、PayPal、Alipay HK、支付宝、美团等平台。\n一、注册 注册链接： https://wap.roogoo.cloud/register?inviteCode=b22f9y wap.roogoo.cloud ↗ 邀请码：b22f9y\n国内可以直接访问，如无法访问请使用节点。\n一定要填写邀请码才能享受到福利。 通过本链接注册可享免费开卡、7 天 0 费率试用。 可升级卡片终身 0 费率权益。 二、开卡 注册之后直接登录，前往主页，点击免费申请卡片。\n选择卡片类型。\n注意：\n美区付款请选择乐享卡。 AI 付费订阅必须开乐享卡。 港区付款请选择无界卡。 限时 0 开卡费，需要首冲 10U，也就是 10 美金。这张卡可以绑定微信或者支付宝直接消费，所以冲进去的 10 美金就是自己的钱，不用担心没地方花。\n三、充值 充值美金需要用到数字钱包提现，选择网络后进行链上充值。此处参考： 使用欧易充值 help.roogoo.com ↗ ，欧易支持 RMB 换 USDT。\n充值到账后直接点击开通卡片。系统会要求实名认证，直接选择 Sumsub 快捷认证。这个认证平台是国际专门做 KYC 认证的平台，无需担心隐私问题。\n实名认证完毕后需要点击完成，然后去开通卡片。开通卡片仍然从首页进入，在「卡片」里添加卡片。添加卡片时会提示充值金额，填写 10 刀即可。开通成功后会看到如下页面。\n四、卡片明细 点击小眼睛查看卡号，获取验证码后即可看到卡片的卡号、到期时间、CVV 安全码。\n安全提醒： 这里面的内容就是卡片的卡号和密码，切记不要分享给任何人，以免造成资金被盗。\n特别注意 卡片如果多次被拒，或卡内余额不足还继续进行消费，卡片将会被冻结，同时还将收取拒付费，一定要注意。\n以下为申请须知，务必仔细阅读观看。\n五、卡片使用 卡片不支持 0 元试用，仅支持正常付费订阅。\n亲测此卡可以绑定 Apple Pay、Google Pay、ChatGPT、PayPal、微信、支付宝、美团等各种平台。绑定过程只需要输入卡号、到期时间、CVV 即可完成绑定消费。\n支付宝 微信 Apple Pay Google Pay PayPal 美团 以下场景均支持绑定、消费：\n","permalink":"https://francis-xavier-code.github.io/p/roogoo-card/","summary":"\u003cp\u003e本期教程的内容为零元开通海外虚拟卡。本卡的优点是可以支持 99% 的支付场景，同时支持微信、支付宝、美团等绑定在国内消费。当前限时 0 开卡费、七天 0 手续费，并且开卡赠送 1 美金。\u003c/p\u003e","title":"roogoo 乐享卡开卡教程"},{"content":"前言 在日常生活中，我们的电脑经常需要进行 生产工作，这时候一些工具对我们来说很有必要，因为工具能够提升我们的生产效率。\n⚠️：标题超链接指向其软件的官网地址，点击即可跳转\n为什么要写这篇文章 因为一些工具不整理，后续我自己换新电脑后也会忘记那些是好用的软件，如果没有这篇文章当导航栏就等于增加了选择工具和查阅工具带来的时间损耗。\n工具推荐 由于本人只有 Windows 的生产电脑，所以此篇文章只讲本人使用过的 Windows 端工具。在此帖子中，我会介绍生产力工具的使用场景、功能，同时附带使用界面截图，让你快速了解这是一个什么样的工具。\n1.1 NeatDownloadManager www.neatdownloadmanager.com ↗ ——多线程下载工具 在日常下载文件的时候，我们通常会因为网络波动而烦恼。有时候即使你家的 WiFi 上行宽带非常高，也难免会出现一些 网络波动。如果在下载软件时突然断开，对浏览器下载来说就必须重新下载，这非常消耗我们的生产时间。而这个工具支持 断点续传（关机和重启后还能继续下载），也支持 分段下载（将一个文件拆成许多份分别下载，全部下载完成后再进行合并）。\n界面展示：\n这是主界面，点击桌面图标后出现的界面\n这是下载界面。当我们从浏览器选择对应的文件并下载时，这个界面就会弹出来，可以看到速度非常快\n而且它还支持将下载的文件按格式或者名称进行分类：\n总的来说，这个软件几乎是必需品，毕竟这样高效率的免费软件谁不爱呢？\n1.2 LightShot app.prntscr.com ↗ ——好用的截图软件 在日常截图中，Windows 自带的截图工具并非不好用，而是功能 过于冗余。一些图标有时候还容易弄混淆，甚至有些只能保存到 剪贴板，这就导致一些截图需要先粘贴到特殊的地方，再使用“另存为”来保存。\n而这款软件支持的功能都是 必需品，不得不借鉴。\n简洁明了是它的强项，快速保存是它的优势\n1.3 微信输入法 z.weixin.qq.com ↗ ——个人认为最强最好用的输入法 在 Windows 电脑上，我们登录一些网站经常要用到手机上的验证码，这个时候这款输入法的功能就体现出来了：它支持多端 剪贴板秒同步，而且词语候选框非常 有质感，并且支持多端传输文件，再也不用打开占用内存的某 Q 某 V 来“我的电脑”或者建群传送了（关键是 原图直传，不压缩图片清晰度）。\n候选词预览：\n怎么样？有没有一点 Mac 的风格？这款输入法肯定能大幅度提高你的生产效率。\n1.4 GitHub Stars Manager gsm.aminta.top ↗ ——GitHub Stars 聚合查看器 在日常生活中，我们经常会收藏一些实用的 GitHub 仓库。但随着时间的积累，仓库越来越多，用网页查找某个 Star 过的仓库得翻半天，这时候这个软件的功能就体现出来了。\n它通过你的 GitHub API 同步你 Star 过的仓库，结合搜索以及 AI 来帮你整理仓库。这是一个令人惊讶的项目，完美解决了日常上网中的需求点。\n聚合之后，再也不用去网页端翻来覆去了。\n1.5 SumatraPDF www.sumatrapdfreader.org ↗ ——好用、轻量的PDF阅读器 在查看一些PDF的时候，尝尝因为阅读体验大打折扣，因此一个好的PDF阅读器就很重要。\n此软件占用的内存仅 30MB左右\n界面预览：\n1.6 Typora typora.io ↗ ——好用的Markdown编辑器 在日常中，我们需要写一些笔记或者文档，此时Markdown最合适不过，因此需要好的编辑器\n顺带提一嘴，这个软件唯一不好的就是要付费，具体价格和相关说明请看文档\n界面预览：\n附言 随着互联网的发展，我们已经进入了 AI 时代，信息的便捷化使得一些人丰富了自身的生活体验。然而随着越来越多的小白用户大量使用电脑，一些 黑客 盯上了他们，想通过 银狐病毒 把小白的电脑制成 肉鸡。\n真的汽水官方网站\n假的汽水网站\n如上图所示，小白在下载软件时往往无法分辨真正的官网。在生产环境中最怕的就是下载到不干净的东西，造成严重的损失，因此找到官方网站很有必要。同时我也再次呼吁各路人士增加对此类网站的举报，为互联网净土贡献一份自身的力量\n留言 本帖子将持续更新，如果你有好用的软件，请在下方评论区带截图留言，我会将你的贡献嵌入此篇文章内！\n最后一次更新于2026-06-30 （北京时间）\n","permalink":"https://francis-xavier-code.github.io/p/tools-url/","summary":"\u003ch2 id=\"前言\"\u003e前言\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e在日常生活中，我们的电脑经常需要进行 \u003ccode\u003e生产工作\u003c/code\u003e，这时候一些工具对我们来说很有必要，因为工具能够提升我们的生产效率。\u003c/p\u003e\n\u003cp\u003e⚠️：标题超链接指向其软件的官网地址，点击即可跳转\u003c/p\u003e","title":"好用的工具合集-win篇-附官方地址"},{"content":"看烦了原生 PowerShell 朴素、单调的界面？想拥有类似 macOS/Linux 终端那样优雅的路径显示、Git 状态提示、行尾历史预测、带图标的 ls 以及模糊查找吗？\n之前为了折腾这些，往往需要看好几篇教程，分别安装 oh-my-posh、PSReadLine、配置 Terminal-Icons、安装各种底层命令……不仅步骤繁多，还容易遇到中文乱码、包管理器网络受限等各种令人抓狂的坑。\n为了“一劳永逸”地解决这些痛点，我开发了 pwsh-pretty github.com ↗ 这个一键配置项目。\n只需运行一条命令，就能把你的 PowerShell 7 瞬间变身，颜值与效率直接拉满！\n如果图片加载失败请更换网络。\n📸 效果预览 路径包裹在彩色圆角胶囊里，不会和上一行命令的输出混在一起。 命令行提示符箭头会根据上一条命令的退出状态自动变色（成功为绿，失败为红）。 模块化设计，丢入一个配置文件就能轻松扩展。 🌟 核心特性 🎯 极简两行提示符：基于 oh-my-posh，完美显示当前路径与 Git 状态，干净不凌乱。 🎨 带图标的 ls：使用更现代的 eza 替换原有 ls，目录优先展示，且附带常用别名 ll / la / lt。 ⌨️ 历史预测与补全：灰字实时预览历史命令，按 → 键即可一键接受，效率飞起。 🈶 完美支持 UTF-8：启动时强制开启，彻底修复中文文件名和图标显示为 □ 乱码的痛点。 🧰 效率工具全家桶：自动集成 fzf、bat、mdcat、zoxide、fastfetch 等增强工具。 📦 内置 pget 包管理 TUI：将 fzf 和 scoop / winget 临时联动，打造极致的终端包安装体验。 ↩️ 安全且完全可逆：安装时自动备份旧配置，卸载脚本可一键无缝还原。 🚀 安装步骤 在 Windows 11 / 10 下，打开 PowerShell 7。\n1. 运行一键安装脚本（推荐） 1 irm https://raw.githubusercontent.com/Xynrin/pwsh-pretty/main/bootstrap.ps1 | iex 💡 首次运行可能需要开启脚本执行策略：\nSet-ExecutionPolicy RemoteSigned -Scope CurrentUser\n如果你的网络访问 GitHub Raw 较慢，可以使用代理参数运行：\n1 2 $env:PWSH_PRETTY_PROXY=\u0026#39;http://127.0.0.1:7897\u0026#39; irm https://raw.githubusercontent.com/Xynrin/pwsh-pretty/main/bootstrap.ps1 | iex 2. 本地克隆安装（备用方式） 你也可以直接克隆仓库进行交互式选择：\n1 2 3 git clone https://github.com/Xynrin/pwsh-pretty.git cd pwsh-pretty .\\install.ps1 # 交互式询问；支持 -All（全装）或 -CoreOnly（只装核心提示符） 安装完成后，必须完全关闭并重新打开 Windows Terminal 让配置和环境变量生效。\n📚 深度玩法与配置详解 pwsh-pretty 并不是简单地装一堆工具，而是进行了深度的模块化整合。以下是它为你的终端带来的改变：\n1. eza —— 彩色图标版 ls 脚本会用 eza 替换原生的 ls 系列命令，并在 profile 中预设了以下快捷别名：\n命令 作用 ls 彩色图标 + 目录优先排列 ll 详细长格式列表 la 长格式列表，且包含隐藏文件 lt 2层目录树状视图 (Tree) 2. fzf —— 模糊查找神器 我们无需再去繁琐地配置 PSFzf 模块，pwsh-pretty 采用 PSReadLine 原生键绑定 直接调用底层的 fzf 可执行文件：\nCtrl + T：实时模糊查找当前目录下的文件，并插入到命令行。 Ctrl + R：模糊搜索命令历史，支持拼音与拼写匹配。 3. pget —— 极简的交互式包管理器 这是本项目精心设计的一个 TUI 小工具。基于 fzf 和 scoop / winget：\n运行 pget 即可浏览所有 scoop 软件包，使用 pget \u0026lt;关键词\u0026gt; 过滤。 使用 Tab 键可以多选，敲 Enter 一键批量安装。 预览窗会实时加载 scoop info，无需去浏览器翻文档。 想要使用 winget 源，只需加 -w 参数即可（例如 pget -w obsidian）。 4. fastfetch —— 属于终端的“看板娘” 输入 ff，会每次随机拉取一张 SFW 的二次元图片，并配合展示你的系统配置状态。\n图片源于 nekos.best，每次启动时会在后台异步下载补充库存，完全不拖慢终端的启动速度。 如果网络断开或不支持 sixel 协议，会自动降级为纯系统配置文本显示。 5. bat \u0026amp; mdcat —— 更棒的文本预览 cat \u0026lt;文件\u0026gt; 自动重定向到 bat，支持语法高亮与行号，再也不用看白花花一片的纯文本了。 md \u0026lt;Markdown文件\u0026gt; 自动调用 mdcat，直接在终端里渲染精美的富文本格式（依赖固定版本）。 🧩 极度舒适的模块化设计（profile.d） pwsh-pretty 将繁复的 PowerShell profile 拆分成了 profile.d/ 文件夹下的独立片段：\n1 2 3 4 5 6 7 8 9 10 11 $PROFILE 所在目录/ ├── Microsoft.PowerShell_profile.ps1 # 主入口，自动遍历加载子片段 ├── my-minimal.omp.json # oh-my-posh 提示符主题 └── profile.d/ ├── 10-encoding.ps1 # 强制 UTF-8 编码避免乱码 ├── 20-prompt.ps1 # oh-my-posh 核心逻辑 ├── 30-eza.ps1 # ls 等常用别名 ├── 40-psreadline.ps1 # 快捷键及历史命令预测视图 ├── 50-tools.ps1 # 绑定 fzf/bat/zoxide/mdcat 等扩展工具 ├── 55-fastfetch-waifu.ps1 # 异步二次元看板娘功能 └── 60-pget.ps1 # pget 命令行脚本 自定义扩展：只需要写一个普通的 .ps1 脚本，比如 70-custom-aliases.ps1，丢进 profile.d/ 文件夹中，下次打开终端即可自动加载。 关闭某功能：如果你不需要某项美化或增强，只需在文件名后加上 .off（例如 55-fastfetch-waifu.ps1.off）或者直接将其删除，终端不会报任何错误。 🧹 卸载 如果不喜欢或需要更换，运行项目根目录下的卸载脚本，即可把备份的配置文件无痕还原：\n1 2 .\\uninstall.ps1 # 恢复原有的 profile，保留 scoop/工具 .\\uninstall.ps1 -RemoveTools # 还原配置，并同时卸载通过本脚本安装的所有工具 🛠️ 故障排查与常见问题 1. 图标显示成方块 □ 或问号 ? 多半是因为你的 Windows Terminal 字体没有使用 Nerd Font。\n解决方法：打开 Windows Terminal 设置（Ctrl + ,）-\u0026gt; 默认值 -\u0026gt; 外观 -\u0026gt; 字体，将其设置为 JetBrainsMono Nerd Font（安装脚本默认会下载安装它，但如果被本地配置覆盖了需要手动调整一下）。 2. 为什么不用 Terminal-Icons 模块？ Terminal-Icons 虽然也很棒，但其主要发布在 PowerShell Gallery 上，而某些内网/网络环境下，官方的 NuGet 源访问极其艰难，极易报错。转而使用 eza (基于 Rust 编写的高性能替代品) 不仅速度更快，而且可以通过 scoop 安装，稳定性大大提升。\n✍️ 作者的话 这套配置我个人体验了很长时间，用起来确实比默认的 PowerShell 效率高出不少。如果你在安装或使用中遇到了任何问题：\n可以在 GitHub Repository github.com ↗ 提 Issue（请附带你的 $PSVersionTable.PSVersion 以及完整报错）。 欢迎在下方评论区留言或者通过邮件联系我！ ","permalink":"https://francis-xavier-code.github.io/p/pwsh-pretty/","summary":"\u003cp\u003e看烦了原生 PowerShell 朴素、单调的界面？想拥有类似 macOS/Linux 终端那样优雅的路径显示、Git 状态提示、行尾历史预测、带图标的 \u003ccode\u003els\u003c/code\u003e 以及模糊查找吗？\u003c/p\u003e\n\u003cp\u003e之前为了折腾这些，往往需要看好几篇教程，分别安装 \u003ccode\u003eoh-my-posh\u003c/code\u003e、\u003ccode\u003ePSReadLine\u003c/code\u003e、配置 \u003ccode\u003eTerminal-Icons\u003c/code\u003e、安装各种底层命令……不仅步骤繁多，还容易遇到中文乱码、包管理器网络受限等各种令人抓狂的坑。\u003c/p\u003e","title":"美化你的 PowerShell 7 终端"},{"content":"脚本说明 1. 脚本适配范围 操作系统 适配版本 8～13 14～26 all 17～22 / LMDE 2～7 7～10 30～44 7～8 / Stream 8～10 all Leap 15 ~ 16 / Tumbleweed 2. 换源在线脚本 1 bash \u0026lt;(curl -sSL https://linuxmirrors.cn/main.sh) ps: 终端必须使用bash,并且在ROOT环境下运行\n3. 输出预览 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 请选择你想使用的软件源： ➤ 阿里云 腾讯云 华为云 移动云 天翼云 网易 火山引擎 清华大学 北京大学 浙江大学 南京大学 兰州大学 上海交通大学 华中科技大学 中国科学技术大学 中国科学院软件研究所 中国科技云 官方源 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 +-----------------------------------+ | ⡇ ⠄ ⣀⡀ ⡀⢀ ⡀⢀ ⡷⢾ ⠄ ⡀⣀ ⡀⣀ ⢀⡀ ⡀⣀ ⢀⣀ | | ⠧⠤ ⠇ ⠇⠸ ⠣⠼ ⠜⠣ ⠇⠸ ⠇ ⠏ ⠏ ⠣⠜ ⠏ ⠭⠕ | +-----------------------------------+ 欢迎使用 GNU/Linux 更换系统软件源脚本 运行环境 Ubuntu 24.04.4 LTS x86_64 系统时间 2026-06-04 14:12 Asia/Shanghai ➜ 腾讯云 ╭─ 请选择软件源的网络地址(访问方式)： │ ╰─ ● 公网 / ○ 内网 ╭─ 请选择软件源网络协议： │ ╰─ ● HTTP / ○ HTTPS \u0026#39;/etc/apt/sources.list.d/ubuntu.sources\u0026#39; -\u0026gt; \u0026#39;/etc/apt/sources.list.d/ubuntu.sources.bak\u0026#39; ✔ 已备份原有 ubuntu.sources 源文件 ","permalink":"https://francis-xavier-code.github.io/p/script-linux-change-source/","summary":"\u003ch1 id=\"脚本说明\"\u003e脚本说明\u003c/h1\u003e\n\u003ch2 id=\"1-脚本适配范围\"\u003e1. 脚本适配范围\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth style=\"text-align: left\"\u003e操作系统\u003c/th\u003e\n          \u003cth style=\"text-align: left\"\u003e适配版本\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Debian-red?style=flat\u0026logo=debian\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003e8～13\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Ubuntu-E95420?style=flat\u0026logo=ubuntu\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003e14～26\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Kali_Linux-white?style=flat\u0026logo=kali-linux\u0026logoColor=5575F5\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eall\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Linux_Mint-96C93D?style=flat\u0026logo=linux-mint\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003e17～22 / LMDE 2～7\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-RHEL-CC0000?style=flat\u0026logo=red-hat\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003e7～10\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Fedora-3C50B0?style=flat\u0026logo=fedora\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003e30～44\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-CentOS-262577?style=flat\u0026logo=centos\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003e7～8 / Stream 8～10\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-Arch_Linux-1793D1?style=flat\u0026logo=arch-linux\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eall\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003e\u003cimg src=\"https://img.shields.io/badge/-openSUSE-73BA25?style=flat\u0026logo=opensuse\u0026logoColor=white\" height=\"20\" style=\"vertical-align: middle;\"\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eLeap 15 ~ 16 / Tumbleweed\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-换源在线脚本\"\u003e2. 换源在线脚本\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv class=\"chroma\"\u003e\n\u003ctable class=\"lntable\"\u003e\u003ctr\u003e\u003ctd class=\"lntd\"\u003e\n\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"lnt\"\u003e1\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd class=\"lntd\"\u003e\n\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ebash \u0026lt;\u003cspan class=\"o\"\u003e(\u003c/span\u003ecurl -sSL https://linuxmirrors.cn/main.sh\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cp\u003eps: 终端必须使用bash,并且在\u003ccode\u003eROOT\u003c/code\u003e环境下运行\u003c/p\u003e","title":"linux快速换源"},{"content":"我是 Black Cat, 我是一名技术爱好者，喜欢钻研各种电子产品，阅读各种技术文章或者科技讲解视频，可以说与计算机相关的我都喜欢。\n在这里我将持续分享教学以及我的思想，如果你对某篇文章有想法，请滑动到文章最下方登录后进行留言，谢谢。\n我最喜欢的壁纸 公众号 ","permalink":"https://francis-xavier-code.github.io/about/","summary":"\u003cp\u003e我是 \u003cstrong\u003eBlack Cat\u003c/strong\u003e, 我是一名技术爱好者，喜欢钻研各种电子产品，阅读各种技术文章或者科技讲解视频，可以说与计算机相关的我都喜欢。\u003c/p\u003e\n\u003cp\u003e在这里我将持续分享教学以及我的思想，如果你对某篇文章有想法，请滑动到文章最下方登录后进行留言，谢谢。\u003c/p\u003e","title":"关于我"},{"content":"检索互联网许久，发现自动化部署影视库很少，于是此文章诞生了\n因为精力原因，可能出现表述错误，请见谅！\n如果你是咸鱼购买的教程 不用担心 先确认咸鱼名称是不是 小韵无敌手\n如果图片加载失败请更换网路。\n操作流程 1. 运行脚本，理解基础 首先我们使用 百度网盘 下载并解压 飞牛媒体库一键安装 pan.baidu.com ↗ \u0026lt;\u0026mdash;点击这个\n这时候我们得到了脚本和配置文件，使用scp命令将文件传入nas,scp命令如下:\n1 2 # 作者本人使用的是fedora-linux系统 其他系统命令格式可能不一样 scp 本地文件路径 nas用户名@nas-ip:/要上传到nas对应的文件路径 通过ssh连接你的nas\n找到刚刚上传的脚本，通过命令为脚本添加执行权限\n运行脚本，并输入密码\n此时脚本会自动拉取镜像，同时流式输入当前状态，等待脚本配置好后，会显示如图：\n我们要记住 ip 和端口，这是后续配置的关键！！！\n然后是脚本会自动创建显性（这里指 webui 默认打开文件管理器可查看）文件夹，如图：\nps: 脚本拉镜像跑容器均用 root, 这样防止多用户产生的 docker 容器隔离（这样不方便管理）\n2. 设置飞牛影视权限 首先确保你的飞牛 nas 下载了飞牛影视\n然后按照下图操作：\nps：因为脚本大量正则表达式过多，后续下载可能出现多个子文件夹情况（会导致视频无法显示，解决方法查看正确路径并在应用内设置对应路径，后续会规范文件路径）\n3. webui 后台初始化设置 3.1 打开第一个 webui 首先我们打开第一个界面（确保是 jellyfin）\n此时要求你设置用户名和密码之类的，一定要记住！！！\n3.2 打开第二个界面 必须确保如图所示界面\n上个步骤完成后下滑界面，然后点击下一步\n这里自动化脚本自动响应点击事件，自动带着你的 api 和 key 在安全的环境中配置和建立连接\n4. 完成基础个人配置 4.1 语言切换 等待一会就好了\n5. 效果展示 6. 作者的话 有什么想说的或者有疑惑的下方评论区留言或者联系我的邮箱！！！\n","permalink":"https://francis-xavier-code.github.io/p/fn-os-auto-video/","summary":"\u003cp\u003e检索互联网许久，发现自动化部署影视库很少，于是此文章诞生了\u003c/p\u003e\n\u003cp\u003e因为精力原因，可能出现表述错误，请见谅！\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e如果你是咸鱼购买的教程 不用担心 先确认咸鱼名称是不是 \u003cstrong\u003e小韵无敌手\u003c/strong\u003e\u003c/p\u003e","title":"飞牛OS使用脚本快速搭建下载影视"},{"content":"在日常开发或使用软件时，难免会用到网站重定向。\n例如：GitHub 上的一键安装脚本，其默认的 raw 链接非常长且难以记忆。这时就需要使用短链来进行快速重定向。\n市面上虽然有一些免费的短链/重定向工具，但它们的域名经常由于各种原因无法访问（🤫）。\n如果选择自己搭建重定向服务，通常需要解决以下问题：\n域名申请 服务器租赁 公网 IP 配置 还需要敲很多繁杂的配置命令…… 那么，有没有什么工具可以一键解决这些痛点，并且能够 免费“白嫖” 呢？\n答案是有的，那就是： InfinityFree dash.infinityfree.com ↗ 。它会为新用户免费提供虚拟主机（带有自定义二级域名，注意：该主机无法通过ssh连接）\n操作流程 注册与配置：访问 InfinityFree 官网 dash.infinityfree.com ↗ ，注册账号并创建/配置好你带二级域名的虚拟主机。 管理主机：在后台控制面板中，点击你域名旁边的 Manage 按钮。 进入重定向设置：进入管理面板后，按照下图的指引找到并点击 Redirects（重定向）功能。 添加重定向：在重定向页面中，点击右上角（或表单中）的添加按钮，输入你的目标网址和重定向路径，保存即可。 短链使用方式 添加成功后，你可以通过以下两种格式使用你的短链：\n完整链接https://你的域名/重定向路径 简写链接你的域名/重定向路径 ","permalink":"https://francis-xavier-code.github.io/p/redirects/","summary":"\u003cp\u003e在日常开发或使用软件时，难免会用到网站重定向。\u003c/p\u003e\n\u003cp\u003e例如：GitHub 上的\u003cstrong\u003e一键安装脚本\u003c/strong\u003e，其默认的 \u003ccode\u003eraw\u003c/code\u003e 链接非常长且难以记忆。这时就需要使用\u003cstrong\u003e短链\u003c/strong\u003e来进行快速重定向。\u003c/p\u003e","title":"快速创建属于自己的重定向工具"},{"content":"以 ds-balance-mcp 为例，说明如何为 DeepSeek TUI 制作一个 MCP Server。\n架构概览 1 2 3 4 5 6 7 DeepSeek TUI (MCP Host) MCP Server (独立进程) │ │ │──── stdin (JSON-RPC) ──────→│ │ │ │←──── stdout (JSON-RPC) ──────│ │ │ │ python3 /path/to/server.py │ 传输层：stdio，每行一个 JSON 对象 协议层：JSON-RPC 2.0 注册层：~/.deepseek/mcp.json 最简实现（3 个步骤） 步骤 1：实现 MCP 协议的核心方法 必须实现三个方法：\n方法 作用 何时调用 initialize 握手，声明协议版本和能力 Server 启动后立即调用 tools/list 列出所有可用工具 Initialize 之后 tools/call 执行具体工具 用户触发工具调用时 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 def handle(req): mid = req.get(\u0026#34;id\u0026#34;) method = req.get(\u0026#34;method\u0026#34;) params = req.get(\u0026#34;params\u0026#34;, {}) # ① 握手 —— 声明能力 if method == \u0026#34;initialize\u0026#34;: return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;result\u0026#34;: { \u0026#34;protocolVersion\u0026#34;: \u0026#34;2024-11-05\u0026#34;, \u0026#34;capabilities\u0026#34;: {\u0026#34;tools\u0026#34;: {}}, \u0026#34;serverInfo\u0026#34;: {\u0026#34;name\u0026#34;: \u0026#34;my-server\u0026#34;, \u0026#34;version\u0026#34;: \u0026#34;1.0.0\u0026#34;} } } # ② 列出工具 —— TUI 会据此生成 mcp_\u0026lt;server\u0026gt;_\u0026lt;tool\u0026gt; 工具 if method == \u0026#34;tools/list\u0026#34;: return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;result\u0026#34;: { \u0026#34;tools\u0026#34;: [ { \u0026#34;name\u0026#34;: \u0026#34;hello\u0026#34;, \u0026#34;description\u0026#34;: \u0026#34;打招呼，返回一句问候\u0026#34;, \u0026#34;inputSchema\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;object\u0026#34;, \u0026#34;properties\u0026#34;: { \u0026#34;name\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;description\u0026#34;: \u0026#34;要问候的名字\u0026#34; } }, \u0026#34;required\u0026#34;: [] } } ] } } # ③ 执行工具 —— 核心业务逻辑 if method == \u0026#34;tools/call\u0026#34;: tool_name = params.get(\u0026#34;name\u0026#34;) arguments = params.get(\u0026#34;arguments\u0026#34;, {}) if tool_name == \u0026#34;hello\u0026#34;: name = arguments.get(\u0026#34;name\u0026#34;, \u0026#34;World\u0026#34;) return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;result\u0026#34;: { \u0026#34;content\u0026#34;: [{\u0026#34;type\u0026#34;: \u0026#34;text\u0026#34;, \u0026#34;text\u0026#34;: f\u0026#34;Hello, {name}!\u0026#34;}] } } # 未知工具返回错误 return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;error\u0026#34;: {\u0026#34;code\u0026#34;: -32601, \u0026#34;message\u0026#34;: f\u0026#34;Unknown tool: {tool_name}\u0026#34;} } # 未知方法返回错误 return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;error\u0026#34;: {\u0026#34;code\u0026#34;: -32601, \u0026#34;message\u0026#34;: f\u0026#34;Unknown method: {method}\u0026#34;} } 步骤 2：写 stdio 主循环 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 def main(): # 可选：启动日志写到 stderr，不污染 stdout sys.stderr.write(\u0026#34;my-server: ready\\n\u0026#34;) sys.stderr.flush() for line in sys.stdin: line = line.strip() if not line: continue try: req = json.loads(line) resp = handle(req) if resp is not None: sys.stdout.write(json.dumps(resp, ensure_ascii=False) + \u0026#34;\\n\u0026#34;) sys.stdout.flush() except json.JSONDecodeError: continue except (BrokenPipeError, EOFError): break 核心逻辑：读一行 → 处理 → 写一行。\n步骤 3：在 mcp.json 中注册 编辑 ~/.deepseek/mcp.json：\n1 2 3 4 5 6 7 8 9 10 11 12 { \u0026#34;servers\u0026#34;: { \u0026#34;my-server\u0026#34;: { \u0026#34;command\u0026#34;: \u0026#34;python3\u0026#34;, \u0026#34;args\u0026#34;: [\u0026#34;/root/my-mcp-server.py\u0026#34;], \u0026#34;env\u0026#34;: {}, \u0026#34;enabled\u0026#34;: true, \u0026#34;enabled_tools\u0026#34;: [], \u0026#34;disabled_tools\u0026#34;: [] } } } 字段 说明 command 启动命令 args 命令行参数 env 环境变量（可选） enabled 是否启用 enabled_tools 白名单（空=全部启用） disabled_tools 黑名单 重启 TUI 后会自动启动 Server 进程，工具名格式为 mcp_\u0026lt;server名\u0026gt;_\u0026lt;工具名\u0026gt;，例如 mcp_my-server_hello。\n完整模板 以下是一个带错误处理的完整 Python MCP Server 模板：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 #!/usr/bin/env python3 \u0026#34;\u0026#34;\u0026#34;MCP stdio server 模板\u0026#34;\u0026#34;\u0026#34; import sys import json def handle(req): mid = req.get(\u0026#34;id\u0026#34;) method = req.get(\u0026#34;method\u0026#34;) params = req.get(\u0026#34;params\u0026#34;, {}) # 必须处理的协议方法 if method == \u0026#34;initialize\u0026#34;: return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;result\u0026#34;: { \u0026#34;protocolVersion\u0026#34;: \u0026#34;2024-11-05\u0026#34;, \u0026#34;capabilities\u0026#34;: {\u0026#34;tools\u0026#34;: {}}, \u0026#34;serverInfo\u0026#34;: {\u0026#34;name\u0026#34;: \u0026#34;my-server\u0026#34;, \u0026#34;version\u0026#34;: \u0026#34;1.0.0\u0026#34;} } } if method == \u0026#34;notifications/initialized\u0026#34;: return None if method == \u0026#34;ping\u0026#34;: return {\u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;result\u0026#34;: {}} if method == \u0026#34;tools/list\u0026#34;: return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;result\u0026#34;: { \u0026#34;tools\u0026#34;: [ { \u0026#34;name\u0026#34;: \u0026#34;hello\u0026#34;, \u0026#34;description\u0026#34;: \u0026#34;打招呼\u0026#34;, \u0026#34;inputSchema\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;object\u0026#34;, \u0026#34;properties\u0026#34;: { \u0026#34;name\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;description\u0026#34;: \u0026#34;名字\u0026#34; } } } } ] } } if method == \u0026#34;tools/call\u0026#34;: tool = params.get(\u0026#34;name\u0026#34;) args = params.get(\u0026#34;arguments\u0026#34;, {}) if tool == \u0026#34;hello\u0026#34;: name = args.get(\u0026#34;name\u0026#34;, \u0026#34;World\u0026#34;) return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;result\u0026#34;: { \u0026#34;content\u0026#34;: [{\u0026#34;type\u0026#34;: \u0026#34;text\u0026#34;, \u0026#34;text\u0026#34;: f\u0026#34;Hello, {name}!\u0026#34;}] } } return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;error\u0026#34;: {\u0026#34;code\u0026#34;: -32601, \u0026#34;message\u0026#34;: f\u0026#34;Unknown tool: {tool}\u0026#34;} } return { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: mid, \u0026#34;error\u0026#34;: {\u0026#34;code\u0026#34;: -32601, \u0026#34;message\u0026#34;: f\u0026#34;Unknown method: {method}\u0026#34;} } def main(): sys.stderr.write(\u0026#34;my-server: ready\\n\u0026#34;) sys.stderr.flush() for line in sys.stdin: line = line.strip() if not line: continue try: req = json.loads(line) resp = handle(req) if resp is not None: sys.stdout.write(json.dumps(resp, ensure_ascii=False) + \u0026#34;\\n\u0026#34;) sys.stdout.flush() except json.JSONDecodeError: continue except (BrokenPipeError, EOFError): break if __name__ == \u0026#34;__main__\u0026#34;: main() ds-balance-mcp 实战分析 实际部署的 ds-balance-mcp 提供了两个工具：\n工具名 功能 实现方式 check_balance 查询 DeepSeek API 余额 HTTP GET api.deepseek.com/user/balance，从 config.toml 读取 API Key check_token_usage 查看当前会话 Token 用量 读取 ~/.deepseek/sessions/ 下最新的 JSON 会话文件 tools/list 返回的工具定义 1 2 3 4 5 6 7 8 9 10 11 12 13 14 { \u0026#34;tools\u0026#34;: [ { \u0026#34;name\u0026#34;: \u0026#34;check_balance\u0026#34;, \u0026#34;description\u0026#34;: \u0026#34;查询 DeepSeek API 账户余额（单位：CNY）\u0026#34;, \u0026#34;inputSchema\u0026#34;: {\u0026#34;type\u0026#34;: \u0026#34;object\u0026#34;, \u0026#34;properties\u0026#34;: {}} }, { \u0026#34;name\u0026#34;: \u0026#34;check_token_usage\u0026#34;, \u0026#34;description\u0026#34;: \u0026#34;查看当前会话的 Token 用量、费用和模型信息\u0026#34;, \u0026#34;inputSchema\u0026#34;: {\u0026#34;type\u0026#34;: \u0026#34;object\u0026#34;, \u0026#34;properties\u0026#34;: {}} } ] } tools/call 返回的结果格式 1 2 3 4 5 6 7 8 9 10 11 12 13 // 成功 { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: \u0026#34;mid\u0026#34;, \u0026#34;result\u0026#34;: { \u0026#34;content\u0026#34;: [{\u0026#34;type\u0026#34;: \u0026#34;text\u0026#34;, \u0026#34;text\u0026#34;: \u0026#34;结果文本（JSON 或纯文本）\u0026#34;}] } } // 失败 { \u0026#34;jsonrpc\u0026#34;: \u0026#34;2.0\u0026#34;, \u0026#34;id\u0026#34;: \u0026#34;mid\u0026#34;, \u0026#34;error\u0026#34;: {\u0026#34;code\u0026#34;: -32000, \u0026#34;message\u0026#34;: \u0026#34;错误描述\u0026#34;} } 使用 Skill 快速搭建 DeepSeek TUI 内置了 mcp-builder 技能，可以辅助设计、构建和调试 MCP Server：\n1 /skill mcp-builder 该 Skill 支持 stdio 和 HTTP/SSE 两种传输方式。\n关键点总结 传输：stdio，一行一个 JSON-RPC 消息 协议：必须实现 initialize、tools/list、tools/call 注册：在 ~/.deepseek/mcp.json 的 servers 中添加配置 日志：打到 stderr，不要污染 stdout 结果：content 数组，每项 {\u0026quot;type\u0026quot;: \u0026quot;text\u0026quot;, \u0026quot;text\u0026quot;: \u0026quot;...\u0026quot;} 工具名：TUI 自动加前缀 mcp_\u0026lt;server名\u0026gt;_\u0026lt;工具名\u0026gt; ","permalink":"https://francis-xavier-code.github.io/p/deepseek-tui-mcp-server/","summary":"\u003cp\u003e以 \u003ccode\u003eds-balance-mcp\u003c/code\u003e 为例，说明如何为 DeepSeek TUI 制作一个 MCP Server。\u003c/p\u003e\n\u003ch2 id=\"架构概览\"\u003e架构概览\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv class=\"chroma\"\u003e\n\u003ctable class=\"lntable\"\u003e\u003ctr\u003e\u003ctd class=\"lntd\"\u003e\n\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"lnt\"\u003e1\n\u003c/span\u003e\u003cspan class=\"lnt\"\u003e2\n\u003c/span\u003e\u003cspan class=\"lnt\"\u003e3\n\u003c/span\u003e\u003cspan class=\"lnt\"\u003e4\n\u003c/span\u003e\u003cspan class=\"lnt\"\u003e5\n\u003c/span\u003e\u003cspan class=\"lnt\"\u003e6\n\u003c/span\u003e\u003cspan class=\"lnt\"\u003e7\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd class=\"lntd\"\u003e\n\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eDeepSeek TUI (MCP Host)          MCP Server (独立进程)\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        │                              │\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        │────  stdin (JSON-RPC) ──────→│\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        │                              │\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        │←──── stdout (JSON-RPC) ──────│\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        │                              │\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        │  python3 /path/to/server.py  │\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e传输层\u003c/strong\u003e：stdio，每行一个 JSON 对象\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e协议层\u003c/strong\u003e：JSON-RPC 2.0\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e注册层\u003c/strong\u003e：\u003ccode\u003e~/.deepseek/mcp.json\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"最简实现3-个步骤\"\u003e最简实现（3 个步骤）\u003c/h2\u003e\n\u003ch3 id=\"步骤-1实现-mcp-协议的核心方法\"\u003e步骤 1：实现 MCP 协议的核心方法\u003c/h3\u003e\n\u003cp\u003e必须实现三个方法：\u003c/p\u003e","title":"DeepSeek TUI MCP Server 制作指南"},{"content":"欢迎来到 Black Cat BLOG 这是博客的第一篇文章。我打算在这里记录：\n技术学习笔记 项目踩坑实录 一些日常思考 朋友圈 后续文章持续更新中。\n1 2 def hello(): print(\u0026#34;Hello, world!\u0026#34;) 走得慢没关系，别停下就好。\n","permalink":"https://francis-xavier-code.github.io/p/hello-my-blog/","summary":"\u003ch2 id=\"欢迎来到-black-cat-blog\"\u003e欢迎来到 Black Cat BLOG\u003c/h2\u003e\n\u003cp\u003e这是博客的第一篇文章。我打算在这里记录：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e技术学习笔记\u003c/li\u003e\n\u003cli\u003e项目踩坑实录\u003c/li\u003e\n\u003cli\u003e一些日常思考\u003c/li\u003e\n\u003cli\u003e朋友圈\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e后续文章持续更新中。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv class=\"chroma\"\u003e\n\u003ctable class=\"lntable\"\u003e\u003ctr\u003e\u003ctd class=\"lntd\"\u003e\n\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"lnt\"\u003e1\n\u003c/span\u003e\u003cspan class=\"lnt\"\u003e2\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd class=\"lntd\"\u003e\n\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003edef\u003c/span\u003e \u003cspan class=\"nf\"\u003ehello\u003c/span\u003e\u003cspan class=\"p\"\u003e():\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Hello, world!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e走得慢没关系，别停下就好。\u003c/p\u003e","title":"初次搭建blog"}]