全栈工程师不应只会前后端开发,而是应该从开发、测试、部署各个方面都有所掌握的全技能人才。本书使用了热门的Docker容器技术、GitLab版本控制、GitLab-runner持续集成、Python Web Flask框架等,将一整套开发流程通过简单案例展现出来。
本书不仅图解了Python开栈开发、测试、部署等内容,还详细介绍了利用Docker来开发Python项目并持续集成的完整开发流程,尤其适合新手。
前 言
何为全栈工程师
全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人,也叫全端工程师(同时具备前端和后台能力),其英文是Full Stack Developer。 而在教育体系中,人们常常告知你应该选择什么专业深造下去,在行业里做个专家。这是不是与全栈工程师冲突了呢?
我个人认为全栈工程师应该属于一个企业内IT部门的救火员,哪里需要他,他就出现在哪个岗位解决遇到的问题。他了解并掌握紧贴潮流的最新技术,能在某些特定领域提出自己的独特见解。
例如,在软考职称中,初级职称和中级职称分成了5个专业,每个专业又细分为多个不同的职称,初级和中级职称一共包含了22种职称。但到了高级职称后只剩下5种职称,每一种职称都是经过多种初级和中级职称融会贯通而成的,如下图所示。
软考职称对应表
写书的目的
混混沌沌到了而立之年,工作8年时间里虽然写了很多的小程序,有很多实践,但是没有一项是能拿得出手来展示炫耀的,很多开发习惯更是不规范,随意性很大。
按照美国缅因州国家训练实验室的研究成果《学习金字塔》 中所描述,学习的最好效果就是把学会的知识传授给他人。
学习金字塔
授人以鱼不如授人以渔,同时还可以把自己学到的知识内容认真梳理一遍。通过整理把知识点连贯起来,使其有较好的层次和顺序。
在网络上或者已出版的书籍中,还未看到有关利用Docker来开发Python项目并持续集成的完整开发流程的相关文章,因此本书提供了一些关于Docker、Git、GitLab-runner、Flask Web的简单案例,从服务器搭建、开发环境、代码写作、程序测试到持续集成一整套完整的开发流程。
关于语言之争
很多时候大家都会说X语言最好、最强,但是在我看来,语言只是一种工具。打个比方,C可以看成美工刀(够锋利),Java可以看成剪刀。裁纸的时候用美工刀的效率肯定高过剪刀,但是剪纸的时候用剪刀是不是比用美工刀快?美工刀不是不能剪纸,但是速度没剪刀来得快。
当你精通一门语言后,再学习其他语言的时候,学会的语言不会成为障碍,反而可以对这两种语言对比学习以加深理解。
前置知识
这里假设你懂点编程知识,本书的编程主要是以Python为主。
也假设你会用Linux命令,不会也没什么关系,我们会在用到的时候进行讲解,但是深入底层机制的知识只能靠你自己去查找资料来学习了,本书用到的操作系统主要以Ubuntu 16.04.1 server amd64 LTS为主。
关于作者
从大学到工作阶段经过4次考试才拿到中级职称的网络工程师证书,在学校的时候理论过关了,但是缺少实践,下午题答得不好;而工作之后,有设备有环境可以实践了,但又常常忘记理论知识。
在我们单位,IT这块儿没有细分岗位,是一个大技术部兼管IT部门(设备维修和IT都同属于技术部),在部门内每个人都是技术能手。我平常工作大部分是围绕DBA、服务器维护和数据分析这些方面。
曾经精通C、VB、PHP、SQL,现在平时用得最多的是Python,“人生苦短,我用Python”。使用Python开发了几十个小程序,来解决工作中遇到的问题。
由于编者水平有限,书中疏漏之处在所难免,敬请谅解。
开发博客后台那边项目目录的图有点小,看不清,有电子版的吗
在书店翻了翻,很垃圾
P106 如果无法访问docket镜像源,可以用阿里云的镜像,
sudo add-apt-repository “deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu/ xenial stable”