2012年4月9日 星期一

RMaps 離線地圖 - 批次匯入個人 POI、KML 檔案

rmaps_with_poi


有在旅行的朋友,對於地圖的使用應該不陌生,然而 Google Maps 提供的服務是需要在網路的情況下使用,到了另一個國度後,便需要尋找免費的 wifi 服務才能使用。有十分好心的 Android app 開發者免費推出這款離線地圖軟體 - RMaps!起初我只是拿來存存台灣地圖觀看路線,而後使用上發現自助旅行更是需要!雖然此軟體介面上可以透過點選地圖任一點新增 POI 資訊,但這樣操作實在太慢,手機是一個適合閱讀的環境,還不太算適合書寫的環境。


my_places


這時候,建議先用用 Google Maps 之 My Places 服務,中文翻成 "我的地點",可以建立自己的地圖,並且透過 Google Maps 的操作介面新增所需要的景點位置,甚至景點筆記等等的,由於是在 PC 瀏覽器上頭操作,工作效率++


my_places_export


新增完景點後,點選完成,就會看到上述的樣貌,此時就可以看到 KML 字樣,點選它就會把此地圖所有 POI 資訊匯出成一個 KML 檔案,接著傳入手機記憶卡中,僅需在 RMaps 介面操作就可以把這些 POI 資訊匯入手機觀看啦


rmaps_01 rmaps_02 rmaps_03 rmaps_04


成果:


rmaps_with_poi


如此一來,在當地不熟時,可以僅開啟 GPS 定位(智慧手機多少有支援可查 spec 確認,且是免費的),接著就可以查看自己與景點的相對位置,實在是非常讚的自助旅行輔助軟體。


多提一點的是 GPS 定位僅供參考,如果周邊都是高樓大廈,那定位非常容易會偏掉,建議還是以當下看到的馬路名稱作簡單的人眼定位吧 :D 至於 RMaps 的離線地圖製作,可以搜尋 Mobile Atlas Creator 關鍵字,或是參考此篇簡略介紹 使用 Mobile Atlas Creator 製作台灣離線地圖 Zoom Level 0-17,最新版的 Mobile Atlas Creator 已經移除 Google Maps 來源,若真的需要可以去找找舊版(如 Mobile Atlas Creator 1.8 版),而旅遊景點通常不會太大(港澳約700MB),再加上現在手機記憶卡都很便宜了(16GB microSD大概 500~600元),因此用起來並不會不方便。


2012年4月8日 星期日

[旅遊] 香港、澳門 4天3夜 自由行、機加酒費用比較

大三巴 星光大道


今年剛好有一些特休假可以規劃,原先看著網路上七八千便宜的機加酒行程而動心(未稅價),等到搞清楚之後,才發現花的錢越來越多了,這一切果然都是商人的陰謀,我中計了 XD


以下是我這趟行程的大項目的費用表(若不需辦護照可以扣 3600 台幣;台胞證或幾個月台灣可以免港簽後,則又可以扣 600 台幣,兩人別忘了 x2 喔):


澳進港出4天3夜2人價目


港澳旅遊需準備的基本項目:



  1. 來回機票 (桃園<->香港/澳門,來回票約 8500~10000 元)

  2. 香港簽證 (電子簽證,一人 600 元)

  3. 酒店住宿

  4. 地鐵船票 (港澳船票、八達通卡、機場快線、景點覽車)


如果你跟我一樣是第一次準備自由行,那首先要搞懂的是"機加酒"的方案,所謂的機加酒就是機票加酒店的方案,且機票又有分未稅和含稅的,整體上全部要花的錢就叫作加過稅的,如機場稅、兵險稅、燃料稅等,而去香港的稅大概 2300 ~ 2600 左右,只要機票上沒標記加稅,那大概就是要再加個 2600 左右吧。所以,一開始吸引我注意的台幣八千塊三天兩夜的香港自由行,事實上加完稅就是一萬一了!


除了機票外,還有個東西叫作簽證,進入香港需要簽證,而旅行社辦理簽證的費用大多是一人 600 元的價錢,網路上可以找到代辦 290~300 元的價碼。但辦理簽證是需要護照影本的,基於擔心隱私問題,我想這次就給旅行社賺一下吧 XD 簽證主要是用在進出香港用的,目前進出香港還是需要簽證的(據說有再慢慢往免簽進行),進出兩次就是要申請一次簽證,如果你是先飛香港,再從香港搭船到澳門在返香港,再從香港回台灣的話,那等於進出香港兩次,慶幸的電子簽證可以用兩次,有問題還是播通電話問一下旅行社吧!


