第 30 期 - 一寸光陰一寸金,冗長的技術文章先放一邊

本週專欄

React | 用十分鐘對自定義 Hooks 寫個測試

Hooks 推出很久很久了(其實也才去年初 😂),也把測試 Hooks 放到學習清單中,但都很懶的沒有去碰,直到今天才把清單中的這項給打勾。相信有很多人已經學習過,也著手開始寫關於 Hooks 的測試,甚至遇到過各種情況或是問題,歡迎和我分享寶貴的經驗 😃。

神 Q 超人

A Practical Guide to TypeScript - How to Build a Pokedex App Using HTML, CSS, and TypeScript

我一直相信想要學習一個新技術或是有動力去完成一個新作品,就是要選擇自己喜歡的事情,以這篇推薦文章為例,你覺得 TypeScript 很難嗎?其實不會啊!就一篇文章就可以搞定了,再加上 Pokemon API,甚至能馬上變成一個小作品。要愛上自己在做的事情太難了,不如直接選擇自己所愛的!

不知道怎么封装代码?看看这几种设计模式吧!

設計模式一直是耳熟能詳的名詞,但又不知道到底該不該學他,或是學了以後會有什麼幫助,事實上我認為設計模式是為了解決程式碼中某些常見的問題而誕生,就像是圍棋中的棋譜,遇到相似的狀況就該怎麼應對下一步,設計模式也是如此,它就是前人的智慧,每種設計模式都是為了讓程式碼變得更容易閱讀或修改。

14 Developers to Follow on Twitter

前一陣子 Luka 介紹了值得訂閱的 Podcaster,此篇文章也整理了再 Twitter 上可以追蹤的開發者!他們都會在 Twitter 上分享自己學習程式的大小事情,再看的過程中也可以當作練習英文,真是一舉兩得 😂

Larry Lu

Things I hate about Rust

看到這篇真的深有同感,我自己寫 Rust 也好一陣子了,但到現在還是分不太清楚 &strStringOsString 這幾種字串到底誰是誰、彼此間要怎麼轉換。每次也都要跟編譯器奮戰好久才能過關,真心覺得那些用 Rust 開發大型應用的人超厲害

Faking stdin and stdout in Go

在 Go 裡面,有時會需要對某些從 stdin/stdout 進行輸入輸出的 function 進行測試,但因為從 stdin/stdout 很難用程式化的方式來測,所以可以把 stdin/stdout 進行轉向,這樣就不用再手動用終端機做測試了~

From Node to Deno

雖然 Deno 看起來很多地方都設計得比 Node 好,但因為 Node 在經過日積月累之後生態圈已經很成熟了,而 Deno 卻是剛起步而已,所以就算真的要用 Deno 開發應用也很可能面臨找不到 package 可用的囧境。而這篇文章就是在說如果你打算從 Node 換到 Deno,那該用哪些 Deno package 來做到類似 express、pm2、nodemon 等等 Node package 的功能,不用連很多基本的功能都要自己刻一遍

LukaTW

Interviewed with Triplebyte? Your profile is about to become public

Triplebyte 是一家線上考試平台,提供面試者做題目,並讓企業參考。本篇作者用 Triplebyte 面試過後一陣子,突然收到一封 CEO 的信,Triplebyte 宣布一個很令人興奮的消息,讓你的個人資訊變成展示案例!讓你的個人資訊公開在網路上。這個不尊重隱私的作法立刻受到 HN 上鄉民的撻伐。

Ikea swaps its brand typeface to Google and Monotype’s Noto

Ikea 將字型從原本一直在使用的 Ikea Sans 換成了 Noto,Noto 字型家族屬於 Monotype and Google。來看看使用了 10 年的 Ikea Sans 跟新的 Noto 呈現出來的感覺有什麼差別吧!第一次分享設計的文章感覺很不錯,以後要多多分享才是。

Kubetab - kubectl plugin to deploy intercepting proxies to K8s Services

Kubetab,圖案是一杯生啤和一個水龍頭,然後一堆手繪圖案。我還以為是來搞笑的,沒想到看完影片後感覺很好用。Kubetab 是一個 kubectl plugin,可以讓你的瀏覽器攔截 Kubernetes Proxy,在瀏覽器中就可以顯示 K8S 的服務。

smalltown

Grafana 也來到 7.0 啦~

