zsh, oh-my-zsh, oh my zsh

zsh, oh-my-zsh, oh my zsh # 查看已经安装的 shell 列表 cat /etc/shells ## 查看当前 shell echo $SHELL # archlinux install zsh sudo pacman -S git zsh # ubuntu install zsh sudo apt install zsh install oh my zsh # install oh-my-zsh, will set default shell to zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # after oh my zsh installed, ubuntu user should logout and login. update oh my zsh # need vpn to access github omz update 错过更新提示后手动触发更新,直接运行: ...

Created 9096-04-09 · Updated 9096-04-09 · 3 min · 514 words · -

Shell 创建文件并写入内容

选型总结 场景 推荐方式 单行字符串 printf '%s\n' "..." > file 多行内容 cat > file << 'EOF' ... EOF 追加内容 >> file 需要 root 写入 echo "..." | sudo tee file 脚本内变量展开 heredoc 不加引号:<< EOF 禁止变量展开 heredoc 加单引号:<< 'EOF' 单行字符串:推荐 printf printf '%s\n' 'Hello, World!' > foo.txt printf 简介 printf 在 Linux/Unix 系统上普遍可用,有两种形式: 内建命令(built-in):bash、zsh、dash 等 shell 均内置,不依赖外部程序 外部命令:/usr/bin/printf,由 coreutils 包提供,几乎所有发行版默认安装 printf 的作用是格式化输出,语法来自 C 语言的 printf(): printf FORMAT [ARGUMENTS...] 常用格式占位符: 占位符 含义 %s 字符串 %d 整数 %f 浮点数 \n 换行 \t Tab echo 在 bash 里需要加 -e 才能解析 \n,而 sh/dash 的 echo 行为又不同,跨 shell 不可靠;printf 行为在所有 shell 里一致,脚本中优先使用 printf。 ...

Created 3036-04-03 · Updated 3036-04-03 · 2 min · 251 words · -

IO, 输入输出

IO, 输入输出 https://my.oschina.net/u/1859679/blog/1839169 同步阻塞 IO 同步非阻塞 IO 异步非阻塞 IO 针对某种 IO 模型,我们如何分类,可以基于 POSIX 对同步/异步的定义来判别: A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes; (同步 I/O 操作会导致发起请求的进程被阻塞,直到该 I/O 操作完成。) An asynchronous I/O operation does not cause the requesting process to be blocked; (异步 I/O 操作不会导致发起请求的进程被阻塞。) 那么从上我们可以看出: 同步: 是否同步体现在消息通信机制上。 阻塞: 是否阻塞主要体现在调用的线程是否可以干别的,关注的是程序的等待状态 也就是说同步和异步说的是消息的通知机制,阻塞非阻塞说的是线程的状态 。 Unix 5种I/O模型 在《UNIX网络编程: 卷一》的第六章书中列出了五种IO模型: 阻塞式I/O; 非阻塞式I/O; I/O复用 (select,poll,epoll…) ; 信号驱动式I/O (SIGIO) ; 异步I/O (POSIX的 aio 系列函数)

Created 31316-03-31 · Updated 31316-03-31 · 1 min · 74 words · -

Backpressure, 背压

什么是背压 背压 (Backpressure, back-pressure), 又称负压。 Backpressure 并不是响应式编程 (Reactive Programming) 独有的概念, 也不是一种「机制」或「策略」。 Backpressure 是一种现象: 在数据流从上游生产者向下游消费者传输的过程中, 上游生产速度大于下游消费速度, 导致下游的 Buffer 溢出, 这种现象就叫做 Backpressure。 背压的本质 可以用水管来类比: 上游 = 水源 (生产者, Producer) 下游 = 水龙头 / 水桶 (消费者, Consumer) 管道 = 消息队列 / Buffer 当水源出水速度远远大于水桶的接收速度时, 管道中的水压就会升高。如果不加以控制, 水桶会溢出, 即数据丢失或系统崩溃。这个"升高的压力"就是背压。 背压出现的场景 背压广泛存在于各类系统中: 消息队列: 生产者发送消息的速率超过消费者消费速率, 队列积压 流式计算: Kafka、Flink 等处理管道中, 上游数据涌入速度超过下游处理能力 网络传输: TCP 协议中, 发送方速率超过接收方处理能力时, 接收窗口收缩 响应式编程: RxJava、Project Reactor 等框架需要显式处理背压 微服务调用链: 下游服务响应慢, 上游请求积压导致线程池耗尽 背压的处理策略 背压本身是现象, 应对背压才是策略。常见的应对方式有以下几种: 1. 控制生产速率 (Flow Control) 主动降低上游的生产速度, 使其与下游消费能力匹配。典型实现是 TCP 的滑动窗口机制: 接收方通过 ACK 报文中的窗口大小字段, 告知发送方当前可接收的数据量。 ...

