<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.sorcellerieweb.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Sorcellerie Web - Tag - python</title>
  <link>http://blog.sorcellerieweb.net/</link>
  <description>Bienvenue dans l'antre d'un sorcier du web. Ici vous seront dévoilées les formules les plus secrètes, les potions les plus goutues, les sorts les plus faramineux pour en mettre plein la vue à vos collègues nerds avec votre sorcellerie web niveau 36. Ou au moins à mettre en ligne un gif animé.</description>
  <language>fr</language>
  <pubDate>Thu, 04 Sep 2008 10:11:09 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Komodo Edit</title>
    <link>http://blog.sorcellerieweb.net/post/2008/08/28/Komodo-Edit</link>
    <guid isPermaLink="false">urn:md5:eb41e01e4e5deed24c548f70e533b02c</guid>
    <pubDate>Fri, 29 Aug 2008 15:14:00 +0200</pubDate>
    <dc:creator>J.Ducastel</dc:creator>
        <category>Artefacts</category>
        <category>django</category><category>html</category><category>javascript</category><category>php</category><category>pratique</category><category>python</category><category>xml</category><category>yaml</category>    
    <description>&lt;p&gt;Puisque la question a été posée sur la &lt;a href=&quot;http://lists.afpy.org/mailman/listinfo/django&quot; hreflang=&quot;fr&quot;&gt;liste de
diffusion de django&lt;/a&gt;, voici quelques remarques sur l'éditeur que j'utilise
et les raisons de mon choix.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.sorcellerieweb.net/public/img/logo-komodo.png&quot; alt=&quot;komodo edit&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; title=&quot;komodo edit, aoû 2008&quot; /&gt; Il s'agit
donc de &lt;a href=&quot;http://www.activestate.com/Products/komodo_edit/&quot; hreflang=&quot;en&quot;&gt;Komodo Edit&lt;/a&gt;, qui succède depuis maintenant une bonne année à &lt;a href=&quot;http://www.pspad.com/fr/&quot; hreflang=&quot;fr&quot;&gt;PSPad&lt;/a&gt; (qui succédait lui-même à
&lt;a href=&quot;http://www.contexteditor.org&quot; hreflang=&quot;en&quot;&gt;Context&lt;/a&gt;). L'essentiel
de mon activité de développement se fait au bureau sous Windows, mais je
développe également chez moi sous Mac, après quelques années sous Linux. Je
souhaitais un éditeur qui soit multi-plateformes afin de n'avoir qu'une
interface à apprendre. Pour le reste, voici un résumé :&lt;/p&gt;    &lt;dl&gt;
&lt;dt&gt;coloration syntaxique&lt;/dt&gt;
&lt;dd&gt;Les formats supportés (et qui m'intéressent) sont PHP, SQL, HTML, XML, CSS,
Python, Javascript, Django (gabarits). Ce qu'il me manque : INI qui est un
format que j'utilise pour mes fichiers de configuration.&lt;/dd&gt;
&lt;dt&gt;Auto-complétion&lt;/dt&gt;
&lt;dd&gt;Et vraiment très bien faite. Lorsque l'on commence à taper un nom de
fonction, komodo propose une liste de choix, puis une bulle contextuelle avec
la liste des arguments. Outre les fonctions natives du language, Komodo
supporte également les fonctions et méthodes du projet en cours, et est même
capable de récupérer les informations depuis leur docblock, ce qui est une
motivation pour les écrire systématiquement :)&lt;/dd&gt;
&lt;dd&gt;&lt;img src=&quot;http://blog.sorcellerieweb.net/public/img/captures/komodo-import_completion.png&quot; alt=&quot;completion d'import python sous komodo edit&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; title=&quot;completion d'import python sous komodo edit, aoû 2008&quot; /&gt;C'est aussi très
utile pour les directives d'importation en python, quand on ne connait pas
encore par coeur l'arborescence des paquets et modules que l'on utilise.&lt;/dd&gt;
&lt;dt&gt;Projets&lt;/dt&gt;
&lt;dd&gt;La creation d'un projet se fait assez facilement, en sélectionnant le
dossier concerné. Ceci donne un navigateur de fichier pour le dossier en
question.&lt;/dd&gt;
&lt;dt&gt;Edition multiple&lt;/dt&gt;
&lt;dd&gt;Tout à fait vital pour moi, j'ai souvent une douzaine d'onglets ouverts
!&lt;/dd&gt;
&lt;dt&gt;Pliage de code&lt;/dt&gt;
&lt;dd&gt;Pratique quand on cherche une méthode au sein d'une classe obèse, même si
ça en vaut pas un bon navigateur de code&lt;/dd&gt;
&lt;dt&gt;Chercher-remplacer&lt;/dt&gt;
&lt;dd&gt;Dans le fichier en cours, la selection en cours, tous les fichiers du
projet; et supporte les expressions régulières.&lt;/dd&gt;
&lt;dt&gt;Mais un défaut quand même&lt;/dt&gt;
&lt;dd&gt;Ca rame. Comparé à la plupart des éditeurs de texte, Komodo edit est très
gourmand en mémoire. Si vous avez un très gros fichier à ouvrir, tel qu'un log
ou un dump SQL, mieux vaut essayer un éditeur plus léger.&lt;/dd&gt;
&lt;/dl&gt;</description>
    
    
    
          <comments>http://blog.sorcellerieweb.net/post/2008/08/28/Komodo-Edit#comment-form</comments>
      <wfw:comment>http://blog.sorcellerieweb.net/post/2008/08/28/Komodo-Edit#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.sorcellerieweb.net/feed/rss2/comments/271887</wfw:commentRss>
      </item>
    
  <item>
    <title>Fichiers de configuration</title>
    <link>http://blog.sorcellerieweb.net/post/2007/12/07/Fichiers-de-configuration</link>
    <guid isPermaLink="false">urn:md5:6141a8df36266042717321c4a8302074</guid>
    <pubDate>Fri, 07 Dec 2007 16:27:00 +0100</pubDate>
    <dc:creator>J.Ducastel</dc:creator>
        <category>Formules</category>
        <category>ini</category><category>php</category><category>pratique</category><category>python</category><category>xml</category><category>yaml</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://blog.sorcellerieweb.net/public/img/advanced-directory.png&quot; alt=&quot;configuration-48x48&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; /&gt;Lorsqu'on développe une application
