June 30, 2006

部份華人設計的作業系統列表

對岸的 DanceFire 整理了一份 [徵集國內操作系統項目列表],蒐集了部份華人自行開發的作業系統,主要涵蓋大陸那邊教育性、實驗性,或者衍生自 Linux 與 FreeBSD 的作業系統,當然,台灣這邊還是有一堆人開發過作業系統,不過還沒有廣泛列出 (某人作的小玩具倒是有 :P)。這些作業系統中,有頗多展現出設計者的創意與巧思,比方說 [Jicama OS] 就是訴求多媒體應用,充分發揮 IA32 與 IA64 硬體效能,而 [RT-Thread] 就是一個精巧但完整的 Realtime microkernel,再者,DanceFire 還列出對岸操作系統研究組列表,其成員不定時會發佈些值得參考的資訊。
由 jserv 發表於 11:52 AM | 迴響 (4)

June 29, 2006

府城尋夢

前幾天跟 Ally 談到台南府城、赤崁樓,以及附近的關廟,讓我想起在成功大學就讀時,某個夜裡的一份創作:
     標題  poem - 府城尋夢
     時間  Mon Jul 30 08:20:02 2001
    
    前日,騎單車夜間尋訪府城,而夜夢亦同趨,遂記此一趣。
    
       赤坎城樓日已晡,徒留牆外老松孤;
       餘日映作戰沙場,墜露凝成肉血軀。
       過苑猶看群蝶戲,登階未省志士呼,
       流雲鴻雁空來去,不下風塵府都居。
    
                          群 於台南住所
    
[府城舊事] 詳盡地描繪這塊歷經眾多文化洗禮、遍佈歲月蝕刻的土地,提供圖文並茂的導覽,古蹟巡禮 [赤崁樓] 更是其中經典,整整五年後回顧創作,仍可感受當時瞻仰赤崁樓城的時空變化:荷蘭人在赤崁建造普羅民遮城,後來成為商業與政務中心,後明鄭成功收復普羅民遮城,改赤嵌為東都明京,又歷經天災人禍,十九世紀才逐漸整修重建,這歷程就如古蹟巡禮 [赤崁樓] 一文的評註:
    「從荷蘭式的城堡,迭經歷代的改變,一躍而為中國建築的輪廓;從諸廟雜陳到雙棲並立;從填平城基,到碑林佇立。她真是歷盡滄桑,變化萬千!」
是此,不勝唏噓的我,試著訴諸文字,保存對府城的情愫與追思。
由 jserv 發表於 08:38 PM | 迴響 (0)

以新的 C++ 資料型態加速 C-to-RTL algorithm validation

之前的 blog [很「軟」的硬體] 提過軟體、硬體,以及相關通訊技術發展趨於成熟的今日,是讓 domain knowledge 得以 materialized 的世紀,可更快速且正確的導入,這是新的契機,也是新的挑戰:面對越來越「軟」的硬體,設計越來越需考慮複雜硬體的軟體,EDA 工具與開發流程的重要性也更加彰顯。Embedded.com 的新聞稿 [New C++ datatypes accelerate algorithm validation by 10X] 提到 [Mentor Graphics Corp] 的 [Algorithmic C Data Types]。

姑且不論新聞稿或網站提到的「神奇功效」,Mentor Graphics 主要是加強 C-to-RTL design,並在 ANSI C++ 的基礎上,建立一組 C++ template-based datatype description and implementation,這些 Algorithm C data type 最終會合成為硬體表示,同時為了彈性,Mentor Graphics 透過 C++ partialized template 的技巧,對一系列 fixed/floating point data type 做了包裝,這也允許透過 C/C++ 作更複雜的表示。
由 jserv 發表於 07:40 PM | 迴響 (0)

詭異的 sudo

今天更新 Ubuntu apt 後,發現一件相當詭異的事情:
    $ sudo su
    >>> sudoers file: syntax error, line 2 <<<
    >>> sudoers file: syntax error, line 16 <<<
    >>> sudoers file: syntax error, line 17 <<<
    >>> sudoers file: syntax error, line 17 <<<
    >>> sudoers file: syntax error, line 18 <<<
    sudo: parse error in /etc/sudoers near line 2
    
那把 /etc/sudoers 印出來看看:
    # cat /etc/sudoers 
    # /etc/sudoers
    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # See the man page for details on how to write a sudoers file.
    # Host alias specification
    
    # User alias specification
    
    # Cmnd alias specification
    
    # Defaults
    
    Defaults	!lecture,tty_tickets,!fqdn
    
    # User privilege specification
    root	ALL=(ALL) ALL
    jserv	ALL=(ALL) ALL
    
奇怪,用 sudo 好幾年,還是第一次發生這種怪事,似乎是不吃 '#' 當作註解,真詭異!
由 jserv 發表於 05:14 PM | 迴響 (2)

June 28, 2006

2006 年七月份預定的演講

週三晚上跟 [TimHsu] 賢伉儷共進晚餐,提到資訊安全相關的議題,也說到知識分享的想法,的確,面對當今瞬息萬變的資訊科技,想要引領前進,就需要披荊斬棘,特別是在沒有經驗時,更是常常陷入深淵與泥淖,而唯有透過一己之力,突破這些障礙,才得以品嚐知識的甘霖。即使是我這種不入流的工讀生,過去也花了很大的心力,去 hacking、去探索,才知曉些技術的皮毛,無論如何,這些經驗應該是很有價值的,更重要的是,應該廣泛的分享...

今年七月份,爭取到一整個月的休假,嘗試完成一些概念性的計畫、整理文件、寫書,以及作些心得分享 (按:這樣也叫做「休假」?我的生活比較單調,不然看倌也可多介紹約會的對象阿),預定的演講項目有:
  • 七月 5 日 - Debian@Taiwan IRC 線上研討會,題目:「Xorg 嶄新的硬體加速與效能提昇機制」,詳情可參考 blog [Debian@Taiwan IRC 與線上研討會] 與 wiki [IRCConf]
  • 七月 15 日 - StudyArea 演講,題目:「深入淺出 Hello World -- 理解 Linux 上運作 Hello World 的種種機制」,詳情可參考 blog [演講:深入淺出 Hello World -- 理解 Linux 上運作 Hello World 的種種機制 (台中場次)]
  • 七月 22 日 - 同上,地點為台南
  • 七月 ? 日 - XXX 演講,題目:「深入淺出視訊壓縮原理與相關規格標準」,廣泛介紹 MPEG-1/2、MPEG-4、H.264、WMV9/VC1、China AVS 等 Video coding,以及相關的 media container 與 transport stream format 等,不需要太深入的理科數學基礎,而是偏重概念的建構
  • 七月 ? 日 - XXX 演講:題目:「Keroro Desktop Environment / Desktop Invader 概念性介紹與系統設計」,這個... 不需要多說了吧 :P
以上每一項都可免費參加 (反正這些演講應該都很冷門,沒必要收費 *笑*),歡迎先進蒞臨指教,雖然簡報過程的時間不長,不過準備卻相當花時間,有的項目甚至花了一年,用在讀 spec、分析 implementation、改良效能瓶頸,以及比較個別規格的細部差異,但,完成的時候卻相當有成就感 :-)

準備要來迎接充實的七月假期了,呼!
由 jserv 發表於 11:47 PM | 迴響 (7)

June 25, 2006

服兵役,作為一個轉折點

昨天在 BBNS 的個人板看到他對於出國深造前,面對需要服兵役的焦慮文章,或許每個人對文字的體悟不同,多少可能曲解他的意思,不過我還是回覆了一篇文章,希望對他的心態調適有所助益。今天早上約莫在「戰管重點時間」前後就醒來 (按:空軍術語,至於其意涵與時間範圍,這裡賣個關子),順手整理昨天寫的文字:
    To BBNS,
    我以過來人的角度,給你一些建議。

    當然,我的人生歷練沒有你那麼豐富,我很少參加大型比賽,也鮮少思考過到國外進修與工作的議題,不過,我服過兵役。如果說當兵是浪費生命,那麼在外工作,若沒有飛黃騰達,何嘗不是一種生命的揮霍?我覺得當兵是一個很特別的機會,一個調整自己生活機能的轉折點,說不定,許多男人這輩子只會遇到一次的調整,試著用不同的角度看待這個社會,以及用不同的思維去體驗社會的百態。至今,我還記得以前士官長說過的話:「部隊就是一個縮小的社會」,一點也沒錯,而用一年多的兵役換對這個具體而微的社會,更深入的探索,豈非不是很值得的經驗?

    現在的役期不長,老實說一下子就過去了,重點是,能否在這過程中,用不同的心態去感受生命的價值。以前,我沒有想過,自己會在一群流氓、慣竊,甚至是殺人未遂的問題少年身旁,而,我在短暫的兵役中,有機會與他們接觸,我並沒有刻意去避開他們,相反地,如果要列出能影響我對這個社會看法的人物,他們絕對榜上有名,甚至,我得稱呼他們為老師。無數夜間值勤的任務中,我們必須彼此信任,深夜一點到三點,是人意識最薄弱的時間,就算沒有遇到超自然力量的干擾,不免也會對自己的軍旅生涯做出負面的看法,此時,同袍間相互扶持,就是這段時期最重要的力量,無論我以前是個高薪的軟體專案經理人,對方過去是個紀錄不良的社會分子,此際,我只知道,換上軍服後,我們的軍階相近,都得在深夜值勤,把任務做好,才是最重要的。

    或許,直覺上我們會遠離那些所謂的「社會黑暗面」,但,實地與他們生活後,才知道,每個破碎的家庭、每個社會案件,以及每個面貌相仿的人,背後都有段故事... 軍中不免會有所謂「鐵的紀律」,當然也會有繁複的訓練與勤務,但那些都是表面的,我認為最可貴的,還是人與人相處之道,這也是我在前面提到的「調整」。以我個人來說,求學過程相當順利,唸了所謂的名校,結識許多一流的人物,也在網路泡沫化的熱潮中,博取了可觀的收入,曾有一度,心胸是如此狹隘,除了搞電腦技術外,就是投資、投機,更可悲的是,將自己局限於象牙塔中,以為那就是自我應得的成就,然而這是多大的錯誤,殊不知,我與周遭已脫節甚久,紙醉金迷的我,最後還是在部隊中長期的沈澱,才尋找到自我。一直到最近,我才能釋懷,並寫下之前 blog [「創富」讀後] 的札記,當然比起官商勾結的醜態,我顯得清白許多,然而內心的貪念,卻隱蔽我的良知,而,讓我有機會好好的思考與反省,正是因為兵役,接觸到形形色色的人事物。

    我很高興,有機會徹底調整我的作息,不僅是生理,也有心理層面。是的,我在訓練中心,只是個微不足道的二兵,跟其他弟兄一樣接受嚴苛的訓練,身外滲出汩汩的汗水,內心淌著淚水,這是種磨練,也是種機會,在此之前,甚至不清處體能的極限以及其與精神面的共鳴,也因這等感受,讓我日後得以體驗 [語言的感動],仿效維根斯坦在服兵役期間苦苦思索、日後成就《邏輯哲學論》種種理論基礎,我體驗了三島由紀夫所說的「過了很久,我承蒙太陽與鐵的恩惠,逐漸學習了一門外國語,學習了肉體的語言。」。下部隊後,在花蓮雷達站與空管中心,我只是個不起眼的下士,再次,我調整了作息,更調整了生活的機能與態度,除了每天的值勤任務 (常常需要加班),另外強迫自己一到兩小時的閱讀與進修,剩下的時間,我花在閒聊,過去總有種身段或架子,主觀地否定某些人與物,而今,我們在同一條船上,身份是一樣的,現役軍人,唯有年資與階級的落差罷了,那些「老師」們,給我全然不同的感受,是此,我才得以跳脫昔日象牙塔的束縛,可笑的是,當時已經二十二歲的我,才初次知曉社會的百態...

    說了這麼多,似乎又離題了,BBNS 當然想成為一流的大人物,生涯規劃想必相當多采多姿,前程也不可限量,只是,我想說,去感受不同的生活方式,其實不見得是壞事。

    Good Luck!
