备忘


Windows

  1. LockHunter
  2. Honeyview
  3. Snipaste
  4. Sysinternals Suite, live.sysinternals.com
  5. TreeSizeFree-Portable
  6. etcher
  7. ContextMenuManager
  8. Fork
  9. OpenArk
  10. Geek Uninstaller
  11. QuickLook

WSL2

  1. systemd support
  2. WSL Utilities
  3. WSLg

Linux

  1. Dash to dock
  2. Hide top bar
  3. Variety

Mac

  1. Hidden Bar
  2. Macs Fan Control
  3. Rectangle

Tools

Network

  1. MTR
  2. WinMTR (Redux), WinMTR

C++

  1. Compiler Explorer
  2. Template Expansion

Docs

  1. Assembly: x86 Assembly Guide, x86 and amd64 instruction reference

  2. Cryptography: Everything you should know about certificates and PKI but are too afraid to ask, 关于证书(certificate)和公钥基础设施(PKI)的一切(SmallStep, 2018)

Misc

  1. bash 文件中 set 命令的帮助文档 bash -c "help set"

  2. 让 CPU 使用率达到 100% while : ; do : ; done

  3. Font: CaskaydiaMono Nerd Font Propo, Cascadia Mono PL

  4. 关于 kB 和 KiB 的区别

    • 1 kibibyte (KiB) = 1,024 bytes
    • 1 kilobyte (kB) = 10**3 bytes
    • 1 mebibyte (MiB) = 1,024**2 bytes = 1,048,576 bytes
    • 1 megabyte (MB) = 1,000**2 bytes = 10**6 bytes
    • 1 gibibyte (GiB) = 1,024**3 bytes = 1,073,741,824 bytes
    • 1 gigabyte (GB) = 1,000**3 bytes = 10**9 bytes

      参考: https://en.wikipedia.org/wiki/Byte

      当表示计算机中数据量的大小时,K、M、G、T等单位之间的进制都是 1024。

      当表示网速时,K、M、G、T等单位之间的进制都是 1000。

      计算机网络的性能指标

  5. 查找 <> 包裹的字符串,< 前不是 ‘`‘ 字符并且 > 后也不是 ‘`‘ 字符的正则表达式:

    # (?<!`)<.+?>(?!`)
    grep -P '(?<!`)<.+?>(?!`)' -R -n .
  6. YAML 多行字符串标记对照表 总结

    a. `|` 系列:保留原样换行
    b. `>` 系列:换行转空格
    c. `+`:保留结尾空行
    d. `-`:删除结尾空行

    举例
    literal_block: |
    Line 1
    Line 2
    Line 3
    
    literal_block_plus: |+
    Line 1
    Line 2
    Line 3
    
    
    literal_block_strip: |-
    Line 1
    Line 2
    Line 3
    
    
    folded_block: >
    Line 1
    Line 2
    Line 3
    
    folded_block_plus: >+
    Line 1
    Line 2
    Line 3
    
    
    folded_block_strip: >-
    Line 1
    Line 2
    Line 3
    测试脚本
    import yaml
    
    with open('demo.yaml', 'r', encoding='utf-8') as f:
        data = yaml.safe_load(f)
    
    for key, value in data.items():
        print(f"{key}:\n{repr(value)}\n{'-'*40}")
    结果
    literal_block:
    'Line 1\nLine 2\nLine 3\n'
    ----------------------------------------
    literal_block_plus:
    'Line 1\nLine 2\nLine 3\n\n\n'
    ----------------------------------------
    literal_block_strip:
    'Line 1\nLine 2\nLine 3'
    ----------------------------------------
    folded_block:
    'Line 1 Line 2 Line 3\n'
    ----------------------------------------
    folded_block_plus:
    'Line 1 Line 2 Line 3\n\n\n'
    ----------------------------------------
    folded_block_strip:
    'Line 1 Line 2 Line 3'
    ----------------------------------------
  7. 处理 iptables 命令可能查看不到规则端口信息的问题 整理 Kubernetes 的 NodePort 规则时可能会遇到使用 iptables 命令查看 KUBE-NODEPORTS 链时无法查看到 tcp 端口的问题。
    这个时候就需要使用 nft list chain ip nat KUBE-NODEPORTS 来查看才行。
    nft 命令可以通过命令 apt install nftables 来安装。
    与命令 iptables-save 等价的命令是 nft list ruleset
    https://www.reddit.com/r/kubernetes/comments/1bf8rma/nodeport_kubeproxy_v126_no_longer_has_destination/
  8. 处理无法查看 iptables 中 log 目标输出的日志的问题 可以使用命令 echo 1 > /proc/sys/net/netfilter/nf_log_all_netns 强制系统记录所有的日志。
    https://stackoverflow.com/questions/39632285/how-to-enable-logging-for-iptables-inside-a-docker-container
  9. 清空 iptables 的所有规则
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -t raw -F
    iptables -t raw -X
    iptables -t raw -Z
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -t mangle -Z
    iptables -t nat -F
    iptables -t nat -X
    iptables -t nat -Z
    iptables -t filter -F
    iptables -t filter -X
    iptables -t filter -Z
    iptables -t security -F
    iptables -t security -X
    iptables -t security -Z
    
    ip6tables -P INPUT ACCEPT
    ip6tables -P FORWARD ACCEPT
    ip6tables -P OUTPUT ACCEPT
    ip6tables -t raw -F
    ip6tables -t raw -X
    ip6tables -t raw -Z
    ip6tables -t mangle -F
    ip6tables -t mangle -X
    ip6tables -t mangle -Z
    ip6tables -t nat -F
    ip6tables -t nat -X
    ip6tables -t nat -Z
    ip6tables -t filter -F
    ip6tables -t filter -X
    ip6tables -t filter -Z
    ip6tables -t security -F
    ip6tables -t security -X
    ip6tables -t security -Z
  10. 设置 pip 使用的 mirror
    pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
    pip config set install.trusted-host mirrors.aliyun.com
  11. 设置 Ubuntu 使用的 http 代理
    export http_proxy=http://localhost:7890
    export https_proxy=http://localhost:7890
    
    # minikube proxy
    # https://minikube.sigs.k8s.io/docs/handbook/vpn_and_proxy/
    export HTTP_PROXY=http://localhost:7890
    export HTTPS_PROXY=https://localhost:7890
    export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24
    
    # git http/https proxy
    git config --global http.proxy http://localhost:7890
    git config --global https.proxy http://localhost:7890
    
    # ssh proxy (nc)
    # 注意 nc 支持 socks 4, socks 5 或者 https 代理,如果要使用 http 代理可以使用 ncat
    cat << EOF >> ~/.ssh/config
    Host github.com
        User git
        ProxyCommand nc -x localhost:7890 -Xconnect %h %p
    EOF
    
    # ssh proxy (ncat)
    # ncat command comes from nmap(https://nmap.org/dist/nmap-7.92-setup.exe)
    cat << EOF >> ~/.ssh/config
    Host github.com
        User git
        ProxyCommand ncat --proxy localhost:7890 --proxy-type http %h %p
    EOF
    
    # or use http proxy when available
    cat << EOF >> ~/.ssh/config
    # https://man.openbsd.org/ssh_config
    Match host github.com exec "ncat -z 127.0.0.1 7890"
        ProxyCommand ncat --proxy 127.0.0.1:7890 --proxy-type http %h %p
    EOF
    
    # apt proxy
    cat << EOF | sudo tee /etc/apt/apt.conf.d/proxy.conf
    Acquire {
        HTTP::proxy "http://localhost:7890";
        HTTPS::proxy "http://localhost:7890";
    }
    EOF
    在使用 sudo 时,如果想环境变量中的代理设置依然有效,可以编辑 `/etc/sudoers` 文件
    + Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"
  12. 设置 Ubuntu 使用的 mirror
    cp /etc/apt/sources.list /etc/apt/sources.list.bak
    sed -i "s@http://.*archive.ubuntu.com@https://mirrors.bfsu.edu.cn@g" /etc/apt/sources.list
    sed -i "s@http://.*security.ubuntu.com@https://mirrors.bfsu.edu.cn@g" /etc/apt/sources.list
    apt update
  13. Ubuntu 安装 Docker 镜像:https://mirrors.bfsu.edu.cn/help/docker-ce
    sudo groupadd docker
    sudo usermod -aG docker $USER
    newgrp docker
    {
        "builder": {
            "gc": {
                "defaultKeepStorage": "20GB",
                "enabled": true
            }
        },
        "experimental": false,
        "features": {
            "buildkit": true
        }
    }
    路径为: /etc/docker/daemon.json/var/snap/docker/current/config/daemon.json
  14. 修改 Docker 的 cgroup driver 为 systemd
    {
    + "exec-opts": ["native.cgroupdriver=systemd"]
    }
    将上面的内容添加到 Docker 的配置文件中,路径一般为:/etc/docker/daemon.json
  15. Ubuntu 安装 Golang
    # https://golang.google.cn/dl/
    # https://golang.google.cn/doc/install
    # https://goproxy.cn/
    
    wget -O - https://golang.google.cn/dl/go1.19.1.linux-amd64.tar.gz | tar -C $HOME -xz
    export PATH=$PATH:$HOME/go/bin
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
    
    # ubuntu
    sudo add-apt-repository ppa:longsleep/golang-backports
    sudo apt update && sudo apt install golang -y
  16. Ubuntu 安装 podman 及 podman-compose
    # podman(https://podman.io/getting-started/installation)
    sudo apt install podman
    
    # podman-compose(https://github.com/containers/podman-compose)
    sudo apt install python3-pip
    pip3 install podman-compose
    
    # qemu-system
    sudo apt-get install qemu-system-x86
    
    # gvproxy
    wget -O gvproxy https://github.com/containers/gvisor-tap-vsock/releases/download/v0.4.0/gvproxy-linux
    chmod +x gvproxy
    sudo mv ./gvproxy /usr/libexec/podman/
    修改 /etc/containers/registries.conf 文件,让 podman 能够支持从 docker 上拉取镜像
    + unqualified-search-registries = ["docker.io", "quay.io"]
  17. Ubuntu 安装 Homebrew
    # 官网:https://brew.sh/
    # 镜像:https://mirrors.bfsu.edu.cn/help/homebrew/
    
    export HOMEBREW_INSTALL_FROM_API=1
    export HOMEBREW_API_DOMAIN="https://mirrors.bfsu.edu.cn/homebrew-bottles/api"
    export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.bfsu.edu.cn/homebrew-bottles"
    export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.bfsu.edu.cn/git/homebrew/brew.git"
    export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-core.git"
    
    git clone --depth=1 https://mirrors.bfsu.edu.cn/git/homebrew/install.git brew-install
    /bin/bash brew-install/install.sh
    rm -rf brew-install
    
    test -r ~/.zshrc && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.zshrc
  18. Caddy
    # To install cloudflare, run the following command
    # caddy add-package github.com/caddy-dns/cloudflare
    
    # https://caddyserver.com/docs/caddyfile/options
    {
        #debug
        log {
            output file /var/log/caddy/caddy.log
            format json
            level ERROR
        }
    }
    
    # default directives order: https://caddyserver.com/docs/caddyfile/directives#directive-order
    site {
        tls !!!email
        tls {
            dns cloudflare !!!key
        }
    
        root * /usr/share/caddy
        file_server
        #reverse_proxy 127.0.0.1:8080
    
        @websockets {
            path /ws
            header Connection upgrade
            header Upgrade websocket
        }
        #reverse_proxy @websockets unix//dev/shm/ws.sock
        reverse_proxy @websockets 127.0.0.1:9090
    }
  19. Windows11 开启 DoH 1. 查看系统自带支持的 DoH 服务器地址
    # 方式一
    Get-DnsClientDohServerAddress
    
    # 方式二
    netsh dns show encryption
    2. 添加常用的 DoH 服务器
    # DNSPod https://www.dnspod.cn/products/publicdns
    netsh dns add encryption server=119.29.29.29 dohtemplate=https://doh.pub/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=2402:4e00:: dohtemplate=https://doh.pub/dns-query autoupgrade=no udpfallback=no
    
    # AliDNS https://alidns.com/
    netsh dns add encryption server=223.5.5.5 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=223.6.6.6 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=2400:3200::1 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    netsh dns add encryption server=2400:3200:baba::1 dohtemplate=https://dns.alidns.com/dns-query autoupgrade=no udpfallback=no
    3. 配置系统网络 在系统设置 "Network & internet > Ethernet" 中将 DNS Server assignmentAutomatic (DHCP) 改为 Manual 并设置
    | IPv4                  | On                        |
    | Preferred DNS         | 119.29.29.29              |
    | DNS over HTTPS        | On (automatic template)   |
    | Fallback to plaintext | Off                       |
    | Alternate DNS         |                           |
    | DNS over HTTPS        | Off                       |
    
    | IPv6                  | On                        |
    | Preferred DNS         | 2402:4e00::               |
    | DNS over HTTPS        | On (automatic template)   |
    | Fallback to plaintext | Off                       |
    | Alternate DNS         |                           |
    | DNS over HTTPS        | Off                       |
    4. 使用 https://www.dnsleaktest.com/ 测试
  20. Windows11 中为 WSL2 开启 KVM 支持权限设置 1. 确保内核版本比较新
    # 如果需要更新内核可以手动到 https://www.catalog.update.microsoft.com/Search.aspx?q=wsl 下载预编译好的内核
    $ uname -r
    5.15.79.1-microsoft-standard-WSL2
    2. 将用户添加到组 kvm 中
    $ sudo usermod -a -G kvm ${USER}
    3. 修改 https://learn.microsoft.com/en-us/windows/wsl/wsl-config
    $ cat << EOF | sudo tee /etc/wsl.conf
    [boot]
    command = /bin/bash -c 'chown root:lvm /dev/kvm && chmod 660 /dev/kvm'
    
    [wsl2]
    nestedVirtualization=true
    EOF
    4. 确认 kvm 可用
    $ kvm-ok
    INFO: /dev/kvm exists
    KVM acceleration can be used
  21. Windows 中为 Hyper-V 中的虚拟机开启虚拟化支持 在 Windows 中以管理员身份打开 powershell
    # 查看有哪些虚拟机
    $ Get-VM
    Name              State   CPUUsage(%) MemoryAssigned(M) Uptime           Status             Version
    ----              -----   ----------- ----------------- ------           ------             -------
    UbuntuServer22.04 Running 0           12288             00:42:38.0460000 Operating normally 9.0
    
    # 查看指定虚拟机是否已经打开了虚拟化
    $ Get-VMProcessor -VMName UbuntuServer22.04 | fl | findstr ExposeVirtualizationExtensions
    ExposeVirtualizationExtensions               : False
    
    # 开启指定虚拟机的虚拟化支持
    $ Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName UbuntuServer22.04
    
    # 确认指定虚拟机开启了虚拟化
    $ Get-VMProcessor -VMName UbuntuServer22.04 | fl | findstr ExposeVirtualizationExtensions
    ExposeVirtualizationExtensions               : True
    进入虚拟机,确认虚拟化是否已经开启
    $ egrep -o 'vmx|xvm' /proc/cpuinfo
    vmx
  22. Windows 中配置 Hyper-V 中的虚拟机使用 WSL 同网段的静态 IP 首先获取 WSL 的信息
    $ ip a show dev eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1280 qdisc mq state UP group default qlen 1000
        link/ether 00:15:5d:51:33:53 brd ff:ff:ff:ff:ff:ff
        inet 172.31.203.89/20 brd 172.31.207.255 scope global eth0
        valid_lft forever preferred_lft forever
        inet6 fe80::215:5dff:fe51:3353/64 scope link
        valid_lft forever preferred_lft forever
    
    $ ip r
    default via 172.31.192.1 dev eth0 proto kernel
    在 Hyper-V Manager 中配置虚拟机使用名为 WSL 的虚拟交换机,并使用静态的 MAC 地址。
    配置 Hyper-V 中的 Ubuntu 虚拟机使用静态 IP 地址 172.31.203.100,编辑文件 /etc/netplan/50-cloud-init.yaml
    network:
        version: 2
        ethernets:
            eth0:
            addresses:
            - 172.31.203.100/20
            routes:
            - to: default
                via: 172.31.192.1
            nameservers:
                addresses: [172.31.192.1]
    然后使用命令 netplan apply 应用修改即可。
  23. Windows 11 中允许局域网访问 WSL2 将下面的内容添加到 C:\Users\%USERNAME%\.wslconfig 文件中
    [wsl2]
    networkingMode=mirrored
    dnsTunneling=true
    firewall=true
    autoProxy=true
    
    [experimental]
    hostAddressLoopback=true
    并在 Windows 中使用命令 wsl --shutdown 重启 WSL2 后即可生效。 参考:https://learn.microsoft.com/en-us/windows/wsl/wsl-config
  24. Windows Terminal 配置
    {
        "actions": 
        [
            {
                "command": 
                {
                    "action": "copy",
                    "singleLine": false
                },
                "id": "User.copy",
                "keys": "ctrl+shift+c"
            },
            {
                "command": "paste",
                "id": "User.paste",
                "keys": "ctrl+shift+v"
            }
        ],
        "copyOnSelect": true,
        "multiLinePasteWarning": false,
        "defaults":
        {
            "adjustIndistinguishableColors": "never",
            "antialiasingMode": "cleartype",
            "bellStyle": "taskbar",
            "closeOnExit": "always",
            "colorScheme": "Dracula+",
            "cursorShape": "filledBox",
            "experimental.retroTerminalEffect": false,
            "font":
            {
                "face": "CaskaydiaMono Nerd Font Propo",
                "size": 13.0,
                "weight": "normal"
            },
            "historySize": 9999999,
            "intenseTextStyle": "all",
            "opacity": 90,
            "padding": "6",
            "suppressApplicationTitle": true,
            "useAcrylic": true,
            "useAtlasEngine": true
        },
        "schemes": [
            {
                "background": "#212121",
                "black": "#21222C",
                "blue": "#82AAFF",
                "brightBlack": "#545454",
                "brightBlue": "#D6ACFF",
                "brightCyan": "#A4FFFF",
                "brightGreen": "#69FF94",
                "brightPurple": "#FF92DF",
                "brightRed": "#FF6E6E",
                "brightWhite": "#F8F8F2",
                "brightYellow": "#FFCB6B",
                "cursorColor": "#ECEFF4",
                "cyan": "#8BE9FD",
                "foreground": "#F8F8F2",
                "green": "#50FA7B",
                "name": "Dracula+",
                "purple": "#C792EA",
                "red": "#FF5555",
                "selectionBackground": "#F8F8F2",
                "white": "#F8F8F2",
                "yellow": "#FFCB6B"
            }
        ]
    }
  25. 设置 Artifactory 搭建的 Chocolatey 的镜像
    # https://jfrog.com/help/r/artifactory-working-with-chocolatey-packages-in-artifactory/artifactory-working-with-chocolatey-packages-in-artifactory
    # https://stackoverflow.com/questions/49413259/mirror-chocolatey-with-artifactory
    choco source add -n artifactory -s="https://artifactory.ubisoft.org/artifactory/api/nuget/choco-remote" --priority 1 --bypass-proxy --allow-self-service
    choco source disable -n chocolatey
    choco source enable -n artifactory
  26. Proxy
    -----BEGIN AGE ENCRYPTED FILE-----
    YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBmTFkxaGxjSWdBU1VGRWla
    cWhaTk53IDE4CmZydlhYWnlJNnAyL251V2Nkb09uK0dqaEF6V1dqYlRBM05iL09s
    U2taK00KLS0tIEZpUHdpSFY2anFiUDQ3R0x1ZGVNWUcvZDJzSkVMQW9sZ2VnTG4r
    T0k4d1EKoibNsWQXLW05s4SANzOvDSC4FGmriisaFQ/VLpJ2aLAp8Y8Z7/ukKOd1
    TjMSpLNRoYEuN4kO28NmJHoHryR6p5qmXsjYULQW97zwCvtvBTJ+0x0lOAL7pbs7
    9jN6ijGJnvlzHO2PYz+PZ4VHYa38akCCaZW3ih7QxUwWXwJfhcl4lBrZ+DeXw6wG
    PLH2yReV2ojY7/QBOBzYuhrWsbdmjNWdKFbC1K3in3KmBTCmCCgz8Xq0IVa+xfIL
    ouW11ZYwAqzANqmI4AeVsf3TdR4ld4dNY5Kk3Ca6C74GvHrYma0JQXAmdMWjkQVL
    TN4uJKhwlPyAOulHZOVc5c0cc4bp2vvd6iGUjDRHDZ7iDS3oCrSZX7+C2SaQr6dY
    n04Gwl5thhyykRtEZ/Su8i2fb35ATbqFhwY8nL1wn8+JpXy0gB7KveVfiXHS0Qv4
    8TVLB61og8avTIao4TxlW/b5RhENSRN6mggVuKCQT1G+Q8Oof0FJNcZzJYNiOWT3
    jlzwdnGObWgdQjDYrm0k+i4VHolfNJhdaHbhcY2nXGHs6DAhtJuWOS+7rkqH23oL
    RNZTVyiIXei8xKAjV/i14V1Gaa1gOUuOHeeNnW2GCm6KdeS11ANOu81JzomlaJBE
    gfwE19m26VAmW+p+3Nx6aUj9K18f7mobkY1MWVCEXG0Yn6E7wP3Uegyp9B8y0AfZ
    nLAg6q/aL14NfJMkME0IDZUbl3OzSQI1b8CZlUDt6QjIbwkhuKcdrLAm0vrYmrcy
    BIq5skzAZjiWE1hwJTHeSwVpvcvBOVcYf1k6f1ZsWhTUnjQQ7pL0HjVQ0lecW/jG
    q7WnxGN3WBRCqJCA2+lVrd/CWZ3Bx2X4/0elitI4k1SRL/CneAgoAz+suEwoAIHv
    oRKWfYLqk5ND2sfTFtb+k5C4FQLOVBLj+rdSUZyEDTW7zDRCvx4QsZtEeYUouVXe
    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
    XtIWhSBuYS+8Pws=
    -----END AGE ENCRYPTED FILE-----

文章作者: Kiba Amor
文章链接: https://kibazen.cn/memo/
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 Kiba Amor !
  目录