魔改 FileZilla 解决拓竹 3D 打印机的 FTP 问题

我最近为了尝试 3D 打印,买了一台拓竹 A1 Mini 3D 打印机。这台打印机支持 FTP 连接,用户可以使用 FileZilla、WinSCP 等 FTP 客户端上传需要打印的模型文件,以及下载延时摄影录像。 但是我尝试用 FileZilla 连接打印机时,却发现虽然用户名密码都正确,可以完成登录,但无法获取到文件列表: 拓竹官方论坛上也有一些用户报告了这个问题,例如 这个回复 ,以及 这个回复 。 有用户提到了 WinSCP 可以用 ,但我日常使用 Linux,不想专门为了连接打印机的 FTP 服务就切换到 Windows,就研究了一下问题的原因,以及 Linux 下的解决办法。 FTP 协议简介 要理解这个问题,首先要了解 FTP 协议是如何工作的。FTP(File Transfer Protocol)是一种古老的文件传输协议,诞生于 1971 年。它使用多条 TCP 连接来分离控制命令和数据传输: 控制连接:客户端主动连接服务器(一般是 21 端口),建立一条持久的 TCP 连接。所有命令(如登录、切换目录、列出文件)...

在 DN42 中使用 FlapAlerted 抑制 Flapping 的插图

在 DN42 中使用 FlapAlerted 抑制 Flapping

DN42 全称 Decentralized Network 42(42 号去中心网络),是一个大型的 VPN 网络。但是与其它传统 VPN 不同的是,DN42 使用了大量在互联网骨干上应用的技术(例如 BGP),可以很好的模拟一个真实的网络环境。 在真实的互联网中,各个运营商会使用不同厂商的硬件路由器互相交换路由信息,例如思科(Cisco)、瞻博(Juniper)、诺基亚(Nokia)、Arista、华为等。类似的,在 DN42 中,不同参与者也会选择不同的 BGP 软硬件,最常用的是 Bird 和 FRRouting ,但也有使用 Mikrotik、Ubiquiti EdgeRouter 甚至真正的商用路由硬件。 由于大家选择的 BGP 软硬件不同,并且即使使用同一款软件也会用不同的方式配置内网,所以当大家的网络连接在一起,有时候就会出一些奇怪的问题,例如 BGP Flapping。 真实互联网和 DN42 中的 BGP Flapping BGP Flapping 指的是同一条路由的路径在短时间内发生大量变化,一般源于一个网络反复广播、撤销广播这一条路由。...

用 Open5GS 搭建合法的 LTE 网络

蓝天移动(自建 LTE 网络) 系列文章目录: $100,DIY 搭建合法的 LTE 网络 用 Open5GS 搭建合法的 LTE 网络 (当前文章) 在上一篇文章中 ,我用美国的 CBRS 频段和 Magma LTE 核心网软件 搭建了一套合法的 LTE 网络。 关于「合法」:我不是律师或者无线电专家。根据我对相关政策法规的研究,我的整套配置应当是合法的。但如果你按照本文操作后遇到了法律问题,我不负任何责任。 我当时选择 Magma,是因为我买的 CBRS LTE 基站原本用于 Helium Mobile 网络,而 Nova Labs/Helium Mobile 使用的 CBRS 核心网就是 Magma 。这保证了 Magma 一定兼容我手上的基站。但是,从在 Homelab 里自建核心网的角度来考虑,Magma 存在这些问题: Magma 的核心网依赖 Docker 或者 Kubernetes 进行部署,难以用常规的方式(例如 systemd 服务)在容器外部署。而我是 NixOS 用户,希望尽量避免臃肿的 Docker 容器,而是用 systemd 服务管理系统上的服务。...

在内网中免 StosVPN 使用 SideStore

