<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUABRn47eCp7ImA9WhVTEUQ.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560</id><updated>2012-02-26T02:15:57.000+08:00</updated><category term="Network" /><category term="arm" /><category term="Go" /><category term="Book Reading" /><category term="Network Programming" /><category term="VirtualBox" /><category term="Javascript for apps" /><category term="多平台開發" /><category term="超軟中文直式閱瀏器" /><category term="General Programming" /><category term="NAS" /><category term="django" /><category term="VLC" /><category term="自製軟體" /><category term="video capture" /><category term="TroubleShooting" /><category term="Snow Leopard" /><category term="iOS Dev" /><category term="VPN" /><category term="網頁應用程式" /><category term="Nodejs" /><category term="C/Objective-C" /><category term="Arduino" /><category term="資料庫" /><category term="python" /><category term="Linux" /><category term="Juniper" /><category term="Mac OS X" /><category term="qemu" /><category term="windows" /><category term="Vagrant" /><category term="automation" /><category term="embed" /><category term="OS" /><title>超軟之家</title><subtitle type="html">在研究電腦與程式設計上所發生的大小事，會在此留下足跡。 - Ben(8/14)&lt;br&gt;
“Imagination is everything. It is the preview of life’s coming attractions.”
– Albert Einstein&lt;br&gt;
“Decisions are progress.” - Rework, 37Signals</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ben6.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/kSByW" /><feedburner:info uri="blogspot/ksbyw" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUABRn4_fSp7ImA9WhVTEUQ.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-7330915973808232816</id><published>2012-02-26T02:09:00.000+08:00</published><updated>2012-02-26T02:15:57.045+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-26T02:15:57.045+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arm" /><category scheme="http://www.blogger.com/atom/ns#" term="NAS" /><category scheme="http://www.blogger.com/atom/ns#" term="Nodejs" /><category scheme="http://www.blogger.com/atom/ns#" term="embed" /><category scheme="http://www.blogger.com/atom/ns#" term="網頁應用程式" /><title>用BeagleBone Rev.A3 打造簡易行動NAS系統</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/7330915973808232816/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=7330915973808232816" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7330915973808232816?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7330915973808232816?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/uGhdf1cUncE/beaglebone-reva3-nas.html" title="用BeagleBone Rev.A3 打造簡易行動NAS系統" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-ovkF9kMX1iQ/T0ki3AfaWmI/AAAAAAAAAdc/iwOGvUNz5Bw/s72-c/remove_reset_button_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">承上篇開發環境 BeagleBone A8 實測Linaro-nano, 筆者便想這塊Beaglebone 可以做什麼實際用途呢?

去年,曾寫過試用FreeNas 8.01一文，若能將常用的功能(rsync, ssh, cifs) 放到Beaglebone，則它便可成為一台行動網路NAS。

但FreeNas 還沒有ARM的版本，所以筆者用Linaro-nano 為基礎，作了簡單實做。

開發時，遇到網路卡會不定時自動斷掉，十分惱人。原本以為是Linaro 所用的kernel 不穩定；
後來找了很久，最後發現BeagleBone - Rev. A3上已知硬體問題。

 
 

Etherent Drop/Reset switch(A3 and A4 Only]
On some A3 and A4 boards, the reset switch can develop a low 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sCn-b8iskdmNHeYXvd9jcAr0r3I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sCn-b8iskdmNHeYXvd9jcAr0r3I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sCn-b8iskdmNHeYXvd9jcAr0r3I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sCn-b8iskdmNHeYXvd9jcAr0r3I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/uGhdf1cUncE" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2012/02/beaglebone-reva3-nas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQASXszfyp7ImA9WhRUGU4.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-8926724846520097324</id><published>2012-01-30T22:59:00.001+08:00</published><updated>2012-01-30T23:29:08.587+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T23:29:08.587+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="資料庫" /><category scheme="http://www.blogger.com/atom/ns#" term="網頁應用程式" /><title>python 與 Redis 資料庫初探</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/8926724846520097324/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=8926724846520097324" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8926724846520097324?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8926724846520097324?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/y0BQ_HmtlPs/python-redis.html" title="python 與 Redis 資料庫初探" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-FRWie-JkKb8/TyawQ4ndD-I/AAAAAAAAAdI/pfsLyzvlyow/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html"> 

個最近想提高公司網站的效能，之前為求先縮短第一版開發的時程，先用MySQL來實作session store，始終覺得有殺雞用牛刀的感覺。便著手研究目前非常流行的Redis，它是一種No SQL及In-Memory 的資料庫，就一個倶有Key-Value結構等特性的資料庫而言，十分適合用來做Session Store使用。

安裝

為Redis 的網站說明做的不錯，照著下載區及其安裝說明，三步驟安裝：

 
 $ wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz
$ tar xzf redis-2.4.6.tar.gz
$ cd redis-2.4.6
$ make



網站上建議使用2.4 版，筆者下載2.4.6 穩定版來安裝。

目前開發環境在Mac OS X Lion及 Ubuntu 11.10上，
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j4GEPTlUK2xUbWfdttM_Pw7zWdY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j4GEPTlUK2xUbWfdttM_Pw7zWdY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j4GEPTlUK2xUbWfdttM_Pw7zWdY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j4GEPTlUK2xUbWfdttM_Pw7zWdY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/y0BQ_HmtlPs" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2012/01/python-redis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ACRn05eip7ImA9WhRUGU4.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-7870496492376800131</id><published>2012-01-29T23:20:00.001+08:00</published><updated>2012-01-30T23:02:47.322+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T23:02:47.322+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arm" /><category scheme="http://www.blogger.com/atom/ns#" term="embed" /><title>開發環境 BeagleBone A8 實測Linaro-nano</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/7870496492376800131/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=7870496492376800131" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7870496492376800131?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7870496492376800131?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/e0u02scHazE/beaglebone-a8.html" title="開發環境 BeagleBone A8 實測Linaro-nano" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-OrQ0TDyVdrw/TyVjgUcfDQI/AAAAAAAAAbI/oF3eMzouHmU/s72-c/IMG_1622_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">最近實測了一塊Linaro活動贈送的開發板BeagleBone Rev.A3 (PDF英文手冊、開發說明)。其中，內附一個4GB的micro SD 卡。

  

