25+1

變革許多,一路回來一直聽到不好的消息,不好的爭吵聲。
我試著把持心定,不受其他事物的影響。
默默認住未來的道路,專注的踏出每一步。

現在的我,一無所有,只有一顆追求自由而熱愛創作的心。

p.s. 謝謝月亮貓帶我去超有品味的茶店,幫我過一個特別的 25+1。

OLPC Hacking Meet-up心得

View post on imgur.com

經過十天的等待,於於完成了這次「OLPC Hack Meet-Up Day」 的活動。活動期間,感謝jollen、jserv、PingYeh、 Andrew、…等人提供不少對活動的經驗和建議。這段期間也感謝BV1AL、KC、olv、 FourDollars、linanne、aguai、wesley、thinker、yungyuc、gaso、yuren…等人的幫忙,才能順利 將活動完成。

活動開始,先是由Mat簡單介紹一下如何用QEMU模擬OLPC和測試程式。之後則是共同開發和交流討論。21:10-22:00 則是展示時間,首先是jserv展示了QEMU用於模擬系統開發的各個應用,也現場展示了他最新的成果「親手打造Tablet / WebPad」。接著,FourDollars也跟著和大家分享影音串流程式最新的發展,分析未來的驅勢。並同時展示了一個他參考pcman的程式而改出來的影音外掛程式。可以非常方便的點選網路廣播並收聽,並發想也能整合進OLPC,提高OLPC的娛樂性。

而在PCMan on OLPC這個主題上,由國內開發LiveCD(USB)系列的BV1AL將gcinOLPC上的成果作成LiveCD的映像檔,並設定好網路等相關部分。而PCMan X開發團隊的字型好手olv ,則是解決OLPCPCMan X中文字型顯示的問題。在經過一段時間修改,順利將兩方的成果結合起來,如下:

View post on imgur.com

雖然還是有許多小缺點,但這張快照也象徵了我們用行動來實踐我們的信念,也呼應了活動發起的訴求。

在活動期間,wesley、aguai、annelin… 也嘗試利用QEMU建立多個OLPC來模擬mesh network的測試環境。而Andrew、PingYeh、BV1AL、…在Tick偶然拿到OLPC實機的root console後,也著手研究了OLPC的系統更新、開機流程,相信不久之後也能見到相關的經驗分享。

最後希望能持續將這些成果整理出來,以開放的方式回饋給upstream和社群。

Hello World for OLPC

許多朋友好奇前天的螢幕快照怎麼來的,其實過程並沒有想像中的那麼難。小弟就以作一個Hello World的程式作範例。

在開始之前,先假設你手邊已俱備下列幾個主要的工具:

  • QEMU i386 ( OLPC的平台是x86 )

操作步驟如下:

1. 首先取得OLPC的映像檔:按這裡下載

2. 啟動qemu

qemu -redir tcp:2222::22 olpc-redhat-stream-development-devel_ext3.img

其中 “-redir tcp:2222::22″的意思是將 QEMU中的OLPC的:22 Port和本機端的:2222 Port接在一起。

3. 取得終端機

進入到OLPC視窗環境後,在OLPC的模擬環境按 “Ctrl-Alt-3”,就會進到console模式(要回到視窗模式請按 “Ctrl-Alt-1” )。接著用root登入(預設沒有密碼),就可以順利取得root console。記得順便設定一下root的密碼。

4. 下一步?

根據官網上的說明,下一步應該就可以直接連線進去,但是實際上卻不行,為什麼呢?因為這時候的OLPC還沒有將網路啟動,需要先設定網路才行。

5. 設定網路

在root console下執行

ifup eth0

或是

echo ifup eth0 >> /etc/rc.local

設成下次自動啟動

6. 確定啟動sshd

/etc/init.d/sshd start

執行到這裡,我們已經有能力可以連線到QEMU中的OLPC了。

7. 連線到OLPC

ssh -X -o NoHostAuthenticationForLocalhost=yes -p 2222 root@localhost

