顯示包含「OSS」標籤的文章。顯示所有文章
顯示包含「OSS」標籤的文章。顯示所有文章

2011年3月20日星期日

OLPC及Qt扭蛋

此乃標題殺人之示範,若然閣下是因好奇怎會有OLPC及Qt的扭蛋才進來的話,抱歉,你被騙了。

不過我手上的確有二款能勉強扯上一點關係的扭蛋。

第一款叫做DIY Puzzle Mobile keyring (mobile series),每隻蛋都有匙扣,連著一塊板子,並有些不同顏色的部件可以插在上面拼成不同的圖案,預設的花式為iPhone上的各種應用程式Icon:



雖然我沒有iPhone,也沒計劃買iOS的設備,還是貪得意抽了隻回來,而我所抽到的是電話應用的圖示(最右邊的那個),剛巧顏色跟Qt的圖案很接近啊,所以就試著砌成Qt會怎樣呢,成果如下:


可惜淺綠色的部件不太足夠,效果未夠理想。

參考的圖樣:

另一款是叫做Match man(火柴人)的扭蛋,有活動的關節及不同的部件,可以砌成消防員、救護員、警察等不同的職業。


其中有一款的顏色跟OLPC的看來很像,而且還帶著手提電腦部件,初出來時我們都已經叫這款火柴人做OLPC,而為了拿到這款花了我了不少金錢呢……(遠目)。

在裝嵌時又花了點心思,把手腳換成白色,看起來跟OLPC又更像了,成果如下:


現在的扭蛋真是好玩,不但有許多的花款,而且有很大的彈性,只要有創意就可以塑造成其他的模樣,有時候閒著沒事去逛逛也很有趣,話說之前我又發現了一款可以用來做魔術表演的扭蛋,價錢比起在魔術店便宜太多了,可惜我忘了那個技巧,結果沒有入貨。 ~_~

2011年2月3日星期四

新年敗物第一回 - 3D打印機

今年CES的最聳動產品首推Motorola的Atrix,連我也想轉陣要一台,其次應該便到MarkerBot的3D打印機。



動輒便要數十萬的3D打印機現在竟然只需花USD $1225便能擁有一台,難怪令許多人雀躍不已。

可是我個人對此的反應很冷淡,隨便看了些資料便不再深究,因為早在MarketBot推出前己經有開源的RepRap計劃,而且價錢也更要低廉,更重要的一點是RepRap的設計容許進行自我複制,只要買一台回來,跟著便能再生產另一台出來。(不包括馬達、線路版及噴嘴等無法“打印“的部件)

其實早在CES之前,我便有打算"敗"一台3D打印機回來"玩",目標自然是RepRap,一來支持開源計劃,也想在香港推擴一下,二來是看中了能duplicate這點,更易令人有帶回家的衝動,換言之RepRap推擴潛力比起買一台完成度"可能"更高的商業產品來得優厚。

(潛台詞:我又不是當代理的,為什麼我要去推擴純商業的產品?)

找到了人合夥夾錢,找到了人幫忙進行機器的維護及日後開班的準備,跟著就突然殺出了MarkerBot的消息,雖然我沒什麼興趣,拍擋們審慎起見,還是看一看資料。

首先……資料真的不多,與RepRap的比較資料很零碎,網上有些見解甚至是把MarkerBot視作為RepStrap的機器(即是一台比較簡單的機器,可以用來製作RepRap)。就價錢而言,未組裝的RepRap比MarkerBot平,已組裝的卻要貴一點,差價都是在USD 100左右。

就外觀設計而言……有個頗糟的見解,怎麼看來就像第一代RepRap Darwin加四塊板的樣子?

軟件方面有些RepRap沒有的功能,不過算不上killer feature……

拍擋的結論是:RepRap吧。

然後速速落單,等了幾星期,大概下星期便會送來了!

(遲些再談多些關於這台打印機及我們的開源“計劃”)

2010年10月5日星期二

又開新坑 - DQuest , ORM for Qt/Sqlite

自從sqlite面世後,許多程式都紛紛採用SQL來儲存資料,像Android及WebOS都有把Sqlite放入系統內,不過寫sql也不一定輕鬆,sql的資料介面與編程用的物件導向程式設計方法是先天八字不合,要花一定的力氣才能融合二者,往往變成要寫二種介面,一種存取SQL,另一組則是程式內的Object/Class。

在我開發PenPen時,核心的繪圖部份花了二晚就完成了,然後當我寫資料庫時... 花費了意外地多的時間,有時候SQL寫錯了少許,結果到了中期才發現有bug,除錯就得用不少時間。最慘是到了後期發現資料庫設計不對,計劃的宏願過於龐大(Over design),難以在短期內完成,要把不少部份砍掉……

最終資料庫的部份佔了60%的開發時間,實在冤枉得很。

作為應用程式的開發者,又不是要處理龐大的資料,對SQL的效能要求可謂完全沒有,只想要有一個簡單而用的介面。

所以那時我就想為Qt弄一個ORM (Object Retional mapping)的library,可以用Object的方式存取SQL,不用再浪費時間在這方面。

跟著開始了ORM的研究,ORM當中我最熟識的是Django,由資料庫的定義到存取都很簡單,但C++不像Python般的scipting language那麼俱彈性,Django的方法無法直接利用,除非學Qt弄出MOC (Meta-Object Compiler)那樣的東西,不過幾經考慮後還是放棄這個方案。

之後有段時候就好像回到初學編程的時候,研究C++的各種不同寫法,有沒有什麼語法、Macro、template的應用可以做出像Django的效果呢?幾經嘗試以後,終於弄出了一個比較漂亮的方法,只靠Macro及template的混合應用就能模仿MOC的效果:


/// User account database
class User : public DQModel {
    DQ_MODEL
 

public:
   
/// The user ID
   
DQField<QString> userId;

   
/// The account creation date
   
DQField<QDateTime> creationDate;

   
/// The karma of the user
   
DQField karma;

};

