<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<channel>
<title>Jserv&apos;s blog</title>
<link>http://blog.linux.org.tw/~jserv/</link>
<description></description>
<dc:language>en-us</dc:language>
<dc:creator>jserv@kde.linux.org.tw</dc:creator>
<dc:date>2008-07-04 11:53:49 +0800</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.64" />
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

<item>
<title>不再囉唆：NetBSD 簡化 BSD 授權條款</title>
<link>http://blog.linux.org.tw/~jserv/archives/002042.html</link>
<description>儘管絕大多數的開發者都知曉 BSD 授權條款較為寬鬆，沒有 GNU GPL 本質上 &quot;copyleft&quot; 的「病毒式」感染性，但實務應用仍有值得推敲之處。NetBSD 基金會近日甚至宣佈，進一步簡化其使用多年的 BSD 授權條款，相較於繁瑣的 GNU GPLv3，NetBSD 此舉可說追趕 FreeBSD 與 OpenBSD，樹立 BSD 授權的「自由派」訴求。 BSD License 為 &quot;Berkeley Software Distribution license&quot; 的縮寫，顧名思義，源於加州柏克萊大學的 BSD 一系列的軟體，最早的著作權人為 Regents of the University of California&apos;（加州大學董事會)，BSD 授權條款本身相當清楚，最初的版本有四個條款，也就是規範被授權人的條件限制，如下： Redistributions of source code...</description>
<guid isPermaLink="false">2042@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-07-04T11:53:49+08:00</dc:date>
</item>
<item>
<title>取得 GNU/Linux 行程的執行檔路徑</title>
<link>http://blog.linux.org.tw/~jserv/archives/002041.html</link>
<description>本文試著探討 GNU/Linux 於執行時期 (run-time) 的行程 (Process) 如何取得執行檔路徑，並探討 /proc/self/exe 的機制與其應用。 進入主題前，我們該來思考本文標題： 「取得 Linux 行程的執行檔路徑，有什麼好處？在什麼場合需要？」 這個問題最好的答案，就是看看真實需求。筆者七年前曾撰寫過一篇短文 [親手打造 Floppy Linux 環境]，在談及 GNU/Linux 剪裁的過程中，提到 [busybox] 得以將若干工具透過 symbolic link 到 /bin/busybox、且能於執行時期正確依據名稱挑選 applet 並執行的原理，就是透過 argv[0]，也就是「執行時期的名稱」。具體來說，當我們在 shell 中執行 cp、cat、chown 等指令時，busybox 會將包含「名稱」的 arvg[0] 丟給 run_applet_by_name() 去解析名稱，再去找對應的實做，並儘可能讓各工具程式達到最大的程式碼可重用性，甚至免去動態連結的負擔。 由於該文年代久遠 (注意：筆者認為現在將...</description>
<guid isPermaLink="false">2041@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-07-03T22:53:55+08:00</dc:date>
</item>
<item>
<title>推薦「E-GI建築師事務所實習報告」</title>
<link>http://blog.linux.org.tw/~jserv/archives/002040.html</link>
<description>最近，放了從求學、職場生涯以來，最長的一次休假。這整整半年的時間內，試著去接觸不同層面的人事物，認識了 egi、閱讀了她豐富的 [E-GI建築師事務所實習報告]，從旁探訪她的內心世界，謹此推薦給各位朋友。 有個頗有成就的舅舅任教於台大土木系，小時曾多次耳聞他參與北二高設計與整體規劃的花絮，當時每回都聽得很入迷，但或許覺得自己比較適合敲鍵盤，而不是碰尺規，所以選擇資訊系就讀。大學時代，曾與一位多才多藝且出眾的建築系女生交往，自此交融著對於建築設計的愛好，去建築系館約會時，往往則在這古色古香的建築與多元的設計呈現所傾倒。 事實上，軟體業界的 Architect 這個名詞就是從建築業界借用來的，整個軟體工程的目標更可說是建築設計的抽象呈現：軟體開發如同建築設計，過程中，得針對整體需求、分析、設計、實作、佈署等各項工作流程之不同觀點予以呈現，也就是軟體系統之「塑模」(modeling)。至今，我還記得當時在成大附近的住所，翻閱她帶來 Christopher Alexander 在 1970 年代的大作《A Pattern Language: Town, Building,. Construction》，予我極大的共鳴。 但建築不全然是工程，當談及建築，不免會聯想到「空間感」一詞，是為人們的精神世界鋪就的一條通向終極的理想道路，駐足於此，心境頓時得到永恆的寧靜與祥和，好似，一門之隔卻的有兩個世界。也因此，建築設計是人們內心世界的體驗、感情的記錄，予以具象呈現，偶然在 funP 上瞥見 egi 的文章，按圖索驥尋出其文章的脈絡，不乏詼諧的趣事、情感的轉折與猶豫徘徊，而隱約有著設計人一貫的執著與敏感，或許不顯現於圖文，但存於斯。 從舅舅與前女友身上，大概知曉建築業的生活方式，所以對 egi 的文章偶投以會心一笑與祝福，畢竟這個行業是如此嚴肅又切近我們的生活。其中，最有感觸的文章大概是 [ 230公里的風景] 一文，標題取自於台南到雲林麥寮、花費四個多小時的 230 公里路程。人生際遇往往可用煽情的字句，去誇飾情緒的波瀾壯闊，一如被連續劇養成的感官表現，但平凡中見真情，生命的可貴因此美麗，也因而厚實，我想，egi 的文字就屬於後者，再搭配獨特的圖片更具張力。[ 230公里的風景] 一文取鏡頗耐人尋味，營造出遠離塵囂、反璞歸真之感，又適時以「無政府狀態的張貼模式」凸顯文化與自然環境的對比。很喜歡「波光嶙峋，恰是閑美」前後幾張圖，或許讀者可得以如南台灣普照的陽光一般。 egi 的 [自我介紹] 大概說明了一切： 喜歡畫畫，但是不是藝術家。 喜歡發呆，但是腦袋總塞爆想法。 喜歡，一切。...</description>
<guid isPermaLink="false">2040@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-07-01T18:18:12+08:00</dc:date>
</item>
<item>
<title>觀察 Linux 的虛擬記憶體</title>
<link>http://blog.linux.org.tw/~jserv/archives/002039.html</link>
<description>延續 [尋幽訪勝話系統--以 Linux 探索軟硬體整合設計] 的演講，要觀察 GNU/Linux 運作時期的虛擬記憶體 (Virtaul Memory，以下簡稱 vm)，其實沒有想像中的難。首先，可透過 vmstat 工具程式，執行方式如下： $ vmstat -S m procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0...</description>
<guid isPermaLink="false">2039@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-07-01T16:03:23+08:00</dc:date>
</item>
<item>
<title>httping : 針對 HTTP Request 的仿 ping 程式</title>
<link>http://blog.linux.org.tw/~jserv/archives/002038.html</link>
<description>[httping] 這個程式非常有意思，能夠以類似 ping 工具程式的方式，將 HTTP Request 的回應情況，呈現給操作者，簡介如下： Give it an url, and it&apos;ll show you how long it takes to connect, send a request and retrieve the reply (only the headers). Be aware that the transmission across the network also...</description>
<guid isPermaLink="false">2038@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-07-01T11:11:37+08:00</dc:date>
</item>
<item>
<title>演講：快快樂樂學 GNU Debugger (gdb) Part  I + II [台中]</title>
<link>http://blog.linux.org.tw/~jserv/archives/002037.html</link>
<description>幾個月前，在台南舉辦演講：快快樂樂學 GNU Debugger (gdb) [Part I] 與 [Part II]，現在也有台中的場次，詳情可見酷！學園的 [討論區]，摘錄如下： 簡介：期望使聽者得以透過 GNU Debugger (gdb) 來加速系統開發與分析，讓這個臥在硬碟深處許久的強力程式，激發其威力。本議程捨棄過往教條式的介紹形式，延續「深入淺出 HelloWorld」系列的「作中學」途徑逐一探討使用情境與案例分析 議程主題： Why - 為何我們該善用 Debugger？ Who - 誰會因為熟悉 Debugger 而受益？ What - 史上最強大的 Debugger -- gdb 與一系列系統軟體 Where - 利用 Debugger 的場合 How -...</description>
<guid isPermaLink="false">2037@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-07-01T10:05:08+08:00</dc:date>
</item>
<item>
<title>追憶似水年華</title>
<link>http://blog.linux.org.tw/~jserv/archives/002036.html</link>
<description> 眾鳥高飛盡，孤雲獨去閑 相看兩不厭，只有敬亭山 出自詩仙李白的〈獨坐敬亭山〉，唐朝天寶十二年，凝望著幽靜秀麗的敬亭山，但覺山景也正含情脈脈地回看自己，彷彿兩者已有種默契，是此，詩仙吟出了這首千古絕響。博學精通國史古籍的家母為我命名「敬群」，寓意「敬業樂群」，而次年來到這個花花世界的親妹妹則被命名為「敬婷」，即取於〈獨坐敬亭山〉的最後兩句，並標注「女」字旁表女兒身。今天是妹妹二十六歲生日，取出相簿翻閱我們兒時的照片，竟陷入無限的追憶迴路中。 因為我們兩個小鬼都在六月份出生 (11 日與 30 日)，所以雙親乾脆就買一份蛋糕，同時為我們慶生，照片是在苗栗老家的客廳中，兄妹滿心期待地望著生日蛋糕，妹妹當時 3 歲，如紅色蠟燭所示，而右邊的蠟燭是青的，表示我的年紀滿 3 + 1 歲，這大概是少數我們充滿歡笑的合影。妹妹的乳名叫做「小美」，在客家話裡頭很常見，不過，也可說是七次登臨敬亭山、留下了人山兩不厭的太白式浪漫的展現，她的成長歷程一度是很順利，也聰明討人歡喜，有大量的創作與活動，但這十幾年來，過得很痛苦，自限於象牙塔中，有如中世紀的武士，獨自對抗著難為我們所察的敵人，而身心俱疲。 在年幼時，受到過度保護、與外界隔絕的我，幾乎不知什麼是朋友，與同學的關係僅限於課堂，而妹妹則是唯一的玩伴，只要鑰匙兒童一回家，兄妹倆立刻拉下鐵門簾，要不看電視、玩積木、談天、下棋，就是各自讀書，偶爾，我們一同打水仗、打電腦、拼圖、繪畫等等，那些是兒時美好的記憶，我們很少吵架，感情也很好。過去，妹妹在許多層面的表現一直大幅超越我，諸如功課、繪畫、鋼琴、身高、人緣，而處於身旁的我，就好像是個弟弟。後來發生了許多轉折，在我離鄉背井到台中唸書時發生的連鎖效應，總之，一切變調了，我幾乎無法與人談論妹妹所發生的事情，以及我們家庭的處理態度。 山脈對地球來說，只是短暫的穩定，是沈積與地質運動的產物，對生命短暫如飛絮的我們來說，就跟其他自然景物一般，無所謂雋永與否。但，若見到我們無法接受、或不喜愛的景物，可能牽引而生煩躁的心情，若所見者在我們的主觀感受，覺得它是美好的，生命本身即可能被牽引而進入美好的狀態。詩仙看山就是這樣的心境，產生了心理的變化，並緩緩帶領生命進入另一種難以言喻的變化。換句話說，人心好似一面鏡，當用平淡祥和的心態，去觀察周圍的人或事物時，周圍的人或事物也會用相同的眼光來看待自身。對我來說，看著過去的敬婷，就像詩仙見敬亭山，一幕幕鮮明的意象，仍映入心智想像中，只是逐漸遠去，我們一同生活的美好體驗，及於生活中的每一分、每一秒。 「生日快樂，小美」這句話，我一直不知道該如何再開口，只希望現在有機會能聽進去。眾鳥高飛，孤雲獨去，誰與誰能夠，不離不棄？...</description>
<guid isPermaLink="false">2036@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-30T13:39:22+08:00</dc:date>
</item>
<item>
<title>用 Makefile 實現 quick sort</title>
<link>http://blog.linux.org.tw/~jserv/archives/002035.html</link>
<description>在大學課程中，quick sort 大概是用來闡述遞迴概念的最佳範例，因為既簡潔又實用。多數的程式語言也可採用此概念，甚至連 GNU make 裡頭 function call 也能遞迴，所以，何不試著實做 quick sort 呢？以下是 proof-of-concept 的試作品： TRUE = 11111 gt = $(shell if [ $1 -gt $2 ] ; then echo $(TRUE); fi) lt = $(shell if [ $1 -lt $2 ]...</description>
<guid isPermaLink="false">2035@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-28T07:27:08+08:00</dc:date>
</item>
<item>
<title>教育訓練：Gtk+ 程式設計初體驗</title>
<link>http://blog.linux.org.tw/~jserv/archives/002034.html</link>
<description> 過去很榮幸得以在不同的場合，與朋友分享過一些電腦技術主題的演講，下個月則嘗試時間較長的教育訓練，但仍維持免費的分享形式。主題是「Gtk+ 程式設計初體驗」，由 [酷學園] 張羅議程的進行，詳細資訊可參考 [公告]，以下摘錄部份內容： 簡介 學習 GUI 程式設計，一開始從 &quot;Hello World&quot; 等級程式出發都沒問題，但頗為枯燥，「做中學」的模式較易讓人產生自信。本議程以專案目標導向的形式，探討 [Gtk+] 與相關技術，如： 用 Gtk+ 搭配 GStreamer，打造簡易的 media player 以 Gtk+ 的延伸 widget set，打造個 text editor 透過 Gtk+/WebKit，打造可嵌入到 Gtk+ 應用程式的 Web Browser 最後，我們將可善用開放技術，整合出期望的應用程式 時間：2008 年 7 月 26...</description>
<guid isPermaLink="false">2034@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-27T18:11:03+08:00</dc:date>
</item>
<item>
<title>探訪 stack frame：談不定數量參數</title>
<link>http://blog.linux.org.tw/~jserv/archives/002033.html</link>
<description>前文 [以 C 語言實做 Functional Language 的 Currying] 已探討在 IA32 stack 的操作，讓 Currying 的行為得以在此基礎，予以實現，而我們還可看另一種應用：C 語言的不定數量參數，也就是 stdarg.h 裡規範的行為。當我們使用 printf() 函式搭配強大的資料格式化處理 (printf 本身就是個小型的 interpreter) 時，不免會其運作行為感到好奇，以下是 GNU/Linux 上 /usr/include/stdio.h 的 prototype：(取自 glibc) __BEGIN_NAMESPACE_STD ... /* Write formatted output to stdout. This function is...</description>
<guid isPermaLink="false">2033@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-25T13:33:43+08:00</dc:date>
</item>
<item>
<title>操作 X 的 Cut and Paste Buffer</title>
<link>http://blog.linux.org.tw/~jserv/archives/002032.html</link>
<description>在 X Window System 要處理 X client 之間的資料分享，因為設計本質上與傳統 GUI 有極大差異，所以，不可等閒視之，也就是說，在 Win32 下很普通的 Clipboard 處理，搬到 X 下，其實得考慮相當多。Win32 Clipboard 無法「直接」對應到 X Clipboard，我們必須分很多層級去思考，一般的 X client 中，以滑鼠(mouse) / 指標(pointer) 作區域的文字 / 物件選擇動作，在真正貼上或複製到標的視窗前，其實涉及到跨越實體環境的資料分享 (考慮到 X Protocol 分散式處理本質) 的議題，所以，光是如何保存這些中間資訊，就是很大的學問。 簡單的文字，可透過名為 X cut buffer 的空間，暫時保存 X cut-paste...</description>
<guid isPermaLink="false">2032@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-21T00:11:20+08:00</dc:date>
</item>
<item>
<title>開機見 Hello World</title>
<link>http://blog.linux.org.tw/~jserv/archives/002031.html</link>
<description>幾周前，c9s 寫了篇文章 [如何在 Linux 下使用 GNU AS 撰寫組合語言(1)]，找筆者協助檢閱，簡單扼要地提及 ELF 執行檔主體、GNU Assembler 語法，最後以 80486 以後 (含) 引入的 cpuid 指令作範例，是不錯的入門文章。閱讀時，也想到之前提過 [電子書《使用開源軟件-自己動手寫操作系統》免費下載]，這份來自對岸高手 [solrex] 的電子書籍，於是，筆者也提供一個具體而微的組合語言範例，使其置入 floppy / hard-disk 的 boot sector 中，能如同 boot loader 一般，當系統啟動時，就被載入執行。 當然，這裡還是用筆者最愛的 &quot;Hello World&quot; 程式，用組合語言來實現如下： .text .globl start .code16 start:...</description>
<guid isPermaLink="false">2031@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-20T02:55:11+08:00</dc:date>
</item>
<item>
<title>窺探 .bss section</title>
<link>http://blog.linux.org.tw/~jserv/archives/002030.html</link>
<description>幾年前只是對系統設計感到困惑，沒想到「分析 GCC 對 Hello World 的重重布幕」一類的舉動，竟成為激勵自我成長的目標，實在始料未及。拜 C 語言這種「披著高階語言羊皮的低階語言之狼」所賜，我們可透過稍早 blog [自我印列 ELF 簽名] 所提及的途徑，探索記憶體位址背後的意義。同樣地，我們也可從實驗觀察 GNU/Linux 中 ELF (executable and linkable format) 格式執行檔裡頭 .bss section 的呈現，關於這部份的背景知識，可參閱 Jollen 整理的 [.bss section：C 語言所種下的因] 與 [BSS Section 觀念教學] 等文章，本文則針對「窺探」的手法作補充。 「窺探」ELF 執行檔有許多途徑，我們當然可用 binutils 裡面的 readelf /...</description>
<guid isPermaLink="false">2030@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-19T17:33:39+08:00</dc:date>
</item>
<item>
<title>以 C 語言實做 Functional Language 的 Currying</title>
<link>http://blog.linux.org.tw/~jserv/archives/002029.html</link>
<description>在電腦科學的領域，Functional Language 的 Currying (也譯作「Curry 化」) 的正規定義為：(出自 [Wikipeida]) 「把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數，並且返回接受餘下的參數而且返回結果的新函數的技術。 此技術的命名係紀念 Christopher Strachey 以邏輯學家 Haskell B. Curry (1900-1982，師法自數學家 David Hilbert，Haskell Funcational Language 也是以他命名)，由 Moses Schönfinkel 和 Gottlob Frege 兩位所提出。本文試著以 C 語言模擬出 Currying 的特性，語法層面較為接近 Lisp 與 Prolog，為避免與 C 語言程序性思維的 function (函式) 用語混淆，當談及...</description>
<guid isPermaLink="false">2029@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-06-19T02:55:53+08:00</dc:date>
</item>
<item>
<title>「尋幽訪勝話系統--以 Linux 探索軟硬體整合設計」簡報上線</title>
<link>http://blog.linux.org.tw/~jserv/archives/002028.html</link>
<description>本週四 (May 29) 前往南台科技大學，做了一場名為 [尋幽訪勝話系統--以 Linux 探索軟硬體整合設計] 的演講，用了三小時的時間，為該校師生介紹了 Linux 設計的精神與 Device Model，相關資料已上線，可參考： 簡報： [sysprog-with-linux.pdf] 簡報所用到的程式範例： [sysprog-with-linux-prog.tar.bz2] 其中簡報檔採用 Creative Commons 授權 (CC-by-SA)，程式檔則是 GNU GPL 授權。這次演講的重心主要強調 UNIX 設計原則 &quot;Everything Is File&quot; 與「真實的虛擬記憶體」，此原則反映到 device driver model，若能充分體驗，應該能對系統設計有適度的切入。再者，我又強調應捨棄過去「逐行 trace Linux kernel」的「陋習」，相反，我們應該掌握 kernel 設計考量與發展趨勢，再回頭思考系統發展，並以軟硬體間的變化為出發，如簡報中「Rosetta Stone：Linux如何建立軟硬體關聯」一節所提及的 &quot;/proc/iomem&quot;，交叉觀察分析，進而知曉其奧義。另外，也趁此時機，與該校資工系與電子系的教授交流，參觀了該校在機電整合與機器人設計的成果。...</description>
<guid isPermaLink="false">2028@http://blog.linux.org.tw/~jserv/</guid>
<dc:subject></dc:subject>
<dc:date>2008-05-31T12:01:38+08:00</dc:date>
</item>


</channel>
</rss>