解决 OpenWrt 无法在内网中开启 NAT-PMP 的问题

最近在路由器上刷了 OpenWrt,但是 OpenWrt 默认没有集成 UPnP 和 NAT-PMP 功能。我手动开启时遇到了一些问题,在此记录以帮助可能遇到同样问题的朋友。

开启 UPnP 和 NAT-PMP

首先说明一下我开启 UPnP 和 NAT-PMP 的步骤。

阅读全文

安装 Ubuntu Server 时配置磁盘 RAID

有很多 IDC 提供的 VPS 分系统盘和数据盘。这种方式可以使重装系统时不影响一部分数据。但是,这么做也会造成可利用的空间减少。如果你不需要经常在保留数据的前提下重装系统,可以采用 RAID 方式将硬盘空间组合起来,还能提高速度。

需要注意的是,操作时要在系统盘和数据盘上创建 RAID,然后安装 Ubuntu Server。此操作会毁掉所有已有数据。如有重要数据,请提前备份。

阅读全文

使用 iPXE 和 netboot.xyz 重装 VPS 系统

如果你购买一些小厂商的 VPS,你可能会觉得这些厂商自带系统不好用。哪怕是国内大厂,也经常有瞎 JB 改系统,影响功能的情况。有些厂商允许你挂载 ISO 自己安装系统,而有些厂商则不行。下面我将介绍使用 iPXEnetboot.xyz 引导 Linux 安装程序(本文以 Ubuntu Server 为例),自行安装系统。

阅读全文

用 GitHub Actions 和 SSH 部署静态网站

前言

一直以来,我都用 Caddy 1 的 git 插件,配合 GitHub 上的 Webhook 部署静态网站。简单说就是,把 Hexo 或者 VuePress 生成的网页推到另一个分支上,用 Webhook 通知插件,然后插件拉取变更。由于 Caddy 1 已经停止维护,我想升级到 Caddy 2,但是 Caddy 2 没有官方 git 插件,第三方那个还要自己编译,我还想用 Docker 跑,也挺麻烦的。

阅读全文

部署MongoDB的过程记录

此篇文章记录我部署 MongoDB 的过程,以及我遇到的一些问题,方便以后查阅,但是仅涉及最基础的内容,价值不高,我建议你不要浪费时间阅读。

背景

最近开始和别的实验室合作研究,由对方提供数据。对方说传输数据最简单的方法就是,我建一个 MongoDB 实例,然后他用 db.copyDatabase() 把数据复制过来。

阅读全文

C#中编译期可以检测到的类型转换失败

严格来说,这算是 C# 基础知识的一部分。不知是太久远我记不清了,还是这部分本来就没注意,最近发现了,不算坑,在这里写一下。

描述

请看下面这段代码:

阅读全文

.NET程序生成OpenAPI客户端

当使用 ASP.NET Core 实现 Web API 服务时,可以用 Swagger 生成 openapi.json 文件及对应文档。

阅读全文

用 C# 与 .NET 中的内插字符串组装消息

背景

OneBot 及其消息格式

OneBot 标准是从原酷 Q 平台的 CQHTTP 插件接口修改而来的通用聊天机器人应用接口标准。

阅读全文

给Chromium Edge设置任意缩放

警告:本文包含直接修改配置文件的危险操作,请谨慎模仿。

阅读全文

String.Create的局限性

String.Create 介绍

.NET Core 2.1 和 .NET Standard 2.1 新增了 Span<T>Memory<T> 等非常方便的操作内存的方式,同时增加了如 String.Create() 这种高效的创建字符串的方法。最近在写 RCNB 终于得以一试,结果发现了这个方法的许多局限之处。

阅读全文