<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.mikaelrandy.fr/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/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Mikael RANDY</title>
  <link>http://www.mikaelrandy.fr/</link>
  <atom:link href="http://www.mikaelrandy.fr/feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Sun, 15 Aug 2010 13:15:07 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Gérer les connexions SSH distantes avec Mac OS X</title>
    <link>http://www.mikaelrandy.fr/post/2010/07/13/Utiliser-la-commande-ssh-copy-id-depuis-Mac-OSX</link>
    <guid isPermaLink="false">urn:md5:85522e008a3c5a01b256d0c8c906604f</guid>
    <pubDate>Fri, 16 Jul 2010 08:00:00 +0100</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Mac</category>
        <category>MacOSX</category><category>SSH</category><category>ssh-copy-id</category>    
    <description>    &lt;p&gt;Comme vous le savez si vous passez régulièrement sur ce site, que &lt;a href=&quot;http://www.mikaelrandy.fr/post/2010/05/22/Je-switche&quot;&gt;je viens de switcher pour utiliser MacOSX&lt;/a&gt;. Je suis donc dans une phase d'apprentissage, et de modifications de mes habitudes de Windowsien convaincu.&lt;/p&gt;


&lt;p&gt;Comme je gère quelques sites personnels (dont celui ci), je dispose de quelques comptes sur des serveurs distants.
Jusque là, pour gérer ces connexions, j'utilisais l'excellent &lt;a href=&quot;http://puttycm.free.fr/cms/&quot;&gt;Putty Connection Manager&lt;/a&gt;.
Toutefois, depuis mon passage à Mac OS X, je n'avais pas trouvé de système équivalent me convenant.&lt;/p&gt;


&lt;p&gt;Tout d'abord, comme Mac OS X est basé sur un système Unix, je dispose d'un terminal, et je peux donc utiliser la commande suivante pour me connecter en ssh sur un serveur distant&amp;nbsp;:&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;ssh user@server&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Toutefois, la limitation de cette pratique est qu'il faut se souvenir des mots de passe des serveurs. Or, cette approche me pose un gros soucis puisque j'ai pour (bonne) habitude d'utiliser des mots de passe compliqué pour mes comptes ssh (mélange de lettre, chiffre, majuscule, minuscule, caractères spéciaux, longueur supérieure à 50 caractères), et qu'il me faudrait donc avoir une liste de mes mots de passe quelque part.&lt;/p&gt;


&lt;p&gt;Je me suis donc dit que c'était le moment de faire un truc qui est dans ma TODO depuis un moment&amp;nbsp;: passer au &lt;a href=&quot;http://fr.wikipedia.org/wiki/Secure_Shell#SSH_avec_authentification_par_clefs&quot; hreflang=&quot;fr&quot;&gt;système d'authentification par clé publique&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;J'ai donc utilisé l'&lt;a href=&quot;http://prendreuncafe.com/blog/post/2005/08/29/262-installer-sa-cle-ssh-sur-un-serveur-distant&quot; hreflang=&quot;fr&quot;&gt;excellent tutoriel&lt;/a&gt; de nik0 sur l'installation de ce système.
La seule difficulté a été que la commande ssh-copy-id n'est pas disponible nativement. Heureusement, &lt;a href=&quot;http://www.mikaelrandy.fr/post/2010/07/15/Utiliser-la-commande-ssh-copy-id-depuis-Mac-OSX&quot;&gt;la solution était simple&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Couplé à la petite astuce de nik0 (fin du lien, section &quot;Pour aller plus loin&quot;), tout deviens assez simple.
A partir de là, il me suffit de gérer mes connexions distantes, et tout roule&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2010/07/13/Utiliser-la-commande-ssh-copy-id-depuis-Mac-OSX#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2010/07/13/Utiliser-la-commande-ssh-copy-id-depuis-Mac-OSX#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/17</wfw:commentRss>
      </item>
    
  <item>
    <title>Utiliser la commande ssh-copy-id depuis Mac OSX</title>
    <link>http://www.mikaelrandy.fr/post/2010/07/15/Utiliser-la-commande-ssh-copy-id-depuis-Mac-OSX</link>
    <guid isPermaLink="false">urn:md5:3e6edec70eb53a0ff4bb0465c55e5ff3</guid>
    <pubDate>Fri, 16 Jul 2010 08:00:00 +0100</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Mac</category>
            
    <description>&lt;p&gt;Comment rendre la commande ssh-copy-id disponible sur Mac OS X&lt;/p&gt;    &lt;p&gt;Si vous avez tenté d'utiliser la commande ssh-copy-id sur Mac OS X, vous avez dû vous rendre compte que, même si openssh est installé nativement, cette commande n'est pas disponible.&lt;/p&gt;


&lt;p&gt;Heureusement, cette commande est un simple script qu'il suffit de copier au bon endroit, de lui donner les bons droits et **SURPRISE** la commande est disponible.&lt;/p&gt;


&lt;p&gt;Et comme je suis sympa, eh bien je vous donne tout ça. ;)
Pour commencer le script &lt;a href=&quot;http://www.mikaelrandy.fr/public/ssh-copy-id&quot;&gt;ssh-copy-id&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Ensuite, la méthodologie à suivre pour le mettre en place&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Télécharger le fichier&lt;/li&gt;
&lt;li&gt;Déplacer le fichier dans le répertoire /usr/bin&lt;/li&gt;
&lt;li&gt;Lui donner les droits nécessaires&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
chmod 755 /usr/bin/ssh-copy-id
&lt;/pre&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2010/07/15/Utiliser-la-commande-ssh-copy-id-depuis-Mac-OSX#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2010/07/15/Utiliser-la-commande-ssh-copy-id-depuis-Mac-OSX#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/18</wfw:commentRss>
      </item>
    
  <item>
    <title>Histoire d'un nouveau switcher</title>
    <link>http://www.mikaelrandy.fr/post/2010/05/22/Je-switche</link>
    <guid isPermaLink="false">urn:md5:80e621fd3f5ea2a31e7f23eb4efb791d</guid>
    <pubDate>Sat, 22 May 2010 11:50:00 +0100</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Mac</category>
        <category>apple</category><category>macbook pro</category>    
    <description>    &lt;p&gt;Tenté par l'aventure Mac depuis quelques années, j'ai enfin réussi à me décider (et casser ma tirelire) pour passer le cap.&lt;/p&gt;


&lt;p&gt;Voici le résumé de l'aventure, en quelques mots&amp;nbsp;:
Courant de l'année dernière, après mon déménagement, j'ai eu tout un tas de problème avec mon matériel informatique, le plus simple étant le PC qui refusait de reconnaitre l'imprimante qu'il reconnaissait pourtant très bien avant, au plus grave étant qu'étant en tour fixe, le déménagement dans un plus grand appartement, avec un bureau dédié créait une véritable séparation entre mon amie et moi.
De plus, mon matériel étant plus que vieillissant, il fallait que j'agisse.&lt;/p&gt;


