---
title: 名詞
description: 一些與工作內容相關的專有名詞(及其解釋)
tags: 名詞
---
[TOC]
# 一些專有名詞(及其解釋)
## AI - **A**rtificial **I**ntelligence
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD)
  人工智慧(英語:artificial intelligence,縮寫為 AI)亦稱機器智慧,指由人製造出來的機器所表現出來的智慧。通常人工智慧是指通過普通電腦程式的手段實現的人類智慧技術。該詞也指出研究這樣的智慧系統是否能夠實現,以及如何實現科學領域。同時如此,人類的數量開始收斂及功能逐漸被其取代。
  一般教材中的定義領域是「智慧主體(intelligent agent)的研究與設計」,智慧主體指一個可以觀察周遭環境並作出行動以達致目標的系統。約翰·麥卡錫於1955年的定義是「**製造智慧機器的科學與工程**」。
  人工智慧的研究是高度技術性和專業的,各分支領域都是深入且各不相通的,因而涉及範圍極廣。人工智慧的研究可以分為幾個技術問題。其分支領域主要集中在解決具體問題,其中之一是,如何使用各種不同的工具完成特定的應用程式。
  AI的核心問題包括建構能夠跟人類似甚至超越的推理、知識、規劃、學習、交流、感知、移動和操作物體的能力等。++強人工智慧++目前仍然是該領域的長遠目標。目前強人工智慧已經有初步成果,甚至在一些影像辨識、語言分析、棋類遊戲等等單方面的能力達到了超越人類的水平,而且人工智慧的通用性代表著,能解決上述的問題的是一樣的AI程式,無須重新開發演算法就可以直接使用現有的AI完成任務,與人類的處理能力相同,但達到具備思考能力的統合強人工智慧還需要時間研究,比較流行的方法包括統計方法,計算智慧和傳統意義的AI。目前有大量的工具應用了人工智慧,其中包括搜尋和數學最佳化、邏輯推演。而基於仿生學、認知心理學,以及基於機率論和經濟學的演算法等等也在逐步探索當中。
:::
---
## CIDR - **C**lassless **I**nter-**D**omain **R**outing (無類別域間路由)
:::info
[===軟體主廚的程式料理廚房===](https://dotblogs.com.tw/supershowwei/2019/07/15/173015)
 在設定 GCP Firewall 規則的時候,限制來源 IP 範圍的欄位要我們以 CIDR 標記法 輸入。
 
#### CIDR 標記法
 IPv4(以下簡稱 IP)的位址是由兩個部分組成:```字首```+```主機位址```,長度為 ```32bits```,字首跟主機位址取決於所在的子網路及可分配的位址數量,舉例來說,我的 IP 是 192.168.1.168,子網路遮罩為 255.255.255.0,那麼可分配的位址數量就是 256 個,我的 IP 字首就是 192.168.1,主機位址則是 168。
 在早期的時候要做 IP 分配,字首只能是 8bits、16bits 或 24bits,這使得可分配位址數量從最小的 256 個,跳下一級直接到 65536 個,對大部分的企業來說 256 個太少,而 65536 個又太多,很不方便,因此 IETF 就在 RFC 1519 定義了新的分配 IP 的方式,就是 CIDR(Classless Inter-Domain Routing)。
 CIDR 標記法的格式是由字首加上一個 0 ~ 32 數字的字尾所組成的,像是這樣 192.168.1.0/24,字尾的數字指的是字首的位數,也是子網路遮罩 1 的數量,例如:24 就代表字首為 24bits,子網路遮罩是 24 個 1,其他為 0:
<font color=goldenrod>11111111.11111111.11111111.00000000</font> (→ 255.255.255.0)
 這種方式使得分配 IP 的彈性變大了,從最小的 1 個、下一級是 3 個、再下一級是 7 個、…依此類推,而這樣的設計也被 IPv6 給延用了。
 那我怎麼知道我 IP 的字首? 我們就拿我們的 IP 跟子網路遮罩做 AND 運算,就會得到字首了,用剛剛的例子我的 IP 是 192.168.1.168 轉成二進位表達是這樣:
<font color=goldenrod>11000000.10101000.00000001.10101000</font>
跟子網路遮罩做 AND 運算就會得到:
<font color=goldenrod>11000000.10101000.00000001.00000000</font>
這就是我們 IP 的字首 192.168.1.0
#### 用在防火牆規則上
 CIDR 標記法用在防火牆的規則上,就用來判斷我們的 IP 是不是在所允許的範圍內,我們可以這樣理解,將我們的 IP 跟子網路遮罩做 AND 運算,其結果若等於所設定的字首,防火牆就放行,假定我的 IP 是 118.186.134.82,來源 IP 範圍設定為 118.186.134.82/32,這就表示只限定我的 IP 能通過防火牆。
 如果是要設定成任一 IP 皆能通過防火牆就設成 0.0.0.0/0,不過這樣等同於在網路上裸奔,最好還是限定一下 IP 範圍,網路上有一堆 Scanner 時時刻刻在 Scan,萬一有漏洞沒有修補或是開了不該開的 Port,那很危險。
:::
---
## Cloud Computing
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E9%9B%B2%E7%AB%AF%E9%81%8B%E7%AE%97)
  雲端運算(英語:cloud computing),是一種基於網際網路的運算方式,通過這種方式,共用的軟硬體資源和資訊可以按需求提供給電腦各種終端和其他裝置。
  雲端運算是繼1980年代大型電腦到用戶端-伺服器的大轉變之後的又一種巨變。用戶不再需要了解「雲端」中基礎設施的細節,不必具有相應的專業知識,也無需直接進行控制。雲端運算描述了一種基於網際網路的新的IT服務增加、使用和交付模式,通常涉及通過網際網路來提供動態易擴充而且經常是虛擬化的資源。
  在「軟體即服務(SaaS)」的服務模式當中,使用者能夠存取服務軟體及資料。服務提供者則維護基礎設施及平臺以維持服務正常運作。SaaS常被稱爲「隨選軟體」,並且通常是基於使用時數來收費,有時也會有採用訂閱制的服務。
  推廣者認爲,SaaS使得企業能夠藉由外包硬體、軟體維護及支援服務給服務提供者來降低IT營運費用。另外,由於應用程式是集中供應的,更新可以即時的發布,無需使用者手動更新或是安裝新的軟體。SaaS的缺陷在於使用者的資料是存放在服務提供者的伺服器之上,使得服務提供者有能力對這些資料進行未經授權的存取。
  使用者透過瀏覽器、桌面應用程式或是行動應用程式來存取雲端的服務。推廣者認爲雲端運算使得企業能夠更迅速的部署應用程式,並降低管理的複雜度及維護成本,及允許IT資源的迅速重新分配以因應企業需求的快速改變。
  雲端運算依賴資源的共用以達成規模經濟,類似基礎設施(如電力網)。服務提供者整合大量的資源供多個用戶使用,用戶可以輕易的請求(租借)更多資源,並隨時調整使用量,將不需要的資源釋放回整個架構,因此用戶不需要因爲短暫尖峰的需求就購買大量的資源,僅需提升租借量,需求降低時便退租。服務提供者得以將目前無人租用的資源重新租給其他用戶,甚至依照整體的需求量調整租金。
 
**基本特徵**
  網際網路上匯聚的運算資源、儲存資源、資料資源和應用資源正隨著網際網路規模的擴大而不斷增加,網際網路正在從傳統意義的通訊平台轉化為泛在、智慧型的運算平台。與電腦系統這樣的傳統運算平台比較,網際網路上還沒有形成類似電腦作業系統的服務環境,以支援網際網路資源的有效管理和綜合利用。在傳統電腦中已成熟的作業系統技術,已不再能適用於網際網路環境,其根本原因在於:網際網路資源的自主控制、自治對等、異構多尺度等基本特性,與傳統電腦系統的資源特性存在本質上的不同。為了適應網際網路資源的基本特性,形成承接網際網路資源和網際網路應用的一體化服務環境,面向網際網路運算的虛擬運算環境(Internet-based Virtual Computing Environment,iVCE)的研究工作,使用戶能夠方便、有效地共用和利用開放網路上的資源。
  網際網路上的雲端運算服務特徵和自然界的雲、水迴圈具有一定的相似性,因此,雲端是一個相當貼切的比喻。根據美國國家標準和技術研究院的定義,雲端運算服務應該具備以下幾條特徵:
* 隨需應變自助服務。
* 隨時隨地用任何網路裝置存取。
* 多人共用資源池。
* 快速重新部署靈活度。
* 可被監控與量測的服務。
 
  一般認為還有如下特徵:
* 基於虛擬化技術快速部署資源或獲得服務。
* 減少用戶終端的處理負擔。
* 降低了用戶對於IT專業知識的依賴。
 
**參考形態**
  虛擬運算環境是一個學術上的概念,不同的研究組織對其有不同的實現方式。下面是虛擬運算環境的一種參考形態:
  從應用視角上,iVCE以新型的資源管理模型,為終端用戶提供了組織、共用和管理資源的方式和機制,以支援網際網路資源的有效共用和綜合利用。從開發視角上,iVCE是網際網路新型應用的軟體開發平台,提供了與資源管理模型一致的程式設計模式與執行支撐,能方便、快捷地幫助開發人員構造面向網際網路的應用系統。從系統視角上,iVCE包括了支援iVCE資源管理模型的程式設計語言,網路延遲探測、支援網路資源按需聚合和協同的虛擬節點、資源聚合管理、資源協同管理、虛擬網路記憶體、虛擬網路外存和虛擬執行網路等基礎服務,以及iVCE應用管理與執行支撐環境。