既然談到兵役,早上用餐時瞥見之前因公殉職的空軍周中校的告別式報導,這裡引用我之前在六月 17 日寫的日記:
    F5E 與 F5F 的差異是,前者為單座,後者為雙座,是國軍目前最基本的戰鬥機,其餘 IDF、F-16,以及 M-2000 都是二代戰機,這裡一律稱 F5E/F 為 F5E。

    中午用餐時,瞥見一則新聞,是的,空軍又發生失事案件。在我入伍前,看到類似的新聞總沒什麼感覺,反正就是一場空難 (唉,為何我如此冷血?),然而,成為空軍的一份子、並服務於最前線的戰術管制聯隊,有幸看到台灣第一手的空防狀況後,做了很大的改觀。

    一直到現在,我還是得保留某些業務上的機密,說也有趣,至今仍常常徘徊於夢境。中午那則新聞,讓我驚訝的是,失事的空軍周中校,竟然是個我有印象的軍官,試想,737 聯隊[1] 那麼大、空軍總人數那麼多,所謂「鐵打的房舍、 流水的兵」,充其量,我也只能認得幾個軍士官,即便是點頭之交,都要算有緣份,而今,再聽到周中校時,竟然是在新聞報導中,一場失事...

    以前因擔任管制官助理士官,業務上會接觸很多機密,比方說夜班要彙整空軍戰演訓動態預劃表 (極機密),白天班則要核對訓練任務與基地狀態,有些飛官就是那個時期接觸的,也可以說,下部隊的一年半歲月中,是人生少數體驗了類似電影中的生活,那種繁忙不止的任務,而要說飛官是空軍最優秀的人才,一點也不為過,看到意氣風發的飛官們,總會心生嚮往。這次因為 F5E 執行 OL[2] 而肇事,的確少見,懷疑是鳥擊所致,讓這位飛行時數超過三千小時的資深飛官殉職...

    用餐完畢,向著南方的天空,做了舉手禮跟四十二歲的周中校致意。

    [1] 即空軍志航基地,其空軍訓練任務主要在台灣東部與中南部,在花蓮雷達站的管轄區域內。
    [2] OL 是轉場訓練的任務代字,是最基本的訓練項目
服兵役,作為一個轉折點,對我來說,相當重要,在此之前,我對任何軍事片興趣缺缺,也對台灣國防全無概念,也很難體會,生離死別是如此驚人,就如雷達光點之消失,優秀飛官之隕落,還有我知道八大行業背後的辛酸與苦衷,那些來自人民內心深處的吶喊與聲音,才是最寶貴的。而我也終於知道,那是踏出劃地自限的一大步,人各有志,每個人的成就也不同,每個人多少會犯下錯誤,然而僅以功過論人生,還是太偏頗了,這個轉折,讓我學會對人、對事、對物,最基本的尊重。
由 jserv 發表於 01:01 PM | 迴響 (2)

June 24, 2006

以 SVG 在瀏覽器中建立向量圖形

撇開 Microsoft IE 與 Opera 不看,剩下的瀏覽器核心很大部份是 Free & Open Source 軟體,分成兩大陣營:Gecko (Mozilla/Firefox) 與 khtml (WebCore, KDE),自 2003 年開始,都積極實做 [SVG] (Scalable Vector Graphics) 的支援,khtml 甚至在 2004 年底展開了 [KSVG2] / kcanvs 的計畫,並且隨著 W3C [ Mobile SVG Profiles: SVG Tiny and SVG Basic] 的制定,應用也延伸到手持式裝置或數位電視上,而,在 web browser 發展向量圖形支援與建立 logic binding 後,快速佈署於多元的終端設備,也成為目前的趨勢。

IBM AlphaWorks 有篇由 [Fourthought Inc.] 資深顧問暨共同創辦人 Uche Ogbuji 所撰寫的文章 [Create vector graphics in the browser with SVG - A step-by-step guide for incorporating SVG into Web pages and applications ] (PDF 格式),以淺顯易懂的方式,圖解 SVG 的應用範例,透過 Firefox 1.5 或 Opera 9 即可呈現,文中 [External SVG files referenced from XHTML] 與 [CSS in XHTML] 可發現 SVG core 與 DOM 互動的情況,不錯的文章。
由 jserv 發表於 04:21 PM | 迴響 (0)

ARM 收購挪威 Falanx

最近 IT 產業收購的動作頻仍,沒多久前傳出 Intel 有意收購 ATi 事業群的傳聞,而同樣重量級的 ARM 則在日前宣佈,收購 [Falanx] 這家耕耘於圖形影像處理多年的挪威公司,詳情可參考新聞稿 [ARM acquires Norwegian graphics company]。


[Falanx] 自 2001 年成立後,即以圖形影像處理的完整軟硬體解決方案,活躍於多媒體行動裝置領域中,其 SoC (System-on-Chip ) 解決方案為 Mali (中文該不會翻譯為「妙麗」吧?) 涵蓋 Video (MPEG4, H.264)、3D Graphics,以及傳統 2D Graphics,日前也通過 OpenGL® ES 1.0 / 1.1 的認證,去年的新聞稿 [Falanx Joins ARM Connected Community] 宣示成為 ARM® Connected Community 的新成員,廣泛提供軟硬體的 total solution,而過了半年後的今日,被 ARM 收購的 Falanx,局面會如何呢?ARM 的市場開發執行副總,Mike Inglis,表示:
    The graphics market for mobile, automotive and home applications, is increasingly important to ARM due to the rapidly growing usage of electronic devices with graphics capabilities; the estimated total available market for embedded 3D hardware is set to grow from 135 million units in 2006 to more than 435 million units in 2010. ... The acquisition of Falanx will enable us to build upon our existing graphics activity and to drive the adoption of feature-rich, multimedia embedded solutions with a complementary ecosystem for developers.
拭目以待 :-)
由 jserv 發表於 11:13 AM | 迴響 (0)

Ubuntu Edgy 的 libc6 + locale 終於回來了

「爺爺,您回來了!」

早上 apt-get dist-upgrade 後,不禁脫口而出。之前 [白老鼠小記] 提過 Ubuntu Development branch - Edgy 採用 gcc-4.1 + glibc-2.4,造成 locale 無法正確運作的問題,詳情可參考 [Bug #49113: locales problems with edgy libc6],今天終於解決了,引用 changelog.Debian 部份內容:
    glibc (2.4-1ubuntu6) edgy; urgency=low
    
      * debian/patches/series: Filter out belocs-locales-bin merge.
    
      * debian/patches/ubuntu/local-altlocaledir.diff: Update to working
        version.
    
      * debian/sysdeps/depflags.pl: Add tzdata as Recommends.
    
我終於可以正常工作了,賀!當個白老鼠真不容易阿,不過呢,這幾天陸續發現 gcc-4.1 與 glibc-2.4 的潛在問題,跟下個月的演講有很大的關聯性,還得繼續投入時間修正。
由 jserv 發表於 09:44 AM | 迴響 (3)

June 23, 2006

強化 Linux 網路安全性設計:引入 OpenBSD Cryptographic Framework

[6Wind] 這家嵌入式網路軟體公司日前宣佈,其新版的 embedded Linux networking stack 支援 OpenBSD Cryptographic Framework 與 MIPS64 硬體架構,詳情可參考新聞稿 [Linux net stack supports OCF crypto, multi-core MIPS64]。OCF (OpenBSD Cryptographic Framework) 是強調安全性見長的 OpenBSD 相當重要的設計,正如《Applied Cryptography》作者 Bruce Schneier 所說:
    The mantra of any good security engineer is: "Security is not a product, but a process." It's more than designing strong cryptography into a system; it's designing the entire system such that all security measures, including cryptography, work together.
安全性並非單一產品,而是,一種重要的程序,OpenBSD 的開發者在過去的 IPSec 經驗中,學習到必須將加密建設落實於應用程式與作業系統互動的等集中,是此,建立了 /dev/crypto 這個特別的 device driver,而應用程式 (如 OpenSSL) 可透過這個機制,直接存取到核心開放的安全性服務,從而構成 OCF 設計,詳細可參考 OCF 經典文獻 [The Design of the OpenBSD Cryptographic Framework]。而今,[6Wind] 宣佈將 OpenBSD Cryptographic Framework 實做於 Linux network stack 中,雖然尚未公佈 source code,不過可先來看系統架構圖: (click to enlarge)

就新聞稿的說法是,該公司目前實做 OCF 相容的 API,也就是圖片中橘色的部份,允許銜接其他硬體廠商的 IPsec hardware crypto-accelerators,這使得追求更高的安全性與充分發揮硬體加速,成為可行,並作為 OpenBSD 的高效能開放系統的替代選擇。
由 jserv 發表於 09:05 PM | 迴響 (2)

Character encoding auto-detection in Python

之前弄了 [charset-detector:自動偵測文件編碼的小程式] 之後,陸續有些朋友透過 email 與 IRC 指教,下午 Huahua 告知 [Universal Encoding Detector],這是一個用 Python 實做相同目的、類似演算法的套件,授權方式為 GNU LGPL,至於使用方式,網頁寫得很清楚。
由 jserv 發表於 05:59 PM | 迴響 (0)

繁體網上輸入法

之前 [Hyper Liu : Web-based 蝦米] 提過一個 web-based 輸入法的實做,昨天 [Pofeng Lee] 分享了他的 [ 繁體網上輸入法],這是修改自簡體的 [網上中文輸入法],這兩者都是拼音為主,實際使用的感覺還不錯 :-)
由 jserv 發表於 10:43 AM | 迴響 (0)

June 22, 2006

Heroes in My Heart / 數學家的故事

jfly 整理了北大未名 BBS ukim 連載的六十六篇文章「Heroes in My Heart 」系列,以更清楚易讀的方式呈現,可參考 [數學家的故事],另外還有一份 [PDF 版本],晚間,很耐心地拜讀後,只有相見恨晚的感受。二十世紀深有影響力的哲學家、數學家和邏輯學家、同時亦是活躍的政治活動家,並致力於哲學的大眾化與普及化的 Bertrand Russell 曾說:
    There was a footpath leading across fields to New Southgate, and I used to go there alone to watch the sunset and contemplate suicide. I did not, however, commit suicide, because I wished to know more of mathematics.
這席話觸動我的心弦,特別是對剛滿 25 歲的我,活到這把年紀,不得不自問:有什麼資格苟且存活於世?或許,全身器官捐贈相較於我的存在,遠具有鉅額價值,既然如此,何以,我存在著,作為一個獨立的個體?追尋世上任何一項真理!為此,我願意為數學與寰宇間的大學問而活。

每個數學家的成功除天分外,更令人欽佩的是,數學家完全忘我的瘋狂如自殺般的工作態度,H.Poincare 嘗言「數學家是天生的,不是造就的」,而唯有此等投入,才更能激發出其與生俱來的天賦。我最欽佩的數學家,是法國數學家 Evariste Galois,群論概念的主要開拓者,每過唸過數學的人,即使不懂群論,一定也對 Evariste Galois 的生平有深刻的印象,正如他說的「天才常遭受社會不公平的排擠,平庸的人卻反而處處得利」,他以超越當時技術水平的宏觀建構一系列新局面,並投身於激進政治活動... 往後,人們自《Revue Encyclopedique》讀到 Evariste Galois 最後的論文,這些在決鬥前夕撰寫的三十二頁紙,對近代的數學影響是如此重大。

並非每個人都可如 Evariste Galois 用短暫的二十一年歲月激起人類史上偉大的浪濤,事實上,更多數學家焚膏繼晷,以紙筆推演與紀錄其創見,為科學奠定穩健的根基。研讀 Riemann 幾何學,乍看實在不知是數學,抑或是哲學,然而其出發點卻是人類感覺極其自然的橢圓、直線,以及圓弧。Riemann 一轉過去直線長度無限的認知,改成直線長度有限但無起點與終點,就如球面的大圓弧一般,並由鈍角假定出發,發展成橢圓非歐幾何學,爾後,更思索及彎曲程度可處處不一的幾何空間,兩千年前阿基米德的平行公設,是其幾何學的基礎,似乎是人類感官的直覺呈現,然而非歐幾何的反撲,不啻以數學途徑進行了最嚴苛的哲學辯證過程,其影響力是何等巨大。

下筆之際,胸口仍隱約作痛,不過我很開心,我活著,腳踏在探索真理的路上,那條由人類史上數學家努力舖出的康莊大道。
由 jserv 發表於 09:20 PM | 迴響 (6)

大陸官員百態

傍晚找 AVS 相關資料時發現一段文字,從 [中国Linux公社 -viewtopic-AVS相关的资料拿到都很难] 最底下看到簽名檔,如此提到:
    官員是很少到街頭瓜攤買瓜吃的,因此為了「城市環境」可以取消所有瓜攤;官員是很少騎自行車上班的,因此有的城市為了保持轎車暢通取消了自行車道;有些官員是不需要排隊買房的,要麼有福利房,要麼可以特權購買,因此不惜以拉高房價刺激經濟,獲得政績;有些官員是不需掏錢看病的,大病小病花多花少都可以報銷,因此不惜對醫院「投入不足給政策」;有些官員的孩子上學是有特殊的門可走的,因此才可以說出「教育如衣服」的鬼話,甚至不惜鼓勵幼兒園「按家長捐款多少排隊錄取」。
    ——《新華網‧一言集》
