eclipse and OSGi

0

源起

想開發基於 RCP 之上的應用,就需要了解其底層使用的 OSGi 運作機制。OSGi 基本上希望軟體可以像現在 USB 一樣熱插拔,既然 USB 需要 OS 支援,應用程式就需要 OSGi 來做這個事,讓符合規格的應用程式可以直接熱插拔,甚至可以挑版本插拔,聽起來好像不錯。

What’s New

  1. 2006-09-23 新增螢幕展示 screencast

Open Services Gateway in Eclipse

大部分的 Java 開發者都直接用 IDE,並不太會去動到 eclipse 的內部,eclispe IDE 本身由一堆 plug-ins 組成,同時提供一個 OSGi 的環境供 plug-ins 運作,提供整個開發所需的功能。

慢慢地有人覺得 minimum eclipse plug-ins 可以方便再利用來開發 eclipse IDE 類似桌面型軟體,所以 Eclipse Rich Client Platform (RCP) 慢慢成形,RCP 牽涉到 plug-ins 取捨,選哪些 eclipse plug-ins 可以方便以後大家使用,當然 OSGi 也要一起包起來帶走。

RCP 包起來的環境中都可以找到這個實作 rcp/plugins/org.eclipse.osgi_3.x.x.jar。

osgi console

先進入 console 狀態

C:\Downloads\EclipseInstall\OSGi>java -Dosgi.install.area=file://c:/downloads/ 
-cp org.eclipse.osgi_3.2.0.v20060601.jar
org.eclipse.osgi.framework.launcher.Launcher -console

launch 後到 http://www.knopflerfish.org/repo/index.html 找一些下載。

osgi> ss

Framework is shutdown.

id      State       Bundle
0       RESOLVED    system.bundle_3.2.0.v20060601

osgi> launch

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.0.v20060601

osgi> install http://www.knopflerfish.org/repo/jars/log/log_all-2.0.0.jar
Bundle id is 1

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.0.v20060601
1       INSTALLED   org.knopflerfish.log_2.0.0

osgi> start 1

啟動失敗,會告知缺少 org.osgi.service.cm,換一個不相依commons-logging_all-2.0.0.jar 試過,可以啟動。

osgi> install http://www.knopflerfish.org/repo/jars/commons-logging/commons-logging_all-2.0.0.jar
Bundle id is 2

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.0.v20060601
1       INSTALLED   org.knopflerfish.log_2.0.0
2       INSTALLED   org.knopflerfish.bundle.commons-logging_2.0.0

osgi> start 2

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.0.v20060601
1       INSTALLED   org.knopflerfish.log_2.0.0
2       ACTIVE      org.knopflerfish.bundle.commons-logging_2.0.0

加上 cm 看看。

osgi> install http://www.knopflerfish.org/repo/jars/cm/cm_all-2.0.0.jar
Bundle id is 4

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.0.v20060601
1       INSTALLED   org.knopflerfish.log_2.0.0
2       ACTIVE      org.knopflerfish.bundle.commons-logging_2.0.0
4       INSTALLED   org.knopflerfish.bundle.cm_2.0.0

osgi> start 4

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.0.v20060601
1       RESOLVED    org.knopflerfish.log_2.0.0
2       ACTIVE      org.knopflerfish.bundle.commons-logging_2.0.0
4       ACTIVE      org.knopflerfish.bundle.cm_2.0.0

osgi> start 1

osgi> ss

Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.0.v20060601
1       ACTIVE      org.knopflerfish.log_2.0.0
2       ACTIVE      org.knopflerfish.bundle.commons-logging_2.0.0
4       ACTIVE      org.knopflerfish.bundle.cm_2.0.0

screencast 螢幕展示

覺得手動太麻煩 ? 可以用 eclipse 來玩,非常簡單,幾分鐘就可以。