ou un composant de manière à pouvoir le réutiliser, il est nécessaire de
pouvoir définir une configuration d'environnement de manière séparée du code.
Cela peut être fait par inclusion d'un fichier se contentant de déclarer un
suite de variables ou de constantes dans le language de l'application (c'est le
cas des fichiers urls.py et settings.py de Django). Mais il est généralement
préférable d'utiliser un format qui puisse être lu et modifié par un
non-programmeur.&lt;/p&gt;    &lt;h3&gt;Le format INI&lt;/h3&gt;
&lt;p&gt;A la fois très simple et très largement utilisé, le &lt;a href=&quot;http://fr.wikipedia.org/wiki/Fichier_INI&quot;&gt;format INI&lt;/a&gt; permet de définir des
paires clefs/valeur, éventuellement organisées par sections. Il est
suffisamment intuitif pour être modifié par quelqu'un qui n'en connait pas la
syntaxe.&lt;/p&gt;
&lt;p&gt;C'est le format de configuration de PHP, et une &lt;a href=&quot;http://fr.php.net/manual/fr/function.parse-ini-file.php&quot;&gt;fonction native&lt;/a&gt;
permet de lire un tel fichier et de récupérer directement les données stockées
dans un tableau associatif, à deux dimensions en activant le support des
sections.&lt;/p&gt;
&lt;p&gt;Python dispose du module &lt;a href=&quot;http://docs.python.org/lib/module-ConfigParser.html&quot;&gt;ConfigParser&lt;/a&gt;, qui
supporte une syntaxe un peu plus évoluée.&lt;/p&gt;
&lt;h3&gt;Le format XML&lt;/h3&gt;
&lt;p&gt;Le patriarche des formats de structuration et d'échange de données. Plus
qu'un format de fichier, &lt;a href=&quot;http://fr.wikipedia.org/wiki/Xml&quot;&gt;XML&lt;/a&gt; est
une grammaire dont dérivent des zillions de syntaxes, qu'elles soient
standardisées ou propriétaires. Très largement utilisé pour la configuration
d'application, ce n'est pourtant pas forcément des plus simples à éditer. De
plus, il est généralement assez lourd à manipuler en programmation, ce qui
n'est pas terrible en termes de performance. Surtout dans le cadre d'une
application web, si celle-ci doit lire le fichier à chaque requete...&lt;/p&gt;
&lt;h3&gt;Le format YAML&lt;/h3&gt;
&lt;p&gt;Si vous avez besoin de données de configuration plus élaborées, notamment
s'il vous faut plus de deux niveaux de données ou des textes sur plusieurs
lignes, il y a le &lt;a href=&quot;http://fr.wikipedia.org/wiki/Yaml&quot;&gt;format YAML&lt;/a&gt;.
Celui-ci se veut une alternative à XML, qui soit à la fois plus concise (donc
plus légère à stocker) et plus lisible pour un être humain. Ce qui en fait un
candidat idéal pour des fichiers de configuration. Comme en Python,
l'indentation y joue un rôle clef.&lt;/p&gt;
&lt;p&gt;Contrairement à INI, il n'est pas supporté nativement par PHP, mais la
&lt;a href=&quot;http://spyc.sourceforge.net/&quot;&gt;librairie Spyc&lt;/a&gt; permet de convertir
ces fichiers en tableaux de données et inversement.&lt;/p&gt;
&lt;p&gt;Python dispose de la librairie &lt;a href=&quot;http://pyyaml.org/&quot;&gt;PyYaml&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.sorcellerieweb.net/post/2007/12/07/Fichiers-de-configuration#comment-form</comments>
      <wfw:comment>http://blog.sorcellerieweb.net/post/2007/12/07/Fichiers-de-configuration#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.sorcellerieweb.net/feed/rss2/comments/183556</wfw:commentRss>
      </item>
    
  <item>
    <title>Petit guide à l'usage du developpeur agile</title>
    <link>http://blog.sorcellerieweb.net/post/2007/11/07/Petit-Guide-a-lusage-du-developpeur-agile</link>
    <guid isPermaLink="false">urn:md5:af2f4075dbf7490ccc335b57d40d8922</guid>
    <pubDate>Fri, 23 Nov 2007 10:16:00 +0100</pubDate>
    <dc:creator>J.Ducastel</dc:creator>
        <category>Bave de crapaud</category>
        <category>livre</category><category>pratique</category><category>python</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://programmation-python.org/guide&quot;&gt;&lt;img src=&quot;http://blog.sorcellerieweb.net/public/img/.python-guide-developpeur-agile_t.jpg&quot; alt=&quot;python-guide-developpeur-agile.png&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; /&gt;&lt;/a&gt; Il etait déjà dans ma liste Amazon,
