2006年12月30日

塗鴉藝術

將所謂才能,精心思考打磨後呈現出來,造成的震撼是無與倫比的。







他們的網站

2006年12月25日

Babel - 火線交錯

我承認,我實在不喜歡這部電影。導演的上一部片是 21 Grams (靈魂的重量),我也同樣不喜。這位導演的題材總是挑的這麼嚴肅,劇本、演員、整個影片的質感好像就在告訴觀眾:我很認真。這樣下來,實在感覺匠氣太重。如同以前我說 21 Grams 整部片的目的看起來就是打算得獎,或者至少打算告訴觀眾,他是個拍好片子的導演。這樣實在很沒意思啊。

就這種「不知該如何稱呼」的類型電影來講, The Crash (衝擊效應)給我的印象還比較深,因為他傳達的方式更加低調一些,而不是類似 Babel 這種幾乎可以預期的鋪陳。然而 The Crash 感覺上還不算好片,我更喜歡的應該是 Traffic (天人交戰)與 The Three Burials of Melquiades Estrada (馬奎斯的三場葬禮)。Babel 對於美國與墨西哥的問題拍得遠不如三場葬禮,但那已經是影片最好的部份。日本場景中菊地凜子演得非常好,但這無法掩蓋故事本身骨架的空虛:要拍一部講溝通困難的電影,就安排一位慘綠的聾啞少女?拜託....

嗯,不過有點要特別提一下,這部片的大牌演員群們個個中規中矩,演技精彩,這要給予導演掌聲。

2006年12月13日

無名小站正式與 Yahoo!奇摩 簽訂股份購買合約

嗯,這是今天下午四點公開的,詳情大家去看本文,我就不貼了。最勁爆的是最後面那段,我相信這是有排過的啊,壞消息藏後面一點。引用如下:

另外關於認股權的部份

因為白金會員擁有的是無名小站第一次現金增資的認股權,在併購結束後,無名小站股份有限公司已沒有現金增資的需求,所以認股權益就不存在。為了感謝白金會員一路以來對無名小站的支持,白金會員可以獲得好禮三選一的禮物,分別是:

A.無名小站金卡 VIP 一年份

B.無名小站個人網誌出版一份

C.現金500元

請還沒選擇的會員請到 http://www.wretch.cc/etc/feedback 線上點選,我們的服務人員會盡速將禮物送給您。
「認股權益就不存在」,真是簡單有力。當初力挺的會員,現在可是有三選一的好禮大相送喔!

2006年12月9日

Run Windows XP on Debian 'etch' with xen (English version)

Thanks for the request of Mirko Maruhn from Germany. I do need a motive to practice my English. Here it goes.


This is probably the most difficult experience I got from Linux lately. Indeed xen is powerful, but it still got many bugfixes to work on. Once you stepped on one it will take a long time to fix it. One tough nut to crack.

I got Pentium D in my box and it supports VT, so it's possible to execute Windows without any modification to the Window's kernel (which is not a good idea). The related information could be found here.

The box is running on Debian testing (etch). Here is the easiest setup I found so far:

Use apt-get install or aptitude to install the following packages:

linux-image-xen-686
xen-ioemu-3.0.3-1

The rest will automatically installed by dependency. Once you finished, reboot to the grub option "Xen 3.0.3-1-i386". Add a new file called /etc/xen/winxp:

kernel = "hvmloader"
builder='hvm'
memory = 512
name = "winxp"
vif = [ 'type=ioemu, bridge=xenbr0' ]
disk = [ 'file:/home/xen/disk.img,ioemu:hda,w',
'file:/home/xen/winxp.iso,hdc:cdrom,r' ]
#cdrom = '/dev/hda'
device_model = 'qemu-dm'
boot="dca"
sdl=1
vnc=0
nographic=0
localtime=1

Notice the 'disk' line. We have to use the cd image, so the win xp iso file must be prepared first.

dd if=/dev/cdrom of=winxp.iso

Right now we can't actually use the real /dev/cdrom because the qemu-dm that comes with this version seems still got problems. Then we modify /etc/xen/xend-config.sxp, and make sure the following lines are unmarked.

(network-script network-bridge)
(vif-script vif-bridge)

Remember to restart /etc/init.d/xend once you finished. Then

sudo xm create winxp

I cannot run it as root because the SDL will not be able to find the display. Doesn't matter, just sudo it. The win installation screen should appear now. After the installation, mark the 'boot' line in /etc/xen/winxp to let it boot by the default order hd->cdrom->floppy.

The Windows runs fairly fast on xen. It doesn't feel like it's running on a VM, instead it feels like native. I think xen did what it promised to do.

2006年12月8日

