ubuntu下终端配置:zsh和oh my zsh

一直在我的ubuntu机器上用很简陋的terminal,这次配置和美化一下,用起来也舒服一点。在其他的Linux发行版应该也差别不大。 zsh 首先是安装zsh: zsh是完全兼容bash的,所以bash的脚本zsh都可以跑。 $ sudo apt install zsh -y 装完以后修改默认的登陆shell: $ chsh -s /bin/zsh 下次打开terminal就是zsh了环境了,zsh的配置文件在~/.zshrc oh-my-zsh oh-my-zsh是一个专门配置zsh环境的工具。 直接安装: $ sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 它的配置非常多,先不要管它。 字体 powerlevel9k是一个powerline类型的主题。它需要安装Nerd-Fonts系列字体。 $ git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k 编辑~/.zshrc $ vim ~/.zshrc 添加: ZSH_THEME="powerlevel9k/powerlevel9k" source ~/.zshrc 下面是安装字体,推荐用它的脚本自动装,我下载了字体文件安装,terminal里面的配置一直没有,太浪费时间了。 先下载,文件有点大的。。: $ git clone https://github.com/ryanoasis/nerd-fonts.git $ ./install.sh Hack Hack是我选择的字体类型,其他的也可以。 然后在terminal配置里面选择一下字体,我用的是ubuntu自带的。 结束以后效果应该是这样: 下面是两个插件 ZSH-AUTOSUGGESTIONS 它是一个命令行补全。如果有历史记录里面有相同的命令,它会提示你。 安装它: $ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 下载到了oh-my-zsh的自定义插件目录。 编辑~/.zshrc,添加下面一行: $ source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh $ source ~/.zshrc 查看效果: 紫色的就是提示的,这个颜色是可以修改的:...

August 10, 2019 · 1 min · Joe

centos7更新内核

更新内核以支持wireguard,如果上一篇文章安装wireguard有问题,可以看这个步骤更新内核,😂 centos 7 更新内核 添加ELRepo: $ sudo yum -y install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 导入GPG key $ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 查看: $ sudo yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-ml 安装: $ sudo yum --enablerepo=elrepo-kernel install kernel-ml 顺便装上这些东西(这个是wireguard必须的,而且如果你安装wireguard的时候装的版本可能和你的内核版本对不上): $ sudo yum -y --enablerepo=elrepo-kernel install kernel-ml-{devel,headers,perf} 修改grub,并保存: Edit the file /etc/default/grub and set GRUB_DEFAULT=0 $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg 重启。 删除更新的内核: $ uname -r 3.10.0-957.1.3.el7.x86_64 确认自己在3.10 删除 $ sudo yum remove kernel-ml kernel-ml-{devel,headers,perf}

July 28, 2019 · 1 min · Joe

wireguard初体验

WireGuard被视为下一代VPN协议,用来替代OpenVPN,IPSec等VPN协议。 安装 我就按照官方的quick start来写了。😂 先是服务器端(centos): yum update -y sudo curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo sudo yum install epel-release sudo yum install wireguard-dkms wireguard-tools 装完之后试一下这个命令: ip link add dev wg0 type wireguard 如果没有报错就ok了,如果有报错可能是linux-headers没有装什么的。 接下来是步骤,服务端和客户端步骤基本一样,也就是操作下面两次(比如我有两台服务器,ip分别为192.168.2.1,192.168.2.2,那么只要改ip和pubkey就可以了): wg genkey > private wg pubkey < private ip link add dev wg0 type wireguard wg set wg0 private-key ./private ip addr add 192.168.2.2/24 dev wg0(给这个虚拟网卡一个ip) ip link set wg0 up wg set peer mDSvO/2BLLw7VL8vBEjv0+03RZENksSM/9gxASSxzGQ= allowed-ips 192.168.2.1/32 endpoint 98....

July 17, 2019 · 2 min · Joe

Django的几个字段参数

有一些常用的字段参数记录一下。 null 该值为True时,Django在数据库用NULL保存空值。默认值为False。对于保存字符串类型数据的字段,请尽量避免将此参数设为True,那样会导致两种‘没有数据’的情况,一种是NULL,另一种是‘空字符串’。 blank True时,字段可以为空。默认False。和null参数不同的是,null是纯数据库层面的,而blank是验证相关的,它与表单验证是否允许输入框内为空有关,与数据库无关。所以要小心一个null为False,blank为True的字段接收到一个空值可能会出bug或异常。 related_name 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set'。 例如: class Classes(models.Model): name = models.CharField(max_length=32) class Student(models.Model): name = models.CharField(max_length=32) theclass = models.ForeignKey(to="Classes") 当我们要查询某个班级关联的所有学生(反向查询)时,我们会这么写: models.Classes.objects.first().student_set.all() 当我们在ForeignKey字段中添加了参数 related_name 后, class Student(models.Model): name = models.CharField(max_length=32) theclass = models.ForeignKey(to="Classes", related_name="students") 当我们要查询某个班级关联的所有学生(反向查询)时,我们会这么写: models.Classes.objects.first().students.all() on_delete 这个表示外键被删除的时候,所关联的对象应该进行什么操作。比如说一篇文章对应一个Python的分类,但是这个分类被你不小心删除了,那么这篇文章的分类应该会发生什么变化呢?主要有以下六种: CASCADE:模拟SQL语言中的ON DELETE CASCADE约束,将定义有外键的模型对象同时删除!(该操作为当前Django版本的默认操作!) PROTECT:阻止上面的删除操作,但是弹出ProtectedError异常 SET_NULL:将外键字段设为null,只有当字段设置了null=True时,方可使用该值。 SET_DEFAULT:将外键字段设为默认值。只有当字段设置了default参数时,方可使用。 DO_NOTHING:什么也不做。 SET():设置为一个传递给SET()的值或者一个回调函数的返回值。注意大小写。 下面两个是时间字段独有的。 auto_now_add 配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。 auto_now 配置上auto_now=True,每次更新数据记录的时候会更新该字段。

July 9, 2019 · 1 min · Joe

kubenetes滚动升级

尝试一下k8s自带的滚动升级。 其他的就不讲了,直接记录一下我的操作。 先把k8s的配置文件放上来: tomcat-service.yaml: --- apiVersion: v1 kind: Service metadata: name: tomcat-service labels: k8s-app: tomcat-service spec: ports: - port: 8080 targetPort: 8080 protocol: TCP name: http selector: k8s-app: tomcat-service --- apiVersion: v1 kind: Deployment metadata: name: tomcat-service spec: replicas: 3 template: metadata: labels: k8s-app: tomcat-service spec: terminationGracePeriodSeconds: 60 containers: - name: tomcat-service image: tomcat:7 ports: - containerPort: 8080 ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: host-based-ingress spec: rules: - host: tomcat....

July 6, 2019 · 2 min · Joe