「HUAWEI-VRP」- 通用路由平台 | Versatile Routing Platform | 华为路由器操作系统

该部分笔记将记录:使用 Huwei VRP 的使用方法,以及常见问题的处理方法。注意,网络技术,并不在本部分的讨论范围之内,这里我们仅讨论 VRP 的使用及配置方法,以及常见问题的解决方法。
随着越来越多的终端接入到网络中,网络设备的负担也越来越重,此时网络设备可以通过华为专有的 VRP系统 来提升运行效率。
认识
通用路由平台 VRP(Versatile Routing Platform)是华为公司数据通信产品的通用操作系统平台,是华为公司多年研究和网络应用经验的成果,知识产权为华为公司所有的一种网络操作系统。它以 IP 业务为核心,采用组件化的体系结构在实现丰富功能特性的同时,还提供了基于应用的可裁剪和可扩展的功能使得路由器和交换机的运行效率大大增加。能对 VRP 熟练地进行配置和操作是对网络工程师的一种基本要求。
版本说明(发展历史)

# 07/23/2021 目前,多数设备使用 VRP 5 版本,而少数使用 VRP 8 版本(比如 NE 系列)。在设备中,display version,能够查看 VRP 版本。
组成
我们将 VRP 理解为“路由操作系统”,当然往大一点说就是“平台”。它是个统一平台,很多华为的硬件设备都使用该“操作系统”,根据设备不同而插拔不同模块。VRP,通用路由平台,是华为网络设备的通用操作系统(是在华为网络设备中运行的操作系统)。要想学会配置华为的网络设备,除了懂得网络技术外,还要学会 VRP 的使用方法。
性质

实现统一的用户界面和管理界面
实现控制平面功能,并定义转发平面接口规范
实现各产品转发平面与VRP控制平面之间的交互
屏蔽各产品链路层对于网络层的差异

参考
华为云/精选文章 versatile routing platform(VRP)[……]

READ MORE

「MetalLB」- 安装 | 升级

该笔记将记录:在 Kuberntes Cluster 中,我们部署 MetalLB 组件的过程,以及常见问题的解决办法;
参考 MetalLB, bare metal load-balancer for Kubernetes 文档,以获取官方详细说明;
该部分的笔记仅是我们阅读官方文档而产生的阅读摘录(MetalLB v0.12.1),并记录下安装过程需要完成的工作;
MetalLB 的 Speaker 使用 Host Network,所以 BGP Peer 使用 Worker 的网络地址(单物理网卡)来建立 BGP 连接;
准备工作
环境要求
A Kubernetes cluster, running Kubernetes 1.13.0 or later, that does not already have network load-balancing functionality.
A cluster network configuration(与各网络插件的兼容性)that can coexist with MetalLB.(我们使用 Calico/Cilium 插件,采用默认部署,所以问题不大) https://metallb.universe.tf/installation/network-addons/ https://metallb.universe.tf/installation/clouds/
Some IPv4 addresses for MetalLB to hand out.(我们是内网开发环境使用,地址有很多,但是我们使用额外地址空间)
When using the BGP operating mode, you will need one or more routers capable of speaking BGP. 鉴于我们的环境需要使用额外地址空间,所以我们选择 BGP 模式,但需要配置 BGP Peer 设备,通常是路由器,某些交换机也支持 BGP 路由协议;
When using the L2 operating mode, traffic on port 7946 (TCP & UDP, other port can be configured) must be allowed between nodes, as required by memberlist.
云商兼容
多数是不兼容的,但是,目前 05/02/2025 我们暂时不在云环境中部署该组件,所以暂时并不需要关注这部分内容;
网络插件的兼容性
我们目前使用 Cilium 网络插件,MetalLB 对其支持较好,所以我们暂时不需要进行特殊配置;
针对 k[……]

READ MORE

「Python」- 安装 | CentOS | Debian | Ubuntu | 源码

该笔记将记录:在 Linux 中,如何安装 Python 环境,以及相关问题的处理方法。整理这些内容是为了:(1)在以后处理相同问题时,复制粘贴执行命令即可,方便快捷;(2)减少寻找解决方案所花费的时间;(3)记录注意事项,防止多次在同个地方跌倒。
版本选择
实现版本
Python 有多种实现,每种实现都有其独特的设计目标和场景。以下是主要的 Python 实现:
CPython | 官方参考实现,用 C 语言编写,是 Python 的官方参考实现。 – 优势:最广泛使用,兼容性最好。支持大多数 Python 库和框架。包含标准库的完整实现。 – 局限:全局解释器锁(GIL)限制多线程性能。 – 场景:通用开发、学习 Python、大多数生产环境。
PyPy | 使用即时编译(JIT)技术提升性能。 – 优势:执行速度显著快于 CPython(尤其对长时间运行的任务)。兼容大部分 CPython 代码。支持无栈 Python(Stackless)的微线程特性(可选)。 – 局限:对 C 扩展的支持可能受限。内存占用较高。 – 场景:高性能计算、替代 CPython 加速代码。
Stackless Python | CPython 的修改版,支持微线程(协程)。 – 优势:高并发支持(无需多线程)。适用于游戏开发(如 EVE Online 使用 Stackless)。 – 局限:需单独安装,社区较小。 – 场景:高并发、游戏服务器。
Cython | Python 的超集,可编译为 C 扩展。 – 优势:通过静态类型提升性能。与 CPython 完全兼容。 – 场景:科学计算(如 NumPy 的底层优化)、高性能扩展。
Jython | 运行在 Java 虚拟机(JVM)上,将 Python 代码编译为 Java 字节码。 – 优势:无缝调用 Java 类库。支持多线程(无 GIL 限制)。 – 局限:不支持 CPython 的 C 扩展(如 NumPy)。仅兼容 Python 2.7(截至 2023 年)。 – 场景:Java 生态集成、企业级应用。
IronPython | 基于 .NET 框架(CLR),与 C#、F# 等语言交互。 – 优势:直接调用 .NET 类库。无 GIL,支持多线程。 – 局限:对 Python 3 的支持较新(早期版本仅支持 Python 2)。性能可能低于 CPython。 – 场景:.NET 平台开发、Windows 应用集成。
MicroPython | 为嵌入式系统设计的轻量级实现。 – 优势:资源占用极低(可在微控制器上运行)。支持实时交互(REPL)。 – 局限:不兼容部分 Python 标准库。性能较低。 – 场景:物联网(IoT)、嵌入式开[……]

READ MORE

