2010年8月23日 星期一

Return value trap

Linux系統程式設計下,一些系統呼叫可能因為我們錯誤地認為回傳資訊而造成錯誤。

下面是一個判斷是不是該繼續接收資料的例子。

if (!((byteRead = recv(sock, buffer, bufsize, 0))))break;

在這個判斷式中存在一個陷阱,在發生recv錯誤的時候,如Connection Reset by Peer,recv會回傳-1,但是不足以跳出這個迴圈。會造成的錯誤是,byteRead會拿-1來進行運算,造成錯誤結果。

下面是比較正確的寫法,或是偵測perror()來得知是否現在是錯誤。

if (!((byteRead = recv(sock, buffer, bufsize, 0)) > 0))break;

2010年8月19日 星期四

Key passphrase in wireless

在wireless中,想要高強度加密但是又怕忘記密碼的話,可以使用key passphrase。只需要短短好記的key passphrase,就可以產生長度夠長的高強度密碼。其他使用者想要連上此AP,也可以藉由一些工具預先根據已知的key passpharase還原出密碼。當然分享器要有支援key passphrase才行。

以下有幾個網站提供key passphrase計算出wep,wpa密碼功能。

WPA key calculation
http://www.xs4all.nl/~rjoris/wpapsk.html

WEP key passphrase generator
http://www.netpoint.com/wep.htm

IE使用WPA key calculation做計算,會出現"如果繼續執行,您的電腦將變成沒有反應..."的廢話,按否就可以繼續下去了。這是因為statement的數目超過IE認為安全的上限。

最後是wireshark提供的,但計算速度比較慢。
http://www.wireshark.org/tools/wpa-psk.html

2010年8月1日 星期日

未來的未來

上班也一段時間了,也能掌握了步調。

與學生的不同的是,下班與週末都是自己的時間,並且都沒有受到需要回家念書的束縛。可以說想要做什麼就可以做什麼。

我看有些人下班之後就直喊無聊、無聊。好像想要工作壓死自己一樣。我覺得自己應該建立起一套過生活的方法。想想平常自己有什麼沒有達成,什麼娛樂沒有做到,想要學什麼而沒有學到。自己可以趁這段時間好好累積。並不是說就業就是學習的墳墓,人生還有很多需要去研究的。

但是,以上所講的,都是自己獨自內化的一個過程。有些人可能就耐不住性子。休閒就是要跟許多人一起進行的呀!於是開始找人吃飯,不然就聊天,想找人陪。

這種感覺我知道,因為有時候我也會陷入這種現象,但我盡量避免長久處在這樣的狀態,因為我知道,這樣的休閒帶給自己的成長很有限。我很貪心在內化自己。

那麼來談談自己的休閒。其實又可以分成創造性休閒跟消耗性休閒。消耗性就簡單多了,吸收別人的成果,像是聽音樂、看電影這類的。創造性就是像寫文章、畫畫屬於無中生有的東西。創造總是困難與孤獨的,如果一直都在消耗,我覺得會讓自己變得沒有想法而已。

其實,未來的未來要訂定一個明確的目標,知道自己該做什麼。我想,能夠活在自己的時間,想做什麼就做什麼,是一件幸福的事。