發表文章

目前顯示的是 2013的文章

SSH Reverse Tunnel

很實用的指令,所以特別紀錄下來。其實這東西我碩士班的時候就已經有在用了,用的理由很簡單,只是為了要連回學校下載 paper,而下載 paper 要使用瀏覽器,所以透過這個招式連到防火牆後面的遠端桌面。什麼?你問我怎麼不使用學校的 proxy,天曉得?那時候就是沒想到嘛!不過那時候是用 putty,現在把指令紀錄下來,以供未來的自己查詢。 指令如下: ssh -NfR 7777 : localhost : 22 id@myhost.com -N: Do not execute a remote command.  This is useful for just forwarding ports (protocol version 2 only). -f: Requests ssh to go to background just before command execution. -R: [bind_address:]port:host:hostport Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side . 我同事 Peter 教我一個好記的方式: Need for Reverse.

如何將Linux打造成OpenFlow Switch:Openvswitch

圖片
因為工作上被指派去做SDN,自然需要SDN的網路設備才可以。問題是SDN Switch賣的超級貴的,一台差不多要30萬台幣。這跟當初推廣SDN的人說法完全不一樣!他們當初說SDN網路設備會變得比較便宜,因為網路設備上不需要在堆疊這麼多的網路協定,因此硬體可以Cost Down,也可以省下軟體的錢。問題是,如果單單賣純種SDN Switch根本是不可能的事情啊,因為缺少可以在上面跑的軟體和控制器,所以只好保留傳統設備上的功能,再多加OpenFlow的支援,並提供給使用者選擇的開關。這樣當然只會更貴不會便宜啊!! 在沒錢、沒人、沒資源的情況下,要怎麼辦呢?用模擬軟體?可惜要Demo的時候行不通。那就只好自己來打造一台SDN Switch了。雖然沒有晶片的支援,但只要不牽扯到效能的話,應該沒太多問題。下面是我和同事想過的一些解決方案: 自己打造OpenFlow的Agent,反正OpenFlow的網路協定並不複雜,然後透過Linux Kernel的netfilter來模擬晶片的行為。因為是用軟體模擬,所以效率會比較差,但反過來說,因為是軟體,所以我可以滿足所有OpenFlow的要求,不會有做不到的事情。不過這個提案被一個PM的同事封殺了,理由是這不能賣錢 ...  有一個同事找到一個有趣的專案 FlowForwarding 。這個專案提供了Open Source的OpenFlow Agent: LINC。LINC是用Erlang所開發的軟體。雖然我根本不會Erlang,但程式語言不是我考慮的重點,我好奇的是它要怎麼模擬晶片來處理封包。從網頁上看到,LINC在使用上需要libpcap的函式庫,初步猜測,LINC應該是把所有的封包透過libpcap攔截到user space以後進行修改。這樣做的效率應該會比我的解決方案更差。 OpenVswitch 。這是大部份產品的解決方案。我聽過一堆公司宣稱自己有了SDN Switch,而內容只不過是把Openvswitch移植到自己原有的產品上罷了。一樣,我好奇它要怎麼模擬晶片來處理封包,看了編譯過程,它會產生openvswitch.ko,在加上它利用bridge的特性,所以應該是在linux bridge那邊進行hook後修改。 考量到移植的方便性,所以後來我個人選擇openvswitch作為SDN Switch的解決方

SDN的迷思

