今まで、はてなブログを使っていた。 でもまぁなんか色々使いづらかったので、自前のシステムでやろうかなーと。
やっていることは簡単で、pandocをつかって適当にやっている。 とりあえず前のブログを消しさるために役に立つエントリだけこっちに移管するかなーと。 それとも消さないほうがいいのかなぁ。
とりあえずmarkdownで手軽に外部システムに依存しないものがほしい。 (まぁpandocには依存してるんだけど)
くらい?実はブログの本質とはこの程度なのだろうか。 kinabaさんのブログが理想だ。 かなり影響を受けている。
やっていることは単純で、だいたい以下のファイル群をつかっている。 このエントリを書いている頃のやつなので、見られる時には古くなってるだろうけど。
以下のようにファイルを構成している。
.
├── 1
│ ├── index.html
│ ├── index.md
│ └── source
│ ├── blog.css
│ ├── include_after_body.html
│ ├── include_before_body.html
│ ├── include_in_header.html
│ └── tree.txt
├── blog.css
├── include_after_body.html
├── include_before_body.html
├── include_file.hs
├── include_in_header.html
├── make.sh
├── send_all.sh
└── send_blog.sh
2 directories, 15 files
前述の通り、pandocを使用している。 pandocはcabalでインストールしている。たぶんそうしないと自前のfilterが使えない。
#!/bin/sh
TARGET_DIR=$1
NEXT_DIR=`expr $TARGET_DIR + 1`
PREV_DIR=`expr $TARGET_DIR - 1`
BEFORE_BODY=`mktemp`
sed -e "s/__PREV__/$PREV_DIR/g" \
-e "s/__HERE__/$TARGET_DIR/g" \
-e "s/__NEXT__/$NEXT_DIR/g" \
include_before_body.html > $BEFORE_BODY
AFTER_BODY=`mktemp`
sed -e "s/__PREV__/$PREV_DIR/g" \
-e "s/__HERE__/$TARGET_DIR/g" \
-e "s/__NEXT__/$NEXT_DIR/g" \
include_after_body.html > $AFTER_BODY
cd $TARGET_DIR
pandoc index.md -t html5 --highlight-style tango -f markdown+hard_line_breaks --mathjax --filter ../include_file.hs -H ../include_in_header.html -B $BEFORE_BODY -A $AFTER_BODY -o index.html
僕はあまりTeXみたいな改行方式が好きではないのでhard_line_breaksとしている。 そうすると改行が改行になる。 でもなんかとびでてるな……。
include_before_body.htmlとかはこんな感じ。make.sh内で__PREV__とかを変換してる。
<div class="nav_container">
<div class="nav_button nav_left"><a href="../__PREV__">一つ過去のページ</a></div>
<div class="nav_button nav_center"><a href="../__HERE__">このページ</a></div>
<div class="nav_button nav_right"><a href="../__NEXT__">一つ未来のページ</a></div>
</div>
blog.cssはこんな感じで。
.nav_container{
text-align:center;
}
.nav_button{
display:inline-block;
}
.nav_left{
margin-right:1em;
}
.nav_center{
margin-left:1em;
margin-right:1em;
}
.nav_right{
margin-left:1em;
}
あとひとつ、特別なこととして、filterをつかっていることがある。 これはコードとかは外部にしておきたいときにつかう。 http://johnmacfarlane.net/pandoc/scripting.html#include-files
send_blog.shは簡単に送信するためのshellscript。まぁいちいちscpとかしてられないし。
#!/bin/sh
if [ $# -eq 0 ]
then
echo "usage: ./send_blog.sh 1"
exit 1
fi
./make.sh $1
scp -r $1 pushl:
ssh pushl "sudo rm -rf /var/www/blog/$1;sudo cp -r $1 /var/www/blog"
後で見返すように。 主にpandocまわり。