Created 20206-03-20 · Updated 20206-03-20 · 3 min · 439 words · -

video, h.264, h.265, ffmpeg

“video, h.264, h.265, ffmpeg” H.265与H.264是ITU-T VCEG 制定的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括: 提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H264由于算法优化,可以低于1Mbps的速度实现标清数字图像传送;H265则可以实现利用1~2Mbps的传输速度传送720P (分辨率1280*720) 普通高清音视频传送。 H.265旨在在有限带宽下传输更高质量的网络视频,仅需H.264的一半带宽即可播放相同质量的视频。H.265标准也同时支持4K(4096×2160)和8K(8192×4320)超高清视频。 H.264 H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组 (VCEG) 和ISO/IEC动态图像专家组 (MPEG) 联合组成的联合视频组 (JVT,Joint Video Team) 提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC (或者AVC/H.264或者H.264/MPEG-4AVC或MPEG-4/H.264 AVC) 而明确的说明它两方面的开发者。 H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1。低码率 (Low Bit Rate) 对H.264的高的压缩比起到了重要的作用,和MPEG-2和MPEG-4ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅的图像,正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。 H.265, HEVC(高效视频编码) H.265是ITU-TVCEG继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。 新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括: 提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H264由于算法优化,可以低于1Mbps的速度实现标清数字图像传送;H265则可以实现利用1~2Mbps的传输速度传送720P (分辨率1280*720) 普通高清音视频传送。 H.265旨在在有限带宽下传输更高质量的网络视频,仅需原先的一半带宽即可播放相同质量的视频。这也意味着,我们的智能手机、平板机等移动设备将能够直接在线播放1080p的全高清视频。H.265标准也同时支持4K(4096×2160)和8K(8192×4320)超高清视频。可以说,H.265标准让网络视频跟上了显示屏"高分辨率化"的脚步。 H.265 与 H.264 有何不同 在讨论 H.265有哪些提升和优点之前,我们不妨先来了解一下H.264。H.264 也称作 MPEG-4AVC(Advanced Video Coding,高级视频编码),是一种视频压缩标准,同时也是一种被广泛使用的高精度视频的录制、压缩和发布格式。H.264 因其是蓝光光盘的一种编解码标准而著名,所有蓝光播放器都必须能解码H.264。更重要的是,因为苹果公司当初毅然决然抛弃了Adobe 的VP6 编码,选择了 H.264,这个标准也就随着数亿台iPad和iPhone 走入了千家万户,成为了目前视频编码领域的绝对霸主,占有超过80%的份额。H.264 也被广泛用于网络流媒体数据、各种高清晰度电视广播以及卫星电视广播等领域。H.264相较于以前的编码标准有着一些新特性,如多参考帧的运动补偿、变块尺寸运动补偿、帧内预测编码等,通过利用这些新特性,H.264比其他编码标准有着更高的视频质量和更低的码率,也因此受到了人们的认可,而被广泛应用。 H.265/HEVC 的编码架构大致上和H.264/AVC的架构相似,也主要包含: 帧内预测(intra prediction)、帧间预测(inter prediction)、转换(transform)、量化(quantization)、去区块滤波器(deblocking filter)、熵编码(entropy coding)等模块。但在HEVC编码架构中,整体被分为了三个基本单位,分別是: 编码单位(coding unit,CU)、预测单位(predict unit,PU)和转换单位(transform unit,TU)。 H.265为 何优于H.264 比起H.264/AVC,H.265/HEVC提供了更多不同的工具来降低码率,以编码单位来说, 最小的8x8到最大的64x64。信息量不多的区域(颜色变化不明显,比如车体的红色部分和地面的灰色部分)划分的宏块较大,编码后的码字较少,而细节多的地方(轮胎)划分的宏块就相应的小和多一些,编码后的码字较多,这样就相当于对图像进行了有重点的编码,从而降低了整体的码率,编码效率就相应提高了。同时,H.265的帧内预测模式支持33种方向(H.264只支持8种),并且提供了更好的运动补偿处理和矢量预测方法。 反复的质量比较测试已经表明,在相同的图象质量下,相比于H.264,通过H.265编码的视频码流大小比H.264减少大约39-44%。由于质量控制的测定方法不同,这个数据也会有相应的变化。通过主观视觉测试得出的数据显示,在码率减少51-74%的情况下,H.265编码视频的质量还能与H.264编码视频近似甚至更好,其本质上说是比预期的信噪比(PSNR)要好。这些主观视觉测试的评判标准覆盖了许多学科,包括心理学和人眼视觉特性等,视频样本非常广泛,虽然它们不能作为最终结论,但这也是非常鼓舞人心的结果。 目前的HEVC 标准共有三种模式: Main、Main10 和Main Still Picture。Main模式支持8bit色深(即红绿蓝三色各有256个色度,共1670万色),Main10模式支持10bit色深,将会用于超高清电视(UHDTV)上。前两者都将色度采样格式限制为4: 2: 0。预期将在2014年对标准有所扩展,将会支持4: 2: 2和4: 4: 4采样格式(即提供了更高的色彩还原度)和多视图编码(例如3D立体视频编码)。 ...

