PageRank



轉移公告

計劃把 http://blog.hoamon.info/ 文章全部轉移至 http://www.hoamon.info/blog/ 這裡,而本 Blogger 站台的文章近 500 篇,我預計在 2014-12-31 前移轉完畢,完成後 http://blog.hoamon.info/ 將只作代轉服務,一律把舊連結如 http://blog.hoamon.info/index.html 轉成 http://www.hoamon.info/blog/index.html ,敬請舊雨新知互相走告。

新文章只發佈在 http://www.hoamon.info/blog/

何岳峰 敬上

2007年7月30日 星期一

考研究所時我還不會寫遞迴

中興營管的研究特色:用程式+管理數學來解決營建問題。

所以入學考試時,通常會考一題程式設計。而我那一年的考題是:「請把 1、2、3、4、5 的所有排列情形列出」。還好我大一計概被當,大四才重修,沒忘了什麼是 Fortran 及 PE2,於是寫這個程式對我來說好像不會太難。

但主要的問題是那時的我認為程式設計只有 for loop + if..else.. 而已,所以一個該用遞迴寫的問題,我該如何實作。還好數學幫了我,因為在相同個數的自然數子集合中,其子集合的積及和必屬惟一值的特性,讓我用 5 個迴圈把問題解決,程式如下(因為我已忘了 Fortran ,所以用 Python 作範例):
1 for i1 in xrange(1,6):
2 for i2 in xrange(1,6):
3 for i3 in xrange(1,6):
4 for i4 in xrange(1,6):
5 for i5 in xrange(1,6):
6 if i1*i2*i3*i4*i5 == 120 and (i1+i2+i3+i4+i5) == 15:
7 print '%d,%d,%d,%d,%d' % (i1, i2, i3, i4, i5)
這個程式或許談不上美感,但它讓我滿意未來的發展。能如願進入中興營管學習 VB + Matlab + Linux + PHP + Open Source + 管理數學。

而使用遞迴的方法如下:
 1 def Line(ori, level, res):
2 if level == 0:
3 print ', '.join(res)
4 return
5
6 for i in xrange(len(ori)):
7 res.insert(0, ori[i])
8 tmp = ori[:]
9 null = tmp.pop(i)
10 Line(tmp, level-1, res)
11 res.pop(0)
12
13 ori = ['1','2','3', '4', '5']
14
15 Line(ori, len(ori), [])

網站登入不用密碼

不要跟我說那就是用 html 寫的網站。

要如何設計一個網站具有使用者辦認的需求但又不要求使用者打密碼呢?

你覺得這網站該如何設計?歡迎你與我討論。

請看我的想法

2007年7月22日 星期日

這才是人生

7.1 局失 3 分,共投 89 球, 60 球好球, 好壞球比 2: 1 ,最後吞敗;反觀前一場,6 局一樣失 3 分,投 95 球, 62 球好球的表現卻拿了勝投。

幹的好,不一定拿勝投,幹不好,也不一定拿敗投,這才是球賽,是人生呀!

python trick: 可變物件應用在簡寫的賦值表示式上

我在Python: 可變物件(list、hash)在 def 函式的引數傳遞部份有著特別的行為已經談過可變物件在函式傳址時的特別行為。

再來談談在簡寫的賦值表示式時,會遇到的陷阱。我們利用 a = b = [] 表示式來作到 a = []; b = []; 應用如下:
1 if __name__ == '__main__':
2 a = b = []
3 for i in range(1,3):
4 a.append(i)
5 b.append(2 * i)
6 print 'a: %s' % a
7 print 'b: %s' % b
上式結果為:
a: [1, 2, 2, 4]
b: [1, 2, 2, 4]

是不是和你想的:
a: [1, 2]
b: [2, 4]
不一樣。

原因在於使用 a = b = [] 時,它也表示 a = b ,而又因為你賦給它們的值是一個可變物件 [] ,所以 a 實際上得到的是 b 的記憶體位址。於是你改變 a ,同時也改變了 b ,改變了 b ,也改變了 a 。

2007年7月21日 星期六

KDE in 絕地奶霸2

