2007年7月31日 星期二

Vim Tips - Using input function to replace string

每次用 :%s/foo/bar/g 作字串取代太麻煩,如果用這樣:

:nmap :%s//g<Left><Left>

若還是覺得很彆扭?那可以試試看用 vim 提供的 input function

先寫一個 function
function! Substitute()
call inputsave()
let g:MyPattern = input("Pattern: ")
let g:MySubs = input("Substitution (" . g:MyPattern . ") : ")
exe '%s/' . g:MyPattern . '/' . g:MySubs . '/g'
call inputrestore()
endfunction
然後設定 Map 去呼叫他

nmap <c-h> :call Substitute()<CR>

如果使用 GVIM 還可以把 input 換成 inputdialog ,這樣就會出現對話框。 ( 不過這樣好像有點多此一舉。 XD )

Vim Tips - Operators

寫程式一定會常常修改到字串、函數名稱、行等等東西,在一般編輯器內,許多使用者可能用 Ctrl+Shift+方向鍵 來選取,但是這太麻煩了,而且按鍵按起來還很彆扭。

Vim 提供許多 Operator 使用,假設你要修改一個函數名稱,例如

function __construct()

只需要把游標移動到 __construct 這個字的任何位置,按下 ciw ,Vim 就會自動幫你把整個字去掉並且進入 Insert mode 讓你修改名稱,如果覺得還是太費力,可以加入 map

nnoremap cw ciw

Noremap 的原因是不將 map 的操作對應到其他已經設定的快捷鍵。

回頭講 ciwc 是 operator ,代表 change ,i 則是 inner , w 代表 word ,一個字。因此,除了 operator 可以用 c 之外,還可以用 d ( 刪除 ) , v ( 選取 ) ,y ( 複製 ) 等等。

如果要選取整個 { } 包住的部份,則可以用 vi{ ,這樣會選取 {} 以內的部份,若使用 va{ 則會選取包含 {} 的部份。

修改字串可用 ci" ,用來修改被 雙引號括住的字串,修改圓括號內的字串則用 ci( ,修改單引號括住的字串則用 ci' .. 等等,引用 motion 內的一段說明:
    "dl"    delete character (alias: "x")      |dl|
"diw" delete inner word *diw*
"daw" delete a word *daw*
"diW" delete inner WORD (see |WORD|) *diW*
"daW" delete a WORD (see |WORD|) *daW*
"dd" delete one line |dd|
"dis" delete inner sentence *dis*
"das" delete a sentence *das*
"dib" delete inner '(' ')' block *dib*
"dab" delete a '(' ')' block *dab*
"dip" delete inner paragraph *dip*
"dap" delete a paragraph *dap*
"diB" delete inner '{' '}' block *diB*
"daB" delete a '{' '}' block *daB*
其他以此類推,族繁不及被載。

嗯嗯,今天的 Vim Tips 到此,更多關於 Operator 可參考:

:h visual
:h operator
:h motion

2007年7月30日 星期一

You Should!

千秋對野田妹說:「你明明彈的這麼好,為什麼不繼續學習,往更好的境界發展呢!真是沒志氣!」

於是千秋想到當天吃飯時,友人對他說:「你為什麼不出國留學阿阿阿!!真是個愚蠢的錯誤!」

看到此幕,我突然想起兩年前某次在學校彈李斯特時,被音樂老師注意到,老師對我說:「你應該要找個老師學,不然真的很可惜!」

但礙於種種因素,古典鋼琴只不過是我自學而來,我只隨口低聲回道:「怎麼可能!」

「什麼?!」她回說。

那音樂老師乃出國留學回來,全身散發出高貴的氣質,但聽到我的回答,她臉上除了錯愕之外,似乎無其他的了。但我想會有這樣的反應大概也是正常的吧!

居於低位者除了把理由歸於自己之外的事情,還能有些什麼建設性的行動嗎?當然一方面是無奈,只不過有時候自己聽到類似的話也會覺得「只不過是在找理由罷了!」

原來我就像野田妹一樣嗎?

說到野田妹,今天撥了點時間看交響情人夢 ( 動畫 ),連續看了好幾集,現在滿腦子都是 Rachmaninov .....

還記得老師說:「你彈的很犀利!你應該去彈拉赫曼尼諾夫!」

恩,我的確應該多彈一點拉赫曼尼諾夫,太多蕭邦李斯特只會讓我全身油膩而已...

只是又想到之前某人曾說:「你如果拉三練起來,我就去找雙鋼琴幫你配吧!」

恩。不過當然,這些都沒實現。

只是我最終還是選了音樂以外的道路。 :-)

# 好想去聽一場現場的 Rach.

2007年7月29日 星期日

Franz Liszt - Yoram Ish-Hurwitz



佛朗茲.李斯特 是所謂當時 19 世紀的炫技至尊,據說李斯特小時候被觀賞帕格尼尼之演奏之後立志成為鋼琴上的帕格尼尼,而後在鋼琴技巧上發起了革命,也是標題音樂的始祖,當時風彌整個歐洲,但當時也被許多人批評為奢華糜爛、空有其表。

也因為當時鋼琴技巧上的突破,李斯特除了創作了『十二首超技練習曲』、『六首帕格尼尼大練習曲』、『三首演奏會練習曲』之外,Chopin 還寫了 24 首練習曲 獻給李斯特,導致日後修習鋼琴演奏科系的學生們必須要多上好幾倍的時間在技巧練習上。 ( 其實徹爾尼也是罪魁禍首之一 XD )

扯遠了。

巡禮之年是李斯特晚期於心靈沈澱之時所創作的作品,巡禮之年之三卷分別是 『第一年 - 瑞士 (Suisse)』, 『第二年 - 義大利 (Italie)』 以及『第三年』,沒標明地名,這三卷特色在於,與其他李斯特作品比較起來略顯清淡,不過富有詩意、文學色彩,其中在第二卷中李斯特就引用了佩特拉卡的 104 行詩,此外還有『但丁讀後』,以及許多加上附有詩意的標題樂曲。

創作完這些作品之後李斯特先生就去完成他的夢想了 ( 當神父 ) ,也因此在他這幾卷內不難發現詩歌、聖歌的風格,我想這就是要去當神父的徵兆吧。

不過太久沒讀古典音樂的東西了,該忘的都忘記了,CD 最近這一、兩年來也很少翻出來聽。 XD 昨天在翻閱目錄時翻到這張 Yoram Ish-Hurwitz 的錄音,相較於我一開始聽的 Frederic Chiu 錄的第二卷 ( 巡禮之年第二年 ) 較為浪漫,而此卷作品較為平穩、寧靜,此外錄音品質也不錯,鋼琴音色也明亮透徹。

# 我的天我在寫什麼 ar ?

其他:
李斯特 巡禮之年第二年--義大利
李斯特的巡禮之年

TwitterBox for Twitter


TwitterBox for Twitter
Require .NET Framework 2.0

# 不過居然不能讀 UTF-8
一心只想要超越現在的自己,越是渴望,就越努力的汲取,越是覺得自己渺小,就越是充滿無力的感覺。

渾身都充滿無力的感覺。

我想到達的層次究竟離我還有多遠?還要多久?但是我怎麼還在這裡!我在這裡幹什麼呀!

於我以下的人多差又甘我何事?我為何要為了那些人的頹廢、無藥可救而感到憂傷、嘆息?

2007年7月28日 星期六

Code Block + GDB - 除錯工具設定

之前寫了一篇 Code Block + Mingw 的教學,於是當然有人就問說,要像 Visual C++ 那樣單行除錯怎麼作?於是我就又寫了這篇。 ( 存成草稿好久了阿阿阿 dim... )

Code Block 的 Debugger 後端是可以由使用者自己選擇的,在這裡我們使用 GNU 所開發的 Gdb ,當然如果你想用其他的 Debugger 也是可以。

首先先去 Sourceforge 的 Mingw 頁面抓取 gdb ( The GNU Project Debugger ) ,也就是除錯器啦。

先到 Current 的部份點選 View Older releasees ...



接著選取 gdb



抓回來安裝之後,在 C:\MinGW\bin 底下就會看見 gdb.exe



接著開啟你的 Code Block 之後,我們要在 Compiler 的編譯選項加上 -g ( Debug ) 的參數,所以選 Settings -> Compiler and Debugger



把 -g 打勾。



接著就可以插入 breakpoint 進行除錯了。 :-)