SD卡已預先載好Linaro-nano (Linux linaro-nano 3.1.0+ #1 Tue Nov 15 15:51:15 CET 2011 armv7l armv7l armv7l GNU/Linux)
驅動程式在Windows XP 上有些小問題。
請依下照步驟安裝，(其他系統安裝，詳參閱原英文說明)

解壓縮BONE_DRV.exe
先連接usb連接線
硬體安裝精靈，並手動指定解壓目錄，進行安裝USB序列埠驅動程式及FTDI虛擬COM Port驅動程式。



成功安裝後，可在裝置管理員中看到下列資訊（以筆者電腦環境，為COM6)。


接著開啟’超級終端機’，設定如下圖示：
 

重新接上USB線，
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DmhdtfUEUCuEZFi9tbkZ7i4BfMo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DmhdtfUEUCuEZFi9tbkZ7i4BfMo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DmhdtfUEUCuEZFi9tbkZ7i4BfMo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DmhdtfUEUCuEZFi9tbkZ7i4BfMo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/e0u02scHazE" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2012/01/beaglebone-a8.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4MQHgzfSp7ImA9WhRVEkU.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-6833016161085731592</id><published>2011-12-31T17:47:00.001+08:00</published><updated>2012-01-11T19:23:01.685+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-11T19:23:01.685+08:00</app:edited><title>阿班私房菜- 初探 Networking debug Logging (網路偵錯日誌)</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/6833016161085731592/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=6833016161085731592" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/6833016161085731592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/6833016161085731592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/kDaww1jUmFg/networking-debug-logging.html" title="阿班私房菜- 初探 Networking debug Logging (網路偵錯日誌)" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-VVGf5uKljRs/Tv7aNswBZMI/AAAAAAAAAas/geo0zI24Zvo/s72-c/tcpdump-with-cap_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html"> 
（註: 筆者愛用 nc(netcat) + tcpdump 來做網路實驗，上圖即其結果。 ）

記得許久前，某人問我一個問題，有比較好的遠端偵錯的方法嗎？
首先，我先定義所謂＂遠端偵錯＂：

無法利用即時偵錯

你的程式可能在數百公里外執行。簡言之，你沒辦法到現場去查臭蟲。
２４Ｘ７伺服端程式，你不能停止它來使用單步偵錯。


筆者先談談針對網路相關問題偵錯心得：

排除法：先簡化錯誤發生的因素。

案例：某公司開發用伺服器上的網站，使用手機(Android Phone)或較慢的機器（如：Eeepc)，時常發生連線逾時的情形；但手機連線至他站均無問題。

先檢查，區網內的硬體是否有問題？（無線Access Point (AP)及Router 檢查，甚至網路線更換，無改善。）
再查，AP的DNS是否有問題。（無發現）
查看google 大神，是否Eeepc 網路卡有相容性問題。（無發現
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uZY-3TYK_nCpp21zc5l_abr-rFY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uZY-3TYK_nCpp21zc5l_abr-rFY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uZY-3TYK_nCpp21zc5l_abr-rFY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uZY-3TYK_nCpp21zc5l_abr-rFY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/kDaww1jUmFg" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/12/networking-debug-logging.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHR3Y_fyp7ImA9WhRWE0w.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-4976978651526669462</id><published>2011-12-30T01:53:00.001+08:00</published><updated>2011-12-31T15:07:16.847+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T15:07:16.847+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="General Programming" /><title>阿班私房菜-Design Pattern(DP)初探使用Python (1)</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/4976978651526669462/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=4976978651526669462" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/4976978651526669462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/4976978651526669462?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/db6vXDfIcK0/design-patterndppython-1.html" title="阿班私房菜-Design Pattern(DP)初探使用Python (1)" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><thr:total>0</thr:total><content type="html">
  

最近使用Python 寫程式，心血來潮，使用 (DP) 套用看看。
以 Factory worker 為例。
首先建立一個物件Ｗorker 包含姓名、屬性等等。
 
 class Worker:
    def __init__(self, name=None):
        self.name = capfirst(name) if name else "The worker"  
    def getName(self):
        return self.name
    def attrib(self):        return "Worker" 
    def lookandfeel(self):
        print "%s is a %s" % (self.name, self.attrib())  


Designer與Engineer
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DwSllWJaDF6d1hPPJcrgIUFk_q4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DwSllWJaDF6d1hPPJcrgIUFk_q4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DwSllWJaDF6d1hPPJcrgIUFk_q4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DwSllWJaDF6d1hPPJcrgIUFk_q4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/db6vXDfIcK0" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/12/design-patterndppython-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YGQX4zeSp7ImA9WhRRFks.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-1032109702115205781</id><published>2011-11-30T21:39:00.001+08:00</published><updated>2011-12-01T00:05:20.081+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T00:05:20.081+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="automation" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="General Programming" /><title>阿班私房菜-重構(Refactoring)的小技巧(1)</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/1032109702115205781/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=1032109702115205781" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/1032109702115205781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/1032109702115205781?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/B8dm2Bb2Sjg/refactoring1.html" title="阿班私房菜-重構(Refactoring)的小技巧(1)" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><thr:total>0</thr:total><content type="html">
最近在看一本書"The Pragmatic Programmer"，裡有不少與重構相關的範例，值得參考，有與趣人可以買來看看。因此書，筆者心血來潮，分享一下自己的開發經驗。



在專案開發程式的過程，常會因時間壓力或市場考量，不得不加入很多非計畫中的程式碼。
開發時間越久，就漸漸難以維護，增加新功能更為秏時；當人力不足以達成出貨時程，便開始增加人力，最後日積月累，專案程式變成一個大怪物；直至某一日砍掉重練。


而筆者近年來，使用重構方法，使得自己不用一直為解專案bug而加班。