軟體定義網路 Software Defined Networking ,簡稱SDN,是一個最近當紅的網路技術與研究題目。在工作上被分派到這個任務的我,除了要撰寫一大堆計劃書以外,還必須面對一堆長官的「刁難」和「冷嘲熱諷」。美其名叫作計劃審查,但我覺得和他們報告根本就是對牛彈琴、他們根本就是鴨子聽雷,然後在發表一堆可笑的「真知灼見」,如果不是因為他的位置比較高,真想把他們捻下來訓一頓,台灣的研發會走到今天這個地步,這群人的思維要附上很大的一部份責任。下面紀錄一些這些人的經典語錄: 技術方面不是重點啦,重點是能帶來多少的市場效益 ...(這位長官,你知道這次的報告是創新前瞻的計劃嗎?能帶來立即明顯效益的還叫作創新前瞻嗎?) 恩,我剛剛沒在聽(喔,原來你根本沒聽嘛)... 你應該想想其他網路廠商像是cisco他們的看法,還有能對台灣產業界帶來多少的幫助(...第1,我剛剛就提過了;第2,Cisco根本一開始就反對這樣的模式,後來不得已而轉型,今天你在叫我回去參考Cisco?第3,這個計劃才多少錢而已,要我揹負台灣產業的成敗?) 你不可以因為這個技術新的就來提計劃(所以要提舊的?)要做好效益評估...(我是RD還是策略規劃師?你長官的位置下來我做好了) 聽起來不錯,我想,先給你兩個人夠不夠?(很夠了,我想拿來應付會內的文件產生應該足夠了...) 其實還有更多,只能說無能的長官比競爭對手更可怕 ... 離題了,其實今天會寫這篇文章主要是想要回答一個問題:「 有什麼事情是傳統網路架構做不到,而透過SDN可以解決的? 」這種問題你去問一堆推動SDN的人,他們也許可以講的很頭頭是道,事實上,我也可以,畢竟對外也講過、報告過很多次了。但因為站在技術開發者的角度,有些話是當時講不出來的,這裡紀錄的是我內心真正的想法。 在回答這個問題以前,先來看看到底什麼是SDN?SDN說穿了就是下面幾個特性: 切割控制層和資料層 :讓網路設備負責執行資料的處理,而將網路控制權從網路設備中抽離。這樣最大的好處是可以簡化網路設備的成本並提升效率。 高效的網路處理晶片 。這個晶片可以處理所有L2-L4的封包。 這裡指的是晶片有能力處理封包,但是要怎麼處理要透過集中控制器來決定。 集中式控制 :所有網路設備控制權被集中到一台控制器。所以傳統網路在設計上的分散式架構被打破了,也因

列王記:約沙法

亞哈的份量比預期的多上很多,看來以利亞和耶洗別幫了不少忙。接下來把目光重新放到南國猶大。下一個要登場的君王是約沙法,約沙法是亞撒的兒子,也是個敬畏耶和華的君王。關於約沙法,列王記裏面的記載不多,大部份都在歷代志下,所以經文參考會以歷代志為主。 姓名: 約沙法 國家:南國猶大 對應的南國君王:亞哈、亞哈謝、約蘭 聖經記載: 1. 約沙法做王(代下17、王上22:41-47) 2. 拉末之戰(代下18-19:3、王上22:1-39) 3. 不是為人,乃是為耶和華(代下19:4-11) 4. 勝敗不在乎你們,乃在乎 神(代下20:1-30) 5. 約沙法和亞哈謝(代下20:31-37、王上22:48-50) 6. 約沙法和約蘭(王下3) 1. 約沙法做王(代下17、王上22:41-47) 不管是列王記還是歷代志,對壞王的描述都常都一樣,就是「效法他列祖、不遵行上帝的道」,而對好王的描述也都類似,只是把上面那句話改成「遵行上帝的道」。耶和華與約沙法同在,因為約沙法只尋求他父親的神,就是那創造天地的萬軍之耶和華。在歷代志那邊特別提到一句話:「他高興遵行耶和華的道」,約沙法是發自內心遵行上帝的命令。很多基督徒,包含我自己,有時候或多或少會覺得遵行上帝的命令好苦,會有內心的掙扎。這種天人交戰有勝有敗,求神憐憫。但約沙法是「高興」遵行上帝的道,沒有勉強、出於甘心樂意,這樣的評價真是何等的難得。怎樣才能甘心的遵行上帝的話?詩40:8那邊提到「 我的神啊,我樂意照你的旨意行;你的律法在我心裡。 」這是彌賽亞詩篇,但也教我們知道,要甘心樂意遵行上帝的話,必須把上帝的話刻在自己的心上,以上帝的心意為自己的心意,這樣按照上帝的心意行事就不會跟自己的老我產生衝突,而得享喜樂。願上帝保守我的心,使我能夠出於樂意的遵行上帝的話。 和其他猶大的好王不太一樣的地方是,約沙法他深知「樂意遵行上帝的話」的秘訣,所以他派了眾多的大臣、利未人到各城各鄉,用上帝的律法書來教訓百姓,好叫百姓也可以得知上帝的話語。約沙法很看重神學教育,那我呢?我常常在想,有小孩以後,我要好好的教她學習上帝的話語。現在有了小孩,我才在想,養小孩好花時間唷,怎麼自己的時間都沒了呢?有時候看著她,心中只希望她趕快睡覺吧,不要哭不要鬧。我在想,等她唸書以後,我還會記得要好好地教她讀聖經嗎?還是把她放給學

