跳到主要內容

發表文章

目前顯示的是 2013的文章

Google Application Engine開發筆記

GAE (1.7.4):取得上傳日期String applicationVersion =SystemProperty.applicationVersion.get();Date uploadDate =newDate(Long.parseLong(applicationVersion.substring(applicationVersion.lastIndexOf(‌​".")+1))/(2<<27)*1000); Ref: SystemProperty
JPA 2 限制:
Simple JoinEntity Group Transaction
An entity’s parent, parent’s parent, and so on recursively, are its ancestors; its children, children’s children, and so on, are its descendants. An entity and its descendants are said to belong to the same **entity group**_._
一般我們常常在一個transaction內大量修改同一類型物件,例如修改多個User的資料,這就算 Cross Group Transaction操作,最多不能超過5個entity group。 參考資料:
Google App Engine JPA test casesimple join works on unowned one-to-many relationship.limitation: Problem with query : Joins can only be sorted by the join column in ascending order (in this case
‘attendeeList’)開發GAE會遇到的問題 Maven 若使用JPA,datanucleus plugin 的設定官方文件未提及,不方便,很容易跟project 依賴的版本不合。我參考
http://www.loop81.com/2013/02/gae-google-app-engine-jpa2-maven-and.html
https:…

「父親給兒女的一封短信」金筆獎

之前寫了一點文字抒發跟亮亮相處的感動,老婆投稿到自由時報、五美文教基金會辦的「父親給兒女的一封短信」徵文比賽,竟得了全國只選出3名的金筆獎。
作品刊登在此: http://www.libertytimes.com.tw/2012/new/aug/7/today-family4.htm


收到得獎通知的時候我相當驚訝,相對於其他兩位金筆父親,一位女兒過世、一位父親在監獄服刑,我的經歷算是很平凡的。除了很開心我的文字能感動評審以外,也要感謝老婆包容我一開始擔任爸爸的許多表現不佳之處。

相關報導:http://www.libertytimes.com.tw/2012/new/aug/8/today-art1.htm


作品全文:

寶貝女兒: 兩年前,妳不讓我抱,只要媽媽;現在,一起床就找我,說很愛爸爸,我去上班,妳還會哭。媽媽說:「爸爸,你成功了。」我感動得眼裡都是淚。 沒有賺到一桶金。沒有暴紅。我就這麼成功了。 寶貝,請記得──你的健康和笑容是世界上最美好的瑰寶。

亮亮的童言童語

2012/9/9
亮亮三歲多時,有一次在早餐後打電話給上班中的我,
我在電話中向碧鳳提到工作上的瓶頸,也跟亮亮講了一下話,掛上電話後,
亮亮問碧鳳:「爸爸為什麼聽起來沒有力氣?」
碧鳳很驚訝亮亮聽得出來,就解釋說:「因為爸爸工作上遇到一些困難」
亮亮說:「那我給他抱抱」
碧鳳說:「為什麼呢?抱抱就會好了嗎?」
亮亮說:「對呀!如果我沒力氣,媽媽抱我一下,就會好了」
碧鳳說:「好,那我們打給爸爸,跟他說“抱抱”」
亮亮打了電話,不好意思地說了。
掛上電話後,亮亮用一種無力的聲音對碧鳳說:「媽媽,我現在遇到一點困難...」


2012/8/1
亮亮有憋大便的壞習慣,某天晚上終於願意坐上馬桶,碧鳳為了鼓勵她,祭出獎勵辦法:「等一下我們要吃巧克力冰淇淋,你大多少份量,我就給你吃多少冰」...


2012/1/3
亮亮語言學習能力很好,即使不懂的詞彙聽過一、兩次就能記住並用在生活中,而且她會自己推敲該詞彙的意思。有次在餐廳吃飯,服務生幫我們整理桌面時說:「等一下幫你們送新的餐巾紙過來」,亮亮看了一下她的碗大叫:「餐巾紙我吃不完啦!」