screencast

  1. 用 3.2 版
  2. 只有選 plug-in 專案,沒有 Bundle 專案,以後也許會改比較 OSGi 的說法。
  3. 用 Equinox 當底層
  4. 都幫你出好了,雖然應該用 Bundle 比較適合
  5. 直接用範本,連程式碼都不用打
  6. 直接就可以跑
  7. 檢視一下
  8. 匯出 jar
  9. 順便匯出 ant 的 build.xml 參考
  10. 看一下成果
  11. 建立一個純的 osgi 環境,只取 org.eclipse.osgi 一個 jar
  12. 直接吃剛才編出的 jar 看看。

產出的 ant build.xml 可是好東西,對於需要 自動化產出 Bundle 的人來說,用起來會很方便。

small osgi 螢幕展示

關於 eclipse 開發的螢幕展示還可以參考下面連結,將 OSGi 環境建立在改造過小型 NAS 裝置上面,在遠端用 eclipse 開發。

Coding bundles on the Slug demo movie

Remote debugging on the Slug demo movie

OSGi 移植到小裝置上的做法,也許 gcj 也是一種可以考慮的做法。

OpenSlug Gateway Installation – OSGi on the NSLU2

OSGi on the Slug

將 OSGi 真的變成 Open Services Gateway 似乎需要一點時間,目前 IBM 在這個領域推蠻久的。

Managed mobile clients with OSGi: Managed smart clients

IBM Workplace Client Technology, Micro Edition and Open Services Gateway Initiative

links 參考

Developing Eclipse/OSGi Web Applications

OSGi Everywhere

Spring and OSGi, A Perfect Match?

Spring and OSGi

Understanding how Eclipse plug-ins work with OSGi

Launching Eclipse OSGi Framework from the command line

OSGi Open Source Market

Knopflerfish – Open Source OSGi

Java: 淺談 OSGi 標準

Inkscape and SVG

0

小小建議

IE 本身不支援 SVG,同時不支援 PNG alpha transparency 功能,因為這只是練習,所以不打算針對 IE 做些專門修改,強烈推薦 firefox 瀏覽。

緣起

Inkscape 是個開放的 SVG 編輯軟體,雖然目前功能不及商業版本,不過免費的特性,讓大家可以自由下載享受動手作 SVG 的樂趣。

紅十字加點

基本設定與劃出十字的圖案,下為匯出的PNG檔。

運行的過程請參考 ink_1_redcrossdot screencast

  1. 開啟 Inkscape
  2. 改大小
  3. 取 320×180
  4. 放大符合視窗
  5. 秀格線
  6. 改格線大小
  7. 畫底方形
  8. 變更底色與邊框
  9. 調整方形圓角
  10. 加十字橫
  11. 加十字豎
  12. shift 將兩個方形一起選後合併成單一路徑
  13. 加個小點
  14. 採用漸層
  15. 設定文件 metadata
  16. 存檔
  17. 匯出成 PNG

ink_1_redcrossdot.svg

原點

畫圖如果需要比較精確的定位,就需要自訂參考線 Guide Line。準備 320×180 開畫,下為匯出的PNG檔。

運行的過程請參考 ink_2_origin screencast

  1. 要拉參考線需要從尺規處開始拉
  2. 拉完可以看到參考線
  3. 可以編輯到精確位置
  4. 換拉水平參考
  5. 改中間 90
  6. 畫三角形
  7. 做副件
  8. 變形
  9. 先倒過來
  10. 先左移 50 看看
  11. 再加碼 10
  12. 換邊做一次
  13. 換個顏色會所以副件一起改
  14. 再下拉 10

ink_2_origin.svg

links

Inkscape 官方網站

A Guide to Inkscape 一定要看

Open Clip Art Library 必去之處

Plant Inkscape 網站匯集

TedPage blog

Inkscape 基本功能簡報

TODO

尼伯龍根的指環

女武神 Valkyrie Warrior

my first key word ad

0

第一個廣告

關鍵字廣告是網站做行銷必須考慮的工具,如何找人來不只是實體商業要面對的大問題,網路上也是。想要了解這個概念,最方便的方式就是下手去做看看。

一開始想法是找 The Book I Think 這連結來做測試,上限是每月 200 元,關鍵字先選三個,這個觀察會持續一個月以上,下面的紀錄會不斷做更新。

my first google adwords screencast

希望大家有空去翻翻這本書,翻的蠻不錯的。

