2007年12月30日 星期日

宜蘭行

昨天才一大早坐第一班車從台中回到台北,今天也是一大早就起床坐車到宜蘭,還是待在台中的睡眠品質比較好。
自從雪隧通了之後,往來台北、宜蘭從原本的兩小時半縮短成現在的一個小時,只要從雪山隧道進去,看到出口,就到宜蘭了,真是快。


到了宜蘭,魚丸米粉當然不可以錯過了!這家店雖然位於不起眼的小角落,但生意可是好的嚇嚇叫。便宜又好吃,大碗只要三十五元。



由於假日下午雪隧塞車的機會很高,於是一點多就回去了,在回台北的過程,也順便到了深坑吃吃喝喝,點了兩個紅燒豆腐、一個麻辣臭豆腐和一碗豆腐羹,不過,看起來是點太多了,肚子塞滿豆腐。

2007年12月25日 星期二

Last Christmas

Last Christmas - Wham

Last Christmas I gave you my heart
But the very next day you gave it away
This year to save me from tears
I'll give it to someone special

Once bitten and twice shy
I keep my distance
But you still catch my eye
Tell me baby
Do you recognize me
Well it's been a year
It doesn't surprise me

(Happy Christmas)
I wrapped it up and sent it
With a note saying "I love you"
I meant it
Now I know what a fool I've been
But if you kissed me now
I know you'd fool me again

A crowded room
Friends with tired eyes
I'm hiding from you and your soul of ice
My god I thought you were someone to rely on me
I guess I was a shoulder to cry on

A face on a lover with a fire in his heart
A man under cover but you tore me apart
Now I've found a real love you'll never fool me again
A face on a lover with a fire in his heart
A man under cover but you tore him apart
Maybe next year I'll give it to someone
I'll give it to someone special

2007年12月23日 星期日

perror

每當程式執行時發生錯誤時,系統會將錯誤代碼寫入到外部的一個變數errno。透過這個變數可以得知更詳盡的錯誤訊息。然而代碼並不是human-readable,因此可以利用perror這個function來幫我們把代碼轉換成human-readable

void perror(const char *s);

s,是加在錯誤訊息之前的一個字串,我們才知道是哪個地方發生錯誤。下面以嘗試開啟一個不存在的檔案來做說明:

int main() {
FILE *fptr;
if((fptr = fopen("nonexist.dat", "r")) == NULL)
{
perror("Errors");
return(0);
}
printf("No errors\n");
fclose(fptr);

return(0); 
}

執行時,會產生以下的訊息
Errors: No such file or directory

2007年12月22日 星期六

冬至吃湯圓

冬至為啥要吃湯圓呢?我想一定是大家都很貪吃吧!總是要給自己吃的理由。
這次的吃湯圓大會就是辦在實驗室,時間淩晨兩三點。
之前是為了趕投稿才在實驗室待這麼晚,現在是為了吃湯圓待得更晚。但一想到要吃湯圓就愈來愈餓,於是又做了件傻事,和文帥半夜跑去買麥當勞。這還是我第一次半夜買麥當勞來吃,還真有趣。
時間差不多了,終於看到小賓帶著湯圓走了進來,又開始餓了。
買了四包,花生和芝麻各兩包。



感覺花生比較好吃,一次吃了八粒,真好吃!

小書書竟然睡著了!

2007年12月18日 星期二

神啊!請再多給我一些時間

半夜一點多,獨自走在中興校園裡,感覺格外冷清。
本想待在實驗室久一點的,但是休息是為了走更長遠的路,只好回宿舍去,睡實驗室總是不習慣。

看來星期三要將草稿交給老師有一些困難,神啊!請再多給我一些時間。

2007年12月15日 星期六

心情煩躁

這幾天為了投稿的事,讓整個心情變得很浮動,害怕實驗數據弄不出來;害怕論文投不上;害怕畢不了業。
想做好多事,但總覺得自己的能力不足,一路上盡是挫折。
現在也只有努力、努力、再努力了!

a unique or an unique

單字開頭是母音的話,必須用"an"來修飾。
然而unique就和universityEuropean一樣是特例,使用的是"a unique"而不是"an unique"

2007年12月12日 星期三

距離

是不是又做錯了什麼,好像很容易惹人生氣。
人與人之間的距離如何才能拉近?

2007年12月11日 星期二

小豪的BLOG

小豪的BLOG?好陌生的名字!
原來是被小悶鍋用Data Mining的技術把我遺忘已久的部落格找了出來。我是真的完全忘記它的存在了,試著登入,但還是進不去。
既然找到了,所以我也變成訪客參觀了一下,看來我總是寫些沒什麼營養的東西,日記區本來還說每天要用英文寫日記,結果沒幾篇就結束了。看來我也是一個沒有毅力的人。

改天再把一些資訊轉移到現在這個部落格。

小豪BLOG

2007年12月9日 星期日

20071209 荷苞山與採柳丁

一年一度的實驗室採柳丁又來了,沒想到,轉眼間一年就過了,之前的我還是無憂無慮的,現在卻變成擔心論文的碩二生了。
這次的出遊多了幾個新面孔:傑宇與大鳥,然而,卻少了建霖、周伯通、小悶鍋以及薛來銘學長的參與,總讓人覺得遺憾,畢竟畢業後,大家要再聚在一起的機會不是這麼容易。
由於傑宇位於南投,於是出發時,首先到了南投休息站載傑宇,然後就直奔古坑荷苞山登山步道。由於地點本來是配合小悶鍋選的,所以走起來還算輕鬆。我們從登山口進去,從地母廟那端回去。才發現原來去年採柳丁時也有到過這。





在地母廟那休息個半個鐘頭左右,就驅車前往竹林居生態農莊享用午餐。由於外面有一塊草地,於是我們也在那傳接了一下棒球。也許真的是太久沒運動了,好快就累了。接著就開始享用我的牛肉韓式泡菜鍋。
填飽了肚子後,又到了戶外打起球來,同時又有飛盤的加入。但沒想到,我飛盤怎麼丟這麼爛,我還是打我的棒球好了。
接著就前往採柳丁的地方,雖然看起來人手蠻多的,但柳丁的數量更多,或許是打球累了的關係,開始有點疲倦了。但最後我們還是成功戰勝了柳丁樹,採了滿滿的好幾大箱。然後,便快快樂樂的結束了這趟旅程。



晚餐時間,又和小書書及大鳥去吃貓小巷,本來還以為貓小巷是一條巷子,原來是一家簡餐店。點了一個蜂蜜芥末燻雞三明治和一杯冰咖啡。唉,又把賺到的午餐錢花掉了。貓小巷的特色就是吃飯的時候貓會跑來跑去~~~。

2007年12月8日 星期六

模組黑名單

若不希望某些module在一開機時載入,我們可以把這個module加到/etc/modprobe.d/blacklist裡,開機便不會自動載入此module。

例:
blacklist orinoco
blacklist orinoco_pci

orinocoorinoco_pci這兩個module就不會因為系統偵測到網卡而自動載入。

2007年12月6日 星期四

投稿

要畢業除了碩士論文外,還必須至少投一篇論文到研討會。今天看到周伯通在看投稿的資訊,讓我突然警覺到時間好像不多了,動作應該要快一點才是。
然而,先撇開實驗不談,就算是寫好了,感覺好像會投不上,更別說投國外的了。學長總說我講的太謙虛或是什麼。唉!自己寫的自己最清楚,但總不能現在換題目吧。
愈來愈緊張了,最近的運氣又一直很差,真希望能準時畢業。

2007年12月5日 星期三

人際關係

轉眼間過了兩年,今天又是畢業團拍的日子,只不過這次是穿著碩士服。
在行政大樓前,許多以前的大學同學又相聚在一起。但我卻深深的感覺到疏離感,會聊天的也只剩下大門、金門、耀凱而已,人際關係真是差!想多認識一些人,好像很難,總是找不到相同的興趣、相同的話題。

追根究底,最大的問題還是出在自己的身上。

2007年12月3日 星期一

皇家修筆電

下午聽小菜一說,才發現原來筆電螢幕外殼的側面裂開了,之前只是覺得開關螢幕不是很順而且還會晃,想說算了,但裂掉可就大條了。好在還有幾個月才過保,小菜叫我趕快去皇家換新的。於是文帥就陪我到皇家。
華碩品質,堅若.....?怎麼一進去還要抽號碼牌,在這種上班時間去,還會有這麼多人。輪到我的時候,就給皇家的工程師說明我們的來意,他也很豪邁的就說那可能就會幫我換新。

