發表文章

Git 簡記

在團隊的多人協同作業時,版本控制系統是很重要的工具,除了要將大家的工作成果彙整起來之外,還要確保歷史記錄不遺失,讓日後的追朔工作有跡可尋。早期的 CVS 到後來的 Subversion(SVN) 都是屬於這類的版本控制系統。不過對於堪稱世界上最大最多人協作的 Linux Kernel Project,CVS 與 SVN 顯然像的玩具,根本不敷使用。而其他商業的版本控制系統,也多少有些缺點,這也是為什麼 Linux 之父『 Linus Torvalds 』要下海親自打造一套新的版本控制系統『Git』。既然 Git 能勝任於這世界上最大的專案,說它是下一世代的版本控制系統,應該一點也不為過。 這樣的一個強大的工具,讓很多人都躍躍欲試,但也因為太過強大,網路上長篇大論的文章也讓許多人不敢恭維,有殺雞焉用牛刀之感。回頭想想,若是連如同 CVS/SVN 上的基本功能都無法輕易上手,講再多 Git 的特異功能也是枉然,套句 Torvalds 的經典名句:『full of bullshit』,一切都是廢話和放屁!(筆者真的懂每次都聽到一堆所謂的分散式架構等等優點,但還是不知道要怎麼開始用,是多麼令人覺得自己是 git!亦或者是文件撰寫者是 git?) 從人本考量,我們需要版本控制系統,最初就是要能上傳和提交 source code,使之能放在 Server 上保存。此 Server 可以放在遠端,也可以是自己電腦上,要嘗試架一個在本地端(沒有提供外部連入功能)的 GIT Server 相當容易,裝好相關套件之後,指定一個 Source code 的保存目錄就好: Server 端的設定: # 建立一個新目錄,用來放 example project 的程式碼 mkdir example.git cd example.git #  初始化此目錄為 Git 儲存庫 git --bare init 到此,Server 的設定已經完成,新的 example project 儲存庫也已經建立,若是有需要,日後也可以加上 SSH/HTTP 等連線支援,讓外部使用者可以遠端存取此 Git server。 有了 Server 之後,通常真正在做開發工作的,是在客戶端(Client),我們通常會從 Server 上取得一份完整的副本程式碼回家...

Our Happy Travel for GNOME Summit in Vietnam

圖片
This is first time that we(ULLab guys) make speeches at international event oversea, so we're so exciting on this travel. Core Founders of ULLAB Before this travel, in fact that I didn't know anything about Vietnam. I was just under the impression that Vietnam is a highly unstable country in Asia as well as this place is uncomfortable for us. Everyone all over the world always talks about the war and the girls in a bad way when mention Vietnam, so we never get a good impression about this place. However I must acknowledge that I was wrong now, Vietnam is a good place for enjoying our life absolutely, and also there are many people try to be surviving and becoming better in the world. Actually, many students in there have lifelong ambition, it shames me who is a Taiwanese. When we arrived Vietnam, the first thing which is traffic made us crazy. The traffic in Vietnam was scaring me, I never see so many motorbikes all over the road. My new friends who are local...

GNOME.Asia Summit 2009 is coming

圖片
GNOME.Asia summit 2009  is one of the top Free and Open Source Software (FOSS) events for developers, enterprises, officials and general users in Vietnam. The event brings together FOSS projects from Asia and around the world. More than 500 participants from 10 countries are expected to participate in the summit, which is the first international community event of its kind in Vietnam. It takes place from Nov. 20-22, 2009, in Ho Chi Minh City. As a LXDE Developer, I just got invitation from GNOME.Asia committee last month. They expects that LXDE Team can give a talk to introduce and explain LXDE Development. Actually, we are so glad to have a session to talk about LXDE, especially  it can talk at GNOME event. It means we will have an opportunity to discuss with GNOME developer, users and contributor face to face rather than do anything behind closed doors. Eventually Andrew Lee, Penk and me will attend GNOME.Asia 2009 in spite of there are a lot of factors m...

Mandice Installer 嘗鮮預覽

感謝各界的關注和幫忙,最近『 Mandice 』頗有進展,繼『 Mandice Repository 』Server 啟動之後,現在安裝程式也總算有個雛形樣貌,廢話就不必多言,直接來看一下 Video: 大體來說,這是在開發 MTK(Mandice Toolkits)時的副產品,在做測試時順便打造出來的安裝程式,不過目前還在測試階段,仍有不少地方需要改進。 PS. 這不是 Mandice 廣告宣傳片!

Clutter Rotation 的惡行

