nanoblogger はシェルスクリプトで書かれた,cat, grep, sed などといった基本的な Unix ツールのみを使用するシンプルで軽量な静的サイトジェネレーターである.
元々,日記やメモやウェブサイトはサーバーの端末上で Emacs で直接書いて,自分で作った CGI で HTML を動的生成していたので,この様なツールが欲しかった.
時代は再び静的コンテンツである?
Emacs 使い,Unix 哲学の信奉者にとっては賢明な選択である.が,そうじゃない人にとっては激しくお勧め出来ない.
メリット
- 軽い.ただの静的ドキュメントなのでサーバーに負担が掛からない.
- 改造が簡単.エンコードや出力形式(xml → html)に改造するのも簡単♪
- コンソールから対話的にブログの更新が行える.お気に入りのエディッタで.
- RSSが生成出来る.
デメリット
- 重い.ただのシェルスクリプトなのでコンテンツ生成が遅い.記事が増えてきたら悪夢であろう.
- ただ,その際もただの静的コンテンツなので,生成後のページを wget などで移動するなど対策はありそう.
- てゆうか,それ以前に勝手に CGI をでっちあげてデータファイルを直接読む動的生成に移行してるかも(–;;
- コメント投稿やサイト内検索は外部のプログラム依存(ただの静的ドキュメントなので).
- ちょっと何か変更したあとにも自動的に記事生成が始まるので,nb コマンド経由ではサクサク管理出来る訳ではない.
- が,格納データはただの text なので,ディレクトリ内を勝手に弄ってあとで一括生成しても特に問題はない.
- バギーである.デフォルトでは使いものにならない.だから自分で好きにして良い.が,細かい所を完璧になるまで煮詰める様なものでもない.
- 要は,端末からちょっと使うには良いですよ.って感じ.まだ設置したばかりなのに,長く使い続けられるとははやくも思えない(–;;
Gentoo にインストール
開発版はまだ色々と問題があるので使わない方が良い.
どうしてもとゆうなら
# echo 'www-apps/nanoblogger ~x86' >> /etc/portage/package.keyword
そしておもむろに
# emerge nanoblogger
使いかた
以下,使いかたコピペ.
The basic syntax is:
How to …
nb [-b blog_dir] [options]
How to …
- create a new weblog (directory) =
nb -b [blog_dir] -a
- create a new entry =
nb -a
- create a new category =
nb -c new -a
- create a new entry for a category =
nb -c [cat_id] -a
- list current entries =
nb -l [current|all]
- list categories =
nb -l cat
- list entries by category =
nb -c [cat_id] -l [current|all]
- edit an entry =
nb -e [entry_id]
- move an entry to a category =
nb -c [cat_id] -m [entry_id]
- delete an entry =
nb -d [entry_id]
- delete a category =
nb -c [cat_id] -d cat
- delete an entry from a category =
nb -c [cat_id] -d [entry_id]
- force update of weblog =
nb -u [current|all|main]
カスタマイズ
ページ生成の為のパーツやキャッシュや設定ファイルをウェブサーバーが読めるところに直接置くのはお勧めできない.
~/nanoblogger/ などに置いて,index.html, index.xml, archives/ や articles/ などの中身を ~/public_html/blog_dir/ のような場所にシンボリックリンクで飛ばせばok.
カテゴリー管理が面倒なので,書くであろうカテゴリーをあらかじめ決めておき,エイリアスを設定するのがお勧め.
alias nb='nb --blogdir ~/blog/ --author "`echo $USER`" --desc "`uname -a`" --title "`date`"' alias nb-diary="nb -c 1" alias nb-pc="nb -c 2" alias nb-guitar="nb -c 3"
みたいな.