最近在我的MacBook上的Leopard,越來越顯得老態龍鍾,記憶體想加也不能加,因此若要透過VMware來開啟其他作業系統,有時候還真的顯得有點遲鈍,最近老是覺得在VMware Fusion內的Fedora 10,速度感讓我有點受不了。這幾天嘗試安裝了Ubuntu 8.10,似乎執行Kdevelop的速度比在Fedora 10內快,以下筆記將紀錄該修改的東西
系統中文編碼改為Big5編碼
修改檔案: /var/lib/locales/supported.d/zh
zh_TW.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.BIG5 BIG5
執行指令:# sudo locale-gen
vim預設中文編碼環境改為Big5
修改檔案:~/.vimrc
set enc=big5
[+/-] Read More...
[+/-] Summary only...
我在Linux上寫程式的環境有兩種,一個是透過網路用ssh的方式連上主機,接著再打開vim來編寫。另一種就是在我的MB上透過VMware Fusion來,開啟一個附屬Linux,在這個Linux上以Kdevelop來編撰(這不是我今天要討論)。
第一種方式對我而言,若在有網路但無電源環境下,是十分省電,且效率又高的,但是該軟體本身相較於使用其他的GUI IDE,有兩項缺少的功能是讓我覺得最麻煩的,詳列如下:
- indent功能:每次都得自己手動對齊,對到最後我都覺得很煩(本文的解決方案)。
- Automatic code completion:依據檔案中使用過的變數,提供建議的變數清單,讓使用者可以用選的,而無需每個字母都自己打(感覺上不會有solution for這一個項目)。
今天我找到方法可以修改vim環境,使得我的vim會自動針對C或C++語言來做indent縮排,新增或修改以下檔案 。
- vim ~/.vimrc ( vi ~/.vimrc 亦可),內容如下:
set nowrap
set nocp incsearch
set shiftwidth=4
set cinoptions=:0,p0,t0
set cinwords=if,else,while,do,for,switch,case
set formatoptions=tcqr
set cindent
syntax on
參考:
[+/-] Read More...
[+/-] Summary only...
目前我在我的MacBook上安裝了兩套gfortran, 安裝細節分別是以Mac OS X 10.5.1 Leopard + gfortran (詳閱)以及透過VMware Fusion 1.1所安裝的Fedora Core 6 Linux + gfortran兩種形式, 今天要來比較差異
程式碼: 採用最近寫的「水文地質參數產生器」, 實質意義不重要, 程式碼就是開個很大的矩陣, 接著寫幾個轉換公式, 將矩陣內每個位置填上數值, 接著寫出到檔案內, 程式碼行數不多(179行), 也沒有呼叫什麼函數~~~
實驗組: 純粹Mac OS上的gfortran
檔案大小: 105MB(是的, 你沒看錯, 的確是105MB)
執行時間: 11 sec
對照組: VMware Fusion內的虛擬Linux
檔案大小: 22KB
執行時間: 6 sec
分析: 這是一個詭異的現象, 我完全沒辦法理解, 為甚麼同樣的程式碼大小居然可以差這麼多, 我是猜測gfortran for Mac版本根本沒有寫好(或是調整好), 搞不好很多東西都搞成inline的形式, 居然跑起來的效能差這麼多
[+/-] Read More...
[+/-] Summary only...
subversion(svn)是我近年來使用得最密集的功能之一, 透過這個系統可以讓我跟研究室的成員進行多人開發,因此跟其他人之間不再需要去注意文件版本與同步的問題,因此特別寫下這個筆記...
checkout
說明:這是使用svn系統的第一步驟, 透過這個步驟可以從檔案庫取回檔案副本。
svn checkout svn+ssh://[username]@[host id]/[repos path]/
svn checkout file:///[repos path]/
update
說明:當每次開始要修改前,先透過這個指令取回最新版本的檔案。下面的兩個用法,第一種用法會把所在位置的目錄,以及其下的子目錄所有檔案,一併更新。第二種用法只是單純把某個特定檔案,或是某個特定目錄更新。
svn update
svn update [filename]
commit
說明:當這一次完成修改之後,使用這個指令來將修改送回檔案庫記錄,成為一個新的版本。
svn commit -m "[commit command]"
status
說明:查詢檔案狀態。可以在副本的任何一個目錄內執行這個指令,以下兩種用法也如同svn update一樣,所以我不再敘述一遍。
svn status
svn status [filename]
M filename1 (已修改檔案)
? filename2 (尚未加入svn系統管理)
A filename3 (已經透過svn add加入svn系統,但是尚未以svn commit送至檔案庫)
D filename4 (將已納入管理的檔案,以svn delete刪除,但是尚未以svn commit送至檔案庫)
add
說明: 將尚未納入管理的檔案,透過svn add將檔案納入管理,從此檔案庫就會多出這個檔案
svn add [filename]
delete
說明: 將已納入管理的檔案,透過這個指令來刪除這個檔案(備註:若直接用rm的方式來刪除檔案,他會被認為檔案遺失,所以下一次update時,會再次取回),從此檔案庫就不再有這個檔案的存在。當然,透過svn update [先前版本],還是可以把這個檔案取回。另外,若這個檔案有修改過,系統不會允許直接刪除,必須加上--force的強制指令,才能刪除掉這個檔案。
svn delete [filename]
svn delete [filename] --force
[+/-] Read More...
[+/-] Summary only...