2009年8月7日

Grails/GAE project in Eclipse

雖然對Grails支援最好的IDE應該是IntelliJ,可是用習慣Eclipse的我,還是選擇Eclipse。

要在Eclipse上跑Grails,前置作業可以參考我另一篇"Grails on Google App Engine傻瓜包",先建一個project。
然後在Eclipse上import project:
File -> import... -> General -> Existing Projects into Workspace

然後我有遇到兩個error,這邊是我的作法。

1. jdo:
會看到這樣的error
unable to resolve class Persistent , unable to find class for annotation
這是因為它會看不懂這些
@PersistenceCapable
@PrimaryKey

我是把project下的target/war/WEB-INF/lib/jdo2-api-2.3-ea.jar加到build path,來解決這問題。

2. spring
conf/spring目錄會看到紅色error,error敘述如下:
Invalid Package declaration in script: xxxx\grails-app\conf\spring\resources.groovy is not in a source folder matching the package declaration: train/grails-app/conf/spring resources.groovy line 0

這個只要把conf/spring加入source path就ok了,否則Eclipse會將他當作package。


2009年8月2日

Grails on Google App Engine傻瓜包

1. 準備工作2. 環境變數
export GRAILS_HOME="/home/lundi/Java/grails-1.1.1"
PATH="$PATH:$GRAILS_HOME/bin"
export JAVA_HOME="/usr/lib/jvm/java-6-sun"
export APPENGINE_HOME="/home/lundi/Java/appengine-java-sdk-1.2.2"

3. 建立google app
  • grails create-app lundi326
如果後面跟google App Engine的app不同,則要在grails-app/conf/Config.groovy修改
google.appengine.application="app-name"
  • 安裝Grails AppEngine plugin及Grails web application
cd lundi326
grails uninstall-plugin hibernate
grails install-plugin app-engine
grails create-domain-class lundi.Game
grails install-plugin hibernate
grails generate-all lundi.Game
grails uninstall-plugin hibernate
grails app-engine run


4. 上傳到google App Engine
grails set-version 1
grails app-engine package
$APPENGINE_HOME/bin/appcfg.sh update target/war


過程中,我浪費不少時間,因為之前我都用grails create-domain-class Game,都會失敗,後來改grails create-domain-class lundi.Game,才可以,好像一定要有package,或許是google App Engine規定的吧。

完成。 http://lundi326.appspot.com/

參考:
Grails on Google App Engine
Grails AppEngine plugin 裏面的介紹也很不錯

2009年7月26日

我的第一個Android程式及google code project

完成了我第一個Android程式,藉由這個猜數字小遊戲來了解Android SDK及google code project。透過練習,我發現Android程式蠻好寫的,寫Android就像是在寫Java,在加上一些XML檔的佈署,XML佈署像是AndroidManifest.xml及res目錄裡的layout和values。GUI部份還不錯,會比之前寫Java更簡單,因為可以先在layout裏的XML完成基本的GUI。

猜數字遊戲是我在國中時期很愛跟同學玩的小遊戲,猜4個數字,透過xAxB的結果判斷猜對幾個數字及位置,4A0B就結束表示猜對了。放在手機裡,打發時間順便動動腦,蠻不錯的。




因為我覺得landscape mode比較適合,所以我打算固定在landscape,要固定在landscape mode,可以透過AndroidManifest.xml設定。

<?xml version="1.0" encoding="utf-8"?>

<manifest
xmlns:android="http://schemas.android.com/apk/res/android"


package="android.guessNum"


android:versionCode="1"


android:versionName="1.0">

<application
android:icon="@drawable/icon" android:label="@string/app_name">


<activity android:name=".AndGuessNum"


android:screenOrientation="landscape"



android:label="@string/app_name">


<intent-filter>


<action android:name="android.intent.action.MAIN" />


<category android:name="android.intent.category.LAUNCHER"
/>


</intent-filter>


</activity>

</application>

<uses-sdk
android:minSdkVersion="3" />

</manifest>


有空在寫一些開發Android SDK的心得。下載可以到AnGuessNum project,打發時間還不錯。

2009年7月25日

在文章裡加上程式碼

轉貼一下網路找到的文章,因為這跟blog有關,貼一下以防那天換template之後又忘了。
來源:[Blogger 技巧] 於文章顯示程式碼語法

這段加到</head>之前,使用時加上<code></code>
並且記得:
將 < 以 < 取代
將 > 以 > 取代
將 & 以 & 取代

