【Day 1】Startup x macOS setup x 一起来挖萝卜坑

tags: 铁人赛 macOS iTerm2 zsh powerlevel10k

概述

作者的碎念

我在学习的过程中跌跌撞撞,以往总是怕写错说错,因此没有留下多少记录。
十几年过去了,我犹然记得,那几个怀抱着车库创业梦想的小屁孩们,
现在已经来到中年大叔的年纪,不知道当初那几位夥伴们都走到哪里了...

曾经怀抱着软件开发的梦想,才刚从前一份工作离职,就因 Covid-19 爆发的缘故,从失业者的角色,辗转换跑道变成无照 AWS 架构师。

从前端学习者、学生网管、成为後端工程师、再来变成 DevOps、无业游民,
我加确信,不应该替自己的技术设限学习领域。

三十天的目标

身为一个萝卜爱好者,尝试记录下尝试使用一些皮毛技术和种萝卜,尽可能写下一些采取 DevOps 的经过。
赛前的想像与愿景:只做萝卜的服务,如果有萝卜的网站出现,那就会接上 AWS 的 CI/CD 流程,使用容器技术降低维运成本。时间若是允许的情况下,将会搭配网站的实作,目标是要让老板从香蕉斜杠萝卜。老板白天要去上班领香蕉,下班後顺道去巡田水种萝卜,没有办法全心全意顾店。

设定开发环境 (macOS)

万事起头难...设定环境这档事,只有网管人员跟电脑常常坏掉的人会遇到。
所以在新环境设置的经验是非常难拥有的?

可能有些人会为了陪老板打高尔夫,买了球具;
久久难得爬一次山,就买了整套的登山用品;
一时心血来潮想开火煮饭,就买了整套的厨具;
为了地沟油、养了一只牛 ⋯⋯⋯ 才怪!

所以当然可以为了写出本文章,买一台新 Mac

设定环境的事前作业:

  • 准备好电脑
  • 准备好心情


接下来的三十天、以及後续的时日,我将慢慢地 污染 产生专属於自己的开发环境。
漂亮的Shell、方便透过 SSH 连线的环境、Containerlized 的环境、撰写 Web 的工具、使用 AWS 的环境。

设定你的命令环境 Shell

您可能不知道您是正版软件受害者,在这边笔者强烈建议,试试看使用非 Windows 作业系统作为主要的环境,像是 Linux 的各发行版本。若是经济许可的话,弄一台 macOS 来用,真的用过就回不去了。
後面我们将会说明如何购买云端供应商的虚拟主机,以虚拟环境作为主要开发工具也是个不错的选择。

iTerm2 on MacOS

依照作者小弱炮本人以前的使用习惯,有个不错的 Terminal 叫做 iTerm2

看到画面中间有个 Download 按钮,就给他大力地按下去吧!
单纯的下载、开启、拖放到 Application 目录(中文作业系统,会叫做“应用程序”),安装完成。

备注:最底下有个 GPLv2 License 是什麽?

  • 首先,GNU 是由自由软件基金会创办人 Richard Matthew Stallman、EMAC 的作者所提出,他是 "GNU's Not Unix" 的缩写。而 GPL 则是 GNU General Public License 的缩写。
  • 篇幅有限,我简单的说,这个 GPL 授权,它有感染性。凡是援引了含有 GPL 授权的程序码,皆须以 GPL 方式公开其创作。
  • 采此类型授权的常见专案有 Linux KernelGCC

Homebrew

Homebrew 下载页面

  • 透过 Homebrew 已达到透过指令来轻松、集中管理各种套件。
  • 开启 iTerm2 把上图中的那行文字贴上去吧
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Bash & ZSH

BASH

  • Bash 为 bourne again shell 的缩写
  • 是一种 Unix shell 和命令式语言
  • 最初是由 Brian Fox 撰写,作为取代 Bourne shell 的选择
  • 看看别人怎麽说 —— Stack Overflow: Difference between sh and bash
  • 而 macOS 内自带 bash
nipapa@nipapadeMacBook-Pro ~ % which bash
/bin/bash
  • 当我想要使用 bash 的时候 ...
