September 30, 2005
工讀生又休假了
從四月份 [工讀生開學了] 以來,這半年從事了很多特別的計畫,而且大部份是之前沒有從事過的項目。由於自己的工程數學底子沒有打得好,當我開始作 codec 的研究時,真是有高度的挫折感,這麼重要的軟體元件,竟然是我這一個工讀生在維護的?!面對種種挫折,難免會有 [擇你所愛又怨芭蕉] 之感,說實在,這過程也讓我吃了不少苦頭,某個進度遲滯的深夜,甚至還私自啜泣,不過至少我的老闆願意相信我的能力,不改初衷的我,抱持 [我為何選擇工程技術,而非其他行業?] 的理念,最後這些難題還是一一的克服了。
記得大學時代,阿茂學長曾說:「資訊人就該作什麼像什麼」。上一次休假,躲在內湖住所從事自己的計畫,困頓時獲得王家俊與林永傑兩位前輩的鼓勵,於是紀錄 blog [衣帶漸寬終不悔] 自勉,所以,在我「開學」後,就決定用嶄新的想法作技術上的突破。
在 Sep 21 時,對內作了一份工作回顧與展望的簡報: (只有封面)

這一張又一張的 slides 見證我的工作進度與投入,用了 90 分鐘向同事報告這半年的點滴,這場 presentation 大概是今年以來我覺得最有感情的一次,是的,我完成很多自己都認為不可能的任務,雖然對其他合格的工程師來說,是如此的輕而易舉。
今天一大早參加跟公司發展有關的大會,晚上則參加部門的聚餐,一如往常 [騎腳踏車上下班] 回內湖時,我想起之前的 blog [如何成為優秀的工程師] 以及 [JimmyLai] 的迴響,短期內,我還是必須加強專業技術能力、專案管理,以及產業脈動的掌握。
無論如何,我休假了!我會依據在 blog [2005 下半年計畫] 的項目,繼續努力實現。
祝我順利,好不容易可以喘口氣 :-)
由 jserv 發表於
11:36 PM
|
迴響 (0)
演講:綜觀 X Window System 新發展 (台中場次)
之前應 SA@Taipei ([
Study-Area] 台北分部) 的邀請,為與會朋友分享了 [
演講:綜觀 X Window System 與新發展] 的主題,下個月 (Oct) 也會在台中舉辦另外一場,詳情可參閱 SA@台中的大家長 Jou 所發出的公告:[
SA@台中 綜觀 X Window System 新發展],以下引述部份資訊:
(1) 講題:綜觀 X Window System 新發展
(2) 大綱:
- 為何要接觸老古董的 X Window System?
- X Window System 概況
- 現有的 X Window System 實做
- 簡介 X Extensions
- 3D 圖形與硬體加速
- X Window System 與桌面系統整合
- 在嵌入式系統的應用
- 發展社群動向
(3) 講師簡介:
Jim Huang (黃敬群) 在網路上常用的暱稱是 "jserv",投入多項 Free/Open Source Software
開發,主要的項目有:Kaffe 開發者、新酷音計畫維護者、X Window System "hacker",以及夢幻軟體計畫等等。
(4) 參考資源:
(5) 時間:2005年10月22日(星期六) PM 1:30 ~ PM 4:30 休息時間視現場決定
(6) 地點:清水國小(視聽教室) 清水鎮光華路125號
(7) 費用:0 -
(8) 報名網址: http://tnlug.linux.org.tw/join.php
(9) 地理位置/交通路線:
清水國小地圖,Yam 電子地圖找「清水國小」選台中縣。
火車南下復興號 103 105,北上莒光 16 復興 108。
離火車站大約步行十至十五分鐘。
公車(巨業'台汽'岳達)台中往大甲,清水高中站下車。
相較於上次的場次,會多花一點時間介紹 Desktop 相關的技術與有趣的展示,還有在台北的場次事後有朋友抱怨有「偷工減料」的嫌疑,所以這次應該會講完每一張 slides 與展示項目。
還是那句老話:「請多指教」,這一系列的分享都會出現在我的新書《揭開 X Window System 神秘面紗》中,雖然我是用極度牛步化的速度在撰寫,但我希望確保書中敘述所及的技術我都有一定的認知,甚至有實作經驗,所以任何相關的建議與疑難雜症請不吝提出,謝謝!
當然,更歡迎結交新朋友,畢竟十月份是我的假期,如果有朋友願意招待的話... :-)
由 jserv 發表於
11:37 AM
|
迴響 (0)
September 28, 2005
擇你所愛又怨芭蕉
清代詞人蔣坦曾在《秋燈瑣憶》裡記載,他的妻子,也就是當時的才女秋芙,種植芭蕉葉大成蔭,秋夜裡風雨蕭瑟,她聽著雨打芭蕉的聲音,不禁升起萬般愁緒。於是蔣坦在蕉葉上戲題短詞:
隔日,蔣坦見到秋芙也在蕉葉填下半闕:
痲痺於電子機械轟炸的我們,身處走向刻板、乏味、單調、緊張的時代中,即便仿效古人「格竹」或揣摩歷代文墨,可能也難以體驗這種將自然融入生活情趣,也就是「天人合一」的自然觀,禪宗無門禪師的一首詩偈則是更貼切的指出:
「春有百花秋有月,夏有涼風冬有雪,若無閒事掛心頭,便是人間好時節。」
然而,人心不能自主的實相與無奈,是我們這些凡人最適切的描述:心為外物所奴役,憂愁煩悶沁入心坎,萬事紛擾,何來清閒?
適才閱讀 [
兩三街角] 的 [
Love your job, but ..] 一文,多少牽引心扉的妄想雜念。原文 [
Love your job but never fall in love with your company] 用了具體的事例與對現實的質疑點題,是否作為一個工程師,每天上班超過十二小時、每週上班六日,以及緊湊的工作進度規劃,只是根源於「世間本無事,庸人自擾之」?[
Love your job, but ..] 一文則是以 [
馬達加斯加] 電影中的班馬終身勞苦奔命,某一天才赫然發現這不是牠真正想要的生活,而其他動物則認為維持現狀也沒什麼不好,直到意外的發生.. 呼應。稍早 blog [
軟體工程師的思維與工作型態] 是拜讀 CNet 關於 Microsoft 員工的報導後的一些感想,當時處於休假,不過「軟體工程師終日迷惘而漫無止盡的加班」的感觸還是相當深刻,如何身臨「莊周夢蝶」以覺破夢、更期以大覺破大夢、破覺夢外死生,在「齊物」後得以「逍遙」呢?又,「萬物與我為一」的境界是如何在軟體開發的項目落實?
相當認同 "Love your job but never fall in love with your company" 的觀點,並不是說我厭惡現在任職的公司,而是前者的影響更甚於後者,從業以來,歷經多個工作,名片上職稱與公司抬頭在變,但對我來說,我認為我過去以至於現在的工作項目都很有趣,而且我也沈浸其中,更在這個過程累積許多技術背景。相反的,或許有額外的紅利,比方說專案獎金或股票,但誠如 Chris 所言:
"At the end of the day, our aim is to grow people .... money is just the by-product. If company bankrupt, start a new one ..."
當然,我們還是必須在現實與理想作取捨。在我短暫的人生中,曾有老闆開出年薪百萬的待遇,聘請我從事某個專案的開發工作,對一個二十出頭的小夥子來說,實在是很大的誘惑。必須說,非常感謝對方如此看重我的能力,雖然我自知目前的技術水準只能作一個工讀生,但無法在該專案項目獲得 "Love your job" 的共鳴,而 "money is just the by-product",如果答應這樣的邀約,難說不會日後不會有「是誰多事種芭蕉,早也瀟瀟,晚也瀟瀟。」的觀感。
午夜燈下,萬籟俱寂,試圖紀錄雜感於紙上,面對苦樂總不免日坐愁城,悒鬱不歡,是的,我們常常種了芭蕉,又怨芭蕉。鳳凰花開,時值畢業各奔前程,師長們會以「擇你所愛、愛你所選」勉勵應屆畢業生,就我十年前參加國中的畢業典禮來說,這幾個字的確深深烙印於心,雖然我曾歷經一番波折,但至少目前來說,我從事看起來「還像是工作」的工作,安逸的置身於空調良好的辦公室,撰寫著軟體設計。資質平庸的我,有時候也會因為專案進度,以加班這種「時間換取產量」的方式,只為得到能接受的數字,而當邁入深夜,而指尖還是得在終端機上敲打程式碼、在 Debugger 緩慢的單步執行、分析 profiling 與 benchmark,或者無助的攤在椅上,望著偌大的辦公室如此的空蕩與孤寂,不免想起清代有位批文改詞為生的窮老夫子,夜以繼日地批發文章,才足以供家養口,李璧瑜撰聯描寫其清苦的狀況:
傷心夜雨蕉窗,點半盞寒燈,替諸生改之乎也者
回首秋風桂院,剩一枝禿筆,為舉家謀柴米油鹽
此情此景,何等神似呢? 試看,又是「傷心夜雨」、「寒燈半盞」、「回首秋風」,最後徒剩「禿筆一支」,對我這個兩袖清風的軟體工程師來說,彿看到了一位兩眼充滿辛酸淚水的寒儒。然而,科技是人類創造出來的,既然有辦法累積到這樣的規模,細部的設計與功能性的突破也該能獲得克服,於是乎,當 regression test 都 passed 之際、當 Bug 不再重現,或者完成 specifications 的規範時,瞬間扭轉這種意境,不再是生活的困頓,而是生命的富庶,這大概就是程式設計最美妙的感受:「是君心緒太無聊,種了芭蕉,又怨芭蕉。」
ps: 本文順道回應來信詢問軟體工程師工作待遇與態度的朋友。
由 jserv 發表於
04:11 PM
|
迴響 (1)
威力強大的 E17/EFL 與商業支援
LinuxDevices.com 的一篇報導 [Special effects support embedded Linux] 提及 [Fluffy Spider Technologies] 設計的一系列華麗而高度可攜性的 User Interface 產品,詳細的產品規格可以參考 [FST FancyPants Technical Specs]。
較值得一書的是,FST 是以著名的 [Enlightenment] 計畫的 [e17 branch] 裡頭的 [e17 與 UI] 也提到 for Embedded 的版本。幾個月前,我在 #FreeDesktop IRC channel 跟 e17 主要設計者 Rasterman 聊了些設計的理念以及近況,EFL 最重要的 library -- [Evas] 已經有相當多 backends 與移植,比方說 X11、Linux Framebuffer、[XCB (X C Binding)]、Win32、DirectFB 等等,而 ichi 寫了一篇 e17 的介紹文章:[Introduction to Enlightenment DR17]。
要閱讀 EFL 的文件當然要參考官方的 [The EFL Cookbook: BETA],如果要理解 EFL 的 Libraries Hierarchy,可參考 Rasterman 製作的 [Enlightenment Core libraries] 圖表 (或 [原始 DIA 設計] 檔案)。
由 jserv 發表於
12:41 PM
|
迴響 (0)
漫游七星山
七星山位於陽明山國家公園的西北,台北市第一高峰,海拔1120公尺。七星山有三個登山口,從小油坑、冷水坑,以及陽明山國家公園附近的苗圃都可上去,這三處都有人行步道直通山頂,約一個半小時可登頂。
週日中午約了 robben (Robert) 用餐,除了聊及工作的甘苦談與八卦 (來自兩個不同的「寶」的員工之間的交流),竟然一時興起就想去爬七星山,只買了一罐運動飲料,就從內湖衝去陽明山了。當天精神狀況其實不太好,所以爬得很慢,這是抵達 1000 公尺處:

最後終於登頂了:

等等,這篇 blog 跟 [
Planet DebianTW] 有啥關係?注意看照片,我可是穿 [
Debian@TW 2005 年的 T-shirt] 上山的 :)
用 Google 找了些資料:
下山的時候感覺整個人全身舒暢,雖然說不上 [
Excelsior],但步行攀越之際,倒也讓雜念獲得沈澱,並且置身如夢似霧的情境,只覺一襲灑脫。
由 jserv 發表於
02:07 AM
|
迴響 (0)
September 27, 2005
透過 WIKIWYG 實現可讀寫的網路
WWW 技術與相關的軟體整合一直很吸引我 (不然我的暱稱 "jserv" 怎麼來的?雖然我很久沒有在這方面著墨了),之前的 blog [
Tim Berners-Lee 談「可讀寫的網路」] 提到 WWW 的創造者 Tim Berners-Lee 接受 BBC News 的 [
專訪:Berners-Lee on the read/write web],其實相關的技術已經有了,而且可用性也很高,不過要徹底並 seamless 的整合當然是高度的挑戰。
剛剛閱讀 [
兩三街角] 的這篇 [
WIKIWYG],提到建構於 Javascript (okay,其實我們都知道該寫做 ECMAscript,不過看得懂比較重要) 的 Wiki 設計,使之更接近使用 editor 的習慣。節錄該文部份內容如下:
簡單的說他讓 Wiki 更貼近 Editor,看一下 [demo] 勝過千言萬語。目前還在發展中,bug 在所難免,不過是個蠻具潛力的東西。假如能配合 [這篇文章] (按:標題為 "Improving CMS Usability") 裡提到的另一個 prototype (demo) 那才是我心目中完美的 Wiki 呀 ! :-)
2005-08-23 Update: [demo] 多了個 [link],依照指示安裝好該 greasemonkey script 之後,可以去 c2.com 的 wiki 玩玩。
感謝 [
兩三街角] 的分享,讓我這個 WWW 愛好者可是陳迷了好一段時間,如果每個網頁都可以這樣寫眉批的話...
由 jserv 發表於
04:48 PM
|
迴響 (0)
September 26, 2005
愛用自家貨
剛剛閱讀 [洪志鵬] 前輩的大作 [愛用自家產品],讓我不禁反省自己過去的行徑。基本上,我沒有主動「推銷」或「推廣」 Linux,但是我會基於「建議」的觀點,希望有更多的朋友把 Free/Open Source Software 列入考量,我覺得這比較實際些,當然,許多默默付出的先進所累積的成果更令人動容。
在我這個月初硬碟損毀前 (DMA controller 故障,造成極低速傳輸),其實我這台 compaq nc400 是安裝 Windows XP 與 Linux,前者系統只安裝多媒體套件 (free),後者才能讓我真正開發系統程式,有時候我會笑稱在 XP 下可以獲得「徹底的娛樂」,因為我不會手賤跑去 coding 或 hacking,而是只能上網、聊天,或者看看 DVD。重建系統時,我用了五個小時規劃,在 30 Gb 的空間內,只安裝 Debian GNU/Linux,並且切割磁區,把 non-free 的套件,比方說工作需要而用到的 toolchain 與 commercial libraries / util 集中放置,而大部分則是 Free Software,並且把 check out 下來的 source code 也放到特定的目錄,這樣我閒閒沒事作的時候就可以 hacking,不過這部份有使用 crypto fs 保護,不然會忙到忘記約會 (也要有足夠份量的對象阿) 或上班 *笑*
我認為前輩的結語很不錯:
無論如何,還是鼓勵這些廠商要愛用自家產品。一方面用了才能體會東西好在哪裡,在客戶面前就很有說服力,清楚如何去推銷。另一方面,要親身去用過之後,才知道缺點在哪裡,才知道出了紕漏要怎麼跟客戶解釋、並盡快提供解決方案。東西越爛越是要用,這樣才對得起花錢買東西的客戶。
「客戶」一詞聽來嚴肅了些,不過這個概念聽起來簡單,但是做起來不是很容易。參觀過 Sun Microsystems 的人應該都會對其一致的 Sun Logo 印象深刻,到處都看得到,而且自家的產品俯拾即是:Sun 的工作站、Sun 的網路通訊設施、Sun 的作業系統、...,就是印證 "Run Sun on Sun" 這個概念。不過比較可惜的是,我在今年的 [Java 2005 專業技術大會] 並沒有看到很多 Java 以外的 Sun 自家產品,而且 slides 透過 Windows XP 上的 MS-Office suite 作展示的,而不是我預期 Solaris 10 + StarOffice,或許是我沒有看清楚。
話說回來,這台跑 Debian GNU/Linux 的 notebook 中,「自家」(廣義來說,就是自己有參與開發或 hacking 的項目) 的軟體越來越多了,而隨著經驗的累積,我也較能掌握整合性與功能性,也更能在其他朋友面前說:「請愛用自由軟體」 :-)
由 jserv 發表於
07:38 PM
|
迴響 (0)
September 20, 2005
sysprof - System-wide Linux Profiler
昨天閱讀 FootNotes,發現令人讚嘆的消息 [
Sysprof 1.0 Released],[
sysprof] 是個 profiler,這類的工具已經相當多了,但是 [
sysprof] 獨特之處在於以下特性:
- Full support for threads and shared libraries
- No recompilation or other instrumentation of applications is necessary.
- Profiles can be loaded and saved.
- Supports both x86 and x86-64 architectures
在我這台 Debian 上,安裝好之後,有一個 kernel module ( /lib/modules/2.6.12-1-686/extra/sysprof-module.ko ) 以及 GTK+ 的 sysprof 程式。新聞的評論相當有趣,引述如下:
multi process tasks
Submitted by Anonymous George on Mon, 2005-09-19 01:46.
Suppose for example that you want to understand while window resizing is slow under gnome. You suspect that the answer is one of:
- X11 sucks
- gnome sucks
- metacity sucks
With a system profiler, you can prove that they all suck at the same time :-)
Seriouly, a system profiler could be used to profile tasks that require communications between multiple applications. In my example above, you could figure out that metacity is eating most of the CPU to redraw its windows borders hundreds of times per seconds so the application is never given a chance to draw its content.
sysprof 不需要對程式重新編譯的的特性相當吸引我,gprof 很好用,而我的工作 (有 $$ 跟 free 的) 在某種程度來說,頗依賴 gprof 來產生 report。咱們牛刀小試,用來分析 Kaffe cvs head 執行 Qt4-based AWT 的情況,運作情境如 [
Screen Shots - Kaffe's Qt AWT backend] 的這張圖:

透過 sysprof 的輸出如下: (按一下放大)

我們可以很清楚的看到 Kaffe JIT3 compiler 與 VM internals 中,對於 Java method 分析和執行的時間成本,也可查看 CFG (Call-Flow Graph),雖然沒有 KDE 的 [
KCachegrind] 來得強大,但是這樣不需要 debugging info / profiling symbols 的特性,對我來說,已經非常好用了,而且,說不定 KDevelop 或 [
KCachegrind] 會直接整合這個設計也說不定 :-)
由 jserv 發表於
04:11 PM
|
迴響 (1)
Copy-n-Paste Programming
記得小時候很迷物件導向,也對軟體工程有高度的興趣,不過後來發現走火入魔的我,竟然不敢動手寫程式,滿腦子都是 methodology 一類的術語。有一天,我喝醉後,終於忘卻這些「枷鎖」(well, 至少為形式上的限制),然後又拾起寫程式的感覺。
前幾天在 #dot (Debian.Org.Tw) IRC channel 跟幾位朋友閒聊,脫口而出 "Orz Programming" 與 "XD Programming" 的概念後,不久則瞥見 [Slava Pestov] 的 blog [Some examples of copy and paste programming ]。作為 [Factor] 這個程式語言的作者,Slava Pestov 對 Java 也常常有些特別的見解,而這篇在某種層面來說,總不免有挖苦的意味。
後面的評論更是有意思,圍繞在程式語言應有的簡潔性與可讀性。
由 jserv 發表於
07:13 AM
|
迴響 (0)
September 19, 2005
Awesome C++
剛剛閱讀 Ranjit Mathew 的 blog [
C++ Madness],讓我終於一「虧」C++ 之美。讓我們看看這個小程式:
#include <string>
#include <map>
using namespace std;
int main(void)
{
map<string,string> foo;
return 0;
}
嗯,看似相當簡單,當我們用 "g++ -fno-implicit-templates foo.cpp" 編譯的時候,竟然會印出難以置信的錯誤,請參閱以下圖片: (別懷疑,密麻麻的文字就是錯誤訊息,按一下可以看全圖)

這是怎麼了呢?錯誤訊息的長度遠遠多出我們的 C++ source code,引述 Ranjit Mathew 的說明:
The example might look bogus, but consider this: you have been told that explicit template instantiations can some times considerably speed up your build process, not to mention save space used up by the object files, so you begin by creating an explicit instantiation file that you try to populate with template instantiations that are actually used by your program. You compile all other source files using "-fno-implicit-templates", but not the one special file. If you have not caught all template instantiations however, you will hit the monster of an error message that I sought to show per missing template instantiation. You are supposed to then figure out from these error messages which of the template instantiations you have missed out. Should anyone be surprised if you lose all hope at this point and just ditch the idea?
從 CCC User Manual 節錄出 "-fno-implicit-templates" 的語意:
-fno-implicit-templates
Never emit code for non-inline templates which are instantiated implicitly (i.e. by use); only emit code for explicit instantiations.
嗯,好個 C++ Madness, awesome !
由 jserv 發表於
03:54 PM
|
迴響 (1)
Priority inversion 簡介
之前的 blog [
簡報:Approaches to Realtime Linux] 分享我在內部報告所作的 slides,沒想到早上醒來,就收到幾封來信,而且還有來自國外的朋友,也讓我對於本 blog 的讀者群相當好奇,本 blog 的議題大多頗冷門...
顯然這些來信都有提及火星探測計畫裡頭 Priority inversion 發生的情況,不過 slides 只有粗略的描述,主要是因為預定於 70 分鐘內介紹完畢,所以這個有趣的主題就只能使用簡單的幾個字帶過。處於這個「找資料遠比閱讀資料快的時代」,我想還是直接參照以下資訊:
- [Introduction to Priority Inversion] by Michael Barr
[Michael Barr] 不需要我多介紹了,沈浸於 Embedded Systems 領域的朋友,應該閱讀過其大作,而其編輯的 [Michael Barr's Embedded Systems Glossary] 更是經典。這篇文章簡要的提到 Realtime 最重要的特性之一,就是 multi-tasking 的支援,而這牽涉到 resource sharing / locking 的議題,對於 priority-based scheduler 來說,是個挑戰。而 Michael Barr 用以下圖示說明:

考慮這個狀況:當具備中度優先權的 task (簡稱 M) 搶先 (preempt) 一個原本享有 resource 的低優先權的 task (簡稱 L),而該 resouce 又是一個高優先權的 task (簡稱 H) 所等待。問題就在於,H 與 L 共享 resource,當 L 被 preempt 時,就該放下 resource,這是合理的行為,而原本 H 就在等待 resource 的釋放,因為隨後就會使用到。但問題是,這段 latency 中,M 把這個規則打破,先行 preempt 了 L,也就把 L 的 resource 給「搶走」,這下有趣的事情就發生了。原本 L 與 H 具備相對高低的優先權差異,但因為 M 的介入,造成延遲,如果 M 一類的 task 相當多,或者 M 本身是 non-RT task,這樣的過程可能就讓 H 發生超出 deadline 的情況,更可能逆轉 L 與 H 的執行順序。更甚者,當 H 發生崩潰的情況,因為 watchdog 的效應,很可能 H 因此甚失其原本的高優先權。
很明顯的,NASA 的火星探測計畫中,登陸的軟體並沒有問題,而是出在在火星表面的任務。
探測太空船中,多個裝置之間透過一組 MIL-STD-1553 data bus 彼此傳遞資料,而具體的配置情況,可參考 [What really happened on Mars ? -- Authoritative Account] (by Glenn Reeves, Mars Pathfinder Flight Software Cognizant Engineer)。
問題的描述就如文章所提及:
Activity on this bus was managed by a pair of high-priority tasks. One of the bus manager tasks communicated through a pipe with a low-priority meteorological science task.
On Earth, the software mostly ran without incident. On Mars, however, a problem developed that was serious enough to trigger a series of software resets during the mission. The sequence of events leading to each reset began when the low-priority science task was preempted by a couple of medium-priority tasks while it held a mutex related to the pipe. While the low-priority task was preempted, the high-priority bus distribution manager tried to send more data to it over the same pipe. Because the mutex was still held by the science task, the bus distribution manager was made to wait. Shortly thereafter, the other bus scheduler became active. It noticed that the distribution manager hadn't completed its work for that bus cycle and forced a system reset.
當進行 transaction 時,處理 distribution 的 task (bc_dist) 變成上述的 M,而相當重要的 task,也就是控制 1553 data bus 上的 transaction (bc_sched),當然具備最高的優先權,而 bc_dist 則具備第三高的優先權。問題發生於 bc_dist 在 bc_sched 開始之前,就完成執行,這會導致系統 reset,這在設計初期就確保不會有 data lost 的情況。但是,bc_dist 一旦被優先權頗低的 ASI/MET task (也就是上述的 L) 給 block 時,就導致 priority inversion 現象。這樣的現象事實上有 workaround,不過因為內部廣泛使用 IPC 機制,於是這一切發生了:
When the bc_sched task was activated, to setup the transactions for the next 1553 bus cycle, it detected that the bc_dist task had not completed its execution. The resource that caused this problem was a mutual exclusion semaphore used within the select() mechanism to control access to the list of file descriptors that the select() mechanism was to wait on.
The select mechanism creates a mutual exclusion semaphore to protect the "wait list" of file descriptors for those devices which support select. The vxWorks pipe() mechanism is such a device and the IPC mechanism we used is based on using pipes. The ASI/MET task had called select, which had called pipeIoctl(), which had called selNodeAdd(), which was in the process of giving the mutex semaphore. The ASI/ MET task was preempted and semGive() was not completed. Several medium priority tasks ran until the bc_dist task was activated. The bc_dist task attempted to send the newest ASI/MET data via the IPC mechanism which called pipeWrite(). pipeWrite() blocked, taking the mutex semaphore. More of the medium priority tasks ran, still not allowing the ASI/MET task to run, until the bc_sched task was awakened. At that point, the bc_sched task determined that the bc_dist task had not completed its cycle (a hard deadline in the system) and declared the error that initiated the reset.
問題就是這樣環環相扣。
- [What really happened on Mars?]
由 Microsoft Research 的 Michael B. Jones 所整理的分析,後續的 Related Links 也很值得參考。
- [Priority inversion]
Wikipedia 的說明,自然也會有此火星探測的經典案例,同時也建議參考常見的兩個解法:
TODO: 整理一份圖文並茂的簡報
由 jserv 發表於
02:13 PM
|
迴響 (1)
September 18, 2005
從 OpenSSL 談 SSL Programming 的抽象化
之前的 blog [
使用 OpenSSL 的理由] 提到 OpenSSL 的一些參考資料,而昨天閱讀 DarkKiller 長輩的個人板,發現這篇:
發信人: DarkKiller.bbs@Deer.twbbs.org (悸動), 看板: DarkKiller
標 題: OpenSSL Programming
發信站: 小鹿鹿 BBS (Thu Sep 15 23:12:40 2005)
轉信站: SimFarm!Group.NCTU!grouppost!Group.NCTU!abpe.org
http://www.rtfm.com/openssl-examples/
OpenSSL Examples
http://www.gnome.org/~markmc/openssl-and-the-gpl.html
The OpenSSL License and The GPL
--
Resistance is futile.
http://blog.gslin.org/ & gslin@gslin.org
--
※ Origin: 邪惡小鹿鹿 ◆ From: 140.113.22.90
而讓我想起來,四月份的時候曾花了幾分鐘寫了一份筆記: [
從 OpenSSL 談 SSL Programming 的抽象化] (PDF 文件),從 gaim 的 ssl plugin 設計觀點來看,如何提出抽象的包裝 SSL library/implementation,對了,之前我也曾經提交一份 [
MatrixSSL] plugin for gaim,有空應該要追蹤一下。
由 jserv 發表於
09:48 AM
|
迴響 (0)
September 17, 2005
簡報:Approaches to Realtime Linux
前天的簡報內容,概略性的介紹如何以 Linux Kernel 的基礎,適用於 Realtime Systems 的需求,以及主要的專案計畫,至於 Linux Kernel 2.6 Realtime Extensions 實做,因為篇幅過長,已經抽離到其他的簡報。
取得簡報的 [
slides: Approaches to Realtime Linux] (PDF),這一系列 Realtime Systems 與其實作的簡報,有以下主題:
- RTOS Overview
- Approaches to Realtime Linux
- Peeping Realtime extensions in Linux Kernel 2.6
- Realtime Java Overview and its Implementations
簡報 slides 會陸續放上來,請多指教,謝謝!
由 jserv 發表於
01:48 PM
|
迴響 (0)
Beautiful Solitude
I have no idea with [
SCIM] Input Method platform, which led to repeated crashes on my Debian machine, so that I have to write in English in the Traditional Chinese version of my blog instead of [
the English one].
I found the messages from Purple according to the comment of my previous blog [
《百年孤寂》]. Purple shares her feelings, notes, and the writings in [
Beautiful Solitude].
The rich content inspires me, and I soonly fall into the thoughts to validate my altruistic concerns. Why? I can't tell in details, and not to mention to express well in plain English in spite of the broken Chinese input method. More or less, everyone could serve as a specific role model in the world, but he or she might not know the exact accomplishments in the absence of publishing his/her own efforts. Thanks for Purple's sharing.
I like that blog. :-)
Update: Purple put her blog entry in [
new URL].
由 jserv 發表於
11:24 AM
|
迴響 (2)
September 07, 2005
中文名字統計的研究
作學術研究不見得要一絲不苟、把論文寫得高深莫測,其實也可以切合日常生活。中文語言處理大師 [蔡志浩] 曾寫過一篇文章 [Common Chinese Names],就是作常見中文姓名的統計,用更通俗的話來說,就是找出所謂的「菜市場名」,很有意思的統計。
吸引我之處在於,這幾年來看,最常見的「菜市場名」有筆劃越來越多的趨勢,而且其實沒有很俗氣,但或許因為大家都受到戲劇、小說,甚至是新聞的影響,所以有此演變呢?不得而知,但很值得關注。
由 jserv 發表於
02:38 PM
|
迴響 (0)
看漫畫學習理念差異
我曾在 [
簡報:自由軟體授權分析] 提到「基於許多理念上的落差,Free Software 與 Open Source Software 是不盡相同的,立意也有所出入」(按:[
Free Java Runtimes 簡報上線] 又以置入性行銷的方式帶過一次),那到底差在哪裡呢?這種已經是哲學甚至是精神層面的項目,就必須訴諸具體化。
[
ELER (Everybody Loves Eric Raymond)] 是線上的漫畫集錦網站,透過漫畫的形式,提供對 Richard Stallman 、 Eric Raymond ,以及 Linus Torvalds 等重量級人物的刻劃。有兩篇漫畫很值得一看:
特別是前者,有許多語帶雙關的詼諧,最好是配合閱讀文後的 link,對了,也建議參照 LWN 的新聞 [
The GPL Version 3 Development and Publicity Project] 以獲悉 GPLv3 的發展概況 (漫畫的背景)。
由 jserv 發表於
07:37 AM
|
迴響 (1)
September 06, 2005
御風
今天在公司繼續作效能最佳化,之前 profiling 一些可能的疑點,終於透過瘋狂的 Assembly coding 後,有了很大的扭轉,獲得整體 27% 到 35% 的效能提昇,就規格來說,已經超越既定的水準了,滿心歡喜的抬頭,赫然發現辦公室的同仁都下班了,於是稍微收拾後,就準備返家。
當然,我還是堅持每日 [騎腳踏車上下班],前幾次的颱風與大雨天,我都照常騎乘單車了 (的確,頗類似特技表演),今天當然也是這樣。不過或許因為接近中秋,晚上格外涼爽,踩著踏板並享受涼風真是舒服呢。
此際,腦中浮現列子御風而行的神采,風中飛揚起我對哲學的思索。我渴望御風而行,渴望用心去體味,並試著紀錄這途中的種種歷程。我又知道什麼呢?沒有,甚至無法整理自己的觀點,這些年來,我一直在找這輩子唯一的寶藏,也就是 "logos",這個神秘的希臘文,含糊來說,就是中國哲學的「道」,可以用談吐、計算、規律、理性、秩序、... 來解釋,但是卻失焦了,「道」就是「道」,唯有將這些能量匯集在精簡卻威力強大的焦點時,才能燃起生命的炬火。
老子曾云:「天法地,地法天,天法道,道法自然」,這一切都有往復循環的規律,而我規律的踩著踏板之際,不啻建立某種形式的共振乎?若能超越軀體的限制,幻想御風而行的我,又該以何等心境體驗天地的規律呢?
由 jserv 發表於
11:08 PM
|
迴響 (0)
September 05, 2005
苗栗市區隨手拍攝與軍旅回憶
話說之前開始作 [
攝影練習] 後,就開始喜歡到處捕捉畫面,而上週末回苗栗老家,又在 [
jserv 的相簿] 新增兩個 entries:苗栗市一隅與軍旅生活回憶。前者受限於徒步行走,所以範圍只有住所附近,後者則是整理收藏時又勾勒起昔日種種回憶,一併翻拍紀錄。

