技术阅读周刊第三期
技术阅读周刊,每周更新。
历史更新
Understanding The Linux TTY Subsystem
URL: https://ishuah.com/2021/02/04/understanding-the-linux-tty-subsystem/本文讲解了 Linux TTY 的历史故事和来源。
-
TTY 是 teletype 的简写,电传打印机;最早是在二次世界大战发挥重要作用。 -
60 年代的计算机使用了teletype 作为输入终端。 -
后续随着技术进步使用了软件模拟替代了物理的电传打印机。 -
TTY 早起位于 Linux 的内核空间,导致缺乏灵活性,后续移动到了用户空间。 -
之后又出现了 shell,用户使用 shell 登录系统时会分配一个 TTY 给 shell镜像操作。 -
TTY 作为 shell 的硬件运行环境,搭配在一起提供了基础的 Linux 操作环境。
100行代码实现一个模拟终端
URL: https://ishuah.com/2021/03/10/build-a-terminal-emulator-in-100-lines-of-go/ 本文在之前介绍 TTY 背景知识的前提下,讲解使用 100 行代码实现一个模拟终端的 App。最终使用效果如下:
-
第一步使用了 Go 的一个 GUI 库 fyne
渲染了一个普通文本框 -
讲解了一个终端和内核通讯的流程图 -
PTY master 获取用户输入发送给 PTY slaver,slave 会执行最终的 shell,并将执行结果返回到 PTY master -
这里使用了 Go 的一个第三方库实现了 PTY 的功能 -
使用 fyne
获取键盘事件,缓存用户输入的内容,直到检测到输入了回车键,此时将缓存内容发往 pty -
优化响应结果,目前只能输出最新的一行内容,所以新增一个缓冲区存放历史输出。 最终一个简单的模拟终端便实现了,当然功能还很简单,感兴趣的朋友可以在这基础上持续优化。
混沌工程
最近在复现一个可能的网络问题的时候,接触到了混沌工程,以下是我对它的一些理解
混沌工程(Chaos-Mesh)是一个开源的混沌平台,混沌
这词可能不好理解,不过通过他所提供的功能就知道具体是干什么的了。
核心功能是提供了一些列的故障注入,比如:
-
Pod 故障:重启、OOM等 -
网络故障:延迟、丢包、断网 -
DNS 故障 -
HTTP 故障 -
甚至还能模拟 JVM 故障
这是对一个 Pod 的 http 请求 80 端口进行中断的配置。
通过这些功能可以看出它是一个模拟故障平台,我们可以在它的管理台进行丰富的故障模拟,可以在开发测试过程中增强我们系统的健壮性。
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 主题,提供了许多自定义的选项,可以按照自己的习惯定制。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
自动跳转,可以更快的跳转到我们尝使用的目录,提高效率。https://github.com/wting/autojump
iTerm 的一些窗口导航快捷键
-
新窗口 — ⌘
+T
-
关闭窗口 — ⌘
+W
-
切换 Tab ⌘
+Number Key
— (⌘2
切换到第二个 Tab) -
垂直分割窗口 (same profile) — ⌘
+D
-
水平分割窗口(same profile) — ⌘
+Shift
+D
-
根据顺序切换窗口 — ⌘
+]
,⌘
+[
-
上一个 tab ⌘
+<-
— -
下一个窗口 ⌘
+->
-
最大化窗口 ⌘
+Shift
+Enter
当我们聊 Kubernetes Operator 时,我们在聊些什么_云原生_徐新坤_InfoQ精选文章
URL: https://www.infoq.cn/article/SJMUvMg_0H7BS5d99euR
作者讲解了 Docker、Helm、Operator、kubernetes Controller 之间的关系以及一些核心概念。
-
Docker的核心价值是提供了标准化的交付流程,现在几乎没人再交付源码了 -
Operator 和 Docker 类似的是标准化了分布式系统的交付流程。 -
Helm 也可以做分布式系统交付,但他更侧重于协调多个资源管理,比如可以让 A Pod 启动之后再启动 B Pod。 -
但 Helm 无法感知整个系统的运行时状态,而 Operator
则可以,通过这个感知可以自动实现扩容、故障恢复、异常处理等工作,在实现了 Helm 的自动化的同时还实现了智能化。 -
Operator
是处于一个第三方视角观察整个系统,所以它可以拿到全局的信息,从而最终达到声明状态的一个目的。 -
Operator
可以当做另一种Controller
,可以理解为第三方的controller
,一般是运维我们自己的应用。 -
Operator
可以将以往运维的经验沉淀为代码,更利于推进 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
往期推荐
点分享
点收藏
点点赞
点在看