2011年7月25日

一個恐龍法條 + 一個愛現的官僚 = 什麼?

基本上這原本是在 Google+ 上針對台北市政府法規會與 Google 對 Android Market 7 日鑑賞期事件所留的一段心得,不過因為近日又多了一點心得,加上北市府額外奉送的兩週延議期也快到了,所以趁機把它搬到部落格中作為歷史遺跡,順便為這個荒廢多時的部落格灌點水... :p
整個故事的發展演進請直接參閱 『Google Android Market、Apple App Store 7日鑑賞期事件懶人包』 及 『北市府裁罰事件,Google:法律解讀有疑慮,app 繼續下架』 兩篇文章說明而不再贅述,以下即為個人的看法:
  1. 台灣消費者從此與世界豐富的應用程式無緣
  2. 和中國一樣出現一大堆山寨版應用程式在電信公司的市集上騙錢
  3. 因為台灣看不到付費軟體,所以也不會有人幫作者翻譯使用者界面為正體中文
  4. iPhone/iPad 使用者也不用太高興,別以為世界各地的應用軟體開發者就會認同或支持台灣 Apple Store 的特別條款;也不要天真的以為 iOS 軟體開發者都有那種力氣來面對、統計、或處理台灣的退費條款(狀態可能有所改變,容後述)
  5. 以目前的狀況來看,恐怕也讓某些原本想要寫 Android App 的開發人員陷入躊躇不前的困擾中,iOS 的開發人員可能就稍好一點,至少可以樂觀的相信被退款的機率應該不會太高。但總體來看似乎並不利於行動應用軟體業的發展
  6. 免費軟體的使用一併受到影響:這是近日的感想,應該也會是 iPhone 軟體開發者比 Android 軟體開發者有利的地方
基本上到了 07/15 後,Apple 正式增列台灣專屬條款『您得自產品收受之日起七日內,取消對產品之購買。在您通知iTunes您已刪除產品所有備份之前提下,iTunes將會退還您已支付之價款。自您取消購買時起,您不再被授權繼續使用該產品。此項權利不可拋棄。』,但是軟體內 (In-App) 購買、訂閱部份目前看來是無法退費的。這個差異可能會轉移軟體開發者對於軟體功能的規劃:『表面上是免費軟體,但是多數功能都要另行在軟體內付費啟用』,而且此作法某種程度下還能對抗盜版軟體。
有趣的地方就在這兒,在 iTunes / Apple Store 下雖然付費軟體有七日退費條款,但是開發者可以讓軟體免費下載,之後再透過 In-App 方式付費購買擴充功能,這些付費功能無法退費,所以 iOS 開發人員其實也不見得需要特地處理台灣地區軟體的退費事宜;但與過去比較起來消費者可能會發現連寫信退費的權利恐怕也沒了。
Android Market 也提供所謂的 In-App 付費功能,也有許多軟體開始透過此付費模式提供購買特殊裝備或啟用特別功能(個人覺得這些也算是騙子軟體),不過因北市府法規會介入的關係導致 Market 整個付費功能被 Google 關閉後,自此每次在開啟這類具 In-App 付費功能的軟體時就會看到一個很刺眼的訊息:『Can't make purchases』且一而再、再而三的提醒台灣的使用者因為一個愛現的官僚所造成無法付費購買軟體的窘境。
距上次北市府美其名對 Google 釋出善意再給兩週寬限期的時間又快到了,不知道這個號稱天龍國的地方政府有沒有任何方案足以應對 Google 不接受七日退費期費要求的因應作為?
還要用 Google 有挾消費者以令天子之嫌 那招開罰嗎?

2011年3月23日

本格文章詞頻分析

看了 timdream文字雲工具 後,也把這個部落格的資料給餵進去看看,然後就出現了以下這個分析圖...
簡單的說,格揆我對『可以』這個詞兒的使用頻率實在太高啦~~ 同時這也更加明確的確認出這個部落格確如其名的只是一份胡思亂想鬼扯蛋的雜記而以...

