<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://www.aquatz.com/xml/rss.xsl" type="text/xsl" media="screen"?>
<?xml-stylesheet href="http://www.aquatz.com/xml/rss.css" type="text/css" media="screen"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"  xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:georss="http://www.georss.org/georss" xmlns:photo="http://www.pheed.com/pheed/">
 <channel>
  <title>Francescu e Dume</title>
  <description><![CDATA[Francescu e Dume]]></description>
  <link>http://www.aquatz.com/</link>
  <language>fr</language>
  <dc:date>2010-09-10T21:43:22+02:00</dc:date>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="alternate" href="http://www.aquatz.com/xml/atom.xml" type="text/xml" />
  <item>
   <guid isPermaLink="false">tag:www.aquatz.com,2010:rss-995940</guid>
   <title>AjaxLoad, le générateur d'images de loading ajax</title>
   <pubDate>Thu, 24 Jul 2008 09:22:00 +0200</pubDate>
   <dc:language>fr</dc:language>
   <dc:creator>Francescu SANTONI</dc:creator>
   <dc:subject><![CDATA[Astuces]]></dc:subject>
   <description>
   <![CDATA[
        <div style="position:relative; text-align : center; padding-bottom: 1em;">
      <img src="http://www.aquatz.com/photo/995940-1245696.jpg" alt="AjaxLoad, le générateur d'images de loading ajax" title="AjaxLoad, le générateur d'images de loading ajax" />
     </div>
     <div>
      AjaxLoad vous permet de choisir une animation et une couleur et de générer l'image de loading correspondante. Ce service qui parait tout bête vous sera indispensable pour chacun de vos projets<br /><br /><ul>    <li class="list"><a class="link" href="http://www.ajaxload.info/" onclick="window.open(this.href,'_blank');return false;">http://www.ajaxload.info/</a>  </li>    </ul></li>
     </div>
     <br style="clear:both;"/>
   ]]>
   </description>
   <photo:imgsrc>http://www.aquatz.com/photo/imagette-995940-1245696.jpg</photo:imgsrc>
   <link>http://www.aquatz.com/AjaxLoad-le-generateur-d-images-de-loading-ajax_a50.html</link>
  </item>

  <item>
   <guid isPermaLink="false">tag:www.aquatz.com,2010:rss-995927</guid>
   <title>AjaxDaddy une collection de scripts sympatique</title>
   <pubDate>Wed, 23 Jul 2008 08:55:00 +0200</pubDate>
   <dc:language>fr</dc:language>
   <dc:creator>Francescu SANTONI</dc:creator>
   <dc:subject><![CDATA[Astuces]]></dc:subject>
   <description>
   <![CDATA[
        <div style="position:relative; text-align : center; padding-bottom: 1em;">
      <img src="http://www.aquatz.com/photo/995927-1245679.jpg" alt="AjaxDaddy une collection de scripts sympatique" title="AjaxDaddy une collection de scripts sympatique" />
     </div>
     <div>
      AjaxDaddy est une collection de quelques petits scripts sympa dont certains mériteraient un article à eux seuls. Ce site peut être un vrai gain de temps, à condition que vous trouviez le script qui vous convienne.<br /><br /><ul>    <li class="list"><strong><a class="link" href="http://www.ajaxdaddy.com" onclick="window.open(this.href,'_blank');return false;">http://www.ajaxdaddy.com</a>  </strong></li>    </ul></li>    <br /><br /> <em>Trouvé via <a class="link" href="http://www.amzani.com/Ajax-Daddy-un-annuaire-de-scripts-Ajax_a193.html" onclick="window.open(this.href,'_blank');return false;">amzani.com</a>  </em>
     </div>
     <br style="clear:both;"/>
   ]]>
   </description>
   <photo:imgsrc>http://www.aquatz.com/photo/imagette-995927-1245679.jpg</photo:imgsrc>
   <link>http://www.aquatz.com/AjaxDaddy-une-collection-de-scripts-sympatique_a49.html</link>
  </item>

  <item>
   <guid isPermaLink="false">tag:www.aquatz.com,2010:rss-995523</guid>
   <title>Les frameworks MVC (Model View Controller) et les applications web</title>
   <pubDate>Tue, 22 Jul 2008 12:00:00 +0200</pubDate>
   <dc:language>fr</dc:language>
   <dc:creator>Francescu SANTONI</dc:creator>
   <dc:subject><![CDATA[Pour aller plus loin]]></dc:subject>
   <description>
   <![CDATA[
   Cette article explique l'utilité de l'architecture MVC dans les applications web et  vous donne les bases pour faire votre propre Framework adapté à vos besoins...     <div><b>Les grandes lignes de la théorie</b></div>
     <div>
      L'architecture MVC (<a class="link" href="http://en.wikipedia.org/wiki/Architectural_pattern_%28computer_science%29" onclick="window.open(this.href,'_blank');return false;">pattern d'architecture</a>  plus exactement) est un concept qui sépare votre application en trois types de fichiers principaux :<br /><ul>     <li class="list">les <strong>Modèles </strong>qui représentent vos objets logiques (ou métiers) : ils seront manipulés par les Controllers ou les Views, mais ne manipuleront jamais ces derniers</li>    <li class="list">les <strong>Controlleurs </strong>qui s'occupent des opérations entre les models, des modifications, du traitement des données utilisateurs, etc... Ce sont les actions métiers de votre application (à ne pas confondre avec les actions métiers de vos objets!!)</li>    <li class="list">les <strong>Vues </strong>qui se contentent d'afficher les formulaires, les résultats ou tout autre type de page affichée à l'utilisateur</li>    </ul></li>
     </div>
     <br style="clear:both;"/>
     <div style="position:relative; text-align : center; padding-bottom: 1em;">
      <img src="http://www.aquatz.com/photo/995523-1245065.jpg" alt="Les frameworks MVC (Model View Controller) et les applications web" title="Les frameworks MVC (Model View Controller) et les applications web" />
     </div>
     <div>
      
     </div>
     <br style="clear:both;"/>
     <div><b>Ce qu'il en est aujourd'hui</b></div>
     <div style="position:relative; text-align : center; padding-bottom: 1em;">
      <img src="http://www.aquatz.com/photo/995523-1245066.jpg" alt="Les frameworks MVC (Model View Controller) et les applications web" title="Les frameworks MVC (Model View Controller) et les applications web" />
     </div>
     <div>
      
     </div>
     <br style="clear:both;"/>
     <div>
      S'il est vrai qu'à l'origine le concept de l'architecture MVC était assez basique (presque un simple système de rangement), aujourd'hui ce n'est plus le cas. Depuis l'apparition du framework <strong><a class="link"  href="http://www.aquatz.com/A-la-decouverte-de-Ruby-on-Rails_a11.html">Ruby On Rails</a></strong> puis des plus récents <strong>CakePHP</strong> et <strong>Symphony,</strong> la notion de framework MVC a évolué chez la plupart des gens. <br /><br />En effet, que l'on considère que ce soit par un abus de langage ou par une évolution, on attend aujourd'hui d'un framework MVC (pour les applications web) qu'il contienne les éléments suivants :<br /><ul>     <li class="list">L'organisation MVC proprement dite</li>    <li class="list">Un système d'url propres, cohérentes et comprénsibles par l'homme</li>    <li class="list">L'intégration d'un framework javascript pour une ergonomie riche et des effets agréables</li>    <li class="list">Un système de mapping semi-automatique "objets &lt;=&gt; base de données"</li>    <li class="list">La gestion de plusieurs templates pour les vues</li>    <li class="list">Des systèmes permettant l'aide au développement (<em>helpers</em>)</li>    </ul></li>    Cet article n'aura pas pour but de rentrer dans les détails d'une implémentation technique mais de montrer un point de vue des différents concepts existants afin que vous compreniez la puissance mais également la simplicité de tels framework et que vous ayez les connaissances suffisantes pour vous lancer et faire votre propre framework.
     </div>
     <br style="clear:both;"/>
     <div><b>L'organisation MVC</b></div>
     <div>
      Elle dépend fortement de vos besoins, mais est généralement composée comme ci-dessous.<br /><br />L'application marche en termes d'actions effectuables regroupées au sein de différents controllers.<br /><br />Par exemple, une bibliothèque manipulerait les objets (Models) Livre, CD, DVD, Location et Utilisateur.<br /><br />Sémentiquement on pourrait <span style="text-decoration: underline;">par exemple</span> décomposer les actions en deux controllers:<br />Bibliothèque (avec les actions louer, rendre etc...) et Membres (avec nouveau, modifier etc..)<br /><br />Pour les vues, on peut faire une plateforme où chaque action a une vue correspondante ou bien une plateforme où les vues sont réalisées de façon indépendantes et appelées par les actions (par exemple à la fin de celle-ci).<br /><br />La deuxième solution me semble bien plus modulaire dans le sens où deux actions peuvent afficher la même vue et qu'une action pourra afficher (selon les données d'entrée) des vues différentes.
     </div>
     <br style="clear:both;"/>
     <div><b>Des Url bien plus propres</b></div>
     <div>
      Le cas du paragraphe précédant nous donnerait une application dans le genre <em>http://bibli2008.com?controller=membres&amp;action=editer&amp;id=5646</em><br /><br />La plupart des frameworks MVC (mais ce ne sont pas les seuls) intègrent un système de gestion des URL de façon propre du type : <em>http://bibli2008.com/membres/editer/5646</em> voire privilégier des permaLinks pour les utilisateurs <em>http://bibli2008.com/francescu/editer</em>.<br /><br />Grace à Apache, cela est réalisable de deux manières :<br /><ul>     <li class="list">directement dans votre .htaccess avec chaque cas</li>    <li class="list">décomposer les paramètres de l'url dans l'index.php (après avoir pris soin de tout rediriger vers cette page)</li>    </ul></li>    Dans les deux cas il vous faudra gérer en PHP dans votre index.php le routage des requêtes.
     </div>
     <br style="clear:both;"/>
     <div><b>Du Javascript pour des interfaces presque riches</b></div>
     <div>
      Je me contenterai de vous dire qu'il existe une grande diversité de framework Javascript et qu'il n'est pas forcément intéressant (en rapport temps/gain) de faire sa propre librairie. En effet, celles existantes permettent de charger ce dont vous avez besoin, sont de taille assez modeste et sont assez complètes.<br /><br />Se distinguent nottemment les librairies suivantes :<br /><ul>     <li class="list">le couple <strong>Prototype</strong> (Ajax, Dom etc..)/<strong>Scriptaculous</strong>(Effets, éléments graphiques etc..)</li>    <li class="list"><strong>jQuery </strong>qui est assez puissant </li>    <li class="list"><strong>Dojo </strong>qui va très loin</li>    <li class="list"><strong>Ext</strong> qui est assez lourd mais qui peut générer un système d'interface graphique complet</li>    <li class="list">la liste est encore longue (Google Web ToolKit, Yahoo UI, MooScript etc..) et de nombreux comparatifs sont disponibles (vous les trouverez avec une petite recherche google)</li>    </ul></li>
     </div>
     <br style="clear:both;"/>
     <div><b>De vos «Tables SQL» à vos «Classes PHP»</b></div>
     <div>
      Comme le fait Ruby On Rails, les frameworks MVC proposent des outils vous permettant de faire abstraction du système de gestion de base de données (SGBD) et de gérer vos objet comme si vous manipuliez vos enregistrements (le tout optimisé avec un système de cache). <br /><br />Cela se nomme l'<strong>Object-Relational Mapping</strong> (ORM), cela "convertit" les types du monde objet (poo) en ceux du monde relationnel (bdd) et vice versa. Cela fournit également des facilités d'enregistrement, de suppression et de modification.<br /><br />L'implémentation est assez technique mais si vous êtes motivés quelques semaines de travail acharné vous permettront de faire le votre sans grands problèmes impossibles à résoudres (quelques problématiques devront être résolues mais vous y arriverez certainement). Sinon vous trouverez quelques Frameworks ORM sur <a class="link" href="http://fr.wikipedia.org/wiki/Object-relational_mapping" onclick="window.open(this.href,'_blank');return false;">la page Wikipedia (fr)<span>.</span></a> 
     </div>
     <br style="clear:both;"/>
     <div><b>Des petits plus...</b></div>
     <div>
      Il existe également dans les frameworks des petits plus qui vous permettront de gérer facilement les templates (qui certes sont assez simples à mettre en place, mais c'est une étape à ne pas oublier car elle est très importante) ou encore d'avoir des helpers, sortes de "fonctions raccourcis".<br /><br />Par exemple mettre un champs de texte dans une formulaire<br />&lt;?php Form::inputText(array("name" =&gt; "X", "style" =&gt; array("width" =&gt; "30px", "border:none"))); ?&gt;<br />ou transformer une date anglaise en format français <br />&lt;?php Date::EnToFr(date("Y-m-d")); ?&gt;<br /><br />N'hésitez pas à en abuser mais n'hésitez pas non plus à ne les charger qu'en cas de besoin (cf. <a class="link" href="http://fr3.php.net/autoload" onclick="window.open(this.href,'_blank');return false;">la fonction __autoload</a>  )
     </div>
     <br style="clear:both;"/>
     <div><b>Pour conclure</b></div>
     <div style="position:relative; text-align : center; padding-bottom: 1em;">
      <img src="http://www.aquatz.com/photo/995523-1245246.jpg" alt="Les frameworks MVC (Model View Controller) et les applications web" title="Les frameworks MVC (Model View Controller) et les applications web" />
     </div>
     <div>
      La création de votre propre plateforme sera longue mais de nombreux outils sont là pour vous faciliter la tâche. Vous pouvez choisir de partir à zéro ou d'utiliser un framework déjà existant (<a class="link" href="http://www.cakephp.org/" onclick="window.open(this.href,'_blank');return false;">CakePHP </a>  ou <a class="link" href="http://www.symfony-project.org/">Sympony</a>  par exemple) mais vous pouvez également opter pour une solution intermédiaire, qui est de prendre ce qui vous intéresse et de faire ce qui est unique pour votre propre framework, vous aurez alors un framework adapté que vous maîtriseriez sur le bout des doigts.
     </div>
     <br style="clear:both;"/>
   ]]>
   </description>
   <photo:imgsrc>http://www.aquatz.com/photo/imagette-995523-1245246.jpg</photo:imgsrc>
   <link>http://www.aquatz.com/Les-frameworks-MVC-Model-View-Controller-et-les-applications-web_a47.html</link>
  </item>

 </channel>
</rss>
