J-Mad

Jun 272011
 

Cela faisait quelques temps que je n’avais plus mis les pieds dans une FNAC, pour le bonheur de mon portefeuille. Mais là, après midi shopping (et starbuck coffeeeee ouaiissss) oblige, il n’était pas imaginable de ne pas passer quelques minutes à la FNAC. Et pendant que ma chérie et ma fille exploraient le rayon livre pour bébé moi je me pâmais dans le rayon SF / Fantasy.

Et forcément j’en suis reparti avec deux bouquins

  • Bloody Marie de Jacques MARTEL
  • une nouvelle traduction du vagabond de l’espace d’Heinlein (je l’ai déjà lu quand j’étais jeune et innocent, mais dans une vieille trad et je ne l’avais pas dans ma collection d’Heinlein)

Et pourtant j’ai lutté pour ne pas craquer et ne pas acheter Bloody Marie (un bouquin à 19 euros).

Mais plusieurs raisons ont fait que j’étais obligé de l’acheter :

  • le titre : le bloody mary étant mon cocktail préféré avec le martini dry.
  • La couverture juste splendide
  • l’éditeur blackbooks édition que je connais pour leur jdr (et leur défunt magazine) et que j’aime beaucoup
  • le fait que ça soit un bouquin de pirates, qui plus est pirates de l’espace et que je sois complètement fan (un de mes plus vieux souvenirs de lecture c’est Robots d’Asimov et juste après c’est l’île au trésor que j’ai du lire 2 ou 3 fois)
  • le nom de la collection A dé couvert dont le jeu de mot m’a fait rire.

Je l’ai donc acheté.

Et dévoré. (Vu que je l’ai fini ce matin avant de partir au boulot)

Et il y a pas à dire, c’est du grand roman de pirates. Avec les références obligées mais avouées et assumés à l’île au trésor (le bâtiment de Bloody Marie s’appelle le Long John et les personnages savent que cela vient du bouquin de Stevenson).

Avec des personnages haut en couleur, plein de colère ou de fougue. Avec des insultes, des combats,de la douleur, du sang et cette fuite en avant éperdue qui constitue la vie des pirates. Avec des trahisons, des pieds tendres et de vieux loups de mer.

Mais il ne faut pas croire qu’on est dans du roman de pirate de gare. L’univers est très fouillé, les personnages pas forcément tous aussi manichéens qu’on pourrait le penser et il n’y a pas à dire l’auteur a potassé son histoire de la piraterie avant d’écrire.

Le style d’écriture quand à lui est très bien trouvé, un vieux loups de mer qui s’assoit dans un rade miteux et qui se met à raconter une histoire pour qu’on lui paie à boire, chaque chapitre de l’histoire étant entrecoupé par une petite description du conteur qui demande à ce que son auditoire lui paie à boire ou y va de son petit commentaire.

En fait, si vous aimez les pirates, n’hésitez juste pas, vous allez adorer.

…..

‘Nous étions quinze sur le coffre à l’homme mort.’
‘ Yo-ho-ho! Et une bouteille de rhum!’
…..

Jun 222011
 

J’utilise depuis de nombreuses années thunderbird pour gérer mes mails. Je gère un volume de mail assez important qui viennent de sources aussi diverses que variées. Pour situer un peu, je pense avoir facilement entre 300 et 400 dossiers de mails. Parce qu’entre les clients, les prospects, les contacts réseaux, les fournisseurs boulot ou perso (ben oui free ou amazon c’est mes fournisseurs persos), la famille, les amis, les mailings… Ca en fait rapidement des petits dossiers mails…

Avec un tel volume de mail, même en classant avec un système de profondeur 3 ou 4, il m’est rapidement devenu impossible d’utiliser la vue tout les dossiers pour aller d’un dossier à un autre.

J’avais donc trouvé un stratagème. Laisser des mails non lus dans les répertoire que je voulais avoir accessible rapidement. Et utiliser la vue dossiers non lus. Au lieu d’avoir 400 dossiers arborescent je me retrouvais donc avec une petite centaine de dossier. Mais difficile après de savoir si un dossier contenait des mails non lus ayant déjà étaient lu mais restant en non lus parce que non traités ou des mails non lus parce que vraiment non lus. Surtout que mon thunderbird aimant me faire des farces, la petite étoile jaune qui normalement apparaît en haut à gauche pour indiquer de nouveaux mails disparaissait parfois mystérieusement.

Si on rajoute à cela un système de filtre très poussés qui me classait quasiment tout mes mails à peine reçu..

Autant dire que c’est il y a quelques semaines devenus le bordel. Avec des mails non lus et non traités pendant 4 ou 5 jours parce que tout simplement, je ne les avais pas vu passé.

Il fallait donc que je change de méthode d’organisation au niveau de mon classement des emails.

Et c’est ce que j’ai pu faire en utilisant une extension géniale, que j’avais installé depuis plusieurs mois mais que je n’utilisais pas à son plein potentiel, Quicker Filer

Quicker Filer  permet deux choses. La première c’est de pouvoir avoir un outil de recherche un peu plus sympa que celui fourni de base.

