<?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-4941669268429063951</id><updated>2011-12-24T12:54:33.840+08:00</updated><category term='Algorithm'/><category term='PostgreSQL'/><category term='MySQL'/><category term='生活常識'/><category term='Unix Socket Programming'/><category term='Linux'/><category term='C/C++'/><category term='UVa Online Judge'/><category term='Windows Programming'/><category term='Share'/><category term='心情點播'/><category term='Computer Networks'/><category term='JavaScript'/><category term='Html'/><category term='Java'/><category term='Ajax'/><category term='Linux Programming'/><title type='text'>小小的天 有大大的夢想</title><subtitle type='html'>You got a dream, you gotta protect it!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4287626738520292923</id><published>2011-09-03T22:05:00.000+08:00</published><updated>2011-09-03T22:05:46.665+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Share'/><title type='text'>圓剛HomeFree Combo開箱文</title><content type='html'>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;想一邊上網一邊看電視，一般的解決方案可能是買一台電視或是買電視卡或是電視盒。然而這種解決方向，第一個難題就是必須把電視訊號線拉一條到你的電腦旁，而且只能在這台電腦上看。HomeFree Combo解決了這個問題，透過區域網路，就可以方便收看家中的第四台。&lt;/div&gt;﻿ &lt;table 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/--7dAOqND1gE/TmIxKhK-yYI/AAAAAAAAB2A/_19oFB4ccIo/s1600/IMG_5522.JPG" imageanchor="1" style="clear: left; cssfloat: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/--7dAOqND1gE/TmIxKhK-yYI/AAAAAAAAB2A/_19oFB4ccIo/s320/IMG_5522.JPG" width="320" xaa="true" /&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;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;﻿﻿﻿﻿﻿ &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://1.bp.blogspot.com/-jgKv5-_gYfs/TmIxQqIt01I/AAAAAAAAB2E/LsLulO8uaaY/s1600/IMG_5526.JPG" imageanchor="1" style="clear: left; cssfloat: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-jgKv5-_gYfs/TmIxQqIt01I/AAAAAAAAB2E/LsLulO8uaaY/s320/IMG_5526.JPG" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;HomeFree Combo (F210)可同時觀看數位電視以及類比電視&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;﻿﻿﻿﻿﻿ &lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&amp;nbsp;﻿﻿﻿&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;table 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/-bKBg8-wSu4U/TmIxXrNmP7I/AAAAAAAAB2I/PmBmYxvdzQU/s1600/IMG_5527.JPG" imageanchor="1" style="clear: left; cssfloat: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-bKBg8-wSu4U/TmIxXrNmP7I/AAAAAAAAB2I/PmBmYxvdzQU/s320/IMG_5527.JPG" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;iPad也可以看電視，對於有iPad的使用者來講，應該是蠻不錯的應用。﻿&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div align="center" class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;﻿﻿﻿﻿﻿﻿﻿&lt;/div&gt;&amp;nbsp;﻿&lt;br /&gt;&lt;div align="left" class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;﻿&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-6b95JH1_uHg/TmIxeHEZb2I/AAAAAAAAB2M/xD33sz2F450/s1600/IMG_5530.JPG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-6b95JH1_uHg/TmIxeHEZb2I/AAAAAAAAB2M/xD33sz2F450/s320/IMG_5530.JPG" width="320" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;﻿&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;﻿ &lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-B9Vpsp0W_uI/TmIxqW1k2vI/AAAAAAAAB2U/TeFt5qGqvNw/s1600/IMG_5534.JPG" imageanchor="1" style="clear: left; cssfloat: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-B9Vpsp0W_uI/TmIxqW1k2vI/AAAAAAAAB2U/TeFt5qGqvNw/s320/IMG_5534.JPG" style="cursor: move;" unselectable="on" width="320" xaa="true" /&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;div style="text-align: center;"&gt;﻿&amp;nbsp;&amp;nbsp;&amp;nbsp;﻿﻿&lt;img height="72" src="http://3.bp.blogspot.com/-B9Vpsp0W_uI/TmIxqW1k2vI/AAAAAAAAB2U/TeFt5qGqvNw/s320/IMG_5534.JPG" style="filter: alpha(opacity=30); left: 189px; mozopacity: 0.3; opacity: 0.3; position: absolute; top: 1275px; visibility: hidden;" width="96" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-4287626738520292923?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4287626738520292923/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2011/09/homefree-combo.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4287626738520292923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4287626738520292923'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2011/09/homefree-combo.html' title='圓剛HomeFree Combo開箱文'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/--7dAOqND1gE/TmIxKhK-yYI/AAAAAAAAB2A/_19oFB4ccIo/s72-c/IMG_5522.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-17993320723029345</id><published>2011-03-05T15:24:00.000+08:00</published><updated>2011-03-05T15:24:59.916+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>bwm-ng</title><content type='html'>蠻簡單實用的網路流量檢視的軟體。&lt;br /&gt;&lt;a href="http://www.gropp.org/?id=projects&amp;amp;sub=bwm-ng"&gt;bwm-ng&lt;/a&gt; (Bandwidth Monitor NG)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-Leu3gpu_Xxw/TXHlMd1pWMI/AAAAAAAAByQ/Zwwny0-as5M/s1600/bwm-ng.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="https://lh4.googleusercontent.com/-Leu3gpu_Xxw/TXHlMd1pWMI/AAAAAAAAByQ/Zwwny0-as5M/s640/bwm-ng.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-17993320723029345?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/17993320723029345/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2011/03/bwm-ng.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/17993320723029345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/17993320723029345'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2011/03/bwm-ng.html' title='bwm-ng'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-Leu3gpu_Xxw/TXHlMd1pWMI/AAAAAAAAByQ/Zwwny0-as5M/s72-c/bwm-ng.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4448554814715815054</id><published>2011-02-19T21:23:00.000+08:00</published><updated>2011-02-19T21:23:12.936+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>Forget</title><content type='html'>&lt;span style="color: #a87457;"&gt;&lt;b&gt;The world's a playground. You know that when you're a kid...but somewhere along the way, everyone forgets it.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;長大後的世界，好不開心。&lt;/div&gt;&lt;div style="color: black;"&gt;總是想太多，太多煩惱讓自己快忘了怎麼微笑。&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;是我太固執了吧！&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: #a87457;"&gt;&lt;span style="color: black;"&gt;人生可以過的很開心的~~&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-4448554814715815054?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4448554814715815054/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2011/02/forget.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4448554814715815054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4448554814715815054'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2011/02/forget.html' title='Forget'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-1551061343350219260</id><published>2011-02-19T16:36:00.000+08:00</published><updated>2011-02-19T16:36:56.489+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>修正桌面資料夾名稱</title><content type='html'>最近發現許多新版Linux在安裝完後，如果選擇中文系統，會發現桌面資料夾的名稱真的變成"桌面"而不是Desktop。雖說看起來很中文用桌面這個名稱很適合，但若需要使用到Console來操作時，就變得很麻煩，更改回Desktop方式如下：&lt;br /&gt;&lt;br /&gt;# mv ~/桌面 ~/Desktop&lt;br /&gt;編輯以下檔案 &lt;br /&gt;# vim ~/.config/user-dirs.dirs&lt;br /&gt;&lt;br /&gt;XDG_DESKTOP_DIR="$HOME/Desktop"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-1551061343350219260?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/1551061343350219260/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2011/02/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1551061343350219260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1551061343350219260'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2011/02/blog-post.html' title='修正桌面資料夾名稱'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4557696589663114308</id><published>2010-11-21T19:29:00.000+08:00</published><updated>2010-11-21T19:29:08.248+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活常識'/><title type='text'>蒙提霍爾(Monty Hall Problem)</title><content type='html'>&lt;i&gt;&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E8%92%99%E6%8F%90%E9%9C%8D%E7%88%BE%E5%95%8F%E9%A1%8C&amp;amp;variant=zh-tw"&gt;Monty Hall Problem &lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;參賽者會看見三扇關閉了的門，其中一扇的後面有一輛汽車，選中後面有車的那扇門就可以贏得該汽車，而另外兩扇門後面則各藏有一隻山羊。當參賽者選定了一扇門，但未去開啟它的時候，節目主持人會開啟剩下兩扇門的其中一扇，露出其中一隻山羊。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是：換另一扇門會否增加參賽者贏得汽車的機率？&lt;/i&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/4941669268429063951-4557696589663114308?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4557696589663114308/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/11/monty-hall-problem.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4557696589663114308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4557696589663114308'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/11/monty-hall-problem.html' title='蒙提霍爾(Monty Hall Problem)'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5191515068927149297</id><published>2010-08-14T22:12:00.000+08:00</published><updated>2010-08-14T22:12:17.323+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>永春高中</title><content type='html'>今天在電視上看見有節目在永春高中出外景，讓我不自覺得停了下來，靜靜的收看。&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/4941669268429063951-5191515068927149297?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5191515068927149297/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/08/blog-post_14.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5191515068927149297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5191515068927149297'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/08/blog-post_14.html' title='永春高中'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4201351896783544667</id><published>2010-07-14T22:53:00.002+08:00</published><updated>2010-07-14T22:54:52.611+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Server Load Balance</title><content type='html'>&lt;a href="http://haproxy.1wt.eu/"&gt;HAProxy&lt;/a&gt;可以讓我們簡單架設一個Load Balance的機器。Debian架設方法如下：&lt;br /&gt;&lt;br /&gt;# apt-get install haproxy&lt;br /&gt;&lt;br /&gt;若要啟用，記得修改/etc/default/haproxy的設定檔 &lt;br /&gt;# vim /etc/default/haproxy&lt;br /&gt;Enabled=1&lt;br /&gt;&lt;br /&gt;接著便是依據實際環境對Load Balance的設定檔(/etc/haproxy/haproxy.cfg)做修改，可參考此&lt;a href="http://plog.longwin.com.tw/my_note-unix/2009/03/23/haproxy-ha-load-balance-2009"&gt;網站&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;global&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxconn 10000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; user&amp;nbsp;&amp;nbsp;&amp;nbsp; haproxy&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; group&amp;nbsp;&amp;nbsp; haproxy&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; daemon&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nbproc&amp;nbsp; 8&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;defaults&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mode&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; http&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httplog&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dontlognull&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; retries&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redispatch&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpclose&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxconn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32768&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; contimeout&amp;nbsp;&amp;nbsp;&amp;nbsp; 5000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clitimeout&amp;nbsp;&amp;nbsp;&amp;nbsp; 30000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; srvtimeout&amp;nbsp;&amp;nbsp;&amp;nbsp; 30000&lt;br /&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;listen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web-server&lt;br /&gt;&amp;nbsp; &amp;nbsp; bind&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; balance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roundrobin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w1 192.168.1.1:80 weight 3 check&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w2 192.168.1.2:80 weight 3 check&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpchk GET /index.html&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;option&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redispatch&lt;br /&gt;&lt;code&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; option&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; forwardfor  &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;最後，啟動Service&lt;br /&gt;# /etc/init.d/haproxy start&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-4201351896783544667?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4201351896783544667/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/07/server-load-balance.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4201351896783544667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4201351896783544667'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/07/server-load-balance.html' title='Server Load Balance'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-1381190722885781591</id><published>2010-07-05T23:18:00.000+08:00</published><updated>2010-07-05T23:18:59.081+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>PostgreSQL安裝</title><content type='html'>Debian安裝PostgreSQL&lt;br /&gt;&lt;br /&gt;# apt-get install postgresql&lt;br /&gt;&lt;br /&gt;要登入PostgreSQL，必須以postgres的身份執行&lt;br /&gt;# su postgres&lt;br /&gt;# psql template1&lt;br /&gt;&lt;br /&gt;接著便可新增使用者(可新增資料庫及使用者的權限)&lt;br /&gt;create user 帳號 with password '密碼' createdb createuser;&lt;br /&gt;&lt;br /&gt;修改密碼&lt;br /&gt;alter user 帳號 with password '新密碼';&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-1381190722885781591?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/1381190722885781591/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/07/postgresql.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1381190722885781591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1381190722885781591'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/07/postgresql.html' title='PostgreSQL安裝'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5653456405899238784</id><published>2010-06-26T22:11:00.000+08:00</published><updated>2010-06-26T22:11:11.284+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>update-rc.d</title><content type='html'>寫了一支Daemon程式，除了在/etc/init.d/rc.local上寫入欲執行的指令外，也可以利用[Debian]update-rc.d指令，更新各runlevel下要執行的script。&lt;br /&gt;首先要產生一個init.d script來執行我們要執行的Daemon，我們可以利用/etc/init.d/skeleton來當做修改的範本。&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: red;"&gt;# cp /etc/ init.d/skeleton /etc/init.d/myservice&lt;/div&gt;&lt;div style="color: red;"&gt;# chmod a+x /etc/init.d/myservice&lt;/div&gt;&lt;br /&gt;接著便是修改myservice script，部份修改如下：&lt;br /&gt;&lt;div style="color: red;"&gt;# vim /etc/init.d/myservice &lt;/div&gt;&lt;div style="color: red;"&gt;DESC="Daemon的描述"&lt;/div&gt;&lt;div style="color: red;"&gt;NAME=Daemon的檔名&lt;/div&gt;&lt;div style="color: red;"&gt;DAEMON=Daemon所在絕對路徑&lt;/div&gt;&lt;div style="color: red;"&gt;PIDFILE=/var/run$NAME.pid&lt;/div&gt;&lt;span style="color: red;"&gt;SCRIPTNAME=/etc/init.d/$NAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;最後便是利用update-rc.d指令，更新各runlevel服務啟動設定&lt;br /&gt;&lt;div style="color: red;"&gt;# cd /etc/init.d&lt;/div&gt;&lt;div style="color: red;"&gt;# update-rc.d myservice defaults&lt;/div&gt;&lt;br /&gt;defaults參數設定服務在runlevel為2,3,4,5啟動，runlevel為0,1,6為停止。若要詳細的設定，請參考man update-rc.d&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-5653456405899238784?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5653456405899238784/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/06/update-rcd.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5653456405899238784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5653456405899238784'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/06/update-rcd.html' title='update-rc.d'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-2104605835041330021</id><published>2010-06-20T23:44:00.000+08:00</published><updated>2010-06-20T23:44:58.236+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>全力搶救死刑狗</title><content type='html'>&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5oV-0BZ4zQo&amp;hl=zh_TW&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5oV-0BZ4zQo&amp;hl=zh_TW&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ivPojFKv0gA&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ivPojFKv0gA&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&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/4941669268429063951-2104605835041330021?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/2104605835041330021/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/06/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2104605835041330021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2104605835041330021'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/06/blog-post.html' title='全力搶救死刑狗'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-7700556131243984886</id><published>2010-06-20T01:13:00.001+08:00</published><updated>2010-06-20T01:13:47.994+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>update-alternatives for gcc</title><content type='html'>&lt;a href="http://hugedream.blogspot.com/2009/09/update-alternatives.html"&gt;update-alternatives&lt;/a&gt;提供了程式版本切換管道，以下將教學如何將gcc也加入到此管理系統。&lt;br /&gt;&lt;br /&gt;假設系統已安裝gcc-4.1, g++-4.1, gcc-4.3, g++-4.3&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;# update-alternatives --remove-all gcc&lt;/div&gt;&lt;div style="color: red;"&gt;# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 41 --slave /usr/bin/g++ g++ /usr/bin/g++-4.3 --slave /usr/bin/gcov gcov /usr/bin/g++-4.3&lt;/div&gt;&lt;div style="color: red;"&gt;# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 41 --slave /usr/bin/g++ g++ /usr/bin/g++-4.1 --slave /usr/bin/gcov gcov /usr/bin/g++-4.1&lt;/div&gt;&lt;br /&gt;顯示所有的版本&lt;br /&gt;&lt;div style="color: red;"&gt;# update-alternatives --display gcc&lt;/div&gt;&lt;br /&gt;設定所要選擇的版本&lt;br /&gt;&lt;span style="color: red;"&gt;# update-alternatives --config gcc&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-7700556131243984886?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/7700556131243984886/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/06/update-alternative-for-gcc.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7700556131243984886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7700556131243984886'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/06/update-alternative-for-gcc.html' title='update-alternatives for gcc'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-6829873527355592578</id><published>2010-06-18T00:04:00.000+08:00</published><updated>2010-06-18T00:04:09.407+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Programming'/><title type='text'>Linux Kernel Headers</title><content type='html'>在編譯程式時，有時會需要Linux kernel header。除了用套件管理程式下載外，也可自己去下載Linux Kernel Source下來，透過下面指令安裝到指定的目錄下。&lt;br /&gt;&lt;br /&gt;解壓縮完成後：&lt;br /&gt;# make ARCH=$ARCH headers_check&lt;br /&gt;# make ARCH=$ARCG INSTALL_HDR_PATH=$HEADER_DIR headers_install&lt;br /&gt;&lt;br /&gt;$ARCH為處理器的架構平台，如ppc, arm等。&lt;br /&gt;$HEADER_DIR為Header欲安裝的目的資料夾所在。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-6829873527355592578?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/6829873527355592578/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/06/linux-kernel-headers.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6829873527355592578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6829873527355592578'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/06/linux-kernel-headers.html' title='Linux Kernel Headers'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-22506400174087016</id><published>2010-05-30T19:59:00.005+08:00</published><updated>2010-06-01T23:07:35.940+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>vim同時編輯多個檔案</title><content type='html'>vim也具有同時開啟及編輯多個檔案的能力：&lt;br /&gt;&lt;br /&gt;介紹兩種方法：&lt;br /&gt;&lt;br /&gt;第一種是同時開啟多個檔案 &lt;br /&gt;&lt;b&gt;# vim -p file1 file2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;操作指令如下：&lt;br /&gt;:&lt;b&gt;tabe file3&lt;/b&gt; 開啟一個新分頁file3檔案 &lt;br /&gt;:&lt;b&gt;tabn&lt;/b&gt; 編輯下一個檔案&lt;br /&gt;:&lt;b&gt;tabp&lt;/b&gt; 編輯前一個檔案&lt;br /&gt;&lt;br /&gt;若覺得切換分頁麻煩可以在vimrc設定&lt;br /&gt;&lt;b&gt;nmap &lt;f3&gt;&amp;lt;F3&amp;gt;:tabn&amp;lt;ENTER&amp;gt;&lt;/f3&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;nmap &lt;f4&gt; &lt;/f4&gt;&lt;/b&gt;&lt;b&gt;&amp;lt;F4&amp;gt;&lt;/b&gt;&lt;b&gt;&lt;f4&gt;:tabp&amp;lt;ENTER&amp;gt;&lt;/f4&gt;&lt;/b&gt;&lt;br /&gt;如此便可用F3、F4鍵來快速切換分頁&lt;br /&gt;&lt;br /&gt;第二種則類似分割視窗的作法&lt;br /&gt;在vim命令模式&lt;br /&gt;&lt;b&gt;:sp file2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;畫面便會被分割，切換檔案方式如下：&lt;br /&gt;&lt;b&gt;[ctrl]+w+[↓↑]&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-22506400174087016?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/22506400174087016/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/05/vim.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/22506400174087016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/22506400174087016'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/05/vim.html' title='vim同時編輯多個檔案'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-3728865344418321905</id><published>2010-05-27T23:55:00.000+08:00</published><updated>2010-05-27T23:55:35.853+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux上偵測Memory Leak</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Memory_leak"&gt;Memory leak&lt;/a&gt;一不小心就會發生，往往很難去發現。在Linux有開發程式，可以利用&lt;a href="http://www.valgrind.org/"&gt;Valgrind&lt;/a&gt;這套軟體來偵測程式是否有Leak發生。&lt;br /&gt;&lt;br /&gt;Valgrind不僅可偵測Memory Leak，也可以偵測Invalid Pointer和使用未初始化的變數。&lt;br /&gt;&lt;br /&gt;Debian：&lt;br /&gt;&lt;b&gt;# apt-get install valgrind&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;使用方法：&lt;br /&gt;&lt;b&gt;# valgrind --tool=memcheck --leak-check=yes 欲執行的程式 &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cprogramming.com/debugging/valgrind.html"&gt;詳細說明&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-3728865344418321905?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/3728865344418321905/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/05/linuxmemory-leak.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3728865344418321905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3728865344418321905'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/05/linuxmemory-leak.html' title='Linux上偵測Memory Leak'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-7816801919004588373</id><published>2010-05-25T23:37:00.000+08:00</published><updated>2010-05-25T23:37:33.928+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>相信天上會掉下禮物</title><content type='html'>每次統一發票對獎時，心中總是會充滿期待，期待兩百萬就這麼入袋，但事與願違，兩百塊都中不了。&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/4941669268429063951-7816801919004588373?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/7816801919004588373/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/05/blog-post_25.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7816801919004588373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7816801919004588373'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/05/blog-post_25.html' title='相信天上會掉下禮物'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-1558409471451996590</id><published>2010-05-24T23:22:00.000+08:00</published><updated>2010-05-24T23:22:56.866+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>新三國</title><content type='html'>小時候因為一本三國演義讓我迷上了三國，高中架了一個三國網站，書櫃也擺著一整排的三國書籍。&lt;br /&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/_5tR_EN3L2UA/S_qZdm4cEeI/AAAAAAAABxI/bWHKhJyFSj0/s1600/aa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_5tR_EN3L2UA/S_qZdm4cEeI/AAAAAAAABxI/bWHKhJyFSj0/s400/aa.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&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/4941669268429063951-1558409471451996590?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/1558409471451996590/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/05/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1558409471451996590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1558409471451996590'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/05/blog-post.html' title='新三國'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5tR_EN3L2UA/S_qZdm4cEeI/AAAAAAAABxI/bWHKhJyFSj0/s72-c/aa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-6854403654552229430</id><published>2010-05-15T23:51:00.003+08:00</published><updated>2010-05-16T00:23:43.537+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>exim4外寄郵件伺服器</title><content type='html'>在Debian如何透過exim4設定外寄郵件伺服器來寄信(以gmail以及hotmail為例)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# dpkg-reconfigure exim4-config&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;在smarthost的設定填入對應的值&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;gmail&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;smtp.gmail.com::587&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;hotmail&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;smtp.live.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# vim /etc/exim4/passwd.client&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;gmail&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;gmail-smtp.1.google.com:帳號@gmail.com:密碼&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*.google.com:帳號:密碼&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;smtp.gmail.com:帳號@gmail.com:密碼&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;hotmail&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;smtp.live.com:帳號@hotmail.com:密碼&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;重新讀取設定&lt;br /&gt;# /etc/init.d/exim4 reload&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-6854403654552229430?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/6854403654552229430/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/05/exim4.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6854403654552229430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6854403654552229430'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/05/exim4.html' title='exim4外寄郵件伺服器'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-6451864476134147630</id><published>2010-04-18T22:30:00.003+08:00</published><updated>2010-04-18T23:21:22.826+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Programming'/><title type='text'>mmap</title><content type='html'>Mapped memory允許不同的Process透過Shared file來溝通，mmap()可以將檔案mapping到 process's address space中，好處是可以加速檔案的存取。&lt;br /&gt;&lt;br /&gt;相關的函式：&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#include &amp;lt;sys/mman.h&amp;gt;&lt;br /&gt;void * mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);&lt;/span&gt;&lt;br /&gt;將檔案內容對應到記憶體&lt;br /&gt;addr: 指定記憶體的起始位址，若為NULL，Linux會自動選擇一個可用的位址。&lt;br /&gt;len: 對應的檔案的大小(byte)&lt;br /&gt;prot: 記體體的存取權限，以下常數OR&lt;br /&gt;&lt;br /&gt;PROT_READ - 可讀取&lt;br /&gt;PROT_WRITE - 可寫入&lt;br /&gt;PROT_EXEC - 可執行&lt;br /&gt;PROT_NONE - 不可存取&lt;br /&gt;&lt;br /&gt;flags :記憶體區段內容的修改方式&lt;br /&gt;&lt;br /&gt;MAP_FIXED - 記憶體位址必須是指定的address&lt;br /&gt;MAP_PRIVATE - 修改不會寫回原檔案&lt;br /&gt;MAP_SHARED - 修改會反應到原檔案&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;int msync(void *addr, size_t len, int flags);&lt;/span&gt;&lt;br /&gt;讓記憶體區段被修改的內容，寫回到對應該的檔案中&lt;br /&gt;addr: 記憶體的起始位址&lt;br /&gt;len: 記憶體區段的大小&lt;br /&gt;flags: 更新方式&lt;br /&gt;&lt;br /&gt;MS_ASYNC - 非同步寫入，不需馬上寫入&lt;br /&gt;MS_SYNC - 同步寫入，馬上寫入&lt;br /&gt;MS_INVALIDATE - 重新從檔案取得最新的資料&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;int munmap(void *addr, size_t len);&lt;/span&gt;&lt;br /&gt;釋放記憶體區段&lt;br /&gt;&lt;br /&gt;範例可參考此&lt;a href="http://www.makelinux.net/alp/037.htm"&gt;網頁&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-6451864476134147630?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/6451864476134147630/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/04/mmap.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6451864476134147630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6451864476134147630'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/04/mmap.html' title='mmap'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-8531693198759569024</id><published>2010-04-08T23:10:00.002+08:00</published><updated>2010-04-08T23:19:32.514+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>mutt寄信</title><content type='html'>在Linux用指令來寄信並加上附件，可以用mutt來完成。&lt;br /&gt;&lt;br /&gt;指令： mutt -a 附件檔案 -s 主旨 收件者，例：&lt;br /&gt;# mutt -a attachement.txt -s "Hello Mutt" &lt;a href="mailto:test@test.com"&gt;test@test.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;寄件者的Email可以設定在~/.muttrc&lt;br /&gt;my_hdr From: Name &amp;lt;E-Mail&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-8531693198759569024?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/8531693198759569024/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/04/mutt.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/8531693198759569024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/8531693198759569024'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/04/mutt.html' title='mutt寄信'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4670413747786341395</id><published>2010-03-17T23:17:00.002+08:00</published><updated>2010-03-21T22:27:08.004+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Programming'/><title type='text'>大量改檔名</title><content type='html'>若同一個資料夾裡，要用同樣的規則修改檔名，如所有為.dat副檔名要更名為.txt，可以寫一個簡單的shell script來完成。&lt;br /&gt;&lt;br /&gt;先了解變數替換的方法&lt;br /&gt;${var%word} - 由var變數內容的後端，向前刪除符合word關鍵字(最短部份)&lt;br /&gt;${var%%word} - 由var變數內容的後端，向前刪除符合word關鍵字(最長份)&lt;br /&gt;${var#word} - 由var變數內容的前端，向後刪除符合word關鍵字(最短部份)&lt;br /&gt;${var##word} - 由var變數內容的前端，向後刪除符合word關鍵字(最長部份)&lt;br /&gt;&lt;br /&gt;舉例：&lt;br /&gt;變數$abc = howard, john, tom&lt;br /&gt;# echo ${abc%,*}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;howard, john&lt;/span&gt;&lt;br /&gt;# echo ${abc%%,*}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;howard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;重新命名範例：將附檔名dat改為txt&lt;br /&gt;&lt;code&gt;#/bin/bash&lt;br /&gt;for i in *.dat&lt;br /&gt;do&lt;br /&gt;   mv $i "${i%dat}txt"&lt;br /&gt;done&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-4670413747786341395?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4670413747786341395/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/03/blog-post_17.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4670413747786341395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4670413747786341395'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/03/blog-post_17.html' title='大量改檔名'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-2505840564965544172</id><published>2010-03-14T21:37:00.007+08:00</published><updated>2010-04-18T23:45:39.619+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>strtok in C++</title><content type='html'>C++來實作類似strtok()的function&lt;br /&gt;&lt;br /&gt;&lt;code&gt;class StrTok : public vector&amp;lt;std::string&amp;gt; {&lt;br /&gt;public:&lt;br /&gt; StrTok(const string &amp;amp; strInput, const string &amp;amp; strDelim = " ,") {&lt;br /&gt;  string::size_type nHead, nTail;&lt;br /&gt;  nHead = strInput.find_first_not_of(strDelim, 0);&lt;br /&gt;  nTail = strInput.find_first_of(strDelim, nHead);&lt;br /&gt;&lt;br /&gt;  while(nHead != string::npos || nTail != string::npos) {&lt;br /&gt;push_back(strInput.substr(nHead, nTail - nHead));&lt;br /&gt;nHead = strInput.find_first_not_of(strDelim, nTail);&lt;br /&gt;nTail = strInput.find_first_of(strDelim, nHead);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;};&lt;/code&gt;&lt;br /&gt;兩個參數，第一個參數為預切割的字串，第二個參數為切割的符號(預設為逗號)，因為是繼承vector，所以可以直接用vector的function去存取切割後的字串。範例如下：&lt;br /&gt;&lt;br /&gt;&lt;code&gt;StrTok tok("howard, john");&lt;br /&gt;for(StrTok::size_type i = 0; i &amp;lt; tok.size(); i++)&lt;br /&gt;cout &amp;lt;&amp;lt; tok[i];&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-2505840564965544172?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/2505840564965544172/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/03/strtok-in-c.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2505840564965544172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2505840564965544172'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/03/strtok-in-c.html' title='strtok in C++'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-6128773562834512461</id><published>2010-03-11T22:24:00.006+08:00</published><updated>2010-04-10T01:04:11.702+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>MySQL最大連線數</title><content type='html'>MySQL的最大連線數可以透過my.cnf設定檔來設定&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;max_connections = 200&lt;/span&gt; (若沒有設定，預設值為100)。&lt;br /&gt;&lt;br /&gt;上述方法需重新啟動MySQL才能套用設定，另一種方法則是直接下指令，缺點就是下次重啟動時還是會回到原設定&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mysql&gt; set global max_connections = 200;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;透過以下指來可查看此參數設定。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mysql&gt; show variables;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;至於目前的連線數，可透過Threads_connected來得知，動態變化，可透過以下指令得知目前連線數&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mysql&gt; show status;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;此外&lt;/span&gt;&lt;span&gt;，若&lt;/span&gt;&lt;span&gt;發現MySQL的連線數出現異常，如短時間爆增連線，可以用以下指令來找尋目前的連線狀態，找出當下SQL Query的指令與來源。&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;mysql&gt; show full processlist;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;若有異常的指令，可以下kill來刪除該指令&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mysql&gt; kill [id]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-6128773562834512461?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/6128773562834512461/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/03/mysql.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6128773562834512461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6128773562834512461'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/03/mysql.html' title='MySQL最大連線數'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-6673880215128173515</id><published>2010-03-07T23:33:00.003+08:00</published><updated>2010-03-07T23:41:26.188+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Programming'/><title type='text'>命令執行</title><content type='html'>在Shell Script常常會需要抓取或是儲存執行某個指令的結果。舊式的寫法是用反引號`cmd`，要注意的一點就是符號不是單引號(')。而新式的寫法是採用$(cmd)。&lt;br /&gt;&lt;br /&gt;舊式：&lt;br /&gt;echo The current date is `date`&lt;br /&gt;&lt;br /&gt;新式&lt;br /&gt;echo The current date is $(date)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-6673880215128173515?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/6673880215128173515/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/03/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6673880215128173515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6673880215128173515'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/03/blog-post.html' title='命令執行'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-8345889931346139135</id><published>2010-03-07T00:00:00.002+08:00</published><updated>2010-03-07T00:08:17.592+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>F2 重新命名</title><content type='html'>在Windows作業系統，在圖示按兩下便可以更改檔名，然而在Linux下的桌面環境，點兩下卻是沒有回應，要按右鍵屬性去修改，感覺有些麻煩。現在才發現有一個更快的方法，那就是F2鍵就如同在圖示點兩下，Windows也適用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-8345889931346139135?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/8345889931346139135/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/03/f2.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/8345889931346139135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/8345889931346139135'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/03/f2.html' title='F2 重新命名'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-9174517613440322682</id><published>2010-02-20T23:44:00.003+08:00</published><updated>2010-02-20T23:48:20.196+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Html'/><title type='text'>網頁轉址</title><content type='html'>常常忘記語法，先記下來。&lt;br /&gt;&amp;lt;meta http-equiv="refresh" content="0; url=xxx.html"&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-9174517613440322682?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/9174517613440322682/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/02/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/9174517613440322682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/9174517613440322682'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/02/blog-post.html' title='網頁轉址'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5489409840302461498</id><published>2010-01-03T22:52:00.002+08:00</published><updated>2010-01-03T22:58:18.040+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Programming'/><title type='text'>Daemon Tutorial</title><content type='html'>參考一份&lt;a href="http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html"&gt;文件&lt;/a&gt;，介紹寫Daemon程式所需要的基本步驟：&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Fork off the parent process&lt;/span&gt;&lt;br /&gt;利用fork()脫離父程序，成為init的子程序&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Change file mode mask&lt;/span&gt;&lt;br /&gt;利用umask()控制Daemon所建立的檔案權限&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Open any logs for writing&lt;/span&gt;&lt;br /&gt;可透過寫檔或是syslog來記錄執行的過程&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Create a unique Session ID&lt;/span&gt;&lt;br /&gt;利用setsid()建立新的session並脫離tty&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Change the current working directory to a safe place&lt;/span&gt;&lt;br /&gt;利用chdir()來改變工作目錄(用意不太清楚)&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6. Close standard file descriptors&lt;/span&gt;&lt;br /&gt;因為Daemon不會使用terminal，所以關閉不必要的descriptors&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7. Enter actual daemon code&lt;/span&gt;&lt;br /&gt;Daemon所要執行的程式&lt;br /&gt;&lt;br /&gt;程式碼架構可參考此&lt;a href="http://peterlombardo.wikidot.com/linux-daemon-in-c"&gt;網站&lt;/a&gt;&lt;br /&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;syslog.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define DAEMON_NAME "MyDaemon"&lt;br /&gt;&lt;br /&gt;int main(int argc, char** argv)&lt;br /&gt;{&lt;br /&gt; pid_t pid, sid;&lt;br /&gt;&lt;br /&gt; // Change file mode mask&lt;br /&gt; umask(0); &lt;br /&gt; &lt;br /&gt; // Open logs for writing&lt;br /&gt; openlog(DAEMON_NAME, LOG_CONS | LOG_NDELAY | LOG_PID, LOG_USER);&lt;br /&gt; syslog(LOG_NOTICE, "%s daemon started", DAEMON_NAME);&lt;br /&gt;&lt;br /&gt; pid = fork();&lt;br /&gt; if(pid &amp;lt; 0) {&lt;br /&gt;  syslog(LOG_ERR, "Fail to fork a process");&lt;br /&gt;  exit(EXIT_FAILURE);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; // Fork off the parent process&lt;br /&gt; if(pid &amp;gt; 0) {&lt;br /&gt;  exit(EXIT_SUCCESS);&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; // Create a unique Session ID&lt;br /&gt; sid = setsid();&lt;br /&gt; if(sid &amp;lt; 0) {&lt;br /&gt;  syslog(LOG_ERR, "Fail to create a new Session ID");&lt;br /&gt;  exit(EXIT_FAILURE);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; // Change the current working directory&lt;br /&gt; if((chdir("/") &amp;lt; 0)) {&lt;br /&gt;  syslog(LOG_ERR, "Fail to change the current working directory");&lt;br /&gt;  exit(EXIT_FAILURE);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; // Close out the standard file descriptiors&lt;br /&gt; close(STDIN_FILENO);&lt;br /&gt; close(STDOUT_FILENO);&lt;br /&gt; close(STDERR_FILENO);&lt;br /&gt; &lt;br /&gt; //******************************************************************&lt;br /&gt; // Insert the daemon process&lt;br /&gt; //******************************************************************&lt;br /&gt; &lt;br /&gt; exit(EXIT_SUCCESS);&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-5489409840302461498?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5489409840302461498/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2010/01/daemon-tutorial.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5489409840302461498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5489409840302461498'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2010/01/daemon-tutorial.html' title='Daemon Tutorial'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5589419223974494846</id><published>2009-12-17T22:47:00.003+08:00</published><updated>2010-01-03T23:00:48.295+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>格式化輸出</title><content type='html'>今天在寫Shell script時，需要用到格式化輸出，例如要串接001~100，可以用for迴圈加上printf達成：&lt;br /&gt;&lt;br /&gt;for number in $(seq 1 100)&lt;br /&gt;do&lt;br /&gt;format=`printf %.03d $number`&lt;br /&gt;# Do something else&lt;br /&gt;done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-5589419223974494846?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5589419223974494846/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/12/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5589419223974494846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5589419223974494846'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/12/blog-post.html' title='格式化輸出'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5613425065978415483</id><published>2009-12-12T01:15:00.001+08:00</published><updated>2009-12-12T01:17:30.871+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Programming'/><title type='text'>Pipe</title><content type='html'>當兩個不同的Process要溝通時，我們可以用pipe來達成。簡單來說，pipe就像是一條水管，連接兩個Process，其中一端寫入資料到水管，另一端便可從水管中讀出此資料。&lt;br /&gt;&lt;br /&gt;建立pipe：&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;int pipe(int pipefd[2]);&lt;br /&gt;&lt;br /&gt;呼叫pipe()來建立pipe，其參數int pipefd[2]是用來回傳兩個file descriptors，pipefd[0]代表的是pipe的讀取端，pipefd[1]則是pipe的寫入端。&lt;br /&gt;&lt;br /&gt;簡單範例：&lt;br /&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt; int pipefd[2];&lt;br /&gt; pipe(pipefd);&lt;br /&gt; &lt;br /&gt; char writeBuf[] = "Hello pipe!";&lt;br /&gt; write(pipefd[1], writeBuf, strlen(writeBuf));&lt;br /&gt; &lt;br /&gt; char readBuf[20];&lt;br /&gt; int n = read(pipefd[0], readBuf, 20);&lt;br /&gt; readBuf[n] = 0;&lt;br /&gt; printf("%s\n", readBuf);&lt;br /&gt; &lt;br /&gt; return 0;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;接下來就將單一Process擴展到不同的Process，寫出ls | wc -l，也就是計算當前目錄下有幾個檔案。&lt;br /&gt;先利用fork產生Child Process，再叫用execlp()執行外部指令。&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt; int pipefd[2];&lt;br /&gt; pipe(pipefd);&lt;br /&gt; &lt;br /&gt; pid_t pid = fork();&lt;br /&gt; if(pid != 0) {&lt;br /&gt;  close(pipefd[1]);&lt;br /&gt;  dup2(pipefd[0], 0);&lt;br /&gt;  close(pipefd[0]);&lt;br /&gt;  execlp("wc", "wc", "-l", NULL);&lt;br /&gt; }&lt;br /&gt; else {&lt;br /&gt;  close(pipefd[0]);&lt;br /&gt;  dup2(pipefd[1], 1);&lt;br /&gt;  close(pipefd[1]);&lt;br /&gt;  &lt;br /&gt;  execlp("ls", "ls", NULL);&lt;br /&gt; } &lt;br /&gt; return 0;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;由於fork會使pipefd[0], pipefd[1]產生兩份，記得把不必要的Descriptor關閉，可避免不當的操作。&lt;br /&gt;比較需要注意的便是dup2()的用法，dup2(pipefd[0], 0)可以把它想成複製pipefd[0]且當作是標準輸入(stdin)，如此wc -l從stdin讀資料就會從pipe中讀取。&lt;br /&gt;可參考此&lt;a href="http://jan.newmarch.name/ProgrammingUnix/ipc/lecture.html"&gt;網頁&lt;/a&gt;的說明，便能明白dup2()的用意。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-5613425065978415483?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5613425065978415483/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/12/pipe.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5613425065978415483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5613425065978415483'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/12/pipe.html' title='Pipe'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-6200351548722479679</id><published>2009-12-09T22:17:00.001+08:00</published><updated>2009-12-09T22:17:58.816+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>freopen()</title><content type='html'>當我們想要redirect我們的標準輸出(stdout)或標準輸入(stdin)到某一個檔案，可以使用freopen()來達成。&lt;br /&gt;FILE *freopen(const char *path, const char *mode, FILE *stream);&lt;br /&gt;&lt;br /&gt;以下是簡單小範例&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;int main() {&lt;br /&gt;freopen("test.txt", "w", stdout);&lt;br /&gt;std::cout  &amp;lt;&amp;lt; "Hello freopen()" &amp;lt;&amp;lt std::endl;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;執行時，便不會看到任何輸出，而是會出現在test.txt檔案裡。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-6200351548722479679?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/6200351548722479679/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/12/freopen.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6200351548722479679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6200351548722479679'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/12/freopen.html' title='freopen()'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-3424091380408385280</id><published>2009-11-29T23:17:00.002+08:00</published><updated>2009-11-29T23:22:37.401+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Programming'/><title type='text'>簡單的COM範例</title><content type='html'>簡單的COM範例&lt;br /&gt;&lt;br /&gt;環境：Visual C++ 2008&lt;br /&gt;&lt;br /&gt;1. 新增一個ATL專案，取名叫SimpleATL，伺服程式類型選擇DLL。&lt;br /&gt;2. 在類別檢視下，可以看見SimpleATL類別，按右鍵加入類別，選擇ATL簡單物件，簡短名稱就設為MyATL。&lt;br /&gt;3. 接著就是在IMyATL interface加上method。在IMyATL按右鍵加入method，方法名稱為Add，參數屬性為：&lt;br /&gt;[in] LONG lNum1, [in] LONG lNum2, [out] LONG * plResult&lt;br /&gt;4. 實作Add Method&lt;br /&gt;&lt;code&gt;STDMETHODIMP CMyATL::Add(LONG lNum1, LONG lNum2, LONG * plResult)&lt;br /&gt;{&lt;br /&gt; *plResult = lNum1 + lNum2;&lt;br /&gt; return S_OK;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;5. 建置專案即完成。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接著我們就用VC++來寫程式來使用這個COM&lt;br /&gt;建立一個新的Win32 Console Application，選擇主控台應用程式和空專案選項。&lt;br /&gt;先將SimpleATL_i.h及SimpleATL_i.c複製並加入到這個專案資料夾。&lt;br /&gt;新增TestATL.cpp&lt;br /&gt;&lt;code&gt;#include "SimpleATL_i.h"&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;void main(void)&lt;br /&gt;{&lt;br /&gt; HRESULT   hr;&lt;br /&gt; IMyATL  *pIMyATL;&lt;br /&gt;&lt;br /&gt; hr = CoInitialize(NULL);&lt;br /&gt;&lt;br /&gt; if(SUCCEEDED(hr))&lt;br /&gt; {&lt;br /&gt;  hr = CoCreateInstance(CLSID_MyATL, NULL, CLSCTX_INPROC_SERVER, IID_IMyATL, (void**) &amp;pIMyATL);&lt;br /&gt;&lt;br /&gt;  if(SUCCEEDED(hr))&lt;br /&gt;  {&lt;br /&gt;   long lResult;&lt;br /&gt;&lt;br /&gt;   hr = pIMyATL-&gt;Add(5, 10, &amp;lResult);&lt;br /&gt;   cout &lt;&lt; "5 + 10 = " &lt;&lt; lResult &lt;&lt; endl;&lt;br /&gt;   hr = pIMyATL-&gt;Release();&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;   cout &lt;&lt; "CoCreateInstance Failed." &lt;&lt; endl;&lt;br /&gt; }&lt;br /&gt; CoUninitialize();&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-3424091380408385280?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/3424091380408385280/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/11/com.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3424091380408385280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3424091380408385280'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/11/com.html' title='簡單的COM範例'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-1945347800994114117</id><published>2009-11-28T14:54:00.003+08:00</published><updated>2009-11-29T00:47:14.848+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix Socket Programming'/><title type='text'>SO_REUSEADDR</title><content type='html'>當一個Socket server如果重新啟動時，在bind的過程就會出現:Address already in use的錯誤訊息，必須等待TCP TIME_WAIT state的時間(2 * MSL)才能使用這個Address。為了避免這個問題發生，我們可以透過修改socket參數來讓socket可以馬上bind之前的Address。&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sock = socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;&lt;br /&gt;int on = 1;&lt;br /&gt;int status = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&amp;on, sizeof(on));&lt;br /&gt;if (status == -1)&lt;br /&gt;    perror("setsockopt() error");&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-1945347800994114117?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/1945347800994114117/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/11/soreuseaddr.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1945347800994114117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1945347800994114117'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/11/soreuseaddr.html' title='SO_REUSEADDR'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4679883074941262568</id><published>2009-11-28T00:47:00.003+08:00</published><updated>2009-11-29T23:23:52.052+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Programming'/><title type='text'>簡單的DLL範例</title><content type='html'>簡單的DLL範例&lt;br /&gt;&lt;br /&gt;環境：Visual C++ 2008&lt;br /&gt;&lt;br /&gt;建立一個新的，選擇Win32 Console Application&lt;br /&gt;最後選擇DLL和Empty Porject選項&lt;br /&gt;&lt;br /&gt;建立AddInt.h及AddInt.cpp&lt;br /&gt;&lt;br /&gt;AddInt.h&lt;br /&gt;&lt;code&gt;#ifndef _ADD_INT_H_&lt;br /&gt;#define _ADD_INT_H_&lt;br /&gt;&lt;br /&gt;#define DLLExport   __declspec( dllexport )&lt;br /&gt;&lt;br /&gt;extern "C"&lt;br /&gt;{&lt;br /&gt; DLLExport int Add(int a, int b);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#endif&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;function必須export才能被使用，有兩種方法可以使用：&lt;br /&gt;使用 __declspec這個關鍵字&lt;br /&gt;建立一個Module-Definition File (.DEF)&lt;br /&gt;&lt;br /&gt;至於為什麼要加入extern "C"&lt;br /&gt;因為C++ compiler在編譯時會將function name作一些修飾也就是改名字的動作(mangle)&lt;br /&gt;加入extern "C"則可保留原名&lt;br /&gt;&lt;br /&gt;AddInt.cpp&lt;br /&gt;&lt;code&gt;#include "DLLTutorial.h"&lt;br /&gt;&lt;br /&gt;int Add(int a, int b) {&lt;br /&gt; return a + b;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Build Project即完成，我們會在資料夾找到AddInt.dll及AddInt.lib&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接著我們就寫一個程式來使用這個DLL&lt;br /&gt;&lt;br /&gt;可以用兩種方式來使用DLL&lt;br /&gt;&lt;br /&gt;Implicit Linking - 程式需link到AddInt.lib，並將AddInt.dll放在與程式同目錄下&lt;br /&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include "AddInt.h"&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; std::cout &amp;lt;&amp;lt; Add(5, 10) &amp;lt;&amp;lt; std::endl;&lt;br /&gt; &lt;br /&gt;   return 0;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Explicit Linking - 不需要AddInt.lib及AddInt.Lib，僅需要AddInt.dll，但使用較為複雜。&lt;br /&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;&lt;br /&gt;typedef int (*pfAddIntFunction)(int,int);&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    pfAddIntFunction pfAddInt ;&lt;br /&gt;   &lt;br /&gt;    HINSTANCE hLibrary = LoadLibrary(L"AddInt.dll");&lt;br /&gt;&lt;br /&gt;    if(hLibrary)&lt;br /&gt;    {&lt;br /&gt;       pfAddInt = (pfAddIntFunction)GetProcAddress(hLibrary, "Add");&lt;br /&gt;      &lt;br /&gt;      if(pfAddInt)&lt;br /&gt;      {&lt;br /&gt;         std::cout &amp;lt;&amp;lt; pfAddInt(5, 10) &amp;lt;&amp;lt; std::endl;&lt;br /&gt;      }&lt;br /&gt;      &lt;br /&gt;      FreeLibrary(hLibrary);&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;      std::cout &amp;lt;&amp;lt; "Failed To Load Library" &amp;lt;&amp;lt; std::endl;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-4679883074941262568?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4679883074941262568/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/11/dll.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4679883074941262568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4679883074941262568'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/11/dll.html' title='簡單的DLL範例'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-355594197885689525</id><published>2009-11-21T23:31:00.004+08:00</published><updated>2009-11-22T00:07:15.566+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Networks'/><title type='text'>NAT型態</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Network_address_translation"&gt;NAT&lt;/a&gt;的類型大致可分為四種：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Full cone NAT&lt;/li&gt;&lt;li&gt;(Address) Restricted cone NAT&lt;/li&gt;&lt;li&gt;Port-Restricted cone NAT &lt;/li&gt;&lt;li&gt;Symmetric NAT &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;假設在NAT下的主機A為(iIP, iPort)，實際對外為(eIP, ePort)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Full cone NAT：&lt;/strong&gt; 任何主機皆可透過(eIP, ePort)送封包給A。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(Address) Restricted cone NAT：&lt;/strong&gt;只有之前收過A送來封包的外部主機(hIP, any)，才可透過(eIP, ePort)送封包給A，不限定原來溝通的Port。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Port-Restricted cone NAT ：&lt;/strong&gt;同上，但外部主機只能用之前用的Port才能送封包給A。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Symmetric NAT：&lt;/strong&gt;同上，但A對每一個不同的(hIP, hPort)，也就是IP或Port的任何一值改變，其(eIP, ePort)就會不同。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-355594197885689525?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/355594197885689525/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/11/nat.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/355594197885689525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/355594197885689525'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/11/nat.html' title='NAT型態'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4155122331186757155</id><published>2009-11-21T00:54:00.003+08:00</published><updated>2009-11-21T15:23:57.071+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Ajax聊天室</title><content type='html'>雖說對網頁程式設計不是很在行，還是勉強用Ajax寫出一個簡單的聊天室。就我個人了解，Ajax主要就是透過Javascript發出Http Request給Server處理資料，然後採用非同步的方式，也就是網頁不必等到Response回應才能繼續作業。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.nchu.edu.tw/~s9556041/works/ajax/chatroom.html"&gt;程式碼&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;程式架構大致如下：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;用MySQL建立一個資料庫來儲存訊息&lt;/li&gt;&lt;li&gt;使用者一登入便會取得目前資料庫的最後一筆ID&lt;/li&gt;&lt;li&gt;網頁利用此ID定期向資料庫要求新的訊息&lt;/li&gt;&lt;li&gt;每當使用者輸入新資料，便會存入資料庫且立即執行第3個步驟&lt;/li&gt;&lt;/ol&gt;執行畫面如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5tR_EN3L2UA/SwbPQJUCqRI/AAAAAAAABsU/_wFt4v8PIZg/s1600/chatroom.png"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 333px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5406236278989695250" border="0" alt="" src="http://3.bp.blogspot.com/_5tR_EN3L2UA/SwbPQJUCqRI/AAAAAAAABsU/_wFt4v8PIZg/s400/chatroom.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-4155122331186757155?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4155122331186757155/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/11/ajax.html#comment-form' title='10 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4155122331186757155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4155122331186757155'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/11/ajax.html' title='Ajax聊天室'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5tR_EN3L2UA/SwbPQJUCqRI/AAAAAAAABsU/_wFt4v8PIZg/s72-c/chatroom.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-2874884116439617350</id><published>2009-11-17T22:07:00.006+08:00</published><updated>2010-06-06T00:21:13.808+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Dump Schema</title><content type='html'>若要匯出MySQL下某個資料庫的Schema，可以用mysqldump來達成：&lt;br /&gt;&lt;br /&gt;# mysqldump -d -u 使用者名稱 -p 欲備份的資料庫 &amp;gt;&amp;gt; FILENAME.sql&lt;br /&gt;&lt;br /&gt;例：&lt;br /&gt;# mysqldump -d -u howard -p account &amp;gt; account.sql&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;匯入到新的MySQL資料庫&lt;br /&gt;&lt;br /&gt;# mysql -u 使用者名稱 -p 資料庫 &amp;lt; account.sql&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-2874884116439617350?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/2874884116439617350/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/11/dump-schema.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2874884116439617350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2874884116439617350'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/11/dump-schema.html' title='Dump Schema'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-7508850836826127177</id><published>2009-10-27T22:19:00.003+08:00</published><updated>2009-10-27T23:06:21.619+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>CMake簡單範例</title><content type='html'>&lt;a href="http://www.cmake.org/"&gt;CMake&lt;/a&gt;是一個軟體建構工具，可以幫我們產生MakeFile。以下就用簡單的範例來呈現：&lt;br /&gt;我們有三個檔案main.cpp hello.cpp hello.h和三個CMakeLists.txt&lt;br /&gt;分別位於&lt;br /&gt;&lt;br /&gt;|-- CMakeLists.txt&lt;br /&gt;|-- lib&lt;br /&gt;| |-- CMakeLists.txt&lt;br /&gt;| |-- hello.cpp&lt;br /&gt;| |-- hello.h&lt;br /&gt;|-- src&lt;br /&gt;|-- CMakeLists.txt&lt;br /&gt;|-- main.cpp&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;hello.h&lt;/span&gt;&lt;br /&gt;&lt;code&gt;void hello();&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;hello.cpp&lt;/span&gt;&lt;br /&gt;&lt;code&gt;#include "hello.h"&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;void hello() {&lt;br /&gt;std::cout &amp;lt;&amp;lt; "Hello CMake!" &amp;lt;&amp;lt; std::endl;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;main.cpp&lt;/span&gt;&lt;br /&gt;&lt;code&gt;#include "hello.h"&lt;br /&gt;int main() {&lt;br /&gt;hello();&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;最上層的CMakeLists.txt&lt;/span&gt;&lt;br /&gt;PROJECT (HELLO)&lt;br /&gt;# 加入兩個子資料夾(src後面bin的意思是將src的輸出放到bin資料夾)&lt;br /&gt;ADD_SUBDIRECTORY (src bin)&lt;br /&gt;ADD_SUBDIRECTORY (lib)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;lib/CMakeLists.txt&lt;/span&gt;&lt;br /&gt;# 將hello.cpp編譯成static library&lt;br /&gt;ADD_LIBRARY (HelloLibrary hello.cpp)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;src/CMakeLists.txt&lt;/span&gt;&lt;br /&gt;INCLUDE_DIRECTORIES (${HELLO_SOURCE_DIR}/lib)&lt;br /&gt;SET (HELLO_SRCS main.cpp)&lt;br /&gt;ADD_EXECUTABLE (HelloCMake HELLO_SRCS)&lt;br /&gt;TARGET_LINK_LIBRARIES (HelloCMake HelloLibrary)&lt;br /&gt;&lt;br /&gt;在執行cmake前，我們可以在最上層先建立一個目錄(例如：build)，然後到build目錄下執行cmake，如此cmake後產生的資料皆會在build資料夾裡。&lt;br /&gt;# mkdir build&lt;br /&gt;# cd build&lt;br /&gt;# cmake ../&lt;br /&gt;# make&lt;br /&gt;&lt;br /&gt;若順利的話，便可在bin找到HelloCMake執行檔，在lib可找到libHelloLibrary.a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-7508850836826127177?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/7508850836826127177/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/10/cmake.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7508850836826127177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7508850836826127177'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/10/cmake.html' title='CMake簡單範例'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-526723902963108217</id><published>2009-10-24T23:44:00.004+08:00</published><updated>2009-10-25T00:29:49.588+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>FastCGI</title><content type='html'>FastCGI是一個網頁伺服器端應用程式介面，CGI有一個很大的缺點就是CGI程式每次執行就會產生一個新的process，當同時很多人上線時，會對伺服器造成很大負擔；而FastCGI程式是常駐型的CGI程式，不會因為Http_Request結束而終止。&lt;br /&gt;&lt;br /&gt;在Debian 5安裝Apache2 + FastCGI&lt;br /&gt;# apt-get install apache2 libapache2-mod-fastcgi&lt;br /&gt;# /etc/init.d/apache2 restart&lt;br /&gt;&lt;br /&gt;接著用c寫一個helloFCGI的程式來驗証：&lt;br /&gt;&lt;code&gt;#include "fcgi_stdio.h"&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    int count = 0;&lt;br /&gt;    while(FCGI_Accept() &amp;gt;= 0) {&lt;br /&gt;        printf("Content-type: text/html\r\n"&lt;br /&gt;               "\r\n"&lt;br /&gt;               "&amp;lt;title&amp;gt;Hello FastCGI&amp;lt;/title&amp;gt;"&lt;br /&gt;               "&amp;lt;h1&amp;gt;Hello FastCGI&amp;lt;/h1&amp;gt;"&lt;br /&gt;               "Request number %d running on host &amp;lt;i&amp;gt;%s&amp;lt;/i&amp;gt;\n",&lt;br /&gt;               ++count, getenv("SERVER_NAME"));&lt;br /&gt;    }&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;編譯時要加上-lfcgi參數&lt;br /&gt;# gcc -lfcgi -o helloFCGI.fcgi helloFCGI.c&lt;br /&gt;&lt;br /&gt;將helloFCGI.fcgi放到所設定的FastCGI執行的資料夾內(Debian安裝好的預設資料夾在/usr/lib/cgi-bin)，在網頁執行http://localhost/cgi-bin/helloFCGI.fcgi即可看到結果。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-526723902963108217?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/526723902963108217/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/10/fastcgi.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/526723902963108217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/526723902963108217'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/10/fastcgi.html' title='FastCGI'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-65530082360974169</id><published>2009-10-07T22:38:00.008+08:00</published><updated>2009-10-08T00:20:12.792+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Windows Multithreaded Programming</title><content type='html'>要建立多執行緒程式，我們會用到&amp;lt;process.h&amp;gt;標頭檔定義的函式：&lt;br /&gt;&lt;br /&gt;&lt;code&gt;uintptr_t _beginthread(&lt;br /&gt;&lt;br /&gt;void( __cdecl *start_address )( void * ),&lt;br /&gt;unsigned stack_size,&lt;br /&gt;void *arglist&lt;br /&gt;&lt;br /&gt;);&lt;/code&gt;&lt;br /&gt;_beginthread()需要三個參數，第一個是要執行緒所執行的函式名稱(注意這個函式的prototype)；第二個參數為給這個執行緒的stack size，若設定0值則作業系統會自動設定此值；第三個參數可以用來傳遞資料給欲執行的函式。&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;#include &amp;lt;process.h&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;void func1(void *);&lt;br /&gt;void func2(void *);&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    _beginthread(func1, 0, NULL);&lt;br /&gt;    _beginthread(func2, 0, NULL);&lt;br /&gt;&lt;br /&gt;    Sleep(10000);&lt;br /&gt;    cout &lt;&lt; "Main exit" &lt;&lt; endl;&lt;br /&gt; getchar();&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void func1(void *p)&lt;br /&gt;{&lt;br /&gt;    for(int i = 1; i &lt; 6; ++i)&lt;br /&gt;  cout &lt;&lt; "func1 value " &lt;&lt; i &lt;&lt; endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void func2(void *p)&lt;br /&gt;{&lt;br /&gt;    for(int i = 1; i &lt; 6; ++i)&lt;br /&gt;  cout &lt;&lt; "func2 value " &lt;&lt; i &lt;&lt; endl;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;以下用簡單的範例說明：&lt;br /&gt;執行結果如下：&lt;br /&gt;&lt;a href="http://picasaweb.google.com.tw/lh/photo/883V-i8BVFHT9gxLNypWAw?authkey=Gv1sRgCNLAz4SP2b33Yw&amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_5tR_EN3L2UA/Ssy5g_qpZnI/AAAAAAAABqM/gRA-uVGOrfI/s400/thread.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這個結果可以發現兩個執行緒可以在任何時間點去插隊執行，若要避免這種情況發生，我們可以利用critical section來解決它。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-65530082360974169?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/65530082360974169/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/10/windows-multithreaded-programming.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/65530082360974169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/65530082360974169'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/10/windows-multithreaded-programming.html' title='Windows Multithreaded Programming'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_5tR_EN3L2UA/Ssy5g_qpZnI/AAAAAAAABqM/gRA-uVGOrfI/s72-c/thread.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5013610289876491540</id><published>2009-09-26T16:07:00.003+08:00</published><updated>2009-09-26T16:12:58.696+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>update-alternatives</title><content type='html'>Debian提供了update-alternatives的工具，可以用來管理套件的版本。例如：系統有三套Java的套件GIJ、GCJ和Sun Java，如何能自由且快速的切換不同版本。&lt;br /&gt;&lt;br /&gt;首先，先看一下java指令的路徑&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#which java&lt;/span&gt;&lt;br /&gt;/usr/bin/java&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ls -l /usr/bin/java&lt;/span&gt;&lt;br /&gt;/usr/bin/java -&gt; /etc/alternatives/java&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ls -l /etc/alternatives/java&lt;/span&gt;&lt;br /&gt;/etc/alternatives/java -&gt; /usr/lib/jvm/java-gcj/jre/bin/java&lt;br /&gt;&lt;br /&gt;我們可以看到java的指令用一個symbolic link連到/etc/alternatives/java，而/etc/alternatives/java又是一個symbolic link連到/usr/lib/jvm/java-gcj/jre/bin/java。&lt;br /&gt;所以update-alternatives就是將/etc/alternatives/java改掉。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-alternatives --display java&lt;/span&gt;&lt;br /&gt;java - status is auto.&lt;br /&gt;link currently points to /usr/lib/jvm/java-gcj/jre/bin/java&lt;br /&gt;/usr/bin/gij-4.2 - priority 42&lt;br /&gt;slave java.1.gz: /usr/share/man/man1/gij-4.2.1.gz&lt;br /&gt;/usr/lib/jvm/java-gcj/jre/bin/java - priority 1042&lt;br /&gt;/usr/lib/jvm/java-6-sun/jre/bin/java - priority 63&lt;br /&gt;slave java.1.gz: /usr/lib/jvm/java-6-sun-1.6.0.00/jre/man/man1/java.1.gz&lt;br /&gt;Current `best' version is /usr/lib/jvm/java-gcj/jre/bin/java.&lt;br /&gt;&lt;br /&gt;可以看到目前系統有gcj和Sun Java，由於status是auto，而gcj的優先權最高，所以可以最下面顯示目前最佳的版本是gcj。若要改變成java-6-sun：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# update-alternatives --config java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;即可選擇java-6-sun。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-5013610289876491540?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5013610289876491540/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/09/update-alternatives.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5013610289876491540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5013610289876491540'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/09/update-alternatives.html' title='update-alternatives'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-3081967177532155311</id><published>2009-09-22T17:47:00.003+08:00</published><updated>2009-09-22T17:53:47.852+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>ldd</title><content type='html'>ldd可以用來顯示每個程式所使用到的shared library。ldd其實是一個shell script而不是執行檔。&lt;br /&gt;&lt;br /&gt;在linux，我們可以將程式編譯成靜態連結或是動態連結，在這以hello.c來解釋。&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;int main(void) {&lt;br /&gt;printf("Hello world!\n");&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;用gcc編譯&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# gcc hello.c -o hello&lt;/span&gt;&lt;br /&gt;則會產生hello的執行檔，而其預設是使用動態連結的方式：&lt;br /&gt;&lt;br /&gt;用file指令來檢視其屬性&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# file hello&lt;/span&gt;&lt;br /&gt;hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), &lt;span style="color: rgb(255, 0, 0);"&gt;dynamically linked (uses shared libs)&lt;/span&gt;, for GNU/Linux 2.6.8, not stripped&lt;br /&gt;&lt;br /&gt;用ldd來檢視共用了哪些shared library&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ldd hello&lt;/span&gt;&lt;br /&gt;linux-gate.so.1 =&gt;  (0xb7f6a000)&lt;br /&gt;libc.so.6 =&gt; /lib/i686/cmov/libc.so.6 (0xb7dfd000)&lt;br /&gt;/lib/ld-linux.so.2 (0xb7f6b000)&lt;br /&gt;&lt;br /&gt;此外，此檔案的大小為&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ls -l hello&lt;/span&gt;&lt;br /&gt;-rwxr-xr-x 1 howard howard &lt;span style="color: rgb(255, 0, 0);"&gt;6256&lt;/span&gt; 2008-09-30 00:00 hello&lt;br /&gt;&lt;br /&gt;上述為程式使用動態連結，我們也可以將程式編譯成靜態連結：&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# gcc -static hello.c -o hello&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;用file來檢視，可以看到顯示為靜態連結&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# file hello&lt;/span&gt;&lt;br /&gt;hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), &lt;span style="color: rgb(255, 0, 0);"&gt;statically linked&lt;/span&gt;, for GNU/Linux 2.6.8, not stripped&lt;br /&gt;&lt;br /&gt;用ldd來檢視，自然沒使用到任何shared library&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ldd hello&lt;/span&gt;&lt;br /&gt;not a dynamic executable&lt;br /&gt;&lt;br /&gt;再來檢視檔案的大小&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ls -l hello&lt;/span&gt;&lt;br /&gt;-rwxr-xr-x 1 howard howard &lt;span style="color: rgb(255, 0, 0);"&gt;564881&lt;/span&gt; 2008-09-30 00:07 hello&lt;br /&gt;&lt;br /&gt;我們可以看到檔案大小為564881 Bytes，相對於之前用動態連結只用了6256 Bytes，足足大上快一百倍。可見使用動態連結能大大節省空間。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-3081967177532155311?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/3081967177532155311/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/09/ldd.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3081967177532155311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3081967177532155311'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/09/ldd.html' title='ldd'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-2148050516958653529</id><published>2009-09-18T09:55:00.003+08:00</published><updated>2009-09-18T10:08:31.018+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>解決JAVA中文顯示方塊</title><content type='html'>在Linux下執行Java程式時，常發現中文字體無法顯示，全部變成方塊，解決方法如下：&lt;br /&gt;&lt;br /&gt;# cd /usr/lib/jvm/java-6-sun/jre/lib/fonts/&lt;br /&gt;# mkdir fallback&lt;br /&gt;# cd fallback&lt;br /&gt;# ln -s /usr/share/fonts/truetype/arphic/uming.ttc .&lt;br /&gt;&lt;br /&gt;新增一個fallback資料夾，再將中文字體連結到資料夾內即可。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-2148050516958653529?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/2148050516958653529/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/09/java.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2148050516958653529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2148050516958653529'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/09/java.html' title='解決JAVA中文顯示方塊'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-9031471095458476851</id><published>2009-09-16T18:02:00.003+08:00</published><updated>2009-09-16T18:51:02.755+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>飛虎803T 登出</title><content type='html'>十一個月又八天的軍旅生涯，在早上拿著退伍令走出營門的那一刻終於結束，恢復成老百姓的感覺真好！&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/4941669268429063951-9031471095458476851?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/9031471095458476851/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/09/803t.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/9031471095458476851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/9031471095458476851'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/09/803t.html' title='飛虎803T 登出'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-9084759427192579703</id><published>2009-09-02T10:21:00.003+08:00</published><updated>2009-09-02T10:46:37.848+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>再見了！C-130</title><content type='html'>還記得第一次搭飛機的經驗就是坐上C-130運輸機，對於它的印象就是很吵，但由於免錢的因素所以每次休假返台幾乎都是搭軍機回家。昨天是軍旅生涯最後一次的休假了，應該也是最後一次能搭乘C-130。不知道為什麼最後一次的C-130特別舒適，起飛時就睡著了，醒來時已經在台北的天空翱翔。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5tR_EN3L2UA/Sp3b_KlucRI/AAAAAAAABo8/_bKTZwchAg4/s1600-h/C130.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 266px;" src="http://2.bp.blogspot.com/_5tR_EN3L2UA/Sp3b_KlucRI/AAAAAAAABo8/_bKTZwchAg4/s400/C130.jpg" alt="" id="BLOGGER_PHOTO_ID_5376695408371069202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;再見了！C-130&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-9084759427192579703?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/9084759427192579703/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/09/c-130.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/9084759427192579703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/9084759427192579703'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/09/c-130.html' title='再見了！C-130'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5tR_EN3L2UA/Sp3b_KlucRI/AAAAAAAABo8/_bKTZwchAg4/s72-c/C130.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-2430990527222258207</id><published>2009-08-13T23:06:00.002+08:00</published><updated>2009-08-13T23:13:47.787+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活常識'/><title type='text'>插座產生火花</title><content type='html'>剛在筆電快沒電時，將筆電的插頭插進插座時冒出火花，於是就查了一下是什麼原因會造成火花的出現。&lt;br /&gt;&lt;br /&gt;引用自 &lt;a href="http://enews.nfa.gov.tw/issue/940421/images/radio.htm"&gt;http://enews.nfa.gov.tw/issue/940421/images/radio.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;插頭在插入插座時，為何會有小小火花產生呢&lt;span lang="EN-US"&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;  &lt;p class="MsoBodyTextIndent2"&gt;插頭在插入插座時，經常會發現有小小火花，主要是因為電器用品在尚未通電之前已將開關打開或上次不使用後，只是將插頭把掉，但沒有把開關關掉，以致再使用時，直接插入插座時，便立即處於通電狀態，以致瞬間電流較高，又加上插頭長期未清理，插頭的兩隻腳&lt;span lang="EN-US"&gt;(正負兩極)間會逐漸堆積一些灰塵、毛髮，而這些灰塵、毛髮，如果碰到水氣，產生銅鏽，就有可能成為導體，造成插座兩極間出現一個迴路，而產生火花。&lt;b&gt;所以只要平時經常保持插頭銅片乾淨，且養成插頭插上插座後，再打開電器開關，既可以延長電器的壽命又可以避免因火花而引起的不必要災害。&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-2430990527222258207?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/2430990527222258207/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/08/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2430990527222258207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2430990527222258207'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/08/blog-post.html' title='插座產生火花'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-690127978105773013</id><published>2009-07-25T10:55:00.003+08:00</published><updated>2009-07-25T11:37:25.109+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>空軍軍歌</title><content type='html'>上次收假回部隊後，突然來了一個大驚喜，那就是單位新來了兩位新兵，這代表我終於擺脫菜島的身份。人多好辦事，相信應該可以快快樂樂的退伍才是。&lt;br /&gt;&lt;br /&gt;但也因這兩位新兵的加入，副主任要這兩位新兵學唱空軍軍歌，然後總班長叫我去教他們，所以我也不會唱的事也跟著露餡。不過，身為空軍卻不會唱空軍軍歌實在是說不過去，所以就趁這個時候學一下好了。&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/Ar2Xo40xwpM&amp;amp;hl=" width="425" height="344" type="application/x-shockwave-flash" fs="1&amp;amp;" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-690127978105773013?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/690127978105773013/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/07/blog-post_25.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/690127978105773013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/690127978105773013'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/07/blog-post_25.html' title='空軍軍歌'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4595713187373795470</id><published>2009-07-07T22:20:00.005+08:00</published><updated>2009-07-07T22:57:14.545+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>棒球夢</title><content type='html'>這次休假剛好遇到亞太區少棒錦標賽，在家看了兩場中華隊的比賽後，決定親自感受一下熱血的棒球，所以今天大約下午兩點左右就騎著車往青年公園方向前進。&lt;br /&gt;&lt;br /&gt;今天的比賽是中華隊vs.新加坡隊，在比賽開始前的守備練習，大約就可以看出實力的差距，中華隊的守備能力還蠻紮實的，傳球速度是又快又準。比賽結果也如預期，中華隊以12:0提早結束比賽，新加坡主要輸在被打了全壘打以及守備上的失誤。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Lu7LV0tJjFOkIMKR7hEaIg?authkey=Gv1sRgCNLAz4SP2b33Yw&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_5tR_EN3L2UA/SlNdIOM9xnI/AAAAAAAABms/ztJD_LJH7nw/s400/baseball0707.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;其實，今天會來看棒球的原因，除了為中華隊加油外，另一個目的就是想來青年公園走走。因為在這可以尋找到過去童年的回憶，記得小時候，我們全家常到青年公園打棒球、丟飛盤、放風箏等等，但距上次到青年公園已是八九年前的事了，記憶都模糊了。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/sgThmhljDg3DRz3fBwNa6g?authkey=Gv1sRgCNLAz4SP2b33Yw&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_5tR_EN3L2UA/SlNgfDxfIBI/AAAAAAAABm0/IyCtff-jcCw/s400/youthpark.jpg" /&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/4941669268429063951-4595713187373795470?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4595713187373795470/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/07/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4595713187373795470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4595713187373795470'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/07/blog-post.html' title='棒球夢'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_5tR_EN3L2UA/SlNdIOM9xnI/AAAAAAAABms/ztJD_LJH7nw/s72-c/baseball0707.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5068202417514459718</id><published>2009-07-06T14:38:00.010+08:00</published><updated>2009-07-07T01:04:30.090+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Algorithm'/><title type='text'>排列演算法</title><content type='html'>數學一向不是很好的我，一看到要列出某字串所有的排列(Permutation)，就讓我非常的頭大。記得當初要準備考研究所時就曾經看著資料結構書上的解法想了老半天，似懂非懂，但最近又看到類似的題目，證明了以前是裝懂。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;To iterate is human, to recurse divine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;遞迴的程式一定要在頭腦清楚時再來看，否則只是在浪費時間而已。這次，我真的看懂了。&lt;br /&gt;&lt;br /&gt;以{a, b, c, d}為例子，要列出所有的排列，我們可以將這個問題拆解成：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;開頭為a加上{b, c, d}的所有排列&lt;/li&gt;&lt;li&gt;開頭為b加上{a, c, d}的所有排列&lt;/li&gt;&lt;li&gt;開頭為c加上{a, b, d}的所有排列&lt;/li&gt;&lt;li&gt;開頭為d加上{a, b, c}的所有排列&lt;/li&gt;&lt;/ul&gt;所以，很明顯的是可以用遞迴方式來解。在此用C++來實作&lt;br /&gt;&lt;br /&gt;&lt;code&gt;void perm(char *obj, int pos, int n) {&lt;br /&gt;if(pos == n - 1) {&lt;br /&gt;        for(int i = 0; i &lt; n; ++i) cout &lt;&lt; obj[i] &lt;&lt; " ";&lt;br /&gt;        cout &lt;&lt; endl;&lt;br /&gt;    }&lt;br /&gt;    else {&lt;br /&gt;        for(int i = pos; i &lt; n; ++i) {&lt;br /&gt;// swap()是要自己寫的函式，交換陣列內的值&lt;br /&gt;            swap(obj[pos], obj[i]);&lt;br /&gt;            &lt;span style="font-weight:bold;"&gt;perm(obj, pos + 1, n);&lt;/span&gt;&lt;br /&gt;            swap(obj[pos], obj[i]);&lt;br /&gt;        }}}&lt;/code&gt;&lt;br /&gt;else內的for迴圈是整個程式的關鍵，可以用上面舉的例子來說明，假設obj陣列已經存了{a, b, c, d}四個值，我們呼叫perm(obj, 0, 4)來印出所有排列。for迴圈的解釋就如同將第一個位置分別用a, b, c, d為開頭，所以用了swap()把每一個值都對調到第一個位置，接著再呼叫perm(obj, 1, 4)來排列剩下的三個字元，依此類推。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-5068202417514459718?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5068202417514459718/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/07/permutation-to-iterate-is-human-to.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5068202417514459718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5068202417514459718'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/07/permutation-to-iterate-is-human-to.html' title='排列演算法'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-6669988149780969868</id><published>2009-06-10T11:23:00.003+08:00</published><updated>2009-06-10T12:10:49.497+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>軍旅生涯倒數</title><content type='html'>看到週遭的朋友一個一個退伍了，何時才會輪到我呢？至從上次點放在網咖裡寫了一個退伍倒數計時器放在部落格上，就這樣開始展開我的軍旅生涯倒數，很巧的是從123天開始。到現在已經剩下98天，敲敲的破百了，而破百的意義不外乎是從三位數變成兩位數，也就是可以準備開始打包行李了。&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/4941669268429063951-6669988149780969868?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/6669988149780969868/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/06/blog-post.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6669988149780969868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/6669988149780969868'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/06/blog-post.html' title='軍旅生涯倒數'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-3424007913355271669</id><published>2009-06-08T23:51:00.003+08:00</published><updated>2009-06-09T00:18:05.072+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UVa Online Judge'/><title type='text'>UVa 113 - Power of Cryptography</title><content type='html'>終於遇見一個秒殺的題目了，&lt;a href="http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=3&amp;amp;page=show_problem&amp;amp;problem=49"&gt;UVa 113 - Power of Cryptography&lt;/a&gt;這題只是單純的數字開根號問題，只要用&amp;lt;math.h&amp;gt;裡的pow(double x, double y)即可完成。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.nchu.edu.tw/%7Es9556041/code/acm/acm113.c"&gt;程式碼&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;因為有使用到&amp;lt;math.h&amp;gt;的函式，在用gcc編譯時要多一個-lm的參數。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-3424007913355271669?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/3424007913355271669/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/06/uva-113-power-of-cryptography.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3424007913355271669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/3424007913355271669'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/06/uva-113-power-of-cryptography.html' title='UVa 113 - Power of Cryptography'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-4184747303157612264</id><published>2009-06-05T10:06:00.004+08:00</published><updated>2009-06-05T10:56:42.487+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Debian GNU/Linux 5.0</title><content type='html'>將近要一年沒有碰Linux了，之前用的&lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt; GNU/Linux 5.0 (Lenny)都從測試版變成穩定版了。一時興起，決定再來重灌一下Debian。但這次不再選擇使用測試版本，雖說測試版本有許多較新的軟體可以使用，但更新頻率實在是太高了，有時正常的系統更新後就感覺變的怪怪的，然後就要花很多時間去搜集資料把問題解決。&lt;br /&gt;&lt;br /&gt;在安裝完後，通常我都會先做以下幾步驟：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;調整系統字型&lt;/li&gt;&lt;li&gt;更新顯示卡驅動程式&lt;br /&gt;&lt;/li&gt;&lt;li&gt;安裝gcin，並且新增嘸蝦米輸入法&lt;br /&gt;&lt;/li&gt;&lt;li&gt;到&lt;a href="http://www.gnome-look.org/"&gt;GNOME-Look.org&lt;/a&gt;找尋想要的桌布與佈景主題&lt;/li&gt;&lt;li&gt;調整登入畫面&lt;br /&gt;&lt;/li&gt;&lt;li&gt;安裝PCMan (主要用來PTT)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;安裝Audacious (聽音樂必備)&lt;/li&gt;&lt;li&gt;安裝aMSN&lt;/li&gt;&lt;/ul&gt;另外，由於感覺桌面顯示的圖示有點大，也順手將它變小。可在組態編輯器或在終端機輸入&lt;span style="font-weight: bold;"&gt;gconf-editor&lt;/span&gt;進入，選擇&lt;span style="font-weight: bold;"&gt;apps -&gt; nautilus -&gt; icon_view&lt;/span&gt;裡的&lt;span style="font-weight: bold;"&gt;default_zoom_level&lt;/span&gt;將&lt;span style="font-weight: bold;"&gt;standard&lt;/span&gt;改為&lt;span style="font-weight: bold;"&gt;small&lt;/span&gt;即可。&lt;br /&gt;&lt;br /&gt;以下即為安裝後的畫面&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5tR_EN3L2UA/SiiI2_BY8GI/AAAAAAAABcE/ZMr4OvNCNCs/s1600-h/desktop.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_5tR_EN3L2UA/SiiI2_BY8GI/AAAAAAAABcE/ZMr4OvNCNCs/s400/desktop.jpg" alt="" id="BLOGGER_PHOTO_ID_5343671436086669410" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-4184747303157612264?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/4184747303157612264/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/06/debian-gnulinux-50.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4184747303157612264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/4184747303157612264'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/06/debian-gnulinux-50.html' title='Debian GNU/Linux 5.0'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5tR_EN3L2UA/SiiI2_BY8GI/AAAAAAAABcE/ZMr4OvNCNCs/s72-c/desktop.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-1043488373701169473</id><published>2009-05-16T12:24:00.005+08:00</published><updated>2009-05-16T13:41:03.589+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>倒數計時器</title><content type='html'>當兵最在意的事是什麼呢？對我而言就是還剩幾天才能拿到退伍令。所以我就決定用JavaScript來寫一個倒數計時器放在部落格上。&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;script language="JavaScript"&amp;gt;&lt;br /&gt;var today = new Date();&lt;br /&gt;var endDay = new Date(2009, 9 - 1, 16);&lt;br /&gt;&lt;br /&gt;var diffDay = (endDay.getTime() - today.getTime()) / (24 * 60 * 60 * 1000);&lt;br /&gt;&lt;br /&gt;diffDay = Math.ceil(diffDay);&lt;br /&gt;var message = diffDay &amp;lt;= 0 ? "已退伍" : "離退伍還剩" + diffDay + "天";&lt;br /&gt;document.write("&amp;lt;b&amp;gt;" + message + "&amp;lt;/b&amp;gt;");&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;程式很簡單，就單純把兩個時間相減即可。另外在最後再做個判斷是否時間已經到了，以免輸出負數的日期。&lt;br /&gt;&lt;br /&gt;要注意一點的是&lt;strong&gt;new Date(年, 月 - 1, 日)&lt;/strong&gt;，月份是從0到11，所以要減1才是正確的日期。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-1043488373701169473?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/1043488373701169473/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/05/blog-post_16.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1043488373701169473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/1043488373701169473'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/05/blog-post_16.html' title='倒數計時器'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-7434006890575564593</id><published>2009-05-07T10:28:00.002+08:00</published><updated>2009-05-07T11:11:11.038+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UVa Online Judge'/><title type='text'>UVa 112 - Tree Summing</title><content type='html'>面對&lt;a href="http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=3&amp;amp;page=show_problem&amp;amp;problem=48"&gt;UVa 112 - Tree Summing&lt;/a&gt;這一題，一開始我的想法是要先將整顆樹建立起來，再從root拜訪到leaf。但再仔細研究一下，其實不需要建立樹，用遞迴的方式，很快就能解出。遞迴想法很容易，簡單述說如下：&lt;br /&gt;&lt;br /&gt;1. 從root開始，將value傳給左右子節點。&lt;br /&gt;2. 子節點將value與父節點傳來的value相加，再將value傳給自己的左右子節點。&lt;br /&gt;3. 當節點為葉節點時，判斷總合是否相符。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.nchu.edu.tw/%7Es9556041/code/acm/acm112.c"&gt;程式碼&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/4941669268429063951-7434006890575564593?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/7434006890575564593/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/05/uva-112-tree-summing.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7434006890575564593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/7434006890575564593'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/05/uva-112-tree-summing.html' title='UVa 112 - Tree Summing'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-5503740055386374294</id><published>2009-05-06T19:02:00.004+08:00</published><updated>2009-05-06T19:52:05.975+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>增廣見聞</title><content type='html'>厭倦自己的書櫃裡總是滿滿的電腦書籍，其它領域的知識也應該有所涉獵。所以今天和從前不一樣，從書局帶回了兩本非資訊的書，分別是&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010430001"&gt;圖解金融&lt;/a&gt;以及&lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010432869"&gt;文法女王：無痛升級學習法&lt;/a&gt;。文法女王的目的主要就是試圖喚醒自己遺忘已久的英文文法，而圖解金融是想多瞭解金融市場的基本知識，不然每次都看不懂財經新聞在報導什麼。&lt;br /&gt;&lt;br /&gt;另外，意外發現一個不錯的網站(&lt;a href="http://www.anobii.com/"&gt;aNobii&lt;/a&gt;)，功能如同是個人線上書櫃，可以收藏、整理、分享、交友與買賣，是免費的且也有中文介面，有興趣的可以去試試看！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-5503740055386374294?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/5503740055386374294/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/05/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5503740055386374294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/5503740055386374294'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/05/blog-post.html' title='增廣見聞'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-564456699359690126</id><published>2009-05-04T17:03:00.004+08:00</published><updated>2009-05-04T17:35:52.863+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UVa Online Judge'/><title type='text'>UVa 111 - History Grading</title><content type='html'>&lt;a href="http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=3&amp;amp;page=show_problem&amp;amp;problem=47"&gt;UVa 111 - History Grading&lt;/a&gt;題目不難，可以用&lt;a href="http://www.csie.ntnu.edu.tw/%7Eu91029/LongestCommonSubsequence.html"&gt;LCS&lt;/a&gt;(Longest Common Subsequence)來解。唯一要注意的是題目所給的輸入資料。&lt;br /&gt;&lt;a href="http://www.cs.nchu.edu.tw/%7Es9556041/code/acm/acm111.c"&gt;&lt;br /&gt;程式碼&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;例如：&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3 1 2 4 9 5 10 6 8 7&lt;/span&gt;&lt;span style="font-weight: bold;font-family:monospace;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;2 10 1 3 8 4 9 5 7 6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;第一數字表示有十個事件。&lt;br /&gt;接下來的每一行裡的數字則是指每一個事件在第幾個順序發生的：&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;event 1 -&gt; order 3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;event 2 -&gt; order 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;event 3 -&gt; order 2&lt;/span&gt;&lt;br /&gt;以此類推，所以要先經過轉換後，事件的正確發生順序為&lt;span style="font-weight: bold;"&gt;2 3 1 4 6 8 10 9 5 7&lt;/span&gt;。&lt;br /&gt;下一行經過轉換後，順序為&lt;span style="font-weight: bold;"&gt;3 1 4 6 8 10 9 5 7 2&lt;/span&gt;。&lt;br /&gt;由LCS計算可得到最大的共同子序列長度為&lt;span style="font-weight: bold;"&gt;9&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941669268429063951-564456699359690126?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/564456699359690126/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/05/uva-111-history-grading.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/564456699359690126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/564456699359690126'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/05/uva-111-history-grading.html' title='UVa 111 - History Grading'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-697205872581842121</id><published>2009-04-20T11:22:00.005+08:00</published><updated>2009-06-09T00:18:33.266+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>要升一兵了</title><content type='html'>入伍到現在已經六個多月了，五月一號就要正式升一兵，代表薪水也會升個五百元左右，不無小補。但雖說升上一兵，但我依舊是單位中最菜的一位，不只是完全沒新兵進來，現在更只剩我一個義務役的，所以到現在不管是有任何公差勤務，第一個最佳人選一定是我。有一句話說：「難過是一天，快樂也是一天！」用愉快的心情去面對這些公差勤務，其實一切都可以很簡單的。&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/4941669268429063951-697205872581842121?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/697205872581842121/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/04/blog-post_20.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/697205872581842121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/697205872581842121'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/04/blog-post_20.html' title='要升一兵了'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941669268429063951.post-2488918536937763646</id><published>2009-04-08T00:20:00.000+08:00</published><updated>2009-04-08T16:43:38.182+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情點播'/><title type='text'>序曲</title><content type='html'>總覺得之前的網誌寫的有點亂又懶得整理，於是就有了現在這個網誌的出現。和之前一樣，依舊是記錄自己的心情日記、學習心得等。&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/4941669268429063951-2488918536937763646?l=hugedream.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hugedream.blogspot.com/feeds/2488918536937763646/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hugedream.blogspot.com/2009/04/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2488918536937763646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941669268429063951/posts/default/2488918536937763646'/><link rel='alternate' type='text/html' href='http://hugedream.blogspot.com/2009/04/blog-post.html' title='序曲'/><author><name>Howard</name><uri>http://www.blogger.com/profile/11355420071368726063</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_5tR_EN3L2UA/S5py1jdpe7I/AAAAAAAABvI/tM5rpBd2CnM/S220/me.JPG'/></author><thr:total>0</thr:total></entry></feed>
