Hey, 这是我的第一篇GitHub博客

If you can quit, then quit. If you cannot quit, your are a writer. - R.A.Salvatore

Posted by Chris on March 10, 2017

为什么写博客

关于“为什么写博客”,这其实是和“博客”同样古老的话题,一百个人能给出一千个理由来。这里楼长仅仅抛砖引玉陈列一些个人教训,希望走过类似弯路的童鞋有所共鸣。同时推荐大家参考和菜头的《开始写作吧》,刘未鹏的《为什么你应该(从现在开始就)写博客》,李笑来的《为什么你一定要学会写作》,以及 Joshua Becker 的《Why you should write blog》。

一、好记性不如烂笔头

时间是我们的朋友,也是我们的敌人。如果能善加利用,可以随着时间积累很多知识,但如果利用不当,不但得不到认知升级,原有的技术储备也很有可能会慢慢流失。

之前在学校零零星星参与过一些项目,但遗憾的是,随着时间的推移,稍早之前做的工作很大一部分都记不清细节了。这导致了一个严重后果:再上类似项目,需要大量的返工和重新查阅资料。每每到此,我都投心疾首,悔当初一时偷懒没把当时的东西整理记录。

举个例子,之前在 MobileInsight 项目中第一次接触 git,主要用于团队成员间代码的同步和版本控制,所以当时对 git 命令还算比较熟悉,但之后相当长一段时间就再没用过。最近毕业在即,打算将以前的项目整理出来放到 GitHub,这才发现很多 git 命令已经记不清了,只得找出《GitHub 入门与实践》翻查命令。

二、Open Source 的魅力

“通过分享,你获得了直接而快速的回报,你最终或许会发现你已将版权和“保留所有权利”抛诸脑后。新的经济学准则是:参与你作品的人越多,回报越高。在分享主义里,如果你愿意你可以保留所有权,但是我乐于分享。” by 毛向辉 《分享主义:一场思维革命》

相信很多人和楼长一样,第一次接触博客是从读某一篇技术帖开始的,而那篇帖子也因为帮自己解决了某个 Bug 或 Error 而挽救了当时即将崩溃的内心。也正是多次这样的经历,强化了我对技术博客的由衷好感以及诸多大牛博主的感激之情。当然,除了大量国内分享的技术博客,还有大量国外分享的代码,这些共同构成了现今的互联网精神 —— 开源!

我们设想一个场景,一个办公室里有四个人,在你们共同构建的知识体系中你占40% 的比重,而其他三位各20%(好吧说人话:你比其他三位更牛一些)。如果一直保持互不交流的态势,你一直会是这个办公室里的佼佼者。However,如果另外三位仁兄互相学到对方的技能了呢?这是,你会惊喜地发现,架构体系发生了变化:60%,60%,60%,40%。也就是:27.3%,27.3%,27.3%,18.1%。

再进一步,如果你跳槽去了另一个办公室,你会更加惊喜地发现,自己连18.1%也算不上了,因为你的同事们已经在他们以前各自的办公室里完成了更高质量的知识迭代。

所以,一定要保持交流协作的意识,而不是抱着零和博弈的心态固步自封。无数前辈告诉我们一个道理:如果你认为自己是个大牛,一定是因为还没见识过真的大牛。

三、总有那么些事让你专注

生活中,总有那么些事让你兴趣昂扬且乐此不疲,比如DOTA。生活大爆炸第七季第六集中有这样一个场景,Penny过来要求点菜,Sheldon沉迷研究,说”Can’t talk, in the zone”。这种对一件事的专注也就是所谓的心流体验。对心流理论感兴趣的同学可以请教度娘或直接了解 Mihaly Csikszentmihalyi 教授。

问题来了,我们的时间都是有限的,不被这件事填充就被那件事占满,如果能把专注的对象放在对自己有提升的事情上,比如写作,难道不是两全其美吗?

此外,坚持写作能成为自己持续学习的动力。为了完成一篇文章,首先需要获取第一手资料,寻找信息来源、将调研的“信息”转化为“情报”并最终为自己所用,这本身就是一个知识积累和自身提升的过程。同时,你慢慢就学会了鉴别知识:哪些是行业关注的焦点,哪些技术在三到五年内还只能是概念股。在这个过程中,你会慢慢重塑自己的思维习惯并开始学会专注。

四、思维的良好训练

