Un Electron Libre...

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 5 septembre 2008

Django, Lighttpd et l'admin de Django sont dans un bateau...

Comme toute personne faisant tourner Django avec lighttpd, j'ai la configuration suivante :

$HTTP["host"] =~ "(^|www\.)steinmetz\.fr$" {
        server.document-root = "/home/nicolas/django/lessteinmetz"
        fastcgi.server = (
                "/django.fcgi" => (
                        "main" => (
                                "host" => "127.0.0.1",
                                "port" => 8080,
                                "check-local" => "disable",
                        )
                ),
        )
        alias.url = (
                "/media/" => "/home/nicolas/django/django-svn/django/contrib/admin/media/",
        )
        url.rewrite-once = (
                "^(/media.*)$" => "$1",
                "^/favicon\.ico$" => "/media/favicon.ico",
                "^(/.*)$" => "/django.fcgi$1",
        )
}

Là où le bas blesse avec l'arrivée de Django 1.0, c'est que si vous souhaitez accéder à l'interface d'administration, vous vous retrouvez avec une jolie erreur puisque Django, pour l'url en /admin/ vous renvoie un /django.fcgi/admin/ que votre serveur web réécrit en django.fcgi/django.fcgi/admin, ce qui ne peut pas fonctionner.

Cela est du à l'arrivée de FORCE_SCRIPT_NAME. La solution consiste donc à rajouter dans votre fichier settings.py la déclaration suivante :

FORCE_SCRIPT_NAME=""

Relancez votre instance Django et le tour est joué.

jeudi 4 septembre 2008

Django 1.0 disponible...

Après la sortie hier d'une discrète version "RC", voici que la version finale de Django 1.0 sort ce jour.

Je vous invite à lire les Release Notes, que David a traduit dans son billet "Sortie de Django 1.0, une année de nouveautés". Pour ceux en version 0.96, on notera l'existence d'un guide de migration vers la version 1.0.

David ayant tout dit et la doc anglaise étant aussi très chouette, je ne vais pas en dire plus à ce sujet... Il va maintenant vraiment falloir que je mette à jour mes projets en Django 1.0 (tout comme ne plus utiliser la version svn sur ce serveur...)

dimanche 17 août 2008

Lecture : Practical Django Projects

Je viens de finir la lecture de Practical Django Projects, écrit par James Bennett, qui occupe le poste de "Django Release Manager" et qui a publié sur son blog de nombreux billets sur Django et les bonnes pratiques à avoir/appliquer. Autant le dire tout de suite, le livre est de la même qualité que ses billets : accessibles, pédagogiques et pertinents.

Le livre se décompose en cinq grandes sections :

  • Présentation de Django
  • Réalisation d'un CMS simple (permettant de poser les bases)
  • Réalisation d'un weblog (permettant de découvrir les concepts de "template tags", manager, l'utilisation de librairies tiers, les vues génériques, etc)
  • Réalisation d'un dépôt de code (qui complète les points abordés précédemment et permet d'aborder le gestionnaire de formulaires).
  • Synthèse sur les bonnes pratiques à suivre pour du code flexible, adaptable, réutilisable, distribuable et surtout documenté !

Autant je n'ai pas appris grand chose avec les deux premières sections, autant j'ai adoré la troisième et cinquième. Pour la quatrième section, mon niveau en python & django font que pas mal de choses me sont passées pour le moment au dessus de la tête et que cela ne répond pas à mes besoins immédiats (contrairement à la troisième section).

Même si l'arrivée de la nouvelle interface d'administration et le fait que le code sur les "Signals" ait été réécrit font que quelques infimes parties du livre se trouvent aujourd'hui un peu obsolètes, le livre a le grand mérite de tout bien expliquer, de poser les bases et d'accompagner le lecteur dans une montée en puissance au niveau de sa maîtrise de Django.

Le seul reproche que je peux formuler concerne la quatrième section où l'accent n'est mis que sur les nouveautés. Du coup, on appréhende moins la construction de l'application en tant que telle. A ce jour le code source utilisé dans le livre (section de gauche) n'étant pas encore dispo sur le site d'Apress, cela n'aide pas non plus pour prendre le train en route...

