0%

omv 系统会单独占用一块磁盘,所以为了更有效地利用手头的存储资源,计划将 omv 安装到旧 u 盘上。

试验发现,U 盘启动频繁连不上无线网;有线网未测试。

先放弃 PVE,专注 OMV 的使用。

避免去理解、试验 LVM 逻辑卷等概念

初步规划:

  • 1t 磁盘用于家庭相册、个人文件等;500g 磁盘用于家庭娱乐、安装包等
  • 使用 rsync 服务同步到 1t 磁盘或移动硬盘上(二选一待定),暂时不考虑使用 RAID
  • 折腾磁盘休眠
  • 安装 Docker 后,试用 nextcloud \ syncthing
  • 手机软件 FolderSync \ PhotoSync \ Syncthing \ PhotoPrism
阅读全文 »

介绍分流场景整个通信过程,并重点叙述公钥/密钥 以及 Tunnel IP Addresses 用在了哪个环节?

Gemini 总结 WireGuard

在分流场景下,整个通信过程就像是一场“多层加密的跨城速递”。为了清晰说明公钥/私钥和 Tunnel IP 的作用,我们将整个过程拆解为四个关键动作。

场景设定

  • 家庭局域网 (LAN): 192.168.1.0/24(目标 NAS 为 192.168.1.50
  • 服务端 (OpenWrt): 私钥 $S_{priv}$,公钥 $S_{pub}$,Tunnel IP 10.0.0.1
  • 客户端 (手机): 私钥 $C_{priv}$,公钥 $C_{pub}$,Tunnel IP 10.0.0.2
  • 分流配置 (AllowedIPs): 10.0.0.0/24, 192.168.1.0/24
阅读全文 »

之前一直用华硕的路由器,小米原厂固件的缺点:

  1. DDNS 支持有限,能够 SSH 之后,安装 ddns-go 实现
  2. 没有 WOL ,通过安装 lucky 可以实现,但这款工具后续不再开源
  3. DHCP静态IP分配,难用,设计交互的人脑残
  4. 看不到流量详情,也无法针对特定设备限速等
  5. 网页和手机 APP 功能不一致,比如“家人上网保护”
  6. 不支持安装第三方软件,比如 Windows 激活工具,理论上 SSH 之后,就是开放的了

刷机前的几个问题:

  1. 留后路:备份原固件,以便刷机后不好用回退。
  2. ax3000t 跑 Docker 是否吃力?跑 Docker 的场景有哪些吗? 硬件没能力,也没必要。
  3. 花生壳的免费域名怎么获取?是否需要每年更换?
  4. 用 ipv6 的风险?防火墙怎么配?只用 ipv6 是否可行?
  5. 不死 uboot 是什么? 和 OpenWrt U-Boot 有关吗? 使用原厂 uboot 即可。
  6. 先看看 openwrt 能做什么?虚拟机走起
阅读全文 »

bootloader

引导程序(英语:bootloader)是指在电脑系统中负责初始化周边设备、启动操作系统的程序。

操作系统在硬盘上,主板上电到读取硬盘之间还有一段路要走。

  • 第一阶段引导加载程序的例子包括BIOS、UEFI、coreboot、Libreboot和Das U-Boot。
  • 第二阶段引导加载程序,如GNU GRUB、rEFInd、Windows Boot Manager、Syslinux和NTLDR

在个人电脑 PC 上

BIOS(英文:Basic Input/Output System),即基本输入输出系统, is a type of firmware used to ……

The BIOS in older PCs(个人电脑) initializes and tests the system hardware components, and loads a boot loader from a mass storage device which then initializes a kernel.

统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写 UEFI) 是 PC BIOS 的继任者。

In computing, [firmware][firmware ] is software that provides low-level control of computing device hardware.

在嵌入式设备上:

Das U-Boot is an open-source boot loader used in embedded devices

  • to perform various low-level hardware initialization tasks
  • and boot the device’s operating system kernel.

U-Boot 既是第一阶段引导加载程序,也是第二阶段引导加载程序。

阅读全文 »

Qt Multimedia

录音

使用 普通用户 登录桌面环境,使用 sudo your-recorder 是无法录音的。

涉及声卡权限的归属。

播放

QSoundEffect 不依赖 gstreamer/ffmpeg 后端,但 QMediaPlayer 依赖。

Qt Multimedia 为媒体播放、录制和设备管理提供了用户友好的跨平台 API。
核心 API 的实现,包括 QMediaDevices, QAudioDevice, QSoundEffect, QAudioSinkQAudioSource ,都集成在Qt Multimedia 的主库中,无需额外的库。
其他Qt Multimedia API 使用称为媒体后端的插件库实现。
主媒体后端基于FFmpeg 构建,可确保无缝跨平台功能,在除 WebAssembly 和嵌入式 Linux/Boot2Qt 之外的所有平台上都是默认的。

以下 ABI 冲突问题,可以使用 QSoundEffect 回避! 不使用 QMediaPlayer ,如果你的业务场景允许的话。

阅读全文 »

Qt6 和 PySide6

能够安装什么版本的 Qt6 / PySide6 ,和系统的 glibc 版本有关!

比如 glibc 2.31 最高只能安装 Qt6.4 ,最高只能安装 PySide6==6.8.0.2