code {
display: block; /* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 9pt;
overflow:auto;
background: #f0f0f0 url(http://圖片位置) left top repeat-y;
border: 1px solid #ccc;
padding: 5px 5px 5px 20px;
max-height:200px;
line-height: 1.2em;
margin: 5px 5px 0 15px;
}


圖片我是用 http://klcintw.images.googlepages.com/Code_BG.gif
是這篇教學裏面的,[筆記]在文章裡顯示優質的程式碼區,這篇的css我用會失敗,所以後來又換上面那一個。

2009年7月12日

Michael Jackson Tribute - Stockholm

YouTube上看到幾個Michael Jackson Tribute的影片,超酷的!網路上查,這隻影片寫official,http://www.youtube.com/watch?v=lVJVRywgmYM,主辦單位似乎是 http://www.bounce.nu/ ,不過無論如何,我是覺得很感人,MJ的音樂影響力真的很大,我想即使是套好的,應該真的有些是路人進去參與的吧。

幾個我搜尋到,向Michael Jackson致敬的影片。






2009年7月10日

scim轉換到gcin

以前使用gentoo時,我都是習慣用gcin輸入法平台來輸入中文,最近換使用ubuntu 9.04之後,發現預設的是scim,雖然一開始不太習慣,不過想說既然ubuntu會把它設為預設,或許他有過人之處,所以抱著姑且試之心態使用看看。其實我覺得輸入法平台只要夠用就ok,因為反正用得也是裏面的輸入法。不過後來是因為一個問題解決不了,我不得不找其他方法試試。

其實原因就是我在一個flash web game上不能輸入,在google搜尋之後,看到一些文章有提到也有不少人遇過scim在flash下不能輸入的問題。我也沒一一點進去細看,我想到的是,乾脆換回我的舊愛gcin吧。紀錄一下在ubunt轉換的過程。

1. 安裝gcin,我直接在Synaptic找gcin安裝。(用ubuntu之後,真的很少用command了,以前gentoo安裝我都用指令的)
2. 使用者的環境轉換成gcin。兩種方式,
sudo update-alternatives --config xinput-zh_TW
會出現選項,然後選擇gcin。

im-switch -s gcin
兩種方式都可以,差別是第一種是整個系統環境切換成gcin,第二種是自己的帳號切換成gcin。我是用第二種。
3. X window登出再登入,這樣就完成了。

切換後就可以看到以前習慣的gcin(大喜),換成gcin之後,有一點我不習慣地方,選字是用asd而不是以前我習慣的123,這可以在"設定->gcin注音/詞音設定->鍵盤排列方式"去改。另外一個奇怪地方,不知道是我自己問題還是怎樣,換gcin之後,我發現九宮格數字鍵不能輸入數字,變成是在操作滑鼠,我是去"系統->偏好設定->鍵盤->滑鼠控制鍵",把"允許使用鍵盤控制滑鼠指標"取消解決問題。


2009年6月29日

在ubuntu擷取Android手機畫面

要擷取Android手機畫面的方法,一種是直接在手機上安裝軟體,不過似乎都是要root權限才有辦法。我也有在網路上找過一個Screenshot軟體,不過由於我沒root,所以無法擷取。root權限好像是要刷ROM才有辦法獲得,我不太敢去亂動,怕出亂子。另一種方法是,手機連接電腦,透過電腦的軟體擷取手機畫面。

之前我有試過在Windows下抓畫面,只要參考這篇"擷取 Android 手機畫面",就可以輕易透過Windows擷取手機畫面,我有試過一次。可是由於最近我桌面環境改ubuntu了,所以我也去找在ubuntu擷取手機畫面的方法,我參考了以下兩篇也成功的做到了。
Taking Android phones screenshots from Ubuntu
DDMS and Ubuntu 8.10 64-bit

我的環境:
ubuntu 9.04、AMD 64 x2 5200+(特別提CPU是因為我碰到一個問題可能跟我裝了64位元本版有關)

方法如下:
1. 下載Android SDK並解壓縮。
2. 建立一個udev rule,以便讓DDMS可以透過USB存取Android手機。
sudo vi /etc/udev/rules.d/90-android.rules
加入這行然後存檔。
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
3. 手機打開debug mode。設定->應用程式->開發,如圖將USB debug打開。

4. 手機透過USB連上電腦(這步是廢話)
5. 到剛解壓縮SDK的目錄下的tools目錄,找到ddms並且執行。出現視窗之後,Device->Screen Capture或直接按ctrl+s就會出現擷取手機畫面的小視窗,然後就可以把畫面存下來。


對了,如果你的ubuntu沒裝過java,請記得先裝一下java jre。流程大概這樣就可以完成,不過如果跟我一樣執行ddms遇到這個問題:
09:19 E/ddms: shutting down due to uncaught exception
09:19 E/ddms: java.lang.UnsatisfiedLinkError: /home/lundi/Java/android-sdk-linux_x86-1.5_r2/tools/lib/libswt-pi-gtk-3236.so: /home/lundi/Java/android-sdk-linux_x86-1.5_r2/tools/lib/libswt-pi-gtk-3236.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1687)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1030)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
    at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:22)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
    at org.eclipse.swt.widgets.Display.<clinit>(Display.java:126)
    at com.android.ddms.UIThread.runUI(UIThread.java:329)
    at com.android.ddms.Main.main(Main.java:97)
這問題或許跟我用64位元ubuntu有關,就參考一下我上面第二個連結,解法就是:
1. 安裝ia32-sun-java6-bin。
2. 編輯ddms檔,第72行改為"java_cmd="/usr/lib/jvm/ia32-java-6-sun/bin/java"

2009年6月26日

可能誤會ubuntu了

可能我誤會ubuntu了,之前桌上型電腦是用Wubi方式安裝,今天想說試試直接裝在硬碟看會不會快一些,想不到,真的是差很多。現在執行程式的速度感覺有明顯變快,並且播放影片不會頓了。不過用wine玩Windows的小game還是會頓,才只是個小遊戲而已啊(台灣十六支麻將),怎會頓呢?以前我也用gentoo玩過wow的啊。必須要想辦法讓ubuntu環境可以玩麻將,這樣才可以比較安穩的使用ubuntu,不然老婆會一直想切換回Windows。

噗浪之血拼夜

現在噗浪、twitter的小道消息實在太快了,在準備要睡覺之前,突然看到有人發文說"二十吋液晶只要九百九是在開什麼玩笑?",馬上點連結去看,哇!DELL的20吋LCD才只要999哦。



22吋也折扣不少


下單完成


最近實在太敗家,我買三台LCD幹嘛 XD

PTT有乳摸說:『戴爾公司已決定將該錯誤報價作為實際出貨價格 並將在系統錯誤期間生成的該部分訂單 按照正常訂單處理,戴爾公司將自行承擔因此帶來的損失 系統修正後即恢復原價。』不知道到底是怎樣,明天在看看消息吧。噗浪之血拼夜,小朋友又出走幾張了。

早上再看一次,DELL網站更新了,不知道DELL會不會出貨。 n_n


2009年6月24日

改用ubuntu?我在想想....

這兩三天晚上使用電腦的時間都花在將我的桌上型電腦跟EeePC換成ubuntu。有時覺得,我幹麼花這麼多時間來搞這些?用XP不是用很順了嗎?我也不知道,玩電腦這麼多年,有時就突然很想東摸西摸,以前玩最久的Linux是gentoo,應該有玩三年左右吧。後來換公司之後,在公司不方便玩Linux,突然就整個沒在碰Linux了,一停就停了約兩年。

這次也不知道為何,突然又想到要玩Linux,雖然以前gentoo給我很多美好回憶,不過這次我想換換口味,加上我想玩更輕鬆一點的Linux(gentoo太多東西要去改),然後我就選了最近應該是最紅的ubuntu。

ubuntu給人的第一印象實在太棒了,多樣化的安裝方式,讓人很容易進入這個環境,就算是新手,我想也是很容易可以自己完成安裝的。ubuntu安裝實在太簡單,所以我也懶得寫下來了,網路上這方面資源非常豐富。EeePC部份,因為安裝後還有一些EeePC特殊的東西要裝,我有參考兩個連結:
[MEMO]ubuntu 9.04 on EeePC 701/702 & CPU Full Speed
Notes for EEE 701 Users running Ubuntu 9.04 Jaunty

這麼完美的安裝之後,是不是使用ubuntu就一帆風順呢?我的確對ubuntu一進入桌面環境的第一印象也是很好,跟以前我玩gentoo比,實在太進步了,一裝好就有這麼完善的桌面環境可以使用了。不過當我越使用,以前玩Linux的一些回憶又回來了。又是會碰到一堆問題,然後要一直去search google,去找答案。以前我玩Linux是樂在其中,不過我現在其實比較想玩輕鬆點的Linux。難怪有人說『玩Linux再怎麼久,永遠覺得自己是新手』。

所以我說,我真的要完全改用ubuntu嗎?我要在想想....

列出一些目前遇到問題:
1. flash中文問題(參考這篇解決 - Ubuntu 9.04 的 Firefox Flash 中文無法顯示修復
2. flash中不能輸入,看一些網頁是說,似乎是很久的bug。(怒!我要玩web game啦!)
3. EeePC效能問題,我是參考上面那兩個連結。
4. 桌上型這台,播放影片都會當機。還不知道怎麼解決,這點對我來說很嚴重。
5. wine效能不佳,沒辦法,我每次玩Linux都要想辦法讓Linux可以跑windows game,好讓我老婆玩麻將。

總之,ubuntu某些程度上,有讓我驚喜到,不過並沒達到我預期現在Linux該更方便的模樣。

2009年6月20日

GSmart MS 800下、HTC Magic上

Mobile01真的是台灣第一敗家網,我的第一隻智慧手機GSmart MS 800,就是因為看Mobile01的介紹,然後直接跟Mobile01團購。最近在Mobile01持續看HTC Magic的幾篇開箱文之後,又是看得我心癢癢,經過幾天跟小惡魔的纏鬥後,還是在2009/6/14敗下去了。其實我買這隻,有個因素一直讓我猶豫不已,就是這幾個月,陸續會有不少新Android手機上市,買了怕後悔,不過敗家的人都知道『早買早享受、晚買想折扣』,我衝了。

空機入手,加一顆電池跟座充,共21400。要不是可以報帳,我想我是不會買這樣價位的手機的。不過說真的,當我入手後,把玩個幾個小時,我還真的是非常喜歡這隻手機。而且我不得不說,HTC的手機做得真的很有質感,跟之前MS 800比,Magic真的是大勝。這裡我也不說MS 800壞話,畢竟她也帶給我不少快樂時光。

雖說Android系統還在只在起步階段,可是Magic得完成度真的非常高,這個又不得不稱讚一下HTC,搶先發行了前兩款Android手機,並且達到不錯的完成度。看網路上很多介紹,可以知道這手機跟Google服務做了很好的結合,而Google服務大多是必須上網的,所以這隻手機我覺得真的是適合有辦上網吃到飽比較好。如果你有上網吃到飽,那這隻手機真的很不錯用,如果你很喜歡用手機上網又熱愛Google服務,那我覺得這手機應該就是目前市面上最適合你的。

用一個新的lable來紀錄這隻手機的生活,我決定不用Magic,我打算用小安,小安表示Android,因為我打算用Android作為主角。

就用MS 800拍Magic、Magic拍MS 800來作個交接吧!


很棒的勸敗文:(怕小朋友出走最好不要點)

twitter、Plurk的第一次

我的twitter的第一推是在2007/8/24;而Plurk第一噗是在2009/6/17。

今天twitter,流行查自己的MSN註冊時間,我也查了一下:您申請Messenger的時間是2004年3月31日17時58分7杪。就順便想到這問題:『你還記得你的twitter或Plurk的第一次是何時嗎?』我有時對一些帳號過一陣時間去回想在這帳號我發生過什麼事情時,我好奇想知道,我這個帳號第一次跟她的相遇是哪一天。像陪伴我多年的魔獸世界,我的第一天是在2005/10/15,魔獸是因為有刻意記下來,所以才沒有忘記,因為我有創一隻角色,用我登入第一天為名字。可是還有很多帳號,我事後都回想不起來第一次是在什麼時候。

在我使用Gmail之後,這件事變得很容易。因為我帳號都是用Gmail註冊,而我有一個習慣,註冊的mail,我都會給一個lable - "Account",所以要找帳號註冊那一天,我就會去找lable,就會一下就找到了。

突然發現,我blogger的第一篇在2005/1/23,還真久,不過文章真少。(2005/1/23那篇我刪了)

2009年6月18日

星光五最好看的竟是預告片

其實我本來標題想寫『星光五最好看的只剩預告片』,可是後來覺得這樣寫口氣有點比較重,不過我心裡,對最近這兩集的星光五的確是這樣想的。

上週看完星光五,這就是我第一個感覺,真不精彩,又被預告騙了!然後一看片尾的下集預告,又跟上集看完時有一樣的感覺,下集好像不錯看。而且我已經連續兩週有這樣的感覺了,所以我才會得到這樣的結論『星光五最好看的竟是預告片』。

在我最喜歡的星光二班落幕之後,後面的星光大道,我一直找不到特別想要看得理由,只是那個時段也沒特別想看的節目,所以還是常常會打開來加減看。相較我更少看得超偶,最近我有覺得似乎超偶的歌手唱歌比星光五精彩,不過以預告片來說,星光實在是大勝,看來詹魔王的功力還是很厲害的。

這週,我可能還是會看吧,不過應該會更不專心了,我都一邊在上網。因為我對預告片越來越不相信了!

2009年6月17日

還在找Blogger模板嗎?來看看BTemplates吧

最近突然online game玩膩了,真奇怪,自從魔獸被對岸玩家大舉入侵,變得要排隊之後,我就開始變得很懶得玩魔獸,然後到處找其他online game又找不到對味的,所以最近又開始玩一些web game,跟開始敗家。(前天買HTC Magic)難怪不少人說,玩魔獸其實很省錢,我越來越懂了。XD
太久沒更新Blogger,竟發現上一篇要一年了。為了慶祝重新post文,今天好好的給他改頭換面一下,換一個新的template。為了換這個template,我到處在網路上找,東找西找,剛好看到這個網站,BTemplates,想不到提供這麼豐富的templates,隨手挑了一個稍微順眼的,先試用幾天看看吧。