2006年12月7日

用 at + zenity 做簡易提醒

以前 kde 底下有一些無聊但有趣的小工具,例如說泡了咖啡或茶以後點一下,過了幾分鐘就提醒你泡好了。這個對工程師來說超有用,因為一認真寫程式,保證會忘記泡到冷掉。現在都是用 gnome ,這類的 applet 我猜應該是有,不過都沒在預設安裝中。事實上這應該直接用指令辦到,彈性更大。

at 這指令可以一次性的指定甚麼時間做什麼事情,而 zenity 可以用 gtk+ 在螢幕上直接顯示圖形的對話框,兩者加起來就可做到想要的功能了。

john@capricorn:~$ at now + 3 min
warning: commands will be executed using /bin/sh
at> DISPLAY=:0.0 zenity --info --text 三分鐘到啦!
at> <EOT>
job 16 at Thu Dec 7 23:38:00 2006

最後那個 <EOT> 是按 Ctrl + D 打出來的。這指令拿來做鬧鐘之類的也蠻方便的,把 zenity 替換成隨便一個音樂播放程式就好啦。值得注意的是,at 指令預設不會抓 TERM 或是 DISPLAY 這些環境變數,所以指令中如果要用到的話,必須要自己輸入。

Corega sucks!

Corega 的 IP 分享器 CG-WLBARGS 毫無疑問是我用過最差的。功能簡陋,一些該有的細項設定全都沒有,而且整個系統蠢斃了的設計成必須跟 Windows 綁在一起。 IP 分享跟作業系統的種類,根本完全不該有dependency,竟然硬是設計成有,我實在是很佩服。

機器上的 firmware 根本是未完成的狀態,感覺連基本的除錯都還沒做完就趕著賣,很多簡單的動作都會自動重開機,導致回應相當慢。在系統中,每台電腦都必須在「PC資料庫」中註冊,才能作為其他功能選擇的目標。而很不幸的,這部份的電腦名稱看來似乎是與 NetBIOS name 相關,以白話來說,大致就是會去認 Windows 電腦名稱的意思。這導致所有我沒跑 samba 的 Linux 電腦都不能正確辨認,也不方便作為服務對象。此其一。

其二則是,作為整個系統進階部份可說最關鍵的功能,這個 PC 資料庫的程式,感覺上卻並沒有寫完。整個流程是要先用名稱查詢,才能繼續進行其後動作。若是只有 mac address ,沒用。這設計導致對目前沒有開機或是執行 Linux 沒跑 samba 的電腦,由於無法辨識出電腦名稱,就算有了 mac address 也甚麼都不能做。

而新增後,預設都是 LAN 連線,雖然明明是 wireless 網卡的 MAC,也無法修改成 WLAN。後來觀察一陣,才發現有時這功能只負責顯示,按鈕只是擺好看的(馬的那你幹嘛把按鈕放上去啊?java script 不會寫嗎?)。而明明是修改,按鈕卻寫新增,連 UI 上不同功能時換一下按鈕的文字,這麼簡單的事情都沒做。虧他們還用 PHP 這麼高階的東西寫,寫出來卻比以前我們用 C 寫的 CGI 還爛,這還真是不容易辦到咧。

Wireless 的連線控制不 work. 同一台電腦、同一張網卡,明明在 Windows 底下已經可以連線,隔幾天開到 Linux 下,系統就莫名其妙一直問我根本沒設的密碼。原來是因為若隔一段時間才開到 Linux 下,系統會認不得 NetBIOS 電腦名稱(因為沒有),所以不給連,還要先用 Windows 開機騙他一下,才會正常。

簡而言之,以上部份需要所有電腦都是 windows,而且大家都在開機上線的狀態下,才能正確工作。但是,深入使用一些其他的功能後,才知道,能夠正確工作的功能已經不錯了。

防火牆:只有高中低三種設定,設下去以後究竟意味著甚麼完全沒說明。virtual server 的功能根本沒用,明明設了,還是一樣 connection refused. 我之前一台 MSI 的 IP 分享器上超好用的內部 dns 功能,這裡也完全沒有。另外一個更鳥的地方是:若是沒有登出就關掉管理網頁,然後用其他台電腦想進入管理,不行,因為另一個地方沒登出。所以此時你要用完全一樣的那台原來的電腦,開同個網頁,然後選登出,另一台才能進來。不然,就請你乖乖等十分鐘到(坐穩了)五小時吧!

整台機器對於網管來說根本就是惡夢,IP 分享器這麼成熟的產品,把網頁區分成基礎跟進階就可以符合大多數人的需求,Corega 卻連這點也辦不到,基礎的功能不好用,進階的功能不完整,我實在不知道這種產品做出來幹嘛。這台機器是申辦 so-net adsl 送的。我想一台機器會搞到要送出才能出清,大概不是沒有原因。