「Kubernetes」- 部署 OpenLDAP 服务

问题描述
该笔记将记录:在 Kubernetes Cluster 中,部署 LDAP 服务的方法,以及相关问题的解决办法;
解决方案
Create An OpenLDAP server with Bitnami Containers on Kubernetes 1)通过清单文件部署
Datree/Openldap Helm Chart 1)通过 Helm 部署; 2)但仅有 OpenLDAP 服务,未集成其他工具(例如 phpLDAPadmin 等等)
GitLab/stable/openldap · Lennart Nordgreen / helm-charts 1)通过 Helm 部署; 2)但仅有 OpenLDAP 服务,未集成其他工具(例如 phpLDAPadmin 等等)
Helm install openldap and phpldapadmin to manage LDAP objects within Kubernetes 1)通过 Helm 部署; 2)OpenLDAP 与 phpLDAPadmin 分别部署;
jp-gouin/helm-openldap(openldap 2.0.4) GitHub – jp-gouin/helm-openldap 1)通过 Helm 部署; 2)集成 phpLDAPadmin、Ltb-passwd 组件
我们部署方案
openldap 2.0.4 · jp-gouin/helm-openldap GitHub – jp-gouin/helm-openldap

helm repo add helm-openldap https://jp-gouin.github.io/helm-openldap/

helm pull helm-openldap/openldap-stack-ha

helm show values ./openldap-stack-ha-3.0.1.tgz > openldap-stack-ha.helm-values.yaml

vim openldap-stack-ha.helm-values.yaml

helm upgrade –install \
–namespace infra-aaa –create-namespace \
sldapd ./openldap-stack-ha-3.0.1.tgz -f openldap-stack-ha.helm-values.yaml

配置 phpLDAPadmin HTTPS 证书: 1)通过查看 Chart 源码[……]

READ MORE

「Nginx」- 日志处理

在 Nginx 中,我们需要调整日志输出,以显示更多的信息进行请求调试、检查请求内容。该笔记将记录:在 Nginx 中,如何使用日志、自定义日志格式 等等。
描述

server {
error_log /var/log/nginx/error.log debug;
access_log /var/log/nginx/access.log;
}

默认格式
Module ngx_http_log_module

log_format combined ‘$remote_addr – $remote_user [$time_local] ‘
‘”$request” $status $body_bytes_sent ‘
‘”$http_referer” “$http_user_agent”‘;

应用
自定义的日志格式
NGINX Docs | Configuring Logging
在如下示例中,使用 log_format 指令,定义名为 compression 的日志格式,然后在 access_log 中通过 compression 引用:

http {
log_format compression ‘$remote_addr – $remote_user [$time_local] ‘
‘”$request” $status $body_bytes_sent ‘
‘”$http_referer” “$http_user_agent” “$gzip_ratio”‘;

server {
gzip on;
access_log /spool/logs/nginx-access.log compression;

}
}

还有很多其他的特性,但是我们没有需求,所以这里简单记录,不再深入:

可以根据条件,进行日志记录(access_log [if=condition])[……]

READ MORE

「REGISTRY」- 部署

构建
参考 Configuring a registry 手册,以获取更加详细的说明;https://docs.docker.com/registry/configuration/
参考 Considerations for air-gapped registries. 手册,以获取隔离数据中心的部署方法https://docs.docker.com/registry/deploying/#considerations-for-air-gapped-registries
先在机器上安装 Docker,然后运行 registry 镜像;
搭建 Registry 服务
Docker 公开 Register 代码,我们能够自行运行 Register,搭建私有服务,放在防火墙之后,但是没有用户界面,只能通过 API 访问;
运行服务
运行一个 Register 服务非常简单:docker run -p 5000:5000 registry:2,该命令启动一个 Registry 2.0 的容器,并将5000端口绑定到宿主机上。如果你的 Registry 低于 2.0 版本,则可以使用迁移工具「docker/migrator」来升级;
从 Docker 1.3.1 开始,需要在启动 Docker 守护进程的命令中添加–insecure-registry localhost:5000标志,并重启守护进程,才能使用本地 Registry 服务;
启动 Registry 容器:

docker run -d -p 5000:5000 –restart=always –name registry registry:2

# 通过环境变量,能够覆盖配置。
# 环境变量的格式为:针对某个配置文件变量,使用 _ 连接层级,并将变量名替换为大写,并前缀 REGISTRY_;
# 例如 proxy.remoteurl 用环境变量表示则为 REGISTRY_PROXY_REMOTEURL

至此容器已经启动;
上面的示例仅适用于测试环境的 Registry 配置。生产环境的 Registry 必须受 TLS 保护,理想情况下应使用「访问控制」机制。「本文后续内容」及「configuration guide」以部署生产就绪的注册表;
推送镜像
测试新的 Registry 服务:
1)找到镜像 ID 值:docker images your/image
2)为镜像打标签:docker tag image_id docker.example.com:5000/jam/static_web
3)推送新的镜像:docker push docker.example.com:5000/jam/static_web
4)运行新的镜像:doc[……]

READ MORE

「Eclipse」- 远程开发插件

问题描述
在某些场景中,远程服务器为开发环境,我们需要在远程服务器中进行程序修改、编译、测试。
该笔记将记录:如何配置使用 Eclipse 进行远程开发,以及常见问题的处理方法。
解决方案
参考 Working with TM / RSE as a User 页面,以获取更多远程开发的解决方案。
通过 Remote System Explorer 插件
该插件支持 SSH、FTP、TELNET 等等协议。
功能特性(我们关注的):
1)SFTP
2)Remote Shell(SSH)
安装插件:
1)Remote System Explorer (SSH, Telnet, FTP and DStore protocols)
使用文档:RSE User GuideHow do I add FTP support to Eclipse?
补充说明:
1)该插件或许依赖于 TM Terminal 插件来提供远程终端:TM Terminal For additional options or remote sessions, use Ctrl+Alt+Shift+T or click the “Terminal” toolbar button
常用配置
添加 SFTP 实例
1)Window -> Open Perspective -> Other ⇒ Remote System Explorer ⇒ OK
2)<Right Click> ⇒ New ⇒ Connection…
3)SSH Only(而后的细节不再叙述,按照提示操作即可)

