www1036 的部落格

php多種函式庫

MySQL函式庫

mysql_affected_rows --- 取得先前操作MySQL所受影響的列數

mysql_change_user --- 改變連線使用者

mysql_close --- 關閉MySQL連線

mysql_connect --- 開啟MySQL連線

mysql_create_db --- 新增一個MySQL database

mysql_data_seek --- 移動內部指標

mysql_db_query --- 送出MySQL查詢

mysql_drop_db --- 刪除MySQL database

mysql_fetch_array --- 取得查詢後的陣列結果

mysql_fetch_field ---  取得欄位資訊

mysql_fetch_lengths --- 取得各欄位最大長度

mysql_fetch_object --- 取得查詢後的物件結果

mysql_fetch_row --- 取得單列結果

mysql_field_name --- 取得指定欄位的名稱

mysql_field_len --- 取得指定欄位的長度

mysql_field_table --- 取得指定欄位所在的表格名稱

mysql_field_type --- 取得指定欄位的型態

mysql_free_result --- 釋放記憶體

mysql_insert_id --- 取得先前INSERT操作的id

mysql_list_dbs --- 列出MySQL伺服器上可用的資料庫

mysql_list_fields --- 列出欄位

mysql_list_tables --- 列出資料庫中的表格

mysql_num_fields --- 取得欄位的數目

mysql_num_rows --- 取得結果中列的數目

mysql_pconnect --- 開啟MySQL伺服器持續連線

mysql_query --- 送出MySQL查詢

mysql_result --- 取得結果資料

mysql_select_db --- 選擇資料庫

mysql_tablename --- 取得表格名稱

陣列函式庫

array  --- 建立新陣列

array_count_values --- 計算陣列所有的值

array_diff --- 計算陣列的差異

array_flip --- 翻轉陣列所有的值

array_intersect --- 計算陣列的交點

array_keys --- 傳回陣列的所有索引值

array_merge --- 合併兩個以上的陣列

array_multisort --- 排序複合或多樣尺寸的陣列

array_pad --- 填塞陣列為指定的長度與值

array_pop --- 取得陣列的最後一個元素

array_push --- 增加一個或多個元素到陣列的末端之上

array_rand --- 隨機挑選陣列的一個或多個值出來

array_unshift --- 增加一個或多個元素到陣列的起始處

array_values --- 傳回陣列所有的值

asort --- 將陣列排列且維持索引值的關係

compact --- 建立陣列包含變數和它們的值

count --- 計算變數中元素的數目

current --- 傳回陣列中目前的元素

each --- 從陣列傳回key/value對

end --- 設定陣列的內部指標指到最後的元素

extract --- 從陣列輸入變數到符號表格中

in_array --- 搜尋陣列中值是否存在

key --- 從陣列中取得索引值

krsort --- 依照索引值的顛倒順序將陣列排列

ksort --- 將陣列的索引值排列

list --- 列出陣列元素

next --- 向前移動陣列的內部指標

pos --- 傳回陣列中目前的元素

prev --- 向後移動陣列的內部指標

sizeof --- 取得陣列中元素的數目

HTTP函式庫

header --- 送出HTTP標頭

header_sent --- 判斷標頭是否送出

setcookie --- 送出cookie

欲了解更多,請至參考網站http://linux.tnc.edu.tw/techdoc/banic/

利用PHP內建函式庫,

對於實作PHP的技術會有不少的幫助:)

[WebFund-F08] Lab4 496511152

這次的作業
跟上次的作業最大的不同是在於
這次的作業是必須在後端(伺服器)作處理
而上次的是在前端(使用者端)作處理
所以這次的作業
作起來就先必須至少安裝3個套件
MySQL、PHP、Apache(或其他伺服器環境的套件)
主要是安裝、設定這些較為繁瑣
若要方便於管理database
還必須加裝phpMyAdmin的套件來處理
可方便於不用直接在MySQL Command Line去下指令
藉由這個套件可以直接針對database去作妥善的處理
而實作的部份,我覺得並不難
只要了解php的語法就能夠解決
跟上次的作業比起來大同小異
一樣是以php/Javascript去組合xhtml語法構成一個網頁
兩者相較起來,在前端跟後端處理的差別
後端--使用者看不到作者所寫的code
而前端--使用者將會一覽無遺
所以我覺得php jsp等後端處理的技術是非常不錯
但缺點是通通都由伺服器去做運作
若流量一大,伺服器的負荷將會是一大問題...

 

