2007年12月30日 星期日

使用 gvim 編輯 Blogger Template

之前發現的一個好用的套件, 『It's All Text!』(https://addons.mozilla.org/en-US/firefox/addon/4125)
裝上去之後,只要是 Textarea 的 Field ,就可以點一下用你想用的編輯器編輯文字。

這個好處實在是太大了。因為我就不用再麻煩的複製 template 到 vim 裡頭再複製到 textarea 裡面,並且還可以直接有 syntax support ,甚至我可以把 vim modeline 嵌入 template ,設定 template 專用的 fold。

呃,在 it's all text 內設定 /usr/bin/gvim 為編輯器之後,將以下 fold 的 script 放入 ~/.vimrc :
function! GetBTFold() " Blogger Template Fold
if getline(v:lnum) =~ '\v\<(b:widget|b:includable|b:section|b:skin).{-}(\/)@<!\>'
return 'a1'
elseif getline(v:lnum) =~ '</\v(b:widget|b:includable|b:section|b:skin)\>'
return 's1'
else
return "="
endif
endfunction
然後在 blogger template 最末端加上 ..
<!--
vim:sw=2:ts=2:fdm=expr:foldexpr=GetBTFold():
-->
這樣以 gvim 開啟時就會使用這個 fold script。

真相:



真是乾淨太多了。你可以按下 zr 就會展開一個 level 的 fold。用 za 可以 toggle fold。
『認命』 有時候是一種解脫的方法。

gVim - 加速游標閃爍

gvim 提供可針對游標的設定,其中格式是這樣

模式:設定1-設定2-設定3
blinkwait300 代表停 300 ms 之後才會開始閃爍 , blinkon 90 代表亮 90 ms , blinkoff90 代表暗 90ms。基本上這樣閃爍已經很快了,呃,不過不知為什麼 vim 反應速度好像會因此變慢了一點。

針對各種模式做閃爍速度的設定如下:
set guicursor+=n-v-c:block-cursor-blinkwait300-blinkon90-blinkoff90
set guicursor+=i:block-cursor-blinkwait200-blinkon110-blinkoff110
set guicursor+=v:ver90-cursor-blinkwait200-blinkon150-blinkoff150
看著游標快速閃動還是比較爽。

2007年12月27日 星期四

Vim - Perl Fold

vim 內建之 foldmethod 有 syntax , indent , expr 以及 marker 與 manual ,但 syntax 常會 fold 太多,不然就是想 fold 的卻沒 fold 到。 如果用 indent fold 的位置又不大正確。而 marker 卻會寫入 #{{{ , 以及 #}}} 在程式碼裡面,對不使用 vim 的人來說有可能會很礙眼。 另外使用 manual 又太過繁瑣,一旦把 ~/.vim/view 清除掉,所有的 manual fold 都會不見,而且檔案格式、位置變動,fold 也會不正確。

因此前一陣子便因此針對自己的需求用 expr 來寫了一個 fold 給 perl 用,只 fold 我要用的 sub 以及 template 和 pod 。
Code 如下:
function! GetPerlFold()
if getline(v:lnum) =~ '^\v(sub|template|\=\w+)\s\S+'
return '>1'
elseif getline(v:lnum) =~ '^\v(\};?|\=cut)\s*$'
return '<1'
elseif getline(v:lnum) =~ '^\s*#.*{{{'
return 'a1'
elseif getline(v:lnum) =~ '^\s*#.*}}}'
return 's1'
else
return "="
endif
endfunction
然後只需要在 .vimrc 內針對 perl 檔呼叫這段設定即可:
autocmd  Filetype perl :call PERL_RC()

function! PERL_RC
setlocal foldmethod=expr
setlocal foldexpr=GetPerlFold()
endfunction
上述的作法唯一的缺點是,如果 } 號沒有正確的 indent ,sub 或 template 內的 } 號被放在行頭的話,fold 就會錯誤,上述情況比較容易出現在 HereDocument 的格式內。

另外,如果覺得 Folded Text 不好看,也可以加上我這段處理 Fold Text 的 Function:
function! FoldText()
let line = getline(v:foldstart)
let cms = &commentstring

let cms = substitute( cms , '%s' , '|' , 'g' )
let cms = substitute( cms , '[*<!>]' , '\\\0' , 'g' )
let cms = '\v(' . cms
if cms =~ '|$'
else
let cms .= '|'
endif
let cms .= '\{\{\{\d=)'

" strip commentstring
if line =~ cms
let sub = substitute( line, cms , '', 'g')
" strip prefix
elseif line =~ '^\v(sub|template)\s'
let sub = substitute( line, '^\v(sub|template)\s''?(\w+)''?.*','\1: \2','')
elseif line =~ '^\v\=(\w+)\s'
let sub = substitute( line, '^\v\=(\w+)\s(\w+)','pod: (\1) \2','')
else
let sub = line
endif

" strip space
let sub = substitute( sub, '^\s*' , '', 'g')
let sub = substitute( sub, '\s*$' , '', 'g')

" count line
let num = v:foldend - v:foldstart

" make format line
let fline = printf( "|%3d|- %s " , v:foldend - v:foldstart ,sub )

"return fold
return v:folddashes . v:folddashes . v:folddashes . fline
endfunction
然後在 PERL_RC 內加上以下設定即可:
setlocal foldtext=FoldText()
如果只是想使用 vim 內建的 perl fold 可以加上
let    perl_fold=1
let perl_fold_blocks=1

並且將 fdm (foldmethod) 設為 syntax。

最後還有一個
set foldcolumn=2
這樣會在左邊顯示兩欄 fold,如果螢幕夠大,使用 10 也無妨。

而其他想特別用 marker,或 syntax 的 file,可以使用 vim modeline 的技巧。譬如 .vimrc 就非常適合使用 marker,因為 .vimrc 是個人使用,非共用檔案,此外在 .vimrc 使用 marker fold 隨身攜帶也非常方便。

只要在檔頭加上:
" vim:fdm=marker:
即可。

# 如果 setlocal 無法運作,可將 setlocal 改為 set

2007年12月24日 星期一

New York City / Norah Jones



I can't remember what I planned tomorrow
I can't remember when it's time to go
When I look in the mirror
Tracing lines with a pencil
I remember what came before

I wanted to think there was endless love
Until I saw the light dim in your eyes
In the dead of the night I found out
Sometimes there's love that won't survive

New York City
Such a beautiful disease
New York City
Such a beautiful,
Such a beautiful disease

Laura kept all her disappointments
Locked up in a box behind her closet door
She pulled the blinds and listened to the thunder
With no way out from the family store

We all told her things could get better
When you just say goodbye
I'll lay awake one more night
Caught in a vision I want to deny

And did I mention the note that I found
Taped to my locked front door
It talked about no regrets
As it slipped from my hand to the scuffed tile floor

I rode the train for hours on end
And watched the people pass me by
It could be that it has no end
Just an action junkie's lullaby

New York City

We were full of the stuff that every dream rested
As if floating on a lumpy pillow sky
Caught up in the whole illusion
That dreams never pass us by
Came to a tattoed conclusion
That the big one was knocking on the door
What started as a mass delusion
Would take me far from the place I adore

New York City

[amazon.com]

2007年12月22日 星期六

Sigma 生病了。這幾天得吃止痛藥,過幾天要開刀。

# update
# --------------------------
話說今晚突然有人敲我

Lai: 林neo
Lai: 嚇到我了啦 你怎麼了 要開刀?
c9s: XD 狗狗要開刀...

Lai: 一一 原諒我在第一時間內心出現了 “林阿嬤的咧”
Lai: 氣死我了我好拜持 .... 還立刻問你
c9s: 謝謝關心 XD
Lai: 一一 關心你家的狗

2007年12月19日 星期三

恩所以總共是四道手續

第一道 - 掃地 - 清除大塊髒物
第二道 - 吸塵器 - 吸去大部份灰塵
第三道 - 拖把
第四道 - 抹布 - 把塞不到的角落全部清理乾淨 ..

XD

2007年12月16日 星期日

衣服

今天 Shopping , 把電腦加到 3G Ram 爽,買了幾件衣服,買了幾本書。
噢,我看到 Frank Herbert 寫的 Dune。可惜某個該死的傢伙把第一集買走了,害我在那邊猶豫要買哪本好。
所以買了兩本 Frank Herbert 別的系列的,一本是 Green Brain , 另一本是 The Eyes of Heisenberg ..etc.

前幾天也換了檯燈,噢很有質感的檯燈。

然後某人突然線上敲我
(10:01:27 PM) Alan Lu (盧利雄): 你買什麼新衣服啊? 有感覺要 social?
(10:02:22 PM) c9s: 沒有要 social 阿,就去亂逛買新衣服而已
(10:02:32 PM) c9s: 在家 coding 可以穿,心情好
(10:03:17 PM) Alan Lu (盧利雄): -_________-" 你這樣的心態跟網路上那些美眉有什麼兩樣? 即使不出門,也要打扮的花枝招展,每天拍照片
(10:04:24 PM) c9s: XD , 怎麼會一樣,又沒有要拍照。而且也差太多了,這兩種事情怎麼比阿。
(10:04:48 PM) Alan Lu (盧利雄): 美眉是拍照,你是 coding...
(10:04:41 PM) c9s: 穿新衣服而已阿,心情爽就好了。XD
Anyway , 我還是不懂怎麼會一樣。XDDD

( 根本就是要當兵了總不能還跑去買筆電,所以找了很多藉口花錢 XD )

2007年12月13日 星期四

21 天

剩下不到 3 個禮拜就要去當兵了...
我還有好多想做的事情阿 (吶喊)

爛政府怎麼可以剝奪我學習東西的權力。

2007年12月2日 星期日

30

總覺得離 30 不遠了。
也許眨眼就 30 了吧!

2007年12月1日 星期六

Vim: Color Scheme c9s


之前寫的一個 vim color scheme,給 Terminal 用的,由於沒有設定 gui 的 color 所以不適用於 gvim。

要讓 Gnome-Terminal 搭配 Tango 的配色才會比較好看。c9s.vim

因為不知道要給他什麼名字所以就給他 c9s 了。XD

半天過去了

今天都過了 3/4 才知道今天是禮拜六...

想喝咖啡加鮮奶油但是又顧慮到逆態脂肪酸傷肝。而且研究顯示如果每天食用 5 克,心臟病的發病幾率會增加25%。

那我今天到底做了什麼呢?XD

晚上來喝喝咖啡,來寫寫 vim-get 好了。

公務員怎麼來?

12:38 : c9s@:: 原來廢柴都去考公務員了
12:38 : c9s@:: 難怪臺灣這麼亂..什麼事情都弄不好
16:16 : a2n@:: c9s: 公務員這麼多,基本上覺得那樣的人格特質都沒什麼競爭力

Ubuntu: 取得已安裝套件清單

請參見:HowTo: Create a list of installed packages

把所有已經安裝的套件匯出到清單:
dpkg --get-selections > installed-software

要從清單匯入用:
dpkg --set-selections < installed-software

接著:
dselect

Ubuntu 安裝 Vista ClearType 字型

這是 MS 的 Cleartype font,字型挺細緻的,點這邊 Preview

這是在 Ubuntu Blog 上看到的裝法,但我不是這樣裝的
Installing Vista Fonts in Ubuntu

$ sudo apt-get install cabextract
$ wget http://plasmasturm.org/code/vistafonts-installer/vistafonts-installer -O vista-fonts-installer.sh
$ ~/vista-fonts-installer.sh


我的裝法是,把 *.ttf 解壓縮到 ~/.fonts/ 內。 ( 在 這邊這邊可以找到載點 )
接著更新字型快取即可。

$ sudo fc-cache -fv

2007年11月30日 星期五

要年底了

好久沒更新了,眨眼就過了兩3個月,一下就來到了年底。冬天,寒冷的空氣。
好像從年初開始一直都在忙,沒有閒下來,除了做了許多自以為有意義的事之外,還可以讓自己不要亂想。
於是 Blog 也不知道說什麼了。 XD

好像自己到現在都還沒走出來 ...
a2n@:: c9s: 何必讓自己難過呢?? :( 你喔~ 怎麼還沒走出來啊
就繼續專注在自己想做的事情吧。

想再來寫一些 vim 。可是又懶了。

阿想到前陣子上台北參加 COSCUP ,很有意思。
點心好多。( 奇怪,重點是這個嗎?XD )

看的出來我很愛吃。 Orz

# 身體要固阿。好像在走下坡了。

2007年11月23日 星期五

Have yourself a merry little Christmas / Diana Krall

Have yourself a merry little Christmas
Let your heart be light
From now on our troubles will be out of sight

Have yourself a merry little Christmas
Make the Yuletide gay
From now on our troubles will be miles away

Here we are as in olden days
Happy golden days of yore
Faithful friends who are dear to us
Gather near to us, once more

Through the years we all will be together
If the fates allow
Hang a shining star upon the highest bough
And have yourself a merry little Christmas now

金三順

努力把金三順看完了 XD

結論證明死纏亂打還是很有效的。
阿。熙珍好漂亮。

2007年11月21日 星期三

Vim Tips

1) Read Data from STDOUT:

對我來說常用的狀況是這樣:

$ svk diff | vim -

好處是有 syntax highlight。


2) Convert All Buffers to Tabpage

有時候遇到的麻煩是這樣:

$ vim file1 file2

看起來好像只開到 file1 ,但 file2 也在 buffer 內了。用 :buffers 可以看見所有開啟的 buffer,用 :nb[uffer] 可以跳到下一個 buffer,有點麻煩...。但是既然有 tab 了,誰還用 buffer ?

於是可直接下 :tab ball ,把所有 buffer 轉成 tabpage。

或者想要水平視窗分割就用 :sbn (split buffer next )。

2007年11月20日 星期二

Vim - Alt keys

一般來說開 gvim 用 Alt Key 需要一點設定,預設的 Alt 是指定給 Menu 的第一個有底線的字母,那是不能被 map (bind) 的。

但是基本上很少會去用到 Menu 的 Alt key,所以我想把 Menu Alt Disable 掉:

set winaltkeys=no

這樣我們就做更多 map 的組合了

譬如說我想要 Alt-X 用在垂直分割的視窗切換,並且同時做最大化:

nmap <A-x> <C-w><C-w><C-w>_

2007年11月18日 星期日

plain/text

我發覺我的 blog 除了 screenshot 之外,都沒什麼照片...