问题:按钮 Ssh Terminals 消失
问题描述:
提示插件升级,当我们升级后,无法显示 Ssh Terminals 按钮。
解决方案:
# 01/04/2019 卸载该插件重新安装后,又能够显示 Ssh Terminals 按钮,或许是 BUG 导致;插件版本回滚到 3.5.0 版本后恢复正常;
# 02/24/2022 今天再次出现该问题,或许有时升级插件导致的。依旧通过重新安装 RSE 插件来解决问题;
参考文献
Remote System Explorer (SSH, Telnet, FTP and DStore protocols)Remote System Explorer Setup for Eclipse – Remote System Explorer Setup for Eclipse[……]

READ MORE

「TMV」- 爬取网站视频、合并 TS 文件

解决方案
流程概览
How to Install and Use FFmpeg on CentOS 7 | Linuxize

curl -O http://example.com/[0-9].ts

### 安装 ffmpeg 命令
yum install epel-release
yum localinstall –nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
yum install ffmpeg ffmpeg-devel

cat $(/bin/ls -w 1 *.ts | sort –version-sort ) >> .tmp.ts
ffmpeg -i .tmp.ts -acodec copy -vcodec copy .tmp.ts.mp4

实现:下载、合并、解码 TS 文件
command line – Use ffmpeg copy codec to combine *.ts files into a single mp4 – Super User

#!/bin/sh

for i in $(seq 0 1000)
do
# 计算
request_fragment=”${1}${i}.ts”
fragment_name=$(basename $request_fragment)
echo “\n####### $2 $i ${request_fragment}\n”

# 下载
curl -O “${request_fragment}”

# 检查
file “${fragment_name}” | grep HTML && rm -rfv “${fragment_name}” && break

# 休息
# sleep 0.3
done

# 合并
cat $(/bin/ls -w 1 *.ts | sort –version-sort ) >> .tmp.ts

# 转化
ffmpeg -i .tmp.ts -acodec copy -vcodec copy .tmp.ts.mp4

# 清理
rm -rf *.ts .tmp.ts

# 重命名
mv .tmp.ts.mp4 “$2”.mp4

HTTP Live Streaming and M3U8
M3U8 VLC | How to Play M3U8 Stream and Download M3U8 to MP4 in VLC?
除了常见的媒体播放外,VLC 还支持用于各种服务[……]

READ MORE

「PROGRAMMING-LANGUAGE」- 有关于 ASP、.NET、ASP.NET、C#、C#.NET 间的区别

ASP(Active Server Pages)
Active Server Pages(ASP),Classic ASP、ASP Classic,微软的第一个用于生成动态网页的服务端脚本引擎。
注意:ASP 是一个引擎,用于生成动态网页的引擎。
该引擎可以解析多种脚本语言:VBScript(VBS,是 classic Visual Basic 语言的子集)、JavaScript(微软实现的 JScript)
VBScript 教程http://www.w3school.com.cn/vbscript/index.asphttps://www.w3schools.com/asp/asp_introduction.asp
相关文档及手册
IIS ASP Scripting Reference: https://msdn.microsoft.com/en-us/library/ms524664(v=vs.90).aspx
ASP Built-in Objects: https://msdn.microsoft.com/en-us/library/ms524716(v=vs.90).aspx
ASP.NET
ASP.NET 是使用.NET 构建现代 Web 应用程序和服务的开源 Web 框架。
ASP.NET 是 ASP 的接班人,替代品,但这两者并没有什么关系,就好象 JAVA 与 JavaScript 的关系一样。
注意:这里的 ASP 应该解释为“动态服务器网页”,而不是一个引擎。
主语言是 C#,C#编译之后,生成 CIL,然后 CLR 将语言转机器码进行运行。
当然还有 JavaScript,JavaScript 编译之后,生成 CIL,然后 CLR 将 CIL 转机器码进行运行。这里的 JavaScript 指的是微软的 JScript。
ASP.NET Core
ASP.NET 的接班人,也是一个开源的 Web 框架。
原本被认为是 ASP.NET vNext,该框架刚准备好时,被称为 ASP.NET 5。然而,为了避免认为它是对现有 ASP.NET 框架的更新,Microsoft 后来在 1.0 版本的将其名称更改为 ASP.NET Core。
C# | C Sharp
一种多范式编程语言。C#(读作 “C Sharp”)是一种面向对象、类型安全的编程语言,由微软为 .NET 平台设计。它结合了 C++ 的高性能和 Java 的易用性,语法简洁且功能强大。
C# 是为 CLI(Common Language Infrastructure)设计的编程语言之一。C# 编译之后,生成 CIL,然后 CLR 将 CIL 转机器码进行运行。
性质

面向对象:支持类、接口、继承、多态。
类型安全:[……]

READ MORE

「Eclipse」- C/C++(CDT)

问题描述
该笔记将记录:在 Eclipse 中,如何使用 CDT 进行 C 语言开发,以及常见问题的解决方法;
解决方案
CDT/User/FAQ – Eclipsepedia
常见问题处理
修改 includes 路径
Adding Include paths and symbols
1)right-click the project and select Properties
2)C/C++ General ⇒ Paths and Symbols ⇒ Includes ⇒ Add…
补充说明:
1)对于使用其他版本内核头文件,应该选择 /include/ 目录下;
2)还能够针对特定源码文件选择其头文件;
代码格式化
c – Eclipse C99 struct initialization formatting – Stack OverflowEclipse code style formatter: How to keep closing braces of initializer list in seperate line?
调整数组花括号的结构:
0)Windows -> Preferences -> C/C++ -> Code Style -> Formatter ⇒ Edit…
1)Under the tab Line Wrapping there is an option Initializer list which should apply to traditional initializer lists as well as C99 designated initializers.
2)Under the tab Braces there is another option Initializer list which you like to set to Next line indented.
如果想将数组闭合的花括号调整到下一行,需要 Export… 配置文件,并手动修改如下属性,再导入:

“org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer” value=”insert”

// 如下为调整后的效果
int array[] = {
1,
16,
17
};

转化项目
Eclipse C/C++ Development Guide (Galileo) – Converting a C or C++ nature for a project
1)Cl[……]

READ MORE

「HARBOR」- 部署 | 升级 | Docker Compose

