Not My Idea

Carnets Web d'Alexis Métaireau

Python, go !

Cela fait maintenant un peu plus d’un mois que je travaille sur un projet en django, et que, nécessairement, je me forme à Python.

Je prends un plaisir non dissimulé à découvrir ce langage (et à l’utiliser), qui ne cesse de me surprendre. Les premiers mots qui me viennent à l’esprit à propos de Python, sont « logique»  et « simple» . Et pourtant puissant pour autant.

Je ne manque d’ailleurs pas une occasion pour faire un peu d’évangélisation auprès des quelques personnes qui veulent bien m’écouter.

The Zen of Python

Avant toute autre chose, je pense utile de citer Tim Peters, et le PEP20, qui constituent une très bonne introduction au langage, qui prends la forme d’un easter egg présent dans python:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you'
re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let'
s do more of those!

J’ai la vague impression que c’est ce que j’ai toujours cherché à faire en PHP, et particulièrement dans le framework Spiral, mais en ajoutant ces concepts dans une sur-couche au langage.

Ici, c’est directement de l’esprit de python qu’il s’agit, ce qui signifie que la plupart des bibliothèques python suivent ces concepts. Elle est pas belle la vie ?

Comment commencer, et par ou ?

Pour ma part, j’ai commencé par la lecture de quelques livres et articles intéressants, qui constituent une bonne entrée en matière sur le sujet (La liste n’est bien évidemment pas exhaustive et vos commentaires sont les bienvenus) :

J’essaye par ailleurs de partager au maximum les ressources que je trouve de temps à autres, que ce soit via twitter ou via mon compte delicious. Allez jeter un œil au tag python sur mon profil, peut être que vous trouverez des choses intéressantes, qui sait!

Un python sexy

Quelques fonctionnalités qui devraient vous mettre l’eau à la bouche:

  • Le chaînage des opérateurs de comparaison est possible (a<b <c dans une condition)
  • Assignation de valeurs multiples (il est possible de faire a,b,c = 1,2,3 par exemple)
  • Les listes sont simples à manipuler !
  • Les list comprehension, ou comment faire des opérations complexes sur les listes, de manière simple.
  • Les doctests: ou comment faire des tests directement dans la documentation de vos classes, tout en la documentant avec de vrais exemples.
  • Les métaclasses, ou comment contrôler la manière dont les classes se construisent
  • Python est un langage à typage fort dynamique: c’est ce qui m’agaçait avec PHP qui est un langage à typage faible dynamique.

Cous pouvez également aller regarder l’atelier donné par Victor Stinner durant le Pyconfr 09.

Have fun !

AMAP + Médias = paniers bio à 5€ ?!

Le raccourci me semble un peu rapide. Et pourtant, il est emprunté bien trop souvent. La dernière mes-utilisation que j’ai à décrier est celle d’un reportage télé, passé sur France 2 vendredi 23 Octobre (voir la vidéo), ou on parles de l’AMAP étudiante Zest.

Malgré tout le temps passé à expliquer que justement, l’AMAP c’est avant tout, pour nous, une notion de solidarité envers les agriculteurs, malgré le fait que le message soit plus profond que simplement aller acheter du bio (ça, c’est possible aussi en supermarché), malgré le fait qu’il s’agisse en fait d’une remise en cause plus profonde de la société, les journalistes n’ont choisi de prendre que les quelques secondes qui leurs convenaient, celles qui ne faisaient pas tache, celle ou je dis que « l’AMAP permet aux étudiants de réapprendre à cuisiner, plutôt que de manger des nouilles et de se faire des plats réchauffés» . Bien sur, je l’ai dit et je le pense d’ailleurs, là n’est pas le problème, mais mon message n’était pas celui là.

Jamais, dans les quelques minutes du reportage, on ne dit ce que AMAP signifie: Association de Maintien d’une Agriculture Paysanne. On ne parles même pas des agriculteurs ! C’est simplement plus facile pour les étudiants de venir récupérer leurs paniers, puisque les points de distribution sont sur les facs, et en plus ça ne coute que 5 euros ! …

