Pages

2010年6月28日 星期一

Web Service(1)五分鐘速成

話說,打從我開寫 Blog 以來,好像就少有正經不嘴砲的文章,除了少有幾篇關於 SQL 或是關於四捨五入的教學外,對整個社會貢獻一丁點也沒有,所以我決定要塞幾篇有些教學性質的文章,已避免這裡的素質太過低落。

今天我想要來談談 Web Service,雖然說 Web Service 不是什麼高深的新技術,但是有鑑於網路上對於 Web Service 的中文實用範例過於稀少,加上大部分都是英文居多,那我就來個中文的簡易版,五分鐘教妳學會怎麼使用 Web Service。

在開始解說之前,我一定要先保證,這絕對是一篇對某些人實用,對大部分的人會無聊會打瞌睡的文章…

什麼是 Web Service?根據 Google 上面所解釋
Web Service 是一種面向服務的架構的技術,通過標準的Web協議提供服務,目的是保證不同平台的應用服務可以互操作。
有聽沒有懂?嗯… 相信我,這是正常的。因為我通常對這些官方解釋都直接跳過,直接進入實例,等寫完實例後再回頭看解釋,保證妳同醍醐灌頂,覺得那些解釋根本寫得比我還八股!我給予它白話的解釋是
Web Service 是在網路上的服務,寫程式的時候妳可以使用它回傳給妳的值來完成妳的程式。
對,就這樣,我給它的解釋不會更多,輕鬆簡單白話易了。舉個例子,今天妳有個程式需要做幣值間匯率的轉換,當然,或許妳的程式不需要這麼的精準,給它個固定匯率就可以了,可是通常這種狗屎運不會這麼多,妳要的是每天的最新匯率,這下子好了,我到底要怎樣去每天更新我程式裡的幣值匯率啊?這時候妳就需要 Web Service 了。

試想一下,不管是白天還是晚上,不管是昨天還是今天還是明天,妳就是要最當下的匯率資訊,而當這個服務存在網路上而且隨時可提供給妳,妳所需要的,只是需要時連上網路去取得這個匯率(使用 Web Service),而妳完全不需要懂這個服務背後是怎麼運作的,這樣妳的工作是不是就少了一大半了?換句話說,諸如此類的還有萬一我想取得天氣預報、取得即時新聞、取得郵遞區號、通訊錄等等,妳所需要做的,就只是上線取得這個服務,或是建立服務給他人使用而已,而今天這篇,則正是要舉個如何取得當下幣值匯率轉換來做例子。

打開妳的瀏覽器,隨便搜尋一下 asmx,妳會發現有許多可以使用的服務。.asmx 是 Web Service 的副檔名,就像是 .exe、.html 一樣。現在,在妳的瀏覽器網址列內輸入

http://www.webservicex.net/CurrencyConvertor.asmx

如果 Web Service 有正常運作,妳應該會看到以上的畫面。從畫面上妳可以知道這個 Web Service 叫做 CurrencyConvertor,裡面有個 Function 叫做 ConversionRate,還有一些解釋,大意就是這個服務是用來得到幣值與幣值之間的匯率。在開始寫程式之前,我們可以先試試看這個 Web Service 會不會動,點進入畫面的連結 ConversionRate ,然後把畫面往下拖拉到中間直到看到這個畫面

幣值可以隨意妳輸入,不過只能輸入它 List 裡面所提供的,就是畫面上洋洋灑灑看似一堆的幣值縮寫。因為下個星期我又要去香港玩了,所以我們拿港幣還有台幣來試試看。然後在 FromCurrency 內輸入 HKD,在 ToCurrency 內輸入 TWD,然後按下 Invoke。

噹噹!我們很幸運的,也很快速的在畫面上得到了以下這個值(見鬼了,港幣又漲了嗎?)

現在我們確定這個 Web Service 是上線且有在運作的,接下來,我們就來試試如何把這個 Web Service 跟我們的程式做連結。我們現在開啟 Visual Studio 2005 然後建立一個 Web Application(妳也可以使用 Window Form,只是我們這邊使用 Web Application 做例子)。

專案/網站名字可以自己取妳想要的,我這邊取名為 TEST_WebService,接著下一個步驟,就是如何引用一個 Web Service。

在工具列上選擇「網站」->「加入 Web 參考」。




