月度归档:2013年08月

docbook之旅

docbook之旅

docbook之旅


1. 我选择花点功夫学下docbook源自于我遇到的一些问题

  • 很多可视化编辑器的笨拙(wordpress原生编辑器),写文章时的格式问题总是花去我大量时间,以至于不能专心在内容上。
  • 不同输出格式之间的迁移简直就是灾难,不能得到稳定一致的格式(几乎要重新处理格式),且不能简单的粘贴复制。
  • 二进制文档的复制粘贴总是制造麻烦(pdf里面拷贝文字总是多几个空格神马的,word里面粘贴也需要去除格式),且难以版本工具管理。

2. docbook的历史很长,有一定使用门槛。主要集中在环境搭建和语法学习上。

2.1. 环境搭建

  • 工具

    docbook的环境主要是依赖工具xlst和docbook-xsl-ns,其次是辅助的apache
    fop(生成pdf,rtf用,1.1版生成rtf有bug),apache ant(编译webhelp), html help
    workshop(windows下用于编译chm),lynx(用于生成txt文件)。

  • 配置

    主要是在自己的xsl文件中,导入docbook-xsl-ns定义的标准xsl再加上额外的自定义配置。

  • 脚本

    windows下就是批处理,linux就是makefile或者shell,来定制执行脚本即可生成html,htmls.htmlhelp,rtf,pdf,man,webhelp,txt等文件。具体过程不再赘述,提供环境下载:

2.2. 语法

docbook是一门标记性的所想即所得语言,因此所有格式都是通过标签去控制的。

  • 基本标记

    根标签(book,chapter,article),子结构(sect[n]用于分层),文本容器(para,几乎所有文本都是放在这个标签里面),编号(orderedlist,itemizedlist),表格(table)…

  • 特殊标记

    docbook主要是为了作为出版用的,因此有很多书籍相关的标记,例如,序言,目录,参考书目等。

docbook的标签虽有几百个,但常用的几个就基本能满足大部分的写作需求了,剩下的查阅手册就行了。

4. 本博客的版本

xml html htmls chm pdf rtf webhelp txt

 

 

替换rm

从用linux起就一直深受rm的困扰,稍有不慎就删掉了不该删的东东。
1.早年受回收站的启发,将rm隐藏掉替换成自己的脚本,每次rm都将文件移动到每个分区的一个隐藏文件夹中,超过配额才真正的删除,同时辅以恢复脚本即可方便的处理。
2.但第一种方法通常过于复杂且多占用空间,最近有一次误删文件夹使我越来越细化rm的问题,仔细的思考后认识到其实我想要的只是避免某些文件或文件夹被误删除,因此梳理了一下写了下面的代码。

1).这个rm函数直接放到bashrc中加载到shell环境,shell内部函数优先于外部命令加载,达到隐藏rm命令的目的
2).prevent_dir为shell数组用于存储需要保护的目录和文件,这样删除时就会给出提示,同时不会调用/bin/rm
3).getopt过滤掉所有rm的参数,得到待删除的文件
4).readlink -f用法屏蔽掉所有相对路径.,..,~等特殊用法,得到全路径

http-scws-plus

首先感谢原作者提供的好东东,不过使用确实有点不便,于是稍作修改

原版2.1: http://code.google.com/p/http-scws
scws主页: http://www.ftphp.com/scws/index.php
修改版: https://github.com/tangfu/http-scws-plus

差异:
*.修复原版吐html页面时比较utf8和gbk的错误
*.仿造github api的提供api的json列表(例如不带参数访问时获取api列表: http://url/)
*.兼容txt和xdb两种字典(以后缀来区分),支持多个词库
*.使用c++编写,去掉无用接口,简化代码
*.依赖库libevent,jsoncpp,scws

注意:
conf使用的是scws原版的词库及rules文件