2011年2月19日

智慧型手機綁約方案選擇

電信業者透過一定程度的補貼手段以爭取用戶的方式其來由自,但早期功能型手機世代時其實並不是那麼划算而在這方面沒有太多的困擾。但是直到 iPhone 3G/3Gs 登陸台灣後,因為合約中綁定了無線數據上網的部份,所以開創了鄉民們針對電信業者智慧型手機綁約方案的研究與心得整理。這一篇也是網海中注定會浮沉的一個片段,但在它還尚未沉沒前應該還是有一絲絲的參考價值... 吧!

同手機、同上網資費但不同話務資費比較

格揆我曾在 噗浪/Plurk 上隨手寫了一段 綁約資費方案的選擇條件,這篇文章算是進一步對這些條件加以說明。先來看看當時留的選擇條件如下:
  1. 網路使用習慣:隨時隨時要取得朋友的各種資訊、只需要行事曆/天氣/郵件通知、還是完全不使用
  2. 各資費下的總支出金額:並不是低資費就一定會繳的少
  3. 該資費下的免費通話量:有些資費方案是能月租折抵通信費用,有些甚至是直接贈送固定金額的通信費用
  4. 個人的通話量:把自己過去 6 個月的平均通話量套到前述條件內,看看那一個方案的額外花費最少。
前兩個條件很容易數據化,下表即為假設在中華電信辦理 iPhone 4 32G 手機,選擇 mPro 950 上網吃到飽方案時(即前述第一條件)分別選擇大家講-589及大家講-289(前述第二條件)時不同資費的支出試算。這個試算表中把話務月租費分成兩段的原因在於某些優惠方案可以在滿足一定月份(通常是 12 個月)後調降話務月租費,不過此表中的這兩個 iPhone4 超值方案都無此選項。
至於數據上網月租費方面也有分吃到飽和限量飲食的選擇,由於 mPro 950 是屬於一個價碼吃到飽的模式,所以上、下限都是 NT$950 元打八折的 NT$760 元。
仔細看看這份試算表可以發現:雖然表面上看來『大家講-289』方案的每月支出只要 NT$1,049 元,但若加上手機費用及預繳折扣後反而比『大家講-589』方案的總支出要再貴上 NT$500 元。這就是為什麼網路上及格揆我所一再強調的 並不是低資費就一定會繳的少 的原因啊!
這裡簡單說明一下各項數值的來源吧,然後就可以看看其他幾種方案的比較。當然如果覺得這些數據有什麼疑問之處歡迎一起討論。
  1. 話務月租費總支出:就兩年下來總共要繳多少通話費
  2. 數據上網月租費總支出:一樣是指兩年下來總共要繳多少上網費,不過因為某些上網方案並不是吃到飽的,所以這裡分成上、下限兩個數據。注意:通常這個上限值不應該發生才對。
  3. 購機準備金:這是指要領到手機所必須先付出的費用,通常是手機優惠價加上購機預繳費用。若電信公司有推出免預繳方案(通常是 VIP 或 NP)時,購機準備金就會降低。不過看了幾個方案後發現電信公司不管什麼方案要準備的預算都一樣... XD
  4. 綁約期內月支出:這是指帳面上每個月要繳給電信公司的費用,但是目前這個試算表沒辦法精確區分出話務費及上網費都會變動的情形。例如,如果話費為先 589 後 289 而上網費則是先 450 後 950 時,這個試算表只會捉出下限為 289 + 450 = 739 的數字而不是實際的 589 + 450 = 1039 這個數值。
  5. 綁約期內總支出:話務月租費總支出 + 上網費用總支出 - 預繳贈送金額。中華電信以前的方案是折抵預繳金額的 20%,現在的方案只剩下 10% 而以。
  6. 賣出價格:若綁約所取得的手機不為自用的話,可以透過售出方式減少費用支出
  7. 另購新機價格:若把綁約手機賣了又需要另一隻手機的話,就得另外花一筆費用。6. 和 7. 之前的價差即俗稱為洗機所得,後續會談到
  8. 洗機後最低總支出:洗機的目的是要壓低約期內的總支出,所以此處就只考慮最低總支出費用

