2012-09-13

打造Google Maps

今天看到則有趣的報導,"How Google Builds Its Maps",裡頭訪問了Google Maps的資深產品經理,Manik Gupta;訪談中沒提及內部資訊架構,內容主要包括資料處理的困難,以及如何運用電腦視覺技術的進步,在地圖上獲取更多資訊。列一下看到的重點:

  • 在手機時代販售廣告,Google發現使用者所在位置將與搜尋時使用的關鍵字同等重要。
  • 地圖可視為線上世界跟真實世界的橋樑,最佳情況是將所有真實世界的資訊1:1地標註在線上地圖系統中。
  • Google Maps除了一開始外購的基本衛星圖,更多資訊來自於街景車;一方面可以校正路線與衛星圖的偏差,另一方面可利用電腦視覺將交通號誌等標示擷取出來。未來希望可以達到geo-understanding。
  • 針對路線與衛星圖的校正問題,Google花費了非常多的人力!訪談中Nick Volmar示範了如何操作,這確實不是一般沒有雄厚資本的公司能辦到的。
  • 另外Google也利用了廣大的使用群產生的自訂地圖,擷取使用者的地理標註, 豐富 Google Maps的資訊。

最後一點,我認為現在的資訊量增長太快,光靠單一公司或政府單位去維護絕對不夠,想要保持資訊的正確性,最好的方式就是開放給大家使用,把錯誤回報或新增資訊的功能做好。相對於開發團隊間的知識分享也是,專案系統藍圖或各類領域知識,最好都能放到內部資訊平台,方便大家檢視與提供意見。

如果對於打造一個像Google Maps的系統有興趣的話,我倒覺得OpenGeoOpen Geospatial Consortium有不少東西可以看。

2012-09-11

初探Google Web Toolkit (GWT)

一直很佩服能夠在JavaScript海中優游自得,把web前端搞得又漂亮,程式碼又整齊的人!可惜更多時候看到的是苦命的前端工程師,在一堆前端函式庫裡,可能特定版本有bug,或不同函式庫間互相衝突,加上長官跟客戶不斷要求新功能... 在混亂的程式碼中剪剪貼貼,東試西試;一整個變成抓不到root cause的苦差事。

這幾天稍微認識了一下GWT (Google Web Toolkit),簡單來說目的就是希望能減輕前端工程師的負擔,讓Javascript程式碼能夠更簡潔,更結構化;以目前常見的趨勢大概有:

  1. 使用JavaScript函式庫,工程師仍然寫JavaScript程式碼;最有名的當然是jQuery,其他像是ZK/Ext JS/YUI則包括CSS的部分。
  2. 使用另一種語言,透過新的語言強迫程式碼更加模組化,最後再編譯成標準的JavaScript;GWT就屬於此類。
  3. 使用web MVC frameworks提供的tag libraries 。

原則上GWT可以讓工程師寫Java程式碼,最後編譯成JavaScript。基本上Dart也是類似的目的;不過就程式碼編譯的角度來看,Dart提供了自己的front-end,Dart language,不再使用Java,除此還:

  1. 提供自有的binary format,可以在Dart VM上直接執行,省去解析JavaScript程式碼的過程。
  2. 同時可以編寫client side跟server side的程式。

目前看來最大的問題在於如何結合既有JavaScript函式庫。

See also:
  1. GWT: Pros and Cons
  2. Google Web Toolkit: GWT, Closure, NaCl, Dart & JS
  3. Dart: A Language for Structured Web Programming

CSS也是前端工程師常要遇到的領域,同樣也不少新的工具幫忙寫出更有結構的CSS。
  1. Sass
  2. Compass
對JavaScript有熱愛的可以順手做一下這個小測驗:JavaScript Scope Quiz

nVIDIA Tegra 3

這個月(2012.9)一堆平板陸續上市,我自己比較關注的包括iPad mini, Nexus 7, Kindle Fire HD, 跟MediaPad 7 Lite;主要原因在於:目前10吋的平板,單手拿起來當電子書讀,手腕還是很快就支撐不住,多數時候還是得依賴支架放在桌上使用。

今天湊巧看到一則新聞,有關nVIDIA對於Amazon宣稱Kindle Fire HD用的TI OMAP 4470可以秒殺Tegra 3的駁斥,感覺挺有意思的。長期以來,手機跟平板這塊最常聽到的處理器廠商應該是Qualcomm,其次才是nVIDIA跟TI,Apple跟Samsung也滿常聽到的,不過多是用在自家產品(華為海思也有類似的傾向),翻了一下wikipedia才知道ST-Erricson也有出這類SoC產品。

對於nVIDIA的印象大多是圖形處理器很強,軟體驅動程式寫得很好,一直不太清楚在mobile端產品的弱項在哪,趁這機會Google了一下大致上有兩點:

  1. BSP (Board Support Package)較弱。
  2. 無線通訊方面大多已經是Qualcomm的專利。
至於這次的處理器之爭,Tegra 3是qual-core 1.2GHz,OMAP 4470是dual-core 1.5GHz,新聞裡有一段:
This is usually TI's strategy with their chips - they use an older core, but they raise the clock speed.
此外,Tegra 3除了輸在時脈上,記憶體頻寬也是個問題:
As for the memory bandwidth, one of the biggest drawbacks of the Tegra 3 is that it still doesn’t support dual-channel memory, which means memory bandwidth is a bottleneck in some cases.
看來nVIDIA想要憑藉圖形晶片的優勢,進攻mobile市場逼退PowerVR,還是很辛苦的。

See also:


先前看過一系列關於x86跟ARM處理器的故事也滿值得看看的。