短短幾個淺顯的文字,道盡大陸官員百態...
由 jserv 發表於 06:55 PM | 迴響 (3)

內建 Skype 的 IPTV

剛剛讀 LinuxDevices.com 的新聞 [Media browser Skypes couch potatoes] 發現 [Oregan Networks] 推出新的 media browser suite,將 IPTV、Media browsing,以及 Skype 語音服務整合進去,運作的畫面如下:

實在是很有趣的想法,看起來整合的效果也不錯,此外,也提供 DLNA (Digital Living Network Alliance,前身為 Digital Home Working Group) 的 media server 與 player 支援。由這些應用來看,Media Browser 作為一個普遍、通用性,以及高擴充性的平台,是另一波產品的趨勢。
由 jserv 發表於 11:16 AM | 迴響 (3)

June 21, 2006

OpenAVS 計畫開放 Subversion

之前的 blog [OpenAVS 計畫] 提到我正參與 China AVS (Audio Video Standard) 相關的計畫 [OpenAVS],現在已經開放 Subversion 作為版本控制系統,詳情可參考 [OpenAVS::Subversion]。中程的目標是整合進 FFmpeg,畢竟 AVS 整個演算法的實現,可利用既有的 decoder functions,不過目前的 cleanup 與 re-organization 還未進行完畢,另外,AVS 的 audio 部份規格應該已經定案,提交給 MPEG Standard 的程序還待進一步確認。
由 jserv 發表於 08:00 PM | 迴響 (2)

June 20, 2006

GNU screen 的 Unicode 修正 (更新)

之前的 blog [GNU screen 的 Unicode 修正] 提過 Tiberius 在 GNU screen 中做的 Unicode 補完計畫貢獻,littleshan 後來則在 blog [screen + Unicode-At-On] 做了更新,並且補上詳盡的介紹,值得一看。
由 jserv 發表於 10:02 PM | 迴響 (1)

演講:深入淺出 Hello World -- 理解 Linux 上運作 Hello World 的種種機制 (台中場次)

感謝 [Study-Area] 的老 jou 與 HaWay 協助安排,今年七月份,我會準備一場公開演講,詳情可參考 [SA@台中 七月份 深入淺出 Hello World],以下引用議程資訊:
    題目:深入淺出 Hello World -- 理解 Linux 上運作 Hello World 的種種機制

    主講人:Jim Huang (黃敬群 / "jserv"),熱血工讀生,閒暇時投入新酷音計畫、Free Java、GNU GCC、X Window System,以及相關自由軟體的開發工作。
    Website: http://jserv.sayya.org/
    Blog: http://blog.linux.org.tw/jserv/

    摘要:"Hello World" 大概是每種程式語言的介紹書籍第一個範例,人人會寫,可是又是如何運作呢?以 GNU GCC 靜態編譯後,動輒上百 kb 的執行檔是怎麼一回事? Free & Open Source的作業系統中,有著太多我們無從知曉的軟體,可是,我們似乎連簡單的 "Hello World"背後運作的原理也無從知悉,本議程即以高階與低階的角度,交叉分析在 Linux 上應用程式運作的原理,並探討如何將這些經驗應用於其他範疇。
    大綱:
    • "Hello World" 人人會寫,可是又是如何運作呢?
    • "Hello World" 與 ELF
    • 從 GNU Toolchain 看 "Hello World":動輒上百 k 是怎麼回事?如何應用 GNU 工具對 "Hello World" 尋幽訪勝
    • 以 "Hello World" 為鑰匙,揭開 Embedded Linux 重重布幕
    期望議程結束時,可建立以下基本概念:
    • 如何利用既有的工具,對 ELF 作分析 (讀 ELF document 是很消極的,應該要思考為何有 ELF 的設計,並利用其特性)
    • 基本低階處理
    • Know the facts: Symbols, Symbols, Symbols
    • 善用 GDB,尋幽訪勝
    • 對既有 Embedded Linux software stack 的反思
    備註:
    • 本議程在台中與台南各有一場,免費
    • 本議程以探討 x86 架構為主,至於針對 ARM 與 MIPS 架構的 training,請聯絡主講者作進一步安排
    • 事先提交問題,可優先解決與討論
    • 歡迎招待當地名產,講者該月休假 :-)
    時間:2006年 07 月 15 日(星期六) 13:30 休息時間視現場決定
    地點:清水國小(視聽教室) 清水鎮光華路125號
    費用:0 -
    報名網址: http://samc.study-area.org/
    地理位置/交通路線: 清水國小地圖
    離清水火車站步行大約十至十五分鐘。
    公車(巨業'台汽'岳達)台中往大甲,清水高中站下車。
因為台中是我最喜歡的都市,所以一邊休假,一邊作心得分享,而台南場次的內容大致會與台中場相似,就看當時的 feedback 決定。議程以 x86 為主要的硬體平台,涵蓋高階與低階、巨觀與微觀角度,對程式運作原理作探討,至於 ARM 與 MIPS 架構相關的討論或意見交流,也相當歡迎,不過安排在另外的 training 中 (available on demand),以上,請多指教,謝謝!
由 jserv 發表於 07:54 PM | 迴響 (0)

June 18, 2006

深入分析 Python 直譯器

Thinker 前輩抽出他當兵休假的寶貴時間,整理一篇技術筆記 [Notes of Python interpreter - by thinker],探討 Python 2.4.3c1 的內部實做。Python VM 作為一個實做物件導向語言的 stack machine,不免令人聯想到 Java VM 設計的規範,[Performance] 一節有談到 Python 內部如何透過 Dictionary 來改善 runtime reference 的效能議題,稍後也做了比較,以 primitive type 而言,有此語言設計的 Java 很顯然允許進一步最佳化的可能性。此外,Thinker 也談到 Python compiler 的設計細節,分析了 pycodegen.py,這些概念,對理解 Python JIT compiler [psyco] 有很大的幫助,可進一步參考 [Psyco::Documentation]。
由 jserv 發表於 04:22 PM | 迴響 (0)

FFmpeg 的 (free) VC-1 Decoder

之前的 blog [讓 MPlayer 支援原生WMV9] 嘗試整合 SMPTE 的 VC-1 (WMV9) Reference implementation 到著名的 MPlayer 中,因為裡面包含 non-free (授權不明) 的實做,所以一直未能被 upstream 收錄,不過也從中分析 VC-1 Decoding pipeline & algorithm。經歷多次的重寫後,Kostya Shishkov 在 FFmpeg-devel 提出 [RFC - VC-1 I-frames decoder],就是他初步的實做,用以取代 FFmpeg 原本的 vc9.c,我修正一個小錯誤後,就可以正常運作了,可取得 [ffmpeg-vc1.patch.gz],apply 到 FFmpeg 的 svn head 後,重新編譯即可透過 ffplay 播放 WMV9 檔案。

Kostya 重寫的版本有很多最佳化空間,標示為 @fixme 的部份都有待進一步處理,視訊方面限 I-frame 與部份 P-frame,但至少開始可播放 Basic Profile 了。
由 jserv 發表於 01:22 PM | 迴響 (0)

June 17, 2006

Ubuntu 孃陪你開 Party

[Ubuntu Linux] 在六月上旬釋出最新的 Dapper (6.06),[Ubuntu@Taiwan] 與 [TOSSUG - 台北開放原始碼軟體使用者社群] 共同規劃了 Ubuntu Taiwan Installfest 的活動,在 #ubuntu-tw 相當活躍的 zeelot 大姐擔任此次的總籌,並將籌備工作的紀錄做了 blog [Ubuntu Taiwan Installfest - 台灣 Ubuntu 安裝慶典,屬於你和我的慶典!]。話說回來,這年頭沒有帥哥美女的活動,實在難讓人有興趣,所以 zeelot 姐就「下海」成為「Ubuntu 孃」,而下午我無聊做了一張廣告:

圖中那位美女就是 zeelot,這下有動力參加了吧 (*笑*),還等什麼呢?Ubuntu 孃陪你開 Party,幫你在電腦中安裝熱騰騰的 Ubuntu Dapper,還有真人講解唷,除了美美的 zeelot 姐外,當然有 [Ubuntu@Taiwan] 的核心成員出席與會,歡迎交流。

如果沒意外的話,當天我也會參加,談談之前在 blog [Desktop Invader 概念展示] 與 [Keroro Desktop Environment] 的設計想法與展示,說不定細節敲定後,就可正式成立專案計畫。當然,中文輸入法相關的議題也歡迎討論,七月份休假期間,應該會比較有空來處理,謝謝!
由 jserv 發表於 10:48 PM | 迴響 (4)

狡詐的文字

大約從去年開始,我試著閱讀日耳曼血統作家的著作,而尼采的「如詩的哲學、如哲學的詩」更讓我有魂牽夢縈的感受,他巧妙運用德文歧異性的詞語,乍看平實,卻又語帶雙關地歌頌與嘲諷著,這生命浪漫的投身。詩人的創作多元,「狡詐的文字」是其重要的手腕,舉例來說,名為〈Die krumme Nase〉的詩:
    Die Nase schauet trutziglich In's Land, 
    der Nüster blähet sich - 
    Drum fällst du, Nashorn ohne Horn, 
    Mein stolzes Menschlein, stets nach vorn! 
    Und stets beisammen find't sich das: 
    Gerader Stolz, gekrümmte Nas.
    
中文翻譯相當平實,但德文原文卻饒富趣味:德文 Nashorn 的意思是「犀牛」,是由 Nase (鼻) 與 Horn (角) 兩字組成,取其「鼻上有角的動物」之意。再回來理解該詩的意思:
    〈歪斜的鼻〉
    鼻頑固向下窺探大地之底端,
    孔鼓脹噴氣著 —
    失去頭角的犀牛,竟已跌落其中,
    充滿傲氣的小人,你的面容已撲地粉碎!
    筆挺的驕傲與歪斜的鼻,
    兩者總是如這般,相隨而至。
    
於是乎,我們看到詩人用「狡詐的文字」,諷刺充滿銳氣,如尖角一般的驕傲,不可一世,然而,瞬間跌入深淵,徒留其歪斜的面顏,以 Nashorn 作為具象的表示,尼采文字上的技倆實在高明。

這首詩出自 1882 年再版的《Die fröhliche Wissenschaft ("la gaya scienza") 》的序言〈Scherz, List und Rache — Vorspiel in deutschen Reimen〉中,而書名本身就充滿狡詐。之前的 blog [搜尋技術的進步對於郵件與桌面系統的衝擊] 引用過知名數學家 David Hilbert 在國際數學會議的開場白,他用到 "Wissenschaft" 這個德文詞語,即學問、科學一類較為抽象的意含,該書的書名翻譯成「歡樂的學問」,旨意為以活潑的文字去除學術的種種嚴肅,序言標題就更有意思了,中文翻譯是「玩笑、狡詐,與報復 — 德文詩韻序曲」,行文中不少很難理解為詩的格言體裁內文,更不乏有「狡詐的文字」,以及展現德文作為詩歌韻文的優雅,這些短句或詩歌體,可視為尼采思想的素描。
由 jserv 發表於 04:33 PM | 迴響 (1)

June 16, 2006

透過 GCC 作 Call Graph 視覺化輸出

Call Graph 對於理解一個中大型的軟體計畫有很大的助益,以 static analysis 來說,基本上就是做了編譯系統前半段的工作,然後依據特定條件與需求,建立圖形結構,[ncc] 就是這樣的工具,引用其網頁說明如下:
    ncc is a compiler that produces program analysis information. ncc is a decent replacement of cflow and cscope able to analyse any program using the gcc compiler. The program also incliudes a graphical call-graph navigator and source browser which is extremely practical for hacking and comprehending large projects.
如果要進一步以視覺化呈現,可參考 [CodeViz],這個專案很有意思,修改了 GCC 的 cgraph_analyze_function 以輸出額外的資訊,然後再以 Perl 撰寫的程式呼叫 GraphViz 作圖形化。以 GCC 3.4 branch 的 gcc core 為例,可得以下視覺化輸出: (部份)

以上是關於 GCC internal_dfa_insn_code 相關的 Call Graph,程式也允許過濾特定 function,或標注等操作。我試著將 GCC 修改的部份弄成 GCC flag,可取得我的修改 [gcc-3_4-code_graph_generation.patch],開發對象是 GCC 3.4 branch,不過應該 3.4.x 都可適用,該 flag 為 "-fcode-graph-generation",編譯時期加上後,會額外輸出 .cdepn 檔,用以表示 Call Graph。至於 Perl 的部份,我弄了一個 [簡化的版本],因為我不懂 Perl 正規的打包方式,所以用了很笨的方法寫 Makefile。
由 jserv 發表於 11:25 PM | 迴響 (1)

June 15, 2006

EZFB/LaserBoy 以及美妙的 Linux 多媒體

介紹 [EZFB Linux Framebuffer API] 與 [LaserBoy] 之前,說些故事。

Linux 的世界總是充滿驚喜,讓我印象深刻的例子頗多,比方說,幾年前有人說:「既然我把 Linux 當作 networking server 應用,Video RAM 對我來說沒什麼意義,是不是可以把 Video RAM 拿來當作 swapping / buffer 來用呢?」,理論上可行,不過實務上似乎很少看到,但是沒多久,某位仁兄就在 LKML 上面張貼 patch,而且還能運作。隨著電子裝置的進步,Linux 應用的觸角也逐漸伸展到傳統自動控制領域中,因為案例很多,這裡就不贅述了。

Linux kernel 2.2 之後,引入 Graphical Framebuffer 的機制,也實做了 fbcon (2.6 後有新的設計),同一個時期,3D Acceleration 的機制初步在 Linux 上實現 (最早於 3dfx 於 user-space 的實驗性機制),多媒體的應用可以說是爆炸性成長,現在連 SONY PlayStation 系列都採用 Linux 了。在 Linux 上面開發應用程式,或者對 kernel 作延伸修改,的確不是很容易的事情,捫心自問:多少夜晚都在浸淫於 hacking 的快感與苦楚中度過?不過,正因為這種痛苦,往往將深度帶給我們,很多時候,Linux 平台上總是會激發出許多不可思議...

看到某公司的 Projector Phone 正確無誤地打出影像,近來的系統甚至可播放影片與多媒體資訊,心頭總是有種說不出來的感動,只能說,Linux 能做的事情太多了,然而,有時候不免會懷疑:多媒體的建設與規格都發展成熟,無論是行動裝置、數位廣播,還是數位家庭等,還會有什麼新花樣呢?我的想像力很有限,不過,如果您的手機除了通訊外,在需要作簡報展示或打發時間之際,稍微動一下就可以拿來當投影機,絢麗地呈現,難道不是很有趣的感受嗎?[LaserBoy] 是另一個特別的計畫,這個計畫的簡介是:
    Linux Laser Projector
使用 Linux 的雷射投影機?乍聽之下,不免心生詫異,但是既然技術上都可行,那麼,"Why not?",以下引用網頁介紹:
    LaserBoy is a Linux console / frame buffer application that can open, manipulate and save DXF, ILDA and WAVE. ... LaserBoy also includes a working implementation of 24 bit color tables.

    LaserBoy can translate laser vector art into standard, 48KHz, 16 bit, multi channel Microsoft RIFF WAVE file format and play those files with independent sample shifts between the channels for proper time alignment between the scanners and the color modulation devices (per color).

    Waves made with LaserBoy can be played from any surround sound card in any OS. LaserBoy can open its own generated wave files and convert them back into vector art.

    LaserBoy provides a full set of points optimization routines including distance spanning, corner dwelling and the ability to minimize total points distance by rearranging the order and direction of lit segments within a frame.

    With a DC modified 8 channel sound card and some outboard electronics, LaserBoy is currently outputting full motion, 16bit X, Y position, 24 bit RGB color projections at 48 thousand points per second. Creating waves of any integer sample rate is possible. 48KHz is only a limitation of the sound card that I am currently using.
簡單來說,James Lehman 的 [LaserBoy] 計畫就是建立一個機制,讓向量雷射圖樣得以透過 Microsoft RIFF WAVE 格式作為保存與交換,也可以作圖樣的呈現,在控制取樣率與相關的視訊參數前提下,令人感動的美妙畫面就呈現了,例如網頁提到以下的效果: (click to enlarge)

Linux 的吉祥物 Tux 的畫面看起來有交錯的感覺,就是因為光學成像的控制,可參考 [實際運作的錄影] (MPEG-2 格式),[LaserBoy] 網頁有更多美妙的展示,而,要建構這樣的圖樣,就需要一個 Graphical Toolkit,Linux Framebuffer 提供了最基礎的驅動與邏輯上的畫布,[EZFB Linux Framebuffer API] 則是作者為了簡化開發,提出一套易用的 API,其 [概念介紹] 提到為何需要重新設計這樣一個 Toolkit 的原因:
    EZFB provides control of multiple video cards within the same system.

    EZFB offers exceptional control of colors, including palette cycling, the ability to display all or portions of bitmap files anywhere on the screen, with automatic color depth conversion, the ability to capture all or portions of the screen to bitmap files, an 8x8 bitmaped font to print to the screen, routines to draw points, lines, outlined and filled rectangles and much more!
實在是很有意思,[EZFB Linux Framebuffer API] 用以控制多張 video card,然後因為針對雷射投影作量身打造,提供許多基本與進階的圖樣處理機制。因為這個計畫實在太吸引我了,剛剛用了不少時間作測試與評估,發現建立的 matrix 與 transform 運算量頗大,所以反應速度沒有想像中的好,但是效果的確驚人。

Linux 未來的多媒體應用會如何呢?自己動手來決定吧 :-)
由 jserv 發表於 11:02 PM | 迴響 (1)

freestanding

* 速記,所以可能沒有條理 *

傳統的 C compiler 設計中,很明確的區分 function call 與 C preprocessor 影響層面的分野,不過,隨著編譯系統最佳化的多樣性,在實做層面都得引入新的機制,比方說之前 blog [C99 的 offsetof macro] 就提到這方面的語意是透過 GCC builtins 來實現,blog [善用 GCC builtins 實現 Vectorization] 則提到 GCC 針對 SIMD 設計與 vectorized instructions 的支援,Linux Kernel mailing-list 的討論 [compile with -ffreestanding] 中,Andi Kleen 提到新版的 GCC 會透過 builtins 來達到最佳化的處理,在 GCC flag -funit-at-a-time 指定時 (-O3 implies),原本的:
    sprintf(buf,"%s",str)
在 front-end 會被改寫為:
    strcpy(buf,str)
printf 本身就是一個小型的 interpreter,所以 GCC 的作法就是簡化複雜度,這對一般情況下是 正面的,不過涉及 function rewriting 的議題,對 Linux kernel 或設計一個作業系統核心來說,就是一個潛在的問題。是此,GCC 提供一個 flag -ffreestanding,該 flag implies flag -fno-builtin,並且對於 main 作為 entry point 沒有特別的限制要求,這是 GCC Manual 的說法,看起來的確抽象至極。之前的 blog [Orz Microkernel] 提到我今年七月份會有場演講,題目暫定為「深入淺出 Hello World -- 理解 Linux 上運作 Hello World 的種種機制」,細節稍後會公佈,主要就是探討人人會寫的 "Hello World" 程式,在 Linux 的 kernel-space 與 user-space 運作的交互作用,即便是這麼簡單的應用程式,背後都有很大的學問,而剛剛提到的 flag -ffreestanding 就是其中經典的細節。預設情況下,hosted environment 之下所有的 Standard Library 都可使用,C Programming Language 的 main function 作為邏輯上的 entry point (之所以說「邏輯上」,因為真實情況下,LD scripts 造成的影響是很大的) 其 symbol signature 以 nm 觀察:
    $ nm -f posix helloworld  | grep main 
    __libc_start_main@@GLIBC_2.0 U         
    main T 0804b26c 00000153
    
其 prototype 為接受兩或三個 argument 的 int 傳回型態,然而,在相對的 freestanding environment 中,並沒有 Standard Library,而且沒有特定的 entry point,這種特別的情況對 kernel 或 firmware 設計來說,是必要的,一般我們會在 C 語言實做的 kernel 或 firmware 中實做簡化的 C Standard Library,其語意與 C89 / C99 的規範可能會有出入。至於如何區分 hosted 或 freestanding environment 呢?前者,也就是預設的組態下,會定義 __STDC_HOSTED__ 的 macro, 在講求可攜性的 NetBSD 中,其 kernel 很明確指定該 flag,不過這也抑制一些可能出現的警告 (TODO: details),此外,可參考 lkml 的討論 "[PATCH] C undefined behavior fix" [by jtv]、[by Tom Rini],以及 [by Joe Buck]。
由 jserv 發表於 04:08 PM | 迴響 (4)

Cairo 1.1.8 的突破

之前的 blog [實驗性的 Cairo 直式排版] 提過對岸知名的 FreeType / Cairo hacker,sunmoon1997,做了些中文方面的改進,而他目前也成為正式的 committer,所以日後不必再抱怨 [Cairo] 中文支援不好了。

cairo-1.1.8 已經進 Edgy (Ubuntu development branch),包含了 sunmoon1997 的成果,而之前 hlb 提到「因為字型 baseline 之類的關係嗎?直線對齊有點歪歪扭扭的」的問題,也修正了,所以用我之前改的 [範例程式] 原封不動的重新編譯後,執行畫面如下:

對照原本的呈現效果:

cairo-1.1.8 改善頗多,不過,Uming 字體感覺還是有沒完全對齊的小遺憾,晚點來試試看 git 的版本。
由 jserv 發表於 12:38 PM | 迴響 (4)

June 14, 2006

老玩意:Linux Counter


記得小時候玩 Linux,常常會看到 [Linux Counter],甚至被拿來作為寫報告的題材。找了舊信,看到 bv1al (阿里巴巴) 張貼的訊息 [去 Linux Counter 登錄一下吧 !],而我也有一個帳號 [User #268471],其實還有更早的,不過小時候連同 email 帳號都搞丟了,作罷,之所以會提到這個,是因為剛剛整理電腦的檔案,發現一個用以更新 Linux counter 的 script,懷舊一下。除了用來寫報告外,[Linux Counter] 主要的功能還是用以劃分地域,比方說可以找 [Linux users in 臺北市 - Taipei City],下筆同時,有 83 位註冊 Linux 使用者,當然,想也知道應該是這個數字的好幾倍才是 :P
由 jserv 發表於 11:24 PM | 迴響 (2)

你最喜歡的 ... 是什麼?

休假的某日,騎單車到某家早餐店用餐,攤開桌上的《蘋果日報》,瞥見以下的小品:

取自 [Working Daze] ,《蘋果日報》提供中文翻譯:

對話內容為約會的場合中,男方問對面的女子:「妳最喜歡的程式語言是什麼?」,這個令人咋舌的問題,讓對面的女子無所適從,所以很快就離席了... 而第二張的對話就相當經典,擇偶的條件可有很多種,不過要如此精確,是否徒增困擾呢?

自從我開始寫 [告別,不是遺忘] 與 [我所見的愛情] 一類的札記後,與其說受傷,不如說是新機會,也就是學習與反省。而這段期間,身旁的朋友也開始介紹些異性朋友,甚至,還因以文會友認識了幾位,不過我一直不是很積極。

認識朋友最簡單的方法大概就是透過 MSN Messenger 一類的通訊軟體,用 email 魚雁往返也很方便,不過很顯然,我寧可掛在 IRC channel 上跟一群男人談談技術或雜項議題,卻也少在網路上跟異性搭訕,主要原因是,需要重複自我介紹,往往沒什麼話題。感謝學長、朋友,還有長輩們的安排,陸續跟幾位女性友人約了飯局 (或稱「相親」也行),但實際情況往往比在網路上更糟,至少我在網路上還可以扔個 URL 給對方,請他們自己看 (願者上鉤?),而面對面呢?大概就只能發呆了。

「興趣」大概是初次見面一定會被問及的項目,我通常就回答「理性批判、社會主義、群論與橢圓曲線、近代史、電腦科學」一類,然後對方即一臉錯愕,要我說簡單些,我只好用淺顯又偏頗的說法回應:「哲學、共產革命、數學、歷史,寫程式」,然後的情況,大概就知道了... 沒辦法,興趣就只有那幾項,難不成我要談之前的 blog [專利,作為驚人的產品] 與 [萬古千秋不斷情],跟對方說,我最近的興趣是連續觀賞三級片,由 motion vector 中思索四元數與視訊壓縮(?!),以及,無聊沒事幹就騎淑女車外出撿垃圾 (?!)。可以想見,肯定比上面的漫畫還糟糕。

如果我主動問呢?大概像是這樣...
  • 「喜歡歷史嗎?」「還可以」「有興趣談談寧漢分裂對當時中國共產黨局勢的改變嗎?」「這...」
  • 「喜歡哲學嗎?」「不懂」「那讀過尼采的文字嗎?」「有」「那你認為,尼采對人類作為一種『超獸』...」「好啦,別說了,我沒興趣」
  • 「喜歡數學嗎?」「呃... 我有事先走了」
  • 「喜歡電腦嗎?」「還可以,對了,可以幫我修電腦嗎?」「不好意思,我玩電腦十幾年,從來沒有拆過或組裝過電腦」「啊?!」「我只設計軟體,頂多接觸用來設計硬體的軟體」「這...」
唉,我就是如此無趣,也非故意刁難,有時候要找到共通的話題,實在相當困難,畢竟每個人都是獨立的個體,或許,「妳最喜歡的 ... 是什麼」本身就不是好問題。寂靜的夜晚,一邊手持書卷,一邊自嘲,原來我竟然有閒聊方面的障礙,而其貌不揚的我,還是乖乖待在住所工作,別出門嚇人阿。
由 jserv 發表於 12:18 AM | 迴響 (11)

June 13, 2006

以 Auto Tuning 加速 NcFTP 傳輸

[package::ncftp] 是歷史悠久而知名的 FTP client,目前的版本號為 3.1.9,而我剛剛試著將 NLANR 的 [Auto Tuning Enabled FTP Client And Server] 移植過來,有興趣的朋友可取得我的修改 [ncftp-3.1.9-autotuning.patch]。

這個修改的原理可參考 [Enabling High Performance Data Transfers],其出發點為 BDP (Bandwidth Delay Product),引用 [提高 Linux 上 socket 性能] 的說明如下:
    TCP 的性能取決於幾個方面的因素。兩個最重要的因素是鏈接帶寬(link bandwidth)(報文在網絡上傳輸的速率)和 往返時間(round-trip time) 或 RTT(發送報文與接收到另一端的響應之間的延時)。這兩個值確定了稱為 Bandwidth Delay Product(BDP)的內容。

    給定鏈接帶寬和 RTT 之後,您就可以計算出 BDP 的值了,不過這代表什麼意義呢?BDP 給出了一種簡單的方法來計算理論上最優的 TCP socket 緩衝區大小(其中保存了排隊等待傳輸和等待應用程序接收的數據)。如果緩衝區太小,那麼 TCP 窗口就不能完全打開,這會對性能造成限制。如果緩衝區太大,那麼寶貴的內存資源就會造成浪費。如果您設置的緩衝區大小正好合適,那麼就可以完全利用可用的帶寬。

    下面我們來看一個例子:
      BDP = link_bandwidth * RTT
    如果應用程序是通過一個 100Mbps 的局域網進行通信,其 RRT 為 50 ms,那麼 BDP 就是:
      100MBps * 0.050 sec / 8 = 0.625MB = 625KB
    注意:此處除以 8 是將位轉換成通信使用的字節。因此,我們可以將 TCP 窗口設置為 BDP 或 1.25MB。但是在 Linux 2.6 上默認的 TCP 窗口大小是 110KB,這會將連接的帶寬限製為 2.2MBps,計算方法如下:
      throughput = window_size / RTT
      110KB / 0.050 = 2.2MBps
    如果使用上面計算的窗口大小,我們得到的帶寬就是 12.5MBps,計算方法如下:
      625KB / 0.050 = 12.5MBps
    差別的確很大,並且可以為 socket 提供更大的吞吐量。因此現在您就知道如何為您的 socket 計算最優的緩衝區大小了。
而 Auto Tuning 的作法就是適度重新評估 throughput 並調整 BDP,並考慮以下項目:
  • TCP Selective Acknowledgments (SACK, RFC2018)
  • Large Windows (RFC1323)
  • Maximum Buffer Sizes on the host
  • Application Buffers
  • Path MTU
感謝 freeflying 剛剛在 #ubuntu-tw 的指點,我打包好 Debian/Ubuntu package,可 [取得測試],注意,因為用到 getsockopt 的進階設定,所以執行檔有 setuid。

要使用 Auto tuning 作 FTP 傳輸的加速,只要在原本的指令加上 "-O" 的選項,比方說原本是:
    ncftp -u <user> <server_ip>
現在改成:
    ncftp -u <user> -O <server_ip>
或者在 NcFTP 的 CLI (Command Line Interface) 中,在指令後面加上 "-O",如原本:
    > get filename_1
換成:
    > get -O filename_1
即可驅動本加速處理。
由 jserv 發表於 03:25 PM | 迴響 (0)

Squish 3.0 推出

之前的 blog [Squish -- C++/Qt 應用程式的測試套件] 提過 [froglogic] 公司針對視覺化應用程式類型的自動測試整合開發環境,LinuxDevices.com 的新聞稿 [GUI testing tool gains web app, tcl/tk support] 提到現在已釋出 Squish 3.0 新版本,詳情可參考 [New in Squish 3.0]。

在 Squish 2.0 時,是以 Python script 來對 Qt/C++ 應用程式作 widget level 的自動測試,也就是 Squish/Qt,而 3.0 版則引入更廣泛的支援,包含 Squish/Web 與 Squish/Tk,而內建的 script engine 也不限定於 Python,Tcl 與 JavaScript 也加入支援的行列。Squish 最強大之處,除了對 AUT 的深入支援,最重要的就是其 Spy/Debugger,可很便利地插入 verfication point,然後在 IDE 可清楚看出 GUI Object Identification 並作 Data-driven testing。
由 jserv 發表於 08:52 AM | 迴響 (0)

Linux/x86 開機流程:自 MBR 到 init

之前提過 [淺談 x86 開機流程] 與 [x86 與 non-x86 開機程序比較],文後的參考資料也可以找到頗多相關的 x86 bootstraping 資料 (還記得在泥濘的地上綁鞋帶的故事嗎?),不過寫得易懂的文章不多就是。M. Tim Jones 寫了一篇簡要但觀念清楚的好文章 [Inside the Linux boot process],探討 Linux booting sequence 中,自 MBR 一路開機到 Linux 第一個 user-space process 的過程;

不過比較可惜的是,這類的文章感覺還是太枯燥了,也鮮少有「尋幽訪勝」的美妙歷程,其實最好的方式,就是透過 bootable debugger 來理解系統運作的機制,比方說可使用 [ProDebug],這是個 Protected mode bootable debugger。
由 jserv 發表於 06:12 AM | 迴響 (0)

June 12, 2006

Debian@Taiwan IRC 與線上研討會

閱讀過 [Debian Weekly News - 06 June 2006] 的朋友,應該就知道「Debian IRC 移至 OFTC」的新聞,詳情可參考 [Debian IRC Network moves to OFTC],而 Debian@Taiwan 也跟進了,kanru 則改良他的 bibot 機器人,讓原本 FreeNode 的訊息得以互通,對 #debian-zh 亦然。

此外,在此也提醒,本年度第一場的 IRC Conference 即將展開。時間訂於下個月 5 日,詳情可參考 wiki [IRCConf],以下摘錄相關資訊:
    *  時間: July 5, 2006 (週三) 20:00-21:30
    * 地點: #dot OFTC 請參考 IRC,注意「不是 FreeNode」
    * 題目: Xorg 嶄新的硬體加速與效能提昇機制
    * 主講人: User:jserv
    * 方式:
          o 純文字介面 irc,UTF-8 編碼正體中文。
          o 自由發言、提問題。
          o 請勿使用注音文。 
    * 大綱:
    - X Window System 的 Transport 效能與改善議題
    - 2D Rendering 的突破
          o XFree86 4.x 的 Render extension
          o XAA 與其限制
          o 嶄新的 EXA 與設計概念 
    - 3D Rendering 與 DRI
          o 探索 3D Rendering 模型
          o 既有硬體加速機制
          o 迎向未來:Xgl 與 AIGLX 
    - 實做層面的效能提昇 
    
這是延續我過去幾場的演講與心得分享,主題較為進階,不過跟 X Window System 的實務應用與組態設定有很大的關聯,歡迎蒞臨 IRC 指教,如果無緣參與的朋友,會議後也可參考 [IRCConf 會議記錄],謝謝!
由 jserv 發表於 10:47 PM | 迴響 (0)

June 09, 2006

白老鼠小記

傍晚無聊就把 Dapper 升級成 Edgy,沒辦法,名字太誘人了,讓我就成為白老鼠了。libc6 升級到 2.4,連 Debian experimental [libc6] 都還在 2.3.999.2-4,而剛剛竟然忘記比對版本號就 upgrade 了,只能說後悔莫及,locale data 都出問題了...

既然變成白老鼠,看來也只好去搞清楚是怎麼一回事,順便追一下 glibc-2.4,我試著重建 packages,然後用一個 workaround 處理掉遇到的問題,還不知道是否會發現新毛病。結論是,平時就要作功課,然後不要一邊看 HBO,一邊升級系統 (滿滿的 Orz)。
由 jserv 發表於 10:01 PM | 迴響 (7)

XOrg 全面切換至 GIT 作專案管理

之前的 blog [XOrg 的 Xlib 改用 git 管理專案開發] 提到 XOrg 領導人 Keith Packard 宣佈 X11R7.1 後的版本控制系統會從 CVS 移向 git 分散式版本控制系統,當時已經成功移轉 xlibs。幾天前,他終於宣佈 [X server migrated to git],而之間已經有許多 X utilities 與 X Extensions 從 CVS 移轉到 git,一些想法討論可參考 [Thinking about migrating xorg/xserver from CVS to git] thread。

看來許多我感興趣的專案,比方說 Linux kernel、XOrg、Cairo,以及 Jato,都使用 GIT 作為專案管理,Great!
由 jserv 發表於 12:24 PM | 迴響 (0)

又來一場車禍

休假中的週四下午,秉持之前 blog [萬古千秋不斷情] 提過今年的另一個計畫:撿垃圾,騎腳踏車到民權東路,找片雜草地停車撿垃圾,雖然胸口還是很不舒服,不過作點勞動可分散注意力,也就沒那麼在意。傍晚回內湖的路上,原本滿心喜悅的,心想:至少撿了些垃圾,像我如此無能的人,還是能在最小程度作點環境保護... 突然間,跟一輛轎車擦撞,在我還沒來得及反應時,肇事車早已逃逸,說是一場車禍,其實也還好,只是車前的置物籃受損:

上圖是兩個月前拍的,那時候只損壞一側,而今天已經變成兩側損壞,不忍心拍照貼出來。唉,摸摸鼻子認了。週三跟 Ally 聊天的時候,她才好奇問到我出車禍的機會似乎很高,沒想到週四就被 kiss 到 (這個用詞真傳神)。

Anyway,正因台北交通狀況不理想,所以我還是要繼續騎淑女車,一面秉持環保,一面作無言的抗議,至於肇事的車輛,我只希望下次別再碰到這台「螳螂擋車」的淑女車了。
由 jserv 發表於 01:36 AM | 迴響 (3)

學習數學的態度


數學是全世界的大學問,不過不拘泥於形式、而能體驗其精神,實在需要天份外加不懈的努力。以下引用《周髀算經》在〈卷上之一〉的原文:
    昔者周公問於商高曰.竊聞乎大夫善數也. 請問古者包犧立周天歷度. 夫天不可階而升.地不可得尺寸而度. 請問數安從出.商高曰.數之法.出於圓方. 圓出於方.方出於矩. 矩出於九九八十一. 故折矩. 以為句.廣三. 股修四. 徑隅五. 既方其外.半之一矩.環而共盤.得成三四五. 兩矩共長二十有五.是謂積矩. 故禹之所以治天下者.此數之所生也. 周公曰.大哉言數. 請問用矩之道.商高曰.平矩以正繩. 偃矩以望高.覆矩以測深.臥矩以知遠. 環矩以為圓.合矩以為方. 方屬地.圓屬天.天圓地方. 方數為典.以方出圓.笠以寫天. 天青黑.地黃赤.天數之為笠也.青黑為表.丹黃為裡.以象天地之位. 是故.知地者智.知天者聖. 智出於句. 句出於矩.夫矩之於數.其裁製萬物.惟所為耳. 周公曰.善哉.
先談談這本書,《周髀算經》自古即被列入《算經十書》之中,而古代數學很不受重視,甚至被歸類於卜筮之流,而士大夫又忙著「文人相輕」筆戰不止,無暇詳研數學類的經典,搞到最後,不少古代中國之科學性突破往往失傳不復存在。

《周髀算經》一開頭的這段,藉由周公請益商高勾股定理 (也就是後來的「畢氏定理」) 與測量方式,還論及天體經緯的規律,其實可看出,《周髀算經》與其說是算術經典著作,還不如說是探討學習數學的態度與培養宏觀的思維,這些交談與論述,給予人極大的啟發,這也難怪周公直說:「善哉」,也就是出自「聽君一席話,勝讀十年書」的感嘆。

延伸閱讀:
由 jserv 發表於 01:11 AM | 迴響 (0)

June 08, 2006

GNU Classpath 引入 JDK 1.5 全新的並行機制

葉秉哲博士在兩年前的 [Sun 2004 年 Java2 專業技術大會] 精湛地解說 [JDK 1.5 全新的並行機制],很多與會的開發者則因這個場次而釐清 Java 同步觀念,可惜我當時沒參加,這裡節錄議程介紹,回顧一下:
    JDK 1.5 新增的各種功能當中,全新的並行機制是較少人知曉的一環。但正如此機制主要設計者 Doug Lea 所言:只要你的程式會用到 wait/notify/notifyAll、synchronized、Thread 等功能,都該考慮改用新引進的 java.util.concurrent 系列設施。

    究竟這只是廣告詞呢,還是真有其事?

    此套件自 1998 年公開發表 1.0 版起,歷經數年的實戰考驗,孵出了一本書,訂為 JSR 166,進而成為 JDK 1.5 的一員。它涵蓋較先進的執行緒管理、鎖定、並行通訊及控制等功能,也針對既有的容器類別修整一番。

    本講座先介紹 Java 並行程式的原理,探討傳統方式的限制,再以實例逐一示範新的解決方案能在便利、效率、安全上帶來什麼樣的提升。
為了 JDK 1.5 (Java 5) 種種大幅度的改進,Free Java 的核心計畫 GNU Classpath 做了許多因應,比方說 Generics branch 就專注於 JDK 1.5 generics 與 ABI 的部份,而全新的 Java concurrent model,也就是 [JSR 166],也是一項重點。GNU GCC Java language frontend mainatiner - Tom Tromey - 日前提交一份 RFC: [ import jsr166],試著將 jsr166 reference implementation 給 import 到 GNU Classpath,這使 java.util.concurrency 得以被實做。JSR 166 RI 是由 Java Concurrency 權威 Doug Lea 所設計與實做,授權為 Public Domain,原始程式碼可參考 [jsr166 reference::CVS],目前看來沒有授權上的疑慮,而且也移除 sun.* classes 的相依性,看來好戲要登場了 :-)
由 jserv 發表於 11:49 PM | 迴響 (2)

