tienyulin

@tienyulin

Joined on Mar 6, 2020

  • # DFS&BFS from collections import deque class Node: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def dfs(node):
     Like  Bookmark
  • Heroku offers a student program in partnership with GitHub. Students can access Heroku's resources by getting the GitHub Studnet Developer Pack. It provides a credit of $13 USD per month for 12 months. Please follow the instructions below step by step to enable it. 1. GitHub Student Developer Pack Click here to apply the GitHub Studnet Developer Pack from GitHub Education. An email account from the school, i.e., with .edu, is required to verify your student identity. 2. Heroku for GitHub Students Offer Register a Heroku account before enrolling in the Heroku Students Offer. After logging into Heroku, please click here to apply for the Studnets Offer.
     Like 1 Bookmark
  • act is a tool to run github action locally. By using act, we can get feedback from CI faster. No need to commit/push any changes to github for checking your code is fulfilling the CI requirements or not. Installation MacOS Using homebrew to install act brew install act Install Docker
     Like  Bookmark
  • 電腦是由硬體和軟體所構成的,而主要負責運算的部分是作業系統的核心 - Kernel。當使用者下了命令之後,Kernel 就會接收這個命令並且再交由 CPU 進行處理。那 Kernel 是如何接收這些命令的呢 ? 可以看到下面這張圖,使用者和 Kernel 會靠著 Shell 作為一個使用者的介面來進行溝通,也就是說使用者下達了命令後,Shell 會將這些命令轉成 Kernel 可以理解的程式碼,再傳送給 Kernel 好讓 Kernel 可以正確地控制硬體工作。 ![Kernel](https://cdn.mindmajix.com/blog/images/linux-0203-1919.png =300x300) BASH (Bourne Again SHell) BASH 是 Linux 預設的 Shell,雖然 Shell 有很多種,但是 BASH 會被作為 Linux 預設的 Shell 是因為他的功能非常強大,下面列出幾個主要的優點 : 命令紀錄 (history)
     Like  Bookmark
  • Elasticsearch 除了提供搜尋的功能外,也提供了資料統計的功能,也就是本篇要介紹的聚合。聚合提供了多種分析的方式來滿足大多數的資料統計需求,例如 : 一個月內最大筆金額的訂單是哪一個 ? 這次促銷活動期間賣最差的商品是哪一項 ? 今年度每月的平均業績是多少 ? 而聚合主要的功能有以下四個 : Metric Aggregation (指標型聚合) Bucket Aggregation (桶型聚合)
     Like  Bookmark
  • 上一篇我們介紹了 Shell 的基本概念,了解了什麼是 Shell 之後,接下來就要來了解什麼是變數。 變數是 Bash 中非常重要的一個設計,而概念和程式語言所宣告的變數類似。例如 : 不同的使用者會對應到不同的設定,系統只要在使用者登入時去取得對應的值放到變數裡,當要用到時可以直接從變數取值,就不用把值寫死在程式碼裡面。 取得變數內容 (echo) 要取得變數的內容可以使用 echo 指令來達成,在取得變數內容前要在變數前面加上 $ 的符號才可以。變數名稱也可以放在 {} 中。 echo $<variable name> echo ${<variable name>}
     Like 1 Bookmark
  • Linux 是一個以 Unix 為原型所打造出來的開放原始碼的作業系統,最初是由芬蘭人 Linus Torvalds 出於自身愛好所創建的。 Linux 現今已成為了許多企業的伺服器所採用的作業系統,因為 Linux 具備了以下幾個優勢 : 開源、免費 跨平台硬體支援 豐富的軟體支援 多使用者、多工 安全性可靠 穩定性高
     Like  Bookmark
  • ![Tunnel](https://raw.githubusercontent.com/facerecog/auto-ssh-tunnel/gh-pages/images/auto-ssh-tunnel%20logo.png =200x200) 上一篇有提到 SSH 可以在使用者和客戶端之間建立一條安全的隧道 (tunnel) 來進行資料的傳輸,或者是存取到特定的服務。透過 SSH Tunnel 可以達到傳輸的加密或是網路和防火牆的穿透。 舉例來說,我有一台電腦 A 不能對外連線,有一台伺服器 B 可以對外連線,而電腦 A 是可以連線到伺服器 B 的,這時就可以在 A 和 B 之間建立 Tunnel 並將 A 要做的事情轉傳給 B,讓 B 幫忙連到外網完成。這樣的概念類似於 Port Forwarding 或是 Proxy。 SSH Tunnel 可以分為以下幾種 : Local Tunnel (Local Forwarding) Remote Tunnel (Remote Forwarding)
     Like  Bookmark
  • Nginx 是一種非同步框架的網頁伺服器,可以用作反向代理、負載平衡器和 HTTP 快取,通常做為負載平衡器。 Nginx 為軟體負載平衡,硬體負載平衡常見的有 F5、A10 軟體負載平衡的優點是配置簡單、使用靈活、成本低廉、可以滿足一般的負載均衡;缺點是需要在伺服器上安裝軟體運行、會消耗系統資源、軟體的可擴展性不是很好、會受到系統限制。 硬體負載平衡的優點是獨立於作業系統、整體性能得到提高、可以滿足較高的負載均衡;缺點是使用複雜、成本較高。 反向代理(Reverse Proxy) 應用端透過代理伺服器接收 Request,代理伺服器再將 Request 轉送給應用端內部的伺服器。反向代理的詳細介紹請參考 Proxy - 代理伺服器。
     Like  Bookmark
  • ![SSH](https://www.yan-wyb.com/assets/images/miscellaneous/ssh.jpg =320x200) SSH 全名是 Secure Shell (安全外殼協定),是一種加密的網路傳輸協定,可以在不安全的網路中提供安全的網路傳輸環境。SSH 透過在使用者和客戶端之間建立一條安全的隧道來實現連接,並進行資料的傳輸。SSH 現今最常被使用的是進行遠端連線執行命令。 加密方式 SSH 採用 Public-key cryptography 來為資料進行加解密,每一個使用者都會有兩把鑰匙 (key) : 公鑰 (public key) : 任何人都可以看到公鑰的內容,主要用於加密。 私鑰 (private key) : 私鑰只有擁有者自己擁有不會傳給別人,主要用於解密和數位簽章。 通過公鑰將資料進行加密後,可以很輕易的用私鑰解密,而如果想要用公鑰來猜私鑰就會非常困難。這就是所謂的 非對稱式加密,透過不同的兩把鑰匙來分別作加解密,又因為私鑰握在自己手上所以不用擔心在傳輸過程中被攔截。
     Like  Bookmark
  • 上一篇 我們介紹了如何建立最基本的 Pod 和連線到應用的方式,然而這樣的建立方式是無法滿足實際應用中的需求的。實際應用上會有多伺服器運行同個應用、伺服器故障需要故障轉移等等的問題,因此 Kubernetes 提供了一些 Pod 的進階功能,如下 : Service Deployment Ingress Service Service 是一個抽象化的物件,它定義了一群的 Pod 和存取這些 Pod 的規則。簡單來說就是要讓使用者和 Kubernetes Cluster 進行隔離,使用者只需要告訴 Service 我的請求而不需要知道誰會幫我處理也不需要知道處理的過程和細節,Service 收到請求後就會依照定義的規則將請求送到對應的 Pod。 Pod 和 Pod 之間的也會透過 Service 來存取。
     Like 1 Bookmark
  • 在執行指令時有時候會需要下多個指令才能獲取我們想要的資料,很多時候都是因為要先看到前一個指令的輸出再將輸出內容代到下一個指令中。但是這樣就要分很多次執行效率並不高,此外如果想要用 Shell Script 執行一連串的指令的話這樣是行不通的。因此這時我們就需要用到 Linux 所支援的管線命令,可以將前一個指令的輸出代入到下一個指令中。 使用方式 管線命令的使用方式是透過 | 這個符號來連結前一個命令的輸出和下一個命令的輸入。如下 : [command1] | [command2] | [command3] | ... 所以 command2 會處理 command1 所傳進來的資料,而 command3 會再處理 command2 傳進來的資料,以此類推。 👁‍🗨 這裡要注意的是在 | 後面所接的指令要是可以接收 stdin 的才行,例如 : less、more。此外管線命令只能接收前一個命令傳入的 stdout,會忽略 stderr,也就是說只能接收正確的訊息。
     Like 1 Bookmark
  • 在 Linux (二) - 檔案系統架構 中,我們有介紹過了幾個用來操作檔案和目錄的基本指令,ls、cd、mkdir。這一篇要來介紹更多常用的檔案和目錄操作指令。 路徑 操作檔案必須要先知道檔案的路徑才能進行存取,而存取檔案的路徑可以分為絕對路徑和相對路徑。 絕對路徑 絕對路徑就是直接指定路徑,例如 : /home/user1/test.txt。 相對路徑 相對路徑通常是用於退回到前幾層再去訪問其他的目錄,退回前一層的方式是加上 ../。所以相對路徑看起來就會像是 ../../user1/test.txt。
     Like 1 Bookmark
  • 在 Linux (一) - 基本概念與系統操作 中,我們有介紹到 Linux 其中一個很大的優勢就是可以讓多使用者多工進行操作,而使用者要使用系統的資源時,都需要先向系統管理員 (root) 申請帳號,再以這個帳號進入系統。 當然要做為 Linux 的系統管理員的話,也必須要很清楚如何管理帳號,所以這篇就是要來介紹如何管裡 Linux 系統的帳號。 帳號 對 Linux 系統來說,他並不認識你的帳號名稱,雖然登入的時候都是輸入帳號,但是那只是讓我們容易記住。Linux 系統只認得 ID,而 ID 和帳號之間的對應就存在 etc/passwd 中。如果你對於 etc 這個目錄還不清楚的話可以參考 Linux (二) - 檔案系統架構 中有簡單的做介紹。 以下會介紹幾個檔案都需要 root 的權限,所以在存取時要先取得 root 的權限。 /etc/passwd
     Like  Bookmark
  • 前幾篇介紹了 Linux 的檔案系統,了解了檔案系統後接著就要知道如何管理硬碟了。 常用命令 df df 指令用於查看以掛載的硬碟空間占用情況,例如 : 總容量、使用量、剩餘容量等等。 df [option] [file] option :
     Like  Bookmark
  • 在 Linux (一) - 基本概念與系統操作 有提到,Linux 支援多使用者同時進行操作。多個使用者可以同時進行操作雖然是非常方便,但是卻也因此衍生出了檔案權限的安全性問題。所以 Linux 系統對於不同使用者要存取相同的檔案或目錄都有不同的權限設定。 檔案屬性 上一篇 我們有介紹過了 ls 指令可以列出目錄下的檔案和目錄,這裡我們要在使用 ls -l 列出檔案的詳細資訊來查看檔案的屬性。如下 : $ ls -l total 56 -rw-r--r-- 1 root root 12148 Aug 9 21:39 anaconda-post.log lrwxrwxrwx 1 root root 7 Aug 9 21:38 bin -> usr/bin
     Like  Bookmark
  • 不同於 Windows 將文件依照硬碟存放在 C 槽、 D 槽等等,Linux 將整個文件系統視為一棵樹,樹根稱為根目錄 ( / ),文件會從根目錄開始以樹狀結構排序,如上圖。而硬碟則是透過掛載 (Mount) 的方式來接上檔案系統再進行存取。 根目錄下的目錄有很多,本文僅介紹常用的目錄。 基本檔案目錄操作 在開始介紹每個目錄的意義之前,我們要先簡單的了解如何操作這些目錄和檔案。 ls 列出文件可以使用 ls 這個指令。
     Like  Bookmark
  • 軟體開發的過程有許多個階段要實行,例如 : 建置、測試、部署等等,這些階段又稱為軟體開發生命週期。所以 CI、CD 的目的就是要透過自動化的方式來加快軟體開發的生命週期並且確保程式的品質。 Continuous Integration (持續整合) CI 的目的是針對軟體系統每個變動,能持續性的進行驗證並整合。所以在 CI 的階段通常會執行以下幾個步驟 : 建置 (Build) 測試 (Test) CI 的好處是可以先對程式自動的進行驗證以確保程式的品質,才不會讓不良的程式直接上線導致系統異常甚至崩潰。
     Like 1 Bookmark
  • 上一篇 介紹完了 Kubernetes 的基本概念,接下來我們要來安裝 Kubernetes。 開始操作前我們需要先安裝三個工具 : kubectl VirtualBox minikube 本篇會以 Ubuntu 的環境來操作,如果你使用的是其他的作業系統,可以從下方附上的連結找到其他作業系統的安裝方式。
     Like  Bookmark
  • Kubernetes 又稱 K8s,是一個容器叢集管理系統,可以自動化的部署及管理多台機器上的多個容器。 容器建構在最底層的作業系統 Linux 之上,而 Kubernetes 又建構在容器之上。也因此為這些容器提供管理的功能。 Kubernetes官網對於Kubernetes的服務描述為 : Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications. 這段描述說明了他的主要功能 :
     Like  Bookmark