XWindows bootstrap

這是我的環境: Fedora Core 5, GNOME
簡單紀錄一下這幾天 Trace 的結果.
當你開機後預設模式是圖形(怎麼知道預設模式是甚麼??請參考 /etc/inittab.)的時候,順序大致是這樣子的:
1. Kernel
2. /etc/rc.d/rc.sysinit
3. /etc/rc.d/rc, /etc/rc5.d/ 下的 script
4. /etc/rc.local (其實是在 /etc/rc.d/rc.local)
5. prefdm, 這會把預設的 desktop manager 叫起來 (怎麼知道預設 desktop manager 是甚麼?請參考 /etc/sysconfig/desktop)
6. 登入以後,會執行 /etc/X11/xinit/Xsession
7. /etc/X11/xinit/xinitrc
8. /etc/X11/xinit/xinitrc-common
9. /etc/X11/xinit/xinitrc.d/* 下的 script, 這裡面的 xinput.sh 會把輸入法叫起來.
10. 完成.
為甚麼我沒事要去 Trace? 因為前一陣子我升級 Fedora Core 4 到 5 之後,GNOME 就爛掉了,無法登入.
搞了幾天,都不知道為甚麼,只能以克難的方式,先在 $HOME 佈置 .Xsession, .Xclients 來應急.
今天 Trace 之後,終於發現問題所在.
原因是 /etc/gdm/custom.conf 裡 BaseXsession 預設為 /etc/X11/xdm/Xsession.
gdm 登入後會去執行這個 script, 而 xdm/Xsession 只會跑 xdm 的一些東西,所以就只會登入到很簡陋的 xdm 畫面.
呼~~終於解決了.
參考資料:

Upgrade FC4 to FC5

公司用的 distribution 是 Fedora Core 4, 最近 Fedora Core 5 release 了,就想來升級看看.
世界上真的有很多人想法跟我一樣,用 yum 來升級就好了.
這篇寫的很詳細:How to upgrade from FC4 to FC5 via yum?
主要步驟:

  1. 下載 fedora-release-5-5.noarch.rpm,然後安裝
  2. 先更新 yum: yum update yum
  3. 接著 upgrade: yum upgrade

比較麻煩的是步驟 2與步驟 3,這邊你可能會遇到蠻多麻煩,說有 dependency 問題,這時候就得參考這篇,他有提供一個perl script來解決這種鳥問題.
我自己的方法是,紀錄這些套件,把他們移除掉,等升級完再安裝回去.
現在我已經升級完啦,接下來就是調校了~
參考資料:

vim 的設定與一些快捷鍵

參考了幾篇文章以後,調整出 gvim 設定 (_vimrc/.vimrc)的最終版本.我把這份設定列在最後,作為以後參考:

如果要看 c/c++ 的 code, 可以用 ctags 預先為 c/c++ 程式產生 tags 檔案.
用法:

ctags -R

接著在看程式的時候,先用

set tags=your_tag_file

載入 tags 檔案,遇到變數或函數時,就可以按 g ctrl+] 或 ctrl+] 直接跳到該變數或函數的所在位置.
要往返的話,就按下 ctrl+t 返回.
如果要找對應括號的話,可以用 % (shift+5).
ctags 也可以 parse c# 的檔案,換句話說,你也可以用他來看 c# 的原始碼.
以後看 code 就輕鬆多了,之前應該早點聽 Irene 的話來學這個…~_~
再配合 Vim Intellisense, vim 真的是無敵了…
以下是 gvim 設定


" 繼承預設的 gvim win32 設定
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
" 當輸入文字時隱藏 mouse
set mousehide
" 自動載入 ctags 產生的 tags 檔案.
set tags=./tags,tags
" 不自動存檔
set nobackup
" 自動縮排
set autoindent
set cindent
" 顯示行列位置
set ruler
" 自動找對應括號
set showmatch
" tab 設置
set shiftwidth=4
set tabstop=4
" 語法高亮度
syntax on
" 把 tab 展開成空白.
" set et
" 相反地設定
" set noet
" 下面都是從這裡抄來的: http://edt1023.sayya.org/vim/node10.html
" 使用 :update 代替 :w,以便在有修改時才會存檔,注意,這和 vi 不相容。
map <F2> :up<CR>
map <F3> :up<CR>:q<CR> " 存檔後離開
map <F4> :q!<CR> " 不存檔離開
map <F5> :bp<CR> " 前一個 buffer 檔案
map <F6> :bn<CR> " 下一個 buffer 檔案
" 單鍵 <F7> 控制 syntax on/off。倒斜線是 Vim script 的折行標誌
" 按一次 <F7> 是 on 的話,再按一次則是 off,再按一次又是 on。
" 原因是有時候顏色太多會妨礙閱讀。
map <F7> :if exists("syntax_on") <BAR>
\ syntax off <BAR><CR>
\ else <BAR>
\ syntax enable <BAR>
\ endif <CR>
" 按 F8 會在 searching highlight 及非 highlight 間切換
map <F8> :set hls!<BAR>set hls?<CR>
" Toggle on/off paste mode
map <F9> :set paste!<BAr>set paste?<CR>
set pastetoggle=<F9>
map <F10> <ESC>:read !date<CR> " 插入日期
map <F11> :%!xxd<CR> " 呼叫 xxd 做 16 進位顯示
map <F12> :%!xxd -r<CR> " 回復正常顯示
" 原本就有的設定.
set diffexpr=MyDiff()
function MyDiff()
let opt = ‘-a –binary ‘
if &diffopt =~ ‘icase’ | let opt = opt . ‘-i ‘ | endif
if &diffopt =~ ‘iwhite’ | let opt = opt . ‘-b ‘ | endif
let arg1 = v:fname_in
if arg1 =~ ‘ ‘ | let arg1 = ‘"’ . arg1 . ‘"’ | endif
let arg2 = v:fname_new
if arg2 =~ ‘ ‘ | let arg2 = ‘"’ . arg2 . ‘"’ | endif
let arg3 = v:fname_out
if arg3 =~ ‘ ‘ | let arg3 = ‘"’ . arg3 . ‘"’ | endif
if &sh =~ ‘\<cmd’
silent execute ‘!""C:\Program Files\Vim\vim64\diff" ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . ‘"’
else
silent execute ‘!C:\Program" Files\Vim\vim64\diff" ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3
endif
endfunction

Ubuntu on my laptop

星期天把 Ubuntu 裝到我的 Notebook 上.
前兩天稍稍調整一下桌面,讓他變得像 MacOS.
這就是所謂的虛榮嗎? :-p
ubuntu desktop Screenshot

Regular expression in common use

剛好要用到,所以特別在網路上找,主要都是給 RegularExpressionValidator 作 validate 用的…

  • 檢查日期
    • dd/mm/yyyy
      ((([0][1-9]|[12][\d])|[3][01])[-/]([0][13578]|[1][02])[-/][1-9]\d\d\d)|((([0][1-9]|[12][\d])|[3][0])[-/]([0][13456789]|[1][012])[-/][1-9]\d\d\d)|(([0][1-9]|[12][\d])[-/][0][2][-/][1-9]\d([02468][048]|[13579][26]))|(([0][1-9]|[12][0-8])[-/][0][2][-/][1-9]\d\d\d)
    • yyyy/mm/dd
      ([1-9]\d\d\d[-/]([0][13578]|[1][02])[-/](([0][1-9]|[12][\d])|[3][01]))|([1-9]\d\d\d)[-/]([0][13456789]|[1][012])[-/](([0][1-9]|[12][\d])|[3][0])|([1-9]\d([02468][048]|[13579][26])[-/][0][2][-/]([0][1-9]|[12][\d]))|([1-9]\d\d\d[-/][0][2][-/]([0][1-9]|[12][0-8]))
  • 限制位數的數字
    (^-?\d{1,10}\.$)|(^-?\d{1,10}$)|(^-?\d{0,10}\.\d{1,9}$)
  • 一般數字
    ^(-)?\d+(\.\d\d)?$
  • 檢查 e-mail
    ^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$
  • 查 url
    ^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\’\/\\\+&%\$#_]*)?$

參考資料:

蘿蔔茼蒿

在網路上找來的,也找不到出處了…真是抱歉.
原來的材料有用到花椒與高湯,我利用手頭現有的材料,改為大蒜跟高湯粉調製的水。
材料: 白蘿蔔、茼蒿、大蒜、鹽、澱粉水(勾芡用)、高湯水、香油、黑醋。
方法:
1.蘿蔔切條。
2.大蒜爆香。
3.下白蘿蔔條稍煮片刻,再下高湯水。
4.接著再下茼蒿,加上調味料:鹽、味精、黑醋。
5.勾芡…
6.最後再加上香油。
收工。很簡單的一道菜,如果有香菜的話,應該也會不錯。
我們在家試了兩次,第一次沒加黑醋,味道差了點。第二次加了黑醋就好多了。

resize ntfs fail.

話說,在試過Ubuntu Linux之後,突然非常的想把 Linux 裝到 Notebook 上(不想用 virtual machine).
但是首先會遇到的就是硬碟問題,該怎麼多挖一塊空間出來安裝呢??
這方面,最老牌的當然是 Partition Magic, 不過我沒有這套軟體, 再者, 他也需要錢錢.
只好努力爬文找免費軟體來用,後來赫然發現,Ubuntu Live CD 本身就提供GParted這個強大的軟體了!!這裡有些有用的連結:

於是就照著步驟來作:

  1. 先磁碟重組
  2. 執行GParted

理論上至此,應該是收工了.
仔細研究以後,發現GParted底層用的是 ntfsresize 這個指令,而實際直接使用過 ntfsresize 之後,發現 resize 的確是成功的.但是需要你重新執行 fdisk 將 partition 刪除掉,再以新的 size 新建一個 ntfs partition.
而我,就錯在這裡,我砍掉了,我也重建了,但我在寫入前卻忘了指定 partition type 為原來的 ntfs,於是就這麼毀了……然後赫然忘了備份老婆的資料…
真是慘!!

Ubuntu live cd on Averatec 6200

前一陣子有想把 Linux 裝到我的 notebook – Averatec 6200 (其實是 MSI M630)上.
正巧Ubuntu Linux又挺紅的,就決定用他.所以就下載了Ubuntu Linux的 Live CD,先行嚐鮮.
可是,怎麼弄都無法從 Live CD 開機,這是一個警訊,表示 Notebook 可能有些麻煩需要克服.
這時候想到,之前有看過一個網站,有提供很多 Notebook 與 Linux 相容問題的網站.利用Google找了一下,很輕易就找到了,就是這裡 Linux on Laptops. 遺憾的是,裡面並沒有 Averatec 6200 的資訊.
時光荏苒,匆匆數周又過去.
今天晚上,再次用 Live CD 開機,並仔細看了一下開機選項 (按 F2, F3, F4, F5, F6, F7 都可以看到不同的選項), 然後輸入這行指令進行開機:

live vga=771 noapic nolapic gdth=disable:y

這次很順利就開起來囉~ 🙂
接下來就是無線網路問題啦~
Ubuntu Linux可以辨認到我的無線網路Driver, 所以接下來就是軟體設定問題.
摸索了一陣(會這麼久,其實有一部分也是因為我忘記我自己的 key index 與 key, :p ),最後在 /etc/network/interfaces 裡面作下列設定

iface ra0 inet dhcp
#
wireless-essid your_essid
# keys
wireless-key1 your_key_1
wireless-key2 your_key_2
wireless-key3 your_key_3
wireless-key4 your_key_4
# 請根據你的 key 索引值來調整
# adjust the value according your key index.
wireless-defaultkey 1
# 我用的是restricted(受限制的),如果沒用的話,把這行註解掉吧
# I use restricted, you can comment this line.
wireless-keymode restricted
auto ra0

再重新啟動 networking service 就可以了.

sudo /etc/init.d/networking restart

參考資料:

葡萄發芽了

過年的時候,將收集來的葡萄種子種到小盆栽之中,前幾天開始陸陸續續發芽了.
上網稍微找了資料,一般葡萄種下以後的第一年都是在成長,第二年才會開始結實.
真是令人高興,不過家裏是沒啥空間讓他們長到可以結實,到時候再說吧,看是要移到哪裡再繼續種.
下個挑戰的目標是橘子跟柳丁!!
grape(1)