2008年9月22日 星期一

flavors of entanglement by alanis morissette


可以說是alanis morissette歷來最好的一張作品
女性搖滾很重要的歌手alanis morissette的新作品flavors of entanglement,我其實買了有一陣子了,也聽了很多遍了,個人感覺這是她歷來最好的一張作品
嘗試了融合東方風格在citizen of the planet,不知道為甚麼,這首歌讓我想起中東那邊的感覺,阿拉丁神燈這類的東西
一路帶著輕盈的腳步搭配輕快明亮的電吉他的旋律,引導出underbneath,在進入電子迷幻straitjacket的瘋狂狀態
後面的歌曲就比較嚴肅一些的感覺了,也比較探討一些很深入的情感上的議題,節奏也舒緩了下來了,跟前面幾首歌有很明顯的區別,用這樣的對比來帶出她心裡的感受跟起伏
歌名及歌詞一如以往,她的音樂用字遣詞越來越深澳,我想這已經是她的特色了吧,呵呵
唱片行買的到的好像都是雙cd的版本,cd 2裡面的歌很像是一些實驗風格的東西放在一起的感覺,每首歌都有自己不同的風格,喜歡多變風格的人從cd 2開始會是比較好的
我個人最喜歡tapes,再來是underbneath,not as we , orchid這幾首
特別推薦tapes的原因是因為喜歡這首歌的旋律,尤其是電吉他的部分,深沉,可是卻又很明亮,明亮中又包含著許多黑暗面的感覺,搭配沙啞的嗓音,真是讚
很難得能夠有這樣的作品能夠一直突破之前的作品的範疇的,這張就是很少數能夠做到的作品
沒話說,的確是她歷來最好的作品

2008年9月9日 星期二

敗家~~~nokia 6120 classic

前一陣子原本的舊手機,大概也是因為用久了,開始會自己自動關機,雖然這也是個不錯的新功能啦,少了一些不想接的電話,呵呵
可是畢竟還是有點麻煩,剛好女朋友也想換手機,就一起換同樣的手機
http://www.nokia.com.tw/A4702104
http://shopping.pchome.com.tw/?mod=item&func=exhibit&IT_NO=AEAB3J-A20208585&SR_NO=AEAB3J&ROWNO=34
在詢價的過程中,發覺,某些店家會把粉紅色的提高售價,可是有些店家卻說,價格是一樣的,可見有些店家是故意抬高粉紅色的售價的
這支手機,說實話,算是簡單好用的類型,沒有太多功能,可是好像內建的功能也不少了,只是大概也超過我常用的範圍了
有些功能就會是做一半的,例如,網路連線只有3.5g,沒有wifi,也沒有gps,可是卻有gps軟體已經安裝在手機裡面了
定位就是在一般的使用者吧,不會需要太複雜的功能,可是常用的大概都有了吧
用了這幾天,還沒感覺到有什麼問題,除了一定會有的超容易沾指紋,除了螢幕有點小,除了按鍵以男生來說有點小,除了沒有內建push mail client,除了nokia原廠的push mail client不小心忘記支援這支手機之外,大概也沒有甚麼缺點了吧,算是目前市面上價格很親民的s60系統的手機了

2008年9月3日 星期三

談談FreeBSD如何更新系統

用FreeBSD很久了,深深感覺到它的功能強大,但是同時也需要有一台強大一點的機器來跑,用起來才比較爽,因為有些東西還是自己用ports編譯比較有彈性阿
要了解怎麼升級,主要有兩個部分,一個是world , kernel,也就是FreeBSD系統本身,稱為src tree,另外一個部分就是3rd party的東西了,這些東西稱為ports tree
所謂的world就是指整個系統,如內建的指令,內建的service等等,除了kernel以外的東西,而kernel也就是核心,是負責讓world來跟電腦的硬體溝通的程式,用途是跟linux的核心是一樣的

