Something In The Air

Call out the instigators
Because there’s something in the air
We’ve got to get together sooner or later
Because the revolution’s here, and you know it’s right
And you know that it’s right

We have got to get it together
We have got to get it together now

Lock up the streets and houses
Because there’s something in the air
We’ve got to get together sooner or later
Because the revolution’s here, and you know it’s right
And you know that it’s right

We have got to get it together
We have got to get it together now

Hand out the arms and ammo
We’re going to blast our way through here
We’ve got to get together sooner or later
Because the revolution’s here, and you know it’s right
And you know that it’s right

We have got to get it together
We have got to get it together
Now

by Thunderclap Newman

22 八月, 2008 at 10:36 上午 發表留言

I Finally Found Someone

I finally found someone, that knocks me off my feet
I finally found the one, that makes me feel complete
We started over coffee, we started out as friends
It’s funny how from simple things, the best things begin

This time it’s different, dah dah dah dah
It’s all because of you, dah dah dah dah
It’s better than it’s ever been
Cause we can talk it through
Oohh, my favorite line was “Can I call you sometime?"
It’s all you had to say to take my breath away

This is it, oh, I finally found someone
Someone to share my life
I finally found the one, to be with every night
Cause whatever I do, it’s just got to be you
My life has just begun
I finally found someone, ooh, someone
I finally found someone, oooh

Did I keep you waiting, I didn’t mind
I apologize, baby, that’s fine
I would wait forever just to know you were mine
And I love your hair, sure it looks fine
I love what you wear, isn’t it the time?
You’re exceptional, I can’t wait for the rest of my life

Whatever I do, it’s just got to be you
My life has just begun
I finally found someone

by Barbara Streisand & Bryan Adams

22 八月, 2008 at 10:35 上午 發表留言

感性の文字

最美的不是下雨天 是曾與你躲過雨的屋簷
歌詞《不能說的秘密》 作詞:方文山



你 + 壓力 – 身段 x 堅強 ÷ 任性
換算之後 你是否還記得真實的自己

你 + 包容 – 習慣 x 責任 ÷ 自由
換算之後 你是否還記得真實的自己
廣告《2008 Ford New Mondeo》

千言萬語的歌頌是幸福
耳邊一句輕聲低語是奢華的幸福

另一半愛你的可愛是幸福
另一半愛你的不可愛是奢華的幸福

為了理想往前衝是幸福
為了所愛往後退是奢華的幸福

100朵玫瑰在你腳邊是幸福
一朵玫瑰在你手中綻放是奢華的幸福

什麼都有是幸福
什麼都不缺是奢華的幸福

超越別人是幸福
超越自己是奢華的幸福

一個人的自由是幸福
兩個人的束縛是奢華的幸福

陪孩子上課是幸福
陪孩子翹課是奢華的幸福

送小孩禮物是幸福
小孩送你禮物是奢華的幸福

懂得掌握速度是幸福
懂得放慢心情是奢華的幸福

省下時間是幸福
多出自由是奢華的幸福

縮短坐車的時間是幸福
拉近和家人的距離是奢華的幸福

懂得閱讀別人的故事是幸福
懂得閱讀自己的人生是奢華的幸福

有人陪你等車是幸福
有人陪你回家是奢華的幸福

有車是幸福
有人幫你開車是奢華的幸福

趕上公車是幸福
趕上多年前錯過的那個人是奢華的幸福
廣告《CHIMEI 新奢華幸福》

再忙,也要和你喝杯咖啡。
廣告《雀巢咖啡》

生命,就該浪費在美好的事物上
廣告《曼仕德咖啡》

你在哪裡?我在想妳。
妳在哪裡?我在你心裡。
廣告《點睛品金飾》


如果我不在家,就是在咖啡館;
如果不在咖啡館,就在往咖啡館路上。
奧地利詩人 Peter Altenberg

世上最遙遠的距離,
不是生與死的距離,
不是天各一方,
而是我就站在你面前,
你卻不知道我愛你。
小說《荷包裡的單人床》 作者:張小嫻

15 七月, 2008 at 10:35 上午 發表留言

小惡魔的電腦教室 :: 電腦零組件教學

http://www.mobile01.com/topicdetail.php?f=174&t=356805&last=4674580

Mobile01 達人撰寫的用心教學,圖文並茂的初學者好文!


0.綜觀電腦內部,零組件超入門解說

