<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[加菲鴨 | Web前端觀察]]></title><description><![CDATA[前端開發, 資訊視覺化, 社會議題資訊呈現－筆記與murmur]]></description><link>https://garfieldduck.me/</link><generator>Ghost 0.11</generator><lastBuildDate>Mon, 23 Feb 2026 13:14:33 GMT</lastBuildDate><atom:link href="https://garfieldduck.me/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Go 的 Map、Struct、Interface 與 Error 處理]]></title><description><![CDATA[<h1 id="go">Go 特色</h1>

<ul>
<li>執行效能很好</li>
<li>每個變數型態在編譯時期就完全決定（statically typed）</li>
<li>自動 compile 成為 native 程式碼</li>
<li>Interfaces</li>
<li>Functions 可以回傳多重的值</li>
<li>內建 concurrency 機制：Goroutines and Channels</li>
</ul>

<h1 id="map">Map</h1>

<h3 id="map">宣告 Map</h3>

<pre><code>var m map[string]int  
</code></pre>

<p>Map 的型態是一種 reference ，所以上面範例中 m 的值是 <code>nil</code>，若嘗試寫入空的 map 會造成  runtime panic。</p>

<h3 id="map">建立 Map</h3>

<pre><code>m = make(map[string]int)  
</code></pre>

<p>或下面這種方式亦可：</p>

<pre><code>m = map[</code></pre>]]></description><link>https://garfieldduck.me/go-map-struct-interface-error/</link><guid isPermaLink="false">59744cf6-e27d-4ba6-90e7-bccb8580fd42</guid><category><![CDATA[Go]]></category><category><![CDATA[GoLang]]></category><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Wed, 01 Mar 2017 11:07:00 GMT</pubDate><content:encoded><![CDATA[<h1 id="go">Go 特色</h1>

<ul>
<li>執行效能很好</li>
<li>每個變數型態在編譯時期就完全決定（statically typed）</li>
<li>自動 compile 成為 native 程式碼</li>
<li>Interfaces</li>
<li>Functions 可以回傳多重的值</li>
<li>內建 concurrency 機制：Goroutines and Channels</li>
</ul>

<h1 id="map">Map</h1>

<h3 id="map">宣告 Map</h3>

<pre><code>var m map[string]int  
</code></pre>

<p>Map 的型態是一種 reference ，所以上面範例中 m 的值是 <code>nil</code>，若嘗試寫入空的 map 會造成  runtime panic。</p>

<h3 id="map">建立 Map</h3>

<pre><code>m = make(map[string]int)  
</code></pre>

<p>或下面這種方式亦可：</p>

<pre><code>m = map[string]int{}  
</code></pre>

<h3 id="map">操作 Map</h3>

<p>將 Key <code>uid</code> 對應的值設定成為 5：</p>

<pre><code>m["uid"] = 5  
</code></pre>

<p>將 <code>uid</code> 的值取出並指定給新的變數 i：</p>

<pre><code>i := m["uid"]  
</code></pre>

<p>注意當傳入 Key 的值不存在時，預設回傳值是 0： </p>

<pre><code>j := m["notexist"]  
// j == 0
</code></pre>

<p>取出 Key 的值（下面例子是 i）時順便確認該 Key 是否已經存在，若 Key 存在於 map 當中 ok 的值是 true，反之則為 false：</p>

<pre><code>i, ok := m["uid"]  
</code></pre>

<p>查看 Map 裡面 items 的數量：</p>

<pre><code>n := len(m)  
</code></pre>

<p>將 <code>uid</code> 對應的 item 從 map 裡面移除：</p>

<pre><code>delete(m, "uid")  
</code></pre>

<h1 id="structs">Structs</h1>

<p>Go 裡面沒有 Classes，只有 Structs，但 Structs 可以有 functions</p>

<h3 id="struct">宣告 Struct：</h3>

<pre><code>type User struct {  
    Name string  // name of the user
    Value int    // user's value
}
</code></pre>

<h3 id="struct">操作 Struct：</h3>

<pre><code>var u = User{"Alice", 5}  
var u = User{Name: "Alice", Value: 5} // 透過指定 Key 的值來建立一個 struct  
var u = []User{{"Alice", 5},{"Bob", 1}} // 初始出一個 structs 的陣列

u.Value = 100  
</code></pre>

<h3 id="structmethods">為 Struct 加上 methods：</h3>

<pre><code>func (u User) getValue() int {  
    return u.Value
}
</code></pre>

<p>注意上面的方法每次 method 被呼叫的時候，struct 都會被整份複製一次，因此若要透過 method 改變 struct 的值必須使用下面的方法：</p>

<pre><code>func (u *User) add(n int) {  
    u.Value += n
}
</code></pre>

<h1 id="pointers">Pointers</h1>

<pre><code>p := User{"Alice", 5}  // p 是個 User  
q := &amp;p            // q 是指到 User 的 Pointer  
</code></pre>

<h1 id="interface">Interface</h1>

<p>宣告 Interface：</p>

<pre><code>type Greeting interface {  
    Hello() string
}
</code></pre>

<p>不需要在 type 中宣告 implement 某個 interface，假如 interface 中的 functions 都有被對應到，自動滿足成為該 interface 的一員：</p>

<pre><code>type Foo struct {}

func (foo Foo) Hello() string {  
    return "Hello!"
}
</code></pre>

<h1 id="errors">Errors</h1>

<p>GoLang 沒有 exception handling，function 多一個型態為 Error 的回傳值就可以在執行時檢查是否有錯誤：</p>

<pre><code>func getValue() (int, error) {  
}

func main() {  
    result, error := getValue()
    if (error != nil) {
        // 處理遇到的錯誤
    } else {
        // 沒有錯誤
    }
}
</code></pre>

<p>而 Error 是一個內建的 interface：</p>

<pre><code>type error interface {  
    Error() string
}
</code></pre>

<h3 id="error">操作 Error</h3>

<pre><code>var err error = errors.New("A new error")  
fmt.Println(err.Error())  // A new error  
</code></pre>

<p>或透過 Errorf 處理錯誤訊息：</p>

<pre><code>err = fmt.Errorf("%s", "test error for fmt.Errorf")  
fmt.Println(err.Error())  
</code></pre>

<p>定義客製化型態的 Error：</p>

<pre><code>type CustomError struct {  
    Path string
    Err error
}

