<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[IppClub Blogroll]]></title>
        <description><![CDATA[东南大学 I++ Club 收集同学们的博客]]></description>
        <link>https://blogroll.ippclub.org/</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Sat, 06 Jun 2026 14:44:54 GMT</lastBuildDate>
        <atom:link href="https://blogroll.ippclub.org/rss.xml" rel="self" type="application/rss+xml"/>
        <pubDate>Sat, 06 Jun 2026 14:44:54 GMT</pubDate>
        <copyright><![CDATA[2026 IppClub]]></copyright>
        <language><![CDATA[zh-CN]]></language>
        <item>
            <title><![CDATA[优化日志：给自建图床 PicImpact 做一次大范围性能优化]]></title>
            <description><![CDATA[和 Debug 日志、SRE 日志一个系列，优化日志用来复盘一些可以公开的折腾经历。这一篇的主角是 PicImpact——我自己在用的那个开源图床，跑在 photos.manjusaka.me 上，托管着我这几年拍的猫猫狗狗。去年年终总结里我写过一句「把自建图床项目的代码拾掇了很多」，这篇就算是那句话的注脚。前后断断续续修了一轮，修复点其实都不大，但中间冒出来的几个回归是真的有意思，尤其是最后那个 WebGL 的坑，我愿称之为本年度最佳。开篇：五个硌牙的地方日常用下来，对着隔壁 afilmory 抄作业，我把 PicImpact 的毛病列成了五条：动画卡；滚动在不同平台上各种抽风；移动端会崩，而且是崩完自动刷新、刷新完接着崩的那种无限循环；交互普遍卡顿；二十多兆的原图直接把整个页面拖死。看着像五个独立的问题，真顺着查下去会发现，根子其实是同一个：这个图床在「该喂给浏览器什么」这件事上，从一]]></description>
            <link>https://www.manjusaka.blog/posts/2026/05/31/optimize-picimpact-self-hosted-gallery/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2026/05/31/optimize-picimpact-self-hosted-gallery/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Sun, 31 May 2026 16:30:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[用电脑像个人吧]]></title>
            <description><![CDATA[人类祖先偶然发现了火，学会了使用工具；后来，他们开始主动的创造工具来满足自己的需求；再后来，他们对于工具的要求不仅仅是能用，还要好用…那么问题来了，为什么大部分人类使用计算机的方式还停留在“偶然”阶段呢？我们在使用计算机时，往往是被动的接受它提供的功能和界面，而不是主动地去创造和定制它来满足我们的需求。我们习惯于使用预设的软件和操作系统，而不是自己编写代码或定制工具来解决问题。叠甲环节：本文仅从个人的角度出发，分享一些关于如何像人类一样使用计算机的思考和建议。如果对您产生了冒犯或者不适，请按下 ALT + F4。作者也会犯错，如果你有不同意见，可以在评论区攻击我。好了，P话结束，正文开始。前言：像人类一样使用AI询问技术类问题，不要使用豆包、元宝、以及各种手机自带的语音助手。我建议使用 ChatGPT、Gemini、DeepSeek、Mimo。在使用这些工具时，组织好你的问题，尽量提供足够]]></description>
            <link>https://www.harkerhand.cn/UseComputerLikeHuman/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/UseComputerLikeHuman/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Thu, 23 Apr 2026 05:01:34 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Rust宏：从macro_rules到过程宏]]></title>
            <description><![CDATA[写 Rust 写到一定阶段，你会发现“宏”几乎绕不过去。从 println!、vec! 到 #[tokio::main]、#[derive(Debug)]，它们都在编译期改写代码，只是方式不同。本文对各类宏进行深入解析，带你从 macro_rules! 的模式匹配到过程宏的 TokenStream 转换，全面理解 Rust 宏的强大与灵活。声明宏例1：println!12345678macro_rules! println { () =&gt; { $crate::print!("\n") }; ($($arg:tt)*) =&gt; {{ $crate::io::_print($crate::format_args_nl!($($arg)*)); }};}macro_rules! 类似于一个巨大的 match 语句，对于第一种模式，println!() 没有参数，直接输出一个换行符；对于]]></description>
            <link>https://www.harkerhand.cn/rustmacro/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/rustmacro/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Fri, 17 Apr 2026 10:40:45 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Rust 核心机制与易错题目深度解析]]></title>
            <description><![CDATA[在 Rust 的进阶之路上，理解所有权、生命周期和异步模型是跨越“陡峭曲线”的关键。本文根据“看代码说输出”的经典考察点，深度解析五个极具代表性的 Rust 技术点及其底层原理。1. 引用的生命周期（经典字符串）场景：当我们在一个函数中比较两个字符串并返回最长的一个时，生命周期标注决定了返回值的有效范围。1234567891011121314fn longest&lt;'a&gt;(x: &amp;'a str, y: &amp;'a str) -&gt; &amp;'a str { if x.len() &gt; y.len() { x } else { y }}fn main() { let s1 = String::from("long"); let result; { let s2 = String::from("xyz"); result = longest(s1.as_str(]]></description>
            <link>https://www.harkerhand.cn/Rust%E9%A2%98%E7%9B%AE%E8%AE%B0%E5%BD%95/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/Rust%E9%A2%98%E7%9B%AE%E8%AE%B0%E5%BD%95/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Mon, 13 Apr 2026 02:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Pydantic 不是免费的——聊聊数据校验的边界]]></title>
            <description><![CDATA[最近给一个后端服务做 perf，跑了一发 py-spy 出来火焰图，盯着看了一会儿，发现 pydantic.main.__init__ 这一条在主热路径上占了一个让人挺难绷的比例。做了几轮调整之后顺手把这件事记一下——核心想说的是：对一个 web 服务来说，数据校验从来不是免费的，pydantic 也一样。它有它的边界，越界使用就要付出对应的代价。起因：火焰图里看到的东西某个内部业务服务，写法上挺标准——FastAPI + uvicorn + pydantic + psycopg，业务里所有”长得像数据”的东西，从 DB 行、内部传递的中间态、到 API response，全部都用 BaseModel 表达。看起来一致、规整，review 起来也舒服。直到我们因为 P95 不太好看，跑了一发 py-spy：1py-spy record --duration 60 --rate 100 --]]></description>
            <link>https://www.manjusaka.blog/posts/2026/03/23/the-boundary-of-pydantic/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2026/03/23/the-boundary-of-pydantic/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Mon, 23 Mar 2026 14:30:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[当我们在维护模型 API 服务时我们在维护什么]]></title>
            <description><![CDATA[过去这一年我们团队陆陆续续做了几个 AI Service——大多是拿 FastAPI 包一个模型，再对外出 API。做到第三四个的时候我意识到一个尴尬的事实：每个项目长得都差不多，但每次起新项目还是在从零开始复制粘贴，而且不同的人写出来的目录结构、配置方式、metrics 命名都不太一样。一个新人接手第二个服务的时候，几乎要把第一个服务的认知全部重学一遍。这篇文章想聊的不是某个具体框架，而是把这几个项目踩过的坑、迭代下来的设计、留下来的规范集中讲一遍——也算是给”维护一个模型 API 服务”这件事做一次复盘。正文把”维护一个模型 API 服务”拆开看，其实是几个相互独立但又互相影响的小问题：项目长什么样、配置怎么分层、模型版本怎么迭代、可观测性怎么做、日常开发流程怎么走、CI 和镜像怎么发。下面按这几个维度逐个聊。一个 AI Service 该长什么样先看目录结构。我们最终收敛到的样子是：]]></description>
            <link>https://www.manjusaka.blog/posts/2026/03/15/what-we-maintain-when-maintaining-model-api/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2026/03/15/what-we-maintain-when-maintaining-model-api/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 14:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Rust数据结构源码实现]]></title>
            <description><![CDATA[解析Rust部分数据结构的源码实现需要注意的是，为了方便，对源码的一些实现有改写Vec从单纯的数据结构设计上，大概如下12345678910111213pub struct Vec&lt;T, A: Allocator = Global&gt; { buf: RawVec&lt;T, A&gt;, len: usize,}pub(crate) struct RawVec&lt;T, A: Allocator = Global&gt; { inner: RawVecInner&lt;A&gt;, _marker: PhantomData&lt;T&gt;,}struct RawVecInner&lt;A: Allocator = Global&gt; { ptr: Unique&lt;u8&gt;, cap: Cap, alloc: A,}其中的 _marker: PhantomData&l]]></description>
            <link>https://www.harkerhand.cn/learn-std/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/learn-std/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sat, 14 Mar 2026 23:40:45 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[谈谈Rust动态派发]]></title>
            <description><![CDATA[在 Rust 中，多态主要通过两种方式实现：静态派发 和 动态派发。虽然泛型（静态派发）是 Rust 的首选，但在处理“异构集合”（例如一个包含不同 UI 组件的列表）时，动态派发（即 dyn Trait）则是不可或缺的利器。然而，并不是所有的 Trait 都能开启动态派发。这篇文章简单聊聊：想要实现动态派发，Trait 必须满足哪些条件？底层又是如何运作的？核心概念：胖指针在 Rust 中，当你将一个具体类转换为一个抹去类型的接口时，编译器实际上创建了一个胖指针。一个胖指针占据两个 usize 的空间：数据指针：指向实例在内存（堆或栈）中的实际位置。虚表指针：指向一个只读的内存区域，即虚函数表 (vtable)。虚函数表到底存了什么？每个实现了 Trait 的类型都会对应一张唯一的 vtable。它不仅存储了方法的地址，还存储了维护类型安全的关键元数据：字段作用析构函数运行时如何销毁该对]]></description>
            <link>https://www.harkerhand.cn/dynTrait/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/dynTrait/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Tue, 03 Mar 2026 08:17:47 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[一致性哈希]]></title>
            <description><![CDATA[背景假设在分布式负载均衡场景中，对于一些输入，我们希望尽可能均匀的将其分配到 n 个不同的节点。常规的哈希算法通常使用简单的哈希函数与取模来得到下标。$$\text{index} = hash(input) \ % \ n$$但当节点扩缩容时，即 n 的大小变化时，一个显而易见的问题是。对于相同的 input，得到的 index 是不同的。从数学上来看，即使 index 发生变化，这样的算法在负载均衡上的表现依然是优秀的。但如果节点会有类似缓存的技术来加快计算，这样的index变化就是不可接受的，它会导致几乎所有的缓存失效。一致性哈希一致性哈希的目的是解决分布式系统的数据分区问题：当分布式集群移除或者添加一个服务器时，必须尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。简单来说就是尽可能的复用缓存，尽可能对于同一个input，得到同一个index。原理一致性哈希本质上也是一种]]></description>
            <link>https://www.harkerhand.cn/ConsistentHashing/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/ConsistentHashing/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Tue, 03 Mar 2026 06:10:20 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[几种IO方式]]></title>
            <description><![CDATA[面试问到了，重新梳理一下一次 IO 到底发生了什么？以读 socket 数据为例。一次 read 实际上包含两个阶段：等待数据准备好（内核态）数据从网卡 → DMA → 内核缓冲区这个过程应用程序完全无法参与只能等数据从内核拷贝到用户空间内核 buffer → 用户 buffer这是一次内存拷贝一次 IO = 等待数据 + 拷贝数据所有 IO 模型的区别，都来自：等待阶段谁在等？拷贝阶段谁在等？是否阻塞线程？是否需要主动轮询？阻塞 IO（Blocking IO）这是最传统的模型。1read(fd, buffer, size);如果数据没到：线程直接睡眠内核等数据数据到达后拷贝read 返回特点等待阶段：阻塞拷贝阶段：阻塞整个线程完全卡住优点简单易写易理解缺点1个线程只能处理1个连接高并发会炸线程 ▶示例代码 12345678910111213141516171819202122232425]]></description>
            <link>https://www.harkerhand.cn/io/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/io/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Mon, 02 Mar 2026 06:34:01 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[怎么样 tracing 你的 SQL？]]></title>
            <description><![CDATA[过年是个好时候，可以猛猛干活或者看论文。不过上了几天磨，看了几天论文后觉得还是需要整点活所以这篇文章来聊聊一个经典话题，How to trace your SQL？正文在 OpenTelementry 这一套开始铺展开来后，我们对于代码整个生命周期的 tracing 有了一个较为成熟的方案。包括各类 auto-instrumentation 的库，能够让我们在不修改代码的情况下就能对整个调用链进行 tracing。但是始终有一朵乌云盘绕着 Tracing 世界的大厦上，我们怎么样将 SQL 的执行如同业务代码一样从黑盒中拆出来在现阶段，我们对于整个 Tracing 的引入都是在做加法，我们选择构建一个 context，注入一些 metadata，让代码中不同的环节都可以获取到上下文。但是还是有一个问题，怎么样在 SQL 中做加法呢？最直观的想法是，我们可以尝试一个类似机制1234begin]]></description>
            <link>https://www.manjusaka.blog/posts/2026/02/22/how-to-tracing-your-sql/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2026/02/22/how-to-tracing-your-sql/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Sun, 22 Feb 2026 10:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[笑ってほしくて]]></title>
            <description><![CDATA[每年都会选一句话作为年终总结的标题，去年是“本当の僕らをありがとう”，今年我选择“笑ってほしくて”。这句话出自 《葬送的芙莉莲》的片尾曲《Anytime anywhere》。愿你露出笑容可能是我想对逝去之人，逝去的猫说的，可能也是他们想对我说的也是我想对所有看到这篇文章的人说的开篇实际上一度想放弃写这篇文章，因为总是会害怕。今年在生死边缘搏战了许久。但终究是没有挽留住。每次想起点点滴滴时，总会不免破防但是就如同歌词所说こんなに胸が痛いのは/胸口传来的痛楚あなたといた証かな/是与你同在的证明那么所以还是要写点什么来纪念这特殊的2025, 也是 saka 的2025生活今年生活中最大的事件就是猫咪的过世。小熊是我们在2023年从小区收养的猫咪。一最开始就给上了强度，重度口炎+肾衰。然后后续情况稳定后带回家进行日常的治疗。而在24年经过一整年的折腾（开腹两次，病危三次），25年年初医生终于说可以]]></description>
            <link>https://www.manjusaka.blog/posts/2026/01/01/at-the-end-of-2025/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2026/01/01/at-the-end-of-2025/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Thu, 01 Jan 2026 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[从 TTY 到现代 Shell]]></title>
            <description><![CDATA[掌握数字世界的咒语：从 TTY 到现代 Shell写在前面：很多新生看着电脑屏幕上那个闪烁光标的黑框（Terminal）会感到恐惧。习惯了图形界面（GUI）的点点点，为什么我们还要学习敲命令？如果把操作系统比作一辆赛车，GUI 是方向盘，让你轻松驾驶；而 Shell（命令行）则是引擎盖下的机械结构。作为计算机专业的学生，你不能只会开车，你必须学会修车、改装车，甚至重新设计引擎。这篇文章将带你从历史源头出发，理解终端的本质，并掌握这门与计算机内核对话的“母语”。第一章：溯源 —— 为什么是黑底白字？1.1 历史的幽灵：TTY当你打开终端，输入 tty 命令，你会看到类似 /dev/pts/0 的输出。这里的 TTY 是 Teletype（电传打字机）的缩写。在 1960 年代，计算机没有显示器，工程师们通过类似打印机的设备与巨型机通信：你在键盘敲一个字，它打印一个字传给电脑；电脑处理完，再把]]></description>
            <link>https://www.harkerhand.cn/Shell/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/Shell/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Tue, 16 Dec 2025 06:25:21 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[某科学的超黑魔法]]></title>
            <description><![CDATA[写在前面前序文章是：爱与魔法 - I++ Club，当时是以俱乐部的名义发的，所以在内容上更偏向了技术科普，而不是实践操作。并且有相当一部分同学看完之后其实并没有懂，就算正确操作后，在出现偶发的网络问题时也不清楚如何解决。本文的目的就是尽可能去解决这些问题。小试牛刀首先，请你先处于SEU的校园网环境下（即就是你连接了SEU-ISP或者SEU-WLAN），并且你可以ping通 10.210.126.58（如果你不知道什么是ping的话，点击这个链接 怎么ping一个地址 - 搜索 ），并且你正在使用Windows 系统。如果不满足上述条件的话，下面的小实验就不需要上手操作了，正常阅读文章即可。 Windows点击以打开代理设置，点击左边这个链接，应该会进入这个页面点击下面的 手动设置代理 的 编辑 按钮，前面三个选项按图片改，然后点击保存。现在访问 Google 应该就成功了。请注意：现在不]]></description>
            <link>https://www.harkerhand.cn/%E6%9F%90%E7%A7%91%E5%AD%A6%E7%9A%84%E8%B6%85%E9%BB%91%E9%AD%94%E6%B3%95/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/%E6%9F%90%E7%A7%91%E5%AD%A6%E7%9A%84%E8%B6%85%E9%BB%91%E9%AD%94%E6%B3%95/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Mon, 03 Nov 2025 05:52:13 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[成为榜样，但不要成为偶像]]></title>
            <description><![CDATA[最近刚把空轨 1st 打通关。差不多国庆假期也要结束了，要开始准备接下来的学习和工作了。趁着这个机会，写点东西，当个迟到的 PyCon China 2025 的总结吧正文其实去年在结束去年的会议后，我就在考虑要不要彻底退出 PyCon China 一段时间。原因其实也很简单，太累了。不过我向来是个很拖延癌的人。恰逢那时候正在职业的变动期，所以想着要不要再看看。今年来了一家 AIGC 公司做 infra，说实话我干的还蛮开心的。每天都会学习新的东西。状态相比于去年好了不少（除了每天都需要和该死的 Any 做斗争），所以一度准备继续参加今年的 PyCon China不过到了筹备期后，原本的计划突生变故。陪伴需求的猫咪病危，去世。一直在医院通宵，陪护以及最终要面临的生死别离。对我的精神和体力造成了极大的消耗。是否继续参加今年的 PyCon China 也成为一个问题。不过最终还是决定参加了。今年]]></description>
            <link>https://www.manjusaka.blog/posts/2025/10/02/be-a-good-example-not-be-an-idol/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2025/10/02/be-a-good-example-not-be-an-idol/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Thu, 02 Oct 2025 20:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RustFFI]]></title>
            <description><![CDATA[什么是 FFIFFI (Foreign Function Interface，外部函数接口) 是一种编程机制，允许一种编程语言调用另一种编程语言编写的代码或与另一种语言进行交互。它打破了语言之间的壁垒，使得不同语言编写的模块能够相互协作。引入：open() 系统调用Rust: std::fs::File::open() → libc::open() → syscall(SYS_open)C: fopen() → open() → syscall(SYS_open)C++: std::fstream → libc::open() → syscall(SYS_open)open() 是 OS kernel 的编译产物，也就是说，只要将我们想要分享的代码也打包为类似的形式，就可以被其他程序所链接使用。例子123456789// add.hint add(int a, int b);// add.]]></description>
            <link>https://www.harkerhand.cn/RustFFI/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/RustFFI/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sun, 03 Aug 2025 08:56:19 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Further Performance Evolution in Python 3.14: Tail Call Interpreter]]></title>
            <description><![CDATA[I’ve been overwhelmed by security work lately, so let me switch to something lighter to relax my mind.Python 3.14 has officially introduced a new mechanism called Tail Call Interpreter (Made by Ken Jin), which is undoubtedly another major milestone that lays the foundation for the future.Main ContentBefore discussing Python 3.14’s Tail Call Interpreter, we need to talk about the most basic syntax ]]></description>
            <link>https://www.manjusaka.blog/posts/2025/07/02/tail-call-in-3-14-interpreter-en/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2025/07/02/tail-call-in-3-14-interpreter-en/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Wed, 02 Jul 2025 15:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Python 3.14 的进一步性能进化: Tail Call Interpreter]]></title>
            <description><![CDATA[最近做安全做的我头晕脑胀，来点轻松的换换脑子，让自己放松下Python 3.14 正式引入了一个新的机制叫作 Tail Call Interpreter（Made by Ken Jin），这无疑又是一个奠定未来基础的重大工作正文在聊 Python 3.14 的 Tail Call Interpreter 之前，我们先要来聊 C 语言中最基本的语法 switch-case12345678910switch (x) { case 1: // do something break; case 2: // do something else break; default: // do default thing}对于这样的代码我们最终的汇编会是什么样的呢？可能大家第一反应是先 cmp 然后 je ，不等式秒了，我们编译一个版本来看看对于这样一段代码12345678void small_switch]]></description>
            <link>https://www.manjusaka.blog/posts/2025/07/02/tail-call-in-3-14-interpreter/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2025/07/02/tail-call-in-3-14-interpreter/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Wed, 02 Jul 2025 15:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Python 3.14: Python 世界的一大步]]></title>
            <description><![CDATA[Python 3.14 目前主要的一些主要的特性其实已经固定了，在我看来，Python 3.14 是一个未来很多年的一个核心版本。因为其确定了是时代的 Python调试生态的基准，这篇文章将会来聊聊这个 Python 世界中的史诗级改进正文在我们日常调试 Python 代码的时候，我们经常会遇到这样一个问题，我们需要采样当前的 Python Runtime 的状态，进而进一步调试我们的 Python 进程常见的手段莫过于两种通过 eBPF + UProbe 等手段来触发通过 process_vm_readv 等 Syscall 来直接整块读取内存无论这两种方式都有一个核心的问题，我们怎么样来解析内存中的数据？用 https://github.com/jschwinger233/perf-examples/blob/main/cpython310_backtrace/bpf.c 来做一个例子]]></description>
            <link>https://www.manjusaka.blog/posts/2025/04/26/3-14-is-one-of-the-best-python-version/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2025/04/26/3-14-is-one-of-the-best-python-version/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Sat, 26 Apr 2025 14:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[简单聊聊常见的负载均衡算法]]></title>
            <description><![CDATA[这篇文章鸽了很久，最终决定还是老老实实写完，来介绍一下常见的一些负载均衡算法实现。本文的代码最终都会放在 load-balancer-algorithm1 这个 repo 中我从来没有觉得写博客快乐过正文先行准备既然是讲 LoadBalancer 中常用的一些负载均衡算法，我们先来对一些前置准备做一些讨论我们目前需要两个基础的数据结构代表着 Backend 节点的结构代表着请求上下文的结构那么我们可以得出下面一些基础代码1234567891011121314151617181920import dataclasses@dataclasses.dataclassclass Node: host: str = "" port: int = 0 node_available: bool = True @property def available(self) -&gt; bool: return]]></description>
            <link>https://www.manjusaka.blog/posts/2025/03/23/a-simple-introduction-about-load-balance-algorithm/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2025/03/23/a-simple-introduction-about-load-balance-algorithm/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Sun, 23 Mar 2025 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AI猫娘 启动！]]></title>
            <description><![CDATA[AI猫娘 启动！NcatBot，基于 NapCat 的 QQ 机器人 Python SDK，快速开发，轻松部署。前言我们 I++ 俱乐部的小伙伴一直悄悄主持维护了一个QQ聊天机器人的项目，并在最近才分享给了大家。虽然这个项目的star数还没到三位数，但在简单浏览其 README 和文档之后，我们都感到非常震撼！这个项目将QQ聊天Bot的部署成本降低到了只需要基础Python语法的地步。得益于其优秀的插件功能，你甚至可以一行代码不写，就实现诸如课程自动提醒、群聊自动参与聊天等功能。看了项目后，I++ 俱乐部的社区氛围非常活跃，大家都在积极分享和交流这个项目的使用心得。那么事不宜迟，速速开始！效果展示一开始就从枯燥的教学开始，太过乏味，买药之前不如先看看疗效在我们提供的配置下，猫猫的一般最小回复间隔是10秒，如果被@到会强制回答喔基础准备进入 NcatBot 文档 | NcatBot 文档，点]]></description>
            <link>https://www.harkerhand.cn/AI%E7%8C%AB%E5%A8%98%20%E5%90%AF%E5%8A%A8%EF%BC%81/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/AI%E7%8C%AB%E5%A8%98%20%E5%90%AF%E5%8A%A8%EF%BC%81/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Wed, 19 Mar 2025 07:47:24 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Decorate your VS Code like a Pro]]></title>
            <description><![CDATA[前言如果你曾在 Youtube、Bilibili 等平台学习过某一编程语言，你的赛博老师或许会教你安装 Visual Studio Code, 然后呢？安装语言对应的插件？这样你便拥有了一个简易的可以编写代码并调试运行的环境了。但，这样够吗？对于一些庞大的工程，你是否依然会放弃 VS Code 并投入 JetBrains 全家桶的怀抱？那么不妨看看本文吧，或许能为你的 VS Code 恢复完整之躯！关于配置文件在一切开始之前，希望你点击左下角的齿轮图标 &gt; 配置文件 &gt; 新建配置文件。如果你对做出的修改不满意，你随时可以退回之前的配置。另外，我建议你将通用配置写入一个配置文件并使其默认，其余各语言的配置从其复制扩展而来。外观颜色主题如何让你的 VS Code 看起来焕然一新，很简单，换个主题就完了！One Dark Pro 或许是整个社区下载量最大的主题了，提供了几个不同风格的]]></description>
            <link>https://www.harkerhand.cn/Decorate-your-VS-Code-like-a-Pro/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/Decorate-your-VS-Code-like-a-Pro/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sat, 08 Mar 2025 02:46:48 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[简单吐槽一下摇曳露营的台配]]></title>
            <description><![CDATA[看了一下台配摇曳露营的 PV 放松，有些地方很想吐槽，写个短文聊一下正文先放出两版本对比下面是原版下面是台配现在我们来聊一聊我觉得这个配音出现了什么样的问题首先这是出自摇曳露营 S1E1 的最开始的部分。实际上是一个倒序的模式，将五人组的富士山露营在最开始进行展现，然后在季末进行收尾。这个做法的效果和意图都很明确，其核心在于让声优用声音将角色本身的性格立住在这里面我认为问题最大的两个人，大垣千明齐藤惠那其实犬山葵的问题也挺大的，但是出于方言角色确实不太好把握，这里就不多说了。这两个角色的其实问题都很一致，配音者对于角色的性格把握不准。大垣千明是一个很干脆利落的角色，在四人组中是一个类似数码宝贝中太一一样 Leader 的角色，喜欢开玩笑，有一点假小子的感觉。而齐藤惠那性格和大垣千明有一些类似，不过齐藤会有更多一些少女味，所以她也成为四人组与凛之间的融合剂。在原配中，大垣千明全程以很干脆利落]]></description>
            <link>https://www.manjusaka.blog/posts/2025/02/03/a-little-thought-about-translation-about-yuru-camp/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2025/02/03/a-little-thought-about-translation-about-yuru-camp/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Mon, 03 Feb 2025 18:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Saka 馬鹿]]></title>
            <description><![CDATA[这篇博客是我在刷题群内的 2025 年的第一次分享整理的演讲稿。主要是完整复盘了过去几年里我犯下的两个比较典型的低级错误。希望大家能看的开心正文首先来看一下我们抽象后的架构很平平常规的一个架构。而我犯的两次相对低级的错误分别是在数据的入口和数据落点上。OK 那么我们分别来看一下我犯下的错误首先要分享的是我搞出的一个核心数据库删除的事故。在介绍事故现场之前，我将先介绍下下当时我们整体资源管理的结构我们基于 Terraform 管理资源熟悉 Terraform 的同学都知道，Terraform 很重要的一点就是需要一个介质来存储当前 infra 的 state，这样能让后续的操作基于状态来实现 diff我们当时的 state 是存储在 local fs ，state 文件跟随着 Git Repo 一起变更我们基于目录划分不同业务需要的 AWS Infra 所对应的 Terraform 描述关键]]></description>
            <link>https://www.manjusaka.blog/posts/2025/01/04/saka-is-baka/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2025/01/04/saka-is-baka/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Sat, 04 Jan 2025 18:30:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[本当の僕らをありがとう]]></title>
            <description><![CDATA[每年都会选择一句话来总结自己这一年，前年是“但行好事，莫问前程”，去年是 “Per aspera, Ad astra”。那么今年我选择是 “本当の僕らをありがとう”。这句出自 《Angel Beats!》的片尾曲《My Song》。含义为“向最真实的我们致谢”开篇今年其实某种意义上是去年的延续，去年年中的我尝试从18楼一跃而下。而双相以及自己的不自信以及在职业上的焦虑让躯体化的症状持续到了今年。某种意义上来说今年是混沌的一年。不过今年也是挺值得思考的一年，可能今年所积累的东西可能会在未来以某种特殊的形式回馈回来。生活双相的治疗进入了深水区，今年状态一直起伏不定，药物性肝损伤，双相波动带来的躯体化症状如影随行。今年虽然没有如同去年一样试图从18楼上来一次刺客信条。但是对我来说，艰险程度还超过去年。一如既往的噩梦，各种生活里的反复一如既往的围绕着我。在调整治疗方案后，虽然情绪有所改善，但是所带]]></description>
            <link>https://www.manjusaka.blog/posts/2024/12/31/at-the-end-of-2024/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/12/31/at-the-end-of-2024/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Tue, 31 Dec 2024 15:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[OpenDAL 0.51 版本代号 “本当の僕らをありがとう。” 背后的故事]]></title>
            <description><![CDATA[Apache OpenDAL v0.51.0 第一个 RC 版本发布了，这个大版本有些特殊，是我第三个负责 Release 的版本，也是第一个带有 Subtitle 的版本这个版本的副标题为 “本当の僕らをありがとう” ，意为 “向真实的我们致谢”聊聊这个版本背后的一些故事吧正文在筹备 v0.51.0 的发版的时候，我本来是想想一个标题，来庆祝摇曳露营 S4 制作确定的。所以在 @xuanwo 和 @frostming 的支持和建议下。我发起了一个提案 [VOTE] Proposal: Adding Cultural References to Release Titles1提案 #5303 通过后，我本来想用志摩凛的一句我很喜欢的台词“ソロキャンは寂しさも 楽しむものなんだって”来作为摇曳露营 S4 制作决定的庆祝。但是不知道怎么回事，我耳边突然想起了 《My Song》 这首歌苛立ちを]]></description>
            <link>https://www.manjusaka.blog/posts/2024/12/14/the-story-behind-the-opendal-0.51/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/12/14/the-story-behind-the-opendal-0.51/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Sat, 14 Dec 2024 18:30:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[好了，现在你的知识也是我的了.jpg]]></title>
            <description><![CDATA[最近给朋友介绍了一下我对于一些外部资料的吸收的经验。我想了想整理了下聊天记录，将我整个思路以博客的形式展现出来。希望能帮到看这篇博客的人。正文首先说明，我自己看过关于知识体系方法论的资料很少。本文描述的是我自己在这些年经过不断改良后觉得目前最适合我的一套方法，可能不适合所有人，仅供参考我自己的宗旨是 “有些时候我不一定需要成为知识的生产者，而是成为知识的搬运者”或者套用鸭子类型的一个描述就是“如果一个项目，你知道原理，理解细节，能完整的给别人分享其中的细节，那么这就是你做过的项目”成为一个合格的知识搬运者，那么意味着你需要擅长或者说能较好的吸收一些外部资料。我自己将原则归纳为两点摆正心态知识迁移这里我先要着重强调心态上的重要性，再开始去描述我们怎么样去做知识的迁移我自己对于心态是这样的观点：很多人对于去内化别人的资料有一种潜在的耻辱性心态，大家在面对一些资料的时候，会下意识的有“这不是我做]]></description>
            <link>https://www.manjusaka.blog/posts/2024/12/06/ok-I-got-all-you-know/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/12/06/ok-I-got-all-you-know/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Fri, 06 Dec 2024 18:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[如何使用 WASMTIME 来运行 CPython for WASI，然后利用 Python 实现的 HostFunction 来扩展它？]]></title>
            <description><![CDATA[国庆节搞了一个活，利用 wasmtime 来执行编译成 WASM/WASI 字节码的 CPython 虚拟机，并在宿主机一侧利用 Python 实现的 Host Function 来扩展它。再次声明一下，这个只是我个人想搞的活，没有再任何生产环境中得到验证，just for fun（XDDD正文首先我们简单介绍一下 WASM/WASI，这里我直接引用一下 AI 生成的 brief summaryWebAssembly (WASM) 是一种低级编程语言,可在现代网页浏览器中运行。它提供接近原生的性能。WebAssembly System Interface (WASI) 是 WASM 的一个标准扩展,允许 WASM 程序在浏览器外运行,访问系统资源。这两项技术旨在提高 Web 应用性能,并使 WASM 在更多环境中可用。而 WASM/WASI 技术路线核心的优势在于跨平台的兼容性多语言通过静]]></description>
            <link>https://www.manjusaka.blog/posts/2024/10/02/how-to-extend-the-wasi-python-by-using-host-function-cn/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/10/02/how-to-extend-the-wasi-python-by-using-host-function-cn/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Wed, 02 Oct 2024 13:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to Run CPython for WASI Using WASMTIME and Extend It with Python-Implemented Host Functions?]]></title>
            <description><![CDATA[During the National Day holiday, I worked on a project to use wasmtime to execute CPython virtual machine compiled into WASM/WASI bytecode, and extend it with Host Functions implemented in Python on the host side.I’d like to clarify again that this is just a personal project I wanted to work on, without any validation in production environments, just for fun (XDDDMain ContentFirst, let’s briefly i]]></description>
            <link>https://www.manjusaka.blog/posts/2024/10/02/how-to-extend-the-wasi-python-by-using-host-function-en/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/10/02/how-to-extend-the-wasi-python-by-using-host-function-en/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Wed, 02 Oct 2024 13:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[新]VSCode配置C/CPP]]></title>
            <description><![CDATA[前言近日在阅读他人题解时，发现了未曾见过的语法1auto a = vector(n, INT_MIN);即初始化一个长度为n的 vector 并命名为 a ，初始值为 INT_MIN，这比先前的12vector&lt;int&gt; a(n);for(auto &amp;i: a) i = INT_MIN;方便太多了！然而，我在自己的编辑器里这么写，编译器会报错，查看发现我所使用的一直是c++11的标准，为了支持新标准，我们需要新的编译器，之前的文章 VS Code中C++环境配置 - Where Is Mountain 所使用的gcc版本是8.1.0，所以写此文，更新一下配置相关。安装 mingw-w64这是官网的下载页 Downloads - MinGW-w64，然后进入 MinGW-W64-builds 的 GitHub Release 页面，按照你的需要选择对应的版本下载，下面给出]]></description>
            <link>https://www.harkerhand.cn/%E6%96%B0-VSCode%E9%85%8D%E7%BD%AEC-CPP/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/%E6%96%B0-VSCode%E9%85%8D%E7%BD%AEC-CPP/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Thu, 19 Sep 2024 07:47:24 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Debug 日志：eCapture GH-604]]></title>
            <description><![CDATA[Debug 日志系列第二篇，eCapture 的 GH-604， 一个和 Go， Glibc，静态编译相关的问题太长不看版：在 eCapture 中，由于在静态链接时 glibc 版本的差异，导致在 Ubuntu 下编译的二进制会在特定发行版上 Segment fault开篇首先介绍下 eCapture，这个项目是基于 eBPF 做的一套安全工具，核心的能力是可以提供在旁路对于 TLS 流量解密的能力在8月25日的时候，社区反馈了一个 bug，编号 GH-604，其核心行为如下下载在 GitHub Release 中发布的二进制，在 Arch Linux 下会 Segment Fault，报错大致如下12345678910111213141516171819202122232425262024-09-18T21:10:47+08:00 INF BTF bytecode mode: CORE]]></description>
            <link>https://www.manjusaka.blog/posts/2024/09/18/a-live-debug-ecapture-gh-604/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/09/18/a-live-debug-ecapture-gh-604/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Wed, 18 Sep 2024 14:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[24暑期学校课设报告]]></title>
            <description><![CDATA[24暑期学校课设报告一 、题目（把题目复制一遍。如果是自拟的题目，把题目具体内容写在这里）题目4：面向对象程序项目管理系统[要求]该系统需创建和管理如下信息：1、类信息：编号、类名、基类名、功能、创建日期、作者、类成员数据集；2、类成员信息：成员编号、成员名称、成员类型（数据或函数）、内存字节数（数据成员）、数据类型、可访问性（公有、私有、保护）等。系统功能要求如下：创建和管理类信息的对象；创建和管理类成员信息的对象；增加和删除类；针对特定类增加或删除类成员信息；基本查询功能；数据文件读写：文件中包含所有类信息、每个类的类成员信息等数据；基本信息显示：1）所有类的信息显示；2）特定类的类成员信息；可选功能提升：显示类对象的占用内存信息等。二 、设计思路（这里分几部分：1、C++部分，包括几个类，各个类的功能，以及类的相互关系；2、Qt部分，用了什么框架，设计了几个ui，每个ui控件的功能，]]></description>
            <link>https://www.harkerhand.cn/24%E6%9A%91%E6%9C%9F%E5%AD%A6%E6%A0%A1%E8%AF%BE%E8%AE%BE%E6%8A%A5%E5%91%8A/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/24%E6%9A%91%E6%9C%9F%E5%AD%A6%E6%A0%A1%E8%AF%BE%E8%AE%BE%E6%8A%A5%E5%91%8A/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Tue, 10 Sep 2024 06:00:54 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024 年了，是 Gevent 还是选择 asyncio Part 1？]]></title>
            <description><![CDATA[Gevent 还是 asyncio 这一直是个经典的问题，在这里我们直接用数据来帮助大家做一下决策开篇Lin Wei 老师珠玉在前给出了 asyncio 和 Gevnet 的极限性能。 在这里我们看到了 asyncio 配合 uvloop 基本上是 Gevent 的 double 了那么在在 Web 框架下是否如此呢？我们来做一下实验吧首先说一下负载机器的配置，这里我选用了 Azure 上 D8as_v5 的机器，该机器配置如下：8Core32G 的配置底座硬件基于 EPYC 7763 系列处理器共计4个节点，分配给 Django/Flast/FastAPI/Starlette 四个不同的框架我们压测框架选择 locust，同样基于 Kuberntes 集群，因为我账户的 D8as_v5 机器的 Quota 不太够，所以压测框架我们选了不同机器的混合部署4个 D8as_v5，共计 32 C]]></description>
            <link>https://www.manjusaka.blog/posts/2024/08/19/benchmark-for-python-web-framework-2024-part1-cn/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/08/19/benchmark-for-python-web-framework-2024-part1-cn/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Mon, 19 Aug 2024 17:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[In 2024, Gevent or asyncio? Part 1]]></title>
            <description><![CDATA[The choice between Gevent and asyncio has always been a classic question. Here, we’ll use data to help you make a decision.IntroductionProfessor Lin Wei has set a high standard:This graph shows the extreme performance of asyncio and Gevent. We can see that asyncio with uvloop is basically double the performance of Gevent.But is this the case under web frameworks?Let’s conduct an experiment.First, ]]></description>
            <link>https://www.manjusaka.blog/posts/2024/08/19/benchmark-for-python-web-framework-2024-part1-en/</link>
            <guid isPermaLink="true">https://www.manjusaka.blog/posts/2024/08/19/benchmark-for-python-web-framework-2024-part1-en/</guid>
            <dc:creator><![CDATA[Manjusaka's Blog]]></dc:creator>
            <pubDate>Mon, 19 Aug 2024 17:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[使用DoraSSR引擎开发2048游戏Demo]]></title>
            <description><![CDATA[引言介绍2048游戏背景与历史2048游戏是由意大利开发者Gabriele Cirulli在2014年创建的简易益智游戏。值得注意的是，这款游戏是在他用JavaScript自学编程时开发的，仅用了一个周末的时间。这款游戏最初的灵感来自于一个类似的游戏——1024，而1024本身也是基于另一个名为Threes的游戏。这种创新与简化使得2048在发布后迅速走红，吸引了全球玩家的注意，并在短时间内成为了一个网络现象。游戏规则2048的游戏规则非常简单，玩家在一个4x4的网格中通过上下左右方向键滑动方块。当两个相同数字的方块相遇时，它们会合并成一个新方块，并且数值相加（例如两个“2”合并成“4”）。每次滑动时，所有方块会向玩家指定的方向移动，且会在空白位置随机生成一个新的方块，通常为“2”或“4”。游戏的目标是在网格中创造一个数字为2048的方块。当玩家无法再移动方块且没有生成2048方块时，游戏]]></description>
            <link>https://www.harkerhand.cn/%E4%BD%BF%E7%94%A8DoraSSR%E5%BC%95%E6%93%8E%E5%BC%80%E5%8F%912048%E6%B8%B8%E6%88%8FDemo/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/%E4%BD%BF%E7%94%A8DoraSSR%E5%BC%95%E6%93%8E%E5%BC%80%E5%8F%912048%E6%B8%B8%E6%88%8FDemo/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sun, 11 Aug 2024 13:32:15 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[基于 Typst 的新一代的学术幻灯片（Slides）神器 —— Touying]]></title>
            <description><![CDATA[基于 Typst 的新一代的学术幻灯片（Slides）神器 —— Touying Typst 是为写作而诞生的基于标记的排版系统，Typst 的目标是成为功能强大的排版工具，并且让用户可以愉快地使用它。简单来说：Typst = LaTeX 的排版能力 + Markdown 的简洁语法 + 强大且现代的脚本语言。具体介绍你可以参考这篇文章。而 Touying 是为 Typst 开发的幻灯片/演示文稿包。Touying 也类似于 LaTeX 的 Beamer，但是得益于 Typst，你可以拥有更快的渲染速度与更简洁的语法。Touying 取自中文里的「投影」。相较而言，LaTeX 中的 Beamer 就是德文的投影仪的意思。 为什么使用 Touying 相较于 PowerPoint，Touying 并非「所示即所得的」，你可以使用一种「内容与样式分离」的方式编写你的 slides，尤其是 Ty]]></description>
            <link>https://blog.orangex4.cool/post/touying/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/touying/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Thu, 30 May 2024 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[申请域名相关]]></title>
            <description><![CDATA[前言个人开设网站已经三年有余了，从最开始的本地部署、Gitee部署到现在的Github + 域名部署，不断遇到各种问题，最大的问题是各种服务的链接各不相同，难以统一记忆与管理，遂需要一个域名，通过二级转发来解决这些问题。前几日听俱乐部的小伙伴说首年的域名都很便宜，那么 域名，启动！平台选择 ▶各种平台 腾讯云 产业智变·云启未来 - 腾讯 (tencent.com) 阿里云-计算，为了无法计算的价值 (aliyun.com) 不一一列举了，有很多我选择了腾讯云，国内使用体验较好。.online的顶级域名首年只需要不到10元。购买后及时完成认证，备案与否自由选择。配置DNS解析可配置值有一下几种主机记录记录类型线路类型记录值权重TTL备注主机记录即二级域名，比如www.baidu.com与pan.baidu.com的区别就是前缀的二级域名，这样可以使一个域名被多个服务使用。记录类型常用的只有]]></description>
            <link>https://www.harkerhand.cn/%E7%94%B3%E8%AF%B7%E5%9F%9F%E5%90%8D%E7%9B%B8%E5%85%B3/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/%E7%94%B3%E8%AF%B7%E5%9F%9F%E5%90%8D%E7%9B%B8%E5%85%B3/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Wed, 24 Apr 2024 06:44:03 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[进行Hexo大版本更新]]></title>
            <description><![CDATA[前言昨晚偶然打开了 package.json，发现 hexo 版本为 6.3.0，遂决定升至最新 v7.1.1。遭遇错误执行报错1npm update hexo-cli -g重启解决 99% 的问题，剩下 1% 用重装秉持这个思想，我选择重装操作步骤备份备份旧版本的文章，格式，Hexo及Fluid的配置文件卸载执行1npm uninstall hexo-cli -g并进入 C:\Users\UserName\AppData\Roaming\npm 路径检查卸载是否彻底安装本体执行1npm install hexo -g并进入 C:\Users\HarkerHand\AppData\Roaming\npm\node_modules\hexo\package.json 查找 version 字段，版本为 v7.1.1 即为安装成功Git Bash cd 进入博客文件夹，需要清空执行1hexo ]]></description>
            <link>https://www.harkerhand.cn/%E8%BF%9B%E8%A1%8CHexo%E5%A4%A7%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/%E8%BF%9B%E8%A1%8CHexo%E5%A4%A7%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sun, 03 Mar 2024 17:15:23 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CloudFlare+telegraph图床部署]]></title>
            <description><![CDATA[提醒本文封面及所涉及的所有图片均来自云端图床，故随时存在无法访问的风险部署Fork 项目将此项目Fork进自己的仓库 Telegraph-Image部署CloudFlare使用 Pages 服务部署该仓库创建KV : img_url命名空间 img_url = img_url环境变量 BASIC_USER BASIC_PASS 后台管理用户名，密码部署后得到前端网址后缀 /admin 进入后台管理效果公开使用：Pic-Url 源链Image 转发链Knife is short, I use python]]></description>
            <link>https://www.harkerhand.cn/CloudFlare-telegraph%E5%9B%BE%E5%BA%8A%E9%83%A8%E7%BD%B2/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/CloudFlare-telegraph%E5%9B%BE%E5%BA%8A%E9%83%A8%E7%BD%B2/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sun, 03 Mar 2024 10:59:43 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[基于Twikoo的博客评论搭建]]></title>
            <description><![CDATA[写在前面寒假期间，好友章隐基于WordPress搭建了自己的博客彰隐的个人博客，包含有评论系统，十分有趣，故决定给自己的站点也增加这一服务。本站基于Hexo搭建，在GitHub Pages和Gitee Pages双端部署，使用Fluid主题进行美化，功能丰富，内置了许多主题插件使用。打开 node_modules/hexo-theme-fluid/_config.yml 并查找 comment 字段，可以看到1234567# 评论插件# Comment plugincomments: enable: true # 指定的插件，需要同时设置对应插件的必要参数 # Options: utterances | disqus | gitalk | valine | waline | changyan | livere | remark42 | twikoo | cusdis | giscus | ]]></description>
            <link>https://www.harkerhand.cn/%E5%9F%BA%E4%BA%8ETwikoo%E7%9A%84%E5%8D%9A%E5%AE%A2%E8%AF%84%E8%AE%BA%E6%90%AD%E5%BB%BA/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/%E5%9F%BA%E4%BA%8ETwikoo%E7%9A%84%E5%8D%9A%E5%AE%A2%E8%AF%84%E8%AE%BA%E6%90%AD%E5%BB%BA/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sun, 03 Mar 2024 07:06:11 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[浅尝Github Actions]]></title>
            <description><![CDATA[前情提要本人正在进行C++课程的学习，每次作业组成为若干编程题目，每个题目需要包括测试文件.cpp，类的声明头文件.h，类的实现文件.cpp大致的文件树在此列出001exp01ex1.cppComplex.hComplex.cppexp02…002exp01……作业提交格式 : 将上述文件全部打包为.zip文件发送至指定邮箱需求 : 排除本地调试生成的.exe文件，自动打包注 : 作者使用git来进行本地与云端仓库的链接，.gitignore文件包含了*.exeGithub Actions 简介GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台，可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求，或将合并的拉取请求部署到生产环境。GitHub Actions 不仅仅是 DevOps，还允许您在存储库中发生其他事件时运行工作流程]]></description>
            <link>https://www.harkerhand.cn/%E6%B5%85%E5%B0%9DGithub-Actions/</link>
            <guid isPermaLink="true">https://www.harkerhand.cn/%E6%B5%85%E5%B0%9DGithub-Actions/</guid>
            <dc:creator><![CDATA[何山]]></dc:creator>
            <pubDate>Sat, 02 Mar 2024 09:03:45 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Typst 中文用户使用体验]]></title>
            <description><![CDATA[Typst 中文用户使用体验 Typst 是一门很新的语言，是面向出版与学术写作的可编程标记语言，从 2023 年 4 月正式开源的 0.1.0 版本以来，到现在的 2023 年 11 月份的 0.9.0，已经成熟稳定了许多，有了更好的中文与 CJK 语言的支持，能干的事情也变得多了起来。同时也因为它太新、发展太快，现在知乎上大部分关于 Typst 的讨论都已经是过时的了。所以在这里我先纠正一些常见的误解，简单来说，现在的 Typst：可以通过 fallback 特性给中英文设置不同的字体，也可以使用正则表达式对中文字符做特殊处理 (如改变字号大小、更换颜色、伪斜体)。Typst 已经支持了中英文之间自动加一个空格的间隙，并且已经做了许多中文标点压缩的工作，例如中文括号和中文冒号之间的空隙会被自动压缩。对于英文 kerning、alternates 与 ligatures 之类的操作，Ty]]></description>
            <link>https://blog.orangex4.cool/post/typst-for-chinese/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/typst-for-chinese/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Sun, 26 Nov 2023 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[可能是中文用户最需要的一个 VS Code 插件 —— 智能切换输入法 Smart IME]]></title>
            <description><![CDATA[可能是中文用户最需要的一个 VS Code 插件 —— 智能切换输入法 Smart IME 简介 Smart IME 是一款 VS Code 插件，用于根据上下文智能地切换输入法，部分灵感来自 idea 的 Smart Input。解决了两类用户的痛点：使用中文写注释的程序员，可以进入注释块时自动切换为中文输入法，离开时切换为；用得到数学公式的中文写作者，可以避免在中文和数学公式之间频繁切换输入法。 特性 在中文后输入一个空格自动切换到英文输入法（默认开启），在英文后输入两个空格自动切换到中文输入法（默认未开启）；进入到注释场景时，自动切换为中文输入法，离开时自动切换为英文输入法（参考插件配置里的 comment 相关内容）；进入到数学公式时，自动切换为英文输入法，离开时自动切换为中文输入法（参考插件配置里的 markup.math 相关内容）；如果当前文档拥有超过 n 个英文字符且没有中]]></description>
            <link>https://blog.orangex4.cool/post/vscode-smart-ime/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/vscode-smart-ime/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Fri, 13 Oct 2023 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Typst 的非官方中文文档网站]]></title>
            <description><![CDATA[Typst 的非官方中文文档网站 简述 花了几天时间研究了一下 Typst 的仓库中的代码, 大体上明白了 Typst 的官方文档网站是怎么生成的了, 然后我决定制作一个非官方的 Typst 中文文档网站.网站如下: https://typst-doc-cn.github.io/docs/ 目前只翻译了一部分, 不过教程部分已经翻译完了, 帮助 Typst 新用户入门应该是不成问题的.Typst 中文文档网站是社区驱动的非官方 Typst 中文文档, 也随时欢迎你的贡献, 具体内容可以去 Github Repo 了解. 技术细节 Typst 的文档生成是与 Typst 源码紧耦合的, 具体体现在:Typst 开发者使用 Rust 写了一个 docs 模块, 文档生成的大部分工作都在这里进行;Typst 的文档是使用一种 Markdown 的方言以及 Yaml 文件生成的, docs/src]]></description>
            <link>https://blog.orangex4.cool/post/translation-for-typst-documentation/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/translation-for-typst-documentation/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Sat, 24 Jun 2023 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[为你的 Typst 写作加入强大的数学公式科学计算器 - Typst Sympy Calculator]]></title>
            <description><![CDATA[为你的 Typst 写作加入强大的数学公式科学计算器 - Typst Sympy Calculator 简介 Typst Sympy Calculator 是一款 VS Code 插件, 它能够帮助你在 VS Code 写 Typst 的时候, 一键计算 Typst 书写的数学公式. 它基于 Python, Sympy 和 typst-sympy-calculator 模块. 当前支持的功能:算数: 加 (+), 减 (-), 点乘 (dot), 叉乘 (times), 分数 (/), 乘方 (^), 绝对值 (|x|), 开方 (sqrt), 等…字母表: a - z, A - Z, alpha - omega, 下标 (x_1), 重音符(hat(x)), 等…常见函数: gcd, lcm, floor, ceil, max, min, log, ln, exp, sin, cos, ]]></description>
            <link>https://blog.orangex4.cool/post/vscode-typst-sympy-calculator/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/vscode-typst-sympy-calculator/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Sat, 24 Jun 2023 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[数字图像处理实验三：边缘检测和边缘连接]]></title>
            <description><![CDATA[数字图像处理实验三：边缘检测和边缘连接 《数字图像处理》课程实验三：边缘检测和边缘连接的实验报告. 一、边缘检测 1.1 梯度阈值化边缘检测算法 进行边缘检测的一种最简单的方式便是梯度阈值化.只需要三个步骤:通过 Sobel 算子计算水平和垂直方向的梯度 gxg_xgx​ 和 gyg_ygy​;通过欧氏距离或曼哈顿距离函数算出 ggg;保留超过最大值的阈值的像素.对应代码如下:123456789101112131415# 梯度阈值化边缘检测def my_gradient_thresholding(img: np.ndarray, threshold=200): ''' 梯度阈值化边缘检测 :param img: 灰度图像 :param threshold: 阈值, 范围为 [0, 255] ''' img = img.astype(np.float32) # 通过 Sobel 算子计算水平]]></description>
            <link>https://blog.orangex4.cool/post/digital-image-processing-report-3/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/digital-image-processing-report-3/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Tue, 13 Dec 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[数字图像处理实验二：频域图像处理]]></title>
            <description><![CDATA[数字图像处理实验二：频域图像处理 《数字图像处理》课程实验二: 频域图像处理的实验报告. 一、理论基础 为了自己实现 fft, fft2, ifft2 和 fspecial 函数, 我们先研究离散傅里叶变换和快速傅里叶变换的理论基础. 1.1 离散傅里叶变换 (DFT) 对于采样后函数 f~(t)=f(t)sΔT(t)=∑n=−∞∞f(t)δ(t−nΔT)\displaystyle \tilde{f}(t) = f(t)s_{\Delta T}(t) = \sum_{n=-\infty}^{\infty}f(t)\delta(t-n\Delta T)f~​(t)=f(t)sΔT​(t)=n=−∞∑∞​f(t)δ(t−nΔT)我们可以直接进行傅里叶变换F~(μ)=∫−∞+∞f~(t)e−j2πμtdt=∫−∞+∞∑n=−∞∞f(t)δ(t−nΔT)e−j2πμtdt=∑n=−∞∞∫−∞+∞f]]></description>
            <link>https://blog.orangex4.cool/post/digital-image-processing-report-2/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/digital-image-processing-report-2/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Tue, 08 Nov 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[数字图像处理实验一：直方图均衡化]]></title>
            <description><![CDATA[数字图像处理实验一：直方图均衡化 《数字图像处理》课程实验一, 直方图均衡化的实验报告. 一、实现细节 1. 图像类的封装 本次实验我采用了 Python 语言进行代码的编写, 共计编写了 355 行代码, 其中用到了两个包: numpy 和 matplotlib.numpy: 用于在 Python 中进行快速的矩阵运算.matplotlib: 用于加载和显示图片.为了方便后续进行图片处理, 图片显示和图片对比, 我首先封装了一个 Image 类, 其中重要的接口 (以及部分实现) 如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566class Image: ''' 图像类, 里面包括了图像初]]></description>
            <link>https://blog.orangex4.cool/post/digital-image-processing-report-1/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/digital-image-processing-report-1/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Wed, 28 Sep 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[基于 HMM 隐马尔可夫模型的智能拼音输入法 (带 Web 前端)]]></title>
            <description><![CDATA[基于 HMM 隐马尔可夫模型的智能拼音输入法 (带 Web 前端) 一、使用介绍 一个基于 HMM 隐马尔可夫模型的智能拼音输入法 (带 Web 前端)。 在线网址：http://1.15.246.22:3367/代码 Repo：https://github.com/OrangeX4/simple-pinyin1git clone https://github.com/OrangeX4/simple-pinyin.git首先要安装依赖：1234567# pythoncd pinyinpip install -r requirements.txt# webcd webnpm install简易拼音输入法提供了两种 UI，分别是命令行和前端模式。首先是 命令行模式：12cd pinyinpython ./__init__.py然后输入 cli 就能进入命令行模式的拼音输入法了。 其次是 前端模]]></description>
            <link>https://blog.orangex4.cool/post/simple-pinyin/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/simple-pinyin/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Mon, 04 Jul 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[决定中国历史的思想、文化和经济变迁]]></title>
            <description><![CDATA[决定中国历史的思想、文化和经济变迁 ——《万古江河——中国历史文化的转折和发展》读书报告 一、简述 经典的史书，讲述的常常是王侯将相之间的攻伐争斗，包括他们的史书篇幅往往占据了绝大部分篇幅。在战争中，周武王、秦始皇和洪武帝们得到了个人至高的荣耀，却也带给了百姓们兵荒马乱和妻离子散的悲痛。事实上，他们的功绩到如今已经消散在历史的长河中，不见踪影。他们至今仍留给中华文化的，却是在无意中因由战争而留下贯穿全国的道路网络，以及遍布全国的文化交融。《万古江河》从一种更宏观，也更关注民生的角度讲述了中国的历史。书中的一个明显特征，就是对于历史中传奇人物的轻描淡写，对于思想、文化和经济变迁的浓墨重彩。事实上，相比于王侯将相们的文治武功，作者更偏向于描写决定了中国历史的思想、文化和经济变迁。思想、文化和经济，这三者逐层并进，和其他因素一起，共同塑造了中国的历史，也是我所阅读内容的重点。 二、天命观念 商朝]]></description>
            <link>https://blog.orangex4.cool/post/review-of-chinese-history/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/review-of-chinese-history/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Wed, 25 May 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[为 Draw.io 加入基于 Function Plot 的数学函数作图功能]]></title>
            <description><![CDATA[为 Draw.io 加入基于 Function Plot 的数学函数作图功能 这是一个基于 drawio_chartjs_plugin 和 function-plot 的项目。它可以让你的 Draw.io Desktop 软件加上如虎添翼般的 数学函数作图 功能。GitHub 地址是：OrangeX4/drawio-function-plot-plugin: Function Plot plugin for Draw.io Desktop.https://github.com/OrangeX4/drawio-function-plot-plugin 使用 双击 图形并编辑 JSON 数据，结束编辑之后就会重新渲染出美观的函数图形。 你可以访问 Function Plot 的网站阅读更详细的文档。 安装 1. 为 Drawio Desktop 开启 unsafe-eval 因为 Functi]]></description>
            <link>https://blog.orangex4.cool/post/drawio-function-plot-plugin/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/drawio-function-plot-plugin/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Sat, 09 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[第 7 期、科研作图：写论文、作业时用得到的作图软件]]></title>
            <description><![CDATA[第 7 期、科研作图：写论文、作业时用得到的作图软件 有句老话说得好：「一图胜千言。」仅靠干巴巴的文字，一般很难表达出一些数学或计算机专业的概念，但是一旦通过一副美观简洁的插图将其表示，别人就能很简单地理解这些复杂的概念。当然，其他理工科类专业也有很多其他插图需求，例如化学科的实验图和分子式图，生物科的细胞结构图、质粒图等等。但是本文主要面向的是计算机类学生，因此这些其他专业的专业化作图会较少涉及，如果对这类图感兴趣，可以看看文末的延展阅读。计算机类文章常见的插图有以下这些：流程图：又称程序框图，是表示算法、工作流或流程的一种框图表；数据图：用以表现数据的图表，最常见的有柱状图、折线图和散点图；函数图：可以算作一种特殊的数据图，但更强调数学上的函数概念；示意图：又称原理图，是用抽象的图形符号而非写实的图片表示系统、设备的工作原理及其组件相互关系的简图。我们也常常用其来表示算法和数据结构中的]]></description>
            <link>https://blog.orangex4.cool/post/lesson-zero-7/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/lesson-zero-7/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Sat, 09 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[第 6 期、写作：基于 VS Code 的 Markdown 写作技术栈]]></title>
            <description><![CDATA[第 6 期、写作：基于 VS Code 的 Markdown 写作技术栈 这期我们来讲讲，如何基于 VS Code 搭建出一套堪称「优秀」的 Markdown 写作技术栈。内容主要包括以下插件：Vscode IconsMarkdown Preview EnhancedMarkdown All in OnePaste ImageImage previewCJK Word HandlerWord Count CJKHyperSnips for MathBetter Markdown &amp; Latex ShortcutsPython BracketsLatex Sympy Calculator你可以通过安装插件包 Markdown Notes Pack 来一键安装这些插件。并且还会额外讲解 PicGo 图床的使用，以及如何用 Git、GitHub 和 GitNotes 托管你的笔记。 一、]]></description>
            <link>https://blog.orangex4.cool/post/lesson-zero-6/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/lesson-zero-6/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Fri, 08 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[第 5 期、写作：LaTeX 和 Markdown 中的数学公式和 HyperSnips 快捷输入]]></title>
            <description><![CDATA[第 5 期、写作：LaTeX 和 Markdown 中的数学公式和 HyperSnips 快捷输入 书写「数学公式」一直都是写作中的一个难点，使用 Word 之类的软件的时候，往往需要类似 MathType 之类的第三方插件来帮助输入，而且输入效率低下。如今编写数学公式，「LaTeX 式数学公式」已经成为了事实标准，无论是 LaTeX 自身，还是 Markdown，甚至是 Word 里面的使用的 MathType 和 AxMath，事实上都支持 LaTeX 式的语法，其特点是类似 \int_a^b xdx 这样，特殊符号使用以 反斜杠 开头的 命令 来表示。然而，直接使用 LaTeX 式的语法来写，输入效率依然很差。但是在使用了 VS Code 和 Markdown，以及一些 VS Code 插件 之后，输入效率会 大幅提升，甚至能达到比手写更快的效果。这一期文章，我们均以在 VS Cod]]></description>
            <link>https://blog.orangex4.cool/post/lesson-zero-5/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/lesson-zero-5/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Thu, 07 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[微积分知识点整理]]></title>
            <description><![CDATA[微积分知识点整理 微积分知识点整理. 常见不定积分 ∫axdx=axln⁡a+C\displaystyle\int a^x{\rm d}x=\frac{a^x}{\ln a}+C∫axdx=lnaax​+C∫1xdx=ln⁡∣x∣+C\displaystyle\int \frac{1}{x}{\rm d}x=\ln|x|+C∫x1​dx=ln∣x∣+C∫ln⁡xdx=xln⁡x−x+C\displaystyle\int \ln x{\rm d}x=x\ln x-x+C∫lnxdx=xlnx−x+C∫11+x2dx=arctan⁡x+C\displaystyle\int \frac{1}{1+x^2}{\rm d}x=\arctan x+C∫1+x21​dx=arctanx+C∫11−x2dx=arcsin⁡x+C\displaystyle\int \frac{1}{\sqrt{1-x^2}]]></description>
            <link>https://blog.orangex4.cool/post/cheatsheet-for-calculus/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/cheatsheet-for-calculus/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Wed, 06 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[线性代数知识点整理]]></title>
            <description><![CDATA[线性代数知识点整理 线性代数知识点整理. 求和运算法则 ∑i=1nxi=x1+x2+⋯+xn\displaystyle\sum_{i=1}^nx_i=x_1+x_2+\cdots +x_ni=1∑n​xi​=x1​+x2​+⋯+xn​∑i=1nkxi=k∑i=1nxi\displaystyle\sum_{i=1}^nkx_i=k\sum_{i=1}^nx_ii=1∑n​kxi​=ki=1∑n​xi​∑i=1n(xi+yi)=∑i=1nxi+∑i=1nyi\displaystyle\sum_{i=1}^n(x_i+y_i)=\sum_{i=1}^nx_i+\sum_{i=1}^ny_ii=1∑n​(xi​+yi​)=i=1∑n​xi​+i=1∑n​yi​∑i=1nxi∑j=1myj=∑j=1myj∑i=1nxi=∑i=1n∑j=1mxiyj=∑j=1m∑i=1nxiyj\displaysty]]></description>
            <link>https://blog.orangex4.cool/post/cheatsheet-for-linear-algebra/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/cheatsheet-for-linear-algebra/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Wed, 06 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[概率论知识点整理]]></title>
            <description><![CDATA[概率论知识点整理 概率论知识点整理. 1. 条件概率 事件的差:A−B=A−AB=ABˉA-B=A-AB=A\bar{B}A−B=A−AB=ABˉ乘法公式:P(AB)=P(A)P(B∣A)P(AB)=P(A)P(B|A)P(AB)=P(A)P(B∣A)全概率公式:P(B)=∑i=1nP(BAi)=∑i=1nP(Ai)P(B∣Ai)\displaystyle P(B)=\sum_{i=1}^{n}P(BA_{i})=\sum_{i=1}^{n}P(A_{i})P(B|A_{i})P(B)=i=1∑n​P(BAi​)=i=1∑n​P(Ai​)P(B∣Ai​)贝叶斯公式:P(Ai∣B)=P(AiB)P(B)=P(Ai)P(B∣Ai)P(B)=P(Ai)P(B∣Ai)∑j=1nP(Aj)P(B∣Aj)\displaystyle P(A_{i}|B)=\frac{P(A_{i}B)}{P(B)}=\]]></description>
            <link>https://blog.orangex4.cool/post/cheatsheet-for-probability-theory/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/cheatsheet-for-probability-theory/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Wed, 06 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[第 4 期、写作：TeX、LaTeX 与排版系统]]></title>
            <description><![CDATA[第 4 期、写作：TeX、LaTeX 与排版系统 “Your paper makes no goddamn sense, but it’s the most beautiful thing I have ever laid eyes on.” – From r/ProgrammerHumor随着印刷技术的不断发展，排版显得愈发重要，我们今天所看见的书籍，都离不开排版技术。在固定的版面，排版（Typesetting）各种不同类型的资料，例如文字、数字、表格和图片等，以最合适的方式进行呈现。例如印刷品中的版面安排，网页中内容的摆布，为了让读者有更舒适的体验，就需要考虑排版相关的问题。现存的排版系统的 设计理念 主要有两种，第一类是「所示即所得」，可以直接修改字体、颜色，马上就能看见效果，这类排版系统的好处是初学者容易上手，而坏处是随着复杂程度的增加，花费在样式上的精力明显增大，这类排版系统主要]]></description>
            <link>https://blog.orangex4.cool/post/lesson-zero-4/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/lesson-zero-4/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Tue, 05 Apr 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[第 3 期、写作：使用 Markdown 记笔记入门]]></title>
            <description><![CDATA[第 3 期、写作：使用 Markdown 记笔记入门 我认为，写作是一个优秀程序员必备的能力。程序员光写出好的代码是不够的，要和他人有效地合作，你就需要通过 书写文档 的方式，来介绍你写出的代码。在一个团队里，更具有权势和影响的程序员，往往是那些表达能力强的程序员。如果你能够写出清晰的注释和文档，别人就能够更容易地理解你的代码，也就更容易采纳你的想法。如果 Linus Torvalds 只是埋头默默无闻地开发自己的操作系统，不与他人沟通，Linux 系统也就不太可能会像如今一般受人追捧。正是 Linus Torvalds 通过电子邮件和新闻组，以书面形式表达自己的想法，才吸引了全世界一大批的计算机天才的注意，共同协作完成了 GNU/Linux 这么伟大的项目。另外，除了技术文档，良好的写作能力也能够让程序员以 书写博客 的形式，持续地输出自己的观点，扩大自己的技术影响力。对于身处学术圈的计]]></description>
            <link>https://blog.orangex4.cool/post/lesson-zero-3/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/lesson-zero-3/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Fri, 04 Mar 2022 16:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[第 2 期、在编程之前：使用 VS Code 开发 C、C++ 与 Python]]></title>
            <description><![CDATA[第 2 期、在编程之前：使用 VS Code 开发 C、C++ 与 Python VS Code 并不是针对某一种语言而开发的，这也意味着 VS Code 并不是开箱即用的。想要让 VS Code 支持某种语言的开发，你需要自己手动安装对应的开发环境，并在 VS Code 中安装对应的插件。比较麻烦的就是 C 和 C++ 这类传统的编译型语言在 Windows 下开发环境的搭建，这也是本文的重点；而 Python 这类解释型语言开发环境的搭建就显得比较简单。 一、Windows 下 VS Code / C++ 开发环境最简单的搭建方式 1、下载工具 如果你使用 Windows 系统，想要以最快的方式搭建 VS Code / C++ 开发环境，你可以试试这个 小工具：AutoVsCEnv_WPF V1.994.ziphttps://sdchao.lanzoum.com/iB7dE01231b]]></description>
            <link>https://blog.orangex4.cool/post/lesson-zero-2/</link>
            <guid isPermaLink="true">https://blog.orangex4.cool/post/lesson-zero-2/</guid>
            <dc:creator><![CDATA[OrangeX4's Blog]]></dc:creator>
            <pubDate>Wed, 02 Mar 2022 16:00:00 GMT</pubDate>
        </item>
    </channel>
</rss>