UMBRELLA

未雨绸缪,举重若轻

与没有条件分支的线性脚本相比,带有条件分支的脚本更加广泛且多用途,就像游戏与书籍的线性叙述相比具有多用途一样。那么,为什么我们需要条件语句呢?我们需要他们编写能够动态处理不同情况的脚本,并根据情况改变其运行方式。让我们从一个非常简单的条件开始,以帮助我们正确地开始新的一天:

1
2
3
4
5
6
7
8
$ read -p "Would you like some breakfast? [y/n] "
Would you like some breakfast? [y/n] n
$ if [[ $REPLY = y ]]; then
> echo "Here you go, an egg sandwich." # Branch #1
> else
> echo "Here, you should at least have a coffee." # Branch #2
> fi
Here, you should at least have a coffee.
阅读全文 »

假设我们要删除目录中的文件Downloads。根据我们迄今为止收集的知识,我们可以查看其中有哪些文件并删除它们:

1
2
3
4
5
6
7
8
9
$ cd ~/Downloads
$ ls
05 Between Angels and Insects.ogg
07 Wake Up.ogg
$ rm -v '05 Between Angels and Insects.ogg' '07 Wake Up.ogg'
removed '05 Between Angels and Insects.ogg'
removed '07 Wake Up.ogg'
$ ls
$
阅读全文 »

bash shell 是一个二进制程序,可以交互式或非交互式运行,通常在终端仿真器程序提供的基于文本的界面中运行。

当您从图形用户界面启动终端仿真器程序时,您将看到一个打开的窗口,其中包含文本。此窗口中显示的文本既是终端中运行的程序的输出,也是您使用键盘等发送到这些程序的字符。bash 程序只是可以在终端中运行的众多程序之一,因此请务必注意,bash 并不是使文本出现在屏幕上的原因。终端程序会处理这个问题,从 bash 中获取文本并将其放置在窗口中供您查看。终端可以对终端中运行的其他与 bash 完全无关的程序执行相同的操作,例如邮件程序或 IRC 客户端。

阅读全文 »

边缘计算

边缘计算是一种即将到来的计算方法,指的是一系列更接近用户的计算机网络和设备。边缘计算就是通过将数据存储在更靠近用户位置的位置来处理用户生成的数据。这确保了数据处理快速进行,从而确保大数据块得到无缝处理。这进一步帮助组织更快地做出决策。边缘计算技术的一些用例包括自动驾驶汽车、自动化零售店、机器人和智能设备。

边缘计算技术的组成部分:
  • 网络边缘:从技术上讲,边缘计算不需要单独的网络,更多的是现有网络的延伸;使连接变得容易。
  • 边缘设备:这些是可以快速连接到网络的设备,我们今天已经看到了此类设备的使用。例如,智能手表和无线/智能扬声器。
  • 本地基础设施:这些通常是服务器、路由器和其他用于连接网络的本地设备。

用创造性的方式来说,边缘计算技术帮助组织让数字世界中的事物出现在物理世界中。从商业角度来说,这意味着即使是最小的企业(例如实体公司)也可以利用在线数据和算法的力量,帮助他们为客户提供更好的体验。边缘计算有助于创建智能系统,帮助员工从这些系统中学习。如果我们观察的话,边缘计算存在于所有这些场景中。边缘计算技术通过实时数据处理帮助企业精确可靠地运行应用程序。

阅读全文 »

Kubernetes 是一个分布式系统,容易出现多种故障。对于组织而言,拥有高度可用的 Kubernetes 对于提供良好的客户体验至关重要。如果发生意外中断,如果您的集群在一个或多个组件发生故障的情况下无法继续运行,则停机可能会导致收入损失、声誉问题等。

通过在 Kubernetes 中实施 HA,可以降低停机风险,集群上运行的应用程序和服务仍然可供用户访问,并且系统可以快速从故障中恢复,无需人工干预。在较高级别上,这可以通过部署控制平面组件的多个副本以及跨越多个可用区或区域的网络拓扑来实现。

阅读全文 »