Created 3036-03-03 · Updated 3036-03-03 · 2 min · 253 words · -

kitty

kitty kitty 是一个 GPU based terminal https://sw.kovidgoyal.net/kitty/ SSH 连接远程主机 xterm-kitty: unknown terminal type Kitty 使用 xterm-kitty 作为 $TERM 环境变量的值。通过 SSH 连接远程主机时,该值会被传递过去,但远程主机的 terminfo 数据库中没有 xterm-kitty 的定义,导致 git、vim 等程序报错: 'xterm-kitty': unknown terminal type. 解决方案:使用 kitty +kitten ssh Kitty 内置了 ssh kitten,连接时会自动将 terminfo 传到远程主机。 在 ~/.zshrc(或 ~/.bashrc)中添加别名: alias ssh='kitty +kitten ssh' 然后执行: source ~/.zshrc 之后直接执行 ssh openclaw 即可,无需其他改动。 远程控制(Remote Control) Kitty 支持通过命令行远程控制终端,可以实现自动化窗口管理、发送命令等功能。 启用远程控制 在 ~/.config/kitty/kitty.conf 中添加: # Unix Socket 方式(推荐,可从任何终端控制) allow_remote_control socket-only listen_on unix:/tmp/kitty.sock 注意:使用 Unix Socket 方式时,Kitty 会在 socket 文件名后自动添加进程 ID,例如: ...

Created 20206-02-20 · Updated 20206-02-20 · 10 min · 2079 words · -

network manager

“network manager” sudo pacman -S networkmanager sudo systemctl status NetworkManager.service sudo systemctl start NetworkManager.service sudo systemctl restart NetworkManager.service sudo pacman -S nm-connection-editor sudo pacman -S network-manager-applet nmcli device nmcli connection nmcli c delete System policy prevents control of network connections System policy prevents control of network connections System policy prevents modification of network settings for all users< vim /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy Open /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy with root/sudo privileges and search for the following line: ...

Created 18186-02-18 · Updated 18186-02-18 · 2 min · 290 words · -

git merge, git rebase

git merge git rebase interactive rebase Join two or more development histories together merge 合并 用于将两个或多个分支的更改合并到一起。它通常用于将一个分支上的开发成果合并到当前分支(如将 feature 分支合并回 main 分支)。其主要作用是整合不同开发者或分支上的工作,保持代码库的统一和最新。 # 基本用法 # git merge <branch-name> # merge 默认会把 commit 的历史都合并进来 # 把 branch_0 合并到当前分支 git merge branch_0 # -m 参数用于指定合并提交(merge commit)的说明信息,即合并时生成的 commit message。 git merge branch_0 -m "MSG0" # 禁用 Fast forward git merge branch_0 -m "merge with no-ff" --no-ff 合并方式 Fast-forward(快进合并) 如果当前分支没有新的提交,仅仅是落后于目标分支,Git 会直接把指针向前移动到目标分支的位置,这种合并不会产生新的合并提交。快速合并,看不出做过合并。快进合并后不会留下一个明显的"feature 分支合并节点",只有一条线性的记录。 特点: 不创建 merge commit 分支指针直接前移 提交历史呈线性 无法看出曾经有分支存在 示意图: ...

Created 13136-02-13 · Updated 13136-02-13 · 11 min · 2185 words · -

kong