La seconde ajoute des raccourcis clavier qui changent juste tout :
aller à un dossier
déplacer les emails sélectionné dans un dossier
instant move
instant copy.

Les deux premiers raccourcis quand vous les utilisez vous ouvre une popup qui vous permet de choisir le dossier où vous voulez aller (ou celui où vous voulez déplacer votre email). Et là ou c’est magique c’est que ca fonctionne en auto complétion. Tapez un bout du nom du dossier et il vous propose juste les dossiers qui valident les caractères que vous avez tapé.

Quand aux deux derniers raccourcis, ils vous permettent de copier ou déplacer les emails dans deux dossiers préconfigurés.

Cette petite extension m’a permis de définir un noveau worflow de gestion d’email qui depuis 3 semaines maintenant fait totalement ses preuves.

En fait c’est tout simple, j’ai désactivé complètement tout mes filtres d’emails. Tout mes emails arrivent donc dans les inbox de chacun de mes comptes.

A ce niveau là, je les traite de deux façon :
Soit Je peux les traiter au moment ou je les lis. Je le fais et je les déplace tout de suite, manuellement (avec le raccourcis déplacer vers de  Quicker Filer) dans le répertoires qui va bien (donc soit le dossier du client, soit le dossier Fnac si c’est un mailing Fnac, etc etc)
Soit je ne peux pas et j’utilise l’instant move pour les déplacer dans un  dossier A traiter. Qui contient donc tout mes mails à traiter (et une fois que je les aurais traiter, un coup de déplacer et ils sont rangés).

Et comme Quicker Filer me permet avec le raccourcis aller à, d’aller super rapidement dans tout les dossiers dont je connais une partie du nom, je n’ai plus besoin d’imaginer des solutions bâtardes pour avoir une sous partie de mes dossiers en accès rapide.

Ce qui est rigolo, c’est que pendant de très nombreuses années, j’ai été un défenseur absolu de l’utilisation de filtres de classement automatique. Mais en fait, je me rend compte que lorsque l’on a un nombre important de dossier, les filtres ça devient contre productif…. (en tout cas pour moi)

Et vous, comment vous gérer vos emails et le traitement de ceux-ci ?

Jun 212011
 

Chose promise, chose du, voici donc ma petite bafouille sur ce joli petit bouquin. Que dire. C’est un bouquin très agréable à lire, qui se laisse découvrir, sans avoir à se forcer.

Et comme il est plutôt court (ce qui peut générer le vieux réflexe du ‘quoi un bouquin si peu épais pour 12 euros, il est doré à l’or fin ou quoi ?’), il se lit même relativement vite. Quelques heures et c’est finit. D’ailleurs je vous conseille de ne pas le lire d’une traite, mais de le lire en plusieurs petites séquences, histoire de vous laisser le temps d’y penser.

Mais peut-être faudrait-il que je parle un peu du fond, au lieu de pinailler sur le nombre de page. Donc, le fond. Alors déjà, attention. Si vous pensez que ce bouquin est un mémento CSS, un précis, sorte d’antisèche géante du CSS3, alors surtout passez votre chemin. Parce que vous serez déçus. Et pas qu’un peu.

Non, ce bouquin c’est plutôt un bouquin d’initiation, mieux de vulgarisation. Mais dans le sens le plus noble du terme. Et si comme moi vous ne connaissez de CSS3 que deux choses :

  • les border radius ou border shadow
  • que ça à l’air trop bien, top moumoute qui roxe des ours

Alors ce bouquin est fait pour vous. Parce qu’il vous prendra par la main, vous ferra découvrir quelques (un bon nombre quand même) des propriétés CSS3, vous expliquera combien bien les utiliser pour maximiser le nombre de navigateur qui pourront les comprendre et vous donnera des conseils sympa.

Pour presque finir, je mentionnerais un dernier point fort du bouquin. Les notes de bas de page. Qui vous donneront une tripoté de liens pour approfondir vos réflexions, vos connaissances. A elles seules les notes de bas de page double la valeur de ce bouquin …

Donc, en conclusion, je ne regrette vraiment pas du tout mon achat. Au contraire même. Et si c’était à refaire, je ferrais encore chauffer ma CB, les yeux fermés. Et je ne peux que vous le conseiller, chaudement. (Mais encore une fois, attention ce livre n’est pas pour toutes les mains. Si vous êtes déjà familliés des CSS3, vous allez vous ennuyer à le lire)

Jun 042011
 

Voila, comme dit dans le billet précédent, je vais donc faire deux billets de django app de mai, ça m’apprendra à être en retard.

Donc la deuxième django app du mois sera django-urlcrypt. Une petite précision avant d’aller plus loin, c’est une des toutes premières fois où je vais parler d’une app sans avoir fait plus que la tester sur un projet de test, sans avoir d’idée précise de où ni comment je vais l’utiliser ‘en vrai’.

1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?

Alors on le trouve soit sur sa page pypi soit sur sa page github.