该笔记将记录:我们升级 Harbor 的升级过程,以及相关问题的解决方案;
我们所记录升级文档,其忽略在官方文档中与我们部署环境无关的部分,仅记录与我们有关的部分;
建议阅读官方升级文档,并结合自己的部署环境,以得出适当的升级过程;
在升级过程中,注意配置文件备份、数据目录备份,以防止数据丢失;
Harbor 1.7.5
WIP
v2.1.5 => v2.3.0
Harbor docs | Upgrade Harbor and Migrate Data
建议阅读官方升级文档(Harbor docs/v2.3.0),并结合自己的部署环境,以得出适当的升级过程;
v2.3.0 => v2.3.5
参考 Harbor docs/v2.4.0 文档,升级过程与前面是类似的,这里不再重复记录;
v2.3.2 => v2.5.0
根据 Harbor docs/v2.5.0 描述,需要先升级到 v2.3.0 再升级到 v2.5.0 版本;
我们当前运行 v2.3.2 版本,能够直接升级到 v2.5.0 版本;
jinja2.exceptions.UndefinedError: ‘None’ has no attribute ‘port’
问题:在迁移配置文件时,产生如上错误;
原因:在 `http:` 下没有任何配置(算是语法错误);
解决:注释 `http:` 块,然后重新迁移配置;
v2.5.5 => v2.7.0
根据 Harbor docs/v2.7.0 描述,需要先升级到 v2.5.0 再升级到 v2.7.0 版本;
我们当前运行 v2.5.5 版本,能够直接升级到 v2.7.0 版本;
环境概述
我们使用 Docker Compose 部署 Harbor 服务;
部署目录:/data/registry-server/harbor/
数据目录:/srv/nfs/registry-server/data/
备份目录:/srv/backup/harbor/, /srv/backup/harbor/database/
第一步、停止服务,并备份数据

cd /data/registry-server/harbor/
docker-compose down

rsync -avz /data/registry-server/harbor/ /srv/backup/harbor/v2.5.5/
rsync -avz /srv/nfs/registry-server/data/database/ /srv/backup/harbor/database/v2.5.5/

mv /data/registry-server/harbor/ /tmp/[……]

READ MORE

「Kubernetes Objects」- PodSecurityPolicy

加强 Pod 安全
如何在Pod级别为应用定义安全上下文环境?例如,以非特权进程运行该应用,或者限制该应用可以访问的卷的类别
在Pod的spec中使用securityContext字段。
例如以非root用户运行一个应用:

kind: Pod
apiVersion: v1
metadata:
name: secpod
spec:
containers:
– name: shell
image: centos:7
command:
– “sh”
– “-c”
– “whatever”
securityContext:
runAsUser: 5000

spec.securityContext
Configure a Security Context for a Pod or Container | KubernetesKubernetes API Reference Docs/SecurityContext v1 core
runAsUser:指定运行进程的用户(UID);
runAsGroup:指定运行进程的组(GID,Primary);如果未指定该参数,则默认属于 root 组(GID==0);
fsGroup:指定运行进程的附属组(GID,Supplementary);在 Volume 中已创建的文件也将属于该组,同时组内用户具有 rw 权限;

cat > security-context-demo.yaml <<EOF

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: security-context-demo
spec:
accessModes:
– ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: nfs-client

apiVersion: apps/v1
kind: Deployment
metadata:
name: security-context-demo
labels:
app: security-context-demo
spec:
replicas: 1
selector:
matchLabels:
app: security-context-demo
template:
metadata:
labels:
app: security-context-demo
spec:
securityC[……]

READ MORE

「TMV」- 计算机机箱 | COMPUTER-CASE

构建
设计一款台式机机箱,我们需要使用什么软件?
设计一款台式机机箱涉及工业设计、3D建模、热力学仿真、结构分析等多个环节,需要结合专业软件完成。以下是设计过程中常用的软件分类及推荐工具:

### 1. 3D建模与工业设计
– Autodesk Fusion 360
– 适用于机箱结构设计、钣金建模、装配仿真,支持参数化设计,适合DIY机箱的快速原型开发。
– SolidWorks
– 专业机械设计软件,适合精确建模、钣金展开、干涉检查,常用于机箱的金属面板和风道设计。
– Rhino 3D + Grasshopper
– 适合复杂曲面设计(如异形机箱、流线型外壳),Grasshopper可用于参数化优化。
– Blender
– 免费开源,适合概念设计和外观渲染,但工程精度不如专业CAD软件。

### 2. 热力学与散热仿真
– ANSYS Fluent / Icepak
– 用于模拟机箱内部气流、散热性能,优化风扇布局和风道设计。
– COMSOL Multiphysics
– 可结合电磁仿真(如防EMI设计)和热分析,适合高端机箱的散热优化。

### 3. 结构分析与力学仿真
– ANSYS Mechanical
– 测试机箱的承重能力、抗震性(如玻璃侧板强度、硬盘架结构)。
– SolidWorks Simulation
– 集成于SolidWorks,可进行应力分析、模态分析(如机箱骨架稳定性)。

### 4. 电路与布局设计
– Altium Designer / KiCad
– 若机箱集成RGB控制板或定制PCB(如前置USB-C接口电路),需电路设计软件。

### 5. 渲染与可视化
– Keyshot / V-Ray
– 生成高精度渲染图,用于产品展示或众筹宣传(如材质质感、灯光效果)。
– Adobe Photoshop / Illustrator
– 辅助设计贴图、LOGO、说明书排版。

### 6. 辅助工具
– CAM软件(如Mastercam)
– 若需CNC加工机箱面板,需生成刀具路径。
– 3D打印切片软件(Cura/PrusaSlicer)
– 用于原型验证(如打印风道模型)。

### 总结
– 入门级设计:Fusion 360 + Keyshot(快速建模+渲染)。
– 专业级开发:SolidWorks(结构) + ANSYS(散热) + Altium(电路)。
– 开源替代:Blender(建模) + KiCad(电路) + Open[……]

READ MORE

「TMV/COMPUTER」- Surface Pro 7+

产品型号:微软 Surface Pro 7+ 亮铂金+典雅黑键盘二合一平板电脑酷睿 i5 8G+128G 轻薄本笔记本
购买时间:2022-09-24 11:24:22
常见问题处理
键盘只有长按才可以打字
我的电脑他的键盘只有长按才可以打字是怎么回事啊?_百度知道
开始,我们发现 Fn/CapsLock 指示灯,且长按之后能够亮起。
后来,经过摸索,我们发现长按字母键盘按键,依旧能够输入英文字母。基于此,我们猜测是否打开了某些辅助功能(或,某些特殊的功能设置)。
# 02/13/2024 并没有找到具体原因,但是经过升级到最近版本,然后查看 Accessibility 功能(根据记忆回顾,我们也未修改设置),问题得以解决。[……]

READ MORE

「Nexus」- 安装 | 部署 | 快速安装 | 测试