Kong 插件开发语言 Kong 支持使用多种语言开发自定义插件: 语言 方式 说明 Lua 原生支持 Kong 基于 OpenResty/Lua 构建,Lua 是最成熟、性能最好的插件开发语言,官方内置插件均用 Lua 编写 Go Go PDK 通过 go-pdk 库开发,编译为独立进程,Kong 通过 IPC 通信调用 JavaScript / TypeScript JavaScript PDK 通过 kong-js-pdk 开发,运行在独立的 Node.js 进程中 Python Python PDK 通过 kong-python-pdk 开发,运行在独立进程中,适合快速原型开发 WebAssembly (Wasm) Wasm Filter Kong 3.4+ 支持,可以用 Rust、C/C++、Go (TinyGo) 等编译到 Wasm 的语言开发,性能接近原生 除 Lua 外的其他语言插件都通过进程间通信(IPC)与 Kong 交互,会有一定的性能开销。生产环境对性能要求高的场景推荐使用 Lua 或 Wasm。 kong run postgresql docker network create kong-net # 创建 postgresql, 并创建一个实例 kong-db # KONG_DATABASE 数据库类型,必须是 postgres # 初始化 kong 数据库 nerdctl run --rm \ -e KONG_DATABASE=postgres \ -e KONG_PG_HOST=postgresql \ -e KONG_PG_PORT=5432 \ -e KONG_PG_USER=user_0 \ -e KONG_PG_PASSWORD=password_0 \ -e KONG_PG_DATABASE=kong_db \ -e KONG_PASSWORD=password_0 \ kong:3.9.1 kong migrations bootstrap # kong OSS + kong manager OOS nerdctl run -d --name kong \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=postgresql" \ -e "KONG_PG_PORT=5432" \ -e "KONG_PG_USER=user_0" \ -e "KONG_PG_PASSWORD=password_0" \ -e "KONG_PG_DATABASE=kong_db" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_PROXY_LISTEN=0.0.0.0:8000,0.0.0.0:8443 ssl" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001,0.0.0.0:8444 ssl" \ -e "KONG_ADMIN_GUI_LISTEN=0.0.0.0:8002" \ -p 80:8000 \ -p 443:8443 \ -p 8444:8444 \ -p 8001:8001 \ -p 8002:8002 \ kong:3.9.1 # -p 80:8000 # HTTP 代理端口 # -p 443:8443 # HTTPS 代理端口 # -p 8001:8001 # Admin API HTTP 端口 # -p 8444:8444 # Admin API HTTPS 端口 # -p 8002:8002 # Admin GUI HTTP 端口 curl -i -X GET --url http://localhost:8001/services # Kong Manager OSS http://kong:8002/ load balance # 创建一个 upstream curl -X POST http://192.168.50.31:8001/upstreams --data "name=k8s" # 添加两个 targets 到 upstream curl -X POST http://192.168.50.31:8001/upstreams/k8s/targets \ --data "target=192.168.50.80:6443" \ --data "weight=100" curl -X POST http://192.168.50.31:8001/upstreams/k8s/targets \ --data "target=192.168.50.82:6443" \ --data "weight=100" # 创建一个Service 目标到 Blue upstream # host: upstream name curl -X POST http://192.168.50.31:8001/services/ \ --data "name=k8s-service" \ --data "host=k8s" # 最后, 添加一个 Route 作为一个端点到 Service curl -X POST http://192.168.50.31:8001/services/k8s-service/routes/ \ --data "hosts[]=k8s.wiloon.com" commands curl -s localhost:8001 | jq '.configuration' kong manager add route upstreams name: enx-api targets target address: enx:8080 gateway service new gateway service name: enx-api-service service endpoint protocol: https host: enx-api-upstream ca certificate cert: past the content of ca-cert.crt certificates cert: the content of wiloon.crt key: wiloon.key upstreams Upstream 是在 Kong 中管理后端服务的负载均衡机制。当请求到达 Service 时,Kong 会通过定义的 Upstream 来选择一个具体的后端实例(例如,一个微服务的多个副本)。 如果不使用负载均衡就不需要配置 upstreams 了, 直接在 gateway service 中配置 service endpoint 即可. ...

Created 11116-02-11 · Updated 11116-02-11 · 4 min · 662 words · -

python basic