Pour tout ce qui est bonnes pratiques, elles sont présentes partout dans le livre. Point besoin d'attendre la 5ème section pour en bénéficier. L'auteur prend même au début le plaisir à montrer la "mauvaise façon" (ie sans prendre en compte les besoins d'extensibilité/flexibilité/...) puis montre ensuite la "bonne façon" de faire. Des conseils qui sont en général assez simple à suivre et donne de solides avantages au code généré (lisibilité, simplicité, réutilisabilité, etc).

(Mal)heureusement, je n'avais pas de PC sous la main pour coder en parallèle. Je n'ai donc pas pu capitaliser / jouer avec ce qui a été abordé. (J'aurais en outre pu en profiter pour coder la base de mon projet Atome...)

Pour conclure, si quelqu'un souhaite se mettre aujourd'hui à Django, je ne saurais trop lui recommander de lire en premier lieu "The definitive guide to Django : web development done right" puis ce livre ensuite. Avec ça et ensuite la documentation en ligne, il est prêt pour mener à bien des projets (perso/pro).

samedi 16 août 2008

Vrac de rentrée

Django 1.0 Alpha 2 puis Beta 1 sont sorties, au programme :

  • (alpha 2) Intégration de l'application de système d'information géographique GeoDjango
  • (alpha 2) Extensibilité des types Fichiers (FileField) et Images (ImageField) pour permettre une manipulation plus souple de ces types d'éléments
  • (alpha 2) Compatibilité avec Jython (qui permet de faire fonctionner du code python dans une application Java pour faire simple)
  • (beta 1) Les relations génériques sont maintenant supportées dans l'interface d'admin et dans les formulaires
  • (beta 1) Amélioration de la flexibilité de l'interface d'administration pour tout ce qui est antérieur ou postérieur à la sauvegarde d'un élément (cf doc)
  • (beta 1) La distinction entre un INSERT et un UPDATE au niveau de la méthode save() est améliorée (comprendre, on peut la gérer soit même)
  • (beta 1) Le middleware du cache a été éclaté en 3 - CacheMiddleWare continue à exister en tant que tel et est constuit sur la base de deux nouvelles classes (une pour créer le cache, l'autre pour le lire) (cf doc)
  • (beta 1) Les fonctionnalités obsolètes et maintenues jusqu'alors sont supprimées (il faut donc renommer vos django.newforms en django.forms par ex).

Pour ceux qui veulent avoir un aperçu des progrès réalisés par Django en deux ans, ils peuvent lire JeffCroft.com: Top ten things that suck about Django, revisited.

Pour rester dans Python, Smile se pose la question Faut-il avoir peur de Python, ça m'a rappelé ce billet sur l'adoption (ou pas) des nouvelles techo / langages ayant le vent en poupe. Serais-je un tantinet médium ? ;-)

Pour sortir un peu de python & django, un petit point sur la compatibilité des sites avec les navigateurs avec une série d'astuces utiles. Dans la même veine, un billet pour rendre vos newsletter en html lisibles sous vos webmails & clients mails.

Un petit état des lieux sur eZ Publish 4.0 et ses bugs - ça me promet une rentrée épique ça :-(

Prochain billet : revue de lecture sur Practical django projects de James Bennet ; il me reste les deux derniers chapitres à finir...

mercredi 23 juillet 2008

Django 1.0 alpha is out (mais en juillet)

Le framework Django, vient de sortir en version 1.0 alpha, premier jalon d'une série de release devant nous emmener à la version 1.0 final début septembre, comme l'annonce la roadmap.

Au menu des principales nouveautés depuis la version 0.96.x :

Pour ceux qui mettraient à jour leur site d'une version 0.96.x vers cette version, n'oubliez pas de consulter la liste des incompatibilités ascendantes et le traitement à "infliger" à votre code pour le faire évoluer.

Sur la partie admin, je vous invite à consulter également la page dédiée à cette fonctionnalité qui donne beaucoup d'informations pour la migration. A lire et voir également, ce tutoriel et screencast pour la migration vers cette nouvelle interface d'administration.

Et pendant ce temps-là sur django-fr, David a (enfin ;-) ) publié mes traductions de la contrib webdesign, l'installation de django avec Apache/mod_python ou sous fastcgi. Il faut d'ailleurs que je mette à jour ces deux documents suite aux derniers commits...

PS : désolé pour le jeux de mot... fatigue, besoin de vacances, tout ça tout ça... ;-)

samedi 19 juillet 2008

MiaM

La branche tant attendue newforms-admin est arrivée dans le trunk de Django.

Du coup, django.newforms devient django.forms.

Un grand pas en avant de fait vers la version 1.0 et qui ouvre un grand nombre de possibilités pour la constitution de back-office d'une appli Django... (pas encore testé).

Bref de quoi me motiver un peu plus pour me remettre à mes dev... ;-)

Edit du 20/07 : A lire absolument en plus de la page sur la branche newforms-admin indiquée plus haut, la documentation sur l'interface d'administration et tout ce qui s'y réfère (modèles, options d'affichage, etc)

lundi 23 juin 2008