聽聞過A8系列的外殼好像有蠻多類似的案例,至少我身邊就有朋友就換過一次。

2007年12月1日 星期六

Time waits for no one

時間是不等人的!回首過往,盡是遺憾,失去的不會再回來。
明天,會到來嗎?

2007年11月29日 星期四

waitFor

之前介紹過如何讓JAVA執行外部的指令。但若程式希望等待外部的指令執行完後,再繼續執行原來的程式,我們可以利用Process類別的waitFor()指令。waitFor()會讓目前的thread等待,直到Process物件終止才會繼續開始。

Runtime rt = Runtime.getRuntime();
try {
Process proc = rt.exec(new String[] {"..." } );
proc.waitFor(); //等待proc完成
}
catch(Exception ex) {
ex.printStackTrace();
}

2007年11月26日 星期一

Linphone-2.0.0安裝失敗

由於實驗一直不是很順利,所以就逛逛Linphone的網頁,才發現近期已經更新到2.0.0版,改了蠻多的東西,而且也可以處理re-INVITE的訊息。於是心中閃過一個念頭就是「要不要將UA改用linphone」。
二話不說,馬上就下載原始碼自行編譯,原以為應該可以很順利的,沒想到困難重重,一堆軟體要裝也就算了,在make過程中又出現一些error。所以也請建霖裝在Fedora試試,沒想到竟然成功裝好了,讓我充滿期待。只不過,事情並沒那麼單純,視窗介面竟然弄不出來,只有文字模式,怎麼會這樣呢?
所以,還是乖乖的弄我的MjSIP吧!

Concurrent Server

Server可以分為兩種型態,iterativeconcurrent
iterative server一次服務一個使用者,所以若其中某個使用者的服務時間過久,會影響到整個效能。而concurrent server則是可以同時服務多個使用者,最簡單的方法可以利用fork來產生child process來達成此目的。下面則為簡單的範例。

pid_t pid;
int listenfd, connfd;

listenfd = socket( ... );
bind(listenfd, ... );
listen(listenfd, 5);
for (; ;) {
connfd = accept (listenfd, ... );
if((pid = fork()) == 0) {
close(listenfd);
handle the connection
close(connfd);
exit(0);
}
close(connfd); // 由於fork產生的child process會讓connfd的reference counter多1,要記得關掉
}

2007年11月25日 星期日

Ping的換手小測試

之前做SIP換手實驗的數據,結果與預期有甚大的落差,於是決定先把問題簡單化,再慢慢來擴大。於是就選擇用Ping程式先來測試一下換手的過程。
先寫簡單的shell script,把要進行的步驟寫起來,包括換AP以及設定新IP。同時間,也利用抓封包的軟體來檢驗實驗的結果。
一開始測試的結果,換手的時間還是很大。仔細看了一下抓下來的封包,發現Echo request的確是用新的IP當來源繼續送,但卻沒有Echo reply回來。直到出現NA、NS封包完成後,Echo reply就回來了。這對NA、NS是在要求對方的MAC位址,類似IPv4的ARP。
於是就猜測是Mobile Node到新網路不知道新的AP的MAC,而新AP也不知道MN的MAC。所以就修改了一下之前的shell script,再換手後,馬上在neighbor cache加上AP的MAC,同時間也在AP加上MN的MAC。
經過再次的實驗,換手時間降低了不少。

2007年11月24日 星期六

Debian編譯核心

用Debian的方式編譯核心,可以將編好的核心變成deb檔,方便管理

首先,下安裝編譯時需要的工具
# apt-get install fakeroot kernel-package libncurses5-dev bzip wget build-essential

下載所需的核心並解壓縮在/usr/src裡
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.8.tar.bz2
# tar jxvf linux-2.6.23.8.tar.bz2
# cd /usr/src linux-2.6.23.8

開始編譯核心
# make menuconfig
# make-kpkg clean
# fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

若無任何錯誤訊息,代表已經成功編譯完成,在/usr/src會出現兩個deb檔
# dpkg -i linux-image-2.6.23.8-custom_2.6.23.8-custom-10.00.Custom_i386.deb
# dpkg -i linux-headers-2.6.23.8-custom_2.6.23.8-custom-10.00.Custom_i386.deb

重開機即可

fork

如何寫一個concurrent server?我們可以使用fork這個function來達成,定義於"unistd.h",用法如下:
pid_t fork(void);

呼叫fork()會產生一個child process,在呼叫fork()指令之前所有parent process開啟的descriptors會與child processs共享。至於如何分辨parent還是child,則依呼叫fork()後的回傳值決定,parent會收到child的Process ID,而child則會收到0。因為,兒子只有一個父親,只要呼叫getppid即可取得父親的PID,而父親可能會有很多的兒子,所以需要記錄每一個兒子的PID。

fork有兩種使用方法:

  1. Process複製自己一份,讓其中一個處理某一個運算,另一個則是做其它事。
  2. Process想執行其它程式,當呼叫fork時會複製一份child process,然後child process執行exec用新程式來取代目前的程式。

2007年11月20日 星期二

手機續約

今天和小書書到中華電信,續約買了新手機k610i,記錄一下!

到警局說明(11/19/07)

無妄之災

星期六的晚上接到媽打來的電話,第一句就是問我說我有沒有跟別人結怨或是什麼?聽得我是一頭霧水。接著又說我被告詐欺,說收到警察局寄來的通知單要我到警察局說明,而我第一個直覺就說該不會又是詐騙集團吧?但講完馬上換我爸跟我講,這次就感覺有點情況不對了,爸說是真的。真是晴天霹靂啊!沒想到我竟成為了詐欺犯,我總覺得我應該也只有被詐騙的份吧。爸就把通知單傳真到我台中宿舍樓下的7-11。看到通知單真是傻眼,我這個人本來就很容易緊張,一遇到事情就會很心煩,想來想去,就是想不出個所以然,我到底詐欺了什麼?真讓人心煩。爸就叫我別緊張,要是不是我們做的事,就不要怕。約定的時間是星期一下午兩點到台中市警察局第六分局,爸叮嚀我找個朋友一起去,於是我就先約了小書書星期一一起去,小書書很爽快的就答應了,真感謝小書書。
星期日晚上,爸又來了一通電話,問我需不需要爸來台中陪我一起去,其實當時我一點主意也沒有,但我想應該沒那麼嚴重吧,先聽聽到底是什麼事,再做打算,所以我就告訴爸不用了,我和同學去就好了。在同一個時間,傑宇很熱心的幫我聯絡到一個好像是身份被盜用被告詐欺的過來人,他提供了許多意見給我參考。在這,我也要先跟傑宇說聲感謝,一直幫我找資料。
星期一一大早,我就來到了實驗室,想說先打個電話問承辦員警,到底事情的來龍去脈是什麼,只可惜,沒能聯絡到他。大概快十二點左右,又接到了媽打來的電話,說是爸已經開車來台中的途上,說還是擔心我,要一起去。此時的氣氛感到愈來愈多的不安與焦慮,還從未進去過警察局耶,沒想到第一次進去會是被告的身份。我和小書書大概一點十五左右到,而我爸媽也大約在同一個時間到了台中市警察局第六分局。於是就一起走進了警察局,一開始,裡面的員警是說我們太早來,不是約兩點嗎,於是叫我們先在外面等。等來等去,時間一分一秒的過去,沒想到竟然到了三點多,承辦員警才出現,這....實在是不予置評。
該來的還是要來,承辦員警就把我叫了進去。一開始就問我說你知不知道你為什麼會來這?唉,這句話我還更想要問耶!整個問答當中,問了你有幾個帳戶、郵局的局號、有沒有遺失或借別人證件。之後,重點來了,拿出來一個應該是台灣大哥大的門號資料,警察一開口就說這是不是你的手機,一切終於知道問題之所在了,身份被盜用去辦了門號。而我當然很直接了斷的說不是我的,可是員警卻一直在質疑我,然後又說這帳單地址都是填我家,怎麼可能有誤。這,明明沒收到就沒收到,我就說家裡的帳單都是我媽在收的,於是他就叫我叫我媽進去,他就把問我的問題又問了我媽一次,當然,我媽的答案一定跟我一樣,誰會去付錢去繳不是自己家人申請的門號。最後,也就結束了問談。
結束之後,大家突然想到,員警是說那隻門號是用預付卡辦理,當然沒有帳單囉,這不是在搞笑嗎?剛才還被質疑。不過,也沒跟他說了,反正他說他要行文到台灣大哥大去調閱申請那隻門號的資料,然後會再通知我。到時候再看著辦吧。
被當嫌疑犯的感覺真的很差耶,好像我講的每一句話都是騙人的,第一次被這種態度對待,唉!有些難受就是了。雖然終於知道的緣由,但我很不能認同的一件事就是為什麼像發生這種事,好像倒大楣的都是我們小老百姓,那些沒有確實的辨認身份,就讓對方辦了門號,難道他們沒有責任嗎?為啥只有我要被調查而沒有電信業者。