重構(Refactoring) 英文是一個現在進行式，表示這個動作需要一直不斷發生。



其中，＂重構＂的最重要的基石就是自動化測試程式，如每當重構程式碼中重覆的部分時，執行一下自動化測試程式，便可很快的確認程式修改後的正確性。

接下來我們來看一些筆者常用的小技巧，以下範例使用Python語言。
 
 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/apBwjiD7SvnsrQUkD2731ovljMs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/apBwjiD7SvnsrQUkD2731ovljMs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/apBwjiD7SvnsrQUkD2731ovljMs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/apBwjiD7SvnsrQUkD2731ovljMs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/B8dm2Bb2Sjg" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/11/refactoring1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UAR34_fCp7ImA9WhRRFUU.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-8930831979600623890</id><published>2011-11-30T00:29:00.001+08:00</published><updated>2011-11-30T00:47:26.044+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T00:47:26.044+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>django i18n 實戰 (二)</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/8930831979600623890/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=8930831979600623890" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8930831979600623890?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8930831979600623890?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/8Z4Jxwx3GZQ/django-i18n_30.html" title="django i18n 實戰 (二)" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><thr:total>0</thr:total><content type="html">
續上篇django i18n 實戰，筆者作了一些小實驗，以方便中文翻譯的進行。

整段文章中文化

在前篇提到的使用django.po 來編修翻譯的方法，在此處便不太適用。
因為這類文字時常修修補補，非常不易維護。
目前使用的解決方法，使用不同locale目錄來放置不同語言版本template。
 
 en test.html
test2.html
 zh-tw test.html
test2.html


取得目錄及template名稱
 
 from django.utils import translation  
def getLocaleResourcePathName(templateName):
    cur_language = None
    try:
        cur_language = translation.get_language()
    
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z0vvcTY7iDYwWAxbQ66j2eFn1Es/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z0vvcTY7iDYwWAxbQ66j2eFn1Es/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z0vvcTY7iDYwWAxbQ66j2eFn1Es/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z0vvcTY7iDYwWAxbQ66j2eFn1Es/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/8Z4Jxwx3GZQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/11/django-i18n_30.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcDSXozfSp7ImA9WhRRFU0.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-2943926118095409789</id><published>2011-11-29T01:55:00.001+08:00</published><updated>2011-11-29T01:57:58.485+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T01:57:58.485+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>django i18n 實戰</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/2943926118095409789/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=2943926118095409789" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/2943926118095409789?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/2943926118095409789?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/DZRRQFJia7U/django-i18n.html" title="django i18n 實戰" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-LWm1SpVndAI/TtPLJX06i2I/AAAAAAAAAaU/2CiMp3kwyzU/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html"> 

最近在為的上線前專案做中文化的處理，在此留下一心得記錄。
就django 中文化相關工具而言，主要是將gettext中的兩個命令：

xgettext包裝成django-admin.py makemessages, 用以將程式及腳本檔中所定義的Key字串取出放入至django.po  
msgfmt包裝成django-admin.py compilemessages, 用來把django.po 轉為二進位的django.mo檔案。

Key 字串
以底線（_)為常見的gettext key字串
在下列命令為常使用的兩種：
 
 from django.utils.translation import gettext_lazy as _

筆者使用下列語法：
 
 from django.utils.translation import ugettext as _ 


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I5OOCWF_F9t_dSKqoMyIT9Ae4oU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I5OOCWF_F9t_dSKqoMyIT9Ae4oU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I5OOCWF_F9t_dSKqoMyIT9Ae4oU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I5OOCWF_F9t_dSKqoMyIT9Ae4oU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/DZRRQFJia7U" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/11/django-i18n.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EGQno8eCp7ImA9WhRTEkg.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-697817039921739471</id><published>2011-11-03T01:31:00.001+08:00</published><updated>2011-11-03T01:40:23.470+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-03T01:40:23.470+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox" /><category scheme="http://www.blogger.com/atom/ns#" term="Vagrant" /><title>Vagrant+virtualbox (2): 實戰封裝自制package.box</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/697817039921739471/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=697817039921739471" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/697817039921739471?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/697817039921739471?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/jI5Il-OFxTI/vagrantvirtualbox-2-packagebox.html" title="Vagrant+virtualbox (2): 實戰封裝自制package.box" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-3LJSPEoJaRg/TrF8MTYWC7I/AAAAAAAAAYc/JD2CEntmFRo/s72-c/image_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">


續上篇執行lucid32.box 使用 jRuby + vagrant在Windows XP
Vagrantfile 範例 
 
 Vagrant::Config.run do |config| 
  config.vm.box = "gold" 
  # config.vm.forward_port("web", 80, 8080) 
end


添加所需應用程式及設定，如安裝django套件：
 
 sudo easy_install pip
sudo pip install django

使用此檔案執行 vagrant up後，使用 putty （參考執行lucid32.box 使用 jRuby + vagrant在Windows XP）

若要附加自己的說明檔案，請使用—include
 
 vagrant package --vagrantfile .vagrant -
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gBapiopoy6uCLMav-1T8Be7QhQ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gBapiopoy6uCLMav-1T8Be7QhQ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gBapiopoy6uCLMav-1T8Be7QhQ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gBapiopoy6uCLMav-1T8Be7QhQ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/jI5Il-OFxTI" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/11/vagrantvirtualbox-2-packagebox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IESHs4fyp7ImA9WhRWEUU.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-3261354049210605732</id><published>2011-10-31T23:36:00.002+08:00</published><updated>2011-12-30T01:58:29.537+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-30T01:58:29.537+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="網頁應用程式" /><title>Python+Django 輕鬆寫Web AP</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/3261354049210605732/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=3261354049210605732" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/3261354049210605732?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/3261354049210605732?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/8Ed5UszTK50/pythondjango-web-ap.html" title="Python+Django 輕鬆寫Web AP" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-B2TWSqruff4/Tq7WsJeAorI/AAAAAAAAAYM/8chya50pXzw/s72-c/django_site.PNG" height="72" width="72" /><thr:total>0</thr:total><content type="html">