[WebFund-F08] Lab3 496511152

這次的Ajax作業
我一開始寫起來非常的不順
有可能是我自己對於Javascropt這邊似乎還不夠熟
光看課本範例的code
就花了將近20分鐘才大概了解
可是要怎麼去實作呢???
滑鼠移入,移出分別使用到了onmouseover,onmouseout這兩個事件
看了範例的setAttribute這個method
所以我就使用了這個方法來實作,value去分別呼叫getTitle,clearTutle這兩個function
但改了好久才成功
後來看到其他的同學還有針對不同種的瀏覽器去做測定相容性
我才警覺到,我都好像是在firefox去做呈現
換了IE去瀏覽,果然失效
後來找了相關的網站
找到一個國外的討論區
就在討論setAttribute到底能不能去set event
但似乎是不行的
所以就遵循別人的回應所提供的幫助,果然成功
除此之外,在這份作業當中
有許許多多的code的內容會看不懂
w3c school裡也有提供APIs
也幫助我不少: )

 

WEKN Project Proposal

范競之, www1036, 496511152
吳俊毅, 496511217, 496511217
歐巡丞, ohsc98, 496511229
陳謙釩,  neilchen, 494390542
我們這組的主題主要是要做一個美食地圖
現代人近來對美食越來越講求
但要找一間美食餐廳卻要到網路上一個個網頁去找、去比較
所以我們想要做一個美食地圖建構於Google Map之上
擁有其他的饕客給予的評價、評論等等
讓使用者能馬上找到符合自己想要親身嘗試的美食餐廳
目前預計使用的技術:zk(Ajax),PHP,SQL,Javascript,CSS,WEB servers(Tomcat),xhtml,Google Map
有可能會再使用到的技術:Flash,RSS

zk介紹

剛看到有同學

發表了AJAX的文章提到了ZK

剛好我最近有學習一些有關於ZK的東西

所以趁機介紹一番:)

先簡述一下,為什麼有AJAX這個技術?!

在傳統網頁當中,當我們在表單內送出你Key in的資料

這時就要向伺服器做request-response的動作

但有時傳送前跟傳送後的頁面語法大致相同

可是卻要向伺服器做全面的request-response來更新整個頁面

在這一來一往間,會造成不必要的時間以及頻寬的浪費

說來說去,還是來一個例子吧:)

像Yahoo!以及Google都是很好的例子

他們的Search bar

當你Key in第一個字時

底下會跑出關鍵詞可供選擇

這就是一個例子

還有在這兩個入口網站當中

有許多的div的東西

像Yahoo!一進去有search bar底下

有焦點新聞,運動,娛樂...等Label

每點擊其他Label時,他就只向伺服器要求該div的內容

而不是向傳統網頁一樣

作全面的更新

Google也有這種東西

但Google的東西更高深一等

使用者將網頁中的block依自己的喜好

作移動(拖曳)到想要的地方

以上這些功能大多是用到Javascript所辦到的

而zk就是利用這種特性

以簡單的開發框架去實作出擁有AJAX的效果

在撰寫的過程當中,使用者可以不用寫到任何一個Javascript的東西

卻能利用他的元件來替我們寫出同樣的效果

意即他可以幫我們寫Javascript的部份

除此之外,他還支援多種語言

ex:Java,Javascript,Ruby,Groovy以及MVEL等多種語言

更驚奇的是

zk是臺灣人所研發的

但臺灣跟國外比起來

zk在國外是比較受到歡迎

不過近幾個月

zk在臺已有慢慢崛起的跡象:)

基於以上,我們這組的Project將可能使用到zk的技術

以下提供相關的link

維基介紹:AJAX http://zh.wikipedia.org/w/index.php?title=AJAX&variant=zh-tw

維基介紹:ZK http://zh.wikipedia.org/wiki/ZK

ZK官網 http://www.zkoss.org/

ZK Live Demo http://www.zkoss.org/zkdemo/userguide/

ZK新聞 http://www.ithome.com.tw/itadm/article.php?c=42572

[WebFund-F08] Lab2 496511152 http://sites.google.com/site/ie965115/

這份的作業

在我實作起來算是遇到了許多的困難

 像是要用到xhtml以及css

 在他的html編輯器中,寫上了自己所要表現的語法

 似乎都會被擋掉,而且排版不易

不過部份的css可以派的上用場

 所以以目前現況來說,使用他的介面來拖拉物件

 是會比以html編輯來得容易

 這份作業還有提到說要嵌入其他的服務(e.g youtube,map,calendar...等)

在這份作業當中,我嵌入了youtube,map,calendar以及Google talk

在嵌入的過程中,也遇到了一些困難

似乎只能用他的insert功能去嵌入

但有些嵌入的物件似乎還不完備,導致有些服務沒辦法使用

再舉一例,我想用map來指出輔仁大學聖言樓位置

但他嵌入有關於map的物件,大部份沒有提供經緯度定位的功能

或者是有提供,但他會多了search bar的功能

並不是我所想要的呈現樣式

以一般的Google map嵌入到網頁中的方式

用在Google Sites中,一樣必須以html方式去做編輯

可是按下存檔後,結果無法呈現出來,html編輯器中剛寫入的語法消失

所以我覺得Google sites的服務整體來講還不夠於完備

可能他是今年五月多才開放使用

許多功能還在慢慢開放當中...

不過Google sites對於初新者而言

是個不錯的選擇

也期待他的功能未來夠趨近於完備: )

[WebFund-F08] Lab1 496511152

這次的作業我用連結雅虎首頁為例

1. 當Key in 雅虎網址 連結到該地

他的網址是http://tw.yahoo.com/

但在http下卻無法辨識他,他只能去辨識IP位址

所以要透過DNS連到適當的主機去做解析轉換成雅虎該地的IP

然後就開始以TCP進行連線

以上圖片為pic1-DNS.JPG

2.發送request給對方求得response

GET / HTTP/1.1
Host: tw.yahoo.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-tw

Accept-Encoding: gzip,deflate
Accept-Charset: Big5,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Cookie: TW_PL=c3c.n84yM5GVda.RQIBfCvinCuTEBnA-; B=386uvad46kgs7&b=4&s=b1; _KS_B_T_=d=y5_GmGxjHpaQClaY_YvoZkUvBsVPTL89Jahiwzyzvx5LKrmZG__csF.....

(後面過長,故以省略)

圖片pic2.JPG

在這邊發送request給雅虎,同時帶著cookie

以便檢查使用者電腦中的cookie是不是fresh?!

內容中還有一段"Connection: keep-alive"

keep-alive在request-response中伴演著重要角色

他就像是個窗口,提供Client-Server間的連線

適當的open與close,能降低Server的負擔

為什麼呢?當有數以萬計的Client連到Server時

若Connection都保持open的狀況

會致Server窗口過多,後方連進的人有可能會倒致塞車

(Server的窗口並不是無限多)

這個技術跟session又有異曲同工之妙

但session感覺又更高深, session是當建立連線時

Client-Server互相保持連, 當Client閒置過久, 沒再傳送訊息給Server

Server會在一定的時間內(ex:連線保持2分鐘無任何溝通)

Server會主動踢掉這個連線

附上HTTP Keep Alive參考文件http://www.io.com/~maus/HttpKeepAlive.html

回傳給使用者

同時Connection close

圖片pic3.JPG

但如果網頁中的東西如果request-response就中斷的話

那勢必會造成效率變差的問題

所以像要傳送圖片那些之類的

會先建立連線response回來並不中斷

他會持續發送request,然後到最後一次response才會中斷

接著是set_Cookie

當你的資料不是fresh或者使用者清除了cookie等等

在重送的資料就會有set_Cookie這個東西

圖片pic4.JPG

------------(9/23更新)-------------

有同學私下與我討論其內容,內容主要是針對本篇的get與post有不同的看法

後經查詢,用語不恰當,所以故以修正

原內容意為,get是向伺服器傳送資料,回傳以post(但實際上確沒看到post字樣)

但經查詢為並非如此,上文中應是向伺服器get request(所需資料)

(再回傳)response給使用者(Client),並非post

那post是什麼呢?!

post主要是向伺服器傳送Client的數據

簡單的說,就是增加修改中伺服器的資料(前提是自己的權限所及範圍)

ex.增加新留言..等

現在我舉以無名為例,我在我自己的blog去發表新留言

以下為內容..

