Skip to main content

2013

2013 年發布之各種技術文

📄️ Adapter Pattern

Adapter Pattern這個模式是用來讓兩個已經存在但是不相容的介面能夠相容的一種方式。如果資源允許且有辦法,通常都可以直接修改這些已經存在的介面原始碼,擴充讓他能夠支援全新的功能,然而在部分的情況下,其實舊有的介面並不能這樣重新修改。因此這時候可以採用 Adapter Pattern 的方式重新打造一個接口,上承新接口,下承舊接口,藉由這個方式讓舊有的城市不用修改也能夠正常運作。

📄️ Floodlight Core RestAPI - part1

本文基於 SDN Controller Floodlight 的原始碼進行了一次簡單的分析,藉由分析這些原始碼更可以瞭解每個開放出來的 Restful API 該怎麼使用。相對於文件的更新速度,程式碼本身的迭代速度更為敏捷,因此常常會發生文件跟不上實際運行功能的案例。藉由學習閱讀原始碼,我們可以更快也更清楚的掌握當前這些開源軟體的發展狀態,甚至也能夠貢獻社群幫忙補齊文件。

📄️ FloodlightModule-Forwarding

本文基於 SDN Controller Floodlight 的原始碼進行了一次簡單的分析,藉由分析這些原始碼更可以學習到其內部是如何轉送封包的,藉由 Topology 模組提供的 Global Topology 資訊, Floodlight 可以從該資訊中對於任何一個點到點的之間的連線找到一條傳送路徑。接者針對這傳送路徑上所有的交換機輸入對應的 Openflow 規則來幫忙轉送封包。相對於文件的更新,程式碼本身的迭代速度更為敏捷,因此常常會發生文件跟不上實際運行功能的案例。藉由學習閱讀原始碼,我們可以更快也更清楚的掌握當前這些開源軟體的發展狀態,甚至也能夠貢獻社群幫忙補齊文件。

📄️ FloodlightModule-Topology module

本文基於 SDN Controller Floodlight 的原始碼進行了一次簡單的分析,藉由分析這些原始碼更可以學習到其內部關於網路拓樸的處理,這些拓樸除了影響 Controller 怎麼看待整個網路之外,也會間接的影響該 Controoler 要如何去正確的轉送封包。相對於文件的更新,程式碼本身的迭代速度更為敏捷,因此常常會發生文件跟不上實際運行功能的案例。藉由學習閱讀原始碼,我們可以更快也更清楚的掌握當前這些開源軟體的發展狀態,甚至也能夠貢獻社群幫忙補齊文件。

📄️ Floodlight Dijkstra

這篇文章用來介紹在 Fllodlight 中是如何去完成下列事情, 1)不使用 Spanning Tree Protocol 的方式也能夠正確的在有迴圈的網路拓樸中來傳輸封包,2) 針對任意兩個點對點的網路節點,能夠找到一條最短的路徑用來傳輸封。 這些事情在該控制器中,其實是透過計算一個 Tree 的方式來完成所謂的 Broadcast Tree, 藉此避免廣播風暴的問題,同時透過 Djikstra 的演算法來在拓樸中找到一個最短路徑來傳輸封包。

📄️ Extend freebsd-ufs system

本文要介紹如何在 FreeBSD 的環境下,如果遇到空間不夠,然後透過 VM Manager 的方式去擴充一顆硬碟空間時,要如何將該硬碟空間跟本來的硬碟空間給合併成一個更大的儲存空間來使用。這個情境我個人還滿長遇到的,因為有時候透過 VM 去創立系統時,一開始沒有想到可能會使用到的空間大小,結果使用後硬碟馬上就空間不足了。雖然可以透過 VM 的管理方式擴充舊有的硬碟空間大小。本文針對這部分筆記一下使用的指令以及概念。

📄️ Strategy Pattern

Strategy Pattern 定義一系列的演算法,ㄧ個個封裝起來,根據使用要求不同而採用不同的演算法。最基本且直觀的方式就是採用程式語言本身提供的多型來完成。一個簡單的範例就是假設有一個壓縮軟體,其提供各種不同的壓縮演算法,在這個範例中,壓縮程式本身只會有一個對應的壓縮函式呼叫,我們將不同的演算法都採取不同的實現,這樣可以避免在壓縮的函式中,要大量的透過 if/else 的方式來判斷要怎麼執行