Index: /rmll_workshops/web_panorama/rmll.html
===================================================================
--- /rmll_workshops/web_panorama/rmll.html (revision 431)
+++ /rmll_workshops/web_panorama/rmll.html (revision 434)
@@ -350,5 +350,5 @@
 =================== -->
 <!-- Cette présentation et les éléments de contenus associés sont placés dans le -->
-<!-- domaine publique. -->
+<!-- domaine public. -->
 <ul class="small simple">
 <li>Panorama</li>
@@ -357,5 +357,5 @@
 </ul>
 <div class="handout container">
-Ce tutorial présente un panorama des frameworks web existant en python et
+Ce tutoriel présente un panorama des frameworks web existant en python et
 la facon de les déployer à l'aide de la norme WSGI.</div>
 <div class="contents handout topic">
@@ -363,37 +363,36 @@
 <ul class="simple">
 <li><a class="reference" href="#frameworks-bas-niveaux" id="id3" name="id3">Frameworks bas niveaux</a></li>
-<li><a class="reference" href="#exemple-de-hello-world" id="id4" name="id4">Exemple de Hello World</a></li>
-<li><a class="reference" href="#avantages-inconv-nients" id="id5" name="id5">Avantages / Inconvénients</a></li>
-<li><a class="reference" href="#frameworks-haut-niveau" id="id6" name="id6">Frameworks haut niveau</a></li>
-<li><a class="reference" href="#django" id="id7" name="id7">Django</a></li>
-<li><a class="reference" href="#turbogears" id="id8" name="id8">TurboGears</a></li>
-<li><a class="reference" href="#zope" id="id9" name="id9">Zope</a></li>
-<li><a class="reference" href="#grok" id="id10" name="id10">Grok</a></li>
-<li><a class="reference" href="#id1" id="id11" name="id11">Avantages / Inconvénients</a></li>
-<li><a class="reference" href="#probl-matique-de-d-ploiement" id="id12" name="id12">Problématique de déploiement</a></li>
-<li><a class="reference" href="#utilisation-de-virtualenv" id="id13" name="id13">Utilisation de virtualenv</a></li>
-<li><a class="reference" href="#utilisation-de-zc-buildout" id="id14" name="id14">Utilisation de zc.buildout</a></li>
-<li><a class="reference" href="#b-tir-son-application" id="id15" name="id15">Bâtir son application</a></li>
-<li><a class="reference" href="#utilisation-de-distutils" id="id16" name="id16">Utilisation de distutils</a></li>
-<li><a class="reference" href="#wsgi-vous-sauve-la-vie" id="id17" name="id17">WSGI vous sauve la vie</a></li>
-<li><a class="reference" href="#composition" id="id18" name="id18">Composition</a></li>
-<li><a class="reference" href="#en-image" id="id19" name="id19">En image</a></li>
-<li><a class="reference" href="#serveur" id="id20" name="id20">Serveur</a></li>
-<li><a class="reference" href="#application" id="id21" name="id21">Application</a></li>
-<li><a class="reference" href="#la-variable-environ-1-2" id="id22" name="id22">La variable environ (1/2)</a></li>
-<li><a class="reference" href="#la-variable-environ-2-2" id="id23" name="id23">La variable environ (2/2)</a></li>
-<li><a class="reference" href="#monde-du-milieu-1-2" id="id24" name="id24">Monde du milieu (1/2)</a></li>
-<li><a class="reference" href="#monde-du-milieu-2-2" id="id25" name="id25">Monde du milieu (2/2)</a></li>
-<li><a class="reference" href="#une-implementation-paste" id="id26" name="id26">Une implementation: Paste</a></li>
-<li><a class="reference" href="#configuration-de-type-ini" id="id27" name="id27">Configuration de type INI</a></li>
-<li><a class="reference" href="#factory-1-2" id="id28" name="id28">Factory (1/2)</a></li>
-<li><a class="reference" href="#factory-2-2" id="id29" name="id29">Factory (2/2)</a></li>
-<li><a class="reference" href="#une-application-simple" id="id30" name="id30">Une application simple</a></li>
-<li><a class="reference" href="#l-ments-de-configuration-1-2" id="id31" name="id31">Éléments de configuration (1/2)</a></li>
-<li><a class="reference" href="#id2" id="id32" name="id32">Éléments de configuration (1/2)</a></li>
-<li><a class="reference" href="#les-frameworks" id="id33" name="id33">Les frameworks</a></li>
-<li><a class="reference" href="#en-savoir-plus" id="id34" name="id34">En savoir plus</a></li>
-<li><a class="reference" href="#ils-nous-soutiennent" id="id35" name="id35">Ils nous soutiennent</a></li>
-<li><a class="reference" href="#questions" id="id36" name="id36">Questions ?</a></li>
+<li><a class="reference" href="#exemple-web-py" id="id4" name="id4">Exemple web.py</a></li>
+<li><a class="reference" href="#pylons" id="id5" name="id5">Pylons</a></li>
+<li><a class="reference" href="#avantages-inconv-nients" id="id6" name="id6">Avantages / Inconvénients</a></li>
+<li><a class="reference" href="#frameworks-haut-niveau" id="id7" name="id7">Frameworks haut niveau</a></li>
+<li><a class="reference" href="#django" id="id8" name="id8">Django</a></li>
+<li><a class="reference" href="#turbogears" id="id9" name="id9">TurboGears</a></li>
+<li><a class="reference" href="#zope" id="id10" name="id10">Zope</a></li>
+<li><a class="reference" href="#grok" id="id11" name="id11">Grok</a></li>
+<li><a class="reference" href="#id1" id="id12" name="id12">Avantages / Inconvénients</a></li>
+<li><a class="reference" href="#probl-matique-d-ploiement" id="id13" name="id13">Problématique déploiement</a></li>
+<li><a class="reference" href="#utilisation-de-virtualenv" id="id14" name="id14">Utilisation de virtualenv</a></li>
+<li><a class="reference" href="#utilisation-de-zc-buildout" id="id15" name="id15">Utilisation de zc.buildout</a></li>
+<li><a class="reference" href="#b-tir-son-application" id="id16" name="id16">Bâtir son application</a></li>
+<li><a class="reference" href="#utilisation-de-distutils" id="id17" name="id17">Utilisation de distutils</a></li>
+<li><a class="reference" href="#les-points-d-entr-es" id="id18" name="id18">Les points d'entrées</a></li>
+<li><a class="reference" href="#wsgi-vous-sauve-la-vie" id="id19" name="id19">WSGI vous sauve la vie</a></li>
+<li><a class="reference" href="#composition" id="id20" name="id20">Composition</a></li>
+<li><a class="reference" href="#en-image" id="id21" name="id21">En image</a></li>
+<li><a class="reference" href="#application" id="id22" name="id22">Application</a></li>
+<li><a class="reference" href="#existant" id="id23" name="id23">Existant</a></li>
+<li><a class="reference" href="#la-variable-environ-1-2" id="id24" name="id24">La variable environ (1/2)</a></li>
+<li><a class="reference" href="#la-variable-environ-2-2" id="id25" name="id25">La variable environ (2/2)</a></li>
+<li><a class="reference" href="#monde-du-milieu-1-2" id="id26" name="id26">Monde du milieu (1/2)</a></li>
+<li><a class="reference" href="#monde-du-milieu-2-2" id="id27" name="id27">Monde du milieu (2/2)</a></li>
+<li><a class="reference" href="#id2" id="id28" name="id28">Existant</a></li>
+<li><a class="reference" href="#une-implementation-paste" id="id29" name="id29">Une implementation: Paste</a></li>
+<li><a class="reference" href="#configuration-de-type-ini" id="id30" name="id30">Configuration de type INI</a></li>
+<li><a class="reference" href="#une-application-simple" id="id31" name="id31">Une application simple</a></li>
+<li><a class="reference" href="#les-frameworks" id="id32" name="id32">Les frameworks</a></li>
+<li><a class="reference" href="#en-savoir-plus" id="id33" name="id33">En savoir plus</a></li>
+<li><a class="reference" href="#remerciements" id="id34" name="id34">Remerciements</a></li>
+<li><a class="reference" href="#questions" id="id35" name="id35">Questions ?</a></li>
 </ul>
 </div>