然後接著把 Web Service 的所在網址輸入,我們的例子也就是剛剛我們所測試的網址,輸入 http://www.webservicex.net/CurrencyConvertor.asmx 然後按下

如果一切無誤,妳應該會看到上面那個畫面,妳可以把 Web 參考名稱換成妳想要的名字,在這裡我更名為 WS_Currency,建議妳跟我取的一樣,這樣後面妳我的名字比較不會混淆。然後按下「加入參考」按鈕。加入後,妳會發現到在妳畫面右邊的方案總管理多出了 App_WebReferences - WS_Currency。



現在到這邊,我們已經完成百分之八十的工作了,簡單吧!妳還沒敲入任何一個 code 咧!現在我們要接著完成剩下的百分之二十。打開 Default.aspx.cs,敲入以下圖片中的 Code,用圖片的原因是防止妳複製貼上,親自打一遍比較容易寄得住呀!(好吧… 其實是咔圖比較容易啦)

如果引用正確,當妳敲入 WS_Currency. 的時候,Visual Studio 的 intellisense 應該會自動帶出幾個類別,我們在這裡要選 CurrencyConvertor,也就是這個 WebService 的名稱。

或許妳會接著問,這個類別裡有這麼多的函數,我怎麼知道要使用哪個呢?其實秘密就在剛剛妳在瀏覽器裡輸入的 Web Service 網址後所出現的畫面內容裡。回顧一下,當我們輸入完 http://www.webservicex.net/CurrencyConvertor.asmx 之後,點入 ConversionRate 連結,把畫面拉到最下面,注意一下裡面有一段 XML 格式的內容,這個就包涵了我們所需要的資料。



Tag:ConversionRate 是一個函式的名稱(在一開使進入 Web Service 網頁的內容裡妳也可以見到)裡面包涵了兩個參數,分別是 FromCurrency 和 ToCurrency(還記得我們之前在網頁上所輸入的 FromCurrency 和 ToCurrency 嗎?),而 FromCurrency 和 ToCurrency 後面又接著一堆幣別代碼,那就是可輸入參數的內容值。因為這個 Web Service 已經對幣別做了定義,所以我們不能直接輸入 "HKD" 或是 "TWD",而是要使用這個類別裡所給予的 Currency 型別。照下面打就對了,我們要做的,就是把原本在網頁上所輸入的,改寫到從程式裡輸入而已。



沒多餘的廢話,重要的東西到這邊就結束了,簡單吧!接下來所得到的結果就看妳要怎麼運用了!下面就是把所得匯率 4.1178 放到 label 裡,全部的 Code 如下… 到這邊,妳應該知道一個 Web Service 是如何使用的了。



就這樣短短的三四行就可以隨時得到最新的匯率,不需要什麼高深的功夫也不需要什麼深度的知識,很簡單的妳就知道怎麼使用一個 Web Service。這篇從頭看到尾需要多少時間?不多不少五分鐘剛剛好!

因為 Web Service,從前一些程式與程式之間的跨網路合作,也開始變得可能!也因為既然是跨網路,當然也表示它也是跨平台,只要連上網,就能使用 Web Service!這也代表著如果要隨時更新異地程式與程式間的訊息,如果有 Web Service 做媒介,從前很複雜的一件事現在也可以變得很簡單,好了… 我想妳應該也快睡著了,今天就講到這裡吧… 同學們!下課~

2010年6月18日 星期五

老師,妳何必找我麻煩?

前幾天剛好過端午節,而小時候有過童年的人都知道,端午節那天除了可以吃粽子、看電視上裡的大人划龍舟之外,學校還會很應景的舉辦一系列的活動。譬如說美術課的時候可能會要妳弄個粽子、香包之類的東西。我本來想說,Aboo 才幼稚園中班準備升大班,離這種要親自動手勞作的日子還很遠,想不到… 唉,我錯了…。

端午節的前一天, Jeweller 默默的把 Aboo 的聯絡簿遞給了我,我頭頂著問號看了看 Jeweller 手指著老師特別註明的地方,頓時間當場沒傻了眼大叫…「Aboo,你老師…(消音)你老師她在開玩笑吧?什麼叫做要"做艘龍舟"端午節後要交啊?」,Aboo 邊看著電視裡的海綿寶寶,不急不徐理所當然的回答:「喔… 那個… 就是龍舟啊… 老師說要爸爸媽媽跟小朋友一起做一個龍舟,大家都要做喔~」,Aboo 一臉好像完全不關他的事一樣,害我忍不住把手中的聯絡簿扔到了 Aboo 頭上,然後 Aboo 又扔了回來… 我又扔了回去… Aboo 又扔了回來… 我又…(略)。