離開了警局後,總是要轉換個心情,爸、媽也難得來台中,於是我就硬拉著小書書和我爸媽一起走走,於是就選擇了離小書書家很近的梧棲漁港走走,這也是我待在台中那麼久,第一次去,其實也是可以預期啦,每個漁港其實都大同小異,不過媽還是買了少許的魚貨回去。本來是還打算去逢甲夜市走走順便吃晚餐的,後來想想逢甲夜市那停車有些困難,於是打消了這個念頭。後來我們是去沙鹿的一間貴族世家共進了晚餐。不過感覺這次的沙朗牛排不怎麼好吃,有點硬且咬不太下去。時間也愈來愈晚了,爸明天也還要上班,所以就先載我們回去牽機車,然後就驅車北上了,而我和小書書就往實驗室的方向回去。




最後,再次感覺所有幫住以及關心我的朋友們:小書書、阿佑、家祥、傑宇等實驗室所有的人。謝謝你們。還有,我最敬愛的爸和媽!

2007年11月15日 星期四

SYN flooding

對於任何一個listening socket,Kernel會維護兩個Queue:

  • incomplete connection queue
  • complete connection queue

其中incomplete connection queue是指Server收到Client SYN封包後,還沒完成Three-way handshaking的動作,反之,則會在complete connection queue裡。

由於Queue有一定的大小,所以攻擊者可以寫一個程式,用非常快的速率送出大量的SYN封包來填滿incomplete connection queue。除此之外,攻擊者往往也會偽造來源IP位址(IP spoofing),讓server無法得之攻擊者的實際位址。由於攻擊者用大量的SYN封包填滿imcomplete connection queue,所以會造成正常使用者無法連上此server,也是Denial of Service (DoS) 的一種。

Mobile IPv6環境重建

繞了一大圈,終於把Mobile IPv6的環境給弄回來,差點就完蛋了。
一開始測試時,還以為失敗了,怎麼移到新的子網路後,都沒有送Binding Update給Home Agent。原來是RADVD的問題,忘了設定RA發送時間的間隔。

接下來的工作就要想辦法將Mobile IPv6SIP結合在一起了,主要就是要把Movement detection弄在一起,好像很困難的樣子。

2007年11月14日 星期三

恭喜震臺

恭喜我的好友震臺考上會計師,聽說非常難考。
還請我吃了一頓飯,謝謝啦!

唉!最近實驗遇到很大瓶頸,一直停在原地,我好像沒啥研究能力耶~~~

2007年11月11日 星期日

Panic

糟糕,不知道該怎麼形容自己,我把我的Mobile IPv6的Mobile Node砍掉重灌,然後就架不起來了@@。
明明就按照之前記錄的步驟做,結果怎麼會這樣呢?
唉!本來已經很多事煩心了,現在又更煩了~~~

2007年11月8日 星期四

石破天驚的一擊

邁向第三年的亞洲職棒球大賽,由統一獅以及中國之星揭開序幕。
一局上,統一獅就得了一分,本想說應該又可以輕鬆取勝,沒想到比賽前半段卻打的如此艱辛。
中國棒球實力確實是在進步,不過距離台灣的水準應該還有一段距離,只不過,每次遇到中國隊總有那種不能輸的壓力,反而綁手綁腳。好在陳連宏那石破天驚的一擊,讓沉睡的獅子醒了。
不過,雖然不是統一獅的球迷,但看了今年的總冠軍賽,投手戰力實在是個隱憂。以前總覺得台灣的選手總是投優於打,現在卻反過來了。

2007年11月6日 星期二

IP位址轉換

如何將人讀的140.120.*.*的IP轉換成network byte order的兩進位表示,可以使用以下的函式(定義於"arpa/inet.h">:

// String to 32-bit binary
int inet_aton(const char *strptr, struct in_addr *addrptr);
// 32-bit binary to String
char *inet_ntoa(struct in_addr inaddr);

然而,以上的函式不能處理IPv6的問題,因此有另外兩個函式可以同時處理IPv4與IPv6:

int inet_pton(int family, const char *strptr, void *addrptr);
const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);

其中當處理IPv4時,family值為AF_INET,IPv6時則為AF_INET6。
inet_ntoa裡,size_t len為回傳string的長度,避免Overflow。
"netinet/in.h"有定義兩個常數,讓我們可以使用他來設定長度。
#define INET_ADDRSTRLEN 16 /* for IPv4 dotted-decimal */
#define INET6_ADDRSTRLEN 46 /* for IPv6 hex string */

2007年11月5日 星期一

回家渡假

一切都來的很突然,一早到實驗室拿了筆電就回台北了。也許是給自己太大的壓力,只有回到家才會回放鬆的感覺。
雖然說是回家渡假,但多少還是要有些進度。實驗或許不如預期,但論文還是要寫。已經說好下星期要交給老師修改過後的論文,所以,回家這幾天就來改一下論文,不會太累又可以休息。

話說明天過後,都是棒球比賽~~~

安裝NVIDIA顯示卡驅動程式

在Linux上安裝NVIDIA顯示下的驅動程式很容易,首先到官網下載適當的驅動程式。筆電顯卡為NVidia GeForce Go 7300,所以就載了NVIDIA-Linux-x86-100.14.19-pkg1.run

安裝開始前,系統需具備一些編譯工具

# uname -r
2.6.22-2-686
# apt-get install linux-headers-2.6.22-2-686
# apt-get install build-essential

接著就可以開始安裝
# sh NVIDIA-Linux-x86-100.14.19-pkg1.run

按照指示一步一步做即可成功編譯。

Network Byte Order

Internet Protocols是採用Big-endian,因此有四個函式(定義於"netinet/in.h")可供我們轉換host byte order <--> network byte order

uint16_t htons(uint16_t host16bitvalue) ; // host to network short
uint32_t htonl(uint32_t host32bitvalue) ;
// host to network long

uint16_t ntohs(uint16_t net16bitvalue) ; // network to host short
uint32_t ntohl(uint32_t net32bitvalue) ;
// network to host long


當處理port的時候,可以使用hotns()和ntohs()
當處理IPv4位址,可以使用hotnl()和ntohl()

2007年11月4日 星期日

Byte Odering

資料存在記憶體有兩種存法,一個為Big-endian,另一個為Little-endian

  • Big-endian:最高位元組(Significant Byte)存在記憶體的前頭。
  • Little-endian:最低位元組(Least Significant Byte)存在記憶體前頭。
如259(0100000011)存在16位元的記憶體中(小->大)
00000001 00000011 Big-endian
00000011 00000001 Little-endian

2007年11月3日 星期六

Value-Result

Socket address sturcture總是以reference(指標指向結構)傳進socket函式,而結構的大小也會被傳入。然而長度傳入的方法取決於process to kernel或是kernel to process

Process to Kernel(bind, connect, sendto)

struct sockaddr_in serveraddr;

bind(sockfd, (Struct sockaddr *) &serveraddr, sizeof(serveraddr));

長度的資訊是用來告訴該copy多少資料從process到kernel


Kernel to Process(accept, recvfrom, getsockname, getpeername)

struct sockaddr_in clientaddr;
socklen_t letngth;

length = sizeof(clientaddr);
getpeername( sockfd, (Struct sockaddr*) &clientaddr, &length)

其中,長度的值會改變。用指標傳入,告訴kernel所傳入的struture大小。而當函式結束時,會回傳kernel儲存多少資料在structure,將值存在length上。像length這種參數稱為value-result參數。

2007年11月1日 星期四

Socket Address Structure

IPv4與IPv6的Socket Address Structure定義於"netinet/in.h"裡。

IPv4 Socket address structure: sockaddr_in

/* Internet address. */
typedef uint32_t in_addr_t;
struct in_addr {
in_addr_t s_addr;
};

/* Structure describing an Internet socket address. */
struct sockaddr_in {
sa_family_t sin_family; /* AF_INET */
in_port_t sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8]; /* Padding */
};