這就是我們用的作業系統?

有人這樣描述現代人:「用電腦就跟喝水一樣」,形容現代人對電腦資訊系統的依賴,這個比喻讓我想到小時候看過的電視廣告,反諷飲用水的台詞:
    (舉杯) 這就是我們喝的水嗎?這就是我們喝的水嗎?
我的工作需要接觸到市佔率九成的 Microsoft Windows,在上面運作一些特殊的商業軟體,能解決需求的作業系統就是好系統,雖然公司的電腦裡面的 Windows XP 常常給我罷工,要不是我老闆出錢請我用電腦,我才懶得用 @_@

champ 學長寫了兩篇關於 Microsoft 最近「小動作」的文章 [WMF - 微軟現形記] 與 [WGA - 微軟現形記 II],雖然說是「小動作」,可是頗駭人聽聞的:Windows Update 後,告訴使用者,這台系統是盜版的,好像沒多久就要上演「不給錢,就搗蛋」的戲碼?!Windows Genuine Advantage 也是經典,被設計來確認是否為盜版軟體,每天還偷偷將資料傳回 Microsoft,不過呢,這個行為在「使用者合約」中,是「合法的功能改進」,使用者也無可奈何,天阿!作業系統能搞成這樣,實在是創舉,Microsoft 不愧是執業界牛耳的標竿,我說,Spyware 是二十一世紀軟體的基本配備。

上次閒閒沒事作,寫了個 [Orz Microkernel],光聽名稱就覺得 "Orz",當然現在還沒有 public release,不過可以想見實際運作的時候應該也頗 Orz,就只是 kernel 外加一些 server 罷了,可是呢,Microsoft 的作業系統系列開始加入這些「小動作」後,我實在懷疑到底誰寫的作業系統比較 Orz... 好吧,被迫做出以下回應:
    (敲電腦) 這就是我們用的作業系統嗎?這就是我們用的作業系統嗎?
由 jserv 發表於 10:28 PM | 迴響 (2)

Equator 的 BSP-16 SoC

每次加入新計畫都可以認識新朋友、接觸新技術。今天在研讀 [Equator] 的 [BSP-16 SoC] 資料。首先,[Equator] 隸屬於業界知名的 pixelworks 集團,pixelworks 是一個晶片供應商,1997 年成立,以投影儀晶片起家 (世界第一),其多數的工程師是中國人,日前 pixelworks 獲得Silicon Image 的 HDMI (High-Definition Multimedia Interface;HDMI) IP核心授權,用以開發新一代視訊處理器 IC,更早之前如新聞稿 [Pixelworks 與 AMD 合作開發 STB 參考設計平台] 宣佈,藉由 Pixelworks PWBSP-16 寬頻訊號處理器 IC 和 AMD Alchemy Au1550 處理器的 Sailfish II 參考設計平台,使用一個視訊轉換盒就能夠整合寬頻視訊、語音和資料存取功能,這個 reference design 對 Set-Top Box 產業來說,是很重要的 turn-key solution,而 [BSP-16 SoC] 就扮演重要的角色。

簡單來說,[BSP-16 SoC] 是 Equator 第五代的 VLIW SoC,提供給 CE (consumer electronics) 與 CPE (consumer premises equipment) 供應商一個完整的多媒體、高彈性的解決方案,以下節錄官方網頁提到的特性:
  • VLIW Core CPU
  • Variable Length Encoder/Decoder (VLx) Co-processor
  • Video Filter (VF)
  • DataStreamer™ Direct Memory Access (DMA) Controller
  • Integrated I/O
  • Display Refresh Controller (DRC)
  • DES Engine
VLIW 一般來說對於能源使用率有較好的表現,而 BSP-16 SoC 結合了 VLIW 與 SIMD 的設計,對於多媒體常見的矩陣運算、訊號處理運算,或者是向量式處理,做了架構上的加速,如不足處,還可訴諸 VLx Co-processor 與 VF (Video Filter),針對數位電視的需求,除了在 I/O 與 DMA 的改進外,還引入硬體層面的 DRC (Display Refresh Controller),允許從 VGA 到 interlaced NTSC 的輸出,最後,還在硬體層面實做了 Triple-DES 的加速處理。軟體的支援 (BSP) 部份,有 WinCE、VxWorks,以及 Linux,目前也有協力廠商提供軟體元件,關於 [BSP-16 SoC] 更完整的介紹,可參考 [BSP-16 官方文件] (PDF 格式)。
由 jserv 發表於 09:11 PM | 迴響 (0)

Debian and Ubuntu T-Shirt 2006

又到 [Debian@Taiwan] 製作 T-shirt 的時間了,今年比較特別的是,可能會跟 [Ubuntu@Taiwan] 合作,一起設計並製作紀念 T-shirt,詳情可參考 wiki [Debian and Ubuntu T-Shirt 2006],引用其中時程資訊:
    * 即日起 投搞與圖案元素建議同時進行
    * 06/10 圖案元素想法建議截止,圖案元素投票開始
    * 06/20 圖案元素投票截止
    * 06/21 初版圖案出爐(五組)
    * 06/25 初版投票截止
    * 06/30 初版訂講調查截止 ( 決定團製門檻件數的通過與否 )
    * 07/10 匯款截止
    * 07/12 初版送件
    * 08/09-11 初版預計收件日
    * 08/12 初版生日聚會分發
    如果大家的反應不錯的話:
    * 08/14 第二版or再版的流程繼續...

    註:初版為了趕在生日聚會之前製作,流程較緊湊,希望大家能多多包涵,也誠摯歡迎你的參與和寶貴的意見。
時間是不等人的,有什麼特別的想法就請提出,發表於 wiki 或用 IRC 討論都可。感謝 firedragen 兄這幾天的努力,他做了許多 [參考的圖樣],其中我喜歡這款:

看起來好可愛 :-)

今年又可多一樣紀念品了,真好。
由 jserv 發表於 03:15 PM | 迴響 (2)

Pepper Pad 改用 AMD Geode

LinuxDevices.com 的新聞 [Device Profile: Pepper Pad 3 web tablet],提到 [Pepper] 的 web tablet 產品在第三代設計,捨棄原本的 Intel PXA27x 硬體架構,改用 x86 陣營的 AMD Geode,而今天早上才收到某公司業務分享的訊息,提到最近 Intel 的通訊晶片事業群獲利不如預期,然後可能出售的「八卦」(與「傳聞」的分野總是一線之間),不禁令人多做了些聯想。

言歸正傳,[Pepper] 的 web tablet 第三代改用 x86 架構應該是著重於軟體考量,之前 Checko 整理一篇關於這個產品的介紹,可參考 [Pepper Pad : alternative to MS' origami]。LinuxDevices.com 的新聞稿提到該裝置的軟體構成:
    Proprietary user-space applications include Pepper's own "Pepper Keeper" application framework, said to provide a suite of Java and XML-based utilities for securely downloading and installing software upgrades; WMDRM10 DRM (digital rights management); Amazon.com's MobiPocket eBook reader; and Macromedia Flash 7, the same somewhat out-dated, Flash-video-challenged version included with Nokia 770.

    Open source user-space applications include Firefox 1.5, MPlayer, and Real Networks's open source Helix media streaming framework. Additional software functionality includes VoIP, Yahoo! and Flickr photo-sharing, IR learn and transmit possibly based on LIRC, a UPnP media controller and renderer, POP3/IMAP/web mail, and a multi-protocol IM client.
可以發現,[Pepper] 在擁抱 Free / Open Source 與商業產品發展上,其軟體部份的核心技術是 "Pepper Keeper" application framework,這是個整合 Java 與 XML 技術作為整體畫面、功能,以及軟體間互動的 application framework,跟已經倒閉的 Transvirtual 的 PocketLinux/XOE 在概念上有點類似,此外,封閉專屬性軟體還有 Microsoft DRM、e-MobiPocket、Macromedia Flash,以及 Java Runtime 等,這是 web tablet 產品訴求的重要項目,剩下來很多加值軟體都是 open source 的,如整合 Real Networks 的 Helix media streaming framework、Firefox/Mozilla、GAIM、Mplayer、... 等等,可以發現,有些軟體元件在 Intel PXA27x 沒辦法獲得合理的運作效能 (多媒體相關的),有些元件甚至沒有 Linux/Xscale 的版本 (Sun Java Runtime 或 Microsoft DRM),這是驅使 [Pepper] 改用 AMD Geode/x86 的動力。

擁抱 x86 陣營,那真的足以支撐這類消費性電子裝置嗎?看看新聞稿怎麼說:
    Although low power has traditionally not been a strongpoint for embedded x86, Pepper claims its new Pad offers up to fifty percent better battery life than its ARM-based predecessor, thanks to the lower power requirements of its AMD Geode processor, enhanced power management, and a new lithium ion battery.

    The third-generation Pepper Pad 3 is based on an AMD Geode LX800@0.9W processor, the first Geode chip designed by AMD's chip design team subsequent to AMD's acquisition of the Geode product line from National Semiconductor in mid-2003. Pepper's previous Pad design was based on an Intel PXA270 processor.
看來挺有趣的,AMD Geode/x86 是否有機會填補 Intel PXA27x 產品線的「空缺」呢?拭目以待。
由 jserv 發表於 02:26 PM | 迴響 (0)

哀歌,低吟著

休假第二天,早上七點起床,九點仍騎淑女車去辦公室,嚴格來說,不是上班,只是吹著冷氣、收收信件,以及看新聞罷了,倒也不是因為我是個工作狂,只是待在家中不免有種孤寂感,圖書館又不見得寧靜,辦公室還有不少犧牲假期、為出貨而努力的同事,有伴至少心靈上感覺會好一些。

今天身體狀況不太好,胸口很疼,陣痛也引來不止的咳嗽,躲到大樓的一個小角落,從窗口依稀可遠望遙遠的風景,不自覺想起 Rainer Maria Rilke 耗時十年的大作《Duineser Elegien》,其中一段這麼寫著:
    Erde, ist es nicht dies, was du willst: unsichtbar
    in uns erstehn? - Ist es dein Traum nicht,
    einmal unsichtbar zu sein? - Erde! unsichtbar!
    Was, wenn Verwandlung nicht, ist dein drängender Auftrag?
    Erde, du liebe, ich will. Oh glaub, es bedürfte
    nicht deiner Frühlinge mehr, mich dir zu gewinnen - , einer,
    ach, ein einziger ist schon dem Blute zu viel.
    Namenlos bin ich zu dir entschlossen, von weit her.
    Immer warst du im Recht, und dein heiliger Einfall
    ist der vertrauliche Tod.
    
    Siehe, ich lebe. Woraus? Weder Kindheit noch Zukunft
    werden weniger ..... Überzähliges Dasein
    entspringt mir im Herzen.
    
或許沒辦法完整展現 Rainer Maria Rilke 在哀歌中的扣人心弦,不過為了便於理解,附上中文翻譯:
    塵世,不正是妳企求的:
    隱然在我們身上復活? 
    — 這不正是你的夢,欲求一日隱而不見?
    — 塵世!隱形!
    倘若非變形,你所迫切的委命又為何?
    塵世,你這可親的,我企求。
    哦,請相信,不需要更多的春天來贏得我 —
    啊,就一個對我的血液而言,已太多了。
    我對象著你,由來已久。
    你的既往總是對的,而神聖的念頭
    是那親密的死。
    
    看,我活著。什麼作為?無論童年,抑或未來
    從未減少過... 適量地存在
    源於我的心臟。
    
稍作休息後,感覺好了些,而我,持續低吟著哀歌...
由 jserv 發表於 01:19 PM | 迴響 (0)

June 07, 2006

Desktop Invader 概念展示

之前在 blog [Keroro Desktop Environment] 提過一個以 Keroro 或具高度親和力的角色 (這裡稱為 avatar) 建構的桌面環境 (Desktop Envrionment,以下簡稱 DE),那後續的發展如何呢?

這絕對是個玩具,但我希望那是有趣的玩具,休假第一天,動手繼續實做,以下是運作的畫面:

為了避免版權爭議以及保持神秘性,就依據 [WalkingIce] 的提議,將此計畫更名為 "Desktop Invader"。簡單說明上面 screenshot 的概念呈現:左邊是 Task List、左下方是 Command List、中間下方是 Hint / Quick Command Area,而其餘才是應用程式本身,"Task List" 就是目前桌面系統運行的一般性應用程式,比方說 GIMP 或 PCManX BBS client,"Command List" 顧名思義就是擺置 command launcher 或特殊操作,如切換休眠狀態等,未來可能會換成 Keroro 球來操控,"Hint / Quick Command Area" 則用來擺置類似無線網路監控或可縮到 system tray 的程式,也稱為 "applet",至於 UNIX hacker 總希望有個終端機,那個區域也會內嵌一個 terminal,最後,最上方可以切換 workspace,系統會提供一個 session manager,可依據偏好設定,每次登入可回到指定的狀態。這是為何要弄新的 DE 最主要的原因:X Window System 是開放的系統,新的概念與想法,可透過許多成熟的軟體元件予以實現,而過去在 PDA / SmartPhone 上面的設計,何嘗不能移到桌面系統呢?卡通電影中的操控面板,何嘗不能放到日常使用?

當然,現在還有很多地方要調整,也還不能整合 art-work,不過,"Desktop Invader" 這個計畫對我來說,實在很好玩,也是練功的極佳切入點,這幾天空檔會繼續思考與改進 :-)
由 jserv 發表於 04:36 PM | 迴響 (0)

