<?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:54:39+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-1001944</guid>
   <title>Installer un serveur Web sous Debian 4 en 10 minutes</title>
   <pubDate>Thu, 31 Jul 2008 13:13:00 +0200</pubDate>
   <dc:language>fr</dc:language>
   <dc:creator>Dumenicu SIACCI</dc:creator>
   <dc:subject><![CDATA[Pour aller plus loin]]></dc:subject>
   <description>
   <![CDATA[
   Nous allons voir ensemble comment installer un serveur web afin qu'il soit pleinement fonctionnel. Même si au premier abord cette procédure peut apparaître comme effrayante, en réalité il n'en est rien. Un peu d'organisation et de méthodologie fera l'affaire.     <div style="position:relative; float:left; padding-right: 1ex;">
      <img src="http://www.aquatz.com/photo/1001944-1254165.jpg" alt="Installer un serveur Web sous Debian 4 en 10 minutes" title="Installer un serveur Web sous Debian 4 en 10 minutes" />
     </div>
     <div>
      Lorsque vous vous loggez pour la première fois sur votre serveur, seul le système d'exploitation est installé (ici il s'agit de Debian 4.0 Etch). Afin d'en faire un serveur web pleinement fonctionnel, nous avons besoin d'installer certains logiciels. En l'occurrence, nous voulons une architecture "LAMP" (Linux, Apache, MySQL, PHP). Nous allons donc installer tous ces paquets.
     </div>
     <br style="clear:both;"/>
     <div><b>Préparation</b></div>
     <div>
      Avant d'installer les paquets nous allons mettre à jour le système avec ces commandes :<br /><br /><ul>    <li class="list">aptitude update</li>    <li class="list">aptitude upgrade</li>    </ul></li>
     </div>
     <br style="clear:both;"/>
     <div><b>Installation d'Apache, PHP et MySQL</b></div>
     <div>
      Grâce à ces cinq commandes nous allons successivement installer Apache, PHP5, MySQL, le module MySQL pour PHP et enfin l'interface d'aministration de MySQL, PHPMyAdmin.<br /><br /><ul>    <li class="list">aptitude install apache2</li>    <li class="list">aptitude install php5</li>    <li class="list">aptitude install mysql-server</li>    <li class="list">aptitude install php5-mysql</li>    <li class="list">aptitude install phpmyadmin</li>    </ul></li>    <br /> Si vous tapez l'adresse IP de votre serveur dans un navigateur web, vous verrez une page "It Works !" qui vous indique que votre serveur web est bien installé.
     </div>
     <br style="clear:both;"/>
     <div><b>Installation du serveur DNS </b></div>
     <div>
      Il peut être utile de disposer de son propre serveur DNS. C'est pourquoi nous allons installer Bind9.<br /><br /><ul>    <li class="list">aptitude install bind9</li>    </ul></li>
     </div>
     <br style="clear:both;"/>
     <div><b>Installation de Webmin</b></div>
     <div>
      Webmin est une paquet écrit en Perl qui permet de gérer le serveur grâce à une interface Web. Il nécessite une installation préalable de certains paquets. Il faut donc avant son installation exécuter ces cinq commandes.<br /><br /><ul>    <li class="list">aptitude install libnet-ssleay-perl</li>    <li class="list">aptitude install openssl </li>    <li class="list">aptitude install libauthen-pam-perl</li>    <li class="list">aptitude install libio-pty-perl</li>    <li class="list">aptitude install libmd5-perl </li>    </ul></li>    <br />Ensuite il faut récupérer le paquet webmin puis l'installer, grâce à ces deux commandes.<br /><br /><ul>    <li class="list">wget http://downloads.sourceforge.net/webadmin/webmin_1.390_all.deb?modtime=1198262544&amp;big_mirror=1</li>    <li class="list">dpkg -i webmin_1.390_all.deb</li>    </ul></li>    <br /> A partir de maintenant, vous pouvez accéder à l'interface de webmin à l'adresse https://XX.XX.XX.XX:10000/ (sachant que les X représentent l'adresse IP du serveur).
     </div>
     <br style="clear:both;"/>
     <div><b>Pour finir</b></div>
     <div>
      Pour être complètement complet, il faut supprimer&nbsp; la ligne "RedirectMatch ^/$ /apache2-default/" dans le fichier "/etc/apache2/sites-available/default". A partir de là, la racine de votre serveur se situe à "/var/www".
     </div>
     <br style="clear:both;"/>
     <div><b>Conclusion</b></div>
     <div>
      Au final cette procédure est relativement simple. Avec un peu de sens pratique et d'organisation, on obtient rapidement un serveur fonctionnel. A vous !
     </div>
     <br style="clear:both;"/>
   ]]>
   </description>
   <photo:imgsrc>http://www.aquatz.com/photo/imagette-1001944-1254165.jpg</photo:imgsrc>
   <link>http://www.aquatz.com/Installer-un-serveur-Web-sous-Debian-4-en-10-minutes_a54.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>

  <item>
   <guid isPermaLink="false">tag:www.aquatz.com,2010:rss-992270</guid>
   <title>Encodage : convertir un site en UTF8 - PHP/MySQL</title>
   <pubDate>Wed, 29 Aug 2007 15:38:00 +0200</pubDate>
   <dc:language>fr</dc:language>
   <dc:creator>Francescu e Dume</dc:creator>
   <dc:subject><![CDATA[Pour aller plus loin]]></dc:subject>
   <description>
   <![CDATA[
        <div style="position:relative; float:left; padding-right: 1ex;">
      <img src="http://www.aquatz.com/photo/992270-1240213.jpg" alt="Encodage : convertir un site en UTF8 - PHP/MySQL" title="Encodage : convertir un site en UTF8 - PHP/MySQL" />
     </div>
     <div>
      Alors qu'il y a quelques années <a class="link" href="http://www.cl.cam.ac.uk/%7Emgk25/ucs/utf-8-history.txt" onclick="window.open(this.href,'_blank');return false;">l'UTF8 naissait</a>  , réconcilliant le monde entier, on aurait pu penser qu'il aurait immédiatement trouvé sa place. Si aujourd'hui créer un projet en UTF-8 est bien loin d'être systématique, il ne s'agit pas forcément d'un manque de volonté, mais plutôt d'une difficulté de mise en oeuvre, souvent déconcertante. Le problème d'encodage est récurrent, mais je vais essayer dans cet article de vous prouver que la mise en oeuvre de l'UTF-8 dans vos projets peut se faire très rapidement. Voici donc les grandes étapes pour migrer votre application web en UTF8, et pourquoi pas conquérir de lointains marchés !
     </div>
     <br style="clear:both;"/>
     <div>
      <h2>Requêtes HTTP</h2>
<br />
Tout d'abord quand un visiteur arrive sur votre site, son navigateur doit savoir qu'il a affaire à de l'UTF8, alors voici la marche à suivre.
<br />
<ul>
<li>Par ordre de priorité pour le navigateur :</li>
</ul>
<ul>
<li>Fixer le parametre charset dans les requêtes HTTP (<a target="_blank" href="http://www.w3.org/International/O-HTTP-charset.fr.php">cf W3C</a>)</li>
<ul>
<li>dans apache remplacez <a target="_blank" href="http://httpd.apache.org/docs-2.0/mod/core.html#adddefaultcharset">AddDefaultCharset</a> ISO-8859-1 par <code>AddDefaultCharset UTF-8</code>,  (dans httpd.conf sinon rajoutez la ligne dans le .htaccess)</li>

<li>ou/et dans PHP avec <code>header('Content-Type: text/html; charset=utf-8');</code></li>
</ul>
<li>Mettre après le &lt;head&gt; dans votre fichier HTML le code suivant (ce code est connu de tous)</li>
<ul>
<li><strong><code>&lt;meta content="text/html; Charset=UTF-8" http-equiv="Content-Type" /&gt;</code></strong><strong> </strong></li>
</ul>

     </div>
     <br style="clear:both;"/>
     <div>
      <h2>MySQL</h2>
<br />
<ul>
<li>Lisez <a target="_blank" href="http://www.siteduzero.com/tuto-3-6276-1-mysql-comprendre-les-jeux-de-caracteres-et-interclassements.html#ss_part_5">cet article</a> en premier lieu</li>
</ul>
<ul>
<li>Ensuite, il faut premièrement changer les interclassements</li>
<ul>
<li>de la base</li>
<ul>
<li><strong>ALTER DATABASE </strong>nomBase <strong>CHARACTER SET UTF8</strong></li>

</ul>
<li>des tables</li>
<ul>
<li><strong><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> </strong>nomTable<strong> CHARACTER <span class="kw1">SET</span> UTF8</strong></li>
</ul>
<li>des colonnes</li>

<ul>
<li><strong><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> </strong>nomTable<strong> CONVERT <span class="kw1">TO</span> CHARACTER <span class="kw1">SET</span> UTF8</strong></li>
</ul>
</ul>

<ul>
<ul>
<li>ceci changera toutes les colonnes de la table et <strong>convertira </strong>les données. Si vous aviez déjà mis de l&#8217;UTF8 dans une colonne avant d&#8217;en changer l&#8217;encodage il est encore possible de rétablir la cohérence des données :</li>
<ul>
<li><strong><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> </strong>nomTable <span class="kw1"><strong><span class="kw1">CHANGE</span> </strong>nomColonne nomColonne <strong>BLOB;<br />

<span class="kw1">ALTER</span> <span class="kw1">TABLE</span> </strong>nomTable <span class="kw1"><span class="kw1"><strong><span class="kw1">CHANGE</span> </strong>nomColonne nomColonne<strong> TEXT CHARACTER <span class="kw1">SET</span> UTF8;</strong></span></span></span></li>
</ul>
</ul>
</ul>

<li>Puis il faut prévenir MySQL que vos interractions se feront en UTF8 en envoyant <strong>à chaque connexion :</strong></li>
<li><strong><span class="kw1">SET</span> NAMES UTF8</strong></li>
</ul>
     </div>
     <br style="clear:both;"/>
     <div style="position:relative; text-align : center; padding-bottom: 1em;">
      <img src="http://www.aquatz.com/photo/992270-1431878.jpg" alt="Encodage : convertir un site en UTF8 - PHP/MySQL" title="Encodage : convertir un site en UTF8 - PHP/MySQL" />
     </div>
     <div>
      <h2>Editez en UTF8</h2>
<br />

Pour cela il faut configurer votre éditeur pour que vos fichiers soient en UTF8 (c&#8217;est nécessaire uniquement dans le cas de fichiers avec données sensibles - cad avec accents ou autres caractères non ASCII). 
<br /><br />
Veillez à placer l&#8217;encodage en UTF8 <span style="font-weight: bold">sans BOM </span>car sinon le fichier contiendra un octet d&#8217;entête et PHP ne pourra plus envoyer de header ou de session (<a target="_blank" href="http://bugs.php.net/bug.php?id=22108">bug PHP#22108</a>).
     </div>
     <br style="clear:both;"/>
     <div>
      <h2>Developpez en PHP</h2>
<br />
Attention, une fois que votre site est en UTF-8 il va falloir changer quelques habitudes de développement :
<ul>
<li>jetez un coup d&#8217;oeil à l&#8217;extension <a target="_blank" href="http://fr3.php.net/manual/fr/ref.mbstring.php">Mbstring</a>, par exemple pour strlen, utilisez mb_strlen</li>
<li>Comme l'a dit <i>irnine94</i> dans son commentaire, faites bien attention car certaines fonction prennent en paramètre un charset qui par défaut est l'ISO vous devrez donc passer en paramètre UTF-8, comme par exemple la fonction <a target="_blank" href="http://fr2.php.net/manual/fr/function.htmlentities.php">htmlentities</a></li>
</ul>


  <br />Bonne chance à vous, et gardez à l'esprit que l'idée générale est d'avoir de l'UTF8 à tous les endroits de votre application.
     </div>
     <br style="clear:both;"/>
     <div>
      
     </div>
     <br style="clear:both;"/>
   ]]>
   </description>
   <photo:imgsrc>http://www.aquatz.com/photo/imagette-992270-1240213.jpg</photo:imgsrc>
   <link>http://www.aquatz.com/Encodage-convertir-un-site-en-UTF8-PHP-MySQL_a36.html</link>
  </item>

 </channel>
</rss>