@@ -404,4 +403,5 @@
 <ul class="simple">
 <li>web.py</li>
+<li>cherrypy</li>
 <li>WebOb</li>
 <li>Paste</li>
@@ -409,6 +409,6 @@
 </ul>
 </div>
-<div class="slide" id="exemple-de-hello-world">
-<h1>Exemple de Hello World</h1>
+<div class="slide" id="exemple-web-py">
+<h1>Exemple web.py</h1>
 <blockquote>
 <pre class="literal-block">
@@ -429,4 +429,18 @@
 </blockquote>
 </div>
+<div class="slide" id="pylons">
+<h1>Pylons</h1>
+<p>La commande:</p>
+<pre class="literal-block">
+$ paster controller hello
+</pre>
+<p>Devient:</p>
+<pre class="literal-block">
+class HelloController(BaseController):
+
+  def index(self):
+    return 'Hello'
+</pre>
+</div>
 <div class="slide" id="avantages-inconv-nients">
 <h1>Avantages / Inconvénients</h1>
@@ -447,5 +461,6 @@
 <div class="slide" id="django">
 <h1>Django</h1>
-<p>Framework complet intégrant une interface d'administration pré-mâchée.</p>
+<p>Framework complet intégrant une interface
+d'administration pré-mâchée.</p>
 </div>
 <div class="slide" id="turbogears">
