📄️ Adapter Pattern
Adapter Pattern這個模式是用來讓兩個已經存在但是不相容的介面能夠相容的一種方式。如果資源允許且有辦法,通常都可以直接修改這些已經存在的介面原始碼,擴充讓他能夠支援全新的功能,然而在部分的情況下,其實舊有的介面並不能這樣重新修改。因此這時候可以採用 Adapter Pattern 的方式重新打造一個接口,上承新接口,下承舊接口,藉由這個方式讓舊有的城市不用修改也能夠正常運作。
📄️ Build own octopress
本文用來記錄在安裝 octopress 發生的問題以及如何解決
📄️ C++ 語言中的 new
這次想要研究一下C++中new這個關鍵字,在c++中new總共扮演了三種角色
📄️ 淺談auto_ptr
在寫C++的時候,常常會使用new來獲取heap的空間,來取得heap的空間,如下。
📄️ Json in C#
這篇文章用來介紹在 C# 中如果想要針對 json 的種格式的資料進行處理的話,可以使用那些函式庫來幫忙處理。同時也針對不同種的使用方法給予相對應的範例程式碼,讓大家可以更快速且方便地用 C# 來操作 json 的格式資料。
📄️ XML in C-Sharp(C#)
這篇文章用來介紹在 C# 中如果想要針對 xml 的種格式的資料進行處理的話,可以使用那些函式庫來幫忙處理。同時也針對不同種的使用方法給予相對應的範例程式碼,讓大家可以更快速且方便地用 C# 來操作 xml 的格式資料。
📄️ Python 動態載入模組
最近在弄irc機器人,希望這個機器人能夠靈活一些,因此把所有功能都弄成module
📄️ Facade Pattern
本文來介紹 Facade Pateern, Facade Pattern這個模式是用來為一個已經存在的介面定義一個新的介面,這個新介面可能會擁有下列特性。1. 更高層次的抽象化 2.更容易使用. 3. 功能是本來系統的子集合。透過簡單的範例跟大家介紹 Facade Pattern 的使用情境以及如何使用
📄️ Floodlight Core RestAPI - part1
本文基於 SDN Controller Floodlight 的原始碼進行了一次簡單的分析,藉由分析這些原始碼更可以瞭解每個開放出來的 Restful API 該怎麼使用。相對於文件的更新速度,程式碼本身的迭代速度更為敏捷,因此常常會發生文件跟不上實際運行功能的案例。藉由學習閱讀原始碼,我們可以更快也更清楚的掌握當前這些開源軟體的發展狀態,甚至也能夠貢獻社群幫忙補齊文件。
📄️ FloodLight--Module
Floodlight把module分成core跟application兩個方向為主
📄️ Floodlight-modules-dependency
在floodlight這個openflow controller中,對於module之間的執行順序是如何決定的,這部分很重要
📄️ 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 的演算法來在拓樸中找到一個最短路徑來傳輸封包。
📄️ Freebsd_Quota
FreeBSD 下 Quota 的設定
📄️ Extend freebsd-ufs system
本文要介紹如何在 FreeBSD 的環境下,如果遇到空間不夠,然後透過 VM Manager 的方式去擴充一顆硬碟空間時,要如何將該硬碟空間跟本來的硬碟空間給合併成一個更大的儲存空間來使用。這個情境我個人還滿長遇到的,因為有時候透過 VM 去創立系統時,一開始沒有想到可能會使用到的空間大小,結果使用後硬碟馬上就空間不足了。雖然可以透過 VM 的管理方式擴充舊有的硬碟空間大小。本文針對這部分筆記一下使用的指令以及概念。
📄️ Python-Robot(1) IRC
要撰寫IRC 機器人其實不難,網路上到處都有範例,其實就是簡單的NP,字串來回處理而以。
📄️ Linux-Kernel-PacketCapture
最近突然對抓封包挺有興趣的,正好以前修網際網路規約時,有trace過linux中TCP/IP相關的code
📄️ Nox-Spanning_Tree
對於 SDN Controller 來說,最基本的功能就是要可以傳輸封包,然而在這種集中式管理的情況下,傳統的 Spanning Tree Protocol 不會運行。因此 Controller 本身要有辦法判斷當前的網路拓墣中是否有迴圈以避免產生廣播風暴。本文會透過觀察原始碼的方式來研究在 NOX Conroller 是如何實現的。
📄️ Openflow Introduction, Port Types
本文基於 Openflow 1.0 的規則書,跟大家分享一下在 Openflow 的規範裡到底什麼叫做 Port, 以及有多少種相關的 Port,在使用上要注意些什麼。
📄️ Openvswitch source code(1)
In this post, I try to study the soruce code of openvswitch to learn how does the openvswitch kernel module works.
📄️ OpenvSwitch source code(2)
這篇文章中,我們決定透過閱讀原始碼的方式,來瞭解 OpenvSwitch 操作上最常使用的指令,也就是 add-port 這個指令每次運行時,整個系統到底怎麼運行的。藉由閱讀原始碼的方式來釐清整個 OpenvSwitch 的架構,從 User-space 的程序到 Kerenel Space 的 Module, 這中間到底是怎麼處理的。
📄️ OpenvSwitch - hmap
hmap 是一種hash bucket的資料結構,在 OpenvSwitch 中到處都可以看到其身影,,譬如 kernel space 中的 flow_key 就是透過這種結構來存放的。本文會檢視一下該 hamp 的結構,並且稍微看一下關於插入這個動作的原始碼
📄️ OpenVSwitch - Basic Install
Environment
📄️ OpenvSwitch - overview
This post shoes about what the system do when we install the OpenvSwitch in your system. The architecture of OpenvSwitch covers both user-space and kernel-space and we can see functions of each part in this porsts.
📄️ OpenvSwitch - 2
ovs-vsctl add-port br eth1
📄️ OpenvSwitch source code(3)
這篇文章帶領大家透過閱讀原始碼的方來學習如何 OpenvSwitch 是如何處理封包的,當底層的 Kernel Switch(datapath) 沒有辦法轉發封包時,要如何將該封包送到上層的 User Space Table 進行 Openflow 規則的查詢。這部份牽扯到資料如何橫跨於 User-Space 以及 Kernel-Space.
📄️ Install the FTP server on FreeBSD
這邊要跟大家分享的是自架 FTP Server 的一些設定與心得,以往在 Windows 時可以很快速的使用 FilwZilla 來架設 FTP Server, 然而在 FreeBSD 的系統中,我們有哪些相關的選擇可以使用? 本篇文章會採用 Pure-Ftpd 作為一個 FTP Server 並且記錄 FTP 常見的相關用法要如何透過 Pure-Ftpd 來設定
📄️ SA - Shell Script(2)
作業二的部分是要寫一個script,真對參數變化然後使用gunplot去進行繪圖
📄️ Python -- split()
在python中也可以利用split的方式把字串按照特定的字元切開
📄️ Strategy Pattern
Strategy Pattern 定義一系列的演算法,ㄧ個個封裝起來,根據使用要求不同而採用不同的演算法。最基本且直觀的方式就是採用程式語言本身提供的多型來完成。一個簡單的範例就是假設有一個壓縮軟體,其提供各種不同的壓縮演算法,在這個範例中,壓縮程式本身只會有一個對應的壓縮函式呼叫,我們將不同的演算法都採取不同的實現,這樣可以避免在壓縮的函式中,要大量的透過 if/else 的方式來判斷要怎麼執行
📄️ TCP使用sendto
OS:Linux
📄️ Wireshark with Openflow-Plugin in Fedora 14
這篇文章主要分享如何於 Wireshark 中安裝額外的模組使得其有能力去解析 OpenFlow 的封包結構,對於研究 Openflow 的人來說這是一個很好使用的工具,能夠觀察 Switch to Controller, Controller to Switch 等各種封包.
📄️ X Window & X WM on FreeBSD 9.1R
本文介紹在 Unix 相關作業系統中常常使用的桌面應用程式, X Window 的架構以及簡單設定,這種 Clinet/Server 的架構下,要如何設定並且正確使用。同時也會介紹一下 X Window Manager 的概念。
📄️ C#中以ZedGraph畫統計圖
在C#中繪製統計圖表,如折線圖、圓餅圖、長條圖 ,除了可以使用內建的Graphics物件外,還可以使用第三方的套件來畫圖,這邊就介紹第三方套件 ZedGraph,下次再介紹以內建的方法來繪圖