Django-extended-choices, l’app qui te donne le choix (mais pas la date)

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…

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..

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.

Changer de taff, quelques remarques

Un de mes cousins réfléchit à changer de job. Du coup, il se retrouve dans les problématiques connues par tout ceux qui cherchent un emploi :

  • le salaire et les rémunérations
  • le contrat de travail

Et allez savoir pourquoi, il m’a demandé conseil pour l’aider. Apparemment être gérant d’entreprise fait que dans la tête des gens, on s’y connait en contrat d’embauche. Tout comme être informaticien veut dire qu’on sait réparer des windows 98 et des install norton (oui ça sent le vécu …)

Mais mon cousin a de la chance, j’ai quelques notions à ce niveau là. Et en discutant avec lui, je me rend compte que lui non, moins que ce que je pensais. Du coup, comme là, j’ai un peu de temps, je vais essayer de lister 2 ou 3 points qui sont intéressant à connaître.

La clause d’exclusivité.

Mon cousin a été surpris par cette clause. C’est pourtant une clause assez courante aujourd’hui, surtout au niveau des cadres. Ca rassure l’employeur qui comme ça, espère que vous consacrerez tout votre temps pour lui. Par contre, autant il est légal de vous interdire d’avoir une activité rémunéré à coté, autant la clause d’exclusivité ne peut pas vous interdire les activités bénévoles (CA Poitiers, 30 novembre 2006 : pour un ambulancier qui exerçait, sur son temps libre, l’activité de pompier bénévole).
De même, sur du temps partiel, il ne peut avoir de clause d’exclusivité.
Enfin, il me semble d’ailleurs aussi que pour être légale une telle clause doit être indispensable à la protection des intérêts légitimes de l’entreprise et être justifiée par la nature de la tâche à accomplir et enfin doit être proportionnée au but recherché. Sinon c’est une atteinte à la liberté du travail. Le texte de référence ici étant celui de la COUR DE CASSATION, CHAMBRE SOCIALE. Formation de section / 11 juillet 2000. Arrêt n° 3323. Rejet / Pourvoi n° 98-41.486.

La clause de non concurrence.

Elle s’applique si vous quitter votre travail. Pour être légale il faut :

  • qu’elle soit proportionnée
  • qu’elle soit limitée dans le temps et géographiquement
  • que l’entreprise s’acquitte d’une compensation financière (Soc 12 juillet 2002)

La clause s’applique quelle que soit la manière dont vous ‘sortez’ de l’entreprise. Le mode de rupture du contrat ne change rien (Cass. Soc 31 mai 2006).

Rémunération.

Un dernier point, juste pour donner mon avis sur la rémunération. Souvent la seule chose sur lequel se focalise les chercheurs d’emploi, c’est le salaire brut. Et on est bien d’accord, c’est important.

Mais il faut réfléchir à sa rémunération dans son ensemble. Et ça comprends la mutuelle quand il y en a, les tickets restos (même si depuis les derniers changements législatif, ils sont carrément moins intéressant qu’avant), les avantages en nature comme abonnement téléphonique ou autre, les accords d’intéressement si il y en a, les modalités de versement de prime quand il y en a…, etc etc.

Parce qu’en plus, ces rémunérations supplémentaires sont bien souvent très attractives fiscalement.

Source :

https://secure.wikimedia.org/wikipedia/fr/wiki/Clause_de_non-concurrence
http://www.avis-droit-social.net/modele_clause_exclusivite.php
http://www.cadremploi.fr/edito/actu-et-conseils/vie-professionnelle/droit-du-travail/d/1/la-clause-dexclusivite-en-deux-versions.html

Djangocong 2.0, le bilan

4 jours après la fin des Cong, il est temps pour moi de faire le bilan de cette deuxième est, en tout cas à mon sens, excellente édition.

