hexo

Add adsense in hexo blog

首先,找到现在正在使用的主题所在目录,如:themes/light/。如果不确定,可查看 _config.yml 中 theme 的值。

在主题目录的 layout/_widget 下,放着所有右边栏的小工具。在这个目录下新建文件 adsense.ejs,并在其中填入:

adsense.ejs
1
2
3
<div class="widget tag">
把从 AdSense 里获得的代码全部复制到这里
</div>

最后,在主题根目录的 _config.yml 里,在 widgets 里面加入一项 - adsense 即可,如:

_config.yml
1
2
3
4
5
widgets:
- search
- recent_posts
- adsense
- tagcloud

这样就可以在右侧边栏里显示 Adsense 广告了。

原理:

Updated to Hexo 3 from 2

我一直在用的静态博客框架 Hexo,在今年 3 月份大版本升级到了 3.0 版。一直没有从 2.x 升级到 3.x,今天升级并迁移到了最新的 3.1.1,了解了一下 3.x 的变化。
官方提供了迁移文档,升级过程很顺畅,安装 hexo-cli 时果然如文档所说 “error occurred”,把老版本的 hexo 先删掉就好。

有一个地方文档中并未提及,需要格外注意:除了安装 hexo-cli 之外的步骤,都应该在你的 blog 根目录下进行。这也反映出了新版本最大的变化:模块分离。

首先可以看到,新版本多了一个 hexo-cli,也就是 Hexo command line interface,这也是新版本中唯一需要安装到系统全局的模块。把 CLI 从主模块中分离,可以让 CLI 加载更快,同时能够允许你在不同的目录下维护着不同版本的 hexo blog。

而其他所有模块,包括 hexo, hexo-server, hexo-deployer, hexo-generator, hexo-renderer 等,都被安装在某一个 blog 的 node_modules 目录下,仅应用于这一个 blog。

模块分离有利有弊,但大多数情形下是利大于弊的。对于 hexo 来讲,带来最大的利就是,blog 目录下包含着所有需要的内容和程序,受系统环境的限制就能做到尽可能的小。而先前版本的 hexo,blog 目录中仅包含所有的内容,而并不包含程序 – 程序需要调用系统中安装的。设想一下,Alice 在 Bob 家度假,突然想用 Bob 的个人电脑写个博客(假设 Alice 没有带自己的笔记本)。Alice 平常用的是 2.x 版本的 hexo,并把 blog 目录同步到了 Dropbox。而 Bob 用的是 2.y 版本的 hexo,2.x 和 2.y 版本是不完全兼容的。于是,当 Alice 在自己的 blog 目录下执行 hexo 的命令时,可能会出现一些意想不到的错误 – 内容是 2.x 版本的,而程序是 2.y 版本的。

而如果它们都用了现在模块分离程度更高的版本,那么在 Alice 的 blog 目录中,就同时包含了 3.x 版本的内容和 3.x 版本的程序,虽然 Bob 的电脑上是 3.y 版本,但这并不影响什么 – 因为唯一需要依赖系统的是 hexo-cli,而这个 hexo-cli 只是一个 driver,具体的功能实现都将由 blog 目录中的程序接管。而由于这个 hexo-cli 功能非常简单,所以可以做到非常稳定,不同的版本基本上可以完全兼容。

这样的大版本更新也是有些副作用的,比如由于 hexo-deployer-git 模块也改变了,之前的 git 提交历史都没有了…

Commit a issue about code block in hexo

用 Hexo 这段时间一直被一个问题困扰:代码段的行号显示不正确,如:

Markdown source:

After generate:

虽然右侧只有一行代码,但左侧行号显示了1和2,且跟代码没有对齐。使用 codeblock 块也是这样,使用 backtick 方式在代码较短的时候行号正确,代码长了也会出现这样的行号错误(我也不确定是否与代码长度有关)

一直认为应该是我这边的问题,要不然不会一直没有人发现。但在我进行了很多尝试并失败后,觉得又不像是我的问题,于是在 github 上提交了一个 issue(#443)

Hexo 的作者确认这是一个 bug,并且已经在 Release 2.4.5 修复了。

博客迁移到了 Hexo

越来越多的人希望建立自己的独立博客,独立博客框架也越来越多,比如大名鼎鼎的 Wordpress,我之前也在用它。Wordpress 是个动态的博客框架,基于 PHP+MySQL,功能非常强大但也越来越臃肿,有丰富的的插件、主题、社区资源,不仅可以做个人博客,还被很多企业作为了企业网站的框架。

由于 Wordpress 是个动态框架,必须部署在一台支持 PHP 和 MySQL 的主机上,意味着至少需要租用一台虚拟主机。我之前就是租用了一台虚拟主机,里面仅仅是我访问量极低的博客,感觉有点浪费。更重要的是,对于一个 geek,Wordpress 不够酷,所以我决心换掉它。

调查了一下其他的博客框架,比较有意思的有 Typecho, Jekyll, Octopress, Hexo

Name Slogan Technical
Typecho 轻击键盘,静候回音 PHP5+MySQL/PostgreSQL/SQLite
Jekyll Transform your plain text into static websites and blogs. Ruby
Octopress A blogging framework for hackers. Ruby
Hexo A fast, simple & powerful blog framework, powered by Node.js. Node.js

其中,后面三个都是静态博客框架,原理是把博客内容生成静态的 HTML 网页,最终会是一个全静态的网站,所以只需要放到任意一个支持 HTML 的主机就可以了。而 Github pages 就是一个,这样就得到了一个免费的独立博客。更酷的是,写作博客要用 Markdown 文法,配置博客、发布博客都需要用命令行来完成,对于 programmer 来讲效率和灵活性都更好(主要是看上去也更高端…)。

最终我迁移到了 Hexo,感觉还不错。