Pour l’installation là encore, les trois moyens habituels :

  • par easy_install
  • pip
  • un petit git clone des familles

La doc, là c’est comme l’app précédente, elle est limitée au contenu de la page de pypi ou au fichier Readme.rst.

Bon alors c’est vrai que la doc est suffisante pour comprendre comment l’app marche, mais sur une app qui est aussi ‘sensible’, une bonne lecture du code ne fait pas de mal (c’est d’ailleurs ce que j’ai fait quand j’ai commencé à faire joujou avec).

2- Mais au fait, à quoi ça sert ?

En fait l’app a deux utilité même si une seule est vraiment mise en avant sur la doc de l’app. La première c’est de fournir aux utilisateurs une url ressemblant à ça :  http://www.mydomain.com/r/TkNJBkNFAghDWkdFGPUAQEfcDUJfEBIREgEUFl1BQ18IQkdDUUcPSh4ADAYAWhYKHh8KHBsHEw qui les authentifiera automatiquement et qui en plus les redirigera vers l’url que vous aurez voulu.  (genre le renvoyer sur /profil ou /inbox)

L’autre fonctionnalité moins mise en avant, c’est que l’on peut encoder des infos dans l’url, dans un message qui se trouve être un dictionnaire. Alors honnêtement je ne sais pas trop encore à quoi cela peut servir, mais je trouve l’idée coolos.

3- Comment ça marche ?

C’est tout simple.

Dans une vue, on peut utiliser la fonction urlcrypt.generate_login_token qui prend en param l’utilisateur et l’url de redirect et qui génére le token qui encode le tout. Ensuite il suffit de créer l’url complète qui va bien.

Dans un template, on utilise le template tags encoded_url qui prend comme argument un user et une url de redirect.

Enfin on peut utiliser les fonctions urlcrypt.encode_token et urlcrypt.decode_token
qui permettront de crypter / décrypter un message contenu dans un dictionnaire (voir l’aide pour plus d’infos).

Au niveau des configurations possibles, on peut configurer :

  • à combien de requêtes à droit un visiteur
  • l’url de fallblack si l’authentification contenu dans l’url echoue
  • un path vers une clé privée RSA qui permettra d’ajouter un cryptage RSA lorsque l’on génère le token.  L’utilisation de ce paramètre est très très fortement recommandé (pour rappel pour généré le clé : ssh-keygen -t rsa -f )

4- conclusion

Le mécanisme de login par url cryptée me séduit beaucoup. Mais d’un autre coté je me pose des questions au niveau sécurité. Parce que l’url, l’utilisateur il va devoir la stocker. Et qu’autant mémoriser un mot de passe, on peut le faire, autant apprendre une url…, qu’en pensez vous ?

La question de la durée de vie de l’url me semble aussi importante. J’aurais aimé avoir dans l’app un système qui permette de rendre des url obsolètes parce que trop vieilles..

Enfin concernant la deuxième méthode d’utilisation, à savoir encoder des messages dans l’url, je trouve l’idée ravissante, j’ai envie de l’utiliser mais je ne sais pas à quoi elle pourrait bien me servir. A réfléchir donc.

 

UPDATE:

on vient de me pointer quelques problèmes qui existent avec cette app (discussion visible ici) Apparement un des problèmes a été réglé en utilisant RSA (mais son utilisation n’est toujours pas obligatoire) mais il me semble que le hash du password est toujours utilisé dans certain cas. Ce qui n’est vraiment pas une bonne idée. En l’état l’app n’est donc pas forcément à utiliser, mais plutôt à étudier pour imaginer son propre système.

 

 Posted by at 17:26

Django-countries ,l’app garantie sans cowboy ni rodéo. djangoApp de mai 1 sur 2

 La Django-app du mois  Comments Off on Django-countries ,l’app garantie sans cowboy ni rodéo. djangoApp de mai 1 sur 2
Jun 042011
 

Il va falloir que je me surveille .. parce qu’encore une fois je publie ma django app du mois un peu en retard. Pas grand chose, juste 4 jours.. Mais ça commence comme ça et après on finit par ne plus tenir de rythme du tout.

Du coup, pour marquer, le coup, je publierais deux django app du mois de mai, même si je les publie en juin.

Et pour commencer, django-countries. C’est d’ailleurs assez rigolo parce que je parlais il y a peu de moyen de gérer les pays, avec une liste de choix existantes, etc.. et op, je tombe sur django-countries.

1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?

Vous trouverez django-countries soit sur sa page pypi soit sur sa page bitbucket.

Pour l’installation, vous avez les trois moyens désormais classique :

  • un easy_install
  • un pip install
  • un bon vieux hg clone

La doc elle se limite à :

  • la page pypi
  • le readme du repository

Sachant que dans les deux cas, le contenu est le même. Mais vu la simplicité de l’app, cela suffit amplement.

2- Mais au fait, à quoi ça sert ?

L’app rajoute tout simplement un nouveau type de field, le CountryField. Ce CountryField vous permettra de gérer les codes à 2 lettres internationaux qui modélisent les pays mais aussi d’afficher un petit gif du drapeau qui va bien.

