<?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>Retio // Mateusz Lerczak</title>
	<atom:link href="http://mateuszlerczak.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mateuszlerczak.com</link>
	<description>Blog o programowaniu, internecie oraz o mnie samym.</description>
	<lastBuildDate>Thu, 26 Apr 2012 08:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Google Plus Badge</title>
		<link>http://mateuszlerczak.com/google-plus-badge/</link>
		<comments>http://mateuszlerczak.com/google-plus-badge/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 13:28:48 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[badge]]></category>
		<category><![CDATA[google badge]]></category>
		<category><![CDATA[google plus]]></category>
		<category><![CDATA[google plus badge]]></category>
		<category><![CDATA[google plus page]]></category>
		<category><![CDATA[google+]]></category>
		<category><![CDATA[sn]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress like]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=256</guid>
		<description><![CDATA[Google Plus Badge Google Plus Badge add to our wordpress blog Google Page Badge. Files Download latest version of Google Plus Badge. Wordpress official here. Screenshots]]></description>
			<content:encoded><![CDATA[<p><strong>Google Plus Badge</strong><br />
Google Plus Badge add to our wordpress blog Google Page Badge.</p>
<p><strong>Files</strong><br />
Download latest version of <a href="http://downloads.wordpress.org/plugin/google-plus-badge.1.1.zip" target="_blank">Google Plus Badge</a>.<br />
Wordpress official <a href="http://wordpress.org/extend/plugins/google-plus-badge/" target="_blank">here</a>.</p>
<p><strong>Screenshots</strong><br />
<a href="http://mateuszlerczak.com/wp-content/uploads/2011/11/screenshot-1.png"><img class="aligncenter size-full wp-image-257 colorbox-256" title="Google Plus Badge" src="http://mateuszlerczak.com/wp-content/uploads/2011/11/screenshot-1.png" alt="" width="371" height="188" /></a></p>
<p><a href="http://mateuszlerczak.com/wp-content/uploads/2011/11/screenshot-2.png"><img class="aligncenter size-large wp-image-258 colorbox-256" title="Google Plus Badge Settings" src="http://mateuszlerczak.com/wp-content/uploads/2011/11/screenshot-2-718x1024.png" alt="" width="620" height="884" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/google-plus-badge/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SN Google Plus</title>
		<link>http://mateuszlerczak.com/sn-google-plus/</link>
		<comments>http://mateuszlerczak.com/sn-google-plus/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 10:13:56 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[+1]]></category>
		<category><![CDATA[google plus]]></category>
		<category><![CDATA[google+]]></category>
		<category><![CDATA[retioSlider]]></category>
		<category><![CDATA[slider]]></category>
		<category><![CDATA[sn google plus]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=249</guid>
		<description><![CDATA[SN Google Plus SN Google Plus add to our wordpress blog Google +1 button. Files Download latest version of SN Google Plus. Wordpress official here. Screenshots]]></description>
			<content:encoded><![CDATA[<p><strong>SN Google Plus</strong><br />
SN Google Plus add to our wordpress blog Google +1 button.<br />
<span id="more-249"></span></p>
<p><strong>Files</strong><br />
Download <a href="http://downloads.wordpress.org/plugin/sn-google-plus.1.3.zip" target="_blank">latest version of SN Google Plus</a>.<br />
Wordpress official <a href="http://wordpress.org/extend/plugins/sn-google-plus/">here</a>.</p>
<p><strong>Screenshots</strong></p>
<p><a href="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-11.png"><img class="aligncenter size-full wp-image-250 colorbox-249" title="SN Google Plus" src="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-11.png" alt="" width="246" height="127" /></a></p>
<p><a href="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-21.png"><img class="aligncenter size-large wp-image-251 colorbox-249" title="SN Google Plus Settings" src="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-21-797x1024.png" alt="" width="620" height="796" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/sn-google-plus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SN Facebook Like</title>
		<link>http://mateuszlerczak.com/sn-facebook-like/</link>
		<comments>http://mateuszlerczak.com/sn-facebook-like/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 11:27:23 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[like box]]></category>
		<category><![CDATA[like button]]></category>
		<category><![CDATA[likebox]]></category>
		<category><![CDATA[retioSlider]]></category>
		<category><![CDATA[slider]]></category>
		<category><![CDATA[social network]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=236</guid>
		<description><![CDATA[SN Facebook Like SN Facebook Like it&#8217;s a advanced slider (retioSlider) with Facebook Like Box or Like Button. Take look screenshots. Files Download latest version of SN Facebook Like. Wordpress...]]></description>
			<content:encoded><![CDATA[<p><strong>SN Facebook Like</strong><br />
SN Facebook Like it&#8217;s a advanced slider (retioSlider) with Facebook Like Box or Like Button. Take look screenshots.<br />
<span id="more-236"></span></p>
<p><strong>Files</strong><br />
Download <a href="http://downloads.wordpress.org/plugin/sn-facebook-like.1.3.zip" target="_blank">latest version of SN Facebook Like</a>.<br />
Wordpress official <a href="http://wordpress.org/extend/plugins/sn-facebook-like/">here</a>.</p>
<p><strong>Screenshots</strong><br />
<a href="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-1.png"><img class="aligncenter size-full wp-image-240 colorbox-236" title="SN Facebook Like" src="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-1.png" alt="" width="390" height="358" /></a></p>
<p><a href="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-2.png"><img class="aligncenter size-large wp-image-238 colorbox-236" title="SN Facebook Like" src="http://mateuszlerczak.com/wp-content/uploads/2011/10/screenshot-2-553x1024.png" alt="" width="553" height="1024" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/sn-facebook-like/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>retioSlider &#8211; Slider jQuery</title>
		<link>http://mateuszlerczak.com/retioslider/</link>
		<comments>http://mateuszlerczak.com/retioslider/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 17:45:39 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[likebox]]></category>
		<category><![CDATA[retioSlider]]></category>
		<category><![CDATA[slider]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=197</guid>
		<description><![CDATA[Przykłady można zobaczyć tutaj. Pobrać możesz tutaj: zip, git Dodałeś na swoją stronę? Daj znać wpiszemy na listę użytkowników]]></description>
			<content:encoded><![CDATA[<p><a href="http://mateuszlerczak.com/wp-content/uploads/2011/09/screen.jpg"><img src="http://mateuszlerczak.com/wp-content/uploads/2011/09/screen-1024x806.jpg" alt="retioSlider - FB Likebox" title="retioSlider - FB Likebox" width="620" height="488" class="alignleft size-large wp-image-206 colorbox-197" /></a></p>
<p>Przykłady można zobaczyć <a href="http://mateuszlerczak.com/projects/retioSlider/examples/" target="_blank">tutaj</a>.</p>
<p>Pobrać możesz tutaj: <a href="http://mateuszlerczak.com/projects/retioSlider/retioSlider.zip">zip</a>, <a href="https://github.com/retio/retioSlider" target="_blank">git</a></p>
<p>Dodałeś na swoją stronę? Daj znać wpiszemy na listę użytkowników <img src='http://mateuszlerczak.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley colorbox-197' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/retioslider/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kohana Retio-Bitly</title>
		<link>http://mateuszlerczak.com/retio-bitly/</link>
		<comments>http://mateuszlerczak.com/retio-bitly/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 11:13:18 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[3.1]]></category>
		<category><![CDATA[bit.ly]]></category>
		<category><![CDATA[kohana]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[retio-bitly]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=199</guid>
		<description><![CDATA[Bardzo prosty moduł do Kohana 3.1. Koduje / dekoduje linki http://bit.ly. Pobierz: git clone https://github.com/retio/Retio-Bitly.git Strona na github: https://github.com/retio/Retio-Bitly]]></description>
			<content:encoded><![CDATA[<p><a href="http://mateuszlerczak.com/wp-content/uploads/2011/09/retio-Retio-Bitly-GitHub.png"><img src="http://mateuszlerczak.com/wp-content/uploads/2011/09/retio-Retio-Bitly-GitHub-150x150.png" alt="" title="retio-Retio-Bitly - GitHub" width="150" height="150" class="alignleft size-thumbnail wp-image-200 colorbox-199" /></a><br />
Bardzo prosty moduł do Kohana 3.1. Koduje / dekoduje linki <a href="http://bit.ly" target="_blank">http://bit.ly</a>.</p>
<p>Pobierz:<br />
git clone <a href="https://github.com/retio/Retio-Bitly.git" target="_blank">https://github.com/retio/Retio-Bitly.git</a></p>
<p>Strona na github: <a href="https://github.com/retio/Retio-Bitly" target="_blank">https://github.com/retio/Retio-Bitly</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/retio-bitly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Przekierowanie www na bez www</title>
		<link>http://mateuszlerczak.com/przekierowanie-www-na-bez-www/</link>
		<comments>http://mateuszlerczak.com/przekierowanie-www-na-bez-www/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 06:21:26 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[mod_rewr]]></category>
		<category><![CDATA[przekierowanie www]]></category>
		<category><![CDATA[www na bez www]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=191</guid>
		<description><![CDATA[Analogicznie jak w poście przekierowanie bez www na www. Przykład: www.domena.pl => domena.pl Jeżeli chcemy abym wszystkie subdomeny przekierowywały do adresu domena.pl możemy zastosować takie rozwiązanie:]]></description>
			<content:encoded><![CDATA[<p>Analogicznie jak w poście <a href="http://mateuszlerczak.com/przekierowanie-bez-www-na-www/">przekierowanie bez www na www</a>.<br />
<span id="more-191"></span><br />
Przykład: <strong>www.domena.pl</strong> => <strong>domena.pl</strong></p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
</pre>
<p>Jeżeli chcemy abym wszystkie subdomeny przekierowywały do adresu <strong>domena.pl</strong> możemy zastosować takie rozwiązanie:</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domena.pl$
RewriteRule ^(.*)$ http://domena.pl/$1 [R=301,L]
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/przekierowanie-www-na-bez-www/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Przekierowanie bez www na www</title>
		<link>http://mateuszlerczak.com/przekierowanie-bez-www-na-www/</link>
		<comments>http://mateuszlerczak.com/przekierowanie-bez-www-na-www/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 06:07:19 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[bez www na www]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=187</guid>
		<description><![CDATA[Wiele osób pyta się o sposób automatycznego przekierowania domeny bez www na www. Przykład: domena.pl => www.domena.pl Jak to zrobić? Wystarczą 2 linijki poniżej:]]></description>
			<content:encoded><![CDATA[<p>Wiele osób pyta się o sposób automatycznego przekierowania domeny bez www na www.<br />
<span id="more-187"></span><br />
Przykład: <strong>domena.pl</strong> => <strong>www.domena.pl</strong></p>
<p>Jak to zrobić? Wystarczą 2 linijki poniżej:</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/przekierowanie-bez-www-na-www/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SimpleUpload &#8211; Upload pliku / plików w PHP</title>
		<link>http://mateuszlerczak.com/simpleupload/</link>
		<comments>http://mateuszlerczak.com/simpleupload/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 13:22:04 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[SimpleUpload]]></category>
		<category><![CDATA[upload class]]></category>
		<category><![CDATA[upload plików]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=143</guid>
		<description><![CDATA[Ostatnio na potrzeby jednej strony byłem zmuszony napisać małą klasę do uploadu plików. Przykłady i wyjaśnienia poniżej. Skrypt wraz z przykładem można pobrać tutaj: retio/SimpleUpload Przykładowe użycie: Klasa PHP: Kod...]]></description>
			<content:encoded><![CDATA[<p><a href="http://mateuszlerczak.com/wp-content/uploads/2011/03/zrzut_ekranu-1.png"><img class="alignleft size-medium wp-image-149 colorbox-143" title="SimpleUpload" src="http://mateuszlerczak.com/wp-content/uploads/2011/03/zrzut_ekranu-1-300x202.png" alt="" width="300" height="202" /></a>Ostatnio na potrzeby jednej strony byłem zmuszony napisać małą klasę do uploadu plików.<br />
<span id="more-143"></span><br />
Przykłady i wyjaśnienia poniżej.<br />
Skrypt wraz z przykładem można pobrać tutaj: <strong><a target="_blank" href="https://github.com/retio/SimpleUpload">retio/SimpleUpload</a></strong></p>
<div style="margin-top:130px;">
<strong>Przykładowe użycie:</strong></p>
<p><strong>Klasa PHP:</strong></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

/**
 *  Simple upload class.
 *
 * @package     SimpleUpload
 * @version     1.0
 * @author      Mateusz Lerczak &lt;mateusz@lerczak.eu&gt;
 * @link        https://github.com/retio/SimpleUpload
 * @license     http://opensource.org/licenses/gpl-3.0.html
 */
class SimpleUpload {
    /**
     * Wersja klasy SimpleUpload
     */
    const version       = '1.0';

    /**
     * Tablica z dozwolonymi typami MIME,
     * pusta tablica = wszystki typy plików dozwolone
     * @var array
     */
    public $allowedType = array();

    /**
     * Docelowa ścierzka do zapisu pliku
     * @var string
     */
    public $destDir     = 'uploaded/';

    /**
     * Zmienna przechowuje kod błędu
     * 0 = brak błędu
     * @var int
     */
    private $_errorCode   = 0;

    /**
     * Tablica z błędami
     * @var array
     */
    private $_errorsList  = array(
        1 =&gt; &quot;Przesłany plik jest większy niż dopuszczalny limit&quot;,
        2 =&gt; &quot;Przesłany plik jest większy niż dopuszczalny limit!&quot;,
        3 =&gt; &quot;Tylko część pliku została przesłana!&quot;,
        4 =&gt; &quot;Nie przesłano pliku!&quot;,
        5 =&gt; &quot;Przesłano niedozwolony plik!&quot;,
        6 =&gt; &quot;Docelowa ścierzka nie istnieje!&quot;,
        7 =&gt; &quot;Brak praw do zapisu!&quot;
    );

    /**
     * Rozszerzenie wgranego pliku
     * @var string
     */
    public $fileExt     = null;

    /**
     * Nazwa pliku, domyślnie oryginalna nazwa w bezpiecznym formacie
     * ( bez polskich liter, znaków specjalnych )
     * @var string
     */
    public $fileName    = null;

    /**
     * Prefix dla nazwy pliku
     * domyślnie brak
     * @var string
     */
    public $filePrefix  = null;

    /**
     * Wielkość wgranego pliku
     * @var int
     */
    private $_fileSize  = 0;

    /**
     * Typ MIME pliku
     * @var string
     */
    private $_fileType  = null;

    /**
     * Limit wagi wgranego pliku w MiB
     * @var int
     */
    public $sizeLimit   = 2; // MiB

    /**
     * Tymczasowa ścierzka do pliku
     * @var string
     */
    private $_tmpName   = null;

    /**
     * Konstruktor, przyjmuje parametr $_FILES['nazwa_pliku'];
     * @param array $file
     */
    public function __construct($file) {
        $fileNameArray = explode('.', $file['name']);

        $this-&gt;_fileType = $file['type'];
        $this-&gt;_fileSize = $file['size'];
        $this-&gt;_tmpName = $file['tmp_name'];

        $this-&gt;fileExt = array_pop($fileNameArray);
        $this-&gt;fileName = implode('-', $fileNameArray);

        if ($this-&gt;fileName == '')
            $this-&gt;fileName = time();

        $this-&gt;_errorCode = $file['error'];
    }

    /**
     * Metoda do usuwania polskich znaków oraz znaków specjalnych.
     * @param string $string
     * @return string
     */
    private function _convertToSaveFormat($string) {
        $string     = stripslashes($string);
        $unSafe     = array('.',' ',&quot;'&quot;,'&quot;','/','Ą','ą','Ć','ć','Ę','ę','Ł','ł','Ń','ń','Ó','ó','Ś','ś','Ź','ź','Ż','ż');
        $safe       = array('-','-','','','','A','a','C','c','E','e','L','l','N','n','O','o','S','s','Z','z','Z','z');

        $safeString = str_replace($unSafe, $safe, $string);

        return $safeString;
    }

    /**
     * Metoda sprawdzająca czy wgrany plik jest dozwolony
     * @return boolean (true|false)
     */
    private function _isAllowedFileType() {
        if (empty($this-&gt;allowedType))
            return true;

        $allowed = (in_array($this-&gt;_fileType, $this-&gt;allowedType)) ? true : false;
        if ($allowed === false)
            $this-&gt;_errorCode = 5;

        return $allowed;
    }

    /**
     * Metoda sprawdzająca czy docelowy katalog jest zapisywalny
     * @return boolean (true|false)
     */
    private function _isDestDirIsWritable() {
        $isWritable = (is_writable($this-&gt;destDir)) ? true : false;

        if ($isWritable === false)
            $this-&gt;_errorCode = 7;

        return $isWritable;
    }

    /**
     * Metoda sprawdzająca czy docelowy katalog istnieje
     * @return boolean (true|false)
     */
    private function _isDestDirExists() {
        $dirExists = (is_dir($this-&gt;destDir)) ? true : false;

        if ($dirExists === false)
            $this-&gt;_errorCode = 6;

        return $dirExists;
    }

    /**
     * Metoda sprawdzająca czy docelowy plik nie przekracza dopuszczalnej wielkości.
     * @return boolean (true|false)
     */
    private function _isAllowedFileSize() {
        $sizeMiB = ceil($this-&gt;_convertBytes($this-&gt;_fileSize));

        $allowed = ($sizeMiB &lt;= $this-&gt;sizeLimit) ? true : false;
        if ($allowed === false)
            $this-&gt;_errorCode = 2;

        return $allowed;
    }

    /**
     * Metoda konwertująca bajty na KiB, MiB, GiB
     * @param int $bytes
     * @param string $to
     * @param int $precision
     * @return float
     */
    private function _convertBytes($bytes, $to = 'M', $precision = 2) {
        $float      = (float) floatval($bytes);
        $notation   = (int) 1024;
        $precision  = (int) ($precision &gt; 0) ? $precision : 2;

        switch($to) {
            case 'G':            // GiB
                $float /= $notation;
            case 'M':            // MiB
                $float /= $notation;
            case 'K':            // KiB
                $float /= $notation;
        }
        unset($bytes, $to);
        return round($float, $precision);
    }

    /**
     * Metoda zwraca typ MIME pliku
     * @return string
     */
    public function getFileType() {
        return ($this-&gt;_fileType) ? $this-&gt;_fileType : false;
    }

    /**
     * Metoda zwraca wielkość wgranego pliku
     * - jeżeli istnieje parametr $format, zwraca wielkość w danym formacie,
     * - jeżeli istnieje dodatkowo parametr $precision zwraca wielkość z podaną precyzją
     * @param string $format
     * @param int $precision
     * @return float
     */
    public function getFileSize($format = null, $precision = null) {
        return $this-&gt;_convertBytes($this-&gt;_fileSize, $format, $precision);
    }

    /**
     * Metoda zwraca komunikat błędu.
     * @return string|boolean
     */
    public function error() {
        return ($this-&gt;_errorCode != 0) ? $this-&gt;_errorsList[$this-&gt;_errorCode] : false;
    }

    /**
     * Metoda główna, zapisuj plik na serwer.
     * @return string|boolean
     */
    public function save() {
        if ($this-&gt;_tmpName
                &amp;&amp; $this-&gt;_isDestDirExists()
                &amp;&amp; $this-&gt;_isDestDirIsWritable()
                &amp;&amp; $this-&gt;_isAllowedFileType()
                &amp;&amp; $this-&gt;_isAllowedFileSize())
            if (is_uploaded_file($this-&gt;_tmpName)) {
                $fileName               = $this-&gt;_convertToSaveFormat($this-&gt;fileName);
                $fileNameWithExtension  = ($this-&gt;filePrefix != '' &amp;&amp; $this-&gt;filePrefix != $fileName) ? &quot;{$this-&gt;filePrefix}_{$fileName}.{$this-&gt;fileExt}&quot; : &quot;$fileName.$this-&gt;fileExt&quot;;
                $stat = move_uploaded_file(
                    $this-&gt;_tmpName, // tymczasowa sciezka pliku
                    $this-&gt;destDir . $fileNameWithExtension // nowa sciezka pliku
                );
                return $this-&gt;destDir . $fileNameWithExtension;
            }
        return false;
    }
}
</pre>
<p><strong>Kod HTML:</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;form action=&quot;upload-file.php&quot; enctype=&quot;multipart/form-data&quot; method=&quot;post&quot;&gt;
&lt;table class=&quot;uploadForm&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th colspan=&quot;3&quot;&gt;Formularz uploadu pliku&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;catLeft&quot;&gt;Wybierz plik:&lt;/td&gt;
&lt;td&gt;&lt;input name=&quot;plik&quot; size=&quot;32&quot; type=&quot;file&quot; /&gt;&lt;/td&gt;
&lt;td class=&quot;comments&quot;&gt;// Wybierz plik do uploadu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;catLeft&quot;&gt;Katalog docelowy:&lt;/td&gt;
&lt;td&gt;&lt;input name=&quot;dest_dir&quot; type=&quot;text&quot; value=&quot;uploaded/&quot; /&gt;&lt;/td&gt;
&lt;td class=&quot;comments&quot;&gt;// Wybierz katalog docelowy lub pozostaw domyślny&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;catLeft&quot;&gt;Prefix:&lt;/td&gt;
&lt;td&gt;&lt;input name=&quot;file_prefix&quot; type=&quot;text&quot; /&gt;&lt;/td&gt;
&lt;td class=&quot;comments&quot;&gt;// Wpisz prefix dla pliku, domyślnie brak prefixu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;catLeft&quot;&gt;Nazwa pliku:&lt;/td&gt;
&lt;td&gt;&lt;input name=&quot;file_name&quot; type=&quot;text&quot; /&gt;&lt;/td&gt;
&lt;td class=&quot;comments&quot;&gt;// Wpisz nazwę dla pliku, domyślnie nazwa oryginalna (zabezpieczona)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;input name=&quot;Submit&quot; type=&quot;submit&quot; value=&quot;Wyślij&quot; /&gt;&lt;/td&gt;
&lt;td class=&quot;comments&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/form&gt;
</pre>
<p><strong>Kod PHP:</strong></p>
<pre class="brush: php; title: ; notranslate">
    require_once 'class/SimpleUpload.class.php';

    if (isset($_FILES)) {
        $upload = new SimpleUpload($_FILES['plik']); // Tworzymy nowy obiekt

//        $upload-&gt;sizeLimit = 10; // Maksymalny rozmiar pliku w MB
//        $upload-&gt;allowedType = array('image/jpeg'); // Możemy wgrać tylko zdjęcia typu jpg

        // Katalog
        if ($_POST['dest_dir'] != '')
            $upload-&gt;destDir        = $_POST['dest_dir'];

        // Prefix
        if ($_POST['file_prefix'] != '')
            $upload-&gt;filePrefix     = $_POST['file_prefix'];
        else
            $upload-&gt;filePrefix     = time();

        // Nazwa pliku
        if ($_POST['file_name'] != '')
            $upload-&gt;fileName       = $_POST['file_name'];

        $fileSizeB  = $upload-&gt;getFileSize(); // bajt B
        $fileSizeK  = $upload-&gt;getFileSize('K'); // kibibajt - KiB
        $fileSizeM  = $upload-&gt;getFileSize('M'); // mebibajt - MiB
        $fileType   = $upload-&gt;getFileType();

        $stat = $upload-&gt;save();
        if ($stat === false)
            echo &quot;Błąd: &quot;.$upload-&gt;error();
        else
            echo &quot;Poprawnie dodano plik: &quot; . $stat;
    }
</pre>
<p>Kod będzie stopniowo rozwijany, pomysły i uwagi mile widziane. Śmiało proszę pisać <img src='http://mateuszlerczak.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-143' />
</div>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/simpleupload/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Przyjazne linki w wordpress-ie</title>
		<link>http://mateuszlerczak.com/przyjazne-linki-w-wordpress-ie/</link>
		<comments>http://mateuszlerczak.com/przyjazne-linki-w-wordpress-ie/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 13:02:35 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[przyjazne linki]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wyrażenia regularne]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=137</guid>
		<description><![CDATA[Domyślne przyjazne linki w wordpress-ie mają formę: miesiąc/dzień/tytuł. W moim przypadku: http://mateuszlerczak.com/2011/03/23/przyjazne-linki-w-wordpress-ie/ A co musimy zrobić żeby pozbyć się daty i zostawić tylko nazwę posta. Wchodzimy na admina. Menu Ustawienia...]]></description>
			<content:encoded><![CDATA[<p>Domyślne przyjazne linki w wordpress-ie mają formę: <em>miesiąc/dzień/tytuł</em>.<br />
<span id="more-137"></span><br />
W moim przypadku: <a href="http://mateuszlerczak.com/2011/03/23/przyjazne-linki-w-wordpress-ie/">http://mateuszlerczak.com/2011/03/23/przyjazne-linki-w-wordpress-ie/</a></p>
<p>A co musimy zrobić żeby pozbyć się daty i zostawić tylko nazwę posta.</p>
<ul>
<li>Wchodzimy na admina.</li>
<li>Menu <strong>Ustawienia</strong></li>
<li>Pozycja <strong>Bezpośrednie odnośniki</strong></li>
<li>W polu <strong>Własny format</strong> zostawiamy tylko <strong>/%postname%/</strong></li>
<li>Klikamy zapisz zmiany.</li>
</ul>
<p>Od teraz mamy linki do postów w formie: http://mateuszlerczak.com/http://mateuszlerczak.com/przyjazne-linki-w-wordpress-ie/</p>
<p>Oki, ale to nie koniec. Jeżeli wasz blog jest już za indeksowany w przeglądarkach to pamiętajmy żeby przekierować stare adresy na nowe.</p>
<p>Ściągamy z serwera na którym stoi nasz blog plik <strong>.htaccess</strong> ( katalog główny ).</p>
<p>Edytujemy plik na wzór tego:</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
...
RewriteRule ^(\d{4})/(\d{2})/(\d{2})/(.*)/$ http://mateuszlerczak.com/$4/ [R=301,L]
...
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# BEGIN WordPress
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
&lt;/IfModule&gt;
# END WordPress
</pre>
<p>Jak już zapiszemy zmiany w pliku. Wysyłamy go na serwer. Teraz już zostało nam tylko sprawdzenie czy działa.</p>
<p>Po wejściu na link: <a href="http://mateuszlerczak.com/2011/03/23/przyjazne-linki-w-wordpress-ie/">http://mateuszlerczak.com/2011/03/23/przyjazne-linki-w-wordpress-ie/</a><br />
powinno nas automatycznie przekierować na: <a href="http://mateuszlerczak.com/2011/03/23/przyjazne-linki-w-wordpress-ie/">http://mateuszlerczak.com/przyjazne-linki-w-wordpress-ie/</a></p>
<p>I tyle <img src='http://mateuszlerczak.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-137' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/przyjazne-linki-w-wordpress-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pendrive Corsair Flash Voyager GT 16GB</title>
		<link>http://mateuszlerczak.com/pendrive-corsair-flash-voyager-gt-16gb/</link>
		<comments>http://mateuszlerczak.com/pendrive-corsair-flash-voyager-gt-16gb/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 08:31:42 +0000</pubDate>
		<dc:creator>Retio</dc:creator>
				<category><![CDATA[Testy]]></category>

		<guid isPermaLink="false">http://mateuszlerczak.com/?p=112</guid>
		<description><![CDATA[Pendrive Corsair Flash Voyager GT 16GB&#65279; Dziś podzielę się z wami moją opinią na temat pendriva firmy Corsair o nazwie Voyager GT. Pamięć tą zakupiłem po tym jak poprzednik (...]]></description>
			<content:encoded><![CDATA[<h2><a href="http://mateuszlerczak.com/wp-content/uploads/2010/11/corsair-voyager-gt-16gb-pic2.jpg"><img class="alignleft size-medium wp-image-117 colorbox-112" title="Corsair Voyager GT 16GB" src="http://mateuszlerczak.com/wp-content/uploads/2010/11/corsair-voyager-gt-16gb-pic2-300x181.jpg" alt="Corsair Voyager GT 16GB" width="300" height="181" /></a>Pendrive Corsair Flash Voyager GT 16GB&#65279;</h2>
<p><span id="more-112"></span><br />
Dziś podzielę się z wami moją opinią na temat pendriva firmy <strong>Corsair</strong> o nazwie <strong>Voyager GT</strong>. Pamięć tą zakupiłem po tym jak poprzednik ( SanDisk Cruzer Contour ) dosłownie się ugotował.</p>
<p>Przy wyborze pamięci kierowałem się dwoma kluczowymi parametrami: <strong>wielkość</strong> i <strong>szybkość</strong>. Wybór padł na 16 GB Voyagera. Według opisu producenta pendrive charakteryzuje się wartościami poniżej.</p>
<p>Dane techniczne:</p>
<ol>
<li>Interfejs USB 2.0</li>
<li>Całkowita pojemność<strong> 16 GB</strong></li>
<li>Maksymalna prędkość odczytu<strong> 34 MB<a href="http://mateuszlerczak.com/wp-content/uploads/2010/11/corsair-voyager-gt-16gb-pic1.jpg"><img class="alignright size-medium wp-image-114 colorbox-112" title="Corsair Voyager GT 16GB" src="http://mateuszlerczak.com/wp-content/uploads/2010/11/corsair-voyager-gt-16gb-pic1-300x189.jpg" alt="Corsair Voyager GT 16GB" width="300" height="189" /></a></strong></li>
<li>Maksymalna prędkość zapisu <strong>28 MB</strong></li>
<li>Gumowa obudowa</li>
<li>Wodoodporny</li>
<li>Wstrząsoodporny</li>
<li>10 letnia gwarancja</li>
</ol>
<p>W skład zestawu wchodzi:</p>
<ol>
<li>Pendrive</li>
<li>Smycz</li>
<li>Kabel USB</li>
</ol>
<p>Aktualna cena tej pamięci w zależności od sklepu kształtuje się w zakresie od <strong>109,99 zł </strong>do<strong> 208 zł</strong>.</p>
<p>Jak to jest naprawdę z parametrami tej pamięci?</p>
<p>Pojemność rzeczywista w moim przypadku wynosi <strong>14,94 GB</strong>. Maksymalna prędkość odczytu według testu <strong>35,2 MB/s</strong> ( Min. 33,5 MB/s ). Maksymalna prędkość zapisu wynosi <strong>17,2 MB/s</strong> ( Min. 6,4 MB/s ). Średni czas dostępu wynosi<strong> 0,7 ms</strong>. Podane wartości dla odczytu/zapisu mogą się różnić od rzeczywistych ponieważ prędkość zależy od ilość oraz wagi zapisywanych/odczytywanych danych. Poniżej zrzut testu.</p>
<p style="text-align: center;"><a href="http://mateuszlerczak.com/wp-content/uploads/2010/11/corsair-voyager-gt-16gb-test.jpg"><img class="aligncenter size-medium wp-image-115 colorbox-112" title="Corsair Voyager GT 16GB - Test odczytu/zapisu" src="http://mateuszlerczak.com/wp-content/uploads/2010/11/corsair-voyager-gt-16gb-test-300x175.jpg" alt="Corsair Voyager GT 16GB - Test odczytu/zapisu" width="300" height="175" /></a></p>
<p>Co do awaryjności sprzętu to nie mam żadnych uwag. Ani razu nie zdarzyło mi się żeby pendrive mnie zawiódł. W skrócie mówiąc jest niezawodny.</p>
<p>Podsumowując jest to pendrive z wyżej półki.  Cena jest odpowiednia co do jakości, a nawet powiedział bym że zadowalająca. Jak szukasz nowego pendrive to już wiesz co dostaniesz kupując pamięc z serii Voyager GT firmy Corsair.</p>
]]></content:encoded>
			<wfw:commentRss>http://mateuszlerczak.com/pendrive-corsair-flash-voyager-gt-16gb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

