使用 org-page 搭建个人博客
Table of Contents
故事要从多年前接触到的 Emacs - Muse
说起。算起来那是八、九年前了, 组织上 鬼使神差,不知怎么地就叫俺去做软件开发,而且一上来就是高难度的——所谓“高性能并行计算”。那时候国内一窝蜂的上 HPC
项目,都是做“烧钱”堆机器的事情,可以在“高、大、上”机器上跑起来真正有实际工程意义的作业基本上没有。原因很简单,缺乏大型的工程并行计算应用软件,国外有,但人家政府不让卖,因为这玩意首选的应用领域,在国防、军事上。那时候,国内也就中科院有几个学者在这上面做过一些算得上真正意义上的 HPC应用软件
科研工作。而我不过是个画图的,充其量也就是使用商业计算软件完成计算作业的一个 软件用户
而已。开发软件?完全找不到北!!!
一切从“偷”开源代码开始,光是“读程序”就叫人心浮气躁。记笔记是少不了的,还要说人家老一代的科技工作者素养好,记得当时返聘了一位已经退休的老研究员。每天跟我们几个年轻小伙子一起读 Adina
软件的代码,写的笔记工工整整,比我们现在电脑排版打印的看起来还整齐美观。而我就"臭"了,不光不讲逻辑,而且记的凌乱。小本本用了不知多少,信手拈来的薄记纸片也塞满了抽屉。总之,只在当时起到一点强化记忆的作用,事后完全不可追查,都成了废纸。
大概到第三年头上,无意中发现了 Emacs - Muse
,妙在简便易用,而且可以输出为 Tex
和 Html
,打印与浏览同时具备了。此后,我就用它完成笔记和交流。可惜,很快我就不做那个工作,新的工作不大需要做笔记,这个东东也就丢下了。
最近,迷上了读书,突然发现除了工作之外,还有那么多好玩而又深沉的事情。阅读、思考之余也用 LaTeX
摘要、薄记一些心得体会。可这个东东主要用来展示的,书写的时候为了信息和逻辑上略微完整些,常常“节外生枝”,不仅很是消耗时间,稍不小心就打断了之前的阅读和思想。这两天,突然发现 Emacs Org-mode
的“大纲、标签和计划”功能“酷不堪言”,兴趣一下子从“求知”转向“器用”上来了。
吸取之前的教训,笔记不能总是藏在抽屉里,不时的晒出来温习一下才能唤回“美好的回忆”所以这次先从 Blog
搞起。
讲废话已经花了不少时间,该干正事了。话说弄这个 Org Page
还是花了点功夫才把它搞通的,今天就先把这个过程记录下来。
必须事先申明:
利用 Org-Page 跑通本地 Blog
Org-page 安装
由于依赖很多其他的插件,利用 melpa 安装是个比较好的选择。Emacs 24 已经自带 melpa 但缺省提取的只是“稳定”插件列表, org-page
不在其中,因此需要在 .emacs
文件中作如下配置:
;; melpa 包管理的配置 (require 'package) ;; You might already have this line (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) ;; (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t) (when (< emacs-major-version 24) ;; For important compatibility libraries like cl-lib (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) (package-initialize) ;; You might already have this line
使用命令 M-x package-list-packages
找到 org-page
安装即可。注意还有四五个依赖包, org-page
包安装页面会给出提示,包列表也都能找到,一起安装之。
Org-page Blog 项目配置
配置 Blog 项目的 org 源文件目录:
;; org-page 生成页面的配置 ;; (add-to-list 'load-path "path/to/org-page") ;; only needed if you install org-page manually (require 'org-page) (setq op/repository-directory "D:/emacs/MyOrg/org-page/") ;; the repository location (setq op/site-domain "https://victor72.github.io/") ;; your domain ;;; the configuration below you should choose one, not both (setq op/personal-disqus-shortname "victor72githubio") ;; your disqus commenting system ;;; (setq op/personal-duoshuo-shortname "your_duoshuo_shortname") ;; your duoshuo commenting system
本地源 org 库初始化
- 首先,在想写 blog 的文件夹(D:/emacs/MyOrg/org-page)下用
git init
(git的安装使用这里就不罗嗦了)建立一个 git repository ,这时得到一个空的库及其.git
记录; - 创建并进入 source 分支:
git checkout -b source
; - 新建三个基本文件:
- blog 文件夹: 主要的 blog 文件放里面。
- about.org 文件:在这里介绍自己。
- index.org 文件:在这里写自己博客的首页。
- git add . ; git commit。
我偷懒,暂时直接下载使用了 Kelvin Hu 的博客源代码。
本地 blog 输出
进入 emacs
执行 M-x op/do-publication
命令。交互过程中大概是先输入两个 “y”,然后输入生成的静态网页文件存放的位置,我是放在: D:/emacs/MyOrg/org-page2html/
。
至此告一段落,可以看到网页文件了。由于页面上的各种交叉链接地址,是按照将来发布的根目录为基准书写的。因此如果没有开通本地网页服务,暂时只能一个一个打开浏览。
待办事项
DONE 页面风格主题定制
- 正常定制法
使用命令 M-x customize-group
再输入 org-page
即可。(这种定制法定制能力有限)
- hack定制法
参看 themes 文件夹,里面的 template 文件夹使用了 mustache 模板 。而另外一个 source 文件夹有 css、js 等文件,这些东西能让你制作一个漂亮的界面了,毕竟标签不多。(但还需要学习!汗!)
关于 org-page 的正常定制法以及 custom 页面里各个选项的含义,还需进一步研究……
DONE 本地浏览
基于 emacs 的 simple-httpd 来进行站点本地测试。
(require 'simple-httpd) (defun kd/test-org-page (&optional site) "test the org-page's main repository" (interactive (let ((sitet (read-string "测试静态站点名:"))) (list sitet))) (cond ((equal site "victor72") (op/do-publication t nil "~/MyOrg/victor72.github.io") (httpd-serve-directory "~/MyOrg/victor72.github.io") ) ;;emacs-china ((equal site "emacs-china") (op/do-publication t nil "~/MyOrg/emacs-china.github.io") (httpd-serve-directory "~/MyOrg/emacs-china.github.io") ) (t (message "error! no repository"))))
生成网页结束后,在 emacs 里头分别执行 M_x httpd-serve-directory ; M_x httpd-start 设置本地网页服务器根目录地址和启动服务。然后就可以在浏览器通过 http://127.0.0.1:8080 访问网站了。
DONE 页面目录定制
可以在 .emacs
文件中开 (setq org-export-with-toc t) 全局配置,也可以在单个文件中 #+OPTIONS: toc:t 打开,或 toc:nil 关闭。
DONE 评论插件
经验证,前述配置已经生效。
TODO 顶部导航尾与部信息的个性化
DONE 文档必须转换为 unix utf-8 编码。
在 windows 环境下,关于 gbk 与 utf-8 编码的冲突,暂时只出现于 emacs_love 主题文件夹中的 footer.mustache 文件。在关于添加评论插件代码处,用到了中文,gbk 编码下是乱码,改变之即解决问题。
DONE 关于站内 google 搜索问题
同样是 emacs_love 主题文件夹中 nav.mustache 文件,关于谷歌搜索插件代码处,谷歌检索地址过时,改为 https://www.google.com 即可。
Generated by Emacs 24.5.1 (Org mode 8.x)
Copyright © 2014 - Victor72 - Powered by org-page
Themed with emacs_love