2009年6月22日星期一

從 OrzLab 移轉到 0xlab

2007年的愚人節,我們做了一個小實驗,藉由號召熱衷於電腦技術的朋友,透過OrzLab的成立,嘗試聚焦作些有趣的Hacking。儘管所有成員都是出於自願並得挪用下班與課後的有限空檔時間,但仍累積一些成果,並在這個過程中,無私地分享與交流,的確已達到當初的期望,並建立初步的人際互動。

不過礙於現實的考量,成員們要不從學校畢業,就是邁入新的工作里程碑,既然當初聚焦作些Hacking的目標已達成,接著就該讓台灣本土的軟體創作走入國際,嘗試與全球多元的環境互動。在寂靜了好長一段時間後,我們有機會從剛創立的 0xlab,得到新的希望,我們之中,開始有人能全職作free and open source software,也有人試著與台灣的電子產業建立聯繫,並試著將這些聲音,以行動的方式,傳遞到更遠更廣的區域。回首來時路,只能用愛因斯坦的話語,來表達我們的初衷:「對一個人來說,所斯望的不是別的,而僅僅是他能全力以赴和獻身於一種美好事業」。

目前,0xlab不僅從過去開發的專案中累積經驗,也積極地透過自由軟體的力量,追尋更多元、益於嵌入式與移動裝置開發的協同創作模式,除了已釋出的原始程式碼之外,也可一併參照開發日誌Planet 0xlab。相當榮幸能跟這群熱血並才華洋溢的朋友共事,彼此也能融洽的合作,一同獻身於自由軟體與嵌入式系統開發的美好事業,但,這一切只是開端。

本文不是宣告OrzLab的終止,而是聲明正面的蛻變,在許多人不看好台灣軟體產業的同時,其實一小群執著的人們,不斷地爭取嶄新的舞台,以不同的視角觀望著資訊產業的巨變。因此,從OrzLab移轉到0xlab,不僅是從業餘走向專業的過程,更可以說從實驗到實際的體驗,希望舊雨新知能繼續指導,更感謝所有為OrzLab付出、參與討論與開發的朋友們。

關於0xlab的資訊與動態,可參考以下:

而原本OrzLab的資源仍會公開存取 (只要hosting沒出問題),但更新與軟硬體整合的部份,會全面移往0xlab,再次感謝!

2007年12月11日星期二

WebKit/QT & WebKit/GTK+ on Ubuntu Linux初體驗

前兩篇「WebKitGtk+支援」與「OWB:以WebKit為基礎的嵌入式網路瀏覽器」介紹了些 WebKit的開發現況後,這邊大概講一下在Ubuntu Linux底下如何無痛進行初體驗。依據官方首頁的訊息,WebKit 簡介如下:

WebKit是一種開放原始碼瀏覽器引擎,同時也是 Mac OS X 底下的Safari 、 Dashboard、Mail、與其他Apple Mac OS X所使用的系統框架版本。WebKit所使用的KDE函式庫KHTMLKJS是屬於HTML與JavaScript實做的分支。
先來體驗一下原生於QtWebKit瀏覽器,動手打造個「仿Safari」。以Ubuntu Linux 7.10為例,操作程序如下:
1. 先安裝編譯時所需的軟體與套件庫
sudo apt-get install libqt4-dev libxslt-dev gperf bison libsqlite3-dev flex build-essential subversion
2.取得Subversion中的原始碼 (筆者花了近20分鐘才下載完畢,所以請保持耐心)
svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit
3.建立一個Qt for WebKit的瀏覽器
(安裝的機器 Intel CoreDue L2300@1.5GHZ 跑了近45 min )
QTDIR=/usr/share/qt4/ WebKit/WebKitTools/Scripts/build-webkit
4.安裝完後,打以下指令開啟剛剛建立的瀏覽器。
WebKit/WebKitBuild/Release/bin/QtLauncher
有圖有真相!!


接著,嘗試原生於Gtk+WebKit,不過這次就直接介紹個剛成立的一個新軟體專案 Midori來體驗一下 WebKit/Gtk+Midori 是一個輕量化的瀏覽器,有以下特點:
  • 完全採用Gtk+ 2.x打造
  • WebKit 進行快速網頁繪製
  • 分頁、視窗與任務對話管理
  • 書籤的儲存採用XBEL
  • 搜尋框則基於OpenSearch
  • 可自訂前後選單動作
  • 支援使用者腳本與樣式自訂
  • 可透過 Lua scripts 擴充
然而,這個專案目前還是屬於alpha測試版的狀態,所以可能會比較不穩定些,而且有些功能還沒實做出來。

Midori目前則可透過apt的方式去安裝預先編譯的套件,但得先編輯設定:
sudo gedit /etc/apt/sources.list
然後加入以下兩行:
deb http://ppa.launchpad.net/stemp/ubuntu gutsy main
deb-src http://ppa.launchpad.net/stemp/ubuntu gutsy main

儲存後離開,並進行更新:
sudo apt-get update
然後就可安裝Midori
sudo apt-get install midori
跑完後,就可以直接從「應用程式」裡的「網際網路」選單開啟Midori ,其執行時期的快照如下:


本文改寫於以下兩篇文章:

2007年11月20日星期二

svn http, user-password and access control

使用http protocol作為Subversion的URL,可利用apache的dav_svn module達成。

