MẠNG LƯỚI ĐIỆN THOẠI Ở ĐÀI LOAN

Khi mình là cậu bé, nhà của mình từng sử dụng điện thoại quay số (rotary dial). Mình cần chuyển số từng cái một. Khi đó số điện thoại có sáu số đến tám số. Gọi một cuộc điện thoại cho bạn mất lâu thời gian.

Khi mình đi trường trung học cơ sở, bố chuyển sang điện thoại bàn. Mỗi người đều có thể gọi điện thoại nhanh hơn. Điện thoại ở nhà của mình cũng đổi loại này. Mình cũng có thể nhấn nút nhanh hơn.

DƯ BẢO THỜI TIẾT MỘT TUẦN Ở ĐÀI BẮC VÀ HÔM NAY Ở ĐÀI LOAN

Ngày 3 tháng 3 năm 2025

Đài Bắc từ thứ ba đến thứ bảy tiếp tục lạnh hơn. Nhiệt độ thấp nhất là 11 độ C, cao nhất là 24 độ C. Mưa nhiều và có dông. Nếu muốn đi ra ngoài, nên mặc áo mưa hoặc mang ô. Từ Chủ nhật, thời tiết bắt đầu thay đổi. Nhiệt độ cao hơn, từ 16 đến 23. Có nắng và đôi khi có mây. Từ thứ hai có nắng.

DATADOG AGENT TEST

  1. 安裝 Datadog Agent on macOS: https://docs.datadoghq.com/agent/basic_agent_usage/osx/
  2. 安裝 Datadog dogshell on macOS: https://docs.datadoghq.com/developers/guide/dogshell/

安裝好以後確認一下 dogshell 有正常運作

datadog-agent status

SNYK CLI TEST

安裝 Snyk CLI: https://docs.snyk.io/snyk-cli

安裝 MEND CLI

安裝 Mend CLI

請到以下網址 copy “Download Command” 或是 Direct Download URL

Download the Mend CLI

安裝完成後可以輸入 mend 指令驗證安裝

使用 Mend CLI 做 SCA 掃瞄

GITHUB COPILOT ON VISUAL STUDIO CODE

因為寫了一段 for-loop,覺得有點醜,所以想試試看請 AI 幫我改,雖然已經有安裝 Codeium,但想說 GitHub 的 code base 多,想試試看 GitHub Copilot,個人使用一個月 10 美金也還好,就訂閱下去了。

訂閱好後,我想在 Visual Studio Code 中使用,除了要安裝 GitHub Copilot 的套件,接著還要登入 GitHub 帳號,然後點選 VSCode 左邊的「聊天」選項。

聊天 聊天

依據提示,可以直接在檔案中使用內嵌聊天,我先把想請 AI 修改的地方反白,然後就會跳出聊天視窗,沒有跳出來的話,也可以點選旁邊出現的橘色燈泡選擇。

輸入希望修改的方式(e.g. 優化)

執行輸入的 prompt 後,就會開始動作,修正/建議過程中會一步一步變動,感覺很像在看教學。 原本的邏輯 (左) 建議修改後的新邏輯(右)

套用建議修改的邏輯

個人心得是覺得蠻厲害的,但就如同 Copilot 自己說的,畢竟是 AI,很可能出錯,建議還是要做驗證跑跑看。

GITKRAKEN TRIAL

已經免費用了這個 GitKraken 幾年了,中途也不時有在尋找其他較符合我使用習慣的 Git GUI 工具,最後實在還是最習慣用 GitKraken,所以後來就買了 Pro Plan,以下介紹幾個我覺得它方便的地方。

  1. Commit stash 我們有時候開發一個 branch 到一半,可能會突然需要切換到另一個 brach 查看一些做法,或開發的內容,此時我們通常會需要先對還沒 commit 的修改作 stash,對應的 Git 指令是:git stash file1 file2 ...,這在 GitKraken 可以很直觀的操作。

只要先點選為修改的那個 pre-commit (HEAD),然後點選右鍵,就可以找到 stash file 的項目,之後切回來只要在點選那個 pre-commit 後按右鍵,選擇 pop stash 即可。

  1. Rebase branch 每次在不是主要的 branch (e.g. main, master, develop) 作開發前,比較安全可以避免衝突發生的習慣是,開發之前都應該更新目前的 branch 跟上最新的分岔分支,例如你是從 develop 切出一個分支,那你需要更新你的 branch 分點到最新的 develop,此時會用到的 Git 指令就是:git rebase base_branch new_base_branch,這個可以在 GitKraken 這樣操作:

  2. Reset/Revert 有時候你開發到一半,覺得邏輯亂掉,或是想到新的方法,但要修改的地方太多,你可能不想再開新的分支(可能會導致分支過散過亂而難以整合),假設你已經確定目前的修改不要,或是只是小段的變動,但是你已經 commit 了,此時我們通常會使用 resetrevert 這兩個操作,而 Git 中有 reset --soft--hard 兩個主要的選項,前者會回到上一個 commit 的狀態,但是保留你剛剛那個 commit (或是多個新 commits)的修改內容,你只需要重新修改那些變更就行了,反之 --hard 則會直接摒棄掉所有新 commits 的變更,完全乾淨地回到你要退回的那個 commit,在 GitKraken 中,你可以這樣做:

[AWS ELASTIC BEANSTALK] 各平台 PROXY SERVER LIST

完整關於各個平台和版本採用的 Proxy Server 可以在[這裡](https://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/platform-history.html)找到:

Nginx

- Nodejs*
- Go
- Single Container Docker
- Java SE
- Ruby (看版本使用的 application servrer 可能是 puma 或 passenger,前者居多)

Apache

- Node.js*
- Tomcat
- Python
- PHP

Node.js

Node.js 預設是採用 nginx 作為 proxy server,但是官網[文件](https://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html)有提到可以利用 Ebextension 來設定改用 Apache 作為反向代理伺服器
**.ebextensions/node-settings.config**

option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: “npm start”
ProxyServer: apache
GzipCompression: true
aws:elasticbeanstalk:container:nodejs:staticfiles:
/images: myimages

IIS

- Windows Server 上的 .NET

[OPENSTACK] 透過 DEVSTACK 在 AWS EC2 LINUX 上安裝 OPENSTACK

  1. Create a EC2 instance and login
  2. Create a stack user
$ sudo useradd -s /bin/bash -d /opt/stack -m stack
$ echo “stack ALL=(ALL) NOPASSWD: ALL” | sudo tee /etc/sudoers.d/stack
$ sudo su — stack

3. Download DevStack

git clone https://git.openstack.org/openstack-dev/devstack

4. create a local.conf in project

cd devstack
vim local.conf

然後

[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

5. start the install: ./stack.sh. This will take a 15–20 mins. Once the installation done, all is done.

=========================
DevStack Component Timing
(times are in seconds)
=========================
run_process 15
test_with_retry 2
apt-get-update 12
pip_install 287
osc 112
wait_for_service 15
git_timed 193
dbsync 23
apt-get 265
— — — — — — — — — — — — -
Unaccounted time 341
=========================
Total runtime 1265
This is your host IP address: 172.31.21.104
This is your host IPv6 address: ::1
Horizon is now available at http://172.31.21.104/dashboard
Keystone is serving at http://172.31.21.104/identity/
The default users are: admin and demo
The password: secret
WARNING: 
Using lib/neutron-legacy is deprecated, and it will be removed in the future
Services are running under systemd unit files.
For more information see:
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: queens
Change: 28b4be186105888b72300d27166deb771857df06 Merge “Make stackenv file visible” 2018–01–03 23:19:46 +0000
OS Version: Ubuntu 16.04 xenial
2018–01–08 05:30:33.155 | stack.sh completed in 1265 seconds.

最後完成的訊息就這樣,就算完成安裝了

[RUBY ON RAILS] RAILS PUMA + NGINX 的組合

首先要認識一下兩者分別是什麼東西:

* Puma 是一個專為 Rails 設計的高併發 web server
* Nginx 是一個廣泛使用的 reverse proxy
這個時候可以去查一下什麼事 reverse proxy,就可以發現一張圖說明了兩者之間的關係

所謂的反向代理,是在 server-side 根據 client-side 的 request,向後端的 web server 取得資源,然後再將這些資源 response 給 client-side

另外所謂的前向代理,通常是在 client-side 的軟體,例如瀏覽器會代替 client web page (program)去向CDN請求資源

使用後端代理伺服器的好處是,假設你有很多個 web server,都統一要由單一入口給 client-side 存取,則可以把存取的工作交給 reverse proxy,例如:

Web Server:

* Home Page Web Server
* Forum Web Server
* Wiki Web Server

然後你的客戶會連線到 www.my.domain.com,此時應該存取 Home Page Web Server,但當他連線到 www.my.domain.com/forum 時,應該要存取 Forum Web Server,可是如果把你的網域綁定到 Home Page Web Server,就無法另外連線到不同伺服器了,因此可以改用反向代理伺服器,把網域綁定到這台機器上,當反向代理判斷是要存取 Home Page,就會由他向那台伺服器請求資源,而要存取 Forum 時,就另外再向論壇的伺服器請求資源