无论语言还是文字,都是一个人大脑运转的外在表现,是思维逻辑的真实写照。语言自不必说,你身边一定有那么些人,说话滔滔不绝,却总 get 不到点;另一些人,讲话条理清晰,严谨之余不失幽默,让人听来如沐春风。单就文字而论,这种情况也是完全适用的,而要提升这方面的能力,就要经过后天系统性的训练。

很多时候你以为懂了,可当自己打算写下来的时候,就会发现无从下手了。如果一件事情你不能讲清楚,十有八九你还没有完全理解。将事情写下来,慢慢就可以提高你的逻辑思维能力,分析能力,写会迫使你在你脑中搭建一个有条理的框架。

就像楼长写这篇文章一样,就要将值得写博客的原因一一罗列出并逐段打磨,只有这样内容才会更加清晰,而自己也可以更好的思考。

当你自己完成一篇博客(文章),再回头看别人的博客(文章)时,那种感觉是不一样的。作者为什么这么构思?如果我来写该怎么写?相信我,你距离作者文字背后的思维会更近一步。

五、探索全新的领域

世界不止是你的家,你的公司,你的朋友圈,你应该去发现一个更大更远的世界。通过写博客,你会知道世界上还有很多人像你一样在写博客,这些人和知识正在世界的某个角落等着你。

在写这篇文章的过程中,我才知道“多说”将在6月1日关闭;也才知道阿里有个叫鬼栈的前端开发工程师,后来去了饿了么;我才要将阳志平的博客重读一遍。写的过程会让你有很多新的发现,这些新的发现都值得你去再写下来,总结分享出去。

六、赠人玫瑰,手有余香

隔一段时间,再回头看自己写的博客,你会发现自己正在通过这样的方式在不断的成长,这种成长在自己眼里是一种财富,在别人眼里是一张地图,你得到了收获,不断修正自己的错误,别人得到指引,避免了弯路。

如何使用GitHub搭建博客

闲话少说,这里我将适用 GitHub 搭建博客的方法记录如下。

一、学习使用GitHub

首先进入GitHub并申请账号,Google输入github,点击第一条进入,如下图。

想了解GitHub的童鞋可参见知乎:https://www.zhihu.com/question/19968479/

进入GitHub主页后请首先注册账号。并创建一个 Repositories,命名为”username.github.io”。注意,这里,username 是你刚才注册的 GitHub 账号名,我的账号名是 liclong,因此这里填: “liclong.github.io”。

二、建立本地与GitHub的连接

1. 本地电脑安装 git

接下来我们在本地环境中实际安装 git,并进行各种设置。如果使用 Mac 可以忽略安装过程,因为系统已默认集成了这一功能,使用 Ubuntu 和 Windows 的童鞋可以参考:《Getting Started - Installing Git》

下面我们对本地计算机里安装的 git 进行设置,首先设置的是使用 Git 时的姓名和邮箱地址。

$ git config --global user.name "firstname lastname"
$ git config --global user.email "youemail@gmail.com"

设置完毕后可通过 ~/.gitconfig 文件进行更改。这里设置的姓名和邮箱地址会用在 Git 的提交日志。由于在 GitHub 上公开仓库后,这里的姓名和邮箱地址也会被一并公开,所以注意不要使用不便公开的隐私信息。

此外,在 GitHub 上公开博客或源码后,前来参考的程序员可能来自世界任何地方,所以不要使用汉字,很多外国友人的中文水平远不如我们的英文水平。当然,如果不想使用真名,完全可以使用网络上的昵称。

2. 本地创建密钥

GitHub上连接已有仓库时的认证,是通过使用 SSH 的公开密钥认证方式进行的。现在我们来创建公开密钥认证所需的 SSH Key,并将其添加至GitHub。如果已经创建过,可以使用现有的密钥进行设置。

运行下面的命令创建 SSH Key。

$ ssh-keygen -t rsa -C "youremail@gmail.com"

这里,“youremail@gmail.com” 部分改成你在创建GitHub账号时用的邮箱地址。最终,系统会在 Home 目录的一个隐藏文件夹 .ssh 下生成公钥 id_rsa.pub 和私钥 id_rsa。

3. 添加公钥到 GitHub

在GitHub上添加公钥,今后就可以用私钥进行认证了。

点击右上角的账户设定按钮(Account Settings),选择 SSH and GPG Keys 菜单,就会出现如下界面。点击 Add SSH Key,会出现 Title 和 Key 两个输入框。在 Title 中输入适当的密钥名称,Key 部分粘贴 id_rsa.pub 文件里的内容。