龍舟欸… 誰知道要怎麼做龍舟?別說摸過了,我這輩子除了看過電視上的龍舟、報紙上的龍舟之外,真的龍舟我還沒見過。聽說還要比賽!就是真的要放在水上,然後拿著扇子搧風看誰跑得比較快… 這到底是誰出的鬼主意!根本是樂了孩童、樂了老師,卻苦了家長嘛… 想當然,我就很努力的去忘記這件事,一整個假裝事情沒發生過…。

端午節那天放假,晚上,我正在翹著腳吹著冷氣邊吃著冰棒邊看世界盃足球賽,才看到一半, Jeweller 剛好帶著 Aboo 從我岳父岳母家回來,Aboo 見到我後興奮的大叫著:「你看你看!阿公幫我做了三艘龍舟喔!超棒的啦!」我睜大了眼睛心想:「乖乖!不愧是岳父,不僅龍舟做好了,還一次做三艘!這個厲害!」,我心底不禁暗自佩服著原來深藏不露的岳父。我趕忙跟 Aboo 說:「是嗎?那拿出來給我瞧瞧看~」,話還沒說完,Aboo 已經迫不及待的從袋子裡掏出三艘「所謂的龍舟」…

「哇哈哈哈哈哈… 我的媽呀… 哇哈哈哈… 我肚子好痛…」,我忍不住在地上打滾,笑得有多誇張就有多誇張,連 Aboo 看我笑得厲害,也忍不住一塊狂笑… 據 Jeweller 說明,原來,那三艘龍舟是 Aboo 吵著阿公要做給他,阿公拗不過孫子的撒嬌(?)還是耍賴,所以就… 用廣告紙做了三艘「紙船」給了 Aboo…,因為 Aboo 也不大清楚「真正的龍舟」長什麼樣子,所以就把這三艘紙船當寶,就連 Jeweller 都笑翻了。

後來我看世界盃足球賽看到一半,看到 Aboo 拿著扇子猛搧在地板上那三艘站不起來的「龍舟」,不禁讓我幻想明天當老師要大家拿出所謂的「龍舟」,而就只有 Aboo 拿出三艘廣告紙做的紙船時臉上顯露出難過與羞愧的模樣,我就忍不住嘆了一口氣…

「Aboo,我幫你做艘龍舟吧…」我關掉了電視看著他說。

「蛤?我已經有龍舟了啊~」Aboo 滿頭大汗的還在猛搧著那在地上站不起來的紙船。

「不是,我是說,真正的龍舟!就像獸拳戰士裡的那個子彈號一樣的龍舟!」我用力的說。

「真的嗎?子彈號嗎?喔喔喔喔喔喔喔喔!我要子彈號!我要子彈號!」Aboo 大叫著,就連我也忍不住開始熱血了起來!

熱血歸熱血,半小時後我就軟了… 什麼鬼龍舟,真他媽的難做… 不管啦… 管他的龍舟還是子彈號!我已經盡我最大的努力了…(Jeweller 海K:「最大的努力只有半個小時?」),其實大家有所不知,從前美工勞作我通常是十五分鐘就交卷的耶,哪需要做到半個小時啊?我一定是寶刀老了…

用保麗龍和珍珠板做的,嗯… Aboo 還是叫它「子彈號」!圖片中那個黃色的一大片詭異的東西妳一定不知道是什麼東西,嗯… 妳可以說它是帆吧… 雖然我也是第一次看過龍舟有風帆的,不過因為知道他們要放在水上用扇子搧風,沒有帆怎麼會跑得快?要帆當然就要一大片啊~

嗯… 這就是我一開始沒有照這面的原因,海綿寶寶還是海綿寶寶… 在 Aboo 這個年紀就是他的英雄,說什麼也要弄一個上去,只好幫他從網路上抓了一張圖下來剪下來貼上去… 感覺就是一整個不威啊 Orz

