JZX 轻语

挖掘时光的细节

Cursor连接Github Codespaces札记

Cursor可谓是今年AI Agent编程的网红产品了,其本质是在VS Code的基础上新增AI相关的功能。因此,VS Code的特性和大部分插件,它基本也支持。那么,按理说它也同样支持连接到Github Codespaces上进行开发,再加上强大的AI Agent,岂不美滋滋呢! 经过周末的一番尝试,终于成功使用Cursor连接上Github Codespaces了,在codespace...

C++模板元编程学习笔记 1: 模板的模板参数

模板的模板参数是C++模板元编程一个重要的基础概念。它允许我们在模板中使用其他模板作为参数,从而实现更复杂的类型和行为。 首先看一段简单的代码示例: #include <iostream> #include <tuple> using namespace std; template<typename> struct first_type_get...

Python对象__dict__方法分析札记

该文章是对Python对象__dict__方法的分析笔记,未完待续...

Github的Python项目发布到PyPI的简单方法札记

最近在弄一个新的Python项目,想把它放在PyPI上。由于之前的项目要么需要手动在本地通过build和twine打包上传,要么就是推上到Github仓库后,再各种设置Github Action以实现自动打包上传,虽然简单了不少,但还是需要自己生成token,并将其设置在仓库的secrets里面,步骤还是有点点多。现在PyPI支持了所谓的“受信任发布者”(Trusted Publisher)...

本站极简风格分支已发布

经过两到三天的调整,本站的极简风格分支JZX轻语:简(网址:https://min.jeza-chen.com)已经建成并发布。该分支旨在保留原有的内容的基础上,尽可能去掉相当多的视觉元素,让读者更专注于阅读内容。相比于原站,极简风格分支的特点有: 去掉了大部分的视觉元素:去掉大部分与内容无关的视觉元素,尽可能使用纯色背景和默认的样式,让读者更专注于内容本身。 ...

[Python导入系统] 如何调试importlib_bootstrap模块

书接上回,我们已经知道如何调试大部分的冻结模块,然而,由于importlib的_bootstrap属性是通过导入_frozen_importlib这个不同名的冻结模块实现的,前文的方法仍无法做到对importlib._bootstrap的源码级调试,需要进一步研究如何通过patch的方式,诱拐解释器载入源码实现调试。 importlib._bootstrap的导入实现 上文说到,im...

[Python进阶] 如何解冻和调试冻结模块(Frozen Modules)

使其在PyCharm等IDE上支持堆栈信息显示、断点以及单步调试。

背景 在Pycharm等IDE调试Python程序时,我们有时候会注意到调用栈中,有部分栈帧显示frame not available,如果使用inspect.stack输出栈信息,可以看到这些栈帧处在冻结模块(带有frozen字样的模块名)里,而pdb、pydevd等调试器往往不能进入这些冻结模块上进行调试,不方便我们研究内部的运行机制。本文以此为出发点,尝试通过多种手段,使得解释器能够...

[Python导入系统] 当`import os.path`时,导入系统发生了什么?

`os.path`并非是`os`包的一个子模块,而是`posixpath`或`ntpath`模块的别名。

[Python导入系统] 访问子模块报错`AttributeError`的诡异问题解决

不要随意删除`sys.modules`中的模块,否则可能导致子模块无法访问!

ST表的Python实现模板(支持泛型类型检查)

参照OIWiki对于ST表的C++实现,实现了一套Python版本的ST表,支持Python类型检查的泛型(Generic)推导功能。ST表是一种用于解决区间查询问题的数据结构,其主要用途是在O(1)时间内查询区间内的最值等可重复贡献的问题。需要使用的时候,直接复制下面的代码到Python文件中即可。 import math from typing import Callable, Ge...