1-1.認識CPU
1-2.看懂CPU規格,外頻、倍頻、快取
1-3.CPU進階技術講解,XD、VT、SSE在幹嘛
1-4.CPU廠牌與型號,Intel與AMD的戰爭
1-5.CPU監控軟體,時脈、溫度、省電控制
1-6.CPU測試軟體,看CPU沒事幹真討厭

2-1.認識主機板
2-2.界線模糊的北橋和南橋
2-3.主機板監控軟體
2-4.主機板測試軟體,瞭解電腦整體效能

3-1.認識記憶體,時脈和時序的意義
3-2.記憶體種類,DDR1-2-3
3-3.記憶體相關軟體(Ramdisk、測試)

4-1.認識顯示卡
4-2.顯示卡規格解說,附帶該死的3D圖學
4-3.顯示卡影片播放硬體加速,作法原理完全解說
4-4.顯示卡驅動程式,常保更新才有最佳效能
4-5.顯示卡測試軟體,山豬馬克賽豬公大會

5-1.認識硬碟、RAID和SSD
5-2.認識光碟/燒錄機
5-3.認識Power

6-1.什麼配備適合我?實戰電腦組裝
6-2.基礎故障排除,不要再給我嗶嗶嗶了!
6-3.BIOS調整,晉陞高手第一步(細分5~8篇)
6-4.嫌硬碟太大不好管嗎?磁區分割的概念和技巧
6-5.安裝作業系統
6-6.開機與MBR的概念,挑戰多重開機

7-1.CPU與記憶體的超頻,小超怡情,大超傷身
7-2.顯示卡超頻,山豬暴走記
7-3.散熱與對流,零組件耍冷

10 七月, 2008 at 11:26 上午 發表留言

Firefox 套件列表

Download Statusbar
將下載檔案的工作進度列於瀏覽器視窗下方,操作上比預設的「下載管理員」方便很多

IE Tab
遇到某些只相容於 IE only 的網頁,格式錯亂無法正常瀏覽內容時,可切換成 IE 核心來瀏覽這個網頁

Nuke Anything Enhanced
可將網頁畫面中不想看到的文字段落、圖片、討厭的廣告元件暫時移除

OpenSearchFox
可以讓你自製右上角區域的快速搜尋引擎,譬如 Google Maps 或維基百科等

PCMan Plug-in
可以讓 Firefox 開啟 telnet 連線,來上 BBS 站或連線到遠端伺服器主機

Pearl Crescent Page Saver Basic
如果看到某個不錯的網頁畫面想存起來,這個套件可以幫你擷取整個網頁存成圖片,非常好用的功能

Right Encoding
若遇到網頁內容變成亂碼時,可直接按右鍵顯示選單來切換回正確的語系設定

Save Session
可以讓你保留目前沒看完的幾個分頁,下次開啟 Firefox 時自動幫你開啟這些分頁繼續瀏覽

Split Browser
可以用水平/垂直並排的方式在視窗中檢視比對數個網頁畫面

Stop Autoplay
可以幫你阻擋掉某些網頁的自動播放音樂

Super DragAndGo
可直接選取網頁中未設定超連結的網址文字,直接拖曳放開後便自動開啟網頁;
或是選取某些關鍵字,直接拖曳放開後便自動開新分頁自動搜尋

Tab Mix Plus
可將 Firefox 預設的基本分頁功能作進階的操作設定,例如在分頁標籤上點兩下左鍵直接關閉分頁

Tag Catalog
開啟了多個分頁的時候,可以讓你用圖形目錄的方式檢視目前所有分頁的縮圖並選擇切換

新同文堂
遇到簡體中文網頁的時候,可以幫你將簡體字轉為繁體字
也可設定為自動轉換,只要遇到簡體中文網頁 Firefox 便自動轉成繁體顯示

(繼續閱讀…)

28 四月, 2008 at 4:13 下午 1 則迴響

好用軟體列表

Antivirus
AVG Anti-Virus Free Edition 免費;輕巧好用、不佔系統資源
Avira AntiVir Personal 免費;跟 AVG Anti-Virus 一樣的好物,但自動更新病毒碼時會跳出廣告視窗


Development
Code::Blocks 免費;功能齊全的 C++ IDE 開發環境
Source Insight Trace code 的好幫手
UltraEdit 經典老牌的好用程式編輯器
VMware Server 免費虛擬電腦工具,利用虛擬環境作開發、測試非常方便

