批量修改 qbittorrent-nox 内种子的 tracker 地址
背景馒头 PT 站的默认 tracker 出了问题,我到现在都没搞懂是被墙了还是我自己设备的问题,反正就是无法访问默认的 .cc 域名,但 .io 的域名是可以的。但手动修改 .cc 倒 .io ,也太麻烦了,我有上百个种子。我是在一台 Ubuntu 服务器上运行的原版 qbittorrent-nox,用 webui 访问。解决方案qbittorrent-nox 会在当前用户的家目录中的 ~/.local/share/qBittorrent/BT_backup 目录内存放所有正在使用的种子(虽然我也不清楚为啥名字里有 backup),vim 看了一眼,就是很正常的种子文件格式。所以,理论上,直接批量替换这些种子文件里面的 tracker URL,就能解决问题。说干就干,先停掉 qb 的服务,然后备份 BT..
更多在 Linux 中显示所有正在监听的 TCP 端口
netstat1sudo netstat -tulpn | grep LISTEN其中 -t 表示显示 TCP,-u 表示显示 UDP,-l 表示显示监听的端口,-p 表示显示对应的程序名,-n 表示不去查询 IP 对应的主机名。lsof1sudo lsof -i -P -n | grep LISTEN其中 -i 表示显示 IP 协议,-P 表示把端口号保留为数字形式,-n 表示不去查询 IP 对应的主机名。
更多把 vim 的缩进设为 4 个字符,并且 tab 自动转空格
修改本用户的 ~/.vimrc 文件,添加以下内容。如果要想 sudo vim 也生效,那 /root/.vimrc 也要改。1234567filetype plugin indent on" show existing tab with 4 spaces widthset tabstop=4" when indenting with '>', use 4 spaces widthset shiftwidth=4" On pressing tab, insert 4 spacesset expandtab上面的注释已经解释了含义。
更多让 Nginx 反向代理的程序获取客户端真实 IP
Nginx 配置添加以下内容:12345location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}其含义就是在反代时,在客户端发起的请求报文上添加 X-Real-IP 和 X-Forwarded-For 两个 HTTP 头。X-Real-IP 表示表观客户端地址,X-Forwarded-For,顾名思义,就是“为谁代理”的意思,这个可以用来嵌套式传输客户端真实地址。被代理的服务,只要能正确解析这两个头,就能获得客..
更多不用 snap,在 Ubuntu 上安装 certbot
Certbot 官网居然只提供 snap 方式安装,而 snap 是我在 Ubuntu 上最不喜欢的东西那就直接用 pip 安装吧~1sudo apt install certbot python3-certbot-nginx
更多在 Ubuntu 中启用 swap
首先,swap 多大比较好?如果你有一个 2G 内存的服务器,偶尔内存有点吃紧,那就再开 2G 的 swap 吧。其他的情况,随缘。如果内存不紧张,就不用开。依次执行:12345678910sudo fallocate -l 2G /swapfile # 在根目录下创建一个 2G 大小的 swap 文件sudo chmod 600 /swapfile # 修改权限配置sudo mkswap /swapfile # 把这个文件作为 swapsudo swapon /swapfile # 启用 swapsudo vim /etc/fstab # 编辑 fstab 以自动挂载 swap 文件# 添加以下内容/swapfile swap swap defaults 0 0sudo swapon --show # ..
更多再一次理解 C++ 中的 extern "C"
本文是“攻玉计划”的一部分,翻译自 https://stackoverflow.com/questions/1041866/what-is-the-effect-of-extern-c-in-c 中 Ciro Santilli 的回答通过反汇编了解 extern “C” 的作用main.cpp12345678910void f() {}void g();extern "C" { void ef() {} void eg();}/* Prevent g and eg from being optimized away. */void h() { g(); eg(); }将上述代码编译为 ELF 格式的二进制,然后反汇编:12g++ -c -std=c++11 -Wall -Wextra -ped..
更多航模舵机控制及其 PWM 调制的进一步理解
起因是这样的,前段时间,我同时开始玩履带车和固定翼航模。履带车的动力是直流电机加驱动板,PWM 调制,0-100% 占空比控制电机从静止到全速转动。航模的话,虽说十年前我就开始接触了,但一直都是浮于表面的玩,能动就行。玩航模必须要有遥控器和接收机,接收机也是输出 PWM 信号的,连接舵机就能控制其在指定角度范围内运动,连接电调就能控制电机转速。于是,我想当然的,航模接收机 应该也是输出 0-100% 占空比的 PWM 信号,0 就是舵机一个极限角度,50% 就是中位,100% 就是另一个极限角度。然而事实并不是,我把履带车的驱动板接上航模的接收机,不管我怎么推拉摇杆,履带车始终以一个非常低的速度运动。这就引起了我的好奇。先简单看下航模接收机的 PWM 信号图形手头没有示波器,就拿一个简单的逻辑分析仪应付一..
更多如何自签名带 SAN 字段的 SSL/TLS 证书
前言在本站之前一篇文章 如何成为 CA,并签发自己的证书 中,我们介绍了如何做一个“正规”的自签名证书。但是,这个方法对于现代的浏览器不太管用了,因为 Chrome、Firefox 等浏览器已经不再判定证书的 CN (Common Name) 字段与域名是否一致了,而是改用判定 SAN (Subject Alternative Name) 字段。具体为什么这么做以及 SAN 的含义,网上有很多解释,很重要但是这里不谈,只谈如何在自签名证书中正确配置 SAN 字段。网上的教程有很多,但很多没有说清楚,或者缺少一些关键步骤和参数,导致实际情况下出各种问题,这里我尽量整理了一个完善的版本。准备步骤首先,CA 的证书与文首提到的文章一致,如果之前配置过,那就不需要再生成了。然后,生成待签发证书的私钥,这一步也与上..
更多如何 DIY 一个苏康码与行程码“双码合一”的健康码 APP
背景介绍众所周知的背景:苏康码打开很慢,在支付宝中如果没有快捷键,需要以下步骤:点击打开支付宝 -> 点击健康码 -> 点击立即查看,如果设置了长按图标打开健康码,也得至少两步;其他 APP 比如“苏周到”,可以实现长按快捷键后一步访问,但是其中存在三个步骤:APP 启动 -> 健康码小程序启动 -> 加载网页,这种不可理喻的框架,在某些低端机上冷启动,可能需要长达数十秒的时间;行程卡打开也很慢,在微信小程序中打开,不知道为什么每次都让我确认一下“同意并授权运营商查询”,严重影响效率;很多地方两个码都要查,于是慢*2,话说我也不知道为什么有关部门不把这两个码合二为一……所以干脆 DIY 一个。开发流程我想做出这样的效果:打开 APP 后,直接显示苏康码,滑动屏幕可切换到行程码,不需..
更多