vault backup: 2024-02-17 22:54:05

This commit is contained in:
2024-02-17 22:54:05 +08:00
parent 258b5f5cb0
commit e8b081471f
44 changed files with 53 additions and 219 deletions

View File

@@ -1,15 +0,0 @@
{
"nodes":[
{"id":"6df0eaf40a7d8727","x":1000,"y":-1200,"width":475,"height":880,"type":"group","label":"應該是可用的流程"},
{"id":"de7e5a2cc42e64ed","x":1020,"y":-808,"width":429,"height":149,"type":"text","text":"[PowerWriteDCValueIndex](https://learn.microsoft.com/zh-tw/windows/win32/api/powersetting/nf-powersetting-powerwritedcvalueindex)\n```c\nPowerWriteDCValueIndex(NULL, scheme,\n &GUID_PROCESSOR_SETTINGS_SUBGROUP, \n &GUID_PROCESSOR_THROTTLE_MAXIMUM, percent);\n```"},
{"id":"1e9a472de925cf55","type":"text","text":"[PowerSetActiveScheme](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/nf-powersetting-powersetactivescheme)","x":1109,"y":-620,"width":252,"height":60},
{"id":"f62cd6f094359169","x":1020,"y":-520,"width":435,"height":180,"type":"text","text":"# 參考\n- [Tweak CPU Power Elegantly on Windows - kkocdko's blog](https://kkocdko.site/post/202110041950)\n- [Powersetting.h header - Win32 apps | Microsoft Learn](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/)"},
{"id":"73203537aba83f20","x":1020,"y":-975,"width":429,"height":151,"type":"text","text":"[PowerWriteACValueIndex](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/nf-powersetting-powerwriteacvalueindex)\n```c\nPowerWriteACValueIndex(NULL, scheme, \n &GUID_PROCESSOR_SETTINGS_SUBGROUP,\n &GUID_PROCESSOR_THROTTLE_MAXIMUM, percent);\n```"},
{"id":"a6fd325c1a234a01","type":"text","text":"[PowerGetActiveScheme](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/nf-powersetting-powergetactivescheme)\n```c\nGUID guid, *scheme = &guid; PowerGetActiveScheme(NULL, &scheme);\n```","x":1062,"y":-1180,"width":346,"height":125}
],
"edges":[
{"id":"c8cada0b4953dac7","fromNode":"a6fd325c1a234a01","fromSide":"bottom","toNode":"73203537aba83f20","toSide":"top","label":"SchemeGuid"},
{"id":"d5fc60db374c853c","fromNode":"73203537aba83f20","fromSide":"bottom","toNode":"de7e5a2cc42e64ed","toSide":"top"},
{"id":"66b5d1432c8e9232","fromNode":"de7e5a2cc42e64ed","fromSide":"bottom","toNode":"1e9a472de925cf55","toSide":"top"}
]
}

View File

@@ -1,8 +0,0 @@
## Common Rule
### LowerCamel case
Variables and functions start with lower camel case. e.g.
```cpp
int myName = 0;
void doSomething(int argNum1);
```

View File

