# 📜

policy (opens new window)

# protocol buffers Scalar Value Types

https://developers.google.com/protocol-buffers/docs/proto3#scalar (opens new window)

# convert protocol buffer message to python dict object

https://stackoverflow.com/questions/19734617/protobuf-to-json-in-python (opens new window)

# 解决终端ls中文显示成八进制

apt-get install language-pack-zh-hans

export LANG="zh_CN.UTF-8"
export LANGUAGE="zh_CN:zh"
export LC_NUMERIC="zh_CN"
export LC_TIME="zh_CN"
export LC_MONETARY="zh_CN"
export LC_PAPER="zh_CN"
export LC_NAME="zh_CN"
export LC_ADDRESS="zh_CN"
export LC_TELEPHONE="zh_CN"
export LC_MEASUREMENT="zh_CN"
export LC_IDENTIFICATION="zh_CN"
export LC_ALL="zh_CN.UTF-8"
1
2
3
4
5
6
7
8
9
10
11
12
# kvm install window10
apt-get install -y qemu-kvm libvirt-bin bridge-utils

# add users to groups
adduser `id -un` libvirt
adduser `id -un` kvm

# verify install
virsh list --all

apt-get install -y virtinst

# optional - (this command can list call os-variant options)
apt-get install -y libosinfo-bin
osinfo-query os

# create vm
# disk bus options: ide scsi usb virtio xen

# create disk iso
sudo qemu-img create -f qcow2 "/data/vm/windows.img" 128G

# download virtio-win iso from https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

# create vm
sudo virt-install \
    --name windows10 \
    --ram 4096 \
    --vcpus=2 \
    --disk path="/data/vm/windows.img",format=qcow2,size=128,bus=virtio \
    --accelerate \
    --network network=default,model=virtio \
    --os-type=windows \
    --cdrom /var/lib/libvirt/isos/Win10.iso \
    --disk /data/vm/virtio-win-0.1.225.iso,device=cdrom \
    --graphics vnc,listen=0.0.0.0,port=5920 \
    --noautoconsole

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

通过vnc进行连接,然后安装,选择安装磁盘的时候点击加载驱动程序,选择virtio-win-0.1.225.iso这张盘的amd64/Win10文件夹

libvirt Networking Handbook (opens new window)

# kvm install ubuntu2204
export ISO="/path/to/vm/ubuntu-22.04.1-desktop-amd64.iso" # Installation media
export NET="br0"                                       # bridge name
# 通过这个命令可以看到整个列表 virt-install --os-variant list
export OS="ubuntu22.04"                 # os type
export VM_IMG="/path/to/vm/ubuntu2204.img" # VM image on disk
sudo virt-install \
    --virt-type=kvm \
    --name ubuntu2204 \
    --ram 16384 \
    --vcpus=8 \
    --os-variant=${OS} \
    --virt-type=kvm \
    --hvm \
    --cdrom=${ISO} \
    --network=bridge=${NET},model=virtio \
    --graphics vnc,listen=0.0.0.0,port=5921 \
    --disk path=${VM_IMG},size=256,bus=virtio,format=qcow2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# PandarXT

# accuracy and precision

Accuracy and precision are two measures of observational error. Accuracy is how close a given set of measurements (observations or readings) are to their true value, while precision is how close the measurements are to each other.

# channel distribution

zc[uv1]=Kintrinsics[RextrinsicsTextrinsics01][xwywzw1] z_c\begin{bmatrix} u\\v\\1 \end{bmatrix} = K_{intrinsics} \begin{bmatrix} \bold{R_{extrinsics}} & \bold{T_{extrinsics}} \\ \bold{0} & 1 \end{bmatrix} \begin{bmatrix} x_w \\ y_w \\ z_w \\ 1 \end{bmatrix}

Local tangent plane coordinates (opens new window)

3d rotation convert (opens new window)

# rotation matrix (opens new window)
Rx(θ)=[1000cosθsinθ0sinθcosθ]Ry(θ)=[cosθ0sinθ010sinθ0cosθ]Rz(θ)=[cosθsinθ0sinθcosθ0001]R=Rz(α)Ry(β)Rx(γ)=[cosαsinα0sinαcosα0001][cosβ0sinβ010sinβ0cosβ][1000cosγsinγ0sinγcosγ]=[cosαcosβcosαsinβsinγsinαcosγcosαsinβcosγ+sinαsinγsinαcosβsinαsinβsinγ+cosαcosγsinαsinβcosγcosαsinγsinβcosβsinγcosβcosγ] R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix} \\\\ R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} \\\\ R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \\\\ \begin{align} R = R_z(\alpha)R_y(\beta)R_x(\gamma) &= \begin{bmatrix} \cos\alpha & -\sin\alpha & 0 \\ \sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos\beta & 0 & \sin\beta \\ 0 & 1 & 0 \\ -\sin\beta & 0 & \cos\beta \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\gamma & -\sin\gamma \\ 0 & \sin\gamma & \cos\gamma \end{bmatrix} \\ &= \begin{bmatrix} \cos\alpha\cos\beta & \cos\alpha\sin\beta\sin\gamma - \sin\alpha\cos\gamma & \cos\alpha\sin\beta\cos\gamma + \sin\alpha\sin\gamma \\ \sin\alpha\cos\beta & \sin\alpha\sin\beta\sin\gamma + \cos\alpha\cos\gamma & \sin\alpha\sin\beta\cos\gamma - \cos\alpha\sin\gamma \\ -\sin\beta & \cos\beta\sin\gamma & \cos\beta\cos\gamma \end{bmatrix} \end{align}
# reference frame

# netplan

配置连接无线网络

network:
  version: 2
  wifis:
    interface_name:
      optional: true
      access-points:
        ssid_of_wifi:
          password : "passwd"
      dhcp4: true
      nameservers:
        addresses:
        - 1.1.1.1
        - 8.8.8.8

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# UPnP (opens new window)

UPnP 的应用场景
UPnP 典型的应用场景就是家庭智能设备的互联,还有,目前在网络应用比如 BitTorrent, eMule,IPFS,Ethereum 等使用 P2P 技术的软件,UPnP 功能为它们带来极大的便利。比如:利用 UPnP 能自动的把它们侦听的端口号映射到公网地址上,这样,公网上的用户也能对当前的 NAT 内网主机直接发起连接。

实现 UPnP 必须同时满足三个条件:

NAT 网关设备必须支持 UPnP 功能;这是因为它需要扮演控制点(239.255.255.250:1900)的角色,控制点提供的是 SSDP 服务。
操作系统必须支持 UPnP 功能;比如 Windows 系列操作系统;
应用程序必须支持 UPnP 功能;比如 Bt、eMule、IPFS, Ethereum 等。
以上三个条件必须同时满足,缺一不可。

# 集合运算

A\BA\backslash B表示在集合AA中但是不在集合BB的元素

例如:

A={1,2,3},B={2,3,4},A\B={1}A=\{1,2,3\},B=\{2,3,4\},A\backslash B = \{1\}

# python typing

# Difference between TypeVar('T', A, B) and TypeVar('T', bound=Union[A, B])