PROJET AUTOBLOG


Sam et Max

source: Sam et Max

⇐ retour index

Mise à jour de Django-quicky pour supporter django 1.6

samedi 9 novembre 2013 à 14:32

Avec Django 1.6 qui vient de sortir hier, j’ai pu m’apercevoir que django-quicky ne marchait plus sur cette nouvelle version. Un sombre histoire de setup_environ qui est deprecated. Comme je l’utilise (ce qui est mieux avec les outils qu’on code ^^), j’ai fait un petit correctif vite-fait.

J’en ai profité aussi pour ajouter deux fichiers de requirements avec des apps Python que j’installe très très souvent pour mes projets.

flattr this!

Apprendre le python en 10 ans…

vendredi 8 novembre 2013 à 07:31

Ceci est un post invité de 01ivier posté sous licence creative common 3.0 unported.

Il y a quelques années, esseulé devant 1 millions de pixels noctures, j’ai tapé “Comment devenir un hacker ?” dans un monopolisant moteur de recherche…
Comme ça…
Pour déconner…

Je suis alors tombé sur le texte “Comment devenir un hacker ?” d’Eric Steven Raymond.

Après quelques instants dubitatifs où j’ai pris conscience que si j’avais écrit “Comment planter des choux ?” ou autres “Comment dessiner un poulet en contre-plongée ?” je serai certainement tombé sur un document du même nom, j’ai commencé à lire le texte en question.
Mais ce n’est que plusieurs mois après que j’en suis venu à bout.

En effet, arrivé à la partie “Apprenez à programmer”, j’ai non seulement réalisé que je ne savais pas vraiment programmer mais surtout que je pouvais dès à présent mettre à l’épreuve ma théorie sur les choux et les poulets.
J’ai donc cherché “Comment apprendre à programmer ?” et j’ai fini par tomber sur l’article “Apprendre à programmer en 10 ans ?

Celui-là, je l’ai lu en entier et d’une seule traite.
Mais le titre seulement avait suffit à me décomplexer pour deux ou trois vies.

Comment acquérir une compétence en 10 ans?

Quelle évidence !
Tout me paraissait bien plus envisageable en me donnant 10 ans pour y arriver…
Je veux apprendre l’espagnol ? Et bien je ferai le bilan dans 10 ans…
Pas besoin de culpabiliser parce que je n’ai pas fait la page du jour de la méthode à Mimile…

Il devait être 1h du matin et je me suis dit :
“Et si j’apprenais le Python…”
J’avais 10 ans devant moi, mais ce n’était pas une raison pour perdre du temps.

À 6h, j’avais donc bouclé la première partie du tuto “Apprendre le Python” du site du zéro et entamé la seconde…

Maintenant, vous vous demandez peut-être, si, trois an plus tard, je connais le Python…
Et bien je vous dirais ça dans sept ans… :-)

Hello world !

En attendant, j’ai proposé à Sam et Max de poster quelques articles de temps en temps…
Je ne suis pas du tout developpeur, mais je n’ai aucun scrupule à écrire des lignes de code… encore moins à publier ma prose de cochon…

Sachant qu’il est tout à fait possible d’obtenir des résultats enthousiasmants avec du code bancal, je me propose donc de décomplexer les débutants en publiant des articles de mauvais élève…
Nulle doute que les lecteurs avertis de S&M sauront, par leurs commentaires avisés, réhausser le niveau technique de mes posts afin de les rendre aussi instructifs que ceux déjà disponibles sur ce blog…

À bientôt…

flattr this!

Parlez-nous de vous !

jeudi 7 novembre 2013 à 13:41

Depuis le temps qu’on pond des articles vous devez avoir cerné les personnages que sont Sam & Max.
Mais au fait nous on en sait pas beaucoup sur vous!
ça serait sympa de nous raconter un peu votre vie, vos passions, vos fantasmes, ce qui vous passe par la tête.

Soyez pas timides, inutile de poster nom et prénom bien sur, mais en gros dans quelle région vous vous situez, votre jeunesse, pourquoi l’info et/ou la sodo, un bon ptit resto dans votre coin, ce qui vous fait bander, ce qui vous fait chier, bref votre vie quoi.

Allez-y les cas soces, parlez-nous un peu de vous :)

flattr this!

La chute de la presse : internet en cause, vraiment ?

jeudi 7 novembre 2013 à 07:08

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.

flattr this!

Les annotations en Python 3

mercredi 6 novembre 2013 à 07:05

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.

D’abord, à quoi servent les annotations ?

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.

Non, mais sérieux, ça sert à quoi ?

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.

Show me the code !

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.

Le potentiel des annotations

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 :

Amélioration des performances

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.

Aide à la saisie

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.

Génération de documentation

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.

Vérification de Type

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.

Translittération de code

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.

Je répète une dernière fois…

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.

flattr this!