POST /guestbook/func_guestbook.php HTTP/1.1
Host: www.wretch.cc
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-tw
Accept-Encoding: gzip,deflate
Accept-Charset: Big5,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.wretch.cc/guestbook/www1036&tab=addpost
Cookie: BX=6pnh2th4dfb14&b=3&s=oq; a_uid=www1036; a_page=1; lang=zh-tw; PHPSESSID=r3uj28uk210fu09p8l2b9k1ad1
Content-Type: application/x-www-form-urlencoded
Content-Length: 140

出現post了喔?!

圖片pic5.JPG

參考資料

http://www.cnblogs.com/stu-acer/archive/2006/08/28/488802.html

http://www.cs.tut.fi/~jkorpela/forms/methods.html

以上資訊若有錯誤,歡迎指正!!

jar

在上篇內容之中講到了jar,

在先前,我就有先去網路上找過了一番

在c語言中,可以直接產生出一個exe檔去run

但java呢?我覺得奇怪,所以就去找了相關資料

找到原來可以包裝成jar去執行(先提是要在有jre的環境之下)

以下為”手動”封裝的步驟(上篇是以IDE直接去包)

---------------------------

Main-Class:<空一格>類別名稱

<空白行> --->一定要有空白行

然後將檔名存成manifest.mf

2.將你的程式所產生的所有.class檔和manifest.mf

放在你的電腦內的sdk的bin的目錄底下


3.再將命令提示字元打開

在你的電腦內的sdk的bin的目錄底下

鍵入jar cvfm (命名產生後的檔名).jar manifest.mf *.class

4.成功的話就可以在bin目錄中看到產生的.jar檔

執行的話,有些可以直接去雙擊執行

但有些必須在命令提示字元下run,

曾看過有其他設定可以直接去呼叫命令提示字元

但還沒自己去try

在手動執行的步驟:

在命令提示字元之下輸入java -jar (檔名),jar

或者在開始內的執行輸入java -jar (檔名).jar 均可

 

Netbeans6.1

Netbeans是一套開發projects的的IDE

其實這套軟體,是我上個月在網路看到SUN所舉辦的認證日

 剛好有空,去參加所聽到的軟體

 看演講者介紹著這套軟體,並且當場Demo呈現出來

讓我感覺整個功能非常的強大,

可以去寫Java,支援Application Server,JavaScript,Spring Framework/Hibernate,

My SOL,Jruby/Rails...等..

跟Eclipse幾乎可並駕齊驅,當然各有各的優點

 不過看了許多網路上的人說

Netbeans在GUI方面比Eclipse強?

這點我就不得而知了,因為Eclipse我只看過介面,未曾真正使用過

但Netbeans看完Demo後,回家就下載玩玩看,

果真,他的GUI拖拉的功能實在沒話說

不過缺點是,感覺功能太多,蠻花的...

而且拖拉完後內得程式碼,跟我們在Java課學的語法上

又有極大的出入@@"

因此我用這套的功能,試撰寫一個隨機小程式

並且包裝成jar,講到這邊,jar又是什麼呢?

jar似乎就像是一個壓縮檔,把class檔通通包在一起

在擁有 jre 平台 的設備都可直接執行

這時我也才知道為何Java為何有跨平臺的特色

以下附上Netbeans當天的演講投影片

https://www.suntrainingcatalogue.com/eduserv/im/zh_TW/2008_JCD_Netbeans61.pdf

-------------------------------------------------

不過,整場帶給我的感覺:商業包裝氣息很重:(

資料結構

資料結構(data structure)是電腦中存儲、組織數據的方式。通常情況下,精心選擇的資料結構可

以帶來最優效率的演算法。

在我們課堂上學到的,有下列幾種:

1.list(串列)

 -一組每個項目依序排列後的資料

 -串列開端稱為head(頭部)

 -串列尾端稱tail(尾部)

 

2.stack(堆疊)

 -一個項目資料只能從頭部移除及加入的串列

 -頭部稱top(頂端) 

 -尾部稱bottom(底端)或者base(基底)

 -因只能從頭部移除及加入的特性,稱之LIFO(last-in,first-out,後進先出)

 

3.queue(佇列)

 -一個資料項目只能從頭部移出,新的項目從尾端加入

  ex:似排隊

  -因其從頭端移出,尾端加入之特性,稱之FIFO(first-in,first-out,先進先出)

頁面