nipapa@nipapadeMacBook-Pro ~ % bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$

ZSH

  • Z shell
  • zsh 的强大功能
    • auto complete of command entries (指令自动补齐功能)
    • spell checking (拼字检查)
  • 我的 macOS Big Sur (11.5.2) 预设使用的是 zsh;
    echo $SHELL 看看你的预设 SHELL 是不是也是 /bin/zsh
  • 如果不是的话,就用下列指令来进行安装吧
brew install zsh
  • 装完之後,记得按照指示 chsh -s /bin/zsh 来更改预设值

安装 Oh-My-Zsh

  • 黑白的 zsh 到彩色的 zsh 和看起来很新潮的介面
    根据 Oh-My-Zsh 官网 提供的安装方式,可以选择走 curl 或是 wegt 方式安装,以下列出其中一种。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  • 装好之後,你的介面应该看起来像是 ...

安装字型

  • 首先,连到 Nerd-fonts 的 GitHub 页面,看看有没有新玩意 ...
    brew tap homebrew/cask-fonts
    brew install --cask font-hack-nerd-font
    
  • 另外也可以走下载安装的方式
    • 从这个 nerd-fonts repository 中的资讯可以知道,当下最新的版本是 v2.1.0,而我现在想要装的是 SourceCodePro.zip,把他下载下来
    • 用 Spotlight 叫出 macOS 的 字体簿 (Font Book.app),按加号安装
  • 网路上还流传蛮多用 brew cask install 的语法呀,那个 cask 功能现今已经被拿掉罗...
    (看看别人怎麽说:Homebrew 讨论区 Error: Unknown command: cask )

修改 iTerm2 的预设字型跟主题

  • 把喜欢的颜色套用上去,其他自己看要不要勾选 Tab Color

  • 把字型改成 SauceCodePro Nerd Font Mono
    (备注:Mono 是定宽字的意思,一个萝卜一个坑是有好处的⋯⋯)

  • iTerm2 画面选取左上角 iTerm2 後,选 Preferences 来进行调整

自订终端机介面样式

Powerlevel10k

  • 刚刚,我们已经安装了 oh-my-zsh
  • 接着我们来看看 Powerlevel10k 的 GitHub,针对 oh-my-zsh 进行扩充。
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
  • 接着呼叫 p10k configure
  • 如果看到下列情况,表示字型没有调改或安装成功
  • 若有正确设定字型,则会看到像是下方的方块(diamond)
  • 修改 ~/.zshrc 的内容
    • 将原本的 ZSH_THEME="powerlevel10k/powerlevel10k"
    • 备注:这个 rc 结尾的档案,表示是一段 run script,意思是这个脚本,会在开启 zsh 程序时,被执行的一段脚本

结论

  • 根据铁人赛的宗旨,凡是报名的人,要在连续的三十天边学边做边写文章。
  • 我在报名的时候,还不知道最後到底会产出什麽内容,就顺水推舟吧。
  • 其他心得:NiceCode NiceChord 的 Wiwi 也是 Powerlevel10k 的使用者呢!

後记

准备了萝卜种子,和买了一个长条花盆,准备来播种!

种子放在冰箱稍作催芽後⋯⋯

播种


<<:  Day10,先来聊聊我的Kubernetes看法

>>:  DAY10 资料前处理-资料编码、资料切割

Day 30 完赛心得

在开始铁人赛之後才发现这个月不该比铁人赛的 这个月的事情比平常都还要多 虽然硬着头皮写完了30天的文...

22.移转 Aras PLM大小事-流程签核动态指派(1)

这一篇接续16.移转 Aras PLM大小事-系统使用者与角色 起初是想要将公司内的BPM专案请购的...

30天程序语言研究

今天是30天程序语言研究的第四天,研究的语言是python,今天主要学习的部分是tuple和func...

Ruby on Rails 实体方法与类别方法

依据方法作用的对象不同,有分实体方法(instance method)及类别方法(class met...

NIST SDLC和RMF

安全控制是风险处理的一部分,风险评估之後进行。安全控制的范围是根据风险评估的结果确定的。根据NIST...