自訂 Bash Prompt 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 4月 16, 2015 以前在使用 shell 的時候,會覺得 prompt 所顯示的「目前所在目錄位置」實在是太長了,但是拿掉又有點不方便。結果看到同事很聰明的讓提示字元換到下一行,所以也決定來這樣幹。 Bash Profile Generator 是一個動態的 Bash Prompt 產生器,就用這個打造自己喜歡的 Prompt 吧。 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 留言
我弟家的新居感恩禮拜分享:善頌善禱 12月 25, 2014 語本禮記·檀弓下:「晉獻文子成室,晉大夫發焉。張老曰:『美哉輪焉!美哉奐焉!歌於斯,哭於斯,聚國族於斯。』文子曰:『武也,得歌於斯,哭於斯,聚國族於斯,是全要領以從先大夫於九京也。』北面再拜稽首。君子謂之:『善頌善禱』。」 不知為什麼,我一直對禮記中的這一篇印象深刻,大概是小時候記憶力比較好,所以一直刻劃在心中吧。之前有天我弟要我把時間留下來,要參加他們家的家庭禮拜,結果到了以後才發現原來是新居感恩禮拜(我說,你們小倆口根本已經搬進去很久了吧),然後居然還要說些祝福的話(喂喂,下次這種事要先講,我本來抱定只聽只吃不說話的態度啊),在想要講什麼的時候,第一個浮出的念頭就是「善頌善禱」的這個故事 ... ㄜ ... 不是聖經經文啊,所以就想找找,在聖經中哪一段有「新居落成」的相關經節,可以作為分享,結果就是以下面這段文章來做分享: 王上9:1-10 所羅門建造耶和華殿和王宮,並一切所願意建造的都完畢了,耶和華就二次向所羅門顯現,如先前在基遍向他顯現一樣,對他說:「你向我所禱告祈求的,我都應允了。我已將你所建的這殿分別為聖,使我的名永遠在其中;我的眼、我的心也必常在那裡。你若效法你父大衛,存誠實正直的心行在我面前,遵行我一切所吩咐你的,謹守我的律例典章,我就必堅固你的國位在以色列中,直到永遠,正如我應許你父大衛說:你的子孫必不斷人坐以色列的國位。倘若你們和你們的子孫轉去不跟從我,不守我指示你們的誡命律例,去事奉敬拜別神,我就必將以色列人從我賜給他們的地上剪除,並且我為己名所分別為聖的殿也必捨棄不顧,使以色列人在萬民中作笑談,被譏誚。這殿雖然甚高,將來經過的人必驚訝、嗤笑,說:耶和華為何向這地和這殿如此行呢?人必回答說:是因此地的人離棄領他們列祖出埃及地之耶和華─他們的神,去親近別神,事奉敬拜他,所以耶和華使這一切災禍臨到他們。」所羅門建造耶和華殿和王宮,這兩所二十年才完畢了。 在列王記上的記載裏面,所羅門花了二十年的時間完成了聖殿和皇宮的建造,而現在上帝來參加這個「新居感恩禮拜」。上帝說:「 我已將你所建的這殿分別為聖,使我的名永遠在其中;我的眼、我的心也必常在那裡。 」感謝上帝,這是上帝同在的保證,這是基督徒最喜歡傳講平安的福音:「以馬內利,上帝與我們同在」,以上帝給的祝福來說,沒有比這更大的。可是等等,接下來的話是新居落成時所該給的祝福嗎?一開始還好,可 閱讀完整內容
如何將Linux打造成OpenFlow Switch:Openvswitch 10月 29, 2013 因為工作上被指派去做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的解決方 閱讀完整內容
Openssl 範例程式:建立SSL連線 10月 19, 2012 說來很神奇,雖然我研究所的研究主題是「網路安全」,但我在研究所卻從來沒撰寫使用 openssl 函式庫的程式。第一次撰寫是在工作上有需求而去使用一些加密的演算法,這次則是工作尚有需求,要去建立 DTLS 的安全連線。DTLS?等一下,標題不是 SSL 嗎?說來話長,要使用 DTLS 的相關 API,按照 openssl 網站的說法,最好是使用 openssl 1.0 以後的版本,問題是客戶所使用的版本是 0.9.8d 的。理論上來說,0.9.8d 的版本也有支援 DTLS,所以我不能拒絕客戶的要求(我會努力繼續嘗試說服客戶的),但還是要做好在 0.9.8d 的開發。問題是兩個版本的寫法不一樣啊(在 1.0.0 以後的版本,有一個 dtlsv1_listen 的函式,簡單來說就是在 UDP 上面實作 listen 的行為。)~雖然已經請同事搞定 1.0 上面的寫法,但 0.9.8 上的寫法還要再研究。所以我就進去開始研究囉。下面就是研究到一半(SSL)的心得。下面的程式碼是從 HP 的網站上改過來的。 ssl_server.c # include < stdio.h > # include < stdlib.h > # include < string.h > # include < errno.h > # include < netdb.h > # include < unistd.h > # include < sys/types.h > # include < sys/socket.h > # include < netinet/in.h > # include < arpa/inet.h > # include < openssl/crypto.h > # include < openssl/ssl.h > # include < openssl/err.h > # define RSA_SERVER_CERT " serverca.crt " # define RSA_SERVER_KEY " serve 閱讀完整內容
留言
張貼留言