October 31, 2007
一千篇紀念
寫完 [
點閱破百萬次] 一文後一週,又發現有趣的新統計數字:本 blog 文章數恰好一千篇。寫作 blog 是個特別的經驗,因此結識許多新朋友、聯絡到昔日親友,與拓展工作機會與範疇。
當然,「一千篇」不過只是個數字,基本上 [
一些沒有道理的原則] 還是會依循,像是文章不分類、大雜燴式寫作習慣等等。此外,提醒想發表迴響的朋友,為了 [
迴避 spam comment],本 blog 施加一些小手段,增加您的困擾,請多見諒,謝謝!
由 jserv 發表於
01:13 PM
|
迴響 (2)
October 30, 2007
Dash 與 OpenMoko 的聯姻

經過一段時間的沈寂,最近又有新的訊息。專注於網路連線 GPS 設備的 [
dash] 日前由該公司的 Rob Currie (COO) 與 Mark Williamson 代表出席 [
Web 2.0 Summit],Tim O'Reilly 在 [
Web2Summit: Backstage with Rob Currie of Dash] 一文中,提及這個新創公司對於 GPS 裝置所提出的新使用情境:
- Traffic data is real time, routing paths are crowdsourced based on historical and current patterns.
- Searches for restaurants, hotels, etc. are live, not immediately out of date.
- The Dash can pull data from internet mashups (Platial gets a shout-out) and even sites like upcoming.org: find me jazz music tonight close to where I am.
不同以往的裝置,[
dash] 用了許多聰明的想法去強化基於 GPS 的搜尋能力,Tim O'Reilly 如此描述:
There are three types of search: specific locations (Starbucks), types of locations (coffee), and, surprisingly, specific products. During the beta period, they were surprised to find things like "ipod" in their top 50 searches.
裝置外觀很樸素平實,使用者介面也簡潔清晰,明確表達出以上概念的呈現,而,在文章中也悄悄提到 [
dash] 與 [
openmoko] 的合作計畫,Tim O'Reilly 提到:
when I asked about the hardware, and discovered that it was based on openmoko, the open source linux-based phone infrastructure, my ears really perked up. At bottom, this is a PHONE, and that tells us something very interesting about the future of the phone, with more and more devices with phone functionality that don't actually look or act like phones. It's also a full linux computer. Let your imagination be the guide.
的確有頗多想像空間,看似有些荒謬的 100% open source 手機如何能跟實際的商業獲利建立關聯呢?透過 [
dash] 與 [
openmoko] 的「聯姻」關係,點出了一個可行的商機,當然啦,好戲才要上場,咱們拭目以待。
關於裝置的規格資訊,可參考 Brady Forrest 的文章 [
Dash, The Internet-Connected GPS]。
由 jserv 發表於
01:53 PM
|
迴響 (3)
October 28, 2007
警告:"no newline at end of file"
拜讀 [
一個細節引發的思考] 一文有感,遂作此筆記。許多人花了耗費上萬元學習 C 語言程式設計,卻吝惜花點錢買份 C language specification,這是多麼可惜的事?我們不時可從許多細節學習到這一系列標準背後的真義與價值,比方說今天要探討的常見 GNU C compilation warning:
warning: no newline at end of file
這種編譯時期警告很容易重現 (reproduce),只要餵給 gcc 一個非空白的檔案即可,如以下操作:
$ echo -n "\t" | gcc -E -
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "<stdin>"
<stdin>:1:3: warning: no newline at end of file
以上在 echo 指令後加上 "-n" 表示不印出尾端的 newline (CRLF 一類的字元),僅輸出 '\t' (tab 字元),這種警告特別容易發生於專案程式碼切換於 Win32 與 UNIX 系統中編譯,先來「捨近求遠」看看警告是從哪來的?在 gcc-4.1.2 的原始程式碼 libcpp/lex.c 中 _cpp_get_fresh_line 函式有以下實做碼:
/* End of buffer. Non-empty files should end in a newline. */
if (buffer->buf != buffer->rlimit
&& buffer->next_line > buffer->rlimit
&& !buffer->from_stage3)
{
/* Only warn once. */
buffer->next_line = buffer->rlimit;
cpp_error_with_line (pfile, CPP_DL_PEDWARN, pfile->line_table->highest_line,
CPP_BUF_COLUMN (buffer, buffer->cur),
"no newline at end of file");
}
註解文字引人深思 "Non-empty files should end in a newline.",於是我們來查閱同樣在 gcc 原始程式碼內建的文件 doc/implement-c.texi,提到:
Whether each nonempty sequence of white-space characters other than new-line is retained or replaced by one space character in translation phase 3 (C90 and C99 5.1.1.2).
在 GCC 4 系列中,貫徹完整的 C99 (由 ISO 與 IEC 於 1999 年制定的 C programming language standard ISO/IEC 9899) 是重要的目標,特別在未來的 gcc 4.3 (mainline) 系列中,抑制許多不符規格的語法。我們可從 [
ISO C Working Group] (WG14) 的文件 [
Rationale for the C99 standard] (PDF) 得知 C99 章節 5.1.1.2 相關的訊息:
A backslash immediately before a newline has long been used to continue string literals, as well as preprocessing command lines. In the interest of easing machine generation of C, and of transporting code to machines with restrictive physical line lengths, the C89 Committee generalized this mechanism to permit any token to be continued by interposing a backslash/newline sequence.
由此可見,為了一致性,原始程式碼每一行後「應該要」有一個象徵結束的字元,也就是 newline,在不同的軟硬體平台有對應的表示,如 CRLF (Win32) 或 CR/LF (UNIX/MacOS)。原本是很單純的細節,倘若我們一味不思索規格本身的意義,僅是得過且過、淺嘗輒止,怎能獲得成長呢?
由 jserv 發表於
02:57 PM
|
迴響 (5)
October 23, 2007
點閱破百萬次
從去年二月份玩票性開始對 blog 作 [
統計],Page Rank 也提昇到 5,而剛剛則發現點閱次數已破百萬,以下是截至目前為止的統計:
Jserv blog Site Summary |
| |
VISITS |
| |
| Total | 602,266 | |
| Average Per Day | 961 | |
| Average Visit Length | 1:44 | |
| Last Hour | 58 | |
| Today | 1,160 | |
| This Week | 6,725 | |
| |
PAGE VIEWS |
| |
| Total | 1,000,211 | |
| Average Per Day | 1,611 | |
| Average Per Visit | 1.7 | |
| Last Hour | 102 | |
| Today | 1,817 | |
| This Week | 11,280 | |
驚訝之餘,不免有此感嘆:網路上的數字往往就是如此令人目眩神迷,只消一年多,點閱此 blog 就達百萬次?!既無八卦性內容,又無腥羶詞語,本 blog 的素材頂多只是我這個工讀生的筆記與偶一為之的呻吟罷了,所以數字背後的意義又有多少呢?
由 jserv 發表於
02:01 AM
|
迴響 (2)
October 22, 2007
Trolltech 不玩 Greenphone 了
很多開發者應該耳聞 [
Trolltech] 的 [
Greenphone],這個以 Xscale PXA27x 為平台的 Linux Smartphone 參考硬體,搭載該公司知名的 Qtopia,看起來是很棒,可惜價格不貲 (話說某人就是買不起 Greenphone,乾脆自己生一台),而且不是真正的開放平台。
LinuxDevices.com 的新聞 [
RIP Linux "Greenphone"] 宣告了 Qtopia 的 Greenphone 已經不作了:
Trolltech has discontinued its Linux-based "Greenphone" development platform. Touted upon its introduction as the first Linux-based mobile phone with user-modifiable firmware, the device will be superseded by various third-party products, including not only open phones, but also portable media players, navigation devices, and home automation equipment, the company says.
嗯?Greenphone 不就是設計給開發者作為參考的手機平台嗎?到底是什麼驅力讓 Trolltech 作此決定?報導又指出:
Trolltech's CTO, Benoit Schilling, told LinuxDevices that developers are "very happy with the Neo1973 hardware," adding, "Trolltech is not really a hardware company, and we have a great relationship with FIC."
原來是半途殺出了程咬金 ── FIC 生產的 [
OpenMoko GTA01 / Neo1973],以 100% open source 的承諾 (相對於 Trolltech 的兩面手法,顯然是高雅多了) 與經營許久的社群力量,讓 Trolltech 決定將其 Qtopia 4 系列移植於 openmoko/FIC 硬體平台上。同時,Trolltech CTO 也做了承諾:
Schilling said Trolltech will continue to support the Greenphone and Neo1973, while extending its family of supported development hardware platforms to encompass a variety of device types.
目前已有多份建構於 OpenEmbedded 環境、由 Trolltech 提供的 Qtopia Phone Edition on Neo1973 system image 可下載,請參考 [
Qtopia.net]。
自由真好 :-)
由 jserv 發表於
09:40 PM
|
迴響 (4)
October 20, 2007
開發者工作站
我一直認為,工程師的時間 (青春?) 是很寶貴的,不僅要解決多如牛毛、高深莫測的技術問題,也得不斷進修,甚至還得代理老闆處理重要決策 (做好是老闆的功勞,作不好要自己承擔風險)。所以,如果讓工程師因為要花費許多時間去編譯 Linux kernel 或其他大型的軟體系統,而無法繼續其原本的任務,這會是可觀的成本開銷,也因此,開發者的工作站得要有一定等級的硬體,[
openmoko] 的研發總部當然注意到此,所以每個開發者至少都有一台「普通」的工作站,其規格至少如下:
- CPU: Intel Core 2 Duo E6420
- Memory: 1GB DDR2-667
- Hard Disk: 250GB SATA hard disk, 7200RPM, 16MByte cache
- Monitor: 17" screen, 1280x1024 resolution, VGA and DVI input
我是硬體白痴,所以其他項目就不寫了,啟動時,Debian GNU/Linux 飛快運作,豈是一個「爽」字了得?有圖有真相:

