<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-398420085248706856</id><updated>2012-01-30T20:00:37.333+08:00</updated><category term='marathon'/><category term='gpg'/><category term='construction management'/><category term='postgresql'/><category term='bt'/><category term='the steepest descent method'/><category term='testcase'/><category term='r51'/><category term='latex'/><category term='hash'/><category term='mencoder'/><category term='jpg'/><category term='sybase'/><category term='chrome'/><category term='picasa'/><category term='ecryptfs'/><category term='e-sun bank'/><category term='set'/><category term='job'/><category term='turbogears'/><category term='mandrake'/><category term='email'/><category term='hg'/><category term='solaris'/><category term='opera'/><category term='reit'/><category term='baseball'/><category term='reading'/><category term='sha'/><category term='java'/><category term='chunghwa telecom'/><category term='pulp'/><category term='django'/><category term='pdf'/><category term='vst'/><category term='thinkpad'/><category term='pygments'/><category term='knapsack problem'/><category term='dns'/><category term='ipatbles'/><category term='lp'/><category term='mac'/><category term='power'/><category term='vedio'/><category term='ubuntu'/><category term='oasis'/><category term='subversion'/><category term='google'/><category term='ruby'/><category term='gnuplot'/><category term='request ticket'/><category term='education'/><category term='list'/><category term='civil engineering'/><category term='least square method'/><category term='perl'/><category term='option'/><category term='drbl'/><category term='bullshit'/><category term='politic'/><category term='mplayer'/><category term='openoffice'/><category term='3g'/><category term='odiogo'/><category term='pgp'/><category term='ajax.net'/><category term='securities'/><category term='Seediq Bale'/><category term='amd64'/><category term='biology'/><category term='computer'/><category term='iconv'/><category term='virtual machine'/><category term='x86_64'/><category term='learning'/><category term='modelviz'/><category term='screen'/><category term='feeling'/><category term='shell script'/><category term='math'/><category term='p2p'/><category term='election'/><category term='cloud computing'/><category term='english'/><category term='glpk'/><category term='osdl'/><category term='pdf2jpg'/><category term='fortran'/><category term='sqlite'/><category term='self-management'/><category term='athletes'/><category term='program'/><category term='freetds'/><category term='ssh'/><category term='google gears'/><category term='jupload'/><category term='totero'/><category term='tortoisehg'/><category term='ie'/><category term='kde'/><category term='netbeans'/><category term='explorercanvas'/><category term='jquery'/><category term='pdb'/><category term='pydoc'/><category term='car accident'/><category term='ruby on rails'/><category term='paypal'/><category term='cmclass'/><category term='investment'/><category term='swap'/><category term='brooks'/><category term='iloveit'/><category term='openid'/><category term='taidong'/><category term='finance'/><category term='html5'/><category term='web'/><category term='data structure'/><category term='open source'/><category term='library'/><category term='cds'/><category term='zotera'/><category term='fsf'/><category term='bike'/><category term='c#'/><category term='firefox'/><category term='travel'/><category term='web 2.0'/><category term='sis'/><category term='sun'/><category term='vim'/><category term='eclipse'/><category term='bond'/><category term='monte carlo'/><category term='mysqldb'/><category term='safari'/><category term='moinmoin'/><category term='future'/><category term='Newton&apos;s method'/><category term='netfilter'/><category term='m2crypto'/><category term='virtualbox'/><category term='genetic algorithm'/><category term='mysql'/><category term='openssl'/><category term='google adsense'/><category term='libsvm'/><category term='foclass'/><category term='algorithm'/><category term='regular expression'/><category term='flash ram'/><category term='jog'/><category term='oracle'/><category term='something'/><category term='movie'/><category term='trac'/><category term='android'/><category term='construction site management'/><category term='perldoc'/><category term='mod_python'/><category term='ssl'/><category term='restructured text'/><category term='version control'/><category term='offline system'/><category term='zotero'/><category term='jython'/><category term='vista'/><category term='google apps'/><category term='google app engine'/><category term='yahoo'/><category term='wiki'/><category term='zfs'/><category term='javascript'/><category term='levenberg-marquardt method'/><category term='apple'/><category term='glassfish'/><category term='postfix'/><category term='skype'/><category term='gtalk'/><category term='zipcode'/><category term='environment'/><category term='fedora'/><category term='ipp2p'/><category term='graphviz'/><category term='http'/><category term='mssql'/><category term='reservoir'/><category term='nfl'/><category term='msn'/><category term='ibm'/><category term='bank'/><category term='PyDev'/><category term='python'/><category term='un*x'/><category term='lifetype'/><category term='debian'/><category term='firegpg'/><category term='windows'/><category term='imagemagick'/><category term='pdftojpg'/><category term='football'/><category term='code.google.com'/><category term='science'/><category term='apache'/><category term='linux'/><category term='cvs'/><category term='realty'/><category term='personal'/><category term='php'/><category term='ajax'/><category term='htc'/><category term='aix'/><category term='infomation'/><category term='journey'/><category term='blog'/><category term='book'/><category term='bar code'/><category term='odf'/><category term='matlab'/><category term='the guass-newton method'/><category term='bitbucket'/><category term='triathlete'/><category term='python25'/><category term='history'/><category term='dictionary'/><category term='search'/><category term='https'/><category term='microsoft'/><category term='joke'/><category term='mozilla'/><category term='iptables'/><category term='mercurial'/><title type='text'>hoamon's sandbox</title><subtitle type='html'>沙箱是版本控制器的術語。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default?start-index=101&amp;max-results=100'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>406</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-3140920027329007108</id><published>2012-01-28T01:49:00.000+08:00</published><updated>2012-01-28T15:26:34.642+08:00</updated><title type='text'>2011年 1- 11 月創世基金會的平均每張發票中獎金額還是偏低!!!</title><content type='html'>&lt;iframe frameborder="0" height="300" src="https://docs.google.com/spreadsheet/pub?key=0AvhSvdSnUTuOdC00bG5GTi1IbkZONHdieUFfcUNjX3c&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html&amp;amp;widget=true" width="620"&gt;&lt;/iframe&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;因為 2011 年的獎號組合數都是一樣： 1000萬 1 組、 200 萬 1 組、頭獎 3 組外加兩組 200 元的。所以 2011 年的發票期望值就等於上表所計算的 1.425元(稅後)。而創世基金會的兌獎結果如下：&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/--5RRXwXCz68/TyLcxk7_9HI/AAAAAAAADh8/U6U2IbRu_uY/s1600/Screenshot-3.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="322" src="http://2.bp.blogspot.com/--5RRXwXCz68/TyLcxk7_9HI/AAAAAAAADh8/U6U2IbRu_uY/s640/Screenshot-3.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;歷年發票兌獎情形&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;仍舊有 (1.11-1.425)/1.425 = -22.105% 的差距。而&lt;a href="http://hoamon.blogspot.com/2010/05/97.html"&gt; 2008 年的差距是 -14.3%&lt;/a&gt; 、&lt;a href="http://hoamon.blogspot.com/2010/05/blog-post.html"&gt;&amp;nbsp;2009 年的差距也才 -10%&lt;/a&gt;&amp;nbsp;。我滿懷疑他們是如何對獎的。&lt;br /&gt;&lt;br /&gt;再重申一次我所想的可能原因：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;部份人士把沒中的發票才寄給創世基金會，所以增加了發票總數&lt;/li&gt;&lt;li&gt;內部兌獎人員錯把中獎發票當成未中獎發票，所以降低了得獎金額，這問題還算小&lt;/li&gt;&lt;li&gt;內部兌獎人員私吞中獎發票，所以降低了得獎金額，&lt;span class="Apple-style-span" style="color: red;"&gt;這問題比較大&lt;/span&gt;&lt;/li&gt;&lt;li&gt;財政部所公告的中獎號碼是在發票銷售之後，所以它調整過中獎發票的數量&lt;/li&gt;&lt;li&gt;純粹是命運造成的&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;實在很希望有那個記者(我已投到 &lt;a href="http://we-report.org/forum/261"&gt;weReport&lt;/a&gt; 去了)能去挖挖看。或許這報導能減少&lt;a href="http://news.cts.com.tw/udn/politics/201009/201009260571355.html"&gt;公益團體對電子發票的憂心&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;事實上，改為電子發票後， 1 、 2 &amp;nbsp;、 3 的原因就不會發生了，只有 4 、 5 有可能發生。我想看看在「電子發票」盛行後，創世基金會的兌獎情形是否會提高?&lt;br /&gt;&lt;br /&gt;== 後記 ==&lt;br /&gt;&lt;br /&gt;改以電子發票捐款後，應該是無法算出平均每張兌獎金額，因為「電子發票」是中獎後再捐贈的。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-3140920027329007108?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/3140920027329007108/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/2011-1-11.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3140920027329007108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3140920027329007108'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/2011-1-11.html' title='2011年 1- 11 月創世基金會的平均每張發票中獎金額還是偏低!!!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/--5RRXwXCz68/TyLcxk7_9HI/AAAAAAAADh8/U6U2IbRu_uY/s72-c/Screenshot-3.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-1486732273604609303</id><published>2012-01-15T22:08:00.003+08:00</published><updated>2012-01-15T22:08:48.223+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitbucket'/><category scheme='http://www.blogger.com/atom/ns#' term='zotera'/><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>莫非定律： 當你相信用不著時，它偏偏派上用場</title><content type='html'>上禮拜，我作了大掃除。清掉了堆在家裡一段時間的紙箱。結果，今天我的桌上型電腦開不了機了，需要箱子送回維修。&lt;br /&gt;&lt;br /&gt;因為「桌上型電腦會壞掉」這件事，我想要把「HG」伺服器，全部丟給 &lt;a href="http://bitbucket.org/"&gt;bitbucket.org&lt;/a&gt; 管理。我的桌上型電腦只剩下三種功能： hg server, zotera sync server, file backup 。&lt;br /&gt;&lt;br /&gt;zotera sync server 用到的機會不多，因為我最近不常看文獻，而且它的使用頻率不高。而 file backup 是將代管的 web system 的資料順便備一份到我家作異地備援，如果我沒開機，則會拖個幾天才作異地備份。&lt;br /&gt;&lt;br /&gt;於是，最影響我工作效率的是「 hg server 」無法運作。雖然 hg 是分散式版本控制器，不用中央伺服器存在，也能正常工作。但少了中央伺服器，我的眾多電腦們就不方便傳送 changeset 了。&lt;br /&gt;&lt;br /&gt;為此，我相信 bitbucket.org 的伺服器維護能力高於我，所以我要把全部儲存庫交給它們管理。而且 bitbucket.org 的託管方案很優惠，我們可以開設任意數量的 public 或 private 儲存庫，只要這些儲存庫的參與用戶不高於 5 位。超過 5 位才開始計價，詳可閱&lt;a href="https://bitbucket.org/plans"&gt;此&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-1486732273604609303?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/1486732273604609303/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_15.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1486732273604609303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1486732273604609303'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_15.html' title='莫非定律： 當你相信用不著時，它偏偏派上用場'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-2971967511801717452</id><published>2012-01-14T16:33:00.002+08:00</published><updated>2012-01-14T16:33:28.251+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>「作弊的文化」讀後感</title><content type='html'>&lt;span class="Apple-style-span" style="color: blue;"&gt;---- 聲明開始 ----&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;要檢討別人前，先自我檢討。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;過去我曾在工作上，利用公司列表機印了幾本 PDF 書籍(大概幾千頁吧!)，想當然耳，那些 PDF 檔還是違反著作權抓來的。印了近 10 本後就不這麼作了，因為浪費我的時間，印出來後還得整理裝訂，有時候列表機卡紙，也得自己處理，這根本就是打自己巴掌。於是，我直接花錢請印刷店處理，雖然書錢是自己出的，但一樣不脫「違反著作權」這條法令。等到會上&amp;nbsp;&lt;a href="http://www.amazon.com/"&gt;amazon&lt;/a&gt;&amp;nbsp;買書後，就不印了。買原版的書又精美，又對得起作者，何必跟自己良心過不去。當時自己印得不精美的書，後來也是全丟了，真對不起那些樹木。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;另外在軟體使用(N 年前)上，也盜了不少的軟體： Matlab, MS Office, Windows 2000, Windows XP, 嘸蝦米輸入法, Dreamweaver, VisualBasic 6...。後來接觸 Open Source 後，一個一個戒掉了，因為要花錢的軟體，沒有比較好用。現在我用 Ubuntu Linux, Python, Netbeans 來工作，偶爾要用 MS office 時，就把裝在 VirtualBox 裡的學校授權 windows xp 打開，然後使用學校授權的 MS office 來看文件。是的，沒錯，中興大學花了一筆微軟授權費讓我可以在受到他人強迫時，不致於違法。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;現在&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;算來，我只有「嘸蝦米輸入法」是自己花錢買一套的，至今未買過其他軟體，當然這不含強迫中獎的微軟隨機版 OS ，還好後來的廠商自己也知道這不合理，所以我才買得到無 OS 的 Notebook 。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;最後是音樂、電影，過去會用 emule, bittorrent 等作違法下載，但自從有了中華電信 MOD, 網樂通, Youtube 後，就不這麼作了。以前抓電影，還得自己找字幕、種子。用 mod,&amp;nbsp;網樂通方便多了，不過花個幾十塊而已。而音樂多半就聽我以前 CD 轉來的 OGG ，要不然就是在 youtube 上找 MV 來聽。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;用 mod, 網樂通看電影很不錯，但還是有個缺點，電影類型不夠豐富，違法下載已有一堆&lt;a href="http://www.google.com.tw/search?hl=zh-TW&amp;amp;client=ubuntu&amp;amp;hs=sAc&amp;amp;channel=cs&amp;amp;q=%E5%85%A8%E5%A2%83%E6%93%B4%E6%95%A3+%E4%B8%8B%E8%BC%89&amp;amp;oq=%E5%85%A8%E5%A2%83%E6%93%B4%E6%95%A3+%E4%B8%8B&amp;amp;aq=0&amp;amp;aqi=g1&amp;amp;aql=&amp;amp;gs_sm=c&amp;amp;gs_upl=1499l2639l0l4124l2l2l0l0l0l0l138l198l1.1l2l0"&gt;網址&lt;/a&gt;了，但至今我還看不到「&lt;a href="http://www.imdb.com/title/tt1598778/"&gt;全境擴散&lt;/a&gt;(Contagion)」&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;有在上映。只能繼續等，要不就是去買它的 DVD ，不過，現在好像也沒得買合法的。別叫我買 amazon 的 &lt;a href="http://www.amazon.com/Contagion-Two-Disc-Blu-ray-UltraViolet-Digital/dp/B00664AM5C/ref=sr_tr_sr_1?ie=UTF8&amp;amp;qid=1326438119&amp;amp;sr=8-1"&gt;DVD&lt;/a&gt; ，我自認英聽還不夠好，沒字幕我是看不懂地。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;我大學時是很少考試作弊或是抄別人報告的，要不然就不會被當了三十幾個必修學分，像我的結構學考試向來都是拿 6 分的，因為抄一題題目，老師會給 1 分，我乖乖地抄了 6 題。印象中，只有一堂經濟學考試是幫同學作弊，給他看答案，其他應該沒了吧! 如果還有，那就是我記性不好想不起來了。而研究所以後，我開始認真讀書了，不但成績比大學好很多，也不蹺課了。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;以上，大概就是我過去作弊的事。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;---- 聲明結束 ----&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;某日幫老婆在&lt;a href="http://www.ntcu.edu.tw/"&gt;中教大&lt;/a&gt;圖書館找書時，不小心看到的一本 2006 年出版的書：「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010337221"&gt;作弊的文化&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;以前很喜歡逛書局、圖書館，有興趣的題材當然會翻，但更有趣的是因為工作人員排列習慣不同，常常會發現一些原本我沒機會瞄到，但事後卻發現很令人驚喜的書。雜食是件好事，這在我接觸「指數投資|被動投資」後體會更深。也在塑化劑事件後，對入口食品改採混亂原則。以前我中餐吃飯時可以連吃同一家的陽春麵半年，也不會受不了，當時的想法很簡單，這世界就那麼多家店讓我吃，如果累計起來，這碗陽春麵總共吃了 180 次，那我就連續吃完 180 次後再去煩惱要改吃什麼，省得我每天花心思在思考吃什麼。但現在不這麼作了，我怕連吃某樣食物半年，體內單一毒素太高，一次就畢業了。混著吃，不同毒物的累計量會平均一點。&lt;br /&gt;&lt;br /&gt;這本書題材很特別，主要介紹美國氾濫的作弊文化： 學生考試作弊、購買或抄襲他人報告、入學及畢業資格花錢買來、假造學經歷、律師浮報鐘點、會計師協助作假帳、逃漏稅、侵佔公司資產(包含小物件，像是筆、紙)、使用禁藥、以商逼官或是商人去當&lt;a href="http://big5.xinhuanet.com/gate/big5/news.xinhuanet.com/xhfk/2011-08/25/c_121910179.htm"&gt;官人&lt;/a&gt;…等現象。&lt;br /&gt;&lt;br /&gt;作者提了一些改正措施，不過，我不相信他講得是對的。因為就算他講得對，也無法施行改正來證明措施正確。那當然他也歸納了一些想法來論述為什麼美國人會作弊，這作弊現象是由來已久，還是最近才興起的。同樣地，我也不相信他的歸納，因為我看過「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010399930"&gt;黑天鵝效應&lt;/a&gt;」，歸納不見得是有意義的。&lt;br /&gt;&lt;br /&gt;那這本書到底對我有沒有價值?&amp;nbsp;有! 當然有，看這本書，能夠讓我了解美國人作弊的手段有那些，只要作者是誠實以對，是科學訪談來的資料，就能讓我對美國生活有進一步的體會，這就是對我的價值。&lt;br /&gt;&lt;br /&gt;學生考試作弊、購買或抄襲他人報告、入學及畢業資格花錢買來、假造學經歷這幾樣也可在臺灣社會體會到，這應該不難想像吧! 而且美國是更氾濫的。因為美國有很多"""高級"""私立學校是可以被「錢」操控的，建議各位可以去看看「&lt;a href="http://app.atmovies.com.tw/movie/movie.cfm?action=filmdata&amp;amp;film_id=fSatm0813001"&gt;女人香&lt;/a&gt;」這部電影。&lt;br /&gt;&lt;br /&gt;而律師浮報鐘點，可以去看看「&lt;a href="http://app.atmovies.com.tw/movie/movie.cfm?action=filmdata&amp;amp;film_id=fFatm0826002"&gt;黑色豪門企業&lt;/a&gt;」這部電影來一窺全貌。&lt;br /&gt;&lt;br /&gt;會計師協助作假帳，可以去看看「&lt;a href="http://zh.wikipedia.org/zh-tw/%E4%B8%96%E9%80%9A%E5%85%AC%E5%8F%B8"&gt;世界通訊&lt;/a&gt;」、「&lt;a href="http://zh.wikipedia.org/wiki/%E5%AE%89%E7%84%B6%E5%85%AC%E5%8F%B8"&gt;安隆&lt;/a&gt;」的倒閉新聞。&lt;br /&gt;&lt;br /&gt;在逃漏稅部份幾乎是全民運動。在「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010327164"&gt;蘋果橘子經濟學&lt;/a&gt;」中，也提到某一年全美國少了幾百萬個小孩，因為國稅局全面電腦化，可以比對大家的扶養子女是否有重複。&lt;br /&gt;&lt;br /&gt;侵佔公司資產(包含小物件，像是筆、紙)，我印象中好像有部電影提到職員拿到公司的信用卡後，結果大刷特刷的，忘了是那一部了。&lt;br /&gt;&lt;br /&gt;使用禁藥部份請看&lt;a href="http://en.wikipedia.org/wiki/Alex_Rodriguez"&gt;艾拉&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/zh-tw/%E9%A6%AC%E5%85%8B%C2%B7%E9%BA%A5%E5%A5%8E%E7%88%BE"&gt;馬奎爾&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E9%BA%A5%E5%8F%AF%C2%B7%E8%A9%B9%E6%A3%AE_(%E7%94%B0%E5%BE%91%E9%81%8B%E5%8B%95%E5%93%A1)"&gt;麥可強森&lt;/a&gt;的故事。&lt;br /&gt;&lt;br /&gt;以上作弊的事就請各位自行搜尋資料或是去看本書來深入了解。我想要討論的是「以商逼官或是商人去當&lt;a href="http://big5.xinhuanet.com/gate/big5/news.xinhuanet.com/xhfk/2011-08/25/c_121910179.htm"&gt;官人&lt;/a&gt;」這種事。而且想從美國的現象來討論臺灣在這一部份的問題。&lt;br /&gt;&lt;br /&gt;商人當官人，在臺灣政壇上，好像只有發生在「縣市首長」及「立委、議員」上，內閣部份就我印象以來，大概都是國營的金融相關事業董事長後來會當到財經首長，像是彭淮南先當中國商銀董事長後轉任中央銀行總裁，陳裕章從第一金董事長作到金管會主委，好像只有陳沖有當過合庫銀、中信證(民營)、永豐金(民營)董事長後再來作金管會主委及行政院副院長，其他的首長多半是先當官人，後才去當商人的，像是顏慶章、邱正雄、林全。就商人來當官人這件事，我覺得中華民國的防火牆作得還不錯。不像美國，一堆財政部長都是從華爾街跑去的，這一點可去看「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010486988"&gt;高盛陰謀&lt;/a&gt;」來略知一二。&lt;br /&gt;&lt;br /&gt;商人當官人有什麼不對? 如果是靠選舉選上的，那我沒話說，民主時代，選民接受商人當首長，也了解他會有利益衝突但還是讓他選上，這我沒話說，選後是大家一起承擔的。&lt;br /&gt;&lt;br /&gt;但如果是指派的，那就大有問題了。因為無法直接監督，卻又得面臨他瓜田李下，所以可以看到 2008 美國次貸後，高盛活得比貝爾斯登、雷曼兄弟、美林、摩根史坦利還好。要不然，你們也可以想像一下，公共工程委員會主委曾任職於某家營造廠，那他監督的了舊公司所承攬的公共工程嗎? 搞不好，有些還是他經手的呢! 所以幸運的是這種事在中華民國不常發生。這值得慶祝。&lt;br /&gt;&lt;br /&gt;而「以商逼官」這件事，我覺得臺灣就很嚴重了。當然，還沒有比美國嚴重啦。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/A4x7MFZ4BXg/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/A4x7MFZ4BXg&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/A4x7MFZ4BXg&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;上面這部影片，提到「公司」撥出大量的行銷支出去為候選人宣傳，這無非是希望將「有利於公司」的候選人送進政府體制中，在行政、立法方面協助公司經營。&lt;br /&gt;&lt;br /&gt;除了送「合宜候選人」進政府體制，另外還有「形塑輿論」以迫使公務員執行政策轉向，因為公務員『買廣告』去宣傳政策是件不容易的事。要『買廣告』去宣傳，通常只能用在『拍馬屁』上。&lt;br /&gt;&lt;br /&gt;有幾件類似『形塑輿論』的事，我分享給各位，但也有可能是我錯了，畢竟『形不形塑』都應該是檯面下的事：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://yesfx-global-invest.blogspot.com/2010/01/blog-post.html"&gt;別讓彭淮南總裁變成下一個袁崇煥!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;證券交易所得稅會讓政府抽很多錢，導致沒有利潤。&lt;/li&gt;&lt;li&gt;立委名額太多是導致國會亂象的主因，所以我們要刪減立委名額。&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;第一項，中央銀行的作為是不容外界質疑的，它也不受其他首長的管理，那新聞、報紙講新台幣該不該升值、貶值，幹麼? 削總裁威信，看能不能讓高層換個人，如果不能，或許也能逼總裁心死離職。總之，一個獨立性機關建立了，也找了個正確人選進去，那再&lt;a href="http://tw.myblog.yahoo.com/hoon-ting/article?mid=14864"&gt;指三道四&lt;/a&gt;都是不對的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;第二項，很多股民在郭宛容事件後，堅信課徵證所稅是件可怕的事，他們不管租稅正義，只在乎股票表面價值。於是，永遠都是在分皮毛，然後讓大戶吃香喝辣。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;第三項，刪減立委名額後，可以看見國會的政黨種類急速減少，從&lt;a href="http://zh.wikipedia.org/wiki/2004%E5%B9%B4%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E7%AB%8B%E6%B3%95%E5%A7%94%E5%93%A1%E9%81%B8%E8%88%89"&gt;2004年&lt;/a&gt;及&lt;a href="http://zh.wikipedia.org/wiki/2008%E5%B9%B4%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E7%AB%8B%E6%B3%95%E5%A7%94%E5%93%A1%E9%81%B8%E8%88%89"&gt;2008年&lt;/a&gt;的結果看來，2004年泛藍 128 名，泛綠 147 名，其他有 148 名，小黨比例佔有 35 %，而 2008 年泛藍有 114 名，泛綠有 101 名，其他有 16 名，小黨比例佔有 7 %。小黨比例急速萎縮下，失去了政策多樣性。企業要買通立委，也可以花比較少的人力、金錢。這對弱勢團體來說，只有更失去支持聲音，看不來有什麼其他好處。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;另外，還有一種是我覺得「大有問題」的「輿論」：「公務員領得錢比人多，事作得比人少」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;醜化公務員後，要幹麼呢? 首先大家都認為他們爛，所以就不介意立委們削他們預算，甚至讓機關合併但員額減少。事變多了，人卻少了，那他們就不能管那麼多事了。他們不能管那麼多事後，則「黑心企業」就爽啦! 沒人力來稽查業務，甚至要打通關節時，需賄賂的人沒那麼多，這對「黑心企業」都是成本下降的好機會。如果我開的是「黑心企業」，「醜化公務員」絕對是一條好策略。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在「作弊的文化」中，它也提到&amp;nbsp;&lt;a href="http://www.irs.gov/"&gt;IRS&lt;/a&gt;&amp;nbsp;被削弱資源，使得他們無法向逃漏稅的有錢人提出訴訟，因為有錢人有能力與 IRS 乾耗。使得他們只好把目標對向一般平凡百姓，這一類人往往無法找到高級稅務律師反辯。諷刺的是 IRS 資源正是被廣大的美國百姓要求刪減的，因為他們極度討厭稅務員。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;簡單講，老鼠去說貓的壞話，結果主人相信了，還把貓趕走，那接下來是誰的天下?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但是話說回來，我們如何能分辯什麼是正確的「輿論」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;首先，別相信「廣告」：&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/xNmq9Kugf8c/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xNmq9Kugf8c&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/xNmq9Kugf8c&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;這個廣告聽說效果很好。讓很多人下定決心投給那個團隊，不過，仔細想想，這「準備好了」四個字，講也只花了 5 秒鐘。但一個政策執行要花多少時間，像蘇花高從環島路網決策成形、選址、測量、工法決定…也花了幾十年了。你聽到「準備好了」也是花 5 秒鐘，但你該相信嗎? 另一個有「魔力的廣告詞」是「馬上好」，很多人聽到這句話後，就莫明奇妙地把票奉上了。我覺得很可笑。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第二個，要分得清那個是「廣告」：&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;看雜誌時，出版商常常把廣告作成報導本文，如果你沒能力分得出來，那如何知道那個是忠實報導，那個是自吹自擂。不過，像這類會把「廣告」及「本文」混合的出版商，最好把它們的讀物當作資源回收物，看過即忘。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;第三個，少看新聞及雜誌，多看點書(也就是第一手資料，像是候選人政策白皮書)：&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;了解政治或是選擇正確人選，從新聞、雜誌上獲得的幫助不大。多看點書來了解你想要的理想世界是什麼，這樣你才有學識去要求候選人作到。然後要看候選人政策白皮書，這樣你才知道，這個候選人到底想要作什麼，你也才有得選擇，別去聽新聞記者的轉述，二手資料常常是錯的。&lt;br /&gt;&lt;br /&gt;最後我的結論是「了解作弊的手段是有助不作弊的人贏得比賽的法門」，所以不管你想不想、愛不愛，都得了解「作弊的方法」。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-2971967511801717452?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/2971967511801717452/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_14.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2971967511801717452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2971967511801717452'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_14.html' title='「作弊的文化」讀後感'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-1476622773629552738</id><published>2012-01-14T14:40:00.002+08:00</published><updated>2012-01-14T21:47:21.566+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politic'/><title type='text'>我有沒有看錯呀! Google 首頁有中華民國國旗!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-p91iWmtA1yI/TxEjOEYnxfI/AAAAAAAADgY/BcQOi5BhFdE/s1600/google.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://2.bp.blogspot.com/-p91iWmtA1yI/TxEjOEYnxfI/AAAAAAAADgY/BcQOi5BhFdE/s640/google.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-1476622773629552738?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/1476622773629552738/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/google.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1476622773629552738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1476622773629552738'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/google.html' title='我有沒有看錯呀! Google 首頁有中華民國國旗!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-p91iWmtA1yI/TxEjOEYnxfI/AAAAAAAADgY/BcQOi5BhFdE/s72-c/google.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8243666920020654133</id><published>2012-01-11T10:34:00.004+08:00</published><updated>2012-01-14T21:47:06.544+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politic'/><title type='text'>有人說：「綠黨贊同廢死， 2012 政黨票我投不下去」; 我說：「想想多元價值」吧!</title><content type='html'>&lt;span class="Apple-style-span" style="color: blue;"&gt;先講好，我也是贊同廢死的，但本文不是討論死刑存廢問題，請「保死」與「廢死」的人別來插花。過陣子有空時，我再來另寫一篇「廢死文」。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;今天，我只是講講「多元價值」。&lt;br /&gt;&lt;br /&gt;臺灣社會目前有很多議題：「要廢死」、「要與中華人民共和國統一」、「&lt;a href="http://hoamon.blogspot.com/2010/04/blog-post.html"&gt;要課徵資本利得稅&lt;/a&gt;」、「&lt;a href="http://hoamon.blogspot.com/2011/01/blog-post_03.html"&gt;要廣建合宜住宅&lt;/a&gt;」、「要反核」…。每個政黨都有自己一套邏輯，主張某些議題，而反對另外議題。&lt;br /&gt;&lt;br /&gt;那麼臺灣 2012 年政黨選舉中，也不過就那麼十來個，有可能把臺灣 2300 萬人規規矩矩地切開，完整地分配到這十來個政黨? 這不可能。&lt;br /&gt;&lt;br /&gt;以我而論，我贊同「以替代方案廢死」、「&lt;a href="http://hoamon.blogspot.com/2009/05/blog-post_12.html"&gt;不介意與民主中國(或民主日本，或民主美國)統一&lt;/a&gt;」、「要課徵資本利得稅」、「不要合宜住宅」、「&lt;a href="http://hoamon.blogspot.com/2011/12/blog-post_17.html"&gt;有條件反核&lt;/a&gt;」…。你說，我該是那一黨的?&lt;br /&gt;&lt;br /&gt;因為每個人都是獨立自主且無二的公民，他個人主張通常也應該是獨一無二的，不會有那一個政黨目標能百分百契合。若有，那他一定不是「獨立自主且無二的公民」，他具備可替換性，他的存在必然對社會無益。&lt;br /&gt;&lt;br /&gt;我一直不喜歡臺灣的剛性政黨特性，這也是我那麼熱愛政治但一直沒入黨的原因。如果進了民進黨，我就不能接受「與民主中國統一」; 如果入了國民黨，便無法有條件「反核」。搞得我入了某黨，便失去了自我存在價值，那幹麼入黨呢! 於是我自成一黨。&lt;br /&gt;&lt;br /&gt;因為我自成一黨，所以在面臨其他各黨主張時，勢必有所取捨，我絕對找不出一個完美政黨能包容我的理念。所以我投的任何一個候選人、政黨，票上都充滿了包容心，包容著不得我心的議題，我得接受這落差，因為候選人不是我。&lt;br /&gt;&lt;br /&gt;這個世界說來很複雜，不是只分成白的與黑的，還有其他顏色。但其實也很簡單，因為你只有投「綠黨」、投別的黨以及不投票(或是投廢票)等三種選擇。&lt;br /&gt;&lt;br /&gt;如果今日臺灣政治生態上，&lt;a href="http://www.google.com.tw/url?sa=t&amp;amp;rct=j&amp;amp;q=%E7%B6%A0%E9%BB%A8&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CC0QFjAA&amp;amp;url=http%3A%2F%2Fwww.greenparty.org.tw%2F&amp;amp;ei=ne0MT-f5OoShmQW81dWzBg&amp;amp;usg=AFQjCNGPwxmG3eXKYqAiNPAI6Qs1JfNUTQ&amp;amp;sig2=MzQAeWigV3Ehl80tcUre-Q"&gt;綠黨&lt;/a&gt;已佔有一定比例(簡單講就是 5%+)與國民黨、民進黨共存，你的這三種選擇都不影響「&lt;strike&gt;多元價值&lt;/strike&gt;政策多樣性」。&lt;br /&gt;&lt;br /&gt;然而不是，在臺灣不分區立委席次上，&lt;a href="http://zh.wikipedia.org/wiki/2008%E5%B9%B4%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E7%AB%8B%E6%B3%95%E5%A7%94%E5%93%A1%E9%81%B8%E8%88%89#.E5.85.A8.E5.9C.8B.E4.B8.8D.E5.88.86.E5.8D.80.E5.8F.8A.E5.83.91.E5.B1.85.E5.9C.8B.E5.A4.96.E5.9C.8B.E6.B0.91.E9.81.B8.E8.88.89"&gt;只有國、民二黨的份&lt;/a&gt;，而它們又都是剛性政黨，你說這有什麼「&lt;strike&gt;多元價值&lt;/strike&gt;政策多樣性」呀! 這時候，&lt;span class="Apple-style-span" style="color: red;"&gt;你的三種選擇就有影響&lt;/span&gt;了。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-3604hfovHmE/Twzn5SbM1NI/AAAAAAAADe8/TAuIo5RH1dY/s1600/part_16817_5884094_56843.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://3.bp.blogspot.com/-3604hfovHmE/Twzn5SbM1NI/AAAAAAAADe8/TAuIo5RH1dY/s640/part_16817_5884094_56843.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;「不投票(或是投廢票)」還是會&lt;span class="Apple-style-span" style="color: red;"&gt;便宜了國、民二黨(不用我說吧! 政黨票是看比例的，不去投票只會讓國、民二黨的計票分母變小，讓它們比例更大)&lt;/span&gt;，「投綠黨」&lt;b&gt;有機會&lt;/b&gt;讓它是第三(大)黨，「投其他黨」就要看是什麼黨了，如果是「國、民」二黨，那對「&lt;strike&gt;多元價值&lt;/strike&gt;政策多樣性」沒幫助，如果是：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;台灣國民會議&lt;/li&gt;&lt;li&gt;人民最大黨&lt;/li&gt;&lt;li&gt;台灣團結聯盟&lt;/li&gt;&lt;li&gt;新黨&lt;/li&gt;&lt;li&gt;健保免費連線&lt;/li&gt;&lt;li&gt;親民黨&lt;/li&gt;&lt;li&gt;中華民國臺灣基本法連線&lt;/li&gt;&lt;li&gt;台灣主義黨&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;這些小黨。從&lt;a href="http://web.cec.gov.tw/files/11-1000-3983-1.php"&gt;選舉公報&lt;/a&gt;中，我們可以了解「人民最大黨」、「台灣團結聯盟」、「新黨」、「親民黨」多是由國、民二黨分裂出來的，投給它們，只是在修正「國、民二黨」路線而已，沒作到&lt;strike&gt;多元價值&lt;/strike&gt;政策多樣性差異最大化。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;「&lt;a href="http://zh-tw.facebook.com/NationalHealthSystem"&gt;健保免費連線&lt;/a&gt;」，我個人認為「這根本是錯誤的政見」，懶得分析它了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;「&lt;a href="http://www.tw-roc.org/"&gt;中華民國臺灣基本法連線&lt;/a&gt;」只談「中國、台灣」關係，其他不談，是嫌政見少了點，而且它們還要轉型正義救阿扁，這我投不下去。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;「&lt;a href="http://www.twip.org.tw/"&gt;台灣主義黨&lt;/a&gt;」看起來是個有模有樣的政黨，然而知名度低，而且我不相信他們有執行政見的能力，再加上他們網站是用 asp 寫的，用 chrome 有些東西還不能看。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最後是「&lt;a href="http://zh.wikipedia.org/wiki/%E5%8F%B0%E7%81%A3%E5%9C%8B%E6%B0%91%E6%9C%83%E8%AD%B0"&gt;台灣國民會議&lt;/a&gt;」，我看他們的政見寫得不錯：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;國家應改變能源結構，全力開發風力、太陽能、地熱、洋流等再生能源，逐漸走向非核目標，預防「福島核災」在台灣上演，導致國家滅亡。&amp;nbsp;&lt;/li&gt;&lt;li&gt;外勞薪資與本勞脫鉤，開放家庭幫傭；取消僱用年限，使國家更有競爭力。&lt;span class="Apple-style-span" style="color: blue;"&gt;(筆者註：我不贊同)&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;大量興建只租不售的社會住宅，使年輕人以及中下收入家庭享有「&lt;a href="http://hoamon.blogspot.com/2011/12/bull-shit.html"&gt;居住正義&lt;/a&gt;權」。&lt;span class="Apple-style-span" style="color: blue;"&gt;(筆者註：我不贊同)&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;發展技術與職業教育，讓教育與就業市場接軌。&amp;nbsp;&lt;/li&gt;&lt;li&gt;反貪腐，制定「有效」的財產來源不明罪，防堵政客藉「政治獻金」行貪污之實。取消縣市首長、總統參選人補助金制度，結束大牌政客參選致富的惡法。&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;同性婚姻合法化&lt;/span&gt;。&lt;span class="Apple-style-span" style="color: blue;"&gt;(筆者註：難得有政黨會提出這個政見，非常好)&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;維護中華民國現行國家體制。台灣就是中華民國，中華民國就是台灣。&amp;nbsp;&lt;/li&gt;&lt;li&gt;台美關係是台灣安全的重要基石，在呵護「台灣關係法」的前提下，減少軍事和外交開支，杜絕政府機構浪費，移作社會福利經費。&amp;nbsp;&lt;/li&gt;&lt;li&gt;持續豐富「ECFA」的內容，推動更大幅度開放兩岸經貿、旅遊、和文化交往，促使台灣人民與中國人民和平共處，共謀其利。&amp;nbsp;&lt;/li&gt;&lt;li&gt;台灣應積極努力和其他大貿易區或國家，簽訂「自由貿易協定」，擴大市場，分散風險。&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;議題有廣度，候選人們看來也長期關心臺灣政治。&lt;strike&gt;惟一的問題是，我認為他們的票不會超過「綠黨」。投給他們，只是更有機會讓「國、民二黨」獨大，減損「政策多樣性」而已。&lt;/strike&gt;&lt;strike&gt;不然，我們來賭一下，如果「綠黨」 2012 政黨票比「台灣國民會議」少，那我就再捐 6000 元給綠黨(P.S. 還沒問過老婆。但大不了我一年不買書了。更何況，我不會輸地)。&lt;/strike&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;(前面已被刪除的論點，似乎有違反&lt;a href="http://law.moj.gov.tw/LawClass/LawSingle.aspx?Pcode=D0020010&amp;amp;FLNO=104"&gt;選罷法第 104 條&lt;/a&gt;的可能性。只要選後，我的預測錯誤，那即代表我在選前以不實言論宣揚。所以我要改以政策論點來分析，在我心目中，為什麼「綠黨」比「台灣國民會議」好)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;在我心目中，為什麼「綠黨」比「台灣國民會議」好。雙方政見各有優劣，我是憑那幾點來決策的：&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;綠黨是個長期組織，而台灣國民會議像是個臨時組識，我看不到那裡有申請入黨的方法。就像你去消費，有店面的店家，其『信用』就比流動攤販高。&lt;/li&gt;&lt;li&gt;2012 不分區立委有 34 個名額， 5 % 代表 1.7 名。也就是只要過了 5% 門檻，那就分配 1 席，那剩下的 0.7 名怎麼辦? 與其他政黨的小數點比，大的先拿。於是以當選名額數量來看，小政黨在過了 5% 後，它的當選名額不是 1 名，就是 2 名。所以我們來比較「陳嘉君及姚立民」、「賴美惠及鐘寶珠」兩組候選人。我覺得「姚教授」是個理性且有知名度的人，為什麼他的排名會在陳嘉君之後? 因為不分區有婦女保障條款，當選名單中須有 1/2 以上是女性，所以他只好排在後位，這有些可惜了。陳嘉君長期參與反對運動，但反對什麼，我不了解，我能不能接受? 也不知道; &amp;nbsp;希婻.瑪飛洑(賴美惠)是蘭嶼人也是反核人士，鐘寶珠是花蓮人也反蘇花高。我很確定後兩者的反對述求，而且也能包容。&lt;/li&gt;&lt;li&gt;小黨沒資格開那麼多條的戰線，要主導環保、經濟、死列、國家定位、教育…這些議題，要有「人」，黨員少但每條戰線都想談，這不可能。我知道「綠黨」目前是以「環保」為重，我相信他們會在「環保議題」上專心下功夫。&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;在上述第二點中，因為希婻.瑪飛洑是反核，鐘寶珠反蘇花高，我投給她們，這代表我也「反核」、「反蘇花高」是吧!?&lt;br /&gt;&lt;br /&gt;反核的事，我之前說過，我接受核四去取代核一、二、三，但不准再蓋核五+。而蘇花高部份，我當然是 100% 贊同興建的，因為我主修「營建管理」呀! 沒有偉大的工程可以蓋，那我們讀書要幹麼?&lt;br /&gt;&lt;br /&gt;核四還多了核能議題，以土木人來說，這無法 100% 確認是非，所以我只能部份接受。但蓋個蘇花高，完全就是土木人的事，我相信我們會作得很好。只是土木人不是那麼懂得環保，所以我希望讓「反蘇花高」的人去當立委，在環評上能作到「公平分析」，現在有反蘇花高的立委嗎? 沒有，所以正反兩面太不均衡了。&lt;br /&gt;&lt;br /&gt;如果事後決定興建蘇花高了，有個「反蘇花高」的立委作監督，也能確保整個工程有達到環保要求。這是我願意送「反核人士」、「反蘇花高人士」進立院的最大理由：「充分表達反對意見」。&lt;br /&gt;&lt;br /&gt;最後，投不投「綠黨」，那還是要看客倌你們心中的「多元價值觀」是什麼了，投了「綠黨」不代表你的「多元價值觀」與我相同; 不投也不是說你的「多元價值觀」與我向背。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;只要 2012 臺灣選舉圓滿落幕都是代表臺灣人民的意見作了適度的反應，也都是臺灣人民的勝利。不會選了誰就上天堂; 選了別人就下地獄，一切還是得靠自己認真生活。記得，你的目標不見得是政府認同的，因為每一個人都是「獨立自主且無二的」。&lt;br /&gt;&lt;br /&gt;P.S. 如果『保/廢死』議題對你而言是第一優先重要的話，或許你應該也去看看民進黨黨綱行動綱領 3 - 26 條。&lt;br /&gt;&lt;br /&gt;== 後記 ==&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;id 的回文讓我好好再重看本文。我發現有個用詞不夠精準。&lt;br /&gt;&lt;br /&gt;心裡所想的事是『多元價值』，但體現在現實中的事應該改為『政策多樣性』。&lt;br /&gt;&lt;br /&gt;== 2012 年選後補記 ==&lt;br /&gt;&lt;br /&gt;綠黨排位已進入前五，雖然是落選頭，但也只輸給國民黨、民進黨、台聯黨、親民黨。再努力宣傳環保議題吧!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8243666920020654133?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8243666920020654133/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/2012.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8243666920020654133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8243666920020654133'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/2012.html' title='有人說：「綠黨贊同廢死， 2012 政黨票我投不下去」; 我說：「想想多元價值」吧!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-3604hfovHmE/Twzn5SbM1NI/AAAAAAAADe8/TAuIo5RH1dY/s72-c/part_16817_5884094_56843.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8619010683822438805</id><published>2012-01-10T19:53:00.001+08:00</published><updated>2012-01-10T20:01:34.863+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feeling'/><category scheme='http://www.blogger.com/atom/ns#' term='bullshit'/><title type='text'>一樣是拼拼圖，我們有的是臺灣牛的精神，太神勇啦</title><content type='html'>兩則新聞：&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Bd-a5-EYzOg/TwwjXBnaBPI/AAAAAAAADes/XoCCqJiZ7oM/s1600/%25E8%25AA%25BF%25E6%259F%25A5%25E5%25B1%2580%25E6%2595%2591%25E9%2588%2594.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-Bd-a5-EYzOg/TwwjXBnaBPI/AAAAAAAADes/XoCCqJiZ7oM/s640/%25E8%25AA%25BF%25E6%259F%25A5%25E5%25B1%2580%25E6%2595%2591%25E9%2588%2594.png" width="394" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption"&gt;&lt;br /&gt;&lt;a href="http://tw.nextmedia.com/applenews/article/art_id/33949391/IssueID/20120110"&gt;女探員拼鈔救670萬&lt;/a&gt; from 蘋果日報&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ff561wfDT7Q/Twwje6-syHI/AAAAAAAADe0/0d2cs-CY4Vs/s1600/%25E7%25A2%258E%25E7%25B4%2599%25E6%25AF%2594%25E8%25B3%25BD.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-Ff561wfDT7Q/Twwje6-syHI/AAAAAAAADe0/0d2cs-CY4Vs/s640/%25E7%25A2%258E%25E7%25B4%2599%25E6%25AF%2594%25E8%25B3%25BD.png" width="534" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://pansci.tw/archives/10164"&gt;DARPA的碎紙機挑戰被解開了&lt;/a&gt;&amp;nbsp;from 泛科學&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;平平是拼拼圖，我怎麼覺得歪果人用的方法就比較複雜。你看，我們只用了一個調查員，國家才付了她 6 個月的薪水(總和一定不到 60 萬，因為她同時也會作其他事)，讓她作作國中生程度的拼拼圖來搞定這 670 萬的鈔票。投資報酬率真高呀! 半年賺了超過 11 倍，厲害厲害。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這歪果團隊拿了近 150 萬的台幣，拼出來的不過一堆無聊的文件，圖個時間浪費。歪果人真喜歡無事找事作。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8619010683822438805?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8619010683822438805/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_213.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8619010683822438805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8619010683822438805'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_213.html' title='一樣是拼拼圖，我們有的是臺灣牛的精神，太神勇啦'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Bd-a5-EYzOg/TwwjXBnaBPI/AAAAAAAADes/XoCCqJiZ7oM/s72-c/%25E8%25AA%25BF%25E6%259F%25A5%25E5%25B1%2580%25E6%2595%2591%25E9%2588%2594.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-2329773406430253758</id><published>2012-01-10T19:11:00.003+08:00</published><updated>2012-01-10T19:11:36.460+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marathon'/><category scheme='http://www.blogger.com/atom/ns#' term='jog'/><category scheme='http://www.blogger.com/atom/ns#' term='triathlete'/><title type='text'>真的有「過補償現象」!!!</title><content type='html'>跑完生平中的「&lt;a href="http://hoamon.blogspot.com/2012/01/2011.html"&gt;初次全馬&lt;/a&gt;」，休息了 10 天，今天第一次去跑步。結果 10 公里花了 57 分 38 秒，也刷新了個人速度紀錄。過去 10 公里的完成時間多在 60m+ 左右。今天少了 2 分 22 秒。可謂非常大的進步。&lt;br /&gt;&lt;br /&gt;不過，這該歸功於正確的自我練習嗎? No ，還好，我有讀過&lt;a href="http://www.hehong.com.tw/about_ttb.php"&gt;書&lt;/a&gt;。&amp;nbsp;喬福瑞 ：「這是一種過補償現象」。在高強度訓練後，給予適度的恢復時間，身體機能就會調整過頭。&lt;br /&gt;&lt;br /&gt;這是個好現象，把它規劃進賽事訓練計畫中，可以收「合法作弊」之獲。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-2329773406430253758?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/2329773406430253758/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_10.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2329773406430253758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2329773406430253758'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_10.html' title='真的有「過補償現象」!!!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4561581140961187775</id><published>2012-01-09T10:13:00.000+08:00</published><updated>2012-01-09T10:13:26.172+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='program'/><category scheme='http://www.blogger.com/atom/ns#' term='https'/><category scheme='http://www.blogger.com/atom/ns#' term='securities'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>不應該在資料庫中紀錄使用者的明碼密碼</title><content type='html'>看到這個有趣的 Blog ：「&lt;a href="http://plainpass.com/"&gt;我的密碼沒加密&lt;/a&gt;」。我才知道這世上不懂『不應該在資料庫中紀錄使用者的明碼密碼』的程式設計師是如此之多。&lt;br /&gt;&lt;br /&gt;這本應是菜鳥程式設計師才應該犯下的錯，沒想到連存在好幾年的「&lt;a href="http://plainpass.com/2012/01/ecbank-store-passwords-in-plaintext.html"&gt;綠界&lt;/a&gt;」都有。我真的不願相信這是事實。話說回來，對一個合格的 Linux/Unix 管理員，&lt;a href="http://hoamon.blogspot.com/2009/04/password.html"&gt;不能有明碼密碼&lt;/a&gt;根本就是常識。&lt;br /&gt;&lt;br /&gt;過去，我還想&lt;a href="http://hoamon.blogspot.com/2009/05/google-pgp.html"&gt;用 PGP 驗證&lt;/a&gt;來取代『在伺服器資料庫紀錄使用者密碼』，這法子絕對能確保「使用者密碼」不會外洩。只是，我沒遇到那個使用者能接受自己產生一對公私錀，利用它們來作登入的。&lt;br /&gt;&lt;br /&gt;雖然我沒作出個 PGP 驗證的實際上線系統，但 &lt;a href="http://hoamon.blogspot.com/2011/04/how-to-get-free-https-web-certification.html"&gt;StartSSL.com&lt;/a&gt;&amp;nbsp;作到了，它不是用 PGP 加解密，是另一種公私錀原理。所以外國月亮比較圓是真的。&lt;br /&gt;&lt;br /&gt;在我所撰寫過的系統中，只要有帳號認證的，一定會在伺服器端用 md5/sha1 作 hash ，另外也會在瀏覽器端用 javascript 作 md5 hash 。&lt;br /&gt;&lt;br /&gt;伺服器端 hash 是防自己人及入侵者，防入侵者不用講了，這是一定要的，但「自己人」為什麼要防呢? 想想看，一個系統內幾千甚至上萬個會員的帳號/密碼都可以給自己人看，那這些自己人難道不會換工作，難道不會對老闆不爽，難道不會被「&lt;a href="http://en.wikipedia.org/wiki/Social_engineering"&gt;社交&lt;/a&gt;」，將密碼變暗碼，除了保護使用者外，也是為自己人免責，至少使用者自己被社交了，他也不能栽髒我們。&lt;br /&gt;&lt;br /&gt;而瀏覽器端的 md5 hash 又是為了什麼? 因為我寫的網頁系統少能跑在 https 上，無法為使用者輸入的密碼作加密以防止&lt;a href="http://hoamon.blogspot.com/2011/04/how-to-get-free-https-web-certification.html"&gt;中間人攻擊&lt;/a&gt;。所以我只好用 md5 函式 hash 過使用者明碼密碼，這雖無法完全避免使用者帳戶被盜用(在明碼傳輸中，它就是有可能遭受中間人攻擊)，但至少讓它們難以反推用戶的原始密碼。&lt;br /&gt;&lt;br /&gt;另外也曾在一個「歷史系統」中，在瀏覽器端部份是使用 rsa 加密的。因為它之前只有使用「伺服器端 hash」作保護，而當我要再加上「瀏覽器端 hash 」功能時，會面臨「無法使用它的明碼密碼來作自我 hash 」。&lt;br /&gt;&lt;br /&gt;是的， hash 也是有技巧的，不要用同一個 salt key 作，要不然入侵者破了一個使用者密碼後，其他的也都猜出來了。所以瀏覽器端，我都是用使用者原始密碼內的某個字去當 salt 來作 hash 的。&lt;br /&gt;&lt;br /&gt;於是在「歷史系統」中，要把它一次轉成「有瀏覽器端 hash 」功能的話，勢必要每個使用者回來登入一次，我才有機會將系統轉移。這不是件容易的事。退而求其次，使用 rsa 加密就是不錯的方法。這方法是某個學弟找到的，原本我還不知道有原生的 js 函式庫能作 rsa 加密呢!&lt;br /&gt;&lt;br /&gt;提了這些方法說明保護使用者明碼密碼不是作不到，只是有點麻煩而已。&lt;br /&gt;&lt;br /&gt;然而那些程式設計師真的只是怕麻煩才不想使用 hash 密碼嗎? 根本不懂的程式設計師，就不要講了，剩下沒用 hash 的，除了怕麻煩外，我猜還怕另一樣東西： debug 。&lt;br /&gt;&lt;br /&gt;紀錄「使用者明碼」密碼的惟一好處就是能操作「使用者」所能看到的頁面。&lt;br /&gt;&lt;br /&gt;試想一個場景，某天使用者打客服電話，詢問歷史訂單事宜，他一直抱怨看不到之前的一筆 Ubuntu NB 訂單，可是客服用後台管理系統查詢，卻明確地說明使用者真的有這筆訂單。那這問題要如何解決?&lt;br /&gt;&lt;br /&gt;如果客服有使用者的帳密，他是不是自己登入系統，來到相同頁面觀看，就能了解到底是系統有 bug ，還是使用者不會操作。有可能問題只是出在「訂單分頁」不夠明確，使用者不知道要點到第二頁去觀看訂單。&lt;br /&gt;&lt;br /&gt;讓客服知道明碼密碼以便可以看到與使用者相同介面的網頁是不得以的方法嗎? 不。我們有更安全的作法。&lt;br /&gt;&lt;br /&gt;我們的作法是在客服後台，有一個轉移帳戶的頁面，讓他填入帳號(且不用輸入密碼)後可轉換成任一個使用者，我們再紀錄那一個客服曾轉換成誰，又作了什麼，這樣客服不用知道使用者的明碼密碼，也可以變成那一個使用者，而且我們也知道客服幹了什麼好事，所以客服可以在面臨無法排除的困難時才會丟 ticket 給我們，這不是三方皆喜：使用者安全、客服好作事、程式設計師省事。&lt;br /&gt;&lt;br /&gt;那這架構怎麼作? 因為程式語言、框架百百種。我只說明觀念，請程式設計師們自行發揮，當然有問題歡迎發問，或覺得我的方法可以改進的，也歡迎指教。&lt;br /&gt;&lt;br /&gt;認證系統多半是使用 Session 架構來確認連線的使用者身份為何? 其他用 cookie 或是 GET 連結的也差不多，都是把使用者識別 ID (可能是使用者帳號，也可能是臨時編號)藏在某個變數之中，讓程式在執行時，能找到一個 key 值去對應資料庫中的使用者。&lt;br /&gt;&lt;br /&gt;所以我們只要在那個對應資料庫使用者的程式中，多加上一個判斷式，如果有另一個轉換識別 ID 時，就把原使用者識別 ID 換成這個轉換識別 ID 。&lt;br /&gt;&lt;br /&gt;例如： 何阿蒙客服登入系統後，連線 request 的使用者識別 ID 為 hoamon ，當他設定好轉換帳號為 grace 後，連線的 request 物件多了一個 grace 的轉換識別 ID 。這樣「對應資料庫使用者的程式」在運行時，就會知道使用者得用 grace 去代換，而不是 hoamon 。而我們的 log 函式在發現 request 物件多了轉換識別 ID 後，也會把『 hoamon =&amp;gt; grace 』及所作的事一起紀錄到資料庫中。&lt;br /&gt;&lt;br /&gt;這樣就能完全排除「明碼密碼」的使用了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4561581140961187775?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4561581140961187775/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_09.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4561581140961187775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4561581140961187775'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_09.html' title='不應該在資料庫中紀錄使用者的明碼密碼'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-2840336197296171832</id><published>2012-01-08T00:13:00.003+08:00</published><updated>2012-01-08T12:44:52.670+08:00</updated><title type='text'>表象易見，本質難懂</title><content type='html'>我高中時，非常喜歡看電影，這也是受到父親偏好的影響。他加入了某個影帶店的會員，繳 1000 元可以看 40 片。&lt;br /&gt;&lt;br /&gt;在某個暑假我就看了快 200 片的影帶，但其中約有 80 片是「&lt;a href="http://zh.wikipedia.org/wiki/%E4%BA%82%E9%A6%AC%C2%BD"&gt;亂馬1/2&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;當時，我最喜歡的導演是伍迪艾倫及楊德昌。他們各有一部電影一直影響我的人生：伍迪艾倫的「&lt;a href="http://en.wikipedia.org/wiki/Shadows_and_Fog"&gt;影與霧&lt;/a&gt;」及楊德昌的「&lt;a href="http://zh.wikipedia.org/wiki/%E6%A5%8A%E5%BE%B7%E6%98%8C"&gt;獨立時代&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;他們都很喜歡把思想放在實際對話裡面，這對「心智未開」的高中生而言，有比較容易理解。不像蔡明亮的電影實在是非常抽象，不是我那年代能接受的東西。&lt;br /&gt;&lt;br /&gt;在影與霧中，有一段男主角伍迪艾倫與女主角的對話：&lt;br /&gt;&lt;br /&gt;boy: You see that very bright star up in that direction?&lt;br /&gt;&lt;br /&gt;girl: Mm-hm.&lt;br /&gt;&lt;br /&gt;boy: For all we know, that star could have disappeared a million years ago,...&lt;br /&gt;&lt;br /&gt;boy: ..and it's taken the light from it a million years to reach us.&lt;br /&gt;&lt;br /&gt;girl: So what are you saying?  That star is not there?&lt;br /&gt;&lt;br /&gt;boy: That it might not be there.&lt;br /&gt;&lt;br /&gt;girl: Even though l can see it with my own eyes?&lt;br /&gt;&lt;br /&gt;boy: That's right.&lt;br /&gt;&lt;br /&gt;眼見不一定為憑，表象與本質不一定相符。這個道理我一直謹記在心。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-2840336197296171832?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/2840336197296171832/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_08.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2840336197296171832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2840336197296171832'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post_08.html' title='表象易見，本質難懂'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-9004996824568338689</id><published>2012-01-03T14:47:00.001+08:00</published><updated>2012-01-03T14:47:38.721+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politic'/><title type='text'>2012/1/14 我的政黨票投 ⓼ 綠黨</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-suD2i9-kdJ0/TwCKyi_HujI/AAAAAAAABzg/i_CybgOErTE/s400/405656_349765708372015_332555876759665_1629177_558823866_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="452" src="http://4.bp.blogspot.com/-suD2i9-kdJ0/TwCKyi_HujI/AAAAAAAABzg/i_CybgOErTE/s640/405656_349765708372015_332555876759665_1629177_558823866_n.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-9004996824568338689?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/9004996824568338689/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/2012114.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/9004996824568338689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/9004996824568338689'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/2012114.html' title='2012/1/14 我的政黨票投 ⓼ 綠黨'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-suD2i9-kdJ0/TwCKyi_HujI/AAAAAAAABzg/i_CybgOErTE/s72-c/405656_349765708372015_332555876759665_1629177_558823866_n.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4855679492668065234</id><published>2012-01-02T21:16:00.000+08:00</published><updated>2012-01-03T08:09:28.192+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>科學是什麼?!</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-13ByNgQDdH0/TwGbXwUWFTI/AAAAAAAADd0/_TR5gJX2BBQ/s1600/Screenshot-4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="412" src="http://1.bp.blogspot.com/-13ByNgQDdH0/TwGbXwUWFTI/AAAAAAAADd0/_TR5gJX2BBQ/s640/Screenshot-4.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;多麼可怕的命令列&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;很早就想寫寫我心目中的「科學是什麼?」這樣的主題文章。&lt;br /&gt;&lt;br /&gt;但在談談我心目中的「科學」前，先來看看大家&lt;a href="http://www.zdnet.com.tw/news/video/0,2003031390,20151800,00.htm"&gt;對「科學家」的態度是什麼&lt;/a&gt;。聽不懂裡面的英語，沒關係我也不是全聽得懂，在影片下方有中文說明，就那麼兩句話有看懂就夠了。&lt;br /&gt;&lt;br /&gt;曾幾何時，我們開始習慣要求操作介面要有親和力，東西不好上手，不夠防呆，那麼它就沒有市場，而那些難用、長相奇醜無比的東西就一定是科學家用的，因為要夠聰明才能破解它的使用之道，說明手冊厚厚一本就註定沒正常人會看，而且這現象還隱含了「沒有人想要當『科學家』」這件事。&lt;br /&gt;&lt;br /&gt;Ballmer 談話的影片，敲醒了我的疑惑：「為什麼我就是跟 Windows 不合?」每每看到 W 還是 M 開頭的商品，第一眼的感覺就是反感。原來這是因為『我是科學家』，所以註定了不能用 Windows 系列產品。&lt;br /&gt;&lt;br /&gt;不知道，有沒有人還記得&lt;a href="http://zh.wikipedia.org/wiki/%E5%8B%95%E5%8B%95%E8%85%A6"&gt;動動腦&lt;/a&gt;? 這個玩具談不上親和力，更別說是照了說明書把各個零件組合好後，你就會懂得蜂鳴器發聲原理。所以你也別想從這個玩具身上學到什麼科學原理。&lt;br /&gt;&lt;br /&gt;對小時候的我們來說，所能作的就是透過一堆五顏六色的電阻、電容加上電池、蜂鳴器、燈泡去組合出一個看似神奇的結果，可能是一首歌、也可能是特別的閃燈模式。總之，從這個玩具身上我們就像是看到魔法一樣。而這吸引了我想要去了解「科學」。我想要知道為什麼它會有這樣的效果。&lt;br /&gt;&lt;br /&gt;所以當個科學家是我小時候的志願。不過從小到大，其實志願是一直變的，也曾想要當個立委(而且要進教育委員會)、農夫、財稅律師、會計師、建築師，但就是沒想過要當個「程式設計師」。&lt;br /&gt;&lt;br /&gt;結果呢! 程式設計是我現在糊口以及熱愛的工作。小時候，某部電視劇帶給我對「程式設計師」的印象是能作出一堆圈圈、方格在螢幕上跑來跑去的動畫，而且這個可憐的「程式設計師」在交出了 5.25 吋軟碟後，成果就被別人複製走了。說來可笑，這個可憐的故事是引導我&lt;span class="Apple-style-span" style="color: red;"&gt;不要&lt;/span&gt;唸電機、資工科系的一個重要因素。&lt;br /&gt;&lt;br /&gt;但不管志願怎麼變，我不曾放棄「信仰科學」。這也是在看完這篇文章「&lt;a href="http://pansci.tw/archives/10448"&gt;這世界出了什麼問題&lt;/a&gt;」後，趨使我寫下本篇文章來作為回應的最大動機。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;該文中，作者認為現今世界的問題在於「科學家」不用通俗語言把真理說明清楚，而放任小道八卦、沒價值的訊息充斥社會。這觀念隱含著科學家是救世真主，沒有「科學家」存在，則世道難以前進。&lt;/div&gt;&lt;br /&gt;過去我當然也是這麼認為的，如果不依真理行事，那麼社會自然走向毀滅。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在看過「克里斯多夫．雅歌塔」的「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010021115"&gt;怪物&lt;/a&gt;」劇本後，我改觀了。人不一定是要懂得真理才能生活，而且不見得菁英領導的社會才有效率。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;是的，我希望當一個「科學家」，但我不見得相信「科學家」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我所信仰的「科學」，容我用幾句「電影 &lt;a href="http://www.imdb.com/title/tt1186830/"&gt;Agora&lt;/a&gt; 」中的對話來說明。 synesius 是基督教地方主教，也是 agora 的學生，而 agora 是希臘女哲學家。當 synesius 要求 agora 入基督教來保命時， agora 說了以下內容：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;agora: "Synesius, you don't question what you believe."  (synesius，你對你的信仰忠誠)&lt;br /&gt;agora: "I can not."  (我不能)&lt;br /&gt;agora: "I must."  (我必須懷疑)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;「懷疑」就是我所認為的「科學」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因為「懷疑」所以我們知道火不是&lt;a href="http://zh.wikipedia.org/wiki/%E7%87%83%E7%B4%A0"&gt;燃素&lt;/a&gt;，是一種&lt;a href="http://zh.wikipedia.org/zh-tw/%E7%84%B0"&gt;氧化反應&lt;/a&gt;。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因為「懷疑」所以我們知道&lt;a href="http://zh.wikipedia.org/zh-tw/%E6%97%A5%E5%BF%83%E8%AA%AA"&gt;地球不是宇宙的中心&lt;/a&gt;，而太陽也不是。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因為「懷疑」所以我們又知道地球是宇宙的中心，而且太陽也是，甚至連人馬座星雲也是。這句話似乎很矛盾。不過，我忘了這現象的術語是什麼。它的原理是這樣的，以地球儀為例，在它的表面上，任何一點都可以說是整個平面的中心，這現象是發生在 N 維座標但限定在 N-1 維空間上發展時。像是地球儀表面就是一種 3D 座標但受限於 2D 空間的結果。而宇宙是一種 4D 座標(含時間)但受限於 3D 空間的結果。&lt;br /&gt;&lt;br /&gt;因為「懷疑」所以我們知道時間不是絕對的，而是&lt;a href="http://zh.wikipedia.org/wiki/%E7%9B%B8%E5%B0%8D%E8%AB%96"&gt;相對的&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;因為「懷疑」所以我們知道&lt;a href="http://zh.wikipedia.org/wiki/%E9%87%8F%E5%AD%90%E5%8A%9B%E5%AD%B8"&gt;上帝也會玩骰子&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;科學之所以為科學，就是它們能自我修正。當代理論或是真理，在若干年後被「科學家」修正時，並不會有人認為是世界末日，反而那是科學的進步。&lt;br /&gt;&lt;br /&gt;這個世界的問題不在於「科學家」沒能發揮「宣揚真理」的角色。而是普羅大眾沒有「懷疑」的精神。&lt;br /&gt;&lt;br /&gt;當媒體餵你吃大便時，你吃大便;&lt;br /&gt;當廠商餵你吃大便時，你吃大便;&lt;br /&gt;當政府餵你吃大便時，你吃大便;&lt;br /&gt;當科學家餵你吃大便時，你還是吃大便。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4855679492668065234?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4855679492668065234/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4855679492668065234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4855679492668065234'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/blog-post.html' title='科學是什麼?!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-13ByNgQDdH0/TwGbXwUWFTI/AAAAAAAADd0/_TR5gJX2BBQ/s72-c/Screenshot-4.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8646040930979701940</id><published>2012-01-01T21:41:00.000+08:00</published><updated>2012-01-02T12:37:29.690+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marathon'/><title type='text'>2011 中潭公路馬拉松完賽</title><content type='html'>今年&lt;a href="http://hoamon.blogspot.com/2011/11/blog-post.html"&gt;沒報三鐵&lt;/a&gt;，改報 42.195 公里的馬拉松賽並挑戰 6 小時內完賽，其實也就是要求及格而已，結果還好有達陣。&lt;br /&gt;&lt;br /&gt;雖然是第一次跑全馬，但完賽心情沒第一次比完三鐵來得喜悅。大概是「已知道自己的能耐」，所以全馬完賽似乎也覺得是應該的。不像第一次比三鐵前，還在擔心游泳項目能不能游完? 會不會被救生員撈起來? 而這次的全馬，我大約知道自己跑得完，差別是能不能在 6 小時以內完成而已。&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-uyyhyIzFzCc/TwBCIO2i1jI/AAAAAAAADco/chiCJQ56oEA/s1600/P1020674.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-uyyhyIzFzCc/TwBCIO2i1jI/AAAAAAAADco/chiCJQ56oEA/s640/P1020674.JPG" width="480" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;完賽證書&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;完賽證書在過終點線後馬上就發給我了，效率會這麼快，是因為本次比賽採用 AMOS RFID 方案。下圖是綁在鞋帶上的 RFID 標籤：&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ov-y_4KD56U/TwBDk1a_3-I/AAAAAAAADc0/6JfDQTADPvE/s1600/P1020678.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-ov-y_4KD56U/TwBDk1a_3-I/AAAAAAAADc0/6JfDQTADPvE/s400/P1020678.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;AMOS 的 RFID TAG&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;因為知道自己不會在 3 小時內完賽，所以我的比賽裝備算是重裝備等級，下圖是我比賽時的用具，除了綠色的備用水壺是放在衣物袋中，沒跟著出場，其他的全用上了，而且能量果凍還帶了兩包。&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RszCVy5pleo/TwBIeDQ7h8I/AAAAAAAADdA/esBjbQLUBpY/s1600/P1020669.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="468" src="http://2.bp.blogspot.com/-RszCVy5pleo/TwBIeDQ7h8I/AAAAAAAADdA/esBjbQLUBpY/s640/P1020669.JPG" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;比賽時裝備(除綠色備用水壺)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;比賽時間花得比別人久，就表示我得考慮肝醣燃燒問題。人在高強度運動時，燃燒的是葡萄糖，在低強度且持久的運動上，燃燒的是肝醣，而肝醣的主要來源就是蛋白質及脂肪。優秀選手的平均速率遠高於我，所以對他們而言，葡萄糖的補充量及頻率很重要，就算他們開始燃燒肝醣了，也因為比賽時間少，所以在賽後再補充碳水化合物、蛋白質及脂肪都還來得及。&lt;br /&gt;&lt;br /&gt;而我的比賽時間將近 6 小時，從早上 8 點到下午 2 點，如果在賽後才補充，那麼身體運轉機制可能會出問題，又或者比賽時沒有能量可以燃燒，反而讓速度更低，甚至無法完賽。因為人體運作是種非線性現象，也不遵守交換律，不能說將每天喝 3 公升的水，改成一個月後一次喝下 90 公升，所以我得進行比賽中補給。&lt;br /&gt;&lt;br /&gt;事實上，在給水站中，也有香蕉、草莓等水果，或是巧克力可以食用，何必自己準備呢! 問題就在於我跑得比別人慢，所以到了給水站，我還有吃到香蕉，但是巧克力都是只看見盒子，沒看過內容物的。還是靠自己最好。尤其是我的比賽時間有跨過中午，所以會面臨肚子餓的問題，叫我一直吃香蕉，也是非常痛苦的。&lt;br /&gt;&lt;br /&gt;我準備的中餐是「法國麵包內夾奶油及胡椒鹽」，說口感有口感，說「碳」有「碳」，說脂肪有脂肪，說鈉有鈉，真是完美，唯一的問題是腰包太小，裝的份量不夠。而且，我太晚吃了，一直跑到 37 公里左右感覺肚子餓了，才休息吃麵包。或許提早到 30 公里就吃，表現會更好。&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-TZTtYuuuZW8/TwBYyrXt4AI/AAAAAAAADdM/TJmilC_VRyw/s1600/P1020673.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-TZTtYuuuZW8/TwBYyrXt4AI/AAAAAAAADdM/TJmilC_VRyw/s640/P1020673.JPG" width="465" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;出發前的"英姿"&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;離開家裡時，埔里還下著雨，一直在考慮要穿著 GORE-TEX 外套，還是自行車風衣比賽。最後決定穿這件 GORE-TEX 去跑，因為我怕冷，而且如果下雨不止的話，自行車風衣是無法擋住寒氣的。這個決定是對的，比賽的天氣大概是到中午 12 點才開始有太陽，溫度也才開始回升。依我過去長距離慢跑經驗，跑到後來，身體常常無法產生熱來維持我的體溫，這件外套就能幫我維持體溫。&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-N_ZPHbxgBjU/TwBbSFr0oHI/AAAAAAAADdY/RA_GY4RwTDA/s1600/IMAG0178.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-N_ZPHbxgBjU/TwBbSFr0oHI/AAAAAAAADdY/RA_GY4RwTDA/s640/IMAG0178.jpg" width="482" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;比賽前&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;比賽起點在草屯工藝中心。這時天空還是飄著細雨。簡單作些拉筋、暖身的動作， 8 點是比賽開始時間。&lt;br /&gt;&lt;br /&gt;或許是面對第一次的馬拉松比賽，心情不曉得是緊張還是興奮，心跳還滿快的。不像&lt;a href="http://hoamon.blogspot.com/2010/10/2010-515k.html"&gt;第一次三鐵比賽&lt;/a&gt;，我明確地知道當時的心情是『害怕』。&lt;br /&gt;&lt;br /&gt;開跑後，剛開始的速率，在 5 公里前是維持在 6 分鐘/每公里，然後慢慢變慢，從 7 分、 7 分半、 8 分、 8 分半，一直到折返點時，我總共花了 2 小時 32 分，平均速率約是 7 分/每公里。&lt;br /&gt;&lt;br /&gt;整個比賽，我補水 4 次(加滿水壺且有加鹽的)，大約是在 14 公里、 23 公里、 28 公里、 37 公里，其他的給水站，則只是喝杯大會提供的杯水或是運動飲料。另外則在 17 公里給水站及 21 公里折返點時，各吃了一個能量果凍，最後是在 37 公里給水站時，坐在路邊護欄上休息，並吃完我的法國麵包，也下定決心，後面的 7 公里不再休息，要一股作氣跑完，喔~不是，是痛完。&lt;br /&gt;&lt;br /&gt;喝水這檔事，在 14 、 23 公里時，有明顯的變化，在這兩個路段喝水後，我的體能明顯提升，心情更加興奮。但在之後的補水，就感受不出這種變化了，我想是因為身體瓶頸不再是水份及鈉，而是肝醣及乳酸了。&lt;br /&gt;&lt;br /&gt;在前半部的比賽中，我的心情從緊張(或是興奮)到樂於比賽，看我到折返點時，有多麼開心：&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZT-kdnxhT6Q/TwBbZNN0SBI/AAAAAAAADdg/wjpbG0bILGI/s1600/IMAG0180.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-ZT-kdnxhT6Q/TwBbZNN0SBI/AAAAAAAADdg/wjpbG0bILGI/s640/IMAG0180.jpg" width="482" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;請工作人員幫忙拍攝的，他可能知道比賽者的心情，當有人掏出手機時，他立刻主動詢問要不要幫忙拍照&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;在過了折返點後，立刻脫下襪子，跑了 21 公里，此時腳底板有些痛了，而後來半程比賽下坡路段也比較多，我怕腳趾頭又被擠到黑青了。不過這些痛楚，都算還好，畢竟我之前就能跑到&lt;a href="http://hoamon.blogspot.com/2011/12/19-149.html"&gt; 19 公里&lt;/a&gt;了，而且那還是 3 % 坡度的路段，今天這個馬拉松場地，平均坡度不過是 0.7 % 。這也是之前我跑 19 公里要花 149 分，而這次卻花了 152 分就能跑了 21 公里的原因：比賽強度比訓練強度低。&lt;br /&gt;&lt;br /&gt;在 24 公里前，我的心情非常快樂，因為我知道現在的每一步都是我人生的第一次，第一次跑到 23.00076 公里，第一次跑到 23.00152 公里…，直到 24 公里後，我開始意識到腳底板的痛楚大於興奮的心情。跑步人生開始進入黑暗了。&lt;br /&gt;&lt;br /&gt;快到 30 公里時，我的左腳踝也來湊熱鬧了，自從用了&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010494628"&gt;姿勢跑法&lt;/a&gt;後，除了腳底板外，其他部位就沒痛過了，而腳底板痛是因為起水泡了。應該也是從來沒跑過這麼遠，所以我「姿勢跑法」還不夠標準，經不起檢驗。&lt;br /&gt;&lt;br /&gt;好了，不管「我的姿勢跑法」有沒有標準，當下之務，就是要完賽。腳踝雖然痛，但好像也不是什麼大問題，所以我讓步幅再小一點，步頻高一點，讓速率變慢一些。等到受不了時，就讓自己休息一下。&lt;br /&gt;&lt;br /&gt;在比賽前，我有下一個決心：「不能輸過&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010419708"&gt;村上春樹這個愛嘮叨的老頭&lt;/a&gt;」，就算速率比不上他，但心態不能輸。這老頭子，可是「至少到最後都沒有用走的」，那我比他年輕怎麼多，怎麼能用走的。於是我除了在給水站拿水外，只要是跑不下去的，我就是停在原地休息、拉筋。&lt;br /&gt;&lt;br /&gt;30 公里之後，我開始幻想終點景像為何來安慰自己，直到 37 公里時，我想給自己一個鼓舞：「吃完法國麵包再跑」，一方面緩解腳底板及腳踝疼痛，另一方面則是提升自己的心靈強度。下定決心在這次約 10 分鐘的休息後，就一路跑到底了。&lt;br /&gt;&lt;br /&gt;就這樣屏著這口氣，跑得就算慢，也不停了(嗯…其實印象中，好像還是有停了一次、還是二次的樣子，時間都不到 10 秒)。最後在花了 5 小時 42 分 32 秒後，我回到終點。&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WaVwMU_d6E8/TwBbey5BGMI/AAAAAAAADdo/PN4_UmB7Qps/s1600/IMAG0182.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-WaVwMU_d6E8/TwBbey5BGMI/AAAAAAAADdo/PN4_UmB7Qps/s640/IMAG0182.jpg" width="481" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;過終點後，與岳父合影留念&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;岳父會跟我去草屯，主要是我老婆要求的，她認為我跑完馬拉松後會很累，不應該自己開車回來。老婆的這個建議實在是太明智了，跑完馬拉松後，我的雙腳真的很沒力，而且我忘了作緩和運動，以致於上車後，小腿快要抽筋。如果自己開車，難免有危險。&lt;br /&gt;&lt;br /&gt;開車回程中，看到最後一名選手在不到 1 公里的距離下，還有 4 分鐘才到 6 小時。所以我猜這次有完賽的選手都是及格的(不過，也有可能是更後面的選手被強迫坐大會接送車回來)，在此恭喜大家。&lt;br /&gt;&lt;br /&gt;而另外，則有部份的選手在半途就面臨抽筋或是肌肉疼痛而中止比賽，我想可能是這次場地與其他場地環境不同，一個原因是坡度比較大，另一個原因則是溫度比較低。這兩者都會影響比賽成績。&lt;br /&gt;&lt;br /&gt;在這次全馬比賽中，女選手比例非常低，應該是比我之前參加的三鐵比賽還低。不過，我總共也只贏過一位女選手。被一堆老婆婆、阿姨追過，還有女選手是穿拖鞋跑的，我也是輸她。但難道我要感覺羞恥嗎? 不! 人外有人，天外有天，就算男生整體平均是高於女生整體平均的，但以常態分配曲線來看，就是有些女生是贏過某些男生的。而且，馬拉松比賽，真的不是隨便愛跑的人就會報名參加。來比賽的，通常有三兩三，輸給女生中的菁英，又何妨呢!&lt;br /&gt;&lt;br /&gt;比完全馬後與三鐵比較，我在膝蓋運用上，是大大地有進步，不但不會痛，而且賽後(過了一天)，只有肌肉酸痛，沒有其他的後遺症發生。今天幾乎可正常走路了。唯一的難處是在上下樓梯。所以我要大力向各位推薦『&lt;a href="http://search.books.com.tw/exep/prod_search_redir.php?key=%E5%A7%BF%E5%8B%A2%E8%B7%91%E6%B3%95&amp;amp;area=mid&amp;amp;item=0010494628"&gt;跑步，該怎麼跑?&lt;/a&gt;』這本書。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8646040930979701940?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8646040930979701940/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2012/01/2011.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8646040930979701940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8646040930979701940'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2012/01/2011.html' title='2011 中潭公路馬拉松完賽'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-uyyhyIzFzCc/TwBCIO2i1jI/AAAAAAAADco/chiCJQ56oEA/s72-c/P1020674.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-3086495499420761703</id><published>2011-12-25T15:36:00.005+08:00</published><updated>2012-01-08T16:00:44.025+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marathon'/><category scheme='http://www.blogger.com/atom/ns#' term='jog'/><category scheme='http://www.blogger.com/atom/ns#' term='triathlete'/><title type='text'>19 公里花了 149 分</title><content type='html'>昨天(12/24)，許多人準備過耶誕夜的時候，我完成了 19 公里的慢跑，每公里平均 7 分 50 秒的速度，換算成全馬後，在身體沒發生異狀(抽筋、脫水…)的條件下，這種速率應該也是在及格邊緣( 6 小時完賽)。&lt;br /&gt;&lt;br /&gt;昨天本來是想跑到 21 公里的，剛好是半馬的長度。但在 19 公里時，已經是下午 6 點 10 分了，入夜的埔里有點冷，我有點受不了，而且小腿肌肉也有些緊繃。擔心受傷，也就結束我的挑戰。&lt;br /&gt;&lt;br /&gt;再過一個禮拜，就是我人生中&lt;a href="http://hoamon.blogspot.com/2011/11/blog-post.html"&gt;第一場馬拉松&lt;/a&gt;了，老婆叫我『盡力而為就好』，我回答她：「我這個人&lt;a href="http://hoamon.blogspot.com/2007/04/002.html"&gt;最不喜歡拼命&lt;/a&gt;了，放心吧」。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-3086495499420761703?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/3086495499420761703/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/12/19-149.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3086495499420761703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3086495499420761703'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/12/19-149.html' title='19 公里花了 149 分'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-974137339262237710</id><published>2011-12-22T08:16:00.000+08:00</published><updated>2011-12-22T08:16:51.645+08:00</updated><title type='text'>莫名奇妙的一封信</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OTesbw-M_AM/TvJw6_JLwOI/AAAAAAAADa8/w5rMf5DAaHk/s1600/IMAG0170.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-OTesbw-M_AM/TvJw6_JLwOI/AAAAAAAADa8/w5rMf5DAaHk/s640/IMAG0170.jpg" width="481" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;今天(12/22)在我家門口地上發現一封不屬於我們的信，它的投遞門牌跟我家差了 10 號。第一個念頭是它寄錯了。但仔細看看，才發現這個未貼郵票，非由郵差寄送的信件是有問題的。&lt;br /&gt;&lt;br /&gt;因為它的收信人不是我，理論上，我該在信件上註明「投遞錯誤」，然後丟入郵筒讓郵局去處理。但因為它沒有貼郵票，這不屬於「&lt;a href="http://law.moj.gov.tw/LawClass/LawSingle.aspx?Pcode=K0050001&amp;amp;FLNO=4"&gt;郵件&lt;/a&gt;」，不關郵局的事，何況它上面沒寫寄件人地址，也沒得退回。&lt;br /&gt;&lt;br /&gt;那我應該幫忙把這封信拿到隔壁 5 間房的收件人手上嗎? 仔細看看上面文句，寄信人應該與收信人是朋友關係，但他(她)卻搞錯住址! 這不合理。&lt;br /&gt;&lt;br /&gt;所以我認為寄信人就是要我幫忙轉遞的，而會這麼作的原因，在於「這封信」的內容有「違法」的可能性。或許它是恐嚇信。&lt;br /&gt;&lt;br /&gt;那我應該拆開這封信，看看裡面是什麼嗎? 反正它沒貼郵票，不是郵件，不受郵政法的限制。但「妨害秘密罪」就不曉得了，這封信算「&lt;a href="http://law.moj.gov.tw/LawClass/LawSingle.aspx?Pcode=C0000001&amp;amp;FLNO=315"&gt;封緘信函&lt;/a&gt;」嗎? 我不是很清楚。而且也有可能寄信人搞了這一大圈就是要我自行拆開信件，然後發現奇怪的事。我不喜歡這種被騙的感覺。&lt;br /&gt;&lt;br /&gt;所以我的解決之道是放在我家門口的資源回收箱，它是個公開場所(有些資源回收阿伯會去那找東西)，而且我寫了這篇 blog 公告周知。這樣一來，我鐵定不算「隱匿他人之封緘信函」了。&lt;br /&gt;&lt;br /&gt;另外還提供各位觀眾滿足好奇心的機會，去看看今晚的 33 台倒底要講什麼!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-974137339262237710?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/974137339262237710/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/12/blog-post_22.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/974137339262237710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/974137339262237710'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/12/blog-post_22.html' title='莫名奇妙的一封信'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-OTesbw-M_AM/TvJw6_JLwOI/AAAAAAAADa8/w5rMf5DAaHk/s72-c/IMAG0170.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-3128210982361962559</id><published>2011-12-17T22:19:00.002+08:00</published><updated>2011-12-17T22:19:20.515+08:00</updated><title type='text'>請惠予捐款綠黨</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Eztl__zEovA/TuyhOwsMunI/AAAAAAAADaE/O786m9dGX3w/s1600/greenparty.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Eztl__zEovA/TuyhOwsMunI/AAAAAAAADaE/O786m9dGX3w/s1600/greenparty.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;上面是捐款給綠黨的收據，距離投票日不到 30 天了，我的捐款流水號還只是 44 號而已，這其中還得扣除「未完成捐款流程」的部份，實際上在網路捐款的人可能不到 40 人。&lt;br /&gt;&lt;br /&gt;為什麼我會知道有「未完成捐款」的紀錄，因為在作 ATM 轉帳前，我是選擇 WebATM 轉帳的，結果發現被導到綠界去，所以我想綠黨應該會被抽比較多的手續費，所以我才改成 ATM 轉帳，而當時的&amp;nbsp;WebATM 轉帳交易編號就是 43 。&lt;br /&gt;&lt;br /&gt;說實在話，我不完全贊同綠黨主張，像是核四案，我是傾向拿它來取代核一、二、三的，不過，除了核四外，以後就不再接受核五了。&lt;br /&gt;&lt;br /&gt;會支持綠黨，主要有幾個原則：&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;多樣性： 只問藍綠太無聊了&lt;/li&gt;&lt;li&gt;理想性： 他們的參選人及黨員是有中心思想，也具備實現的勇氣。不像某個黨的白皮書撰寫人們，在主角當選後，居然說他們不戀棧權位，所以不入閣，&lt;strike&gt;拷&lt;/strike&gt;那這樣你寫的東西誰要負責實作，果然到後來，主角就只好說那是選戰口號，是目標，但不一定能實現 。&lt;/li&gt;&lt;li&gt;愛地球： 誰不愛地球呢! 只是程度差別，看起來，他們是比一般人更愛地球的。&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;另外先預告，這次 2012 立委的政黨票，&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;我一定是投給綠黨的&lt;/span&gt;。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-3128210982361962559?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/3128210982361962559/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/12/blog-post_17.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3128210982361962559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3128210982361962559'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/12/blog-post_17.html' title='請惠予捐款綠黨'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Eztl__zEovA/TuyhOwsMunI/AAAAAAAADaE/O786m9dGX3w/s72-c/greenparty.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-329499293686963485</id><published>2011-12-13T09:22:00.000+08:00</published><updated>2011-12-16T11:08:41.717+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='realty'/><category scheme='http://www.blogger.com/atom/ns#' term='politic'/><title type='text'>關於居住正義及實價登錄，我的看法是狗屎(bull shit)</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-WSWJd7Hh-II/Tuav6qff5eI/AAAAAAAADZw/Fz7OsuPeYHQ/s1600/%25E5%25AF%25A6%25E5%2583%25B9%25E7%2599%25BB%25E9%258C%2584.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-WSWJd7Hh-II/Tuav6qff5eI/AAAAAAAADZw/Fz7OsuPeYHQ/s640/%25E5%25AF%25A6%25E5%2583%25B9%25E7%2599%25BB%25E9%258C%2584.png" width="444" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;from &lt;a href="http://news.chinatimes.com/focus/11050106/122011121300118.html"&gt;中時電子報&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;為了要實現「居住正義」，所以立委們要通過幾項法律。其中之一是房屋價格採實價登錄。&lt;br /&gt;&lt;br /&gt;我不懂得的是「什麼是居住正義?」是讓每個人有屋子住嗎? 現在也沒通過這些法案，但全臺灣有多少人沒房子住，以遊民數來說：「&lt;a href="http://blog.xuite.net/wellsli/003/44107047"&gt;http://blog.xuite.net/wellsli/003/44107047&lt;/a&gt;&amp;nbsp;、&lt;a href="http://www.lihpao.com/?action-viewnews-itemid-62099"&gt;http://www.lihpao.com/?action-viewnews-itemid-62099&lt;/a&gt;」，大約在 1 萬 5 千人左右。就&lt;strike&gt;他媽的&lt;/strike&gt;為了這佔臺灣人口千分之六點五的族群，搞這麼大的事，說不過去吧!&lt;br /&gt;&lt;br /&gt;所以我想政客們的重點是在『有房子住，但沒有房子的人』身上。那這些人有多少呢：「&lt;a href="http://www.libertytimes.com.tw/2010/new/nov/12/today-e9.htm"&gt;http://www.libertytimes.com.tw/2010/new/nov/12/today-e9.htm&lt;/a&gt;」，大約是三成。&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;拷&lt;/strike&gt;原來民主國家也是會為少數人謀福利的。我一直認為民主國家就應該是個多數暴力國家，因為真正的民主國家才不會強調自己是個民主國家，在他們心中，國家的成份比較少，個人的成份比較多。&lt;br /&gt;&lt;br /&gt;話說回來。好啦! 您們說搞了「實價登錄」，那這些沒房子想要買房子的人，就不會被建商、仲介欺騙導致買到價格高於市價的屋子，能讓他們買得起房子。也就是可以用公開透明的「銷售價」讓買房子的人有個「&lt;a href="http://greenhornfinancefootnote.blogspot.com/2011/09/blog-post_29.html"&gt;定錨點&lt;/a&gt;」，用來證明價格是否合理，以利決定買下房屋。但問題是這想買房子的人，卻也有可能是個有房子但還想繼續買房子的人，因為「實價登錄」沒說「有房子的人不准看」。所以其實這功能不是只為了三成百姓，連其他七成也受惠了。那這樣子又跟「居住正義」有什麼關係? 我以為政客們講的居住正義是讓沒房子的人有房子。這樣看來也不是囉~&lt;br /&gt;&lt;br /&gt;所以說「居住正義」是要讓人不要買到過高的價格，因為有了前幾手的實質銷售價，所以新買家就可以相信自己花了錢買房子比較踏實，因為新的買價與舊的賣價差不多，也因為差不多，所以沒人會覺得自己被賣家給騙了。問題是用 565 元買&lt;a href="http://tw.stock.yahoo.com/q/ta?s=3628"&gt;盈正&lt;/a&gt;的人，他前一天看到的價格是 100 元嗎? 也是 500 元左右，價格兩者是差不多呀! 那現在它的價格是 56 元，您會覺得他被騙了嗎? 所以公開透明的價格也不見得讓買家在日後相信他的買價是公正合理的，那作這件事幹什麼!&lt;br /&gt;&lt;br /&gt;我惟一想到的是為未來「實價課稅」作好打底工作。可是內政部長又說「沒有配套措施前，它不會作為課稅基礎」。這樣我就不知道這種「緩兵之計」到底有沒有用。&lt;br /&gt;&lt;br /&gt;基本上，我贊成「實價課稅」，然而這是為了「租稅正義」，而不是「居住正義」，講到這裡，我還是不懂「居住正義」是用來幹麼的? 要保障每個人有房子住嗎? 人民公社就是啦! 怎麼不用? 美國也是「實價登錄」、「實價課稅」的，然而還不是有次貸，那些買了房子的人會說：「當初我就是靠實價才買到好房子的」嗎? &amp;nbsp;拿「實價登錄」、「實價課稅」來求「居住正義」，那真是笨蛋作的事。而我不懂的是臺灣怎麼那麼多笨蛋，讓我也跟著變笨了。&lt;br /&gt;&lt;br /&gt;擁有房子不見得是每個國民的目標，政府也不應該強求每個人民要擁有房屋，只要作到「第十條 人民有居住及遷徙之自由」就夠了，但政府該強迫人民履行義務：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;第十九條&amp;nbsp;人民有依法律納稅之義務。&lt;/li&gt;&lt;li&gt;第二十條 人民有依法律服兵役之義務。&lt;/li&gt;&lt;li&gt;第二十一條 人民有受國民教育之權利與義務。&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;因為國民教育、兵役我都盡過義務了，所以我未來的重點是在納稅，公平合理的稅制是我關心政府事務的重要指標。&lt;/div&gt;&lt;br /&gt;之前我在&lt;a href="http://hoamon.blogspot.com/2011/01/blog-post_03.html"&gt;「政治文」：政府如何因應房地產價格急速上漲問題&lt;/a&gt;中，提到林英彥教授認為可將土增稅的課稅依據從公告地價改為交易實價，這樣可收到「土地交易所得稅」的效果，又避免修改稅法的冗長。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;之前我也認為此法可行，但仔細看過土增稅相關條例後，我發現它並沒有資本利損的機制，也就是說，如果當年度我在股票利息、薪資上大有斬獲，但房屋交易卻大賠的情況下，我無法使用房屋損失來減免股票利息、薪資上的收入。那這種租稅制度就不合理了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;解鈴還需繫鈴人，&lt;a href="http://www.coolloud.org.tw/node/25038" target="_blank"&gt;法是立委們殺的&lt;/a&gt;，就得由他們救。&lt;br /&gt;&lt;br /&gt;奇怪，為什麼我從一開始討論土地交易利得稅跳到證券交易所得稅呢? 這不會跳很大嗎? 原因就在於自中華民國建國以來，我們從未有過「土地交易利得稅」，你說土地增值稅不是嗎? 我說當然不是，因為它沒有「資本利損」的概念，自然就不是完整的「資本利得稅」，如果我們要把土增稅改成照實價課稅且具有「資本利得稅」的概念，我認為這一步很難。但「證所稅」是我們本來有的，只是後來被立委們殺了，所以如果能先復原「證所稅」，再把「課徵證所稅」這種具「資本利得稅」的經驗套用在「土地交易所得稅」上，會比較不動搖國本。&lt;br /&gt;&lt;br /&gt;最後我想說的是：『中文真是博大精深呀! 文章標題的『狗屎』到底指的是「居住正義與實價登錄」，還是「我的看法」。請自己想著辦，我絕不會跟您說答案。』&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-329499293686963485?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/329499293686963485/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/12/bull-shit.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/329499293686963485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/329499293686963485'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/12/bull-shit.html' title='關於居住正義及實價登錄，我的看法是狗屎(bull shit)'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-WSWJd7Hh-II/Tuav6qff5eI/AAAAAAAADZw/Fz7OsuPeYHQ/s72-c/%25E5%25AF%25A6%25E5%2583%25B9%25E7%2599%25BB%25E9%258C%2584.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-5447109398098654820</id><published>2011-12-01T22:16:00.001+08:00</published><updated>2011-12-01T22:40:45.813+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>人才，真是人才呀!</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ufqM5ldDii8/TteNPrD-ehI/AAAAAAAADX4/ZtU3DS3-sxs/s1600/%25E4%25BA%25BA%25E6%2589%258D.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ufqM5ldDii8/TteNPrD-ehI/AAAAAAAADX4/ZtU3DS3-sxs/s1600/%25E4%25BA%25BA%25E6%2589%258D.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;From Yahoo! Stock News&lt;br /&gt;&lt;a href="http://tw.stock.yahoo.com/news_content/url/d/a/111201/1/2whxt.html"&gt;http://tw.stock.yahoo.com/news_content/url/d/a/111201/1/2whxt.html&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;這一番話雖沒有一百分，也有九十八分了。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;差了兩分是什麼? 那就是對低收入者而言，根本的重點不在金融投資，而是&lt;span class="Apple-style-span" style="color: red;"&gt;人力資本投資&lt;/span&gt;，所以不管風險有多低的投資工具，都不適合「低收入者」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;他個人的「納財瓶頸」是在自身的工作能力上，那怎麼有人還會想要去外求別的「理想投資工具」呢! &lt;a href="http://hoamon.blogspot.com/2010/12/blog-post_29.html"&gt;改善自己的工作能力&lt;/a&gt;才是第一重要的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;相較之下，其他人只會說台灣股市本益比很低，股價很委屈，只知道宣傳好投資標的，卻沒有提醒大家，一檔好股票不是對每個人來說都是好股票，要先考慮自身條件作好資產配置後，才可以決定要買那些委屈的股票。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這我覺得對岸的人才，真的是有學過「投資」。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-5447109398098654820?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/5447109398098654820/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/12/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5447109398098654820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5447109398098654820'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/12/blog-post.html' title='人才，真是人才呀!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ufqM5ldDii8/TteNPrD-ehI/AAAAAAAADX4/ZtU3DS3-sxs/s72-c/%25E4%25BA%25BA%25E6%2589%258D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8498663633746664193</id><published>2011-11-25T11:03:00.001+08:00</published><updated>2011-11-25T11:22:20.298+08:00</updated><title type='text'>請捐錢給維基百科(2011年)</title><content type='html'>除了熱情人士貢獻詞條外，也需要有人貢獻「頻寬」、「伺服器」、「審查詞條編輯」的資源。與「詞條」一樣，資源不會憑空產生。總要有人拿錢去拉專線、組裝伺服器，處理法律問題…&lt;br /&gt;&lt;br /&gt;以往，我都是捐 $5 塊美金。今年他們有新的捐款管道，提供永豐銀行的帳戶，所以可以直接捐新台幣。為慶祝新管道(這又是一個要花人力的地方，總要有人去談新台幣款項與 wikipedia 組識的出入方法吧!)，所以今年我捐了 NT $600 ，是用 WebATM 轉的。用銀行轉帳的方式，對 wikipedia 最好，它們不會被扣手續費。&lt;br /&gt;&lt;br /&gt;&lt;a href="https://donate.wikimedia.org/wiki/Special:FundraiserLandingPage?uselang=zh&amp;amp;country=TW&amp;amp;template=Lp-layout-default&amp;amp;appeal-template=Appeal-template-default&amp;amp;appeal=Appeal-Brandon&amp;amp;form-template=Form-template-default&amp;amp;form-countryspecific=Form-countryspecific-variable1&amp;amp;utm_medium=sitenotice&amp;amp;utm_source=B11_Donate_Brandon_AvsB&amp;amp;utm_campaign=C11_1114_AvsB_TW"&gt;前往捐款&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;使用 bank transfer 時，它會給你一組代碼，是讓你去轉帳時(臨櫃、 WebATM 都行)填到附註欄用的。&lt;br /&gt;&lt;br /&gt;另外，捐款後有一個附加好處，它們不知道是用 cookie 還是 IP 方式? 讓有捐過錢的人，看不到「捐款呼籲」。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8498663633746664193?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8498663633746664193/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/11/2011.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8498663633746664193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8498663633746664193'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/11/2011.html' title='請捐錢給維基百科(2011年)'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4996372321168263807</id><published>2011-11-19T10:33:00.001+08:00</published><updated>2011-11-28T12:32:57.827+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='reit'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>相較於「不動產現貨投資」，我個人更偏好「REIT」或「REAT」</title><content type='html'>REAT(Real Estate Asset Trust)的本質像債券，買入後是有固定收益的。但投資金檻高，單筆須有幾百萬，這個我買不起，就此打住，待我以後每秒幾十萬上下再說。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;REIT(Real Estate Investment Trust)的本質像股票，REIT的管理機構就像是一家物業管理公司，它的營收就是來自大樓的租金收入。在扣除管理費用後，剩下的就分配給收益人。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不動產現貨也是動鍘幾百萬、幾千萬，對目前的我而言，實在無能力投資，但對未來的我來說，也沒有興趣。我覺得只有自用的不動產才值得花費心思，要作非自用投資的話，就必須考慮租金收入，要不然只是在賺買賣差價，那其實是投機了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不動產的長期平均報酬率應該是&lt;span class="Apple-style-span" style="color: red;"&gt;約等於通膨&lt;/span&gt;。所以大家都說不動產可以抗通膨，不是沒道理的。不過，要想清楚，他們是說：「抗通膨」，不是「打敗通膨」，或是「遠優於通膨」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;雖然不動產的長期平均報酬率只是約等於通膨，但那是考慮所有種類的不動產：農地、住宅、商用大樓…，所以如果只專注在商用不動產的話，那應該是可以「打敗通膨」了，從租金平均報酬率來看，一般住宅目前 1 %起跳，商辦 2 %起跳。如果你想把錢配置在「不動產」這部份的話，那當然要選商辦呀!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所以 REIT 的優點就在這裡，它能讓你用小錢(1萬+)就能投入商用不動產的投資。也不用費心去管理租戶，一切由物業管理公司處理。只要被動地收錢就行了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;目前臺灣有 8 支 &lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E4%B8%8D%E5%8B%95%E7%94%A2%E6%8A%95%E8%B3%87%E4%BF%A1%E8%A8%97"&gt;REITs&lt;/a&gt; 。&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;table class="wikitable" style="background-attachment: initial; background-clip: initial; background-color: #f9f9f9; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-collapse: collapse; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; color: black; font-size: 15px; margin-bottom: 1em; margin-left: 0px; margin-right: 1em; margin-top: 1em;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;證券代號&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;證券名稱&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;投資標的屬性&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;2010年收益分配&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;2011年收益分配&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;備註&lt;/th&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%AD%89%E5%88%B8%E4%BA%A4%E6%98%93%E6%89%80" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="臺灣證券交易所"&gt;臺證所&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01001T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01001T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E5%AF%8C%E9%82%A6%E4%B8%80%E8%99%9F" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="富邦一號"&gt;富邦一號&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦、商場、住宅&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;448&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;441&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%AD%89%E5%88%B8%E4%BA%A4%E6%98%93%E6%89%80" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="臺灣證券交易所"&gt;臺證所&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01002T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01002T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E5%9C%8B%E6%B3%B0%E4%B8%80%E8%99%9F" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="國泰一號"&gt;國泰一號&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦、商場、旅館&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;443&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;445&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%AD%89%E5%88%B8%E4%BA%A4%E6%98%93%E6%89%80" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="臺灣證券交易所"&gt;臺證所&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01003T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01003T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E6%96%B0%E5%85%89%E4%B8%80%E8%99%9F" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="新光一號"&gt;新光一號&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦、商場、住宅&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;374&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;381&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%AD%89%E5%88%B8%E4%BA%A4%E6%98%93%E6%89%80" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="臺灣證券交易所"&gt;臺證所&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01004T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01004T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E5%AF%8C%E9%82%A6%E4%BA%8C%E8%99%9F" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="富邦二號"&gt;富邦二號&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦、廠辦&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;242+187=429&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;187+184=371&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%AD%89%E5%88%B8%E4%BA%A4%E6%98%93%E6%89%80" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="臺灣證券交易所"&gt;臺證所&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01005T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01005T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E4%B8%89%E9%BC%8E" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="三鼎"&gt;三鼎&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦、商場、物流大樓&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;364&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;378&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;清算中&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E8%AD%89%E5%88%B8%E6%AB%83%E6%AA%AF%E8%B2%B7%E8%B3%A3%E4%B8%AD%E5%BF%83" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="證券櫃檯買賣中心"&gt;櫃買中心&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01006T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01006T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E5%9F%BA%E6%B3%B0%E4%B9%8B%E6%98%9F" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="基泰之星"&gt;基泰之星&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦、商場、旅館&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;142+129=271&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;118+124=242&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;清算中&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%AD%89%E5%88%B8%E4%BA%A4%E6%98%93%E6%89%80" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="臺灣證券交易所"&gt;臺證所&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01007T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01007T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E5%9C%8B%E6%B3%B0%E4%BA%8C%E8%99%9F" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="國泰二號"&gt;國泰二號&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;189+192=381&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;215+217=432&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%AD%89%E5%88%B8%E4%BA%A4%E6%98%93%E6%89%80" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="臺灣證券交易所"&gt;臺證所&lt;/a&gt;：&lt;a class="external text" href="http://mis.twse.com.tw/stock_best5.html?stockId=01008T&amp;amp;Refresh=0" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(data:image/png; background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;"&gt;&lt;b&gt;01008T&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a class="mw-redirect" href="http://zh.wikipedia.org/wiki/%E9%A7%BF%E9%A6%AC%E4%B8%80%E8%99%9F" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="駿馬一號"&gt;駿馬一號&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;商辦、廠辦&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;157+141=298&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;168+186=354&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;from &lt;a href="http://wikipedia.org/"&gt;wikipedia.org&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;以富邦一號目前 13.71 的價格來看，花 13700 元，2010 年有 448 元的配息，殖利率為 3.2 %; 新光一號每股 10.8 元，配息約 3.4 %。&lt;br /&gt;&lt;br /&gt;它們都不太會有資本利得，也就是不會因標的不動產價格上漲，就把它賣掉，來賺取差價。當然啦，擁有收益憑證的你是可以賣掉憑證來賺取差價的。&lt;br /&gt;&lt;br /&gt;它們只能在基金清算時，作一次實現資本利得的動作，像是&lt;a href="http://tw.nextmedia.com/applenews/article/art_id/33510040/IssueID/20110707"&gt;三鼎清算&lt;/a&gt;，之前在 2011 年 5 月左右，它們傳出要作清算的動作，所以股價開始大漲。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EK-PYLRqW1Y/TscdMH3P_yI/AAAAAAAADXc/ecNdsaW8YS4/s1600/Screenshot-6.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="392" src="http://1.bp.blogspot.com/-EK-PYLRqW1Y/TscdMH3P_yI/AAAAAAAADXc/ecNdsaW8YS4/s640/Screenshot-6.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;From &lt;a href="http://tw.stock.yahoo.com/q/ta?s=01005T"&gt;Yahoo! Stock&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;事實上，就因為臺灣投資人對 REITs 沒什麼興趣，所以它們的長期投報率都遠高於定存及通膨率。真是好投資標的呀! 這與&lt;a href="http://tw.stock.yahoo.com/q/bc?s=006202"&gt; 006202 寶富盈&lt;/a&gt;一樣。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;那我還在 BLOG 上說這麼大聲幹麼! 愈多人喜歡，只會把股價抬上去，又不會把配息增加。&lt;br /&gt;&lt;br /&gt;不過，還是有一個好處：「讓流動性高一點」。而且我相信喜歡低進高出的臺灣投機客一樣是看不入眼我這篇文章的。聽得進去的，至少得認同「被動投資」才行。&lt;br /&gt;&lt;br /&gt;== 後記 ==&lt;br /&gt;&lt;br /&gt;三鼎所擁有的不動產&lt;a href="http://blog.cnyes.com/My/rigger365/Article584309"&gt;全數標售&lt;/a&gt;，淨值算來 double 還得再加，已經連兩根漲停了。不過，我們被動投資人該眼紅嗎? 我的確眼紅，但還是要照預定計畫來：「定期買進不同的投資標的」，沒輪到它，就只能算自己運氣沒那麼好囉~&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gwZ_g05Htwc/TtMN11bB1hI/AAAAAAAADXo/9aFYT4rqiXI/s1600/Screenshot-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="462" src="http://1.bp.blogspot.com/-gwZ_g05Htwc/TtMN11bB1hI/AAAAAAAADXo/9aFYT4rqiXI/s640/Screenshot-7.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4996372321168263807?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4996372321168263807/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/11/reitreat.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4996372321168263807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4996372321168263807'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/11/reitreat.html' title='相較於「不動產現貨投資」，我個人更偏好「REIT」或「REAT」'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-EK-PYLRqW1Y/TscdMH3P_yI/AAAAAAAADXc/ecNdsaW8YS4/s72-c/Screenshot-6.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7711732513216177599</id><published>2011-11-06T10:49:00.004+08:00</published><updated>2011-12-26T12:02:10.162+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marathon'/><category scheme='http://www.blogger.com/atom/ns#' term='jog'/><title type='text'>難怪公司可以搞到快倒了!!!</title><content type='html'>自從去年比完&lt;a href="http://hoamon.blogspot.com/2010/10/2010-515k.html"&gt;台東之美鐵人三項&lt;/a&gt;後，到現在沒去游過泳。所以今年也就沒參加台東之美鐵人三項了。&lt;br /&gt;&lt;br /&gt;雖然對游泳還有些餘悸，但跑步可是沒放下。難得今年南投縣為慶祝建國一百年(或是刺激觀光)辦了&lt;a href="http://sport.promos.com.tw/jhongtan/"&gt; 2011 中潭馬拉松&lt;/a&gt;。我住南投，當然是要助陣一下。順便也拖了老婆一起去，只是她報的是健康 5 K。&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-KKuvFcqhvug/TrX1IiFX3LI/AAAAAAAADU4/6E1pOh7l3jk/s1600/%25E7%2588%259B%25E7%25B6%25B2%25E7%25AB%2599.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="596" src="http://4.bp.blogspot.com/-KKuvFcqhvug/TrX1IiFX3LI/AAAAAAAADU4/6E1pOh7l3jk/s640/%25E7%2588%259B%25E7%25B6%25B2%25E7%25AB%2599.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;2011 中潭馬拉松報名網頁&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;但這個報名網站寫得 2266 。不過是個填寫資料的 PHP 網頁，也限定要用 IE 瀏覽器，茂德( ProMOS )真是沒人才了。本來我還以為是這個網站的金流用了 WebATM ，所以不限定 IE 不行，等我真的用了 IE 報完名後，才發現還是得自己去 ATM/臨櫃/WebATM 轉帳，那你&lt;strike&gt;他媽的&lt;/strike&gt;限我用 IE 幹麼!!!&lt;br /&gt;&lt;br /&gt;看了網頁中的 javascript 程式碼，發現都是原始 javascript 碼，沒用任何高級函式庫，我這才發現原來茂德的 PHP 工程師喜歡手工打造，或許這還是他們的企業文化 =&amp;gt; 純手工打造。&lt;br /&gt;&lt;br /&gt;這難怪茂德作到下櫃了。他們的 DRAM 說不定是用人工焊接的呢?&lt;br /&gt;&lt;br /&gt;可笑、可笑，虧我還是茂德股東，真想把它賣了，但它下櫃了，沒得賣。神呀! 為什麼不讓我早發現他們的網頁設計技巧呀!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7711732513216177599?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7711732513216177599/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/11/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7711732513216177599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7711732513216177599'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/11/blog-post.html' title='難怪公司可以搞到快倒了!!!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-KKuvFcqhvug/TrX1IiFX3LI/AAAAAAAADU4/6E1pOh7l3jk/s72-c/%25E7%2588%259B%25E7%25B6%25B2%25E7%25AB%2599.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-6395675679884523095</id><published>2011-10-07T08:04:00.010+08:00</published><updated>2011-10-09T20:08:18.669+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>jobs dead，而賈伯斯是英雄嗎?</title><content type='html'>很多人說他是英雄、領袖、偉大發明家… ，昨晚看新聞時，大約有五分之四的內容與他有關，雖然還輸給蔣故總統經國先生，但對不是美國人的我們來說，算很多了。&lt;br /&gt;&lt;br /&gt;jobs 是不是英雄? 在我年紀小的時候當然是，但現在我可不確定了。&lt;br /&gt;&lt;br /&gt;手邊拿起一本 2000 年出版的「 &lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010128039"&gt;i蘋果&lt;/a&gt;」，書末結尾停留在 Apple Computer Inc. 發表 iMac 的年代，它的結語：「無論結局如何，這個世界都應該感謝蘋果的貢獻。它是資訊時代勇敢、或可說莽撞的開路先鋒。它驕傲地扛著這個破曉時代的旗幟，如此嶄新、如此令人興奮，為今日我們視為理所當然的科技革新鋪平了道路。蘋果的故事正在頹敗，將成為美國企業界中最奇特、也最悲哀的故事之一。但無論蘋果的主管有多麼拙劣，都無法磨滅蘋果在歷史上的地位。」&lt;br /&gt;&lt;br /&gt;我記得某一年跟舅舅聊股票時，講到：「未來搞不好是蘋果打敗微軟，人們對科技的需求不見得一直是相同的，微軟靠軟體起家，但將來或許軟硬一體成型的產品才是大家想要的。」那時，我記得蘋果股價才 3 塊。&lt;br /&gt;&lt;br /&gt;剛剛查了 &lt;a href="http://www.google.com/finance"&gt;Google Finance&lt;/a&gt; :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/finance?chdnp=1&amp;chdd=1&amp;chds=1&amp;chdv=1&amp;chvs=maximized&amp;chdeh=0&amp;chfdeh=0&amp;chdet=1317943748609&amp;chddm=1480413&amp;chls=IntervalBasedLine&amp;q=NASDAQ:AAPL&amp;"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 244px;" src="http://1.bp.blogspot.com/-Lndu3Lct36A/To5IEwQRo3I/AAAAAAAADUY/Rv9SQ6KuGug/s400/Screenshot-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5660541028161135474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3 塊多的股價大概是在 1997 年，也差不多是我大學時代的事。與我開始買股票的經驗相仿，不過 i蘋果一書，卻說 1997 左右，它的股價在 16 塊附近，這我就不懂了。不知道是誰對。&lt;br /&gt;&lt;br /&gt;其實經過 10 多年，記憶這檔事就不見得準確了，尤其我的記憶力不好(PS 理解力超棒)。舊記憶在新事件發生後可能被遺忘、可能被重設。搞不好，當年我對舅舅講的可能只是：「現在蘋果這麼便宜，只要 3 塊，但它早期是比微軟好的，或許將來它也能再次比微軟貴。」&lt;br /&gt;&lt;br /&gt;不管真相是那種，但我知道就算當年有能力去美國買蘋果電腦股票，我也沒機會賺到這近 100 倍的報酬率。因為 3 塊錢買，我 5 塊錢賣掉它就非常非常高興，那有可能放了 14 年等它賺到這 100 倍的報酬率。會這麼作的人，只有&lt;a href="http://hoamon.blogspot.com/2011/10/2011.html"&gt;被動投資人&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;而 jobs 到底是不是英雄? 從 2000 年左右的觀點看來，是跟現在差很大地。所以英雄得靠緣份，沒那機遇，就沒那表現。這也得倚賴他現在就結束傳奇的一生，如果再過 15 年，會不會他就跟 bill 一樣跑去玩基金會，不管 M$ 了?&lt;br /&gt;&lt;br /&gt;年輕時我欣賞 jobs ，完全是因為我不喜歡跟風，當時大家都喜歡 bill gates ，那我偏不要，我就愛 jobs 。這風格不只表現在股票選購上，也表現在就讀科系上，也表現在書藉選讀上，太多地方我是不愛跟多數人選擇相同的。&lt;br /&gt;&lt;br /&gt;而年紀小時，覺得這個世界的運轉一定是由某些大人物主導的，沒這些人地球就不會動了。長大後，才慢慢體會一日之所需，百工斯為備不只發生在日常生活中，這些大人物的決策也少不了其他小人物的準備，所謂的「英雄」不過是「你懶得記住所有人的名字，挑大頭名字來記得較輕鬆簡單」的替代品。&lt;br /&gt;&lt;br /&gt;我相信 iOS 的程式碼沒一行是 jobs 寫的(或許我講得太死了，搞不好，他的確寫了一行 hello world! )，我相信 iPhone 觸控螢幕的面板沒有任何一片是 jobs 裝的、他從沒作過任何一部 iXXX 廣告片美編... ，是的，雖然他也作了不少事，但整個 i 系列產品應是很多人的功勞。&lt;br /&gt;&lt;br /&gt;現在他過逝了， iPhone 4S 還不是照出貨，我相信 iPhone 5 也是，但 iPhone 6 就不見得了。時代在變，另一組人馬可能就崛起了。這不過是另一個&lt;a href="http://hoamon.blogspot.com/2009/12/blog-post_28.html"&gt;生存者誤差&lt;/a&gt;的故事。&lt;br /&gt;&lt;br /&gt;想想 IBM ，想想 Apple Computer，想想 Microsoft ，又想想 Apple 就知道了，或許以後你們想的是 Ho600 。&lt;br /&gt;&lt;br /&gt;== 後記 ==&lt;br /&gt;&lt;br /&gt;蘋果在 1997 年的股價的確應在 16 塊左右。因為 AAPL 作了兩次股票分割， 1 股變 4 股，而 Google Finance 會依權值重算舊價格，所以原本應該是 16 塊的東西，就變成 4 塊錢了。那表示我現在所記得 3 塊多可能就是被 Google finance 給重設了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-6395675679884523095?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/6395675679884523095/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/10/jobs-dead.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6395675679884523095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6395675679884523095'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/10/jobs-dead.html' title='jobs dead，而賈伯斯是英雄嗎?'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Lndu3Lct36A/To5IEwQRo3I/AAAAAAAADUY/Rv9SQ6KuGug/s72-c/Screenshot-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8109711239916077685</id><published>2011-10-01T15:14:00.006+08:00</published><updated>2011-10-01T15:44:03.951+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='knapsack problem'/><category scheme='http://www.blogger.com/atom/ns#' term='cmclass'/><title type='text'>另一種解鋼筋切割組合問題(無界背包問題)的方法(改自 thinker 所提觀念)</title><content type='html'>&lt;pre name="code" class="python"&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf8 -*-&lt;br /&gt;""" cut(10, [7, 5, 3, 2]) = cut(3, [7, 5, 3, 2]) + cut(10, [5, 3, 2])&lt;br /&gt;"""&lt;br /&gt;def _plus1(a):&lt;br /&gt;    a[0] += 1&lt;br /&gt;    return a&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def _cache(my_function):&lt;br /&gt;    CACHE = {}&lt;br /&gt;    def inner_function(*args):&lt;br /&gt;        key = str(args[:])&lt;br /&gt;        if not CACHE.get(key, None):&lt;br /&gt;            CACHE[key] = my_function(*args)&lt;br /&gt;        return CACHE[key]&lt;br /&gt;&lt;br /&gt;    return inner_function&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@_cache&lt;br /&gt;def cut(total, sizes):&lt;br /&gt;    propers = tuple([sz for sz in sizes if sz &lt;= total])&lt;br /&gt;    if len(propers) == 1:&lt;br /&gt;        return [[0,]*(len(sizes)-len(propers))+[total/propers[0],],]&lt;br /&gt;    elif not propers:&lt;br /&gt;        if total &lt; 0:&lt;br /&gt;            return []&lt;br /&gt;        else:&lt;br /&gt;            return [[0,]*len(sizes),]&lt;br /&gt;&lt;br /&gt;    result1 = [_plus1(a) for a in cut(total-sizes[0], sizes)]&lt;br /&gt;    result2 = [[0, ]+a for a in cut(total, sizes[1:])]&lt;br /&gt;    return result1 + result2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    from time import time&lt;br /&gt;&lt;br /&gt;    bar = 10&lt;br /&gt;    sizes = [7, 5, 3, 2]&lt;br /&gt;&lt;br /&gt;    t0 = time()&lt;br /&gt;    answer = cut(bar, sizes)&lt;br /&gt;    print time() - t0&lt;br /&gt;&lt;br /&gt;    print 'count: %s'%len(answer)&lt;br /&gt;    #for a in answer:&lt;br /&gt;    #    print a, sum([j*sizes[i] for i, j in enumerate(a)])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;其計算邏輯是 cut(10, [7, 5, 3, 2]) = cut(3, [7, 5, 3, 2]) + cut(10, [5, 3, 2]) ，這觀念從 &lt;a href="http://heaven.branda.to/~thinker/GinGin_CGI.py/show_id_doc/230"&gt;Thinker&lt;/a&gt; 那邊學來的，它用在計算 cut(10, [7, 5, 3, 2]) 的組合數有多少時，非常非常快，不過，我在擴充至求組合數有那些時，這方法的速度就比不上 &lt;a href="http://hoamon.blogspot.com/2011/09/blog-post_15.html"&gt;cut(10, [7, 5, 3, 2]) = (cut(10, [5, 3, 2]) 的結果，其元素 0 插入 0) + (cut(3, [5, 3, 2]) 的結果，其元素 0 插入 1)&lt;/a&gt; 了。&lt;br /&gt;&lt;br /&gt;不曉得是不是我在運算過程中，那裡少了優化?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8109711239916077685?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8109711239916077685/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/10/thinker.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8109711239916077685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8109711239916077685'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/10/thinker.html' title='另一種解鋼筋切割組合問題(無界背包問題)的方法(改自 thinker 所提觀念)'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4422911022316886221</id><published>2011-10-01T14:30:00.007+08:00</published><updated>2011-10-02T11:20:01.916+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>2011 被動投資回顧</title><content type='html'>這麼 2011 年還沒結束，我就在作回顧呢?&lt;br /&gt;&lt;br /&gt;因為配息已經告一個尾聲了，今年就算再買股票，也拿不到利息了。&lt;br /&gt;&lt;br /&gt;從我 2008 年&lt;a href="http://hoamon.blogspot.com/2008/02/blog-post.html"&gt;建立 56 支股票投資名單&lt;/a&gt;後，到現在 2011 年了，名單也增加到近 200 支股票(當然還沒買全)，每年所拿到現金利息(含扣抵稅額)除以總投資本金後，大約如下：&lt;br /&gt;&lt;br /&gt;2009: 3%&lt;br /&gt;2010: 3.6%&lt;br /&gt;2011: 5%(以 17% 扣抵稅率試算)&lt;br /&gt;&lt;br /&gt;而平均購買成本約在 6378 點左右。回想起 4 年前，馬總統當選，我花了 4 萬 5 買了合庫、日月光、雷虎。從 9300 點開始一路買到 4000 點，再買到 9100 點，到現在的 7200 點。這平均持股成本在 6378 ，實在讓我非常滿意。&lt;br /&gt;&lt;br /&gt;事實上，我有印象以來的持股成本應該是在 6700 左右才是，怎麼我在 7000 點以上繼續買進，這平均成本反而下降了呢?&lt;br /&gt;&lt;br /&gt;原因就是除權、除息，就像開發工銀手上擁有的聯電，每股不到 3 元一樣，經過時間的發酵，聯電公司馬不停蹄的賺錢後，讓開發工銀手上握有的成本愈來愈低。&lt;br /&gt;&lt;br /&gt;而且我覺得我運氣很好(真的嗎? 沒把年化報酬率算出來跟大盤比，這都只是感覺而已)，手上不小心有了宏達電、統一超(當然都是零股啦)，一個有 300%+ ，一個有 250%+ 的報酬率，而踩到的地雷也只有力晶(-66%)、茂德(-90%)、盈正(-75%)，還好它們的投資比率都不高。&lt;br /&gt;&lt;br /&gt;經過這 3 年多來施行被動投資策略的成果來看，我十分滿意。當股票漲，我高興，當股票跌，我也高興(當然是有錢買才高興，還好我年輕有工作作，能賺錢買股票)，無處不怡然自得呀!&lt;br /&gt;&lt;br /&gt;你被動了嗎?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4422911022316886221?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4422911022316886221/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/10/2011.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4422911022316886221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4422911022316886221'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/10/2011.html' title='2011 被動投資回顧'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7121938802520353867</id><published>2011-09-16T15:28:00.002+08:00</published><updated>2011-10-01T15:45:47.161+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><category scheme='http://www.blogger.com/atom/ns#' term='knapsack problem'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='cmclass'/><title type='text'>再改寫「背包問題」的求解程式碼</title><content type='html'>之前的&lt;a href="http://hoamon.blogspot.com/2007/12/blog-post_20.html"&gt;作法&lt;/a&gt;是將 cut 函式所計算的 list 結果直接 append 到全域變數 tmps 中，這樣的 cut 函式是無法作 decorator 的。&lt;br /&gt;&lt;br /&gt;新方法則是把 cut 函式的 input, output 重新規劃，讓答案就是 return 值，這樣 input 就能對應到單一 output ，透過這個特性，我們就能加上一個 @cache decorator ，去作快取。因為在求解的過程中，勢必會遇到重覆的 input ，有了快取，可以少算一次。&lt;br /&gt;&lt;br /&gt;其中的 _no_cache_count 值指的是第一次遇到的 input 值，而 _cache_count 值則是利用 dictionary 找到答案的次數。&lt;br /&gt;&lt;br /&gt;要怎麼建構出 cut 函式的樣貌? 我們一開始先抽象地想像這個 cut 函式要作到的事就是 answer = cut(bar, sizes)&lt;br /&gt;&lt;br /&gt;answer 是我們要的答案，結構是 list of list( [[ , , , ..], [ , , , ..], ..] )。而 bar 是原長度， sizes 則是需求尺寸的 list 。&lt;br /&gt;&lt;br /&gt;假設我們帶 bar = 10， sizes = [7, 5, 3, 2] ，那麼經過 cut 運算，就能得到一個 list of list 的 answer，那到底 answer 是多少? 我們先不管。但我們可以知道 10 拿給 7 去切，可以得到 0, 1 兩種組合。&lt;br /&gt;&lt;br /&gt;所以 cut(10, [7, 5, 3, 2]) 一定會等於 cut(10, [5, 3, 2]) 的結果其解全部在元素 0 的位置插入 0 + cut(3, [5, 3, 2]) 的結果其解全部在元素 0 的位置插入 1 。&lt;br /&gt;&lt;br /&gt;一樣地， cut(10, [5, 3, 2]) 也會等於 cut(10, [3, 2]) 的結果其解全部在元素 0 的位置插入 0 + cut(5, [3, 2]) 的結果其解全部在元素 0 的位置插入 1 + cut(0, [3, 2]) 的結果其解全部在元素 0 的位置插入 2 。&lt;br /&gt;&lt;br /&gt;直到 cut(10, [2]) 時，我們知道它的結果就是 ([5], ) ，為什麼是一個 tuple of list ? 因為之前我們就定義 cut 一定要回傳 list of list ，而因為這次的 cut 回傳值本身並不會被修改，所以傳個 tuple 回去，可以少用一滴滴的記憶體(應該是一滴滴而已)。&lt;br /&gt;&lt;br /&gt;當開始有 answer 被回傳後，我們就開始作合併的工作(就是把前一個需求尺寸的用量插入 answer 內的 list)。合併後再回傳。&lt;br /&gt;&lt;br /&gt;程式碼如下，不過在實際跑的時候，有二件事我不能理解，為了比較 cut 與 cache_cut 的效率差別，我在同一個行程上分別跑了兩次 cut, 兩次 cache_cut ，而順序是 cache_cut, cut, cut, cache_cut ，cache_cut 比 cut 快，這很容易理解，但第二次的 cut 居然會比第一次的 cut 還慢，這我就不懂了。&lt;br /&gt;&lt;br /&gt;另外，我每次跑 cut 之前，都是用 cs = CutSteel(bar, sizes) 創建新的物件，為什麼第二次跑的 cache_cut ，它還是可以找到第一次 cache_cut 所儲存的 CACHE 呢?&lt;br /&gt;&lt;br /&gt;最後，我還得到一個結論，當解答組合數不多時，用 cut 會比 cache_cut 快。因為小題目，遇到重覆 input 少，但如果還是全部的 input 要儲存 CACHE ，那所花費的時間還不夠重覆 input 所節省的時間了。&lt;br /&gt;&lt;br /&gt;&lt;pre class="new_vim"&gt;&lt;br /&gt;&lt;span class="lnr"&gt;  1 &lt;/span&gt;&lt;span class="Comment"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;  2 &lt;/span&gt;&lt;span class="Comment"&gt;# -*- coding: utf8 -*-&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;  3 &lt;/span&gt;&lt;span class="PreProc"&gt;import&lt;/span&gt; types&lt;br /&gt;&lt;span class="lnr"&gt;  4 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;  5 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;  6 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;  7 &lt;/span&gt;&lt;span class="Statement"&gt;class&lt;/span&gt; &lt;span class="Identifier"&gt;CutSteel&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;  8 &lt;/span&gt;    &lt;span class="Constant"&gt;u&amp;quot;&amp;quot;&amp;quot;  目的：解鋼筋切割的組合問題(也就是背包問題)，但不只是求組合數，&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;  9 &lt;/span&gt;&lt;span class="Constant"&gt;                也要把所有的組合列出。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 10 &lt;/span&gt;&lt;span class="Constant"&gt;          例： 10 公尺長的鋼筋，要切成 7, 5, 3, 2 公尺等，有多少種組合。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 11 &lt;/span&gt;&lt;span class="Constant"&gt;          解：&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 12 &lt;/span&gt;&lt;span class="Constant"&gt;                 7  5  3  2&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 13 &lt;/span&gt;&lt;span class="Constant"&gt;                [1, 0, 1, 0]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 14 &lt;/span&gt;&lt;span class="Constant"&gt;                [1, 0, 0, 1]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 15 &lt;/span&gt;&lt;span class="Constant"&gt;                [0, 2, 0, 0]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 16 &lt;/span&gt;&lt;span class="Constant"&gt;                [0, 1, 1, 1]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 17 &lt;/span&gt;&lt;span class="Constant"&gt;                [0, 1, 0, 2]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 18 &lt;/span&gt;&lt;span class="Constant"&gt;                [0, 0, 3, 0]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 19 &lt;/span&gt;&lt;span class="Constant"&gt;                [0, 0, 2, 2]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 20 &lt;/span&gt;&lt;span class="Constant"&gt;                [0, 0, 1, 3]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 21 &lt;/span&gt;&lt;span class="Constant"&gt;                [0, 0, 0, 5]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 22 &lt;/span&gt;&lt;span class="Constant"&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 23 &lt;/span&gt;    &lt;span class="Statement"&gt;def&lt;/span&gt; &lt;span class="Identifier"&gt;__init__&lt;/span&gt;(self, bar, sizes):&lt;br /&gt;&lt;span class="lnr"&gt; 24 &lt;/span&gt;        &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Identifier"&gt;type&lt;/span&gt;(bar) != types.IntType &lt;span class="Statement"&gt;or&lt;/span&gt; bar &amp;lt;= &lt;span class="Constant"&gt;0&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt; 25 &lt;/span&gt;            &lt;span class="Statement"&gt;raise&lt;/span&gt; &lt;span class="Type"&gt;ValueError&lt;/span&gt;(&lt;span class="Constant"&gt;u'只接受正整數'&lt;/span&gt;)&lt;br /&gt;&lt;span class="lnr"&gt; 26 &lt;/span&gt;        &lt;span class="Statement"&gt;for&lt;/span&gt; s &lt;span class="Statement"&gt;in&lt;/span&gt; sizes:&lt;br /&gt;&lt;span class="lnr"&gt; 27 &lt;/span&gt;            &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Identifier"&gt;type&lt;/span&gt;(s) != types.IntType &lt;span class="Statement"&gt;or&lt;/span&gt; s &amp;lt;= &lt;span class="Constant"&gt;0&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt; 28 &lt;/span&gt;                &lt;span class="Statement"&gt;raise&lt;/span&gt; &lt;span class="Type"&gt;ValueError&lt;/span&gt;(&lt;span class="Constant"&gt;u'只接受正整數'&lt;/span&gt;)&lt;br /&gt;&lt;span class="lnr"&gt; 29 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 30 &lt;/span&gt;        self._no_cache_count = &lt;span class="Constant"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 31 &lt;/span&gt;        self._cache_count = &lt;span class="Constant"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 32 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 33 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 34 &lt;/span&gt;    &lt;span class="Statement"&gt;def&lt;/span&gt; &lt;span class="Identifier"&gt;cache&lt;/span&gt;(my_function):&lt;br /&gt;&lt;span class="lnr"&gt; 35 &lt;/span&gt;        CACHE = {}&lt;br /&gt;&lt;span class="lnr"&gt; 36 &lt;/span&gt;        &lt;span class="Statement"&gt;def&lt;/span&gt; &lt;span class="Identifier"&gt;inner_function&lt;/span&gt;(*args):&lt;br /&gt;&lt;span class="lnr"&gt; 37 &lt;/span&gt;            key = &lt;span class="Identifier"&gt;str&lt;/span&gt;(args[&lt;span class="Constant"&gt;1&lt;/span&gt;:])&lt;br /&gt;&lt;span class="lnr"&gt; 38 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 39 &lt;/span&gt;&lt;span class="Comment"&gt;#            try:&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 40 &lt;/span&gt;&lt;span class="Comment"&gt;#                #INFO 用 try 的會比 if 慢一點點。只慢一點點。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 41 &lt;/span&gt;&lt;span class="Comment"&gt;#                CACHE[key]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 42 &lt;/span&gt;&lt;span class="Comment"&gt;#                args[0]._cache_count += 1&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 43 &lt;/span&gt;&lt;span class="Comment"&gt;#            except KeyError:&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 44 &lt;/span&gt;&lt;span class="Comment"&gt;#                args[0]._no_cache_count += 1&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 45 &lt;/span&gt;&lt;span class="Comment"&gt;#                CACHE[key] = my_function(*args)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 46 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 47 &lt;/span&gt;            &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Statement"&gt;not&lt;/span&gt; CACHE.get(key, &lt;span class="Identifier"&gt;None&lt;/span&gt;):&lt;br /&gt;&lt;span class="lnr"&gt; 48 &lt;/span&gt;                CACHE[key] = my_function(*args)&lt;br /&gt;&lt;span class="lnr"&gt; 49 &lt;/span&gt;                args[&lt;span class="Constant"&gt;0&lt;/span&gt;]._no_cache_count += &lt;span class="Constant"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 50 &lt;/span&gt;            &lt;span class="Statement"&gt;else&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt; 51 &lt;/span&gt;                args[&lt;span class="Constant"&gt;0&lt;/span&gt;]._cache_count += &lt;span class="Constant"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 52 &lt;/span&gt;            &lt;span class="Statement"&gt;return&lt;/span&gt; CACHE[key]&lt;br /&gt;&lt;span class="lnr"&gt; 53 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 54 &lt;/span&gt;        &lt;span class="Statement"&gt;return&lt;/span&gt; inner_function&lt;br /&gt;&lt;span class="lnr"&gt; 55 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 56 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 57 &lt;/span&gt;    &lt;span class="PreProc"&gt;@&lt;/span&gt;&lt;span class="Identifier"&gt;cache&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 58 &lt;/span&gt;    &lt;span class="Statement"&gt;def&lt;/span&gt; &lt;span class="Identifier"&gt;bag&lt;/span&gt;(self, total, sizes):&lt;br /&gt;&lt;span class="lnr"&gt; 59 &lt;/span&gt;        &lt;span class="Constant"&gt;u&amp;quot;&amp;quot;&amp;quot; 只計算組合數 from thinker&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 60 &lt;/span&gt;        propers = &lt;span class="Identifier"&gt;tuple&lt;/span&gt;([sz &lt;span class="Statement"&gt;for&lt;/span&gt; sz &lt;span class="Statement"&gt;in&lt;/span&gt; sizes &lt;span class="Statement"&gt;if&lt;/span&gt; sz &amp;lt;= total])&lt;br /&gt;&lt;span class="lnr"&gt; 61 &lt;/span&gt;        &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Statement"&gt;not&lt;/span&gt; propers:&lt;br /&gt;&lt;span class="lnr"&gt; 62 &lt;/span&gt;            &lt;span class="Statement"&gt;if&lt;/span&gt; total &amp;gt;= self._minsize: &lt;span class="Statement"&gt;return&lt;/span&gt; &lt;span class="Constant"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 63 &lt;/span&gt;            &lt;span class="Statement"&gt;else&lt;/span&gt;: &lt;span class="Statement"&gt;return&lt;/span&gt; &lt;span class="Constant"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 64 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 65 &lt;/span&gt;        num = self.bag(total - propers[&lt;span class="Constant"&gt;0&lt;/span&gt;], propers) + self.bag(total, propers[&lt;span class="Constant"&gt;1&lt;/span&gt;:])&lt;br /&gt;&lt;span class="lnr"&gt; 66 &lt;/span&gt;        &lt;span class="Statement"&gt;return&lt;/span&gt; num&lt;br /&gt;&lt;span class="lnr"&gt; 67 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 68 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 69 &lt;/span&gt;    &lt;span class="Statement"&gt;def&lt;/span&gt; &lt;span class="Identifier"&gt;cut&lt;/span&gt;(self, total, sizes):&lt;br /&gt;&lt;span class="lnr"&gt; 70 &lt;/span&gt;        &lt;span class="Constant"&gt;u&amp;quot;&amp;quot;&amp;quot; 本函式的 input 為「被切割長度」及「欲切割的種數」。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 71 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 72 &lt;/span&gt;&lt;span class="Constant"&gt;            output 為該 input 的所有組合。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 73 &lt;/span&gt;&lt;span class="Constant"&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 74 &lt;/span&gt;        &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Identifier"&gt;len&lt;/span&gt;(sizes) == &lt;span class="Constant"&gt;1&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt; 75 &lt;/span&gt;            &lt;span class="Statement"&gt;return&lt;/span&gt; (&lt;br /&gt;&lt;span class="lnr"&gt; 76 &lt;/span&gt;                    [(total / sizes[&lt;span class="Constant"&gt;0&lt;/span&gt;]), ],&lt;br /&gt;&lt;span class="lnr"&gt; 77 &lt;/span&gt;                    )&lt;br /&gt;&lt;span class="lnr"&gt; 78 &lt;/span&gt;        &lt;span class="Statement"&gt;elif&lt;/span&gt; total &amp;lt; sizes[-&lt;span class="Constant"&gt;1&lt;/span&gt;]:&lt;br /&gt;&lt;span class="lnr"&gt; 79 &lt;/span&gt;            &lt;span class="Statement"&gt;return&lt;/span&gt; (&lt;br /&gt;&lt;span class="lnr"&gt; 80 &lt;/span&gt;                    [&lt;span class="Constant"&gt;0&lt;/span&gt;,] * &lt;span class="Identifier"&gt;len&lt;/span&gt;(sizes),&lt;br /&gt;&lt;span class="lnr"&gt; 81 &lt;/span&gt;                    )&lt;br /&gt;&lt;span class="lnr"&gt; 82 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 83 &lt;/span&gt;        &lt;span class="Statement"&gt;return&lt;/span&gt; [&lt;br /&gt;&lt;span class="lnr"&gt; 84 &lt;/span&gt;                [j] + tr&lt;br /&gt;&lt;span class="lnr"&gt; 85 &lt;/span&gt;                    &lt;span class="Statement"&gt;for&lt;/span&gt; j &lt;span class="Statement"&gt;in&lt;/span&gt; &lt;span class="Identifier"&gt;xrange&lt;/span&gt;(&lt;span class="Constant"&gt;0&lt;/span&gt;, total / sizes[&lt;span class="Constant"&gt;0&lt;/span&gt;] + &lt;span class="Constant"&gt;1&lt;/span&gt;)&lt;br /&gt;&lt;span class="lnr"&gt; 86 &lt;/span&gt;                    &lt;span class="Statement"&gt;for&lt;/span&gt; tr &lt;span class="Statement"&gt;in&lt;/span&gt; self.cut(total - sizes[&lt;span class="Constant"&gt;0&lt;/span&gt;] * j, sizes[&lt;span class="Constant"&gt;1&lt;/span&gt;:])&lt;br /&gt;&lt;span class="lnr"&gt; 87 &lt;/span&gt;                ]&lt;br /&gt;&lt;span class="lnr"&gt; 88 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 89 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 90 &lt;/span&gt;    &lt;span class="PreProc"&gt;@&lt;/span&gt;&lt;span class="Identifier"&gt;cache&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 91 &lt;/span&gt;    &lt;span class="Statement"&gt;def&lt;/span&gt; &lt;span class="Identifier"&gt;cache_cut&lt;/span&gt;(self, total, sizes):&lt;br /&gt;&lt;span class="lnr"&gt; 92 &lt;/span&gt;        &lt;span class="Constant"&gt;u&amp;quot;&amp;quot;&amp;quot; 因為 cache_cut 函式本身是具有固定 input 就會產生固定 output ，&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 93 &lt;/span&gt;&lt;span class="Constant"&gt;            它們具有一對一或多對一的關係，所以我把 input,&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 94 &lt;/span&gt;&lt;span class="Constant"&gt;            output 放在一個 dictionary 中，若程式計算到相同的 input 時，&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 95 &lt;/span&gt;&lt;span class="Constant"&gt;            可免計算，直接從 dictionary 拿答案。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 96 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 97 &lt;/span&gt;&lt;span class="Constant"&gt;            其實本函式就是複製 cut 函式後，&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 98 &lt;/span&gt;&lt;span class="Constant"&gt;            將函式內程式碼中的 self.cut 改成 self.cache_cut ，&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 99 &lt;/span&gt;&lt;span class="Constant"&gt;            並在函式名前加上 @cache 而已。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;100 &lt;/span&gt;&lt;span class="Constant"&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;101 &lt;/span&gt;        &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Identifier"&gt;len&lt;/span&gt;(sizes) == &lt;span class="Constant"&gt;1&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;102 &lt;/span&gt;            &lt;span class="Statement"&gt;return&lt;/span&gt; (&lt;br /&gt;&lt;span class="lnr"&gt;103 &lt;/span&gt;                    [(total / sizes[&lt;span class="Constant"&gt;0&lt;/span&gt;]), ],&lt;br /&gt;&lt;span class="lnr"&gt;104 &lt;/span&gt;                    )&lt;br /&gt;&lt;span class="lnr"&gt;105 &lt;/span&gt;&lt;span class="Comment"&gt;#        elif total &amp;lt; sizes[-1]:&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;106 &lt;/span&gt;&lt;span class="Comment"&gt;#            #INFO 多這個判斷式反而變慢了。因為已經用 cache 了，&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;107 &lt;/span&gt;&lt;span class="Comment"&gt;#            #所以那些 total &amp;lt; sizes[-1] 情況會變成比較少，&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;108 &lt;/span&gt;&lt;span class="Comment"&gt;#            #然而在一個 cache_cut 函式中多加一個 if ，則判斷時間會多一倍,&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;109 &lt;/span&gt;&lt;span class="Comment"&gt;#            #加速效果反而不如預期。&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;110 &lt;/span&gt;&lt;span class="Comment"&gt;#            return (&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;111 &lt;/span&gt;&lt;span class="Comment"&gt;#                    [0,] * len(sizes),&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;112 &lt;/span&gt;&lt;span class="Comment"&gt;#                    )&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;113 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;114 &lt;/span&gt;        &lt;span class="Statement"&gt;return&lt;/span&gt; [&lt;br /&gt;&lt;span class="lnr"&gt;115 &lt;/span&gt;                [j] + tr&lt;br /&gt;&lt;span class="lnr"&gt;116 &lt;/span&gt;                    &lt;span class="Statement"&gt;for&lt;/span&gt; j &lt;span class="Statement"&gt;in&lt;/span&gt; &lt;span class="Identifier"&gt;xrange&lt;/span&gt;(&lt;span class="Constant"&gt;0&lt;/span&gt;, total / sizes[&lt;span class="Constant"&gt;0&lt;/span&gt;] + &lt;span class="Constant"&gt;1&lt;/span&gt;)&lt;br /&gt;&lt;span class="lnr"&gt;117 &lt;/span&gt;                    &lt;span class="Statement"&gt;for&lt;/span&gt; tr &lt;span class="Statement"&gt;in&lt;/span&gt; self.cache_cut(total - sizes[&lt;span class="Constant"&gt;0&lt;/span&gt;] * j, sizes[&lt;span class="Constant"&gt;1&lt;/span&gt;:])&lt;br /&gt;&lt;span class="lnr"&gt;118 &lt;/span&gt;                ]&lt;br /&gt;&lt;span class="lnr"&gt;119 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;120 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;121 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;122 &lt;/span&gt;&lt;span class="PreProc"&gt;from&lt;/span&gt; time &lt;span class="PreProc"&gt;import&lt;/span&gt; time&lt;br /&gt;&lt;span class="lnr"&gt;123 &lt;/span&gt;&lt;span class="PreProc"&gt;import&lt;/span&gt; sys&lt;br /&gt;&lt;span class="lnr"&gt;124 &lt;/span&gt;&lt;span class="Statement"&gt;if&lt;/span&gt; __name__ == &lt;span class="Constant"&gt;'__main__'&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;125 &lt;/span&gt;    &lt;span class="Comment"&gt;#bar = sys.argv[1:]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;126 &lt;/span&gt;    &lt;span class="Comment"&gt;#sizes = sys.argv[2:]&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;127 &lt;/span&gt;    bar = &lt;span class="Constant"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;128 &lt;/span&gt;    sizes = [&lt;span class="Constant"&gt;7&lt;/span&gt;, &lt;span class="Constant"&gt;5&lt;/span&gt;, &lt;span class="Constant"&gt;3&lt;/span&gt;, &lt;span class="Constant"&gt;2&lt;/span&gt;]&lt;br /&gt;&lt;span class="lnr"&gt;129 &lt;/span&gt;    sizes.sort(reverse=&lt;span class="Identifier"&gt;True&lt;/span&gt;)&lt;br /&gt;&lt;span class="lnr"&gt;130 &lt;/span&gt;    sizes = &lt;span class="Identifier"&gt;tuple&lt;/span&gt;(sizes)&lt;br /&gt;&lt;span class="lnr"&gt;131 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;132 &lt;/span&gt;    cs = CutSteel(bar, sizes)&lt;br /&gt;&lt;span class="lnr"&gt;133 &lt;/span&gt;    cs._minsize = &lt;span class="Identifier"&gt;min&lt;/span&gt;(sizes)&lt;br /&gt;&lt;span class="lnr"&gt;134 &lt;/span&gt;    &lt;span class="Identifier"&gt;print&lt;/span&gt; &lt;span class="Constant"&gt;'Total count: %s'&lt;/span&gt; % cs.bag(bar, &lt;span class="Identifier"&gt;tuple&lt;/span&gt;(sizes))&lt;br /&gt;&lt;span class="lnr"&gt;135 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;136 &lt;/span&gt;    cs = CutSteel(bar, sizes)&lt;br /&gt;&lt;span class="lnr"&gt;137 &lt;/span&gt;    time0 = time()&lt;br /&gt;&lt;span class="lnr"&gt;138 &lt;/span&gt;    result = cs.cache_cut(bar, sizes)&lt;br /&gt;&lt;span class="lnr"&gt;139 &lt;/span&gt;    &lt;span class="Identifier"&gt;print&lt;/span&gt; &lt;span class="Constant"&gt;'cache_cut spend time: %s'&lt;/span&gt; % (time() - time0)&lt;br /&gt;&lt;span class="lnr"&gt;140 &lt;/span&gt;    &lt;span class="Identifier"&gt;print&lt;/span&gt; &lt;span class="Identifier"&gt;len&lt;/span&gt;(result)&lt;br /&gt;&lt;span class="lnr"&gt;141 &lt;/span&gt;    &lt;span class="Identifier"&gt;print&lt;/span&gt;(&lt;span class="Constant"&gt;'&lt;/span&gt;&lt;span class="Special"&gt;\t&lt;/span&gt;&lt;span class="Constant"&gt;no cache count: %s, cache count: %s'&lt;/span&gt;%(cs._no_cache_count, cs._cache_count))&lt;br /&gt;&lt;span class="lnr"&gt;142 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;143 &lt;/span&gt;&lt;span class="Comment"&gt;#    cs = CutSteel(bar, sizes)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;144 &lt;/span&gt;&lt;span class="Comment"&gt;#    time0 = time()&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;145 &lt;/span&gt;&lt;span class="Comment"&gt;#    result = cs.cut(bar, sizes[:])&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;146 &lt;/span&gt;&lt;span class="Comment"&gt;#    print 'cut spend time: %s' % (time() - time0)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;147 &lt;/span&gt;&lt;span class="Comment"&gt;#    print len(result)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;148 &lt;/span&gt;&lt;span class="Comment"&gt;#    print('\tno cache count: %s, cache count: %s'%(cs._no_cache_count, cs._cache_count))&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;149 &lt;/span&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;150 &lt;/span&gt;&lt;span class="Comment"&gt;#    cs = CutSteel(bar, sizes)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;151 &lt;/span&gt;&lt;span class="Comment"&gt;#    time0 = time()&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;152 &lt;/span&gt;&lt;span class="Comment"&gt;#    result = cs.cut(bar, sizes[:])&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;153 &lt;/span&gt;&lt;span class="Comment"&gt;#    print 'cut spend time: %s' % (time() - time0)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;154 &lt;/span&gt;&lt;span class="Comment"&gt;#    print len(result)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;155 &lt;/span&gt;&lt;span class="Comment"&gt;#    print('\tno cache count: %s, cache count: %s'%(cs._no_cache_count, cs._cache_count))&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;156 &lt;/span&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;157 &lt;/span&gt;&lt;span class="Comment"&gt;#    cs1 = CutSteel(bar, sizes)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;158 &lt;/span&gt;&lt;span class="Comment"&gt;#    time0 = time()&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;159 &lt;/span&gt;&lt;span class="Comment"&gt;#    result = cs1.cache_cut(bar, sizes[:])&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;160 &lt;/span&gt;&lt;span class="Comment"&gt;#    print 'cache_cut spend time: %s' % (time() - time0)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;161 &lt;/span&gt;&lt;span class="Comment"&gt;#    print len(result)&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;162 &lt;/span&gt;&lt;span class="Comment"&gt;#    print('\tno cache count: %s, cache count: %s'%(cs._no_cache_count, cs._cache_count))&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;163 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;164 &lt;/span&gt;    &lt;span class="Statement"&gt;for&lt;/span&gt; i &lt;span class="Statement"&gt;in&lt;/span&gt; &lt;span class="Identifier"&gt;xrange&lt;/span&gt;(&lt;span class="Constant"&gt;0&lt;/span&gt;, &lt;span class="Identifier"&gt;len&lt;/span&gt;(result)):&lt;br /&gt;&lt;span class="lnr"&gt;165 &lt;/span&gt;        &lt;span class="Identifier"&gt;print&lt;/span&gt;(result[&lt;span class="Identifier"&gt;len&lt;/span&gt;(result)-i-&lt;span class="Constant"&gt;1&lt;/span&gt;])&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7121938802520353867?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7121938802520353867/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/09/blog-post_15.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7121938802520353867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7121938802520353867'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/09/blog-post_15.html' title='再改寫「背包問題」的求解程式碼'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-3671117771857798917</id><published>2011-09-12T11:20:00.014+08:00</published><updated>2011-09-17T15:59:26.901+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seediq Bale'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>賽德克‧巴萊觀前感 - 談第一、二次霧社事件及抗日那些事</title><content type='html'>&lt;span style="font-weight:bold;"&gt;聲明： 既然是觀前感，就表示我還沒看過電影，所以本文不是談魏導演的手法及電影優劣，只是要談談它的背景故事，請不要拿本篇文章結論來當作該看或不看電影的論點。我是一定會去看「賽德克‧巴萊」，為的不是「莫那‧魯道是個英雄，能發揮臺灣人精神」? 而是為了一部花費 7 億打破臺灣電影史紀錄的電影。常看電影的人應該都知道，不是花大錢的電影就比較好看，使錢也是一種門道，我就想看看臺灣導演會不會使錢。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;筆者在國史館&lt;a href="http://www.th.gov.tw/"&gt;臺灣文獻館&lt;/a&gt;當了二年的替代役，在這個地方工作所得到的好處之一，是打破了我過去對歷史資料來源的迷思。&lt;br /&gt;&lt;br /&gt;原來在歷史課本上所看到的內容，是有人在機關公文中尋尋覓覓拼湊出來的，或者是說史料內容除了口述、古籍、文獻、紀要、遺跡…這些外，居然也可以是從前朝機關往來文書中汲取而來，而這種地方來的史料，是很花費功夫的，可能看了涵蓋 2 年期間的數千份公文，卻只找到 2 張圖：「&lt;a href="http://inventory.iis.sinica.edu.tw/new/data.php?ID=81"&gt;太魯閣族的衣著、紋面情形。&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;從這兩張圖中，我們才知道要重演 1900 年左右的故事時，裡面的人該穿什麼樣的衣服、紋什麼樣的面。當然這是考據史實的拍法，如果不講究，拿塊黑黑紅紅花花的布套上去，我想臺灣也沒多少人會知道這是錯的，或許連現今太魯閣族人也不見得認得出來。因為這是 110 年前的事，服飾花樣會進步，尤其在這 110 年之間，臺灣經歷了兩個統治者，他們無不想抹去大家對前朝的記憶。&lt;br /&gt;&lt;br /&gt;既然執政者能依優勢抹去大家對前朝的記憶，所以他們所留下的檔案公文，有些也不盡然是真的，那些公務員擬公文時，也知道這將來會成為證據，所以不該寫的，就不會寫了。我們要研究歷史的話，也得有這份體認，要從多方管道得來資訊，並作交叉驗證。&lt;br /&gt;&lt;br /&gt;好了，我總要進入正題了。&lt;br /&gt;&lt;br /&gt;在臺灣有讀過書的人，都知道莫那‧魯道是抗日英雄，與他最相關的歷史就是&lt;a href="http://zh.wikipedia.org/wiki/%E9%9C%A7%E7%A4%BE%E4%BA%8B%E4%BB%B6#.E7.AC.AC.E4.B8.80.E6.AC.A1.E9.9C.A7.E7.A4.BE.E4.BA.8B.E4.BB.B6"&gt;第一次霧社事件&lt;/a&gt;。不過，課本沒講的是：「&lt;a href="http://www.th.gov.tw/epaper/view2.php?ID=68&amp;AID=924"&gt;有其他原住民部落帶著日本人一起打賽德克族的德固達雅分支&lt;/a&gt;(&lt;a href="http://3.bp.blogspot.com/-RWLwwY1wers/Tm3544sA_MI/AAAAAAAADTU/kJZnabJosVU/s1600/%25E8%2587%25BA%25E7%2581%25A3%25E6%2596%2587%25E7%258D%25BB%25E9%25A4%25A8-%25E9%259B%25BB%25E5%25AD%2590%25E5%25A0%25B1.png"&gt;備份&lt;/a&gt;)、&lt;a href="http://tw.nextmedia.com/applenews/article/art_id/33662442/IssueID/20110912"&gt;之前莫那‧魯道也幫著日本人打泰雅族&lt;/a&gt;(&lt;a href="http://4.bp.blogspot.com/-Nq85Usqtpg4/Tm355ZK72aI/AAAAAAAADTc/kN0ADzlOZbE/s1600/%25E8%258E%25AB%25E9%2582%25A3%25E4%25B8%258D%25E6%2598%25AF%25E8%258B%25B1%25E9%259B%2584.png"&gt;備份&lt;/a&gt;)以及&lt;a href="http://zh.wikipedia.org/wiki/%E9%9C%A7%E7%A4%BE%E4%BA%8B%E4%BB%B6#.E7.AC.AC.E4.BA.8C.E6.AC.A1.E9.9C.A7.E7.A4.BE.E4.BA.8B.E4.BB.B6"&gt;第二次霧社事件是原住民族彼此相殺&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;為什麼在我們印象中，乃原住民族不滿日本政府的欺壓，起而反抗而來? 怎麼也有其他原住民是站在日本那一邊，甚至連莫那‧魯道也曾跟日本站同一邊。到底他還是不是抗日英雄呢?&lt;br /&gt;&lt;br /&gt;他是抗日英雄這件事，其實並不重要，重要的是我們政府希望我們相信這件事，而且起而效尤，這樣才能延續執政權的正當性，是他們讓我們遠離日本暴政，請詳閱&lt;a href="http://tw.myblog.yahoo.com/jw!uduCo2SGHRYWIzLEAu0T/article?mid=1085&amp;prev=1088&amp;next=1011&amp;page=1&amp;sc=1"&gt;這篇格文&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;要讓人民效尤抗日，就得找個偉人，述說他的事蹟，去除枝節得到純正連貫易消化的故事，讓人民好吸收。這像不像置入性行銷呀! 原來我們政府幾十年前就在作了。&lt;br /&gt;&lt;br /&gt;但是撥開那些政治實體的詞語，我們把焦點放在人身上，從這些歷史中，我只看到一群人為了資源，而必須從別人那邊奪取。&lt;br /&gt;&lt;br /&gt;像是：「日本在明治維新後，需支應日本社會生活水準提升而效法大英帝國所採取的殖民帝國主義」、「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010474388"&gt;中國越族被中原漢族趕到海峽另一邊而與臺灣平埔族融合&lt;/a&gt;」、「原住民服從日本以換取其他原住民族的獵場」。&lt;br /&gt;&lt;br /&gt;歷史重覆上演著人類在地球上巧取豪奪資源後，再分配給某一部份人享用的故事。而且結局往往是產業層次較高的社群贏了。&lt;br /&gt;&lt;br /&gt;從「&lt;a href="http://zh.wikipedia.org/wiki/%E6%A7%8D%E7%82%AE%E3%80%81%E7%97%85%E8%8F%8C%E8%88%87%E9%8B%BC%E9%90%B5"&gt;槍炮、病菌與鋼鐵&lt;/a&gt;」一書得來的觀念：「地理能決定人類社會的優劣(而不是人類基因決定優劣)」，所以在一塊土地上，如果它養成一個國家實體，具有法治、軍隊、領袖的話，那表示其他人種來這塊地，在假以時日後，也同樣發展的了。這個論點，告訴我們如果給 1683 年的臺灣平埔族人、 1930 年的臺灣原住民人更多時間，他們也能同樣發展至現在的產業層次。但是中國越族、漢族來了、日本也人來了，他們被迫學習別人的文化、語言。而現在呢?&lt;br /&gt;&lt;br /&gt;現今的臺灣人身上的血液多半都有越族、漢族、平埔族、高山族甚至日本人的血液，你如果把自己定位在「被欺壓的平埔族或是高山族」上，那你如何忽視「越族、漢族」的血源，就像你支持「莫那‧魯道抗日是體現臺灣人精神一樣」，你如何看待那些協助日本的原住民族，而且他們的後代目前多半還住在霧社，是真真實實地存在，難道他們就不是臺灣人嗎? 我不這麼認為。只要是住在臺灣(含澎湖、金門、馬祖、綠島、蘭嶼、小琉球)，他就應該是個臺灣人，不須宣誓、不用驗血，簡單講，我採屬地主義。&lt;br /&gt;&lt;br /&gt;從資源的角度來看莫那‧魯道，我們就可以了解他之前服從日本但後來卻反抗日本的源由，其實就是讓他的族人們過得好(雖然不是他親口說的，是我以同理心猜想的)。他一開始也知道日本的產業層次高、人數多，反抗只是以卵擊石，豪無勝算，直到後來得罪了日本人，只好用生命來賭一把，不過結果你知道的：「他輸了」。歷史沒法重來，所以我們不知道，如果他當時忍下了，是否還是會被滅族? 很多時候，領袖也不知道該不該作，他只能賭。&lt;br /&gt;&lt;br /&gt;如果我們人類社會能朝向與棲地均衝發展，資源有多少就用多少，不用擴張領地來掠奪資源，應該會少了很多殘酷的戰爭。只是這目標作不到，因為「全球化」及「氣候變遷」讓我們很難作到「與棲地均衝發展」。&lt;br /&gt;&lt;br /&gt;所以，我想有生之年可能還是會面臨到資源分配不足的事情，唉~ 那該怎麼因應呢? 我還沒想到。還是去看電影吧！　它應該沒那麼難讓人懂。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-3671117771857798917?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/3671117771857798917/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/09/blog-post.html#comment-form' title='7 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3671117771857798917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3671117771857798917'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/09/blog-post.html' title='賽德克‧巴萊觀前感 - 談第一、二次霧社事件及抗日那些事'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8746390111446135928</id><published>2011-09-10T14:49:00.004+08:00</published><updated>2011-09-10T19:52:24.448+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='football'/><category scheme='http://www.blogger.com/atom/ns#' term='nfl'/><category scheme='http://www.blogger.com/atom/ns#' term='baseball'/><title type='text'>終於能在臺灣看到 NFL 例行賽轉播</title><content type='html'>筆者從小就是個不愛運動的小孩，一直覺得這是不動大腦、四肢發達的人才作的事，這個信念一直維持到大一時期。&lt;br /&gt;&lt;br /&gt;我在唸大學時，已經是個只愛待在家裡鬼混的小孩，因為高中時大多把該玩的都玩過了。於是，我大學花在第四台的時間還不少，一開始看得當然是電影而已，而 ESPN 很少轉到，直到某天轉到舊金山淘金者的美式足球季後賽。過去只在電影中大略見識過，對其比賽規則當然是不懂，也因筆者對於不懂的事，就愛搞懂，也不管 EPSN 只有原音轉播，反正我就是一邊看一邊猜。看著看著也略知一二，就這樣一路看到 Brett Favre 帶著 Green Bay 拿下 '96 超級盃。&lt;br /&gt;&lt;br /&gt;等到美式足球季結束後，我開始另尋它種運動比賽節目，而台灣大聯盟正巧於 '97 正式開打，一開始都是袁定文當球評的，而他剛開始作球評時，花了不少時間在解釋棒球比賽的門道，不像我以前看國際賽時，只專注在國家隊有沒有安打、有沒有得分上。於是，我開始對「運動比賽」改觀了，它不像我所認為的是「四肢發達」的人才搞的玩意，沒有腦袋還真是混不出局面。當時，我對棒球可是深深地著迷，不但看直播，也看重播，有時一場比賽我看了三遍。是的，你猜到了，我大學很少在唸書的。&lt;br /&gt;&lt;br /&gt;對「運動」改觀後，我就百無禁忌了，冰球(Hockey)、足球(Soccer)、板球(Cricket)都看，就是不看籃球，因為我不喜歡跟風。甚至，我還買了 '97 NHL 的電腦遊戲，那個老闆還說：「真沒想到，這遊戲會有人買。」&lt;br /&gt;&lt;br /&gt;因為袁博士當時也在年代台的 Catch the fever 節目擔任球評轉播美國大聯盟，所以我後來對美國棒球的了解反而比美式足球還深了。&lt;br /&gt;&lt;br /&gt;然而，因為袁博士及王建民所帶來的美國職棒熱潮間接地讓 EPSN 臺灣台壓縮了其他球類比賽的預算，使得我看洋基比賽看到吐，也沒什麼機會再看到美式足球例行賽了。&lt;br /&gt;&lt;br /&gt;直到今年(2011)， ASN 運動台作到了「直播 NFL 例行賽」的服務，使用中華電信 MOD 只要多花 11 塊，就能升級到豪華特餐，這其中包含了 ASN 運動台。&lt;br /&gt;&lt;br /&gt;剛剛我在 MOD 上看了 2011 NFL Kickoff 綠灣包裝工 V.S 紐奧良聖徒，喚起了十幾年前的記憶。我想我一定是又老了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8746390111446135928?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8746390111446135928/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/09/nfl.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8746390111446135928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8746390111446135928'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/09/nfl.html' title='終於能在臺灣看到 NFL 例行賽轉播'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7789184281305913298</id><published>2011-08-18T17:58:00.004+08:00</published><updated>2011-08-18T18:12:23.234+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='construction site management'/><category scheme='http://www.blogger.com/atom/ns#' term='construction management'/><title type='text'>超 MAN 的玩具</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-H7lZCZhXPvY/TkzieOexxuI/AAAAAAAADSo/PCPZl_-vLG8/s1600/IMG_5673.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-H7lZCZhXPvY/TkzieOexxuI/AAAAAAAADSo/PCPZl_-vLG8/s400/IMG_5673.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5642133442099529442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;它的輪子直徑為 2 公尺，比我還高，可惜我不能貼著它的車輪拍照，會違反他們的工作規則。這台是 &lt;a href="http://www.cat.com/cda/layout?m=308668&amp;x=7"&gt;Caterpillar 的 773F OFF-HIGHWAY TRUCK&lt;/a&gt;，可承載 61 噸的物品，比起國內一般的砂石車承載 20 噸來說，足足有 3 倍之多。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www3.wracb.gov.tw/"&gt;湖山水庫&lt;/a&gt;主體是土石壩，需要用到非常多的土石填方，如果用國內最大的砂石車來作運輸，司機得多請 2 倍，或是工期得多出 2 倍，但基地環境不見得能容納 3 倍的運輸車輛，所以會選擇這種重機具。&lt;br /&gt;&lt;br /&gt;據管理人員解說，工作人員不得在其後跟車，不然它倒車壓過你後，司機也不見得會發現異樣。&lt;br /&gt;&lt;br /&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7789184281305913298?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7789184281305913298/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/08/man.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7789184281305913298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7789184281305913298'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/08/man.html' title='超 MAN 的玩具'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-H7lZCZhXPvY/TkzieOexxuI/AAAAAAAADSo/PCPZl_-vLG8/s72-c/IMG_5673.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-231877276750870517</id><published>2011-08-05T22:30:00.008+08:00</published><updated>2011-08-06T09:47:48.374+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>今天(2011-08-05)我有 5.84% 的損失</title><content type='html'>今天大盤跌了 5.58% ，而我有 5.84% 的損失。多那 0.26% ，當然會不高興。&lt;br /&gt;&lt;br /&gt;凱因斯：「投資者有責任週期性地承受損失且不能有絲毫怨言」。大師說的話，那我當然是得吞下來囉，不過得去跑個三圈，流流汗、出出氣。&lt;br /&gt;&lt;br /&gt;對長期的被動投資者而已，市場下跌沒什麼了不起，它不跌你怎麼用便宜的價格買股票呢!&lt;br /&gt;&lt;br /&gt;我知道有很多朋友，今天心情真的不好。寫這篇文章只是想說：「如果今天的事，讓你吃不下飯、睡不著覺、工作沒擋頭，那請試試『&lt;a href="http://hoamon.blogspot.com/2008/02/blog-post.html"&gt;指數投資&lt;/a&gt;或&lt;a href="http://hoamon.blogspot.com/2010/11/blog-post_15.html"&gt;被動投資&lt;/a&gt;』吧!」&lt;br /&gt;&lt;br /&gt;過去，我還曾有一天負 7% 的績效，還連了好幾天哩。那是我們的李前總統：「臺灣、中國，一邊一國」的時候，當時，我手上只有&lt;a href="http://tw.stock.yahoo.com/q/bc?s=9921"&gt;巨大&lt;/a&gt;，湊巧它還是很紅的中概股，不到一個月，我就被融資斷頭了，那時候，我真的沒睡好覺，也沒讀好書呀!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-231877276750870517?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/231877276750870517/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/08/2011-08-05-58.html#comment-form' title='8 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/231877276750870517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/231877276750870517'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/08/2011-08-05-58.html' title='今天(2011-08-05)我有 5.84% 的損失'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-3511786211134026131</id><published>2011-08-05T14:36:00.006+08:00</published><updated>2011-08-08T22:30:17.155+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Call +1</title><content type='html'>現在用 &lt;a href="http://www.google.com/chat/voice/"&gt;Google Call&lt;/a&gt; 就能用網路撥號給市內電話及手機了。&lt;br /&gt;&lt;br /&gt;費率目前是市話 0.02美金/分，手機 0.09美金/分，換算台幣大約是 0.6/分 、 2.7/分。其實市話費率與&lt;a href="http://www.cht.com.tw/PersonalCat.php?Module=Fee,Describe&amp;CatID=113&amp;PageID=2030"&gt;中華電信費率&lt;/a&gt;差不多，而&lt;a href="http://www.cht.com.tw/PersonalCat.php?CatID=9&amp;Module=Fee,Describe"&gt;長途電話&lt;/a&gt;方面，有一點優勢，在&lt;a href="http://www.emome.net/cell_phone_plans/monthly_rate_plan/3g_data_plan"&gt;手機費率&lt;/a&gt;方面則有明顯優勢。&lt;br /&gt;&lt;br /&gt;剛剛，我已刷卡儲值 10 美元了。話質感覺不出是網路電話，效果還不錯。&lt;br /&gt;&lt;br /&gt;建議各位使用。&lt;br /&gt;&lt;br /&gt;=== 後記 ===&lt;br /&gt;今天很驚訝地發現， Google Call 的發話地居然是「中國大陸 - 上海」，奇怪它們不是退出中國了嗎? 還是那個只是合作的電信業者。不過從這點看來，臺灣電信公司的通話費率應該是頗高的，竟然從上海打來的電話，還能收得比中華電信網內互打還便宜。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-3511786211134026131?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/3511786211134026131/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/08/google-call-1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3511786211134026131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3511786211134026131'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/08/google-call-1.html' title='Google Call +1'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-5565088782351119545</id><published>2011-08-04T20:59:00.004+08:00</published><updated>2011-08-04T21:40:31.382+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freetds'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><title type='text'>Connect MS SQL Server with python-pymssql</title><content type='html'>Two years ago, i writed a blog: "&lt;a href="http://hoamon.blogspot.com/2008/03/how-to-connect-ms-sql-server-with.html"&gt;How to connect MS SQL Server with Python in the Linux OS?&lt;/a&gt;".  I used freetds + python-sybase in this Howto. Now i have to upgrade the linux server to x86_64 architecture(original in i386), then the old python-sybase package have always been failured.  The newest version released at 2010 DEC,  but i tried all the 39, 38, 36 versions that no one can compile accurately.&lt;br /&gt;&lt;br /&gt;Fortunately, my underclassman talked to me about python-pymssql.  And it has been packaged in the Ubuntu, so i just use the magic command:&lt;br /&gt;&lt;br /&gt;$ sudo apt-get install python-pymssql&lt;br /&gt;&lt;br /&gt;My Linux server takes the power back!!!&lt;br /&gt;&lt;br /&gt;The usage likes python-sybase, below is the example:&lt;br /&gt;&lt;br /&gt;&lt;pre class="vim"&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 1 &lt;/span&gt;&lt;span class="Comment"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 2 &lt;/span&gt;&lt;span class="PreProc"&gt;import&lt;/span&gt; sys, datetime, pymssql&lt;br /&gt;&lt;span class="lnr"&gt; 3 &lt;/span&gt;&lt;span class="PreProc"&gt;from&lt;/span&gt; types &lt;span class="PreProc"&gt;import&lt;/span&gt; IntType&lt;br /&gt;&lt;span class="lnr"&gt; 4 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt; 5 &lt;/span&gt;DB = {&lt;br /&gt;&lt;span class="lnr"&gt; 6 &lt;/span&gt;    &lt;span class="Constant"&gt;'ip'&lt;/span&gt;: &lt;span class="Constant"&gt;'127.0.0.1'&lt;/span&gt;,&lt;br /&gt;&lt;span class="lnr"&gt; 7 &lt;/span&gt;    &lt;span class="Constant"&gt;'port'&lt;/span&gt;: &lt;span class="Constant"&gt;'1433'&lt;/span&gt;,&lt;br /&gt;&lt;span class="lnr"&gt; 8 &lt;/span&gt;    &lt;span class="Constant"&gt;'user'&lt;/span&gt;: &lt;span class="Constant"&gt;'user'&lt;/span&gt;,&lt;br /&gt;&lt;span class="lnr"&gt; 9 &lt;/span&gt;    &lt;span class="Constant"&gt;'password'&lt;/span&gt;: &lt;span class="Constant"&gt;'password'&lt;/span&gt;,&lt;br /&gt;&lt;span class="lnr"&gt;10 &lt;/span&gt;    &lt;span class="Constant"&gt;'database'&lt;/span&gt;: &lt;span class="Constant"&gt;'database'&lt;/span&gt;,&lt;br /&gt;&lt;span class="lnr"&gt;11 &lt;/span&gt;}&lt;br /&gt;&lt;span class="lnr"&gt;12 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;13 &lt;/span&gt;&lt;span class="Statement"&gt;try&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;14 &lt;/span&gt;    Database = pymssql.connect(host=&lt;span class="Constant"&gt;':'&lt;/span&gt;.join([DB[&lt;span class="Constant"&gt;'ip'&lt;/span&gt;], DB[&lt;span class="Constant"&gt;'port'&lt;/span&gt;]]), user=DB[&lt;span class="Constant"&gt;'user'&lt;/span&gt;], password=DB[&lt;span class="Constant"&gt;'password'&lt;/span&gt;], database=DB[&lt;span class="Constant"&gt;'database'&lt;/span&gt;], as_dict=&lt;span class="Identifier"&gt;True&lt;/span&gt;)&lt;br /&gt;&lt;span class="lnr"&gt;15 &lt;/span&gt;&lt;span class="Statement"&gt;except&lt;/span&gt; pymssql.OperationalError, msg:&lt;br /&gt;&lt;span class="lnr"&gt;16 &lt;/span&gt;    &lt;span class="Identifier"&gt;print&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Could not Connection SQL Server&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;17 &lt;/span&gt;    sys.exit()&lt;br /&gt;&lt;span class="lnr"&gt;18 &lt;/span&gt;&lt;span class="Statement"&gt;else&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;19 &lt;/span&gt;    DBCursor = Database.cursor()&lt;br /&gt;&lt;span class="lnr"&gt;20 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;21 &lt;/span&gt;sql = &lt;span class="Constant"&gt;&amp;quot;select * from data_table&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;22 &lt;/span&gt;&lt;span class="Identifier"&gt;print&lt;/span&gt;(&lt;span class="Constant"&gt;'sql: %s'&lt;/span&gt; % sql)&lt;br /&gt;&lt;span class="lnr"&gt;23 &lt;/span&gt;DBCursor.execute(sql)&lt;br /&gt;&lt;span class="lnr"&gt;24 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;25 &lt;/span&gt;&lt;span class="Statement"&gt;while&lt;/span&gt; &lt;span class="Constant"&gt;1&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;26 &lt;/span&gt;    row = DBCursor.fetchone()&lt;br /&gt;&lt;span class="lnr"&gt;27 &lt;/span&gt;    &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Statement"&gt;not&lt;/span&gt; row: &lt;span class="Statement"&gt;break&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;28 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;29 &lt;/span&gt;    &lt;span class="Statement"&gt;for&lt;/span&gt; k, v &lt;span class="Statement"&gt;in&lt;/span&gt; row.items():&lt;br /&gt;&lt;span class="lnr"&gt;30 &lt;/span&gt;        &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Identifier"&gt;type&lt;/span&gt;(k) == IntType: &lt;span class="Statement"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;31 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;32 &lt;/span&gt;        &lt;span class="Statement"&gt;if&lt;/span&gt; k.lower() &lt;span class="Statement"&gt;in&lt;/span&gt; (&lt;span class="Constant"&gt;'some_date_field'&lt;/span&gt;, ):&lt;br /&gt;&lt;span class="lnr"&gt;33 &lt;/span&gt;            &lt;span class="Comment"&gt;# change field type&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;34 &lt;/span&gt;            &lt;span class="Statement"&gt;if&lt;/span&gt; &lt;span class="Identifier"&gt;type&lt;/span&gt;(v) == datetime.date:&lt;br /&gt;&lt;span class="lnr"&gt;35 &lt;/span&gt;                value = v&lt;br /&gt;&lt;span class="lnr"&gt;36 &lt;/span&gt;            &lt;span class="Statement"&gt;else&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;37 &lt;/span&gt;                &lt;span class="Statement"&gt;try&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;38 &lt;/span&gt;                    value = datetime.date(*time.strptime(v, &lt;span class="Constant"&gt;'%Y/%m/%d'&lt;/span&gt;)[:&lt;span class="Constant"&gt;3&lt;/span&gt;])&lt;br /&gt;&lt;span class="lnr"&gt;39 &lt;/span&gt;                &lt;span class="Statement"&gt;except&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;40 &lt;/span&gt;                    value = &lt;span class="Identifier"&gt;None&lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;41 &lt;/span&gt;        &lt;span class="Statement"&gt;else&lt;/span&gt;:&lt;br /&gt;&lt;span class="lnr"&gt;42 &lt;/span&gt;            value = &lt;span class="Identifier"&gt;unicode&lt;/span&gt;(&lt;span class="Identifier"&gt;str&lt;/span&gt;(v), &lt;span class="Constant"&gt;'cp950'&lt;/span&gt;)&lt;br /&gt;&lt;span class="lnr"&gt;43 &lt;/span&gt;&lt;br /&gt;&lt;span class="lnr"&gt;44 &lt;/span&gt;        &lt;span class="Identifier"&gt;print&lt;/span&gt;(&lt;span class="Constant"&gt;'%s =&amp;gt; %s'&lt;/span&gt;%(k, v))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-5565088782351119545?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/5565088782351119545/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/08/connect-ms-sql-server-with-python.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5565088782351119545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5565088782351119545'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/08/connect-ms-sql-server-with-python.html' title='Connect MS SQL Server with python-pymssql'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7435652218062442787</id><published>2011-08-02T13:42:00.011+08:00</published><updated>2011-08-03T22:54:34.271+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>提高最低工資來強迫企業辭退「工作沒有效率」的勞工</title><content type='html'>最近股市漲了不少，物價也漲了不少，公務員薪水也漲了不少，所以&lt;a href="http://news.rti.org.tw/index_newsContent.aspx?nid=308489"&gt;勞工朋友們也希望「最低工資」能調漲不少&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;不過，我想不透的是：「明明最低工資調高，應該是對比較弱勢的勞工(勞工們之間的比較)更加不利」，為什麼勞工團體會想出這種方案?&lt;br /&gt;&lt;br /&gt;事實上，上面的觀念也不是我想出來的，&lt;a href="http://blog.roodo.com/rocksaying/archives/13877019.html"&gt;石頭閒語:淺談基本工資&lt;/a&gt;、&lt;a href="http://blog.pjhuang.net/2011/07/blog-post_20.html"&gt;最低工資爭議與個人芻議&lt;/a&gt;，這兩篇文章有詳細的介紹，就請各位移駕過去瞧瞧。&lt;br /&gt;&lt;br /&gt;雖然石兄在分析模型時，未考慮資本家的利潤，而這部份也是勞工團體所希望的「最低工資差額」來源。不過就「提高基本工資」會「提高失業率」這件事，還是成立的。對老闆而言，當他覺得員工的工作能力不夠格領「最低工資」時，一定是把他們辭退的。屆時，非自願性失業多了，失業率也就高了。&lt;br /&gt;&lt;br /&gt;這「最低工資提高」與「公務員加薪」兩者，一邊是企業被迫降低短期利潤，一邊是政府為增加公務員好感，這立足點是不同的，勞工團體拿兩者來比，實是拿芭樂比香蕉呀!&lt;br /&gt;&lt;br /&gt;不過，在我看了「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010313936"&gt;葛林斯班的騙局&lt;/a&gt;」一書後，有了些修正。&lt;br /&gt;&lt;br /&gt;該書作者拉斐，在討論勞工薪資時，把國家稅收及企業利潤一併考慮，所以得到一個結論，當企業營收大部份歸入企業利潤中，而勞工薪資又被國家稅收剝奪一部份後，那麼勞工就比較沒有錢可以去購買其他公司所生產的商品，這樣其他公司的營收會下滑，間接影響其他公司的勞工薪資，所以當大部份的公司給的是比較少的勞工薪資，其實是傷害了自身的利潤。&lt;br /&gt;&lt;br /&gt;拉斐也舉了過去美國的經濟數據來實證，當最低工資、企業稅率比較高而個人稅率比較低時，經濟成長率比較大。&lt;br /&gt;&lt;br /&gt;所以我相信當全體企業將利潤多分給勞工，雖然營利率會下降，但總利潤值是會提升的。不過，這個結論我認為只適用「美國」，或是說「內需型的國家」。&lt;br /&gt;&lt;br /&gt;在臺灣，企業生產的商品多半是外銷，提高國內勞工的最低工資，並不會讓外國人變得有錢，而多買臺灣出產的商品。所以在我們這種重外銷的國家中，「提高最低工資」的確對「經濟成長率」沒有幫助。不過，我還是贊成「提高最低工資」，誠如標題所言，較高的最低工資能間接迫使「工作效率不足(人力資本少)」的勞工沒有工作。&lt;br /&gt;&lt;br /&gt;為什麼我這麼不喜歡「工作效率不足(&lt;a href="http://hoamon.blogspot.com/2010/12/blog-post_29.html"&gt;人力資本&lt;/a&gt;少)」的勞工呢? 多一個人有工作，可以養活自己，有什麼不好? 我認為這些「工作效率不足(人力資本少)」的勞工對地球是不好的。因為作一樣的事，他們花的電費比較多，廢料率會比較高，出錯率也比較高，這些在在地浪費了地球的資源。所以該讓他們沒有工作。爾後，政府再透過社會教育來提升他們的工作效率。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7435652218062442787?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7435652218062442787/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/08/blog-post.html#comment-form' title='12 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7435652218062442787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7435652218062442787'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/08/blog-post.html' title='提高最低工資來強迫企業辭退「工作沒有效率」的勞工'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8037706985259820599</id><published>2011-07-31T16:01:00.002+08:00</published><updated>2011-08-02T14:44:36.652+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>社會問題根源於家庭、顯現於學校、惡化於社會</title><content type='html'>標題引自張春興教授在 1991 所著之「現代心理學」。&lt;a href="http://zh.wikipedia.org/wiki/%E7%A4%BE%E6%9C%83%E5%95%8F%E9%A1%8C"&gt;社會問題&lt;/a&gt;範圍廣大，包含有：「失業率」、「貧富差距」、「暴力」、「毒品」、「犯罪」…等問題。&lt;br /&gt;&lt;br /&gt;而社會問題，我們都可以歸究於「教育」沒作好。誠如標題所言，教育有三環： 家庭教育、學校教育及社會教育。究竟我們該期待什麼樣的教育，才能讓社會更好呢?&lt;br /&gt;&lt;br /&gt;昨天看了「&lt;a href="http://www.waitingforsuperman.com/"&gt;等待超人( waiting for Superman )&lt;/a&gt;」的紀錄片，片中聚焦於美國的公立學校教育問題，他們希望用好老師來塑造好學校，產生好學生。觀看當時，感覺或許美國公立學校有這樣的問題，但該片是談教育的，卻極少提及家庭、社會兩種層面，一味地猛攻「教師終生聘用制培養爛老師」的論點，不禁有「該片是 &lt;a href="http://www.kipp.org/"&gt;KIPP&lt;/a&gt; 宣導片」的想法。&lt;br /&gt;&lt;br /&gt;果然，今天查了一下相關資訊，得到一篇新聞：「&lt;a href="http://www.usatoday.com/news/education/2011-06-20-Wayne-Ryan-Noyes-Education-Campus-test-scores-Washington_n.htm"&gt;D.C. school official tied to test scores flap resigns&lt;/a&gt;」，一位特許學校的校長面臨「學生成績作弊」的指控，已提出辭呈。所以透過「浮動薪資」來提升學生學習成效變得不是那麼正相關。&lt;br /&gt;&lt;br /&gt;以「錢」為誘因來鏈結學生成績，讓「學生成績進步」的結果，反應到教師薪資上，雖然附帶了「另一種的效果」。但我相信，為「錢」而作弊的老師是個案，就像在「教師終身聘用制」下，會產生「不會教學但能保有一份工作」的老師，也一樣是個案。&lt;br /&gt;&lt;br /&gt;為錢而作弊的老師，也不是在特許學校政策產生下才有的事，從「蘋果橘子經濟學」的第一章：「小學老師與相撲選手有何共通點?」中，就知道芝加哥、加州的公立學校過去也發生這一類的事件。&lt;br /&gt;&lt;br /&gt;為討論方便，接下來的學校教育只涉及中小學義務教育。&lt;br /&gt;&lt;br /&gt;而我針對教師薪資的看法，則是傾向目前的「固定制」，因為在義務教育中，每個學生繳交的學費都是一樣的，讓教師薪資有所不同時，那他所收受的學生該繳不同等級的學費嗎? 這一點，很難突破觀念吧! 因為教師有教學等級的不同，勢必讓家長、學生有了差別心，那每個人都想選薪資高的老師時，又該如何分配?&lt;br /&gt;&lt;br /&gt;義務教育就是得一視同仁，要享有差別的教育品質，請選擇私立學校。&lt;br /&gt;&lt;br /&gt;義務教育的目的不在於培養高級知識份子，它只要求學生具備一定的生活知能即可。在這個目標下，只要教師能達成「讓學生具備一定的生活知能」，就能持續獲得工作。&lt;br /&gt;&lt;br /&gt;事實上，我個人並不認為學校教育的問題很大，的確好學校、好老師對學生影響不小，但教育三環中，家庭與社會也很重要呀!&lt;br /&gt;&lt;br /&gt;那些進 KIPP 學校的學生表現有所提升，有部份的原因就是家庭期待較高，既然家庭期待高，也就推動他們自我學習的動機，而「主動學習」是教育成功的第一要點。&lt;br /&gt;&lt;br /&gt;我對父母將子女的學習成就建立在好學校、好老師身上，十分不以為然。從這次北北基二次分發事件，就可以知道大家十分在乎唸的是什麼學校。但好學校、好老師就能創造你的好人生嗎? 這麼說吧! 如果你的人生過得糟透了，你是該怪自己還是老師? 又如果你的人生過得美極了，你會感謝老師還是自己?&lt;br /&gt;&lt;br /&gt;時常聽到有人抱怨企業或社會要的東西，學校老師卻不教。但說實在話，要當一個水果賣場服務生，遲早總會遇到客戶推了一車商品來結帳，如果老師上課只教過 3 顆 50 元的蘋果加上 12 顆 10 元等於 270 元的題目，那他的結帳金額會一直都是 270 元嗎? 這不可能吧! 所以當我聽到這種抱怨時，會直接認定抱怨的人是個笨蛋。&lt;br /&gt;&lt;br /&gt;「如何閱讀一本書」中提到「閱讀越主動，效果越好」，而我喜歡把它改成「學習越主動，效果越好」，也因此你可以認定「學校老師」教得不好(未達到你的高標，但理論上都是符合大家的均標)，教得不對，而選擇「自己學習」。這時，你有學校圖書館或社區圖書館能使用，可以參與知識性社團與別人互動。而不是坐而等待老師變好，我個人覺得只要是從師專、師院、師大、師資班畢業的老師，其教學能力不會連國中生都教不好，會教不好，通常是因為我們要音樂老師去教數學、國文老師去教自然或是美術老師去教英文所造成的。&lt;br /&gt;&lt;br /&gt;主動學習除了可以是天生造成的，後天的話則需透過「家庭教育」、「學校教育」及「社會教育」來培養。父母有沒有讓孩子體會「主動學習」是件有意義的事，學校有沒有讓孩子發現「主動學習」的效果，&lt;a href="http://www.youtube.com/watch?v=xj9Wt9G--JY"&gt;社會有沒有讓孩子了解「主動學習」的必要&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;就家庭教育來說，「蘋果橘子經濟學」一書有提到什麼樣的父母對小孩的學習成就有影響：&lt;br /&gt;&lt;br /&gt;1. 父母教育程度高(正相關)&lt;br /&gt;2. 父母社經地位高(正相關)&lt;br /&gt;3. 母親生第一胎時三十歲以上(正相關)&lt;br /&gt;4. 小孩出生時體重偏低(負相關)&lt;br /&gt;5. 父母在家中說英語(正相關)&lt;br /&gt;6. 小孩為領養(負相關)&lt;br /&gt;7. 父母與學校家長會(正相關)&lt;br /&gt;8. 家裡有很多書(正相關)&lt;br /&gt;&lt;br /&gt;其中， 1、2、3、7、8 多半與學習有關，像是父母自己的學習程度、因為受高等教育導致生育年齡高、關心學童的學習情形及願意投資在學習(買書)上面。&lt;br /&gt;&lt;br /&gt;所以如果父母本身能表現出他對學習的看重及確實實踐學習，那麼小孩的學習成就高是可預見的。&lt;br /&gt;&lt;br /&gt;從&lt;a href="http://hoamon.blogspot.com/2009/07/blog-post_19.html"&gt;我家的書櫃&lt;/a&gt;中，可看到我書不少，那個是 2009 的相片，現在應該又多了 30 ~ 40 本吧! 不過，我爸的書櫃可是我的 2~3 倍，那還是十幾年前的事。從小就常看他在看書，也很喜歡跟我講法律的話題，有次還得意洋洋跟我分享附近街道上多了紅綠燈是因為他寫公文給公所建議的。他總是跟我說：「法律是給懂的人用的」。&lt;br /&gt;&lt;br /&gt;如果真心期待小孩的學習成就高，也請把自己的學習能力拿出來吧! 不要口頭上，一直叫小孩讀書、讀書，自己卻不翻書來看。&lt;br /&gt;&lt;br /&gt;然而上面所說的方式卻無法協助弱勢族群脫貧，大部份是因為他們的父母教育程度低、社經地位低，也可能讀不太懂書，或是工時長無法花費心力在學習上。&lt;br /&gt;&lt;br /&gt;這時社會教育就該出現了，一個人無法在有工作，能養活自己的情況下，還另外保有空閒時間來學習，這代表他的工作效率(或是&lt;a href="http://hoamon.blogspot.com/2010/12/blog-post_29.html"&gt;人力資本&lt;/a&gt;)太低了，政府應該禁止這種人工作(也就是透過&lt;a href="http://hoamon.blogspot.com/2011/08/blog-post.html"&gt;「提高基本工資」來強迫他們被辭退&lt;/a&gt;)，並強迫他去上有薪給之訓練課程，提升他的人力資本。提高人力資本後，除了可養活自己外，還能有時間自我進修，這才真正有機會脫貧，也能給孩子建立主動學習的榜樣。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8037706985259820599?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8037706985259820599/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/07/blog-post.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8037706985259820599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8037706985259820599'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/07/blog-post.html' title='社會問題根源於家庭、顯現於學校、惡化於社會'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7555027113856061817</id><published>2011-06-11T14:33:00.005+08:00</published><updated>2011-06-11T20:52:57.241+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='amd64'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='x86_64'/><title type='text'>Install Python2.5 on Ubuntu 11.04 x86_64 for Google App Engine</title><content type='html'>之前所提的「&lt;a href="http://hoamon.blogspot.com/2010/05/install-python25-on-ubuntu-1004-for.html"&gt;Install Python2.5 on Ubuntu 10.04 i386 for Google App Engine&lt;/a&gt;」，主要是在 i386 Ubuntu 的安裝方式。我這一次換了電腦，也裝了 Ubuntu 11.04 amd64 的版本，所以安裝方式有些許不同：&lt;br /&gt;&lt;br /&gt; 1. 系統內建的 sqlite 函式庫無法連結。&lt;br /&gt; 2. 某些 .so 檔不再放在 /usr/lib ，而是在 /usr/lib32, /usr/lib64, /usr/lib/x86_64-linux-gnu 等地。&lt;br /&gt;&lt;br /&gt;另外在安裝 python2.5 時，也想順便套上 readline 及 ipython 。以下是安裝過程：&lt;br /&gt;&lt;br /&gt;先裝上 Ubuntu 內建的函式庫：&lt;br /&gt;&lt;br /&gt;$ apt-get install liblcms1-dev zlib1g-dev libfreetype6-dev libjpeg62-dev libsqlite3-dev libssl-dev tk-dev libreadline-dev&lt;br /&gt;&lt;br /&gt;安裝 sqlite3：&lt;br /&gt;&lt;br /&gt;$ cd sqlite-autoconf-3070603/&lt;br /&gt;$ ./configure --prefix=/usr/local/sqlite3 --enable-readline --enable-threadsafe --enable-dynamic-extensions&lt;br /&gt;$ make &amp;&amp; sudo make install&lt;br /&gt;&lt;br /&gt;安裝 Python2.5.6：&lt;br /&gt;&lt;br /&gt;$ cd Python2.5.6/&lt;br /&gt;$ ./configure --prefix=/usr/local/python25 --with-zlib -with-zlib-library=/usr/lib/x86_64-linux-gnu --with-zlib-include=/usr/include --with-tk --with-tk-library=/usr/lib32 --with-tk-include=/usr/include --with-tcl --with-tcl-library=/usr/lib32 --with-tcl-include=/usr/include --libdir=/usr/local/sqlite3/lib --includedir=/usr/local/sqlite3/include --with-freetype2 --with-jpeg --with-readline&lt;br /&gt;$ make &amp;&amp; sudo make install&lt;br /&gt;&lt;br /&gt;安裝 ipython&lt;br /&gt;&lt;br /&gt;$ cd ipython/&lt;br /&gt;$ sudo /usr/local/python25/bin/python2.5 setup.py install&lt;br /&gt;&lt;br /&gt;安裝 GAE 相依模組 ipaddr：&lt;br /&gt;&lt;br /&gt;$ cd ipaddr-2.1.1/&lt;br /&gt;$ sudo /usr/local/python25/bin/python2.5 setup.py install&lt;br /&gt;&lt;br /&gt;安裝 GAE 相依模組 python-ssl：&lt;br /&gt;&lt;br /&gt;$ cd python-ssl-1.15/&lt;br /&gt;$ cp -rf ../Python2.5.6/Include/* /usr/local/python25/include/ # 需要 Python 源碼&lt;br /&gt;$ sudo /usr/local/python25/bin/python2.5 setup.py install&lt;br /&gt;&lt;br /&gt;安裝 PIL：&lt;br /&gt;&lt;br /&gt;修改 Imaging-1.1.7/setup.py 中的參數如下：&lt;br /&gt;&lt;br /&gt;TCL_ROOT = '/usr/lib32'&lt;br /&gt;JPEG_ROOT = '/usr/lib32'&lt;br /&gt;ZLIB_ROOT = '/usr/lib/x86_64-linux-gnu/'&lt;br /&gt;TIFF_ROOT = '/usr/lib32'&lt;br /&gt;FREETYPE_ROOT = '/usr/lib32'&lt;br /&gt;LCMS_ROOT = '/usr/lib32'&lt;br /&gt;&lt;br /&gt;檢查模組是否可使用&lt;br /&gt;&lt;br /&gt;$ /usr/local/bin/python2.5 setup.py build_ext -i&lt;br /&gt;&lt;br /&gt;測試模組&lt;br /&gt;&lt;br /&gt;$ /usr/local/bin/python2.5 selftest.py&lt;br /&gt;&lt;br /&gt;看到如下訊息，就代表模組皆有支援&lt;br /&gt;&lt;br /&gt;　--- PIL CORE support ok&lt;br /&gt;　--- TKINTER support ok&lt;br /&gt;　--- JPEG support not installed&lt;br /&gt;　--- ZLIB (PNG/ZIP) support not installed&lt;br /&gt;　--- FREETYPE2 support ok&lt;br /&gt;　--- LITTLECMS support ok&lt;br /&gt;&lt;br /&gt;再執行&lt;br /&gt;&lt;br /&gt;$ sudo /usr/local/python25/bin/python2.5 setup.py install&lt;br /&gt;&lt;br /&gt;最後，再把 dev_appserver.py, appcfg.py 中的 #!/usr/bin/env python 改成 #!/usr/bin/env python2.5 即可(也不是必須的，只要你知道執行 GAE server 時是用 python2.5 就夠了)。&lt;br /&gt;&lt;br /&gt;完成後就可以在 Ubuntu 11.04+ x86_64 中開發 GAE 程式了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7555027113856061817?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7555027113856061817/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/06/install-python25-on-ubuntu-1104-x8664.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7555027113856061817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7555027113856061817'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/06/install-python25-on-ubuntu-1104-x8664.html' title='Install Python2.5 on Ubuntu 11.04 x86_64 for Google App Engine'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8440023578678763783</id><published>2011-06-10T13:22:00.002+08:00</published><updated>2011-10-02T11:20:06.498+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>「股票隨便買然後長抱」是會賺錢? 就跟擲銅板的玩法一樣!</title><content type='html'>&lt;div&gt;學弟一直不相信我說的：「現在有閒錢(也就是說別拿學費來買)，就是買股票，買什麼? &lt;a href="http://tw.stock.yahoo.com/q/bc?s=0050"&gt;0050&lt;/a&gt; !  因為他們現在只能存小錢，所以現在買 &lt;a href="http://tw.stock.yahoo.com/q/bc?s=0050"&gt;0050&lt;/a&gt; 的零股就夠了。等到湊成 20 萬以上，再來股票市場中隨便買(註1)，好公司也買，爛公司也買，類別愈多，家數愈多，這人生的金融投資策略也就夠了。」&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;學弟為什麼不相信呢? 我想是這個方法太簡單了，不用分析公司基本面，不用知道它們是幹什麼的，不看技術線型，這對我們『愛研究』的研究生來說，太沒挑戰性了，而且這樣買股票都能賺錢，實在太沒天理了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但是我在唸大學時，可是廢寢忘食地研究公司基本面，研究技術線型，搞到後來，自己覺得都可以去考證券/期貨營業員執照了，結果&lt;a href="http://hoamon.blogspot.com/2007/12/blog-post.html"&gt;還是把錢賠光光&lt;/a&gt;，這難道有天理嗎?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因為賠過錢，所以才能深刻地體會：「股票市場不一定是用心用力玩的。」&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;「股票市場那該怎麼玩呢?」&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;就當擲硬幣一樣玩就行了，什麼!!! 用賭博的方式來玩股票，這不是富貴險中求嗎? 當然不是囉!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這「擲硬幣」有趣的地方在於它完完全全只是數學而已。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;試想一個公正銅板，正面出現的機率是 50% ，反面出現的機率是 50%，猜對給賭金 1 倍的獎金，猜錯則失去賭金。在這種賭博中，如果讓你賭個 1 萬次，你覺得會賺多少?  我會說：「別找我作這檔事，這只是浪費時間而已。」因為在這個公平賭博中，期望值等於本金，所以在理想情況下，玩了 1 萬次，手頭上的錢還是一樣多。計算方式如下：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(2 * 50% + 0 * 50%) / 100% = 1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但如果它不是公正銅板呢! 而是正面出現的機率是 51% ，反面出現的機率是 49%，賠率不變，則期望值會變成  (2 * 51% + 0 * 49%) / 100% = 1.02  。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這賭博我是鐵賭的，而且只賭正面，還會跟莊家玩到天荒地老，玩到他沒錢賠我為止。在這種賭博之中，如果我跟莊家玩 1 萬次，而且每次壓 1 元的話(幹麼那麼客氣，有這種笨莊家，當然是壓上我全部身家)，理論上我總共會賺 200 元。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;那如果遊戲改成正面出現的機率是 60% ，而猜對賠率是 1.1 ，猜錯還是 0 ，那該玩嗎? 這時的期望值是&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(1.1 * 60% + 0 * 40%) / 100% = 0.66&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如果是我的話，我選擇當莊家，找你們來當賭客。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所以說，要不要賭博，完全只看期望值有沒有大於 1 就行了。沒大於 1 的賭博那是給笨蛋玩的(好像在說我自己，因為我會買樂透)。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;換成股市的環境，如果你知道明天開盤上漲的機率是 90% ，下跌是 10% ，你會不會今天買股票呢???&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;希望你回答我：「不知道耶~」&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如果你想回答我：「當然會，而且還要壓下全部家當。」那就糟了。因為我沒跟你講上漲幾點、下跌幾點呀!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因為明天上漲 2% 的機率若是 90% ，下跌 50% 的機率是 10% ，則期望值是&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2 * 0.9 - 50 * 0.1 = - 3.2(%)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這種股票還是不要買比較好。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;講到這裡，你們一定還沒清楚為什麼要長抱股票呢? 因為沒有人能算得出來明天上漲幾 % 的機率值，我講了這麼一大片，那還不是廢話。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;是呀! 我算不出明天的機率值，但我可以回顧過去的歷史。以台灣加權股價報酬指數(&lt;a href="http://hoamon.blogspot.com/2009/12/2009-3-1-50000-2009-4-1-55000-2009-5-1.html"&gt;為什麼不是以加權指數計算&lt;/a&gt;)來看， 2003 年 1 月 1 日是 4524.92 點，到 2011 年 3 年 16 日是 11067.18 點，中間過了 98.5 個月。它總共上漲了 2.445828 倍，也就是每個月它平均上漲了 1.00912139 倍。以 1 個月視為一次「擲硬幣」賭博的話，它的期望值是大於 1 的，事實上，這期望值就是它的平均月報酬率，而它的平均年化報酬率是 1.00912139^12 = 1.1151 ，也就是 1 年有 11.51% 的報酬率，這已經幹掉一堆基金經理人的績效了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也就是說，在股市遊戲中，雖然我們不知道每次賭博的賠率及機率，但可以從結果直接觀察得之。假設我在 2003 年 1 月 1 日時，以市值權重買進全市場股票，那麼到了 2011 年 3 年 16 日時，整個投資組合 有 2.4458 倍，這也相當讓我玩了 98.5 次的「不公正銅板」遊戲，而每次的期望值是 1.00912139 。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;好啦! 你會說，我舉的歷史數據不過區區 8 年多一點，這有什麼好代表整個台灣股市歷史呢!  各位可以看看美國股市從 70 年代到現在的&lt;a href="http://www.google.com//finance?chdnp=1&amp;amp;chdd=1&amp;amp;chds=1&amp;amp;chdv=1&amp;amp;chvs=maximized&amp;amp;chdeh=0&amp;amp;chfdeh=0&amp;amp;chdet=1300305600000&amp;amp;chddm=4053888&amp;amp;chls=IntervalBasedLine&amp;amp;q=INDEXDJX:.DJI&amp;amp;ntsp=0"&gt;線圖&lt;/a&gt;，可以知道長期趨勢就是走升的，而且這還是有減去配息的指數，如果還原現金配息，它的走勢還會更陡。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;台灣股市的線圖也差不多是這樣的，我在埔里元富有看過一張從 70 年代開始統計到現在的趨勢圖，它的縱座標還是 log 化的，要不然無法容下 100 點到 12000 點的數據。可惜網路上找不到這張圖。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所以說，從歷史角度來看，股市的期望值是大於 1 的(註2)。既然股市是個不公正的正面(多頭)銅板，你捨得不玩這遊戲嗎? 又或者說，在擲銅板的過程中，若連續出現 1000 次的反面，你會鬆手嗎? 鬆手了，那你將錯失後面那 10&lt;span class="Apple-style-span"&gt;4&lt;/span&gt;0 次的正面(以 51/49 的機率分佈來看)。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;註1： 其實也沒那麼隨便，最少要比較一下公司的現金配息及股價歷史，也就是現金殖利率，愈大者要早點買、且買多一點。&lt;/div&gt;&lt;div&gt;註2： 但要平均年報酬率是大於一年期平均定存利率的才值得玩，不然直接放銀行定存會更划算。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8440023578678763783?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8440023578678763783/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/03/blog-post_8878.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8440023578678763783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8440023578678763783'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/03/blog-post_8878.html' title='「股票隨便買然後長抱」是會賺錢? 就跟擲銅板的玩法一樣!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-1303067571360372731</id><published>2011-04-27T19:48:00.013+08:00</published><updated>2011-04-27T21:05:39.483+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='bullshit'/><title type='text'>當我在某人的 Blogger 上留言時，"居然"被 Google 機器人刪除(誤)</title><content type='html'>話說，某日逛某個投資部落格時，針對格主文章發表了一篇留言，結果事後發現不見了。本來我以為是自己在預覽後並沒有真的張貼留言，所以很辛苦地再打一次，不過這次有先打在自己的編輯器中，完成後再複製貼過去的。剛開始時，一切正常，留的言是我寫的，出現的文章也沒錯，重整幾次該篇部落格，我的留言也都有正常出現，如下圖：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-sRqcxvI-7gI/TbgORLj2stI/AAAAAAAAC7M/Ve1KP71K2S4/s1600/2330.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 198px; height: 400px;" src="http://1.bp.blogspot.com/-sRqcxvI-7gI/TbgORLj2stI/AAAAAAAAC7M/Ve1KP71K2S4/s400/2330.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5600241824958952146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;但再過幾分鐘後，我的留言"不見了"。後來我再發一次(好險，是從編輯器貼過來的，少打一次)。也確定有成功，而且我還可以刪除它，如下圖：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-fcojLgBKM2g/TbgOM5SyeqI/AAAAAAAAC7E/gz5cOvMd0sQ/s1600/2330-comment.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 396px;" src="http://4.bp.blogspot.com/-fcojLgBKM2g/TbgOM5SyeqI/AAAAAAAAC7E/gz5cOvMd0sQ/s400/2330-comment.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5600241751336057506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;但後來再過一段時間，它又不見了。所以我嘗試「不要預覽直接張貼」、「內文包含 href 屬性的連結」及「言不及義」的留言，發現它們都完好如初地躺在那個部落格裡，就像下圖：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-eHljg1Cr7dk/TbgOILofPrI/AAAAAAAAC68/AxJD6dtOkFc/s1600/2330-comment2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 212px; height: 400px;" src="http://2.bp.blogspot.com/-eHljg1Cr7dk/TbgOILofPrI/AAAAAAAAC68/AxJD6dtOkFc/s400/2330-comment2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5600241670359563954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;我想我發現了 Google 的大秘密：「&lt;span style="font-weight:bold;"&gt;不准留言與格主相左，否則一律刪除!&lt;/span&gt;」&lt;br /&gt;&lt;br /&gt;那到底，我留的是什麼言呢? 居然讓 Google 機器人找上我，給刪除了。欲知詳情，請看本文留言。&lt;br /&gt;&lt;br /&gt;==== 後記 ====&lt;br /&gt;後來，我又到該部落格去留下一個連回本篇文章的留言，果不期然， Google 機器人又刪了。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-MyMyGxYw-8c/TbgUbVmq0oI/AAAAAAAAC7c/duiUEyVpeNA/s1600/2330-comment3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 358px; height: 400px;" src="http://2.bp.blogspot.com/-MyMyGxYw-8c/TbgUbVmq0oI/AAAAAAAAC7c/duiUEyVpeNA/s400/2330-comment3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5600248596523569794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;我真是無聊透頂了，居然找 Google 機器人的 bug 。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-1303067571360372731?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/1303067571360372731/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/blogger-google.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1303067571360372731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1303067571360372731'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/blogger-google.html' title='當我在某人的 Blogger 上留言時，&quot;居然&quot;被 Google 機器人刪除(誤)'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-sRqcxvI-7gI/TbgORLj2stI/AAAAAAAAC7M/Ve1KP71K2S4/s72-c/2330.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-3584313015827059274</id><published>2011-04-23T19:59:00.005+08:00</published><updated>2011-04-25T12:22:53.355+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>使用「公認機構簽核公錀」所發生的不知名問題</title><content type='html'>在 &lt;a href="http://hoamon.blogspot.com/2011/04/how-to-get-free-https-web-certification.html"&gt;How to get a free HTTPS web certification authority by StartSSL.com&lt;/a&gt; 一文中，我申請了 A.hoamon.info 的公錀簽核，也正確地跑在 https 上，在使用瀏覽器觀看時，完全沒有問題。然而在 hg 軟體上，卻會發生 SSL: Server certificate verify failed. 的錯誤訊息，從 &lt;a href="http://notes.benv.junerules.com/all/software/mercurial-on-windows-vs-linux-spot-the-problem/"&gt;Mercurial on Windows vs Linux, spot the problem&lt;/a&gt; 一文中，作者解釋是 Windows 的 ssl 版本太舊的原因，但照他的解決方案處理，我的 hg 軟體卻是報 URLError. 錯誤。&lt;br /&gt;&lt;br /&gt;後來在檢查 apache.conf 時發現，這台機器有三個 https 站台，一個是用 A.hoamn.info 的公錀，另外兩個 B, C 站台卻都是用 whatever.hoamon.info 的公錀。而 B, C 站台的設定檔寫得比 A.hoamon.info 站台還前面。所以試著調動 A.hoamon.info 到 B, C 站台設定的前面，結果 hg 軟體就正常了。&lt;br /&gt;&lt;br /&gt;問題是解決了，但我反而混亂了。印象中， https 協定中，公錀是在 IP 層(或表現層，我不確定)就發送至使用者的瀏覽器，既然沒到應用層，則網頁伺服器就不知道該拿那一個虛擬站台的公錀給使用者，於是它總是拿第一個看到的公錀(也就是寫在最前面的)，所以這篇&lt;a href="http://www.study-area.org/tips/certs/certs.html#apache"&gt;教學文章&lt;/a&gt;，才會寫到：「…一個 Apache ，也只能架一個 SSL 站，用一個站名。除非妳跑很多份 Apache ，各自跑在不 同的 IP 或不同的 TCP 埠上，才能在同一臺伺服 器上，跑好幾個 SSL 站。」&lt;br /&gt;&lt;br /&gt;實際上，在 Windows XP 的 IE, Safari 上觀看 A, B, C 三個站台，也的確都是拿到 A.hoamon.info 的公錀。但在 Chrome, Firefox 上，卻是看到 A 用 A.hoamon.info ，但 B, C 用的是 whatever.hoamon.info 的公錀。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這我頭大了，為什麼跟基本原理不一樣??? 還是因為某些瀏覽器有「重拿公錀的機制」存在???&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-3584313015827059274?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/3584313015827059274/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/blog-post.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3584313015827059274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3584313015827059274'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/blog-post.html' title='使用「公認機構簽核公錀」所發生的不知名問題'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-2386225367651420202</id><published>2011-04-23T16:11:00.004+08:00</published><updated>2011-04-23T16:21:36.319+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jog'/><title type='text'>破了我個人的紀錄： 以 59 分 58 秒完成 10 公里路跑</title><content type='html'>今天(2011-04-23)，第一次在 60 分鐘內跑完了 10 公里。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最大的不同在於使用小跨步的跑法，雖然步頻要加快，心跳數也比大跨步高(* 1)。不過，對肌肉而言比較輕鬆，所以在尾段時，還能用更快速度前進。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;註1 使用 &lt;a href="https://ecvip.pchome.com.tw/?0xc3164884dcc88025a8ef93b2703d78dccc2f84d54919d62004e4247b2d9f0f63254e8eb03eeea92480c11ad564783e8709577736d00d4b1d9093e34931da4af5eaa556873e30266d112b95a0acb61d3d1efd6181707ffd99"&gt;ALATECH 的心率計&lt;/a&gt;觀察每分鐘心跳數。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="https://picasaweb.google.com/lh/photo/GYD6XupjFS9vPIy7a8Vh9A?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/_eKM9lHjTZjs/TLrtIAOmZLI/AAAAAAAACqg/XsNNQ-RpSmo/s400/PPP1000953.JPG" height="300" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="https://picasaweb.google.com/hoamon/TaitungTriathlon?feat=embedwebsite"&gt;Taitung Triathlon&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-2386225367651420202?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/2386225367651420202/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/59-58-10.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2386225367651420202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2386225367651420202'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/59-58-10.html' title='破了我個人的紀錄： 以 59 分 58 秒完成 10 公里路跑'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/_eKM9lHjTZjs/TLrtIAOmZLI/AAAAAAAACqg/XsNNQ-RpSmo/s72-c/PPP1000953.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4733402711325261101</id><published>2011-04-17T11:07:00.014+08:00</published><updated>2011-04-17T21:39:58.473+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='https'/><category scheme='http://www.blogger.com/atom/ns#' term='openssl'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>How to get a free HTTPS web certification authority by StartSSL.com</title><content type='html'>&lt;div&gt;一般在上網時，所用的 Http 協定是明碼的，使用者與網站伺服器之間的任何網路結點(閘道器)都有方法可以看到網路連線所傳遞的訊息，所以如果網站所提供的服務關係到機密(隱私)資料時，我都會讓網站用 Https 加密協定服務。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;使用 Https 服務時，有一個重要觀念： 如何拒絕「中間人攻擊」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;假想一個以 Https 加密協定服務的 A 網站，在它與使用者傳遞公錀(加密憑證)時，是被一個中間人接走，而中間人再把它自己的公錀傳遞給使用者，結果使用者傻傻地使用中間人的公錀加密，再把加密資訊傳到中間人，而中間人用自己的私錀解密後，再用 A 網站公錀加密傳回 A 網站，在這個模式，雖然使用的是 Https 協定，但資料還是被中間人看光光了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所以要防止此類攻擊，就必須讓使用者能「確認」公錀真的是 A 網站的。方法是使用者自己手頭上要有一些公認機構所發行的公錀憑證(一般的瀏覽器都已經包入)，然後在拿到 A 網站的公錀憑證時，用手頭上已有的公認機構公錀憑證去驗證這個 A 網站的公錀憑證是否被這些公認機構簽核過，如果有，則表示公錀的確就是 A 網站的，當使用者用這把公錀加密時，就只能被 A 網站解密。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;本篇文章的目的是站在  A 網站的立場上，如何將 A 網站的公錀交給公認機構作簽核，這樣使用者在瀏覽 A 網站時，才不會跳出一個警示視窗告知使用者：「 A 網站有安全疑慮」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;一般將公錀交給公認機構去作簽核是要花錢的，像是國內最大的簽證公司(我猜的)網際威信最便宜的簽核年費是 &lt;a href="http://www.verisign.com.tw/ssl/buy-ssl-certificates/compare-ssl-certificates/"&gt;18000&lt;/a&gt; 元。這筆費用不是每個人願意負擔的，像是我的 https 網站，主要是提供我們團隊作專案管理之用，也就不到 10 位的使用者，要我花 18000 元，去買一個「讓使用者在一年之內不會看到該網站有安全疑慮」的警告訊息，這我可花不下手。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所幸，有&lt;a href="http://www.startssl.com/"&gt;公認機構&lt;/a&gt;了解這種需求，它以「一年免費」作廣告宣傳，如果有更高級的簽核需求，它才額外收費。那麼以我上述所要的，其實就拿那個「一年免費」用用即可。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;首先請使用 Firefox (它們目前不支援 Chrome)去瀏覽 &lt;a href="http://www.startssl.com/"&gt;http://www.startssl.com/&lt;/a&gt; ，並點選右上角的錀匙圖示，如下圖：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-8ZEiBUkbyCU/Tapjb99h8DI/AAAAAAAAC50/8yR1XD1BO9A/s1600/auth.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-8ZEiBUkbyCU/Tapjb99h8DI/AAAAAAAAC50/8yR1XD1BO9A/s400/auth.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596394819101519922" style="cursor: pointer; width: 48px; height: 48px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;就能看到 Sign-up 按鈕，如下圖：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-rknUblr0uGk/TapaNmBQrRI/AAAAAAAAC5s/jf8hssa1FgU/s1600/ssl-01.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 185px;" src="http://3.bp.blogspot.com/-rknUblr0uGk/TapaNmBQrRI/AAAAAAAAC5s/jf8hssa1FgU/s400/ssl-01.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384676551896338" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;按下 Sign-up 按鈕就開始註冊帳戶的流程，整個公錀簽核的程序分成三個階段：&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;註冊帳戶&lt;/li&gt;&lt;li&gt;驗證網址&lt;/li&gt;&lt;li&gt;公錀簽核&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;1. 註冊帳戶時， startssl 會給你的瀏覽器一個全新的公私錀檔，這個公私錀檔是專供你的帳戶使用的，這個公私錀檔要好好保管，搞丟了，你就不能再用這個帳戶申請簽核的動作，因為它的登入不是用帳號密碼作登入機制，而是用公私錀作登入機制。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. 驗證網址，你必須證明要作簽核的網址是你所管理的。而這個驗證動作完成後，你也只有 30 天的期限去作簽核它的公錀，過期後，就必須再次驗證網址。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. 針對已驗證過的網址，你可以申請簽核公錀的動作，主要分兩種作法，一是 startssl 完全生出一把全新的公私錀憑證; 二是我們自己生出私錀及公錀請求檔，再把公錀請求檔交給 startssl 去作出已簽核的公錀。本文是介紹第二種方法，因為私錀應該是自己處理會比較妥當，不要懶惰到連解密錀匙也委託他人製造，我個人認為這種人不只懶還不負責任。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-rknUblr0uGk/TapaNmBQrRI/AAAAAAAAC5s/jf8hssa1FgU/s1600/ssl-01.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;原則上，公錀不過是一個文字檔，所以它在 Linux, Window$, Mac 作業系統下，都能處理，但&lt;a href="http://hoamon.blogspot.com/2009/02/windows-https.html"&gt;我個人還是喜歡用 Linux 來作這件事&lt;/a&gt;。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. 註冊帳戶：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-qPOnO5vrR2I/TapaKiZrhjI/AAAAAAAAC5k/Pe5Qw-GOKjA/s1600/ssl-02.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 207px;" src="http://2.bp.blogspot.com/-qPOnO5vrR2I/TapaKiZrhjI/AAAAAAAAC5k/Pe5Qw-GOKjA/s400/ssl-02.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384624040969778" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;請填寫你的詳細資料，原則上，他們只採 web 審核，所以只要你的資料不要「太假」，他們都會通過。&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-qPOnO5vrR2I/TapaKiZrhjI/AAAAAAAAC5k/Pe5Qw-GOKjA/s1600/ssl-02.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-2LfHWJqREqY/TapaKkdiryI/AAAAAAAAC5c/ssoEhAi4WTE/s1600/ssl-03.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 113px;" src="http://1.bp.blogspot.com/-2LfHWJqREqY/TapaKkdiryI/AAAAAAAAC5c/ssoEhAi4WTE/s400/ssl-03.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384624594038562" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;請到註冊信箱接受具驗證碼的信。並&lt;span class="Apple-style-span"&gt;注意「目前的這個視窗」是不允許關閉的&lt;/span&gt;，如果你關閉當下這個網頁，再用相同連結回來，這樣你填寫的驗證碼就算是對的，它也不會通過你的申請。&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-2LfHWJqREqY/TapaKkdiryI/AAAAAAAAC5c/ssoEhAi4WTE/s1600/ssl-03.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ITN3i3TxxrE/TapaKTbtxbI/AAAAAAAAC5U/-4wm4SWDQdI/s1600/ssl-04.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 156px;" src="http://3.bp.blogspot.com/-ITN3i3TxxrE/TapaKTbtxbI/AAAAAAAAC5U/-4wm4SWDQdI/s400/ssl-04.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384620022973874" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;產生「帳戶」專用的公私錀檔，可選擇 Hign Grade 。&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-ITN3i3TxxrE/TapaKTbtxbI/AAAAAAAAC5U/-4wm4SWDQdI/s1600/ssl-04.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-yNhdc29FcU8/TapaKL64ThI/AAAAAAAAC5M/xkEON5Oqx7s/s1600/ssl-05.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 127px;" src="http://1.bp.blogspot.com/-yNhdc29FcU8/TapaKL64ThI/AAAAAAAAC5M/xkEON5Oqx7s/s400/ssl-05.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384618006203922" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;將公私錀檔安裝至瀏覽器上，這裡的公私錀檔是指你的帳戶與 startssl 網站溝通時，所用的公私錀檔，而不是你的網站要用的公錀。&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-yNhdc29FcU8/TapaKL64ThI/AAAAAAAAC5M/xkEON5Oqx7s/s1600/ssl-05.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-i8lTJE7t0SM/TapaJ5mEY0I/AAAAAAAAC5E/y8uZ1_MWZeQ/s1600/ssl-06.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 74px;" src="http://4.bp.blogspot.com/-i8lTJE7t0SM/TapaJ5mEY0I/AAAAAAAAC5E/y8uZ1_MWZeQ/s400/ssl-06.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384613087077186" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;建議你備份這份公私錀檔。&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-i8lTJE7t0SM/TapaJ5mEY0I/AAAAAAAAC5E/y8uZ1_MWZeQ/s1600/ssl-06.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-RGjbRexiBN0/TapaCJa40SI/AAAAAAAAC48/hQzVoTBV4sU/s1600/ssl-07.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 162px;" src="http://1.bp.blogspot.com/-RGjbRexiBN0/TapaCJa40SI/AAAAAAAAC48/hQzVoTBV4sU/s400/ssl-07.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384479896195362" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-RGjbRexiBN0/TapaCJa40SI/AAAAAAAAC48/hQzVoTBV4sU/s1600/ssl-07.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;完成後，可見到帳戶頁面。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. 驗證網址：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-X8ZFKe-RIGE/TapaBygO2BI/AAAAAAAAC40/vXS3akoVZNs/s1600/ssl-08.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 123px;" src="http://2.bp.blogspot.com/-X8ZFKe-RIGE/TapaBygO2BI/AAAAAAAAC40/vXS3akoVZNs/s400/ssl-08.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384473744594962" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我是選擇 Domain Name Validation 方式。&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-X8ZFKe-RIGE/TapaBygO2BI/AAAAAAAAC40/vXS3akoVZNs/s1600/ssl-08.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Bx4ARqCgKIg/TapaBuWPfBI/AAAAAAAAC4s/gXmopESp7YA/s1600/ssl-09.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 180px;" src="http://2.bp.blogspot.com/-Bx4ARqCgKIg/TapaBuWPfBI/AAAAAAAAC4s/gXmopESp7YA/s400/ssl-09.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384472628952082" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;填入網址。&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-Bx4ARqCgKIg/TapaBuWPfBI/AAAAAAAAC4s/gXmopESp7YA/s1600/ssl-09.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-K0xDwKS8Fjo/TapaBpTU64I/AAAAAAAAC4k/bl50_uOxO8E/s1600/ssl-10.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 157px;" src="http://3.bp.blogspot.com/-K0xDwKS8Fjo/TapaBpTU64I/AAAAAAAAC4k/bl50_uOxO8E/s400/ssl-10.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384471274548098" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;startssl 會從 whois 資料中抓出管理員信箱，所以你必須確認該網址的 whois 內容是正確的。&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-K0xDwKS8Fjo/TapaBpTU64I/AAAAAAAAC4k/bl50_uOxO8E/s1600/ssl-10.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-DafmcUTgSAQ/TapaBctW8uI/AAAAAAAAC4c/5YQZacVFlSI/s1600/ssl-11.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 163px;" src="http://4.bp.blogspot.com/-DafmcUTgSAQ/TapaBctW8uI/AAAAAAAAC4c/5YQZacVFlSI/s400/ssl-11.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384467894072034" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;請到信箱收取驗證碼。並填入上面的 Verification Code 中。&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-DafmcUTgSAQ/TapaBctW8uI/AAAAAAAAC4c/5YQZacVFlSI/s1600/ssl-11.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-nai5Kz8T_9w/TapZ6WtePDI/AAAAAAAAC4U/ltM192MYpAM/s1600/ssl-12.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 128px;" src="http://4.bp.blogspot.com/-nai5Kz8T_9w/TapZ6WtePDI/AAAAAAAAC4U/ltM192MYpAM/s400/ssl-12.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384346024852530" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;成功後，你只有 30 天的時間，去簽核該網站的公錀檔。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. 簽核公錀：&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-nai5Kz8T_9w/TapZ6WtePDI/AAAAAAAAC4U/ltM192MYpAM/s1600/ssl-12.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-OdB3j6YgmJY/TapZ6RYz00I/AAAAAAAAC4M/_Bl0KnpG4ro/s1600/ssl-13.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 96px;" src="http://1.bp.blogspot.com/-OdB3j6YgmJY/TapZ6RYz00I/AAAAAAAAC4M/_Bl0KnpG4ro/s400/ssl-13.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384344596009794" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;公錀可以有很多種用途( Email/XMPP/Object Code )，但目前我只需要 Web 的，所以選擇 Web Server SSL/TLS certificate 。&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-OdB3j6YgmJY/TapZ6RYz00I/AAAAAAAAC4M/_Bl0KnpG4ro/s1600/ssl-13.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ZsXmNLwDd7A/TapZ57ldIhI/AAAAAAAAC4E/0sZ83-YDnn8/s1600/ssl-14.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 186px;" src="http://1.bp.blogspot.com/-ZsXmNLwDd7A/TapZ57ldIhI/AAAAAAAAC4E/0sZ83-YDnn8/s400/ssl-14.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384338743468562" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;要使用自己獨立生成的私錀來作簽核公錀的動作，請選擇 Skip 。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;欲生成長度為 4096 bits 的私錀檔並使用 des3 格式作私錀加密(密碼長度要大於 4 個字元)，請使用如下指令：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;# openssl genrsa -des3 -out exmple.com.key 4096&lt;br /&gt;Generating RSA private key, 4096 bit long modulus&lt;br /&gt;................................................................................................................................................................++&lt;br /&gt;...............................................++&lt;br /&gt;e is 65537 (0x10001)&lt;br /&gt;Enter pass phrase for exmple.com.key:&lt;br /&gt;Verifying - Enter pass phrase for exmple.com.key:&lt;br /&gt;&lt;br /&gt;從新增的私錀中，產生一個憑證請求檔，並在請求檔中，寫入「目標網址」(也就是你剛驗證過的那個網址)的所屬資料，如：所在地、單位名稱、負責人信箱等：&lt;br /&gt;&lt;br /&gt;# openssl req -new -key exmple.com.key -out exmple.com.csr&lt;br /&gt;Enter pass phrase for exmple.com.key:&lt;br /&gt;You are about to be asked to enter information that will be incorporated&lt;br /&gt;into your certificate request.&lt;br /&gt;What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;There are quite a few fields but you can leave some blank&lt;br /&gt;For some fields there will be a default value,&lt;br /&gt;If you enter '.', the field will be left blank.&lt;br /&gt;-----&lt;br /&gt;Country Name (2 letter code) [AU]:{{TW}}&lt;br /&gt;State or Province Name (full name) [Some-State]:{{Taichung}}&lt;br /&gt;Locality Name (eg, city) []:{{Taichung}}&lt;br /&gt;Organization Name (eg, company) [Internet Widgits Pty Ltd]:{{EXAMPLE-Company}}&lt;br /&gt;Organizational Unit Name (eg, section) []:{{EXAMPLE-Company}}&lt;br /&gt;Common Name (eg, YOUR name) []:{{EXAMPLE Company}}&lt;br /&gt;Email Address []:{{master@exmple.com}}&lt;br /&gt;&lt;br /&gt;Please enter the following 'extra' attributes&lt;br /&gt;to be sent with your certificate request&lt;br /&gt;A challenge password []:&lt;br /&gt;An optional company name []:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;兩個 {{ }} 所包住的部份，請自己修改成正確資料。&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-ZsXmNLwDd7A/TapZ57ldIhI/AAAAAAAAC4E/0sZ83-YDnn8/s1600/ssl-14.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-bKuP2sans4o/TapZ5_fEu7I/AAAAAAAAC38/TZ4ETwaFgtk/s1600/ssl-15.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 239px;" src="http://4.bp.blogspot.com/-bKuP2sans4o/TapZ5_fEu7I/AAAAAAAAC38/TZ4ETwaFgtk/s400/ssl-15.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384339790445490" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在 Linux 完成 CSR 檔的製作後，你會得到 example.com.csr 檔案，請將檔案內容貼入上圖的文字框中。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-1OYiG61krw0/TapZ5vNL8FI/AAAAAAAAC30/UUDh27gAOlU/s1600/ssl-16.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 164px;" src="http://2.bp.blogspot.com/-1OYiG61krw0/TapZ5vNL8FI/AAAAAAAAC30/UUDh27gAOlU/s400/ssl-16.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384335420452946" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CSR檔如無誤，它會出現上圖的訊息。&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-1OYiG61krw0/TapZ5vNL8FI/AAAAAAAAC30/UUDh27gAOlU/s1600/ssl-16.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-OMovbnxOl4U/TapZvzCejyI/AAAAAAAAC3s/UilX1qgCiGQ/s1600/ssl-17.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 139px;" src="http://2.bp.blogspot.com/-OMovbnxOl4U/TapZvzCejyI/AAAAAAAAC3s/UilX1qgCiGQ/s400/ssl-17.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384164650585890" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;它要你選擇要生成簽核公錀的頂層網域。&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-OMovbnxOl4U/TapZvzCejyI/AAAAAAAAC3s/UilX1qgCiGQ/s1600/ssl-17.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-XTZUu1hsbPo/TapZvbFmGQI/AAAAAAAAC3k/NTgosxMRsiU/s1600/ssl-18.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 115px;" src="http://4.bp.blogspot.com/-XTZUu1hsbPo/TapZvbFmGQI/AAAAAAAAC3k/NTgosxMRsiU/s400/ssl-18.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384158221211906" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;請填入你所提供 https 服務的網址名稱。&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-XTZUu1hsbPo/TapZvbFmGQI/AAAAAAAAC3k/NTgosxMRsiU/s1600/ssl-18.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-fl_-Z3t2aW8/TapZvKR4nyI/AAAAAAAAC3c/w4zDDt2ByTM/s1600/ssl-19.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 183px;" src="http://1.bp.blogspot.com/-fl_-Z3t2aW8/TapZvKR4nyI/AAAAAAAAC3c/w4zDDt2ByTM/s400/ssl-19.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384153709354786" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;確認要簽核公錀的網址。 startssl 簽核的公錀，預設會給你的目標網域及它的頂層網址兩個。如果你要簽核公錀的網址希望是 *.example.com ，也就是除頂層網域外，把它的下層網域一網打盡，也是可以，只要二年付 USD 49.9 即可，大約 1500 元的新台幣，而且這是 wild cards 網址，網際威信可沒這麼好康，一個就要 18000 元、二個就是要 36000 元。這時，我又感到「全球化」的愉悅。&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-fl_-Z3t2aW8/TapZvKR4nyI/AAAAAAAAC3c/w4zDDt2ByTM/s1600/ssl-19.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Lt_sktMzq5Y/TapZu7NgubI/AAAAAAAAC3U/SqbzhtakfQI/s1600/ssl-20.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 186px;" src="http://4.bp.blogspot.com/-Lt_sktMzq5Y/TapZu7NgubI/AAAAAAAAC3U/SqbzhtakfQI/s400/ssl-20.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384149664479666" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;接下來，請把文字框中的文字貼到 example.com.crt 中，這個內容即已被簽核過的公錀檔。另外，請順便下載上圖中的 intermediate 及 root 兩個 CA 檔案。&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-Lt_sktMzq5Y/TapZu7NgubI/AAAAAAAAC3U/SqbzhtakfQI/s1600/ssl-20.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Z9BYdvv4Pg0/TapZuiIiQbI/AAAAAAAAC3M/ZXOPthN-HSM/s1600/ssl-21.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 64px;" src="http://1.bp.blogspot.com/-Z9BYdvv4Pg0/TapZuiIiQbI/AAAAAAAAC3M/ZXOPthN-HSM/s400/ssl-21.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5596384142932722098" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-Z9BYdvv4Pg0/TapZuiIiQbI/AAAAAAAAC3M/ZXOPthN-HSM/s1600/ssl-21.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;整個工作完成了。&lt;br /&gt;&lt;br /&gt;然後在 Apache 設定檔中設定如下：&lt;br /&gt;&lt;pre&gt;&lt;span class="Apple-style-span"&gt;SSLEngine on&lt;br /&gt;SSLProtocol all -SSLv2&lt;br /&gt;SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM&lt;br /&gt;SSLCertificateFile /etc/apache2/example.com.crt&lt;br /&gt;SSLCertificateKeyFile /etc/apache2/example.com.key&lt;br /&gt;SSLCertificateChainFile /etc/apache2/sub.class1.server.ca.pem&lt;br /&gt;SSLCACertificateFile /etc/apache2/ca.pem&lt;br /&gt;SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;重新啟動 Apache 時，它會問你私錀密碼為何? 這個動作在管理員面前發生是沒有問題的，但在系統自動重開機時，會造成困惱，所以我們可移除私錀的加密，指令如下：&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;# openssl rsa -in exmple.com.key -out exmple.com.key.no_password&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;exmple.com.key.no_password 這個私錀檔就是沒加密的，將它寫入 apache 設定檔即可。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4733402711325261101?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4733402711325261101/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/how-to-get-free-https-web-certification.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4733402711325261101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4733402711325261101'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/how-to-get-free-https-web-certification.html' title='How to get a free HTTPS web certification authority by StartSSL.com'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8ZEiBUkbyCU/Tapjb99h8DI/AAAAAAAAC50/8yR1XD1BO9A/s72-c/auth.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7046031171954291589</id><published>2011-04-16T14:08:00.004+08:00</published><updated>2011-04-16T14:33:28.861+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>SSH 的公私錀生成說明</title><content type='html'>Linux/Mac:&lt;br /&gt;&lt;br /&gt;請在命令列鍵入如下指令：&lt;br /&gt;&lt;br /&gt;$ ssh-keygen -t rsa -b 4096&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Generating public/private rsa key pair.&lt;br /&gt;Enter file in which to save the key (/home/tmp/.ssh/id_rsa): &amp;lt;&amp;lt;按 Enter ，使用預設值&amp;gt;&amp;gt;&lt;br /&gt;Enter passphrase (empty for no passphrase): &amp;lt;&amp;lt;設個私錀密碼，請大於 5 個字元&amp;gt;&amp;gt;&lt;br /&gt;Enter same passphrase again: &amp;lt;&amp;lt;確認剛剛的私錀密碼&amp;gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;Your identification has been saved in /home/tmp/.ssh/id_rsa.&lt;br /&gt;Your public key has been saved in /home/tmp/.ssh/id_rsa.pub.&lt;br /&gt;The key fingerprint is:&lt;br /&gt;72:fb:40:ba:8a:40:be:48:03:bd:20:13:6d:83:cb:d0 tmp@core2duo&lt;br /&gt;The key's randomart image is:&lt;br /&gt;+--[ RSA 4096]----+&lt;br /&gt;|                 |&lt;br /&gt;| +               |&lt;br /&gt;|+ A              |&lt;br /&gt;|o= .             |&lt;br /&gt;|*o. T . S        |&lt;br /&gt;|=o .   = .       |&lt;br /&gt;|.-.   . o        |&lt;br /&gt;|o.o.   . o       |&lt;br /&gt;|... ...   .      |&lt;br /&gt;+-----------------+&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;這樣，你的公錀就是 ~/.ssh/id_rsa.pub 而私錀就是 ~/.ssh/id_rsa 。&lt;br /&gt;&lt;br /&gt;$ cat ~/.ssh/id_rsa.pub&lt;br /&gt;ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAz22m/azvKC7uk05/D6qvl5c+QR95jkiqEpnn3/co/zOGc4Gf7v1sc5H7Lf5CUOTxgfgAOZSmdr1OPaUYU1cvJTLTjKeVznifyTl3KabMH1Yy8wpSS1TjCTbS8896uXXYtrdIL5KEHnVADYdS4fHWtY7uAR+JWlbh9OjN3deU77656knwW0PO5ELMYKUicSZZZFoUFyDCflM61cNNP1i/rwa1pp8nFqyjzNOq5hKaEsssiJK4tPcm+5K8rwRXm3k7fprvoxYswebo9U85kvyWPqY0iMFE0P019Pbq5VWCaqfv9nzD7rZaKe+aLk/7n+E4HSSSLYNlhnQkZUVm40zGnhGEZvT0e+kmpJpXJKjAe3ZJkowc3o8xrBjD0ULP+jN1fHMUxllWOuxgNkqdD/UjXf5E777Zw+Fpoy2B1c/wRPpRfsFisfLg9xxj3MF+E3wkHROOtrSv+M2wLKVtDODF4zwO8dr5g9s5xBTlSJFsBCJGmX2+zQ6y2033amRnr/Xl0+KAqCOdO+BmQ+iw7X0DFCfxZtjx4RQXcGYw3HqSKP3I4Tft0IHD0g1HXuQhMezG6yVIVABgbo47+Xbdxx7vFb82Anv7DnmhbOovk3LDrzPzyNe7fS2Jla5T5Etb5jyEHE1qNfJNzKVgxjBMGKGk7L5GIx7pXUk= tmp@core2duo&lt;br /&gt;&lt;br /&gt;把上面的公錀內容放到你想登入的 Linux/Mac 機器中的 ~/.ssh/authorized_keys2 (這個檔，其實是看系統管理員是怎麼設定的，只不過一般的 Linux 套件都是用這個作預設值)中，這樣你就能使用這一對公私錀登入遠端機器了。&lt;br /&gt;&lt;br /&gt;Windows:&lt;br /&gt;&lt;br /&gt;就比較麻煩了，請去下載 puttygen.exe 程式，執行它後如下圖：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-A3RPOKK9HxI/Tak2J1DneFI/AAAAAAAAC28/A0ZnyMzw3bM/s1600/putty-kengen.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 391px;" src="http://2.bp.blogspot.com/-A3RPOKK9HxI/Tak2J1DneFI/AAAAAAAAC28/A0ZnyMzw3bM/s400/putty-kengen.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5596063554473523282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;選擇 SSH-2 RSA 及輸入 4096 的 Number of bits in a generated key 後，再按下 Generate 按鈕，讓滑鼠停留在綠色生成桿的下方空白處，並胡亂移動滑鼠遊標，讓 puttygen.exe 得到亂數種子，待進度達百分百後，可得到下圖：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-0hfTIG0dhUE/Tak2KAvGatI/AAAAAAAAC3E/ISclOw8JEzI/s1600/putty-keygen-result.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 392px;" src="http://2.bp.blogspot.com/-0hfTIG0dhUE/Tak2KAvGatI/AAAAAAAAC3E/ISclOw8JEzI/s400/putty-keygen-result.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5596063557608696530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;選取的藍色文字即公錀內容，請貼到你欲登入的 Linux/Mac 機器中的 ~/.ssh/authorized_keys2 中，而私錀部份，請在設定密碼「Key passphrase」及確認密碼「Confirm passphrase」後，按下 Save private key 按鈕以存檔至系統硬碟。&lt;br /&gt;&lt;br /&gt;最後，請保護好你的私錀檔(最好不要離開生成它的機器硬碟)，遺失它或是被別人盜取後的代價相當大。 Good Luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7046031171954291589?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7046031171954291589/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/ssh.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7046031171954291589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7046031171954291589'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/ssh.html' title='SSH 的公私錀生成說明'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-A3RPOKK9HxI/Tak2J1DneFI/AAAAAAAAC28/A0ZnyMzw3bM/s72-c/putty-kengen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7088407041059181421</id><published>2011-04-13T09:34:00.006+08:00</published><updated>2011-04-27T07:35:02.347+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libsvm'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><category scheme='http://www.blogger.com/atom/ns#' term='cmclass'/><title type='text'>CMClass: 簡述 libsvm(Support Vector Machine library) 使用方法</title><content type='html'>&lt;a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/"&gt;libsvm&lt;/a&gt;乃台大林智仁老師開發的 Open source 工具，其目的為實作 Support Vector Machine 分類器，使用語言主要是 C++ ，目前也有 JAVA 版本，也提供其他語言的 wrapper ，像是 Perl, Python, Ruby, Matlab, Hashkell, Lisp 等。&lt;br /&gt;&lt;br /&gt;詳細數學就不介紹了，怕大家睡著(但其實是因為還沒看懂)，各位可以看一下下面那段這個影片，大略了解 SVM 分類器如何區別不同資料。&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/3liCbRZPrZA" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;本文章主要介紹的是用 Python 語言去操作 libsvm 函式庫。&lt;br /&gt;&lt;br /&gt;先解壓縮 libsvm.tgz 檔，可以看到 python 及 windows 資料夾，如果要在 Linux 中使用的話，請在主目錄中作&lt;br /&gt;&lt;br /&gt;$ make lib&lt;br /&gt;&lt;br /&gt;這樣會得到 libsvm.so.2 檔，這是 libsvm 的主函式庫，而在 windows 中使用的話，它則是先幫你編譯好這個檔了，可在 windows/ 找到這個 libsvm.dll 檔。&lt;br /&gt;&lt;br /&gt;在 Linux 中，請把 python/*py 放到 /usr/local/lib/python2.6/site-packages 中，而 libsvm.so.2 放到 /usr/local/lib/python2.6/ 。&lt;br /&gt;&lt;br /&gt;在 windows 中，請把 python/*py 放到 C:\Python26\Lib\site-packages 中，而 libsvm.dll 請放到 C:\Python26\Lib\windows 資料夾中(因為 svmutil.py 寫死了它的相對路徑，所以務必依它的相對位置置放)。&lt;br /&gt;&lt;br /&gt;請在 Python shell 中，鍵入下列指令，測試是否安裝成功。&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; from svmutil import *&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;br /&gt;沒錯誤訊息，那就是安裝對了。&lt;br /&gt;&lt;br /&gt;使用 svm ，主要就是兩個動作： 訓練及預測。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;訓練：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;svmutil.svm_train 函式的引數有「類別標籤」、「觀察值」、「參數」。&lt;br /&gt;&lt;br /&gt;你的原始資料若是如下：&lt;br /&gt;&lt;br /&gt;1. 3, 4, 5, 6 =&gt; 第二類&lt;br /&gt;2. 3, 4, 5, 5 =&gt; 第一類&lt;br /&gt;3. ....&lt;br /&gt;&lt;br /&gt;前面的 #. 表第幾個觀察值，後面逗號分隔的數據為各維度的值，行末則是放置該觀察值為第幾類的說明。請把它轉成&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; Y = [2, 1, ...]&lt;br /&gt;&gt;&gt;&gt; x = [(3, 4, 5, 6), (3, 4, 5, 5), ...]&lt;br /&gt;&lt;br /&gt;類別標籤請獨立放置到一個 list 中，而觀察值維度則依序放置到另一個 list 中。接下來，就能使用 svm_train：&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; from svmutil import *&lt;br /&gt;&gt;&gt;&gt; model = svm_train(Y, x, '-c 4')&lt;br /&gt;&lt;br /&gt;所得到的 model 就是一個經過訓練的分類器。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;預測&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;接下來，我們要拿訓練好的分類器去預測新的觀察值：&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; p_label, p_acc, p_val = svm_predict([0]*len(new_x), new_x, model)&lt;br /&gt;&lt;br /&gt;而 p_label 就是依 new_x 順序所對應的類別標籤 list 。&lt;br /&gt;&lt;br /&gt;下圖是我隨機生成的 300 點，圓點為原始的觀察值，而以線相連的連續點則是預測點。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-kdjnvl9VVRQ/TaT-HU70xJI/AAAAAAAAC2k/suEDpCZswL0/s1600/svm.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 205px;" src="http://4.bp.blogspot.com/-kdjnvl9VVRQ/TaT-HU70xJI/AAAAAAAAC2k/suEDpCZswL0/s400/svm.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5594876038933169298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;詳細程式碼請參照如下：&lt;br /&gt;&lt;br /&gt;&lt;pre class="vim"&gt;&lt;span&gt;&lt;b&gt; 1 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;#! /usr/bin/python&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 2 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;# -*- coding: utf8 -*-&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 3 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 4 &lt;/b&gt;&lt;/span&gt;__author__=&lt;span&gt;&lt;b&gt;"hoamon"&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 5 &lt;/b&gt;&lt;/span&gt;__date__ =&lt;span&gt;&lt;b&gt;u"$2011/4/12 下午 05:52:31$"&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 6 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt; 7 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; math &lt;span&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; pi, sin, cos&lt;br /&gt;&lt;span&gt;&lt;b&gt; 8 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; random &lt;span&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; random&lt;br /&gt;&lt;span&gt;&lt;b&gt; 9 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; matplotlib &lt;span&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; pyplot &lt;span&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt; plt&lt;br /&gt;&lt;span&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; svmutil &lt;span&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; *&lt;br /&gt;&lt;span&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;b&gt;circleData&lt;/b&gt;&lt;/span&gt;(centre, radius, down_limit_percent=&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, lens=&lt;span&gt;&lt;b&gt;100&lt;/b&gt;&lt;/span&gt;, range=[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;100&lt;/b&gt;&lt;/span&gt;]):&lt;br /&gt;&lt;span&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/span&gt;    points = []&lt;br /&gt;&lt;span&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt; len(points) &amp;lt; lens:&lt;br /&gt;&lt;span&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/span&gt;        _angle = &lt;span&gt;&lt;b&gt;2&lt;/b&gt;&lt;/span&gt; * pi * random()&lt;br /&gt;&lt;span&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/span&gt;        radius_percent = random()&lt;br /&gt;&lt;span&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/span&gt;        &lt;span&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; radius_percent &amp;lt; down_limit_percent: &lt;span&gt;&lt;b&gt;continue&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/span&gt;        _radius = radius * radius_percent&lt;br /&gt;&lt;span&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/span&gt;        x = centre[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] + cos(_angle) * _radius&lt;br /&gt;&lt;span&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/span&gt;        y = centre[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] + sin(_angle) * _radius&lt;br /&gt;&lt;span&gt;&lt;b&gt;21 &lt;/b&gt;&lt;/span&gt;        &lt;span&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; range[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] &amp;lt;= x &amp;lt;= range[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;and&lt;/b&gt;&lt;/span&gt; range[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] &amp;lt;= y &amp;lt;= range[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;]:&lt;br /&gt;&lt;span&gt;&lt;b&gt;22 &lt;/b&gt;&lt;/span&gt;            points.append((x, y))&lt;br /&gt;&lt;span&gt;&lt;b&gt;23 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; points&lt;br /&gt;&lt;span&gt;&lt;b&gt;24 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;25 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;26 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;b&gt;test&lt;/b&gt;&lt;/span&gt;():&lt;br /&gt;&lt;span&gt;&lt;b&gt;27 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;u""" 製作三群的隨機資料，每群皆 100 個點，點位置的 x, y 限制在 0 ~ 100 之間&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;28 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;29 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;        最後利用 matplotlib 繪製出來的圖，"單點"表原始資料，而連續點畫線的部份，&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;30 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;        該點位的類別則是利用 svm_predict 計算出來的。&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;31 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;32 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;        Y = [1, 1, 1, ..., 2, 2, 2, ..., 3, 3, 3, ...]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;33 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;        x = [(x1, y1), (x2, y2), ...]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;34 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;    """&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;35 &lt;/b&gt;&lt;/span&gt;    Y = [&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] * &lt;span&gt;&lt;b&gt;100&lt;/b&gt;&lt;/span&gt; + [&lt;span&gt;&lt;b&gt;2&lt;/b&gt;&lt;/span&gt;] * &lt;span&gt;&lt;b&gt;100&lt;/b&gt;&lt;/span&gt; + [&lt;span&gt;&lt;b&gt;3&lt;/b&gt;&lt;/span&gt;] * &lt;span&gt;&lt;b&gt;100&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;36 &lt;/b&gt;&lt;/span&gt;    x1, x2, x3 = (circleData((&lt;span&gt;&lt;b&gt;35&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;40&lt;/b&gt;&lt;/span&gt;), &lt;span&gt;&lt;b&gt;12&lt;/b&gt;&lt;/span&gt;),&lt;br /&gt;&lt;span&gt;&lt;b&gt;37 &lt;/b&gt;&lt;/span&gt;        circleData((&lt;span&gt;&lt;b&gt;35&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;40&lt;/b&gt;&lt;/span&gt;), &lt;span&gt;&lt;b&gt;48&lt;/b&gt;&lt;/span&gt;, down_limit_percent=&lt;span&gt;&lt;b&gt;0.25&lt;/b&gt;&lt;/span&gt;),&lt;br /&gt;&lt;span&gt;&lt;b&gt;38 &lt;/b&gt;&lt;/span&gt;        circleData((&lt;span&gt;&lt;b&gt;80&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;80&lt;/b&gt;&lt;/span&gt;), &lt;span&gt;&lt;b&gt;20&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;39 &lt;/b&gt;&lt;/span&gt;        )&lt;br /&gt;&lt;span&gt;&lt;b&gt;40 &lt;/b&gt;&lt;/span&gt;    x = x1 + x2 + x3&lt;br /&gt;&lt;span&gt;&lt;b&gt;41 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;42 &lt;/b&gt;&lt;/span&gt;    m = svm_train(Y, x, &lt;span&gt;&lt;b&gt;'-c 4'&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;43 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;44 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;#INFO 在 100x100 的畫布上，打出 40000 個點，拿這 4 萬個點去給 m 作預測，算出這 4 萬個點的類別&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;45 &lt;/b&gt;&lt;/span&gt;    points = [(i*&lt;span&gt;&lt;b&gt;0.5&lt;/b&gt;&lt;/span&gt;, j*&lt;span&gt;&lt;b&gt;0.5&lt;/b&gt;&lt;/span&gt;) &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; j &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; xrange(&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;200&lt;/b&gt;&lt;/span&gt;) &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; i &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; xrange(&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;200&lt;/b&gt;&lt;/span&gt;)]&lt;br /&gt;&lt;span&gt;&lt;b&gt;46 &lt;/b&gt;&lt;/span&gt;    p_label, p_acc, p_val = svm_predict([&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;]*&lt;span&gt;&lt;b&gt;40000&lt;/b&gt;&lt;/span&gt;, points, m)&lt;br /&gt;&lt;span&gt;&lt;b&gt;47 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;48 &lt;/b&gt;&lt;/span&gt;    line_1, line_2, line_3, pre_label = [], [], [], p_label[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;]&lt;br /&gt;&lt;span&gt;&lt;b&gt;49 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; i &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; xrange(&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;200&lt;/b&gt;&lt;/span&gt;):&lt;br /&gt;&lt;span&gt;&lt;b&gt;50 &lt;/b&gt;&lt;/span&gt;        &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; j &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; xrange(&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;200&lt;/b&gt;&lt;/span&gt;):&lt;br /&gt;&lt;span&gt;&lt;b&gt;51 &lt;/b&gt;&lt;/span&gt;            index = i * &lt;span&gt;&lt;b&gt;200&lt;/b&gt;&lt;/span&gt; + j&lt;br /&gt;&lt;span&gt;&lt;b&gt;52 &lt;/b&gt;&lt;/span&gt;            now_label = p_label[index]&lt;br /&gt;&lt;span&gt;&lt;b&gt;53 &lt;/b&gt;&lt;/span&gt;            &lt;span&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; now_label == &lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;b&gt;54 &lt;/b&gt;&lt;/span&gt;                line_1.append(points[index])&lt;br /&gt;&lt;span&gt;&lt;b&gt;55 &lt;/b&gt;&lt;/span&gt;            &lt;span&gt;&lt;b&gt;elif&lt;/b&gt;&lt;/span&gt; now_label == &lt;span&gt;&lt;b&gt;2&lt;/b&gt;&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;b&gt;56 &lt;/b&gt;&lt;/span&gt;                line_2.append(points[index])&lt;br /&gt;&lt;span&gt;&lt;b&gt;57 &lt;/b&gt;&lt;/span&gt;            &lt;span&gt;&lt;b&gt;elif&lt;/b&gt;&lt;/span&gt; now_label == &lt;span&gt;&lt;b&gt;3&lt;/b&gt;&lt;/span&gt; :&lt;br /&gt;&lt;span&gt;&lt;b&gt;58 &lt;/b&gt;&lt;/span&gt;                line_3.append(points[index])&lt;br /&gt;&lt;span&gt;&lt;b&gt;59 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;60 &lt;/b&gt;&lt;/span&gt;    fig = plt.figure()&lt;br /&gt;&lt;span&gt;&lt;b&gt;61 &lt;/b&gt;&lt;/span&gt;    ax = fig.add_subplot(&lt;span&gt;&lt;b&gt;111&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;62 &lt;/b&gt;&lt;/span&gt;    ax.plot([p[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; x1], [p[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; x1], &lt;span&gt;&lt;b&gt;'ro'&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;63 &lt;/b&gt;&lt;/span&gt;    ax.plot([p[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; x2], [p[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; x2], &lt;span&gt;&lt;b&gt;'go'&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;64 &lt;/b&gt;&lt;/span&gt;    ax.plot([p[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; x3], [p[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; x3], &lt;span&gt;&lt;b&gt;'bo'&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;65 &lt;/b&gt;&lt;/span&gt;    ax.plot([p[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; line_1], [p[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; line_1], &lt;span&gt;&lt;b&gt;'r-'&lt;/b&gt;&lt;/span&gt;, alpha=&lt;span&gt;&lt;b&gt;0.5&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;66 &lt;/b&gt;&lt;/span&gt;    ax.plot([p[&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; line_3], [p[&lt;span&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;] &lt;span&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; p &lt;span&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; line_3], &lt;span&gt;&lt;b&gt;'b-'&lt;/b&gt;&lt;/span&gt;, alpha=&lt;span&gt;&lt;b&gt;0.5&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;67 &lt;/b&gt;&lt;/span&gt;    ax.set_title(&lt;span&gt;&lt;b&gt;'Points of three classes'&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;68 &lt;/b&gt;&lt;/span&gt;    ax.set_xlabel(&lt;span&gt;&lt;b&gt;'x'&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;69 &lt;/b&gt;&lt;/span&gt;    ax.set_ylabel(&lt;span&gt;&lt;b&gt;'y'&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;70 &lt;/b&gt;&lt;/span&gt;    ax.set_xlim(&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;100&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;71 &lt;/b&gt;&lt;/span&gt;    ax.set_ylim(&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;, &lt;span&gt;&lt;b&gt;100&lt;/b&gt;&lt;/span&gt;)&lt;br /&gt;&lt;span&gt;&lt;b&gt;72 &lt;/b&gt;&lt;/span&gt;    plt.show()&lt;br /&gt;&lt;span&gt;&lt;b&gt;73 &lt;/b&gt;&lt;/span&gt;    &lt;span&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; m, p_label, p_acc, p_val&lt;br /&gt;&lt;span&gt;&lt;b&gt;74 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;75 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;76 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; __name__ == &lt;span&gt;&lt;b&gt;"__main__"&lt;/b&gt;&lt;/span&gt;:&lt;br /&gt;&lt;span&gt;&lt;b&gt;77 &lt;/b&gt;&lt;/span&gt;    test()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7088407041059181421?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7088407041059181421/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/cmclass-libsvmsupport-vector-machine_13.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7088407041059181421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7088407041059181421'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/cmclass-libsvmsupport-vector-machine_13.html' title='CMClass: 簡述 libsvm(Support Vector Machine library) 使用方法'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/3liCbRZPrZA/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4546962641262369566</id><published>2011-04-12T16:13:00.004+08:00</published><updated>2011-04-13T07:57:39.599+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>無法在 Windows 上的 NetBeans 作中文註解</title><content type='html'>為了讓 Python 程式能容易在團隊之間快速流動，我們要求大家在程式編碼上一律使用 utf8 。只要在程式檔的第一行宣告 #-*- coding: utf8 -*- 以及使用 utf-8 編碼存檔即可。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;不過&lt;/span&gt;，在 Windows 中執行時，因為它還活在 cp950 的時代，所以我們還要在 Python 主安裝目錄中的 Lib/site-packages/sitecustomize.py 中加入&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;import sys&lt;/div&gt;&lt;div&gt;sys.setdefaultencoding('utf8')&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這樣 python 程式在執行時，才不會遇到 UnicodeEncodeError (其實偶爾還是會遇到，原因是搞混了 Unicode 編碼及 UTF-8 編碼)。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;而在使用 NetBeans 時，我們也會在 &lt;netbeans install="" dir=""&gt;/etc/netbeans.conf 中設定 -J-Dfile.encoding=utf8 來讓 NetBeans 正常顯示程式中的 UTF-8 編碼中文字。&lt;/netbeans&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不過，在 mercurial commit 時，卻無法使用中文作註解。這時候，只要在 netbeans.conf 加入 -J-Dmercurial.encoding=utf8 即可。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4546962641262369566?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4546962641262369566/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/windows-netbeans.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4546962641262369566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4546962641262369566'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/windows-netbeans.html' title='無法在 Windows 上的 NetBeans 作中文註解'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-6942438627963466021</id><published>2011-04-08T19:36:00.006+08:00</published><updated>2011-04-08T20:11:50.189+08:00</updated><title type='text'>廣告：申辦壹網樂機上盒(免費收看壹電視新聞及多部電影)</title><content type='html'>&lt;span class="Apple-style-span"&gt;利益揭露&lt;/span&gt;： 透過&lt;a href="https://www.nextvod.com.tw/tw/g/signup.jsp?accountid=MTAwMDA4OTY1Mw==&amp;amp;r=QbAAurCv&amp;amp;linkkey=914424fb8fe4554838fffc67a86cb622&amp;amp;utm_source=SNS&amp;amp;utm_medium=EDM&amp;amp;utm_term=social_media&amp;amp;utm_content=url&amp;amp;utm_campaign=SNS"&gt;網頁連結申辦機上盒&lt;/a&gt;，能讓我參加抽獎，什麼獎呢? 我也不太曉得，請看倌&lt;a href="http://www.nextvod.com.tw/tw/sns/awards.jsp"&gt;自行查閱&lt;/a&gt;。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;之前在 &lt;a href="http://www.pchome.com.tw/"&gt;PCHome&lt;/a&gt; 上買了台 X201i NB，結果貨到時，多送了一台壹網樂機上盒，之前有在&lt;a href="http://www.nexttv.com.tw/index/news"&gt;壹電視網站&lt;/a&gt;上觀看五都選戰的節目，覺得他們真是幹得不錯，只不過我的 Ubuntu + Chrome + flash player 有時候看一看就會自動變灰畫面。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;當然他們也有提供桌面程式 &lt;a href="http://www.nexttv.com.tw/index/nxplayer"&gt;NXPlayer&lt;/a&gt; 安裝在電腦上看，可惜只有 Window$ 版。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;使用壹網樂機上盒就沒這個問題啦! 而且這個機上盒內的作業系統可是 Open source 的 Linux ，有興趣可到&lt;a href="http://www.nextvod.com.tw/tw/yiwangle/opensource.jsp"&gt;這&lt;/a&gt;下載，這讓人又更加地樂意為他們推廣。而且目前使用機上盒觀看&lt;a href="http://www.nextvod.com.tw/tw/vod/vodAction.do?method=vodListing"&gt;電影、影集&lt;/a&gt;，有上百部片是免費的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;下面是實際畫質：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-n_qQwMa2Vqs/TZ76UVVmLdI/AAAAAAAAC2Y/2YludUbTGNs/s1600/P1010797.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-n_qQwMa2Vqs/TZ76UVVmLdI/AAAAAAAAC2Y/2YludUbTGNs/s400/P1010797.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5593183014472789458" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;有興趣地&lt;a href="https://www.nextvod.com.tw/tw/g/signup.jsp?accountid=MTAwMDA4OTY1Mw==&amp;amp;r=QbAAurCv&amp;amp;linkkey=914424fb8fe4554838fffc67a86cb622&amp;amp;utm_source=SNS&amp;amp;utm_medium=EDM&amp;amp;utm_term=social_media&amp;amp;utm_content=url&amp;amp;utm_campaign=SNS"&gt;免費申請一台&lt;/a&gt;吧! 只要有 Email 、手機號碼及真實地址(它才能寄機上盒給你呀!)就能申請。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-6942438627963466021?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/6942438627963466021/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/04/hd.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6942438627963466021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6942438627963466021'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/04/hd.html' title='廣告：申辦壹網樂機上盒(免費收看壹電視新聞及多部電影)'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-n_qQwMa2Vqs/TZ76UVVmLdI/AAAAAAAAC2Y/2YludUbTGNs/s72-c/P1010797.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-886806804717489141</id><published>2011-03-31T12:30:00.001+08:00</published><updated>2011-03-31T12:47:30.481+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>雙語幼稚園的外籍教師在美國的職業是乞丐??</title><content type='html'>&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/H1HPasuvQW8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;(感謝 Youtube ，讓我重新看到十多年前的廣告)&lt;br /&gt;&lt;br /&gt;上面是一家美語補習班(空X英語教家)的廣告。片頭一開始是兩個乞丐在街頭乞討，但生意不好，所以其他一個人就用英文對另一個人說：「聽說到台灣教英語很好賺!」&lt;br /&gt;&lt;br /&gt;他們目的是要表達補習班內的教師都是合格的教師，不是阿狗阿貓。但這個廣告在台灣應該是失敗的，因為該補習班只提醒了台灣人，要注意你的外籍教師是不是乞丐，但卻無法教會台灣人如何分辦那些是合格教師，那些是阿狗阿貓，所以這個廣告傷害了所有補習班的利益，打破台灣人崇洋的心態，間接也降低學習英語的動機。所以沒多久，這廣告就不再出現了。&lt;br /&gt;&lt;br /&gt;我個人十分喜歡這個廣告，它是一個非常真實的例子，讓我們不要看到金頭髮、藍眼睛的人就覺得他了不起，另外也是在激勵我，會講英語的人也不過是當乞丐，我講得不好，沒關係啦!&lt;br /&gt;&lt;br /&gt;這個例子也告訴我們，不是會講英語就從此與白馬王子(公主)幸福快樂地過一輩子了。講英語的人也是要看結構學、生物學、基礎物理、管理數學…的書，才可以當土木工程師、醫師、物理學家、經理…。&lt;br /&gt;&lt;br /&gt;美語該從小學起，愈早學愈好!這觀念與「如果睹定長大要開計程車，是不是 18 歲時馬上考駕照，開始上路，一開始賺的錢不多但 5 年、 10 年一定可以賺大錢，因為熟能生巧，開 10 年必定比開 5 年賺得多。」的道理相同，也跟「 50 歲的美國老頭所了解的字彙比 24 歲的美國博士生多」一樣，&lt;span style="color: rgb(204, 0, 0);"&gt;都是屁話&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hoamon.blogspot.com/2007/08/blog-post_16.html"&gt;大學不是職業訓練所，而是要追求宇宙的精神&lt;/a&gt;一文中，提到我們有時候該花點時間在未知的事物，眼前美景是過往雲煙，該趁美景未逝前，找到下一個美景。&lt;br /&gt;&lt;br /&gt;所以當美語是強勢語言時，我們的爸爸媽媽瘋狂地送小朋友上雙語/純美語幼稚園，我們的青年學子/上班族們報名美語補習班，期望「能與外國人溝通」能成為他們在未來職涯的助力。&lt;br /&gt;&lt;br /&gt;但我們忘了美國人的工作專長並不是「他能與其他美國人溝通」，而是他能了解/善用領域專長，及國際化觀念，在對的事(效能)上面用對的方法(效率)。&lt;br /&gt;&lt;br /&gt;我們忘了美語只是工具，不是神話，當台灣農民苦哈哈時，我們不能援引美國農業補助政策來告訴政府你作的太少。當原油價格持續上漲時，我們無法期待政府給我們替代能源。因為我們人民自己只知道學好美語，但卻不知道該去看 &lt;a href="http://www.cnn.com/"&gt;CNN&lt;/a&gt;, &lt;a href="http://www.usa.gov/"&gt;USA&lt;/a&gt;, &lt;a href="http://europa.eu/index_en.htm"&gt;EUROPA&lt;/a&gt; 來了解世界如何變化。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-886806804717489141?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/886806804717489141/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2007/10/blog-post_1929.html#comment-form' title='12 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/886806804717489141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/886806804717489141'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2007/10/blog-post_1929.html' title='雙語幼稚園的外籍教師在美國的職業是乞丐??'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/H1HPasuvQW8/default.jpg' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-2527418225345922144</id><published>2011-03-16T07:32:00.003+08:00</published><updated>2011-03-16T07:43:24.028+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='joke'/><title type='text'>該砍掉右腿嗎?</title><content type='html'>某天，老婆和我吵架。在爭執了一段時間後，我們進行了以下對話：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;老婆：「我是不是你最愛的人?」&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;我：「我才是我這世界上最愛的人!」&lt;br /&gt;&lt;br /&gt;…(大家沉默了一段時間)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;老婆：「那你離開我之後，你不會難過囉~」&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;我：「我不知道。」&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;老婆：「你又有什麼好難過的，我又不是你最愛的人。」&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;我：「左腳是我的最愛，右腿第二，妳要我砍掉右腿嗎?」&lt;br /&gt;&lt;br /&gt;老婆笑了。&lt;br /&gt;&lt;br /&gt;我實在難以想通「女人的想法」，因為「到底是不是最愛的人?」這件事跟我們一開始爭執的問題根本沒有關係。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-2527418225345922144?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/2527418225345922144/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/03/blog-post_16.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2527418225345922144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2527418225345922144'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/03/blog-post_16.html' title='該砍掉右腿嗎?'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4605093045896581224</id><published>2011-03-13T22:57:00.006+08:00</published><updated>2011-03-13T23:38:50.060+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>有幸一睹「槍炮、病菌與鋼鐵：人類社會的命運」</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://im1.book.com.tw/exep/lib/image.php?image=http://addons.books.com.tw/G/001/5/0010069715.jpg&amp;width=200&amp;height=280&amp;quality=80"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 280px;" src="http://im1.book.com.tw/exep/lib/image.php?image=http://addons.books.com.tw/G/001/5/0010069715.jpg&amp;width=200&amp;height=280&amp;quality=80" border="0" alt="" /&gt;&lt;/a&gt; &lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010069715"&gt;From 博客來&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;真是該死呀! 當初在大學時，就有機會讀讀這本書，只是當時對於這本書的書名：「槍炮、病菌與鋼鐵」實在沒啥興趣，也不曉得原來它談論的是人類歷史，根本就沒拿來翻翻。不若「歷史之終結與最後一人」來得響亮，結果這本「歷史之終結與最後一人」，我至今還沒看懂，冤枉了荷包。&lt;br /&gt;&lt;br /&gt;讀著這本書，讓我想到許多過去想過但不一定有解的事情：「該不該撲殺外來種?」、「台灣抗日的意義在那裡? 個人的國家定位何在?」、「到底該不該吃素?」、「K策略與R策略那個好?」、「人的成功條件中，運氣重不重要?」、「為什麼有些植物比較好吃?其他則否!」、「宗教是用來更有效地統治人民?」。&lt;br /&gt;&lt;br /&gt;且給我多一點時間再次細讀這本書，讓我把這些問題好好地整理才分享給大家。&lt;br /&gt;&lt;br /&gt;今天發這篇文的目的，只是告訴大家：『「槍炮、病菌與鋼鐵：人類社會的命運」真是一本重要且有趣的書』。事實上，看完這本書後，我又去博客來買了該作者的另二本書：「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010007963"&gt;第三種猩猩：人類的身世及未來&lt;/a&gt;」、「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010323100"&gt;大崩壞&lt;/a&gt;」。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4605093045896581224?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4605093045896581224/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/03/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4605093045896581224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4605093045896581224'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/03/blog-post.html' title='有幸一睹「槍炮、病菌與鋼鐵：人類社會的命運」'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-7154480767751965727</id><published>2011-02-26T13:47:00.001+08:00</published><updated>2011-10-02T11:19:36.762+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>「投資人宣言」讀後感</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://im1.book.com.tw/exep/lib/image.php?image=http://addons.books.com.tw/G/001/6/0010486326.jpg&amp;width=200&amp;height=280&amp;quality=80"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 280px;" src="http://im1.book.com.tw/exep/lib/image.php?image=http://addons.books.com.tw/G/001/6/0010486326.jpg&amp;width=200&amp;height=280&amp;quality=80" border="0" alt="" /&gt;&lt;/a&gt; From &lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010486326"&gt;博客來&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這書裡講的概念，大概都在&lt;a href="http://greenhornfinancefootnote.blogspot.com"&gt;綠角投資筆記&lt;/a&gt;、約翰．柏格以及威廉．伯恩斯坦(同本書作者)的書中看過了，像是&lt;ul&gt;&lt;li&gt;高報酬往往伴隨著高風險，但高風險不一定帶來高報酬&lt;/li&gt;&lt;br /&gt;&lt;li&gt;分散式投資： 金錢投資的目的並不是獲取暴利，而是安穩、優雅地渡過退休生活&lt;/li&gt;&lt;br /&gt;&lt;li&gt;好公司，大多是壞股票; 壞公司，整體而言，是好股票&lt;/li&gt;&lt;br /&gt;&lt;li&gt;主動投資長期績效往往不如被動投資&lt;/li&gt;&lt;br /&gt;&lt;li&gt;績效來來去去只有成本是固定的&lt;/li&gt;&lt;br /&gt;&lt;li&gt;金融從業人員不一定是站在客戶的立場&lt;/li&gt;&lt;br /&gt;&lt;li&gt;如何作好資產配置(股債比)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;掌握好個人的人力資本&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;所以一直以來，我愛當金融保險業者的股東勝於當他們的顧客，努力學習程式設計及其他學問提升個人人力資本，先投資自己才作金融投資，並且分散式地購買各種類股(不過，金融股還是佔了半數)，達到「&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010226097"&gt;如何閱讀一本書&lt;/a&gt;」中所提之「贊同實用書之後，你應該實踐書中理論」(在第十三章)。&lt;br /&gt;&lt;br /&gt;不過，我的實踐也還不到百分百，像是國內債券及國外股債這二項，我的資產比例還是 0% 。有鑑於此，我開始研究 &lt;a href="http://tw.stock.yahoo.com/q/bc?s=006202"&gt;006202寶富盈&lt;/a&gt; ETF 。過陣子，再向大家報告。&lt;br /&gt;&lt;br /&gt;另外，這本書帶給我惟一的新收獲就是「高經濟成長體，不見得是好投資對象」，但理由並不是「好公司，爛股票; 爛公司，好股票」。所謂的「好公司，爛股票」是因為投資人偏好好公司致使其股票的風險貼水減少所以實質報酬率降低。然則在本書中，作者實際提出中國、印尼、南韓、…台灣等亞洲新興市場國家與美國在 1988 ~ 2008 年之間的年化 GDP 、 年化名目股市報酬率比較表(表2.3)，從表中，可看到美國以 2.77% 的 GDP 數字卻能提供股市投資人 8.8% 的股市報酬，但中國以 9.61% 的 GDP 卻只能帶來 &lt;span style="font-weight:bold;"&gt;-&lt;/span&gt;3.31% 的股市報酬，原因在於&lt;span style="font-weight:bold;"&gt;「股票稀釋和安全法規不足而發生的明目張膽竊取」&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;這現象帶給我相當大的震憾，原來法治國家的好處是這麼棒。中國股市的這種表現也才與我的日常經驗搭上線。因為一直以來，聽別人說：「在大陸作生意，給公務員的額外費用是明明白白、清清楚楚的規費」，而這些沒放到國家口袋，從公司股東口袋搬出來的錢，果然是有反應在股市報酬率上。&lt;br /&gt;&lt;br /&gt;雖然台灣的數據是贏過中國大陸的，但這也沒什麼好高興的。至今，我們親愛的同胞： 王又曾、曾正仁、陳由豪、朱安雄同志都還在海外過著顛沛流離的生活，什麼時候才能盼著他們回到溫暖的故鄉：「台灣」呀!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-7154480767751965727?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/7154480767751965727/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2010/11/blog-post_15.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7154480767751965727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/7154480767751965727'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2010/11/blog-post_15.html' title='「投資人宣言」讀後感'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-2409958986040256625</id><published>2011-01-27T16:33:00.007+08:00</published><updated>2011-01-27T17:13:38.405+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>近 250% 的報酬率，我前所未有的紀錄</title><content type='html'>這是繼&lt;a href="http://hoamon.blogspot.com/2009/05/60.html"&gt; 60% 的漲幅&lt;/a&gt;後，再一次突破我個人的紀錄。這一切要歸功於 &lt;a href="http://www.htc.com/"&gt;HTC&lt;/a&gt; 。&lt;br /&gt;&lt;br /&gt;當時外資紛紛看衰它，而我因為 HTC 幫 Google 代工自有品牌 Nexus One 手機這件事，對它非常有好感。也就在 330 元時，買了 80 股，而後又配了 4 股及幾千元的現金，成本也就降到 279 元。今天(2011-01-27)它股價收在 975 元，報酬率達 249% 。&lt;br /&gt;&lt;br /&gt;千金難買早知道，如果當時我把手邊的錢全押在 HTC 上，總報酬率就是 249% ，而不是現在的 13% 。&lt;br /&gt;&lt;br /&gt;然而我有這個屁股吃這種瀉藥嗎? 應該是沒有! 股票不會只漲不跌的。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eKM9lHjTZjs/TUE0VJ-spaI/AAAAAAAAC00/Q8vkTpPmz_s/s1600/Screenshot-3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 192px;" src="http://4.bp.blogspot.com/_eKM9lHjTZjs/TUE0VJ-spaI/AAAAAAAAC00/Q8vkTpPmz_s/s400/Screenshot-3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5566788152467432866" /&gt;&lt;/a&gt;&lt;br /&gt;如果手裡的股票只有宏達電，那它從 760 元下殺到 618 元時，我忍耐的住嗎? 就因為害怕所以在 730 元賣了 24 股。又或者能忍得住但我能睡得著嗎? 之前只擁有&lt;a href="http://www.giant-bicycles.com/"&gt;巨大&lt;/a&gt;時，就知道我的個性不是那種可以大而化之的人。&lt;br /&gt;&lt;br /&gt;重壓宏達電勢必讓我沒有生活品質，而且這是我運氣好，如果重壓的是茂德，那故事就沒那麼有趣了。&lt;br /&gt;&lt;br /&gt;有趣的是，因為現在擁有茂德、雷虎、台航…這些讓我賠錢的股票，反而我才睡得著覺。這就是被動投資呀!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-2409958986040256625?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/2409958986040256625/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/250.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2409958986040256625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/2409958986040256625'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/250.html' title='近 250% 的報酬率，我前所未有的紀錄'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eKM9lHjTZjs/TUE0VJ-spaI/AAAAAAAAC00/Q8vkTpPmz_s/s72-c/Screenshot-3.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-527503603709448865</id><published>2011-01-24T23:20:00.002+08:00</published><updated>2011-01-24T23:28:55.689+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='paypal'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>使用 PayPal Express Checkout 作線上收款機制</title><content type='html'>若你不太了解什麼是金流系統，可以先去看「&lt;a href="http://hoamon.blogspot.com/2011/01/blog-post_24.html"&gt;簡述金流系統&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;消費者在線上購買商品或勞務，所謂的付款其實只牽扯到兩件事：『身份驗證』及『確認額度』。但這兩件事都是特許公司如銀行或信用卡公司才能作的事。所以我們得透過中間人或中間人的中間人(金流公司)幫我們作到這兩件事，而我選的是 PayPal ，它是跨國的金流公司，我個人認為十分適合純網際網路公司使用。&lt;br /&gt;&lt;br /&gt;從誰那裡匯多少錢到誰那裡? 有三個變數：『付款的人』、『付多少』及『收款人』。這『收款人』當然是我們自己的公司囉。在程式中設定收款帳戶只要設定『帳戶名稱(USERNAME)』、『密碼(PASSWORD)』及『簽名(SIGNATURE)」就行了，如何申請這三種資料請看我的另篇&lt;a href="http://hoamon.blogspot.com/2011/01/paypal-express-checkout-api.html"&gt;文章&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;而『付多少』的設定變數名則為 AMT 。但在消費者刷卡時，要讓他明確地了解買的東西到底有什麼? 價錢是多少? 要刷多少錢? 我們得另外設定訂單的顯示變數。有商品名稱(L_NAME0)、商品描述(L_DESC0)、商品編號(L_NUMBER0)、購買數量(L_QTY0)、商品單價(L_AMT0)、所有商品小計(ITEMAMT)、運送及處理費用(SHIPPINGAMT)、稅金(TAXAMT)等。&lt;br /&gt;&lt;br /&gt;這些變數後有帶 0 的表示它可以是多值，如果該筆訂單有第二項商品的話，就設定 L_NAME1 、 L_DESC1 、 L_NUMBER1 、 L_QTY1 、 L_AMT1 ，以此類推。&lt;br /&gt;&lt;br /&gt;這些訂單顯示變數有幾項原則：&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;ITEMAMT 必須等於 L_AMT0 * L_QTY0 + L_AMT1 * L_QTY1 + ... + L_AMTn * L_QTYn&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;AMT 必須等於 ITEMAMT + SHIPPINGAMT + TAXAMT&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;違反這兩個原則， PayPal 會報錯的。&lt;br /&gt;&lt;br /&gt;而『付款的人』部份就不是我們程式設計師該處理的，這部份交由 PayPal 自己與消費者確認卡號是否正確、與發卡銀行確認是否允許消費者刷該筆訂單的金額。等到 PayPal 作完『身份確認』及『額度確認』後，PayPal 會回傳一個 TOKEN ，告知我們消費者有能力消費該筆訂單，如果我們接受該筆交易，就以這個 TOKEN 回覆給 PayPal ，那它就幫我們刷下消費者的卡片了。之後就能在 PayPal 的帳務管理介面中看到消費者的付款紀錄。&lt;br /&gt;&lt;br /&gt;上面的觀念了解了，我們這就進行程式的實作吧!&lt;br /&gt;&lt;br /&gt;PayPal 的付款程序要經過 3 次的 API 呼叫，分別是 SetExpressCheckout, GetExpressCheckoutDetails, DoExpressCheckoutPayment 。&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;SetExpressCheckout 是整理好一份訂單資訊供消費者瀏覽。&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;GetExpressCheckoutDetails 是抓取當次交易的詳細資訊，但不包含消費者的卡號。&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;DoExpressCheckoutPayment 要求 PayPal 對消費者進行刷卡動作，完成交易。&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;而消費者瀏覽網頁順序則是『我們的訂單頁面』=&gt;『確定購買』=&gt;『SetExpressCheckout』=&gt;『PayPal 付款頁』=&gt;『PayPal 確認頁』=&gt;『GetExpressCheckoutDetails+DoExpressCheckoutPayment』=&gt;『我們的購買成功頁面』。&lt;br /&gt;&lt;br /&gt;我們自己所寫的『確定購買』程式中，會紀錄消費者的購買資訊，產生訂單編號，完成後執行 SetExpressCheckout API 呼叫動作。所謂的呼叫，其實不過就像是 html 中的 form submit 。很懶惰的作法是輸出一個如下的 html 表單，然後要求消費者自己手動按下送出鈕。&lt;br /&gt;&lt;br /&gt;&lt;pre class="vim"&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;form&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;method&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;POST&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;action&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&lt;a href="https://api-3t.paypal.com/nvp"&gt;https://api-3t.paypal.com/nvp&lt;/a&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;USER&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_username_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;PWD&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot; API_password_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SIGNATURE&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_signature_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_NAME0&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;test_product_name&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_DESC0&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;test_description&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_NUMBER0&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;test1&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_QTY0&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;1&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_AMT0&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;85&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;ITEMAMT&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;85&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SHIPPINGAMT&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;10&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;TAXAMT&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;5&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;AMT&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;100&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;submit&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;METHOD&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SetExpressCheckout&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;VERSION&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;63.0&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;CURRENCYCODE&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;TWD&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;PAYMENTACTION&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;Sale&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;CANCELURL&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&lt;a href="http://www.YourCancelURL.com"&gt;http://www.YourCancelURL.com&lt;/a&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;hidden&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;RETURNURL&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ff00"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&lt;a href="http://www.YourReturnURL.com"&gt;http://www.YourReturnURL.com&lt;/a&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;lt;/&lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;form&lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;這裡有幾個地方要注意， form method 一定是 POST ， form action 一定是 https://api-3t.paypal.com/nvp ，input name="METHOD" 的 value 一定是 SetExpressCheckout 。&lt;br /&gt;&lt;br /&gt;VERSION 代表你呼叫的 API 版本是多少，版本號太小的 API ，可能會有些參數不支援。不過，以我使用的經驗，上面的參數都能跑在 53 ~ 63 之間。但能設得愈大愈好。&lt;br /&gt;&lt;br /&gt;而 CURRENCYCODE 代表收取的幣別， TWD 代表新台幣， USD 代表美金，其他貨幣請參閱&lt;a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&amp;content_ID=developer/e_howto_api_nvp_currency_codes"&gt;這裡&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;PAYMENTACTION 的值有三種： Sale, Authorization, Order ， Sale 表一般銷售，消費者要買，你一定賣; Authorization 表須確認的銷售，如消費者要買 Giant 的 TCR SL 3 車架，但貴公司沒建置庫存管理，所以消費者下單後，你得到大如足球場的倉庫去找，找得到就賣，找不到只好跟消費者 Say Sorry! Order 表須更長時間的確認銷售，像 Authorization 最多只會在帳務管理系統中等 3 天讓你按下請款鈕，但 Order 可以等到 29 天。&lt;br /&gt;&lt;br /&gt;CANCELURL 是當消費者在 PayPal 付款頁中，反悔了，在他取消交易時， PayPal 會導引他回到你的網站。&lt;br /&gt;&lt;br /&gt;RETURNURL 是當消費者在 PayPal 確認頁按下「立即付款」， PayPal 會導引他回到你的網站，理論上，這個網頁就是你執行 GetExpressCheckoutDetails + DoExpressCheckoutPayment 的地方。&lt;br /&gt;&lt;br /&gt;從這個 html form 範例中，可以了解呼叫 SetExpressCheckout API 真的是非常簡單的事，只要把握正確的 name - value pair(nvp) 即可。&lt;br /&gt;&lt;br /&gt;不過我們是 Python 程式設計師，怎麼能用 html form 這麼簡單的東西來呼叫 API ，當然要用 urllib 囉! 把下面的程式插到『確定購買』程式的最後面，這樣就不用消費者自己手動按送出鈕了。&lt;br /&gt;&lt;br /&gt;&lt;pre class="vim"&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;google.appengine.api &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;urlfetch&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;urllib&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;string_hash = {&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;USER&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_username_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;PWD&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot; API_password_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SIGNATURE&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_signature_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_NAME0&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;test_product_name&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_DESC0&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;test_description&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_NUMBER0&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;test1&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_QTY0&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;1&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;L_AMT0&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;85&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;ITEMAMT&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;85&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SHIPPINGAMT&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;10&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;TAXAMT&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;5&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;AMT&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;100&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;METHOD&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SetExpressCheckout&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;VERSION&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;63.0&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;CURRENCYCODE&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;TWD&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;PAYMENTACTION&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;Sale&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;CANCELURL&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&lt;a href="http://www.YourCancelURL.com"&gt;http://www.YourCancelURL.com&lt;/a&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;RETURNURL&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&lt;a href="http://www.YourReturnURL.com"&gt;http://www.YourReturnURL.com&lt;/a&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/font&gt;}&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/font&gt;form_data = urllib.urlencode(string_hash)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/font&gt;result = urlfetch.fetch(url=&lt;font color="#ff40ff"&gt;&lt;b&gt;'&lt;a href="https://api-3t.paypal.com/nvp"&gt;https://api-3t.paypal.com/nvp&lt;/a&gt;'&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;payload=form_data,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;method=urlfetch.POST,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;headers={&lt;font color="#ff40ff"&gt;&lt;b&gt;'Content-Type'&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;'application/x-www-form-urlencoded'&lt;/b&gt;&lt;/font&gt;},&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;deadline=&lt;font color="#ff40ff"&gt;&lt;b&gt;10&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;21 &lt;/b&gt;&lt;/font&gt;hash = {}&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;22 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;result.content.split(&lt;font color="#ff40ff"&gt;&lt;b&gt;'&amp;amp;'&lt;/b&gt;&lt;/font&gt;):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;23 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k, v = i.split(&lt;font color="#ff40ff"&gt;&lt;b&gt;'='&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;24 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hash[k] = urllib.unquote(v)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;25 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;26 &lt;/b&gt;&lt;/font&gt;redirect_url = &lt;font color="#ff40ff"&gt;&lt;b&gt;'&lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;amp;useraction=commit&amp;amp;token=%s"&gt;https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;amp;useraction=commit&amp;amp;token=%s&lt;/a&gt;'&lt;/b&gt;&lt;/font&gt;&amp;nbsp;% hash[&lt;font color="#ff40ff"&gt;&lt;b&gt;'TOKEN'&lt;/b&gt;&lt;/font&gt;]&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;27 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;HttpResponseRedirect(redirect_url)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;跑到 redirect_url 網址後，就是 PayPal 自己與消費者互動的網頁，等到消費者確定付款了，就會再轉回我們的 RETURNURL 程式。在 RETURNURL 頁面中，首先呼叫 GetExpressCheckoutDetails 得到該 token 所對應的付款資訊。然後再執行 DoExpressCheckoutPayment 即可完成信用卡刷卡動作。&lt;br /&gt;&lt;br /&gt;&lt;pre class="vim"&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# exec GetExpressCheckoutDetails&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;token = request.GET.get(&lt;font color="#ff40ff"&gt;&lt;b&gt;'token'&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;string_hash = {&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;USER&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_username_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;PWD&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot; API_password_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SIGNATURE&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_signature_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;METHOD&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;GetExpressCheckoutDetails&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;VERSION&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;63.0&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;TOKEN&amp;quot;&lt;/b&gt;&lt;/font&gt;: token,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;}&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;form_data = urllib.urlencode(string_hash)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;result = urlfetch.fetch(url=&lt;font color="#ff40ff"&gt;&lt;b&gt;'&lt;a href="https://api-3t.paypal.com/nvp"&gt;https://api-3t.paypal.com/nvp&lt;/a&gt;'&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;payload=form_data,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;method=urlfetch.POST,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;headers={&lt;font color="#ff40ff"&gt;&lt;b&gt;'Content-Type'&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;'application/x-www-form-urlencoded'&lt;/b&gt;&lt;/font&gt;},&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;deadline=&lt;font color="#ff40ff"&gt;&lt;b&gt;10&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/font&gt;hash = {}&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;result.content.split(&lt;font color="#ff40ff"&gt;&lt;b&gt;'&amp;amp;'&lt;/b&gt;&lt;/font&gt;):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k, v = i.split(&lt;font color="#ff40ff"&gt;&lt;b&gt;'='&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hash[k] = urllib.unquote(v)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;hash[&lt;font color="#ff40ff"&gt;&lt;b&gt;'ACK'&lt;/b&gt;&lt;/font&gt;] != &lt;font color="#ff40ff"&gt;&lt;b&gt;'Success'&lt;/b&gt;&lt;/font&gt;:&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;21 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_messages = []&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;22 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;k, v &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;hash.items():&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;23 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_messages.append(&lt;font color="#ff40ff"&gt;&lt;b&gt;'%s: %s'&lt;/b&gt;&lt;/font&gt;%(k, v))&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;24 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;raise&lt;/b&gt;&lt;/font&gt;&amp;nbsp;Exception(&lt;font color="#ff40ff"&gt;&lt;b&gt;';&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff6060"&gt;&lt;b&gt;\n&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;'&lt;/b&gt;&lt;/font&gt;.join(error_messages))&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;25 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;26 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# exec DoExpressCheckoutPayment&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;27 &lt;/b&gt;&lt;/font&gt;string_hash = {&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;28 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;USER&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_username_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;PWD&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot; API_password_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;29 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;SIGNATURE&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;API_signature_do_not_copy_me&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;METHOD&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;DoExpressCheckoutPayment&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;30 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;VERSION&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;63.0&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;TOKEN&amp;quot;&lt;/b&gt;&lt;/font&gt;: token,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;31 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;AMT&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;100&amp;quot;&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;CURRENCYCODE&amp;quot;&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;TWD&amp;quot;&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;32 &lt;/b&gt;&lt;/font&gt;}&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;33 &lt;/b&gt;&lt;/font&gt;form_data = urllib.urlencode(string_hash)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;34 &lt;/b&gt;&lt;/font&gt;result = urlfetch.fetch(url=&lt;font color="#ff40ff"&gt;&lt;b&gt;'&lt;a href="https://api-3t.paypal.com/nvp"&gt;https://api-3t.paypal.com/nvp&lt;/a&gt;'&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;35 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;payload=form_data,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;36 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;method=urlfetch.POST,&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;37 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;headers={&lt;font color="#ff40ff"&gt;&lt;b&gt;'Content-Type'&lt;/b&gt;&lt;/font&gt;: &lt;font color="#ff40ff"&gt;&lt;b&gt;'application/x-www-form-urlencoded'&lt;/b&gt;&lt;/font&gt;},&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;38 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;deadline=&lt;font color="#ff40ff"&gt;&lt;b&gt;10&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;39 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;40 &lt;/b&gt;&lt;/font&gt;hash = {}&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;41 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;result.content.split(&lt;font color="#ff40ff"&gt;&lt;b&gt;'&amp;amp;'&lt;/b&gt;&lt;/font&gt;):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;42 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k, v = i.split(&lt;font color="#ff40ff"&gt;&lt;b&gt;'='&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;43 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hash[k] = urllib.unquote(v)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;44 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;45 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;hash[&lt;font color="#ff40ff"&gt;&lt;b&gt;'ACK'&lt;/b&gt;&lt;/font&gt;] != &lt;font color="#ff40ff"&gt;&lt;b&gt;'Success'&lt;/b&gt;&lt;/font&gt;:&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;46 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_messages = []&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;47 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;k, v &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;hash.items():&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;48 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_messages.append(&lt;font color="#ff40ff"&gt;&lt;b&gt;'%s: %s'&lt;/b&gt;&lt;/font&gt;%(k, v))&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;49 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;raise&lt;/b&gt;&lt;/font&gt;&amp;nbsp;Exception(&lt;font color="#ff40ff"&gt;&lt;b&gt;';&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff6060"&gt;&lt;b&gt;\n&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;'&lt;/b&gt;&lt;/font&gt;.join(error_messages))&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;50 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;51 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;HttpResponseRedirect(&lt;font color="#ff40ff"&gt;&lt;b&gt;'&lt;a href="http://www.YourThankURL.com/"&gt;http://www.YourThankURL.com/&lt;/a&gt;'&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;就這樣，你會在 PayPal 的帳務管理系統中，看到消費者的付款紀錄。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-527503603709448865?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/527503603709448865/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/paypal-express-checkout.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/527503603709448865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/527503603709448865'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/paypal-express-checkout.html' title='使用 PayPal Express Checkout 作線上收款機制'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-5757675106453005195</id><published>2011-01-24T14:16:00.005+08:00</published><updated>2011-11-22T10:06:37.773+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='paypal'/><title type='text'>簡述金流系統</title><content type='html'>網路改變了現代人很多的生活模式。論就原理，它不過是快速傳遞資訊而已，結果它可以把傳統語音訊號改成語音封包變成網路電話，而平面的郵購清單改成動態的網頁表單變成線上銷售，其實它的原理真的就只是能加快資訊傳輸的速度而已，但這「量變」卻造成「質變」。&lt;br /&gt;&lt;br /&gt;金流也是。事實上，當各國央行放棄金本位制度後，所謂的貨幣就不過是個「數字」而已，美國聯準會可以搞 QE1, QE2, QE3 … 的原因，不是它美鈔可以印得比別人快，以 QE2 的規模 6000 億美元來看，美國印鈔局真有辦法在不到 1 年的時間印出 6000 億美元的鈔票嗎? 這還不算它本來就得應付的舊鈔換新鈔需求喔! 美鈔最大額不過是 100 元，印這個太慢了，所以它們印的是美國公債，隨便印都是 10 萬起跳的。當它們想要為金融體系注資時，就把當初發行的公債買回來就行了，而且還不用給現金，在資產負債表上掛帳就行了，可參閱&lt;a href="http://www.libertytimes.com.tw/2011/new/jan/12/today-e1.htm"&gt;聯準會買債券賺到784億美元&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;再以我們中央銀行為例，目前 3 千多億美金的外匯存底，真的是有實體資產放在央行的保險庫嗎? 當外資從紐約匯進 10 億美金，不過就是把某家銀行的美金數字換放到另一家銀行去就行了，根本不用搬真的錢進到台灣。所以金流根本就是資訊流，流通的資訊主要就是兩種，誰匯給誰以及匯多少。「誰匯給誰」關係『身份認證』這種事，而「匯多少」則部份與匯款人的額度也就是『身份認證』有關，剩下的部份就只是數字而已。&lt;br /&gt;&lt;br /&gt;說起來金流還比通信網路簡單，至少它不需要使用者另外準備耳機及麥克風。以早期的資訊管理系統來說，會計系統通常是最早建置的，因為它們也只關乎數字。&lt;br /&gt;&lt;br /&gt;金流系統聽起來這麼簡單，那我們會寫程式，會作資訊系統的人還不趕快來寫一套!&lt;br /&gt;&lt;br /&gt;哈哈哈! 我就知道你不信我，金流系統如果怎麼簡單，怎麼沒聽說過那個大學沒畢業的有開發出來，到是有聽過沒畢業的人可以寫出社交網站; 但如果不簡單，怎麼天底下那麼多家銀行，幾乎每家都有金流系統，但也就那麼一個社交網站有著幾億人的使用者。&lt;br /&gt;&lt;br /&gt;嘻! 這說法有沒有想到&lt;a href="http://www.chiculture.net/1104/html/1104b13/1104b13.html"&gt;日近長安遠&lt;/a&gt;的故事。&lt;br /&gt;&lt;br /&gt;原因不在程式難寫，而是『身份認證』太難。各位有聽過『軟體公司法』嗎? 乃規範軟體公司如何撰寫程式，收費標準以及沒事得接受政府檢查的法律，但是卻有銀行法及金管會，規範營業櫃台可放什麼，不可放什麼，能收取的利率上限為何，以及不定期與主管機關喝喝咖啡。&lt;br /&gt;&lt;br /&gt;我們隨便寫個網站讓大家使用時，有沒有要使用者親自到公司櫃台辦理，而且還要帶雙證件及本人拍照喔! 沒有嘛! 因為銀行、信用卡公司都是特許行業，政府沒點頭，一般人是不能開的。你開公司時，在營業項目上面通常是高興拉多少就拉多少，開軟體公司能不能賣書? 可以! 能不能賣服飾? 可以! 但能不能寫個 H101021  商業銀行業? 我包你會被經辦人員白眼，嗆你一句：「請找個有正常腦袋的會計師幫你申請!」&lt;br /&gt;&lt;br /&gt;於是乎，我們一般人寫金流系統，都需要找個代理人，幫我們作『身份認證』及『額度確認』的動作。那就是銀行提供的線上刷卡服務或是網路ATM系統，然而如果我們是跟玉山銀行(收單銀行)申請收款服務的，但消費者拿的是第一銀行(發卡銀行)的信用卡或是提款卡時，玉山銀行怎麼知道是真的卡還是假的? 它們得透過&lt;a href="http://www.fisc.com.tw/"&gt;財金公司&lt;/a&gt;的金資系統作跨行查詢，信用卡則是透過信用卡組織像是 &lt;a href="http://www.blogger.com/www.visa-asia.com"&gt;visa&lt;/a&gt; 、 &lt;a href="http://www.mastercard.com/tw/"&gt;mastercard&lt;/a&gt; 與發卡銀行查詢，在臺灣則用&lt;a href="http://www.nccc.com.tw/"&gt;聯合信用卡中心&lt;/a&gt;作中介。&lt;br /&gt;&lt;br /&gt;也因為金流系統真的只是數字交換而已，難作的『身份認證』及『額度開放』都被銀行、信用卡公司作完了，於是乎就有金流公司的誕生，它們整合 WebATM 匯款、信用卡刷卡甚至超商繳費，只要你跟它們簽約，每年繳個閘道服務費，就提供 API 使用。而我們程式設計師只要知道傳什麼參數給它就成了。因為簡單，所以就得付出代價，每筆交易的手續費大概是花 2.8 ~ 3.4 % 之間，比買股票還貴，平平都是數字，轉 100 元扣 3 塊，轉 1000000000 扣 3 億，這不過是多 7 個零而已。&lt;br /&gt;&lt;br /&gt;撰寫金流系統前，需要考慮的是『用誰的 API 』，有國內銀行、金流公司及 PayPal 等。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;國內銀行：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;通常你的公司帳戶開在那家銀行，就跟它們合作，好處是有關係有優惠，如果公司進出金額又大時，手續費會比較容易砍，而且消費者刷卡、匯款後，錢是馬上匯到公司戶頭。缺點是國內銀行的 API 不好用，不要以為它們的資本額動輒幾百億上下，寫的網站就比較厲害，這不見得。它們的本業是賺存放款利差，不是開軟體公司。或許我一竿子打翻一船人，非常歡迎提出反證，畢竟我沒看過國內所有銀行的 API 文件。因為不容易看得到，這一點我也覺得很奇怪，銀行居然會把 API 文件當作是機密，一定要簽約後，才能看到全貌，憑這一點，我就不想用銀行的系統了。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;金流公司：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;好處是它們的軟體實力比較好， API 考慮比較周延，付款種類較多，入帳管理系統也比較好用，有意見的話也比較有改進的空間。而缺點是金流公司一大堆，不要找到二流的，二流的收款是先到金流公司戶頭，之後再轉到你的公司戶頭，出問題，錢是要不回來的。或是網路頻寬不夠，消費者要刷卡時，苦苦等不到刷卡頁面。甚至盜賣消費者資料。&lt;br /&gt;&lt;br /&gt;不過，&lt;a href="http://techorange.com/2011/08/15/paypal-ezpay-alipay/"&gt;金管會對金流公司不太爽&lt;/a&gt;，法令綁手綁腳的。難保那天被勒令停辦，你就頭痛了。又或者一個解決方案是利用金流公司協助申請『特店資格』，有了特店資格，你就可合法地提供信用卡刷卡服務。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PayPal:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;不須有公司登記，沒有建置費，可以跨國付款，軟體實力也是最高的，不只給個入帳管理系統，連帳務管理都有 API ，所以你高興還可以把帳務管理內建在自己的金流系統中，這樣你的會計就不用記兩組帳號、密碼，這邊登過來，那邊登過去了。缺點是它每筆交易收 3.4% + $10 TWD ，不算便宜。但是我們可以這樣想，公司不大時，用 PayPal 可以比較省成本，因為它少了上萬元的建置費，換算成 PayPal 手續費，大概可以抵上 1000 次，這對草創公司比較有利。另外還有一個不算缺點的缺點，它的 API 文件都是英文的，它沒有台灣辦公室，所以有程式問題要問，都得用英文問，像我就提了一個&lt;a href="https://www.x.com/message/195432#195432"&gt;問題&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;以我個人偏好來說，在小規模時，採用 PayPal 收款，大規模時，納入一流金流公司，而銀行則完全不考慮。&lt;br /&gt;&lt;br /&gt;這篇文章一開頭其實只是想講如何使用 PayPal Express Checkout 機制收款，結果落落長，到現在都還沒講到初衷，所以請看&lt;a href="http://hoamon.blogspot.com/2011/01/paypal-express-checkout.html"&gt;下篇&lt;/a&gt;來了解 Express Checkout 如何應用。&lt;br /&gt;&lt;br /&gt;== 後記 ==&lt;br /&gt;&lt;br /&gt;除了這三者收款管道外，我好像漏了&lt;a href="http://www.nccc.com.tw/"&gt;聯合信用卡中心&lt;/a&gt;的特約商店。等我有時間再補充吧!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-5757675106453005195?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/5757675106453005195/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/blog-post_24.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5757675106453005195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5757675106453005195'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/blog-post_24.html' title='簡述金流系統'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-1595294205481335312</id><published>2011-01-24T10:00:00.004+08:00</published><updated>2011-01-24T10:24:29.295+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='realty'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>房價很高嗎??? 年輕人要感謝投資客炒作房產!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTzel4Fp69I/AAAAAAAAC0s/mCgFrZDzSag/s1600/vlcsnap-2011-01-24-10h00m37s49.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 183px;" src="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTzel4Fp69I/AAAAAAAAC0s/mCgFrZDzSag/s400/vlcsnap-2011-01-24-10h00m37s49.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5565567981815720914" /&gt;&lt;/a&gt;Snap from Wall Street: Money Never Sleep&lt;br /&gt;&lt;br /&gt;上小學時，電視非常流行古裝劇，裡面往往有種角色：員外，他通常會經營布莊、中藥、鹽批發等生意。而他會有很多的奴才在店裡幫忙。我當時，覺得「有錢」真好，這樣就可以去買一些奴才回來，再要求他們為我賺錢，然後賺了錢後，再去買更多的奴才回來賺更多的錢。如果員外心地好一點，不要剝削奴才，他可以每個月發 5 兩白銀的薪水，然後只要求奴才賺 6 兩回來，這樣作生意很簡單呀!&lt;br /&gt;&lt;br /&gt;可是那時的這種想法，一直覺得有問題才是。因為這樣是真理的話，只要有點錢的人，去買了奴才回來，他就會變得愈有錢，所以賺錢應該不難才是呀! 可是，我聽大人們或是老師的談話，總覺我得很努力，以後才賺得到錢，他們都說：「賺錢沒那麼簡單」。&lt;br /&gt;&lt;br /&gt;長大後，我才了解「風險」及「管理技術」是賺錢的影響因素。並不是蛋一斤進價 18 元，銷價 25 元，就可以賺 7 元的，這其中有管理成本、供需、景氣等問題，所以拿錢去賺錢是有風險的，不是每次一定賺。&lt;br /&gt;&lt;br /&gt;所以每次聽到有人說：「投資客炒作房地產，一般民眾苦不堪言。」我就覺得他們只有小學程度。&lt;br /&gt;&lt;br /&gt;有錢的人作什麼事都賺錢的話，那國泰人壽、富邦人壽、新光人壽的錢那麼多，它們去投資房地產不是賺更多嗎? 結果從次貸風暴後，也只有富邦金的股價比之前高，國泰金差不多腰斬，而新光金更爛，還在面額左右，大概只有風暴前的四分之一。&lt;br /&gt;&lt;br /&gt;這三家壽險公司的錢還不算多，我們來看看一個更大經濟體的數據： NIKKEI 225 指數，因為當時還沒有 REIT 指數，所以拿了與房地產相關的日經 225 來看也差不多。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eKM9lHjTZjs/TRqt24dyw9I/AAAAAAAACyo/2zoXNVtRomA/s1600/nikkei_225.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 327px;" src="http://2.bp.blogspot.com/_eKM9lHjTZjs/TRqt24dyw9I/AAAAAAAACyo/2zoXNVtRomA/s400/nikkei_225.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5555944248696816594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;它三萬點的時候，當時到處充滿了日本第一的氣氛，不管是在物質上，連管理觀念也是，大家都視日本為導師，還有一本小說 &lt;a href=" http://en.wikipedia.org/wiki/Rising_Sun_(novel)"&gt;rising sun&lt;/a&gt; 是以那個時代作背景寫的。結果， 20 年過去了，日本房地產現在很了不起嗎! 而 20 年通常不過是一般人的三分之一到四分之一的歲月而已。&lt;br /&gt;&lt;br /&gt;人的一生，通常也只會買一次房子，你希望是在股市三萬點時買，還是一萬點買，要你等二十年(不是存錢存二十年喔!)，你願意嗎? 我很願意。股市、房地產指數來來去去，為什麼一定要在行情好的時候進場呢?&lt;br /&gt;&lt;br /&gt;更何況，&lt;a href="http://greenhornfinancefootnote.blogspot.com/2010/08/long-term-perspectives-on-current-boom.html"&gt;房地產根本不是好的投資商品&lt;/a&gt;。以抗通膨及增值角度言之，股票、債券才是更好的投資標的。&lt;br /&gt;&lt;br /&gt;但以整個人生來說，房地產、股票、債券這些金融資本也並不是全部，還有時間資本、人力(知識)資本及健康資本這些要考量。&lt;br /&gt;&lt;br /&gt;對一般人而言，年輕時，健康資本比較多，但有極限值，而金融(物質)資本比較少; 在年老時，則相反。人力資本則是初期少，而後慢慢增加，到了一定年限後，又大幅下降。只有時間資本不變，永遠是一天 24 小時。以資本來定義人的擁有物，乃在於我要將之代換成單一度量單位：「錢」。&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;金融資本： 貴金屬、股票、債券、不動產…等。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;人力資本： 每單位時間可換取的金錢數。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;健康資本： 一般是放在&lt;a href="http://wiki.mbalib.com/wiki/%E4%BA%BA%E5%8A%9B%E8%B5%84%E6%9C%AC"&gt;人力資本&lt;/a&gt;內，不過，我喜歡把人力資本視為知識相關，所以把健康資本額外提出，方便我說明。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;時間資本： 時間刻度。你的一小時絕對等於我的一小時，也等於其他人的一小時。&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;也就是說你所賺取的薪資是： 人力資本 * 健康資本(最高為 100%) * 時間資本 。&lt;br /&gt;&lt;br /&gt;好的工作策略是保持健康，壓低時間資本，提高人力資本來獲取薪資最大化，而不是用提高時間資本來換。&lt;br /&gt;&lt;br /&gt;這四項資本中，只有人力資本、金融資本會隨著外在環境因素改變，像是房地產、股市價格、消費水準等，簡單講景氣好時，知識能力不變，但你的人力資本及金融資本多會上漲，但對年輕人而言，從人力資本的差價收益將高於金融資本。所以，還沒買房子的年輕人，應該對於近期的房地產、股市大漲感到高興，因為這會帶動你的人力資本上漲，如果你還沒感覺到，可能有兩種因素： 產業的遞延效應及人力資本不足(或是說知識能力不顯著)。&lt;br /&gt;&lt;br /&gt;對一般人而言，最佳劇本是年輕時，努力提升自己的知識能力，在處於景氣上昇的階段，人力資本可以大幅上升。等到 40 ~ 60 歲時，房地產價格下跌，開始準備購買房地產，最後在退休階段，景氣依舊處於下降階段，雖然這時所擁有的金融資本也會下跌，但應付生活的退休年金卻是不變的，反而物價下跌是個幫助，更何況自己的時間也不多了，最好是人死的時候，剛好也把金融資本花光光。&lt;br /&gt;&lt;br /&gt;所以，投資客對年輕人的貢獻比較大，當他們在炒作房價、股價時，你的人力資本上升快速。切記，此時有多餘的錢，也是拿去買股票、債券，而不要買房地產。等到房價泡沫化，最後一個投資客開始認賠殺出後，就會像 NIKKEI 225 一樣，再等個十幾二十年後，就可以買到非常便宜的房子了。&lt;br /&gt;&lt;br /&gt;以上是非財經本科的我，所作的財經建議。接下來，我提一些營建本科的建議：「應該要在買家市場時，購買房地產，而非在房價漲翻天的時間點，購買房地產。」&lt;br /&gt;&lt;br /&gt;因為房價漲翻天時，建商搶建、材料高貴、工人難找，而工人的施工品質仍舊一模一樣，還可能更爛，因為他們錢容易賺後，也容易拿蹺了，這時候蓋出來的房子，往往沒有品質，因為要趕著交屋，建商可以拿到現金，再去蓋新的房子，所以監造也就隨隨便便了。&lt;br /&gt;&lt;br /&gt;之前股市上萬點、國壽一千多元時，就有建商是用現金找工人的，當時到處都缺工，所以他的作法是工人當天施工當天領現金，而這個方法，讓他的工地不缺工可以快速完工，快速推案。據說，他的工地當時可以七天一個樓層，這有學過混疑土材料學的同學，應該都知道作這樣對不對!!!&lt;br /&gt;&lt;br /&gt;最後我想說的是：「房子是用來住的，買到高品質、低價格的房屋才是王道。」&lt;br /&gt;&lt;br /&gt;= 補記 =&lt;br /&gt;&lt;br /&gt;早上的埔里好冷，讓我打字十分痛苦，文章也就寫得零零落落。現在剛洗完澡，通體舒暢，十指靈活，所以把我上面的文章作個重點整理。&lt;br /&gt;&lt;br /&gt;一、投資客花錢買房產並不是必定賺錢的，所以一般民眾心中如果存在「他們炒房=&gt;賺了大錢=&gt;帶動物價=&gt;一般人買/住不起房子=&gt;生活不好過」這種邏輯，它是不成立的。如果投資客賠錢，那相對的，買下他們房屋的新屋主是十分高興的，這一點從&lt;a href="http://zh.wikipedia.org/zh/%E6%AC%A1%E8%B2%B8%E5%8D%B1%E6%A9%9F"&gt;次貸風暴&lt;/a&gt;過後，美國一堆低價法拍屋熱賣情況可見一斑。投資客的熱錢能助漲，也會助跌。&lt;br /&gt;&lt;br /&gt;二、投資客買房子，通常不會是自住的，畢竟台灣也就二千三百萬個屁股要坐椅子，蓋了五千萬棟房子出來，並不會就多了二千七百萬個屁股，所以，建商在高價搶建房子後，它們勢必會挪出老房子的空間，給別的屁股坐，這對租屋市場而言，是有拉低租金的效應，對普羅百姓而言，算是件好事(P.S. 因為我喜歡高物價，所以我不喜歡看到東西太便宜，為什麼我喜歡高物價，這理由要從驚豔芬蘭講起，我到時再寫篇文章說說)&lt;br /&gt;&lt;br /&gt;三、物價拉高的效應，對年輕人的幫助比較大，因為年輕人的薪資會跟著上漲，所以一個不打算買房子的年輕人，他的薪資會變多，房屋租金變得更便宜，等到老一點的時候，又能撿便宜的法拍屋，我實在不覺得他們該抱怨。&lt;br /&gt;&lt;br /&gt;四、只有在買方市場下所蓋的房子，可以談品質。在賣方市場下所蓋的房子，要談品質可以，你絕對會多花不成比例的金錢才談得了。這道理，就像 iphone 4 一樣，當大家瘋狂都要 iphone 4 時，它再有問題， apple 也無所謂，因為好手機有人要，但爛手機也賣得出去， apple 何必把 iphone 4 作得更好，最好是賣了一批不良的 iphone 4 後，再來多賣一支 iphone 5 ，扒你兩層皮。&lt;br /&gt;&lt;br /&gt;五、房子買了，不會只漲不跌的。二十年前，台中市精華地段在火車站附近，那時那裡還有遠東百貨哩。而現在呢! 七~十期附近更棒，連市政府自己都遷到那邊去了。可笑的是二十年前，西屯區、南屯區到處都是農田，二十年前會在那里投資置產的，大概都是笨蛋，除非是農夫，才會想住在那裡。我阿公就是不愛種田，覺得讀書比較高尚，所以把我們家從何厝搬到戰車部隊這邊，結果呢! 造成我現在只能用功讀書，努力工作，否則阿公乖乖種田，我爸就會是個田溝仔了。如果你在二十年前，花很大的一筆錢買下台中市區附近的房子，光跌的價錢，你就會後悔為什麼不是租房子就好了，而且二十年後，你還可以想搬那就搬那，不會有棟房子拖累。&lt;br /&gt;&lt;br /&gt;六、我認為房地產要有必勝的致富之道，只有官商"合作"開發才有機會，除此之外，尚有法拍這條路，而其他會賺到錢都是靠運氣的，在投資角度上，房地產比股票、債券還不如(P.S. 但在避稅效果上，就不一定了)。&lt;br /&gt;&lt;br /&gt;七、人多的地方不要去，這是我人生抉擇的最大原則。所以，對我而言，台北不是個好地方。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-1595294205481335312?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/1595294205481335312/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2010/12/blog-post_29.html#comment-form' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1595294205481335312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/1595294205481335312'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2010/12/blog-post_29.html' title='房價很高嗎??? 年輕人要感謝投資客炒作房產!'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eKM9lHjTZjs/TTzel4Fp69I/AAAAAAAAC0s/mCgFrZDzSag/s72-c/vlcsnap-2011-01-24-10h00m37s49.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-4745821686286377872</id><published>2011-01-23T21:09:00.008+08:00</published><updated>2011-04-27T07:33:49.416+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lp'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><category scheme='http://www.blogger.com/atom/ns#' term='cmclass'/><title type='text'>指派問題使用 python + lp_solve 解決</title><content type='html'>指派問題乃線性規劃的一種特例，它的特性是不須強調解為 0-1 變數或整數值，但最後算出來它卻一定就是 0 或 1 ，只是這種說法是學理上的，當我們使用程式來計算時，往往因為這些工具在計算過程中使用數值分析的方法，造成解的結果只會接近 0 或是 接近 1 ，而不是純正的 0 或 1。&lt;br /&gt;&lt;br /&gt;這也就是我在第 73 行中，使用 v &gt; 0 而不是 v == 1 的原因，如果是寫 v == 1 的話，有些 v 值是 0.999999 的，就不會顯現了。事實上，使用 v &gt; 0.5 會更好。不過，我最後檢查時，發現 &gt; 0 就可以秀出這 50 個 x 的值，也就算了。&lt;br /&gt;&lt;br /&gt;lp_solve 函式庫安裝方法請見&lt;a href="http://hoamon.blogspot.com/2007/10/lpsolve.html"&gt;舊文&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;pre class="vim"&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff6060"&gt;&lt;b&gt;# -*- coding: utf8 -*-&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&amp;quot;&amp;quot; 問題： &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;指定 0, 1, 2, ..., 49 等 50 個不可重複的數字給 x0 ~ x49，例如 x0 = 12, x1 = 33, ...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y = sin(1*x0) + sin(2*x1) + sin(3*x2) + ... + sin(50*x49)&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;求解 y 之最大值？&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;解法：&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;此問題可視為一種指派問題，也就是說有 0 ~ 49 等員工，要放到 x0 ~ x49 的職位去，&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;這樣決策變數就會變成 p00(值為 1 代表 x0=0), p01(值為 1 代表 x1=0),&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p02 , ..., p49_49 等 2500 個決策變數，且其值必為 0 或 1 。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;雖然目標函式看起來是非線性的，但其實是線性的， y 函式的係數應該長得如下：&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0(C00)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0(C01)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0(C02)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.84(C10)&amp;nbsp;&amp;nbsp; 0.91(C11)&amp;nbsp;&amp;nbsp; 0.14(C12)&amp;nbsp;&amp;nbsp; ...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;21 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.91(C20)&amp;nbsp;&amp;nbsp; -0.76(C21)&amp;nbsp;&amp;nbsp;-0.28(C22)&amp;nbsp;&amp;nbsp;...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;22 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;23 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;24 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所以如果決策變數是 p20 = p01 = p12 = 1，其餘為 0 ，則代表 x0 = 2，x1 = 0，x2 = 1，&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;25 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;這樣 y = 0.91 + 0 + 0.14 = 1.05 。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;26 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;27 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所以目標式可以寫成 y = C00 * p00 + C01 * p01 + ... + C49_49 * p49_49 。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;28 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;29 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最後再加上限制式&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;30 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;31 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p00 + p01 + ... + p0_49 = 1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;32 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p10 + p11 + ... + p1_49 = 1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;33 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;34 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p49_0 + p49_1 + ... + p49_49 = 1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;35 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;36 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p00 + p10 + ... + p49_0 = 1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;37 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p01 + p11 + ... + p49_1 = 1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;38 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;39 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p0_49 + p1_49 + ... + p49_49 = 1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;40 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;41 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;等 100 條限制式後，就能求 y 的最佳解。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;42 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;43 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;44 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;math &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;sin&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;45 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;lpsolve55 &lt;font color="#ffff00"&gt;&lt;b&gt;as&lt;/b&gt;&lt;/font&gt;&amp;nbsp;L&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;46 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;47 &lt;/b&gt;&lt;/font&gt;LENGTH = &lt;font color="#ff40ff"&gt;&lt;b&gt;50&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;48 &lt;/b&gt;&lt;/font&gt;C = []&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;49 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;50 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;xrange(LENGTH):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;51 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;j &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;xrange(LENGTH):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;52 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C.append(-&lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;*sin((j+&lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;)*i)) &lt;font color="#00ffff"&gt;&lt;b&gt;# lp_solve 預設解極小值問題，所以我把目標函數係數全乘以 -1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;53 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;54 &lt;/b&gt;&lt;/font&gt;lp = L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'make_lp'&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;, LENGTH**&lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;55 &lt;/b&gt;&lt;/font&gt;L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'set_verbose'&lt;/b&gt;&lt;/font&gt;, lp, L.IMPORTANT)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;56 &lt;/b&gt;&lt;/font&gt;ret = L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'set_obj_fn'&lt;/b&gt;&lt;/font&gt;, lp, C)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;57 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;58 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;xrange(LENGTH):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;59 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p = [&lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;,] * (LENGTH ** &lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;60 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;j &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;xrange(i*LENGTH, i*LENGTH+LENGTH): p[j] = &lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;61 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret = L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'add_constraint'&lt;/b&gt;&lt;/font&gt;, lp, p, L.EQ, &lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;62 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;63 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p = [&lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;,] * (LENGTH ** &lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;64 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;j &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;xrange(&lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;, LENGTH):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;65 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p[j*LENGTH+i] = &lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;66 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret = L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'add_constraint'&lt;/b&gt;&lt;/font&gt;, lp, p, L.EQ, &lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;67 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;68 &lt;/b&gt;&lt;/font&gt;L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'solve'&lt;/b&gt;&lt;/font&gt;, lp)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;69 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;u'目標值： %s'&lt;/b&gt;&lt;/font&gt;&amp;nbsp;% (L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'get_objective'&lt;/b&gt;&lt;/font&gt;, lp) * -&lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;) &lt;font color="#00ffff"&gt;&lt;b&gt;#要乘以 -1 來還原目標值。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;70 &lt;/b&gt;&lt;/font&gt;vars = L.lpsolve(&lt;font color="#ff40ff"&gt;&lt;b&gt;'get_variables'&lt;/b&gt;&lt;/font&gt;, lp)[&lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;]&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;71 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;u'決策變數： %s'&lt;/b&gt;&lt;/font&gt;&amp;nbsp;% vars&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;72 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;(ij, v) &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;enumerate(vars):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;73 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;v &amp;gt; &lt;font color="#ffffff"&gt;0:&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;74 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i = ij / LENGTH&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;75 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j = ij % LENGTH&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;76 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;'x%s = %s, '&lt;/b&gt;&lt;/font&gt;&amp;nbsp;% (j, i),&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;77 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i % &lt;font color="#ff40ff"&gt;&lt;b&gt;5&lt;/b&gt;&lt;/font&gt;&amp;nbsp;+ &lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;&amp;nbsp;== &lt;font color="#ffffff"&gt;5: print&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;目標值最佳解為 47.8620523191 。&lt;br /&gt;&lt;br /&gt;各變數值如下：&lt;br /&gt;x21 = 0,  x32 = 1,  x47 = 2,  x33 = 3,  x1 = 4, &lt;br /&gt;x37 = 5,  x16 = 6,  x45 = 7,  x11 = 8,  x25 = 9, &lt;br /&gt;x18 = 10,  x30 = 11,  x7 = 12,  x17 = 13,  x0 = 14, &lt;br /&gt;x41 = 15,  x36 = 16,  x22 = 17,  x49 = 18,  x9 = 19, &lt;br /&gt;x44 = 20,  x26 = 21,  x43 = 22,  x13 = 23,  x42 = 24, &lt;br /&gt;x35 = 25,  x8 = 26,  x20 = 27,  x39 = 28,  x40 = 29, &lt;br /&gt;x29 = 30,  x10 = 31,  x34 = 32,  x4 = 33,  x2 = 34, &lt;br /&gt;x38 = 35,  x24 = 36,  x6 = 37,  x46 = 38,  x5 = 39, &lt;br /&gt;x27 = 40,  x28 = 41,  x14 = 42,  x23 = 43,  x48 = 44, &lt;br /&gt;x19 = 45,  x31 = 46,  x12 = 47,  x15 = 48,  x3 = 49,&lt;br /&gt;&lt;br /&gt;=== 後記 ===&lt;br /&gt;&lt;br /&gt;經老師指導後，使用&lt;br /&gt;&lt;br /&gt;ret = L.lpsolve('set_binary', lp, [1,]*(LENGTH**2)) #大約加在第 59 行後&lt;br /&gt;&lt;br /&gt;令決策變數為 0-1 二元變數後，計算時間馬上減少了 60% 。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-4745821686286377872?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/4745821686286377872/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/python-lpsolve.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4745821686286377872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/4745821686286377872'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/python-lpsolve.html' title='指派問題使用 python + lp_solve 解決'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-6953803143719928652</id><published>2011-01-23T10:51:00.006+08:00</published><updated>2011-04-27T07:33:49.420+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><category scheme='http://www.blogger.com/atom/ns#' term='cmclass'/><title type='text'>道路施工的排程問題，類似背包問題，但須考慮不同的排列方式</title><content type='html'>如：長度 10 公尺的路面，若有 7 公尺/日、 5 公尺/日、 3 公尺/日的施工工班可供選擇，則有幾種的排程組合? 此問題很像&lt;a href="http://hoamon.blogspot.com/2007/12/blog-post_20.html"&gt;背包問題&lt;/a&gt;，但在背包問題中，它不須考慮裝入物品的順序，而只考慮種類。若問題改為路面總長度 1000 公尺，而有 [260, 230, 190, 140, 80] 幾種工班時，我的解答是 69225 種。以下是我的解法：&lt;br /&gt;&lt;pre class="vim"&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;LineSerial&lt;/b&gt;&lt;/font&gt;:&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;u&amp;quot;&amp;quot;&amp;quot;&amp;nbsp;&amp;nbsp;目的：解路面排程問題，如：長度 10 公尺的路面，若有 7 公尺/日、 5 公尺/日、 3 公尺/日&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;的施工工班可供選擇，則有幾種的排程組合。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;解如下，共 17 種：&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[7, 7], [7, 5], [7, 3],&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[5, 7], [5, 5],&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[5, 3, 7], [5, 3, 5], [5, 3, 3],&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[3, 7],&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[3, 5, 7], [3, 5, 5], [3, 5, 3],&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[3, 3, 7], [3, 3, 5],&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[3, 3, 3, 7], [3, 3, 3, 5], [3, 3, 3, 3],&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;quot;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;__init__&lt;/b&gt;&lt;/font&gt;(self, total, sizes):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&amp;quot;&amp;quot; serial_times 則是在計算 serial 函式被呼叫幾次。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;quot;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sizes.sort(reverse=True)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self._sizes = sizes&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.serial_times = &lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.result = []&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;21 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.serial(total, None, [])&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;22 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;23 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;24 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;serial&lt;/b&gt;&lt;/font&gt;(self, total, length, tmp):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;25 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;u&amp;quot;&amp;quot;&amp;quot; 將 total 依序給 _sizes 中的所有元素去切，切完後就放入 tmp ，&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;26 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;當 total &amp;lt;= 0 時, 再放入 self.result 中。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;27 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;quot;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;28 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;#self.serial_times += 1&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;29 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp.append(length)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;30 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;total &amp;lt;= &lt;font color="#ffffff"&gt;0:&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;31 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.result.append(tmp[&lt;font color="#ffffff"&gt;1:&lt;/font&gt;])&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;32 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;33 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;34 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;s &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;self._sizes: self.serial(total-s, s, tmp[:])&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;35 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;36 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;37 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;38 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;__name__ == &lt;font color="#ff40ff"&gt;&lt;b&gt;'__main__'&lt;/b&gt;&lt;/font&gt;:&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;39 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;time &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;time&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;40 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total = &lt;font color="#ff40ff"&gt;&lt;b&gt;1000&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;41 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lengths = [&lt;font color="#ff40ff"&gt;&lt;b&gt;260&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;230&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;190&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;140&lt;/b&gt;&lt;/font&gt;, &lt;font color="#ff40ff"&gt;&lt;b&gt;80&lt;/b&gt;&lt;/font&gt;]&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;42 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;time0 = time()&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;43 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs = LineSerial(total, lengths)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;44 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;time() - time0&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;45 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;u'總組合數: %s'&lt;/b&gt;&lt;/font&gt;&amp;nbsp;% len(cs.result)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;46 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#ff40ff"&gt;&lt;b&gt;u'serial 遞迴次數: %s'&lt;/b&gt;&lt;/font&gt;&amp;nbsp;% cs.serial_times&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;47 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;#for i in cs.result: print i&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-6953803143719928652?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/6953803143719928652/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/blog-post_23.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6953803143719928652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6953803143719928652'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/blog-post_23.html' title='道路施工的排程問題，類似背包問題，但須考慮不同的排列方式'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-5357722920258638838</id><published>2011-01-22T22:39:00.014+08:00</published><updated>2011-04-27T07:33:49.425+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='genetic algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><category scheme='http://www.blogger.com/atom/ns#' term='cmclass'/><title type='text'>使用 genetic algorithm 來求解非線性問題。如 y = [ sin(1*x0) * sin(2*x1) ] +  ... + [ sin(49*x48) * sin(50*x49) ]，求 y 的最大值</title><content type='html'>問題描述： 指定 0,1,2,.........49 等50個數字給 x0~x49(不可重複)，且&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;y = [ sin(1*x0) * sin(2*x1) ] + [ sin(3*x2) * sin(4*x3) ] + ... + [ sin(49*x48) * sin(50*x49) ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;請求解 y 之最大值?&lt;br /&gt;&lt;br /&gt;本問題我使用 &lt;a href="http://pyevolve.sourceforge.net/"&gt;pyevolve 函式庫&lt;/a&gt;來幫我處理染色體的突變、重組、交配工作。我只需要提供目標函數(eval_func)的計算方式即可。本問題我的 y 最佳解是 20.4676 ，決策變數是 [33, 26, 36, 16, 45, 28, 37, 1, 19, 2, 25, 14, 0, 22, 6, 17, 35, 24, 11, 12, 27, 42, 49, 32, 13, 20, 23, 43, 41, 30, 4, 9, 21, 3, 10, 34, 38, 15, 18, 5, 47, 39, 44, 40, 8, 7, 31, 48, 46, 29] 。&lt;br /&gt;&lt;pre class="vim"&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;1 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;pyevolve &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;G1DList&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;2 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;pyevolve &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;GSimpleGA&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;3 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;pyevolve &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;Selectors&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;4 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;pyevolve &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;Statistics&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;5 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;pyevolve &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;DBAdapters&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;6 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;pyevolve&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;7 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;from&lt;/b&gt;&lt;/font&gt;&amp;nbsp;math &lt;font color="#ffff00"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt;&amp;nbsp;sin&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;8 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;&amp;nbsp;9 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&amp;quot;&amp;quot; 指定 (0,1,2,.........49 等50個數字不可重複）給 x0~x49，例如&amp;nbsp;&amp;nbsp;x0=12,&amp;nbsp;&amp;nbsp;x1= 33, ....&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;10 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y = [ sin(1*x0) * sin(2*x1) ] + [ sin(3*x2) * sin(4*x3) ] + ... + [ sin(49*x48) * sin(50*x49) ]&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;11 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;求解 y 之 最大值＝?&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;12 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;13 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;14 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;eval_func&lt;/b&gt;&lt;/font&gt;(chromosome):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;15 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;score = &lt;font color="#ff40ff"&gt;&lt;b&gt;20.0&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#00ffff"&gt;&lt;b&gt;#為了不讓 score 的值小於 0，因為 pyevolve 不支援適存值小於 0 。&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;16 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list = map(&lt;font color="#ffff00"&gt;&lt;b&gt;lambda&lt;/b&gt;&lt;/font&gt;&amp;nbsp;a,b: (a, b), xrange(&lt;font color="#ff40ff"&gt;&lt;b&gt;50&lt;/b&gt;&lt;/font&gt;), chromosome)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;17 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.sort(key=&lt;font color="#ffff00"&gt;&lt;b&gt;lambda&lt;/b&gt;&lt;/font&gt;&amp;nbsp;a: a[&lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;])&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;18 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i &lt;font color="#ffff00"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;xrange(&lt;font color="#ff40ff"&gt;&lt;b&gt;25&lt;/b&gt;&lt;/font&gt;):&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;19 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;score += sin((&lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;*i+&lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;)*list[i*&lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;][&lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;]) * sin((&lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;*i+&lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;)*list[i*&lt;font color="#ff40ff"&gt;&lt;b&gt;2&lt;/b&gt;&lt;/font&gt;+&lt;font color="#ff40ff"&gt;&lt;b&gt;1&lt;/b&gt;&lt;/font&gt;][&lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;])&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;20 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;21 &lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;score&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;22 &lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;23 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Enable the pyevolve logging system&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;24 &lt;/b&gt;&lt;/font&gt;pyevolve.logEnable()&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;25 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Genome instance, 1D List of 50 elements&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;26 &lt;/b&gt;&lt;/font&gt;genome = G1DList.G1DList(&lt;font color="#ff40ff"&gt;&lt;b&gt;50&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;27 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Sets the range max and min of the 1D List&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;28 &lt;/b&gt;&lt;/font&gt;genome.setParams(rangemin=&lt;font color="#ff40ff"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/font&gt;, rangemax=&lt;font color="#ff40ff"&gt;&lt;b&gt;500&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;29 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# The evaluator function (evaluation function)&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;30 &lt;/b&gt;&lt;/font&gt;genome.evaluator.set(eval_func)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;31 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Genetic Algorithm Instance&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;32 &lt;/b&gt;&lt;/font&gt;ga = GSimpleGA.GSimpleGA(genome)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;33 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Set the Roulette Wheel selector method, the number of generations and&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;34 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# the termination criteria&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;35 &lt;/b&gt;&lt;/font&gt;ga.selector.set(Selectors.GRouletteWheel)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;36 &lt;/b&gt;&lt;/font&gt;ga.setGenerations(&lt;font color="#ff40ff"&gt;&lt;b&gt;5000&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;37 &lt;/b&gt;&lt;/font&gt;ga.terminationCriteria.set(GSimpleGA.ConvergenceCriteria)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;38 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Sets the DB Adapter, the resetDB flag will make the Adapter recreate&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;39 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# the database and erase all data every run, you should use this flag&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;40 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# just in the first time, after the pyevolve.db was created, you can&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;41 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# omit it.&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;42 &lt;/b&gt;&lt;/font&gt;sqlite_adapter = DBAdapters.DBSQLite(identify=&lt;font color="#ff40ff"&gt;&lt;b&gt;&amp;quot;ex1&amp;quot;&lt;/b&gt;&lt;/font&gt;, resetDB=True)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;43 &lt;/b&gt;&lt;/font&gt;ga.setDBAdapter(sqlite_adapter)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;44 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Do the evolution, with stats dump&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;45 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# frequency of 20 generations&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;46 &lt;/b&gt;&lt;/font&gt;ga.evolve(freq_stats=&lt;font color="#ff40ff"&gt;&lt;b&gt;20&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;47 &lt;/b&gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&lt;b&gt;# Best individual&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;48 &lt;/b&gt;&lt;/font&gt;&lt;font color="#ffff00"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;ga.bestIndividual()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-5357722920258638838?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/5357722920258638838/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/genetic-algorithm.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5357722920258638838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/5357722920258638838'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/genetic-algorithm.html' title='使用 genetic algorithm 來求解非線性問題。如 y = [ sin(1*x0) * sin(2*x1) ] +  ... + [ sin(49*x48) * sin(50*x49) ]，求 y 的最大值'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-3387782712306948891</id><published>2011-01-22T14:46:00.004+08:00</published><updated>2011-01-22T14:56:48.587+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='paypal'/><title type='text'>使用 PayPal Express Checkout 時，如何申請 API 簽章?</title><content type='html'>要使用 PayPal 作為收款工具時，除了申請它的帳戶(建議是商業帳戶)外，若使用的是 Express Checkout 收款機制，你還需為自己所寫的程式申請一組 API 簽章，包含「用戶名稱」、「密碼」、「簽名」。&lt;br /&gt;&lt;br /&gt;申請方式很簡單，先登入 &lt;a href="http://www.paypal.com/"&gt;www.paypal.com&lt;/a&gt; ，看到個人的總覽頁面如下圖：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTp-qD0OqaI/AAAAAAAAC0U/CcS8br3wnEM/s1600/paypal1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 145px;" src="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTp-qD0OqaI/AAAAAAAAC0U/CcS8br3wnEM/s400/paypal1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5564899550613645730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;點選「我的業務設定」。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTp-p7ijWvI/AAAAAAAAC0M/AxzNDb9Woa8/s1600/paypal2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTp-p7ijWvI/AAAAAAAAC0M/AxzNDb9Woa8/s400/paypal2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5564899548392020722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;點選「立即開始」。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eKM9lHjTZjs/TTp-p_Cd43I/AAAAAAAAC0E/h1nQIx4S26s/s1600/paypal3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 380px;" src="http://1.bp.blogspot.com/_eKM9lHjTZjs/TTp-p_Cd43I/AAAAAAAAC0E/h1nQIx4S26s/s400/paypal3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5564899549331186546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;點選「為 PayPal 帳戶要求 API 電子簽章」。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eKM9lHjTZjs/TTp-pltdyEI/AAAAAAAACz8/H9rzw8JHOXo/s1600/paypal4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 282px;" src="http://4.bp.blogspot.com/_eKM9lHjTZjs/TTp-pltdyEI/AAAAAAAACz8/H9rzw8JHOXo/s400/paypal4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5564899542532212802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;選擇「申請 API 電子簽章」，並點選「同意並提交」。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTp-peExYaI/AAAAAAAACz0/lnM56FEpdjY/s1600/paypal5.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 214px;" src="http://3.bp.blogspot.com/_eKM9lHjTZjs/TTp-peExYaI/AAAAAAAACz0/lnM56FEpdjY/s400/paypal5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5564899540482482594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;抄下「API用戶名稱」、「API密碼」、「簽名」放到你的程式碼中，就可以呼叫 PayPal 的 Express Checkout API 了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-3387782712306948891?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/3387782712306948891/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/paypal-express-checkout-api.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3387782712306948891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/3387782712306948891'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/paypal-express-checkout-api.html' title='使用 PayPal Express Checkout 時，如何申請 API 簽章?'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eKM9lHjTZjs/TTp-qD0OqaI/AAAAAAAAC0U/CcS8br3wnEM/s72-c/paypal1.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-6157781629664266164</id><published>2011-01-09T08:54:00.003+08:00</published><updated>2011-01-09T08:59:19.500+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>哈哈哈~ Python 在 2011 的 1 月站上了第 5 名</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eKM9lHjTZjs/TSkIV_P0tyI/AAAAAAAACzY/SCpH6IX-ZBc/s1600/x.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 314px; height: 400px;" src="http://3.bp.blogspot.com/_eKM9lHjTZjs/TSkIV_P0tyI/AAAAAAAACzY/SCpH6IX-ZBc/s400/x.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5559984388813666082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-6157781629664266164?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/6157781629664266164/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/python-2011-1-5.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6157781629664266164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/6157781629664266164'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/python-2011-1-5.html' title='哈哈哈~ Python 在 2011 的 1 月站上了第 5 名'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eKM9lHjTZjs/TSkIV_P0tyI/AAAAAAAACzY/SCpH6IX-ZBc/s72-c/x.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-8820487496607424112</id><published>2011-01-03T16:15:00.005+08:00</published><updated>2011-01-04T08:24:41.372+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='realty'/><category scheme='http://www.blogger.com/atom/ns#' term='politic'/><title type='text'>「政治文」：政府如何因應房地產價格急速上漲問題</title><content type='html'>&lt;span style="font-weight:bold;"&gt;前言&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;本文是篇欠債文，拖了很久才寫出來的。不過也是整理過去我幾篇 blog 文章而來(&lt;a href="http://hoamon.blogspot.com/2010/04/blog-post.html"&gt;「政治文」：政府真的在打壓房市嗎?&lt;/a&gt;、&lt;a href="http://hoamon.blogspot.com/2009/12/2009-12-3-25.html"&gt;「或許是政治文」：今天是 2009 年 12 月 3 日，請給我 25 元的國泰金&lt;/a&gt;、&lt;a href="http://hoamon.blogspot.com/2010/10/blog-post.html"&gt;我們該痛恨投資客嗎?&lt;/a&gt;、&lt;a href="http://hoamon.blogspot.com/2010/12/blog-post_29.html"&gt;房價很高嗎??? 年輕人要感謝投資客炒作房產!&lt;/a&gt;)。&lt;br /&gt;&lt;br /&gt;不過，除非我的學術路線改走這邊，或是從政。要不然，我應該不會再寫房地產相關的文章了，因為一個人的一生買不了幾次房子，沒有那麼多的道理可以寫。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;問題現況&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;購屋痛苦指數持續上揚，一般民眾購屋門檻愈來愈高。營建署所公布的平均房價數據緩步上漲，而主計處統計的平均雙薪夫妻年薪卻沒有跟著上漲，造成平均房價除以平均年薪，也就是房價所得比愈來愈高。一般民眾購買房屋後，清償房貸的年限愈來愈長。台灣整體預售屋及中古屋的平均數據從 2009 年第二季的 6.65 到第四季為 7.08，再到 2010 年的第二季是 7.69，最新數據的第三季則是 8 (來源： &lt;a href="http://udn.com/NEWS/FINANCE/FIN1/6052478.shtml"&gt;http://udn.com/NEWS/FINANCE/FIN1/6052478.shtml&lt;/a&gt; )，一年以來持續上漲。下圖是台北市的歷年預售屋房價所得比情形，可以看到首善之都的預售平均房價已經達 17.43 年如此長的年限，這反應出都會地區的新屋漲幅遠高於台灣的平均值，也造成民眾在施政滿意度上，對房地產價格高揚問題產生極大的負面情緒，政府該如何因應此一問題?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eKM9lHjTZjs/TSGG0PeJ07I/AAAAAAAACzI/8VDkzMIu3js/s1600/%25E5%258F%25B0%25E5%258C%2597%25E5%25B8%2582%25E6%25AD%25B7%25E5%25B9%25B4%25E6%2588%25BF%25E5%2583%25B9%25E6%2589%2580%25E5%25BE%2597%25E6%25AF%2594.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 82px;" src="http://1.bp.blogspot.com/_eKM9lHjTZjs/TSGG0PeJ07I/AAAAAAAACzI/8VDkzMIu3js/s400/%25E5%258F%25B0%25E5%258C%2597%25E5%25B8%2582%25E6%25AD%25B7%25E5%25B9%25B4%25E6%2588%25BF%25E5%2583%25B9%25E6%2589%2580%25E5%25BE%2597%25E6%25AF%2594.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5557871647216227250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;現況分析&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;房地產價格漲漲跌跌，從林英彥教授所著之「評課徵土地交易所得稅問題」一文(引自「土地的迷思」一書)中，提到 1991 年時，為抑制房地產價格，而有修正土地增值稅之建議，作者認為只要將土地增值稅的課稅基準，由現行的公告地價改為實際交易價格即可，不須動用交易所得稅(資本利得稅)的工具，在法令修改上比較簡單，而在功用上有相同效果。從該文看來，可得知房地產價格高漲問題，絕非獨立存在於現今社會，在二十年前的台灣面臨相同問題。&lt;br /&gt;&lt;br /&gt;房地產兼具投資與消費兩種目的，若屋主以自住運用，則為消費財，若屋主購入後等待時機賣出，則為投資財，兩者並不互斥，也可購入自住後，在發現房屋價格上漲且有超額獲利時，賣出換取資金。或是在投資後，遲遲無法賣出而轉為自住。&lt;br /&gt;&lt;br /&gt;以購屋者角度視之，若其為消費者，則希望價格愈來愈低，並在購入後，價格反轉; 若其為投資者，則希望價格愈來愈高，並在賣出後，價格反轉以獲取最大報酬。而目前，台灣房地產正進入價格愈來愈高的階段，原因可能是台幣逐漸升值、景氣開始好轉。在這種上升循環階段下，消費者當然會反映出他們的不悅及無法接受購屋門檻如此之高。於是，輿論開始要求政府要管制房地產價格，不能讓一般民眾買不起房屋，這民怨在大台北地區尤其炙熱。&lt;br /&gt;&lt;br /&gt;然而，為什麼投資者與消費者同屬中華民國公民，政府卻必須順應消費者意見，來打擊投資者呢?&lt;br /&gt;&lt;br /&gt;首先，房屋乃屬於民生必需品的一部份，民生物價必須穩定，不是不能上漲，而是要溫和上漲，或是溫和下跌，如此經濟才能穩定。所以，當房價飆漲太快，則政府必須提出措施延緩其速度，必防通貨膨脹發生。第二，當過去經濟不景氣時，為刺激經濟景氣與活絡房地市場，政府選擇土增稅減半的政策，此一政策乃對投資者有利，但對消費者不利，於是現在環境反轉，消費者有權提出增加土增稅此一訴求。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;施政目標&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;政府的施政目標就房地產而言：&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;第一目標是穩定房價，房價上漲速度及下跌速度須小於一定值。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;第二目標應保證公民在其一生之中可負擔得起必需空間大小之房產，且平均購屋年齡該屆於 40 歲到 60 歲之間，但政府不須作到任何公民在任何年齡以及任何時間點皆可購入房產的保證。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;第三目標則是符合租稅公平原則，當房產買賣有利潤時，應照比例納稅。&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;解決策略&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;就第一目標論之，該如何判斷何謂速度過快，房價的漲跌可能與新台幣的升貶值及物價波動有關，如果只單看價格本身，則會與民眾實質生活水準脫鈎，應考量平均薪資水準，所以所謂的速度過快，就應該是從房價所得比的增減幅得知。政府應明確定出一評價公式，當房價所得比增幅過快，則提高土增稅率，當房價所得比減幅過快，則降低土增稅率。又若房價所得比長期停留在高檔，一樣以提高土增稅率因應，反之亦然。使用此種策略，乃有前例可尋，民國九十一年一月十七日，立法院為刺激經濟景氣與活絡房地市場，通過土增稅率減半法令，所以當然可以針對房地產市場作反向降溫措施。&lt;br /&gt;&lt;br /&gt;而目前也有人認為課徵土地交易所得稅也就是資本利得稅，可以穩定逐漸高漲的房價。此措施或許對抑制房價有效，然則在房價行情逆轉時，政府是否為穩定房價，必須將此一措施解禁。又或者，我國目前並無土地交易所得稅，理論上目前是對投資者有利的，所以房價不應該出現低檔，然而因為 921 , SARS 等事件發生，還是讓房市進入低檔階段。以課徵交易所得稅來對付高房價，理由並不充分，課徵交易所得稅應從賦稅公平角度視之。&lt;br /&gt;&lt;br /&gt;第二目標方面，房地產價格其實來來去去，現有的高房價不意謂永遠都是高房價，它乃隨著景氣循環、游資程度…波動，若說政府得保障消費者在高房價時代亦能購置房產，實乃緣木求魚，一方面代表政府在平均薪資上勢必有所作為，使得消費者負擔得起房貸，二來在高房價時代，讓這些有能力的消費者變多並進場購置，不是更增房地產泡沫化的機率嗎?&lt;br /&gt;&lt;br /&gt;消費者往往認為在高房價環境，政府也可提出房地產價格透明化，來避免泡沫化。此一措施有無功效，我們可以從證券市場環境類推，我國的集中市場及櫃買市場，皆有公開證券交易價格，然則此一價格資訊，對投資者而言，有達到避免泡沫化之功能嗎? 沒有，民國 78 年，國壽以 EPS 5 元的獲利能力，可以飆漲到 1975 元。近年來，多檔上市掛牌的 TDR 有因為公開成交價格，就少了人為哄抬嗎? 沒有。另外就房產公開拍賣上，成交價公開資訊有避免買家買到價格過高的房產嗎? 沒有，因為財團反而利用這些公開資訊哄抬價格，讓消費者接受其所訂出的售價。所以提出房產透明化政策有助於壓低或減緩房價嗎? 我存疑。&lt;br /&gt;&lt;br /&gt;政府在第二目標上，應該努力教育消費者，不該在無法負擔房貸時，因為逐漸高漲的房價而被迫從事投資的行為，更不該在此時提供青年住宅貸款的利息補貼，間接鼓勵消費者在高房價時代消費，尤其是現今處於升息階段，目前的時間點年輕人因為此一補貼措施申請房貸，而在未來逐漸升息後，這些年輕人只能被迫犧牲原有生活水準，又或者房產被銀行接收，落得銀拍、法拍下場。&lt;br /&gt;&lt;br /&gt;並教育消費者，在高房價時代，應厚植自身的人力資本，努力賺取薪資以待低房價時代的來臨。此教育方法也有助於房價平穩，因為這誘使原本會在高房價時代的買家轉變成在低房價時候的買家。&lt;br /&gt;&lt;br /&gt;當政府保證公民屆於 40 歲到 60 歲之間可負擔得起必需空間大小之房產，除了讓房價依時間而平穩外，也應依區域而平穩。現況下，台北公民的怨氣就比台中、台南、高雄來得大，然而政府應平等對待轄下各公民的。為解決台北市的民怨，最好的方法不是增加房產的供應，而是減少房產的需求，讓台北公民逐漸遷出台北，往新北市、台中市、台南市、高雄市等區域居住。從過去的洛杉磯、墨西哥市解決交通問題的模式上，可以發現處理塞車問題，若以增加道路面積及公有交通措施等供給手段下手，只是減少短痛來換取長痛。因為當城市的生活機能水準變高，只會吸引外區域的民眾移入，久了又再次面臨一樣的塞車問題。&lt;br /&gt;&lt;br /&gt;區域房價過高，一樣是生活機能水準不均所造成的。台北市因中央政府資源分配及獨立稅收豐厚下，造成生活機能遠高於其他縣市，間接吸引企業、勞工、一般民眾遷入，住房需求也就遠高於其他區域。需求增加，房價怎麼會不漲呢! 所以平均區域資源，是我認為解決台北市房價所得比過高的長期策略。而方法可先從公務人員辦公地點下手。目前中央機關所屬部會多位於台北市，然以地理位置而言，南投中興新村才是在正中心呀! 讓公務人員從台北移出，進入中部地區，這就有助於平衡區域資源，而機關所在地點移動，勢必會造成其他業務與機關相關的企業移動，這作法與當初民進黨執政主導的南遷計畫有些類似，但阻力會比較少，因為遷的地點比高雄近，而且現在高鐵已常態通車，又適逢政府目前正在推行組織再造，所以未來若成立新組織，公務員本來就會有所調動，剛好搭上順風車。&lt;br /&gt;&lt;br /&gt;除組織再造外，在政府機關當中，有一個機關不須組織再造就非常適合遷到中興新村的，它就是「立法院」。院內的立委其實是來自全國各地，所聘任的助理亦同，他們遷到中興新村的成本是最低的。&lt;br /&gt;&lt;br /&gt;針對第三目標而言，現有的土地增值稅課徵方式最為人垢病的就是公告現值不等同土地實際轉移價格，造成獲取價差者並不照比例納稅，缺乏賦稅公平。理論上，為弭平此類爭議，應由立法院修法恢復土地交易所得稅，但此管道爭議太大。或可參考林英彥教授所提之「公告現值改以土地實際轉移價格」計算，應用在私人土地移轉及公有地拍賣上，如此只要在平均地權條例作小幅度修法即可。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;結論&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;就房價問題上，政府應公平對待投資者與消費者，也因房地產本身性質，一般民眾的消費者身份與投資者身份是可以互換的，若要求政府傾向消費者，則待消費者想要高價賣出房產，身份轉換為投資者時，又該如何要求政府。公平對待兩者才符合民眾的最大利益。&lt;br /&gt;&lt;br /&gt;在執行措施上，政府有「提出土增稅增減的評價公式」、「在高房價時期取消青年房貸利息補貼」、「教育消費者」、「平衡區域發展」及「改以轉移價格取代公告現值」等方案。各方案的可行性及時效性，分別是馬上作「教育消費者」。未來停辦「在高房價時期取消青年房貸利息補貼」方案，因為既然現已成行，則只能等待其落日。而「提出土增稅增減的評價公式」、「改以轉移價格取代公告現值或加徵交易所得稅」兩方案就必須由主管機關提出修正草案供立法院諸公們決議，這部份還有的吵呢。另外在「平衡區域發展」上則是文官體系內長遠的規劃，可能要長達一、二十年才能成型，現在應該看不到成果。&lt;br /&gt;&lt;br /&gt;所以在目前高房價時代，政府能作的措施有限，還是消費者自己得有明確的體認才是。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-8820487496607424112?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/8820487496607424112/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.blogspot.com/2011/01/blog-post_03.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8820487496607424112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/398420085248706856/posts/default/8820487496607424112'/><link rel='alternate' type='text/html' href='http://hoamon.blogspot.com/2011/01/blog-post_03.html' title='「政治文」：政府如何因應房地產價格急速上漲問題'/><author><name>何岳峰</name><uri>https://profiles.google.com/109599559104256217166</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-J_YUkvvbT1I/AAAAAAAAAAI/AAAAAAAADOg/EfJ26Q9KzuY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eKM9lHjTZjs/TSGG0PeJ07I/AAAAAAAACzI/8VDkzMIu3js/s72-c/%25E5%258F%25B0%25E5%258C%2597%25E5%25B8%2582%25E6%25AD%25B7%25E5%25B9%25B4%25E6%2588%25BF%25E5%2583%25B9%25E6%2589%2580%25E5%25BE%2597%25E6%25AF%2594.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-398420085248706856.post-6069858691451277701</id><published>2011-01-02T08:57:00.007+08:00</published><updated>2011-10-02T11:19:40.531+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='investment'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>算成績單該用「發行量加權股價報酬指數」來計算</title><content type='html'>2010年結束了，台股在這一年呈上漲格局。若以年初買股，而在年底賣股的情況下，很多媒體的計算方式是用加權指數來評估，得到 (8,972.50 - 8,207.85) / 8,207.85 = 9.31% 。這是錯誤的計算方式，它少算了領到的現金股利。&lt;br /&gt;&lt;br /&gt;正確的計算方式應用「發行量加權股價報酬指數」來計算， (11,928.56 - 10,528.26 ) / 10,528.26 = 13.3% 。&lt;br /&gt;&lt;br /&gt;也就是在 2010 年度沒有投入新資金的情況下，從 2009 年末抱股到 2010 年底的投資人，如果你的報酬率沒有 13.3% 的話，都是「不及格的」。詳細的評估介紹可看我的&lt;a href="http://hoamon.blogspot.com/2009/12/2009-3-1-50000-2009-4-1-55000-2009-5-1.html"&gt;舊文&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;今年我的報酬率約有 11% ,看似不及格。但因為我 2010 年持續都有丟入資金(被動投資的其中一個原則就是分時買進，也分時賣出)，直接算資產的總報酬率會低於真正的內部報酬率。所以我的實際成績單得從現金流量情形算出來。&lt;br /&gt;&lt;br /&gt;理論上，是會更大的。應該有及格吧! 不過，沒及格也沒關係，因為我的持股比例並不照台股市值比例操作的，像台積電在台股市值約佔 8% 左右，但我的持股比例只有 3% 多，所以兩者不同步是應該的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/398420085248706856-6069858691451277701?l=hoamon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hoamon.blogspot.com/feeds/6069858691451277701/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hoamon.bl
