2008年3月10日 星期一

另人遺憾的 Google AuthSub API 有感

身為一個 Google Fans 及 Programmer, 對於參與開發的 Web Application , 總是極力希望能直接整合 Google Services. 甚而連 User Singup 都不用了, 直接使用 Google Account 或 OpenID 進行 Authenticate , 然後直接使用我們的服務..

然而 Google Account API 中的 AuthSub API 似乎不能把它拿來當 Account Identification 用. 因為它無法傳回 UID (username / hash or anythings).

如果我們要拿來識別自己的 local user, 看來只能使用 ClientLogin, 要使用者填入 username (gmail) / password ,.....
這...是怎樣, 在現在釣魚網站這麼多, 而又是一個新創網站而言, 要使用者填入它的 Google username / password 是幾乎不可能的吧...


建議不用改變太多, 至少擴充一下 AuthSubTokenInfo 多傳一行 user_hash or UID 應該沒有安全性上考量吧.. 查了一下 Groups , 很多開發者有和阿土伯相同的困擾, 就差最後一點功夫, 很遺憾的, Google 缺少了它....

現在我們的 Service 放棄了 Google Login 的功能, 阿土伯身為 GFans , 好不甘心呀~~~~

建議:
一. 不改變現有任何 API , 但對於同一個 Username 對於同一個 next 同一個 scope 操作, 回傳同一個
session token , 因為目前 session token 並不會失效, 所以我們可以 "暫時" 拿來當同一個使用者的識別之用.

二. 只改變 AuthSubTokenInfo , 目前有的三行資訊, 多加入一行 user_hash or anything 可以反映相同使用者的資訊都可...

Google Groups: http://tinyurl.com/2yr8hx

2008年2月26日 星期二

GRE 開發三: Step by Step 桌面程式快速開發

XULRunner + jQuery + GREUtils = Quick Application Platform.

本篇將利用範例的方式, 一步一步展示如何快速撰寫一個 Windows / Linux / MacOS 上的桌面應用程式, 您會發現利用 XULRunner (Gecko) 寫 Application 是那麼的容易. 這也是前二篇阿土伯專案中選用 XULRunner 而暫時排處 JavaFX 的原因.
基本上和設計 FireFox Extensions 差不多, 但本篇著重在撰寫 standalone application.
##CONTINUE##
XULRunner 安裝:
XULRunner 的官方網址在 http://developer.mozilla.org/en/docs/XULRunner , 而各個 build 好的
binary 可在此 FTP 下載 http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.1.3/contrib/
在這邊我們下載 xulrunner-1.8.1.3.en-US.win32-20080128.zip , 然後 解壓到 C:\

下載 GREUtils 範例:
請到 http://code.google.com/p/greutils/ , 下載 helloworld 範例 http://greutils.googlecode.com/files/greutil-helloworld.zip
然後一樣解壓到 C:\

執行 GREUtils 範例:
請開啟 Command Prompt (執行->cmd.exe), 然後鍵入

c:\xulrunner\xulrunner.exe c:\greutil-helloworld\application.ini


執行畫面:
OK~ 您應該可以看到如下的畫面. Linux / MacOS 執行方式及結果應該亦是相同.
應為跨平台亦是 Gecko 的特色之一, 且由於使用 XUL/XHTML/CSS 所以各平台執行結果及承現是一致的.


開發環境:
XULRunner + jQuery + GREUtils 為此範例的主要環境.
XULRunner 開發細節在此不多作解釋, 請見官網文件. 您可以把它想像成 JavaRuntime 之類的環境, Firefox / ThunderBird 便是架構在 XULRunner 之上.

jQuery 我們的老朋友嘍, 所有 javascript 和 XUL/XHTML 的互動, 都是利用它來實現, 也就是您原來在 Web 中所使用的技巧(Ajax/DOM/XHR), 都可以搬到 Application 來用嘍.
這樣您有沒有信心大增, 即使您熟悉的是 Web Programming, 現在不用學 Java / VB / VC .... VX 就可以寫一些(簡單?)的應用程式嘍.

GREUtils 它是阿土伯封裝的一個簡易框架, 讓您可以容易的開發 XULRunner 應用程式.


application.js:
application.js 負責配製 Preferences , Initialize , 期望您在此僅撰寫這二件事, 相關的程式, 請將它寫到 Controller 中.
以下為 initialize 片斷

// init controller
GREUtils.include_once('appController.js', window);
GREUtils.include_once('mainController.js', window);
GREUtils.include_once('charsetController.js', window);
GREUtils.ControllerHelper.appendController(AppController, this);
GREUtils.ControllerHelper.appendController(MainController, this);
GREUtils.ControllerHelper.appendController(CharsetController, this);


xxxController.js:
Controller 提供相關的 action 實作. 由於 GREUtils 封裝了 CommandDispatcher , 所以您只要擴展
GREUtils.ControllerAdapter , 您可以僅實作您的 action commands , 它會自動處理 supportsCommand / isCommandEnabled / doCommand / onEvent 等相關細節.
其中 init 為 Controller initialize function , 它會傳入 Application, 讓您可以在您的 Controller 中處理 Preferences 以及 Application wide function.

jQuery:
您可以在 Controller , 利用 jQuery 處理畫面上的任何元素, 所以相當容易直覺, 就如同您在設計 Web.

charsetCmdConvert1: function() {
jQuery("#charsetList1").each(function(i) {
var cs = this.selectedItem.label;
var input_text = jQuery("#utf8MsgBoxInput").val();
var out = GREUtils.Charset.convertCharset(input_text, 'UTF-8', cs);
jQuery("#utf8MsgBoxoutput").val(out);
});
}