2026 年 5 月 1 日更新: 增加了 @日下部 詩 提供的在整个网络生效的 Nftables 规则。 前言 SideStore 是一款常用的 iOS 应用侧载工具,可以绕过 App Store 安装第三方应用。它的工作原理是用你的 Apple ID 获取免费的苹果开发者证书,给你要安装的应用签名,从而让应用可以在 iOS 设备上正常运行。 然而,苹果为了维护其对 iOS 生态系统的控制,阻止第三方应用商店使用开发者证书大规模地绕过限制,对开发者证书设置了 7 天的过期时间。用户需要定期获取新的开发者证书,重新给应用签名,才能一直使用自己安装的第三方应用。 传统的侧载工具,例如 AltStore,都依赖电脑上的 iTunes 等软件进行重新签名的操作。但 SideStore 与其它侧载工具不同,它只有首次安装时需要电脑辅助。安装完成后,SideStore 可以自己模拟一台安装了 iTunes 的电脑,让 iOS 系统通过虚拟网络与其通信,从而实现无需电脑就能给应用重新签名,甚至安装新的第三方应用的效果。...

从零开始实现 Nix 对数函数库 的插图

从零开始实现 Nix 对数函数库

从零开始实现 Nix 数学库 系列文章目录: 从零开始实现 Nix 三角函数库 从零开始实现 Nix 对数函数库 (当前文章) (题图来自: 维基百科 - 对数 ) 起因 由于一个有点离谱的原因(计算 VPS 间的物理距离来估算网络延迟),我 用 Nix 实现了一个有点离谱的三角函数库 。我把三角函数库 发布到 GitHub 上 后,发现居然有人用!看来我的需求也不算太离谱。 在仓库的 Issues 里, 有用户建议我给这个数学库添加一些指数/对数函数支持 ,例如 exp , ln , pow 和 log 。 因为从零开始实现这些基础函数也挺有趣的,所以我就抽空研究了一下。这四个函数中,有些难度的是 exp 和 ln 。 pow 和 log 都可以用另外两个函数转化出来: log ⁡ n x = ln ⁡ x ln ⁡ n p o w ( x , n ) = x n = exp ⁡ ( n ∗ ln ⁡ x ) \begin{aligned} \log_n x &= \frac{\ln x}{\ln n} \\ pow(x, n) = x^n &= \exp (n * \ln x) \end{aligned} lo g n ​ x p o w ( x , n )...

$100,DIY 搭建合法的 LTE 网络

蓝天移动(自建 LTE 网络) 系列文章目录: $100,DIY 搭建合法的 LTE 网络 (当前文章) 用 Open5GS 搭建合法的 LTE 网络 是的,你没看错,不需要法拉第笼等信号屏蔽措施,只需要大概 100 美元,你就可以在(美国的)家里搭建一个合法的 LTE 网络,可以 24 小时连续发射。 关于「合法」:我不是律师或者无线电专家。根据我对相关政策法规的研究,我的整套配置应当是合法的。但如果你按照本文操作后遇到了法律问题,我不负任何责任。 CBRS 频段:美国的免授权 LTE/5G 频段 自建 LTE 网络的难点不在技术部分,而是在于合法地获取无线电频谱资源。软件方面,早在 2014 年就有了 srsRAN 等基于 SDR(软件定义无线电)的 LTE 发射方案,也有 Magma 、 Open5GS 等开源的核心网软件。 但是在无线电频谱方面,LTE、5G 等移动网络使用的无线电频率都处在授权频段,需要向当地政府的无线电管理机构提出申请,并缴纳昂贵的频段使用费(一般根据覆盖范围和当地人口数)...

用 Nix 编译自定义 Android 内核

前言 我现在使用的手机是 Motorola Edge+ 2023,一台 Android 手机。为了更好的自定义手机的功能,我解锁了手机的 Bootloader,并且获取了 Root 权限,以便安装 LSPosed 以及基于 LSPosed 的各种插件。 我使用的 Root 方案是 KernelSU ,通过修改 Linux 内核,从而允许且只允许指定程序获取 Root 权限。虽然 KernelSU 官方提供了适配大部分手机的 GKI 内核镜像,但我给手机刷了不兼容 GKI 的 LineageOS,所以只能自己编译内核。 由于直接修改内核镜像的难度较大,我们一般是从手机厂商获取以 GPLv2 协议开源的内核源码,按照 KernelSU 的官方教程 进行修改后,再编译成完整的内核。 注:现在有一种新的 Root 方案 APatch ,通过直接修改内核镜像来实现类似 KernelSU 的功能。我没试过 APatch,但如果你不想自己编译内核,可以尝试一下。 由于 KernelSU 使用广泛,有一些开发者编写了 GitHub Actions 的 Workflow,例如 https://github....