Et oui, comme dans les vrais sites et tout quoi.

3- Comment ça marche ?

C’est donc vraiment tout couillon. Un field CountryField. Et des instances de fiels qui ont les données membre :

  • code (le code à deux lettres)
  • name (le vrai nom du pays)
  • flag (le chemin vers le drapeau)

Rien de bien compliqué.

Zodiac

 Critiques de bouquins  Comments Off on Zodiac
May 142011
 

J’ai vraiment découvert Neal Stephenson assez récemment, en lisant Le Samouraï virtuel que ma chérie m’a offert il y a quelques années, pour mon anniversaire. Il faudra d’ailleurs que je pense à écrire un petit truc sur ce bouquin là.

j’avais suffisamment aimé Le Samouraï virtuel pour avoir envie de découvrir un peu plus cet auteur.  Je voulais essayer le cycle du Cryptonomicon. Seulement manque de chance, quand j’avais voulu les commander, Amazon était en rupture. Du coup, je me suis tourné vers Zodiac, avec je dois le dire quelques à priori.

Zodiac, donc.
Le livre raconte l’histoire de Sangamon Taylor, un écologiste activiste, très activiste même, chimiste de talent, presque de génie. Sangamon sévit dans la baie de Boston qui est devenue une vraie décharge. Enfin disons qu’une décharge fait presque réserve naturelle comparée à la baie de Boston. Sangamon est d’après l’auteur lui même, un véritable connard. Cynique, blasé de tout, tombeur de femme, macho, drogué au péroxyde d’azote, parano, un vrai anti-héros. A vélo, en voiture, ou en zodiac, toujours habillé d’un vieux jeans crasseux, il fustige les pollueurs, bouchant des canalisations avec des paniers à salade, utilisant les médias, tandis que les ennuis lui tombent dessus, par bennes entières. Enfin, il faut bien dire que notre Macgyver trash les cherchent à se dresser contre l’état, la mafia, une secte heavy métal et les grands trusts industriels.
Vrai polar, plein d’humour noir, de cynisme, Zodiac est prenant, et même plus que cela. Pourtant au départ, la partie réalisme scientifique me faisait un peu peur, je l’ai dit au départ j’ai acheté Zodiac avec quelques à priori (suffisamment pour l’acheter que 2 ou 3 commandes amazon après avoir avoir découvert le bouquin). J’avais déjà eu des expériences légèrement malheureuses avec des livres ‘Hard Science’ qui en devenaient ennuyeux d’être trop doctes et précis. Là, ce n’est pas le cas. La chimie est présente à chaque page, vu que l’énigme principale que Sangamon devra résoudre tourne autour du PCB (pour ceux qui ne le sauraient pas le PCB c’est l’acronyme de PolyChloro-Biphényle et je met le liens wikipédia, vous n’aurez pas à le chercher comme ça 🙂 ), mais on l’oublie bien vite pour se concentrer sur l’intrique et les aventures du ‘pauvre’ Sangamon.
En fait, je conseillerais Zodiac à tout ceux qui aiment les polar caustiques et noirs, les anti-héros horripilants et en même temps très attachant.
Sans parler que comme le dit amazon (pour une fois je suis d’accord avec eux), Zodiac est au final un bon bouquin pour débuter Stephenson.

May 082011
 

Un des nombreux (trop nombreux vu mes relevés bancaires) livre que j’ai acheté lors de mes crises de boulimie FNAC-iesque.
C’est le premier roman traduit en français de l’auteur (James Lovegrove), même si apparemment si j’en crois la quatrième de couv, l’auteur à une jolie bibliographie derrière lui. (D’ailleurs aujourd’hui, il y a eu d’autre traduction du monsieur et je vous encourage à les lire également).

Et je trouve que la périphrase lui va bien.
Mais c’est au départ, surtout, un coup de foudre pour la couverture. Quand je l’ai vu, j’ai su que j’allais l’acheter, sans même savoir ce que je trouverais entre ses pages ..

Et de quoi parle Days ? Pour plagier la 4ème de couv, et utiliser des termes ronflants qui font intelligent, c’est : ‘une satire piquante de la société’.

C’est enf ait l’histoire du premier (et du plus beau) gigastore au monde. Gigastore anglais, bien entendu, en plein cœur de Londres. Gigastore de 7 étages , de, à l’origine, 777 rayons et géré par les 7 fils du défunt Septimus qui créa Days.

Mais Days c’est aussi l’histoire des sept fils retranchés dans leur tour d’ivoire, celle de Franck le fantôme sorte de vigile qui prend les voleurs à la tire sur le fait (et à le droit d’user de son arme si le voleur essaie de s’échapper), l’histoire d’un couple de classes moyennes qui découvrent le Gigastore après s’être privés pendant des années. C’est également l’histoire de la guerre que se livre le rayon informatique et le rayon livre…

Alors effectivement il n’y a pas de vaisseaux spatiaux, pas de pirates informatiques, pas de grands héros, de grandes causes ni de discours vibrants.

