深度定制 Qt 树形控件选中样式

试验环境:

  • Windows 11
  • Qt 5.15.2

特别说明试验环境是有原因的。Qt 开发的程序在不同操作系统上有不同的显示效果——即风格,这比较好理解。但是,不同版本的 Qt 在同一操作系统上的显示效果也是有不同的。以树形控件为例,Qt 5.15.2 和 6.7.1 版本下 selectItems 行为的选中样式是不同的,要注意版本升级问题,这是我踩过的坑。

阅读更多

爱影CMS安装教程

爱影 CMS 是市面上不多见的 GO 语言实现的 CMS 软件。虽然免费但是没有开源,考虑官方已经一个多月没有更新,且官方社区、电报群、在线客服都处于失联状态,很有可能要干不下去。所以先把官方安装教程、相关资源做个备份。

Ubuntu 安装脚本

官方提供了一键安装脚本,很方便。

1
sudo rm -f iycms.sh; sudo wget --no-check-certificate -c -O iycms.sh https://www.iycms.com/api/static/down/linux/ubuntu/install_x86_64.sh;sudo chmod +x iycms.sh;sudo ./iycms.sh

install_x86_64.sh 文件内容:

阅读更多

阿里云企业邮箱免费版

实测发现阿里云的免费企业邮箱有坑。对同一邮箱发送邮件的时间间隔有限制,且不短于10分钟,完全不能用。我已经换到网易的免费企业邮箱了。

每个阿里云账号可以注册一个免费企业邮箱,但是阿里云把链接给藏起来了。

链接:https://common-buy.aliyun.com/?userCode=r3yteowb?spm=a2c6h.12873639.article-detail.8.85464bf1rfX5sH&commodityCode=alimail&specCode=lx_18482&request=%7B%22ord_time%22:%223:Year%22,%22account_num%22:%225%22%7D#/buy

零元购后按阿里云文档设置相关的 dns 解析字段,注意区分域名是在阿里云注册的还是其它服务商。

阿里云会自动创建一个 postmaster@mydomain.com 的邮箱账号,这个就是管理员账号。

用管理员账号访问 https://qiye.aliyun.com/admin/#/home 进入后台管理页面。几个常用的设置:

阅读更多

爱影CMS常用数据库表注释

在管理后台删除已经采集过的资源站时,爱影 CMS 不会扫描数据库把对应的采集纪录删掉,这时候就需要自己维护数据库,备注下这过程涉及的表。

collection

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
create table collection
(
id bigint auto_increment
primary key,
name varchar(191) default '' not null comment '名称',
data_method bigint default 1 not null comment '数据类型:1JSON 2XML',
data_type bigint default 1 not null comment '数据类型:1视频 2影人',
address varchar(191) default '' not null comment '地址',
param varchar(191) default '' not null comment '参数',
`desc` text null comment '说明',
charging_mode bigint default 1 not null comment '收费模式 1免费 2vip免费 3金币点播',
data_handle bigint default 1 not null comment '数据操作 1新增+更新 2新增 3更新',
log_id bigint default 0 not null comment '请求日志id',
sr_id bigint default 0 null comment '超管平台资源id',
status bigint default 1 null comment 'COMMENT',
create_at bigint not null,
update_at bigint not null,
match_player tinyint(1) null comment '是否匹配资源播放器',
use_parse int default 0 not null comment '是否启用解析,1-是,2-否',
parse_address varchar(191) default '' not null comment '解析地址,视频播放地址',
tags text null comment '来源',
color text null,
bold int default 0 not null,
sort int default 99 not null
)
collate = utf8mb4_unicode_ci;
阅读更多

各大影视资源站速度测试

时间: 22:30-24:00
地点: 广州
宽带: 电信 1000M

主要测试两个方面:

  • 资源站 cdn 节点的地理位置。同等条件下肯定是国内节点的延迟更低、稳定性更好
  • 高峰时段下的资源下载速度。可以综合考量 cdn 节点出口带宽紧张和下行网络拥堵的叠加影响

快车

