ka.da

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

lundi, mars 2 2009

django-userthemes : une application pour gérer des thèmes utilisateur pour Django

Un petit billet pour annoncer la sortie de la version 0.1 de l’application django-userthemes. C’est une “application réutilisable” pour Django[1].

L’origine de cette application est le besoin de créer une système de thèmes pour un projet sur lequel je travaille. Après moultes recherches[2], j’ai décidé de créer ma propre implémentation en essayant au maximum de suivre cette philosophie de ‘reusable apps’.

django-userthemes permet donc de définir pour chaque utilisateur enregistré dans une application un thème favori qui sera chargé quand il se connectera à celle-ci. On peut définir le répertoire où seront stockés les thèmes et aussi celui par défaut qui sera chargé quand aucun utilisateur n’est connecté ou que sa préférence n’est pas fixée. Je vous encourage à lire la doc (et le code) pour comprendre comment ça fonctionne en détail.

Vous trouverez le projet à cette adresse : http://bitbucket.org/daks/django-us… où vous pourrez récupérer le code source (via Mercurial ou un fichier archive), rapporter des bugs…

La license utilisée en la GNU GPLv2.

Le projet est encore en phase de développement donc tout retour est bienvenue.

Si vous vous décidez à l’utiliser dans un de vos projets, merci de le dire en utilisant un widget ohloh comme celui-ci :

Notes

[1] voyez cette vidéo de James Bennett et cette convention de Eric Holscher pour plus d’infos

[2] me conduisant vers des projets morts ou ne correspondant pas à nos besoins/désirs : django-themes, django-skins, django-userskins, django-dbtemplates

lundi, octobre 29 2007

graphe last.fm

Graphe last.fm (extrait)
cliquez pour voir le graphe complet

Ceci est un extrait d'un graphe représentant mon profil last.fm. Si vous voulez créer le vôtre, allez voir du côté de LastGraph (enfin de retour). L'idée de cette application est venue à Andrew Godwin après avoir découvert les graphes last.fm de Lee Byron. N'ayant pas accès au code permettant de les générer[1], il s'est mis au travail. Résultat, une bibliothèque Graphication mélangeant Python et Cairo lui permettant de générer du PDF ou du SVG.

Concernant Python et la visualisation d'informations, j'ai également découvert un blog appelé visophyte.

Notes

[1] il semble que le code permettant de générer les autres exemples soit lui disponible. C'est du Processing un langage que je découvre (plus d'infos sur Wikipedia)

jeudi, novembre 23 2006

petit script Python pour récupérer des listes de voisins last.fm

Pour ceux qui ne connaissent pas encore Last fm : (présentation rapide) c'est une communauté pour tous ceux qui aiment et écoutent de la musique. Vous vous créez un compte, vous configurez votre lecteur de musique favori avec ce compte, et ensuite ce que vous écoutez apparait sur votre profil last.fm... voilà pour le début, ensuite vous pouvez tagger les morceaux, artistes écoutés, rejoindre ou créer des groupes, écrire des journaux, découvrir de la musique grâce à vos voisins, et grâce aux radios disponibles sur le site....... bref, plein de possibilités mais je vous conseille d'aller lire la FAQ si vous voulez plus d'informations.

Tout ça pour dire que ça fait déjà un an et demi que je m'y suis inscrit, que j'ai déjà "scrobblé" près de 5000 morceaux, que j'ai quelques "amis" et une multitude de voisins, que je suis abonné à 63 groupes exactement mais que c'est en constante évolution[1] et que j'ai voulu essayer de voir si sur un groupe donné, on retrouvait les mêmes voisins parmi les membres. J'ai donc écrit un petit script Python qui, même si il n'est pas parfait (cf TODO) a le mérite de faire ce qu'on lui demande.

#! /usr/bin/python -tt

## TODO ##
# recuperation de la liste des membres d'un groupe
# rendre le script portable en enlevant l'appel a wget

import os
import re

# liste à compléter
membres = ['gal33Za']

for membre in membres:
    os.system('wget http://ws.audioscrobbler.com/1.0/user/%s/neighbours.txt -O voisins-%s'%(membre,membre))

fichiers = ['voisins-'+x for x in membres ]

voisins = {}

for fichier in fichiers:
    f = open(fichier, "r")

    for line in f.readlines():
        v, voisin = line.split(",")
        voisin = voisin[:-1]
       
        if voisin in voisins:
            voisins[voisin] = voisins[voisin] + 1
        else:
            voisins[voisin] = 1
    #endfor
   
    f.close
#endfor


# pour afficher avant tri
#for key, value in voisins.iteritems():
#   print str(value) + " : " + str(key)

