跳到主要内容

115 篇博文 含有标签「开发工具与环境」

开发工具和环境配置相关文章

查看所有标签

如何进行版本控制

· 阅读需 2 分钟
素明诚
Full stack development

语义化版本控制(SemVer)

语义化版本控制(Semantic Versioning,简称 SemVer)提供了一套明确的规则来分配和增加版本号,格式遵循 MAJOR.MINOR.PATCH 的模式,例如 2.5.3,其中

  • MAJOR 引入了不向后兼容的重大变更。
  • MINOR 添加了新功能,但向后兼容。
  • PATCH 进行了向后兼容的缺陷修复。

以微信版本号示例

假设微信当前的版本号为 7.0.0

  • 主版本(MAJOR)更新至 8.0.0
    假如微信推出了一次重大更新,彻底改变了用户界面和用户体验,同时不再支持旧版插件。这样的改变就需要将主版本号提升,因为它导致了向下不兼容。
  • 次版本(MINOR)更新至 7.1.0
    如果微信增加了视频会议等新功能,而这些新增功能不影响旧版本功能的使用,也不破坏现有 API 的兼容性,那么就应当提升次版本号,以标识这是一次功能性的扩展。
  • 修订版本(PATCH)更新至 7.0.1
    针对微信修复了某个特定的 bug,比如修正了消息同步的问题,并且这个修复不影响任何现有功能或 API,那么就适合提升修订版本号,表示这是一次小修小补。

注意事项

  • 一致性 保持版本命名的一致性至关重要。团队应该遵循既定的规则来分配版本号,以确保每个版本号都能准确反映软件的状态。
  • 预发布和构建元数据 在某些情况下,可能需要发布候选版本(如 2.5.3-rc.1)或添加构建元数据(如 2.5.3+20210916)。这些额外的标识符可以提供更多关于版本特性或构建信息的细节,但它们应该在不影响主要版本号排序的前提下使用。

如果您喜欢这篇文章,不妨给它点个赞并收藏,感谢您的支持!

htop 界面功能详解

· 阅读需 3 分钟
素明诚
Full stack development

Tabby Terminal

这是我的当前终端界面,我将进行详细介绍

ea18b847525d417058fa3e41cd1f95a1### 顶部区域,状态

CPU 使用条:每个 CPU 核心对应一个使用条,显示 CPU 的使用情况不同的颜色表示不同类型的 CPU 使用,如用户空间、内核空间等

内存 (Mem) 使用条:显示物理内存(RAM)的总使用情况颜色通常区分了用于缓存的内存和实际使用的内存,不同版本可能颜色不同

  • 绿色:表示正在使用的内存(Resident Memory),即分配给进程并且目前位于 RAM 中的内存。
  • 蓝色:表示缓冲区(Buffers),由内核用来缓存文件系统的元数据和跟踪磁盘块等信息,以加速访问磁盘。
  • 黄色/橙色:表示缓存(Cache),由操作系统用来存储临时文件以快速读取。这部分内存可以由操作系统在需要时回收,用于其他更重要的任务。
  • 红色:表示内存中的页面(通常是内容)已经被标记为需要写回到磁盘的交换空间。
  • 灰色:代表内核栈,用于内核操作的内存空间。

交换 (Swp) 使用条:显示交换分区(swap space)的使用情况交换空间是当物理内存不足时,用作内存的一个硬盘空间

中间区域,进程列表

PID:进程的唯一标识符

USER:运行该进程的用户

PRI:进程的优先级

NI:进程的 nice 值,影响其优先级

VIRT:进程使用的虚拟内存总量

RES:进程使用的、未被交换出去的物理内存大小

SHR:进程使用的共享内存大小

S:进程的状态(例如 S 代表 sleeping,R 代表 running)

CPU%:进程使用的 CPU 百分比

MEM%:进程使用的物理内存百分比

TIME+:进程自启动以来的总 CPU 时间

Command:启动进程的命令

底部区域,快捷功能

F1 Help:显示帮助界面

F2 Setup:进入设置界面,可以配置 htop 的外观和行为

F3 Search:搜索进程

F4 Filter:过滤进程列表

F5 Tree:以树状结构显示进程

F6 SortBy:选择排序方式

F7 Nice -:降低进程的 nice 值(优先级)

F8 Nice +:提高进程的 nice 值

F9 Kill:杀死进程

F10 Quit:退出 htop

右上角,

Tasks:系统中的总任务数,也就是进程数