隔天,我上班完回到家,Aboo 緊緊抱住我興奮的說,全班的龍舟(誤)就他的最酷,每個人都圍著看,說他的好朋友都超級羨慕他的,又說比賽比了三次他的都跑最快,而且不是很快,是超級快的快!然後一臉得意的嘰嘰嘎嘎的說不停,又說老師說他做得很棒很有天份(X的,這根本全部都是我做的),還叫他要把這艘「龍舟」保存起來明年再拿出來用一次…(什麼!明年還要一次!?… 還好世界盃是四年一次…)



總而言之,結局是好的,雖然我錯過了球賽(喔… 西班牙被瑞士踢爆了),不過至少 Aboo 得到了子彈號,沒有拿著三艘紙船躲在院子角落落淚。更重要的是我想說,「老師,請別在世界盃足球賽期間要家長弄北弄南準備東準備西的,好嗎?」,有時候家長也是很忙的咧…

相關連結:老師,妳何必找我麻煩?(2)

2010年6月12日 星期六

Shakira - Waka Waka

Shakira - 插米哪~米哪~ 欸欸! 哇卡~哇卡~欸欸!This time for Africa !



Oh.. I am so in love this game !

相關連結:2010 FIFA World Cup 世足賽開踢


2010年6月11日 星期五

2010 FIFA World Cup 世足賽開踢

妳看到這個標題,一定會說「世足賽?這跟你又有什麼關係?!你又不踢足球…跟人家瘋什麼瘋?」。嗯… 這事實話,我還真的不會踢足球,我踢足球的實力除了可以在 PSP 上面以中華台北隊直接把巴西隊踢回老家外稍微還值得一提之外,其他還真的沒有什麼實力可言,大概就勉強可以踢贏 Aboo 而已。

不過… 不過… 這次不一樣!這次可除了在南非舉辦之外,好不容易南非也是八個種子之一啊~



看完這影片,血熱起來沒?吼~我可是全身發燙啊!巴不得現在就把我的手提電腦拿到公司外面去踢一下或是頭錘一下,真的是好熱血啊!真不愧是全世界最多人觀賞的運動啊~

南非時間比台北時間慢了 6 個小時,也就是說,賽程幾乎都在台北時間晚上 7 點、10 點,除了晚上 2 點 30 的比較困難之外,大部分的時候妳都可以欣賞的到即時的足球的賽況。這裡順便教妳個方便查詢賽程的方法,妳只要在 Google 上直接敲入「World Cup」做搜尋,就可以得到目前的賽程時間表、隊伍、成績等情報。

雖然說,台灣的運動風氣比較朝向是棒球為主,其他運動普普,不過拿來跟足球比,我還真的是比較喜歡看足球很多,不僅是過程較為激烈,整個球賽真的只能說是用精采絕倫來形容!妳看,每個球員使盡渾身解數只是為了想把一顆球射進對方的網子,或是使盡各種手段想辦法阻擋對方的進攻,剷球的剷球、跌倒的跌倒,就算是跌在地上,姿勢也要非常地 豪邁 (誤),更是要在地上 翻滾哀號才能博取裁判的同情 (大誤),反正,跟棒球投手與打擊者之間的戰爭,我更喜歡那整個球隊全員上下發出怒吼般的氣勢與藝術般的身手啊!

喔對了!泰瑞熊跟我,還為了支持一下我們的國家隊,特地跑去買了…
噹噹! 來看一看這是什麼!當時泰瑞熊特地打電話來跟我說這個消息的時候,就打定主意一定要買一定要買一定要買一定要買一定要買一定要買一定要買一定要買!!

到底是什麼咧?妳看妳看,就是這個!… 疑… 嗯… 好像不是這個… 貼錯圖了…

這個才對啦!哈哈哈~ Converse 2010 世足賽限量版的南非紀念鞋!

什麼?妳說妳無法接受這個顏色?妳是有顏色歧視嗎?當初泰瑞熊和我可是為了這個型號的尺寸找了一陣子呢!因為泰瑞熊的腳比較大要穿到 UK10 號,結果竟然沒有還得跟南部調貨,等了一個星期後終於有貨了,其實原因是這款的顏色很亮,主要是設計給女生穿的,不過台灣哪個女生誰穿到 UK10 號啊?又不是菲歐娜… 反正我們很喜歡,還是穿得很歡樂就是了。

各位鄉親啊!看到沒有,這麼大這麼顯眼的南非國旗就在 Converse 的標誌上,這樣就是愛南非啦!