Linux 的好用指令:time

Well ... 寫程式常常要寫一個功能,那就是程式執行了多久。過去的作法往往是寫在程式內部,雖然不困難但是很煩。今天聽到一隻 Linux 的指令可以輕鬆達成我要的功能:time。不是新東西,只能說是自己孤陋寡聞。 用法如下: $ time ./multicoretest parallel 4 Creating thread 0 Creating thread 1 Creating thread 2 Thread 1 started Thread 0 started Task 0 started Thread 2 started Task 2 started Creating thread 3 Task 1 started Main completed Thread 3 started Task 3 started Task 0 completed with result 2.996422e+06 Thread 0 done Task 3 completed with result 2.996422e+06 Thread 3 done Task 1 completed with result 2.996422e+06 Thread 1 done Task 2 completed with result 2.996422e+06 Thread 2 done real    0m1.806s user   0m6.444s sys    0m0.000s real time 表示後面所接的指令或程式從開始執行到結束時間。 user time 表示程式在 user mode 所佔用的 CPU 時間總和。 system time 表示程式在 kernel mode 所佔用的 CPU 時間總和。 ㄟ...real 比 user 還要大ㄟ?這是因為這個範例有開 thread,而我的電腦是4個核心的緣故。

Pthread Example

說真的,我不喜歡寫 Multi-thread 的程式,因為討厭處理 thread 之間的同步問題(我這個人就是怕麻煩!)但怕以後可能會用到,所以還是留下一些範例程式以後可以參考。所有範例程式都是從網路上找來再加上一些修改後放上。 總共有兩個範例,第一個範例是單純的使用 multi-thread 的功能,可以比較 multi-thread 和 single-thread 的效率差異。程式碼如下: # include < pthread.h > # include < stdio.h > # include < stdlib.h > # include < math.h > /* A task that takes some time to complete. The id identifies distinct    tasks for printed messages. */ void * task ( int id ) { int i ; double result = 0.0 ; printf ( " Task %d started \n " , id ) ; for ( i = 0 ; i < 9000000 ; i + + ) { result = result + sin ( i ) * tan ( i ) ; } printf ( " Task %d completed with result %e \n " , id , result ) ; } /* Same as 'task', but meant to be called from different threads. */ void * threaded_task ( void * t ) { long id = ( long ) t ; printf ( " Thread %ld started \n " , id ) ; ta

列王記:亞哈

