Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 23KB

5 jaren geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. <!doctype html>
  2. <html lang=fr>
  3. <head>
  4. <!-- Always define the charset before the title -->
  5. <meta charset=utf-8>
  6. <title>★ Pourquoi Python et Django — Biologeek — David Larlet</title>
  7. <!-- Define a viewport to mobile devices to use - telling the browser to assume that the page is as wide as the device (width=device-width) and setting the initial page zoom level to be 1 (initial-scale=1.0) -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  9. <!-- Fake favicon, to avoid extra request to the server -->
  10. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  11. <link type="application/atom+xml" rel="alternate" title="Feed" href="/david/log/" />
  12. <link rel="manifest" href="/manifest.json">
  13. <link rel="stylesheet" href="/static/david/css/larlet-david-_J6Rv.css" data-instant-track />
  14. <noscript>
  15. <style type="text/css">
  16. /* Otherwise fonts are loaded by JS for faster initial rendering. See scripts at the bottom. */
  17. body {
  18. font-family: 'EquityTextB', serif;
  19. }
  20. h1, h2, h3, h4, h5, h6, time, nav a, nav a:link, nav a:visited {
  21. font-family: 'EquityCapsB', sans-serif;
  22. font-variant: normal;
  23. }
  24. </style>
  25. </noscript>
  26. <!-- Canonical URL for SEO purposes -->
  27. <link rel="canonical" href="https://larlet.fr/david/biologeek/archives/20091211-pourquoi-python-et-django">
  28. </head>
  29. <body>
  30. <div>
  31. <header>
  32. <nav>
  33. <p>
  34. <small>
  35. Je suis <a href="/david/" title="Profil public">David Larlet</a>, <a href="/david/pro/" title="Activité professionnelle">artisan</a> du web qui vous <a href="/david/pro/accompagnement/" title="Activité d’accompagnement">accompagne</a><span class="more-infos"> dans l’acquisition de savoirs pour concevoir des <a href="/david/pro/produits-essentiels/" title="Qu’est-ce qu’un produit essentiel ?">produits essentiels</a></span>. <span class="more-more-infos">Discutons ensemble d’une <a href="/david/pro/devis/" title="En savoir plus">non-demande de devis</a>.</span> Je partage ici mes <a href="/david/blog/" title="Expériences bienveillantes">réflexions</a> et <a href="/david/correspondances/2017/" title="Lettres hebdomadaires">correspondances</a>.
  36. </small>
  37. </p>
  38. </nav>
  39. </header>
  40. <section>
  41. <h1 property="schema:name">★ Pourquoi Python et Django</h1>
  42. <article typeof="schema:BlogPosting">
  43. <div property="schema:articleBody">
  44. <img src="/static/david/biologeek/images/logos/scrumpy_pony.png" alt="vignette" style="float:left; margin: 0.5em 1em;" property="schema:thumbnailUrl" />
  45. <p>Retour sur l'<a href="https://larlet.fr/david/biologeek/archives/20091014-scrum-python-et-django-montpellier/">événement Scrumpy</a> auquel j'ai participé le mois dernier. J'ai déjà eu l'occasion de m'exprimer ici sur <a href="https://larlet.fr/david/biologeek/archives/20060505-pourquoi-programmer-en-python/">Pourquoi Python</a> et <a href="https://larlet.fr/david/biologeek/archives/20080521-conferences-django-pour-pycon-fr/">Pourquoi Django</a> mais le contexte était assez différent sur cet intervention car je devais commencer à convaincre des bienfaits de Python. Or convaincre sur un langage ou un framework est relativement stupide.</p>
  46. <p>On utilise un outil pour son usage, on peut faire des trucs super chiants aussi avec Python ou Django. Partant de là, comment parler des usages possibles, facilités par ces outils ? Ou reformulé un peu différemment, <strong>qu'est-ce qui me motive pour utiliser ces outils dans mon quotidien ?</strong></p>
  47. <p><em>Une lecture dont vous êtes le héros : soit vous voulez <a href="http://vimeo.com/7702575">visionner l'intervention dans son intégralité</a> (25 minutes) et je vous conseille de ne pas lire la suite avant (mais de sauter à la fin), soit vous continuez la lecture et vous pourrez vous rattrapper plus tard.</em></p>
  48. <p>J'ai choisi d'explorer 2 axes un peu inhabituels : <strong>les vacances et le fun !</strong></p>
  49. <h2>Vacances et productivité</h2>
  50. <p>
  51. <img
  52. src="/static/david/biologeek/images/scrumpy/vacances_productivite.jpeg"
  53. alt="Vacances et productivité"
  54. style="margin: 0pt auto; display: block;"/>
  55. </p>
  56. <p>Si on veut pouvoir partir en vacances confortablement, il va en fait falloir être plus productif, et ça la productivité ça parle à tout le monde et ça fait pro :-).</p>
  57. <h3>Apprentissage</h3>
  58. <p>
  59. <img
  60. src="/static/david/biologeek/images/scrumpy/apprentissage.jpeg"
  61. alt="Apprentissage"
  62. style="margin: 0pt auto; display: block;"/>
  63. </p>
  64. <p>L'apprentissage de Python est l'un des plus rapides qui soit, on peut l'enseigner aux enfants, aux élèves, aux développeurs, il suffit de quelques heures pour en maîtriser les bases. Avec quelques bases, on peut hacker son premier programme en quelques minutes. Vraiment.</p>
  65. <p>Rapidité d'apprentissage signifie aussi facilité à intégrer de nouvelles personnes dans une équipe ou à transférer des compétences sur un projet (ce qui est plutôt utile pour partir en vacances tranquille).</p>
  66. <h3>Agilité</h3>
  67. <p>
  68. <img
  69. src="/static/david/biologeek/images/scrumpy/agilite.jpeg"
  70. alt="Agilité"
  71. style="margin: 0pt auto; display: block;"/>
  72. </p>
  73. <p>Agilité : vaste programme car on en arrive à mettre tout et n'importe quoi derrière ce terme. En quoi Python vous fait gagner en agilité ? Il y a bien sûr l'usage des tests dont je parle ensuite qui rendent les refactorisations moins douloureuses, évitant les régressions inévitables autrement. Mais c'est surtout à l'usage que l'on se rend compte à quel point le langage est flexible et puissant.</p>
  74. <h3>Réutilisation</h3>
  75. <p>
  76. <img
  77. src="/static/david/biologeek/images/scrumpy/reutilisation.jpeg"
  78. alt="Réutilisation"
  79. style="margin: 0pt auto; display: block;"/>
  80. </p>
  81. <p>La philosophie de Python et d'être <em>batteries included</em>, c'est à dire de proposer une bibliothèque standard complète permettant d'effectuer les tâches courantes avec le langage de base sans avoir à installer des bibliothèques tierces. Ceci favorise le code portable et réutilisable entre plusieurs projets.</p>
  82. <h2>Fun et qualité</h2>
  83. <p>
  84. <img
  85. src="/static/david/biologeek/images/scrumpy/fun_qualite.jpeg"
  86. alt="Fun et qualité"
  87. style="margin: 0pt auto; display: block;"/>
  88. </p>
  89. <p>La relation entre le fun et la qualité ? Une équipe qui prend du plaisir à développer va introduire de la qualité dans son produit.</p>
  90. <h3>Conventions</h3>
  91. <p>
  92. <img
  93. src="/static/david/biologeek/images/scrumpy/conventions.jpeg"
  94. alt="Conventions"
  95. style="margin: 0pt auto; display: block;"/>
  96. </p>
  97. <p>Python repose sur des conventions de codage fortes qui favorisent la compréhension du code par un autre développeur. Ça paraît anodin énnoncé ainsi mais c'est pourtant capital pour la réutilisation et la maintenabilité du code. Lorsque vous prennez un code en main, bibliothèque externe ou code de votre collègue, vous n'allez pas être perdu grâce à une normalisation familière. C'est un gain de temps considérable à l'usage.</p>
  98. <h3>Tests</h3>
  99. <p>
  100. <img
  101. src="/static/david/biologeek/images/scrumpy/tests.jpeg"
  102. alt="Tests"
  103. style="margin: 0pt auto; display: block;"/>
  104. </p>
  105. <p>Python encourage l'usage des tests qui sont indispensables à la pérennité d'un code. Je ne vais pas me répéter sur ce point, c'est <em>juste</em> la représentation du capital de votre application, ce qui fait finalement sa valeur à long terme.</p>
  106. <h3>Élégance</h3>
  107. <p>
  108. <img
  109. src="/static/david/biologeek/images/scrumpy/elegance.jpeg"
  110. alt="Élégance"
  111. style="margin: 0pt auto; display: block;"/>
  112. </p>
  113. <p>Ici aussi, je vous renvoie sur le billet l'<a href="https://larlet.fr/david/biologeek/archives/20080613-artiste-qui-sommeille-en-chaque-geek/">Artiste qui sommeille en chaque geek</a>, la part d'élégance que vous pouvez trouver dans votre code dépend de vous, de votre sensibilité et de la vision que vous avez de vos créations.</p>
  114. <p><strong>En conclusion, grâce à une productivité accrue et à la qualité de son code, on gagne en séreinité et en confiance.</strong></p>
  115. <h2>Django</h2>
  116. <p>Je ne vais pas réexpliquer <a href="https://larlet.fr/david/biologeek/archives/20060907-choisir-un-framework-web/">la boîte à outils qu'est un framework web</a>, vous pouvez aussi consulter une ancienne <a href="https://larlet.fr/david/biologeek/archives/20080521-conferences-django-pour-pycon-fr/">présentation sur Django si vous souhaitez aller plus loin</a>.</p>
  117. <h3>Applications réutilisables</h3>
  118. <p>
  119. <img
  120. src="/static/david/biologeek/images/scrumpy/applications_reutilisables.jpeg"
  121. alt="Réutilisation"
  122. style="margin: 0pt auto; display: block;"/>
  123. </p>
  124. <p>C'est aujourd'hui LE point fort de Django : un écosystème d'applications développées par la communauté de très bonne facture. Vous cherchez une application pour faire de l'OpenID, gérer des droits finement, pousser vos média sur S3, etc etc c'est possible et facilement intégrable à votre projet.</p>
  125. <h3>Cohérence</h3>
  126. <p>
  127. <img
  128. src="/static/david/biologeek/images/scrumpy/coherence.jpeg"
  129. alt="Cohérence"
  130. style="margin: 0pt auto; display: block;"/>
  131. </p>
  132. <p>Le framework ayant été pensé dans sa globalité, on retrouve une cohérence et une qualité constante sur les différents points du framework. Et l'une des grandes forces de Django c'est la cohérence de sa documentation et son excellente qualité. Allez <a href="http://docs.djangoproject.com">faire un tour dessus</a>, ce n'est pas une légende :-).</p>
  133. <h3>Rapidité</h3>
  134. <p>
  135. <img
  136. src="/static/david/biologeek/images/scrumpy/rapidite.jpeg"
  137. alt="Rapidité"
  138. style="margin: 0pt auto; display: block;"/>
  139. </p>
  140. <p>Enfin un dernier argument en faveur de Django, c'est la rapidité de développement rendue possible grâce aux nombreux outils mis à disposition par le framework permettant d'éviter les tâches fastidieuses et répétitives.
  141. Vu la vitesse à laquelle les sites évoluent, c'est un point essentiel à prendre en compte au lancement d'un projet.</p>
  142. <h2>Démonstration et code</h2>
  143. <p>Suite à la théorie, j'ai réalisé une <a href="http://vimeo.com/7650588">démonstration live</a> de ce que l'on pouvait avoir en pratique qui a également été filmée. Et je viens de <a href="http://code.welldev.org/scrumpy/">rendre le code accessible</a> pour que vous puissiez continuer/hacker/etc, c'est un twitter-like qui reprend pas mal des concepts Django. J'ai ajouté un peu de code pour que vous puissiez aller plus loin, pour repartir de la présentation il suffit de prendre la révision qui va bien. N'hésitez pas à poser des questions ici au besoin.</p>
  144. <h2>Formation</h2>
  145. <p>Suite à cette intervention était prévue <a href="http://scrumpy.particul.es/scrum-python-django-montpellier/formation-django">une formation</a> qui malheureusement a été reportée faute de participants. <strong>C'est vraiment dommage car j'étais bien motivé et j'espère qu'il y aura davantage de curieux lors de la prochaine session</strong>. Si vous êtes intéressé, n'hésitez pas à me contacter ou à contacter <a href="http://www.insei.org">Stéphane</a>, en plus le cadre est vraiment unique !</p>
  146. <p>En conclusion, j'ai eu des retours assez positifs et j'espère avoir convaincu ou au moins donné envie à certaines personnes présentes d'essayer de nouveaux horizons :-). Si l'agilité vous intéresse (et ça devrait), je vous encourage également à aller consulter les <a href="http://vimeo.com/particules/videos">vidéos de Claude Aubry</a>.</p>
  147. </div>
  148. </article>
  149. <footer>
  150. <h6 property="schema:datePublished">— 11/12/2009</h6>
  151. </footer>
  152. </section>
  153. <section>
  154. <div>
  155. <h3>Articles peut-être en rapport</h3>
  156. <ul>
  157. <li><a href="/david/biologeek/archives/20101206-strategie-de-chiffrement-des-donnees-et-emails/" title="Accès à Stratégie de chiffrement des données et emails">Stratégie de chiffrement des données et emails</a></li>
  158. <li><a href="/david/biologeek/archives/20101203-un-projet-python-de-lidee-la-publication/" title="Accès à Un projet Python : de l&#39;idée à la publication">Un projet Python : de l&#39;idée à la publication</a></li>
  159. <li><a href="/david/biologeek/archives/20101130-de-lopendata-au-linkeddata-exemple-de-nosdonneesfr/" title="Accès à ★ De l&#39;OpenData au LinkedData : exemple de nosdonnees.fr">★ De l&#39;OpenData au LinkedData : exemple de nosdonnees.fr</a></li>
  160. </ul>
  161. </div>
  162. </section>
  163. <section>
  164. <div id="comments">
  165. <h3>Commentaires</h3>
  166. <div class="comment" typeof="schema:UserComments">
  167. <p class="comment-meta">
  168. <span class="comment-author" property="schema:creator">4strO</span> le <span class="comment-date" property="schema:commentTime">11/12/2009</span> :
  169. </p>
  170. <div class="comment-content" property="schema:commentText">
  171. <p>As-tu testé symfony ?<br />Si oui django ou symfony ? et pourquoi ?</p>
  172. </div>
  173. </div>
  174. <div class="comment" typeof="schema:UserComments">
  175. <p class="comment-meta">
  176. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">11/12/2009</span> :
  177. </p>
  178. <div class="comment-content" property="schema:commentText">
  179. <p>@4strO : oui, et tout dépend du contexte.</p>
  180. </div>
  181. </div>
  182. <div class="comment" typeof="schema:UserComments">
  183. <p class="comment-meta">
  184. <span class="comment-author" property="schema:creator">Laurent</span> le <span class="comment-date" property="schema:commentTime">11/12/2009</span> :
  185. </p>
  186. <div class="comment-content" property="schema:commentText">
  187. <p>Je vais encore passer ma journée à regarder des vidéos...</p>
  188. <p>Un des aspects qui m&#39;avaient finalement convaincus de passer à python+django, c&#39;est la facilité de compréhension du code écrit par d&#39;autres, notamment grâce au mvc et à l&#39;indentation python.<br /> </p>
  189. </div>
  190. </div>
  191. <div class="comment" typeof="schema:UserComments">
  192. <p class="comment-meta">
  193. <span class="comment-author" property="schema:creator">Kemar</span> le <span class="comment-date" property="schema:commentTime">11/12/2009</span> :
  194. </p>
  195. <div class="comment-content" property="schema:commentText">
  196. <p>En ce qui me concerne tu m&#39;as convaincu depuis bien longtemps :)<br />Par contre pour la conférence (payante) ça serait bien qu&#39;ils n&#39;envoient pas des emails non sollicités :p</p>
  197. </div>
  198. </div>
  199. <div class="comment" typeof="schema:UserComments">
  200. <p class="comment-meta">
  201. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">11/12/2009</span> :
  202. </p>
  203. <div class="comment-content" property="schema:commentText">
  204. <p>@Kemar : oui c&#39;est noté pour LE mail non sollicité qui était pour la formation payante, la conférence était gratuite.</p>
  205. </div>
  206. </div>
  207. <div class="comment" typeof="schema:UserComments">
  208. <p class="comment-meta">
  209. <span class="comment-author" property="schema:creator">Benoit</span> le <span class="comment-date" property="schema:commentTime">11/12/2009</span> :
  210. </p>
  211. <div class="comment-content" property="schema:commentText">
  212. <p>Merci pour la vidéo de la démo live, c&#39;est super sympa ! ça permet vraiment d&#39;appréhender comment on développe en Django.</p>
  213. </div>
  214. </div>
  215. <div class="comment" typeof="schema:UserComments">
  216. <p class="comment-meta">
  217. <span class="comment-author" property="schema:creator">Nicolas Steinmetz</span> le <span class="comment-date" property="schema:commentTime">11/12/2009</span> :
  218. </p>
  219. <div class="comment-content" property="schema:commentText">
  220. <p>J&#39;arrive à la même conclusion en sortant de ma formation perl qui est le standard de fait pour le langage de scripting système.</p>
  221. <p>Quand bien même perl a qqs aspects sympa (j&#39;ai plutôt été agréablement surpris en fait), la lisibilité du code python (bcp plus explicite que perl) en fait pour moi un meilleur outil.</p>
  222. <p>Mais bon, je ne vais pas écrire mon prochain billet ici ;-)</p>
  223. <p>@4strO : pour ma part, je trouve symfony trop verbeux et moins immédiat que django ; cf <a href="http://nicolas.steinmetz.fr/journal/post/2009/08/03/Mon-comparatif-Django-vs-Symfony">http://nicolas.steinmetz.fr/journal/post/2009/08/03/Mon-comparatif-Django-vs-Symfony</a></p>
  224. </div>
  225. </div>
  226. <div class="comment" typeof="schema:UserComments">
  227. <p class="comment-meta">
  228. <span class="comment-author" property="schema:creator">4strO</span> le <span class="comment-date" property="schema:commentTime">12/12/2009</span> :
  229. </p>
  230. <div class="comment-content" property="schema:commentText">
  231. <p>merci Nico :)</p>
  232. </div>
  233. </div>
  234. <div class="comment" typeof="schema:UserComments">
  235. <p class="comment-meta">
  236. <span class="comment-author" property="schema:creator">Arthur LEDARD</span> le <span class="comment-date" property="schema:commentTime">18/12/2009</span> :
  237. </p>
  238. <div class="comment-content" property="schema:commentText">
  239. <p>Bonjour David,</p>
  240. <p>As tu testé/joué avec WSGI? <br />Qu&#39;en penses tu?</p>
  241. </div>
  242. </div>
  243. <div class="comment" typeof="schema:UserComments">
  244. <p class="comment-meta">
  245. <span class="comment-author" property="schema:creator">cyber</span> le <span class="comment-date" property="schema:commentTime">01/01/2010</span> :
  246. </p>
  247. <div class="comment-content" property="schema:commentText">
  248. <p>&quot;un écosystème d&#39;applications développées par la communauté de très bonne facture. Vous cherchez une application pour faire de l&#39;OpenID, gérer des droits finement&quot;</p>
  249. <p>Est ce que tu peux me dire le nom de l&#39;application de gestion de droit dont tu parles ? <br />Merci</p>
  250. </div>
  251. </div>
  252. <div class="comment" typeof="schema:UserComments">
  253. <p class="comment-meta">
  254. <span class="comment-author" property="schema:creator">Killy Ek&#39;Fael</span> le <span class="comment-date" property="schema:commentTime">01/01/2010</span> :
  255. </p>
  256. <div class="comment-content" property="schema:commentText">
  257. <p>Bonjour.</p>
  258. <p>Je cherche à faire un site web personnel sans prétention. Je suis intéressé par l&#39;utilisation d&#39;un framework web python et par l&#39;utilisation d&#39;un ORM python via le framework tel que Zope Object Database.</p>
  259. <p>En faisait beaucoup de recherche je crois avoir compris que zope 3(c&#39;est zope qui a réussit à me faire succomber à python à cause de la vidéo des rmll avec EPR5), grok (zope 3 avec une surcouche rendant zope 3 plus facile si j&#39;ai bien compris), et django (j&#39;ai lu la page de documentation en anglais pour utiliser les API native de django à la place de SQL pour gérer la persistance) semblent satisfaire mon désir.</p>
  260. <p>Vu que ta présentation ne cherchais pas à faire de comparaison et que j&#39;ai essayé de dire ce qui m&#39;intéresse, pourrais t on me dire si django est un bon choix ?</p>
  261. <p>Merci.</p>
  262. </div>
  263. </div>
  264. <div class="comment" typeof="schema:UserComments">
  265. <p class="comment-meta">
  266. <span class="comment-author" property="schema:creator">glibersat</span> le <span class="comment-date" property="schema:commentTime">05/01/2010</span> :
  267. </p>
  268. <div class="comment-content" property="schema:commentText">
  269. <p>@cyber: je ne sais pas si c&#39;est celui-ci dont il voulait parler, mais django-authority ( <a href="http://packages.python.org/django-authority/">http://packages.python.org/django-authority/</a> ) fonctionne très bien !</p>
  270. </div>
  271. </div>
  272. <div class="comment" typeof="schema:UserComments">
  273. <p class="comment-meta">
  274. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">05/01/2010</span> :
  275. </p>
  276. <div class="comment-content" property="schema:commentText">
  277. <p>@Arthur LEDARD : Oui WSGI est une très bonne solution, l&#39;avenir était un peu incertain à un moment mais ça a l&#39;air d&#39;être reparti. On verra bien :-)</p>
  278. <p>@cyber : la réponse de glibersat est celle à laquelle je pensais.</p>
  279. <p>@Killy Ek&#39;Fael : tout dépend du &quot;sans prétention&quot; ;-)</p>
  280. <p>Repartir de la base (style web.py) peut-être un très bon exercice pour comprendre les rouages d&#39;un framework web et permet de faire un site très facilement. En tout cas je pense pas qu&#39;il soit nécessaire de sortir une grosse artillerie comme Zope pour arriver à ça (attention, je ne dis pas que Zope n&#39;est pas utile dans certains cas...).</p>
  281. </div>
  282. </div>
  283. <div class="comment" typeof="schema:UserComments">
  284. <p class="comment-meta">
  285. <span class="comment-author" property="schema:creator">Killy Ek&#39;Fael</span> le <span class="comment-date" property="schema:commentTime">05/01/2010</span> :
  286. </p>
  287. <div class="comment-content" property="schema:commentText">
  288. <p>@biologeek<br />Qu&#39;est ce que j&#39;entends par sans prétention...<br />Il n&#39;y a pas de contrainte autre que la liberté de pouvoir coder ce que j&#39;aurais envie de coder pour le plaisir, m&#39;entrainer, apprendre, essayer, m&#39;amuser...</p>
  289. <p>Sinon ce qui m&#39;attire dans Zope c&#39;est l&#39;absence de mapping objet-relationnel (d&#39;ailleurs j&#39;ai des cours où je fais ça) et de pouvoir utiliser la persistance directement en objet avec le support des caractéristiques ACID d&#39;une BDD.<br />Je ne cherche pas vraiment à vouloir rentrer dans les rouages d&#39;un framework web.<br /></p>
  290. </div>
  291. </div>
  292. <div class="comment" typeof="schema:UserComments">
  293. <p class="comment-meta">
  294. <span class="comment-author" property="schema:creator">Akatsuki</span> le <span class="comment-date" property="schema:commentTime">20/04/2011</span> :
  295. </p>
  296. <div class="comment-content" property="schema:commentText">
  297. <p>Bonjour,<br />Ca fait bien plus d&#39;un an mais je tente quand même...<br />Que pensez-vous de CodeIgniter ?<br />Je me permets de posez cette question dans la mesure ou je cherche à évoluer (parceque pour l&#39;instant en developpement WEB je fait du PHP/MySQL avec notepad++) et que je cherche donc une alternative élégante...<br />Aussi que pensez de RoR ?<br />Bien cordialement..</p>
  298. </div>
  299. </div>
  300. </div>
  301. </section>
  302. <footer>
  303. <nav>
  304. <p>
  305. <small>
  306. Je réponds quasiment toujours aux <a href="m&#x61;ilto:d&#x61;vid%40l&#x61;rlet&#46;fr" title="Envoyer un email">emails</a> (<a href="/david/signature/" title="Ma signature actuelle avec possibilité de chiffrement">signés</a>) et vous pouvez me rencontrer à Montréal. <span class="more-infos">N’hésitez pas à <a href="/david/log/" title="Être tenu informé des mises à jour">vous abonner</a> pour être tenu informé des publications récentes.</span>
  307. </small>
  308. </p>
  309. </nav>
  310. </footer>
  311. </div>
  312. <script src="/static/david/js/larlet-david-3ee43f.js" data-no-instant></script>
  313. <script data-no-instant>InstantClick.init()</script>
  314. </body>
  315. </html>