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處理器的故事也滿值得看看的。

2009-01-12

Android: An Overview

最近開始看了一些有關Android的材料,希望能在理頭找到一些研究的相關材料。從2007年底推出到現在,也有相當時日了,網路上介紹架構的文章並不難找,我大致上從mmdays.com的Android 淺探(一)Android 淺探(二)這兩篇入手去看;這兩篇出步說明了Google另外實作一個變形的Java VM, Dalvik的緣故,以及底層爲什麼選擇了Linux.

大致上整理出幾項要點:
  1. 根據統計,Java是現在最常被使用的程式語言,使用Java VM可以方便程式人員進入開發各種applications. (see also: TIOBE Programming Community Index)
  2. VM該提供哪些系統函式庫,在標準的Java VM裡,控制權掌握在SUN手上。
  3. Dalvik針對執行時所需的memory footprint作最佳化。
  4. Linux可方便硬體廠商開發驅動,但opensource並不見得與公司利益相符,所以需要修該原先的kernel把device driver拉到userspace去執行。
  5. 針對kernel層的IPC, Power Management, RAM console等作了最佳化。
大致上看來Android提出的架構跟framework比起其他像是openmoko或OpenMax都來得完整,往後如果有其他聯盟想提類似的open mobile platform很難不把這些也都列入考量。(採用RIA, Rich Interactivce Application, 而不考量general purposed的架構像是 JavaFX, Flex等可能是另一種思考方向。)

相關值得看看的連結還有:

2009-01-08

[轉錄] 回收塑膠袋 省錢又環保

回收塑膠袋 省錢又環保

來源:http://tw.news.yahoo.com/article/url/d/a/080920/78/168vk.html
自由 更新日期:2008/09/20 04:09

〔記者林秀姿/台北報導〕棄用的塑膠袋也可以回收變黃金,環保局昨天再次針對廢塑膠袋回收加強宣導,民眾只要把不用的塑膠袋簡單清潔後,即可交由北市環保局清潔隊進行資源回收。

環保局科長蘇芳慧表示,民眾做回收時,塑膠袋切勿混雜垃圾、回收物或油脂等固體雜物,若曾盛裝豆漿、飲料、蔬果等垃圾袋,只要稍加沖洗,把水分倒掉瀝淨就可回收,而且不分顏色,各類塑膠袋都可回收,不過,蘇芳慧提醒,吸管或金屬光澤等複合材質的食品包裝塑膠袋,如餅乾、泡麵與清潔補充包的包裝塑膠袋,則不能當作塑膠袋回收。

環保局統計,北市自89年7月開始回收塑膠袋後,目前每月平均回收量已達160公噸,而回收的廢棄塑膠袋則變賣給回收工廠做成塑膠粒,再製成塑膠花盆、黑色塑膠袋等再生品,回收塑膠袋既環保又可節省民眾垃圾費支出。

2006-09-16

3M無痕防水系列

家裡的毛巾架因為年代久遠掉下來了,先前固定的方式是在磁磚牆上鑽孔、旋入螺絲釘;久了磁磚壁的裂縫漸漸擴大,螺絲釘自然就咬不住而脫落。剛好想說3M無痕系列裡頭有個浴室防水用的,結果搜尋了一下:有掛鉤牙、刷架、置物架,就是偏偏沒有毛巾架這類東西(我需要的毛巾架大概要有兩呎以上的長度,不是那種只掛一條毛巾的)。而且意外地搜尋到這篇blog「3M無痕掛鉤」 ,原來浴室裡的膠條要先用吹風機稍微加熱才黏得牢!

那篇blog的作者還另外舉了很多公司客服的例子,看完覺得現在消費者都滿多聞的(當然不是我這種);不過真的利害的除了發現問題,應該是那家公司的主管,在有限資源下解決這麼多瑣碎的問題。