第 162 期 - 梅西加油!

本週專欄

Goroutine 的併發治理:由錯誤處理談起

在 Go 裡面,使用 Goroutine 併發處理多個任務可以把 CPU 的運算資源發揮到最大,但相對應的錯誤處理也會變得比較複雜。因此在這週的專欄「Goroutine 的併發治理:由錯誤處理談起」中,Ken 要跟我們分享,怎麼把併發的錯誤處理寫得更漂亮,除了讓可讀性更高之外,也降低了發生 dead lock 跟 race condition 的可能性。

前端開發

TypeScript: advanced and esoteric

作者列出了一些較少人知道的 TypeScript 用法,文章裡面分成兩個部分,第一部分會介紹如何利用泛型建立動態的型別,在這部分會包含幾個用法:

  • Property accessors
  • Conditional types
  • Type inferring
  • Recursive types

第二個部分則是會介紹如何將上述四個用法做實際應用。

An Introduction To JavaScript Maps

在 JavaScript 中,有時候我們會使用 object 來做 key 和 value 之間的對照,但其實早在 ES6 出現的 map 就能更讚的實現這件事情,因為不論是 object 或是 function 都可以拿來當作 key 去對應另一個 value。如果你還不曉得 Map 或是他的更多優點,不妨從這篇文章開始了解它一下吧!

What should a modern CSS boilerplate look like?

在寫 Web 的時候,通常都會使用一段 CSS 先重置不同瀏覽器之間的初始樣式差異,但有許多自定義重置的 CSS 裡說不定都包含許多多餘的程式碼(雖然應該也多不到哪裡 😂),因此好好了解在重置時需要和不需要什麼的理由是很重要的,這篇文章介紹了幾個重置某些 CSS 屬性時所考慮的事情。

TypeScript

Migrating millions of lines of code to TypeScript

大家應該多少有聽過 Stripe 這間公司,他們在今年把他們最大的 JS codebase 總計數百萬行的程式碼從 Flow migrate 到 TypeScript。這篇文章簡單分享了他們為何要這麼做、以及他們 migration 的過程和結果,如果你手上也有專案在考慮要不要為了好維護 migrate 到 TypeScript,這篇文章可以當作一個參考。

Use TypeScript Record Types for Better Code

其實我以前跟 TypeScript 裡面的 Record/Pick/Omit 那些對型別進行運算、運算的 utility 很不熟,是前陣子仔細去讀了 TypeScript 的官方文件後才發現這些東西真是太好用了。而這篇文章就是介紹了 Record 的用法,推薦給跟我一樣的型別苦手們。

Type-Safe TypeScript With Type Narrowing

TypeScript 寫久了,遲早有一天會覺得 TypeScript 怎麼那麼笨,「我這邊明明就不可能是 XX 型別啊,你一直噴錯是怎樣?」。別氣別氣,只要你懂 TypeScript 的型別推論,你就可以用 type narrowing 把你的程式碼變得更加安全、而且可讀性也更高。不過這算是比較進階的技巧,如果你對 TypeScript 的型別還不是很熟悉,那可以先把這篇文章存起來,過個一年半載再回來看。

DevOps

Serverless vs. Kubernetes: The People’s Vote

AWS Re:Invent 活動上舉辦了 Serverless vs Kubernetes 架構比賽,會依據多個分類角度做票選,分類的項目有:

  1. 維護性 - Serverless 勝
  2. 成本 - Serverless 勝
  3. 擴展性 - Serverless 勝
  4. 開發友善度 - 雙方平手
  5. 生態系 - Kubernetes 勝
  6. 監控與日誌 - Kubernetes 勝
  7. 資安 - Kubernetes 勝

BuildRock: A Build Platform at Slack

Slack 一開始的 Jenkins 就和大家的 Jenkins 一樣隨心所欲導致愈來愈多技術債,經過一連串的考量後決定繼續使用 Jenkins,並且開始做左移的測試,在 Kubernetes 上使用臨時的 Jenkins agent,並且用外掛硬碟保存狀態,標準和抽象化讓使用 Jenkins 的體驗好一點,另外也引入 GitOps 概念禁止人們手動改動,改善設定管理,以及放權 ownership 讓 service owner 參與建置 pipeline。

Looking to the Future of Developer Experience

開發體驗就跟使用者體驗一樣非常重要,減輕開發人員精神上的打擊讓生產力能夠提升。打從一開始入職開始、開發、部署時和維護就要時時刻刻注意開發體驗,像是在入職時創帳號時會自動生產需要的密鑰,使用開發工具如 FigGithub Copilot、low-code 的軟體或者一些自動化工具如 Githube Action,而維護需要注意的是 dependencies 要能夠自動檢查。

ChatGPT

Awesome ChatGPT

有不少人已經開始把 ChatGPT 整合到既有的工具與服務中,例如 Python SDK, Chrome Extension 顯示跟 Google 搜尋結果的對比,GitHub Action 幫忙 Code Review,VSCode extension 幫忙寫程式,各種 Chat Bot 如 Telegram, WhatsApp, Twitter…來回覆對話,所以 Awesome 系列的 GitHub Repository 也有啦!之後可以跑來這個 Repository 看看有什麼有趣的 ChatGPT 專案又被實作出來了!