环境概述
操作系统:CentOS Linux release 7.5.1804 (Core)
软件版本:nexus-3.16.2-01-unix.tar.gz
系统要求
强烈建议阅读官方的「System Requirements」文档。
重点关注:专有账户;文件句柄数;内存;磁盘文件系统;
安装方法
下载并解压安装包

### 安装 Java 运行环境
yum install -y java-1.8.0-openjdk.x86_64

cd /opt/
wget http://download.sonatype.com/nexus/3/nexus-3.16.2-01-unix.tar.gz
tar -xf nexus-3.16.2-01-unix.tar.gz

# 解压后会生成两个目录:应用目录;数据目录;
# 有关各个目录的作用,参考:https://help.sonatype.com/repomanager3/installation/directories

启动并访问服务

# 添加用户
useradd nexus # 通常是名为 nexus 的用户,并且必须可以创建一个可用的 shell

# 启动服务
bin/nexus run # 当显示「Started Sonatype Nexus OSS」时,表示启动成功

# 如果要停止服务,可以 Ctrl+C 停止
# 也可通过 start, stop, restart, force-reload, status 等命令来管理

# 访问服务
firefox http://localhost:8081/ # 默认账户:amdin / admin123

常用配置
通过 systemd 管理
详细内容参考官方「Run as a Service」文档。下面是 systemd 的示例:

#!/bin/sh

cat > /etc/systemd/system/nexus.service <<EOF
[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/nexus/bin/nexus start
ExecStop=/opt/nexus/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable nexus.service
sys[……]

READ MORE

「HOMELAB」- 家庭实验室架构(version 3.0)

问题描述
在 Homelab v2.x 中,我们需要解决如下问题:
网络:接入 DC-OFFICE 网络
我们需要将办公电脑接入家庭网络中,实现数据的同步及备份;
网络:默认路由通告
我们希望 OSPF 通告默认路由,以使网络中的其他网络设备能够访问网络,而无需手动配置默认路由。但是,全网范围的 OSPF 会将该默认路由通告到其他网络中,影响其他网络通信;
存储:移除独立存储服务
我们的存储硬件性能较差,所以 PVE Ceph 无法使得 Guest 使用 Ceph 作为存储。我们希望提升 PVE Ceph 的性能,同时移除原有的独立存储服务(OpenMediaVault);
网络:实现 DC-OFFICE 和 DC-HIVE 互通
现在 DC-OFFICE 和 DC-HIVE 两者,分别模拟办公网络与数据中心两个独立网络。以往 DC-OFFICE 不需要访问 DC-HIVE 服务,但是现在我们需要实现两个网络的互联,以在家庭网络中访问某些服务;
解决方案

[WIP] 实现默认路由通告
1)当数据中心互联时,使用独立的 OSPF 进程,然后进行路由引入。通过路由策略,来控制引入的路由条目;
2)在网络中,通告默认路由,使得其他网络设备能够访问互联网(实现 NTP 配置);
[WIP] 移除独立存储服务
1)我们需要进一步测试和改进 Ceph 性能(需要深入学习),实现使用 Ceph 作为 Guest 操作系统的存储;
[WIP] 物理网络线路调整
1)我们需要重新设计机架及网络走线
DC-HOME
vpn.hzhm.d3rm.org[……]

READ MORE

「LAPTOP/PROJECT-BD」- 现有方案调研 | 调研市场现有方案

设备形态
直接触屏类

翻折触屏类

携带副屏类

屏幕拆卸类

使用体验
直接触屏类
针对我们的使用场景,在使用过程中,其存在如下缺点:
1)如果不能放平屏幕,则当触控时会出现屏幕晃动的问题(很多类似的产品都具有该问题);
2)如果放平,那占用面积较大,并且身体要前倾(头要前伸)才能获得更好的视觉体验;
翻折触屏类
针对我们的使用场景,在使用过程中,其存在如下缺点:
1)翻折是个繁琐的事情,且并不优雅。想象在会议中,突然翻折笔记本……;
2)并且,如果需要我们需要同时使用触屏与键盘,而翻折类无法是实现;
携带副屏类
针对我们的使用场景,在使用过程中,其存在如下缺点:
1)尺寸较大:失去部分移动性、便携性;
2)副屏较小:能够进行操作的空间较小;
3)误触操作:打字可能误触屏幕;触屏可能误触键盘;
3)如果主屏能够触控,那面临和前面类似的问题;
屏幕拆卸类
针对我们的使用场景,在使用过程中,其存在如下缺点:
1)硬件性能:
2)屏幕尺寸:
3)电源接口位置:[……]

READ MORE

「Eclipse」- 功能 | 特性

安装插件
http://blog.csdn.net/liu372267001/article/details/11129729How do I install Eclipse Marketplace in Eclipse Classic?
在新版本的 Eclipse 中,已经默认安装的 Marketplace,无需手动安装。
但是,我们使用 Eclipse 3.8(JUNO)版本,默认没有安装 Eclipse Marketplace 插件,因此需要我们自己安装。
手动为 Eclipse 安装 Martetplace 插件
进入插件安装页:Help ⇒ Install new software… ⇒ Add
配置插件
Name: Eclipse Marketplace Client (随意起名)
Location: http://download.eclipse.org/mpc/indigo
单击 OK 按钮
安装
添加完成后,「Work with」选择「Eclipse Marketplace Client」,然后在列表中选择「EPP Marketplace Client」下的「EPP Marketplace Client」。
然后,Next ⇒ Next ⇒ Next」…

从仓库中安装 Marketplace Client 插件
Help ⇒ Install new Software ⇒ Switch to the Kepler Repository ⇒ General Purpose Tools ⇒ Marketplace Client
If you use Eclipse Luna SR 1, the released Marketplace contains a bug; you have to install it from the Marketplace update site. This is fixed again in Luna SR 2.
Marketplace update site:
Luna – http://download.eclipse.org/mpc/luna
Helios – http://download.eclipse.org/releases/helios
Juno – http://download.eclipse.org/releases/juno
Mars – http://download.eclipse.org/releases/mars[……]

READ MORE

「TMV」- Sony HDR-CX405

