<?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>Totalement Geek ! &#187; bug</title>
	<atom:link href="http://totalement.geek.oupas.fr/article/tag/bug/feed" rel="self" type="application/rss+xml" />
	<link>http://totalement.geek.oupas.fr</link>
	<description>... ou pas.</description>
	<lastBuildDate>Tue, 29 Nov 2011 09:54:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Une (des nombreuses) bizarrerie de PHP</title>
		<link>http://totalement.geek.oupas.fr/article/2010/12/23/une-des-nombreuses-bizarrerie-de-php</link>
		<comments>http://totalement.geek.oupas.fr/article/2010/12/23/une-des-nombreuses-bizarrerie-de-php#comments</comments>
		<pubDate>Thu, 23 Dec 2010 10:59:03 +0000</pubDate>
		<dc:creator>Renaud</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://totalement.geek.oupas.fr/?p=351</guid>
		<description><![CDATA[Je viens de tomber sur un bug qui m&#8217;a paru assez étrange au premier abord, mais qui, après réflexion est tout a fait &#171;&#160;normal&#160;&#187;. Dans mon code, je testais l&#8217;égalité entre 2 chaines de caractères ("0000000123" et "000123") et ça me retournait true alors que j&#8217;attendais false. En réfléchissant 2 minutes, voici ce que php [...]]]></description>
			<content:encoded><![CDATA[<p>Je viens de tomber sur un bug qui m&#8217;a paru assez étrange au premier abord, mais qui, après réflexion est tout a fait &laquo;&nbsp;normal&nbsp;&raquo;.</p>
<p>Dans mon code, je testais l&#8217;égalité entre 2 chaines de caractères (<code>"0000000123"</code> et <code>"000123"</code>) et ça me retournait <code>true</code> alors que j&#8217;attendais <code>false</code>.</p>
<p>En réfléchissant 2 minutes, voici ce que php effectue:</p>
<ol>
<li>est-ce que la chaine A est identique à la chaine B: non</li>
<li>est-ce qu&#8217;en castant la chaine A et/ou B, j&#8217;arrive à trouver une égalité: oui</li>
</ol>
<p>En effet, en castant les 2 chaines en entier, on obtient 123 et l&#8217;égalité est trouvée.</p>
<p>Comment faire alors pour que PHP retourne <code>false</code> ? En utilisant l&#8217;opérateur <code>===</code> qui teste non seulement l&#8217;égalité mais vérifie également qu&#8217;ils sont de même type. En réalité, ça teste l&#8217;égalité sans faire de cast. En conséquence de quoi, <code>==</code> est très légèrement plus lent que <code>===</code>. En d&#8217;autres termes, si vous codez bien connaissez exactement le type de vos données, préférez <code>===</code> car il est plus rapide.</p>
]]></content:encoded>
			<wfw:commentRss>http://totalement.geek.oupas.fr/article/2010/12/23/une-des-nombreuses-bizarrerie-de-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yakuake transparent uniquement sur le 1er onglet? Voici la solution</title>
		<link>http://totalement.geek.oupas.fr/article/2007/06/07/yakuake-transparent-uniquement-sur-le-1er-onglet-voici-la-solution</link>
		<comments>http://totalement.geek.oupas.fr/article/2007/06/07/yakuake-transparent-uniquement-sur-le-1er-onglet-voici-la-solution#comments</comments>
		<pubDate>Thu, 07 Jun 2007 10:00:39 +0000</pubDate>
		<dc:creator>Renaud</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[konsole]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[planet ubuntu-fr]]></category>
		<category><![CDATA[transparence]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[yakuake]]></category>

		<guid isPermaLink="false">http://totalement.geek.oupas.fr/article/2007/06/07/yakuake-transparent-uniquement-sur-le-1er-onglet-voici-la-solution</guid>
		<description><![CDATA[En effet, mon yakuake, tout beau qu&#8217;il puisse être, n&#8217;était transparent que sur le premier onglet. Les suivants étaient désespérément noirs. Bon noir, c&#8217;est joli aussi&#8230; mais transparent, c&#8217;est plus mieux :) Alors, j&#8217;ai pris mon courage à deux mains et mon clavier dans l&#8217;autre pour aller interroger Google. Cette fois-ci, il n&#8217;a pas été [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://totalement.geek.oupas.fr/wp-content/uploads/2007/12/yakuake.jpg" alt="Yakuake" />En effet, mon <a href="http://www.kde-apps.org/content/show.php?content=29153" target="_blank">yakuake</a>, tout beau qu&#8217;il puisse être, n&#8217;était transparent que sur le premier onglet. Les suivants étaient désespérément noirs.</p>
<p>Bon noir, c&#8217;est joli aussi&#8230; mais transparent, c&#8217;est plus mieux :)</p>
<p>Alors, j&#8217;ai pris mon courage à deux mains et mon clavier dans l&#8217;autre pour aller interroger <a href="http://www.google.fr" target="_blank">Google</a>. Cette fois-ci, il n&#8217;a pas été mon ami. Il ne m&#8217;a pas aidé du tout. Je cherche dans la documentation d&#8217;<a href="http://ubuntu-fr.org/" target="_blank">ubuntu-fr</a>, pas mieux. Dans son forum? <a href="http://forum.ubuntu-fr.org/viewtopic.php?pid=742734#p742734" target="_blank">Oui</a> ! Mieux, je m&#8217;aperçois qu&#8217;il s&#8217;agit d&#8217;un bug lié à <a href="http://konsole.kde.org/" target="_blank">Konsole</a> et qui impacte Yakuake puisqu&#8217;il l&#8217;utilise.</p>
<p>Donc si comme moi, votre Konsole souffre de ne pas avoir tous ses onglets transparents, il vous suffit de supprimer le paquet <em>scim-qtimm</em>:</p>
<pre>$ sudo apt-get remove --purge scim-qtimm</pre>
<p>Fermer Konsole ou Yakuake, relancer le et admirer de vos yeux ébahis la transparence se faire.</p>
]]></content:encoded>
			<wfw:commentRss>http://totalement.geek.oupas.fr/article/2007/06/07/yakuake-transparent-uniquement-sur-le-1er-onglet-voici-la-solution/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>date(&#8216;d/m/Y&#8217;, strtotime(&#8217;0000-00-00&#8242;)) = ?</title>
		<link>http://totalement.geek.oupas.fr/article/2007/05/10/datedmy-strtotime0000-00-00</link>
		<comments>http://totalement.geek.oupas.fr/article/2007/05/10/datedmy-strtotime0000-00-00#comments</comments>
		<pubDate>Thu, 10 May 2007 23:22:00 +0000</pubDate>
		<dc:creator>Renaud</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[planet libre]]></category>

		<guid isPermaLink="false">http://tg.mattlab.info/?p=8</guid>
		<description><![CDATA[Allez, allez! Petite énigme de fin de semaine! D&#8217;après vous, en PHP, que peut bien retourner date('d/m/Y', strtotime('0000-00-00')), hein ? Moi, au début, je pensais que ça allait me sortir EPOCH, donc quelque chose qui aurait dû ressembler à 01/01/1970. Que nenni! Cela affiche 30/11/1999. Ah&#8230; il a fallu chercher&#8230; et une fois trouvé, c&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://totalement.geek.oupas.fr/wp-content/uploads/2007/12/php.gif" alt="php" />Allez, allez! Petite énigme de fin de semaine!</p>
<p>D&#8217;après vous, en <a hreflang="en" href="http://www.php.net">PHP</a>, que peut bien retourner<br />
<code>date('d/m/Y', strtotime('0000-00-00'))</code>, hein ?</p>
<p>Moi, au début, je pensais que ça allait me sortir <a hreflang="fr" href="http://fr.wikipedia.org/wiki/Epoch">EPOCH</a>, donc quelque chose qui aurait dû ressembler à 01/01/1970.</p>
<p>Que nenni! Cela affiche 30/11/1999.</p>
<p>Ah&#8230; il a fallu chercher&#8230; et une fois trouvé, c&#8217;est tout à fait logique.</p>
<p>Cela part d&#8217;un <a hreflang="en" href="http://bugs.php.net/bug.php?id=30190">bug PHP</a><sup>[<a id="rev-pnote-795-1" href="#pnote-795-1">1</a>]</sup> du parser de PHP qui ne fait aucune différence entre l&#8217;année &#8217;0&#8242;, &#8217;00&#8242;, &#8217;000&#8242; ou &#8217;0000&#8242; et qu&#8217;il traduit inévitablement en l&#8217;an 2000. A partir de là, dans la gymnastique <em>microprocessoromentale</em> de PHP, il se passe les choses suivantes:</p>
<ul>
<li>0000-00-00 devient 2000-00-00</li>
<li>2000-00-00 n&#8217;existe pas, il prend le 00 du mois et décide donc que c&#8217;est le mois précédent: 1999-12-00<sup>[<a id="rev-pnote-795-2" href="#pnote-795-2">2</a>]</sup></li>
<li>1999-12-00 n&#8217;existe pas, il prend le 00 du jour et décide que c&#8217;est le jour précédent: 1999-11-30<sup>[<a id="rev-pnote-795-3" href="#pnote-795-3">3</a>]</sup></li>
</ul>
<p>Nous voila donc propulsé fin novembre 1999.</p>
<p><strong>Conclusion:</strong></p>
<ul>
<li>il vaut mieux avoir NULL plutôt que &#8217;0000-00-00&#8242; pour une date non utilisée</li>
<li>pour avoir rapidement la fin d&#8217;un mois, il suffit de se mettre au jour 00 du mois suivant. Exemple: si on veut le 31 aout 2010, il suffit d&#8217;avoir &#8217;2010-09-00&#8242;, strtotime se chargera de revenir un jour en arrière.</li>
</ul>
<p class="footnotes">
<h4>Notes</h4>
<p>[<a id="pnote-795-1" href="#rev-pnote-795-1">1</a>] Contrairement à ce qui est écrit dans le rapport de bugs et ses commentaires, le bug existe toujours en PHP5</p>
<p>[<a id="pnote-795-2" href="#rev-pnote-795-2">2</a>] De la même manière, si vous aviez le mois 13, il passerait à janvier de l&#8217;année suivante</p>
<p>[<a id="pnote-795-3" href="#rev-pnote-795-3">3</a>] De la même manière, si vous aviez le 32 janvier, il passerait au 1er févier et si c&#8217;était le 40 janvier, vous arriveriez au 9 février.</p>
]]></content:encoded>
			<wfw:commentRss>http://totalement.geek.oupas.fr/article/2007/05/10/datedmy-strtotime0000-00-00/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