对外域名弄了挺多 v1.zz-bosch.com - v12.zz-bosch.com,但实际大概只有 3 个 cdn 节点:156.238.192.114、156.238.194.211、156.238.194.50,都在德国。快车的表现最差,几乎不可用。

100s 传输 5.8MB,约 59KBPS。

阅读更多

Pelican 踩坑记

劝退忠告:不要入坑 Pelican,生态太弱

我一直用 Hexo 来的,最近又动了折腾的妄念,查到 Pelican 居然是 Python 实现的静态网站生成器,勇敢地尝试了一把。

幸亏我对 Python、jinja2 这些都还了解,自己补了一些坑,不然白费一天功夫,最后还是要换 Hexo。

框架本身基础能力都有,就发现一个小毛病:分类只能有一个,不能像 Hexo 那样嵌套。

核心问题还是生态上,具体地说,就是主题太少,且更新不活跃

阅读更多

CSAPP 读书笔记-第九章虚拟内存

9.1 物理和虚拟寻址

早期的 PC 使用物理寻址,而且诸如数字信号处理器、嵌入式微控制器以及 Cray 超级计算机这样的系统仍然使用这种寻址方式。然而,现代处理器使用的是一种称为虚拟寻址(virtual addressing)的寻址形式。

使用虚拟寻址,CPU 通过生成一个虚拟地址(Virtual Address,VA)来访问主存,这个虚拟地址在被送到内存之前先转换成适当的物理寻址。将一个虚拟地址转换为物理地址的任务叫做地址翻译(address translation)。就像异常处理一样,地址翻译需要 CPU 硬件和操作系统之间的紧密合作。CPU 芯片上叫做内存管理单元(Memory Management Unit,MMU)的专用硬件,利用存放在主存中的查询表来动态翻译虚拟地址,该表的内容有操作系统管理。

阅读更多

CSAPP 读书笔记-第八章异常控制流

8.1.2 异常的类别

1. 中断

中断是异步发生的,是来自处理器外部的 I/O 设备的信号的结果。硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的。

剩下的异常类型是同步发生的,是执行当前指令的结果。我们把这类指令叫做故障指令。

2. 陷阱和系统调用

陷阱是有意的异常,是执行一条指令的结果。就像中断处理程序一样,陷阱处理程序将控制返回到下一条指令。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用。

3. 故障

当故障发生时,处理器将控制转移给故障处理程序。如果处理程序能够修正这个错误情况,它就将控制返回到引起故障的指令,从而重新执行它。否则,处理程序返回到内核中的 abort 例程,abort 例程会终止引起故障的应用程序。

4. 终止

终止处理程序从不将控制返回给应用程序。

阅读更多

CSAPP 读书笔记-第七章链接

7.1 编译器驱动程序

大多数编译系统提供编译器驱动程序(compiler driver),它代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。比如,要用 GNU 编译系统构造示例程序,我们就要通过在 shell 中输入下列命令来调用 GCC 驱动程序:

1
gcc -Og -o prog main.c sum.c

驱动程序首先运行 C 预处理器(cpp),它将 C 的源程序 main.c 翻译成一个 ASCII 码的中间文件 main.i

接下来,驱动程序运行 C 编译器(ccl),它将 main.i 翻译成一个 ASCII 汇编语言文件 main.s

然后,驱动程序运行汇编器(as),它将 main.s 翻译成一个可重定位目标文件(relocatable object file)main.o

最后,驱动程序运行链接器程序 ld,将 main.osum.o 以及一些必要的系统目标文件组合起来,创建一个可执行目标文件(executable object file)prog

阅读更多

CSAPP 读书笔记-第六章存储器层次结构

6.1 存储技术

6.1.1 随机访问存储器

  1. 静态 RAM

用来做高速缓存存储器。

SRAM 将每个位存储在一个双稳态的存储器单元里。非常稳定,只有两个状态,正好表达二进制,但是造价高,功耗大。

  1. 动态 RAM

用来做内存。

DRAM 将每个位存储为对一个电容的充电。

DRAM 存储器单元对干扰非常敏感。暴露在光线下会导致电容电压改变。

阅读更多