20 September, 2009

落葉歸根

在公視看到林志炫演唱王力宏的落葉歸根, 覺得很不錯,歌詞如下

14 September, 2009

論語 · 為政第二

偶然在 網路 上看到論語某段的翻譯, 覺得有趣,就順手放上來了。

子曰:吾,十有五,而志于學,三十而立,四十而不惑, 五十而知天命,六十而耳順,七十而從心所欲,不踰矩。

下面的翻譯來自 James Legge

The Master said:``
At fifteen, I had my mind bent on learning.
At thirty, I stood firm.
At forty, I had no doubts.
At fifty, I know the decrees of Heaven.
At sixty, my ear was an obedient organ for the reception of truth.
At seventy, I could follow what my heart desired, without transgressing what was right."

22 July, 2009

黎曼猜想 - Riemann Hypothesis

費馬最後定理 [1] (Fermat's Last Theorem) 及 龐加萊猜想[2] (Poincare Conjecture) 相繼被攻克之後, 黎曼猜想 (Riemann Hypothesis) 是一個數學家久攻不下的數學難題,底下簡介此猜想的內容及重要性。 Bernhard Riemann 在 32 歲 (1859 年) 時被柏林科學院 (Berlin Academy) 選為通信院士, 為了回報此一崇高榮譽,於是 Riemann 向柏林科學院提交一篇論文[3], 只有 6 頁,題目是「論小於給定數值的質數個數」 (On the number of primes less than a given quantity)

11 July, 2009

Python Idiom: Decorator II

之前的部落格 介紹了 decorator 的基本概念及用法,本篇介紹 decorator 的兩個應用。 第一個例子是 幫函式加上快取
def fibonacci(n):
   if n in (0, 1):
      return n
   return fibonacci(n-1) + fibonacci(n-2)

30 June, 2009

Proofs from THE BOOK

Paul Erdos 認為上帝把每一個數學定理最精妙的證明都寫在天書 The Book 中, 同時他還說你不必相信上帝,但身為一個數學家,你應該相信天書, 當然天書並不存在於世界上, 於是數學家 Martin Aigner 和 Günter M. Ziegler 就想要寫一本近似於天書的書, 在 Erdos 熱心地幫助之下, 他們將一些具有高超思想、聰明的觀察和出色的洞察力的證明 加以整理,收錄於 Proofs from THE BOOK 一書中, 此書於 1998 年 3 月出版,可惜 Erdos 在 1996年就去世了, 沒能看到此書問世。 網路上有此書的目錄還有第一章的內容「 質數有無限多的六個證明 」可以試讀。

23 June, 2009

澄清湖接力賽

繼上次 阿公店盃接力賽 之後,又再次接受吳先生的邀請參加 6 月 20 日舉辦的 澄清湖接力, 這項比賽號稱馬拉松接力,也就是說參加接力的 7 個人要跑完 42 公里, 平均每個人跑 6 公里。 接力賽是 8 點開始,所以我 6:40 就起床了, 7:10 出發, 這是第一次自己騎車到澄清湖,有點擔心會迷路, 不過澄清湖是個知名景點,其實很容易找,一路上都有路標, 從九如路一直騎接澄清湖路左轉到底就是了, 一路上天空有厚厚的烏雲,還不時飄雨, 昨天剛發布蓮花的颱風的海上警報,我還在想說今天會不會不能跑。 即使如此,還是決定先騎到澄清湖,到時再見機行事。

11 June, 2009

Python Idiom: Decorator I

本文將介紹 Python Decorators 的用法,主要內容是根據我的理解部分改寫 Bruce Eckel 的好文 Decorators I: Introduction to Python Decorators 。假設我們有下面兩個函式
def func1():
    print "inside func1()"

def func2():
    print "inside func2()"

我們希望在呼叫 func1() 前顯示 Entering func1, 而在離開 func1() 後顯示 Exited func1, 對 func2() 的要求也是相同,只是把函式名字換成 func2, 最直接的方法是修改 func1 及 func2 的實作內容, 可是這樣做實在太累贅了, 有沒有辦法把 func1 跟 func2 當作物件, 自己寫一個額外的函式來「裝飾」這些物件? Python 語言中所提供的 decorator 語法可以幫我們達到這個目的 (decorator 就是裝飾者的意思)。 decorator 的使用語法如下

07 June, 2009

使用快取加速遞迴函式

大家都知道 Fibonacci 序列 吧, 公式很簡單
f(n) = f(n-1)+f(n-2),  f(0) = 0,  f(1) = 1
Fibonacci 的公式是遞迴的, 因為要計算 f(n) 需要上次及上上次計算的結果。 直接套定義就有下面的函式 (in Python)
def fib(n):
   if n in (0, 1):
      return n
   return fib(n-1) + fib(n-2)
實際測試,會發現上面函式的執行效率非常差, 比方說我們要計算 f(5),套定義,要先計算 f(3) 跟 f(4), 可是要計算 f(4) 又要先知道 f(3) 跟 f(2), 也就是說實際上 f(3) 算了兩次,依此類推 f(2) 計算了三次, 如果 n 很大的話,計算 f(n) 就會重覆很多不必要的計算, 要解決這個問題不難,在函式中加入一個快取來記錄之前算過的值就可以了

31 May, 2009

第一次考托福

今天是我第一次考托福,地點在台南市忠義路跟民權路的交叉口, 全名是「中華民國國際生活美語發展協會」, 它是台南 iDEA 的 其中一個考場 ,沒有招牌,可是考試當天會貼一張考試公告在外面, 所以還蠻好找的,一走進去就會看到電梯,電梯有點老舊,上升的時候有點不穩, 4 樓就是考場了,考場有點擠,空調不是很強,考試人員還蠻親切的, 考試是先到先考。

09 April, 2009

命令列使用:ls、cmd 及 start

平常我都是用 MinGW 所提供的 MSYS 套件當作命令列系統, 可是遇到一個問題,每當我打 ls -t 總是要等好幾秒才會看到結果, 由於這個指令太常用了, 必須想一個替代方案才行, 我的解法是利用 windows 內建的 shell, ls -t 對應的指令如下
cmd //c dir //b //O-d

cmd 就是 windows 內建的 shell, 選項 //c 表示執行完後面的指令就結束, 而 dir //b //O-d 就是我們想要 cmd 執行的指令, dir 會列出目錄中的檔案及子目錄, 選項 //b 表示去掉標頭資訊, //O-d 表示依最新日期排序, 如果不清楚 dir 的使用方法, 可以試試選項 //?。 下面是兩者的所需的時間:

ls -t 2.812 secs
cmd //c 0.157 secs

差了 10 倍以上,ls -t 實在太慢了。 接下來介紹一個我自創的指令, 假設想要執行目前目錄下的最新檔案, 比方剛剛下載了一個 pdf 文件或是一個 jpg 檔, 那這一個檔案就是目前目錄的最新檔案, 利用前面介紹的指令再加上 start 就可完成這個動作:

     start `cmd //c dir //b //O-d | sed -n 1p`

start 1.jpg 會以預設開啟副檔名為 jpg 的程式來開啟 1.jpg, 而 start 1.pdf 會以預設開啟副檔名為 pdf 的程式來開啟 1.pdf。 問題來了,要怎麼產生目錄下最新檔案的名稱呢? 前面介紹的指令會將目錄下所有檔案由新到舊排列, 但我們只想要第一個,怎麼做呢? 簡單,利用 sed -n 1p 即可。 眼尖的人還會發現 start 後面的字串被反引號 ` 括起來, 這麼做的目的是先執行反引號中的指令以取得我們想要的檔名。 出個練習題,寫一個 bash function 假設名稱是 t, 使得 t i 會執行目前目錄下第 i 新的檔案。 答案如下:

function t()
{   arg=${1:-"1"}
    start "`cmd //c dir //b //O-d | sed -n \"${arg}p\"`"
}

