Site original : Sam & Max: Python, Django, Git et du cul
Les gens qui lisent la presse d’information généraliste font partie de ceux qui ont le désir – à défaut d’y arriver effectivement – de faire un peu plus marcher leur cerveau que la moyenne.
Or, il est difficile de ne pas s’adonner à un triste bilan sur la dernière décennie de ses performances : désinformation, infantilisation du message, sensationnalisme, manque d’analyse, censure, hypocrisie, abus de marronniers et de sujets creux, formes et formats éculés (alors que franchement, le renouveau est juste sous votre nez), relation évidente avec le pouvoir (alors qu’on en attend un contre pouvoir, justement), et globalement, un manque de couilles évident, castrées par l’objectif financier.
Bref, la presse ne nous informe plus.
Et elle tombe des nues quand soudain, une source d’information neuve apparaît via internet, et que son public se barre.
Alors on crache sur les vilains pirates, ceux qui volent l’information et la publient ailleurs.
Le copier / coller est pourtant une pratique journalistique qui a atteint le statut de discipline Olympique.
Alors on crache sur les incompétents blogueurs qui ne sont que des amateurs ne vérifiant pas leurs sources.
La répétition aveugle d’une information non maîtrisée est pourtant un constat que tout spécialiste fait quotidiennement : vous le savez pour l’IT, mais j’ai discuté avec des avocats, des médecins, des agriculteurs… Tous sont effarés.
Alors on crache sur le modèle économique ! Comment ? Fournir une information gratuite ? Ça ne peut pas marcher ça, ma petite dame ! Nous on est sérieux ! Nous on bosse ! Nous on doit être payé !
Et pourtant, payé pour quoi ? Pour nous servir une information, au mieux réchauffée, mal digérée, composée d’ingrédients faisandés issus d’un producteur véreux dans une assiette sale ?
Je suis prêt à payer. Je paye des tas de choses sur le net. Vous n’avez pas remarqué comme tout le monde semble se faire un max de pognon sur Internet depuis les années 2000 ? Vous croyez qu’ils l’impriment ? Les gens paient. Surprise !
Je ne paie pas CETTE MERDE, c’est tout. À tous viser une ménagère de moins de 50 ans stéréotypée et sur-sollicitée, vous en avez perdu le cœur de votre revenu.
Les gens ne paient que ce qu’ils estiment avoir besoin d’acheter. Aussi étonnant que cela paraisse, ils ont un budget limité. Si, si. Et ils le dépense en entier. Parfois ils sont même à découvert. Étonnamment ça amène à prioriser.
Quand sur une échelle de valeur, “acheter un journal” est sous le barreau “obtenir des vies à Candy Crush”, on la ferme, et on se lance dans un peu d’introspection.
Si ça ne se vend pas, ce n’est pas parce que les gens sont de vils voleurs à l’esprit étroit. C’est parce qu’ils ne voient aucune raison de payer pour ça.
C’était pareil avec la musique en CD. Et Apple à tout raflé parce que les dinosaures n’ont pas compris comment faire de la thune sur le net et se sont mis à chialer au lieu de se bouger leurs gros culs bien engraissés par les ayant droit.
C’était pareil avec les films. Et Netflix a prouvé au monde que le piratage n’empêchait personne de faire des millions de bénéfice si on faisait ne serait-ce que mettre un peu de chantilly sur l’étron des produits habituels.
La presse ne nous a pas informé. Et en plus nous a emballé ça dans du papier toilette.
Personne n’achète un couteau qui ne coupe pas. Alors si en plus il est rouillé…
On est donc allé voir ailleurs.
Parce qu’on le pouvait, enfin.
Quand free est arrivé, le reste du marché s’est réveillé. On pouvait soudainement quitter le statu quo.
Avant la presse bénéficiait d’un marché captif où tous les acteurs s’étaient mis d’accord pour fournir des produits de la même médiocre qualité.
Et Internet est arrivé avec les blogueurs, les objecteurs de conscience, les journaux alternatifs, les wiki, les agrégateurs de news, les curateurs, les réseaux sociaux. Et une plate-forme sur laquelle le public pouvait répondre. S’exprimer. Juger. S’inscrire en faux. Les aborder, et les tutoyer. On pouvait soudainement quitter le statu quo.
Alors on l’a fait.
Un article comme celui-ci, vous ne le trouverez dans aucun journal. Or c’est exactement ce que je veux lire. Et devinez quoi ? Je n’ai pas été payé pour l’écrire. Et vous n’aurez pas à payer pour le lire. Il n’y a même pas de pub.
Si la presse veut de nouveau faire de l’argent, il va falloir qu’elle donne envie d’acheter. Il va falloir qu’elle fasse mieux que reflets, sebsauvage, l’odieux connard, maitre eolas, info-libre et l’ensemble des outils d’agrégation qui permettent de synthétiser, trier, filtrer et consulter exactement ce dont on a besoin, au meilleur moment.
Car clairement, je ne vais pas payer pour moins bien. Et actuellement, c’est exécrable.
Mais oui, on va parler un peu plus de Python 3 à partir de maintenant \o/
C’est qu’avec la prochaine version 3.4 qui apporte tellement de bonnes choses, Django 1.6 pleinement compatible et des libs comme Pillow et six pour combler les trous, ça y est, on peut enfin s’y mettre.
Commençons donc par les annotations, feature simple, et qu’on ne retrouve pas backportée en 2.7.
A rien !
Non, non, je ne déconne pas. Non seulement les annotations sont parfaitement optionnelles, mais en plus elles n’ont aucun effet.
Je répète pour que ça rentre : vous n’avez pas à utiliser les annotations. Aucun programme Python n’a besoin d’utiliser les annotations. Vous pouvez programmer votre vie entière en Python sans avoir jamais à utiliser les annotations. Et si vous les utilisez, elles ne changeront rien à votre programme.
Point.
Python est un langage très souple, et une raison de sa souplesse c’est que la nature des données que vous traitez est dynamiquement découverte à l’exécution. Particulièrement, le type des variables est dynamique. La portée des variable est dynamique.
Avantages :
Inconvénients :
C’est la nature de Python. Pour certains cas, c’est ce qu’on veut. Dans d’autres cas où ce n’est pas adapté, il faut choisir un autre langage.
Les annotations sont là pour corriger ce point : on va permettre de fournir des informations en plus, si, et seulement, si, on le souhaite.
Ces informations n’auront aucun impact sur l’exécution du code. La VM Python va les ignorer. Mais un outil extérieur pourra potentiellement les utiliser pour en faire quelque chose.
Faites chauffer votre interpréteur de Python 3…
On peut annoter uniquement les paramètres d’une fonction (ou méthode) :
>>> def ma_fonction(param1: "Une annotation", param2: 1 + 1, param3: int): ... print(param1, param2, param3) ... >>> ma_fonction(1,2,3) # une annotation ne change absolument RIEN 1 2 3
L’annotation se note donc ainsi : nom du paramètre: annotation.
L’annotation PEUT être n’importe quelle expression Python valide. En fait l’annotation DOIT être une expression valide. Et cette expression sera exécutée une, et une seule fois, à l’initialisation du module. Le résultat sera stocké et accessible, via l’attribut __annotations__
:
>>> ma_fonction.__annotations__ {'param1': 'Une annotation', 'param2': 2, 'param3': <class 'int'>}
Évidément, les annotations se mélangent sans problème avec les cas avancés de paramétrage :
>>> def ma_fonction(param1 : "Une annotation" = "valeur par défaut", *param2: "Autre annotation"): ... print(param1, param2) ... >>> ma_fonction() valeur par défaut ()
On peut également spécifier une annotation pour la valeur de retour :
>>> def ma_fonction() -> None: # un petit goût de coffeescript ... pass ... >>> ma_fonction.__annotations__ {'return': None}
Et combiner tout ce bordel pour faire des trucs bien compliqués qui vous garantissent la sécurité d’emploi, ce qui manque cruellement en Python (les trucs compliqués, pas la sécurité d’emploi…):
>>> def ma_fonction(param1: lambda x: x * 2, ... param2: (lambda x: x * 2)(2) = 5, ... **params : "Keywords parameters rocks") -> list: ... res = [param1, param2] ... res.extend(params) ... return res ... >>> ma_fonction(1, 2, param3=3, param4=4) [1, 2, 'param4', 'param3'] >>> ma_fonction.__annotations__ {'return': <class 'list'>, 'param1': <function <lambda> at 0x7f77a2982e60>, 'param2': 4, 'params': 'Keywords parameters rocks'}
Les lambdas ne peuvent pas être annotées par contre.
Les annotations sont le cas typique d’une fonctionnalité bac à sable. En clair, sur la mailling list il y a eu de nombreuses requêtes pour permettre de la vérification de type, de l’auto documentation, de la translittération et autres joyeusetés.
Ne sachant pas comment répondre de manière propre à ces demandes, ni lesquelles étaient les plus prioritaires, les annotations ont été créées. Le but et de laisser maintenant la communauté fabriquer les outils, et ainsi :
Des outils comme pyanno donnaient déjà un exemple de ce que la communauté pouvait désirer. Reste à savoir si ce sera vraiment utilisé. Les gens qui font du Python sont rarement fan du Java. Mais le caractère optionnel de la chose pourrait bien ajouter un vrai plus au langage sans l’alourdir.
Voici donc ce qu’on peut attendre des outils tierces parties qui utiliseront les annotations dans le futur :
L’utilisation de RPython pour coder Pypy a montré que les perfs de Python pouvaient être fantastiques, si on rajoutait quelques annotations. RPython, est, je le rappelle, un subset de Python (donc tout code RPython tourne dans l’interpréteur Python normal), mais avec des annotations de type, sous forme de commentaires.
On peut donc imaginer que dans le futur, les codes en fort besoin de perfs comme pour l’embarqué ou le traitement scientifique, pourront ajouter dans les parties clés de l’algo des annotations pour booster la vitesse ou diminuer la mémoire consommée. On parlerait ici alors d’annotation de type. int
, list
, UneClasse
sont en effet des expressions Python valides…
L’avantage de l’annotation, c’est son caractère purement optionnel, qu’on peut ajouter seulement à certains codes, ou à une partie du code.
Les IDE ont du mal avec Python. La complétion du code, l’aide en popup, la refactorisation automatique et toutes ces joyeusetés sont rarement bien implémentées.
Dans ma vie de tous les jours, je m’en branle. Je code tellement vite en Python, je ne m’en aperçois même pas. Mais quand j’utilise une nouvelle lib, ça peut être utile.
Typiquement, pour un code comme celui de 0bin, je ne me servirais pas des annotations. Mais pour une lib comme minibelt, je prendrais peut être le temps de mettre des annotations de type, pour aider ceux qui vont l’utiliser. Ou une annotation pour signaler les exceptions que certaines fonctions peuvent lever.
Certains voient les annotations comme un complément aux docstrings. Ce n’est pas mon cas, mais je vous le note, au cas où ça devienne une tendance.
Dans la même lignée de l’aide à la saisie, pour certaines fonctions (c’est rare, mais ça arrive), on veut éviter le duck typing et forcer l’utilisateur à passer un type en particulier. Avoir cette possibilité via les annotations pourraient être utile.
Je suis septique sur cet usage, en effet des libs existent depuis des années pour faire cela, et plus, via des décorateurs, et ça n’est pas très utilisé. La différence est qu’un mécanisme standard pourra être détecté par les IDE.
Après on risque d’avoir des abus pour ce genre de fonctionnalités. Je vois d’ici arriver les codeurs d’autres langages caféinés, essayant de pousser l’usage d’une annotation rendant des attributs private
:-)
Heureusement, les annotations seront normalement pour toujours optionnelles.
Vous avez un code Python et vous voulez le transformer en code Cobol ? Bon, le compilateur de Pypy a déjà le potentiel de le faire, mais avec les annotations, il est potentiellement possible de rajouter suffisamment d’informations pour qu’on puisse toujours transformer un code de Python vers un autre langage Turing complet.
J’ai dit potentiellement.
Les annotations ne font rien. Elles n’ont pas le but de faire quelque chose et de toute façon sont optionnelles.
Leur but est de permettre à la communauté de créer des nouveaux outils utilisant les annotations et voir lesquels seront les plus utilisés, matures et désirés.
Pour le moment, il n’y a pas grand chose de fait avec, mais jusqu’ici Python 3 n’a pas été très populaire. Cela risque de changer avec 2014 qui propulsera Python 3.4 dans la cour des grands.
Je suis quelqu’un qui voyage pas mal – pour ceux qui ont suivi le blog je suis actuellement à l’étranger (à l’hotel) et je suis amené à me déplacer dans divers pays – et j’aime avoir un fond sonore quand je code, quand je ramène une petite aussi, quand je me détends, quand je regarde un bon Ghostbusters, bref un peu tout le temps.
Les ordis portables valent pas grand chose en son, de ce que j’ai pu entendre ça manque de basses à mon goût, de profondeur dans les mediums, c’est plutot nasillard.
Mon petit Mac Book Air toussote dès que je pousse un peu le son sur de la musique rock pour aller danser le Jerk, celui de Sam fait pas mieux et j’ai pas envie de me balader avec une chaine Hifi quand je veux mettre un peu de son à l’heure du Ricard.
Il y a de cela quelques mois Sam a acheté une JAMBOX de chez Jawbone, une petite boite rouge toute laide qui ressemble à une brique. Très septique et prêt à lui lancer une de mes fameuses phrases Coféenne “c’est de la merde” je suis resté asser surpris lorsque la petite brique s’est mise en action.
Avec les semaines l’idée de m’en procurer une me turlupina jusqu’à ce que je la trouve dans un “apple store” local pour seulement 95€ (140€ chez Amazon France, c’était une promo). J’ai sauté sur l’occas et je dois dire que je ne suis pas déçu du résultat. C’est parti pour un ptit test !
Le tout en musique!
Ouverturage de la boite:
Jambox unboxed - aux côtés de notre étalon maison
L’ensemble se compose de la jambox, d’un cordon mini jack et d’une alimentation bien foutue avec cordon usb/micro usb. Un peu trop d’emballage à mon goût mais c’est la mode à la “Aiepeulle”.
J’ai pris soin d’y joindre un objet très courant afin de vous donner une idée de la taille.
Bouton on/off, mini jack pour y brancher son smartphone old school ainsi que la prise micro usb de recharge
Pratique les gros boutons de volume pour quand on est cuit...
Sur le côté on a 3 boutons, le bouton on/off et pairing pour la connexion bluetooth, un mini jack pour y brancher un casque, la prise micro usb pour recharger la bête. Sur le dessus le volume avec de gros boutons pour pas se louper quand on est cuit lors de l’apéro.
La Jambox pèse quelques 300 grammes, pas très lourd au final pour le son qui en sort. Pour ce qui est de l’autonomie j’ai pu regarder un film sans problème et elle est donnée pour 10h (ce que je doute quand même, ça reste à tester)
Prise rabatable, pratique pour quand on voyage avec sortie USB
Le chargeur est pas mal car sa prise est rabatable, ceux qui voyages apprécieront, de l’autre côté c’est une sortie USB sur laquelle le cordon d’alimentation USB/Micro USB se branche, là aussi c’est pas mal si on le casse on rachète juste le cordon.
Branchagationnement:
La Jambox peut se brancher soit par la prise mini jack soit par Bluetooth, pour le Bluetooth il suffit de jumeler les deux appareils en suivant la notice :p
Attention! Sous Mac il se peut que le son grésille, j’ai eu ce problème et il faut modifier un fichier de config:
SOUS MAC
Il faut changer le bitrate de la connexion Bluetooth. Dans un terminal:
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -integer 48
Redémarrez l’ordi, éteignez la lumière du salon, fermez le frigo, plantez un avocat pas trop mûr dans un bol à choucroute. Le problème devrait être résolu (en tous cas “chez moi ça marche”)
Test en conditions sismiques:
Parfaite tenue de route dans les mediums et les basses ! ça craque les Watts!
La pureté du son n'a d'égal que celle des lignes. Pointu, précis !
Une fois la bestiole connectée je lui ai imposé quelques tests sismo-sismiques qu’elle a remportée haut la main comme vous pouvez le constater sur ces photos.
La première chose qui m’a surpris c’est les basses ! Profondes et moelleuses, à la fois dures et vigoureuses, non y a pas à dire ça vous rendrait un curé hétéro. Moi qui aime bien la deep house et la musique electro en général, je suis resté bluffé, j’ai testé aussi un peu de “classique“, du rock chrétien, du hallal, ça pète bien.
Conclusions:
Un pote est venu un soir et s’est connecté via son smartphone à la Jambox pour lancer sa playlist, c’était plutôt sympa car rapide sans se prendre la tête à trouver un câble, etc. C’est le côté cool du Bluettoth.
Pour le moment je ne vois pas de bémol, même le prix est raisonnable (compter 150€ neuf) et le son est très bon, la bestiole se transporte partout (plage, hotels, pique-nique, etc) et l’autonomie est (sur le papier) très acceptable.
Aller une dernière…
la pureté des lignes...
A vous cognac Jay!
On m’avait dit beaucoup de bien de ce site, qui permet de trouver des logements pas chers chez l’habitant dans tous les pays du monde.
Effectivement, c’est bien foutu, c’est propre et lisible, et il y a du choix. Alors, partant quelques jours avec une copine en voyage, je me suis dis que ça se tentait.
A l’inscription, à la réservation, un long form à remplir, avec la carte à rentrer, la caution de 70 euros dans les dents, les frais que prend airbnb qui se rajoutent en dernière minute à la facture, etc. Bon, c’est du classique, pas de quoi en faire un fromage.
Là où ça se corse, c’est qu’APRES tout ce merdier habituel, je reçois une notification me signalant que ma réservation n’était pas envoyée.
WHAT ?
Et non ! Il faut maintenant passer par un stade de “vérification”, pour votre sécurité, messieurs-dames.
A chaque fois que je lis “pour votre sécurité” (sur les panneaux signalant les caméras, les radars, sur les formulaires, sur les contrats, etc), j’ai des envies de meurtre. Je voudrais trouver le mec qui a écrit ces lignes et lui faire bouffer sa connerie pour voir si elle a un goût de sécurité.
D’abord, uploader un document d’identité.
Arg.
Bon, admettons, le mec va t’accueillir chez lui, tout ça, ils veulent rassurer le chaland. Ça fait grincer les dents du voyageur que je suis ce lissage des pratiques, mais je me soumet à l’exercice. C’est comme ça qu’on appâte le main stream et qu’on a plus de choix, moins cher.
Next page, demande de photo de profile obligatoire, publique.
Mais fuck !
J’ai pas envie que mon nom, mon prénom (qu’ils m’ont demandé, et affichent sans me prévenir dans mon profile) et ma photo soient sur le net, bordel.
Je mets un avatar de merde en espérant que les modos le voient pas.
Mais attention, il y a encore deux étapes !!!
Étape 3, pour des raisons de sécurité de mes couilles, il faut lier un compte en ligne. Mais tu te fous de ma gueule ???
Je lies un compte de test qui me sert à rien, un compte gmail de spam. Ils demandent évidement la permission de gérer mes contacts, parce que bien sûr, c’est indispensable… Toujours effectuer une sodomie après un prélèvement sanguin. C’est pour votre sécurité.
Et pour finir, faire une vidéo de 10 secondes avec ma cam, me présentant.
VAS TE FAIRE FOUTRE !
(en plus leur applet flash ne marche sous aucun nav sous Linux)
La seule bonne nouvelle, c’est que la fonction “supprimer le compte” est facile à trouver.