由上可見許多 processes / threads 快快樂樂地跑在 4-core SMP 上,當然,這只是「普通」等級的工作站,其他神奇的機器有機會再介紹。
由 jserv 發表於
08:07 PM
|
迴響 (13)
October 17, 2007
夜鐘之止
入秋,夜間驚醒的我,望著窗外蕭颯之景,偶聞機械聲劃空而過,胸口間歇的陣痛惱人。
某事件結束後,擔憂生活過於安逸,自我要求不得臥榻床舖入眠,改以地板或沙發一類家具代之,除客居他鄉外,北上工作的三年就如此度過簡樸的夜晚。然,連續數日胸口疼痛難耐,又不想去醫院領取那些形同飲鴆止渴的止痛藥 ── 雖能舒緩生理痛楚,但也扼殺清晰的思維,人若如此,何嘗不是一種悲哀?掙扎許久,最後仍屈服了,強忍著種種不適,騎著淑女車驚險抵達醫院,熟稔地與醫師描述症狀。返回內湖住所服藥,藥效所及,致使注意力難以集中,披著冬季外套 (無床自然不需棉被),在地板上休養。思緒渾濁不止,刺痛感卻有加劇的傾向,頓時聯想起莊子以天地為棺槨之豁達,此刻,不啻是擴展胸襟、與萬物齊一的最佳體驗?
「吾以天地為棺郭,以日月為連璧,星辰為珠璣,萬物為齎送,吾葬具豈不備邪?何以如此?」
莊子大去前,面對諸弟子欲厚葬之舉,脫口說出此等灑脫之語,弟子追問說:
根據人類學者的說法,最早的智人尼安塔人即有埋葬亡親的習慣,姑且不論文化層面,莊子弟子不捨敬重的老師遺體受到鳥獸分食,大概就是人類的天性。不過擁有大智慧的莊子,自然不是這麼想,他回說:
「在上為烏鳶食。在下為螻蟻食,奪彼與此,何其偏也?」
死,對莊子這個超然的智者來說,根本不算什麼,只是回歸自然罷了,莎士比亞不也說:「世界是座舞台,所有的男女不過是演員」嗎?我們生於自然,也終將歸於自然,繁文縟節又有何用?想到此,胸口的疼痛感舒緩許多,殘餘的人生尚有許多事情可作,怎容我在此怠慢呢?
四壁原本未掛擺畫作,或許因為藥物影響略有幻覺,依稀瞥見金屬畫框,而框內畫作是 Edvard Munch 最後的自畫像,場景中有他的單人床、發青的臉龐掛於高挺的身軀,一旁黯淡的時鐘好似《浮士德》中,浮士德與魔鬼的約定:
「... 我甘願把自己銷毀!那時我的喪鐘響了,你的服務便一筆鉤銷,時鐘停止,指鐘落掉,
我在世的時間便算完了。」
「可是時間佔了上風,老翁倒斃在地。
時鐘停止──」
停止!像深夜一般寂靜。
指針下落──」
與魔鬼簽訂出賣靈魂三十四年契約,使浮士德生前盡情享受,然,死後則入地獄,詩劇的描繪何等攝人,死亡的陰影,自 Edvard Munch 最後的自畫像、自歌德筆下,自牆縫無數的細孔竄出... 胸口的陣痛,適時將我拉回現實,Edvard Munch 自幼就受到病魔的折磨,其母親和姊姊死於肺結核,因此,死亡的恐懼無止盡地割劃自身,也反映於畫作,凸顯備受威脅折磨的內心世界,而我,略能理解其一二,特別在此際。
由 jserv 發表於
02:43 AM
|
迴響 (10)
October 13, 2007
迷你俄羅斯方塊
連續幾周都將大量的時間用在非技術範疇上,頂多只寫了幾 k LoC,心中很不踏實。夜間醒來突然想玩俄羅斯方塊,那不如就自己動手作,運作畫面如下:

取得原始程式碼:[
tetris.tar.bz2],Have Fun!
由 jserv 發表於
12:36 PM
|
迴響 (0)
開放原始碼的 SunPinYin 引擎
2004 年到 2005 年間,正值我投入 SCIM/IIIMF 開發時,陸續認識 Sun Microsystems China 的幾位工程師,如 [
Ervin Yan] 與 [
Yong Sun],後來則在 #iiimf 認識了同樣負責 i18n 的 Lei Zhang (Phill Zhang,張磊)。他們進行了為數眾多的專案,早期以 GNU GPL 授權釋出以 IIIMF 為基礎的 CLE (Chinese Language Engine),而在 [
OpenSolaris] 上線後,[
Solaris 輸入法] 也是其中重要的項目,最近則釋出了 [
SunPinYin ],這是基於統計語言模型 (statistical language model, SLM) 的智能拼音引擎,以 Sun CDDL (Common Development and Distribution License) 發行。開發中的 Gtk+ 介面執行畫面如下:

[
SunPinYin ] 最早由張磊在 2004 年進行 JDS 開發時,獨自實做的智能拼音引擎,爾後移植於 Solaris 上,2006 年張磊離開 Sun 後,由 [
Yong Sun] 著手維護,現已有相當不錯的成果,並透過技術文件揭露其中細節,可參考:
現有原始程式碼中,slm/ 實做了支援 back-off 模式的 n-gram 靜態 SLM,而 ime/ 則是與輸入法系統銜接的介面。
由 jserv 發表於
06:36 AM
|
迴響 (4)