PyCON Fr 2009

Magazine
Marque
GNU/Linux Magazine
Numéro
119
Mois de parution
septembre 2009


Résumé
Troisième édition du rendez-vous de la communauté Python, comme chaque année à la Cité des Sciences à Paris, les 30 et 31 mai 2009. Environ deux cents participants et une trentaine de présentations pour deux jours consacrés à ce langage.

Body

pyconfr-2009

1. Premier jour, samedi 30 mai

Avant le début, on prend une photo de la plupart des conférenciersavec Alain, le serpent en peluche qui fait office de mascotte officielle de l'association. Tarek Ziadé ouvre officiellement la conférence, annonce le programme, remercie les sponsors et laisse la parole à Stéphane Vincent, qui présente la société Alterway, spécialisée dans l'intégration de composants open source. Il pense que la crise est une situation favorable pour les logiciels libres.

1.1 Kamon Ayeva – Comment Python va dominer le monde

Kamon expose quelques recettes pour améliorer la visibilité de Python, cite de vraies réussites basées sur ce langage (Plone, Django, LaunchPad, OLPC, Bungeni), et parle d'une initiative originale, le Python African Tour. Il s'agit de formations, financées par l'AFPy, d'une trentaine d'étudiants par session, dans différents pays africains. Après une première session au Maroc en décembre 2008, les prochains pays sont le Sénégal, la Zambie et le Nigéria.

DSC_1008

Fig. 1 : Tarek Ziadé et Gaël Pasgrimaud. Photo par Alexandre Conrad

1.2 Victor Stinner – Contribuer à CPython, naissance et mort d'un ticket

Victor raconte comment sont gérés les tickets (rapport de bug ou demande de fonctionnalité) soumis sur CPython. Bien sûr, quand le ticket est accompagné d'un patch ou d'un programme de test, cela lui donne plus de chance d'être relu et traité. Entrer en contradiction avec une PEP conduit par contre à un refus rapide. Il note que la suite de test très complète de CPython (couverture à 90%) fait office de spécification validante du langage, et est pour cette raison aussi utilisée par les autres implémentations (Jython, PyPy, IronPython).

1.3 Olivier Lauzanne – PyQuery

PyQuery est une bibliothèque de manipulation des documents XML écrite par Olivier parce qu'il trouvait XPath trop lourd. Il s'est donc très fortement inspiré de jQuery et de son API CSS qu'il appréciait. Comme cela s'appuie sur lxml (libxml2), PyQuery peut aussi gérer du HTML.

1.4 Gaël Pasgrimaud – Skinner vos applications web avec Deliverance

Deliverance est un logiciel de proxying, conçu pour fournir une abstraction de l'apparence afin de l'homogénéiser sur des applications web hétérogènes. Les thèmes sont des descriptions, en XML, de règles basées sur les sélecteurs CSS pour identifier les zones à modifier. L'attribut pyref permet d'invoquer la fonction d'un module. On peut aussi utiliser PyQuery.

Deliverance est utilisé sur le site afpy.org pour que toutes les applications (Plone, Pylons, MoinMoin, etc.) aient la même apparence.

Durant les questions, Gaël et Tarek précisent qu'il s'agit d'un proxy autonome, sans cache, basé sur PasteHTTP et lxml, ce qui lui permet d'avoir un faible impact (surcoût de seulement 4-5% sans utilisation de PyQuery).

1.5 Benoît Chesneau – Python et les bases de données non SQL

Benoît expose sa problématique : pour sa chaîne de restaurants créée en 1998, la difficulté est d'entrer les menus en base de données. Cela fait partie des données dénormalisées, de plus en plus nombreuses de nos jours, qu'il est difficile de faire entrer dans les modèles (UML) des bases SQL.

Après des rappels théoriques, il présente les différents types de bases de données non SQL et les moyens de les utiliser en Python :

  • base de données clé-valeur : Memcached, Tokyo Cabinet / Tyrant / Tokyo Distopia, REDIS ;
  • bases de données orientées documents : CouchDB, MongoDB ;
  • base de données orientées colonnes : HBase (Hadoop Database), Cassandra (mélange de Dynamo et BigTable), Hypertable ;
  • base de données orientées objets : Zope.