作為列王記中知名度超高的壞王(雖然他的知名度某種程度是來自他老婆跟他的仇敵),亞哈的生平有許多地方是值得我們反省和思考的。說真的,我個人並不討厭亞哈。亞哈是個很實際的人,在他軟弱的心志下,或許也有一顆小小順服神的心,只是在外在環境、老婆壓力下而消磨殆盡。我並不是要幫亞哈開拖責任,亞哈是不討神喜悅的王,但當我們指責亞哈的時候,更應當想想,自己會怎麼做?也許,我們的所作所為和他並沒有兩樣。 寫亞哈的部份有另外一個很掙扎的地方,那就是亞哈親點的仇敵~以利亞的部份要不要寫呢?(同樣的掙扎大概會出現在之後的以利沙身上吧)但出於完整度,決定連以利亞的部份一塊寫,並且併入亞哈的部份。(另外開專欄?累死人了) 姓名: 亞哈 國家:北國以色列 對應的南國君王:約沙法 聖經記載: 亞哈繼位(王上16:28-34) 以利亞的預言(王上17:1-7) 以利亞與撒勒法的寡婦~上帝的供應(王上17:8-16) 以利亞與撒勒法的寡婦~上帝的作為(王上17:17-24) 以利亞與俄巴底(王上18:1-16) 迦密山上的鬥法(王上18:17-40) 一小片雲、一大片雨(王上18:41-46) 何烈山的顯現(王上19:1-18) 撿選以利沙(王上19:19-21) 你們就知道我是耶和華(王上20:1-30) 仁慈?(王上20:31-43) 拿伯的葡萄園(王上21) 亞哈之死(王上22:1-39) 1. 亞哈繼位(王上16:28-34) 暗利死了,他的兒子亞哈繼承了他的位置。這段聖經簡單的描述了這時候的背景,也帶出了為什麼以色列人會拜巴力的由來。過去以色列人以虛無之神來取代耶和華,而如今則是正大光明的把外邦的偶像引入國內,所以聖經才會給亞哈這樣的評語:「他所行的惹耶和華─以色列 神的怒氣,比他以前的以色列諸王更甚。」 亞哈的墮落從哪裡開始?從他娶了聖經中最惡名昭彰的皇后耶洗別開始。亞哈做錯了什麼?他只是蓋了巴力、亞舍拉的廟來討老婆的歡欣,畢竟人家大老遠嫁過來,難免會想家,要給人家一些親切感啊~這種作法不就跟乾隆為了香妃在京城打造回族部落一樣嗎?照理來說是浪漫的愛情故事。然而,神不喜悅這件事情,因為這也是所羅門王墮落的開始。在 BBS 網路上的男女板、婚姻板常常出現的問題,就是男女朋友間的信仰不同、夫妻間的信仰差異,這時候大多數的人都會回復說:「要有

葡萄酒的諺語

今天去聽顏慶章前部長的演講,後面有提到紅酒的一些諺語,覺得很有趣,紀錄在下面(演講本身呢?就還好 ... 雖然是場好演說,內容卻沒有太多的新意): Drinking good wine with good food in good company is one of life's most civilized pleasures. Michael Broadbent Men are like wine - some turn to vinegar, but the best improve with age. Pope John XXIII

列王記:拿答、巴沙、以拉、心利、暗利

讀列王記的時候,最沒存在感的大概就是下面這五位王了,跟三國演義裏面那些不到三回合就被手起刀落的無名上將差不多,記不得是很正常的。而且因為是北國君王的關係,歷代志幾乎不會有什麼補充的資料。之所以把這五位放在一起 ... 純粹是因為要擴充篇幅的緣故,哈哈。 姓名: 拿答、巴沙、以拉、心利、暗利 國家:北國以色列 對應的南國君王:亞撒 聖經記載: 拿答作王以及下場(王上15:25-28;王上15:31) 巴沙叛變(王上15:28~王上16:7) 以拉作王以及下場(王上16:8-14) 心利的七日王朝(王上16:15-20) 暗利作王(王上16:16-28) 1. 拿答作王以及下場(王上15:25-28;王上15:31) 現在焦點再回到北國來,耶羅波安死了以後,拿答繼承了他的王位。按照聖經的記載:「拿答行耶和華眼中看為惡的事,行他父親所行的,犯他父親使以色列人陷在罪裡的那罪。」他父親耶羅波安犯了什麼罪?複習一下,他父親耶羅波安造了金牛犢,以虛無之神來取代耶和華,惹動上帝的怒氣。其實看到這裡,我第一個想到的是耶羅波安的另外一個兒子,那個在神眼前蒙恩卻短命的亞比雅。為什麼亞比雅在同樣的環境裏面,卻能在神眼中顯出善行,而這個拿答,卻在同樣的環境中走了跟父親一樣的路呢?環境或許會影響一個人,但這卻不能當作是藉口。上帝沒有因為拿答沒有個好的榜樣,就減輕他的過犯 ... 環境 ... 最近生了女兒,看著她的臉,我不知道她的未來如何?她是不是蒙上帝撿選呢? 考慮到現今的時代,我該怎麼教她呢?這些和上帝的真理抵觸的價值觀,我又能守護她到幾時呢?說真的,我一點自信也沒有。所以我只能為她祈禱上帝,懇求上帝的憐憫,願上帝護祐她。 2. 巴沙叛變(王上15:28~王上16:7)   巴沙殺了拿答並奪取了王位,統治以色列長達二十四年,然而他所作所為和耶羅波安、拿答一模一樣,仍舊不肯歸向耶和華。基本上同樣的事情在列王記中不停的出現,也無怪乎很多人(包含我老婆在內)會對列王記這麼厭煩了 ...  在這裡引起我好奇的,是先知耶戶。耶和華的話臨到耶戶,要他去指責巴殺的過犯。雖然看起來是對巴沙的所作所為進行審判,但又何必派遣先知呢?直接處罰不就好了嗎?可是上帝卻仍舊派了先知去,在我看來,這是上帝的憐憫和提醒。作為一個讀者,實在不覺得以色列有什麼值得憐憫之處,可是