Ce n’est en fait que le simple récit de quelques vies et d’une société qui déraille clairement, dont les symptômes de délitement sont mis en exergue par le gigastore.

Mais c’est un livre plus que plaisant à lire, attachant, et que l’on dévore avec plaisir.

(Et cela fait un peu peur de se rendre compte, lorsque l’on se penche plus de 30 secondes sur notre société actuelle, qu’en fait, on en est pas si loin…)

Admin django, deux petits tips pour les change_list

 Django  Comments Off on Admin django, deux petits tips pour les change_list
May 032011
 

L’admin django est vraiment un bonheur pour la productivité. On peut faire plein de choses en moins de temps qu’il n’en faut pour écrire le descriptif des choses en questions.

Après avoir passé quelques heures à farfouiller dans la doc et à faire quelques tests, je me suis dit qu’il n’y avait pas de raisons que je garde mes découvertes pour moi.

Voici donc un premier billet pour partager les plus utiles avec vous.

list_display, comment changer l’entête d’une colonne fonction.

On sait tous comment configurer les colonnes que l’on va afficher dans la vue en liste des content_type. En utilisant list_display. Mais est ce que cela ne vous ai jamais arrivé de vouloir afficher le résultat d’une fonction ?

Aucun problème, il suffit de mettre le nom de la fonction dans list_display. Oui c’est vrai, sauf que.. sauf que l’entête de colonne c’est le nom de la fonction.. Et ça, ce n’est pas très joli.

Sauf que, sauf que django pense à tout. Pour pouvoir afficher un intitulé de colonne sympa au lieu du nom de la fonction, il suffit de rajouter à votre fonction un attribut short_description qui contiendra l’intitulé voulu.

Un petit exemple :

class TestAdmin (admin.ModelAdmin):
    list_display = ('name', 'foo', 'bar', 'super_function')


class Test (model.Models):
    …
    def super_function(self):
        ….
   super_function.short_description =u'mon intitulé de colonne qui tue'

list_display, comment utiliser du HTML dans les colonnes .

De même, il se peut que votre super fonction qui tue, renvoie non pas une valeur simple (genre un nombre) mais du code html (que vous aurez bien entendu généré avec un template). Sauf que là, oh rage, oh désespoir. Vous avez beau faire tout les mark_safe du monde, rien n’y fait. Votre code est escaped…

Comment modifier ça ? La encore, ça passe par un attribut de fonction, allow_tags qu’il vous suffira de mettre à True. Et miracle, ça fonctionne.

Le TOP Logiciel Libre Wikio du mois d’avril

 De tout et de rien  Comments Off on Le TOP Logiciel Libre Wikio du mois d’avril
May 032011
 

J’avais écrit un long billet plein d’humour et de peps. Un long billet qui parlait des blogueurs qui attendaient avec impatience, chaque mois, la sortie du classement Wikio, véritable machine à faire la pluie et le beau temps chez les blogueurs influents.

Mon billet était tellement cool que je faisais un parallèle avec Koh-Lanta, imaginant le dépit des ratés pauvres blogueurs qui se font éjectés du classement, racontant leur désespoir, rajoutant pour le plaisir un petit effet spécial même pas crédible mais qui serait trop cool : une voix grave sortant de leur haut parleur pour dire : Les internautes ont choisi de vous éliminer; leur décision est sans appel .

 

Un vrai petit bijoux d’humour et de bonheur quoi. Et pour la première fois depuis que je tiens ce blog, j’ai tout écrit directement dans l’interface wordpress.

Et bien entendu au moment de publier, et ben wordpress a merdé. Et j’ai perdu mon si brillant billet.

 

Alors là, pardon mais bon, je n’ai plus le coeur à écrire à nouveau un billet. Oui je sais, c’est con, mais je suis fatigué et j’ai aussi un peu de taff, du vrai, qui m’attends (Et 2 polargeek à écrire, parce que les gens d’en haut ils ont dit que je devais en écrire deux comme punition).

 

Donc ben tant pis.

 

Vous aurez juste droit au classement wikio. Et pour mon billet d’anthologie, il faudra repasser. (vos chemises).

 

1 Framablog
2 Tux-planet
3 WebDevOnlinux
4 Philippe SCOFFONI
5 Le blog de NicoLargo
6 Toolinux
7 Ubuntu et Clapico
8 Le Weblog de Frederic Bezies
9 ®om’s blog
10 Linux Manua
11 WordPress je thème !
12 Florent Gallaire’s Blog
13 ubuntu-party.org
14 L’esprit libre
15 Respawner’s Blog
16 Colibri
17 Blog de Devil505
18 UbunBloX
19 Le Mad Blog
20 Génération Linux

Classement réalisé par Wikio

 Posted by at 22:20
Apr 302011
 

J’avais plein d’app possible à présenter pour ce billet du mois d’avril. Mais en réfléchissant, je me suis dit que la meilleure app possible à présenter ce moi-si c’était celle qui a été libéré pendant les DjangoCongs à savoir Django-extended-choices.

Et en plus, ce qui est bien, c’est que comme c’est une toute petite app, ça ne sera pas fatiguant du tout d’écrire ce billet.