Les questions permettent d'apprendre que CouchDB peut être accédé en mode non-ACID pour améliorer ses performances, que Zope peut maintenant s'appuyer sur une base SQL (autorisant ainsi la réplication). Benoît précise que l'utilisation de ces bases est typiquement lié au besoin de cohérence des données par l'application.

1.6 Gaël Varoquaux – Python scientifique

Gaël montre comment utiliser Numpy pour réaliser des opérations mathématiques avancées en Python. Il s'agit principalement de calculs matriciels, et, comme il est de tradition dans ce domaine, il prend comme exemple la fameuse photo de Lena, qui est d'ailleurs directement disponible par la méthode lena().

tn_Lena

Fig. 2 : Lena Söderberg. © Playboy

Il montre la gestion très efficace de la mémoire par Numpy, par exemple le slicing qui réalise des vues sur les matrices, sans copie ou le broadcasting qui permet de réaliser des opérations multidimensionnelles de manière efficace et économe grâce aux grilles vides. Gaël résume Numpy comme fondamentalement une vue structurée sur la mémoire.

Un vrai plus de Numpy est matplotlib, un environnement interactif pour visualiser les données sur lesquelles on travaille. Il présente ensuite rapidement Scipy, une bibliothèque d'algorithmes de haut niveau.

Durant les questions, Gaël explique que le monde scientifique utilisant énormément l'API C de Python, le portage de Numpy et Scipy sur Python 3 ne sera terminé avant facilement 2 ans, la nouvelle API étant différente. La migration des applications sera encore plus longue et prendra plusieurs années.

Gaël précise qu'on peut utiliser Numpy avec des tableaux d'objets Python, mais seules les références à ceux-ci sont stockées. Utile pour bénéficier de la vue structurée de la mémoire fournie par Numpy.

1.7 Jean-François Cauche – Python au cœur du projet OLPC

Jean-François rappelle ce qu'est le projet OLPC, One Laptop Per Child, dont le but est de concevoir un ordinateur à 100 $ pour le distribuer aux enfants des pays en voie de développement et leur permettre ainsi d'accéder à une éducation plus complète.

Le projet étant d'origine nord-américaine, tout est actuellement conçu en anglo-américain. L'initiative OLPC France essaye donc de développer du contenu en français et d'autres langues.

Sugar est l'IHM écrite en Python pour OLPC. Elle est monotâche, sans bureau, entièrement à base d'icônes. Les applications libres usuelles sont disponibles (Firefox, AbiWord, bientôt OpenOffice for Kids). Un accent est mis sur la programmation avec Scratch, Squeak, Logo Pippy.

Jean-François précise que Python a été retenu par sa facilité et la possibilité que cela offre aux enfants de s'approprier l'ensemble du logiciel et de l'interface.

1.8 Michael Scherer – Mettez un python dans votre poche

Michael montre quels sont les moyens possibles pour avoir un interpréteur Python dans son téléphone mobile. En résumé, sur Android et iPhone OS, il faut violer la licence et cela reste très expérimental ; sur Windows CE, il faut passer par COM, ce qui est infâme ; les mobiles sous Linux ont rarement des API intéressantes. Il n'y a guère que Symbian qui propose un vrai support Python avec une API complète. Fondamentalement, cela montre qu'il est inenvisageable de vouloir faire autre chose que des petits programmes personnels.

tn_DSC_1065

Marie-Josée Cros. Photo par Alexandre Conrad

1.9 Marie-Josée Cros – Développement d'une plateforme web d'annotation génomique

Marie-Josée présente un retour d'expérience sur l'utilisation de Python pour le développement d'un environnement web dans lequel un biologiste peut réaliser et exploiter des analyses. Celui-ci a juste à fournir une séquence génomique et paramétrer les algorithmes de recherche. Une fois les résultats disponibles, il peut les explorer en ligne, les annoter, visualiser les alignements.

Python a été retenu pour sa simplicité d'apprentissage, car le projet a principalement été développé par des non-programmeurs (quoique deux connaissaient déjà le langage). Par contre, le choix initial de CherryPy, là aussi pour sa simplicité, pourrait poser problème avec l'évolution du projet.

