VSCode 在编辑器中显示垂直标尺
我们知道一行代码不宜过长,不同的公司、团队、项目通常有不同的规范。
最常见的行最大字符数的规范比如:
每行字符数最大不得超过 80。
每行字符数最大不得超过 120。
每行建议不超过 80 字符,最大不得超过 120 字符。
……
VSCode 支持设定垂直标尺,即在编辑器中,在指定字符数的位置给你画一条竖线。
例如下面这样,就是分别在 80 字符处和 120 字符处分别花了一条竖线,这样方便我们在写代码的时候控制每行字符数。
设置方法也很简单,我们依次点击 File -> Perferences -> Setting:
然后在上面的搜索栏里搜索 “Editor.rulers”:
点击 “Edit in setting.json”,在里面修改 editor.rulers 字段,像下面这样就是在 80 和 120 字符处显示垂直标尺:
然后保存就 OK 了。
Linux 使用 crontab 设定定时任务
1. crontab 命令的作用Linux 中可以使用 crontab 命令来设定定时任务,例如每小时执行一次某个脚本。
具体来说,Linux 中有一个程序 crond(几乎所有发行版都自带),用于执行计划命令的守护程序。crontab 命令帮助我们快速设定这些任务,实际是修改 crontab 文件,crond 程序会定期检查这些 crontab 文件,执行其中需要执行的命令。
crontab 文件主要存储在三个地方:
/etc/crontab: 是一个文件,存储主要的系统 crontab 文件。
/etc/cron.d/: 是一个目录,也是存储了一些系统 crontab 文件。
/var/spool/cron/: 是一个目录,里面存着各个用户定义的 crontab 文件,这个目录是我们自定义定时任务主要需要关注的。
需要注意的是,crond 的检查间隔是 1 分钟,也就是我们定时任务的执行最小间隔是 1 分钟。如果我们有更小间隔的定时任务需要执行,那么 crontab 命令是无法满足的,可能需要自己写一个专门的守护程序。
2. 如何设定 crontab 定时任务前面说过,我们定义 ...
在 CentOS 上编译 Ceph
本文编译环境为:
硬件架构:x86_64
Linux 版本:CentOS 7.3.1611
Ceph 版本: v14.2.21
-
由于:
Ceph 的依赖过于复杂(且似乎包含很多无效依赖);
官方提供的编译过程可能会遭遇大量问题;
在不同的硬件架构和系统版本上编译不同版本的 Ceph,编译过程中遭遇的错误可能会有很大不同。
所以 此文章仅对 x86_64 上的 CentOS 7.3.1611 与 Ceph 14.2.21 负责!
-
另外有几点需要注意:
Ceph 的编译全过程耗时可能很长,具体取决你的机器配置。
Ceph 的依赖安装和编译等操作需要大量的磁盘空间,建议给 / 目录预留 32G 以上空间。
Ceph 的编译过程会涉及到大量的网络下载,请自行解决相关的网络问题(例如 使用境外服务器编译、配置代理 等)。
Ceph 的整个编译过程中有多处需要 root 权限,但请使用 root 用户直接操作!请使用 root 用户直接操作!请使用 root 用户直接操作!不要在普通用户上通过 sudo 或 sudo su 来操作,否则可能会有各种奇奇怪怪的问题而且很难解决 ...
JuiceFS 的技术架构与存储文件的方式
1. JuiceFS 是什么1.1. 简介JuiceFS 是一款面向云原生设计的分布式文件系统。
JuiceFS 是开源的,开源协议为 Apache 2.0,开源在 GitHub 上。
JuiceFS 提供完备的 POSIX 兼容性,可以将几乎所有的对象存储接入本地作为几乎无限容量的本地磁盘使用。
JuiceFS 也可以同时挂载到不同平台、不同地区的不同主机上进行读写。
JuiceFS 采用「数据」与「元数据」分离存储的架构,从而实现文件系统的分布式设计。文件数据本身会被切分并保存在对象存储(例如 Amazon S3、阿里云 OSS 等),而元数据则可以保存在多种数据库中(例如 Redis、MySQL、TiKV、SQLite 等),用户可以根据场景与性能要求进行选择。
JuiceFS 提供了丰富的 API,适用于各种类型数据的管理、分析、归档、备份。
JuiceFS 可以在不修改代码的前提下无缝对接大数据、机器学习、人工智能等应用平台,提供海量、弹性、低价的高性能存储。
JuiceFS 的运维人员无需为可用性、灾难恢复、监控、扩容等工作烦恼,专注于业务开发,提升研发效率。JuiceFS ...
VMware 上 Linux 虚拟机的磁盘扩容
本文适用 VMware 虚拟机,系统为 CentOS/RHEL 系或与之兼容的发行版,我的操作系统为 AlmaLinux 8.7。
下面各项输出中所有包含 “almalinux” 字样的内容,均可替换为你的系统名字。比如你的系统是 CentOS,那么把我这里的输出信息中的 “almalinux” 都替换成 “centos” 就是你应该有的输出。
1. 扩容过程大纲为了说明的清晰一些,我这里将 VMware 内 Linux 虚拟机的扩容过程分为了以下几步:
先是在 VMware 上的操作:
关闭并备份虚拟机。
删除虚拟机的全部快照。
扩容虚拟机。
启动虚拟机。
然后是在 Linux 虚拟机内的操作:
查看当前的磁盘分区信息与挂载信息。
给磁盘 /dev/sda 增加一个分区。
设置新分区格式。
写入分区表。
格式化新分区。
进入 lvm 合并磁盘。
增加 xfs 磁盘空间。
2. VMware 上的操作VMware 上的操作很简单,我们按照前文说的步骤进行就可以:
关闭并备份虚拟机。备份主要是避免把虚拟机搞坏了,毕竟磁盘操作挺危险的,就把虚拟机文件夹拷贝一份就行。
删除虚拟机 ...
配置 Windows 为 SSH 跳板机
1. 场景本文以 Windows 10 为例,10/11 均适用。
我在 Windows 上装了 VMware,里面运行着一个 Linux 虚拟机。
我有另外一台内网上的机器,想通过 SSH 登录到这个 Linux 虚拟机上开发。
由于某些原因(我这里是公司内网分配 IP 需要一些这个场景下无法完成的验证),虚拟机的桥接模式设定不适用,无法给 Linux 虚拟机一个单独的内网 IP 地址,也就无法在其他机器上通过内网直接登录此虚拟机。
但是 Windows 宿主机是有内网的 IP 的,所以我们可以先 SSH 登录到此 Windows 宿主机,再以 Windwos 宿主机作为跳板,登录到虚拟机(Windows 宿主机与虚拟机也组成一个内网)。
此方案同样适用从内网某机器以 Windows 作为跳板机登录宿主机所在其他内网的其他机器。
2. 安装 OpenSSH 服务器Windows 里 OpenSSH 客户端通常是自带的,但是 OpenSSH 服务器需要手动安装。
Step 1:我们打开 Windows 设置 -> 应用 -> 应用和功能,选择“可选功能”,如下:
Step ...
JuiceFS 编译与安装
本文不介绍 JuiceFS ,不了解的朋友可以看一下官网,或我写过的 JuiceFS 单机模式初体验。
1. 编译目标如果你有使用过 JuiceFS 或看过相关文档,就会知道 JuiceFS 实际上只有一个二进制文件,用起来相当简单。
所以我们的编译目标也很简单了,就是编译得到一个二进制可执行文件。
2. 下载 JuiceFS 源码我这里还是先创建一个空文件夹,并在这里面进行后续操作(个人习惯):
1mkdir juicefs-compile && cd juicefs-compile
然后克隆 JuiceFS 源码:
1git clone https://github.com/juicedata/juicefs.git
3. 安装依赖JuiceFS 的依赖主要有两个:Golang 1.18+ 和 GCC 5.4+,如果你的环境里已经有了这两个依赖,则可以跳过这小节。
可以使用 go version 和 gcc -v 两个命令检查以下。
3.1. 简单安装的方式最简单的安装方式就是 yum 直接安装,我这里 yum 内提供的版本是 Golang 1.18.10 和 G ...
(CentOS/RedHat 系)Linux 安装最新版 GCC
1. 准备因为编译 GCC 源码的时候是需要 GCC 的,并且支持 C++ 11,所以我们得确保系统里当前是存在 GCC 的,如果没有的话,先安装一个:
1sudo yum install gcc-c++
yum 中提供的 GCC 版本是 8.5.0,是满足我们编译最新版 GCC 源码的要求的。
也就是说,我们所谓的安装最新版 GCC,其实是升级现有的 GCC 到最新版。
另外 GCC 的编译耗时可能非常长(也取决你的配置),如果你是着急用的话,可能不太行。
2. 下载最新版 GCChttps://ftp.gnu.org/gnu/gcc/ 中可以看到全部的 GCC 版本,找到你需要的版本的文件夹,进入,里面名字形如 gcc-12.2.0.tar.gz 就是我们需要的(一般也是 Size 最大的那个)。
我这里是找到最新版 GCC,即 12.2.0。
3. 编译安装我一般喜欢在一个干净的文件夹内做一件事情(个人习惯):
1mkdir ~/gcc-install && cd ~/gcc-install
下面进入正题。
下载 tar 包并解压:
123wget https: ...
(CentOS/RedHat 系)Linux 安装最新版 Golang
在 https://go.dev/dl/ 页面可以看到 Golang 目前的最新版本,编辑此文章时是 1.20.3。
我们找到所需要的版本,我这里的环境是 x86_64 架构上的 AlmaLinux,所以需要的版本是:
go1.20.3.linux-amd64.tar.gz
如果你和我环境类似,也是 x86_64 架构上的红帽系 Linux,那么你应该选择和我一样的版本(最多版本号不一样。
我个人比较喜欢在一个干净的文件夹内做一件事,所以:
1mkdir ~/golang_install && cd ~/golang_install
下载我们需要的 Golang 版本 tar 包:
1wget https://go.dev/dl/go1.20.3.linux-amd64.tar.gz
删除机器上现有的 Golang,并将刚刚的 tar 包解压到 /usr/local/go/:
12rm -rf /usr/local/gotar -C /usr/local -xzf go1.20.3.linux-amd64.tar.gz
配置环境变量,打开 /etc/profile:
1 ...
JuiceFS 单机模式初体验
本文不涉及分布式系统,仅在单机模式下简单体验 JuiceFS。
1. 什么是 JuiceFS ?JuiceFS 是一款面向云原生设计的高性能分布式文件系统。
JuiceFS 是跨平台的,可以在几乎所有主流架构上的各种操作系统中运行,包括且不限于 Linux、macOS、Windows。
JuiceFS 采用「数据」与「元数据」分离存储的架构,从而实现文件系统的分布式设计。
JuiceFS 中文件数据本身会被切分保存在对象存储(例如 Amazon S3),而元数据则可以保存在 Redis、MySQL、TiKV、SQLite 等多种数据库中。
JuiceFS 在 GitHub 上开源,开源协议为 Apache 2.0。
此小节介绍内容节选自 JucieFS 官方文档。
2. 安装 JuiceFS 客户端JuiceFS 客户端只有一个二进制文件,我们可以下载官方预编译的版本直接使用,也可以用源代码手动编译。
我这里直接使用官方预编译的二进制文件。如果你想自己编译,可以看 JuiceFS 编译与安装,最终都是得到一个二进制文件。
本文在 x86_64 架构上的 AlmaLinux 8.7 中进 ...