&lt;p&gt;Ayant entendu parler de la sortie prochaine d'une nouvelle version de MacBook Pro, j'ai pris mon mal en patience quelques semaines (mois) pour attendre la bonne nouvelle de voir qu'Apple a enfin installé des i5 et i7 dans ses MacBook Pro.
Du coup, le 06 mai, j'ai passé ma commande pour un magnifique MacBook Pro 15&quot; i7 2,66Ghz.
Comme j'ai demandé une configuration personnalisée (un disque dur qui tourne à 7200rpm au lieu de 5200rpm, un écran haute résolution mat, le changement de la RAM), je n'ai reçu la bête que jeudi dernier (20 mai) soit 15 jours après la commande.&lt;/p&gt;


&lt;p&gt;Mais depuis, ce n'est (presque) que du bonheur.
Bon, il faut s'habituer au clavier, et je ne parle pas que de la touche &quot;pomme&quot; qui doit être utilisé en lieu et place de la touche &quot;Ctrl&quot;, mais également des touches F* qui sont par défaut configurée sur la fonction secondaire et qu'il faut faire &quot;Fn + F*&quot; pour récupérer la fonction que j'estimais comme native, ou encore du tilte (Alt +n), des accolades/crochets/... qui ne sont pas affichés sur le clavier.&lt;/p&gt;


&lt;p&gt;Sinon, concernant le reste, c'est génial.
La qualité du matériel est vraiment au rendez-vous&amp;nbsp;: la coque unibody est légère, bien finie, donne une impression de solidité très rassurante. Le clavier retro-éclairé et l'écran qui s'adaptent seuls à la luminosité ambiante sont d'un confort exceptionnels. L'écran mat est génial.
Concernant Mac OS X, ayant déjà eu l'occasion de m'y frotter, et de passer par la phase &quot;je ne comprend absolument rien&quot;, puis par la phase &quot;Ah mais si je ne cherche pas à faire comme Windows, ça marche beaucoup mieux&quot;, j''était déjà averti et un peu initié.
Au final, je trouve, pour le moment, cet OS extremement ergonomique, tout me tombe sous la main en quelques secondes, sans effort intellectuel, et c'est très simple de prendre en main sa machine.&lt;/p&gt;


&lt;p&gt;Toutefois, et bien que je ne sois pas le 1er, je passe quand même par l'étape d'appropriation de la machine, et je ferais donc certainement une série d'article sur ce qui m'a bloqué, et que je veux donc partager avec vous. L'article courant est donc le 1er de la nouvelle catégorie &quot;Mac&quot;&lt;/p&gt;


&lt;p&gt;Et pour ceux qui se demanderais la signification du titre, un &quot;switcher&quot;, dans le monde Mac est un utilisateur qui quitte Windows pour Mac ;)&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2010/05/22/Je-switche#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2010/05/22/Je-switche#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/14</wfw:commentRss>
      </item>
    
  <item>
    <title>Auto-complétion des commandes Symfony</title>
    <link>http://www.mikaelrandy.fr/post/2010/03/01/Auto-completion-des-commandes-Symfony</link>
    <guid isPermaLink="false">urn:md5:790665a6ad36ebd2b1e77014749be2c0</guid>
    <pubDate>Mon, 01 Mar 2010 16:41:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Symfony</category>
        <category>auto-complete</category><category>CLI</category><category>symfony</category>    
    <description>&lt;p&gt;J'ai découvert au fil de mes flux RSS un petit script qui permet d'obtenir l'auto-complétion du mode CLI de Symfony.
Je tente, de cet article, de vous expliquer en quoi il est pratique, et comment l'installer sur votre serveur.&lt;/p&gt;    &lt;p&gt;Je pense que, pour toute personne qui utilise couramment symfony, une chose manque cruellement&amp;nbsp;: l'auto-complétion des commande Symfony.
J'entends par là l'auto-complétion du mode CLI de symfony. Fort heureusement, une solution existe.&lt;/p&gt;


&lt;h2&gt;Le mode CLI de Symfony&lt;/h2&gt;

&lt;p&gt;Symfony propose de faire énormément de chose en mode CLI&amp;nbsp;: du nettoyage complet du cache à la génération des classes métiers en passant par l'exécution des test unitaires.
Tout développeur Symfony connait, par exemple, la commande &quot;./symfony cache:clear&quot;, qui est à Symfony ce que le redémarrage du système est à Windows, à savoir la première chose à essayer quand ça ne marche pas.&lt;/p&gt;


&lt;p&gt;Ce CLI est, il faut le dire, une très bonne chose. Beaucoup de tâches sont ainsi simplifié au maximum.
Toutefois, appeler ces tâches est quelques fois fastidieux. Par exemple, si je viens de modifier mon schéma de base de données et que je veux reconstruire mon modèle et ma base, je doit taper la commande suivante&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
./symfony doctrine:buid-all-reload
&lt;/pre&gt;

&lt;p&gt;Bon, d'accord, cette commande n'existe plus depuis symfony 1.3, mais je prend cet exemple car je trouvais cette commande horrible a taper. C'est surement l'une des raisons pour lesquelles cette tâche est maintenant plus simple à appeler.&lt;/p&gt;


&lt;h2&gt;L'auto-complétion&lt;/h2&gt;

&lt;p&gt;Mais revenons à nous moutons, comme tout développeurs, je suis &lt;del&gt;fainéant&lt;/del&gt; à la recherche de la manière la plus rapide de travailler. Je voudrais donc d'une aide qui me permette de saisir cette commande plus rapidement.
Heureusement, une &lt;a href=&quot;http://github.com/biko2/symfony_complete&quot; hreflang=&quot;en&quot;&gt;superbe contribution&lt;/a&gt; permet cela&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Une fois le script installé (cf. paragraphe suivant), pour exécuter la commande décrite ci dessus, il me suffit d'écrire&lt;/p&gt;
&lt;pre&gt;
./s[tab] d[tab]b[tag]-r[tab]
&lt;/pre&gt;

&lt;p&gt;Soit 4 lettres et 4 tabulations.&lt;/p&gt;


&lt;p&gt;J'ai découvert ça ce jour, et je commence tous juste à l'utiliser, mais je trouve ça tout simplement génial&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;De plus, cerise sur le gateau&amp;nbsp;: ce script s'adapte à votre version de symfony. D'après ce que j'en ai compris, le script exécute la commande &quot;./symfony&quot; et en récupère les valeurs qui pourraient convenir. Il est donc déjà tout prêt pour toutes version de Symfony (j'ai testé 1.2, 1.3 et 1.4 avec succès)&lt;/p&gt;


&lt;h2&gt;Installation&lt;/h2&gt;

&lt;p&gt;Pour disposer du projet, comme l'indique le README sur le site, 2 manières qui dépendent des droits dont vous disposez&amp;nbsp;:&lt;/p&gt;


&lt;h3&gt;Installation pour un compte spécifique&lt;/h3&gt;

&lt;p&gt;Rendez-vous à la racine de votre compte, créez un répertoire &quot;.bash_completion&quot; dans lequel vous créerez un fichier &quot;symfony_complete&quot;&lt;/p&gt;
&lt;pre&gt;
cd ~
mkdir .bash_completion
cd .bash_completion
touch symfony_complete
&lt;/pre&gt;


