5月 24, 2022 Linux SSL
### 長話短說

三句 command 可以搞定

```sh
$ openssl genrsa -out key.pem 2048
$ openssl req -new -sha256 -key key.pem -out csr.pem
$ openssl x509 -req -in csr.pem -signkey key.pem -out cert.pem
```

搞掂,可以用來起住個 development environment 先。

3月 17, 2022 Network Ubuntu
### 在自己的主機上預備

在開發時,有時可能會需要到驗證主機 https 及 DNS 的服務,例如 OAuth 或是 Payment Gateway 等等,

我們可以在自己的主機用以下的 Command 來把自己主機的某一個 Port Tunnel 度 Remote 主機的某一個 Port。

```sh
$ ssh -f -N -T -R 9000:localhost:3000 root@<your-vps-ip>
```

##### -f 

把服務在背景運行。

##### -R

是指把 localhost 上,Port 3000 的資料 Tunnel 到 Remote 主機上的 Port 9000 上。

##### root@<your-vps-ip>

目標主機的使用者及地址。

### 在 Remote 主機上預備

可以在 Remote 主機上裝上 Nginx 來進行 reverse proxy。

```sh
$ apt-get update
$ apt-get install nginx
```

然後在 nginx 的 config 設定好 reverse proxy 設定。

開一個新的檔案 `/etc/nginx/site-available/tunnel`,設定以下內容。

```sh
server {
    listen 80;
    location / {
         proxy_pass http://127.0.0.1:9000;
    }
}
```

*** 如果要使用 https 的話,就要裝返張 CERT 同埋 `proxy_pass` 要改返去 https。

在 `/etc/nginx/site-enable` 加入

然後就可以檢查 nginx 設定及重新啟動服務。

```sh
$ nginx -t
$ nginx -s reload
```
### S3

S3 (Simple Storage Service) 是 AWS 其中一個服務,主要用來儲存一些東西,可以是檔案,可以是文字,可以是什麼都可以。

當然雖然佢個名話自己係 simple... 但佢其實真係一 D 都唔 simple。又或者 simple 只係解作佢個功能好單純只係儲存東西。而東西可以被什麼人存取,怎樣寫入,權限等等... 就可以玩到好複雜。

### Cloudfront

Cloudfront 是一個由 AWS 提供的 CDN 服務,可以將你的資源 cache 去佢地既 edge location 度,等每個地區的人都可以用最少既時間去取得佢想要既資源。

### S3 檔案可以在 Public access

每一個放到 S3 的 Object 也是會有自己的 ACL (Access control list) 來控制權限,可以做得到一些很細緻的調整。不過在新版的 S3 內,就加入了 Bucket Policy 這個東西,這個可以說是整個 Bucket 內的權限描述。

不過上面要用到 Bucket Policy 的是有個前設,就是只可以套用到 Object owner 是 Bucket owner 的 Object 上。

我們可以通過 Cloudfront 設立新的 Distribution,在 origin 選取現有的 S3 Bucket。然後設定一個 OAI (Origin access identity),而這個 identity 就可以加入到 S3 的 Bucket Policy 內的 Principal 來限制 Cloudfront 存取 :

```js
"Principal": {
    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
}
```

這樣就可以無痛把 S3 的內容經 Cloudfront public 出街了。
11月 28, 2021 Docker
### 一次處理多個 docker container 的生命

在測試使用 docker 時常常都會進行生成/斬掉 container 的動作,在 command line 內一個一個斬掉重續實在太多字要打,以下幾個 command 可以省回不少的時間。

### 一次過停用所有的 container

```sh
$ docker kill $(docker ps -q)
```

### 一次過移除所有的 container

```sh
$ docker rm $(docker ps -a -q)
```

### 一次過移除所有的 images

```sh
$ docker rmi $(docker images -q)
```

### 停用並移除 container

```sh
$ docker rm -f <container_name>
```

有了它們之後覺得非常方便 !
11月 23, 2021 Git Github
### 長話短說

每一次整個新 VM 出來試野都要搞個 GIT,同埋 Github 要改左一定要強制用 person access token 先可以登入,好難可以記得一個水蛇春咁長的 token 來用,所以不可能每次都打密碼來 clone 同埋 pull。

下面呢句係用來記住 git 登入資料的。

```sh
# 使用 store 方法來記低你的登入資料
$ git config --global credential.helper store
```

另外如果需要 push 的話,就需要設定埋 user name 同埋 email 了。

```sh
# 設定 username
# git config --global user.name user
$ git config --global user.name YOURNAME

# 設定 email
# git config --global user.email user@example.com
$ git config --global user.email YOUREMAIL
```
11月 22, 2021 Network Ubuntu
### 長話短說

Down interface

```sh
# sudo ifconfig enp0s23 down // 舊方法
# sudo ip link set enp0s23 down
```

Up interface

```sh
# sudo ifconfig enp0s23 up // 舊方法
# sudo ip link set enp0s23 up
```
11月 09, 2021 MySQL
### Error "The table XXX is full"

在起 ndb cluster 時很容易會遇到這個問題,原因有很多,以下會主要介紹幾個。

參考文件 : https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-ndbd-definition.html

以下這幾個項目如果的內容不夠的話,就會引起 The table is full 錯誤。

- DataMemory
- IndexMemory
- MaxNoOfOrderedIndexes
- MaxNoOfUniqueHashIndexes

當然還有很多設定如果不夠大的話,都會出錯。上面只是其中一部份。
過去文章
2025 (9)
4 (5)
3 (1)
2 (3)
2024 (25)
11 (3)
10 (3)
9 (1)
3 (18)
2022 (6)
10 (1)
6 (2)
5 (1)
3 (1)
1 (1)
2021 (21)
11 (7)
7 (1)
6 (2)
5 (2)
4 (6)
3 (2)
2 (1)
2020 (92)
12 (1)
11 (2)
10 (4)
9 (10)
8 (5)
7 (1)
6 (3)
5 (1)
4 (4)
3 (25)
2 (7)
1 (29)
2019 (57)
12 (25)
11 (7)
9 (25)