技术阅读周刊第三期

news2024/11/28 2:55:08

d66a1c1b4a7b520437d59530f60a5dd9.png

技术阅读周刊,每周更新。

历史更新

  • 20231013:第一期

  • 20231022:第二期

Understanding The Linux TTY Subsystem

URL: https://ishuah.com/2021/02/04/understanding-the-linux-tty-subsystem/88dba4b5717a6303f5623b3546e43e24.png本文讲解了 Linux TTY 的历史故事和来源。

  1. TTY 是 teletype 的简写,电传打印机;最早是在二次世界大战发挥重要作用。

  2. 60 年代的计算机使用了teletype 作为输入终端。

  3. 后续随着技术进步使用了软件模拟替代了物理的电传打印机。

  4. TTY 早起位于 Linux 的内核空间,导致缺乏灵活性,后续移动到了用户空间。

  5. 之后又出现了 shell,用户使用 shell 登录系统时会分配一个 TTY 给 shell镜像操作。

  6. TTY 作为 shell 的硬件运行环境,搭配在一起提供了基础的 Linux 操作环境。

100行代码实现一个模拟终端

URL: https://ishuah.com/2021/03/10/build-a-terminal-emulator-in-100-lines-of-go/ 本文在之前介绍 TTY 背景知识的前提下,讲解使用 100 行代码实现一个模拟终端的 App。最终使用效果如下:3448ad8d54136acf1a8c085a1982e983.png

  1. 第一步使用了  Go  的一个 GUI 库 fyne 渲染了一个普通文本框

  2. 讲解了一个终端和内核通讯的流程图3183ad2141718e69513e0bcc3090d6d2.png

  3. PTY master 获取用户输入发送给 PTY slaver,slave 会执行最终的 shell,并将执行结果返回到 PTY master

  4. 这里使用了  Go  的一个第三方库实现了 PTY 的功能c1fd34060d460d499f77c3c69c7a5931.png

  5. 使用 fyne 获取键盘事件,缓存用户输入的内容,直到检测到输入了回车键,此时将缓存内容发往 pty

  6. 优化响应结果,目前只能输出最新的一行内容,所以新增一个缓冲区存放历史输出。bab7f692fdbea00176364ce1ad365590.png最终一个简单的模拟终端便实现了,当然功能还很简单,感兴趣的朋友可以在这基础上持续优化。

混沌工程

最近在复现一个可能的网络问题的时候,接触到了混沌工程,以下是我对它的一些理解

混沌工程(Chaos-Mesh)是一个开源的混沌平台,混沌这词可能不好理解,不过通过他所提供的功能就知道具体是干什么的了。

核心功能是提供了一些列的故障注入,比如:

  • Pod 故障:重启、OOM等

  • 网络故障:延迟、丢包、断网

  • DNS 故障

  • HTTP 故障

  • 甚至还能模拟 JVM 故障0cb4aa32a18401cd08aef1d346bcdcdf.png

这是对一个 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

cebfcddc657d1f77a4954f3815e80b99.png
image.png

powerlevel10k 是一个 zsh 主题,提供了许多自定义的选项,可以按照自己的习惯定制。https://github.com/romkatv/powerlevel10k

Syntax highlighting

20f7dc09120a9ea73654998fc0baa4ac.png语法高亮可以让自己知道输入是否正确https://github.com/zsh-users/zsh-syntax-highlighting

Auto-suggestion

自动提示插件,可以类似于 IDE 的方式使用命令行,这个还蛮好用的。5a876a64162830ef5b06d4e8b389f15e.gifhttps://github.com/zsh-users/zsh-autosuggestions

Autojump

