<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://prendreuncafe.com/blog/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>Prendre un Café - dev</title>
  <link>http://prendreuncafe.com/blog/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Fri, 09 May 2008 13:03:02 +0200</pubDate>
  <copyright>Contenus sous licence Creative Commons BY-SA</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Yahoo! Bookmarks, propulsé par Symfony</title>
    <link>http://prendreuncafe.com/blog/post/2006/10/28/Yahoo-Bookmarks-propulse-par-Symfony</link>
    <guid isPermaLink="false">urn:md5:936f9ced3f3d26454efa1b52ddcd4b9e</guid>
    <pubDate>Sat, 28 Oct 2006 11:38:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>dev</category><category>framework</category><category>php</category><category>symfony</category><category>yahoo</category>    
    <description>    &lt;p&gt;Certains &lt;a href=&quot;http://www.symfony-project.com/forum/index.php?t=rview&amp;amp;goto=10961&quot; hreflang=&quot;en&quot;&gt;restaient dubitatifs&lt;/a&gt; quant à la capacité de montée en très forte charge du framework &lt;a href=&quot;http://www.symfony-project.com&quot; hreflang=&quot;en&quot;&gt;Symfony&lt;/a&gt;, l'un des tous meilleurs existants en PHP &lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/10/28/#pnote-825-1&quot; id=&quot;rev-pnote-825-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;


&lt;p&gt;Qu'on se &lt;a href=&quot;http://www.symfony-project.com/weblog/2006/10/28/yahoo-bookmarks-uses-symfony.html&quot; hreflang=&quot;en&quot;&gt;rassure&lt;/a&gt;, si &lt;a href=&quot;http://www.yahoo.com&quot; hreflang=&quot;en&quot;&gt;Yahoo!&lt;/a&gt; a décidé d'utiliser Symfony pour propulser son récent et moderne &lt;a href=&quot;http://new.bookmarks.yahoo.com/&quot; hreflang=&quot;en&quot;&gt;Yahoo! Bookmarks&lt;/a&gt; (20 millions d'utilisateurs en 12 langues), ce n'est certainement pas &lt;a href=&quot;http://www.symfony-project.com/content/quotation.html&quot; hreflang=&quot;en&quot;&gt;sans raisons&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Félicitations aux équipes &lt;a href=&quot;http://www.symfony-project.com&quot; hreflang=&quot;en&quot;&gt;Symfony&lt;/a&gt; qui sont en train de faire de ce framework la référence du monde PHP - voire peut-être au-delà.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Edit :&lt;/strong&gt; N'hésitez pas à aider à propager la bonne nouvelle sur &lt;a href=&quot;http://digg.com/software/Yahoo_Bookmarks_uses_Symfony_PHP_Framework&quot; hreflang=&quot;en&quot;&gt;Digg&lt;/a&gt;, &lt;a href=&quot;http://reddit.com/info/o781/comments&quot; hreflang=&quot;en&quot;&gt;Reddit&lt;/a&gt; ou &lt;a href=&quot;http://www.scoopeo.com/web20/yahoo-bookmarks-utilise-symfony&quot; hreflang=&quot;fr&quot;&gt;Scoopeo&lt;/a&gt; &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/10/28/#rev-pnote-825-1&quot; id=&quot;pnote-825-1&quot;&gt;1&lt;/a&gt;] Je dois bien admettre que même si j'utilise au quotidien Syfony, je me posais cette question...&lt;/p&gt;&lt;/div&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Un dépôt de code partagé avec Snipeet et Symfony</title>
    <link>http://prendreuncafe.com/blog/post/2006/10/09/Un-depot-de-code-partage-avec-Snipeet-et-Symfony</link>
    <guid isPermaLink="false">urn:md5:ee3e2f00f0f5786a17bd0d15ca9fedcb</guid>
    <pubDate>Mon, 09 Oct 2006 18:55:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>dev</category><category>linux</category><category>php</category><category>serveur</category><category>symfony</category><category>tutoriel</category><category>ubuntu</category>    
    <description>    &lt;p&gt;Vous cherchez un moyen simple et participatif de partager des fragments ou exemples de code (en anglais, des &lt;em&gt;snippets&lt;/em&gt;) ? Rien de plus simple avec &lt;a href=&quot;http://trac.snipeet.com/trac&quot; hreflang=&quot;en&quot;&gt;Snipeet&lt;/a&gt;, un outil dédié basé sur le framework &lt;a href=&quot;http://www.symfony-project.com&quot; hreflang=&quot;en&quot;&gt;Symfony&lt;/a&gt; dont l'installation a déjà été &lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/06/20/473-installer-le-framework-php-symfony-sur-ubuntu-dapper-drake&quot; hreflang=&quot;fr&quot;&gt;décrite sur le présent blog&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Pour installer Snipeet sur une machine propulsée par - au hasard total - &lt;a href=&quot;http://www.ubuntu.com&quot; hreflang=&quot;en&quot;&gt;Ubuntu LTS&lt;/a&gt;, rien de plus simple :&lt;/p&gt;