Load average:系统在过去 1 分钟、5 分钟和 15 分钟的平均负载

Uptime:系统运行时间

如果您喜欢这篇文章,不妨给它点个赞并收藏,这对我来说意义非凡!感谢您的支持!

修改 PowerShell 执行策略

· 阅读需 1 分钟
素明诚
Full stack development

PowerShell 的执行策略帮助保护您的计算机不被恶意脚本执行,但同时它也可能阻止了一些合法脚本的执行。为了解决这个问题,您需要更改 PowerShell 的执行策略。

执行命令

  1. 打开 PowerShell 作为管理员(搜索 PowerShell,右键点击,选择“以管理员身份运行”)。
  2. 执行上述任一 Set-ExecutionPolicy 命令。
  3. 如果系统提示确认,输入 Y 并按回车键以确认更改。

临时更改执行策略

如果您只是想临时更改执行策略以激活虚拟环境,可以使用以下命令

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

永久更改执行策略

如果您想永久更改执行策略,可以使用以下命令

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

云服务器 Ubuntu 如何访问 GitHub

· 阅读需 1 分钟
素明诚
Full stack development

打开项目地址,你可以按照项目 markdown 进行操作

https://github.com/521xueweihan/GitHub520### 或者,直接复制它更新的 hosts

1. 备份当前文件

sudo cp /etc/hosts /etc/hosts.backup

2. 编辑 hosts 文件

sudo nano /etc/hosts

将从 GitHub520 项目页面复制的 hosts 文件内容粘贴到本地的 /etc/hosts 文件中。确保不要删除或覆盖文件中已有的内容,特别是关于 localhost 的配置。

3. 保存后退出

重启计算机或者 sudo systemctl restart NetworkManager

重新 clone 项目

73563c97d518edee667c3750f4d55d27

Git 放弃所有未跟踪未进行管理的文件

· 阅读需 1 分钟
素明诚
Full stack development

公司前端项目进行文件结构上的大调整,导致有巨多 node_modules 里面的文件没有被跟踪,所以就要额外的去清理,否则连文件都无法提交,除非进入到你要提交文件的目录下,才可以正常的提交。所以就要删除这些未跟踪的文件。

查看哪些文件要被删除

git clean -n

删除未跟踪的文件

git clean -f

如果还包括未跟踪的目录,请使用

git clean -fd

批量 clone GitHub 仓库

· 阅读需 1 分钟
素明诚
Full stack development

获取仓库列表,保存在当前目录下

curl https://api.github.com/users/替换为你的用户名/repos?per_page=100 > repos.json

编写 python 脚本

import json
import subprocess

# 加载仓库列表
with open('repos.json', 'r', encoding='utf-8') as file:
repos = json.load(file)

# 遍历每个仓库
for repo in repos:
# 获取仓库的克隆URL
clone_url = repo['clone_url']
# 执行克隆操作
print(f"Cloning {clone_url}...")
subprocess.run(['git', 'clone', clone_url])

python http://xx.py 运行这个脚本,clone 所有仓库

Nginx 配置中 root 和 alias 指令的区别

· 阅读需 4 分钟
素明诚
Full stack development

两种指令的配置区别

假设您的网站主页文件存放在 /var/www/sumingcheng 目录下,而管理系统的文件存放在 /var/www/sumingcheng-admin 目录下。

使用 root 指令配置主页

对于网站的主页(sumingcheng.cn),我们使用 root 指令。这意味着所有到根 URL 的请求都会映射到 /var/www/sumingcheng 目录。

server {
listen 80;
server_name sumingcheng.cn;

# 配置主页
location / {
root /var/www/sumingcheng;
index index.html index.htm;
}
}

在这个配置中,当用户访问 http://sumingcheng.cn 时,Nginx 将会从 /var/www/sumingcheng/index.html 加载主页。

使用 alias 指令配置管理系统

对于管理系统(sumingcheng.cn/admin),使用 alias 指令。这意味着所有到 /admin URL 的请求都会映射到 /var/www/sumingcheng-admin 目录。

server {
listen 80;
server_name sumingcheng.cn;

# 配置主页
location / {
root /var/www/sumingcheng;
index index.html index.htm;
}

# 配置管理系统
location /admin/ {
alias /var/www/sumingcheng-admin/;
index index.html index.htm;
}

# 其他配置...
}

在这个配置中,当用户访问 http://sumingcheng.cn/admin 时,Nginx 将会从 /var/www/sumingcheng-admin/index.html 加载管理系统的页面。

