PROJET AUTOBLOG


Sam & Max: Python, Django, Git et du cul

Site original : Sam & Max: Python, Django, Git et du cul

⇐ retour index

Fêtons le départ de Max

lundi 22 juillet 2013 à 23:04

Je crois que tout le monde est au courant, Max quitte la bride de la France pour retrouver les bridés de Thaîlande. Il faut marquer le coup, non ?

Alors on a pondu un petit jeu :

Ouvrez le coffre !

Le principe est simple, le premier qui arrive au bout de la série d’énigmes a gagné.

Le jeu encourage la programmation, particulièrement Python, mais peut être résolu de plusieurs manières, certains plus élégantes que d’autres :) C’est très orienté nerd.

Dans tous les cas j’ai codé ça un peu à l’arrache car on a eu l’idée en milieu d’après-midi, alors si ça se trouve il y a des failles à exploiter pour gagner plus vite. Même un petit brute-force, ça se tente (même si je pense que le serveur mourra avant d’avoir progressé de 10% et que c’est celui du blog \o/).

Bref, y a pas de règle à part que normalement le jeu se désactive une fois que le premier joueur ouvre le coffre. Mais n’hésitez pas à mettre un com si vous trouvez un bug qui vous empêche la progression. Cela dit, si vous êtes bloqué, y a quand même plus de chance que ce soit parce que vous n’avez pas trouvé la solution. Et là, on vous aidera pas ^^

Sachez quand même que j’ai fais le jeu plusieurs fois, et pondu des scripts en conséquences pour tester que ça marche bien comme prévu.

Quand à savoir ce qu’il y a dans le coffre…


Le jeu est terminé, le code source est en ligne.

flattr this!

Django, une app à la fois : routes nommés et liens dynamiques

dimanche 21 juillet 2013 à 21:40

J’ai rajouté une app dans le repo du projet django, une app à la fois.

Cette fois je fais la démonstration des URLS nommées, qui permet d’avoir un découplage propre entre les vues, le template et les routes.

Comme d’hab il y a une version française et anglaise commentées, et comme d’hab, ça m’a pris 3 plombes alors que je m’étais dis que cette fois, promis, je ferai court.

Je sers la science et c’est ma joie.

flattr this!

Le fichier .gitkeep

samedi 20 juillet 2013 à 08:34

On ne peut pas commiter les dossiers vides avec git, si il n’y a pas de fichier dedans, git ignorera le dossier. Parfois, quand on veut partager une arborescence très précise, c’est handicapant. Il s’est donc créé une convention dans la communauté : le fichier .gitkeep.

C’est un fichier vide, nommé, comme vous pouvez l’imaginer, .gitkeep, et que l’on met dans chaque dossier que l’on veut garder. On ajouter le fichier à l’index, et on commit. Dès que le dossier n’est plus vide, on supprime le fichier .gitkeep, et on le commit.

Cependant on veut parfois garder un dossier vide, et qu’il n’y ait jamais de fichier dedans, comme par exemple le dossier /static/ de Django si vous distribuez un software à base de ce framework, puisqu’il doit servir à vos utilisateurs pour y mettre leurs fichiers statiques plus tard. Il serait donc embêtant de mettre un fichier dedans par erreur et le commiter.

Pour éviter cela, il suffit de créer un fichier .gitignore dedans, et de lui donner ces règles :

*           # git ignore tous les fichiers
!.gitignore # sauf celui-ci

Ce qui aura pour effet d’interdire le moindre ajout de fichier du dossier en question dans Git, à part le .gitignore, évidement.

flattr this!

Envie de meurtre

vendredi 19 juillet 2013 à 11:55

Oui, je tape beaucoup sur nodejs et la communauté javascript en général. Mais ils le méritent, bordel !

Je tombe sur un projet OpenSource qui est sorti en janvier dernier. Ils vendent leur popote “As A Service”, donc a priori, on pourrait se dire qu’ils voudraient qu’on les prennent au sérieux.

Ils fournissent un serveur pour se faire la main en local avant de taper dans leur API payante. Cool. Merci.

D’abord, il faut évidement passer par l’installation de node et tout le bordel. Bon, admettons. Même si Python est installé par défaut, il faut bien installer pip.

Mais ensuite, au lancement du serveur, rien. Il reste là, silencieusement. Pas de mode verbose, un mode debug qui ne fait absolument rien.

Mon code client se connecte, et puis nada. Silence radio sur leur lib client et serveur. Vide intersidéral.

La doc est succincte (3 pages) et rien qui ne parle du problème. Question sur la mailling list. Pas de réponse.

A ce stade j’en ai déjà ras le cul. Les libs node qui marchent pas et qui en plus veulent pas mettre un putain de message d’erreur, y en a déjà un paquet. C’est une épidémie dans cette communauté.

Mais je retrousse mes manches, et je vais voir dans le code source.

Et là, je tombe sur 400 lignes de ça :

    var client;
    if (!self._clients[key] || !(client = self._clients[key][id])) {
      if (req.params.retry) {
        res.send(401);
      } else {
        // Retry this request
        req.params.retry = true;
        setTimeout(handle, 25, req, res);
      }
      return;
    }

C’est un appel au génocide, un style de coding comme ça ! Sérieusement, déjà Javascript est un langage moche, avec un scoping de merde, du nesting en pagaille et tout un tas de pièges qui fait que le code est dur à lire et à comprendre.

Mais là, vous imaginez la concentration qu’il faut pour lire ces 10 putains de lignes ? Et les remettre dans le contexte du script complet (qui au passage est commenté comme un diabétique sucre son café).

C’est trop dur de ne pas pondre des trucs innommables comme !(client = self._clients[key][id]) ? Un ligne de plus a taper. Trop difficile de mettre des noms de variables complets ? id, mais id de quoi connard ? Je remonte tout le script pour m’en souvenir ? Et pourquoi tu assignes client = self._clients si c’est pour ne pas t’en servir ? Et puis un double if imbriqué suivi d’un appel récursif asynchrone, c’est tellement fun pour suivre le workflow !

400 lignes comme ça, après le dîner, ça fout la chiasse. Alors oui, c’est de l’open source, faut pas faire le difficile, etc.

Mais bordel, qu’on ne vienne pas me dire que c’est l’avenir. Les ex-script kiddies d’hier, codeurs PHP et VB, commencent à peine à écrire du code propre. Et là grosso modo on va se taper la vague des intégrateurs Web qui se mettent à coder parce que c’est du JS comme dans le navigateur ?

GGGGGGGGGGGGRRRRRRRRRRRRRRRRRRRRRRRR !

Je devrais faire une émission style “joueur du grenier”, mais pour le code pourri.

flattr this!

Bitcoin: créer un portefeuille, obtenir des bitcoins et payer

jeudi 18 juillet 2013 à 10:49

Vous avez tout lu sur Bitcoin et vous êtes convaincus. Tant pis si c’est instable, tant pis si ça peut s’arrêter demain, vous voulez essayer.

Mais on commence par où ?

D’abord, il faut se créer un portefeuille Bitcoin. Si vous voulez soutenir le mouvement Bitcoin jusqu’au bout, il est bon d’utiliser un client complet comme Bitcoin-Qt. Malheureusement ça veut dire qu’il faut avoir 15 Go d’espace disque rien que pour le logiciel, et le laisser tourner toute la nuit la première utilisation. Dur dur, quand on débute.

Pour cette raison, je vais vous inviter à commencer par un truc plus simple : Electrum.

WARNING : Bitcoin est une technologie internet. Il ne sert à rien sans Internet. Connectez-vous, et assurez vous d’être à un endroit qui ne bride pas votre connexion.

C’est un logiciel Python qui fonctionne sur Windows, Mac et Linux. Il est encore jeune, mais plutôt bien foutu. L’installation est un peu particulière, heureusement la page d’explication est bien faite.

Création du portefeuille

Au démarrage, le logiciel va vous dire qu’il ne trouve pas de portefeuille et va vous demander si vous voulez en créer un ou en restaurez un. Créez-en un.

Electrum va créer un nouveau wallet et vous afficher ce qu’on appelle une “seed” :

Capture d'écran d'une seed fournie par Electrum

Evidement, ce n'est pas la seed de mon portefeuille réel, bande de brigants !

C’est un moyen de récupérer votre portefeuille si vous le perdez. Soit vous gardez le QR code, soit vous notez les mots quelque part, avec une parfaite précision sur les lettres et l’ordre.

Cachez cela dans un endroit sûr. J’ai dis sûr. Pas un copier / coller sur votre dossier perso, pas sur un post-it dans votre bureau ou sac à main.

Quiconque tombe sur cette information peut récupérer tout votre pognon.

Copier votre seed, et appuyez sur “ok”. Electrum va vous demandez de rentrer votre seed. C’est pour voir si vous suivez :-)

Coller votre seed et validez.

On va vous demander de choisir un serveur avec une fenêtre un peu compliquée, OSEF pour le moment, faites juste “ok”.

Là vient la phrase fatidique : choisir un mot de passe pour votre portefeuille.

Choisissez un très très bon mot de passe, que vous êtes certain de retenir.

Et voilà, vous avez votre portefeuille.

Gagner des sous

Votre portefeuille est bien vide, il va falloir le nourrir.

Pour cela vous avez plusieurs choix, comme dans la vie réelle :

En parlant d’adresse Bitcoin…

Si vous allez dans l’onglet “recevoir” d’Electrum, vous verrez ceci :

Capture d'écran de l'onget "recevoir" du logiciel electrum

"Blog" est une adresse réutilisée, "vente de chiouaoua" ne sera utilsée qu'une fois

A gauche, ce sont vos adresses. C’est ce qui vous permet de recevoir des sous. Donnez cette adresse à quelqu’un, et il peut vous envoyer des bitcoins.

A droite, c’est le nom que vous donnez à l’adresse. Seul vous le verra. C’est pour vous permettre de vous y retrouver.

Vous avez un nombre infini d’adresses, Electrum va en créer au fur et à mesure que vous en utilisez. Chaque adresse peut être utilisée un nombre infini de fois.

Mon conseil :

La raison à cela c’est que plus vous utilisez d’adresses, plus il est difficile de faire le lien entre vous et les transactions.

Faites bien attention en donnant une adresse, copier bien TOUTE l’adresse. Une adresse, c’est très long, et c’est compliqué. Par exemple :

1MKn4yhJkpYAA4PxfFg4PVUnCmSTmWJnXp

Et relisez bien que vous avez posté la bonne. Les transactions Bitcoin sont irréversibles.

Moi je regarde les 3 premiers et les 3 derniers caractères de l’adresse pour m’assurer que je n’ai pas merdé.

Acheter des sous

Pour démarrer, vous n’aurez pas forcément de source de revenue Bitcoin. Peut être voudrez-vous en achetez contre des euros. Il existe des places de marché pour cela.

Ma préférée est bitcoin.de, mais j’en ai changé deux fois. Je vous invite donc a en essayer plusieurs, et surtout, à ne JAMAIS laisser beaucoup de bitcoins sur le compte de ces sites. Dès qu’un échange est terminé, faites un virement vers votre portefeuille. Tout le principe de Bitcoin est de ne pas avoir de “compte en banque”.

De nombreuses places de marché ont connu des problèmes par le passé : attaques, bugs, incompétence, malveillance, arnaques… Vos bitcoins ne sont en sécurité que dans VOTRE portefeuille. Ou plutôt dans vos portefeuilles, quand vous en aurez beaucoup, car il ne faut pas mettre tous ses œufs dans le même panier.

Je ne vais pas expliquer comment fonctionne bitcoin.de : c’est très classique. Inscription, remplissage de profile, et ensuite on dit ce qu’on veut acheter ou vendre.

Le paiement se fait par virement SEPA, ce qui est gratuit et prend 1 minute depuis la plupart des interfaces de banque en ligne.

Si vous achetez, bitcoin.de va vous alerter par email quand, combien et à quel compte faire le versement. Une fois le virement reçu, votre interlocuteur valide la transaction et votre compte bitcoin.de est crédité des bitcoins. A vous de transférer les bitcoins depuis ce compte vers votre portefeuille via le menu “Deposit and disbursement of Bitcoins”.

Si vous vendez, il faut créditer le compte bitcoin.de avec des bitcoins. Ensuite vous serez autorisé à vendre ce montant maximum. Il faudra aussi avoir rempli vos coordonnées (RIB) bancaires dans votre profile. L’argent sera viré directement sur ce compte. N’oubliez pas de valider la transaction une fois l’argent reçue pour que votre interlocuteur soit crédité des bitcoins.

Commencez par de petites sommes (50 euros), ça vous permettra de vous faire la main.

Il existe d’autres voies plus ou moins légales pour échanger du Bitcoin contre de l’argent. Celle-ci est juste la plus simple et la plus sûre.

Envoyer des sous

Ça y est, vous avez du pognon dans votre portefeuille !

Il est temps d’aller flamber. C’est fort simple, il suffit d’aller dans l’onglet “Envoyer” d’Electrum et d’entrer l’adresse vers laquelle vous voulez envoyer des bitcoins :

Capture d'écran de l'onglet "envoyer" du logiciel Electrum

Une bonne description de la transaction est important pour quand vous ferez vos comptes plus tard

ATTENTION : l’envoie et la réception des bitcoins n’est pas instantané. Cela peux prendre une dizaine de minutes. Ne paniquez pas.

Vous noterez qu’il y a une case “frais”. Cette case est facultative, vous n’avez pas à mettre quoique ce soit dedans. Néanmoins, cette somme, qui par ailleurs est ridiculement petite, va encourager les nœuds bitcoins à traiter votre transfert en priorité. Je vous invite à toujours le faire, sinon votre virement va prendre des plombes, voir des jours, et pour 5 centimes pour 75 euros de virement, faut pas déconner.

Enfin, le Bitcoin est divisible, n’hésitez pas à acheter des 0.x ou x.z de bitcoins, c’est tout à fait normal.

flattr this!