Alors je crois bon de rappeler que L’AMAP n’est pas seulement un service, c’est un engagement. Sur 5 mois, un engagement solidaire, c’est la donnée principale de l’équation, celle sans quoi ça ne peut fonctionner. Par le biais de cette AMAP, on essaye de montrer que d’autres agricultures sont possibles, que la solidarité c’est bien réel, et qu’il est possible de sortir du tout, tout de suite.

Mais bon, apparemment, ça passe pas bien à la télé.

Retours sur le scrumpy montpellier

Vendredi dernier, j’ai pu assister à la conférence scrumpy organisée par le collectif particules, sur python et l’agilité. Ce fut l’occasion d’en apprendre un peu plus sur python, django et scrum grâce à David Larlet et Claude Aubry.

Scrum / Agilité

Concept assez récent pour moi puisque j’ai découvert ce qu’était l’agilité lors du passage de l’agile tour sur Toulouse. La présentation de Claude à eu le mérite de reprendre l’ensemble des concepts et de poser les bases d’une nouvelle manière de gérer les projets. Rien de bien sorcier à priori, mais l’agilité remets grandement en question les préceptes appris en cours, notamment durant le BTS ou nous croulions littéralement sous la documentation (inutile?), et ou le temps nous venait fréquemment à manquer.

Après cette présentation, il semble difficile de revenir à des méthodes de gestion de projet standard. On comprends mieux pourquoi l’agilité à le vent en poupe !

Il me tarde réellement de voir en action ce que ça peut donner, et j’en aurais d’ailleurs l’occasion puisque mon stage commence la semaine prochaine, et m’apportera — à priori en tout cas — des exemples concrets de ce que peut apporter l’agilité en entreprise, au niveau de la gestion d’équipe.

Python / Django

Une rapide présentation de python, puis une entrée en matière par David sur Django. On y parles de bonnes pratiques, de gain de temps et d’élégance, puis on passe à la réalisation d’une mini application (un twitter like). Ayant déjà eu l’occasion de toucher un peu à Django, je m’attendais à une présentation un peu plus technique, mais difficile d’aller en profondeur en si peu de temps. On à pu parler entres autres d’internationalisation, de templates, de la mise en place d’un modèle ainsi qu’un bref aperçu de l’administration auto-générée de Django. Suffisamment en tout cas pour mettre l’eau à la bouche. On sent que David maitrise son sujet et ça donne envie de creuser plus loin.

Dans l’ensemble

Présenter la méthodologie agile et django lors du même après-midi nous à permis de parler à la fois de gestion de projet et de choix technologiques. Les deux points ont malheureusement été abordés sans véritable liant, puisque il y a eu peu d’interaction entre les deux intervenants. Difficile alors de se rentre compte si Django est adapté aux méthodes agiles (même si on s’en doute un peu).

Globalement, j’ai beaucoup apprécie les interventions, même si j’aurais bien aimé pourvoir rester discuter un peu plus en fin d’après-midi. Ce fut l’occasion de rencontrer en chair et en os et d’échanger (un peu) avec David, Nicolas et Loïc. Çà fait du bien de mettre un visage derrière des pseudonymes!

Enfin, merci au collectif particul.es, et en particulier à Stephane Langlois d’avoir organisé cet évènement. On en reprendrait volontiers, surtout dans un cadre pareil !

Et c’est reparti pour un tour!

Un petit billet plein de bonnes nouvelles !

Ce blog

Un « sous blog»  consacrée aux différentes astuces, compilations, partage de connaissances, via des billets courts, la partie « snippets»  fait son apparition. J’y publie bien plus souvent des mini articles sur des trucs que je rencontre au jour le jour. Allez y jeter un oeil, et pourquoi pas, mettez le dans vos lecteurs de flux ;)

Quand à ce blog , il continuera de décrire l’ensemble des évolutions des divers projets auquel je participe, qu’ils soient ou non liés au monde logiciel, ponctué par quelques articles techniques que j’ai sous le coude.

Spiral

Depuis la publication de l’injecteur de dépendances de Spiral, nous avons travaillé durant une petite semaine à plein temps sur spiral, sur des thématiques telle que le système de packages, ou le modèle de persistance des données. Puis on à recentré nos efforts sur la mise en place d’un environnement de tests digne de ce nom. J’en ai profité pour faire pour la première fois, du *vrai* TDD !

