Steven Lu

前情提要

為了準備接下來兩個月後的CKAD考試,爬了網路上許多考過CKAD的其他工程師建議說在使用vim編輯器上可以更熟練一些,能幫助自己在解題過程上省下許多瑣碎時間。因此,既學習筆記1之後,又想到了有關於vim上方便使用的語法指令。

頻繁使用指令

A : 從當前行列後面編輯插入。

o : 從下面ㄧ列編輯插入。

i : 從中間編輯插入。

u : 回車 (Undo),也就是回到上一個更改的狀態。

ctrl + r : 重做 (Redo)。

:{number} : 冒號後面輸入數字,可跳轉至指定的行數。E.g. :12 代表著移動到第12行進行編輯。

$ : 跳轉至該行最後一個字。

^ : 跳轉至該行第一個字。

/{Search for key word} : 搜尋關鍵字 (算是考試裡面最好使用的指令之一,不意外)。E.g. /backend : 就可直接跳制backend關鍵字上進行編譯。

-h : 使用help指令,能夠查找在使用kubectl時後面接的相關指令。

初始設定編輯器vim

set expandtab
set tabstop=2
set shiftwidth=3
alias k=kubectl
export do="--dry-run=client -o yaml"
export now="--force --grace-period 0" // Remove the waiting time for action
-n -> --namespace // designating specific namespace scope
-A -> --all-namespaces ## all namespaces

--

--

git version control

Git,(Version Control System, VCS) 為一種分散式版本控制系統,同時也是許多資深、新手工程師們都會接觸使用的開源工具之一。可幫助代碼歷史修改版本,讓使用者更直覺且簡單地調取過去某個歷史版本的專案進度。

補充一下git歷史插曲,Git 是由Linux作業系統之父Linus Torvalds開發出來的工具,當初為了減輕維護Linux Kernel的作業量 (去Google了一下才知道這個專案計劃承載著資深工程師們的智慧結晶,e.g. 1500萬行代碼 (截至2020年達到2780萬行)、1000位以上工程師維護的同時開發作業 & 到2020年每天5000多行代碼需要被merge進去專案裡 🙌 ),為了解決上述冗長的共同開發週期,Git被 Linus花了十天時間開發出來,也就這樣問世了!!!

因此,它的設計本意不光是管理Linux kernel system內部之外,也能夠透過這個工具有效率地處理各個範圍由小至大規模的專案開發。

以下是使用git版本控制時常接觸到的相關專有名詞:

它解釋為版本儲存庫,負責儲存代碼和專案相關資料,例如:代碼、設計檔、圖片等。

指的是本地開發電腦。

代表著遠端伺服器,也可以表示公司共同開發專案的伺服器。

介紹完git的由來及相關名詞後,以下會解釋Git各項優點:

  1. 首先,會再提及到Version Control System (簡稱VCS)。它可分為集中版本控制系統 (Centralized Version Control System) & 分散式版本控制系統 (Decentralized Version Control System)。顧名思義,集中版本系統的資料庫都存在中央伺服器,然後工作時需要從自己的本地電腦(local)從中央伺服器上擷取(fetch)最新的代碼版本後,再繼續基於之前更新的版本上持續新增自己的代碼。好比一台打卡機,要上班打卡需要把出勤卡放入機器裡面自行去更新今天出勤的紀錄。然而,需要透過集中式版本控制系統進行專案更新的話,前提條件是不能沒有網路連線的情況,因為沒有連線的情況下,就不能更新自己變更的代碼內容外,也會無法跟其他共同開發的工程師們同步工作內容。幸運地是,分散式版本控制系統讓使用者們可獨自擁有完整的Repository,意思就是儲存版本庫在本機電腦上。也因此,分散式版本控制相比集中式,它也更為安全且如果其中一個本地資料庫損毀,還是能夠透過其他使用者們共同進行的專案來擷取便可繼續執行開發工作。
  2. Git包含命令字元(Command)工具集的應用(感謝Linus當初抱持著開發比BitKeeper更好的開源工具才有了讓底層工程師們都能使用的開源工具😂),可以在鍵盤上便捷使用指令syntax來完成代碼修改、查看log、提交代碼最新進度等相關作業。這套工具集的核心概念是水管系統(Plumbing),意思是在底層作業上做好了輸送水源的基礎,然後在上層水管上蓋洗手槽等你想到的生活應用。
  3. 使用Git便能輕鬆地在Github上建立屬於自己的作品portfolio。原因在於Github公司提供Git代管服務,讓開發者們能隨心所欲的在Github上拖放大型專案以及個人作品集等。另外,GitHub page上也提供了許多人性化的設計功能,舉例來說:Contribution能夠讓網路上的用戶能夠檢視到該開發轉案人員的過去貢獻程度為多少。還有團隊協作及社交功能,可追蹤其他開源工程師的開源專案,也可以fork對方的專案至本地進行修改或者是使用,如果欣賞對方的作品,也可以點擊星星表示讚賞。

--

--

You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money.

Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

You may assume that you have an infinite number of each kind of coin.

Example 1:

Input: coins = [1,2,5], amount = 11
Output: 3
Explanation: 11 = 5 + 5 + 1

Example 2:

Input: coins = [2], amount = 3
Output: -1

Example 3:

Input: coins = [1], amount = 0
Output: 0

Constraints:

  • 1 <= coins.length <= 12
  • 1 <= coins[i] <= 231 - 1
  • 0 <= amount <= 104

Solution:

--

--

Rancher 是由位在美國加州庫比蒂諾州 (United States, California, Cupertino)Rancher Labs公司開發的一個Kubernetes開源專案,同時也是一個支援企業級容器的Kubernetes管理平台。

藉由Rancher, 其他企業們可以省去從零到有花費昂貴的開發成本來搭建容器服務平 …

--

--

Steven Lu

Steven Lu

Dell Technologies — VxRail Software Engineer 👨‍💻