要讓 Terraform 能有複用性,我們需要加入一些參數化變數來增加彈性,也就是為 module 的 parameter,而且在 root module 中定義好的 variable,可以根據需求來覆蓋。 Terraform Input Variables 的功能,讓我們可以宣告變數,並有幾種方式可以傳入自訂義 variable values:
- command line
.tfvars- Environment 讀取
以下會簡單介紹這些方式和優缺點。


要讓 Terraform 能有複用性,我們需要加入一些參數化變數來增加彈性,也就是為 module 的 parameter,而且在 root module 中定義好的 variable,可以根據需求來覆蓋。 Terraform Input Variables 的功能,讓我們可以宣告變數,並有幾種方式可以傳入自訂義 variable values:
- command line
.tfvars- Environment 讀取
以下會簡單介紹這些方式和優缺點。

所謂的兩字串互為 Anagrams ,意思就是兩個字串中,字母出現的次數都一樣,只是位置不同,比如題目說的 ate 、 eat 、 tea 它們就都互為 Anagrams 。如何判斷兩字串是否互為 Anagrams 是關鍵解題點,這題雖然歸為 Medium ,但是偏向 easy 的,需要注意的點是:
- 熟悉一些 java 內建常用的字串處理 function ,寫起來會比較簡潔。
- 想到使用 map 結構來儲存分組資料。

現今應用程式發展迅速, app 的更新也變得越來越頻繁,在微服務、DevOps、Cloud-native 的迭代過程中,最終都需要上線。上線就需要部署;需要部署就意味著有修改;修改則意味著有風險,要如何在盡量不影響 user 的前提下,讓 app 升版呢 ? 這時就有一些部屬策略可以考慮。對於 Deployment Strategies 有一些基本的專有名詞和觀念,例如 :
- Recreate
- Rolling
- Blue-Green
- Canary
對於應該使用哪種 Deployment Strategy 、它們的工作原理、優缺點等等,以下會做些基本介紹。

當我們在編寫 Kubernetes Pod 相關的 yaml spec 時,有時會針對 spec.containers ,設置啟動時要執行的命令及其參數,而 Kubernetes 提供
command和args,兩種方式可以選擇。但這時候就會出現一些疑問 :
- 這兩個差異是甚麼 ?
- Docker Image 中如果自帶 ENTRYPOINT 和 CMD ,若 Kubernetes 再設置
command和args會發生甚麼事情呢 ?以下就來簡單說明一下。

templatefile 是 Terraform 的一個內置函數,可讓 Terraform 在運行時,根據變量動態生成文件內容 。 templatefile 函數的基本用法是:
- 定義一個模板文件,其中包含要插入變量的佔位符。
- 在 Terraform code 中,您可以使用 templatefile 函數來讀取模板文件,並提供要插入的變量。
最後 Terraform 會動態生成文件內容,並將其輸出。

Avro 是一個 data serialization 框架 ,是 Apache Hadoop 下的一個子項目,是一個可跨多種程式語言和平台的傳輸資料格式。Avro 可使用 JSON 格式來描述 data structure,並且支持架構演進,保持向後、向前的相容性。 Avro 也提供了編解碼和二進制格式,使得在高吞吐量的應用場景中非常有用且高效。

cloc 全名是 Count Lines of Code , 為一個計算 code 和設定檔行數的 CLI 工具,是使用 Perl 語言開發的開源統計工具。cloc 支援非常多程式語言、平台、格式的統計,可以快速地計算一個 project 中所有文件的行數、空行、註釋行等等。有時候在寫一些報告會用到,可以幫助整理資料。

terraform archive 是一個 HashiCorp 公司提供的一個 Provider,可以讓使用者在 Terraform 中,將指定的目錄或檔案打包(例如 zip )。
雲端上運行的無伺服器計算服務非常熱門,著名的如 AWS Lambda 、 Azure Functions、GCP Cloud Functions,也常使用 terraform 工具來進行部屬。這時再使用 terraform archive ,方便地把例如 python code 打包成 zip,簡便地部署到服務上。

tar是 Unix 和類 Unix 系統上常用的壓縮工具,名字來自於 tape archive 的縮寫, tar 可以將多個文件或目錄打包成一個檔案。單純 .tar 檔案是沒有壓縮資料的,只是把好多目錄與資料夾打包起來變成一個大檔案而已;如果要有壓縮資料的功能,要使用 .tar.gz 壓縮檔案,是最常見的壓縮檔案格式。

這題是要求 Binary Tree 的 diameter ,要注意一下 diameter 的定義並不等於深度 ! 根據題目中的例子,可了解所謂 diameter 的定義,是兩點之間的最遠距離。雖然 Binary Tree 的 diameter 並不等於深度,但是和深度有非常大的關係,所以解法用 DFS 是比較直觀的想法。(雖然題目難度說是 easy,但我個人覺得應該算初階 medium…)

