<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Robert Chang (張凱強)</title><description>記錄軟體工程、和自我觀點的個人部落格</description><link>https://therobertchang.com/</link><language>zh-tw</language><item><title>AI 時代的軟體開發依然沒有萬靈丹</title><link>https://therobertchang.com/still-no-silver-bullet/</link><guid isPermaLink="true">https://therobertchang.com/still-no-silver-bullet/</guid><description>AI 讓生成程式碼變得簡單，卻無法解決軟體開發的本質困難：「你不知道你不知道的事」。在大量使用 AI 的未來，了解背後原理、權衡取捨，並保持獨立思考，才是工程師真正的核心價值。</description><pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate></item><item><title>轉職軟體工程師，並生存了兩年之後</title><link>https://therobertchang.com/changed-to-a-engineer-and-survived-for-two-years/</link><guid isPermaLink="true">https://therobertchang.com/changed-to-a-engineer-and-survived-for-two-years/</guid><description>深思自己在 ASTRO Camp 畢業後兩年的職業旅程。著重於我如何在轉職後面臨並克服技術和職業挑戰，強調了基礎技能的重要性，如 SQL、Ruby on Rails 和 Redis。也分享了從實際問題中學習的經驗，如何透過 Side Projects 挑戰自己，以及如何在 AI 時代保持技術敏銳度。不僅是對技術深入的剖析，也是關於個人成長和職業發展的反思。</description><pubDate>Wed, 15 Nov 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 學習地圖</title><link>https://therobertchang.com/elasticsearch-the-learning-map/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-the-learning-map/</guid><description>跟著 30 天的 Elasticsearch 學習之旅，從基本架構設定、資料處理技巧、運作機制原理，到多樣搜尋策略，一步步建立 ES 知識地圖。這不僅是一個技術分享，更是一個學習的冒險，一起探索 ES 的秘密，並找出更多你可以深入探討的方向。</description><pubDate>Sun, 15 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 如何控制回傳結果</title><link>https://therobertchang.com/elasticsearch-control-the-query-results/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-control-the-query-results/</guid><description>介紹 Elasticsearch 的結果該如何控制！從改變回傳格式（ YAML 或 JSON ）、精確的結果過濾，到實現靈活的分頁效果，文章中會介紹 ES 的實用查詢技巧。不只如此，還會一起看看如何優雅地處理大量數據的分頁問題，並在效能與查詢靈活性之間找到最佳平衡點。</description><pubDate>Sat, 14 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Fuzzy Match Query ( 模糊搜尋 )</title><link>https://therobertchang.com/elasticsearch-fuzzy-match-query/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-fuzzy-match-query/</guid><description>介紹 Elasticsearch 的模糊搜尋！本文深入介紹如何使用 fuzziness 和 fuzzy_transpositions 來優化搜尋結果，即使使用者打錯字也能找到想要的資料。從基本的模糊搜尋到進階的 transposition 技巧，我們一起來看看如何讓 Elasticsearch 的搜尋更靈活、更貼近使用者的需求，並在精確度和使用者體驗之間找到完美的平衡點！</description><pubDate>Fri, 13 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Phrase Search</title><link>https://therobertchang.com/elasticsearch-phrase-search/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-phrase-search/</guid><description>介紹 Elasticsearch 的 Phrase Search！文章中將帶你了解如何進行更精確的全文搜尋，確保單字的順序也被考慮在內。從基本的 match_phrase 搜尋到使用 slop 提高搜尋的靈活性，一起來看看怎麼讓 ES 的搜尋結果更符合使用者的期待，並在搜尋結果的精確度與靈活度之間找到平衡點！</description><pubDate>Thu, 12 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 如何一次搜尋多個欄位</title><link>https://therobertchang.com/elasticsearch-search-multiple-fields/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-search-multiple-fields/</guid><description>介紹 Elasticsearch 的 multi_match 搜尋！本文將帶你了解如何在多個欄位中進行搜尋，並透過範例教你如何使用 boosting 和 tie_breaker 來優化你的查詢結果。從基本的 multi_match 使用到進階的排名策略，一起探索 ES 的多欄位搜尋的祕密，並優化你的搜尋結果！</description><pubDate>Wed, 11 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 介紹評分 ( Scoring )</title><link>https://therobertchang.com/elasticsearch-scoring/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-scoring/</guid><description>介紹 Elasticsearch 中的神秘分數 score 與資料相關性的秘密！本文深入探討搜尋引擎中的評分概念，從 TF-IDF 到 BM25，我們一起理解它們如何影響搜尋結果的排序，並透過範例探討詞彙評分與 boosting 的運用。</description><pubDate>Tue, 10 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Full Text Query ( 全文搜尋 )</title><link>https://therobertchang.com/elasticsearch-full-text-query/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-full-text-query/</guid><description>介紹 Elasticsearch 的全文搜尋！本文將帶您了解 Full Text Query 的運作原理及使用技巧，從 Analyzer 到 Inverted Index，一起探討如何精準搜尋非結構化資料，並透過範例展示 match 查詢的靈活性與強大功能。一起來發掘 Elasticsearch 的秘密，讓資料查詢更精確、更便利！</description><pubDate>Thu, 05 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Term Level Query</title><link>https://therobertchang.com/elasticsearch-term-level-query/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-term-level-query/</guid><description>解析 Elasticsearch 的 Term Level 和 Range 搜尋技巧！本文深入解析 term level 搜尋的精準度與大小寫敏感性，並示範如何使用 ids 和 range 進行靈活搜尋。透過範例和圖片來解釋，還有探討 ES 的搜尋機制和常見問題，讓你的搜尋更精準、更靈活！</description><pubDate>Wed, 04 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 搜尋簡介</title><link>https://therobertchang.com/elasticsearch-basic-query/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-basic-query/</guid><description>探討 ES 的兩種主要搜尋方式：URI Searches 和 Query DSL。一起來理解它們的優缺點，並學習如何理解搜尋的 Response 內容，讓我們一起探索 Elasticsearch 為何被譽為地表最強搜尋引擎！</description><pubDate>Mon, 02 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - ReIndex &amp; Alias API</title><link>https://therobertchang.com/elasticsearch-reindex-and-alias/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-reindex-and-alias/</guid><description>探索 Elasticsearch 中如何更改已存在的 index 欄位資料類型！從直接更新的挑戰到使用 reindex 和 alias 的策略，一步步指引你如何靈活地管理和更新你的 ES index</description><pubDate>Thu, 28 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 資料類型的強制轉換</title><link>https://therobertchang.com/elasticsearch-type-coercion/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-type-coercion/</guid><description>介紹 Elasticsearch 的 type coercion 功能！從 JavaScript 的型別轉換到 Elasticsearch 的實驗，了解如何優雅地處理資料型態。還有，知道如何關閉自動轉換了嗎？一起來看看 Elasticsearch 的小技巧和建議！</description><pubDate>Wed, 27 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Mapping 以及基礎資料類型</title><link>https://therobertchang.com/elasticsearch-mapping-and-data-type/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-mapping-and-data-type/</guid><description>解釋 Elasticsearch 中有關於 Mapping 的秘密！從 Dynamic 到 Explicit Mapping，再到資料類型的運用，一起來深入了解 ES 是如何管理和儲存資料的。不懂 nested 和 flattened 的差別？沒問題，這裡解釋得很清楚！</description><pubDate>Tue, 26 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 使用 Analyze API 以及 Inverted indices</title><link>https://therobertchang.com/elasticsearch-use-analyze-api-and-inverted-indices/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-use-analyze-api-and-inverted-indices/</guid><description>深入了解 Elasticsearch 的 Analyze API 和 Inverted Indices。從如何使用 Analyze API 分析文字，到 Inverted Indices 的工作原理。</description><pubDate>Mon, 25 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Analyzer 介紹</title><link>https://therobertchang.com/elasticsearch-analyzer-introduction/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-analyzer-introduction/</guid><description>介紹 Elasticsearch 的 Analyzer！從 dynamic mapping 到 character filter、tokenizer 和 token filter，了解 ES 如何分析和處理文字資料，以提供高效的全文搜尋。不僅是技術，更是藝術，快來學習 ES 的魔法！</description><pubDate>Sat, 23 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Bulk Import</title><link>https://therobertchang.com/elasticsearch-bulk-import/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-bulk-import/</guid><description>想知道如何一次處理大量資料嗎？來試試 Elasticsearch 的 bulk API 吧！從 NDJSON 格式到實際操作，再到樂觀鎖的機制，一次告訴你。不只教學，還有實用小技巧等你發掘！</description><pubDate>Fri, 22 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Update &amp; Delete by query</title><link>https://therobertchang.com/elasticsearch-update-and-delete-by-query/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-update-and-delete-by-query/</guid><description>詳細介紹 Elasticsearch 中的 update_by_query 功能，解釋如何根據查詢結果批量更新 documents。文章還探討了背後的工作原理、版本衝突的處理方式，以及如何使用 delete_by_query 進行批量刪除</description><pubDate>Thu, 21 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Versioning 以及樂觀鎖</title><link>https://therobertchang.com/elasticsearch-versioning-and-optimistic-control/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-versioning-and-optimistic-control/</guid><description>介紹 Elasticsearch 中的 _version 欄位，解釋背後的意義和用途。文章還詳細介紹了如何使用 version 以及 primary term 搭配 sequence number 來解決 race condition 問題，並比較了這兩種方法的優缺點。</description><pubDate>Tue, 19 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 寫入資料以及基礎的錯誤恢復機制</title><link>https://therobertchang.com/elasticsearch-write-data-and-basic-recovery-process/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-write-data-and-basic-recovery-process/</guid><description>介紹 Elasticsearch 在寫入資料時的運作原理，包括 primary shard 的選擇、資料的一致性保證，以及錯誤恢復機制。文章還詳細介紹了 Primary Term、Sequence Number 和 Check Point 的概念，並解釋了它們在確保資料一致性中的重要性</description><pubDate>Mon, 18 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Upsert &amp; Routing</title><link>https://therobertchang.com/understand-elasticsearch-routing-and-upsert/</link><guid isPermaLink="true">https://therobertchang.com/understand-elasticsearch-routing-and-upsert/</guid><description>介紹 Elasticsearch 中的 upsert 操作、如何取代和刪除 document，以及 Elasticsearch 如何透過 routing 策略定位到正確的 shard。文章還解釋了為何在建立 index 時需要預先設定 primary shard 數量，並介紹了 Adaptive replica selection (ARS) 的概念。</description><pubDate>Sun, 17 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 使用 Script 來更新欄位</title><link>https://therobertchang.com/elasticsearch-scripts-update/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-scripts-update/</guid><description>本文探討 Elasticsearch 中使用 script 進行資料更新的策略。從基本的值更新到複雜的條件判斷，如何在更新時結合商業邏輯，以及如何利用 ctx.op 改變更新後的回傳結果</description><pubDate>Sat, 16 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Index &amp; Document 的 CRUD</title><link>https://therobertchang.com/crud-of-elasticsearch-index-and-document/</link><guid isPermaLink="true">https://therobertchang.com/crud-of-elasticsearch-index-and-document/</guid><description>本文深入探討 Elasticsearch 中 Index 的 CRUD 操作。從建立帶有特定設定的 index，到 document 的新增、讀取、更新，以及 ES 的 auto_create_index 機制和不可變的 document 更新策略。</description><pubDate>Fri, 15 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 在叢集中加入新的節點</title><link>https://therobertchang.com/elasticsearch-add-new-node-to-cluster/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-add-new-node-to-cluster/</guid><description>了解 Elasticsearch 叢集中如何透過新增節點將狀態從 YELLOW 轉為 GREEN。了解節點的加入、移除以及 Elasticsearch 的自動分配和錯誤處理能力。深入了解在安全模式下的節點加入方法以及如何在本地使用 HTTPS 的 ES</description><pubDate>Thu, 14 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Replica Shard 複製分片 &amp; Snapshot 快照</title><link>https://therobertchang.com/elasticsearch-replica-sharding/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-replica-sharding/</guid><description>深入探索 Elasticsearch 的 Replica shard 機制，了解其與 Primary shard 的區別、如何提高 Elasticsearch 的可用性和資料的吞吐量，以及與 Snapshot 的差異。學習如何有效地使用複製分片以確保資料的安全和高效能。</description><pubDate>Tue, 12 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Primary Shard 主要分片</title><link>https://therobertchang.com/elasticsearch-sharding/</link><guid isPermaLink="true">https://therobertchang.com/elasticsearch-sharding/</guid><description>深入探討 Elasticsearch 的分片 (Sharding) 機制，包括 primary shard 和 replica shard 的差異。了解為何需要分片、如何視覺化和管理 shard，以及如何選擇最佳的 shard 數量以優化效能和成本</description><pubDate>Mon, 11 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 探索叢集</title><link>https://therobertchang.com/inspect-elasticsearch-cluster/</link><guid isPermaLink="true">https://therobertchang.com/inspect-elasticsearch-cluster/</guid><description>本文介紹如何使用 Elasticsearch 的 Dev Tools 和 REST API 進行資料探索，包括查看叢集健康狀態、節點資訊和索引狀況。透過詳細的步驟和圖片，幫助讀者更深入了解 Elasticsearch 的操作和管理。</description><pubDate>Fri, 08 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 基本架構</title><link>https://therobertchang.com/basic-architecture-of-elasticsearch/</link><guid isPermaLink="true">https://therobertchang.com/basic-architecture-of-elasticsearch/</guid><description>本文深入探討 Elasticsearch 的基本架構，包括節點、叢集、document 和 index 的概念。透過詳細的解釋和例子，幫助讀者理解 Elasticsearch 如何組織和儲存資料。</description><pubDate>Thu, 07 Sep 2023 00:00:00 GMT</pubDate></item><item><title>使用 Docker 啟動 Elasticsearch 以及 Kibana</title><link>https://therobertchang.com/setup-elasticsearch-and-kibana/</link><guid isPermaLink="true">https://therobertchang.com/setup-elasticsearch-and-kibana/</guid><description>本文詳細介紹如何在本地環境使用 Docker 安裝 Elasticsearch 和 Kibana。從基本的 Docker 指令到成功啟動和訪問 Elasticsearch 和 Kibana 的界面，提供了簡單且實用的步驟。</description><pubDate>Mon, 04 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 各環境基本安裝指南</title><link>https://therobertchang.com/install-elasticsearch/</link><guid isPermaLink="true">https://therobertchang.com/install-elasticsearch/</guid><description>Elasticsearch 作為一個非常熱門的應用程式，安裝的方式有好多種，今天會分別介紹一下不同的安裝方式，像是 Elastic 原生的雲端、Linux 以及 macOS 的解壓縮安裝應用程式，或是使用方便又簡潔的 Docker 都可以讓你在學習 Elasticsearch 上跨過第一個門檻。</description><pubDate>Fri, 01 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - Elastic Stack 全家桶</title><link>https://therobertchang.com/introduce-elastic-stack/</link><guid isPermaLink="true">https://therobertchang.com/introduce-elastic-stack/</guid><description>探索 Elastic Stack 的全面指南，涵蓋 Elasticsearch、Kibana、Logstash、Beats 和 X-Pack。了解如何實現數據可視化、資料處理、安全性、監控和更多。</description><pubDate>Wed, 30 Aug 2023 00:00:00 GMT</pubDate></item><item><title>Elasticsearch - 這是什麼？用在哪？</title><link>https://therobertchang.com/introduce-elasticsearch/</link><guid isPermaLink="true">https://therobertchang.com/introduce-elasticsearch/</guid><description>本文介紹 Elasticsearch，一個開源的大數據分析和搜尋引擎。文章探討其在搜尋功能的應用，並強調其在大數據分析、性能和易用性方面的優勢。還提到市場上的接受度和實際案例，如 GitHub、Facebook 和 Netflix 的使用情況。最後，文章也簡單提及 Elasticsearch 的認證考試和即將涵蓋的主題。</description><pubDate>Sun, 27 Aug 2023 00:00:00 GMT</pubDate></item><item><title>Docker - 實際使用 Volume 來儲存資料</title><link>https://therobertchang.com/use-docker-volume/</link><guid isPermaLink="true">https://therobertchang.com/use-docker-volume/</guid><description>了解了 Docker Volume 的概念後，接著就是要實際的使用才會更理解整體的想法以及產生出如何應用的想法。</description><pubDate>Sat, 15 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 介紹 Volume</title><link>https://therobertchang.com/introduce-docker-volume/</link><guid isPermaLink="true">https://therobertchang.com/introduce-docker-volume/</guid><description>我們將圍繞在使用容器時，如何保存資料，以及保存資料為什麼會成為一個問題呢？</description><pubDate>Fri, 14 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - dockerignore 該如何使用呢？</title><link>https://therobertchang.com/how-to-use-dockerignore/</link><guid isPermaLink="true">https://therobertchang.com/how-to-use-dockerignore/</guid><description>使用 ignore 檔案在執行程式時忽略某些檔案是常見的一種做法，Docker 當然也不例外，但要什麼時候用？怎麼用？以及如何清理本地的硬碟空間呢？</description><pubDate>Thu, 13 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 多階段建置映像檔</title><link>https://therobertchang.com/multi-stage-build-image/</link><guid isPermaLink="true">https://therobertchang.com/multi-stage-build-image/</guid><description>使用多階段的方式來建置映像檔是一件很常見的事情，可以大幅度地縮小映像檔的大小。</description><pubDate>Wed, 12 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 建置映像檔的快取機制</title><link>https://therobertchang.com/cache-mechanism-for-building-docker-image/</link><guid isPermaLink="true">https://therobertchang.com/cache-mechanism-for-building-docker-image/</guid><description>建置映像檔所耗費的時間不容小覷，而 Docker 為了加速建置的時間也引入了快取的機制，可以提升使用者體驗，也能節省硬碟的空間</description><pubDate>Tue, 11 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 建置映像檔</title><link>https://therobertchang.com/build-docker-image/</link><guid isPermaLink="true">https://therobertchang.com/build-docker-image/</guid><description>我們將要開始製作屬於自己的映像檔，這也是將前面學習到的理論學以致用的時候，快一起來建置你的映像檔吧！</description><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - Dockerfile 的指令解析</title><link>https://therobertchang.com/docker-file-command-explanation/</link><guid isPermaLink="true">https://therobertchang.com/docker-file-command-explanation/</guid><description>Dockerfile 是構築映像檔的根基，也可以說是映像檔的設計圖，但在開始撰寫之前，我們需要理解很多基本的文法</description><pubDate>Sun, 09 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 映像檔的完全名稱以及儲存庫（ Registry ）</title><link>https://therobertchang.com/name-of-docker-image-and-docker-registry/</link><guid isPermaLink="true">https://therobertchang.com/name-of-docker-image-and-docker-registry/</guid><description>映像檔有更完整的名字，提供更完整的資訊，是我們需要了解的，以及儲存庫 Registry 是什麼？該怎麼使用呢？</description><pubDate>Sat, 08 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 推送映像檔到 DockerHub</title><link>https://therobertchang.com/push-docker-image-to-docker-hub/</link><guid isPermaLink="true">https://therobertchang.com/push-docker-image-to-docker-hub/</guid><description>映像檔除了放在本地之外，當然還有地方可以儲存，程式碼有 GitHub，映像檔就有所謂的 DockerHub 囉！</description><pubDate>Fri, 07 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 映像檔的唯讀性</title><link>https://therobertchang.com/the-read-only-nature-of-docker-image/</link><guid isPermaLink="true">https://therobertchang.com/the-read-only-nature-of-docker-image/</guid><description>映像檔是唯讀的，這代表什麼呢？代表我們沒辦法從外部修改映像檔，每一次建立的容器都是原始的面貌</description><pubDate>Thu, 06 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 映像檔快取的秘密</title><link>https://therobertchang.com/the-secret-of-docker-image-caching/</link><guid isPermaLink="true">https://therobertchang.com/the-secret-of-docker-image-caching/</guid><description>映像檔的檔案大小不一，且時常需要透過網際網路來傳輸，是什麼樣的方式讓傳輸的速度變快了呢？和許多設計策略一樣，使用快取會是第一種方式</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 映像檔的標籤</title><link>https://therobertchang.com/docker-image-tag/</link><guid isPermaLink="true">https://therobertchang.com/docker-image-tag/</guid><description>現在對於映像檔有一些概念了之後，我們就需要進一步的理解常見的 Image 的標籤到底是什麼作用，以及該如何使用它呢？</description><pubDate>Tue, 04 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 什麼是映像檔（ Image ）？</title><link>https://therobertchang.com/what-is-docker-image/</link><guid isPermaLink="true">https://therobertchang.com/what-is-docker-image/</guid><description>Docker 的映像檔對於剛開始學習的人是一個非常抽象的東西，它就像是一個神秘的檔案，可以製作出可以用的容器，怎麼說呢？就像是把一切的細節都壓縮在一個檔案中，在解壓縮的概念吧</description><pubDate>Mon, 03 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 虛擬網路中的 DNS 有什麼不同？</title><link>https://therobertchang.com/the-dns-in-the-docker/</link><guid isPermaLink="true">https://therobertchang.com/the-dns-in-the-docker/</guid><description>DNS 是網際網路中很基本的一個概念，常見的 google.com 就是一個 DNS，而在 Docker 的虛擬網路中，DNS 是如何運作呢？是不是和我們所想的不一樣呢？</description><pubDate>Sun, 02 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - Network 的基礎指令</title><link>https://therobertchang.com/docker-network-command/</link><guid isPermaLink="true">https://therobertchang.com/docker-network-command/</guid><description>現在對於 Docker Network 有一些基礎的認識，就可以開始學習如何使用，Docker 的許多指令都很相像，讓我們快速地來操作 Docker Network 吧！</description><pubDate>Sat, 01 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 網路世界 ( 下 )</title><link>https://therobertchang.com/docker-netowrk-part-two/</link><guid isPermaLink="true">https://therobertchang.com/docker-netowrk-part-two/</guid><description>容器本身的 IP 位置竟然和電腦本身的不同，這是怎麼回事？這和防火牆以及整個網路基礎是有關係的。</description><pubDate>Fri, 30 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 網路世界 ( 上 )</title><link>https://therobertchang.com/docker-network/</link><guid isPermaLink="true">https://therobertchang.com/docker-network/</guid><description>在使用過容器之後，對於 Docker 有了更進一步的了解，但網路可以說是 Docker 的核心之一，我們一定要搞清楚它。</description><pubDate>Thu, 29 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 深入了解 Container 內部 ( 下 )</title><link>https://therobertchang.com/deep-into-docker-container-part-two/</link><guid isPermaLink="true">https://therobertchang.com/deep-into-docker-container-part-two/</guid><description>昨天單純地介紹了如何使用終端機和容器內部進行溝通，而這篇文章將會介紹容器的初始化狀態以及相關指令。</description><pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 深入了解 Container 內部 ( 上 )</title><link>https://therobertchang.com/deep-into-docker-container/</link><guid isPermaLink="true">https://therobertchang.com/deep-into-docker-container/</guid><description>Docker Container 的基礎指令已經熟悉了之後，我們需要更深入地理解我們是如何和 Container 連線的。</description><pubDate>Tue, 27 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - Container vs 虛擬機</title><link>https://therobertchang.com/docker-container-versus-virtual-machine/</link><guid isPermaLink="true">https://therobertchang.com/docker-container-versus-virtual-machine/</guid><description>這樣的討論是層出不窮的，到底 Container 和虛擬機有什麼不同呢？我們該從什麼角度思考？以及不同作業系統又有什麼不一樣？</description><pubDate>Mon, 26 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - Container 的相關指令 ( 下 )</title><link>https://therobertchang.com/how-to-use-docker-container-part-three/</link><guid isPermaLink="true">https://therobertchang.com/how-to-use-docker-container-part-three/</guid><description>刪除掉一個 Docker 容器才算是完整的結束一個生命週期，試著刪除掉自己建立起來的容器，感受一下容器的生命週期</description><pubDate>Sun, 25 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - Container 的相關指令 ( 中 )</title><link>https://therobertchang.com/how-to-use-docker-container-part-two/</link><guid isPermaLink="true">https://therobertchang.com/how-to-use-docker-container-part-two/</guid><description>除了列出所有的容器之外，我們還可以替 Docker 的容器進行命名以及重新啟動停止的容器</description><pubDate>Sat, 24 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - Container 的相關指令 ( 上 )</title><link>https://therobertchang.com/how-to-use-docker-container/</link><guid isPermaLink="true">https://therobertchang.com/how-to-use-docker-container/</guid><description>除了基本的 run 之外，Container 還有許多操作可以使用，讓我們拆分成三個篇章來解釋一些指令之間的作用</description><pubDate>Fri, 23 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 啟動時做了些什麼？</title><link>https://therobertchang.com/what-happens-when-a-docker-container-run/</link><guid isPermaLink="true">https://therobertchang.com/what-happens-when-a-docker-container-run/</guid><description>啟動了一個 nginx 容器，在網頁上看到了 nginx 的頁面，這是怎麼回事，一個容器啟動時到底發生了什麼事？</description><pubDate>Thu, 22 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 啟動 Container</title><link>https://therobertchang.com/run-the-docker-container/</link><guid isPermaLink="true">https://therobertchang.com/run-the-docker-container/</guid><description>啟動一個容器在 Docker 中是一個最基本的操作，也可以說是打開 Docker 的第一扇門，就如同程式語言的 HelloWorld 一樣，運行一個容器也是 Docker 的敲門磚</description><pubDate>Wed, 21 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 到底是什麼？</title><link>https://therobertchang.com/what-is-docker/</link><guid isPermaLink="true">https://therobertchang.com/what-is-docker/</guid><description>對於不理解虛擬機器的人來說，Docker 又是更抽象的存在，所以它到底是什麼？拿來做什麼？好處是什麼？</description><pubDate>Tue, 20 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 基礎的部件以及架構</title><link>https://therobertchang.com/docker-basic-structure/</link><guid isPermaLink="true">https://therobertchang.com/docker-basic-structure/</guid><description>Docker 本身透過各個不同的部件所組成，不同的部件本身具備不同的任務，如何讓整個 Docker 組織運作起來，則是 Daemon 本身的任務</description><pubDate>Mon, 19 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 安裝以及環境設置</title><link>https://therobertchang.com/install-docker/</link><guid isPermaLink="true">https://therobertchang.com/install-docker/</guid><description>因為 Docker 本身需要和作業系統打交道，所以安裝的版本也進一步地劃分為不同的作業系統</description><pubDate>Sun, 18 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 學習的行前準備</title><link>https://therobertchang.com/docker-pretrip-information/</link><guid isPermaLink="true">https://therobertchang.com/docker-pretrip-information/</guid><description>在開始學習 Docker 之前，我們需要安裝一些必要的軟體或是註冊相關的網站。</description><pubDate>Sat, 17 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Docker - 是怎麼來的？</title><link>https://therobertchang.com/where-is-docker-come-from/</link><guid isPermaLink="true">https://therobertchang.com/where-is-docker-come-from/</guid><description>Docker 的橫空出世以及電腦科學 30 年的演進，到底帶給我們什麼？</description><pubDate>Fri, 16 Sep 2022 00:00:00 GMT</pubDate></item><item><title>輸入網址後，那些被隱藏的過程</title><link>https://therobertchang.com/behind-the-http/</link><guid isPermaLink="true">https://therobertchang.com/behind-the-http/</guid><description>你知道輸入網址之後發生了什麼事嗎？國外網友做了一張有趣的圖片，試著來從頭走一次看看，自己到底知不知道發生什麼事？</description><pubDate>Tue, 15 Feb 2022 00:00:00 GMT</pubDate></item><item><title>RSpec - 五個自動化測試的好處</title><link>https://therobertchang.com/five-benefits-of-automated-testing/</link><guid isPermaLink="true">https://therobertchang.com/five-benefits-of-automated-testing/</guid><description>當你在猶豫是否要寫自動化測試的時候，可以參考一下這五個好處，或許可以替你帶來意想不到的效果</description><pubDate>Thu, 14 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 如何使用 Factories 以及 Fixtures</title><link>https://therobertchang.com/rspec-factories-and-fixtures/</link><guid isPermaLink="true">https://therobertchang.com/rspec-factories-and-fixtures/</guid><description>在寫 Rails 時，主要建立假資料有 Factories 以及 Fixtures 兩種方式，這篇文章會就兩種不同方式進行解釋，以及如何使用。</description><pubDate>Wed, 13 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 如何撰寫 Characterization Test？</title><link>https://therobertchang.com/rspec-characterization-test/</link><guid isPermaLink="true">https://therobertchang.com/rspec-characterization-test/</guid><description>表徵測試 ( Characterization Test ) 的目的是幫助工程師驗證對應用程式所做的修改不會造成不期望的改變，大部分是替一個沒有足夠單元測試的應用程式架起的保護網。</description><pubDate>Tue, 12 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 關於 Mock、Stub 的解釋</title><link>https://therobertchang.com/rspec-mock-stub/</link><guid isPermaLink="true">https://therobertchang.com/rspec-mock-stub/</guid><description>對我來說 Mock、Stub 都是很難一言以蔽之的概念，決定挽起袖子，認真的來梳理一下這之間的差別到底是什麼？</description><pubDate>Mon, 11 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 測試該挑哪幾種寫？哪幾種不要寫？</title><link>https://therobertchang.com/rspec-which-test-is-important/</link><guid isPermaLink="true">https://therobertchang.com/rspec-which-test-is-important/</guid><description>在 Rails 的測試分成很多種類型，但時間卻是固定的，我們該權衡什麼樣的測試是重要的，什麼樣的測試可以被更重要的測試給 Cover 到</description><pubDate>Sun, 10 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 介紹 WebMock、VCR</title><link>https://therobertchang.com/rspec-vcr-webmock/</link><guid isPermaLink="true">https://therobertchang.com/rspec-vcr-webmock/</guid><description>WebMock 以及 VCR 是當 Rails 需要測試第三方 API 時常見的手段，透過錄下整個 Request 以及 Response 的過程來模擬呼叫 API 的真實模樣</description><pubDate>Sat, 09 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 介紹 Capybara 以及如何設定</title><link>https://therobertchang.com/rspec-capybara-setting/</link><guid isPermaLink="true">https://therobertchang.com/rspec-capybara-setting/</guid><description>利用瀏覽器自動化測試也是一種很常見的手段，在 Rails 中，Capybara 就是內建的瀏覽器自動化測試套件，可以幫助你測試網頁的行為是否符合預期</description><pubDate>Fri, 08 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 介紹 FactoryBot Rails 以及如何設定</title><link>https://therobertchang.com/rspec-factory-bot/</link><guid isPermaLink="true">https://therobertchang.com/rspec-factory-bot/</guid><description>FactoryBot 是在撰寫 RSpec 時不可或缺的一個套件，製造假的資料是一件很浪費時間的事情，但 FactoryBot 提供很好的介面和方法讓我們快速建立假物件來進行測試。</description><pubDate>Thu, 07 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 結合 Ruby on Rails 的介紹</title><link>https://therobertchang.com/rspec-rails-intro/</link><guid isPermaLink="true">https://therobertchang.com/rspec-rails-intro/</guid><description>RSpec 是一個獨立的測試框架，但最常應用的場景還是和 Rails 做結合，所以有另一個 Gem 叫做 rspec-rails，算是為了可以更好地相容 Rails 而出現的特規版</description><pubDate>Wed, 06 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - Spy 在測試中的間諜</title><link>https://therobertchang.com/rspec-spies/</link><guid isPermaLink="true">https://therobertchang.com/rspec-spies/</guid><description>RSpec 中的 mock 也是核心函式庫的一員，在測試的時候，常常會有依賴不同方法回傳值得情況發生，spy 是除了 double 以及 instance double 之外的另一種用法</description><pubDate>Tue, 05 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - Instance Doubles</title><link>https://therobertchang.com/rspec-instance-double/</link><guid isPermaLink="true">https://therobertchang.com/rspec-instance-double/</guid><description>RSpec 中的 mock 也是核心函式庫的一員，在測試的時候，常常會有依賴不同方法回傳值得情況發生，除了基本的 Double 之外，更實際的 instance double 也非常實用</description><pubDate>Mon, 04 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - Double Object</title><link>https://therobertchang.com/rspec-double-object/</link><guid isPermaLink="true">https://therobertchang.com/rspec-double-object/</guid><description>RSpec 中的 mock 也是核心函式庫的一員，在測試的時候，常常會有依賴不同方法回傳值得情況發生，為了方便測試，我們需要假裝一下</description><pubDate>Sun, 03 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 更多的 Matchers ( 下 )</title><link>https://therobertchang.com/rspec-matchers-part-four/</link><guid isPermaLink="true">https://therobertchang.com/rspec-matchers-part-four/</guid><description>Matcher 除了 eq, eql, equal 之外，還有更多特殊的使用方式，這篇文章將會介紹常見的 include, raise_error 這些一定會寫到的 RSpec matcher</description><pubDate>Sat, 02 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 更多的 Matchers ( 中 )</title><link>https://therobertchang.com/rspec-matchers-part-three/</link><guid isPermaLink="true">https://therobertchang.com/rspec-matchers-part-three/</guid><description>Matcher 除了 eq, eql, equal 之外，還有更多特殊的使用方式，這篇文章將會介紹你如何判斷陣列中所有的值，以及更優雅的測試結果的改變過程</description><pubDate>Fri, 01 Oct 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 更多的 Matchers ( 上 )</title><link>https://therobertchang.com/rspec-matchers-part-two/</link><guid isPermaLink="true">https://therobertchang.com/rspec-matchers-part-two/</guid><description>Matcher 除了 eq, eql, equal 之外，還有更多特殊的使用方式，這篇文章將會介紹判斷大小以及布林值的 matchers</description><pubDate>Thu, 30 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 你一定要知道的 Matchers</title><link>https://therobertchang.com/rspec-matchers/</link><guid isPermaLink="true">https://therobertchang.com/rspec-matchers/</guid><description>Matcher 可以說是測試中最重要的一環，測試意味著我們要匹配某些結果是否相同，而 matcher 正是把這件事做好的 X 因子</description><pubDate>Wed, 29 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 分享範例，整理範例</title><link>https://therobertchang.com/rspec-shared-example/</link><guid isPermaLink="true">https://therobertchang.com/rspec-shared-example/</guid><description>程式碼需要共用，測試的程式碼當然也不例外，使用 shared_example 可以重複利用相同的測試區塊</description><pubDate>Tue, 28 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 學會使用 subject</title><link>https://therobertchang.com/variables-of-rspec/</link><guid isPermaLink="true">https://therobertchang.com/variables-of-rspec/</guid><description>思考變數是一件很痛苦的事情，而 RSpec 的 subject 可以讓你不需要想那麼多，快速地進入測試</description><pubDate>Mon, 27 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - Hooks 們以及作用域的差別</title><link>https://therobertchang.com/rspec-hooks-and-scope/</link><guid isPermaLink="true">https://therobertchang.com/rspec-hooks-and-scope/</guid><description>Hooks 是軟體中一個很常見的概念，放在 RSpec 中也不例外，當然替範例提供了各式各樣的 Hook 做使用</description><pubDate>Sun, 26 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 用 Context 來組織程式碼區塊</title><link>https://therobertchang.com/learn-to-use-context/</link><guid isPermaLink="true">https://therobertchang.com/learn-to-use-context/</guid><description>Context 的中文可以解釋成脈絡，利用脈絡來組織 RSpec 的程式碼是很常見的一種做法</description><pubDate>Sat, 25 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 實用的 let 方法以及客製化錯誤訊息</title><link>https://therobertchang.com/let-method-and-customize-error-message/</link><guid isPermaLink="true">https://therobertchang.com/let-method-and-customize-error-message/</guid><description>let 方法是整個 RSpec 的靈魂，我們會不斷地使用這個方法來建立實用的測試物件</description><pubDate>Fri, 24 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 整理重複煩人的測試</title><link>https://therobertchang.com/organize_examples/</link><guid isPermaLink="true">https://therobertchang.com/organize_examples/</guid><description>隨著測試越來越多，是時候該把界線劃清，整理一下測試了</description><pubDate>Thu, 23 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 讓一個範例維持一種期望</title><link>https://therobertchang.com/how-to-deal-with-lots-examples/</link><guid isPermaLink="true">https://therobertchang.com/how-to-deal-with-lots-examples/</guid><description>隨著測試的數量增加，範例越來越多，這時候讓一個範例保持一個期望是很重要的</description><pubDate>Wed, 22 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 學會閱讀錯誤到通過測試</title><link>https://therobertchang.com/reading-errors-to-passing-test/</link><guid isPermaLink="true">https://therobertchang.com/reading-errors-to-passing-test/</guid><description>從測試的錯誤訊息來找到原因，並嘗試通過測試，完成一個完整的循環</description><pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 基礎語法</title><link>https://therobertchang.com/basic-syntax-of-rspec/</link><guid isPermaLink="true">https://therobertchang.com/basic-syntax-of-rspec/</guid><description>RSpec 是 Ruby on Rails 中最常被使用的測試框架，本文將介紹基礎的語法，讓讀者可以更進一步理解並運用</description><pubDate>Mon, 20 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - TDD 測試驅動開發</title><link>https://therobertchang.com/test-driven-development/</link><guid isPermaLink="true">https://therobertchang.com/test-driven-development/</guid><description>TDD 是一個廣為人知的測試開發方式，但實際上是如何運作的？以及帶來的好處是什麼呢？</description><pubDate>Sun, 19 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 初始化的資料夾剖析</title><link>https://therobertchang.com/initial-rpsec-folder-profiling/</link><guid isPermaLink="true">https://therobertchang.com/initial-rpsec-folder-profiling/</guid><description>當 rspec --init 後，會得到一些自動生成的檔案，今天這篇文章將介紹這些檔案的用處以及設定</description><pubDate>Sat, 18 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 安裝以及環境設定</title><link>https://therobertchang.com/install-rspec-and-setting/</link><guid isPermaLink="true">https://therobertchang.com/install-rspec-and-setting/</guid><description>使用 RSpec 之前，基本的環境設定是必要的，這篇文章會手把手帶您把 RSpec 的環境設定好</description><pubDate>Fri, 17 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 不同種類的測試</title><link>https://therobertchang.com/different-types-of-tests/</link><guid isPermaLink="true">https://therobertchang.com/different-types-of-tests/</guid><description>測試是一種統稱，而測試又分做很多不同類型的測試，在使用 RSpec 時，我們也要清楚地知道，自己在寫什麼樣的測試</description><pubDate>Thu, 16 Sep 2021 00:00:00 GMT</pubDate></item><item><title>RSpec - 介紹 RSpec 測試框架</title><link>https://therobertchang.com/what-is-the-rspec/</link><guid isPermaLink="true">https://therobertchang.com/what-is-the-rspec/</guid><description>RSpec 可以說是 Rails 工程師最常使用的測試框架，撰寫起來就像寫英文一樣優雅，又不會因此而失去測試的目的，一定要試試看</description><pubDate>Wed, 15 Sep 2021 00:00:00 GMT</pubDate></item><item><title>JavaScript ES6 的新語法</title><link>https://therobertchang.com/javascript-es6-syntax/</link><guid isPermaLink="true">https://therobertchang.com/javascript-es6-syntax/</guid><description>JavaScript ES6 多了很多實用的語法糖衣，來試試看</description><pubDate>Sun, 22 Aug 2021 00:00:00 GMT</pubDate></item></channel></rss>