其中 “-X” 是設定視窗轉送的參數。(可以執行xterm看看,所產生的視窗會將送到本機端來)。進行到這裡,我們已經有操控整個OLPC系統的能力,可以像使用一般Linux的方式去使用。

8. 如何作一個最簡單的Hello World?

目前OLPC並沒有內建gcc等開發工具。不過uname一下,可以發現OLPC的平台是i686。也就是說,我們可以先在本機端開發好程式,編譯好了再上傳執行即可。

而在OLPC裡的視窗程式執行環境為gtk、pygtk。我們不妨利用現在的pygtk來作為試驗。在這裡我們就直接引用pygtk給的官方範例

9. 如何上傳?

最直接的方式就是透過scp的方式上傳。

scp -o NoHostAuthenticationForLocalhost=yes -P 2222 ./helloworld.py \ root@localhost:/home/olpc/hello_world.py

10. 如何執行:

由於OLPC的XWindow是用olpc這個使用者的身份執行。所以在執行前記得切換成olpc這個使用者

su – olpc

之後用視窗轉送的方式來執行

DISPLAY=:0.0 ./helloworld.py

就可以看到簡單的Hello World的畫面了

View post on imgur.com

PCManX on OLPC

感謝jollen前輩的幫忙,讓我有進一步接觸OLPC(傳說中的百元電腦)的機會。

去年年底時就聽了好幾次OLPC的新聞,能真的用到實品,興奮之情真是難以言喻。期待歸期待,真實世界的OLPC用起來感覺倒還不是很順暢。可能是裡頭的軟體版本還沒跟到最新版,或是還不夠成熟,沒有完全發揮硬體完全的效能的原因吧。

想要更新到最新的版本,然而手邊又沒有工具也是沒輒。幸好,拜模擬器之賜,軟體的開發不再死死侷限在硬體上。

OLPC的組織已經有提供好相關的軟體模擬環境和開發工具,讓參與者即使沒有機器也能進行軟體測試與開發的工作。其相關的聯結如下:

幸運的是,OLPC的本質就是Linux系統,只有表面的介面看起來不太一樣,其他的系統設定跟程式環境都一樣。只要拿到OLPC裡的super-user,理論上幾乎可以作到任何在Linux上的事。

「理論上?!」

我們總是需要作一些嘗試來堅定我們的信念。

BBS可說是咱在地特有的文化,適逢(Open-) PCMan於日前釋出2007的最新版本。何不移稙一個BBS軟體到OLPC上呢?經過幾天的嘗試,終於有了初步的成果如下:

View post on imgur.com

OSDC.TW 二三事

4/14-4/15兩天的OSDC.TW活動終於結束了。

OSDC.TW 2007 終於結束了,這幾天陸續看了魔法設計師BlueCatleothYuren和一些相關的部落格後,覺得自己也該寫篇心得和大家分享一下這次的活動心得。

今年是第一次參加這麼大型的活動,個人感覺是相當新鮮的回憶。 相較以往參加的活動,OSDC.TW所聚集的人氣相當旺。這次活動還吸引了許多國外知名的Developer遠道前來共襄勝舉。 演講內容的深度和廣度都很棒。

這兩天聽到的講席有:

  • jserv – RT Nanokernel for Embedded Linux
  • Audrey Tang – Jifty
  • clkao – svk: version control without the headaches then pushmi
  • Shu-Chun Weng – The Value of Everything But the Cost of Nothing — a Tutorial to Haskell
  • Marek Lindner – Wireless Meshing – the future of infrastructuring
  • Macpaul Lin – Porta2030
  • MGdesigner – 2D fonts generator
  • Lightening talk

一個議程約莫是80分鐘左右,所以講者所準備的題材大多是以介紹概念和展示為主。 最大的收獲無非就是能一睹傳說中的Developer的風采,甚至有機會能和長輩面對面聊天。

RT nanokernel這個場當然一定要先捧一下。每次聽jserv的演講都有幾個不錯的地方,除了都會有令人XD的笑話,另外就是一定會有Orz的Demo。 jserv戰鬥力真驚人,前一天還在CodeJam衝鋒陷陣,隔天還能馬上就準備好質量俱佳的報告。