ChatGPT for Google

最近看到大家都一直在討論 ChatGPT,把各種問題丟給他去回答,很多人已經開始叫他寫程式了,感覺 Stack Overflow 的地位岌岌可危🤣 也有開發者想到其實我們現在還很常去找答案的方式就是去問 Google,所以有人寫了這個 Chrome Extension,讓搜尋字串也直接餵給 ChatGPT,不知道再這樣下去,以後 ChatGPT 的回答內容是不是要開始有業配文跟置入性行銷了?!

Introducing ChatGPT!

Google 的 Chief Decision Scientist “Cassie Kozyrkov” 寫了一篇揭秘 ChatGPT 的文章,文章開頭先解釋了 ChatGPT 的技術原理為 GAN (Generative Adversarial Networks),接著稍微提了 GAN 的運作原理,然後花了相對多的篇幅來講述 ChatGPT 的回答其實只是碰觸到了部分的現實,其他則是他想像出來的,這聽起來很像是缺點,但這也正是他的強項,因為他不會受限於現實,可以回答出充滿創造力與在框架外的答案,例如你問 ChatGPT 假如他的飛的話他會做什麼,他可能會回答 “我會像雄鷹一樣翱翔在天空,感受我翅膀下的風和飛行的自由”;緊接著提到利用 ChatGPT 寫程式的體驗

最恐怖的地方要來了,上面的內容是由 ChatGPT 所產生的,而且是錯誤的,作者是這樣跟 ChatGPT 說的 “請用 Cassie Kozyrkov 的風格寫一篇揭秘 ChatGPT 的部落格文章,解釋為什麼 ChatGPT 有用,跟 GAN 有什麼關係,以及為什麼 ChatGPT 的回答只是部分切合現實”;但其實 ChatGPT 根本就不是使用 GAN 實作出來的,他是 Generative Pretrained Transformer,但我相信假如不是對於這些背景知識很熟的人,應該都已經被騙了 🥲 沒錯,ChatGPT 所產生的部分回答是胡扯的,但他不算是騙子,因為所謂的騙子必須要先知道事情的真相並且去誤導人類,他只是不關心事情真相而胡說八道的角色,而這也是我們必須要先知道的最重要的重點

其實除了 ChatGPT 不是 GAN 所實作出來的之後,作者其他的論點都是真的,也就是一開始所提的 ChatGPT 的回答只有部分切合現實,因此可以想像我們在接下來的生活中會處在一個比以往都充斥著更多虛假內容的時代,所以會需要對於事實查核投入更多的精力;ChatGPT 確實讓作者留下了深刻的印象,佩服 OpenAI 所取得的非凡成就,而作者也鼓勵大家去使用它,因為他在各個應用領域中都具有相當大的潛力且值得去關注,換言之,吹牛胡扯的人是有用的,只要你知道他們是在吹牛的人就行了😂 但作者也對人類容易相信別人,導致 AI 將為人類帶來的坎坷之旅感到憂心,人類以後必須對於所有的線上資源採用不同的信任方式,避免獲取一堆有意人士製作出來的虛假內容…

StarBugs Weekly

StarBugs Weekly 由一群不寫文章就會想要亂花錢,但是又沒有那麼多錢,只好繼續寫文章的開發者所創立。
內容包含 Web 前端、中端、後端、DevOps、產品開發、精實創業,一切跟產品有關的知識,都是我們的守備範圍!
不想漏追科技新聞的人,趕緊把 StarBugs Telegram Bot 訂閱起來 https://t.me/starbugs_weekly_bot (對機器人說 /subscribe 即可)

另外,為了讓 Starbugs 的專欄有更多豐富、優質的內容,我們決定要開始誠徵 Writer 了。如果你本來就有在寫文章,對於文章的品質有要求、而且也樂於分享討論技術,那很歡迎你以 Writer 的身份加入我們。請動動手指頭私訊我們粉專 星巴哥技術週刊,並附上自我介紹跟最近寫的文章,就有機會加入我們唷 🙌

Writers:

  • @lazypro - 從 embedded 到 kernel,從 device 上雲端,程式無涯、無法靠岸,軟體的求道者。
  • @Ken - 興趣是符號學的軟體開發者,喜歡探索事物的本質,偶爾會寫點東西。
  • @Andy - 目標成為用嘴巴工作的工程師,專長為網頁開發以及 K8s。
  • @KyleMo - 雜食性軟體工程師,喜歡的技術我都想學。
  • @ianchen0119 - 5G 領域研究生,同時也是喜歡學習不同領域技術的工程師。
  • @00-talk - 我是 00,脖子痠痛的前端生命鬥士。
  • @HannahLin - 從台灣到矽谷,熱愛前端的工程師女孩。
  • @Airwaves - Hi~我是 Airwaves,熱愛研究如何造輪子的前端工程師。

Maintainers:

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

Feedback

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