More:
GDB
GDB Tutorial
Debugging with GDB
Debugging with Code::Blocks
GNU 計畫 ( 中文維基 )

我可能是太閒了所以才開始寫這種 Tutorial XD
自己的世界得靠自己改變才行。 / 千秋 ( 交響情人夢 )

2007年7月27日 星期五

Paganini ...

我中了 Paganini 的毒,最近在練 Liszt 的 Paganini Etude No.6,至少比簡單多了 (看起來..),不過鐘最近也有進步。

# 不過今天看到交響情人夢又彈 Rachmaninoff Piano Concerto No.2 .. 我又好想再翻出來彈彈阿阿阿 (dim...) 話說 Rachmaninov 原來是俄文,英文應該是拼 Rachmaninoff。

2007年7月26日 星期四

Parrot Compiler Tools / Allison Randal

Allison Randal & 唐鳳
Photo James Duncan Davidson/O'Reilly Media

Perl Hacker Allison Randal 在她的網站上放了她的簡報 - "Parrot Compiler Tools",裡頭闡述了 Parrot 的架構、文法引擎等原理。

此外 Allison Randal 最近被頒予 2007 White Camel 獎, 引述 use Perl 的消息:
Allison Randal

[0]Allison is at the center of the Perl community. She's been
president of The Perl Foundation, a leader and manager of various
parts of the Perl 6 and Parrot efforts, as well a Perl author and
editor. Her latest contribution to Perl is version 2 of the
Artistic License, under which most open source Perl code, and Perl
itself, is licensesd "under the terms of Perl itself".
External:
flickr [1] [2]
use Perl

2007年7月25日 星期三

Vim Tips - 將 tag 以新分頁開啟

之前提到 定義 gf 以新分頁開啟,如果要對 tag 作新分頁開啟的話, Vim 內似乎沒提供這類的特殊關鍵字來取 Tag Name ,所以替代的作法如下 ( 於 vimrc 內加入 ) :

nmap <C-]> viwy:tab tag <C-R>"<CR>

其中 viw 就是利用 Visual Mode 將自選起來,用 y 複製到暫存器 ( Register ),接著使用 :tab tag 作分頁動作, <C-R>" 則是把 Register 內的值抓出來,<CR> 等於 Enter。

這樣 Ctrl-] 時就可以用新分頁開啟了。

