Tuesday, December 19, 2006

dev-c++的sleep

最近把一些source要搬到windows平台上
利用dev-c++來當開發平台
(不知道為何,一到windows就會想用IDE...ㄏㄏ)
在一個簡單的地方讓我很.....沒力
不知怎麼了stdlib.h裏面的sleep竟然一直跟我說沒有宣告
進去dev-c++的include目錄下看了一下stdlib.h
發現....他的宣告是 _sleep
...........
不是很清楚為何要改加底線
但是這樣就OK啦
不過_sleep裏面的參數是microsecond而在linux的sleep裡面是second
要寫出跨平台的程式碼要考慮的還真多呢...ㄏㄏ

Monday, December 18, 2006

這個世界不是只有PHP這種語言好嗎

最近感覺一種深深的無力感
其實在台灣也待過不少"小"公司
我的個性其實自由慣了,又不喜歡去面對那種太官僚式的職場
所以一直沒有去面對那種需要"ㄚ信"的精神才等的到的股票
小公司當然有小公司的好處
但是缺點也不少
我想最嚴重的大概就是沒有好好規劃的習慣吧
這些小公司大多數老闆都兼做業務
因此常常對於一個產品就是希望能儘快推出為第1優先
因此在初步選擇上就會用最簡單的方式來做東西
現在的工作環境裏面幾乎都是PHP的人才
因此上面的技術指導人員似乎覺得PHP可以搞定所有
甚麼東西第一個想到的就是PHP
我並非不喜歡PHP
當要用Web application的時候,PHP確實是個很棒的語言
但是當需求不一樣時,我想應該要好好思考PHP是不是適合
而不是為了要用PHP,到處都是Apache的身影
為了用PHP....所有的東西都必須配和PHP
好死不死PHP的彈性並不高
最簡單的就是當client根本沒有web browser(甚至連X window都沒有)
這個時候指導方針還是....web page寫好了呀
你只要連上去就可以啦.......我當然知道....

很想說.........這個世界絕對不是只有一種程式語言.......PHP

Tuesday, December 12, 2006

你還在用"我的最愛"嗎

我想有用過Web browser的朋友應該都用過"我的最愛"的書籤功能
(應該說有用過windows的朋友比較洽當)
多年以來,書籤也只忠實的紀錄你想再次瀏覽的網頁link
隨著web 2.0在各種文章裏面大書特書後
書籤也進化成了社群功能的一種型態

當然,首先遇到的一個問題是
當你重新安裝你的OS而忘了備份你的"我的最愛"時
應該是有一點"搥心肝"的感覺吧
這個時候當然會想把這些書籤放到網路上面去
一個典型的例子便是Google的web sync
他利用你的google帳號將你的書籤存在google那邊
當你使用firefox的時候這個套件將會同步你本地的書籤
(只有firefox啦...IE...自求多福)

以web sync的作用就是儲存自己的書籤
但是慢慢就有人想要把自己的書籤與朋友或是不認識的人分享
這時候書籤便與社群的功能產生了結合
一個元老級的書籤社群便是del.icio.us
你可以分享自己的書籤給網路上的朋友
甚至加上自己的註解
firefox的朋友更可以安裝del.icio.us的套件
這樣你便可以直接tag你喜歡的網頁
也可以直接跳到自己的書籤首頁

看到一堆英文會頭暈嗎
沒關係,台灣的社群的朋友也是很熱心的
黑米書籤HEMiDEMi便是本土的書籤社群
黑米很強調社群的功能
因此你可以在不同分類裡找自己有興趣的主題
看看大家對這個主題的討論
加入某些特定興趣的族群....
總之,他架構一個強大的討論社群

你還呆呆的在用"我的最愛"嗎
唉~~~~朋友~~~~就算不是嚐鮮一族
現在也該跟上時代了...ㄏㄏ

Friday, November 17, 2006

GSpace+Fon

之前介紹過Fon這個有趣的網路分享裝置
雖然比原本進度慢了一些
但是Fon總算要開始銷售他的裝置Fon Liberator
就在此時,Fon宣佈了併購GSpace
Google與firefox的使用者應該對這個擴充套件不陌生吧
GSpace利用你的GMail帳號有2G的空間特性
他把這些網路空間變成一個網路儲存設備
簡單來說,他會用你自己的gmail帳號發一封有附加檔的mail給自己
而GSpace這個套件可以把這些mail取出變成一個網路儲存空間
聽不懂嘛....看看圖吧

不過他不只有這些而已,GSpace有照片瀏覽模式

當然,我們放在上面的mp3也要給他線上play一下

我想Fon的發展因為OpenWRT的成熟與壯大
他未來會有更多令人期待的新鮮玩意
(挺佩服Martin Varsavsky的)
你沒用過GSpace嗎....快去試試吧
啥....你還在用IE......自己保重吧.......

Wednesday, November 15, 2006

好久不見啦: PHP

記得我上次接觸PHP是我剛畢業時的第一份工作
那時候還是PHP3的時代
現在PHP都到了5代了
那個時候的公司原本要弄一個新聞發佈平台
我那時要以PHP為base去實做
雖然後來沒有繼續下去卻也讓我第一次接觸PHP
而幾年之後,Blog的觀念開始大行其道
RSS news的網站也如雨後春筍般出現
如果那時繼續留在PHP的世界
或許現在會很不一樣的發展吧....ㄏㄏ

在現在這間新公司
很多地方是用PHP當base的web平台
雖然我負責的不是PHP相關
但是總是有理由讓我重新把記憶中的PHP拿出來
很巧的是前陣子有朋友用wordpress架設了自己的blog網站
也讓我多了點機會去看看PHP

現在的PHP比起以前多了很多彈性
因為XOOPS的盛行
也讓PHP template的概念更受到重視
而smarty這個PHP template library便是我目前使用中的
template的概念是讓視覺設計的工作者可以獨立於程式設計外
也就是說,程式設計可以不用去考慮視覺呈獻
而美術設計可以不用去了解程式設計邏輯

目前自己用了一個主題讓自己重新熟悉PHP
WordPress確實是個挺方便的個人blog網站工具
他有很方便的編輯與管理工具
在任何可使用PHP與MySQL的apache Linux平台上都可以運作的不錯(LAMP..ㄏㄏ)
不過我不喜歡他的theme系統
雖然你可以自由的替換掉你的theme
但是一個theme裏面的組成卻大多是PHP程式碼
我想這會嚇壞很多網頁視覺設計人員
因為他們往往不熟悉程式設計
反過來說,要讓程式設計人員處理視覺呈獻也是惡夢一場
因此我覺得用smarty來實作一個可以替換視覺呈現的theme是個方向
目前正在進度中(進度慢的原因...正式工作變多加上....懶懶懶)
改天再來寫一篇文章跟大家報各我的心得吧.......

Wednesday, October 18, 2006

為何要用RSS

前幾天一個朋友說我是"很需要RSS的怪胎"
ㄏㄏ....然後另一個朋友說"為啥你每天都看一些怪東西"
.....我想.....好吧....我自己也是個怪東西...ㄏㄏ

