VFPWiki升級之路(1) – VMWare server on Fedora Core 5

因為太久沒更新wiki版本,又為了避免站主過於操煩,所以我決定架設一個跟他環境一樣的 server,來先行實驗升級看看。
首先,到VMWare官方網站下載官方提供的 rpm,並且索取 serial-number。
接著就是安裝:

#rpm -ivh VMware-server-1.0.0-28343.i386.rpm

畢竟以前也裝過幾次,接著就是設定 VMWare

#vmware-config.pl

這部份應該沒問題,依照問題回答即可,大部分都只要按下 Enter 選擇預設值即可。
這個問題是比較詭異的,他說 gcc-4.1.1 可能會有問題;不過我不管他,還是輸入了 yes,等有問題的時候再說吧。

Your kernel was built with “gcc” version “4.1.0”, while you are trying to use
“/usr/bin/gcc” version “4.1.1”. This configuration is not recommended and
VMware Server may crash if you’ll continue. Please try to use exactly same
compiler as one used for building your kernel. Do you want to go with compiler
“/usr/bin/gcc” version “4.1.1” anyway? [no] yes

安裝完成以後,可以在Gnome環境下的 應用程式>系統工具 下找到 VMWare server console,執行他。
這可以幫助我們建立一個virtual machine。
下載 debian 的網路安裝光碟映像檔:debian-31r2-i386-netinst.iso,大約只有一百多MB,算是很小。
之後我們將利用 apt-get 直接從網路下載並安裝。
所以就直接把 virtual macine 的光碟機對應到這個映像檔上,進行 Power On,接下來就跟安裝 Debian Linux 一樣啦(不知道怎麼作的話,去買書吧)。
安裝完成之後,記得先暫時關閉 virtual machine,將光碟機對應到實體磁碟機上,免得又要再安裝一次。
開機之後,Debian 會很貼心的進行首次使用前的設定,也是照步驟進行即可。
這樣就大功告成啦,下次來安裝 apache + mysql + php。

How to branch/tag in TortoiseSVN

Subversion手冊裡面詳細的介紹了關於 trunk / branches,實際上所謂的 branches,其實也就是把 trunk 搬到 branches 目錄下並換個名稱而已。
TortoiseSVN建 branch/tag 的方法相當簡單。

  • 首先在 checkout 出來的目錄上,按下滑鼠右鍵,選擇 TortoiseSVN > branch/tags
  • 指定 url,改成 http://xxxxx/branches/your_branch_name,填上說明,左下角打勾,這樣 branches 完之後,TortoiseSVN會幫你把整個目錄切換到指定的 branch
  • 大功告成

ok, 那麼要怎麼切換回 trunk (主要開發分支) 呢?

  • 首先在 checkout 出來的目錄上,按下滑鼠右鍵,選擇 TortoiseSVN > Switch
  • url 改為 https://xxxxx/trunk
  • 大功告成

Grep in vim

怎麼直接在 vim 裡面直接去 grep 檔案呢?
答案在這裡:grep.vim – Grep search tools integration with Vim
安裝步驟很簡單,下載以後,把 grep.vim 丟到 $HOME/.vim/plugins (Windows 就是 c:\documents and settings\your_name\vimfiles\plugins)。
接著就是設定啦,打開你的 $HOME/.vimrc (Windows 是 c:\documents and settings\your_name\_vimrc ),加入下面設定,主要是告訴 grep.vim grep 與 find 的路徑。因為我是用Native Win32 ports of some GNU utilities,又安裝在 c:\tools,所以就是:

let Grep_Path=’C:\tools\UnxUtils\usr\local\wbin\grep.exe’
let Grep_Find_Path=’C:\tools\UnxUtils\usr\local\wbin\find.exe’
let Grep_Xargs_Path=’C:\tools\UnxUtils\usr\local\wbin\xargs.exe’
let Grep_Skip_Dirs=’CVS’
let Grep_Default_Options=’-ir’
let Grep_Cygwin_Find=0
let Grep_Null_Device=’NUL’
let Grep_Shell_Quote_Char=””

完成這些步驟之後,重新打開vim,就可以用 :Grep your_pattern 來進行搜尋了。
搜尋的結果,vim會切割出另外一個 Windows 來顯示(通常在下面),你可以切換到該視窗(ctrl+w j),直接瀏覽搜尋結果,如果確定該行是你要的結果,也可以直接按下 Enter,vim 就會自動打開那個檔案並移到該行去。
這比你利用 console 去 grep,再手動切回 vim 來開檔要快多了。
如果要關閉搜尋結果,輸入 :cclose 就可以關閉。
:copen 是打開搜尋結果。
:colder 是切換到上一個搜尋結果。
:cnewew 是切換到較新的搜尋結果。
更多的用法,可以參照官方網頁

cvs2cl.pl