dav是distribution authorization and versioning,為http協定的一個擴充
AuthUserFile  /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
所以:
  1. 要先準備好這兩個擋案,並依據.conf 的內容,擺在對應的路徑中
  2. user-passwd file的內容是用 htpasswd 操作的,add user、change password都要用htpasswd來作
  3. svn下各個目錄的存取權限就由dav_svn.authz設定,該檔案為純文字檔
Add User :
htpasswd  'target .passwd file' user-name
這裡'target.passwd file'就是/etc/apache2/dav_svn.passwd.

權限設定方式 :
[/]
* =
guest = r
svntest = rw
charles-chang = rw
意思是對 [/] 目錄的權限設定:
* - 所有人 - 無法access
guest - 僅能讀取,無法修改
svntest, charles-chang 都是一般user,可以讀取、修改。
當然,要用htpasswd把 guest, svntest, charles-chang都加到 user-passwd file 中
僅能讀取的user一樣可作check-out、add file等操作,但在commit時會出現error,svn log上也不會有該user的更動紀錄。

使用hg內建的web server

hg( Mercurial)內建 web server。

一般使用方式如下:

到已開啟好(hg init完畢)的repository (例如 c:\writeMLC)目錄下,執行以下指令:

hg serve -p 8002
然後開啟web browser,開啟以下網址:
http://127.0.0.1:8002/
即可看到該repository的資訊:

此功能一方面可以作為command line模式的"friendly front end" ,另一方面,可以跟合作夥伴共享程式碼。

若有多個repository ,就要用webdir-conf 這個選項。使用方式先編輯一個設定檔,指定web server path和repository的關聯性:
編輯 一個檔案 (假設為webdirconf)
[paths]
writeMLC = C:\Whimery\DownloadWriteMLC
UseYagarto = C:\Yagarto\UseYagarto
BootRun = C:\BootRun\BootRun_Robert
在啟動hg server時,加上以下參數:
hg serve -p 8002 --webdir-conf webdirconf
然後在web browser上的顯示會像是以下:


每個 repository 可以自行設定一些特徵,諸如:web style、authorization、zip download support,指定方式即利用每個 repository 下.hg目錄裡的hgrc 檔 (要自行建立與編輯)。

以下就是為了方便所寫的hgrc內容:
[web]
style = gitweb
allow_archive = bz2 gz zip
push_ssl = false
allow_push = *
說明:
  • 改用git style 的wen interface (較詳細)
  • 增加 bz2、gz、zip的source snapshoot下載
  • 不使用ssl (因為不知道在windows command 下怎麼用 :P)
  • 允許經由http作push的動作 (允許他人check-in)

2007年11月13日星期二

OWB:以WebKit為基礎的嵌入式網路瀏覽器

幾個月前介紹了「WebKit的Gtk+支援」新進展,現在openmoko已正式採納為web engine,提供為網頁瀏覽與RSS reader使用。Origyn Web Browser (OWB)則是另一個以WebKit為基礎的開放原始碼網路瀏覽器 (BSD license + LGPL + misc),針對嵌入式環境做了許多微調與修正,引入一層簡化描繪與底層操作的軟體層,稱為OWB Abstraction Layer (OwBal),得以銜接WebKit與消費性電子產品需求。具體來說,原本的WebKit需要heavyweight UI toolkit去作widget/font描繪,但OWBOwBAL巧妙地補齊介面部份,並允許lightweight UI呈現,也就是 "render itself by its own toolkit"。詳細的技術介紹可參考「Introducing OWB, an open-source browser for consumer devices」一文。

建構方式如下:

  • 取得開發中的程式碼:
svn checkout http://www.sand-labs.org/svn/trunk owb
  • CMake調整組態設定:
cd owb && ccmake .
具體情況如下圖: 按下[c]則可進行組態設定,過程中會提示缺乏的開發套件。
最後按下[g]即可產生必要的Makefile
  • 開始建構,當然是執行make
目錄下應該會有名為"owb"的執行檔。注意,建議安裝CJKUnifonts以支援中日韓文顯示支援,並且需作以下修正:
Index: BAL/Implementations/Fonts/freetype/BTFont.cpp
===================================================================
--- BAL/Implementations/Fonts/freetype/BTFont.cpp (revision 147)
+++ BAL/Implementations/Fonts/freetype/BTFont.cpp (working copy)
@@ -114,7 +114,7 @@
int size = static_cast<int>(m_fontDescription.specifiedSize());

if (m_fontMap[size] == 0)
- m_fontMap[size] = d->open("/usr/share/fonts/owb.ttf", size, 0);
+ m_fontMap[size] = d->open("/usr/share/fonts/truetype/arphic/ukai.ttf", size, 0);
d->m_ttfFont = m_fontMap[size];
if (d->m_ttfFont == NULL)
logml(MODULE_FONTS, LEVEL_EMERGENCY, make_message("open : \n"));
以「Jserv's blog」為例,OWB的呈現效果如下:

在組態設定時,指定了以FreeType作為字型描繪引擎 (即 "WEBKIT_USE_FONTS_FREETYPE" 選項),以取得更加的顯示效果。可發現網頁周圍沒有視覺捲軸 (但可使用方向鍵或PageUp/Down),而且HTML按鈕則是OWB自行描繪的,輸入框亦然。

OWB現在的空間使用量與網頁呈現正確度相當不錯,除了使用curl的方式還需要效能調整外,整體已相當穩定,目前的參考圖形引擎實做為SDL,官方網頁提供相當好的移植文件「OWBAL Porting Guide to Embedded Systems」。依據發展方向,OWB適合應用於Set-Top Box、數位電視、Kiosk等環境,並且對DirectFB的支援也開始進行。