同資費但不同手機間比較

上一段內容是以同手機但不同資費作為比較,這段則改成同資費但手機分別選擇 iPhone 4 32G 及 HTC Desire HD 時各自會有什麼不同?
基本上 HTC Desire HD 的空機價格本來就比 iPhone 4 32G 要便宜 NT$8,000 上下,所以單單從總支出來看的話選擇 HTC Desire HD 一如預期的必然會比選擇 iPhone 4 32G 的花費要少。但是不對啊?為什麼 HTC Desire HD 的總支出只比 iPhone 4 32G 便宜約 NT$1,000 而以呢?不是說價差約 NT$8,000 嗎?於是有人想到了是不是可以辦 iPhone 4 32G 後,把 iPhone 4 稍微降個價、打個折賣了再到通訊行買隻 HTC Desire HD 來貼補一下月租費的支出呢?
是啊,這方式就是大家常常聽到的洗機。又因為有電信公司是否受制於各家手機制造商的微妙關係,iPhone 系列手機通常會享有電信公司較高的貼補金額,這也是為什麼網路上都建議洗 iPhone 的原因。
下表就是以中華電信『大家講-589』為基礎,在分別選擇 iPhone 4 32G 及 HTC Desire HD 時的各項支出數據。其中 iPhone 4 32G 空機價依 PChome 報價為 NT$32,900 元,但為了要能脫手以免造成庫存壓力(什麼跟什麼啊)所以此處料敵從嚴的把售價訂在 NT$25,000。當然兩者間的差距不算小,能夠賣的愈高價則所能貼補的月租費就愈多,總支出也會跟著下調,這部份就要看個人機運了。如何賣掉 iPhone 的方式很多,不少人是透過網路拍賣進行競價,但是也有部份的人因為懶惰或其他原因而選擇直接把手機賣給通訊行吧?至於 HTC Desire HD 也依 PChome 報價的話是 NT$20,900 元,不過通訊行的價格應該不會這麼硬才對!

其他不同方案的比較

這篇是以智慧型手機綁約為前提所寫的介紹文,那麼有沒有單純針對通話為唯一要件的方案建議呢?
答案可能讓人失望,格揆我會建議 直接用空機價格購買功能型手機,然後向電信商辦理通信費用補貼 即可。
以下繼續對各種不同基礎所進行的方案比較,但各比較表僅僅只能作為參考、計算示範之用。任何方案的付費細節請參閱各家電信公司官網或聯絡其客服以取得最新、最正確的資訊。
是否一定要選擇 mPro 950 吃到飽方案實際取決於每個月的上網傳輸量是否僅少量甚至是不超過方案上限值。不過可以確定的是如果有 7 個月以上因傳輸爆量達 mPro 450 收費上限 NT$1,200 的話,那麼選用 mPro 450 的費用支出就會開始超過 mPro 950 了。
如果比較一下各家電信業者的資費方案,可以做為是否 NP 的決策。不過各家對 NP 的補貼倒是不一定能享受到就是了!另外這份表中的遠傳資費不一定正確,因為格揆不太瞭解遠傳資費的解讀方式,有可能因為認知錯誤給了一個不正確的數值。

結論

其實整個評估作業最簡單的方式不過就是計算月租費及手機費用的總支出,少數電信公司的預繳費用會有更多的折扣,那就再扣除這些多的折扣就是最終取得手機的實際支出。聰明的你應該馬上能計算出自己所需的優惠方案了吧?

追加報導 - 《 中華電信 - 平板+智慧新機成對帶著走!「天生一對」方案 》

