PROJET AUTOBLOG


Sam et Max

source: Sam et Max

⇐ retour index

Les ordinateurs et consoles qui ont bercé notre jeunesse. Retour sur toute une époque.

jeudi 8 novembre 2012 à 22:58

Bon c’est pas le premier article du genre sur le wouebe, c’est du réchauffé même, mais chaque site d’info qui se respecte doit avoir son petit côté nostalgie.
Je vais vous parler de ces ordis qui ont bercé ma (et sûrement la vôtre) jeunesse et qui m’ont donné goût à l’info. Comme je les ai presque tous eu il va y avoir une bonne liste.

Une des première console de jeux: Atari 2600

ATARI 2600... des milliers d'heures passées dessus...

Oui bon ça date mais je suis pas tout jeune, j’en ai eu même avant celà mais comme l’electricité n’existait pas encore je n’ose pas en parler… A mes yeux l’Atari 2600 reste la meilleure console, je ne parle pas de graphisme mais de poilade,  j’étais très jeune aussi, j’ai essayé de rejouer à certains jeux ça a pris un coup de vieux. Mais ce qui faisait la magie de cette console c’est qu’à l’époque ça parraissait être un ovni, je vous rappelle qu’on est à la fin des années 70,  pattes d’eph et disco à la télé, pas encore de montre à quartz, le concept des manettes etc tout ça n’avait jamais été vu avant (ou presque).

En plus j’étais le seul à savoir la faire marcher, ben oui mes parents savaient pas comment la brancher, ils sont d’une autre époque. ça faisait de moi le “ptit génie de la maison“.
Quelques titres dont je me rappelle encore comme “jungle hunt, moon patrol, dig dug, Qberts, toutankamon…”

 

 

Le MO5, une machine bien de chez nous, Française, blanche…

Cocorico !

Je m’en rappelle encore, c’était un soir de 1984, mon père m’emmene à RALLY ( une sorte de Carrefour) et il m’achète cet ordi au design sobre et beau (d’ailleur je trouve que le MacBook Air lui ressemble beaucoup au niveau des touches) . C’est là dessus que j’ai fais mes premiers programme en BASIC, j’aimais bien, c’était simple, je faisais des trucs de merde, c’était des images avec une musique en fond, mais je trouvais ça fantastique.
Là encore des jeux m’on scotché comme Airbus, l’Aigle d’Or , le 5ème Axe. Des graphismes d’une horreur époustouflante mais des heures passés dessus, surtout l’aigle d’Or que je n’ai jamais fini je crois.

 

L’Amstrad CPC 6128

Le croisement entre concole et ordi

Très vite le MO5 (et TO7) a laissé la place à l’Amstrad, des graphismes plus mieux, une bonne bibliothèque de jeux et surtout un coup marketing à l’époque fantastique, le grille-pain était vendu AVEC un écran. Ca peut avoir l’air con mais de cette sorte les parents ne voyaient plus leur télé monopolisée par le boutonneux de service, je suis persuadé que ça a énormément joué à l’époque.
Il a aussi à mon avis participé à l’introduction de la micro dans les foyers, en mélangeant console de jeux et ordinateur. Je n’ai pas beaucoup “développer” là dessus car les jeux étaient tellement bons que je faisais plus que ça… On se rappellera de Stram II, Barbarian (j’adorais trancher la tête…), green Beret, Commando, Zaxon, Turok, etc…

 

La Nes

Mario Bros - y a pas mieux

Alors là il fallait le voir pour le croire,  une petite boite toute carrée mais des super graphismes (pour l’époque), je me rappelle encore de la démo de Mario Bros, on avait économisé avec mon frère pour se la payer, elle coutait 990 Francs , c’était pas cher comparé aux ordis de l’époque mais là où Nintendo a bien joué c’est qu’il vendait les jeux dans les 300 / 400 Francs, ça faisait mal au cul…
Cette console est pour moi le symbole de la jouabilité, je n’ai depuis jamais retrouvé cette jouabilité sur des jeux, sa conccurente de l’époque, la Master system de Sega était une vrai daube en terme de maniabilité, il y avait bien sur les pros et les contres comme Xbox et Sony de nos jours :).
La Nes a également introduit le concept de sauvegarde, je me rappelle qu’il y avait une pile dans les cartouches de Zelda. On pouvait sauvegarder notre partie, aller se coucher et le lendemain, ho miracle on peut reprendre là où on avait fini…
Quelques jeux mémorables mais la liste est longue Les goonies, Metroid, Zelda, Mario Bros, Gradius, Punch Out, etc.

 

