Alexis Métaireau - pyconfr2015https://blog.notmyidea.org/2015-10-18T00:00:00+02:00PyconFR 2015 — Assemblée générale2015-10-18T00:00:00+02:002015-10-18T00:00:00+02:00tag:blog.notmyidea.org,2015-10-18:/pyconfr-2015-assemblee-generale.html<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Mot de feth sur Nelle, qui était une présidente très présente. Merci&nbsp;!</p> <div class="section" id="passe"> <h2>Passé</h2> <p>Il existe des communautés locales à Lyon Grenoble, Nantes. Des Afpyro ont été organisés dans toutes ces villes …</p></div><div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Mot de feth sur Nelle, qui était une présidente très présente. Merci&nbsp;!</p> <div class="section" id="passe"> <h2>Passé</h2> <p>Il existe des communautés locales à Lyon Grenoble, Nantes. Des Afpyro ont été organisés dans toutes ces villes + Rennes + Marseille Support pour 2 Django Carrots. Par rapport au mentoring, très peu de retours, peut etre de nouvelles choses à&nbsp;faire.</p> <p><span class="caps">FOSDEM</span> 2015 était complet. Il y avait une salle python tojours pleine. Dsicussions sur la&nbsp;diversité.</p> </div> <div class="section" id="futur"> <h2>Futur</h2> <p>Amandine propose d&#8217;organiser des soirées à <span class="caps">NUMA</span> l&#8217;an prochain. Global code retreat: participation Migrer le serveur de l&#8217;<span class="caps">AFPY</span> Reboot des status: nos pratiques ne sont pas en ligne avec nos status. Mise en place de mentoring pour&nbsp;python.</p> <div class="section" id="status"> <h3>Status</h3> <p>Comité directeur renouvelé par tiers. Il est composé de 18 personnes. Les discussions qui sont dans le <span class="caps">CD</span> n&#8217;en sortent pas, et les discussions sont donc effectuées en&nbsp;priuvées.</p> <p>L&#8217;idée actuelle serait de réduire le <span class="caps">CD</span> de 18 à 9 personnes. Tout le travail serait fait en dehors du <span class="caps">CD</span>. Il est possible de mettre en place un groupe de travail pour travailler sur l&#8217;évolution de la&nbsp;charte.</p> <p>Il faut faire évoluer les status: ils ne sont pas actuellement bien faits par rapport à notre&nbsp;utilisation.</p> </div> </div> PyconFR 2015 — Hospital - des tests en prod2015-10-18T00:00:00+02:002015-10-18T00:00:00+02:00tag:blog.notmyidea.org,2015-10-18:/pyconfr-2015-hospital-des-tests-en-prod.html<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: Benoit Bryon,&nbsp;Peopledoc.</p> <p>Pour une procédure de déploiement, comment est-ce qu&#8217;on valide que tout va bien une fois que tout est dépoyé ? Si on a une application très simple …</p><div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: Benoit Bryon,&nbsp;Peopledoc.</p> <p>Pour une procédure de déploiement, comment est-ce qu&#8217;on valide que tout va bien une fois que tout est dépoyé ? Si on a une application très simple (upload et envoi de&nbsp;fichiers).</p> <p>Pour des applications plus complexes, il y a beaucoup de choses à tester (base de données, cache, email, etc). Beaucoup de parties sont utiles: reverse proxy, django, base de données&nbsp;etc.</p> <p>Lors d&#8217;un déploiement, comment faire pour vérifier que tout tourne lorsque tout est déployé&nbsp;?</p> <div class="section" id="comment-faire"> <h2>Comment faire&nbsp;?</h2> <ul class="simple"> <li>Les tests permettent de tester hors&nbsp;sol.</li> <li>Le provisionning permet de valider que tout tourne correctement,&nbsp;mais</li> <li>simplement au démarrage. Les pannes ne sont pas&nbsp;détectées.</li> <li>Le logging va permettre de detecter les erreurs, mais trop&nbsp;tard.</li> <li>Le monitoring permet d&#8217;avoir une vue de&nbsp;l&#8217;exterieur.</li> </ul> <p>Hostpital propose de faire des assertions sur la configuration, l&#8217;environnement, <em>en cours de fonctionnement</em>. Ce sont les developeurs qui ajoutent ces&nbsp;assertions.</p> <p>Cela peut servir à valider un déploiement, pour etre rassuré une fois que le déploiement effectué. Cela peut aussi service à surveiller un service et diagnostiquer les&nbsp;problèmes.</p> </div> <div class="section" id="hospital"> <h2>Hospital</h2> <dl class="docutils"> <dt>::</dt> <dd>pip install&nbsp;hospital</dd> </dl> <p>Hospital est un outil en python. On définit des tests, de la même manière que l&#8217;on définit des tests unitaires. On fait des assertions, comme pour les tests unitaires. Hospital propose des helpers pour les cas courants: <cite>assert_http_response</cite> ou <cite>assert_ping</cite>.</p> <p>La vue est une vue de l&#8217;intérieur. La différence avec le monitoring est que l&#8217;on teste la connectivité entre les services (exemple d&#8217;une requete elasticsearch qui échoue depuis un service&nbsp;django).</p> <p>Pour la supervision, les healthchecks sont lancés avec une ligne de commande <cite>hospital-cli</cite>. Il est possible de lancer également ces tests avec nose ou&nbsp;py.test.</p> <p>Il est aussi possible de faire le monitoring avec une <span class="caps">API</span> <span class="caps">HTTP</span> <cite>hospital serve</cite>.</p> <div class="section" id="les-lacunes-de-hospital"> <h3>Les lacunes de&nbsp;hospital</h3> <p>Les healthchecks sont fait actuellement en synchrone. Cela peut prendre du temps. Il pourrait etre interessant de lancer des taches de manière distribuée / en&nbsp;paralelle.</p> <p>Il pourrait etre utile de faire la distinction entre les smoketests et les diagnostiques: les premiers sont des petits checks qui permettent de dire si ça marche, de manière très simple. De l&#8217;autre coté, les diagnostiques seraient eux plus&nbsp;fins.</p> </div> </div> <div class="section" id="wrap-up"> <h2>Wrap&nbsp;up</h2> <p>Validez votre configuration, la connectivité avec les services externes. Faites des tests souvent&nbsp;!</p> </div> PyconFR 2015 — We don’t need your loop2015-10-18T00:00:00+02:002015-10-18T00:00:00+02:00tag:blog.notmyidea.org,2015-10-18:/pyconfr-2015-we-dont-need-your-loop.html<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker:&nbsp;serge_sans_paille.</p> <p>Retour sur le passé des boucles: <span class="caps">ASM</span>, fortran, C. Avec <span class="caps">APL</span>, la boucle est cachée au fur et à mesure des évolutions. Écrire une boucle ne devrait …</p><div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker:&nbsp;serge_sans_paille.</p> <p>Retour sur le passé des boucles: <span class="caps">ASM</span>, fortran, C. Avec <span class="caps">APL</span>, la boucle est cachée au fur et à mesure des évolutions. Écrire une boucle ne devrait pas etre exprimer comment atteindre le&nbsp;resultat.</p> <p>En python, par exemple, il vaut mieux utiliser <cite>sum</cite> plutôt que de faire l&#8217;addition nous même (pour faire une addition des elements d&#8217;une&nbsp;liste).</p> <p>Actuellement, le compilateur python est lent si on utilise numpy.sum sur des matrices&nbsp;complexes.</p> <div class="section" id="comment-aller-plus-vite"> <h2>Comment aller plus&nbsp;vite?</h2> <p>Cython est assez compliqué, il faut savoir ce que l&#8217;on fait pour optimiser et écrire du bon code&nbsp;Cython.</p> <p>Avec pythran, l&#8217;intelligence est dans le compilateur, qui permet d&#8217;écrire notemment des boucles&nbsp;correctement.</p> <p>En donnant plus d&#8217;informaitons au compilateur, plutôt que de faire des boucles, cela lui permet d&#8217;avoir un contexte qui lui permet d&#8217;optimiser le&nbsp;code.</p> <p>Par contre, cela veut dire que plus de connaissances sont necessaire pour lire le code&nbsp;python.</p> <p>pythran permet de compiler directement vers du C++ sans avoir à changer son code de base (python). C&#8217;est utile pour du code numpy&nbsp;notemment.</p> </div> <div class="section" id="questions"> <h2>Questions</h2> <p>Possible de paralelliser de manière explicite <strong>ou</strong>&nbsp;implicite.</p> <p><strong>C&#8217;est très utile pour les gens qui font du &#8220;number crunching&#8221;. Est-ce que c&#8217;est utile pour d&#8217;autres domaines d&#8217;application&nbsp;(Web)?</strong></p> <p>Pas vraiment. CPython est déjà bien fait pour ces cas&nbsp;d&#8217;utilisation.</p> <p><strong>Est-il possible de lancer pythran sans faire de commentaires&nbsp;?</strong></p> <p>C&#8217;est possible mais cela ne servira pas à grand chose. Il est necessaire de connaitre le type des objets qui sont utilisés lors des&nbsp;boucles.</p> <p><strong>Est-ce que vous songez à un compilateur à la volée&nbsp;?</strong></p> <p>De gros efforts ont été faits dernièrement pour diminuer le temps de compilation. Mais pour une fonction qui renvoie None prends de l&#8217;ordre d&#8217;une seconde ou une demi seconde. Ce n&#8217;est pas très utile pour un compilateur à la volée puisqu&#8217;il faudrait des gains de perfs supérieurs à&nbsp;cela.</p> </div> PyconFR 2015 — Cliquet2015-10-17T00:00:00+02:002015-10-17T00:00:00+02:00tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-cliquet.html<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: Mathieu Leplatre (&#64;leplatrem),&nbsp;Mozilla</p> <p>Toolkit <span class="caps">HTTP</span>, pour éventuellement faire des&nbsp;microservices.</p> <ol class="arabic simple"> <li>Origines</li> <li>Protocole</li> <li>Toolkit</li> <li>Conversation</li> </ol> <div class="section" id="origines"> <h2>Origines</h2> <p>Stockage de données, Cloud Services, Mozilla. Le boulot, c&#8217;est de faire des APIs …</p></div><div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: Mathieu Leplatre (&#64;leplatrem),&nbsp;Mozilla</p> <p>Toolkit <span class="caps">HTTP</span>, pour éventuellement faire des&nbsp;microservices.</p> <ol class="arabic simple"> <li>Origines</li> <li>Protocole</li> <li>Toolkit</li> <li>Conversation</li> </ol> <div class="section" id="origines"> <h2>Origines</h2> <p>Stockage de données, Cloud Services, Mozilla. Le boulot, c&#8217;est de faire des APIs. On nous demande de faire des APIs, tout le&nbsp;temps.</p> <p>Souvent, les mêmes questions sont à l&#8217;ordre du jour. Heartbeat, codes d&#8217;erreurs, etc. L&#8217;inventaire de tout ce qui est attendu d&#8217;une <span class="caps">API</span>, au dela de ce qui est la valeur ajoutée du&nbsp;service.</p> <p>Définition d&#8217;un protocole. Définir une <span class="caps">API</span> <span class="caps">REST</span> n&#8217;est pas aussi évident qu&#8217;il y parait. Il faut définir les formats de <span class="caps">JSON</span>, les status,&nbsp;etc.</p> <p>La réutilisation de certaines protocoles existants était possible (Sync, en production depuis quelques&nbsp;années).</p> <p>Réutiliser du code nous permettait et faire un template pour démarrer plus facilement, pour se concentrer sur le métier de l&#8217;<span class="caps">API</span>. Puisque les besoins ne sont pas toujours les mêmes, avoir une boite à outil permet de choisir ce que l&#8217;on&nbsp;souhaite.</p> </div> <div class="section" id="protocole"> <h2>Protocole</h2> <ul class="simple"> <li>Création d&#8217;un protocole qui respecte les bonnes pratiques. <span class="caps">CORS</span>, avoir les bons codes de status, arrêter de se poser toujours les mêmes questions. Contrairement à ce qu&#8217;on imagine, la spécification <span class="caps">HTTP</span> n&#8217;est pas si facile à suivre. Plutôt que d&#8217;écrire un document, un toolkit à été&nbsp;créé.</li> <li>Les ops ont besoin de quelques endpoints: un heartbeat (monitoring) des endpoints de batch, un endpoint &#8220;hello&#8221;, pour connaitre le type de service, ses URLs&nbsp;etc.</li> <li>La service renvoie toujours un <span class="caps">JSON</span> avec la description de l&#8217;erreur. Cela permet d&#8217;avoir tout le temps la même gestion des erreurs. Utilisation du header &#8220;backoff&#8221; qui permet de demander aux clients d&#8217;arreter de faire des requetes durant une durée spécifée par le&nbsp;serveur.</li> <li>Pour les resources &#8220;<span class="caps">REST</span>&#8221;, quelques règles sont définies: quel est le format du <span class="caps">JSON</span>, quel est la syntaxe du querystring pour filtrer, ordonner, gérer les opérations concurentes,&nbsp;etc.</li> <li>Comment la validation fonctionne ? La pagination ? La définition des permissions ? Les&nbsp;erreurs.</li> </ul> <p>Définir le protocole une seule fois permet de se mettre d&#8217;accord avec les Ops. On ne créé pas une <span class="caps">RFC</span> pour l&#8217;instant, il faut qu&#8217;on valide ce qu&#8217;on a fait, il est necessaire de valider notre&nbsp;approche.</p> </div> <div class="section" id="toolkit"> <h2>Toolkit</h2> <p>La stack en place est basée sur Pyramid et Cornice. Autre chose aurait pu petre utilisé. Mais pyramid à été choisi pour son approche simpliste et qui permet de rajouter de la complexité au fur et à&nbsp;mesure.</p> <p>Cliquet propose de faire l&#8217;ensemble du boilerplate, la lecture du protocole, et vous permet de créer les backends&nbsp;souhaités.</p> <p>Il est possible de choisir les methodes <span class="caps">HTTP</span> acceptables, les URLs à utiliser etc. Tweaker l&#8217;<span class="caps">API</span> est possible, la chose qui reste toujouts stable est le&nbsp;protocole.</p> <p>le toolkit vise à faire quelque chose de pluggable. Tout est controllable depuis la&nbsp;configuration.</p> <p>Pour le deploiement, cela veut dire que le monitoring est déjà connecté, et il est possible de changer la configuration depuis un fichier <cite>.ini</cite>.</p> <p>Il est aussi possible de faire du profiling en ajoutant deux lignes de code, qui permet de générer des graphs qui permettent d&#8217;identifier les goulots&nbsp;d&#8217;étranglement.</p> </div> <div class="section" id="microservices"> <h2>Microservices&nbsp;?</h2> <ul class="simple"> <li>Cliquet apporte une manière standard de surveiller, deployer, configurer des&nbsp;services.</li> <li>Il est possible de se focaliser sur la logique de l&#8217;application, en faisait une abstraction des backends,&nbsp;etc.</li> <li>Le fait de figer l&#8217;<span class="caps">API</span> permet d&#8217;avoir des clients génériques que l&#8217;on peu réutiliser d&#8217;une application à&nbsp;l&#8217;autre.</li> </ul> </div> <div class="section" id="cliquet-est-utilise-pour"> <h2>Cliquet est utilisé&nbsp;pour</h2> <ul class="simple"> <li>Kinto, un service générique de stpclage de&nbsp;données.</li> <li>Syncto, un proxy pour Sync en utilisant le&nbsp;protocole.</li> <li>La liste de lecture, service qui à été&nbsp;shutdown.</li> </ul> </div> <div class="section" id="questions"> <h2>Questions</h2> <ul class="simple"> <li><strong>Qu&#8217;est-ce qui est pluggable ?</strong> Les choix qui sont fait dans cliquet concernent le protocole. Le toolkit est lui fait de manière &#8220;pluggable&#8221;. Il est par exemple possible de changer le backend, l&#8217;authentification, le cache ou les&nbsp;permissions.</li> <li><strong>Quelles sont les parties non standard? Est-il prévu de representer ça via une <span class="caps">RFC</span> ?</strong> Le seul sujet qui pourrait etre utile dans une <span class="caps">RFC</span> serait de définir les headers attendus pour la validation et l&#8217;écriture concurrentielle. L&#8217;ensemble de ce qui est proposé est&nbsp;standard.</li> <li><strong>Existe-il un client JavaScript, comme pour Kinto ?</strong> Actuellement, non. Par contre, Kinto.js est prévu pour que la partie commune entre les APIs (le protocole) peut etre&nbsp;extrait.</li> </ul> </div> PyconFR 2015 — Geoalchemy2015-10-17T00:00:00+02:002015-10-17T00:00:00+02:00tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-geoalchemy.html<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: Eric Lemoine, Camp to camp.&nbsp;(&#64;elemoine)</p> <p>Bibliothèque python basée sur <span class="caps">SQL</span> alchemy, pour interagir avec des bases de données geographiques /&nbsp;spatiales.</p> <p>Une base de donnée optimisée pour representer et rechercher …</p><div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: Eric Lemoine, Camp to camp.&nbsp;(&#64;elemoine)</p> <p>Bibliothèque python basée sur <span class="caps">SQL</span> alchemy, pour interagir avec des bases de données geographiques /&nbsp;spatiales.</p> <p>Une base de donnée optimisée pour representer et rechercher des données qui representent des objets dans un espace&nbsp;géométrique.</p> <ul class="simple"> <li>Il est possible d estocker des ligne,s de polygones, des points. Il y a une colonne géometrie pour stocker ces&nbsp;données.</li> <li>Il y a aussi des fonctions qui permettent de travailler sur ces données (transfomrations, projections,&nbsp;etc).</li> <li>Indexs géographiques qui permettent de faire des recherches de manière&nbsp;performante.</li> </ul> <div class="section" id="postgis"> <h2><span class="caps">POSTGIS</span></h2> <p><span class="caps">POSTGIS</span> s&#8217;appuie sur postres pour offrir des types géographiques, des fonctions et des indexes (R-Tree), qui permettent de ranger les géométries dans des &#8220;boites&nbsp;englobantes&#8221;.</p> <p>Pour créer une base de données postgis, il faut faire un &#8220;create extension postgis&#8221;, ce qui installe tout ce dont on a&nbsp;besoin.</p> <p>il est possible d&#8217;apeller <cite><span class="caps">GEOMETRY</span>(<span class="caps">POINT</span>)</cite> par&nbsp;exemple.</p> <p><cite>ST_GeomFromText(&#8216;<span class="caps">POINT</span>(lat long)&#8217;)</cite> permet de convertir un point dans un objet geometrie interne à&nbsp;postgres.</p> <p><cite>ST_DWithin</cite> permet de trouver les personnes qui sont autour d&#8217;un rayon&nbsp;donné.</p> <p>L&#8217;ensemble des fonctions proposées par postgres commencent par <cite>ST_*</cite></p> </div> <div class="section" id="sqlalchemy"> <h2>SQLAlchemy</h2> <p>Il s&#8217;agit d&#8217;une bote à outil qui permet de faire des requetes de manière simple. Il y a une philosophie&nbsp;forte.</p> <ul class="simple"> <li>Il ne sohaite pas cacher la base de&nbsp;données</li> <li>C&#8217;est un language pour faire du <span class="caps">SQL</span> en&nbsp;python</li> <li>Rien n&#8217;est&nbsp;caché.</li> <li>Fourni un vocabulaire riche pour générer le <span class="caps">SQL</span></li> <li>L&#8217;objectif est de changer la manière dont on pense à <span class="caps">SQL</span>, redonner le gout du <span class="caps">SQL</span> aux&nbsp;developeurs.</li> </ul> <p>Deux parties: - <span class="caps">ORM</span> - <span class="caps">CORE</span></p> <p>Il est possible d&#8217;utiliser simplement le core si l&#8217;on sohaite (sans utiliser l&#8217;<span class="caps">ORM</span>)</p> <div class="section" id="core"> <h3>Core</h3> <p>Il est possible d&#8217;utiliser <span class="caps">SQL</span> Alchemy pour générer les tables à l&#8217;origine. Core permet d&#8217;utiliser des tables, et d&#8217;executer une insertion, depuis python. Il est possible de representer les requetes avec des methodes chainées <cite>select().where()</cite> etc.</p> <p>Le &#8220;core&#8221; ne fait pas de mapping du tout, il manipule des Tables <span class="caps">SQLA</span>&nbsp;directement.</p> </div> <div class="section" id="orm"> <h3><span class="caps">ORM</span></h3> <p>L&#8217;<span class="caps">ORM</span> fait, lui, du mapping. C&#8217;est cette couche que l&#8217;on va utiliser dans une application Web complexe par&nbsp;exemple.</p> <ul class="simple"> <li>il est possible de travailler avec une session <cite>Session()</cite> puis on effectue des opérations et on <cite>commit()</cite>.</li> </ul> <div class="section" id="geoalchemy"> <h4>GeoAlchemy</h4> <ul class="simple"> <li>Créé en 2009, pour supporter uniquement&nbsp;postgis.</li> <li>Depuis, d&#8217;autres bases de données (MySQL, Spatialite, MySQL server)&nbsp;etc.</li> <li>Réécriture depuis grace à la nouvelle <span class="caps">API</span> de SQLAlechemy, mais perte du support d&#8217;autres&nbsp;backends.</li> <li>Finalement, retour sur <span class="caps">POSTGIS</span> uniquement, pour évite d&#8217;avoir à supporter les différences de tous les&nbsp;backends.</li> </ul> </div> </div> </div> <div class="section" id="features"> <h2>Features</h2> <p>Très simple de s&#8217;intégrer avec les features de <span class="caps">POSTGIS</span>, par exemple en déclarant une colonne en tant que&nbsp;&#8220;Géometrie&#8221;.</p> <p>Exemple: session.query(Lake).filter(Lake.geom.ST_Buffer(2).ST_Area) permet de lister l&#8217;ensemble des lacs avec une aire de 2 au&nbsp;moins.</p> <p>S&#8217;intègre bien avec des services existants (shapely, pyramid,&nbsp;etc).</p> <p>Utilisation de geojsondumps pour representer des features en&nbsp;geojson.</p> </div> <div class="section" id="status"> <h2>Status</h2> <p>Le projet est completement documenté sur read the docs. La documentation est assez complete et solide. Il est intégralement testé, sur differentes versions de python, sqlalchemy et&nbsp;postgres.</p> <dl class="docutils"> <dt>3 ou 4 developeurs actifs sur le projet, ça fonctionne plutôt bien.&nbsp;Pour</dt> <dd><p class="first">contribuer, il est possible de faire cela sur&nbsp;github.</p> <p class="last">Slides de la presentation sur <a class="reference external" href="http://erliem.net/talks/pyconfr2015">http://erliem.net/talks/pyconfr2015</a></p> </dd> </dl> <p>Resources:</p> <ul class="simple"> <li><a class="reference external" href="https://pypi.python.org/pypi/Shapely">https://pypi.python.org/pypi/Shapely</a> - Manipulation and analysis of geometric objects in the Cartesian&nbsp;plane.</li> </ul> <p>Question:</p> <ul class="simple"> <li>Dans les exemples geoalchemy, les données geométriques sont passées sous forme de chaine. Est-ce normal ?&nbsp;Oui.</li> <li>Les rasters sont également&nbsp;supportés.</li> </ul> </div> PyconFR 2015 — SQL Alchemy2015-10-17T00:00:00+02:002015-10-17T00:00:00+02:00tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-sql-alchemy.html<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: David&nbsp;Allouche</p> <p><span class="caps">SQL</span> Alchemy vous permet de produire le <span class="caps">SQL</span> que vous voulez. Il faut que vous souhaitiez comprendre ce que va etre&nbsp;produit.</p> <p>Déclaratif:</p> <ul class="simple"> <li>On créé des classes qui …</li></ul><div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p>Speaker: David&nbsp;Allouche</p> <p><span class="caps">SQL</span> Alchemy vous permet de produire le <span class="caps">SQL</span> que vous voulez. Il faut que vous souhaitiez comprendre ce que va etre&nbsp;produit.</p> <p>Déclaratif:</p> <ul class="simple"> <li>On créé des classes qui representent nos tables, et les liaisons entre les tables, en utilisant <cite>relationship</cite> (qui à énormement&nbsp;d&#8217;attributs).</li> <li>On définit quelles osnt les clés étrangères entre les&nbsp;tables.</li> <li>Puis on va définir les attributs qui sont liés entre les tables&nbsp;(relationship).</li> <li>Pour définir des relations entre les Tables, il est possible d&#8217;utiliser des chaines de caractère <cite>relationship(&#8216;OtherTable&#8217;)</cite>.</li> <li>La session es tun concept&nbsp;important.</li> <li>Lire efficacement. Attention à ne pas faire énormement de requetes avec L&#8217;<span class="caps">ORM</span>.</li> </ul> <p><strong>Performance <span class="caps">SQL</span></strong></p> <ul class="simple"> <li>Générer le <span class="caps">SQL</span>&nbsp;(python)</li> <li>Ne pas faire énormement de petites&nbsp;requetes.</li> </ul> <p>Il est possible de demander à la session de charger les données qui sont associées. (avec un joinedload). Par defaut, cela risque de charger l&#8217;ensemble des&nbsp;colonnes.</p> <p>Pour la générer avec SQLAlchemy, il est possible de faire un <cite>.query(Table).join(Table).join(Table2).filter_by(field=value)</cite></p> <p>En pratique, le mieux est de lister clairemnet le nom des&nbsp;tables</p> <p>2ème&nbsp;partie:</p> <p>Pour de l&#8217;import de&nbsp;données,</p> <ul class="simple"> <li>first() fait une requete <span class="caps">SQL</span>. A éviter dans les&nbsp;boucles</li> <li>session.flush() c&#8217;est quand la session écrit en base tout ce qui est en cours dans la transaction. Par default, la session fait un flush avant chaque&nbsp;requete.</li> <li>une option backçpopulates mets à jour la liste des documents associés à une table qui à une foreign key. backref modifie implicitement la classe associée. Il est recommandé d&#8217;utiliser <cite>back_populates</cite> et non pas <cite>backref</cite>.</li> <li><cite>subqueryload</cite> permet de générer une requete séparée plutôt qu&#8217;une&nbsp;jointure.</li> </ul> PyconFR 2015 — Table ronde diversité2015-10-17T00:00:00+02:002015-10-17T00:00:00+02:00tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-table-ronde-diversite.html<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p><em>Prise de notes: Gordon et&nbsp;Alexis</em></p> <p><strong>Présent·e·s: Jean Phillipe, Laurence (Directrice de l&#8217;école qui acueille la Pycon), Amandine, Vivianne, Anna (de django carrots) + representes de django girls bordeaux …</strong></p><div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N&#8217;hésitez pas à les completer si&nbsp;besoin.</p> </div> <p><em>Prise de notes: Gordon et&nbsp;Alexis</em></p> <p><strong>Présent·e·s: Jean Phillipe, Laurence (Directrice de l&#8217;école qui acueille la Pycon), Amandine, Vivianne, Anna (de django carrots) + representes de django girls bordeaux (Laurenne et&nbsp;Alexia).</strong></p> <p><strong><span class="caps">JP</span> — Pourquoi</strong>:On a eu une discussion sur la <span class="caps">ML</span> de l&#8217;AFPy suite à une décision de l&#8217;afpy de ne pas financer un évènement qui n&#8217;était pas ouvert à tous-tes (restreint aux femmes et personnes trans). Cette décision à été prise conformément a la charte de l&#8217;<span class="caps">AFPY</span> qui dit que les evènements promus sont ouverts à tous. Ce qui veut dire que cela n&#8217;inclue pas les évènement exclusifs. (Je n&#8217;ai jamais demandé de financement à l&#8217;<span class="caps">AFPY</span>. J&#8217;ai juste demandé la diffusion sur la mailing interne de la création de Pyladies Paris. Je ne sais pas d&#8217;où vient cette histoire de financement! Pyladies&nbsp;Paris)</p> <p>Suite à ça, une modification de la charte à été proposée. Demain matin, la modification de la charte sera proposée lors de l&#8217;<span class="caps">AG</span>. Suite à la proposition de modification, les discussions se sont enchainées, avec des points de vue divergents. Cette table ronde vient donc dans ce contexte. I <span class="caps">BD</span> d&#8217;introduction: <a class="reference external" href="http://www.commitstrip.com/fr/2015/09/17/meanwhile-in-a-parallel-universe-2/">http://www.commitstrip.com/fr/2015/09/17/meanwhile-in-a-parallel-universe-2/</a></p> <div class="section" id="tour-de-presentation"> <h2>Tour de&nbsp;présentation:</h2> <ul class="simple"> <li>Laurence directrice de l&#8217;école qui accueille d&#8217;évènement, docteure en Maths. Contente de voir que la tendance s&#8217;inverse un peu (de plus en plus de&nbsp;filles).</li> <li>Vivianne, maitre de conférence en informatique à paris sud. Études dans un milieu assez masculin. Dans le domaine du developpement pour la recherche, ou des environnements techniques, c&#8217;est très masculin. Essaye de voir comment faire pour que les filles s&#8217;intéressent plus a&nbsp;l&#8217;informatique.</li> <li>Amandine Neyrolle, diplomée d&#8217;école de commerce (plutot 50% fille/garcon dans ces fillières). Intégrée le monde de l&#8217;informatique par la suite en autodidacte et formations. Rencontré la créatrice de pyladies et discuté de ces&nbsp;questions.</li> <li>Laurenne Chelan, organistrice des django girls bdx. Nouvelle dans cet univers. Travaille dans des musées de science depuis quelques années. L&#8217;idée de dj girs bdx part de l&#8217;idée de découvrir le code. Les djangogirls viennent de berlin, créé par&nbsp;???.</li> <li>Alexia Sumois. organisatrice de django girls bdx. Nouvelle dans le milieu du code. Les conférences d&#8217;aujourd&#8217;hui on donné envie&nbsp;d&#8217;apprendre.</li> <li>Anna, créatrice de 4ideas. Essaye de faire en sorte que plus de femmes viennent dans l&#8217;<span class="caps">IT</span>. En reconversion pro. Choisi ce domaine il ya un an. Trouve que ce sujet est vraiment extremement important, et sur lequel il est possible de faire quelque chose, et d&#8217;influencer positivement. L&#8217;idée étant de démystifier l&#8217;<span class="caps">IT</span>, et laisser le choix aux femmes de choisir cette&nbsp;profession.</li> <li>Jean Phillipe Campguillhem, secrétaire de l&#8217;<span class="caps">AFPY</span></li> </ul> </div> <div class="section" id="pourquoi-django-girls"> <h2>Pourquoi Django Girls&nbsp;?</h2> <p><strong>Alexia</strong> — Le déclencheur de cette aventure vient des goodies (!). La décoration de l&#8217;évènement a attiré l&#8217;attention et donné envie de&nbsp;creuser.</p> <p><strong>Laurenne</strong> — C’est pour ça qu’on se pose la question « comment attirer ces publics, ces personnes-là ? », importance de l’image qu’on renvoie. Ce n’est pas tant une question de genre, mais d’initié·e·s : on a souvent peur d’entrer dans ce milieu. Django-girls vise une plus grande bienveillancet Carte de la convivialité, chaleureux, et facile d&#8217;accès pour les débutants. Tout est livré clé en main, et l&#8217;évènement est facile à prendre en main. Le 28 oct à bordeau, recherche de coachs / sponsors pour l&#8217;évènement. <a class="reference external" href="http://djangogirls.com/bordeaux">http://djangogirls.com/bordeaux</a></p> <p><strong>Laurence</strong> — Aspect macho présent dans la communication de l’école (pas forcément explicite). « On a toujours dessiné des symboles de métiers identifiés par des garçons&nbsp;»</p> <p><strong>Laurenceu</strong> — Il y a une partie d&#8217;inconscient dans l&#8217;ensemble de l&#8217;enseignement qui est donné. Il y a peu de candidates qui essayent. Pas question de discrimination positive puisque cela a des effets indésirables (communautarisme). La question est tout de meme posée, mais il est impensable d&#8217;accepter des gens grace / a cause de leur genre. L&#8217;ambiance change lorsqu&#8217;il y a de la mixité. À la recherche d’idées pour faire venir plus de&nbsp;candidates.</p> <p><strong>Viviane</strong> — En tant que femme, on reçoit en permanence le message que ce métier n’est pas fait pour nous. Ces messages ont un impact, le résultat est que les filles ne vont pas dans les écoles d’informatiques. Il faut aller convaincre les jeunes filles que c’est aussi fait pour elles. Ça passe par changer les plaquettes. Il faut réussir à changer l&#8217;image existante des confs / communautés. Un développeur peut aussi etre une développeuse. Dans l&#8217;assemblée, on se rend compte que certaines femmes sont en dehors du parcours. Il faut qu&#8217;en tant que communauté on soit capables d&#8217;accueillir les nouvelles / nouveaux. C’est en ayant une diversité qu’on parviendra à changer l’image du métier. Les rencontres pyladies permettent aussi de rencontrer d&#8217;autres femmes qui ont les mêmes problématiques. Accompagner les nouvelles entrantes pour trouver du boulot, découvrir l&#8217;<span class="caps">AFPY</span> et les initatives existantes. Les initiatives existantes django girls / pyladies est très&nbsp;important.</p> <p><strong>Amandine</strong> — C’est pourquoi ce genre d’évènements non-mixtes permet de faire des séances de rattrapage pour permettre d’intégrer la communauté dans son ensemble. C’est le point clé pour faire accepter ce genre&nbsp;d’initiatives.</p> <p><strong>Laurenne</strong> — DjangoGirls et Django Carrots ne sont pas des évènements excluants. Ils sont simplement orientés en priorité aux femmes. Sur la question de « comment amener des jeunes filles vers ces études-là », ça se joue bien avant, dans l’enfance, bien avant l’école. cf les jeux genrés. Il faut travailler à ce&nbsp;niveau-là.</p> <p><strong>Anna</strong> — Pour illustrer ce que dit Laurenne, l&#8217;importance des clichés existants. Avant le mi-80s, il y avait autant de femmes que dans d&#8217;autres domaines. Si on regarde les stats, dans tousles autres domaines, le pourcentage de femmes augmente. Et en <span class="caps">IT</span>, en 84 il y a un pic qui inverse la tendance. Ce sont des stats américaines. A priori cela s&#8217;applique aussi en Europe. En <span class="caps">IT</span>, la culture qui à été créé autour des hackers qui ont des super pouvoirs, mangent des pizzas, etc. Ces clichés ont influencé le monde. Nous ne sommes pas complètement autonomes, et nous sommes influencés par la culture autour de nous. Les dommages qui ont été fait dans le domaine de l&#8217;<span class="caps">IT</span> sont graves, et il est important de renverser la tendance. La question de l&#8217;image est centrale. Les personnes ont besoin de place pour faire leurs évènements. Il est important de comprendre et respecter que les autres veuillent faire de la discrimination positive. Ce sont des actions qui sont supportées par la France. Ce sont des valeurs qui sont beaucoup lus fortes en France qu&#8217;ailleurs (Anna souligne qu&#8217;elle est Polonaise). On devrait respecter ce&nbsp;droit.</p> <p><strong>Vivianne</strong> — Certaines evènements sont non-mixtes (pour les personnes qui s&#8217;identifient comme des femmes). Ce ne doit pas etre les seules initiatives. Elle est pour la mixté. PyLadies est assez spécifique : ce n’est pas de la formation, mais principalement des évènements tournés autour du réseau. Il est important d&#8217;avoir un endroit ou les jeunes femmes seront moins imprésionnées. Les situations exposées dans la <span class="caps">BD</span> sont réelles. De se retrouver dans un environnement où elles sont sûres qu’elles ne subiront pas de&nbsp;micro-agressions.</p> <p><strong>Laurence</strong> — Témoignage d&#8217;une mère qui dit à sa fille, en passant devant un panneau de l&#8217;école, mentionnant maths et informatique, et qui dit à sa fille « oh non, c&#8217;est pas pour toi ça » . On dit « attention les garçons, vous devez être sympas avec les filles ». Les garçons ont envie que ça se passe bien avec les&nbsp;filles.</p> <p><strong><span class="caps">JP</span></strong> — Sans revenir sur les décisions qui ont été prises, nous n&#8217;avons pas dit que nous étions contre ces évènements (à l&#8217;<span class="caps">AFPY</span>). A plusieurs reprises, j&#8217;ai du faire des blagues sexistes. Évidemment qu&#8217;on est mieux ensemble. Pour revenir sur la discussion de la mailing-list, je me suis rendu compte que j&#8217;avais un regard biaisé. Si on en est la, c&#8217;est quil y a énormement de travail. Que faire, du coup ? En tant qu&#8217;hommes ? Qu&#8217;association ? Si il est necessaire de créer une zone de confort / sécurité, c&#8217;est qu&#8217;il y a une zone d&#8217;inconfort / insécurité qui est forte. Les couleurs, les jolis goodies, sont le sommet de l’iceberg. Rappel de l&#8217;éxistence du Code of Conduct : il y a déjà eu des incidents par le passé. On passe la parole à Florent, qui est à l’origine du CoC. Remerciement envers les&nbsp;intervenantes.</p> <p><strong>Florent (vice secrétaire de l&#8217;<span class="caps">AFPY</span>)</strong> — Comme le dit <span class="caps">JP</span>, un code of conduct est affiché devant toutes les portes et à l&#8217;entrée. Tout le monde n’aimait pas forcément l’idée d’en avoir, on a fini par trancher. Le but est d’avoir des endroits safes. Avant d’avoir un CoC, on ne peut pas dire qu’on soit safes, envers l&#8217;ensemble des minorités. On a écrit le CoC en conséquence des agressions. Aujourd’hui, pas de tolérance pour des comportements qui n’ont pas lieu d’être (qu’on a définis comme tels). Ça fonctionne sur la dénonciation lorsque l’on est témoin de ça. On n’a pas vraiment de mal à rencontrer des femmes, mais plus de mal à faire comprendre qu’elles sont bienvenues. Impact important de blagues sexistes, qu’on défend comme « c’est pour rire ». Merci de lire le Code of Conduct. Les blagues sexistes etc. ne sont pas les bienvenues. Merci de réagir lors de ces&nbsp;cas.</p> </div> <div class="section" id="questions"> <h2>Questions.</h2> <p><strong>Questiond de Gawel</strong>: Question pour Amandine. Est-ce que tu te sens bien à l&#8217;<span class="caps">AFPY</span> ? Si non, que faire pour que tu te sente mieux&nbsp;?</p> <p>Amandine — Oui je me sens bien, est-ce qu’il y a eu des évènements ? oui, sans doute mais j’y suis aguerrie, donc je me rends peu compte. Qu’est-ce qu’on peut faire ? L’idée du CoC est d’aller à l’encontre des comportements négatifs, mais l’idée derrière est une ouverture à la différence dans son ensemble, promouvoir l’ouverture à l’autre et à la différence. L’enjeu culturel est d’arriver à changer d’état d’esprit et d’identifier ces biais cognitifs. Il faudrait pas qu’on se dise « ho là là, il y a une fille, faut rien dire sinon je vais me faire taper » Il faut cultiver la différence. et être&nbsp;curieux/se.</p> <p><strong>Question</strong> : « c’est pas fait pour moi », mais plutôt « je suis mauvais, donc je dois travailler », on en revient à l’importance de l’éducation. Il faut continuer de pointer du doigt les problèmes. Je suis aussi membre d’un <span class="caps">LUG</span>, nous sommes entre hommes diplomés blancs de 30 à 40 ans. La réflexion sur les plaquettes pas accueillantes est pertinente : le site de l’asso est très&nbsp;masculin.</p> <p><strong>Question de Bruno</strong>. Pour l’école: quand j’étais étudiant, 20% de filles. (Aujourd’hui on est partis de 7/8% pour arriver à 15%). Est-ce que les filles réussissent plus&nbsp;?</p> <p>Laurence — on n’a pas de stats, mais elles posent moins de problèmes. Les filles sont favorisées par les&nbsp;employeurs.</p> <p>Vivianne — la motivation des filles à la sortie est identique aux garçons, mais tout n’est pas rose. En entretien par exemple, ils sont faits par des hommes, mais au niveau des stats, le nombre de femmes qui quittent le milieu est important. Effort à faire au niveau de la communauté, des entreprises. Schémas masculins, mais sur le long terme, on subit des agressions. Difficile de rester dans le métier et faire une carrière intéressante, à compétences/motivation identiques aux hommes. Il faut en avoir&nbsp;conscience</p> <p><strong>Question de Benoit</strong>: il y a peut-être une façon de créer des lieux/évènements protégés, en utilisant ceux qui existent déjà. Est-ce qu’on peut aller organiser des évènements dans des écoles/lycées, des endroits où les gens se sentent déjà à l’aise, où les populations sont plus représentées&nbsp;?</p> <p>Vivianne — ça se fait. En tant qu’enseignante, dès que j’ai une occasion, que ce soit pour aller chercher des <span class="caps">JF</span> ou des étudiants maths/infos, même si c’est ouvert à tous, je le fais. Si c’est que des hommes, les femmes n’ont pas envie d’y&nbsp;aller.</p> <p>Laurenne — c’est quelque chose qui se fait beaucoup. On met en avant des femmes chercheuses dès qu’on le&nbsp;peut.</p> <p><strong>Question d&#8217;Alexis</strong> : je suis très content qu’il y ait cette discussion qui se fasse. Question par rapport aux discriminations positives, qu’on a pu voir par le passé (notamment lors de conférences). Difficile de dire « on va préférer des femmes ». Question irrésolue, parce que pour faire évoluer, on a besoin d&#8217;initier quelque chose, d’essayer. Mais ça a un côté&nbsp;dérangeant.</p> <p>Vivianne — à la PyCon (<span class="caps">US</span>), j’ai été impressionnée du nombre de femmes qui parlaient. On va pas mettre un quota, ça serait stupide, on va forcer personne. Mais il faut en avoir conscience. Cette année, on est 4 oratrices, y’a du travail à faire. En tant qu’hommes, il faut aussi se mettre en retrait et inviter des femmes à en parler à notre place. Faire le pas d&#8217;aller faire un exposé dans une communauté où on ne se sent pas à sa place (même si on lutte contre) est difficile. Inviter des gens, sans forcément passer par un énorme processus. Ça passe par des events comme&nbsp;PyLadies.</p> <p>Anna — pour les personnes par encore convaincues, juste apres le droit de vote des femmes en 46, à l&#8217;assemblée nationale il y avait très peu de femmes. Puis en 93, 6.1% apres que des mesures aient été prises. Ensuite de femmes puis vers 20% Les choses ne vont pas se changer toutes seules. Il est necessaire d&#8217;avoir du temps pour faire évoluer les choses. Il est important de noter que PyconFR fait déjà des choses. Et lors de django carrots, je me suis sentie très accueillie. J&#8217;ai eu beaucoup de très bonnes expériences avec des personnes qui étaient prêtes à&nbsp;aider.</p> <p><span class="caps">JP</span> — Remerciement pour Rémy qui abat un travail de ouf. C&#8217;est grace à Rémy si il y a django carrots demain. Il faut faire des choses. :-) Merci&nbsp;!</p> </div>