Spiral continue d’être ce que nous souhaitons qu’il soit: un lieu d’expérimentations et de mise en place de bonnes pratiques. En parallèle, nous travaillons dur sur la mise en place d’une documentation, mettant en lumière les nombreux concepts qui nous obligent à réfléchir et à écumer l’horizon des possibles, et … de changer de direction tous les 4 matins. Tant qu’à faire, autant que ce soit accessible au plus grand nombre.

Je ne vais pas retracer toutes les modifications, mais, rapidement, nous sommes arrivés à un système de packages des plus stables1, et je suis en train de terminer la nouvelle mouture de l’injecteur de dépendances, qui sera cette fois-ci facilement extensible.

Nous avons récupéré le nom de domaine www.spiral-project.org, qui servira à publier la documentation et les diverses expériences en relation avec spiral. Rien de terminé pour le moment (d’ailleurs, vous pouvez voir que c’est bien vide), mais on à un joli site web en préparation, vous pouvez tout suivre en direct sur bitbucket !

Stage

Je termine un stage de pratiquement un an chez Keo Networks, en tant que développeur web, sur du Zend Framework (PHP). De bons souvenirs, mais ce changement démarque aussi une envie d’aller aussi voir ailleurs, pour plusieurs raisons, et la permissivité du langage PHP n’y est pas pour rien.

Je m’en vais donc vers d’autres horizons, puisque j’aurais le plaisir d’aller bosser chez Makina Corpus, dans l’équipe Python/Django/Zope. L’entreprise est très attachée aux valeurs du logiciel libre, ce qui n’est pas vraiment pour me déplaire :)

J’ai donc déjà commencé à creuser un peu sur django et sur python, pour l’instant, je dois surtout avouer que je ne suis pas aussi à l’aise qu’avec le PHP que j’ai tant l’habitude de manier, mais ça vient progressivement !

Associatif !

Et puis, pour terminer sur une note un peu moins « geek» , cette année, on reprends les mêmes, et on recommence ! Plusieurs projets qui pointent le bout de leur nez, dont un qui arrive au terme de la période de réflexion, pour entrer en action: l’AMAP étudiante Toulousaine, Zest. Les distributions commencent demain (lundi 5 octobre), je croise les doigts pour que tout roule !

La semaine de l’environnement de l’année prochaine commence à pointer le bout de son nez aussi, et les réunions d’organisation vont bientôt débouler. Y’à du pain sur la planche !

Au réseau GRAPPE, aussi, on continue à avoir des réflexions sur la thématique de l’alimentation, d’ailleurs, vous pourrez trouver un document qui résume notre boulot de l’année dernière: « Les étudiants se mettent à table« .

  1. et qui ressemble à celui de Flow3, tiens tiens…

Dependency Injection – Using SpiralDi Container

Please note that this article is also available in French. A big thanks to Frédéric Sureau for his translation work on the English version.

Since my previous article (FR), I have kept on working on the dependencies injector of Spiral, wich I just published in a standalone version.

Here is an overview of SpiralDi functionnalities, and some examples on the use.
continuer à lire »

Injection de dépendances – Utilisation du SpiralDi Container

Cet article est également disponible en version anglaise. Un grand merci à Frédéric Sureau pour son travail de traduction.

Suite à mon précédent article, j’ai continué à travailler sur l’injecteur de dépendances de Spiral, que je viens de publier dans une version standalone.

Voici un tour d’horizon des fonctionnalités apportées par SpiralDi, ainsi que quelques exemples d’utilisation.
continuer à lire »

Introduction à l’injection de dépendances: le cas du singleton.

L’architecture logicielle est un des aspects du développement qui m’intéresse particulièrement. Ça fait d’ailleurs un bout de temps que l’idée d’un article à propos des dépendances (de l’injection de dépendances) et du cas du singleton me trotte dans la tête, alors, le voici:

Avant tout, il faut bien comprendre que sans contexte il n’existe pas de manière plus censée qu’une autre pour construire une application. Il existe par contre un ensemble de bonnes pratiques qu’il est bon de connaitre et d’appliquer, dans la plus large mesure possible. Ces pratiques sont souvent mal connues, et nombre d’entre elles sont appliquées à la va vite.