Anyway, 我是個習慣每天開始工作前先看看這個世界發生啥事的人
因此我會習慣看很多blog的文章
如果把這些網址紀錄在瀏覽器書籤中
我必須一個一個打開看看有無新文章
我想這樣是很浪費時間的一件事(上班時間...ㄏㄏ)

因此我習慣用RSS reader
之前我用獨立的RSS reader程式
後來我開始用google reader來看我的news
因為我發現最大的好處是他可以把我的blog RSS list存在google那邊
在任何可以用browser的環境下我都可以去讀我的news
(就算是別人的PC或laptop)

因此如上圖所示
我只要登入google reader就可以知道我訂閱的blog網站有無新文章
而且我的習慣是會瀏覽標題
先找到我有興趣的文章,其他的就不理他
加上google reader可以跟blogger整合

我喜歡看這個世界奇形怪狀的事
我喜歡有效率的工作
因此我喜歡RSS
你跟我一樣嗎....推荐你試試RSS的威力吧
至於我是不是怪東西......我想我寧願怪一點吧....ㄏㄏ

Tuesday, October 10, 2006

用linux抓下你的DVD音軌

現在沒有機會跟朋友玩樂團
所以現在多了一個習慣是跟著音樂一起玩
我有些DVD的現場表演有很棒的pattern
不過每次要用mplayer去播放DVD有點痛苦也不方便
因此我會把音軌抓下來存成mp3

在linux這樣的工作其實很容易實現
首先,你可以用一個FIFO pipe來連結mplayer的wav輸出與lame的輸入
這樣的好處是你不用先把整個wav檔案抓到硬碟
(整張DVD的音軌應該也不小....不過現在大家硬碟應該都很大了吧....ㄏㄏ)
所以你可以先建立一個fifo

mkfifo wavbuf

這時候你的目錄下匯出現一個新檔案如下
prw-r--r-- 1 joepass joepass 0 2006-10-09 23:00 wavbuf

再來我們就要開始抓音軌
我們用mplayer來dump整個audio然後指定檔案為我們的fifo檔案

mplayer -quiet -vo null -vc dummy -ao pcm:waveheader:file="wavbuf" dvd://

這時候mplayer會開始把wav資料丟進fifo內
你可以開啟另一個terminal(或你可以將mplayer放入背景執行)
用lame來壓縮mp3檔案

lame --preset standard wavbuf music.mp3

我套用standard的設定,你可以設定自己想要的mp3參數
接下來就是....等待....啦
等一切完成後你就有一個music.mp3的DVD音軌檔案了

如果你覺得這個一整個mp3太不方便
你還可以用mp3splt這類軟體將mp3切成你要的長度
很棒吧....有需要抓片斷的音軌也是很好的選擇歐

Monday, October 09, 2006

錄製VCD

最近幫朋友燒一些音樂VCD(不要報警抓我...)
如果你像我一樣習慣用terminal的command line工作
或是你受不了為了要用k3b來燒錄得把Qt, kdelib等等這些東西裝上
Unix-like的環境有一個好處: 幾乎所有工作你都可以用command完成
燒錄VCD也一樣

首先,你必須把你要的內容抓下來
當然你可以用其他方式製造你的video檔案,譬如你的數位攝影機
這邊我用mplayer把VCD的mpeg內容抓下
(好吧....這樣還有一個好處....我可以把版權宣告那段拿掉...反正已經違法了)

mplayer vcd://3 -dumpstream -dumpfile music.mpg

我把第三軌的內容抓下成music.mpg這個檔案
再來你必須製造成VCD的cue檔案

vcdimager --iso-volume-label="MUSIC" music.mpg

GNU的VCDImager是一個很棒的工具讓你完成這件工作
其他的用法可以去網站瞧瞧
你現在目錄下會有videocd.cue與videocd.bin這兩個檔案
最後我們只差把他寫入光碟啦
我們可以用cdrdao來完成這件工作

cdrdao write --device ATA:0,1,0 videocd.cue

這邊我的燒錄機是ATA的BUS0第二台機器
你可以指定你的燒錄機
這樣一份你自己的VCD便完成啦
受不了GUI拖慢你的工作了嗎
試試Command Mode吧.... ㄏㄏ

Friday, September 15, 2006

Dynamic linking library in Linux

最近看到許多linux的新一點的project許多都使用dynamic linking來架構其C程式,其中dlopen這個系列雖然是很lightweight但是卻十分好用,幾年前看到dlopen的使用便覺得很酷,因此 寫一個粗淺的文章來談談dlopen library。

不了解dynamic linking library嗎?我想一個例子便是Microsoft的COM架構,這類的方式有許多好處,首先是對於軟體設計人員可以更自由的與其他人開發的 library獨立開發。這裡要知道的是他確實是dynamic的來連結,一般的library的linking多是在linker的階段完成,也就是說 在你執行ld的時候(或是由gcc呼叫ld)便將library與執行檔的symbol link完成。因此就算你是用shared library依然在link stage後便會與特定的library有連結....繼續閱讀

Tuesday, September 12, 2006

Daemon

最近看了OpenSER的code
其中有一段是daemonize的工作
daemonize顧名思義便是把process變成daemon
也就是脫離原本的session
自己變成session leader而不會因為session leader結束而被迫結束
舉例來說,當你從terminal執行一個server程式後
你當然可以讓terminal保持住
但是除非是debug不然這是很沒有效率的
因此我們會希望他變成一個daemon而能不受到起始他的session控制

其實說穿了daemonize只是一些fork與setsid的動作
但是有時候一直重複相同的動作是很煩的
因此也有些daemon的library出現
譬如libdaemon
至於該用wrapper library還是自己去處理daemonize
我想....你自己決定吧....ㄏㄏ

Tuesday, August 29, 2006

建築-設計-程式

最近在家當無業遊民的時候
看了不少設計與視覺研究的書
心中倒是真的有點感觸
計算機的發明是為了讓人們的生活更加方便更加舒適的這句話
我想應該很多人並不會贊同吧
自從資訊化了之後
人們的生活更加緊湊
加班趕工反而變成了一種資訊化社會的常態
(我好像又開始離題.....老人症後群又犯了)

自己很喜歡去研究design pattern的程式
因為覺得可以動動腦很好(工作中太多的"大家都是這樣做")
我想自從Christopher Alexander提出design pattern這個名詞後
建築學與現代程式語言的設計開始有了關聯
總覺得一個學問應該是多方面的思索涉獵
往往idea會從你想也沒想到的領域出現
因此我也喜歡看建築設計的書

前陣子看著兩本視覺研究的原文書(還沒看完....我相信烏龜會到終點的)
也覺得介面設計其實涉獵的領域很廣
但是也很籠統,因此往往變成抄襲是最常見的設計
Mac又紅了...多少設計越來越像Mac style
卻很少有人真的去思考設計的真正意函
進而產生自己的設計

在不以engineer為工作的這段時間
確讓我感受到一個software engineer的快樂
我喜歡研究程式
我喜歡看各種的書籍
我喜歡胡思亂想
但請不要問我對那一個產業有興趣
因為我不知道.....或許....我真的不適合當個engineer