Vim Tips - Regular Expression 之 Non-Greedy Match

小試了一下 Vim 的 Regular Expression ,卡手卡腳的,平常用慣了 Perl 的 RegExp ,完全無法適應 Vim 的 Regular Expression。

舉例來說,在 Perl 裡頭的 Non-greedy 是在 * 號或 + 號後面加上問號(?) ,譬如:

a.*?b

使用 Greedy 比對的話則是:

a.*b

使用 Non-Greedy 比對 acccbcccbdef 到會比對到 acccb,使用 Greedy 比對,則會比對到 acccbcccb

白話的說,Greedy 就是盡可能的吃多一點,吃不到才往前退。 Vim 內則是這樣用:

/a.\{-}b

其中 \{-} 代表 Non-Greedy。可參見

:h non-greedy

2007年7月23日 星期一

交響情人夢

恩,標題這樣下應該可以騙到不少關鍵字吧。 XD 其實聽別人說 "交響情人夢" 已經很久了,今天晚上才開始看了一集。

此片原名日文意思是 "如歌的野田惠" ,所以我猜故事的路線應該會跟著野田惠走吧?看到電視螢幕的時候已經播了 30 分鐘了,畫面落在野田惠有夠骯髒的家裏,發霉的飯、臭酸的湯、長蘑菇的衣服 ... 主角千秋很帥我就不說了,可是為什麼連在家裡都要穿白襯衫? XDD 很搞笑的是此片很多角色都以很極端的性格出現,千秋強烈的自我、野田惠的邋蹋、率真、三八 ... 以及好色的指揮家 ....

這集主題是太過自我的千秋透過莫札特而更進一步的認識了自己,突破自己的瓶頸 ( 不過我倒是快被莫札特燻昏了頭阿。 ) 總之,還蠻有意思的。

------
話說,前幾天看了這個 "Dmitrij Romanov plays Liszt "Paganini Etudes" No.6" ,彈的真棒,又害我想練這首了,所以晚餐後小試了一下,發覺手指不能負荷 ( 打電腦太久了 ),再說實在不好彈,和弦越拉越遠,我知道要多利用手腕,不過還是覺得手像是被扭到一樣。 Orz

於是又回去練 La Campanella ,有些地方進步了,音有砸的準了,音色控制的也比以前好了,顫音的部份 因為邱大娘之前的指點,有意識到該怎麼彈才會比較清楚,不過也有地方又退步了,像是第 87-93小節八度震音的部份很變態,一直以來都沒有好好練,每次都是呼隴過去,只怕去練了手會壞掉 ...

剛剛看到上面引用的那篇提到
第87-93小節的指法可選擇1-3-4-3或1-4-5-4以及1-3-5-3,並應由震音往主題音反向慢練,以使震音清晰而均勻。
我怎沒想到?有空再這樣練練看吧。Anyway ... 其實沒什麼感想啦,只是作個紀錄。

External:

Vim Tips - 定義 gf 為另外開啟新分頁

在 Vim 內,Normal Mode 下,預設可用 gf 進入到關聯的檔案,譬如說以下 Code ,游標停在 Geometry.js 上,按 gf 就會開啟新的 buffer 讀入 Geometry.js 檔。

<script src="Geometry.js" type="text/javascript" language="javascript" charset="utf-8"></script>

雖然我們可以用 :files 來檢視目前有哪些 Buffer 已經開啟,並且用 [N] Ctrl-^ 來切換到第 N 的 Buffer ,以及 :bun 來卸載 Buffer ,但 Vim 7 已經提供了 Tag Page 的功能,再者,切換 Buffer 並沒有比切換分頁 ( Tab ) 來的方便,所以我們可以將 gf 定義為用新的分頁開啟他,在 vimrc 內設置:

nmap gf :tabedit <cfile><CR>

便能夠將 gf 定義為另外開新分頁讀入檔案。此外,同樣的方式也可用於 gd , Gd 上,而已經用 Buffer 開啟之檔案,可以用 :tab split 將目前的 Buffer 分離到新的 Tab

可參閱 Vim Doc:
:h gf
:h gd
:h buffer
:h tagpage

2007年7月22日 星期日

Albeniz - Iberia / Alicia de Larrocha



聽 Albeniz 總是有站在港口吹著海風的感覺,特別是 El Puerto ,如果沒記錯的話應該就是海港的意思。Albeniz 是印象派的作曲家,他最有名的作品也就是 Iberia ,而我的這張 Albeniz: IberiaAlicia de Larrocha 彈的。

第一次聽到 Albeniz 是在兩年前 Barenboim 手中,那時曾覺得他的音色有黃金色的感覺,彷彿明亮的音色又蓋了層薄紗一般,於是就被 Barenboim 的 Albeniz : Iberia 洗禮了一番,不過後來在誠品看到他的 DVD 卻還是捨不得掏錢買。 XD

我後來開始聽其他版本的 Albeniz ,發覺 Alicia de larrocha 的也不錯,Alicia de larrocha 是西班牙人,1923 年出生於巴塞隆納,三歲時開始學習鋼琴,六歲時就開了生平第一場公開演奏會 ( 鋼琴家都這樣的嗎? Orz ) ,在 11 歲時,就與管弦樂團合作演出,而 Alicia de larrocha 的錄音中被認為彈的最好的就是 Enrique GranadosIsaac Albéniz

