Home avatar

This is my blog

使用 Ssh 连接到 Github

生成公私钥

1
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/github

~/.ssh/config:

1
2
3
4
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/github

将公钥上传到 github

  • 公钥: ~/.ssh/github.pub
  • 上传到 github: Settings -> SSH and GPG keys

测试是否成功

1
ssh -T git@github.com

ssh over https

如果使用机场访问 github, 可以会出现无法连接的情况, 因为有些机场会屏蔽 22 端口以防止网络攻击。改为 https 协议即可。

记录一次将宝塔的网站换成手工搭建

原因

vps 的宝塔的 Let’s encrypt 证书三个月后无法自动续签。不知道是原因。算了, 手工搭建, 然后 acme.sh 自动续签证书。

acme.sh 申请证书

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/bash

# 设置 acme.sh 路径变量
ACME_SCRIPT="/root/.acme.sh/acme.sh"

# 设置 Cloudflare API 凭据
export CF_Token=""        # 我的个人资料 -> API 令牌 -> 创建令牌
export CF_Account_ID=""   # 进入域 -> 右下角的 "帐户ID"

DOMAIN_GROUPS=(
    "foo.domain.com *.foo.domain.com"   # 支持申请 SAN 域名
    "bar.domain.com *.bar.domain.com"
)

# 显示开始信息
echo "开始申请SAN SSL证书..."
echo "========================================"

# 检查 acme.sh 是否存在
if [ ! -f "$ACME_SCRIPT" ]; then
    echo "❌ 错误: 找不到 acme.sh 脚本"
    exit 1
fi

# 为每组域名申请证书
for group in "${DOMAIN_GROUPS[@]}"; do
    main_domain=$(echo "$group" | awk '{print $1}')

    echo "🔄 申请证书: $group"

    # 构建并执行命令
    cmd="$ACME_SCRIPT --issue"
    for domain in $group; do
        cmd="$cmd -d $domain"
    done
    cmd="$cmd --dns dns_cf --force"

    eval $cmd

    if [ $? -eq 0 ]; then
        echo "✅ 证书申请成功: $main_domain"
    else
        echo "❌ 证书申请失败: $main_domain"
    fi
    echo "----------------------------------------"
done

echo "📋 最终证书列表:"
"$ACME_SCRIPT" --list

列出 acme 管理的域名:

Potobuf 的编码

编码的作用

其实当前的数值类型 (int, short, char, …)可以理解为定长编码, 但是现实中, 我们 80% 的情况下, 只使用一些小的正整数, 还有些情况下, 使用小的负数。 这样一来我们就可以压缩信息。比如: 0000 0000 0001, 我们可以压缩为 11 个 0, 一个 1。因为信息(11 个 0, 1 个 1)是连在一起的 (还有多个信息也是连在一起的), 我们需要一种方案来区分开 11 个 0一个 1, 还有区分其他信息。可以理解为需要信息边界 (自定义的概念), 而 variant 的消息边界是"每个字节的最高位(第8位)用来表示是否有后续字节", 信息内的信息边界是, 全是 0 则不记录。信息之间的消息边界是, 最高位 (第 8 位) 为 0 时, 信息的右边界。

Test Blog

Chroma Style

1
2
3
4
5
6
7
8
package main

import "fmt"

func main() {
	// hi
	fmt.Println("Hello, World!")
}

No type:

1
2
3
4
5
6
7
8
package main

import "fmt"

func main() {
	// hi
	fmt.Println("Hello, World!")
}

mathjax

行内数学公式:$a^2 + b^2 = c^2$。

0%