Archives pour mai, 2009

Nginx : rewrite rules MediaWiki

Pour héberger un site MediaWiki avec Nginx, voici les rewrite rules à appliquer dans le virtual host :

server {
    listen  80;
    server_name     wiki.site.fr;
    root            /home/www/sites/site.fr/wiki/html;

    location / {
        index          index.php;
        rewrite        ^/$ /wiki/Main_Page permanent;
    }

    rewrite ^/wiki/([^?]*)(?:\?(.*))? /w/index.php?title=$1&$2;
    rewrite ^/wiki /w/index.php;
    location ~ \.php$ {
        fastcgi_pass   unix:/tmp/fcgi-php.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /home/www/sites/site.fr/wiki/html$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Ajax : faire joujou avec les API Google

Toi prendre ta pelle & ton sceau avec comme point de rendez-vous :

http://code.google.com/apis/ajax/playground/

Java : loguer les exceptions avec un stacktrace

Un petit bout de code utile pour tout programme de type démon/serveur et qui permet d’enregistrer dans un fichier journal (cf. API java.util.logging) toute exception non gérée, en particulier avec son stacktrace complet, tel que Java le produirait en console :

private final static Logger m_logger = Logger.getLogger ("package.MyClass");

try
{
    [...]
}
catch (Exception exception)
{          
    StringBuilder stackTrace = new StringBuilder ("exception during execution: " +
        exception.getMessage ());

    for (StackTraceElement element : exception.getStackTrace ())
    {           
        stackTrace.append ("\n\tat " + element.getClassName ()
                + ":" + element.getMethodName () + "("
                + element.getFileName () + ":"
                + element.getLineNumber () + ")");
    }

    m_logger.log (Level.SEVERE, stackTrace.toString ());
}

Exemple d’output :

2 mai 2009 18:51:26 fr.hbis.ircs.Client parse
GRAVE: exception during command execution 'JOIN': fr.hbis.ircs.Channel.create(Ljava/lang/String;
    Ljava/lang/String;)Lfr/hbis/ircs/Channel;
    at fr.hbis.ircs.commands.Join:doCommand(Join.java:130)
    at fr.hbis.ircs.commands.Join:execute(Join.java:64)
    at fr.hbis.ircs.Client:parse(Client.java:158)
    at fr.hbis.ircs.Client:read(Client.java:127)
    at fr.hbis.ircs.nio.MessageTask:doProcess(MessageTask.java:253)
    at fr.hbis.ircs.nio.MessageTask:doRead(MessageTask.java:197)
    at fr.hbis.ircs.nio.MessageTask:doTask(MessageTask.java:152)
    at fr.hbis.ircs.lib.nio.task.TaskBase:run(TaskBase.java:102)
    at java.util.concurrent.ThreadPoolExecutor$Worker:runTask(ThreadPoolExecutor.java:885)
    at java.util.concurrent.ThreadPoolExecutor$Worker:run(ThreadPoolExecutor.java:907)
    at fr.hbis.ircs.lib.nio.worker.DefaultWorkerThread:run(DefaultWorkerThread.java:123)

Sympa, on en perd plus une miette.

Haut de page