客倌應該看不出來 Alicia de larrocha 只有 150 公分高,她的手非常小,但是聽此 CD 完全感覺不出有因手小而彈錯音或張力不夠的情形。 :-)

( 這讓我想到去年華沙蕭邦鋼琴大賽,台灣有個於莫斯科音樂學院就讀的女鋼琴家正因為手小而砸了她 Scherzo No4,但她技巧真的很棒 )

Liszt Hungarian Rhapsody No 2

說到 Liszt 的 Hungrarian Rhapsody (匈牙利狂想曲),我就想到讓我作惡夢的 Lang Lang 版本,真的把我嚇到。他彈什麼都好,彈 Liebestraum , Don Juan Paraphrase 都很好,除了他的表情之外其他我都很喜歡,但是就是不要聽他彈 Hungrarian Rhapsody。不過這次我發現了 另一個朗朗彈的版本,客倌可以品嚐看看兩個版本發狂的程度有何不同。 XD 此外還有人放了一個 Lang Lang Gone Mad 的影片,可以瞭解一下他平常的精神狀況。XD

除此之外,以搞笑出名的 Victor Borge 也有一段 Hungarian Rhapsody 2 在 Youtube 上 ,雖然我聽不懂德文,但看影片還是能讓人發笑,以及另外一段 Victor Borge and The Muppets play Hungarian Rhapsody No.2 也非常精彩,可惜的是 Victor Borge 本人前幾年已經逝世。

光說這些都忘了介紹一下 Hungarian Rhapsody 2 正常一點的版本,炫技派大師 Marc-Andre Hamelin 的版本 可以聽聽看,不過我個人比較喜歡 Volodos 演奏的版本,因為他比較能彈出 Liszt 作品的貴氣與霸氣,因為體型的關係,他的演奏非常有力量,在技巧上也非常紮實,不過很可惜的是 Youtube 上並無 Volodos 演奏 Hungarian Rhapsody 2 的影片,不過倒是可以從 Volodos 彈其他作品聽聽他的味道,請看《Volodos - Franz Liszt Hungarian Rhapsody No. 13》 除此之外其他 Volodos 相關不錯的錄影還有:Volodos, Liszt - Ballade No2, Part1 , Volodos, Liszt - Ballade No2, Part2 , Volodos - Liszt Hungarian Rhapsody no.15 Rakoczy March , Rachmaninoff Piano Concerto No 2 part 1 - Arcadi Volodos

說到 Liszt 的 Ballade No2 ... 我超愛這首的阿,不過再扯下去就離題太多了。以下嵌入 Macrc-Andre Hameline 的錄影:

La Campanella Again

Youtube 上的 La Campenella 版本越來越多了,但是彈的爛的也很多,譬如說 我的 。XD

除了 李雲迪的版本 之外,今天還發現了一位不知名美女(恩只知道他的 ID - pianoaya)雖是女生不過彈起 La Campenella 卻不乏陽剛氣息。當然如果你想聽文弱一點、小巧精緻的 La Campenella 可以聽聽 Nikolai Tokarev 或是 Kissin 的 La Campenella 演奏短片,他們的風格都是細緻取向,講求音色,比較沒這麼多踏板,除此之外,有個共同點,就是他們都是俄國人。

如果你對如何練習 La Campanella 有興趣,可以參考一下這篇 從教學觀點探討李斯特「鐘」

這裡順便附上美女彈的 La Campenella:

Vim Tips - JavaScript Completion



還不賴,我不知道是不是我裝了 A Better Javascript Syntax 的關係?,新的 Javascript Syntax File 有 15k ,而原本的只有 5k ,差異頗大,另外新的 Javascript Syntax 還支援 JSDOC 嵌入式文件。

在 Insert Mode 按下 Ctrl-X 接著按 Ctrl-O 就會出現 自動完成 ( Completion ) 。 Ctrl-N 往下切換,Ctrl-P 往上切換。

註: Javascript Autocompletion 是由 autoload/javascriptcomplete.vim 處理。

寫 Javascript 可用的 Vim Script

OOP javascript indentation : This indentation script for OOP javascript (especially for EXTJS)
JavaScript syntax : Better JavaScrirpt syntax support
Javascript Indentation : Indentation for Javascript

Setting Up Ctags + Gvim in Windows

之前有寫過一篇 Ctags + Taglist in Linux 的教學,這次因為我想在 Windows 也用 Taglist ,所以整理一下設定步驟:

首先去下載 Ctags for win32 版本,解壓縮後把 ctags.exe 放在 C:\ 底下 ( 這樣比較簡單 ),當然你也可以把他設在 VIMRUNTIME 目錄底下,不過如果是裝在 C:\Program Files\ 底下會有空白字元的問題,Ctags 會無法啟動。

接下來將 Taglist 的 Plugin 放置到 C:\Program Files\Vim\vim71\plugin 內。

在 C:\Program Files\Vim\_vimrc 設定 ctags.exe 的路徑

let Tlist_Ctags_Cmd = 'C:\ctags.exe'

再加上 map ,設定 F12 為開啟/關閉 Tag List 的快捷鍵:

nnoremap <F12> :TlistToggle<CR>

這樣就安裝完成。

2007年7月21日 星期六

C++ 教學 - A Visual C++ Tutorial ( with GNU MinGW & Code Blocks)

( Writing C++ Application Without Visual C++ )( 真是掛羊頭賣狗肉 :P )

自由軟體 ( Free Software ) 之父 Richard Stallman 有個理想,就是在未來,寫程式是人人皆可上手的藝術,所以我想這樣的教學文件絕對是必要的,於是我便寫了這篇教學,因為人人皆有權利自由的撰寫自由的程式,而不是活在微軟的陰霾下。

是的,這是一篇 Visual C++ Tutorial ,教你怎麼不用 Visual C++ 寫 C++ 程式,給打算開始用 Microsoft Visual C++ 學 C/C++ 的初初初學者閱讀。( 什麼?!你不是初學者?如果你還是用又肥又大的 Miscrosoft Visual C++ 練習寫 C/C++ 程式,還是稍微看看吧! )

身為 C++ 的初學者,有沒有想過為什麼學 C/C++ 一定得用 Microsoft Visual C++ 呢?你沒有錢,就不能買,沒有買就不能用,要去燒,沒有朋友有光碟怎麼辦?逛論壇找?用 P2P 抓?太費力了!況且抓下來的光碟映像檔也大到你裝上超過 1 小時 ( 尤其是 MS Visual C++ 2005 , 2003 ),問題是國內很多老師都要學生裝 Visual C++ ,用 Visual C++ 上課,沒有錢、燒不到光碟、沒有 Visual C++ 就叫你回家吃自己,不是人家叫你要裝盜版 MS VC 你就乖乖去裝阿!這可是違法的,有沒有這麼聽話?XD

C/C++ 並不是非得用 Microsoft 微軟出的 IDE 才能寫!很多朋友都把這點搞混了,認為 Microsoft Visual C++ 那整個編輯程式才能夠寫 C/C++,我告訴你,你錯了!

首些, C/C++ 是一個程式語言,但不是 Microsoft 發明的! C++ 的父親是 Bjarne Stroustrup,而 C++ 也有一套標準 ISO/IEC 14882 ,標準也不是 Microsoft 的!所以實做 C++ 程式語言的編譯器很多,不一定得要用 Visual C++!不想花錢買就不要去燒,而且你開始用了就會後悔,學寫程式不需要這麼麻煩!

安裝編譯器


第一步,先去下載自由軟體之父 Richard Stallman 帶頭所開發的 GNU C++ Compiler。在 Windows 下你可以使用 MinGW,到 這裡 下載,找檔名為 MinGW-x.x.x.exe 格式的檔案下載 ( x 為數字 )。



抓下來之後就雙點安裝。選 " Download and Install "



選 "Agree"



選 "Current " 版本安裝



因為我們要寫 C/C++ 程式,所以我們要選 "MinGW base tools" , "g++ compiler" , "make tools" ,其中 G++ 就是 C++ 程式的 Compiler。



安裝位置:預設就好。



接著選單名稱,也按 Next , Next ,就安裝完了。 GNU MinGW 的 G++ Compiler 會裝在 C:\MinGW\bin\ 裡面。

安裝 IDE


這裡我推薦使用 Code Blocks,Dev-C++ 也不錯,但是 Code Block 功能較強大,不比 Microsoft Visual C++ IDE 遜色,除了支援超過 6 種編譯器,在設定值方面的選項也頗多,另外 Code Block 跨平台,所以在 Linux 或 Windows 下都可以執行 ( 不過我現在都只用 VIM ... :P )。

這是 Code Block 在 Linux 底下的執行畫面



Windows 底下的畫面我就不提供了 ( 一直上傳圖片好累 XD )

首先,Code Block 官方網站建議使用者使用 Nightly Build 的版本,從字面上來看就是幾乎每天晚上都更新一次的版本啦 XD ,基本上 Nightly Build 的功能大多都還在開發中,有些功能不是很穩定, Code Block 在去年開始就一直停留在 1.0 rc2 ,如果以下安裝方式覺得麻煩,你也可以選用 1.0 rc2 安裝,不過 Nightly Build 會有更多的功能就是了。

到官方首頁點選 Download:



接著會到 Code Block 的論壇 Nightly Build 版,請選用 "wxmsw28u_gcc_cb_wx284.7z" 以及"CB_20070610_rev4084_win32.7z" 下載:

( 註: 這裡檔名是以 畫面為準,NightlyBuild 每天都會更新,請選擇最新的版本 )



兩個連結分別會連到 BerliOS 的 Mirror List ,選其中一個下載即可。



把這兩個檔案放到同一個資料夾,接著兩個都選 "解壓縮至此" 或 "Extract Here"
註: 如果你的解壓縮程式沒有支援 7z format 可到 7-zip.org 下載 7z 解壓縮程式。





解壓縮完,Codeblock.exe 就是主程式了,雙點可以直接執行,或者你也可以拖到桌面建立捷徑。



執行


第一次執行,Codeblocks 會問你要選用什麼 Compiler ,因為我們剛剛安裝 MinGW 所以我們就選 GNU C Compiler 即可。其中 Detected 就是 Codeblocks 在你電腦上偵測到已經安裝的編譯器 ( Compiler ),選 "OK",就會進入程式主畫面。



接著 CodeBlocks 會問你要不要跟所有 C,C++ 類型的檔案作關聯 ( 也就是雙點一下要不要用 Codeblocks 開的意思啦 ),預設值是第三個,如果都不要的話就選第一個。



第一個程式



進去之後,請選 Create Project ,來建立我們第一個專案。



接著 CodeBlocks 會問你要寫哪種類行的程式 ( 他會幫你載入特定的 Template 與設定值 ),我們寫 Console 的 Hello World ,所以選 Console Application。