在談怎麼更新系統之前要先了解cvs這個概念,所謂的cvs就是一個功能強大的版本控制系統,可以讓程式開發專案的團隊成員,將新的程式碼加入就有程式碼中,並產生差異報告,也能夠將程式還原到某一個階段的狀態,還可以分權限控管每個成員對特定程式碼的權限,所以是個很受歡迎的功能,很多free software的專案都是用這個方式來開發,而每一個程式碼都會有一個自己的cvs id,用來在系統中辨認特定的程式碼,每個patch也會有一個cvs id,用來組合成新的程式碼,而新的程式碼也會有一個新的cvs id,以此類推
了解了這個之後,再來看src tree , ports tree這兩個,src tree放在/usr/src/裡面,ports tree在/usr/ports/,這兩個目錄裡面的每一個檔案都是一個程式碼,也都有自己的cvs id
系統升級就是從cvs server上抓新版本的程式碼到自己的系統裡面,而以前的話是用cvsup這個程式(需要從ports安裝),或是用make update這個指令,現在的系統內建了一個csup這個指令,只要指定好相對應的系統版本就可以將src tree , ports tree更新到想要的版本,我個人建議就用內建的csup就好

再來談FreeBSD的版本有哪些,目前有這幾種,current , stable , release
current就是還在開發中的,每天都會有新的程式碼加入world , kernel中,會是production release的下一版,也就是還在開發中的版本,通常都是心臟很強的系統管理者在用的,或是有在開發world , kernel的core team成員在用的版本,不保證功能都會正常,也不保證穩定性,這邊指的版本是大的版本編號,例如從7到8這樣的大版號跳躍
release顧名思義就是發行版,release只要發行了之後,程式碼就不會再做更動了,只會有安全性修正的patch會加進來,比較適合做為server用途,追求穩定的時候就適合使用release版搭配security patch
stable並不是所謂的穩定版,它只是目前的release版本到下一個release版本之間的版本,每天都會有新功能加進來,不過和current比起來,算是比較穩定的,下一個release版本的新功能會在stable先做測試,新功能測試的差不多之後就會變成新的release,適合喜歡用新功能,可是又怕不穩的人,或是自己的工作站,自己的desktop這類的用途,這邊指的版本是小的版本編號,例如從7.0到7.1這樣的小版號跳躍

目前系統是哪個版本,跟想要升級到哪個版本會影響csup所使用的設定檔內容

再來談csup用的設定檔,這部分可以看/usr/share/example/cvsup/,有些東西就不用看了,只要看兩個就可以了ports-supfile , stable-sufile
這兩個檔案的內容很類似,所以只要看懂一個就可以了,重要的是這些
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=CHANGE_THIS.FreeBSD.org (指定使用哪一台cvs server)
*default base=/var/db (指定存放資料庫的位置,真正的位置在/var/db/sup/)
*default prefix=/usr (指定位置,預設值就可以了)
*default release=cvs tag=. (ports只有一種版本,就是current)
*default delete use-rel-suffix
ports-all (指定是更新ports tree)
src-all (指定是更新src tree)

我自己用的ports tree更新設定檔,指定使用cvsup3.tw.FreeBSD.org這台cvsup server來更新,預設更新所有的ports tree
# Defaults that apply to all the collections
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=cvsup3.tw.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix

# If you seem to be limited by CPU rather than network or disk bandwidth, try
# commenting out the following line. (Normally, today's CPUs are fast enough
# that you want to run compression.)
*default compress

## Ports Collection.
#
# The easiest way to get the ports tree is to use the "ports-all"
# mega-collection. It includes all of the individual "ports-*"
# collections,
ports-all

我自己使用的src tree更新設定檔,也是使用cvsup3.tw.FreeBSD.org來更新,然後因為我安裝的系統是7.0,我也不打算每天讓電腦都在編譯新程式,所以只採用release版的security patch,所以只有指定*default release=cvs tag=RELENG_7_0這個參數
這個參數要注意的是tag=RELENG_7表示使用FreeBSD 7 stable這個src tree來更新,tag=.表示使用current,心臟很強的話就用這個
哪天7.1出來了,要升級到7.1的話就改成tag=RELENG_7_1這樣就可以了
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=cvsup3.tw.FreeBSD.org
#*default host=cvsup.tw.FreeBSD.org
*default base=/var/db
*default prefix=/usr
# The following line is for 6-stable. If you want 5-stable, 4-stable,
# 3-stable, or 2.2-stable, change to "RELENG_5", "RELENG_4", "RELENG_3",
# or "RELENG_2_2" respectively.
*default release=cvs tag=RELENG_7_0
#*default release=cvs tag=RELENG_6
*default delete use-rel-suffix

# If you seem to be limited by CPU rather than network or disk bandwidth, try
# commenting out the following line. (Normally, today's CPUs are fast enough
# that you want to run compression.)
*default compress

## Main Source Tree.
#
# The easiest way to get the main source tree is to use the "src-all"
# mega-collection. It includes all of the individual "src-*" collections.
# Please note: If you want to track -STABLE, leave this uncommented.
src-all

這些都改好之後就用指令csup yourcvsupfile就可以更新了
csup會抓/var/db/sup/ports-all/ , /var/db/sup/src-all/ 這兩個目錄裡面的資料來跟cvs server上的cvs id做比對,然後判斷哪個檔案要下載新版本,哪個檔案要刪除,讓src tree , ports tree保持跟cvs server上的版本相同
ports tree的話是看/var/db/sup/ports-all/checkouts.cvs:.這個檔案裡面的資料來比對
src tree的話是看/var/db/sup/src-all/checkouts.cvs:RELENG_7_0
這裡可以看到 :後面會接著目前系統上的src tree , ports tree是對哪個版本作更新
檔案內容大概是這樣
F 5 1220288153
D src
C src/COPYRIGHT,v RELENG_7_0 . 2#871#110#12038331945#207473#444 1.8.4.1 2008.01.
c src/CVS-INFO,v RELENG_7_0 . 2#871#19#8562516724#55803#444
c src/HW.TROUBLE,v RELENG_7_0 . 2#871#19#8203481294#30043#444
C src/LOCKS,v RELENG_7_0 . 2#871#110#12126956594#28593#444 1.3 2006.01.13.06.51.
C src/MAINTAINERS,v RELENG_7_0 . 2#871#110#12127882325#589763#444 1.145 2007.05.
C src/Makefile,v RELENG_7_0 . 2#871#110#12198661956#3101063#444 1.341.2.1 2007.1
c src/Makefile.alpha,v RELENG_7_0 . 2#871#19#9033105495#346543#444

D src這個表示/usr/src/這個目錄
C /src/COPYRIGHT,這個表示/usr/src/COPYRIGHT這個檔案,還有他的版本,以及cvs id

src tree更新好之後一定要看的文件是/usr/src/UPDATING,裡面會說明更新了些甚麼,如果要真的升級的話需要做些甚麼事前準備,怎麼升級,這些都會在這個檔案裡面說明
如果是要上security patch,傳統上是這樣做
cd /usr/src/
csup yourcvsupfile
make buildworld
make buildkernel KERNCONF=kernelconffile
重新開機到single user模式
mount -a
cd /usr/src/
make installkernel KERNCONF=kernelconffile
make installworld
重新開機,確定能夠正常開機之後用uname -a檢查系統版本有沒有升級,如果是上7.0 release的security patch的話,會看到像是這樣的版本編號
FreeBSD freebsd.damon.tw 7.0-RELEASE-p3 FreeBSD 7.0-RELEASE-p3 #5: Mon Jul 14 14:21:23 CST 2008 root@freebsd.damon.tw:/usr/obj/usr/src/sys/GENERIC amd64
那個7.0-RELEASE-p3的p3就表示是第3個security patch

另一個更新workd , kernel的方法是用freebsd-update這個指令,可以直接抓binary格式的更新檔來安裝
設定檔在/etc/freebsd-update.conf,基本上設定檔都用預設值就可以了
要升級security patch的話下
freebsd-update fetch
freebsd-update install
一切順利的話,重新開機之後就是上好patch的版本了
要升級到下一版也可以,下
freebsd-update -r 7.1-RELEASE fetch
freebsd-update -r 7.1-RELEASE install
重開機之後就是新版了

另外如果是ports tree的話就是要先從ports tree裡面安裝portupgrade了
portupgrade是用來處理用ports安裝的軟體的升級問題的,這裡就沒有甚麼所謂的security patch版本的東西了,所有有安全性問題的版本,就是直接升級到沒有問題的那一版,所以可能會直接跳到最新的版本,當然有時候可能會有一些問題
cd /usr/ports/ports-mgmt/portupgrade-devel
make install clean
rehash
這樣就安裝好了
安裝好之後
cd /usr/ports/
make fetchindex
cd /var/db/pkg/
portupgrade -a
至於詳細的用法,可以參考man portupgrade裡面的說明