2006年9月26日 星期二

Alan Cox's Thinkpad Explodes - OSNews.com

Alan Cox's Thinkpad Explodes - OSNews.com
After the thinkpad exploded

用的還是 Thinkpad 600(!) 果然不管用什麼工具,還是能善用最重要,再貴的傢私也是輔助而已。

2006年9月24日 星期日

喵床

最近喵練會了單手推開鐵櫃的門之後,常常窩到裡頭去睡覺。裡頭還留著上個冬天的座墊,剛好變成他的床墊。

一隻貓睡在櫃子裡,好像小叮噹的場景。不過不是藍色的機器貓就是了。貓為什麼會有這樣的習性呢,喜歡睡在小小的角落。比方說,擁擠的衣櫃裡、狹小的紙盒裡,還有...洗臉台裡??

恋におちたら

實在是個文不對題的標題。前面只有淡淡的愛情部份,著重的在島男的奮鬥過程和心境轉變。這樣下標題有點掛羊頭賣狗肉啊。

草彅剛出現的場合,總是有股熱血的氣氛。回想到的是《フードファイト》。這次的編劇喜歡賣弄玄虛,總是在每一集的最後關頭來個大逆轉。高明的是,整體的劇情走向也是大逆轉。第一集一開始給人的印象是溫馨家庭劇,接著是熱血奮鬥劇。目前進度第九話,進入暗黑世界。接下來會如何發展呢?

這部戲中最有趣的是高柳徹和鈴木島男心境轉變的對比。這兩個人的對手戲,看起來實在滿過癮的。相對之下女性角色完全被當成陪襯了。老字號的和久井映見、古典美人型的木村佳乃,或是新米松下奈緒。實在是滿可惜的。

一邊看著這部,一邊有點感慨。商場的競爭的確是如同它所描述的,完全不留情面的殘酷策略廝殺。高柳徹的網路事業和冷血購併手法,不由得讓人想到ほりえもん的 Livedoor。但上映日期是2005春季檔,當時 Livedoor 聲勢雖大,應該還沒到人人喊打的程度。

題外話,劇中道具電腦 Apple 和 Dell 是常見的。Apple 作為花瓶當之無愧,Dell 向來置入行行銷積極,各國影集都有它的影子。倒是看到 Benq 和 Acer 的螢幕背景比較令人意外一點。或許只是道具班的無心插柳也不一定。

2006年9月23日 星期六

Microsoft 要自己來作X合一Windows 光碟?

All Vista versions to ship on single disk

Update: 對比 Longhorn Server 2003 和 Vista 的 image 大小,看來是確有其事。
Update: 光碟片中有六種 Vista 版本的設定檔。

2006年9月21日 星期四

硬碟又要來討錢了

