> nvidia-smi Mon Jul 1 09:21:24 2024 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 Tesla T4 Off | 00000001:00:00.0 Off | Off | | N/A 31C P8 9W / 70W | 140MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | 0 N/A N/A 1095 G /usr/lib/xorg/Xorg 130MiB | | 0 N/A N/A 1356 G /usr/bin/gnome-shell 7MiB | +---------------------------------------------------------------------------------------+
我發現使用 Security Type 為 Trusted Launch 的 VM 所建立的 Snapshot; 與其建立的 Disk 與 VM 其 Security Type 也會是 Trusted Launch。 但是當我嚐試透過 SSH using Azure CLI 連線 VM, 會遇到無法連線的問題,同樣的步驟,Security Type 為 Standard 就不會有問題。 待確認原因…
npx nuxt build The build command creates a .output directory with all your application, server and dependencies ready for production. 這個命令會建立一個 .output 目錄,裡面包含了你的應用程式、伺服器和所有必要的依賴,準備好用於生產環境。 預設的行為,可以實作 SSR(Server Side Render),適用有 SEO 需求,且變化快速的網站,Ex: 電商產品頁
npx nuxt build --prerender –prerender false Pre-render every route of your application. (note: This is an experimental flag. The behavior might be changed.) . –prerender false 會對應用程式的每個路由進行預渲染。(注意:這是一個實驗性的標誌。行為可能會更改。); 它會先產生好 HTML,適合 SSG 網站(內容不常改動,但有 SEO 需求)。Ex: BLOG
npx nuxt generate
The generate command pre-renders every route of your application and stores the result in plain HTML files that you can deploy on any static hosting services. The command triggers the nuxi build command with the prerender argument set to true 這個命令會對你的應用程式的每個路由進行預渲染,並將結果存儲在普通的 HTML 文件中,你可以部署到任何靜態托管服務上。 該命令會觸發 nuxi build 命令,並將 prerender 參數設置為 true。 它適合純靜態的網頁(SPA)。Ex: Landing Page. 與前者最大的差異是,前者會建置成不同的 HTML,
問題
當我們在建置好靜態網站並部署到 GCS 上時,我遇到了一個異常的問題, 當我複製貼上網址時會發生 404 Not Found,主因是當我的網址結尾不是/時, 瀏覽器會轉導到 /index.html。 舉例說明:
回歸本文,我選擇了 GCP Cloud Run,這是一種雲端的 Server Less 的解決方案。 產品的規模沒有大到需要 K8s,團隊成員的具備足夠的能力, 類似的方案還有 Cloud Function, 作為一個 Web API Base 的輕量專案,我評估 Cloud Run 更適合 Cloud Function 較適合 Event Driven 的片段行為 Cloud Run 較適合有點複雜度,但是可以容器化的應用。
我的 Gitlab Runner 是透過 GCP 上 A Project 的 VM 建立並註冊的, 而我的 Cloud Run 需要部署並運作在 GCP B Project 上, 預設執行的身份會是 AProj 的 Compute Engine default service account,以下簡稱 A_CE_Account, 而 CLOUDSDK_AUTH_ACCESS_TOKEN 代表的是 B Project 的 Gitlab Runner Service Account,以下簡稱 B_GR_Service_Account, 另外在運作 B Project 的 Cloud Run 需要的是 B Project 的 Cloud Run Service Account,以下簡稱 B_CR_Service_Account,
Gitlab Runner 在執行時,執行 gcloud auth list 會顯示 A_CE_Account, 但是由於有設定 CLOUDSDK_AUTH_ACCESS_TOKEN,所以相關命令的執行身份是 B_GR_Service_Account, 這會有足夠的權限執行 gcloud builds submit --tag your-registry/your-app:latest . 但是沒有權限執行 gcloud run services update your-app --image=your-registry/your-app:latest 原因是 Cloud Run 的執行身份是 B_GR_Service_Account, 為此,我們需要賦予 B_GR_Service_Account 角色 Service Account User
# Install zsh-syntax-highlighting if it's not installed if [ ! -d ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting ]; then git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting fi # Load zsh-syntax-highlighting plugin plugins+=(zsh-syntax-highlighting) # Set name of the theme to load --- if set to "random", it will # load a random theme each time oh-my-zsh is loaded, in which case, # to know which specific one was loaded, run: echo $RANDOM_THEME # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ZSH_THEME="powerlevel10k/powerlevel10k"
TypeScript 在 5.2 引入了一個新關鍵字 using - 可用於在離開作用域時使用 Symbol.dispose 函數處理任何內容。
看一下官方的說明
TypeScript 5.2 introduces support for the forthcoming Explicit Resource Management feature in ECMAScript, which aims to address the need for “cleaning up” after creating an object. This feature allows developers to perform necessary actions such as closing network connections, deleting temporary files, or releasing memory.
using 與 await 的目的在於釋放資源上會非常有用。
在舉例子之前先看一下新的全域 Symbol:Symbol.dispose 與 Symbol.asyncDispose, 任何將函數分配給 Symbol.dispose 的物件都將被視為「資源」(“具有特定存留期的物件”),並且可以與 using 關鍵字一起使用。
#Create a service account gcloud iam service-accounts create gitlab-runner-sa --project=$GCP_PROJECT_ID #Add sample permissions to the Service account gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \ --member=serviceAccount:gitlab-wif-demo@${GCP_PROJECT_ID}.iam.gserviceaccount.com \ --role=roles/storage.admin