func (c *CustomError) Error() string {  
    return e.Path + ": " + e.Err.Error()
}
</code></pre>

<h1 id="">相關參考</h1>

<ul>
<li><p><a href="https://golang.org/doc/">https://golang.org/doc/</a></p></li>
<li><p>Go lang cheat sheet: <a href="https://github.com/a8m/go-lang-cheat-sheet">https://github.com/a8m/go-lang-cheat-sheet</a></p></li>
</ul>]]></content:encoded></item><item><title><![CDATA[開始使用 GoLang]]></title><description><![CDATA[<h1 id="golang">安裝 Golang</h1>

<h3 id="windows">Windows</h3>

<p>透過官網下載 msi 安裝檔： <a href="https://golang.org/dl/">https://golang.org/dl/</a> ，安裝檔會自動將資料夾 <code>c:\Go\bin</code> 資料夾加到 PATH 環境變數底下，安裝完記得 <a href="http://oranwind.org/go-ide-visual-studio-code/">設定 GOPATH 環境變數</a>，重新開機後可以開始使用。</p>

<h3 id="maclinux">Mac / Linux</h3>

<p>Unix 環境可以使用 gvm 快速安裝並切換不同 Go 語言的版本： <a href="https://github.com/moovweb/gvm#installing">https://github.com/moovweb/gvm#installing</a></p>

<h1 id="go">顯示 Go 版本</h1>

<pre><code>go version  
</code></pre>

<h1 id="go">查看 Go 環境</h1>

<p>使用 <code>go env</code> 查看 Go 相關環境變數，</p>]]></description><link>https://garfieldduck.me/golang-get-started/</link><guid isPermaLink="false">43f43dfd-49fa-4357-83ad-ec27e58897a0</guid><category><![CDATA[Go]]></category><category><![CDATA[GoLang]]></category><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Wed, 01 Mar 2017 10:40:00 GMT</pubDate><content:encoded><![CDATA[<h1 id="golang">安裝 Golang</h1>

<h3 id="windows">Windows</h3>

<p>透過官網下載 msi 安裝檔： <a href="https://golang.org/dl/">https://golang.org/dl/</a> ，安裝檔會自動將資料夾 <code>c:\Go\bin</code> 資料夾加到 PATH 環境變數底下，安裝完記得 <a href="http://oranwind.org/go-ide-visual-studio-code/">設定 GOPATH 環境變數</a>，重新開機後可以開始使用。</p>

<h3 id="maclinux">Mac / Linux</h3>

<p>Unix 環境可以使用 gvm 快速安裝並切換不同 Go 語言的版本： <a href="https://github.com/moovweb/gvm#installing">https://github.com/moovweb/gvm#installing</a></p>

<h1 id="go">顯示 Go 版本</h1>

<pre><code>go version  
</code></pre>

<h1 id="go">查看 Go 環境</h1>

<p>使用 <code>go env</code> 查看 Go 相關環境變數，結果如下面的例子：</p>

<pre><code>GOARCH="amd64"  
GOBIN=""  
GOEXE=""  
GOHOSTARCH="amd64"  
GOHOSTOS="darwin"  
GOOS="darwin"  
GOPATH="/Users/garfieldduck/Documents/GoWork"  
GORACE=""  
GOROOT="/usr/local/opt/go/libexec"  
GOTOOLDIR="/usr/local/opt/go/libexec/pkg/tool/darwin_amd64"  
CC="clang"  
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ly/c6f9637d4zlc7km00pg6znhc0000gn/T/go-build865350722=/tmp/go-build -gno-record-gcc-switches -fno-common"  
CXX="clang++"  
CGO_ENABLED="1"  
</code></pre>

<ul>
<li>GOROOT: Golang 安裝的位置</li>
<li>GOPATH: 告訴 Go tool workspace 位在哪裡</li>
</ul>

<h1 id="gopath">GOPATH 底下資料夾</h1>

<p>GOPATH 底下一般會細分三個資料夾：</p>

<ul>
<li><code>src</code> - 存放 Go 程式碼的地方 （例如 .go 程式碼）</li>
<li><code>pkg</code> - Go packages 編譯後的產生的文件</li>
<li><code>bin</code> - 已安裝的可執行檔</li>
</ul>

<p>試著安裝一個 Package 便可以看到 GOPATH 底下自動產生的三個資料夾。</p>

<p>透過 <code>go get</code> 從網路抓取 go package，並放到 GOPATH 底下 （其中的原始檔 <code>src</code> 以及已經編譯的 <code>pkg</code>）：</p>

<pre><code>go get gopkg.in/gin-gonic/gin.v1  
</code></pre>

<p><code>go install</code> 指令則是安裝指定的 Package，把可執行檔放到 <code>$GOPATH/bin</code> 底下（下面的例子會產生 $GOPATH/bin/gin）：</p>

<pre><code>go install gopkg.in/gin-gonic/gin.v1  
</code></pre>

<h1 id="gopackage">了解 Go 的 Package</h1>

<p>所有 Go 原始碼都是 package 的一部分，所有檔案都從 package statement 開始，而程式則從 main 開始執行：</p>

<pre><code>package main

import "fmt"

func main() {  
    fmt.Println("Hello, world!")
}
</code></pre>

<p>檔案中大寫開頭的 function 為 exported function，可以讓外部程式碼呼叫：</p>

<pre><code>// PrintHello prints hello
func PrintHello() {  
...
}
</code></pre>

<p>小寫開頭的 function 外部則不可以呼叫，為 unexported function：</p>