Monday, August 28, 2006

GNU的VoIP架構慢慢成型

如果你是Stallman的信徒的話
你一定會常常使用GNU的軟體
雖然大多數的營利單位(好啦...企業...公司...隨便你要如何稱呼)都不喜歡stallman的主張
但是....管他的....反正營利單位賺錢獲利的也不會是小小的工程師
因此我還是很愛GNU的軟體

近幾年來VoIP似乎慢慢從最初的神話變成可能是生活中的科技
因此各大廠商都想要吃這塊肥肉
我想GNU當然不會讓專有軟體橫行霸道
因此GNU Telephony就出現啦

事實上GNU Telephony並不是一個單獨的project
而是將一個VoIP需要的軟體library建構起來
而且更令人激賞的是
他都是用C++的架構來完成所有的library
他可以細分為

GNU Common C++
這個project用來處理一些C++中沒有去定義的行為,譬如說thread的行為、socket、
XML parsing...等等,雖然說有一些其他的project可能以後會變成標準(譬如boost裏面
的thread類別就可能會變成C++ thraed的標準....個人猜測),但是GNU還是把很多C++的
缺憾都給補齊,也是個很棒的project

GNU ccRTP
看名稱也知道他是一個RTP的實現,雖然目前也有不少rtp library(JRTPLIB與oRTP),
但是都有點年紀了,不過我沒試過ccRTP,等試過後在跟大家報告

GNU ccAudio2
我想VoIP有一個很重要的便是audio codec的部份,這個project當然用來處理這個領域
他是一個很棒的project,他建構了一個抽象的基本類別庫,不但可以將codec給分離開
讓你可以自己新增codec進去,他還是一個跨平台的架構(win32用LoadLibrary的機制,
而linux用dlopen...mac也有...不過...ㄏㄏ...看無),在linux上面目前的缺點是他的audio device
現在還是OSS device(不是我看不起OSS...不習慣用啦),不過你當然可以繼承AudioDivice來
作自己的環境....

GNU oSIP與libeXosip
SIP的library,一個是C,一個是他的C++ wrapper,這個project應該已經被大量使用了吧

當然,GNU也有開始VoIP server的project,不過那就是屬於利用這些基本架構實現的部份
如果你對VoIP很有興趣,如果你信奉GNU的信念(ㄏㄏ,營利單位最討厭這些信念),你可以
找個時間好好看看這些project,或許你會從中找到不少樂趣歐。

STL Ring

Ring是一種環狀的資料結構,基本上他是一個頭尾相連的link list,相信在學資料結構的時候都有遇過,在C語言中Ring並不難實作,但是在現在C++的程式架構重視reuse與泛型化的要求下,卻不是一個很好 的做法。其實利用STL的既有template可以讓這個工作更容易做到。

首先因為我們不想重新發明輪胎,因此可以利用STL既有的container: list來實現.....繼續閱讀

Sunday, August 27, 2006

Ring GUI

前幾天試著玩的環狀GUI系統
放了一段video在google video作個紀念
video link here

要完成一個完整GUI還有許多東西要弄
Event傳遞、callback或是signal-slot機制.....等等
等有空再來慢慢玩吧

Friday, August 25, 2006

linux工程師悲哀

最近接連的幾個面試
讓我有非常的感觸
其實台灣大多數的軟體工作都是windows為主
linux的工作並不是那麼多
裏面又許多是linux device driver
因此本來linux的軟體工程師在台灣的生存就不容易

最近的面試中
很多面試主管都有一個相同的論調
雖然他們要找會linux的engineer
但是如果不能全面都可以的話
工程師的value就不高
這裡所謂的value又是指"除了linux外, 你還要作windows programming"
這往往讓我十分挫敗

但是我常常想到
往往一整間的windows engineer都不會linux
那個不算value不高....但是linux engineer不熟windows programming就是value不高
這種的評量標準我常常不能接受
或許windows是市佔率最高的OS
但是若你要找的是linux engineer, 為何要為難他不熟windows呢

今天還聽到一個有趣的說法
因為linux是open source的一個產物
任何人都可以拿到source code去看
因此他是很簡單的
但是windows因為不知道內部如何運作
所以windows的engineer比較厲害
linux的engineer只是去看code而已, windows的engineer卻都是厲害的hacker
我不知道這樣的說法對不對
不過讓我深深的想到
或許我真的不適合當個software engineer吧

認真思考自己的未來.....

Thursday, August 24, 2006

GUI的學問

前陣子看到車用電子展的許多產品
UI設計上大多偏向固定式的UI
也就是以PC software的Button為基本概念做成的設計
因此大家都看起來差不多

想到今天看到PS3的介面畫面
其實在IA的領域裏面的UI應該要更豐富的UI interface
更要脫離PC的操作思維

前天聽到過原本朋友要設計的介面原本是立體環狀
但是似乎是太麻煩了而做罷
想想自己也閒閒
來試試一個簡單的實做

其實比較麻煩的是Ring這類的資料結構
搞了一天....用STL的tempelate解決了這個問題
(改天再說明這個做法吧...晚了....ㄏㄏ)

其實也不會太麻煩啦
只是要看你要不要把engineer resource放在UI設計的工作上
還是讓他"跟別人一樣"就好
我想這是Mac的堅持吧
不過世上有多少Steve Jobs呢
engineer們.....自求多福吧....ㄏㄏ

Thursday, August 17, 2006

C++的Auto Buffer

最近寫了一個小小的錄音程式
因為不想每次只是想錄點小聲音片斷就要執行Rezound這類大程式
加上我的sound daemon是用jack sound server
一堆舊的audio程式根本沒有支援
幹脆自己寫的簡單的小程式

在處理大量資料的時候常常要宣告buffer來儲存
在C語言中動態大量的buffer你用malloc來便可以達成
但是在C++中往往強調程式的靈活與彈性.....繼續閱讀

Tuesday, August 08, 2006

用Scilab代替Matlab來玩Hidden Markov Models

最近一個唸博士班的朋友跟我聊天
他的工作上需要用到matlab來作Hidden Markov Models
但是說實話matlab這套軟體的價格實在不是我們這種小老百姓可以負擔
因此我跟他推荐了scilab這套軟體
我個人覺得scilab替代matlab是沒有問題的
而且他在linux, Mac與windows上都可以跑

很多toolbox也可以找到一些free的code
以HMM為例, 在scilab的官網就可以找到.....Here
不過這個版本已經很久了
有些小地方你可以自己改改
裏面的macro都有sci與bin檔(source與binary)
我試過裏面的bin檔是windows的版本
因此linux的朋友要重新建立bin檔

他裏面有一個build的script可以讓你重新建立
不過這裡有點小問題
這個toolbox是在scilab-2.5的時候寫的
現在的版本為4.0
大體上都不需要改變
但是4.0的function宣告必須以endfunction作結尾
因此你必須在每一個sci檔案尾端加上一行"endfunction"

另外, 他的demo檔案有一個地方判別式寫錯
a==1寫成a=1
這裡你在build的時候就會有錯誤訊息出來
你根據行號去改改便可