ATARI ST 520 STE

C'est parti pour un Dungeon Master!

Il y a eu le 520 Stf, Ste, Le 1040, etc… L’atari ST a vraiment marqué un tournant je trouve, grace au…piratage :) En effet on arrivait à l’école avec nos paquets de disquettes ultra fines (maintenant ça ferait rire) qu’on s’echangeait, c’était on ne peu plus simple de copier les jeux à l’époque grace à un logiciel (en allemand d’ailleurs) qui demandait d’insérer la disquette source puis la disquette destination et c’est tout !
C’était une bête de course dans tous les domaines, graphismes et audio, il sera d’ailleurs beaucoup utilisé en MAO , Cubase lui doit beaucoup car c’était un des logiciels de musique les plus piraté sur Atari St, certaines légendes racontes que Cubase lui-même avait fait en sorte que le logiciel soit facilement piraté pour pouvoir diffuser sont utilisation en masse… Il avait cependant un ennemi féroce l’Amiga qui était beaucoup plus puissant (et plus chèr aussi) où d’ailleurs j’ai vu de très belles démos .
On se rappellera des jeux comme Rick dangerous, Stunt car Racer, Maupiti Island, Opération Steal, Dungeon Master, etc..

La super Nes

Are you ken ?

Très attendue a l’époque, c’était la première fois où l’on voyait le phénomène d’attente pour la sortie d’un produit, au JT passait des images de Japonnais attendant devant le magasin pour être servis les premiers, maintenant ce genre de folie s’est étendu à la terre entière et pour n’importe qu’elle saloperie un peu high tek. La super Nes a rajouté un peu de jeune dans les consoles avec l’arrivé de la 3D (donkey kong )  et les effets sonores (reverb, etc). J’ai passé pas mal de temps sur cette console mais la magie des jeux commencait déjà à me quitter, c’est une des dernières consoles auquelle j’ai passé beaucoup de temps.
La liste des jeux est là encore impressionante, j’ai surtout aimé la série des Marios ainsi que Street fighter.

 

 

La MegaDrive de Sega:

Des graphismes superbes et une maniabilité de me...

Annoncée comme le messie avec ses 16 Bits la Megadrive était la conccurente de la SNES, la jouabilité était vraiment minable je trouve mais les graphismes bien mieux que la SNES, je trouve que ça a toujours été le problème de SEGA de faire des jeux beaux mais dont la maniabilité était médiocre, les personnages avaient un baton dans le cul…
Il y a eu de très très bons jeux dessus comme Altered Beast, Sonic the EdgeHog, E-Swat, Shinobi, Golden Axe, Afterburner, etc. Cette console avait un peu de magie car on y retrouvait les jeux d’arcade qui étant de SEGA se trouvaient portés sur cette console, du coup on se croyait comme dans les salles de jeux, j’avais même pensé à me construire une borne d’arcade à lépoque pour l’occasion.
J’ai une pensée particulière pou Ecco the dolphin qui bien qu’étant pas vraiment interressant était d’un graphisme époustouflant et avait une musique appaisante, On pouvait y jouer des heures juste à déplacer son dauphin…
Dans un aéroport il y a un an ou deux j’ai trouvé une console portable reprennant les plus grands titres de la Mégadrive, j’ai passé des heures aux chiottes avec !

 

Le Personal Computer

Un IBM des années 90 8 Mhz !

Les années 90 ont marquées un tournant pour l’informatique, les PC se sont imposés en masse, je n’en voit pas trop la raison en fait, ils étaient gros, lourds, moches, pas puissants, chers (4000 Francs la barette de 1 mo de mémoire, 1200 francs le lecteur CD, etc.) . Et essayez de déconnecter votre ordi d’internet et vous allez voir si vous faites encore quelque chose avec votre grille-pain…
Possible que ce soit le côté bidouille mais chez moi personne à part moi voulait y toucher. Mon premier PC était un 386 Sx 16 Mhz avec un disque dur de 20 Mo et un lecteur de disquette de 5″, même la plus petite des calculettes de nos jours lui met la misère.
Et puis petit à petit la puissance a commencée à arrivée nottement avec les célèbres 486 DX 2 66 et on a commencé à voir arriver des jeux comme Duke nukem, Day of tentacules, Sam et Max ;) mais aussi des superbes démos comme Second Reality, regardez moi tous ces geeks :)

 

La Playstation

Le début de la fin, chargements inter Minables...

La playstation a été pour moi le début de la fin. Quelle erreur avait fait Sony là, un lecteur CD !!!! Alors certes on avait des supers intro animés mais bordel une heure de chargement entre chaque étapes, malgrès le fait qu’il y avait de très bon jeux dessus cette console m’a dégoûté des…consoles , je me suis donc tourné vers les PC pour laisser petit à petit les jeux de côté. D’autant qu’internet venait d’arriver timidement en France avec Compuserve et ses notes de téléphones à 2000 Francs :)
Petite anecdote à l’époque je faisais des puces pour pouvoir jouer aux jeux copiés sur la console, ça a du faire sa rennomée ça aussi, quand les graveurs de CD sont arrivés il était facile de copier les jeux lorsqu’on avait une puce d’installé, je m’étais alors improvisé monteur de puces sur console, un bon business à l’époque, je vendais les puces et mon pote les jeux copiés qu’il louait au vidéo-club, je programmais des PIC 1504 et les soudaient à même la console, ça payait les sorties…

 

 

Voilà, j’espère que ça aura reveillé quelques souvenirs à certains d’entre vous. Je ne parle pas de l’excellente Nintendo 64 qui pour certains est la meilleure console de tous les temps avec son golden eye car je ne l’ai pas eu, j’avais déjà lâché les consoles à cette époque. Il y a également la Megadrive, la Dreamcast, etc.. J’ai zappé également les consoles portables comme la Gameboy ou la GBA.

Les derniers consoles depuis la PS2 (déjà 10 ans) ne valent pas grand chose à mes yeux, ce ne sont que des monstres de puissance avec des jeux fades, j’ai acheté une xbox 360 et une PS3 que j’ai gardé respectivement 1 semaine et 2 mois,  les jeux bien que superbes n’ont pas d’âmes, sont pas maniables (sérieusement un COD c’est nul à jouer à la manette !). Depuis un seul jeu m’a amusé et c’est sur PC , c’était Battlefield  2142, possible qu’un jour je m’y remette mais je pense que la flamme du joueur qui est en moi s’est étteinte…

A vous Cognac Jay.

Edit: je n’ai pu m’empêché de rajouter la MegaDrive car je pense qu’elle a droit à sa place dans la postérité :)

Bien expliquer quelque chose: les règles de base

jeudi 8 novembre 2012 à 18:24

Il n’y a pas beaucoup de choses dans lesquelles je me considère vraiment très bon. Je ne suis pas un génie. Je ne suis même pas un excellent programmeur. Mais enseigner, expliquer quelque chose à quelqu’un est définitivement un de mes points forts. La bonne nouvelle, c’est qu’il existe quelques règles simples, qui, si vous les suivez, vous permettront vous aussi de développer vos capacités à faire passer des connaissances.

(par contre je vous préviens, c’est un méchant bloc, prévoyez la lecture à la pause de midi :-p)

1 – Il n’y a rien d’évident

Quand on est bon dans quelque chose, on a tendance à considérer certaines connaissances comme la base. Tout le monde doit savoir ça. Il n’est pas rare dans notre profession, très intellectuelle, de voir même certains afficher du mépris envers ceux qui montrent leur ignorance dans ces domaines (salut cortex :-)).

La règle numéro 1, la seule à retenir si vous ne voulez pas lire le reste: il n’existe AUCUNE connaissance que tout le monde possède.

Anecdote amusante: même si il existait une chose que tout le monde savait une fois atteint l’âge adulte (ce qui n’est pas le cas), par le simple truchement des statistiques, il y aurait 10000 personnes par jour aux USA qui découvriraient ce fait. Donc qui l’ignoraient hier.

Le corollaire, c’est que donc la valeur d’une personne ne peut pas être jugée en fonction de ce qu’elle sait, ou ce qu’elle ne sait pas. Max a appris ce qu’était la signature d’une fonction le mois dernier. Il a 15 ans de métier.

