Hide Menu Bar in Firefox 3.6

Firefox 3.6 開始可以隱藏 Menu Bar 了,所以這樣再搭配上 Tree Style Tab,整個可視範圍就大了起來!不過,也因為這樣,這次主打的 Pesonas 在這種環境下就顯得很無奈了,能妝點的範圍太有限了……。

My Firefox 3.6

接著等著看,HTML 5 能改變世界多少,看什麼時候會真的有 File API 的服務出來。

用 vim 編輯 binary 檔案時,請注意 EOL

用 vim 編輯 binary 檔案的時候,請記得一定要 :set binary 要不然你會和我一樣被 EOL 搞死……

When writing a file the EOL for the last line is only written if
there was one in the original file (normally Vim appends an EOL to
the last line if there is none; this would make the file longer). See
the ‘endofline’ option.

沒有動作的 ntpd

如果你和我一樣看 Clock Synchronization with NTP 這篇設定自家的 nptd 的,然後又在 ntp.conf 加上

restrict default ignore

你就有可能和我一樣,電腦都不會乖乖對時,用 ntpq -p 去查才發現全部 timeout 了。
這個時候你就必須考慮重新設定一下 restrict,再來看看 ntpq -p 有沒有消息了,像是這樣

*ns.cc.sinica.ed 140.109.7.5 2 u 194 1024 377 20.589 -1.374 0.186
+220-130-158-71. 220.130.158.50 2 u 227 1024 377 23.854 -3.935 0.216

對了,偶爾看一下 /var/db/ntp.drift,如果一直都是 0.00 的話也是不好的徵兆啊……

First Firefox Extension

first firefox extension

按照 http://developer.mozilla.org/en/docs/Building_an_Extension 一步一步來就可以了,反而是 Your First Firefox Extension 這篇讓我浪費了很多時間……。

我想我終於感受到 chrome 的概念了。

如果還有時間,基于 Mozilla 的扩展开发也應該是不錯的入門,不過我可能會先去玩一下 NSIS,有機會再回來這邊吧 😀

RHEL 與 yum

因為上頭說叫我接一個東西,結果這個 rpm require 可多了……
但是又不能用 yum 去連 RHN,那該怎麼辦呢?懶惰如我,只好把光碟整個 copy 下來,然後就在本地端(file:///home/hubert/RHEL-ISO/Server)開個 repo 啦。

首先去 /etc/yum.repos.d/ 加上一個 RHEL-Base.repo(名字隨便取的)

[rhel-media]
name=RHEL-$releasever – Media
baseurl=file:///home/hubert/RHEL-ISO/Server
gpgcheck=0
gpgkey=file:///home/hubert/RHEL-ISO/RPM-GPG-KEY-redhat-release

我忘記原本有沒有 rpmbuild 可以用了,不過我想你需要 rpmdev-setuptree 之類的東西幫你建 rpmbuild 和 .rpmmacros,沒有也無所謂,工人智慧無敵。

接著你就要乖乖自己 build SRPM 了,我還是沒有膽量直接拿 CentOS 的 rpm 來用

rpmbuild -bb dhcp.spec

接著

cp ../RPMS/x86_64/libdhcp* ~/RHEL-ISO/Server/
cd ~/RHEL-ISO/Server/
createrepo .
yum clean all
yum upgrade

createrepo 好像還是得從 rpm 裝,不過沒關係,至少之後有 yum 幫你作很多事情了。

btw,剛剛 JM 來關心我……,問為什麼我還不走 XD

CUE Sheet 與 CDDB protocol

昨天我說,也許有機會用 CUE 去 freedb 查詢專輯的 meta data,再順手加上 BOM 以及 UTF-8 編碼,不過看來是我太天真了。

根據 Cue sheet 以及 EAC and Cue Sheets 這兩篇文章的說明,我們根本無法從 CUE Sheet 得到整張專輯的「總時數」,而只能看到每一首歌的開始時間、Gap 等資訊,所以這樣推算起來,我們除了最後一首歌的時間之外,都可以從 CUE 檔得知。(題外話:INDEX 的格式是 1:60:60:75,非常不直覺)

CDDB protocol 在送出查詢時必須計算 discid(這有時候也會出現在 cue sheet 裡面),他的計算方式我就不贅述了,有興趣的可以去翻 Wikipedia 的 CDDB。但是 discid 並不是獨特的(Unique),所以在查詢的時候除了加上 discid 之外,還必須把專輯歌數、每一首歌的長度、專輯播放總時數帶進去,而這個 request 就能夠很快地查詢到對應的專輯名稱

cddb query discid ntrks off1 off2 … nsecs

之後再進一步查詢指定的曲目資訊

cddb read categ discid

所以沒有 nsecs (Total playing length of CD in seconds.),就沒有辦法送出一個有效的 CDDB request 了,所以就算了,我今天晚上就可以看 HBO 播的 Music and Lyrics,然後明天又要上班了(死)。

音樂格式的標籤(tag)與編碼

CDs

id3v1: ISO-8859-1
id3v2.3.0: ISO-8859-1, UTF-16 (with BOM)
id3v2.4.0: ISO-8859-1, UTF-16 (with or without BOM), UTF-8
APEv2: UTF-8
Vorbis comment: UTF-8

根據 ID3.org 的說明,目前對 ID3 tag 支援較廣的版本是 ID3v2.3.0,從這版開始,至少我們多了 UTF-16 的支援。但是那些只有 ID3v1 的 mp3 呢?這實在一個令人頭大的問題。

剛剛稍微找了一下,發現了「Linux下mp3标签乱码问题的分析和解决」與「对 mp3 乱码问题的分析和解决」這兩篇文章,他們也提供了幾種方法,可以把幫你把討厭的 ID3v1 標籤移除,加上支援 Unicode 的 ID3v2 和 APEv2。

那事情就這樣結束了嗎?並不完全是,許許多多的情況下我們會看見 ape 以及一個 cue 檔,這個 cue 檔紀錄歌曲名稱、長度、歌手等 meta data,但是這個 cue 檔也是另外一個編碼格式不明的灰色地帶。就算使用支援度相當好的 foobar2000 也不可免俗的會遇到這個問題,只要 foobar2000 讀取的 cue 檔沒有 BOM,他就會以 ISO-8859-1(還是 CP_ACP 啊)將相關的資訊存回去。這時候,只要乖乖的加上 BOM,一切就天下太平。

也許明天我該來寫一個簡單的程式,把 cue 檔的資訊拿去 freedb 查詢之後,以加上 BOM 的 UTF-8 格式存回去。

這也許是我為什麼喜歡用 FLAC 勝過其他的格式,FLAC 就很單純的使用 Vorbis Comment,沒有別的編碼方法,就是 UTF-8。要帶出門的話,直接丟進 iaudio 系列的隨身聽就好,以後移到別的系統也不會有問題。

不過,iaudio 的隨身聽還真是貴啊~~~~~。