&lt;p&gt;Editez ensuite ce fichier pour y mettre le &lt;a href=&quot;http://github.com/biko2/symfony_complete/blob/master/symfony_complete&quot;&gt;code suivant&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Editez votre fichier &quot;~/.bash_profile&quot; pour y ajouter les lignes suivantes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
if [ -e ~/.bash_completion/symfony_complete ]; then
  . ~/.bash_completion/symfony_complete
fi
&lt;/pre&gt;


&lt;p&gt;Pour que cette modification soit prise en compte, il vaut faut soit redémarrer la connexion à la console, soit taper la commande suivante&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
. ~/.bash_profile
&lt;/pre&gt;


&lt;h3&gt;Installation globale sur un serveur&lt;/h3&gt;

&lt;p&gt;Si vous disposez des droits root sur un serveur et que vous voulez donner ce droit à tout le monde, il suffit de suivre la même méthodologie, mais en se plaçant dans le dossier /etc et plus à la racine d'un compte.&lt;/p&gt;
&lt;pre&gt;
cd /etc
mkdir .bash_completion
cd .bash_completion
touch symfony_complete
&lt;/pre&gt;


&lt;p&gt;Editez ensuite ce fichier pour y mettre le &lt;a href=&quot;http://github.com/biko2/symfony_complete/blob/master/symfony_complete&quot;&gt;code suivant&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Editez le fichier &quot;/etc/.bashrc&quot; pour y ajouter les lignes suivantes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
if [ -e /etc/.bash_completion/symfony_complete ]; then
  . /etc/.bash_completion/symfony_complete
fi
&lt;/pre&gt;


&lt;p&gt;Pour que cette modification soit prise en compte, il vaut faut soit redémarrer la connexion à la console, soit taper la commande suivante&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
. /etc/.bashrc
&lt;/pre&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2010/03/01/Auto-completion-des-commandes-Symfony#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2010/03/01/Auto-completion-des-commandes-Symfony#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/13</wfw:commentRss>
      </item>
    
  <item>
    <title>Symfony 2 reloaded</title>
    <link>http://www.mikaelrandy.fr/post/2010/02/21/Symfony-2-reloaded</link>
    <guid isPermaLink="false">urn:md5:b0209b69b4bd7b63894a2c22cbe30b55</guid>
    <pubDate>Sun, 21 Feb 2010 22:48:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Symfony</category>
        <category>doctrine</category><category>symfony</category>    
    <description>&lt;p&gt;Ce mercredi 17 février 2010, en clôture du Symfony Live 2010, Fabien Potencier a présenté Symfony 2 qui porte le nom de code de &quot;&lt;a href=&quot;http://symfony-reloaded.org/&quot; hreflang=&quot;en&quot;&gt;Symfony reloaded&lt;/a&gt;&quot;.
En voici un retour en quelques points clés.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Vous ne trouverez dans cet article d'exemple de code, de description détaillées. J'ai rédigé cet article avec l'optique de vous donner envie d'en savoir plus et je vais donc me contenter de vous lister les points qui m'ont paru important&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;Profitant du &lt;a href=&quot;http://www.symfony-live.com/&quot; hreflang=&quot;en&quot;&gt;Symfony live 2010&lt;/a&gt;, Fabien Potencier a levé le voile sur la nouvelle version de son framework&amp;nbsp;: Symfony 2.0.&lt;/p&gt;


&lt;h2&gt;Symfony Reloaded&lt;/h2&gt;

&lt;p&gt;Fabien Potencier a décidé de donner un nom de code à cette nouvelle version, et pour cela, il a choisi le même principe que &lt;a href=&quot;http://fr.wikipedia.org/wiki/Matrix&quot; hreflang=&quot;fr&quot;&gt;Matrix&lt;/a&gt;.
Pour l'anecdote, &lt;a href=&quot;http://www.jwage.com/&quot; hreflang=&quot;en&quot;&gt;Jonathan Wage&lt;/a&gt; a même fait un trait d'humour pour savoir si Fabien avait déjà commencé le développement de Symfony Revolutions, en référence au 3ème opus du film Matrix.&lt;/p&gt;


&lt;p&gt;Outre l'effet de style, cela à permis de créer &lt;a href=&quot;http://symfony-reloaded.org/&quot; hreflang=&quot;en&quot;&gt;un nouveau site&lt;/a&gt; pour suivre le développement de cette nouvelle version de Symfony.&lt;/p&gt;


&lt;h2&gt;Une version alpha&lt;/h2&gt;

&lt;p&gt;Fabien Potenciera lourdement et fortement insisté sur un point&amp;nbsp;: Symfony 2 n'est pas, dans sa version actuelle, prêt pour être utilisé en production.
Symfony 2 est actuellement en version alpha, et est donc en conséquence instable et susceptible de changer du jour au lendemain.
Il est donc possible de l'utiliser pour se faire la main, prévoir les migrations, mais il ne faut pas l'utiliser pour un projet de production.&lt;/p&gt;


&lt;h2&gt;symfony est mort, vive Symfony&lt;/h2&gt;

&lt;p&gt;Contrairement à tout ce que je pensais jusque là, Symfony 2 représente une réelle rupture avec la branche 1.X.
Les différentes informations que Fabien Potencier a laissé filtrer lors de cette dernière années m'ont laisser penser que Symfony 2 serait Symfony 1 entièrement réécrit, et séparé en &lt;a href=&quot;http://www.mikaelrandy.fr/post/2010/02/21/composants&quot; hreflang=&quot;en&quot;&gt;http://components.symfony-project.org/&lt;/a&gt;. J'avais donc en tête que tout projet 1.X pourrait passer simplement vers Symfony 2.X.&lt;/p&gt;


&lt;p&gt;Avec Symfony 2, Fabien Potencier a voulu capitaliser sur les erreurs qui ont été faites avec Symfony 1, et a donc complétement revu sa copie, de 0, puisque presque tout change&amp;nbsp;:&lt;/p&gt;

&lt;h3&gt;PHP 5.3&lt;/h3&gt;

&lt;p&gt;Voulant profiter des dernières technologie, surtout quand cette dernière apporte des gains en termes de temps d'exécution et d'occupation qui se chiffrent à deux décimales, le coeur de framework est désormais entièrement codés pour PHP 5.3. Le principal intérêt est l'utilisation des namespaces, et c'est donc certainement la fin des classes sfWidgetFormInput, mais l'arrivée des /Symfony/Form/Widget/Input.&lt;/p&gt;


&lt;h3&gt;Configurabilité&lt;/h3&gt;

&lt;p&gt;La base de cette nouvelle branche, et c'est ce qui a été largement mis en avant lors de la présentation, c'est la possibilité de tout modifier dans le comportement de base du framework. Il est possible de choisir le nom des fichiers de configuration, leur format (XML, YAML, INI), leur localisation, ...
Bien entendu, la règle &quot;tant que c'est évident, le développeur ne devrait pas avoir à le faire&quot; est toujours de rigueur. Ainsi, lors de l'installation du projet, tout est déjà configuré, et tout fonctionne. Toutefois, et c'est LA grande nouveauté de Symfony 2, c'est qu'il est possible de modifier le comportement de base du framework.
Autre avantage du nouveau système de configuration&amp;nbsp;: l'inclusion de fichiers de configuration. Désormais, il est possible définir un fichier contenant des données susceptible d'être utilisée dans plusieurs fichiers de configuration (l'adresse IP du serveur, par exemple). Cela permet d'éviter de dupliquer les informations puisque, c'est bien connu, dupliquer des informations, c'est pas bien ;)&lt;/p&gt;