如果你跟我一樣要把HMM放進你的系統中
(不用每次要用都要執行loader.sce)
你可以把loader.sce放進你個人scilab的啟動程序
或是如果你有root的權限
你可以在(scilab安裝目錄)/macros下面建立一個新目錄
把所有sci檔案複製到此
作一次genlib('你剛剛建立的目錄')
然後記得把這個目錄的lib加入scilab.star這個檔案
加上這行..........load('SCI/macros/hmm/lib')............假設你建立的目錄為hmm
這樣每個啟動scilab的人都有HMM toolbox可以用啦
(不過啟動會慢一點)
你就可以開始研究HMM的奧秘啦

Wednesday, July 26, 2006

WebOS現身


我想自從AJAX大紅後,很多人期待一個WebOS已經很久了
有人覺得會是Google打響第一波
但是看來Google另有打算
沒想到MIT先推出了WebOS: YouOS
這個目前還在Beta的webOS非常具有一個OS的樣子了
他上面有了許多常用的程式(email, chart. IM, browser.....)
甚至你可以安裝新軟體
或是寫你自己的軟體
哇....很棒吧

我想短期內要取代正常OS應該還早
不過我覺得類似Thin Client這類的架構
這將會是非常好用的架構
至少擺脫了RDP這類的私有協定
client device只要有一個browser就搞定
(甚至不需要flash....ㄏㄏ)
申請個帳號試試吧....不過beta版常常會使用人數過多進不去
多等等吧....ㄏㄏ

Monday, July 24, 2006

Live Media Stream library

前幾天跟幾個老朋友去喝咖啡
他們正在弄media streamming的東西
提到了live555.com這個library

live555這個streamming library
我想有在linux上面用MPlayer或VLC聽live stream的朋友應該不陌生
現在幾乎所有linux上的media player都用這個library來處理streamming

live555是一個C++的library
因此你必須用物件導向來設計你的應用程式
(這幾天mail-list有人在問可否將它弄成C code....ㄏㄏ)

基本上你將要面對4類基本物件:
UsageEnvironment, TaskScheduler, Groupsock與LiveMedia
事實上大多數上列的物件很多都是抽象物件
因此你必須利用繼承來實作出一個成品
UsageEnvironment是最外層物件
說他是最外層的原因是他幾乎是其他物件的wrapper
TaskScheduler負責控制觸發的各項event scheduler
(譬如從網路上接收傳送stream data)
而Groupsock負責處理網路層的部份
如果你的service要處理multicast
你必須在此完成
最後的LiveMedia是各種多媒體類型的處理
(基本虛擬類別為Medium)
目前library中有許多常用支援的格式

另外,library提供了一個基本的繼承物件BasicUsageEnvironment
他利用標準輸出入為io實作一個基本類別(BasicUsageEnvironment與BasicTaskScheduler)
我想這是一個提供你demo或是programming doc的作用
(在Open Source世界中,期待有類似MSDN的網頁是不常見的,demo code比較實在)
因此測試程式多用BasicUsageEnvironment
你可以自己去實現自己的streamming環境

利用這個library可以讓你省卻很多功夫而可以輕鬆完成你的stream server(或client)
他是很棒的一個project
我覺得遺憾的是他並不是非常general
某些地方原本以為他會更以STL的style來完成
但是卻沒有
譬如在BasicUsageEnvironment中的HandlerSet
一開始看到code來以為他用STL iterator來做泛型化
不過後來發現他只是一個C++ link-list的wrapper
或許因為這只是個demo功用的物件吧
(泛型化一開始會把事情弄的很複雜...ㄏㄏ)

Anyway....如果你對於network media streamming有興趣
這個絕對是一個可以選擇的Project

Sunday, July 16, 2006

學習Graph algorithm的好工具: Gato


以前在面對數學的Graph theorem的時候
總是覺得缺乏一些輔助工具
例如視覺化工具....沒辦法,想像力太差,所以才會逃出數學系...ㄏㄏ
不過在Open Source的世界裡卻可以幫助你把數學學的更好

Gato基本上就是一個非常棒的工具
他可以讓你試著將你的圖形演算法實現出來
甚至可以讓你看到他實際運作的樣子

Gato是由python寫成
他使用tk作為基本widget
所以你的python必須要有tk支援
(在Gentoo裏面,確定你的USE變數裏面有tk就可以)

你可以把你的graph演算法用python語法寫成一個.alg檔案
(事實上還需要一個相同檔名的.pro檔案)
在編輯一個運作的圖形集合便可以讓你的演算法實際跑起來
Gato有一個視覺化工具可以讓你更方便編輯圖形

喜歡研究Graph嗎....試試吧...真的很酷

Friday, July 14, 2006

你是一個hacker還是engineer

今天我的老闆發了一封mail給我
他的論點我覺得是
當你只會去研究程式架構的人叫hacker
而engineer應該是為了把產品做出來
不一定要有好的軟體架構, 也不一定要友好的軟體效能
重點是很快把產品弄出來拿去賣
(就算你是偷OpenSource的Project然後佔為己有無所謂)
甚至還要有業務與PM的功能(能自己去規劃產品與找客戶......傻眼)

我想我這間公司需要engineer不需要hacker
我是不是engineer?
我也不清楚

記得一位學長不久前跟我說
"我們公司是要作產品的歐"
他的意思也有異曲同工之妙
因為我們要弄產品,所以可以犧牲很多東西
包括品質

我想很多主管級的朋友不會同意我的說法
或許會說"time-to-market"與品質都一樣重要
問題是當兩者衝突時....你會取捨那一個?

還是當hacker快樂....但是我印象中hacker應該是不一樣的解釋
那.....我還是當程式工讀生好了

DjVu

在網路上傳遞的電子書有哪些格式呢?
大家很熟悉PDF吧, PostGhost、html.....甚至image檔案都可以(能看的電子化格式...ㄏㄏ)
但是如果是直接線上閱讀的電子書
事實上連PDF都嫌的有點大

size與清晰度是電子書的兩面考量
size要小的話dpi就不能太高,但dpi太小則看不清楚
DjVu這個格式便是針對網路上的電子書作改良的格式

他的基本想法是
針對不同內容作不同的layer與處理
例如,一般文件中的圖形可以接受較低的解析度
而文字則希望有較高的解析度
因此你可以在DjVu中讓文字是300dpi而圖形是100dpi
這樣一來便可以兼顧size與清晰的需求

OpenSource的DjVu project是DjVuLiBre
它包含一個獨立的viewer與library
還有browser的plugins
但是因為viewer是用Qt當成介面
因此你必須有Qt的library(Qt3)
plugins也是一樣
這倒是我比較不喜歡的地方
因為我的browser根本不是Qt-base

不過還是給這個project用力鼓勵
下次看到用djvu結尾的檔案時
記得去下載來試試
你會發現他的效能真的比pdf好多了

Tuesday, July 11, 2006

用Expat處理你的XML資料(2)

讓我們看看這3個callback function裏面的作法;首先我們先看一個簡單的XML檔案如下:

這個簡單的XML範例為最基本的XML,它沒有DTD宣告也沒有CDATA之類的,只單純的將資料結構化罷了。那Expat的callback function怎麼運作呢?原則上它幫你分好資料與tag的分別,至於你要如何處理資料或是tag屬性你要自己在callback function完成。舉例來說,我們的expatStart函式便會在每次Expat遇到起始tag時去呼叫,而expatEnd就會在遇到結束的tag時被呼叫,中間的資料便會呼叫我們的expatHandler....more

Friday, July 07, 2006

用Expat處理你的XML資料(1)

當你的程式之間需要傳遞資料時,你會怎麼做?譬如說設定檔資料,使用一個最簡單的型式:『id := value』那如果設定值很複雜又有層次呢?我甚至還看過透過網路把整個二進位資料結構memory複製到網路去,由接受端宣告一個一模一樣的資料結構在memcpy......(當然,看到這種程式要我處理我會有想自殺的感覺...)。
其實XML是一個很好的規範,他的可擴充性讓程式可以自己去處理自己要的資料,也不會因為多了一個欄位讓天下大亂(我的世界就處在混亂中...ㄏㄏ)。但是 要你面對XML這類的複雜結構時,我想很多人看到就感到害怕吧。還好這個世界甚麼不多,Open Source的library最多...ㄏㄏ,Expat是一個很不錯的XML parser library,原則上他是一個C library,而且可以在許多平台使用(好啦...有win32版本...不過我沒用過),Expat是一個stream導向的parser library,也就是說他會從data buffer一直讀進資料然後遇到不同的狀態改變做不同的處理....More

Tuesday, July 04, 2006

apache2.2的suEXEC2

最近很勇猛的把我的gentoo接收了~x86的keyword
重新emerge world後確實所有的軟體都是最新的
不過自己也吃了不少苦頭....ㄏㄏ

apache便是一例
我的apache server變成2.2的版本
apache2.2對於安全真是到了龜毛的地步
(不過也是應該啦...server麻)
在執行CGI之類的動作也有很嚴謹的檢查執行者的id
請自己看看這裡

而且gentoo的suexec2的執行檔的權限並不會執行正確
所以必須手動改變
chgrp apache /usr/sbin/suexec2
chmod 4750 /usr/sbin/suexec2
之後......我的apache2.2終於正常可以執行我的CGI程式了

Monday, July 03, 2006

新的enlightenment screenshot


最近把我的kernel換成最新的2.6.17版本
順便也把enlightenment整個升級了
新的DR17中的ibar越來越好了
雖然目前還未release但還是很令人期待
用習慣DR17的操作介面後
慢慢已經不習慣KDE與Gnome的介面
(因此兩陣營的較勁也不關我的事...ㄏㄏ)
加油吧....更多有趣的project將會讓open source的世界越來越多采多姿的

Friday, June 30, 2006

下載google video的影片為avi

google video上面有許多很有趣的影片
我常常去看一些music live video
在windows或Mac的平台上還可以選擇將檔案存到電腦中
不過他會是使用gvi的檔名
據說是加上DRM的avi啦, 不過我並不清楚

網路上看到一位朋友利用簡單的javascript link就可以將他存成avi檔案
滿好用的
你只要將這個link加入你的書簽
(firefox直接拖拉到書簽工具列更方便)
下次看到好看的video片斷時
直接按下link就會開始存成avi檔案
很不錯吧......

Friday, June 23, 2006

整合你的blogger與google reader


上次談到用google reader觀看RSS news
其實我會使用他還有一個很重要的原因
因為他可以把我看到的news裏面我覺得不錯的文章
直接可以分享出來
我只要選擇他的label標籤
然後把這個label的javascript片段放到blogger的範本中
這樣我看到好文章就可以在我的blogger中分享給來看我的blog的朋友啦
是不是很棒呢
google...請多點這種整合的服務吧

Wednesday, June 21, 2006

讓GIMP處理Nikon的NEF檔案


前陣子朋友問到我有沒有在用nef的格式處理影像
因為我是一個大懶人,所以都直接存Jpeg格式
後來因為被問到這件事,所以就去找找GIMP的plugin

UFRaw這個project就是針對數位相機的RAW檔案來處理
他有獨立的程式可以處理raw影像
也可以在GIMP加入一個plugin來使用
(如果你跟我一樣用Gentoo,請在USE加上gimp在執行emerge)

這樣一來在linux上也可以處理RAW image啦

Monday, June 19, 2006

Google Reader


算起來我也是一個Blog的大量讀者(雖然有人因此覺得我很閒)
試過很多種的RSS reader讓我不必用web browser去一個一個開
甚至後來是用thunderbird就收收news
但是有時候也挺不方便的
雖然firefox試著讓blog的閱讀更為方便
但是還是覺得麻煩
而且有時候到另外的電腦想看blog news
想那個自己有在看的網址就瘋了(老了 記憶不好)

google reader這個service我覺得還挺不錯的
首先吸引我的是他的介面設計
那簡約的介面讓人覺得很可愛也很時尚
而且重要的是我可以在任何連上網路的PC閱讀我訂閱的blog news
因為只要一個google account.....everything is on internet

Firefox的殺手級延伸套件: AllPeers


自從今年初AllPeers開始說他們將在Firefox上面實作出web介面的個人P2P擴充套件後
最近終於正式開始beta測試了

AllPeers是一個類似BT的下載機制
但是他可以在自己的族群內傳遞
也就是說你可以更方便的在你的朋友間傳遞音樂或其他檔案
不像已往用Bittorrent的時候必須建立bt檔案(這個bt檔必須是要讓人找到)
AllPeers非常的方便,你幾乎只要選取你的分享檔案在選擇分享給哪些人
其他的事你都不用傷腦筋

目前測試版只能推荐3名朋友使用(抱歉, 我自己留一個測試, 另二個也用完)
不過我想之後應該會正式開放
使用者必須使用firefox當你的browser,且必須安裝他的套件
在音樂分享的市場上又出現這個非常特別的新力量
更方便的分享.......真棒

Tuesday, June 13, 2006

自由分享的陣營再次撼動世界的武器: FON

FON這個從去年底出現的東西
短短不到一年已經產生了不可思議的結果
到底甚麼是FON呢

簡單來說,它將架構出全世界最大的wireless社群
現在許多國家都市都在努力的強化其無線網路覆蓋率
以台灣來說,M-Taiwan的WiMax計劃或是無線台北城都是一例
其實台灣的腳步已經算快,但依然讓人感覺整個進度十分緩慢
其中一個常常搞不定的往往是business model
是的,沒有看到賺頭不會有公司做公益的

但想想,其實台灣家家已經幾乎都有無線網路
問題是當你外出時就無用武之地
想在麥當勞上網要看看你的ISP有沒有提供這裡的上網服務
或是去買點數卡
天呀,我家裡有wireless呀.....ㄏㄏ

所以當所有人都將部份無線頻寬分享出來給需要的人
而當你外出時,你也可以使用別人分享出來的無線網路
這就是FON的基本精神.....我分享,我享受分享

但是FON也不是單純的傳道式分享
他也加入了business model
所以他將所有FON的成員(稱為foneros...西班牙文)分成三類