:::
:::info
[===AWS白皮書===](https://aws.amazon.com/what-is-cloud-computing/)
  Cloud computing is the on-demand delivery of compute power, database storage, applications, and other IT resources through a cloud services platform via the Internet with pay-as-you-go pricing. Whether you are running applications that share photos to millions of mobile users or you’re supporting the critical operations of your business, a cloud services platform provides rapid access to flexible and low-cost IT resources. With cloud computing, you don’t need to make large upfront investments in hardware and spend a lot of time on the heavy lifting of managing that hardware. Instead, you can provision exactly the right type and size of computing resources you need to power your newest bright idea or operate
your IT department. You can access as many resources as you need, almost instantly, and only pay for what you use.
  Cloud computing provides a simple way to access servers, storage, databases and a broad set of application services over the Internet. A cloud services platform such as Amazon Web Services owns and maintains the network-connected hardware required for these application services, while you provision and use what you need via a web application.
**Cloud Computing Basics**
  Whether you are running applications that share photos to millions of mobile users or you’re supporting the critical operations of your business, a cloud services platform provides rapid access to flexible and low cost IT resources. With cloud computing, you don’t need to make large upfront investments in hardware and spend a lot of time on the heavy lifting of managing that hardware. Instead, you can provision exactly the right type and size of computing resources you need to power your newest bright idea or operate your IT department. You can access as many resources as you need, almost instantly, and only pay for what you use.
**How Does Cloud Computing Work?**
  Cloud computing provides a simple way to access servers, storage, databases and a broad set of application services over the Internet. A Cloud services platform such as Amazon Web Services owns and maintains the network-connected hardware required for these application services, while you provision and use what you need via a web application.
**Six Advantages and Benefits of Cloud Computing**
++1. Trade capital for variable expense icon Trade capital expense for variable expense++
  Instead of having to invest heavily in data centers and servers before you know how you’re going to use them, you can only pay when you consume computing resources, and only pay for how much you consume.
++2. Benefit from massive economies of scale icon Benefit from massive economies of scale++
  By using cloud computing, you can achieve a lower variable cost than you can get on your own. Because usage from hundreds of thousands of customers are aggregated in the cloud, providers such as Amazon Web Services can achieve higher economies of scale which translates into lower pay as you go prices.
++3. Stop guessing capacity icon Stop guessing capacity++
  Eliminate guessing on your infrastructure capacity needs. When you make a capacity decision prior to deploying an application, you often either end up sitting on expensive idle resources or dealing with limited capacity. With cloud computing, these problems go away. You can access as much or as little as you need, and scale up and down as required with only a few minutes notice.
++4. Increase speed and agility icon Increase speed and agility++
  In a cloud computing environment, new IT resources are only ever a click away, which means you reduce the time it takes to make those resources available to your developers from weeks to just minutes. This results in a dramatic increase in agility for the organization, since the cost and time it takes to experiment and develop is significantly lower.
++5. Stop spending money on running and maintaining data centers icon Stop spending money on running and maintaining data centers++
  Focus on projects that differentiate your business, not the infrastructure. Cloud computing lets you focus on your own customers, rather than on the heavy lifting of racking, stacking and powering servers.
++6. Go global in minutes icon Go global in minutes++
  Easily deploy your application in multiple regions around the world with just a few clicks. This means you can provide a lower latency and better experience for your customers simply and at minimal cost.
:::
---
## Cluster
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E9%9B%86%E7%BE%A4)
電腦叢集簡稱叢集是一種電腦系統,它通過一組鬆散整合的電腦軟體和/或硬體連接起來高度緊密地協作完成計算工作。在某種意義上,他們可以被看作是一台電腦。叢集系統中的單個電腦通常稱為**節點**,通常通過區域網路連接,但也有其它的可能連接方式。叢集電腦通常用來改進單個電腦的計算速度和/或可靠性。一般情況下叢集電腦比單個電腦,比如工作站或超級電腦效能價格比要高得多。
#### 叢集分類
叢集分為同構與異構兩種,它們的區別在於:組成叢集系統的電腦之間的體系結構是否相同。叢集電腦按功能和結構可以分成以下幾類:
* 高可用性叢集 High-availability (HA) clusters
一般是指當叢集中有某個節點失效的情況下,其上的任務會自動轉移到其他正常的節點上。還指可以將叢集中的某節點進行離線維護再上線,該過程並不影響整個叢集的執行。
* 負載均衡叢集 Load balancing clusters
負載均衡叢集執行時,一般通過一個或者多個前端負載均衡器,將工作負載分發到後端的一組伺服器上,從而達到整個系統的高效能和高可用性。這樣的電腦叢集有時也被稱為伺服器群(Server Farm)。一般高可用性叢集和負載均衡叢集會使用類似的技術,或同時具有高可用性與負載均衡的特點。
Linux虛擬伺服器(LVS)專案在Linux作業系統上提供了最常用的負載均衡軟體。
* 高效能計算叢集 High-performance (HPC) clusters
高效能計算叢集採用將計算任務分配到叢集的不同計算節點而提高計算能力,因而主要應用在科學計算領域。比較流行的HPC採用Linux作業系統和其它一些免費軟體來完成並列運算。這一叢集配置通常被稱為Beowulf叢集。這類叢集通常執行特定的程式以發揮HPC cluster的並列能力。這類程式一般應用特定的執行庫,比如專為科學計算設計的MPI庫。
HPC叢集特別適合於在計算中各計算節點之間發生大量資料通訊的計算作業,比如一個節點的中間結果或影響到其它節點計算結果的情況。
* 網格計算 Grid computing
網格計算或網格叢集是一種與叢集計算非常相關的技術。網格與傳統叢集的主要差別是網格是連接一組相關並不信任的電腦,它的運作更像一個計算公共設施而不是一個獨立的電腦。還有,網格通常比叢集支援更多不同類型的電腦集合。
網格計算是針對有許多獨立作業的工作任務作最佳化,在計算過程中作業間無需共享資料。網格主要服務於管理在獨立執行工作的電腦間的作業分配。資源如儲存可以被所有節點共享,但作業的中間結果不會影響在其他網格節點上作業的進展。
#### 叢集技術特點
* 通過多台電腦完成同一個工作。達到更高的效率。
* 兩機或多機內容、工作過程等完全一樣。如果一台當機,另一台可以起作用。
:::
---
## CNN - **C**onvolutional **N**eural **N**etwork
1. 降低維度
2. 特徵提取
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C)
卷積神經網絡(Convolutional Neural Network, CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。
卷積神經網絡由一個或多個卷積層和頂端的全連通層(對應經典的神經網絡)組成,同時也包括關聯權重和池化層(pooling layer)。這一結構使得卷積神經網絡能夠利用輸入數據的二維結構。與其他深度學習結構相比,卷積神經網絡在圖像和語音識別方面能夠給出更好的結果。這一模型也可以使用反向傳播算法進行訓練。相比較其他深度、前饋神經網絡,卷積神經網絡需要考量的參數更少,使之成為一種頗具吸引力的深度學習結構。
#### 結構
* 卷積層
卷積層(Convolutional layer),卷積神經網路中每層卷積層由若干卷積單元組成,每個卷積單元的參數都是通過反向傳播算法最佳化得到的。卷積運算的目的是提取輸入的不同特徵,第一層卷積層可能只能提取一些低級的特徵如邊緣、線條和角等層級,更多層的網路能從低級特徵中疊代提取更複雜的特徵。
* 線性整流層
線性整流層(Rectified Linear Units layer, ReLU layer)使用線性整流(Rectified Linear Units, ReLU) $$f(x)=max(0,x)$$ 作為這一層神經的激勵函數(Activation function)。它可以增強判定函數和整個神經網絡的非線性特性,而本身並不會改變卷積層。
事實上,其他的一些函數也可以用於增強網絡的非線性特性,如雙曲正切函數 $$f(x)=tanh(x),$$ $$f(x)=|tanh(x)|$$或者Sigmoid函數 $$f(x)=(1+e^{-x})^{-1}$$ 相比其它函數來說,ReLU函數更受青睞,這是因為它可以將神經網絡的訓練速度提升數倍,而並不會對模型的泛化準確度造成顯著影響。
* 池化層(Pooling Layer)
池化(Pooling)是卷積神經網絡中另一個重要的概念,它實際上是一種形式的降採樣。有多種不同形式的非線性池化函數,而其中「最大池化(Max pooling)」是最為常見的。它是將輸入的圖像劃分為若干個矩形區域,對每個子區域輸出最大值。直覺上,這種機制能夠有效地原因在於,在發現一個特徵之後,它的精確位置遠不及它和其他特徵的相對位置的關係重要。池化層會不斷地減小數據的空間大小,因此參數的數量和計算量也會下降,這在一定程度上也控制了過擬合。通常來說,CNN的卷積層之間都會周期性地插入池化層。
池化層通常會分別作用於每個輸入的特徵並減小其大小。目前最常用形式的池化層是每隔2個元素從圖像劃分出2x2的區塊,然後對每個區塊中的4個數取最大值。這將會減少75%的數據量。
除了最大池化之外,池化層也可以使用其他池化函數,例如「平均池化」甚至「L2-範數池化」等。過去,平均池化的使用曾經較為廣泛,但是最近由於最大池化在實踐中的表現更好,平均池化已經不太常用。
由於池化層過快地減少了數據的大小,目前文獻中的趨勢是使用較小的池化濾鏡,甚至不再使用池化層。
* 損失函數層
損失函數層(loss layer)用於決定訓練過程如何來「懲罰」網絡的預測結果和真實結果之間的差異,它通常是網絡的最後一層。各種不同的損失函數適用於不同類型的任務。例如,Softmax交叉熵損失函數常常被用於在K個類別中選出一個,而Sigmoid交叉熵損失函數常常用於多個獨立的二分類問題。歐幾里德損失函數常常用於結果取值範圍為任意實數的問題。
#### 應用
* 影像辨識
卷積神經網絡通常在影像辨識別系統中使用。
* 視訊分析
相比影像辨識問題,視訊分析要難許多。CNN也常被用於這類問題。
* 自然語言處理
卷積神經網絡也常被用於自然語言處理。 CNN的模型被證明可以有效的處理各種自然語言處理的問題,如語義分析、搜索結果提取、句子建模 、分類、預測、和其他傳統的NLP任務等。
* 藥物發現
卷積神經網路已在藥物發現中使用。卷積神經網絡被用來預測的分子與蛋白質之間的相互作用,以此來尋找靶向位點,尋找出更可能安全和有效的潛在治療方法。
* 圍棋
參見:AlphaGo李世乭五番棋
卷積神經網路在計算機圍棋領域也被使用。2016年3月,AlphaGo對戰李世乭的比賽,展示了深度學習在圍棋領域的重大突破。
:::

---
## Container
:::info
===Virtual Machine *vs* Container (Extracted from [iThome](https://www.ithome.com.tw/news/91847))===
1. 傳統虛擬化技術如vSphere或Hyper-V是以作業系統為中心,而Container技術則是一種以應用程式為中心的虛擬化技術。
傳統虛擬化技術從作業系統層下手,目標是建立一個可以用來執行整套作業系統的沙箱獨立執行環境,習慣以虛擬機器(Virtual Machine)來稱呼。而Container技術則是直接將一個應用程式所需的相關程式碼、函式庫、環境配置檔都打包起來建立沙箱執行環境,為了和傳統虛擬化技術產生的虛擬機器區分,Container技術產生的環境就稱為Container。
2. 虛擬機器需要安裝作業系統(安裝Guest OS)才能執行應用程式,而Container內不需要安裝作業系統就能執行應用程式。Container技術不是在OS外來建立虛擬環境,而是在OS內的核心系統層來打造虛擬執行環境,透過共用Host OS的作法,取代一個一個Guest OS的功用。Container也因此被稱為是OS層的虛擬化技術。
3. 因為Container技術採取共用Host OS的作法,而不需在每一個Container內執行Guest OS,因此建立Container不需要等待作業系統開機時間,不用1分鐘或幾秒鐘就可以啟用,遠比需要數分鐘甚至數十分鐘才能開啟的傳統虛擬機器來的快。
4. Docker採用了aufs檔案系統來設計一個可以層層堆疊的Container映象檔,將Container內的所有程式(包括應用程式、相關函式庫、設定檔),都打包進Docker映象檔,並且提供了一個Dockerfile設定檔來記錄建立Container過程的每一個步驟包括參數。只要在任何支援Docker平臺的環境中,就可以從這個映象檔來建立出一個一模一樣的Container來執行同一個應用程式。如此一來,應用程式等於是可以透過Docker映象檔,或甚至只需要Dockerfile,就能將程式執行環境帶著走,移動到任何支援Docker的環境中。Docker公司也釋出API,可以用來控制所有的Container相關指令,任何人只要使用同一套Docker,就等於有了同一套管理和建立Container的方法,也就等同於將Container運用標準化了。
:::
:::info
===Container的優點 (Extracted from [iThome](https://ithelp.ithome.com.tw/articles/10198264))===
1. VM 的映像檔通常落在數 GB 至數十 GB 都有,而容器映像檔一般最大也才數百 MB。如此輕量級的特性,讓映像檔管理以及 App 的啟動、關閉流程皆方便迅速許多。
2. 容器的移轉性強;只要在實體伺服器上安裝了 Docker,無論 Host OS 為任何作業環境,皆能正常運行容器化後的應用程序。
3. 容器擁有不可變的特性,意指只要 App 能正常運作一次,未來不必擔心系統環境變動造成 App 出錯。
4. 透過 Docker 容器引擎,容器的開發、管理與運行非常簡易,因此實踐 DevOps 的運作 (Development + Operation),解決以往常見開發與維運立場不一的問題。
:::
:::info
===[Container的生命週期](https://joshhu.gitbooks.io/dockercommands/content/Containers/concepts.html)===
針對一個服務或軟體的宿主而言,伺服器、VM和Container的分別如下:
* 對伺服器來說,活著,就是電源打開,記憶體載入作業系統或軟體,並且開始消耗CPU,記憶體等系統資源的的電腦,沒有開機的電腦就是死的電腦。
* 對虛擬化平台來說,活著的VM,就是一個被Hypervisor分配到資源(CPU,記憶體),並且開始真正消耗實體伺服器資源的VM,,因為VM本身並沒有所謂真正的開機關機,一個沒有消耗實體機器資源的VM,就是死的VM。
* 對Container來說,沒有執行 `docker run/create` 之前,Container根本不存在,更沒有所謂活著或死掉的問題。執行`docker run/create`之後,Container才會誕生,開始消耗系統資源(由Linux核心提供),就是活著。執行完畢的Container,就是死的Container,但是並沒有消失,還是存在的。要執行`docker rm <container>`指令後,Container才會消失。

:::
---
## CPU
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%A4%AE%E5%A4%84%E7%90%86%E5%99%A8)
中央處理器 (英語:Central Processing Unit,縮寫:CPU),是電腦的主要裝置之一,功能主要是解釋電腦指令以及處理電腦軟體中的資料。電腦的可程式化性主要是指對中央處理器的編程。中央處理器、記憶體和輸入/輸出裝置是現代電腦的三大核心部件。1970年代以前,中央處理器由多個獨立單元構成,後來發展出由積體電路製造的中央處理器,這些高度收縮的元件就是所謂的微處理器,其中分出的中央處理器最為複雜的電路可以做成單一微小功能強大的單元。
中央處理器廣義上指一系列可以執行複雜的電腦程式的邏輯機器。這個空泛的定義很容易地將在「CPU」這個名稱被普遍使用之前的早期電腦也包括在內。無論如何,至少從1960年代早期開始(Weik 1961),這個名稱及其縮寫已開始在電子電腦產業中得到廣泛應用。儘管與早期相比,「中央處理器」在物理形態、設計製造和具體任務的執行上有了極大的發展,但是其基本的操作原理一直沒有改變。
早期的中央處理器通常是為大型及特定應用的電腦而客製。但是,這種昂貴的為特定應用客製CPU的方法很大程度上已經讓位於開發便宜、標準化、適用於一個或多個目的的處理器類。這個標準化趨勢始於由單個電晶體組成的大型電腦和微機年代,隨著積體電路的出現而加速。IC使得更為複雜的中央處理器可以在很小的空間中設計和製造(在微米的數量級)。中央處理器的標準化和小型化都使得這一類數位裝置和電子零件在現代生活中的出現頻率遠遠超過有限應用專用的電腦。現代微處理器出現在包括從汽車到手機到兒童玩具在內的各種物品中。
運算器:算術、邏輯(部件:算術邏輯單元、累加器、暫存器組、路徑轉換器、資料匯流排)
控制器:復位、使能(部件:計數器、指令暫存器、指令解碼器、狀態暫存器、時鐘產生器、微操作訊號產生器)
:::
---
## CUDA - **C**ompute **U**nified **D**evice **A**rchitecture.
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/CUDA)
是由NVIDIA所推出的一種整合技術,是該公司對於GPGPU的正式名稱。透過這個技術,使用者可利用NVIDIA的GeForce 8以後的GPU和較新的Quadro GPU進行計算。亦是首次可以利用GPU作為C-編譯器的開發環境。NVIDIA行銷的時候,往往將編譯器與架構混合推廣,造成混亂。實際上,CUDA可以相容OpenCL或者自家的C-編譯器。無論是CUDA C-語言或是OpenCL,指令最終都會被驅動程式轉換成PTX代碼,交由顯示核心計算。
:::
---
## DL - **D**eep **L**earning
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0)
是機器學習的分支,是一種試圖使用包含複雜結構或由多重非線性變換構成的多個處理層對資料進行高層抽象的演算法。
深度學習是機器學習中一種基於對資料進行表徵學習的演算法。觀測值(例如一幅圖像)可以使用多種方式來表示,如每個像素強度值的向量,或者更抽象地表示成一系列邊、特定形狀的區域等。而使用某些特定的表示方法更容易從例項中學習任務(例如,人臉識別或面部表情識別)。深度學習的好處是用非監督式或半監督式的特徵學習和分層特徵提取高效演算法來替代手工取得特徵。
表徵學習的目標是尋求更好的表示方法並建立更好的模型來從大規模未標記資料中學習這些表示方法。表示方法來自神經科學,並鬆散地建立在類似神經系統中的資訊處理和對通訊模式的理解上,如神經編碼,試圖定義拉動神經元的反應之間的關係以及大腦中的神經元的電活動之間的關係。
至今已有數種深度學習框架,如深度神經網路、卷積神經網路和深度置信網路和遞迴神經網路已被應用在電腦視覺、語音識別、自然語言處理、音訊識別與生物資訊學等領域並取得了極好的效果。
另外,「深度學習」已成為類似術語,或者說是神經網路的品牌重塑。
:::
---
## DNN - **D**eep **N**eural **N**etwork
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0)
* 深度神經網路
深度神經網路(Deep Neural Networks, DNN)是一種判別模型,可以使用反向傳播演算法進行訓練。權重更新可以使用下式進行隨機梯度下降法求解:
$$
\Delta w_{ij}(t + 1) = \Delta w_{ij}(t) + \eta \frac{\partial C}{\partial w_{ij}}
$$
其中, $\eta$ 為學習率, $C$ 為代價函式。這一函式的選擇與學習的類型(例如監督學習、無監督學習、增強學習)以及啟用功能相關。例如,為了在一個多分類問題上進行監督學習,通常的選擇是使用ReLU作為啟用功能,而使用交叉熵作為代價函式。Softmax函式定義為 $p_j = \frac{\exp(x_j)}{\sum_k \exp(x_k)}$ ,其中 $p_j$ 代表類別 $j$的機率,而 $x_j$ 和 $x_k$ 分別代表對單元 $j$ 和$k$ 的輸入。交叉熵定義為 $C = -\sum_j d_j \log(p_j)$ ,其中 $d_j$ 代表輸出單元 $j$ 的目標機率, $p_j$ 代表應用了啟用功能後對單元 $j$ 的機率輸出。
* 深度神經網路的問題
與其他神經網路模型類似,如果僅僅是簡單地訓練,深度神經網路可能會存在很多問題。常見的兩類問題是過擬合和過長的運算時間。
深度神經網路很容易產生過擬合現象,因為增加的抽象層使得模型能夠對訓練資料中較為罕見的依賴關係進行建模。對此,權重遞減( $\ell_2$ 正規化)或者稀疏( $\ell_1$ -正規化)等方法可以利用在訓練過程中以減小過擬合現象。另一種較晚用於深度神經網路訓練的正規化方法是丟棄法("dropout" regularization),即在訓練中隨機丟棄一部分隱層單元來避免對較為罕見的依賴進行建模。
反向傳播演算法和梯度下降法由於其實現簡單,與其他方法相比能夠收斂到更好的局部最優值而成為神經網路訓練的通行方法。但是,這些方法的計算代價很高,尤其是在訓練深度神經網路時,因為深度神經網路的規模(即層數和每層的節點數)、學習率、初始權重等眾多參數都需要考慮。掃描所有參數由於時間代價的原因並不可行,因而小批次訓練(mini-batching),即將多個訓練樣本組合進行訓練而不是每次只使用一個樣本進行訓練,被用於加速模型訓練。而最顯著地速度提升來自GPU,因為矩陣和向量計算非常適合使用GPU實現。但使用大規模集群進行深度神經網路訓練仍然存在困難,因而深度神經網路在訓練並列化方面仍有提升的空間。
:::
---
## DNS - Domain Name System
:::info
[===study-area===](http://www.study-area.org/network/network_dns.htm)
* DNS的來由
 如果您為您的機器設定過internet連線﹐那麼您一定接觸過DNS了﹐但DNS又是什麼東東呢﹖說穿了﹐DNS是用來幫助記憶網路地址的﹐完全是為了遷就人類的記憶思維而設的。
 DNS的全稱是Domain Name System﹐當您連上一個網址﹐在URL打上﹕www.hotmail.com的時候﹐可以說就是使用了DNS的服務了。但如果您知道這個www.hotmail.com的IP地址﹐直接輸入209.185.243.135也同樣可以到達這個網址。其實﹐電腦使用的只是IP地址而已(最終也是0和1啦)﹐這個www.hotmail.com只是讓人們容易記憶而設的。因為我們人類﹐對一些比較有意義的文字記憶(如﹕www.hotmail.com)﹐比記憶那些毫無頭緒的號碼(如﹕209.185.243.135)﹐往往容易得多。DNS的作用就是為我們在文字和IP之間擔當了翻譯﹐而免除了強記號碼的痛苦。
 假如您的電話有名字記憶功能﹐您只需知道對方的名字﹐就可以撥號給友人了﹐我們可以說﹐這電話也具備如DNS的功能了呢﹗但是﹐我們在網路中使用的DNS系統﹐就是這麼簡單嗎﹖非也﹐複雜得很呢﹗下面﹐就讓我們一起去探索一下DNS的奧秘﹕
 在早期的IP網路世界裡面﹐每台電腦都只用IP地址來表示﹐不久人們就發現這樣很難記憶﹐於是﹐一些UNIX的使用者﹐就建立一個HOSTS對應表﹐將IP和主機名字對應起來﹐這樣﹐用戶只需輸入電腦名字﹐就可以代替IP來進行溝通了。如果你安裝了Linux系統﹐在/etc下面就可以找到這個hosts檔案了﹔在NT的系統裡﹐你也可以在\winnt\system32\drivers\etc下面找到它。不過這個HOSTS檔是要由管理者手工維護的﹐最大的問題是無法適用於大型網路﹐而且更新也是件非常頭痛的事情。這就是DNS大派用場的時候了。
* DNS的結構
 DNS是一個分層級的分散式名稱對應系統﹐有點像電腦的目錄樹結構﹕在最頂端的是一個“root”﹐然後其下分為好幾個基本類別名稱﹐如﹕com﹑org﹑edu等﹔再下面是組織名稱﹐如﹕sony﹑toshiba﹑intel等﹔繼而是主機名稱﹐如﹕www﹑mail﹑ftp等。因為當初internet是從美國發起的﹐所以當時並沒有國域名稱﹐但隨著後來internet的蓬勃發展﹐DNS也加進了諸如tw﹑hk﹑au等國域名稱。所以一個完整的dns名稱就好像是這樣的﹕www.xyz.com.tw﹐而整個名稱對應的就是一個IP地址了。
 在開始的時候﹐root下面只有六個組織類別﹕
|類別名稱|代表意思|
|:---|:---|
|edu|教育、學術單位|
|org|組織、機構|
|net|網路、通訊單位|
|com|公司、企業|
|gov|政府機關|
|mil|軍事單位|
 不過﹐自從組織類別名稱開放以後﹐各種各樣五花八門的名稱也相繼涌現出來了﹐但無論如何﹐取名的規則最好儘量適合網站性質。除了原來的類別資料由美國本土的NIC(Network Information Center)管理之外﹐其它在國域以下的類別分別由該國的NIC管理。這樣的結構看起來就像這樣﹕

 在結構中﹐各組織的DNS經過申請後由該組織或其委託機構管理﹐(通常當您申請註冊一個domain域名稱的時候﹐都要指定兩台DNS主機負責該域名的DNS管理)。
* DNS的運作
 在我們設定IP網路環境的時候﹐通常都要告訴每台主機關於DNS伺服器的地址﹐(我們可以手動的在每一台主機上面設置﹐也可以使用DHCP來設定)。
 下面讓我們看看DNS是怎樣運作的﹕
1. 當被詢問到有關本域名之內的主機名稱的時候﹐DNS伺服器會直接做出回答﹔
2. 如果所查詢的主機名稱屬於其它域名的話﹐會檢查記憶體﹐看看有沒有相關資料﹔
3. 如果沒有發現﹐則會轉向root伺服器查詢﹔
4. 然後root伺服器會將該域名之授權(authoritative)伺服器(可能會超過一台)的地址告知﹔
5. 本地伺服器然後會向其中的一台伺服器查詢﹐並將這些伺服器名單存到記憶體中﹐以備將來之需(省卻再向root查詢的步驟)﹔
6. 遠方伺服器回應查詢﹔
7. 將查詢結果回應給客戶﹐並同時將結果儲存一個備份在自己的快取記憶裡面﹔
8. 如果在存放時間尚未過時之前再接到相同的查詢﹐則以存放於快取記憶裡面的資料來做回應。
 從這個過程我們可以看出﹐沒有任何一台DNS主機會包含所有域名的DNS資料﹐資料都是分散在全部的DNS伺服器中﹐而NIC只需知道各DNS伺服器地址就可以了。
 為了更好地理解一下 DNS 的運作﹐讓我們用下圖看看查詢www.home.netman.com.tw這台主機位址的過程﹕

 在這個例子中﹐www.home.netman.com.tw台主機的DNS對應資料﹐是由負責home.netman.com.tw這個域名的DNS伺服器管理的。(在DNS術語中﹐我們稱一個域名為“zone”﹐這個zone可以是您從NIC申請回來的域名﹐也可以是從該域名之下延伸出來的“sub-zone”)。在這台DNS伺服器上面﹐必須有一個關於home.netman.com.tw這個zone的檔案﹐而這檔案裡面必須有一筆關於www的記錄(任何主機都是以“記錄”來表示)。這個記錄可以為一個IP地址﹐也可以以別名形式來對應一台主機名稱﹐但無論如何﹐所對應的主機名稱最終是要被一個IP地址所對應著就是了。
 同時﹐DNS還能提供“反查詢”(reverse lookup)功能﹐也就是以IP來查詢主機名稱。網路上面的許多服務﹐如﹕FTP, IRC, WWW﹑等等﹐都需要到這個功能。其實﹐DNS服務本身就必須要使用反查詢功能﹐而且在設定上﹐也必須要為每個網路建立起reverse zone。雖然有些人發覺即使沒有reverse zone也可以利用到DNS服務﹐但其中弊端卻不容易被察覺到﹐在這個(中文)網頁﹕http://dnsrd.nctu.edu.tw/Basic/WhenToUse-Rev.html 上面﹐您可以看到忽略revers zone所致一些問題。
* DNS的名稱記錄
 事實上﹐DNS不僅僅是用來解釋地址用的﹐而且還可以回答更多關於網路和主機的其它信息﹐其中很重要的一個功能就是可以供郵件系統進行路由。這些資料﹐通常會以不同的“記錄”名稱出現在DNS的資料檔案中。
 下面讓我們參考一個Linux的DNS檔案﹐看看這些記錄是如何表示的﹕
```
;
; Zone file for siyongc.domain
;
; Then full zone file
;
$TTL 86400
@ IN SOA redhat52.siyongc.domain. netman.siyongc.domain. (
1999092801 ; serial
8H ; refresh
2H ; retry
1W ; expire
1D ) ; minimun
;
IN TXT "A test domain, created by Netman"
IN NS redhat52
IN NS debian.home.
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
;
localhost IN A 127.0.0.1
﹔
gw IN A 192.168.0.17
IN HINFO "Redhat" "MASQ"
IN TXT "The masquerade gateway to internet"
﹔
redhat52 IN A 192.168.0.17
IN MX 10 redhat52
IN MX 20 debian.home.
IN HINFO "Dell PII 266" "Linux RedHat"
www IN CNAME redhat52
mail IN CNAME redhat52
ftp IN CNAME redhat52
news IN CNAME redhat52
smtp IN CNAME redhat52
﹔
pii266 IN A 192.168.0.15
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
﹔
slware36 IN A 192.168.0.18
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
﹔
rhroute IN A 192.168.0.4
IN MX 10 redhat52.siyongc.domain.
IN MX 20 debian.home.
```
 我們姑且不理會開頭那幾行的意思﹐那是給DNS系統本身使用的(我將會在“學習Linux”文章裡面再詳細討論)﹐這裡我們只是看看幾個記錄名稱而已

* 分擔DNS工作
 Primary(master) DNS伺服器是架設在某一個網域下被主要授權並控制所有名稱記錄的主控制 伺服器﹐管轄著所有該網域的記錄資料﹐這些記錄資料只有primary(master)可以修 改。
 但如果在一個比較大型的網路中﹐DNS伺服器就會變得很繁忙了﹐所以您可以設定多個DNS來分 擔master的工作﹐但您或許不願意到每一個DNS伺服器去更新資料吧﹖而且就算您願意這樣做﹐也 容易出現錯誤或資料不同步的情形。這樣您可以設定其它的伺服器為secondary (slave) DNS來複 製master上面的記錄資料﹐這樣﹐其它的電腦可以被指定到不同的DNS做查詢﹐既可以分 擔master的工作﹐而且資料也可以自動進行同步工作。您可以設定DNS資料同步的時間間隔﹐ 在dns檔案中的Refresh設定就是了。同時您還會看到Serial﹐當slave的上面的serial數 字少於它﹐資料就會被複製﹐否則會被忽略。
* 驗證DNS工作
 當您建立好一個DNS伺服器之後﹐除了可以直接使用命令 ping (這個會在後面章節說明)直接ping一下上面的記錄之外﹐最好還是使用“nslookup”這個命令進行檢測或除錯﹐(Windows9x系統並不包含此命令)。下面讓我們在Linux中驗證一下﹕當您輸入nslookup之後﹐您會看到您機器目前指定的DNS伺服器的回應﹕
```
Default Server: redhat52.siyongc.domain
Address: 192.168.0.17
```
 然後您輸入欲查詢的主機或IP地址﹐您會看到從DNS回來的結果﹕
```
> pii266.siyongc.domain
Server: redhat52.siyongc
Address: 192.168.0.17
Name: pii266.siyongc.domain
Address: 192.168.0.15
> www.hinet.net
Server: redhat52.siyongc.domain
Address: 192.168.0.17
Non-authoritative answer:
Name: w3c2.hinet.net
Address: 168.95.1.84
Aliases: www.hinet.net
```
 這是一個標準模式下面的查詢﹐我們可以看到﹕不是這台DNS伺服器管理的查詢﹐而且已經在 cache 裡面了﹐會附加一個﹕“Non-authoritative answer:”的回應信息。但如果我們先將查詢模式設為any之後﹐再輸入同樣的主機名稱﹕
```
> set q=any
> pii266.siyongc.domain
Server: redhat52.siyongc.domain
Address: 192.168.0.17
pii266.siyongc.domain preference = 20, mail exchanger = debian.home
pii266.siyongc.domain preference = 10, mail exchanger = redhat52.siyongc.domain
pii266.siyongc.domain internet address = 192.168.0.15
siyongc.domain nameserver = debian.home
siyongc.domain nameserver = redhat52.siyongc.domain
debian.home internet address = 192.168.0.2
redhat52.siyongc.domain internet address = 192.168.0.17
```
 您就可以看到更多的資料了﹐例如﹕MX﹑NS﹑和它們的IP地址等信息。假如您使用“除錯模式”的話﹐看到的資料還將更多﹗
```
> set debug
> www.hinet.net
Server: redhat52.siyongc.domain
Address: 192.168.0.17
;; res_nmkquery(QUERY, www.hinet.net, IN, ANY)
------------
Got answer:
HEADER:
opcode = QUERY, id = 3102, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 3, additional = 3
QUESTIONS:
www.hinet.net, type = ANY, class = IN
ANSWERS:
-> www.hinet.net
canonical name = w3c2.hinet.net
ttl = 76134 (21h8m54s)
AUTHORITY RECORDS:
-> hinet.net
nameserver = HNTP1.hinet.net
ttl = 162533 (1d21h8m53s)
-> hinet.net
nameserver = HNTP3.hinet.net
ttl = 162533 (1d21h8m53s)
-> hinet.net
nameserver = DNS.hinet.net
ttl = 162533 (1d21h8m53s)
ADDITIONAL RECORDS:
-> HNTP1.hinet.net
internet address = 168.95.192.1
ttl = 162533 (1d21h8m53s)
-> HNTP3.hinet.net
internet address = 168.95.192.2
ttl = 162533 (1d21h8m53s)
-> DNS.hinet.net
internet address = 168.95.1.1
ttl = 162533 (1d21h8m53s)
------------
Non-authoritative answer:
www.hinet.net
canonical name = w3c2.hinet.net
ttl = 76134 (21h8m54s)
Authoritative answers can be found from:
hinet.net
nameserver = HNTP1.hinet.net
ttl = 162533 (1d21h8m53s)
hinet.net
nameserver = HNTP3.hinet.net
ttl = 162533 (1d21h8m53s)
hinet.net
nameserver = DNS.hinet.net
ttl = 162533 (1d21h8m53s)
HNTP1.hinet.net
internet address = 168.95.192.1
ttl = 162533 (1d21h8m53s)
HNTP3.hinet.net
internet address = 168.95.192.2
ttl = 162533 (1d21h8m53s)
DNS.hinet.net
internet address = 168.95.1.1
ttl = 162533 (1d21h8m53s)
```
 另外﹐您還可以用 set q=mx 或 set q=ptr 等模式來查詢特定的記錄﹐也可以用 ls 後接 domain name 來查看某個 domain 的所有主機記錄。善用 nslookup 我們可以找到許多 DNS 的信息﹐而當有問題發生的時候﹐這個工具就變得非常有用了。
 同時﹐在設定 DNS 的時候﹐需要比較慎密的設計﹐以免不實資料的氾濫。管理好 DNS 系統是每一個網路管理員應盡的義務。
:::
---
## Docker
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/Docker_(%E8%BB%9F%E9%AB%94))
是一個開放原始碼軟體專案,讓應用程式布署在軟體容器下的工作可以自動化進行,藉此在Linux作業系統上,提供一個額外的軟體抽象層,以及作業系統層虛擬化的自動管理機制。Docker利用Linux核心中的資源分離機制,例如cgroups,以及Linux核心命名空間(name space),來建立獨立的軟體容器(containers)。這可以在單一Linux實體下運作,避免啟動一個虛擬機器造成的額外負擔。Linux核心對命名空間的支援完全隔離了工作環境中應用程式的視野,包括行程樹、網路、用戶ID與掛載檔案系統,而核心的cgroup提供資源隔離,包括CPU、記憶體、block I/O與網路。從0.9版本起,Dockers在使用抽象虛擬是經由libvirt的LXC與systemd - nspawn提供介面的基礎上,開始包括libcontainer函式庫做為以自己的方式開始直接使用由Linux核心提供的虛擬化的設施,
依據行業分析公司「451研究」:「Dockers是有能力打包應用程式及其虛擬容器,可以在任何Linux伺服器上執行的依賴性工具,這有助於實現靈活性和便攜性,應用程式在任何地方都可以執行,無論是公有雲、私有雲、單機等。」
:::
---
## Fat Tree Topology
:::info
[===Wiki===](https://en.wikipedia.org/wiki/Fat_tree)
The fat tree network is a universal network for provably efficient communication. It was invented by Charles E. Leiserson of the Massachusetts Institute of Technology in 1985.
In a tree data structure, every branch has the same thickness, regardless of their place in the hierarchy—they are all "skinny" (skinny in this context means low-bandwidth). In a fat tree, **branches nearer the top of the hierarchy are "fatter" (thicker) than branches further down the hierarchy**. In a telecommunications network, the branches are data links; the varied thickness (bandwidth) of the data links allows for more efficient and technology-specific use.~(citation~ ~needed)~
Mesh and hypercube topologies have communication requirements that follow a rigid algorithm, and cannot be tailored to specific packaging technologies
:::
---
## (Software) Framework
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E8%BB%9F%E9%AB%94%E6%A1%86%E6%9E%B6)
軟體框架(software framework),通常指的是為了實現某個業界標準或完成特定基本任務的軟體組件規範,也指為了實現某個軟體組件規範時,提供規範所要求之基礎功能的軟體產品。
框架的功能類似於基礎設施,與具體的軟體應用無關,但是提供並實現最為基礎的軟體架構和體系。軟體開發者通常依據特定的框架實現更為複雜的商業運用和業務邏輯。這樣的軟體應用可以在支援同一種框架的軟體系統中運行。
簡而言之,框架就是制定一套規範或者規則(思想),大家(程式設計師)在該規範或者規則(思想)下工作。或者說使用別人搭好的舞台來做編劇和表演。
:::
---
## (IBM) GPFS - **G**eneral **P**arallel **F**ile **S**ystem
:::info
[===Wiki===](https://en.wikipedia.org/wiki/IBM_Spectrum_Scale)
IBM Spectrum Scale is a high-performance clustered file system developed by IBM. It can be deployed in shared-disk or shared-nothing distributed parallel modes. It is used by many of the world's largest commercial companies, as well as some of the supercomputers on the Top 500 List. For example, under its previous name of GPFS it was the filesystem of the ASC Purple Supercomputer which was composed of more than 12,000 processors and has 2 petabytes of total disk storage spanning more than 11,000 disks.
Before 2015, Spectrum Scale was known as IBM General Parallel File System (GPFS).
:::
---
## GPU
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E5%9C%96%E5%BD%A2%E8%99%95%E7%90%86%E5%99%A8)
圖形處理器(英語:graphics processing unit,縮寫:GPU),又稱顯示核心、視覺處理器、顯示晶片或繪圖晶片,是一種專門在個人電腦、工作站、遊戲機和一些行動裝置(如平板電腦、智慧型手機等)上執行繪圖運算工作的微處理器。
圖形處理器是輝達公司(NVIDIA)在1999年8月發表精視 256(GeForce 256)繪圖處理晶片時首先提出的概念,在此之前,電腦中處理影像輸出的顯示晶片,通常很少被視為是一個獨立的運算單元。而對手冶天科技(ATi)亦提出視覺處理器(Visual Processing Unit)概念。圖形處理器使顯示卡減少對中央處理器(CPU)的依賴,並分擔部分原本是由中央處理器所擔當的工作,尤其是在進行三維繪圖運算時,功效更加明顯。圖形處理器所採用的核心技術有硬體座標轉換與光源、立體環境材質貼圖和頂點混合、紋理壓縮和凹凸對映貼圖、雙重紋理四像素256位彩現引擎等。
圖形處理器可單獨與專用電路板以及附屬組件組成顯示卡,或單獨一片晶片直接內嵌入到主機板上,或者內建於主機板的北橋晶片中,現在也有內建於CPU上組成SoC的。個人電腦領域中,在2007年,90%以上的新型桌上型電腦和筆記型電腦擁有嵌入式繪圖晶片,但是在效能上往往低於不少獨立顯示卡。但2009年以後,AMD和英特爾都各自大力發展內建於中央處理器內的高效能整合式圖形處理核心,它們的效能在2012年時已經勝於那些低階獨立顯示卡,這使得不少低階的獨立顯示卡逐漸失去市場需求,兩大個人電腦圖形處理器研發巨頭中,AMD以AMD APU產品線取代旗下大部分的低階獨立顯示核心產品線。而在手持裝置領域上,隨著一些如平板電腦等裝置對圖形處理能力的需求越來越高,不少廠商像是高通(Qualcomm)、PowerVR、ARM、NVIDIA等,也在這個領域裏紛紛「大展拳腳」。
GPU不同於傳統的CPU,如Intel i5或i7處理器,其內核數量較少,專為通用計算而設計。相反,GPU是一種特殊類型的處理器,具有數百或數千個內核,經過最佳化,可並列執行大量計算。雖然GPU在遊戲中以3D彩現而聞名,但它們對執行分析、深度學習和機器學習演算法尤其有用。GPU允許某些計算比傳統CPU上執行相同的計算速度快10倍至100倍。
:::
---
## IaaS - **I**nfrastructure **a**s **a** **S**ervice
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E5%9F%BA%E7%A4%8E%E8%A8%AD%E6%96%BD%E5%8D%B3%E6%9C%8D%E5%8B%99)
基礎設施即服務(英語:Infrastructure as a Service,簡稱IaaS)是消費者使用處理、儲存、網路以及各種基礎運算資源,部署與執行作業系統或應用程式等各種軟體。
>Online services that provide high-level APIs used to dereference various low-level details of underlying network infrastructure like physical computing resources, location, data partitioning, scaling, security, backup etc.
客戶端無須購買伺服器、軟體等網路設備,即可任意部署和運行處理、存儲、網絡和其它基本的計算資源,不能控管或控制底層的基礎設施,但是可以控制作業系統、儲存裝置、已部署的應用程式,有時也可以有限度地控制特定的網路元件,像是主機端防火牆。 IaaS 是雲服務的最底層,主要提供一些基礎資源。它與 PaaS 的區別是,用戶需要自己控制底層,實現基礎設施的使用邏輯。下面這些都屬於 IaaS。
* Amazon EC2
* Digital Ocean
* RackSpace Cloud
* Openstack
:::
---
## Inference
訓練過的model,猜想新資料的走向,稱為推論。
---
## InfiniBand
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/InfiniBand)
InfiniBand(直譯為「無限頻寬」技術,縮寫為IB)是一個用於高效能計算的電腦網路通訊標準,它具有極高的吞吐量和極低的延遲,用於電腦與電腦之間的資料互連。InfiniBand也用作伺服器與儲存系統之間的直接或交換互連,以及儲存系統之間的互連。
截至2014年,它是超級電腦最常用的互連技術。Mellanox和英特爾製造InfiniBand主機匯流排介面卡和網路交換器,並根據2016年2月的報導,甲骨文公司已經設計了自己的Infiniband交換機單元和伺服器適配晶片,用於自己的產品線和第三方。Mellanox IB卡可用於Solaris、RHEL、SLES、Windows、HP-UX、VMware ESX、 AIX。它被設計為可延伸和使用交換結構的網路拓撲。
作為互連技術,IB與乙太網、光纖通道和其他專有技術(例如克雷公司的SeaStar)競爭。
該技術由InfiniBand貿易聯盟推動。
:::
---
## Infrastructure
構建系統的基礎結構,如storage, network, CPU node, GPU node等。
---
## IP - **I**nternet **P**rotocol
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E7%BD%91%E9%99%85%E5%8D%8F%E8%AE%AE)
 網際協定(英語:Internet Protocol,縮寫:IP;也稱網際網路協定)是用於封包交換資料網路的一種協定。
 IP是在TCP/IP協定套組中網路層的主要協定,任務僅僅是根據源主機和目的主機的位址來傳送資料。為此目的,IP定義了尋址方法和資料報的封裝結構。第一個架構的主要版本為IPv4,目前仍然是廣泛使用的網際網路協定,儘管世界各地正在積極部署IPv6。
:::
---
## IP Address -
:::info
[===Site===](https://Link)
 Text
:::
---
## IPv4 - **I**nternet **P**rotocol **v**ersion **4**
:::info
[===NordVPN===](https://nordvpn.com/zh-tw/what-is-my-ip/)
 網路服務提供方大多仍使用 IPv4。它是以 32 個二進制位為基礎,由 0 到 255 之間的四個數字組成,並由點進行分隔。例如,103.86.98.1。
 但是,IPv4 只能產生 43 億個獨一無二的 IP 位址。在這個數位時代,這數量遠遠不夠,IPv4 位址很快就會被指派完。
:::
---
## IPv6 - **I**nternet **P**rotocol **v**ersion **6**
:::info
[===NordVPN===](https://nordvpn.com/zh-tw/what-is-my-ip/)
 IPv6 位址由 8 個數字的區塊所組成。每個數字區塊寫著四個十六進位數字,而且區塊之間用冒號 (:) 分隔。例如 2400:BB40:1100:0000:0000:0000:0000:
0001。
 僅包含 0 的數字組通常會為了節省空間,而被省略。但會新增冒號以表示間隙。例如,2400:BB40:1100::1。
### 為什麼 IPv6 尚未完全被採用?
 與 IPv4 通訊協定不同,IPv6 永遠不會指派完所有獨一無二的 IP 位址,因為它可以提供近 3.4×10^38 個位址。此外,有人認為 IPv6 是效率更高的科技,可提供更好的品質和連接性。
 但是,IPv6 尚未完全實現有兩個原因:
1. IPv6 無法向後兼容 IPv4。如果您的裝置是以 IPv6 通訊協定進行運作,則您將無法存取 IPv4 的網站。
2. 在缺乏立即的效益下,難以採行新技術。儘管 IPv4 確實符合我們的需求,但在 IPv6 的使用達到極限之前,是很難在全球範圍內進行通訊協定使用的轉換。
:::
---
## IPMI - **I**ntelligent **P**latform **M**anagement **I**nterface
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/IPMI)
智慧型平台管理介面(Intelligent Platform Management Interface)原本是一種Intel架構的企業系統的週邊裝置所採用的一種工業標準。IPMI亦是一個開放的免費標準,使用者無需支付額外的費用即可使用此標準。
IPMI 能夠橫跨不同的作業系統、韌體和硬體平台,可以智慧型的監視、控制和自動回報大量伺服器的運作狀況,以降低伺服器系統成本。
#### 特性
IPMI獨立於作業系統外自行運作,並容許管理者即使在缺少作業系統或系統管理軟體、或受監控的系統關機但有接電源的情況下仍能遠端管理系統。IPMI也能在作業系統啟動後活動,與系統管理功能一併使用時還能提供加強功能,IPMI只定義架構和介面格式成為標準,詳細實作可能會有所不同。
IPMI 1.5版和之後的版本能透過直接串接、區域網路、或Serial over LAN到遠端送出警報,系統管理員能使用IPMI訊息去查詢平台狀態、檢視硬體的日誌、或透過相同連線從遠端控制台發出其他要求,這個標準也為系統定義了一個警報機制送出簡單網路管理協定(SNMP) 平台事件圈套(PET, Platform Event Trap)。
#### 頻帶和頻帶外
IPMI實作的通常被稱作 頻帶 管理LAN連線,這個連線應用一個介於BMC和基板NIC之間的SMBUS介面。
這個方案有降低成本的優點,但也限制了頻寬-足夠主控台(Console)的重新導向但不足夠傳訊視訊。換句話說,當遠端的電腦關機了,系統管理員能透過IPMI和應用主控台存取。這個對一些重要的功能而言已經足夠,如:確認事件log、存取BIOS設定執行開啟、關閉、開機循環,然而,更進階的功能,如:遠端重安裝作業系統,就需要頻帶外方法應用一個專用 LAN 連線。
#### 組成
IPMI architecture diagram shows BMC sideband via SMBUS.
Baseboard Management Controller 介面
IPMI包含了一個以 基板管理控制器(BMC) 為主的控制器和其他分布在不同系統模組(被稱為「衛星」控制器)的管理控制器,衛星控制器包含了相同的架構透過IPMB(Intelligent Platform Management Bus/Bridge) - 一個I²C (Inter-Integrated Circuit)加強實作的系統介面連結到基板管理控制器(BMC),基板管理控制器(BMC) 也能與 遠端管理控制協定(RMCP) - 一個在此規格內的特殊有線協定一同被管理。
一個 實地替換單元(FRU) 擁有可替換裝置的詳細清單(如:供應者ID、製造商),一個 感應器資料記錄(SDR) 則記錄了板上個別感應器提供的屬性資料,例如:板上可能包含了感應溫度、風扇速、電流的感應器。
:::
:::info
[===pixnet===](http://kezeodsnx.pixnet.net/blog/post/33963900-ipmi%E7%B0%A1%E4%BB%8B)
#### 前言
Server的設計顯然不同於一般PC,穩定,能夠自我管理,自我修復, 能夠不中斷的提供服
務,應該會是台好server。從簡單的溫度監控,到系統及每個component的狀態的偵測與修
復,軟硬體的錯誤,每家廠商就開始設計其proprietart的interface來完成這些事。而不同的設
備與不同的應用卻使得系統難以管理,效率也不好。。因此Intel就跳出來倡導IPMI
(Intelligent Platform Management Interface)來標準化這些interface,並解決server自我管
理能力低的問題。管理的方式為透過 BMC (Baseboard Management Controller)這個
processor,與CPU及主板上的元件相連,進而監控其狀態,包含溫度,電壓,風扇等元
件,當系統出問題時予以重啟,或是當機時重開機,甚至在系統關機下也可遠端啟動。由此可
看出BMC是獨立於原來的主系統之外,獨立運作,而與CPU,OS是無關的。
2001年發佈的IPMI 1.0,是透過serial port來完成這樣的管控。1.5版及2.0版更加強了其監控
功能,以及遠端控制。
IPMI的優點整理如下:
1. 獨立於主系統,可提供out of band 的管理,適合重啟系統。並且是跨平台的。
2. 易於擴充,可增加sensor或controller
3. CPU與 BMC是相連的,可輕易接受IPMI 的event log。
#### IPMI implementation
BMC為IPMI的中心,提供所謂intelligent的管理。BMC理應是永遠啟動的,不管主系統是
on/off。

圖中央的主BMC通常是一個小而不貴的microprocessor,透過下方的 system
interface (包括SMIC/KCS/BT)與主CPU 相連。有些系統沒有這個interface,而使用external interface或是IPMB (sister standard of IPMI)。右下方的other interface則是提供
透過serial port或是ethernet的interface。這些interface主要的目的都是提供管理的能力,如
讀取sensor data,設定threshold,控制LED等。不同的interface會有performace與
capacity的差異。
右方的sensor區,通常是走I2C,因為目前的sensor都有此介面,不用再另外的電路。每一種
sensor可能會有自己的MC,而這個MC與BMC溝通。當sensor異常時,就會發出event,
BMC就可存入Event Log,並透過各種interface向外傳遞,做出相應的處理。
FRU (Field Replacable Unit)EEPROM則儲存了 FRU data。這些data包含製照商,序號,
出廠日等metadata。 FRU包含如memory (DIMM),power supply,插入式的板卡等。
像blade server有多張主板組成的server,則是透過IPMB來連接所有的BMC。另外也有
ICMB serial bus來連接每個chassis,即右上角的chassis control。BMC左方有一些
repository,則存放SDR (Sensor Data Record),是一跟跟sensor/component有關的data,
如風扇轉速,front panel溫度,電壓等資料。
#### System Interface
SMIC: 舊有的interface。low-performance,byte-at-a-time,no interrupt capacity。
KCS: 目前最普遍的interface。如同keyboard interface,優點是硬體便宜。同樣是lowperformance,
byte-at-a-time但有interrupt。
BT: IPMI最佳的interface。message會打包成一個再傳送,performance優。
SSIF: 這是2.0加進去的,利用 SMBUS protocol,跑在I2C上。cost-effective,因為系統都
有 I2C了,缺點還是low-performace。
:::
[Reference](http://benjr.tw/11240)
---
## Keras
:::info
[===Keras.io===](https://keras.io/)
Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation. Being able to go from idea to result with the least possible delay is key to doing good research.
Use Keras if you need a deep learning library that:
Allows for easy and fast prototyping (through user friendliness, modularity, and extensibility).
Supports both convolutional networks and recurrent networks, as well as combinations of the two.
Runs seamlessly on CPU and GPU.
:::
---
## Kubernetes
:::info
[===Wiki===](https://en.wikipedia.org/wiki/Kubernetes)
Kubernetes (commonly stylized as K8s), pronounced "Kū-bər-NəT-ēz" ~(citation~ ~needed)~ is an open-source container-orchestration system for automating deployment, scaling and management of containerized applications. It was originally designed by Google and is now maintained by the Cloud Native Computing Foundation. It aims to provide a "platform for automating deployment, scaling, and operations of application containers across clusters of hosts." It works with a range of container tools, including Docker.
:::
---
## Lustre
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/Lustre)
一種平行分散式檔案系統,通常用於大型電腦叢集和超級電腦。Lustre是源自Linux和Cluster的混成詞。最早在1999年,由皮特·布拉姆(英語:Peter Braam)建立的叢集檔案系統公司(英語:Cluster File Systems Inc.)開始研發,於2003年釋出 Lustre 1.0。採用GNU GPLv2開源碼授權。
:::
---
## ML - **M**achine **L**earning
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0)
機器學習是人工智慧的一個分支。人工智慧的研究歷史有著一條從以「推理」為重點,到以「知識」為重點,再到以「學習」為重點的自然、清晰的脈絡。顯然,機器學習是實現人工智慧的一個途徑,即以機器學習為手段解決人工智慧中的問題。機器學習在近30多年已發展為一門多領域交叉學科,涉及機率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。機器學習理論主要是設計和分析一些讓電腦可以自動「學習」的演算法。機器學習演算法是一類從資料中自動分析獲得規律,並利用規律對未知資料進行預測的演算法。因為學習演算法中涉及了大量的統計學理論,機器學習與推斷統計學聯繫尤為密切,也被稱為統計學習理論。演算法設計方面,機器學習理論關注可以實現的,行之有效的學習演算法。很多推論問題屬於無程式可循難度,所以部分的機器學習研究是開發容易處理的近似演算法。
機器學習已廣泛應用於資料探勘、電腦視覺、自然語言處理、生物特徵識別、搜尋引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰略遊戲和機器人等領域。
定義
#### 機器學習有下面幾種定義:
* 機器學習是一門人工智慧的科學,該領域的主要研究物件是人工智慧,特別是如何在經驗學習中改善具體演算法的效能。
* 機器學習是對能通過經驗自動改進的電腦演算法的研究。
* 機器學習是用資料或以往的經驗,以此最佳化電腦程式的效能標準。
一種經常參照的英文定義是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
分類
#### 機器學習可以分成下面幾種類別:
* 監督學習從給定的訓練資料集中學習出一個函式,當新的資料到來時,可以根據這個函式預測結果。監督學習的訓練集要求是包括輸入和輸出,也可以說是特徵和目標。訓練集中的目標是由人標註的。常見的監督學習演算法包括回歸分析和統計分類。
監督學習和非監督學習的差別就是訓練集目標是否人標註。他們都有訓練集 且都有輸入和輸出
* 無監督學習與監督學習相比,訓練集沒有人為標註的結果。常見的無監督學習演算法有生成對抗網路(GAN)、聚類。
* 半監督學習介於監督學習與無監督學習之間。
* 增強學習通過觀察來學習做成如何的動作。每個動作都會對環境有所影響,學習物件根據觀察到的周圍環境的回饋來做出判斷。
:::
---
## NVIDIA GPUDirect
:::info
[===NVIDIA===](https://www.nvidia.com.tw/page/technologies.html)
NVIDIA GPUDirect™ 技術藉由除去 CPU 上不必要的處理程序,讓GPU和其他PCIe匯流排串接的元件裝置以更快的速度進行溝通。GPUDirect v1.0能讓第三方裝置的驅動程式 (例如 InfiniBand轉接器的驅動程式) 和CUDA 驅動程式直接溝通,如此能省略在 CPU 上複製資料的程序。GPUDirect v2.0 能支援同系統中 GPU 之間的點對點 (P2P) 通訊,可避免額外的 CPU 負荷。
:::
---
## NVLink
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/NVLink)
是NVIDIA開發並推出的一種匯流排及其通訊協定。NVLink採用點對點結構、串列傳輸,用於中央處理器(CPU)與圖形處理器(GPU)之間的連接,也可用於多個圖形處理器之間的相互連接。當前配備並使用NVLink的產品業已發布,多為針對高效能運算應用領域,像是輝達目前最新的Tesla P100運算卡。
:::
---
## Node
Cluster中的單一電腦。
---
## Object storage
:::info
[===Wiki===](https://en.wikipedia.org/wiki/Object_storage)
Object storage (also known as object-based storage) is a computer data storage architecture that manages data as objects, as opposed to other storage architectures like file systems which manage data as a file hierarchy, and block storage which manages data as blocks within sectors and tracks. Each object typically includes the data itself, a variable amount of metadata, and a globally unique identifier. Object storage can be implemented at multiple levels, including the device level (object-storage device), the system level, and the interface level. In each case, object storage seeks to enable capabilities not addressed by other storage architectures, like interfaces that can be directly programmable by the application, a namespace that can span multiple instances of physical hardware, and data-management functions like data replication and data distribution at object-level granularity.
Object-storage systems allow retention of massive amounts of unstructured data. Object storage is used for purposes such as storing photos on Facebook, songs on Spotify, or files in online collaboration services, such as Dropbox.
:::
---
## Omni-Path
:::info
[===Wiki===](https://en.wikipedia.org/wiki/Omni-Path)
Omni-Path (also Omni-Path Architecture, abbr. OPA) is a high-performance communication architecture owned by Intel. It aims for low communication latency, low power consumption and a high throughput. Intel plans to develop technology based on this architecture for exascale computing. In 2017 Intel is offering at least 7 variations of multi-port Ethernet switches using this term in the form "Intel® Omni-Path Edge Switch 100 Series" all "supporting 100 Gb/s for all ports". First models of that series were already available starting Q4/2015.
:::
---
## OpenStack
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/OpenStack)
OpenStack是一個美國航太總署和Rackspace合作研發的雲端運算軟體,以Apache授權條款授權,並且是一個自由軟體和開放原始碼計畫。
#### 運用範圍
美國航太總署的Nebula運算平台。
OpenStack是基礎設施即服務(IaaS)軟體,讓任何人都可以自行建立和提供雲端運算服務。
此外,OpenStack也用作建立防火牆內的「私有雲」(Private Cloud),提供機構或企業內各部門共享資源。
#### 技術資料
* 以Python程式語言編寫
* 整合Tornado網頁伺服器、Nebula運算平台
* 使用Twisted軟體框架
* 遵循Open Virtualization Format、AMQP、SQLAlchemy等標準
* 虛擬機器軟體支援包括:KVM、Xen、VirtualBox、VMware、Hyper-V
:::
:::info
[===Wiki===](https://en.wikipedia.org/wiki/OpenStack)
OpenStack is a free and open-source software platform for cloud computing, mostly deployed as infrastructure-as-a-service (IaaS), whereby virtual servers and other resources are made available to customers. The software platform consists of interrelated components that control diverse, multi-vendor hardware pools of processing, storage, and networking resources throughout a data center. Users either manage it through a web-based dashboard, through command-line tools, or through RESTful web services.
OpenStack began in 2010 as a joint project of Rackspace Hosting and NASA. As of 2016, it is managed by the OpenStack Foundation, a non-profit corporate entity established in September 2012 to promote OpenStack software and its community. More than 500 companies have joined the project.
#### Components
* Compute (Nova)
* Networking (Neutron)
* Block storage (Cinder)
* Identity (Keystone)
* Image (Glance)
* Object storage (Swift)
* Dashboard (Horizon)
* Orchestration (Heat)
* Workflow (Mistral)
* Telemetry (Ceilometer)
* Database (Trove)
* Elastic map reduce (Sahara)
* Bare metal (Ironic)
* Messaging (Zaqar)
* Shared file system (Manila)
* DNS (Designate)
* Search (Searchlight)
* Key manager (Barbican)
* Container orchestration (Magnum)
* Root Cause Analysis (Vitrage)
* Rule-based alarm actions (Aodh)
:::
---
## PaaS - **P**latform **a**s **a** **S**ervice
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E5%B9%B3%E5%8F%B0%E5%8D%B3%E6%9C%8D%E5%8A%A1)
平台即服務(英語:platform as a service,縮寫:PaaS)是一種雲端運算服務,提供運算平台與解決方案服務。在雲端運算的典型層級中,PaaS層介於軟體即服務與基礎設施即服務之間。
PaaS提供使用者將雲端基礎設施部署與建立至用戶端,或者藉此獲得使用程式語言、程式庫與服務。使用者不需要管理與控制雲端基礎設施(包含網路、伺服器、作業系統或儲存),但需要控制上層的應用程式部署與應用代管的環境。
PaaS將軟體研發的平台做為一種服務,以軟體即服務(SaaS)模式交付給用戶。因此,PaaS也是SaaS模式的一種應用。但是,PaaS的出現可以加快SaaS的發展,尤其是加快SaaS應用的開發速度。
PaaS 提供軟體部署平台(runtime),抽象掉了硬體和作業系統細節,可以無縫地擴充(scaling)。開發者只需要關注自己的業務邏輯,不需要關注底層。下面這些都屬於 PaaS。
* Heroku
* Google App Engine
* OpenShift
:::
---
## Python
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/Python)
Python(英國發音: /ˈpaɪθən/ 美國發音: /ˈpaɪθɑːn/),是一種廣泛使用的高階程式語言,屬於通用型程式語言,由吉多·范羅蘇姆創造,第一版釋出於1991年。可以視之為一種改良(加入一些其他程式語言的優點,如物件導向)的LISP。作為一種直譯語言,Python的設計哲學強調代碼的可讀性和簡潔的語法(尤其是使用空格縮排劃分代碼塊,而非使用大括號或者關鍵詞)。相比於C++或Java,Python讓開發者能夠用更少的代碼表達想法。不管是小型還是大型程式,該語言都試圖讓程式的結構清晰明了。
與Scheme、Ruby、Perl、Tcl等動態型別程式語言一樣,Python擁有動態型別系統和垃圾回收功能,能夠自動管理記憶體使用,並且支援多種編程範式,包括物件導向、命令式、函數式和程序式編程。其本身擁有一個巨大而廣泛的標準庫。
Python 直譯器本身幾乎可以在所有的作業系統中執行。Python的正式直譯器CPython是用C語言編寫的、是一個由社群驅動的自由軟體,目前由Python軟體基金會管理。
:::
---
## REST - **Re**presentational **S**tate **T**ransfer (RESTful API)
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E8%A1%A8%E7%8E%B0%E5%B1%82%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2)
表現層狀態轉換(REST,英文:Representational State Transfer)是Roy Thomas Fielding博士於2000年在他的博士論文中提出來的一種全球資訊網軟體架構風格,目的是便於不同軟體/程式在網路(例如網際網路)中互相傳遞資訊。表現層狀態轉換(REST,英文:Representational State Transfer)是根基於超文字傳輸協定(HTTP)之上而確定的一組約束和屬性,是一種設計提供全球資訊網絡服務的軟體構建風格。符合或相容於這種架構風格(簡稱為 REST 或 RESTful)的網路服務,允許用戶端發出以統一資源標識符存取和操作網路資源的請求,而與預先定義好的無狀態操作集一致化。因此表現層狀態轉換提供了在網際網路的計算系統之間,彼此資源可互動使用的協作性質(interoperability)。相對於其它種類的網路服務,例如 SOAP服務則是以本身所定義的操作集,來存取網路上的資源。
:::
:::info
[===iT邦幫忙===](https://ithelp.ithome.com.tw/articles/10157431)
Representational State Transfer,簡稱REST,它是一種網路架構風格,他並不是一種標準。
而 RESTful 可以這樣子想像: 美麗 (Beauty) 的事物可以稱為 Beautiful; 設計為 REST 的系統就可以稱為 RESTful
以 API 而言,假設我們正在撰寫一組待辦事項的 API,
可能會有以下方式來作為 API 的 interface:
獲取使用者資料 /getAllUsers
獲取使用者資料 /getUser/1
新增使用者資料 /createUser
更新使用者資料 /updateUser/1
刪除使用者資料 /deleteUser/1
若是以 REST 風格來開發 RESTful API 的話:
獲取使用者資料 /GET /users
獲取使用者資料 /GET /user/1
新增使用者資料 /POST /user
更新使用者資料 /PUT /user/1
刪除使用者資料 /DELETE /user/1
兩者差異是在於 RESTful API 充分地使用了 HTTP protocol (GET/POST/PUT/DELETE),達到:
以直觀簡潔的資源 URI
並且善用 HTTP Verb
達到對資源的操作
並使用 Web 所接受的資料類型: JSON, XML, YAML 等,最常見的是 JSON
通常是使用 HTTP, URI, JSON, HTML 這些現有廣泛流行的協議和標準,且使用 HTTP status code 來代表該資源的狀態。
框架中強制使用 REST 風格的最有名的應該就是 Ruby on Rails 了!
p.s. 因為 REST 並非是一種標準,因此有時候也不一定非得要照著 REST 來做,
只是在資源的操作面上,可以設計成這類的風格,以達到簡潔易懂,並且可重用。
:::
[How I explain REST to my wife](http://blog.sina.com.cn/s/blog_53d404bf0100n0bv.html)
:::info
[===煎炸熊の記事本===](https://note.artchiu.org/2016/10/04/%E6%B7%BA%E8%AB%87-rest-%E8%BB%9F%E9%AB%94%E6%9E%B6%E6%A7%8B%E9%A2%A8%E6%A0%BC-%E5%BE%9E%E4%BA%86%E8%A7%A3-rest-%E5%88%B0%E8%A8%AD%E8%A8%88-restful%EF%BC%81/)
1. REST 在概念上提出了幾項 Constraints (條件/原則),當我們的設計系統符合這些 Constraints 的時候,我們可稱這個系統為 RESTful。REST 提及的 Constraints 如下:
* Client-Server - 使用主從式架構設計。
* Stateless - Client與Server的溝通不需依賴狀態,每一個 Request 必須包含所有需要的資訊,而不需依賴其他 Request 的狀態。如此便能夠,目的是為了改善 Visibility (可視度!?不是很懂!?), Reliability (容易從錯誤中復原,維持正常的運作), Scalability (輕易地將 Request 交給其他 Server 進行處理) 能力。
* Cacheable - 可實作快取,且快取機制可以在 Client 或 Server 中實作。
* Uniform Interface - 在 Components (後面會介紹 REST Components) 之間使用一致性的操作介面,為了透過介面降低耦合並提高獨立性 (Independent)。其中 REST 對 Interface 定義了四種限制(目前我認為 Uniform Interface 就是 REST 的核心價值,有效的藉由抽象介面來隔離實作細節):
* Identification of resources : 唯一的資源識別方法 Resource Identifiers (Nouns),在 HTTP 即是 URL
* Manipulation of resources through representations : 透過特定的操作方法來操作資源 (verbs),在 HTTP 即是 GET, POST, PUT ,DELETE Mothods
* Self-descriptive messages : 自我描述資訊,在 HTTP 即是 Content-Type
* Hypermedia as the engine of application state : (我不了解這想表達什麼!?殘念.......)
* Layered System - 可分層的系統架構,目的在於隱藏介面後的實作細節,使得系統更容易實現快取、加密等等機制。
* Code-On-Demand (optional) - 可執行程式碼的設計,像是 JavaScript(非必要實作項目)
2. REST Architectural Elements - REST 架構元素
REST 定義了三種角色,分別是 Data Elements, Connectors 與 Components。
2.1. REST Data Elements
Resource - the intended conceptual target of a hypertext reference
Resource identifier - URL, URN
Representation - HTML document, JPEG image
Representation metadata - media type, last-modified time
Resource metadata - source link, alternates, vary
Control data - if-modified-since, cache-control
一般來說 Distributed Hypermedia Architect (分散式超媒體架構) 通常有以下三個實作方式,也有各自的優缺點:
傳送者將資料 Render 後傳送給接受者,如此的方式對於接收者來說實作最簡單。但是由於傳送者的 Render 功能限制,系統的 Scalability (可擴展性) 相當的差。(傳統的 Web MVC 實作常看見這樣的架構)
封裝資料與 Render Engine 然後一起傳送給接收者。如此能夠有效的封裝資料,缺點為有可能造成過高的資料傳送成本。
傳送原始資料 (RAW Data) 與 Metadata 给接收者,根據使用者可用的 Engine 自行 Render。優點為傳送資料的成本較低,缺點為對於資料的隱藏性較差,而雙方必須對 Data Type 有一定的共識。
REST 混合了這三種實作方法,但 REST 最主要的貢獻在於明確地抽離 Client 與 Server 的耦合性,透過一致性的介面進行溝通,大幅增加 Server 的 Scalability (可擴展性)。
Resources and Resource Identifiers (資源識別子) - Data Elements 主要的概念為 Resources,在 REST 的系統架構中所有的 Entity (實體) 使用全域唯一的 Resource Identifiers 進行識別與定義(全域的目的為盡可能讓這樣的識別資源方法在不同系統中能夠正確地指向唯一的實體),並且有效地將實體資源與 Resource Identifiers 進行 mapping。資源存取者透過 Connectors 操作資源,然而很重要的一件事,這樣資源的識別命名方式能夠直覺與合理是最好不過的。
Representations - 在 REST 的概念中 Components 之前是透過 Representations 來表示這個資源目前的狀態,Representations 就像我們所熟悉的 Content-Type。假設我們取得某個人在某個網站當前的照片,image/jpg 這樣的 Content-Type 就是一種 Representations; 當然我們也可以取得這個人在這個網站當前的個人基本資料,或許 Content-Type 會使用 application/xml (又是另一種Representations)。Client (User Agent) 在實作上會依據 Representations (就是Content-Type) 來正確地 Render 訊息,這樣的行為是不是很像我們在使用的瀏覽器呢?
2.2. REST Connectors
REST Connectors 包含了以下五種型態:
Client - libwww, libwww-perl
Server - libwww, Apache API, NSAPI
Cache - browser cache, Akamai cache network
Resolver - bind (DNS lookup library)
Tunnel - SOCKS, SSL after HTTP CONNECT
這些 Connectors 透過抽象的介面與 Components 進行溝通,在 REST 中所使用的連線都必須是 Stateless (無狀態)。Connectors 主要的形態為 Client 與 Server,由 Server 監聽 Client 所發出的 Request 並且回應 Response(連線機制與HTTP完全相符)。然而 Cache 的機制可以實作在 Client 或 Server 中(像是 Browser 與 Server 的 Cache 機制);Resolver 能夠在 Client 與 Server 的溝通上正確的進行解析處理;Tunnel 可以強制進行加密等等的工作。有趣的是這些功能都是獨立的,對於操作者來說都是隱藏且不可見的。
2.3. REST Components
REST Components 包含以下四種角色
User Agent - Netscape Navigator, Lynx, MOMspider
Origin Server - Apache httpd, Microsoft IIS
Gateway - Squid, CGI, Reverse Proxy
Proxy - CERN Proxy, Netscape Proxy, Gauntlet
User Agent 使用 Client Connector 對 Server 進行連線(User Agent 就像是瀏覽器),並且實作如何正確地 Render 來至於 Server 的 Response。Origin Server 透過 Server Connector 並且提供一個通用的 Interface 來接收 Request,透過 Interface 隱藏 Resource 的實作細節。就像我們使用 Browser 瀏覽網站的時候,不需要知道網站是用什麼樣的技術實現的。而 Gateway 與 Proxy 能夠在 Client 與 Server 溝通的過程中增加效率與安全性。
:::
---
## RNN - **R**ecursive **N**eural **N**etwork
==勿與Recurrent Neural Network搞混!==
:::info
[===Wiki===](https://en.wikipedia.org/wiki/Recursive_neural_network)
A recursive neural network (RNN) is a kind of deep neural network created by applying the same set of weights recursively over a structured input, to produce a structured prediction over variable-size input structures, or a scalar prediction on it, by traversing a given structure in topological order. RNNs have been successful, for instance, in learning sequence and tree structures in natural language processing, mainly phrase and sentence continuous representations based on word embedding. RNNs have first been introduced to learn distributed representations of structure, such as logical terms. Models and general frameworks have been developed in further works since the 90s.
:::
---
## RSA - **R**ivest-**S**hamir-**A**dleman
:::info
參考[==mslab.csie.asia.edu.tw==](http://mslab.csie.asia.edu.tw/~jackjow/courses/992_InfoSecurity/ppts/IS_RSA.pdf)
1. 選兩個大質數 $p$ 和 $q$ (至少100位數),令 $N=p\cdot q$
2. 再計算$\Phi(N)=(p-1)(q-1)$,並選一個與$\Phi(N)$互質數 $e$。 $\Phi(N)$為Euler’s Totient函數
3. $(e,N)$ 即為公開金鑰
 加密法為 $C = M^e \mod N$
4. 選一個數 $d$,滿足 $(e \cdot d) \mod \Phi(N) = 1$
5. $d$ 即為解密金鑰(亦稱私有金鑰或祕密金鑰)
 解密法為 $M = C^d \mod N$
:::success
**簡單範例:**
假設欲加密的訊息$M=7$。
1. 取$p=2,\, q=5$,可得$N=p\cdot q=10$
2. $\Phi(N)=(p-1)(q-1)=1\times4=4$。選擇$e=3$與$\Phi(N)$互質。
3. 公開金鑰:$(e, N)=(3, 10)$,則$C=M^e\mod N=7^3\mod 10=343\mod 10=3$
4. 選一個數$d=11$,滿足$(e \cdot d) \mod \Phi(N) = (3\times 11) \mod 4=1$
5. 解密法為 $M = C^d \mod N=3^{11}\mod 10=177147\mod 10=7 \quad\sharp$
:::
---
## SaaS - **S**oftware **a**s **a** **S**ervice
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E5%8D%B3%E6%9C%8D%E5%8A%A1)
軟體即服務(英語:Software as a Service,縮寫:SaaS,發音:sæs或sɑs)有時被作為「即需即用軟體」(即「一經要求,即可使用」)提及,它是一種軟體交付模式。在這種交付模式中雲端集中式代管軟體及其相關的資料,軟體僅需透過網際網路,而不須透過安裝即可使用。用戶通常使用精簡用戶端經由一個網頁瀏覽器來存取軟體即服務。
對於許多商業應用來說,軟體即服務已經成為一種常見的交付模式。這些商業應用包括會計系統、協同軟體、客戶關係管理、管理資訊系統、企業資源計劃、開票系統、人力資源管理、內容管理、以及服務台管理。軟體即服務已經被吸納進所有領先的企業級軟體公司的戰略中。這些公司的最大的賣點之一就是通過將硬體和軟體維護及支援外包給軟體即服務的提供者,來降低資訊科技(Information Technology,簡稱IT)成本。
根據一份高德納集團(Gartner Group,也稱顧能集團)的評估,軟體即服務的銷售在2010年達到了100億美元,並且曾被預計在2011年要達到121億美元,比2010年上升20.7%。高德納集團估計,到2015年,軟體即服務的收入將會超過它的2010年的收入的2倍以上,並且達到預計的213億美元。客戶關係管理系統持續成為軟體即服務的最大市場。在客戶關係管理市場中的軟體即服務曾被預測會從2010年的32億美元上升到2011年的38億美元。
「軟體即服務」(SaaS)的術語被認為是雲端運算的命名法的一部分,還有IaaS、PaaS、桌面即服務(DaaS)都被認為是雲端運算的學術名稱。
#### 知名服務提供商
* iCloud
* Google Apps(Google Apps)
* Salesforce.com(Salesforce)
* Office 365(微軟)
:::
---
## SDN - **S**oftware **D**efined **N**etworking
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E8%BB%9F%E9%AB%94%E5%AE%9A%E7%BE%A9%E7%B6%B2%E8%B7%AF)
軟體定義網路(英語:software-defined networking,縮寫作 SDN)是一種新型網路架構。它利用OpenFlow協定將路由器的控制平面(control plane)從資料平面(data plane)中分離,改以軟體方式實作。該架構可使網路管理員在不更動硬體裝置的前提下,以中央控制方式用程式重新規劃網路,為控制網路流量提供了新方案,也為核心網路和應用創新提供了良好平台。
:::
---
## Singularity
:::info
[===Wiki===](https://en.wikipedia.org/wiki/Singularity_(software))
Singularity is a free, cross-platform and open-source computer program that performs operating-system-level virtualization also known as containerization.
One of the main uses of Singularity is to bring containers and reproducibility to scientific computing and the high-performance computing (HPC) world.
The need for reproducibility requires the ability to use containers to move applications from system to system.
Using Singularity containers, developers can work in reproducible environments of their choosing and design, and these complete environments can easily be copied and executed on other platforms.
* Features
Singularity is able to support natively high-performance interconnects, such as InfiniBand and Intel Omni-Path Architecture (OPA).
Similar to the support for InfiniBand and Intel OPA devices, Singularity can support any PCIe-attached device within the compute node, such as graphic accelerators.
Singularity has also native support for Open MPI library by utilizing a hybrid MPI container approach where OpenMPI exists both inside and outside the container.
These features make Singularity increasingly useful in areas such as Machine learning, Deep learning and most data-intensive workloads where the applications benefit from the high bandwidth and low latency characteristics of these technologies.
* Integration
HPC systems traditionally already have resource management and job scheduling systems in place, so the container runtime environments must be integrated into the existing system resource manager.
Using other enterprise container solutions like Docker in HPC systems would require modifications to the software.
Singularity seamlessly integrates with many resource managers including:
* Terascale Open-source Resource and QUEue Manager (TORQUE)
* Oracle Grid Engine (SGE)
:::
---
## SLA - **S**ervice **L**evel **A**greement
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/%E6%9C%8D%E5%8A%A1%E7%BA%A7%E5%88%AB%E5%8D%8F%E8%AE%AE)
也稱服務等級協定、服務水平協定,是服務提供商與客戶之間定義的正式承諾。服務提供商與受服務用戶之間具體達成了承諾的服務指標——品質、可用性,責任。SLA最常見的組成部分是以合同約定向客戶提供的服務。例如,網際網路服務供應商(ISP)和電信公司通常在與客戶的合同條款內包含簡單定義的服務級別協定。在此事例下,SLA通常定義有平均故障間隔(MTBF)、平均修復時間或平均修復時間(MTTR);哪一方負責報告錯誤與支付費用;吞吐量;抖動;或類似的可衡量細節。
:::
:::info
[===DigiTimes===](https://www.digitimes.com.tw/tw/dt/n/shwnws.asp?cnlid=10&cat=&cat1=&id=100886)
### 服務層級協議(Service Level Agreement;SLA)
##### 鐘聖雄 2008-11-14
服務層級協議(Service Level Agreement;SLA)指的是服務提供者與使用客戶之間,應就服務品質、水準以及性能等方面達成協議或訂定契約。在設立SLA時,服務提供者首要之務,就是與使用者達成共識,決定整體方法與指導原則,並加以標準化。在SLA起頭階段,最重要的就是給使用者適當的期待,先有簡單的事情著手(如合約),而非一開始就處理太多細節。
在設定SLA時,如果能落實下列幾項重點,可讓企業或機構更容易因為導入SLA而更優化整體管理流程。
1. SLA必須以服務為導向,而且這樣的服務可以創造利商業益。
2. 制定SLA時,成本、價格以及服務內容應透明化。
3. 力求簡單明瞭,細節過多容易造成資料更新時的負擔。
4. 排列優先順序,首重為企業創造價值,避免分散焦點。
5. 盡快開始評估關鍵績效指標(KPI)。
6. 應設立明確的服務經理人。
過往由於各使用部門不甚瞭解IT運作邏輯,容易對系統產生不切實際的期待,以至於訂立的SLA過高。SLA訂得越高,代表系統的運作效能與可靠度都必須增加,勢必得大幅提高採購成本支出;然而,一般情況下,這樣的採購預算不易得到老闆的支持,因此IT部門往往無從落實這些SLA目標。不過,現在透過SLA管理軟體,可先瞭解各個系統實際的狀況,再進行修正,讓SLA較容易落實,且SLA的效益也較容易被看到。
:::
---
## SLURM
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/Slurm%E5%B7%A5%E4%BD%9C%E8%B0%83%E5%BA%A6%E5%B7%A5%E5%85%B7)
Slurm 任務調度工具(前身為極簡Linux資源管理工具,英文:Simple Linux Utility for Resource Management,取首字母,簡寫為SLURM),或 Slurm,是一個用於 Linux 和 Unix 內核系統的免費、開源的任務調度工具,被世界範圍內的超級計算機和計算機群廣泛採用。它提供了三個關鍵功能。第一,為用戶分配一定時間的專享或非專享的資源(計算機節點),以供用戶執行工作。第二,它提供了一個框架,用於啟動、執行、監測在節點上運行著的任務(通常是並行的任務,例如 MPI),第三,為任務隊列合理地分配資源。
大約60%的500強超級計算機上都運行著Slurm,包括2016年前世界上最快的計算機天河-2。
Slurm使用基於Hilbert曲線調度或肥胖 網絡拓撲結構的最適算法,以便優化並行計算機中的任務分配。
:::
---
## Swagger
:::info
[===Wiki===](https://en.wikipedia.org/wiki/Swagger_(software))
Swagger is an open source software framework backed by a large ecosystem of tools that helps developers design, build, document, and consume RESTful Web services. While most users identify Swagger by the Swagger UI tool, the Swagger toolset includes support for automated documentation, code generation, and test case generation.
Sponsored by SmartBear Software, Swagger has been a strong supporter of Open Source Software and has widespread adoption.
:::
:::info
===(Extracted from [swagger.io](https://swagger.io/docs/specification/about/))===
Swagger is a set of open-source tools built around the OpenAPI Specification that can help you design, build, document and consume REST APIs. The major Swagger tools include:
* Swagger Editor – browser-based editor where you can write OpenAPI specs.
* Swagger UI – renders OpenAPI specs as interactive API documentation.
* Swagger Codegen – generates server stubs and client libraries from an OpenAPI spec.
:::
:::info
===[*Extracted*](https://hk.saowen.com/a/7778c49102048e8601c7b7cc75c474993d05f279fe77a1d4d1e3e211bd3589a5)===
Swagger是一個大型的API開發者的工具框架,該框架提出了一個編寫OpenAPI的規範(命名為OAS),並且Swagger可以跨整個API生命週期進行開發,從設計和文檔到測試和部署。
Swagger這個框架的原理:框架提出了一個文檔規範OAS,且提供了相應的可視化編輯器可以編輯這個文檔以及對文檔格式進行校驗,文檔的存儲格式可是XML或者JSON形式的文檔(後面簡稱API元文檔),圍繞着API元文檔框架提供了對API元文檔進行可視化展示的工具,展示的時候可以自定義模板,展示的方式是瀏覽器的網頁形式(也就是一個 可交互的web系統),並且支持對AIP接口的在線的交互測試。同時社區還開發了一些集成框架,以便讓Swagger能和例如SpringMVC這樣的框架很好的集成,通過在Controller上寫註解就可以自動生成相應的API文檔。更有意思的是Swagger還提供了根據API元文檔生成客户端調用代碼和服務端Stub代碼的功能。
Swagger框架從宏觀上來看,我個人覺得可以分為三部分:
* 提供了一個編寫API文檔的規範 ,稱為OAS ,在規範中明確API的格式和一些編寫要素
* 提供相關的工具,對API文檔的編寫提供輔助。主要是這麼幾個項目 Swagger Editor、Swagger UI、Swagger Codegen、Swagger Inspector。
* 提供對各種流行語言和框架的集成,例如集成SpringMVC 的 springfox 框架。
:::
---
## Tensorflow
:::info
[===Wiki===](https://zh.wikipedia.org/wiki/TensorFlow)
TensorFlow是一個開源軟體庫,用於各種感知和語言理解任務的機器學習。目前被50個團隊用於研究和生產許多Google商業產品,如語音辨識、Gmail、Google 相簿和搜尋,其中許多產品曾使用過其前任軟體DistBelief。
TensorFlow最初由Google大腦團隊開發,用於Google的研究和生產,於2015年11月9日在Apache 2.0開源許可證下發布。
:::
---
## (IBM) TSM - **T**ivoli **S**torage **M**anager
資料保護軟體,現已更名為Spectrum Protect。
---
## VM - **V**irtual **M**achine
:::info
*(Extracted from [iThome](https://ithelp.ithome.com.tw/articles/10198264))*
選擇VM所帶來的好處
1. 每個應用程式 (App) 擁有獨立甚至相互不同的作業系統、環境
2. 管理 Host 的資源 (CPU、RAM、Storage) 並分配於各 VM,供 App 有效利用
3. 透過 Hypervisor 管理 VM 快照 (Snapshot),以實踐災難恢復 (Disaster Recovery)
4.
如果雲服務符合以下兩點中的任一條件,VM 的架構則較符合您的需求。
1. 在 App 運行的環境中,維運人員需要管理到系統底層
2. 必須建構在許多不同的作業系統之上
:::
---
## VPN - **V**irtual **P**rivate **N**etwork
:::info
* OpenVPN
* IKEv2/IPSec
* SSL VPM
:::
:::info
[===中華電信===](http://www.hilink.hinet.net/vpn_1.1.html?utm_source=google&utm_medium=cpc&utm_campaign=2020campaign&utm_content=sitelink&gclid=CjwKCAjwps75BRAcEiwAEiACMfh7_DLG2S59DQjZa0jjRWtTXtrjyLpsEsy4MWSdAqi7czWXVCSHjRoCtpsQAvD_BwE)
 VPN 全名為「Virtual Private Network」(虛擬專用網路),VPN就像是一個個封閉的通道,把公司內各點之網路連接起來,形成一個企業內部獨立且封閉安全的網路環境,且針對不同公司之資料,加裝特殊之封包資訊,不同之公司或駭客無法進入該封閉的通道,因此在通道裡的所有資料都會受到保護。VPN就如同企業內互通的密秘通道,此通道專為各企業所建,做為傳遞企業內重要資訊或語音服務,沒有經過授權的終端使用者,並無法進入通道拮取資料。
:::
:::info
[===iThome===](https://www.ithome.com.tw/node/22777)
 所謂SSL VPN和VPN最大的不同處,在於使用端(Client)是否需要安裝軟體。通常SSL VPN安裝在路由器後、網路非武裝區域(DMZ),使用者端只要打開瀏覽器軟體,在企業專屬網路介面輸入帳號密碼,訊息傳到SSL VPN後,會利用http://(port 443)或FTP等網路標準建立通道,到後端支援web的應用系統擷取資訊。
 傳統VPN(虛擬私有網路)則透過Internet Protocol security或 IPSec標準,連接使用者端Secure Client軟體和VPN管理裝置,建立一個VPN通道(Tunnel)。除了連線問題外,軟體的、設定更新和維護也是MIS頭痛的地方,更重要的是,如果使用端裝置沒有安裝Secure Client軟體,或無法撥接,VPN就派不上用場,也造成許多行動工作者的不便。
:::
---
## Item
:::info
[===Site===](https://Link)
 Text
:::
---