Published inStarbugs Weekly 星巴哥技術專欄Goroutine 的併發治理:掌握生命週期從併發的角度來看,Goroutine 跟 Thread 的概念很類似,都是將任務交給一個執行單元來處理。然而不同的是,Goroutine 將調度放在用戶態,因此更加輕量,也能避免多餘的 Context Switch。我們可以說,Go…Feb 7, 2023Feb 7, 2023
OAuth 2.0 的身份認證:OpenID ConnectOAuth 2 讓網路服務可以存取第三方的受保護資源,因此,有些開發者會進一步利用 OAuth 2 來進行使用者認證。但這中間存在著一些語義落差,因為 OAuth 2 當初設計目的是「授權」而不是「認證」,兩者關注的焦點會有些不同。OpenID Connect 是基於…Jan 20, 2023Jan 20, 2023
更好的選擇?用 JWT 取代 Session 的風險因為 HTTP 是無狀態協定,為了保持使用者狀態,需要後端實作 Session 管理機制。在早期方式中,使用者狀態會跟 HTTP 的 Cookie 綁定,等到有需要的時候,例如驗證身份,就能使用 Cookie 內的資訊搭配後端 Session 來進行。但自從 JWT…Jan 13, 20231Jan 13, 20231
Published inStarbugs Weekly 星巴哥技術專欄Goroutine 的併發治理:管理 Worker Pool併發會需要多個 Goroutine 來同時執行任務,Goroutine 雖然輕量,也還是有配置成本,如果每次新的任務進來,都需要重新建立並配置 Goroutine,一方面不容易管理 Goroutine 的記憶體,一方面也會消耗 CPU 的運算效能。這時 Worker Pool…Jan 5, 2023Jan 5, 2023
Published inStarbugs Weekly 星巴哥技術專欄Goroutine 的併發治理:值是怎麼傳遞?當併發時,每個 Goroutine 可以看成是一個個單獨的個體,他們維護著自己的 Call Stack,彼此互不干涉。如果希望這些默默運行的 Goroutine 攜手完成任務,就要在他們之間建立一種通訊方式。在 Go 中,資訊應該如何被傳遞?其中的權衡又有哪些?這篇文章會介紹…Dec 26, 2022Dec 26, 2022
Published inStarbugs Weekly 星巴哥技術專欄Goroutine 的併發治理:由錯誤處理談起當需要同時執行多個任務時,Go 開發者會多開 Goroutine 來分擔任務,這稱為併發。併發聽起來似乎很理想,能其他任務等待時,照樣執行需要運算的任務,有效利用 CPU 資源,但如果要用在生產環境,它也需要完善的管理機制。想想看,Goroutine…Dec 7, 2022Dec 7, 2022
Published inStarbugs Weekly 星巴哥技術專欄設計模式作為一種語言:物件導向的語法要素「設計模式」這個詞出自 Christopher Alexander 的《建築模式語言》,這本書出版於 1977 年,主題圍繞著建築,城市設計和社區宜居性。作者 Alexander 是一名建築師,他在意的是,能不能找到一種切實可行的模式語言,讓讀者用以設計辦公室、車庫或公共建築。Nov 20, 2022Nov 20, 2022
OAuth 2.0:用 Go 跟 Google 要資料在上一篇的結論中,我們講到開發者通常最想知道,開發 OAuth 2.0 客戶端需要什麼知識。後端工程師要實現 OAuth 2.0,最常見的情境是開發一個客戶端應用,用來存取資源擁有者的受保護資源。因此在這篇中,我們將用 Go…Nov 14, 2022Nov 14, 2022
OAuth 2.0:授權許可在前一篇中,我們討論了 OAuth 2.0 的角色與信道,知道 OAuth 2.0 將授權模型劃分為四個角色,讓它們經由前/後端信道交流,完成整個授權許可流程。在這篇中,我們要進一步來討論,具體的授權許可是什麼?我們將改由時序的角度出發,探討模型中的物件如何交換訊息…Nov 9, 2022Nov 9, 2022
OAuth 2.0:角色與信道使用者體驗是 B2C 重要的產品面向。通常一個網路服務,會要求使用者註冊帳戶後才能開始使用 — — 以台灣金融保險法規為例,使用者需要建立帳戶後,才能得到報價。站在行銷觀點,註冊會降低用戶的轉換率…Nov 2, 2022Nov 2, 2022