@@ -464,16 +479,16 @@
 <h1>Avantages / Inconvénients</h1>
 <ul class="simple">
-<li>prise en main lente (voir très lente)</li>
+<li>prise en main lente (voire très lente)</li>
 <li>nombreuses briques existantes</li>
 </ul>
 </div>
-<div class="slide" id="probl-matique-de-d-ploiement">
-<h1>Problématique de déploiement</h1>
+<div class="slide" id="probl-matique-d-ploiement">
+<h1>Problématique déploiement</h1>
 <ul class="simple">
 <li>Environnements de développement</li>
 <li>Bâtir son application</li>
-<li>Utilisation de plusieurs framework.</li>
-<li>Cohabitation entre ces framework.</li>
-<li>Partage de code entre les application.</li>
+<li>Utilisation de plusieurs frameworks.</li>
+<li>Cohabitation entre ces frameworks.</li>
+<li>Partage de code entre les applications.</li>
 </ul>
 </div>
@@ -484,5 +499,5 @@
 $ virtualenv --no-site-packages monprojet
 </pre>
-<p>Nouveaux binaires python</p>
+<p>=&gt; Nouveaux binaires python</p>
 </div>
 <div class="slide" id="utilisation-de-zc-buildout">
@@ -501,4 +516,5 @@
   mon.app
 </pre>
+<p>=&gt; Modification du PYTHON_PATH</p>
 </div>
 <div class="slide" id="b-tir-son-application">
@@ -518,6 +534,21 @@
 <p>Release:</p>
 <pre class="literal-block">
-$ python setup.py sdist bdist_egg register upload
-</pre>
+$ python setup.py sdist bdist_egg
+                  register upload
+</pre>
+</div>
+<div class="slide" id="les-points-d-entr-es">
+<h1>Les points d'entrées</h1>
+<blockquote>
+<pre class="literal-block">
+entry_points = &quot;&quot;&quot;
+[console_scripts]
+buildout = zc.buildout.buildout:main
+
+[super_points]
+...
+&quot;&quot;&quot;
+</pre>
+</blockquote>
 </div>
 <div class="slide" id="wsgi-vous-sauve-la-vie">