mais &lt;a href=&quot;http://www.biologeek.com/journal/index.php/envie-de-developper-agilement-en-python-suivez-le-guide&quot; hreflang=&quot;fr&quot;&gt;une critique de BioloGeek&lt;/a&gt; m'a décidé à l'acheter sur le
champ. Et je ne regrette pas. Plus qu'un ouvrage sur Python, il traite pour
l'essentiel de méthodologie et de bonnes pratiques de développement. Beaucoup
de conseils sont génériques et transposables à d'autres language comme le
PHP.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.sorcellerieweb.net/post/2007/11/07/Petit-Guide-a-lusage-du-developpeur-agile#comment-form</comments>
      <wfw:comment>http://blog.sorcellerieweb.net/post/2007/11/07/Petit-Guide-a-lusage-du-developpeur-agile#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.sorcellerieweb.net/feed/rss2/comments/178152</wfw:commentRss>
      </item>
    
  <item>
    <title>Tester Django - modifier ses modèles</title>
    <link>http://blog.sorcellerieweb.net/post/2007/11/19/Tester-Django-modifier-ses-modeles</link>
    <guid isPermaLink="false">urn:md5:1db68f4f22cfe59c3a29c429afdb509c</guid>
    <pubDate>Mon, 19 Nov 2007 17:16:00 +0100</pubDate>
    <dc:creator>J.Ducastel</dc:creator>
        <category>Artefacts</category>
        <category>django</category><category>firefox</category><category>python</category><category>sqlite</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://blog.sorcellerieweb.net/public/img/django-180.png&quot; alt=&quot;logo Django&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; /&gt;Ce week-end, j'ai repris mes tests de