2007年11月17日 星期六

週末

想趁週末把金三順看完,想去租片。

我媽說:『不行!禮拜一才可以租,這樣差價 20 塊耶!』

『。。。。』

什麼鳥週末阿。

爸說:『明天衛生局因為台南市北區的關係,要挨家挨戶的噴灑殺蟲劑』

『天殺的,你能想像一堆人衝進我房間亂噴藥嗎? orz 』

只好去喝咖啡....

處女座

這個太好笑了,看到的時候 撲疵 笑出來... (Link)
4. 事業:處女、天秤、魔羯。

處女座的人,他怕沒事做,所以你別管他,他自生自滅,他自己會把自己搞定,其實他會做的很好,想法也很多,身段也很柔軟。或是有的處女座最近事業有點停頓,他想去開公司,那老婆也不要管他,因為他一定有想法,一定也會做的很好,所以處女座的人,你把他當賺錢機器就好了。


天秤座你想想你能管得了郭台銘嗎?他自己都把自己搞成首富了。

魔羯座要的是人家幫他,譬如說你把家顧好,像他們這種人對事業有自己的堅持和想法,可以做很多事情做的很到位。
另外往下看....
那至於處女座,他喜歡單純的女生,他也不是要求說你完全沒有過去,但是你不能被過去污染,你還是要有那清純的氣質,然後你也不能太受傷的感覺,太受傷他會覺得他掌握不來,因為他希望有一個粉紅色戀情,所以不希望有個太沈重的女人出現,他承受不起喔。

2007年11月14日 星期三

gVim Settings

最近的怪僻:
不要 toolbar , 不要 GUI Tab 用 textmode 的 tab , 不用 GUI 的 popup 詢問框 , 雙邊的 scrollbar ( 沒有照順序 , 請 :help guioptions 查吧 XD )
set guioptions-=T                                                                             
set guioptions+=l
set guioptions+=c
set guioptions-=e
set guioptions+=M
設定滑鼠游標,不管 normal , visual , select mode 都要用 "輸入文字" 的游標:
set mouseshape+=n:beam,v:beam,s:beam,i:beam
使用 GUI 的 pty:
set guipty
設定每種 mode 的 Cursor , ver30 代表寬度為一個字母的 30%:
set guicursor+=n-v-c:ver30-cursor
set guicursor+=i:ver3-cursor
set guicursor+=v:ver90-cursor

2007年11月12日 星期一

Jifty command completion

幫 Jifty 寫的 Completion ,這樣應該好用多了。 :-)
http://paste.ubuntu-nl.org/44142/

2007年11月11日 星期日

SVK

最近開始改用 SVK 。 ( 丟掉 cvs , svn ... XDDD )

很討厭 SVN 每次都要打很長的網址,尤其是 branch 很多的時候。 *faint*

這個時候 CLKao 前輩就出來解救我了 XD,也就是 CLKao 前輩寫的 SVK

SVK 很好用的地方就是有 depotmap 的功能,可以把長長的 URL 縮短成像 //mirror 之類的路徑。

另外 SVK 的路徑還支援 completion ,可以一路 Tab 到底。不過也許是因為 completion 是另外去呼叫 perl 的 script 所以反應較 bash 內建 completion 而稍慢?不過沒有大礙。

SVK 調 Log , Commit 也都比 SVN 快多了,不用再等 SVN Log 烏龜慢慢爬,SVK 一下就吐出來了。

還有,原本以 SVN Co 出來的目錄,也可以直接用 SVK 做操作。

其實 SVK 的操作方式跟 SVN 大致上差不多,就 svk ci ; svk co ; svk mirror ; svk sync 之類的,所以根本就是無痛轉移。

# 請愛用 SVK

2007年11月5日 星期一

愛印網

最近在 高長輩 手下工作,我們在做 AIINK

要報告一下的就是,我們的 AIINK 上線了! :D

另外,手邊有一些 Clkao 給的免費折價券~
歡迎跟我索取。 :D

可以拿到可愛的小印章和小貼紙喔。

運費也免噢!

引述一下 AIINK 的 FAQ:
通常上網訂購,都需要外加運費,請問愛印網如何計算運費?
愛印網的定價均含稅及含運費,只要你住在台灣地區,愛印網會自行吸收運費成本.現階段我們還在和NASA洽詢有關於跨星球的航運成本,所以如果您住在外星球,我們暫時無法為您服務.
XDD

2007年10月27日 星期六

Vim Tip - Bookmarks

標記書籤:

m[a-z] 單一檔案內
m[A-Z] 全域 ( 檔案間 )

'[a-z] 跳至書籤
'[A-Z] 跳至書籤 (全域)

取得書籤列表:

:marks

特殊書籤有:

''
The cursor position before doing a jump

"
The cursor position when last editing the file

[
Start of the last change

]
End of the last change

# Vim 書籤還算不錯,用很久了,不過還是有些不便。最近在想的是,有沒有像 NerdTree 那樣可以把 bookmarks 列出來,然後按個鍵就跳過去的。最好還能浮動顯示上下文 ( 我好像想太多了 XD )

2007年10月21日 星期日

近照

Boulevard Of Broken Dreams / Diana Krall

Video on YouTube
I walk along the street of sorrow
The boulevard of broken dreams
Where gigolo and gigalette
Can take a kiss without regret
So they forget their broken dreams

You laugh tonight and cry tomorrow
When you behold your shattered dreams
And gigolo and gigalette
Awake to find their eyes are wet
With tears that tell of broken dreams

Here is where you'll always find me
Always walking up and down
But I left my soul behind me
In an old cathedral town

The joy that you find here you borrow
You cannot keep it long it seems
But gigolo and gigalette
Still sing a song and dance along
Boulevard of broken dreams

2007年10月20日 星期六

我覺得一天之中最好的時刻,就是你睡的很舒服,逐漸醒過來,四周為都很安靜,空氣清新,沒有該死的機車聲、卡車聲,然後你舒舒服服的刷牙洗臉。

不過,很該死的周圍又開始出現各種噪音。

總覺得人就像烏賊,每當我騎車在路上時,更是覺得如此。我也是烏賊,我們亂七八糟的在錯綜複雜的馬路中橫衝直撞,排放噁心的廢氣而不自知。我想起人們拍的一部影片,他們稱裡頭的機器人為烏賊,但是我覺得其實我們也跟那噁心的機器差不多了,甚至更糟糕。

最近喜歡喝咖啡。

and i got a job. :)

2007年10月19日 星期五

給獨裁者 / 鄭炯明

給獨裁者

你可以把我的舌頭割斷
讓我變成一個啞巴
永遠不能批評

你可以把我的眼睛挖出
讓我變成一個瞎子
看不到一切腐敗的東西

你可以把我的雙手輾碎
讓它不能握筆
寫不出真摯與愛的詩篇

你可以把我監禁再監禁
甚至把我的腦袋砍下

而你仍不能贏得勝利

在歷史嚴厲的裁判下
你的憤怒只是
寒風中的一個噴嚏而已

2007年10月14日 星期日

乞丐 / 鄭炯明

我走在黑暗的小巷
沒有人看我一眼

我蹲在閃爍的陽光下
沒有人看我一眼

我躺在公園的椅子上
沒有人看我一眼

我暴斃在一家店鋪的門口
卻吸引成群看熱鬧的人

     -收錄於《歸途》

2007年10月13日 星期六

寫程式的理由

J: 問你喔,你為什麼喜歡寫程式啊

C: 因為我喜歡看很多文字排列組合,看到有一堆像蟲蟲的 code 爬滿螢幕就會覺得很過癮。在寫的時候,就覺得好像在雕刻什麼些東西似的,像是雕刻家一樣把具有特殊功能的怪符號填起來。所以我喜歡語文,喜歡日文中文工整的樣子,也喜歡法文那種像 Perl 一樣長得像一堆小蟲的文字,雖然我兩者都學的不好。 (XD)

J (一陣大笑)

C: 幹麼笑啊

J: 沒有啊,因為我以為你會說像是 "寫出讓很多人可以用的程式,就會很開心" 之類的答案咧 XD

2007年10月7日 星期日

Vim - Quickfix Window


平常用到 Quickfix Window 是什麼時候呢? 當你用 :make , :vimgrep 之類的指令時,產生的結果會顯示在另外一個新開的視窗,這個視窗就是 Quickfix,要自己叫出來就得用 :copen , :cclose , :clist 這類指令叫出來,但是 vim 並未提供 toggle 的指令,所以我們必須自己來。設定如下:
" QUICKFIX WINDOW
command -bang -nargs=? QFix call QFixToggle(<bang>0)
function! QFixToggle(forced)
if exists("g:qfix_win") && a:forced == 0
cclose
unlet g:qfix_win
else
copen 10
let g:qfix_win = bufnr("$")
endif
endfunction
nnoremap <leader>q :QFix<CR>
最後一行的 leader - q 就是透過一個快捷加上你的功能鍵來呼叫指令,leader 一般預設是 \ ,所以只要鍵入 \q 便可以叫出或關閉 Quickfix Window。而 copen 10 代表的是開啟 10 行高的 Quickfix Window。

寫實心境

http://mr6.cc/?p=1102
一生中的第一個難題,就是身為別人的「男朋友」或「女朋友」的「寫實心境」。懵懵懂懂的年輕男女之間,還不是很抓得到對方的心理狀態,男的以為他已經很努力的討好女的,女的卻覺得男的怎麼不夠愛她;女的覺得已經對他表示好感了,男的卻每天都來煩,不給自由空間。碰到這種事,愛情專家會說你們的「頻率不對」、「個性相反」或「不了解對方」,深一點的可能會說,「你們都還不懂扮演自己的角色」,但若以「寫實心境」的方式來詮釋,其實只不過是這對男女都離「寫實心境」太遠。男的當然不想把女的煩成這樣,但他就是誤算她的心,也誤算她對於事情的理解與判斷與情緒,所以一再的「踩線」,直到對方受不了而爆發,然後把一件原本簡單的事愈吵愈亂。
說的實在很貼切 :p

更改 Ctrl 位置



能夠這樣實在是太好了,省得按 Ctrl 按到累死,不過還是得需要一些時間習慣一下。

GNOME 下,System → Preference → Keyboard → Layout Options → Ctrl Key Position。

(再次把 windows 踢一邊 XD )

華麗的冒險

華麗的冒險
詞/曲:陳綺貞

長長的路的盡頭是一片滿是星星的夜空
這一趟華麗的冒險沒有真實的你陪我走
長長的時間的旅程充滿太多未知的誘惑
數不清對你承諾過的一切
還有多少沒有實現過

不願放開手
不願讓你走
瘋狂的夢沒有了你
還有什麼用

不願放開手
不願讓你走
不願眼睜睜的看你走出我的生活

今天太廢了

早上熟悉一下 FreeBSD , 在上面裝 KDE

接著讀了一些 perldoc ,下午練了兩個小時的琴
後來因為停電,所以去練了一個小時的吉他,就練練音階,古典教材之類的 ...
接著讀了一個小時多的 Aho Compiler.
一個小時的托福字彙。

最後真的沒事情可幹了,天色又暗,沒辦法看書,所以睡覺 ....
睡起來還是停電,所以吃飯。
吃完飯就有電可以看新聞了。

XD 晚上繼續讀 perldoc 。

哎喲,我很想澄清,Perl 根本就沒有像外人所說那樣無法閱讀。事實是,多樣化的 Perl 比較容易讓人摸不著邊罷了,但是那樣的 code 其實是很少的。

阿,真是讓人腦殘的一 PO。 XD

2007年10月6日 星期六

Vim Tips

動點創意,Vim 就會更好用。

煩人的冒號

平常常用 :q 有時候會打錯字,變成 :Q ...並且,冒號還得加上 shift ,想說 Normal Mode 下 ; 其實只是重覆搜尋 f,F,t,T 等搜的字元,使用機率很少,所以乾脆就這樣:

nnoremap ; :

這樣就可以少按一個 shift。

調整縮排

平常調整 indentation 很麻煩,可以這樣做:
nmap <tab> V>
nmap <s-tab> V<
xmap <tab> >gv
xmap <s-tab> <gv
如此一來在 Visual Block Mode , Normal Mode 按一下 Tab 或是 Shift-Tab 就可以方便的調整縮排了。 ☺

2007年10月5日 星期五

手相

說到夢境,就讓我想到手相...

小時候親戚對命理特有研究,看了我的手相,她說這是花心的手相。當時的我只是疑惑,後來國中看了不少亂七八糟的書,在裡頭看到所謂生命線、智慧線、事業等,若是有島狀、斷裂等,就代表會有 "不順" , "低潮" , 或者其他不好的事情,若在生命線上,則被解釋為大病、災難等。當時想說「喔!所以並非花心」 我豁然開朗... XD

除此之外看生命線、事業線還有年齡可以推斷,從掌心往手腕方向延伸,以 5, 10 歲為單位至 60 多歲,可推斷事件發生的年代。

再來看手紋的類型還可以看人格特質,譬如說 輻射狀的細紋 代表智慧型的人 ... 等等。

其中還有幾種特別的手紋,譬如說垂直三條線的手紋代表大富大貴... 你在看你的手嗎?我跟你唬的啦 XD

其實是,貫穿感情線、生命線、事業線,最後與智慧線合併的手紋才是。 :p

不過這都是玄學,聽好玩就好。

2007年10月4日 星期四

人魔 online

最近開始習慣 idle 我的 Blog 了... 因為其實有更多更重要的事情要去做,還是少花時間做重覆性質高的東西吧。

好好的抓緊短短的這幾個月!

話說,前幾天做了的惡夢,是個有關人魔的惡夢,在裡頭,人的獸性得以完全的發展,甚至是極致。由於人被付予了魔法,因此發展出各種殘酷、兇狠致人於死的殺人技術...

哎呀,在夢裡我本來只是在喝咖啡,接著認識了一個非常中性的朋友,非常的有智慧,我靜靜地聽她說故事,聊著聊著。之後突然在咖啡廳裡頭的另一端就開始上演屠宰場了。 (暈)