生平第一次見到傳說中,被喻為「台灣電腦十大高手」的AudreyT,台風穩健,人看起來也非常有氣質。 整個Talk的內容非常流暢,一個步驟接一個步驟的解說如何用Jifty來作出doxory這樣的網站。 能用程式碼為主的內容作投影片,作簡短扼要的解說,還能保持內容的趣味,真的非常厲害。

第一次見到clkao是前一天在多鬆和參加CodeJam的 人吃飯時看到的,他比我想像中的還要親切許多。 在當天的議程,他即介紹他著手寫SVK的源點和過程,還有一些設計理念。 svk我用得不久,大約才一個月的光景,然而svk所帶來的便利,已經成為「日常生活」中不可或缺的一部分。 而clkao他可以為了寫一個程式,空出整整一年的時間去Cook它 (而且也只花一年),真是令人佩服不已。

Shu-Chun Weng的Talk是介紹Haskell,一個我完全沒有聽過的程式語言。 短時間內要接受新的語言概念,對我來說還是太難。 聽到一半我就聽不懂了,感覺這東西用來作計算的功能似乎不錯。

Marek Lindner和Macpaul Lin則是介紹行動Wireless的概念。也就是利用AP和AP互聯,以建立網路通訊。 Marek用簡單的觀念來介紹這個架構的原理,而這個領域其實很難,應用非常廣。我們國內前陣子TOSSUG社群發起像Porta2030這樣的Project來玩這些東西。 最有趣的是Marek所秀出的他們在柏林市Wireless AP之間連線圖,感覺真的非常棒。 而Macpaul就是接著介紹和展示一些Porta2030的一些成果,還帶了很炫的Porta2030的衣服,相當有趣。

MGdesigner 的Talk是關於漢字顯示的最新技術,在此之前就聽過他的演講,印象相當深刻。用組字的方式來顯示漢字,每一個人多多少少都想過。然而這個想法一直沒辦法 落實到整個資訊系統上。 今天這個成果被開發出來,而且能開放專利並用自由軟體的來發展。對整個文字文化的影響非常深遠。 連閩南語暨客家語輸入法的開發者Arne Goetje(高盛華) 也自百忙中抽空來聆聽,可見得其重要性。

Lightening Talk大概這次大會裡最活潑的節目了,自由報名,每個表演限時七分鐘。 每個上台的人得在這個時間內把要講的內容講完,否則就會被主持人殘酷的搶走麥克風了。很酷炫的東西像是可以計算筆電傾斜度來操縱玩具大炮,虛擬的 Flicker框架。jserv用C/C++實做Ajax/embedded,還可以用gdb來debug,此外,還有高橋征義 (也就是高橋流簡報法的創始者) 本人的簡報,最後再加上MGdesigner的組字Demo。Lightening Talk不論是效果或是笑果都非常棒,真的是一個特別的節目。

第一天晚上後來有跟Ping他們去古亭那裡吃飯。去了好幾個人,像是 jserv、chihchun、yurenju、fourdollars、Marek等等。可惜我掛心於第二天的Talk,沒能好好放鬆心情的跟大家一起 聊天。 不過後來還是跟Marek的朋友聊起來了。他的朋友的英文不是很好,就用德文找我聊天。 結果就是不斷的查線上字典伸單字。不過有趣的事後來他Demo了很炫的3D桌面程式給我們看,才知道他們就是s3dDevelopers 。平常是很少有機會看到3D的程式師的,而且還是Developer。沒想到在這裡遇到了,真是相當驚奇。

第二天晚上則是跟一群講師還有工作人員吃個飯。大家都很high,因為這次活動辦得真的不錯。hcchien找的餐廳很不錯,吃飯前psilotum還是一直拿相機猛拍。不過我覺得晚餐吃得好快啊,原來後來我累得睡著了。