### tri de dictionnaire
### cf    http://aspn.activestate.com/ASPN/Python/Cookbook/Recipe/52306

voisinsRanges = sorted(voisins.items(), key=lambda (k,v): (v,k), reverse=True)

for voisin in voisinsRanges:
    nom, nombre = voisin;

    # pour générer une liste simple
    #print str(nom) + " : " + str(nombre)

    # pour générer du BBcode
    print "[url=http://www.last.fm/user/" + str(nom) + "]" + str(nom) + "[/url] : " + str(nombre)
   
    # pour générer du HTML
    #print "<a href=\"http://www.last.fm/user/" + str(nom) + "\">" + str(nom) + "</a> : " + str(nombre)
#endfor

# endscript

ps : je ne sais pas si ça vous a intéressé, mais en tout cas, ça prouve que je ne suis pas mort...

Notes

[1] le nombre de groupes existants est énorme et il y en a pour tous les goûts : des musicaux (Post-Rock Instrumental, Godspeed You! Black Emperor, radiohead, Mogwai, Noir Desir, Constellation Records, Indie and Alternative...), des géographiques (France, EU), des "geeks" (Amarok Users, Debian Linux, jabber, Vi (oui, le bon vieux troll vi vs emacs se retrouve également sur last.fm), des "politiques" (I Still Buy CDs, Music fans and Musicians against the RIAA, I don't have an iPod, Shove your DRM up your ass, NO 2 ID, I Hate Football) ou conceptuels dont certains dont le nom seul oblige à s'inscrire (I Don't Mean To Come Off As A Music Snob, I Grew Up In A Small Town and Suprisingly I Listen to Good Music!, Non aux Red Hot en tête de Charts, , The Black Background Users, People who join too many groups) etc, etc, etc

dimanche, septembre 24 2006

développement Python

J’ai récemment eu envie de me remettre au développement, ayant 2-3 projets dans le coin de ma tête. Et je me suis dit que j’allais me mettre à Python, langage interprété, multiplateforme et libre bien évidemment. C’est un peu le langage à la mode en ce moment[1] et après être tombé sur moults articles en traitant[2] et projets l’utilisant[3], je me suis décidé.
Je me suis également intéressé à la problématique de gestion de version pour gérer un projet informatique, surtout à plusieurs. CVS en est le représentant historique dans le monde du logiciel libre, mais depuis peu une foule de nouveaux outils sont apparus[4], et après un bref passage du côté de Mercurial, je me suis finalement décidé sur Subversion dont l’approche et le mode centralisé sont plus simples à appréhender.

Voici donc une série de ressources que j’ai retenu pour le développement en Python et l’utilisation de Subversion:

Vous en voulez plus ? allez voir l’article Cours pour apprendre Python sur biologeek.org pour plus de liens.

  • les outils ensuite :
    • Eclipse est un IDE écrit en Java et initialement prévu pour ce langage, mais qui à l’aide de nombreux plugins s’adaptent à d’autres langages. Essayez-le et appréciez;
    • Pydev est le plugin pour développer en Python avec Eclipse, et une doc;
    • Subclipse quant à lui est le plugin pour travailler avec Subversion;
    • la société Edgewall met à disposition un très bon outil pour gérer un projet basé sur Subversion, c’est Trac[6], mais elle propose également une Python Sidebar pour avoir dans votre navigateur favori la référence Python directement accessible.

J’ai parcouru ensuite le web de tutoriel en tutoriel pour réussir à installer de façon satisfaisante Subversion + Trac sur ma Debian mais ceux que j’ai trouvé marchaient plus ou moins bien[7] , jusqu’à celui-ci Installer et configurer Apache2, Trac et Subversion sur Ubuntu sur Prendre Un Café. Il concerne Ubuntu mais marche tout aussi bien pour Debian testing/etch.

update : je viens à peine de finir ce billet que je tombe sur un tuto Eclipse pour le développement web, PHP et Python sous Dapper. Pour Debian, j’ai eu des problèmes pour installer un plugin (Pydev il me semble) parce que la dernière version proposée était la 3.1 et qu’il me fallait la 3.2.

Notes

[1] mais j’aurais également pu choisir Ruby pour cette même raison :)

[2] dont Pourquoi programmer en Python ? sur biologeek.org

[3] dont Xen, ou tout au moins son interface d’administration, n’est pas le moindre

[4] voir une liste

[5] apt-get install diveintopython

[6] outil proposant un Wiki, un browser du code, un gestionnaire de tickets,… Il est utilisé par Dotclear notamment

[7] je parle de ceux de destination-linux.org, PrO²jects, xhtml.net, ou le site de Trac. Ils sont peut-être corrects mais je les ai trouvés moins directs que celui de Prendre Un Café…