<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nic Lin&#39;s Blog</title>
    <link>https://blog.niclin.tw/</link>
    <description>Recent content on Nic Lin&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-TW</language>
    <lastBuildDate>Sun, 08 May 2022 18:01:06 +0800</lastBuildDate>
    
	<atom:link href="https://blog.niclin.tw/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>謝明真 - 高效領導力的課後筆記</title>
      <link>https://blog.niclin.tw/2022/05/08/ddi/</link>
      <pubDate>Sun, 08 May 2022 18:01:06 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2022/05/08/ddi/</guid>
      <description>對我來說，其實我一直很摸不透何謂管理 在一直以來的軟體工程師的道路上，我盡可能的不想去碰辦公室政治 但就算劃地自限，辦公室政治依然會找上你 在這過</description>
    </item>
    
    <item>
      <title>NFT 開發實戰！基礎智能合約入門 (3)</title>
      <link>https://blog.niclin.tw/2022/02/01/nft-smart-contract-3/</link>
      <pubDate>Tue, 01 Feb 2022 14:27:04 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2022/02/01/nft-smart-contract-3/</guid>
      <description>這邊比較困難一點，至少會一些 javascript 開發的經驗會比較容易上手 因為要準備使用 React 開發單頁式的網站來跟 Metamask 錢包互動 樣式什麼的就先不管了 主要目標兩個 能透過網</description>
    </item>
    
    <item>
      <title>NFT 開發實戰！基礎智能合約入門 (2)</title>
      <link>https://blog.niclin.tw/2022/02/01/nft-smart-contract-2/</link>
      <pubDate>Tue, 01 Feb 2022 14:26:04 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2022/02/01/nft-smart-contract-2/</guid>
      <description>這個章節主要會圍繞在由 Solidity 語言所開發的智能合約 ERC-721 其實就是定義了一系列的接口，讓你能夠透過制訂的接口，去實作所謂的 NFT 再撰寫 NFT 合約之前，可以先稍微</description>
    </item>
    
    <item>
      <title>NFT 開發實戰！基礎智能合約入門 (1)</title>
      <link>https://blog.niclin.tw/2022/02/01/nft-smart-contract-1/</link>
      <pubDate>Tue, 01 Feb 2022 14:25:04 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2022/02/01/nft-smart-contract-1/</guid>
      <description>區塊鏈從早期的主流幣買賣，到後來遍地開花的 ERC-20 代幣大戰 又再次進化來炒 ERC-721 的 NFT 了 這篇文章主要紀錄 NFT 在目前主流的玩法是如何透過智能合約去開發的技術細</description>
    </item>
    
    <item>
      <title>如何自我檢測 log4j CVE 漏洞</title>
      <link>https://blog.niclin.tw/2021/12/17/detect-log4j-cve/</link>
      <pubDate>Fri, 17 Dec 2021 00:59:00 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2021/12/17/detect-log4j-cve/</guid>
      <description>基本上這次的 Apach Log4j 漏洞可以提權進行範圍更大的攻擊 在 CVE 的網站 CVE-2021-44228 被評估為 CVSSv3 10 的分數，是最為嚴重的 因為影響範圍很大，所以第一時間需要檢測自家的機器是</description>
    </item>
    
    <item>
      <title>Rails 如何在資料寫入時記錄來源 IP 位置</title>
      <link>https://blog.niclin.tw/2020/11/09/rails-current-attributes/</link>
      <pubDate>Mon, 09 Nov 2020 21:54:20 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/11/09/rails-current-attributes/</guid>
      <description>以 Rails 的實際應用來說，大多數都是透過來源請求進 routes 後展開的生命週期 (controller, model, view) 也就是說，如果要能 call 到某一個 method，在此之前都一定會有 HTTP 請求 但也有</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 8 營收篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-8/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:59 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-8/</guid>
      <description>營收涵蓋的範圍其實不只真金白銀，我認為還有一部份是名聲或流量 經營頻道後一段時間，累積出一定的曝光量，也就會開始有人注意到你，如果有留下聯絡方</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 7 酸民文化篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-7/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:56 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-7/</guid>
      <description>初期成為影片創作者時，會很在意觀眾的回應，任何一點風吹草動都可能會繃緊神經 可能一個酸言就扎在心上，或是一個倒讚久久不能理解為什麼有人要給，這</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 6 演算法趨勢篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-6/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:54 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-6/</guid>
      <description>這個章節會說明在經營「在地上滾的工程師 Nic」頻道半年左右的心得 主要會從數據及觀察來做分享，但不會有實際的逆向工程反推演算法的部分 也因為比較</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 5 設備器材篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-5/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:52 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-5/</guid>
      <description>剪完了影片，輸出了檔案，來到上菜給觀眾前的最後一哩路 相信很多人會對 Youtube 的推薦演算法感到好奇 要如何才能讓自己的影片被觀眾看到？ 在 Youtube 後台的影片上架</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 4 後製剪輯篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-4/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:51 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-4/</guid>
      <description>剪輯的技巧我是直接買阿滴的課程來做學習，課程內容質量很高，從設備到剪輯細節都派的上用場 不過講師剪輯的軟體是使用 Adobe Premiere，這部分就要</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 3 文案企劃篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-3/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:49 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-3/</guid>
      <description>初期在製作影片的時候，會有主題發想的環節 因為剛開始總是躍躍欲試，通常想分享的東西都超多，這都是非常正常的現象 但是你很想講，有考慮過觀眾真的想</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 2 設備器材篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-2/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:47 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-2/</guid>
      <description>器材重要性 除了製作好的內容吸引觀眾停留以外，在整個影片製作上，我認為初期需要特別注意的順序是 收音 &amp;gt; 打光 &amp;gt; 畫質 好的內容如果聲音忽大忽小或是有雜</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 1 制訂頻道方向篇</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-1/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:45 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-1/</guid>
      <description>「能走網路就別走馬路」 把自己當作一間公司經營，而自媒體的建立就是拓展自己個人品牌最好的管道之一 然而在 2020 因為疫情關係，演講邀約場次也變少，「走</description>
    </item>
    
    <item>
      <title>如何經營工程師 Youtube 頻道 - Part 0</title>
      <link>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-0/</link>
      <pubDate>Sat, 31 Oct 2020 17:15:44 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/10/31/engineer-and-youtube-part-0/</guid>
      <description>我在 2020 年 3 月開始上傳影片到 Youtube 分享軟體工程師求職、職涯以及經驗，在短短的三個月時間快速累積超過 10,000 訂閱 我是一名軟體工程師，擅長網頁前後端開發，在</description>
    </item>
    
    <item>
      <title>Rails 中避免 race condition 的最佳實踐(二)</title>
      <link>https://blog.niclin.tw/2020/09/11/avoids-race-condition-best-practice-in-ruby-on-rails-2/</link>
      <pubDate>Fri, 11 Sep 2020 00:05:23 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/09/11/avoids-race-condition-best-practice-in-ruby-on-rails-2/</guid>
      <description>序 Rails 中避免 race condition 的最佳實踐(一) 前言 Lock 的種類 悲觀鎖 樂觀鎖 悲觀鎖定的最佳實踐 超過兩層請用 AR transaction + Lock Lock first 規範鎖定順序 使用 Bang 語法 Rails 中避免 race condition 的最佳實踐</description>
    </item>
    
    <item>
      <title>Rails 中避免 race condition 的最佳實踐(一)</title>
      <link>https://blog.niclin.tw/2020/09/11/avoids-race-condition-best-practice-in-ruby-on-rails-1/</link>
      <pubDate>Fri, 11 Sep 2020 00:05:22 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/09/11/avoids-race-condition-best-practice-in-ruby-on-rails-1/</guid>
      <description>在開發上會遇到 code 對 database 處理 concurrency 所帶來的問題，而這些問題隨著商業邏輯逐漸壯大會更容易遇到。 當兩個用戶從資料中判斷同一個數值且同時進行更新，在沒有並</description>
    </item>
    
    <item>
      <title>10 分鐘整合 google sheet 做自動化開發功能週報</title>
      <link>https://blog.niclin.tw/2020/06/07/github-google-sheet-integrate/</link>
      <pubDate>Sun, 07 Jun 2020 18:16:51 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/06/07/github-google-sheet-integrate/</guid>
      <description>當公司團隊人數較少，沒有明顯部門區分的時候，以技術開發產品的流程來說，其實很快就可以讓成員相互流通資訊，知道今天要上什麼功能，主要由誰負責。</description>
    </item>
    
    <item>
      <title>經營 Side Project 300 天所帶來的收穫及挑戰</title>
      <link>https://blog.niclin.tw/2020/05/27/beiyi-app-side-project-review/</link>
      <pubDate>Wed, 27 May 2020 23:33:43 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/05/27/beiyi-app-side-project-review/</guid>
      <description>在去年 2019 年 5 月，我一個人花費 3 天的時間，使用 Ruby on Rails 開發了第一版網站，隨後一個月利用 React Native 完成了 APP 開發並上線。 北宜公路資訊互助網，也就是 Beiyi 北宜 A</description>
    </item>
    
    <item>
      <title>我的 Youtube 影片製作流程</title>
      <link>https://blog.niclin.tw/2020/04/05/my-youtube-sop/</link>
      <pubDate>Sun, 05 Apr 2020 23:08:52 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/04/05/my-youtube-sop/</guid>
      <description>最近做影片有感，這裡把我自己的流程和心得記錄下來 認真剪三支以上影片，就會獲得進步，每次都要有不同的目標，目的是一次比一次的質感還要提升 我只花</description>
    </item>
    
    <item>
      <title>API 設計時必須注意的 HTTP header 底線問題</title>
      <link>https://blog.niclin.tw/2020/03/31/avoid-http-header-use-underscore/</link>
      <pubDate>Tue, 31 Mar 2020 23:48:28 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/03/31/avoid-http-header-use-underscore/</guid>
      <description>這幾天在處理公司的第三方 API 介接，其中有一個部分是將 token 放在 HTTP header 裡面當作彼此驗證的方式，雖然這不是什麼特別的方式，但卻在我使用 Ruby 處理時掉進了時空</description>
    </item>
    
    <item>
      <title>如何提升你的程式可讀性之實務技巧（三）</title>
      <link>https://blog.niclin.tw/2020/02/29/readable-code-3/</link>
      <pubDate>Sat, 29 Feb 2020 22:08:46 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/29/readable-code-3/</guid>
      <description>本系列其他文章 如何提升你的程式可讀性之實務技巧（一） 如何提升你的程式可讀性之實務技巧（二） 文章的篇幅主要會分成三個部分 提升可讀性能夠帶來的實</description>
    </item>
    
    <item>
      <title>如何提升你的程式可讀性之實務技巧（二）</title>
      <link>https://blog.niclin.tw/2020/02/29/readable-code-2/</link>
      <pubDate>Sat, 29 Feb 2020 22:08:45 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/29/readable-code-2/</guid>
      <description>這個篇章會有比較大量的程式碼範例，看起來會比較累一些。 因為能夠提升可讀性的方法族繁不及被載，所以也不會有全部的方法，我整理了一些我自己平常開</description>
    </item>
    
    <item>
      <title>如何提升你的程式可讀性之實務技巧（一）</title>
      <link>https://blog.niclin.tw/2020/02/29/readable-code-1/</link>
      <pubDate>Sat, 29 Feb 2020 22:08:43 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/29/readable-code-1/</guid>
      <description>有沒有遇過一種情況是，即使需求不是這麼急迫，團隊之中總有習慣了問題來隨手就解的隊友，那個神來一筆的 commit 也跟著埋下了考古的鑰匙。 直到要維護時，你</description>
    </item>
    
    <item>
      <title>Ruby 中使用 freeze 優化效能的時機</title>
      <link>https://blog.niclin.tw/2020/02/24/when-to-use-freeze-in-ruby/</link>
      <pubDate>Mon, 24 Feb 2020 14:18:41 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/24/when-to-use-freeze-in-ruby/</guid>
      <description>在 Ruby 中常量(constant)其實是可以變更的 DEFAULT_MESSAGE = &amp;quot;Hello&amp;quot; DEFAULT_MESSAGE &amp;lt;&amp;lt; &amp;quot;123&amp;quot; puts DEFAULT_MESSAGE.inspect # =&amp;gt; &amp;quot;Hello123&amp;quot; 透過使用 freeze 我們可以創建出一開始我們所預期不能更改的常數 DEFAULT_MESSAGE = &amp;quot;Hello&amp;quot;.freeze DEFAULT_MESSAGE &amp;lt;&amp;lt; &amp;quot;123&amp;quot; # =&amp;gt; FrozenError</description>
    </item>
    
    <item>
      <title>避免 React 中的 useEffect 無限 render</title>
      <link>https://blog.niclin.tw/2020/02/23/avoid-react-hooks-useeffect-infinite-loop.md/</link>
      <pubDate>Sun, 23 Feb 2020 00:00:27 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/23/avoid-react-hooks-useeffect-infinite-loop.md/</guid>
      <description>useEffect 會在 component 渲染完成後執行，類似 callback function 執行順序 invoke function component render execute function in useEffect 所以像我的 component 是從 redux 灌資料進來的，然後在 useEffect 中去 call api 來 fetch data。 結果就是掉進無限循環 fetch</description>
    </item>
    
    <item>
      <title>在 Rails 內輕量使用 Vue Component 的最佳實踐</title>
      <link>https://blog.niclin.tw/2020/02/22/rails-hybrid-with-vue-component/</link>
      <pubDate>Sat, 22 Feb 2020 18:14:10 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/22/rails-hybrid-with-vue-component/</guid>
      <description>在維護一陣子的 Rails 專案上，難免會看到各處擺放的 JavaScript function 或是 jQuery 各種直接操作 DOM 之類的作法。 在這個前端技術大時代，為了因應更複雜的 UI 需求，有更多易於擴充</description>
    </item>
    
    <item>
      <title>身為工程師的你在武漢疫情時能做些什麼</title>
      <link>https://blog.niclin.tw/2020/02/11/what-can-you-do-as-an-enginner-during-the-2019-ncov/</link>
      <pubDate>Tue, 11 Feb 2020 00:07:02 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/11/what-can-you-do-as-an-enginner-during-the-2019-ncov/</guid>
      <description>在目前全球疫情尚未有一個完全掌握的情況下，不論是當前的口罩之亂、衛生紙之亂，這勢必都是在我們有生之年的一場危機，以各國開始撤僑、封城等行為，</description>
    </item>
    
    <item>
      <title>如何在區域網路用 Docker 架設有 SSL 的 Gitlab</title>
      <link>https://blog.niclin.tw/2020/02/10/build-internal-gitlab-by-self-certificate/</link>
      <pubDate>Mon, 10 Feb 2020 17:44:54 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/02/10/build-internal-gitlab-by-self-certificate/</guid>
      <description>為什麼要自架 Gitlab 經歷過在團隊中使用 Gitea 後發現實在太難用了，除了速度快以外實在感受不到什麼優點，不管是在 CI / Code review 的部分都差強人意，更不用說個單 Repo 關</description>
    </item>
    
    <item>
      <title>從被問到問人，那些我常問的面試問題</title>
      <link>https://blog.niclin.tw/2020/01/07/interview-tips/</link>
      <pubDate>Tue, 07 Jan 2020 12:35:28 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/01/07/interview-tips/</guid>
      <description>沒工作的時候，面試是你必須學會的技能 有工作的時候，面試是測試你自己價值的過程 我們很常被面試，但當角色轉換時，要如何成為那個自己不討厭的面試官</description>
    </item>
    
    <item>
      <title>[Rails] 如何漂亮寫出可維護的 query (Maintainable Rails Query)</title>
      <link>https://blog.niclin.tw/2020/01/05/maintainable-rails-query/</link>
      <pubDate>Sun, 05 Jan 2020 18:44:35 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2020/01/05/maintainable-rails-query/</guid>
      <description>一般來說在 Rails 開發上，Active Record 已經算是相當成熟的 ORM 來做 SQL query 的封裝 除非極其複雜的 Query 無法用 Rails 寫出來亦或是團隊每個人都是 SQL query 高手，否則建議在團</description>
    </item>
    
    <item>
      <title>在已知長度情況下優化 slice 的性能</title>
      <link>https://blog.niclin.tw/2019/12/29/length-slice-init-golang/</link>
      <pubDate>Sun, 29 Dec 2019 23:25:45 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/12/29/length-slice-init-golang/</guid>
      <description>golang 在用 slice 時要注意，如果先給大小的話可以避免動態的多次 allocate 多的 memory，然後讓底層產生多個 slice 假設從 SQL 拿出來的資料已經知道其長度，再塞資料到 slice</description>
    </item>
    
    <item>
      <title>[ReactNative] 如何在 iOS APP 上主動要求用戶評分</title>
      <link>https://blog.niclin.tw/2019/12/29/requesting-app-ratings-and-reviews/</link>
      <pubDate>Sun, 29 Dec 2019 17:47:17 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/12/29/requesting-app-ratings-and-reviews/</guid>
      <description>iOS 在 10.3 版本之後引入 SKStoreReviewController 來做到更好的評分 UI 交互，也就是說你不必讓使用者跳脫應用程式導向 app store 再進行評分。 可以以一個 pop up 給用戶在應用程式內進行評分 評</description>
    </item>
    
    <item>
      <title>Rails 的 scope 為什麼用 lambda？ Proc 與 lambda 不同之處</title>
      <link>https://blog.niclin.tw/2019/11/01/ruby-proc-lambda-different/</link>
      <pubDate>Fri, 01 Nov 2019 18:23:17 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/11/01/ruby-proc-lambda-different/</guid>
      <description>lambda 和 Proc 幾乎一模一樣，主要差異，差在「檢查參數」和「丟回控制權」 打開 irb console 來試試看下面兩個 method def test_proc test = Proc.new { return &amp;quot;Return Successful&amp;quot; } test.call &amp;quot;Proc not return&amp;quot; end def test_lambda test = lambda { return &amp;quot;Return Successful&amp;quot; } test.call</description>
    </item>
    
    <item>
      <title>淺談 Active Record 的 Lazy load 特性</title>
      <link>https://blog.niclin.tw/2019/11/01/active-record-query-lazy-load/</link>
      <pubDate>Fri, 01 Nov 2019 01:13:23 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/11/01/active-record-query-lazy-load/</guid>
      <description>使用 User.find(1) 會直接返回一個明確的 ruby object，但更多時候下 where 查詢條件時返回的像是一個 serialized 過後的 User object [#&amp;lt;User id: 1, email: &amp;quot;foo@bar.com&amp;quot;&amp;gt;] 這個回傳的東西看似 array，但如果實</description>
    </item>
    
    <item>
      <title>Rails 專案搭配 Github Actions 進行 RSpec 自動化測試</title>
      <link>https://blog.niclin.tw/2019/10/31/building-a-rails-ci-piepline-and-run-rspec-on-github-actions/</link>
      <pubDate>Thu, 31 Oct 2019 10:55:08 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/10/31/building-a-rails-ci-piepline-and-run-rspec-on-github-actions/</guid>
      <description>以前 CI pipeline 百家爭鳴，多半的專案都還會接第三方的 CI 來做自動化測試，例如常聽到的 CirceCI / Travis 等等 現在 Github 自己也推出了 CI 工具，可以直接在專案上整合使用。 之前</description>
    </item>
    
    <item>
      <title>JavaScript 中 require, import 的差別及效能</title>
      <link>https://blog.niclin.tw/2019/10/03/nodejs-require-vs-es6-import-export/</link>
      <pubDate>Thu, 03 Oct 2019 00:22:44 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/10/03/nodejs-require-vs-es6-import-export/</guid>
      <description>簡單說差別：import 是編譯中執行，CommonJS 的 require 是同步加載 import 無論在 node 或是瀏覽器都不能直接使用，透過 Babel 轉譯後還是使用 CommonJS 加載，所以兩者</description>
    </item>
    
    <item>
      <title>React 效能優化基本招</title>
      <link>https://blog.niclin.tw/2019/10/02/basic-react-optimizing-performance/</link>
      <pubDate>Wed, 02 Oct 2019 00:39:04 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/10/02/basic-react-optimizing-performance/</guid>
      <description>會慢基本都是慢在 render function，如果巢狀 components 從父節點開始重新渲染，導致下面的子節點跟著重新 render 就會不必要的效能浪費。 所以基本招大致上是兩招，</description>
    </item>
    
    <item>
      <title>ES6 箭頭函式 (Arrow functions)</title>
      <link>https://blog.niclin.tw/2019/09/30/arrow-function-in-javascript/</link>
      <pubDate>Mon, 30 Sep 2019 23:03:13 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/09/30/arrow-function-in-javascript/</guid>
      <description>很多人箭頭函式寫久了卻不清楚和一般 function 的差異在哪，大概能記得的就是簡潔好寫這樣。 不過還是有些細節要注意，寫法上也有可以縮寫的方式。 // 普通寫法 const</description>
    </item>
    
    <item>
      <title>2 個月擁有 6000 用戶 Side project 這樣做（三）</title>
      <link>https://blog.niclin.tw/2019/09/18/start-your-side-project-beiyi-app-3/</link>
      <pubDate>Wed, 18 Sep 2019 13:55:31 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/09/18/start-your-side-project-beiyi-app-3/</guid>
      <description>在前面兩篇文章從零到有的 Side project 心路歷程，這篇內容主要是分享一些想法以及技術、人員、花費的資源細節。 本系列文章的篇幅主要會分成三部分 讓想法成為產</description>
    </item>
    
    <item>
      <title>2 個月擁有 6000 用戶 Side project 這樣做（二）</title>
      <link>https://blog.niclin.tw/2019/09/10/start-your-side-project-beiyi-app-2/</link>
      <pubDate>Tue, 10 Sep 2019 13:55:30 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/09/10/start-your-side-project-beiyi-app-2/</guid>
      <description>用戶不願意停留並非產品不好，也許是不夠好。 這個篇幅主要會說明，當產品第一版上線後要如何持續改進，獲取第二波用戶。 文章的篇幅主要會分成三部分 讓</description>
    </item>
    
    <item>
      <title>2 個月擁有 6000 用戶 Side project 這樣做（一）</title>
      <link>https://blog.niclin.tw/2019/09/03/start-your-side-project-beiyi-app-1/</link>
      <pubDate>Tue, 03 Sep 2019 01:33:32 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/09/03/start-your-side-project-beiyi-app-1/</guid>
      <description>很多人都說要寫 Side project 提升競爭力、增加作品，但是不是總迷惘，要如何開始呢？ 最近我在下班後的閒暇時間作了一個 Side project 並在上線 2 個月左右擁有了 6000 用戶，一</description>
    </item>
    
    <item>
      <title>如何讓自己成為失敗的軟體工程師</title>
      <link>https://blog.niclin.tw/2019/08/26/how-to-be-a-bad-developer/</link>
      <pubDate>Mon, 26 Aug 2019 01:16:56 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/26/how-to-be-a-bad-developer/</guid>
      <description>每個人都有自己成長的節奏，對於成功的定義也是因人而異，在我們邁向所謂「成功」之前，我們應該瞭解何謂「失敗」。 在窮查理的普通知識一書提到，查理</description>
    </item>
    
    <item>
      <title>如何在 Jenkins 上用 Docker 跑 Rails &#43; Rspec 做 CI</title>
      <link>https://blog.niclin.tw/2019/08/18/using-jenkins-and-docker-to-run-rails-rspec-ci/</link>
      <pubDate>Sun, 18 Aug 2019 18:24:56 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/18/using-jenkins-and-docker-to-run-rails-rspec-ci/</guid>
      <description>基本上要跑 Rails CI 通常有很多第三方服務搭 integrate 可以做到，但如果你遇到和我的環境類似，也許你可以考慮自己把 Rails 專案用 Docker 包起來後丟到 Jenkins 上去跑。 至於為什麼會</description>
    </item>
    
    <item>
      <title>如何用 Rack::Attack 阻擋 DDOS / 惡意流量</title>
      <link>https://blog.niclin.tw/2019/08/16/mitigate-ddos-using-rack-attack/</link>
      <pubDate>Fri, 16 Aug 2019 22:19:44 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/16/mitigate-ddos-using-rack-attack/</guid>
      <description>基本上開發 Rails 有在接 error monitoring（Airbrake、Rollbar）或是最基本有在看 Log 的應該都會知道網站一上線後，就會有些不尋常的流</description>
    </item>
    
    <item>
      <title>用 OpenSSL 自簽開發用 HTTPS SSL 憑證</title>
      <link>https://blog.niclin.tw/2019/08/16/creating-self-signed-certificate-using-openssl/</link>
      <pubDate>Fri, 16 Aug 2019 21:32:01 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/16/creating-self-signed-certificate-using-openssl/</guid>
      <description>有時開發用或是自己防火牆內要用 HTTPS，就會需要用到自己簽 SSL 的部分 通常我會在機器上的位置例如 /etc/certs/awesome.domain 來做，一組憑證就一個資料夾這樣。 首先，先建立</description>
    </item>
    
    <item>
      <title>以 OOP 的角度提升 Ruby code 質量</title>
      <link>https://blog.niclin.tw/2019/08/13/ruby-cohesion-and-coupling/</link>
      <pubDate>Tue, 13 Aug 2019 22:30:49 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/13/ruby-cohesion-and-coupling/</guid>
      <description>在 OOP 的角度下，兩個最基本的議題 Cohesion 內聚 Coupling 耦合 Cohesion 內聚: 指把功能需要用到的程式、資料都放在一個模組(function / class / package / library)，該</description>
    </item>
    
    <item>
      <title>不停機 migration 避免鎖表的幾種操作</title>
      <link>https://blog.niclin.tw/2019/08/10/migration-without-zero-downtime/</link>
      <pubDate>Sat, 10 Aug 2019 01:52:44 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/10/migration-without-zero-downtime/</guid>
      <description>.red { color: red; } .green { color: green; } .orange { color: orange; } 基本上在商業應用中，我們會盡可能的避免停機操作，試想光 CloudFlare 因為 bad deploy 當機幾分鐘至一個小時就會引發一連串的災難，在商</description>
    </item>
    
    <item>
      <title>為機器加上登入訊息，在 ubuntu 設置登入歡迎詞</title>
      <link>https://blog.niclin.tw/2019/08/08/ubuntu-welcome-banner/</link>
      <pubDate>Thu, 08 Aug 2019 01:04:21 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/08/ubuntu-welcome-banner/</guid>
      <description>此文章操作示範採用 Ubuntu 18.04.2 LTS 有時候機器多了，為了避免分不清楚 staging / production 會操作錯誤，所以有幾種作法 建立空白檔案，例如 IS_PRODUCTION 放在登入後的家目錄 改登入歡迎訊息</description>
    </item>
    
    <item>
      <title>Ruby Memoization 性能優化之記憶化</title>
      <link>https://blog.niclin.tw/2019/08/04/ruby-memoization/</link>
      <pubDate>Sun, 04 Aug 2019 22:34:44 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/04/ruby-memoization/</guid>
      <description>Memoization 是什麼 基本上是對「函數」的一種快取(Cache)，能夠在執行一次調用後將結果快取下來，避免在第二次調用時再次花費計算成本。 在 Ruby 內使用 memoization 的例</description>
    </item>
    
    <item>
      <title>淺談 SSH agent forwarding 和 proxy command 的安全風險與應用</title>
      <link>https://blog.niclin.tw/2019/08/03/ssh-agent-forwarding-and-proxy-command/</link>
      <pubDate>Sat, 03 Aug 2019 00:38:16 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/08/03/ssh-agent-forwarding-and-proxy-command/</guid>
      <description>如何使用 agent forwarding SSH agent forwarding 可以讓我們透過跳板機連上另一台伺服器時，省去把私鑰複製上 server 或是需要輸入密碼的功夫。 通常可以使用 ssh -A 來做轉發 將要 forwarding 的 key 加到清</description>
    </item>
    
    <item>
      <title>[Rails] Service / Library / Concern 的差異</title>
      <link>https://blog.niclin.tw/2019/07/30/rails-service-concern-library-different/</link>
      <pubDate>Tue, 30 Jul 2019 23:26:12 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/07/30/rails-service-concern-library-different/</guid>
      <description>專案到中後期長大時通常會開始整理 fat model，但 code 到底要怎麼重構才會比較好呢？ Refactor 時基本目標 解耦 易於測試 Service Object Service Object 是一個純粹的 Ruby Object，又</description>
    </item>
    
    <item>
      <title>Ruby conf Taiwan 2019 參與筆記</title>
      <link>https://blog.niclin.tw/2019/07/29/ruby-conf-tw-2019/</link>
      <pubDate>Mon, 29 Jul 2019 01:22:13 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/07/29/ruby-conf-tw-2019/</guid>
      <description>前言 上次在台灣聽 conf 應該是 2017 年的 Rails Pacific 了 今年鼓起勇氣投了個冷門的題目，大概就是 ruby 跟區塊鏈相關的風控資訊安全之類的題目，但結果沒上（明年會繼續努力</description>
    </item>
    
    <item>
      <title>避免過度的 Defensive Programming 防禦性程式設計</title>
      <link>https://blog.niclin.tw/2019/07/18/defensive-programming/</link>
      <pubDate>Thu, 18 Jul 2019 00:39:52 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/07/18/defensive-programming/</guid>
      <description>防禦性程式發生在程式設計師不相信輸入的參數，所以對其做檢查，有可能在呼叫者（caller）和被呼叫者（callee）都做了相同的檢查來避免出</description>
    </item>
    
    <item>
      <title>Rails 要用 Time.zone.now 還是 Time.now</title>
      <link>https://blog.niclin.tw/2019/06/27/rails_time_now_vs_time_zone_now/</link>
      <pubDate>Thu, 27 Jun 2019 23:04:33 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/06/27/rails_time_now_vs_time_zone_now/</guid>
      <description>我自己主觀喜歡用 Time.zone.now 原因 在 Rails best practice 裡有提到 把時區的設定放在 application layer 而不是機器上 Time.now 抓的是機器時間 Time.zone.now 抓的是 Rails 下設定的 config.time_zone 時區 如果機器沒設定好，不管是 development / production</description>
    </item>
    
    <item>
      <title>Rails i18n 小技巧總匯</title>
      <link>https://blog.niclin.tw/2019/05/05/rails-i18n-tips/</link>
      <pubDate>Sun, 05 May 2019 22:02:01 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/05/05/rails-i18n-tips/</guid>
      <description>公司專案基本上都會碰到 i18n，就算沒有要做多國語系，放 i18n 的好處還有之一就是改文案快。 i18n 這個看起來完全不難的東西，實際上碰到很多需求時會發現</description>
    </item>
    
    <item>
      <title>1:1 攪亂器，如何用 Ruby 做可逆推序號</title>
      <link>https://blog.niclin.tw/2019/05/03/ruby-integer-obfuscator/</link>
      <pubDate>Fri, 03 May 2019 16:10:01 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/05/03/ruby-integer-obfuscator/</guid>
      <description>需求場景：預計 token 最多為 7 位數 1:1 可逆推的攪亂器需要三個數字 最大值 MAX 任一質數 質數 與 MAX 互質的數 只有最後一個可以靠前兩個推算，所以一開始的任務先找出</description>
    </item>
    
    <item>
      <title>Rails 中的欄位及方法命名原則</title>
      <link>https://blog.niclin.tw/2019/05/03/some-naming-tips-for-ruby-rails/</link>
      <pubDate>Fri, 03 May 2019 11:55:04 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/05/03/some-naming-tips-for-ruby-rails/</guid>
      <description>Computer Science 中最難的兩件事情 cache invalidation naming things 不過 Ruby / Rails 本身就有一些基本的慣例及約定在，只要熟悉這個規則通常都能夠寫出易懂易維護的程式碼。 就像我們呼叫 created_at 欄位時</description>
    </item>
    
    <item>
      <title>[Rails] 用 puma-dev 作為本地開發伺服器 (支援 https 自簽憑證)</title>
      <link>https://blog.niclin.tw/2019/05/02/puma-dev-rails-development/</link>
      <pubDate>Thu, 02 May 2019 17:18:44 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/05/02/puma-dev-rails-development/</guid>
      <description>一次要開發多個專案時，用 puma-dev 節省掉我很多時間，網路上的文章並沒有很齊全並簡單的教你如何使用這些常用的眉角，所以這篇算是 Puma-dev 全攻略，從安裝、重啟、</description>
    </item>
    
    <item>
      <title>我的中高階 Rails 工作面試心得分享</title>
      <link>https://blog.niclin.tw/2019/04/29/%E6%88%91%E7%9A%84%E4%B8%AD%E9%AB%98%E9%9A%8E-rails-%E5%B7%A5%E4%BD%9C%E9%9D%A2%E8%A9%A6%E5%BF%83%E5%BE%97%E5%88%86%E4%BA%AB/</link>
      <pubDate>Mon, 29 Apr 2019 00:00:04 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/04/29/%E6%88%91%E7%9A%84%E4%B8%AD%E9%AB%98%E9%9A%8E-rails-%E5%B7%A5%E4%BD%9C%E9%9D%A2%E8%A9%A6%E5%BF%83%E5%BE%97%E5%88%86%E4%BA%AB/</guid>
      <description>前言 這篇文章的面試時間 2018 年 10 月至 2018 年 12 月 在此之前還有我的成長記錄，前面兩次的面試經驗，依序排列從新鮮人，到有點經驗。 一個新鮮人找尋Rails</description>
    </item>
    
    <item>
      <title>讀書心得 - 「一流的人如何保持顛峰」</title>
      <link>https://blog.niclin.tw/2019/04/27/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E4%B8%80%E6%B5%81%E7%9A%84%E4%BA%BA%E5%A6%82%E4%BD%95%E4%BF%9D%E6%8C%81%E9%A1%9B%E5%B3%B0/</link>
      <pubDate>Sat, 27 Apr 2019 23:13:41 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/04/27/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E4%B8%80%E6%B5%81%E7%9A%84%E4%BA%BA%E5%A6%82%E4%BD%95%E4%BF%9D%E6%8C%81%E9%A1%9B%E5%B3%B0/</guid>
      <description>大腦其實很懶也很容易放棄 心理學家指出，人類思維分為兩種 系統一：迅速的自動思考，由本能和直覺驅動 系統二：深思熟慮的分析，處理費神的思考活動 系統</description>
    </item>
    
    <item>
      <title>讀書心得 - 「窮查理的普通常識」</title>
      <link>https://blog.niclin.tw/2019/04/25/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E7%AA%AE%E6%9F%A5%E7%90%86%E7%9A%84%E6%99%AE%E9%80%9A%E5%B8%B8%E8%AD%98/</link>
      <pubDate>Thu, 25 Apr 2019 00:36:22 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/04/25/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E7%AA%AE%E6%9F%A5%E7%90%86%E7%9A%84%E6%99%AE%E9%80%9A%E5%B8%B8%E8%AD%98/</guid>
      <description>鐵鎚人效應 鐵鎚人效應，當一個人手裡拿著鐵鎚，會認為全世界像是一根釘子 我們可能擁有一個專業就像是手裡拿著一項工具，可以用這個工具解決問題，但單</description>
    </item>
    
    <item>
      <title>將 Rails 專案從手動部屬遷移使用 Capistrano 自動化部屬</title>
      <link>https://blog.niclin.tw/2019/04/22/%E5%B0%87-rails-%E5%B0%88%E6%A1%88%E5%BE%9E%E6%89%8B%E5%8B%95%E9%83%A8%E5%B1%AC%E9%81%B7%E7%A7%BB%E4%BD%BF%E7%94%A8-capistrano-%E8%87%AA%E5%8B%95%E5%8C%96%E9%83%A8%E5%B1%AC/</link>
      <pubDate>Mon, 22 Apr 2019 23:07:22 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/04/22/%E5%B0%87-rails-%E5%B0%88%E6%A1%88%E5%BE%9E%E6%89%8B%E5%8B%95%E9%83%A8%E5%B1%AC%E9%81%B7%E7%A7%BB%E4%BD%BF%E7%94%A8-capistrano-%E8%87%AA%E5%8B%95%E5%8C%96%E9%83%A8%E5%B1%AC/</guid>
      <description>情境 舊專案沒做的，就把他做起來吧！ 一個 Rails 專案，有三台機器，每次部屬分別要手動部屬，但其實這個可以做自動化 三台機器分別是不同的權限使用但都吃同</description>
    </item>
    
    <item>
      <title>工程師提昇自己的教學和簡報技術的方法</title>
      <link>https://blog.niclin.tw/2019/04/21/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E6%8F%90%E6%98%87%E8%87%AA%E5%B7%B1%E7%9A%84%E6%95%99%E5%AD%B8%E5%92%8C%E7%B0%A1%E5%A0%B1%E6%8A%80%E8%A1%93%E7%9A%84%E6%96%B9%E6%B3%95/</link>
      <pubDate>Sun, 21 Apr 2019 01:33:41 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/04/21/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E6%8F%90%E6%98%87%E8%87%AA%E5%B7%B1%E7%9A%84%E6%95%99%E5%AD%B8%E5%92%8C%E7%B0%A1%E5%A0%B1%E6%8A%80%E8%A1%93%E7%9A%84%E6%96%B9%E6%B3%95/</guid>
      <description>前言 你有常常聽了一場演講/簡報結果沒什麼記憶點嗎？ 講的好不好？好在哪裡？學會了什麼或是獲得什麼知識點？ 不是簡報沒重點就是講師只會一直講，然而</description>
    </item>
    
    <item>
      <title>[筆記] Rails 3.2 升級 Rails 6.beta 經驗分享</title>
      <link>https://blog.niclin.tw/2019/04/12/%E7%AD%86%E8%A8%98-rails-3.2-%E5%8D%87%E7%B4%9A-rails-6.beta-%E7%B6%93%E9%A9%97%E5%88%86%E4%BA%AB/</link>
      <pubDate>Fri, 12 Apr 2019 00:44:31 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/04/12/%E7%AD%86%E8%A8%98-rails-3.2-%E5%8D%87%E7%B4%9A-rails-6.beta-%E7%B6%93%E9%A9%97%E5%88%86%E4%BA%AB/</guid>
      <description>講者：小蟹 女人迷網站在年前經歷了 Rails 三個版號的大躍進，本次將由工程師小蟹跟大家做升級的經驗分享，包含： 如何查找升級問題 gem 不相容時的 Monkey patch 拔除 Asset pipeline</description>
    </item>
    
    <item>
      <title>Grape on Rails 實戰 101</title>
      <link>https://blog.niclin.tw/2019/04/06/grape-on-rails-%E5%AF%A6%E6%88%B0-101/</link>
      <pubDate>Sat, 06 Apr 2019 19:14:20 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/04/06/grape-on-rails-%E5%AF%A6%E6%88%B0-101/</guid>
      <description>趁著清明連假期間，把這本 Grape on Rails 實戰 101 小書寫完了，我自己先修過大部分的部分，剩下的想說發佈之後等被鞭 XD 適合誰呢？ 湊 Rails 作品的 Junior Developer 初中階對 API 較少經</description>
    </item>
    
    <item>
      <title>Class method 氾濫帶來什麼問題</title>
      <link>https://blog.niclin.tw/2019/03/31/class-method-%E6%B0%BE%E6%BF%AB%E5%B8%B6%E4%BE%86%E4%BB%80%E9%BA%BC%E5%95%8F%E9%A1%8C/</link>
      <pubDate>Sun, 31 Mar 2019 01:52:51 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/31/class-method-%E6%B0%BE%E6%BF%AB%E5%B8%B6%E4%BE%86%E4%BB%80%E9%BA%BC%E5%95%8F%E9%A1%8C/</guid>
      <description>因為 Class method 是 global method 所以可以到處被使用 就像 User.all 這樣的方法可以在 model, controller, view 都被使用 Class method 有什麼問題？ 代表你可以隨處使用而不必在乎前後因果 class User def self.email_to(id, email) user = User.find(id) Emailer.send(email, &amp;quot;Hello,</description>
    </item>
    
    <item>
      <title>Rspec 中 let / let!(驚嘆號) / Instance variables / subject 的用法與差異</title>
      <link>https://blog.niclin.tw/2019/03/30/rspec-%E4%B8%AD-let-/-let%E9%A9%9A%E5%98%86%E8%99%9F-/-instance-variables-/-subject-%E7%9A%84%E7%94%A8%E6%B3%95%E8%88%87%E5%B7%AE%E7%95%B0/</link>
      <pubDate>Sat, 30 Mar 2019 02:21:52 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/30/rspec-%E4%B8%AD-let-/-let%E9%A9%9A%E5%98%86%E8%99%9F-/-instance-variables-/-subject-%E7%9A%84%E7%94%A8%E6%B3%95%E8%88%87%E5%B7%AE%E7%95%B0/</guid>
      <description>通常我們在寫測試的時候，有遇到重複需要的參數，會把他拉到 let 出來寫，避免每個 example 寫了一堆事前的參數準備。 那麼 let 和 let! 有什麼區別呢？ Instance variables 在測試裡又可</description>
    </item>
    
    <item>
      <title>RDBMS 課程心得與筆記</title>
      <link>https://blog.niclin.tw/2019/03/23/rdbms-%E8%AA%B2%E7%A8%8B%E5%BF%83%E5%BE%97%E8%88%87%E7%AD%86%E8%A8%98/</link>
      <pubDate>Sat, 23 Mar 2019 23:55:03 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/23/rdbms-%E8%AA%B2%E7%A8%8B%E5%BF%83%E5%BE%97%E8%88%87%E7%AD%86%E8%A8%98/</guid>
      <description>此篇為上完 Triton 的 RDBMS 淺談課程的筆記與心得 選擇 RDBMS 而非 NoSQL 的理由 中小型系統用 RDBMS 已經足夠，原因包括如下 歷史悠久，有 30 年的歷史，並有龐大的社群 error message 丟 stackoverflow 幾乎</description>
    </item>
    
    <item>
      <title>常用的 Rails 開發規範</title>
      <link>https://blog.niclin.tw/2019/03/23/%E5%B8%B8%E7%94%A8%E7%9A%84-rails-%E9%96%8B%E7%99%BC%E8%A6%8F%E7%AF%84/</link>
      <pubDate>Sat, 23 Mar 2019 01:41:10 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/23/%E5%B8%B8%E7%94%A8%E7%9A%84-rails-%E9%96%8B%E7%99%BC%E8%A6%8F%E7%AF%84/</guid>
      <description>好用的團隊開發規範，針對現在新版的 Rails 做了一些個人主觀的小修正，筆記下來，順便放一份在 gist 上。 About Ruby Syntax 編輯器設定 soft tab (space=2)，以 2 格空白</description>
    </item>
    
    <item>
      <title>Rest-Client 如何做 Basic Authentication 驗證</title>
      <link>https://blog.niclin.tw/2019/03/21/rest-client-%E5%A6%82%E4%BD%95%E5%81%9A-basic-authentication-%E9%A9%97%E8%AD%89/</link>
      <pubDate>Thu, 21 Mar 2019 12:35:14 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/21/rest-client-%E5%A6%82%E4%BD%95%E5%81%9A-basic-authentication-%E9%A9%97%E8%AD%89/</guid>
      <description>一個很有趣的 trick 如果我要傳 Basic Auth 給 server 的話，需要把 user/password 加到 authorization 上。 以 postman 來說是這樣 但在這個情況下不要直接用 RestClient.get post/ put # 這樣做是「無效」的: RestClient.get url, user: &#39;username&#39;, password: &#39;secret&#39; 請使用</description>
    </item>
    
    <item>
      <title>用 ssh config 管理多台機器</title>
      <link>https://blog.niclin.tw/2019/03/17/%E7%94%A8-ssh-config-%E7%AE%A1%E7%90%86%E5%A4%9A%E5%8F%B0%E6%A9%9F%E5%99%A8/</link>
      <pubDate>Sun, 17 Mar 2019 02:44:39 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/17/%E7%94%A8-ssh-config-%E7%AE%A1%E7%90%86%E5%A4%9A%E5%8F%B0%E6%A9%9F%E5%99%A8/</guid>
      <description>如果你每台機器要吃不同的 rsa key，你可能在連線的時候還要帶入 pem 檔路徑。 ssh -i key.pem root@192.168.1.1 或是說你有非常多的機器要管理 # 每次都搞不清楚哪台是哪台，可不可</description>
    </item>
    
    <item>
      <title>[Rails] 實做批次操作的小技巧</title>
      <link>https://blog.niclin.tw/2019/03/17/rails-%E5%AF%A6%E5%81%9A%E6%89%B9%E6%AC%A1%E6%93%8D%E4%BD%9C%E7%9A%84%E5%B0%8F%E6%8A%80%E5%B7%A7/</link>
      <pubDate>Sun, 17 Mar 2019 02:19:56 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/17/rails-%E5%AF%A6%E5%81%9A%E6%89%B9%E6%AC%A1%E6%93%8D%E4%BD%9C%E7%9A%84%E5%B0%8F%E6%8A%80%E5%B7%A7/</guid>
      <description>有時候會有批次操作、刪除的需求，通常的作法都是在每個資料前面放一個 check box，然後送出時收集這些 id 做批次的操作。 舉例來說 你的 view 裡面可能是這樣 &amp;lt;%=</description>
    </item>
    
    <item>
      <title>[Rails] 何為 tld_lebgth？</title>
      <link>https://blog.niclin.tw/2019/03/15/rails-%E4%BD%95%E7%82%BA-tld_lebgth/</link>
      <pubDate>Fri, 15 Mar 2019 20:50:19 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/15/rails-%E4%BD%95%E7%82%BA-tld_lebgth/</guid>
      <description>在 Rails 專案中想設定跨域 domain，像是部落格 CMS 系統，能給每個用戶 subdomain 當作專屬網址。 這樣在設定 session 時，就需要注意能夠讓所有子網域都共用，否則會造成</description>
    </item>
    
    <item>
      <title>遵循 Semantic Versioning 軟體開發語意化版本管理</title>
      <link>https://blog.niclin.tw/2019/03/14/%E9%81%B5%E5%BE%AA-semantic-versioning-%E8%BB%9F%E9%AB%94%E9%96%8B%E7%99%BC%E8%AA%9E%E6%84%8F%E5%8C%96%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86/</link>
      <pubDate>Thu, 14 Mar 2019 00:02:42 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/14/%E9%81%B5%E5%BE%AA-semantic-versioning-%E8%BB%9F%E9%AB%94%E9%96%8B%E7%99%BC%E8%AA%9E%E6%84%8F%E5%8C%96%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86/</guid>
      <description>開發 API / App 時會需要版本管理，最基本的需求就是檢測當前的版本與目前最新的版本是否有差距？ 是否要求用戶立即更新，或是不更新也沒關係？ 這時候就要對</description>
    </item>
    
    <item>
      <title>請直接在 MySQL 裡面直接用 utf8mb4 取代 utf8 </title>
      <link>https://blog.niclin.tw/2019/03/11/%E8%AB%8B%E7%9B%B4%E6%8E%A5%E5%9C%A8-mysql-%E8%A3%A1%E9%9D%A2%E7%9B%B4%E6%8E%A5%E7%94%A8-utf8mb4-%E5%8F%96%E4%BB%A3-utf8/</link>
      <pubDate>Mon, 11 Mar 2019 21:52:42 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/11/%E8%AB%8B%E7%9B%B4%E6%8E%A5%E5%9C%A8-mysql-%E8%A3%A1%E9%9D%A2%E7%9B%B4%E6%8E%A5%E7%94%A8-utf8mb4-%E5%8F%96%E4%BB%A3-utf8/</guid>
      <description>承上篇提到的 utf8 問題，今天就來說明一下 utf8 和 utf8mb4 其中的差異與淵源 有一句話是這樣講的 MySQL 中的 utf8 並不是真正的 utf8 出處就不可考了，之前上 DK 的課也有聽到這一個</description>
    </item>
    
    <item>
      <title>如何解決在 awesome print 中遇到 ActionController::Parameters unable to convert unpermitted</title>
      <link>https://blog.niclin.tw/2019/03/10/%E5%A6%82%E4%BD%95%E8%A7%A3%E6%B1%BA%E5%9C%A8-awesome-print-%E4%B8%AD%E9%81%87%E5%88%B0-actioncontrollerparameters-unable-to-convert-unpermitted/</link>
      <pubDate>Sun, 10 Mar 2019 22:41:29 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/10/%E5%A6%82%E4%BD%95%E8%A7%A3%E6%B1%BA%E5%9C%A8-awesome-print-%E4%B8%AD%E9%81%87%E5%88%B0-actioncontrollerparameters-unable-to-convert-unpermitted/</guid>
      <description>raise unpermitted parameters error when try to awesome print ActionController::Parameters object 最近在自己的小專案裡面遇到這個問題，一下斷點看 params 就 raise error 給我。 會遇到這種情況的步驟是 你用了 Rails 5.1 以上的版本 你裝了 awesome_print 相關的套</description>
    </item>
    
    <item>
      <title>如何在 Mac 上升級 PostgreSQL 並遷移資料</title>
      <link>https://blog.niclin.tw/2019/03/03/%E5%A6%82%E4%BD%95%E5%9C%A8-mac-%E4%B8%8A%E5%8D%87%E7%B4%9A-postgresql-%E4%B8%A6%E9%81%B7%E7%A7%BB%E8%B3%87%E6%96%99/</link>
      <pubDate>Sun, 03 Mar 2019 02:51:05 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/03/03/%E5%A6%82%E4%BD%95%E5%9C%A8-mac-%E4%B8%8A%E5%8D%87%E7%B4%9A-postgresql-%E4%B8%A6%E9%81%B7%E7%A7%BB%E8%B3%87%E6%96%99/</guid>
      <description>今天寫 side project 時要啟動資料庫時遇到 postgres 版本問題 waiting for server to start....2019-03-02 12:45:08.851 EST [3310] FATAL: database files are incompatible with server 2019-03-02 12:45:08.851 EST [3310] DETAIL: The data directory was initialized by PostgreSQL version 10, which is not compatible with this version 11.2. stopped waiting pg_ctl: could not start server Examine the log output. 解法</description>
    </item>
    
    <item>
      <title>如何解決 Mysql2::Error: Incorrect string value</title>
      <link>https://blog.niclin.tw/2019/02/26/%E5%A6%82%E4%BD%95%E8%A7%A3%E6%B1%BA-mysql2error-incorrect-string-value/</link>
      <pubDate>Tue, 26 Feb 2019 23:08:22 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/02/26/%E5%A6%82%E4%BD%95%E8%A7%A3%E6%B1%BA-mysql2error-incorrect-string-value/</guid>
      <description>在 mysql 裡面要注意 character 的設定，否則會發生儲存錯誤的情況發生，今天在本機開發時一切正常，上 production 跑完 migrate 後新增資料就炸了 Mysql Incorrect string value &#39;\xE7\xA8\x8B\xE5\xBA\x8F...&#39; for column &#39;course&#39; at row 1 滿頭問號，看</description>
    </item>
    
    <item>
      <title>讀書心得 - 「信任因子：信任如何影響大腦運作、激勵員工、達到組織目標」</title>
      <link>https://blog.niclin.tw/2019/02/26/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E4%BF%A1%E4%BB%BB%E5%9B%A0%E5%AD%90%E4%BF%A1%E4%BB%BB%E5%A6%82%E4%BD%95%E5%BD%B1%E9%9F%BF%E5%A4%A7%E8%85%A6%E9%81%8B%E4%BD%9C%E6%BF%80%E5%8B%B5%E5%93%A1%E5%B7%A5%E9%81%94%E5%88%B0%E7%B5%84%E7%B9%94%E7%9B%AE%E6%A8%99/</link>
      <pubDate>Tue, 26 Feb 2019 19:45:23 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/02/26/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E4%BF%A1%E4%BB%BB%E5%9B%A0%E5%AD%90%E4%BF%A1%E4%BB%BB%E5%A6%82%E4%BD%95%E5%BD%B1%E9%9F%BF%E5%A4%A7%E8%85%A6%E9%81%8B%E4%BD%9C%E6%BF%80%E5%8B%B5%E5%93%A1%E5%B7%A5%E9%81%94%E5%88%B0%E7%B5%84%E7%B9%94%E7%9B%AE%E6%A8%99/</guid>
      <description>看書動機 當初會想看這本書是想到了，自己當了員工這麼久，雖也有帶人的經驗，除了想知道怎麼讓自己成為更好的管理者，另一部份也想知道怎麼做才會招致</description>
    </item>
    
    <item>
      <title>我是如何寫部落格筆記的</title>
      <link>https://blog.niclin.tw/2019/02/17/%E6%88%91%E6%98%AF%E5%A6%82%E4%BD%95%E5%AF%AB%E9%83%A8%E8%90%BD%E6%A0%BC%E7%AD%86%E8%A8%98%E7%9A%84/</link>
      <pubDate>Sun, 17 Feb 2019 00:07:35 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/02/17/%E6%88%91%E6%98%AF%E5%A6%82%E4%BD%95%E5%AF%AB%E9%83%A8%E8%90%BD%E6%A0%BC%E7%AD%86%E8%A8%98%E7%9A%84/</guid>
      <description>這篇記錄我平常是如何隨手記錄筆記，並將其展開為完整的部落格文章 其內容包含 工作遇到的 自己玩 side project 發現的 亂逛網站覺得有趣的 看書心得 設備 MacBookPro 2013 256G iPad Pro 10.5&amp;rsquo;inch</description>
    </item>
    
    <item>
      <title>讀書心得 - 「先問，為什麼？：顛覆慣性思考的黃金圈理論，啟動你的感召領導力」</title>
      <link>https://blog.niclin.tw/2019/02/13/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E5%85%88%E5%95%8F%E7%82%BA%E4%BB%80%E9%BA%BC%E9%A1%9B%E8%A6%86%E6%85%A3%E6%80%A7%E6%80%9D%E8%80%83%E7%9A%84%E9%BB%83%E9%87%91%E5%9C%88%E7%90%86%E8%AB%96%E5%95%9F%E5%8B%95%E4%BD%A0%E7%9A%84%E6%84%9F%E5%8F%AC%E9%A0%98%E5%B0%8E%E5%8A%9B/</link>
      <pubDate>Wed, 13 Feb 2019 23:27:12 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/02/13/%E8%AE%80%E6%9B%B8%E5%BF%83%E5%BE%97---%E5%85%88%E5%95%8F%E7%82%BA%E4%BB%80%E9%BA%BC%E9%A1%9B%E8%A6%86%E6%85%A3%E6%80%A7%E6%80%9D%E8%80%83%E7%9A%84%E9%BB%83%E9%87%91%E5%9C%88%E7%90%86%E8%AB%96%E5%95%9F%E5%8B%95%E4%BD%A0%E7%9A%84%E6%84%9F%E5%8F%AC%E9%A0%98%E5%B0%8E%E5%8A%9B/</guid>
      <description>看書動機 會看這本書主要是想知道，什麼樣才是成功的領導者，想知道結合自身過往的帶人經驗，自己哪裡做的好，哪裡還需要改進？ 也因為喜歡 simon sinek 的一些想</description>
    </item>
    
    <item>
      <title>[Rails] 解決 Reset Password 帶來的 token 洩漏問題</title>
      <link>https://blog.niclin.tw/2019/02/01/rails-%E8%A7%A3%E6%B1%BA-reset-password-%E5%B8%B6%E4%BE%86%E7%9A%84-token-%E6%B4%A9%E6%BC%8F%E5%95%8F%E9%A1%8C/</link>
      <pubDate>Fri, 01 Feb 2019 20:54:00 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/02/01/rails-%E8%A7%A3%E6%B1%BA-reset-password-%E5%B8%B6%E4%BE%86%E7%9A%84-token-%E6%B4%A9%E6%BC%8F%E5%95%8F%E9%A1%8C/</guid>
      <description>密碼重置是一個很常見的功能，通常都是發一個帶有 token 的連結來讓用戶把密碼重置，也因為有帶了 token，我們系統才可以知道「現在在重置密碼的人是誰</description>
    </item>
    
    <item>
      <title>我的軟體工程師生涯：如何挑選適合你的公司</title>
      <link>https://blog.niclin.tw/2019/01/13/%E6%88%91%E7%9A%84%E8%BB%9F%E9%AB%94%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%94%9F%E6%B6%AF%E5%A6%82%E4%BD%95%E6%8C%91%E9%81%B8%E9%81%A9%E5%90%88%E4%BD%A0%E7%9A%84%E5%85%AC%E5%8F%B8/</link>
      <pubDate>Sun, 13 Jan 2019 22:15:43 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/01/13/%E6%88%91%E7%9A%84%E8%BB%9F%E9%AB%94%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%94%9F%E6%B6%AF%E5%A6%82%E4%BD%95%E6%8C%91%E9%81%B8%E9%81%A9%E5%90%88%E4%BD%A0%E7%9A%84%E5%85%AC%E5%8F%B8/</guid>
      <description>寫這篇文章時候的狀況 網站開發經驗約三年 待過三間公司，主要熟悉開發框架為 Ruby on Rails，同時寫過 React/Vue，以及一些 DB tuning 經驗 有帶領新人</description>
    </item>
    
    <item>
      <title>Rails 中的 delegate 用法</title>
      <link>https://blog.niclin.tw/2019/01/13/rails-%E4%B8%AD%E7%9A%84-delegate-%E7%94%A8%E6%B3%95/</link>
      <pubDate>Sun, 13 Jan 2019 21:38:11 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/01/13/rails-%E4%B8%AD%E7%9A%84-delegate-%E7%94%A8%E6%B3%95/</guid>
      <description>Delegate 其實就是可以讓這個 class 用另一個 class 的 method，來實現到更語意化的寫法。 假設實做徽章系統，每個使用者(User)可以有多個徽章(Badge)</description>
    </item>
    
    <item>
      <title>淺述 SSR SPA 優缺點</title>
      <link>https://blog.niclin.tw/2019/01/06/%E6%B7%BA%E8%BF%B0-ssr-spa-%E5%84%AA%E7%BC%BA%E9%BB%9E/</link>
      <pubDate>Sun, 06 Jan 2019 18:13:30 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/01/06/%E6%B7%BA%E8%BF%B0-ssr-spa-%E5%84%AA%E7%BC%BA%E9%BB%9E/</guid>
      <description>SSR(Server Side Rendering) 伺服器端渲染 以往的應用架構幾乎都是從 Server side 渲染，由伺服器端的 CPU 收到請求後，解析完整的 HTML 返回到使用者接收端，然後呈現網頁。 這樣的作法不論點</description>
    </item>
    
    <item>
      <title>Rails 非同步工作請用 Global ID</title>
      <link>https://blog.niclin.tw/2019/01/06/rails-%E9%9D%9E%E5%90%8C%E6%AD%A5%E5%B7%A5%E4%BD%9C%E8%AB%8B%E7%94%A8-global-id/</link>
      <pubDate>Sun, 06 Jan 2019 17:01:48 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/01/06/rails-%E9%9D%9E%E5%90%8C%E6%AD%A5%E5%B7%A5%E4%BD%9C%E8%AB%8B%E7%94%A8-global-id/</guid>
      <description>非同步的工作是在另一個 process 運作，所以從 Rails 這端指派工作時，需要避免參數被 serialize 的動作，以避免在 background job 中的 process 無法順利 deserialize 回來。 因為途中如果 code 有變動，或是有</description>
    </item>
    
    <item>
      <title>[React] Class Component 傳遞 props 的 2 種方式</title>
      <link>https://blog.niclin.tw/2019/01/06/react-class-component-%E5%82%B3%E9%81%9E-props-%E7%9A%84-2-%E7%A8%AE%E6%96%B9%E5%BC%8F/</link>
      <pubDate>Sun, 06 Jan 2019 16:50:45 +0800</pubDate>
      
      <guid>https://blog.niclin.tw/2019/01/06/react-class-component-%E5%82%B3%E9%81%9E-props-%E7%9A%84-2-%E7%A8%AE%E6%96%B9%E5%BC%8F/</guid>
      <description>當 React 元件是一個 class component 時，被呼叫誕生的第一個方法會呼叫 constructor，如果是 functional component 是不會有這個方法的。 class MyComponent extends Component { constructor(props) { super(props); this.state = { counter: 0, }; } } 這邊</description>
    </item>
    
    <item>
      <title>好用的隱私權政策 URL 自動生成</title>
      <link>https://blog.niclin.tw/2019/01/05/%E5%A5%BD%E7%94%A8%E7%9A%84%E9%9A%B1%E7%A7%81%E6%AC%8A%E6%94%BF%E7%AD%96-url-%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90/</link>
      <pubDate>Sat, 05 Jan 2019 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2019/01/05/%E5%A5%BD%E7%94%A8%E7%9A%84%E9%9A%B1%E7%A7%81%E6%AC%8A%E6%94%BF%E7%AD%96-url-%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90/</guid>
      <description>2018 年，很多應用程式上架或是串接服務時，都會要求提供隱私權政策的網址 像是 apple 上架 Facebook 新建應用程式（串登入、SDK） 目前都會需要，由於這種事情如果你</description>
    </item>
    
    <item>
      <title>Rails 5.1 之後的 tag helper</title>
      <link>https://blog.niclin.tw/2018/12/26/rails-5.1-%E4%B9%8B%E5%BE%8C%E7%9A%84-tag-helper/</link>
      <pubDate>Wed, 26 Dec 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/12/26/rails-5.1-%E4%B9%8B%E5%BE%8C%E7%9A%84-tag-helper/</guid>
      <description>用 rails 生 HTML 以往都是用 content tag content_tag(:div, , class: &amp;quot;home&amp;quot;) &amp;lt;div class=&amp;quot;home&amp;quot;&amp;gt; &amp;lt;/div&amp;gt; 現在新的寫法直接用 tag 就可以了 &amp;lt;%= tag.div class: &#39;home&#39; do %&amp;gt; Welcome to Home! &amp;lt;% end %&amp;gt; &amp;lt;div class=&amp;quot;home&amp;quot;&amp;gt; Welcome to Home! &amp;lt;/div&amp;gt; 不過目前 content_tag 和 tag 都還在共存的，未來不確定會</description>
    </item>
    
    <item>
      <title>Rails 5.2 Encrypted Credentials</title>
      <link>https://blog.niclin.tw/2018/12/13/rails-5.2-encrypted-credentials/</link>
      <pubDate>Thu, 13 Dec 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/12/13/rails-5.2-encrypted-credentials/</guid>
      <description>雖然設置環境變數，都用 dotenv 很習慣了，不過 Rails 5.1 開始有針對這個問題討論一些解法，一開始拆兩支檔案 secrets.yml 和secrets.yml.enc 引起一些混亂 在 5.2</description>
    </item>
    
    <item>
      <title>最近面試被給的建議和書單</title>
      <link>https://blog.niclin.tw/2018/12/09/%E6%9C%80%E8%BF%91%E9%9D%A2%E8%A9%A6%E8%A2%AB%E7%B5%A6%E7%9A%84%E5%BB%BA%E8%AD%B0%E5%92%8C%E6%9B%B8%E5%96%AE/</link>
      <pubDate>Sun, 09 Dec 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/12/09/%E6%9C%80%E8%BF%91%E9%9D%A2%E8%A9%A6%E8%A2%AB%E7%B5%A6%E7%9A%84%E5%BB%BA%E8%AD%B0%E5%92%8C%E6%9B%B8%E5%96%AE/</guid>
      <description>Incubit: suggestion: - Read POODR (https://www.poodr.com/) for object-oriented concept - Read Everyday Rails Testing with RSpec (https://leanpub.com/everydayrailsrspec) for the testing concept - learn more web knowledge by getting hands dirty AmazingTalker: 設計模式之禪(第2版) 無瑕的程式碼－整潔的軟體設計與架構篇 單元測試的藝術 演算法</description>
    </item>
    
    <item>
      <title>一般架構需要用到 K8S 嗎</title>
      <link>https://blog.niclin.tw/2018/12/08/%E4%B8%80%E8%88%AC%E6%9E%B6%E6%A7%8B%E9%9C%80%E8%A6%81%E7%94%A8%E5%88%B0-k8s-%E5%97%8E/</link>
      <pubDate>Sat, 08 Dec 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/12/08/%E4%B8%80%E8%88%AC%E6%9E%B6%E6%A7%8B%E9%9C%80%E8%A6%81%E7%94%A8%E5%88%B0-k8s-%E5%97%8E/</guid>
      <description>基本架構 一般服務通常都是 1 db + 多 web app + load balance 通常稍微有一點經驗的 devops 都可以用 aws 組起來維護，非常適用新創公司。 大規模架構 然而當業務開始驅動技術時，</description>
    </item>
    
    <item>
      <title>透過 commit SHA 找 github Pull request</title>
      <link>https://blog.niclin.tw/2018/12/07/%E9%80%8F%E9%81%8E-commit-sha-%E6%89%BE-github-pull-request/</link>
      <pubDate>Fri, 07 Dec 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/12/07/%E9%80%8F%E9%81%8E-commit-sha-%E6%89%BE-github-pull-request/</guid>
      <description>我個人是把 function 放在 .zshrc，可以參考我的 dotfile 如果 bash 要用的話要改一下，因為這邊的 git_current_branch 是 zsh 內建的 alias GITHUB_UPSTREAM 要自己設定，這邊用 https://github.com/rails/rails 做範例 網址中的第一個 rails 就是</description>
    </item>
    
    <item>
      <title>從零搭建，如何讓 Rails 跑在 Kubernetes(k8s)（二）</title>
      <link>https://blog.niclin.tw/2018/11/30/%E5%BE%9E%E9%9B%B6%E6%90%AD%E5%BB%BA%E5%A6%82%E4%BD%95%E8%AE%93-rails-%E8%B7%91%E5%9C%A8-kubernetesk8s%E4%BA%8C/</link>
      <pubDate>Fri, 30 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/30/%E5%BE%9E%E9%9B%B6%E6%90%AD%E5%BB%BA%E5%A6%82%E4%BD%95%E8%AE%93-rails-%E8%B7%91%E5%9C%A8-kubernetesk8s%E4%BA%8C/</guid>
      <description>這篇會將上一篇容器化的 Rails App 放到 k8s 裡面運行。 請參考上一篇 從零搭建，如何讓 Rails 跑在 Kubernetes(k8s)（一） 開發前準備 Kubectl Minikube 懶人安裝指令：</description>
    </item>
    
    <item>
      <title>從零搭建，如何讓 Rails 跑在 Kubernetes(k8s)（一）</title>
      <link>https://blog.niclin.tw/2018/11/29/%E5%BE%9E%E9%9B%B6%E6%90%AD%E5%BB%BA%E5%A6%82%E4%BD%95%E8%AE%93-rails-%E8%B7%91%E5%9C%A8-kubernetesk8s%E4%B8%80/</link>
      <pubDate>Thu, 29 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/29/%E5%BE%9E%E9%9B%B6%E6%90%AD%E5%BB%BA%E5%A6%82%E4%BD%95%E8%AE%93-rails-%E8%B7%91%E5%9C%A8-kubernetesk8s%E4%B8%80/</guid>
      <description>Kubernetes(k8s) 是一個由 Google open source 的自動部屬、擴展、管理都容器化的系統。 詳細介紹這邊就不多說了，基本上搜一下都能夠有個脈絡，這篇主要會是講如何在自己的本機掛起</description>
    </item>
    
    <item>
      <title>if/unless 寫作不要用多重否定句啊</title>
      <link>https://blog.niclin.tw/2018/11/26/if/unless-%E5%AF%AB%E4%BD%9C%E4%B8%8D%E8%A6%81%E7%94%A8%E5%A4%9A%E9%87%8D%E5%90%A6%E5%AE%9A%E5%8F%A5%E5%95%8A/</link>
      <pubDate>Mon, 26 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/26/if/unless-%E5%AF%AB%E4%BD%9C%E4%B8%8D%E8%A6%81%E7%94%A8%E5%A4%9A%E9%87%8D%E5%90%A6%E5%AE%9A%E5%8F%A5%E5%95%8A/</guid>
      <description>多重否定句真的很煩啊！ 雖然 ruby 有 unless 可以用，就可以不用寫 if not 不過可以用 if ，就避免用 unless ，除非 unless 較符合原意。 unless content.blank? # .... end 畢竟 unless not 還是比較難在第一時間讀</description>
    </item>
    
    <item>
      <title>盡可能的減少使用具感染性的 Try 或是 lonely/safe navigation operator</title>
      <link>https://blog.niclin.tw/2018/11/25/%E7%9B%A1%E5%8F%AF%E8%83%BD%E7%9A%84%E6%B8%9B%E5%B0%91%E4%BD%BF%E7%94%A8%E5%85%B7%E6%84%9F%E6%9F%93%E6%80%A7%E7%9A%84-try-%E6%88%96%E6%98%AF-lonely/safe-navigation-operator/</link>
      <pubDate>Sun, 25 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/25/%E7%9B%A1%E5%8F%AF%E8%83%BD%E7%9A%84%E6%B8%9B%E5%B0%91%E4%BD%BF%E7%94%A8%E5%85%B7%E6%84%9F%E6%9F%93%E6%80%A7%E7%9A%84-try-%E6%88%96%E6%98%AF-lonely/safe-navigation-operator/</guid>
      <description>在 Rails application 中，我們可以用 Object#try 來避免 NoMethodError 拋出，而當 recevier 發現該 method 不存在時，會直接回傳 nil，可以避免更冗長的判斷、額外的錯誤處理，聽起來確實更好了，同時，</description>
    </item>
    
    <item>
      <title>ES6: export default 和 export 的差別</title>
      <link>https://blog.niclin.tw/2018/11/18/es6-export-default-%E5%92%8C-export-%E7%9A%84%E5%B7%AE%E5%88%A5/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/18/es6-export-default-%E5%92%8C-export-%E7%9A%84%E5%B7%AE%E5%88%A5/</guid>
      <description>歷史上，JavaScript 沒有 module 的體系，無法將一個大程序拆分成互相依賴的小模組在用更簡單的方式拼湊起來。 ruby 有 require python 有 import CSS 有 @import 在一個檔案內 export default</description>
    </item>
    
    <item>
      <title>Load balance 負載平衡設計</title>
      <link>https://blog.niclin.tw/2018/11/18/load-balance-%E8%B2%A0%E8%BC%89%E5%B9%B3%E8%A1%A1%E8%A8%AD%E8%A8%88/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/18/load-balance-%E8%B2%A0%E8%BC%89%E5%B9%B3%E8%A1%A1%E8%A8%AD%E8%A8%88/</guid>
      <description>通常會用到 load balance 都會是比較大型一點的架構，假設我們預期一台機器上限是 200 個連線數，今天有一個活動會有千人同時在線，這時候我們有可能有兩種作法 垂直</description>
    </item>
    
    <item>
      <title>React Stateless Functional Components</title>
      <link>https://blog.niclin.tw/2018/11/18/react-stateless-functional-components/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/18/react-stateless-functional-components/</guid>
      <description>但如果是單純 render UI 建議使用 Functional Component 寫法，效能較佳且較簡潔 import React from ‘react’; const HelloWorld = ({name}) =&amp;gt; ( &amp;lt;div&amp;gt;{`Hi ${name}`}&amp;lt;/div&amp;gt; ); export default HelloWorld; 幾個重點 不需要 ES6 class 不需要 bind(this) 強制 best practices 無狀態組件</description>
    </item>
    
    <item>
      <title>搞懂 React 中的 state 和 props</title>
      <link>https://blog.niclin.tw/2018/11/18/%E6%90%9E%E6%87%82-react-%E4%B8%AD%E7%9A%84-state-%E5%92%8C-props/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/18/%E6%90%9E%E6%87%82-react-%E4%B8%AD%E7%9A%84-state-%E5%92%8C-props/</guid>
      <description>props 意味著父級分發下來的屬性 state 是組件內部可以自行管理的狀態 數據沒辦法向上回溯，只能單向向下分發，或者自行內部管理消化。 props 對於 component 來說是「immu</description>
    </item>
    
    <item>
      <title>物件導向基本原則 SOLID (Ruby Sample)</title>
      <link>https://blog.niclin.tw/2018/11/18/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%89%87-solid-ruby-sample/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/11/18/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%89%87-solid-ruby-sample/</guid>
      <description>前幾天面試被問到這個，對這些掌握度是一知半解實在受不了，必須做個筆記瞭解一下 SOLID 是 OOP 以下幾個原則的縮寫 S : Single Responsibility Principle (單一職責原則) O : Open Closed Principle (開</description>
    </item>
    
    <item>
      <title>在以太坊智能合約上是可以預測隨機數的</title>
      <link>https://blog.niclin.tw/2018/10/25/%E5%9C%A8%E4%BB%A5%E5%A4%AA%E5%9D%8A%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84%E4%B8%8A%E6%98%AF%E5%8F%AF%E4%BB%A5%E9%A0%90%E6%B8%AC%E9%9A%A8%E6%A9%9F%E6%95%B8%E7%9A%84/</link>
      <pubDate>Thu, 25 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/10/25/%E5%9C%A8%E4%BB%A5%E5%A4%AA%E5%9D%8A%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84%E4%B8%8A%E6%98%AF%E5%8F%AF%E4%BB%A5%E9%A0%90%E6%B8%AC%E9%9A%A8%E6%A9%9F%E6%95%B8%E7%9A%84/</guid>
      <description>以太坊智能合約是以太坊概念中非常重要的一個概念，以太坊實現了基於 solidity 語言的以太坊虛擬機 EVM（Ethereum Virtual Machine），所以允許用戶</description>
    </item>
    
    <item>
      <title>在台灣租屋必須注意的事</title>
      <link>https://blog.niclin.tw/2018/10/05/%E5%9C%A8%E5%8F%B0%E7%81%A3%E7%A7%9F%E5%B1%8B%E5%BF%85%E9%A0%88%E6%B3%A8%E6%84%8F%E7%9A%84%E4%BA%8B/</link>
      <pubDate>Fri, 05 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/10/05/%E5%9C%A8%E5%8F%B0%E7%81%A3%E7%A7%9F%E5%B1%8B%E5%BF%85%E9%A0%88%E6%B3%A8%E6%84%8F%E7%9A%84%E4%BA%8B/</guid>
      <description>建議每月租屋的支出不該超過薪水所得的 1&amp;frasl;3 網路平台（例如: 591）上所看到的物件，只要是好的物件，通常半天至兩天內就會出租。 會在 591 平台上刊登超過</description>
    </item>
    
    <item>
      <title>Rails 5 簡單雙向加解密</title>
      <link>https://blog.niclin.tw/2018/10/03/rails-5-%E7%B0%A1%E5%96%AE%E9%9B%99%E5%90%91%E5%8A%A0%E8%A7%A3%E5%AF%86/</link>
      <pubDate>Wed, 03 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/10/03/rails-5-%E7%B0%A1%E5%96%AE%E9%9B%99%E5%90%91%E5%8A%A0%E8%A7%A3%E5%AF%86/</guid>
      <description>在 Rails 中常用的 devise, 對於密碼的加密是單向加密，也就是不可直接回推原本密碼，屬於安全層級較高的算法。 舉例來說，有一種場景是，我希望加密用戶的 One time password 驗</description>
    </item>
    
    <item>
      <title>如何用 ABA 培養自律型員工</title>
      <link>https://blog.niclin.tw/2018/10/02/%E5%A6%82%E4%BD%95%E7%94%A8-aba-%E5%9F%B9%E9%A4%8A%E8%87%AA%E5%BE%8B%E5%9E%8B%E5%93%A1%E5%B7%A5/</link>
      <pubDate>Tue, 02 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/10/02/%E5%A6%82%E4%BD%95%E7%94%A8-aba-%E5%9F%B9%E9%A4%8A%E8%87%AA%E5%BE%8B%E5%9E%8B%E5%93%A1%E5%B7%A5/</guid>
      <description>這是我看完了「員工不廢，只是管得不對」一書筆記。 前言 「帶人要帶心」，不論在教育體系、職場、軍中，似乎都這麼說過這句話。 之所以會想看這本書，也</description>
    </item>
    
    <item>
      <title>不要在 rake task 中定義 method, 請用 RAKE::DSL</title>
      <link>https://blog.niclin.tw/2018/09/13/%E4%B8%8D%E8%A6%81%E5%9C%A8-rake-task-%E4%B8%AD%E5%AE%9A%E7%BE%A9-method-%E8%AB%8B%E7%94%A8-rakedsl/</link>
      <pubDate>Thu, 13 Sep 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/09/13/%E4%B8%8D%E8%A6%81%E5%9C%A8-rake-task-%E4%B8%AD%E5%AE%9A%E7%BE%A9-method-%E8%AB%8B%E7%94%A8-rakedsl/</guid>
      <description>rake task 的 scope 是全域的，如果在任意的 rake 檔案中定義了 method，表面上看起來只有執行到該 task 時會用，但其實是等於為 main:Object 整個 class 定義了 private method，一次</description>
    </item>
    
    <item>
      <title>調整一個 Postgres 參數，讓查詢速度提升 50&#43; 倍</title>
      <link>https://blog.niclin.tw/2018/09/13/%E8%AA%BF%E6%95%B4%E4%B8%80%E5%80%8B-postgres-%E5%8F%83%E6%95%B8%E8%AE%93%E6%9F%A5%E8%A9%A2%E9%80%9F%E5%BA%A6%E6%8F%90%E5%8D%87-50--%E5%80%8D/</link>
      <pubDate>Thu, 13 Sep 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/09/13/%E8%AA%BF%E6%95%B4%E4%B8%80%E5%80%8B-postgres-%E5%8F%83%E6%95%B8%E8%AE%93%E6%9F%A5%E8%A9%A2%E9%80%9F%E5%BA%A6%E6%8F%90%E5%8D%87-50--%E5%80%8D/</guid>
      <description>Postgres 的 random_page_cost 預設值為 4，這是對於一般 HDD 硬碟下的建議值，但如果 database 的機器是用 SSD 的話，將該值改為 1 後，原本的 query 優化器將會從原本使用 Hash Join 改為 Nested Loop 而獲得大幅</description>
    </item>
    
    <item>
      <title>Linux 反彈 shell 開啟後門</title>
      <link>https://blog.niclin.tw/2018/09/02/linux-%E5%8F%8D%E5%BD%88-shell-%E9%96%8B%E5%95%9F%E5%BE%8C%E9%96%80/</link>
      <pubDate>Sun, 02 Sep 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/09/02/linux-%E5%8F%8D%E5%BD%88-shell-%E9%96%8B%E5%95%9F%E5%BE%8C%E9%96%80/</guid>
      <description>攻擊者可以用各種方式誘使被攻擊者的系統在有漏洞的情況下執行開後門的程式碼，當攻擊者拿到了 shell 權限，代表他可以如幽靈般的進入機器。 python 在 linux 系統下反</description>
    </item>
    
    <item>
      <title>工程師應該知道的 C10K 問題</title>
      <link>https://blog.niclin.tw/2018/08/19/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E6%87%89%E8%A9%B2%E7%9F%A5%E9%81%93%E7%9A%84-c10k-%E5%95%8F%E9%A1%8C/</link>
      <pubDate>Sun, 19 Aug 2018 01:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/08/19/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E6%87%89%E8%A9%B2%E7%9F%A5%E9%81%93%E7%9A%84-c10k-%E5%95%8F%E9%A1%8C/</guid>
      <description>前陣子剛好在看一些跟 RDBMS 設計相關的討論，提到了 C10K 問題，覺得有點陌生就研究了一下。 Ruby 的作者在松本行弘在《代碼的未來》- 雲計算時代的編程一章中有更</description>
    </item>
    
    <item>
      <title>加速建造開發環境，用 Docker 建立 Bitcoin 私鏈</title>
      <link>https://blog.niclin.tw/2018/08/19/%E5%8A%A0%E9%80%9F%E5%BB%BA%E9%80%A0%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83%E7%94%A8-docker-%E5%BB%BA%E7%AB%8B-bitcoin-%E7%A7%81%E9%8F%88/</link>
      <pubDate>Sun, 19 Aug 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/08/19/%E5%8A%A0%E9%80%9F%E5%BB%BA%E9%80%A0%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83%E7%94%A8-docker-%E5%BB%BA%E7%AB%8B-bitcoin-%E7%A7%81%E9%8F%88/</guid>
      <description>開發時同步全節點太慢了，用 Docker 建立私有鏈更省時間。 一般在開發比特幣相關業務的情況下，會需要能夠跟 RPC server 溝通的需求，如果我們跑主鏈或是 testne</description>
    </item>
    
    <item>
      <title>用 Truffle 開發 DApp 以太坊投票程序應用 Part 2</title>
      <link>https://blog.niclin.tw/2018/08/13/%E7%94%A8-truffle-%E9%96%8B%E7%99%BC-dapp-%E4%BB%A5%E5%A4%AA%E5%9D%8A%E6%8A%95%E7%A5%A8%E7%A8%8B%E5%BA%8F%E6%87%89%E7%94%A8-part-2/</link>
      <pubDate>Mon, 13 Aug 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/08/13/%E7%94%A8-truffle-%E9%96%8B%E7%99%BC-dapp-%E4%BB%A5%E5%A4%AA%E5%9D%8A%E6%8A%95%E7%A5%A8%E7%A8%8B%E5%BA%8F%E6%87%89%E7%94%A8-part-2/</guid>
      <description>一般投票泛指普通的選舉，例如透過一人一票來選出國家總統。 有一種加權投票（weighted voting）常常用於上市交易的公司。這些公司股東的</description>
    </item>
    
    <item>
      <title>用 Truffle 開發 DApp 以太坊投票程序應用 Part 1</title>
      <link>https://blog.niclin.tw/2018/08/12/%E7%94%A8-truffle-%E9%96%8B%E7%99%BC-dapp-%E4%BB%A5%E5%A4%AA%E5%9D%8A%E6%8A%95%E7%A5%A8%E7%A8%8B%E5%BA%8F%E6%87%89%E7%94%A8-part-1/</link>
      <pubDate>Sun, 12 Aug 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/08/12/%E7%94%A8-truffle-%E9%96%8B%E7%99%BC-dapp-%E4%BB%A5%E5%A4%AA%E5%9D%8A%E6%8A%95%E7%A5%A8%E7%A8%8B%E5%BA%8F%E6%87%89%E7%94%A8-part-1/</guid>
      <description>這篇文會建構一個去中心化的 (Decentralized) 投票應用。利用這個投票應用，用戶可以在不可信 (trustless) 的分布環境對特定候選人進行投票，每次投票都會被紀錄在區塊鏈上。 所謂</description>
    </item>
    
    <item>
      <title>機會只有一次，產品的 onboarding 何其重要</title>
      <link>https://blog.niclin.tw/2018/08/11/%E6%A9%9F%E6%9C%83%E5%8F%AA%E6%9C%89%E4%B8%80%E6%AC%A1%E7%94%A2%E5%93%81%E7%9A%84-onboarding-%E4%BD%95%E5%85%B6%E9%87%8D%E8%A6%81/</link>
      <pubDate>Sat, 11 Aug 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/08/11/%E6%A9%9F%E6%9C%83%E5%8F%AA%E6%9C%89%E4%B8%80%E6%AC%A1%E7%94%A2%E5%93%81%E7%9A%84-onboarding-%E4%BD%95%E5%85%B6%E9%87%8D%E8%A6%81/</guid>
      <description>有太多時候，用了一些只有冰冷操作感的產品，你會發現連你自己都不想給這種產品第二次機會。 其實就像是你去一家餐廳，吃完覺得服務不到位、食材不新鮮</description>
    </item>
    
    <item>
      <title>[Rails] 禁止非 Production 環境下被搜尋引擎建立索引，提升網站 SEO</title>
      <link>https://blog.niclin.tw/2018/08/05/rails-%E7%A6%81%E6%AD%A2%E9%9D%9E-production-%E7%92%B0%E5%A2%83%E4%B8%8B%E8%A2%AB%E6%90%9C%E5%B0%8B%E5%BC%95%E6%93%8E%E5%BB%BA%E7%AB%8B%E7%B4%A2%E5%BC%95%E6%8F%90%E5%8D%87%E7%B6%B2%E7%AB%99-seo/</link>
      <pubDate>Sun, 05 Aug 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/08/05/rails-%E7%A6%81%E6%AD%A2%E9%9D%9E-production-%E7%92%B0%E5%A2%83%E4%B8%8B%E8%A2%AB%E6%90%9C%E5%B0%8B%E5%BC%95%E6%93%8E%E5%BB%BA%E7%AB%8B%E7%B4%A2%E5%BC%95%E6%8F%90%E5%8D%87%E7%B6%B2%E7%AB%99-seo/</guid>
      <description>除了把關鍵字的 SEO 做好以外，也要注意被「禁止收錄」的部分，有時我們會有其他的環境，例如 staging, 用不同的域名或是 subdomain 下去做等等，在這些情況下，不要讓搜尋</description>
    </item>
    
    <item>
      <title>讓網站免費擁有 HTTPS 憑證，申請 Let’s Encrypt 並自動更新</title>
      <link>https://blog.niclin.tw/2018/08/04/%E8%AE%93%E7%B6%B2%E7%AB%99%E5%85%8D%E8%B2%BB%E6%93%81%E6%9C%89-https-%E6%86%91%E8%AD%89%E7%94%B3%E8%AB%8B-lets-encrypt-%E4%B8%A6%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/</link>
      <pubDate>Sat, 04 Aug 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/08/04/%E8%AE%93%E7%B6%B2%E7%AB%99%E5%85%8D%E8%B2%BB%E6%93%81%E6%9C%89-https-%E6%86%91%E8%AD%89%E7%94%B3%E8%AB%8B-lets-encrypt-%E4%B8%A6%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/</guid>
      <description>現在連 Google chrome 都會把 http 標記為不安全了，想當然爾，HTTPS 加密連線的重要性不言可喻了 這邊就筆記一下如何在自己的機器上，自動 renew Let’s Encrypt 的免費憑</description>
    </item>
    
    <item>
      <title>快就是帥，加速你的 Rails 專案啟動時間</title>
      <link>https://blog.niclin.tw/2018/07/21/%E5%BF%AB%E5%B0%B1%E6%98%AF%E5%B8%A5%E5%8A%A0%E9%80%9F%E4%BD%A0%E7%9A%84-rails-%E5%B0%88%E6%A1%88%E5%95%9F%E5%8B%95%E6%99%82%E9%96%93/</link>
      <pubDate>Sat, 21 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/21/%E5%BF%AB%E5%B0%B1%E6%98%AF%E5%B8%A5%E5%8A%A0%E9%80%9F%E4%BD%A0%E7%9A%84-rails-%E5%B0%88%E6%A1%88%E5%95%9F%E5%8B%95%E6%99%82%E9%96%93/</guid>
      <description>當 Rails 專案逐漸成長之後，最令人頭痛的就是 Rails 的 boot time 實在是很久。 有些沒辦法 reload on change 的部分（例如修改 config、安裝 gem）都需要將 server 重啟，然後發現</description>
    </item>
    
    <item>
      <title>Postgres 中的 analyse 與 analyze 有什麼不一樣？</title>
      <link>https://blog.niclin.tw/2018/07/14/postgres-%E4%B8%AD%E7%9A%84-analyse-%E8%88%87-analyze-%E6%9C%89%E4%BB%80%E9%BA%BC%E4%B8%8D%E4%B8%80%E6%A8%A3/</link>
      <pubDate>Sat, 14 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/14/postgres-%E4%B8%AD%E7%9A%84-analyse-%E8%88%87-analyze-%E6%9C%89%E4%BB%80%E9%BA%BC%E4%B8%8D%E4%B8%80%E6%A8%A3/</guid>
      <description>最近在找效能瓶頸時，很常用到 explain + analyze 的分析語句，這樣一來可以清楚掌握真正執行的 sql 究竟用了什麼 query plan。 但在用 metabase 查詢時，發現我如果打 analyze 時也會出</description>
    </item>
    
    <item>
      <title>[Rails] 大量呼叫 AASM 的 i18n 根本是災難</title>
      <link>https://blog.niclin.tw/2018/07/12/rails-%E5%A4%A7%E9%87%8F%E5%91%BC%E5%8F%AB-aasm-%E7%9A%84-i18n-%E6%A0%B9%E6%9C%AC%E6%98%AF%E7%81%BD%E9%9B%A3/</link>
      <pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/12/rails-%E5%A4%A7%E9%87%8F%E5%91%BC%E5%8F%AB-aasm-%E7%9A%84-i18n-%E6%A0%B9%E6%9C%AC%E6%98%AF%E7%81%BD%E9%9B%A3/</guid>
      <description>AASM 應該算是 rails project 很多人使用的一支 gem 了，在狀態管理可以省下不少時間，不過當網站有國際語系的要求時，我們希望可以直接在表現層依照不同的語系顯示不同</description>
    </item>
    
    <item>
      <title>為什麼 Query 忽快忽慢</title>
      <link>https://blog.niclin.tw/2018/07/12/%E7%82%BA%E4%BB%80%E9%BA%BC-query-%E5%BF%BD%E5%BF%AB%E5%BF%BD%E6%85%A2/</link>
      <pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/12/%E7%82%BA%E4%BB%80%E9%BA%BC-query-%E5%BF%BD%E5%BF%AB%E5%BF%BD%E6%85%A2/</guid>
      <description>如果是相同的語句執行時間不一樣，那就是有其他的會話在搶佔資源 這幾天在解決效能瓶頸時，用 New Relic 去監控 Slow query 時發現，在某個頁面會有偶發性的發生 Slow Query, 一</description>
    </item>
    
    <item>
      <title>[Rails] 用串流的方式讓用戶下載 CSV</title>
      <link>https://blog.niclin.tw/2018/07/11/rails-%E7%94%A8%E4%B8%B2%E6%B5%81%E7%9A%84%E6%96%B9%E5%BC%8F%E8%AE%93%E7%94%A8%E6%88%B6%E4%B8%8B%E8%BC%89-csv/</link>
      <pubDate>Wed, 11 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/11/rails-%E7%94%A8%E4%B8%B2%E6%B5%81%E7%9A%84%E6%96%B9%E5%BC%8F%E8%AE%93%E7%94%A8%E6%88%B6%E4%B8%8B%E8%BC%89-csv/</guid>
      <description>開頭先瞭解一下什麼是串流，來自維基百科 串流媒體（streaming media）是指將一連串的媒體資料壓縮後，經過網路分段傳送資料，在網路上即</description>
    </item>
    
    <item>
      <title>如何避免 JavaScript 中的科學計數法 1e-5, 1e-6...</title>
      <link>https://blog.niclin.tw/2018/07/08/%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D-javascript-%E4%B8%AD%E7%9A%84%E7%A7%91%E5%AD%B8%E8%A8%88%E6%95%B8%E6%B3%95-1e-5-1e-6.../</link>
      <pubDate>Sun, 08 Jul 2018 01:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/08/%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D-javascript-%E4%B8%AD%E7%9A%84%E7%A7%91%E5%AD%B8%E8%A8%88%E6%95%B8%E6%B3%95-1e-5-1e-6.../</guid>
      <description>在 JavaScript 中的整數與浮點數其實都是屬用 Number 的數據類型，所有數字都是以 64 位浮點 根据国际标准 IEEE 754，JavaScript 浮点数的64个二进制位，从最左</description>
    </item>
    
    <item>
      <title>在 Server 上自動監控 Sidekiq</title>
      <link>https://blog.niclin.tw/2018/07/08/%E5%9C%A8-server-%E4%B8%8A%E8%87%AA%E5%8B%95%E7%9B%A3%E6%8E%A7-sidekiq/</link>
      <pubDate>Sun, 08 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/08/%E5%9C%A8-server-%E4%B8%8A%E8%87%AA%E5%8B%95%E7%9B%A3%E6%8E%A7-sidekiq/</guid>
      <description>很不幸運地，sidekiq 並不是一個非常可靠的 process。有時候會自己死掉，造成非常大的困擾。所以實務上還會需要額外再裝一個監控工具，如</description>
    </item>
    
    <item>
      <title>開發前端時，如何關閉 Chrome 跨域的安全策略</title>
      <link>https://blog.niclin.tw/2018/07/08/%E9%96%8B%E7%99%BC%E5%89%8D%E7%AB%AF%E6%99%82%E5%A6%82%E4%BD%95%E9%97%9C%E9%96%89-chrome-%E8%B7%A8%E5%9F%9F%E7%9A%84%E5%AE%89%E5%85%A8%E7%AD%96%E7%95%A5/</link>
      <pubDate>Sun, 08 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/08/%E9%96%8B%E7%99%BC%E5%89%8D%E7%AB%AF%E6%99%82%E5%A6%82%E4%BD%95%E9%97%9C%E9%96%89-chrome-%E8%B7%A8%E5%9F%9F%E7%9A%84%E5%AE%89%E5%85%A8%E7%AD%96%E7%95%A5/</guid>
      <description>前端開發有可能會遇到一個問題，在前後端分離的狀況下，要再開發進行調試時，比方說希望從現在 Production 上的網域拿到 session 來做登入，或是拿後端的接口等問題，就</description>
    </item>
    
    <item>
      <title>PostgreSQL Poor performance ORDER BY / LIMIT</title>
      <link>https://blog.niclin.tw/2018/07/07/postgresql-poor-performance-order-by-/-limit/</link>
      <pubDate>Sat, 07 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/07/postgresql-poor-performance-order-by-/-limit/</guid>
      <description>最近研究一個在 Postgres 奇怪的效能問題。 情況是這樣的，我有一個通知系統 (Notifications) 的 table，也有對常用的搜尋打 index index_notifications_on_unread(read_at_unixtimestamp, user_id, id) Notification 的 dataset 大約 500 萬筆。 情況 1, 我確定找的到</description>
    </item>
    
    <item>
      <title>在 Rails 中能夠使用 explain &#43; analyze</title>
      <link>https://blog.niclin.tw/2018/07/04/%E5%9C%A8-rails-%E4%B8%AD%E8%83%BD%E5%A4%A0%E4%BD%BF%E7%94%A8-explain---analyze/</link>
      <pubDate>Wed, 04 Jul 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/07/04/%E5%9C%A8-rails-%E4%B8%AD%E8%83%BD%E5%A4%A0%E4%BD%BF%E7%94%A8-explain---analyze/</guid>
      <description>平常開發 Rails 在效能瓶頸時，除了會進 Database 測 explain 以外，也會在 console 裡面下同樣的語句。 不過遺憾的是，Rails 只能夠單純用 explain 而已，在 Postgres 中，如果僅僅只用 explain 分析</description>
    </item>
    
    <item>
      <title>unique index 與 non-unique index 的效能差異</title>
      <link>https://blog.niclin.tw/2018/06/24/unique-index-%E8%88%87-non-unique-index-%E7%9A%84%E6%95%88%E8%83%BD%E5%B7%AE%E7%95%B0/</link>
      <pubDate>Sun, 24 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/24/unique-index-%E8%88%87-non-unique-index-%E7%9A%84%E6%95%88%E8%83%BD%E5%B7%AE%E7%95%B0/</guid>
      <description>常理來說，unique index 在做查詢的時候，可以想像約等同於 SELECT 1 AS one LIMIT 1，因為不需花費力氣找尋其他相同的數據，所以理論上會快一些。 查詢計畫 舉例來</description>
    </item>
    
    <item>
      <title>什麼是 B&#43; Tree</title>
      <link>https://blog.niclin.tw/2018/06/18/%E4%BB%80%E9%BA%BC%E6%98%AF-b--tree/</link>
      <pubDate>Mon, 18 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/18/%E4%BB%80%E9%BA%BC%E6%98%AF-b--tree/</guid>
      <description>上一篇學習 什麼是 B-Tree 這篇就來補 B+ Tree 囉 B+ Tree 特徵 每個葉子節點都帶有指向下一個節點的指針，形成有序鏈表，加速範圍查詢 只有葉子節點帶衛星數據，父節點只</description>
    </item>
    
    <item>
      <title>什麼是 B-tree (Balance tree)</title>
      <link>https://blog.niclin.tw/2018/06/18/%E4%BB%80%E9%BA%BC%E6%98%AF-b-tree-balance-tree/</link>
      <pubDate>Mon, 18 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/18/%E4%BB%80%E9%BA%BC%E6%98%AF-b-tree-balance-tree/</guid>
      <description>一般像是 MySQL PostgreSQL 都是用 Btree 的方式建立索引。 注意：B-tree 不念 B減樹，而是直接念 Btree，所以如果看到 Btree vs B-tree 其實是在講同一個算法。 為什麼用 Btree 用</description>
    </item>
    
    <item>
      <title>AWS S3 &#43; CloudFront SSL 靜態網站架設教學</title>
      <link>https://blog.niclin.tw/2018/06/17/aws-s3---cloudfront-ssl-%E9%9D%9C%E6%85%8B%E7%B6%B2%E7%AB%99%E6%9E%B6%E8%A8%AD%E6%95%99%E5%AD%B8/</link>
      <pubDate>Sun, 17 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/17/aws-s3---cloudfront-ssl-%E9%9D%9C%E6%85%8B%E7%B6%B2%E7%AB%99%E6%9E%B6%E8%A8%AD%E6%95%99%E5%AD%B8/</guid>
      <description>最近把部落格搬家到靜態網站，用了 Hugo 架設的，包含圖床也都一併放到 S3, 這過程有點艱辛就記錄下來了，希望可以幫助到大家。 ASW S3 Step 1 建立 Bucket, Services -&amp;gt; S3 Step 2 自訂</description>
    </item>
    
    <item>
      <title>[Rails] 如何快速的對大資料量建立索引，避免 Downtime</title>
      <link>https://blog.niclin.tw/2018/06/15/rails-%E5%A6%82%E4%BD%95%E5%BF%AB%E9%80%9F%E7%9A%84%E5%B0%8D%E5%A4%A7%E8%B3%87%E6%96%99%E9%87%8F%E5%BB%BA%E7%AB%8B%E7%B4%A2%E5%BC%95%E9%81%BF%E5%85%8D-downtime/</link>
      <pubDate>Fri, 15 Jun 2018 01:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/15/rails-%E5%A6%82%E4%BD%95%E5%BF%AB%E9%80%9F%E7%9A%84%E5%B0%8D%E5%A4%A7%E8%B3%87%E6%96%99%E9%87%8F%E5%BB%BA%E7%AB%8B%E7%B4%A2%E5%BC%95%E9%81%BF%E5%85%8D-downtime/</guid>
      <description>Postgres 在建立索引時，會阻塞 DML 也就是 lock 整個 table 的寫入（讀取則不影響），所以當需要對大資料量的 Table 打 index 時，會造成有 Downtime 時間，這在 Production 這種高並發的環境下是不適</description>
    </item>
    
    <item>
      <title>為什麼 Postgres 不選擇 index scan 卻選擇 seq scan？</title>
      <link>https://blog.niclin.tw/2018/06/14/%E7%82%BA%E4%BB%80%E9%BA%BC-postgres-%E4%B8%8D%E9%81%B8%E6%93%87-index-scan-%E5%8D%BB%E9%81%B8%E6%93%87-seq-scan/</link>
      <pubDate>Thu, 14 Jun 2018 01:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/14/%E7%82%BA%E4%BB%80%E9%BA%BC-postgres-%E4%B8%8D%E9%81%B8%E6%93%87-index-scan-%E5%8D%BB%E9%81%B8%E6%93%87-seq-scan/</guid>
      <description>最近在分析影響效能的 Query，發現 PostgreSQL 有時的查詢效能不如我們預期，用了 EXPLAIN 下去分析索引，發現確實新增的 index 並沒有在 query plain 裡面，我想瞭解為什麼。 評估</description>
    </item>
    
    <item>
      <title>DK 長輩開的 SQL 程式進階效能優化實作 課程心得</title>
      <link>https://blog.niclin.tw/2018/06/10/dk-%E9%95%B7%E8%BC%A9%E9%96%8B%E7%9A%84-sql-%E7%A8%8B%E5%BC%8F%E9%80%B2%E9%9A%8E%E6%95%88%E8%83%BD%E5%84%AA%E5%8C%96%E5%AF%A6%E4%BD%9C-%E8%AA%B2%E7%A8%8B%E5%BF%83%E5%BE%97/</link>
      <pubDate>Sun, 10 Jun 2018 01:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/10/dk-%E9%95%B7%E8%BC%A9%E9%96%8B%E7%9A%84-sql-%E7%A8%8B%E5%BC%8F%E9%80%B2%E9%9A%8E%E6%95%88%E8%83%BD%E5%84%AA%E5%8C%96%E5%AF%A6%E4%BD%9C-%E8%AA%B2%E7%A8%8B%E5%BF%83%E5%BE%97/</guid>
      <description>常常使用資料庫，但很多環節不清楚效能為什麼不好，也不知道怎麼做預防勝於治療，在老闆的大力推薦下就來上這個課程了，聽說還是老闆的前輩呢。 講師介</description>
    </item>
    
    <item>
      <title>[Rails] 如何讓 AASM 的 event 事件個別 validate 且有 callback</title>
      <link>https://blog.niclin.tw/2018/06/09/rails-%E5%A6%82%E4%BD%95%E8%AE%93-aasm-%E7%9A%84-event-%E4%BA%8B%E4%BB%B6%E5%80%8B%E5%88%A5-validate-%E4%B8%94%E6%9C%89-callback/</link>
      <pubDate>Sat, 09 Jun 2018 06:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/09/rails-%E5%A6%82%E4%BD%95%E8%AE%93-aasm-%E7%9A%84-event-%E4%BA%8B%E4%BB%B6%E5%80%8B%E5%88%A5-validate-%E4%B8%94%E6%9C%89-callback/</guid>
      <description>最近遇到了這麼個需求，需要針對狀態機內的 event 有的部分要 valiadte，有的部分則不需要，但是所有的 event 卻都要有 ActiveRecord 的 callback 需求釐清 商品上架需要通過所</description>
    </item>
    
    <item>
      <title>[Rails] 如何在 Postgres 上使用表達式索引</title>
      <link>https://blog.niclin.tw/2018/06/09/rails-%E5%A6%82%E4%BD%95%E5%9C%A8-postgres-%E4%B8%8A%E4%BD%BF%E7%94%A8%E8%A1%A8%E9%81%94%E5%BC%8F%E7%B4%A2%E5%BC%95/</link>
      <pubDate>Sat, 09 Jun 2018 05:10:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/09/rails-%E5%A6%82%E4%BD%95%E5%9C%A8-postgres-%E4%B8%8A%E4%BD%BF%E7%94%A8%E8%A1%A8%E9%81%94%E5%BC%8F%E7%B4%A2%E5%BC%95/</guid>
      <description>為了避免有許多用戶生成同樣的名稱（不區分大小寫的情況），我們在 User create 前去檢查 User.where(&amp;quot;lower(user_name) = ?&amp;quot;, user_name.downcase) 當 User 的資料集逐漸龐大時，為了加快這個查詢，我們可以添加一個</description>
    </item>
    
    <item>
      <title>查 Postgres 的 index 使用情况</title>
      <link>https://blog.niclin.tw/2018/06/09/%E6%9F%A5-postgres-%E7%9A%84-index-%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5/</link>
      <pubDate>Sat, 09 Jun 2018 01:28:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/09/%E6%9F%A5-postgres-%E7%9A%84-index-%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5/</guid>
      <description>一般來說，打了 index 都會想看成效，使用的情況如何，在 postgreSQL 內可以直接下這行指令 SELECT * FROM pg_stat_user_indexes; 就可以拿到完整的資料去分析每個 index 的使用情況。 SELECT * FROM pg_stat_user_indexes; relid | indexrelid | schemaname</description>
    </item>
    
    <item>
      <title>[Rails] 如何分析你的 SQL Query</title>
      <link>https://blog.niclin.tw/2018/06/09/rails-%E5%A6%82%E4%BD%95%E5%88%86%E6%9E%90%E4%BD%A0%E7%9A%84-sql-query/</link>
      <pubDate>Sat, 09 Jun 2018 01:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/09/rails-%E5%A6%82%E4%BD%95%E5%88%86%E6%9E%90%E4%BD%A0%E7%9A%84-sql-query/</guid>
      <description>分析 Database 的效能問題，需要知道在每個命令下，數據庫用了什麼計畫去執行這條 Query EXPLAIN MySQL / Postgres 都可以使用 EXPLAIN 進行分析，你可以在語句前加入這個命令，獲得完整的分</description>
    </item>
    
    <item>
      <title>[SQL 基本觀念] primary Key / Index / Unique 差別</title>
      <link>https://blog.niclin.tw/2018/06/09/sql-%E5%9F%BA%E6%9C%AC%E8%A7%80%E5%BF%B5-primary-key-/-index-/-unique-%E5%B7%AE%E5%88%A5/</link>
      <pubDate>Sat, 09 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/09/sql-%E5%9F%BA%E6%9C%AC%E8%A7%80%E5%BF%B5-primary-key-/-index-/-unique-%E5%B7%AE%E5%88%A5/</guid>
      <description>PRIMARY Key(PK) (主鍵) 是一種 index 但不能為空值(NULL)，PK 會自動建立 index 每個 table 只能有一個 PRIMARY Key 語法為 CREATETABLE tablename ( [&amp;hellip;], PRIMARY KEY (列的列表) ); 在 Rails 裡面，默認 id 為 primary key Index (</description>
    </item>
    
    <item>
      <title>[Rails] 如何高效的確定資料是否存在？</title>
      <link>https://blog.niclin.tw/2018/06/08/rails-%E5%A6%82%E4%BD%95%E9%AB%98%E6%95%88%E7%9A%84%E7%A2%BA%E5%AE%9A%E8%B3%87%E6%96%99%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8/</link>
      <pubDate>Fri, 08 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/06/08/rails-%E5%A6%82%E4%BD%95%E9%AB%98%E6%95%88%E7%9A%84%E7%A2%BA%E5%AE%9A%E8%B3%87%E6%96%99%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8/</guid>
      <description>一個很常的議題是討論 Ruby on Rails 很慢，但其實追根究底起來，一般網站慢的問題痛點都在於讀取 Database 的 response time 太久，讓人有很慢的錯覺，其實不管用哪套框架，如果在</description>
    </item>
    
    <item>
      <title>Carrierwave 與 PaperTrail 的天生不合</title>
      <link>https://blog.niclin.tw/2018/05/26/carrierwave-%E8%88%87-papertrail-%E7%9A%84%E5%A4%A9%E7%94%9F%E4%B8%8D%E5%90%88/</link>
      <pubDate>Sat, 26 May 2018 09:57:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/05/26/carrierwave-%E8%88%87-papertrail-%E7%9A%84%E5%A4%A9%E7%94%9F%E4%B8%8D%E5%90%88/</guid>
      <description>前言 這兩支算是滿普遍熱門的 rails gem 做 file upload 會用 Carrierwave 紀錄 model operation log 會直接用 PaperTrail 但這兩支 Gem 有天生不合的地方，如果安裝時沒有稍微調整，等數據跑下去，發現時就會知</description>
    </item>
    
    <item>
      <title>邏輯抽象出 service object 需注意的點</title>
      <link>https://blog.niclin.tw/2018/05/16/%E9%82%8F%E8%BC%AF%E6%8A%BD%E8%B1%A1%E5%87%BA-service-object-%E9%9C%80%E6%B3%A8%E6%84%8F%E7%9A%84%E9%BB%9E/</link>
      <pubDate>Wed, 16 May 2018 07:18:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/05/16/%E9%82%8F%E8%BC%AF%E6%8A%BD%E8%B1%A1%E5%87%BA-service-object-%E9%9C%80%E6%B3%A8%E6%84%8F%E7%9A%84%E9%BB%9E/</guid>
      <description>如果你遇到下列的條件，需要反思這樣的邏輯有必要拆成 service object 嗎？ 這個邏輯抽象出來，只有一個地方使用，沒有複用的可能 單元測試並不好測試 當他需要從 controller 傳</description>
    </item>
    
    <item>
      <title>在 PostgreSQL 下如何漂亮的拿到兩個欄位時間差的平均</title>
      <link>https://blog.niclin.tw/2018/05/16/%E5%9C%A8-postgresql-%E4%B8%8B%E5%A6%82%E4%BD%95%E6%BC%82%E4%BA%AE%E7%9A%84%E6%8B%BF%E5%88%B0%E5%85%A9%E5%80%8B%E6%AC%84%E4%BD%8D%E6%99%82%E9%96%93%E5%B7%AE%E7%9A%84%E5%B9%B3%E5%9D%87/</link>
      <pubDate>Wed, 16 May 2018 07:13:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/05/16/%E5%9C%A8-postgresql-%E4%B8%8B%E5%A6%82%E4%BD%95%E6%BC%82%E4%BA%AE%E7%9A%84%E6%8B%BF%E5%88%B0%E5%85%A9%E5%80%8B%E6%AC%84%E4%BD%8D%E6%99%82%E9%96%93%E5%B7%AE%E7%9A%84%E5%B9%B3%E5%9D%87/</guid>
      <description>有個需求是，對一個集合算出所有的數據中，兩個欄位的時間相減，取全部平均花費時間。 狀況如下 # == Schema Information # # Table name: orders # ... # notify_at :datetime # released_at :datetime # ... 我們希望可以拿</description>
    </item>
    
    <item>
      <title>表現層的處理方式</title>
      <link>https://blog.niclin.tw/2018/05/06/%E8%A1%A8%E7%8F%BE%E5%B1%A4%E7%9A%84%E8%99%95%E7%90%86%E6%96%B9%E5%BC%8F/</link>
      <pubDate>Sun, 06 May 2018 09:54:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/05/06/%E8%A1%A8%E7%8F%BE%E5%B1%A4%E7%9A%84%E8%99%95%E7%90%86%E6%96%B9%E5%BC%8F/</guid>
      <description>複雜的東西其實可以搬去 service object 解決 但把資料翻譯成人能夠看的懂得東西，屬於表現層，表現層的抽象也可以用 decorator pattern 參考 https://github.com/drapergem/draper</description>
    </item>
    
    <item>
      <title>用 Rails 5.1 &#43; Vue.js 實做 TodoLists (CRUD)</title>
      <link>https://blog.niclin.tw/2018/05/06/%E7%94%A8-rails-5.1---vue.js-%E5%AF%A6%E5%81%9A-todolists-crud/</link>
      <pubDate>Sun, 06 May 2018 07:05:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/05/06/%E7%94%A8-rails-5.1---vue.js-%E5%AF%A6%E5%81%9A-todolists-crud/</guid>
      <description>基本要求 Rails version: 5.1 以上 基礎建設 建立帶 vue 的 rails 專案 rails new rails-vue-todolist --skip-turbolinks --skip-spring --webpack=vue 除了 Rails 建立以外，還會有 webpack 的安裝，過程需要等待一下 cd rails-vue-todolist git add . git commit -m &amp;quot;Initialize Rails App&amp;quot; 快速建立 scaffold 的 CRUD rails</description>
    </item>
    
    <item>
      <title>Mac OS 執行 crontab (例行性工作排程)</title>
      <link>https://blog.niclin.tw/2018/04/08/mac-os-%E5%9F%B7%E8%A1%8C-crontab-%E4%BE%8B%E8%A1%8C%E6%80%A7%E5%B7%A5%E4%BD%9C%E6%8E%92%E7%A8%8B/</link>
      <pubDate>Sun, 08 Apr 2018 08:39:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2018/04/08/mac-os-%E5%9F%B7%E8%A1%8C-crontab-%E4%BE%8B%E8%A1%8C%E6%80%A7%E5%B7%A5%E4%BD%9C%E6%8E%92%E7%A8%8B/</guid>
      <description>新建一個來兼看 crontab 是否順利執行的文件 touch /tmp/crontab_log.txt 設定定時任務 crontab -e 0/5 * * * * /bin/date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot; &amp;gt;&amp;gt; /tmp/crontab_log.txt :wq 存檔後退出，會看到 crontab: installing new crontab 接著我們來看每分鐘是否會將當前時間記錄</description>
    </item>
    
    <item>
      <title>WatchOS 接 API 實作比特幣幣價顯示 (How to fetch JSON from URL)</title>
      <link>https://blog.niclin.tw/2017/12/02/watchos-%E6%8E%A5-api-%E5%AF%A6%E4%BD%9C%E6%AF%94%E7%89%B9%E5%B9%A3%E5%B9%A3%E5%83%B9%E9%A1%AF%E7%A4%BA-how-to-fetch-json-from-url/</link>
      <pubDate>Sat, 02 Dec 2017 09:56:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/12/02/watchos-%E6%8E%A5-api-%E5%AF%A6%E4%BD%9C%E6%AF%94%E7%89%B9%E5%B9%A3%E5%B9%A3%E5%83%B9%E9%A1%AF%E7%A4%BA-how-to-fetch-json-from-url/</guid>
      <description>這篇實作主要是練習如何使用 Swift 去實現 Get JSON from URL Parse JSON 因為我平常有 Ruby 開發相關區塊鏈接 API 的經驗，所以這邊我挑了 CoinMarketCap 來串接，主要是因為他有直接兌換美元的結</description>
    </item>
    
    <item>
      <title>ES6 展開運算符</title>
      <link>https://blog.niclin.tw/2017/11/27/es6-%E5%B1%95%E9%96%8B%E9%81%8B%E7%AE%97%E7%AC%A6/</link>
      <pubDate>Mon, 27 Nov 2017 08:41:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/27/es6-%E5%B1%95%E9%96%8B%E9%81%8B%E7%AE%97%E7%AC%A6/</guid>
      <description>三個點的符號 ..., 英文的正式名稱是 Ellipsis，中文譯是指省略的意思，不過一般在學習這類運算符，下 google 的關鍵字應該多半都會是 three dots 或是 dot-dot-dot 展開運算</description>
    </item>
    
    <item>
      <title>Text View 垂直下拉關閉鍵盤 ＆ 開啟自動彈出鍵盤</title>
      <link>https://blog.niclin.tw/2017/11/26/text-view-%E5%9E%82%E7%9B%B4%E4%B8%8B%E6%8B%89%E9%97%9C%E9%96%89%E9%8D%B5%E7%9B%A4--%E9%96%8B%E5%95%9F%E8%87%AA%E5%8B%95%E5%BD%88%E5%87%BA%E9%8D%B5%E7%9B%A4/</link>
      <pubDate>Sun, 26 Nov 2017 07:38:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/26/text-view-%E5%9E%82%E7%9B%B4%E4%B8%8B%E6%8B%89%E9%97%9C%E9%96%89%E9%8D%B5%E7%9B%A4--%E9%96%8B%E5%95%9F%E8%87%AA%E5%8B%95%E5%BD%88%E5%87%BA%E9%8D%B5%E7%9B%A4/</guid>
      <description>垂直下拉關閉鍵盤 通常用到 text view 讓人可以鍵盤輸入資訊的時候，其實可以貼心的加入垂直下拉就可以關閉鍵盤的功能，因為很多 APP 打完字是沒辦法關鍵盤的，這</description>
    </item>
    
    <item>
      <title>更改 Status bar 的顏色</title>
      <link>https://blog.niclin.tw/2017/11/26/%E6%9B%B4%E6%94%B9-status-bar-%E7%9A%84%E9%A1%8F%E8%89%B2/</link>
      <pubDate>Sun, 26 Nov 2017 07:33:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/26/%E6%9B%B4%E6%94%B9-status-bar-%E7%9A%84%E9%A1%8F%E8%89%B2/</guid>
      <description>必要時，需要依照風格或是設計師不同的風格來配合，所以我們會需要更改 Status Bar 的顏色，至於改的方式有兩種，可以透過設定檔或是直接從 code 裡面動態修改（比</description>
    </item>
    
    <item>
      <title>鍵盤沒有在模擬器中展示</title>
      <link>https://blog.niclin.tw/2017/11/25/%E9%8D%B5%E7%9B%A4%E6%B2%92%E6%9C%89%E5%9C%A8%E6%A8%A1%E6%93%AC%E5%99%A8%E4%B8%AD%E5%B1%95%E7%A4%BA/</link>
      <pubDate>Sat, 25 Nov 2017 01:45:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/25/%E9%8D%B5%E7%9B%A4%E6%B2%92%E6%9C%89%E5%9C%A8%E6%A8%A1%E6%93%AC%E5%99%A8%E4%B8%AD%E5%B1%95%E7%A4%BA/</guid>
      <description>Keyboard does not show up in simulator Xcode 9.1 因為 Xcode 的預設是把你的電腦 keyboard 當作在模擬器裡面用的主選項，所以需要進去設定模擬器的 hard ware 鍵盤打開，如果沒有打開這個選項就會變成你</description>
    </item>
    
    <item>
      <title>Array 去除重複數值或 Object 的方法</title>
      <link>https://blog.niclin.tw/2017/11/24/array-%E5%8E%BB%E9%99%A4%E9%87%8D%E8%A4%87%E6%95%B8%E5%80%BC%E6%88%96-object-%E7%9A%84%E6%96%B9%E6%B3%95/</link>
      <pubDate>Fri, 24 Nov 2017 23:41:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/24/array-%E5%8E%BB%E9%99%A4%E9%87%8D%E8%A4%87%E6%95%B8%E5%80%BC%E6%88%96-object-%E7%9A%84%E6%96%B9%E6%B3%95/</guid>
      <description>ES6 之後可以使用 Set var uniqArray = new Set([1, 2, 3]) uniqArray // Set(3) {1, 2, 3} uniqArray.add(3) // Set(3) {1, 2, 3} uniqArray.add(4) // Set(4) {1, 2, 3, 4} Javascript: Remove Duplicates From Array Of Objects 如果 Array 裡面是放 Object 就不適用了，網路上查到比較多的答案是有人寫</description>
    </item>
    
    <item>
      <title>Devise password 密碼設置複雜度</title>
      <link>https://blog.niclin.tw/2017/11/21/devise-password-%E5%AF%86%E7%A2%BC%E8%A8%AD%E7%BD%AE%E8%A4%87%E9%9B%9C%E5%BA%A6/</link>
      <pubDate>Tue, 21 Nov 2017 09:48:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/21/devise-password-%E5%AF%86%E7%A2%BC%E8%A8%AD%E7%BD%AE%E8%A4%87%E9%9B%9C%E5%BA%A6/</guid>
      <description>目標：密碼設置必須要含英文及數字的組合 validate :password_complexity def password_complexity if password.present? if !password.match(/^(?=.*[a-zA-Z])(?=.*[0-9])) errors.add :password, &amp;quot;Password complexity requirement not met&amp;quot; end end end 拿掉位數限制，這部份 devise 本身就有 validation , 甚至必要時可以直接在 devise config 設定 password length</description>
    </item>
    
    <item>
      <title>解決 AASM 中的 race condition</title>
      <link>https://blog.niclin.tw/2017/11/11/%E8%A7%A3%E6%B1%BA-aasm-%E4%B8%AD%E7%9A%84-race-condition/</link>
      <pubDate>Sat, 11 Nov 2017 11:21:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/11/%E8%A7%A3%E6%B1%BA-aasm-%E4%B8%AD%E7%9A%84-race-condition/</guid>
      <description>何謂 race condition ? 競爭危害（race hazard）又名競態條件、竞争条件（race condition），它旨在描述一個系統或者進程的輸出依赖于不受控</description>
    </item>
    
    <item>
      <title>Resotre your older version to newer version, iPhone X &#43; iOS 11.2 Beta</title>
      <link>https://blog.niclin.tw/2017/11/03/resotre-your-older-version-to-newer-version-iphone-x---ios-11.2-beta/</link>
      <pubDate>Fri, 03 Nov 2017 23:20:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/11/03/resotre-your-older-version-to-newer-version-iphone-x---ios-11.2-beta/</guid>
      <description>If you can not restore backup on high version (like iOS 11.2 beta), maybe you can try my solution. Situation currently, I have two Iphone devise Iphone 7 Plus, iOS 11.2 beta2 Iphone X, iOS 11.1 I want to restore backup from a newer version of iOS 11.2 beta2 to a IphoneX devise using an older version of iOS 11.1, but iOS and iTunes does not support this. If you</description>
    </item>
    
    <item>
      <title>獲得實時更新的方法（Polling, Comet, Long Polling, WebSocket）</title>
      <link>https://blog.niclin.tw/2017/10/28/%E7%8D%B2%E5%BE%97%E5%AF%A6%E6%99%82%E6%9B%B4%E6%96%B0%E7%9A%84%E6%96%B9%E6%B3%95polling-comet-long-polling-websocket/</link>
      <pubDate>Sat, 28 Oct 2017 09:15:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/10/28/%E7%8D%B2%E5%BE%97%E5%AF%A6%E6%99%82%E6%9B%B4%E6%96%B0%E7%9A%84%E6%96%B9%E6%B3%95polling-comet-long-polling-websocket/</guid>
      <description>獲得實時更新的方法（Polling, Comet, Long Polling, WebSocket） 在 HTTP 協議上，只能由 Client 發起請求，等候 Server 端回應，然後獲得資料，來讓當前頁面更新。 但</description>
    </item>
    
    <item>
      <title>搞懂生命週期 (LifeCycle)</title>
      <link>https://blog.niclin.tw/2017/10/08/%E6%90%9E%E6%87%82%E7%94%9F%E5%91%BD%E9%80%B1%E6%9C%9F-lifecycle/</link>
      <pubDate>Sun, 08 Oct 2017 05:34:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/10/08/%E6%90%9E%E6%87%82%E7%94%9F%E5%91%BD%E9%80%B1%E6%9C%9F-lifecycle/</guid>
      <description>官方圖片解釋 Understanding Vue LifeCycle Hook beforeCreate 在 Vue Instance、 Component(組件/元件) 初始化之後，數據觀測（data observer）和 event/watcher 事件配置之前</description>
    </item>
    
    <item>
      <title>Rails 開發網站所需的 SEO 實務技巧</title>
      <link>https://blog.niclin.tw/2017/10/05/rails-%E9%96%8B%E7%99%BC%E7%B6%B2%E7%AB%99%E6%89%80%E9%9C%80%E7%9A%84-seo-%E5%AF%A6%E5%8B%99%E6%8A%80%E5%B7%A7/</link>
      <pubDate>Thu, 05 Oct 2017 10:21:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/10/05/rails-%E9%96%8B%E7%99%BC%E7%B6%B2%E7%AB%99%E6%89%80%E9%9C%80%E7%9A%84-seo-%E5%AF%A6%E5%8B%99%E6%8A%80%E5%B7%A7/</guid>
      <description>基本上只要你的國家普遍瀏覽器搜尋資料時是使用 Google 的，在做專案時通常會有 SEO 的需求，SEO的全名是（Search Engine Optimization），也就</description>
    </item>
    
    <item>
      <title>Sublime-evernote，用 markdown 語法寫 evernote</title>
      <link>https://blog.niclin.tw/2017/08/30/sublime-evernote%E7%94%A8-markdown-%E8%AA%9E%E6%B3%95%E5%AF%AB-evernote/</link>
      <pubDate>Wed, 30 Aug 2017 09:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/30/sublime-evernote%E7%94%A8-markdown-%E8%AA%9E%E6%B3%95%E5%AF%AB-evernote/</guid>
      <description>平常我在記筆記的時候，最常使用的是 MWeb 、 Evernote，之所以會特地分兩款的原因是因為 evernote 不支援 markdown 書寫。 對於我這種已經寫習慣的人，實在是很難轉</description>
    </item>
    
    <item>
      <title>Rails 5 &#43; OmniAuth &#43; Devise 實作可擴充的第三方網站登入(Facebook, Google)</title>
      <link>https://blog.niclin.tw/2017/08/26/rails-5---omniauth---devise-%E5%AF%A6%E4%BD%9C%E5%8F%AF%E6%93%B4%E5%85%85%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%B6%B2%E7%AB%99%E7%99%BB%E5%85%A5facebook-google/</link>
      <pubDate>Sat, 26 Aug 2017 06:48:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/26/rails-5---omniauth---devise-%E5%AF%A6%E4%BD%9C%E5%8F%AF%E6%93%B4%E5%85%85%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E7%B6%B2%E7%AB%99%E7%99%BB%E5%85%A5facebook-google/</guid>
      <description>Rails 5 實作第三方登入 (Facebook + google) 雖然我去年寫過一篇如何在 Rails 4 Devise使用Google實作登入 但後來要用的時候，發現原本的文章只能對應一種第三方登</description>
    </item>
    
    <item>
      <title>用 ajax &#43; paginate 讓留言功能更出色</title>
      <link>https://blog.niclin.tw/2017/08/24/%E7%94%A8-ajax---paginate-%E8%AE%93%E7%95%99%E8%A8%80%E5%8A%9F%E8%83%BD%E6%9B%B4%E5%87%BA%E8%89%B2/</link>
      <pubDate>Thu, 24 Aug 2017 08:09:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/24/%E7%94%A8-ajax---paginate-%E8%AE%93%E7%95%99%E8%A8%80%E5%8A%9F%E8%83%BD%E6%9B%B4%E5%87%BA%E8%89%B2/</guid>
      <description>Implement background animation colors for comments(like stack over flow share answer link) Rails version 5.1.3 Ruby version 2.3.2 原本如果實作一個 Post has_many Comments 的 CRUD 最陽春的版本就是在留言之後，跳出一個 flash 顯示 「你已留言成功」 不過因為是用 http pos</description>
    </item>
    
    <item>
      <title>CSS 團隊協作規範</title>
      <link>https://blog.niclin.tw/2017/08/23/css-%E5%9C%98%E9%9A%8A%E5%8D%94%E4%BD%9C%E8%A6%8F%E7%AF%84/</link>
      <pubDate>Wed, 23 Aug 2017 07:17:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/23/css-%E5%9C%98%E9%9A%8A%E5%8D%94%E4%BD%9C%E8%A6%8F%E7%AF%84/</guid>
      <description>CSS開發規範 命名禁止縮寫 請精簡扼要的對 class 命名，請勿使用自定義縮寫 class name 的命名必須是行為、有語意的 禁止在非特殊情況寫 !important CSS裡面本有權重設計，</description>
    </item>
    
    <item>
      <title>讓分頁用無限捲軸載入</title>
      <link>https://blog.niclin.tw/2017/08/23/%E8%AE%93%E5%88%86%E9%A0%81%E7%94%A8%E7%84%A1%E9%99%90%E6%8D%B2%E8%BB%B8%E8%BC%89%E5%85%A5/</link>
      <pubDate>Wed, 23 Aug 2017 07:13:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/23/%E8%AE%93%E5%88%86%E9%A0%81%E7%94%A8%E7%84%A1%E9%99%90%E6%8D%B2%E8%BB%B8%E8%BC%89%E5%85%A5/</guid>
      <description>Infinite Scrolling to load more records from database using Ruby on Rails Gems installed gem &#39;will_paginate&#39;, &#39;~&amp;gt; 3.1&#39; gem &#39;bootstrap-sass&#39;, &#39;~&amp;gt; 3.3&#39;, &#39;&amp;gt;= 3.3.6&#39; gem &#39;bootstrap-will_paginate&#39;, &#39;~&amp;gt; 0.0.10&#39; Gem removed gem &#39;turbolinks&#39; 建立 Post Controller 運用場景： Post#index 的 view ，可以無限下拉來達到 Load more controller 要能 respond JS class PostsController &amp;lt; ApplicationController def index @posts = Post.paginate(page:</description>
    </item>
    
    <item>
      <title>使用 BEM 之後的 CSS 書寫規範</title>
      <link>https://blog.niclin.tw/2017/08/21/%E4%BD%BF%E7%94%A8-bem-%E4%B9%8B%E5%BE%8C%E7%9A%84-css-%E6%9B%B8%E5%AF%AB%E8%A6%8F%E7%AF%84/</link>
      <pubDate>Mon, 21 Aug 2017 01:02:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/21/%E4%BD%BF%E7%94%A8-bem-%E4%B9%8B%E5%BE%8C%E7%9A%84-css-%E6%9B%B8%E5%AF%AB%E8%A6%8F%E7%AF%84/</guid>
      <description>我們平時最開始學習寫 CSS 代碼的時候，我們都是這麼寫的： .main-part .tabs { /*...*/ } 其實這樣的寫法是不好的，因為它過度的與頁面中的某一部分耦合了。我們在軟件工程的</description>
    </item>
    
    <item>
      <title>利用編輯器自動整理縮排 SASS 檔案</title>
      <link>https://blog.niclin.tw/2017/08/20/%E5%88%A9%E7%94%A8%E7%B7%A8%E8%BC%AF%E5%99%A8%E8%87%AA%E5%8B%95%E6%95%B4%E7%90%86%E7%B8%AE%E6%8E%92-sass-%E6%AA%94%E6%A1%88/</link>
      <pubDate>Sun, 20 Aug 2017 22:10:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/20/%E5%88%A9%E7%94%A8%E7%B7%A8%E8%BC%AF%E5%99%A8%E8%87%AA%E5%8B%95%E6%95%B4%E7%90%86%E7%B8%AE%E6%8E%92-sass-%E6%AA%94%E6%A1%88/</guid>
      <description>在這邊我們預計實現團隊中使用 sublime + Atom 的開發人員都能夠對 .scss 做自動縮進，並且效果必須一樣。 縮進書寫規範：兩格空白 每個團隊或個人使用的 CSS 規範不盡相同</description>
    </item>
    
    <item>
      <title>用你 100% 努力換來與別人 1% 的差異</title>
      <link>https://blog.niclin.tw/2017/08/14/%E7%94%A8%E4%BD%A0-100-%E5%8A%AA%E5%8A%9B%E6%8F%9B%E4%BE%86%E8%88%87%E5%88%A5%E4%BA%BA-1-%E7%9A%84%E5%B7%AE%E7%95%B0/</link>
      <pubDate>Mon, 14 Aug 2017 08:31:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/14/%E7%94%A8%E4%BD%A0-100-%E5%8A%AA%E5%8A%9B%E6%8F%9B%E4%BE%86%E8%88%87%E5%88%A5%E4%BA%BA-1-%E7%9A%84%E5%B7%AE%E7%95%B0/</guid>
      <description>用你 100% 努力換來與別人 1% 的差異 今天突然有一霎那間，腦海頓時像是一個老人衝進圖書館，把分別不同類型的書挑了出來，然後告訴我這些書都在講同一件事情</description>
    </item>
    
    <item>
      <title>在 iphone 上透過 Shadowsocks(SS) 在大陸翻牆</title>
      <link>https://blog.niclin.tw/2017/08/13/%E5%9C%A8-iphone-%E4%B8%8A%E9%80%8F%E9%81%8E-shadowsocksss-%E5%9C%A8%E5%A4%A7%E9%99%B8%E7%BF%BB%E7%89%86/</link>
      <pubDate>Sun, 13 Aug 2017 09:16:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/13/%E5%9C%A8-iphone-%E4%B8%8A%E9%80%8F%E9%81%8E-shadowsocksss-%E5%9C%A8%E5%A4%A7%E9%99%B8%E7%BF%BB%E7%89%86/</guid>
      <description>依照前一篇，在 在 Google platform 上架設 ShadowSocks(SS) + BBR，打造一台有 SS + BBR 提速的機器之後，接下來就是大家最關心的如何在 iphone 上面翻牆了。 不過基本上走到這一步都得花錢</description>
    </item>
    
    <item>
      <title>在 Google platform 上架設 ShadowSocks(SS) &#43; BBR</title>
      <link>https://blog.niclin.tw/2017/08/12/%E5%9C%A8-google-platform-%E4%B8%8A%E6%9E%B6%E8%A8%AD-shadowsocksss---bbr/</link>
      <pubDate>Sat, 12 Aug 2017 08:38:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/12/%E5%9C%A8-google-platform-%E4%B8%8A%E6%9E%B6%E8%A8%AD-shadowsocksss---bbr/</guid>
      <description>建立 VPS Google cloud platform 有免費 12 個月 300USD 的額度可以使用 註冊 Google Clund Platform 服務 點擊左上角三條線漢堡，下拉選單到 「Compute Engine」 -&amp;gt; 「VM 執行個體」 點擊 「</description>
    </item>
    
    <item>
      <title>搞懂 sass 中的 BEM 設計原則</title>
      <link>https://blog.niclin.tw/2017/08/10/%E6%90%9E%E6%87%82-sass-%E4%B8%AD%E7%9A%84-bem-%E8%A8%AD%E8%A8%88%E5%8E%9F%E5%89%87/</link>
      <pubDate>Thu, 10 Aug 2017 09:53:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/10/%E6%90%9E%E6%87%82-sass-%E4%B8%AD%E7%9A%84-bem-%E8%A8%AD%E8%A8%88%E5%8E%9F%E5%89%87/</guid>
      <description>最近常常在專案裡面看到令人很頭痛的 CSS，沒有設計模式，有大量不明白的階層跟命名，完全無法複用的元素XDD，心中是滿滿的 fuck。 於是我就開</description>
    </item>
    
    <item>
      <title>[Rails] 用 Ransack 做搜尋功能</title>
      <link>https://blog.niclin.tw/2017/08/10/rails-%E7%94%A8-ransack-%E5%81%9A%E6%90%9C%E5%B0%8B%E5%8A%9F%E8%83%BD/</link>
      <pubDate>Thu, 10 Aug 2017 07:56:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/10/rails-%E7%94%A8-ransack-%E5%81%9A%E6%90%9C%E5%B0%8B%E5%8A%9F%E8%83%BD/</guid>
      <description>常見的情境有，搜索用戶資料、搜尋文章等等 而在 Rails 裡面有一個做基礎搜尋功能的 gem 他叫 Ransack，之所以會說只能做基本搜尋是因為，他是在下搜尋關</description>
    </item>
    
    <item>
      <title>不需在創建 new or edit path 的 helper, 交給 controller 決定吧</title>
      <link>https://blog.niclin.tw/2017/08/06/%E4%B8%8D%E9%9C%80%E5%9C%A8%E5%89%B5%E5%BB%BA-new-or-edit-path-%E7%9A%84-helper-%E4%BA%A4%E7%B5%A6-controller-%E6%B1%BA%E5%AE%9A%E5%90%A7/</link>
      <pubDate>Sun, 06 Aug 2017 09:19:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/06/%E4%B8%8D%E9%9C%80%E5%9C%A8%E5%89%B5%E5%BB%BA-new-or-edit-path-%E7%9A%84-helper-%E4%BA%A4%E7%B5%A6-controller-%E6%B1%BA%E5%AE%9A%E5%90%A7/</guid>
      <description>new or edit path helper? We can creating easy more path! 我們可能常常會需要在 view 裡面寫到 edit or new 的 link，這是我們在常見不過的一段判斷式了 &amp;lt;% if @project.presnet? %&amp;gt; &amp;lt;%= link_to &#39;edit&#39;, edit_project_path(@project) %&amp;gt; &amp;lt;% else %&amp;gt; &amp;lt;%= link_to &#39;new&#39;, new_project_path %&amp;gt; &amp;lt;% end</description>
    </item>
    
    <item>
      <title>全棧營第一期精進訓練群心得總覽（共38人）</title>
      <link>https://blog.niclin.tw/2017/08/04/%E5%85%A8%E6%A3%A7%E7%87%9F%E7%AC%AC%E4%B8%80%E6%9C%9F%E7%B2%BE%E9%80%B2%E8%A8%93%E7%B7%B4%E7%BE%A4%E5%BF%83%E5%BE%97%E7%B8%BD%E8%A6%BD%E5%85%B138%E4%BA%BA/</link>
      <pubDate>Fri, 04 Aug 2017 05:13:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/04/%E5%85%A8%E6%A3%A7%E7%87%9F%E7%AC%AC%E4%B8%80%E6%9C%9F%E7%B2%BE%E9%80%B2%E8%A8%93%E7%B7%B4%E7%BE%A4%E5%BF%83%E5%BE%97%E7%B8%BD%E8%A6%BD%E5%85%B138%E4%BA%BA/</guid>
      <description>精進C群 A組組長 MengjunGuo - 精进练习一个月总结 历时一个月的精进练习已经落下帷幕，感觉这个月的投入精力、时间和注意力比之前正式学习时要多很多。精进一个</description>
    </item>
    
    <item>
      <title>全棧營第一期求職訓練群心得總覽（共27人）</title>
      <link>https://blog.niclin.tw/2017/08/01/%E5%85%A8%E6%A3%A7%E7%87%9F%E7%AC%AC%E4%B8%80%E6%9C%9F%E6%B1%82%E8%81%B7%E8%A8%93%E7%B7%B4%E7%BE%A4%E5%BF%83%E5%BE%97%E7%B8%BD%E8%A6%BD%E5%85%B127%E4%BA%BA/</link>
      <pubDate>Tue, 01 Aug 2017 00:03:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/08/01/%E5%85%A8%E6%A3%A7%E7%87%9F%E7%AC%AC%E4%B8%80%E6%9C%9F%E6%B1%82%E8%81%B7%E8%A8%93%E7%B7%B4%E7%BE%A4%E5%BF%83%E5%BE%97%E7%B8%BD%E8%A6%BD%E5%85%B127%E4%BA%BA/</guid>
      <description>唐同學 - 全栈营求职群收获总结 Nic老师用自己经过实战的宝贵经验，建设了一个贴近实战的模拟环境。有的放矢的用“套路”锻炼了我们，尽可能地引领我</description>
    </item>
    
    <item>
      <title>如何將影片製作成微信能用的 GIF 圖檔</title>
      <link>https://blog.niclin.tw/2017/07/30/%E5%A6%82%E4%BD%95%E5%B0%87%E5%BD%B1%E7%89%87%E8%A3%BD%E4%BD%9C%E6%88%90%E5%BE%AE%E4%BF%A1%E8%83%BD%E7%94%A8%E7%9A%84-gif-%E5%9C%96%E6%AA%94/</link>
      <pubDate>Sun, 30 Jul 2017 10:18:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/07/30/%E5%A6%82%E4%BD%95%E5%B0%87%E5%BD%B1%E7%89%87%E8%A3%BD%E4%BD%9C%E6%88%90%E5%BE%AE%E4%BF%A1%E8%83%BD%E7%94%A8%E7%9A%84-gif-%E5%9C%96%E6%AA%94/</guid>
      <description>製作微信 GIF 貼圖吧 限制 微信GIF要注意只能上傳 1MB 的圖檔 Step 1 :素材準備 五至七秒左右的影片，不宜過長 想一個可以加在影片上的文字 Step 2 :剪輯影片 這邊我</description>
    </item>
    
    <item>
      <title>使用 AvtiveRecord:Enum 建立易讀的狀態屬性</title>
      <link>https://blog.niclin.tw/2017/07/30/%E4%BD%BF%E7%94%A8-avtiverecordenum-%E5%BB%BA%E7%AB%8B%E6%98%93%E8%AE%80%E7%9A%84%E7%8B%80%E6%85%8B%E5%B1%AC%E6%80%A7/</link>
      <pubDate>Sun, 30 Jul 2017 10:03:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/07/30/%E4%BD%BF%E7%94%A8-avtiverecordenum-%E5%BB%BA%E7%AB%8B%E6%98%93%E8%AE%80%E7%9A%84%E7%8B%80%E6%85%8B%E5%B1%AC%E6%80%A7/</guid>
      <description>在 Rails model 裡面，我們很常會定義所謂數據的「狀態」，比方說一個請假系統，光請假這個數據，可能他的狀態就有「待審核」、「已審核」、「已退回」、「已取</description>
    </item>
    
    <item>
      <title>Oh-my-zsh 自帶的 git aliases</title>
      <link>https://blog.niclin.tw/2017/07/27/oh-my-zsh-%E8%87%AA%E5%B8%B6%E7%9A%84-git-aliases/</link>
      <pubDate>Thu, 27 Jul 2017 20:42:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/07/27/oh-my-zsh-%E8%87%AA%E5%B8%B6%E7%9A%84-git-aliases/</guid>
      <description>一般工程師 code 寫久了都會養出自己的專屬配置，甚至整理相關的 dotfile Alias 這更是必備的設定啊，工程師通常都不喜歡一直打重複又冗長的指令，做成自己能懂得縮寫</description>
    </item>
    
    <item>
      <title>不要再佔用 controller action 與 route 來更新資料了</title>
      <link>https://blog.niclin.tw/2017/07/27/%E4%B8%8D%E8%A6%81%E5%86%8D%E4%BD%94%E7%94%A8-controller-action-%E8%88%87-route-%E4%BE%86%E6%9B%B4%E6%96%B0%E8%B3%87%E6%96%99%E4%BA%86/</link>
      <pubDate>Thu, 27 Jul 2017 08:49:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/07/27/%E4%B8%8D%E8%A6%81%E5%86%8D%E4%BD%94%E7%94%A8-controller-action-%E8%88%87-route-%E4%BE%86%E6%9B%B4%E6%96%B0%E8%B3%87%E6%96%99%E4%BA%86/</guid>
      <description>常見更新數據狀態的作法 一般來說，除了狀態機（AASM）變更狀態以外，有一種情況是針對這筆資料進行狀態變更，通常的設計是這樣子的，有一個按鈕，</description>
    </item>
    
    <item>
      <title>拆分你的 routes.rb，使他更好維護及整理</title>
      <link>https://blog.niclin.tw/2017/07/24/%E6%8B%86%E5%88%86%E4%BD%A0%E7%9A%84-routes.rb%E4%BD%BF%E4%BB%96%E6%9B%B4%E5%A5%BD%E7%B6%AD%E8%AD%B7%E5%8F%8A%E6%95%B4%E7%90%86/</link>
      <pubDate>Mon, 24 Jul 2017 09:43:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/07/24/%E6%8B%86%E5%88%86%E4%BD%A0%E7%9A%84-routes.rb%E4%BD%BF%E4%BB%96%E6%9B%B4%E5%A5%BD%E7%B6%AD%E8%AD%B7%E5%8F%8A%E6%95%B4%E7%90%86/</guid>
      <description>How to split routes.rb into smaller parts? 在 Rails 開發上， route（路由）就像總機小姐，可以清楚的幫你承接到業務承辦人員， Routing 就是替你的頁面指路，經過 Controller Action 後呈現你想要的頁面</description>
    </item>
    
    <item>
      <title>[Rails] 利用 pow 取代 localhost:3000 進行開發吧！</title>
      <link>https://blog.niclin.tw/2017/07/23/rails-%E5%88%A9%E7%94%A8-pow-%E5%8F%96%E4%BB%A3-localhost3000-%E9%80%B2%E8%A1%8C%E9%96%8B%E7%99%BC%E5%90%A7/</link>
      <pubDate>Sun, 23 Jul 2017 07:49:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/07/23/rails-%E5%88%A9%E7%94%A8-pow-%E5%8F%96%E4%BB%A3-localhost3000-%E9%80%B2%E8%A1%8C%E9%96%8B%E7%99%BC%E5%90%A7/</guid>
      <description>一般 Rails 開發久一些的工程師，都會對還要額外開一個 terminal 來跑 localhost:3000 這件事情來得厭煩 尤其容易遇到如果同時開發兩個專案以上，要不時的切換來切換去，或是在開一</description>
    </item>
    
    <item>
      <title>北京工作與台北的差別</title>
      <link>https://blog.niclin.tw/2017/05/30/%E5%8C%97%E4%BA%AC%E5%B7%A5%E4%BD%9C%E8%88%87%E5%8F%B0%E5%8C%97%E7%9A%84%E5%B7%AE%E5%88%A5/</link>
      <pubDate>Tue, 30 May 2017 05:37:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/05/30/%E5%8C%97%E4%BA%AC%E5%B7%A5%E4%BD%9C%E8%88%87%E5%8F%B0%E5%8C%97%E7%9A%84%E5%B7%AE%E5%88%A5/</guid>
      <description>如果說在台灣工作的分層，是50分至80分，那麼在北京的工作分層大概就是0至100分。 如果你沒有不可取代性 所謂的工作分層用分數來表示，在這邊我</description>
    </item>
    
    <item>
      <title>更好的自己，是因為妳</title>
      <link>https://blog.niclin.tw/2017/05/21/%E6%9B%B4%E5%A5%BD%E7%9A%84%E8%87%AA%E5%B7%B1%E6%98%AF%E5%9B%A0%E7%82%BA%E5%A6%B3/</link>
      <pubDate>Sun, 21 May 2017 00:24:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/05/21/%E6%9B%B4%E5%A5%BD%E7%9A%84%E8%87%AA%E5%B7%B1%E6%98%AF%E5%9B%A0%E7%82%BA%E5%A6%B3/</guid>
      <description>2016年，是我蛻變前一年，也是我正式踏入社會工作的首年，我認為人或企業都和蛇一樣，需要脫皮才能成長，只是你在安逸的環境下，脫皮顯得特別困難</description>
    </item>
    
    <item>
      <title>[Rails] 基礎安全觀念 database.yml 與 .gitignore</title>
      <link>https://blog.niclin.tw/2017/04/19/rails-%E5%9F%BA%E7%A4%8E%E5%AE%89%E5%85%A8%E8%A7%80%E5%BF%B5-database.yml-%E8%88%87-.gitignore/</link>
      <pubDate>Wed, 19 Apr 2017 01:39:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/04/19/rails-%E5%9F%BA%E7%A4%8E%E5%AE%89%E5%85%A8%E8%A7%80%E5%BF%B5-database.yml-%E8%88%87-.gitignore/</guid>
      <description>啟動 rails server 遇到了這個錯誤嗎？ ActiveRecord::ConnectionNotEstablished No connection pool with id primary found 這個問題通常是，Rails 的 ActiveRecord 在初始化的時候讀不到你的數據庫(database)，可以先檢查 con</description>
    </item>
    
    <item>
      <title>離職是成長的一個環節</title>
      <link>https://blog.niclin.tw/2017/04/16/%E9%9B%A2%E8%81%B7%E6%98%AF%E6%88%90%E9%95%B7%E7%9A%84%E4%B8%80%E5%80%8B%E7%92%B0%E7%AF%80/</link>
      <pubDate>Sun, 16 Apr 2017 09:20:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/04/16/%E9%9B%A2%E8%81%B7%E6%98%AF%E6%88%90%E9%95%B7%E7%9A%84%E4%B8%80%E5%80%8B%E7%92%B0%E7%AF%80/</guid>
      <description>「站在同一個地方，你會有盲點」我恩師這樣說。 如果你一直站在這 設想你在一個路口定點不動，有如舉牌子打工的工作一般，你能看到的是這個角落的風景，</description>
    </item>
    
    <item>
      <title>讓我連續三天都全神貫注的《專業簡報力》</title>
      <link>https://blog.niclin.tw/2017/04/13/%E8%AE%93%E6%88%91%E9%80%A3%E7%BA%8C%E4%B8%89%E5%A4%A9%E9%83%BD%E5%85%A8%E7%A5%9E%E8%B2%AB%E6%B3%A8%E7%9A%84%E5%B0%88%E6%A5%AD%E7%B0%A1%E5%A0%B1%E5%8A%9B/</link>
      <pubDate>Thu, 13 Apr 2017 23:57:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/04/13/%E8%AE%93%E6%88%91%E9%80%A3%E7%BA%8C%E4%B8%89%E5%A4%A9%E9%83%BD%E5%85%A8%E7%A5%9E%E8%B2%AB%E6%B3%A8%E7%9A%84%E5%B0%88%E6%A5%AD%E7%B0%A1%E5%A0%B1%E5%8A%9B/</guid>
      <description>我如同一般人一樣念完了義務教育，接受高中、大學的教育，驀然回首還真沒有一堂課程讓我有辦法達到如此高度的高專注力行為，我必須先承認上這堂課我沒</description>
    </item>
    
    <item>
      <title>Linux 基本指令</title>
      <link>https://blog.niclin.tw/2017/03/19/linux-%E5%9F%BA%E6%9C%AC%E6%8C%87%E4%BB%A4/</link>
      <pubDate>Sun, 19 Mar 2017 07:33:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/03/19/linux-%E5%9F%BA%E6%9C%AC%E6%8C%87%E4%BB%A4/</guid>
      <description>一、系統管理方面 指令 說明 範例 adduser 建立使用者帳號 adduser user1 #新增一個 user1 帳號 userdel 刪除使用者帳號 userdel -r user1 #刪除 user1 帳號，並且將他的目錄一併刪除 groupadd 建立群組 groupadd student #新</description>
    </item>
    
    <item>
      <title>關於 update method 的不同之處</title>
      <link>https://blog.niclin.tw/2017/03/08/%E9%97%9C%E6%96%BC-update-method-%E7%9A%84%E4%B8%8D%E5%90%8C%E4%B9%8B%E8%99%95/</link>
      <pubDate>Wed, 08 Mar 2017 19:20:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/03/08/%E9%97%9C%E6%96%BC-update-method-%E7%9A%84%E4%B8%8D%E5%90%8C%E4%B9%8B%E8%99%95/</guid>
      <description>Cheat Sheet Rails 4 Method Uses Default Accessor Saved to Database Validations Callbacks Touches updated_at update_attribute Yes Yes No Yes Yes update_attributes Yes Yes Yes Yes Yes update Yes Yes Yes Yes Yes update_column No Yes No No No update_columns No Yes No No No User::update Yes Yes Yes Yes Yes User::update_all No Yes No No No update(id, attributes) public 以 Rails 最正規的用法來說</description>
    </item>
    
    <item>
      <title>你應該認真寫的那一份履歷 - 面試所要掌握的小技巧(3)</title>
      <link>https://blog.niclin.tw/2017/02/24/%E4%BD%A0%E6%87%89%E8%A9%B2%E8%AA%8D%E7%9C%9F%E5%AF%AB%E7%9A%84%E9%82%A3%E4%B8%80%E4%BB%BD%E5%B1%A5%E6%AD%B7---%E9%9D%A2%E8%A9%A6%E6%89%80%E8%A6%81%E6%8E%8C%E6%8F%A1%E7%9A%84%E5%B0%8F%E6%8A%80%E5%B7%A73/</link>
      <pubDate>Fri, 24 Feb 2017 08:02:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/02/24/%E4%BD%A0%E6%87%89%E8%A9%B2%E8%AA%8D%E7%9C%9F%E5%AF%AB%E7%9A%84%E9%82%A3%E4%B8%80%E4%BB%BD%E5%B1%A5%E6%AD%B7---%E9%9D%A2%E8%A9%A6%E6%89%80%E8%A6%81%E6%8E%8C%E6%8F%A1%E7%9A%84%E5%B0%8F%E6%8A%80%E5%B7%A73/</guid>
      <description>履歷寫完了，當然要來談一下面試需要注意的事項跟一些小技巧囉。 就我自己經過了中國以及台灣的面試，聽了前輩以及跌跌撞撞的經驗，整理出了一些資訊，</description>
    </item>
    
    <item>
      <title>Meta programming 的雙面刃體悟</title>
      <link>https://blog.niclin.tw/2017/02/18/meta-programming-%E7%9A%84%E9%9B%99%E9%9D%A2%E5%88%83%E9%AB%94%E6%82%9F/</link>
      <pubDate>Sat, 18 Feb 2017 08:36:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/02/18/meta-programming-%E7%9A%84%E9%9B%99%E9%9D%A2%E5%88%83%E9%AB%94%E6%82%9F/</guid>
      <description>我們都知道，在編程寫代碼的時候，都會秉持一些 Best Practices，例如最常見的 DRY ，每一個開發者都希望自己的代碼能夠簡潔且易維護，這不外乎是一</description>
    </item>
    
    <item>
      <title>你應該認真寫的那一份履歷 - 如何打造簡潔且吸睛的履歷(2)</title>
      <link>https://blog.niclin.tw/2017/02/16/%E4%BD%A0%E6%87%89%E8%A9%B2%E8%AA%8D%E7%9C%9F%E5%AF%AB%E7%9A%84%E9%82%A3%E4%B8%80%E4%BB%BD%E5%B1%A5%E6%AD%B7---%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E7%B0%A1%E6%BD%94%E4%B8%94%E5%90%B8%E7%9D%9B%E7%9A%84%E5%B1%A5%E6%AD%B72/</link>
      <pubDate>Thu, 16 Feb 2017 07:19:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/02/16/%E4%BD%A0%E6%87%89%E8%A9%B2%E8%AA%8D%E7%9C%9F%E5%AF%AB%E7%9A%84%E9%82%A3%E4%B8%80%E4%BB%BD%E5%B1%A5%E6%AD%B7---%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E7%B0%A1%E6%BD%94%E4%B8%94%E5%90%B8%E7%9D%9B%E7%9A%84%E5%B1%A5%E6%AD%B72/</guid>
      <description>撰寫要點 人資一天看的履歷可能超過你一天投遞的數量，那麼能真正被留下來認真看的都是少數，要如何抓住看履歷那個人的目光，排序以及內容相當的重要，</description>
    </item>
    
    <item>
      <title>你應該認真寫的那一份履歷 - 履歷修改的案例心得分享(1)</title>
      <link>https://blog.niclin.tw/2017/02/15/%E4%BD%A0%E6%87%89%E8%A9%B2%E8%AA%8D%E7%9C%9F%E5%AF%AB%E7%9A%84%E9%82%A3%E4%B8%80%E4%BB%BD%E5%B1%A5%E6%AD%B7---%E5%B1%A5%E6%AD%B7%E4%BF%AE%E6%94%B9%E7%9A%84%E6%A1%88%E4%BE%8B%E5%BF%83%E5%BE%97%E5%88%86%E4%BA%AB1/</link>
      <pubDate>Wed, 15 Feb 2017 06:23:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/02/15/%E4%BD%A0%E6%87%89%E8%A9%B2%E8%AA%8D%E7%9C%9F%E5%AF%AB%E7%9A%84%E9%82%A3%E4%B8%80%E4%BB%BD%E5%B1%A5%E6%AD%B7---%E5%B1%A5%E6%AD%B7%E4%BF%AE%E6%94%B9%E7%9A%84%E6%A1%88%E4%BE%8B%E5%BF%83%E5%BE%97%E5%88%86%E4%BA%AB1/</guid>
      <description>前言 直到工作前，我不曾有過任何履歷撰寫的經驗。 我是普通科大畢業的，國高中時沒有任何撰寫自傳&amp;amp;履歷的經驗，出社會後上了 xdite老師的</description>
    </item>
    
    <item>
      <title>定時開啟或關閉機器實例的方案</title>
      <link>https://blog.niclin.tw/2017/02/13/%E5%AE%9A%E6%99%82%E9%96%8B%E5%95%9F%E6%88%96%E9%97%9C%E9%96%89%E6%A9%9F%E5%99%A8%E5%AF%A6%E4%BE%8B%E7%9A%84%E6%96%B9%E6%A1%88/</link>
      <pubDate>Mon, 13 Feb 2017 05:00:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/02/13/%E5%AE%9A%E6%99%82%E9%96%8B%E5%95%9F%E6%88%96%E9%97%9C%E9%96%89%E6%A9%9F%E5%99%A8%E5%AF%A6%E4%BE%8B%E7%9A%84%E6%96%B9%E6%A1%88/</guid>
      <description>Amazon 雖然有提供一年的免費試用，不過期滿之後就是收費的開始，收費除了流量以外最基本的計算就是以時間計算，畢竟一寸光陰一寸金啊，一個月平均 744 小時開</description>
    </item>
    
    <item>
      <title>將放在github上的專案掛上CI-serevr吧</title>
      <link>https://blog.niclin.tw/2017/01/08/%E5%B0%87%E6%94%BE%E5%9C%A8github%E4%B8%8A%E7%9A%84%E5%B0%88%E6%A1%88%E6%8E%9B%E4%B8%8Aci-serevr%E5%90%A7/</link>
      <pubDate>Sun, 08 Jan 2017 05:42:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2017/01/08/%E5%B0%87%E6%94%BE%E5%9C%A8github%E4%B8%8A%E7%9A%84%E5%B0%88%E6%A1%88%E6%8E%9B%E4%B8%8Aci-serevr%E5%90%A7/</guid>
      <description>關於自動化測試 在這個世代開發網站，少不了的就是「測試」，能把寫好的測試讓機器幫你做自動化測試，只有通過才可以Merge，這樣一來保障了程式碼</description>
    </item>
    
    <item>
      <title>Rails 工作面試分享</title>
      <link>https://blog.niclin.tw/2016/12/29/rails-%E5%B7%A5%E4%BD%9C%E9%9D%A2%E8%A9%A6%E5%88%86%E4%BA%AB/</link>
      <pubDate>Thu, 29 Dec 2016 07:42:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/12/29/rails-%E5%B7%A5%E4%BD%9C%E9%9D%A2%E8%A9%A6%E5%88%86%E4%BA%AB/</guid>
      <description>中國區 金數據 投遞管道：China Ruby conf 09/24 - 於會場投遞履歷 09/25 - 早上九點半面試 09/26 - 信件獲得感謝函 面試等待結果共計1天(自最後一次面試起計算)。 結果</description>
    </item>
    
    <item>
      <title>Sublime 開發環境初始設置建議</title>
      <link>https://blog.niclin.tw/2016/12/23/sublime-%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83%E5%88%9D%E5%A7%8B%E8%A8%AD%E7%BD%AE%E5%BB%BA%E8%AD%B0/</link>
      <pubDate>Fri, 23 Dec 2016 23:43:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/12/23/sublime-%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83%E5%88%9D%E5%A7%8B%E8%A8%AD%E7%BD%AE%E5%BB%BA%E8%AD%B0/</guid>
      <description>{ &amp;ldquo;ensure_newline_at_eof_on_save&amp;rdquo;: true, &amp;ldquo;tab_size&amp;rdquo;: 2, &amp;ldquo;show_full_path&amp;rdquo;: true, &amp;ldquo;translate_tabs_to_spaces&amp;rdquo;: true, &amp;ldquo;trim_trailing_white_space_on_save&amp;rdquo;: true }
{ &amp;ldquo;color_scheme&amp;rdquo;: &amp;ldquo;Packages/Color Scheme - Default/Solarized (Dark).tmTheme&amp;rdquo;, &amp;ldquo;font_size&amp;rdquo;: 14, &amp;ldquo;ignored_packages&amp;rdquo;: [ &amp;ldquo;Vintage&amp;rdquo; ], &amp;ldquo;ensure_newline_at_eof_on_save&amp;rdquo;: true, &amp;ldquo;tab_size&amp;rdquo;: 2, &amp;ldquo;show_full_path&amp;rdquo;: true, &amp;ldquo;translate_tabs_to_spaces&amp;rdquo;: true, &amp;ldquo;trim_trailing_white_space_on_save&amp;rdquo;: true }</description>
    </item>
    
    <item>
      <title>iTerm2 &#43; zsh shell on Mac OSX</title>
      <link>https://blog.niclin.tw/2016/12/22/iterm2---zsh-shell-on-mac-osx/</link>
      <pubDate>Thu, 22 Dec 2016 05:11:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/12/22/iterm2---zsh-shell-on-mac-osx/</guid>
      <description>zsh是一種Shell，與bash, tesh等等shell很像，不過他多了一些很方便的人性化功能，例如在tab的時候會幫你找出相似的路徑或檔</description>
    </item>
    
    <item>
      <title>Dynamic Method 與 Dispatch的技巧</title>
      <link>https://blog.niclin.tw/2016/12/02/dynamic-method-%E8%88%87-dispatch%E7%9A%84%E6%8A%80%E5%B7%A7/</link>
      <pubDate>Fri, 02 Dec 2016 04:12:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/12/02/dynamic-method-%E8%88%87-dispatch%E7%9A%84%E6%8A%80%E5%B7%A7/</guid>
      <description>Dynamic Method 最近因為在應用上覺得了解Ruby的底層可以在程式撰寫的時候有佳的可讀及維護性，一方面也是在網路上看到的資源做個筆記，之前累積太多的技術債</description>
    </item>
    
    <item>
      <title>編譯Gem時出現錯誤的解決方式</title>
      <link>https://blog.niclin.tw/2016/11/08/%E7%B7%A8%E8%AD%AFgem%E6%99%82%E5%87%BA%E7%8F%BE%E9%8C%AF%E8%AA%A4%E7%9A%84%E8%A7%A3%E6%B1%BA%E6%96%B9%E5%BC%8F/</link>
      <pubDate>Tue, 08 Nov 2016 01:05:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/11/08/%E7%B7%A8%E8%AD%AFgem%E6%99%82%E5%87%BA%E7%8F%BE%E9%8C%AF%E8%AA%A4%E7%9A%84%E8%A7%A3%E6%B1%BA%E6%96%B9%E5%BC%8F/</guid>
      <description>這陣子在玩Rebuilding Rails，在教學裡面需要自己做一隻Gem也就是library，雖然對現在來講是兩年前的教學，但電子書寫的非常</description>
    </item>
    
    <item>
      <title>include v.s extend 以及 require 的差別</title>
      <link>https://blog.niclin.tw/2016/11/05/include-v.s-extend-%E4%BB%A5%E5%8F%8A-require-%E7%9A%84%E5%B7%AE%E5%88%A5/</link>
      <pubDate>Sat, 05 Nov 2016 00:25:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/11/05/include-v.s-extend-%E4%BB%A5%E5%8F%8A-require-%E7%9A%84%E5%B7%AE%E5%88%A5/</guid>
      <description>include v.s extend 在Ruby裡，Class只能單一繼承，而為了保有DRY(Do not repeat yourself)的風格與彈性，ruby提供了module的概念。 mo</description>
    </item>
    
    <item>
      <title>神奇的 method missing</title>
      <link>https://blog.niclin.tw/2016/10/30/%E7%A5%9E%E5%A5%87%E7%9A%84-method-missing/</link>
      <pubDate>Sun, 30 Oct 2016 00:01:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/10/30/%E7%A5%9E%E5%A5%87%E7%9A%84-method-missing/</guid>
      <description>Rails裡面我們常調用到來自ActiveRecord::FinderMethods的find_by這個方法，但神奇的是如果我們在後面多加變</description>
    </item>
    
    <item>
      <title>我心中的那份簡單</title>
      <link>https://blog.niclin.tw/2016/10/21/%E6%88%91%E5%BF%83%E4%B8%AD%E7%9A%84%E9%82%A3%E4%BB%BD%E7%B0%A1%E5%96%AE/</link>
      <pubDate>Fri, 21 Oct 2016 10:51:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/10/21/%E6%88%91%E5%BF%83%E4%B8%AD%E7%9A%84%E9%82%A3%E4%BB%BD%E7%B0%A1%E5%96%AE/</guid>
      <description>前言 我想保護我心中的那份正義，還有我所謂主觀認定的「簡單」。 試著放下預設立場 這陣子，我深深體會，當你對一件不可預期的事情有著過分期待，或是過</description>
    </item>
    
    <item>
      <title>[成都] 初探四川之旅</title>
      <link>https://blog.niclin.tw/2016/09/23/%E6%88%90%E9%83%BD-%E5%88%9D%E6%8E%A2%E5%9B%9B%E5%B7%9D%E4%B9%8B%E6%97%85/</link>
      <pubDate>Fri, 23 Sep 2016 07:25:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/09/23/%E6%88%90%E9%83%BD-%E5%88%9D%E6%8E%A2%E5%9B%9B%E5%B7%9D%E4%B9%8B%E6%97%85/</guid>
      <description>初訪四川成都，第一次離開台灣 起因 這趟行程來的很突然，因緣際會下，我的恩師叫我飛成都，而且只給我兩天時間，直接說後天下午出現在成都雙流機場，否</description>
    </item>
    
    <item>
      <title>在陣列中尋找出現最多次的方法</title>
      <link>https://blog.niclin.tw/2016/09/19/%E5%9C%A8%E9%99%A3%E5%88%97%E4%B8%AD%E5%B0%8B%E6%89%BE%E5%87%BA%E7%8F%BE%E6%9C%80%E5%A4%9A%E6%AC%A1%E7%9A%84%E6%96%B9%E6%B3%95/</link>
      <pubDate>Mon, 19 Sep 2016 22:01:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/09/19/%E5%9C%A8%E9%99%A3%E5%88%97%E4%B8%AD%E5%B0%8B%E6%89%BE%E5%87%BA%E7%8F%BE%E6%9C%80%E5%A4%9A%E6%AC%A1%E7%9A%84%E6%96%B9%E6%B3%95/</guid>
      <description>假設OrderItem.all會把整個訂單的明細都吐出來，但我們只想找這筆訂單裡面food_name這個欄位的最多出現次數。 想法是可以先將這</description>
    </item>
    
    <item>
      <title>如何在 Heroku 上設定時區</title>
      <link>https://blog.niclin.tw/2016/09/19/%E5%A6%82%E4%BD%95%E5%9C%A8-heroku-%E4%B8%8A%E8%A8%AD%E5%AE%9A%E6%99%82%E5%8D%80/</link>
      <pubDate>Mon, 19 Sep 2016 05:12:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/09/19/%E5%A6%82%E4%BD%95%E5%9C%A8-heroku-%E4%B8%8A%E8%A8%AD%E5%AE%9A%E6%99%82%E5%8D%80/</guid>
      <description>Heroku上的時區設定就如同一般Server設定一樣採用UTC（世界標準時間）。 最近在上面架設了Redmine，開出來的票時間跟本地不同，</description>
    </item>
    
    <item>
      <title>一鍵將 Rails App 佈署(Deploy)到 VPS 上</title>
      <link>https://blog.niclin.tw/2016/09/15/%E4%B8%80%E9%8D%B5%E5%B0%87-rails-app-%E4%BD%88%E7%BD%B2deploy%E5%88%B0-vps-%E4%B8%8A/</link>
      <pubDate>Thu, 15 Sep 2016 00:47:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/09/15/%E4%B8%80%E9%8D%B5%E5%B0%87-rails-app-%E4%BD%88%E7%BD%B2deploy%E5%88%B0-vps-%E4%B8%8A/</guid>
      <description>部屬前碎念 我有一個專案是抓subdomin在判斷群組，就像Logdown一樣依照次級網域來引導到不同使用者的部落格一樣，礙於某些因素將其專案</description>
    </item>
    
    <item>
      <title>如果休學能讓你變得更好</title>
      <link>https://blog.niclin.tw/2016/09/02/%E5%A6%82%E6%9E%9C%E4%BC%91%E5%AD%B8%E8%83%BD%E8%AE%93%E4%BD%A0%E8%AE%8A%E5%BE%97%E6%9B%B4%E5%A5%BD/</link>
      <pubDate>Fri, 02 Sep 2016 07:30:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/09/02/%E5%A6%82%E6%9E%9C%E4%BC%91%E5%AD%B8%E8%83%BD%E8%AE%93%E4%BD%A0%E8%AE%8A%E5%BE%97%E6%9B%B4%E5%A5%BD/</guid>
      <description>近期看了些文章有感而發，稍微整理成自己腦袋的東西，也順便挑戰這個主題。 前言 社會不斷在變遷，就算待在台灣，你也要知道世界不是繞著台灣轉，而是同</description>
    </item>
    
    <item>
      <title>你應該找尋自己的天命</title>
      <link>https://blog.niclin.tw/2016/08/29/%E4%BD%A0%E6%87%89%E8%A9%B2%E6%89%BE%E5%B0%8B%E8%87%AA%E5%B7%B1%E7%9A%84%E5%A4%A9%E5%91%BD/</link>
      <pubDate>Mon, 29 Aug 2016 23:21:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/08/29/%E4%BD%A0%E6%87%89%E8%A9%B2%E6%89%BE%E5%B0%8B%E8%87%AA%E5%B7%B1%E7%9A%84%E5%A4%A9%E5%91%BD/</guid>
      <description>找到自己的社會天命，盡自己的社會責任。 前言 台灣人的人生，二十三歲才開始，男生的話在加個兵役，差不多也是二十四，多半每個人從小接受填鴨式教育，</description>
    </item>
    
    <item>
      <title>初探 ORID 焦點討論法</title>
      <link>https://blog.niclin.tw/2016/08/09/%E5%88%9D%E6%8E%A2-orid-%E7%84%A6%E9%BB%9E%E8%A8%8E%E8%AB%96%E6%B3%95/</link>
      <pubDate>Tue, 09 Aug 2016 06:07:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/08/09/%E5%88%9D%E6%8E%A2-orid-%E7%84%A6%E9%BB%9E%E8%A8%8E%E8%AB%96%E6%B3%95/</guid>
      <description>在一個團隊之中，開會是不可或缺的部分，而能有效的運用溝通增進會議的進行，更可以替團隊發掘新的可能，在偶然的情況發現了這一個思考框架，希望能運</description>
    </item>
    
    <item>
      <title>如何在 MacOS 上運行 pokemon bot (已失效)</title>
      <link>https://blog.niclin.tw/2016/08/08/%E5%A6%82%E4%BD%95%E5%9C%A8-macos-%E4%B8%8A%E9%81%8B%E8%A1%8C-pokemon-bot-%E5%B7%B2%E5%A4%B1%E6%95%88/</link>
      <pubDate>Mon, 08 Aug 2016 06:18:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/08/08/%E5%A6%82%E4%BD%95%E5%9C%A8-macos-%E4%B8%8A%E9%81%8B%E8%A1%8C-pokemon-bot-%E5%B7%B2%E5%A4%B1%E6%95%88/</guid>
      <description>打開terminal，安裝一些依賴套件 安裝 HomeBrew /usr/bin/ruby -e &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&amp;quot; 安裝 Wget brew install wget 安裝 Java brew cask install java 切換至家目錄，輸入 cd， 並且創建一個待會要用的資料夾，輸入 mkdir</description>
    </item>
    
    <item>
      <title>如何使用 whenever 排程每天自動備份 Database 到 Dropbox 雲端</title>
      <link>https://blog.niclin.tw/2016/08/01/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-whenever-%E6%8E%92%E7%A8%8B%E6%AF%8F%E5%A4%A9%E8%87%AA%E5%8B%95%E5%82%99%E4%BB%BD-database-%E5%88%B0-dropbox-%E9%9B%B2%E7%AB%AF/</link>
      <pubDate>Mon, 01 Aug 2016 17:50:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/08/01/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-whenever-%E6%8E%92%E7%A8%8B%E6%AF%8F%E5%A4%A9%E8%87%AA%E5%8B%95%E5%82%99%E4%BB%BD-database-%E5%88%B0-dropbox-%E9%9B%B2%E7%AB%AF/</guid>
      <description>備份對於任何人都是需要的，難免會有不如預期的事情發生，機器說壞就壞，如果養成備份的好習慣，可以讓你免於意外發生的驚慌 備份就像幫你的程式買保險</description>
    </item>
    
    <item>
      <title>用 devise_invitable 做出邀請會員的功能吧</title>
      <link>https://blog.niclin.tw/2016/07/29/%E7%94%A8-devise_invitable-%E5%81%9A%E5%87%BA%E9%82%80%E8%AB%8B%E6%9C%83%E5%93%A1%E7%9A%84%E5%8A%9F%E8%83%BD%E5%90%A7/</link>
      <pubDate>Fri, 29 Jul 2016 23:51:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/07/29/%E7%94%A8-devise_invitable-%E5%81%9A%E5%87%BA%E9%82%80%E8%AB%8B%E6%9C%83%E5%93%A1%E7%9A%84%E5%8A%9F%E8%83%BD%E5%90%A7/</guid>
      <description>Devise這隻gem在ror界幾乎無人不知無人不曉，許多人會好奇，如果我要做一個邀請加入會員的功能該如何實作呢？ 其實他有一個兄弟套件叫做d</description>
    </item>
    
    <item>
      <title>[Gitlab] 修改Timezone為本地時間</title>
      <link>https://blog.niclin.tw/2016/07/26/gitlab-%E4%BF%AE%E6%94%B9timezone%E7%82%BA%E6%9C%AC%E5%9C%B0%E6%99%82%E9%96%93/</link>
      <pubDate>Tue, 26 Jul 2016 23:40:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/07/26/gitlab-%E4%BF%AE%E6%94%B9timezone%E7%82%BA%E6%9C%AC%E5%9C%B0%E6%99%82%E9%96%93/</guid>
      <description>通常自己架設的Gitlab位置應該在 /etc/gitlab/gitlab.rb 先在下面這個網站找到想要改的時區 詳細的TimeZones可以看這裡 available on Wikipedia 例如本地是台灣，所以們直接對他</description>
    </item>
    
    <item>
      <title>React 不如想像中好學</title>
      <link>https://blog.niclin.tw/2016/07/15/react-%E4%B8%8D%E5%A6%82%E6%83%B3%E5%83%8F%E4%B8%AD%E5%A5%BD%E5%AD%B8/</link>
      <pubDate>Fri, 15 Jul 2016 22:25:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/07/15/react-%E4%B8%8D%E5%A6%82%E6%83%B3%E5%83%8F%E4%B8%AD%E5%A5%BD%E5%AD%B8/</guid>
      <description>最近因為手上專案進行部分改版，其中一個部份的實作偏向Single Web的概念，於是乎在操作一些DOM的情況下選擇嘗試用React實現，在這實</description>
    </item>
    
    <item>
      <title>如何對 ElasticSearch 重新索引</title>
      <link>https://blog.niclin.tw/2016/07/09/%E5%A6%82%E4%BD%95%E5%B0%8D-elasticsearch-%E9%87%8D%E6%96%B0%E7%B4%A2%E5%BC%95/</link>
      <pubDate>Sat, 09 Jul 2016 05:04:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/07/09/%E5%A6%82%E4%BD%95%E5%B0%8D-elasticsearch-%E9%87%8D%E6%96%B0%E7%B4%A2%E5%BC%95/</guid>
      <description>有時候會遇到，資料庫明明已經destroy了，但是ElasticSearch的索引依舊還在，對他下搜尋指令還是能夠給你舊資料的索引，這時候如</description>
    </item>
    
    <item>
      <title>買一張增加戰鬥力的工作椅  Herman Miller Aeron Chair</title>
      <link>https://blog.niclin.tw/2016/06/27/%E8%B2%B7%E4%B8%80%E5%BC%B5%E5%A2%9E%E5%8A%A0%E6%88%B0%E9%AC%A5%E5%8A%9B%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%A4%85--herman-miller-aeron-chair/</link>
      <pubDate>Mon, 27 Jun 2016 05:28:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/27/%E8%B2%B7%E4%B8%80%E5%BC%B5%E5%A2%9E%E5%8A%A0%E6%88%B0%E9%AC%A5%E5%8A%9B%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%A4%85--herman-miller-aeron-chair/</guid>
      <description>埋下動機 正式踏入職場工作開始，至今也有四個月多了，前兩個月，都是彎頸用筆電，後來為了改善脖子的不舒服，就將螢幕改成外接輸出，脖子稍得舒緩。 為</description>
    </item>
    
    <item>
      <title>在Rails 4 上 實作 React.js 入門教學</title>
      <link>https://blog.niclin.tw/2016/06/21/%E5%9C%A8rails-4-%E4%B8%8A-%E5%AF%A6%E4%BD%9C-react.js-%E5%85%A5%E9%96%80%E6%95%99%E5%AD%B8/</link>
      <pubDate>Tue, 21 Jun 2016 19:39:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/21/%E5%9C%A8rails-4-%E4%B8%8A-%E5%AF%A6%E4%BD%9C-react.js-%E5%85%A5%E9%96%80%E6%95%99%E5%AD%B8/</guid>
      <description>React正夯 目前網路上的React.js實作在Rails大概都是在本篇文章產生前的一兩年，雖說時間並不久遠，但是以現今React火熱的程度</description>
    </item>
    
    <item>
      <title> rails 自製 icon</title>
      <link>https://blog.niclin.tw/2016/06/15/rails-%E8%87%AA%E8%A3%BD-icon/</link>
      <pubDate>Wed, 15 Jun 2016 01:26:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/15/rails-%E8%87%AA%E8%A3%BD-icon/</guid>
      <description>https://ryanboland.com/blog/use-a-custom-icon-font-similar-to-font-awesome/
https://github.com/FontCustom/fontcustom</description>
    </item>
    
    <item>
      <title>[Git] 2.9 支援 git diff 高亮顯示</title>
      <link>https://blog.niclin.tw/2016/06/14/git-2.9-%E6%94%AF%E6%8F%B4-git-diff-%E9%AB%98%E4%BA%AE%E9%A1%AF%E7%A4%BA/</link>
      <pubDate>Tue, 14 Jun 2016 22:16:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/14/git-2.9-%E6%94%AF%E6%8F%B4-git-diff-%E9%AB%98%E4%BA%AE%E9%A1%AF%E7%A4%BA/</guid>
      <description>Git2.9版本更新後，優化了git diff，在看Log的時候更直觀了，而不像之前改一行的幾個字，卻無法直接顯示，除非是使用github才可</description>
    </item>
    
    <item>
      <title>MacOS 10.11下 更新Git</title>
      <link>https://blog.niclin.tw/2016/06/14/macos-10.11%E4%B8%8B-%E6%9B%B4%E6%96%B0git/</link>
      <pubDate>Tue, 14 Jun 2016 21:42:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/14/macos-10.11%E4%B8%8B-%E6%9B%B4%E6%96%B0git/</guid>
      <description>如果你輸入 git --version 最後有顯示括號 &amp;lsquo;Apple.XXXXX&amp;rsquo; 就表示這是系統的Git 我們一般都會使用Homebrew來做安裝與更新，這樣一來由於OSX的優先權較高，會先去找</description>
    </item>
    
    <item>
      <title>SSH 公開金鑰認證（Public Key Authentication）：免密碼登入 Linux</title>
      <link>https://blog.niclin.tw/2016/06/07/ssh-%E5%85%AC%E9%96%8B%E9%87%91%E9%91%B0%E8%AA%8D%E8%AD%89public-key-authentication%E5%85%8D%E5%AF%86%E7%A2%BC%E7%99%BB%E5%85%A5-linux/</link>
      <pubDate>Tue, 07 Jun 2016 18:38:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/07/ssh-%E5%85%AC%E9%96%8B%E9%87%91%E9%91%B0%E8%AA%8D%E8%AD%89public-key-authentication%E5%85%8D%E5%AF%86%E7%A2%BC%E7%99%BB%E5%85%A5-linux/</guid>
      <description>這篇教你如何不需密碼就可登入Client，一般我們的Client多半使用Linux系統。 我們打開terminal的ssh登入該主機。 $ ssh example@111.222.333.444 在</description>
    </item>
    
    <item>
      <title>rails 非hash只想用array輸出page</title>
      <link>https://blog.niclin.tw/2016/06/06/rails-%E9%9D%9Ehash%E5%8F%AA%E6%83%B3%E7%94%A8array%E8%BC%B8%E5%87%BApage/</link>
      <pubDate>Mon, 06 Jun 2016 22:11:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/06/rails-%E9%9D%9Ehash%E5%8F%AA%E6%83%B3%E7%94%A8array%E8%BC%B8%E5%87%BApage/</guid>
      <description>myarray = Class.all @results = Kaminari.paginate_array(myarray).page(params[:page])
http://stackoverflow.com/questions/6934623/undefined-method-page-for-array0xafd0660</description>
    </item>
    
    <item>
      <title>如何處理陣列裡有重複的值</title>
      <link>https://blog.niclin.tw/2016/06/06/%E5%A6%82%E4%BD%95%E8%99%95%E7%90%86%E9%99%A3%E5%88%97%E8%A3%A1%E6%9C%89%E9%87%8D%E8%A4%87%E7%9A%84%E5%80%BC/</link>
      <pubDate>Mon, 06 Jun 2016 21:45:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/06/%E5%A6%82%E4%BD%95%E8%99%95%E7%90%86%E9%99%A3%E5%88%97%E8%A3%A1%E6%9C%89%E9%87%8D%E8%A4%87%E7%9A%84%E5%80%BC/</guid>
      <description>有時候會遇到倒出來的資料，可能有相同的值，但希望能把重複的值刪掉，只留下個別的值，那可以用uniq這個方法。 array = array.uniq 參考來源 http://stackoverflow.com/questions/5354850/how-do-i-match-two-arrays-with-duplicates-in-ruby</description>
    </item>
    
    <item>
      <title>[Rails] 如何重設你的專案名稱</title>
      <link>https://blog.niclin.tw/2016/06/05/rails-%E5%A6%82%E4%BD%95%E9%87%8D%E8%A8%AD%E4%BD%A0%E7%9A%84%E5%B0%88%E6%A1%88%E5%90%8D%E7%A8%B1/</link>
      <pubDate>Sun, 05 Jun 2016 19:36:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/05/rails-%E5%A6%82%E4%BD%95%E9%87%8D%E8%A8%AD%E4%BD%A0%E7%9A%84%E5%B0%88%E6%A1%88%E5%90%8D%E7%A8%B1/</guid>
      <description>這裡限定Rails版本為4，其餘版本是否支援可能需要在查詢。 在自己做一些小玩具專案的時候，或是專案初期可能名字會有想重新命名的困擾，但是絕對</description>
    </item>
    
    <item>
      <title>Ruby on Rails install on Mac 安裝步驟</title>
      <link>https://blog.niclin.tw/2016/06/04/ruby-on-rails-install-on-mac-%E5%AE%89%E8%A3%9D%E6%AD%A5%E9%A9%9F/</link>
      <pubDate>Sat, 04 Jun 2016 07:21:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/04/ruby-on-rails-install-on-mac-%E5%AE%89%E8%A3%9D%E6%AD%A5%E9%A9%9F/</guid>
      <description>前言 前陣子莫名的mbp螢幕掛點，好險還在保固內，但麻煩的是在工作上就整個節奏被打亂（因為最好用的還是自己的Mac)，感謝主管火速幫我生出一台</description>
    </item>
    
    <item>
      <title>使用 Friendly_id 與 Babosa 美化你的Rails 網址</title>
      <link>https://blog.niclin.tw/2016/06/04/%E4%BD%BF%E7%94%A8-friendly_id-%E8%88%87-babosa-%E7%BE%8E%E5%8C%96%E4%BD%A0%E7%9A%84rails-%E7%B6%B2%E5%9D%80/</link>
      <pubDate>Sat, 04 Jun 2016 01:11:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/06/04/%E4%BD%BF%E7%94%A8-friendly_id-%E8%88%87-babosa-%E7%BE%8E%E5%8C%96%E4%BD%A0%E7%9A%84rails-%E7%B6%B2%E5%9D%80/</guid>
      <description>Rails App 一般是使用資料庫裡的每筆資料id作為網址連結，例如 http://example.com/product/1，然而這樣的網址是沒有意義的，</description>
    </item>
    
    <item>
      <title>Junior Rails 兩個月實戰心得</title>
      <link>https://blog.niclin.tw/2016/04/10/junior-rails-%E5%85%A9%E5%80%8B%E6%9C%88%E5%AF%A6%E6%88%B0%E5%BF%83%E5%BE%97/</link>
      <pubDate>Sun, 10 Apr 2016 06:20:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/04/10/junior-rails-%E5%85%A9%E5%80%8B%E6%9C%88%E5%AF%A6%E6%88%B0%E5%BF%83%E5%BE%97/</guid>
      <description>關於我 我是Nic，自從xdite的Rails即戰力畢業後，工作至今也即將滿兩個月，其中的收穫與成長，讓我感覺就像是一場冒險，希望能夠透過文字</description>
    </item>
    
    <item>
      <title>Devise使用Google實作登入</title>
      <link>https://blog.niclin.tw/2016/03/12/devise%E4%BD%BF%E7%94%A8google%E5%AF%A6%E4%BD%9C%E7%99%BB%E5%85%A5/</link>
      <pubDate>Sat, 12 Mar 2016 08:07:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/03/12/devise%E4%BD%BF%E7%94%A8google%E5%AF%A6%E4%BD%9C%E7%99%BB%E5%85%A5/</guid>
      <description>Step1: 申請 Google API 啟用&amp;rdquo;Web Fonts Developer API&amp;rdquo; and “Google+ API&amp;rdquo; 前往 https://console.developers.google.com 申請一個 Web Fonts Developer API 然後千萬注意要將 Google+ API 這個服務也開啟 不然在最後都成功送 key</description>
    </item>
    
    <item>
      <title>[iterm2] 如何新增alias</title>
      <link>https://blog.niclin.tw/2016/01/13/iterm2-%E5%A6%82%E4%BD%95%E6%96%B0%E5%A2%9Ealias/</link>
      <pubDate>Wed, 13 Jan 2016 22:11:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/01/13/iterm2-%E5%A6%82%E4%BD%95%E6%96%B0%E5%A2%9Ealias/</guid>
      <description>alias就是別名的意思 在以下這個連結我們可以學習到如何在終端機打開sublime https://gist.github.com/artero/1236170 但是每次都要在終端機打上很長的 sublime (filename)太麻</description>
    </item>
    
    <item>
      <title>一個新鮮人找尋Rails工作的面試經驗 </title>
      <link>https://blog.niclin.tw/2016/01/07/%E4%B8%80%E5%80%8B%E6%96%B0%E9%AE%AE%E4%BA%BA%E6%89%BE%E5%B0%8Brails%E5%B7%A5%E4%BD%9C%E7%9A%84%E9%9D%A2%E8%A9%A6%E7%B6%93%E9%A9%97/</link>
      <pubDate>Thu, 07 Jan 2016 22:40:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/01/07/%E4%B8%80%E5%80%8B%E6%96%B0%E9%AE%AE%E4%BA%BA%E6%89%BE%E5%B0%8Brails%E5%B7%A5%E4%BD%9C%E7%9A%84%E9%9D%A2%E8%A9%A6%E7%B6%93%E9%A9%97/</guid>
      <description>##前言 這是我退伍後的面試經驗，希望能幫到一些人，雖然只是流水文啦XD 我在找工作的時候，實際Rails程度約半年，有過一次hackathon</description>
    </item>
    
    <item>
      <title>如何讓兩個資料表建立關聯</title>
      <link>https://blog.niclin.tw/2016/01/05/%E5%A6%82%E4%BD%95%E8%AE%93%E5%85%A9%E5%80%8B%E8%B3%87%E6%96%99%E8%A1%A8%E5%BB%BA%E7%AB%8B%E9%97%9C%E8%81%AF/</link>
      <pubDate>Tue, 05 Jan 2016 21:08:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2016/01/05/%E5%A6%82%E4%BD%95%E8%AE%93%E5%85%A9%E5%80%8B%E8%B3%87%E6%96%99%E8%A1%A8%E5%BB%BA%E7%AB%8B%E9%97%9C%E8%81%AF/</guid>
      <description>想法 假設我們擁有兩個資料表，一個是商品分類資料表，一個則是商品管理資料表，而該如何將這兩個資料表在Rails上建立關聯？ 一個分類裡面可以查詢</description>
    </item>
    
    <item>
      <title>實現投票功能 acts_as_votable</title>
      <link>https://blog.niclin.tw/2015/12/25/%E5%AF%A6%E7%8F%BE%E6%8A%95%E7%A5%A8%E5%8A%9F%E8%83%BD-acts_as_votable/</link>
      <pubDate>Fri, 25 Dec 2015 05:41:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/25/%E5%AF%A6%E7%8F%BE%E6%8A%95%E7%A5%A8%E5%8A%9F%E8%83%BD-acts_as_votable/</guid>
      <description>這兩天挑戰了12 in 12 Challenge的作法，目前第一關有學到一個投票的gem，筆記下來怕以後忘記。 不外乎這個gem的名稱正是acts_as</description>
    </item>
    
    <item>
      <title>在Rails上回溯操作的方法</title>
      <link>https://blog.niclin.tw/2015/12/24/%E5%9C%A8rails%E4%B8%8A%E5%9B%9E%E6%BA%AF%E6%93%8D%E4%BD%9C%E7%9A%84%E6%96%B9%E6%B3%95/</link>
      <pubDate>Thu, 24 Dec 2015 20:06:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/24/%E5%9C%A8rails%E4%B8%8A%E5%9B%9E%E6%BA%AF%E6%93%8D%E4%BD%9C%E7%9A%84%E6%96%B9%E6%B3%95/</guid>
      <description>generate和destroy是相反 rails generate controller FooBars baz quux rails destroy controller FooBars baz quux rails generate model Foo bar:string baz:integer rails destroy model Foo migrate和rollback相反 rake db:migrate rake db:rollback 回到初始狀態 rake</description>
    </item>
    
    <item>
      <title>Sublime Text 2 &#43; Emmet外掛</title>
      <link>https://blog.niclin.tw/2015/12/23/sublime-text-2---emmet%E5%A4%96%E6%8E%9B/</link>
      <pubDate>Wed, 23 Dec 2015 00:57:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/23/sublime-text-2---emmet%E5%A4%96%E6%8E%9B/</guid>
      <description>今天在看12to12 challenge時，看到作者輕鬆用了一小段語法就可以叫出一整串語法 上網查了一下發現是 Sublime Text 2的外掛插件 Emmet 安裝方式 clon</description>
    </item>
    
    <item>
      <title>學習如何包gem</title>
      <link>https://blog.niclin.tw/2015/12/13/%E5%AD%B8%E7%BF%92%E5%A6%82%E4%BD%95%E5%8C%85gem/</link>
      <pubDate>Sun, 13 Dec 2015 07:53:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/13/%E5%AD%B8%E7%BF%92%E5%A6%82%E4%BD%95%E5%8C%85gem/</guid>
      <description>這是一個新增Facebook讚與留言的功能 我們將他實作在 def social_plugin(plugin_name, options) width = options.delete(:width) height = options.delete(:height) style = &amp;quot;border:none; overflow:hidden; width:#{width}px; height:#{height}px;&amp;quot; src = &amp;quot;http://www.facebook.com/plugins/#{plugin_name}.php?#{options.to_param}&amp;quot; content_tag(:iframe, &amp;quot;&amp;quot;, src: src, scrolling: &amp;quot;no&amp;quot;, frameborder: &amp;quot;0&amp;quot;, style: style, allowtransparency: &amp;quot;true&amp;quot;) end def fb_like(like_url, custom_options={}) options = { href: like_url, send: false, layout:</description>
    </item>
    
    <item>
      <title>Service Object 使用時機</title>
      <link>https://blog.niclin.tw/2015/12/09/service-object-%E4%BD%BF%E7%94%A8%E6%99%82%E6%A9%9F/</link>
      <pubDate>Wed, 09 Dec 2015 06:44:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/09/service-object-%E4%BD%BF%E7%94%A8%E6%99%82%E6%A9%9F/</guid>
      <description>為何要使用Service Object: 顧名思義，Service Object是因為有某些類似的特定功能，像是一個『service』，跟資料庫中的model</description>
    </item>
    
    <item>
      <title>什麼時機要用 Helper, 什麼時機要用 partial</title>
      <link>https://blog.niclin.tw/2015/12/09/%E4%BB%80%E9%BA%BC%E6%99%82%E6%A9%9F%E8%A6%81%E7%94%A8-helper-%E4%BB%80%E9%BA%BC%E6%99%82%E6%A9%9F%E8%A6%81%E7%94%A8-partial/</link>
      <pubDate>Wed, 09 Dec 2015 06:42:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/09/%E4%BB%80%E9%BA%BC%E6%99%82%E6%A9%9F%E8%A6%81%E7%94%A8-helper-%E4%BB%80%E9%BA%BC%E6%99%82%E6%A9%9F%E8%A6%81%E7%94%A8-partial/</guid>
      <description>Helper: 使用 Helper 的情境多半是： 產生的 HTML code 需要與原始程式碼進行一些邏輯混合，但不希望 View 裡面搞得太髒。 需要與預設的 Rails 內建的一些方便 Helper 交叉使用。 使用 Helper 封裝</description>
    </item>
    
    <item>
      <title>delayed_job 與 sidekiq 兩套 gem, 他們之間的差異</title>
      <link>https://blog.niclin.tw/2015/12/09/delayed_job-%E8%88%87-sidekiq-%E5%85%A9%E5%A5%97-gem-%E4%BB%96%E5%80%91%E4%B9%8B%E9%96%93%E7%9A%84%E5%B7%AE%E7%95%B0/</link>
      <pubDate>Wed, 09 Dec 2015 06:40:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/09/delayed_job-%E8%88%87-sidekiq-%E5%85%A9%E5%A5%97-gem-%E4%BB%96%E5%80%91%E4%B9%8B%E9%96%93%E7%9A%84%E5%B7%AE%E7%95%B0/</guid>
      <description>delayed_job (https://github.com/collectiveidea/delayed_job) 使用關聯式資料庫，非常方便安裝使用。 sidekiq (http://sidekiq.org/) 使用高效能的Redis (http://redis.io/): key-value store來儲存要執行的任務，並且善用多執行序來增加效能，號稱可以以一</description>
    </item>
    
    <item>
      <title>為什麼 Rails 要分 production, test, development 三種環境</title>
      <link>https://blog.niclin.tw/2015/12/09/%E7%82%BA%E4%BB%80%E9%BA%BC-rails-%E8%A6%81%E5%88%86-production-test-development-%E4%B8%89%E7%A8%AE%E7%92%B0%E5%A2%83/</link>
      <pubDate>Wed, 09 Dec 2015 06:37:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/09/%E7%82%BA%E4%BB%80%E9%BA%BC-rails-%E8%A6%81%E5%88%86-production-test-development-%E4%B8%89%E7%A8%AE%E7%92%B0%E5%A2%83/</guid>
      <description>development environment 開發模式，用在你的開發的時候 使用 Rails 開發可以快速的原因之一，就是當你修改一個小東西，只要重新整理瀏覽器就可以馬上看到修改後的結果。這個秘訣</description>
    </item>
    
    <item>
      <title>請講解「繼承」這個觀念</title>
      <link>https://blog.niclin.tw/2015/12/09/%E8%AB%8B%E8%AC%9B%E8%A7%A3%E7%B9%BC%E6%89%BF%E9%80%99%E5%80%8B%E8%A7%80%E5%BF%B5/</link>
      <pubDate>Wed, 09 Dec 2015 06:33:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/09/%E8%AB%8B%E8%AC%9B%E8%A7%A3%E7%B9%BC%E6%89%BF%E9%80%99%E5%80%8B%E8%A7%80%E5%BF%B5/</guid>
      <description>Ruby為了避免多重繼承帶來程式碼過於複雜以及容易混淆的缺點，所以採用單一繼承（Single inheritance）。 不過單一繼承同樣有其缺</description>
    </item>
    
    <item>
      <title>軍旅生涯中的 Rails實戰班 上課心得</title>
      <link>https://blog.niclin.tw/2015/12/01/%E8%BB%8D%E6%97%85%E7%94%9F%E6%B6%AF%E4%B8%AD%E7%9A%84-rails%E5%AF%A6%E6%88%B0%E7%8F%AD-%E4%B8%8A%E8%AA%B2%E5%BF%83%E5%BE%97/</link>
      <pubDate>Tue, 01 Dec 2015 06:48:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/12/01/%E8%BB%8D%E6%97%85%E7%94%9F%E6%B6%AF%E4%B8%AD%E7%9A%84-rails%E5%AF%A6%E6%88%B0%E7%8F%AD-%E4%B8%8A%E8%AA%B2%E5%BF%83%E5%BE%97/</guid>
      <description>我是一個正在服一年義務役的阿兵哥，在退伍前一個月上Rails實戰班，利用休假時間上課、寫作業。 我相信我能克服在時間的縫隙裡完成超多作業，你一</description>
    </item>
    
    <item>
      <title>為何我們要用狀態機去設計 訂單狀態</title>
      <link>https://blog.niclin.tw/2015/11/28/%E7%82%BA%E4%BD%95%E6%88%91%E5%80%91%E8%A6%81%E7%94%A8%E7%8B%80%E6%85%8B%E6%A9%9F%E5%8E%BB%E8%A8%AD%E8%A8%88-%E8%A8%82%E5%96%AE%E7%8B%80%E6%85%8B/</link>
      <pubDate>Sat, 28 Nov 2015 23:07:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/28/%E7%82%BA%E4%BD%95%E6%88%91%E5%80%91%E8%A6%81%E7%94%A8%E7%8B%80%E6%85%8B%E6%A9%9F%E5%8E%BB%E8%A8%AD%E8%A8%88-%E8%A8%82%E5%96%AE%E7%8B%80%E6%85%8B/</guid>
      <description>如此一來就不用像php java等其他語言，先寫了1~99的功能，在設定條件，1不能到2，1只能到3，但3可以跳2，如此一來五種狀態就有20個</description>
    </item>
    
    <item>
      <title>(in controller) render 與 redirect_to 的差異</title>
      <link>https://blog.niclin.tw/2015/11/28/in-controller-render-%E8%88%87-redirect_to-%E7%9A%84%E5%B7%AE%E7%95%B0/</link>
      <pubDate>Sat, 28 Nov 2015 23:06:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/28/in-controller-render-%E8%88%87-redirect_to-%E7%9A%84%E5%B7%AE%E7%95%B0/</guid>
      <description>render render用於顯示處理完的結果。就算action中沒有定義，預設也是會執行render，傳回預設template。依照慣例傳回app/v</description>
    </item>
    
    <item>
      <title>db 的 transaction 是什麼？</title>
      <link>https://blog.niclin.tw/2015/11/28/db-%E7%9A%84-transaction-%E6%98%AF%E4%BB%80%E9%BA%BC/</link>
      <pubDate>Sat, 28 Nov 2015 23:06:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/28/db-%E7%9A%84-transaction-%E6%98%AF%E4%BB%80%E9%BA%BC/</guid>
      <description>ransaction (交易) 確保交易完成之後才將資料寫進database，就如同銀行進行提款時，提款方與放款方需同時驗證交易程序正常，才將餘額進行扣款，如發款</description>
    </item>
    
    <item>
      <title>after_create 是一種 model callbacks, 請問 model 有多少種 call backs 請列出來</title>
      <link>https://blog.niclin.tw/2015/11/28/after_create-%E6%98%AF%E4%B8%80%E7%A8%AE-model-callbacks-%E8%AB%8B%E5%95%8F-model-%E6%9C%89%E5%A4%9A%E5%B0%91%E7%A8%AE-call-backs-%E8%AB%8B%E5%88%97%E5%87%BA%E4%BE%86/</link>
      <pubDate>Sat, 28 Nov 2015 23:05:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/28/after_create-%E6%98%AF%E4%B8%80%E7%A8%AE-model-callbacks-%E8%AB%8B%E5%95%8F-model-%E6%9C%89%E5%A4%9A%E5%B0%91%E7%A8%AE-call-backs-%E8%AB%8B%E5%88%97%E5%87%BA%E4%BE%86/</guid>
      <description>Rails的ActiveRecord提供了很多方便的callbacks，讓開發者在寫controller的時候能夠更加簡潔的程式碼。 ** Creating an Object**</description>
    </item>
    
    <item>
      <title>board has_many posts, 新造物件宣告方式是： @post = @boards.posts.build 。那如果 book has_one :author，請問要怎麼宣告？</title>
      <link>https://blog.niclin.tw/2015/11/26/board-has_many-posts-%E6%96%B0%E9%80%A0%E7%89%A9%E4%BB%B6%E5%AE%A3%E5%91%8A%E6%96%B9%E5%BC%8F%E6%98%AF-post--boards.posts.build-%E9%82%A3%E5%A6%82%E6%9E%9C-book-has_one-author%E8%AB%8B%E5%95%8F%E8%A6%81%E6%80%8E%E9%BA%BC%E5%AE%A3%E5%91%8A/</link>
      <pubDate>Thu, 26 Nov 2015 07:48:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/26/board-has_many-posts-%E6%96%B0%E9%80%A0%E7%89%A9%E4%BB%B6%E5%AE%A3%E5%91%8A%E6%96%B9%E5%BC%8F%E6%98%AF-post--boards.posts.build-%E9%82%A3%E5%A6%82%E6%9E%9C-book-has_one-author%E8%AB%8B%E5%95%8F%E8%A6%81%E6%80%8E%E9%BA%BC%E5%AE%A3%E5%91%8A/</guid>
      <description>兩種方法 @author = @book.author.build @author = @book.build_author</description>
    </item>
    
    <item>
      <title>Rails 內如何操作 session?</title>
      <link>https://blog.niclin.tw/2015/11/26/rails-%E5%85%A7%E5%A6%82%E4%BD%95%E6%93%8D%E4%BD%9C-session/</link>
      <pubDate>Thu, 26 Nov 2015 07:47:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/26/rails-%E5%85%A7%E5%A6%82%E4%BD%95%E6%93%8D%E4%BD%9C-session/</guid>
      <description>session[:current_user_id] = @user.id  </description>
    </item>
    
    <item>
      <title>如何讓 strong_parameter 接受 nested_attributes</title>
      <link>https://blog.niclin.tw/2015/11/26/%E5%A6%82%E4%BD%95%E8%AE%93-strong_parameter-%E6%8E%A5%E5%8F%97-nested_attributes/</link>
      <pubDate>Thu, 26 Nov 2015 07:47:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/26/%E5%A6%82%E4%BD%95%E8%AE%93-strong_parameter-%E6%8E%A5%E5%8F%97-nested_attributes/</guid>
      <description>Rails的參數(Parameter)，Strong parameter是Rails4之後內建的安全機制，避免有心人士在參數回傳時惡意添加或是</description>
    </item>
    
    <item>
      <title>session 與 cookie 的差別</title>
      <link>https://blog.niclin.tw/2015/11/26/session-%E8%88%87-cookie-%E7%9A%84%E5%B7%AE%E5%88%A5/</link>
      <pubDate>Thu, 26 Nov 2015 07:46:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/26/session-%E8%88%87-cookie-%E7%9A%84%E5%B7%AE%E5%88%A5/</guid>
      <description>session的資料儲存在server端，而cookie則儲存於client端。 由於server與client不會一直保持著連線，也不會有雙</description>
    </item>
    
    <item>
      <title>before_action 的使用時機</title>
      <link>https://blog.niclin.tw/2015/11/26/before_action-%E7%9A%84%E4%BD%BF%E7%94%A8%E6%99%82%E6%A9%9F/</link>
      <pubDate>Thu, 26 Nov 2015 07:44:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/26/before_action-%E7%9A%84%E4%BD%BF%E7%94%A8%E6%99%82%E6%A9%9F/</guid>
      <description>ROR的原則有一項是： 不要重複自己(DRY: Don’t Repeat Yourself) – 撰寫出重複的程式碼是件壞事 那使用before_action的話，就可以收納很多重</description>
    </item>
    
    <item>
      <title>routing 的 namespace</title>
      <link>https://blog.niclin.tw/2015/11/25/routing-%E7%9A%84-namespace/</link>
      <pubDate>Wed, 25 Nov 2015 08:18:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/25/routing-%E7%9A%84-namespace/</guid>
      <description>路徑的前綴詞 namespace :admin do resources :products end 可以reach到的路徑就會是admin/products</description>
    </item>
    
    <item>
      <title>strong parameter</title>
      <link>https://blog.niclin.tw/2015/11/25/strong-parameter/</link>
      <pubDate>Wed, 25 Nov 2015 08:18:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/25/strong-parameter/</guid>
      <description>一般表單送到後端時，所有欄位的參數都會送出，如果對方想hack你的網站時，便可以猜測欄位進行竄改。那有可能是把使用者的權限改成admin，這</description>
    </item>
    
    <item>
      <title>user story 的格式</title>
      <link>https://blog.niclin.tw/2015/11/25/user-story-%E7%9A%84%E6%A0%BC%E5%BC%8F/</link>
      <pubDate>Wed, 25 Nov 2015 08:17:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/25/user-story-%E7%9A%84%E6%A0%BC%E5%BC%8F/</guid>
      <description>來自xdite課程的範例 身為商家的管理者，我要能夠在後台上架我的東西，並設定能夠販賣 身為管理者，我可以上傳一個商品的物品敘述及圖片 身為管理者</description>
    </item>
    
    <item>
      <title>user story 是什麼? </title>
      <link>https://blog.niclin.tw/2015/11/25/user-story-%E6%98%AF%E4%BB%80%E9%BA%BC/</link>
      <pubDate>Wed, 25 Nov 2015 08:16:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/25/user-story-%E6%98%AF%E4%BB%80%E9%BA%BC/</guid>
      <description>Computational Thinking 使用user story去思考使用者的模式，從使用者的角度去想像事情會怎麼發生，在依序展開各個事情發生的步驟以及條件所需。</description>
    </item>
    
    <item>
      <title>為什麼我們要用 user story?</title>
      <link>https://blog.niclin.tw/2015/11/25/%E7%82%BA%E4%BB%80%E9%BA%BC%E6%88%91%E5%80%91%E8%A6%81%E7%94%A8-user-story/</link>
      <pubDate>Wed, 25 Nov 2015 08:16:00 +0000</pubDate>
      
      <guid>https://blog.niclin.tw/2015/11/25/%E7%82%BA%E4%BB%80%E9%BA%BC%E6%88%91%E5%80%91%E8%A6%81%E7%94%A8-user-story/</guid>
      <description>了解使用者的角度進而去做出所需的功能，讓功能分割成每一個小的細節，實作上才不會覺得毫無頭緒。</description>
    </item>
    
  </channel>
</rss>