個人看法:
  • 個人覺得綁約三年的各種合約都儘量少碰,尤其像手機這種半年就一款旗艦機的情形下更沒有再堅持一年的必要性
  • mPro 450 每月有 500MB 的額度,和 mPro 750 相比上限值雖然多 NT$100,但是一般以 WI-FI 環境為主的情形下月租費卻可以少掉 NT$300,個人認為是買空機情形下比較划算的選擇
  • 個人認為如果真有行動平板電腦的需求,透過洗手機(目前效果差很多)的方式可能比較划算
  • 對了,除非辦了兩組上網門號,不然 Flyer 要上 3G 時要拔 SIM 卡進行交換... XD

2011年1月28日

次世代主機的體感創意落差

我是看了 『老任第三季營收掉了46個百分比,狂賣缺貨的日子已是往日榮光?』 這篇文章時突然覺得老任營收會下調營收預測似乎是必然的,畢竟這是一台老主機,加上 XBox 360 Kinect 的出現明顯搶了 Wii 的風采。
以下是格揆我對三大主機在體感創意方面的自我主張,大家可以參考參考:
  • 任天堂 Wii Remote/Remote Plus:這玩意兒無疑是對體感遊戲的可能性具有重大貢獻,但是年代已久早顯疲乏;不過在某些需要精準控制的遊戲需求上仍有其重要性存在。
  • 微軟 Kinect:可視為自 Wii Remote 發表以來的重大演進,不光是少了遊戲過程中額外控制器的需求,還能被應用在各種 人體動作補捉上。
  • 索尼電腦娛樂 PS Move:雖然看來有一些和 Wii Remote/Remote Plus 不同的運用方式,但原始創意來源怎麼看都覺得是抄自任天堂的,所以目前看不出有何氣勢似乎也是很合情合理的。
所以,格揆我不小心在過年前從 電腦家 訂了一組 XBOX 360 + Kinect 同綑包要回家孝敬爹娘了... XD

2011年1月19日

如何在 Shell Script 中捉取 MySQL 資料庫中的指定記錄值

很久沒寫 Blog 了,也許是因為撞牆期吧?
總之,來寫個跟 Shell Script 及 MySQL 有關的東西吧:如何在 Shell Script 中直接取得 MySQL 資料庫中某記錄的值!

需求起因

事情的發展是這樣的:為了確保系統發出的 EMAIL 能有效的送達用戶手上,所以懶人如格揆我就很順手的把 /var/log/maillog 中的郵件寄送記錄給解出來了,反正不需要我每天動手做的任何方式都是最佳的方式。但是,代誌毋係憨人想ㄟ哈呢甘單,沒多久就有人寄信來希望能加上信件主旨,於是格揆很快的又回到每日人工查資料的機械生活中,這完全是忤逆懶人天性,違乎常理的發展啊。
就因為『懶散要超越懶散』,格揆我其實一直希望能把這動作併入 Shell 中自動補完,終於在今天找出了正確的解法,先記錄一下以免腦殘之後忘了該怎麼辦!

編碼問題

在讀取資料庫中的資訊前有一點很重要:系統編碼!
mysql> status
--------------
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1

Connection id:          2468601
Current database:       *** 不要問 ***
Current user:           *** 很恐怖 ***
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.86-community-log MySQL Community Edition (GPL)
Protocol version:       10
Connection:             *** 您知道的 ***
Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3306
Uptime:                 428 days 21 hours 44 min 57 sec

Threads: 8  Questions: 115577998  Slow queries: 8  Opens: 81015  Flush tables: 1  Open tables: 64  Queries per second avg: 3.119
--------------
如果登入 MySQL 時看到了像是上圖中顯示了不同的編碼狀態,那麼任何 select 到的中文字都會變成亂碼!這問題不難處理,在使用 MySQL Command line Tools 加上 --default-character-set=encodename 即可,如上例即應改由以下方式登入 MySQL:
[ada@myhost ~]$ mysql --default-character-set=utf8
加上了預設編碼設定後後,再到 mysql 命令列工具中下達 status 指令就會看到編碼設定已經被改過了,如下:
Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

Select 取值方式

