2009年10月26日

閃擊點行動 - 龍之堀起 ( Operation Flashpoint - Dragon Rising )

閃擊點行動 - 龍之堀起 ( Operation Flashpoint - Dragon Rising ) 是 CodeMasters 公司前陣子新堆出的遊戲,同時支援 PC / XBox 360 / PS3 三平台。

總括而言,這是一套除了畫面遠勝 2001 年首次推出的 閃擊點行動 - 冷戰危機 外其他部份都完敗的失敗作,甚至嚴格而言本遊戲也不算是 冷戰危機 的續作,至少從遊戲命名中是完全看不到 2 這個字眼的。

簡單條列個人覺得這套遊戲和 冷戰危機 相比失敗的地方:
  1. 從班戰鬥縮水成小隊戰鬥:沒錯,這是個精英小隊 ,但是一次 12 個人可以有更多的戰術配置。沒記錯的話在 冷戰危機 中有一個關卡還是一整個排去打敵人的設定呢!這項改變大致上可以猜到是因為 PS3 / XBox 360 操控手把所做的限制。
  2. 戰術指令缺乏細節設定:記得 冷戰危機 中可以命令隊友去撿拾槍枝和補充彈藥,也可以把整個班透過撿拾殂擊槍的命令而變成殂擊班。本遊戲中似乎電腦隊員都沒有缺彈危機?把戰術指令大幅刪減的原因大概也是為了配合遊戲機的操控吧!對了,我曾對隊員下達接敵指定對象的命令,但是... 他們都不鳥我... (怒)
  3. 可遠觀而不可褻玩焉的載具:在 冷戰危機 及其資料片中有一大堆的載具(飛機、輪型車輛、民車、以及裝甲車等)可以操作,但到了 龍之堀起 時真的開過的只剩下悍馬車和最後關卡的直昇機而以。不過看電玩快打介紹的影片中有戰鬥直升機可以操作,但我的軍旅生涯回憶錄中只有被戰鬥直升機追殺的慘烈而以.... (嘆)
  4. 過關條件的限縮: 冷戰危機 最為人所贊頌的是他無特定規則的過關選擇,在 冷戰危機 中除了從外圍一路殺進敵營外,還可以先溜進敵營偷一台裝甲車或雌鹿攻擊機後再殺出來,這是 龍之堀起 總是走進去敵營又一路打出來的固定模式難以超越的。
  5. 隊員養成:在 冷戰危機 是可以透過經驗值累積以提昇班兵的能力的,但是 龍之堀起 中每次帶的隊員都一定不同,隊員陣亡也只需等到檢查點後就會重新復活,當然也就少了經驗值作為隊員養成的依據了。
  6. 關卡的變化性不足:在 冷戰危機 中有防禦、有攻擊、有步行機動、有車輛接送、也有裝甲車專屬關卡,還有直昇機攻擊,而 龍之堀起 則是突擊後防禦為主。其中雖然有一關是監控解放軍將領 - 韓將軍逛大街的特殊關卡,但最後用 JDAM 轟掉房子的設定其實覺得挺空虛的... (默)
  7. 關卡過短,故事性不足:記得 冷戰危機 約有 20 關... 吧,龍之堀起 只有 10 關的樣子,搞的玩家還沒融入故事情節時遊戲就結束了.... -.-
認為 龍之堀起 不如原本 冷戰危機 的原因大致如上,如果不是 CodeMasters 和原開發 冷戰危機 的波西米亞工作室鬧僵的話,也許真正的 Operation Flashpoint 2 早就推出了。

2009年10月19日

S60 手機平台與 Google Service

註:Mobile01 新版的 Symbian^3 系統如何設定 Google Service 同步的說明,見N8同步於Google服務(聯絡人、行事曆) + N8社群介紹

老實說,從 因故 購入 Nokia 5800XM 這半年以來,我一直沒有一次就完成 Nokia 智慧型手機(S60 作業系統)在商務需求上的設定。今次經由一再的重試與手機硬格後,似乎有了一點點可以依據的脈胳可循。