1.10 Sylvain Zimmer – Twisted

Twisted est un environnement d'exécution asynchrone, stable et bien maintenu, particulièrement conçu pour écrire des applications réseau avec gestion de plusieurs connexions en concurrence. Il illustre avec des exemples : le programme synchrone, simple au début, devient rapidement complexe s'il utilise des threads, alors que son équivalent Twisted reste compréhensible.

Sylvain indique que Twisted est utilisé pour le site Jamendo sur les serveurs de dépôt et de téléchargement pour gérer des queues de téléchargement, créer un système de fichiers FTP virtuel, générer des archives Zip à la volée. Il signale l'extension twisted.manhole qui permet de se connecter au sein d'un processus.

1.11 Jean-Marc Pouchoulon – Piloter votre infrastructure virtualisée avec Python

Jean-marc explique que la virtualisation des systèmes conduit à leur prolifération, et il devient encore plus nécessaire de les inventorier de manière automatisée. Il présente les fondamentaux des API VMware, disponibles en Perl, Java, .NET mais pas Python. Il a donc utilisé IronPython pour piloter des machines via le Vi-SDK, puis le Vi-Toolkit, plus simple d'emploi, et récupérer leur état dans Resolver One, un tableur développé en IronPython.

Il signale l'API CIM Smash, disponible sur VMware ESX, qui ne permet que de l'interrogation en WBEM, mais fournit un module Python.

1.12 Carl Chenet – De la qualité dans un projet en Python

Carl donne des conseils pour bien gérer un projet en Python, d'abord assez génériques comme d'internationaliser au plus tôt avec gettext et d'utiliser dès le début un SCM (Git, Mercurial, Bazaar). Puis, il présente les outils pour détecter statiquement les erreurs (Pylint, Pyflakes, Pychecker), les doublons (CloneDigger), les problèmes de sécurité (RATS). Il faut bien évidemment écrire des tests unitaires et il conseille pour cela doctest pour valider les exemples de la documentation, fusil pour du test aléatoire sur les entrées, et Buildbot pour la compilation continue.

2. Second jour, dimanche 31 mai

2.1 Thomas Paviot, Jelle Feringa – PythonOCC, une plateforme de développement agile d'application CAO

Thomas explique l'utilisation croissante de l'ingénierie numérique pour la conception des produits, le but étant d'éviter la réalisation d'un prototype physique, coûteux, pour utiliser à la place une version virtuelle. Les produits complexes (voitures, avions) sont constitués de milliers de composants différents, fournis par des centaines de sous-traitants utilisant des logiciels différents. D'où des problèmes d'interopérabilité.

Malheureusement, l'offre libre est très pauvre, et les logiciels propriétaires n'offrent que du scripting par VBA, et l'accès à l'API (souvent en C++) coûte cher. OpenCascade est la seule bibliothèque libre de niveau industriel, mais elle est en C++. PythonOCC est le support Python/SWIG pour OpenCascade, mais fournit une vision de plus haut niveau par des modules additionnels (Twisted, Traits, support réseau).

Il illustre avec des écrans de logiciels de démonstration, comme Emmentaler qui perce des trous dans un volume ou un couple client-serveur en XML-RPC, ce qui permet de déporter les calculs sur une machine différente de celle qui affiche. Il précise que le but n'est pas de concurrencer Dassault Systèmes, mais de répondre à des besoins de niche. De plus, il y a un vrai intérêt par des acteurs comme la NASA pour les logiciels libres et les standards ouverts, pour éviter de dépendre d'un seul acteur économique.

2.2 Gaël Varoquaux – Comment j'utilise Python pour chercher des modèles statistiques de l'activité cérébrale

tn_20090531

Visualisation d'un graphe dans MayaVi

Gaël explique que, dans le cadre de l'IRM fonctionnelle, il fait face d'une part à des problèmes algorithmiques (normalisation des données sur un sujet moyen, définition de zones cohérentes et diagrammes de fonctionnement du cerveau) et, d'autre part, des problèmes médicaux (compréhension du fonctionnement du cerveau). Pour cela, il produit des algorithmes de manière interactive en s'appuyant très fortement sur les données.

Outre Numpy et Scipy, il utilise aussi Nipy (algorithmes de neuroimagerie), NetworkX (graphes et réseaux), et Matplotlib et MayaVi pour la visualisation.

Il regrette le syndrome du NIH (Not Invented Here), mais, le logiciel représentant un genre de pouvoir, chaque laboratoire veut voir son nom attaché à sa création, là où il faudrait mutualiser les efforts et faciliter le déploiement chez les autres.

2.3 Nicolas Chauvat – CubicWeb pour publier DBpedia et OpenLibrary

Nicolas rappelle comment le web a évolué pour maintenant devenir sémantique, pouvant être vu comme une base de données globale dont les clés sont les URL, s'appuyant sur des formats comme RDF et OWL, avec le langage de requête SPARQL. CubicWeb s'appuie sur la modélisation des données et propose un langage de requête (RQL, mais l'intégration de SPARQL est en cours) pour proposer les résultats sous forme de vues.

C'est fondamentalement une méta-base de données, qui s'appuie sur les logiciels existants (SQL, LDAP, VCS, etc.) et qui permet de mettre en relation des modèles disjoints. Les résultats sont ensuite rendus disponibles à la fois dans des formats de présentation (HTML) et sous forme de vues sémantiques (OWL, FOAF, SIOC, DOAP et autres microformats). Il montre un exemple d'application avec DBpédia, une base de données des infobox de Wikipédia.

2.4 Michael Scherer – Oubliez le SQL avec SQLAlchemy

Avec des images aussi subtiles que « l'ORM est à la base de données ce que la matrice est au monde réel », Michael rappelle les bases des ORM et présente SQLAlchemy, un ORM en Python utilisé par le logiciel Trac ou les sites Reddit et Virgin Charter.

Il explique que SQLAlchemy permet de corriger les défauts qu'ont d'autres ORM, comme exécuter des requêtes SQL, voir le SQL généré, autoriser certains types spécifiques (PgInet). Au niveau des performances, les résultats peuvent être chargés au plus tôt ou au plus tard, suivant les besoins, et un pool de requêtes permet de mieux gérer la concurrence.

SQLAlchemy peut utiliser Pickle pour stocker des objets Python en base et intègre un support du sharding (répartition des données sur plusieurs bases) et un mécanisme pour faciliter la migration des schémas. Michael signale Elixir, une couche déclarative au-dessus de SQLAlchemy, qui permet des abstractions de niveau supérieur comme la gestion automatique du versionnement des objets.

Quelqu'un du public explique que les ORM sont pour lui un retour en arrière sur les bases de données objets, inventées il y a plus de 10 ans, et que, du point de vue théorique, cela ne marche pas. Mais on lui fait remarquer que, toujours du point de vue théorique, les langages dynamiques non plus ;-)

2.5 Gaël Pasgrimaud – Développement rapide avec FormAlchemy

Complétant la précédente présentation, Gaël présente FormAlchemy, qui permet d'automatiser la génération des widgets de formulaires web, en particulier grâce à des extensions qui vont chercher les informations dans les schémas de SQLAlchemy, CouchDB, Zope, etc., pour associer le type d'une donnée au widget à utiliser. Il supporte la validation des entrées avec affichage des erreurs en ligne et le dépôt de fichiers.

2.6 Victor Stinner – Comprendre les erreurs Unicode

Victor rappelle les notions fondamentales d'Unicode : un caractère est identifié par un code et représenté graphiquement par un glyphe. Le code se sérialise en octets.

En Python 2, le type str est en réalité une suite d'octets, et le type unicode permet de représenter des caractères (au sens Unicode).

    "abc"   # type str

    u"def" # type unicode

    "abc" + u"def"      # u"abcdef"

    "ab\xe9" +u"def"   # erreur

En Python 3, les types ont changé : bytes (b"...") remplace l'ancien str et str remplace l'ancien unicode. Les syntaxes usuelles de déclaration de caractères (\xXX, \uXXXX, \N{name}) sont reconnues. Une bibliothèque io a été ajoutée pour gérer l'encodage sur les fichiers. Concernant le code source, l'encodage par défaut passe de ASCII pour Python 2 à UTF-8 pour Python 3.

Victor conseille bien sûr de décoder au plus tôt ses données, et de les encoder au plus tard, pour éviter les problèmes, et conseille chardet, un module inspiré de ce que fait Mozilla, pour une détection de l'encodage.

2.7 Distribution de cadeaux

La fin de la conférence se termine par une distribution de cadeaux sur un mode original : les places sont numérotées et un programme doit tirer des numéros au hasard (en théorie). Seront ainsi distribués une quinzaine d'exemplaires du livre de Tarek Ziadé, Programmation Python, des t-shirts de l'association, deux badges « collector » et une impression en format A2 de la planche de Martin Vidberg sur « la loi contre la téléportation illégale ».

Olivier Grisel présente la future conférence OSDC.fr, co-organisée par les associations Perl, Python et Ruby. Tarek remercie tout le monde de s'être déplacé pour cette troisième conférence Python et espère voir un public aussi nombreux l'an prochain.

Conclusion

Cette première conférence Python m'a permis de découvrir un peu ce langage, ses utilisateurs (n'en étant pas un moi-même) et plus généralement sa communauté. Bravo aux organisateurs pour cette conférence réussie qui montre la progression de Python et de son utilisation dans des domaines variés.

