Fork me on GitHub

TW Weather 台灣天氣

Copyright © 2009 Weizhong Yang (a.k.a zonble, http://zonble.net). All Rights Reserved.

這個東西當然是拿來看天氣資訊的,不然還能夠有什麼用途?


screenshot

簡介

專案基本上分成兩個部分-Client 端與 server 端。

岔個題,說到右邊這張截圖-為什麼明明到了十一月,台北還是會出現三十二度這種氣溫呢?…

iPhone 軟體

目前提供的功能包括-

您需要 iPhone OS 3.0 以上版本的作業系統,才能夠使用。

至於在介面上,我覺得 UIKit 本身所提供的元件就已經很好用了,於是沒有做什麼花俏的設計。

Server 端程式

這個程式的資料來源來自於中央氣象局網站,不過,因為中央氣象局網站三不五時會改一個版本,氣象雲圖也往往在改版之後就換一個位置,所以,client 軟體不是直接去抓取資料,而是中間又透過一台 web server,這個 server 負責向中央氣象局抓取資料,並且轉換成方便供 client 端使用的資料。在抓完資料之後,會用 memcache 快取起來,所以多一點人用,反應速度就會比較快。

如此一來,就算中央氣象局改了資料,也只需要改 server 端的程式,而不需要再 App Store 上另外更新一個版本,而苦苦等候蘋果的審核程序。

這個專案所使用的 server 是 Google 的 App Engine,用的是其中的 python API 開發。其中最主要的是兩個檔案-

Objective-C API Box

在 iPhone 軟體的部份,基本上將使用者介面、與用來處理網路資料的部份分成了兩塊,所以,用來處理網路資料的部分,其實還可以繼續做其他用途,例如寫 Mac 版本的應用程式,或是 Dashboard widget 用的 widget plugin。不過目前還沒有這方面的實作。


編譯 iPhone 軟體

您需要 Mac OS X 10.5 以上版本的 Intel CPU 麥金塔電腦,以及 iPhone SDK 3.0 以上版本,才能夠編譯本專案的 iPhone client 端軟體。

建議直接使用 git 取出本專案的程式碼,因為本專案在 git 設定中加入了一些外部的 library,如果沒有這些 library,會無法成功編譯。請使用以下指令取得完整程式碼:

$ git clone git://github.com/zonble/tweather
$ cd tweather
$ git submodule init
$ git submodule update

接下來,只要進入 ClientAPIBOX->ObjectiveC->TWWeather 目錄,用 Xcode 開啟 TWWeather.xcodeproj,便可以開始編譯。

使用 Server 端程式

Server 端程式位在 APIServer 目錄下。

您需要 python 2.5 以上的環境,並且就您目前所使用的平台,下載 Google App Engine SDK。您可以使用本專案的基礎,另外製作其他的天氣程式,不過建議不要直接使用本專案目前使用的 API server 的網址,請將程式架設到其他的機器上,因為本專案使用的 API server,也很有可能在未來有所修改。

API 的使用方法,主要就是傳入你想要看哪一種資料(今明預報、一週預報),還有地區的代號,詳細資料請參見 Wiki 上的資料


給 iPhone 開發人員的建議

雖然 iPhone 上面有那麼多種的應用程式,但是最多的不外乎兩種:遊戲以及網路資料的 client 端。

就網路資料的 client 端來說,你可以看到 Facebook、Flickr、Google 與 Yahoo 的應用程式、所有的天氣軟體,甚至像電子書下載等,都是這種類型;也就是如何從網路上抓取資料,然後透過 native 的 iPhone UI 做流暢的呈現。這類型程式的開發,就可以區分成幾個部分-server 端的資料庫與 API 設計(XML/JSON)、Objective-C 對於網路資料的處理、iPhone 本身的 UI 設計。個人覺得目前寫得還算是精簡,希望對您撰寫這方面程式時,可以有所幫助。

另外,為了驗證資料的正確(或這麼說-快速檢查中央氣象局網頁是否改了版本),這個專案在抓取中央氣象局網頁的工具、App Engine 的部份、以及 Client 端的 API Box,都做了 unit test。如果您不清楚這些東西的 unit test 怎麼做,也不妨看一看。我知道很多人寫程式都沒在做 test,可是呢,在製作軟體時不能夠只注意在開發速度或是介面的眩目,要做一些基本功夫,才能夠保證軟體堅實的品質。

建議或詢問

請來信至 service {at} zonble {dot} net

因為蘋果的限制-開發者本身不能夠對自己的產品發表評論,所以,如果您在 App Store 上,透過發表評論發問,因為這個限制,我是沒有辦法在 App Store 上回應的。祈請見諒。

您也可以成為本程式在 Facebook 的 Fans,不過,我個人不知道成為 Fans 會有什麼好處 …。

FAQ

問:為什麼 iPhone 程式會限制 17 歲以上才可以使用?除了天氣之外,難道有什麼好料嗎?

答:這是因為 App Store 的一項限制造成的。因為這個程式裡頭,放了一個瀏覽器元件,用來開中央氣象局的網頁,而根據蘋果的想法,只要是用到了 web 元件,都有可能拿來看十八禁的內容,所以必須要加上這個年齡限制。

Made on a Mac