有人被架上咖啡桌,接著 ........ ^&*&^&*&^(*&(*&*&^*^% .....

我還被迫要在那兒看完整齣戲... 其餘的就不想說了,實在噁心。

我被迫加入那個組織,說是組織實在有點太好聽了,其實根本就是幫派。裡頭形形色色的人都有,有長的像書呆子、有的像吸血鬼、巨人、侏儒、野狼或者美女、龐克、或者搖滾樂手。此外,還有怪裡怪氣的老大,性格飄忽不定,連皮膚都有時白有時黑,輪廓深,有著如混血兒一般的姣好臉孔,穿著紅黑色披風,能飛,耳邊有蛇,能夠自由在身上長出類似豬籠草的致命植物。

接著夢的主題就是圍繞在那老大身上,所有事務以老大為主,說一就一,說一喊二立刻就被當眾開腸剖肚。朋友之間勾心鬥角就算了,幫派裡頭根本就是派系對立... (政黨惡鬥?)

我還夢見所謂睪丸麻糬的東西,這來頭就特別了。在組織裡頭,老大脾氣很差,無時無刻都在殺人,而他有一個御用廚師,專門處理屍體。一天,老大的御用廚師端來一盤麻糬過來,老大說,這是我們幫眾的入幫規矩,每人都得吃上一顆這個睪丸麻糬。睪丸麻糬顧名思義就是外頭是麻糬,裡頭是死人的睪丸。

理所當然的,為避免引來其他人的不滿,只好當眾吃下。不過皮不好咬,咬不破,但又因為是麻糬,所以直接吞又容易噎著,只好硬生生的咬開.....

說到這,當聽眾的我媽與我弟就開口大笑了,笑我怎麼做這種夢,一定是人魔系列的影片看太多了...

「我怎麼知道會去夢到這種東西啊?= =」

我弟頻頻問道 「你當時在哪裡?屋內?外頭?還夢見什麼?」

「我也記不清楚,你問這麼多幹嘛,你也想體驗看看嗎?= = 那又不是 online game ,哪有人想 online 就 online 的?這麼簡單? 」

「你那就是人魔 online 阿」

(囧)

組織內越來越多人被頭頭殺掉,像是做各種實驗一般,有的被鎚子慢慢鎚死,有得則被生鏽的釘子釘滿臉,又或者開腸剖肚,被當作食物享用...

接著,由於性命遭到威脅,我被迫殺了兩個人...雖然事後被奸細抖出來...

總之那個晚上就活在原始時代中,成天應付心理複雜的獸人。

所謂適者生存,睪丸麻糬象徵的也許就是去勢,以及權力的宣示吧!
----
還想聽聽別的夢嗎?有 巨人吃魚大便人 等等...

2007年10月1日 星期一

Re: 不能說的秘密

真是讓人難過的電影。
時光的距離,如同我們的距離一般的長。
見面的時間有限,應該要珍惜,只是我卻沒有珍惜。
要是我也能夠像他那樣回到過去找你就好了。

只是以前的妳、或是在你心中的我,已經完全死去了吧,並且還是因為氣喘而死去的 ..
而現在那些或許只剩下灘爛泥。

你現在,應該在維也納了吧。
祝你順利。

: ) 我會想念你的

2007年9月29日 星期六

v6-alpha

其實早就可以在 Perl5 上使用 Perl6 的一些小甜頭了。

你可以安裝 v6-alpha , type:

$ sudo cpan v6

可以 perl6 的方式來撰寫之。
# file: hello_world.pl
use v6-alpha;
"hello, world".say;
實作的部份只有一部分,並不完整。v6-alpha 是實驗性質的東西,不過基本上可以當玩具玩玩。

注意, v6-alpha 並不相依於 pugs 或 parrot,其物件模型是以 Moose 為基礎。

其他可參考:
http://search.cpan.org/~fglock/v6-0.020/lib/v6.pm

Perl 5.9.5

編了 Perl5.9.5 ,這是 Development Version ,Sourcecode 可在 CPAN 上下載 ,See the Announcement 。步驟可參考 INSTALL 以及 README 檔。

$ sh Configure
$ make
$ make install


Configure 可加上參數 -d 以預設值編譯。可下

$ sh Configure -d -Dprefix=/usr -Dusedevel

如此即可。不過得注意的是:
It may seem obvious, but Perl is useful only when users can easily
find it. It's often a good idea to have both /usr/bin/perl and
/usr/local/bin/perl be symlinks to the actual binary. Be especially
careful, however, not to overwrite a version of perl supplied by your vendor unless you are sure you know what you are doing.
參考看看 Perl 5.9.5 有哪些新東西 ( perldelta - what is new for perl v5.9.5 ),

不能說的秘密

我終於看了。之前還笑著說『秘密本來就不能說啦』

恩。不過,真的是不能說的秘密。

劇情發展的很神奇... 影片結束我還哽咽了許久。難得國片拍的如此之好,而且還是周杰倫的處女作。 :P

2007年9月28日 星期五

Perlcc - Perl 前端編譯器

Perlcc 可協助你將 perl 的 source code 編譯成 binary , c 或者 bytecode ,於是嘗試用 perlcc 來編譯:

$ perlcc -o test test.pl

將 test.pl 編譯,並輸出為 test。不過遇到的編譯錯誤:
pccl0GI5.c: In function ‘perl_init_aaaa’:
pccl0GI5.c:15664: warning: this decimal constant is unsigned only in ISO C90
/usr/bin/ld: cannot find -lperl
collect2: ld returned 1 exit status
其實只要裝一下 libperl-dev 就可以解決這個問題了。

安裝 libperl-dev:

$ sudo apt-get install libperl-dev

重新編譯即可。 :)

將 source code 編譯為 Bytecode 則可輸入 :

$ perlcc -B -o foo foo.pl

產生出來的 Bytecode 會像是這樣:
use ByteLoader 0.06;
PLBCi486-linux-gnu-thread-multi^@0.06^@^D^@^@^@^D^@^@^@^L Ya^A^@^@^@d^Me@^L h^^A^@
^@^@^@
^@^@^@A^A
^@^@^@^G^A ^D^C<84>^D^N^M^@^@^@Hello world
^@^V^A^L^@^@^@<^C^@^@^@=^M^@^@^@=^M^@^@^@=^N^@^@^@A^A^A ^@^@^@<^C^@^@^@=^K^@^@^@=^L^@^@^@A^@^A ^@^@^@8 ^@^@^@;^P^@<87> ^@^@^@<88>^L^@^@^@^@
可參閱:
Perl 語言全面編譯: 1,2,3

PS. 對了,Programming Perl 3/e 上編譯 bytecode 是寫 -b ,不過正確的應該是 -B。

2007年9月27日 星期四

lftp - sftp

直接用 sftp 功能實在有限,而 lftp 也支援 sftp 所以找了一下其 sftp 之用法

利用 lftp 透過遠端主機之 ssh 服務達成 sftp 連線:

$ lftp sftp://account@host -p [port]

2007年9月26日 星期三

快把 Catalyst 忘光了

Catalyst 好久沒碰了,上次暴肝到做完之後就沒去碰,好像差點要把全部都忘了 XD 這個時候就會覺得其實寫 Mason 還比較實際些... Orz

來寫寫和 c binding 的 module 吧!

話說 Moose

剛剛有提到 Moose ,其實挺不錯,可以提供 Perl5 上一個良好的物件導向。

不過基本上對 Perl5 的 Developer 比較像是種折磨。因為雖然 Moose.pm 在語法上類似於 Perl6 的寫法,但是有些小細節仍是不太一樣的 (可參考 Audreyt 的 Slide)。看 Slide 看到這,我就覺得這會是個很頭痛的地方,因為當 Perl6 出來之後,你還得再習慣 Perl6 的 syntax,萬一你把小細節搞錯,出 Bug 的狀況反而更多...

沒辦法,要從 Perl5 切到 Perl6 還得過一個尷尬的過渡期...

不過,我認為 Perl6 已經超越了 Scripting Language 了!因為基本上他不僅吸收了 Haskell , Ruby , Python 等等許多語言的特色,還提供了多種的後端輸出。

所以為了 Perl6 強大的功能 .... (忍痛 XDDDD)

繼續寫 Perl 吧 XD

Object-Oriented in Perl

如果要在 Perl 5 上寫 OO 的話,就用 Moose.pm 吧!這是一個以 Perl 6 物件模型為基礎的模組,CPAN 上寫道:
Moose is based on the prototypes and experiments I did for the Perl 6 meta-model. However, Moose is NOT an experiment/prototype; it is for real.

如此,你可以類似 Perl 6 的寫法在 Perl 5 上寫 OO. :-)
這種寫法比較直觀,並且功能也比較強大。
package Point;
use Moose; # automatically turns on strict and warnings

has 'x' => (is => 'rw', isa => 'Int');
has 'y' => (is => 'rw', isa => 'Int');

sub clear {
my $self = shift;
$self->x(0);
$self->y(0);
}

package Point3D;
use Moose;

extends 'Point';

has 'z' => (is => 'rw', isa => 'Int');

after 'clear' => sub {
my $self = shift;
$self->z(0);
};
其他對 Moose.pm 的疑問就上 CPAN 的 Moose.pm 看吧! :)

那個..裝 CPAN 模組是這樣裝的:

$ cpan Moose

2007年9月25日 星期二

愛的教育

愛的教育是失敗的。

愛的教育只會教出叛逆、頂嘴、難管教的小孩,再加上養尊處優、嬌生慣養,這種情況更是嚴重,還會有其他併發症,簡直無法管教。

等到青少年時期才想管教都沒法,一天到晚跟你頂嘴發脾氣。等小孩自己意識到『自我』的時候要努力也來不及了。怎麼說?你看美國就知道了,教出一堆無可救藥的青少年,每天吸毒、打電動、泡夜店、開 Party ,正事不幹,幹一堆壞事。

人都在窮途末路之時才知悔改... 偏偏要悔改的時候已經來不及了。

哎,至少愛的教育不適用於一般小孩,那些較早熟的小孩例外。

2007年9月24日 星期一

Haskell - Wikibooks

算是目前覺得最完整的 Haskell 教學文件
http://en.wikibooks.org/wiki/Haskell

不過驢子倒是幫上不少忙,所以我又有其他東西可以讀了 XD。 ( 不用仰賴天隴 )

逝 / 敻虹

讀完了一朵小白花的遺書
扁柏樹說也飄到青草上了,我的絲帕
那曾在三月的白鷺鷥的頸柱上做夢的
我的絲帕,飄到青草上了。

而朋友,誰失蹤了,誰死去了。
更誰在三月沒有了消息

我的葉網吹過許多聲早安--扁柏說
但不知絲帕在那裏,
不知愛做夢的陌生人在那裏。

讀完了一朵小白花的遺書,
青草上有人哭泣...

想起翠島 / 敻虹

長街與長街
私語著,一箇七月 

你乘淺笑的浪花歸去
那時,夏贈給你許許多多的
美,翠島的棕漣漪紋身的貝殼

那時,長街與長街。還衹是
為黃昏雨所彈的

二線歎息的細弦。

但是的,我走過了一季夏。
一季翠島的少年時期

記得甚麼?暮雨霧中舟漸遠了

Win32::Printer

I was looking for the Printer Module on CPAN , and I found this ( Win32::Printer ). The author said that " PPD ( binary package ) is on the waxs.net " , but the link missed.

I have to compile it by myself , it's a troublesome job , because I have to install MSVC 6.0.

After you install MSVC 6.0 , just compile the module:

> perl Makefile.PL
> nmake
> nmake install


but you shall encounter an error which is that "PageNumber" is not in the structure "PSINJECTDATA".

I don't know why. Maybe it was caused by the version of Win32 API Headers. the structure which the module code expects is:
struct PSINJECTDATA {
DWORD DataBytes;
WORD InjectionPoint;
WORD PageNumber;
}
alias PSINJECTDATA* PPSINJECTDATA;
but what I actually have is:
typedef struct _PSINJECTDATA {

DWORD DataBytes; /* number of raw data bytes */
DWORD InjectionPoint; /* injection point */
DWORD Flags; /* flags */
DWORD Reserved; /* reserved field - must be 0 */

/* Followed by raw data to be injected */

} PSINJECTDATA, *PPSINJECTDATA;
My solution is ...
just comment the line:

psd.PageNumber = page;

then it unexpectedly can work out! :P

I can't guarantee that "inject" function could work , but the test script still prints out the example normally.

PPM + OpenGL

在 Windows 底下寫東西都很麻煩... ( 都不能用 apt )

如果 Perl 要用 OpenGL 那還得裝一下 OpenGL for Win32

不過有 ppm 就比較簡單了:

ppm install http://www.bribes.org/perl/ppm/OpenGL.ppd

PPM + Gtk2-Perl

遲早要在 Windows 上頭跑 Perl 的。所以裝了 ActivePerl,沒想到眼花去裝到 5.6 ,想說奇怪圖示怎麼這麼醜,印象中之前裝的還不錯看的。 XD

首先要解決 Printer 的問題,結果沒想到 CPAN 上 Win32::Printer 的 Binary 不知道跑哪了,沒辦法裝。只好裝爛到爆 MS Visual C++ 6 ( 仍是不屑裝 MS .NET。 自由軟體的好處就是什麼都好取得,自從習慣了 FS 之後,對 MS, ASP, BASIC 什麼的,都很反感。)

之後直接裝 gtk2-perl,首先得裝 ActivePerl ,接著是 Gtk2 Runtime , Glade 也可以抓下來。

接下來步驟可能會有點麻煩,因為要到各模組內的資料夾執行 ppm install 已經編譯好的 binary,所以我寫了一個 script 來跑,這樣以後安裝可以省事多。

你可以先將各資料夾照順序編號,如:

C:\foo\
00-ExtUtils-Depends-0.205
01-ExtUtils-PkgConfig-1.07
[...]

接著在 foo 底下寫一個 install.pl 檔
#!/usr/bin/perl
qx{ppm repo add http://www.lostmind.de/gtk2-perl/ppm/};
qx{ppm install Gtk2};
for $dir ( <*> ) {
next unless ( -d $dir );
chdir $dir;
for ( <*.ppd> ) { qx{ppm install $_}; }
chdir "..";
}
執行他即可。

還是要婊一下,cmd.exe 爛死了,難用到爆,還寫那種什麼 WSH ? 才不要!

對了,只要裝了 Mingw - MSYS 就可以直接在 cmd.exe 底下跑 sh , ls , vim 等等東西。帥

2007年9月23日 星期日

以為自己看透別人的人,總是看不見自己。

2007年9月22日 星期六

Vim - Perl6 Syntax

剛剛在逛 pugscode 的時候發現colordiff.pl 的開頭:
#!/usr/bin/pugs
# vim: filetype=perl6 :
# Perl 6 variation of http://www.perlmonks.org/?node_id=567025.
# You can change $command to reflect the actual command you want to use
# (e.g. 'svk diff')
看起來 vim 是有 perl6 syntax 了,所以搜了一下,找到了 perl6 syntax file

把他放在你的 ~/.vim/syntax/ 內即可。 :)