感覺這一年來 Grafana 的開發力道相當的驚人,譬如意圖想要取代 ELK 的 Loki, 以及用來儲存 Time Serier Metric 的 Cortex,不過其最招牌的當然還是 Grafana,這次的發布相當驚人@@ 多了好多恐怖又實用的功能,讓我們來瞧瞧看有什麼吧!

  • UX Enhancements and Unified Data Model: 加強了使用者體驗跟視覺化設定的選項,例如多了新的 Table Panel,Grid Layout,而且也改善了編輯 Panel 時的體驗;在資料視覺化的方面,改良過的 Data Model 使其擁有更一致性的設定方式,讓資料的各種格式設定不再散落於各處

  • Plugins Platform: 新的套件平台讓使用者可以更快且有效率的新增 Plugin

  • Tracing: 透過使用 Jaeger 當成資料來源便可以支援 Tracing 功能

  • Transformations: 這是滿多使用者要求的功能之一,現在使用者可以把非時間序列的資料轉換到 Table 中 (例如外部資料庫或是既有的 Panel), 除此之外還可以將這些非時間序列的資料結合存在於 Grafana 裡面的任何資料,並且透過 join, pivot, filter, re-name 來取得你想要的結果,用以客製化 Panel

  • Inspect and Export: 透過新的 Panel Inspector 可以讓使用者把整理完的資料給輸出成 CSV 檔案

  • AWS CloudWatch Logs: 一直以來都有支援 AWS CloudWatch,沒有想到現在連 AWS CloudWatch Logs 都吃下來了

  • Usage Analytics and Presence: 這個 Enterprise 的功能幫助大型公司得知大家使用 Grafana 的情況,譬如得知大家最常看哪個 Dashboard,誰最常用…等

Terraform 0.13 準備在下個月釋出啦!

最近看到同事分享 Terraform 0.13 準備在下個月釋出的消息,目前自己公司內部是正在慢慢 Refactory 並且升級到 0.12 當中,0.13 提到兩個我個人也覺得滿重要的更新

  • Provider 的安裝來源可以自訂,不用一定需要從官方來的 (這點滿重要的,因為有時候官方的 Provider 其實不太符合自己的組織需求,或是開發的太慢;就可以自己客製化)
  • Module 這邊很多為人詬病的問題可能都可以獲得解決,例如有 count 跟 for_each,而我自己覺得最重要的 depends_on 目前官方開發團隊正在趕工中,並且期望可以一起在 0.13 一起完成

這樣一來大家從 0.11 往上升級的意願應該會在高一些了吧XD

15 testing methods all developers should know

在軟體業界工作時可以發現,有時候某些技術術語在不同的公司明明是指同一件事情,但卻可能使用不同的名字來稱呼,測試領域就常常會發生這樣的事情XD 而隨著越來越多的公司在實踐 DevOps 的過程中,對軟體測試跟測試自動化的重視程度也越來越高,為了不要讓大家迷失在不同的專業術語中,circleci 這篇文章嘗試將軟體測試常見的類型給列了出來

  1. Unit testing: 測試邏輯的完整性,測出每一段程式碼應該要做的事情
  2. Integration testing: 測試在不同元件或是模組間彼此關係和資料流程的完整性
  3. End-to-End testing (E2E, System): 確保整個應用程式或是系統運作符合預期
  4. Acceptance testing: 驗證產品跟功能是否有根據客戶所提出的規格來進行開發
  5. White box testing (structural, clear box): 在軟體詳的細資訊和內部工作方式是已知的情況下來進行測試
  6. Black box testing (functional, behavioral, closed box): 在軟體詳的細資訊和內部工作方式是未知的情況下來進行測試
  7. Gray box testing: 因為黑箱跟白箱測試可能會導致某些重要的功能沒有測試到,所以有了灰箱測試,既可以輕鬆地實現黑箱測試 (輸入->輸出),並且又可以針對特定的程式碼進行白箱測試
  8. Manual testing: 手動測試當然就是使用者手動輸入東西並且跟系統進行互動,最後也是由使用者來評斷測試的結果
  9. Static testing: 不真的去執行程式碼的測試方式,就像手動測試一樣會比較緩慢,但可以提早發現問題,例如有些公司會有 Code Review 的機制
  10. Dynamic testing: 實際執行代碼的測試方式,其實上面提到的測試方式,大部分都算是在此類別中,除了手動和某些 acceptance tseting
  11. UI/Visual testing (browser testing): 針對使用者介面操作行為的測試方式
  12. Smoke testing: 相對小的測試案例集合,用來驗證系統是否可以正常運作
  13. Regression testing: 用來驗證先前可以正常使用的功能是否都還可以運行無誤
  14. Load testing: 測試應用程式在工作量增加的情況下會如何回應
  15. Penetration testing: 滲透測試為一種安全測試,用來驗證應用程式的安全穩定性

StarBugs Weekly

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

Curators:

  • @GQSM - Hi!我是神 Q 超人,一個先衝再說的男人。
  • @Larry850806 - 我是 Larry,傳說中的 0.1 倍工程師!
  • @LukaTW - 一名全身都是死角的工程師。
  • @smalltown - 熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術

Feedback

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