技术阅读周刊,每周更新。
历史更新
20231013:第一期
20231022:第二期
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
往期推荐
技术阅读周刊第二期
如何优雅重启 kubernetes 的 Pod
在 kubernetes 环境中实现 gRPC 负载均衡
技术阅读周刊第一期
使用 Helm 管理应用的一些 Tips
点分享
点收藏
点点赞
点在看