6b02e6fa9bfb2c6cb08ded6c3eadd2fc.png自动跳转,可以更快的跳转到我们尝使用的目录,提高效率。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 之间的关系以及一些核心概念。

  1. Docker的核心价值是提供了标准化的交付流程,现在几乎没人再交付源码了

  2. Operator 和 Docker 类似的是标准化了分布式系统的交付流程。

  3. Helm 也可以做分布式系统交付,但他更侧重于协调多个资源管理,比如可以让 A Pod 启动之后再启动 B Pod。

  4. 但 Helm 无法感知整个系统的运行时状态,而 Operator 则可以,通过这个感知可以自动实现扩容、故障恢复、异常处理等工作,在实现了 Helm 的自动化的同时还实现了智能化。

  5. Operator 是处于一个第三方视角观察整个系统,所以它可以拿到全局的信息,从而最终达到声明状态的一个目的。

  6. Operator 可以当做另一种 Controller,可以理解为第三方的 controller,一般是运维我们自己的应用。

  7. 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

56f46181a15a21e7ad44f81523735d22.gif

点分享

43a5cfe21e45d166be3c2009d122a5a3.gif

点收藏

0e3b03ce53b6bc0691089404c485316d.gif

点点赞

f2f972412426b019b98f0d1c14a92a5f.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1160360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HNU-算法设计与分析-讨论课1

第一次小班讨论 &#xff08;以组为单位&#xff0c;每组一题&#xff0c;每组人人参与、合理分工&#xff0c;ppt中标记分工&#xff0c;尽量都有代码演示&#xff09; 1.算法分析题 2-10、2-15(要求&#xff1a;有ppt&#xff08;可代码演示&#xff09;) 2.算法实现题 2-4、…

蓝桥杯(C++ 扫雷)

题目&#xff1a; 思想&#xff1a; 1、遍历每个点是否有地雷&#xff0c;有地雷则直接返回为9&#xff0c;无地雷则遍历该点的周围八个点&#xff0c;计数一共有多少个地雷&#xff0c;则返回该数。 代码&#xff1a; #include<iostream> using namespace std; int g[…

【Java 进阶篇】Java中的响应输出字节数据

在Java Web应用程序开发中&#xff0c;处理响应是一个常见的任务。有时&#xff0c;您可能需要向客户端发送字节数据&#xff0c;而不仅仅是文本或HTML内容。这可以用于传输各种内容&#xff0c;如图像、文件、视频等。本文将详细介绍如何在Java中使用Response对象输出字节数据…

sql语句性能进阶必须了解的知识点——索引失效分析

在前面的文章中讲解了sql语句的优化策略 sql语句性能进阶必须了解的知识点——sql语句的优化方案-CSDN博客 sql语句的优化重点还有一处&#xff0c;那就是—— 索引&#xff01;好多sql语句慢的本质原因就是设置的索引失效或者根本没有建立索引&#xff01;今天我们就来总结一…

160. 相交链表、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;看看是李XX还是李歘歘 &#x1f3c6; &#x1f33a;每天分享一些包括但不限于计算机基础、算法等相关的知识点&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&#x1f4d6;是你想要的&#x1f497; ⛽️今…

从零开始制作一个桶装水小程序

随着互联网的发展&#xff0c;越来越多的消费者通过线上购买桶装水。为了满足这一需求&#xff0c;我们需要制作一个专门的小程序商城&#xff0c;以便用户可以方便地购买桶装水。本文将通过乔拓云平台&#xff0c;从零开始制作一个桶装水小程序&#xff0c;并详细解析制作步骤…

二、类与对象(一)

1 面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。以洗衣服为例&#xff0c;通常洗衣服会经历以下过程&#xff1a; 而C是基于面向对象的&#xff0c;关注的是对象&#xff0c…

云安全—K8s APi Server 6443 攻击面

0x00 前言 在未授权的一文中&#xff0c;详细描述了k8s api中的8080端口未授权的问题&#xff0c;那么本篇主要来说6443端口的利用。 0x01 API连接攻击面 1.匿名用户访问 匿名开放方式&#xff1a;kubectl create clusterrolebinding cluster-system-anonymous --clusterro…

信号、进程、线程、I/O介绍

文章目录 信号进程进程通信线程可/不可重入函数线程同步互斥锁条件变量自旋锁读写锁 I/O操作阻塞/非阻塞I/OI/O多路复用存储映射I/O 信号 信号是事件发生时对进程的通知机制&#xff0c;可以看做软件中断。信号与硬件中断的相似之处在于其能够打断程序当前执行的正常流程。大多…