/// Declare the model and the field clause
DQ_DECLARE_MODEL
(User,
                 
"user", // the table name.
                 DQ_FIELD
(userId , DQNotNull | DQUnique), // The field can not be null and must be unique
                 DQ_FIELD
(creationDate , DQDefault("CURRENT_TIMESTAMP") ), // The default value for the field is the current timestamp
                 DQ_FIELD
(karma) // If no special requirement to the field , you don't need to pass the second argument
                 
);


以上的宣告只要放在header檔裏便可以定議出以下的SQL table:

CREATE TABLE user  (
       id INTEGER PRIMARY KEY AUTOINCREMENT
,
       userId TEXT NOT NULL UNIQUE
,
       creationDate DATETIME DEFAULT CURRENT_TIMESTAMP
,
       karma DOUBLE
);

所以我決定開始一個叫做DQuest的計劃,並且把程式碼以New BSD license的方式放出。

計劃資料:

Project Page:
http://code.google.com/p/d-quest/


Mailing list:
http://groups.google.com/group/dquest-dev

API Document
http://d-quest.googlecode.com/svn/trunk/docs/annotated.html

2010年1月27日星期三

XBMC中文顯示問題

最近想在廳添置一台HTPC,因此拿XBMC(XBMC Media Center)來研究一下,就介面而言真的漂亮得沒話說,操作也相當之簡單,適合只有電視搖控的環境下使用,但無論經Mac還是Debian的安裝程式所裝的XBMC都不能顯示中文,查證後發現是因為XBMC預設的字型並不包括中文所至。

那解決方法就很簡單,只要放條中文字型入去便成,網絡上的人大多介紹一條叫做arialuni.ttf的字型,只要安裝了Microsoft Office便會有。

但我沒有Microsoft office,就算有都寧可用OpenOffice,所以只得選擇其他字型,而我所選的是Droid。

這是Android所帶的字型,包括了中日韓的字體,以Apache license授權,可以隨意使用。

下載字型:http://archive.ubuntu.com/ubuntu/pool/universe/t/ttf-droid/ttf-droid_1.00~b112+dfsg+1.orig.tar.gz

解壓後入面會有一個叫DroidSansFallback.ttf的檔案,這是我們所需要的。

至於Mac及Linux的安裝方法會有點不同,請依以下指示:

Mac

假設你的XBMC裝了在/Applications,那先在Finder裹打開這個目錄並點擊xbmc.app,然後按"Show Package Contents"。

在新的Folder裹找Contents / Resoources / XBMC / media / Fonts,把arial.ttf改名為arial.ttf.bk,再將DroidSansFallback.ttf改名為arial.ttf。

Linux
sudo cp DroidSansFallback.ttf /usr/share/xbmc/media/Fonts/arial.ttf



開始XBMC,到Settings > Appearance > Skins,將字型改為arial,然後再把語言設定成中文便可。

中文示範:


關於溫度的翻譯... 有點色。

2009年12月5日星期六

Trac + lighttpd 的安裝方法

上一次裝Trac已經是年多前的事,最近轉了工作環境,又要再裝一次,但這次設定有點不同,首先換成了Debian,然後由Apache變成了lighttpd,以下是我的安裝方法:


用戶要求:
  • 為每個項目開一個Trac的Repository
  • 每位同事在不同項目的權限並不一樣
  • 統一的密碼,所有Trac的repoistory應該使用同一個密碼檔。
  • SSL支援
  • 內部使用,不許公眾查閱
系統資料:

系統: Debian Lenny
網頁伺服器:Lighttpd
Trac版本 : 1.1

路徑:
TRAC_ENV=/var/lib/trac #Trac的Repository
PRIVATE=/var/lib/private # 放置密碼的地方。
CODENAME=test # 首個Trac repo的名字
PROJECT=$TRAC_ENV/$CODENAME #那個Trac repo的放放目錄

Trac的安裝方式:
  1. 採用Lighttpd而非獨立的trac
  2. Trac layout為Multiple Trac Projects - Multiple Repositories - Multiple Databases。 詳見 http://trac.edgewall.org/wiki/TracCaseStudies
  3. 版本控制:沒有,因為代碼放在其他地方

以下是我安裝的步驟:

1. 安裝Lighttpd

第一步是安裝及設定lighttpd:

$ apt-get install lighttpd

把以下設定加入 /etc/lighttpd/lighttpd.conf


$HTTP["host"] =~ "your-domain.com$" {
        server.document-root = "/var/lib/www/html"
        server.errorlog = "/var/log/lighttpd/your-domain.com.err.log"
        accesslog.filename = "/var/log/lighttpd/your-domain.com.access.log"
        var.fcgi_binary = "/usr/bin/python /usr/share/pyshared/trac/web/fcgi_frontend.py"
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile="/var/lib/private/passwd"
        auth.require = ("/" =>
                ("method"  => "basic",
                 "realm"   => "First project",
                 "require" => "valid-user"
                ))

        fastcgi.server = ("/trac" =>
                   ("trac" =>
                     ("socket" => "/tmp/trac-fastcgi.sock",
                      "bin-path" => fcgi_binary,
                      "check-local" => "disable",
                      "bin-environment" =>
                        ("TRAC_ENV_PARENT_DIR" => "/var/lib/trac")
                     )
                   )
                 )
}

2. 安裝及設定Trac

$ apt-get install trac

插件

Trac 1.1預設已經提供了不少插件,但仍不足夠,最起碼都要裝Account Manager,那樣用戶才能在網頁上更改自己的密碼。


sudo apt-get install python-setuptools
sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.11 


路徑設定
sudo mkdir $TRAC_ENV
sudo chown -R www-data:www-data $TRAC_ENV
sudo chmod -R go-rwx $TRAC_ENV

sudo mkdir $PRIVATE
sudo chown -R www-data:www-data $PRIVATE
sudo chmod -R go-rwx $PRIVATE