&lt;h3&gt;Architecture de projet&lt;/h3&gt;

&lt;p&gt;Pour la branche 1.X, symfony utilisait une architecture un peut complexe, mais bien détaillée, et dans laquelle chaque développeur Symfony pouvait se retrouver.
Out cette arborescence, puisque la nouvelle repose sur 3 dossiers&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt; * app
 * src
 * web&lt;/pre&gt;

&lt;p&gt;N'ayant pas encore pris le temps d'utiliser cette nouvelle version, je ne me prononcerais pas encore sur ce que contient chaque dossier, et si cela change de manière positive ou pas.&lt;/p&gt;


&lt;h3&gt;Tout est bundle&lt;/h3&gt;

&lt;p&gt;Avec Symfony 1, il existait 3 notions différentes&amp;nbsp;: les sections du cœur du framework, les sections d'une application, et les plugins.
Désormais, ces 3 notions sont regroupées sous un seul terme&amp;nbsp;: les bundles.
En effet, les codes qui se trouvent dans tout ces endroits ont une seule optique&amp;nbsp;: être exécutée dans l'application. Avec l'approche Symfony 1, il était toujours plus ou moins compliqué de surcharger des codes du coeur ou des plugin.
Désormais, tout change avec les bundles. De base, nous pourrions commencer par comparer les bundles et les plugins. En effet, les bundles peuvent contenir des templates, des contrôleurs, des classes métiers ... en un mot, tout ce qui est nécessaire à l'exécution d'un module. Comme vous le savez surement, il est assez simple de surcharger tout ou partie du fonctionnement d'un plugin depuis une application. De même, il est très simple d'activer tout ou partie d'un plugin dans différentes applications d'un projet.
Rassemblement de code, extensibilité, confgurabilité. Je viens de lister les raisons de tout rassembler sous la notions de bundle. En effet, comme le coeur de Symfony, les plugins et les applications sont composés de bundle, tout est mieux organisé et beaucoup plus facilement extensible.&lt;/p&gt;


&lt;p&gt;L'ordre d'inclusion d'un plugin est simple&amp;nbsp;: Coeur &amp;lt; Bundle &amp;lt; Application. Cela signifie que, depuis un bundle, il est possible de surcharger tout ou partie du coeur de symfony, et depuis une application, il est possible de surcharger le coeur, ou les bundles, même si ceux si surchargent déjà le comportement du coeur.&lt;/p&gt;


&lt;h3&gt;Doctrine 2&lt;/h3&gt;

&lt;p&gt;Symfony et les ORM, c'est une grande histoire.
A l'origine, l'ORM PHP le plus performant, lors de la sortie de la branche symfony 1.0 était Propel. Puis Doctrine est sorti, qui semblait plus prometteur (et plus vivant) que Propel. Du coup, bien que Propel reste l'ORM par défaut, Doctrine a été ajouté dans le coeur de Symfony. Puis, avec Symfony 1.2, Doctrine est devenu l'ORM par défaut, Propel étant encore inclu par défaut dans le coeur de symfony.
L'année dernière, lors du Symfony Live 2009, Fabien Potencier nous avait fait part de son scepticisme à continuer à maintenir 2 ORM, puisque cela scinde la communauté en 2. Cela se voit pour les plugins, puisque nous nous privons de plugins puisqu'ils n'ont pas été développés pour &quot;notre&quot; ORM.&lt;/p&gt;


&lt;p&gt;Ainsi, cela a été décidé, seul Doctrine sera présent dans le coeur de Symfony 2 (un bundle proposant un Propel sera certainement rapidement proposé, mais cela va marginaliser les utilisateurs de Propel, et forcer les nouveaux utilisateurs vers Doctrine).
De plus, toujours dans l'optique d'utiliser les dernières évolutions possibles,  c'est la future branche 2 de Doctrine qui sera utilisée.&lt;/p&gt;


&lt;h2&gt;Disponibilité&lt;/h2&gt;

&lt;p&gt;La date de sortie de la 1ère version stable de la branche 2.X est prévue pour la fin de l'année 2010. Doctrine 2, quand a lui, est prévu pour le début de l'année 2011.
Je pense donc qu'il faille s'attendre à une réelle sortie officielle dans ces eaux là, tout en gardant en tête que Doctrine sera bloquant pour Symfony, et que je ne pense pas qu'il soit judicieux de releaser Symfony 2 avant que Doctrine 2 soit en version stable.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2010/02/21/Symfony-2-reloaded#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2010/02/21/Symfony-2-reloaded#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/12</wfw:commentRss>
      </item>
    
  <item>
    <title>Créer une classe parent pour tout le modèle avec Doctrine</title>
    <link>http://www.mikaelrandy.fr/post/2010/01/29/Creer-une-classe-parent-pour-tout-le-modele-avec-Doctrine</link>
    <guid isPermaLink="false">urn:md5:30a648c962a85d835f94b60b50bdb756</guid>
    <pubDate>Fri, 29 Jan 2010 14:12:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Symfony</category>
        <category>doctrine</category><category>php</category><category>symfony</category>    
    <description>    &lt;p&gt;Pour qui a déjà utilisé Doctrine de manière un tant soit peu avancé, une problématique a dû se poser à un moment où à un autre&amp;nbsp;: &lt;strong&gt;Comment faire pour définir un comportement pour tout mon modèle ?&lt;/strong&gt;&lt;br /&gt;
Dernièrement, j'ai voulu mettre en place un système loguant toutes les suppressions, pour des besoins de tracabilité. La solution la plus simple me semblait être de pouvoir surcharger la méthode de suppression générique au niveau de mon projet.&lt;/p&gt;


&lt;p&gt;Or, lorsque l'on regarde d'un peu plus près l'arborescence de classe généré par Doctrine, on peut se rendre compte qu'il manque d'une classe générique à tout le modèle, au niveau du projet et qui permettrait de faire ce que je cherchais à faire.&lt;/p&gt;


&lt;h2&gt;Le fonctionnement de base de Doctrine&lt;/h2&gt;

