<?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>xlab &#187; fail</title>
	<atom:link href="http://xlab.pl/tag/fail/feed/" rel="self" type="application/rss+xml" />
	<link>http://xlab.pl</link>
	<description>XSolve laboratory - dzielimy się tym co wiemy...</description>
	<lastBuildDate>Mon, 30 Aug 2010 07:34:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dlaczego kocham PHP!</title>
		<link>http://xlab.pl/2009/11/dlaczego-kocham-php/</link>
		<comments>http://xlab.pl/2009/11/dlaczego-kocham-php/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:44:39 +0000</pubDate>
		<dc:creator>Marcin Dryka</dc:creator>
				<category><![CDATA[Programowanie PHP]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[błąd]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[love]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=636</guid>
		<description><![CDATA[Każdego programistę w życiu spotykają chwile doszukiwania się logiki lub chwile zwątpienia w zasady matematyki. Język PHP w znaczącym stopniu ułatwia zaistnienie takiej sytuacji.
Wyobraźmy sobie, potrzebę napisania klasy umożliwiającej stronicowanie wyników. Metoda calculate służy do policzenia dolnego zakresu wyników (strona 5, wyniki 51-60). Całość wygląda następująco:

class Pager
{
  private
    $page = 1,
 [...]]]></description>
			<content:encoded><![CDATA[<p>Każdego programistę w życiu spotykają chwile doszukiwania się logiki lub chwile zwątpienia w zasady matematyki. Język PHP w znaczącym stopniu ułatwia zaistnienie takiej sytuacji.<br />
Wyobraźmy sobie, potrzebę napisania klasy umożliwiającej stronicowanie wyników. Metoda <em>calculate</em> służy do policzenia dolnego zakresu wyników (strona 5, wyniki <strong>51</strong>-60). Całość wygląda następująco:</p>
<pre name="code" class="php">
class Pager
{
  private
    $page = 1,
    $per_page = 10;

  public function calculate()
  {
    return $this-&gt;page * $this-&gt;per_page - $this-per_page + 1;
  }
}</pre>
<p>Jedna mała pomyłka. Zamiast</p>
<pre name="code" class="php">$this-&gt;per_page</pre>
<p>do kodu wkradło się:</p>
<pre name="code" class="php">$this-per_page</pre>
<p>Co to zmienia? Na pierwszy rzut oka parser PHP powinien poinformować o błędzie&#8230; jednak linia kodu zawierająca błąd interpretowana jest następująco:</p>
<pre name="code" class="php">
$this-&gt;page // 1</pre>
<pre name="code" class="php">
$this-&gt;per_page // 10</pre>
<pre name="code" class="php">
$this  // rzutowane na int to 1, bo obiekt istnieje</pre>
<pre name="code" class="php">
per_page // jako stała niezdefiniowana to 0</pre>
<p>Wykonywane działanie matematyczne wygląda zatem następująco:</p>
<pre name="code" class="php">
1 * 10 - 1 - 0 + 1</pre>
<p>Wynik działania to o dziwo 10&#8230; Dlatego kocham PHP!</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/2009/11/dlaczego-kocham-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Programistyczny fail: Błąd bez błędu</title>
		<link>http://xlab.pl/2009/08/programistyczny-fail-blad-bez-bledu/</link>
		<comments>http://xlab.pl/2009/08/programistyczny-fail-blad-bez-bledu/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 10:49:37 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Lorem Ipsum]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[programistyczny fail]]></category>
		<category><![CDATA[śmieszne]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=227</guid>
		<description><![CDATA[Ciekawy błąd (nie błąd?) przytrafił się Michałowi Organkowi przy próbie wysłania smsa z Kadu&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Ciekawy błąd (nie błąd?) przytrafił się <a href="http://twitter.com/or6an">Michałowi Organkowi</a> przy próbie wysłania smsa z Kadu&#8230;</p>
<div id="attachment_228" class="wp-caption alignnone" style="width: 260px"><img class="size-full wp-image-228" title="soFyUl" src="http://www.xlab.pl/wp-content/uploads/2009/08/soFyUl.png" alt="Błąd bez błędu" width="250" height="166" /><p class="wp-caption-text">To taki błąd, tylko że nie błąd.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/2009/08/programistyczny-fail-blad-bez-bledu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