Multimedia
Easy CD-DA Extractor 可將 APE 映像檔轉出為 MP3 檔案
K-Lite Codec Pack 免費;各類影音解碼套裝包
KMPlayer 免費;好用美觀的影音播放器
WinAVI iPod/PSP/3GP/MP4 Video Converter 可將各種影音檔案轉為手機支援的檔案格式
Winamp Full 免費;經典老牌 MP3 player
XnView 免費;輕巧好用的看圖軟體,有了這個誰還會想用版本愈新愈肥的 ACDSee
音樂轉檔精靈 免費;各種音樂檔案格式轉換

Network
CuteFTP 經典老牌 FTP 下載工具,好用的介面用久了已經習慣了
DU Meter 可用來監看電腦的網路進出流量
Firefox 免費;符合 W3C 網頁標準且可自訂各種好用的外掛套件增加功能,有了這個誰還會想用萬惡的 IE
Orbit Downloader 免費;新一代下載加速軟體,新增 P2P 加速下載功能,也可下載網頁中的 Youtube, Flash 影片
PuTTY 免費;用來 Telnet、SSH 連線遠端主機的好物
SmartFTP 免費;操作介面類似 CuteFTP
Thunderbird 免費;有許多好用功能的郵件軟體,有了這個誰還會想用破爛的 Outlook Express
uTorrent 免費;輕巧好用的 BT 下載軟體,有了這個誰還會想用龜速的 BitComet
WGet 免費;方便好用的無名相簿(正妹限定)下載工具,真是居家旅遊、殺人滅火、必備良藥…
WinSCP 免費;Windows 環境下的 SCP、SFTP 工具
Wireshark 免費;網路封包分析工具,前身就是口碑良好的 Ethereal

PDF
PDF Password Remover 可將加密無法編輯、複製文字的 PDF 文件密碼清除
PDF XChange Viewer 免費;好用多功能的 PDF 閱讀程式,有了這個誰還會想用龜速的 Adobe Acrobat Reader
Solid Converter PDF Professional 簡單易用,可將 PDF 檔轉成 Word 檔

System
7-Zip 免費;壓縮率也比 WinRAR 好,有了這個誰還會想用要付費註冊的 WinRAR
CCleaner 免費;可清除殘留在系統中無用的 Windows 登錄檔、暫存檔
System Info 可用來察看電腦中各項軟體、硬體、網路設定的好物
Unlocker 免費;可以解除某些暫時被系統鎖定而無法刪除的檔案

Other
Alcohol 52% 免費;虛擬光碟工具
CDBurnerXP 免費;CD/DVD 燒錄工具;有了這個可以替代要付費註冊的 Nero
Lingoes Translator 免費;有了這個可以替代要付費註冊的 Dr. eye
StickyPad 免費; 簡單易用的桌面便利貼
WinISO 可將開編輯光碟映像檔的工具
xplorer2 Lite 免費;可多視窗瀏覽、功能超多的超級檔案總管

24 四月, 2008 at 4:55 下午 1 則迴響

用 Open Source 工具開發軟體

http://www.study-area.org/cyril/opentools/opentools/book1.html

雖然時間有點久了,不過介紹說明的 Open Source 開發工具都是經典!

21 四月, 2008 at 3:39 下午 發表留言

C 語言新手十誡

The Ten Commandments for Newbie C Programmers
by Khoguan Phuann

請注意:

(1) 本篇旨在提醒新手,避免初學常犯的錯誤(其實老手也常犯:-Q)。但不能取代完整的學習,請自己好好研讀一兩本 C 語言的好書,並多多實作練習。

(2) 強烈建議新手先看過此文再發問,你的問題極可能此文已經提出並解答了。

(3) 以下所舉的錯誤例子如果在你的電腦上印出和正確例子相同的結果,那只是不足為恃的一時僥倖。

(4) 不守十誡者,輕則執行結果的輸出數據錯誤,或是程式當掉,重則引爆核彈、毀滅地球(如果你的 C 程式是用來控制核彈發射器的話)。

一、你不可以使用尚未給予適當初值的變數。

錯誤例子:
int accumulate(int max) /* 從 1 累加到 max,傳回結果 */
{
int sum; /* 未給予初值的區域變數,其內容值是垃圾 */
int num;
for (num = 1; num <= max; num++) {
sum += num;
}
return sum;
}

正確例子:
int accumulate(int max)
{
int sum = 0; /* 正確的賦予適當的初值 */
int num;
for (num = 1; num <= max; num++) {
sum += num;
}
return sum;
}