仙劍奇俠傳五、五前傳主題詩

姜雲凡 山風桀驁雲輕狂 浮生癡情化劍芒 浪跡滄海問世道 笑看恩仇又何妨 唐雨柔 荷塘玉影伴青波 細雨輕舞映珠紅 朝露漂泊無怨悔 隻願漣漪心湖中 龍幽 銀龍漫舞動九霄 長戈幽影任獨翱 芳草無心風不語 回首前塵羽飄搖 小蠻 山花嬌豔水色青 野蠻仙子鬼靈精 少女滿懷情蠱夢 輕唱牛郎織女星 夏侯瑾軒 隨意青衫書世陌,炎涼漫映北軒窗。 雲深何處歸來處,長效天都山水郎。 瑕 搖搖葭色水間輕,澹澹風歌越蓼汀。 自許飄蓬銘入璧,約開瑜葉上雲屏。 暮菖蘭 杏雲燕雨蘭初上,寂寞妍姿開霧崖。 明月曾經川岸去,怎知碎影竟硃砂。 姜承 霜刃何當承玉甌,依稀梅淺斂灼流。 劍折忿起千鈞亂,朔氣滄瀾捲鐵鍪。 謝滄行 行劍江湖松徑老,臥聽空谷水雲生。 三山煙雨一盅酒,落拓悠然笑樹橫。 皇甫卓 錚然劍骨酬知己,熾血一腔付舊遊。 輕易王侯興滅事,嶙峋浩氣照山樓。 凌波 玉山飄渺望蓬萊,碧落星河隻手摘。 誰看青蛾舒羽袖,東風不上鳳凰臺。 悼亡詞: 霞霽風光染與,知音故千波傾盡嫣然 細雨後秋魂過際,曾見輕帆 非很緣慳情厚,碧霄外心念如磐 忘川上,年年霧鬢煙簪 龍溟 挽就鐵馬蕩長戈,斬卻風月破夢澤。 此身不是白雲客,紫衣深重掩山河。 悼亡詞: 北望嵐關興平板蕩,君王百世猶耽 旌獵獵嶙嶇朔氣,吹向天南 家園此身承負,徒嗟嘆好夢難勘 霜澤畔,深重紫衣長掩河山 厲岩 千重岩碎蒼煙斷,日暮江寒去不還 欲刻歸舟舟已遠,蕭然颯遝故人關。 結蘿 偶得君子問瑤芳,遂繫絲蘿與少狂。 夜落螢飛追皓魄,曉來花放醒寒江。

古劍奇譚官方主題詩