Les Congs en quelques chiffres :

  • 11 conférences le matin
  • 12 slots de barcamp l’après-midi
  • 1 app releasée durant les Congs
  • 1 doc de bonne pratique lancée
  • 75 personnes le samedi matin dans l’amphi, à écouter les conférences (un peu moins le dimanche matin, après la soirée arrosée, parce que comme là dit un illustre inconnu : ‘ce matin, on a 50% de perte)
  • 3 repas complétement pris en charge par l’organisation
  • un peu plus de 100 dosettes de Senseo utilisés sur les deux jours (mais qu’une dizaine de sachet de thé, on le sait tous, le café est supérieur au thé)
  • 200 litres d’eau bus, au bas mot, parce que dans le sud, il fait chaud, Cong !
  • Quelques bonnes dizaines de coup de soleil, cadeau surprise pour ceux qui n’ont pas l’habitude du vrai soleil du vrai sud.
  • 36 litres de bières (edit : j’avais oublié les 6litres de guinness) et 20 litres de vin bu lors des 6h qu’à durer la soirée du samedi soir. Et pourtant tout le monde est rentré sur ses jambes.
  • Un nombre de kilo de paella engloutis par nos estomacs,  qui fait juste peur. Comme quoi les poneys, ils ont bon appétit.
  • un article dans Linux Magazine dans le prochain numéro.

Les Congs du point de vue d’un organisateur.

La deuxième édition fut l’occasion d’essayer d’être plus pro dans l’organisation des choses. Et je pense qu’on a fait plus qu’essayer.

  • Plus de salles dont un amphi bien équipé niveau son (Merci encore à l’école centrale de Marseille nous avoir accueilli pendant ces deux jours).
  • Plus de préparation au niveau des repas. On a remplacé les réservations dans de multiples restos par des plateaux repas et des sandwitch livrés sur site, pour gagner du temps et permettre de continuer en mangeant les discussions entamées pendant les confs.
  • Une vrai préparation pour la soirée du samedi (à la Boate) et pas juste un ‘on va sur le vieux port et on trouve un resto comme l’année dernière).
  • Quelques choix un peu clivant comme des durées de conf courtes ou du #Nowificonf pendant une partie des Congs.
  • Moins de trajet dans ma voiture pour chercher les gens perdus ou les ramener. Marseille commence à priori à être connu de tous et il n’y a plus de femme enceinte parmi les présentes :).
  • Encore plein de points à parfaire ou à juste faire (comme prévoir l’impression des badges en avance et les donner le premier matin, à l’arrivée. Ou prévoir un vrai carnet de route de l’accompagnant avec activités et truc à faire pour ne pas lâcher les gens comme ça et qu’ils s’ennuient pendant deux jours).

Les congs d’un point de vue perso.

Vivement la troisième édition. Comme les deux premières fois, la fin des Congs arrivant, un grand sentiment de vide se fait sentir et à peine le dimanche soir arrivé, l’envie d’être déjà à l’année prochaine, de pouvoir discuter à nouveau en IRL avec des gens que je ne vois parfois qu’une fois par an.
D’un point de vue perso, l’année dernière avait été une grande claque technique dans ma figure. Deux jours de conférences non stop, ça en met plein les mirettes.
Cette année, malgré le fait qu’il y est moins de conférences ce fut encore mieux. Les confs auxquelles j’ai pu assister m’ont en effet fait découvrir plein d’outil qu’il va falloir que je test, mais les barcamps ont permis d’échanger pour de vrai, de commencer même pour certaines sessions à poser les premières pierres de quelques choses (je pense là a Geek sans Frontière par exemple).

Mais ce n’est pas tout. L’un des points qui fait que cette deuxième édition fut immensément mieux que la première c’est que cette année la partie ‘non technique’ a été pensée et organisée. Et autant sur des découvertes techniques, on peut imaginer les faire par IRC / billets de blog, autant rencontrer les gens et se rendre compte qu’on les apprécie, pour de vrai, hé ben, y a pas à dire, il faut être dans la même pièce.

On mange difficilement de la barbe à papa rose sur IRC. Apprendre le GO, c’est aussi un peu compliqué. Et je ne parlerais même pas de jouer à ‘il était une fois’ avec Kael, Cyberj et Exirel. Ou de tenter de survivre à une partie de Pandémie. Et comme ArmagnacOverIP n’existe pas encore, on a encore besoin que dzen ramène sa bouteille dans son sac pour y gouter (je ne t’oublie pas brutasse, ta chartreuse était très bonne aussi:) ). C’est tout ces moments là. Tout ces moments partagés qui font que pour de vrai, DjangoCong 2.0, putaing, c’était terrible.

Et à l’année prochaine, pour d’autre aventure et une djangoCong 3.0

quelques liens :

 

Qr Code et Linux

Tout le monde sait ce que c’est qu’un QR Code. Un petit carré blanc plein de petit carré noir. Ou pour faire plus pro un code bar à deux dimensions constitué de modules noirs disposés sur un fond blanc.

Ce qui est intéressant avec un QR Code, c’est qu’on peut y stocker beaucoup d’info, bien plus que dans un code barre normal. 4000 caractère pour être exact. On peut même y stocker une Vcard…

Mais comment créer des Qr Code sous linux ??

C’est plutôt facile vu qu’il y a au moins une appli pour le faire, à savoir qrencode. Pour l’installer, sous ubuntu, il suffit de cliquer sur le lien suivant (vive les liens apt: 🙂 ) ou d’aller le chercher à la mimine avec aptitude ou synaptic.

Une fois ce petit logiciel installé, il est tout simple à utiliser ( il y a même un man).

Un simple qrencode  -o testurl.png ‘http://j-mad.com’ vous permettra de générer un premier QR Code qui pointera sur ce blog et qui ressemblera à ca :

Mais plus fort, vous voulez peut-être pouvoir mettre un QR code sur votre carte de visite ? Et vous aimeriez bien que ce QR Code lorsqu’il est scanné, permette d’ajouter un contact automatiquement dans votre téléphone ? Rien de plus simple. Il vous suffit d’avoir une carte de visite en format vcard.

Une fois que vous l’avez, un petit :
qrencode  -o testvcard.png < mrjmad.vcf vous donnera un QR Code qui contiendra toute votre vcard. Et lorsque quelqu’un le scannera, il pourra vous ajouter automatiquement en contact dans son téléphone. Mon QrCode Vcard ressemble à ceci :

Pour ceux qui n’aurait pas la chance d’avoir un linux sous la main, orange propose une espèce d’interface de création de Qrcode carte de visite ici : http://generator.france.flashcode.id2orange.com/flashcode-contact.php

Quelques applications iphones qui fonctionnent pas mal :

  • mobiletag
  • barcodes
  • redlaser (qui a l’air de ne pas savoir lire les qrcode vcard par contre)

 

Ha, une dernière chose, pour les grincheux comme daks, qui disent que c’est trop moche pour être utilisé, un QR Code, on peut aussi, (même si ce n’est plus alors un “vrai” QR code) changé la couleur, pour avoir par exemple, un QR Code Rose 🙂

 

Tron Legacy

C’est assez rigolo, il y a quelques mois, enfin je pense qu’on doit même pouvoir compter en année, quand j’ai appris que Tron legacy allait sortir, la première chose que j’ai dit à ma moitié c’était ‘le jour de la sortie, je serais le premier à faire la queue au ciné pas moyen que je le vois pas aussi vite que possible ce film’

Et puis… et puis les mois passent et les bébés arrivent. Et autant dire que le jour de la sortie, j’étais pas du tout au cinéma. Mais alors pas du tout.

Mais enfin, j’ai fini par le voir ce film. Et donc par pouvoir vous en parler. Mais avant d’aller plus loin, j’aimerais préciser quelque chose. Tron premier du genre a vraiment l’un des films majeur pour moi. Un des 10 films qui ont vraiment été important et que j’ai adoré voir et revoir (parmi les 9 autres on trouvera La guerre des étoiles, StarFighter, Dark Crystal, Wargames, 2001 l’odyssée de l’espace, le cobaye … )

Donc forcément, j’attendais beaucoup de ce nouvel opus.

Et il n’y a pas à dire, c’est un bon film. Agréable à regarder. Bon c’est vrai que le scénario ne va pas chercher bien loin, même pour un disney…

C’est vrai aussi que le passage dans la discothèque avec l’huluberlu aux cheveux blancs est .. comme dire …

Que le saupoudrage de philo zen fait un peu téléphoné. Et que l’histoire avec les ISO voilà quoi ..

Mais ça reste un bon divertissement, avec tout plein d’effets spéciaux très sympa. Et puis les combats de disque et les courses de motocycle, ça ne peut qu’en mettre plein les yeux et être cool.

Mais je ne sais pas, il n’y a pas la claque que ce que le premier pouvait vous envoyer. Il n’y a pas cette nouveauté, ce saut dans la technologie si l’on peut dire qu’il y avait dans le premier. Après tout Tron 1 est passé, Matrix est passé, etc etc … Ce n’est plus aussi renversant qu’avant les histoires de téléportation dans le virtuel.

Du coup, on se retrouve avec juste un bon films d’actions, avec de jolis acteurs, une belle fin et tout plein de bon sentiment. Mais c’est tout. Ça serait suffisant pour un film normal.

Pour l’héritier de Tron… ça laisse un petit goût de déception.

Mention spéciale concernant l’informatique dans le film.

J’ai été relativement étonné de voir que cette partie là était bien traitée, bien loin des élucubrations habituels. Les différents persos font des ps, des kill, des whoami , un uname, etc etc…

Mais tout ce gate lorsque que Sam tente de se loguer sur le PC qui se trouve dans le bureau secret de son père.
Il commence par un login -n root . Ca ne marche pas. Et là il dit explicitement, à voix haute ‘essayons par la backdoor’ Et horrifié, je le vois taper login, puis backdoor, puis entrée…

Et … Et …

Il est logué…

Et là ce fut le drame. Je n’ai cru pas m’en remettre. J’ai même chercher un screen que j’ai trouvé sur ce site) pour vous montrez la chose …

Audio Recorder, le petit logiciel qui recorde …

Audio Recorder est un de ces petits logiciels qui nous devient tellement indispensable après 30 secondes d’utilisation, que l’on se demande bien comment l’on pouvait faire avant.

Sur le principe c’est très simple. Audio recorder enregistre des sons. Et pour être plus précis il enregistre les sons qui sortent de l’une de vos sorties audio.

C’est tout con. Mais c’est tellement utile.

Pour enregistrer des conversations skype ou autre. Pour enregistrer les stations de radios, les pistes sonores des vidéos youtube ou tout ce que vous voulez d’autre.

Si ça sort d’une sortie audio, alors Audio Recorder sait l’enregistrer. Et dans un bon nombre de format du mp3 au Flac en passant par le WAV ou le OGG…

Cerise sur le gâteau, on peut même scripter une minuterie pour lui dire d’arrêter d’enregistrer après 30 minutes ou si il y a un long silence ou si … ce que vous voulez en fait.

Et pour ne rien gâcher, la qualité sonore est plutôt bonne.

Pour l’installer, sous Ubuntu rien de plus simple :

  • sudo apt-add-repository ppa:osmoma/audio-recorder
  • sudo apt-get update && sudo apt-get install audio-recorder

Avec les autres distro, il me semble qu’il va falloir aller sur launchpad, récupérer les sources et le faire à la mimine.

 

Petites apps … petites mais costaudes

Pour ce mois de mars, je vais parler non pas d’une seule mais de deux petites apps. Deux apps parce que les apps sont tellement petites que l’on va m’accuser de tirer au flanc si je ne parle que de l’une d’entre elles. Mais que d’un autre cotés, ce n’est pas parce qu’elles sont petites qu’il ne faut pas en parler.

django-generic-aggregation

 

Qui n’a jamais utilisé les agrégat dans Django ? C’est quand même super utile. Et qui n’a pas ralé sur le fait que zut alors… Saperlipopette même, on ne pouvait pas utiliser les agrégat sur les Generic FK ?

Et c’est là qu’arrive django-generic-aggregation. Qui permet justement de le faire.

Concernant l’installation, trois moyens :