python basic 数据类型 list array, 列表, 数组 list/dict str to list/dict >>> import ast >>> x = '[ "A","B","C" , " D"]' >>> x = ast.literal_eval(x) >>> x ['A', 'B', 'C', ' D'] >>> x = [n.strip() for n in x] >>> x ['A', 'B', 'C', 'D'] colon syntax # check if two list equal sorted(a) == sorted(b) : is the delimiter of the slice syntax to 'slice out' sub-parts in sequences , [start:end] [1:5] is equivalent to "from 1 to 5" (5 not included) [1:] is equivalent to "1 to end" [:20] from start to 20 # Python 合并两个列表 # 法一: # Python合并两个列表, 相加是拼接 list1=[1,2,3] list2=[4,5,6,7] list3=list1+list2 print('list3',list3)#输出[1,2,3,4,5,6,7] # 注意:Python合并两个NumPy数组,相加时候是对应相加 import numpy as np arr1=np.array([1,2,3]) arr2=np.array([4,5,6]) arr3=arr1+arr2 print(arr3)#输出[5 7 9] #那么NumPy数组怎么拼接呢,使用concatenate arr4=np.concatenate((arr1,arr2),axis=0) print('arr4',arr4) # 法二: l3=[] l1=[1,2,3] l2=[4,5,6] l3.append(l1) l3.append(l2) print('l3',l3)#输出[[1, 2, 3], [4, 5, 6]],注意这里是二维列表,不是我们想要的结果 # 如何才能达到我们要的结果,使用 extend l1.extend(l2) print('l1',l1)#[1, 2, 3, 4, 5, 6] # 总结: # Python合并两个列表,可用两个列表相加存入新列表,或者使用extend在原列表修改 ———————————————— ...

Created 29296-01-29 · Updated 29296-01-29 · 38 min · 8022 words · -

DDD

DDD 领域驱动设计 (Domain-Driven Design,简称 DDD) Domain Layer 领域层 - 业务实体, 值对象, 领域服务 Infrastructure Layer 基础设施层 - 数据访问, 外部服务调用等技术实现 Application Layer 应用层 - 协调领域对象来执行应用用例 Interface Layer 接口层 - API 控制器, 视图 值对象 (Value Objects) 实体对象 (Entity) Repository 模式 - 抽象的数据访问层 聚合根 Factory 模式 Domain Service 值对象 (Value Objects) 代表领域中没有身份标识但有重要意义的概念 不可变性 (Immutability), 一旦创建,不能修改, 只读属性 基于值的相等性 (Value-based Equality), 比较的是值,不是对象引用 无身份标识 (No Identity), 两个值相同的对象被认为是相等的 可哈希性 (Hashable) 生命周期 短暂,可替换 封装业务逻辑: 比如某些固定规则的字符串组合 值对象的使用场景: 复合标识符 实体对象 (Entity) 有唯一身份ID ...

Created 26266-01-26 · Updated 26266-01-26 · 3 min · 576 words · -

font, 字体

font, 字体 主流编程字体 等宽编程字体特性 编程字体需要具备以下特点: 等宽设计:每个字符宽度相同,便于代码对齐 字符区分度高:容易区分 0O(数字零和字母O)、1lI(数字一、小写L和大写I)等相似字符 连字支持(可选):将 ->, =>, != 等组合显示为单个符号 编程符号优化:清晰的括号、引号、运算符显示 舒适的行高和字间距:长时间编码不易疲劳 开源免费字体 Cascadia Code 开发者:Microsoft 特点:Windows Terminal 默认字体,支持连字(Cascadia Code PL 变体),包含 Powerline 字形 适用场景:Windows 开发、终端、VS Code 安装:sudo apt install fonts-cascadia-code (Ubuntu/Debian) 官网:https://github.com/microsoft/cascadia-code JetBrains Mono 开发者:JetBrains 特点:专为开发者设计,字符高度区分,支持连字,行高适中 适用场景:IntelliJ IDEA、PyCharm 等 JetBrains IDE 推荐 官网:https://www.jetbrains.com/lp/mono/ Fira Code 开发者:Mozilla(基于 Fira Sans 和 Fira Mono) 特点:最流行的连字编程字体之一,支持 100+ 连字组合 适用场景:喜欢连字效果的开发者 安装:sudo apt install fonts-firacode 官网:https://github.com/tonsky/FiraCode Hack 特点:基于 Bitstream Vera 和 DejaVu,字符区分度极高 适用场景:注重代码可读性,不需要连字 安装:sudo apt install fonts-hack 官网:https://sourcefoundry.org/hack/ Source Code Pro 开发者:Adobe 特点:优雅的设计,6 种字重,清晰的字符 适用场景:喜欢 Adobe 设计风格 安装:sudo pacman -S adobe-source-code-pro-fonts (Arch) 官网:https://adobe-fonts.github.io/source-code-pro/ DejaVu Sans Mono 特点:基于 Vera Sans Mono,Unicode 覆盖广 适用场景:多语言编程,Linux 默认等宽字体 安装:大多数 Linux 发行版预装 Ubuntu Mono 开发者:Canonical 特点:Ubuntu 系统默认等宽字体,字符清晰 适用场景:Ubuntu 用户 Inconsolata 开发者:Raph Levien 特点:简洁紧凑,适合小屏幕 适用场景:小尺寸显示 官网:https://levien.com/type/myfonts/inconsolata.html IBM Plex Mono 开发者:IBM 特点:现代设计,IBM 企业级品质 适用场景:喜欢 IBM 设计语言 官网:https://www.ibm.com/plex/ Iosevka 特点:窄字符设计,同屏显示更多代码 适用场景:喜欢紧凑布局,小屏幕 官网:https://typeof.net/Iosevka/ 商业付费字体 SF Mono 开发者:Apple 特点:macOS 和 Xcode 默认等宽字体 适用场景:macOS 开发者 获取:随 macOS 系统或 Xcode 提供 Operator Mono 开发者:Hoefler & Co. 特点:优雅的意大利斜体,价格较贵($199+) 适用场景:追求极致美观 官网:https://www.typography.com/fonts/operator/ MonoLisa 特点:专注可读性和长时间编码舒适度 价格:€139 起 官网:https://www.monolisa.dev/ Nerd Fonts 系列 Nerd Fonts 是在流行编程字体基础上打补丁,添加大量图标字形(Font Awesome、Devicons、Octicons 等)。 ...

