关于 Docker
发展历程2008 年,Solomon Hykes和他的朋友 Kamel Founadi、Sebastien Pahl 共同创立了一家名为DotCloud的公司,目标是利用一种叫做容器的技术来创建一种任何人都可以使用的编程工具。
2010 年,DotCloud 获得了创业孵化器 Y Combinator 的支持,并开始吸引到一些真正的投资,在接下来的 3 年中,DotCloud内部孵化了一款使用 Go 语言编写,C/S 架构,名为 Docker 的产品。
2013 年 3 月,创始人Solomon Hykes在 PyCon 大会上首次公开介绍了 Docker 这一产品。其创新式镜像格式以及容器运行时迅速成为社区、客户和更广泛行业的实际标准和基石。可移植的形式和易于使用的工具给应用程序和基础设施之间创造了独立性。容器技术逐渐大众化并成为主流。
docker 最初是在Ubuntu 12.04上开发实现的,而Red Hat则要从6.5开始才对其进行支持。
2013 年 3 月 20 日,DotCloud 发布了 Docker 的首个版本,并将 Docker 源码进行了 开源。
20 ...
容器技术
什么是容器对于容器这个词,大部分人第一时间想到的肯定是生活中常见瓶瓶罐罐,用来装水的东西。它给人的第一感觉就是能 “装”。
而在IT领域,Container就被直译为容器,但Container本身是集装箱的意思,容器属于中国人的信雅达叫法。
可以想象一下,如果容器技术改为集装箱技术,档次一下就低了。但是为了帮助我们更好的理解容器,集装箱的翻译才能体现它的本质:
规格标准化,层层堆叠,互相隔离,将各类零散的货物分门别类,形成统一的形状,提升运输效率,降低管理成本,保护了货物的完整性。
在早期,IT领域就是通过借鉴这一思想,研发出了hypervisor虚拟化,将不同操作系统的虚拟机通过hypervisor(KVM、XEN 等)来衍生、运行、销毁。
但随着时间推移,用户也发现了hypervisor存在的问题:
每次部署发布都得搞一个完整操作系统和附带的依赖环境,而用户其实更关注自己部署的应用,这导致了任务变重和性能低下。
为此,有没有办法实现底层多余的操作系统和环境的复用就成了急需解决的问题,好比下面这个例子:
将一辆兰博基尼(应用),打包放到一个集装箱里(容器),通过货轮轻而易举 ...
如何学习一门技术
作为一个终身学习的实践者,我经常有学习一些新技术的需求。如何学习这些新技术不同人有不同的做法,早前我也写过一篇 如何快速学习一项新技能? 的文章分享我学习的理论框架,但这篇文章我会以我学习WebRTC这个技术为例分享我在学习新技术时用的一些方法。
如何学习某个知识,在我看来,主要矛盾在于解决这三个问题。
要学否在学习一门新技术前需要解决的第一个问题是要不要投资时间去学这门技术。就像买书最大的成本并不是买书的价格,而是看书的时间。花费大量的时间去看一本没有价值的书,无异于浪费生命。正是方向搞错了,越努力越尴尬。
怎么确定一门技术的价值,可以从以下两个方面来考虑:
从知识体系出发:某门技术经常不是孤立存在的,而是一个积木般搭建的大厦的一部分。要学习顶部的技术,就需要掌握一定的底部技术。如果一个技术很基础很底层,被很多高层的技术所依赖,那学习这门技术就很有价值。
从应用前景出发:如果一门技术很有市场“钱景”,或者有潜在的市场需求,那学习这门技术就很有价值。毕竟我们学习目的很大的一部分在于赚钱解决自己的生活问题。
不过这里的难点在于从我们已知的信息来分析,很难判断某门技术的市场前景。如果分 ...
如何快速学习一项新技能?
马上就要高考了,还记得当初读高中时书店里有不少《21天学会XXX》的书,到了大学后书店里还是有不少这类型的书。今天在Quora上有一个热门问题:“如何在一晚上学会写代码?”有个高票回答大意是带着笔记本去冬天刚来临的北极,这样就有一晚上约六个月时长的时间来学习写代码了。从调侃式的回答中表明了某些领域如编程就算是一个天才也需要一定的时间来学习实践。
这两件事从侧面说明大众对快速学习新技能的渴望,但是很多快速学习的书或文章一般看了都没什么效果,大多都是一堆知识的罗列,没有一套系统化的理念和执行的框架根本不可行。
社会在全球化背景下的迅速发展,互联网对各个行业的不断渗透,传统经验积累式门槛的逐渐消除,多领域降维打击般的隐形竞争,都在迫使我们需要短期内快速学习很多领域知识。
在万众创新、全民创业的号召下,我也曾经历过一段创业历程。在创业的过程中经常面临着许多变化,经常需要我快速学习、快速决策、快速改变。这段经历迫使我建立了自己的一套快速学习框架,它让我在多个需要学习的领域从容应对,我给它起了个抽象的名字:元学习。
元学习流程
以下工具都可以在你自认为合适的情况下替换,不接受diss
制定目 ...
Nginx的跨域Content Security Policy通行设置
场景描述A 站点 HTTPS,A 站点做为中心站,引用 B/C/D/E/F……站点的资源进行供给,确定的只有 A 站点是 HTTPS,其它站点可能是 HTTP 也可能是 HTTPS,文件类型不限定,包括但不限于:CSS,JS,IMAGE,MP4,MP3,RAR,ZIP,M3U8,FLV……。
如果你使用的是默认配置,那么它会提示以下错误:
1Access to XMLHttpRequest at 'http://site.com/index.m3u8' from origin 'http://site' has been blocked by CORS policy: The response is invalid.
知道通常情况下,HTTPS 引用 HTTP 的资源就会出现跨域错误,但今天我们的要求是允许它跨域,并且尽量保证它是基本安全的。
在上周我测试过很多方案,最终使用的是:
1add_header Content-Security-Policy "upgrade-insecure-req ...
版本管理操作规范及gitflow使用
版本/分支管理规范,主要包括 commit 规范,版本号管理规范,mversion 的使用方法,commitizen 的使用方法,git 常用命令收集,gitflow 使用说明
有模板的项目,要以统一的模板创建项目1git clone git@git.com:your-project/your-project.git
git commit 规范git commit 提交样式标准
1git commit -m "type(scope): 描述(#issue)"
git commit -m “type(类型): 描述(#issue)”
<类型>用于说明 commit 的类别,只允许使用下面 7 个标识。
feat:新功能(feature)
fix:修补 bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改 bug 的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
<内容>对本次 commit 的详细描述, ...
在没有父母的老屋,我只是一个过客
今天,我想给大家分享一篇,让我感受特别深情的散文:
在没有父母的老屋,我只是一个过客
作者 孙道荣
老家亲戚的孩子结婚,邀请我回去喝喜酒,我欣然应允。
到了故乡,从车站走出来,我却是有点儿恍惚了。喜宴是明天,我不知道是直奔亲属家好,还是该首先找个酒店住下,明天再赶过去。
这是母亲去世之后我第一次返乡。父亲早年就已经过世了,三年前,母亲也走了。
办完母亲的丧事,我在县城的妹妹家小住了几日。离别的时候,妹妹对我说:“哥,你以后回来就上我家来住吧。”当时我点了一点头。但是等我再次回来,站在熟悉却又陌生的车站门口之后,我忽然发现,不知道该往哪去了。
以前当然不是这样的。
父母在的时候,每次回来,不管多晚,我都不担心。我会搭个车,直奔县城二十里外的家,那个我从小长大的乡村。
有些时候,我会提前告诉父母我要回来;有些时候,也会突然就出现在了家门口,让父母又惊又喜,嗔怪我搞突然袭击。有些时候并不着急回家,而是先到县城的妹妹家落个脚,然后,再和妹妹全家一大帮子人浩浩荡荡地回乡。
一到村口,就能够看到手搭额头眺望的老母亲,露水已经打湿了她的衣脚,天知道她从几点就已经站在了村口,一定是妹妹提 ...
【Mac】 奇怪的软件+1,用来快速查看上班进度条的「钱条」
一个上班的进度条,开始搬砖吧。
一个可以在macOS顶部显示当日搬砖金额,点击可以显示老板当日欠你多少钱。
安装后需要简单设置下平均每日工资然后就可以显示进度和金额,然后任务栏会显示图标以及动态的计数器。
当前版本还不支持直接修改文案内容,该软件为开源软件,有能力大佬们可以自己下载源代码按需进行定制。
从Mac App Store商店下载安装钱条:钱条 - 上班的进度条
钱条效果图:
钱条设置图:
Vue 项目中生成类似 GitHub 的随机头像
最近个人项目中有头像需求,就想起GitHub的随机头像,通过identicon.js和blueimp-md5两个第三方库实现了,记录一下。
实现效果
封装组件123456789101112131415161718192021222324252627<template> <img class="avatar" :src="url"></template><script> import Identicon from 'identicon.js' import md5 from 'blueimp-md5' export default { props: { num: [Number] }, computed: { url() { return 'data:image/png;base64,' + new Identicon(md5(t ...
exceljs 导出表格
工作中我们可能会遇到制作表格的需求,那么针对nodejs如何制作一个汇总表格呢?今天我们就在此介绍下exceljs的基本使用,应该可以满足我们大部分的需求。
第一部分 下载1npm install exceljs
第二部分 基本的配置123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960var Excel = require("exceljs");var workbook = new Excel.Workbook();// 基本的创建信息workbook.creator = "Me";workbook.lastModifiedBy = "Her";workbook.created = new Date(1985, 8, 30);workbook.modified = new Date();workbook.lastPrinted = new Date(2016 ...