背诵版。
软件架构风格
描述特定软件系统组织方式的惯用模式,组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。
架构风险
架构设计中潜在的、存在问题的架构决策所带来的隐患。
风险点与非风险点
风险点:可能引起风险的因素。
某个做法如果有隐患,有可能导致一些问题,则为风险点。
非风险点:如果某件事是可行的可接受的,则为非风险点。
敏感点
为实现某种特定的质量属性,一个或多个构件所具有的特性。
权衡点
影响多个质量属性的特性,是多个质量属性的敏感点。
背诵版。
描述特定软件系统组织方式的惯用模式,组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。
架构设计中潜在的、存在问题的架构决策所带来的隐患。
风险点:可能引起风险的因素。
某个做法如果有隐患,有可能导致一些问题,则为风险点。
非风险点:如果某件事是可行的可接受的,则为非风险点。
为实现某种特定的质量属性,一个或多个构件所具有的特性。
影响多个质量属性的特性,是多个质量属性的敏感点。
mindmap
root((软件架构风格))
数据流
批处理
(一个接一个,以整体为单位)
管道/过滤器
(前一个输出是后一个输入)
(实例: 传统编译器)
调用/返回
主程序/子程序
(显式调用,主程序直接调用子程序)
面向对象
(对象是构件,通过对象调用封装的方法和属性)
层次结构
(分层,每层最多影响其上下两层,有调用关系)
独立构件
进程通信
(进程间独立的消息传递,同步异步)
事件驱动
(不直接调用,通过事件驱动)
(实例: 语法高亮、错误提示)
虚拟机
解释器
(解释自定义规则,解释引擎、存储区、数据结构)
规则系统
(规则集、规则解释器、选择器和工作内存)
(用于DSS和人工智能、专家系统)
(实例: 自定义流程,按流程执行,规则随时改变)
仓库/数据共享风格
数据库
(中央共享数据源,独立处理单元)
超文本
(网状连接,多用于互联网)
黑板
(用于问题复杂、解空间大的软件系统)
(实例: 语音识别、知识推理)
闭环-过程控制
(发出控制命令并接受反馈,循环往复达到平衡)
(实例: 汽车定速巡航、空调温度调节)
C2风格
(通过连接件绑定的并行构件网络)
(构件和连接件、顶部和底部)
背诵版
实例:传统编译器,每个阶段产生的结构作为下一个阶段的输入,区别在于整体。
一个接一个,以整体为单位。
一个接一个,前一个输出是后一个输入。
显示调用,主程序直接调用子程序。
对象是构件,通过对象调用封装的方法和属性。
分层,每层最多影响其上下两层,有调用关系。
进程间独立的消息传递,同步异步。
不直接调用,通过事件驱动。
实例:时间出发推动动作,如程序语言的语法高亮、语法错误提示。
实例:自定义流程,按流程执行,规则随时改变,灵活定义,业务灵活组合机器人。
解释自定义的规则,解释引擎、存储区、数据结构。
规则集、规则解释器、选择器和工作内存,用于DSS和人工智能、专家系统。
实例:现代编译器的集成开发环境IDE,以数据为中心
又称为数据共享风格。
中央共享数据源,独立处理单元。
网状连接,多用于互联网。
语音识别、知识推理等问题复杂、解空间很大、求解过程不确定的这一类软件系统,黑板、知识源、控制。
实例:汽车定速巡航、空调温度调节,设定参数,并不断调整。
发出控制命令并接受反馈,循环往复达到平衡。
构件和连接件、顶部和底部。
通过连接件绑定在一起按照一组规则运作的并行构件网络。
Pometheus-Oerator 已经准备弃用,采用社区维护的 prometheus stack 部署。
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# install
helm install prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
# upgrade
helm upgrade prometheus-stack prometheus-community/kube-prometheus-stack
# uninstall
helm uninstall prometheus-stack
Compose是Docker Compose到容器编排(如Kubernetes或OpenShift)的转换工具。
官方Kubernetes项目,仓库位于github.com/kubernetes/kompose。
# Linux
curl -L https://github.com/kubernetes/kompose/releases/download/v1.34.0/kompose-linux-amd64 -o kompose
# Linux ARM64
curl -L https://github.com/kubernetes/kompose/releases/download/v1.34.0/kompose-linux-arm64 -o kompose
# macOS
curl -L https://github.com/kubernetes/kompose/releases/download/v1.34.0/kompose-darwin-amd64 -o kompose
# macOS ARM64
curl -L https://github.com/kubernetes/kompose/releases/download/v1.34.0/kompose-darwin-arm64 -o kompose
chmod +x kompose
sudo mv ./kompose /usr/local/bin/kompose
$ kompose convert -f compose.yaml
$ kubectl apply -f .
$ kubectl get po
NAME READY STATUS RESTARTS AGE
frontend-591253677-5t038 1/1 Running 0 10s
redis-leader-2410703502-9hshf 1/1 Running 0 10s
redis-replica-4049176185-hr1lr 1/1 Running 0 10s
也可以修改控制器,比如指定使用 Statefulset 就这样:
$ kompose convert -f compose.yaml --controller statefulset
作者 使用这个工具快速成功部署了 logto 和 lobechat。
更多详情查询官网。
简单记录,使用 cloudflare dns 自动完成域名 ssl 证书申请并配置到 ingress 的关键步骤。
使用 helm 安装方法如下:
helm repo add jetstack https://charts.jetstack.io --force-update
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.16.1 \
--set crds.enabled=true
使用 cloudflare 密钥自动认证
apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token-secret
namespace: cert-manager
type: Opaque
stringData:
api-token: xxxxxxxxxx
定义 issuer
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: issuer01
spec:
acme:
email: XXXXXX
# 配置证书目录,演练环境使用Staging环境,正式环境使用另一个
#server: https://acme-staging-v02.api.letsencrypt.org/directory
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
# Secret resource that will be used to store the account's private key.
name: issuer-account-key
solvers:
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami-deploy
spec:
replicas: 1
selector:
matchLabels:
app: whoami
release: canary
template:
metadata:
labels:
app: whoami
release: canary
spec:
containers:
- name: whoami
image: traefik/whoami:v1.10
ports:
- name: http
containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: whoami
spec:
selector:
app: whoami
release: canary
ports:
- name: http
port: 80
targetPort: 80 # pod port
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-whoami
annotations:
cert-manager.io/cluster-issuer: issuer01
# kubernetes.io/tls-acme: "true"
spec:
ingressClassName: nginx
rules:
- host: whoami.hzc1.skybyte.me
http:
paths:
- backend:
service:
name: whoami
port:
number: 80
path: /
pathType: Prefix
tls:
- hosts:
- whoami.hzc1.skybyte.me
secretName: whoami-hzc1-skybyte-me-tls # Name of secret automatically generated.
介绍一种临时解决 Recent version of Virtualbox 7.1.0 is not supported by vagrant 2.4.1 的方法:
$ sudo viVirtualBoxVM|virtualboxvm)
VBoxManage|vboxmanage)
- exec "$INSTALL_DIR/VBoxManage" "$@"
+ if [[ $@ == "--version" ]]; then
+ echo "7.0.0r164728"
+ else
+ exec "$INSTALL_DIR/VBoxManage" "$@"
+ fi
;;
VBoxSDL|vboxsdl)
exec "$INSTALL_DIR/VBoxSDL" "$@"
$ sudo vim /opt/vagrant/embedded/gems/gems/vagrant-2.4.1/plugins/providers/virtualbox/driver
$ diff -u meta.rb.orig meta.rb
--- meta.rb.orig 2024-09-16 11:37:37.017440100 +0100
+++ meta.rb 2024-09-16 11:33:51.312254400 +0100
@@ -69,6 +69,7 @@
"6.0" => Version_6_0,
"6.1" => Version_6_1,
"7.0" => Version_7_0,
+ "7.1" => Version_7_0,
}
if @@version.start_with?("4.2.14")
想要评估一下自己当前使用的 linux 工作环境已经持续多久,询问 claude3.5 得到了几个方法:
要查看您的 Arch Linux 安装时间,您可以尝试以下几种方法:
查看根文件系统的创建时间: 打开终端,输入以下命令:
stat /
在输出中查找”Birth”或”创建时间”这一行,它通常表示系统的安装时间。
检查最早的日志文件: 使用以下命令查看最早的系统日志文件的时间戳:
ls -lct /var/log | tail -1
查看安装包数据库的修改时间: 运行以下命令:
stat /var/lib/pacman/local
查看”Modify”或”修改时间”这一行,它可能接近您的系统安装时间。
如果您使用systemd,可以尝试:
sudo journalctl --list-boots
这会显示系统启动的历史记录,最早的记录可能接近安装时间。
请注意,这些方法可能不会给出精确的安装时间,但通常可以提供一个相当接近的估计。如果您在安装后立即更改了系统时间,这些方法的准确性可能会受到影响。
实测有两个方法看起来比较靠谱,原理是查看根文件系统的创建时间,我后续虽然改动过其他分区,但是根一直没动过,应该比较准确:
➜ PentaCortex git:(test) cd
➜ ~ stat /
文件:/
大小:4096 块:8 IO 块大小:4096 目录
设备:259,2 Inode: 2 硬链接:20
权限:(0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
访问时间:2024-10-12 14:32:19.003665547 +0800
修改时间:2024-09-05 16:06:53.850059764 +0800
变更时间:2024-09-05 16:06:53.850059764 +0800
创建时间:2024-02-16 11:43:29.000000000 +0800
➜ ~ stat /var/lib/pacman/local
文件:/var/lib/pacman/local
大小:131072 块:264 IO 块大小:4096 目录
设备:259,2 Inode: 559536 硬链接:2119
权限:(0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
访问时间:2024-10-14 10:23:22.640397815 +0800
修改时间:2024-10-14 10:23:19.712278043 +0800
变更时间:2024-10-14 10:23:19.712278043 +0800
创建时间:2024-02-16 12:06:46.299561805 +0800
➜ ~ neofetch
-` songtianlun@srd-songtianlun-archlinux
.o+` -------------------------------------
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: ASUS Zenbook 14 UX3405MA_UX3405MA 1.0
`+oooooo: Kernel: 6.11.2-zen1-1-zen
-+oooooo+: Uptime: 2 days, 18 hours, 14 mins
`/:-:++oooo+: Packages: 2118 (pacman), 9 (flatpak)
`/++++/+++++++: Shell: zsh 5.9
`/++++++++++++++: Resolution: 1920x1080
`/+++ooooooooooooo/` DE: Plasma 6.2.0
./ooosssso++osssssso+` WM: kwin
.oossssso-````/ossssss+` Theme: Breeze [GTK2/3]
-osssssso. :ssssssso. Icons: breeze [GTK2/3]
:osssssss/ osssso+++. Terminal: konsole
/ossssssss/ +ssssooo/- Terminal Font: SauceCodePro Nerd Font Mono 12
`/ossssso+/:- -:/+osssso+- CPU: Intel Ultra 7 155H (22) @ 4.500GHz
`+sso+:-` `.-/+oso: GPU: Intel Arc Graphics]
`++:. `-/+/ Memory: 19381MiB / 31455MiB
.` `/
安装时间大概是今年二月份,当前已经完全在日常工作环境使用八个月,目前感觉良好。
不知道配置了什么,突然输入中文经常出现错漏乱字,
类似这样:输入“dacheng” 变成 edachng
拼音顺序混乱,导致乱字。
最后在 deepin 找到一个解决方法,尝试后确实有用:
即关闭 fcitx5 — 全局 — 关闭“在程序中显示预编辑文本”

这样就可以了。
FATA[0000] name "xxx" is already used by I
<a href="https://blog.frytea.com/archives/1208#more-1208" class="more-link">继续阅读 <span class="meta-nav">→</span></a> sudo pacman -S wl-clipboard