近期工作需要在較短時間內，開發出Web端的程式，因筆者擅長Python，最後決定使用python+django 的組合。
另外在FreeNas 8 中也是使用 python+django來實作Web 控制介面，所以學會django，也可日後若為FreeNas添加新功能做準備。

（註：Google App Engine也採用django，但內建的版本已封裝一層，但有網上教學如何使用原來的django套件方法。）

環境設定

本次採用python 2.7+django 1.3.1
django 授權BSD License（筆者愛用BSD授權）

Cygwin

下載python-2.7.2 重新編繹
開啟Cygwin Terminal 或Mintty for Cygwin
安裝pip

easy_install pip

使用pip來管理python套件

pip install 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A74buv8ep2x3tmRJB4ZY7mEOGRs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A74buv8ep2x3tmRJB4ZY7mEOGRs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A74buv8ep2x3tmRJB4ZY7mEOGRs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A74buv8ep2x3tmRJB4ZY7mEOGRs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/8Ed5UszTK50" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/10/pythondjango-web-ap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IMRng5fyp7ImA9WhRTEkg.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-5290174276628934367</id><published>2011-10-30T02:04:00.000+08:00</published><updated>2011-11-03T01:39:47.627+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-03T01:39:47.627+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox" /><category scheme="http://www.blogger.com/atom/ns#" term="Vagrant" /><title>執行lucid32.box 使用 jRuby + vagrant在Windows XP</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/5290174276628934367/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=5290174276628934367" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/5290174276628934367?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/5290174276628934367?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/Tyu2Vyu4iW0/lucid32box-jruby-vagrantwindows-xp.html" title="執行lucid32.box 使用 jRuby + vagrant在Windows XP" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-okwFbVhOYkY/Tqw6Pkz_8_I/AAAAAAAAAVw/nz9hotvtP8Q/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">  

最近朋友有在Windows環境中使用vagrant的需求，
而筆者有時要用windows xp來使用vagrant，
故寫了本篇，便是介紹如何安裝vagrant及其環境。 

安裝 Ruby

實驗使用cygwin+ruby，但最後有相容性臭蟲問題而成殘念。

 
 /usr/lib/ruby/gems/1.8/gems/virtualbox-0.9.2/lib/virtualbox/com/mscom_interface.rb:28:in `initialize': failed to create WIN32OLE object from `VirtualBox.VirtualBox' (WIN32OLERuntimeError)
    HRESULT error code:0x80004005


使用JRuby 1.8 (32-bit)

 
 C:\Documents
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A9WuG3zGtTADyCIwPZOwVYSW6LY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A9WuG3zGtTADyCIwPZOwVYSW6LY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A9WuG3zGtTADyCIwPZOwVYSW6LY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A9WuG3zGtTADyCIwPZOwVYSW6LY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/Tyu2Vyu4iW0" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/10/lucid32box-jruby-vagrantwindows-xp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4GQXk7eSp7ImA9WhdaFUg.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-4166943986617334599</id><published>2011-10-14T02:29:00.000+08:00</published><updated>2011-10-26T00:08:40.701+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-26T00:08:40.701+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arm" /><category scheme="http://www.blogger.com/atom/ns#" term="embed" /><category scheme="http://www.blogger.com/atom/ns#" term="Arduino" /><category scheme="http://www.blogger.com/atom/ns#" term="Mac OS X" /><title>在Mac OS X初次使用Arduino實驗板</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/4166943986617334599/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=4166943986617334599" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/4166943986617334599?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/4166943986617334599?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/jt20B2J9D5U/mac-os-xarduino.html" title="在Mac OS X初次使用Arduino實驗板" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-3ZpR8j3RZLU/Tpctnr7O8fI/AAAAAAAAAS4/ksfJjzggi9M/s72-c/arduino_install1_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">今天在HackingThursday 聚會，朋友借了一塊Arduino Mega 2560實驗板，現場測試。本文便是將開發設定相關心得做個紀錄。
當然可參考原文的說明手冊
首先至http://arduino.cc/en/Main/Software此下載Mac OS X安裝檔http://arduino.googlecode.com/files/arduino-0022.dmg

開啟dmg檔案後，便會出現上列，將Arduino 圖示，拖曳到Applications（應用程式目錄），再安裝USB 序列埠驅動程式，如下，依指示安裝。
  
先使用USB連接線，連接Mac及2560實驗板，會出現偵測到新網路介面，按cancel 取消即可，不需進行此項設定。

再來到Applications 目錄中，找到並執行Arduino整合開發應用程式。

Arduino 整合開發環境是以Java開發而成，
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4gHWcLHIdJzNkTywvpygRGbjBWk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4gHWcLHIdJzNkTywvpygRGbjBWk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4gHWcLHIdJzNkTywvpygRGbjBWk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4gHWcLHIdJzNkTywvpygRGbjBWk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/jt20B2J9D5U" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/10/mac-os-xarduino.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQNQnc4cSp7ImA9WhdUF0g.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-9119097260221102223</id><published>2011-10-01T22:45:00.001+08:00</published><updated>2011-10-05T03:43:13.939+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-05T03:43:13.939+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arm" /><category scheme="http://www.blogger.com/atom/ns#" term="qemu" /><category scheme="http://www.blogger.com/atom/ns#" term="embed" /><title>ARM Linux 開發環境設定指南</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/9119097260221102223/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=9119097260221102223" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/9119097260221102223?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/9119097260221102223?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/xJSzucw4meE/arm-linux.html" title="ARM Linux 開發環境設定指南" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-AqR73IfVqFs/TocndnkFwpI/AAAAAAAAASM/D3sPChxj03s/s72-c/debian-arm-booting_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">  
最近在工作上，需要用到ARM相關平台，所以花時間研究 ARM CPU 架構的開發環境，
其中硬體商（目前開發板:Friendly ARM Tiny6410）提供的部分程式必須在Windows 上才可執行。
故筆者想能不能在windows 及ubuntu-linux 中，也可各有一個模擬arm 的開發平台，可直接編譯程式而不需要使用cross-compiler（簡言之，如在windows平台上，使用ARM虛擬機器編譯arm執行檔）。
經過搜尋網上資料後，發現有一套件debian armel可供使用，且很貼心的提供可利用qemu arm來直接載入使用，大大減少重新編譯的時間。