很「軟」的硬體

昨天面試新人的時候,提到類似的議題,這是個有趣的主題,而特別是對特定 doman knowledge 的軟體背景開發人員,其實更應該思索「硬體的軟化」這個議題。

就如上個世紀專家預測一般,現在電子科技產業的硬體建設逐漸「軟化」,這是什麼意思?人類史上第一台真正的電腦 ENIAC 雖然能解決複雜的運算 (與常人運算能力相比),但是每次更換運算對象或處理其他問題時,就得動用人力,慢慢去調整線路,然後再 reset 整個系統,儘管如此繁複,基本的電子元件技術堪稱可勝任了,但真正走向快速發展,是 John Louis von Neumann 提出一系列的理論,並著手落實於 EDVAC 設計中,也成為「von Neumann 架構」,而同個時期、先於 EDVAC 完成的 Harvard Mark I 則採用所謂的「Harvard 架構」,這兩者為後繼絕大多數中央處理器設計所採用。

這些是高中或大學計算機概論一定會提到的概念,問題是,處於科技日新月異的我們,設計硬體,還是得理解這些複雜難懂的電子、物理特性嗎?EDA 的發展相當快,而且也帶動整個產業的提昇,早已與教科書的描述有天壤之別... 這樣說實在抽象,咱們來讀一篇 Embedded.com 的文章 [Automated video algorithm implementation],作者 Andres Takach 是業界知名 [Mentor Graphics] 的 Chief Scientist,該公司執全球 EDA 發展的牛耳,所以這篇文章的可讀性又高了些。Video coding/compression 已經是若干門專業技術的集合,而當今對多媒體應用的需求,特別是消費性多媒體,幾乎是最低限度要求,然,多媒體技術也蓬勃發展,狹義來說,自 1994 年針對消費性視訊技術的 MPEG-2 出現後,整個產業有了很驚人的變化,連鎖的專利技術逐漸浮上檯面,終端設備更如雨後春筍,對工程人員來說,都是極大的挑戰,陷入標準規格與技術的漫長戰役中...

[Automated video algorithm implementation] 這篇文章雖然是關於 EDA 發展的短文,但是讀者其實不需要硬體基礎,只要對簡單的視訊處理有點概念,再來就是知道 RTL 這個名詞即可。RTL 是 EDA (Electronic Design Automation) 的術語,為 "Register Transfer Level" 的縮寫,表示 EDA 中數位 IC 的設計或描述,在傳統的開發方式來說,不免要碰到 VHDL、Verilog,或者 SystemC,這些都是高挑戰性的工作,並且都需要對硬體有足夠的認知,問題是,多媒體應用中,許多設計都是跨越多種領域,而視訊壓縮規格更是琳瑯滿目。記得大學時聽過某次演講,主講人就說:「未來五年內,硬體設計的軟體比例,將會提升到九成」,那是我剛進大學時,在沒有任何微算機概念時聽的,當時很震驚,但我一直不懂,後來從事電子設計後,才領會箇中的奧義。文章中提到的 "Algorithmic C Synthesis",就是如此的突破,透過對 C Programming Language 的擴充,加入 Interface synthesis、variable/array mapping、 loop pipelining、loop unrolling,以及 scheduling 的支援,卻沒有扭轉原本軟體 (C/C++ sample code) 的思維方式,所以,原本的軟體建設,比方說 codec,可以透過切割模組的方式,再作描述。

甚至,為了因應軟體多樣性與開發的複雜度,EDA 工具甚至提供了 Template / Parameterized / Object Oriented Design,這些原本都是軟體開發的方式,而今,透過 EDA,最終都轉化成硬體,貨真價實的 SoC / IC,想起來,真是奇妙。文章最後面提到 Speech coding 常見的 FIR (Finite Impulse Response),Andres Takach 以此為例,介紹如何應用 Algorithmic C/C++ Synthesis,來作 EDA 的實現,極為精巧,而這也是標題所說,很「軟」的硬體,引用結語:
    Hardware design of video algorithms require careful consideration of how video data is stored, buffered and streamed. The best micro-architecture is very dependent on the video application that is targeted. This paper presented an overview of algorithmic synthesis and of techniques that enable the coding of filtering algorithms so a variety of micro-architectures delivering a wide range of performances may be generated from the same C source. ... The examples illustrated how the combination of loop merging, loop unrolling, memory word width selection and loop pipelining can be used to deliver high-performance designs for video algorithms.
軟體、硬體,以及相關通訊技術發展趨於成熟的今日,是讓 domain knowledge 得以 materialized 的世紀,可更快速且正確的導入,這是新的契機,也是新的挑戰:面對越來越「軟」的硬體,設計越來越需考慮複雜硬體的軟體,我們該如何「拿捏」呢?
由 jserv 發表於 01:38 AM | 迴響 (0)

June 06, 2006

六月六日斷腸時

上午跟廠商開完會,一直惦記著日期:六月六日,兩千零六年的今日,或許會被聯想為三個六,也就是 666 惡魔數字,不過,盤據於心的,是「D日」,二次大戰諾曼第登陸的日子,盟軍反攻歐陸,壯士慷慨赴死、親人斷腸;是工程師節,採用「疏導」方式治水、成功遏止水患的大禹的生日;是革命先烈秋瑾的農曆忌日,1907 年七月 15 日,三十一歲的秋瑾於紹興軒亭口就義... 最後,我想起因癌症往生的姑姑,當時年紀還小,家人不讓我看遺容,但我大略知道血癌末期種種令人鼻酸的病貌。今天早上騎淑女車上班時,天空飄著細雨,沾濕的雙臂被風拂拭,望著小徑,竟生蕭颯感:
    「秋風秋雨愁煞人」
這七個字,是秋瑾計畫於浙江起義、一舉推翻滿清,不幸失敗被捕,當時紹興府山陰縣的知縣李宗嶽負責審問,要求供出同黨的名冊,而秋瑾毅然拒絕,只在紙上寫下這七字,這「秋風秋雨」逐漸傳開,並成為「秋瑾案」的代名詞,而今,近百年後,生長於寶島的我,當前的繁榮與自由,遠遠超乎革命烈士用血淚爭取的,我緬懷著... 歷史總是充滿巧合,軍事強人、洪憲帝制的袁世凱,在取消帝制帝號之餘,陷入眾叛親離的困境,欲續任大總統亦不可得,在心理的重大打擊及家族遺傳性糖尿病交煎之下,病於六月六日 (1916 年),對中國近代史有高度興趣的我,有時候在想,如果秋瑾與袁在黃泉相會時,該會如何呢?

面對歷史,我們總是可以第三人稱,客觀並冷酷地看待手上的證據,參考當時的文獻,對歷史人物作嚴苛的褒貶,我不是史學家,所學也有限,但也沾染些微批判的能力。抱著 Immanuel Kant 的《純粹理性批判》、《判斷力批判》,以及《純粹理性批判》等三大批判的我,曾自認具備著立足於無人可以懷疑的「純粹實踐理性」,而去批判理性的「全部實踐能力」,塵世生活中的經驗表現簡約為審美判斷力批判與目標判斷力批判,前者解決了自由與認知的必然性的統一問題,而後者解決了自由與道德必然性的統一問題,在此前提下,作為自由人,存在的表現成為一種 Tatsache,亦即「實踐上的認其為真」,然而,真實為此?

不,我崩潰了,憶及兩位同因癌症病逝的姑姑,其中一位正是在這個日期,俗語說:「六月六日斷腸時」,與病魔的最後交戰、免疫系統早已無法運作,而任由器官的腐敗,猶記得家父說「全身瘀血潰爛,不忍卒睹」,昔日的理性呢?不,我只能假裝默默接受命運安排,事實上,種種不理性的感傷與愁容,仍如烏雲之籠罩,過去的哲學訓練、既往的歷史觀察力,全如脫韁野馬,我的心緒,失去控制。此際,又想起清朝馮起鳳《昔柳摭談‧秋風自悼》的一段:
    「後探得的耗,萬箭攢心,臟腑欲裂。但木已成舟,回天乏術。」
怎不叫人柔腸寸斷呢?

高二分組時,選擇了第三類組,也就是外加一科生物,其實我對生物學科的興趣不大,但受到姑姑死訊的影響,一直對於這類無從控制的生理議題,有種衝動去理解,與其說是興趣,不如說是因為畏懼而生的反抗能力。我還記得,高中一年級的公民課,老師要我們談談自己的志向,我說,想成為一個醫護人員或核子化學醫療專家,並舉了姑姑的例子,本來每人三分鐘的發言,不自覺就講了十幾分鐘,最後淚灑滿面,還把教科書弄濕了。罹患癌症的姑姑,拒絕作任何化學治療,她說這是自己的業障,一切順其自然,也婉拒外界的關心與額外的醫療救助,於是,作為親友,除了眼睜睜看著姑姑痛苦的走之外,還能做什麼呢?現代的醫療科技,到底能幫上什麼忙?我不清楚,但我仍要知道答案。

至今,我仍對未能對醫療科技貢獻一份力量而耿耿於懷,雖然高中成績不惡,但解剖青蛙總是夢魘,生物實驗課總是可讓我好幾天吃不下飯,雖然其他主科都能夠維持在前 10%,而且一開始對生物也有蓬勃興致,閒暇還閱讀《牛頓》一類的科學刊物佐以參考,可是,生物課仍讓我沮喪,高三甚至不參加考試了。每每想到這裡,人類還有資格自稱「萬物之靈」嗎?人,不就跟其他鳥獸一般,仍受大自然神秘力量的驅使,逃不出生老病死的輪迴,我的理性呢?別提了,這是我唯一知道的真相。

今年五月七日下午,去誠品書店讀了《愛的手札》一書,讓我在沙發椅上不自覺就哭出來。