<pre><code>func sayHello() {  
...
}
</code></pre>]]></content:encoded></item><item><title><![CDATA[Adobe 提供的免費的中文 Webfont 服務，支援繁體中文]]></title><description><![CDATA[<p>中文的字型檔案很大，要做到像英文一樣，有豐富的 Webfont 可以選用是件困難的事情。一些網路服務如 <a href="http://www.justfont.com/">Justfont</a> 、<a href="http://webfont.arphic.com/index/index.jsp">文鼎的 iFontCloud</a>、 <a href="http://dfo.dynacw.com.tw/">華康的威 Font</a> 等，都可以做到即時抓取每個頁面所需要的字型檔案，降低網路傳輸量，再顯示出網頁的中文字型。但這些服務大多都有試用期限的限制，若到期就需要按月或每年繳交年費，對於流量不大的服務或部落格來說，是一筆不小的開銷。</p>

<p>好在今年六月，Adobe 正式宣布旗下免費的 <a href="https://typekit.com/">Typekit Webfont</a> 服務也開始<a href="http://blog.typekit.com/alternate/typekit-j-announce-ct/">支援複雜且檔案龐大的東亞字型，當中也包含繁體中文</a>。最令人興奮的是，與 Google 合力開發的黑體字型-<a href="https://typekit.com/fonts/source-han-sans-traditional-chinese">思源字體</a>，也在支援列表之中，也就是說套用之後，網頁就可以自由的運用擁有七種不同粗細大小的美麗黑體，而且免費！不過這個服務不是完全沒有使用限制的，它最多只能支援一個 domain，另外如果你的網站瀏覽量每月超過 25,000 次瀏覽，選用的字體可能就沒辦法正確顯示出來，此時就只能付費升級了。</p>

<p>興奮之下，立刻試著將 Typekit 的思源字體套用到網頁上，果真非常漂亮，</p>]]></description><link>https://garfieldduck.me/adobe-font/</link><guid isPermaLink="false">21b01b95-0a56-423e-b44d-b310517d309f</guid><category><![CDATA[前端開發]]></category><category><![CDATA[Webfont]]></category><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Mon, 23 Nov 2015 06:11:09 GMT</pubDate><content:encoded><![CDATA[<p>中文的字型檔案很大，要做到像英文一樣，有豐富的 Webfont 可以選用是件困難的事情。一些網路服務如 <a href="http://www.justfont.com/">Justfont</a> 、<a href="http://webfont.arphic.com/index/index.jsp">文鼎的 iFontCloud</a>、 <a href="http://dfo.dynacw.com.tw/">華康的威 Font</a> 等，都可以做到即時抓取每個頁面所需要的字型檔案，降低網路傳輸量，再顯示出網頁的中文字型。但這些服務大多都有試用期限的限制，若到期就需要按月或每年繳交年費，對於流量不大的服務或部落格來說，是一筆不小的開銷。</p>

<p>好在今年六月，Adobe 正式宣布旗下免費的 <a href="https://typekit.com/">Typekit Webfont</a> 服務也開始<a href="http://blog.typekit.com/alternate/typekit-j-announce-ct/">支援複雜且檔案龐大的東亞字型，當中也包含繁體中文</a>。最令人興奮的是，與 Google 合力開發的黑體字型-<a href="https://typekit.com/fonts/source-han-sans-traditional-chinese">思源字體</a>，也在支援列表之中，也就是說套用之後，網頁就可以自由的運用擁有七種不同粗細大小的美麗黑體，而且免費！不過這個服務不是完全沒有使用限制的，它最多只能支援一個 domain，另外如果你的網站瀏覽量每月超過 25,000 次瀏覽，選用的字體可能就沒辦法正確顯示出來，此時就只能付費升級了。</p>

<p>興奮之下，立刻試著將 Typekit 的思源字體套用到網頁上，果真非常漂亮，網頁終於可以像許多英文網頁一樣，擁有標題和內文明顯不同的兩種字體，而且不管在哪個瀏覽器上觀看都可以顯示一致的字體。</p>

<p><img src="https://garfieldduck.me/content/images/2015/07/-----2015-07-19---5-06-15.png" alt=""></p>

<h2 id="adobetypekit">在 Adobe Typekit 上面註冊並選用字型</h2>

<p>在開始使用前，我們先前往 Adobe Typekit 網站上登記 webfont 服務的使用：<a href="https://typekit.com/fonts">https://typekit.com/fonts</a></p>

<p>註冊成功後，在首頁按下 Kits -> Create new kit </p>

<p><img src="https://garfieldduck.me/content/images/2015/07/-----2015-07-18---8-35-42.png" alt=""></p>

<p>選取需要的字型（如思源字體）
<img src="https://garfieldduck.me/content/images/2015/07/-----2015-07-18---8-52-22.png" alt=""></p>

<p>在您的頁面的<head>...</head>區間植入代碼，大功告成！
<img src="https://garfieldduck.me/content/images/2015/07/-----2015-07-18---8-35-56.png" alt=""></p>]]></content:encoded></item><item><title><![CDATA[在前端開發利器 Atom 中設定跨平台套件同步]]></title><description><![CDATA[<p><a href="https://atom.io/">Atom</a> 是由 Github 所推出完全免費的程式編輯器，是替代 Sublime Editor 的好工具，有許多網頁前端開發者是它的愛用者。根據筆者的經驗，安裝 React 套件後，開發 ReactJS 網頁比 Sublime 還要輕鬆很多。</p>

<ul>
<li>Atom 官方網頁： <a href="https://atom.io/">https://atom.io/</a></li>
</ul>

<p>Atom 有提供各種套件供使用者自行選用，然而作為一個開發者，可能在不只一台電腦上進行開發工作，若要每台電腦都分別做設定，恐怕是一件令人頭大的事情。好在有 <a href="https://atom.io/packages/sync-settings">atom-sync-settings</a> 來幫我們利用 Github 帳號進行同步，解決跨平台開發的煩惱。</p>

<h1 id="syncsettings">安裝 sync-settings 套件</h1>

<p>在上方選單按 File -> Settings，叫出設定然後選左方 Install，在 Install Packages 下方搜尋 sync-settings ，再按下藍色的</p>]]></description><link>https://garfieldduck.me/atom-sync-settings/</link><guid isPermaLink="false">051d278f-73a3-41f7-a4ae-b2895d9993d2</guid><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Sun, 05 Jul 2015 09:38:00 GMT</pubDate><content:encoded><![CDATA[<p><a href="https://atom.io/">Atom</a> 是由 Github 所推出完全免費的程式編輯器，是替代 Sublime Editor 的好工具，有許多網頁前端開發者是它的愛用者。根據筆者的經驗，安裝 React 套件後，開發 ReactJS 網頁比 Sublime 還要輕鬆很多。</p>

<ul>
<li>Atom 官方網頁： <a href="https://atom.io/">https://atom.io/</a></li>
</ul>

<p>Atom 有提供各種套件供使用者自行選用，然而作為一個開發者，可能在不只一台電腦上進行開發工作，若要每台電腦都分別做設定，恐怕是一件令人頭大的事情。好在有 <a href="https://atom.io/packages/sync-settings">atom-sync-settings</a> 來幫我們利用 Github 帳號進行同步，解決跨平台開發的煩惱。</p>