設定步驟

安裝QEMU

Windows:  請參考在Cygwin中設定並使用Qemu一文
Ｍac OS X : 請參考＂在蘋果電腦上執行 qemu (MAC OS X)＂一文
Ubuntu:  請執行下列
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S4dunw2h2rcWLUut7uZVZD0df68/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S4dunw2h2rcWLUut7uZVZD0df68/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/S4dunw2h2rcWLUut7uZVZD0df68/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S4dunw2h2rcWLUut7uZVZD0df68/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/xJSzucw4meE" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/10/arm-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUHQX48eyp7ImA9WhdVE08.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-7017106472113226963</id><published>2011-09-16T22:44:00.000+08:00</published><updated>2011-09-18T14:27:10.073+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T14:27:10.073+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="超軟中文直式閱瀏器" /><category scheme="http://www.blogger.com/atom/ns#" term="自製軟體" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><title>自製免費軟體:超軟中文直式閱瀏器sviewer 0.27.1001更新</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/7017106472113226963/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=7017106472113226963" title="3 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7017106472113226963?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7017106472113226963?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/EtsMUX5K7HE/sviewer-0271001.html" title="自製免費軟體:超軟中文直式閱瀏器sviewer 0.27.1001更新" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-L4217X4iLJg/TnNgI1s2OrI/AAAAAAAAASE/zbaMbposoWE/s72-c/sviewer027_thumb.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><content type="html">
  

主要修正 2.7.1001  
* 解決無BOM標頭UTF8檔案，顯示亂碼問題。
* 狀態列顯示檔案類型UTF8, BOM UTF8, ASCII等等  
* 工具字型大小選擇: 字型加大為大24, 中20, 小16

檔案下載
由此下載sviewer-027-1001.zip檔案 
a073cfa82d621593c49fc26b6972e7bf *sviewer-027-1001.zip   
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ggIV1NjXWUAUOTUbV1bblFKAzSU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggIV1NjXWUAUOTUbV1bblFKAzSU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ggIV1NjXWUAUOTUbV1bblFKAzSU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggIV1NjXWUAUOTUbV1bblFKAzSU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/EtsMUX5K7HE" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/09/sviewer-0271001.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUDSXg9eip7ImA9WhdVEE0.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-1786623963379041719</id><published>2011-09-14T21:32:00.001+08:00</published><updated>2011-09-14T21:34:38.662+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-14T21:34:38.662+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Go" /><category scheme="http://www.blogger.com/atom/ns#" term="General Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Network Programming" /><title>Go 程式語言再探</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/1786623963379041719/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=1786623963379041719" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/1786623963379041719?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/1786623963379041719?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/mz-gcHw_VEY/go_14.html" title="Go 程式語言再探" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-R1fIrjcSXA8/TnCs5nWXFGI/AAAAAAAAAR8/5bzb0HexoJU/s72-c/go_webs_qrcode_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">
  從官網中範例程式找到一段Go程式碼WebServer，加入我的編譯腳本檔如下：
 
 GOCC=6gGOLD=6l  
PROJECT=webserver  
all: $(PROJECT)  
$(PROJECT).6: $(PROJECT).go        $(GOCC) $(CFLAGS) $^  
$(PROJECT): $(PROJECT).6        $(GOLD) -o $@ $^  
run: $(PROJECT)        ./$^  
clean:        rm -f $(PROJECT).6 $(PROJECT)

當你輸入，make run 時，如果設定無誤(詳設定請參閱Go語言初探)，將會啟動一個Web Server 在localhost:1718。
如上圖，筆者輸入本站網址，點按[Show QR]，輕輕鬆鬆產生本站QRCode圖像。

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fCFuVjozubvh-QI_J3SpDajwx4o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fCFuVjozubvh-QI_J3SpDajwx4o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fCFuVjozubvh-QI_J3SpDajwx4o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fCFuVjozubvh-QI_J3SpDajwx4o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/mz-gcHw_VEY" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/09/go_14.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHR3s5eyp7ImA9WhdVE08.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-6398993029059686484</id><published>2011-09-07T23:59:00.000+08:00</published><updated>2011-09-18T14:58:56.523+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T14:58:56.523+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Go" /><category scheme="http://www.blogger.com/atom/ns#" term="General Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="多平台開發" /><title>Go 程式語言初探</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/6398993029059686484/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=6398993029059686484" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/6398993029059686484?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/6398993029059686484?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/AdqFfs9qiYY/go.html" title="Go 程式語言初探" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><thr:total>0</thr:total><content type="html">


from http://golang.org



最近寫多篇與OS開發相關超硬的文章，來學習Go 語言換換口味輕鬆一下吧！參考英文說明，寫了以下心得：

使用平台為Mac OS X 10.6.8 + Xcode 4.2

前言

Go 程式語言是一個開放源碼的專案，以BSD-style授權發佈。
它以通用語言作為系統設計基礎想法。在強調於型別、垃圾回收及明確定義支持Concurrent程式設計的語言功能等等。並提供大量套件 ，提高寫程式效率。目前支援x86及ARM處理器，一個64位元及32位元x86的編譯套件（6g和8g），及支援ARM的編譯套件(5g)。

開發環境設定

安裝 Mercurial (hg)
 sudo easy_install mercurial