Append DOM Object:
如果您發現您直接利用 jQuery.append 等相關的 DOM 操作, 和您想的不一樣, 別感到驚訝.
因為在 XULRunner 中, XUL 和 HTML 的 Namespace 是不同的.
所以您可以利用 GREUtils.domXULString / GREUtils.domHTMLString 來處理.
如 明確的指定您要加入一個 XUL 的 Label Object:

jQuery("#testContainer").append( GREUtils.domXULString("<label value='test'/>" ));


Debug:
程式執行起來, 會為您 Popup Error Console 供您 Debug, 當然, 您也可以在 AppController.js
中拿掉它... 您更可以自行安裝 FireBug 為您的 Debuger.

其它..:
有關利用 3rd extensions 和提供您的 application add-ons 在下次有機會阿土伯再行解說.
歡迎大家來信/留言討論, 一同成長.

2008年2月25日 星期一

GREUtils 1.0 Release

GREUtils 是一個輔助您在設計 Firefox extensions 或設計 XULRunner 程式的一個工具程式.

  • 封裝了幾個常用的 XPCOM 功能, 讓您可以更方便更直覺的叫用它們.
  • 封裝了 Dialog / Preferences / Sound 等常用 XPCOM.
  • 封裝了 Charset Convert , 您可以利用 Function 進行 charset convert, 如同 php .
  • 亦加入了如同 PHP 的 include / include_once 的特色, 讓您的程式可以更 MVC , 只有在需要的時侯, 引入適當的 javascript 及模組.
  • 封裝了 Controller 和 CommandDispatch , 讓您的程式有一個良好易於寫作的MVC 架構.

今年比較忙, 一直沒有更新 Blog, 包含之前希望提供給大家的 Gecko 開發工具包, 也一直沒有時間整理(阿土伯很早 2007/09 就投到 google code 開放出來了).

還是沒有時間為大家寫完完整的說明及 Sample code, 怕一拖下去沒完沒了,
先放出來讓大家使用, 或請大家幫我寫一下 Sample Code 吧~~ :D

已補上 hello world 的 xulrunne rsample application, 利用了所有 GREUtils 的特性.
您可以把 helloworld application 當成您專案的 blank application 來用.


大家先看 Source code 或 javadoc 理解一下. 希望對您在撰寫 extension / xulrunner 上有幫助.

專案位址: http://code.google.com/p/greutils/

##CONTINUE##

GREUtils is simple and easy use APIs libraries for GRE (Gecko Runtime Environment).

It provides:

  • Object extend function
  • include / include_once specified URL script.
  • XPCOM utilities
  • Charset Convert
  • Preferences Services
  • File IO
  • Dialog utilities
  • Controller and CommandDispatcher? Helper

2007年11月24日 星期六

iGoogle BossKey 暗黑老板鍵小工具

由於 iGoogle 提供的小工具已經非常非常的多元化.. 舉凡股市投資組合, 打電動, 看新聞, 聊天, 看美女圖, 都可以在 iGoogle 中全部搞定... 嘿嘿..
頁面停留在 iGoogle 中, 已不見得是用功好學在努力找資料了... 這時就需要 iGoogle 老板鍵 功能.

這是在 GTDD2007 當天下午分組程式設計時寫的小工具(編號 30), 可能太害羞還是氣氛的關係, 很少人在各組間走動觀摩討論... 所以得票數一票 :( (還是同桌投的..呵呵)
阿土伯把它補完整一點並加上設定、多國語.. 放出來和大家分享..

功能:
  • 隱藏 iGoogle 的畫面
  • 帶入 傳統 Google 搜尋頁面
  • 自動在搜尋欄位中填入設定關鍵字

##CONTINUE##
說明:

暗黑老板鍵小工具說明, 要用情境模式來示範解說.. 大家就了解了.

話說阿土伯上班正努力的用功........... 看盤/看圖/打電動..


這時老板突然走了過來, 看的正精彩,關掉瀏覽器實在太可惜了(等會要重執行).
趕快使用暗黑老板鍵...(F10). 畫面馬上變成:


老板問: 阿土伯你在做什麼...
阿土伯: 報告老板, 我正準備要在 Google 搜尋上查詢有關 google 的相關新聞, 研究 google 的成功模式能不能應用在公司上面.... (呼~~ 要臉不紅氣不喘的回答, 小朋友不要學, 大哥哥是練過的)

OK~~ 大致上軟體就是這麼用的....

設定畫面:



加入您的 iGoogle:
請點取 Add to Google 直接加入您的 iGoogle 中.



原始程式及小工具 URL:
http://racklin.googlepages.com/bosskey.xml

PS.
像這樣的暗黑小工具投到目錄中不知道能不能審核通過..
對不起 kevin, 不小心又弄了一支 html-inline gadget, gtdd2007 當日苦口婆心希望大家寫 html type gadget...

2007年11月23日 星期五

gtdd2007 感想

昨天參加了 Google Taipei Developer Day 2007 收獲很多..
最大的收獲就是阿土伯有榮幸能和眾多網路名人一聚, 如 qing , tempo,
xdite, Bawbaw.hu, 以及一群年輕、專業又有活力的 funp 團隊.

也非常感謝 Google 評審團對阿土伯設計的小工具支持及肯定, 讓我有幸獲得 "工程師特別獎" 的殊榮...
,對我而言,無疑是最大的鼓勵,更加深我在開發以及程式開放分享上熱忱。

也希望未來能開發/開放更多的小程式小工具和大家分享..
以及和各位網路高手交流, 教學相長...