为什么不推荐使用 root 配置 admin 呢?

使用 root 配置 admin 路由是可以的,但这在某些情况下可能会导致路径解析问题,特别是当子目录的物理路径与 URL 路径不完全一致时。这正是 alias 指令更受欢迎的原因之一。

先解释一下,什么是子目录的物理路径与 URL 路径不完全一致

子目录的物理路径与 URL 路径一致

如果你使用 root /var/www; 并且 URL 路径与文件系统路径一致

  1. URL 路径:http://sumingcheng.cn/admin
  2. 文件系统路径:/var/www/admin

这种情况下,当用户访问 http://sumingcheng.cn/admin,Nginx 会在 /var/www/admin 路径下查找文件,这是因为 URL 路径 /admin 直接映射到了 /var/www/admin

子目录的物理路径与 URL 路径不一致

但在你的情况中,你想要的映射关系是

  1. URL 路径:http://sumingcheng.cn/admin
  2. 文件系统路径:/var/www/sumingcheng-admin

这里,URL 路径 /admin 并不直接对应于文件系统中的 /var/www/admin 路径,而是对应于 /var/www/sumingcheng-admin。这就是所谓的“物理路径与 URL 路径不完全一致”。

使用 root 配置子目录

当使用 root 配置子目录(比如 /admin)时,Nginx 会将整个 URL 路径附加到 root 指令指定的路径后面。这意味着,如果你的 root 配置是 /var/www/sumingcheng-admin,并且用户访问 http://sumingcheng.cn/admin/index.html,Nginx 会尝试在 /var/www/sumingcheng-admin/admin/index.html 找到该文件。这可能并不是你想要的,因为实际的文件可能就在 /var/www/sumingcheng-admin/index.html

使用 alias 配置子目录

相比之下,alias 指令允许你将一个特定的 URL 路径(如 /admin)映射到服务器上的一个不同的路径。这意味着,如果你的 alias 配置是 /var/www/sumingcheng-admin/,当用户访问 http://sumingcheng.cn/admin/index.html 时,Nginx 会直接在 /var/www/sumingcheng-admin/index.html 查找该文件,这正是我们期望的结果。

有几种情况下不建议使用 root 指令

  1. URL 路径与文件系统路径不一致:当你想将特定的 URL 路径映射到服务器上的一个不同的文件系统路径时,这种情况下使用 root 可能导致路径错误。例如,如果你想通过 URL http://sumingcheng.cn/admin 访问 /var/www/special-admin 目录下的内容,使用 root 将导致 Nginx 尝试在 /var/www/special-admin/admin 中查找文件,而实际你希望它直接查找 /var/www/special-admin
  2. 需要特定的子路径映射:如果你的应用需要将多个 URL 子路径映射到完全不同的文件系统路径,使用 root 将无法满足需求。例如,如果 /images 应该映射到一个路径,而 /scripts 映射到另一个完全不同的路径,root 将无法实现这种映射。
  3. 避免不必要的嵌套目录:使用 root 有时会导致文件路径解析出现不必要的嵌套。例如,如果配置了 root /var/www; 和一个指向 /adminlocation 块,Nginx 会尝试在 /var/www/admin 中查找 /admin 的内容,这可能并不是实际的文件路径。

什么情况下推荐使用 root 指令

  1. 整站映射:当你的整个网站或应用位于一个单一的文件系统目录下,并且 URL 路径直接映射到这个目录结构时,使用 root 是最简单和直接的方法。例如,如果你的网站文件全部位于 /var/www/mywebsite 目录下,那么使用 root /var/www/mywebsite; 是最合适的。
  2. 简单的 URL 结构:对于简单的、没有复杂子目录映射需求的网站,root 提供了一个干净和高效的解决方案。因为在这种情况下,每个 URL 路径都直接对应于文件系统中的一个相同的路径。

Nginx 配置示例

· 阅读需 1 分钟
素明诚
Full stack development
http {
# 基础配置
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

# 日志配置
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

# 服务器配置
server {
listen 80; # 监听端口
server_name localhost; # 服务器名

# 对 /http 请求的处理
location /http {
# URL 重写,移除 '/http'
rewrite ^/http/(.*) /$1 break;

# 代理设置
proxy_pass http://localhost:3335;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;

# 设置代理的头部信息
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

# 默认处理
location / {
root html;
index index.html index.htm;
}

# 错误页面配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}