Quand à la doc, vous aurez droit à la page de pypi qui est aussi la page de doc de github. Bon après, il faut bien dire que l’app n’est pas super compliqué à comprendre.

Et au pire, il y a le code des tests. Une petite précision toutefois concernant la doc, la page readthedoc de l’app renvoie pour l’instant sur un 404 readthedoc (un 404 en ASCII ART d’ailleurs)

Ensuite à l’utilisation c’est tout simple, un petit exemple, tiré de la doc :

from generic_aggregation import generic_annotate
from django.db.models import Sum, Avg

# assume a Food model and a generic Rating model
apple = Food.objects.create(name='apple')

# create some ratings on the food
Rating.objects.create(content_object=apple, rating=3)
Rating.objects.create(content_object=apple, rating=5)
Rating.objects.create(content_object=apple, rating=7)

>>> aggregate = generic_aggregate(Food.objects.all(), Rating.content_object, Sum('rating'))
>>> print aggregate
15

>>> aggregate = generic_aggregate(Food.objects.all(), Rating.content_object, Avg('rating'))
>>> print aggregate
5

Pour la petite histoire, j’ai découvert cette app en testant django-simple-ratings une autre app du même monsieur.

django-exposure

 

La encore une petite app toute bête qui permet de resizer des images avant de les afficher. Les images redimensionnées sont stockées en mémoire et il y a même une gestion de cache.

La doc est présente sur packages.python.org et elle explique bien la manière de l’utiliser. Après pour vraiment comprendre, vive les sources.

Quand à l’installation, vous pourrez soit utiliser :

un petit pip install django-exposure
ou une récupération d’un tar.gz sur bitbucket
ou même un hg clone

L’utilisation en elle même est très simple. Il suffit en effet d’utiliser le filtre |resize en lui donnant trois paramêtre, Width, Height et Crop.

Crop peut prendre 5 valeurs de 0 à 5 suivant le crop que vous voulez mettre en place ( 0 étant pour un crop centré).

 

Pour rester dans le même sujet, je ne peux finir ce billet sans parler de django-thumbnail-works qui sert comme son nom l’indique à gérer les thumbnail. Le principe étant de là, gérer cela directement au niveau de l’ImageField. Mais je ne peux vous en dire plus, je n’ai pas eu le temps de la tester.

DjangoAstuce : masquer certains champs des settings dans la vue de Debug

Par défaut, la vue de DEBUG affiche toutes les settings. Heureusement pour nous, gentils petits djangonautes, les password des BD mais aussi le password du user emails sont remplacés par des belles petites ***.

 

Mais comment faire pour masquer d’autre champs ? Comme des champs de KEY d’API ou de password divers ? Parce qu’après tout, il peut arriver de devoir en stocker, et de vouloir les cacher à certains des yeux qui pourraient voir la vue de DEBUG.

 

He ben, encore une fois, django a tout prévu. Il suffit en effet que le nom de votre constante contienne soit :

  • SECRET
  • PASSWORD
  • PROFANITIES_LIST
  • SIGNATURE

 

Pour que dans les vues de DEBUG, leur valeur soit remplacé par des ***

 

Et bien entendu, cela marche aussi pour les key des dictionnaires que vous pourriez déclarer dans vos settings (l’exemple parfait étant celui qui sert de configuration pour les BD).

Faerie Thriller

J’ai donc découvert, la semaine dernière qu’il existait une suite à Faerie Hacker (de Johan Heliot), un des romans ‘claques’ que j’ai lu ces dernières années. Aussitôt découvert, aussi tôt commandé.

Après avoir fini Cercle Vicieux de de Mike Carey dans la nuit de vendredi à samedi, j’ai eu le plaisir de découvrir un paquet dans ma boite aux lettres … Et oui c’était Faerie Thriller. Dire que je pensais ne rien avoir à lire du week-end (oui parce que les deux colis que je devais recevoir vendredi, dont un plein de livre.. ont … disparu…. Espérons que c’est le concierge qui les a gardé en oubliant de laisser un mot pour prévenir… espérons… )