/* IPv6 address */
IPv6 Socket address structure: sockaddr_in6
struct in6_addr {
uint8_t s6_addr[16];
};
struct sockaddr_in6 {
uint8_t sin6_len;
sa_family_t sin6_family; /* AF_INET6 */
in_port_t sin6_port;
uint32_t sin6_flowinfo
struct in6_addr sin6_addr;
uint32_t sin6_scope_id;
};

2007年10月28日 星期日

關關難過

原始的SIP換手終於測試成功了,先不管換手時間是長是短,總是往前跨了一步。
然而,接下來就是要實作我自己的機制,換手延遲的時間就很重要了。
做實驗的日子裡,心情總是隨著實驗結果的好壞起起伏伏,解決一個問題後,又馬上遇到一個問題,週而復始。
雖然累,但還是要努力下去。因為,以後出社會,還會遇到更多的挑戰與挫折。

2007年10月26日 星期五

系統時間

System.currentTimeMillis()可以取得目前的系統時間,因此可以利用它粗略計算某個程式執行的時間。
class TestCalculate {
public static void main(String args[]) {
long start = 0, end = 0;

start = System.currentTimeMillis();

target_function();

end = System.currentTimeMillis();
System.out.println("target_function spends " + (end - start) + "ms");
}
}

2007年10月25日 星期四

瓶頸

實驗開始遇到瓶頸了,感覺是蠻嚴重的。
現在心情有些焦躁不安,會不會之前的努力都白費了。
一定要冷靜,時間還是足夠的,不能自亂陣腳。
接下來的時間,要加把勁才行,加油!

2007年10月21日 星期日

鶯歌老街

今天和爸媽到了鶯歌老街晃了一下,上次來這的時候,是和阿佑開車過來的,記得當初是想要去石門水庫,只是沒想到卻來到了鶯歌。
假日的時候,鶯歌總是充滿著人群,不過我們蠻幸運的,路邊找到了一個車位,省去了不少的停車費。

鶯歌老街,其實就都是在賣陶瓷器具,也不懂得欣賞,只好到處走馬看花。




除了陶瓷外,這裡吃的東西還蠻多的,像吃牛肉麵還可以把碗帶走。
其中有一間店「阿婆壽司」蠻有名的,所以既然來到這,當然也就要來品嚐一下。一到店門口,人山人海,地下室、一樓都坐滿了,所以服務人員告知我們到另一頭的二樓用餐。不過,我對食物的好壞分辨不太出來,吃起來感覺都差不多,或許是因為便宜,人才這麼多吧。

2007年10月20日 星期六

牽掛

作詞:伍佰 作曲:伍佰 編曲:伍佰&China Blue

牽掛著妳是那顆我的心 飄呀飄地在妳面前捉摸不定
牽掛著妳是那份我的情 吹呀吹到妳的眼前我的心

我不願看到妳那濕潤的眼睛 怕我會忍不住疼妳怕妳傷心
我不願聽見妳說寂寞的聲音 怕我會忍不住對你說我的真感情

牽掛著妳是那雙我的手  越過妳的長髮越過妳心窩
牽掛著妳是那份我的溫柔 飛過妳的肩膀飛過妳的手

我不願看見妳獨自離去的身影 怕我會忍不住牽妳手將妳帶走
我不願看到妳依依不捨的表情 怕我又會忍不住再停留怕妳難過

妳像盛開花朵綻放整個天空 溫暖著我將我擁抱在妳的懷中
不願承認是我最深情的脆弱能否與妳一生守候(悲傷的我從此飄流)

捨不得妳是那顆我的心 飄呀飄地在妳面前捉摸不定
捨不得妳是那份我的情 而徘徊在妳面前屬於妳的我愛妳

回家真好

「下次Meeting沒發問的,隔天就交兩張心得給我!」
真糟,不知道是真是假,下次要怎麼擠出個問題來問,雖然小書書有教怎樣放大絕...。

每次回家總是在Meeting一結束後,這次也不例外,出發前還再三確認該帶的東西是否帶齊。沒想到,到了校門口竟然發現忘了把DVD燒錄機給帶來了,只好急忙打電話給小書書幫我送來,因為實在不想錯過客運。等了又等,想說怎麼會那麼久都還沒到,讓我心急如焚。後來,終於等到大鳥騎著機車出現,原來是小書書叫大鳥幫我送過來。再送來的下一個紅綠燈車就來了。我只能說,大鳥,算你厲害,時間算的剛剛好。
雖然小小抱怨了一下,但還是很感謝小書書和大鳥!

2007年10月18日 星期四

網卡壞了

沒想到網卡竟是如此脆弱,害我一直以為到底是哪裡設定有問題,才讓我的IPv6環境整個不通。
換上了新網卡後,一切都變正常了,真是無言。
由於環境壞了兩天,我也休息了兩天,實驗該進行了。

2007年10月16日 星期二

摘要與資料夾不協調,即使經過同步

今天開啟Evolution收信時,會出現「摘要與資料夾不協調,即使經過同步」的錯誤訊息,相對於英文為Summary and folder mismatch, even after a sync。解決方法如下:

  1. 編輯 -> 偏好設定 -> 勾選停用帳號
  2. 關閉Evolution
  3. 刪除~/.evolution/mail/local/Inbox.ev-summary
  4. 重新啟動Evolution及啟用帳號

即可解決問題。

2007年10月15日 星期一

Predictive AP Selection實測

終於將論文的第三章寫好了,又要開始面對實驗。
說實在,真怕做不出來,尤其是建霖畢業後,該何去何從呢?

今天測試了之前寫的AP selection,當訊號強度低於某個Threshold,就開始選擇鄰近且訊號強的AP。但是,遇到了一些之前就想過的問題:

  1. 活動空間太小,AP距離太近
  2. Active scan掃不到HostAP

第一個問題是鄰近AP和本身所連接的AP訊號都很強,或許就想辦法用遮避物降低他的強度。第二個問題比較麻煩,當真的要換手時,若還掃不到AP問題就大了。

今天測試的結果,程式是可行的,但接下來還有好多的挑戰要面對,要加油了!

2007年10月13日 星期六

老毛病

糟糕,講話速度好像還是很快,每次總想說放慢速度,但不知不覺中卻又漸漸的加速。
也許最好的辦法就是不要講話了...

2007年10月10日 星期三

美術細胞

不管是什麼高級的繪圖軟體,我也只會畫線畫圓,這次親眼看到大師級的傑宇,輕鬆駕馭Photoshop,兩三下就把我要的圖給畫了出來,真是厲害,感謝傑宇的熱情幫助!
可惜我一點美術細胞都沒有,什麼是美感,我感受不出來~~~。

2007年10月6日 星期六

強颱來襲

強颱柯羅莎來勢洶洶,本來以為位於台中的我,風雨應該不會很大吧。
因為在台中那麼久,好久沒有颱風天的感覺,比較麻煩的總是颱風走後引進的西南氣流帶來的豐沛雨量。
但今天一早起來,聽到的都是咻咻咻的聲音,雨也是時大時小的。看到這種天氣,還是待在家裡好。
只不過,宿舍什麼乾糧也沒有,最後只好冒著生命危險跑去便利超商買東西,雖然在宿舍樓下不遠處,但走起來確是艱辛,一不注意可能我就被吹回台北去了。如我預料,便當都被一掃而空,而我非常的幸運搶到了最後一個。為了避免晚上又要出門買東西,索性買了一包泡麵再加個零食。應付今天應該夠了。

明天,會是晴天吧!

2007年10月3日 星期三

建立Bridge

Bridge可以讓兩張網卡連接成一張,以下將eth0與eth1橋接在一起。

# apt-get install bridge-utils
# ifconfig eth0 0.0.0.0 down
# ifconfig eth1 0.0.0.0 down
# brctl addbr br0
# brctl addif br0 eth0
# brctl addif br0 eth1
# brctl stp br0 off
# ifconfig eth0 up
# ifconfig eth1 up
# ifconfig br0 up

reinforce

reinforce
vt.
加強、強化
使更具說服力

The experimental result reinforces the point of the paper.

2007年10月2日 星期二

實驗進度

荒廢已久的實驗環境大致回復的差不多了,順便還加入了一台用MadWiFi架的AP。
學會了用Bridge,讓AP能將RA發給MN。
同時,也把上次修改的AP監控程式,實際執行過一次,看起來是蠻順利的。
不過目前進度還是太慢了,總是提不起勁來!

2007年10月1日 星期一

Vista -> XP

一味追逐新玩意,果然不太好。
終於又把Vista換回原本的XP了。
玩電腦不應該那麼辛苦的,跑的順暢,自己高興,電腦也高興。

2007年9月27日 星期四

谷關二日遊