早上試了半天,怎麼樣都無法讓 cvs log 輸出成比較美的樣子…
後來還是請 Google 大神幫忙,很快他就告訴我,可以用 cvs2cl.pl 這個 perl script 來幫忙。
由於我是在 CygWin 下執行 CVSNT,所以我稍稍修改了一下 script,將這行

my @log_source_command = qw( cvs log );

修改為

my @log_source_command = ( “/cygdrive/c/program files/cvsnt/cvs”, “log” );

果然很快就搞定了~~
輸出的結果果然就跟坊間的 ChangeLog 一樣。
Note:
Perl 的 qw( ) 會把內容拆成字串陣列,所以 qw( cvs log ) 會被拆開成兩個字串 “cvs” 與 “log”。
非常感謝這位大德的投影片

sp_attach_db

用法很簡單…

EXEC sp_attach_db @dbname = N’pubs’,
@filename1 = N’c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf’,
@filename2 = N’c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf’

在 osql command line mode 下輸入以後,記得再輸入 go,表示執行指令。
參考資料:

taglist的安裝與使用

自從使用 ctags 以後,看code方便多了。最近又看到taglist,心想或許可以讓看code的生活變得更美好,所以就來摸索看看。
首先到這裡下載最新版本。
解開以後,有兩個目錄,一個是 doc,另外一個是 plugin,把他們複製到你的 HOME 的 vimfiles 目錄下(舉例:c:\documents and settings\your_name\vimfiles\),然後在你的 _vimrc 裡面指定 Tlist_Ctags_Cmd 變數,這是用來讓 taglist 知道 ctags 的路徑。
我是把 ctags.exe 放在 c:\tools 下,所以是這樣寫:

let Tlist_Ctags_Cmd=’c:\tools\ctags.exe’

這樣就大功告成了。
使用的時候,

  • 用 :TlistOpen 指令把 taglist 視窗叫出來,用 :TlistClose 指令關閉 taglist 視窗
  • 用 :TListToggle 來打開或關閉 taglist 視窗
  • 可以用 ctrl-w h 與 ctrl-w l 來切換 taglist 視窗與編輯視窗
  • 開啟檔案以後,taglist會自動把 tag 資訊列在左邊視窗。


備註:
我沒在 Linux 下用過,安裝方法應該差不多;記得把 HOME 替換為 /home,vimfiles/ 替換為 .vim/。
Console 模式下,有比較特別,文件說,因為 terminal/console 不支援變動視窗寬度,所以要設置 Tlist_Inc_Winwidth 為 0。

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

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,於是就這麼毀了……然後赫然忘了備份老婆的資料…
真是慘!!

How to Geotagg with Yuan.CC Maps

這是第二彈,剛剛發現薄荷大大再度推出新的 web application: Yuan.CC Maps.
這可說是要作 geotag 的終極武器啊…
他可以用 Google Maps / Yahoo Maps / UrMaps 來幫你找到座標定位,也可以順便登入 flickr 進行 geotag.
操作的方式,相當簡單,滑鼠按住,移動….你會看到右上角有座標會隨著你的移動而變化.
Yuan.CC Maps(3)
得知座標以後,就可以在 flickr 上傳照片的時候,加上 geotagged lat=nn.nnn lon=nnn.nnn 以註明此照片被 geotagg 過了.
此外,你也可以直接登入 flickr (註1),先把 filter tag 選成 None,選到你要作 geotagged 的照片,然後移動地圖到你拍照的地點,接著按下右下角照片下方的按鈕: “save location”,這樣就大功告成了.
然後就可以瀏覽照片在地圖的位置:
Yuan.CC Maps(1)Yuan.CC Maps(2)
如何,很不錯吧~
🙂
備註:
1. 第一次登入 flickr, flickr會要求你允許 Yuan.CC Maps 可以操作 tag, 這時候要按下允許(Allow).
參考資料:
1. Blog of Flickr Hacks: Yuan.CC Maps

How to Geotagged with Google earth

太過肉麻的開場白就不介紹了.
薄荷的 blog介紹的很多,也很清楚,不妨直接參考這篇:歡迎加入 Geotagged: Taiwan 群組.
步驟:

  1. 下載Google earth,這裡有三種版本,後兩種是要付費的,選擇第一個免費的版本下載即可.然後進行安裝.
  2. 打開Google earth,進入 [tools][options] 依照下圖調整座標顯示方式.
    GoogleEarthOption
  3. 尋找照片所在座標位置,找到以後,把左下角的位置抄起來.如下圖
    GoogleEarthLocation
  4. 接著上傳照片到flickr,上傳以後,加上 tag.
    Geo Tags 的格式:
    1. geotagged , 這個 tag 一定要加, 用來辨識這張相片有經緯度.
    2. geo:lat=25.011824, 這是北緯 25.011824
    3. geo:lon=121.527103, 這是東經 121.527103
  5. 大功告成

參考資料: