0%

为什么要搭建自己的博客

如果你需要有一个创作环境——无论是作为个人文集还是产品展示主页,而你又:

  1. 忍受不了博客服务网站纷乱无序、不讲道理的广告
  2. 忍受不了博客服务网站提供的粗糙排版格式
  3. 忍受不了博客服务网站长而难记的域名,标识度、个性度不够
  4. 不喜欢博客服务网站的社交元素,就是类似「关注」的功能
  5. 是个极简主义者

那么你有两个选择,一是微信公众号,二是参考本文为自己搭建个人博客。

GitHub Pages 设置

首先要在 GitHub 里注册账号,用户名+Email+密码三段式注册,简单明快。

注册后登陆你的账号,点击右上角的➕,选择 New Repository,并在 Repository Name 一栏里填入「你的用户名.github.io」,如果你不知道用户名是什么,就是 Owner 字段下面的那段文字。见上图,例如我的用户名是 patricorgi,Repository Name 就是 patricorgi.github.io 。之后点击页面下方的 Create Repository 绿色按钮,这样 GitHub Pages 的准备就做完了。每个 GitHub 账号能且仅能创建一个这样的主页。

安装 Hexo

什么是 Hexo?

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

什么是 Markdown 语言?

Markdown 语言易读易写,妈妈再也不用纠结我的文章排版问题了,只需要花两三分种学习一下基本语法,你就可以写出排版精致的文章。Markdown 语法学习,请看这篇文章中「Markdown 语法的简要规则」部分。

在安装 Hexo 之前,还需要先确保电脑中已安装 Node.jsGit,然后只要在终端中执行一条命令即可完成 Hexo 的安装

npm install -g hexo-cli

有些 macOS 用户可能会在这一步遇到问题,那么请安装 Xcode 8.1 并进入 Xcode 8.1 -> Preference -> Location -> 选择 Command Line Tools,问题应该能解决。

至此 Hexo 已经安装在你的电脑上。

建站

在终端里cd到你用来建站的路径下,建好之后一般就不移动了,所以要选个风水宝地哦。然后执行下面的命令:

hexo init blogname
cd blogname
npm install

其中blogname是用来存放你个人站点内容的文件夹名称,包括 Hexo 博客的框架文件、主题文件、博文资源等等——我们就称之为「站点文件夹」或「站点根目录」把。

将 Hexo 站点与 GitHub Pages 关联

vim打开站点根目录下的「站点配置文件」_config.yml,找到deploytype字段。删除这两行,然后加入以下四行:

deploy:
type: git #注意以下三行前面都有一个 Tab 的缩进
repo: https://github.com/patricorgi/patricorgi.github.io.git
branch: master

这里repo: 后的网址对应于你的 GitHub Pages 提交代码的 git 地址,一般来说是https://github.com/你的用户名/你的用户名.github.io.git,这里的「你的用户名」与 GitHub Pages 设置里的「你的用户名」一样。比如我的用户名是patricorgi。

保存「站点配置文件」,然后在站点文件夹下使用hexo s命令测试一下网站是否配置成功,如果成功应该会提示Hexo is running at http://localhost:4000/. Press Ctrl+C to stop,这时候在浏览器中打开localhost:4000站点,如果能够正常显示页面(见下图),则表示建站成功。

你可以在「站点配置文件」中靠前的部分看到这几行

title: ## 冒号后面输入你的博客名称
subtitle: ## 副标题
description: ## 对博客的一段文字描述
author: ## 作者,也就是你的名字
language: zh-Hans ## 这一行如果不是这样就改成这样,这样一来就是中文界面
timezone: #在这一行不用管 

发布网页

因为 Hexo 是静态博客,所以我们必须进行「发布」操作才能更新博客。何为静态?按笔者的理解就是,你无法直接在网站中更改内容,你的每一次修改,都需要在你的电脑里「发布」后,才能更新到博客中去,哪怕只是修改一个句号也必须重新「发布」。

发布网页的命令只有以下三行:

hexo clean ## 清理缓存,这句不执行也可
hexo g ## 或 hexo generate 生成网页
hexo d ## 或 hexo deploy 发布网页

更改 NexT 主题

上面你看到的站点页面是 Hexo 自带的 Landscape 主题,我觉得好丑啊。于是我将其更改为 NexT 主题,你可以在NexT 官网查看该主题的安装流程。

配置 NexT 主题之后,仍要对站点进行生成和发布操作才能更新你的博客。再强调一次,任何修改要更新到网页上去都必须重新「发布」。

创建新博文

建站之后有默认的一篇博文「Hello World」,里面详述了如何创建新博文。除了利用这篇博文中介绍的hexo new post NAME的命令之外,你还可以通过在「站点根目录」的source/_posts文件夹中创建 Markdown 文件来创建新博文,不过要在文件开头加上这么几行:

---
title: 利用 GitHub+Hexo+NexT 搭建你的个人博客
date: 2016-11-2 15:3824
tags: 
- blog
- markdown
---

以设置博文的标题、日期、标签,否则你的博文只会显示为「未命名」。

结语

至此,你已经拥有自己的网站啦。如果你觉得域名中存在 github.io 字段,还不够个性。你还可以尝试绑定自己购买的域名,然后在 「站点文件夹」下的 public 中新建「CNAME」文件,并添加你的域名到第一行即可。

![](http://ww3.sinaimg.cn/large/006tNc79jw1f9brc50sfaj304w04wdfu.jpg)

前言

这几天开始自学 Python 语言,采取的是 vim + bpython 的方式。至于为什么,原因有两点:

  1. macOS 自带的 IDLE 不方便进行 .py 文件读写+执行的并行操作,而这样的操作在学习 Python 过程中是十分频繁的。
  2. 将 Xcode 配置为 Python 的 IDE 也是个常见的方案,但是在交互上有致命的缺陷,说白了就是只能输出无法输入。比如说我用 Python 编了一个小程序,第一个部分就是需要用户输入一个字符串,Xcode 表示一脸懵逼。

综上,小巧精致的 Vim + Terminal 无疑是在 macOS 甚至其他 Linux 系统上进行 Python 学习的最优方案。

然后直接抛出我的学习资料。其实就是这么一个帖子。按照里面的步骤一步步操作,可以完成几乎所有的配置,让你有个舒适 Python 学习环境。只在下文分享两个我在配置过程中遇到的问题和解决方案,如果你也遇到了同样的问题,可作为参考。

利用 Vundle 安装 YouCompleteMe

我卡在安装可以自动补全 Python 语法的 Vim 插件 YouCompleteMe(以下简称YCM)。我利用 Vundle 安装 YCM 的时候 Processing 了好久。

其实这里不要急躁,虽说只是个插件,但 YCM 却有很大的体积,所以要下载很久。这里只有耐心等待,或者换一个好一点的网络环境。

什么?你不知道 Vundle 是啥?那么请看这里

YCM 安装终于结束,但其实只是将 YCM 下载到了.vim/bundle/的目录下了而已,我们还需要进行编译。编译过程也很简单,只需两条命令:

cd ~/.vim/bundle/YouCompleteMe #进入YCM的目录
./install.sh #执行安装脚本,这里使用 ./install.py 也行

如果你还经常接触到 C 语言环境,那么你可能还需要 clang 的补全,那么上面的第二条语句应该改成

./install.sh --clang-completer

然而这里我报了错,提示说

You have not specified which libclang to use. You have several options:\n
1. Set PATH_TO_LLVM_ROOT to a path to the root of a LLVM+Clang binary 
distribution. You can download such a binary distro from llvm.org. This 
is the recommended approach.\n
2. Set USE_SYSTEM_LIBCLANG to ON; this makes YCM search for the system 
version of libclang.\n
3. Set EXTERNAL_LIBCLANG_PATH to a path to whatever 
libclang.[so|dylib|dll] you wish to use.\n
You HAVE to pick one option. See the docs for more information.

对,还需要 C 语言库,需要到到clang官网下载,得到的是 .tar.xz 格式的双层压缩文件 clang+llvm-3.9.0-x86_64-apple-darwin.tar.xz(目前最新版本是 3.9.0,你下载的时候就不一定了),.xz 无法直接解压,需要到终端去利用unxz命令解压,然而unxz命令我的电脑里神TM的没有。我尝试了一下 brew install xz,没想到 brew 安装器的源里竟然有 xz,省了我不少事情(相比于macOS 下利用brew管理器安装套件,其他 linux 系统下应该是 apt-get 吧)。之后利用unxz成功解压,后缀名变成 tar,这时候直接用 macOS 自带的「归档实用工具」解压即可得到文件夹 clang+llvm-3.9.0-x86_64-apple-darwin。

这样我们可以重新回到 YCM 的编译上了。

再次从终端进入 YCM 目录
cd ~/.vim/bundle/YouCompleteMe 
然后在执行安装命令前加上 clang 库的路径,命令为
PATH_TO_LLVM_ROOT=~/Downloads/clang+llvm-3.9.0-x86_64-apple-darwin ./install.sh --clang-completer
最后提示编译成功
注意:这里我将源包文件夹放到了~/Downloads 目录下

bpython

其实 macOS 自带的 IDLE 可以进行 python 的学习,并且有语法高亮的功能,但是我没搞清楚它能否像终端一样方便地读写文件,于是我就放弃了。在终端中执行python命令也可以进入 python shell,跟 IDLE 一毛一样,但是就是没有了语法高亮,真是蓝瘦。所以这里要介绍 bpython,它可以说是终端上的「IDEL shell」,哈哈哈,不仅支持语法高亮还支持自动补全(这里打住一下,之前 YCM 说的也是自动补全,但人家是 Vim 编辑器上的,与终端内执行命令的自动补全是两码事)。与 python 命令不同的是,它前头多了个 B(废话

贴两张图看效果

  • 普通python shell:
  • 装 Bpython shell:

结语

至此,我们完成了 Vim + Terminal 的 Python 学习环境设置

![](http://ww3.sinaimg.cn/large/006tNc79jw1f9brc50sfaj304w04wdfu.jpg)

菜码

  • 黄瓜:切丝
  • 大葱:切丝
  • 黄豆:焯水
  • 胡萝卜:切丝+焯水
  • 玻璃菜:焯水

佐料

  • 大蒜:捣成蒜泥
  • 香菇和五花肉:切丁

步骤

  1. 按上面的说明准备拌菜,该切丝切丝,该焯水焯水。
  2. 煮酱(3人份):热锅冷油,4勺食用油,下蒜蓉,肉丁,香菇丁,炒到半熟后下酱,市面上大约三分之二盒的豆瓣酱。然后按照酱比水为1比0.7的比例加热水,再加一勺盐。这时候酱应该很稀,然后就一直煮,煮到粘稠即可。
  3. 煮凉面:烧一锅水,加半勺盐和几滴食用油在锅里,然后下面条,煮到一半再加一勺白醋,这样煮的面不会糊在一起,口感也很有弹性。煮好捞出来的面用凉开水冲一下然后沥干水分装到碗里即可。

ios10

北京时间9月8日苹果发布会后,想必许多人对 iPhone 7 已经有了深入的了解。不知从什么时候起,人们已经开始习惯于对苹果新品的聚焦,习惯于对新品的追捧和吐槽。可是对于伴随新 iPhone 而来的 iOS 10 系统又有多少人习惯了呢?本文将以 iOS 10 为背景,介绍能够提高手机使用效能的技巧。这些技巧都是笔者作为 iOS 爱好者,希望其他 iOS 使用者能够熟知和掌握的功能,希望大家可以参考一下。

如果单说移动端的效率,对于触屏时代,我们的目标自然是「少点那么几下」!

全局 Spotlight 搜索

系统级别的全局搜索,无论是对于 Win8 以上视窗系统的用户,还是 Mac 系统用户都不陌生(视窗系统下的快捷键是Win + Q,Mac系统下是 ⌃ + space)。不论何时何地,都能够呼出搜索框,直接进行硬盘文件、日历项、通讯录、天气、百度(Google)网页搜索,极大地提高了工作效率。

winq

spotlightmac

现在 iOS 10 系统的 Spotlight 搜索也能做到这一点了。

在以往版本的 iOS 中,Spotlight 只能在桌面使用,每次搜索都需要退回到桌面,这意味着使用成本的增加。在 iOS 10,Spotlight 终于进化为完全体。它被整合到了通知中心中,利用通知中心在任何界面都可以下拉的特点实现了 Spotlight 的全局使用。

举个日常例子,假如你正在刷微博,看到博主推荐了一款好看的唇膏,想马上在淘宝中搜一下。以往的做法是:微博手机客户端→桌面→找到淘宝图标→手机淘宝→搜索唇膏。而利用 iOS 10 系统的 Spotlight 搜索,你可以直接在微博界面下拉通知中心,输入「tao」,点击出现的淘宝app图标,进入淘宝。节省下了退回到桌面再用肉眼查找淘宝图标这一过程。当然如果你是 iPhone 6s 以上机型,还能使用 3D Touch 对 Spotlight 的搜索结果进行操作。更为便捷的是,如果你在 Spotlight 设置中打开了 Siri 建议,系统会挑选出你最近使用较频繁的 App 显示在 Spotlight 下方的 Siri 建议卡片里(一次显示8个应用图标),这样对于常用 App 就不用每次都输入啦。

spotlight1

Spotlight 搜索还支持通讯录、日历项、地图、App Store、网页搜索、App 内部搜索等,几乎涵盖了 iOS 系统内部的所有内容。当然,App 内部的搜索功能需要 App 本身支持才可以。比如,笔者就发现京东已经支持在 Spotlight 里直接搜索商品了;一些文件管理类应用也可以通过 Spotlight 搜索其内部文件,例如可以快速打开老师的课堂讲义 PDF 或是老板的报告文件 PPT 什么的。

spotlight2

此外,活用 Spotlight 另一个间接的好处是,可以减少桌面上的图标数量了,绝大多数 App 都可以收进文件夹里,需要时利用 Spotlight 搜索调用即可,桌面变得简洁和美观,可以腾出更多的空间欣赏壁纸啦。因为 iOS 不能像 Android 那样定制桌面图标摆放,这也可算是一个折中的办法。

desktop

URL Scheme + 效率应用

用原生 iOS 的人分两种,懂URL Scheme的和不懂的;前者是「魔法师」,后者是「麻瓜」。

少数派看到过这么一句话,虽有着自命不凡的意味,却也有几分贴切。URL Scheme 无法否认是实现 iOS 系统效率化使用必不可少的「魔咒」。

URL(Uniform Resoure Locator,即统一资源定位器)简单来说是符合某种命名规则的入口,是形如「xxx://」 的东西,比如我们经常看到的网址前缀「http://」可以认为是互联网地址的「入口」。按这种逻辑我们类比一下,对于微信(weixin)来说,「weixin://」就是微信的「入口」咯?答案是肯定的。不信的话,你可以打开Safari在地址栏里输入「weixin://」看是否会直接跳转到微信。

URL Scheme 可用于补偿 iOS 沙盒机制带来的不便。出于安全考虑,iOS 限制了 App 之间的互动,这虽然保证了用户个人信息的安全,却降低了系统的灵活性和可定制性。人们常说的「越狱」其实就是打破这种沙盒机制的破解手段,但「越狱」破坏了 iOS 系统的安全性,在当今这个电子商务盛行的年代,破坏这种安全性是笔者很不提倡的。所以说 URL Scheme 成为了折中的方案,它在沙盒机制的框架下一定程度上实现了 App 之间的互动,其实现方法就好比向 App 开发者们提供「weixin://」这样的「入口」。

利用这种「入口」,我们可以做很多事情。如果在 Safari 地址栏中输入「weixin://scanqrcode」我们可以直接打开微信扫一扫。这句 URL Scheme 后面的「scanqrcode」就是微信内的一个功能,是由微信 App 开发人员定义的功能字段,我们通过「weixin://」入口调用了这一功能。

另一个例子是淘宝搜索,在 Safari 地址栏输入:”taobao://s.taobao.com/?q=”+”宝贝名称”,可以直接显示淘宝应用(不是网页版淘宝)的搜索结果哦。看到这里可能很多读者会觉得:每次都要输入这么一长串字符,反而降低效率了,不是吗?所以到这里我们就必须借助一些效率类 App 的帮忙了。例如「Launch Center Pro」和「Workflow」,这两个 App 可谓是目前 iOS 系统下的效率神器,但由于篇幅问题不对这些应用具体介绍,读者可自行搜索一下这两个 App,相信你会打开新世界的大门。这里推荐一下另一个效率类 App,是由国人@钟颖 开发的「Pin」,它能很方便地将这些长 URL Scheme 封装成一个简单的按钮,并配合剪贴板进行 URL Scheme 输入。利用按键替代输入,可以很方便地使用 URL Scheme 来提高效率。

pin1

pin2

你可以在 App Store 里下载Pin,完全免费无内购。

文件管理

iOS 文件管理的不透明是很多人诟病的地方。但是,笔者这里要指出,iOS 奉行的是 App 主导的理念。系统只为 App 开发提供基础功能接口,包括:麦克风、摄像头、定位服务等等。系统本身不做多余的事情,而是把想象力都留给 App 开发者们了。
文件管理也属于 iOS 提供给 App 开发的接口之一。所以文件管理是需要特定 App 来实现的。笔者在此推荐 Documents,你可以通过它来存储任意格式的文件(无论是可识别的格式还是不可识别的)。可以说是 iOS 上最强大的资源管理器。

Documents 本身支持下表中列出的所有格式文件,而不支持的格式,则可以通过 iOS 的分享卡片「在其他应用中打开」。

docu1

无论是通过下载地址取得的文件,还是通过 QQ、微信接收的文件,都可以利用 iOS 分享卡片导入 Documents 的存储空间中。相反,你也可以从 Documents 里共享文件到其他 App 中。

docu2

结语

iOS 本身是很有灵性的系统,笔者希望用户们不要害怕接触新功能、新特性,一句「我只需要能打电话发短信聊扣扣上网就行了」而过,不知错过了多少美好。在这里说句题外话,坚守传统固然是好,但也容易陷入因循守旧的漩涡。相信本文的读者大多是充满朝气的年轻人,我们应当在遵循传统的同时,保有好奇心去探究新事物,才能为生活增加生命力,创造新的可能性。这种探索的心态,可以逐渐提高你的生活质量。

 

Atom 是跨越 Windows、Linux、Mac OS 三大桌面平台,由 GitHub 开发的自由及开放源代码的文字和代码编辑器。
 
其最大的亮点在于其可定制性。这种可定制性,按官方的描述为——A hackable editor,无论你是使用何种语言的用户都能将其配置成为自己最顺手的代码编辑器。  

那么,这种可定制性是如何实现的呢?

 
Atom 的功能是模块化的,所有简单的功能都由一个个 Package 组成,如图:
 

当你下载并安装 Atom ,你会发现它已经自带了一些 Package ,这些 Core Packages,包括了自动补全 API、自动保存、书签……
除了这些 Core Packages 之外,用户还可以从官方网页搜索到所需的 Packages,再从终端中执行
apm install NAME_OF_PACKAGE 命令来安装,这里的 apm 就是atom package management 的缩写啦!为了方便 Atom 新手更快入门,笔者在下面罗列了几篇关于 Atom Packages 推荐的帖子:  

以及,我接下来要介绍的——关于如何将 Atom 配置为强大的 LaTeX 编辑器

 
要配置所谓强大的 LaTeX 编辑器,需要这样两个 Package:language-latex 和 atom-latex ,后者是在 Atom 中实现 LaTeX 的编译,没什么好说的,所以以下我们只介绍 language-latex(仅针对 Mac OS X 系统,Windows 用户请参考这个帖子中介绍的方法进行安装,过程大同小异)
 
language-latex 所实现的功能是 LaTeX 命令的自动补全,就像下面这样,是不是很炫酷呢?


 
有一点之前没有提到,那就是我们可能会出现与官网连接故障的问题,至少笔者所使用的网络环境是无法正常载入官网内容的,也无法使用 apm 命令进行 Package 的安装。但是大家不用担心,笔者将利用 language-latex 的安装过程,向大家介绍一种自己所采用的安装方案。
 
apm 的安装其实是通过 node 组件完成的,我们首先需要在终端中安装 node,你可以使用  Homebrew 来安装 node  

安装过程

 
直接在终端中运行下面这行命令即可安装 Homebrew:

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 
Homebrew 安装完成之后,再执行 brew install node 安装 node 组件
 
之后,我们就可以为 Atom 安装 language-latex 了,所有官网上出现的 Package 的源代码均可在 GitHub 中搜到(有可能出现同名的 Package,甚至非 Atom 的 Package,所以一定要注意对应上作者的名字)。

例如我在 GitHub 上搜到的 language-latex ,然后点击”Copy to Clipboard”按钮,复制这条地址,就像这样


 
接下来打开终端,进入 Atom 的 Package 存放路径(通常是 ~/.atom/packages),并下载 git 包:

cd ~/.atom/packages; git clone https://github.com/area/language-latex.git
 
git clone 后面的内容就是刚刚复制地址,之后会下载 Package 到目前所在的路径
然后进入 Package 文件夹,再用 npm 命令安装,npm 就是 node package management 的缩写啦!执行:

cd language-latex; npm install

至此,language-latex 就安装完成了,我们在 Atom 设置里的 Packages 页面中就能看到它。这个 Package 仅会在所有扩展名为 .tex.latex.text 的文件中被启用(至于为什么,答案在后面)

 

通过这种方法,可以任意安装你所需要的 Packages,这些就留给你们自己去做啦~  

language-latex 包的简单配置

 
这个 LaTex 语言的 Package 包含了绝大多数常用命令的补全。我们还可以自定义命令补全。让我们点击上一图中的 VIEW CODE 按钮查看该 Package 的源代码,打开 snippets 文件夹里的 language-latex.cson 文件。


 
我们可以看到,每一个命令补全都由三行代码组成:

'COMPLETION NAME':
    'prefix': 'PREFIX'
    'body': 'BODY'

COMPLETION NAME 是这个 snippet 的名字
PREFIX 用于识别从键盘输入的字符(串)
BODY 是补全字符串——可添加转意符号,例如换行符\n,值得一提的是转意算符反斜杠’\‘本身的转意代码不像其它语言中是两个反斜杠\\而是\\\\四个反斜杠的。不知道是 Atom 的 bug,还是出于其它考虑,笔者觉得怪怪的。除此之外,最重要的是 Tab 键移动位符号:$0、$1、$2……,在特定位置加入这些移动位,我们可以在补全之后利用 (Shift +)Tab 键在这些位置间来回切换。比如 LaTeX 数学模式中的\dfrac{}{},可以写为 \dfrac{$1}{$2} 这样可以在写完分子之后按 Tab 键直接书写分母,效率的提高可想而知。
 

 
自定义补全代码实例,通过在 language-latex.cson 文件中任意位置加入以下三行代码,然后保存,重启 Atom:

'myname completion':
    'prefix': 'pw'
    'body': 'Patrick Wu\nA physics student who has to write code.'  

输入 pw 后的补全效果


 
基于 core package 中的自动补全 API,能实现所有其它语言的自动补全,并让它们在特定的文件中被启用。  

要优雅要有设计感,代码编辑器怎能不美观?

 
Atom 的组件中还有一种特殊的 Package ,那就是 Theme. 没错,Atom 是可以自定义 UI 的。安装方法同 Packages 。
 
Theme 分成 UI 和 syntax 两部分
 
在Github中搜索关键字 “atom ui” 就能搜到许多 Atom UI
 
分享两种 Google’s Material 风格:

atom-material-ui:

atom-material-syntax:

顺带一提,截图中左侧的项目文件区域中文件呈现出了不同的颜色及图标,都是特定 Package 实现的功能哦!除此之外,一些 Package 还能实现 Atom 和终端的整合、和 Vim 的整合等等……当然,如果你代码水平足够强,你也可以自己写 Package  

结语

 
Atom 高度的可定制性,让用户可以自行添加所需要的功能,打造自己最易用的代码编辑器。主体仅200M(Mac OS X系统下)与其它主流代码编辑器相比,显得轻巧了许多。不仅适合专业的程序猿使用,也适用于工作中涉及到代码编写的边缘用户。