Created 16166-01-16 · Updated 16166-01-16 · 2 min · 340 words · -

linux 网络监控, NetHogs

linux 网络监控, NetHogs 推荐工具: bandwhich - 进程级网络监控,显示连接详情(推荐) btop++ - 全能系统监控(含网络) bottom - 轻量级系统监控 nethogs - 经典进程带宽监控 按功能分类: 监控总体带宽使用 - nload、bmon、slurm、bwm-ng、cbm、speedometer、netload 监控总体带宽使用(批量式输出)- vnstat、ifstat、dstat、collectl 每个套接字连接的带宽使用 - iftop、iptraf、tcptrack、pktstat、netwatch、trafshow 每个进程的带宽使用 - bandwhich、nethogs 全面系统监控(含网络)- btop++、bottom nethogs sudo pacman -S nethogs # 刷新频率 5 秒 nethogs -d 5 网络监控工具推荐 bandwhich - 专注网络的监控工具 最推荐用于网络流量监控 - 使用 Rust 编写,2019 年开始开发 核心特点: 🚀 现代化的终端 UI,彩色交互界面 📊 实时显示每个进程、连接、远程地址的网络使用情况 🎯 可同时查看进程级和连接级的流量详情 💡 显示目标主机名(DNS 解析)、端口、协议 ⚡ 性能优秀,资源占用低 🔍 支持排序和过滤功能 适用场景: 排查哪个程序在占用网络带宽 监控异常网络连接和流量去向 查看具体的远程地址和端口信息 # 安装(Arch Linux) sudo pacman -S bandwhich # 使用(需要 root 权限) sudo bandwhich 与 nethogs 对比: ...

Created 24246-12-24 · Updated 24246-12-24 · 5 min · 992 words · -

fcitx

fcitx https://wiki.archlinux.org/title/Fcitx5 archlinux KDE 安装 fcitx https://blog.csdn.net/GaaraZ/article/details/128618441 https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland#KDE_Plasma # include 1) fcitx5 2) fcitx5-configtool 3) fcitx5-gtk 4) fcitx5-qt sudo pacman -S fcitx5-im sudo pacman -S fcitx5-chinese-addons # disable fcitx5 desktop file after install fcitx5 in kde sudo mv /etc/xdg/autostart/org.fcitx.Fcitx5.desktop/org.fcitx.Fcitx5.desktop /etc/xdg/autostart/org.fcitx.Fcitx5.desktop/org.fcitx.Fcitx5.desktop.bak #--- sudo pacman -S fcitx-table-extra # kcm-fcitx5 包的实际内容是 fcitx5-configtool # fcitx-table-extra: 输入法模块-五笔, 可能需要重启 # fcitx-configtool: gtk3 config tool, optional chrome application launcher> right click chrome> command line arguments: –ozone-platform=wayland ...

Created 22226-12-22 · Updated 22226-12-22 · 3 min · 620 words · -

apt-get, apt basic command

apt-get, apt basic command, apt command apt upgrade 后是否需要重启 需要重启的包类型 包类型 示例 原因 内核 linux-image-* 内核在启动时加载,更新后需重启才能使用新内核 C 标准库 libc6 (glibc) 几乎所有程序都依赖它,热更新风险高 systemd systemd, systemd-sysv 系统初始化和服务管理的核心 D-Bus dbus, libdbus-1-3 系统进程间通信的基础设施 图形驱动 nvidia-*, mesa-* 需要重新加载驱动模块 系统会提示需要重启吗? 会的! Ubuntu/Debian 有专门的机制: # 检查是否需要重启 cat /var/run/reboot-required # 查看哪些包导致需要重启 cat /var/run/reboot-required.pkgs 示例输出: *** System restart required *** 其他提示方式 apt 升级时的提示 - 更新关键包后会显示提示信息 MOTD (登录提示) - SSH 登录时会显示 “System restart required” 图形界面 - Ubuntu Desktop 会弹出重启提示通知 快速检查命令 # 一行命令检查 [ -f /var/run/reboot-required ] && echo "⚠️ 需要重启" || echo "✅ 不需要重启" 不重启会怎样? 旧内核继续运行,新内核下次启动才生效 旧版本的库可能还在内存中被进程使用 安全补丁可能未完全生效 简单原则: ...

Created 12126-12-12 · Updated 12126-12-12 · 5 min · 906 words · -

containerd

containerd containerd: 2.2.0-1 runc: 1.4.0-1 nerdctl: 2.2.0-1 cni-plugins: 1.9.0-1 archlinux install containerd # archlinux install containerd pacman -S containerd runc nerdctl cni-plugins # containerd config sudo mkdir /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo systemctl daemon-reload sudo systemctl enable --now containerd # containerd 内存占用 47MB # containerd、runc、nerdctl 都是用户空间的程序, 不是内核模块,不需要重新加载内核, 不需要重启系统, 只需要运行守护进程即可, 安装完成就可以使用 sudo nerdctl pull hello-world sudo nerdctl run --rm hello-world # 如果需要编译镜像 sudo pacman -S buildkit sudo systemctl enable --now buildkit # build image, 需要在有 Dockerfile 的目录下运行 nerdctl build -t foo:v1.0.0 . sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml sudo systemctl restart containerd ubuntu install containerd https://gist.github.com/Faheetah/4baf1e413691bc4e7784fad16d6275a9 https://www.techrepublic.com/article/install-containerd-ubuntu/ ...

Created 10106-12-10 · Updated 10106-12-10 · 12 min · 2376 words · -

windows wsl

Windows WSL WSL: Windows Subsystem for Linux 官方文档 微软官方安装文档 WSL 文档 WSL 中文文档 基本命令 以管理员模式打开 PowerShell 或 CMD # 查看已安装的 WSL 发行版 wsl --list --verbose wsl -l -v # 启动指定的发行版 wsl -d archlinux wsl -d archlinux -u wiloon # 指定用户 # 列出可用的发行版 wsl --list --online wsl -l -o # 安装 WSL Ubuntu (默认安装最新 LTS 版本) wsl --install # 安装指定的发行版 (如 ArchLinux) wsl --install -d archlinux # 卸载发行版 wsl --unregister Ubuntu-22.04 # 安装 Windows Terminal winget install Microsoft.WindowsTerminal # 关闭所有 WSL 实例 wsl --shutdown # 强制关闭某一个实例 wsl --terminate Ubuntu wsl -t Ubuntu # 设置默认发行版 wsl --set-default archlinux wsl -s archlinux # 简写形式 # 查看 WSL 状态 wsl --status Ubuntu 基本设置 # 更新系统 sudo apt update && sudo apt upgrade # git 默认已安装 文件共享 Ubuntu 访问 Windows 文件 cd /mnt/c/ ls -l Windows 访问 Ubuntu 文件 在文件资源管理器地址栏输入: ...

Created 10106-12-10 · Updated 10106-12-10 · 11 min · 2144 words · w1100n

nodejs basic