@@ -544,13 +575,4 @@
 </div>
 </div>
-<div class="slide" id="serveur">
-<h1>Serveur</h1>
-<p>Il est chargé de desservir les pages web.</p>
-<ul class="simple">
-<li>PasteDeploy</li>
-<li>mod_python</li>
-<li>Flup (fastcgi)</li>
-</ul>
-</div>
 <div class="slide" id="application">
 <h1>Application</h1>
@@ -559,7 +581,17 @@
 def application(environ, start_response):
     start_response('200 OK',
-                   [('Content-Type', 'text/html')])
+            [('Content-Type', 'text/html')])
     return ['Hello']
 </pre>
+</div>
+<div class="slide" id="existant">
+<h1>Existant</h1>
+<ul class="simple">
+<li>paste</li>
+<li>Pylons</li>
+<li>Zope</li>
+<li>Django</li>
+<li>...</li>
+</ul>
 </div>
 <div class="slide" id="la-variable-environ-1-2">
@@ -569,5 +601,5 @@
 <li>Contient l'environnement pour une requête</li>
 <li>Valeurs d'un environnement HTTP classique (PATH_INFO, HTTP_HOST, etc.)</li>
-<li>Valeurs spécifique à la norme (wsgi.*)</li>
+<li>Valeurs spécifiques à la norme (wsgi.*)</li>
 </ul>
 </div>
@@ -575,10 +607,7 @@
 <h1>La variable environ (2/2)</h1>
 <ul class="simple">
-<li>wsgi.version</li>
 <li>wsgi.url_scheme http / https</li>
 <li>wsgi.input Flux d'entrée en lecture contenant la requête (stdin)</li>
 <li>wsgi.errors Flux de sortie permettant de tracer les erreurs. (stderr)</li>
-<li>wsg.multithread Vrai / Faux</li>
-<li>wsgi.multiprocess Vrai / Faux</li>
 <li>wsgi.run_once Vrai si l'application n'est évaluée qu'une fois dans la vie
 du processus. (CGI / Tests)</li>
@@ -587,5 +616,5 @@
 <div class="slide" id="monde-du-milieu-1-2">
 <h1>Monde du milieu (1/2)</h1>
-<p>Interagis à la fois avec l'application et avec le serveur.</p>
+<p>Interagit à la fois avec l'application et avec le serveur.</p>
 <ul class="simple">
 <li>modifie le comportement d'une application</li>
@@ -613,46 +642,27 @@
 </pre>
 </div>
+<div class="slide" id="id2">
+<h1>Existant</h1>
+<ul class="simple">
+<li>Authkit</li>
+<li>Beacker</li>
+<li>iw.thumbs</li>
+<li>...</li>
+</ul>
+</div>
 <div class="slide" id="une-implementation-paste">
 <h1>Une implementation: Paste</h1>
-<blockquote>
-<p>Ensemble de librairie implementant la norme</p>
-<ul class="simple">
-<li>Serveurs</li>
-<li>Squelette d'application</li>
-<li>Composants du milieu réutilisable</li>
-</ul>
-</blockquote>
+<ul class="simple">
+<li>Ensemble de librairies
+implémentant la norme</li>
+</ul>
 </div>
 <div class="slide" id="configuration-de-type-ini">
 <h1>Configuration de type INI</h1>