接著進入專案精靈,選 Next。



接著要輸入專案名稱 ( Title ) ,以及專案存放的路徑



選完之後,我的畫面如下 ( 只有前面兩個要改而已 )



接下來的畫面保留預設,請按 Next



接著會問你的語言類型是 C 或者 C++ 呢?請選 C++



雙點左邊的 Project Tree ,你可以開啟 Codeblocks 幫你建好的 Hello World 程式碼。



我們先來執行看看,選 "Build" -> "Build and Run"



接著你就可以看到你第一個程式執行了!



你還可以閱讀 Code Blocks + GNU Debugger 除錯工具設定

上路吧


C++ 學習筆記
C++ Language Tutorial

還想知道更多?


推薦的中文書:
C++ Primer 3/e 中文版
C++ Primer Plus 5/e中文豪華版

Wikipedia:
C++
Stroupstrup
GNU
Free Software
MinGW

Reference:
C/C++ Reference

如何寫圖形介面程式?有:
Qt ( wiki , Opensource Edition Download )
Gtk+ ( wiki )
wxWidget ( wiki )

//以上,有錯誤煩請指正,感謝。

O'Reilly - Javascript : A Definitive Guide ( Javascript 大全 )

最近在寫 Javascript 程式寫的很開心,因為我有這本,讓我覺得 Javascript 其實也可以寫的很專業,而不是像市面上那種雜七雜八深度不夠的 Javascript 中文書籍,缺東缺西的。

除了針對各種不同瀏覽器版本做解說,解決方案等等之外,還涵蓋模組化程式設計、Javascript 嵌入 Java 程式, SVG 圖形格式操作等等... ( Orz 太多了,客官們直接買吧 XDD )

總而言之,這本書讓我對 Javascript 的印象好轉許多。 ( 犀牛的關係?) XDD



External Links:
O'Reilly - Javascript 大全 (中文版)

2007年7月20日 星期五

Inserting Google Analytics Code in Mediawiki

將 Google Analytics 的 Script 加入 Mediawiki ,當然也有 MediaWiki 的 Extension 囉,不過如果懶得裝 Extension 可以直接手動插入,我們必須插入在 Skin.php 而不能只修改 monobook 的樣板,因為如此的話,只要使用者樣板不同,Google Analytics 也無法啟用。

手動插入 Google Analytics 步驟如下:

首先先取得你在 Google Analytics 的 Code
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct = "UA-2196512-2";
urchinTracker();
</script>
接著用 Php 的 HereDocument 導入變數 $ga_script
$ga_script = <<<EOF
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct = "UA-2196512-2";
urchinTracker();
</script>
EOF;
接著打改 includes/Skin.php,找到一個 function 為 bottomScript(),將上方程式碼插入,並在 Return 的最後加入:

return "省略" . $ga_script ;

象棋遊戲

最近想說下下象棋練練腦袋,想說 Linux 有沒有象棋遊戲? 找了一下發現 jserv 有篇 《中國象棋遊戲

不過又找到了一個 Ajax 象棋遊戲,看起來還不錯,有人還做了一個 象棋遊戲收集頁。路上還看到了 Cube 2 (Sauerbraten)

# 那個 Ajax 有一個 Bug .. 就是玩到一半我的士跟象居然不能移動。 XD 有點被氣到,因為差點就贏了 Orz...

馬英九辯護律師刪筆錄關鍵字

今天看到這則新聞,馬英九的辯護律師刪除了許多對馬英九不利的關鍵字,企圖影響判決結果:
馬英九陣營大動作指控特別費案偵查檢察官侯寬仁製作不實偵訊筆錄,侯寬仁向法院調閱相關偵訊錄音重聽,發現馬營提出的錄音譯文,刪除若干對馬不利的關鍵文字,致原意遭曲解,不符事實。
真是作賊喊抓賊阿,馬英九你到底可不可恥?
侯寬仁說,馬營提供媒體的資料,將吳麗洳回答訊問時,有好幾處的「對」、「沒錯」、「因公支用」、「對、對」等字句刪除,而律師呈給法院的錄音譯文與昨天媒體登載的譯文,遭刪改之處竟完全相同;檢方說:「到底誰在扭曲事實,社會自有公評」。
http://www.epochtimes.com/b5/7/7/20/n1778253.htm

部落客苦情盃 - 你覺得最欠槌的 Blog BSP

Pixnet 出了這個 ... 很明顯的就是要用來婊無名的。 :P



到這裡玩

今天又連到 Pixnet 一次,首頁美工素質整個就是比無名高很多。

2007年7月19日 星期四

Vim Tips - Splitting Window



每週都來一點 Vim Tips 好了。

對目前編輯檔案分割視窗:
分割垂直視窗: <Ctrl-W> v
分割水平視窗: <Ctrl-W> s
關閉視窗: <Ctrl-W> q
留下目前視窗並且關閉其他視窗: <Ctrl-W> o

於分割視窗開新檔案: <Ctrl-W> n

切換:
切換到下方視窗: <Ctrl-W> j
切換到上方視窗: <Ctrl-W> k
切換到左方視窗: <Ctrl-W> h
切換到右方視窗: <Ctrl-W> l
切換到下一個視窗: <Ctrl-W><Ctrl-W>

調整大小