現在用的這顆硬碟已經換新過一次,這幾天又聽到中斷再起飛的聲音。根據經驗(#($&*)墜毀的日子也不遠了,趕緊啟動緊急應變,備份資料先...

2006年9月19日 星期二

tammy


tammy
Originally uploaded by bernard & theresa.
在 Flickr 上撿到的有趣的照片。原網頁上底下Jessica的comment 更有趣。:D

Da-jhih Bridge @ Taipei


Da-jhih Bridge @ Taipei
Originally uploaded by jsli.
filckr + blogger beta

打字姬回來了

送修之後,今天X21 終於修好了,回來了熟悉的手感。過去用 M1a 的日子,真不像是人用的。難以想像有人可以適應那種不人性的鍵盤。

看看電腦裡的記錄,最後一次開機是四月十四。轉眼間半年快過去了。而事實上過程只有幾天。拖拖拖啊...

2006年9月17日 星期日

《深河》


以前對遠藤周作沒有太多了解,這是看的第一本書。但這是他晚年作品的其中之一。一邊讀著,一邊感覺其中應該有許多部份和作者的個人經歷相關。後頭的年表顯示他於十一歲受洗,生長在基督教的家庭環境中。

或多或少每個人在生命中的某些時刻,都會對於人生的意義感到迷惑,如同故事中的人物們,各自懷抱著不同的過去與遺憾。

關於夫妻,或者也可以延伸到家人。傳統東方式含蓄的情感表達方式,是不是會讓很多該說出來的情感,深埋在心裡,錯過了時間?

關於戰爭。殘酷的現實影響到活著的人的生活,一直到入土。雖然大型戰爭的二戰是在六十年前了,但是其實也沒有多遠。人類真是一直在重複一些愚行而不自知。

關於宗教。神是以什麼樣的方式看世人? 祂是愛人還是害人?

關於環境和自然。

這本書,應該滿適合有一些人生經驗之後,再來閱讀。可以啟發人去思考很多問題。小朋友可以讀到什麼,就不是很了解了。

又,一邊打著這篇一邊搜尋,發現其實故事中的角色是圍繞著遠藤的一生際遇而寫。http://www.mental.idv.tw/paper/book/bookdisplay.asp?bcode=135&bookindex=%BE%5C%C5%AA

深河
作者:遠藤周作/著
譯者:林水福
出版社:立緒
出版日期:1999 年 08 月 15 日
語言別:繁體中文
叢書系列:新世紀叢書
規格:平裝 / 344頁 / 25K
普級 / 單色印刷 / 初
ISBN:9578453701
出版地:台灣

2006年9月15日 星期五

How I think about Linux?

跟這篇文章裡 Theo de Raadt 說的差不多。;D

Is Linux For Losers?

本日書籤: Hemidemi 在作什麼?

平常在看一些 blog 時,常會發現底下出現一些「本日書籤」的 trackback, 看起來是程式產生的。順著trackback 連回去的話,會連到某個人的 blog, 通常該篇文章就是滿滿的 link, 名為本日書籤。最近仔細看了看 Hemidemi, 才發現這是它提供的一個功能。把收集在 Hemidemi 上的書籤,發布到自己的 blog 上。

雖然名為備份書籤,跟自己 blog 的讀者分享,用意聽起來好像不錯。不過仔細想想,一來誰看到了一大篇只是滿滿 link (書籤)的文章,會真的順著下去看,或是真的從中可以歸納出 blog 主人的興趣呢?

Social bookmark 如 del.icio.us, 或是 Hemidemi, 想作的無非是藉由相同的 bookmark, 把人們串起來 social。這在它們的主頁面,就該作完了。不想 social 的人,看到 blog 的這篇機械文,有多少比例會興起想 social 的念頭? 所以提供這樣一個將 bookmark 發布到 blog 上的功能,除了使用者可以藉此備份一份記錄以外,最大的用處,可能還是告訴讀者「這篇本日書籤,是 Hemidemi 提供的喔」;換言之,廣告。

更超過的是,它不僅僅是把連結擺在自己的 blog 文章裡,還會幫你去 trackback。這下一來只要誰用 Hemidemi收了書籤,blog 的主人就會被「通知」到。原本trackback 也是要讓人知道有哪些 blog 文章提到了自己這一篇,互相連結出更多思考和想法。但如果這個tackback,只是在通知你,「你好,我把你收入我的書籤了喔」,反過來還比較像是在打自己的廣告。我們已經有夠多的 comment spam 和 trackback spam 了,實在不需要再多一種機器人產生,缺乏social性格的制式留言了。

聽起來是不是很像之前吵得沸沸揚揚的智邦生活館網摘事件呢?

ps.立場聲明: 我是不太喜歡 trackback 的功能的,所以對類似的用法也不太有好感。 <-此人社會化不足

2006年9月11日 星期一

How to find out executables linked to obsoleted libraries and upgrade them

很久很久以前...當 FreeBSD 6.0 Release 時,current 的版號理所當然要向前推進到 7, libc.so 的傳統是跟著主要版號更動,所以 libc.so.6 也就變成了 libc.so.7。

這原本是不會造成什麼問題,因為 make world 之後舊的 library 還是會保留下來。不過有一天好死不好,重新看了 /usr/src/UPDATING, 手賤執行了 make delete-old 和 make delete-old-libs,想要清除一些升級後的遺跡,然後就發現有些 package 無法執行,因為 libc.so.6 不見了。

無法執行當然不是什麼問題,ports 重新 compile 一份就好了。問題是,總不能等執行後發現不能用時,才來 compile。那多不切實際啊。何況有些程式是 X window 下在用的,哪天莫名奇妙出問題,想破頭也不會發現問題在這。所以還是自己先來大掃除一番。

主角1: ldd 找出執行檔link 到哪去
主角2: pkg_which 找出執行檔是誰家 ports 的小孩
主角3: portupgrade

1. find executables linked to old libraries:
# ldd /usr/local/bin/* | less

output like this:
/usr/local/bin/xmlwf:
libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x2807f000)
libc.so.6 => not found (0x0)

