Shawn's Blog

一个伪程序员的伪技术博客

0X00 前言

这篇博客的目标读者:正在使用Linux桌面,打算长期继续使用下去的同学(这也就意味着熟悉Linux下的基础操作,理解Linux下的常见概念)。

这里有一个我之前写的“在Linux桌面下存活”可以参考一下。

0X01 颜值就是战斗力

Linux也不都是黑色背景白色字的命令行。

首先要换的就是一套主题和图标,不论是KDE、Gnome还是Xfce都可以在对应的网站找到大量的主题,简单换过图标和主题之后再配合一张好看的壁纸,整个观感立马就好了不少。

KDE: https://store.kde.org/
Gnome: https://www.gnome-look.org/
Xfce: https://www.xfce-look.org/

然后要换的就是字体了,等宽字体我推荐这几个HackSource Code ProCascadia Code都很好看,适合在终端、IDE和编辑器里使用。

最后就是zsh主题,如果使用的是zsh的话推荐使用powerlevel10k这个主题,是由powerlevel9k发展而来的,但是速度比powerlevel9k快好多。

0X02 善用alias和bash函数

相信大家在初学Linux的时候都学过alias指令,没学过的话我简单介绍一句:“alias是给命令取别名的工具,例如执行alias new_ls="ls -l"过后再使用new_ls命令就和使用ls -l一样了”。

首先我们知道将alias命令直接写在shell里,在关闭重开shell之后就失效了(起码现在知道了)。所以我们要把alias写在.bashrc或者.zshrc中(依你使用的shell而定)。现在我的.zshrc中就有很多已经写好了的,下面给大家分项几个对大家都有用的

阅读全文 »

0X00 前言

这篇博客的目标读者:有Linux使用基础,打算使用Linux作为桌面系统的人(这也就意味着熟悉Linux下的基础操作,理解Linux下的常见概念)。

注:这篇博客不讨论不对比Linux/Windows/MacOS等不同的操作系统。

0X01 首先选择一个发行版本

众所周知Linux是一个内核,在这个内核基础上有很多发行版本例如:Archlinux、Manjaro、Ubuntu、Deepin、Debian、openSUSE、Fedora等等。那我们首先要选择一个来安装到自己电脑上。

基于我自己的使用体验比较推荐使用的是:Manjaro、Ubuntu、Deepin这三个,他们共同的优点是:适合初次使用Linux桌面的人。

Manjaro

基于Archlinux,滚动更新。该发行版本最大的特点是软件版本紧跟最新,而且由于是滚动更新所以不用像多数系统一样隔一段时间来一次大版本更新。只要按照系统提示进行常规系统升级就可以将整个系统一直保持在最新的状态。

Manjaro能够使用Archlinux的AUR软件仓库,算是软件仓库最丰富的发行版本之一了,很多其他系统要操作很多步骤才能装好的软件在Manjaro下一个命令就能装好。

另一个优势是可以使用ArchWIKI,很多问题在WIKI里都有详细的解释。

而Manjaro的缺点也是有的,例如用户群体还是不够大。如果你电脑出现了点问题,那么极有可能你的同事和朋友都没有用过这个操作系统,只有一点点在网上找解决方案。如果是Ubuntu的话可能好多人都用过,可以给你一些提示或者建议。

阅读全文 »

0X00 就算只有一节我也要写标题

众所周知Dockerfile是构建Docker镜像的优良方式,而使用Dockerfile构建镜像最重要的就是为数不多的几个命令,而本次的主题COPYADD就是其中两个。我们知道这两个命令都是将文件搞到Docker镜像里用的,那究竟有没有区别,有什么区别呢?

首先我们看一下当前这个目录:

1
2
λ  ~/Workstadion/learn_docker  ls
Dockerfile excited.tar

我们有着么一个Dockerfile,可以看到是基于fedora的一个镜像,并且将目录下的excited.tar放进了创建好的shawn目录中

1
2
3
4
FROM fedora
RUN mkdir shawn
WORKDIR shawn
COPY excited.tar .

我们可以看到工作目录下已经存在了一个excited.tar了,也就意味着我们成功将这个文件搞进去了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
λ  ~/Workstadion/learn_docker  docker build . -t wtf ; docker rm learn_docker; docker run --name learn_docker -it wtf bash
Sending build context to Docker daemon 23.04kB
Step 1/4 : FROM fedora
---> e9ed59d2baf7
Step 2/4 : RUN mkdir shawn
---> Using cache
---> 5014855b8533
Step 3/4 : WORKDIR shawn
---> Using cache
---> 82f9d06a4d3c
Step 4/4 : COPY excited.tar .
---> 1bc293d81b33
Successfully built 1bc293d81b33
Successfully tagged wtf:latest
learn_docker
[root@f6a4f34ed504 shawn]# ls -l
total 20
-rw-r--r-- 1 root root 20480 Sep 25 14:15 excited.tar
阅读全文 »

0X00 Redis的分库

使用过MySQL或者类似的数据库都应该知道,一个数据库内部是可以分成多个库的。比如MySQL从上到下是MySQL service -> database -> table -> field,但是一开始使用redis的时候好像是没有database这一层的呢?其实是存在这么一层的,redis默认是存在编号0到15这总共16个库的,每个库除了命名空间不同以外都是相同的。也就是说在编号为0的库里set name shawn之后跑到编号为1的库里get name是拿不到的。

那这么说来这个分库究竟有什么用呢?其实很少用的到,甚至就连redis设计者自己都说搞这个是较蠢的操作。我们日常用到的唯一一处地方就是在测试服务器上,因为一台机器部署了太多服务,而且每个服务又都要用redis所以就每个服务分开使用0~15这些数据库。

因为开一个完整redis实例的资源消耗本身就很小,所以分库这个操作就更显的不太用的到了,毕竟我们完全可以在一台机器上开多个redis实例从而实现相同的效果,而且又方便管理。

不过也还是简单介绍一下好了:/etc/redis.conf文件中的databases参数是设置redis实例具有多少个数据库的,如果真的需要的话可以修改这个参数然后重启redis从而生效。

阅读全文 »

0X00 最常见的两种构建方式

构建Docker镜像的方式并不多,最常用的也就只有:编写Dockerfile和使用docker commit这两种。既然方式分为两种那么肯定是有区别的(废话),那我们来看看吧。

首先来介绍一下这两种构建方式,假设打算使用docker部署我们的服务,那么我们来使用两种方式来构建一下这个镜像吧。

0X01 docker commit

像我们这种新手平时用的比较多的应该就是docker commit xxxxx hub.xxx.xxx/xxx:xxx这种方式了,我们称之为docker commit。这种方式比较好操作,比较好理解,操作也比较容易。如果掌握了git的工作流程,那么使用docker commit方式来构建镜像简直是小菜一碟。

  1. 我们搞一个基础镜像比如fedora,那我们把它搞下来:docker pull fedora
  2. 运行并进入到容器里docker run --name our_container -it fedora /bin/bash,此时shell已经接入到容器里了
  3. 我们来安装吧 dnf install python3然后pip3 install Django 这样就装好了,可以退出docker里的shell了
  4. docker commit -m "安装了Python和Django" our_container our_image:latest这样就将刚刚的容器打包成名为our_image的镜像了
  5. 现在使用docker images就可以看到刚刚打包的our_image
  6. 后面如果还需要更新这个镜像那么就可以继续运行这个docker run --name our_container -it our_image:latest然后更新完了再docker commit -m "balabalabala" our_container our_image:latest打包一层新的上去就好了
阅读全文 »
0%