Jasonmel Online

Jasonmel Blog - Page 64

合歡山

2009/11/21 (Sat.) ~ 22 (Sun.)

週末的合歡山行,雖然很精采,不過這週實在沒什麼時間好好整理成文字,就姑且以幾張照片記錄這兩天的旅程。參與人員:starryalley, waterlemon, 阿貞, 豪哥, 尚達和我。

第一站,清境農場。躺在一整片綠油油的山坡上,享受迎面而來的冬季日光,十分舒暢。第一站,清境農場。躺在一整片綠油油的山坡上,享受迎面而來的冬季日光,十分舒暢。

晚上,翠峰的 2009 Star Party ,集結了數十架大口徑天文望遠鏡,數百頂帳篷,以及滿天揮舞的綠光雷色。再次目睹好久沒看到的滿天星斗,無憾矣!晚上,翠峰的 2009 Star Party,集結了數十架大口徑天文望遠鏡,數百頂帳篷,以及滿天揮舞的綠光雷色。再次目睹好久沒看到的滿天星斗,無憾矣!

第二次登上合歡主峰,這實在是很適合初學者的一座百岳阿!第二次登上合歡主峰,這實在是很適合初學者的一座百岳阿!

這次行程利用到相當多智慧型手機的功能。首先,Google Latitude 讓 starryalley 和我隨時可以知道對方的位置。Google Sky Map 讓夜晚的認星活動更為方便 (雖然我的 Magic 出了點小問題造成方位錯亂)。從 GPS 狀態可以知道所在地的經緯度座標以及海拔等資訊。全程 plurk 實況轉噗,就能在深山的大草原上,或是在滿天星斗的夜空下,即時將喜悅分享給國內外的好噗友們。智慧型手機的應用真是太方便有趣了,可以想見,未來大概身邊有電或沒電的工具都能整合在這個小盒子中吧。這次行程利用到相當多智慧型手機的功能。首先,Google Latitude 讓 starryalley 和我隨時可以知道對方的位置。Google Sky Map 讓夜晚的認星活動更為方便 (雖然我的 Magic 出了點小問題造成方位錯亂)。從 GPS 狀態可以知道所在地的經緯度座標以及海拔等資訊。全程 plurk 實況轉噗,就能在深山的大草原上,或是在滿天星斗的夜空下,即時將喜悅分享給國內外的好噗友們。智慧型手機的應用真是太方便有趣了,可以想見,未來大概身邊有電或沒電的工具都能整合在這個小盒子中吧。

Garmin nuMaps

2009/11/03 (Tue.) ~ 06 (Fri.)

經過一年多的煎熬,我的職場處女作 Garmin nüMaps,以及最棒的團隊所打造出最棒的台灣圖資,終於在週二的記者會宣告之下正式對外上線了!

去年八月進公司開始,從 study 地圖座標投影及蒐集線上地圖相關技術開始,試著將公司資料庫內的數位化圖資繪成一張張圖檔,再慢慢刻出自己的 JavaScript API,一套簡單的網頁地圖瀏覽系統就此誕生,至此一共花了三個月。這一階段遇到的主要問題,就是 tile 檔案數目過多,以至於在部分 file system 會發生超過 i-node 上限的問題,而在部分 file system 則會有同一目錄內檔案數目過多造成存取速度銳減的情形,也因此花了一些功夫了解各 file system 的特性,之後在 file system 的選擇以及檔案的結構配置上也就比較有概念。

地圖呈現之歷史畫面地圖呈現之歷史畫面

2008 年度報告時的模樣2008 年度報告時的模樣

秉持著「先求有再求好」的精神,有了基礎建設後,接下來就開始進行美化的工作。除了 JavaScript API 演算法及功能上的提升 (包含處理非常煩人的 cross-browser issue),也研讀了幾篇 labeling algorithm 相關的學術論文,使畫面的呈現盡可能地絢麗又不失舒適,並匯入更多種類的資料讓畫面內容盡可能豐富詳盡。至此,回報系統的雛形大致完成,又三個月過去了。

2009 年 4 月報告時的模樣2009 年 4 月報告時的模樣