Je me suis donc jeté sur Faerie Thriller et entre deux sessions boulot, je l’ai dévoré, le finissant il y a quelques couples de minutes.

Déjà, un bon point, j’adore la couverture. Oui, je sais, la couverture, cela ne veut rien dire. Et parfois même c’est trompeur. On peut passer à coté d’excellent bouquins en se laissant aller à une mauvaise impression donné par la couverture ou au contraire, se faire pigeonner …

Mais bon, c’est toujours un plus quand le flacon est à la hauteur de l’ivresse. Et donc la couverture est vraiment sympathique.

Quand à l’histoire, on retrouve Lil, la fey héroïne du premier tome. On retrouve également le presque dragon Obrasian ou le capitaine de la garde. (Tout petit bémol peut-être, Lil dans mon souvenir du premier épisode, me semblait plus ‘fantasque’, plus ‘tornade ébouriffée et ébouriffante’)

Dans ce tome, pas de déluge de haute technologie, pas d’informaticien et de démon, mais des meurtres horribles, en Faerie et dans le monde ‘normal’. Des meurtres qui semblent reliés….

Va commencer une enquête rebondissant entre Faerie et notre monde, au gré de meurtres de plus en plus étranges…

Si j’essaie de comparer cet opus à Faerie Hacker, j’aurais envie de dire qu’alors que FH (Faerie Hacker, suivez un peu) était bit-lit, FT était beaucoup plus polar et roman noir. Sans d’ailleurs émettre aucun jugement de valeur, vu que je lis des deux types de bouquins.

En tout cas, FT reste toujours autant que FH un plaisir à lire. On est happé par l’histoire, par cette description, à la mode ‘noire’ du monde littéraire, par le mélange entre monde moderne, Faerie et mythologie.

Et puis, il ne sont pas si nombreux, les livres dans lesquels j’apprends des mots (bon peut-être parce que je lis au final très peu de livres français et beaucoup de traduction). Et c’est toujours plaisant de lire un auteur qui manie bien la langue.

Mon seul regret ? Ne l’avoir jamais croisé en vrai lorsqu’il était aux imaginales !!! bouhhh !!! J’aurais pu lui proposer une MadInterview en plus:((

Waylander, T3 : Le Héros dans l’ombre

Le vieux dicton dit qu’il n’y a jamais 2 sans 3. Histoire de ne pas le faire mentir, je m’en voudrais, voici donc la review du Waylander tome 3 : Le Héros dans l’ombre. Il faut vraiment que les … ( je sais pas trop qui en fait ) arrêtent de mettre des Virgin devant mes pas, comment je résiste moi ?

Enfin bon, donc après avoir lu le tome 2 et sachant qu’il y avait un tome 3, j’ai décidé qu’il était d’une importance vitale pour vous, mes lecteurs, que je lise et donne mon avis sur le dernier des tomes de Waylander.

Dans ce tome 3 on retrouve donc…. Waylander et oui, mais c’est tout. Sa fille est installée au loin avec son mari et il vit donc tranquillement, encore une fois incognito, riche grâce à l’argent qu’il a lentement amassé en tuant à tour de bras pendant de longue année.

Il s’est fait construire une espèce de palais comprenant une immense bibliothèque, un hôpital, ou il offre asile et connaissance à ce qui viennent le voir. Mais comme toujours, sinon il ne serait pas Waylander, il n’a pas de chance. Il s’est installé juste à coté des ruines d’une ancienne ville, ville dont les habitants ont été exilés dans une autre dimension il y a quelques milliers d’années et qui ont décidé de revenir et de remettre tout le monde à leur botte. Du coup, par le plus grand des hasards, presque à contre-coeur, et surtout à cause de la colère blanche qu’il lui arrive d’éprouver, Waylander va encore jouer au grain de sable et aider à sauver le monde.

C’est d’ailleurs intéressant de voir comment Gemmel arrive à faire en sorte (c’était déjà le cas dans le tome 2) que Waylander s’engage dans des quêtes ayant pour but de sauver le monde à contre-coeur, sans faire exprès et pour des raisons qui ne sont pas du tout ‘sauver le monde’.