建立Admin帳戶
sudo -u www-data htpasswd -c $PRIVATE/passwd admin



雖然我所採用的Trac Layout為Multiple Trac Project,但不代表每次增加Project都要把所有設定寫一遍,你可以把一些基本的設定放在/etc/trac/trac.ini裏,以下我的設定:

[attachment]
max_size = 1048576

[account-manager]
password_file = /var/lib/private/passwd
password_store = HtPasswdStore

[components]
webadmin.* = enabled
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.db.sessionstore = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.pwhash.htpasswdhashmethod = enabled
acct_mgr.pwhash.htdigesthashmethod = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
acct_mgr.web_ui.registrationmodule = enabled

以上設定做了以下修改:
  • 增加附件的大小限制
  • 所有Trac Project均使用同一個密碼檔案
  • 使用account manager及webadmin plugin

基本的Trac管埋

1. 建立Trac Project

假設這個項目叫ProjectA,那麼要先用以下指令建立Trac Project

CODENAME=ProjectA
PROJECT=$TRAC_ENV/$CODENAME

sudo -u www-data trac-admin $PROJECT initenv

因為lighttpd會用www-data存取資料,所以要用www-data用戶來建立,不過之後的指令用root來跑也沒什麼問題.

2. 設定權限

在我們的系統裏有三種權限,一是admin,能為所欲任,什麼事都能做到,跟著是項目的manager,可以修改項目的設定,增減milestone、修改其他人權限等等,然後是權限最低的developer。

cd $PROJECT
trac-admin . permission remove anonymous '*' #首先移除anonymouse,不讓沒有權限的人觀看

trac-admin . permission add developer MILESTONE_VIEW REPORT_SQL_VIEW REPORT_VIEW ROADMAP_VIEW SEARCH_VIEW TICKET_CREATE TICKET_MODIFY TICKET_VIEW TIMELINE_VIEW WIKI_CREATE WIKI_MODIFY WIKI_VIEW

trac-admin . permission add manager MILESTONE_ADMIN CONFIG_VIEW WIKI_ADMIN SEARCH_VIEW TICKET_ADMIN ROADMAP_ADMIN TIMELINE_VIEW ROADMAP_VIEW TICKET_VIEW REPORT_ADMIN

trac-admin . permission add admin TRAC_ADMIN

3. 增加用戶

Trac本身沒有自己的帳戶管理,複雜的可以選擇使用ldap,簡單的什麼都沒有,任所有人修改,當然在公司的立場裏是不可能的,那麼進一步,直接用htaccess來管理亦可以,故此增加帳戶不過是……

htpasswd -c $PRIVATE/passwd username

然後記得為該用戶設定權限

trac-admin $PROJECT permission add ${username} developer

2009年9月22日星期二

Nokia Push = Hack Nokia N900 => 得獎金、獎品

Nokia在這一波手機市場中,一直處於捱打的局面,iPhone不斷推陳出新、Palm Pre亦已出場,但Nokia只是買下了不少的公司,但遲遲沒有發動攻勢,直至N900的發佈為止,但N900真的就是Nokia的殺著了嗎?

這個很難說……N900與iPhone及Palm Pre等的市場定位相當之不同,N900可算是旗艦級的機種,處理器用TI的OMAP3(Cortex A8核心),那是一顆足夠跑PS1 Emulator的處理器,有QWERTY鍵盤及TV-out……連駁上projector做簡報、玩體感遊戲也可以。

所以有人譏諷這是Netbook而不電話,其實也沒有錯的,Freescale所推出的Netbook reference design也是用Cortex A8核心的處理器,Palm Pre及iPhone 3GS也是同一個核心……那麼為什麼他們不能做同樣的事?

OS方面所採用的是Maemo、一個嵌入式的Linux分發版本,換言之一般的Linux軟件也可以在上面跑,與ARM Netbook的市場定位也很像,但會否令這個電話很難安裝應用呢?

考慮到OVI Store的存在、OVI SDK的樣子及Maemo的示範,情況應該會跟iPhone差不多,大部份End user都會通過OVI Store下載軟件,只有少部份hacker會動用到其他的方法。

但這少數的Hacker將會令Nokia N900的能力進一步提昇。

我覺得Nokia N900所提供及追求的是硬件的全面解放,採用容易改造的OS、提供足夠的硬件接口,完全是一個適合Hacker發揮的環境。

而這並非單單出於Hacker們的一廂情願,Nokia本身亦有這方面的打算,所以才推出了"Nokia Push計劃"。

整個計劃的核心就是:
Submit ideas > Win devices and funding > Build your hack > Get your hack in Nokia Flagship stores

只要提供Hack的idea、得到Nokia的賞識,你便有機會得到N900及金錢上的獎勵,最終結果還有機會在Nokia的店子上出現!

不懂Nokia N900可以有什麼hack?不打緊,Push的網站已經有入門的指南給大家參考!(沒想到這份指南介紹裏……居然提到了Arduino!)

有沒有人有興趣一起組隊啊?

跟據FAQ:
  1. 得獎的隊伍,所有隊員都會獲贈一部N900
  2. 會獲得平均USD $1500的資助,用以完成該Hack的概念
  3. 至於Nokia會否獲得該作品的任何權利及分帳方法等資料……………… 暫時一概久奉。


例子:

2009年9月20日星期日

Ubuntu久未解決的大Bug

通常開源專案都會用一個叫做Issue Tracker的東西,用來記錄軟件的種種問題,例如Bug、defeat、enhancement、feature request等等,像Ubuntu這麼龐大的專案亦當然會有自己的issue tracker,而且Ubuntu更為此開發了自己專用的管理網站 - Lanuchpad。

Launchpad是像Sourceforge、Google Code等那樣的專案管理網站,能同時管理多個專案,而且不限於Ubuntu本身,其他開發者亦可以利用Launchpad來管理自己的開源專案。