比較可惜的是,退伍前三天完成的「大頭兵日記選」,原稿僅存於空軍單位中,而手頭唯一的印刷槁則不慎損毀,那是我在部隊中最後的作品,在此之前曾完成一份短篇軍事小說與空軍節紀念文。拿出自己的階級識別章,雖然只是空軍一個微不起眼的職務,可是總覺得很特別,以往只會在軍事片看到雷達管制忙碌的景象,而我竟然親身體驗了。
由 jserv 發表於
08:21 AM
|
迴響 (0)
September 04, 2005
徵求 MT 高手解惑
Leira 日前在 [
協助 kernel bug-report 的小工具] 張貼一份跟內文無關的迴響,引述如下:
Jserv你好,我一直是你Blog的讀者,也一直非常喜歡你的blog,因為閱讀得如此頻繁,所以不得不給你寫這個留言。
我是通過planet debian tw來閱讀你的blog的,事實上是,我是通過RSS Feed來閱讀planet debian tw的。這樣的話,我非常以來你blog提供的RSS的完整性。可惜的是,你的feed中提供的只是摘要,而不是全文。而我每次不得不點擊到你的blog中才能閱讀,實在是很不方便,也失去了planet聚合的意義。我想以你的見識和blog的受歡迎程度,早已經過了只是賺取點擊率的程度了。我在這兒真誠的希望,你能夠提供全文的rss feed。我想這樣,不只是我,還有絕大多數你的讀者,都會讚賞和感激。
我工作在一個不能訪問internet的環境裡,只能通過rssfwd的proxy將rss feed轉發到我的郵箱中閱讀,如果沒有全文的feed,事實上我很多次與你的美文失之交臂,而一直是我的遺憾。
最後,感謝你的blog給我帶來了豐富而有益的內容。
這個現象我知道,不過 [
blog.linux.org.tw] 預設就是這樣,我沒有作任何修改,造成困擾請多包涵。看了一些資料,也問了 [
kanru],似乎是模板的問題,聽到的時候讓我有點慌:「不會吧?寫 blog 還要改 template,該不會要去改 Perl?」,我有「Perl 語言恐懼症」,所以後者不可能考慮。
之前曾經抱怨過 [
不喜歡用 Movable Type],也考慮更換系統,不過對我這種 server 白痴來說,乖乖的用既有的系統還是安全些,為此,我還自己寫了小程式,協助 link 的引用 (也就是本 blog 常常會看到的「之前 blog [....] 提到...」一類的敘述,這是從 hash table 找的),現在大概剩下 Leira 所提到惱人的問題,現在運作的系統是 Movable Type Version 2.64 Copyright © 2001-2003 Six Apart,這裡徵求高手協助處理與解惑,希望您高抬貴手,留言或者 [
寫 email 給我] 都可,謝謝!
由 jserv 發表於
11:52 AM
|
迴響 (4)
OpenOffice.org 的單一授權模式
剛剛閱讀 [gslin 長輩的 blog],發現 [OpenOffice 將使用 LGPL 授權] 這篇,大意就是原本採用 [LGPL] 與 [Sun Industry Standards Source License (SISSL)] 雙重授權方式的 [OpenOffice.org],現在 (美國時間 Sep 2) 決定新版本只採用 LGPL 方式授權。
SISSL 允許在特定環境下,在最終的釋出版本用 binary-only 的形式發行,對以 OpenOffice.org 為基礎的商業軟體,或者是 Sun Microsystems 的合作廠商來說,可以發展私有軟體,稍早的 [簡報:自由軟體授權分析] 有引述官方的說明圖示,但看來要修正了,dual-licensing model 的案例或許該換成 MySQL。
Sun Microsystems 這個舉動十分有意思,不過在我發表愚見時,想先把 Slashdot 的報導 [OpenOffice Goes LGPL] 後面的 comments 讀完 :-)
由 jserv 發表於
09:59 AM
|
迴響 (0)
September 03, 2005
美的具象
之前 blog [
語言的感動] 試著透過三島由紀夫的文字,追求「肉體的極限」,並理解架構其中的「語言」(必須說,這對研習過 computer science 者來說,語意才會正確些)。稍早 (Aug 26, 2005) 在跟朋友的對話中,提到美的具體性,我想起三島由紀夫曾寫過以下文字:
「人的美,無論肉體還是精神的,大凡屬於美的,只能來自無知與蒙昧。知而猶美這樣的現象是不允許存在的。如果同樣無知與蒙昧,完全無形可隱的精神同光彩煥然的肉體之間,是不可能一決雌雄的。對人來說,真正的美只存在肉體。」
出處是其最後著作《天人五衰》。
智者的雙眸可以一眼望穿,而愚昧的我,卻只能在肉體的層面打轉,形體的孱弱與壯碩,並非真正的問題,相反地,信念則是主要因素。鼠之所以為鼠,在於其思想的認同,而非肉體,是以視之敝屣,嗤之以鼻而踰越,徒然浸淫於輕蔑而生的快感?
由 jserv 發表於
07:59 AM
|
迴響 (0)
September 02, 2005
這時候只想說 Orz
什麼時候你會想說 Orz 呢?阿,你不知道什麼是 Orz?! 請用 [
Google 圖形查詢] 找 "Orz",左邊第一張圖片就是。
現在 Web 技術已經有很大的改進,可用性相當高,也終於比較人性了,不過我竟然在 [
Sun Bloggers] 看到這樣的畫面:

