部落客廣告聯播

2011年1月21日 星期五

Android與Google Spreadsheet Data API



今天在Android的專案中使用Google官方下載的Spreadsheet Data API jar檔,
寫了程式要從Google試算表擷取資料,沒寫到在模擬器執行時卻發生了錯誤:

  
  ERROR/AndroidRuntime(3522): *java.lang.VerifyError:  com.google.gdata.client.Service*


看來Google官方的GData API java client library似乎不能在Android上正常使用,
我寫了一個下午的程式沒想到在執行時才知道,真是浪費我的生命呀~

找了資料似乎一直沒看到有人提到在Android中存取Google Spreadsheet的java library,
在努力不懈找了許久發現了這篇網誌:


Google SpreadSheet Library for Android



網誌作者提到說自己開了個專案,主要就是開發一個能在Android上存取Google Spreadsheet的library,該專案已經hosting在Google code了:
http://code.google.com/p/google-spreadsheet-lib-android/

找時間在試試看了,先感謝這位印度的Prasanta Paul囉~

另外,Google Spreadsheet列數、欄數、儲存格數限制請參考:
http://www.google.com/support/forum/p/Google%20Docs/thread?tid=6248d49306db8a85&hl=en

2011年1月20日 星期四

2011年1月6日 星期四

GAE/J 的servlet request計時器與cron service


在GAE上寫了程式要透過cron服務排程來撈取網頁資料存進data store,
當寫好servlet直接使用瀏覽器觸發servlet url執行, 由於我撈的資料較多處理時間較常,沒想到就出現了exception了。

原來在GAE上的request是有時間限制的,若request進來處理了30秒還沒完成就會被終止並丟出exception,詳閱: http://code.google.com/intl/zh-TW/appengine/docs/java/runtime.html#The_Request_Timer。

GAE上的排程乃是經由定義cron.xml讓GAE的cron service在設定的時間點或區間觸發我們servlet程式的URL。