之前在對 Oracle 進行操作時,它有提供如何在 Shell 中去讀取資料庫內容的作法,這裡用讀取資料庫系統時間作為例子:
[ada@ora ~]$ NOW=$(sqlplus -s << END
> set heading off
> set feedback off
> select sysdate from dual;
> exit;
> END)
[ada@ora ~]$ echo $NOW
2011-01-19 17:02:48
但如果想要在 MySQL 中如法泡製的話,輸出結果顯然需要額外再加工才行,如下所示:
[ada@myhost MYSQL]$ NOW=$(mysql --default-character-set=utf8 --silent -E <<END
select now();
END)
[ada@myhost MYSQL]# echo $NOW
*************************** 1. row *************************** now(): 2011-01-19 16:40:25
靠杯,為什麼兩台的時間差這麼多?
還好 MySQL 另外提供一個方式可以讓我們只看到實際輸出資料而沒有欄位名稱什麼的,如下例:
[ada@myhost MYSQL]$ NOW=$(echo "select now()" | mysql --default-character-set=utf8 --silent)
[ada@myhost MYSQL]# echo $NOW
2011-01-19 17:07:56
好啦,想要在 Shell 中去讀取 MySQL 中的某個值就是這麼簡單。如果要撈的是多筆、多欄位的資料呢?沒有問題,系統會用空白串接所有擷取出的欄位值,這樣會比較難處理,但它確確實實還是能夠加以操作。
[ada@myhost MYSQL]# LIST=$(echo "select status, time_start, creator from epaper" | mysql --silent)
[ada@myhost MYSQL]$ echo $LIST
0 2012-08-03 00:00:00 admin 1 2010-09-01 00:00:00 admin 0 2011-09-08 00:00:00 admin 0 2011-09-03 00:00:00 admin 1 2010-10-02 00:00:00 admin 1 2010-10-05 00:00:00 admin 1 2010-10-05 00:00:00 admin 1 2010-10-05 00:00:00 admin 0 2011-11-11 00:00:00 admin 1 2010-11-03 00:00:00 admin 0 2011-11-05 00:00:00 admin 0 2011-11-07 00:00:00 admin 1 2010-11-05 00:00:00 admin 1 2010-12-01 00:00:00 admin 1 2010-12-02 00:00:00 admin 0 2012-12-06 00:00:00 admin 1 2011-01-15 00:00:00 admin
其實也可以改成以下這樣啦,只不過這樣會多出欄位標題出來,需要自行濾除...
[ada@myhost MYSQL]$ mysql --default-character-set=utf8 --silent -e 'select status, time_start, creator from epaper'
status  time_start      creator
0       2012-08-03 00:00:00     admin
1       2010-09-01 00:00:00     admin
0       2011-09-08 00:00:00     admin
0       2011-09-03 00:00:00     admin
1       2010-10-02 00:00:00     admin
1       2010-10-05 00:00:00     admin
1       2010-10-05 00:00:00     admin
1       2010-10-05 00:00:00     admin
0       2011-11-11 00:00:00     admin
1       2010-11-03 00:00:00     admin
0       2011-11-05 00:00:00     admin
0       2011-11-07 00:00:00     admin
1       2010-11-05 00:00:00     admin
1       2010-12-01 00:00:00     admin
1       2010-12-02 00:00:00     admin
0       2012-12-06 00:00:00     admin
1       2011-01-15 00:00:00     admin

[ada@myhost MYSQL]$

2010年11月28日

五都選舉馬後砲

前言

台灣首場五都首長選舉已於 11/27 晚上拍板定案,就上榜率而言藍軍以過半的 60% 大勝綠營的 40%,但以得票率來看的話則是綠營以近 5 成的 49.87% 大勝藍營的 44.54% 共 40 餘萬票。於是照慣例,格揆我一定要放個馬後砲留點紀念,反正格揆我也只會放放馬後砲以免惹上 意圖使人不當選 (沒想到它還是目前的 Google Suggestion 呢)的麻煩。

台北市