搞定機票、簽證後,就是安排住宿,好的旅舍跟差的旅舍除了價錢外,也會影響旅遊的心情。專業的背包客通常都會找很精簡的旅舍,達到更佳金錢效率,由於我不怎專業,就還是用簡單的方式(花錢)來解決 :P 說真的,原先看到機加酒時,覺得四天三夜收 16k 很貴,自作聰明地把 16k - 8k (來回機票) = 9k 當作住宿的錢,覺得三晚收 9k 很貴,更特別是兩人去等於三晚被收 18k,一晚住 6k。但當我全盤了解後,才發現在背包客網站上寫的那一句話:


「自由行不見得比機加酒便宜,但完成這一切是一種成就感」


是的,搞清楚後,才發現這次這種臨時起意的自由行真的被機加酒方案打到趴下來 XD 可能辛苦安排規劃後,結果才小賺甚至花的還比機加酒方案多,並且有些機加酒還有旅遊保險呢 (所幸現在刷信用卡時,大多就有旅遊保險功能) 總之,如果你不想花時間去構思從頭打造的自由行,那就訂機加酒方案吧 :D 基本上是不太會吃虧的,可以住還不錯的酒店、送旅遊交通費,如地鐵一日卡、船票和某個景點的入場券等。


如此一來,就大概可抓出個費用大概,僅需再加一些吃吃喝喝和購物價錢,應該就差不多囉。


