技術(shù)閱讀周刊第三期
技術(shù)閱讀周刊,每周更新。
歷史更新
Understanding The Linux TTY Subsystem
URL: https://ishuah.com/2021/02/04/understanding-the-linux-tty-subsystem/
本文講解了 Linux TTY 的歷史故事和來源。
-
TTY 是 teletype 的簡寫,電傳打印機(jī);最早是在二次世界大戰(zhàn)發(fā)揮重要作用。 -
60 年代的計(jì)算機(jī)使用了teletype 作為輸入終端。 -
后續(xù)隨著技術(shù)進(jìn)步使用了軟件模擬替代了物理的電傳打印機(jī)。 -
TTY 早起位于 Linux 的內(nèi)核空間,導(dǎo)致缺乏靈活性,后續(xù)移動到了用戶空間。 -
之后又出現(xiàn)了 shell,用戶使用 shell 登錄系統(tǒng)時會分配一個 TTY 給 shell鏡像操作。 -
TTY 作為 shell 的硬件運(yùn)行環(huán)境,搭配在一起提供了基礎(chǔ)的 Linux 操作環(huán)境。
100行代碼實(shí)現(xiàn)一個模擬終端
URL: https://ishuah.com/2021/03/10/build-a-terminal-emulator-in-100-lines-of-go/ 本文在之前介紹 TTY 背景知識的前提下,講解使用 100 行代碼實(shí)現(xiàn)一個模擬終端的 App。最終使用效果如下:
-
第一步使用了 Go 的一個 GUI 庫 fyne渲染了一個普通文本框 -
講解了一個終端和內(nèi)核通訊的流程圖
-
PTY master 獲取用戶輸入發(fā)送給 PTY slaver,slave 會執(zhí)行最終的 shell,并將執(zhí)行結(jié)果返回到 PTY master -
這里使用了 Go 的一個第三方庫實(shí)現(xiàn)了 PTY 的功能
-
使用 fyne獲取鍵盤事件,緩存用戶輸入的內(nèi)容,直到檢測到輸入了回車鍵,此時將緩存內(nèi)容發(fā)往 pty -
優(yōu)化響應(yīng)結(jié)果,目前只能輸出最新的一行內(nèi)容,所以新增一個緩沖區(qū)存放歷史輸出。
最終一個簡單的模擬終端便實(shí)現(xiàn)了,當(dāng)然功能還很簡單,感興趣的朋友可以在這基礎(chǔ)上持續(xù)優(yōu)化。
混沌工程
最近在復(fù)現(xiàn)一個可能的網(wǎng)絡(luò)問題的時候,接觸到了混沌工程,以下是我對它的一些理解
混沌工程(Chaos-Mesh)是一個開源的混沌平臺,混沌這詞可能不好理解,不過通過他所提供的功能就知道具體是干什么的了。
核心功能是提供了一些列的故障注入,比如:
-
Pod 故障:重啟、OOM等 -
網(wǎng)絡(luò)故障:延遲、丟包、斷網(wǎng) -
DNS 故障 -
HTTP 故障 -
甚至還能模擬 JVM 故障
這是對一個 Pod 的 http 請求 80 端口進(jìn)行中斷的配置。
通過這些功能可以看出它是一個模擬故障平臺,我們可以在它的管理臺進(jìn)行豐富的故障模擬,可以在開發(fā)測試過程中增強(qiáng)我們系統(tǒng)的健壯性。
Hacking Your iTerm. Boost your command line productivity by… | by Chandan Kumar | Better Programming
URL: https://betterprogramming.pub/hacking-your-iterm-5d2bdacdaccf
作者分享了它使用終端的一些技巧和工具
iTerm
推薦使用 iTerm 這個就不多說了
powerlevel10k
powerlevel10k 是一個 zsh 主題,提供了許多自定義的選項(xiàng),可以按照自己的習(xí)慣定制。https://github.com/romkatv/powerlevel10k
Syntax highlighting
語法高亮可以讓自己知道輸入是否正確https://github.com/zsh-users/zsh-syntax-highlighting
Auto-suggestion
自動提示插件,可以類似于 IDE 的方式使用命令行,這個還蠻好用的。
https://github.com/zsh-users/zsh-autosuggestions
Autojump
自動跳轉(zhuǎn),可以更快的跳轉(zhuǎn)到我們嘗使用的目錄,提高效率。https://github.com/wting/autojump
iTerm 的一些窗口導(dǎo)航快捷鍵
-
新窗口 — ?+T -
關(guān)閉窗口 — ?+W -
切換 Tab ?+Number Key— (?2切換到第二個 Tab) -
垂直分割窗口 (same profile) — ?+D -
水平分割窗口(same profile) — ?+Shift+D -
根據(jù)順序切換窗口 — ?+],?+[ -
上一個 tab ?+<-— -
下一個窗口 ?+-> -
最大化窗口 ?+Shift+Enter
當(dāng)我們聊 Kubernetes Operator 時,我們在聊些什么_云原生_徐新坤_InfoQ精選文章
URL: https://www.infoq.cn/article/SJMUvMg_0H7BS5d99euR
作者講解了 Docker、Helm、Operator、kubernetes Controller 之間的關(guān)系以及一些核心概念。
-
Docker的核心價值是提供了標(biāo)準(zhǔn)化的交付流程,現(xiàn)在幾乎沒人再交付源碼了 -
Operator 和 Docker 類似的是標(biāo)準(zhǔn)化了分布式系統(tǒng)的交付流程。 -
Helm 也可以做分布式系統(tǒng)交付,但他更側(cè)重于協(xié)調(diào)多個資源管理,比如可以讓 A Pod 啟動之后再啟動 B Pod。 -
但 Helm 無法感知整個系統(tǒng)的運(yùn)行時狀態(tài),而 Operator則可以,通過這個感知可以自動實(shí)現(xiàn)擴(kuò)容、故障恢復(fù)、異常處理等工作,在實(shí)現(xiàn)了 Helm 的自動化的同時還實(shí)現(xiàn)了智能化。 -
Operator是處于一個第三方視角觀察整個系統(tǒng),所以它可以拿到全局的信息,從而最終達(dá)到聲明狀態(tài)的一個目的。 -
Operator可以當(dāng)做另一種Controller,可以理解為第三方的controller,一般是運(yùn)維我們自己的應(yīng)用。 -
Operator可以將以往運(yùn)維的經(jīng)驗(yàn)沉淀為代碼,更利于推進(jìn) Dev、Ops 合并為DevOps。
文章鏈接:
-
https://ishuah.com/2021/02/04/understanding-the-linux-tty-subsystem/ -
https://ishuah.com/2021/03/10/build-a-terminal-emulator-in-100-lines-of-go/ -
https://chaos-mesh.org/zh/docs/ -
https://betterprogramming.pub/hacking-your-iterm-5d2bdacdaccf -
https://www.infoq.cn/article/SJMUvMg_0H7BS5d99euR
往期推薦

點(diǎn)分享

點(diǎn)收藏

點(diǎn)點(diǎn)贊

點(diǎn)在看