二、你不可以存取超過陣列既定範圍的空間。

錯誤例子:
int str[5];
int i;
for (i = 0; i <= 5; i++) str[i] = i;

正確例子:
int str[5];
int i;
for (i = 0; i < 5; i++) str[i] = i;

說明:宣告陣列時,所給的陣列元素個數值如果是 N, 那麼我們在後面
透過 [索引值] 存取其元素時,所能使用的索引值範圍是從 0 到 N-1,
也就是 C 和 C++ 的陣列元素是從第 0 個開始算起,最後一個元素的
索引值是 N-1, 不是 N。

C/C++ 為了執行效率,並不會自動檢查陣列索引值是否超過陣列邊界,
我們要自己寫程式來確保不會越界。一旦越界,將導致無法預期的後果。

三、你不可以提取(dereference)不知指向何方的指標(包含 null 指標)。

錯誤例子:
char *pc1; /* 未給予初值,不知指向何方 */
char *pc2 = 0; /* pc2 起始化為 null pointer */
*pc1 = ‘a’; /* 將 ‘a’ 寫到不知何方,錯誤 */
*pc2 = ‘b’; /* 將 ‘b’ 寫到「位址0」,錯誤 */

正確例子:
char c; /* c 的內容尚未起始化 */
char *pc1 = &c; /* pc1 指向字元變數 c */

/* 動態分配 10 個 char(其值未定),並將第一個char的位址賦值給 pc2 */
char *pc2 = (char *)malloc(10);
*pc1 = ‘a’; /* c 的內容變為 ‘a’ */
pc2[0] = ‘b’; /* 動態配置來的第 0 個字元,內容變為 ‘b’
/* 最後記得 free() 掉 malloc() 所分配的空間 */
free(pc2);

說明:指標變數必需先指向某個明確的東西(object),才能進行操作。

四、你不可以將字串常數賦值(assign)給 char* 變數,然後透過該變數改寫字串的內容(只能讀不能寫)。