Par respect donc, et par souci d’efficacité, il va falloir faire une liste des prérequis nécessaires à la compréhension de ce que vous essayez d’expliquer. Et il va falloir se demander: puis-je glisser une explication simple pour ces prérequis ? Puis-je glisser un rappel ? Au moins faire un lien vers une autre ressource qui fait ce rappel ? Quel en sera le prix (taille de l’article, temps de la conférence, complexité, énergie dépensée, etc) ? Si le prix est raisonnable, précisez cette notion, et votre article / cours / présentation touchera soudainement plus de monde.

L’exemple de la réussite de cette pratique est l’article sur les décorateurs Python. Il n’existe aucun autre bon article français sur Internet expliquant les décorateurs, parce que la plupart partent du principe que vous savez ce qu’implique qu’une fonction est un objet en Python. Ici, la moitié de l’article s’acharne à expliquer cette notion. L’autre moitié à expliquer ce qu’on peut faire avec les décorateurs. Seule une toute petite partie de l’article est vraiment une explication sur les décorateurs. La notion clé n’est pas forcément ce qui prend le plus de temps à expliquer: les choses sont simples quand on connaît le contexte.

L’exemple de l’échec de cette pratique, c’est l’article sur les vues en Python. Je suis parti du principe que les lecteurs savaient ce qu’était une structure de données et un proxy, des notions qui à mes yeux étaient des notions de base. J’ai été heureusement rapidement rappelé à l’ordre par deux lecteurs sympathiques. Si ils ne l’avaient pas fait, je serais resté dans l’illusion que mon article était bon. Car c’est tout le problème avec une mauvaise explication: personne n’a envie d’admettre que l’on n’a pas compris quelque chose. Et on crée un sentiment de rejet envers le sujet et l’auteur.

Il y a un fort attachement émotionnel qui se créé pour le lecteur si on fait bien son travail: il reçoit votre message, et dedans il se rend compte qu’il comprend, et voit l’effort que vous avez fait pour qu’il comprenne, alors que d’autres sources ne l’ont pas fait. Il se créé un sentiment de satisfaction pour lui d’avoir compris, et de reconnaissance pour vous de lui avoir expliqué.

C’est exactement ce qui s’est passé avec le site du zéro. Le mec était tellement bon que quand il a eu besoin d’un nouveau serveur (au tout début du site), il a lancé une collecte et reçu 2000 euros des lecteurs heureux. Sa boîte, Simple IT, est construite sur le lien émotionnel qu’il a créé avec ses lecteurs en ne les prenant pas pour des cons. Inutile de préciser que j’adore ce mec.

2 – Limitez le bruit

Quand vous parlez d’un sujet, limitez au maximum toute notion dont vous n’avez pas besoin dans le sujet. Si vous faites un article sur comment débuter dans le domaine x, ne mettez JAMAIS les bonnes pratiques du domaine x.

Trop de profs expliquent (ce qu’ils croient être)  les bonnes pratiques à des gens qui ne connaissent pas la base. On dépense déjà beaucoup d’énergie à comprendre la base. Il y a zéro chance qu’on comprenne en plus les bonnes pratiques, et leurs implications. Et même si on y arrive, le jour où on à vraiment besoin d’appliquer ces bonnes pratiques est très loin, et on aura oublié tout cela (l’exception à cet exemple étant la formation / présentation professionnelle sur quelques jours).

Si les bonnes pratiques sont essentielles à votre cours, comme par exemple un cours sur le xHTML qui doit être valide, donnez uniquement des exemples valides. Introduisez les règles de validité sans emphase par rapport au reste. Mais ne martelez pas la philosophie de la raison de rendre le code valide. C’est un autre sujet. Traitez le ailleurs. Les gens sont ici pour apprendre à faire du code valide, pas pour entendre un sermon. Laissez les produire du code non valide. C’est une erreur comme les autres. Ça se corrige avec la pratique, comme toutes les autres erreurs.

Un autre exemple: évitez d’introduire une notion connexe. Si vous parlez d’une algo de parcours, éviter de parler en détail de complexité algorithmique. Juste savoir qu’il est efficace pour tel usage ou non suffit. A moins d’être dans un cours d’algo, bien sûr. Si vous parlez d’une nouvelle lib Python, ce n’est pas le moment de parler de comment installer une lib avec pip. Tous les gens qui savent déjà ça vont être gavés. Les autres vont être perdus. Installer une lib avec pip, c’est un exercice à part. Je hais de tout mon être les livres sur Django qui commencent par expliquer des notions de Python: le résultat, c’est qu’aucun des deux sujets n’est bien traité.