原本是不太想參加這次的公司旅遊的,都是姊說我不去她就不去,所以我只好去了。玩了一趟回來後,整個人放鬆了不少,我想一定是之前整整一個月都在弄論文的東西,神經都緊繃了起來,這趟旅遊可以說是及時雨,雖然整個行程好像是沒有行程一樣。

第一天:
清晨六點,我們坐著計程車前往公廠集合。人都到齊後(總共有七十一人,兩台遊覽車),就坐上遊覽車準備出發。這時車上才開始發這兩天的行程表(會不會太晚了點),我才知道究竟行程是怎樣的安排,不過看了一下,有看沒看好像差不多。
第一站來到了台中縣外埔鄉無極三清總道院,說是拜一下,求個平安,廟裡也有提供吃的東西。記得今年過年也有去過位於宜蘭的三清宮。


下一個行程是到東豐自行車綠廊騎鐵馬,這個地方之前也和大強去過了,還蠻好玩的。然而爸竟然叫我和我姐騎協力車,阿~~~,超難騎的,尤其是爬坡的地方,兩三下就累了。

結束了這個行程後,我們就繼續往谷關的方向前進。途中又停了下來,原來是位於大甲溪上的一個吊橋,叫做白鹿橋,於是我們就下去走走。不過這吊橋的前頭竟擺著限重兩百公斤,這也太誇張了吧,四個人走上去不就超重了,於是我們根本沒有理它,一群人都走了上去。不過吊橋看起來還真有些老舊,蠻恐佈的。


之後,我們就走著中橫來到了下榻的飯店(龍谷飯店),外表看起來不是很新的樣子。Check in之後到了我們的房間,裡面的擺設很簡單,而且有點小。不過據說浴室的水都是溫泉水,應該還不賴。而照行程表所寫的,沒錯,今天的行程結束了。說晚上外面剛好有中秋晚會的表演可以去看看。由於之前騎了一大段的鐵馬,大家就先去沖個澡、泡溫泉。


離吃飯的時間還有一段時間,於是我們就到外面晃晃,還買了一支白冷冰棒來吃,蠻便宜的。不知不覺,一下子就到了晚餐時間,用完餐後,大家就陸續前往晚會看一下表演。表演的一開始蠻精采的,是來至西非加納的表演者,做了很多特技,結束後,就一堆人在致辭,於是我們就先離開,沒有等到第二個表演。


第二天:
這天的第一個行程寫的是「睡到自然醒」,真是讚的行程,不過由於飯店提供的早餐時間為七點半到九點半,所以我們七點多的時候還是起床了。今天一早的行程還是一樣,就是在飯店附近趴趴走,旁邊有一些登山步道,於是就爬山去了。
吃完午飯後,終於要離開飯店了,下一個目的地是八仙山森林遊樂區,距離飯店約十幾分鐘的車程,看來又是要爬山。
行程大致都要結束了,最後一個行程就是坐高鐵回家,真不知道是誰規劃的,不過沒差,反正我也沒坐過,就坐一次看看,拿到了車票後,才發現原來台中到台北要整整一個小時,比我預期的時間還長,不過至少比遊覽快~~~。


2007年9月22日 星期六

國道驚魂記

為了避掉中秋返鄉車潮,所以就提早一天回台北,到了校門口城市快捷的乘車處,人山人海,不過運氣好像很好,後來有公作人員來到這,說要排隊,而我莫名奇妙第一班車來的時候就坐上去了。
不過,這趙車程還真令我害怕,司機開起車來左晃星、右晃晃,又喜歡開快車,好幾次緊急剎車,嚇死我了。
和以往一樣,泰山和楊梅收費站這段最容易塞車了,這次也沒能逃過,不過總算平安到家了!

2007年9月20日 星期四

clip

clip
n. 剪輯的短片

news clips 新聞剪輯

2007年9月19日 星期三

論文與實驗進度

花了好長的一段時間,終於將Related work的部份寫完了。
寫的又長又臭,總覺得將來有得改了。
一開始沒想到會這麼難寫,有時候才寫幾句話,一天就過了,整個腦袋空空空。
空到連今天的Group Meeting都給忘了,沒聽到學弟精采的報告。
感覺上,這屆的學弟都好厲害,看來我也不能落後太多才是。

由於Related work終於寫完了,讓我終於可以繼續我未完的實驗。
但好久沒碰了,都不清楚做到哪了。
今天多寫了一個程式來監控自己連上的AP資訊,算是有一個小進度了。
接下來就是把這個程式和上次寫好的搜集鄰近AP資訊的程式整合在一起,然後再進行AP selection

2007年9月16日 星期日

Rehearsal

rehearsal
n. 排演、試演

Here's marvelous convenient place for our rehearsal. -- Shak.

2007年9月13日 星期四

作夢

夢境與現實間總是有很大的差距。
在夢境裡,不同的時空背景皆可以隨意穿插。
然而,夢醒了,一切又要回歸於現實了!

2007年9月12日 星期三

論文修正檔

今天下午突然被老師找了過去,嚇了我一跳,原來是老師改了一下我的摘要和緒論。
老師修正了幾個用詞和哪些部份可以再多做說明補充。許多地方都是我之前沒注意到的。
只是,之前給老師的摘要部份,我後來有做了一次大修改,跟原本的版本有些許的不同,讓我有點不知道該如何修改!
再來,老師也很貼心,幫我列了幾個題目,很值得參考參考!

2007年9月8日 星期六

改變標準輸出串流

改變標準輸出串流的方法,將輸出轉向到檔案裡。

try {
FileOutputStream fo = new FileOutputStream("output.txt");
BufferedOutputStream buf_out = new BufferedOutputStream(fo);
PrintStream out = new PrintStream(buf_out, true);
System.setOut(out);


System.out.println("Test"); // Test將輸出到output.txt,而不是螢幕上

out.flush(); //清出緩衝區
out.close(); //關閉串流
}
catch (Exception ex) {

}

2007年9月7日 星期五

AP訊號搜集

終於成功將掃描AP的功能整合到Java程式裡了。
先建立一個Class叫做APInfo,裡面有三個成員變數,分別為BSSIDESSIDQuality
利用執行外部iwlist eth2 scan指令,將掃描的結果,存入這三個變數中。
如此一來,就可以很方便的取出鄰近AP的資訊。
原本是打算儲存在一個檔案,但由於必須一直開檔關檔,會包含太多的I/O動作,因此便採取上述方式。

論文進度

大致將摘要與緒論的部份完成了,不過和學長討論過後,似乎許多用詞及語意的部份還需要做些修改,不過時間還很多,倒不是很急迫。
只是本來學長是要和周伯通討論的,卻被我佔用大多的時間,實在是很抱歉。
我原本只是想問稍微討論一下摘要和緒論的差別,沒有想要討論實質寫的內容是什麼,畢竟我也是剛寫完而已。

剛寫到這裡的時候,剛好發生地震,記錄一下~~。

2007年9月3日 星期一

下載mms://的檔案

若要下載mms://的檔案,可以下載mimms這個軟體。
# apt-get install mimms

使用方式如下:
# mimms [options] [output]

2007年9月2日 星期日

摘要修正

把之前寫的摘要做了一點點的小修改,但對於摘要究竟要寫些什麼還是有些疑惑,究竟什麼才叫做摘要。
學長們和老師也都還沒看到我的摘要,真怕到最後我寫的都不能用,那時就真的是一個頭兩個大了!

2007年9月1日 星期六

Archive Manager

file-rollerGnome的壓縮檔管理員的套件。
可以很方便的管理所有的壓縮檔。

2007年8月31日 星期五

Java執行外部指令

如何在Java程裡執行外部的程式,以下以執行linux裡的掃描AP程式iwlist來做說明:

Runtime rt = Runtime.getRuntime();
try {
Process proc = rt.exec(new String[] {"/sbin/iwlist","eth2", "scan" } );
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String str;
while((str = br.readLine()) != null)
System.out.println(str);
}
catch(Exception e){
e.printStackTrace();
}

2007年8月29日 星期三

新AP誕生

多虧了老師那台電腦,自己又架了一台AP。
這次是用Madwifi而不是用Hostap,感覺Madwifi的說明文件比較齊全。
AP的問題倒其次,目前比較大的問題是究竟要怎麼選AP。
對於AP訊號大小的概念不是很清楚,多少才算不能連,多少才算是合適的!!!

Madwifi架設AP

改變介面卡的模式
# ifconfig ath0 down
# wlanconfig ath0 destroy
# wlanconfig ath0 create wlandev wifi0 wlanmode [sta, ad hoc, ap, monitor wds ahdemo]

