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 🙂