2012年5月26日 星期六

App Engine 1.6.6 版發佈

原文網址:http://googleappengine.blogspot.com/2012/05/166-sdk-released.html

我們實在太興奮了,迫不及待分享 Search API 這個功能;不過,五月份我們還是有正規的版本發佈時程,裡頭有滿滿的新功能、錯誤修正、以及對一些小東西作粹鍊。

Search API

配合 Search API,我們在 Admin Console 的畫面中加入一個目前仍在實驗階段的 quota 額度限制。我們也修正一些 bug、改變一些 API 的命名以增加一致性。

service 改進

因為不再支援 Master/Slave datastore,新的使用者將不能建立 Master/Slave application。我們強烈建議開發者將現有的 Master/Slave application 轉換到 HRD 上

功能更新

我們一直找尋解除系統限制的方式,讓開發者可以從 App Engine 平台中獲得更多。在這個版本中,開啟付費功能的 application 現在可以設定多達 100 個 cron 工作。(謎之聲:還不是只爽有付錢的人...)

最後,我們每週將會提示一小部份的 admin console 使用者參加使用者滿意調查。

當然,我們沒辦法把所有要告訴你們的東西都放上來,所以請不要忘記閱讀完整的版本更新紀錄(PythonJavaGo 版)。Stack Overflow 的 App Engine 板是很棒的地方,可以讓你從社群、App Engine 團隊中的成員得到技術上的協助,我們也持續地在 Google Group 上討論 App Engine。

譯註:文末還有一段,是 Google App Engine 正在找尋 Solutions Architects

2012年5月4日 星期五

Hibernate + HSQLDB 炸裂

測試環境:Hibernate 4.1.2、HSQLDB 2.2.8、Java 1.6

抓了兩個 H 的最新版,結果前後炸了四五個小時才能開始塞資料。茲紀錄如下。

大抵上是參考 《Hibernate 學習筆記》 (中文嘛...... [毆飛]),只不過 database 改成用 HSQLDB Server 版。

第一個遇到的問題是:只要一作 session.beginTransaction(),Hibernate 就會炸「No suitable driver found for jdbc:hsqldb:hsql://localhost/DBNAME」,最後找到的解法是在建立 Configuration 之前就先執行「Class.forName("org.hsqldb.jdbc.JDBCDriver")」。(參考資料:Hibernate forum

順便補一下,似乎在 Hibernate 4 以後 Configuration.buildSessionFactory() 就被 deprecated 掉,不過(到目前為止)使用起來還是正常。至於標準寫法我沒研究,可參見 stackoverflow

第二個遇到的問題是 session.save() 時 HSQLDB 會炸「user lacks privilege or object not found」,據說如果用 Hibernate 3.6 跟 HSQLDB 1.8 就不會有這種困擾...... Orz。這篇提到要將 Hibernate 的 hibernate.hbm2ddl.auto 設定為 create,實際上要設定成 update。參數之間差別如下:(參考資料:Hibernate reference
  • create:系統 init 時會作檢查 table 是否存在,有的話就會 drop 掉重建。
  • validate:只有在 table 存在時,系統才能正常 init。
  • update:理想狀況,init 時沒 table 會建,有 table 就續用。(不過如果系統運作中有外力 drop table,則會出錯)

做了這些手腳之後,目前 save() 之後東西都會乖乖進資料庫了。於是又寫一篇可能沒多久之後就沒意義的 debug / 教學文...... 軟體業阿...... [遠目]

2012年5月1日 星期二

GWT Elemental library

原文來自於 +Ray Cromwell 以及後續某些 comment。

特別感謝 +YC Ling 指正 bleeding edge 用法。

Ray Cromwell:
為甚麼 GWT 的 SuperDevMode 還沒有 commite 到 trunk?幾個星期前,我提到一個 Google 內部、給 GWT 用的 library,簡稱「clevername」。由於種種原因,目前 SuperDevMode 跟 Google 內部的東西產生了一些相依性,其中一個就是「clevername」。