2012年4月24日 星期二

如何使用Google Map Api 找出附近的餐廳

這部分的功能是屬於Google Map Api 中的 Place 的功能,請參考以下網址

Place Library 介紹

範例

Api Reference

介紹裡面有Place Library的基本使用,打開範例,可以看到一個 Type 為store 的基本搜尋。

下面我們要來一步步介紹如何使用 Google Map Api 找出附近的餐廳。


  1. 我們要在地圖上畫一個圓,然後找出在這個圓裡面的餐廳。所以首先,我們要先找出圓心的經緯度,所以請按照  http://blog.soft.idv.tw/?p=1190 這個網址裡的方法一,在 google map上按右鍵選擇這裡有什麼,就可以找出經緯度。
  2. 請點選上面的範例,會進入一個網頁,將其程式碼 copy 下來,並在 22 行換上剛才的經緯度,並在 33 行 type : ['store'] 改成 keyword : 'food' ,儲存成另一個網頁,完成。

這個方法找出來的資料其實與在 google map 上鍵入 food 所找到的資料相比,手動鍵入的似乎加入了所有搜尋結果的點,而使用 Api 則只有前20個( 可參考上面Place Library 介紹)。



2012年3月18日 星期日

JUnit 與 TDD


  1. 什麼是TDD
    • TDD(測試驅動開發),是極限編程中提倡的開發方法,其開發流程為先寫測試碼,然後再寫實現的功能。在使用TDD的過程中,會將程式架構切割成多個小元件,便於將來debug與維護。並且在測試碼寫好之後,利用自動化測試也比較容易找到bug的位置,更多的介紹可以查看維基百科
  2. 什麼是Junit
    • 這是Java使用的開源單元測試框架,並且相容於許多常用的framework如structs, spring, gwt, gae, android等等。標準的JUnit能夠幫助邏輯層面跟JavaSE的部份做單元測試,而各個framework有其特殊的JUnit功能,可以用來測試個framework的特殊功能。

2012年3月14日 星期三

Apache Ant 簡介


  1. Apache Ant是什麼?
    • Ant 可以說是一種開源軟體,一種軟體工程的工具,這裡有它的網頁。它是用來協助使用者建立Java的專案,包括編譯、上傳、測試等等。使用者會在build.xml撰寫一些描述碼,並且利用簡短的指令執行這些描述碼,以達到do it once and only once的效果。
  2. 為什麼要使用Ant
    • Ant 的使用,是為了要替programmer處理一些開發且瑣碎的事務,讓programmer可以集中心力在其他較重要的部份。例如當要發展一個比較大型的Project時,很可能,我們需要將Project裡面不同的部份,分別部署到不同的平台上面,此時若是利用Ant,可以解決分開部署到多個平台上的繁雜步驟。ant有一些功能使用shell script也可以做到,但是因為ant是用java寫的,是跨平台的,並且內建在一些熱門的IDE,如eclipse,這一點又比shell script好一些。
  3. 常用到的功能
    1. JavaSE
    2. 在GAE上使用Ant
    3. 在GWT上使用Ant
    4. Android
    5. 上傳FTP
    6. 使用JUnit
    7. svngit (或是直接將指令包在Ant裡面)。

2012年3月12日 星期一

