第 166 期 - 好運、幸福通通兔 You

本週專欄

Explaining Pagination in ElasticSearch

大家好,這週的專欄是 Starbugs Writers 吳俊廷 所分享的 「Explaining Pagination in ElasticSearch」

Pagination (分頁) 是網頁呈現資料時很常見的技術,因為當需要從後端返回的資料有很多時,他可以減輕後端的負擔,同時改善使用者體驗,文章中跟大家分享三種分頁技術 (Offset, Keyset, Cursor-based) 的實作細節與其優點及缺點;並且闡述如何使用 ElasticSearch 來達成三種分頁技術實作,那麼在實作時該選擇哪一個比較合適呢?相信看完這週專欄文章你的心裡就會有答案了!

前端開發

A cure for React useState hell?

在 React 裡面,如果要為 component 定義自身的狀態,通常都會直接使用 useState,但如果 state 裡面是保管著物件狀態的話,那在使用 set* 的時候就特別注意要使全新的物件,如果物件裡有許多欄位,那每次更新時都得要注意這件事情。而文章中提到了可以使用 useReducer 改善操作資料的複雜度,也可以在同個地方驗證是否要更新狀態。

Applying SOLID principles to TypeScript

SOLID 原則分別是:

  1. 強調一個類只負責一件事的單一責任
  2. 程式碼應該對擴展開放,但對修改封閉的開放封閉
  3. 子類別要遵從父類別設計的里氏替換
  4. 類別應該只實現它所需要的介面的介面隔離
  5. 用抽象介面解除高低層次模組間依賴關係的依賴反轉

SOLID 是為了提高物件導向設計的可讀性,適應性,可擴展性和可維護性。文章裡使用 TypeScript 作為範例,說明如何將這幾個原則應用到 TypeScript 中。

A Complete Guide to CSS Grid

我知道你可能看過超過 100 篇在介紹關於如何使用 CSS 的 Grid 的文章,如果你沒有?那沒關係,我也是,但至少 10 篇應該也差不多了,但這篇關於 Grid 的推薦文章應該可以被稱作 Grid 百科,在文章中不只介紹基本用法、Gird 的一些專有名詞和屬性外,還包含程式碼、圖片和超過 60 篇的額外閱讀、6 篇影片和 9 個其他資源,建議存下來,然後可以拿來做前端外交,反正這大概是有生之年系列自己看也看不完。

後端開發

更好的選擇?用 JWT 取代 Session 的風險

這篇是我們 Writer Ken 寫的文章,但我是看完才發現是他寫的XD。近年來很多 Web 應用開始用 JSON Web Token(JWT) 來驗證使用者身份,雖然使用 JWT 可以讓 API Server 更接近 Stateless,但並不是完全沒有缺點的,如果還不是很了解 JWT 跟傳統 session 的差異,這篇文章解釋得很不錯

How to Create a Public Notion Integration Using Python

最近使用 Notion 的公司好像越來越多了,如果你想要自己寫一個 Notion plugin 並且開放給大家使用,那這邊有一篇圖文並茂的教學。雖然這篇是用 Python 來寫,但概念懂了之後,不管用什麼語言來寫都沒有問題啦

Discord 如何處理一天數億的訊息

Discord 之前有寫過一篇文章講他們是怎麼每天處理一天好幾億則的訊息、以及儲存總共數十億則的訊息,而這篇文章把原文經過翻譯、總結,如果想間單了解一下 Discord 是怎麼做到的,那可以花個 5 - 10 分鐘看看這篇文章~

DevOps

Multi-cluster management for Kubernetes with Cluster API and Argo CD

Cluster API 是個專門用來管理多種 Kubernetes 叢集的 CNCF 專案,而本篇介紹使用 Cluster API 和 Argo CD 管理多個 Kubernetes 叢集,示範的架構為在本機 Docker 裡建立 Kind 後安裝 Cluster API 和 Argo CD,並由它們管理背後多個 Kubernetes 叢集。裡面解釋了 AWS IAM 是怎麼授權、CNI 安裝情況以及最後部署簡單的 app。

Why Managing WAFs at Scale Requires Centralized Visibility and Configuration Management

現在越來越多企業等級的資訊團隊需要集中化式的 Web Application Firewall(WAF)管理監控工具,而 F5 NGINX Management Suite 可以快速以視覺化的方式排查分析,例如最嚴重的攻擊方式、機器人攻擊程度、使用的工具、被攻擊的機器或 CVEs 等等,除了分析外也可以快速集中式的部署新的 Policy 來阻擋攻擊。

Source Code Management Best Practices

Source Code Management(SCM)已經是老生常談了,但還是再談一次最佳實踐給大家溫習。

  • 多 commit
  • 確保 repository 都是最新的
  • 詳細寫 commit message
  • 在 commit 之前先好好審視所有變更
  • 自動化 workflow 要設計好:前贅字要用 featfix 等等、使用者權限控管、誰有權限放行可以合併 commit
  • 資安的設計也不能馬乎:基本的使用者權限、視覺化呈現使用者活躍紀錄、災難復原計畫等等

Writer:

Maintainers:

  • @LarryLu - 我是 Larry,傳說中的 0.1 倍工程師!
  • @GQSM - Hi!我是神 Q 超人,一個先衝再說的男人。
  • @LukaJoJo - 一名全身都是死角的工程師。
  • @smalltown - 熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術。
  • @RicoChen - 熱愛許多技術且努力看透技術的本質,如果有什麼好玩的技術,還請各位歡迎直接找我聊聊。

Feedback

本週呈現主題方式做了一些改變,希望讓讀者能夠更快速精準的找到自己要的資訊。也加入社群活動這個區塊,每週更新社群活動的資訊。如果有任何建議,歡迎私訊 星巴哥技術週刊 FB 粉絲專頁 與我們聯繫。