认识
索尼 HDR-CX405 是一款高清摄像机,像素 601 万以上。索尼于 2014 年 12 月发布的闪存摄像机。
组成
WIP
构造
# 02/16/2025
2258.84 元https://item.taobao.com/item.htm?id=597917821893&sku_properties=1627207%3A23833992751
性质
可重复充电电池,AC 适配器,HDMI 线(微型),USB 连接线,说明书,保修卡
中文名索尼 HDR-CX405
商品编号 1309650
商品毛重 440.00g
商品产地中国上海
特性用途 HD 高清
存储介质闪存摄像机
类型家用
像素 601 万以上
变焦 15 倍-30 倍
清晰度 HD
基本参数
品牌
索尼
型号
HDR-CX405
颜色
黑色
类型
其他
光学变焦倍数
15-30 倍
功能参数
传感器类型
CMOS
传感器尺寸
1/5.8
防抖功能
光学防抖
快门
笑脸快门
对焦
自动 / 手动
其他参数
存储介质
XAVC S HD:Micro SDXC 存储卡(Class10/64G 或以上)AVCHD/ 静态影像:Memory Stick Micro(Mark 2), Micro SD/SDHC/SDXC 存储卡(Class 4 或以上)
电池
NP-BX1
屏幕参数
液晶屏尺寸
2.7“约 23 万像素宽屏(16:9)
触摸屏
不支持
液晶屏比例
16:9
曝光控制
白平衡
自动 / 一键式 / 户外 / 室内
镜头
焦距
f=1.9-57.0mm
滤镜直径
最近对焦距离约 1cm-80cm
镜头描述
蔡司 Vario-Tessar 镜头
光圈(F)值
F1.8-F4.0
http://www.sony.net/pmx
Sony PlayMemories | https://www.sony.com.hk/zh/electronics/playmemories

认识:Sony 的 PlayMemories(现部分功能整合至 Imaging Edge 平台,索尼逐步将 PlayMemories 的功能整合到 Imaging Edge 平台)是一套由索尼推出的应用程序和服务生态系统,主要面向索尼相机用户,用于进行多种操作,例如,照片/视频的传输、编辑、分享、相机遥控、……。

应用
WIP
参考
百度百科[……]

READ MORE

「Elasticsearch」- 杂记

Painless Scripting Language
https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-painless.html
ElasticSearch 使用教程之_score(评分)介绍
相关文章
干货 | 自然语言处理(3)之词频-逆文本词频(TF-IDF)详解
数据迁移
how to move elasticsearch data from one server to another
数据类型
Elasticsearch Reference [6.5] » Mapping » Field datatypes
索引别名
Elasticsearch 索引别名的介绍和操作Elasticsearch 索引重建(Rebuild)
相关链接
Elasticsearch Best Practice ArchitectureElasticsearch Architectural OverviewFour Elastic “X-Pack” Alternatives
Elasticsearch主副本数量调整方法
在 Elasticsearch 中,主分片(Primary Shard)的数量在索引创建时就已经确定,之后无法直接增加。不过,副本分片(Replica Shard)的数量是可以动态调整的。
### 1. 主分片数量
主分片的数量在索引创建时通过 `number_of_shards` 参数设定,一旦索引创建完成,主分片的数量就无法更改。如果需要更多主分片,只能通过以下方式间接实现:
– 创建新索引:创建一个新的索引,设置更多主分片,然后将数据重新索引到新索引中。
– 索引别名:使用索引别名来管理多个索引,使其对外表现为一个逻辑索引。
### 2. 副本分片数量
副本分片的数量可以通过 `number_of_replicas` 参数动态调整。增加副本分片可以提高数据的冗余和查询性能。
#### 调整副本分片数量的方法:
– 更新索引设置:
“`json
PUT /<index_name>/_settings
{

“index”: {

“number_of_replicas”: 2

}
}

“`

将 `<index_name>` 替换为你的索引名称,`2` 是你希望设置的副本分片数量。

– 使用 Kibana 或 Elasticsearch 插件:通过 Kibana 或其他管理工具调整副本分片数量。
### 3. 增加主分片的间接方法
如果需要更多主分片,可以创建一个新索引[……]

READ MORE

「JENKINS-PIPELINE」- Plugin

查看所有已安装的插件
Script Console

// def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
// plugins.each {println “${it.getShortName()}: ${it.getVersion()}”}

查看插件是否安装
#1 metaClass.getMetaMethod()
我们通过检查插件提供的 Step 是否存在来间接判断插件是否安装:In groovy, is there a way to check if an object has a given method? – Stack Overflow

this.pipeline.metaClass.getMetaMethod(“ansiColor”)

# 10/22/2024 该方法无效。
#2 try catch Throwable
Jenkins cps groovy does not catch NoSuchMethodError exceptions – Stack Overflow

private Boolean assertPluginInstalled() {
try {
this.pipeline.ansiColor(”)
return true
} catch (java.lang.Throwable e) {
return false
}
}[……]

READ MORE

「TMV」- 在线视频平台 | Online Video Platforms

认识
WIP
构建
Online video platform | https://en.wikipedia.org/wiki/Online_video_platform
List of online video platforms | https://en.wikipedia.org/wiki/List_of_online_video_platforms[……]

READ MORE

「KUBERNETES-OBJECTS」- PodPreset(学习笔记)

描述
使用 PodPreset 资源,可以在 Pod 创建时,自动修改 Pod 模板。
原理
WIP
应用
使用 label selector 选择要修改的 Pod 对象。
能够注入的属性有:secret objects / ConfigMap objects / storage volumes / container volume mounts / environment variables
第一步、启用 PodPreset 资源
Kubernetes v1.16.2/Pod PresetKubernetes v1.16.2/kube-apiserverKubernetes v1.16.2/API OVERVIEW/PodPreset v1alpha1 settings.k8s.iohow does kube-apiserver restart after editing /etc/kubernetes/manifests/kube-apiserver.yaml
Kubernetes v1.16.2,vim /etc/kubernetes/manifests/kube-apiserver.yaml

– –runtime-config=settings.k8s.io/v1alpha1=true
– –enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PodPreset

由于 API Server 是静态 Pod 资源,因此在修改配置后,kubelet 会自动重启 API Server 组件。
第二步、定义 PodPreset 资源
由于很多镜像没有正确设置时区,因此我们计划使用 PodPreset 资源设置时区:

apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: etc-localtime
spec:
selector:
# 如果 POD 设置 localtime: image 标签,则不应用
matchExpressions:
– operator: “NotIn”
key: “localtime”
values:
– “image”
volumeMounts:
– mountPath: /etc/lo[……]

READ MORE

「LAPTOP/SECOND-BRAIN」- 像笔记本的笔记本电脑 | 2025

问题
针对电脑,我们希望:在 Zim 中,直接导入数学物理电子书,并且能够在图片上手写数学笔记。