&lt;p&gt;Doctrine gère 2 types de classes, qui ont chacune une arborescence bien spécifique&amp;nbsp;: les &lt;strong&gt;classes de tables&lt;/strong&gt; et les &lt;strong&gt;classes d'entités&lt;/strong&gt;.&lt;br /&gt;
Les classes de tables permettent de gérer les collections, c'est à dire les groupes d'enregistrements&lt;br /&gt;
Les classes d'entités permettent la gestion des unités, c'est à dire chaque enregistrement indépendamment.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Si votre projet nécessite la présence, par exemple, de 2 tables&amp;nbsp;: &quot;User&quot; et &quot;Right&quot;, Doctrine va générer l'arborescence de classe suivante&amp;nbsp;:
&lt;a href=&quot;http://www.mikaelrandy.fr/public/doctrine-diagrame_model_1.png&quot;&gt;&lt;img src=&quot;http://www.mikaelrandy.fr/public/./.doctrine-diagrame_model_1_t.jpg&quot; alt=&quot;doctrine-diagrame_model_1.png&quot; title=&quot;doctrine-diagrame_model_1.png, jan 2010&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Comme on peut le remarquer, toutes les classes qui se trouvent dans le projet sont gérées indépendamment, et la 1ère classe générique se trouve au niveau du coeur de symfony. Dans le sfDoctrinePlugin, pour être précis.&lt;/p&gt;


&lt;h2&gt;Ajouter un niveau de classe avec Doctrine&lt;/h2&gt;

&lt;p&gt;Afin de pouvoir disposer d'un niveau de classe supplémentaire, au niveau du projet, il est possible de configurer Doctrine pour que les classes &quot;Base&quot; et &quot;BaseTable&quot; héritent d'autres tables que celles par défaut (respectivement sfDoctrineRecord et Doctrine_Table).&lt;br /&gt;
Pour agir sur la configuration de Doctrine, il vous faut éditer le fichier &quot;config/ProjectConfiguration.class.php&quot; comme suit&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;php&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;class&lt;/span&gt; ProjectConfiguration &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;extends&lt;/span&gt; sfProjectConfiguration
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; setup&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// custom builder options for doctrine&lt;/span&gt;
    sfConfig&lt;span style=&quot;color: #66cc66;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'doctrine_model_builder_options'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;
      &lt;span style=&quot;color: #ff0000;&quot;&gt;'baseTableClassName'&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;'MyDoctrineTable'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt;
      &lt;span style=&quot;color: #ff0000;&quot;&gt;'baseClassName'&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;'MyDoctrineRecord'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Ainsi, avec ces configurations, on demande à Doctrine de faire en sorte que toutes les classes &quot;Base&quot; héritent de la classe &quot;MyDoctrineRecord&quot; et que les classes &quot;BaseTable&quot; héritent de la classe &quot;MyDoctrineTable&quot;, comme illustré dans l'exemple suivant&amp;nbsp;:
&lt;a href=&quot;http://www.mikaelrandy.fr/public/doctrine-diagrame_model_2.png&quot;&gt;&lt;img src=&quot;http://www.mikaelrandy.fr/public/./.doctrine-diagrame_model_2_t.jpg&quot; alt=&quot;doctrine-diagrame_model_2.png&quot; title=&quot;doctrine-diagrame_model_2.png, jan 2010&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Ces classes là doivent bien entendu elles même se remettre dans l'arborescence de classe.&lt;br /&gt;
Les squelettes de base de ces classes doivent donc être les suivants&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;php&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;class&lt;/span&gt; MyDoctrineTable &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;extends&lt;/span&gt; Doctrine_Table
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// ...&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;class&lt;/span&gt; MyDoctrineRecord &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;extends&lt;/span&gt; sfDoctrineRecord
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// ...&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;A partir de là, il suffit de régénérer le modèle pour que la nouvelle arborescence soit disponible&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
symfony doctrine:build-model
&lt;/pre&gt;

&lt;p&gt;Et, de cette manière, il est donc possible d'agir sur toutes les opérations réalisées par le modèle depuis ces classes.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2010/01/29/Creer-une-classe-parent-pour-tout-le-modele-avec-Doctrine#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2010/01/29/Creer-une-classe-parent-pour-tout-le-modele-avec-Doctrine#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/11</wfw:commentRss>
      </item>
    
  <item>
    <title>Enregistrer une collection d'objet, avec contrôle de fonctionnement</title>
    <link>http://www.mikaelrandy.fr/post/2009/12/22/Enregistrer-une-collection-d-objet-avec-controle-de-fonctionnement</link>
    <guid isPermaLink="false">urn:md5:ae8678a80e2e119a5838507395316fe8</guid>
    <pubDate>Tue, 22 Dec 2009 14:37:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Symfony</category>
        <category>doctrine</category><category>symfony</category>    
    <description>    &lt;p&gt;Ce jour, un de mes développeurs a fait une découverte sympathique sur Doctrine.&lt;/p&gt;


&lt;p&gt;Le besoin de base était le suivant&amp;nbsp;:
On manipule une liste d'objet (création, affectation de contenu) dans l'optique de les sauvegarder.&lt;/p&gt;


&lt;p&gt;La syntaxe que nous tout un chacun est tenté de faire est la suivante&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;php&quot;&gt;try
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Item&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;setValue&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;save&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; catch &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;sfException &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;An error occurs while data saving&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Or, le soucis, avec cette méthode, c'est que si une erreur intervient au cours de la sauvegarde, par exemple, pour l'item n°5, eh bien en base, nous aurons les items correctement enregistrée (entre 0 et 4), mais il manquera la fin (de 5 à 9).&lt;/p&gt;


&lt;p&gt;La solution est simple, me direz vous, il suffit d'ouvrir une transaction avant, et de la fermer après. Eh bien oui, vous avez raison, mais j'ai trouvé encore plus élégant&amp;nbsp;: les collections Doctrine (Doctrine_Collection).
Si vous êtes un habitué de Doctrine, vous avez déjà croisé cette classe puisque Doctrine remplace les tableaux par des instances de celle-ci.&lt;/p&gt;


&lt;p&gt;Toujours est-il que l'équivalent du code précédent, mais en prenant en compte la transaction, et en utilisant les Doctrine_Collection est le code suivant&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;php&quot;&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$items&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Doctrine_Collection&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'Item'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;'id'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
try
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Item&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;setValue&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'value ok'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$i&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;setValue&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'error value'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// Add item into Doctrine_Collection&lt;/span&gt;
    &lt;span style=&quot;color: #ff0000&quot;&gt;$items&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// Save collection content, in a SQL transaction&lt;/span&gt;
  &lt;span style=&quot;color: #ff0000&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;save&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; catch &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;sfException &lt;span style=&quot;color: #ff0000&quot;&gt;$e&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;An error occurs while data saving&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Je trouve ça tellement plus pratique et élégant que je suis tombé sous le charme de cette méthode.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2009/12/22/Enregistrer-une-collection-d-objet-avec-controle-de-fonctionnement#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2009/12/22/Enregistrer-une-collection-d-objet-avec-controle-de-fonctionnement#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/9</wfw:commentRss>
      </item>
    
  <item>
    <title>Reprise du site</title>
    <link>http://www.mikaelrandy.fr/post/2009/11/26/Reprise-du-site</link>
    <guid isPermaLink="false">urn:md5:53d7b482a521c1e49999db7931c492e3</guid>
    <pubDate>Thu, 26 Nov 2009 22:09:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>General</category>
        <category>general</category>    
    <description>    &lt;p&gt;Bonjour à tous,&lt;/p&gt;


&lt;p&gt;Me voici de retour pour un énième démarrage.&lt;/p&gt;