除了這些聽講的心得外,最大的好處就是能和傳說中的Developer面對面聊天。這幾天我除了講師之外,還遇到jesse、yurenuc、Tsung、descent…等一些來自各方的愛好自由軟體朋友,聊聊最近在作什麼,交換心得。

今年活動辦得真的很好,希望OSDC.TW明年還能繼續再接再厲。

相關連結:

Unicode版のTeX

View post on imgur.com

TeX 是一套重量級的排版軟體,目前在國際流通的論文,大半是以TeX 所製成,其文件品質有目共睹。XeTeX 是Unicode版的TeX,具有功能特色如下:

使用FreeType和Fontconfig的方式讀取系統字型,直接支援True Type和OpenType字型,不用再作繁複的設定。引入ImageMagick支援,可直接套用JPG、PNG、BMP的圖檔,大幅增加引圖的彈性。語法上,繼承TeX和LaTeX的語法,而不再用\usepackage形式上來處理CJK文字,文件相容性高。

目前XeTeX的使用環境以Mac為主,不過目前已有Linux和Windows的支援。圖上所顯示的正是在Gentoo Linux上所製成文件。

OpenVanilla套件打包二三事

在寫UCIMF的趨使下,對OpenVanilla的安裝方法並不陌生。雖然手動安裝不難,但總是希望能直接用套件的方式來安裝程式和模組。繼前陣 子包了給Debian的實驗包之後,一直也很想試Gentoo的打包。經過幾天的嘗試,幸運的得到初步的成果。一開始的時候,煩惱要怎麼指定程式碼的位 置,一般都是給一個tar.gz的URL然後下載解壓縮。不過OpenVanilla主要是用SVN作為存放的方式,所以行不通,於是就暫時寄望在 Tarball出現上。這時候剛好遇到psilotum秀了FreeBSD上的OpenVanilla的Ports給我看,才發現Ports已經有人包好 這些套件,我便想,Portage上也有類似的工具才對。有了靈感後,很快就找到Portage對於SVN這類的處理方式了。主要的作法是,先 inherit subversion 這個eclass, 然後再用ESVN_REPO_URI的參數來指定位置。遇到比較分散的檔案,則可以改寫src_unpack()以符合需求。不熟悉的地方則可以先參考已經寫好的ebuild,像是uim-svn

回 顧這兩次作Debian和Gentoo的Package的經驗,發現製作原理有很多共同的地方。作Debian的包裝時,發現整個OpenVanilla Modules的目錄只要設好一個套件產生的規則,就能把整個目錄下所有的模組都打包成個別的套件。因此原本以為要作10幾個重複的工作,居然一次就作完 了。這讓我印象非常非常的好。能在套件的維護者只需要維護一個Source Package的情況下,產生許多Sub Binary Package供使用者選擇,是極大的優點。而Gentoo特別的地方(也是FreeBSD Ports的特色),則是直接抓源本的原始碼來編譯的風格。這個風格的好處是在我開始作UCIMF之後才慢慢有感覺的。因為我體會到,對許多還在發展中的 專案,維護一份Tarball是一件很困擾的事。最主要的原因是,許多地方都還在增減修補,很難取捨出一個點作為一個穩定的釋出,而要等套件的製作,更是 一個漫長的過程。這時候能夠透過CVS、SVN這一類的方式取得原始碼來編譯,對許多發展中的專案來說,真的是一個很棒的特色。

從 一開始的User,到寫專案後學了一些Developer東西,在今天作了這些東西之後,感覺又多了一個Packager的角色。對我來說,在這三者的使 用情境中轉換,並不是那麼方便。是不是有個套件機制可以將這三者融合在一起呢? 像是我今天想改一個程式的功能,我能很方便的取得源本的原始碼,在本機修改後,能直接套用在套件裡作編譯和安裝,完成後並能輕易的釋出和分享。今天看來, 相關的環境條件都蠻成熟了,說不定已經有這樣子的整合式套件系統架構存在也說不定。

或許在可見的將來,這些開發平台的整合,也能像Wiki對文件發展所帶來2.0的影響一樣,提供開發者一個互動性更高、更流暢的開發環境。