設定AP的ESSID與Channel
# iwconfig ath0 essid "IPv6WLAN" channel 9

設定Beacon的發送間距(ms)
# iwpriv ath0 bintval 25

2007年8月26日 星期日

國中小聚餐

今天和阿佑到了碧潭走了一趟。不過還是老樣子,走完了吊橋後,就不知道該做什麼了。
兩三下就結束了這裡的旅程,後來決定去逛一下書店。
台北要找個停車位還真難,於是把車停到了峨嵋停車場裡,沒想到在裡面繞阿繞,最後還是繞到了樓頂,無法為車子避暑。
一出了峨嵋停車場,發現原來旁邊竟是楊丞琳的簽唱會,人還沒來就是了,但這並不是我們來的目的,所以沒有在此地多停留,轉身前往書店。
阿佑看起來對英文好像很有興趣,於是推薦了幾本高中唸過的雜誌,我自己也挑了一本回去。

以上的行程都是突發的事件,真正在計劃內的行程是晚上和國中的幾個同學聚餐。
本來是想要吃個大餐,只是蒜督同學想要看電影,所以我們改吃麥當勞,然後到旁邊的天台戲院看電影。
看的電影是國片『不能說的秘密』,一開始並沒有抱太高的期待。
不過,看完後,整個故事還蠻不錯的,就拆房子的那幾個畫面覺得比較敗筆。

2007年8月23日 星期四

Big Big World

Artist: Emilia

I'm a big, big girl
In a big, big world
It's not a big, big thing
If you leave me

But I do, do feel
That I do, do will
Miss you much
Miss you much

I can see the first leaf falling
It's all so yellow and nice
It's so very cold outside
Like the way I'm feeling inside

I'm a big, big girl
In a big, big world
It's not a big, big thing
If you leave me

But I do, do feel
That I do, do will
Miss you much
Miss you much

Outside it's now raining
And tears are falling from my eyes
Why did it have to happen
Why did it all have to end

I'm a big, big girl
In a big, big world
It's not a big, big thing
If you leave me

But I do, do feel
That I do, do will
Miss you much
Miss you much

I have your arms around me
Warm like fire
But when I open my eyes
You're gone

I'm a big, big girl
In a big, big world
It's not a big, big thing
If you leave me

But I do, do feel
That I do, do will
Miss you much
Miss you much

I'm a big, big girl
In a big, big world
It's not a big, big thing
If you leave me

But I do, feel
That will
Miss you much
Miss you much

2007年8月22日 星期三

安裝madwifi驅動程式

安裝madwifi(Mutltiband Atheros Driver for WIFI)驅動程式前,首先必先確認手中握有atheros晶片的網路卡。底下以Debian安裝方試說明:

首先必須先加入non-free的apt站台後,再進行以下步驟。

# apt-get update
# apt-get install madwifi-source
# apt-get install madwifi-tools
# m-a prepare
# m-a a-i madwifi
# modprobe ath_pci

若成功掛載ath_pci即完裝成功

2007年8月21日 星期二

進度報告

總算完成我的進度報告了,不過今天博班的學長一個也沒來,只有大學長有來。
所以整個炮火就少了一點,但多少還是有些收穫。
看來目前彈性最大的就是我的移動方向偵測這個部份了,只是還是沒有一個具體的方法來解決我這個問題。

被問到的問題大致如下:

  • 若MN很多時,是否會造成所有MN都連到同一個AP的問題
  • 提出的DAD方法,相對於其它方法有何不同,有何優點
  • 實驗結果必須呈現出所要求的兩個目的

2007年8月18日 星期六

明日晴

明日晴れるかな 演唱:桑田佳祐

就算留著熱淚呼喊著戀情 閃耀的日子也不知在何處消失了
a tsu i na mi da ya ko i no sa ke bi mo ka ga ya ke ru hi wa do ko e ki e ta no?
就算說著對明天的路感到徬徨的話 這些事情也無法回到原來的樣子
a shi ta mo a te na ki mi chi wo sa ma yo u na ra ko re i jo u mo to ni wa mo do re na i
只用耳朵仔細聆聽心裡的聲音 我少說了什麼是吧
mi mi wo su ma se ba ko ko ro no ko e wa bo ku ni na ni wo ka ta ri ka ke ru da ro u
現在在這骯髒的街道角落裡 每每都會想起那時候的天空
i ma wa yo go re ta ma chi no ka ta su mi ni i te a no ko ro no so ra wo o mo u ta bi ni
上天給你了孤獨和煩惱  想哭的時候就哭吧
ka mi yo ri da ma e shi ko do ku ya trouble na ki ta i to ki wa na ki na yo
這是命運嗎  放棄吧  季節的運轉就像是魔法一般
ko re ga sa da me de sho u ka a ki ra me yo u ka?ki se tsu wa me gu ru ma ho u no yo u ni

Oh Baby No Maybe

沒有愛也就沒有情
a i na ku shi te jo u mo na i?
假裝悲傷的樣子 只是在怨天尤人
na ge ku yo u na fu ri yo no na ka no se i ni su ru da ke

Oh Baby You Are Maybe

沒有悲傷就沒有快樂
a i na ku shi te ra ku wa na i
幸福的感覺  再緊緊抱住一次
shi a wa se no feeling da ki shi me te one more time
為了愛著那時候的自己 想起來也是美麗的吧
a ri shi hi no o no re wo a i su ru ta me ni o mo i de wa u tsu ku shi ku a ru no sa
比起遙遠的過去 寧願為了在尚未看見的人生裡實現一次夢想
to o i ka ko yo ri ma da mi nu ji n se i wa yu me hi to tsu ka na e ru ta me ni a ru
誰 是誰開了奇蹟的門
ki se ki no do a wo a ke ru no wa da re? 
只有一次的微笑著
ho ho e mi yo mo u i chi do da ke
你發現了嗎 那把鑰匙也已在你手上
ki mi wa ki du ku de sho u ka so no ka gi wa mo u ki mi no te no hi ra no u e ni

Why Baby? Oh Tell Me

沒有愛就沒有憎恨
a i na ku shi te zo u o mo na i
假裝看不見的樣子 只為了守護那情境
mi te mi na i yo u na fu ri so no mi wo ma mo ru ta me?

Oh Baby You Are Maybe

再一下就要分出勝負了不是嗎
mo u su ko shi no sho u bu ja na i
那種挫敗的感覺
ku ji ke so u na feeling
再一次跨越他
no ri ko e te one more TIME

I Talk To Myself.Oh Baby No Maybe

沒有愛也就沒有情
ai i na ku shi te jo u mo na i?
假裝悲傷的樣子 只會留下後悔
na ge ku yo u na fu ri no ko ru no wa ko u ka i da ke

Oh Baby Smile Baby

這個生命不會是永遠的
so no i no chi wa to wa ja na i
任誰都會有個人悄悄地在內心 輕輕的說著
da re mo ga hi to ri hi to ri mu ne no na ka de so tto sa sa ya i te i ru yo
明天是晴天吧
a shi ta ha re ru ka na
在遙遠的天空下
ha ru ka so ra no shi ta

2007年8月17日 星期五

內用或外帶

內用:for here
外帶:to go

所以餐廳櫃臺服務人員一開始可能會問你這句話:
For here or to go?

哈雷路亞~Chance

想擊出全壘打,就別怕揮棒落空!
的確,當你總是顧忌太多事情的時候,別人早搶先你一步了。
不管你哈雷路亞~Chance幾次,你依舊是拎著球棒,眼睜睜看著別人投著好球,把你三振出局。
揮棒落空被三振與站著不揮被三振,看似結果一樣,但意義卻大大的不同,前者至少嘗試主動出擊,而後者卻連嘗試的勇氣都沒有。
我何時才能學會揮棒呢?

2007年8月15日 星期三

撞牆期

自從將SIP的UA改好後,直到現在好像一直都沒有任何進展。
建霖說這是撞牆期,他也曾經歷過。
不過,我會不會發生的太早了啊!
昏昏沉沉過了那麼久,再這樣下去總是不行。
但若要短時間恢復之前那樣的動力,並不是那麼容易的事。
應該要找些事來做,再慢慢的調適過來!

2007年8月13日 星期一

Rcconf

Rcconf允許你控制哪些服務在開機或重開機時所要啟動的服務。
它的清單是從/etc/init.d/etc/rc?.d的目錄中取得服務是否開啟或關閉。

安裝rcconf
# apt-get install rcconf

啟動rcconf
# rcconf

等到天晴離開妳