&lt;p&gt;Cette fois-ci, je compte bien être plus présent ici pour mettre sur ce site un petit peu tous ce qui me passe pas la tête.&lt;/p&gt;


&lt;p&gt;J'entends au fond de la salle qu'on me demande combien de temps je vais tenir cette fois ci. Eh bien je vous avouerais sincèrement que je n'en sais rien ...&lt;/p&gt;


&lt;p&gt;L'exercice de blogger est nouveau pour moi. Je suis friant de lecture de pas mal de blog, mais je ne me suis encore jamais rompu à l'exercice de maintenir mon propre site d'actualité. Du coup, je vais tout d'abord me lancer pour quelques temps, avant de voir si je me laisse entrainer ou pas dans l'aventure.&lt;/p&gt;


&lt;p&gt;Une autre inconnue risque d'être la popularité de ce site. Tant que j'écrirais dans le vent, la motivation s'émèchera vite, et j'espère donc que ce site trouvera son public.&lt;/p&gt;



&lt;p&gt;Et puisque nous en sommes à parler de public, il y a surement une question que vous vous êtes posés en arrivant sur ce site&amp;nbsp;: &quot;de quoi parle-t-il ?&quot;&lt;/p&gt;


&lt;p&gt;Jusque là, je n'était pas tout à fait tranché, mais maintenant, je sais&amp;nbsp;! Je compte utiliser ce support pour mettre toutes les astuces techniques, les tutos intéressants, les découvertes que je fait au cours de mon travail de responsable technique pour une SSII lyonnaise (&lt;a href=&quot;http://www.prestaconcept.net&quot;&gt;Prestaconcept&lt;/a&gt;).&lt;/p&gt;


&lt;p&gt;Je pense que le fil rouge de mes articles sera symfony, puisque c'est lui qui m'occupe la plupart du temps, mais nous aurons aussi Ubuntu (ma distribution Linux préférée), Apple (iPhone, Ordinateur portable), Shell et autres joyeusetés.&lt;/p&gt;



&lt;p&gt;Il ne me reste donc plus qu'à acquérir le réflexe de prévoir un article ici pour les découvertes importantes que je peux faire au quotidien, et de prendre le temps de rédiger de beaux articles pour vous donner envie de les lires ;)&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2009/11/26/Reprise-du-site#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2009/11/26/Reprise-du-site#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/8</wfw:commentRss>
      </item>
    
  <item>
    <title>Ubuntu sur Sun VirtualBox</title>
    <link>http://www.mikaelrandy.fr/post/2009/06/16/Ubuntu-sur-Sun-VirtualBox</link>
    <guid isPermaLink="false">urn:md5:f0122f73ca6237f59f85bd4f46909290</guid>
    <pubDate>Tue, 16 Jun 2009 22:28:00 +0100</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Ubuntu</category>
        <category>machine virtuelle</category><category>ubuntu</category>    
    <description>    &lt;p&gt;Aujourd'hui, lassé par les incessants aller/retour entre mon boot Windows XP et mon boot Ubuntu (mademoiselle ma chérie ne veut pas essayer Ubuntu :@ ), je me suis lancé dans une nouvelle aventure&amp;nbsp;: l'installation d'Ubuntu 9.04 &quot;Jaunty Jackalope&quot; sur une machine virtuelle, dont le support sur mon XP est assuré par &lt;a href=&quot;http://www.virtualbox.org/&quot; hreflang=&quot;fr&quot;&gt;Sun VirtualBox&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Bon, il faut bien que j'avoue que j'ai été poussé vers cette solution par le fait que la mise à jour de 8.10 à 9.04 ai planté mon serveur X, visiblement un problème de compatibilité des drivers de ma carte graphique NVidia. Je n'ai pas cherché plus loin, cette excuse a juste été le déclencheur d'un truc que je voulais faire depuis longtemps.&lt;/p&gt;


&lt;p&gt;Je doit tout de même avouer que VirtualBox est très bien fait, il est très graphique, trés ergonomique. Du coup, il est très simple de mettre en place, configurer et utiliser les machines virtuelles.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2009/06/16/Ubuntu-sur-Sun-VirtualBox#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2009/06/16/Ubuntu-sur-Sun-VirtualBox#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/7</wfw:commentRss>
      </item>
    
  <item>
    <title>Loi &quot;Création et Internet&quot; : le backout du net</title>
    <link>http://www.mikaelrandy.fr/post/2009/03/06/Loi-Creation-et-Internet-le-backout-du-net</link>
    <guid isPermaLink="false">urn:md5:aef9ef69adcba4a32194b564122d5f29</guid>
    <pubDate>Fri, 06 Mar 2009 08:52:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Tout le reste</category>
        <category>general</category><category>hadopi</category>    
    <description>&lt;p&gt;La quadrature du net lance une opération &quot;Blackout sur le net français&quot; pour dénnoncer le projet de loi &quot;Création et Internet&quot;&lt;/p&gt;    &lt;p&gt;&amp;lt;a href=&quot;http://www.laquadrature.net/HADOPI&quot; title=&quot;HADOPI - Le Net en France&amp;nbsp;: black-out&quot;&amp;gt;&amp;lt;img src=&quot;http://media.laquadrature.net/Quadrature_black-out_HADOPI_728x90px.gif&quot; border=&quot;0&quot; alt=&quot;HADOPI - Le Net en France&amp;nbsp;: black-out&quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;/p&gt;


&lt;p&gt;Comme vous le savez peut-être, la réponse que le gouvernement Fillon au piratage des oeuvres phonographiques en France est la fameuse loi &quot;Création et Internet&quot;, dont je ne représenterais pas le contenu ici, tellement il est facile de trouver des descriptions.&lt;/p&gt;


&lt;h2&gt;Le projet de loi&lt;/h2&gt;

&lt;p&gt;Dans ce projet de loi, il y a plusieurs choses qui me dérangent énormément&amp;nbsp;:
&lt;strong&gt;Détection par l'IP&lt;/strong&gt;
Le moyen de confondre une personne est son adresse IP. Avec le protocole IPv4, il est impossible de définir précisemment une machine avec une IP, et une machine n'est pas forcément égale à une seule personne.
De plus, il existe déjà des solutions de P2P qui changent les adresses IP.&lt;/p&gt;


&lt;p&gt;Le fondement technique de cette mesure est donc déjà completement inadaptée et il y aura très fréquemment des erreurs, comme l'angleterre a déjà pu nous donner des exemples.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Filtrage par les FAI&lt;/strong&gt;
L'un des points imposés de cette mesure est l'obligation pour les FAI de mettre en place un énorme système de filtrage pour tout controler.
Sur ce point, ce qui me gène, c'est l'énorme atteinte aux libertés fondamentales de chacun.
Le Net repose sur la libre circulation de l'information et nous cherchons à aller à l'encontre de cette logique.&lt;/p&gt;