錯誤例子:
char *pc = “john"
*pc = ‘J’;
printf(“Hello, %s\n", pc);

正確例子:
char pc[] = “john"
*pc = ‘J’; /* 或 pc[0] = ‘J’; */
printf(“Hello, %s\n", pc);

說明:字串常數的內容是唯讀的。上面的錯誤例子,是將其內容所在的位址賦
值給字元指標 pc, 我們透過指標只可以去讀該字串常數的內容,而不應該做
寫入的動作。而正確例子,則是另外宣告一個獨立的字元陣列,它的大小我們
未明文指定([]),編譯器會自動將其設為剛好可以容納後面的字串常數起始
值的大小,包括字串後面隱含的 " 字元,並將字串常數的內容複製到字元
陣列中,因此可以自由的對該字元陣列的內容進行讀和寫。

錯誤例子(2):
char *s1 = “Hello, "
char *s2 = “world!"
/* strcat() 不會另行配置空間,只會將資料附加到 s1 所指唯讀字串的後面,
造成寫入到程式無權碰觸的記憶體空間 */
char *s3 = strcat(s1, s2);

正確例子(2):
/* s1 宣告成陣列,並保留足夠空間存放後續要附加的內容 */
char s1[20] = “Hello, "
char *s2 = “world!"
/* 因為 strcat() 的返回值等於第一個參數值,所以 s3 就不需要了 */
strcat(s1, s2);

五、你不可以對尚未分配所指空間的 char* 變數,進行(字串)陣列的相關操作。其他型別的指標亦然。

錯誤例子:
char *name; /* name 尚未指向有效的空間 */
printf(“Your name, please: “);
gets(name);
printf(“Hello, %s\n", name);

正確例子(1):
/* 如果編譯期就能決定字串的最大空間,那就不要宣告成 char* 改用 char[] */
char name[21]; /* 字串最長 20 個字元,另加一個 " */
printf(“Your name, please: “);
gets(name);
printf(“Hello, %s\n", name);

正確例子(2):
/* 若是在執行時期才能決定字串的最大空間,則需利用 malloc() 函式來動態
分配空間 */

size_t length;
char *name;
printf(“請輸入字串的最大長度(含null字元): “);
scanf(“%u", &length);
name = (char *)malloc(length);
printf(“Your name, please: “);
scanf(“%s", name);
printf(“Hello, %s\n", name);
/* 最後記得 free() 掉 malloc() 所分配的空間 */
free(name);

注意:上例用 gets() 或 scanf() 來讀入字串,是不安全的。 因為這些函式
不會幫我們檢查使用者所輸入的字串長度是否超過我們所分配的 buffer 空間,
很可能會發生 buffer overflow。比較安全的做法是用 fgets() 來取代。如:

char *p;
char name[21];
printf(“Your name, please: “);
fgets(name, sizeof(name), stdin);
/* fgets()會連行末的’\n’也讀進字串中,所以要找出存入’\n’的位置,填入 "
if ((p = strchr(name, ‘\n’)) != NULL)
*p = “;
printf(“Hello, %s\n", name);

六、你不可以在函式中回傳一個指向區域性自動變數的指標。否則,會得到垃圾值。
[感謝 gocpp 網友提供程式例子]

錯誤例子:
char *getstr(char *name)
{
char buf[30] = “hello, " /*將字串常數"hello, “的內容複製到buf陣列*/
strcat(buf, name);
return buf;
}

說明:區域性自動變數,將會在離開該區域時(本例中就是從getstr函式返回時)
被消滅,因此呼叫端得到的指標所指的字串內容就失效了。【不過,倒是可以從
函式中直接傳回字串常數,賦值給呼叫端的一個 const char * 變數,它既是唯
讀的(參見第四誡),同時也具有恒常的儲存期(static storage duration),其
內容將一直有效。】

正確例子:
void getstr(char buf[], int buflen, char const *name)
{
char const s[] = “hello, "
assert(strlen(s) + strlen(name) < buflen);

strcpy(buf, s);
strcat(buf, name);
}

[針對字串操作,C++提供了更方便安全的 string class, 能用就盡量用]
#include <string>
using std::string;

string getstr(string const &name)
{
return string(“hello, “) += name;
}

七、你不可以只做 malloc(), 而不做相應的 free(). 否則會造成記憶體漏失。

但若不是用 malloc() 所得到的記憶體,則不可以 free()。已經 free()了
所指記憶體的指標,在它指向另一塊有效的動態分配得來的空間之前,不可
以再被 free(),也不可以提取(dereference)這個指標。

[C++] 你不可以只做 new, 而不做相應的 delete.

八、你不可以在數值運算、賦值或比較中隨意混用不同型別的數值,而不謹慎考慮數值型別轉換可能帶來的「意外驚喜」(錯愕)。必須隨時注意數值運算的結果,其範圍是否會超出變數的型別。

錯誤例子(1):
unsigned int sum = 2000000000 + 2000000000; /* 20 億 */
double f = 10 / 3;

正確例子(1):
/* 全部都用 unsigned int, 注意數字後面的 u, 大寫 U 也成 */
unsigned int sum = 2000000000u + 2000000000u;

/* 或是用顯式的轉型 */
unsigned int sum = (unsigned int)2000000000 + 2000000000;

double f = 10.0 / 3.0;

說明:在目前最普遍的32位元PC作業平台上,整數常數2000000000的型別為
signed int(簡寫為 int),相加後,其結果仍為 int, 但是 signed int
放不下 4000000000, 造成算術溢位(arithmetic overflow),很可能無法
將正確的值指派給 unsigned int sum,縱使 unsigned int 放得下4000000000
的數值。注意:寫成

unsigned int sum = (unsigned int)(2000000000 + 2000000000);

也是不對的。

例子(2):(感謝 sekya 網友提供)
unsigned char a = 0x80;
char b = 0x80; /* implementation-defined result */
if( a == 0x80 ) { /* 恒真 */
printf( “a ok\n" );
if( b == 0x80 ) { /* 不一定恒真 */
printf( “b ok\n" );
}

說明:在將 char 型別定義為範圍從 -128 至 +127 的系統上,int 0x80
(其值等於 +128)要轉成 char 會放不下,會產生編譯器自行定義的值。
這樣的程式就不具可移植性了。

九、你不可以在一個運算式(expression)中,對一個基本型態的變數修改其值超過一次以上。否則,將導致未定義的行為(undefined behavior)。

錯誤例子:
int i = 7;
int j = ++i + i++;

正確例子:
int i = 7;
int j = ++i;
j += i++;

你也不可以在一個運算式(expression)中,對一個基本型態的變數修改其值,
而且還在同一個式子的其他地方為了其他目的而存取該變數的值。(其他目的,
是指不是為了計算這個變數的新值的目的)。否則,將導致未定義的行為。

錯誤例子:
int arr[5];
int i = 0;
arr[i] = i++;

正確例子:
int arr[5];
int i = 0;
arr[i] = i;
i++;

[C++程式]
錯誤例子:
int i = 10;
cout << i << “==" << i++;

正確例子:
int i = 10;
cout << i << “=="
cout << i++;

十、你不可以在macro的定義中,不為它的參數個別加上括號。

錯誤例子:
#include <stdio.h>
#define SQUARE(x) (x * x)
int main()
{
printf(“%d\n", SQUARE(10-5));
return 0;
}

正確例子:
#include <stdio.h>
#define SQUARE(x) ((x) * (x))
int main()
{
printf(“%d\n", SQUARE(10-5));
return 0;
}

說明:如果是用 C++, 請多多利用 inline function 來取代上述的 macro,
以免除 macro 定義的種種危險性。如:

inline int square(int x) { return x * x; }

macro 定義出的「偽函式」至少缺乏下列數項函式本有的能力:

(1) 無法進行參數型別的檢查。
(2) 無法遞迴呼叫。
(3) 無法用 & 加在 macro name 之前,取得函式位址。
(4) 呼叫時往往不能使用具有 side effect 的引數。例如:

錯誤例子:(感謝 yaca 網友提供)
#define MACRO(x) (((x) * (x)) – ((x) * (x)))
int main()
{
int x = 3;
printf(“%d\n", MACRO(++x));
return 0;
}

MACRO(++x) 展開來後變成 (((++x) * (++x)) – ((++x) * (++x)))
違反了第九誡。在 gcc 4.3.3 下的結果是 -24, 在 vc++ 下是 0.

後記:從「古時候」流傳下來一篇文章

“The Ten Commandments for C Programmers"(Annotated Edition)
by Henry Spencer
http://www.lysator.liu.se/c/ten-commandments.html

一方面它不是針對 C 的初學者,一方面它特意模仿中古英文聖經的用語,寫得文謅謅。所以我現在另外寫了這篇,希望能涵蓋最重要的觀念以及初學甚至老手最易犯的錯誤。

作者:潘科元(Khoguan Phuann) (c)2005. 感謝 ptt.cc BBS 的 C_and_CPP看板眾多網友提供寶貴意見及程式實例。

Forward from PTT – C_and_CPP 板

15 四月, 2008 at 10:59 上午 發表留言

fopen( ) 檔案存取模式

存取模式 代碼 說明
讀取資料 r 開啟一個只可以讀取資料的檔案。
如果檔案不存在,則fopen( )開檔失敗,無法執行。
寫入資料 w 開啟一個只可以寫入資料的檔案。
如果檔案已存在,則該檔案的內容將被覆蓋掉。
如果檔案不存在,則系統會自行建立此檔案。
附加於檔案之後 a 開啟一個檔案,將資料寫入檔案的末端。
如果檔案不存在,則系統會自行建立此檔案。
寫入舊檔 r+ 開啟一個可以讀取與寫入資料的已存在檔案。
如果檔案不存在,則fopen( )開檔失敗,無法執行。
新檔讀寫 w+ 開啟一個可以讀取與寫入資料的新檔案。
如果檔案已存在,檔案的內容將被覆蓋掉。
如果檔案不存在,系統會自行建立檔案。
讀取與附加 a+ 開啟一個可以讀取或附加資料的檔案。
如果檔案不存在,系統會自行建立此檔案。
二進位檔讀取 rb 開啟一個僅供讀取資料的二進位檔案。
二進位檔寫入 wb 開啟一個僅供寫入資料的二進位檔案。
二進位檔附加 ab 開啟一個僅供附加資料的二進位檔案。

11 四月, 2008 at 5:55 下午 發表留言

Tears In Heaven

Would you know my name ?
If I saw you in heaven
Would it be the same ?
If I saw you in heaven
I must be strong and carry on
Cause I know I don’t belong here in heaven

Would you hold my hand ?
If I saw you in heaven
Would you help me stand ?
If I saw you in heaven
I’ll find my way through night and day
Cause I know I just can’t stay here in heaven

Time can bring you down
Time can bend your knees
Time can break your heart
Have you begging please, begging please

Beyond the door there’s peace I’m sure
And I know there’ll be no more tears in heaven

by Eric Clapton

11 四月, 2008 at 4:59 下午 發表留言

Older Posts


五月 2024
 12345
6789101112
13141516171819
20212223242526
2728293031