绘制手写:针对现有知识体系的学习(诸如 数学、物理 等等),我们记录笔记无非是在重复书中内容(并且还无法完全记录到笔记中)。既然如此,我们为什么不把书中内容直接导入到笔记(以文字,以图片,……),然后直接在其上进行补充或编辑呢?

除此之外,部分特殊图形(例如 数学公式 等等),通过 LaTex 编辑公式及其繁琐,为什么不能直接手写呢?如果需要排版格式,那么我们可以通过 OCR 进行识别,然后输出排版格式;

所以,在 Zim Desktop Wiki 中,我们希望具有 Handwriting 功能(或插件),来简化学习笔记的记录和管理。

我们希望笔记本电脑是真正的笔记本,实现如下功能:

或,具有多个显示器,并且该显示器支持手写,以方便我们数学笔记的记录(或其他手写更佳的笔记);
或,仅包含一个显示器,且具有触屏功能,且该显示器能够拖动到面前实现手写输入(方便记录笔记);

我们最终的目的是:将我们的笔记本打造成高效的工作平台,方便日常工作(主要是学习记录知识)。
分析
硬件需求描述
我们对硬件配置的需求(指我们针对硬件配置本身的最小需求):
CPU:Thread(s) per core, 2; Core(s) per socket, 6; Socket(s), 1;
MEM:64Gib+
STG:SSD(or NVMe),*2,1T + 1T(若能提供 RAID 5 阵列,则增加存储单元数量)
NET:Wi-Fi + Ethernet 1000Mbps
功能需求描述
针对手写功能的需求:
1)我们期望的方式是手写,就像在真实的笔记本上写字一样,所以它具有:显示器;键盘;电子笔;
2)在屏幕上进行手写时,(1)书写角度要舒适;(2)不能因为皮肤接触屏幕而产生误触;(3)同时要能使用键盘辅助输入;
解决
Second Brain
Homemade Notebook
Notebook Like[……]

READ MORE

「KUBERNETES」- Taints and Tolerations(学习笔记)

该笔记将记录:如何控制 Node 与 Pod 的调度,如何从一个节点中驱除 Pod 实例,如何将 Pod 调度到带有”污点“的节点;
kubernetes/Concepts/Taints and Tolerations
解决方案
该笔记仅作简单记录,详细细节及更多参数,参考 Taints and Tolerations 文档;
英语单词
taint,[teɪnt],腐坏、污染
tolerations,[ˌtɑːləˈreɪʃn],忍受、容忍
基础概念
在 Assigning Pods to Nodes 中,描述如何将 Pod 运行在特定的节点上(不管是强制还建议)。而 taint 恰巧相反,它使节点驱逐 Pod 实例;
将某个节点标记为”污染“(taint)后,任何不能够”容忍“(toleration)污染的 Pod 实例,都无法运行在该节点中。因此 taint 是作用于节点,而 toleration 则是作用于 Pod 实例;
如果在 Pod 的 spec 中定义 toleration 字段,那么 Pod 才会调度到满足该条件的”污染节点“。可以说:这个 Pod 能够容忍节点的污染;
基础操作
How can I list the taints on my nodes?
案例:防止 Pod 调度到 Node 上(Taint)
例如,某个节点不稳定,我们不希望 Pod 被调度到该节点上。可以执行如下命令:

# —————————————————————————– # 添加 Taint

# node1:节点名称
# problem=unstable:自定义 KEY=VALUE 形式的标签
# NoSchedule:三种行为之一,表示不要向该节点调度 Pod 实例;
kubectl taint nodes “node1” problem=unstable:NoSchedule

# —————————————————————————– # 移除 Taint

# 后缀减号(-)表示删除
kubectl taint nodes “node1” problem:NoSchedule-

# —————————————————————————– # 修改 Taint

# WIP

# ———————————————————————–[……]

READ MORE

「Kubernetes Objects」- Init Containers(学习笔记)

问题描述
影响 Pod 的启动行为,在某个 POD 启动后再启动另外换一个 POD 实例:
解决方案
有关内容参考官方「Init Containers」手册。
向往常一样创建一个普通的POD,然后以如下方式定义一个依赖的POD:

kind: Deployment
apiVersion: apps/v1beta1
metadata:
name: nginx
spec:
relicas: 1
template:
metadata:
lable:
app: nginx
spec:
containers:
– name: webserver
image: nginx
ports:
– containerPort: 80
initContainers:
– name: checkabackend
image: busybox
command: [“sh”, “-c”, “until nslookup………..”]

常用调试方法
查看 initContainers 日志

kubectl logs “<pod-name>” -c “<init-container-2>”

常见问题(FAQ)
Kubernetes 会为每个 Pod 执行 initContainers
kubernetes – Init container to be ran only once per deployment – Stack Overflow
initContainers 是 Pod 的组成部分,因此 Kubernetes 会为每个 Pod 执行 initContainers 定义。
因此无法:让在 StatefulSet 中 initContainers 只执行一次,同理也无法让 Deployment 中 initContainers 只执行一次。因此我们希望「在 kubectl apply StatefulSet.yaml 时,只执行一次 initContainers,在后续 Pod 启动时不再执行 initContainers 的」做法是不可能的。
参考文献
Init Containers | KubernetesDebug Init Containers | Kubernetes[……]

READ MORE

「IPSEC」 – IKEv1 | IKE version 1 | Internet Key Exchange version 1