2011/10/10
昨日下午聽見妹妹大哭,趕到現場,老婆說亮亮踩妹妹的手,要我把她打一頓,我想這危險動作一定要受管教,因此抓起亮亮,打了幾下屁股,說:「下次還可以踩妹妹的手嗎?」亮亮哭著說:「不可以...可是媽媽剛剛已經打過了阿...」。原來剛剛老婆說得是:「

帶孩子有感

11/3

帶孩子也會重新發現自己更多的好與壞。

發現自己竟然可以屢次被孩子惹到前所未有的生氣,然後事後又懊悔自己的怒氣。

發現自己不能接受孩子的某個性格,似乎也是自己的性格。

發現自己在某些方面其實不能作為孩子的榜樣。

但,
現在可以吃以前不敢吃的那些黏呼呼、吃到亂七八糟、稀稀爛爛、或殘破不堪的食物。

現在可以處理那些強烈味道、溼溼黏黏的東西。

可以忍受過去不曾有的疲累、煩躁、不適,發現自己更容易感動流淚、更能溫柔同理、更能理解上帝與我的關係。



10/20

有了孩子之後,常常都會重新思考。
重新思考如何對待一個人?怎樣愛一個人?
重新思考什麼比較重要?要怎麼生活?
重新思考我活著的意義以及我們正在創造怎樣的世界。

bash script 學習資源

用SWTBot 在 Eclipse 測試 content assist

SWTbot 是一個 Eclipse plugin 可用來自動測試 Eclipse plugin。

Javadoc

幾點注意

test case運作時必須加上 plug-ins:
org.eclipse.core.net
org.eclipse.ui.ide.application執行時可能需要加上JVM參數 -XX:MaxPermSize=512m ,在我的環境下總是會遇到 outofmemoryerror: PermGen Space模擬按鍵 :http://wiki.eclipse.org/SWTBot/Keyboard_Layouts


以下是簡單的測試案例,其步驟是移動游標到指定位置,並觸發content assist功能,並檢查proposal內容是否如我們預期。

import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor; import org.eclipse.swtbot.eclipse.gef.finder.SWTBotGefTestCase; import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; import org.eclipse.swtbot.swt.finder.utils.Position; import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(SWTBotJunit4ClassRunner.class) public class Basic extends SWTBotGefTestCase { private static SWTWorkbenchBot benchBot; @Be…

Application Framework 設計感想

關於一個application framework 該怎麼設計,根據這陣子工作的經驗,整理一些心得。


使用時鬆散,設計時嚴謹。
鬆散是方便使用者,算是抽象化帶來的好處,使其不需要瞭解運作細節就可以使用。設計嚴謹才容易在其上發展更多應用,如輔助工具等。可以讓你鬆散使用的技術,背後在設計的時候都有嚴謹的定義,當運作不如你預期的時候,可以依循一個嚴謹的規則檢視背後的運作流程來除錯。
從簡單的原則與概念開始,漸進地增加概念。
每次增加一個概念,都要與既有概念一起比較分析,看有無衝突之處。
Spring framework 最早只從一個 Dependency Injection概念開始,發展到今天成為一個 de facto Java EE standard。
我相信儘可能的維持簡單才是好的設計,因為人的心智是極為有限的。
整體應維持一致的設計哲學。
兩種相反的程式語言設計哲學:
Python: There should be one-- and preferably only one --obvious way to do it
Perl: There's more than one way to do it.
沒有對錯,只有維持一致才不會讓使用者混亂。
有一致的規則,使用者容易理解,可以舉一反三,不用事事皆需查文件,也無需針對各種情況寫文件。
從使用角度來定義需求,並用嚴謹的技術去滿足。
從使用者角度評估才能解決他們真正的痛點,但用嚴謹的技術才能維持長久發展。
Framework 新創的抽象概念應有明確的定義。
定義不清楚將導致使用者學習的障礙。
Application framework不是Application
Application framework的目的是協助它的使用者建造application,而application(應用程式)本身是要解決應用情境的問題。所以application framework的抽象層次要更高一點,不要對應用情境有過多的假設。