等到天晴離開妳
作詞:磬子 作曲:陳達偉 編曲:涂惠元 演唱:范逸臣

窗外有雨 落了一個世紀還不停
眼前的妳冷淡的表情 等到天明 雨還哭泣
我是愛妳 更放不下雨季前的天明
只想等陽光曬乾傷心 是騙自己 雨停後我放棄

*放手讓愛回去 等到天晴我就要離開妳 走到不能裝傻的絕境 我總可以 選擇只愛自己
#放手讓愛過去 等到天晴我就要離開妳 抱歉放棄愛妳的權利 就憑著回憶 雨停了好好照顧自己

就算淚水 這次已打不動我的心
這份愛曾經那麼難得 是天給的 雨停也該散了

Repeat *,#

放手讓愛過去 等到天晴我就要離開妳
這場最後為妳落下的雨 再一秒就停 天晴後好好照顧自己

等到天晴 我離開妳

2007年8月11日 星期六

沒有進度的進度報告

下禮拜的Group Meeting又輪到我,想說就講一下進度報告好了。
開始寫投影片時,才發現我的進度嚴重的落後,想不出細節是什麼。
之前總是提大方向而已,沒有仔細去思考該怎麼做。
所以藉由這個機會,讓我可以好好的把自己想做的,全盤考量進去。
Group Meeting時,再與學長、同學們討論一下。

2007年8月8日 星期三

父親節快樂

父親節又到了,本想和家人一起去吃大餐的。
然而,因為學校的因素,沒能待在家裡。
隨著年紀的增長,愈能體會到爸的辛苦。
想說一聲:「爸,您辛苦了。父親節快樂!」

2007年8月5日 星期日

08/05/2007國中同學會

一年一度的國中同學會又到了,一轉眼,好多朋友又一年不見了。
不過,這次參與的人還真是冷清,而且好像都是每年都見到的常客,見不到面的,只好說緣份不夠囉!
十點半在好茶部落集合,大約在待了四個小時,還真是久,不過聊的蠻開心的,尤其是際安老師這次和我們一起待到最後。


結束了茶會後,小武、阿佑、蒜督、婷婷和我,就到小武家拜訪拜訪。小武爸媽依舊熱情,拿出一堆東西招待我們。
我們幾個邊泡茶邊打牌,而且這次感覺小武煮咖啡的技術變好了。下午五點後,小武和婷婷都有事,所以參與人數瞬間剩下阿佑、蒜督、和我三人。
但這依舊不減我們的熱情,決定去打保齡球一決勝負。
不過,事實證明一點,我不適合賭博,輸了兩杯飲料,抗壓性太差了。
最後,回到家都十點半了,整整出門十二個小時,真是充實的一天。

2007年8月4日 星期六

資科 -> 資工

中興大學「資訊科學系」於民國九十六年八月一日更名為「資訊科學與工程學系」

2007年7月31日 星期二

測試環境架設

多了學長的幫忙,整個測試的環境大致架設完成。
兩台Router加上兩台hostap,IPv6位址為6to4
有了環境後,接下來便可以將之前寫好的SIP UA拿來實際測試一下。
目前比較棘手的是如何讓MN自動連接上AP。

2007年7月28日 星期六

烏來雲仙樂園

今天是老媽的生日,當然要陪親愛的媽媽到處晃一下囉。
經過了沒什麼計劃的計劃後,決定去烏來走走。
記得之前不久才和國中同學到烏來烤肉,中途還下大雨,淋成落湯雞。

首先,來到了烏來老街,不過感覺有被騙到了,整條街超短的。
然後要到瀑布或是搭空中纜車,還有一段距離。路邊排成長長的計程車隊,一趟就要兩百元。
所以我們只好返回停留不到幾分鐘的停車場,自己開車到纜車區。
在我印象中,有來過雲仙樂園,但就是不記得有纜車這回事,真是奇怪。
之前才剛搭過貓纜,對纜車的期待自然就少了一點。
這個纜車和貓纜落差還真大,最多可以搭乘九十一人,距離也很短,目視就可以看到起點與終點。
繞了整個園區,我覺得其說是個遊樂園,不如說是風景區,好山好水,且還是一個不錯的避暑勝地。

2007年7月26日 星期四

Mobile UA

成功讓SIP UA支援Mobility,當UA發現IP改變時,會自動發出re-INVITE,完全不用人為的介入。
目前整個程式還只能算是雛型而已,還有蠻多小細節要修正,功能上大致上是都可以正常運作。
或許接下來也可以把介面弄漂亮一點。

2007年7月25日 星期三

取得網卡的IP

利用NetworkInterfacegetByName函式來選擇網路卡介面,接著便可以取得設定於此網卡上的所有IP。

try {
NetworkInterface iface = NetworkInterface.getByName("eth1");
Enumeration e = iface.getInetAddresses();
while(e.hasMoreElements()) {
InetAddress ip = (InetAddress)e.nextElement();
System.out.println(ip);
}
}
catch(Exception ex) {
ex.printStackTrace();
}

2007年7月24日 星期二

安裝ipw3945

A8Jc筆電內建的無線網卡為Intel Corporation PRO/Wireless 3945ABG
安裝完Debian後,並未幫你驅動無線網卡,以下是以Debian的安裝方式。

只要利用apt即可根據自己的核心版本來下載適當的驅動程式。
先查看kernel版本:
# uname -r
2.6.21-2-686

接著利用apt,來安裝已編譯好的模組:
# apt-get install ipw3945-modules-2.6.21-2-686 firmware-ipw3945 ipw3945d
# modprobe ipw3945

另一個方法則是自行編譯模組:
# apt-get install ipw3945-source
firmware-ipw3945 ipw3945d module-assistant
# m-a prepare
# m-a a-i ipw3945
# modprobe ipw3945

A8Jc換硬碟

A8Jc的硬碟只有60G,由於安裝了兩套作業系統,硬碟空間明顯無法滿足我的需求。
於是買了一顆120G的硬碟來替換,其實更換筆電的硬碟還蠻容易的。

首先將筆電後面的硬碟擋板給拆下(通常會有圓柱的形狀),打開後,即會看見硬碟所在。
硬碟後面會有個空隙,所以只是輕輕的將硬碟往後面推,即可輕鬆將硬碟與排線分離,如下圖。


接著,將此硬碟的散熱板拆下,將在新的硬碟上。
按著之前的步驟,反回去做,即可成功升級硬碟。

2007年7月21日 星期六

toBinaryString

以前寫程式時,常需要將十進位的數字轉成二進位,再進行計算。
Java在IntegerLong Class有提供一個static method叫做toBinaryString(),我們可以很方便的使用它。

int num = 18;
System.out.println(Integer.toBinaryString(num));

結果會印出
10010

re-INVITE測試

re-INVITE的測試終於成功了。
將SDP的c欄位填入新的位址,UA會將RTP封包往新的位址送。
目前只改了c欄位,而且是將位址寫死在程式裡面。
未來是要將Movement Detection程式加入,由UA判斷取得新的IP,然後自動修改contactc欄位,送出re-INVITE給對方。

2007年7月18日 星期三

Proactive DAD

閱讀了一篇Paper:Proactive DAD A Fast Address-Acquisition Strategy for Mobile IPv6 Networks。
內容主要是針對DAD時間過長,提出Proactive DAD的方法。
其中也介紹了別人提出的方法:

  • Optimistic DAD - 可以使用tentative address,也就是在未確定唯一性前就先使用,若偵測到有人用時,則必須釋放掉此位址。
  • Advanced DAD - Access router有一個Address pool,存放著確保唯一的位址,Mobile Node可以向access router要求位址。
  • Proactive DAD - 從RIP (Regional Information Point) server取得新網路的prefix,再還未換到新的AP前,先產生新址址送到新的access router,然後執行DAD的動作。

然而,這篇最後的實驗感覺有些問題,交待的不是很清楚。不過這個方法倒是給我一個不錯的方向。

2007年7月17日 星期二

IPv6 UA

大致將User Agent的基本功能寫好了。
目前可以在IPv6下的環境下執行,以及播放音樂。
剩下的工作是要測試re-INVITE以及加入JMF的問題。
目前播放的音樂只能是wav檔,被侷限住了。

Max-min fair share

Max-min fair share必須滿足下列兩個條件:

  • 沒有人會取得大於自己所需求的資源
  • 在還沒取得自己所需求的資源量時,此時皆平等分享資源

正式的定義如下:
假如有source 1, . . . , n,他們所要求的資源分別是x1, x2, . . ., xn,其中x1 <= x2 . . . <= xn。假設資源為C,則首先將C/n分配給每個人,此時C/n > x1時,則我們將C/n - x1再平均分配給其它人,以此類推即可。

2007年7月16日 星期一

Get lost

過去所憧憬的生活,現在看來落差還真大。
而我以往所堅持的,也漸漸消失。
不是環境影響了我,而是我讓自己墮落了。

2007年7月15日 星期日

讀取Enumeration

當回傳值為Enumeration的型態時,該如何存取其值呢?

以下以NetworkInterface類別的getNetworkInterfaces函式說明。
此method可以取得系統上所有的網路介面以及所設定的IP位址。
它的回傳型態為static Enumeration

try {
Enumeration e = NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements()) {
System.out.println(e.nextElement());
}
}
catch(Exception ex) {
ex.printStackTrace();
}

2007年7月13日 星期五

UA無法接聽

UA的基本雛型大致完成,目前可以成功的在IPv4環境下撥打、對話以及結束連線。
然而遇到的問題是無法接聽對方打來的電話。
再來就是語音傳送的問題,RAT (Robust Audio Tool)JMF (Java Media Framework)看得有些混亂,此部份的程式碼還需一段時間研究。
希望是能先將接聽的部份解決,然後再把系統轉到IPv6的環境下。

2007年7月12日 星期四

UA設計與實作

大概追蹤完學長寫的程式碼後,開始嘗試自己動手寫一遍。
希望儘量可以修改成符合自己所需要的UA。

  • 支援IPv6
  • 可接受re-INVITE修改session
目前才剛開始動筆,完成應該是不成問題,需要一點時間消化一下程式碼。

2007年7月11日 星期三

MjSip + JMF

終於找到適合的UA了,測試了學長寫的UA,能成功的在IPv6下執行
MjSip是一個SIP的函式庫,可以用來建立SIP應用程式以及服務。

MjSip的架構如下:



Transport Layer:負責傳輸SIP的訊息。
Transaction Layer:處理上層訊息的重送、配對相對應的Request/Response和Timeout。
Dialog Layer:將同一個session內的不同transactions連結在一起。
Call Layer:提供簡單使用的介面來處理SIP calls。

至於JMF全名為Java Media Framework,目的是用來支援媒體資料串流的存取。

目前MjSip和JMF都是剛開始接觸而已,並不太熟悉。
現在的工作是追蹤學長寫的程式碼,再視情況加以修改。

2007年7月8日 星期日

貓纜初體驗

許久沒坐捷運了,變化真是大。
售票不再是IC卡而是代幣,雖然之前有在新聞上看過。
真怕自己不會坐,索性在旁看了一下別人怎麼進出,才接著走過去。
先在辛亥站下車,到了阿佑的學校繞了一圈,不禁讓我又想起了永春高中。
同樣是位於山區,特色就是不斷地爬階梯。

吃完了中餐後,繼續了我們的旅程,往動物園方向前進。
本想說會有很多人,但卻沒想像中的多。
總共有四站,動物園->動物園內站->指南宮->貓空,到貓空不多不少,就是五十元。


坐上纜車,果然如電視上所說,只有一個字「熱」。
沒什麼感覺就到了終點站,不過風景倒是不錯,若是晚上當然就更美了。

貓空還是我第一次去,一下纜車,當然要拍張照片紀念一下。
但除了茶館外,還真不知該去哪,於是突發奇想,決定從貓空走到指南宮。
只是沒想到走著走著,還真是遠,不知走了幾公里的路才到達目的地。
雖然腳很痠,但還不賴,人生總是要做些奇怪的事。


參訪完指南宮,肚子餓了,自然就想到深坑的臭豆腐。
但我們並不想要搭纜車回動物園再轉車,而是在指南宮搭了公車再換車到達了深坑。

深坑老街,說實在,真的很短,不過目的也只是要吃臭豆腐,所以長短倒是不介意。
吃了廟口這家店的麻辣臭豆腐,味道只能說讚。
要離開前,買了很多人排隊的金大鼎香豆腐,但吃起來感覺平平。


夜深了,也結束了這趟旅程。

2007年7月5日 星期四

摘要試筆

老師和學長都叫我先寫個摘要出來,把想做的東西整理一下。
於是花了一些時間,用簡單的幾個字把想做的描述一遍,不過,我想這應該不能算是摘要吧。
本來想說論文可以用英文寫,沒想到摘要短短幾個英文字,就讓我想破頭。
雖然如此,還是希望最後能夠用英文寫,不過目前想這些都太早了。
希望下次和老師討論題目時,不要讓我換題目了,不然真的會欲哭無淚啊!

2007年7月4日 星期三

設定IPv6

設定IPv6位址
# ip addr add 2001:100:100:100::2/64 dev eth0

移除IPv6位址
# ip addr del 2001:100:100:100::2/64 dev eth0

設定預設閘道
# ip route add default via 2001:100:100:100::1 dev eth0

以上方法只是暫時用指令設定位址,若要永久設定可以把指令寫在rc.local裡,或是寫入網路的設定檔。下面以Debian設定來介紹說明:
設定檔位於/etc/network/interfaces,內容如下:

iface eth0 inet6 static
address 2001:100:100:100::2
netmask 64
gateway 2001:100:100:100::1

2007年7月3日 星期二

jEdit

由於未來大半的時間應該會用來改程式碼,所以就找了一下適合寫程式的編輯器。
於是我就找到了jEdit這個編輯器,整體的介面與感覺都不錯。
但原始的編輯器功能較陽春,必須下載一些外掛的功能。
jEdit設計的很體貼,在程式裡就可以搜尋到所有新的外掛,並且直接下載安裝。
Plugins->Plugin Manager->Install
裡面列出所有的外掛程式,且也有詳細的說明。
只要勾選起來,選擇Install,即會自動下載安裝。
而我安裝了兩個外掛程式。

  • Project Viewer:可以將多個檔案當作一個專案來處理。
  • Buffer Tabs:開多個程式檔,會開新的分頁。

如何掛載fat32

方法一: 使用mount指令
debian:/home/howard# mount -o utf8 -o uid=howard /dev/hda2 /mnt/data/

不過此法的缺點在於每次開機要重新下一次指令

方法二:寫入/etc/fstab
/dev/hda2 /mnt/data vfat utf8,uid=howard 0 0

2007年7月1日 星期日

Cross Layer Handoff for SIP

閱讀了一篇Paper: Cross Layer Handoff for SIP
這篇有整理了以前提出的方法:

  • Fast handoff scheme
  • HMSIP
  • PAR-SIP
有整理了這幾個方法,並且也點出了它們的缺點。
蠻值得參考的一篇。

這篇的目的看似是要改進PAR-SIP的方法。
整個過程必須修改Beacon的內容,將Gateway的MAC填入Beacon裡。
不過若需要動到Beacon,感覺不就成為它的缺點。
而且這篇Beacon frame有一個小地方畫錯了,應該是每個位址都是6個bytes。

2007年6月30日 星期六

學習研究

暑假到了,代表我也即將邁向研究所的第二年。
若幸運的話,二年級的我將不用再修其它的課程,可以專心於自己的研究。
然而,雖然說研究,一年過去了,還是沒有明確的主題。
新的想法與創新還真是不容易,許多想法常常發現幾年前別人都做過了。
不過,我想也不需要太急,多閱讀、多嘗試,會有收穫的。

2007年6月29日 星期五

測試SER與Linphone

測試SER 0.9.6 (SIP Express Router)以及Linphone 1.6.0,因為皆支援IPv6。

SER還有以下相關的模組,但還未測試過。

  • ser-cpl-module (支援Call Processing Language)
  • ser-jabber-module (將SIP message轉成jabber的message)
  • ser-mysql-module (可以用來digest authentication)
  • ser-pa-module (支援Presence server)
  • ser-radius-module (支援Radius)
SER的設定檔位於/etc/ser/ser.cfg
Linphone的設定檔位於~/.gnome2/linphone

在啟動SER時,為了要讓它執行於IPv6下,需先修改其設定檔:
在global configuration parameters這個區段加上以下這行
listen=SIP server的IPv6位址

Linphone要執行在IPv6下,則需在將偏好設定中的Network->Use IPv6 network打勾。
新增Proxy的資訊
SIP->Add proxy/registrar
SIP Identity: sip:[IPv6 address]
SIP Proxy: sip:proxy@[IPv6 address]

目前測試的結果為兩個Linphone的User Agent可以彼此接通。
但接通後,卻沒有任何的聲音傳送。
還有一個就是按chat,會讓Linphone整個異常關閉。