跳到主要內容

發表文章

目前顯示的是 2013的文章

Google Application Engine開發筆記

GAE (1.7.4): 取得上傳日期 String applicationVersion = SystemProperty . applicationVersion . get (); Date uploadDate = new Date ( Long . parseLong ( applicationVersion . substring ( applicationVersion . lastIndexOf (‌​ "." )+ 1 ))/ ( 2 << 27 ) * 1000 ); Ref: SystemProperty JPA 2 限制: Simple Join Entity 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 case simple 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 依賴的版本不合。我參

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

之前寫了一點文字抒發跟亮亮相處的感動,老婆投稿到自由時報、五美文教基金會辦的「父親給兒女的一封短信」徵文比賽,竟得了全國只選出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 昨日下午聽見妹妹大哭,趕到現場,老婆說亮亮踩妹妹的手,要我把 她打一頓,我想這危險動作一定要受管教,因此抓起亮亮,打了幾下 屁股,說:「下次還可以踩妹妹的手嗎?」亮亮哭著說:「不可以. ..可是媽媽剛剛已經打過了阿...」。原來剛剛 老婆 說得是:「 我已經打了她一頓」 2011/9/7 亮亮最近愛上醫生扮演遊戲... 亮醫生:2號~~悅寧~~ 圈媽:我在忙,沒空帶去看哦。 亮醫生:好,那等一下再來。3號~小獅子。 -------------------- 圈媽帶圈圈坐在醫生面前,醫生打著她的小電腦。 亮醫生:怎麼了嗎? 圈媽:就是最近有點咳,睡覺時咳的最厲害。 亮醫生用聽診器聽前胸後背、檢查喉嚨、耳朵; 然後在圈圈小腿上打了一針,說:好了,去領藥。 圈媽:那她是怎麼了? 亮醫生:就是最近有點咳,睡覺時咳的最厲害。 圈媽:那不是我剛才的台詞嗎? 2011/8/29 碧鳳:「你要喝紅茶還是奶茶?」 亮亮:「我要喝紅茶..................... .........還要加牛奶」 碧鳳:「那就是奶茶!」 2011/7/15 來

帶孩子有感

11/3 帶孩子也會重新發現自己更多的好與壞。 發現自己竟然可以屢次被孩子惹到前所未有的生氣,然後事後又懊悔 自己的怒氣。 發現自己不能接受孩子的某個性格,似乎也是自己的性格。 發現自己在某些方面其實不能作為孩子的榜樣。 但, 現在可以吃以前不敢吃的那些黏呼呼、吃到亂七八糟、稀稀爛爛、或 殘破不堪的食物。 現在可以處理那些強烈味道、溼溼黏黏的東西。 可以忍受過去不曾有的疲累、煩躁、不適,發現自己更容易感動流淚 、更能溫柔同理、更能理解上帝與我的關係。 10/20 有了孩子之後,常常都會重新思考。 重新思考如何對待一個人?怎樣愛一個人? 重新思考什麼比較重要?要怎麼生活? 重新思考我活著的意義以及我們正在創造怎樣的世界。

bash script 學習資源

語法速查: http://www.tldp.org/LDP/abs/html/refcards.html 完整介紹: Bash Guide for Beginners http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html Advanced Bash-Scripting Guide http://www.tldp.org/LDP/abs/html/index.html 鳥哥教學: http://linux.vbird.org/linux_basic/0340bashshell-scripts.php sed: 字串取代工具 http://linux.vbird.org/linux_basic/0330regularex.php

用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 SWTWorkb

軟體版本編號方式

  Apache Portable Runtime Project Version Numbering  這分文件詳細定義編號意義,讓編號代表明確的軟體工程意義。 基本上就是3個數字組成:  MAJOR.MINOR.PATCH 每一個數字改變都有相容性上不同的意義。 由github 提出的版本編號規格: Semantic Versioning

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的抽象層次要更高一點,不要對應用情境有過多的假設。

TortoiseGit (Git 客戶端)

TortoiseGit是Windows下可用的Git 客戶端,可用來與Github連線,push及pull程式碼 簡單裝安裝教學: [教學]初心者git (TortoiseGit) + GitHub使用教學 使用的時候記得啟動Pageant (Putty agent)並把產生的private key加到Pageant中,才可進行ssh通訊。