2007年12月27日

window$的虛擬磁碟機

話說~M$從Unix借去不少概念性的指令,如Linux的一些mount指令,M$應該也有相對應的指令
寫這個段落有點掙扎,本來想要讓這個blog全部是Linux的東西,但是這次破例寫了M$的指令

subst 顯示當前的替代路徑
subst [磁碟機代號] [路徑]
將指定的路徑替代為磁碟機代號,該路徑將作為驅動器使用
subst /b 解除


這樣的好處是,可以把一些特殊的應用路徑,設定為固定磁碟機代號,再設定環境變數的時候可以方便一點

2007年12月19日

Free Image Viewer

在M$環境底下,一般人常用的看圖軟體很多是ACDSee,其實這軟體發展到目前差不多已經到了一個極致
開始加入一堆有的沒的Orz,最近好像變成了啥PhotoManager的,速度上來說也是蠻快速的,可是軟體是愈來愈臃腫

但是這次的主角是FastStone Image Viewer3.2,這家公司出了不少好東西,標題上的Free是免費的意思,個人使用免費
這軟體我之前就使用過,不過當時好像是2.x版本,真的是慘不忍睹,最近從新看到他,以經煥然一新
但是還是有些不大滿意的地方,不過已經可以使用,預設上面有些要修改的

比方說,上面會出現一些綠色的檔案名稱,這真的是很Orz;還有另外一個要詬病的是預設按下左鍵是放大鏡功能~囧

我把一些我認為要修改的地方用紅色的圈圈標示出來,有需要的人可以參考看看,我想這軟體除了速度稍稍比ACDSee慢之外
真的還是不錯哩~另外他的FastStone Capture也不錯,如果有需要常常擷圖的朋友,這也是個不錯的小工具

2007年12月1日

CF卡裝Linux

這是轉貼別人的文章
===================================
CF卡使用sandisk extreme4 4GB
CF2IDE是用網拍上常見的單卡母頭, 有支援DMA的那款
安裝作業系統為linux(gentoo)

將CF卡插上轉卡
轉卡上的電壓調整為3.3V
接上電源, 插上主機板
開機後在BIOS可以抓到正確的容量及資訊
(7年前的32MB CF卡,會進不去BIOS)

在作業系統的偵測時
Probing IDE interface ide0...
hda: SanDisk SDCFX4-4096, CFA DISK drive
hda: drive side 80-wire cable detection failed, limiting max speed to UDMA33
hda: selected mode 0x42
hda: max request size: 128KiB
hda: 8027712 sectors (4110 MB) w/1KiB Cache, CHS=7964/16/63, UDMA(33)
hda: hda1

只能上到UDMA33, 因為沒有80-wire的CABLE?! 直接插在主機板上也不算哦?
小小的1KB CACHE... 呵呵, 真有趣~

用hdparm來看一下
# hdparm -I /dev/hda

/dev/hda:

CompactFlash ATA device, with removable media
Model Number: SanDisk SDCFX4-4096
device size with M = 1024*1024: 3919 MBytes
device size with M = 1000*1000: 4110 MBytes (4 GB)
DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4
Commands/features:
Enabled Supported:
* Write cache
* CFA feature set
* CFA advanced modes: pio5 *pio6

看來CF應該是可以上到udma4,
上不去應該是轉卡的問題, 或是真的要裝條80-wire的CABLE給它偵測(改天來試試)
這張卡有支援到pio6? 買相機的時候怎麼知道相機是走啥模式呀...

再來設定一下CF卡
# hdparm -c1 -d1 -W1 /dev/hda

/dev/hda:
setting 32-bit IO_support flag to 1
setting using_dma to 1 (on)
setting drive write-caching to 1 (on)
IO_support = 1 (32-bit)
using_dma = 1 (on)
write-caching = 1 (on)

原本的32-bit IO, write-caching是關閉的, 將他開啟

如果再加設transfer mode至udma4的話
# hdparm -X udma4 /dev/hda

/dev/hda:
setting xfermode to 68 (UltraDMA mode4)

# dmesg
hda: UDMA speeds >UDMA33 cannot be set

強制設定也是不過, 後來去看了一下轉卡的那一小張說明"紙"
上面寫支援到ATA-33... 冏~ 說明書還是要先翻一下的

再來是速度的測試
# hdparm -tT /dev/hda

/dev/hda:
Timing buffered disk reads: 88 MB in 3.02 seconds = 29.16 MB/sec

速度接近ata33, 和設定相符, 但是未達到CF卡的極限, 也在預料之中
瓶頸卡在轉卡...

測試完後來開使安裝系統, 當成作業系統碟
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.9G 2.0G 1.9G 52% /

小弟是安裝Gentoo linux(己經用滿久了, 成習慣了, 大大要灌XP應該也是可以啦)
基本的系統WINDOW+GNOME+FIREFOX約吃掉2G的空間
剩2G可以使用

使用起來開機的速度差不多, 開機不會讀入大量的資料, 大多在做硬體偵測
進入X-WINDOW後, 載入的速度明顯加快,
我想加快的原因是CF卡的RANDOM ACCESS TIME超小, 以及大量載入片段資料及小檔案得到的結果
雖然原本的7200轉的硬碟的讀取速度較快, 但碰上東讀讀西讀讀的操作條件就輸了
這也是硬碟天身的限制

這是硬碟的速度測試
# hdparm -t /dev/sda

/dev/sda:
Timing buffered disk reads: 218 MB in 3.01 seconds = 72.31 MB/sec



心得

以容量CP值來講, CF拿來當硬碟是非常不划算的, 功能上也沒有差多少
加快速度的部份也沒有保證, 等於是虧本生意
不過小弟看重的有幾點, CF卡較硬碟省電, 不怕震動, 發熱量低, 體積小
但這幾點只有用在筆電上才有效果
下一步小弟要去找台10吋的小筆電來試試, 有心得再和大家報告
家裡要開動物園的, 還是只能用大容量的硬碟用力操了


PS. 本文將同時POST在fourms.gentoo.tw

Full Circle--Ubuntu的初學者月刊

Fulll Circle這本月刊我很早就知道了,但是一直沒有再去看(只看了第一期Orz)
這一本讓我想起之前有一本Linux Magazine也是為了初學者寫的,但是好像到了一半就停了,很可惜

其中有一個章節對我比較有吸引力的是scribus,它似乎是專業的編輯軟體,不過過去我知道這個軟體的時候,他中文有問題
我並不想要自己編譯,因為這樣可能會有套件管理的問題,我是一個懶惰的人

看著外國的雜誌,讓我比較訝異的事情是中西文化的不一樣,對於外國人DIY是很自然的事情,Linux對他們來說是一個"工具"
他們會嚐試把他改裝,裝到車上或者哪裡去,例如作成隨選的播放器或者說作成簡單的機器操控的系統
這對他們來說似乎是一種生活樂趣,亞洲這邊就比較偏向一般正常的電腦應用,不然就是把他當成賺錢的工具

真的是外國的創意比較多,亞洲人應該可以多多學習,不要老是死板板的,這樣生活會比較有多一點的樂趣^^

2007年11月30日

gnome的小技巧

來自Ubuntu 正體中文站 討論區 的"ㄚ小"
GNOME應用技巧:
1、視窗最大化時,直接拖標題欄,可立刻縮小視窗,如果不松手,再拖回桌面邊緣,又可馬上恢復最大化。
2、快速拖動視窗:按住 Alt 鍵,然後在任一視窗拖動鼠標左鍵,即可拖動視窗。
3、在桌面或文件管理器中直接安 / 就可以輸入地址,打開nautilus文件管理器。
4、快速搜索:在 vi 或 Firefox 中直接按 / 即可進入搜索狀態。
4、如果文件夾裡面很多文件,比如/usr/bin下面,則可以直接輸入文件名快速定位。
6、可在 工作區切換器 中直接將一個視窗從一個桌面拖到另一個視窗。
7、工作區切換:a、在 工作區選擇 圖標上滑動鼠標滑輪。 b、先同時按住 Alt + Ctrl 鍵,再按鍵盤上的左 右方向鍵。
8、切換視窗:a、先按下 Alt鍵,再按 Tab 鍵。 b、任務欄滾動鼠標滑輪。
9、修改目錄圖標:可將文件管理器中的圖片直接拖到文件夾屬性所在的圖標上。
10、鼠標中鍵直接單擊 滾動條 的空白處,屏幕即滾動到那處。
11、快速粘貼:先在一個地方選中文字,在欲粘貼的地方按鼠標 中鍵 即可。
12、等效中鍵:a 、按下滑輪等效於中鍵。 b、同時按下鼠標 左右鍵,等效於中鍵。
13、壓著shift拖動視窗可以讓視窗吸附在屏幕的邊緣。
14、快速重啟X服務: 同時按下: Alt + Ctrl + Backspace 三個鍵。
15、打開「運行」視窗: 同時按下 Alt + F2 鍵。
16、螢幕照相 全屏:直接按下 PrtScr 鍵。 當前視窗:同時按下 Alt + PrtScr 鍵。 延時照相:在 終端 或 「運行」視窗中輸入命令: gnome-screenshot --delay 3 ,將延時 3 秒後照相。
17、純字符終端滾動屏幕: 同時按下 Shift + PageUp 或 Shift + PageDown。
18、終端命令補全: 輸入命令的前幾個字符,再按 Tab 鍵兩次,可顯示所有與輸入字符前身匹配的命令。
19、快速呼出視窗欄菜單: 同時按下 Alt + 空格鍵 ,可顯示視窗欄菜單。
20、scim 下快速切換中英文狀態: 單獨按 Shift 鍵。
21、在nautilus的地址欄裡輸入」" fonts:/// "就可以查看本機所有的fonts
22、nautilus中中鍵按兩下文件夾是打開在新視窗,和shift+左鍵同等效
23、ctrl+滾輪是縮放圖標
24、直接將 文件管理器 中的文件拖到 GNOME終端 中就可以在終端中得到完整的路徑名。
25、網站鏈接和圖片可直接拖放到桌面或者目錄,可以馬上下載。(無名不行 無名請右鍵view page info 找到圖片 再按save)

以上功能有些在kde中也是共用的,可以試試看

結論是在linux裡中鍵還真好用 哈哈
要是沒有寫到的請幫忙補充 謝謝

2007年11月26日

IBM的num lock

最近買了一台二手的IBM X31,因為希望可以輕便攜帶,看到X32,X41好像都是用1.8"的硬碟,對於網路上批評效率不彰早有所聞
X31的雖然不完全符合centrino,不過畢竟是pentium m的cpu(是130nm製程orz),又有無線網路,於是就挑上了他
帶回家就是重新format安裝,我可不知道對方會在電腦裡面留下啥東西,format來的比較安心啦,因為二手,還原區早就不見了

接著因為兩台電腦,我一班都是遠端到X31,免得兩邊跑(在不同地點),結果當我到X31面前的時候,我竟然無法登入,仔細一看是num lock
我遠端用的是一般桌機的鍵盤,所以num lock是打開的,這點應該不難,我就是找fn+num lock應該就可以解決~晴天霹靂,沒有.....
再網路上找了好一下子,終於發現,他是shift+num lock~就是這個害我用好久Orz,IBM你竟然大方的作出num scroll lock等等,就不差一個num lock吧
雖然一般人用不大到,我也是因為桌機遠端才會有這個問題,唉~~~
找到了,shift+NumLk就可以了

X31的小紅點真好,穩定性好,也不用擔心不小心安到touch pad(根本沒有),目前如果只是要暫時出門報告,帶著這台出門,比以前的輕鬆許多
雖然是二手,不過電池還有兩個多小時哩,螢幕老化的狀況也還好,希望她起碼可以陪伴我兩年,因為畢竟已經很老了
會買這台的原因,因為現在沒有一台滿意的輕薄機種(主要都是價格太貴啦>.<),有些重量足夠輕盈,不過續航力就差了
繼續等待我的下一台X31

2007年11月23日

降低CPU速度for NB

來自~http://slowlymouse.blogspot.com/2007/11/ubuntu-cpu.html
實在了不起,Linux愈作愈好,慢慢貼近使用者,不過我沒膽子試驗Orz
為了保險起見,我把文章複製過來~自己備份一下
==================================================================
目前以中高階notebook而言,搭載雙核心處理器早已不足為奇,但是『雙』核心也意味謂著運作時將產生更多的廢熱,尤其當兩個核心工作滿載,更可以達到 80幾,將近90度的高溫(左圖有真相),其散熱鰭片孔所排出來的熱風,足以媲美寒冬裡溫暖妳手心的7-11關東煮,如果你願意拿它來烘手的話!

  如果再加上 ThinkPad X61右手掌底下動輒50幾度的無線網卡,這下雙手真的可以不用畏懼冬夜裡的寒風了,但是,這麼貼心的設計可只有『冬日限定』,問題是臺灣的冬天,只有短短三個月阿!

  高溫是所有電子元件壽命的殺手,特別是小巧的Notebook,不過當電話那頭的老闆十萬火急的要著上次meeting的結果,而實驗室裡卻 只有一臺老古桌機可以用,這時候逼不得已讓筆電也站上火線!而為了筆電的壽命著想,需降低CPU全速運作時所產生的高熱,只好修改過於保守的CPU電壓 (voltage )預設值,不過網路上有關Linux系統上調整CPU電壓的資訊並不多( for XP 多到不行),辛好Linux-PHC 提供了非常完整的修改方法,過程也不難,只要到Linux-PHC Files下載適用的Patch,並且按照Howto的步驟就能輕鬆的降低CPU溫度。

  以下節錄自Linux-PHC官方文件『Howto undervolt a Core 2 Duo (and maybe Core Duo and Core processors)』,並加入簡單的註解。

主要步驟如下:
  • 下載 kernel-sources
  • Patching kernel-sources
  • 重新編譯部份modules
  • 覆寫舊modules
  • 更改cpu預設電壓
【下載kernel-sources】
  1. 使用Ubuntu 7.10版本,可以從apt下載 2.6.22-kernel source
  2. 在apt執行安裝完畢後,以下動作皆需要登錄為root身份。
  3. 進入目錄 /usr/src/ 下,解壓縮檔案 "linux-source-2.6.22.tar.bz2"。
  4. 進入新的子目錄"linux-source-2.6.22"下。
 command:

$ sudo apt-get install linux-source-2.6.22
$ sudo bash
# cd /usr/src
/usr/src# tar -xjf linux-source-2.6.22.tar.bz2
/usr/src# cd linux-source-2.6.22
【Patching the kernel】
  1. 執行patch前,需先安裝名為patch的程式。
  2. 將下載到桌面的phc-patch複製到kernel的子目錄底下( 記得將fallen改為你的使用者名稱 )。
  3. Patch 所下載的kernel-source。
  4. 複製ubuntu下的設定檔(kernel configuration)到目前的目錄底下。
  5. prepare kernel(準備kernel?)。
 command:

/usr/src# sudo apt-get install patch
/usr/src/linux-source-2.6.22# cp /home/fallen/Desktop/linux-phc-0.3.0-pre1/kernel-patch/linux-phc-0.3.0-pre1-kernel-vanilla-2.6.22.patch .
/usr/src/linux-source-2.6.22# patch -p1 <>
官方wiki提到,接下來系統『應該』會詢問有關cpu頻率和電壓的問題,如果有的話也只能答yes囉!不過,在我安裝的過程中並沒有看到任何對話框!

【重新編譯cpufreq modules】
  1. 輸入make prepare
  2. 輸入make scripts
  3. 重新建利modules(wiki說,要我們不用怕!)
 command:

/usr/src/linux-source-2.6.22# make prepare
/usr/src/linux-source-2.6.22# make scripts
/usr/src/linux-source-2.6.22# make M=./arch/i386/kernel/cpu/cpufreq
接下來會有一個 module.symvers 遺失的警告,不過 Linux-PHC Wiki 告訴我們"nothing in this world is perfect",這應該是無關緊要的意思吧,囧rz。

【安裝 patched module】
  1. 置換新module
  2. 移除程序裡的舊cpufreq module
  3. 下次啟動時系載入新的cpufreq module
 command
/usr/src/linux-source-2.6.22# cp arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.ko /lib/modules/$(uname -r)/kernel/arch/i386/kernel/cpu/cpufreq
/usr/src/linux-source-2.6.22# rmmod acpi-cpufreq
/usr/src/linux-source-2.6.22# modprobe acpi-cpufreq
Linux-PHC Wiki 並未提到接下來需不需要重新啟動,但是安裝時發現如果這個步驟沒有重新開機,會找不到部份的設定。