主題詩 百世山河任調換,一生意氣未改遷; 願從劫火投身去,重自寒灰飛赤鸞; 滄海桑田新幾度,月明還照舊容顏; 琴心劍魄今何在 ,留見星虹貫九天。 百里屠蘇 壹 古劍鐵衣映清輝 百劫閻浮一念微 許向長空傾碧血 由他業火寸身催 百里屠蘇(少年) 貳 少年十二余 神寒似玉削 振袖拂蒼雲 仗劍出白雪 眼底無故人 世事冷如鐵 誰與長相約 眉間刺新血 風晴雪 壹 青絲銀櫛別樣梳 天付婆娑入畫圖 好向寒節報花信 春風一脈動幽都 風晴雪 貳 忽如春風至 贈我久馨芳 暖雪回新候 晴風解嚴霜 壽無金石固 隨時愛景光 與君一執手 衣袖十年香 方蘭生 壹 瑯嬛久覓紫雲鄉 半枕清風鶴夢長 六藝四書全拋卻 一身盡染素心香 方蘭生 貳 庭中生嘉樹 華葉自飄搖 溫然發秀質 馥蘭映瓊瑤 相逢為君飲 攜手即知交 跋扈正少年 豈論梓與蒿 襄玲 壹 額前未肯點胭脂 懶把相思細細知 笑裏鞦韆輕自語 背人鬥草弄晴絲 襄玲 貳 誰家女兒嬌 垂髮尚年少 樹下抱香眠 泉邊掬影笑 徘復愛顏色 隔花昵青鳥 嬉遊終日夕 不覺晴光老 尹千觴 壹 江湖肝膽風波促 萬里雲山醉夢真 漫舉觥籌殷殷勸 石火光隙寄此生 尹千觴 貳 久把江湖宿 落拓年復年 換醪濯塵骨 釣月伴酒仙 多情誰似我 甘為紅塵耽 隨處埋骨地 何需有青山 紅玉 壹 九重環佩艷琳琅 一段紅綃旖旎長 昔日匣中三尺水 曾與明月鬥青霜 紅玉 貳 昔宿無性靈 久被東風誤 多謝彼君子 為我一回顧 霜雪凝精神 桃花鑄肌骨 還報一寸心 愿同塵與土 歐陽少恭 壹 鳳前獨坐弄琴箏 明滅蓬山九萬程 偏有漏長驚永夜 夢魂又覺第幾生 歐陽少恭 貳 輕雨滋長草 重風促短蟬 物華長往復 身世縹緲間 野洲唳孤鶴 微雲暮楚天 何以飄零去 何以少團圞 何以別離久 何以不得安 指雲問天道 聲盡血斑斕

遊戲修改:天翔記

自從國中被我兩個同學推入「三國志」的無底洞以後,「三國志」和「信長之野望」就一直是我主要玩的遊戲。每一代都有其特色和精華,當然也有一些我討厭的機制。但大體來說我都會花時間下去玩(而且還會全破不少次),除了 ... 天翔記。 我本人是個種田派和公仔收集派的玩家,很遺憾的,「天翔記」是一款窮兵黷武的遊戲,這實在讓我很難上手。遊戲試圖要表現出「成長」的概念,這很好!但是到遊戲裏面就會發現 ... 一個剛出生的名將和久經戰陣的凡將是根本無法比擬的,這讓「天才」這兩個字在遊戲中基本上是不可能出現的。我認同能力不會一開始就全滿而要成長,但你差距也不可以高到這種程度吧!這樣完全不可能有名將的成長空間(因為在年輕時就被幹掉了)。此外,電腦的成長速度根本是用作弊來形容!我自己的經驗,當我用島津家努力違反自己的天性,一天到晚作戰時,卻發現「立花道雪」這老怪物的能力老早就上升的比我快30點,而且我主力培養的還只有義弘一個人而已 ... 經過一番奮戰,總算擊退道雪,天曉得下一季又再一次看到他,能力還比之前更高,我島津義弘都沒成長這麼快啊 ... 於是我關檔了。 可惜沒有威力加強版... 沒有就算了,那就自己來寫一個存檔修改器吧,當中也查了不少格式的資料,最後玩成品記載在下面: # include < stdio.h > # include < stdlib.h > # include < string.h > # include < unistd.h > # include < fcntl.h > # include < sys/mman.h > # include < sys/types.h > # include < sys/stat.h > struct nb6man { unsigned short dummy ; unsigned char p_max ; unsigned char b_max ; unsigned char w_max ; unsigned short p_real ; unsigned short b_real ; unsigned