Progressivement, j'essaie de passer toutes mes pages sur ikiwi, comme son
nom l'indique, c'est en effet un wiki à la différence qui peut fonctionner
uniquement en mode statique. De fait, cela signifie que j'ai un espoir de
désactiver la passoire^W^W mod_php
et donc pouvoir essayer de nouveaux serveurs HTTP comme and-httpd (oui parce que j'ai
enfin fini de télécharger les tarballs ;)) ?
Je me suis décidé à migrer maintenant à cause de l'annonce d'une nouvelle mise à jour 1.2.7 sensée fixer des vulnérabilités. Comme à chaque fois, il faut se taper les backups (oui c'est déjà fait mais bon, j'ai pas envie de sortir la clef de mon oiseau), la décompression de la tarball, déplacer les trucs où qu'il faut, etc. Alors que si un simple patch était disponible, ca se passerait beaucoup mieux, même si j'ai compris que pour cette mise à jour, les modifications sont trop importantes mais ce n'était pas le cas la dernière fois.
Tout le monde parle du Web 2.0, News0ft le premier, eh bien moi j'aime pas ça, j'étais vachement mieux avec mon Web 1.0-rc4 donc je ne vais pas me gonfler à faire un template et une feuille de style.
Mais à mon époque, on avait le sens du devoir et de la ''backward compatibility'' donc il faut assurer le service des anciennes URL, comme le lien d'aggrégation (RSS et Atom), des liens permanents pour les billets, etc.). Ces ''permaliens'' sont générés ainsi :
http://$host/$path/$year/$month/$day/$id-$title
À partir de la base SQL et d'un coup de Python/Perl, on génère les Redirect adéquates, par exemple :
Redirect /blog/2007/03/02/299-fff http://chdir.org/~nico/blog/posts/fff
En faisant :
python export-dotclear-url.py |perl \
-pe 's"^(\d+) ([^ ]+) (\d+)-(\d+)-(\d+).*"Redirect /blog/$3/$4/$5/$1-$2 $blogurl/posts/$2"' \
>> .htaccess
(export-dotclear-url.py est juste un dérivé du script d'export de
billets, il ne fait qu'afficher le post_id, post_titre_url et la date
de création du billet).
Le script d'export des billets ressemble à ça :
#! /usr/bin/python
import MySQLdb
base='/tmp/user/666/posts/'
db = MySQLdb.connect("localhost", "usertetedenoeud", "sacaf", "tableblog", use_unicode=False, charset='latin1')
c=db.cursor()
c.execute('SELECT post_titre_url,post_titre_url, post_content, post_creadt from dc_post;')
while 1:
l=c.fetchone()
if not l:
break
titre,url,content,createdate=l
print titre, url, createdate
f=open(base+url+'.mdwn', "w+")
f.write('[ [ meta title="%s"]]\n'% titre)
f.write('[ [meta date="%s"]] \n\n\n'% createdate)
f.write(content)
f.close()
Normalement, grâce à cette astuce, la migration n'a pas dû flooder votre aggrégateur de news. J'en ai également profité pour tagger tous les billets importés par la marque imported.