居然在電影中可以看到 KDE 桌面。

這一幕發生在男主角在偷取目標資料時,那是一台 HP 主機,而桌面竟是 KDE 的。

2007年7月20日 星期五

數學證明:S 為一有 k 個元素的自然數組合,其元素們的和、積依序為 a、b。若 T 亦為一有 k 個元素的自然數組合,其元素們的和、積亦依序為 a、b,則 S=T。

例如在 { 1, 2, 3, 4, 5, 6, 1, 1 } 自然數組合中,其積為 720,和為 23 ,是 { 1, 2, 3, 4, 5, 6, 1, 1 } 所獨有的,找不到其他同為 8 個數的組合,其積與和也等於 720 與 23 。

如果個數不同的話則有可能擁有相同的積與和,如: {3, 12} 與 {1, 1, 4, 9} 的積同為 36,和同為 15 。

證明方式如下:

首先證明在兩個個數的自然數組合中,其擁有獨特的積與和

在 X * Y = A ; X + Y = B 兩條方程式下,必定只有 1 或 2 個解或是沒有解。

本階段以函式圖說明。如下圖


兩線的交合點只有一個。而下圖


則有兩個交點,其解為 X=2, Y=3 或是 X=3, Y=2 ,但以組合的角度來看,這兩個解屬於相同的涵義。

基本上, X * Y = A 是一個凹向上的曲線,其於直線的交點只有 0, 1, 2 三種情形。又因為 X, Y 是我們任意選取的自然數,所以不會出現 0 個解的情形。所以我們可知在 2 個數的自然數組合中,必定擁有獨特的積與和。

接下來,證明在 3 個數的自然數組合中也具有相同的特性:

方程式改寫如下:
( X * Y ) * Z = A'
( X + Y ) + Z = B'
=>
A * Z = A'
B + Z = B'
=>
A * Z = A'
A + Z = B' + C
而 C = A - B

A 為自然數的積,所以它也會是自然數,於是我們得到 { A, Z } 的積 A' 與和 B' + C 是獨特的,除了 A 與 Z 之外,無法產生相同的積與和。

=> { X, Y, Z } 的積與和也會是獨特的。

最後 N+ 1 個數的自然數組合皆可由 N 個數的自然數組合推得。所以我們得知「相同個數的自然數組合,其和與積是惟一的」。

2007年7月14日 星期六

4天1200公里的旅行

2007.7.10~13墾丁、長濱、池上

我們住了三個地方:墾丁星辰民宿、長濱巴歌浪船屋、池上換鵝山房。

旅行中,我想到了一個 idea 。一份旅行日誌中可切為食、住、行及心情四個部份,我們可以分門別類地把餐廳、旅舍、路徑等相關資料變成地點、價格、使用後感受等資訊,然後用 mashup 把它們在包裝起來,應該可以比時下的旅遊網站還好使用。

目前時下的旅遊網站主要分為兩類:討論區及廣告區,一是由使用者自行提出那些地點、路線好玩再相互討論,一是由民宿業者或是觀光產業業者聯合架設以宣傳那邊值得遊玩。

而我的想法是以 Blog + Forum 為內容儲存的底層,並配合 Google Maps 作地點及路線的定義,以 AJAX 技術作 Mashup 的動作,有效分類旅遊資訊。

這次旅行的最大收獲是「曬傷」,我的皮膚不容易黑,所以這次去台東很想給它曬一曬,只是一下子過量了,有點痛、有點癢。

ps 墾丁、池上都有 3G 網路,但長濱沒有。

驚險的車禍!?

從台中回埔里的路上,在埔霧高的埔里交流道附近,發生了一場驚險的閃車畫面。

話說我剛剛還在想在這段黑暗的路上,為什麼有兩個年輕人身著黑衣,身旁停了兩台摩托車,無所事事地站著。結果在下一秒鐘就被一台斜放在車道上的黑色轎車嚇到,這轎車斜放的令人不解,此時左眼還瞥見左後方車道有一台聯結車試圖超我車,而這台黑色轎車又佔著右邊車道快一半的位置,所以我只能以相當近的距離貼著黑色轎車車頭過去。當下,我只是在想:「聯結車不要輾過我,車子可是有四條人命呀!」

