Alternative view: by date.
Some time ago, the box on which my blog is hosted went dramatically down, and I had to restore the blog by populating the git repository again, from my local copy.
Unfortunately, that means that the wiki had to be rebuilt from scratch, and all creation dates were messed up, leading some planet-like sites to show all of my posts again.
To ensure that this won’t happen again (even if I switch branches in the git repositories, move some files around, trash the ikiwiki cache, etc.), it looks like using meta dates is the way to go, for example:
[[meta date="2009-07-02"]]
(One can use 2009-07-02 00:00:00 and 2009-07-02 01:00:00 to sort
several entries on the same day, too.)
This way, all pages are rendered identically on every system.
To help maintaining those extra dates (kind of a burden, to be
honest), I’ve written a tiny Perl script to automate
it, and specified an alias in
.git/config for that repository:
[alias]
ikiwiki-check = "!blog/2009/07/02/ikiwiki-dates.pl"
Inline replacement (in case of conflicts: same date without time, or
with same time) or additions are then performed, and git status will
show what needs tweaking.
More work that I initially imagined, but robustness should follow.
Ensure there's a
syntaxdirectory in the personal vim directory.mkdir -p ~/.vim/syntaxDownload the markdown syntax file and put it in this directory (e.g.
markdown.vim).Affect the
markdownfiletype to*.mdwnfiles and avoid long lines (in~/.vimrc)." Help autodetection augroup filetypedetect au! BufRead,BufNewFile *.mdwn setfiletype markdown augroup END " Limit the line length for this mode autocmd FileType markdown set tw=80Enjoy.
Logo added at the top of the page.
Idea taken from http://ikiwiki.info/logo/, and adapted with a random font. To
get a PNG file from the SVG one, just create a group with the appropriate
objects, named it say kibilogo, and then call:
inkscape -w 150 -i kibilogo -e logo.png logo.svg
A bit of CSS later, that's done.
Thanks to ebzao, I'm back on the internets. :-)
To use ikiwiki with a remote host, just do the following:
put
web.giton the server;put the following in
web.git/.git/hooks/post-receiveand make it executable (it looks like settingGIT_DIRis mandatory to have run successfully whenpushing, although locally or over throughssh, everything seems fine without it...):export GIT_DIR=~/web.git/.git cd $GIT_DIR/.. git checkout -f # Update this repository ikiwiki --setup ikiwiki.setup # Update the HTML pages echo 'HTML update: done!' # Notify the 'push'-ergit-cloneon the local host;edit/patch/...
git-push
And now the site gets automatically updated some seconds after a push.
(Note to self: a code block inside a list needs to be indented twice.)
Summary of my setup
Install ikiwiki
Choose a hierarchy for the blog entries. It is
blog/$year/$month/$day/$title.mdwnright now, and tags are stored undertags/.Enable some plugins. Currently:
sidebar: integrate a menu bar on each page;
tag: ease the creation of tags and links;
pagestats: needed to generate automatically the list of the tags;
prettydate: specify a string format for the Posted/Last edited dates;
shortcut: enable many interesting shortcuts like
[[debbug NNNNNN]]or[[debpkg package]].
Create some placeholders:
index.mdwn;tags.mdwn;tags/*.mdwn(one for each tag),
Write a configuration file:
ikiwiki.setup, enabling these plugins, and containing some basic information like origin and target directories.To do:
- learn the syntax for real;
- automate the creation of
index.mdwnplaceholders underblog/$year,blog/$year/$month, and so on. Extend a module to do so? - poke the author of the calendar plugin so as to get the code;
- report that shortcuts containing slashes aren't working;
- integrate it in git.