Montrez une seule manière de faire les choses, et de préférence la plus simple à moins qu’elle soit vraiment nulle ou que le titre de votre article soit “x façons de faire z”.

En Python, on peut par exemple faire:

sorted(truc, key=operator.itemgetter(1))

ou

sorted(truc, key=lambda x: x[1])

Lequel des deux utiliser n’est pas important pour votre sujet en cours. Choisissez-en un, ne mentionnez même pas l’existence de l’autre. On s’en branle.

Si un petit malin vient faire une réflexion en comment, mettez lui un tampon dans la tronche.

J’ai toujours fait ça par instinct, sachant que c’était plus efficace, mais sans vraiment savoir pourquoi. Jusqu’à ce que je sorte avec une neuropsy qui m’a un jour expliqué le principe des tests dans son métier: toute la difficulté est de créer un exercice qui teste une aptitude mentale, et n’implique aucune autre. Par exemple si on veut tester la mémoire, le jeu du memory est un mauvais test car il demande aussi une capacité d’observation. Vous pourriez diagnostiquer une personne comme ayant Alzheimer alors qu’elle est juste pas observatrice.

C’est pareil en pédagogie: une personne risque de ne pas comprendre un sujet car vous avez introduit une notion supplémentaire, donc un risque supplémentaire d’incompréhension. Le problème avec l’incompréhension, c’est que ça s’accumule: si on ne pige pas le premier paragraphe, le cerveau est confus, et aura plus de mal à comprendre le second paragraphe qu’il aurait compris tout de suite si il n’avait pas lu le premier. Et je vous passe bien sûr les conséquences de la frustration de l’échec dans un monde où Youtube est à un clic de votre article tout pourri.

Cette règle est très difficile à appliquer car elle contredit deux autres règles:

C’est une question de dosage, et ça vient avec l’expérience. Mais il faut toujours travailler à améliorer ce dosage.

3 – Rendez ça fun

Notre capacité de concentration est limitée. Pour maintenir l’intérêt, introduisez des détails qui font marcher une autre partie du cerveau: un truc qui choque, qui fait réfléchir, ou rire.

Il faut faire ça de la manière la moins intrusive possible pour ne pas dégommer instantanément la règle 2. Si vous faites un trait d’humour, faites le court. Mieux encore, gardez tout l’article sérieux, mais mettez la blague dans le nom d’une variable du code d’exemple, dans un lien sortant de l’article, dans une référence cinématographique sans vous attarder, dans une photo d’illustration, dans un title qu’on lit au survol, dans le ton général de l’article.

Ce n’est pas grave si tout le monde ne comprend pas. Nous n’avons pas tous le même humour. L’idée est de ne pas déconcentrer l’audience, mais que ceux qui tiltent aient un sourire au coin de la bouche.

Si vous commencez vraiment à vous toucher, vous pouvez utiliser des citations, des blagues complètes, des petites histoires et autres moyens plus imposants. Mais c’est advanced. Garder un rythme avec ça, c’est plus difficile.

Dans tous les cas n’en abusez pas. Voir règle 2.

4 – D’où on vient, où on va

L’être humain est biologiquement câblé pour détester l’inconnu. Et quand il n’aime pas, il fuit. Sur Internet ça se traduit par la fermeture de l’onglet, dans une conf par la consultation de Facebook sur son mobile, etc.

En gros, quand vous commencez un article, votre accroche doit toujours indiquer de quoi on va parler et pourquoi. Avec si possible une forme qui donne envie de lire la suite.

Rapidement, il va falloir aussi respecter la règle 1, sinon les gens vont se demander ce qu’ils foutent là. Si vous ne respectez pas la règle 1 dans le but de respecter la règle 2 ou parce que vous n’avez pas les ressources pour le faire (vous écrivez un article de blog, pas un livre…), alors glissez une explication de ce que l’on a besoin de savoir pour comprendre la notion. Comme ça les gens savent pourquoi ils ne comprennent pas, et peuvent choisir de se documenter au lieu de juste se barrer. Ils peuvent aussi se dire “ok, je comprends pas ça, mais ça ne m’empêche pas de retenir, comme ça quand je saurai l’autre truc plus tard, tout ça deviendra utile”.

Et annoncez la couleur: si c’est un article que vous avez fait long et pompeux, ben dites le. Au moins ils sont prévenus. Si vous allez taper un coup de gueule, introduisez avec le bon ton. Les personnes qui ne sont pas d’humeur sauront que l’article n’est pas pour elles, du moins pas aujourd’hui.