為了讓使用者能快速找到想尋找的點位,「搜尋」的功能刻不容緩。在稍微深入了解搜尋引擎的運作後才發現,中文搜尋首先面對的三大難題就是「斷詞」、「新詞」及「簡稱」等問題。「斷詞」部分舉個眾所皆知的例子來說,「下雨天留客天天留我不留」就有好幾種斷法,這將造成建立 index 上的模稜兩可。由於中文是活的語言,「新詞」的出現在所難免。常見的新詞大致可歸類為特殊領域新詞 (「非同步傳輸模式」)、時勢性新詞 (「一國兩制」)、衍生性新詞 (「數位化」)、合併性新詞 (「砍掉重練」)、火星新詞 (「殺很大殺不用錢」)、名字新詞 (「瑤瑤」) 等,除非有個字典不斷自動擴充各種新詞,不然一旦遇到了系統也無法解讀。「簡稱」的問題就更有趣了,中文的簡稱向來沒有一個制式化的標準,同樣是兩個詞的合併,有兩個頭合併的簡稱 (「節約能源」簡稱「節能」),有兩個尾合併的簡稱 (「香港總督」簡稱「港督」),有頭和尾的簡稱 (「外交部長」簡稱「外長」),也有頭頭尾的簡稱 (「安全理事會」簡稱「安理會」);你以為這樣就結束了嗎?同樣一個詞在台灣和中國大陸有著不同的簡稱 (「清華大學」在台灣叫「清大」而在中國大陸叫「清華」),還有那種順序顛倒的簡稱 (「第一核能發電廠」簡稱「核一廠」),還有簡稱再簡稱的 case (「冬季奧林匹克運動會」簡稱「冬季奧運會」再簡稱「冬季奧運」再簡稱「冬奧會」,更不用說用數字來簡稱的詞 (「通郵、通商、通航」簡稱「三通」)。也就是說,一旦使用者輸入這類「斷詞」政治不正確、系統沒見過的「新詞」或是毫無規則可言的「簡稱」字眼,搜尋結果的正確性就可想而知了。而現有的解法大致可分為兩大類:character-based 和 word-based。Character-based 的精神在於不管三七二十一,來幾個字切幾刀,亂槍打鳥只要子彈 (儲存空間) 夠多總是能打中的。而 word-based 則大致可以使用自動統計學習、手動建立字典、以及語意分析等方式來較為精確的切出當中的關鍵字,然而學習來源以及固有字彙的多寡仍然深深影響切割後的結果。因為相關論文表示前者的正確率並不亞於後者,再加上實作起來較為直覺簡單 (其實主因是本人智商不高),所以最後採用 character-based 的作法,加入一些客製化的變形,一個能夠同時搜尋地址、經緯度、POI 點位的地理資訊搜尋引擎就此誕生。突然發現好像打太多了...。總之,和 JavaScript API, labeling algorithm 有花俏的畫面和功能相較起來,同樣花了這麼多時間,結果呈現在使用者面前卻只有兩個平淡無奇的長方形:一個 text box 和一個 submit button,想想其實還蠻辛酸的。

一個搜尋欄位和一個按鈕的背後,隱藏著無數不為人之的奮鬥過程一個搜尋欄位和一個按鈕的背後,隱藏著無數不為人之的奮鬥過程

為了滿足搜尋所需要的龐大 computation resource,同時解決未來上線時將會遭遇到的 bandwidth (以及 response time), storage, stability and scalability, security 以及 cost 等相互牽制的問題,為這套系統找個合適的居所也得花一番心思才行。根據前人的經驗,通通自己來要不就是砸大錢建置硬體設備及維護管理,要不就是等著被蜂湧而至的使用者打爆,也因此 outsourcing 似乎是較為可行的方式。經過 survey 發現多種方案,包含 shared hosting, cloud hosting, virtual private server (VPS), dedicated hosting, content delivery networks (CDN), Amazon EC2/S3, Google App Engine 等,就 C/P 值來說,Google 似乎是俗 (甚至免費) 又大碗的不二選擇,就它了!而為了 Python 支援度較高的 Google App Engine,也在惡補之下將 Python 這個 fucking damn fantastic 的語言學了起來,並應用在許多邪惡的事上 (糟糕!不小心說溜了嘴...),真是一舉數得啊!至此,系統悄悄在公司的防火牆外露臉。

歷經了小組測試、部門測試,以至於公司發動測試小組進行多方面測試,到後來動員全公司的測試,收到許多熱心的回饋和指教,在效能及功能上也做了大幅度的調整和提昇。終於,在 mobile01 第一篇新地圖討論串的帶動下,系統正式在所有使用者面前曝光。

目前 Garmin nuMaps 線上勘誤系統 的模樣目前 Garmin nuMaps 線上勘誤系統的模樣

系統上線一個禮拜來,除了 Google 例行性維護好死不死剛好就在發佈後的隔天,造成系統無法使用一個多小時外,其餘時間在 Google App Engine 及 Akamai 兩朵大雲的支撐下,運作上都還正常。

一個禮拜來,也得到許多來自四面八方的正反面迴響,箇中的酸甜苦辣,實在難以用言語表達,大概只有自己最清楚。無論如何,這算是自己職場上一個好的開始。期許自己在未來的路上,能夠繼續保持這一年來邊作、邊學、邊玩的心態,在成長的同時,除了盡可能保有正常的生活步調外,也能對社會有所貢獻。

P.S. 倘若各位看倌發現任何地圖內容上的問題,方便的話也煩請協助撥冗到 Garmin nuMaps 線上勘誤系統上進行回報喔 (需先經過簡單的程序建立 myGarmin 帳號並登入)!Garmin GIS Taiwan Map Team 感謝您!

毛毛蟲皮膚炎

2009/10/20 (Tue.)

繼研究所有記憶以來的第一次皮膚過敏,又一次很類似癢到整夜睡不著的皮膚發疹過敏。有了上次的經驗,這次比較知道要忍著不去抓它,範圍才不會繼續擴大。早上請假去看鄉民推薦的國泰醫院許哲豪醫師,醫師用放大鏡看了一下,再依據只有手部、頸部等暴露在外的部位有起疹,並且前一天有到郊外的線索,加上目前正值季節變換時期,診斷為「毛毛蟲皮膚炎」。一共開了三支拭皮爽(Desoximetasone)軟膏,三天份宜胃錠(Iwell)、康速龍錠(Prednisolone),五天份布克芬錠(Buclizine)、驅異樂膜衣錠(Levocetirizine)。看來以後要注意避開跟毛毛蟲有關的東西了。

Google 會怎麼做(Whate Would Google Do)

2009/10/01 (Thu.)

因緣際會下,某 cartographer 大姊頭突然拿了一本《Google 會怎麼做(Whate Would Google Do)》來借我,實在有點莫名其妙(或許是因為我用程式做了一些邪惡的事情,讓他省下很多麻煩的工作吧...XD)。不過既然借了,就看一下吧!光看書名,原本以為這又是一本坊間充斥著的「第一次 Google 就上手」系列叢書,沒想到仔細一翻才發現這本不一樣。全書以 Google 為主要範例,輔以諸多正反面企業作為佐證,說明在這個充滿連結的網路時代企業所需具備的新思維。在這個鄉民導向的世代中,開放與溝通儼然成為大多數產業生存的利基。一旦坦誠開放,讓鄉民們有歸屬感,鄉民將樂於參與討論、協助構思、甚至動手參與除錯與開發。也就是說,這會是一個社群共有、共享、共治的民主空間。企業提供連結鄉民的平台,讓鄉民融入這塊屬於大家的地盤,之後的內容充實與維護、口耳相傳的行銷、以及功能構思與開發,則是身處其中的鄉民們共同的切身之痛。企業不再需要 PM, QA, marketing,因為每個鄉民都扮演著 PM, QA, marketing 的角色,更甚者會有高手參與 RD 的開發。(個人題外話,拜 Google 之賜,MIS 的角色也能以極廉價到近乎免費的 Google App Engine 所取代。)要得到以上互惠的效果,關鍵即在於透明、信任之下的開放。在這樣的前提下,鄉民主動或被動所貢獻出來的知識,平台群聚鄉民的吸引力,以及鄉民對平台的依賴,將造就出平台的價值。就連三個臭皮匠都能勝過一個諸葛亮,更何況上千萬鄉民,豈不勝過閉門造車的封閉企業?當然,不只企業能從開放當中獲利,作者在本書後半段也提出各行各業都將由於開放的思維而彼此獲利。媒體業、廣告業、零售業、公用事業、製造業、服務業、金融投資業、社會公義與公共機構,一旦拆毀封閉帶來的資訊不對稱,被哄抬的價格將趨於合理,資訊的流通將汰除弱伍不適用的資訊,而保留下經過千錘百鍊的較為正確的資訊,甚至資訊與資訊的碰撞,更能激發出無限爆炸性的資訊成長。在這樣架構下獲利的,不是別人,正是廣大的鄉民,以及思維開放的企業。至於封閉企業,除非有 Apple 這樣引領潮流的本能,不然是會逐漸受到唾棄與淡忘的。畢竟,人類是群居的動物,單打獨鬥的時代已經過去,開放的平等互助思維才是彼此賴以為生的最佳利器。