一些經驗分享:



  • 香港機場快線旅遊套票可以連續3天內無限次乘搭港鐵、輕鐵及港鐵巴士,但是票價 300 港幣 - 機場快線實際搭乘費用 - 押金 50後,所剩的費用可能三天都還花不完,這時候就可以不用使用這種旅遊票。另外機場快線有優惠價,只要 2~4 人同行,可以在櫃檯買到優惠的價錢喔,例如香港島到香港機場,販賣機的兩人要價 HK200,但去櫃檯買 2 人同行票,只需 HK 160,印象 3 or 4 人同行會更便宜,所以大膽的人可以拉旁邊不認識的一起買。

  • 澳門有不少大型酒店都有免費巴士可以穿梭氹仔跟澳門半島,但實際上從澳門機場出發的接駁車並沒有很多家,因為澳門比較熱門的是在港口,從澳門半島的港澳碼頭跟氹仔臨時碼頭處,才會有發車頻繁的酒店接駁車,建議搭飛機進澳門的,先搭威尼斯人酒店接駁車進威尼斯人酒店(東側),接著穿越賭場後,可到達西側搭乘威尼斯人酒店接駁車去澳門半島的港澳碼頭,在港澳碼頭再轉搭其他酒店接駁車出去,除了可以順便逛一下威尼斯人酒店外,從港澳碼頭發車的接駁車頻率高較省時

  • 澳門有賭場的酒店都有提供免費的行李寄掛服務,例如下飛機後想去逛逛官也街,那可以先把行李寄放在威尼斯人酒店,接著從酒店西側步行去官也街或其他地方閒晃;在港澳碼頭搭車去其他間澳門半島的酒店(例如永利),可以閒逛後等到要從港澳碼頭往香港時,才去該酒店領回,並順便搭接駁車到碼頭。據說擺放很多天都沒關係的 XD

  • 到澳門旅遊時,可以先換港幣(台灣的銀行提供澳門幣/葡幣兌換的選擇不多),於當地機場(匯率較差,大概 100:101 )或是港澳碼頭(100:103)、議事亭前地(100:102.9)換錢,如果行程是從澳門機場去澳門半島的話,可以先搭威尼斯人酒店接駁車到威尼斯人酒店,再轉接駁車到港澳碼頭,這時就可以在港澳碼頭一樓大廳換錢。除此之外,在澳門要去香港時,可以在港澳碼頭再換回成港幣,十分便利

  • 進澳門或香港時,都需要填入境表。進澳門我很懶,直接用中文敘述也是 pass 的啦 XD 擔心被耽誤的,可以都用英文敘述;香港的話,當下比較勤勞一點,就寫英文啦。這些表格可以在搭飛機或搭船時跟空姐、服務人員領取。從澳門搭船進香港時,並不用掃描行李,幾乎等於搭客運那些步驟而已,所以在開船前 15 分鐘才買完票,還是搭的上的啦,但還是早點去比較好

  • 澳門跟香港用的插頭跟台灣不一樣,可以買萬用插頭或是跟住宿的旅館借萬用插頭來使用。別忘了電壓是 220V 的,大多 3C 充電器的 INPUT 都應該允許 100~240 V 的,可以留意一下

  • 規劃自由行最好半年前開始慢慢規劃,接著提早四個月開始訂機票,這時可以拿到優惠價,此例港澳早去晚歸來回機票可拿到 8500 價錢,約便宜1500元,接著提早兩三個月訂住宿的酒店或民宿也會比較便宜,最後則是申請簽證接著一兩個月前開始申請港簽,或是留意簽證的時效要能涵蓋旅程。上述的酒店和簽證都是需要護照的,須要先把護照辦妥,可以請旅行社代辦,價碼大概都 1800 附近,需七個工作天左右,機票僅需羅馬拼音跟護照上寫的一樣即可,因此若護照過期要重辦的話,剛好訂機票是沒問題的,但是酒店跟港簽是必須等新護照才能進行,這時若有不錯的民宿也能考慮一下,民宿大多不需護照資訊就能訂房,但入住時通常都還是會檢查一下

  • 返台後,手上所剩的港幣想要換回台幣的話,雖然在網路上可以查到匯率較好的銀行,但是不少間銀行換錢還是要收手續費 100 元台幣的,並且只收港幣 100 元以上的面額。這時候可以去台灣銀行換錢,雖然匯率不好,但是免手續費喔。假設匯率差的一塊港幣少換到 0.1 元的台幣,那 100 元台幣手續費等同要用 1000 港幣換台幣才賺得回來,因此手頭上的港幣不多時,且又有小額面額的鈔票要換,那直接去台灣銀行或其他願意收小額港幣又免手續費的也不錯,建議可以先打電話到銀行詢問


    • 假設有 800 港幣要換,在好匯率的銀行總共換得的 = HK 800*3.77 - 100手續費 = 2916 台幣

    • 假設有 800 港幣要換,在差匯率不收手續費的銀行 = HK 800*3.66 = 2928 台幣


  • 如果有用 Android 智慧手機,可以試試 RMaps app,這是免錢的程式,可以先透過 Mobile Atlas Creator 製作離線地圖,接著在 Google Maps 之 My Places (我的地點)標記所需的目的地,接著再匯出 KML 檔案,就可以把這些個人的 POI 匯入到手機上,超讚的,細節可參考 RMaps 離線地圖 - 批次匯入個人 POI、KML 檔案


2012年3月31日 星期六

Android 開發教學筆記 - 使用 RenderScript 之 rsSendToClient


From: Compute Renderscript overview


由於 Renderscript 為 Async 架構,因此當 RS 做完事後,希望他送個訊息到 Java 那層時,就會用到 rsSendToClient/rsSendToClientBlocking 等函數來使用,只是翻了文件後,僅有一句話介紹、沒有文件,更別說教學 Orz 後來發現網路上也有人在 stackoverflow 詢問,但一樣沒結果。幸運地,我找到了 Android 系統程式碼!


程式碼:


frameworks/ex/carousel
frameworks/ex/carousel/java/com/android/ex/carousel/carousel.rs
frameworks/ex/carousel/java/com/android/ex/carousel/CarouselRS.java


用法:


HelloCompute.java:


public class HelloCompute extends Activity {

       // ...
       private RSMessageHandler mRsMessage = new RSMessageHandler() {
              public void run() {
                     switch(mID) {
                            default:
                                   Log.e("mID","value:"+mID+",data[0]:"+mData[0]+",data[1]:"+mData[1]+", data[2]:"+mData[2]);
                     }
              }
       };

       // ...
       public void createScript() {
              mRS = RenderScript.create(this);
              mRS.setMessageHandler(mRsMessage);
              mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono);
              mScript.invoke_fireInRS();
       }
}


mono.rs:


#pragma version(1)
#pragma rs java_package_name(com.example.android.rs.hellocompute)


#include "rs_graphics.rsh"