上面用到 ${1:-"1"}$ 是 bash 特有的 Shell Parameter Expansion, 非常好用,之前我有舉過一個 例子

04 April, 2009

托福考試用書

Ptt 托福考試板 調查了一些評價不錯的托福考試用書:

書的價格如下:

繁體 簡體
閱讀 702 230
聽力 702 230
口說 432 190
寫作 540 240
OG 1223 390
字彙 432

繁體價錢是以博客來為準,知英跟字彙都打 9 折(之前有打 8 折), OG 沒打折,簡體價錢是以奇摩拍賣 留學家族 為準。 繁體書的價格我覺得太貴,後來發現有簡體書可以買,內容好像一樣, 字彙不算在內,繁體與簡體的價差是 3599 - 1280 = 2319 元, 差距有點大,所以除了字彙我打算買簡體的,雖然簡體書的質感會比較差。

此外,我想提一下這一本書「 旋元佑文法 」, 在舊托福時代,文法是考試的其中一科, 所以那時文法書應該很暢銷,我妹剛好有買這一本。 我在念博班,常常需要寫文章,英文文法當然是要強化的一環, 網路上對這本書的評價很高,於是就拿來 K 了。 這本書實在令人驚豔,它改變了我對英文文法的認識, 一直以來,我認為文法都是靠死背或是死記, 可是這本書卻是教人以邏輯判斷來理解文法, 實在是了不起的想法。 不過,這本書已經絕版了,奇摩拍賣上還有得買, 只是 價錢 是出人意外的高,至少是原價 360 元的兩倍以上, 如果真的對這本書有興趣,又找不到人借,可以試試搜尋引擎,會有相當多的相關結果。

31 March, 2009

分析遞迴結構

假設我們想將下面的資料
(A ((B (C D)) (E F)))
根據括號的順序以產生下面的結果
(C D)
(B (C D))
(E F)
((B (C D)) (E F))
(A ((B (C D)) (E F)))
該怎麼做呢?

27 March, 2009

台南市的大陸書店

Ptt 托福考試板 看到台南市大陸書店的介紹,想說就記錄一下,之後可能會想去逛逛。

26 March, 2009

校慶 3000 公尺

3月25日是學校校慶,我參加了 3000 公尺的比賽, 今年比賽日期是到3月初才公布, 害我只有3個禮拜的時間可以準備, 平常都是練 8-10 km 順順的跑,沒有特意加強速度, 為了參加比賽,我還練了間歇跑提升速度。 根據練習的數據來看,我最快可以跑到 11 分 30 秒。 去年一直在受傷的陰影中,沒辦法參加比賽,直到今年初才完全復原, 再加上又老了一歲,我想應該沒法在這一次比賽中突破之前的記錄。

07 March, 2009

用 bash 及 mv 換檔名

JeffHung 寫了一篇文章介紹 用 find、sed、xargs 及 mv 換檔名,其實我還蠻常遇到這個問題的, 底下介紹我的做法。假設現在想要把下面第一欄的檔名換成第二欄的檔名
a.vcproj -> a.vc9.vcproj
b.vcproj -> b.vc9.vcproj
a.vcproj -> c.vc9.vcproj
其實只要用 bash 寫一個 for 迴圈就解決了

26 February, 2009