&lt;pre&gt;$ sudo -s 
# cd /var/www
# mkdir snipeet &amp;amp;&amp;amp; cd snipeet
# svn co http://svn.snippet.symfony-project.com/trunk/ .
# chown -R www-data cache log&lt;/pre&gt;

&lt;p&gt;On crée une base et un utilisateur MySQL dédié à l'application :&lt;/p&gt;


&lt;pre&gt;$ mysql -uroot -p
mysql&amp;gt; CREATE DATABASE snipeet;
mysql&amp;gt; GRANT ALL ON snipeet.* TO snipeet@localhost IDENTIFIED BY 'votre_mot_de_passe';
mysql&amp;gt; FLUSH PRIVILEGES;
mysql&amp;gt; \q&lt;/pre&gt;


&lt;p&gt;On défini les paramètres d'accès SQL dans les fichiers &lt;code&gt;./config/propel.ini&lt;/code&gt; et &lt;code&gt;./config/database.yml&lt;/code&gt; en définissant le DSN ad-hoc, par exemple &lt;code&gt;mysql://snipeet:votre_mot_de_passe@localhost/snipeet&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;On lance les commandes de création et d'insertion SQL :&lt;/p&gt;


&lt;pre&gt;# symfony propel-build-sql
# symfony propel-insert-sql&lt;/pre&gt;


&lt;p&gt;Enfin, on crée un &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_host&quot; hreflang=&quot;en&quot;&gt;vhost apache&lt;/a&gt; dédié, sur un sous-domaine &lt;code&gt;snipeet.domaine.tld&lt;/code&gt; par exemple dans un fichier &lt;code&gt;/etc/apache2/sites-available/snipeet.domaine.tld&lt;/code&gt; :&lt;/p&gt;


&lt;pre&gt;&amp;lt;Directory &amp;quot;/usr/share/php/data/symfony/web/sf&amp;quot;&amp;gt;
  AllowOverride All
  Allow from All 
&amp;lt;/Directory&amp;gt;

&amp;lt;VirtualHost *&amp;gt;
    ServerName snipeet.domaine.tld
    DocumentRoot &amp;quot;/var/www/snipeet/web&amp;quot;
    DirectoryIndex index.php
    Alias /sf /usr/share/php/data/symfony/web/sf

    &amp;lt;Directory &amp;quot;/var/www/snipeet/web&amp;quot;&amp;gt;
        AllowOverride All
        Allow from All
    &amp;lt;/Directory&amp;gt;
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;


&lt;p&gt;Sans oublier de l'activer :&lt;/p&gt;


&lt;pre&gt;# a2ensite snipeet.domaine.tld&lt;/pre&gt;


&lt;p&gt;Puis de relancer proprement apache2 :&lt;/p&gt;


&lt;pre&gt;# apache2ctl graceful&lt;/pre&gt;


&lt;p&gt;Et on fait pointer son navigateur à l'adresse paramétrée précedemment tout en savourant le résultat et surtout le fait qu'il nous a fallu moins de 5 minutes montre en main pour en arriver là &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; Tellement content que j'en oublie l'adresse de la démo : &lt;a href=&quot;http://snippets.prendreuncafe.com/&quot; hreflang=&quot;fr&quot; title=&quot;Dépôts et échange de code source&quot;&gt;snippets.prendreuncafe.com&lt;/a&gt; &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Dotclear2 et les gravatars</title>
    <link>http://prendreuncafe.com/blog/post/2006/09/21/Dotclear2-et-les-gravatars</link>
    <guid isPermaLink="false">urn:md5:e373eb4bcb3ea78d58dc411c1705e4a2</guid>
    <pubDate>Thu, 21 Sep 2006 15:07:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>dev</category><category>dotclear</category><category>gravatar</category><category>mail</category><category>php</category><category>tips</category>    
    <description>    &lt;p&gt;Voici une astuce pour gérer les &lt;a href=&quot;http://www.gravatar.com&quot; hreflang=&quot;en&quot; title=&quot;Gravatars&quot;&gt;gravatars&lt;/a&gt; dans les commentaires de votre blog &lt;a href=&quot;http://www.dotclear.net&quot; hreflang=&quot;fr&quot; title=&quot;Dotclear2&quot;&gt;Dotclear2&lt;/a&gt;. Dans le répertoire de votre thème courant, créez un fichier &lt;code&gt;_public.php&lt;/code&gt; et ajoutez-y ces quelques lignes de code &lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/09/21/#pnote-796-1&quot; id=&quot;rev-pnote-796-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; :&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?php