GladeXML + Gtk2-Perl



試用了 Glade 3 ,還不賴,比之前的 glade 好很多。

接著用 Perl 的 GladeXML ,試了一下 examples 底下的 fileman.pl



希望能滿足我的需求才是...XD

2007年9月20日 星期四

Enhanced gVim Package for Win32

Because of the ugly default setting of gVim on Windows , and every time when I want to install gvim , I have to setup those plugins again and again . so I packed my own gVim package with some plugins and fonts by NSIS compiler. the version of gVim is 7.1.

You can download here( zd.0x209.org ) or here( googlepages )

#update:
# 因為 google page 流量暴掉,所以新增另一個載點
# because of the flow exceeds the limitation , so I upload to another site.

Comments are welcome.

Features:
- The NERD Tree ( Plugin )
- The NERD Commenter ( Plugin )
- Vcscommand ( Plugin )
- Slippery Snippets ( Plugin )
- Taglist + Ctag (win32)
- Monaco Font
- Bitstream Sans Mono Font
- A lot of Colorschemes
- Context Menu ( associated with files )

Usage:
- \e to open the NERD Tree Explorer
- \t to open the Taglist Window

Screenshot:



學海無涯

『學不完的東西,全身都是無力感』的感覺已經持續許久了,雖然每天都努力的吸收。
每當這個時候就會開始羨慕那些頭腦好的人...雖然這種想法一點建設性也沒有...

吾生有涯,而知無涯,以有涯隨無涯,殆已。

2007年9月19日 星期三

Vim - NERD TREE



很棒的 Vim Plugin - The NERD Tree ,可像 Text-Mate 那樣在左邊開啟樹狀的檔案視窗。

安裝:

把 script 放在 ~/.vim/plugin/ 底下就可以了。

我的 Installer:

$ wget http://c9s.lya.googlepages.com/nerdtree.sh
$ bash nerdtree.sh

Category Theory

原來 Benjamin C. Pierce. 除了寫 "Types and Programming Language" , 還有一本專門探討 Cateogry Theory 的 "Basic category theory for computer scientists",這本還是到成大找才有的。
Category theory is a powerful formalism for studying and comparing different algebraic structures.
Abstract Algebra ... 喔,前幾天看到我弟的書,正是 Abstract Algebra ...

書真的越來越難取得了啊。總不能都去天攏買,不然一定會破產。 ( 那個價格真是讓人不敢恭維 )

2007年9月18日 星期二

Learning Haskell

Pugs 內的 READTHEM 文件提供了許多 Haskell 的學習資源連結
= Haskell - Books:

Programming in Haskell - Graham Hutton
http://www.cs.nott.ac.uk/~gmh/book.html (preview chapters)
Algorithms: A Functional Programming Approach - Fethi A. Rabhi, Guy Lapalme
The Haskell School of Expression - Paul Hudak
Haskell: The Craft of Functional Programming - Simon Thompson
The Fun of Programming - Jeremy Gibbons, Oege de Moor (ed.)

= Haskell - Online:

HaskellDemo - Shae Erisson (aka "shapr")
http://www.haskell.org/hawiki/HaskellDemo
Haskell Tutorial for C Programmers - Eric Etheridge
http://www.haskell.org/~pairwise/intro/intro.html
Haskell - Various
http://en.wikibooks.org/wiki/Haskell
Write Yourself a Scheme in 48 Hours - Jonathan Tang
http://halogen.note.amherst.edu/%7Ejdtang/scheme_in_48/tutorial/overview.html
Yet Another Haskell Tutorial - Hal Daume III
http://pub.hal3.name/#daume02yaht
(partial PDF -> KWID transcription in docs/yaht.kwid)
Haskell Mini-Primer (this covers infix $ and . operators)
http://conal.net/pan/haskell-primer.htm
Monad Transformers Step by Step - Martin Grabmüller
http://uebb.cs.tu-berlin.de/~magr/pub/Transformers.en.html
Harrorth implementation journal - Yuval Kogman
http://feather.perl6.nl/~nothingmuch/harrorth/
All About Monads - Jeff Newbern
http://www.nomaware.com/monads/html/index.html
How I/O can work in a purely functional language
http://community.livejournal.com/evan_tech/197471.html - Evan Martin
Applications of monads
http://community.livejournal.com/evan_tech/198116.html - Evan Martin
You Could Have Invented Monads! (And Maybe You Already Have.)
http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html
- sigfpe
why type classes are interesting
http://community.livejournal.com/evan_tech/199837.html - Evan Martin
Hitchhikers guide to Haskell
http://www.haskell.org/haskellwiki/Hitchhikers_guide_to_Haskell
Harrorth - Learning Haskell, Forth and Parrot - Together.
http://perlcabal.org/~nothingmuch/harrorth/doc/ - Yuval Kogman

Vim Patterns

在使用 Vim 的 Pattern 的時候,你應該會很納悶。 ( 至少我就很納悶 XD )原本的 \d , \w 好用的 (foo|bar) 跑哪去了?怎麼無法運作?

原來是 Vim 為了方便比對,所以要使用 Regular Expression 的時候,特殊字符你得加上一個 \ 才行用 RegExp 比對。

然而 Vim 提供多種模式,可讓你的 Pattern 不會長的太糟....

如果要用把 foo 或者 bar 換成 dog ,指令可能會這樣下

:%s/\(foo\|bar\)/dog/g

如果這樣太醜了。如果有讀 pattern.txt ,你會發現有所謂 magic , nomagic , very nomagic 之類的東西。\v 是 Very Magic , \V 是 very no magic ,別搞錯囉

利用 \V 我們可以將上述 Pattern 寫為

:%s/\v(foo|bar)/dog/g

是否乾淨很多呢?