調整視窗垂直大小: <Ctrl-W> [+|-]
調整視窗水平大小: <Ctrl-W> [<|>]

將目前視窗垂直打開到最到: <Ctrl-W> _
將目前視窗水平打開到最大: <Ctrl-W> |

其他資訊可參見 Vim Documentation: windows

可於 Vim 內的 Normal Mode 下輸入:

:help windows

加入 Google Analytics

恩,我把 Sitemeter , Starcount 都移除了,而另外加入 Google Analytics ,只能說 Google Analytics 的功能實在是太強大了,Sitemeter 或 Starcount 都沒有這麼完整的統計資料 ( 還要付費! 天 )。

再說從 JeffHung 那得知 Sitemeter 有第三方外掛,誰知道掛上什麼 Spyware ?

總之,移除兩個 meter 網頁載入速度的確是快多了。

更改檔名的好工具 - rename

Rename 的好用在於可以批次改檔名,並且可以使用 Regular Expression,譬如說:

$ rename 's/foo/bar/' *.txt

把所有副檔名為 txt 之檔案名稱裡頭的 foo 改成 bar。

$ rename 's/[0-9]+//' *.txt

把檔名中的數字清除。或者:

$ rename 'y/A-Z/a-z/' *.txt

把所有大寫改成小寫,像是 Perl 裡頭的 tr 。

ShoutMix


Nice Blog Gadget
http://www.shoutmix.com/main/

學 Perl6

http://use.perl.org/articles/07/06/18/1726249.shtml

來自 Use Perl; 的新聞,Brian d foy 製作了一份關於學習 Perl6 的簡報以及錄音,可至上方連結下載。

其他:

開始學習 Perl 6

Parrot 0.4.13 Release News

http://use.perl.org/articles/07/06/20/0311202.shtml

把 Parrot 0.4.13 Release News 稍微看了一下,原來 Php 也在 Parrot 要吃的範圍之內,專案代號叫做 Plumhead,全名是 "Plum-headed_Parakeet" ( 梅子頭鸚鵡? )

其他更新的項目像是 Perl6 , Lisp, Lua, Python ("Pynie"), ABC, WMLScript, and Tcl ("ParTcl") 這些語言也都在 Parrot 的範圍當中,可以說是吃很大 ( 完整語言列表 )。

Plumhead 的首頁上才得知,原來 Php 是以 lex , yacc 實做 parser ,其中實做 php parser 的有 phc ( php compiler , but not yet compile php ) 可以產生 AST ( Abstract Syntax Tree ) 的 XML 輸出。

2007年7月18日 星期三

Gnome Specimen



gnome-specimen

Gnome Specimen, a simple tool to view and compare fonts installed on your system. Gnome Specimen currently features:

* a list of all fonts available (the left pane)
* a list of font previews (the right pane)
* Configurable preview text and font size
* Configurable foreground and background colors used in the preview pane

錢砸來買的書要趕快看完阿阿阿阿。Orz...

你怎麼可以不上無名?

這是無名小站的 登入畫面



然後再來看看我在 天外飛來巴斯光年 看到的這個....XD

2007年7月15日 星期日

The Links Today

Devhelp
http://developer.imendio.com/projects/devhelp

GNOME Developer Documentation
http://developer.gnome.org/doc/

GNOME Support Forums
http://gnomesupport.org/forums/viewforum.php?f=18

Developing with Gnome ( In C, C++, Perl, and Python )
http://www.gnome.org/~newren/tutorials/developing-with-gnome/

Gnome Programming Tutorial: Simple Gnome Application Using libglade and C/GTK+
http://www.micahcarrick.com/v2/content/view/28/20/

Emacs 之第二系統效應

GNU Emacs ... 是不是有變成像『第二系統』了? 那麼 Emacs 應該是人月神話裡『第二系統效應』的良好典範。XD 由以下 Emacs 的介紹片段可以得知 Emacs 有所謂第二系統效應的原因:
我們可以編輯一個檔案,可以ftp、telnet、執行shell指令,可以讀送e-mail、網路新聞;如果你寫一個程式,它可以為你編輯(compile) ,可以執行debugger;如果要做計算,它有calculator
;想把資料結構化處理,它有資料庫;它還可以繪製簡單的圖形,並且提供了各種介面,可以連接gopher、www等;它也可以做我們的記事簿,隨時提醒我們該開的會、該赴的約,它甚至會告訴我們月亮的陰晴圓缺,及每天日出日落的時間,並提供了幾個有趣的game讓我們在忙中取樂。
也難怪在 Again with the emacs 會嘲弄 Emacs :
"Emacs is a nice operating system. The only thing it lacks is a good editor."
笑笑就好 :P

轉換 Unix , DOS 的文字檔案格式

最常見的文字格式問題就是 DOS , UNIX 的格式了,令人討厭的 \r 常會以 ^M 的方式出現在 VIM 內。如果只是單各檔案,只需要使用

:set ff=unix

之後存檔即可。關於 ff 方面,可參見 Vim Help 之 File Format 。

但是如果是需要大批轉換,則有 tofrodos 工具可以幫你批次轉換。tofrodos 提供 "todos", "fromdos", "dos2unix" and "unix2dos" 使用。

譬如:

$ dos2unix -v *.vim

Vim Color Scheme Test

http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/

這個好心的朋友收集了許多 vim 的 Color Scheme ,非常多樣,而且還提供各種語言的色彩主題預覽。