&lt;a href=&quot;http://djangoproject.com&quot; hreflang=&quot;en&quot;&gt;Django&lt;/a&gt;, un framework web
en &lt;a href=&quot;http://python.org&quot; hreflang=&quot;en&quot;&gt;Python&lt;/a&gt;. (Ou comment occuper
son week-end par temps pourri et grève des transports). Histoire de me
simplifier la vie et remettre à plus tard l'installation et la configuration de
MySQL sur mon Mac, j'ai opté pour le stockage SQLite (qui est inclus d'office).
Voici un bref compte-rendu, ainsi qu'une petite astuce pour les premiers stades
d'un développement avec Sqlite&lt;/p&gt;    &lt;p&gt;Tout naturellement, je suis parti dans la ré-implémentation incrémentale
d'un de mes projets PHP. Ce qui signifie commencer avec des modèles de données
très simples, et les enrichir au fur et à mesure. Avec Django, la définition
des modèles de données se fait par la rédaction de classes modèles, et la
création des tables de la base se fait via un utilitaire en ligne de commande :
&lt;code&gt;python manage.py syncdb&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Or cette commande ne crée que les tables n'existant pas encore et ne met pas
à jour la structure des tables existantes, ce qui fait que très vite on se
retrouve avec des tables dont la structure ne correspond plus au modèle, et une
erreur du type &lt;cite&gt;no such column&lt;/cite&gt;. J'ai cru un instant que la commande
&lt;code&gt;python manage.py flush&lt;/code&gt; vidait la base et donc supprimait les
tables, mais elle ne vide apparemment que les données et conserve la structure
des tables existantes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.sorcellerieweb.net/public/img/sqlite_manager.png&quot; alt=&quot;SQLite Manager (extenson firefox)&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; /&gt;C'est là qu'une fois de plus, Firefox m'a
servi de couteau suisse du développement. En cherchant un utilitaire pour
inspecter le contenu de la base Sqlite, je suis tombé &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/5817&quot; hreflang=&quot;en&quot;&gt;SQLite
Manager&lt;/a&gt;, une extension permettant d'administrer entièrement une base Sqlite
! Du coup, ça m'a permis de supprimer la table associée à chaque fois que je
modifiais un modèle, et la recréer ensuite via &lt;code&gt;syncdb&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pour ce qui est de Django, je ne suis pas déçu. Cela faisait longtemps que
je le surveillais du coin de l'oeil, et même un peu plus puisque j'ai réalisé
une implémentation partielle de son moteur de templates en PHP (actuellement
incluse dans &lt;a href=&quot;http://blog.sorcellerieweb.net/post/2007/11/19/&quot; hreflang=&quot;en&quot;&gt;webappkit&lt;/a&gt;, mon système de paquetages
pour applis web PHP). En pratique, c'est encore mieux qu'attendu et la qualité
et la richesse de la documentation y est pour quelque chose. Ainsi bien sûr que
les qualités du language Python, qui a pas mal d'avance sur PHP a la fois en
fonctionnalités et en cohérence.&lt;/p&gt;
&lt;p&gt;Quelques liens supplémentaires :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://django-fr.org&quot; hreflang=&quot;fr&quot;&gt;Django-fr&lt;/a&gt;, proposant une
partie de la documentation en français&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.djangobook.com/&quot; hreflang=&quot;en&quot;&gt;Django Book&lt;/a&gt; un livre
en ligne (a paraitre prochainement)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.b-list.org/&quot; hreflang=&quot;en&quot;&gt;The B-list&lt;/a&gt; un blog très
riche en informations et astuces de développement.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ma.gnolia.com/people/fredbird/tags/django&quot; hreflang=&quot;en&quot;&gt;Mes signets Django sur Magnolia&lt;/a&gt; comme ça je ne recopie pas tous mes
liens ici ;)&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.sorcellerieweb.net/post/2007/11/19/Tester-Django-modifier-ses-modeles#comment-form</comments>
      <wfw:comment>http://blog.sorcellerieweb.net/post/2007/11/19/Tester-Django-modifier-ses-modeles#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.sorcellerieweb.net/feed/rss2/comments/178155</wfw:commentRss>
      </item>
    
</channel>
</rss>