hj24.life

Gitlab CI CD指北

之前在公司倒腾过基于Gitlab的CI/CD,现在重新记录一遍流程,做个备忘。

一个典型的流程是这样的:

提交代码触发CI pipeline -> 安装依赖、编译、自动化测试 -> fix bug -> 回到上一步 -> Review代码 -> 合并到发布分支 -> 触发CD -> 部署代码、发布

基本上更复杂一些的流程都是在这个基础上增改了,下面来走一遍这个流程。

将Python项目打包成Docker镜像

之前写了一篇 Dockerfile编写指南,不过没有涉及到部署项目这种相对复杂的操作,最近写毕设需要把项目打包成docker镜像,部署在服务器上,因此写下这篇博客,对上面那篇做一个补充引申。

一个将Python项目打包成docker镜像的基本流程如下:

编写好Dockerfile上传至Github/Gitlab -> git拉取代码到服务器 -> build镜像 -> docker run配置端口映射 -> 设置服务器安全组

Dockerfile编写指北

刚开始接触docker时大家基本都是通过`docker pull`命令来拉取镜像,在此基础上`docker exec/run`这些命令,进入容器做一些配置上的修改以此来构建一个容器,而Dockerfile就是一个一劳永益的构建镜像的方法,通过编写Dockerfile来定制自己的镜像。

说白了,就是类似于Python项目的requirements.txt文件,你可以在里面写上自己需要的依赖包,然后安装构建自己项目的依赖:

requirements.txt => Dockerfile pip install => docker build

这篇博客会以构建一个简单的Postgres镜像为例,讲一讲用Dockerfile来定制自己的镜像的过程。

进程线程和协程浅析

不管考研还是工作,进程线程总是一个避免不了的问题,除此之外,协程也是高并发编程必备的技能

这篇博客照旧还是以问题为导向,如果看完能回答出下面这些问题,那么应该就初步掌握了这些点,剩下的部分就需要你不断code,不断深挖技术书籍,在实践中提升自己的理解:

  1. 进程、线程、协程有什么区别?
  2. 线程共享哪些进程资源,有哪些独立资源?
  3. 都说进程线程切换开销大,到底大在哪?
  4. 线程池是什么?它有什么作用?
  5. 你知道有哪些多进程和多线程的使用场景?
  6. 进程和进程之间,线程和线程之间怎么通信?
  7. Python和Golang的协程有什么区别?

搞完概念之后可以来试试code,这里有两道leetcode的线程题:

  1. 按序打印
  2. 交替打印FooBar

Things I Don T Know as of 2019

创意来自: lovezhy Things I Don’t Know as of 2018

春节假期快要结束了,没几天要回去上班,准备春招,因此写下这篇博客,记录过去一年的那些我还不了解的技术,那些我感兴趣但还来得及学的技术。

如何发布自己的Python库

前言与简介

我想任何一个有追求的Python开发者在度过基础阶段后都想过发布自己的库,也就是我们常说的造轮子,这是成为一个成熟Python开发者的第一步,在造轮子的过程中,无论是自己的编程能力还是为以后给开源项目贡献代码的能力都会得到很大提升。今天这篇博客,就来带大家从0开始,向PyPI贡献自己的开源库。