@@ -1 +0,0 @@
- [Qt音视频开发03-ffmpeg倍速播放半倍速/2倍速/4倍速/8倍速_feiyangqingyun的博客-CSDN博客_ffmpeg倍速播放](https://blog.csdn.net/feiyangqingyun/article/details/127904116)

View File

@@ -0,0 +1,29 @@
{
"nodes":[
{"id":"2387a7bafd0d1fa1","type":"text","text":"Linux","x":-60,"y":-60,"width":112,"height":60},
{"id":"480671b59b65fbee","type":"text","text":"網路","x":-260,"y":-200,"width":123,"height":60},
{"id":"8b9a102062abf2ea","type":"text","text":"![[smb client]]","x":-660,"y":-231,"width":290,"height":123},
{"id":"0da49f9f13cb5ea0","type":"text","text":"虛擬化","x":140,"y":-200,"width":125,"height":60},
{"id":"67febece2a817d3a","type":"text","text":"系統管理","x":140,"y":80,"width":125,"height":60},
{"id":"c30ec48841c09729","type":"text","text":"# LOG 管理\n[[journalctl]]","x":341,"y":80,"width":186,"height":100},
{"id":"89e25cea38eee1c6","type":"text","text":"# 定時操作\n[[crontab]]","x":347,"y":220,"width":180,"height":100},
{"id":"631ba79f09378fa8","type":"text","text":"![[00. Inbox/Linux/Docker|Docker]]","x":341,"y":-238,"width":250,"height":137},
{"id":"d5901d4a7879a984","type":"text","text":"架站","x":-385,"y":-413,"width":125,"height":60},
{"id":"5396ff224cf2433d","type":"text","text":"- [[Apache]]\n- [[Gitea]]\n- [[Grafana]]\n- [[Nextcloud]]\n- [[Pelican blog]]\n- [[Proxmox VE]]\n- [[Storj]]\n- [[filebrowser]]\n- [[freshrss]]","x":-700,"y":-480,"width":242,"height":194},
{"id":"0211a8b636cb3542","type":"text","text":"指令操作","x":-262,"y":80,"width":125,"height":60},
{"id":"584c8fe580aa5c65","type":"text","text":"- [[cut]]\n- [[scp]]\n- [[timedatectl]]\n- [[systemd]]","x":-620,"y":55,"width":250,"height":110}
],
"edges":[
{"id":"2621855f17f1fce7","fromNode":"2387a7bafd0d1fa1","fromSide":"right","toNode":"0da49f9f13cb5ea0","toSide":"left"},
{"id":"63fe0dc1ef02bcf0","fromNode":"2387a7bafd0d1fa1","fromSide":"right","toNode":"67febece2a817d3a","toSide":"left"},
{"id":"8b1293fe476ce994","fromNode":"2387a7bafd0d1fa1","fromSide":"left","toNode":"480671b59b65fbee","toSide":"right"},
{"id":"7b14c2274a6a7dce","fromNode":"480671b59b65fbee","fromSide":"left","toNode":"8b9a102062abf2ea","toSide":"right"},
{"id":"3fb7bd17056728f2","fromNode":"0da49f9f13cb5ea0","fromSide":"right","toNode":"631ba79f09378fa8","toSide":"left"},
{"id":"47dcc8ff2aa219d2","fromNode":"67febece2a817d3a","fromSide":"right","toNode":"c30ec48841c09729","toSide":"left"},
{"id":"b9cbf23293526def","fromNode":"67febece2a817d3a","fromSide":"right","toNode":"89e25cea38eee1c6","toSide":"left"},
{"id":"305a94a3648fc58b","fromNode":"d5901d4a7879a984","fromSide":"left","toNode":"5396ff224cf2433d","toSide":"right"},
{"id":"1007d8512d956cdb","fromNode":"480671b59b65fbee","fromSide":"left","toNode":"d5901d4a7879a984","toSide":"right"},
{"id":"c6875871d1de0864","fromNode":"2387a7bafd0d1fa1","fromSide":"left","toNode":"0211a8b636cb3542","toSide":"right"},
{"id":"40f0ca450747f830","fromNode":"0211a8b636cb3542","fromSide":"left","toNode":"584c8fe580aa5c65","toSide":"right"}
]
}

View File

@@ -1,21 +0,0 @@
Olympus
EM系列 (軍艦部)
EM1 旗艦
EM5 次旗艦
EM10 摸到邊
(以上羅馬數字越大世代越新)
PEN系列 (無軍艦部)
PEN-F 類旁軸旗艦 (擁有伊登12色環 可細部調整各顏色)
E-P系列 無觀景窗的PEN-F
E-PL系列 該品牌入門款
(以上阿拉伯數字越大世代越新)
------------------------
OM system: (換人經營 目前變這個品牌名)
OM系列 (軍艦部)
OM-1 旗艦
OM-5 次旗艦

View File

@@ -1,7 +0,0 @@
目前所用的item:
```
Base.Axe,Base.DoubleBarrelShotgun,Base.AmmoStrap_Bullets,Base.AmmoStrap_Shells,Base.SmithingMag1,Base.SmithingMag2,Base.SmithingMag3,Base.SmithingMag4,Base.223BulletsMold,Base.308BulletsMold,Base.9mmBulletsMold,Base.Book,Base.BookCarpentry1,Base.BookCarpentry2,Base.BookCarpentry3,Base.BookCarpentry4,Base.BookCarpentry5,Base.BookElectricity1,Base.BookElectricity2,Base.BookElectricity3,Base.BookElectricity4,Base.BookElectricity5,Base.BookFarming1,Base.BookFarming2,Base.BookFarming3,Base.BookFarming4,Base.BookFarming5,Base.BookFarming2,Base.BookFarming3,Base.BookFarming4,Base.BookFirstAid1,Base.BookFirstAid2,Base.BookFirstAid3,Base.BookFirstAid4,Base.BookFirstAid5,Base.BookFirstAid2,Base.BookForaging1,Base.BookMechanics1,Base.BookMechanics2,Base.BookMetalWelding1,Base.BookMetalWelding2,Base.BookTailoring1,Base.BookTrapping1,Base.AssaultRifle,Base.BookBlacksmith1,Base.SmithingMag2,Base.BookBlacksmith3,Base.BookBlacksmith4,Base.BookBlacksmith5,Base.Machete,Base.Katana,Base.SpearMachete,Base.BookCooking1,Base.BookCooking2,Base.BookCooking3,Base.BookCooking4,Base.BookCooking5,Base.556Bullets,Base.556Box,Base.556Clip,Base.9mmClip,Base.45Clip,Base.308Clip
```
## 參考
- [Item code](https://pzwiki.net/wiki/Items)

View File

@@ -1,3 +0,0 @@
![[Pasted image 20230504183439.png|800]]
![[Pasted image 20230504183452.png|800]]

View File

@@ -1,9 +0,0 @@
{
"nodes":[
{"id":"0138bfb5c46d71f1","x":-149,"y":-191,"width":329,"height":91,"type":"text","text":"1. 用[[powercfg powerthrottling]]關閉 VirtualBox power throttling。"},
{"id":"d34f3157e07cb50d","x":-200,"y":40,"width":100,"height":50,"color":"2","type":"text","text":"開始"}
],
"edges":[
{"id":"5c4879a42c2db8ac","fromNode":"d34f3157e07cb50d","fromSide":"top","toNode":"0138bfb5c46d71f1","toSide":"bottom"}
]
}

View File

@@ -0,0 +1,21 @@
{
"nodes":[
{"id":"e724a0b36766d3a9","type":"group","x":440,"y":-480,"width":475,"height":880,"label":"應該是可用的流程"},
{"id":"0138bfb5c46d71f1","type":"text","text":"1. 用[[powercfg powerthrottling]]關閉 VirtualBox power throttling。","x":-149,"y":-191,"width":329,"height":91},
{"id":"d34f3157e07cb50d","type":"text","text":"開始","x":-200,"y":40,"width":100,"height":50,"color":"2"},
{"id":"c276871e8748cbfe","type":"text","text":"[PowerWriteDCValueIndex](https://learn.microsoft.com/zh-tw/windows/win32/api/powersetting/nf-powersetting-powerwritedcvalueindex)\n```c\nPowerWriteDCValueIndex(NULL, scheme,\n &GUID_PROCESSOR_SETTINGS_SUBGROUP, \n &GUID_PROCESSOR_THROTTLE_MAXIMUM, percent);\n```","x":460,"y":-88,"width":429,"height":149},
{"id":"b89cd7d463506018","type":"text","text":"[PowerSetActiveScheme](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/nf-powersetting-powersetactivescheme)","x":549,"y":100,"width":252,"height":60},
{"id":"dd89a32995de8e4a","type":"text","text":"# 參考\n- [Tweak CPU Power Elegantly on Windows - kkocdko's blog](https://kkocdko.site/post/202110041950)\n- [Powersetting.h header - Win32 apps | Microsoft Learn](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/)","x":460,"y":200,"width":435,"height":180},
{"id":"154d88218d26f035","type":"text","text":"[PowerWriteACValueIndex](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/nf-powersetting-powerwriteacvalueindex)\n```c\nPowerWriteACValueIndex(NULL, scheme, \n &GUID_PROCESSOR_SETTINGS_SUBGROUP,\n &GUID_PROCESSOR_THROTTLE_MAXIMUM, percent);\n```","x":460,"y":-255,"width":429,"height":151},
{"id":"bb0881e617ca2f52","type":"text","text":"[PowerGetActiveScheme](https://learn.microsoft.com/en-us/windows/win32/api/powersetting/nf-powersetting-powergetactivescheme)\n```c\nGUID guid, *scheme = &guid; PowerGetActiveScheme(NULL, &scheme);\n```","x":502,"y":-460,"width":346,"height":125},
{"id":"1b7a2018be9a2542","type":"text","text":"- [[設定CPU Power mode]]","x":80,"y":35,"width":250,"height":60}
],
"edges":[
{"id":"5c4879a42c2db8ac","fromNode":"d34f3157e07cb50d","fromSide":"top","toNode":"0138bfb5c46d71f1","toSide":"bottom"},
{"id":"631e78e7dee93490","fromNode":"d34f3157e07cb50d","fromSide":"right","toNode":"1b7a2018be9a2542","toSide":"left"},
{"id":"f60c6e07e0ef6a98","fromNode":"c276871e8748cbfe","fromSide":"bottom","toNode":"b89cd7d463506018","toSide":"top"},
{"id":"7fada69bb11ae874","fromNode":"154d88218d26f035","fromSide":"bottom","toNode":"c276871e8748cbfe","toSide":"top"},
{"id":"d4c1beba2bea0171","fromNode":"bb0881e617ca2f52","fromSide":"bottom","toNode":"154d88218d26f035","toSide":"top","label":"SchemeGuid"},
{"id":"7000cd2de2280a0a","fromNode":"1b7a2018be9a2542","fromSide":"right","toNode":"e724a0b36766d3a9","toSide":"left"}
]
}

View File

@@ -1,3 +0,0 @@
- [MFC枚举USB设备碰到的一个疑难还没解决 - Jojodru - 博客园](https://www.cnblogs.com/jojodru/p/3218081.html)
- [遍历当前USB设备信息_51CTO博客_获取usb设备信息](https://blog.51cto.com/u_15127593/3620239)
- [遍历Windows USB设备树的几种方法_-飞鹤-的博客-CSDN博客_设备实例id](https://blog.csdn.net/feihe0755/article/details/103747511)

View File

@@ -11,9 +11,9 @@
{"id":"bf816d5dd96ac24c","type":"text","text":"判斷是非的道德感","x":-680,"y":-32,"width":250,"height":60}, {"id":"bf816d5dd96ac24c","type":"text","text":"判斷是非的道德感","x":-680,"y":-32,"width":250,"height":60},
{"id":"36a3913993b8a464","type":"text","text":"良知","x":-360,"y":-32,"width":100,"height":60}, {"id":"36a3913993b8a464","type":"text","text":"良知","x":-360,"y":-32,"width":100,"height":60},
{"id":"1ad4e8eefb07a55f","type":"text","text":"## 不道德\n1. 不勞而獲的財富\n2. 缺乏良知的歡樂\n3. 沒有品味的知識\n4. 缺乏道德的商業\n5. 不人道的科學\n6. 沒有犧牲的崇拜\n7. 無原則的政治","x":-1100,"y":-118,"width":250,"height":232}, {"id":"1ad4e8eefb07a55f","type":"text","text":"## 不道德\n1. 不勞而獲的財富\n2. 缺乏良知的歡樂\n3. 沒有品味的知識\n4. 缺乏道德的商業\n5. 不人道的科學\n6. 沒有犧牲的崇拜\n7. 無原則的政治","x":-1100,"y":-118,"width":250,"height":232},
{"id":"5568235e8c0f93fd","x":-680,"y":-148,"width":140,"height":60,"type":"text","text":"誠信"}, {"id":"5568235e8c0f93fd","type":"text","text":"誠信","x":-680,"y":-148,"width":140,"height":60},
{"id":"fe97a4207f8cc0d1","x":-680,"y":-210,"width":140,"height":60,"type":"text","text":"平和"}, {"id":"fe97a4207f8cc0d1","type":"text","text":"平和","x":-680,"y":-210,"width":140,"height":60},
{"id":"e9c988d9c758436c","x":-1320,"y":-700,"width":529,"height":264,"type":"text","text":"| 全人 | 四項需求 | 四項才能 | 四項品質 | 心聲 |\n|:------:|:-------:|:-------------:|:------:|:------:|\n| 身體 | 生活 | 身體能力PQ | 自律 | 需求<br>(看到並滿足需求) |\n| 心智 | 學習 | 智力IQ | 願景 | 天賦才能<br>(自律的關注焦點)|\n| 情感 | 愛 | 情感力EQ | 熱情 | 熱情<br>(熱衷於某事)|\n| 心靈 | 發揮影響力| 精神力SQ | 良知 | 良知<br>(做正確的事)|"} {"id":"e9c988d9c758436c","type":"text","text":"| 全人 | 四項需求 | 四項才能 | 四項品質 | 心聲 |\n|:------:|:-------:|:-------------:|:------:|:------:|\n| 身體 | 生活 | 身體能力PQ | 自律 | 需求<br>(看到並滿足需求) |\n| 心智 | 學習 | 智力IQ | 願景 | 天賦才能<br>(自律的關注焦點)|\n| 情感 | 愛 | 情感力EQ | 熱情 | 熱情<br>(熱衷於某事)|\n| 心靈 | 發揮影響力| 精神力SQ | 良知 | 良知<br>(做正確的事)|","x":-1100,"y":-760,"width":529,"height":264}
], ],
"edges":[ "edges":[
{"id":"241af6fdb0c62886","fromNode":"2949ff9fb5621558","fromSide":"right","toNode":"c00f7241e4fb1e59","toSide":"top","fromEnd":"arrow","label":"需要"}, {"id":"241af6fdb0c62886","fromNode":"2949ff9fb5621558","fromSide":"right","toNode":"c00f7241e4fb1e59","toSide":"top","fromEnd":"arrow","label":"需要"},

View File

@@ -1 +0,0 @@
- [The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/?fbclid=IwAR0iZMkTCkhHzGbL41qqAmdZADiGtZe7Cw556NMuXpwv4cfD0yEer0lcCiU)

View File

@@ -1,13 +0,0 @@
## Hyper-V
### Set screen resolution
1. `sudo vim /etc/default/grub`
2. Find `GRUB_CMDLINE_LINUX_DEFAULT`
3. Add `video=hyperv_fb:1600x9000`, e.g. `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1600x900"`
4. `sudo update-grub `
5. `sudo reboot`
## VirtualBox
### Settting
#### 操作分享資料夾
需要把目前的使用者加到`vboxsf` group才能夠操作分享資料夾。
`sudo adduser $USER vboxsf`

View File

@@ -1,134 +0,0 @@
### 登入
- 帳號:`pi`
- 密碼:`<你自己設的密碼>`
### 設定固定IP
#### Ethernet
打開`/etc/dhcpcd.conf`,設定如下:
```
interface eth0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_servers=168.95.1.1 1.1.1.1
```
#### WIFI
打開`/etc/dhcpcd.conf`,設定如下:
```
interface wlan0
static ip_address=192.168.1.21/24
static routers=192.168.1.1
static domain_name_servers=168.95.1.1 1.1.1.1
```
確定`dhcpcd``networking`是enabled不確定可以直接用下面的命令來啟動。
```shell
systemctl enable dhcpcd ;\
systemctl enable networking
```
### 更新記憶卡容量
- [Taiwan-RaspberryPi | 台灣樹莓派 - (1)更新記憶卡容量](https://www.taiwan-raspberrypi.com/start/setting/1%E6%9B%B4%E6%96%B0%E8%A8%98%E6%86%B6%E5%8D%A1%E5%AE%B9%E9%87%8F/)
### 設定免密碼登入
1. 將自己的public key copy到RaspberryPi上
```
scp ~/.ssh/rpi.pub pi@<IP_ADDR>:~/.ssh/
```
2. 登入到RaspberryPi這一次要輸入密碼
```shell
ssh pi@<IP_ADDR>
```
3. 現在是在RaspberryPi上操作把剛剛的public key加到`authorized_keys`裡面:
```bash
cd ~/.ssh ;\
cat id_rsa.pub >> authorized_keys
```
## 安裝
### Python3
```shell
sudo apt install python3
```
### Docker
#### Install
```shell
# Install some required packages first
sudo apt update ; sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
# Get the Docker signing key for packages
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
# Add the Docker official repos
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
# Install Docker
sudo apt update ; sudo apt install -y --no-install-recommends docker-ce cgroupfs-mount
```
#### Confirm installation
```shell
sudo docker run --rm hello-world
```
如果成功,會有如下的訊息:
![[Pasted image 20210125183754.png]]
### docker-compose
```shell
# Install required packages
sudo apt update ; sudo apt install -y python3-pip libffi-dev
# Install Docker Compose from pip (using Python3)
# This might take a while
sudo pip3 install docker-compose
```
#### Confirm installation
```shell
docker-compose -version
```
會輸出docker-compose的版本類似下面
```
docker-compose version 1.28.0, build unknown
```
## 更新
```shell
sudo apt-get update `# 1. 更新 /etc/apt/sources.list 底下的套件清單。` ;\
sudo apt-get upgrade `# 2. 比對套件清單決定是否需要更新,但如果要更新的套件有相依性問題,則放棄更新。` ;\
sudo apt-get dist-upgrade `# 3. 會處理新版本套件與相依性套件的衝突,並試著安裝/移除有問題的套件來完成更新。` ;\
sudo apt-get autoremove `# 4. 刪除之前因為有相依性而安裝,但現在已經不再使用的套件(非必要)。` ;\
sudo apt-get autoclean `# 5. 清除下載到 /var/cache/apt/archives 的 .deb 套件檔(非必要)` ;\
sudo rpi-update `# 6. 更新核心和韌體到最新版本(可能不穩定),因此更新前一定要先備份重要資料`
```
## 備份
1. 下載必須的工具
```
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
sudo chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin
```
1. 插入隨身碟並將隨身碟mount起來。記住mount的路徑這邊假設是`/mnt/usb0`。
2. 用`lsblk`確認SD卡的device node這邊假設SD卡是`/dev/mmcblk0`。
3. 輸入以下指令將整片microSD卡備份到USB隨身碟
```
sudo dd if=/dev/mmcblk0 of=/mnt/usb0/PiBackup_20220513.img bs=1M
```
這個命令會將整張SD卡dummp到隨身碟SD卡有多大產生的img檔就會有多大。
這個命令會花上好一點時間。
> `dd`命令並不會顯示任何進度或是訊息,若是希望在執行過程中看到一些訊息,可以加入`status=progress`,將可以看到速度的訊息。
> 但是`progress`這個小工具是需要另外安裝的,可以用`sudo apt install progress`來安裝。
> 例:`sudo dd if=/dev/mmcblk0 of=/mnt/usb0/PiBackup_20220513.img bs=1M status=progress`
5. 切換到隨身碟的目錄:`cd /mnt/usb0`。
6. 用以下命令來把img變小
```
sudo pishrink.sh -z PiBackup_20220513.img
```
這個命令也會花上好一點時間。
### 參考
- [[Raspberry Pi] 備份樹莓派系統Micro SD卡的最佳做法_PiShrink @ skybow](https://skybow.pixnet.net/blog/post/121176894-%5Braspberry-pi%5D-%E5%82%99%E4%BB%BD%E6%A8%B9%E8%8E%93%E6%B4%BEsd%E5%8D%A1%E7%9A%84%E6%9C%80%E4%BD%B3%E5%81%9A%E6%B3%95)

View File

@@ -1 +0,0 @@
- [技术面试最后反问面试官的话](https://github.com/yifeikong/reverse-interview-zh)