<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>benjamin caubere</title>
	<atom:link href="http://bencaubere.com/feed" rel="self" type="application/rss+xml" />
	<link>http://bencaubere.com</link>
	<description>développeur designer saccageur</description>
	<lastBuildDate>Thu, 26 Jan 2012 23:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>PHP5 Indirect modification of overloaded property</title>
		<link>http://bencaubere.com/developpement/php/php5-indirect-modification-of-overloaded-property.html</link>
		<comments>http://bencaubere.com/developpement/php/php5-indirect-modification-of-overloaded-property.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 13:53:49 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://bencaubere.com/?p=60</guid>
		<description><![CDATA[Récemment en travaillant sur un projet symfony(framework php sur lequel le php5 est stricte), j&#8217;ai fait face a un Notice que je n&#8217;avais jamais rencontré auparavant. Comme nombreux Notices ce dernier finit par faire planter l&#8217;application: Indirect modification  of overloaded  property Après quelques recherches sur la toile j&#8217;ai compris que cela avait bien un rapport [...]]]></description>
			<content:encoded><![CDATA[<p>Récemment en travaillant sur un projet symfony(framework php sur lequel le php5 est stricte), j&#8217;ai fait face a un Notice que je n&#8217;avais jamais rencontré auparavant. Comme nombreux Notices ce dernier finit par faire planter l&#8217;application:</p>
<p><strong>Indirect modification  of overloaded  property</strong></p>
<p>Après quelques recherches sur la toile j&#8217;ai compris que cela avait bien un rapport avec le php5 strict de symfony.</p>
<p><span id="more-60"></span>En effet en php5 les propriétés d&#8217;un objet sont censées être récupérées par la méthode __get et définies par la méthode __set.</p>
<p>Le problème que j&#8217;ai rencontré était lorsque je définissait des tableaux multidimensionnel depuis une fonction :</p>
<pre><code>class maClass{
...

function maFunction(){

$this-&gt;Prop[$index1][index2][index3]=$valeur;

}

...

}
</code>
</pre>
<p>Au final la variable n&#8217;était pas définie.<br />
Une manière de palier a ce problème est de définir la variable en deux étapes, dans un premier temps on définit une variable temporaire, puis une fois la variable temporaire définie on peut l&#8217;attribuer a la propriété de notre objet.</p>
<pre><code>class maClass{
...

function maFunction(){

$temporaryVar[$index1][index2][index3]=$valeur;
$this-&gt;Prop=$temporaryVar;

}

...

}
</code>
</pre>
<p>Comme vous pouvez l&#8217;imaginer cette méthode doit utiliser plus de mémoire puisque vous créez deux variables identiques.<br />
Donc considérez cela comme un bout de scotch plus que comme une solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://bencaubere.com/developpement/php/php5-indirect-modification-of-overloaded-property.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Optimiser son site flash pour le SEO</title>
		<link>http://bencaubere.com/developpement/flash/optimisation-seo-site-flash.html</link>
		<comments>http://bencaubere.com/developpement/flash/optimisation-seo-site-flash.html#comments</comments>
		<pubDate>Sat, 20 Mar 2010 19:02:59 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://bencaubere.com/?p=45</guid>
		<description><![CDATA[Au cours des dernières années Google nous a annoncé faire d&#8217;énormes progrès en termes d&#8217;indexation des sites flash. Désormais il est vrai que l&#8217;on peut retrouver du contenu de nos vieux sites flash, que l&#8217;on croyait inaccessible  et perdu à jamais, dans les résultats de recherche de Google. Malheureusement la manière dont est indexé ce [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Au cours des dernières années Google nous a annoncé faire d&#8217;énormes progrès en termes d&#8217;indexation des sites flash.</strong><br />
Désormais il est vrai que l&#8217;on peut retrouver du contenu de nos vieux sites flash, que l&#8217;on croyait inaccessible  et perdu à jamais, dans les résultats de recherche de Google. Malheureusement la manière dont est indexé ce contenu est un peu aléatoire et difficilement contrôlable. C&#8217;est pourquoi il ne faut pas laisser Google dans le noir et lui donner un petit coup de main.<br />
La technique utilisée pour optimiser les résultats de recherche Google sur un site flash consiste en :</p>
<ul>
<li>Créer une page HTML par section de contenu du fichier flash</li>
<li>Utiliser <strong>SWFObject</strong> pour cacher le contenu HTML dupliqué<span id="more-45"></span></li>
</ul>
<p>En utilisant cette technique vous montrerez un joli contenu animée et organisée en Flash à tous vos utilisateurs ayant javascript activé et montrerez un site HTML brut à base de textes et images pour les moteurs de recherche.</p>
<p>La création de plusieurs pages HTML permet de faire apparaître une arborescence pour Google alors qu&#8217;auparavant l&#8217;intégralité de votre site flash apparaissait sur une seule page.</p>
<p>Puis la réécriture du contenu flash en HTML permet de parler la langue de Google, hiérarchiser l&#8217;information et connecter les différentes sections de votre site.</p>
<p>Voila à quoi un site ayant trois sections en Flash ressemblerait en utilisant cette technique:</p>
<p>Section 1 HTML:</p>
<pre><code>&lt;!-- Start swfobject code --&gt;
&lt;script src="swfobject.js" type="text/javascript"&gt;&lt;/script&gt;
 &lt;script type="text/javascript"&gt;&lt;!--

swfobject.embedSWF("siteFlash.swf", "flashDiv", "600", "400", "9.0.0");

// --&gt;&lt;/script&gt;
&lt;!-- end swfobject code --&gt;
&lt;div id="flashDiv"&gt;

&lt;h1&gt;Titre section 1&lt;/h1&gt;
Contenu specifique section 1.
&lt;ul&gt;
  &lt;li&gt;&lt;a href="section1.html"&gt;Section 1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="section2.html"&gt;Section 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="section3.html"&gt;Section 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;</code></pre>
<p>Section 2 HTML:</p>
<pre><code>&lt;!-- Start swfobject code --&gt;
&lt;script src="swfobject.js" type="text/javascript"&gt;&lt;/script&gt;
 &lt;script type="text/javascript"&gt;&lt;!--

swfobject.embedSWF("siteFlash.swf", "flashDiv", "600", "400", "9.0.0");

// --&gt;&lt;/script&gt;
&lt;!-- end swfobject code --&gt;
&lt;div id="flashDiv"&gt;

&lt;h1&gt;Titre section 2&lt;/h1&gt;
Contenu specifique section 2.
&lt;ul&gt;
  &lt;li&gt;&lt;a href="section1.html"&gt;Section 1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="section2.html"&gt;Section 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="section3.html"&gt;Section 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</code></pre>
<p>Section 3 HTML:</p>
<pre><code>&lt;!-- Start swfobject code --&gt;
&lt;script src="swfobject.js" type="text/javascript"&gt;&lt;/script&gt;
 &lt;script type="text/javascript"&gt;&lt;!--

swfobject.embedSWF("siteFlash.swf", "flashDiv", "600", "400", "9.0.0");

// --&gt;&lt;/script&gt;
&lt;!-- end swfobject code --&gt;
&lt;div id="flashDiv"&gt;
&lt;h1&gt;Titre section 3&lt;/h1&gt;
Contenu specifique section 3.
&lt;ul&gt;
  &lt;li&gt;&lt;a href="section1.html"&gt;Section 1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="section2.html"&gt;Section 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="section3.html"&gt;Section 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</code></pre>
<p>Comme vous pouvez le constater les 3 pages sont quasiment identiques dans cet exemple, elles chargent toutes le même fichier swf. La seule partie variable se trouve dans la div de chargement flash &laquo;&nbsp;flashDiv&nbsp;&raquo;, dont le contenu brut sera remplacé au moyen de <strong>SWFObject</strong> au chargement de la page.</p>
<p>Cette méthode améliorera considérablement la qualité de votre référencement dans les différents moteurs de recherche, toutefois il restera quelques petits détails de logique a régler par la suite. Quelque soit la page qu&#8217;un visiteur accédera depuis Google, que cela soit la section 1, 2 ou 3, le contenu affiché par le fichier Flash sera le même. Pour améliorer l&#8217;expérience utilisateur et donc afficher le bon contenu en fonction de la page d&#8217;accès il vous faudra utiliser <strong>SWFAddress</strong>, un script Actionscript et Javascript permettant la navigation dans un fichier flash à partir des paramètres passés dans l&#8217;URL.</p>
]]></content:encoded>
			<wfw:commentRss>http://bencaubere.com/developpement/flash/optimisation-seo-site-flash.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trouver la valeur ASCII d&#8217;un caractère</title>
		<link>http://bencaubere.com/developpement/php/reconnaitre-la-valeur-ascii-dun-caractere.html</link>
		<comments>http://bencaubere.com/developpement/php/reconnaitre-la-valeur-ascii-dun-caractere.html#comments</comments>
		<pubDate>Fri, 19 Mar 2010 19:23:29 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://bencaubere.com/?p=28</guid>
		<description><![CDATA[Ces derniers jours en travaillant sur le traitement de flux xml multilingues, je suis tombé par hasard sur un problème simple mais toutefois ennuyant. Le but de ma mission était de transférer une partie des informations contenues dans un fichier xml vers une base de données. L&#8217;une des contraintes était de remplacer les espaces contenus [...]]]></description>
			<content:encoded><![CDATA[<p>Ces derniers jours en travaillant sur le traitement de flux xml multilingues, je suis tombé par hasard sur un problème simple mais toutefois ennuyant.</p>
<p>Le but de ma mission était de transférer une partie des informations contenues dans un fichier xml vers une base de données. L&#8217;une des contraintes était de remplacer les espaces contenus dans certaines chaînes de caractères par des underscores &laquo;&nbsp;_&nbsp;&raquo;. L&#8217;objectif me parut simple et il ne m&#8217;en aurait pas pris plus d&#8217;une minute pour le realiser en temps normal.</p>
<p>solution classique :</p>
<pre><code>//on remplace le caractère espace par un underscore dans la chaîne a traiter $nouvelleChaine = <strong>str_replace</strong>(" ","_",$chaineAtraiter);</code></pre>
<p>C&#8217;était sans compter certains caractères invisibles&#8230;<span id="more-28"></span></p>
<p>En effet lorsque on est maître de l&#8217;information entrée il n&#8217;y a aucun problème, on est sure qu&#8217;un espace est bel et bien un espace. Par contre lorsqu&#8217;un tiers se charge d&#8217;entrer l&#8217;information est que cette dernière est ensuite manipulée n fois il devient moins évident qu&#8217;un espace apparaissant a l&#8217;écran est un espace a proprement dit en code ASCII.</p>
<p>Après être resté perplexe pendant une bonne demi heure je me suis mis en tête d&#8217;analyser la chaîne de caractères défectueuse, caractère par caractère et retourner la valeur ASCII de chacun de ceux ci au moyen de la fonction <strong>ord</strong>.</p>
<p>la solution:</p>
<pre><code>//transforme la chaîne de caractère en un tableau de lettres $tableauLettres = str_split($chaineAtraiter); //pour chaque lettre on affiche la valeur d'affichage normale et sa correspondance en ASCII foreach($tableauLettres as $lettre){ echo "Lettre : ".$lettre." Valeur ASCII ".<strong>ord</strong>($lettre)."\n"; } </code></pre>
<p>Le caractère d&#8217;espacement inconnu retourne la valeur ASCII décimal : 160 . Cette dernière correspond au caractère d&#8217;espacement <strong>&#8216;&amp;nbsp;&#8217;</strong> en html. Une fois la valeur ASCII du caractère dérangeant retrouvé il n&#8217;y a plus qu&#8217;a traiter la valeur ASCII cible dans la chaîne de caractères au moyen de la fonction <strong>chr</strong> retournant la valeur d&#8217;affichage d&#8217;un caractère a partir de sa valeur ASCII.</p>
<p>fin de la solution:</p>
<pre><code>//préparation des tableau de recherche et remplacement pour str_replace $tableauCherche=array(' ',<strong>chr</strong>(160)); $tableauRemplace=array("_","_"); //on remplace les espaces standard et les espaces &amp;nbsp (ASCII:160) par des underscore "_" $nouvelleChaine = <strong>str_replace</strong>($tableauCherche,$tableauRemplace,$chaineAtraiter);</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://bencaubere.com/developpement/php/reconnaitre-la-valeur-ascii-dun-caractere.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Au revoir</title>
		<link>http://bencaubere.com/general/au-revoir.html</link>
		<comments>http://bencaubere.com/general/au-revoir.html#comments</comments>
		<pubDate>Mon, 08 Mar 2010 17:44:12 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://bencaubere.com/?p=1</guid>
		<description><![CDATA[Ceci va très probablement devenir un nième blog complétement inutile. Ce que vous trouverez sur ce site risque d&#8217;être inintéressant. Je ne prétend pas pouvoir conserver votre attention. Bienvenue.]]></description>
			<content:encoded><![CDATA[<p>Ceci va très probablement devenir un <strong>n</strong>ième blog complétement inutile.<br />
Ce que vous trouverez sur ce site risque d&#8217;être inintéressant.<br />
Je ne prétend pas pouvoir conserver votre attention.</p>
<p>Bienvenue.</p>
]]></content:encoded>
			<wfw:commentRss>http://bencaubere.com/general/au-revoir.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