故此,Issue Tracker僅僅是其中一環而已,不過有個設計跟Google Code很不同,那就是Issue號碼。Launchpad的issue號碼是跨專案的,即是說沒有專案的issue號碼會一樣,例如當你在Launchpad裏開始了一個新的專案並加入新一個issue,號碼應該會由40多萬開始,而非0。

所以當你瀏覽Launchpad時發現issue數目竟然多數40多萬時,這並非在說Ubuntu有40多萬的bug啊。

透過issue tracker可以簡單地得知一個專案的活躍程度,例如說有多少陳年的舊bug未解決、最近加了多feature request等,像Getting Thing Gnome在計劃最初的一個月,就收到了超過170個feature request,這代表GTG受得不少用戶的垂青。

那麼Ubuntu又如何呢?

如果逛進Ubuntu的issue tracker……會發現有一個編號#1,由2004年到現在仍處於"In progress"的BUG未解決……

什麼bug竟然花了5年時間都未解決呢!?

#1的bug是………………「Microsoft has a majority market share 」

內容:

Microsoft has a majority market share in the new desktop PC marketplace.

This is a bug, which Ubuntu is designed to fix.

Non-free software is holding back innovation in the IT industry, restricting access to IT to a small part of the world's population and limiting the ability of software developers to reach their full potential, globally. This bug is widely evident in the PC industry.

Steps to repeat:

1. Visit a local PC store.

What happens:
2. Observe that a majority of PCs for sale have non-free software pre-installed.
3. Observe very few PCs with Ubuntu and free software pre-installed.

What should happen:
1. A majority of the PCs for sale should include only free software like Ubuntu.
2. Ubuntu should be marketed in a way such that its amazing features and benefits would be apparent and known by all.
3. The system shall become more and more user friendly as time passes.

好慘烈的bug,我最多只能回「I can confirm this bug」

真想有那麼一天可以回答「I can not reproduce the bug」 XD

2009年9月15日星期二

關於Gogogo計劃

Gogogo是我們最新的開源計劃,在過去的Barcamp裏已經稍作過介紹,本來應該聊足勁讓Gogogo快點進快公開測試的階段,可惜開發者中不少都是Software Freedom Day 2009的搞手之一,這星期內是分身不暇的了……所以在mailing list中的查詢仍未好好回應,請各位見諒~

如果想知道多點及提出意見,歡迎來到Software Freedom Day 2009跟我們面對面聊一聊!

2009年8月12日星期三

Moblin Image Creator 1 計劃再開

制作客制化的Ubuntu影像有很多不同的方法,也有很多不同的工具可以選擇,當中我認為最好的是一個叫做Moblin Image Creator(MIC)的軟件,屬於Moblin計劃的一部份,它的圖像化介面簡化了許多客制化的工作,最初的原意是用來制作Moblin影像予不同的設備,但基於Moblin是為Atom的LPIA架構而設,所制作的影像不一定可以在以外的處理器上運作。

故此我曾經弄過一個叫做Moblin Image Creator for EeePC的小型計劃,將Moblin Image Creator改成能製作i386 EeePC的客制化影像,但到了今時今日滿街都是Atom小筆電時,這個計劃的需要已經不大,我自己也沒有時間維護。

雖然還是有些零星的聲音希望可以提供8.10、9.04的支援,奈何真的抽不出時間,直至最近自己也需要弄客制化影像為止。

這時Moblin計劃已經變了許多,自2.0版本開始,Intel宣佈採用Fedora而不再有Ubuntu提供,同時MIC也被拋棄,改為開發MIC 2,但有趣的是,實際試用後發覺MIC2做得不比MIC1好,就像許多其他客制化工具一樣,只有指令工具,如MIC1般簡單易用的圖像介面卻不見了,這實在令人費解,再加上不支援Ubuntu,我實在不想花時間再去熟習完不熟悉的Fedora,對Moblin的興趣降到很低……

所以左思右想,再詢問了MIC1的維護者意見後,還是不應該讓這套好軟件從此石沉大海,我決定為MIC1加入Ubuntu 9.04的支援。

成果暫時放在github,現階段已經可以用來制作Ubuntu 9.04 Jaunty的LPIA影像,但不像MIC for EeePC般有Netbook Remix的支援,會遲些才會加入,所以暫時只適合進階用者:

MIC功能齊備,而且一目了然

因為Moblin已經放棄了MIC1的維護,所以之後生成的影像是否與Moblin有關,其實已經沒有所謂了,可以用來做更多奇奇怪怪的用途 ;)

我想在launchpad開一個計劃管理這個……應該叫什麼名字好呢?

2009年6月14日星期日

在VirtualBox裏試玩Moblin2

自從Moblin拋棄了Ubuntu後,我就跟許多其他開發者一樣失去熱情,不再留意這個項目,連自己那個Moblin Image Creator for EeePC也不再更新。

最近收到數個查詢,問我能不能把Moblin2弄到EeePC 701上,可是一來沒有熱情來行動,二來真的很繁忙,所以只能說句抱歉。

到了現在終於叫做有點空閒,先看看Moblin2發展成怎樣吧。

測試的第一步當然是把Moblin2裝好,影像檔可以從Moblin的網頁下載得到,不過我沒打算直接裝在Netbook裏,我的EeePC 701並不在支援設備名單中,而且我也不想把運行得不錯的系統換掉,故此會在VirtualBox裏跑。

雖然聽說過有VMDK格式的影像檔下載,可是找不到,只有燒錄在USB儲存上的IMG檔,

Using the Moblin Live Image一文有提過怎樣把影像檔燒進USB儲存上,但我認為這個也太麻煩了,所以我先用QEMU把這個IMG檔先換成VMDK:

qemu-img convert -f raw moblin-netbook-beta-refresh-20090607-001.img -O vmdk moblin.vmdk

跟著要在VirtualBox裏建立虛擬機器,設定沒什麼特別的地方,我隨便選了OS為Linux - Fedora、1GB記憶體,不過要留意一定要使用PAE,否則無法啟動。

