2011-04-25

NP作業2


homework2 作業題目
In this homework, you will write a pair of Little Messenger client and server. The requirements of the Messenger system is as follows.
1. The Messenger client operates in dual modes: command mode and chatting mode. (10%)
2. A user can register a new account from the Messenger client on line, and log in on the Messenger server. (20%)
3. The user can list on-line users on the server.(10%)
4. A user can send messages to another on-line user, or start a conversation with him or her.(20%)
5. A user can broadcast a message to all on-line users. (10%)
6. A user can leave a off-line message to another, and he/she can see the off-line message when he/she logs in.(10%)
7. A user can log out the server. (5%)
8. Add 5 points for each new function.
You do not have to design a GUI like Live Messenger. A text-mode interface is pretty fine. The server can be on an arbitrary port. Due date: Apr. 29.


note:

gcc -o


(ca)

工作站> setenv LC_ALL zh_TW.UTF-8
把目前連線全部的編碼方式都改成UTF-8


[抓蟲中]
以下是流程圖,一樣是用office2010 power point快取圖樣拉的。









參考資料:

1. The World of select()
http://www.lowtek.com/sockets/select.html

So one main advantage of using select() is that your server will only require a single process to handle all requests. Thus, your server will not need shared memory or synchronization primitives for different 'tasks' to communicate.
> ya!! 一個process!! no more fork!!


2. 
unpv13e/
select/strcliselect01.c
select/strcliselect02.c
tcpcliserv/tcpservselect01.c
tcpcliserv/tcpservpoll01.c


3. Socket Client Examples
 http://www.tutorialspoint.com/unix_sockets/socket_client_example.htm

4. gcc 語法
http://aikosenoo.pixnet.net/blog/post/23038692

2011-04-13

30÷2(2+3)÷5=?

這是個語意解讀上的問題(1s)

啊講詳細點就是人和電腦對係數的處理方式不太統一。
而且人類在計算時,下意識進行的大量省去和結合等等都是電腦不懂得,電腦的優點只在於學會了之後很快而已(噴笑)


國小老師教我們
step1. 2+3 replace 5 括號優先
step2. 2(5) replace 10 係數優先
step3. 30÷10 replace 3 左結合
step4. 3÷5 replace 0.6 為最終解

如果電腦要達到這種解讀的話
必須在處理係數的時候,是用刮號以及乘號去取代:2(2+3) replace (2*(2+3))

另一個可能出現的解答15的原因在於係數只用乘法取代,原式變成30÷2*5÷5。

step1. 2 replace 2*
step2. (2+3) replace 5
step3. 30÷2 replace 15
step4. 15*5 replace 75
step5. 75÷5 replace 15

不過這很明顯不是使用者期望的....不過這邊,如朋友所言,這裡已經不是 syntax 的問題而是 semantics的問題啦XDDD


括號跟分數的簡化最好是每做完一步都check一下,這個check是自然演算法中的[下意識],但是電腦很笨(真正厲害的是工程師─請支持正版),所以你不寫一串不太直覺的處理沒辦法達到自然運算的效果。



至於/跟÷這兩個傢伙,在自然語言中的語意更是天差地遠。
A/B 解讀為分數,是用橫式表示直式的寫法。(...很令人頭暈齁...沒關係稱下去你就得到它了!!!)
A÷B 解讀為A除以B

雖然現在看起來一樣,但是丟到更長的式子裡去就很可怕了。

以下的ABCD為代數

手寫的 A/BC/D,是先解讀/號並自動加上刮號,是表示((A÷B)*(C÷D)),答案寫成AC/BD

但是(在某種不可能發生在人類自然解讀的情形下)
電腦對於A/BC/D解讀順序是先把B視為C的係數,(A/(B*C))/D,答案是A/BCD。

我compiler修得亂七八糟的,那些專有名詞都忘記系蝦毀惹。

2011-04-12

NP作業1

因為沒有閒置機器可供玩轉,所以先安裝虛擬機器
(以下說明網頁來自重灌狂人)


  • 一、在主電腦安裝VirtualBox軟體

  • 二、在VirtualBox建立新的虛擬電腦

  • 三、建立新的虛擬硬碟機

  • 四、選定開機光碟機

  • 五、啟動虛擬電腦、安裝作業系統

  • 六、安裝好系統,更新VirtualBox專屬驅動程式



  • 當然5.6那兩點跟作業需求的Unix-like不一樣。

    應用OS fedora,google後就有關網可供下載iso。

    虛擬光碟軟體:http://www.daemon-tools.cc/eng/home 我只裝了lite,其他功能用不到。


    接下來作業要求

    homework01 作業題目

    In this homework, you will write a simple Web server with C/C++ in the UNIX environment. The specification of this Web server is as follows:

    1. The Web server can be accessed from one of the GUI-based Web browsers, such as IE, Firefox, etc. (40%)

    (還好是一個就OK....)

    2. The user can access an HTML file on the server on the Web browser. (20%)

    3. The user can access a picture (in the format of JPEG or GIF, etc.) from the Web browser. (15%)

    4. The Web server can handle zombie processes well.(10%)

    5. Add 5 points for each new function (access control, support more data types, ...)

    Your Web server will listen on port 80 if possible (but not required). Please upload your report (in one or two pages) in PDF format to e-course by 4/6, and demonstrate your program to the TAs in that week.



    同學提供參考網址: http://www.jbox.dk/sanos/webserver.htm

    fedora沒有內建vim,這怎麼可以呢!!


    要先切到admin account才可以安裝。
    要改兩個檔案不要忘記了~



    如何在Fedora中安裝vim → http://hi.baidu.com/xuehuo_0411/blog/item/f34197968c49287d54fb9652.html

    yum install vim

    也不要忘記安裝gcc....



    [完成]
    以下是用office2010 power point快取圖樣做的流程圖