商務需求包括那些呢?我想至少會包含通訊錄、行事曆、還有 EMAIL 三者間與原作業平台的相互同步,除了一般企業內部常見的 Microsoft Exchange Server 外,一般個人所能接觸到可同時提供這些服務的公司顯然以 Google 最廣為人知(其實 Nokia 自己也有提供一個整合性服務叫 Ovi ,除包含前述服務還有些其他的)。本文的主要目標是設法將 Google 上的資料與 S60v3/v5 手機相結合。

說到 Google 採用 Microsoft 的 ActiveSync 技術協定的目的就是希望能一次滿足前述三個願望,可惜事與願違,Google 目前在 S60 平台上確實還無法達成 EMAIL 同步,因此整個作業要分成兩部份來進行:通訊錄與行事曆可以合併處理、至於 EMAIL 則需另尋他法。

Push EMAIL

說 EMAIL 要另尋他法其實也不是說需要多複雜的設定,只要透過第三方服務即可達成,這服務就是 Nokia Messaging

首先,把手機扔一邊吧!如果你一心想找 Nokia Messaging 的用戶端軟體自行安裝的話,保證事倍功不成。

如果是第一次使用 Nokia Messaging 服務時必須先建立一個 Nokia Messaging 帳號,但這帳號並不需重新選擇 ID/PWD ,實際要做的只是選擇一個需要被 Push 到手機的現有 EMAIL 帳號即可。Nokia Messaging 支援 POP3/IMAP 郵件協定,也支援包括 Yahoo! Mail、Google Mail、Windows Live Hotmail、Ovi Mail 以及郵件代管類型的 Google Apps、Yahoo! Small Business 等郵件資源,總而言之挑一個出來當主信箱帳號即可。另外 Nokia Messaging 可以支援最多 10 個郵件的推播服務,可以依需要自行增減信箱個數。

Nokia Messaging 主要畫面當然如果不放心把 EMAIL 交給 Nokia 的話,可以考慮只設定那些非日常使用的次要信箱即可。一般來說次要信箱通常很少主動去開啟的,讓 Nokia Messaging 協助追蹤這些信箱似乎也不錯!

決定好主要信箱後即可 Sign Up 進行申請程序。在申請的過程中會發送簡訊到手機上以便開始下載及安裝 Nokia Messaging 用戶端軟體。這程序很重要,整個啟用 Nokia Messaging 用戶端軟體的相關設定都包含在這則簡訊中,當你讀取這則簡訊時會觸發軟體下載、安裝然後手機自動重開機的流程。這過程需要一點時間,也許可以趁這時間回到 Nokia Messaging 官網中把需要 Push 的各郵件信箱設一設。

當手機重新啟動後有機會看到一個標為『簡訊佈建』的畫面,這時手機會進行一些內部設定,完成後即可看到 Nokia Messaging 手機軟體的登入畫面(請參考 Nokia的Push mail--Nokia Messaging 一文中的第二張圖),輸入前述申請作業中設定的主信箱帳號的密碼即可登入。

Nokia的Push mail--Nokia Messaging 一文是以 E71 做說明,如果是 S60v5 平台的話則主要畫面如右圖所示,可以選擇要看那個信箱,也可以另外新增其他信箱。

Reinstall Nokia Messaging另外,如果因為某些因素必須重新安裝 Nokia Messaging 手機端軟體時也請切記一定要從 Nokia Messaging 網站上進行,只需在登入後點選頁面右方的 Install now 即可。如果是自行由手機內安裝先前下載的 .sisx 檔的話是不會與 Nokia Messaging 服務有任何關連的,這個時候對 Nokia Messaging 手機軟體的各項操作都會被寫進手機訊息中心內的電子郵件項目中,在 Nokia 5800XM 上會發生一件很糟糕的情形 - 這些 EMAIL 帳號設定無法刪除...