(註：easy_install 是python所內附一個好用安裝第三方工具的python腳本）



&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wHaQVbKZgg_ECV-X0KgIahdb6OA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wHaQVbKZgg_ECV-X0KgIahdb6OA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wHaQVbKZgg_ECV-X0KgIahdb6OA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wHaQVbKZgg_ECV-X0KgIahdb6OA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/AdqFfs9qiYY" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/09/go.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4GRX46cCp7ImA9WhdWEko.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-8593097354960382653</id><published>2011-09-05T02:22:00.001+08:00</published><updated>2011-09-06T10:58:44.018+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-06T10:58:44.018+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OS" /><category scheme="http://www.blogger.com/atom/ns#" term="自製軟體" /><category scheme="http://www.blogger.com/atom/ns#" term="Network Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="embed" /><category scheme="http://www.blogger.com/atom/ns#" term="多平台開發" /><title>啟用e100 (i82559er)網路卡在自製Bos</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/8593097354960382653/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=8593097354960382653" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8593097354960382653?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8593097354960382653?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/r89c94VQugk/e100-i82559erbos.html" title="啟用e100 (i82559er)網路卡在自製Bos" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-kBdw1a9DRpg/TmPB60t4yhI/AAAAAAAAARo/WCxt4TfZVRA/s72-c/bos_i82559er_enabled_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html"> 續上篇自製BenOS支援lspci 命令，參考MIT OSE Lab6: Network Driver 及其中各項文件，且參照相關Linux網路驅動程式設計，目前已整合實作82559er網路卡驅動至BOS v0.21中。
新增及修改下列檔案：
 
 pcireg.h PCI相關參數標頭檔，引用自NetBSD，源自MIT OSE LAB
 pci.c 移植Lab6 kern/pci.c
 net_e100.h 參考Lab6相關實作資料
 net_e100.c 參考Lab6相關實作資料

teset/Makefile   已修改以i82559er為參數，啟動qemu :
 
 qemu -fda "../bos.img" -net user -net nic,model=i82559er

執行後結果，如文頭畫面。

啟用e100
其中pci.c，如何啟用e100 82559er 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Z99CnCggBotlVkN8lQd-uM3kvuM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z99CnCggBotlVkN8lQd-uM3kvuM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Z99CnCggBotlVkN8lQd-uM3kvuM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z99CnCggBotlVkN8lQd-uM3kvuM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/r89c94VQugk" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/09/e100-i82559erbos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8DQXk7eSp7ImA9WhdWEk0.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-7787241060642174593</id><published>2011-08-29T21:39:00.005+08:00</published><updated>2011-09-05T15:31:10.701+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-05T15:31:10.701+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OS" /><category scheme="http://www.blogger.com/atom/ns#" term="自製軟體" /><category scheme="http://www.blogger.com/atom/ns#" term="Network Programming" /><title>自製BenOS支援lspci 命令</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/7787241060642174593/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=7787241060642174593" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7787241060642174593?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7787241060642174593?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/nTAJVQMt2xs/benoslspci.html" title="自製BenOS支援lspci 命令" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-kVW_2IfkjU0/TluWp_DTxEI/AAAAAAAAARg/9r_xlKoaMwM/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html"> 
在實現網路支援之前，必須先能使用PCI Bus來找到網路卡相關資訊,
參考OSDev.org的"Where I can find Programming Info on PCI?”一文後，
筆者已在Bos實現了lspci 命令，參考＂Configuration Mechanism #1”完成，下列程式，
其實一開始，最先遇到問題部分是如何讀取PCI?
原文使用sysOutLong() 和sysInLong(), 對照MIT OSE Lab相關資料，實作如下：

 static __inline uint32_t inl(int port)
{
        uint32_t data;
        __asm __volatile("inl %w1,%0" : "=a" (data) : "d" (port));
        return data;
}  
static 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-2smSK1wptpNzxuUbQLKNdCObqM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-2smSK1wptpNzxuUbQLKNdCObqM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-2smSK1wptpNzxuUbQLKNdCObqM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-2smSK1wptpNzxuUbQLKNdCObqM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/nTAJVQMt2xs" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/benoslspci.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAHRH0_fSp7ImA9WhdXFEg.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-8846546263264643790</id><published>2011-08-25T01:36:00.008+08:00</published><updated>2011-08-27T22:18:55.345+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-27T22:18:55.345+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="General Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="多平台開發" /><title>在Cygwin中設定並使用Qemu</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/8846546263264643790/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=8846546263264643790" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8846546263264643790?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/8846546263264643790?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/sK4bSLiFxQE/cygwinqemu.html" title="在Cygwin中設定並使用Qemu" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-waWSj-26b6w/TlU2k0q0i-I/AAAAAAAAAQ0/P2Etv0CpICM/s72-c/mintty_cygwin_qemu_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html"> 
在看完前三篇編繹BOS文章之後，眼尖的讀者，應該有發現在Linux和MAC OS X平台都是使用qemu 來執行；可是一到Windows 怎麼變成VMWare Player呢！其實筆者曾試著編繹cygwin版的qemu, 卻有太多問題要解決，為求效率；使用其他虛擬機軟體來代替。
這篇算是補完＂自製開發BenOS支援Windows＋Cygwin＂一文。

1. 下載所需qemu工具

在使用谷歌大神後，Qemu.org的友站連結中的非官方版已預先編繹好的程式，找到qemu 0.13版，由此下載 。（感謝他的分享，筆者少花數小時生命。）


2. 安裝Qemu
在下載完qemu-0.13.0-windows.zip後，將它解壓縮到cygwin安裝目錄中。
就筆者環境來說，路徑為C:\cygwin\usr\local\qemu3. 開啟cygwin命令視窗
加入下列指令到 /etc/
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ikDvwSg2YRjW7MZvWRsakqtiH9w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ikDvwSg2YRjW7MZvWRsakqtiH9w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ikDvwSg2YRjW7MZvWRsakqtiH9w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ikDvwSg2YRjW7MZvWRsakqtiH9w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/sK4bSLiFxQE" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/cygwinqemu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGQHo_cSp7ImA9WhdXEUw.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-2934030564818508974</id><published>2011-08-23T01:53:00.009+08:00</published><updated>2011-08-24T01:03:41.449+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-24T01:03:41.449+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="qemu" /><category scheme="http://www.blogger.com/atom/ns#" term="自製軟體" /><category scheme="http://www.blogger.com/atom/ns#" term="General Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Mac OS X" /><title>在Mac OS X上編繹BenOS並使用Qemu執行</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/2934030564818508974/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=2934030564818508974" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/2934030564818508974?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/2934030564818508974?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/SnDtwn0c6XM/mac-os-xbenosqemu.html" title="在Mac OS X上編繹BenOS並使用Qemu執行" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-tRMM76bDrp8/TlKXl1ubYvI/AAAAAAAAAQs/aG3WFuQ2Rjs/s72-c/bos_run_at_osx_thumb%25255B6%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">   續上篇自製開發BenOS支援Windows＋Cygwin後，發現Mac上的使用者（當然筆者也是其中之一，不才也是半個蘋果迷）也想能直接編繹(另一個原因是，不想再開另一個Linux 虛擬機，太耗資源及電力，環保一下吧)，於是乎有了這篇文章。 編繹環境設定 筆者的Mac 是Snow Leopard 10.6.8 1.  安裝Xcode  到http://developer.apple.com/下載並安裝Xcode (筆者用的是4.0.2) 2. 安裝HomeBrew 請參考把常用的UNIX 環境重建到MAC OS X (1)　一文。 3. 使用brew 安裝 nasm 和qemu sudo brew install nasm qemu git 4.安裝cross gcc  測試使用Xcode 的gcc，並發現不能做完整靜態連結。也不能輸出ELF檔案。 正想把最後殺手鐧拿來，自己編繹
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/q6rAwVwsQryhxuGbhia1Ha1WIYU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q6rAwVwsQryhxuGbhia1Ha1WIYU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/q6rAwVwsQryhxuGbhia1Ha1WIYU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q6rAwVwsQryhxuGbhia1Ha1WIYU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/SnDtwn0c6XM" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/mac-os-xbenosqemu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYGSXw5eCp7ImA9WhdXEk0.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-1619666016020474701</id><published>2011-08-21T22:11:00.012+08:00</published><updated>2011-08-25T01:48:48.220+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-25T01:48:48.220+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OS" /><category scheme="http://www.blogger.com/atom/ns#" term="自製軟體" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="多平台開發" /><title>自製開發BenOS支援Windows＋Cygwin</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/1619666016020474701/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=1619666016020474701" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/1619666016020474701?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/1619666016020474701?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/fYy8C0Sj6w8/benoswindowscygwin.html" title="自製開發BenOS支援Windows＋Cygwin" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-qGqwfPsIH2o/TlESESXwBJI/AAAAAAAAAQM/Ua9jsYdKIUA/s72-c/vmplayer_bos_run_thumb%25255B2%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html"> 
 繼上篇"自製作業系統原始碼公佈"後，發現讀者們使用Ｗindows系統比例高達7成。
筆者便在想，讓自製的小系統也能直接在Windows 裡編繹並使用其虛擬機器執行。
1. 安裝Cygwin
(但Cygwin 所附的bash login console 介面，限制頗多，不太方便，所以下載mintty來使用 （它以putty程式碼修改而來）。
在安裝過程中，請記得選取並安裝gcc 和nasm套件，用來編繹主程式及組合語言部分。
2. 安裝mtools
在Bos v0.2後，使用了mcopy。可參考 英文原文或此文下載安裝。
3. 安裝 git + pagent.exe
因為要使用github,而其中需要使用上傳檔案的key, 
所以利用pagent.exe 將key提供給git 使用。（試過使用ssh，但不能正常工作）
目前筆者在使用github 前，使用下列命令將key載入，

 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/g826wCE_UjPP9R44zuk3U9-k0oo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g826wCE_UjPP9R44zuk3U9-k0oo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/g826wCE_UjPP9R44zuk3U9-k0oo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g826wCE_UjPP9R44zuk3U9-k0oo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/fYy8C0Sj6w8" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/benoswindowscygwin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIMQ3Y5eSp7ImA9WhdQGU4.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-271550277482116142</id><published>2011-08-17T23:39:00.005+08:00</published><updated>2011-08-21T22:23:02.821+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-21T22:23:02.821+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OS" /><category scheme="http://www.blogger.com/atom/ns#" term="自製軟體" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="General Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="embed" /><title>自製作業系統 BenOS  原始碼公佈</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/271550277482116142/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=271550277482116142" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/271550277482116142?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/271550277482116142?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/6WdFb67UPEw/benos.html" title="自製作業系統 BenOS  原始碼公佈" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/--q_rS2hrP4o/TkvgorV7LGI/AAAAAAAAAPs/xYVRLEs77UE/s72-c/bosv0dot2_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">  最近把自製作業系統原始碼整理一下並修正部分問題，另附寫說明文件後，於今晚，發佈Ben OS v0.2，有興趣的朋友可從GitHub下載原始碼。  程式碼目前已在下列平台編繹並使用Qemu測試：   Ubuntu 10.04, 10.10, 11.04 Fedora 12  程式目錄說明    apps 應用程式，目前只有一個 bshell  blibc BOS用到的自製的C函式庫  boot 啟動程式  include  標頭檔案  kernel 系統核心相關  lib 核心相關函式庫  scripts 系統開發腳本檔  test  執行測試用  tools 預留工具程式 如何編繹請參閱? Readme.md Ubuntu + Qemu在VMWare Fusion Mac問題？   當Qemu執行時，跳離的快速鍵將會失效，造成無法正常使用Xwindow，可使用CTRL+ALT+2回到
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gTXjj0fq-ofQNh-vZoE5Ow2sSiA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gTXjj0fq-ofQNh-vZoE5Ow2sSiA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gTXjj0fq-ofQNh-vZoE5Ow2sSiA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gTXjj0fq-ofQNh-vZoE5Ow2sSiA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/6WdFb67UPEw" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/benos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYERHo9cSp7ImA9WhdQEkk.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-7040415674326382668</id><published>2011-08-13T22:14:00.008+08:00</published><updated>2011-08-13T22:35:05.469+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-13T22:35:05.469+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="多平台開發" /><title>使用Python 直接載入 C 函式庫進行多平台測試</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/7040415674326382668/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=7040415674326382668" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7040415674326382668?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/7040415674326382668?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/TTITQXzRAf8/python-c.html" title="使用Python 直接載入 C 函式庫進行多平台測試" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><thr:total>0</thr:total><content type="html">(圖示為Python.org 版權所有)
最近有個朋友聊起TDD (Test Driven Programming) 測試導向程式設計，測試導向的優點：
便是能減少重覆測試所需要人工測試時間，當網友若修改程式庫時，
敢對進行程式優化，也較對修改有把握，因為可利用自動測試的程式來立刻驗證。
他最常使用Ｃ來寫程式，但是使用C來寫測試函式，就算附加CPPUnit 之類，還是需要比較多時間實作。
所以筆者寫了本篇心得，使用Python 來直接對Ｃ函式庫進行測試。

本次範例包括下列：


 檔案名稱 說明
 test.c 編繹為函式庫libtest.so或libtest.dll
 main.c 編譯連結測試main()
 main.py 用來載入測試函式庫的python 腳本檔
 Makefile 執行編譯及測試

test.c

 #include &amp;lt;stdio.h&amp;gt;  
#
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PTN4wNBj6YILW0h9IaaBZ0N1m8c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PTN4wNBj6YILW0h9IaaBZ0N1m8c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PTN4wNBj6YILW0h9IaaBZ0N1m8c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PTN4wNBj6YILW0h9IaaBZ0N1m8c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/TTITQXzRAf8" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/python-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QNR34yfSp7ImA9WhdVEUU.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-238334234957209062</id><published>2011-08-08T02:53:00.013+08:00</published><updated>2011-09-16T23:03:16.095+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-16T23:03:16.095+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="超軟中文直式閱瀏器" /><category scheme="http://www.blogger.com/atom/ns#" term="自製軟體" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><title>自製免費軟體:超軟中文直式閱瀏器sviewer 0.26.1003</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/238334234957209062/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=238334234957209062" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/238334234957209062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/238334234957209062?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/po5_dOUaUIw/sviewer-0261003.html" title="自製免費軟體:超軟中文直式閱瀏器sviewer 0.26.1003" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-KDMSalC6NZ0/Tj7fHe6ADkI/AAAAAAAAAOM/XT6nrwLlPws/s72-c/sviewer0dot26_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">

筆者一直十分喜愛閱讀中文小說與文章散文等，但覺得用browser看都是橫式，不是很符合中文閱讀的習慣。

早在數年前，工作之餘，便下手實作了自娛的看純文字檔案軟體＂超軟中文直式閱瀏器 for Windows"，斷斷續續也實作許多小功能。

最近心血來潮，又整理一下程式碼，把一些實驗性的功能去掉，只留下必要且穩定的部分；重新編繹一版0.26.1003，在父親節這天送出自製免費軟體，讓習慣看下載中文小說的網友們有另一個直式看檔的選擇。


設計目標  

* 看中文小說更直覺更順眼

* 執行檔案小，啟動速度快

* 綠色免安裝




功能說明  

* 支援UTF-8，雙字組中文顯示

* 支援直行閱讀

* 支援使用使用命令提示字元，使用檔案名為參數來開啟

* 支援從檔案總管拖曳到閱瀏器開啟

* 支援儲存目前瀏覽頁碼，以便下次開啟同一檔案時可續看

* 支援開關：輔助線

* 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NdlEasuKrd7jBhcZmiZtsl-n-dQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NdlEasuKrd7jBhcZmiZtsl-n-dQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NdlEasuKrd7jBhcZmiZtsl-n-dQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NdlEasuKrd7jBhcZmiZtsl-n-dQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/po5_dOUaUIw" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/sviewer-0261003.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4BSHozfCp7ImA9WhRUGU8.&quot;"><id>tag:blogger.com,1999:blog-8128204435429155560.post-2927150711696417389</id><published>2011-08-04T02:05:00.002+08:00</published><updated>2012-01-30T21:09:19.484+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T21:09:19.484+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>FreeBSD 9.0 支援的新功能</title><link rel="replies" type="application/atom+xml" href="http://ben6.blogspot.com/feeds/2927150711696417389/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8128204435429155560&amp;postID=2927150711696417389" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/2927150711696417389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8128204435429155560/posts/default/2927150711696417389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/kSByW/~3/gDTl6l9U91I/freebsd-90.html" title="FreeBSD 9.0 支援的新功能" /><author><name>超軟之家</name><uri>http://www.blogger.com/profile/15328780709495120037</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/-mdbV5-jetlw/TkF1HacfdmI/AAAAAAAAAOY/VAMmpp_Tq5g/s220/Icon-iPad.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-RgumSMSryvk/TjmUHvt4OmI/AAAAAAAAAM4/WEo67c9pLHQ/s72-c/freebsd.PNG" height="72" width="72" /><thr:total>0</thr:total><content type="html">


Freebsd 7.2 VM boots

今天看到FreeBSD 9.0 Goes Into Beta一文，才發現我用FreeBSD 7.2已經有點老了。
以下是部分譯文，供大家參考：

預設檔案系統為ZFS 
硬體相關

支援SSD TRIM
支援802.11n 高速模式
更多儲存裝置ATA/CAM
支援PCI hot-plug

系統相關

支援休眠模式(S4 hibernation)
支援Linux 64-bit二進位檔在FreeBSD/amd64下, 
支援EFI 開機
適當地支援 LLVM (the Low-Level Virtual Machine) 到下一版的 GCC, 並支援user-land D-Trace
更快的開機

虛擬化相關

Xen Dom0 
改進Oracle VM VirtualBox的相容性


更多請參考 FreeBSD.org Wiki

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GJokIc3gfmXtYquEHFx1VOqLR7E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GJokIc3gfmXtYquEHFx1VOqLR7E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GJokIc3gfmXtYquEHFx1VOqLR7E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GJokIc3gfmXtYquEHFx1VOqLR7E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/kSByW/~4/gDTl6l9U91I" height="1" width="1"/&gt;</content><feedburner:origLink>http://ben6.blogspot.com/2011/08/freebsd-90.html</feedburner:origLink></entry></feed>