nodejs basic version current v14.21.3 latest v21.6.2 Node.js 版本管理工具对比 nvm vs fnm 特性 nvm fnm 性能 较慢 (shell 脚本) 快速 (Rust 编写) 启动时间 明显延迟 (每次启动 shell) 几乎无延迟 自动切换 需手动配置 hook 内置支持 --use-on-cd 配置文件 .nvmrc .nvmrc 或 .node-version 跨平台 macOS/Linux macOS/Linux/Windows Windows 支持 需要 nvm-windows (独立项目) 原生支持 项目隔离 支持 (通过 .nvmrc) 支持 (自动检测) 安装速度 较慢 快速 内存占用 较高 较低 成熟度 非常成熟 (2010年) 较新 (2019年) 社区 庞大 增长中 推荐场景: 使用 nvm: 需要最成熟稳定的方案,或团队已在使用 使用 fnm: 追求性能,需要 Windows 支持,或新项目 nvm, Node Version Manager https://github.com/nvm-sh/nvm ...

Created 5056-12-05 · Updated 5056-12-05 · 3 min · 514 words · -

netcat

netcat check if netcat is installed # check if netcat is available which nc # or try to get the version/help nc -h # or check if it's installed via package manager pacman -Qs netcat check remote UDP port # send UDP packet to remote host and check if port is listening echo "test" | nc -u -w 1 remote_host port # use -v for verbose output, -z for scan mode nc -vuz remote_host port # if port is closed, you may receive ICMP port unreachable response # if port is open but service doesn't respond, it's hard to determine the status 参数说明: ...

Created 5056-12-05 · Updated 5056-12-05 · 2 min · 383 words · -

ubuntu basic

ubuntu basic 显示器分辨率问题 详细的显示器分辨率问题修复指南已移至专门文档: Ubuntu 显示器分辨率问题修复:手动加载 EDID 固件 该文档包含完整的诊断、修复步骤和故障排除方法。 apt-select # https://pypi.org/project/apt-select/ pip install apt-select apt-select -C JP sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup && sudo mv sources.list /etc/apt/ mirrors http://mirrors.ubuntu.com/ deb, deb-src 不是要看代码或者自己编译的话 deb-src 可以注释掉或者删除 backports proposed security updates 简单的解释: 基础:由于ubuntu是每6个月发行一个新版,当发行后,所有软件包的版本在这六个月内将保持不变,即使是有新版都不更新。除开重要的安全补丁外,所有新功能和非安全性补丁将不会提供给用户更新。 security:仅修复漏洞,并且尽可能少的改变软件包的行为。低风险。 backports:backports 的团队则认为最好的更新策略是 security 策略加上新版本的软件(包括候选版本的)。但不会由Ubuntu security team审查和更新。 update:修复严重但不影响系统安全运行的漏洞,这类补丁在经过QA人员记录和验证后才提供,和security那类一样低风险。 proposed:update类的测试部分,仅建议提供测试和反馈的人进行安装。 个人认为: 1.重要的服务器:用发行版默认的、security 2.当有要较新软件包才行能运作的服务器:用发行版默认的、 security、(backports 还是不适合) 3.一般个人桌面:用发行版默认的、 security、backports、update 4.追求最新、能提供建议和反馈大虾:发行版默认的、 security、backports、update、proposed 全部用上! Ubuntu 22.04 LTS (Jammy Jellyfish) ubuntu mirror aliyun deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse 163 deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse vim /etc/apt/sources.list %s/archive.ubuntu.com/mirrors.163.com/g tsinghua deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # wsl export DISPLAY=172.18.80.1:0 # windows 里ipconfig看到的连接wsl的ip apt install git-svn apt install openjdk-8-jdk apt install maven # config ~/.m2/settings.xml apt install nautilus sudo apt-get install ttf-wqy-microhei #文泉驿-微米黑 sudo apt-get install ttf-wqy-zenhei #文泉驿-正黑 sudo apt-get install xfonts-wqy #文泉驿-点阵宋体 sudo apt install keepassxc 中文乱码问题 # 安装中文支持包language-pack-zh-hans sudo apt-get install language-pack-zh-hans # 设置语言 vim /etc/environment ## 中文语言环境, 设置后 vim 进入编辑状态屏幕下方会显示中文"插入"的那种 LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh:en_US:en" ## 英文环境 LANG="en_US.UTF-8" LANGUAGE="en_US:en" vim /var/lib/locales/supported.d/local en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8 zh_CN.GBK GBK zh_CN GB2312 sudo locale-gen # 中文乱码是空格的情况,安装中文字体解决 sudo apt-get install fonts-droid-fallback ttf-wqy-zenhei ttf-wqy-microhei fonts-arphic-ukai fonts-arphic-uming https://blog.csdn.net/weixin_39792252/article/details/80415550 ...

Created 4046-12-04 · Updated 4046-12-04 · 5 min · 867 words · -