<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>2019-10th-Ithome30day on Syhlion Notes</title><link>https://blog.syhlion.tw/categories/2019-10th-ithome30day/</link><description>Recent content in 2019-10th-Ithome30day on Syhlion Notes</description><generator>Hugo</generator><language>zh-tw</language><lastBuildDate>Mon, 12 Nov 2018 10:34:14 +0800</lastBuildDate><atom:link href="https://blog.syhlion.tw/categories/2019-10th-ithome30day/index.xml" rel="self" type="application/rss+xml"/><item><title>Go劍復國-30天導入Golang Day30 從 PHP 重構為 Golang 經驗談</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day30-refactore-php-to-golang/</link><pubDate>Mon, 12 Nov 2018 10:34:14 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day30-refactore-php-to-golang/</guid><description>&lt;p&gt;進到了最後一天，剛好『雙11』結束沒多久，在『雙11』當天，台灣兩大購物平台紛紛掛點。那剛好敝公司也有類似的經驗，那今天就來談談，我如何重構敝公司的系統優化，把原本的 php 重構成 golang，改善瞬間流量的問題。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day29 如何設計一個非阻塞式的扣款系統</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day29-how-to-design-the-non-blocking-debit-system/</link><pubDate>Sun, 11 Nov 2018 17:56:36 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day29-how-to-design-the-non-blocking-debit-system/</guid><description>&lt;p&gt;我相信在很多系統上，很多效能瓶頸會在 database ，尤其是一些帳戶系統，如果無法解決扣款時 ACID 的相關議題，那壓力其實最終都會壓在 database 的單點上，在敝公司設計這相關系統時，我使用了另一個方式來做設計。當然下面介紹的東西，要用其他語言實現也不是不行，不過敝公司是選擇使用 golang 實現就是了。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day28 使用 Docker build 一個 Golang image</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day28-use-docker-build-golang-image/</link><pubDate>Sun, 11 Nov 2018 08:42:59 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day28-use-docker-build-golang-image/</guid><description>&lt;p&gt;在這個 k8s 當道的時代，任何東西都要 container 化，當然我們也稍微介紹一下，如果用 Docker 編譯 golang image 。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day27 如何在 Golang 嵌入 lua</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day27-golang-use-lua/</link><pubDate>Sat, 10 Nov 2018 12:23:51 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day27-golang-use-lua/</guid><description>&lt;p&gt;今天來介紹一個比較特別的應用，就是如何在 golang 使用 lua ，這種的應用場景通常會在一個固定流程裡面，但裡面有不同的商業邏輯，用 OOP(Object-oriented programming) 的 pattern 來解釋就是所謂的工廠模式，裡面產生的東西會有不同的邏輯，那些邏輯很適合用 lua 去寫。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day26 Golang Concurrency Pattern</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day26-golang-concurrency-pattern/</link><pubDate>Fri, 09 Nov 2018 08:52:58 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day26-golang-concurrency-pattern/</guid><description>&lt;p&gt;在前面有介紹過了 golang 的重點之一 goroutine ，golang 的設計讓 concurrency 非常容易，但是大家有沒有想過，goroutine 也不是什麼黑科技，最終電腦還是有所謂的 CPU &amp;amp; MEM 上限，所以也就意味著 goroutine 不能無窮無境的開，那今天就來討論 Concurrency Pattern，到底該如何設計。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day25 Golang 如何設計一個 buffer pool</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day25-golang-design-buffer-pool/</link><pubDate>Thu, 08 Nov 2018 09:46:18 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day25-golang-design-buffer-pool/</guid><description>&lt;p&gt;今天要進到比較理論的章節，也是比較難解說的部分，如果有什麼疑問或寫錯的地方，歡迎留言指教我。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day24 Golang 如何建構一個 websocket server</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day24-golang-build-websocket-server/</link><pubDate>Wed, 07 Nov 2018 09:10:42 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day24-golang-build-websocket-server/</guid><description>&lt;p&gt;今天要來介紹，如何用 golang 做一個 webosocket server 的相關應用。我個人沒有使用 golang 原生的 webscoket，而是用我前面一直有介紹到的 gorilla 團隊做的 &lt;a href="https://github.com/gorilla/websocket"&gt;gorilla/websocket&lt;/a&gt;，
他一樣有符合我的原則，而且沒有太多的依賴，非常適合拿來當個應用的基礎 package 。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day23 Golang 如何使用 redis</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day23-golang-use-redis/</link><pubDate>Tue, 06 Nov 2018 09:19:29 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day23-golang-use-redis/</guid><description>&lt;p&gt;今天要進入到，web屆，講到快取一定會提到的 redis 。 redis 真的是一種通用武器，不管你後端用什麼語言，還真沒看過沒人不會用 redis ，那當然我們就要介紹一下 redis 的基礎使用。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day22 Golang 如何使用 mysql</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day22-golang-use-mysql/</link><pubDate>Mon, 05 Nov 2018 09:14:40 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day22-golang-use-mysql/</guid><description>&lt;p&gt;再來我們來介紹，如果要做 web 相關應用服務，免不了一定有 database 相關需求，我們就以 mysql 當做例子，作為今天主題&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day21 Golang 如何使用 grpc</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day21-golang-use-protocal-grpc/</link><pubDate>Sun, 04 Nov 2018 09:14:04 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day21-golang-use-protocal-grpc/</guid><description>&lt;p&gt;我們今天來介紹，一個新的 protocal grpc，它是基於 protobuf 這個由 google 推出來，號稱比 json 更方便、更快速、更簡短的一種溝通格式。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day20 Golang 如何使用 http request</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day20-golang-http-request/</link><pubDate>Sat, 03 Nov 2018 09:13:32 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day20-golang-http-request/</guid><description>&lt;p&gt;上一章介紹到，如何建構 http server，那這篇就來教大家如何使用 http reqeust，一樣分兩個部分，一個是標準的函式庫用法，一個是小弟自己在包裝過方便使用跟資源控管的函式庫。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day19 如何用 Golang 寫一個簡易的 http server</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day19-golang-build-http-server/</link><pubDate>Fri, 02 Nov 2018 09:13:02 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day19-golang-build-http-server/</guid><description>&lt;p&gt;再來要寫一個簡單的小應用了，在這邊會用兩個 package 來介紹，一個是 golang standard lib，一個是我個人很常用的 gorilla 這個團隊推出的 mux 套件，先來介紹 standard 版的&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day18 Golang 常用函式庫-3</title><link>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day18-golang-stdlib-3/</link><pubDate>Thu, 01 Nov 2018 09:12:14 +0800</pubDate><guid>https://blog.syhlion.tw/2018/11/2019-10th-ithome30day-day18-golang-stdlib-3/</guid><description>&lt;p&gt;進入到常用函式庫第三天，也是最後一天介紹一些 stdlib 的應用，後續章節還會有一些第三方 lib 的介紹&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day17 Golang 常用函式庫-2</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day17-golang-stdlib-2/</link><pubDate>Wed, 31 Oct 2018 08:42:58 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day17-golang-stdlib-2/</guid><description>&lt;p&gt;今天這篇，也一樣是介紹一些，golang 常用的 stdlib ，來幫助大家可以更快更方便的，使用 golang 做一些常見的應用。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day16 Golang 常用函式庫-1</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day16-golang-stdlib-1/</link><pubDate>Tue, 30 Oct 2018 00:25:15 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day16-golang-stdlib-1/</guid><description>&lt;p&gt;接下來的單元，我會分為幾天，來介紹幾個常用的標準函式庫的使用方式，讓大家能很快地進入 golang 的世界&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day15 Golang package</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day15-golang-package/</link><pubDate>Mon, 29 Oct 2018 08:32:49 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day15-golang-package/</guid><description>&lt;p&gt;俗話說的好，『如果說我看得比別人更遠，那是因為我站在巨人的肩膀上。』，在 opensouce 裡面，也是一樣，我們可以提供自己寫好的 package 給別人用，也能引入別人所寫的 package。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day14 Golang error handler</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day14-golang-error-handler/</link><pubDate>Sun, 28 Oct 2018 10:09:43 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day14-golang-error-handler/</guid><description>&lt;p&gt;我寫到現在，我一直覺得 golang 的 error 設計，一直讓人又愛又恨&amp;hellip;，我們今天會分兩個面向來介紹它，一種是語言層面的 error ，也就是 panic，一種就是一般調用 func 所回傳的 error，改怎麼做整理&amp;hellip;&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day13 Golang select</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day13-golang-select/</link><pubDate>Sat, 27 Oct 2018 10:08:52 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day13-golang-select/</guid><description>&lt;p&gt;select 在 golang 裡面是一個跟 switch 很像，但又只專屬用在 channel 的一個功能&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day12 Golang channel</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day12-golang-channel/</link><pubDate>Fri, 26 Oct 2018 08:57:11 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day12-golang-channel/</guid><description>&lt;p&gt;接下來是 golang 重頭戲之二 channel ，上一篇已經有講過 gorotuine，channel 的用途非常多，可以拿來當不同 gorotuine 的溝通通道，也可以 buffer quene，那接下來開始介紹 channel&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day11 Golang goroutine</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day11-golang-gorotuine/</link><pubDate>Thu, 25 Oct 2018 08:33:08 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day11-golang-gorotuine/</guid><description>&lt;p&gt;接下來要進到 golang 的重點特色之一 goroutine ，江湖傳言，你寫 golang 沒用到 goroutine 以及 channel，就不算寫過 golang。 channel 會在明天的章節介紹，今天先來 goroutine&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day10 Golang Interface</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day10-golang-interface/</link><pubDate>Wed, 24 Oct 2018 08:25:37 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day10-golang-interface/</guid><description>&lt;p&gt;golang 的 interface，我覺得對初學者來說會有點疑惑，畢竟 interface 在這裡有兩個意思，一個代表『泛用型別』、一個代表類似傳統 OOP(Object-oriented programming) 所說的 interface，下面就來介紹兩種使用方式。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day9 Golang struct &amp; pointer</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day9-golang-struct-and-pointer/</link><pubDate>Tue, 23 Oct 2018 08:25:37 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day9-golang-struct-and-pointer/</guid><description>&lt;p&gt;接下來進入到 golang 的 struct &amp;amp; pointer，如果有學過 C 的應該挺熟悉的這兩個 keyword，畢竟 golang 是有號稱21世紀的C語言，不熟悉的也沒關係，可以把它當作像一般常見的 OOP (Object-oriented programming)，裡面會看到 class 來看待它，pointer的話就要稍微做一下功課才有辦法知道它的用意。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day8 Golang func</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day8-golang-func/</link><pubDate>Mon, 22 Oct 2018 08:37:07 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day8-golang-func/</guid><description>&lt;p&gt;golang 不是一種 OOP (Object-oriented programming) ，反而比較偏向 FP (Functional Programming)，雖然我個人認為它不是很純的 FP，但是它擁有 First-class function 的特性，所以可以用一些 script language 常見的手法，使用在 golang 上面。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day7 Golang map</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day7-golang-map/</link><pubDate>Sun, 21 Oct 2018 08:35:34 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day7-golang-map/</guid><description>&lt;p&gt;Golang 的 map，有蠻多小細節要注意的，例如thread safe相關的問題&amp;hellip;.&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day6 Golang array &amp; slice</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day6-golang-array-and-slice/</link><pubDate>Sat, 20 Oct 2018 08:33:42 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day6-golang-array-and-slice/</guid><description>&lt;p&gt;golang 的 array &amp;amp; slice 是個很有趣的東西，接下來就直接進入正題&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day5 Golang 邏輯控制</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day5-golang-control-flow/</link><pubDate>Fri, 19 Oct 2018 08:30:56 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day5-golang-control-flow/</guid><description>&lt;p&gt;再來進到 golang 邏輯控制的部分，go 因為保留字很少，相對的他的邏輯控制也相當簡單，下面就來介紹他&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day4 Golang型別</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day4-golang-types/</link><pubDate>Thu, 18 Oct 2018 08:44:39 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day4-golang-types/</guid><description>&lt;p&gt;golang 型別，其實和絕大多數的靜態強型別的語言，沒什麼兩樣，而且他是c like的語言，所以如果對 C 稍微有點概念的人，會覺得 golang 非常的親切，接下來我們就來介紹他的型別&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day3 如何宣告變數</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day3-golang-declare-variables/</link><pubDate>Wed, 17 Oct 2018 10:07:27 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day3-golang-declare-variables/</guid><description>&lt;p&gt;golang 在宣告變數上，也是我一個很喜歡的地方。 他擁有很多腳本語言(script language)的簡潔，但又擁有強型別的特性，下面就來介紹一些變數的宣告方式&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day2 如何安裝環境</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day2-install-golang/</link><pubDate>Tue, 16 Oct 2018 08:42:48 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day2-install-golang/</guid><description>&lt;p&gt;golang的環境安裝，以及環境的相依性來說，我個人認為，在我碰過的語言中，他是最親切也是最容易的。我個人建議不要使用 os 自帶的 package manager (ex apt-get、brew&amp;hellip;.)安裝，直接上官網下載原始檔下來安裝，以下教學為unix like的環境，應該mac、linux都通用。&lt;/p&gt;</description></item><item><title>Go劍復國-30天導入Golang Day1 為何選擇golang?</title><link>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day1-why-choose-golang/</link><pubDate>Mon, 15 Oct 2018 23:31:57 +0800</pubDate><guid>https://blog.syhlion.tw/2018/10/2019-10th-ithome30day-day1-why-choose-golang/</guid><description>&lt;p&gt;敝公司當初的technology stack 都是以 linux + php + nginx 為公司標配的開發的
模式，以初期的發展模式來說php 有幾個優點:&lt;/p&gt;</description></item></channel></rss>