如此一来,本地电脑和远端的 GitHub 服务器就建立了可信的连接。以后可以通过 git 命令快捷的从 GitHub 克隆项目,并将修改后的项目更新到 GitHub。

三、先走一遍流程

要了解一个项目,最快捷的方法就是先从头到尾过一遍。所以,我们首先创建一个最简单的网页,介绍从创建 GitHub 到访问网页到整个流程,以帮助大家理解。打开终端输入如下命令:

$ git clone https://github.com/liclong/liclong.github.io

这样可以将刚才在 GitHub 上创建的 Repositories 克隆到本地,你会发现在当前路径下多了一个文件夹:“liclong.github.io”。然后后续操作可以在本地进行,只需将最终版本再上传回 GitHub 即可。我们在克隆到本地的 liclong.github.io 目录下新建一个文件:index.html,这是网站的入口。文件编辑如下:

<!DOCTYPE html>

<html>

<head>
<title>liclong.github.io</title>
</head>

<body>
<p><a href="http://www.google.com">Link to another page</a>.</p>
</body>

</html>

随后,将修改的文件同步回 GitHub。现在我们看一下如何将修改的东西同步回去。

$ git status                //查看仓库中文件修改状况
$ git add index.html        //将文件加入暂存区
$ git commit -m "the content of update"
$ git push                  //现在,GitHub 上的仓库被更新了

打开你的浏览器,输入你刚建的 Repository 的文件名,例如我的是 liclong.github.io。如下图所示,You get it!

说白了,GitHub 提供了这样一种页面解析功能,你既可以拿它制作博客,也可以拿它做个人主页,功能就在那里,用途任你选择。详情可参考 GitHub Pages 官方主页。

四、使用Jekyll进行本地调试

有一个问题,每次微调后都要同步回 GitHub 查看页面修改结果? NO!

理想的方式应该是,本地进行调试和预览,只把最终的版本上传至 GitHub 供大家浏览。幸运的是,Jekyll 提供这样的功能。

打开 terminal, 安装 Ruby (Mac上已经预装了Ruby)。可以输入 $ ruby –version 去验证是否安装。

接下来,输入sudo gem install github-pages,安装 Jekyll (gem update github-pages命令可以用来更新 Jekyll,以免 Github 服务器更新导致网站本地和线上表现不同)

之后你需要在 master 下新建一个 file,命名为 Gemfile,输入

source 'https://rubygems.org'
gem 'github-pages'

运行 terminal,使用命令行移至 repository 根目录下(也就是刚才从 GitHub 上克隆下来的 liclong.github.io 目录)。之后运行

$ bundle exec jekyll serve

注意,如果没有前面创建的 Gemfile 文件,这个命令是执行不通过的。

下面,就可以使用 Jekyll 啦,本地测试在浏览器输入 http://localhost:4000 即可。

五、学会使用Jekyll个性化博客

从零写一个漂亮的博客时间成本太高。更何况,每写一篇博客还要重复大量以往的工作,既耗时又耗力。为美化博客且最大限度的实现代码复用,我们充分发挥拿来主义精神,它山之石可以攻玉。

浏览器中登录 GitHub 网站,进入自己的 liclong.github.io 仓库(再次强调,liclong是我的用户名,大家在实际操作是将它改成自己的用户名)。

随后,进入 liclong.github.io 仓库,并点击菜单栏中的 Settings。

在 theme 中,选择你喜欢的主题。这里我们以 slate 主题为例,如下图所示。

可以查看它在 GitHub 中的代码,并 git clone 到本地。现在将里面的代码全部复制到本地的 liclong.git.io 目录,文件名重复的直接 replace。然后,进入 liclong.github.io 目录,并执行:

$ git status        //查看哪些文件做过修改
$ git add .         //多个文件修改时,可以直接用.的方式实现全选
$ git commit -m "this is an update"
$ git push          //推送到 GitHub

打开浏览器,登录 http://liclong.github.io,你会看到 slate 主题的网页里。修改 index.html 文件即可进行修改。具体细节可实际摸索。

注意,目前的 GitHub 进行了改版,以前各教程中提到的 theme 中的 “automatic page generator” 已经不在,大家不必纠结。

结语

以上。 楼长,04月于苏州。



本文总阅读量