由於之前已經寫過太多雜文說明,『 Clutter Toolkit 』的威力應該就不必要再多說。雖然說 Clutter 開發上很容易,但在真正開始開發程式後,就會發現有很多地方細節需要注意。 關於開發 Clutter 程式時,會碰到的大部份問題,都出在於其設計邏輯與其他 3D Engine 不同,而最不一樣的地方,就是演員制度。Clutter Toolkit 特別的演員制度邏輯,使開發者將不再以大場景和 3D 空間定位為考量重點,而是以一個個 Actor 的角度去實作一切行為。因此,通常開發者第一個會碰到的行為就是『向左走、向右走』,單單使 Actor 旋轉到我們要的角度,就會碰到些問題。 ClutterActor 定義了一系列 function 去實作各種行為,其中旋轉的部份: clutter_actor_set_rotation(ClutterActor *self,                                         ClutterRotateAxis axis,                                         gdouble angle,                                         gfloat x,                                ...

GTK+ 全面進化

圖片
Moblin 帶來的震憾莫過於 3D 樣貌的 UI,其底層 Clutter Toolkits 提供方便易用的 API,確實讓開發者能輕易撰寫炫麗的界面。不過,Clutter 的角色一直被視為一套新的 3D Engine,只是讓人重新打造操作介面而已。這未免小覷了 Clutter 的威力,其真正的好戲,在結合了 GTK+ 之後才正要開始。 這是一段結合 GTK+ Notebook Widget 的展示,隨著觸發而產生的換頁特效: 借由 Offscreen 的實作,可將各種 GTK+ Widget 畫在 Clutter Actor 之上,以此做各種動畫效果,其架構如下所示: 我們可以視為 GTK+ Widget 被轉換成一個個 Clutter Actor,當然這些 Widget 仍然還保留著原本各種 GTK+ 的性質,包括 Signal 等機制,只不過在顯示上,Widget 並非直接被畫在螢幕上,而是畫在 Clutter 的 Buffer 上,讓最後的繪圖動作都交由 OpenGL 做處理。此外,Clutter-GTK 實作了一個假的 GtkWindow 以騙過 GTK+ Toolkits,達成結合兩者的目的。 雖然現在許多 UI 設計都是一窩蜂照抄 iPhone,但不可否認,舊有的使用者習慣還是存在,畢竟遵循舊有習慣的軟體數量太多,還是不太可能一時間淘汰掉。但是, Clutter 給了一個新的機會,讓被人稱為極落伍的 GTK+ UI 有再進化的空間,至於能做到什麼程度,就看各開發者的創意了。

2009 Yahoo! Open Hack Day 之偷人瘋!瘋狂醫院

圖片
今年的『 Yahoo! Open Hack Day 』是在台大醫院旁的國際會議廳舉行,為期兩天(10/17~10/18),其實小弟本來沒有報名,但被再三威脅利誘後妥協,有朋友私下請主辦單位直接在活動舉行前兩天,將小弟加入參加者名單,因此無奈只好去玩樂兩天,或與無名正妹們聊聊天(這應該是大部份參加者的本意吧)。 話說 Yahoo! Open Hack Day 的宣傳標語令人有股 Coding 的衝動: 想跟來自全台灣的網路高手同台較勁? 想體驗 24 小時不斷電的過程? 想在 2 分鐘的時間展現你超棒創意與超強 Coding 能力? 就當場思考創意,立即實作以及團隊合作這幾點而言,就足夠促使大家熱血沸騰,想要在這兩天一展身手。不過可惜的是,原先以為在這種時間緊迫和視覺感觀的刺激下,會讓各隊參賽者絞盡腦汁,爆出火花,但是事實上,多半隊伍都早已在家做好準備或寫好程式,只是來當場修 Bug 和改版如此而已。最早期望看到場內瘋狂討論之場景,幾乎完全沒有出現。因此就感覺上,活動宣傳標語的『 24 小時不斷電』淪為形式,大概只有工作人員和少數正妹們真正在場體驗 24 小時的拼命。:-D 而小弟這次去因為是臨時組隊,到場才知道隊員名單和隊名,所以一開始便抱著『志在把妹不在得獎』的心情參加。隨性抓起手邊的電子產品,我們就先花了點時間讓 Moblin 可以支援 Yahoo! 的無名服務,讓手持式裝置(MID)、小筆電(Netbook)等電子產品可以直接與 Yahoo! 無名的相片、滴咕和 Blog 等服務做連接和存取。 但由於時間太多,我們又做了第二個有趣的專案『Crazy Hospital 瘋狂醫院』。這年頭人人都上網,但不是人人都發 Email,也不是人人都上 MSN,不過卻是人人都上 Facebook 的開心農場!因為 Yahoo! 沒有類似『偷菜』功能,當然就不是人人都會上!由於這次活動重點是運用 Yahoo! Open API 去實作新的服務應用,我們便思考著開心農場在 Yahoo! 平台上的可行性,不過照抄實在是沒創意,幾經思考後決定從活動場地取構思(台大醫院),而成就了『Crazy Hospital 瘋狂醫院』的誕生! 你可以蓋你的醫院,你可以應徵你的小護士,你也可以找帥哥主治醫生,但你要努力把病人治好!當然,你也可以去偷無名好友的病...

人之將死其言也善

記憶是種很奇妙的東西,硬是要去記一樣東西很難記住,但要是透過聯想和串連,卻可以輕易將許多事一點也不漏的記住,有些人天生就擁有這種能力,有些人則一輩子不曉得這種方法,而有另外一些人是透過訓練得到。 這些能力很棒,能讓人在求學時高人一等,在出入社會後,又能較有效率的處理大小事務,畢竟就電腦的觀點來看,記憶體大本來效能就會比較高些。但是卻有缺點,這種能力過於發展,很可能令當事人雖記住所有細節,卻抓不到重點,就像你對一個人說:『我最壞打算可能搬家』,他重點會放在你要搬家,而不是為何你要搬家。若有更嚴重點的,他重點會放在,要搬去哪,對旁邊人有何影響,諸如此類得無限延伸聯想。 很有趣的是,面對這種人,你只要給他一丁點誘因,他會有如核子彈一般,連鎖反應創造出完整動機,並朝目標行進。但我們無法左右他的思考,因為無論解釋再清楚,他依然抓不到話中的重點,而是會把話中所延伸聯想的內容當做重點,或更可怕的,會將聯想內容視為真實。當下的狀況,無論是誰碰上了,都有『秀才遇到兵有理講不清』之感。(這是另一個例子,這句話他們重點會放在我在罵人,自認是秀才,而不會把它當成為了文章說明方便的形容詞) 其實,人們多半都有這種傾向,只是程度多寡罷了。常在各種討論會議或是各種社交活動中,聽到有人一直在附和別人的話,卻又講的有些文不對題,就是這種情況。但或許你也發現,擁有極大這種傾向的人,是塊業務的料,因為他可以輕易的打蛇隨棍上,講著自已手上的東西。但無論如何,請克制一下,當你不是在推銷東西時,因為旁人很辛苦。 後記 為何本篇命題為『人之將死其言也善』?因為這是沒惡意的發言,我也不期望能有什麼回饋。單純只是舒發講實話。

使用 ssh 挖洞走密道!半夜深入禁宮!

話說廣大的 Windows 使用者,還在不停尋找可以用的 Proxy Server 賺取農民幣,每找到一個新的 Proxy Server 可以用,就有如於大海之中抓到一塊救命浮木,可以開心一整天。其實,身為 Linux/BSD 的愛用者們,可以不用跟麻瓜們湊熱鬧,使用 ssh 的 SOCKSv4/SOCKSv5 來做跳板不就好了?讓 Web Browser 透過 ssh 連線到 Facebook 玩開心農場,多麼愉快呢! 使用 ssh 去建立 Tunnel 如下: ssh -D 5487 <USERNAME>@<SSH SERVER> 待密碼認證和登入後,就可以改 Web Browser 的 Proxy 設定,改成使用 SOCKS Host,主機設成 localhost,而 Port 設成 5487 即可。 後記 我知道一定有很多人用這招,現在一定想罵死我,因為這塊 ssh 國外主機處女地大概要淪陷了。

專做有趣玩夜兒的台客實驗室 - ULLAB

圖片
長久以來 open source 發展大多被挶限於技術的鑽研和交流,嚴肅的氣氛總壓得人喘不過氣來,更常有『正妹』對我們這些阿宅說:『你們那些火星文我聽不懂啦!』,正所謂連被發卡的機會都沒有,就是如此。 講到國內 open source 的相關實驗室,就不得不提到『 jserv 』發起的 [ OrzLab ] 以及高手如雲的 [ 0xlab ],其研究成果總讓眾人眼睛為之一亮,目瞪口呆,若是不小心提起自己曾有幸與他們成員一同共事,肯定是有自抬身價之嫌。我們雖嚮往著也佩服著這些前輩,但也自認做不到那種程度,雖也成立了一個小小的 team,卻也一直不敢大聲張揚。 以前總是看著前人,現在回頭看自己,從學生一路走來,總是有些志同道合的社群朋友,心中也有些想法,這促使我們成立了一個新的實驗室 [ ULLAB - /usr/local/lab ] ,亦可笑稱為『台客實驗室』,目標就是從『望妹莫及』進步到『能得到被正妹發卡的機會』,更進一步提升成『能發卡給正妹』。 誰說實驗室只能研究些生澀艱難的東西?以下是 [ ULLAB ] 的簡介: #!/usr/local/lab 我們是一群來自台灣的網頁與自由軟體開發者。我們深信 設計 與 科技 的力量 ,恪遵易用性原則,並且用力改變世界。 We are a group of web and FOSS developers based in Taiwan. We believe in the power of designing and new technologies , and trying hard to make this world a better place. 當年手機大廠 Nokia 一句『科技來自於人性』,令許多人禁重新省思研發科技之目的,『我們研發到最後只是為了滿足研發人員自己嗎?』這問題,答案肯定是否定的。響應人性科技的發展,[ ULLAB ] 就專做有趣玩夜兒,希望能用這理想改變世界。目前,[ ULLAB ] 初步有些成果(部份專案即將釋出): FlipFlop - 三秒快速開機到 UI 的 Flash Player Linux 整個系統 9.4MB,目前支援平台:x86、ARM、MIPS Mandice - 輕巧、絢麗、快速安裝的全功能 Linux 發行版 整個系統約 700MB+,擁有 GNOME、LXD...

心得分享 - 重灌 100 次也會很開心的 Linux

圖片
這次受 [ ICOS2009(International Conference on Open Source) ] 之邀,很榮幸於研討會當天給予了一場 Talk - 『重灌 100 次也會很開心的 Linux』,該議程是將最近手頭正在做的 Open Source Project 做一次具體而微的整理,全程以生命苦短為出發點,用 Linux Distribution 引領人生意義,探討人性之苦痛。 議程簡報可於此下載: http://people.linux.org.tw/~fred/slides/100linux.pdf [PDF] 粗略估計,多數電腦依賴者的一生之中,將有超過一年以上之時間不眠不休浪費在重灌以及更新系統。但在取人錢財的系統廠商不供應免費生前契約的前提之下,何苦賠了性命與之軟體生命周期博鬥?因此,藉由實作一個新的 Linux Distribution,以確保三至五分鐘之內重灌一套全功能的 Linux 系統,便是一個能造福人群的出發點。 有感,Mandice Project 便是在人之生命與軟體壽命之自我衝突中被建構起來的 Linux Distribution,以 Emdebian Grip 為基礎,其相容於 Ubuntu 與 Debian,僅 700MB 之硬碟使用大小而不縮減任何功能,忠於使用者以追求更漂亮且簡單易用的介面,且永遠不必再做大版本號的系統更新,以終生線上更新機制,徹底擺脫『六個月,版本加一號,系統死一次』之現代 Linux 摩爾定律的悲哀。 Mandice Screenshots: 整合 Google Chrome 之展示 Support Adobe Flash Player (展示開心農場) MSN 即時通訊軟體 網路管理 內建所有目前 Linux 所支援的驅動程式(展示 3D 運算) 多媒體功能(展示 PPStream) OpenOffice 文書處理 此外,更因為相容於 Ubuntu,有許多軟體可以直接安裝,操作如使用 Ubuntu 一般。使用者不必重新適應新的環境。而 Mandice 將 100% 相容於 Debian Sid,可以完全取用 Debian 體系下的所有支援。 後記 原計劃於短暫之議程時間內當場表演安裝一百次 Mandice Linux,但因技術上出了問題而作罷,更完整的 Mandice 安裝程式將於近期內釋出...

CUSE - Userspace Character Device 機制

因為最近碰上了 KMS(Kernel Mode Setting)的 bug,造成偵測解析度出現問題,於是為了解決這問題,又開始追 Linux Kernel 的 Log,但原先的目標沒有追到,反而有些其它的意外發現。話說,2.6.31 已經在本月 9 日正式釋出,其中有些新的實作和令人興奮的支援,如:USB 3.0、日前提到過的『 Fanotify 更全面性的檔案監控機制 』,其實另外還有一個重要的機制『 CUSE(Character devices in Userspace) 』。 如同 FUSE(Filesystem in Userspace),CUSE 目標提供一個機制,讓開發者可在 userspace 實作 character device,而不用撰寫 kernel space 的 module 來達成這項目的。這機制有助於許多驅動程式的開發,甚至是讓 Linux 在未來開發各種支援時,能有更大的彈性以及使核心有更高的安全性。從 patch 來看,由於許多部份已經在過去開發 FUSE 時被實作過,讓開發者可以輕易的延用過去成果實作 CUSE。 這有一個專案『 OOSP(Open Sound System Proxy) 』,就嘗試著用 CUSE 實作一個假的裝置檔,讓老的音效應用程式可以在不修改的情況下,藉由這個 OOS Proxy 去使用新的音效驅動程式架構(如:Alsa),其做法就是產生 OSS 的 /dev/dsp、/dev/adsp、/dev/mixer 再將這些 character devices 接收到的訊息,處理並轉送到現代的音效驅動程式架構。