原來內部的搜尋引擎找不到關鍵字的時候,會另請「Google 大神」,這個提示文字真棒。由此可見 Sun Microsystems 員工活潑的一面。不過下面這個就...

試想,我看到這個畫面的時候,我可能在其他終端機 coding,剛好瞥見標題「通話暫停」,下意識只想到手機的月租費沒有繳,然後被停話,當切換到 Firefox 時,才發現是 [
Intel Support] 因為 session timeout,做出的提示,可是這個「通話暫停」與「繼續通話」未免太 critical 了?
只想說... Orz
由 jserv 發表於
08:13 PM
|
迴響 (1)
早安!台北
早餐用畢,在內湖住所附近,為散步而走,晨曦是如此的美,離風景很近,離心境卻越來越遠。鋒面過境後略有涼意的冷風迎面而來,佛拭著,天籟寧靜,但在耳畔卻低盪著複雜的情感,在吐訴,天若有情自有聲。
那一刻,徹底感受到,那股來自心靈深處的震顳,淅淅瀝瀝的小雨,溫柔地滋潤著大地,索性收起折傘,徜徉在這片在雨境,縱身於彎曲小徑,一片蔥綠中遍尋熟悉的跫音,我忘卻時間,或者說,我不再跟忙碌的行程表競賽,此刻,我只為了追尋生命的美而趨步... 霎時,日光忽乍現,一抹金紅逐漸擴展,氣色透明並呈韻合調勻之貌,一個個泛白光的精靈,蟄伏草叢間成形,輕舞薄翼,飛上粉嫩的樹尖,奉獻所有生命的幻妙,以翅羽上美麗的金粉,裝扮著。
如果能選擇形貌,我寧貶抑為塵埃,飄浮在每一處,任憑大氣的任何變動,哪怕只是難以察覺的遞移,體驗物理學的布朗運動:風吹到那,我就跟到那,了無羈絆也脫離既有的枷鎖,和風相伴、雲相隨。是阿,何等微不足道呢?雖渺小,但我奔放而自在的存在著。
曙光透過了窗,照進了客廳,原來我一路上歷經如夢的美景,凝視地板上陽光的映射,看似平凡,不啻是隨處可見的景觀?但我卻很少能體驗過,享受過這種平凡。
北上工作正好一年八個月,也一直寄居於台北內湖,我總是出自內心的對台北感到一種厭惡,印證小時候在鄉下耳聞的疏離感、忙碌的節奏、污染、陌生、...,真正的問題是,我不願意試著理解這個城市。其實,只要靜下心,慢慢體會,其實台北還不錯,嗯,別忘給聲問候:早安!台北。
由 jserv 發表於
07:00 AM
|
迴響 (1)
颱風假 -- WirelessMMX 與手寫辨識輸入
乍看標題很突兀,所以要說明。
週四放了一天颱風假,難得有時間可以作自己的計畫,所以我研讀了 [WMMX Data Processing Result Penalty/Warning],Intel PCA (其實就是 XScale 或 PXA2xx Family) 的 WirelessMMX instructions 應用相當廣泛,但是文件與 sample code 不太多,深入的分析就更少了,這篇文件對我來說很重要,儘管兩個月前就開始閱讀了,不過某些 pipeline 的機制我是最近才體會的,也終於理解許多微妙的效能落差。
下午開始作 XScale/WirelessMMX target 的 JIT compiler,修改 asmpart.S disass.c md-asm.h 這三個檔案,這是 ARM core 使用上的一個陷阱,雖然比較流行的 ARM core 基本上都是 ARM9/MMU 的架構,多數的指令集是一致的,但 trampolines (invoke arbitrary functions) 還是會有微妙的差異。以 Kaffe 來說,[kaffe/config/arm/threads.h] 就因為處理 XScale 的 SP offset,需要多加一個判斷,再者,這兩個 ARM instructions 也要謹慎使用,特別在開發 JIT compiler 的時候: stmfd / ldmfd,通常分別作為 save/restore argument register,但 register allocation 會因為前述的議題而有出入。
傍晚跟 jie 聊天後,繼續思考 XScale optimizations,竟然不小心睡著,午夜才醒來,這樣生活實在太安逸了 :(
剛剛瞥見 [Palatis] 對 [夢幻軟體計畫] 做了新提案,想在 OpenEmbedded 發展輸入法 (OPIE/GPE),他提到兩個項目:libchewing 與手寫辨識輸入。前者的確是需要考慮的議題,為了釐清授權議題,所以捨棄龔律全與 [陳康本] 兩位前輩之前 training 過的辭典,改用 [libtabe] 的 tsi.src,雖然有修正過一些,但是還是太多冗字,詞頻也錯誤百出。手寫辨識輸入就更複雜了,所以我順便更新 Debian@Taiwan wiki [ChineseInformationProcessing] 的 [手寫輸入] 這部份,加入 rabit 兄 (SayYa BBS 上的 rabit,元智大學博士候選人) 的見解,他分析了現有 open source'd 實做的缺陷,以及這部份所面臨的挑戰。
於是,打完這一篇的同時,颱風假就這麼結束了。
由 jserv 發表於
01:32 AM
|
迴響 (0)