我使用 Docker Compose 部署的 Jellyfin,每次执行 docker-compose pull
更新后,就会因为缺失汉字字体而导致部分中文变为方框
解决方法很简单,只需要安装 fonts-noto-cjk-extra
这个包即可
但受限于国内网络状况,想要更高效地完成这项工作,还需要替换下载源
进入容器后,执行以下命令(使用上海交通大学的镜像源):
1 |
|
安装完毕后,重启该容器即可
我使用 Docker Compose 部署的 Jellyfin,每次执行 docker-compose pull
更新后,就会因为缺失汉字字体而导致部分中文变为方框
解决方法很简单,只需要安装 fonts-noto-cjk-extra
这个包即可
但受限于国内网络状况,想要更高效地完成这项工作,还需要替换下载源
进入容器后,执行以下命令(使用上海交通大学的镜像源):
1 |
|
安装完毕后,重启该容器即可
帮朋友写了一个 Tampermonkey 脚本,用于爬取一个多页的表格,其中有一个小功能需要翻页后等待几秒以确保数据加载完成。
但是发现这玩意儿中的 setTimeout()
函数并没有按照我想象中的等待一定时间后再执行下一行代码。
原因是 setTimeout() 作为同步代码执行,并且对 setTimeout() 的多次调用均同时运行。每次调用 setTimeout() 都会创建异步代码,该代码将在给定延迟后稍后执行。 就其本身而言,
setTimeout()
不能用作sleep()
函数,但是你可以使用async
和await
创建自定义JavaScriptsleep()
函数。
结合 Promises
、 async
和 await
编写一个 sleep()
函数,然后从 async
函数中调用它,并且需要与 await
关键字一起使用。
1 |
|
疑似为 Nextcloud 28.0.1 的 bug,等待官方修复或使用下面的解决方案
oc_preferences
表userid
字段,找到对应用户的记录configkey
字段为 quota
的记录的 configvalue
值改为 none
或者直接使用如下命令,记得修改命令中的 username
1 |
|
由于一些众所周知原因,Steam 社区页面无法在我所处的地区直接访问了,而我部署于 Linux 设备上的 ArchiSteamFarm 也因此无法正常工作。早些时候是通过使用网络代理的方式来使其正常工作的,但该方法稳定性不够理想,故试图使用 caddy 进行本地反代的方式来解决问题。
V12.1.4
版本)v2.6.2
版本)
armv5
版本在 Windows 设备上正常下载并使用 Steamcommunity 302 软件,在其设置内勾选自己所需反代的服务。
在本例中,勾选了 Steam 社区和商店。
运行一次并确认工作正常后,应当会在 Steamcommunity 302 目录下,生成自签证书等多个文件。
本步骤共需要 6 个文件,建议先将下列文件复制一份以供后续编辑操作。
1 |
|
编辑 steamcommunity_302.caddy.json
文件,将红圈处原先随机生成的端口修改为 443 端口。
如果在 Steamcommunity 302 中选择反代了多个服务,并且希望在 Linux 设备上使用,那么需要修改的数量会多于图中的红圈,请仔细检查并修改该文件。
将上一步骤中的 6 个文件传递到 Linux 服务器上。
注意,在 Debian/Ubuntu 系的服务器上,需要将 steamcommunityCA.pem
修改为 .crt
扩展名,才可在后续步骤中正常导入。
故运行如下命令:
1 |
|
并使用如下命令更新根证书:
1 |
|
若一切正常,将会看到提示添加了 1 张新证书。
在 Windows 上,打开 C:\Windows\System32\drivers\etc
并打开 hosts
文件。
复制 hosts
文件中,以 #S302
结尾的条目。
将上述复制的内容写入到 Linux 设备上的 /etc/hosts
文件中。
在本例中,写入了如下内容:
1 |
|
请根据实际情况调整。
进入 caddy 目录,赋予 caddy 执行权限,然后启动:
1 |
|
因为使用了 443 端口,故需要 root 权限以运行。
如若运行正常,可进行测试,例如使用 curl https://steamcommunity.com/
或直接启动 ASF 等程序进行测试。
本例供树莓派官方系统配置开机自启动参考,编辑 /etc/rc.local
文件,加入如下内容:
1 |
|
注意:
screen
命令支持案例:需要打包一个 Python 项目为二进制文件,但该项目包含了一个 config.py
不应一起被打包
1 |
|
使用如下命令获得一个 .spec
文件:
1 |
|
在本例中,需要调整如下两行:
告知 Pyinstaller 将 config.py
置于打包后的根目录中
datas=[('config.py', '.')],
告知 Pyinstaller 不将 import config
一起打包
excludes=['config'],
修改 .spec
后再执行:
1 |
|
本文将会使用官方提供的 Elastic Stack with Dockers Compose 的方式进行安装 安装内容包含了一个启用了身份验证和网络加密的、三节点的 Elasticsearch 服务器,和一个 Kibana 服务器
本文中采用的操作系统:Ubuntu Server 22.04 LTS
在 Ubuntu 上,通常可使用如下命令直接安装
1 |
|
在其他平台上,可参考 Docker 的官方文档:
Get Docker - Docker Documentation
Install Docker Compose - Docker Documentation
创建一个新的空目录,并放置入.env
和 docker-compose.yml
这两个文件
1 |
|
在第 2 行填入欲使用的 elastic
用户的密码,稍后会在登录时使用
在第 5 行填入欲使用的 kibana_system
用户的密码(这个值仅在内部配置 Kibana 时使用)
在第 8 行填入欲使用的版本号,在本例中,使用的版本号为 8.1.3
如若不希望将 Elasticsearch HTTP API 绑定到 0.0.0.0:9200
,可将第 18 行的值修改为诸如 127.0.0.1:9200
的值
同理,可在第 22 行处修改 Kibana 的相关配置
上述文件编辑完毕后,可以尝试启动这个实例
1 |
|
如需停止上述配置的服务,可使用如下命令(会暂时卸载卷,故数据不会被直接删除,可于下次启动时继续使用)
1 |
|
想要同时删除所有数据,可使用如下命令
1 |
|
若在尝试启动 Docker Compose 时,出现以下提示
1 |
|
可以尝试通过如下方式调整最大内存映射计数来解决
1 |
|
若通过上述步骤配置完毕,均成功启动且无异常,则已开放下述两个端口提供服务:
https://example.com:9200
来访问 Elasticsearch API,该站点使用自签证书http://example.com:5601
访问 Kibana 界面账号及密码:
elastic
前往 Stack Management -> Spaces 创建一个空间
本例中创建的样式如图所示
切换至新建的 Space (方法如下图)并创建一个 Dashboard
创建好后,复制地址栏中形如 /app/dashboard#/view/xxxxx
的这段地址备用
本例中的复制的内容如下所示
/app/dashboards#/view/04d2e130-fc13-11ec-ae61-a383e01a8fec?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))
前往 Stack Management -> Advanced Settings -> Default Route
将上一小节中复制的内容粘贴至此处以设定默认路由地址,填入内容后,记得保存页面设置
如果设置无误,每次打开该 Space 时,即会自动跳转至该 Dashboard
前往 Stack Management -> Role 创建一个角色
设定好 Role name 和 Index privileges(选择能够访问的索引并赋予 Read 权限)
赋予其 Kibana 权限,本例中的设置如下所示
前往 Stack Management -> Users 创建一个用户
本例中设置的用户如图所示
修改 docker-compose.yml
文件,在 Kibana 的 volumes
部分加入如下内容
1 |
|
新建文件 kibana.yml
,并在其中配置如下内容:
1 |
|
修改完配置文件后,重启 Kibana,进入 Dashboard 页面,选择 Share 功能,即可复制 Public URL
该功能在 Chrome 上工作不正常,Firefox 没有问题
因特殊需求,需要在 Win7 和 WinXP 上使用一个由 PyQt5 构建的桌面应用程序。
但较新版本的 Python 早已放弃对 WinXP 以及 Win7 的支持。
在此整理了一套可在该平台上运行的方案。
由于在 pypi 上已经下载不到了,所以提供了各自官方的下载地址。
版本 5.5.1
PyQt - Browse /PyQt5/PyQt-5.5.1 at SourceForge.net
不安装这个,不能正常使用 PyInstaller
版本 220
Download Python for Windows Extensions from SourceForge.net
版本 3.2.1
Release v3.2.1 · pyinstaller/pyinstaller
选择 zip 包下载,下载后使用 pip install PyInstaller-3.2.1.zip
安装
1 |
|
scapy
库:sudo pip3 install scapy
1 |
|
发送端:
1 |
|
接收端:
1 |
|
可见成功伪装成 Google DNS 的地址发送了一个 UDP 报文,并且接收端收到了这个报文。
该功能可能会因 NAT 技术等原因在公网上工作不正确,亦可能直接被网关丢弃