第一類是徹底的分享主義者: Linus
沒錯,他用Linux的原始創作者為名,這類人選擇不用任何代價的將無線網路分享出來
當然他也可以無任何代價的使用別人的分享

第二類是商業模式份子: Bill
這裡有點故意歐,不過用微軟的比爾大叔來代表商業模式應該也挺切題的
這類人分享自己的無線網路但是需要你付他些許費用
當然,這類人也該付費使用別人的無線網路

第三類人稱為: Alien
不用多說啦,你還不想加入FON的人....只能叫你異型了

這樣的分享精神在歐洲造成十分大的震撼
也產生了相當多的foneros
甚至已經遠遠超過全世界的無線覆蓋計劃
目前主要的問題是之前他使用某些特定的wireless router
透過更新firmware讓他變成一個FON device
但是這樣畢竟有很多限制
隨著智邦幫FON做出的第一個FON router將於9月上市
FON所產生的威力才正要開始起飛

想想以後你出國旅遊根本不用擔心你如何上網
因為FON is anywhere.......what a wonderful world

FON官方網站
(裏面有台灣的網站連結, 還有可以查詢地區目前的Foneros, 雖然台灣目前只有幾隻貓)

Thursday, June 08, 2006

科技帶來更方便的溝通?

最近公司要我去接別人開始寫一半的Project(其實這種80%都是屎job)
所以必須跟遠方的工程師溝通他之前寫的code
(一個跟台灣很近, 號稱是同國, 還一直想打你的那個國家.....別理我....不想提這個國家)
不知道大家習慣如何與人溝通
拿起電話? 寫E-mail? Skype? MSN簡訊?......
我覺得現在溝通管道變多了, 但是真的對溝通有幫助嗎
其實我還滿喜歡類似mail-list或是簡單的email這種方式
因為不會擔心會不會打擾人家的工作
也可以把問題詳細用文字表達清楚
(很多程式語言不是人類語言可以表達的是吧...ㄏㄏ)
但是我發現當你用email把問題提出時
對方一直要你用skype來對話(最好還把老闆拉來一起聽)
但是我的經驗往往是.....
對方知道一件事.......他的口才比你好.....ㄏㄏ
所以這樣的結果往往是.....靠自己
科技使溝通更清楚......我越來越不清楚了

Tuesday, June 06, 2006

使用MusicXML了解Visitor

從MusicXML這個用來表達音樂譜記的XML規範出來後,一直想找個時間好好研究它(可能是因為心中對玩音樂這件事的遺憾吧)。隨著越來越多的寫譜程式支援這種格式當成中繼的交換格式後,我想MusicXML以後會慢慢改變音樂家使用資訊軟硬體的選擇...繼續閱讀

Thursday, May 18, 2006

RFC2217

最近被逼著要去開始學習RFC2217的project
其實有一點不想, 但是沒辦法, 拿人家薪水嘛
所以開始研究了一下它

說實話RFC2217並不複雜
簡單來說, 他就是將Serial Port變成一個可以在網路上使用的裝置
而client端只要有一個2217相容的軟體
便可以在本機模擬出一個serial port(好吧...COM port)

其實Open Source已經有一些project針對2217來實作
最近看了幾個, 跟各位分享一下

(1) ser2net

這個project會開啟2個socket, 一個用來當成控制用, 另一個是用來傳送RFC2217 data

(2) sercd

sercd利用了inetd的機制來實作, 因此他非常的簡單, 簡單到只有一個C檔案
但是有時候簡單的作法反而比較好, ㄏㄏ
因此使用他的前提是你必須安裝inetd或是xinetd
並且將/etc/service與inetd的設定檔設好(xinetd要加入他的設定檔至xinetd的
service目錄)

(3) telnetcpcd

這個daemon我比較欣賞的地方是他將RFC2217的部份分離開來
所以很清楚的知道2217的運作流程

另外, Java有一個RFC2217的library可以使用(都沒有C語言的....真是)
一般來說2217的連接並不困難
但我覺得問題是安全性的問題

因為這類設備的應用有時候也還挺需要保密的
例如一些遠端環境監控設備, 遠端瓦斯錶
早期這些設備多是serial port的設備
在網路越來越發達的時候就會想要把他加入網路而能夠從遠端監控

但是RFC2217只定義了serial轉換network的這段
舉例來說, ser2net會先建立data port然後建立controll port
但這種裝況下所有在網路上的點都可以存取它(他的data socket一開始便存在)
他的作法不像SIP是先在控制端討論好後
再建立一個data session(for voice)
所以基本上我並不是很喜歡這種作法

很多工控設備的廠商大多把精力花在去弄控制介面
譬如, 用網頁控制或是用自己的AP utility去控制
但是我覺得這段卻比較少去改變
加上很多公司都是拿了Open Source的程式碼去修改
加入一些user friendly的功能便要開始賺錢(又不open source....沒良心)
這種情況之下......其實我也沒太大興趣了
but.....Money Talks.........

Friday, May 12, 2006

Walk through TreeView

很久沒有寫GUI程式了
最近幫我老姐的論文程式重寫了一個新版本
(之前那個是及就章的成品, 現在這個.....算堪用吧 ㄏㄏ)
這程式是用在我姐的音樂資料整理與分析(我老姐是唸音樂教育的)
有興趣可以用用, 我放在中研院的自由軟體鑄造場(here)

在寫的同時也有一些在gtkmm上面小小的心得(我用gtkmm為GUI widget system)
其中一個便是如標題所示
有興趣請到此閱讀

Thursday, April 27, 2006

作業系統大混戰

最近一個挺熱門的話題就是在OS跑其他OS
不管是在linux跑windows或是反過來
最近各陣營都有很多進展
其實我不是很喜歡這樣的操作
喜歡linux就努力把他改善
喜歡windows就多寫點open source的程式....ㄏㄏ

老喜歡在windows上跑vmware的朋友
還真是錢多硬體強...ㄏㄏ
像我的linux多跑點daemon
也沒剩多少RAM了
WinXP在128MB下面跑似乎是災難
更別說我大概只能空出32-64MB了(好吧 我很窮 買不起ram)

不過最近我倒是用起了Qemu這個processor emulator
不過不是要想跑windows啦(沒這麼想不開)
而是.....Minix3

這個Microkernel的OS
以前便想要試試
但是歐....我想目前在minix有太多事不好做(沒辦法 多年來有些GUI還是習慣)
這時候用Qemu便是很棒的solution
因為呀, 我只要給他32MB的RAM就跑的嚇嚇叫

我想花點時間研究一下作業系統的實做也是很棒
畢竟linux kernel現在也是百萬行級的source code了
幾千行的Minix3應該比較優吧

不過.....天瓏書局那本OS新書到底何時才要進來呀
望穿秋水.......

Wednesday, April 12, 2006

bcm43xx linux driver

最近終於找了個時間換到2.6.16的kernel
唯一驅動我去更新kernel的動力就是: bcm43xx
我的laptop的wireless chip是broadcom的bcm4306
但是一直沒有linux下面的driver可用
後來雖然都用ndiswrapper也可以連上無線網路
但是總是有一些問題(我遇到的主要都在multicast的部份)