<h1 id="syncsettings">安裝 sync-settings 套件</h1>

<p>在上方選單按 File -> Settings，叫出設定然後選左方 Install，在 Install Packages 下方搜尋 sync-settings ，再按下藍色的 Install 按鈕即完成安裝。</p>

<p><img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_21h56m46s_004_.png" alt=""></p>

<h1 id="github">利用 Github 帳號進行同步</h1>

<ul>
<li>打開 sync-settings 設定: 
<img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-05_17h40m57s_001_.png" alt=""></li>
</ul>

<p>安裝完成後切到 Packages，找到 sync-settings，點選它所屬的區塊後就可以進入套件設定。</p>

<ul>
<li><p>在 Github 中建立一個 access token：<a href="http://github.com/settings/tokens/new">http://github.com/settings/tokens/new</a> ，記得將 <code>gist</code> 勾選起來 -> Generate Token。
<img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_22h13m09s_007_.png" alt=""></p></li>
<li><p>將產生的 Token 紀錄下來：
<img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_22h26m08s_009_.png" alt=""></p></li>
<li><p>建立 Gist 檔案：
透過 Github 建立 Gist 檔案： <a href="http://gist.github.com/">http://gist.github.com/</a>
<img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-05_18h03m12s_002_-1.png" alt="">
建立完成後把 Gist ID 記錄下來 （顯示在完成頁面上的標題，一串很長的英文和數字組合）</p></li>
<li><p>接著切回 Atom 編輯器，將 Access Token 和 Gist ID 貼上，完成設定。</p></li>
</ul>

<p><img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-05_18h15m02s_007_.png" alt=""></p>

<ul>
<li>你可以開始自在地在不同平台同步設定，只要透過程式上方選單 Packages > Synchronize Settings > Backup，就可以備份本機編輯器的設定； 反之，透過 Restore，就可以把雲端上面的設定同步到本機端。</li>
</ul>]]></content:encoded></item><item><title><![CDATA[一目了然的世界同志 (LGBT) 權益資訊視覺化]]></title><description><![CDATA[<p>隨著人們漸漸認識到同志族群的存在，世界各國紛紛給予性傾向與主流族群不同的人平等的權利，讓少數人不再需要生活在恐懼以及壓抑之中。</p>

<p>但各國推動平權的腳步不一，雖然有 20 多國已經通過同性婚姻，還有許多國家的同志族群每一天是生活在不安之中，甚至生命受到威脅。</p>

<p>人權沒有國界，英國衛報(thegardian)在 2014 年與 AllOut 等多個全球性的同志團體合作，在<a href="http://dayagainsthomophobia.org/">國際反同日</a>推出了一份<a href="http://www.theguardian.com/world/ng-interactive/2014/may/-sp-gay-rights-world-lesbian-bisexual-transgender">非常清楚簡單的世界同志權益資訊視覺化</a>。</p>

<p>要把上百個國家的各種權益很清楚做呈現，是超極大的挑戰，而衛報(thegardian)的圖表設計的非常成功，使用者可在這張上輕鬆地做探索，滑動到不同國家，並與其它國家區域做比較（可惜的是台灣沒出現在調查範圍裡）。你可以在這張圖裡面發現亞洲和非洲對於同志權益的保障最少，而歐洲則有較完整的制度面保障。</p>

<h1 id="">五種權益配合地理資訊清楚呈現</h1>

<p><a href="http://www.theguardian.com/world/ng-interactive/2014/may/-sp-gay-rights-world-lesbian-bisexual-transgender"><img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_20h51m57s_001_.png" alt="同志權益資訊視覺化" title=""></a></p>

<p>圖表以半圓形的方式並按五大洲來排列各國，滑動到不同的角度，中間的地圖還會很貼心的標出該國在地圖上的位置。在 LGBT 權益的部分，則分成同性間合意性行為（Consensual sex）、工作反歧視法（Workplace non-discrimination）、同性婚姻（Marriage）、收養（Adoption）、反歧視法保障（</p>]]></description><link>https://garfieldduck.me/world-lgbt-rights-viz/</link><guid isPermaLink="false">6e3076be-b85d-4ee0-89cb-e88583a20221</guid><category><![CDATA[Visualization]]></category><category><![CDATA[同志權益]]></category><category><![CDATA[同性婚姻]]></category><category><![CDATA[LGBT]]></category><category><![CDATA[資訊視覺化]]></category><category><![CDATA[性別]]></category><category><![CDATA[性別平等]]></category><category><![CDATA[Data Journalism]]></category><category><![CDATA[資料新聞學]]></category><category><![CDATA[exploratory data visualization]]></category><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Sat, 04 Jul 2015 13:28:26 GMT</pubDate><media:content url="http://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_20h51m57s_001_-1.png" medium="image"/><content:encoded><![CDATA[<img src="http://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_20h51m57s_001_-1.png" alt="一目了然的世界同志 (LGBT) 權益資訊視覺化"><p>隨著人們漸漸認識到同志族群的存在，世界各國紛紛給予性傾向與主流族群不同的人平等的權利，讓少數人不再需要生活在恐懼以及壓抑之中。</p>

<p>但各國推動平權的腳步不一，雖然有 20 多國已經通過同性婚姻，還有許多國家的同志族群每一天是生活在不安之中，甚至生命受到威脅。</p>

<p>人權沒有國界，英國衛報(thegardian)在 2014 年與 AllOut 等多個全球性的同志團體合作，在<a href="http://dayagainsthomophobia.org/">國際反同日</a>推出了一份<a href="http://www.theguardian.com/world/ng-interactive/2014/may/-sp-gay-rights-world-lesbian-bisexual-transgender">非常清楚簡單的世界同志權益資訊視覺化</a>。</p>

<p>要把上百個國家的各種權益很清楚做呈現，是超極大的挑戰，而衛報(thegardian)的圖表設計的非常成功，使用者可在這張上輕鬆地做探索，滑動到不同國家，並與其它國家區域做比較（可惜的是台灣沒出現在調查範圍裡）。你可以在這張圖裡面發現亞洲和非洲對於同志權益的保障最少，而歐洲則有較完整的制度面保障。</p>

<h1 id="">五種權益配合地理資訊清楚呈現</h1>

<p><a href="http://www.theguardian.com/world/ng-interactive/2014/may/-sp-gay-rights-world-lesbian-bisexual-transgender"><img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_20h51m57s_001_.png" alt="一目了然的世界同志 (LGBT) 權益資訊視覺化" title=""></a></p>