Kubernetes(简称:k8s) 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的 workflows 和更高级的自动化任务。

Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力服务滚动升级和在线扩容可扩展的资源自动调度机制、多粒度的资源配额管理能力。Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。

Kubernetes是一个分布式服务,所有从架构上可以为Control Plane(Master) Node 和Worker Node,这也是分布式架构的主要特点。

阅读全文 »

获取示例应用

克隆示例应用程序以与本指南一起使用。打开终端,将目录更改为您要工作的目录,然后运行以下命令来克隆存储库:

1
$ git clone https://github.com/docker/docker-rust-hello
为 Rust 创建 Dockerfile

现在您已经有了一个应用程序,您可以docker init为其创建一个 Dockerfile。在docker-rust-hello目录中,运行docker init命令。请参阅以下示例来回答 中的提示docker init

阅读全文 »

昨天我在处理项目时我尝试使用 git pull 命令从远程分支中拉取更改的内容,但最终报错:"fatal: Need to specify how to reconcile divergent branches", 这阻碍了我的工作。我决定写一篇关于这个问题的文章,以便它也能帮助你们。

解决了“reconcile divergent branches”

如果您使用 Git,那么在尝试从远程存储库执行 git pull 时出现此错误并不罕见。虽然大多数时候您会看到"fatal: Need to specify how to reconcile divergent branches"警告,但有时您会看到它是致命错误。如果错误显示为警告,那么您仍然可以从存储库中提取更改,但如果它显示为致命错误,那么您将无法继续进行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ git pull origin main
*branch dev -> FETCH_HEAD
提示:您有不同的分支,需要指定如何协调它们。
提示:您可以通过在提示之前运行以下命令之一来完成此操作
:您的下一个拉取:
提示:
提示:git config pull.rebase false#合并
提示:git config pull.rebase true#rebase
提示:git config pull.ff only # 仅快进
提示:
提示:您可以将“git config”替换为“git config --global”以设置默认
提示:所有存储库的首选项。您还可以传递 --rebase, --no-rebase,
在命令行上提示:或 --ff-only 以覆盖每个
提示:调用配置的默认值。fatal:需要指定如何协调不同的分支。
阅读全文 »

什么是容器?

简而言之,容器是计算机的沙盒进程,与主机上的所有其他进程隔离,这种隔离利用了内核命名空间和cgroup,这些功能在linux中已经存在很长时间了。Docker正是利用了这些能力。总而言之,容器包括以下这些能力:

  • 是一个可运行的镜像实例,你可以使用Docker APICLI创建、启动、停止、移动或删除容器。
  • 可以在本地机器、虚拟机、云上部署和运行。
  • 是跨平台并且可移植的。
  • 与其他容器隔离运行自己的应用、二进制文件以及配置。

什么是容器镜像?

运行容器时,它使用隔离的文件系统。该自定义文件系统由容器镜像提供。由于镜像包含容器的文件系统,因此它必须包含运行应用程序所需的所有内容-所有依赖项、配置、脚本、二进制文件等。镜像还包含容器的其它配置,例如环境变量、要运行的默认命令和其它元数据。

将应用程序在容器中部署

准备工作

  • 在机器上下载&安装Docker
  • 在机器上下载&安装git客户端
  • 在机器上安装一个编辑文件的IDE或文本编辑器,这里建议下载&安装Visual Studio Code
阅读全文 »

Rust 的编译速度和跨平台编译相比 Go 语言就要难用很多,但这也是语言特点,当你从中受益时,必然要付出一些代价,本文主要介绍如何实现跨平台编译,使用 cross 这个工具。

我的工作台是 Mac M2,想编译出 LinuxWindows 的可执行文件,使用的代码很简单,就是 Hello World 示例程序,这个不是重点。

使用 cross 首先当然是安装,按照官方的描述,可以使用下面的命令:

1
cargo install cross --git https://github.com/cross-rs/cross

然后是安装 docker 或者 podman,本文以 docker 为例,讲述使用过程中遇到的问题及其解决方案。cross 的使用很简单,例如,如果我要编译 targetaarch64-unknown-linux-gnu,执行:

1
cross build  --target aarch64-unknown-linux-gnu
阅读全文 »
0%