截圖:

嗯……界面設計還蠻酷的

2009年5月28日星期四

軟體介紹 - KeePassX (密碼管理)

隨著伸請的互聯網服務越來越多,要記的密碼亦即隨著增加,有些人使用一組密碼去登記所有帳戶,但這明顯是一個非常之高風險的行為,只要有其中一個網頁被攻破,又或者在輸入密碼時被其他人截聽得到(有太多方法做到了,不詳說),其他所有帳戶都會被攻破。

以前我們遇過一件事,某人在數部不同的伺服器上使用一組密碼,結果因為他的失誤而被取得到了密碼,連帶幾部機一起遭殃,搞得「私人」的地方不斷有「旅遊團」出入。

最理想的狀態是不同帳戶使用不同的密碼,但大大少少的服務可以有幾百個,要記幾百組密碼是非常之高難度的事,所以一般都會有保存的地方,但這個保存的方法若有不妥,可以輕易被人拿到的話就跟沒有相差不大。

要是把密碼記錄進電腦的話,把檔案加密不失為一種比較妥當的做法,要記的密碼只有一組,難度相對較低,就算電腦遺失(假設你用手提電腦)也不會讓其他帳戶資料外洩。

以往我的做法是用一個文字檔記錄密碼,然後以PGP加密,要使用時才解密,這方法的麻煩在於每次解密後都要記得把檔案刪除,還要記得在修改後重新加密一遍,因為步驟做錯而丟失密碼的經驗有過幾次。

現在我則改為使用KeePassX來管理密碼,是一個跨平台、擁有圖像介面的密碼管理程式,用戶可以把所有帳戶資料存放在一個已加密的檔案之中,在需要時再叫喚出來。

重點功能:
  • 儲存網站、用戶名稱、密碼、檔案、注解等在已加密的資料庫中。
  • 以樹狀目錄形式存放記錄
  • 尋索功能
  • 自動產生密碼
  • 可以把密碼直接記入剪貼薄內,不會在螢幕顯示,即使有他人在背後看著螢幕,也不會令密碼外洩
  • 可以設置在指定時間後,把剪貼薄內的密碼清除





實際使用過後,我覺得KeePassX的功能切合實際需要,在安全性及方便性之間有個很好的平衡,而且是跨平台的軟件,值得推薦予大家。

2009年5月23日星期六

豆豆輸入法

今天(即2009年5月22日,對夜貓子來說,日期的轉換不受客觀的事實所局限,全憑主觀的心,即是未上床日子就不會改變)跟Maddog返了科大一趟,為了某開源計劃到圖書館找一些演算法的書籍及參考資料,路過展示FYP介紹的攤位,其中有一個項目引起了我的注意 - 叫做豆豆輸入法。

詳細的內容我並不是太記得,憑記憶所及,那是個在Mac OS X上使用的拼音輸入法,基於我不是一個Mac用家(PowerPC的Mac壞了後就再沒有碰過………可悲),所以最初的反應只有是-「啊,居然會有做Mac的FYP,很罕見嘛」,不過文章最低有一個URL卻令我眼前一亮


咦,竟然放了上Google!?而且用了GPL發佈 :O

將FYP開放成為開源項目,其實一點都不奇怪,只是香港的實例少得有點可憐而已,雖然Mac還未是我杯茶,沒有機會試一試,但這無損我對這種行為的贊賞。Zhou Lei(作者),加油啊!

2009年4月1日星期三

我希望這是愚人節笑話……Microsoft贏了FAT的專利訴訟

FAT (File Allocation Table)作為一個檔案系統並沒有什麼突出的優點,Microsoft本身亦已經有更好的代替品,但時日有功,加上Windows本身的佔有率,FAT/FAT32是世上使用率最高的檔案系統,隨身碟(USB Thumb Drive,或內地叫法U盤)預設所使用的檔案系統便是FAT32,使得不單Linux及Mac都必須支援,連帶電子設備如手提電話、數碼相機、PMP、GPS導航、DVR、MP3機等等都要支援不可。

然而…………作為一個檔案系統,一種使用磁碟「格式」,居然是Microsoft持有的「專利」技術。

別問我為何一項磁碟「格式」可以伸請到專利,這跟問專利蟑螂為何能夠生存一樣,許多無稽的專利也可以伸請得到,只是能不能經得起法庭的考驗而已。這方面可以要等比較熟識法律的朋友來解答了,我個人倒是很希望洪朝貴教授可以寫篇文章再深究探討一下這個問題,他在LinuxPilot的專欄是我每期的必讀。

開源界對於這項專利的關注已久,擔心會被用來攻擊Linux的武器,若然因此令Linux不能再支援FAT的話,這是一項不少的打擊,會令Linux連打開數碼相機的記憶卡這麼簡單的事都做不到。

基於Microsoft在2003年開始提供FAT授權及收費,使得Public Patent Foundation在2004年時向美國專利及商標局提出再審核這項專利的要求:
不過直至現時為止這項抗爭並未完結,對開源界比較有利的消息就只有德國裁定這項專利無效,法庭說這是 "not based on inventive activity."
起碼在德國是能自由使用的了……不過開源界及各電子廠商還未能鬆一口氣,Microsoft在今年2月控告了生產GPS導航設備的TomTom,指其侵犯了八項專利,其中三項與開源軟件有關,涉及FAT的有二項。
涉及的專利:
  • 5,579,517 "Common Name Space for Long and Short Filenames"
  • 5,758,352 "Common Name Space for Long and Short Filenames"
  • 6,256,642 "Method and System for File System Management Using a Flash-Erasable, Programmable, Read-only Memory"
因為涉及到FAT,外界普遍不是認為會打很久,就是Microsoft會敗訴,可是……結果出來了,居然是Microsoft贏了!TomTom跟它庭外和解。TomTom需就Microsoft指控的侵權專利支付權利金,而Microsoft則能免費使用TomTom持有的4項專利技術。
如果有細心留意的話,其實Microsoft這次的專利控訴所針對並不是FAT本身的擁有權專利,而是在FAT上讀寫長檔案名的所謂「技術」,如果是由DOS年代跳入Windows 95的用家,大概會清楚記得是什麼一回事。對於不熟識的讀者,我就粗略地說一說這個問題。