<p>圖表以半圓形的方式並按五大洲來排列各國，滑動到不同的角度，中間的地圖還會很貼心的標出該國在地圖上的位置。在 LGBT 權益的部分，則分成同性間合意性行為（Consensual sex）、工作反歧視法（Workplace non-discrimination）、同性婚姻（Marriage）、收養（Adoption）、反歧視法保障（Protection against hate crime），由於各國法律針對同一項目的保障長度也不一定相同，這張圖將保障程度分成簡單的三種：合法（彩色）、部分保障（淡彩色）以及不合法或不清楚的（灰色）。</p>

<p>這還不夠厲害，更嚇人的是，它還可以切換到「人口加權模式」（從上面的 Country 切換到 Population），人口最多的亞洲，在中國和印度人口加持下變成佔了最大區塊。在這個模式裡面更可以發現，世界上還有許多人是生活在恐懼之中，因為性傾向不同而可能受到各種脅迫，也無法律的幫助（見下圖）。</p>

<p><a href="http://www.theguardian.com/world/ng-interactive/2014/may/-sp-gay-rights-world-lesbian-bisexual-transgender"><img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_21h09m21s_002_.png" alt="一目了然的世界同志 (LGBT) 權益資訊視覺化" title=""></a></p>

<h1 id="">依據權益類別的細節瀏覽</h1>

<p>如果覺得還不夠清楚的話，下方還有提供依據不同權益的細節瀏覽模式，除了比例的視覺化以外，還有提供人口數或國家數的標示（可自行切換）。
<img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-04_21h21m37s_003_.png" alt="一目了然的世界同志 (LGBT) 權益資訊視覺化"></p>

<ul>
<li>圖表網址： <a href="http://www.theguardian.com/world/ng-interactive/2014/may/-sp-gay-rights-world-lesbian-bisexual-transgender">Lesbian, gay, bisexual and transgender rights around the world</a></li>
</ul>]]></content:encoded></item><item><title><![CDATA[美國各州同性婚姻資訊視覺化]]></title><description><![CDATA[2015年6月27日，美國最高法院以5票同意4票反對，裁定「禁止同性婚姻」違憲。
各家媒體也為了這個議題，做出資訊視覺化圖表，讓大家更加理解美國推動婚姻平權艱辛的漫漫長路。LA Times 做了一個非常清楚簡單的互動時間軸年表，透過一張圖配合時間軸滑動就可以清楚瞭解到各州對於同性伴侶權益保障的程度。]]></description><link>https://garfieldduck.me/marriage-equality-usa-viz/</link><guid isPermaLink="false">47fd6b27-ad2f-4a4d-8640-e1b6f595d85f</guid><category><![CDATA[Visualization]]></category><category><![CDATA[同志權益]]></category><category><![CDATA[同志]]></category><category><![CDATA[同性婚姻]]></category><category><![CDATA[婚姻平權]]></category><category><![CDATA[LGBT]]></category><category><![CDATA[資訊視覺化]]></category><category><![CDATA[資料視覺化]]></category><category><![CDATA[Data Journalism]]></category><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Thu, 02 Jul 2015 09:18:04 GMT</pubDate><media:content url="http://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-01_20h11m33s_001_-2.png" medium="image"/><content:encoded><![CDATA[<img src="http://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-01_20h11m33s_001_-2.png" alt="美國各州同性婚姻資訊視覺化"><p>2015年6月27日，美國最高法院以5票同意4票反對，裁定「禁止同性婚姻」違憲，等於宣告同性婚姻全美合法，各州再也不得拒絕發放結婚證書給同性伴侶。</p>

<p>從荷蘭成為世界第一個通過同性婚姻的國家開始，美國經過漫漫長路，先是「各州」陸續通過，終於在2015年經過大法官的判決，全國所有州都享有婚姻平權，成為第21個通過同志婚姻的國家。</p>

<p>各家媒體也為了這個議題，做出資訊視覺化圖表，讓大家更加理解美國推動婚姻平權艱辛的漫漫長路。</p>

<h1 id="">美國各州同性婚姻互動時間軸年表</h1>

<p>LA Times 做了一個非常清楚簡單的<a href="http://graphics.latimes.com/usmap-gay-marriage-chronology/">互動時間軸年表</a>，透過一張圖配合時間軸滑動就可以清楚瞭解到各州對於同性伴侶權益保障的程度。</p>

<p><a href="http://graphics.latimes.com/usmap-gay-marriage-chronology/"><img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-01_20h11m33s_001_-1.png" alt="美國各州同性婚姻資訊視覺化" title=""></a></p>

<p>這張互動式圖表不僅只有呈現通過或不通過而已，通過與完全禁止之間，同性伴侶如異性戀伴侶享有法律平等保障的程度以黃色（最低）到深紫色（最高）來表示，最低到最高分別是：</p>

<ul>
<li>州憲法禁止同性婚姻以及其他權益</li>
<li>州憲法禁止同性婚姻</li>
<li>法律禁止同性婚姻以及其他權益</li>
<li>法律禁止同性婚姻</li>
<li>法律沒有禁止（但也沒有允許同性婚姻）</li>
<li>有同性伴侶法（Domestic Partnerships，但權益較異性戀婚姻次等，保障程度各州不一）</li>
<li>擁有較多保障的同性伴侶法</li>
<li>承認其它地區締結的同性婚姻（這州本身還未通過）</li>
<li>同志民事法律結合（Civil Unions，接近婚姻，但各州保障程度不一，且在 DOMA 法案作用下，擁有 Civil Unions 的伴侶，在其它保守的州關係可能形同陌生人）</li>
<li>同性婚姻合法</li>
</ul>

<p><img src="https://garfieldduck.me/content/images/2015/07/marriage-equality.png" alt="美國各州同性婚姻資訊視覺化"></p>

<p>滑動時間軸，就可以看到美國從 2000 年開始到 2015 年全國通過各州的變化。在同志族群在美國漸漸的被看見之後，有的州漸漸還給同志伴侶越來越多的法律保障；有的州可能因為宗教團體的施壓，從法律不禁止，轉趨保守，最後則都因為最高法院的判決，再也不能將同志伴侶拒於法律門外。</p>

<ul>
<li>資訊圖表網頁連結： <a href="http://graphics.latimes.com/usmap-gay-marriage-chronology/">Timeline Gay marriage chronology (LA Times)</a></li>
</ul>