我想聯結車也看到這一幕了,他也嘗試減速,不過也沒什麼幫助,因為我如果沒有貼著黑色轎車車頭閃過的話,他還是會撞上我的。

驚險過後,一直在想還好大家都有沈著應付,要不,那個人亂轉方向盤的話。這篇文章就不會出現了。

後來,一直在想,那兩個年輕人與那台不尋常停放的轎車會不會是一伙的,目的是想要製造車禍。曾聽過舅舅說過在霧峰的小路上,就有幾名不良少年在路中擺放機車,強迫路過民眾下車,再進行搶劫。

使用 Trac 的錯誤示範: Section 2

非常高興,在本文中,我們又邀請兩位知名「演員」為我們示範 Trac 的錯誤使用方法,就有請第一男主角:小強、第二男主角:阿蒙,出場!

小峰一開始在 wiki 的研討會準備事項中寫著:
  1. 要有紅茶
  2. 要買喝紅茶的吸管
  3. 記得買停車券
  4. 18日會有大頭來視察
小強後來把研討會準備事項內容改成:
  1. 要有檸檬紅茶
  2. 19日會有大頭來視察
  3. 20日記得買停車券
但小強的修改是有問題的。

小強在原本的 1、3、4 點作部份加強,這部份沒問題。然而他把原本的第 2 點完全刪除了。這是不對的,除非他明知這一點是要刪除的,但事實上不是,因為吸管是有必要存在的。

因為小強是後修改的人,所以他有責任及權利把別人之前的成果整合到自已的內容當中。要不然你刪我加,我刪你加,搞到最後,內容到底要什麼都亂了。

根本不應該要求小朋友「自動自發」

這是句吊詭的話。當你希望他「自動自發」去作某些事時,你不應該對他說:「你要自動自發呀!為什麼總是要我說呢!」你只能放在心裡期待,由他「自動自發」作到。

甚至當你說多了,慢慢地,他就愈需要你提醒他了,因為你把他制約了。

這樣他還會自動自發嗎?

「難找的全聯福利中心」只是失敗策略?我想是不會的。

看了 「難找的全聯福利中心」只是失敗策略? | 毓毓的窩 後,覺得作者分析方向不妥。沒錯,全聯福利中心的確不好找,但它的定位是給附近的人消費的,就如我是埔里人,我只要去過一次全聯福利中心,下次一定還記得它是如何去的,所以第一次的資訊成本或許很高,但去過一次之後,就為 0 元了,而這時全聯的特色就彰顯出來了,「便宜」是吸引我一去再去的惟一理由,這也是「難找的全聯福利中心」廣告的重點。

但 7-11 的定位就不是這樣了,像我這次到東部玩,要買飲料、零食時,絕不會去找全聯、大買家之類的量販店,而是有 7-11 就買 7-11 ,有全家就買全家,畢竟我不是在地人,不想花掉太多的資訊成本。

它們兩者客群不太相同,拿來比較是不恰當的。

2007年7月11日 星期三

現在在屏東海生館

用登山背包背著我的 IBM R51 , 真的滿省力的。只是不應該坐著時還背著它。因為當我坐著看著飼育人員喂食鯨鯊時,沒坐幾分鐘,我的背就開始酸了。嗯~登山背包還是應該在走路的時候用。

From 2007.7.10~13墾...


P.S. 這裡是有 3G 訊號的,也有 Hinet 無線上網。

2007年7月9日 星期一

Google Desktop for Linux


Google Desktop for Linux 終於出來了。

說到這個 Google Desktop 軟體,可是讓我們老師囋不絕口呀!我個人也是相當愛用。它最大最大的功能是可以搜尋 PDF 文件,並且建立文字索引檔。這樣每次在找文件時, Google Desktop 可以馬上把答案交給你。不像「 Windows 尋找」,每次找每次等。

這個 PDF 文件索引搜索對我們研究生來說是相當重要的。因為我們常常看人家的論文。像我下載了一堆 PDF 論文,當我想要拿某一篇來作研究或是引用時,總不能叫我每篇打開來看,然後按 Ctrl + F 來找那一篇才是我想要的!那這樣就不用畢業了。