-<blockquote>
-<ul class="simple">
-<li>Configuration organisée en section</li>
-<li>Enchaînement de sections: serveur -&gt; millieu(s) -&gt; application(s)</li>
-<li>Configurable par un administrateur sans notion de python ni de developement.</li>
-</ul>
-</blockquote>
-</div>
-<div class="slide" id="factory-1-2">
-<h1>Factory (1/2)</h1>
-<blockquote>
-<ul class="simple">
-<li>Utilisation de points d'entrées pointant vers des factory</li>
-<li>Le factory renvois l'application après une éventuelle configuration</li>
-</ul>
-</blockquote>
-</div>
-<div class="slide" id="factory-2-2">
-<h1>Factory (2/2)</h1>
-<p>Factory avec configuration:</p>
-<pre class="literal-block">
-def mon_application(global_config,
-                    **local_config):
-    # on utilise le factory
-    #pour configurer la notification
-    app = ErrorHandler(application,
-                       local_config['email'])
-    return app
-</pre>
+<ul class="simple">
+<li>Configuration organisée en sections</li>
+<li>Configurable par un administrateur
+sans notion de python ni de developement.</li>
+</ul>
 </div>
 <div class="slide" id="une-application-simple">
@@ -673,41 +683,4 @@
 paster serve deploy.ini
 </pre>
-</div>
-<div class="slide" id="l-ments-de-configuration-1-2">
-<h1>Éléments de configuration (1/2)</h1>
-<p>app: une application:</p>
-<pre class="literal-block">
-[app:mon_application]
-use = egg:mon.package#ma_super_application
-</pre>
-<p>filter: monde du milieu:</p>
-<pre class="literal-block">
-[filter:error_handler]
-use = egg:mon.package#error_handler
-</pre>
-<p>pipeline: permet un enchaînement monde du milieu / application:</p>
-<pre class="literal-block">
-[pipeline:main]
-pipeline = error_handler mon_application
-</pre>
-</div>
-<div class="slide" id="id2">
-<h1>Éléments de configuration (1/2)</h1>
-<p>composite: permet de combiner des applications:</p>
-<pre class="literal-block">
-[composite:main]
-use = Paste#urlmap
-/app1 = mon_application
-/app2 = mon_application2
-</pre>
-<p>server: permet un choix de serveur:</p>
-<pre class="literal-block">
-[server:main]
-use = PasteScript#cherrypy
-host = 127.0.0.1
-port = 5000
-</pre>
-<p>Paste utilise les sections :main comme point d'entrée puis construit
-l'application</p>
 </div>
 <div class="slide" id="les-frameworks">
@@ -726,14 +699,16 @@
 <h1>En savoir plus</h1>
 <ul class="simple">
-<li>pipy - <a class="reference" href="http://pypi.python.org">http://pypi.python.org</a></li>
+<li>pypi - <a class="reference" href="http://pypi.python.org">http://pypi.python.org</a></li>
 <li>PEP333 - <a class="reference" href="http://www.python.org/dev/peps/pep-0333/">http://www.python.org/dev/peps/pep-0333/</a></li>
 <li>wsgi.org - <a class="reference" href="http://wsgi.org/wsgi">http://wsgi.org/wsgi</a></li>
 </ul>
 </div>
-<div class="slide" id="ils-nous-soutiennent">
-<h1>Ils nous soutiennent</h1>
-<p>Logilab - <a class="reference" href="http://logilab.com">http://logilab.com</a></p>
-<p>Nerim - <a class="reference" href="http://www.nerim.fr">http://www.nerim.fr</a></p>
-<p>Ingeniweb - <a class="reference" href="http://www.ingeniweb.com">http://www.ingeniweb.com</a></p>
+<div class="slide" id="remerciements">
+<h1>Remerciements</h1>
+<ul class="simple">
+<li>Logilab - <a class="reference" href="http://logilab.com">http://logilab.com</a></li>
+<li>Nerim - <a class="reference" href="http://www.nerim.fr">http://www.nerim.fr</a></li>
+<li>Ingeniweb - <a class="reference" href="http://www.ingeniweb.com">http://www.ingeniweb.com</a></li>
+</ul>
 </div>
 <div class="slide" id="questions">
