<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>程式開發 on @metavige</title><link>https://metavige.github.io/categories/%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BC/</link><description>Recent content in 程式開發 on @metavige</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Wed, 19 Nov 2025 09:30:00 +0800</lastBuildDate><atom:link href="https://metavige.github.io/categories/%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BC/atom.xml" rel="self" type="application/rss+xml"/><item><title>Aspire 13</title><link>https://metavige.github.io/2025/11/19/2025-11-19-aspire/</link><pubDate>Wed, 19 Nov 2025 09:30:00 +0800</pubDate><guid>https://metavige.github.io/2025/11/19/2025-11-19-aspire/</guid><description>&lt;h2 id="一個專案的開始" class="relative group"&gt;一個專案的開始 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#%e4%b8%80%e5%80%8b%e5%b0%88%e6%a1%88%e7%9a%84%e9%96%8b%e5%a7%8b" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;開發專案時，通常會在本地端進行，並結合 Database 和 Cache 等服務。目前常見的做法是使用 Docker 啟動 Database 或 Cache container 來建立本地測試環境，而非直接連線到公司提供的測試環境。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;version&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#39;3.9&amp;#39;&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;services&lt;/span&gt;:&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;postgres&lt;/span&gt;:&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;image&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;postgres:16&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;container_name&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;my_postgres&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;restart&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;always&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;environment&lt;/span&gt;:&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;POSTGRES_USER&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;myuser&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;POSTGRES_PASSWORD&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;mypassword&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;POSTGRES_DB&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;mydb&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;ports&lt;/span&gt;:&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;- &lt;span style="color:#a5d6ff"&gt;&amp;#34;5432:5432&amp;#34;&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;volumes&lt;/span&gt;:&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;- &lt;span style="color:#a5d6ff"&gt;pg_data:/var/lib/postgresql/data&lt;/span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;volumes&lt;/span&gt;:&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#7ee787"&gt;pg_data&lt;/span&gt;:&lt;span style="color:#6e7681"&gt; &lt;/span&gt;{}&lt;span style="color:#6e7681"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以上面的例子來說，你需要先有以下的知識：&lt;/p&gt;</description></item><item><title>GitOps - use fluxcd</title><link>https://metavige.github.io/2019/12/16/gitops-use-fluxcd/</link><pubDate>Mon, 16 Dec 2019 12:00:00 +0800</pubDate><guid>https://metavige.github.io/2019/12/16/gitops-use-fluxcd/</guid><description>&lt;p&gt;&lt;a href=""&gt;https://fluxcd.io/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Flux 目前是 CNCF 的 Sandbox 項目 (2019.08.20)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;






 
 
&lt;figure&gt;&lt;img src="https://rammusxu.github.io/2019/07/03/gitops-flux-note/flux-flow.png" alt="" class="mx-auto my-0 rounded-md" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;圖片出處: &lt;a href="https://rammusxu.github.io/2019/07/03/gitops-flux-note/flux-flow.png" target="_blank" rel="noreferrer"&gt;https://rammusxu.github.io/2019/07/03/gitops-flux-note/flux-flow.png&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Docker 的反模式</title><link>https://metavige.github.io/2019/12/10/docker-anti-patterns/</link><pubDate>Tue, 10 Dec 2019 19:00:00 +0800</pubDate><guid>https://metavige.github.io/2019/12/10/docker-anti-patterns/</guid><description>&lt;p&gt;針對網路上面的文章，加上自己的解釋，說明如何避免做到 Docker 的反模式&lt;/p&gt;
&lt;p&gt;原始文章: &lt;a href="https://medium.com/containers-101/docker-anti-patterns-ad2a1fcd5ce1" target="_blank" rel="noreferrer"&gt;Docker Anti-Pattern&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Makefile for Docker Build</title><link>https://metavige.github.io/2017/03/28/makefile-for-dockerbuild/</link><pubDate>Tue, 28 Mar 2017 21:34:06 +0800</pubDate><guid>https://metavige.github.io/2017/03/28/makefile-for-dockerbuild/</guid><description>&lt;p&gt;其實我對 Makefile 算是一知半解，趁此機會學習一下&lt;/p&gt;</description></item><item><title>Golang Day 3</title><link>https://metavige.github.io/2017/03/09/golang-day3/</link><pubDate>Thu, 09 Mar 2017 21:55:40 +0800</pubDate><guid>https://metavige.github.io/2017/03/09/golang-day3/</guid><description>&lt;p&gt;學習其實很無聊～沒有特別要做什麼的話，看著看著就想睡了～
所以後來決定，之後就把程式碼做好放到 &lt;a href="https://github.com/metavige/golang.learn" target="_blank" rel="noreferrer"&gt;github&lt;/a&gt; 去好了&lt;br&gt;
一次想一個想要做的小功能，這樣或許比較有趣&lt;/p&gt;</description></item><item><title>Golang Day 2</title><link>https://metavige.github.io/2017/03/08/golang-day2/</link><pubDate>Wed, 08 Mar 2017 00:00:00 +0800</pubDate><guid>https://metavige.github.io/2017/03/08/golang-day2/</guid><description>&lt;h2 id="golang-語法注意" class="relative group"&gt;Golang 語法注意 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#golang-%e8%aa%9e%e6%b3%95%e6%b3%a8%e6%84%8f" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;格式很重要，不管是空行或者是 TAB、大括號等位置，很重要，會編譯不過。不過可以用 gofmt 工具幫你自動排版程式。&lt;/li&gt;
&lt;li&gt;所有的程式需要用 package 整理，有點像是 java package/module 的觀念&lt;/li&gt;
&lt;li&gt;主程式一定是 &lt;code&gt;package main&lt;/code&gt;, 而且一定會呼叫 &lt;code&gt;func main()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;引用不必要的 packages 會錯誤&lt;/li&gt;
&lt;li&gt;沒用到的變數也會錯誤&lt;/li&gt;
&lt;li&gt;不需要分號結尾&lt;/li&gt;
&lt;li&gt;條件式不需要用 () 包起來 (這我就有點不習慣了～因為 Java, javascript, C# 都要)&lt;/li&gt;
&lt;li&gt;golang 應該不算是 OOP, 所以要習慣沒有類別 (Class) 封裝這件事情&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reference" class="relative group"&gt;Reference &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#reference" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wizardforcel.gitbooks.io" target="_blank" rel="noreferrer"&gt;GO 聖經 - gitbook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Golang Day 1</title><link>https://metavige.github.io/2017/03/06/golang-day1/</link><pubDate>Mon, 06 Mar 2017 22:00:00 +0800</pubDate><guid>https://metavige.github.io/2017/03/06/golang-day1/</guid><description>&lt;h2 id="安裝" class="relative group"&gt;安裝 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#%e5%ae%89%e8%a3%9d" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;brew install golang
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="環境設定" class="relative group"&gt;環境設定 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#%e7%92%b0%e5%a2%83%e8%a8%ad%e5%ae%9a" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GOROOT&lt;/code&gt;: GO 安裝的地方，用 &lt;code&gt;brew&lt;/code&gt; 安裝的，可以設定 &lt;code&gt;/usr/local/opt/go/libexec&lt;/code&gt; 就可以&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOPATH&lt;/code&gt;: GO 執行的時候要的路徑，看專案在哪邊就設定在哪邊&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="gopath" class="relative group"&gt;GOPATH &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#gopath" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;一般是指向專案位置，裡面還會切分三個目錄&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;src: 一般程式碼放的地方，可以包含網址．比如說 github.com/golang/golint 這樣的方式&lt;/li&gt;
&lt;li&gt;pkg: 編譯後的檔案&lt;/li&gt;
&lt;li&gt;bin: binary file&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="empty-go" class="relative group"&gt;Empty Go &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#empty-go" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-golang" data-lang="golang"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;package&lt;/span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;main&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;func&lt;/span&gt;&lt;span style="color:#6e7681"&gt; &lt;/span&gt;&lt;span style="color:#d2a8ff;font-weight:bold"&gt;main&lt;/span&gt;()&lt;span style="color:#6e7681"&gt; &lt;/span&gt;{&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;span style="color:#6e7681"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意空行以及大括弧的位置，golang 很注意&lt;strong&gt;程式碼格式&lt;/strong&gt;！&lt;/p&gt;</description></item><item><title>Akka.Net 不錯用</title><link>https://metavige.github.io/2017/02/13/akkadotnet-good/</link><pubDate>Mon, 13 Feb 2017 00:00:00 +0800</pubDate><guid>https://metavige.github.io/2017/02/13/akkadotnet-good/</guid><description>&lt;p&gt;真的使用之後，越來越覺得 Actor Model 是個好物，因為他本來就是拿來做平行運算用的。&lt;/p&gt;
&lt;p&gt;建議可以先從以下的幾篇文章以及 Github 的範例開始&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://petabridge.com/training/akka-design-patterns/" target="_blank" rel="noreferrer"&gt;Akka.Net Application Architecture and Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://petabridge.com/training/akka-remoting/" target="_blank" rel="noreferrer"&gt;Building Networked .NET Applications with Akka.Remote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://petabridge.com/training/akka-clustering/" target="_blank" rel="noreferrer"&gt;.NET Distributed Systems Architecture and Design with Akka.Cluster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="好處" class="relative group"&gt;好處 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#%e5%a5%bd%e8%99%95" aria-label="定位點"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;我剛開始做的時候，其實是想到 Sequence Diagram。因為 Actor Model 的重點其實就是在訊息的傳遞與處理，只是在整體架構上有一個 ActorSystem 幫忙做處理&lt;/p&gt;
&lt;p&gt;根據以下的圖片&lt;/p&gt;
&lt;p&gt;






 
 
&lt;figure&gt;&lt;img src="http://getakka.net/docs/images/actor.png" alt="" class="mx-auto my-0 rounded-md" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;一個 Actor 在建立之後，&lt;a href="http://getakka.net" target="_blank" rel="noreferrer"&gt;AkkaDotNet&lt;/a&gt; 會幫你建立整個 Actor 的基本行為。
包含一個 Mailbox、預設的狀態等，而且也預設了每個 Actor 都有可以有 Children Actors
所以，當你傳遞一個訊息給 Actor 的時候，其實不是直接呼叫 Actor 中處理訊息的方法，而是先進入 Mailbox，類似郵件的方式排隊處理。&lt;/p&gt;
&lt;p&gt;當處理有問題的時候，你是可以在 Handle 方法中，直接拋出錯誤，讓 Actor 失敗。如此一來就會觸發上層 Actor 的 SupervisorStrategy。預設的 Strategy 可以參考 &lt;a href="http://getakka.net/docs/Fault%20tolerance" target="_blank" rel="noreferrer"&gt;Fault Tolerance&lt;/a&gt; 文件&lt;/p&gt;</description></item><item><title>Docker Live Migration</title><link>https://metavige.github.io/2016/11/11/Migration/</link><pubDate>Fri, 11 Nov 2016 13:13:12 +0800</pubDate><guid>https://metavige.github.io/2016/11/11/Migration/</guid><description>&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/GvdO7izO4dp714" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/PhilEstes/live-container-migration-openstack-summit-barcelona-2016" title="Live Container Migration: OpenStack Summit Barcelona 2016" target="_blank"&gt;Live Container Migration: OpenStack Summit Barcelona 2016&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a target="_blank" href="//www.slideshare.net/PhilEstes"&gt;Phil Estes&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;</description></item><item><title>Visual Studio Code (launch with babel, mocha)</title><link>https://metavige.github.io/2016/08/10/vscode-es2015-with-mocha/</link><pubDate>Wed, 10 Aug 2016 09:16:53 +0800</pubDate><guid>https://metavige.github.io/2016/08/10/vscode-es2015-with-mocha/</guid><description>&lt;p&gt;Visual Studio Code 是個不錯的編輯器，不過設定上，還是有很多需要手動的動作&lt;br&gt;
特此記錄&lt;/p&gt;</description></item><item><title>Redux Study Day4 - Store</title><link>https://metavige.github.io/2016/06/22/redux-study-day4/</link><pubDate>Wed, 22 Jun 2016 21:19:28 +0800</pubDate><guid>https://metavige.github.io/2016/06/22/redux-study-day4/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/14/redux-study-day1/"&gt;Redux Study Day1 - Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/19/redux-study-day2/"&gt;Redux Study Day2 - Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/21/redux-study-day-3/"&gt;Redux Study Day3 - Reducer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/22/redux-study-day4/"&gt;Redux Study Day4 - Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;繼前面的 action/reducer 之後，接下來就是要把這兩者結合起來了～&lt;/p&gt;</description></item><item><title>Redux Study Day3 - Reducer</title><link>https://metavige.github.io/2016/06/21/redux-study-day-3/</link><pubDate>Tue, 21 Jun 2016 20:21:39 +0800</pubDate><guid>https://metavige.github.io/2016/06/21/redux-study-day-3/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/14/redux-study-day1/"&gt;Redux Study Day1 - Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/19/redux-study-day2/"&gt;Redux Study Day2 - Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/21/redux-study-day-3/"&gt;Redux Study Day3 - Reducer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/22/redux-study-day4/"&gt;Redux Study Day4 - Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;隔了半年多，重新真的找一個專案來實作 &lt;a href="https://github.com/reactjs/redux" target="_blank" rel="noreferrer"&gt;Redux&lt;/a&gt;，不得不說，半年的變化&lt;br&gt;
跟我當初看 &lt;a href="https://github.com/reactjs/redux" target="_blank" rel="noreferrer"&gt;Redux&lt;/a&gt; 差異還是蠻大的。當然，觀念什麼的是差不多，只是可能很多程式碼會有所調整&lt;/p&gt;
&lt;p&gt;這次重新再開始，之前兩天的東西，找時間修改。今天就從 &lt;a href="https://github.com/reactjs/redux" target="_blank" rel="noreferrer"&gt;Redux&lt;/a&gt; 核心的 Reducer 開始好了～&lt;/p&gt;</description></item><item><title>How to Get Node.js Logging Right</title><link>https://metavige.github.io/2016/05/31/how-to-get-nodejs-logging-right/</link><pubDate>Tue, 31 May 2016 21:24:33 +0800</pubDate><guid>https://metavige.github.io/2016/05/31/how-to-get-nodejs-logging-right/</guid><description>&lt;p&gt;&lt;a href="https://blog.risingstack.com/node-js-logging-tutorial/" target="_blank" rel="noreferrer"&gt;How to Get Node.js Logging Right&lt;/a&gt;&lt;/p&gt;</description></item><item><title>First Electron App</title><link>https://metavige.github.io/2015/12/30/First-Electron-App/</link><pubDate>Wed, 30 Dec 2015 20:59:10 +0800</pubDate><guid>https://metavige.github.io/2015/12/30/First-Electron-App/</guid><description>&lt;p&gt;很早就想要用 &lt;a href="http://electron.atom.io" target="_blank" rel="noreferrer"&gt;Electron&lt;/a&gt; 來開發 App 了，因為 Web 其實用起來有時候卡卡的&lt;br&gt;
尤其 &lt;a href="http://electron.atom.io" target="_blank" rel="noreferrer"&gt;Electron&lt;/a&gt; 出現之後，開發 Web 等同於開發 App，真是令人感到興奮～&lt;/p&gt;</description></item><item><title>在 .Net 專案使用 gulp build</title><link>https://metavige.github.io/2015/12/12/dotnet-proj-with-gulp/</link><pubDate>Sat, 12 Dec 2015 09:58:06 +0800</pubDate><guid>https://metavige.github.io/2015/12/12/dotnet-proj-with-gulp/</guid><description>&lt;p&gt;一直以來，開發 .Net 專案，因為只能在 Windows 上使用 Visual Studio 開發&lt;br&gt;
Build Project 的 Performance 總是我一個覺得很麻煩的事情&lt;/p&gt;</description></item><item><title>快速撰寫好看的 REST API 文件 - 使用 RAML</title><link>https://metavige.github.io/2015/11/16/raml-easy-start-npm/</link><pubDate>Mon, 16 Nov 2015 15:02:53 +0800</pubDate><guid>https://metavige.github.io/2015/11/16/raml-easy-start-npm/</guid><description>&lt;p&gt;寫文件大概是工程師最討厭的事情，沒有之一&lt;/p&gt;</description></item><item><title>Redux Study Day2 - Action</title><link>https://metavige.github.io/2015/10/19/redux-study-day2/</link><pubDate>Mon, 19 Oct 2015 20:03:15 +0800</pubDate><guid>https://metavige.github.io/2015/10/19/redux-study-day2/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/14/redux-study-day1/"&gt;Redux Study Day1 - Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/19/redux-study-day2/"&gt;Redux Study Day2 - Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/21/redux-study-day-3/"&gt;Redux Study Day3 - Reducer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/22/redux-study-day4/"&gt;Redux Study Day4 - Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;延續&lt;a href="https://metavige.github.io/2015/10/14/redux-study-day1/"&gt;前一天&lt;/a&gt;的學習，今天進入 Redux Day2!&lt;/p&gt;</description></item><item><title>Redux Study Day1 - Start</title><link>https://metavige.github.io/2015/10/14/redux-study-day1/</link><pubDate>Wed, 14 Oct 2015 20:25:24 +0800</pubDate><guid>https://metavige.github.io/2015/10/14/redux-study-day1/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/14/redux-study-day1/"&gt;Redux Study Day1 - Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2015/10/19/redux-study-day2/"&gt;Redux Study Day2 - Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/21/redux-study-day-3/"&gt;Redux Study Day3 - Reducer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metavige.github.io/2016/06/22/redux-study-day4/"&gt;Redux Study Day4 - Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;準備開始學習使用 &lt;a href="https://github.com/rackt/redux" target="_blank" rel="noreferrer"&gt;Redux&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Github Cheat Sheet</title><link>https://metavige.github.io/2015/04/20/github-chest-sheet/</link><pubDate>Mon, 20 Apr 2015 21:45:46 +0800</pubDate><guid>https://metavige.github.io/2015/04/20/github-chest-sheet/</guid><description>&lt;p&gt;這是我今天幫忙 &lt;a href=""&gt;https://github.com/tiimgreen/github-cheat-sheet&lt;/a&gt; 做一個簡單繁體中文版本的 PR，其實只是把簡體中文版本稍微轉換一下而已～&lt;/p&gt;
&lt;p&gt;不過其實這篇蠻有意思的，很多值得參考～&lt;/p&gt;</description></item><item><title>kitematic</title><link>https://metavige.github.io/2015/04/12/kitematic/</link><pubDate>Sun, 12 Apr 2015 13:41:59 +0800</pubDate><guid>https://metavige.github.io/2015/04/12/kitematic/</guid><description>&lt;p&gt;上個月底的新聞：&lt;br&gt;
&lt;a href="http://www.ithome.com.tw/news/94527" target="_blank" rel="noreferrer"&gt;Docker 收購新創公司 Kitematic：讓 Mac 電腦輕鬆部署容器&lt;/a&gt;&lt;/p&gt;</description></item><item><title>docker-machine for AmazonEC2</title><link>https://metavige.github.io/2015/04/12/docker-machine-aws-provider/</link><pubDate>Sun, 12 Apr 2015 09:49:28 +0800</pubDate><guid>https://metavige.github.io/2015/04/12/docker-machine-aws-provider/</guid><description>&lt;p&gt;前兩天在公司上了 Introduction Docker 的課程，回家就來試驗新的 docker-machine&lt;br&gt;
花了一點時間，研究了怎樣連接到 &lt;a href="https://aws.amazon.com/tw/" target="_blank" rel="noreferrer"&gt;AWS&lt;/a&gt; 去～&lt;/p&gt;</description></item><item><title>安裝 Vagrant 在 Mac 上</title><link>https://metavige.github.io/2015/04/11/vagrant-install-on-mac/</link><pubDate>Sat, 11 Apr 2015 11:31:09 +0800</pubDate><guid>https://metavige.github.io/2015/04/11/vagrant-install-on-mac/</guid><description>&lt;p&gt;簡單的在 Mac 安裝 &lt;a href="https://www.vagrantup.com/" target="_blank" rel="noreferrer"&gt;Vagrant&lt;/a&gt; 環境&lt;/p&gt;</description></item><item><title>Entity Framework FakeDbSet</title><link>https://metavige.github.io/2015/03/25/entityframework-fakedbset/</link><pubDate>Wed, 25 Mar 2015 11:56:15 +0800</pubDate><guid>https://metavige.github.io/2015/03/25/entityframework-fakedbset/</guid><description>&lt;p&gt;為了單元測試，需要作假資料，如果用資料庫來做，就需要考慮測試資料的建立以及 Transaction 的問題，因為建立測試資料後還得刪除。&lt;/p&gt;
&lt;p&gt;所以可以使用 Mock 的方式，把 &lt;em&gt;IDbSet&lt;/em&gt; 改成使用 InMemory&lt;/p&gt;
&lt;p&gt;目前 &lt;a href=""&gt;Nuget.org&lt;/a&gt; 就有一個套件，可以幫忙你實作 &lt;em&gt;InMemorySet&lt;/em&gt;
我目前是安裝 &lt;a href="https://www.nuget.org/packages/AnotherFakeDbSet/" target="_blank" rel="noreferrer"&gt;AnotherFakeDbSet&lt;/a&gt;，Source 在 &lt;a href="https://github.com/realistschuckle/FakeDbSet" target="_blank" rel="noreferrer"&gt;Github-AnotherFakeDbSet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這個 Source 的原始版本是 &lt;a href="https://github.com/a-h/FakeDbSet" target="_blank" rel="noreferrer"&gt;FakeDbSet&lt;/a&gt;
不過我也覺得 &lt;a href="https://www.nuget.org/packages/AnotherFakeDbSet/" target="_blank" rel="noreferrer"&gt;AnotherFakeDbSet&lt;/a&gt; 改的不錯，而且因為陸續有推出新版本，所以我自己也是採用這個 Nuget Package&lt;/p&gt;</description></item><item><title>log4net Action Log 設定</title><link>https://metavige.github.io/2015/03/25/log4net-actionlog/</link><pubDate>Wed, 25 Mar 2015 09:00:00 +0800</pubDate><guid>https://metavige.github.io/2015/03/25/log4net-actionlog/</guid><description>&lt;p&gt;我之前設定網站執行的 Action Log 的一個記錄，有些東西都是拼拼湊湊出來的，並不見得是最佳版本&lt;/p&gt;
&lt;p&gt;log4net 設定檔&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-weight:bold;font-style:italic"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34; ?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;&amp;lt;log4net&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;root&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;level&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;DEBUG&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;appender-ref&lt;/span&gt; ref=&lt;span style="color:#a5d6ff"&gt;&amp;#34;stdout&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;appender-ref&lt;/span&gt; ref=&lt;span style="color:#a5d6ff"&gt;&amp;#34;ActionLogRollingFile&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;/root&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;appender&lt;/span&gt; name=&lt;span style="color:#a5d6ff"&gt;&amp;#34;ActionLogRollingFile&amp;#34;&lt;/span&gt; type=&lt;span style="color:#a5d6ff"&gt;&amp;#34;log4net.Appender.RollingFileAppender&amp;#34;&lt;/span&gt;&lt;span style="color:#7ee787"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;file&lt;/span&gt; type=&lt;span style="color:#a5d6ff"&gt;&amp;#34;log4net.Util.PatternString&amp;#34;&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;action.log&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;appendToFile&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;true&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;encoding&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;maxSizeRollBackups&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;30&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;rollingStyle&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;Date&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;datePattern&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;&amp;#39;.&amp;#39;yyyy-MM-dd&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;layout&lt;/span&gt; type=&lt;span style="color:#a5d6ff"&gt;&amp;#34;log4net.Layout.PatternLayout&amp;#34;&lt;/span&gt;&lt;span style="color:#7ee787"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;conversionPattern&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;(%date{HH:mm:ss,fff}) [%t] - %u %5property{Duration} %property{StatusCode} %6property{Method} %property{Uri} %m%n &amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;/layout&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;filter&lt;/span&gt; type=&lt;span style="color:#a5d6ff"&gt;&amp;#34;log4net.Filter.LoggerMatchFilter&amp;#34;&lt;/span&gt;&lt;span style="color:#7ee787"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;acceptOnMatch&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;true&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;LoggerToMatch&lt;/span&gt; value=&lt;span style="color:#a5d6ff"&gt;&amp;#34;Sample.Web.Filters.WebApiActionFilter&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;/filter&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;filter&lt;/span&gt; type=&lt;span style="color:#a5d6ff"&gt;&amp;#34;log4net.Filter.DenyAllFilter&amp;#34;&lt;/span&gt; &lt;span style="color:#7ee787"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7ee787"&gt;&amp;lt;/appender&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;&amp;lt;/log4net&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中要注意的是&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;log4net.Filter.LoggerMatchFilter: 用來設定特定的 class 記錄才使用這個 Appender
&lt;ul&gt;
&lt;li&gt;acceptOnMatch: 這個設定有點像是 blacklist/whitelist，true 表示有 match 才是，相當於 whitelist&lt;/li&gt;
&lt;li&gt;LoggerToMatch: 設定要篩選的類別名稱&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;log4net.Filter.DenyAllFilter: 篩選掉其他的 Log，不會在這個 Appender 裡面記錄&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>JWT</title><link>https://metavige.github.io/2015/03/11/2015-03-11-jwt/</link><pubDate>Wed, 11 Mar 2015 16:24:30 +0800</pubDate><guid>https://metavige.github.io/2015/03/11/2015-03-11-jwt/</guid><description>&lt;p&gt;&lt;a href="http://oauth.net/2/" target="_blank" rel="noreferrer"&gt;OAuth2&lt;/a&gt; 現在已經很多的網站都有實作了，像是 &lt;a href="https://twitter.com" target="_blank" rel="noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.google.com" target="_blank" rel="noreferrer"&gt;Google&lt;/a&gt;, &lt;a href="https://www.facebook.com" target="_blank" rel="noreferrer"&gt;Facebook&lt;/a&gt;, &lt;a href="https://github.com" target="_blank" rel="noreferrer"&gt;Github&lt;/a&gt; 等網站本身都有支援 &lt;a href="http://oauth.net/2/" target="_blank" rel="noreferrer"&gt;OAuth2&lt;/a&gt; 的驗證與授權機制&lt;/p&gt;
&lt;p&gt;最近因為專案需求，特地去研究了一下有關 Web API 做驗證授權的機制，看到網路上有很多的範例，在講解 AngularJS SPA 的登入作法，想說可以把類似的機制放到 RESTful Service 的驗證上面&lt;/p&gt;</description></item><item><title>Docker service behind proxy - Ubuntu</title><link>https://metavige.github.io/2014/12/17/docker-behind-proxy-ubuntu/</link><pubDate>Wed, 17 Dec 2014 17:27:00 +0800</pubDate><guid>https://metavige.github.io/2014/12/17/docker-behind-proxy-ubuntu/</guid><description>&lt;p&gt;編輯 &lt;code&gt;/etc/default/docker&lt;/code&gt;&lt;br&gt;
把以下 &lt;code&gt;export http_proxy&lt;/code&gt; 的那一行 unmark, 然後改成你的 proxy 設定&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Docker Upstart and SysVinit configuration file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Customize location of Docker binary (especially for development testing).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;#DOCKER=&amp;#34;/usr/local/bin/docker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Use DOCKER_OPTS to modify the daemon startup options.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;#DOCKER_OPTS=&amp;#34;--dns 8.8.8.8 --dns 8.8.4.4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# If you need Docker to use an HTTP proxy, it can also be specified here.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export &lt;span style="color:#79c0ff"&gt;http_proxy&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;http://127.0.0.1:3128/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# This is also a handy place to tweak where Docker&amp;#39;s temporary files go.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;#export TMPDIR=&amp;#34;/mnt/bigdrive/docker-tmp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重新啟動 docker service &amp;mdash; &lt;code&gt;service docker restart&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Git-Tf 協同作業，Git 的一些小設定</title><link>https://metavige.github.io/2014/07/16/git-tf-collaboration-git-some-small-set/</link><pubDate>Wed, 16 Jul 2014 20:04:00 +0800</pubDate><guid>https://metavige.github.io/2014/07/16/git-tf-collaboration-git-some-small-set/</guid><description>&lt;p&gt;本身有用 Windows, Mac 在開發系統，我其實是偏好在 Mac 編輯，因為我喜歡 &lt;a href="http://www.sublimetext.com/3" target="_blank" rel="noreferrer"&gt;Sublime Text&lt;/a&gt; !!!&lt;/p&gt;
&lt;p&gt;不過，在 Windows 中用 Visual Studio 2013, 公司內部是規定使用 TFS （老實說我不是很喜歡，不過整個團隊以及公司都是這樣，也不得不用～）&lt;/p&gt;
&lt;p&gt;有些時候，不想使用笨重的 VS2013，像是開發 Web Project，我還是喜歡用 &lt;a href="http://www.sublimetext.com/3" target="_blank" rel="noreferrer"&gt;Sublime Text&lt;/a&gt; 編輯，像是 javascript/html 都有不錯的開發經驗～
所以只好用 &lt;a href="https://gittf.codeplex.com" target="_blank" rel="noreferrer"&gt;git-tf&lt;/a&gt; 來做界接～&lt;/p&gt;</description></item><item><title>dotNetConf 2014</title><link>https://metavige.github.io/2014/07/12/dotNetConf-2014/</link><pubDate>Sat, 12 Jul 2014 10:00:00 +0800</pubDate><guid>https://metavige.github.io/2014/07/12/dotNetConf-2014/</guid><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/dotnet/archive/2014/07/02/dotnetconf-2014-wrapup.aspx" target="_blank" rel="noreferrer"&gt;dotNetConf 2014&lt;/a&gt; 的影片已經可以在 Channel 9 找到了&lt;/p&gt;
&lt;p&gt;我看了三個項目&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/dotnetConf/2014/The-State-of-NET" target="_blank" rel="noreferrer"&gt;(KeyNote) .Net State&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/dotnetConf/2014/MVC-6" target="_blank" rel="noreferrer"&gt;Asp.Net MVC 6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/dotnetConf/2014/New-Innovations-in-NET-Runtime" target="_blank" rel="noreferrer"&gt;New Innovation in .Net&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;老實說改變很大&lt;/p&gt;</description></item><item><title>5 javascript debugging tips you'll start using today</title><link>https://metavige.github.io/2014/03/07/5-javascript-debugging-tips-youll-start-using-today/</link><pubDate>Fri, 07 Mar 2014 08:11:00 +0800</pubDate><guid>https://metavige.github.io/2014/03/07/5-javascript-debugging-tips-youll-start-using-today/</guid><description>&lt;p&gt;&lt;a href="http://berzniz.com/post/78260747646/5-javascript-debugging-tips-youll-start-using-today" target="_blank" rel="noreferrer"&gt;原文出處&lt;/a&gt;&lt;br&gt;
這是前幾天在網路上看到的一篇文章，我懶得翻譯標題的部份 (其實我不太會翻譯)
我個人覺得很有幫助，剛好最近有在寫 &lt;a href="https://en.wikipedia.org/wiki/Single-page_application" target="_blank" rel="noreferrer"&gt;SPA&lt;/a&gt; 的專案&lt;/p&gt;
&lt;p&gt;以下是我對原文的一些自己的理解，也算是簡單的翻譯啦。&lt;br&gt;
下面用到的瀏覽器都是 Chrome (不得不說，這真的是 Web 開發者的一大利器，比起 ie 好太多了～又快～)&lt;/p&gt;</description></item><item><title>Hubot first try</title><link>https://metavige.github.io/2013/12/17/hubot-first-try/</link><pubDate>Tue, 17 Dec 2013 00:06:00 +0800</pubDate><guid>https://metavige.github.io/2013/12/17/hubot-first-try/</guid><description>&lt;p&gt;最近剛好想學 CoffeeScript，前幾天又看到有 hubot 的新聞，所以就想說來玩一下 &lt;a href="http://hubot.github.com/" target="_blank" rel="noreferrer"&gt;Hubot&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Unity + SharpRepository</title><link>https://metavige.github.io/2013/11/19/unity-sharprepository/</link><pubDate>Tue, 19 Nov 2013 15:38:00 +0800</pubDate><guid>https://metavige.github.io/2013/11/19/unity-sharprepository/</guid><description>&lt;p&gt;最近在學習使用 &lt;a href="https://github.com/SharpRepository/SharpRepository" target="_blank" rel="noreferrer"&gt;SharpRepository&lt;/a&gt;，剛好專案中有使用 IoC Container - Unity, 所以需要把兩者做一個結合&lt;/p&gt;</description></item><item><title>zero-records</title><link>https://metavige.github.io/2013/09/18/zero-records/</link><pubDate>Wed, 18 Sep 2013 08:49:00 +0800</pubDate><guid>https://metavige.github.io/2013/09/18/zero-records/</guid><description>&lt;p&gt;&lt;a href="http://zeromq.org/" target="_blank" rel="noreferrer"&gt;官方網站&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這是在官方網站上面 &lt;a href="http://zeromq.org/intro:ask-for-help" target="_blank" rel="noreferrer"&gt;Solve a Problem&lt;/a&gt; 的一句話&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Most of us, when we start using ØMQ, come with mental models of how things &amp;ldquo;should&amp;rdquo; work, which are often wrong. If you come looking for specific solutions, you may be disappointed.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Backbone Study</title><link>https://metavige.github.io/2013/02/13/backbone-study/</link><pubDate>Wed, 13 Feb 2013 11:52:00 +0800</pubDate><guid>https://metavige.github.io/2013/02/13/backbone-study/</guid><description>&lt;p&gt;在學習 Backbone 的時候，針對 Backbone 比較重要的一些事件、方法與屬性作個記錄&lt;/p&gt;
&lt;p&gt;&lt;a href="http://backbonejs.org/" target="_blank" rel="noreferrer"&gt;Backbonejs&lt;/a&gt;&lt;/p&gt;</description></item><item><title>版本管理的一些觀念說明</title><link>https://metavige.github.io/2011/07/13/about-version-control/</link><pubDate>Wed, 13 Jul 2011 15:31:00 +0800</pubDate><guid>https://metavige.github.io/2011/07/13/about-version-control/</guid><description>&lt;p&gt;前幾天跟公司內部同事分享了一些版本管理的觀念&lt;br&gt;
順便作個紀錄，避免以後還要找資料&lt;/p&gt;</description></item></channel></rss>