【變更電壓設定】
  如果過程中沒出錯的話,到這邊應當可以修改對應頻率(FIDs)的電壓值(VIDs)。不過kenel所提供的頻率與電壓單位,並非常用的GHz與Vlot. (伏特)而是採用相對應的整數。
先進入cpufreq目錄底下,列出相關設定檔案;
 command:

/usr/src/linux-source-2.6.22# cd /sys/devices/system/cpu/cpu0/cpufreq/
/sys/devices/system/cpu/cpu0/cpufreq# ls
可以發現phc-patch新增了下列六個檔案:
  • phc_controls
  • phc_default_controls
  • phc_default_vids
  • phc_vids
  • phc_fids
其中 phc_controls & phc_vids 是可以任意更動設定值的設定檔,檢視一下預設值,
 command:

/sys/devices/system/cpu/cpu0/cpufreq# cat phc_vids
以Core 2 Duo T7100為例,顯示"45 37 18 11",這4 個數字代表cpu有4個step可以變換,每一個step會對應一個電壓值,其中數字愈小表示電壓電壓愈低,Linux-PHC Wiki 也給了一個intel的網址 (http://developer.intel.com/design/mobile/datashts/314078.htm),可以查詢這些數字代表的意義,不過,有看沒有懂。

  更改電壓只需要下echo,例如將4個 step 的電壓更改為"18 18 11 11":
 command:

/sys/devices/system/cpu/cpu0/cpufreq# echo "18 18 11 11" > phc_vids
若要檢視是否更改成功,用cat再去讀一次phc_vids 就行了,如何找出適用於CPU的電壓設定,請參考下一篇(還沒寫完 XD)

『注意』:調整cpu工作電壓具有硬體損壞之風險,且需由個人所承擔,即使同為 Core 2 Duo T7100 也不一定適用同一組cpu電壓。

Server model下執行Virtual Box

自從接觸到 VirtualBox 後,一直想要把它的 Guest OS 當成 Host OS 中的服務來使用,因為這樣子,我就可以在 Linux Server 中再跑一個 Windows Server 。會這麼作的原因是要使用 MS Office API 來出 .doc 檔。

那麼該如何在 Linux Server 中,令它在一啟動時,即啟動 Windows Server Service 呢?其實很簡單,在你的 /etc/rc.local 中加入一行

VBoxVRDP -startvm WinXP &

這 樣就夠了, WinXP 是 Guest OS 的名稱。這種啟動方式,讓你不須要跑一個 X window 環境來秀出 Windows Server 的視窗,它會啟動在背景中,如果你有設定 Guest OS(WinXP) 可以遠端顯示的話,你可以在別台電腦以 rdp 連線來控制 Guest OS(WinXP) 。

設定好了以背景方式啟動 Guest OS 後,再設定外部連線可以轉到 Guest OS port 。設定指令如下:

# VBoxManage setextradata "WinXP" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/Protocol" TCP

# VBoxManage setextradata "WinXP" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort" 80

# VBoxManage setextradata "WinXP" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/HostPort" 8080

上述指令只須設定一次即可,設定後,請重新開啟 VirtualBox 軟體。這樣別人就可以從 http://x.x.x.x:8080/ 來瀏覽你的 Windows Server 的網頁伺服器了。

出自http://hoamon.blogspot.com/2007/11/virtualbox-guest-os-host-os-linux.html

2007年11月22日

Ubuntu的調校

其實Ubuntu預設在安裝完畢之後,有些東西需要調整,當然新手一開始推薦使用LazyBuntu去作一些基本的安裝
之後在開始調整,當然也有人寫了一些Tweek的程式,可是本身我並不大想使用,如果你是一個懶惰的人可以考慮看看
系統=>管理=>服務開始關閉跟開啟一些必要的service,比方說如果你是IDE的硬碟,就要打開hdparam,這對速度非常有幫助的

接著有一些可以選擇性的開啟,比方說藍芽這個對電量是相當有影響的cupsys,如果你不常常要用印表機,這是可以關閉的;如果你不在意log檔案(你根本不會去看的話),可以試著把他們關閉,apport也是看個人意願,avahi-daemon這東西好像不大需要XD也可以關閉

我是使用NB,我機器上基本沒有藍芽Orz,所以我打開了hdparam,關閉了cupsys、藍芽、apport、avahi-daemon,其餘就是保持預設的樣子

接著有興趣的話,可以去安裝powertop,看看你機器是哪邊耗電量比較大,這個對於NB比較有幫助,呵呵;還有記得對於OpenOffice要作一些優化的管理,請參考我之前的文章,還有就是compizconfig-settings-manager,去除你不必要的部份特效,我想一堆人應該是跟我一樣手癢就想裝CompizFusion來玩玩吧,其實我覺得有用的就是那幾樣而已,我可不想讓一堆特效托慢我的速度,還搞得我眼花撩亂

如果有人是使用小黑的,可以看一下這裡http://yurinfore.blogspot.com/2007/10/x31-ubuntu-710.html
倒是蠻有趣的~他X31個改進喔

2007年11月21日

google blog的tag

Google阿,tag真的是不需要樹狀結構嗎?你可以人性化思考一點嗎?看著日益膨脹的tag,我真的有點無言
雖然說有時候一篇文章的分類是一個tag,可是google blog好像沒有tag的管理的樣子?(待會研究一下),這樣要修改都很難吧
一堆tag,有時候還是要群組一下比較好管理吧,有些老舊的tag,如beryl跟CompizFusion想整合成一個也沒辦法~唉~我這篇blog的結構就跟tag一樣~

找到了,在"張貼"=>"修改文章"=>這裡可以對文章作tag的批次管理;不過tag很多,不好瀏覽的問題還是在

在console mode下顯示中文(尚未成功)

或許一些比較老的玩家比較會想要這個功能,就是按下alt-ctrl+F1,2,...切換到console mode的時候,不能看到中文,總是有些不爽XD
可是接著看著wiki的文件,有兩種方式可以顯示中文,一個是zhcon,另外一個是jbfterm,前者感覺不大適應,我就想用後者
看著wiki寫著要支援framebuffer,我就開始網路上尋找如何啟動這東西,因為他想來是個module,一堆介紹從新編譯kernel Orz

終於讓我找到了,節錄如下
首先,編輯你的/etc/initramfs-tools/modules文件
sudo vi /etc/initramfs-tools/modules
加入如下三行內容
fbcon
vesafb
vga16fb
然後更新一下。
sudo update-initramfs -u

最重要的一步,要把文件/etc/modprobe.d/blacklist-framebuffer裡面的vesafb和vga16fb這兩行給註釋掉。
sudo vi /etc/modprobe.d/blacklist-framebuffer
接著可以用hwinfo --framebuffer參考可以支援的參數,其實可以直接注意/boot/grub/menu.lst的註解就可以了

不過不知道是不是因為我用vmware裝alternative cd(我想直接來試驗看看commend model的模式安裝,容量小),整個爛掉
更不幸的事情是~jfbterm無法啟用,說啥打不開/dev/fb0~唉唉~看來對中文還是有點無緣

2007年11月18日

安裝apache2

已經很久沒有接觸apache了,上次使用apache約在1.3左右,雖然說apache當時已經出來,不過基於為穩定的狀況,沒有使用
現在apache2基本上應該已經很穩定了,用ubuntu裝apache2, php, myssql向來都不是很困難的事情,不過麻煩的是後續設定
果然~apache2大搬風,設定檔的架構大改,不再是過去單一個設定檔,或幾個設定檔案include過來include過去

先改使用者目錄,我一直不喜歡public_html這樣的名字,喜歡用www
vim /etc/apache2/mods-enabled/userdir.conf
在這下面可以找到

apache2也多了不少設定跟增加的指令,對於虛擬主機的管理也是加強不少,應該是順應潮流吧,一堆東西也模組化
若要增加 virtual host
則要在 /etc/apache2/sites-avaible 下新增設定檔
用 a2ensite / a2dissite 啟動/關閉設定檔

修改完畢apache2之後開始對mysql動手腳,反正現在開始推utf8,當然要順應潮流囉,不要搞得"萬碼奔騰"
vim /etc/mysql/my.cnf
在 [client] 下增加
default-character-set=utf8
在 [mysqld] 下增加
default-character-set=utf8
default-collation=utf8_general_c
大致上來說是這樣,待會在看看有沒有必要裝PEAR,我真的離這東西太遠了,之前還在PHP4,轉眼已經到了PHP5,然後大家開始用PEAR
想來PEAR是學習perl作法吧,反正我沒有太多語言情節,好的作法大家就是要倣傚,然後流傳下去,程式語言過個十幾年換新的很正常

2007年11月6日

在Linux類似Matlab的Octave

Octave我對他也不熟悉,只有看過幾次,不過ㄋㄟ,為何要提到這個,我覺得這個是一些考研究所學生的"必備"軟體
怎麼說呢?因為很多工程科系的需要考線性代數這樣的一個科目,線性代數裡面有些題目充滿了matrix operations
如果只是在做考古題(常常沒有答案,或者懷疑作者算錯),在長長的matrix operations做完還可以保證正確的事情,沒多少人可以
我本人就這樣一個算三次,三次不一樣答案的天兵=.=!,有了Octave可以幫我們作matrix operation,這樣一來就剩下輸入跟作法的正確性了

底下先介紹一個好站http://scicomp.math.ntu.edu.tw/~scc/linear_algebra/content.htm
這位老師文筆不錯,呵呵~寫的還蠻好玩,蠻簡單的

在console輸入octave後就可以開始操作,要定義matrix,就是直接打入變數名稱等於多少,如
M=[1,2,3]
這個就是一個1x3的矩陣,接著如果要定義一個2x3,就用分號分開每一個row,如
M=[1,2,3;2,3,4]
接著一些基本的矩陣操作如轉置(Transport)M寫作M',如果要求invers就寫M^-1,底下是我們最熟悉的最小平方解的公式,在octave就寫成
x=(M'*M)^-1*M'*b
輕輕鬆鬆就得到解答,我還在試驗如何使用中,歡迎討論~呵呵
P.S.晚上了,腦袋昏昏,先寫到這裡

2007年10月28日

目前Intel的cpu

這是第一個跟硬體相關的文章吧,最近看Intel的cpu,一堆代號,搞得頭昏眼花,還好網路上有網友給了個比較表
http://www.intel.com/products/centrino/compare.htm

節錄mobile01上面看來的資訊
差在上面的列表中(L2、FSB、Chipset......等等。)
T7、T5、T2系列,各有它的規格和支援技術。
T2是低價雙核,從表中可發現它不支援64位元和其它技術。
T7是目前Intel最新的行動處理器。
T5則是前一代產品。
T2500和T7100比,一個是T2里高階的,一個是T7里低階的
T5600和T7100比,一個是比較舊,一個比較新...............

2007年10月25日

Ubuntu 7.10新體驗

之前使用Ubuntu 7.04升級7.10,感覺整個不對勁~就只有感覺,因為之前加了一堆有的沒的套件(非官方)

所以決定重新安裝一次,因為一開始就把/跟/home分開了,所以麻煩的就是軟體整個要重新安裝,這部份花了我約4hr

由OS重新安裝到用Lazybuntu調整過一次,呼~~~然後回顧了一下,我過去寫的Ubuntu筆記,發現一半已經不用了,有取代方案

開始對於資訊的更新快速做又一次的感慨~也差不多是一季的時間阿~摸索三個月~三個月的筆記,現在看起來都過時了

對於Ubuntu的硬體相容性,普遍上已經好很多,不過上論壇一看,還是一堆人在問,仔細看看自己的PC~嗯~也是四年前的

雙核心現在大約也推到Santa Rosa的架構,我還在64位元單核心,看來當然相容性比較好~呵

真希望有一天Ubuntu或者Linux的硬體問題統統解決,讓Linux開始追趕M$跟Mac的圖形介面上的進步

其實是友善程度啦,其實我在XP一直認為M$在穩定度落後Linux五年,可是Linux在Desktop的圖形跟應用程式親和度落後M$五年

慢慢的M$在穩定度上追上來了,Linux也在GUI上蠻有進展的,可是還得分心對付一堆硬體的問題,實在有點難過

最後說一句Ubuntu加油阿!!!

P.S.功能面上幾乎沒啥好比的,兩者我認為已經差不多了,有差異的不是專業軟體就是用不習慣了

2007年10月22日

Ubuntu 7.10釋出~跟好玩的工具Lazybuntu

Ubuntu 7.10釋出了~當然趕緊來用用看
聽說多了不少新的功能哩,我才剛剛由7.04升級上來,所以還沒有多大深刻的體會

另外一個要推的工具是Lazybuntu,由PCMan大大開發,主要幫忙新手設定一些安裝後的步驟
不過對我來說也是很好用,因為就不用自己去弄一堆有的沒的,也用作文件備份,免得以後重新安裝找不到
果然有Lazy到~呵呵~目前試驗中,正在抓acrobat reader 8.0哩

其實各大網站對於Ubuntu 7.10的介紹不少,我也就不多著墨了,反正裝來玩玩就知道了
Open Source的軟體,就是希望大家給他用力try(踹)下去啦

2007年8月28日

在Ubuntu 7.04上安裝Compiz Fusion

話說對於Compiz跟Beryl整合推出的新的3D桌面環境,早就是流口水已久,但是想說怎麼還不port上來呢~等阿等阿~終於有人在網路上推出如何安裝的教學了
http://peachwaneversay.blogspot.com/2007/06/compiz-fusion_28.html


1. 套件庫認證
先下載金鑰到桌面:
http://download.tuxfamily.org/3v1deb/DD800CD9.gpg

Synaptic > 套件庫 > 認證 > 匯入/Import

2. 加入套件庫位置
Synaptic > 套件庫 > 第三方套件, 新增, 依序貼上:
deb http://download.tuxfamily.org/3v1deb feisty eyecandy
deb-src http://download.tuxfamily.org/3v1deb feisty eyecandy
3.移除舊版有的相關套件(如果有安裝的話)
利用Synaptic找出所有關於"beryl", "compiz", "emerald" 的套件並給予移除

4.重新整理資料來源(相當於aptitude update)

5.開始安裝囉
Synaptic 按搜尋 > "依名稱搜尋" > 找出所有下列關鍵字:
compiz
compiz-gnome (如果你是用Kubuntu,就選擇套件compiz-kde)
compizconfig-settings-manager
compiz-fusion-(所有類似名稱的套件全部選擇)
emerald
emerald-themes
安後套用去安裝

6.安裝tray icon也就是fusion icon
apt-get install git git-core compiz-dev
再來到這個網頁:
http://forum.ubuntu.org.cn/about64461.html

下載這個: http://forum.ubuntu.org.cn/download.php?id=15664&sid=c1c9a32626223c407465d810274f702a

最後啟動
compiz --replace -c emerald

fusion-icon

這兩個指令都沒有問題之後,就可以把他加入 系統>偏好設定>作業階段 讓他啟動時執行

我現在煩惱的是如何使用這個東西,網路上show的圖片跟影片很多,但是教學文件就很少,我只記得幾個簡單的操作

2007年8月12日

Linux出了一堆新版本喔

Ubuntu 7.10 Tribe 4發佈了
還有Freespire2(以前好像叫做Lindows,有一陣子的名字,後來跟window$打官司改的)
Mandrake 2008 beta1也出了
Fedora 8 test1也出了

呵呵,最近可是一堆Linux的distribution release出來阿,以前Fedora尚未推出,Mandrake讓我覺得他的桌面是最和善的

不過當時還是偏好Debian based的distribution,例如可以快速安裝的B2D,拿來當server還可以,後來Ubuntu推出之後,就轉向Ubuntu

Debian的套件管理實在是讓人喜愛,可惜親和性一直不夠,但是Ubuntu的出現改善了這個部份,不過也有好些爭議

2007年7月16日

公告/Announcement

最近有收到一些無聊的回覆,他們蠻像是廣告的,為了免得被網蟲散佈一些廣告,暫時關了一兩天,如果有任何寶貴意見請來信,blog上面可找到我的email

I had received some dummy comments which are like advertisements. In order to avoid web spiders disseminating advertisements on my blog, I closed my blog few days. If you have any comments or suggestion, please send an e-mail to me. My e-mail could be found out on my blog.

2007年7月14日

用Gimp去背景

http://a790407.no-ip.com/?p=234
原始

效果

2007年7月13日

用Gimp畫出金屬字型


http://penguinpetes.com/b2evo/index.php?title=gimp_tutorial_metallic_text

呵呵~蠻炫的

2007年7月11日

用Gimp畫出葉子跟水果

http://kalaalog.com/2007/07/08/how-to-paint-a-leaf/
http://kalaalog.com/2007/06/24/how-to-paint-tomato/

蠻有趣的,還可以練習Gimp使用,不難,改天來試驗看看,順便翻譯一下,不過也要等我有空閒一點orz,先把link記下來,免得忘記

在linux底下使用特圓體

其實我對字體的要求就是清楚,一開始是使用新宋,可是新宋在一般文件表現的好好的,可是到了firefox上面就不行了orz(P.S.誰可以告訴我為什麼嗎?)

使用了王教授的特圓體比之前的特黑體好多了,字體稍微不會那麼擁擠,在使用新宋體的時候,可能是我不會調整font設定吧,即使用上wiki上面的字型設定檔,我在firefox上面看起來還是"糊糊"的,用了特黑體是很清楚,可是有時候字體真的是擠成一團



其實這個字型也不沒有缺點,缺點就是特別寬,不過比起那個啥vista的雅黑體好多囉~粗的程度還會依照筆劃不一樣,有時候看起來真的會頭重腳輕,可以在網路上找人家post出來的照片就知道,雖然立意良善~不過效果就.....

2007年7月8日

Linux開發的困境

來自於Ubuntu正體中文討論區PCMan大大所發表的文章
========================================
剛剛打了很長一篇不小心按到,全部被洗掉了...orz
簡單講,Picasa 模式不可行,你難道要每個程式都自己帶一份 wine
針對自己的程式去修改過讓他能夠支援?這件事情的難度沒有像你
想像的那麼低,要有能力修改 wine,開發人員得同時「精通」
Windows 和 Linux 平台上的程式設計,才做得到這件事情
也只有像 Google 這樣的公司,有本錢玩得起這種遊戲
何況,他的 Picasa 也不是直接用 wine,而是一定得用自帶修改版
即使是這樣,中文輸入法或中文顯示仍然不是在每個 distro 都正常
wine 的支援度和穩定性,距離真正的 Windows 事實上還是差很遠的
而當 wine 好不容易提昇支援度的同時,Windows 上的新功能以
成倍數的速度在持續成長,加上 .net,可以遇見,wine 的相容性,
在微軟強勢高速發展大量新技術的狀況下,將會越來越差。
Mono 面臨的情況也完全一樣,當他做到跟現有的 .net 完全相容時
微軟又會推出大量嶄新的規格,這時候 Mono 會再次陷入挨打的情況
不管怎麼做,就只能在後面苦苦追趕,始終不可能有完全相容的情況
微軟髮展新規格和新技術的速度,在雄厚資本挹注下,是無與倫比的
而且這些新技術大部分都有非常完整的文件和範例,可免費使用。
其中甚至已經有越來越多被翻譯成多國語言,開發環境非常的友善。
Windows 上的開發工具也是多樣且成熟,而且大部分都非常的好用。
即使是十幾年前的老舊開發工具,仍然比 Linux 上最新的開發工具
要好用上很多倍,先進上很多年,這是 Linux 開發人員的痛。
你在 Windows 上要知道系統上有幾個磁碟機,只要寫「一行」。
而且這一行保證搬到任何的 Windows 系統都可以如預期的運作。
在 Linux 上要做到同樣的事情,你得使用 HAL、DBus,呼叫數十個
複雜且「幾乎找不到文件」的函數,而且不同 HAL 和 DBus 版本下
作法和支援度都各自不同。到了 FreeBSD,作法又完全的不一樣了。
而即便你爬各種程式碼,好不容易搞出會動的版本,
拿到不同的 distro 下可能又不會動了,不同的桌面環境下
可能又不能用了,而且你找不到錯在哪裡,也沒有任何參考文件。
你只能拿一堆看不懂的原始碼過來,自己慢慢爬,運氣好找得到解法
費盡心力做出來的東西,往往卻有很高的機率不會正常運作。
這樣的程式除非是真的很熱血,沒人會想要寫。
在 Windows 下插入一片光碟即可使用,在 Linux 下,要用程式
去 mount/umount 一片光碟,有七八種方式,在不同的 distro,
不同的桌面環境,不同版本的 HAL 下,建議使用的方式都不同,
而且每種都不保證有辦法正確運作,很悲哀不是嗎?
自由開放的代價,就是亂七八糟的相容性,百家爭鳴的規格混亂
帶來的就是程式設計師要花大量時間,去處理這些和程式本身
的功能完全不相幹的事,而即便是努力處理了,還不一定能夠克服
更糟的是你處理好之後,可能隨時會在下個版本的 Linux 又壞掉。
這樣的開發環境,除非 Adobe 一類資本雄厚的公司,誰會有興趣?
你可以說使用 Java、使用 Mono、使用 Qt 不是就跨平台了嗎?
實際上卻不是這麼回事,要處理的事情仍然是很多,而且這些平台
和函式庫之間,也存在著許多自己的相容性問題,永遠處理不完。
很多各平台上特殊的功能,仍然必須使用低階的方式來做,
而這些方式,往往都是複雜且相容性混亂的。
要在程式裡面啟動瀏覽器,在 Windows 只要寫一行,且保證能用。
在 Linux 桌面下,至今沒有任何一個可以保證正常運作的方式。
Gnome,XFCE,KDE 都各自使用自己的解決方案,各家都不同
為了偵測系統上有什麼瀏覽器可以用,需要的又是大量
撰寫困難,且不保證可以正常運作的程式碼。
這樣惡劣的開發環境,除非真的是很熱血的人,誰吃飽太閒?
要呼叫預設程式開啟某個檔案,在 Windows 上只要一行,保證可用
在 Linux 上你要讀完七八份非常長的英文文件,然後寫上
上千行的程式來處理複雜的 mime type 和各種複雜的 xml 檔案
重點是,即便你寫完了,還是不一定可以正常運作。
所以 gnome 提供了 gnome-open,XFCE 提供 exo-open,KDE
則是用和大家都不相容的自家解決方案,你說,開發者要選哪邊站?
xdg-open 是最近在推的統一解決方案,不過顯然尚未成氣候。
在 Windows 上只要寫一行,在 Linux 下卻是搞不完,
這樣的例子不勝枚舉,我實在不忍心繼續寫下去了...
不想一直打擊各位對 Linux 的信心,只是有些殘酷的事實要認清。

2007年7月6日

Ubuntu音效問題

在網路上看到不少人提到Ubuntu音效有問題,有人提出解決的方式
以下方法適用於 ALC861 and Intel HDA sound drivers,
我的Toshiba a100升級7.04也出現過類似問題,解決方法如下:

試試看
開啟附屬應用程式的終端機
輸入:
cd /etc/init.d

建立一個新文字檔:
sudo gedit soundstartfix

文字檔裡面的內容請輸入:
#!/bin/bash
kill $(lsof -t /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/*)
sudo modprobe -r snd-hda-intel && sudo modprobe snd-hda-intel model=auto

存檔,然後離開文字編輯器。

接下來請在終端機輸入:
sudo update-rc.d soundstartfix defaults

(等候一下...等它完成)
輸入:
sudo chmod +x soundstartfix

重開機,應該可以work的很正常了:)

主要事先把Ubuntu預設的砍掉,然後在從新偵測一次,期中lsof真的是蠻有用的一個程式,跟netstat有得拼

在Ubuntu上用Rainlendar2

目前Rainlendar2好像還沒穩定,真的是一整個殘念,開啟要加入類似real player的輸入法設定,大概也是因為如此,Rainlendar2只要一輸入中文就掛點,真是殘念

這是一個殘念的紀錄

2007年7月3日

安裝realplayer 10

大概是realplayer格式改了又改吧,即使我從論壇的方式安裝了totem跟codec也都無法順利觀看rmvb的檔案,所以就直接上到realplayer那邊下載囉
http://www.real.com/linux/
下載回來後把檔案加上chmod +x xxx.bin
然後執行安裝完畢就可以了,跟安裝java很像,不過他跟一些程式一樣有輸入法的問題,如果是中文環境可能會不能執行,加上export GTK_IM_MODULE=xim在執行就可以了

2007年7月2日

Ubuntu的套件哲學

以下是節錄自UbuntuTW Guide

Ubuntu 組件庫的哲學

因為 Ubuntu 原生於 Debian, 所以也是對於自由很堅持,因此希望把自由軟體和非自由軟體拆開來放。有些是因為人力的問題,有些套件是在 Debian 裡面有,但是不被 Ubuntu 官方支援的。所以 Ubuntu 的處理方式是把它們拆成以下四大主要組件庫,類似 Debian 一樣,讓使用者選擇需要。前兩個 Main 和 Restricted 是官方正式支援的,Universe 和 Multiverse 是不被官方正式支援的。而 Restricted 和 Multiverse 裡面是 non-free 的軟體。

  • main

大部份常用的自由軟體都會收編在 main 裡面,這裡面所含的軟體需要完全符合 Ubuntu 對自由軟體的定義,詳細規定請見http://www.ubuntu.com/ubuntu/licensing。因此通常使用 main 就可以應付日常所需。而 main 裡面所有軟體,都是官方支援的,所以 Ubuntu 將會提供 main 的安全更新和技術支援。而它的角色和 Debian 裡面的 main 差不多。

  • restricted

裡面所含的是非自由軟體,通常是不公開程式碼的程式或者授權不符合 Ubuntu 的要求。例如顯示卡驅動程式等等。雖然是非自由軟體,但是因為這些都是比較重要的非自由軟體,所以 Ubuntu 在符合該軟體授權下,將會進行穩定性上的測試,並也提供安全更新。因為不是自由軟體,所以 Ubuntu 在遇到問題時不一定能解決,所以維護品質沒有 main 那個好。桌面使用者通常都會使用 Restricted 這個組件庫,來對多媒體支援有比較好的效果。

  • universe

這裡面大部分的軟體都是自由軟體,而且幾乎都是包含在 Debian 裡面的 main 中。但是因為人力上的問題,所以 Ubuntu 無法親自去包這些套件,而是直接由Debian 裡面抓下來從新編譯,或者是直接從外部程式碼自動編譯出來的。不管怎麼樣,這裡面的軟體是不被 Ubuntu 正式支援的,Ubuntu 雖然有提供它的安全更新,但是不保證能即時修正或能穩定運行。例如國內有名的打 BBS 軟體、 PCManX 就放在這裡面,或國內有名的輸入法程式 gcin 也是包含在這裡面。Ubuntu 預設沒有啟用 universe 套件庫,所以想要用的人得自己在 sources.list 啟用。

  • multiverse

裡面的軟體都是非自由軟體,但是因為重要性不足或授權的因素,所以放在這裡。而這裡的軟體也是不被官方正式支援的。而和 universe 一樣,Ubuntu 預設也是沒有啟用它。

而除了以上這幾個組件庫以外,它還有其他附屬的組件庫。因為這些組件庫在穩定版出來以後,就不會再更動,所以當有漏洞的時候怎們辦?或者有 人懶得每半年都更新一次,但是又想要在舊版 Ubuntu 裡面享用一些比較新版的軟體時,總不能自己編譯和搞定 library 的問題吧!所以在上面四大組件庫,都有以下三個分支。

  • security

穩定版本正式釋出後,如果程式有重大安全性上的問題,將會在這裡更新。而這裡所謂的更新,通常只會打上 patch (這裡指原始程式碼的修正檔。), 還是同一個版本,所以功能也不會增加。因為 security 套件庫是針對系統安全而更新,所以裡面大部份更新都和伺服器或系統架構有關。而這個組件庫預設是被開啟的。

  • updates

這也是在穩定版釋出後,提供系統更新的一個方式。但是和 security 不同的是,這裡所做的更新都是和安全性沒有關,而是和程式的 bug 相關。例如某套桌面軟體有時候會當掉,而這個當然和系統安全沒關係了,這種更新就會放在這裡。updates 裡面的更新和 security 一樣,也只做 patch, 所以也是同一個版本,不會有新功能。這個組件庫也是預設被開啟的。

  • backports

例如 6.06 (Dapper) 中附的網頁瀏覽器是 Firefox 1.5.0.3, 但是在穩定版釋出後,也許這段時間裡面出現了 1.5.1, 1.5.2, 1.5.3 等版本,但是在主套件庫中軟體是一定不會更新的,而預設開啟的 security 或 updates 套件庫除非是有安全性的問題或者是有些 bug,否則不會更新。就算是因為安全性或 bug 而更新,也通常不會換成新版的。所以 backports 就是為瞭解決這樣的問題,開發者會將新版的軟體就會放在 backports 中,讓使用者使用舊版發行版但是可以用到比較新的套件。而通常在 backports 中的程式都是和桌面相關,而不會去更新到系統或伺服器架構,這樣才能保證系統運作穩定。而預設 backports 是沒有使用的,所以要自己修改 sources.list 來啟用。

 
備註: 使用者可以要求希望哪些軟體進入 backports, 詳細辦法可以參閱http://backports.ubuntuforums.org

各種不同的 Ubuntu 分支

Ubuntu 原先釋出的版本是預設採用 Gnome 這套視窗管理程式,但是在 GNU/Linux 的世界裡面有許多種的桌面系統,或者因為版本的訴求與某些使用理念不同,所以 Ubuntu 目前有五種不同的安裝版本可以使用。而這幾種安裝版本的組件庫是採用一樣的,它們可以採用不同的光碟來安裝,安裝後就是預設為不同的衍生版本,因為採用同 樣的組件庫,所以您當然可以在安裝後切換成別的衍生版本。實際上各個衍生版本都是以一個叫作虛擬套件的套件包來控制。也就是那個虛擬套件是空的,但是因為 裡面設定了相依到很多該衍生版所需的套件,所以安裝那個虛擬套件,就會自動把該衍生版所有套件裝起來。安裝方式就是使用這個指令 apt-get install $<$該衍生版套件名稱$>$, 當然這是是給各位一個概念,詳細的安裝說明會在後面提到。

2007年7月1日

gnuplot一個簡單好用的繪圖程式

gnuplot是一個好用的繪圖程式,他可以把圖形畫出來,非常的簡單好用,首先在shell輸入gnuplot,就會進入命令模式
輸入plot sin(x),就會跳出一個畫好sin圖形的視窗,主要是因為我們可以看到gnuplot預設的term設定為x11,如果我們改變term,可以把結果輸出成圖片,如png

那如何將結果輸出到圖片呢?靠得是三道指令
  1. set output "sin_output.png"
  2. set term png
  3. replot
首先就是設定輸出名稱囉,再來是改變term的格式,最後就是重新繪圖,gnuplot就會把結果輸出到檔案內,如下圖
這圖片實在有些單調,很多元素都缺乏,在我們進行接下來的動作之前,先把輸出格式改到x-win,輸入set term x11;首先,一張圖片起碼有個title,我們可以利用set title "This is sin(x) figure"來增加title;跟著可以利用set xlabel "x"set ylabel "y"來設定x,y軸的解釋,最後再使用replot指令來重新輸出,結果如下圖

2007年6月30日

M$的原罪?

M$一般受到反M$的大力批判的有,壟斷、漏洞一堆、不開放、破壞規格、價格太貴...等等

一般反M$對於他的壟斷手法都相當的不滿,還有早期的系統真的可以說得上是漏洞百出;最近M$堆出的vista仍就難免華而不實的批判

有一股力抗M$的力量是Open Source,他們的要求是,軟體是需要開放的,讓人們可以依照他們的需求去改善,然後大家可以交流這些Patch

接著夾雜了一堆其他的意見,跟Open Source做了某種程度的融合,也就是說,有些支持Open Source的人,不只是支持Open Source,他們還有其他的理念

例如說反盜版,開放標準格式(其實M$也不是單一方面的問題)等等,然後人們對於問題的認知就開始有了一點不確定性

我想M$可以詬病的地方很多,他硬塞了一堆人家不要的功能給你,然後還不準你改變,這是Open Source 最反感的吧,記得網路上有人比喻,廠商賣了一台車給你,你打開引擎蓋就犯法@@a

再來M$長期不跟標準合作,這某種方面也是牴觸Open Source的人,因為大家都使用同一套遊戲規則,M$在破壞規格上面是出了名的

如果說漏洞,其實M$在最近已經有所改善,他們的工程師畢竟也是有相當的素質,所以寫出來的程式應該不至於插到哪去,可能會出問題的是相容性的地方,為了跟過去程式相容,M$所背負的包袱,實在是讓他們的架構容易出問題

撇開這些不說,M$在商言商,所以獲利對他們來說,實在不是一個被該被責備的問題,不要說他賣得東西太貴,以此作為盜版的藉口(除了一些手段實在不正大光明外,例如賣給台灣的售價曾經有一度過高)

他最大的問題在於,不開放、破壞規格,以上是我個人的觀點

2007年6月29日

google推出linux desktop search

執行 Google 桌面搜索要求你的 Linux 系統至少滿足下列條件:

  • Linux 核心 2.4.x 及更高版本
  • glibc 2.3.2 及更高版本
  • XFree86-3.3.6 及更高版本
  • gtk+2.2 及更高版本
  • fontconfig/xft
  • Mozilla Firefox 1.5.0.1 或更高版本
  • /home 分區具有 1 GB 可用空間

要在你的 Linux 系統中安裝 Google 桌面搜尋軟體,可以採用以下三種方式之一:

  1. 如果你所用的 Linux 發行版基於 RPM 的包管理工具,那麼在下載 .rpm 包後,可以執行下列指令安裝:
    sudo rpm -U google-desktop-linux-1.0.1.0060.rpm
  2. 假如你使用 Debian/Ubuntu Linux 發行版,則可以下載 .deb 包並通過下列指令安裝:
    sudo dpkg -i google-desktop-linux_1.0.1.0060_i386.deb
  3. 或者你也可以使用 Google Linux 軟件庫,並通過該庫來安裝 Google 桌面搜索。

    Debian/Ubuntu 可以使用下列源:
    deb http://dl.google.com/linux/deb/ stable non-free

    並添加密鑰:
    wget -q -O - http://dl.google.com/linux/linux_signing_key.pub | apt-key add -

Google 桌面搜尋軟體預設的安裝位置為 /opt/google/desktop/。



http://bbs.blade-pig.net/redirect.php?tid=377&goto=lastpost

2007年6月25日

鳥哥筆記-Lesson 8

Shell二部曲,先來看兩個有用的指令alias跟history,單純的執行alias將會列出你目前有重新修改過的指令,比方說,一般在ubuntu下面會看到alias ls='ls --color=auto',表示顯示檔案列表的時候順便顯示顏色,alias的好處就是可以把常用的參數變成預設,免得每次都要加上參數,真的是很要命的麻煩。history則會列出你執行過的指令,他前面會帶有一個數字,使用!number,!+數字,表示你要重新執行history中的哪一個指令

接下來看兩個有趣的檔案,分別是/etc/issue跟/etc/motd,前者紀錄目前你使用的OS資訊,比方說Ubuntu 7.04,後者則是使用者遠端登入的時候的顯示訊息;這兩個檔案有人非常詬病,因為/etc/motd跟/etc/issue常常有系統的種類資訊,他們認為這只是讓hack更加容易了解系統的資訊,所以一般建議是把/etc/motd修改(這部份對於多人使用環境,如學校開個機器讓學生熟悉linux環境,非常有用),不要洩漏自己系統的資訊

有很多個人的設定檔案,也就是當你進入shell的時候一定會執行的某些shell script,這些檔案實在太多太雜了,我一般都是使用.bashrc來建立我個人的路徑,例如JAVA_HOME等等

常態表示法(regular expression),這東西可是可以開一門課程的內容,我就不仔細介紹了,直接擷取鳥哥的一小段內容近來,實際上多用、多看、多想~就可以達到相當的程度;如果真的有興趣Oreilly有出版一本mastering regular expression的書本,況且這東西還因應不同的程式語言有不同的風貌哩(有些小差異,比如perl跟postfix的版本很像,但是有點小小的不一樣),以下是節錄的內容

內容
*萬用字元,代表 0 個或多個字元(或數字)
?萬用字元,代表『一定有』一個字母
#註解,這個最常被使用在 script 當中,視為說明!
\跳脫符號,將『特殊字元或萬用字元』還原成一般字元
|分隔兩個管線命令的界定;
;連續性命令的界定(注意!與管線命令並不相同)
~使用者的家目錄
$亦即是變數之前需要加的變數取代值
&將指令變成背景下工作
!邏輯運算意義上的『非』 not 的意思!
/路徑分隔的符號
>, >>輸出導向,分別是『取代』與『累加』
'單引號,不具有變數置換的功能
"具有變數置換的功能!
` `兩個『 ` 』中間為可以先執行的指令!
( )在中間為子 shell 的起始與結束
[ ]在中間為字元的組合
{ }在中間為命令區塊的組合!

如果我們要觀察一個目錄下所有文字檔,假設文字檔統統是以副檔名.txt出現的,我們就可以下達指令ls *.txt

接下來就是看到兩個shell重要的觀念redirect(重導)跟pipeline(管線),很多人使用的很習慣,也重來不細想其中的差別(本人就是一個XD);redirect就是把資料放到別的地方去,而pipeline則是將前者的輸出變成後者的輸入

2007年6月24日

完全用 Linux 來生活

來自blog的資料,寫的很好,備份一下,蠻全方位的,對方會用的樂譜軟體,難道是個音樂家!?Linux上面奇人很多,還有人是黑手~無奇不有


其實我很早以前就想寫一篇這樣的文章,我使用 Linux 來生活已經六年多,用到現在,覺得很多地方很便利好用,適合我這種懶惰的人。奇怪的是有一群幾近瘋子的人,無任何報酬地在開發維護,讓我覺得很不可思議。 在此分享一點心得給想接觸 Linux 的人,算是回饋吧,也許微不足道。別跟我筆戰 Windows 和 Linux 誰比較強的問題,那沒有意義。各有各好用的地方,只是個人習慣問題而已,就像是吃飯或吃麵一樣。不可能有人會筆戰飯跟麵哪個比較好吃吧?
我最一開始用的是 Red Hat 6.2,用了半年換 Mandrake,幾個月後又換 Debian Woody、Sarge,然後用了好幾年。在某一次電腦掛掉要重灌的情況下,選擇 Gentoo 2005.0 作為重新出發的起點,用了一年多。這幾個月換成 Ubuntu,覺得非常好用,很多設計都很方便簡單,所以到處推薦給別人用這版本,它的基本精神就是人道關懷。很多人有迷思認為用 Gentoo 比較屌,用 Ubuntu 比較遜。但我覺得只要能方便地解決問題,用什麼都不是重點。



【網路】


瀏覽器:首推 Firefox。這軟體非常火熱,快要變成 Linux 內建的瀏覽器了,我用的是改版過的 Swiftfox, 依各人CPU不同進行軟體編譯,達到最佳化(事實上 Gentoo 就是以此自誇)。外掛方面我用了:Adblock Plus,用來擋廣告。Fasterfox,加速上網速度。FireFtp,外掛FTP軟體。Gmail Manager,gmail來信通知。GSpace,把gmail變成網路硬碟。HEMiDEMi Button,單鍵加入網路書籤。OpenSearchFox,自製搜尋引擎。新同文堂,簡體字自動轉繁體字。

收信軟體:我用 Gmail,習慣上網收信,沒有用軟體。收信軟體有很多選擇,除了 Mozilla 家族的 ThunderBird 之外,Gnome 內建的 evolution 也很強大,基本上跟 outlook 的操作很像。推薦一個來信通知的小軟體 mail-notification,常駐在系統內,可支援 gmail、或 pop3 的郵箱。(吃RAM吃很兇)

RSS閱讀器:也就是 feed reader,讀取整理 Blog 或 News 的 RSS,請試試功能強大而且直覺的 Liferea!配合 firefox 的訂閱功能,我的生活沒有它不行。如果常常需要奔走兩地,用線上版的RSS閱讀器比較方較,在此推薦 Bloglines.com

續傳軟體:d4x(Download For X),或是 MultiGet,這兩個軟體等於是 Linux 版的 Flashget,內建多點下載及續傳的功能。或是用功能強大 wget(只有文字介面),有各種圖形化前導程式, 如 Gwget、Kwget 。

MSN、即時通:Gaim(後來改名為 Pidgin)、Kopete。通吃各種即時通訊軟體。但不支援 webcam,很遺憾。另一個軟體 aMSN 可支援 webcam,但因為我沒有視訊,所以沒裝來試過。

Skype:Skype 有 Linux 的官方版本。

BT:我用過非常多軟體,azureus 太吃資源,內建的 bittorrent 太簡單,而 bitonado 也很單調。推薦用 Deluge,不吃資源,功能齊全、速度也OK!如果是K牌使用者,請用 KTorrent,算是 Linux 下面最好的 BT 軟體了。(目前看過絕大多數人是用 wine + utorrent)

騾子:一定要用aMule,其餘的不用試了,因為其他的不支援Kad。

FTP:現在還有人在用FTP嗎?裝 FileZilla 就可以包辦全部,不過我比較常用 Firefox 外掛的 FireFTP。(架ftp可裝 proftpd,如不習慣用指令介面,可用前導程式 gproftpd,簡單直覺)

IE:有一些很奇怪的網頁,一定要用 IE 才能開。這時候就用 ies4linux 裝。至於 wine 這個軟體很不錯,可以用它安裝執行大部分 Windows 的程式,它提供了一個假的 Windows 環境。

BBS:用 PCMan-GTK!感謝 PCMan 專案人員及其 LXDE 計畫。



【影音】


音樂播放:分兩種,一種是單純的播放器,只能放音樂,像 Windows 的 Winamp 那樣,在 Linux 下面有老牌的 XMMS、新的 Beep-Media-Player;另一種為音樂播放管理器,像是 Windows 的 iTune,可以方便地整理 MP3、並整合歌曲資訊、網路廣播…等,這方面比較多,有 Banshee、Listen、BMPx、Rhythmbox、AmaroK、Quod Libet、Exaile…。放一首歌時,它會自動搜尋專輯封面、歌詞、歌手樂手傳記、發行專輯、相似藝人、相似歌曲、Last.fm、Podcast、 廣播、…。在此我推薦G牌桌面用 Exaile,K牌桌面用 amaroK。

寫MP3標籤:一定要用 EasyTAG,搭配音樂播放管理器,這才是人生啊。(茶)

錄音編輯:Ardour、Audacity,目前為止可以用的,也支援多軌錄音跟ASIO,跟 Windows 的 Goldwave、CoolEdit 很像。如果要超級專業的錄音軟體,就要回 Windows 或 Mac 用 Cubase Sx。

寫譜軟體:Rosegarden,最簡單的。另外還有超級專業的 Lilypond 跟 MusiXtex,聽說國外樂譜出版社都用 Tex。但實在太難,而且我也不會 LaTex、TeTex(專業排版軟體),所以目前還是習慣用手寫五線譜,再掃瞄成圖檔。Lilypond 有各種前導程式,例如 NoteEdit。P.S. 吉他手可以用 Wine 灌 Guitar Pro、Tabledit、Power Tab Editor 。

CD轉MP3:內建的 Sound Juicer 抓音軌,再用 Gnormalize 互轉各種音樂格式。不過有些非自由的格式要裝解碼,可轉的格式包括MP3、APE、FLAC、AAC、OGG、MPC、WAV、…。或是另一個 SoundConverter 也不錯。

燒錄軟體:k3b,超好用的CD/DVD燒錄軟體。如果不想用K牌的東西,可以選擇G牌的 Brasero,比 GnomeBaker 好用!但還是建議用 k3b,目前出 1.0,功能強大。至於 Nero 的 Linux 版,跟 Windows 比差太多,比 k3b 還不如。

影片播放:SMplayer,為 Mplayer 的前導軟體。Mplayer 是史上最強的影片播放器,得獎無數,好像還跨平台到 windows。遊走在法律邊緣,通吃全部格式的影片,當然,要裝 w32codecs 影片編碼解碼,要不然什麼也不是。

網路廣播:streamtuner,內建多個網站電台,不過很久沒更新了。可裝 Exaile (音樂管理軟體)替代。

iPod相關:iLinux,不過我沒試過,因為我沒有iPod。


另外推薦一個 Ubuntu 的延伸版本,叫做 Ubuntu Studio。不過如果你沒玩 MIDI、影片剪輯、3D繪圖、之類的,就不用換這個版本了。


(很炫的360度可旋轉式立方體桌面,Beryl)

【美工繪圖】


圖片管理:Google 的 Picasa。功能超級強大。但美中不足的是竟然是用wine模擬,不過google很強的一點是做的看不出來是wine模擬。如果不想裝wine,就用 f-spot,有點像是簡化版的 ACDSee。

圖片編輯:簡單修改用輕量型的 Mirage ,要專業一點就用 GIMP。雖然很多人牽拖 GIMP 與 PhotoShop 根本不能比,不過我覺得這是個人功力問題,曾看過超強的人用 GIMP 非常恐怖,不過如果用習慣 PhotoShop 要花很長一段時間轉換適應就是了。

向量繪圖:Inkscape,很難相信這一套巨型的向量繪圖軟體竟然是免費的。

影片剪輯轉檔:avidemux。

其他:請直接裝 ubuntu studio,裡面這類的軟體多到爆炸。  


【辦公文件】


Office:唯一也是最好用的 Open Office,裡面有 Word、Excel、PowerPoint、…等等對應的軟體。開微軟 .doc 完成度已經非常高(Office 2003 以前),萬惡的 Office 2007 目前沒辦法開,請參考「好公民不助長非法拷貝 -- 請停止散佈 .doc 檔」

看PDF:用內建的 evince 就可以,我覺得 Adobe Acrobat Reader 太肥。另外 Open Office 可以存成 PDF 格式文件。

看CHM:GnoCHM 還不錯,K牌請用 KchmViewer。

看MHT:這種網頁封裝格式非常討厭,偏偏很多教學文件喜歡弄成這個格式,我是用 KmhtConverter 解開。(只有K牌)

字典:超強的 StarDict,跟 Dr. Eye 幾乎一樣,也有即時發音,還可以擴充匯入字典,字典大概有一百多種可以選吧,知名的 longman、cambridge、中英、英英、日英、德英、法英、…,完全免費。字典檔及語音檔請到官網下載。
  
寫網頁:Nvu、Bluefish、或是K牌的 Quanta Plus,對網頁編寫者來說就綽綽有餘。如果是超級專業的商業網站美編高手,還是建議灌 VirtualBox 或 WINE 用假XP裝 Dreamwear、Flash。

翻譯記憶:請服用 omegaT,勉強可以撐上場面,慣用 tardos 的筆譯強者可以按離開了…

系統工具】


檔案格式:請儘量用 EXT3,尤其是根目錄!雖然我以前一直是 ReiserFS/Reiser4 的愛用者,不過長久用下來,R牌快那麼一點點對我來說並沒有省多少時間,而且R牌的開發者被抓去關,我不清楚之後的開發維護是誰接手…,以穩定度與市場潛 力來看,EXT3 與日後的 EXT4 會是最好的選擇。(每次不正常關機後,FSCK 下來就發現R牌整個鳥掉…)

輸入法:gcin,無蝦米輸入法在 Linux 不是問題,記得先裝 im-switch。(注意:舊版 gcin 跟 flash 9 衝突,如果你的 firefox 一直無預警當掉,請更新 gcin)

磁碟分割:Gparted,跟 Partition Magic 很像。(後記:Gparted 有出名片型大小的 livecd)

防火牆控制:Firestarter,只是個 Front-end 軟體,還不錯。

密碼管理:不知道有沒有人在用這個?我最近才開始試著習慣它,管理儲存多組密碼,也可以自動產生複雜的密碼,不用想半天,或抄在紙上。我用的是 Revelation。(我之前待的小公司,直接把全部密碼存成「密碼.txt」放在桌面,我整個囧掉。)

財務管理:有人習慣用電腦軟體記帳嗎?記下每月收入及每日支出。如果用 excel 那就太土法練鋼了。試試輕巧的 Grisbi,或是老牌的專業財管軟體 GnuCash。

中文字型:預設的字體就很棒,也可以偷微軟的新細明體、正黑體來用,但我個人是沒這麼做。(本文圖片上的字型為蘋果 Mac OSX 的「儷黑體」)

Windows檔案:在 Linux 存取 NTFS 檔案格式,用 ntfs-3g,支援寫入跟讀取。反向的話,在XP底下讀取 Linux,用 EXT2 IFS,支援 EXT2/3 非常方便,但 ReiserFS 沒辦法(泣~)。

Windows軟體:Wine 一家獨大,絕大部分XP的Game或商業軟體,都可以在 Linux 底下運行,官網的資料庫提供支援軟體列表,請查看。

Windows模擬:模擬平台推薦 virtualbox,不要再用 vmware 那個肥重老怪物了。裝精簡版 XP Lite,簡直天下無敵,另外最近有個很火熱的 KVM 擬模器,搭配最新的核心 2.6.20,我試不出來…囧。(好像是我的CPU不支援)

Windows遊戲:有兩套商業軟體(要用錢買),Cedega 是專業的遊戲模擬器,可以用 Cedega 灌 Windows 的遊戲,支援 95% 的遊戲,因我本身沒有在玩遊戲,所以我只試用魔獸3、暗黑破壞神2…等主流遊戲,擬真度 99%,很不錯;另一套商業軟體叫 CrossOver,也是 Windows 的模擬平台,主要是灌大型商業軟體使用,如 Dreamweaver、Photoshop、Office…等。這兩個模擬器的核心都是 Wine,軟體本身透過安裝不同軟體進行微調最佳化,所以要收費,如果想試用的話,你知道的…,進牧場找一下很容易可以找到。

(以下圖片是我用 virtualbox 裝 windows xp 當子系統,因為我借不到繁體光碟,所以就抓了簡體版XP,題外話,那個 deepin Xp Lite 真的改的不錯,超級小,才兩三百MB,虛擬機跑起來跟實機一樣快。P.S. 我是灌來做 flash …囧)

有遺漏或新發現的我會再補上,不過這樣已經足以讓我用 Linux 用得很快樂了,希望你也可以在其中找到樂趣。以上所有軟體都可以在 APT source 裡面找到,用 Synaptic 輕鬆安裝,如果有找不到的軟體,請到 GetDeb 網站找找 - http://www.getdeb.net/,或是在回應中提出,感謝收看。


以下列出各種 Ubuntu 的延伸版本。

Ubuntu:原始版本。桌面整合為 GNOME。
Kubuntu:以 KDE 為桌面環境的 Ubuntu。
Edubuntu:edu 就是教育版的 ubuntu,給學齡學童用的,裝有教育輔助軟體。
Xubuntu:以 Xfce 為桌面環境的輕量型 ubuntu。
Linux Mint:美化很漂亮的一個版本,在 DistroWatch 排名很高。
Goobuntu:google 內部使用的作業系統,未流出。
Ubuntu CE:全名是 Ubuntu Christian Edition。
Ubuntu SE:這是惡搞的作品,Ubuntu Satanic Edition。
Elbuntu:以著名的 Enlightenment 17 為桌面環境。
Fluxbuntu:也就是用超級輕量的 Fluxbox。
nUbuntu:Network Ubuntu,加強安全性,以 fluxbox 為主,並移除作者認為不必要的軟體(gnome、openoffice…)
Ubuntu Studio:給影音工作者的 Ubuntu。
Ubuntu Ultimate Edition,包山包海的 Ubuntu 終極版,有點像 Super XP。

下面是隨意在 YouTube 找最多人看過的影片,目前最火熱的技術 Beryl for linux。(後記:Beryl跟Compiz已經合併)

P.S.影片的連結請到作者的blog去看

Ubuntu下的C/C++環境搭建

來自對岸的blog,我比較欣賞的是他其中vim的使用方式,備份一份在這裡

我用的是Ubuntu的Server版本,安裝是很容易的,非常之簡單,不過安裝之後的操作系統幾乎是一個空白的操作系統,幾乎什麼都沒有,所以都得安裝好。

因為是Dapper (6.06) 版本,所以我用以下方法更換軟件源:

vim /etc/apt/sources.list

用以下內容替換文件中的所有內容

deb http://archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

這裡你也可以直接使用更快速的ubuntu.cn99.com的源(推薦):
deb http://ubuntu.cn99.com/ubuntu/ dapper main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

這裡你還可以使用速度也非常快的的mirror.lupaworld.com的源:
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ dapper-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/ubuntu-cn/ dapper main restricted universe multiverse

如果是教育網用戶推薦使用上海交通大學的源:
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ dapper-updates main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu-cn/ dapper bleeding main multiverse restricted universe

教育網用戶也推薦使用清華大學計算機系學生科協的源:
deb http://mirror.net9.org/ubuntu/ dapper main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-backports main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-proposed main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-security main multiverse restricted universe
deb http://mirror.net9.org/ubuntu/ dapper-updates main multiverse restricted universe
deb http://mirror.net9.org/ubuntu-cn/ dapper main multiverse restricted universe

保存編輯好的文件
sudo apt-get update


剛裝好的系統的root是進不去的,需要更改密碼:
sudo passwd root

反正是內網用,所以就直接用root了,sudo太麻煩!

接下來安裝SSH用以遠程登陸:
apt-get install ssh

OK,接著裝編譯器:

apt-get install gcc
apt-get install make
apt-get install autoconf
apt-get install automake
apt-get install libtool
apt-get install gdb
apt-get install g++

編輯器,我偏好使用vim,就裝上了它
apt-get install vim
默認下,vim是沒有語法染色的,
修改/etc/vim/vimrc
只要把syntax on的註釋去掉就可以了。

想要讓vim好用,還需要安裝一些必須的插件,這裡我引用兩篇文章:

第 一部分介紹了一些基本的 Vim 使用技巧。掌握這些技巧可以很大地提高編輯效率,但是 Vim 的強大功能並不僅限於此。Vim 還可以通過「插件」來進行功能擴展。精確地說,是通過腳本來進行擴展,腳本類型有插件、語法加亮、配色方案、文件類型檢測等多種。大部分的腳本都是由 Vim 的用戶寫的,解決了用戶身邊的問題,使 Vim 變得更加有用。本章將介紹最常用的一些腳本,其中除了一個屬於「語法加亮」腳本外,其它都屬於「插件」類型。關於如何寫腳本的一些基礎知識將在下一部分進 行一些介紹。

2.1. gzip(壓縮文件支持)

作者:Bram Moolenar

網站腳本編號:無(包含在 Vim 的標準發佈之中)

安裝說明:

功能說明:

該腳本使得 Vim 可以直接打開使用 gzip [1]、bzip2 [2] 和 compress [3] 壓縮的文件(要求存在相應的命令行工具)。後綴為「.gz」、「.bz2」和「.Z」的文件會在打開時被動態解壓縮,並在寫操作時被自動重新壓縮。

打開壓縮文件時,屏幕上出現一個(不正確的)「[noeol]」的提示是正常的,不必進行理睬。

2.2. netrw(網絡文件支持)

作者:Charles E. Campbell, Jr.(綽號 Dr. Chip)

網站腳本編號:1075(Vim 的標準發佈之中可能包含一個較老的版本)

安裝說明:

Vim 6.4 的標準發佈帶的版本是 42,較老、功能不齊全,但無須安裝。建議:

1. 在 Vim 網站上下載版本 62(更新的版本只能用於 Vim 7);
2. 使用「tar xvfj netrw.tar.bz2 -C ~/.vim」解開;
3. 在Vim中運行「:helptags ~/.vim/doc」安裝文檔。

功能說明:

支持直接讀寫網絡上的文件,支持的協議有 ftp、http、rsync、scp 等。比如,使用 FTP 協議以用戶名 adah 打開服務器 server 上 ~/temp 目錄下的 test.cpp 文件,可以直接在命令行上使用:

          
vim ftp://adah@server/temp/test.cpp

Vim會自動提示用戶輸入口令,然後打開文件。

更多的幫助內容請參考「:help netrw」。

2.3. engspchk(英文拼寫檢查)

作者:Charles E. Campbell, Jr.(綽號Dr. Chip)

網站腳本編號:195

安裝說明:
在 Vim 網站上下載最新版本(engspchk.tar.gz);
使用「tar xvfz engspchk.tar.gz -C ~/.vim」解開;
在Vim中運行「:helptags ~/.vim/doc」安裝文檔。
提示替換拼寫功能需要 agrep [4],可能需要另外下載安裝。

功能說明:
一個Vim專用的拼寫檢查器,其最主要的特點是:

  • 可以通過變量 spchkdialect 選擇英語變體(英國、美國、加拿大),對於找不到的詞、不常見的詞、不在當前英語變體中的詞以不同的方式加亮顯示;
  • 支持用戶詞典(保存在 .vim/CVIMSYN 目錄中)和項目詞典(保存在被檢查文件所在的目錄中);
  • 對於源代碼文件,只對註釋進行拼寫檢查,而不會對你的變量名稱胡亂提抗議;
  • 通過詞典文件可支持除英語以外的其它語言。

圖 5 中的窗口裡 engspchk 正在運行中。其中可以看到,紅色部分是插件所不能識別的單詞,黃色部分是當前英文變體(缺省是美國英語)中不正確的拼法,而青色部分是很少見的單詞。圖中 運行的是包含圖形界面支持的 Vim,因而還可以看到一個名為 DrChip 的菜單項(參見圖6),在其中可通過菜單選擇拼寫檢查相關的各項功能;同時還能看到快捷鍵:「\ec」開始拼寫檢查,「\ee」結束拼寫檢查,「\ea」 選擇替換拼寫,等等。在文本模式的 Vim 中,我們一般就只使用這些快捷鍵了。




更多的幫助內容請參考「:help engspchk」。

2.4. calendar(日曆顯示)

作者:Yasuhiro Matsumoto

網站腳本編號:52

安裝說明:

在 Vim 網站上下載文件 calendar.vim,存到 ~/.vim/plugin 目錄中。

功能說明:

圖 6 的下半部分就是 calendar 的運行示例,是直接在正常模式下鍵入「\caL」顯示出來的。光標在該窗口中時,可使用左箭頭或上箭頭顯示前一個月,右箭頭或下箭頭顯示後一個月,「t」 回到「今天」,「q」關閉日曆窗口。在有鼠標支持時,也可以使用鼠標在黃色字樣的「Prev」、「Today」、「Next」上雙擊達到類似的效果。

除 使用「\caL」外,「\cal」也可以打開一個日曆窗口,但顯示位置是在 Vim 的左側而不是下方。另外,命令「:Calendar」效果和「\cal」相同,但其後可以跟參數:一個參數的話表示月份,兩個參數的話則分別表示年份和月 份。「:CalendarH」與「:Calendar」類似,但日曆窗口的打開位置和「\caL」(而不是「\cal」)一樣,是在下方而不是左側。

2.5. project(文件的「項目」管理)

作者:Aric Blumer

網站腳本編號:69

安裝說明:

1. 在 Vim 網站上下載最新版本(project-1.3.tar.gz);
2. 使用「tar xvfz project-1.3.tar.gz -C ~/.vim」解開;
3. 在 Vim 中運行「:helptags ~/.vim/doc」安裝文檔。

功能說明:

該 插件可以把文件組織成一棵樹的形式,以便於查找和管理。使用命令「:Project」即可打開一個用戶的「項目文件」(~/.vimprojects)。 項目文件採用普通的文本文件的形式,非常易於瀏覽和修改。圖 7 是一個示例。其中左邊窗口部分的就是一棵項目樹,完整內容如下:

CvsMenu="~/.vim" CD=. {
plugin/cvsmenu.vim
doc/cvsmenu.txt
}
Nvwa="~/nvwa_local" CD=. {
doc=doc {
ChangeLog
README
webupdate.sh
}
nvwa=nvwa {
bool_array.cpp
debug_new.cpp
mem_pool_base.cpp
static_mem_pool.cpp
bool_array.h
class_level_lock.h
cont_ptr_utils.h
debug_new.h
fast_mutex.h
fixed_mem_pool.h
mem_pool_base.h
object_level_lock.h
pctimer.h
set_assign.h
static_assert.h
static_mem_pool.h
}
}

在 這個項目文件中存在兩個項目:CvsMenu 和 Nvwa。引號中的內容表示路徑,「CD=.」則表示打開該項目中的文件時,當前目錄會更改到項目所在的目錄。項目下面可以再分子項目,如 Nvwa 項目下有 doc 和 nvwa 兩個子項目,沒有「CD=.」表示打開子項目裡的文件時不再更改當前目錄。

圖中並沒有顯示出完整的 內容,因為其中的內容可以摺疊(缺省打開項目文件時是完全摺疊起來的,即在上面的例子中,只能看到兩個項目的名字「CvsMenu」和「Nvwa」)。在 非文件名行上使用鼠標雙擊或回車鍵可以進行展開或摺疊,在文件名行上使用鼠標雙擊或回車鍵則可以打開對應的文件。

更多的幫助內容請參考「:help project」。

2.6. taglist(源代碼結構瀏覽)

作者:Yegappan Lakshmanan

網站腳本編號:273

安裝說明:

1. 確保機器上有一個可用的 Exuberant Ctags 的版本(可以執行命令「ctags」)

2. 在 Vim 網站上下載 taglist(假設為 taglist.zip);

3. 使用「unzip taglist.zip -d ~/.vim」解開;

4. 在 Vim 中運行「:helptags ~/.vim/doc」安裝文檔。

雖然 taglist 使用 ctags,但並不要求 tags 文件的存在。

功能說明:

使用命令「:Tlist」啟用/關閉 taglist,效果請先看一下圖 8。Taglist 的主要特性有:



  • 可以顯示宏(macro)、函數(function)、變量(variable)、類型定義(typedef)、類(class)、結構(struct)等多種內容信息;
  • 打開多個文件時,可以同時看到多個文件的結構信息;
  • 在左邊的 taglist 窗口顯示的名稱上雙擊鼠標或按回車鍵,右邊主窗口中會跳轉到相應的定義位置;
  • 右邊窗口中光標的位置改變,左邊的窗口也會在 4 秒內(缺省值,參見「:help 'updatetime'」)黃色加亮顯示相應的名稱;
  • 在啟用/關閉 taglist 時,插件能夠自動改變當前 Vim 窗口的大小(不管是文本模式的 Vim 還是圖形界面的 Vim),除非使用「:let Tlist_Inc_Winwidth=0」關閉這一功能(當使用這一功能導致兼容性問題時)。

更多的幫助內容請參考「:help taglist」。

2.7. cvsmenu(CVS集成)

作者:Thorsten Maerz/吳詠煒

網站腳本編號:1245

安裝說明:

1. 在 Vim 網站上下載文件 cvsmenu.vim,存到 ~/.vim/plugin 目錄中;
2. 啟動 gvim,在菜單中選擇「CVS-Settings-Install-Install updates」(文本模式的 Vim 可以使用快捷鍵「,cgii」),從網上(SourceForge)的 CVS 中安裝最新版本和幫助文檔(此步驟可選)。

功能說明:

在 Vim 中集成 CVS [24]版本管理功能。該插件最初由 Thorsten Maerz 編寫,在 2002 年以來沒有再得到維護。我在 2005 年初開始使用這個插件後,非常喜歡它,修正了其中存在的錯誤,並一直維護該插件。如果大家發現有 bug,報告給我就可以了。

主要功能可在圖 9 的菜單中看到:

瞭解 CVS 環境的基本信息和 cvsmenu 中的變量設定(參見圖 10);


  • 調整設定,安裝更新版本;
  • 插入 CVS 的可擴展關鍵字,如「$Date$」、「$Id$」;
  • 對目錄進行基本操作(cvs update 等);
  • 接受附加參數的基本操作(文件比較等);
  • 管理功能,如登錄;
  • 刪除類操作;
  • 打標籤;
  • 觀察(跟蹤)和編輯功能;
  • 將本地文件和 CVS 中的文件進行比較(以 Vim 的分左右兩列使用顏色加亮顯示修改、增加、刪除部分的比較方式;效果參見圖 11);
    圖 11
顯示文件每一行的更改人和更改時間(cvs annotate,參見圖 12);
圖 12

  • 顯示庫的訪問歷史(cvs history);
  • 顯示文件修訂日誌(cvs log;參見圖 13);
    圖 13

  • 顯示文件狀態;
  • 顯示較短的文件狀態;
  • 根據本地信息顯示文件狀態(不訪問庫);
  • 簽出模塊(cvs checkout);
  • 查詢更新;
  • 更新,如有衝突會高亮顯示(cvs update);
  • 取消修改;
  • 添加當前文件到 CVS 中(cvs add);
  • 簽入當前文件(cvs commit);
  • 導入文件(cvs import);
  • 添加並簽入當前文件。

根據實際使用的需要,除了修訂錯誤之外,我加入了一些編碼相關 的支持。拿一個最實際的情況,如果使用「set encoding=utf-8」,但源代碼中仍使用了 GBK 編碼的中文字符,那麼,必須在 .vimrc 中加入一行「let g:CVScvsoutputencoding='gbk'」才能保證「cvs annotate」操作的結果是正確的。

Thorsten 把該插件的易用性設計得相當好。舉例來說,在作文件比較時,按 Tab 可跳轉到下一個不同處,左側的比較窗口中按一下「q」即可關閉該窗口。更多的幫助內容請參考「:help cvsmenu」。

2.8. doxygen(文檔註釋語法加亮)

作者:Michael Geddes

網站腳本編號:5

安裝說明:

1. 在 Vim 網站上下載最新版本(doxygen.zip);
2. 使用「unzip doxygen.zip」解開;
3. 執行「cp -p doxygen.vim ~/.vim/syntax」和「cp -p doxygen.txt ~/.vim/doc」複製文件到 Vim 目錄下;
4. 在 Vim 中運行「:helptags ~/.vim/doc」安裝文檔。
5. 如果 ~/.vim/after/syntax 目錄不存在,使用「mkdir -p ~/.vim/after/syntax」創建該目錄;
6. 進入 ~/.vim/after/syntax 目錄,使用下面三行創建語法文件之間的關聯,使得在 C、C++ 和Java 文件中可以識別文檔註釋:


     
ln -s ../../syntax/doxygen.vim c.vim
ln -s ../../syntax/doxygen.vim cpp.vim
ln -s ../../syntax/doxygen.vim java.vim"


6. 可選地,看一下我的個人編程網頁 [6] 下有沒有對 doxygen.vim 的更新(裡面包含有作者尚未併入到標準發佈中去的我的更改——好奇的話,你可以在 doxygen.vim 文件中數一下,看一看 Wu Yongwei 的名字出現了幾次:-))。

功能說明:

如果你用過文檔註釋,相信我不需要多說,看一下圖 14你就知道這個腳本的功能了。如果你沒有用過文檔註釋,強烈建議你到 Doxygen [7] 的網站上看一下,瞭解一下這個非常有用的工具。作為示例,可在 http://nvwa.sourceforge.net/doc/debug__new_8cpp.html#a17 看一下圖中的代碼使用 Doxygen 自動生成的 HTML 網頁。


圖 14

2.9. matrix(!)

作者:Don Yang

網站腳本編號:1189

安裝說明:

在 Vim 網站上下載文件 matrix.vim,存到 ~/.vim/plugin 目錄中即可。

功能說明:

是的,說的就是電影 Matrix!Vim 的腳本並不是都干「正經事」的。想看一下電影裡那些酷酷的字符在 Vim 的窗口裡翻滾嗎?發一個命令「:Matrix」即可(按任意鍵退出)。效果見圖 15。


圖 15

參考資料

[1] The gzip home page: http://www.gzip.org/

[2] bzip2: http://www.bzip.org/

[3] Compress for UNIX: http://www.answers.com/compress#Wikipedia

[4] agrep: http://www.answers.com/agrep

[5] CVS-Concurrent Versions System: http://www.nongnu.org/cvs/

[6] Wu Yongwei's Programming Page: http://wyw.dcweb.cn/

[7] Doxygen: http://www.stack.nl/~dimitri/doxygen/

鳥哥筆記-Lesson 7

shell首部曲,shell在linux中扮演重要的一環的程式,他是透過ls等等的指令集合跟kernel溝通,kernel在透過硬體去擷取必要的資訊,比方說ls,你給shell ls指令之後,他便會去呼叫kernel的一些function call,然後取得有關inode等等的資訊,那麼kernel如何知道硬碟上面inode等等的分佈狀況呢?當然就是透過一些驅動程式來達成囉

所以shell就是人們跟kernel之間的溝通橋樑

因為shell提供了很多的功能,他也就非常複雜,另外就是,很多人喜歡發展自己喜歡的shell,例如c shell就是熟悉c程式語言的人發展出來的,不過目前最風行的叫做bash shell

  • shell的功能有哪些呢?
  • 執行指令
  • 指令的補全(延長全人類生命)
  • alias(重新定義指令)
  • 控制process(程式)
  • shell scripts(一些方便的程式,如批次處理或者定時處理事項)

當我們打開一個terminal的時候,就會執行一個shell,他提供了許多指令,但shell並不是提供所有的有用程式(也就是說,有一部分事由其他程式呼叫來使用的使用),我們可以用type command來得知,例如說,如果打入type cd,他會告訴你這是一個shell內建的指令,但是type telinit,他會顯示出路徑,表示這並非一個內建的指令,如果他是alias(別名)他則會列出alias的指令

Shell的變數,是一串取代某個特殊符號的名稱,比方說,我們用$HOME取代原本的/home/your_name這樣的字串,這也啥好處呢?原本要打入cd /home/your_name才可以回到家目錄,就變成打入cd $HOME就可以了,這可以方便管理跟縮短我們打字的時間

那如何設定自己的變數呢,直接使用=就可以了,例如,myname="crazy_duke";一般如果沒有空白,可以直接打就好myname=crazy_duke,如果有空白,就加上雙引號;接著觀察可以使用echo $myname

`(quoter),一般位於鍵盤上面橫的數字鍵1旁邊,被他包圍的字串,會被視為指令,然後執行後回傳的結果在當作字串,例如cd /lib/modules/`uname -r`/kernel

set指令則可以列出所有的變數,env指令可以列出所有目前的環境變數,有幾個常用的shell環境變數
  • HOME:家目錄
  • SHELL:目前使用的Shell的名稱,如bash
  • PATH:可執行程式的目錄集合
  • LANG:使用的語言,如zh_TW.UTF-8
  • XMODIFIERS:一般是輸入法,如@im=SCIM
環境變數是shell在執行子程序(child process)的時候留下的變數,其他你設定的變數將會消失,這實在意味著某種不方便,比方說,一些你自己設定好的路徑都將消失,你要用到這些變數將是一個十分痛苦的事情;所以有個功能叫做export,可以export variable,就可以繼續在child process裡面使用

晚一點在談談array的宣告跟一些常用的指令,shell真是博大精深阿

2007年6月23日

加速OOo啟動速度

打開OOo,由"工具"=>"選項"來會跳出一個選單,選擇左邊的OpenOffice.org=>記憶體
增加他的記憶體空間(請見圖片)跟啟動"快速啟動"項目


其實他主要的作用就是用空間換取時間,適合在記憶體空間足夠的人,另外就是進入桌面的時候稍微會曼一點

鳥哥筆記-Lesson 6

今天看的是壓縮檔,老實說,我對於壓縮在command line下,只剩下了兩道指令
tar xzvf xxx.tar.gz
tar cvzf xxx.tar.gz directory

剩下的就交給file-roller,真的是頗為偷懶:P

其實不用我多說,很多人都知道壓縮是用來節省空間的,不過話說回來,大多數人也是只有知道,有壓縮過的檔案比較小;其實壓縮可以看成是把整齊的資料變成一些"縮寫",縮寫的資料"混亂"的程度比原始來的"亂",空間來的小;比方說aaaaaa把他寫成6a,本來只有一種字母,現在變成兩種了,所以壓縮過後比較小,但是比較亂

知道了這件事情之後,還要給些感覺,比方說文字算是最整齊的資料,圖片/mp3一般來說算是很亂的資料,怎麼說圖片比文字亂呢?其實這是不大對的說法,主要是因為圖片會使用類似jpg或者gif的格式,他們是另外一種的壓縮方式(針對圖片設計,而tar, gzip, winrar等式針對一般資料),壓縮過後的資料都會比較凌亂,不相信你可以把檔案連續壓縮,你會發現,容量差別會愈來愈小,所以我一般不大會壓縮圖片/mp3的資料,至於文件檔案,我就會壓縮

接下來就是linux的壓縮指令囉,其實Linux下面有一堆壓縮程式,比較常用的有鳥哥介紹到的幾種,其中compress應該是已經沒啥人在用了,重點是如何辨識他們的附檔案名稱跟語法

  • *.Z compress 程式壓縮的檔案;
  • *.bz2 bzip2 程式壓縮的檔案;
  • *.gz gzip 程式壓縮的檔案;
  • *.tar tar 程式打包的資料,並沒有壓縮過;
  • *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮

其中參數
c 將壓縮過程放置到standard output上,在tar表示create的意思
d 解壓縮
壓縮,其中bizp2跟gzip都可以選擇壓縮比例
compress/gzip your_file
bzip2 -z your_file
gzip/bzip -8 your_file

解壓縮
compress/gzip/bzip -d compressed_file


最後是tar,其實tar是一個打包程式,最主要的兩個指令如上,但是有兩個額外重要的參數,在備份的時候很重要-p(permission)跟-P(path),要加上這兩個參數,不然在解壓縮回來的時候,你會看到ls出來的檔案主要是依據使用者umask,在ubuntu的預設底下會是一片綠油油的(可執行檔的表示),你在檔案管理員下面double-click也會問你要不要執行,真的是很受不了

毅力

其實毅力對決大部分的人來說是需要的,就像是跑馬拉松一樣,尤其很多東西是累積起來的比如說:身材、體力、知識、語言能力;沒有一個是可以一天就弄起來的,我本來想要每天都寫上一篇有關我念鳥哥的心得,結果在算扣除忙碌的日子,還是有偷懶的時候,反省或許是多餘的,加油加油~先來上一篇吧~

2007年6月22日

好用的系統資訊軟體sysinfo

我們過去讀取linux資訊,大多面對的是一堆dmesg等等的指令,資料都是文字模式,怎樣讀起來也是吃力,後來Ubuntu下面有一個預設GUI畫面的應用程式,可以得知硬體之料,不過顯示跟排列的方式,實在是很抱歉阿~囧

昨天看到了一個軟體叫做sysinfo,雖然目前才0.7,不過實在是另我驚艷,因為這才是能看的軟體阿:P

2007年6月21日

Automatix2 on Ubuntu

在linux底下Nvidia在驅動程式支援感覺比ATI好的多orz,一般人在ubuntu安裝3D顯示卡的驅動程式仍然有些吃力,好在Automatix2給了相當的支援,個人推薦使用他來安裝Nvidia的driver,如何安裝automatix2呢?這是針對Ubuntu 7.04跟i386 or AMD64的步驟,有下列幾個步驟
  1. deb http://www.getautomatix.com/apt feisty main(加入到/etc/apt/sources.list)
  2. wget http://www.getautomatix.com/keys/automatix2.key
  3. gpg --import automatix2.key
  4. gpg --export --armor E23C5FC3 | sudo apt-key add -
  5. sudo apt-get update
  6. sudo apt-get install automatix2
如果是其他的distribution請參考http://www.getautomatix.com/wiki/index.php?title=Installation

在安裝完成NV Driver之後,會有一個漂漂亮亮的GUI讓你設定,然後可以匯出xorg.conf(這是X window的設定檔),建議不直接使用存檔功能,請先另存新檔,然後備份就有的/etc/X11/xorg.conf再把新的檔案覆蓋掉舊的檔案就可以了,然後重新開啟Xorg(如果不會就重新開機吧)

LInux使用UUID

在ubuntu中可以發現
#

proc /proc proc defaults 0 0
# Entry for /dev/sda2 :
UUID=0e4aa4fb-46cf-4b5e-9dad-cc9e7eeda693 / reiserfs defaults 0 1
# Entry for /dev/sda1 :
UUID=a56f8c86-92b7-4de8-a9dd-f959bacce64e /boot reiserfs notail 0 2
# Entry for /dev/sda3 :
UUID=abd8bfbe-006c-44f9-aa91-720bc9b4ab5c /home reiserfs defaults 0 2
# Entry for /dev/sda4 :
UUID=c26ad5ec-652d-48aa-a33c-bcafde4451f7 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
本來device被對應成UUID,那麼如何取得UUID呢?
ls -l /dev/disk/by-uuid

接著可能下一個疑問就是,為何要用UUID,請參考
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/zh_tw/admin-guide/s1-storage-rhlspec.html
底下是部份節錄,如果你使用隨身硬碟,裡面裝的是過去window$的分割區,你會發現,你可能會有auto-mount順序的問題,如果改寫fstab,然後用UUID

由於新增或移除儲存裝置,會導致現有裝置的檔案名稱跟著變動,所以當系統重開機之後,可能會面臨儲存裝置無法存取的命運。底下一連串動作,就有可能導致這樣的結果:

  1. 系統管理者加裝一張 SCSI 控制卡,並在上面接了兩顆新的硬碟(現有的 SCSI 卡已經接滿了)。

  2. 舊的 SCSI 硬碟(包括卡上接的第一顆硬碟 /dev/sda)不做任何更動。

  3. 重開機

  4. 因為新 SCSI 介面卡上的第一顆硬碟叫做 /dev/sda,所以先前叫做 /dev/sda 的 SCSI 硬碟得有個新名字

理論上,這聽起來是個大問題;不過事實上不會那麼嚴重。第一,這種硬體變動很少出現。第二,系統管理者多半會停機一陣子,好更動系統;停機時間需要事先仔細規劃,以免超出預計的時間,影響正常運作。這事先規劃的好處,則是讓管理者評估任何裝置名稱改變,可能帶來的問題。

然而,有些企業與系統設定就可能遇到這麻煩。常常更動儲存環境,以符合某些需求的公司,有時候就不容許任何停機時間。像「熱插拔(hotpluggable)」這種硬體就很容易安裝或移除;但在這種環境下,裝置的命名問題,就常常會帶來問題。幸好 Red Hat Enterprise Linux 的功能,可以降低這類問題發生的機會。

5.9.1.2.1. 檔案系統的標籤

有些檔案系統(這部份將在第 5.9.2 節討論)包含一組獨一無二的「標籤(label)」 — 用來分辨檔案系統所儲存的資料。當掛載檔案系統時,就可以利用這標籤,減低使用裝置名稱的需求。

檔案系統標籤用起來不錯;不過這標籤一定要獨一無二。如果同一台電腦裡,有兩個以上的重複標籤,您就沒辦法用這方式存取硬碟。同時要注意的是,有些系統設定並不使用檔案系統(例如某些資料庫),就不能享受標籤的好處。

5.9.1.2.2. 使用 devlabel

devlabel 指令會以另一種方式解決裝置的命名問題。Red Hat Enterprise Linux 開機時(以及使用者新增或移除熱插拔裝置時),會自動執行 devlabel

devlabel 執行時,會從設定檔(/etc/sysconfig/devlabel)讀取裝置清單。每個清單上的裝置,都有個(由系統管理者所選定的)symbolic link,以及該裝置的 UUID(通用唯一識別碼,Universal Unique IDentifier)。

devlabel 指令能確保 symbolic link 永遠指向原始的裝置 — 即使裝置名稱改變也沒關係。這樣一來,系統管理者就能使用像 /dev/projdisk 之類的名稱,而不是 /dev/sda12

因為 UUID 直接來自硬體,所以 devlabel 只要在系統中,尋找相符合的 UUID,並更新 symbolic link 即可。

要了解更多 devlabel 的資訊,請參閱《Red Hat Enterprise Linux 系統管理手冊》。


不過話說回來,人們對於使用UUID的褒貶不一,有人說以前的/dev/sda之類的方式還很清楚,改成UUID這一串長長的字串,反而不容易辨識

鳥哥筆記-Lesson 5

看看Partition跟File system

要說到這個,當然就得由硬體說起,硬碟是我們最常用的儲存裝置之一,他主要由數個圓盤,上面有著磁性物質,可以紀錄0101的二進位資料,然後讀寫臂是一隻長長的類似竿子的東西 ,當他首掃描過圓盤的區域,利用磁性的變化,就可以知道資料囉

每個圓盤會由數個同心圓的軌道(track)構成,每一個圓形分成數個區塊(sector),然後圓盤疊成一個圓柱狀的架構,每個在相同垂直位置上面sector構成了磁柱(cylinder),當然每個sector就是可以存著資料囉

然而第零個sector許於特殊磁區,稱為MBR(master boot record)用以紀錄Partition table跟啟動檔案的相關位置,也就是grub程式的位置囉~Partition table就是用以紀錄虛擬的分區,如/或者/home是由實體/物理上面的哪個cylinder到哪個cylinder

所以現在知道partition table的重要性了嗎?分配完畢空間之後呢,因為因應讀寫的需求,很多的存取的方式就衍生出來了,這部份比較完整的敘述可以參考作業系統(OS)設計的書籍;舉例來說好了,一般的fat32本身並沒有像是linux權限的觀念,他是過去window$跟目前SD卡常用File system

我覺得比較難解釋的是,mount point的觀念,也就是說linux並沒有M$的啥C, D槽的觀念,新加入的設備都是屬於一個新的mount point,也就是一個入口的觀念,不管是你的數位相機或者是SD卡,都會對應到/dev/sda之類的一個點,然後用mount -f vfat /dev/sda /mnt/c_disk這樣子,當掛載(mount)起來的時候,你就是將系統邏輯上的mount point跟實體的/dev/sda(其實這也是一邏輯上得對應)對應起來,事實上現在linux已經很聰明了,不用如過去一般,自己用mount指令,linux會偵測PnP的裝置,自動幫你掛載,除非有某些特殊原因,你才需要自己手動掛載

ls -l /lib/modules/`uname -r`/kernel/fs,這個指令可以看到你目前的kernel支援多少種FS(file system)

磁碟有了分割(partition)跟FS(file system)之後就可以開始使用,但是這時候我們對磁碟的東西有多開始有了興趣,有兩個指令可以幫助我們,分別是df(disk free)跟du(disk used),他們可以列出目前有多少剩餘空間跟已經使用的空間,-h參數可以以比較人性化的方式顯示出來剩餘空間數,比如說多少MB,不然他會給你的是cylinder的個數,你還要自己換算,頗為累人,最後要加上要查詢的mount point,如df -h /mnt/cdrom

另外一個我常用的統計方式是,du -h --max-depth=1 /mnt/cdrom,其中--max-depth=1表示路徑深度為1的使用奘況,如果該file是個目錄的話,他就會加總列出底下子目錄跟檔案總共佔用的空間大小,而不會把所有的檔案跟目錄佔用的大小逐一列出

那麼要使用一個全新的設備(可能連FS都沒有的裝置,或者你想把他規劃成我們想要的FS格式),有幾個步驟
  1. 對磁碟進行分割,以建立可用的 partition (fdisk)
  2. 對該 partition 進行格式化( format ),以建立系統可用的 filesystem(mke2fs...)
  3. 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗(fsck)
  4. 在 Linux 系統上,需要建立掛載點 ( 亦即是目錄 ),並將他掛載上來(mount ...)
接下來先看看幾個好玩的指令,在M$底下有所為的捷徑,在linux底下當然也不能少,他們都是有如實體的檔案存在,不過linux更加的廣泛;ln(link)指令可以製作

先寫到這裡,有點亂,晚一點有空在繼續跟整理

2007年6月19日

鳥哥筆記-Lesson 4

linux檔案的權限大致上分成owner, group, others;也就是擁有人、群組跟其他人,擁有人就是檔案的所有權人,本身權力是最大的,再來就是跟你同一組的人(例如同學之類),再來就是其他人囉~

每個人對檔案都有對應的rwx,分別是r(read)、w(write)、x(eXecute)這三項,一般而言,你個人的權限設置都是owner>=group>=others,比較合乎常理,也就是說你不應該把你自己設定為不可更改檔案,但是卻把你的群組的人設定成可以(不合理並不表示不可以)

要更改檔案權限的指令是chmod(change mode),使用二進位模式r=4,w=2,x=1,然後數字加總起來就是一組權限,分別對應owner, group, others就要有三組號碼,比如說你要把檔案權限變更成自己可以rwx,但是其他人都不可以使用,就使用chmode 700,如果你希望你同組的人可以讀取該檔案,你就是使用chmode 740這樣

這時候你可能會有點疑問是,每次我都要組合一次嗎?當然可以使用另外一種好記憶一點的語法就是chmod u+rwx file,表示擁有者u/g/o/a分別對應owner/group/others/all(包含前三者)+表示給予權限、-是除去權限、=表示設定,rwx就是分別各種權限囉,file表示你要更改權限的檔案,上面的方式是說,幫使用者加上讀、寫、執行的能力

一個人可以自己設定分享檔案的權限,但是誰來管理使用者呢?答案是root,一個linux系統預定的最高權利人,這個帳號幾乎可以對於你系統做出任何事情,延續之前的想法,我們想要反過來設定檔案的所有人chown(change owner),想要改變一個人的群組chgrp(change group)

接著就是講到file,其實linux底下的file包含了很多種種類,有regular file(一般檔案)、目錄(directory)、連結(link)、設備(device)、資料接口(socket)、資料傳輸管線(pipeline);詳細內容就請參考鳥哥的網站囉

最後要寫的是FHS我這方面的資訊不足,如果我要寫,可能會把鳥哥的網站copy很多資料,所以請參考鳥哥的網站,印象中它就是為了稍微整理一下各家linux distribution目錄結構不一致的問題,免得大家在開發程式,還為了尋找library等等的問題傷透腦筋,這是一個很好的提案

還有最近火紅的ntfs-3g,如果是ubuntu的話,請參考我的blog,以我們知道的ntfs是封閉模式(不是open source也不是open standard),有開放的一部分似乎只有讀取,且效能不張,後來有人揣摩出ntfs開發出了ntfs-3g的driver,讓使用者可以直接用有效率的方式讀寫ntfs;另外就是VFS(virtual file system),有點類似分散是檔案管理,也就是在硬體中間插入了一層logic layer,讓使用者可以有彈性的增減硬碟等等的設備

2007年6月18日

合法?合理?

最近往往看到一堆關於這方面的文章,因為是模糊地帶,所以侵犯到規範的人應該不算少

首先是新聞報導有提到
有某甲在網路或者其他通路買到一片動畫光碟,然後這張光碟本身是盜版的(某甲購買的時候不知情);接著在看完的狀況下,某甲再把它賣出,如果是正版,當然沒啥問題,可是這屬於販賣盜版的行為,所以有出版商就提出告訴。即使他在得知這對方真的不是盜版商人,它還是會堅持提告,真是心態可議,某甲可能為了息事寧人的狀況下,目出數十萬的賠償,本身還可能比這張光碟可以賣得的利潤還高。聽說有出版商很喜歡這樣作~


這就牽扯到,到底何者是對的?如果一般消費者辨識不出真假,不小心再把它拿出去交易,這樣也犯法的話,本身似乎太過苛責,舉例來說,如果一般人辨識不出假鈔再把它拿去消費,存款,那麼是否也是要國家單位提告呢?何者合法?何者合理?

再者說到翻譯字幕
很多人喜歡看外國影片,尤其是日文,但是看不懂中文的很多,中文出版商對於這部份又是愛理不理(因為有些作品沒$賺),所以就直接輸入不翻譯等等;網路上有人就發起了中文的翻譯字幕的念頭,可是這部份似乎犯法了,單單就翻譯字幕檔案的部份(本身不涉及散播動畫檔案)

因為這部份的權利似乎是給了出版商,可是在出版商的曖昧態度下,有好些人只能享受到"半部"作品,對於這些人翻譯的權利似乎被"剝奪"?何者合理,何者合法?

最後講到DVD分區的問題
DVD被全球劃分成數個區塊,然後每個區塊有他自己代號,一般來說你只能用對應的區號的解碼器(不論軟體、硬體),解開那一區塊代碼的影片,軟、硬體製作商應該也是被要求對於每個區碼付出相對應的權利金。

以一般的狀況來說,一個地區的解碼器,大部分只有為了該部份設計(軟、硬體廠商,為了賺錢),問題來囉,你在亞洲買了一個DVD,到美洲國家,你可能需要在買一塊,結果幾乎相同的作品,竟然要購買五塊相同的片子?何者合理?何者合法?

在考慮合法、合理等等事情中間的時候,似乎還參雜著商人利益的裝飾,真叫人有點不知所措阿!

2007年6月15日

鳥哥筆記-Lesson 3

由於已經晚上了,腦袋已經不靈光了,所以就進行一些簡單的任務吧,來看看一些常用的指令,本來應該先看一下檔案架構跟FHS的,不過就免了吧,免得腦死

絕對路徑跟相對路徑是很重要的觀念,如果有寫過網頁的人應該蠻清楚的,不再多說~鳥哥列出了一些常用的指令cd(改變目前所在位置), pwd(印出目前位置), mkdir(建立目錄), rmdir(刪除目錄),接著就是一些比較少用的方式囉

mkdir -p dir1/dir2/dir3 (對於不存在的目錄/路徑順便建立)
rmdir -p dir1/dir2/dir3 (刪除一連串的目錄)
mkdir -m 744 dir1 (其中m表示設定權限)

PATH變數說使用的指令/執行檔所在目錄,一般你下指令,會先到這些目錄收尋,如果match到的指令就套用;使用echo $PATH來觀察,增加可以使用
export PATH=$PATH:/home/user1/bin
這樣子不同的路徑之間用分開

檔案目錄操作指令常見的有cp(copy), rm(remove), mv(move),其中比較值得一提的是mv又可以作為重新命名之用,一般使用者如果直接從M$對應過來,可能比較適應,這些指令的常用的格式都是cp/rm/mv source_file destination_file

檢視檔案的內容,或許你會覺得linux/unix之類怎麼那麼無聊,發展出這些簡單的指令,然後好像功能又是重複,或者很無用呢?

其實是有些歷史因素,比如說,你由遠端登入觀看log檔案,有時候可能會有幾百MB那麼那,你不可能一頁一頁看,而且通常重要的事情會發生在尾端,你就需要從後面看(類似tail指令)

有些則是慢慢可以從前面找,只要看過就好,就可以用cat,但是如果說要比較,要上一頁/下一頁的跑就用less,有時候如果你想要從中間抓出特定給行,這時候行號就很重要啦,如nl之類的指令(大部分會配合pipeline使用)

接著你會覺得很無聊的就是,為何還有些只會抓幾行這麼龜毛的功能都出來了?因為過去很久以前阿,記憶體可是很貴的,網路頻寬也是很珍貴,能省則省(MIS多死幾個腦細胞沒關係XD)

功能很類似的指令,其實是消耗記憶體不一樣(歷史發展理由)或者可以使用pipeline來做出非常彈性的變化
  • cat 由第一行開始顯示檔案內容
  • tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
  • nl 顯示的時候,順道輸出行號!
  • more 一頁一頁的顯示檔案內容
  • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
  • head 只看頭幾行
  • tail 只看尾巴幾行
在來看一個touch指令,看起來非常無用阿,只是更改一些狀態跟時間,真的是好像非常無聊;不過它也有實用的地方喔!

如果你開發過程式,你就大概隱約知道makefile的功能,在編譯C/C++程式的時候,主要根據C file(.c/.C)的更新日期,make程式來自動計算要不要重新編譯,因為數十年前來說,CPU資源是很珍貴的~編譯過的片段程式,沒有更新當然不用在編譯一次,可是有時候你只有改變了header file(.h),這樣make程式不會發覺,會造成錯誤喔,你也不想再用vi xxx.c然後再把它存檔,只要單純的touch xxx.c就可以了,重新make就可以了

下一次再來看看檔案權限的問題跟其他~

鳥哥筆記-Lesson 2

對於開機程序,鳥哥好像一開始比較少著墨?或許是寫在後面吧,anyway,我依照我手邊的資訊來補足開機的部份

開機一開始,當然是開機程序的天下,grub請參考之前的blog,grub有一個重大的任務就是找到kernel,如果有將/boot分割區分割出來,他就是放在boot上面,當然kernel不會太大,所以接下來就是開機的步驟囉
  1. grub首先完成開機的部份載入kernel到記憶體中執行
  2. kernel初始話device(為了掛載/)並且載入drivers
  3. kernel掛載/
  4. kernel啟動init程序(它是特別的程序,主宰眾多的process)
  5. init執行對應的run level
  6. init執行完成step 5之後,啟動登入程序,允許你登入
run level一般而言是一堆script集合,放在/etc/rc[1-6].c的目錄中,主要是啟動各種service主要的地方,比如說apache或者mysql之類的,他們一般都是daemon(有人說是惡魔,也有人說是守護神,性質類似常駐程式);目錄的數字表示run level,不同的run level表示不同的應用,比方說level 5是桌面程式,level 3是命令模式(開機完成並不會起動gdm等的登入畫面);因為不同的應用,所以要啟動的程式也不一樣,可以使用telinit 5或者telinit 3的方式來切換模式。

在各個目錄之中會看到檔名為S11klogdS表示start,後面的數字表示啟動的先後klogd表示它服務的名字,他是紀錄系統log的daemon,你會發現他是一個link

其實大部份的script的位置放在/etc/init.d/裡面,因為不同的run level可能會擁有共用的啟動程式,所以用作為link的方式最方便管理

2007年6月14日

鳥哥筆記-Lesson 1

要安裝Linux首先要知道自己的目的,以我個人來說就是當一些簡單的server,以充作開發環境,順便當作Desktop,我並沒有太多多餘的電腦可以拿來架設server,Distribution挑上Ubuntu,他是Debian base的系統,對於他的套件維護系統,我向來是相當讚賞(以前Linux安裝軟體,可是會被套件的相依性煩死的~呵呵),硬體就不用太計較,一般的桌上型電腦都可以吃阿

要安裝,首先我覺得最難的部份就是硬碟分割囉,在分割之前,要先認識一下各個硬體在Linux底下的代號

裝置代號
IDE硬碟
/dev/hd[a-d](大概是因為IDE一般只有連接四個裝置吧)
SCSI設備/dev/sd[a-p](SATA硬碟也算是這一種)
USB設備
/dev/sd[a-p](同上)
CDROM/dev/cdrom
軟碟機/dev/fd[0-1](應該比較少人在用了吧)
印表機/dev/lp[0-2]
滑鼠
/dev/mouse
磁帶機/dev/ht0(IDE介面)
/dev/st0(SCSI介面)

再來就是建立分割區囉,如何使用一些分割工具,就請見鳥哥的網站說明,如果是使用Ubuntu內建的分割程式也方便,重要是要如何分割囉,一般最少要有/(名稱是root)跟swap兩種分割,swap就是虛擬記憶體的空間,因為一般來說,只要記憶體不足,你就需要使用到它,另外/就表示是OS放置的地方囉~
如果以入門的人,當然只要這樣就可以,可是如果說要當Server之類,就要有別的切割方式,狀況有點類似在安裝M$ OS,這種安裝方式,就是整體只有一個C槽,程式跟資料全部放在一起,哪天OS毀了(中毒或者其他),你要從新安裝,那就辛苦囉,要整個format,在那之前還要備份哩,如果分成C,D兩顆,把資料放在D,程式跟OS放在C那就好一點,重新安裝完畢,對D做掃毒的動作就好,不用重新額外被分,當然Linux本來就有這樣的設計

我們來看一些常用的分割區
/(一定要有,就是放OS主要的地方)
/boot(放置kernel image的地方,在某些原因的時候,你必須要有這個,空間不用太大1G就很多了)
/var(如果安裝server,這個就很重要囉,你每天紀錄的log跟一些mail預設是放在這裡)
/home(使用者的空間,一般你個人的文件啦、網頁、照片都放這裡,所以這會是很大的一塊)
swap(一般要求是記憶體的兩倍,實際上,應該2G就很多了,如果特殊用途就另外)

如果只有/,那就是所有的/home,/var,/boot都是分享/的空間,一方面效能比較不好,另外一方面資料會混雜,效能是因為分割的話,讀寫臂可以快速移動到該分割區,資料也比較集中,資料混雜的問題如前面說的

基本上如鳥哥所說的,要注意一點就是,Linux只有允許四個Primary,也就是四個槽,你要額外在加上去的話,要先劃分extended在分成數個logic,也就是一般只會達到三個Primary一個extended,一個extended可以分成數個logic,如果把Primary都佔用光光,那麼以後要新增硬碟會有些麻煩喔~~另外可以用fdisk來觀看partition table

至於接下來安裝的一些選項就掠過不說(抱歉,這是我個人筆記,所以我只是針對我比較覺得要注意或者值得留意的記下,像是FS的問題我就不探討,請上鳥哥網站去看),最後所有distribution幾乎會安裝多重開機程式,不管是lilo或者grub也好,都是很方便的

下一個課程再來探討開機程序的過程

鳥哥筆記-Lesson 0

接觸Linux已經有一段時間了,Linux相關的知識也還不足夠,稱不上是個MIS,當然得好好的惡補一番囉!,網路上資源不少,高手也多,但是唯獨鳥哥真的稱得上"誨人不倦"阿,當然study-area也不例外

現在已經很多網站轉成討論版模式,這是我比較不喜歡的,因為說一句實話,那種網站的內容填充比較雜亂,也很難維護,不過內容由於大眾提供,擴張相當快速,鳥哥的私房菜算是中流砥柱,屹立不搖,我比較喜歡有主軸的方式

鳥哥另外令人佩服的一點就是,他不只公開的它內容,連帶他的書本也一樣暢銷,這是少數公開內容之後,書本又賣得很好的作者,讓我相當佩服

當然在決定補強Linux知識的時候,我決定以鳥哥網站的內容為基礎,做我自己內容的筆記,這只是我個人的筆記,所以請尊重鳥哥,喜歡他的內容的話,請上他的網站,或者買他的書籍,謝謝

2007年6月13日

Ubuntu 7.04安裝Postfix With SMTP-AUTH And TLS

http://www.howtoforge.com/perfect_setup_ubuntu704_p5
從上面網址看來的,作一下筆記


In order to install Postfix with SMTP-AUTH and TLS do the following steps:

apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail

You will be asked two questions. Answer as follows:

General type of configuration? <-- Internet Site
Mail name? <-- server1.example.com

Then run

dpkg-reconfigure postfix

Again, you'll be asked some questions:

General type of configuration? <-- Internet Site
Where should mail for root go <-- [blank]
Mail name? <-- server1.example.com
Other destinations to accept mail for? (blank for none) <-- server1.example.com, localhost.example.com, localhost.localdomain, localhost
Force synchronous updates on mail queue? <-- No
Local networks? <-- 127.0.0.0/8
Use procmail for local delivery? <-- Yes
Mailbox size limit <-- 0
Local address extension character? <-- +
Internet protocols to use? <-- all

Next, do this:

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Afterwards we create the certificates for TLS:

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Next we configure Postfix for TLS:

postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = server1.example.com'

The file /etc/postfix/main.cf should now look like this:

cat /etc/postfix/main.cf

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Restart Postfix:

/etc/init.d/postfix restart

Authentication will be done by saslauthd. We have to change a few things to make it work properly. Because Postfix runs chrooted in /var/spool/postfix we have to do the following:

mkdir -p /var/spool/postfix/var/run/saslauthd

Now we have to edit /etc/default/saslauthd in order to activate saslauthd. Set START to yes and change the line OPTIONS="-c" to OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":

vi /etc/default/saslauthd

#
# Settings for saslauthd daemon
#

# Should saslauthd run automatically on startup? (default: no)
START=yes

# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam -- use PAM
# rimap -- use a remote IMAP server
# shadow -- use the local shadow password file
# sasldb -- use the local sasldb database file
# ldap -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"

# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""

# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5

# Other options (default: -c)
# See the saslauthd man page for information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Now start saslauthd:

/etc/init.d/saslauthd start

To see if SMTP-AUTH and TLS work properly now run the following command:

telnet localhost 25

After you have established the connection to your Postfix mail server type

ehlo localhost

If you see the lines

250-STARTTLS

and

250-AUTH PLAIN LOGIN

everything is fine.

The output on my system looks like this:

root@server1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

Type

quit

to return to the system's shell.

14 Courier-IMAP/Courier-POP3

Run this to install Courier-IMAP/Courier-IMAP-SSL (for IMAPs on port 993) and Courier-POP3/Courier-POP3-SSL (for POP3s on port 995):

apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

You will be asked two questions:

Create directories for web-based administration ? <-- No
SSL certificate required <-- Ok

If you do not want to use ISPConfig, configure Postfix to deliver emails to a user's Maildir*:

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart

*Please note: You do not have to do this if you intend to use ISPConfig on your system as ISPConfig does the necessary configuration using procmail recipes. But please go sure to enable Maildir under Management -> Server -> Settings -> EMail in the ISPConfig web interface.

Gnome快速鍵

Ctrl+Alt+d 顯示桌面
ctrl+b 書籤
ctrl+c 複製
ctrl+v 貼上
ctrl+f 搜尋
shift+ctrl+f Web搜尋
ctrl+i 顯示屬性頁
ctrl+h 切換到home
ctrl+u 向上一級
ctrl+n 建立新文件
ctrl+o 打開
alt+f4 關閉視窗
shift+ctrl+w 關閉所有視窗
ctrl+= 放大
ctrl+- 縮小
ctrl+t 放到垃圾筒
ctrl+r/F5 更新

其實有不少跟M$相似的,但是最重要的是那個顯示桌面,我實在太習慣這種整理方式了orz,還有其實可以從"控制中心"=>"程式快捷鍵"找到不少

對兩個SATA硬碟套用grub多重開機

用的是grub 0.97,至於新版的grub已經直接跳到2.0,適用與否我就不知道了

SATA硬碟在Linux底下似乎被當成了SCSI裝置,然後我實驗發現,竟然開機會有"記憶效應"=.=,哪一顆硬碟先開機是有差別的

我兩顆硬碟,一顆裝M$ XP,一顆裝Ubuntu,那麼如果說,我先把其中一顆拔掉,然後開機,接下來再把另外一顆裝上,電腦會使用先前開機的那一顆開機orz

當然我是把grub安裝在Ubuntu開機的硬碟上面,然後先用Ubuntu開機,然後關機,再把裝有M$ OS的硬碟插上去,接下來修改grub設定,假設我們/dev/sda是ubuntu,/dev/sdb是M$ OS,我們修改device.map檔案,加入
(hd0) /dev/sda
(hd1) /dev/sdb
接著修改menu.lst,加入
title=Windows XP
rootnoverify (hd1,0)
map (hd0) (hd1)
map (hd1) (hd0)
chainloader +1

其中rootnoverify是表示使用該device作為root但是不會去mout他,map語法因為M$ OS有的需要一定作為排名上第一的硬碟,他才會爽開機

為了M$的設定,我在網路上找了三個多小時的資料,開機十幾次,頗為orz

Grub from ppt.cc

: 如果有多台硬碟,我通常會建議把grub優先灌在IDE硬碟上的MBR。為什麼?
: 先解釋一些東西。『MBR』是什麼?
: MBR就是每台硬碟第一個磁區(Sector,它的大小是512bytes)。
: 當我們一啟動電腦,BIOS作完一些基本的測試、初始化之後,
: 就會查詢你之前所設定的開機順序,
: 從開機順序決定要去哪個裝置讀取程式來載入作業系統。
: 比如說今天設定從一台硬碟機啟動,那麼BIOS就會去讀取這台硬碟上的第一個磁區,
: 也就是所謂的MBR。MBR裡通常存放者一些多重開機程式,例如grub、SPFdisk。
: 這些多重開機程式可以去硬碟上『裝有作業系統』的
: 『不同的分割區』上的第一個磁區(稱作boot sector,不要與MBR搞混)
: 啟動作業系統核心loader(例如:Windows XP的NT kernel loader)。
: 作業系統核心被成功啟動後,就可以使用作業系統了。
: 至於Linux的核心的loader就是grub。grub不能啟動Windows的kernel,
: 所以必須要去分割區上的第一個磁區找到Windows kernel的loader。
: 所以grub中會有一個指令叫作『chainloader +1』
: 就是去讀取一個Partition(分割區)的boot sector,
: 那個『+1』代表該Partiton的第一個Sector,『+2』代表第二個Sector、...依此類推。
: 但grub是一個功能強大的多重開機程式,
: 根本不可能把那麼多功能塞在一個512bytes的MBR上。
: 所以這個程式被切割成幾個部份:Stage 1、Stage 1.5、Stage 2。
: 這三個檔案可以在/boot/grub/底下找到。
: Stage1大小為512bytes,所以剛好可以存在MBR上。
: 當電腦一開機,BIOS啟動MBR上的grub Stage1,Stage 1會去啟動硬碟上的Stage 1.5。
: 可是有一個問題出現了,Stage 1是如何找到Stage 1.5的?
: Stage 1只有區區的512bytes,是沒有多餘的能力可以操縱分割區上的檔案系統,
: 所以沒有辦法用這個方法找到Stage 1.5。
: 而Stage 1其實是用一個方法找到Stage 1.5的檔案,就是當初在安裝grub到MBR時
: Stage 1.5所在硬碟上的那一個磁區的位置會被紀錄到MBR中,
: 所以Stage 1就會去指定的磁區位置找到Stage 1.5執行它。
: 那麼Stage 1.5是作什麼用的呢?Stage 1.5有很多個檔案,
: 分別是用來處理檔案系統(File System)用的。
: 像『fat_stage1_5』就是用來處理FAT Partition上面的檔案用的、
: 『e2fs_stage1_5』是用來處理Ext2、3的檔案系統用的。
: 所以grub到了Stage 1.5就可以由File System處理許多Partition上的檔案。
: 那麼接下來Stage 1.5會去啟動Stage 2。
: Stage 2就是grub的主要核心,幾乎大部分的功能都在裡面。
: 可是又有一個問題出現了,Stage 1.5是如何找到Stage 2的?
: 答案是:因為Stage 1.5已經可以辨識Partition上的File System,
: 所以自然有辦法找到Stage 2的檔案。
: Stage 2啟動後會去讀取menu.lst,然後grub的開機選單就呈獻在我們眼前。
: 還有一件事要注意的,就是我們開機啟動grub後,
: grub會對電腦上的每一台硬碟機命名。
: BIOS一開機時會在主記憶體初使化BIOS中斷服務(BIOS interrupts)。
: grub似乎是從BIOS的中斷服務得知電腦上的硬碟數量。
: 可是BIOS對每台硬碟機給的排序有一個特色(這一句話我不是很肯定),
: 就是可以用來開機的那一個硬碟機比較特殊,都是『第一個』硬碟機。
: 不管是用SATA、IDE、USB或SCSI硬碟開機,那一台硬碟就是『第一個』硬碟機。
: 其餘的硬碟機分別會依
: Primary IDE Master→Primary IDE Slave→Secondary IDE Master→
: Secondary IDE Slave→SCSI、USB或SATA
: 作排序。如果該插槽的硬碟機不存在就跳過排序。(光碟機不算在內)
: 然後grub會依照BIOS所給定的排序,分別給每一台硬碟機一個名稱--BIOS drive。
: 這個名稱的命名是從數字『0』開始
: (據說grub 2會改成從『1』開始。Partition的命名也是從『0』開始。),
: 第一台硬碟機就命名為『hd0』、第二台硬碟機就命名為『hd1』、
: 第三台『hd2』、...依此類推。
: 例如以下組合:
: [1] (『Primary IDE Slave HDD with grub』 + 『SATA HDD』),
: 從『Primary IDE Slave HDD with grub』開機
: → 『Primary IDE Slave HDD with grub=hd0』,『SATA HDD=hd1』
: [2] (『Primary IDE Master HDD』 + 『SATA HDD with grub』),
: 從『SATA HDD with grub』開機
: → 『Primary IDE Slave HDD=hd1』,『SATA HDD with grub=hd0』
: [3] (『Primary IDE Master HDD』 + 『Secondary IDE Master CDROM』 +
: 『Secondary IDE Slave HDD with grub』),
: 從『Secondary IDE Slave HDD with grub』開機 → 『Primary IDE Master HDD=hd1』
: ,『Secondary IDE Slave HDD with grub=hd0』
: 現在大概清楚grub的命名原理了吧。
: 那為什麼我會建議把grub灌到IDE硬碟上呢?
: 舉個例子:假設我們把Linux、grub灌在一台電腦的IDE HDD上的第3個分割區,
: 這台電腦還有一台SATA HDD。如果說今天改變主意,我們從IDE HDD啟動Linux,
: 然後我們在Linux中想把grub灌在SATA HDD上。
: 我們會執行以下指令:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: # grub
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 這樣grub Stage1是會被灌到SATA HDD上的MBR沒錯,
: 可是我們個Stage 1.5與Stage 2卻是在『(hd0)』的硬碟上,
: 也就是說『Stage 1.5』所在的硬碟hd0上某個磁區的位置會被紀錄到MBR中,
: 這樣才可以給Stage 1找到。被紀錄到MBR的不是只有Stage 1.5所在的磁區位置,
: 還有所在的硬碟代號--hd0。
: 如果現在就重新開機,並調整BIOS為從SATA HDD開機,就會出現失敗。
: 為什麼?因為之前說過,用來啟動grub的那一台硬碟是第一台硬碟,
: 本來我們從IDE HDD開機進Linux,那個時候的hd0指的是IDE HDD。
: 可是灌好grub到SATA HDD後,重新開機、調整BIOS開機順序後,
: hd0變為SATA HDD那一台。在開機的時候,
: SATA HDD上grub會去找hd0上某一處磁區的Stage 1.5。
: 可是我們知道Stage 1.5應該是在IDE HDD上才是,
: 並不存在SATA HDD上,所以會產生錯誤。
: 諸如此類的問題還有不少,所以我是建議把grub灌在IDE硬碟上。
: 如果沒有IDE硬碟,就不用擔心這個問題,就把它灌在SATA、SCSI、USB硬碟上。
: 其實上面的講法不夠好,更一般的說法是:
: 請按照
: Primary IDE Master→Primary IDE Slave→Secondary IDE Master→
: Secondary IDE Slave→SATA 1→SATA 2→....
: 的順序安裝在以上第一個出現的硬碟機上。
: 不過上面那個失敗的範例也是有解決的方法,
: 就是手動指定裝置檔對應到BIOS drive。可以使用grub的『device』指令。
: 指令如下,請自行意會:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: # grub
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 還有一個grub的問題就是裝置檔的問題。現在許多Linux Distribution使用
: udev來管理裝置檔(也就是/dev底下的那些檔案)。
: 可是udev在Linux核心開機後才會動態製作那些裝置檔,例如/dev/hda、/dev/sda。
: 我們常用Live CD去救援的時候,在chroot到我們要被救援的Linux partition後,
: 會發現grub抓不到任何硬碟。這是為什麼?
: 這是因為似乎grub在作業系統中執行的時候(就是不是在開機的時候執行),
: 是去/dev底下搜尋硬碟機的。
: 可是那個被救援的Linux partition的Linux核心並沒有被啟動,udev也沒有正常執行,
: 所以在chroot後的/dev底下沒有任何有關硬碟的裝置檔,
: 所以此時grub會找不到任何硬碟機。
: 解決的方法是用『mknod』這個指令手動創造裝置檔。
: 例如:
: # mknod /dev/hdc b 22 0
: 是用來創造hdc這個裝置檔到/dev底下。
: 那個『22』不是亂打的,它可以在Linux kernel Document查到
: /usr/src/linux/Documentation/devices.txt
: 而那個『0』指的就是/dev/hdc本身。
: 如果要創造/dev/hdc4這個裝置檔,可以用這個指令。
: # mknod /dev/hdc4 b 22 4
: 以下是一些常用的代號:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 3 block First MFM, RLL and IDE hard disk/CD-ROM interface
: 0 = /dev/hda Master: whole disk (or CD-ROM)
: 64 = /dev/hdb Slave: whole disk (or CD-ROM)
: 22 block Second IDE hard disk/CD-ROM interface
: 0 = /dev/hdc Master: whole disk (or CD-ROM)
: 64 = /dev/hdd Slave: whole disk (or CD-ROM)
: 8 block SCSI disk devices (0-15)
: 0 = /dev/sda First SCSI disk whole disk
: 16 = /dev/sdb Second SCSI disk whole disk
: 32 = /dev/sdc Third SCSI disk whole disk
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 製作好裝置檔後,再執行grub就可以找到硬碟了。
: 記得裝完grub後要把手動製作的裝置檔rm掉,讓udev來管理裝置檔。
: (不刪掉應該也不會有什麼問題)
: (如有錯誤,歡迎指正)
推 好文一個
看我這篇文章的時候請先把上面的好文看玩
GRUB視一套開機管理程式
在此並不針對GRUB做詳細說明 因為上面講解的比我還要詳細許多

來說說今天發生的一件慘事
就是某位RD把GRUB安裝在/dev/hda1
(經由確認 電腦的XP是安裝在hda1 且為NTFS磁區 )
正常的情況下GRUB 都是裝在/dev/hda 即所謂MBR 或者是LINUX的BOOT磁區的第一軌
又或者是BOOT硬碟的第一個主要分割區

但是今天 他卻把GRUB裝在NTFS分割磁區的第一軌 而且那個磁區已經要資料在

這就發生了慘事 不但XP開不了機 連NFFS分割區上面的資料全毀

這個時候就會有人說 找硬碟救援軟體 如 FINALDATA EASYRECOVERY R-STUDIO
去救資料 這也行 因為它是刞ㄧ個SECTOR一個SECTOR去做掃描 來讀取 有人會問了
既然是把第一軌毀掉 那總可以重建八
是的 MFT可以重建 因為當初在設計NTFS 這個檔案系統的時候
就想過分割區的第一軌有可能會被病毒修改 而開不了機或者是
下面先列出位於 http://www.ntfs.com/ 的 一段話

How can we fix NTFS boot sector using standard Windows NT/2000/XP tools?

On NTFS copy of boot sector is stored at the middle or at the end of the Volume.

You can boot from startup floppy disks or CD-ROM, choose repair option during
setup, and run Recovery Console. When you are logged on, you can run FIXBOOT
command to try to fix boot sector

翻譯就是NTFS磁區的 Boot Sector 也放了一份複本在中間鬼與最後一軌
所以只需要把XP或是2000的安裝光碟放入 然後選擇修復主控台模式 打入FIXBOOT即可修復

哈 都是GRUB惹的禍