本來FAT是有所謂8.3的限制,就是檔案名只許有8個英文字母,檔案類型即"."後的內容只許有3個英文字母,後來Windows 95要加入Unix般的長檔案名支援,但又要令DOS兼容,結果就弄出了一個"HACK"去騙DOS,即使檔案用了長檔案名,DOS看到的仍是符合8.3格式的檔案,並不會產生錯誤的讀取。

這項所謂的技術,並不在FAT的標準之內,算是延伸出來,可能這就是官司能瞬速完結的原因。但就其結果來說,與保住了FAT專利也沒有什麼大的差別,不能讀取長檔案名的電子設備亦一樣是賣不出的,Linux及Mac的用家若只能看到8.3檔案也是很掃興的事。

雖然說這項所謂的技術與FAT標準本身的性質有點不同,但就結果來說,不過也是一項廷伸標準而已,這個也能專利嗎?

不幸中之大幸是這是TomTom與Microsoft的庭外和解,並不是一項裁決,應該不能算是案例,而且到底TomTom是為了FAT的那幾項專利,還是其餘那五項指控而就範呢?現在根本不清楚,還有翻身的可能,情況未到最壞的地步。(以上若有法律的錯漏,歡迎指出修正)

至於開源及電子廠商的反應呢,正好今天的4月1日,我想會慢一點才會出來,不然被當成是玩笑也笑不出來了……事實上我也怕這篇文章會被當成是愚人節笑話啊,尤其事今日有許多人在開玩笑時還會說明是愚人節玩笑。

2009年2月28日星期六

推動學生參與Google Summer of Code

由2005年開始,每年Google都會為大學生們舉辦一項名為Summer of Code的活動,津貼他們參加開源軟件的開發,讓他們得到開發的經驗外,亦能加深對開源軟件的認識,同時亦能成為各開源軟件的助力。

津貼的金額為$5,000美金,其中$500會撥給該開源計劃,其餘$4500則由學生領取(若為港幣三萬五千元)。

計劃目的:
  • Get more open source code created and released for the benefit of all;
  • Inspire young developers to begin participating in open source development;
  • Help open source projects identify and bring in new developers and committers;
  • Provide students in Computer Science and related fields the opportunity to do work related to their academic pursuits (think "flip bits, not burgers");
  • Give students more exposure to real-world software development scenarios (e.g., distributed development, software licensing questions, mailing-list etiquette).

能在參與開源計劃、貢獻世界的同時,獲得金錢的利益,要是我當年讀書時代有這麼有意義又好康的事,不參加才是奇怪呢。

但世事往往就是這麼神奇,翻查2005至2008的記錄,除了2005年那屆有一位香港學生成功外,之後就再沒有來自香港的大學的學生成功參與計劃。

參加這項計劃真的有那麼困難嗎?我想問題不關審查事,而是香港報名參與的人數實在太少。

要是有這幾屆的學生反對,說曾經參加而失敗的話,我很樂意修正這篇文,怎麼說我都離開學界都有一段時間了。但若然沒有的話,那麼我很疑惑為什麼沒有學生參加呢?

可能原因:

1. 不知道什麼是Google SoC
2. 不明白、不清楚什麼是OSS
3. 怕困難而不敢參加
4. 得知活動時……已經是大學最後的暑假了
5. 對OSS完全沒有興趣

點1及2只要多點的宣傳,學生們的困惑不難去解決,至於點3,總會有不怕困難勇於挑戰的學生吧?要是有這樣的學生,卻因為點4的原因而悔恨的話,那就真是一件跟點5同樣可惜的事。

距離計劃開始到報名結束,還有若一個月左右的時間,所以我想借這個機會向各院校的學生,推介一下這個計劃,不要錯失這個機會。(暫時我已經把資料寄了給相熟的教授,亦已有所回應。)

活動詳情及建議

雖然是暑期的活動,不過準備的工作現在就得展開,開源專案的團體需要在3月9日至13日期間遞交他們的伸請及Idea List,包括想找學生去改良或加入的功能、模組,獲選名單會在3月18日公佈。(這個我開始準備)

學生們需要在3月23日到4月3日期間遞交伸請及計劃書,然後各個團體會就計劃書評分,Google則會在4月20日公佈獲選名單。

若果真有興趣參與的話,我會建議先看清楚有什麼開源項目參加了計劃,找出自己有興趣的項目(沒有就算了),再看Idea List裏有什麼是想挑戰的。雖說這是一項有金錢津貼的活動,若只為酬勞而強逼自己去參加的話反而失去計劃的意義,開源軟件開發應該是一件快樂的事才對。

而在寫計劃書之前,最好先到有關團體的mailing list、forum裏,找相關的開發人員詢問有關的細節及介紹自己的想法,這樣對伸請的成功會有一定的幫助。

雖然我未參加過這個計劃,但若果你有什麼問題關於OSS的問題的話,也歡迎找我商量。

相關資料:

計劃網頁:http://code.google.com/soc/

時間表: http://code.google.com/intl/zh-TW/opensource/gsoc/2009/faqs.html#0_1_timeline_5354032302481437_
Link
Debian的SoC計劃匯報 : http://www.milliways.fr/

海報及推擴材料(Thanks Anthony!):http://code.google.com/p/google-summer-of-code/downloads/list

2009年2月17日星期二

跨平台桌面維基 - Zim

在桌面軟體之中,我最常用的第一名是Firefox,沒有了它失去七八成的生產了,第二名是Zim - 桌面維基軟件,由個人以至工作有關的記錄全都收錄在Zim的維基裏,雖然沒有了它仍能工作,不過就等同於忘記帶筆記薄(不是指電腦)去開會一樣,要找記錄,想寫東西都會覺得很不方便。

Zim- V0.25

你可能會奇怪,維基不是安裝在伺服器上讓全世界人一起編輯的嗎?怎麼會跑出個桌面維基出來呢?不是本末倒置了嗎?

與一般維基不同,所謂的桌面維基的主要用途是供個人使用,所編輯的再不是大家共同關心的事情,僅是對個人有興趣的記錄,這可以是:
  • 部格落的文章、日記、隨想錄 (例如這篇文章就是在桌面維基裏撰寫)
  • 學習心德、知識
  • 工作的記錄
寫什麼完全視乎閣下有什麼需要。


要做到上述的事情,用notepad、word等不就可以了嗎?為何要特別要用到維基系統?

使用word等工具可以輕易地造出更花巧、更多樣式的文件,但這些文件之間往往缺乏關聯,要像HTML文件般可以加入鏈結,立即跳往相關的文件裏,然後又可以立即返回原來的文件,要花費的工驟要多許多。而桌面維基就比編輯一般的HTML檔更為簡單,可以輕易地就自己的習慣加入鏈結,更快地找出文章。

與此同時,桌面維基如Zim,支援樹狀目錄式的文章顯示及搜尋功能,就算沒有鏈結都能迅速地找出文章。要是再配合Gnome DO那類軟件一起使用的話,這個步驟可以再簡化,例如當我要寫部格落時,就會按:
Meta + Space

:myb

Enter
然後Gnome DO就會幫我開啟Zim裏一個叫 :Personal:MyBlog 的維基頁面,我就是在那裏寫這篇文章,夠簡單了吧?

跨平台桌面維基

雖然桌面維基已經不是什麼新的事情,但現時的用戶並不多,主要問題是軟件的支援不足,暫時我未聽過有商業的桌面維基,至於開源的有MoinMoin及Zim二套。

MoinMoin 雖然同時支援Linux及Winodws,但作為桌面維基其實是相當之勉強的……根本是把一個簡化版的web server帶進桌面裏。

至於Zim則是一套簡單易用,相當之適合桌面環境的維基,我經常向人推介,不過……要把舊版本裝進Window裏是非常之困難的,向Linux人介紹沒問題,但Windows用戶就無緣了。

到了今天,我終於也可以向Windows用戶介紹Zim了,因為今日(24小時內)有人弄出了Zim的Windows安裝程式!

http://code.google.com/p/zimdesktopwiki-windows/

其他功能

安裝的過程沒有什麼特別要提點的東西,所以就留待用家慢慢發掘了,最後我想再介紹一下0.27版本一個新功能,就是Check Box的建立。

用Wiki來管理工作的麻煩在於難以記錄工作完成與否,雖然你可以在工作清名單上加上[完成]之類的標籤,但不太直觀,要一目了然的話可能要靠改變文字顏色達成,但很麻煩,要按好幾個掣才能做到。

自0.27版本開始,只要在每行的開端輸入[],就會自動變成一個代表工作完成與否的Check Box,用戶可以用滑鼠點擊改變設定,除了輸入剔以外,也可以輸入交叉,代表工作失敗、放棄等等的意思。

以上是我在某個開源計劃的工作清單,因為要做的事情太鎖碎了,用Remember The Milk來記錄要輸入很多東西,而且工作是有所謂的層階性,某個小工作可以是某個大工作的其中一個步驟,必須清除這些小事情才能完成大工作,一般的PIM軟件都不能處理這種關係。

一般要用到Project Management軟件才有相應的處理方法,不過加入工作的介面經常要填一大堆東西,以個人應用來說,Zim其實比以上說的軟件還要方便啊。例如要為某項工作添加說明,只要把工作變成一個鏈結後,跳到該頁面裏輸入便是了。

Zim的發展

Zim並非一個嶄新的軟件,已經有好幾年的歷史,一直以來作者都很低調及沉默,但隨作者把開發的工作轉到Launchpad後,多了些人參與,作者為了更進一步讓其他人參與Zim,還作出了一個大膽之極的決定,放棄原來用Perl所寫的代碼,用Python重寫一遍!

暫時的進步還不是太過理想,但成功的時候,應該會進一步吸引開發者的注意,屆時或許有人有興趣把Zim的編輯器整合到其他程式裏,讓本來是純文字的內容有更多的變化。

相關閱讀:

2009年1月6日星期二

キタ!キタ! ARM的Netbook戰線要昇起狼煙

以前寫過ARM Inc與Canonical合作把Ubuntu移植到ARMv7(註:不是ARM7!)一事,那時我猜戰線會放在MID設備上,不過剛看到了一篇LinuxDevices.com的新聞,似乎廠商們的目標放得更遠大,希望更進一步吃一塊更大的餅,就是Netbook的市場。


這次出手的是Freescale,推出一粒採用Cortex-A8核心,名為i.MX515的處理器,而目標的市場為USD $200的Netbook。

現在市場的ARM Netbook主要由山寨廠生產,有些用WinCE,有些用Linux,而處理器方面多是使用Samsung的S3C2410,雖然價錢遠底於一般x86 Netbook,但消費者要的是一部小巧的Notebook,而對規格的渴求卻無限地接近一部正常的Notebook,拋出核心是幾年前PDA規格的Netbook真的可以滿足到要求?

Cortex-A8核心的ARM就不同,以前我用過TI的產品,性能遠優於以上提過的,有3D加速,播放720P影像也沒有問題,而且耗電量更低。

這顆i.MX515的規格還要更高,要是配合Ubuntu的豐富套件支援,相信ARM-Based的Netbook將會有一番新的面貌,這時ARM的Netbook戰線才真正打開。(期望CES會有特別的消息)

2009-01-11

2009年1月4日星期日

USB VGA Adaptor (2)

以前寫過一篇關於USB VGA Adaptor 的文章,其實自那以後我已經沒有在用那個設備,皆因工作的性質由嵌入式系統的開發,慢慢轉移到多媒體系統上。