Enfin, de manière générale, respectez l’adage de notre bon Pikachu. Heu, Picasso, pardon:

Pour apprendre quelque chose aux gens il faut mélanger ce qu’ils connaissent avec ce qu’ils ignorent

Ne communiquez pas en zorglang, partez d’une base commune. On se sent en sécurité, et on peut commencer à chercher à comprendre le reste.

5 – Une bon dessin vaut mieux…

Des schémas et des exemples. C’est votre priorité.

Les schémas servent à avoir une vision globale: utilisez les partout où vous avez des relations complexes à expliquer telles que des imbrications, des flux non linéaires (car pour les flux linéaires une liste suffit), des dépendances sous forme de graphe, etc.

Mettez des exemples de mises en œuvre et d’usages. La mise en œuvre permet de savoir comment ça marche. L’usage permet de savoir à quoi ça sert. Les deux sont importants à la compréhension. Dans notre métier, les exemples sont généralement du code. La mise en œuvre, c’est le code qui montre “comment écrire un décorateur”, l’usage c’est le code qui montre “pour quoi utiliser un décorateur”.

Et si vous écrivez beaucoup de texte: une liste vaut mieux qu’un paragraphe. Deux parties titrées valent mieux qu’une grosse partie. Deux petits paragraphes valent mieux qu’un gros. Divisez. Mettez du gras sur les notions clés. Faites des phrases courtes. Rendez la lecture en diagonale facile.

Les gens ne vont JAMAIS lire votre article de bas en haut. Il vont cherchez les images et schémas et sauter sur eux. Si il n’y en a pas, ou si ils s’aperçoivent qu’ils ne comprennent pas uniquement avec le schéma (et en supposant qu’ils aient encore la patience pour lire la suite), ils vont scanner rapidement la page pour cherche des exemples. Pour nous des bouts de code. Si il n’y en a pas, ou si les exemples ne suffisent pas pour comprendre la notion (vous avez déjà perdu la moitié de votre auditoire ici, dans une conf, tout le monde check ses mails à ce stade), ils iront lire le texte.

Même ceux qui croient lire de haut en bas ne le font pas. Inconsciemment, nos yeux scannent les pages, et notre cerveau évalue le coût de la lecture, avec un ratio “intérêt pour le sujet” / “effort demandé”. On a de la chance, en info, généralement le dividende est plus conséquent que dans d’autres domaines comme la finance ou les jeux vidéos. C’est aussi pour cette raison qu’il faut utiliser des phrases simples, pas alambiquées, dans une mise en page claire, car sinon on augmente ce qu’on appelle en ergonomie la “charge cérébrale”. En gros la consommation CPU de la tête du lecteur. C’est très sérieux, il y a même des outils pour calculer la lisibilité d’un texte.

Exemple ironique: cette page qui parle de complexité de texte, et qui est une corvée à lire.

Cette règle est applicable à tout système qui doit être compris: blague, machine outil et surtout… UI. Google et Apple respectent ces règles sur leurs sites et téléphones.

La seule exception à la règle 5 est l’article dit “d’essai”, comme celui que vous êtes en train de lire. Mais sachez que ce genre de texte demande beaucoup de travail, et sera lu par une minorité.

6 – Laissez les gens se planter

C’est dur. C’est très dur.

Mais le mécanisme de base de l’apprentissage c’est de se vautrer comme une grosse loutre bourrée à la bière. De s’en apercevoir. Et de recommencer en essayant de ne pas se planter cette fois.

Et de se planter à nouveau. for… in et try/catch.

Donc, si vous êtes dans un cours, ou avec un collègue en train d’expliquer un truc, résistez à l’envie de lui donner la réponse. Résistez à l’envie de corriger son code tout merdique qu’il va mettre en prod (l’enculé !).

Si vous émettez une critique, ce sera une seule. Même si il y a 20 choses à redire. On est limité dans le nombre de critiques qu’on peut assimiler. Après on se braque.

Et évidement, ça va sans dire, ne soyez pas méprisant dans votre critique. Vous faites de la merde vous aussi. Et elle sent pas la rose.

