2008年11月3日 星期一

select()函數分析

Select在Socket編程中還是比較重要的,可是對於初學Socket的人來說都不太愛用Select寫程序,他們只是習慣寫諸如connect、 accept、recv或recvfrom這樣的阻塞程序(所謂阻塞方式block,顧名思義,就是進程或是線程執行到這些函數時必須等待某個事件的發 生,如果事件沒有發生,進程或線程就被阻塞,函數不能立即返回)。可是使用Select就可以完成非阻塞(non-block)。(所謂非阻塞方式non-block,就是進程或線程執行此函數時不必非要等待事件的發生,一旦執行肯定返回,以返回值的不同來反映函數的執行情況,如果 事件發生則與阻塞方式相同,若事件沒有發生則返回一個代碼來告知事件未發生,而進程或線程繼續執行,所以效率較高)方式工作的程序,它能夠監視我們需要監 視的文件描述符的變化情況——讀寫或是異常。下面詳細介紹一下!

int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);
先說明兩個結構體:

##第一,struct fd_set可以理解為一個集合,這個集合中存放的是文件描述符(filedescriptor),即 文件句柄,這可以是我們所說的普通意義的文件,當然 Unix下任何設備、管道、FIFO等都是文件形式,全部包括在內,所以毫無疑問一個socket就是一個文件,socket句柄就是一個文件描述符。 fd_set集合可以通過一些宏由人為來操作,比如清空集合FD_ZERO(fd_set *),將一個給定的文件描述符加入集合之中FD_SET(int ,fd_set*),將一個給定的文件描述符從集合中刪除FD_CLR(int,fd_set*),檢查集合中指定的文件描述符是否可以讀寫 FD_ISSET(int ,fd_set* )。一會兒舉例說明。
##第二,struct timeval是一個大家常用的結構,用來代表時間值,有兩個成員,一個是秒數,另一個是毫秒數。
具體解釋select的參數:
int maxfdp是一個整數值,是指集合中所有文件描述符的範圍,即所有文件描述符的最大值加1,不能錯!在Windows中這個參數的值無所謂,可以設置不正確。
fd_set*readfds是指向fd_set結構的指針,這個集合中應該包括文件描述符,我們是要監視這些文件描述符的讀變化的,即我們關心是否可以 從這些文件中讀取數據了,如果這個集合中有一個文件可讀,select就會返回一個大於0的值,表示有文件可讀,如果沒有可讀的文件,則根據 timeout參數再判斷是否超時,若超出timeout的時間,select返回0,若發生錯誤返回負值。可以傳入NULL值,表示不關心任何文件的讀 變化。
fd_set*writefds是指向fd_set結構的指針,這個集合中應該包括文件描述符,我們是要監視這些文件描述符的寫變化的,即我們關心是否可 以向這些文件中寫入數據了,如果這個集合中有一個文件可寫,select就會返回一個大於0的值,表示有文件可寫,如果沒有可寫的文件,則根據 timeout參數再判斷是否超時,若超出timeout的時間,select返回0,若發生錯誤返回負值。可以傳入NULL值,表示不關心任何文件的寫 變化。
fd_set *errorfds同上面兩個參數的意圖,用來監視文件錯誤異常。
struct timeval*timeout是select的超時時間,這個參數至關重要,它可以使select處於三種狀態,第一,若將NULL以形參傳入,即不傳 入時間結構,就是將select置於阻塞狀態,一定等到監視文件描述符集合中某個文件描述符發生變化為止;第二,若將時間值設為0秒0毫秒,就變成一個純 粹的非阻塞函數,不管文件描述符是否有變化,都立刻返回繼續執行,文件無變化返回0,有變化返回一個正值;第三,timeout的值大於0,這就是等待的 超時時間,即select在timeout時間內阻塞,超時時間之內有事件到來就返回了,否則在超時後不管怎樣一定返回,返回值同上述。
返回值:
負值:select錯誤 正值:某些文件可讀寫或出錯 0:等待超時,沒有可讀寫或錯誤的文件
在有了select後可以寫出像樣的網絡程序來!舉個簡單的例子,就是從網絡上接受數據寫入一個文件中。
例子:
main()
{
int sock;
FILE *fp;
struct fd_set fds;
struct timeval timeout={3,0}; //select等待3秒,3秒輪詢,要非阻塞就置0
char buffer[256]={0}; //256字節的接收緩衝區
/* 假定已經建立UDP連接,具體過程不寫,簡單,當然TCP也同理,主機ip和port都已經給定,要寫的文件已經打開
sock=socket(...);
bind(...);
fp=fopen(...); */
while(1)
{
FD_ZERO(&fds); //每次循環都要清空集合,否則不能檢測描述符變化
FD_SET(sock,&fds); //添加描述符
FD_SET(fp,&fds); //同上
maxfdp=sock>fp?sock+1:fp+1; //描述符最大值加1
switch(select(maxfdp,&fds,&fds,NULL,&timeout)) //select使用
{
case -1: exit(-1);break; //select錯誤,退出程序
case 0:break; //再次輪詢
default:
if(FD_ISSET(sock,&fds)) //測試sock是否可讀,即是否網絡上有數據
{
recvfrom(sock,buffer,256,.....);//接受網絡數據
if(FD_ISSET(fp,&fds)) //測試文件是否可寫
fwrite(fp,buffer...);//寫入文件
buffer清空;
}// end if break;
}// end switch
}//end while
}//end main
參考資料:http://cuijinbird.blogchina.com/cuijinbird/1921117.html
Part 2:
select()的機制中提供一fd_set的數據結構,實際上是一long類型的數組,
每一個數組元素都能與一打開的文件句柄(不管是Socket句柄,還是其他
文件或命名管道或設備句柄)建立聯繫,建立聯繫的工作由程序員完成,
當調用select()時,由內核根據IO狀態修改fd_set的內容,由此來通知執
行了select()的進程哪一Socket或文件可讀,下面具體解釋:
#include
#include
#include
int select(nfds, readfds, writefds, exceptfds, timeout)
int nfds;
fd_set *readfds, *writefds, *exceptfds;
struct timeval *timeout;
ndfs:select監視的文件句柄數,視進程中打開的文件數而定,一般設為呢要監視各文件
中的最大文件號加一。
readfds:select監視的可讀文件句柄集合。
writefds: select監視的可寫文件句柄集合。
exceptfds:select監視的異常文件句柄集合。
timeout:本次select()的超時結束時間。(見/usr/sys/select.h,
可精確至百萬分之一秒!)
當readfds或writefds中映像的文件可讀或可寫或超時,本次select()
就結束返回。程序員利用一組系統提供的宏在select()結束時便可判
斷哪一文件可讀或可寫。對Socket編程特別有用的就是readfds。
幾隻相關的宏解釋如下:
FD_ZERO(fd_set *fdset):清空fdset與所有文件句柄的聯繫。
FD_SET(int fd, fd_set *fdset):建立文件句柄fd與fdset的聯繫。
FD_CLR(int fd, fd_set *fdset):清除文件句柄fd與fdset的聯繫。
FD_ISSET(int fd, fdset *fdset):檢查fdset聯繫的文件句柄fd是否
可讀寫,>0表示可讀寫。
(關於fd_set及相關宏的定義見/usr/include/sys/types.h)
這樣,你的socket只需在有東東讀的時候才讀入,大致如下:
...
int sockfd;
fd_set fdR;
struct timeval timeout = ..;
...
for(; {
FD_ZERO(&fdR);
FD_SET(sockfd, &fdR);
switch (select(sockfd + 1, &fdR, NULL, &timeout)) {
case -1:
error handled by u;
case 0:
timeout hanled by u;
default:
if (FD_ISSET(sockfd)) {
now u read or recv something;
/* if sockfd is father and
server socket, u can now
accept() */
}
}
}
所以一個FD_ISSET(sockfd)就相當通知了sockfd可讀。
至於struct timeval在此的功能,請man select。不同的timeval設置
使使select()表現出超時結束、無超時阻塞和輪詢三種特性。由於
timeval可精確至百萬分之一秒,所以Windows的SetTimer()根本不算
什麼。你可以用select()做一個超級時鐘。
FD_ACCEPT的實現?依然如上,因為客戶方socket請求連接時,會發送
連接請求報文,此時select()當然會結束,FD_ISSET(sockfd)當然大
於零,因為有報文可讀嘛!至於這方面的應用,主要在於服務方的父
Socket,你若不喜歡主動accept(),可改為如上機制來accept()。
至於FD_CLOSE的實現及處理,頗費了一堆cpu處理時間,未完待續。
--
討論關於利用select()檢測對方Socket關閉的問題:
仍然是本地Socket有東東可讀,因為對方Socket關閉時,會發一個關閉連接
通知報文,會馬上被select()檢測到的。關於TCP的連接(三次握手)和關
閉(二次握手)機制,敬請參考有關TCP/IP的書籍。
不知是什麼原因,UNIX好像沒有提供通知進程關於Socket或Pipe對方關閉的
信號,也可能是cpu所知有限。總之,當對方關閉,一執行recv()或read(),
馬上回返回-1,此時全局變量errno的值是115,相應的sys_errlist[errno]
為"Connect refused"(請參考/usr/include/sys/errno.h)。所以,在上
篇的for(;...select()程序塊中,當有東西可讀時,一定要檢查recv()或
read()的返回值,返回-1時要作出關斷本地Socket的處理,否則select()會
一直認為有東西讀,其結果曾幾令cpu傷心欲斷針腳。不信你可以試試:不檢
查recv()返回結果,且將收到的東東(實際沒收到)寫至標準輸出...
在有名管道的編程中也有類似問題出現。具體處理詳見拙作:發佈一個有用
的Socket客戶方原碼。
至於主動寫Socket時對方突然關閉的處理則可以簡單地捕捉信號SIGPIPE並作
出相應關斷本地Socket等等的處理。SIGPIPE的解釋是:寫入無讀者方的管道。
在此不作贅述,請詳man signal。
以上是cpu在作tcp/ip數據傳輸實驗積累的經驗,若有錯漏,請狂炮擊之。
唉,昨天在hacker區被一幫孫子轟得差點兒沒短路。ren cpu(奔騰的心) z80
補充關於select在異步(非阻塞)connect中的應用,剛開始搞socket編程的時候
我一直都用阻塞式的connect,非阻塞connect的問題是由於當時搞proxy scan
而提出的呵呵
通過在網上與網友們的交流及查找相關FAQ,總算知道了怎麼解決這一問題.同樣
用select可以很好地解決這一問題.大致過程是這樣的:
1.將打開的socket設為非阻塞的,可以用fcntl(socket, F_SETFL, O_NDELAY)完
成(有的系統用FNEDLAY也可).
2.發connect調用,這時返回-1,但是errno被設為EINPROGRESS,意即connect仍舊
在進行還沒有完成.
3.將打開的socket設進被監視的可寫(注意不是可讀)文件集合用select進行監視,
如果可寫,用
getsockopt(socket, SOL_SOCKET, SO_ERROR, &error, sizeof(int));
來得到error的值,如果為零,則connect成功.
在許多unix版本的proxyscan程序你都可以看到類似的過程,另外在solaris精華
區->編程技巧中有一個通用的帶超時參數的connect模塊.

2008年9月3日 星期三

Makefile rules

:=  只有第一次會算出他的值
=   的話會每次跑到都計算

:= 效率可能較高

2008年8月11日 星期一

Ubuntu 下 build Browser\所需的套件/under X11

libx11-dev
libxt-dev
libstdc++6-dev
libtiff4-dev 圖形方面所需的

2008年7月16日 星期三

extern "C"

C++語言在編譯的時候為了解決函數的多態問題,會將函數名和參數聯 合起來生成一個中間的函數名稱,而C語言則不會,因此會造成鏈接時找不到對應函數的情況,此時C函數就需要用extern 「C」進行鏈接指定,這告訴編譯器,請保持我的名稱,不要給我生成用於鏈接的中間函數名。

2008年5月19日 星期一

Suggest parentheses around assignment used as truth value的問題

而在C語言中,"非0為true'的哲學下",
int rxDataSize=0;
if(rxDataSize=0)會通過檢查;
但是在g++中,"非0為true'的哲學下"已不適用,必須正確指出ture or false,
即if((rxDataSize=0)) 才會通過不會有warring產生。

Linux 管理所有帳號的檔案

/etc/shaow.....只有root可以R/W

2008年5月7日 星期三

ubuntu 7.04安裝pidgin

1.sudo gedit /etc/apt/sources.list
2. Add the following to your /etc/apt/sources.list:

deb http://repository.debuntu.org/ feisty multiverse
deb-src http://repository.debuntu.org/ feisty multiverse

3.wget http://repository.debuntu.org/GPG-Key-chantra.txt -O- | sudo apt-key add -
4.
sudo apt-get update/
5.s
udo apt-get install pidgin
6.
sudo apt-get install pidgin-libnotify

2008年5月5日 星期一

ubuntu 文字模式建立smb使用者及目錄

1. smbpasswd -a [username]
2. vim /etc/samba/smb.conf
[username]
path = /home/username
comment = stb
available = yes
browsable = yes
public = yes
writable = yes
3./etc/init.d/samba restart

2008年4月24日 星期四

Compile時undefined reference to xxx 的問題

可能是 lib 的順序不對,
或是 lib 間有相依性,
或是少掉要飲用的lib
只要調一下順序 or
增加-l xxxlib即可

2008年4月8日 星期二

Ubuntu vim無法開啟Syntax on

Ubuntu預設的是簡潔版的vim,若需要syntax on的功能,
sudo apt-get install vim,裝完就是完整版的vim囉!
可開啟syntax on!!!

若需要修改開啟時皆將syntax on enable,
在/home/{user} 目錄底下 建立.vimrc

1.vim .vimrc
2.vimrc裡面加上syntax enable

2008年3月31日 星期一

Ubuntu 修改系統開機menu預設值

修改 /boot/grub/menu.lst 文件,使其中default值變動一下即可。
過程如下:
1、打開命令行終端;
2、輸入:
sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.bak
sudo gedit /boot/grub/menu.lst

現在default值為0,意即啟動排行第一的操作系統,這裡代表的就是Ubuntu, kernel 2。
現在把它修改成「default 4」,那麼XP就成為預設的OS了。

2008年3月25日 星期二

Ubuntu程式發展套件[C Library]

libc6-dev : - GNU C Library: Development Libraries and Header Files
binutils - The GNU assembler, linker and binary utilities
binutils-dev - The GNU binary utilities (BFD development files)

2008年3月18日 星期二

2008年3月9日 星期日

Google的下一步

Google下一步 大中華區總裁李開復:從搜尋到手機平台,統統免費

【文/陳怡瑄】

新的一年度,Google又有新動作了。

不只推出了有運算功能的Google101,還計畫敲開搜尋軟體市場的大門,甚至開始打手機的算盤。新的一年,Google要讓全世界好看!

Web2.0用社群力量創造內容後,web3.0的時代又要來了。這次,網路龍頭Google,又將掀起一場革命,影響力甚至超越電腦,前進手機業。

不久前Google大中華區總裁李開復在一年一度的來台行程中,接受《遠見》專訪時,就大方地透露了Google2008年的三大發展策略。

第一個策略是來自Google數十萬台電腦所組成的電腦中心——Google雲」所延伸出來的新服務。

一直以來,Goolge這個搜尋引擎背後的資料都是由超過45萬台電腦構成的電腦中心收藏,被公司內部同仁暱稱為「Google雲」(Google cloud),裡面儲存了超過百億頁面資料,可在微秒內完成計算排序,可說是Google的命脈。

Google 101〉世界的資料中心

在這個基礎上,200710月,Google和電腦大廠IBM共同出資1500萬美元推出Google101計畫,預計建立大型資料中心,提供學校資料和電腦運算能力。這是Google核心技術的延伸,也是為未來發展鋪路。

將來世界各地的人可以運用遠端運算的技術,由電腦中心來代勞運算。因此有人把Google電腦中心比喻為自來水廠,而網路就像是管線一樣,把Google的資源澆灌給有需要的人。

「想像你只是個學生,但卻有1000億頁的資料,」李開復解釋,對研究者來說,Google101計畫將是令人興奮的發展。

以前學生和研究單位得自己蒐集資料、建立模型模擬。龐大的資料、儲存和計算,都不是學生能夠負擔。但現在,他們可以直通Google資料庫,甚至借用Google強大的運算網路。

「一個資料我們同時備份在不同地方,有壞掉的就淘汰下來,而且一直安裝新電腦上去,」李開復說,Google的這個資料中心,有如會成長的有機體。

現在美國多間大學,包括華盛頓大學等,已經參與了Google101計畫。李開復更透露已跟台灣三家學校簽下合作,2008年,這些學校將會開課教學生如何運用。

除了澆灌學術熱情,Google101計畫「未來發展成為世界的電腦,」《BusinessWeek》觀察認為,發展成熟的話,未來企業只要連上Google,就不需要自己的資料庫、甚至不需要擁有電腦。

透過網路線從遙遠的美國租電腦來用,這是web3.0時代即將出現的奇妙光景。

Google 2008年的第二個祕密武器則是小軟體。

小軟體〉大開搜尋方便門

這種軟體像是放在電腦桌面上的小工具,內容從即時匯率表到遊戲皆包含,GoogleYahoo!都開放了此類軟體開發平台。而Google更集結了31000多個小軟體,遠超過Yahoo!4400餘個小軟體。

「以前網路比的是資料數量,以後則是軟體數量的競爭,」李開復指出,「以後軟體開發會像積木一樣地組合,不需一行一行寫程式。」

有趣的是,目前的網路搜尋系統多是搜尋資料,但是未來會有許人用來搜尋軟體。李開復甚至預言,過不了多久,軟體的搜尋引擎就會像目前的網頁排序一樣,讓消費者輕鬆找到最受歡迎的軟體、最符合搜尋的功能。

事實上,搜尋起家的Google下個目標是無所不搜,「我們要做的是Universal Search(全方位搜尋),」李開復說。

進攻手機〉下一個個人電腦

Web3.0的新戰場將在手機上發生。市場曾謠傳多年Google將會推出自己的手機G-phone,但最近謎底揭曉,Google要做的是手機平台Android

這是個開放的平台,手機採用Android,便可直接和Google提供的眾多網路軟體相容,包括搜尋、地圖、試算表等小工具甚至小遊戲,而且都是免費。目前台灣手機大廠宏達電,已投入生產,預計明年上市。

Android將為手機廠商降低軟體成本,為Google帶來的則是人潮流量,Google又可以將網路廣告業務伸及手機。《BusinessWeek》去年底甚至預言,Google手機將不收通話費,而由廣告收入支撐。

Google台灣區業務總經理張成秀便以澳洲為例,在當地手機用Google搜尋到餐廳後,一按鈕即可接通該餐廳。

「開發手機上的網路市場需要不同的思惟,」李開復指出,和我們最熟悉的上網工具電腦相較,手機是個極不同的工具。而且手機是先進國家的行動網路、開發中國家的第一台上網工具,未來手機的成長潛力驚人,這正是Google看上手機市場的原因。

打開中國市場是最大挑戰

不過,對Google來說,今年真正的關鍵,恐怕還是在於能否突破中國市場這個瓶頸。根據市調機構iResearch統計,Goolge在大陸的市占率約為二成一,遠低於中國第一大搜尋引擎百度的六成六。「中國還有不少人連Google都不會拼,」李開復無奈表示。

像自來水的電腦、無所不搜的技術、免通話費的手機,Google三大策略無不令人驚奇。

不過,這家公司營收五年增加五倍、股價上揚八倍,的確需要驚奇,才可能繼續創造如此驚人的成長。...

2008年2月11日 星期一

FireFox上網再加速

已經用了Google Web Accelerator使用 Local DNS Cache 加快上網速度,還可以更快嗎?

可以!答案就在你用的瀏覽器 (Browser)。

以 FireFox 2.0.0.7 版本說明。不同的版本,可以調校的項目有些許的不同。開啟 FireFox ,輸入 about:config

要調整的參數有三個:
network.http.pipelining
network.http.proxy.pipelining
network.http.pipelining.maxrequests

#1.
network.http.pipelining 和 network.http.proxy.pipelining這兩個欄位的值改成 “true”(直接用
滑鼠連續按兩下)。

#2.
更改 network.http.pipelining.maxrequests 的值,改成大一點的值,滑鼠連續按兩下,在彈出的視窗輸入所要的值。(一般建議10,我個人是加大到20)

在捷徑加上 -turbo也可以唷!!!
"C:\Program Files\Mozilla Firefox\firefox.exe" -turbo

2008年1月28日 星期一

迷失蔚藍_2_攻略!

迷失蔚藍2攻略!

(1)菜鳥級全攻略——主要介紹蔚藍2的最速流程直到完美結束,其中小羅會把遊戲中遇到的每一個小要點,每一個生活技巧按流程全部寫出來,方便新手更快的進入遊戲和操作。




(2)老手注意事項——主要把本作與前作不同的要點和操作與大家分享、討論,主要服務於比較熟悉蔚藍1操作的玩家。(當然,遊戲流程還請瀏覽上面的全攻略)

(3)圖鑑——主要介紹圖鑑的完成以及相關道具的詳細信息,比如植物食物的具體加點、傢俱製作的所需材料等等。

(4)最後在2樓我想做一個問答專欄,大家在遊戲中遇到哪些困難而攻略中未做說明的大家都可以提出來,並希望大家可以不斷提出小羅攻略中的問題,我會及時回答及修正。
2。操作




十字鍵:控制人物在地圖上的移動,在菜單中移動。

A鍵:「確定」,拾取物品,調查,攀爬,跳躍等。

B鍵:「取消」,在地圖上人物加速。(註:本作增加了漸進加速,後期可達到很高的速度)

X鍵:調出菜單,物品菜單欄中可以切換到第2小菜單;製作道具、料理時為確定;某些其它地方切換功能。

Y鍵:與第二主角牽手(好純情哦!)/鬆手;製作道具料理時選材料

L鍵:切換上屏顯示:主角體力等4值、地圖、小島全貌,某些道具的使用。

R鍵:同L。

start、select:基本無用。

觸摸屏:直接點擊菜單或使用相關物品,操作主角移動、拾取,打獵,料理,做傢俱等。

麥克風:生火時吹氣,做傢俱吹氣等。



3。地圖菜單。



在地圖上按X鍵可調出地圖菜單,具體如下:



物品:查看自己的攜帶物品以及裝備道具、消耗食品等。

休息:在滿腹不為0是可選擇,觀察上屏幕,當恢復到自己所需的數值時再按A鍵可停止休息。另外,若有項鏈等輔助道具可加快恢復速度。

工具製作

圖鑑

進行中途存檔



4。人物基本數值


遊戲中角色有4項基本數值,分別是生命值、滿腹度、體力值和水量值。具體分析見下:


(1)生命值:平時不會自己減少,為0時角色死掉,Gameover。在受動物攻擊、中毒以及當體力值和水量值為0時下降。睡眠後可恢復一部分。



(2)滿腹度:平時會慢慢減少,吃食物後增加,滿腹為0時,體力下降加快。



(3)體力值:平時會慢慢減少,休息和睡眠後會與滿腹情況等比增長,滿腹為0時不增加,吃特定蘑菇後精力旺盛時1可暫時不減少。體力為0是,生命值開始下降。



(4)水量值:平時會慢慢減少,喝水後增長,有些食物也可以少量補水。水為0時不能吃乾食物且生命開始下降。



5。在山洞與女孩對話的選項。

6。相關要點必備。(不斷更新)


(1)遊戲中在地面進行調查有2種方式。一種是在地圖上按A鍵調查,這種方法多用於撿取物品。若遇到需要挖掘的物品如馬鈴薯、水屏則要在按A後用觸摸筆在 地面上劃動以挖取物品。另一種可以稱為詳細調查,即是用觸筆點擊主角腳下,可以用於搜索小動物如沙灘的螃蟹等。

前作的詳細調查很不方便,需要用十字鍵移動角色後再點擊屏幕。本作則可以用觸筆方便的移動角色了,這樣在地面頻繁詳細調查就方便了。只要在移動角色時再點 一下主角所佔的地點就可以進行調查了,而且在詳細調查時如果沒有發現任何物品,可以點左下角的退出,同樣比前作必須按B鍵便利多了。

(2)男孩可以爬上或者爬下最多2個高度的位置,而女孩只能爬1個高度的位置,因為這點所以在遊戲中為了要讓女孩可以和男孩一起外出,要多加留意倒下的小斷木,需要將其用Y鍵推動以此為女主角做台階。否則女主角在很多地方是爬不上去的。



(3)在雨中行動會比平時多消耗體力。

而在颱風暴雨中則只能在家附近移動,連飲水處都不能去,不過洞口周圍有豐富的椰子和樹枝供生活用。


(4)可以將食物和水放在儲物架,主角外出時第二主角會自己消耗,不過AI不是很高,有時候並不取用。同時第二主角還會自動在外邊找食物吃,同樣AI很低,經常會因為吃蘑菇而中毒。


(5)若超過一天還不睡覺,主角會隨機的突然自行休息片刻。


(6)海岸處很多地方都可以等潮水退到最低時進入隱藏地點,但是從可以通過開始計算,只有最多2個小時的的時間,否則潮水回漲,主角就要在外邊停留約一天了。(很危險,容易死掉)(具體的潮水計算時間有待研究)

(7)本作在系統上有了很多人性化的更改——首先是木柴的儲備及添加,只要儲柴點有木柴,那麼在睡覺時系統也會默認為女主角在此期間可以添柴,火焰不會熄滅,這與前作為了不使火熄滅要晚睡覺改善了很多。

再者是料理部分,首先1周目不僅可以自己動手做料理,而且還可以請第二主角做。而最大的改善則是本作做料理有了更多的樂趣,不需要去畫那些枯燥的圖形,而且不用在做完料理後合上ds的蓋子了,這可算是最成功的改善!

(X)最後一點系統上的重點是:本作與前作一樣,用m3燒錄rom復位多次後再進入遊戲會白屏,必須關閉ds後再開始才可以。(暴汗,這種東西都可以繼承?!)


1。開始運行遊戲後,下屏幕出現touch字樣,那麼就請先用筆點擊一下吧,接下來是遊戲菜單部分。

2。選擇開始遊戲後,提示要選擇男孩還是女孩。兩者的區別在於,女孩篇的難度要相對簡單,這在人物的初始身體數值上就可看出。男孩開始後兩個主角的所有數 值是50%,而女孩篇中兩人的數值都是75%。由於小羅現在只選用了男孩進行遊戲,具體在遊戲中還有哪些難度差異還不完全明確。



小羅選擇的是男孩篇。



3。開始描述遊戲劇情——主角所乘坐的船在海上遇到大風暴,船就要沉了,此時出現3個選項,詢問的是要在哪裡尋找物品,三個選項分別是「在桌子上找」「在 皮箱或行李箱中找」「在化裝間找」。此處選項不影響遊戲的主線流程,而且小羅也發現這個選項對地圖上的物品數量不會造成影響,應該不是難度選項,小羅猜測 也許會影響到後期的結局,具體區別現在不詳。

主角幸運的被衝到了某個未知的小島上,遊戲就此開始了!



4。由於在蔚藍的遊戲中,可選性和隨機性比較大,小羅為了更條理的為大家講述,下面的攻略中都採用「第幾日」的方法介紹攻略,但由於小羅是在趕攻略的基礎 上寫的,所以不推薦大家過於模仿,新手可多拿出幾日來讓角色休整,老手們則可以多多進行角色的副業,充分體會遊戲帶來的樂趣。



另外,攻略中的用語方面,為了不至於混淆,對於方向的描述,採用「南北左右」,爬高或爬低則用「向上向下」。

最後一點需要強調的是,在此流程中還存在很多不確定要素,留待以後不斷補充和完善。



好了,正式開始流程攻略吧。



第一日:

1。遊戲一開始向左走幾步就遇到了女主角,當然要牽著她的手一起走嘍。(使用Y鍵,想鬆手則再按一次)

P.S.若選女孩篇,則是女主角拉著男孩走,汗。。。

2。沿著海岸前行,可以順便拾取海藻和蛤蜊,走到盡頭後向北走便是可以喝水的地方了,先補充水分吧。



3。繼續向左走觸發劇情發現蘑菇,男孩逞強以身試菇(男人啊。。。),結果沒走幾步就毒性發作鬧肚子,繼續向左發現山洞,女孩自告奮勇出去找樹枝。(感動)

找回樹枝和樹皮,此時劇情提示要製作生火器。

(一)工具做法。

以此做生火器為例。首先選擇菜單中製作道具一項,再次確定製作生火器後出現物品欄,用A選擇所需的樹枝和樹皮,然後按X確定,生火器就做好了!

隨後劇情要求主角生火。



(二)生火法。



面對中間的火堆按A,等到畫面上一閃一閃的文字消失後,有節奏的開始來回按L和R鍵,要注意控制速度,知道右方的火力槽升到一半為止,此時提示吹氣,則向麥克風處連續吹氣直到火力槽升到最高處為止。



4。繼續劇情,兩人開始互相介紹,接下來的選項不必太在意,只與好感度略有關係,好感度主要通過以後的生活不斷增加。



(三)好感度。(待完成)

好感度的增加方法主要有:送物品(主要為飾品),完成傢俱等。

好感度降低的主要原因有:火熄滅而沒有及時生火等。

判斷是增加還是降低一般通過聲音來判斷,表情的好壞一般不直接影響好感度。

5。接下來劇情討論到吃飯問題,此時可用男主角製作料理,自動給出一些食材,大家可聯繫一下手法。

(四)料理方法。



前面已經提到,本作料理方法有了很大的完善,下面開始介紹詳細的製作料理方法。


(1)首先會詢問是否要做一個便當,(第一次劇情製作時沒有此提示)如果選擇了做便當,則在製作完畢後形成一個便當樣式物品,主要用與外出時回覆滿腹。如果不做便當,則是在完成後兩位主角一起享用,增加滿腹值平分。



圖片附件: 山洞外.JPG (2007-3-17 21:57, 3.64 K)





(2)然後要選擇料理的方法,共有切、烤、煮(需1水)、蒸(需1水)、抄、煎(需1油)6種方法,選擇完畢後,開始用A選擇要料理的食材,Y可切換到調味料一欄,共有8種調味料。(具體見下)得到調味料的方法為外出後在地面上調查。



調味料一覽:岩鹽──天然的海鹽──以下簡稱鹽
樹上的果槳──有甜味的樹汁──甜
辣椒──辛辣的味道──辣
茶色的種子──還有牛奶的風味──奶
胡椒──加入香料的肉──胡
豆子──醬油的味道──豆
黃色的豆芽──美味的清湯──湯
藍色的種子──清爽的酸味──酸


(3)全部選擇完畢後按X開始製作。



(4)前面說過,本作最大的改變為料理的方法,這使得料理不再成為一種負擔而成為一種樂趣,下面就詳細的介紹一下料理的方法和注意事項。



另外,料理完成後有好壞的評價,而料理好壞直接影響到對滿腹的加成。料理好壞的等級分5級,每級之間約有4-8點(1個人吃)的加成差距。基於本次評價與 時間的秒數有關係而且不同的食物有不同的需要時間,因此等級劃分比較困難,比較仔細的玩家可參照小羅以前蔚藍1女孩篇的數據進行研究。以下僅列舉出小羅在 遊戲過程中的推薦時間,僅供參考。



方法名稱 使用條件 方法詳解 注意事項
切 開始就有 用觸筆對沒個材料進行縱向切割,有時間限制 在規定的時間內切的越多越細越好
烤 開始就有 按遊戲中的圖示,要不斷的用觸筆畫圈翻烤食品,完成的好壞與食品所需要的時間有關 畫圓圈採用閉合法,即不要求畫的有多圓,但一定要使圓圈閉合。時間方面一般是圖中有幾個食物就用幾秒,或者在此時間上略加浮動,但是植物類食物要優先翻動 且所需時間要比上述時間短3秒左右
蒸 在大草原上得到碗後 不斷的對麥克風吹氣控制右邊的藍色橫棒一直浮動在藍色方框內 比較簡單,此方法會消耗1L水
煮 得到碗後 不斷的畫圓圈攪動碗內的食物 消耗1L水。在攪動時要有耐心,畫圓要完整,一開始的時候食物確實轉動的比較慢,轉的圈多了就會逐漸變快,此時要注意控制轉的速度以防止湯溢出。速度控制的合適即可完美作成。
煎 打獵動物得到油後 按順序點擊鍋內的食物即可 時間不限,但還是要儘量控制在與食物數量相同的秒數。此法消耗1油
抄 在湖的上方的停泊點得到平石後 不斷在屏幕上劃動食物以防止個別食材抄焦(看顏色) 劃動每個食物均勻即可

6。做完第一次料理後,女孩也提出要施展一下身手,以後就可以請女孩做料理了。

注意,女孩做料理確實可以節省不少自己做料理的時間,但是AI比較低,做出的料理顯然不如自己動手做的好。

7。接下來劇情強制睡覺。


(五)儲物架和女主角攜帶物品的利用。

(1)如果主角要外出比較長的時間,可以把食物留在儲物架中,這樣女主角在家時就可以自己補充滿腹不過AI較低。。。


(2)鑑於女主角本身也可以攜帶大量的物品,因此可以把一些製作工具用的材料交給她,就像一個大型的活動儲物架一樣。(雲。。。虐待啊。)

第二日:


1。出門後再進洞女主角會提示火滅了,此時男孩自動在山洞北面做出一個儲柴點,以後就可以把撿到的木柴放在這裡儲存起來了,女主角會自動的在火焰要熄滅時補充。

2。今天主要目的是恢復各項數值。可先到右邊一直轉到最開始處,拾兩躺食物。現階段最好的增加體力的食物是海灘上的螃蟹,用詳細調查可捉到。此外,還可以做料理來恢復體力,個人還是最推薦海藻沙拉,方法是用切的,材料是海藻+鹽+豆。

同時可以在主角上岸的地方撿到石頭,本作中石頭可謂相當缺乏,已經成了珍貴物品,主要是製作矛和箭的必備物品。

之後就回家裡休息一下補充體力吧。

(六)下面介紹一下遊戲中蘑菇的效果。



遊戲中共有8種蘑菇,其中有3種蘑菇為最普通的可食用蘑菇,另外還有一種可稱為興奮菇也可食用,而其餘的四種則是有毒的蘑菇。

根據以前蔚藍1的經驗,遊戲中每種蘑菇所對應的效果是隨機的,所以小羅下面僅把蘑菇的效果列舉出來,不過為了方便說明,我把自己遊戲中蘑菇所對應的效果也一併整理出來。

對於每個玩家而言,應該親自使用S/L大法來試用這些蘑菇,蘑菇的效果會在食用後1小時表現出來,而其效果也會持續1個小時,請特別注意。

蘑菇顏色 可否食用 效果
黑 否 中毒,減少生命值
青 否 睡眠
紫 否 降低水量
橙 可 興奮菇,體力1小時不減
茶 可 無
紅 可 無
白 可 腹痛,不能進食
黃 可 無

3。因此這天除了休息也可開始試吃蘑菇,找到興奮菇,為以後作準備。

4。地圖最東南面的海岸處在退潮時可通過,暫時不明作用。

第三日:


1。準備探索地圖了,建議直接帶著女主角,離開山洞前先吃好興奮蘑菇並攜帶2個左右即可。

2。向地圖左邊進發!上到頂後需要先向南面繞道才能到達最頂部,此時看到一塊小斷木,系統提示用Y將其向右推下,以後便可以直接從右邊爬上來了。

3。穿過一個小洞後,向左走過河,過河後略向南走會發現一個木棒,系統再次提示可用此做成武器。如果前面按小羅所說拿到了石頭,此時就可以打開菜單的製作工具,先點下方的磨尖石頭,然後再點上方的製作矛即可。

(X)木棒位置。

小羅記得以前寫蔚藍1攻略的時候,總是有很多玩家詢問到底在哪裡可以撿到木棒,確實比較頭疼,下面小羅就把部分木棒的出現位置總結一下吧。(注意:起始的海岸地圖是沒有的)

(1)剛過第一條河時左邊的樹下。

(2)過了最開始的那條河後,向左爬上後繼續走兩步(東北話。。。)就會在一棵樹下發現。

(3)過河後向南走劇情發現木棒,以後此處也會繼續生成。

(4)家的東北方過河後經過一小山洞會發現很多。

(5)大草原和島背側草原,很多樹下都有。

(6)其實到了後期的地圖,基本上木棒已經很豐富了,而且本作的竹林相當的厚道,竹棒比較多,可以起到和木棒一樣的效果。

4。有矛之後就可以捉魚了!!小羅特別推薦在今後的生活中用矛來插魚,因為這種方法不僅速度快,而且魚的恢復量也是很高的。(普通情況4魚可分別給2人恢復20-30滿腹)


(七)矛(貓?)捉魚法。



點開菜單後裝備好矛,面對河流、湖泊或海,按Y或者點下屏幕左上角的圖標即可開始插魚。

系統把插魚這個小遊戲設定的比較簡單,因為並不是非要通過插到魚身才能成功捕捉魚,只要點到魚所在的一個正方形的圖片區域就可以成功將其捕捉!

5。接下來沿海岸一直向左跑直到盡頭,向上爬2個台階,繼續沿路向北走,中間出現的2個岔路都選擇走左邊。此時到達盡頭後可看到一塊大石頭,這時就需要女主角幫你一起將其推下了,之後觸發劇情強制回家。

6。地圖最左邊的地方可以等到海潮退掉時進入,可以撿到稀有的鐵棒(可做矛、釣竿等),而且後期發生地震後還可以進入到裡面的小遺蹟。

小遺蹟:首先說明一下,小遺蹟里有兩個房間需要推箱子,不過難度不大,但是為了能在進入後可以在海潮回漲之前返回,小羅建議分2次進去完成。(1次2個小時)

不過跟據小羅現在遊戲中的狀況,此地點好像除了可以釣到比較稀有的魚之外,暫時還沒有發現其他用處,如果以後有什麼發現會立即更新。

附註:經小羅測試,用鐵棒做成矛效果並不好,大概使用8次左右就壞掉了,而木棒做的矛可以使用20次左右。


第四日:

1。也許是因為推開大石頭的緣故,小羅的第四天一開始女孩就哭了起來,男孩想了一會,作了個手鏈(真不容易,我就不會。。。)交給女主角,經過安慰之後女孩終於破涕為笑了。此後就可以做手鏈了,而且在海灘上按A就會一定的幾率撿到貝殼了。

(八)製作手鏈方法。

(1)在海岸撿至少6個貝殼。

(2)打開製作工具的菜單,選則需要做手鏈的貝殼。

(3)確定後則開始用觸筆擦拭髒了的貝殼表面直到將貝殼表面的土擦乾淨為止。

(4)注意:在擦拭的差不多幹淨時就要及時停止了,擦的過多貝殼就會破裂,那麼製作就會失敗,而你所選的6個貝殼就全都消失了。(殘念)

2。本日的前半天可以先收集食物以補充體力,而後則可以去探索昨天推開的山洞。

進入山洞後南方有一處可以飲水,沿路走可到達可以被稱為「大海岸」的地方,此時劇情發現一隻狼,強制進行戰鬥,若以前做了矛則可以裝備以提高攻擊力。(否則便是空手攻擊,攻擊力很低)

戰鬥的要點在於,當對方要攻擊時會有一個類似蓄力的姿勢,此時迅速按A則不僅可以擋開對方的進攻,還可以給對方造成傷害。若對方成功攻擊到我方也不要緊,此時抓緊時間按A也可在對方還未完全退後前給對方造成傷害。

若受到攻擊則會降低生命值。(6點左右)

此後在大海岸地圖以及以後的草原叢林地圖都會有一定幾率遇到危險動物,打敗對方後會得到動物油、毛皮、肉三種物品。而有了油之後就可以引出「煎」的料理方法。

3。繼續向坐走會發現一隻小動物(渙熊?),若有弓箭就可以打獵了,靠近會逃跑。

(九)打獵。

(1)要打獵必須先有弓箭,(後面講得到地點和方法,在這先介紹打獵方法)有了弓箭後就可以打獵了。而其他相關道具製作也會在後期得到相關材料時介紹。

(2)小陷阱用法:在有動物出現的地方放一個小陷阱並且不斷的點調查它,就會有豐富的動物等你拿!(不過拿了就都變成肉了)

(3)大陷阱及弓的配合:首先說弓,用弓射小動物命中比較困難,而大動物呢,必須要射三次才行,但是地球人都知道,射一次後動物就跑了,所以這就要用到大陷阱了。

小羅在捉大動物時主要採取以前用過的主動法。就是當你發現某動物後,預測一下它要行動的方向,然後在那幾個方向都放上陷阱(如果放一圈陷阱會不會很爽?)這樣很快它就會自投羅網了!!筆者用此法屢試不爽,希望大家也能用此法玩的愉快!!

4。接下來先不要向北走,先南下走到海岸,此時劇情發現一艘沉船,同時這裡還是類似上作中可以發現瓶子等道具的地方,有了瓶子就可以攜帶水源了,一瓶水可以恢復50%的水量。

5。海岸的最左邊也可以在退潮時通過,具體左右現在不明。

6。向北走到盡頭後上爬會看到一隻老虎,出現劇情,主角非常害怕不敢靠近,好了,今天就只好這樣了,先回家吧。
7。回家途中可以在出水

洞後一直向右走,途中可以推下兩個小斷木,以後就可以帶女主角從這裡走了。(不過個人覺得其實與繞道走沒什麼區別)

8。回家後,男主角就會將發現動物和沉船的事告訴女主角了。(建議此日結束後存檔)

第五日:

1。應該是由於觸發動物劇情的緣故(因為據小羅分析系統必須要先介紹怎樣戰鬥才能讓此英雄救美劇情發生),

2008年1月23日 星期三

解決ubuntu7.10下FileZilla無法顯示中文的問題

用FileZilla 把站台加入站台管理員 然後有個"字碼集"分頁 進去裡面選"使用自訂字碼集" 打"big5" 按確定就可以用了~

2008年1月17日 星期四

XML教學文章庫

http://www.study-area.org/coobila/category_XML_u6559_u5B78.html
http://www.xmlfiles.com/xml/xml_attributes.asp
http://www.w3schools.com/schema/schema_dtypes_misc.asp
http://msdn2.microsoft.com/zh-tw/library/ms256207(VS.80).aspx

2008年1月16日 星期三

捕捉和顯示網絡上所有電腦的MSN會話

安裝完成後可以輸入序號:
EDC0C282B2FB2DE8輸入完成後就可以使用了,
必須要符合以下條件:
1.是在區域網路內:例如辦公室,學校
2.使用的是Hub非Switch
3.對方的MSN沒有安裝加密軟

下載

NDS ROM 下載

NDS 中英文對照網頁!! (率先下載!全自動更新系統)
http://nds.lamsoft.net/listallgame.htm

Excel Game List下載
http://nds.lamsoft.net/attachments/gamelist.xls

SendSpace空間:
0000 - 1000 : http://www.sendspace.com/folder/za0j0k
1001 - 2000 : http://www.sendspace.com/folder/tyn9sx

Rapidshare 空間:
0000 - 0500 : http://rapidshare.com/users/Q983WC
0500 - 1000 : http://rapidshare.com/users/V3HH48
1001 - 1500 : http://rapidshare.com/users/CPSUJ8
1500 - 2000 : http://rapidshare.com/users/2X2KYY

遊戲全列表