連鞋跟部份都有南非國旗的旗幟,真的是一雙很南非的鞋子啊~ 酷斃了!

妳不要阻止我!我就算在家裡我也要穿著這雙鞋子支持南非隊!感覺穿上鞋子後我都變成黑人了… 哈哈哈 Gogowababa ! Gu-le-ji-ba lei lei~ Africa !!

不論妳是支持西班牙、還是德國還是英格蘭,開開心心的一同體驗這個刺激的運動才是這篇最主要的目的。尤其是世足賽是全世界最多人看的運動,就算妳不懂規則,那也沒關係,妳只要跟著攝影機盯著球看,慢慢妳就會發覺… 原來數十億人所盯的那顆球原來是那麼美妙啊…

最後,因為這次很多人唱衰南非隊,不過身為南非人,當然一定要支持一下南非隊啦!我瞧瞧… 嗯,南非分類在 A 組,對手有法國、烏拉圭、墨西哥… 嗯… 嗯… 嗯… 唔… 贏定了啦!哇哈哈… 就等著看南非隊的皮納爾、查巴拉拉、姆菲拉怎,麼把這三個國家踢回家吧~(自我感覺良好)。好了!話不用多說了,鹹酥雞、鹹水鴨、啤酒、可樂通通準備好!今天(2010/06/11)晚上 10 點,南非 V.S. 墨西哥 準時開打!妳千萬別錯過了!

2010年6月4日 星期五

不在網路上不寂寞

想了一想,我是有多少次是用「拖稿拖了好久」這個理由來做一篇喇賽文章的開場白了?一次?兩次?還是每次每次?其實我一直都記得,那是在某一天晚上,自己已開始不在家上網以後…

許多多多年前,當每個人的電腦右下角還是綠色小花,不斷的會響起「喔喔」聲的時候,一天內最多的時間大概都是耗在電腦上,那時候的網路速度是爬得比烏龜還慢,比蝸牛快了那麼一點點,無論是無聊沒事的喇屁喇賽,大家都還是很開心的花時間在網路上面做一些我們現在看起來很沒有意義的事且樂此不疲。而背後所隱藏的,其實也是代表了自己在家,且一個人,孤單、寂寞,而相反地如果朋友見自己晚上 ICQ 沒開,反而就知道了定是有節目、跑出去玩了。

那是一個時間不值錢、且生命揮霍起來既豪爽又毫無忌憚的年代。

現在工作了,一天固定 24 小時仔細算一算,其實扣掉白天上班、通勤、吃飯,再扣掉晚上吃飯、洗澡、做家事、陪 Aboo 陪 Jeweller 還有睡眠的時間,全部扣一扣,自己就僅僅剩下珍貴的不到 4 個小時不到。這件事情所代表的背後,是我不是孤單的一個人,而且很忙很忙,不僅雜事多,自己的休閒時間更是少之又少,跟從前比起來,上網則反倒像是件奢侈的事。

因為社交網路(Facebook)的崛起,所以跟朋友之間的打屁哈拉也漸漸的從主動的 MSN 移往被動的 Facebook。也因此感覺,與朋友間的互動也越來越不是那麼即時了。在 Facebook 上,偶爾戳妳一下,是代表我在想妳,按下一個讚,是代表著「是!我有在關注妳的近況!」,其實時間如何再短少,還是會想盡辦法勒緊褲頭,哪怕是幾分鐘也好,就是要抓住那僅存的羈絆。

所以啊… 有時請原諒我的任性,Blog 上的文章日漸稀少其實不是我生不出來。看到草稿資料夾裡還塞滿著各式各樣的草稿題材,諸如世足賽、Ultimate ears triple.fi 10 Pro、四個胖子在香港的故事、關於死刑的慈悲生禍害方便出下流、更別說好多已經過了有效期限的電影心得,不勝枚舉。我知道我知道,有機會,我真的會乖乖的坐在椅子上好好的趕上一趕。

也別忘了有空時,留言給我,跟我敲碗討文章也好、跟我說聲嗨也好,或是在 Facebook 上戳我一下,其實所帶給我的意義都遠比妳所想像來的大,雖然我不在網路上,不過我這不是寂寞,只是想在那每天丁點的休閒時間裡,讓我記得分一些些給妳。