void fireInRS() {
        int data[3];
        data[0] = 1;
        data[1] = 2;
        data[2] = 3;
        rsSendToClient(1, data, sizeof(data));
}


2012年3月27日 星期二

[MySQL] 資料庫、資料表、連線編碼 @ Ubuntu 10.04

最近接觸 MySQL,一直以來都不太熟,只記得幾年前曾透過 PhpMyAdmin 建過幾張表。最近則因為開發環境是 MySQL,加上資安設定,變成必須透過某台機器才能連線,於是我就"搞鋼"地透過 SSH Tunnel 和 MySQL command line 來使用(其實可以配合GUI來使用就好),隨後碰到資料庫、資料表及連線編碼問題。


首先是連線問題,要避開 mysql-client 的編碼問題,可採用以下指令強制使用 utf8 連線:


$ mysql -h 127.0.0.1 -u root -p --default-character-set=utf8


查詢當前環境的編碼資訊:


mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

其中 character_set_database、character_set_server 和 character_set_system 為 MySQL Server 端的設定,使用 mysql-client 連線時,設定 --default-character-set=utf8 影響的僅有 character_set_client 、character_set_connection 和 character_set_results,若 mysql-client 不設定使用 utf8 編碼時,在 Ubuntu 10.04 環境下,很有可能預設採用 latin1:


mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_results | latin1 |
+--------------------------+----------------------------+

接要要留意的還有 character_set_database 這個變數資訊,在 Ubuntu 10.04 server 環境預設也是 latin1,並且這個變數會跟你使用的資料庫有關:


mysql> CREATE DATABASE `MyDBDefault`;
mysql> use `MyDBDefault`;
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_database | latin1 |
+--------------------------+----------------------------+

mysql> CREATE DATABASE `MyDB` DEFAULT CHARACTER SET utf8;
mysql> use `MyDB`;
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_database | utf8 |
+--------------------------+----------------------------+

當資料庫 character_set_database 為 utf-8 時,這時在其裡頭建立的資料表預設就會是 utf8 了,如果建立資料庫沒指定並且系統環境也沒設定,那大概很有機會是 latin1 編碼。


總結一下,假使開發環境大家都默認是 utf8 編碼:


使用 mysql-client 操作時,多加 --default-character-set=utf8 使用,可避開 mysql-client 端環境變因(特別是不熟的機器):


$ mysql -h 127.0.0.1 -u root -p --default-character-set=utf8


建立資料庫時,可指定 DEFAULT CHARACTER SET utf8 來避開 server 端預設環境的問題:


mysql> CREATE DATABASE `MyDBUTF8` DEFAULT CHARACTER SET utf8;


建立資料表時,可指定 DEFAULT CHARSET=utf8 來避開資料庫預設非 utf8:


mysql> CREATE TABLE `MyTable` ( `MyID` INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY ) DEFAULT CHARSET=utf8;


其他部分:


如何透過指令查詢資料表、資料欄位的編碼 how-do-i-see-what-character-set-a-database-table-column-is-in-mysql


2012年3月25日 星期日

春思

2012-03-25


春天看起來好像來了,卻又快過了?記得老家常說清明過後氣溫會越來越熱,端午過後,焰日更盛。


最近周邊親朋好友紛紛轉換跑道,對於自己的未來似乎越來越明確,只是與人閒聊交談,除了活在不確定性的規劃中,還得應付著別人的觀感,想起來也滿累的。例如跑到新創公司,不被看好的甚多。這種現象早在兩年前我也就感受過,當時周邊有個 team (被迫?!)以 spinoff 的方向進行中,可是單位內幾乎沒人認同,永遠的數落。


最近職場上又被 Push 了一把,說的很不錯:「人生總有犧牲,但要記得自己的犧牲是為了獲取什麼。」不然工作或生活上總只剩得抱怨兩字,只記得自己苦了什麼。有人存錢存了一整年,只為那幾天的出國旅遊;有人打拼二三十年,為了買個房讓妻兒溫暖。想想,這些都是挺有意義的事,何必說別人省吃儉用過的很苦呢?


今年花了不少時間在思考,看到周邊有人追求 CP 值、追求名聲、追求金錢,我想,我漸漸地知道自己要的是什麼。規劃一塊自己認為有意義的嘗試,不用為了滿足別人的眼光而回話、做事,別忘了真正為你負責的還是自己啊,單純為自己的生活之道努力吧!