the "not found" is your target.

2. find the package it belongs to

# pkg_which /usr/local/bin/xmlwf
expat-2.0.0_1

So it belongs to expat.

3. force to recompile it
# portupgrade -f expat-2.0.0_1

That's it!

Make it shorter by putting 2. and 3. together:
# portupgrade -f `pkg_which /usr/local/bin/xmlwf`


目前還沒有想到如何把 1. 也三步併一步, unix command 用得不熟 XD 如有能人敬請不吝告知。我想應該要用到 perl python 或 ruby 這一類處理文字比較行的工具,不過我都不會 XD

2006年9月10日 星期日

mkdep

mkdep 可算是 make 的輔助工具。

通常,我們在 Makefile 裡寫下 source code 和產生出來的 binary code 的依存規則。當然也有不是 binary code 的場合,比方說用 Makefile 來產生 doxygen 或 latex 文件。原則是,有個 source -> target 的依存性。

mkdep 就我個人的看法,是比較特化給 C 語言用的。它接受原本給 cc 的 CFLAGS 和 SRCS 參數,藉由偷看 cc 的參數,找出 .c 檔和 .h 檔的相依性。它作了一部份 cpp parse 原始檔的前置指令的工作,但不多動原始檔,而是將用到的 header files 記錄在 .depend 裡,提供給 make 作為編譯程式時的額外參考。

source -> target 的相依性,是比較顯而易見的。有什麼樣的原始碼,就產生出什麼樣的 binary code。但對於 header files 來說就不那麼明顯。對於只用到系統一般提供函式庫的場合,header files 可能是永遠不會變的,因此不太需要考慮到這個問題。但如果是同時在修改 header files, 或是它會常常更新,那麼有個程式自動找出它的相依性,就很重要了。當 header files 改變時自動重新編譯,不僅僅是像 Makefile 一樣自動檢查相依性,以減少編譯的時間而已,也能減少因為 header files 版本不同,而遇到的奇奇怪怪問題。尤其是在抽象化得比較完整的 case, header files 可能是一層包一層,讓追問題更加困難。

有經驗寫過或用過 Makefile (也就是使用 'make' 這個指令)的人都知道,如果Makefile 裡的相依性規則沒有寫好,有時會遇到明明某個原始檔更新了,卻沒有重新編譯,以致於程式跑不出想要的結果。如果Makefile 裡有定義 clean: 或 distclean: 這類的 targets, 整個重新編譯過也許可以解決,但這會多花許多重複編譯的時間,而且你還是不知道問題是誰造成的。

同樣的問題發生在更隱誨不明的 header files 時,就更麻煩了。因為最明確的 #include 是寫在 .c 檔裡,不是 Makefile 。哪一天別的小組或是供應商更新了他們提供給你的函式庫 header files, 而沒有提醒你時,你就等著遇到各種奇奇怪怪的問題了。

因為這是在 header files 會更新時,才能顯現出它的好處,一般只是用現成函式庫開發程式,或是只編譯一次原始碼,產出程式來用,而不管程式到底寫什麼, 或到底需要改什麼的人來說,比較體會不到。但在同時修改函式庫或 header files 的人,能利用它就會很方便地減少許多問題和重複編譯的時間。所以現在能想到比較明顯的例子,就是在 FreeBSD 或 Linux 編譯 kernel 時。

