2011年12月26日 星期一

GPE 2.5 版介紹

原文網址:http://googleappengine.blogspot.com/2011/12/simple-development-of-app-engine-apps.html

當我們用 Google Cloud SQL 的方式讓 App Engine 支援 SQL,GPE 團隊就努力加強程式人員在撰寫 App Engine application 時的開發體驗,讓 GPE 能使用 Cloud SQL 作為後端的 database。

2011年12月15日 星期四

App Engine 1.6.1 版發佈

原文網址:http://googleappengine.blogspot.com/2011/12/app-engine-161-released.html

為了讓我們的開發者滿心喜悅,我們發佈了本年度最後一個版本(譯註:呼...... [散架])。這個時候有一些團隊裡頭的成員已經在享受夏日陽光了,我們也會在這個版本發佈之後短暫地冬眠一下。不用擔心,我們會按照原訂計畫在一月回來上工,but we couldn't resist tempting you with some new features that will keep you up tinkering well past midnight on January 1st(譯註:無法翻譯...... Orz)

2011年12月1日 星期四

GWT 在 GPE 中的 Run Configuration

測試環境:Eclipse Indigo、GPE 2.4.2、GWT 2.4.0

GPE 將 GWT(還有 GAE)中許多指令與步驟包裝起來,一方面與 Eclipse 開發環境整合、另一方面盡可能讓我們不用自己下指令設定。不過當開發期間作一些變動時,就會發生無法自動校正對應的狀況。例如 host page 改名字或換位置,Development Mode 的 url 列表不會更新、增加/刪除一個 module 之後沒辦法順利執行...... 等等。

這終究還是得回歸問題的根源來處理。從 Run Configuration 的 Main 頁面我們可以看到 Google 的 Web Application 設定當中,Main class 是指向 com.google.gwt.dev.DevMode,輾轉從 GWT 官方文件得知是在 gwt-dev.jar 這個檔案裡頭,實際手動執行(畢竟官方文件上 java 指令寫的是古老的 HostMode,還是自己來一遍比較安心),會列出 DevMode 的參數格式:

2011年11月27日 星期日

為 GWT 端正視聽

原文網址:http://errai-blog.blogspot.com/2011/11/setting-record-straight-on-gwt.html

自從加入 Errai 團隊後,我對人們說了很多關於這個 project 的事。每次在述說的時候,我發現我是在驅除人們對 GWT 的常見誤解、以及講解 GWT 可以怎麼使用。我也發現人們對於 GWT 的程式碼可以輕易地存取 browser 的原生環境感到驚訝,雖然 GWT 在跨 browser 之間的實作細節處理的很好,但 GWT 並不是建立一道高牆把你跟底層環境隔絕開來。

2011年11月24日 星期四

Google Plugin for Eclipse(GPE)現在 open source 了

原文網址:http://googlewebtoolkit.blogspot.com/2011/11/google-plugin-for-eclipse-gpe-is-now.html

今天真的是 GPE 重要的一天。我們的開發團隊很高興地宣佈 GPE(包含 GWT Designer)使用 Eclipse Public License(EPL)1.0 版授權下 open source 了。GPE 集合了許多軟體開發工具,如 GWTSpeed TracerApp Engine 以及其他 Google 的雲端服務,讓 Java 開發人員可以快速設計、建立、最佳化、並 deploy 成雲端 application。

因為許多大型系統使用 GWT、App Engine 以及 Google 雲端服務開發的,也因為我們將協助使用者(對抗營利式的開發工具)列為首要任務,都再再讓我們覺得將 GPE 給 open source 對社群而言將有益於加強並拓展這些工具。

2011年11月18日 星期五

App Engine 1.6.0,正式脫離試用階段

原文網址:http://googleappengine.blogspot.com/2011/11/app-engine-160-out-of-preview-release.html

距離 App Engine 第一次舉辦的 Campfire One 已經三年半了,App Engine 已經結束測試階段,而成為完整支援的 Google 產品。創立 App Engine 的理念十分簡單:它應該很容易使用、易於擴展規模、以及開始使用的時候是免費的。每個月一百多億次的點擊、三十多萬個活躍的 application、以及十幾萬個開發者使用這個產品,都明顯表示這個理念的迴響。因為有你們的支持,Google 能對 App Engine 作長期的投資。

前些日子,我們宣佈脫離試用階段的計畫時,我們承諾要增加 Python 2.7白金帳戶以及 Backend 來加強服務,而許多改變將在今天啟用:

2011年10月12日 星期三

App Engine 1.5.5 版發佈

App Engine 在 2011 年釋出了一些令人興奮的版本。隨著白天越來越短、天氣越來越冷、雜貨店裡頭的萬聖節糖果開始引誘人變胖,我們也一直努力讓最新的版本能順利推出。

2011年10月8日 星期六

Google Cloud SQL:你的雲端資料庫


原文網址:http://googleappengine.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html

「提供一個可以簡單開發傳統資料庫應用程式的方法」是最常要求 App Engine 提供的功能之一。為了回應這些聲浪,我們很高興地宣佈 Google Cloud SQL 有限制地開放試用。現在你可以選擇讓 App Engine 的 application 使用完全在雲端當中但卻是熟悉的 relational database。這讓你能專注在開發 application 與 service,至於管理、維護 relational database 的雜事統統不用管。Google Cloud SQL 帶給 App Engine 社群許多好處:
  • 不用維護、也不用管理——我們都幫你處理了。
  • 高可靠度與可用度——你的資料會同步複製到多個 data center。機器、機架與 data center 的故障都會自動處理,盡可能地避免影響到 end user。
  • 熟悉的 MySQL database 環境,有支援 Java 的 JDBC、也有支援 Python 的 DB-API
  • 綜合式的管理 database 使用者介面。
  • 簡單卻完全與 App Engine 整合。

這個 service 也包括了 database 匯入/匯出的功能,所以你可以把你既有的 MySQL 送上雲端,然後在 App Engine 當中使用。Cloud SQL 現在是免費提供,我們會在至少開始收費前 30 天公佈價格。在我們解決初期大小問題的同時也會持續改進這個 service,如果你想拿來試試看,請讓我們知道

2011年9月28日 星期三

用 Channel API 實作簡易聊天室

Google App Engine 自 1.4.0 版推出 Channel API,使 server 與 browser 之間可以不透過 pooling 的方式做到 server push。不過 Google 官方教學文件摻雜了井字遊戲的元素,反而無法專注於 Channel API 上。這篇文章打算用最原始的聊天室,透過實做的過程來體驗一下 Java 版 Channel API。

因為是簡易聊天室,所以只打算提供一個共用的聊天室,然後用兩個 JSP 檔來解決:room.jsp、server.jsp。room.jsp  負責處理使用者輸入訊息、顯示對話;server.jsp(應該寫成 servlet 比較好,因為是簡易聊天室......)負責接收訊息、並廣播出去。

2011年9月16日 星期五

App Engine 1.5.4 版發佈


原文網址:http://googleappengine.blogspot.com/2011/09/app-engine-154-sdk-release.html

這四個禮拜真的是忙翻啦(你可能有聽說),但我們仍然保持每個月發佈新版本的期程。今天我們提供了新的 SDK,以及一些新功能和錯誤修正。

2011年9月8日 星期四

App Engine 1.5.3 版發佈


原文網址:http://googleappengine.blogspot.com/2011/08/app-engine-153-sdk-released.html

今天,我們很高興地宣佈新版的 App Engine 發佈了。你可能有注意到,在過去幾個月中,版本更新的頻率略有上升。我們做了一些內部改組,期待能每個月推出一個新版本。這個月的更新包含了一些 datastore 的更新、一些 blobstore API、memcache API 的更新,以及一個針對 Java 開發者的新功能。

2011年9月6日 星期二

App Engine 1.5.2 版發佈

原文網址:http://googleappengine.blogspot.com/2011/07/app-engine-152-sdk-released.html

server 產能的更新
  • 可調整的 Scheduler 參數 - 正如之前討論過,我們推出了兩款 scheduler 旋鈕(好吧,實際上看起來比較像滑動軸),讓你能控制有多少 instance 在 application 上執行的參數。現在,你將可以設定 panding latency 的最小值、以及閒置 instance 的最大量。

Datastore 的更新
  • 進階 query 計畫 - 我們移除了爆量索引的需要、也減少了許多 query 要自訂 index 的需求。在許多狀況下 SDK 會建議更佳的索引方式,接下來的文章也會介紹如何進一步最佳化。
  • namespace 層級的 datastore 統計資料:現在除了取得全部的 datastore 統計資料,我們也提供一個新的選擇,讓你可以以 namespace 來查詢。