以下附上 :h pattern 內的 Example:
Examples:
after: \v \m \M \V matches ~
'magic' 'nomagic'
$ $ $ \$ matches end-of-line
. . \. \. matches any character
* * \* \* any number of the previous atom
() \(\) \(\) \(\) grouping into an atom
| \| \| \| separating alternatives
\a \a \a \a alphabetic character
\\ \\ \\ \\ literal backslash
\. \. . . literal dot
\{ { { { literal '{'
a a a a literal 'a'

{only Vim supports \m, \M, \v and \V}

侷限

有人說,為什麼寫 Blog ? 寫 wiki ? 用心做那些心得,其分享的動機是什麼?對我,是來自自我的侷限。

我想無可避免的,每個人都有每個人的侷限,而我的侷限是這樣來的:

小的時候喜愛閱讀,特別喜愛科學家傳記,愛因斯坦是我其中最有興趣的科學家,還記得小四、小五的時候常拿著幾本科普書閱讀,像是『愛因斯坦相對論』之類的 書。對年幼的我而言,當然是很吃力,沒有基礎的數理知識怎能讀懂那些抽象概念?如果當時有人能和我說,你該如何做才能夠參透那偉大的理論,該如何一步一步 走?那麼情況也許會不同,但是沒有,周圍也沒有人懂,於是挫折感由然而起。所以,我想我第一個侷限,就是這樣來的。

小學尚未畢業,我的父親將我從台南轉學至南投縣廣興國小,那是座在鄉下的一間資源有限的學校。

我興趣轉移到馬可尼身上,那是位發明無線電的科學家。為了瞭解無線電的運作原理,我在圖書館裡頭努力的探尋關於無線電的線索,家中的百科全書已經翻爛了,不過對於無線電的介紹僅有一絲線索而已。

然而,校內圖書館盡是放兒童讀物,只有學校對面的圖書館只有二樓才是我想獲取的知識所在。不過圖書館規定,得年過 16 才能上二樓閱讀。

那時候是我第一次希望能夠趕快長大的時候。

過了好一段時間,母親向圖書館說服,才得以開放我上去閱讀。但又不能讀太晚,過 5 點回家的公車就沒了,時間有限,小學終於畢業,我還是無法瞭解馬可尼如何辦到。

我想如果 『興趣和挑戰是開啟生化開關的關鍵』那麼『挫折與侷限就是關閉生化開關的關鍵』。如果有這麼的一個開關,那麼我想我的開關差不多就是那個時候關起來的。

國中之後飽食終日,毫無目標可言,混混沌沌的度過無趣的升學階段。

在電腦上的摸索也都是獨自一人摸索,沒有指標,沒有方針,倘如瞎子摸象一般。直到開啟的時候,似乎已經是大學的時候了。

擺脫升學制度與被強迫的學科,『興趣』這種東西才又再度浮現出來。

有人說 『大學以前念書是不需要興趣的!』 那麼不需要興趣,你拿什麼活?

天生聰明的人、擁有天份、資質的人反而很少在分享,為什麼?對他們來說,知識太容易被瞭解,太容易獲得,輕易地擁有能夠享受駕馭知識的能力,怎麼有時間去分享?當然無法體會那種被侷限的感覺。

所以,既然花了時間學習,也不希望有人像我一樣被自己的環境侷限住,希望那些一樣有侷限的朋友能夠因為跨越出自我的侷限。

去打破他吧!

2007年9月17日 星期一

arrogant

眼前盡是新生,耳聾、眼盲,唯一擅長的就是嘴巴,從嘴巴裡散發出著未成熟的氣味。

波大無腦以及屌大無腦,穿著自以為時髦的打扮。
沒有夢想與目標,飽食終日,無所用心,成日玩樂,散盡家財。
等待的就是一波接一波的聯誼,急著將滿腦的精蟲與騷勁找到宣洩的歸宿。

就是這個階段了吧,在這個環境之中。

於是造就了 Larry 所說的,程式設計師的性格之一。

3P

Python , Perl , Ruby 選什麼學其實不是這麼重要了,等 Parrot 出來,這些都可以在共同的 VM 上執行,能做的事情其實本來就也都差不多了。

學學一些 Heterogeneity 的東西吧!如 Haskell。

2007年9月16日 星期日

Compiler (1)

其實肖想讀 Compiler Theory 很久了,只是學校沒有這方面的師資,週遭也沒有人會。 雖然才受資工系的教育滿一年就畢業了,不過一等有空,還是興致勃勃的想學習這門 mysterious 的理論。 :P

本來讀 Modern Compiler Design ( 這裡簡稱 MCD 好了 ),讀著讀著,讀 Parser 都還 OK , Creating top-down|bottom-up parser automatically 這類的也都 OK ,雖然過程還是挺吃力的。

到了中間 Attribute Grammar 的部份,發覺 MCD 並沒有交代的很清楚,連 ISSI-Dependency 也很含糊的帶過,一下就跳到 cycle 的問題,我都還不大清楚 cycle 怎麼來的阿! Synthesized , Inherited attribute 還未解說的很清楚, MCD 一下便將重點放在 L-Attribute , S-Attribute , Mutil-Visit Attribute 。 這讓我挫折感特重,於是 MCD 就擺在一旁一個禮拜之多....

這下好了,還好朋友蚊子寄給我一本 Aho 的 Compilers: Principle,Techniques and Tools,翻開來讀,發覺好讀多了,於是先把 MCD 擱著,決定把 Aho 讀完再說。 馬上發覺 synthesized , inherited attribute 等等的東西講的比 MCD 詳細的多,概念讀完如果不懂,還有 Example 可以讀, MCD 就沒有這麼詳細的 Example ,於是進度一下突破,由 Syntax-directed Definition 進入 Type Checking 的部份,開頭還算簡單,但後頭的 Operator Overloading , Polymorphic function ,靠自己讀還是很吃力,所以咬著牙根硬生生的把一堆 notation 囫圇吞棗似的吞了下去,不過還好 Type Checking 沒有寫到太多,不然我大概會發瘋。

感嘆。Type Checking 不知道是本來就有點複雜還是我頭腦笨?難怪 Type 可以拿出來寫一本書 " Types and Programming Language / Benjamin C. Pierce " 。

接下來正在讀的部份就是 Runtime Environment 了,也算是我有興趣的部份,其實最感興趣是後頭的 Code Gen 與 Code Optimization 。

總之目前的感想是,MCD 不適合像我這種自修 Compiler 的初學者讀,應該是先把 Aho 讀完才有基礎應付 MCD。

MCD 也有個部份挺不錯,有一整個 Chapter 討論 Funtional Language 。 ( 大心 )

basic polymorphic type checking
hybrid type checking

I hate sleeplessness

現在是



剛吃完家樂氏加鮮奶,我在讀 Compilers: Principles, Techniques, and Tools

Pugs 發起

Pugs 是目前 Perl6 最完整的實作。 關於 Pugs 的 interview 在這裡看到 A Plan for Pugs 。 ( 雖然是兩年前的東西了 )

讓 Autrijus 大師注意到 Haskell 的原因是起源於覺得 SVK 不夠彈性,於是換了 Haskell 寫的 Darcs 來使用。Autrijus 花了一個月就學 Haskell 。而後 Autrijus 說服了他的委託人 Perl5 缺乏 COW ( Copy-on-write ) 的機制,出資讓他以 haskell 開發更好的 Library.

在開發的過程中,Autrijus 發現到 Haskell 的優異, Autrijus 說:
But I digress. Using Haskell to develop OpenAFP.hs led to programs that eat constant 2MB memory, scale linearly, and are generally 2OOM faster than my Perl library.

Oh, and the code size is 1/10.
這是他發起 Pugs 的其中一個動機。接著他買了許多書,像是 TaPL , ATTaPL 等。
Autrijus:

Anyway. So, I ordered a bunch of books online including TaPL and ATTaPL so I could learn more about mysterious things like Category Theory and Type Inference and Curry-Howard Correspondence.
於是,Pugs 就這樣起來了。 :-) 當然詳細的 interview 請參閱 perl.com: A Plan for Pugs

在 use Perl; 上頭,也有幾篇紀念性的 Announcement 譬如說: "Day 1: Pugs" , "Day 29: A new month begins." 等等。

Pugs 的 Code 在每個模組的開頭幾行都有些有趣的 Quote,應該是 Autrijus 寫下的,譬如說 Class.pm 內的開頭幾行:
{-|
Class meta-model. (object meta-meta-model)

> Learn now the lore of Living Creatures!
> First name the four, the free peoples:
> Eldest of all, the elf-children;
> Dwarf the delver, dark are his houses;
> Ent the earthborn, old as mountains;
> Man the mortal, master of horses...
-}

或許是因為 Haskell 的關係,Perl 6 新增了許多類似 Haskell 的概念、功能,可參考 SynopsesYAPC: Perl 6 Today

IRSSI - 過濾上上下下的訊息

/ignore -regexp -pattern "is (away|gone|back)" * ACTIONS


#update: 後來發現直接用
/ignore * JOINS
以及
/ignore * QUITS
即可。

這樣螢幕會比較乾淨些

2007年9月15日 星期六

戀愛

戀愛得已讓你以正當的名義
嘗盡所有你所喜愛的肉體
以獲得無上的快感
吸乾所有愛著你的靈魂
使得自我膨脹

如此的,放蕩
自由

2007年9月13日 星期四

Slippery Snippets Tag



還記得 Slippery Snippets 吧!他預設的 Tag 是 <{ 和 }> ,但這樣有點醜,若只設成 { } 或 [ ] 也不適合,因為在 Perl 裡可能會鬧彆扭,怎麼說呢? Perl 的 Hash Reference 是由 { } 包起來的,BLOCK 也是,如果在參數內有輸入 { foo => 'bar' } 之類的東西,在 PlaceHolder 切換的時候,取代的 Tag 就會錯誤。

所以,我調整我的 snip_start_tag 如下:

let g:snip_start_tag = "«"
let g:snip_end_tag = "»"


這兩行在 VIM 怎麼輸入呢?你可以 :dig 看看有哪些特殊符號想用,會有一組特定的字符,Insert Mode 下 Ctrl-K 之後接著鍵入那組字符即可。譬如上述的 «» ,是由 Ctrl-K << 與 Ctrl-K >> 輸入的。

這樣就不會導致 Snippet 的符號與程式碼衝到。畫面也會比較好看。

2007年9月10日 星期一

Vim Tip - 修改等號左右邊的表示式

有時候為了修改等號左、右邊的表示式,常常得在移動游標、刪除等動作上浪費時間,譬如以下敘述

$var = $foo + 3 + function( $v1, $v2 , $3 ) * 3;

所以如果為了修改上面敘述的等號左邊或右邊,可以新增底下 map 至 .vimrc
nmap cr=    $F=lcf;
nmap cl= $F=hc^
如此一來,只需在當前編輯的那行鍵入 cr= 或 cl= 即可。

Firefox::搜尋



Firefox 內建的搜尋可以透過視窗右上角的表單來搜尋,在字串上點右鍵,就會以那個表單所預設的引擎搜尋。
但是如果要查不一樣的搜尋引擎就麻煩了,還得到 C-k 到視窗右上方的表單調整,重新輸入文字才能搜尋。

於是有個套件 SmartSearch ( https://addons.mozilla.org/en-US/firefox/addon/188 ) 可以讓你在右鍵直接做不同的搜尋。

此套件會需要用到 SearchWords ( https://addons.mozilla.org/en-US/firefox/addon/4328 ) 套件所建立的關鍵字搜尋書籤。

2007年9月5日 星期三

最近的對話

C: 那我決定了
C: 我可能會買一本燕子或地底兩萬里

R: 地底兩萬里呀?

C: 乾脆三本都買好了

R: 我只看了 地底三萬尺

C: XD 難怪我覺得好奇怪...

R: 哈哈哈 阿呆

-----

R: 我好像忘了吃晚餐 肚子好餓唷~~~~~

C: 你怎麼會忘了吃晚餐...ORZ
C: 你不是住家裏嗎?

R: 你都會忘記睡覺了 哈哈哈
R: 對啊 住家裡呀

C: XDD

2007年9月1日 星期六

『你可以壓抑住一時的情緒,但是當原本被壓抑的情緒爆發的時候,將會原本嚴重好幾倍,足以把你整個人吞噬掉。』

2007年8月31日 星期五

設定 Gnome-Terminal 預設視窗大小

/usr/bin/gnome-terminal --geometry=80x45

點選你的 Terminal Icon 將啟動指令新增 --geometry=80x45 即可,這樣會得到寬度 80 欄,45 行的大小。

2007年8月30日 星期四

追風箏的孩子

心情低落的早上過完,下午三點便去誠品,原本計畫去找朱少麟的《燕子》來看。因為之前 S 小姐喜歡這本書,於是為了想趁假日多讀點閒書,我像是尋找知道不能說的秘密一般,前往尋找此書。不過店內只剩下「三合一」,問過店員之後知道已經沒有其他單本的《燕子》,只好罷手。

隨處在誠品內亂逛,像是沒有挑一本書出來讀就不甘心似的。首先我找了一本... 該死,我居然忘了書名。雖然隱隱約約腦中還殘留著那本書的畫面,白白濛濛的,好像有棵樹,不過已經枯了,封面上有五、六個字。可惡,還是看不清楚,只好作罷。

腦袋不靈光。

那本《不知道叫什麼的書》耗了我一些時間讀,虧他還有一堆推薦文,不過在我看來都是屁。那本書讀罷二分之一,說盡瑣碎無聊的事,就我看來書裡自以為的幽默,我一點也不覺得好笑 ( 美國人的幽默 ? ) 。甚有部份是和同性戀有關,和神父發生性關係 ( 男同志 ) 、變性、口交。

無言。

於是接下來挑選了另一本書來讀,是大家都和我推薦的《追風箏的孩子》,我一直都沒有把那些大家推薦的好書拿來讀,我一直沒有讀文學作品的原因之一,是因為我好一陣子沉浸在電腦技術等書籍,毫無吸收人文藝術的慾望,原因之二是好一陣子都在準備考試 ... ( 總之就是都在忙的意思啦 XD )

通常一本書如果讀了三分之一還沒能抓住你的心,就可以換本讀了。反之,就是能捉住人心的書 ( 好書? ) 。此書描寫的是在阿富汗的阿喀爾城鎮的「兩個非常要好的小孩」的友情故事,並且包含了戰爭、背叛、懦弱、親情等元素。

當然也不只友情,只是阿米爾想爭取父親的寵愛而....

接下來就爆雷了。

我一方面非常喜歡哈山的單純跟忠心,一方面又討厭主角的懦弱。阿米爾的父親與哈山都是見義勇為的類型,非常講義氣。阿米爾因為不夠男子氣概而不能得到父親的認同,歷經一場風箏比賽的廝殺,阿米爾贏了,也幫贏得父親的光榮,但誰知道這場勝利是骯髒的?哈山受盡屈辱而讓阿米爾能贏得父親的認同。哈山為阿米爾上刀山下油鍋,不管阿米爾幾次諷刺他、嘲笑他,都豪無怨言,還能天真的希望能和阿米爾和好如初,而當他越是如此,阿米爾越是惱羞成怒。他雖然羞於面對哈山,卻又再次背叛哈山。

然而這純潔的友情就因為阿米爾的懦弱、袖手旁觀,而導致哈山在 26 年後被戰爭的迫害而死在街頭。阿米爾怎麼喚也喚不回他天真無邪的「同父異母的弟弟」,只好從哈山的孩子身上得到補償,或者補償哈山。

一如後來阿米爾的父親為同車的夫妻正義的挺身而出擋下了俄國士兵無理的侵犯 ( 差點就死在車上 ) ,阿米爾在得知哈山被殺害後,便前往被塔利班佔領的阿喀爾,想帶回哈山的小孩。

而在與那小時候的惡人 ( 當初欺負哈山的那人 ) 打鬥時得到心理的補償,雖然最後的勝利來自哈山小孩的哈山式攻擊才將那惡人的眼睛打爆。 XD

阿米爾小時的故事,也不禁讓我想起小時的我 - 體弱、沒有勇氣、喜愛閱讀 ( 只是我讀的不多、寫也寫不好 XD )。一位善良的朋友總是在我弱勢之時為我挺身而出,有好一陣子他都會替我說話,讓我在團體中不遭到排擠。我還記得他的名字,他叫做張中宇。他同哈山那樣單純善良,我也一直待他很好,總是會帶家裏零食和他分享 ( 那時家裏是雜貨店 ) ,這樣的友情一直非常順利,只是我想我們很幸運的沒有遭受到像阿米爾那樣的考驗。

讀完此書,我前一刻的價值觀已經遭到翻覆,見識不多的我讀了如此對戰爭描繪深刻的作品,不禁讓我對我們現有的生存方式感到感慨,聰不聰明倒也沒這麼重要了,人生一眨眼就過去了,歲月摧人老,有什麼知識又是比友情、親情更重要的呢?

我突然想到 《奪魂鋸》 裡頭說的一句不錯的話 -『當你知道要珍惜的時候,總是因為面對死亡這個動機,才懂得珍惜。』人都是如此,當面對死亡與戰爭之時,才懂得珍惜又有何用呢?

當店門關的時候也正是我倉促讀完此書最後一頁的時刻,雖然我讀的不快 ( 為何要快呢?能夠慢慢的咀嚼文中的奧妙與味道才是閱讀的趣味所在。 )

回程的時候經過一條街,想起有位國中同學就住那裡,我還記得他姓陶,綽號叫『掏雞雞』,本名是.... ( 該死的,我又忘記了 ,居然本名記不住,這麼難聽的綽號還記得起來 )

不過我還記得當時是玩板 ( 滑板 ) 的同伴,這位掏先生也是三分鐘熱度出名,每次出來練板,就開始發揮打嘴砲的功力。 ( 笑 )

我還記得國三,我「曾有」個好友蔡耀仲,只不過我們彼此都沒有同哈山那樣的善良單純,有低頭向對方和好的勇氣。 他本人現在應該還在哥斯大黎加吧?

未來還有好多事得面對的呢!

[轉錄] 追超級正妹

雖然不喜歡轉文章到部落格上,不過這篇值得一看。
也點出了現實之處啊! :-)
-------
作者: triste () 看板: CATCH
標題: 追超級正妹
時間: Wed Mar 22 01:47:51 2006


這篇可信度多少我不知道,我是整理寫給自己看的。


電動打到最後,主角一路冒險歷鍊多了,等級自然就會提升
,眼光也會愈來愈遠大。

想要打魔王。


我也一樣。

女人的外在在我的評價之中,真的沒有到偏執的地步。
加上我受苦於前幾任最後的紛擾,現在認識女生性格番不番擺在決定性的位置。
所以理論上,外在似乎更不重要了。

只是阿,窈窕淑女,君子果然真的好逑。

我對於眼睛漂亮,皮膚白,笑容可愛會打扮的女生,真的特別容易有感覺。

有一次無聊細數這十幾年來有過曖眛的女生,
漂亮美麗度竟是穩定的隨年齡成正比關係。=.=a

忽然懂了,內在變成更主要的決定要不要在一起的因素。

外在依然是門檻。

只是隨著自身成長所帶來的經驗跟自信,這門檻愈來愈高..........

(笑)

原來無形中,我正在打魔王。

不過,我終究有記得remember who I am。
管他打不贏打得贏再這裡胡亂分析看看。


追正妹的前提大概是,真心一定得跟眾多追求者比大顆。
『各項』條件,一定都致少要有平均值以上。
技巧下面說。

概括性的分分看,一堆例外是正常。
以下的所有『女生』,通通附加條件『外在很優。』



第一種是幼嫩學生妹,用來形容這種應該就是未上市的績優股。
主要分類的取決是年齡,年齡大概分布在16~19。
其實吸引這類的主要條件是帥,有型,幽默,浪漫。
嗯他們比較單純吧,戀愛的夢幻想像很多是來自大眾媒體來的。
不諱言,以一個情場老手去讓他們有感覺是真的蠻容易的。
因為他們體質上見識比較少,也較單純。所以很容易感動,也容易感到新奇。

嗯,有帶過營隊的就知道,一些很鳥的笑點,很肥皂的劇情,對高中生依然是掌聲不斷,
蕩氣迴腸。

難度是近水樓台的問題,總不能回頭念高中吧。
不過話說回來,關鍵也在近水樓台,沒看過很多剛升大一的正妹,三下兩頭,就輕鬆被
同系學長或同校學伴追走了。
除了條件之外,露於外的深情款款也會很有用。


第二種也是學生妹,只是限定變得更廣,所有沒入社會的學生妹。
年齡大約19~22。
這種情形,大概談過兩三次戀愛,享受過n個追求者。
開始了解到自己在異性間其實滿有魅力的。

衍伸成下面幾種類型。

2a
正歸正,還是對自己沒自信。
不要懷疑,有非常多外在上看來讓人眼睛一亮的女生,其實對自己的內在某處很沒自信。
他往往因為成長時期發生的某些事情,而對自己的某向人格特質沒自信。
因此,她反而會異常討厭別人光有外在的美好去肯定他的價值。
因為她沒自信的是在內在的某處。

好處是你的外在條件,可能不用非常出色搶眼。
但是你必須要具備很敏銳的觀察力和耐心,了解他沒失落的根源。
也就是說,一旦你是草包,OUT的機率很高。
他更需要的不是漫天花雨的甜言蜜語,而是一個人能listen and observe。
你也須要不斷主動展現出自己美好而強悍的的一面。
因為缺少自信,所以你身上發光的自信會更迷人。

才華,跟內在反而是打動他的關鍵吧。

2b
很漂亮,性格很開朗活潑,異性同性朋友緣不錯。
嚴謹的來說,應該不異常須要愛情的都是這類。

追這種的,老實講他還蠻完整的,應該家庭,朋友圈都很完整。
生活本來就很快樂了,自然不會異常強力渴望愛情。
所以很難逮到他出現弱點,讓我們表現出重要性的機會。

部位必需放在長期戰略。

也就是得盡力融入他的生活圈,朋友補習班社團。
然後,幽默往往是能不能勝出的關鍵。
一旦你能成為在他身邊出現頻率最高,又最能讓他開心的人。
才有機會逮到他悶煩的時候,漸漸走進他心裡。

用心往往是突破口。
一天兩天生活快快樂樂看不見你的不同,一年兩年總有風風雨雨會讓他看到你對他的用心



2c
漂亮但是同性朋友似乎偏少,異性朋友偏多。
不知道準不準。
不過,我一路看過來,蠻多會比較現實,有點嬌氣。

有點小公主的味道。

他週遭的異性朋友眾多,選擇也眾多。
所以外在條件上要求的門檻會更高。

這種曖曖內含光,老實講會比較吃香。

我曾經跟一個有演過偶像劇,常拍廣告的女生走得很近。
前半段用盡約會高手,走得是非常曖眛,跑者是一直往前面的壘包推進。
不過最後雙方沒在一起的原因,卻是我有時候會展現出比較強悍的手碗跟自信。
對向來捧在雲端的她,會有相當的壓力和不習慣。
不過我也對她的嬌氣有點受不了啦,哈哈,算是因了解而當朋友的優良案例吧。

所以做事上比較謙虛,誠墾為他默默付出,傻傻做,
言語上卻還是能風趣好玩逗他開心的會比較有機會勝出。

2d
這算是最難的類型,真心技巧機乎用不太上。

有些女生性格比較積極,老實講,她心中已經有一個她最想要的愛情樣子。
也就是說,你不是那樣子,追他千遍機乎也沒有用。

真心技巧都是屁。

他只會覺得愧欠你而覺得煩燥。會全面性不想理你。

說最難,是因為運氣的機會太大。

當然,還是有一步一步爬的機會。
第一次翻完不是他要的,就用朋友位置努力打聽到她想要的是哪樣的型。
然後乖乖消失一段長時間。

重新再出現,再建立新的第一眼印像。

再一翻兩瞪眼一次。
翻到對為止!!


3
出社會的女生,這種女生普遍都是比較會打扮。
也因為打扮外在上的付出,現實會對他們而言看得更真切。
他們知道真心卡片不能換到名牌,小朋友看地球可以。
他們知道摩拖車或許方便,可是汽車可以讓他舒舒服服。
他們知道長得帥強壯,或許可以愉快的戀愛。
但有工作又成熟的男人,更能給他長久的相伴。

20歲以後,出社會年齡愈久,這些就會愈強烈。
沒辦法,誰叫你的對手都是社會大學裡的,而這些都只是基本盤而已

對學生妹有用的技巧應該對他也沒什用了。
當一個人你問他約會是做什?
她可以很明確的回答你,不就吃飯看電影逛街。
那代表他大概已經是老油條了。
因為上面那些項目,大概一語道破約會的真意阿QQ"


20歲以前,出社會工作的,反到可能因為跟同事的年齡差距,比較愛跟學生時期的玩在一
起。
所以我大概,會把他當做學生妹追求吧。

嗯,這部份主要憑我以前在夜店工作的印象跟聊天說的。

想追這型的,先好好畢業,當完兵,找份穩定工作,再去思考吧!!


--
※ 發信站: 批踢踢實業坊(ptt.cc)

2007年8月29日 星期三

Blogger - 設定 Widget 只出現在首頁或單篇文章

點選 expand template 之後,找尋你想設定的 widget code,如下範例:
<b:widget id='HTML4' locked='false' title='Del.icio.us Tagometer' type='HTML'>
<b:includable id='main'>

<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>

<b:include name='quickedit'/>

</b:includable>
</b:widget>
設定此頁要在單篇文章上出現,在 <b:includable id='main'> 之後加上

<b:if cond='data:blog.pageType == "item"'>

若是要設成首頁,就加上

<b:if cond='data:blog.url == data:blog.homepageUrl'>

接著在 includable 的終止標籤之前加上 if 的終止標籤,讓整個 IF 敘述將 Widget 顯示的部份包起來。

</b:if>

改完之後的範例如下:
<b:widget id='HTML4' locked='false' title='Del.icio.us Tagometer' type='HTML'>
<b:includable id='main'>

<b:if cond='data:blog.pageType == "item"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>

<b:include name='quickedit'/>
</b:if>

</b:includable>
</b:widget>

2007年8月28日 星期二

I , WEAK

想做的事情好多。當這些沒有辦法達成之時,才發覺自己仍是身陷非理想的環境之中。

直接反映在自己身上的就是 - I , WEAK

陳綺貞

托堂姊的福,才能一起去陳綺貞這次在成大體育館的演唱會。

因為她喜歡古色古香的文物,所以我們先後逛了成大、孔廟、古街,接著在小巷內雅緻的咖啡廳內吃了下午茶,聊了好多。









( 不過好像都是她在聽我講我的回憶而已... XD )

路上還發現一個大烏龍,就是我居然把一些照片拍到 DV Tape 裡頭去了,所以沒辦法直接拿不出來,有些照片就 Lost 了。另一個烏龍是... 電池沒裝好,結果以為沒有電,所以有些照片就沒拍到... 後來才拿出來拍。 XD

終於晚上到了,入場前排隊



取票。 :)



入場囉



整個演唱會不僅聲音效果方面做的很好,視覺上也很棒。

由於一整天都在想著以前的回憶,所以當她一奏吉他,就....

如果用顏色形容的話,一開始是純白色、淡紫色的,慢慢轉為粉紅色、藍色,高潮的時候是熱情的紅色、黑色,接著轉換成幸福的黃色和橘色,最後在平和的淡藍色結束了。



綺貞的歌有種「撫慰人的心」的作用,所以想必喜歡綺貞的歌迷心靈或許都有某些傷痕吧!( 誰沒有傷呢? ) 正也因為如此,坐在台下反而有種溫暖的感覺,而非如狂熱的亂流一般。

失敗者的飛翔
告訴我
小步舞曲

這三首也都好好聽呢。

最後要結束的時候...



安口了好幾首,要結束了。

結果最後又回來繼續唱了兩三首。 XD

2007年8月27日 星期一

Firebug

Firefox/Ubuntu 一直都有 clipboard 資料流失的問題,所以今天去 report bug .. 效率其實還挺不錯的,回應很快,不過回覆如下:
Sarah Hobbs :

This is true for any application - I'd suggest you try something like
glipper, which holds clipboard data throughout your gnome session.

** Changed in: firefox (Ubuntu)
Status: New => Won't Fix
所以到底是什麼原因呢?-.- 不過使用 gclipper 還不錯,可以備份 clipboard data 。

2007年8月26日 星期日

初識 Python

昨天早上 Survey 了一下 Python ,發覺 Python 和 Perl 的哲學比較起來,是兩種對比。

Python 設計的很簡潔,怎麼說呢? Python 把分號拿掉了,並且嚴格限制縮排,此外 {,} 也拿掉了,所以語法很清晰,不用花精力在調整括號的排版,也不會有差異太大的 Coding Style。除此之外,物件導向方面設計的比較完善,譬如說

"String1".startswith("Str")

同樣的語法在 Perl 裡頭就無法做到了。

Python 相較於 Perl ,Perl 強調的是自由度,甚至自由到能夠改變剖析的語法,另外 perl 走的哲學就是 『條條大路通羅馬』一種目的可以用多種方式達到,可以很寫的很髒 - 可寫不可讀,或者寫的很精緻。 Perl 也提供很多的方便性,譬如樣式比對可由自己想要的字元取代雙引號,如此一來可以避免過多的跳脫的反斜線,像是 rx{ls},qq/String/,q-String- ;呼叫函數可以加上圓括號或是不加也可等等,透徹的利用很多特殊符號來達到簡略迅速的寫法。

目前的 Perl 最大的一個缺點就是在物件導向方面不大自然,要透過 bless 函數利用 reference 的方式達到物件導向的目的,所以語法上比較不是這麼的簡潔,如下範例 ( 取自 WWW-Mechanize-1.30-jFIVC5 的 Image.pm :
package WWW::Mechanize::Image;

...略

sub new {
my $class = shift ;
my $parms = shift || {} ;

my $self = {};

for my $parm ( qw( url base tag height width alt name ) ) {
$self->{$parm} = $parms->{$parm} if defined $parms->{$parm};
}

return bless $self, $class;
}
你可以發現要透過 shift class , 接著要實作一個雜湊參照,接著利用 bless 使他成為物件,最後傳回。

Perl 在傳遞參數方面也是有些累贅,得利用 shift 或是 @_ 來取得參數。不過以上問題在 Perl 6 都會有革命性的改進,想更進一步瞭解可以參考 Perl 6 Synopses

Python 在這方面顯得精簡許多,如下範例 ( 取自 Simple Sample of Python )
class PrinterFormatter:
def __init__(self, filename, page_len=58):
# Save the time of creation for inclusion in the header
import time
self.now=time.asctime(time.localtime(time.time()))

.... 略

def write_header(self):
# If the header for this page has just been written, don't
# write another one.

.... 略
由於省略了大括號,只利用冒號代表接續的敘述,強迫縮排,參數傳遞的寫法也比較乾淨。簡單的說, Python 在語法的限制比較高,不過也因為如此而能夠將程式碼的可讀性提高。

另外發覺 Python 與 Application 的 binding 也都不錯,而 Perl 的模組量多非常豐富、範圍較廣。所以各有其優缺點。

以上,初步認識 Python 之感想。如有錯誤煩請指正,小弟懂的不多,請多多指教,謝謝。 :-)

告訴我

曲︰陳綺貞
詞︰陳綺貞
編︰林暐哲/陳綺貞

看沉默的電話 它什麼都不說
看電視的畫面 它無聲的閃動
看街上的行人 跟我擦肩而過
整個世界太冷漠 我沒有力氣再往前走

看你緊閉的嘴唇 它什麼都不說
看你飄忽的眼神 它無情的閃躲
看你和我的回憶 跟我擦肩而過
你的改變太冷漠 我沒有勇氣大聲地說

告訴我 你不是真的離開我
你也不願這樣的夜裡 把難過留給我
告訴我 你不是真的離開我
你是要懲罰我的愛讓你失去自由
告訴我

2007年8月25日 星期六

把好一段時間積在心裡的心事都倒出來了,說到我自己都哽咽了是怎麼一回事呢?好像大家分手的理由都差不多,大多都是 "對方無法滿足自己的需求" , " 沒感覺了" , "差別太多" , "我們是不同世界的人" ...

不過客人來家裡,就會有好多好吃的東西上桌。阿~~真幸福。

2007年8月24日 星期五

兩個資訊人至少要用過的東西

我又在說廢話了。

其中一個是 RSS Reader ,可以用 Google Reader 或是 Bloglines 等服務 ,另一個則是 Del.icio.usHemiDemi

而且,都這個年頭了,如果你還不知道什麼是 RSS Feed 那就太糟糕了, RSS 已經是行之有年的東西.. ( 好像快3,4年了? )

Del.icio.us , HemiDemi 可以使你更能掌握網路上流動的訊息,哪些網頁被收錄的最多,以及你可以訂閱你有興趣的標籤...

不過以上兩者使用者必須控制自己陷入的程度,否則很容易沈淪,Google Reader 會讓你永遠都讀不完 Feed ,變成你逃避工作的藉口。 使用 Del.icio.us 做為收錄網址工具,則要避免『收集而不閱讀』的行為,否則你的 Del.icio.us 只會變成永遠也不會拿出來翻的倉庫而已,若只是分享給其他人訂閱,那就例外。

我又在說廢話了。

2007年8月23日 星期四

卡住

卡在 Attribute Grammar ,一直對 IS-SI Dependency 很模糊,沒有搞清楚他的概念。

卡住了,就是這樣。

po 去 BBS 好像不是沒人會就是懶得回吧,學校老師也沒老師在搞這方面的,周圍的朋友更不用說了,所以還是得靠自己來吧!

一定至少要在兩週內前進到 Code Gen 才行。

甲烷是什麼

『甲烷是什麼?』我那小學剛畢業的老弟突然問說。

『甲烷是一種氣體,你放屁的時候就會排出來... 』 我回答

『甲烷是什麼?甲烷是什麼?甲烷是什麼?』他好像還不大滿意... XD

『去查百科全書一定有....』我說。

過了一陣子,他走過來,我正在做伏地挺身...

『你為什麼要做伏地挺身阿?是為了要排出甲烷嗎?』

XD....

『我們沒有,你才要 ... 』

使用 Emacs 發 Blog ( for Blogger Users )

Blogger 提供了 g-client 這個東西,在 Blogger Buzz 上有篇 g-client 的介紹,你可以掛在 emacs 上,用 emacs 來發文到 Blogger 上。

使用 SVN 的版本會比較好,位置在: http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/

使用 SVN Checkout 回來

$ cd .emacs.d/
$ svn checkout http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/


完成之後記得切進去編譯

$ make && make install

然後到 .emacs 內設定:
;; ===================== G-client
(add-to-list 'load-path "~/.emacs.d/g-client")
(load-library "g")
記得得先安裝 starttls 以及 curl 套件。使用 APT 安裝 starttls , curl :

$ sudo apt-get install starttls curl

發文方式為:
  1. M-x gblogger-blog , 會產生一個頁面
  2. M-x gblogger-new-entry , 可張貼新文章,將上述頁面其中之一要張貼的 Blog 的 postLink 連結複製起來,貼上去之後就可以開始編輯新文章。編輯文章可用 nxml 的套件。
  3. C-c C-c 張貼文章。
相關網址:

2007年8月22日 星期三

前幾天看到這句話,不過我忘了名字:

『 If you hang out with loser , you become loser 』

恩... 所以我是 Loser 嗎?

2007年8月21日 星期二

溝通

我一直覺得我在人際溝通方面開始有點障礙,一方面雖然一直嘗試以頓感將敏感壓制住,但總會使自己特別地不自然。或許倒也不是自己敏感的問題,我總是只把焦點放在自己的目標、自己是否聰明?、自己想學的東西、自己的生活,簡而言之,我就是個自我中心並且無可救藥的呆子。整天只想著跟電腦有關的東西,就連練琴、寫程式、看書,這些事情居然都只是一個人就能參與的活動,當然沒辦法注意到生活週遭其他事物。

雖然,我看起來並沒有忽略他們。

但我卻總是刻意迎合別人,看別人喜歡什麼東西,就聊什麼,就算不能討論,也能多問,而儘量不談關於自己的事物,不太有人想懂的,就算說了大概也沒幾個人會有興趣,因為週遭也太少人懂了,聊古典鋼琴?李斯特?

譬如某次有人問我說 『你最拿手的曲目是什麼呢? 』 我當場猶豫了一下,不過我還是說了:『恩.. 我比較喜歡彈蕭邦、李斯特 ... 』,話沒說完對方就一臉囧樣了,更別說接下去的話題。

我也曾嘗試說些朋友不曾接觸的東西,只不過大家總是興趣缺缺,所以發現情況不對,就得馬上適可而止,情況壞些,表面上可能看起來很 OK ,但是可能會有人在背後嫌你。

或許知識性的東西比較適合寫成文字給人閱讀,因為閱讀是選擇性的,只挑自己有興趣的部份來看即可,或者乾脆不看?

跟一般人相處也許沒這麼難,跟男人聊,就聊女人、汽車、電腦;跟女人聊,就裝甜嘴巴、講笑話、逗他們笑、聊電視劇、電影。只是如果你對這些都厭倦了呢?你願意為了迎合一個人,去看打死你也不想看的小說?改變自己原有的生活方式?一個人也許還好,更多人呢?

人的世界或許沒這麼複雜,只是如果距離普通人共同的事物太遠,就會接不上線罷了。我想,就是別讓自己佔滿了自己的生活,否則懂自己的人,也許最後就只有自己了。

2007年8月20日 星期一

Ubuntu - 中文字型設定

由於我的 Ubuntu 是英語係為主,因此使用 firefox 瀏覽時,遇到 utf-8 編碼的中文網頁,中文往往不能以 AR PL ShenHei Uni 來顯示,而我又想保留預設的 Sans , Serif 做為英文字型,不想在 firefox 內做修改,因此我做了以下修改:

修改 /etc/font/conf.d/65-nonlatin.conf

在 sans , serif 各底下的 prefer 標籤內的第一行加上

<family>AR PL ShanHeiSun Uni</family>

接著執行

$ sudo fc-cache -v

重開 firefox 就見效了。

Blogger

使用 Google 提供的 Blog Service,還是不免有許多缺點,前陣子我跟 Alan 抱怨說 Blogger 的功能限制很多,於是他問我說 『 我覺得已經很夠啦,你覺得 Blogger 還缺些什麼? 』 我一時也答不上話來。

Blogger 在設計上的出發點就是介面簡單為主,避免過度的複雜化,因此設定方面並無太多樣化的選擇。就連發文介面也是簡單的面板,也因此在使用上特別容易上手,只不過對於進階需求的使用者不夠用。想到此,我便想到人月神話一書中也提到系統複雜度的重要性,強大功能的系統,免不了很多東西會被複雜化,也因此會導致使用者不知如何使用,但是 Blogger 卻在複雜中保留了簡單。

Blogger 採取了管理介面簡單化的路線,一個頁面的功能選項不會太多也不會太少。主要的分類就只有三種: Posting , Settings , Template 。Blogger 雖然在介面上簡單,也保留了使用者進階調整的空間,也就是 Blogger 有自己的樣版語言,想在樣版上玩花樣的使用者就可更進一步的閱讀進階的樣版語言,個人化的空間很足夠,而不會將整個介面使用的複雜度提高,我覺得這是 Blogger 做的不錯的地方。

除此之外, Blogger 的特色就是穩定,Blogger 的服務很少停擺的,使用兩三年下來,唯一停擺的一次是我某天半夜一兩點的時候,不過過沒多久就好了。

除了穩定之外,還能有你自己的網域名稱,如 c9s.blogspot.com ,一個 blog 開的不夠多,也可以另外同時開好幾個並行管理。

缺點也是有。速度,blogger 的速度不快不慢,雖然原本的速度就不快了,但是當你樣版上載入的元件 ( widget ) 稍微多了一些,載入速度就會更慢,因為除了伺服端(Blogger)要替你複雜的樣版語言做轉換,此外,其他 widget 也會去外部抓取其他的東西。不過我相信樣版的部份 Blogger 應該是已經有做快取了,雖然如此基本款的樣版載入速度也沒有多快。如果使用過樂多的 Blog Service ,你就會知道靜態網頁在載入速度這方面特優,讓你不覺得你是在替一個龐然大物翻身。

除此之外,意見回應的資訊匯整做的不好,想要知道站上有那些人張貼了最新回應,得自己去掛 Javascript ,或者把 Comment 的 feed 抓來訂閱。但是訂閱 Comment feed 有個缺點,Blogger 只提供最新的五則訂閱項目,而 Comment feed 居然沒有文章標題,只是將回應的內容充當標題欄位使用而已。早期 Blogger 還未提供這個功能,卻是將此功能開放給第三方來開發,譬如說 coComment 的服務;coComment 要掛在 Blogger 上還會有無法適應的症狀,對於一般使用者來說也太過複雜,所以一直在 Blogger Beta 出現之前,這個就是 Blogger 的致命缺點。

Trackback 也是一個缺點,其他類型的 trackback 無法發送出去,只適用於 Blogger 內部的反向連結,也許 Google 是擔心有心使用者利用 Trackback 的機制提高網頁的 Page Rank,不過因此而犧牲此功能,還是有點遺憾。

張貼意見的繁瑣也是個問題,讀者在閱讀時若要張貼意見,則有兩種方式,其一為進入另一張貼意見的頁面,另一則為開啟新視窗張貼意見,此機制主要的目的是為了在張貼意見時可以做安全連線確認使用者,但是一方面速度就被拖慢了,等到確認完使用者身份,頁面還會重新載入一次,若是使用者沒注意到,剛打好的內容可以就會立刻被刷掉。

但整體而言,如果你喜好玩弄 Blog 面板,並且能夠忍受 Blogger 不快不慢的速度,那麼 Blogger 還是好的,主要的一點就是『簡單又複雜』。 :-)

Turkey March Variations - Volodos


這是 Volodos 改編的 Turkey March. 我只能說她真的是太猛了... XD

2007年8月19日 星期日

Carmen Variation - Horowitz


這是 Horowitz 改編的卡門變奏曲。恩... 炫技的東西還是別看太多的好,對身體不好。 XD

emacs g-client testing

Emacs g-client Test!! Cool!

2007年8月18日 星期六

Emacs Muse



Emacs Muse 是什麼?Emacs Muse 隸屬於 GNU Emacs 底下的 Project 之一,是一個類似於 emacs-wiki 的 extension ,不過功能更強大,他提供多種輸出格式,包括 html , latex , info .. 等等。

我使用 Emacs Muse 來做為我的筆記本,你也可以使用他來設計你自己的網頁、文件等等。

1.設置: 先抓 muse 回來

$ cd emacs.d
$ wget http://mwolson.org/static/dist/muse-latest.zip
$ unzip muse-latest.zip


2.編譯

$ cd muse-latest
$ make
$ sudo make install


3.修改 .emacs,新增:
(add-to-list 'load-path "~/.emacs.d/muse-latest/lisp")
(require 'muse-mode) ; load authoring mode
(require 'muse-html) ; load publishing styles I use
(require 'muse-latex)
(require 'muse-texinfo)
(require 'muse-docbook)
(require 'muse-project) ; publish files in projects
(require 'muse-wiki)
(require 'muse-book)

(setq muse-project-alist
'(("Website" ("~/MusePages" :default "index")
(:base "html" :path "~/public_html/muse")
))
)
4.建立資料夾

$ mkdir ~/MusePages
$ mkdir ~/public_html/muse


5.使用

開啟 emacs 之後, M-x muse-project-find-file RET ,接著 RET 就可開始編輯了。詳細的 markup 可參考:
每次要發佈只需要 C-c C-p 即可 publish 到 ~/public_html/muse 去。

相關文章:

Emacs 的行號設定 ( wb-line-number.el )



目前用過沒 bug 的行號顯示是這隻 wb-line-number.el ,設置方式很簡單:

$ cd .emacs.d/
$ wget http://homepage1.nifty.com/blankspace/emacs/wb-line-number.el


接著在 .emacs 內新增:

(set-scroll-bar-mode nil) ; no scroll bar, even in x-window system
(require 'wb-line-number)


要顯示行號時可用 M-x wb-line-number-toggle 。

缺點就是必須把捲軸關掉,否則畫面會挺醜的。

Emacs Note



恩,雖然 Emacs 很難用,可是還是不自覺的就開了 Emacs 來用。 XD 應該是因為還有很多東西可以探索吧!我覺得很有趣 :P

最近用了 snippet.el 和 emacs-wiki.el 這兩個 extension ,兩個都花了我很多時間搞,搞了很久才起來。此外,emacs-wiki 更是一堆 Bug ,不知道是不是因為我使用 22.1 + xft 的關係? 所以又退回去用舊版的 emacs-wiki ,好不容易起來了,又發現 emacs muse 這個更好用的東西,安裝整個順利,一下就能用了。 ( 歡樂 )

其實以上最主要吸引我的原因是可以產生 Wiki 的文件輸出,如此一來編輯靜態網頁就很方便,輸出的品質也不錯,可以參考這裡

此外還裝了 GNU Lisp Compiler ,Emacs 有個特色就是,寫好的 el 檔 ( Emacs LISP 檔 ),可以再對他做編譯的動作,此動作會把 .el 檔編譯成 .elc 檔,是以 byte-code 的方式儲存,這樣似乎有加快 emacs 載入的速度。

順便附上兩個連結:
Planet Lisp
Planet Emacsen

2007年8月17日 星期五

Flickr - 大家的 Emacs

Flickr tag:Emacs

看到這個,funny!



Sacha and Emacs

2007年8月16日 星期四

使用 Emacs 心得

好不容易把 GNU Emacs Manual 翻的差不多了,但覺得有點失望,而且很難用。原本在 Vim 內好用的東西似乎在 GNU Emacs 裡面都沒有,譬如說我常用的 ciw ci( ci{ 這些 Text Object Operator,而這些東西在 Emacs 裡頭,就得靠自己去寫 LISP 來達成,或者抓別人的外掛來用。

在游標移動方面,Emacs 使用的是 Ctrl+f,b,n,p ,距離很遠,和 Vim 的 hjkl 比起來就不是這麼直覺。選取文字區塊方面很容易讓手指打節,因為在 Emacs 裡頭,要用 Ctrl-Shift-2 也就是 ( Ctrl-@ ),在速度上就比 VIM 的大 V 慢很多了..

CC Mode 下,Emacs 不會自動幫你找對應的括號,VIM 則有。

行號在 Emacs 裡頭沒有預設,而使用外掛則有很多問題。

Emacs 沒有程式碼折疊,也是必須去找延伸套件來裝。

即使是在 CC Mode 下,另外提供的編輯功能也很有限,沒有像 VIM 那樣有好用的 Text Object 編輯功能可用。

Emacs 裡頭沒有內建 Tabpage 的功能,也是得另外裝延伸的 LISP 檔才行。( vimpulse.el )

因此裝起 Emacs 之後,自己另外調整、設定就變成非常重要,也因此才有人說,如果你把 .emacs 搞丟了,那你差不多可以不要用了。 XD

timchen 的 Blog 就讀到:
從前有一個喜愛使用emacs的人,
因為他慣用的 .emacs 被人弄丟了,
從此之後就使用了vi.

(註: 這個人的名字叫Tim O'reilly.)
由此可見 .emacs 設定檔案的重要性。

在啟動速度上, Emacs 比 Gvim 慢了些,推測應該是 Emacs 啟動之後才會讀其他 el 檔的關係。

也許是因為我一開始就是 Vim 的重度使用者,所以在使用 Emacs 的時候,非常的不適應,譬如說我常用的 hjkl , ZZ , HML , yy , p , dd 等,在 Emacs 裡頭似乎沒有針對行處理的快捷 ( vim 裡頭的 yy , dd , p ) ,所以也得自己寫 Lisp 才行。 Orz

不過 Emacs 最下方的 Command-Line 挺漂亮的,此外在 Completion 跟指令的及時說明都不錯。

Emacs 雖然在設定上的彈性跟潛力不錯,但是要熟透到比 Vim 好編輯還是得花上許多時間去『開發』自己想要的功能,想到這個就很痛苦,我覺得簡直是在浪費時間了,而且現有輪子用一用可能還會發現現有的輪子怎麼還不太可靠,譬如說 setnu , linum 都有一些 bug ....

對一開始沒用過 vim 的使用者來說 Emacs 應該會比較好上手,因為 Emacs 內編輯修改存檔沒有像 vim 那樣分模式,得用 insert mode 才能輸入,因此使用者可以像使用一般編輯器那樣照平常的方式輸入文字,然後存檔、關檔、開檔等等。

雖然講了這麼多,但其實 Emacs 還是不錯的,只是他給使用者更大的空間可以發揮,更多自由、個人化。譬如說,你可以在裡頭直接寫 LISP ,把許多小功能湊起來變大功能。 ( 這點方面其實與 VIM 非常相似 )

所以想用 Emacs 有個前提,就是你本身對 LISP 相當熟練才行,否則花上一兩個星期調整你的 Emacs 是很有可能的。

許多人可能想到 Emacs vs Vim 可能就會有一場聖戰要開打了吧?我搞不懂幹嘛癡迷到這樣?XD 不過在 wiki 上有個條目 "Editor war" 裡頭就引述了一段宗教似的文章: ( Emacs 的支持者 )
Truly, our responsibility to spread the Gospel of the Gnu is weighty.
Cleave to what is good. Remember the words the prophet Stallman
brought down from the Mount MIT, graved in Lisp on tablets of
crystalline lambda calculus.

Only this true: Emacs is pure.
All else is false.
Do not be misled by false gods like Vi, the Editor of the Beast.
Do not be seduced by Word, the Scarlet Woman of Babylon.
Do not be driven to madness by Xcode, the Blind Priest of the Children of Asherath.

When the wild winds of chaos blow, stay pure.
When the universe collapses in shards around you, stay holy.
When the gibbering hobgoblins of apostate Editors attack with shards
of broken syntax, seek the crystalline stillness within you.

Brethren, ensure that you (Meta-x-say-hallel-to-Emacs) daily for otherwise you will be lost.
When the Beast comes, only Emacs can save you.

This was brought to you as a public service by the Holy and Ineffable Church of The Mighty Emacs.
SUPPORT THIS CRUSADE WITH YOUR DONATIONS. EMAIL THE STILL BEATING
HEART OF A VILE VI USER TO emacs-highpriest@god-hates-vi-users
很有趣吧,這讓我想到...眾阿拉、耶穌信徒彼此之間的聖戰。 XD

An Tutorial Introduction to GNU Emacs
GNU Emacs Lisp Programming Reference
An introduction to programming in Emacs Lisp

The Next Generation of C++

下一代的 C++ , 請看此 C++0x - An Overview

The Design of C++0x [pdf]

A Brief Look at C++0x

嘔吐味的 Beethoven Op13

今天不知怎的,走在路上突然想起 Beethoven Op13 的第二樂章,真好聽,於是吹起口哨來。

回到家就把小貝的 Op13 彈了一下,發覺還是回頭彈彈簡單的東西比較好,比較有成就感,來回彈個兩三遍就起來了,而且我挺喜歡小貝的斷奏和裝飾音。 :P

只是彈著彈著突然有聞到嘔吐味。。。

soda!

然後才想到,這本 Sonata 之前買來就是二手的,該不會是前一任的書主在上面吐了什麼東西吧?!= =

總之,第二樂章的 fu 都被嘔吐味破壞掉了。 XD

2007年8月13日 星期一

Monaco Font


Windows + Gvim + Monaco


Linux + Gvim + Monaco

終於有 Monaco 了,我也忘了在哪載的了,總之找了好久才找到。 總算有取代 MS 的 Consolas 跟 Courier New 等字體的方案了。

偷偷說,我覺得 MS 的 Consolas 根本就是抄 Monaco 的。

# 補: 可在此處下載 Return of Monaco
# Linux 放到 /usr/share/fonts/truetype/ 底下即可。 記得 "fc-cache"

Bash Tips - Command-line editing

Bash 下編輯指令的一些快捷鍵: (Rubout 就是所謂的 Backspace , C for Ctrl , M for Meta (alt or esc) ) , man 一下 bash 就有了,不過列出幾個常用的分享一下。

M-d 往後刪除一個字 ( word )
C-w 往前刪除一個字,或是 M-Rubout 也行。

M-f 往前一個字
M-b 往後一個字

C-u 刪除前面所有字元
C-k 刪除後方所有字元

C-l 清除螢幕

C-r 往前搜尋指令 ( 非常好用 )

C-xC-e 可以使用 vim 寫入 script 讓他一次執行。

2007年8月12日 星期日

Blogger - feed url for specific label

可針對 Blogger 的 Label 送 Feed ,網址是:

http://你的名稱.blogspot.com/feeds/posts/default/-/標籤名稱

譬如:

http://c9s.blogspot.com/feeds/posts/default/-/Linux

建議可由 feedburner 轉,還可得知訂閱人數。此外 Blogger 現在也有提供 Feed 轉向的功能,可以在內部直接轉到 feedburner ,不需要使用者自己轉。 :)

[1] Blogger Help: http://tinyurl.com/3aceuy
[2] Blogger Feed redirect

The Link Today

男人是略施小惠?或是全心投入?

我不是公主,我是老娘! - 原來還有老娘病.. 話說那個誰好像也有? :P

最近

好不容易緩和下來了。最近在進行的計畫是:

1.輸入法革命 ( 拋棄新注音,改用大易 ):

這無疑是非常痛苦的過程,但是,為了要提高打字效率以及準確度,不得不挑選令一種輸入法,不選擇當今最快的無蝦米的原因是因為我想學習一個比較正統、有原則的一點的輸入法,倉頡的碼太多,大多都是 3,4 碼多,大易則在 2,3 碼比較多,速度較快些,不過有些字還是得選就是了。 基本上倉頡與大易的拆字元素都很像,只是大易的字根比較多,連數字鍵上都是... 如你所見每個按鍵上的右下角就是大易的字根,左下角是倉頡的字根。

雖然我這今天才正式開始練習,但學起大易來似乎比倉頡快多了,只是倉頡與大易的字根完全不一樣,還要去聯想一下字根與部首的關係...

此外發現 SCIM 底下的大易輸入法是 dayi3 ,也就是只有三碼,打起來....老實說真的很累,因為選字的量增加了,速度因此變慢。因此我把 SCIM 移除,裝了 GCIN,果真好多,打起大易來比較順。

然後還順便寫了個大易輸入法字根查詢,但是我想可能慢慢上手之後就用不到了吧,因為大易的拆字挺好拆的,因為大易是以 "筆劃","筆型" 做為拆字的根據。

2.GNU Emacs + GNU Texinfo:

用 GNU Emacs 的原因主要是因為 Emacs 提供了一些 GNU Texinfo 好用的功能,像是更新選單項目之累的。另外,本來就想嘗試看看 RMS 開發的這套編輯器。

Ubuntu 上的似乎還是在 21 版,所以要用 cvs 去抓來裝,另外也要開啟 xft 支援,裝完之後還得設定 color theme 才會好看。

不過 emacs 似乎沒有預設顯示行號的功能,還得要另外塞 lisp 的 script 進去,有 setnu , linum 等等,只不過好像都沒有很完善的方案,譬如說 linum 似乎沒辦法在 .emacs 裡頭設定直接開啟行號,他必須等檔案載入之後才能夠啟動行號的功能...

但基本上設定完的 emacs 還挺不錯看的,有些功能也不錯,如果用不上手還可以設定 viper ,把 emacs 當作 vi 使用。 :P

3.Finish reading "Modern Compiler Design":

然後就是要繼續完成 Compiler 的大業了,這本書還在以龜速進行中,但為了還要讀 Advanced Compiler Design ( MIT Press ) 所以我這本一定得讀完才行,讀完就順便寫個心得好了。

4.Rachmaninoff:

最近練的就是拉先生的 Piano Concerto No2 跟一首 Prelude。

2007年8月11日 星期六

Ubuntu - Emacs Colortheme





原來我漏看了東西,以為只要把 colortheme.el 等檔案放到 ~/.emacs.d/ 裡頭就可以了,沒想到 Debian/Ubuntu 底下是沒辦法這樣用,要自己新增 loadpath,EmacsWiki 如是說:
The directory ~/.emacs.d/ is a standard location for your own configuration files, your own developments, or external third-party modes, but is not shipped by the operating system distributor--Debian for example--in contrast with what configurations are allowed to a user’s DotEmacs.
設定 loadpath 的方法為,請編輯 ~/.emacs ,並新增下列設定:

(add-to-list 'load-path (expand-file-name "~/.emacs.d/"))

這樣在 Debian/Ubuntu 上也可以使用 ~/.emacs.d/ 為 loadpath 了。接下來設定 colortheme ,到 http://download.gna.org/color-theme/ 下載,接著把 color-theme.elthemes 資料夾搬到 ~/.emacs.d/:

$ wget http://download.gna.org/color-theme/color-theme-6.6.0.tar.gz
$ tar xvf color-theme-6.6.0.tar.gz
$ cd color-theme-6.6.0
$ mv color-theme.el themes ~/.emacs.d/


接著 ~/.emacs 也請加上:

(require 'color-theme)
(color-theme-initialize)

接著 M-x color-theme-select 就可以選了,有喜歡的就在 ~/.emacs 內新增,譬如:

(color-theme-midnight)

重開完工。 Orz

[1] http://www.emacswiki.org/cgi-bin/wiki?ColorTheme
[2] http://www.emacswiki.org/cgi-bin/wiki/DotEmacsDotD#.emacs.d

2007年8月10日 星期五

Vim + Slippery Snippet - Installer

之前有寫過 Vim + Slippery Snippet Plugin 的安裝,如果懶得 Step-by-Step 的使用者可以使用 script 安裝 ( for Ubuntu/Debian Users ) :

$ wget http://c9s.lya.googlepages.com/install-vim-snippet
$ sudo bash install-vim-snippet


這樣就裝完了。 :)

Visual Basic 最高! / AudreyT

Visual Basic 最高! (audio) (video)
不過 video的部份,Internet Archive 收錄不是很完整
external: YAPC ( internet archive )

2007年8月9日 星期四

跨平台的 Vimrc

如此一來,這樣不管在 windows , linux 都能共用同一套 vimrc 了,使用 has 來判斷 vim 提供的功能。如果還有其他系統要判斷的話,可查看 `:h feature-list` 這張清單來使用。可參考我的用法:
if has("win32")
" Win32 Platform Options ( 給 windows 用 )

" set runtime path for textmate-like plugin
set runtimepath+=$VIM\vimfiles\textmate\after
set runtimepath+=$VIM\vimfiles\textmate\

" set ctags path
let Tlist_Ctags_Cmd = $VIMRUNTIME . '/ctags/ctags.exe'

elseif has("dos32")
" Dos32

elseif has("beos")
" BeOS ...
" do something

else
" Other Platform

" set runtime path for textmate-like plugin
set runtimepath+=~/.vim/plugin/textmateOnly
set runtimepath+=~/.vim/plugin/textmateOnly/after
" set path for C++ header
set path+=/usr/include/c++/4.1.2/
endif

Vim - My key mapping for tabs

augroup Tabs
"開新分頁
nmap ,tn :tabnew<cr>
"開新分頁並編輯檔案
nmap ,te :tabedit
"開新分頁瀏覽目前目錄
nmap ,tx :tabedit .<cr>
"跳到第一個分頁
nmap ,tf :tabfirst<cr>
"跳到最後一個分頁
nmap ,tl :tablast<cr>
"以分頁開啟說明
nmap ,th :tab help<cr>
augroup END

FlickrViewer

FlickrViewer ,用 Php 去 Parse Flickr 上的相簿,輸出 XML 給 SimpleViewer 顯示。

可點這裡看效果

2007年8月8日 星期三

Subversion + SSH with Non-standard port

Subversion 若開啟 tunnel mode

$ svnserv -t

則使用

$ svn co svn+ssh://hostname/path/to/repo

但若是 ssh 使用非預設的 Port 22,譬如說 1234 ,則得編輯 ~/.subversion/config,找到 [tunnels] 的部份,新增下面這行

foo = /usr/bin/ssh -p 1234

使用 svn 時則將 scheme 的 ssh 改為 foo 即可:

$ svn co svn+foo://hostname/path/to/repo

另外發現開 svnserve 時,似乎指定 root 無效,也就是 -r /home/svnrepo 無效,所以得用:

$ svn co svn+foo://hostname/home/svnrepo/repo1

Elgar , Sonata for Violin & Piano , Opus 82


整個很感人的一首。 (也是交響情人夢(動畫) 中野田妹在千秋家中與千秋合奏的那首。)

殭屍夢

夢到殭屍,好像要參加殭屍世界的某比賽,結果殭屍突然走進來,發現我的指甲是假的,於是睜大雙眼對我說『你是假的!』,伸出雙手請我把殭屍帽摘下來給他....然後他就走了 XDDD
你知道被騙又被羞辱的感覺是什麼嗎?

我應該要笑著說我沒事嗎?

事後給糖這樣嗎?噢,來~小朋友乖,沒事了
這樣真的就沒事了嗎?

如此一般,我該如何相信你(們) ?

噢,我才發現我實在是太愚蠢了,蠢到毫不懷疑別人所說的話。

2007年8月6日 星期一

Rachmaninoff Etude Op39 Nr6



此曲為 Rachmaninoff 的練習曲 Opus 39 No 6,光看此曲就知道 Rachmaninoff 的練習曲有多變態了。

Valentina Lisitsa 是位傑出的女鋼琴家,在她的官方網站上可試聽更多他的錄音,此外她錄製了全套 Chopin Etude 的 DVD 也不錯。 她還演奏了不少高難度的曲目,像是 Liszt Reminiscences de Don Juan。

此外,Rachmaninoff 練習曲彈的不錯的,具我所知還有 Nikolai Lugansky 。

Perl 6 Today / Audrey Tang

好教養,看父母就知道

Quoted from: 好教養,看父母就知道
最近有一個研究發現,養成孩子良好行為最重要的因素不是管教得嚴不嚴,反而是父母參與孩子生活的程度,不參與孩子生活的父母最會體罰,孩子將來的問題也最多。

Vim 學習地圖

很多 Vim 新手很容易在 Vim 的 Documentation 中暈倒,我想英文大概是許多人無法跨越那條瓶頸的原因,於是我想應該畫個地圖,這樣可以方便各種需求的使用者閱讀。

在這裡分享一下學習技巧,你可以準備一張卡片,然後畫個表格,照你的紀錄方式把看過的、覺得有用的技巧紀錄在上面,並記得分清楚各種模式,使用 Vim 時,如果忘記,就能夠很方便的查看、使用,整理完,這就是你的 Reference Card 了,你可以再整理的更漂亮,甚至拿去護貝。

首先,關於 Vim 的基礎可以在李果正長輩整理的中文教學 大家來學 Vim 開始。官方的英文文件可參閱線上的 Vim Documentation,或是在 Vim 內輸入 :help 進入教學文件,或者開分頁進文件 :tab help 。

一般使用者: 只是用 vim 來修改一些普通的文字檔而已,所以針對最基本的需求,可只看 usr_02.txt 就足夠,此章節提供最基礎的技巧 ( 開檔、寫檔、插入文字、復原、重作 ),但不會提供快速、方便的方法。

繼續往下看的朋友則需要瞭解如何設定基本的 vimrc 檔,參閱: usr_05.txt

另外可參閱一些 vimrc 的說明,如: vimrc 常用設定(問答) , vim 的環境設定 ( vimrc )

進階的 vimrc 設定,如:
有耐心、有閒,想要徹底瞭解 Vim 的使用者: 可以從 usr_01.txt 讀到 usr_45.txt ,還可以把 Basic Editing 、 Advanced Editing 等等全部讀完 ...............

用 Vim 寫程式的使用者: 除了基礎章節外,可參閱 tips.txt 內的 C-editing 章節,此章節提供許多寫 C 程式的秘訣,譬如 找尋變數定義、縮排、編譯、自動完成等等技巧。相關之章節 usr_29.txt , usr_30.txt

給不知道從哪看起的朋友,或是只想挑重點看的朋友

基本技巧:
  1. 若是想要在移動、換頁、修改速度上提昇,可參見 usr_03.txt , usr_04.txt , motion.txt
  2. Vim 提供各種在輸入文字方便的功能,像是內建快捷、自動補齊、複製等,可參見 usr_24.txt , insert.txt , change.txt
  3. 選取區塊、字串等技巧,可參見 visual.txt
  4. 自訂快速鍵: map.txt
  5. 搜尋功能: usr_27.txt
進階技巧: ( 依照實用性排列 )
  1. 分頁功能參見: tabpage.txt
  2. 開啟多個視窗: usr_08.txt , windows.txt
  3. 標籤( Tag )功能: tagsrch.txt
  4. 折疊功能,參見: usr_28.txt , fold.txt
  5. 強大的樣式比對: pattern.txt
  6. 想瞭解更多的設定,參見: options.txt
更細節、進階的東西在此就不說明了。