隨著這個open source的driver一直進步
讓我一直想試試
無奈於那時我的kernel是2.6.13,所以一直拖到現在

anyway,試過之後.....真是愉快呀
我的linux laptop越來越棒了
給這些沒有hardware spec還可以寫出driver的天才朋友們一個無敵的掌聲吧

Friday, March 24, 2006

kernel 2.6.16

最近linux kernel 2.6.16的釋出新聞出現在各個news中
想想我還在用2.6.13就有點想給他換一下
新的2.6.16有了一些新的filesystem的支援
譬如說mac的HFSX
另外,他更支援了CELL這個處理器
不知道Cell嗎
他是Cell Broadband Engine Architecture64-bit PowerPC-derived
還是不知道......沒關係
PS3就是用這顆
不知道gaim2.0正式版何時出現
一堆要升級
幹脆重灌一次gentoo吧.....ㄏㄏ

Friday, March 17, 2006

AJAX....讓browser成為OS唯一需要的軟體


AJAX這個最近暴紅的東西,相信大家多少都聽過了吧
AJAX並不是新的技術,而是將一些舊東西包裝成一個完整的架構
他是Asynchronous JavaScript and XML的簡稱
為何最近他這麼紅呢....因為Google與Yahoo都利用這個技術
想想你的gmail不是把google talk整合進去了嗎
沒錯....就是使用AJAX

上圖是一個更酷的應用Meebo
用borwser成為你的IM軟體
酷吧....下次到別人的電腦也想找朋友MSN或其他IM message
不用在別人的電腦新增帳號了
借個Firefox用用就是(好啦....IE也可以)

Thursday, March 16, 2006

讓linux自動連接網路

用習慣windows的朋友常常會抱怨
linux的網路設定很麻煩,不像windows幾乎都不用設定
當然我不完全贊同,但是面對沒有資訊know-how的朋友
要他們使用ifconfig或是修改init.d內部script的 設定檔
我想跟要他們的命差不多吧
但是....自由世界的好處是....有需求就會有人去花時間貢獻
ifplugd是一個能讓你的linux自己偵測到有網路連接上時
自動設定所有網路讓你完全沒有知覺
包括wireless也可以自動設定
很懶的每次設定網路的朋友....試試吧
不過......你還是得學會如何安裝他...ㄏㄏ

Friday, March 10, 2006

用linux錄製DVB-T節目

最近發現很多公共電視的節目其實真的很優質
只是大家都不太看,真的很可惜
但是發現另外一個問題是.....很多好節目都是上班時間播出
雖然目前公視都數位化了,我也有DVB-T的接收裝置
總不好上班給他看電視吧
台灣的TiVo又不知道如何.....(大同到底有沒有推呀...ㄏㄏ)
因此我就開始了自己錄製DVB的生活
當然我是用linux
其實mplayer除了是一個很好的multimedia player之外
他也可以拿來錄製節目
你可以利用

mplayer dvb://"你定的頻道名稱" -dumpstream -dumpfile "你想要存的檔名"

控制好時間或是利用cron就可以把一個你想要的節目錄下
這邊錄下的是一個TS檔案
mplayer中有一個encoder程式: mencoder可以幫你轉檔
為了節省我notebook的空間,我存成mpeg4

mencoder -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -o "你希望的檔名" "剛剛的TS檔案"

很棒吧,Open Source萬歲

Tuesday, March 07, 2006

軟體工程師 你以後想幹啥

最近一些朋友勸我別在一直寫程式了
他們問我
身為軟體工程師,你到底想要做甚麼
他們普遍認為,在這個中國大陸的衝擊下
台灣的軟體工程師將儘快變成leader之類的人物
然後去叫大陸的工程師寫程式,否則以後都慢慢要失業

我不知道台灣的軟體業到底是會走到何種地步
但是身為一個軟體工程師我覺得還挺好玩的
不是拿到薪水的時候也不是分到股票的時候
而是學著寫一些自己不會的程式的時候
或許以硬體製造壯大的台灣不見得會發展軟體工程很好
但是我總覺得,應該去作自己喜歡的事
反正不會變成王永慶也不至於淪落街頭
或許很沒志氣,但是卻很有趣

我不喜歡當leader,我喜歡coding
或許我不會擁有這些朋友的好車大宅
但是我想他們卻永遠不能理解我所擁有的
你問我是甚麼.....另一個有趣的code吧

Monday, February 27, 2006

很有用的小工具: pipe viewer

最近用到一些需要長時間執行的測試工作
一跑就是半個到一個小時
我可不想再一個小時後才知道失敗
因此有許多工作都希望能監看進度
這個時候pipe viewer這個小程式就非常好用啦
他會產生一個pipe當作兩個程式間的輸出入
就跟你正常用不具名pipe 一樣
然後他會秀出你要的資訊在terminal上面
很棒吧......

Thursday, February 23, 2006

測試工程師: 測出產品的缺點?證實產品是好的?

最近被貶為測試工程師
只好認命去做了幾天
其實大部份我看過的測試工程師都是照著engineer告訴你的方式在做一次
大多數是做一些長時間的無趣工作
這讓我覺得十分奇特

因為我想engineer敢拿出來給你測試
代表他對於那樣的運作應該有點把握
測試者一樣畫葫蘆的結果大多不會有啥不同
所以問題大多出現在拿出去給客戶後
因為客戶的測試者不知道你之前是如何測試的
因此他用自己的準則去測
或許跟你之前的想法不同
但這應該也是測試的精神吧
因為會乖乖照說明書操作的使用者也不多是吧

因此一個好的測試工程師應該不是一個對程式不了解甚至不會寫程式的人
反倒是他甚至應該自己寫不合理的程式攻擊你的產品
但是經過這段期間我得到的教訓是
在我目前的公司......老方法還是比較受歡迎

Tuesday, February 14, 2006

windows上的sip softphone

前幾天跟大家說有免費SIP帳號
發現因為使用MS作業系統的人實在太多
順便介紹個windows的software sip phone給大家吧
Express Talk是一個freeware(沒有source的免費軟體)
他的NAT traversal功能也OK
介面也還可以
雖然只支援a-law, u-law的PCM與GSM編碼
但是算OK了(speex與iLBC的效果好很多)
win32平台的朋友可以試試

Monday, February 13, 2006

一個值得推荐的web server: lighttpd

最近公司裡的"大人"突然說要把我們embedded linux上面的web server加上SSL的功能
而且我只有一個星期的時間(因為他們覺得大概是打開某個選項打勾勾....MS受害者)
我們原先使用thttpd與boa這些web server原先都沒有支援SSL
我發現uClinux版本的boa有SSL支援
本來在我興高采烈的將uClinux boa給他cross-compiler後放到device上
卻發現..........原本一些cookie設定的功能不work了
天呀........只剩1天(因為太懶了......慢慢做.....)

這時候的我痛苦萬分
突然想到在slashdot的RSS news中看過一個新的lightweight web daemon: lighttpd
只好趕緊download來試試(我不想熬夜開boa的source code....ㄏㄏ)
在經過一些cross-compiler的處理後
沒有太多問題的將lighttpd放到arm9的device上
設定一下conf檔案
加上pem認證檔案