順便提供給新手資訊,下載回來的檔案只要放在 ~/vim/colors/ 內即可,在 ~/.vimrc 內可以設定 ColorScheme ,加入以下

colors <Name>

其中 Name 就是色彩主題的檔名,如 blue.vim 就設定 colors blue

當然,要顯示漂亮的顏色必須要用 gvim 才會比較漂亮。 :)

# 使用後發現有些 Scheme 文字格式是 Dos Format ,也就是出現了討人厭的 \r ,Unix 下,需要將 Dos 轉換成 Unix Format 才可使用。 ( 可參考 轉換 Unix , Dos 文字格式檔 )

The Links Today

東大生 從小父母不逼讀書 ,從 JeffHung 那看到,我認為父母的教育方式也是關鍵。

DASH - Lightweight shell for /bin/sh. 從 ash 發展出來的 dash,官方說比 bash 還快。

Hello World Collection

黃鶴樓 / 崔顥

昔人已乘黃鶴去,此地空余黃鶴樓。
黃鶴一去不復返,白雲千載空悠悠。
晴川歷歷漢陽樹,芳草萋萋鸚鵡洲。
日暮鄉關何處是? 煙波江上使人愁。


賞析

章臺夜思 / 韋莊

清瑟怨遙夜,繞絃風雨哀。
孤燈聞楚角,殘月下章臺。
芳草已云暮,故人殊未來。
鄉書不可寄,秋雁又南迴。

2007年7月11日 星期三

過去了,季節

總是想不到有什麼可以跟這個異常的季節有所搭配的曲子,我擅自把這個夏天稱為異常。

這種天氣真的很不適合練 Polonaise, Rhapsody ... 因為越彈越熱,彈 Ballade 也不適合,我已經有點厭煩了浪漫派,春天早已過去,他早該收拾行李打包離開。

有誰可以推薦一下埃及風味的作曲家嗎? 也許 Albeniz 的 Iberia 不錯,西班牙風格倒是可以冒充一下啦,不過這樣又要再印譜了。

也許彈鋼琴的季節正如同感情一樣也過了吧。

Vim: HTML Generation

:TOhtml
你就會看見神奇的效果。

註: 用 gvim 產生的 HTML 會比較漂亮。

Links

我喜歡 Debby 這篇 :
聰明不是受詛咒的罪過——《我的天才噩夢》

我也有超頻的習慣...該多注意才是。

2007年7月10日 星期二

程式設計師好外之間的差異

在 Sackman , Erikson , Grant 等人所作的研究中,他們曾經對某個團隊進行工作表現的量測,這支團隊是由有經驗的程式設計師所組成,結果發現,生產力最好和最差的比平均是 10 : 1 ,而寫出來的程式,若以執行的速度與運用記憶體空間來評分的話,最好和最差的的比率是令人吃驚的 5 : 1


----人月神話 P53

2007年7月9日 星期一

Perl 5.9.5 Release

Perl 5.9.5 Release
http://use.perl.org/articles/07/07/09/0655239.shtml

所以 Perl 5.10 快出來了,正在暖身中,期待 Perl 5.10 帶來的效能革命,接下來就是要與 Perl 6 接軌。

GVim Language

在 XP 下安裝 Gvim 語系預設中文,設定改為英文語系與視窗大小:
lang en
language mes en
set langmenu=en_US.UTF-8
winsize 720 520

How To Contribute To A Free Software Project ?

How To Contribute To A Free Software Project With Patches?
http://cryptnet.net/fdp/prog/patch.html

Working on Free Software
http://www106.pair.com/rhp/hacking.html

Free Software Project Management HOWTO
http://www.faqs.org/docs/Linux-HOWTO/Software-Proj-Mgmt-HOWTO.html

High Priority Free Software Projects
http://www.fsf.org/campaigns/priority.html

5 Ways to Contribute to Open Source Projects Without Coding
http://nongeeksight.blogspot.com/2006/09/5-ways-to-contribute-to-open-source.html

Ways you can contribute to Free Software
http://mailman.linuxchix.org/pipermail/courses/2005-September/001948.html

婆家就是你家

本來以為這是歡喜笑劇,沒想到溫馨動人。

2007年7月8日 星期日

爛 Window

終於開到 Windows 下了,動手把之前裝的 MS 的一大堆 .NET FrameWork , Visual Studio , DirectX 3D SDK , MS SQL ... ( 族繁不及被載 ) 移除了,真是有夠肥的。 ( 不過我也是不得以阿,誰叫他莫名其妙就開不起來了 )

不過話說,要是可以 apt-get install visual-studio 那我還可以接受,因為安裝 VS 真的是個惡夢阿...除了要不停的換片,你還得忍受一大堆鳥問題,有問題還得重裝,人還不能離開電腦,因為你要自己按 "下一步"

2007年7月7日 星期六

Desk

好奇別人的桌子都長什麼樣、怎麼佈置,我於是在 Flickr 上搜了一下 My Desk 果然就看見一堆人的桌子,有亂七八糟的、雅緻的、精美的、貴氣的,一大堆。還蠻有趣的,然後發現有個日本人的桌子很雅緻,很吸引我,她的書桌是長這樣:



下面這張也太亂了:



恩,這個人看起來更忙:



看起來應該是多媒體工作者:



恩,這樣比較簡潔:

Python Call Graph Generator



這工具還蠻棒的,可惜只能用在 Python..
http://pycallgraph.slowchop.com/