Task Queue 的更新
  • 新的 Task Queue 細目頁面——我們改寫了 Administration Console 裡的 Task Queue 細目頁面,提供了執行中的 task 的更多資訊。你現在可以看到排隊中的 task、有效承載量、以及前一個執行 task 的資料。
  • 1MB 的 Pull Task 容量——對於容量大小的限制,我們的信念就是:只能變得越來越大!所以,在這個版本當中,我們把 Pull Task 的容量變成 1MB。
  • Pull Queue 時效變更——針對 Pull Queue 我們推出了新的 method,如果當初設定的時效不足時,讓你可以將現有的 task 延長時效。

最後,我們有一些令人振奮的消息是關於實驗中 Go 執行環境。雖然 Go 仍然在實驗階段,但從 1.5.2 之後,Go 將可以存取所有 HRD 的 application。

一如往常,也有一些小功能與錯誤修復,在我們的版本更新紀錄當中可以找到完整的清單(Python 版,Java 版)。我們期待在論壇當中看到您的回饋意見與問題。

2011年9月1日 星期四

粗探 GWT Image 內的實做方式

GWT 當中的 Widget,大概只有 Button 的使用率大於 Image(這也難講,說不定有些人直接用 Image 作 button...... XD)。所以來探究一下 source code 寫了啥東西。

要建立一個 Image,最直接了當的用法是給它 url:
Image img = new Image("http://an.url/pic.jpg");

這裡的 url 使用相對路徑亦可,不過得注意是相對於載入這個 GWT module 的頁面就是了。

切到這個 Image(String) 這個 constructor,會發現當中做了兩件事情:
  1. state 設定為新產生的 UnclippedState 物件
  2. 設定 style name 為 "gwt-Image"

2011年7月4日 星期一

App Engine 1.5.1 版發佈

原文網址:http://googleappengine.blogspot.com/2011/06/app-engine-151-release.html


Google I/O 已經結束一個月,所以我們覺得應該再來個版本發佈了。這個月我們發佈 ProtoRPC 這個正式的 Python API;讓 SDK 有 HRD(High Replication Datastore)的功能,協助開發者更能理解同步 model;另外增加了 Channel API、以及一些好東西。列舉如下:

service 變更

  • 地理定位 header:App Engine 現在會在每個 client 的 request 當中夾帶 header,來盡可能地分辨是哪一個國家發出的 request。「X-AppEngine-country」這個 header 可以讓你依照使用者的所在地來客製化內容。我們希望這代表使用者不用再到「你的國家」下拉選單當中選擇。

更新 Java 和 Python 的 API

  • Channel API(支援 Presence):現在你可以為你的 application 設定內建的 service,來偵測使用者的 presence。這讓你可以在使用者連線或斷線時作對應的行為。
  • Image API(支援 WebP):Image API 現在支援 WebP 格式。WebP 是一種新的圖像格式,Google 在今年初的時候開放原始碼。這個格式是用破壞性壓縮的方式,可以比 JPEG 格式檔案小 39% 、卻提供相同的畫質。

新的 Python API

  • ProtoRPCProtoRPC 是一個 open source 的 frame,用來建立一個良好定義、易於使用、web base 的 RPC service。雖然 ProtoRPC 跟 Google Protocol Buffers 定義 service 差不多,但 ProtoRPC 的目標是讓開發人員更容易開始定義 web base 的 service,同時允許這些 service 隨著時間改變而能逐步成型與拓展。

Datastore

  • SDK 中的 HRD:從發佈 HRD時,我們就希望能提供工具、幫助開發人員在設計 application 時了解和測試新的同步 model。1.5.1 SDK(Java 與 Python 版)可以模擬 HRD 的同步 model。這表示在設定對應的 SDK 選項後,跨 entity group 的查詢結果,偶爾會與剛寫入的資料有出入。這應該會讓你開發的過程中,處理這個同步 model 更加靈活。

(最後一段懶得翻譯 [逃])

2011年5月16日 星期一

App Engine 1.5.0 版發佈

原文網址:http://googleappengine.blogspot.com/2011/05/app-engine-150-release.html

App Engine 團隊一直在拼命準備 Google I/O,而今天我們很高興地宣佈 App Engine 1.5.0——夾帶著一堆完成的新功能——正式發佈了。這個版本帶來了全新的特性:引入了 Backend、Task Queue 的重大改進、全新實驗性質的 Go 語言運行環境、High Replication Datastore 變成預設的設定(價格也降低了!),以及許多調整與 bug 修復。

service 變更
  • Backend:截至目前為止,App Engine application 是在一個短暫存在、動態的 instance 上頭運作,我們啟動它來回應 request 然後再關掉它。這對於建構可擴增的 web application 是很棒的事,但是如果你在找尋建立大型、長時間存活、以及/或密集存取記憶體的底層功能,就會有很多限制。在 1.5.0 版,我們引入了 Backend,讓使用者可以打破這樣的限制!Backend 是由開發人員控制、長時間運行、可定址的 instance 集合,至於需要多少 instance 則任由開發人員設定。這些 instance 沒有 request deadline,它們可以被啟動和停止(或是當呼叫到時動態啟動),它們可以使用 128M~1G 的記憶體、以及一定比例的 CPU。如果你想要了解更多,可以讀一下 JavaPython 版的 Backend 文件。
  • Pull Queue:現在大多數的用戶在他們的 application 中大量使用 Task Queue,不過在靈活度上還是有很許多改善空間。在 1.5.0 引入的 Pull Queue 讓開發者可以在 application 準備好時,把 task 從 queue 中「pull」出來執行,而不用倚賴 Task Queue 在先前設定好的頻率把 task push 進 queue 中。這表示你可以寫一個 Backend 來作一些背景程序,然後當 Backend 準備好時從 Pull Queue 中 pull 一個或上百個 task 來處理。此外,我們導入了 REST API,它允許外部 service 做同樣的事情。舉例來說,如果你有一個外部 server 是在做圖形轉換或 OCR,你可以用 REST API 來 pull、執行這些 task,然後回傳結果。結合這兩個改進,我們還增加了 payload 的限制與處理速度。我們很高興能同時擴展 Task Queue 的使用、以及加強改善 App Engine 與 REST of the Cloud 之間的整合。

Datastore
  • 預設為 High Replication Datastore:High Replication Datastore 經過幾個月的使用和回饋意見(以及至今 99.999% 的正常運作時間),讓我們有信心認為,這對廣大的使用者而言是正確的方向。所以,今天我們做了兩件事:當新的 application 建立時預設使用 HRD;降低 HRD 儲存的價格,從 $0.45 降低到 $0.24,來鼓勵大家開始計畫轉移至 HRD。我們一直很感謝早先使用 HRD 的使用者,他們測試、發現問題,並在這個版本當中修復其中的一些問題。

API 改變
  • 為了回應眾人的期盼,HTTP request 跟 response 的大小增加至 32MB。
  • Mail API:我們對 Mail API 增添一些限制,好讓所有使用這個 service 的 application 提高可靠性和信任度。首先,電子郵件必須以 Google 管理的電子郵件帳號(Gmail 或是 Google Apps 均可)寄出。其次,對新建立的 application,每天免費的額度從 2000 減少到 100。這些都將有助於確保 application 發出的信件可以可靠地到達目的地。

Administration
  • 下載程式碼:1.5.0 當中,除了上傳程式碼的使用者可以下載原始碼之外,也讓列在 Admin Console 的 project owner 可以下載。owner 是在 1.4.2 版引入,是一種 admin 角色。

Go
  • 新的運作環境:在 1.5.0 版當中,我們啟用一個實驗性質、給 Go 程式語言使用的運作環境。Go 是一個開放程式碼、靜態類別、編譯型的語言,但有動態、輕量級的感覺。這對 App Engine 來說也是有趣的新選擇,因為 Go 會 compile 成 native 碼;對 CPU 密集使用的 task 來說,用 Go 會是一個好選擇。截至目前為止,Go 版的 App Engine SDK 已經可供下載了,我們將儘快讓你可以 deploy Go 的 application 到 App Engine 上。如果你有興趣早一點開始「Go」,註冊就可以成為正式啟用時的首批測試者。閱讀 Go Blog 的公告,當中有更多細節。

這個版本中還有其他一海票的更改、bug 修復,所以請查閱完整的版本更新紀錄,包含所有 JavaPython 的議題修正。最後,如果你有興趣知道接下來這一年當中 App Engine 的方向,請到 2011 Google I/O 的其他公告看看!