2014-03-18
Freemind - Yet Another Bootstrap Theme for Hexo

Freemind - Yet Another Bootstrap Theme for Hexo

Freemind 是我为 Hexo 编写的一个开源主题。

特点

Freemind 和 HaHack 所用的主题的基本相似,特点在于:

  • Bootstrap - 基于 Bootstrap 3.1.1 ;
  • 标签插件 - 专门编写了一系列的 Bootstrap tag plugins ,以最大程度的发挥 Bootstrap 的威力。包括:
    • textcolor - 插入一段带有特殊颜色标记的文本;
    • button - 插入一个按钮,并允许为其指定超链接、文本及颜色;
    • label - 插入一个标签,并为其指定文本和样式;
    • badge - 插入一个徽章,并为其指定文本;
    • alert - 插入一段警报文本信息,并为其指定样式。
  • 本地搜索 - 自带一个 本地搜索引擎 ,基于我的另一个项目 hexo-generator-search
  • 颜色主题 - 内置多套颜色主题。总有一套符合你的口味;
  • 文章置顶 - 将重要文章置于首页顶部;
  • 内置评论系统 - 内置的评论系统,基于我的另一个项目 comment.js
Read More

2014-02-27
A Brief Introduction to openFrameworks

A Brief Introduction to openFrameworks

作为一个图形图像方向的研究生,我经常都在和 OpenGL 、OpenCV 等多种 C++ 库打交道。这些库遵循着不同的规则和用法;另外,为了让自己的程序具有更多的交互能力,编写界面也是一个家常便饭的工作。

然而,随着工程复杂性的增加,库的管理和界面的维护也变得越来越困难:一方面,库的增加和删除不仅会增加学习成本,也会对系统的逻辑层带来影响。而另一方面,如果要让自己的项目易于维护,就要尽可能地应用设计模式,让逻辑和界面分离。但对于科研,一味陷入设计模式的桎梏又会带来过早优化的问题,影响科研进度。

直到后来,我接触到了 openFrameworks ,简直有种相逢恨晚的感觉。openFrameworks 封装了常用的 C++ 库,在此基础上提供了一个直观统一的接口,也大幅简化了编写界面的流程,使得开发图形程序变得很轻松。

本文将为大家介绍这个让人着迷的开发框架 —— openFrameworks。

Read More

2014-02-20
Learning UTF-8 From A Bug

Learning UTF-8 From A Bug

去年 8 月份,我尝试自己写代码解析 Linux Man-Pages 的页面。

Man-Pages 使用的是 groff 文本标记语言,其最大的特色就是格式标记宏置于行首,例如 man(7) 第 35~48 的内容为:

1
2
3
4
5
6
7
8
9
10
11
12
.SH NAME
man \- macros to format man pages
.SH SYNOPSIS
.B groff \-Tascii \-man
.I file
\&...
.LP
.B groff \-Tps \-man
.I file
\&...
.LP
.B man
Read More

2014-02-10
在 OpenCV 程序中实现 MVC 架构

在 OpenCV 程序中实现 MVC 架构

最近在读《OpenCV 2 Computer Vision Application Programming Cookbook》,书中的第三章介绍了如何了在进行 OpenCV 开发时常用的几种设计模式,包括策略模式、单例模式,以及如何搭建 MVC(模型-视图-控制器)架构。内容精彩,让人受益良多。

是否应该在程序中应用设计模式,这一直以来都是一个饱受争议的话题。但这并非本文的讨论重点。笔者的观点是,如果你需要在程序开发中使用面向对象的思想,那就不得不应用设计模式进行设计和重构,以期让自己的程序更加合理。

应该说,OpenCV 和设计模式并没有什么必然的联系,在 OpenCV 程序中实现 MVC 也没有什么特别的魔法。但在这之前,我已经读完了被称为 Gang of Four 的《设计模式:可复用面向对象软件的基础》,感觉内容有点偏学术,不太好读。而通过 OpenCV 的实际案例来掌握几种设计模式,比起直接去阅读各种设计模式的定义要容易让人接受得多。

Read More

2014-01-01
LiveReload For Hexo

LiveReload For Hexo

之前我在 Ruhoh 上使用 guard-livereload 来实现自动更新预览。这样,一旦我修改了网站中的内容,livereload 会立马检测到并且通知浏览器刷新页面,不需要自己手动按 F5 刷新了。完全符合本人热衷偷懒的口味。

迁移到 Hexo 后,我也希望能够用上这个功能。经过一番搜索,我发现在 node.js 平台要使用 Livereload 也非常容易。

方法一:使用 LiveReload

安装和使用

  1. 首先是先安装 LiveReload 的 node.js 版本:
1
$ npm install -g node-livereload
Read More

© 2021 wzpan