<?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'><id>tag:blogger.com,1999:blog-35059609</id><updated>2009-10-14T09:30:20.615+08:00</updated><title type='text'>Qlife's blog</title><subtitle type='html'>這是我用以記錄各種資訊筆記的Blog，大部分關於自由軟體、Un*x環境上的小技巧與運用方法，以及我的一點廉價心得。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default?start-index=26&amp;max-results=25'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35059609.post-8821369254317669448</id><published>2009-09-08T00:14:00.005+08:00</published><updated>2009-09-08T00:24:42.929+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net CF'/><title type='text'>C#開發Windows PocketPC 2003程式</title><content type='html'>&lt;div&gt;大約在六月中到八月左右，小弟有緣用C#寫了一個跑在PocketPC上的程式，由於火候不佳整體結果差強人意，還好最後有完成要求!但程式架構超醜的…&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在編程的過程中，深刻體認到某位前輩所說的「與一般的C#同中有異」，也真正感覺到有一些灰色地帶，所幸山窮水盡疑無路，柳暗花明又一村，一些大大小小的難關都過去了。所以略為筆記一下這一段日子習得的東西。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;整合環境&lt;/b&gt;&lt;/div&gt;&lt;div&gt;ppc的視窗很小，我用的機器螢幕甚至不是標準型，要完整呈現豐富的UI略有困難。整合環境下發生過最難以理解的"feature"就是，如果將一個控制項移到某一個Panel的上空，則控制項新 parent 就會變成該Panel。這在使用Panel管理UI的顯/隱形時，不止一次製造了困難與笑料。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;雖然是十分合理的設計，但我常常忘記這個效應是存在的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;視窗按鈕&lt;/b&gt;&lt;/div&gt;&lt;div&gt;關於這個 issue 請參見下面 MSDN 文章要小心使用者被卡在奇怪的無間地獄裡!&lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc185722.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc185722.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這篇文章裡也提到了原生GDI API的速度是多麼的快啊…&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;'using'&lt;/b&gt;&lt;/div&gt;&lt;div&gt;在using這個敘述句開始時配置的資源之生存範圍僅限其後的Block，超過後系統會回收資源。這有兩個重要用處，其一是運用GDI resources時，建議gc回收這些寶貴的GDI Objects。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;另一個是 用在File IO，File被視為unmanaged resources，故讀寫時應該將整組I/O的程式碼都包在一個using敘述裡。在我的經驗裡，沒有使用using述句的程式碼總是會碰到奇怪的File locking問題，包進using敘述句中自動解決。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;使用gif/jpeg圖檔&lt;/div&gt;&lt;div&gt;這是一個經常碰到的問題，原始的 .Net CF Framework僅支援使用點陣圖，沒辦法處理GIF與JPEG格式的檔案。解決之道是使用SHLoadImage()這個API函數，它支援從檔案系統中讀.gif/*.jpg的檔案。再透過Image類別的FromHbitmap()方法就可以將圖檔內容塞到Image物件裡。Image.FromHbitmap()是.Net CF 2.0後才多出來的功能，小弟有幸是在.Net CF 2.0上開發，假如是.Net CF 1.x就必需自己撰寫額外的程式碼處理了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;從一些VS.Net裡頭的標頭檔看起來，如果採用C語言開發，預設需引入的標頭檔裡似乎就有這個函數;然而我一開始照著標頭檔裡的呼叫慣例編寫成C#的版本卻是失敗的，後來拜Google拜了一晚才找到一個大神分享的版本，原來EntryPoint改成&lt;b&gt;"#75"&lt;/b&gt;就會動了…看起來，這個問題似乎只有觀察aygshell.dll是如何export裡頭的函數才能得到解答了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不同平台上採用的aygshell.dll實際上是不同的檔案，(雖然它們都會叫同一個名字)拜一下Google應該有辦法找到一包壓了眾多不同版本的aygshell.dll的壓縮檔。小弟開發時的實機是HP iPAQ系列，也許不同的實機，要求的EntryPoint設定也不一樣。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;下面野人獻曝一下，是一個簡單的API Wrapper Class，有任何值得改進之處，還請不吝指教。&lt;/div&gt;&lt;div&gt;&lt;pre&gt; class SHLoadImageFileWrapper&lt;br /&gt;  {&lt;br /&gt;      [DllImport("aygshell.dll", EntryPoint = "#75", SetLastError = true)]&lt;br /&gt;      public static extern IntPtr SHLoadImageFile(string szFileName);&lt;br /&gt;&lt;br /&gt;      [DllImport("coredll.dll")]&lt;br /&gt;      static extern bool DeleteObject(IntPtr hObject);&lt;br /&gt;&lt;br /&gt;      public static Image LoadImage(string fname)&lt;br /&gt;      {&lt;br /&gt;          FileInfo fil = new FileInfo(fname);&lt;br /&gt;          Image img = null;&lt;br /&gt;          if (fil.Exists)&lt;br /&gt;          {&lt;br /&gt;              IntPtr handle = SHLoadImageFile(fil.FullName);&lt;br /&gt;              img = Image.FromHbitmap(handle);&lt;br /&gt;              DeleteObject(handle);&lt;br /&gt;          }&lt;br /&gt;          else&lt;br /&gt;          {&lt;br /&gt;              throw new FileNotFoundException("In SHLoadImageFileWrapper.LoadImage: FileNotfound");&lt;br /&gt;          }&lt;br /&gt;          return img;&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-8821369254317669448?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/8821369254317669448/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=8821369254317669448' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8821369254317669448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8821369254317669448'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2009/09/cwindows-pocketpc-2003.html' title='C#開發Windows PocketPC 2003程式'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-4295691270696384322</id><published>2009-05-19T00:54:00.002+08:00</published><updated>2009-05-19T01:11:29.971+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='素食'/><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;第一家是寶善齋，位在博愛校區後門旁邊，是一間70元隨便吃到飽的素食自助餐。這個價錢到底是貴還是不貴就見仁見智，反正吃素就心安就好，別計較這麼多。我其實蠻早就知道這間店，是chwong開團帶我們去的。基本上菜色很固定，我特別喜歡他的豆腐辣湯。&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/35059609-4295691270696384322?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/4295691270696384322/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=4295691270696384322' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4295691270696384322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4295691270696384322'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2009/05/blog-post.html' title='蔬食一月記'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-8787812896152919478</id><published>2009-05-19T00:46:00.000+08:00</published><updated>2009-05-19T00:53:37.843+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='verbatim'/><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='beamer'/><title type='text'>beamer與verbatim環境混用</title><content type='html'>今天首次嘗試用Beamer套件做投影片，看網路上的Quickstart總是很簡單，實際上做做看就會知道厲害。終究還是在貼code的時候碰上了quickstart沒講的事，花了不少時間在解。&lt;br /&gt;&lt;br /&gt;當在beamer環境裡要使用verbatim(通常是用在貼code)時，就必需要{frame}後面加上[containsverbatim]。在survey時也有看到LyX-Code這個環境，不過暫時沒有空深究。&lt;br /&gt;&lt;br /&gt;不過平心而論，這是我幾次使用latex製作文件以來，第一次寫內文跟寫latex code時間大約一比一的，過去多半會用比較多的時間在查找latex的資料上，足見beamer套件確實還蠻容易上手的。&lt;br /&gt;&lt;br /&gt;\begin{frame}[containsverbatim]&lt;br /&gt; \frametitle{Hello World}&lt;br /&gt;\begin{verbatim}&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    printf("Hello World!");&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;\end{verbatim}&lt;br /&gt;\end{\frame}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-8787812896152919478?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/8787812896152919478/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=8787812896152919478' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8787812896152919478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8787812896152919478'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2009/05/beamerverbatim.html' title='beamer與verbatim環境混用'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-7916161294315624423</id><published>2009-03-02T14:30:00.001+08:00</published><updated>2009-03-12T00:21:58.952+08:00</updated><title type='text'>以後要是當程式助教，應該找一個機會展示Emacs?</title><content type='html'>更新：我應該要先講一下，這是一篇討論「假設與可能性的」的文章，這並不代表我真的很會用Emacs啊…&lt;br /&gt;&lt;br /&gt;看來以後嘴炮不能亂打啊...我欺騙大家的感情 ...&lt;br /&gt;&lt;br /&gt;這一年來都在準備研究所考試，blog寫作幾乎中斷，有comment也幾乎沒有去回，感覺很不禮貌。&lt;br /&gt;&lt;br /&gt;本日是感冒休息日，在休息日時我又想起這件老掉牙的事情來。&lt;br /&gt;&lt;br /&gt;我有一陣子很迷Emacs，那時因為用vim寫java寫到火大了，所以鬧起了脾氣，想要換個editor。後來我覺得這並不是vim的錯，java語言天生就適合用IDE來寫，沒有人能完整記得那層層疊疊的物件庫的，要用vim寫java可以說是秀才遇到兵，有理也寫不清。&lt;br /&gt;&lt;br /&gt;但在那短短的時間裡，能夠接觸到另一個世界的文化(Emacs users' World)是很新奇的。可能是所處社群習慣的關係，不知道怎麼搞的，要能碰上使用Emacs的人好像真的很困難，花費了很多時間仍然沒有辦法妥善調整出我想要的環境，最後就放棄了向Emacs發展的道路。&lt;br /&gt;&lt;br /&gt;在那一段時間裡，我看到了一篇mailing list archive文章讓我感觸良多，作者是位國外唸CS的畢業生，他說當他們大一的時候，助教們會同時present vim跟Emacs給他們看，教導他們使用的基本技巧，然後再讓他們擇一選擇。未來若有幸可以參與大一程式設計的助教工作，是不是也該如法炮製一番呢?Emacs擁有很棒的功能性，不會落後時下流行的IDE，或許缺乏的只是引領入門的動作。&lt;br /&gt;&lt;br /&gt;應該要「展現所有的可能性」，不壓抑任何一種選擇的可能，系上總是「統一指定以某某IDE作為上機考試用軟體」我覺得非常不可取，即便自己都有習慣的環境，也不應該強加於其它人身上。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-7916161294315624423?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/7916161294315624423/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=7916161294315624423' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/7916161294315624423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/7916161294315624423'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2009/03/emacs.html' title='以後要是當程式助教，應該找一個機會展示Emacs?'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-4370503713766832742</id><published>2009-02-07T13:33:00.001+08:00</published><updated>2009-02-07T13:43:49.131+08:00</updated><title type='text'>讀杜甫兵車行有感</title><content type='html'>&lt;p&gt;唸預官考試要讀中國文學史，讀到杜甫時，有著作「兵車行」。這首詩可說是寫實到不行了。下頭這段更是傳神：&lt;blockquote&gt;信知生男惡，反是生女好；&lt;br /&gt;  生女猶得嫁比鄰，生男埋沒隨百草。&lt;br /&gt;  君不見青海頭，古來白骨無人收？&lt;br /&gt;  新鬼煩冤舊鬼哭，天陰雨濕聲啾啾。&lt;/blockquote&gt;&lt;br /&gt;我記得小時候剛開始理解「死」的意義，想到死亡都是很可怕的；對年幼的孩子而言，至親好友的死去是種災難，而自我的死去是無法想像的黑暗。要到了長大一點的時候，才慢慢可以理解「捨命」「赴死」這種無奈但逼自己堅強的情緒是什麼，慢慢可以理解人類為什麼要做這種事。&lt;br /&gt;&lt;p&gt;然後又想到，以前玩文明帝國時，戲劇是一種需要研究的科技。人類可以分辨真實事件帶來的情感與戲劇創造的情感之不同，也是一樣了不起的發明。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-4370503713766832742?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/4370503713766832742/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=4370503713766832742' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4370503713766832742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4370503713766832742'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2009/02/blog-post.html' title='讀杜甫兵車行有感'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-2690845014586184064</id><published>2008-12-13T22:48:00.001+08:00</published><updated>2008-12-13T22:49:50.611+08:00</updated><title type='text'>彩虹顏色分析</title><content type='html'>&lt;div style="border: 1px solid rgb(51, 51, 51); padding: 10px; background: white none repeat scroll 0% 0%; width: 300px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; text-align: center;"&gt;Your rainbow is shaded&lt;b&gt; violet.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background: rgb(213, 0, 128) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt;&lt;div style="background: rgb(213, 85, 128) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt;&lt;div style="background: rgb(213, 128, 128) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt;&lt;div style="background: rgb(85, 111, 128) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt;&lt;div style="background: rgb(85, 77, 255) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt;&lt;div style="background: rgb(85, 0, 255) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt;&lt;div style="background: rgb(170, 0, 255) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt;&lt;br /&gt;What is says about you: You are a creative person. You appreciate beauty and craftsmanship. You are patient and will keep trying to understand something until you've mastered it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spacefem.com/quizzes/rainbow"&gt;Find the colors of your rainbow at spacefem.com.&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/35059609-2690845014586184064?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/2690845014586184064/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=2690845014586184064' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2690845014586184064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2690845014586184064'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/12/blog-post.html' title='彩虹顏色分析'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-5676334280151656171</id><published>2008-08-23T13:46:00.002+08:00</published><updated>2008-08-23T13:53:54.088+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='SunOS'/><title type='text'>OpenSolaris的vim沒顏色？</title><content type='html'>到今天才知道原來terminal info entry就算是同名的,在不同的curses實作上也可能是有差異的&lt;br /&gt;&lt;br /&gt;這裡是某個bug report,表示OpenSolaris的vim預設夾帶的vim顏色顯示有點問題,$TERM=xterm時只有亮白跟普通白色,要$TERM=xtermc才會有正常顏色&lt;br /&gt;&lt;br /&gt;後來就有牛人出來說話了,因為OpenSolaris的vim是link curses而不是ncurses,才會造成這個情況,&lt;br /&gt;在ncurses裡xterm通常有8種基本顏色,但在curses中xterm只有黑跟白,所以vim就不會顯示顏色了.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-5676334280151656171?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/5676334280151656171/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=5676334280151656171' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5676334280151656171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5676334280151656171'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/08/opensolarisvim.html' title='OpenSolaris的vim沒顏色？'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-599775247351932844</id><published>2008-08-10T14:57:00.002+08:00</published><updated>2008-08-10T14:59:38.679+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutt'/><title type='text'>imap in mutt (simple)</title><content type='html'>在Mutt介面裡按c,選擇開啟"一個imap信箱"即可&lt;br /&gt;ex: c -&gt; imaps://qlife@imap.cs.nctu.edu.tw:993/INBOX&lt;br /&gt;即時測試imap的狀況可用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-599775247351932844?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/599775247351932844/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=599775247351932844' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/599775247351932844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/599775247351932844'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/08/imap-in-mutt-simple.html' title='imap in mutt (simple)'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-402493125596545024</id><published>2008-07-27T13:37:00.010+08:00</published><updated>2008-07-27T15:02:22.888+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>omnicppcomplete - a Vim plugin</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VIZ9hx6Yc2A/SIwXmAGVZSI/AAAAAAAAAAU/__IrtBcmdPw/s1600-h/omnicpp.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_VIZ9hx6Yc2A/SIwXmAGVZSI/AAAAAAAAAAU/__IrtBcmdPw/s320/omnicpp.PNG" alt="" id="BLOGGER_PHOTO_ID_5227579209099339042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這個令人眼睛一亮的plugin網址在這：&lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=1520"&gt;http://vim.sourceforge.net/scripts/script.php?script_id=1520 &lt;/a&gt;我覺得蠻方便的。&lt;br /&gt;&lt;br /&gt;大多數的vim plugin安裝方式都類同，將vim script放到$HOME/.vim/plugin/或$HOME/vimfiles/plugin/下就可以。如果是壓縮檔，直接抓到$HOME/.vim/下unzip解開就好了，只要路徑對就可以運作。安裝的過程有些繁復。首先要先讓vim偵測到omnicppcomplete的說明文件：&lt;br /&gt;&lt;blockquote&gt;:helptags $HOME/.vim/doc  或  :helptags $HOME/vimfiles/doc&lt;br /&gt;&lt;/blockquote&gt;然後參照omnicppcomplete文件裡的詳細安裝步驟。說詳細其實也沒有太多步驟。&lt;br /&gt;&lt;br /&gt;首先vimrc裡要有下列設定 :&lt;br /&gt;&lt;blockquote&gt;set nocp&lt;br /&gt;filetype plugin on&lt;/blockquote&gt;再來需設定ctags選項。omnicppcomplete是由ctags產生的資訊來達到自動完成的效果，所以他需要一些額外的選項，產生出來的ctags才能配合運作。注意!如果還沒有建立tags檔是不會有效果的。&lt;br /&gt;&lt;blockquote&gt;ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .&lt;/blockquote&gt;我直接使用文件中建議的ctags參數，沒有多作研究。我設定到這邊就可以用了，如果沒有順利啟動，請參照附帶的說明文件0rz。&lt;br /&gt;&lt;br /&gt;要啟動complete功能，按的功能鍵是Ctrl+X Ctrl+O 兩個組合鍵。上面己經有一張最簡單的功能示例了，注意粉紅色小視窗裡的確顯示出了myobject的成員。&lt;br /&gt;&lt;br /&gt;目前由於tags檔格式限制，不支援單純尋找樣板與static member，所以沒有辦法達到MS VS系列那麼完整的功能性，但還是蠻有用的。在我的環境(Gentoo Linux amd64 + GCC 4.12)需要到/usr/lib64/gcc/x86_64-pc-linux-gnu/4.1.2/include去產生tags檔。如果是在不同的OS上，應該會有不一樣的路徑。產生好了之後要在vimrc裡加上以下內容("開頭的是註解，就不用管了)：&lt;blockquote&gt;"告訴vim去看這個tags檔，stl.tags這個檔名可以自訂&lt;br /&gt;set tags+=~/stl.tags&lt;br /&gt;"下一行理由請參考說明文件，我還不太懂 0rz&lt;br /&gt;let OmniCpp_DefaultNamespaces   = ["std", "_GLIBCXX_STD"]&lt;br /&gt;&lt;/blockquote&gt;假如你的編譯器並不是gcc，那這個設定原則上就沒有用。可能需要參考從SGI STL建立tags的方法，omnicppcomplete的文件裡頭也有說，我用不到，這邊就不摘錄了。&lt;br /&gt;&lt;br /&gt;當我看到std::string的methods在我的面前一字排開的畫面，我眼淚都快流下來了!&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VIZ9hx6Yc2A/SIwaNkxxn5I/AAAAAAAAAAc/wgBXgX5IonU/s1600-h/omnicppstl.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_VIZ9hx6Yc2A/SIwaNkxxn5I/AAAAAAAAAAc/wgBXgX5IonU/s320/omnicppstl.PNG" alt="" id="BLOGGER_PHOTO_ID_5227582087983374226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;omnicppcomplete還真的相當萬能，(omni有萬能的意味)連python也可以很方便的支援!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VIZ9hx6Yc2A/SIwatUdygWI/AAAAAAAAAAk/YZ4rUNtF0LM/s1600-h/python.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_VIZ9hx6Yc2A/SIwatUdygWI/AAAAAAAAAAk/YZ4rUNtF0LM/s320/python.PNG" alt="" id="BLOGGER_PHOTO_ID_5227582633360392546" border="0" /&gt;&lt;/a&gt;對python語言的支援相當強大，圖中可以看到不僅顯示每一個成員的型態，還可以直接查library reference手冊的內容。只是要啟動auto complete的功能之前，請注意你已經import了必需的模組，並且處在正確的名稱空間，不然Ctrl+X Ctrl+O按到鍵盤壞掉可能也沒有東西出來。&lt;br /&gt;&lt;br /&gt;我還沒有試驗過其它的功能。下面是一些官方的screenshot，值得一看。&lt;blockquote&gt;&lt;a href="http://vissale.neang.free.fr/Vim/OmniCppComplete/ScreenShots/screenshots.htm"&gt;http://vissale.neang.free.fr/Vim/OmniCppComplete/ScreenShots/screenshots.htm&lt;/a&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-402493125596545024?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/402493125596545024/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=402493125596545024' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/402493125596545024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/402493125596545024'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/07/omnicppcomplete-vim-plugin.html' title='omnicppcomplete - a Vim plugin'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VIZ9hx6Yc2A/SIwXmAGVZSI/AAAAAAAAAAU/__IrtBcmdPw/s72-c/omnicpp.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-2810255062395300377</id><published>2008-07-22T10:21:00.002+08:00</published><updated>2008-07-22T10:26:53.737+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>Vim encoding settings</title><content type='html'>今早又試出一個vim的用法，就來野人獻曝。&lt;br /&gt;&lt;br /&gt;enc/encoding這個選項設定vim的buffer的文字編碼，Vim會參照user的locale來配置這個選項。現在我需要的是在UTF-8下可以寫出Big-5編碼的檔案。我可以先在UTF-8環境下編好檔案，重開一個Vim，下&lt;blockquote&gt; set fenc=big-5 &lt;/blockquote&gt;Vim就會把檔案轉為big-5碼了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-2810255062395300377?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/2810255062395300377/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=2810255062395300377' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2810255062395300377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2810255062395300377'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/07/vim-encoding-settings.html' title='Vim encoding settings'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-4194584078459609150</id><published>2008-07-15T00:15:00.004+08:00</published><updated>2008-07-15T00:34:43.534+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dd-wrt'/><title type='text'>ASUS WL-520GC + dd-wrt</title><content type='html'>話說平日在外地唸書不打電話回家的不孝大學生返家後，居然嫌東嫌西，覺得在家裡要連線上網還要牽網路線很麻煩…三台電腦就三條線，沒事還會絆到人，最後就去買了一個無線AP。我本來比較希望買&lt;a href="http://www.planex.com.tw/product/soho/router/gw-mf54g2.htm"&gt;GW-MF54G2&lt;/a&gt;這款小巧可愛又得人疼的device，連我媽也說可愛，沒想到在建國路沒能買到，就買了眾多網民一致推薦的ASUS WL-520GC千元有找便宜AP。&lt;br /&gt;&lt;br /&gt;之前看網路上的開箱文，大家都推薦去刷新靭體，我也有樣學樣刷了一次，作法筆記如下(當然也是拜谷歌大神來的...)&lt;br /&gt;&lt;br /&gt;原始連結 https://www.mobile01.com/print.php?f=110&amp;amp;t=584849&amp;amp;p=9&lt;br /&gt;&lt;ol&gt;&lt;li&gt;副檔名改成trx ,再升級&lt;/li&gt;&lt;li&gt;520GC可下載ASUS官方的WL-520GC公用程式,利用附贈的Firmware Restoration,再依照以下步驟可救回&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;a.先把wl-520gC電源拔除&lt;br /&gt;b.按著restore鍵，然後插上電源&lt;br /&gt;c.當power led開始閃爍時，放開restore鍵。這個時候的wl-520GC是在還原模式（recovery mode，power led會續閃爍）&lt;br /&gt;d.執行華碩工具程式的Firmware Restoration（韌體還原），選擇WL-520GC原廠官方韌體執行上傳&lt;br /&gt;e.上傳完成後，等個2-3分鍾，把電源拔除。然後電源接上，等待開機完成之後就大公告成。&lt;/blockquote&gt;把firmware降回2.0.0.8後，就可以上傳dd-wrt靭體了。WL-520GC適用的是&lt;a href="http://www.dd-wrt.com/dd-wrtv2/downloads/v24/Broadcom/Asus/WL520GC/dd-wrt.v24_micro_generic.bin"&gt;dd-wrt.v24_micro_generic.bin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;不過換了新靭體後我還蠻疑惑的，想要的功能後來發現micro版本的ddwrt沒有，我也沒有要跑動物，似乎原廠firmware就可以滿足我的需求...那就當換GUI+Language好了...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-4194584078459609150?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/4194584078459609150/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=4194584078459609150' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4194584078459609150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4194584078459609150'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/07/ausu-wl-520gc-dd-wrt.html' title='ASUS WL-520GC + dd-wrt'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-5650868280525613489</id><published>2008-07-10T21:07:00.001+08:00</published><updated>2008-07-10T21:09:46.862+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sh'/><title type='text'>兩筆 shell 的註記</title><content type='html'>&lt;ol&gt;&lt;li&gt;foor loop&lt;/li&gt;&lt;blockquote&gt;for i in [list]&lt;br /&gt;do&lt;br /&gt;&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;[list] 是一堆用空白分開的值，不可以寫作字串&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;li&gt;shift&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;會更新$#的值，該值為目前尚有的參數數目。&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-5650868280525613489?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/5650868280525613489/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=5650868280525613489' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5650868280525613489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5650868280525613489'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/07/shell.html' title='兩筆 shell 的註記'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-5086966760947762158</id><published>2008-07-01T19:54:00.001+08:00</published><updated>2008-07-01T19:56:39.851+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>md5sum 加密短字串</title><content type='html'>有時候會想要快速得到某一小段字串的md5 checksum，在bsd下可以用&lt;br /&gt;&lt;blockquote&gt;md5 -s ${STR}&lt;br /&gt;&lt;/blockquote&gt;來取得，但在linux下沒有md5，只有md5sum，這個時候只要指定讓它去編碼stdin丟進來的字串就好。&lt;blockquote&gt;echo "1234" | md5sum -&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-5086966760947762158?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/5086966760947762158/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=5086966760947762158' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5086966760947762158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5086966760947762158'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/07/md5sum.html' title='md5sum 加密短字串'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-1936282871634437648</id><published>2008-06-30T21:32:00.002+08:00</published><updated>2008-06-30T22:16:00.370+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>幾個有關於tab的vim選項</title><content type='html'>之前&lt;a href="http://blog.yzlin.org/"&gt;yzlin&lt;/a&gt;學長在bsd組開會時提到了vimrc裡tab鍵的設定法，可是我只是在旁旁聽的，所以說沒有記下來。今天自己稍微試了一下，不知道對不對：&lt;br /&gt;&lt;br /&gt;set shiftwidth=4&lt;br /&gt;set tabstop=4&lt;br /&gt;set expandtab&lt;br /&gt;&lt;br /&gt;shiftwidth: 使用 [&gt;&gt;],[&lt;&lt;],cindent 時填入的空白數&lt;br /&gt;tabstop:  tab 在vim裡頭，其長度相當於多少個空白&lt;br /&gt;expandtab:按&lt;tab&gt;時，將tab轉成空白&lt;br /&gt;&lt;br /&gt;由於我偶爾會玩一下python，一份文件裡不要混用tab跟空白是很重要的，所以我選擇將所有tab代換成空白。需要tab時，再明確的用Ctrl-V Tab 來輸入tab。(vim文件曰：如果Ctrl+V被用掉了，請用Ctrl+Q)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-1936282871634437648?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/1936282871634437648/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=1936282871634437648' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/1936282871634437648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/1936282871634437648'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/06/tabvim.html' title='幾個有關於tab的vim選項'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-6546807107367792471</id><published>2008-06-30T19:30:00.005+08:00</published><updated>2008-06-30T19:44:06.962+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Visual C++ 字串巨集</title><content type='html'>自從進入了Unicode時代，寫程式時就得很注意Wide / Narrow字元的處理。我自己還不知道在U*ix環境下寫C程式時要怎麼做，這邊先簡記一下。&lt;br /&gt;&lt;br /&gt;這裡有兩篇文章，專講在MSVC環境下，有關WideChar等等相關的型態與巨集的功用：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/string/cppstringguide2.aspx"&gt;http://www.codeproject.com/KB/string/cppstringguide1.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/string/cppstringguide2.aspx"&gt;http://www.codeproject.com/KB/string/cppstringguide2.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;所以這一篇post只是抄錄其中的要點。有些東西(OLE相關)我不記是因為不預期短時間內會用到。&lt;br /&gt;&lt;br /&gt;Wide Char / String literal&lt;br /&gt;&lt;span id="intelliTXT"&gt;&lt;pre&gt;&lt;span class="code-keyword"&gt;wchar_t&lt;/span&gt;  wch = L&lt;span class="code-string"&gt;'&lt;/span&gt;&lt;span class="code-string"&gt;1'&lt;/span&gt;;   // 重點就是&lt;span style="color: rgb(255, 0, 0);"&gt;L''&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;TChar：&lt;br /&gt;&lt;span id="intelliTXT"&gt;&lt;pre&gt;#ifdef UNICODE&lt;br /&gt;&lt;span class="code-keyword"&gt;typedef&lt;/span&gt; &lt;span class="code-keyword"&gt;wchar_t&lt;/span&gt; TCHAR;&lt;br /&gt;&lt;span class="code-preprocessor"&gt;#else&lt;/span&gt;&lt;br /&gt;&lt;span class="code-keyword"&gt;typedef&lt;/span&gt; &lt;span class="code-keyword"&gt;char&lt;/span&gt; TCHAR;&lt;br /&gt;&lt;span class="code-preprocessor"&gt;#endif&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;由定義可知，TChar這個型態會依照編譯期時的設定，決定自己是MBCS或&lt;br /&gt;Unicode字串。&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;_T( ):&lt;br /&gt;&lt;span id="intelliTXT"&gt;&lt;pre&gt;#ifdef UNICODE&lt;br /&gt;&lt;span class="code-preprocessor"&gt;#define&lt;/span&gt; _T(x) L##x&lt;br /&gt;&lt;span class="code-preprocessor"&gt;#else&lt;/span&gt;&lt;br /&gt;&lt;span class="code-preprocessor"&gt;#define&lt;/span&gt; _T(x) x&lt;br /&gt;&lt;span class="code-preprocessor"&gt;#endif&lt;br /&gt;&lt;br /&gt;其中L##x就是「把左邊跟右邊貼在一起」的意思，是個很怪異的運算子(但它是有ANSI C&lt;br /&gt;定義的!)所以運用_T()巨集可以直接這樣宣告字串&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;span id="intelliTXT"&gt;&lt;pre&gt;TCHAR szNewText[] = _T(&lt;span class="code-string"&gt;"&lt;/span&gt;&lt;span class="code-string"&gt;we love Bob!"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;另外，MFC的CString內部的資料型態是TChar，&lt;br /&gt;所以可以直接這樣建構一個CString：&lt;br /&gt;&lt;br /&gt;CString c5( _T("a string"));&lt;br /&gt;&lt;br /&gt;真是沒有原創性的一個post，連範例都是抄人家的....&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-6546807107367792471?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/6546807107367792471/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=6546807107367792471' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/6546807107367792471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/6546807107367792471'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/06/visual-c.html' title='Visual C++ 字串巨集'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-8362140174230662085</id><published>2008-06-15T00:18:00.005+08:00</published><updated>2008-06-15T00:40:37.963+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Office2003 無人值守安裝</title><content type='html'>儘管Office2003出貨己然多年，這個技巧顯然的也己經被無數的網管人員使用過，不過我是今天才知道怎麼做。&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;首先，到&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4bb7cb10-a6e5-4334-8925-3bcf308cfbaf&amp;amp;displaylang=en"&gt;這裡&lt;/a&gt;來下載Office Resource Kit 2003 版本。下載後安裝。電腦上不需要安裝任何的Office Product也可以安裝這個Toolkit。&lt;/li&gt;&lt;li&gt;執行Custom Installation Winzard，這個精靈會一步一步帶領網管人員設定各種Office的相關細部設定。首先它會詢問這個自訂安裝設定是適用於哪一個MSI安裝檔的，在Office2003裡可以配置的就只有PRO11.msi這個了。(就是Office的msi package)我會用到的只有設定組織名稱跟填入取得的授權序號。&lt;/li&gt;&lt;li&gt;精靈執行到最後一步時，會顯示一行指令，像是：&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-size:100%;"&gt;setup.exe TRANSFORMS=C:\blah\SimpleSuite.MST /qb- /i PRO11.msi&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;setup.exe就是Office2003光碟隨附的那個setup，但這並不是完整的指令，還得再自己加上呼叫 MSI Files 的參數才行。&lt;/li&gt;&lt;/ol&gt;以下有幾個呼叫的例子，我剛剛試驗成功的：&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-size:100%;"&gt;setup.exe TRANSFORMS=C:\blah\SimpleSuite.MST /qb- /i PRO11.msi &lt;/span&gt;&lt;/blockquote&gt;類似原廠安裝設定，但填好的資訊不會再詢問使用者。雖然在MST檔裡己設定了預設要安裝哪些項目，這時還會再出現來給使用者變更、確認。&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-size:100%;"&gt;setup.exe TRANSFORMS=C:\blah\SimpleSuite.MST /qn+&lt;/span&gt; /i PRO11.msi&lt;br /&gt;&lt;/blockquote&gt;完全不會出現使用者介面，根據setup的文件(光碟中的setup.htm)所說，加上+號會在整體安裝結束後出現一個安裝成功的確認畫面，但我尚未試驗過。&lt;br /&gt;&lt;br /&gt;至於Office2007這相關功能做的更方便了，執行&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-size:100%;"&gt;setup.exe /admin&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;就會出現高級的自訂安裝畫面，產生的設定檔還是可讀的XML文件。以後也來測試一下…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-8362140174230662085?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/8362140174230662085/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=8362140174230662085' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8362140174230662085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8362140174230662085'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/06/office2003.html' title='Office2003 無人值守安裝'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-4813442082180520314</id><published>2008-05-17T15:20:00.003+08:00</published><updated>2008-05-17T15:25:56.119+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>ssh-agent -- 替 SSH 管理 pasephrase 的工具</title><content type='html'>雖然很早以前就有學長告誡我過，做了SSH-Key要搭配ssh-agent跟pass pharse才安全，不過因為墮(憜)性一直到今天才試出來。&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;首先用ssh-keygen做key&lt;/li&gt;&lt;li&gt;再來，下 eval `ssh-agent -c`，讓Shell記錄agent的資訊。(This is for csh-like shell, for sh-like shell,use eval `ssh-agent -s`)&lt;/li&gt;&lt;li&gt;ssh-add 讓agent詢問passphrase並記錄之&lt;/li&gt;&lt;li&gt;ssh -A 到別台機器就可以了。-A表示讓ssh Forward Agent資訊&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-4813442082180520314?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/4813442082180520314/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=4813442082180520314' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4813442082180520314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/4813442082180520314'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/05/ssh-agent-ssh-pasephrase.html' title='ssh-agent -- 替 SSH 管理 pasephrase 的工具'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-5041959362817714636</id><published>2008-05-05T13:46:00.004+08:00</published><updated>2008-05-05T14:06:58.792+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh-tunnel'/><title type='text'>SSH-Tunnel</title><content type='html'>今年三月底開始我在本校的&lt;a href="http://www.ied.nctu.edu.tw/main.php"&gt;教育研究所&lt;/a&gt;接了一個工讀工作，由於工作的地點在教育所電腦教室，不是自己熟悉、可以控管的環境，某日突發奇想，何不研究SSH-Tunnel?儘管教育所並沒有特別的防火牆設置就是。過了這一陣子後也陸續玩出了兩、三個小花樣，在此獻醜一下。我只貼在windows上用PuTTY的設定，原理的部分有很多好文章，小的不敢班門弄斧。&lt;br /&gt;&lt;br /&gt;所有的設定都從PuTTY-&gt;Configuration-&gt;SSH-&gt;Tunnel設定，設定好之後登入你可以登入的任意工作站即可。我都用系上提供的工作站。&lt;br /&gt;&lt;blockquote&gt;BBS / Telnet:&lt;br /&gt;Source Port: 10010 (可任選)&lt;br /&gt;Destination: ptt2.cc:23&lt;br /&gt;下面的型態選 Local / Auto&lt;br /&gt;&lt;/blockquote&gt;設定好後選擇 Add , 再按Open/Apply就好，(一開始我不知道要按扭才會生效，試很久都試不出來... )這樣就會將localhost:10010的封包導到ptt2.cc:23。之後再開PCMan連telnet://localhost:10010就可以連上BBS Server了。&lt;br /&gt;&lt;blockquote&gt;Web Broswer Proxy:&lt;br /&gt;Sourec Port: 8888 (可任選，這是我的習慣)&lt;br /&gt;Destination: 空白不用填&lt;br /&gt;下面選 Dynamic / Auto&lt;br /&gt;&lt;/blockquote&gt;這樣就會建立一個目的地是動態決定的Tunnel。在Firefox的Proxy選「手動設定Proxy」，在SOCKS主機直接填入 localhost:8888 (或代換成其它的port number)選SOCKS v5即可用Proxy上網了。&lt;br /&gt;&lt;br /&gt;遠端桌面連線:&lt;br /&gt;這可能是Windows進入21世紀最棒的發明，可惜要到Windows2008才會有加密功能。以前我常被告誡不可以在遠端桌面下開啟SSH Terminal，不然密碼還是沒有被保護到啊!不過現在用 SSH Tunnel應該就能保護密碼了。&lt;br /&gt;&lt;blockquote&gt;Source: localhost:33389 (可自選...不要是3389就好...XD 我就犯過這種錯 0rz)&lt;br /&gt;Dest:${宿舍電腦hostname}:3389&lt;br /&gt;Local/Auto&lt;br /&gt;&lt;/blockquote&gt;再來從命令列視窗打 &lt;blockquote&gt;mstsc /v localhost:33389&lt;/blockquote&gt; 就可以連上了。圖形化介面的版本打入localhost:33389 也是可以的。&lt;br /&gt;&lt;br /&gt;SSH-Tunnel有很多特性，除了可以用來穿過受控或不受信任的網域，有時候換一下出去的ip也蠻有意思的。(雖然這並不是唯一的方法)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-5041959362817714636?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/5041959362817714636/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=5041959362817714636' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5041959362817714636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/5041959362817714636'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/05/ssh-tunnel.html' title='SSH-Tunnel'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-2327740257080405229</id><published>2008-05-05T12:13:00.001+08:00</published><updated>2008-05-05T12:16:48.109+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>將Windows資料夾模擬成磁碟機(代號)</title><content type='html'>隨意Google,在&lt;a href="http://diary.tw/willkao/"&gt;這裡&lt;/a&gt;看到的,這樣不算盜文吧?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;C:\Documents and Settings\user_2&gt;subst &lt;span style="color: rgb(255, 0, 0);"&gt;/?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;建立路徑與磁碟機代號之間的關連。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SUBST [drive1: [drive2:]path]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SUBST drive1: /D&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  drive1:        指定您要指定路徑的虛擬磁碟機。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  [drive2:]path  指定您要指定給虛擬磁碟機的實際磁碟&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                 機與路徑。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  /D             刪除取代的 (虛擬的) 磁碟機。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;鍵入 SUBST 而不加任何參數會顯示目前所有虛擬磁碟機的清單。&lt;br /&gt;&lt;br /&gt;小抱怨一下,為什麼有時候MS的指令的help是/?,有時是/help啊?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-2327740257080405229?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/2327740257080405229/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=2327740257080405229' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2327740257080405229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2327740257080405229'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/05/windows.html' title='將Windows資料夾模擬成磁碟機(代號)'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-253597748589794127</id><published>2008-04-28T23:18:00.003+08:00</published><updated>2008-05-05T12:17:40.847+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>在VC 2008強制指定字串常數為WChar</title><content type='html'>雖然學校有大量授權的MS VS.NET 2008，但不論哪一個版本都需要3GB以上的空間，我只好兩害取其輕選擇安裝MS VC++ 2008 express。由於想知道這個版本是不是己經內建了Win32 SDK所以就試著編了一個經典的Windows SDK Program-只有標題的空視窗。原始碼在&lt;a href="http://www.zaoxue.com/article/tech-73047.htm"&gt;這裡&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;視窗跟標題都跑出來了，但字的內容是不對的，由於程式碼裡頭沒有指名是不是用wide char string,而編譯器參數中有/UNICODE, 直覺猜測是我填入的Multibyte String 被當作Unicode編碼了。後來把&lt;span style="color: rgb(0, 0, 0);font-family:Verdana;" &gt;&lt;span class="Code"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;blockquote&gt;"PCG's Very Simple Windows Application",       /* Title Text */&lt;/blockquote&gt;加上一個L，改成&lt;br /&gt; &lt;blockquote&gt;L"PCG's Very Simple Windows Application",     /*Title Text */&lt;/blockquote&gt;就成了。&lt;br /&gt;&lt;br /&gt;這其實是強制將原本的字串常數(正確而言，String literal，字串字面常數)的型態改成WChar_t。現在邁入了2008年，到哪裡都躲不掉字元編碼問題啦!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-253597748589794127?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/253597748589794127/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=253597748589794127' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/253597748589794127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/253597748589794127'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/04/vc-2008wchar.html' title='在VC 2008強制指定字串常數為WChar'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-7605286027888779154</id><published>2008-04-28T11:38:00.002+08:00</published><updated>2008-04-28T11:42:43.694+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><title type='text'>Practical Common Lisp : Online content</title><content type='html'>我之前一定過份粗心大意,才沒注意到這個站--Practical Common Lisp的線上版本。看紙本書眼睛比較舒服,但有線上版就不必抄錄記憶性的內容。網站在此:&lt;blockquote&gt;&lt;a href="http://gigamonkeys.com/book/"&gt;http://gigamonkeys.com/book/&lt;/a&gt;&lt;/blockquote&gt;Lisp前輩真是佛心來的,這是我第二次看到完全公開性的Lisp著作了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-7605286027888779154?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/7605286027888779154/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=7605286027888779154' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/7605286027888779154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/7605286027888779154'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/04/practical-common-lisp-online-content.html' title='Practical Common Lisp : Online content'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-3015438461364731779</id><published>2008-04-27T20:51:00.002+08:00</published><updated>2008-04-27T21:32:10.753+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>重溫舊夢: Slackware Linux</title><content type='html'>在上大學前，我可以說是完全的資訊門外漢。只寫過Helloworld等級的程式，稍微玩過一點Linux的安裝，照著別人的文件把X跑起來。當時陪伴我度過大多數的青年時光的是&lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt;跟&lt;a href="http://www.slackware.org/"&gt;Slackware&lt;/a&gt;。我還記得第一次把XWindow跑起來是看&lt;a href="http://people.debian.org.tw/%7Emoto/moto/moto.html"&gt;moto&lt;/a&gt;大的&lt;a href="http://docs.huihoo.com/gnu_linux/debian/tutorial/Debian-Install-Guide.html"&gt;Debian無痛起步法&lt;/a&gt; (現在的網頁長的跟以前也不一樣了)。當時Mandrake剛在台灣紅起來沒多久，RedHat正紅，而我在自以為是的時光裡，找尋我也不知道會怎麼樣的未來。那個時候rpm系的套件還沒有辦法自動化下載相關套件，Debian在我與一些社團好友的眼中可真是厲害。當時有一點不可一世的味道，所以都在研究「非RPM系」的Linux跟FreeBSD。&lt;br /&gt;&lt;br /&gt;反正當時並沒有維護什麼Server，我想試什麼Linux就試什麼，當時我家只有一台PC，我就在上面做dual-boot。後來我就灌了Slackware，可能是因為有踩到Dependency Conflict的雷，所以想試一個號稱沒有Dependency的套件管理系統(好爛的理由:p)。然後就被吸引到了。往後到大三到來以前我曾經不只一次的想組一台拼裝機器在上面跑Linux系統，但最後都因為硬體故障或是自己陷入其它風暴所以最後沒有做成。想要灌一台Slackware Linux來用就變成了一件一直沒有做到的事。大四終於有了機器，但因為修課需要，必須灌FreeBSD，所以這件事就繼續延宕下去，直到前幾天我有約要早起不能睡然後又沒事做的情況下，我就手癢重灌成Slackware 12.0，灌完才知道Slackware 12.1己經要出了。&lt;br /&gt;&lt;br /&gt;多年後的今天Linux己經變成了非常不同的系統，Ubuntu為首的許多套件都有非常優異的軟硬體支援性能，號稱什麼都不設，光碟丟下去，裝好後就有一台功能齊全的Linux Box。與其相比Slackware的功能就顯得不那麼吸引人，但會來用Slackware的人應該都是知道這一點還是會用的。&lt;br /&gt;&lt;br /&gt;我的機器光碟機脾氣不好會挑片，我燒出來的光碟無效。就在要放棄的時候，發現Slackware己經有USB installation image，而我剛好有兩支隨身碟，其中一支還夠大，所以我就用了其中一支塞USBIMAGE開機，另外一支放入Slackware installation set的內容，然後mount起來就可以裝了。Slackware的簡易性有時候可以帶來神奇的組合技，真高興成功了。&lt;br /&gt;&lt;br /&gt;雖然這幾年Slackware都只提供KDE，不過我仍舊不傾向用它(很久以前用過後這一點就沒有改變)，所以我整個k/下的都沒有裝，只裝了x/,xap/。裝好後我覺得Emacs的版本太舊了，想換比較新的版本，看過&lt;a href="http://www.linuxpackages.net/howto.php?page=package&amp;amp;title=Package+Howto"&gt;&lt;blockquote&gt;http://www.linuxpackages.net/howto.php?page=package&amp;amp;title=Package+Howto&lt;/blockquote&gt;&lt;/a&gt;這篇文件後也順利的做好一個沒有link Xlib的Emacs版本，速度還可以接受。以前可能資訊搜尋能力比較弱，基本操作也不行，所以包Slackware package從沒有成功過，現在做些簡單的package可能還可以應付，算得上是成長的軌跡吧!&lt;br /&gt;&lt;br /&gt;某方面而言這是一個「我想要什麼我就裝什麼」的行動，平心而論，Desktop的話Ubuntu或Fedora可以省下很多時間猜硬體型號跟調參數(雖然這次我沒碰到什麼嚴重的硬體問題，USB隨身碟一開始就能mount了)，Server的話*BSD提供很穩定的原始碼更新機制，而大多數Linux也都可以自動更新了，平心而論，Slackware在這兩方面都不是最好的。我喜歡它的地方是在它的透明與簡約，這就是我喜歡它的緣由。&lt;br /&gt;&lt;br /&gt;我以前有去掛過Freenode上的Slackware channel，那真的是一個很愛聊天的channel，後來因為log成長太快而且自己也不是真的在用Slackware所以就沒有掛下去，現在有去掛的好理由了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-3015438461364731779?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/3015438461364731779/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=3015438461364731779' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/3015438461364731779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/3015438461364731779'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/04/slackware-linux.html' title='重溫舊夢: Slackware Linux'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-8756058145141424778</id><published>2008-04-27T20:30:00.003+08:00</published><updated>2008-04-27T20:49:41.772+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><title type='text'>PCL Note: Variable &amp; Macro</title><content type='html'>拖延了好一陣子，終於又繼續看下去…&lt;br /&gt;&lt;br /&gt;Variable:&lt;br /&gt;&lt;br /&gt;2 kinds of scope : global &amp;amp; lexical&lt;br /&gt;(defvar *gl* 1)&lt;br /&gt;(defparameter *gl2* 2)&lt;br /&gt;&lt;br /&gt;關於何時使用&lt;span style="font-weight: bold;"&gt;DEFVAR&lt;/span&gt;何時使用&lt;span style="font-weight: bold;"&gt;DEFPARAMETER&lt;/span&gt;，書裡寫法很奇怪，我必需承認有點弄不懂。書中是說「如果你修改了程式碼的行為但你仍想保留變數的值就該用&lt;span style="font-weight: bold;"&gt;DEFVAR&lt;/span&gt;，而那你會想調整它以改變程式行為的變數該用&lt;span style="font-weight: bold;"&gt;DEFPARAMETER&lt;/span&gt;」。還是很不懂，沒辦法我的英文實在不太好…&lt;br /&gt;&lt;br /&gt;(let (x 10)&lt;br /&gt;   (somecode-refer-to-x x)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;在&lt;span style="font-weight: bold;"&gt;LET&lt;/span&gt;包含的範圍內，該變數就會存在。&lt;span style="font-weight: bold;"&gt;LET&lt;/span&gt;的範圍會短暫的蓋掉全域變數的值(書上的用語是取代了全域變數對值的binding)，所以在LISP裡的傳統全域變數的名稱必須以*開頭，並以*結尾：&lt;br /&gt;&lt;br /&gt;*db*    ;Global variable&lt;br /&gt;x    ; A local variable&lt;br /&gt;&lt;br /&gt;以免利用(let x)產生lexical binding蓋掉全域變數而不自知。&lt;br /&gt;&lt;br /&gt;Macro:&lt;br /&gt;我不知道要摘錄什麼重點比較好，沒有什麼記憶性的東西。不配合source ode看的話，下面那些簡直是言之無物。&lt;br /&gt;&lt;br /&gt;三個預防leak的要點：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;變數給初值的順序，與其在&lt;span style="font-weight: bold;"&gt;DEFMACRO&lt;/span&gt;的定義中的參數順序儘量一致。LISP允許side-effect，如果順序不同可能會產生預期外的結果。&lt;/li&gt;&lt;li&gt;Macro中的值，要考慮該值是如何被evaluate的(這條真的就含糊不清了，配合著書中例子看比較好懂)&lt;/li&gt;&lt;li&gt;Macro-expansion-time時的變數，應該使用&lt;span style="font-weight: bold;"&gt;GENSYM&lt;/span&gt;來產生一個亂數的變數名，然後再把需要的值指定給它。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;另外再多記一次，所有的macro都展開到沒有任何macro的狀態下，lisp程式碼才會被執行。這個時段應該可稱為Macro-espansion-time。&lt;br /&gt;&lt;br /&gt;LISP的Macro應該是它最強悍的功能吧，跟C的代換取代不同，LISP的Macro足以進行meta-programming。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-8756058145141424778?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/8756058145141424778/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=8756058145141424778' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8756058145141424778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/8756058145141424778'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/04/pcl-note-variable-macro.html' title='PCL Note: Variable &amp; Macro'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-251571510123997895</id><published>2008-04-11T03:09:00.003+08:00</published><updated>2008-04-19T21:27:29.424+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><title type='text'>Common Lisp note</title><content type='html'>為了不必再另外找地方放文件，乾脆就寫到blog上吧。這是我在"Practical Common Lisp"時作的簡記，例子有些也是節錄出來的：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;函式的參數與&amp;amp;key關鍵字&lt;/span&gt;&lt;br /&gt;(defun foo (&amp;amp;key a b c) (list a b c))&lt;br /&gt;&lt;br /&gt;; with the keyword &amp;amp;key now we can specific a value for variable by name&lt;br /&gt;; (foo :a 1 :b 2 :c )  ===&gt; (1 2 3)&lt;br /&gt;&lt;br /&gt;; we can also have default value&lt;br /&gt;(defun foo (&amp;amp;key a (b 20) c) (list a b c))&lt;br /&gt;; (foo :a 1) ===&gt; (1 20 NIL)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quote(') Backquote(`) Sharp(#)&lt;/span&gt;&lt;br /&gt;在lisp裡，沒有加上quote或:的symbol都會被試著解譯成某個變數或函式，加上quote就會維持原樣：&lt;br /&gt;&lt;br /&gt;(quote x)&lt;br /&gt;X&lt;br /&gt;&lt;br /&gt;'x&lt;br /&gt;X&lt;br /&gt;&lt;br /&gt;從第二個例子可以看出，加上一個'號，就是(quote )的簡寫。&lt;br /&gt;&lt;br /&gt;下面是backquote的範例，backquote一樣會把後面的字符quote起來，但若是在,號之後的運算式就會去evaluate其值：&lt;br /&gt;`(and (list 1 2 3)&lt;br /&gt;;`(AND (LIST 1 2 3))&lt;br /&gt;`(and ,(list 1 2 3))&lt;br /&gt;;`(AND (1 2 3))&lt;br /&gt;`(and ,@(list 1 2 3))&lt;br /&gt;;`(AND 1 2 3)&lt;br /&gt;&lt;br /&gt;,號與,@的差別是，後者在計算出值後會「脫」掉一層list，所以只可以使用在真的會是一個list的運算式上。&lt;br /&gt;&lt;br /&gt;(remove-if-not #'evenp (list 1 2 3 4 5))&lt;br /&gt;(2 4)&lt;br /&gt;&lt;br /&gt;對於偶數值evenp會回傳T，可以由此猜出(remove-if-not)的作用是什麼。&lt;strike&gt;#號在此，代表著'evenp是一個函數而非變數。&lt;/strike&gt;讀了後面的章節才發現 #' 是一個符號不該分開來寫。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;True or False&lt;/span&gt;&lt;br /&gt;口語上來說，NIL是假的，而其它都是真的。又&lt;blockquote&gt;NIL=()=nil='nil='()&lt;/blockquote&gt;這些是由於lisp內部的物件定義所致，這是刻意定的。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EQ,EQL,EQUAL,EQUALP&lt;/span&gt;&lt;br /&gt;關於兩個東西一不一樣，lisp也有一套不同之處。不像C只是比記憶體裡的bit，lisp的equal頗複雜的。&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;EQ 兩個是不是「一樣的」物件，不能用來比較字元與數字，即(eq 3 3)可能會是不同的，依實作而定&lt;/li&gt;&lt;li&gt;EQL 保證同樣的值(正確來說，internal-representation)會回傳T&lt;/li&gt;&lt;li&gt;EQUAL 若丟進來的是&lt;/li&gt;&lt;ul&gt;&lt;li&gt;結構與內容都相同的串列則為真&lt;/li&gt;&lt;li&gt;有著相同字元的字串則為真&lt;/li&gt;&lt;li&gt;其它同EQL&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;EQUALP &lt;/li&gt;&lt;ul&gt;&lt;li&gt;在數學上的值相同者保證為真即(equalp 12 12.0)會是T，而(equal 12 12.0)未必會是T&lt;/li&gt;&lt;li&gt;字串的比較上，大小寫字元視為相同&lt;/li&gt;&lt;li&gt;其它同EQL&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;另外，有一些其它的小細節：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;一個lisp程式在開始執行任何一個函式前，裡頭的macro會完全展開，也就是會變成一個macro-free code file&lt;/li&gt;&lt;li&gt;一個lisp function在被呼叫、開始執行前，它的參數(paramsters)的值一定是己知(或是說，己經被計算出來了)。換個比較具分類味道的口吻，這種行為表示lisp是一個eager的語言，在這方面Haskell是完全相反的。&lt;/li&gt;&lt;/ul&gt;這是一個非常古老、非常不同、非常非常不同...的語言，現在還只停留在syntax的學習階段，未來開始寫code時一定會在發現更多的細節…恩，不過是少數我覺得頗複雜但仍然覺得新奇有趣的語言XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-251571510123997895?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/251571510123997895/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=251571510123997895' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/251571510123997895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/251571510123997895'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/04/common-lisp-note.html' title='Common Lisp note'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35059609.post-2743056752604099002</id><published>2008-04-10T00:59:00.002+08:00</published><updated>2008-04-10T01:11:14.429+08:00</updated><title type='text'>PuTTY , a terminal emulator with many features</title><content type='html'>最近因為一個很有趣的問題因而發現了PuTTY的有趣之處。過去在Vim裡頭我總是無法正確使用數字鍵區的鍵，打數字鍵區的鍵不會出現數字，反而會出現奇怪的英文字母，我一直認為要修正這個問題，除了調整vim或是去改termcap/terminfo別無它法。&lt;br /&gt;但後來google了之後發現這其實是PuTTY的features，PuTTY可以模擬許多不同的terminal，不論是實際的terminal機型或是其它的terminal program它都有一些支援。而在vim中會出現這些奇怪的字全是因為PuTTY針對了數字鍵區的按鍵送出了不同的Sequences，而在vim中這並不是我們期待的結果。要解決的話，在設定視窗選Terminal-&gt;Features-&gt;Disable application keypad mode，勾選後PuTTY就會對數字鍵區的鍵，送出數字跟運算符號了!&lt;br /&gt;如果你只關心vim裡頭這些鍵正確與否，我也找到一個很牛的做法，直接將PuTTY送出的這些key sequences再map回數字與符號，請&lt;a href="http://suddymail.org/show-118-1.html"&gt;&lt;/a&gt;參閱&lt;br /&gt;&lt;a href="http://suddymail.org/show-118-1.html"&gt;&lt;blockquote&gt;&lt;/blockquote&gt;http://suddymail.org/show-118-1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這樣就可以在少調一個選項的情況下，而在vim中使用數字鍵。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35059609-2743056752604099002?l=qlife113.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qlife113.blogspot.com/feeds/2743056752604099002/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35059609&amp;postID=2743056752604099002' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2743056752604099002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35059609/posts/default/2743056752604099002'/><link rel='alternate' type='text/html' href='http://qlife113.blogspot.com/2008/04/putty-terminal-emulator-with-many.html' title='PuTTY , a terminal emulator with many features'/><author><name>Sheng-Yao Tseng</name><uri>http://www.blogger.com/profile/11238800170121512442</uri><email>qlife@cs.nctu.edu.tw</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04041822532683864375'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>