Fioncat Blog

「一个忠实的 Rust & ArchLinux & Neovim 信徒」

在服务器外申请免费的Let's Encrypt证书

Apply a free certificate outside the server

Let’s Encrypt是一个免费的证书颁发机构,它让我们可以零成本搭建一个HTTPS站点。 要申请一个证书,我们需要一个域名。Let’s Encrypt只要验证我们有这个域名的操作权限,就能为我们颁发证书。 碎碎念:Let’s Encrypt只验证域名的操作权,严格意义不验证域名的所有权。因此你的域名如果被黑客黑了,他同样可以用这个域名申请证书。 因此Let’s Encr...

Linux 平铺窗口管理 Hyprland 简易入门

Linux Tilling Window Manager Hyprland Simple Guide

在使用了多年KDE之后,我终究还是把自己的开发机桌面环境切换到了平铺式。作为一个VIM老手,我一直坚信能用键盘的地方就尽量不用鼠标。平铺模式从很多角度来说都非常符合我的xp,只能说相见恨晚。 我从DE切换到WM的过程并不艰辛,但毕竟也是一个折腾的过程。因此留下这篇博文权当一个记录。 为什么是平铺? 我们平时用的最多的桌面环境,诸如Windows、MacOS以及大部分Linux桌...

Rust错误处理: anyhow和thiserror的使用

Rust error handling: The usage of anyhow and thiserror

Rust的错误处理是我目前用过的所有语言中最优雅的,它提供了很多语法糖能让我们写出高效的错误处理代码。 我不喜欢Java、Python等语言的try catch方式,不仅因为它会对代码造成很多侵入,而且容易导致用户忽略很多重要的错误(无脑throw),增加对错误处理精细化管控的成本。 同样不喜欢Go的if err != nil,因为你的Go代码中到处都是它的身影。 Rust的错误处理基...

Rust: 理解Cow智能指针

Rust: Understand the Cow smart pointer

Cow并没有像Box, Rc这样出现在The Rust Book中,但它是个同样重要的智能指针。阅读源码,你会发现很多追求高效的Rust项目都大量使用了Cow。今天我们就来简单看一下Cow的用法以及应用场景。 为什么需要Cow Cow的全称是Copy On Write,即写时复制,它即能够持有引用也可以持有对象本身,并且仅在需要的时候进行clone,可以减少很多没有必要的内存分配和clo...

ArchLinux简明安装指南

让ArchLinux成为你的日常系统吧!

最终成品图。仅供参考,以实物为准;) ArchLinux是很少见的连安装都让我受益匪浅的操作系统,她作为我的开发机主力系统,已经从很多层面上赢得了我的青睐。 ArchLinux的安装经常劝退了不少初学者,事实上这个过程能让你对你自己的系统有更加全面的理解。但是即使是我这种ArchLinux老手,在一段时间之后,也会忘记ArchLinux的一些安装步骤。所以记录了这个文档,以快速复盘安...

Harbor单实例安装

Harbor是一个开源成熟的Registry项目。很适合用来搭建私有化容器镜像仓库。下面列出单节点harbor的搭建步骤。 本教程中的域名和TLS证书都是自签的,因此涉及到认证和DNS的配置,在正式环境中,域名和证书如果已经提前准备好了,可以跳过一些自签和配置安全访问的步骤,请根据实际情况操作。 安装Docker 安装Docker的方法在不同操作系统是不一样的,请参考:Install ...

ArchLinux 安装VMWare并模拟Windows 11

在QQ已经推出基于electron的QQ For Linux之后,微信仍然不为所动。由于我日常工作开发都是在ArchLinux下完成的,而工作又需要用到企业微信这个软件。如何在ArchLinux下使用微信变成了困扰我很久的问题。 尝试过qq.weixin.work.deepin这种基于wine的方案,但是遇到过包括图形bug、作者不再维护等问题。 微信这种软件还是在Windows或Mac...

Containerd Overlayfs 文件系统损坏导致Pod无法启动

首先,在描述问题之前,我们来看下containerd镜像文件系统组织。 Overlayfs介绍 overlayfs是containerd默认使用的镜像文件系统。 overlayfs是一种联合文件系统,它可以将两个文件系统合并为一个文件系统,其中两个文件系统包括: upperdir:上层文件系统,可写。 lowerdir:下层文件系统,只读。 overlayfs的读写规则...

Kubernetes 容器网络概念

Kubernetes网络模型定义了一个“扁平”的网络,即: 每个Pod都有一个独立的IP地址 在没有NAT的情况下,每个节点上面的Pod可以跟所有其他节点的Pod通信。 这是一个清晰的,向后兼容的模型,从端口分配、命名、服务发现、负载均衡、应用配置和迁移的角度来说,Pod更像一个独立的虚拟机或物理节点。同时可以使用网络策略来定义网络分段,以限制这些基本网络功能的流量。 在这...

Kubernetes IPVS 模式复用TCP连接问题

背景 某个客户在Kubernetes中部署了大规模的业务,因此选用IPVS作为kube-proxy的负载均衡转发模式。以追求更高的转发性能和更新规则的速度。 但是,IPVS有一个存在了很久的连接重用问题,当客户发布服务,因为存在大量TCP短连接,客户端出现了No route to host报错,业务服务出现故障。 这是一个存在已久的issue:kubernetes#81775。我们今天...