备忘


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 的区别

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

    # (?<!`)<.+?>(?!`)
    grep -P '(?<!`)<.+?>(?!`)' -R -n .
  6. 处理 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/
  7. 处理无法查看 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
  8. 清空 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
  9. 设置 pip 使用的 mirror
    pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
    pip config set install.trusted-host mirrors.aliyun.com
  10. 设置 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 (linux)
    cat << EOF >> ~/.ssh/config
    Host github.com
        User git
        ProxyCommand nc -x localhost:7890 -Xconnect %h %p
    EOF
    
    # ssh proxy (windows)
    # 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
    
    # 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"
  11. 设置 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
  12. 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
  13. 修改 Docker 的 cgroup driver 为 systemd
    {
    + "exec-opts": ["native.cgroupdriver=systemd"]
    }
    将上面的内容添加到 Docker 的配置文件中,路径一般为:/etc/docker/daemon.json
  14. 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
  15. 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"]
  16. 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
  17. 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
    }
  18. 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/ 测试
  19. 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
  20. 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
  21. 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 应用修改即可。
  22. 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"
            }
        ]
    }
  23. Proxy
    -----BEGIN AGE ENCRYPTED FILE-----
    YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCB0QU1uNGhhMkFiOGtFaU9u
    cWRwZm5RIDE4CnRoVzUxQVcwOGQxTHg3bjhyQ2FEcUFSeTdVZmxnai9jeGhwOUJH
    MURHanMKLS0tIHd1NU9rQzlQODAxcXR6RllUcnpTVUFubHcrbjN6L1JYRmRYU0RX
    VkZ5OTgKHHm8P9FbBuO5kHeN6oROdjL7g4nMeY7IGr/20ph3Sqey9Y8CSrvt/jL1
    lAhb5yS6+fh6QmPsuEg2jUTBb0rKuAyapOESYFfbih8S5Y2+WXGdingj6A7HM9aF
    ypsu6qMGC5VQuhi7Iktr8K+Q8YlypeRjm3UYInmBPRECEphpV6NGztKeKoxmM0b+
    3Pw3SjvN+Qlgd5ymjgyKC8tKVksPszaeYYYTaIIJVlMzLDXvxHwb9373gFRPUuLw
    qkpVfTfP7y4oo43MFDN7K9fC92bg3M/rzN2k704LiJQyKUrfFCUtkXVIoC0cMs3u
    HCYhKasXbiiON+StBNwJ4GVT8k7V0ywT6XKDeAif/wfW0XFYDCU1cky4LhhE6EBX
    q2AMbdwrambPiQMRLPyUTU71w+2gFToKyAr2UhtrekrDZeODhurr2E3BZTs0V2e+
    42N3lgP76HUlSeL0yrDx+xQj+X185xlLIRp0MuQnrz+pPlsnnRtwF0ATqHtmtpWA
    eCLz2J3V9tegTJrbiUlveOUphYxibYNVhDCcjgziXQEZcC7NPcaejyaEx/JS18CF
    EROQySr/UfA6Siacr7hqR0sdpDbbZlHXqBjHnQhvUl+3cyXVSDiafOmLoSXQeH5D
    9LYawnOSowx11B9y0Nik/rTtnOrPPobpNBAAKjGfsqGuReQG3BCXW1S/N+avVOdI
    366G2Olre3DCNUyC3NIFDAiai1OaIeO8jlSpnl87EA+Mx/lMaLdk2PVYSXUsPJAS
    3SCrThei6ZCk5Ie+sTOSrnb1LRgfcFMP3ejHUH9CzIsqXLZf99dzJpcRtbh9rr/V
    1ZGUZb4EYEKNGvbaUniTsYEMZ/LoJFSQJ1wzkRCIlZz80CByQ/SxKBVNPzX7J4f+
    UO0of1mLWxDGqRpa/h83YI3cjZsD0Fws+saMy9dxu63Jv1PzOnEWkTgERmOGWZf7
    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
    -----END AGE ENCRYPTED FILE-----

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