PySide6 need glibc 2.39 since 6.8.1 on aarch64.

检查当前 ARM 系统 GLIBC 版本:ldd --version

Python The Wheel Binary Package Format File name convention

The wheel filename is {distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl.

在 PySide6 6.8.0.26.8.1 的文件列表中,可以看到 glic 的版本要求。

1
2
3
4
5
6
7
8
9
10
11
PySide6-6.8.0.2-cp39-abi3-manylinux_2_31_aarch64.whl (554.3 kB view details)
Uploaded Oct 24, 2024 CPython 3.9+manylinux: glibc 2.31+ ARM64

PySide6-6.8.0.2-cp39-abi3-manylinux_2_28_x86_64.whl (554.2 kB view details)
Uploaded Oct 24, 2024 CPython 3.9+manylinux: glibc 2.28+ x86-64

PySide6-6.8.1-cp39-abi3-manylinux_2_39_aarch64.whl (532.7 kB view details)
Uploaded Dec 2, 2024 CPython 3.9+manylinux: glibc 2.39+ ARM64

PySide6-6.8.1-cp39-abi3-manylinux_2_28_x86_64.whl (532.7 kB view details)
Uploaded Dec 2, 2024 CPython 3.9+manylinux: glibc 2.28+ x86-64
阅读全文 »

目标平台:国产化平台 cpu & 操作系统

实现离线部署、独立部署。

现状

Qt/C++ 技术栈,目前发现的问题:

  • Qt 5.12 构建、运行业务产品可能存在问题;部分项目编译失败,存在 zlib_xxxx 错误
  • Q5.13 缺失多媒体插件库,无法播放声音
  • Qt5.15 同样存在依赖问题;

换 Qt 版本可能要折腾产品线同时升级;也需要联网的国产化主机。

Python 环境,目前的问题:

  • 只使用标准库能力有限
  • 引入依赖,需要联网的国产化主机
  • 和业务产品的窗口/页面风格 一致性问题

Node.js 路线,

  • 不熟悉语法,需要学习
  • 浏览器版本低、国产浏览器对新语法特性的支持有限,升级浏览器道阻且长

既然都面临环境搭建的问题,考虑到做大语言模型方向,还是 Python 吧

在银河麒麟v10 上能够与 Qt 快速集成的中文 TTS 离线引擎有哪些?

在银河麒麟v10 上能够与 Qt QTextToSpeech 快速集成的中文 TTS 离线引擎有哪些?

  • 在 Windows 10 上通过 QTextToSpeech 使用微软 SAPI 引擎 能够快速实现原型。

放弃 speech-dispatcher

核心局限性:

原生 QTextToSpeech 在 Linux 下的默认后端是 speech-dispatcher(Linux 通用语音调度框架),而该框架默认缺乏优质的中文离线语音模型。

直接使用 QTextToSpeech 难以实现流畅的中文离线朗读,大多只能支持英文或机械感极强的中文(甚至无法识别中文),需要额外配置中文 TTS 后端引擎才能满足需求。

1
2
sudo apt install espeak-ng espeak-ng-data speech-dispatcher espeak-ng espeak-ng-data libespeak-ng1
espeak-ng -vzh "你好,我是Linux系统"

飞桨

注意事项:

  • PaddleSpeech 暂不支持 PaddlePaddle 3.x 版本
  • 换清华镜像源加速下载 b
  • 不可以同时安装 paddlepaddle(CPU 版)和 paddlepaddle-gpu(GPU 版)
阅读全文 »

Wireshark 很强大,比你想象中的还要厉害。

强烈推荐《Wireshark网络分析就这么简单》和《Wireshark网络分析的艺术》,作者林沛满。

以下内容并非读书笔记。书是两年前读的了。

抓包过滤字节

tcpdump 和 Wireshark 过滤字节的语法存在差异:

1
2
3
4
5
# capture filter / 含 8 字节头部 
tcpdump udp[36:2]=0xb301
# Wireshark display filter
udp.payload[28:2]== b301
#udp.payload[28:2]== 0xb301 # error

多思考一步,这个差异从哪来的?

  • 命令行使用 tcpdump 是在抓取报文时过滤的;
  • 图形界面使用 Wireshark 存在“捕获过滤器”和“显示过滤器”,
  • 使用 Wireshark 查看已捕获的报文时只用到后者;

两者捕获报文时的过滤语法其实一致: man pcap-filter

Wireshark “显示过滤器”的语法: man wireshark-filter

阅读全文 »

PostGIS 是一个开源程序,它为对象-关系型数据库 PostgreSQL 提供了存储空间地理数据的支持,

使 PostgreSQL 成为了一个空间数据库,能够进行空间数据管理、数量测量与几何拓扑分析。

下载 PostgreSQL ,选择 历史版本 15.13

安装过程中密码使用 123456 ,端口使用默认端口 5432

如果有互联网可以在安装结束时使用 Stack Builder 安装 PostGIS3.5 ;

如果是在没有互联网的环境可以下载 单独的安装包 自行安装。

前者下载的文件和独立下载的 postgis-bundle-pg15x64-setup-3.5.3-2.exe 为同一文件,MD5 检验码相同。

使用

安装完毕后,根据 使用手册 我们需要在数据库中执行 CREATE EXTENSION postgis; 启用插件。