然而好消息是最近新的GAE1.4版,把Cron service的30秒限制拿掉了,也就是說經由Cron觸發的servlet的最大處理時限是10分鐘,太棒啦。(詳見:http://googleappengine.blogspot.com/2010/12/happy-holidays-from-app-engine-team-140.html)

另外發現許多的GAE英文文件在中文的文件中是沒有的,比如說像是Task Queue(http://code.google.com/intl/en/appengine/docs/java/taskqueue/),所以看完中文版的官方文件(http://code.google.com/intl/zh-TW/appengine/docs/)後還是要再去逛逛英文版的文件(http://code.google.com/intl/en/appengine/docs/)看看有沒有其他可參考的有用資訊~

另外有個東西讓我搞了很久,就是cron.xml裡面若有中文字可是會Deploy失敗的~

2011年1月1日 星期六

2010年12月31日 星期五

GAE上使用JPA的inheritance

GAE/J上的data store並不是關聯式資料庫所以對於JPA不的功能並不是百分百的支援,像是對於JPA對應於物件繼承的支援就只支援InheritanceType.TABLE_PER_CLASS
(關於InheritanceType.TABLE_PER_CLASS詳見:http://caterpillar.onlyfun.net/Gossip/EJB3Gossip/TableperConcreteClass.html),若是指定其他InhreitanceType則在執行時會拋出Exception~

另外JPA Query物件的方法getSingleResult()若撈取到無資料料會丟出NoResultException,若撈取到的資料超過一筆會丟出NonUniqueResultException。而getResultList()若撈取無資料則會傳回一個size為空的List物件(詳見:http://download.oracle.com/javaee/5/api/javax/persistence/Query.html#getSingleResult())

2010年12月22日 星期三

jQueryWTP - 讓你在eclipse寫jQuery時也有程式碼提示

寫java程式的工程師是很幸福的,隨便一款IDE都會有程式碼提示功能,那麼在寫jQuery script時呢?
有的。如果你使用Eclipse,使用jQueryWTP就可以達到。jQueryWTP並不是Eclipse的plugin,他只提供一個工具來patch現有的Eclipse WTP plugin 來加入對jQuery的支援~

話不多說,就裝來用用看吧~

  1. 首先到http://sourceforge.net/projects/jquerywtp/下載jQueryWTP 工具,我使用的Eclipse是Helios(3.6)的JavaEE英文版,在這我便下載了jqueryWTP0.40foEn.jar
  2. 執行java -jar jqueryWTP0.40foEn.jar
    〔Jar File〕選擇你eclipse\plugin目錄下的org.eclipse.wst.jsdt.core_?????.jar
    〔Output Folder〕選擇另一個暫存的資料夾,這裡我先選存到我的桌面
    按下Generate會在〔Output Folder〕產生一新的org.eclipse.wst.jsdt.core_?????.jar
  3. 先備份你eclipse\plugin目錄下的org.eclipse.wst.jsdt.core_?????.jar,在將新產生的org.eclipse.wst.jsdt.core_?????.jar覆蓋掉原本eclipse\plugin目錄下的檔案
  4. 接著使用-clean參數來執行eclipse (用來清除plugin快取,使新的jar生效)
  5. 接著開啟你的eclipse,就可以快快樂樂的在Eclipse裡面使用jQuery的程式碼提示功能囉~爽的啦~
另外,如果你使用DreamWeaver也想要有jQuery程式碼提示功能,可以到http://xtnd.us/dreamweaver/jquery下載jQuery Extension for DreamWeaver來使用~

2010年12月13日 星期一

HibernateTransactionManager 與 TransactionDefinition.PROPAGATION_REQUIRES_NEW


關於Spring+Hibernate裡設定HibernateTransactionManager的TransactionDefinition.PROPAGATION_REQUIRES_NEW一直都沒有作用,
關於問題描述可參考此篇: http://forum.springsource.org/archive/index.php/t-50039.html
一直不了解為什麼?

搞了半天原來只有JTATransactionManager支援REQUIRES_NEW,
詳參考: http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/transaction/TransactionDefinition.html#PROPAGATION_REQUIRES_NEW及以下截圖:
點圖放大


蔡董,原來一切都是我們把它想得太完美了...

2010年11月30日 星期二

EJB3 & JPA 筆記簡報

基於JAVA的開源碼RIA - Apache Pivot

相較於Java FX令人懷疑的前途,Apache Pivot相對穩健。
或許Java FX非常"炫",但體驗過Pivot後相形下執行很順暢。

Pivot能以Java 或其他JVM language(如Groovy、JavaScript等)開法,可以Standalone方式或是Applet方式執行。
Pivot和Swing一樣是Base on Java2D,也使用MVC pattern來分離元件與資料,此外它還有宣告式的UI(WTKX: XML方式宣告UI)、data binding、web service整合、特效等功能。


2010年11月26日 星期五

Amazon 雲端服務免費試用 - AWS Free Usage Tier

Amazon最近終於在2010/11/1為其雲端服務提供了免費方案,以提供新客戶能在有限的額度內體驗、評估Amazon的雲端服務。

Google App Engine在很早前就可以在有限額度的免費使用了。
Amazon如今總算是敞開了試用的大門了。

關於AWS Free Usage Tier請參考:

詳細的中文介紹,可參考 軟體玩家 的文章:

2010年11月17日 星期三

ChinShelf勤學 學習資源管理系統

如果你也和我一樣有下載蒐集電子書的習慣,或許可以試試看這套軟體「ChinShelf勤學 學習資源管理系統」。

ChinShelf可以用來管理、紀錄您電腦裡的電子書(PDF、CHM、DOC等)、教學網頁書籤、您轉存在電腦硬碟裡的教學光碟等,該系統使用Java開發,只要有安裝Java 6執行環境的電腦都可以安裝、使用該系統。

ChinShelf以GPL v3授權發布,原始碼開放並Hosting在Google code專案代管。

ChinShelf的專案網址:http://code.google.com/p/chinshelf/

2010年9月7日 星期二

Java Lobby: Storing passwords in Java web application

在儲存密碼時,要如何增加安全性以防止被破解呢?
此文提到使用加密的話,因為加密是雙向性的,加密過後的結果只要使用正確的方法解密就可以得到原來的密碼。所以此文建議使用密碼雜湊(Password Hashing)來演算後再將密碼存入檔案或資料庫。
那麼,要如何使用密碼雜湊呢? 
 請直接看原文的程式碼範例,該範例簡單明瞭,很快就能將該方法套用在您的系統上使用了~

全文詳見:


2010年8月29日 星期日

2010年8月15日 星期日

Oracle與開放原始碼:一列表的不滿與抱怨


詳全文請閱原文:
http://java.dzone.com/articles/oracle-and-open-source-list?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+javalobby/frontpage+(Javalobby+/+Java+Zone)

5. 拔掉Postgres的插頭
    幾周前,Oracle無預警的中止之前Sun同意Postgres SQL專案開發使用的伺服器。毫無預警與知會。完全就是顧慮Postgres對Oracle和MySQL的競爭~

4. 浪費Sun有才幹的開發人員,尤其是Gosling(Java之父)
   一堆有才幹的人因為Sun被Oracle併購而走人,有些甚至在併購完成前就走了

3. 殺了OpenSolaris

2. JCP和Harmony建議書 開倒車

1. 控告Google

-----------------------------------------------------

希望官僚的Oracle能有所體悟,不要把Java Developer一個個的給氣走....
看來已經有許多人開始懷念被併購前的SUN了....

2010年8月1日 星期日

Dolph's Toolbox - Dolph的工具箱

http://dolphstoolbox.appspot.com/


這個小型WebApplication主要是我體驗GAE(Google App Engine)的一個小作業,主要的功能有:

1. 資料遮蔽SQL指令產製 -->
使用者輸入table名稱、column名稱,此程式產出SQL statement可以用來做資料表格更新,將在資料庫的一些敏感資料以遮罩字元取代,如「王曉明」--> 「王*明」
2. native2ascii、URL encode/decode、base64 encode/decode、Hex encode/decode

實作用到的技術也很簡單,主要只用到了JSP、JSP custom tag lib、jQuery,
而GAE方面的service有用到JDO API做資料儲存、User Service做登入檢查、Java Mail配合Mail service做建議的電子表單結果寄送。

這類簡單的小程式各位應該也能很快就做出來的,一起來玩玩GAE吧。


http://code.google.com/intl/zh-TW/appengine/