Nous allons tenter d’expliquer ici pourquoi et comment l’implémentation la plus rependue du singleton favorise la création de dépendances, et comment nous pouvons y remédier, grâce à l’injection de dépendances.
continuer à lire »

Installation de PHP 5.3 en tant que CGI

PHP 5.3 est disponible depuis peu sur le site de php. J’ai sauté sur l’occasion pour le télécharger et l’installer sur ma machine de développement, pour pouvoir profiter des nombreuses et alléchantes nouvelles fonctionnalités offertes par cette version.

Ayant besoin de garder une version de PHP 5.2 disponible, j’ai choisi d’installer PHP 5.3 en tant que CGI pour Apache. Rien de très compliqué, mais si je peux vous éviter de tourner en rond, voila comment j’ai procédé sur un système à base de debian (ubuntu ici).
continuer à lire »

Comparatif des bibliothèques graphiques php

J’ai travaillé récemment sur une solution pour générer des graphiques efficacement, tout en aillant le meilleur rendu possible, et ce pour des graphiques devant utiliser beaucoup de valeurs (de l’ordre de 5000 pour un graphique).

Je regroupe ici les résultats de mon étude, en espérant faire un petit état des lieux des différentes bibliothèques de génération de graphiques existantes, en tentant des les comparer. Volontairement, je ne désigne pas de meilleure bibliothèque, puisque cela dépends fortement du besoin qui l’accompagne.

J’ai tenté de faire un tour des bibliothèques qui me semblaient intéressantes, si toutefois vous connaissez une bibliothèque qui aurait sa place ici, je me ferais un plaisir de l’ajouter au comparatif.

continuer à lire »

Quelques nouvelles

Même si l’activité sur ces carnets pourrait laisser penser le contraire, je travaille activement, et sur plein de projets !

Récemment, j’ai été embauché en tant que stagiaire dans une petite boite qui fait du développement d’applications web (que je différencie de la réalisation de sites web). Cette société, basée à Paris, vient d’ouvrir des locaux sur Toulouse, et j’ai la joie et le plaisir d’en profiter. Je m’amuse vraiment, et découvre le Zend Framework, tout en passant toujours pour un extremiste qui déteste les antipatterns1. Bref, une super équipe, des gens très interessants, et un stage de 6 mois qui débute très bien !

J’ai commencé les cours, après un mois de pré-cours intensifs2. Et pour l’instant, ça me déplait plutôt. Il faut dire que les matières abordées ne s’y prétaient pas beaucoup (Microsoft et Oracle : merci bonsoir). La semaine qui arrive annonce le début des cours de Java, qui semblent bien plus prométeurs3. Espérons.

Qui l’eut cru: on à repris le développement de spiral, qui décidément porte très bien son nom, vu le temps depuis lequel le projet traine. Des deadlines sont fixées, les idées toujours aussi bonnes, et la motivation au rendez vous. Quelques nuit de travail en perspective, mais qu’est ce que c’est bon d’échanger sur des vrais sujets de geek developpeurs fans de design patterns !

Depuis mon arrivée à Toulouse, je fait partie d’une association naturaliste basée sur l’université de ramonville4, avec laquelle j’ai pu lancer un projet de semaine de l’environnement5. Ca me prends pas mal de temps, mais je rencontre des gens géniaux, et ça me fait décrocher de ce satané écran ! D’ailleurs, la semaine de l’environnement à non pas lieu dans une ville, mais dans 8, et les associations en question sont fédérées autour du GRAPPE (Groupement des Associations Porteuses de Projets en Environnement). Si vous aussi vous voulez lancer une semaine de l’environnement chez vous, contactez nous !

Plus recemment, nous avons eu l’idée de lancer une AMAP étdudiante sur Toulouse. Si vous êtes interessés, faites moi signe, les réunions approchent !

  1. ou qui adore les patterns,au choix.
  2. ou pas, tout dépends les matières
  3. avis aux trolleurs multiples et potentiels: oui, je crois sincérement que Java, c’est bien. Un peu lent, mais bien! Peut être que l’avenir me contredira.
  4. qui n’est pas du tout à coté de mon école…
  5. une semaine d’activités autour du thème de l’environnement, qui aura lieu du 16 au 22 Mars 2009