一些紀錄

如果需要觀看最新文字廣告,試看看這個 Google 查詢金剛經 ,也許看得到,主要因為一天被點個幾次後,當一天預算滿了,它就不會展示。

  1. 換成標準版可以提供比較多功能,包含每日記報表給你等等。
  2. 自己點一個金剛經,要 1.6 台幣,並不便宜,而且這是浮動的,最高可達六元吧,就預算來說,只能一天只能點到五次左右。
  3. 繁體字關鍵字比較少,可以用關鍵字工具增加關鍵字,找了個金金剛般若波羅蜜經加上去。
  4. 跑了一天,確實會壓在預算上,所以其實廣告本身在過約半天就達到一天的預算,也就是後來就沒有播了,除非去調播放時間,可以集中在晚上。
  5. 有些關鍵字太冷,一天下來,一次也沒展示,例如 夢幻泡影 關鍵字,所以關鍵字的品質很重要。用過搜尋功能的人往往知道那個東西,卻說不出名稱來,例如隨身碟這東西就有很多說法,用哪個查等於是關鍵字廣告的關鍵。
  6. 0907 為了方便觀察,預算調為 300NT/M,也就是 10NT/D。
  7. 新增 eclipse rcp 關鍵字,測試英文關鍵字。對人來說,這些關鍵字似乎不對稱,但對於機器來說,詞不過是字串,無關聯也可以一起搜尋。
  8. 修改廣告詞,加上寫程式這一段。
一切有為法,如夢幻泡影。
寫程式很累,休息一下再走。
  1. 0908 再過一天,發現點擊率下降,看 廣告變化 頁面才知道在 金剛經 關鍵字上面,由原先 11.90% 左右掉到 6.89% ,應該是廣告內容的改變,加上 寫程式很累等等 的一段,讓找金剛經資料的人不會想去按。所以廣告內容是關鍵字外的第二個關鍵。
  2. 報告多到讀不完,一堆數據,需要一些經驗才可以看的懂。
  3. 內容聯播網上的文字廣告比較少展示,過了近兩天才只有 17 次,點擊是零,所以邊邊的廣告大家都是視而不見吧。雖然 google 的聯播算是視覺很清爽。
  4. 加上無關字似乎很難展示,一天下來 eclipse rcp 只有一次。
  5. 再修改一次廣告內容,只留四句偈而已。
一切有為法,如夢幻泡影。
如露亦如電,應作如是觀。
  1. 2006-0911 出現您有 1 個已拒絕的廣告的訊息,原來是標點符號也歸廣告內容管理,所以改一下標點符號,原來早期版本確實是沒有標符號,後來為方便大家閱讀才加上去,沒想到因為 google adwords 的編輯規範,又回到古風。
  2. 點擊率降到 3.90%。
  3. 點擊成本降為 $1.25。
一切有為法如夢幻泡影
如露亦如電應作如是觀

觀察結果

  1. 不便宜,單一點擊要有NT2左右的打算。
  2. 關鍵字第一關。
  3. 廣告標題與內容第二關。

links

Google AdWords

Html to RoR Task C

0

Task C 是個 RSS 加裝任務。

改寫 YML 中的名詞,改用泛用的名詞以利後續維護。

screencast 1

Use FeedTools to build RSS 2.0

screencast 2

改用 YahooUI Grids CSS to build new layout.

screencast 3

首頁最新10筆消息,只有抓單一來源比對日期,沒有做所有來源比對。

screencast 4

多來源最新10筆消息,目前只有抓rails 所有頻道比對日期,沒有做java來源比對。

screencast 5

Html to RoR Task B

0

Task B 是個 AJAX 改裝任務。

Use ajax function to insert screencast page

screencast 1

improve show/hide toggle function.

screencast 2

Effect 測試與切開 content.yml 中的 rails 部份

screencast 3

Create the nav-img-bar-current helper and assign to content.yml.

screencast 4

Create more images and fight with IE PNG BUG.

screencast 5

DRY some javascript codes.

screencast 6

Change WebRick to Mongrel for the development server.

screencast 7

Older posts: 1 2 3