cmake

基础用法

1
2
3
4
5
6
7
8
# 指定 cmake 的最低版本
cmake_minimum_required(VERSION 3.12)

# cmake 的项目名
project(hello)

# 定义可执行输出
add_executable(hello main.cpp)

添加依赖

1
2
3
4
5
6
7
8
9
10
11
cmake_minimum_required(VERSION 3.12)

project(hello)

# 增加依赖的子目录
add_subdirectory(poco)

add_executable(hello main.cpp)

# 给项目增加库链接
target_link_libraries(hello PUBLIC Poco::Foundation Poco::Zip Poco::Net Poco::Util) # replace `...` by all poco library you use

添加外部目录链接

因为外部项目并不在当前目录中,所以需要的一个参数,参考 cmake:用add_subdirectory()添加外部项目文件夹

Read More

MongoDB Tips

关联查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
db.task.aggregate([
{ $lookup: {
let: { "modeId":{ "$toObjectId": "$modem" } },
from: "modem",
pipeline: [
{ "$match": { "$expr": { "$eq": [ "$_id", "$$modeId" ] } } }
],
as: "output"
}},
{
$set: {
modem_name: { $arrayElemAt: ["$output.name", 0] }
}
},{
$project: {
output: 0
}
}])

kubectl tips

更新 CR Status 字段

参考 Update K8s CR Status

强制删除 Namespace

参考 force-delete-namespace.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env bash

set -e
set -o pipefail

kubectl proxy &
proxy_pid="$!"
trap 'kill "$proxy_pid"' EXIT

for ns in $(kubectl get namespace --field-selector=status.phase=Terminating --output=jsonpath="{.items[*].metadata.name}"); do
echo "Removing finalizers from namespace '$ns'..."
curl -H "Content-Type: application/json" -X PUT "127.0.0.1:8001/api/v1/namespaces/$ns/finalize" -d @- \
< <(kubectl get namespace "$ns" --output=json | jq '.spec = { "finalizers": [] }')

echo
echo "Force-deleting namespace '$ns'..."
kubectl delete namespace "$ns" --force --grace-period=0 --ignore-not-found=true
done