直至最近為籌備OLPC的講座,封塵近一年的玩具才有機會重見天日,這個USB VGA adaptor正好適合在沒有VGA port的OLPC上使用。

這段時間Xorg都變了許多,以往一定要指定顯示卡的驅動,現在都能靠自己偵測到,但並不包括這個USB設備,不過要加入去的難度也簡單多了。

以一台Ubuntu 8.04的系統為例,只要修改xorg.conf :

加入以下區段:

Section "Device"
Identifier "USB VGA Card"
Driver "sisusb"
EndSection

Section "Monitor"
Identifier "External Monitor"
ModelName "Monitor Model"
Option "DPMS"
EndSection

Section "Screen"
Identifier "USB VGA Screen"
Monitor "External Monitor"
Device "USB VGA Card"
EndSection
然後修改ServerLayout ,加入 Screen "USB VGA Screen"即可,例子:

Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
Screen "USB VGA Screen"
InputDevice "Synaptics Touchpad"
EndSection

2008年11月14日星期五

Canonical與ARM聯手打造Cortex版本的Ubuntu

消息來源: ARM and Canonical to bring full Ubuntu desktop experience to low-power, ARM technology-based computing devices

雖然Ubuntu是以Debain為基礎的分發版本,但所支援的處理器架構數量卻遠遜於Debian,Debian支援十多種處理器,以往Ubuntu就只有x86(+ 64bits)平台,要直至到今年4月左右的時間,經一個Nokia所支持的計劃才得以移植到非x86的ARM的處理器上。

那計劃並非由Canonical主持,就像Ubuntu由Debian衍生出來一樣,只算是分歧的軟件,日後支援如何實在難說得很。

當時我即使看到了新聞,後來又擁有了能夠跑動得Ubuntu Port的開發板,也不曾有過要嘗試的念頭,Ubuntu相比起OpenEmbedded的環境實在是太大食了。

但今日看見了有關於ARM要與Canonical聯手打造Cortex的Ubuntu版本的消息後,使我有了新的想法。

Mobile Internet Device(MID)是由Intel提倡的概念,故此現時市場上這類產品所使用的處理器主要是Atom,但在這批機推出前,市場還是有同類的產品,例如Sony的Mylo,當然不是用x86的處理器,事實上這種規格的機器一般都是採用32bits RISC的處理器,而這個正正是ARM的主打市場。

以前Intel的XScale一樣是ARM架構,故此要付ARM Inc權利金,被Intel吃了這個市場亦無損ARM的利益,但現在用的是x86的處理器,ARM Inc就無收益可言,與Netbook這類輪不到ARM去搶的市場不同,沒理由要把這塊餅摃手相讓。

與此同時,Canonical對MID亦很有興趣,之前與Intel一起辦的Moblin計劃,其成果的Moblin 1.0 / Ubuntu MID亦不弱,後來卻宣佈由Moblin 2.0起,將改用Fedora,Canonical將獨力繼續Ubuntu MID的開發。

沒想到過了幾個月就傳出ARM聯手的事,到底是因為與ARM聯手而被踢出局,還是因為踢了出來才找ARM合作,這個不得而知,但我相信跟著的戰場重點會放在MID上。

適合Ubuntu ARM移植版本的MID級設備,正好有一台在開發中,叫做OpenPandora,跟OpenMoko一樣是開源的硬件設計,在規格上與Atom的MID不遑多讓,但價錢就平得多。

這種平台的最大問題就是軟件支援,雖然說嵌入式Linux也能用桌面的軟件,可不是每個用家都懂得自己編譯,就算有自家的套件庫,怎樣都不可能及得上Ubuntu、Debain 之流的齊備,大大限制了平台的發展。

若然Ubuntu MID這個已經簡化了的平台能在Cortex的MID上跑,那麼以上的問題就會迎仞而解!

寫到這裏,原本我興趣缺缺的OpenPandora,開始有了購買的意欲 XD

雖然我不太留意這個計劃,不知有沒有人試過在上面跑Ubuntu,在效能方面我不太擔心,因為另一個我非常留意而採用跟OpenPandora同一顆處理器的計劃,已經有人貼了Ubuntu的示範,看來不錯,值得期待。

2008年11月5日星期三

Freerunner/OpenMoko的Android移植成功

跟據 Online Development網誌的消息,Android已經成功移植到Freerunner/OpenMoko的平台上了!

David Wong及Henry Law手上的GTA02開發平台理應都能跑得動,是時候踢一踢他們 :X

可惜是現階段的移植並未能讓Freerunner + Android當成電話使用,撥號及SMS皆不能,Wifi 亦欠奉,Android所著重的通訊能力完全無法發揮……

2008-11-05 23:46 補充: Henry已經決定了會動手去試 :X


2008年10月30日星期四

Ditz Commander v0.3

距離上一次v0.2的發佈剛好是一星期,這次的修改主要是在UI及bug fix上,例如在工具列中加多了幾個按扭、可以快速地載入曾經開啟過的目錄,還有是把ditz大部份的指令都做進去了。

我心目中想要的功能都已經齊備,下一次v0.4的發佈應該是針對說明提示等對ditz初心者較親切的環境,但基於本人對那些功能不太熱衷,所以應該要過一段時間才會去做……

Changelog:
  • Added new Tool buttons : Go back & Go forward
  • Added extra command list for non-common command
  • Implemented commands : "add-release" , "add-component" , "set-component" , "Unassign" , "Stop" , "Raw Edit"
  • Added "Recently opened folder" menu
  • Raw Edit Command - Launch $EDITOR (default is vim) and open raw issue file
  • Bug Fix - It is now able to handle relative path as input argument of command "ditz-commander"
  • Change window title according to the current loading page
Screenshot:


Creative Commons License
本網誌由Ben Lau製作,以共享創意署名-非商業性-相同方式共享 3.0 香港 授權條款釋出。