就個人情感上對台北市是希望蘇貞昌當選的,不過個人一向對天龍人的民主養成教育沒啥信心,選舉結果也如預期般由在新生高及花博等工程中浪費人民血汗錢的現任市長連任。對司法一向沒啥信心的格揆我也只能說這些爭議案件都將不會有什麼結果了。
另外蘇貞昌在整個竸選期間曾親到台北市各處探查民情,但似乎找不到類似個 Issue Tracker 的問題追踪系統並公開給大眾監管執政者是否已解決問題?個人倒是挺建議蘇這邊把相關資料整理後移交給民進黨台北市議會黨部(或是移交給 TBA 也行?),不只可以讓議員們持續追踪這些問題,搞不好四年後還能用來翻舊帳呢!
對了,每次看到好冰冰市長的台北起飛、Fly High 選舉手勢時總會莫名其妙的想到國家地理頻道中的 空中浩劫 節目,為什麼?因為空難事件絕大多數都發生在起降時刻呀~~

新北市

老實說在過去民進黨多任縣長的先例下,本來並不覺得新北市是一個藍色為主的政治環境,但從此次的選舉結果看來新北市大概就此被劃入藍色版圖內了吧?
至於對這兩位候選人而言,個人沒有太多意見。對小英而言其實本來就不太贊成她出來竸選,至於老是批評小英是選假的的朱市長個人則覺得實在過於小鼻子小眼睛就是了。讓一個現任的新北市長去選總統搞不好可以讓任內已規劃的所有建設一次到位,對新北市民搞不好受益更多呢!再說為什麼每次都只能由選台北市長的人去競選總統呢?這明顯是對其他縣市的一種歧視嘛...
不過,其實北二都失守也不一定要那麼悲觀到又要勞駕精神科醫師 Billy Pan 大叔再辦一次 療傷網聚 啦,阿Q點想,也許這是因為北二都的民眾們比較希望兩位市長候選人能專心準備 2012 總統大選也說不定呢~

台中市

個人是覺得台中市最近幾年實在是沒啥發展,不過反正又不住那邊所以不需要太過在意。只是這次再由胡志強當選讓人好奇台中市民過去九年來對胡市長的臉都不覺得膩嗎?
說到胡志強他這次猛推不少競選廣告,吹牛被捉包的 就不管了,反到是在 大台中 大未來 所提的 與香港競爭、追趕新加玻 (這樣看起來新加破贏香港)口號應該先問問胡市長把台北市放那邊去了吧?
另外胡市長還有一個在競選末期某幾天內曾強力放送的廣告中不知為何總覺得他口齒不清,不知原因是不是我耳朵生繭的關係?

台南市

基本上我對這兩位候選人都不熟悉,但比較想說的是台南縣蘇縣長接受初選結果且即表態支持黨提名人這件事比較有印像;而許市長雖然最後也放棄脫黨參選,但總覺得他本來也想循高雄縣長模式脫黨的,只是不知什麼原因使其放棄而以!
高雄市
對高雄市而言比較有印象的並不是花媽陳菊,反倒是脫黨參選的現任高雄縣長讓人印象深刻。雖然他後期極力訴求不分藍綠、政治中道的企圖明顯,可惜顯然大家對他的『昨是今非、昨非今是』非常有意見。但在這種情形下仍有 40 餘萬票其實力也算是異常雄厚,只不過我覺得他這次真的是賭輸了,未來如果想再走政治這條路應該是會異常艱困吧?
政治光譜的改變
在假圖天圖有篇 【台灣觀察】藍綠光譜的改變! 提到現今的政治光譜已不光是藍綠而以,由於騜式詐騙集團的快速傾中導致這群詐騙集團的政治光譜比較像是紅色而不是國民黨黨徽上的藍色。本來以為在六年級上段班之前這些受過國民黨反共抗俄教育的這一代應該會全力反抗騜的傾中現象,不過實際上看來似乎還有很多人只是單純的效忠黨徽而不是去看領導人有沒有在亂搞的嘛,顯然過去國民黨的愚民教有真是成功呢!
大話新聞
呃,大話新聞不屬於五都的成員,只是因為就幾次選舉下來發現大話新聞的成員總會認為騜式詐騙集團即然這麼糟糕,相信所有台灣人都已經覺醒,必然會給騜一個嚴正的教訓!但每次的期昐的結果總是與預期相去甚遠,這究竟是什麼原因呢?也許就只是別高估台灣民主教育成就而以吧?
意圖使人不當選
選後第三天最新心得
  • 今天聽說民進黨那些老灰呀全部跑出來批評小英,呃... 這群人實在該乖乖退休比較好...
  • 還有人批評都是蘇光頭執意參選台北市長才會打亂原本的必勝配置,呃... 我也不認為新北市民願意看到回鍋的新市長...
  • 個人一直不覺得那顆子彈對選情有啥影響,不過似乎全台灣都認為影響可大了?