&lt;p&gt;Je pense qu'au début, nous aurons droit à une liste d'exclusion des sites les plus connus. Puis, lorsqu'ils se rendront compte qu'il y a énormément de petits sites et que la black-list sera difficile à maintenir, nous aurons droit à une white-list, ce qui est vraiment innacceptable, puisque tout nouveau site devra demander l'authorisation de pouvoir être accessible.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Entité de vérification&lt;/strong&gt;
L'entité qui aura à sa charge la vérification des infractions aura le pouvoir, après 2 avertissements, de couper la ligne internet d'un foyer.
Il me semblait qu'en France, seul un tribunal avait ce pouvoir, mais il semble que nous allions à l'encontre de ce basement de la république Française.&lt;/p&gt;


&lt;h2&gt;La quadrature du net&lt;/h2&gt;

&lt;p&gt;Derrière ce titre qui peut parraitre obscure pour beaucoup de monde, ce cache un jeu de mot.
La quadrature du net est un clin d'oeil à la quadrature du cercle (chercher une règle qui permet de définir un carré de surface égale à un cercle, ce qui est tout simplement impossible), indiquant que le gouvernement s'attaque à un problème très compliqué, voir impossible à résoudre.&lt;/p&gt;


&lt;p&gt;Cette association a lancé une opération &quot;marketing&quot; sur le net pour dénoncer l'ensemble de cette mesure&amp;nbsp;: http://www.laquadrature.net/fr/APPEL-HADOPI-blackout-du-net-francais&lt;/p&gt;


&lt;p&gt;Je vous invite donc tous à remplacer vos avatars, signatures, à mettre en place des bannières pour montrer que le Net francais est contre cette mesure.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2009/03/06/Loi-Creation-et-Internet-le-backout-du-net#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2009/03/06/Loi-Creation-et-Internet-le-backout-du-net#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/5</wfw:commentRss>
      </item>
    
  <item>
    <title>De l'humour au quotidien</title>
    <link>http://www.mikaelrandy.fr/post/2009/02/27/De-l-humour-au-quotidien</link>
    <guid isPermaLink="false">urn:md5:6d2891d8774c879b8c3a2a0e76bdff32</guid>
    <pubDate>Fri, 27 Feb 2009 15:30:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Tout le reste</category>
        <category>general</category><category>humour</category>    
    <description>    &lt;p&gt;De retour après 8 mois de silence absolu, je profite de ce jour de fin de semaine où je me rappelle de l'existence de ce blog pour écrire un petit article qui sort un peu de l'informatique.&lt;/p&gt;


&lt;p&gt;Donc, voilà, j'aime bien rire, et j'aime bien commencer mes journées de travail par une notre légère. J'ai, dans cet état d'esprit, trouvé 2 humoristes aux profils très différents mais dont j'aime beaucoup le style&amp;nbsp;: &lt;a href=&quot;http://www.snut.fr&quot; hreflang=&quot;fr&quot;&gt;Snut&lt;/a&gt; et &lt;a href=&quot;http://www.labandepasdessinee.com/bpd/&quot;&gt;Navo&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;Snut&lt;/h2&gt;

&lt;p&gt;Il s'agit d'un humoriste caricaturiste que j'aime beaucoup pour plusieurs raisons&amp;nbsp;: il fait très souvent mouche là où le bât blesse, et ça, j'adore. Dans ce monde où il est plus important que plaire que d'être efficace, donc de toujours faire en sorte de montrer le bon côté de ce que l'on fait, que certains s'acharne à montrer &quot;l'autre côté&quot; me ravi.
Il s'agit d'un artiste que j'ai vu naître (je pense être l'un de ces 1er lecteurs, même si le flux RSS aidant, je ne me rend que rarement sur le site pour poster un commentaire), que je trouve très très proche de ses lecteurs puisqu'a chaque variation de style (crayonné, couleur, ...) il demande l'avis à son lectorat et prend en compte les avis tout en se justifiant.
Je pense qu'il ira très loin, puisque parti d'un petit blog, il a par la suite été invité à dessiner pour différents journaux, mais il entretiens une relation privilégiée avec PCImpact.&lt;/p&gt;


&lt;h2&gt;Navo&lt;/h2&gt;

&lt;p&gt;Navo est son pseudo, mais son oeuvre se nomme la &quot;&lt;a href=&quot;http://www.labandepasdessinee.com/bpd/&quot;&gt;bande pas dessinée&lt;/a&gt;&quot;, un concept de bande dessinée qui ne contient que les textes.
Ce concept permet donc des BD courte (3 bulles) chic et choc.&lt;/p&gt;


&lt;p&gt;Je ne sais pas d'où il tire son inspiration, surement de sa vie privée (si c'est le cas, il va falloir arreter les photos de charmes et les films classés X), mais la grosse majorité de ses créations me font mourir de rire.
Voici 2 exemples de BD qui m'ont tout particulièrement plu&amp;nbsp;:
&lt;img src=&quot;http://www.labandepasdessinee.com/bpd/images/saison2/4-Oiseaux.jpg&quot; alt=&quot;&quot; /&gt;
J'adore cet humour, n'est-ce pas flo&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.labandepasdessinee.com/bpd/images/saison2/10-Popularite.jpg&quot; alt=&quot;&quot; /&gt;
A replacer dans le contexte politique, à savoir que Sarko, quelques jours avant avait &quot;égaré&quot; un reportage photo de lui aux états-unis passant de superbes vancances pendant que la grogne commencait à monter en France.&lt;/p&gt;



&lt;p&gt;Je suis abonné aux flux RSS de ces 2 petits gars tout plein d'avenir et je peut vous assurer que même le jour où j'ai bossé jusqu'à 3h et que je n'ai dormis que 4h, je retrouve la pêche après avoir lu mes flux RSS.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2009/02/27/De-l-humour-au-quotidien#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2009/02/27/De-l-humour-au-quotidien#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/4</wfw:commentRss>
      </item>
    
  <item>
    <title>Firefox 3 : 8.002.530 téléchargement en 24h ; 10% en 3 semaines</title>
    <link>http://www.mikaelrandy.fr/post/2008/07/03/3-firefox-3-8002530-telechargement-en-24h-10-en-3-semaines</link>
    <guid isPermaLink="false">urn:md5:32bef84838254b08b34e8b7a4d58f1fe</guid>
    <pubDate>Thu, 03 Jul 2008 15:07:55 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Le reste de l'informatique</category>
        <category>firefox</category>    
    <description>    &lt;p&gt;Le 18 juin 2008, Mozilla sortait la dernière mouture de son produit phare, Firefox, 3ème du nom.&lt;/p&gt;


&lt;p&gt;La technique de promotion qu'aura décidé de mettre en place la compagnie Mozilla est de lancer une tentative de record du monde du nombre de téléchargements en 24h. Outre gratter dans le sens du poil les millions de Mozilliens (dont je fais à moitié parti), je pense que cette annonce n'est aucunement une réelle tentative de record du monde, mais un moyen retentissant d'annoncer la sortie de FF3 et de pousser les plus fervents utilisateurs de convaincre les moins fervents de changer de version.&lt;/p&gt;


&lt;p&gt;Aujourd'hui, le chiffre officiel est sorti&amp;nbsp;: 8.002.530 téléchargements sur une durée étalée sur 24h.&lt;/p&gt;


