GitHub仓库下载过慢怎么办

今天同事找我,让我帮忙下载一个GitHub仓库。

他说他没有翻墙,下载不了。

梯子对我来说是日常操作,但是我开了梯子之后,下载速度依旧非常感人。

后面研究了一下,发现了一个有趣的方法。

Gitee码云,一个中国的GitHub,在新建仓库的时候,支持从GitHub里面导入。

于是我把同事发给我的仓库导入到Gitee中,下载速度涨了好多。之后再把仓库设置为公开仓库,链接分享给同事。效率杠杠的。

什么是执行上下文

网上关于执行上下文的文章有很多,关于什么是执行上下文,很多文章说得很清晰。
我说一下自己的理解。
执行上下文包含三个东西:

  1. VO
  2. this
  3. [[scope]]

为什么包含这三个东西呢?首先我们要明白,什么叫做执行上下文。

执行上下文,又叫做执行环境。那么,什么是环境呢?
维基百科是这样解释的:

环境是指相对并相关某项中心事物的周围事物

在我们的代码中,比如每一个函数,就是一段可以执行的代码。

这段可执行的代码,就是这个所谓的中心事物。同一个函数,在不同的地方执行,输出的结果是不一样的。这个导致输出结果不同的周围事物,就是所谓的环境。

假如我们现在有如下一段代码:

1
2
3
4
5
function doSomeThing(a){
console.log(a);
console.log(global);
console.log(this);
}

那么,当我们执行这一段代码的时候,会首先输出a的值,接着输出全局对象,最后输出this。

但是,这一段代码在不同的地方执行,输出的结果是不一样的。
比如,当我们的入参a不同的时候,那么输出的a就会是不同的。因此,变量就是一个环境。而所有的变量,我们统称其为变量对象,也就是所谓的VO(variable object)。
另外,在不同的地方,this的指向也是不同的。这是显而易见的,也是我们前端需要重点掌握的一个知识点。
还有一个[[scope]],这就是作用域链,链接另一个执行环境的指针。

有了这三个东西,每一个函数就可以明确的知道,自己可以访问到哪些变量,应该在什么样的环境下执行。
这也就是为什么我们把它叫做执行环境、执行上下文。

Hexo使用教程

Hexo是一个基于node的静态博客搭建工具。对于常年使用node进行开发的前端工程师来说十分容易上手。

使用Hexo在GitHub Page上搭建个人博客有几个好处:

  1. 免费,不用自己去购买服务器;
  2. GitHub的服务器稳定;
  3. GitHub Page使用简单;
  4. 自带代码管理功能。

以下介绍一下搭建的步骤。网上其它搭建的教程其实都说得非常详细,但是其实这些过于详细的教程有时候让我们看了非常头大。想要让Hexo个人博客跑起来,其实简单来说只需要两步:
一、创建GitHub Page
二、将写好的Hexo博客上传

详细的步骤如下:

一、创建GitHub Page

  1. 注册GitHub账号这种基础操作就不说了,然后只需要在个人仓库中创建一个和自己账号名称相同的仓库,便完成了GitHub Page的创建。你可以通过https://<账户名>.github.io进行访问。这个仓库就好像你用express搭建了一个服务器,用express.static把某个文件夹暴露出去一样。你放在该仓库下的所有文件,都可以通过文件名进行访问。因此之后只要将文件部署到该仓库下即可。注意访问的时候需要使用https协议。否则访问不到。(实际上这一点是可以在仓库的setting里面设置的,但我看了一下,我的仓库默认是强制使用https协议,而且无法更改。别人的仓库是不是这样我就不知道了。)

二、使用Hexo

  1. 接下来就是使用Hexo。先是用npm全局安装hexo的命令行工具。
    1
    npm i hexo-cli -g

我们可以使用以下命令查看版本号,确定安装是否成功。

1
hexo version
  1. 接着使用Hexo初始化一个项目。

    1
    hexo init <项目名称>
  2. 进入文件夹,使用npm安装依赖。

    1
    2
    cd <项目名称>
    npm i

此时,博客已经创建完成,我们可以使用hexo s启动本地服务器查看效果,会在本地的4000端口运行起来。当然,不执行这个命令也是没有问题的。hexo s实际上就是hexo server的缩写。

  1. 创建了博客,我们怎么开始写文章呢?很简单,也是一条命令的事情:
    1
    hexo new "<文章标题>"

执行了这个命令之后,在我们项目中的/source/_posts下便多出来了一个md文件。实际上,这里就是我们所有文章的存储位置。删除文章实际上也只是把该目录下的所有md文件删除即可。而所谓的new命令,实际上就是自动帮你在md文件中写入了创建的日期等格式。

  1. 在写完我们的文章之后,我们需要把我们写好的md文档转换成浏览器能直接展现的html文档。所以我们使用以下这个命令:
    1
    hexo g

这个命令实际上也是缩写,是

1
hexo generate

的缩写。字面意思就是生成。
实际上,这个命令还可以带参数,在官网有详细的文档,如果我们已经设置好了ssh,那么戴上-d参数,就可以实现在生成之后自动上传。也就是这样子写:

1
hexo g -d

以上就是最简单的能让你把整个博客跑起来的流程。

当然还有一个问题就是如何完成本地和GitHub之间的连接部署。

这其实是另外一个问题了。留待我在另外一篇文章中再写。毕竟身为开发我们要懂得降低耦合嘛~(笑)

结语:

虽然现在已经是移动互联网时代,甚至都快要进入物联网时代了,但我认为博客在今日依然有非常重要的意义,特别是在程序员群体当中。博客是非常好的学习的地方,同时也是个人展示自我的地方。像是阮一峰、张鑫旭、汤姆大叔,这些大牛们都有自己的博客,人气也非常高。多写博客,也有助于个人对自己的知识进行梳理,可以当作是一份可以给别人看的笔记,同时也能作为自己面试时一份漂亮的简历。身为程序员,不能只会编码,写文档的能力也需要锻炼,在写博客的过程中,我们无形中也能锻炼到自己的文笔。何乐而不为呢?
这样一篇文章实际上也只是起了个头,Hexo已经被众多网友们玩出了花,我现在还没有认真研究过。但实际上Hexo可以加上评论、网站统计、字数统计、主题更换等等功能,可玩性很高。而且Hexo由于是在本地写完之后再部署到线上,因此对数据比较敏感的用户会对此觉得更加安心一些,毕竟源码在自己手里,就相当于多了一份备份。不怕自己辛辛苦苦写完的东西就不见了。而且GitHub上自己的仓库也拥有完全的控制权。哪一天不高兴了,把整个仓库删除了,就什么痕迹都没有了。而且也可以利用git的branch功能把自己的源码也备份上去,从而实现多端写作,不必局限在自己的电脑上。非常方便。