1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?

Là c’est tout simple, on la trouve sur github. Et uniquement sur github. Quand à la doc elle tient toute entière dans le fichier Readme.rst qui se trouve lui aussi sur github. (et vous la trouverez aussi en docstring de l’unique classe que contient l’app).

Pour l’installation il suffit ou plutôt il faut forcément, cloner le repo github.

2- Mais au fait, à quoi ça sert ?

A gérer d’une manière propre les Choices que l’on peut avoir à mettre en place dans les fields Django.  Parce qu’il est vrai que la méthode normale, à base de constantes que l’on ne sait pas trop où déclarer et de tuples de tuples, me si elle fonctionne bien, n’est pas super élégante.

L’app permet donc d’encapsuler tout ça dans une belle petite classe

3- Comment ça marche ?

Bon la je vais, sans aucun remords, faire un petit copié/collé de la doc. Parce que l’explication de comment ça marche est très bien faite.

Donc en fait cela marche comme ça :

from extended_choices import Choices

STATES = Choices(
    ('ONLINE',  1, 'Online'),
    ('DRAFT',   2, 'Draft'),
    ('OFFLINE', 3, 'Offline'),
)

class ContentModel(models.Model):
    title      = models.CharField(max_length=255)
    content    = models.TextField()
    state      = models.PositiveSmallIntegerField(choices=STATES.CHOICES, default=STATES.DRAFT)
    related_to = models.ManyToManyField('self', through="ContentToContent", symmetrical=False, blank=True, null=True)

    def __unicode__(self):
        return u'Content "%s" (state=%s)' % (self.title, STATES.CHOICES_DICT[self.state])

    def get_related_content(self):
        return self.related_to.select_related().filter(state=STATES.ONLINE)

plutôt clair non ?

Et cela remplace ce code là :

STATE_ONLINE  = 1
STATE_DRAFT   = 2
STATE_OFFLINE = 3

STATE_CHOICES = (
    (STATE_ONLINE,  'Online'),
    (STATE_DRAFT,   'Draft'),
    (STATE_OFFLINE, 'Offline'),
)

STATE_DICT = dict(STATE_CHOICES)

class ContentModel(models.Model):
    title      = models.CharField(max_length=255)
    content    = models.TextField()
    state      = models.PositiveSmallIntegerField(choices=STATE_CHOICES, default=STATE_DRAFT)
    related_to = models.ManyToManyField('self', through="ContentToContent", symmetrical=False, blank=True, null=True)

    def __unicode__(self):
        return u'Content "%s" (state=%s)' % (self.title, STATE_DICT[self.state])

    def get_related_content(self):
        return self.related_to.select_related().filter(state=STATE_ONLINE)

Personnellement, je trouve que la notation pointée  STATES.CHOICES ou  STATES.DRAFT est bien bien plus clair que la notation précédente.

Conclusion

Une petite app qui ne fait qu’une chose mais qui le fait bien. A utiliser de partout donc. (Il ne manque juste que des tests ..:) ) .

Pourvu que votre projet ne marche pas…

 De tout et de rien  Comments Off on Pourvu que votre projet ne marche pas…
Apr 252011
 

Comme promis, le deuxième petit billet en mode mauvaise foi de la journée.

Ce billet est directement inspiré d’une courte discussion que j’ai eu sur irc avec monsieur magopian, jeudi ou vendredi matin.

Imaginons donc que malgré mon premier billet qui vous explique pourquoi il ne faut surtout pas tenter de concrétiser vos idées, vous l’ayez fait quand même, fou que vous êtes.

Vous avez donc passé des heures, des jours, de nuits à travailler sur votre concept. A passer d’une vague idée, de graphiques jetés sur une feuille, de notes gribouillées sur un moleskine à … quelque chose de fini. Que ce soit un jeu vidéo, un site web, un jeu de plateau ou de carte, un roman, un livre des règles de Jdr, des morceaux de musiques ou un court métrage, cela ne change rien.

Vous en avez donc chié, un maximum. Vidangez des litres de café, oubliez de vous doucher plus souvent qu’à votre tour, pris tout vos jours de vacances pour faire avancer votre idée folle.

Et voilà, c’est bon.

Vous avez votre première version. Et vous êtes prêt à voir si votre bébé va trouver son public… Je n’aime décidément pas le mot produit, qui pour moi à toujours une connotation bassement ‘commerciale’. Après tout ce n’est pas qu’un produit, c’est aussi et surtout, votre bébé, un rêve qui se matérialise.

Et bien, là, à ce moment, je vous le dit, priez pour que votre projet se casse la gueule. Croisez les doigts pour qu’il ne génère que dédain et désintérêt.

Pourquoi ?

Voilà pourquoi.

Si votre projet fonctionne, cela veut dire que des gens vont l’utiliser, vont l’aimer. Cela veut dire que va naître lentement autour de lui une communauté d’utilisateur ou de gens qui l’apprécie (si on parle de roman/court métrage/musique). Des gens qui vont avoir des envies, des demandes. Qui vont vouloir que vous alliez plus loin. Que vous vous remettiez au travail, pour une V2, pour une suite, pour d’autres morceaux.