Liens




Article rédigé par

Par le(s) même(s) auteur(s)

Perles de Mongueurs

Magazine
Marque
GNU/Linux Magazine
Numéro
120
Mois de parution
octobre 2009
Résumé

Depuis le numéro 59, les Mongueurs de Perl vous proposent tous les mois de découvrir les scripts jetables qu’ils ont pu coder ou découvrir dans leur utilisation quotidienne de Perl. Bref, des choses trop courtes pour en faire un article, mais suffisamment intéressantes pour mériter d’être publiées. Ce sont les perles de Mongueurs.

Brèves de Perl

Magazine
Marque
GNU/Linux Magazine
Numéro
119
Mois de parution
septembre 2009
Résumé

Les Mongueurs de Perl, l'Association Francophone Python (AFPy) et Ruby France sont heureux de vous inviter à la première Open Source Developer Conference France (OSDC.fr), qui se tiendra à la Cité des Sciences et de l'Industrie, à Paris, les 2 et 3 octobre 2009. L'entrée est libre et gratuite.

Les derniers articles Premiums

Les derniers articles Premium

Du graphisme dans un terminal ? Oui, avec sixel

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

On le voit de plus en plus, les outils en ligne de commandes s'étoffent peu à peu d'éléments graphiques sous la forme d'émojis UTF8. Plus qu'une simple décoration, cette pointe de « graphisme » dans un monde de texte apporte réellement un plus en termes d'expérience utilisateur et véhicule, de façon condensée, des informations utiles. Pour autant, cette façon de sortir du cadre purement textuel d'un terminal n'est en rien une nouveauté. Pour preuve, fin des années 80 DEC introduisait le VT340 supportant des graphismes en couleurs, et cette compatibilité existe toujours...

Game & Watch : utilisons judicieusement la mémoire

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Au terme de l'article précédent [1] concernant la transformation de la console Nintendo Game & Watch en plateforme de développement, nous nous sommes heurtés à un problème : les 128 Ko de flash intégrés au microcontrôleur STM32 sont une ressource précieuse, car en quantité réduite. Mais heureusement pour nous, le STM32H7B0 dispose d'une mémoire vive de taille conséquente (~ 1,2 Mo) et se trouve être connecté à une flash externe QSPI offrant autant d'espace. Pour pouvoir développer des codes plus étoffés, nous devons apprendre à utiliser ces deux ressources.

Raspberry Pi Pico : PIO, DMA et mémoire flash

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Le microcontrôleur RP2040 équipant la Pico est une petite merveille et malgré l'absence de connectivité wifi ou Bluetooth, l'étendue des fonctionnalités intégrées reste très impressionnante. Nous avons abordé le sujet du sous-système PIO dans un précédent article [1], mais celui-ci n'était qu'une découverte de la fonctionnalité. Il est temps à présent de pousser plus loin nos expérimentations en mêlant plusieurs ressources à notre disposition : PIO, DMA et accès à la flash QSPI.

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous