emacs

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
注:
C-<chr>: ctrl+字母
M-<car>: alt+字母

命令:
C-x C-c:退出Emacs
C-v:下一屏(页)
M-v:上一屏(页)
C-l:重绘屏幕,并将光标所在行置于屏幕中央
C-p:[移动光标]将光标移动到上一行,列位置不变(p:previous)
C-n:[移动光标]将光标移动到下一行,列位置不变(n:next)
C-b:[移动光标]将光标向左移动一位(b:backward)
C-f:[移动光标]将光标向右移动一位(f:forward)

文件命令:
C-x C-f:打开文件
C-x C-s:保存文件
C-x C-b:列出缓冲区

C-x u:撤销

helm

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
# brew
brew install helm

# snap
sudo snap install helm --classic

# microk8s
microk8s enable helm3
## 使用
microk8s helm3 ...

# arch
sudo pamac install helm

概念

Helm 可以安装 Charts 到 k8s 集群中,为每次安装创建新的 Release。为了获取新的 Charts,可以搜索 Helm Charts Repositories。

Chart

在 Helm 中,Chart 是一个集合,包含所有必要的的资源定义来运行一个应用、工具或者 k8s 集群中的服务。

Repository

Repository 是 Charts 收集和分享的地方。

Release

Release 是 Chart 运行在 k8s 集群中的实例。一个 Chart 可以在相同的集群被安装多次,每次安装都会创建一个新的 Release。

使用

Repo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 添加
helm repo add <name> <url>

# 查看 repo 下的 charts
helm search repo <repo-name>

# 更新 repo
helm repo update <repo-name>

# 列出添加的 repo
helm repo list

# 移除 repo
helm repo remove <repo-name>

# 打包 repo
helm package <relative-path-to-chart>

# 生成 index
helm repo index

Chart

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 搜索
helm search repo <repo-name> # 在添加的 repo 中搜索
helm search hub <repo-name> # 在 hub 中搜索

# 安装一个 Chart
helm install <chart> --generate-name
helm install <release-name> <chart>

# 列出安装的 chart
helm list # 或 helm ls

# 写在一个 chart
helm uninstall <release-name>

# 查看一个 helm 的状态
helm status <release-name>

Values

1
2
3
4
5
6
7
8
9
10
# 查看 chart values
helm show values bitnami/wordpress
# 查看 release values
helm show values <release-name>

# 覆盖 values (使用文件)
echo '{mariadb.auth.database: user0db, mariadb.auth.username: user0}' > values.yaml
helm install -f values.yaml bitnami/wordpress --generate-name
# 覆盖 values (使用命令行参数)
helm install --set mariadb.auth.database=user0db,sample.list={1,2,3},sample.empty.list=[] bitnami/wordpress --generate-name

升级与回滚

升级

1
2
3
4
5
echo "mariadb.auth.username: user1" > panda.yaml
helm upgrade -f panda.yaml <release-name> <chart>

# 示例
helm upgrade -f panda.yaml happy-panda bitnami/wordpress

回滚

1
2
3
4
helm rollback <release-name> <REVISION> --timeout <timeout> --wait

# 查看 revision
helm history <release-name>

模板

1
2
# 查看生成 Manifest
helm template --debug <relative-path-to-chart>

ArtifactHUB

helm artifact hub

自定义 Repo

示例参考 bitnami

推荐系统

推荐系统的典型架构

recommend-system-第 2 页.drawio

如何快速了解一个推荐系统

  • 架构
    • 在线架构,流量接入、策略、在线打分
    • 离线架构,样本日志的产生、收集、清洗、拼接,模型训练平台
  • 数据
    • 用户数据,了解时效性、数据量、存储方式
      • 累计用户画像
      • 实时用户行为数据
    • 正排数据
      • 信息流,视频、文章、图片等
      • 广告,Offer、模板、素材等
  • 代码组织
    • 代码使用到的框架
    • 处理流程
  • 策略
    • 对指标(信息流,点击率预估、停留时长预估,广告,IVR、CTR、CVR、eCPM 等)的调整
  • 特征
    • 特征来源
    • 如何做特征抽取(FE,Feature Extractor)
    • 落特征、特征回流

k9s usage

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 输入冒号进入命令模式
:

# 切换视图
:svc # 服务视图
:deploy # 部署视图
:pod # pod 视图
:rb # 角色绑定视图
:namespace # 命名空间视图
:cj # cronjob

# 退出
^+C (CTRL + C)
:q

ubuntu setup

设置时区

timedatectl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 查看当前时区信息
$ timedatectl
Local time: 一 2023-06-26 16:21:01 CST
Universal time: 一 2023-06-26 08:21:01 UTC
RTC time: 一 2023-06-26 08:21:01
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
# 查看所有可配置的时区名称
$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
...
# 设置时区
$ sudo timedatectl set-timezone Asia/Shanghai

tzselect

临时需改时区,重启后失效。

1
$ tzselect

network - use wifi adapter

360 随身 wifi 1 代

驱动

这里这里

1
2
3
4
$ lsusb
...
Bus 001 Device 003: ID 148f:760b Ralink Technology, Corp. MT7601U Wireless Adapter
...

安装驱动

1
2
3
4
5
6
7
sudo apt install git dkms
git clone https://github.com/jeremyb31/mt7601u-5.4.git
sudo dkms add ./mt7601u-5.4
sudo dkms install mt7601u/1.0

# 重启
sudo reboot

360 随身 wifi 2 代

驱动

这里

k8s problems

Pod 无法解析域名

Pod DNS 策略模式是 ClusterFirst,系统 /etc/resolve.conf 内容如下。

1
2
3
nameserver 127.0.0.53
options edns0 trust-ad
search .

导致 Pod 里面的 /etc/resolv.conf 配置也是如此,无法正常解析域名。先删除 /etc/resolv.conf/run/systemd/resolve/stub-resolv.conf 的软链) ,再创建并写入如下内容。

1
2
nameserver 223.5.5.5
nameserver 8.8.8.8
1
2
sudo rm /etc/resolv.conf
sudo vim /etc/resolv.conf

重启 Pods。

1
kubectl delete pods --all -n=<namespace> # 删除所有 pods

pod didn’t trigger scale-up

错误信息

1
.. (combined from similar events): pod didn't trigger scale-up (it wouldn't fit if a new node is added): 2 Insufficient memory, 7 can't increase node group size

原因

  • pod 添加的 container 的内存、CPU 资源超过资源池机器的限制,导致无法扩容

解决

  • 减少 container 的 memory / cpu

Core Dump 及保存

设置 core dump 保存路径及命名

deployment.yaml 中配置,运行命令 echo "core.%p" > /proc/sys/kernel/core_pattern

映射 HostPath,容器重启不删除文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# deployment.yaml
spec:
template:
spec:
volumes:
- name: core-dump-volume
hostPath:
path: /data/core
type: DirectoryOrCreate
containers:
- name: {container-name}
volumeMounts:
- name: core-dump-volume
mountPath: /data/core