认识
当用 IPSec 保护 IP Packet 之前,必须先建立一个 SA(安全联盟)。IPSec SA 可以通过手工配置的方式建立。但是,当网络中节点较多时,手工配置将非常困难,而且难以保证安全性。
这时就可以使用 IKE(Internet Key Exchange,Internet 密钥交换)自动进行安全联盟建立与密钥交换的过程。IKE 就用于动态建立 SA(其供 IKE 自己使用),然后再代表 IPSec 对 SA 进行协商。(在 IPSec VPN 中,连接的建立分为两个阶段,后面会展开说明);
组成
根据 RFC2409 描述,协议 ISAKMP、Oakley、SKEME 构成 IKE 的基础,所以我们说 IKE 是种“混合型”协议。它建立在由 Internet SA 和 ISAKMP 定义的一个框架上,详情可见 RFC2408 文件。同时,IKE 还实现 Oakley 和 SKEME 两种密钥管理协议的一部分。它沿用 ISAKMP 的基础、Oakley 的模式、SKEME 的共享和密钥更新技术,从而定义出自己独一无二的验证加密材料生成技术,以及协商共享策略。在 IKE 规范中,三种技术发挥的作用可在后文对 IKE 本身的讨论中略见一二,其中 ISAKMP 发挥的作用最为巨大;
此外,IKE 还定义了它自己的两种密钥交换方式(野蛮模式,主模式);
Oakley 是由亚利桑那大学的安全专家 Hilarie Orman 开发的一种基于 DH(Diffie-Hellman)算法的协议。它是一种自由形态的协议,允许各研究机构根据自身的水平改进协议状态。IKE 在其基础上定义正规的密钥交换方法。尽管降低 Oakley 模型的灵活性,但仍然提供了多种交换模式供用户选择,所以最终还是成为一个非常适宜的密钥交换技术;
SKEME 则是另外一种密钥交换协议,由加密专家 Hugo Krawczyk 设计。SKEME 定义如何验证密钥交换。其中,通信各方利用公共密钥加密实现相互间的验证,同时“共享”交换的组件。每一方都要用对方的公共密钥来加密一个随机数字,两个随机数(解密后)都会对最终的密钥产生影响。IKE 在它的一种验证方法(公共密钥加密验证)中,直接借用 SKEME 的这种技术;
IKE 利用 ISAKMP 语言来定义密钥交换,是对安全服务进行协商的手段。
IKE 交换的最终结果是:一个通过验证的密钥以及建立在双方同意基础上的安全服务(即所谓的 IPSec 安全联盟,IPSec SA);
性质
IKE 具有一套自保护机制,在不安全的网络上,其可以安全地分发密钥、验证身份、建立 IPSec SA 信息。
DH 交换及密钥分发:Diffie-Hellman 算法是一种公共密钥算法。通信双方在不传送密钥的情况下通过交换一些数据,计算出共享的密钥。[……]

READ MORE

「DNS」- 域名 | Domain Name

认识
域名(Domain Name)是互联网上用于标识和定位网站、服务器或其他网络服务的字符串名称(如 google.com),它通过 DNS(域名系统) 将人类可读的名称转换为机器可识别的 IP 地址(如 142.250.190.46)。
域名(Domain Name):主机的字符标识方式。大部分情况下,我们访问网站时在浏览器内输入的 URL 就是该网站的域名。
组成
表示方法 | 组成部分
注意,我们这里讨论的是域名的组成部分(域),而非域名的分类。即,区分“域”“域名”两个概念。
域名的表示方法:

一般格式:主机名.次顶级域名.顶级域名.
常见格式:最后的“.”为根域,通常不用书写。在部分工具和系统中,如果书写根域甚至会产生错误。例如 www.example.com

所以,通常,一个完整的域名由多级标签组成,从右到左层级递减。

顶级域(TLD):.com(通用顶级域)或 .cn(国家代码顶级域)。
二级域(SLD):example(用户注册的部分)。
子域名(Subdomain):www(可自定义,如 mail.example.com)。

顶级域 | TLD | Top Level Domain
通用顶级域 | gTLD | Generic TLD

com, edu, gov, mil, org, .net, …
新通用域:.asia, .info, .jobs, .top, …

国家代码顶级域 | ccTLD | Country code TLD

us, en, cn, jp, uk, …

专用域名:

.gov(政府)、.edu(教育机构)、.mil(军事)。

构建
域名购买
注册局(如 Verisign 管理 .com):维护顶级域数据库。
注册商:提供域名购买和续费服务。

GoDaddy | https://www.godaddy.com/
阿里云
Amazon Route 53

域名价格

普通域名较为便宜,
特殊域名(如短字符或热门关键词)可能溢价。

隐私保护

注册时开启 WHOIS 隐私(隐藏所有者信息),避免骚扰或钓鱼。

部署方式:通过阿里云够买域名,并完成实名认证、域名备案
部署方式:我们使用阿里云 DNS 服务器
现阶段阿里云生态较好,其提供与 Kubernetes 集成的 DNS 相关组件,所以域名及其解析我们一直使用阿里云 DNS 服务。
域名管理
DNS 解析:

通过自建 DNS Server 来实现;
通过 注册商 提供的 DNS Server 来实现;

其他管理:

通过需要借助于注[……]

READ MORE

「JENKINS」- Pipeline as Code

根据 Pipeline as Code 文档,其能:

根据源码仓库配置(Jenkinsfile),来自动创建 Jenkins Job 并且执行构建发布。
以及在软件生命周期中,如何使用 Jenkins Pipeline 来实现常见的自动化处理。

相关技术:Pipeline + Multibranch Pipeline + Organization Folders
GitHub + Jenkins
Organization Folder
GitLab + Jenkins
GitLab Branch Source + Organization Folder
文档:https://plugins.jenkins.io/gitlab-branch-source/
针对 Owner 参数,其并不支持添加所有项目,所以我们需要根据 GitLab Group 来创建相应的 Organization Folder 实例。
Discover shared projects | 其指在 GitLab 中 Invite a group 操作而获得访问权限的项目。
Discover subgroup projects[……]

READ MORE

「ipcalc(1)」-

IPv4 网络掩码 / 广播 / 等计算器
命令语法格式
ipcalc [options] ADDRESS[[/]NETMASK] [NETMASK]
命令描述
命令 ipcalc 采用 IPv4 地址和网络掩码为参数,并计算生成的广播、网络、思科通配符掩码、主机范围。通过提供第二个网络掩码,您可以设计子网和超网。它还旨在成为一种教学工具,并将结果呈现为易于理解的二进制值。
命令行选项
-n, –nocolor
不显示 ANSI 颜色代码
-b, –nobinary
抑制按位输出
-c, –class
只需打印给定地址的”位计数掩码“
-h, –html
以 HTML 格式显示结果
-s, –split n1 n2 n3.
分成大小为 n1,n2,n3 的网络
-r, –range
解聚地址范围。
其他选项
-v, –version
显示版本信息
–help
显示帮助信息
使用示例
如下示例:

# ipcalc 192.168.0.1/24

# ipcalc 192.168.0.1/255.255.128.0

# ipcalc 192.168.0.1 255.255.128.0 255.255.192.0

# ipcalc 192.168.0.1 0.0.63.255

解聚集地址范围:

ipcalc <ADDRESS1> – <ADDRESS2>

将网络拆分为 a b c 适合的子网:

ipcalc <ADDRESS>/<NETMASK> -s a b c

如上示例。
相关手册
ipsc(1) gipsc(1)
The ipcalc website: http://jodies.de/ipcalc
参考文献

man 1 ipcalc, Version 0.41-5[……]

READ MORE