<h1 id="">以影片資訊儀表板呈現婚姻平權各州推動的進程</h1>

<p>針對美國終於全國通過婚姻平權的議題，Vox <a href="https://youtu.be/i2crZ4_xgKg">製作了一個影片</a>，以資訊儀表板（Dashboard）形式，清楚簡明的可以看到從美國第一個州通過開始，美國民眾對於同性婚姻支持度的變化，以及享有同性婚姻州的人數占總人口數的比例。</p>

<p><a href="http://youtu.be/i2crZ4_xgKg"><img src="https://garfieldduck.me/content/images/2015/07/Ashampoo_Snap_2015-07-02_16h53m18s_001_.png" alt="美國各州同性婚姻資訊視覺化" title=""></a></p>

<p>最有趣的是，配合左上角的影片，可以瞭解到同志族群在長期受到法律漠視下的辛酸感受，以及終於獲得平等權益的雀躍。通過婚姻平權，對異性戀來說，沒有什麼影響；對同性戀來說，終於能讓與另一半的關係受到國家的認定和保障，婚權的享有雖不見得能夠完全消弭歧視，卻也是減少壓迫感受的新進展。</p>

<ul>
<li>影片連結： <a href="https://youtu.be/i2crZ4_xgKg">The march of marriage equality (Vox)</a></li>
</ul>]]></content:encoded></item><item><title><![CDATA[NVM 切換不同版本的NodeJS，無痛安裝 NodeJS]]></title><description><![CDATA[<h2 id="nvmpackagesubuntu">先安裝 NVM 會用到的 Packages (Ubuntu)</h2>

<pre><code class="language-bash">sudo apt-get update  
sudo apt-get install build-essential libssl-dev  
</code></pre>

<p>若在 Mac OSX 上面，有安裝 XCode 即可進行接下來的步驟。</p>

<p>若使用 Windows，可以試試看 <a href="https://github.com/coreybutler/nvm-windows">https://github.com/coreybutler/nvm-windows</a> （非 nvm 官方 Package）</p>

<h2 id="nvm">安裝 NVM</h2>

<pre><code class="language-bash">curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.3/install.sh | bash  
</code></pre>

<p>最新版本可以上： <a href="https://github.com/creationix/nvm">https:</a></p>]]></description><link>https://garfieldduck.me/nvm/</link><guid isPermaLink="false">f96bee14-898e-4ee0-b3a7-dbba6d38f0a7</guid><category><![CDATA[NodeJS]]></category><category><![CDATA[開發工具]]></category><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Wed, 27 May 2015 05:49:07 GMT</pubDate><content:encoded><![CDATA[<h2 id="nvmpackagesubuntu">先安裝 NVM 會用到的 Packages (Ubuntu)</h2>

<pre><code class="language-bash">sudo apt-get update  
sudo apt-get install build-essential libssl-dev  
</code></pre>

<p>若在 Mac OSX 上面，有安裝 XCode 即可進行接下來的步驟。</p>

<p>若使用 Windows，可以試試看 <a href="https://github.com/coreybutler/nvm-windows">https://github.com/coreybutler/nvm-windows</a> （非 nvm 官方 Package）</p>

<h2 id="nvm">安裝 NVM</h2>

<pre><code class="language-bash">curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.3/install.sh | bash  
</code></pre>

<p>最新版本可以上： <a href="https://github.com/creationix/nvm">https://github.com/creationix/nvm</a> 察看</p>

<p>這樣就完成一鍵安裝了。</p>

<h2 id="nvmnodejs">使用 NVM 選擇 NodeJS 版本</h2>

<pre><code class="language-bash">nvm install 0.12.4  
</code></pre>

<p>安裝 NodeJS 版本 0.12.4（可替換成自己需要的版本號）</p>

<pre><code class="language-bash">nvm use 0.12.4  
</code></pre>

<p>大功告成，已經可以開始使用選定的 NodeJS 版本了！</p>

<pre><code class="language-bash">nvm alias default v0.12.4  
</code></pre>

<p>避免每次開新的 Shell 會找不到 node，執行這行後就不用每次都要重新執行 nvm use</p>]]></content:encoded></item><item><title><![CDATA[在 Ghost 部落格中加入程式碼標記 - 使用 Prism]]></title><description><![CDATA[<p>如何在 Ghost Blog 中擁有上圖程式碼標記和顯示的功能呢? </p>

<p>試試看 Prism.js，不僅設置簡單，各類程式碼支援非常完整，連 ReactJS 的 JSX 都有支援，而且檔案極小，有多種主題可以做選擇，並可以針對自己的需求選取會用到的語言，縮短網頁讀取的時間。</p>

<h2 id="prism">根據需求客製化Prism</h2>

<p>進入到 Prism 官網的<a href="http://prismjs.com/download.html">下載頁面</a>後，可以根據自己的需求選取主題和語言，若沒有要做進階的客製化調整，最上方選取預設的 Minified version 就可以。</p>

<h3 id="">選取主題和支援語言</h3>

<p><img src="https://garfieldduck.me/content/images/2015/05/Download---Prism.png" alt=""></p>

<p>標記程式碼的主題，一共有六種，可以透過網頁右方的按鈕玩玩看不同的主題，並圈選其中一個。</p>

<p>下方則有提供支援語言的選取，可以看到支援的非常豐富，選取自己可能會用到的就好，避免拖慢網頁載入速度太多。</p>

<h3 id="">選取外掛功能</h3>

<p>Prism 標記功能還有各種附加的外掛可以使用，圈選出程式碼中最重要的幾行 code 的 Line Highlight 功能，根據你的需求挑選附加功能即可。 <br>
<img src="https://garfieldduck.me/content/images/2015/05/Download---Prism2.png" alt=""></p>

<p>選取完成後會算出最後生成的</p>]]></description><link>https://garfieldduck.me/ghost-prism/</link><guid isPermaLink="false">71532e6e-bc45-437d-aec9-386f1aa7f7a0</guid><category><![CDATA[Ghost]]></category><category><![CDATA[PrismJS]]></category><category><![CDATA[部落格設定]]></category><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Sun, 24 May 2015 14:11:00 GMT</pubDate><media:content url="http://garfieldduck.me/content/images/2015/05/Welcome-to-Ghost3-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://garfieldduck.me/content/images/2015/05/Welcome-to-Ghost3-1.jpg" alt="在 Ghost 部落格中加入程式碼標記 - 使用 Prism"><p>如何在 Ghost Blog 中擁有上圖程式碼標記和顯示的功能呢? </p>