paas配置及构建问题处理

目录 CI配置在前端中的作用 为什么生产环境需要付出额外的精力&#xff0c;进行构建&#xff1f; 服务 CI 通常分为两个主要部分&#xff1a; 构建环境&#xff1a; Dockerfile 镜像&#xff1a; CI配置在前端中的作用 开发分为三个环境&#xff1a;开发环境、测试环境和生…

QMI8658A_QMC5883L(9轴)-EVB 评估板——索引博文

0.前言 【初见姿态传感器】 在做一个4轴飞行器的时候了解到有这样一个可以控制飞行器姿态的传感器&#xff0c;而后在哔哩哔哩看到利用姿态传感做很多很好玩的作品。目前在自己的本职工作中广泛会用姿态传感器IMU的应用。 1.博文索引 【基础内容】 【QMI8658 - 姿态传感器学习…

一次性剪辑大量视频的教程,逻辑讲解,很实用

在短视频领域&#xff0c;视频剪辑的效率如何提升也成为了广大短视频创作者需要解决的问题之一。批量剪辑这个词汇也不断被提起。那么该如何自学批量视频剪辑呢&#xff1f; 想要进行批量视频剪辑&#xff0c;那就先需要一款好用的软件&#xff0c;小编这里给大家良心推荐超级…

“优等生”宁波银行公布三季报:营利齐升,风控抵补能力持续夯实

撰稿 | 多客 来源 | 贝多财经 10月30日晚&#xff0c;城商行“优等生”宁波银行披露2023年三季报&#xff0c;在效益与规模稳步提升的同时&#xff0c;资产质量也保持了优异水平。 前三季度&#xff0c;宁波银行实现归属于母公司股东的净利润193.49亿元&#xff0c;同比增长1…

【生物信息学】单细胞RNA测序数据分析:计算亲和力矩阵(基于距离、皮尔逊相关系数)及绘制热图(Heatmap)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 读取数据集2. 质量控制&#xff08;可选&#xff09;3. 基于距离的亲和力矩阵4. 绘制基因表达的Heatmap5. 基于皮尔逊相关系数的亲和力矩阵6. 代码整合 一、实验介绍 计算亲和力…

新加坡公司【Trident Digital】申请1688万美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于新加坡的Trident Digital Tech Holdings Ltd&#xff08;简称&#xff1a;Trident Digital&#xff09;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申…

oracle中关于connect by的语法及实现(前序遍历树)

语法 connect by是是结构化查询中用到的&#xff0c;其基本语法是&#xff1a; 1 select … from tablename 2 start with 条件1 3 connect by 条件2 4 where 条件3; 使用示例 例&#xff1a; create table tree(id int,parentid int); insert into tree values(120,184); …

Apache ECharts简介和相关操作

文章目录 一、Apache ECharts介绍二、快速入门1.下载echarts.js文件2.新建index.html文件3.准备一个DOM容器用于显示图表4.完整代码展示5.相关配置 三、演示效果四、总结 一、Apache ECharts介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观…

使用Docker Compose部署Spug并实现内网穿透远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…

【Ubuntu】虚拟机安装系统与初始化配置

一、安装ubuntu系统 1、首先在虚拟机上安装一个虚拟机系统。 简单操作忽略&#xff0c;只贴出与安装linux不同的地方。 内存&#xff0c;处理器&#xff0c;磁盘等什么自己看着需要自己增加们这边不做过多说明。一直下一步&#xff0c;然后就安装好了。2、选择镜像位置然后启…

python自动化测试(六):唯品会商品搜索与规格选择-练习

目录 一、配置代码 二、操作 2.1 输入框“运动鞋” 2.2 点击搜索按钮 2.3 选择品牌 2.4 选择主款 2.5 适用性别 2.6 选择尺码 2.7 选择商品&#xff1a;&#xff08;通过css的属性去匹配&#xff09; 2.8 点击配送地址选项框 一、配置代码 # codingutf-8 from selen…