Package 2.0 ? 嗯…

大於與小於50000的差異

在zhcon的basefont.cpp中看到這一段程式碼時, 心中突然有了些感觸。

下面所記載的程式碼, 主要的目的是判斷在字型檔大於50000Bytes時,就改採用memory mapped的方式來配置,因為CJK所用的字型大部分大於這個容量,所以得另外作一些處理。而這些細心的念頭, 是在FreeType的PCF部分,還有libXFont的PCF中找不到的。想當然爾,國外地區的Hackers只需要用到ASCII的字型,誰會去關 心這樣的細節呢?

因此,對於這些CJK的基礎建設,我們更應該主動去作才是。

若我們不作,還有誰會來作?

if (mBufSize > 50000) {

//hzfont use mmap

mpBuf = (char *) mmap((caddr_t) 0, mBufSize, PROT_READ,

MAP_FILE | MAP_SHARED, mFd, (off_t) 0);

if (mpBuf == MAP_FAILED)

throw (runtime_error(“error in mmap gbfont!”));

} else {

//ascii font read to buffer

mpBuf = (char *) new char[mBufSize];

unsigned nread = read(mFd, mpBuf, mBufSize);

if (nread != mBufSize)

throw (runtime_error(“error in reading asciifont!”));

}

你要慢跑還是漫跑?

剛退伍的我,常有一種很深的學習焦慮感,尤其在希望早點獨立自主的自我期望下,凡事都急求速成,什麼東西都沾一點,卻又不夠深入。弄到最後,一件都沒有好好的學成,心情也跟著低落。

逛Blog時碰巧讀到 “Teach Yourself Programming in Ten Years” 這篇文章,作者提出了對人人學程式設計急求速成的反問,並用他的經驗告訴我們,那些求速成所花的時間, 根本就不夠養成一個真正的程式設計師。網路上形形色色的成果展示,或是創意作品,也許只有短短幾分鐘,但可知作者在背後花了多少的時間和心血,才能達到這樣的能力?

正所謂,「台上十分鐘, 台下十年功」。

之前讀到李四端對於新聞工作的感想「你要新聞慢跑還是漫跑?」,也是心有所感.,或許在汲汲騖騖的生活中,也要找機會停下腳步來想一想,自己是否真的熱愛所投身的工作、事業?還是只是漫不經意的走馬看花。

最近洽巧讀到一篇值得一看的程式設計學習的導引,”How To Become A Hacker“,除了呼應了”Teach YOurself Programming in Ten years” 所表達的觀念,也鼓勵讀者多學習性質不同的程式語言,並嘗試以不同語言的性質來思考問題。

小小繞了一圈操場,才發現真正要走的路,還很長很長…

Nerdy(宅)

我不太喜歡看電視, 覺得看一些節目很花時間.
但如果把瀏覽器比作電視機, 把滑鼠比作搖控器的話.
會發覺其實所做的事是很像的, 只不過是換成自已熟悉的節目而已.

Wiki和Blog興起之後, 網路上的節目變得越來越多.
最常遇到的情況像是:

“用google查個關鍵字ABC吧…”
–> (開firefox連google)
“這個網頁看起來不賴.”
–>(點選)
“嗯, 這個wiki的內容很不錯”
–>(開Tab)
–>(加Bookmark)
“唔, 這幾個文件似乎都引用到這個Blog?”
–>(連blog)
“哇, 果然是強者!”
–>(加Bookmark)
–>(逐一點選blog文章)
“順便看看強者blog提供的連結吧…”
–>(連wiki…)
–>(連blog…)
“文中介紹的DEF是什麼東西!?”
–>(loop to the beginning)
….

幾個時辰過後, 接踵而來的不是獲得知識的喜悅, 反而是喘不過氣來的無力感與失落感.
該查的關鍵字沒查完, 什麼事都沒作到, 因而感覺到失落.
而網路逛得越久, 越覺得網路世界是如此的龐大, 而自已卻如此的渺小.
這份無力感更是讓人想逃避, 放空一切.

宅.