GAE for Java 簡介


  1. 什麼是GAE
    • GAE全名Google App Engine,是Google提供的一個PaaS形式的雲端服務,它可以執行使用者上傳的程式(都是屬於WebService的程式)。在GAE裡面所使用的程式語言有三種,Python,Java與Go(google 自行開發的程式語言),而後面所講的都是屬於Java的部份。
  2. 它的優點
    1. 它提供了許多已經建立好的工具,例如流量監控、Logs、IP阻擋、Cron Jobs等等。
    2. 一開始是免費的。
    3. 使用前必須先建立Google帳戶並用手機號碼認證,認證完可以免費建立10個Application。
    4. 除了預設的domain以外,可以使用其他你所擁有的domain(需搭配Google Apps)。
    5. 可以調用google的認證API來認證google帳戶。
    6. 不必煩惱網路(中國地區除外)、電源等基礎設施。
  3. 它的缺點
    1. 免費的Quota不多,且超過免費的配額之後收費並不便宜(計費資訊)。
    2. 在資料的儲存上與傳統的RDBMS並不相同,如果data schema較為複雜,資料備份以及平台轉移較為不易。
    3. 如果使用一些GAE上面特有的Service一樣不利於平台轉移。
    4. 沒有較為方便的客服機制。
    5. 不能使用file system, socket, thread。
    6. 欲使用JavaMail時,不須指定from and password,因為這個部份是綁定的,也就是你只能使用建立該Application時的gmail來寄信,並且不能收信。
  4. 其他特色
    1. App Engine Datastore 可以選擇Master/Slave Datastore與High Replication兩種,建議以High Replication 為優先選擇。 
    2. 除了App Engine Datastore 以外,還有兩種儲存方式,Google Cloud SQL與Google Cloud Storage。這兩種都是較新,且在實驗階段的功能,第一種讓GAE可以執行一般的SQL語法,第二種提供存取檔案的功能。
    3. 並非所有的JavaSE的功能皆有提供,詳細情形請看 JRE Classes White List
    4. 有些Java 的第三方工具可以使用,有些不行,詳細請看 WillItPlayInJava 。
    5. SSL的功能只支援預設的domain(*.appspot.com)。

2012年3月11日 星期日

GWT 介紹

1. 這是什麼
  • GWT是一種javascript framework。在這個framework裡面,我們使用java 撰寫 server 端與 client 端 (Javascript)的程式碼,並且利用GWT-Compiler 將屬於client 端的程式碼 compile 成 Javascript 程式碼。 
2. 優點與缺點
  • 優點 
    • 利用Java 物件導向的特性,結構化Javascript 的程式。 
    • 利用GWT開發Ajax較為方便。 
    • GWT-Compiler 會針對不同的瀏覽器編譯出不同的javascript,當瀏覽器瀏覽該頁面時會載入適合該瀏覽器的javascript(實務上在開發的同時還是要檢查不同瀏覽器的效果)。 
      • 根據經驗,ie與其他瀏覽器在使用eval時結果會有所不同,還有在使用巢狀panel時,ui也會有所不同。
    • GWT 可以與其他不同的javascript library(如jquery)搭配使用。 
    • 預防XSS (cross-site script)與XSRF(cross-site request forgery)攻擊較為容易。
    • 便於建立client端的i18n。 
  • 缺點 
    • 一開始載入頁面的時候,需要較長的載入時間。所以如果一個頁面所需要的javascript功能較少,則使用native javascript較為恰當。 
    • Compile後的javascript 即使是使用pretty style, 也是不易trace。也就是在deploy之後,還需要額外保存compile 前的 source code(java code)。 

3. 有哪些使用GWT開發的網站
4. 如何開始 

5. 如何與其他js library搭配

6. 與java的相容性
  • GWT 並不是完全的與java相容,尤其是在javascript與java語言特性的差異上,詳情請參考官網的相容性介紹

2012年3月4日 星期日

(翻譯)Chome 版本的憤怒鳥現在使用了Web Audio Api

原文連結

翻譯 :

    上周憤怒鳥的chrome版本,使用Web Audio API更新了所有遊戲內的音效,讓所有在chrome上的使用者不需使用任何外掛,就能擁有完整的憤怒鳥體驗。Web Audio API支援了多種不同的使用案例,包括了遊戲中高品質還有低延遲的需求。而其他支援Web Audio API的瀏覽器的使用者,將透過Flash 或是 Html5聽見這些聲音。

    這種跨瀏覽器音效的神奇魔法是怎麼運作的 ? 你可能曾經聽過,憤怒鳥有相當多的部分可能使用了跨平台的開源程式庫 - PlayN。當在網頁平台,PlayN高度仰類Google Web Toolkit 與 gwt - voices 來提供最佳的跨瀏覽器網頁體驗與音效體驗給使用者。

    其中, gwt-voices 負責為遊戲音效選擇最適當的音效API。如果你想要聽聽其他Audio API的效果,你可以試著用 Web Audio APIFlashHTML5 Audio 和 native audio 來訪問 Audio API。你的進展將會因為瀏覽器、平台和你安裝的插件而產生巨大的改變。如果你所需要的Audio API在你的環境裡運作並不正常,gwt-voice也會為你準備一個最好的備案。

    想要了解更多?請參考 Web Audio API tutorial ,還有,不要讓那些豬囂張太久。