這是一個三十歲罹患絕症、瀕臨死期之際的醫生,以書稿寫給妻女的感人遺作。作為一個醫生,每日都深刻體驗生老病死,就如此鮮明,來不及褪下手術服,而這樣的戲碼更是讓人對生命的無常產生感慨,然而,這位醫師,井村和清,卻以醫生作為終生最大志業,維持這個志業的動力,來自在醫學院就讀時,所面臨喪母之痛,讓他更堅定要成為一個優秀的醫師。上天的安排是如此奇妙,這個對生命有高度熱愛的醫生,自己卻在行醫第六年時,被診斷罹患絕症,然而,他堅持免疫療法,讓自己雖然承受截肢之痛,還是裝上義肢,用孱弱的生命繼續行醫... 而,剩下四個月的生命。

書稿並沒有完全圍繞於杏檀生涯,相反地,有不少特別的見解,比方說井村和清用一些篇幅談人生觀。讀到第一部的尾聲:
    妻子默默地哭泣。
    「回富山去靜養吧。」
    但是,我拒絕這個提議。我想走到不能再走下去、工作到不能再工作為止。

    這是我的希望。看著幾乎是哭著苦勸我回鄉的妻子,我只是一直搖著頭。因為那一陣子我還有一些由我負責主治的病患 ... 。這三個人都是惡性腫瘤末期 的病患,他們把生命交給了我,全心信賴我,決定用僅存的微弱力量,和病魔 奮力一博。我怎能將他們置於死亡之線,一個人臨陣脫逃呢?
淚水已經完全不聽使喚,在書店當眾哭出來是很丟臉的事情,於是我抱著書本,跑到角落去。

愛的手札》描述醫師堅持的「免疫療法」,說穿了,就是以意志力抵抗病魔,讓求生的勇氣為自己爭取更多的日子,這跟姑姑當時很類似,書中對病症具體的描述,對我來說,是多麼真實。想到兩個罹患血癌而離世的姑姑、罹患癌症的家母、為病魔所苦的親人,以及自己這個不堪一擊的微弱生命體... 苟活了二十餘載,我對於死亡仍是如此的恐懼,老實說,我不知道是否有勇氣活著。

黑格爾曾說過:「凡存在必有意義」,我,終其一生在找尋自己存在的價值,哪怕是以前聽演講耳聞人體軀殼僅值的二十四元價值,我想,我應該為這個大環境作一點事情,而看了井村和清醫生的這本遺作,更讓我無地自容。現在的我,雖然不甚健康,但至少還未到絕症末期,對生命的堅持,意志還是相當微弱,而且沒有全神投入地作。

不知道自己還能活多久,也不曉得有無機會看到明日的陽光,但,我絕對要珍惜今天的一切,「六月六日斷腸時」,這日,對生命又有更深的體驗。
由 jserv 發表於 04:09 PM | 迴響 (3)

June 05, 2006

隨手畫 - Vivien

Vivien 是我的同事,硬體工程師,之前在 [為何要醉 coding?] 提過她曾饋贈一瓶清酒,讓我得以一邊品酒,一邊 hacking,愜意至極,前天是 Vivien 生日,想不出該以什麼禮品回敬,於是隨手繪製素描表以心意: (click to enlarge)

這次試著用炭筆,沒想到弄巧成拙,雖然筆觸很順暢,不過也讓畫紙 (辦公室的 A4 影印紙,背面稍微污損) 顯得不甚清潔。這份素描練習仿效了埃及古文明對人物的「側面與正面混合法」表現,也就是將人物描繪成臉朝側面、肩朝正面,以及腿部朝側面的法則。

雖然晚了些,但是還是說聲:生日快樂!
由 jserv 發表於 03:21 AM | 迴響 (1)

June 04, 2006

Dan Kegel 對 GCC 4.1 的提示

Dan Kegel 日前寫了一篇短文 [Migrating to gcc-4.1],提供許多重要的參考資訊,同時也指出,過去停留在 gcc-2.95、為 toolchain 穩定性考量的開發者 (特別是 kernel hacker),也移轉到 gcc-4.1 了。

It's time to switch over!
由 jserv 發表於 04:02 PM | 迴響 (0)

KKFox : 快速安裝 Firefox 與 extensions

在 ptt.cc 瞥見這個有趣的計畫:[KKFox],引用網頁介紹:「這個 Firefox 集合包,主要的目的不是在提供強大的功能與瀏覽經驗,而是以習慣 KKMAN 思維的使用者為出發點,製作出一個與 KKMAN 在功能上不相上下的版本。除了功能上與 KKMAN 類似外,我還嘗試加入一些方便的小功能,希望讓初接觸 Firefox 的使用者能夠感受到她的便利性。這個版本是假設使用者是第一次安裝,因此沒有舊版升級的包袱,也不需繁瑣的設定。只要單鍵安裝、單鍵啟動,沒有過多讓人無所適從的版本或捷徑,馬上就能感受到 Firefox 強大的威力!」,很實用。
由 jserv 發表於 03:30 PM | 迴響 (0)

OpenAVS 計畫

最近開始研讀大陸的 AVS (Audio Video Coding Standard),明代理學家王陽明其著作論點的核心思想就是「知行合一」,而 iThome 的吳俊瑩也在 blog [研發人員應該「拜」王陽明] 提到電腦科技產業的研發人員應有的態度,所以呢,我決定投入 AVS codec 的開發工作,於是加入 SourceForge 的 [OpenAVS] 計畫,目前仍在草創階段,但是已經有堪用的 decoder 與 sample player。

OpenAVS 的實做在模組切割與資料結構的部份,相當不理想,所以我還會用點功夫作些大手術,再來就是進行 SIMD optimization,而另一位 [OpenAVS] 開發者 Zhou Li 則在進行 MPlayer 的整合工作,我們的方向是讓 1 GHz x86 CPU (跟我的開發環境相仿) 也能順暢播放測試用的 bitstream data,當然,任何改進與建言都相當歡迎,也期待您對 [OpenAVS] 計畫的支持與投入。
由 jserv 發表於 01:41 PM | 迴響 (1)

實驗性的 Cairo 直式排版

對岸知名的 FreeType / Cairo hacker,sunmoon1997,這幾天初步完成 [Cairo] 的實驗性直式排版功能,依據 sunmoon1997 給的 [cairo patches],稍微改了範例程式,以下是我這邊運作的效果:

試著將唐代女詩人魚玄機這首知名的詩填入,並且於 Fontconfig 建立 font face 前指定 FC_VERTICAL_LAYOUT,即呈現以上效果,詳情可 [參考原始程式碼],看來用 Cairo 撰寫唐詩三百首賞析程式變為可行,真好。

此外,sunmoon1997 日前在他的 blog [剛給 cairo 提交的補丁] 提到 Cairo 1.1.x 的限制,並且他如何對 [Cairo 1.2 Roadmap] 的工作項目,看來還有一場硬戰要打,無論如何,感謝 sunmoon1997 與 Cairo 開發者的付出,這些都是中文桌面環境的核心要素。
由 jserv 發表於 03:46 AM | 迴響 (1)

June 03, 2006

為什麼不分類?

連續兩週收到網友來信指教,提到一個共通的問題:
    你的 blog 文章怎麼不分類?
一個網友是找莎士比亞的資料時,發現這個 blog,另一個則是用二次大戰當關鍵字找到的,那兩位對資訊技術並沒有太大的興致,只是恰好我的 blog 曾經提過一些讓他們感興趣的字眼。之前在 [關於本 Blog 的原則] 提過本 blog 幾百篇 entries (自知以前寫的文字素質不高,以「資料」稱之又嫌籠統,故曰) 不分類的原因,儘管我的確知道多數的 blog 系統都提供分類彙整的功能。至於之前提過的說法:
    關於分類,基於玩票性質的 blog 創作,我不認為能夠提出一套完備的分類系統,以涵蓋本 blog 所有的文章,同時,我相信電腦科學的進步,能夠很快速的作 context-free / context-bound 的分類或進一步的彙整,所以,未來仍不作任何分類。
看起來的確難懂,也不是故意要用電腦科學的術語,而是詞窮了,舉個例子,之前的 blog [專利,作為驚人的產品],乍看標題如果要分類,大概就是「法律 / 智慧財產」,但是內文又分類為「IC 設計 / 視訊壓縮 / 三級片 / 性研究 / 數位電視」,很詭異吧,因為我實在不會寫文章,充其量只能堆積文字罷了,偏偏這類的 entries 也佔了頗大的比例,也因此,以小弟愚昧的資質來說,實在無從分類。

感謝網友對本 blog 的觀看與指教,如果對內文不甚清楚,那肯定是我的表達能力有問題,我隨便說說,您隨便聽聽就是。
由 jserv 發表於 01:36 PM | 迴響 (1)

Tensilica 的US Patent 6477683 (可配置處理器設計) 獲得認可

電子工程專輯的新聞 [Tensilica的可配置處理器設計專利終獲認可] 提到 [Tensilica] 公司的 [US Patent #6,477,683] ( Automated processor generation system for designing a configurable processor and method for the same),雖在 2004 年被美國專利署檢查員重新核查並拒絕其中所有 104 條主張,但事過境遷,如今已獲得認可。

[US Patent #6,477,683] 是個相當特別的專利,要理解其中的來龍去脈並不困難,有計算機組織架構與編譯器背景的朋友應該可知曉,換言之,[Tensilica] 公司以此 configurable microprocessor 的概念建構多項產品與相關的軟硬體建設,涵蓋範圍事實上相當廣泛,這也是何以當時被認為與以往的技術重覆,或者不代表可授予專利的先進性。
由 jserv 發表於 01:54 AM | 迴響 (0)

June 01, 2006

Orz Microkernel

兩三個月前,有位網友來信指教,提到他所修的作業系統課程,期末專題要寫個小型作業系統,讓他很擔心,而恐龍書繁瑣的內容也是個挑戰... 這的確是個好問題,而且我也認為那個期末專題不錯,我以前的期末專題是將 Linux kernel 2.2 簡化,並保留 framebuffer (VESA) 與 network stack,C Runtime 用 [dietlibc],外加 busybox + web browser (HTML 3.2+),這些全部塞進一張 1.44 Mb 的 floppy,做起來很有成就感。

為了給那位網友一點信心,昨天端午節賦閒在家就一面複習 IA32 組合語言,一面寫了簡單的 Microkernel,就如之前的 blog [Orz Programming] 提到寫程式的樂趣,所以,索性稱呼這個玩具 kernel 為 Orz Microkernel,有圖有真相,以下是透過 [qemu] 的執行畫面:

雖然是玩具,不過呢,這個 microkernel 可是運作得很順暢,已經完成 x86 Microkernel、File system server, keyboard service server、shell、VGA console server,以及 scheduling services,就 binary size 來說,還沒超過 35 kb,應該符合那位網友的需求。

因為七月份答應 [TnLUG] 給場 talk,而 Orz Microkernel 也會是其中的案例,就到時候再把 Orz Microkernel 的原始程式碼釋出,喔,這此我可不想用死板的 GNU GPL 作授權條款,我要用 Jserv GPL (Good People License) *笑*

你說、你說,寫作業系統也是可以富含樂趣,不是嗎?
由 jserv 發表於 11:20 PM | 迴響 (9)

Opera Widgets 與桌面系統的整合

在 KDE 1.x 邁入 KDE 2.0 時,KHTML view/widget 幾乎是徹底改寫,就是因應 HTML 4.0 種種高挑戰性的設計,也引入 DOM,那段時光,令人難忘,每天、每時都有大量的 cvs commit... 而寫過 widget sets 或 window system 的開發者回頭看 W3C 提出一系列的 Recommendation,可以發現 DOM + CSS + client scripting,理論上幾乎可完成絕大多數 2D Graphics 的要求,著墨於 web browser engine 多年的 [Opera Software] 當然熟知這點,日前新聞稿 [Opera 9 beta: widgets, BitTorrent, and more] 除了提到 Opera 9 在功能上的突破,還提到最新的 [Opera Widgets]。

簡單來說,[Opera Widgets] 是一個嶄新的機制,允許開發者將過去在網頁設計的經驗,緊密地與桌面系統整合,彼此間還可做到良好的互動。先看看以下的畫面:

這個 Hello World 很有意思,是用 xHTML + CSS 繪製的,就如右側 Opera 瀏覽器畫面一般,用的是同一套引擎,但是,[Opera Widgets] 得以與桌面系統整合一起,成為視覺性的元件,然後,我們可將 event handling / dispatching 也透過 dynamic HTML 的機制處理,完整的使用範例可參考 [Opera Widgets::Your first widget]。

這個想法,在 Mozilla 計畫草創時,Netscape 的內部開發團隊就有類似的計畫,不過一直沒有良好的應用,如今,硬體運算速度與記憶裝置已經提昇,而軟體應用也趨於多元 MRE (Mozilla Runtime Environment) 除了作為 embedded web browser component,這類與桌面系統的整合,看來也是另一個可深入著墨之處。
由 jserv 發表於 10:15 PM | 迴響 (2)