FreeBSD 編譯 kernel 的標準用法,是 make depend all install。 Linux 是 make dep image 。這 depend 或 dep target, 就是在執行 mkdep 。當然後來它們的編譯步驟又被包裝得更容易,也許第一眼看不到這些 make 指令,但跟著Makefile 追蹤下去就會發現。

2006年9月7日 星期四

搬開 gnome 路上的大石頭

本來 kde 和 gnome 兩個桌面是在幾台機器上挑著用,反正兩個都作得還有點半吊子,用起來都一樣不順手,就兩個都用用看。用了一陣子,仔細比較起來,gnome 在 ui 的操作性上還是勝出一點點。所以打算把所有的桌面都換成 gnome 。但是在幾台機器上 build gnome2 port 的時候,卻會在半途卡住。卡住的是 scrollkeeper 。configure 吵說找不到xml scheme:

checking for --with-omfdirs... /usr/X11R6/share/gnome/omf
checking for xml2-config... /usr/local/bin/xml2-config
checking libxml2 version... 2.6.26
checking for xslt-config... /usr/local/bin/xslt-config
checking which XML catalog to use... /usr/local/share/xml/catalog.ports
checking for DocBook XML DTD... configure: error: not found. Make sure you have the DocBook DTD installed and ensure that it is registered in /usr/local/share/xml/catalog.ports.
===> Script "configure" failed unexpectedly.
Please run the gnomelogalyzer, available from
"http://www.freebsd.org/gnome/gnomelogalyzer.sh", which will diagnose the
problem and suggest a solution. If - and only if - the gnomelogalyzer cannot
solve the problem, report the build failure to the FreeBSD GNOME team at
gnome@FreeBSD.org, and attach (a)
"/usr/ports/textproc/scrollkeeper/work/scrollkeeper-0.3.14/config.log", (b)
the output of the failed make command, and (c) the gnomelogalyzer output.
Also, it might be a good idea to provide an overview of all packages installed
on your system (i.e. an `ls /var/db/pkg`). Put your attachment up on any
website, copy-and-paste into http://freebsd-gnome.pastebin.com, or use
send-pr(1) with the attachment. Try to avoid sending any attachments to the
mailing list (gnome@FreeBSD.org), because attachments sent to FreeBSD mailing
lists are usually discarded by the mailing list software.
*** Error code 1

Stop in /usr/ports/textproc/scrollkeeper.
*** Error code 1

Stop in /usr/ports/textproc/gnome-doc-utils.
*** Error code 1

Stop in /usr/ports/sysutils/gnome-system-tools.
*** Error code 1

Stop in /usr/ports/x11/gnome-applets.
*** Error code 1

Stop in /usr/ports/x11/gnome2-lite.


把 docbook 和 xmlcatmgr 相關全部砍光光再重來一次也沒辦法。Google 搜尋也找不到什麼有用的東西,於是就這麼擺著,沒辦法裝 gnome 的機器就繼續用 kde。

昨天心血來潮想再看看,於是看看 xmlcatmgr 裝了什麼東西。catalog 檔案 /usr/local/share/xml/catalog.ports 並不在安裝檔案列表裡,似乎是安裝其他 docbook ports 時才產生出來的,但是內容是空的。大概是因此 scrollkeeper 才吵著說找不到可用的 xml 。

剛剛突然想到,如果這個檔案是空的,那是不是應該砍掉呢? /usr/local/share/xml/catalog 會 include 它,而 catalog 似乎應該是個 xml 檔案。如果這樣,大概就是create catalog 時因為檔案已經存在,所以沒有蓋掉它;但又因為內容不是 xml, 所以無法更新它。

這麼一想,把 xmlcatmgr 砍掉,刪掉 /usr/local/share/xml/catalog.ports, 再重新 make install 一次。果然就可以了。這空的 catalog.ports, 不知是哪個東西的遺毒啊。