2006年12月6日

APIC problem

2006/12/08 更新:原來 Shuttle 的 BIOS APIC 還不能亂關,關掉以後 due core 竟然少一顆 cpu,剛剛才發現... 換成把 BIOS 的 APIC 打開,但是 kernel 加上 noapic 參數就可以了。

工作電腦在 Debian Testing 底下一直不穩,有時候幾天不關放著就 hang 住了。這台機器 (Shuttle SS59G) 的 power supply 不太好,電源接頭感覺不穩,有時候動到一下電源就重開機。很可能 hang 住是電源品質造成的,不過還是要檢查一下是否有軟體問題。看了一下 system log,有如下的訊息重複出現:

APIC error on CPU0: 40(40)

大概查了一下,這應該是 sis 晶片組常見的問題,首先我試著 update BIOS 看看。不過很不幸的,雖然我很辛苦的做出了 usb 開機碟,但是 awdflash 每次跑到一半就掛掉。後來網路翻找一下,發現在 LinuxBIOS 這網站裡頭竟然有 flashrom 這種好東西,直接在 Linux 底下就可以更新 BIOS,不用開到 dos 底下了。可是更新重開以後,訊息照樣出現,乾脆進 BIOS 裡頭把 APIC 關掉,錯誤訊息就不會出現了。後來用到現在也沒當,不知道兩者間有沒有關係。

順帶一提,我做 usb boot disk 的方法如下:
  • Download and compile makebootfat

  • Install syslinux if you don't have it.

  • Prepare usb disk content under a directory, say "/home/john/tmp/usb". I put boot98sc.ima (Win98 boot floppy image file) and syslinux.cfg under it. The content of syslinux.cfg:

    default dos
    label dos
    kernel memdisk
    append initrd=boot98sc.ima

  • Under /usr/lib/syslinux, execute

    makebootfat -o usb -Z -Y -b ldlinux.bss -m mbr.bin \
    -c ldlinux.sys -c memdisk /home/john/tmp/usb/

Now ldlinux.bss and mbr.bin will take the system to ldlinux.sys, the syslinux boot loader. Then the boot loader will try to locate syslinux.cfg, load memdisk by instruction, finally load the win98 boot disk image to simulate a floppy boot.

The DOS will recognise the floppy image as A:, and the content of the real USB disk as B:, which is a good thing, since you could put your tools inside the USB instead of the small floppy image.

原來申請網路也不是容易的事情啊。

最近新房子成功租出去了,終於生活輕鬆許多,然而為了滿足房客對於網路連線的要求,可是讓我好好上了一課。原來,就算在台北,申請網路也是可以很困難的呢。

首先,房客的要求如下:網路越快申請到越好,download bandwidth 至少 2Mb,需固定 IP 以配合 VPN 的需要。聽起來好像不怎麼難吧?

於是在上週二首先打電話給慣用的 ISP,多申請一支 2Mb/256Kb 的線路,對方告知要到兩週後的週五才能安裝。既然此事是由龔斷的鴨霸中華電信決定啥時安裝,ISP 也沒甚麼能做的,我也就不要求了。接下來在安裝 cable TV 時,第四台公司告知,可以免費試用東森寬頻一個月,雖然寬頻線路因為都是大家分享的關係,頻寬通常不穩定,不過至少可以填補 ADSL 裝好之前兩週的空白,於是我就答應試用。

到了約定的日期,我等了一個上午,應該來裝 cable modem 的人卻完全未出現。下午,我撥了客服電話,出於好奇查詢一下,對方表示,由於本棟大樓的 cable 安裝在建物以及裝潢之中,無法安裝 cable modem。我不禁感到很有趣,不能裝,我可以接受,不過因為不能裝而不來,難道不用通知客戶一下嗎?對方說,會替我反應。

好,看來 cable 的路子斷了,沒關係,我還有 ADSL。時序匆匆,下個週一,我接到中華電信打來的電話。對方說,由於距離機房 3680m,超過三公里,所以不能裝 2M 的線路。要裝,只有 1Mb/64Kb。天啊,這種頻寬可是很久沒看到了。

新房是捷運上方共構,很大一棟,少說也五百戶以上。這五百戶,難道只有 1M 的 ADSL可用?更別說一樓的那一堆店家跟銀行、公司了。這實在不太可能。想必一定有其他連線吧!當天我到大樓管理處辦事時,查了一下,果然有,簡單寫著網路以及某先生的電話。馬上撥打,對方說,由於我們買的是預售屋,可享六個月免費網路,4Mb/400Kb。這真是喜訊啊,不過聰明的讀者們一定會跟我一樣懷疑:那他們這家資訊公司的網路是哪來的呢?

結果,他們說,這社區有 FTTB,也就是光化社區,中華電信牽了條光纖過來。此時我整個傻眼,既然有光纖,中華電信的人幹嘛不告訴我,還跟我說只有 1Mb 可裝?如果是自行申請,一般的光纖可是 10Mb/2Mb 這種頻寬呢!這也未免太不會做生意了吧!免費網路雖然好,可是也是共享頻寬,所以尖峰時間堵車,加上沒有固定 IP。聽起來,我還是得去申請一條 FTTB,並且把浮動 IP 申請為固定,才能符合需求。

於是馬上再找中華電信的客服,這下妙了,不管我怎麼問,他們就是說沒有,本大樓沒有光纖。可是資訊公司的人明明就正在用光纖啊!太神奇了吧!此時一位本就認識的住戶(兼仲介)幫忙,告訴我他們用的也是光纖網路,並且給了我一個裝機師傅的電話。馬上打過去,原來是中華電信的施工單位。施工單位都說可以裝了,這下總比客服準了吧?很高興的表明我要申請,然後跟他們反應客服真的很奇怪,幹嘛說沒有 FTTB。對方答應幫我查,於是我就高興的繼續吃午飯啦。

吃了幾口,電話響起,對方口氣帶著抱歉。我心想不會吧,這樣還可以出事?對方說,由於我們那社區的光纖已經滿載,需要等待備料,才能裝新的。好吧,備料就備料,我等了一週多,再等到下週也沒差吧。請問備料要多久呢?

「喔,這個,明年二月就可以準備好了....」

2006年12月3日

Rapid Web App Development

繼昨天的想法後,收集到一些相關資訊:
  • Zope 其實頗大而複雜,被人譬喻為"learning cliff",Django 類似於 RoR (Ruby on Rails),或許是更好選擇。下一步計畫大概是把 Zope, TurboGears, Django 都下載裝來玩玩。

  • 跟我原先想法相同,當你要做的是 "serious app for huge business",也就是有一堆跨平台、legacy system 等種種企業的複雜需求,那麼你需要的應該是 Java EE。然而如果只是個 "web interface for database" 性質的 web app,那麼快速開發的工具是恰當的。

目前有個想法是,就如同 open source 目前的趨勢,應用程式基礎的部份採用 C/C++ 等等效率佳的語言來寫 library,然後在 UI 層用 Python 寫介面,呼叫底層 library,這樣的方式兼具兩者之長。那麼 web app 是不是能走同樣的路子,用 Python 解決介面問題,但是用 Java 來製作後端平台?

要研究這個問題,必須找出這兩個平台之間的黏性如何。這是下一個課題。

2006年12月2日

Time for a new language?

以快速開發為考量的話,Java 仍然是個過度肥胖的怪物。若是不涉入 Java EE 這可怕的領域,光是 open source 的 frameworks 就已經很麻煩了。好處是 Java 人多、支援多,所以直接的需求也多。若是要求個一官半職、穩定薪水,熟習 Java 是個不錯的選擇。尤其大部分的人會而不精,自認為精的人也多半不見得,把這語言練到強些應該是很好的自我投資。

不過若是想自己開發,或者說面對的使用者只要結果,並不 care 採用的語言,選擇就頓時自由了起來。這是我目前主要思考的領域。若是接案,將規格與採用技術都嚴格定義好的專案,經常都根本不在我們想要的市場。若自行開發,那麼使用者的 feedback 與容易改寫、開發速度就成了最重要的因素,此時 Java 不見得是最佳解法。

當然 Java 有他的優勢在,對於大型系統、跨平台跨OS、包含legacy system的開發,Java EE 的複雜性是必須的。然而除此情況之外,我們必須思考,如何用最適當的工具完成任務。當你能夠更快速的回應使用者的需求,以更短的時間與更低的開發成本,做出符合所需的成果,那就是恰當的選擇。

這是 E 領域與 S 領域不同的思考模式,不過很明顯我尚未跨入 B 領域。以上這段話請參考窮爸富爸系列(我又來了)。雖然如此,不過我並不在乎,人生就是要做自己愛做的事情,學新的電腦技術,至少對目前的我來說還是很有趣的。

下一步的目標是:精研 design pattern, agile software development, 學習 Python,然後學 Zope.

P.S. 延伸閱讀一篇:「EJB's 101 Damnations

another p.s. Zope 目前已非我首選,因為學習曲線太陡。請參考另一篇文章。