Mais inutile d’envelopper ça dans un sandwich de compliments comme on vous l’apprend en cours de com’, et surtout, surtout, évitez ces tournures à la con de la soi-disant “communication non violente” du genre “tu penses pas que ce serait mieux si…”. Dites clairement et simplement ce que vous pensez. Il y a rien qui crie plus “je te regarde de haut” qu’un mec qui essaye maladroitement de ne pas te blesser. Laissez ça aux gonzesses, elles elles savent le faire correctement, nous on sonne encore plus désagréable et faux-cul.

Se simplifier les tests Python avec Pytest

mercredi 7 novembre 2012 à 13:04

Personne n’aime faire des tests unitaires. C’est un peu comme les impôts: on sait que c’est utile, mais on est jamais content de s’en occuper.

Réchèr m’a dernièrement posé la question de l’abondance des méthodes assertTruc() et leur utilité, et je lui ai répondu que chaque méthode donnait des infos adaptées au test effectué.

Max m’a dernièrement fait la remarque que les tests “c’est bien mais c’est compliqué”. J’avoue être à court de contre argument.

Et si on pouvait rendre les tests plus simples à écrire et à lire, aussi simple qu’un assert, mais avec un résultat plus clair que unittest en sortie ?

pip install pytest

Pytest est une lib de test à utiliser à la place de unittest. Ses créateurs utilisent l’introspections et l’injection de dépendance pour créer des tests magiquement.

D’ordinnaire, la magie, on aime pas trop ça en Python, et on laisse ça aux rubistes. Mais dans le domaine du test, qui n’est pas un code de production avec les mêmes contraintes de lecture, de recherche de bugs architecturaux et d’interactions entre dev, mais qui a par contre une forte contrainte “j’ai pas envie d’écrire un caractère de plus”, ça a du sens.

Voilà comment ça se passe: on vire toute ce qui est classe et setup verbeux. On laisse juste les imports de vos libs, et les tests. Avec des assert. Pytest va alors analyser tout ça, et faire tout le boulot autour pour vous.

Exemple:

Dans votre lib:

def ma_fonction_a_tester(a, b):
    return a + b

Dans votre fichier test.py:

from malib import ma_fonction_a_tester
 
def test_function():
    assert ma_fonction_a_tester(1, 1) == 2

Et on lance :

py.test test.py

Pour obtenir:

====== test session starts ======
platform linux2 -- Python 2.7.3 -- pytest-2.3.2
collected 1 items

Bureau/test.py .

====== 1 passed in 0.02 seconds ======

Et voilà, les tests redeviennent bêtes et simples. Mais ils ne perdent pas en puissance. Car Pytest analyse le assert, et le transforme à la volée. Du coup, pour les structures de données complexes, Pytest va vous sortir les infos de debug utile que assertTruc() de unittest vous aurait sorti.

Exemple avec des tuples:

def ma_fonction_a_tester(a, b):
    return (a * 2, b * 2)
 
 
def test_function():
    assert ma_fonction_a_tester(1, 1) == (2, 2, 3)

Va donner:

====== test session starts ======
platform linux2 -- Python 2.7.3 -- pytest-2.3.2
collected 1 items

Bureau/test.py F

====== FAILURES ======
______ test_function ______

    def test_function():
>       assert ma_fonction_a_tester(1, 1) == (2, 2, 3)
E       assert (2, 2) == (2, 2, 3)
E         Right contains more items, first extra item: 3

Bureau/test.py:7: AssertionError
====== 1 failed in 0.02 seconds ======

On nous indique clairement qu’il y a un item de trop dans mon résultat, et lequel.

En prime, Pytest nous affranchie des fonctions setUp() et tearDown() génériques. Le problème de ces méthodes dans unittest, c’est qu’elles sont éxécutées à chaque début de test. On en a pas forcément besoin, et on a pas les mêmes besoins pour chaque test.

Pytest ajoute encore un peu de magie pour régler le probleme

Dans votre lib, vous avez ça:

import re
 
def extraire_title(html):
    """
        Extrait le title d'une page HTML a base de regex. C'est mal.
    """
    try:
        return re.search(r'<title[^>]*>(.*)</title>', html).groups()[0]
    except IndexError, AttributeError:
        return None

Dans votre fichier de tests, vous aurez:

import urllib2
 
import pytest
 
@pytest.fixture
def exemple_html():
    return urllib2.urlopen('http://www.google.com').read()
 
def test_extraire_title(exemple_html):
    assert extraire_title(exemple_html) == 'Google'

Qu’est-ce qui va se passer ?

exemple_html() va être déclarée comme une “fixture”, c’est à dire quelque chose qui contient ou génère des données de tests.

Quand Pytest va lancer les tests, il va voir qu’un argument de test_extraire_title() porte le même nom que la fonction exemple_html. Alors, il va automatiquement appeler exemple_html(), et passer le résultat à test_extraire_title() pour lancer le test.

On peut donc avoir des tas de fonctions de setup, partagées entre plein de fonctons de tests.

Utiliser AngularJs avec le langage de template de Django

mardi 6 novembre 2012 à 15:29

AngularJS est vraiment une bibliothèque javascript prometteuse. Je suis en train de jouer avec, avec l’espoir qu’un jour elle remplace complètement jQuery + Backbone.js dans tous mes projets.

Une chose qui peut être ennuyeuse cependant, c’est que par défaut Angular évalue les expressions qui sont marquées par {{}}, exactement comme le langage de template Django. Cela amène à un conflit.

Heureusement on peut changer ces marqueurs à l’initialisation:

var m = angular.module('monApp', []); 
m.config(function($interpolateProvider) { 
    $interpolateProvider.startSymbol('[['); 
    $interpolateProvider.endSymbol(']]'); 
});

Ici je choisis [[]].

Devenez un super-héros, ou pas…

lundi 5 novembre 2012 à 20:53

Comme j’ai passé le week-end sur une doc de 2.2 gigawatts j’ai zappé après 3 claquages de synapses et me suis écroulé devant la télé, et là sur TV5 monde je tombe sur le reportage : “Deviens un super-héros… pour de vrai !”

Reportage réalisé par Aleksandar Dzedz.

L’action se situe principalement aux USA, des gens (généralement des jeunes du genre “je sais tout je vais à la FAC”) se déguisent en super-héros et veulent faire régner la loi, la justice, dans leur quartier.
Les premières minutes m’ont fait me demander si c’était une blague ou pas, j’ai même failli zapper tellement je trouvais ça nul, et puis quelque chose m’a forcé à regarder, la flêmme de changer de chaîne surement.

Mais au fil du reportage (qui ne porte pas de jugement d’ailleur, ça change des merdes de Rance télévision) le réalisateur nous dépeind les personnages un par un et les filme dans leurs actions.
Ils sont tous déjantés (surtout Master Legend qui distribue des diamants imbibés de ses supers pouvoirs, sisi…) mais ils ont un tous un point commun qu’on aura jamais en France, c’est le : “Faites-le vous même”.
Ils savent très bien que les associations c’est du flanc, que l’Etat n’a rien à foutre de ses pauvres et donc ces super-héros font avant tout du social et ne courrent pas (comme je le pensais au début) après les méchants.

Des chaussettes, un café chaud et une couverture:
Même si certains font des rondes de quartier pour ne serait-ce que par leur présence dissuader certains voleurs de passer à l’acte. La grande majorité distribue non pas des pains mais des..chaussettes.
Ca parrait con les chaussettes mais c’est le genre de chose qui fait défaut aux gens qui vivent dans la rue avec des couvertures, et un peu de chaleur humaine.
Une poignée de main, quelques mots, un sandwich, un café, c’est vrai qu’au final on devrait tous le faire de temps en temps. C’est rien pour nous mais ça compte pour la personne qui n’a plus rien.

Pourquoi ils se deguisent ?
Là où je pige pas trop c’est le fait de se déguiser en super-héros, surement que dans la tête des américains c’est synonyme de supers pouvoirs et que ça les motives encore plus à faire leurs bonnes actions. Un peu comme quand on met son super slip moulant quand on va à la plage faire le beau, ça permet de se sentir dans la peau d’un autre, d’un Superman.

Je ne suis pas sur que ça emmergera un jour chez nous, le Français est trop égoïste par nature, trop fainéant et surtout trop individualiste pour agir de la sorte (j’en suis une belle preuve) mais je dois avouer qu’à la fin du reportage je me suis immaginé à aller acheter un sac avec couverture, chaussettes, etc pour le filer à un malheureux mais bien sur je ne l’ai pas fait.
Quoiqu’il en soit c’est un reportage que je recommande, le côté déjanté des ricains leur font faire des trucs étonnants quand même.

PS: mon super-héros préféré est “Life” si vous regardez le reportage, plutôt discret avec juste un petit masque à la frelon vert.

Et vous allez vous aimez les uns les autres bordel de merde !