&lt;p&gt;Parallèlement, quelques chiffres de l'implémentation de Firefox dans le paysage des navigateurs sont sortis&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parts de marché en Europe (mai 2008)&amp;nbsp;: &amp;gt;30%&lt;/li&gt;
&lt;li&gt;Parts de marché dans le monde (03 juillet 2009)&amp;nbsp;: 19% contre 14.5 il y a un an&lt;/li&gt;
&lt;li&gt;Parts de marché de Firefox 3 en Europe&amp;nbsp;: 10%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Concernant mon analyse sur le produit, je le trouve bien évidemment beaucoup plus abouti que la précédente version (ne serait-ce que pour l'utilisation mémoire), mais je trouve qu'il n'y a rien de révolutionnaire dans les idées implémentées sachant que d'autres, dont Opéra, les utilisent déjà. Dans cette liste, je trouve&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la barre d'url intelligente qui, à la frappe, propose les liens dont l'url, le titre de la page ou les mots clés contiennent les mots tapés.&lt;/li&gt;
&lt;li&gt;le système de téléchargement indépendant qui permet d'éteindre le navigateur et de reprendre les téléchargements, d'arrêter ou de reprendre les téléchargements, de recommencer un téléchargement terminé ou encore de rechercher dans les téléchargements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enfin bref, beaucoup de foin, énormément de modifications, mais rien de révolutionnaire selon moi.
J’attends maintenant de voir si Microsoft va suivre le mouvement, et qu'on pourra commencer à voir des navigateurs de qualités pour tous.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://joi.ito.com/Firefox-logo.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2008/07/03/3-firefox-3-8002530-telechargement-en-24h-10-en-3-semaines#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2008/07/03/3-firefox-3-8002530-telechargement-en-24h-10-en-3-semaines#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/3</wfw:commentRss>
      </item>
    
  <item>
    <title>Conférence AFUP du 03 avril 2008</title>
    <link>http://www.mikaelrandy.fr/post/2008/04/03/2-conference-afup-du-03-avril-2008</link>
    <guid isPermaLink="false">urn:md5:2bf640cac3634be48b99af9c11fce100</guid>
    <pubDate>Thu, 03 Apr 2008 23:44:00 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>Le reste de l'informatique</category>
        <category>afup</category><category>php</category>    
    <description>&lt;p&gt;Le 3 avril 2008 s'est tenue une conférence AFUP à Lyon, portant sur les apports de PHP6 et sur les architectures matérielles&lt;/p&gt;    &lt;p&gt;&lt;img src=&quot;http://www.mikaelrandy.fr/images/logo_afup-01.png&quot; alt=&quot;&quot; /&gt;
Aujourd'hui, pour la 1ère fois, je me suis rendu à une conférence de l'AFUP. Il faut dire qu'ils ne se déplacent pas non plus tout les jours à Lyon, et que je n'ose pas demander à mon boss s'il me financerais le voyage jusqu'à Paris pour ce genre de conférence.&lt;br /&gt;
&lt;br /&gt;
Eh bien je doit dire que j'en reviens ravi&amp;nbsp;: le lieu était bien sympa puisque nous étions au café-livre, un bar/bibliothèque installé dans une cave dont les voutes en pierres sont magnifiques. Il y fait juste un peu froid.&lt;br /&gt;
&lt;br /&gt;
Concernant la conférence, j'ai appris pas mal de truc sur PHP 6, mais je retiens principalement quelques notions. &lt;strong&gt;LE&lt;/strong&gt; énorme avantage de PHP tiens en 1 mot&amp;nbsp;: Unicode.&lt;br /&gt;
Avec Unicode, il est permis de stocker tout type de chaîne, de n'importe quel encodage sans se soucier de gérer ces encodages.
par exemple, testons le code suivant :&lt;br /&gt;
&lt;code&gt;$foo = &quot;déjà&quot;; echo strlen($foo);&lt;/code&gt;&lt;br /&gt;
En PHP5, ce code affiche &quot;6&quot; car les accents sont codés sur 2 octets et que la fonction strlen() compte un caractère par octet, comme indiqué dans l'encodage ISO-8859-1.&lt;br /&gt;
Or, en PHP6, cela affichera &quot;4&quot;, qui correspond au nombre de caractères contenus dans la chaine. Voyez-vous apparaitre les avantages ?&lt;br /&gt;
Là où je suis moins d'accord, c'est que le langage en lui même est également encode-free, il est donc possible de code en japonais ou d'écrire &lt;code&gt;$déjà = null&lt;/code&gt;&lt;br /&gt;
et, c'est moins cool quand on pense à l'outsourcing dans les pays asiatiques. Il va falloir nous prévoir une traduction de source PHP avec PHP6.&lt;br /&gt;
&lt;br /&gt;
Au chapitre des nouveautés, on voit également (enfin) disparaitre register_global, safe_mode et consort&lt;br /&gt;
&lt;br /&gt;
Sinon, ce que j'attendais le plus de PHP6, à savoir les espaces de noms ou namespace (dans la langue de Shakespeare) n'ont pas été abordés, puisque ajouté dans la version 5.3.&lt;br /&gt;
&lt;br /&gt;
Mon sentiment est donc que le passage à PHP 5.3 sera beaucoup plus intéressant que le passage à PHP6. En effet, ceux qui utiliserons rapidement PHP 5.3 sont ceux qui seront prêt à passer à PHP6 et les plus frileux ne changerons leur PHP4 qu'une fois le 6 éprouvé.&lt;br /&gt;
Attendons donc avec impatience cette version 5.3 qui devrait sortir sous peu.&lt;br /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.mikaelrandy.fr/post/2008/04/03/2-conference-afup-du-03-avril-2008#comment-form</comments>
      <wfw:comment>http://www.mikaelrandy.fr/post/2008/04/03/2-conference-afup-du-03-avril-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://www.mikaelrandy.fr/feed/rss2/comments/2</wfw:commentRss>
      </item>
    
  <item>
    <title>Ouverture du site</title>
    <link>http://www.mikaelrandy.fr/post/2008/03/21/1-first-post</link>
    <guid isPermaLink="false">urn:md5:19a43923c3c587ea206c625148c70f77</guid>
    <pubDate>Fri, 21 Mar 2008 16:02:45 +0000</pubDate>
    <dc:creator>Mikael Randy</dc:creator>
        <category>General</category>
        <category>general</category>    
    <description>    &lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Comme vous pouvez le constater, mon site viens d'ouvrir ses portes.&lt;/p&gt;
&lt;p&gt; Il se sera passé 1 an entre l'ouverture de l'hébergement et l'achat du nom de domaine. Il aura fallu quelques 8 mois supplémentaires pour que je me décide enfin à installer un dotclear.&lt;/p&gt;
&lt;p&gt;Comme il s'agit de ma 1ère expérience avec un dotclear, ne vous étonnez pas de voir le site évoluer régulièrement, car je compte le personnaliser. Ma 1ère intervention sera vraisemblablement la création d'un template &quot;made by moi&quot;.&lt;/p&gt;
&lt;p&gt;Je ne vous en dit pas plus, comme ça, vous serez obligé de revenir ;) &lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>