以上是個人選用為 S60 手機與 EMail 整合的一種方式,目前 Nokia Messaging 服務仍然免費但後續可能會改為收費服務,此點請特別注意。(別擔心,Google Sync 屆時就可以支援 Symbian 平台上的 EMAIL 同步了.... 我猜的... )

※ 2010-01-17: 目前 Nokia Messaging 10.1 版用戶端程序已經可以自行重新建立相關設定了!
  1. 在 Nokia Messaging 10.1 版直接點選電子郵件設定時會開啟新的(大概吧)設定頁面,按下開始後即可進行設定。
  2. 接下來這頁是選擇郵件種類,不過格揆懷疑這是為了方便給新使用者所提供的選項。像格揆這種早就有申請 Nokia Messaging 的使用者可以直接選其他即可。
  3. 然後分別輸入原先 Nokia Messaging 服務中指定的郵件帳號及密碼後即進行驗證。
  4. 如果在進行帳號匹配時未插入 SIM 卡的話,Nokia Messaging 會要求手動輸入電話號碼以便和原登錄的資料進行驗證,是否有實際用途則不確定(誰沒事常換號呢?)
  5. 一旦帳號密碼匹配成功後即可看到 歡迎再次使用 的訊息,同時也告知還要再輸入一次 Nokia 訊息密碼。
  6. Nokia 訊息密碼就是 Nokia Messaging 服務的密碼,不太瞭解為什麼還要再輸入一次?輸入後即可看到熟悉的 Nokia Messaging 畫面,原先的設定也會同時自動下載。

※其實我是想反正 Nokia 開始收費時我就跳到 Android 去了,沒差啦!

行事曆、通訊錄同步

再來就是如何同步行事曆和通訊錄,大致上請先參考 Google Sync 的說明。至於格揆則需要花點時間擷圖... 擷圖的目標放在如何同步 Google Apps 上的個人行事曆與通訊錄。請大家等個一、兩天吧... :p
先期準備 - Google Apps 管理設定
如果需要同步的通訊錄、行事曆來源是 Google Apps 服務,那麼必須先確定 Google Apps Manager 已同意開啟手機行動 Google Sync 支援,詳見 Enable Google Sync via ActiveSync 內說明。
更新 Mail for Exchange
Mail for Exchange 必須要 2.0(9).158 以上版本才能支援,Symbian 手機可以透過內建的更新機制進行軟體更新,在更新的過程中會有警告訊息提醒一旦使用 Mail for Exchange 後就不可以再使用其他同步軟體。
Mail for Exchange 安裝/設定Mail for Exchange 安裝/設定Mail for Exchange 安裝/設定Mail for Exchange 安裝/設定Mail for Exchange 安裝/設定

雖然也可以從 Mail for Exchange 官網自行下載手機端程式,不過似乎還是比透過手機更新的版本來的舊。
Mail for Exchange 同步設定
執行 Mail for Exchange(以下簡稱 MfE)後即可進行同步設定,併隨 MfE 安裝的公司目錄工具是用來查詢 Microsoft Exchange Server 上的通訊錄用的,因為 Google Sync 使用 ActiveSync 協定進行同步作業,所以日後可以使用這個工具查詢 Google 通訊錄上的內容。
Mail for Exchange 安裝/設定

第一次執行 MfE 時會因為沒有任何同步設定而詢問是否建立操作模式,反正只能選擇不然就沒得用。
Mail for Exchange 安裝/設定

首先填入 EMAIL 基本資訊,不管是 GMail 還是 Google Apps 都請在電子郵件位址使者用名稱部份填入完整的 EMAIL 信箱全名。至於網域部份則因為軟體限制直接填入 google 即可,存取點則通常設為網際網路,如果有申請 mCool 49 之類的 WAP 上網吃到飽的則可以選擇 WAP 。
Mail for Exchange 安裝/設定

輸入完 EMAIL 基本資訊無誤後即可按下確定鈕,MfE 會嘗試擷取郵件伺服器的設定。如果是在一般企業內部的話應該可以自動捉取到 Exchange Server 的相關資訊,但 Google 的手機服務似乎是透過另一個獨立主機做橋接的,因此 MfE 會出現擷取失敗的訊息並要求手動輸入 Exchange Server 的相關資訊。
Mail for Exchange 安裝/設定Mail for Exchange 安裝/設定

在 MfE 中總共有八個設定頁籤分別對應到連線認證同步排程行事曆工作通訊錄郵件不在辦公室,不過一開始第八個設定頁是看不到的。
2009/10/20

連線設定:主要就是指定 Exchange 伺服器的名稱,請填入 m.google.com 即可。
Mail for Exchange 安裝/設定

認證:先前輸入的完整 EMAIL 全名會自動帶入這個設定頁中,完全不用更改。
2009/10/20

同步排程:此頁籤用於設定同步的頻率,預設為尖峰時段永遠連線,離峰時段則每 30 分鐘連線同步乙次。基本上因為電信訊號並不穩定且人員也不一定都在 WiFi 訊號範圍內之故,把同步頻率改為定時更新應該比較適合。
Mail for Exchange 安裝/設定

行事曆:Google Sync 目前可以支援行事曆同步,原則上雖然可以保留手機上即有的行事曆內容,但這麼做很容易把行事曆搞亂(N82 時代同時同步 Outlook 及 Google Calendar 的心得,每重建乙次手機設定就會多一倍的行事曆項目)。所以這裡通常會選擇先清空手機上的行事曆資料。
Mail for Exchange 安裝/設定

工作:待辦事目前尚不支援同步作業,請選擇不同步。
Mail for Exchange 安裝/設定

通訊錄:一樣建議先刪除手機上的內容後再進行同步。如果手機上的資料完全沒有和 GMail / Google Apps 上重覆的話可以考慮保留以便傳回 GMail / Google Apps 上。
Mail for Exchange 安裝/設定

郵件:目前 Google 仍不提供在 Symbian 支援郵件同步,而且前面不是已經使用 Nokia Messaging 提供 Push Mail 服務了嗎?
Mail for Exchange 安裝/設定

不在辦公室:這必須先能連上 Exchange 伺服器後才能檢視,目前 Google 也不支援。

完成各頁籤的設定且確認無誤後就可以按下 選項儲存 將設定保存下來,之後回到首頁時會看到 MfE 已開始嘗試連線進行同步了!
Mail for Exchange 安裝/設定Mail for Exchange 安裝/設定

當你專心的注意畫面上的訊息時,會發現目前狀態這項訊息會依序改變: 連線中已連線閒置,那麼結果究竟成功了沒?經由檢視記錄的功能應該會看到這個畫面:
Mail for Exchange 安裝/設定
同步作業
什麼?搞半天竟然沒成功?嗯,稍安勿噪!之前格揆都只進行到這個步驟就放棄了,所以不知原來事有蹊蹺。其實啊,真正的同步作業現在才要開始呢!不如,再試著同步一下看看?
Mail for Exchange 安裝/設定

咦?它顯示出正在同步行事曆耶!趕快檢查記錄也確認有 5 筆行事曆記錄被匯入。
Mail for Exchange 安裝/設定 Mail for Exchange 安裝/設定

可是為什麼通訊錄沒有同步呢?再來同步一次好了,又發現通訊錄的也開始匯入了,記錄中也確認有 34 筆記錄被匯入。靠么,原來同步作業是需要耐心和勇於嘗試的作為啊?
Mail for Exchange 安裝/設定Mail for Exchange 安裝/設定

基本上同步的設定到此即算完成,若不是還放心的話可以嘗試分別在手機及 GMail / Google Apps 中分別新增一筆行程及一筆通訊錄,然後等排程時間一到看會不會完成同步。
結論
之前一直朝著完整重新同步的想法去進行測試,結果沒有一次成功。沒想到最後是因為選錯項目才發現只要一直同步就有機會完成整個同步程序,這實在有夠瞎就是了。

2009年10月12日

Tomcat: Cannot create PoolableConnectionFactory

因為在修改某系統的部署方式而遇到這個問題,特此記之!

錯誤訊息:
12:15:11,605 ERROR jsp:228 - Cannot create PoolableConnectionFactory (IO 異常: The Network Adapter could not establish the connection)
據說這個例外的成因還不少,但在使用 Oracle 資料庫的情形時有個比較特殊的原因:連線設定參數與資料庫設定不符。最直接的驗證方式是將資料庫連線設定改用 tnsnames.ora 檔案內的寫法取代即可。Ex:
<Resource 
    name="jdbc/oracle" auth="Container"
    type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.OracleDriver"
    url="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP))(HOST=192.168.1.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MY_DB)))"
    username="賣哀滴"
    password="賣怕死我"
    maxActive="8"
    maxIdle="4"
    maxWait="30"/>

部落格搬家紀實 - 從 SnipSnap 到 Blogger

前言

基本上在已經營部落格 5 年的情形下搞搬家是需要很大的勇氣的,當然也可能只是因為愚蠢的關係... XD

會決定部落格要搬家的首要原因是因為前陣子系統硬碟陣亡後,一時間找不到/想不起來把 SnipSnap 的 Source 塞那邊去了。沒了 Source 就沒辦法再加新功能,所以開始考慮搬家的問題。

決定要搬家意謂著得把過去所有的文章統統帶到新家,但是由於 SnipSnap 是一套極小眾化的部落格共筆系統,所以完全找不到任何工具可以快速的達成這項作業,於是退而求其次是自行寫小工具進行搬家。最原始的想法是將資料庫內的文章記錄全部翻出來後轉成 Blogger 的備份檔案,這樣只要直接 Import 馬上完成辦家作業,任務終了!

有了方向就開始進行測試了。弄了幾篇文章後匯出成 Blogger 匯出備份檔,東刪西砍後弄了一份假檔案去玩匯入功能,先是被 Blogger 吐槽說不支援別人家的備份檔,再修改後的測試則讓 Blogger 吐出一串奇怪的錯誤訊息。查詢過 Google 後確定應該不是因為我這個簡化過的備份檔的關係(難不成大家都有偽造備份檔的習慣?),顯然這個想法的可行性有執行上的問題...囧rz

雖然生出 Blogger 可用的匯出備份檔是個問題,但實際上 SnipSnap 儲存在資料庫內的資料和頁面上顯示的內容也因為 Macro 的存在而有極大的差異。因為沒辦法自行呼叫 SnipSnap 內建或自行開發的 Macro 去解析原始資料,很快的便把腦筋動到內建 RSS 輸出功能,至少從 FeedBurner 上可以確定產生的 RSS 檔已經將所有 Macro 、Filter、Formatter 等等都套用過了,更重要的是 Blogger 就是收這種 HTML 格式成為一篇文章的。

不過有點可惜的是內建的 RSS Servlet 只能輸出首頁的指定筆數資料,為了能夠倒出所有的文章內容,我必須安裝修改過的 Servlet 到 SnipSnap 內。這個問題不算難,確認那個 class 才是系統用來轉換 RSS format 的部份則花了點時間。最後實際執行 RSS 匯出的時間好像才 30 秒不到而以。

有了所有文章的 RSS 檔後就可以開始匯入了。於是我開始搜尋 rss2blogger 這個關鍵字,還真的在 Google Code 中找到一個 rss2blogger 開源專案,可惜的是他完全沒有記載怎麼使用。

之後,我決定自行開發匯入工具,本來名稱就叫做 RSS2Blogger,不過因為和上面那個開源專案名稱衝突,所以實際上真正 commit 進去的名稱叫做 RSS2Blogspot ,對!這是 Blogger 的另一個名字。

之所以需要自行開發匯入工具的主要且唯一的原因在於必須更正原本指向 SnipSnap 內其他文章的連結。如果使用現有工具直接導入 Blogger.com 的話,後續顯然得要花上更多的時間去修正所有文章中的連結,連結問題一直是所有搞部落格搬家工程的部落客心中最大的傷痛。

RSS2Blogspot

初期對這個匯入工具的想法除了採用 Google Data API 外,在功能上應當要具備以下功能:
  1. 可以設定是否存為草稿
  2. 可以濾除指定字串
  3. 可以標示出該文章有 Blog 內部參考連結
符合以上要求的第一個版本就是以下這張圖的執行畫面:
RSS2Blogger 執行匯入過程

匯入一些文章進行測試後認為程式碼部份應該可以再美化些(最後還是一樣醜),功能可以再增強些(還好達成了),以及訊息應該改回英文。想要只顯示英文的原因在於先前的 ass2srt 工具因為都是中文字結果造成網路上一些外國朋友使用上的問題,也許用一些不太工整、破破的英文訊息就可以讓這個工具活久一點(ass2srt 比我想像的活的還久)。

正式上傳到 Google Code 的 rss2blogspot 就是修改過後的版本,它提供了(在 RSS2Blogger 開發記錄中曾提到過):
  1. 可以單篇或全部 RSS 內文章都指定為草稿:其實後來我都指定為直接發佈了!
  2. 將濾除功能改為替換功能:原本濾除功能就是一種替換作業,加上我有一大堆的表情符號要重新指定連結網址,所以這個功能就被強化了。
  3. 使用參數方式檢驗文章內部的連結。
  4. 加入分類標籤設定:因為原本的 rss 檔中就有 <category /> 元素,所以直接拿來當做文章分類標籤使用。
因為功能上的強化,所以我又回頭改寫了 SnipSnap 的 RSS 輸出,將所有表情符號的對照表及內部連結格式等資訊統統直接輸出到 rss 檔案內,這樣子當開始搬移 Blog 文章後需要再檢核的項目就會大符減少。

匯入前檢查

至於實際上在匯入的時候,我會先檢查 rss 檔內部的發佈時間及文章標題是否正確。在早期發文習慣不良時是有少數幾篇文章沒有捉到文章標題的。另外也會針對文章內容是否有保留價值進行篩選,因為早期好像真的有一些無病呻吟的搞怪文章,這些後來都決定予以放棄了。

至於什麼時候可以搬完呢?我想應該還是會花上 1 ~ 2 個月吧! 畢竟人懶的時候會忘了要上傳文章... :p

應用

因為目前 RSS 資料是如此的容易取得,這個工具的應用似乎也挺有看頭的。舉一個最最簡單的例子來說,這個工具可以協助建立一個 Blog 備份站台。只要在原本的 BSP 中編寫完文章,然後捉下 rss 檔後馬上就可以再 Post 到 Blogger 內。除了一般的部落格文章外當然還可以用來處理別的資料類型如 picasaweb / flickr 的圖像記錄,只是這需要再修改程式進行客製化就是了。

2009年10月4日

部落格正式移轉至 Blogger

今天將整個 RSS Feed 自原本的 SnipSnap 系統上改到 Blogger 這邊了。由於 Blogger 本身的每天 50 篇文章的限制,原本有訂閱本格的網友應該會開始收到因搬家所匯入的舊的文章內容。

又因為這個 50 篇文章的限制,這次搬家大概要花上 2 個月以上才能完整搬完,時間似乎拖的有點久,但也提供格揆我回首當年和移除當年為了湊文章所留下的無意義發言的機會。

至於為什麼要花上 2 個月的時間搬家呢?另一篇文章內會提供說明,也算是提供另一種搬家方式的選擇!

以上,謹此告知!

※喔,對了!使用 FeedBurner RSS 的朋友會自動取得新的文章來源,使用 SnipSnap 自帶 RSS 機制者,另外會在舊系統內發文告知。