Vous pensez que vous alliez pouvoir dormir à nouveau ? Que NENNI !!

Et puis vous même vous allez vous prendre au jeu. Vous allez vous sentir obligé de faire connaître votre bébé. D’en parler. De faire, oh mon dieu non, du marketing autour de lui. Pour que de plus en plus de gens le connaissent, l’utilisent. Et puis aussi trouver des moyens de le monétiser, parce que c’est bien beau de travailler pour les beaux yeux de la reconnaissance des gens, mais vous aimeriez que bon, votre bébé finance au moins le café que vous dépenser à le maintenir à bout de bras.

Et tout cela va vous prendre encore plus de temps.

Et va par la même rendre encore plus difficile les améliorations que vous aimeriez faire, les suites… Sans même parler de celles que vos utilisateurs voudraient que vous fassiez. Et sans que vous vous en rendiez compte, vos enfants vont grandir, vos week-end vont défiler, vous allez boire de plus en plus de café, oublier de plus en plus de douches …

Vous en viendrez même, à le détester ce si beau projet, ce bébé qui vous prend tout votre temps, vous bouffe votre vie…

Alors que si, tout gentiment, votre projet avait été un four, un horrible bide hué par la critique. Tout aurait été plus simple.

Vous auriez pu retourner à votre petite vie tranquille, diminuez votre consommation de café, vous douchez à nouveau tout les jours.

Il vous aurait suffit de parler des concepteurs géniaux incompris de leur vivant, parler d’un problème de timing, du fait que le monde n’était pas encore prêt, le marché pas mur. Que c’est les gens qui sont des cons.

Et en plus, vous auriez été heureux, ayant pu gouter à la satisfaction suprême d’avoir accompli quelque chose.

Alors oui, je vous le dit, pourvu que votre projet soit un bide …:)

 

Comme promis, le deuxième petit billet en mode mauvaise foi de la journée.

Ce billet est directement inspiré d’une courte discussion que j’ai eu sur irc avec monsieur magopian, jeudi ou vendredi matin.

 

Imaginons donc que malgré mon premier billet qui vous explique pourquoi il ne faut surtout pas tenter de concrétiser vos idées, vous l’ayez fait quand même, fou que vous êtes.

 

Vous avez donc passé des heures, des jours, de nuits à travailler sur votre concept. A passer d’une vague idée, de graphiques jetés sur une feuille, de notes gribouillées sur un moleskine à … quelque chose de fini. Que ce soit un jeu vidéo, un site web, un jeu de plateau ou de carte, un roman, un livre des règles de Jdr, des morceaux de musiques ou un court métrage, cela ne change rien.

 

Vous en avez donc chié, un maximum. Vidangez des litres de café, oubliez de vous douchez plus souvent qu’à votre tour, pris tout vos jours de vacances pour faire avancer votre idée folle.

 

Et voilà, c’est bon.

 

Vous avez votre première version. Et vous êtes prêt à voir si votre bébé va trouver son public… Je n’aime décidément pas le mot produit, qui pour moi à toujours une connotation bassement ‘commerciale’. Après tout ce n’est pas qu’un produit, c’est aussi et surtout, votre bébé, un rêve qui se matérialise.

 

Et bien, là, à ce moment, je vous le dit, priez pour que votre projet se casse la gueule. Croisez les doigts pour qu’il ne génère que dédain et désintérêt.

 

Pourquoi ?

 

Voilà pourquoi.

 

Si votre projet fonctionne, cela veut dire que des gens vont l’utiliser, vont l’aimer. Cela veut dire que va naître lentement autour de lui une communauté d’utilisateur ou de gens qui l’apprécie (si on parle de roman/court métrage/musique). Des gens qui vont avoir des envies, des demandes. Qui vont vouloir que vous alliez plus loin. Que vous vous remettiez au travail, pour une V2, pour une suite, pour d’autres morceaux.

 

Vous pensez que vous alliez pouvoir dormir à nouveau ? Que NENNI !!

 

Et puis vous même vous allez vous prendre au jeu. Vous allez vous sentir obligé de faire connaître votre bébé. D’en parler. De faire, oh mon dieu non, du marketing autour de lui. Pour que de plus en plus de gens le connaissent, l’utilisent. Et puis aussi trouver des moyens de le monétiser, parce que c’est bien beau de travailler pour les beaux yeux de la reconnaissance des gens, mais vous aimeriez que bon, votre bébé finance au moins le café que vous dépenser à le maintenir à bout de bras.

 

Et tout cela va vous prendre encore plus de temps.

 

Et va par la même rendre encore plus difficile les améliorations que vous aimeriez faire, les suites… Sans même parler de celles que vos utilisateurs voudraient que vous fassiez. Et sans que vous vous en rendiez compte, vos enfants vont grandir, vos week-end vont défiler, vous allez boire de plus en plus de café, oublier de plus en plus de douches …

 