使用 Astro.js 重构我的博客

前言 差不多四年半前, 我把博客系统从 Typecho 迁移到了 Hexo 。Hexo 是一款静态网页生成器(Static Site Generator),本身无需连接 MySQL、PostgreSQL 等数据库动态生成网页,而是根据给定的 Markdown 文章文件一次性生成所有的 HTML 网页。相比于 WordPress、Typecho 等动态方案,预先生成静态网页不需要服务器支持 PHP 等动态语言,对服务器的性能压力更低。 但是 Hexo 本身并不新, 它的第一个版本发布于 2013 年 7 月 。当时以 React 为首的单页应用框架刚刚发布(React:2013 年 5 月),Webpack 等现代前端流程必须的框架也还不存在(Webpack:2014 年 2 月),因此 Hexo 理所当然的没有用上这些工具,而是停留在拼接 HTML 字符串的时代。Hexo 常用的几个主题模板系统 EJS,Pug 等都是基于字符串拼接的模板系统。 没有了现代前端流程,就意味着: 我需要手动处理拼接 HTML 的所有细节。每次修改模板都让我想起写 PHP 的美好时光。...

NixOS 系列(五):制作小内存 VPS 的 DD 磁盘镜像 的插图

NixOS 系列(五):制作小内存 VPS 的 DD 磁盘镜像

NixOS 系列文章目录: NixOS 系列(一):我为什么心动了 NixOS 系列(二):基础配置,Nix Flake,和批量部署 NixOS 系列(三):软件打包,从入门到放弃 NixOS 系列(四):“无状态”操作系统 NixOS 系列(五):制作小内存 VPS 的 DD 磁盘镜像 (当前文章) 黑色星期五已经过了,相信有一些读者新买了一些特价的 VPS、云服务器等,并且想在 VPS 上安装 NixOS。但是由于 NixOS 的知名度不如 CentOS、Debian、Ubuntu 等老牌 Linux 发行版,几乎没有 VPS 服务商提供预装 NixOS 的磁盘镜像,只能由用户使用以下方法之一手动安装: 自行挂载 NixOS 的安装 ISO 镜像,然后手动格盘安装。 由于你可以在 NixOS 安装镜像的环境中随意操作 VPS 的硬盘,这种方法自由度最高,可以任意对硬盘进行分区,指定文件系统格式。但是,使用这种方法前,你的主机商需要在以下三项前提中满足任意一项: 主机商直接提供 NixOS 的 ISO 镜像挂载(即使是很老的版本)...

从零开始实现 Nix 三角函数库 的插图

从零开始实现 Nix 三角函数库

从零开始实现 Nix 数学库 系列文章目录: 从零开始实现 Nix 三角函数库 (当前文章) 从零开始实现 Nix 对数函数库 (题图来自: 维基百科 - 三角函数 ) 起因 我想计算我的所有 VPS 节点之间的网络延迟,并把延迟写入 Bird BGP 服务端的配置中,以便让节点之间的数据转发经过延迟最低的路径。但是,我的节点截至今天有 17 个,我不想在节点之间手动两两 Ping 获取延迟。 于是我想了一种方法:标记所有节点所在物理地点的经纬度,根据经纬度计算物理距离,再将距离除以光速的一半即可获得大致的延迟。我随机抽样了几对节点,发现她们之间的路由都比较直,没有严重的绕路现象,此时物理距离就是一个可以满足我要求的近似值。 因为我的节点上用的都是 NixOS,统一使用 Nix 语言管理配置,所以我需要找到一种在 Nix 中计算这个距离的方法。一种常用的根据经纬度算距离的方法是半正矢公式(Haversine Formula),它将地球近似为一个半径为 6371 公里的球体,...