就這麼解決了這個問題
lighttpd真是一個很優秀的project
他的size很小,反應速度也很快
又是與apache一樣使用module plugin的方式擴充功能
這樣的web server daemon絕對要介紹給你
有web interface的朋友
趕緊試試吧

Saturday, February 11, 2006

我的老notebook利用計劃

過年前從台南老家帶回一台多年的的老舊notebook
PIII 300MHz的就機型, 128MB的RAM
看起來似乎已經可以拆開來當作廢鐵出售
不......我決定廢物利用

首先, 這台notebook受到我老妹的可樂攻擊(整罐直接從keyboard灌頂)
再加上被我老家的臭貓咪把鍵盤每一個鍵都抓濫了
因此原本的keyboard已經算是毀了
還好這台舊notebook還有一個PS/2 port讓我接上一個老舊的keyboard
(還有PS/2的keyboard....神奇吧)
但是其實重點是因為它遭受這些寧虐
他的ethernet chip似乎瘋了......mac address永遠是00:00:00:00:00:00
所以當我把gentoo linux在他上面安裝完成後
每次都要用ifconfig給他mac address很令人困擾
還好看到macchanger這個project
在gentoo的網路設定裏面可以利用它指定MAC address
因此就不用每次手動改了(感謝Open Source)

這個系統有何用處呢?
我有一堆的CD, 每次要找一首歌都很麻煩
因此我習慣將他轉成電腦檔案
但是當這些mp3越來越多後
我自己的notebook硬碟空間就有點吃緊
而且......還是很難找歌

因此我將這台老notebook變成一台music server
我使用mt-daapd這個很棒的project
把它變成一個local iTune server
因為這台舊notebook我設定是用dhcp取得ip位置
這構成一個問題.......我不希望要上傳歌曲時候還要去那邊login
(IP雖然大多時候router都給一樣, 但是不保證....ㄏㄏ)
因此我在他上面裝了avahi daemon
這樣我可以透過zeroconf這個協定知道music server的位置
(應該說他有提供的服務)
因此我在avahi上面啟動了2個service: ssh與daap
(因為mt-daapd本身就有實做zeroconf的部份, 但是啟動時可以利用"-m"的參數停止)

這樣一來, 我的舊notebook就變成我們家一台music server啦
windows平台只要有安裝iTune軟體就可以直接播放它的音樂
linux當然也可以啦, 我使用TunesBrowser來播放
一台老舊的notebook就此找到他的新生命
Open Source真是太屌啦

Friday, February 10, 2006

免費的SIP帳號

最近看到一個免費的SIP帳號提供
你可以到http://sip.antisip.com/
去註冊一個帳號
然後找一個SIP的softphone軟體
就可以享受VoIP的世界啦

個人建議linphone
雖然介面並不是很好看
但是他具有NAT traversal的功能
這個就是當你處在一個內部虛擬ip的環境中
你可以指定你的對外ip(其實也就是你的router的ip)
這樣外面網路的人還是可以call你歐

有申請帳號的朋友記得告訴我
改天或許我們可以聊個天

Monday, January 23, 2006

用linux看數位電視

最近尾牙抽中一台DVB-T的數位STB
但是那台STB只支援windows平台
所以我後來決定把他賣掉
換了一台Twinhan的USB DVB-T device
( TwinhanDTV Alpha)
選擇這個是因為他可以在windows, Mac, Linux上使用
在重新compiler kernel把相關的driver module建立後
(dvb-usb-vp7045.ko,dvb-usb.ko...)
還需要從linuxtv的網站上download相關的firmware
(以我的為例, 是dvb-usb-vp7045-01.fw)
將他下載到你的hotplug的firmware目錄
你可以檢查你的/etc/hotplug/firmware.agent的內容
裏面有一行
FIRMWARE_DIR=/lib/firmware
這就是你應該放firmware的目錄
一切ok後你只要接上你的device
在/dev目錄下應該就會看到dvb的目錄了

我是使用mplayer來看dvb-t
所以我使用linuxtv-dvb-apps的utility來掃描頻道
建出我的channels.conf放到mplayer的設定目錄下
直接用mplayer dvb://"你的頻道名稱"
就ok啦

上班看電視.....有點罪惡感....ㄏㄏ

Thursday, January 19, 2006

mplayer 1.0.20060102

那天發現mplayer有2006年的新版本
從新compiler了新版的mplayer
發現一些之前我用pre7版本無法正常看的WMV檔案
竟然都OK了
還在用pre7的版本的朋友趕快換成20060102版吧

gtk wizard

最近需要寫一個初始一些資料庫表格的程式,想來想去覺得使用Wizard的方式呈現比較適合end user (因為不是我要使用,CLI介面萬歲),自己還是決定使用Gtk來當GUI library (我還是不想用QtWhy....我也不知道....ㄏㄏ),這時候發現Gtk並沒有wizard這類的widget!這時候我有兩個選擇,一個是自己從基本GtkWidget建立自己的widget;否則就是想辦法利用既有的widget來改成wizard widget.....read more

Wednesday, January 11, 2006

Linux上面的Zeroconf: Avahi

其實Apple真的有許多滿不錯的設計
從AppleTalk到現在的zeroconf都是一種更貼近user的設計
(越來越不了解為何當初MS會穫勝....ㄏㄏ)
zeroconf是一種讓你不用去煩惱網路基本設定就可以使用的機制
他利用了像IPv4 Link-Local與mDNS(multicast DNS)這些技術
大大增加了使用的方便性, 更加具有IA的優勢

linux終於也有了這類的產品: Avahi
這一個很年輕的project我覺得很棒
對於IA有興趣的朋友可以研究看看

Sunday, January 08, 2006

Microsoft再次槓上linux

最近由Microsoft的Open-Source Lab表示
一般大家認知的linux可以將一些老舊的硬體做重新利用
他們使用相同的硬體去測試了Red Hat Enterprise Linux, SUSE Pro 9.2, Mandrake 10, Linspire 4.5, Xandros Desktop 3.0, Fedora Core 3, Slackware 10.1, Knoppix 3.7
他們發表說根據實驗的結果, linux的效能反而不如Windows

關於這個事情, 我有兩個看法
首先, 我想linux的好處我從不覺得是可以用老舊的硬體
反而是linux可以根據不同的硬體去使用不同的軟體
RAM不夠用的硬體就不要用Gnome與KDE
你還是可以使用XFce甚至是IceWM, Window Maker
(或是我使用的Enlightenment...ㄏㄏ)
就連你覺得X Server太笨重
你可以試著將系統建立在DirectFB上面
試著想想如果你使用windows在一個不夠強的硬體上
除了MSDOS外...你還有啥選擇

再來是我覺得如果Microsoft真的想了解Open-Source
那他們的Lab應該做些有意義的工作
這樣子的研究其實一點意義都沒有
如果有時間與金錢去做這些宣傳與打擊對手的工作
倒不如把時間與金錢花在創造一個更好的軟體
我想這樣open-source的朋友也更覺得有趣吧