<p>試試看 Prism.js，不僅設置簡單，各類程式碼支援非常完整，連 ReactJS 的 JSX 都有支援，而且檔案極小，有多種主題可以做選擇，並可以針對自己的需求選取會用到的語言，縮短網頁讀取的時間。</p>

<h2 id="prism">根據需求客製化Prism</h2>

<p>進入到 Prism 官網的<a href="http://prismjs.com/download.html">下載頁面</a>後，可以根據自己的需求選取主題和語言，若沒有要做進階的客製化調整，最上方選取預設的 Minified version 就可以。</p>

<h3 id="">選取主題和支援語言</h3>

<p><img src="https://garfieldduck.me/content/images/2015/05/Download---Prism.png" alt="在 Ghost 部落格中加入程式碼標記 - 使用 Prism"></p>

<p>標記程式碼的主題，一共有六種，可以透過網頁右方的按鈕玩玩看不同的主題，並圈選其中一個。</p>

<p>下方則有提供支援語言的選取，可以看到支援的非常豐富，選取自己可能會用到的就好，避免拖慢網頁載入速度太多。</p>

<h3 id="">選取外掛功能</h3>

<p>Prism 標記功能還有各種附加的外掛可以使用，圈選出程式碼中最重要的幾行 code 的 Line Highlight 功能，根據你的需求挑選附加功能即可。 <br>
<img src="https://garfieldduck.me/content/images/2015/05/Download---Prism2.png" alt="在 Ghost 部落格中加入程式碼標記 - 使用 Prism"></p>

<p>選取完成後會算出最後生成的 CSS + Javascript 大小，接著按下面的按鈕分別下載 CSS 和 Javascript 檔案。</p>

<h2 id="prismghost">將 Prism 加入 Ghost 部落格</h2>

<p>進入你的 Ghost 主題的程式碼 （位於 <code>content/themes/[使用的主題]</code>底下），找到 <code>default.hbs</code>這個檔案。</p>

<h4 id="prismcss">插入Prism.css</h4>

<p>將下載的 prism.css ，放到 <code>/assets/styles/</code> 目錄下，然後在 <code>&lt;head&gt;...&lt;/head&gt;</code> 底下加入</p>

<pre><code class="language-markup">&lt;link rel="stylesheet" type="text/css" href="{{asset "styles/prism.css"}}"&gt;  
</code></pre>

<h4 id="prismjs">插入Prism.js</h4>

<p>將下載的 prism.js ，放到 <code>/assets/scripts/</code> 目錄下，然後在 <code>&lt;/body&gt;</code> 之前加入</p>

<pre><code class="language-markup">&lt;script src="{{asset "scripts/prism.js"}}"&gt;&lt;/script&gt;  
</code></pre>

<p>大功告成，你可以自在的在 Blog 中使用漂亮的程式碼標記功能。</p>

<h2 id="ghostprism">在Ghost中使用 Prism 標記程式碼</h2>

<h5 id="html">標記 HTML</h5>

<pre>```language-markup
<span> Hello World! </span>   
 ```
</pre>

<h5 id="javascript">標記 Javascript</h5>

<pre>```language-javascript
var s = "Highlighting JavaScript";  
alert(s);   
 ```
</pre>

<h5 id="css">標記 CSS</h5>

<pre>```language-css
p { color: red }
```
</pre>

<h5 id="">其它支援語言縮寫列表</h5>