$core-&amp;gt;tpl-&amp;gt;addValue('gravatar', array('gravatar', 'tplGravatar'));
class gravatar {
  public static function tplGravatar($attr)
  {
    return '&amp;lt;?php echo md5(strtolower($_ctx-&amp;gt;comments-&amp;gt;getEmail(false))); ?&amp;gt;';
  }
}
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Maintenant, dans votre fichier de template pour les billets (généralement, il s'agit de &lt;code&gt;post.html&lt;/code&gt;), vous pouvez appeller votre image de gravatar de cette façon entre les balises &lt;code&gt;&amp;lt;tpl:Comments&amp;gt;&lt;/code&gt; et &lt;code&gt;&amp;lt;/tpl:Comments&amp;gt;&lt;/code&gt; :&lt;/p&gt;

&lt;pre&gt;
&amp;lt;img src=&amp;quot;http://www.gravatar.com/avatar.php?gravatar_id={{tpl:gravatar}}&amp;quot;
     class=&amp;quot;gravatar_img&amp;quot; alt=&amp;quot;Gravatar Image&amp;quot; /&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Voila, c'est codé en 5 minutes et vous aurez constaté que je ne génère pas directement l'url complète du gravatar et encore moins la syntaxe HTML de la balise image depuis la classe PHP, c'est tout simplement car :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;J'en ai la flemme,&lt;/li&gt;
&lt;li&gt;Je préfère gérer ça dans le template.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hope it helps anyway &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Edit du 22 septembre 2006&lt;/h3&gt;


&lt;p&gt;Bon, voila finalement une version un poil plus customizable. Le code qui suit annule et remplace le précedent dans votre fichier &lt;code&gt;_public.php&lt;/code&gt; :&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?php
$core-&amp;gt;tpl-&amp;gt;addValue('gravatar', array('gravatar', 'tplGravatar'));

class gravatar {

  const
    URLBASE = 'http://www.gravatar.com/avatar.php?gravatar_id=%s&amp;amp;amp;default=%s&amp;amp;amp;size=%d',
    HTMLTAG = '&amp;lt;img src=&amp;quot;%s&amp;quot; class=&amp;quot;%s&amp;quot; alt=&amp;quot;%s&amp;quot; /&amp;gt;',
    DEFAULT_SIZE = '40',
    DEFAULT_CLASS = 'gravatar_img',
    DEFAULT_ALT = 'Gravatar de %s';

  public static function tplGravatar($attr)
  {
    $md5mail = '\'.md5(strtolower($_ctx-&amp;gt;comments-&amp;gt;getEmail(false))).\'';
    $size    = array_key_exists('size',   $attr) ? $attr['size']   : self::DEFAULT_SIZE;
    $class   = array_key_exists('class',  $attr) ? $attr['class']  : self::DEFAULT_CLASS;
    $alttxt  = array_key_exists('alt',    $attr) ? $attr['alt']    : self::DEFAULT_ALT;
    $altimg  = array_key_exists('altimg', $attr) ? $attr['altimg'] : '';
    $gurl    = sprintf(self::URLBASE,
                       $md5mail, urlencode($altimg), $size);
    $gtag    = sprintf(self::HTMLTAG,
                       $gurl, $class, eregi(&amp;quot;%s&amp;quot;, $alttxt) ?
                                      sprintf($alttxt, '\'.$_ctx-&amp;gt;comments-&amp;gt;comment_author.\'') : $alttxt);
    return '&amp;lt;?php echo \'' . $gtag . '\'; ?&amp;gt;';
  }

}
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Du côté de votre template &lt;code&gt;post.html&lt;/code&gt; et toujours entre vos deux balises &lt;code&gt;&amp;lt;tpl:Comments&amp;gt;&lt;/code&gt; et &lt;code&gt;&amp;lt;/tpl:Comments&amp;gt;&lt;/code&gt;, voila comment ça se passe :&lt;/p&gt;

&lt;pre&gt;
{{tpl:gravatar class=&amp;quot;gravatar_img&amp;quot; size=&amp;quot;80&amp;quot; altimg=&amp;quot;http://www.example.host/default_gravatar.png&amp;quot; alt=&amp;quot;Gravatar de %s&amp;quot;}}
&lt;/pre&gt;


&lt;p&gt;Je crois que les attributs sont assez parlants, mais en voici le détail au cas où :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;class&lt;/code&gt; : le nom de la classe CSS à appliquer à l'image&lt;/li&gt;
&lt;li&gt;&lt;code&gt;size&lt;/code&gt; : la taille en pixels&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alt&lt;/code&gt; : Le contenu du texte alternatif à l'image (acepte la syntaxe de &lt;a href=&quot;http://fr.php.net/sprintf&quot; hreflang=&quot;fr&quot; title=&quot;La fonction sprintf() en PHP&quot;&gt;sprintf&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;altimg&lt;/code&gt; : L'url de l'image par defaut en l'absence de gravatar (sera url encodée automatiquement)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;


&lt;h3&gt;Finalement, voila le plugin &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/h3&gt;


&lt;p&gt;Bon, je suis incorrigible mais l'occasion était trop belle pour commencer à mettre le nez dans le nouveau système de plugins de Dotclear2 ; voici donc le plugin Gravatars &lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/09/21/#pnote-796-2&quot; id=&quot;rev-pnote-796-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://prendreuncafe.com/blog/share/plugin-gravatars-1.0.pkg.gz&quot; hreflang=&quot;fr&quot; title=&quot;Installeur du plugin Gravatars pour Dotclear2&quot;&gt;Gravatars pour Dotclear2 v1.0 - Installeur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://prendreuncafe.com/blog/share/plugin-gravatars-1.0.tar.gz&quot; hreflang=&quot;fr&quot; title=&quot;Archive TAR Gzippée du plugin Gravatars pour Dotclear2&quot;&gt;Gravatars pour Dotclear2 v1.0 - Archive tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://prendreuncafe.com/blog/share/plugin-gravatars-1.0.zip&quot; hreflang=&quot;fr&quot; title=&quot;Archive ZIP du plugin Gravatars pour Dotclear2&quot;&gt;Gravatars pour Dotclear2 v1.0 - Archive Zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bien évidemment, pour une toute première version, il doit exister quelques bugs et limitations :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pas de traduction française&lt;/li&gt;
&lt;li&gt;Pas d'aide contextuelle&lt;/li&gt;
&lt;li&gt;Pas de configuration par blog (à venir)&lt;/li&gt;
&lt;li&gt;Utilisation d'un archaïque fichier INI (pas compris comment mettre les settings en base)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Au chapitre des fonctionnalités :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Possibilité de définir les paramètres des gravatars de façon globale...&lt;/li&gt;
&lt;li&gt;ou individuellement au niveau du template d'appel (voir plus haut)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Edit du 25 août 2007 :&lt;/strong&gt; Grâce à &lt;a href=&quot;http://blog.userland.fr/&quot; hreflang=&quot;fr&quot;&gt;Goulven&lt;/a&gt;, vous avez droit à la version patchée compatible Dotclear2b7 du plugin :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://prendreuncafe.com/blog/share/plugin-gravatars-1.0.1.pkg.gz&quot; hreflang=&quot;fr&quot; title=&quot;Installeur du plugin Gravatars pour Dotclear2b7&quot;&gt;Gravatars pour Dotclear2 v1.0.1 - Installeur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://prendreuncafe.com/blog/share/plugin-gravatars-1.0.1.tar.gz&quot; hreflang=&quot;fr&quot; title=&quot;Archive TAR Gzippée du plugin Gravatars pour Dotclear2b7&quot;&gt;Gravatars pour Dotclear2 v1.0.1 - Archive tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://prendreuncafe.com/blog/share/plugin-gravatars-1.0.1.zip&quot; hreflang=&quot;fr&quot; title=&quot;Archive ZIP du plugin Gravatars pour Dotclear2b7&quot;&gt;Gravatars pour Dotclear2 v1.0.1 - Archive Zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/09/21/#rev-pnote-796-1&quot; id=&quot;pnote-796-1&quot;&gt;1&lt;/a&gt;] Prochaine étape : gérer la coloration syntaxique du code dans Dotclear2.&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/09/21/#rev-pnote-796-2&quot; id=&quot;pnote-796-2&quot;&gt;2&lt;/a&gt;] Packagé grâce au plugin &lt;a href=&quot;http://www.elaboration.be/post/Pack-it&quot; hreflang=&quot;fr&quot; title=&quot;Packager de plugin pour Dotclear2&quot;&gt;Pack it! d'Elaboration.be&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Symfony en route vers la version 1.0</title>
    <link>http://prendreuncafe.com/blog/post/2006/08/25/487-symfony-en-route-vers-la-version-10</link>
    <guid isPermaLink="false">urn:md5:1a7cbb9e3cfc2f15d6cc6e5375e91078</guid>
    <pubDate>Fri, 25 Aug 2006 19:29:00 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>dev</category><category>framework</category><category>php</category><category>symfony</category><category>web</category>    
    <description>    &lt;p&gt;Les développeurs et contributeurs du framework &lt;a href=&quot;http://www.symfony-project.com/&quot; hreflang=&quot;en&quot;&gt;Symfony&lt;/a&gt; n'ont pas pris beaucoup de vacances cet été, et &lt;a href=&quot;http://www.symfony-project.com/weblog/2006/08/25/heading-towards-symfony-1-0.html&quot; hreflang=&quot;en&quot;&gt;ça se voit&lt;/a&gt; !&lt;/p&gt;


&lt;p&gt;Les avancées sont remarquables et le framework tend de plus en plus vers le pendant PHP de &lt;a href=&quot;http://www.rubyonrails.org&quot; hreflang=&quot;en&quot;&gt;Ruby on Rails&lt;/a&gt; - à l'image de ce que fait &lt;a href=&quot;http://cakephp.org&quot; hreflang=&quot;en&quot;&gt;CakePHP&lt;/a&gt; de son côté, tant dans la puissance, que la simplicité d'utilisation ou de la richesse fonctionnelle.&lt;/p&gt;


&lt;p&gt;Un petit effort reste cependant à fournir sur l'&lt;a href=&quot;http://www.symfony-project.com/forum/index.php?t=rview&amp;amp;goto=10961&quot; hreflang=&quot;en&quot;&gt;optimisation des performances côté modèle&lt;/a&gt; mais la faute semble incomber à &lt;a href=&quot;http://propel.phpdb.org/&quot; hreflang=&quot;en&quot;&gt;Propel&lt;/a&gt;, la partie &lt;acronym title=&quot;Object Relational Mapping&quot;&gt;ORM&lt;/acronym&gt; tierce du projet et n'est donc pas le fait de l'équipe Symfony. À noter cependant, la possibilité de remplacer Propel par &lt;a href=&quot;http://www.phpdoctrine.com/&quot; hreflang=&quot;en&quot;&gt;Doctrine&lt;/a&gt; - une couche d'abstraction/persistance basée sur &lt;a href=&quot;http://fr3.php.net/pdo&quot; hreflang=&quot;fr&quot;&gt;PDO&lt;/a&gt; donc théoriquement beaucoup plus rapide - semble facilitée dans la dernière version du trunk. Voila qui semble prometteur... Je vous tiens au courant si la vie m'en laisse le temps !&lt;/p&gt;


&lt;p&gt;Dans tous les cas ce framework est une belle réussite et vous devriez avoir de ses nouvelles assez rapidement et concrètement sur ce blog même. Let's keep in touch !&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Edit :&lt;/strong&gt; &lt;a href=&quot;http://doctrine.pengus.net/trac/wiki/sfDoctrine&quot; hreflang=&quot;en&quot;&gt;How to use PHP Doctrine with Symfony&lt;/a&gt; &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Note perso #1</title>
    <link>http://prendreuncafe.com/blog/post/2006/06/23/476-note-perso-1</link>
    <guid isPermaLink="false">urn:md5:83b71ce2ce4e81eef8de55b20072d20e</guid>
    <pubDate>Fri, 23 Jun 2006 22:41:11 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>dev</category><category>grumph</category><category>mysql</category>    
    <description>    &lt;p&gt;Nommer une table MySQL &lt;code&gt;user&lt;/code&gt;, c'est mal; et ça peut faire perdre une après midi &lt;img src=&quot;/blog/themes/PuC4/smilies/frown.gif&quot; alt=&quot;:(&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Installer le framework PHP Symfony sur Ubuntu Dapper Drake</title>
    <link>http://prendreuncafe.com/blog/post/2006/06/20/473-installer-le-framework-php-symfony-sur-ubuntu-dapper-drake</link>
    <guid isPermaLink="false">urn:md5:959ca25f8333590ec29d177705e539c9</guid>
    <pubDate>Tue, 20 Jun 2006 16:21:53 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Ubuntu</category>
        <category>dev</category><category>framework</category><category>php</category><category>symfony</category><category>tutoriel</category><category>ubuntu</category><category>web</category>    
    <description>    &lt;p&gt;A l'instar de &lt;acronym title=&quot;Ruby on Rails&quot;&gt;RoR&lt;/acronym&gt;, &lt;a href=&quot;http://symfony-project.com&quot; hreflang=&quot;en&quot;&gt;Symfony&lt;/a&gt; est basé sur le motif de conception &lt;acronym title=&quot;Modèle Vue Controlleur&quot;&gt;MVC&lt;/acronym&gt; et utilise une couche d'abstraction d'accès aux données et d'implémentation &lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt;. Il est développé en PHP5 par une équipe française, cocorico&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Voyons ensemble comment installer la bête sur une &lt;a href=&quot;http://www.ubuntu.com/&quot; hreflang=&quot;en&quot;&gt;Ubuntu Dapper Drake&lt;/a&gt; toute fraîche.&lt;/p&gt;


&lt;h3&gt;Installation de Symfony&lt;/h3&gt;


&lt;p&gt;Le meilleur moyen d'installer Symfony mais surtout de le maintenir à jour est d'utiliser le canal &lt;a href=&quot;http://pear.php.net&quot; hreflang=&quot;en&quot;&gt;PEAR&lt;/a&gt; &lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/06/20/#pnote-473-1&quot; id=&quot;rev-pnote-473-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; propre au projet. Mais avant tout, vérifions que nous disposons d'un environnement de développement ad-hoc&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo apt-get install php5 php5-cli php5-mysql php-pear&lt;/pre&gt;


&lt;p&gt;Le gestionnaire de paquets &lt;code&gt;apt&lt;/code&gt; se chargera d'installer les dépendances nécessaires, notamment &lt;code&gt;apache2&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;L'installation du canal Symfony nécessite que nous octroyions &lt;a href=&quot;http://www.symfony-project.com/trac/wiki/SymfonyFAQ?version=13&quot; hreflang=&quot;fr&quot;&gt;16Mo de mémoire vive&lt;/a&gt; à PHP. On édite donc le fichier &lt;code&gt;/etc/php5/cli/php.ini&lt;/code&gt; et on affecte la nouvelle valeur&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;memory_limit = 16M&lt;/pre&gt;


&lt;p&gt;Bien. Maintenant, installons Symfony et &lt;a href=&quot;http://phing.info&quot; hreflang=&quot;en&quot;&gt;Phing&lt;/a&gt; &lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/06/20/#pnote-473-2&quot; id=&quot;rev-pnote-473-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt; via PEAR&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo pear upgrade PEAR &amp;amp;&amp;amp; sudo pear channel-discover pear.symfony-project.com
$ sudo pear install symfony/symfony
$ sudo pear install --alldeps http://phing.info/pear/phing-current.tgz&lt;/pre&gt;


&lt;p&gt;OK, ceci fait, on crée un nouveau projet Symfony, que nous baptiserons sobrement &lt;em&gt;monprojet&lt;/em&gt;, disposant d'une application &lt;em&gt;monapplication&lt;/em&gt; et que nous stockerons sous le docroot &lt;code&gt;/var/www/monprojet&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo -s
# mkdir /var/www/monprojet
# cd /var/www/monprojet
# symfony init-project monprojet
# symfony init-app monapplication&lt;/pre&gt;


&lt;p&gt;Voila, notre arborescence Symfony vient d'être créée, on peut commencer à développer&amp;nbsp;! Non&amp;nbsp;? Mince, on a oublié de configurer Apache2 &lt;img src=&quot;/blog/themes/PuC4/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Configuration d'Apache 2&lt;/h3&gt;


&lt;p&gt;Tout d'abord, activez &lt;code&gt;mod_rewrite&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo a2enmod rewrite&lt;/pre&gt;


&lt;p&gt;Ensuite, nous allons créer rapidement un vhost apache, qui pointera benoitement vers &lt;code&gt;dev.monprojet.com&lt;/code&gt; (redirigé vers notre hôte local.) Pour cela, éditez votre fichier &lt;code&gt;/etc/hosts&lt;/code&gt; et sur la ligne comprenant l'adresse IP &lt;code&gt;127.0.0.1&lt;/code&gt;, ajoutez &lt;code&gt;dev.monprojet.com&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;127.0.0.1    localhost localhost.localdomain mamachine dev.monprojet.com&lt;/pre&gt;


&lt;p&gt;On crée maintenant l'hôte virtuel Apache &lt;code&gt;/etc/apache2/sites-available/dev.monprojet.com&lt;/code&gt; dont voici le contenu&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;&amp;lt;Directory &quot;/usr/share/php/data/symfony/web/sf&quot;&amp;gt;
    AllowOverride All
    Allow from All
&amp;lt;/Directory&amp;gt;

&amp;lt;VirtualHost *&amp;gt;
    ServerName dev.monprojet.com
    DocumentRoot &quot;/var/www/monprojet/web&quot;
    DirectoryIndex index.php
    Alias /sf /usr/share/php/data/symfony/web/sf
    
    &amp;lt;Directory &quot;/var/www/monprojet/web&quot;&amp;gt;
        AllowOverride All
        Allow from All
    &amp;lt;/Directory&amp;gt;
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;


&lt;p&gt;On active l'hôte virtuel nouvellement créé&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo a2ensite dev.monprojet.com&lt;/pre&gt;


&lt;p&gt;... et on relance apache&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo apache2ctl restart&lt;/pre&gt;


&lt;p&gt;Une dernière petite chose, il faut desactiver les &lt;a href=&quot;http://fr.php.net/magic_quotes&quot; hreflang=&quot;fr&quot;&gt;magic_quotes&lt;/a&gt; de PHP, dans le fichier &lt;code&gt;/etc/php5/apache2/php.ini&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;magic_quotes_gpc = Off&lt;/pre&gt;


&lt;p&gt;Lancez votre navigateur sur &lt;a href=&quot;http://dev.monprojet.com&quot;&gt;http://dev.monprojet.com&lt;/a&gt;, vous devriez obtenir un message du genre&amp;nbsp;:&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;If you see this page, it means that the creation of your symfony project on this system was successful.&lt;/p&gt;&lt;/blockquote&gt;


&lt;h3&gt;Plus d'informations&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.symfony-project.com/tutorial/my_first_project.html&quot; hreflang=&quot;en&quot;&gt;Premier tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.symfony-project.com/content/documentation.html&quot; hreflang=&quot;en&quot;&gt;Documentation du projet Symfony&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.symfony-project.com/content/support.html&quot; hreflang=&quot;en&quot;&gt;Support communautaire&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Edit du 25 juin 06: Nouvelle version 0.6.3&lt;/h3&gt;


&lt;p&gt;La &lt;a href=&quot;http://www.symfony-project.com/weblog/post/77.html&quot; hreflang=&quot;en&quot;&gt;version 0.6.3 est sortie&lt;/a&gt;. Pour mettre à jour&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo pear upgrade symfony/symfony&lt;/pre&gt;


&lt;h3&gt;Edit du 26 juin 06&amp;nbsp;:&lt;/h3&gt;


&lt;p&gt;Mon camarade de jeu &lt;a href=&quot;http://www.lacot.org/&quot; hreflang=&quot;fr&quot;&gt;Xavier Lacot&lt;/a&gt; vient de publier sur son blog un &lt;a href=&quot;http://www.lacot.org/blog/2006/06/26/votre-blog-sous-symfony-pas-a-pas.html&quot; hreflang=&quot;fr&quot;&gt;excellent tutorial dédié à Symfony&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/06/20/#rev-pnote-473-1&quot; id=&quot;pnote-473-1&quot;&gt;1&lt;/a&gt;] PEAR propose un système de distribution d'application tierce très pratique, les &lt;em&gt;canaux&lt;/em&gt;. Symfony dispose de son propre canal PEAR, mais n'utilise aucune librairie PEAR. Vous avez le droit d'être embrouillés.&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/06/20/#rev-pnote-473-2&quot; id=&quot;pnote-473-2&quot;&gt;2&lt;/a&gt;] Phing est une dépendance de Symfony, qu'il faut installer indépendamment. Haha, elle est bonne, hein?&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>Développement PHP4 et PHP5 sur Ubuntu avec XAMPP</title>
    <link>http://prendreuncafe.com/blog/post/2006/06/05/461-developpement-php4-et-php5-sur-ubuntu-avec-xampp</link>
    <guid isPermaLink="false">urn:md5:63b25de758ab3841c2cb0950cfb75e5f</guid>
    <pubDate>Mon, 05 Jun 2006 22:35:13 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Ubuntu</category>
        <category>dev</category><category>php</category><category>tutoriel</category><category>ubuntu</category>    
    <description>    &lt;p&gt;Pour ceux qui comme moi passent constamment de projets PHP4 à PHP5, la gestion des environnements de développement par paquets n'est pas toujours aisée - même si cela reste possible aux prix de manipulations récurrentes et parfois compliquées.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.apachefriends.org/fr/xampp-linux.html&quot; hreflang=&quot;fr&quot;&gt;XAMPP&lt;/a&gt; est un système &lt;acronym title=&quot;Linux, Apache, MySQL, PHP &amp;amp; Perl&quot;&gt;LAMPP&lt;/acronym&gt; autonome - donc indépendant du système de gestion de paquets - contenant tout ce qu'il faut pour travailler directement dans un environnement de développement comprenant entre autres &lt;a href=&quot;http://apache.org/&quot; hreflang=&quot;en&quot;&gt;Apache&lt;/a&gt; 2.2.2, &lt;a href=&quot;http://www.mysql.fr/&quot; hreflang=&quot;fr&quot;&gt;MySQL&lt;/a&gt; 5.0.21, &lt;a href=&quot;http://php.net&quot; hreflang=&quot;en&quot;&gt;PHP&lt;/a&gt; 5.1.4 &amp;amp; 4.4.2 &amp;amp; &lt;a href=&quot;http://pear.php.net/&quot; hreflang=&quot;en&quot;&gt;PEAR&lt;/a&gt; + &lt;a href=&quot;http://www.sqlite.org/&quot; hreflang=&quot;en&quot;&gt;SQLite&lt;/a&gt; 2.8.17/3.2.8, &lt;a href=&quot;http://perl.org&quot; hreflang=&quot;en&quot;&gt;Perl&lt;/a&gt; 5.8.7, &lt;a href=&quot;http://proftpd.org/&quot; hreflang=&quot;en&quot;&gt;ProFTPD&lt;/a&gt; 1.3.0, &lt;a href=&quot;http://www.phpmyadmin.net/&quot; hreflang=&quot;en&quot;&gt;phpMyAdmin&lt;/a&gt; 2.8.1 et beaucoup d'autres choses encore. Quelques &lt;a href=&quot;http://www.apachefriends.org/en/xampp-linux-screenshots.html&quot; hreflang=&quot;en&quot;&gt;captures d'écran&lt;/a&gt; vous convaincront peut-être plus efficacement...&lt;/p&gt;


&lt;p&gt;Ainsi vous pouvez disposer d'un environnement de développement isolé, dédié à un projet particulier ou switcher de version PHP très facilement au moyen d'une simple ligne de commande&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo lampp php4&lt;/pre&gt;


&lt;p&gt;Ou bien&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo lampp php5&lt;/pre&gt;


&lt;p&gt;Pour installer la &lt;a href=&quot;http://www.apachefriends.org/download.php?xampp-linux-1.5.3a.tar.gz&quot; hreflang=&quot;en&quot;&gt;version 1.5.3 de XAMPP&lt;/a&gt; sur votre Ubuntu, voici la démarche à suivre&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ sudo-s
# cd /opt
# wget http://puzzle.dl.sourceforge.net/sourceforge/xampp/xampp-linux-1.5.3a.tar.gz
# tar xvzf xampp-linux-1.5.3a.tar.gz &amp;amp;&amp;amp; rm xampp-linux-1.5.3a.tar.gz
# ln -s lampp/lampp /usr/bin/lampp&lt;/pre&gt;


&lt;p&gt;Il est sage de configurer MySQL proprement et de façon sûre, après s'être assuré que le service natif ne fonctionne pas &lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/06/05/#pnote-461-1&quot; id=&quot;rev-pnote-461-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;# /etc/init.d/mysql stop
# /opt/lampp/bin/mysql_secure_installation&lt;/pre&gt;


&lt;p&gt;Si vous travaillez aussi avec les versions officiellement distribuées par Ubuntu d'apache et de mysql, il peut être utile de disposer de raccourcis permettant de passer de XAMPP aux versions natives et inversement&amp;nbsp;; personnellement, cela tient dans ces quelques alias bash&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;alias startubuntuwebserver='sudo lampp stop &amp;amp;&amp;amp; sudo apache2ctl start &amp;amp;&amp;amp; /etc/init.d/mysql start'
alias stopubuntuwebserver='sudo apache2ctl stop &amp;amp;&amp;amp; /etc/init.d/mysql stop'
alias startxampp4='stopwebserver &amp;amp;&amp;amp; sudo lampp php4'
alias startxampp5='stopwebserver &amp;amp;&amp;amp; sudo lampp php5'&lt;/pre&gt;


&lt;p&gt;Ainsi pour lancer XAMPP, par exemple en PHP5&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ startxampp5&lt;/pre&gt;


&lt;p&gt;Et pour relancer les services originaux&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt;$ startubuntuwebserver&lt;/pre&gt;


&lt;p&gt;Notez enfin qu'il existe également des &lt;a href=&quot;http://www.apachefriends.org/fr/xampp-linux.html#1054&quot; hreflang=&quot;fr&quot;&gt;commandes avancées&lt;/a&gt; pour le démarrage et l'arrêt des services XAMPP.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/06/05/#rev-pnote-461-1&quot; id=&quot;pnote-461-1&quot;&gt;1&lt;/a&gt;] Si ce dernier est installé, bien entendu.&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>Plugin Last Blogmarks pour Dotclear v 0.3.7</title>
    <link>http://prendreuncafe.com/blog/post/2006/05/25/457-plugin-last-blogmarks-pour-dotclear-v-037</link>
    <guid isPermaLink="false">urn:md5:468fea9f64166b5a3af9dc452d4347c7</guid>
    <pubDate>Thu, 25 May 2006 17:45:54 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dotclear</category>
        <category>blogmarks</category><category>dev</category><category>dotclear</category><category>php</category><category>plugins</category><category>web</category>    
    <description>    &lt;p&gt;Depuis la sortie de la v2 de &lt;a href=&quot;http://blogmarks.net&quot; hreflang=&quot;fr&quot;&gt;Blogmarks.net&lt;/a&gt;, mon plugin pour Dotclear en version 0.3.6 ne fonctionnait plus convenablement. C'est desormais chose réparée, j'ai mis à jour les urls de l'API de blogmarks qui avaient changé.&lt;/p&gt;


&lt;p&gt;J'en ai profité pour ajouter quelques fonctionnalités supplémentaires&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ajout d'un lien vers le &lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?id=9638&quot; hreflang=&quot;fr&quot;&gt;topic officiel&lt;/a&gt; sur le &lt;a href=&quot;http://www.dotclear.net/forum/&quot; hreflang=&quot;fr&quot;&gt;forum de Doclear&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ajout d'une page permettant de consulter en ligne le changelog&lt;/li&gt;
&lt;li&gt;Ajout d'une interface de prévisualisation de la liste de marks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les liens de téléchargement ont été mis à jour sur la &lt;a href=&quot;http://prendreuncafe.com/blog/2005/05/01/89-plugin-last-blogmarks-pour-dotclear&quot; hreflang=&quot;fr&quot;&gt;page officielle du plugin&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>