2010年11月26日

Maven、Java 1.5 與 xdoclet 的相處之道

最近幾年來的 Java 專案都使用 Maven 2 進行自動化部署程序,講白一點就是不想每次都要依環境差異而透過手工進行設定調整及打包程序。不過有趣的是還是有很多軟體開發人員仍然堅持手工打造然後因為一點疏失就上錯程式捅下漏子!
但是不知道為什麼,整個 Maven 中的 xdoclet plugin 預設一直使用舊版的 xjavadoc 套件,導致在處理 JDK 1.5 新增的泛型特性(Generics)時因為不認識角括號 < 而吐出一大堆錯誤訊息,並連帶使的 Maven 原本提供的 javadoc 操作失敗(產生的 javadoc 不完整),對開發公用程式庫且必須提供 javadoc 的人員來講就變的很困擾。
一直逃避不是辦法,所以今天花了點時間找了網路上的資料後試出了解決方法。基本上是參考 解決xdoclet-maven-plugin於jdk5上跑發生問題 的說法,但文中所提的 plugin 來源 http://quebbemann.kicks-ass.net/maven2/repository/ 被 威猛的趨勢科技世界級創新Smart Protection Network主動式雲端截毒技術 擋在門外... 只好另外找其他的 plugin 來源。
總之,要讓 xdoclet 叫用新版的 xjavadoc 模組的方法是覆寫 xdoclet-maven-plugin 的相依性設定,使 xdoclet-maven-plugin 正確叫用新版的 xjavadoc 1.5 去解析 Java 原始碼,因此需要在 xdoclet-maven-plugin 設定區塊下新增相依性設定如下:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>xdoclet-maven-plugin</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>ant</groupId> <artifactId>ant</artifactId> <version>1.6.5</version> </dependency> <dependency> <groupId>xdoclet</groupId> <artifactId>xjavadoc</artifactId> <version>1.5-snapshot050611</version> </dependency> </dependencies> <executions> <execution> <id>xdoclet</id> <phase>generate-sources</phase> <goals> <goal>xdoclet</goal> </goals> <configuration> <outputEncoding>UTF-8</outputEncoding> <tasks> <webdoclet destDir="${basedir}/src/main/webapp/WEB-INF" encoding="UTF-8" docencoding="UTF-8" mergeDir="${basedir}/src/main/resources/webdoclet" verbose="true" force="true"> <fileset dir="${basedir}/src/main/java" includes="**/*.java" /> <deploymentdescriptor displayname="${project.name}" xmlencoding="UTF-8" description="${project.description}"> </deploymentdescriptor> </webdoclet> </tasks> </configuration> </execution> </executions> </plugin>
但是光這樣還不夠,因為 Maven 官方的套件庫中並未包含 xjavadoc 1.5 相關資訊,所以必須另外指定去那邊下載 xjavadoc 套件,這只要在 pom.xml 中加入以下設定區塊即可。唯一要注意的是這個套件庫有可能隨時不見... XD
<pluginRepositories> <pluginRepository> <id>jahia</id> <url>http://maven.jahia.org/maven2/</url> </pluginRepository> </pluginRepositories>
好了,經由以上設定後 xdoclet 就不會因為程式碼使用到 JDK1.5 的泛型功能時只會吐出一堆 warning 了!