Vous en viendrez même, à le détester ce si beau projet, ce bébé qui vous prend tout votre temps, vous bouffe votre vie…

 

Alors que si, tout gentiment, votre projet avait été un four, un horrible bide hué par la critique. Tout aurait été plus simple.

 

Vous auriez pu retourner à votre petite vie tranquille, diminuez votre consommation de café, vous douchez à nouveau tout les jours.

 

Il vous aurait suffit de parler des concepteurs géniaux incompris de leur vivant, parler d’un problème de timing, du fait que le monde n’était pas encore prêt, le marché pas mur. Que c’est les gens qui sont des cons.

Et en plus, vous auriez été heureux, ayant pu gouter à la satisfaction suprême d’avoir accompli quelque chose.

 

Alors oui, je vous le dit, pourvu que votre projet soit un bide …:)

Pourquoi il ne faut jamais mettre en pratique ses idées..

 De tout et de rien  Comments Off on Pourquoi il ne faut jamais mettre en pratique ses idées..
Apr 252011
 

En ce beau (et chaud) lundi de Pâques, j’ai eu envie d’écrire quelques billets (surement deux, si j’ai le courage) ouvertement de mauvaise foi. Voici le premier, où je vais tenter d’expliquer pourquoi c’est bien de ne pas mettre en pratique ses idées.

On a tous des idées, plus ou moins souvent, plus ou moins réalistes, mais on en a tous. Que ça soit une par jour/heure ou mois, parfois la lumière se fait dans notre esprit et on est sur d’avoir un super concept, inventer un truc révolutionnaire.

On a tous pensé à facebook avant facebook, groupon avant groupon, la voiture électrique ou à cassoulet avant qu’elles soient inventées.

Mais on les garde dans nos têtes bien au chaud. Et c’est bien mieux comme cela ?

Pourquoi ? Parce que de toute façon on a pas le temps, on a le jardin à motoculter, un truc à finir pour le boulot, on est trop fatigué pour faire un truc, le dernier épisodes d’une série à voir (ou le dernier Harry Potter, important ça), une instance Rift à faire, etc etc …

Et puis les idées, le plus dur c’est de les avoir.

En plus, ce qui est important quand on garde ses idées au stade d’idées c’est que :

  • On peut refaire le monde entre potes, autour d’une bière, en discutant de ses fantastiques idées. ‘Tu imagines comme ça serait trop bien un site ou on échangerait que des petits messages de textes ? Ha ouais trop cool et on pourrait injecter des messages de pub parfois…’
  • Comme ca reste que des idées, dans le monde de notre tête, elles sont toujours parfaites.
  • On évite de devoir se confronter à la réalité et de devoir se dire que finalement notre idée était pas si bien que ça, pas si cool et que finalement on est donc pas forcément le grand esprit fécond et sans faille que l’on pense être.

Et si jamais, un jour quelqu’un qui aura eu la même idée que nous (pardon qui nous l’aura volé en lisant nos pensées ou en écoutant nos discussions nocturnes entre potee), ose, lui, la mettre en pratique, alors la c’est encore mieux.

Pourquoi ?

Parce qu’alors, on pourra :

  • S’enorgueillir de l’avoir eu avant lui et d’être donc carrément intelligent.
  • Disséquer tout ce qu’il fait en donnant son avis sur comment il aurait du faire pour que ça soit mieux..
  • Expliquer comment vous aurez fait vous, pour que ca soit une vraie réussite (ça marche encore mieux si au final la réalisation concrète foire complétement. Là vous pourrez dire ‘Si ça avait été moi, ça aurait fonctionné, c’est juste que c’est que des branlots).
  • Râler que vous n’avez pas assez de temps pour réaliser vos propres idées et que des gens moins talentueux que vous le font à votre place, râlez après votre boulot, votre femme et la société. Expliquez que vous gâchez votre talent, que vous êtes un incompris et que si vous pouviez avoir 100% de votre temps pour créer, alors on verrait ce qu’on verrait.

Donc oui, il vaut mieux ne jamais tenter de mettre en pratique ses idées. Et garder sa petite routine, son petit monde plein de rêves dans sa tête.

Et puis c’est la seule façon d’être sur que le pire du pire puisse vous arriver. Le pire du pire, dans votre petite vie tranquille et bien rodée étant, bien entendu que l’une de vos idées soit suffisamment bonne pour fonctionner…:)

Explication de texte :

Cette idée de billet m’est venu en repensant à une discussion pendant le dimanche après-midi à Djangocong. Je parlais de polargeek avec No et Exirel et je disais que j’avais pris la décision de ne plus rien écrire tant que je n’avais pas fini mon polar geek. En y repensant le soir même, je me suis rendu compte que ça m’arrangeais bien au final, vu que cela me permettait justement de garder mes autres histoires, que dans ma tête où forcément, elles sont parfaites. Et je ne parlerais pas (enfin si mais bon), de chaque retour de vacances, où je déprime pendant 2 jours parce que je n’ai ‘rien fait’ pendant mes vacances, trop occupés à bosser pour le boulot ou glander.