<ul><li data-id="markup">Markup - <code class=" language-markup">markup</code></li><li data-id="css">CSS - <code class=" language-markup">css</code></li><li data-id="clike">C-like - <code class=" language-markup">clike</code></li><li data-id="javascript">JavaScript - <code class=" language-markup">javascript</code></li><li data-id="actionscript">ActionScript - <code class=" language-markup">actionscript</code></li><li data-id="apacheconf">Apache Configuration - <code class=" language-markup">apacheconf</code></li><li data-id="applescript">AppleScript - <code class=" language-markup">applescript</code></li><li data-id="aspnet">ASP.NET (C#) - <code class=" language-markup">aspnet</code></li><li data-id="autohotkey">AutoHotkey - <code class=" language-markup">autohotkey</code></li><li data-id="bash">Bash - <code class=" language-markup">bash</code></li><li data-id="c">C - <code class=" language-markup">c</code></li><li data-id="csharp">C# - <code class=" language-markup">csharp</code></li><li data-id="cpp">C++ - <code class=" language-markup">cpp</code></li><li data-id="coffeescript">CoffeeScript - <code class=" language-markup">coffeescript</code></li><li data-id="css-extras">CSS Extras - <code class=" language-markup">css-extras</code></li><li data-id="dart">Dart - <code class=" language-markup">dart</code></li><li data-id="eiffel">Eiffel - <code class=" language-markup">eiffel</code></li><li data-id="erlang">Erlang - <code class=" language-markup">erlang</code></li><li data-id="fsharp">F# - <code class=" language-markup">fsharp</code></li><li data-id="fortran">Fortran - <code class=" language-markup">fortran</code></li><li data-id="gherkin">Gherkin - <code class=" language-markup">gherkin</code></li><li data-id="git">Git - <code class=" language-markup">git</code></li><li data-id="go">Go - <code class=" language-markup">go</code></li><li data-id="groovy">Groovy - <code class=" language-markup">groovy</code></li><li data-id="haml">Haml - <code class=" language-markup">haml</code></li><li data-id="handlebars">Handlebars - <code class=" language-markup">handlebars</code></li><li data-id="haskell">Haskell - <code class=" language-markup">haskell</code></li><li data-id="http">HTTP - <code class=" language-markup">http</code></li><li data-id="ini">Ini - <code class=" language-markup">ini</code></li><li data-id="jade">Jade - <code class=" language-markup">jade</code></li><li data-id="java">Java - <code class=" language-markup">java</code></li><li data-id="julia">Julia - <code class=" language-markup">julia</code></li><li data-id="latex">LaTeX - <code class=" language-markup">latex</code></li><li data-id="less">Less - <code class=" language-markup">less</code></li><li data-id="lolcode">LOLCODE - <code class=" language-markup">lolcode</code></li><li data-id="markdown">Markdown - <code class=" language-markup">markdown</code></li><li data-id="matlab">MATLAB - <code class=" language-markup">matlab</code></li><li data-id="nasm">NASM - <code class=" language-markup">nasm</code></li><li data-id="nsis">NSIS - <code class=" language-markup">nsis</code></li><li data-id="objectivec">Objective-C - <code class=" language-markup">objectivec</code></li><li data-id="pascal">Pascal - <code class=" language-markup">pascal</code></li><li data-id="perl">Perl - <code class=" language-markup">perl</code></li><li data-id="php">PHP - <code class=" language-markup">php</code></li><li data-id="php-extras">PHP Extras - <code class=" language-markup">php-extras</code></li><li data-id="powershell">PowerShell - <code class=" language-markup">powershell</code></li><li data-id="python">Python - <code class=" language-markup">python</code></li><li data-id="r">R - <code class=" language-markup">r</code></li><li data-id="jsx">React JSX - <code class=" language-markup">jsx</code></li><li data-id="rest">reST (reStructuredText) - <code class=" language-markup">rest</code></li><li data-id="rip">Rip - <code class=" language-markup">rip</code></li><li data-id="ruby">Ruby - <code class=" language-markup">ruby</code></li><li data-id="rust">Rust - <code class=" language-markup">rust</code></li><li data-id="sas">SAS - <code class=" language-markup">sas</code></li><li data-id="scss">Sass (Scss) - <code class=" language-markup">scss</code></li><li data-id="scala">Scala - <code class=" language-markup">scala</code></li><li data-id="scheme">Scheme - <code class=" language-markup">scheme</code></li><li data-id="smalltalk">Smalltalk - <code class=" language-markup">smalltalk</code></li><li data-id="smarty">Smarty - <code class=" language-markup">smarty</code></li><li data-id="sql">SQL - <code class=" language-markup">sql</code></li><li data-id="stylus">Stylus - <code class=" language-markup">stylus</code></li><li data-id="swift">Swift - <code class=" language-markup">swift</code></li><li data-id="twig">Twig - <code class=" language-markup">twig</code></li><li data-id="typescript">TypeScript - <code class=" language-markup">typescript</code></li><li data-id="wiki">Wiki markup - <code class=" language-markup">wiki</code></li><li data-id="yaml">YAML - <code class=" language-markup">yaml</code></li></ul>]]></content:encoded></item><item><title><![CDATA[Babun 省略安裝 Cygwin 的痛苦]]></title><description><![CDATA[<p>在 Windows上開發應用很痛苦？太多Unix的命令不能用？</p>

<p>試試看Babun吧，不像Cygwin必須要逐一選取重要的套件，它是一鍵安裝的免費Windows Shell，會幫你一次安裝好常用的套件，讓你可以在Windows上使用Unix指令。</p>

<ul>
<li>連結: <a href="http://babun.github.io/">http://babun.github.io/</a></li>
</ul>

<h3 id="babun">Babun的特色</h3>

<ul>
<li>預先配置好的Cygwin</li>
<li>自動更新</li>
<li>整合了oh-my-zsh</li>
<li>提供類似apt-get的工具： <code>pact</code></li>
</ul>

<h3 id="">下載連結</h3>

<ul>
<li><a href="http://projects.reficio.org/babun/download">http://projects.reficio.org/babun/download</a></li>
</ul>

<h3 id="">安裝方法</h3>

<p>下載後解壓縮，執行install.bat，即開始一鍵安裝</p>

<p><img src="https://garfieldduck.me/content/images/2015/05/Ashampoo_Snap_2015-05-21_15h50m47s_001_.png" alt=""></p>

<h4 id="">設定按右鍵顯示選單而非貼上</h4>

<p>Babun預設在視窗中按右鍵會直接貼上，如果不習慣的話可以在視窗上方按右鍵 -> Options，叫出設定，然後在Right click ation那邊改成Show Menu即可。 <br>
<img src="https://garfieldduck.me/content/images/2015/05/Ashampoo_Snap_2015-05-21_15h53m39s_003_.png" alt=""></p>

<p><img src="https://garfieldduck.me/content/images/2015/05/Ashampoo_Snap_2015-05-21_15h53m20s_002_.png" alt=""></p>]]></description><link>https://garfieldduck.me/babun-sheng-lue-an-zhuang-cygwin-de-tong-ku/</link><guid isPermaLink="false">fe63f043-a85e-4d92-b5e7-654256620ca9</guid><dc:creator><![CDATA[加菲鴨 garfieldduck]]></dc:creator><pubDate>Wed, 13 May 2015 05:53:58 GMT</pubDate><content:encoded><![CDATA[<p>在 Windows上開發應用很痛苦？太多Unix的命令不能用？</p>

<p>試試看Babun吧，不像Cygwin必須要逐一選取重要的套件，它是一鍵安裝的免費Windows Shell，會幫你一次安裝好常用的套件，讓你可以在Windows上使用Unix指令。</p>

<ul>
<li>連結: <a href="http://babun.github.io/">http://babun.github.io/</a></li>
</ul>

<h3 id="babun">Babun的特色</h3>

<ul>
<li>預先配置好的Cygwin</li>
<li>自動更新</li>
<li>整合了oh-my-zsh</li>
<li>提供類似apt-get的工具： <code>pact</code></li>
</ul>

<h3 id="">下載連結</h3>

<ul>
<li><a href="http://projects.reficio.org/babun/download">http://projects.reficio.org/babun/download</a></li>
</ul>

<h3 id="">安裝方法</h3>

<p>下載後解壓縮，執行install.bat，即開始一鍵安裝</p>

<p><img src="https://garfieldduck.me/content/images/2015/05/Ashampoo_Snap_2015-05-21_15h50m47s_001_.png" alt=""></p>

<h4 id="">設定按右鍵顯示選單而非貼上</h4>

<p>Babun預設在視窗中按右鍵會直接貼上，如果不習慣的話可以在視窗上方按右鍵 -> Options，叫出設定，然後在Right click ation那邊改成Show Menu即可。 <br>
<img src="https://garfieldduck.me/content/images/2015/05/Ashampoo_Snap_2015-05-21_15h53m39s_003_.png" alt=""></p>

<p><img src="https://garfieldduck.me/content/images/2015/05/Ashampoo_Snap_2015-05-21_15h53m20s_002_.png" alt=""></p>]]></content:encoded></item></channel></rss>