开发

深入理解 Python 中的类与元类

最近在使用 peewee 来做数据库 ORM,期间遇到一些疑问便查了下源码,结果发现好多以前没有好好理解并整理的知识。 参考视频:https://www.bilibili.com/video/BV1uA411V7dW?p=1 关于 Python 中类的基本用法,参考以前写的文章 《python 小技巧与坑 – python 的类》 总结: 对象(obj)是类(class)的一个实例,而类(class)本身其实也是一个对象,它是元类(metaclass)的实例。 在 Python 中,默认情况下,所有类的元类都是 type,所有类的基类都是 object。 […]

Qt:QWidget 的绘制逻辑(源码分析)

一、QWidget QWidget 既是 QObject 的子类,也是 QPaintDevice 的子类! 而 QPainter 类实例,都要有一个目标 device! TLW(Top Level Widget)顶层窗口,可以看作是 “没有 parent 的 widget” 或者 “widget.window()

Qt: 自定义 QTreeView(2)- 显示自定义 widget 以及 GIF

本文所涉及代码:https://github.com/funway/TestQTreeView 一、自定义 Widget 由于我们的自定义 widget 是由几种内建 widget 组合而来,所以不需要在 paintEvent() 方法中进行手工绘制。parent widget 会自动调用 child widgets 的绘制方法 paintEvent()。 注意,在 QLabel 中加载要缩放的图片时,最好用 QLabel.setPixmap(

Qt: 自定义 QTreeView(1)

一、QTreeView 基本使用 下面的代码通过 QTreeView 实现一个任务列表的树形展示,任务列表包含两级结构:任务组与任务。 import logging, sys from PyQt6 import QtCore from PyQt6.QtWidgets import QApplication, QMainWindow, QTreeView from PyQt6.QtGui

在终端会话中设置代理

1、前提 对于 linux 或者 macos 系统而言,如果在命令行环境变量中存在 http_proxy、https_proxy。那么某些命令就会自动使用这两个代理设置。   2、手动设置环境变量 在终端窗口中输入: export http_proxy=http://127.0.0.1:7890 export https_proxy=$http_proxy 注意,手工设置的环境变量只会影响当前会话,亦即只在当前终端窗口生效。 另外,建议一律使用小写的 http_proxy 而不是大写 HTTP_PROXY。 因为有位网友做过测试,测试大小写 

IIS 重叠回收可能导致全局的 Application_Start 函数“不触发”

这两天在修改单位网站的 .NET 代码,其中有一个需求是这样实现的: 网站的告警信息以及每个告警对应的已读用户是保存在一个内存对象中的。 IIS 每天晚上会做定时的应用程序回收。 所以要在应用程序终止(Application_End)前将告警数据序列化导出成 Cache 文件保存(SaveCache); 然后在新的应用程序启动(Application_Start)后从 Cache 文件中读取告警数据,反序列化回来(LoadCache)。 在测试机器上这一系列代码是运行正常的,不论是 IIS 的定时回收,还是手工对 IIS 应用程序池中的进程进行回收,系统都会自动调用 Global.asax 文件中的 Application_End

python 正则匹配任意字符的一个坑

错误: .* 是匹配除了换行符\n以外的所有字符。 正确: 正确匹配任意字符的表达式应该是 [\s\S]* 或 [\d\D]* 或 [\w\W]*。(中括号 [] 表示字符集合,匹配集合中的任意字符。) 错误: 另一种错误表达式是 (.|\s)* 。这个乍一看是没有问题的,但在执行 findall() 匹配的时,可能会遇到无法终止的情况。举一个例子看看: #!/usr/bin/python2 #

Sublime Text 修改插件代码

原因: 最近升级到了 Sublime Text 4,却发现 Compare Side-By-Side 插件在 Sublime 4 中有一个 BUG:对比窗口无法分列显示两个代码。 在它的代码仓库中找到了修复该问题的 Pull Request,但是原作者还没合并。所以只得自己动手去修改本地的代码。 Sublime Text 的插件包有两种存储方式: 1. Packed,大部分的插件都被打包成