#5 第五期 - 聽隔壁同事說 DDD 是 Deadline Driven Development 的意思

本週專欄

為什麼你應該幫 Rust Vector 加上初始容量

在比較高階的程式語言中通常都會提供 Growable Array 的型別,像 Rust 的 Vector、Go 的 Slice 還有 Java 的 ArrayList 就是很好的例子,這禮拜的文章會透過分析 Rust Vector 的擴充機制來告訴你為什麼應該要幫 Vector 加上初始容量。因為各個語言這種 Growable Array 的機制都差不多,所以就算你不是寫 Rust 的開發者還是可以來了解一下

神 Q 超人

理解 React 的下一步:Concurrent Mode 與 Suspense

作者精心整理了在 React Conf 2019 裡提到的許多未來會增加的功能!身為同是 React 的開發者,真的越看越興奮,就像去年期待 Hooks 發佈一樣,這次我最喜歡 Suspense 的使用,看完文章後快來告訴我你們最期待的是什麼!如果各位真的等不及,也可以先安裝 experimental 版本來玩玩看!

React SWR | 取得遠端資料的殺手級函式庫

你也期待 Suspense 嗎?雖然 React 團隊還沒將它放進正式版(被歸納為實驗性質),但你仍然可以透過 SWR 來搶先體會這強大的功能!SWR 是一個 Hooks,用來呼叫 API 來獲得資料。它能夠再 Render 時先從緩存取出舊資料顯示,並等 API 拿到最新的資料後更新畫面!簡單來說獲取到的資料就會先填好填滿,頁面不再經過等待 API 回應的空白,人生也從此跟著擁有色彩:)

11 Best JavaScript Unit Testing Framework and Tools

前端框架百百種,其中用來做測試的框架也不少,但該怎麼知道哪些測試框架用來做什麼?哪些又適合你目前需要的?作者精選出了 11 個最好的測試框架來介紹一番,看完後不管是喜歡功能或單純 Logo 的部分(本人覺得 Puppeteer 的 Logo 滿 Q 的 XD),相信一定能選出適合讓你捧在手心的 Library. Right!

Larry Lu

Go 語言使用 Select 四大用法 | AppleBOY

select 是 Go 裡面用來選取 channel 的語法,他可以用來做到隨機選取、超時處理等等功能,如果你是 Golang 初學者的話不妨來看看這些 select 的小技巧

Announcing core Node.js support for ECMAScript modules

以前若要在 Node.js 裡面使用 ES module 的話要加上 --experimental-module flag 才行,而且副檔名還必須是 .mjs,用起來很不順手。但從 Node 13.2.0 開始終於正式支援 ES Module 了,而且還支援以 .js 作為副檔名,這代表前後端的 JS 模組系統終於要統一了,而曾經紅極一時的的 Common JS 也將慢慢走入歷史

My Favorite Algorithm: Linear Time Median Finding

很多人求中位數的方法應該都是把 Array 排序之後選中間的那個 element,這樣做的時間複雜度是 O(nlogn) 也不算差,但其實善用 Divide and Conquer 的話可以做到 O(n),如果有天你需要求一個巨大 Array 的中位數可能就會用到這個演算法

LukaJoJo

DevOps Is Dead, Long Live NoOps

DevOps 已死,NoOps 長存。DevOps 和 NoOps 有什麼不一樣?DevOps 意思是開發人員和運維人員合作,從設計到交付,定義服務的生命週期。而 NoOps 意思是沒有運維。它的哲學「去除所有平台的管理」和「減少在開發者和架構中」的摩擦 – 節錄翻譯自原文。

AsyncIO for the Working Python Developer

asyncio 是在 Python 3.4 中被介紹的新併發 (concurrency) 模組。它設計用於協程 (coroutines) 和 Python 中的 futures,以簡化非同步的程式碼,讓非同步的程式碼也可以像同步的程式碼一樣可讀 – 節錄翻譯自原文。

What the mock? — A cheatsheet for mocking in Python

測試中 Mock 是不可或缺的一部分,那麼在 Python 中的 Mock 又該如何寫呢?來看看這篇豐富的小抄吧。

smalltown

【Kubernetes】Service Catalog 是什麼?它可以吃嗎?

★ 身為 K8S 的使用者或是維護人員,常常必須要負責在整個架構中配置各式各樣的資源,雖然已經使用了像是 Service, ConfigMap 和 Secret…等 K8S 內部資源,但是有時候需要使用到由 Cloud Provider 所提供的外部服務,以 AWS 提供的 RDS 為例,他讓使用者可以抽象地存取關聯式資料庫服務,但是當想要把 RDS 整合到既有的 K8S 叢集中,讓他可以像是 K8S 內部資源一樣來使用的話,還是有不少的手工需要完成,例如怎麼把 Authentication 搞定…

★ 而 Service Catalog 用一句話來說,就是一個讓在叢集內的運行的應用程式可以簡單地去使用外部資源和應用的擴展 API,譬如幫忙去處理配置資料庫,管理 Queue 的服務或是 Object Storage…等,而且只要 Client 端的實作有符合 Open Service Broker API 就能達成;可以將 K8S Service Catalog 視為是另外一個運行在原本 K8S 中的 K8S 叢集,雖然 K8S 有很多種資源類型 (Pod, Deployment, ReplicaSet…等),不過 K8S Service Catalog 只有四種

  1. ClusterServiceBroker:負責提供外部服務的系統
  2. CluserServiceClass:外部系統所能提供的服務
  3. ServiceInstance:代表外部已經配置完成的服務
  4. ServiceBinding:一個或是多個 Pod 與 ServiceInstance 的 Binding

★ 而就像剛剛提到的要將 K8S Service Catalog 視為是另外一個 K8S 叢集,他只是為了特定目的設計而成,而組成它的元件有底下三個,Controller 會一直監視 API Server,當檢查到有任何變更時 (例如添加新資源需要創建),對應的 Service Broker 就會負責去建立跟配置此資源,Controller 本身並不會自己動手去做

  1. API Server
  2. etcd Datastore
  3. Controller Manager

★ 講了那麼多理論,有沒有覺得可以永遠躲在 K8S 裡面,不用再管外面世界的紛紛擾擾了XD 有興趣的人可以趕緊根據文章內的 Demo 嘗試看看

▍原文連結:https://www-magalix-com.cdn.ampproject.org/v/s/www.magalix.com/blog/kubernetes-service-catalog-101?hs_amp=true&usqp=mq331AQCKAE%3D&amp_js_v=0.1

StarBugs Weekly

StarBugs Weekly 由一群不寫文章就會想要亂花錢,但是又沒有那麼多錢,只好繼續寫文章的開發者所創立。
內容包含 Web 前端、中端、後端、DevOps、產品開發、精實創業,一切跟產品有關的知識,都是我們的守備範圍!

Curators:

  • @GQSM - 82 年次,單純相信努力不會騙人
  • @Larry850806 - 我是 Larry,傳說中的 0.1 倍工程師!
  • @LukaJoJo - 一名全身都是死角的工程師。
  • @smalltown - 熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術

Feedback

想看什麼內容,告訴我們! 點我回饋意見