如果你是 Windows 的用戶,請到 Google 軟體集( Google Pack )下載。

安裝實在太簡單了,我就不說了。主要的困難(也沒多難啦)是在設定你的電腦中,那些該找,那些不該找。安裝好後,請到右下角工具列上的「Google 桌面」按右鍵打開偏好設定,你就會看到如下圖:


黃色是設定你要搜尋那些檔案;紅色是你要搜尋那些資料夾,可以是整個 C 槽、 D 槽;綠色則是你強制某些資料夾或是網站不得作搜尋。

設定完後,可能要等一陣子,因為 Google Desktop 是在你電腦閒置的情況下,幫你作索引檔的。

2007年7月4日 星期三

CMClass: 蒙地卡羅應用

因 Google Adsense 政策,我不能在此 blog 上撰寫有關賭博的文章。所以如果你對於「蒙地卡羅電腦模擬」應用在小馬莉上有興趣的話且你已年滿18歲者,請移至

2007年7月2日 星期一

到底誰會寫程式?

看到 Jserv 提到 傑出的女性自由軟體程序員 。讓我想到除了女性會寫程式之外,非資訊科系的學生也可以作到,只是我目前還沒看到非資訊科系的傑出程式設計師(但這是因為我看的人還不夠多)。

程式原意是規劃,規劃出問題的解決之道。只要你能思考,又懂一點數學(至少要加減乘除),那麼你就可以作規劃了。程式設計絕非「資訊相關」科系的獨門。

事實上,我就見過一些 「資訊科系」畢業的工程師程式設計能力不足,但這不是他們的錯,因為資科、資工、資管的學生本來就不一定學得會程式設計的,想想看,如果在高中的時候誤會了自己的興趣及專長,數學不好但卻靠國文、英文考上資訊相關科系,那麼在程式設計這部份是會多吃點虧的。另一方面,資科、資 工、資管的學生也不一定會組電腦、設網路的,不要再強扣帽子在他們身上了,這好比大家也都認為土木系畢業的就一定會蓋房子一樣!

那麼對數學好的理工科學生來說,多半你己擁有程式設計的基本能力,只是待發揮而已。

那麼對理工科學生來說,為什麼一定要學會程式設計!理由我們可以從果蠅開始談起,如果你研究基因改變的原因,是在人身上著手,那麼窮其一生,你能作幾代 呢!大不了3代吧!如果是從果蠅下手呢!3天就1代,半年你就可以把數據整理好,拿來寫論文了。一樣地,作營建專案排程,如果不靠電腦,你就得靠手算,甚至得找一個工地真實模擬,那你得花多少時間呢;又或者一個機殼結構能承受多少真實外力?如果是要你先把機殼射出成型後再來測試,你又有多少時間寫論文。

現代電腦發展快速(這就是電機、電子、資訊相關科系學生的功榮了),很多現實問題的研究,我們可以利用電腦來完成。

程式的範圍太廣了,從低階的組合語言到高階的動態網頁,甚至還有應用在地震模擬、洋流模擬的程式,如果不懂背後的數學,又如果作規劃。

那麼理工科學生該學那種程式語言比較好呢!我的建議是至少學會 Python ,它什麼地方都可以用,寫系統管理、 GUI 程式、網頁程式還有它的數學函式庫支援豐富不下 Matlab ,它的資料結構簡單強大,不用學會如何配置記憶體就能上手。最重要的是它的難度適中,理工科常用的部份可以簡單學會。

2007年7月1日 星期日

讓我們為他(楊導演德昌)祝福吧!

今天的大事:楊德昌在美病逝 新聞局近日表揚

他是我最喜歡的台灣導演,他的「獨立時代」,我看不下幾十遍,快超過金庸的「笑傲江湖」了。

在幼稚的時代,他提醒我人性的虛假,讓我了解自己的辛福是自己的事。

讓我們為他祝福,遠離人世的痛苦。
Related Posts Plugin for WordPress, Blogger...