How to build and publish your own GitBook free, unlimitedly, and automatically: using GitHub Pages and GitHub Actions

The new version of GitBook official web service (I called it GitBook V2 for short) has changed its product policy to be profit-oriented and not open source anymore. The important point is GitBook V2 does not offer unlimited books anymore. Since that, I tried to find another solution to publish GitBook.

Mostly I use GitBook to record some notes for sharing and reading. Additional fees or complex operations are not preferred.

In general, I prefer a solution: free, unlimited books, publishing automatically after revising, and easy configuration.

閱讀更多How to build and publish your own GitBook free, unlimitedly, and automatically: using GitHub Pages and GitHub Actions

免費無限建立自己的 GitBook 圖文教學 – 利用 GitHub Pages + GitHub Actions 自動發佈

自從對新版 GitBook 官方平台(GitBook V2)徹底失望,一直在留意能運作 GitBook 的替代方案,因為我很喜歡舊版 GitBook 工具的便利性、運用靈活、自訂性空間大,即使在封閉網路環境也能自架 GitBook。

GitBook 官方平台對書籍數量的限制是讓我徹底捨棄官方平台的最大因素。GitBook V1 允許免費版帳號有無限本公開書籍,V2 卻大幅限制只能有一本,付費版價格也很不親民,雖然後來開放到 10 本,但已經棄坑的心就像飛出去的全壘打回不來了。

我對新版 GitBook 官方平台的 吐槽 感想 可參考另一篇文章:淺談新版 GitBook(GitBook V2) —— 失去交流開放精神的企業導向產品

GitBook 我大部分用途是寫寫筆記,彙整成書籍形式方便查閱或分享,不希望造成額外的費用或時間成本。

簡單來說,我需要有一個平台可以免費放書、沒有書籍數量限制、設定不要太複雜、每次編輯書籍內容都能自動更新。

閱讀更多免費無限建立自己的 GitBook 圖文教學 – 利用 GitHub Pages + GitHub Actions 自動發佈

BDD/TDD差別是什麼? 手把手用 Cucumber 實作示範BDD

本文同步刊載於 ALPHA Camp Blog

上一篇文章介紹了 TDD (Test-Driven Development) 開發流程,並示範了如何五步驟實戰應用。

TDD 傳送門:TDD五步驟 手把手帶你實戰 Test-Driven Development 範例

TDD 重點回顧:

  1. 先寫測試再開發。
  2. 依循「紅燈/綠燈/重構」循環(Red/Green/Refactor)。
  3. 優點是在初期就確保測試程式的撰寫,而且更容易在初期定義出更貼近使用方的介面。

但 TDD 所撰寫出來的測試案例是一連串程式碼,過於偏重技術人員,不利與其他非技術的專案參與者討論,例如 PM (Product Manager) 或 PO (Product Owner)。此外,也不利產生一份如下圖這樣一目瞭然、容易閱讀的測試報告:

閱讀更多BDD/TDD差別是什麼? 手把手用 Cucumber 實作示範BDD

TDD五步驟 手把手帶你實戰 Test-Driven Development 範例

本文同步刊載於 ALPHA Camp Blog

「撰寫測試」已成為現代軟體開發的顯學。隨著軟體產品的規模越長越大,在不斷增加新功能、重構優化既有程式碼的過程,如何確保軟體既有功能不受影響,又能減少繁瑣的人工作業,靠的就是自動化測試。尤其當系統的業務邏輯龐大繁瑣,平時養成撰寫測試的好習慣更是保障軟體品質的關鍵。

閱讀更多TDD五步驟 手把手帶你實戰 Test-Driven Development 範例

Memcached 實作示範 — 用Memory Cache優化系統效能

本文同步刊載於 ALPHA Camp Blog

「為什麼網頁這麼慢!」

相信每個人都有類似經驗:遇到熱門新聞、限量特價商品、演唱會搶票,當短時間內大量流量湧入,網頁的存取常常因此失敗或異常緩慢,使用者抱怨連連。這不是因為程式功能寫錯,而是因大量運算或大流量導致系統表現不佳所產生的問題,屬於非功能性需求,也就是「效能優化」的範疇。隨著接觸的專案規模越大,除了功能實作,效能也是重要的課題。

閱讀更多Memcached 實作示範 — 用Memory Cache優化系統效能

[Java] BDD 測試框架 Cucumber 入門範例教學

Cucumber 是一個支援 BDD (Behaviour-Driven Development) 行為的自動化測試框架,支援多種常見的實作語言,包含 Java、Node.js、Go、Ruby 等。

關於 Cucumber 的入門介紹和基本術語可以參考以下文章:

本文示範如何在 Java 使用 Cucumber。

閱讀更多[Java] BDD 測試框架 Cucumber 入門範例教學

[Node.js] 安裝 NVM (Node Version Manager) 來切換 Node.js 版本 for Windows

NVM (Node Version Manager) 是 Node.js 的版本管理工具。Node.js 發展快速,迭代頻繁,很可能同時間在不同專案需要配置不同 Node.js 版本。因此會建議在安裝 Node.js 前先安裝 NVM,利用 NVM 幫助 Node.js 的版本控管和快速切換。

在 Windows 作業系統上的 NVM 是使用 coreybutler/nvm-windows,和 Unix-like 作業系統 (例如 Mac/Linux) 上的安裝方式不一樣,nvm 的指令也略有差異。

閱讀更多[Node.js] 安裝 NVM (Node Version Manager) 來切換 Node.js 版本 for Windows

[Node.js] 安裝 NVM (Node Version Manager) 來切換 Node.js 版本 for MacOS/CentOS/Ubuntu

NVM (Node Version Manager) 是 Node.js 的版本管理工具。Node.js 發展快速,迭代頻繁,很可能同時間在不同專案需要配置不同 Node.js 版本。因此會建議在安裝 Node.js 前先安裝 NVM,利用 NVM 幫助 Node.js 的版本控管和快速切換。

在 Unix-like 作業系統上的 NVM 都是使用 nvm-sh/nvm,因此安裝方式大同小異。

閱讀更多[Node.js] 安裝 NVM (Node Version Manager) 來切換 Node.js 版本 for MacOS/CentOS/Ubuntu

[Java] 印出物件內容的好幫手 – ReflectionToStringBuilder (3) 客製化輸出格式 ToStringStyle 範例

ReflectionToStringBuilder 除了能排除特定屬性名稱,還能對印出內容的格式進行客製化,達到更靈活的效果。

例如:自訂日期格式長相、敏感欄位資料馬賽克等等。

要達到輸出客製化,需要實作 ToStringStyle 抽象類別。本篇將就自訂日期輸出格式長相以及敏感欄位資料馬賽克這兩個效果進行示範。

閱讀更多[Java] 印出物件內容的好幫手 – ReflectionToStringBuilder (3) 客製化輸出格式 ToStringStyle 範例