Futilité de passage...

  • Le Chaudron, à défaut d'être complet est à jour coté Redmine - cf Annonce de Redmine 0.7.2
  • Ce blog, ainsi que celui de mon fils continuent de suivre le SVN de dotclear et sont donc sous Dotclear 2.0 RC2
  • Jungle Disk 2.0 est sorti
  • Le paramétrage du serveur est quasi fini, faut que j'injecte d'une facon ou d'une autre le backup des bases postgresql dans backup-manager
  • Mon nombre de flux RSS suivis est passé de 100+ à une 30aine (et ça pourrait encore diminuer) - que de bruit en moins et de temps de gagné. Déjà que j'arrive pas à faire le quart de la moitié de ce que je voudrais faire... et ça m'inspire aussi que la veille / course au hype en SSII consomme un temps monstrueux pour un intérêt qui me parait aujourd'hui bien relatif...
  • Intéressant de voir les projets depuis un client final. C'est là où on voit que les phases d'intégration, tests et documentation sont raremement à jamais appliquées en SSII, voir pas intégrées dans le process de développement pour des bonnes et mauvaises raisons - j'y reviendrais plus tard, ainsi que sur ce document qu'est le "cahier de tests". Pour éviter toute mauvaise interprétation : moi aussi jusqu'à peu encore, j'ai aussi mal fait quand j'étais en SSII... c'est d'ailleurs assez rigolo de prédire quasiment à coup sur ce qui a été fait/pas fait par une SSII et trouver à coup quasi certains les points de manque sur une livraison...
  • Diigo, c'est bientot fini car je trouve leur barre insupportable, la suggestion des tags est à chier et l'intrusion dans le menu en click droit est abusive. Pire que tout dans ce fameux menu, on ne peut pas faire juste "Bookmark" mais forcément "Bookmark & higlight", chose pour lequel je n'ai trouvé aucun intérêt pour le moment. Retour sur del.icio.us sous peu... (juste après la publication de ce billet en fait...)
  • Il a été vu ceci sur mon PC - il parait que je me serais remis à faire du code (à défaut de trouver un éditeur qui me convienne)
django-admin.py startproject atome
django-admin.py startapp journal
django-admin.py startapp links

mais un bug lié à la version SVN de Django et de django-tagging (dont j'ai trouvé la doc un peu limité sur l'intégration dans les modèles) m'a vite bloqué :-( -

Suite au prochain épisode...

Edit 1 : Pour django-tagging, faudrait lire la doc qui va bien aussi...

Edit 2 : Ajout de la sortie de Jungle Disk 2.0

mercredi 14 mai 2008

Sécurité quand tu nous tiens...

Pensez à mettre vos serveurs / applications à jour et ce assez rapidement...

Procédure de vérification (issu d'un mail de Gandi)

Récupérer le script dowkd.pl :

$ cd /tmp
$ wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz
$ wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz.asc
$ gpg --keyserver subkeys.pgp.net --recv-keys 02D524BE
$ gpg --verify dowkd.pl.gz.asc
$ gunzip dowkd.pl.gz

L'appliquer sur des clés de machine (host key) :

$ perl dowkd.pl host localhost
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9
localhost: weak key
localhost: weak key

Le message "weak key" indique que la clef est faible et donc vulnérable.

L'appliquer sur les clés des utilisateurs :

# perl dowkd.pl user
/home/someuser/.ssh/authorized_keys:1: warning: unparsable line
/home/someuser/.ssh/authorized_keys:3: warning: unparsable line
/home/someuser/.ssh/authorized_keys:4: weak key
/home/someuser/.ssh/authorized_keys:5: weak key

Pour les certificats, utiliser une procédure de révocation/regénération de certificats.

Pour le reste, voir la page SSLKey sur le wiki de Debian

Edit : Ajout du lien pour l'annonce d'OpenSSH Edit 2 : ajout du lien vers http://wiki.debian.org/SSLkeys

mercredi 16 avril 2008

Nginx, wouhaou :-)

Juste pour dire que j'ai installé en quelques heures vendredi soir, Steinmetz.fr sur une part Gandi avec l'infrastructure nginx, postgresql et python 2.5 (en lieu et place de Apache2/mod_wsgi, MySQL et Python 2.4).

Pour le moment cela marche du tonerre sur une configuration en plus assez équivalente que celle que j'ai chez Sivit (sauf que la part Gandi est moins chargée en sites pour le moment).

La procédure de migration d'un site django est assez simple :

  • Backup du site + bdd
  • Transfert du site
  • Installation de nginx & postgresql
  • Configuration de nginx en reprenant ce fichier de configuration (par contre la regexp sur les fichiers css & co ne fonctionne pas dans mon cas)
  • Ajustement des paramètres de mon projet django (sur les chemins vers les templates et fichiers statiques)
  • Lancement de mon application en mode fcgi
  • Lancement de nginx
  • Et on apprécie le résultat.

Pour être honnête, cela a été un peu plus compliqué ;-)

Je ferais surement un article un peu plus détaillé & étendu plus tard pour ceux que cela peut intéresser...

jeudi 27 mars 2008

En vrac (très teinté django quand même)

  • Le changset 7370 permet de générer une doc au format HTML notamment via Sphinx et le rendu est assez sympatique. C'est assez simple à faire :
cd django/django-svn/docs
make html

Le résultat est dans un sous répertoire _build et la jolie table des matières est disponible /_build/html/index.html

Pour le reste, c'est dans mon flux del.icio.us ;-)

Edit du 31 : Le programme de Pycon FR est disponible.

- page 1 de 6