<?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>Dawid Pośliński &#187; php</title>
	<atom:link href="http://blog.poslinski.net/kategoria/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.poslinski.net</link>
	<description>Code is poetry.</description>
	<lastBuildDate>Sun, 27 Feb 2011 11:30:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Yii: Mechanizm sesji</title>
		<link>http://blog.poslinski.net/yii-mechanizm-sesji/</link>
		<comments>http://blog.poslinski.net/yii-mechanizm-sesji/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 05:03:08 +0000</pubDate>
		<dc:creator>Dawid Pośliński</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[sesja]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://blog.poslinski.net/?p=677</guid>
		<description><![CDATA[Normalnie w PHP do przechowywania danych związanych z sesją, używa się tablicy globalnej $_SESSION. Okazuje się jednak, że w przypadku frameworka Yii, do sesji odwołuje się w nieco inny sposób. Klasyczne przypisanie wartości do tej tablicy nic nie da, albowiem zostanie ona nadpisana przez Yii jego zawartością. Twórcy tego framework&#8217;a przyjęli, zresztą słusznie, że najlepszą [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://blog.poslinski.net/wp-content/uploads/2010/12/yii-framework-session.png"><img class="size-full wp-image-678 aligncenter" title="yii-framework-session" src="http://blog.poslinski.net/wp-content/uploads/2010/12/yii-framework-session.png" alt="" width="620" height="150" /></a>Normalnie w PHP do przechowywania danych związanych z sesją, używa się tablicy globalnej <strong>$_SESSION</strong>. Okazuje się jednak, że w przypadku frameworka Yii, do sesji odwołuje się w nieco inny sposób.</p>
<p><span id="more-677"></span>Klasyczne przypisanie wartości do tej tablicy nic nie da, albowiem zostanie ona nadpisana przez Yii jego zawartością. Twórcy tego framework&#8217;a przyjęli, zresztą słusznie, że najlepszą alternatywą, będzie przechowywanie sesji w bazie danych.</p>
<h2>Instalacja</h2>
<p>Aby rozpocząć pracę z sesją, należy korzystać z dowolnego mechanizmu składowania danych używanego przez Yii , następnie w głównym pliku konfiguracyjnym, jako jeden z elementów, dodać następujący fragment kodu:</p>
<pre class="php">session'=&gt;array(
            'class' =&gt; 'CDbHttpSession',
            'connectionID' =&gt; 'db',
            'sessionTableName' =&gt; 'dbsession',
        ),
</pre>
<p>Gotowe! Framwork samodzielnie utworzy niezbędną tabelę &#8216;dbsession&#8217; w bazie danych, do której prowadzi połączenie, którego ID podano w konfiguracji.</p>
<h2>Jak używać?</h2>
<p>Od tego momentu, tablica z sesją dostępna jest przez wywołanie <strong>Yii::app()-&gt;session</strong>. Ponieważ dostępny jest zarówno setter jak i getter, do dowolnego elementu możemy odwoływać się przez klucz: <strong>Yii::app()-&gt;session['klucz']</strong>, oraz przypisywać dowolną wartość: <strong>Yii::app()-&gt;session['klucz'] = &#8222;wartość&#8221;</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.poslinski.net/yii-mechanizm-sesji/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Yii: Srbac po polsku</title>
		<link>http://blog.poslinski.net/yii-srbac-po-polsku/</link>
		<comments>http://blog.poslinski.net/yii-srbac-po-polsku/#comments</comments>
		<pubDate>Sun, 26 Dec 2010 15:51:10 +0000</pubDate>
		<dc:creator>Dawid Pośliński</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[srbac]]></category>
		<category><![CDATA[Święta]]></category>
		<category><![CDATA[tłumaczenie]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://blog.poslinski.net/?p=657</guid>
		<description><![CDATA[Z okazji Świąt Bożego Narodzenia, a także Nowego Roku, nie tylko chce złożyć życzenia, spokojnych, dostatnich, smacznych dni spędzonych z najbliższą rodziną i przyjaciółmi, ale także sprezentować mały prezent. Zdaje sobie sprawę, że przyda się on jedynie osobom, które programują w php z wykorzystaniem frameworka Yii, ale mimo to, zawsze komuś zaoszczędzi troszkę czasu, który musiał [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.poslinski.net/wp-content/uploads/2010/12/yiiframework-polski-srbac.jpg"><img class="size-full wp-image-664 aligncenter" title="yiiframework-polski-srbac" src="http://blog.poslinski.net/wp-content/uploads/2010/12/yiiframework-polski-srbac.jpg" alt="" width="620" height="150" /></a>Z okazji Świąt Bożego Narodzenia, a także Nowego Roku, nie tylko chce złożyć życzenia, spokojnych, dostatnich, smacznych dni spędzonych z najbliższą rodziną i przyjaciółmi, ale także sprezentować mały prezent.<br />
Zdaje sobie sprawę, że przyda się on jedynie osobom, które programują w <strong>php</strong> z wykorzystaniem <strong>frameworka Yii</strong>, ale mimo to, zawsze komuś zaoszczędzi troszkę czasu, który musiał by poświęcić na samodzielne tłumaczenie.<span id="more-657"></span></p>
<h2 style="text-align: justify;">Co to jest Srbac?</h2>
<p style="text-align: justify;">Srbac to gotowy moduł do Yii, który pozwala w wygodny i kompleksowy sposób zarządzać uprawnieniami w tym <strong>frameworku</strong>.</p>
<p><a href="http://blog.poslinski.net/wp-content/uploads/2010/12/srbac.zip">Pobierz polskie tłumaczenie Srbac 1.1.1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.poslinski.net/yii-srbac-po-polsku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jak posprzątać HTML?</title>
		<link>http://blog.poslinski.net/jak-posprzatac-html/</link>
		<comments>http://blog.poslinski.net/jak-posprzatac-html/#comments</comments>
		<pubDate>Mon, 03 May 2010 14:18:19 +0000</pubDate>
		<dc:creator>Dawid Pośliński</dc:creator>
				<category><![CDATA[ciekawostki]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[bezpieczeństwo]]></category>
		<category><![CDATA[htmlpurifier]]></category>
		<category><![CDATA[strip_tags]]></category>

		<guid isPermaLink="false">http://blog.poslinski.net/?p=589</guid>
		<description><![CDATA[Każdy programista webowy, stanął lub stanie przed zadaniem zablokowania możliwości wprowadzania kodu HTML do jego aplikacji przez użytkownika, który nie jest do tego uprawniony. Czasami jednak zdarza się tak, że chcemy dać możliwość użytkownikowi na wprowadzania formatowania, a nie, żeby było jak najprostsze wykorzystujemy do tego HTML. Do tego zadania, świetnie nadaje się biblioteka do [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.poslinski.net/wp-content/uploads/2010/05/jakposprzatachtml1.png"><img src="http://blog.poslinski.net/wp-content/uploads/2010/05/jakposprzatachtml1.png" alt="" title="jakposprzatachtml" width="620" height="150" class="aligncenter size-full wp-image-596" /></a>Każdy programista webowy, stanął lub stanie przed zadaniem zablokowania możliwości wprowadzania kodu HTML do jego aplikacji przez użytkownika, który nie jest do tego uprawniony. Czasami jednak zdarza się tak, że chcemy dać możliwość użytkownikowi na wprowadzania formatowania, a nie, żeby było jak najprostsze wykorzystujemy do tego HTML.<br />
<span id="more-589"></span><br />
Do tego zadania, świetnie nadaje się biblioteka do której korzystania chciałbym zachęcić. <strong>HTMLPurifier</strong> bo o niej mowa, potrafi nie tylko wyciąć zbędne tagi (co również można wykonać za pomocą wbudowanej w PHP funkcji strip_tags), ale również wyciąć zbędne atrybuty CSS (znajdujące się w atrybucie style znacznika), czy też konkretne atrybuty wewnątrz tagu.<br />
HTMLPurifier znajduje również znaczniki bez treści, zamienia adresy ftp, http, https itd. na linki, a nawet linki do serwisu YouTube kod embeddujący player Google&#8217;a. Stara się również poprawić niepoprawny kod np. poprzez samodzielne domykanie, niezamkniętych znaczników itp.<br />
Posiada również rozbudowany mechanizm cache&#8217;owania.</p>
<h2>Gdzie szukać?</h2>
<p>Polecam odwiedzić <a href="http://htmlpurifier.org">stronę projektu</a>, a w szczególności dział <a href="http://htmlpurifier.org/demo.php">demo</a>, który przedstawia namiastkę możliwości tej biblioteki. Bardzo dobrze skonstruowana dokumentacja, opisuje wszystkie funkcjonalności dostępne w tej bibliotece.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.poslinski.net/jak-posprzatac-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: Szukamy sumy i NWD</title>
		<link>http://blog.poslinski.net/php-szukamy-sumy-i-nwd/</link>
		<comments>http://blog.poslinski.net/php-szukamy-sumy-i-nwd/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 19:47:38 +0000</pubDate>
		<dc:creator>Dawid Pośliński</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[algorytm]]></category>
		<category><![CDATA[gotowe rozwiązania]]></category>
		<category><![CDATA[matematyka]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://blog.poslinski.net/?p=103</guid>
		<description><![CDATA[Poproszono mnie o napisanie, prostej aplikacji, której działanie miało by polegać na analizie pliku wejściowego, którego linia miała by następującą składnie &#8222;liczba1 liczba2 &#8230; liczbaN&#8221;, z dowolną ilością linii o właśnie takiej składni. Celem aplikacji było by zsumowanie wszystkich składników danej linii i zapisanie sum w analogicznym pliku wyjściowym suma.txt, lub znalezienie NWD składników z [...]]]></description>
			<content:encoded><![CDATA[<p>Poproszono mnie o napisanie, prostej aplikacji, której działanie miało by polegać na analizie pliku wejściowego, którego linia miała by następującą składnie &#8222;liczba1 liczba2 &#8230; liczbaN&#8221;, z dowolną ilością linii o właśnie takiej składni. Celem aplikacji było by zsumowanie wszystkich składników danej linii i zapisanie sum w analogicznym pliku wyjściowym suma.txt, lub znalezienie NWD składników z każdej linii i również zapisanie ich w analogicznym pliku nwd.txt.</p>
<p><span id="more-103"></span></p>
<h2>Opis rozwiązania</h2>
<p>Problem nie jest skomplikowany, a jego rozwiązanie sprowadza się do kilku lini kodu.</p>
<p>W moim przypadku, pobrałem całą zawartość pliku input.txt, następnie korzystając z funkcją explode, zapisałem kolejne linie pliku do tablicy, oraz kolejne liczby z tablicy, oddzielone spacją zapisałem do tablicy dwuwymiarowej. Tym prostym sposobem, otrzymałem tablicę dwuwymiarową (ilość liczb w wierszu, może być różna) wyglądającą mniej, więcej tak:</p>
<p>linia1liczba1 linia1liczba2 &#8230; linia1liczbaN</p>
<p>linia2liczba1 linia2liczba2 &#8230; linia2liczbaN</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>liniaNliczba1 liniaNliczba2 &#8230; liniaNliczbaN</p>
<p>Następnie zastosowałem proste algorytmy, aby w tablicy suma i nwd, znalazły się poszukiwane przez nas wyniki, które omówione są w komentarzach do kodu.</p>
<p>Całość trafia do pliku wyjściowego, dla <strong>sumy</strong>:</p>
<p>suma1linii</p>
<p>suma2linii</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>sumaNlinii</p>
<p>oraz analogicznie dla <strong>NWD</strong>:</p>
<p>nwd1linii</p>
<p>nwd2linii</p>
<p>&#8230;&#8230;&#8230;&#8230;</p>
<p>nwd3linii</p>
<h2>Kod</h2>
<pre class="php" name="code">&lt;html&gt;&lt;head&gt;&lt;META http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;/head&gt;&lt;body&gt;

&lt;form method="post"&gt;
&lt;select name="tryb"&gt;
&lt;option value="suma"&gt; Zsumuj wiersze&lt;/option&gt;
&lt;option value="nwd"&gt; Znajdź największy wspólny dzielnik w wierszach&lt;/option&gt;
&lt;/select&gt;
&lt;input type="submit" value="Start" /&gt;
&lt;/form&gt;

&lt;?PHP if (file_exists("input.txt")) { ?&gt;
&lt;a href="input.txt"&gt;input.txt&lt;/a&gt;
&lt;?PHP } ?&gt;
&lt;?PHP if (file_exists("suma.txt")) { ?&gt;
&lt;a href="suma.txt"&gt;suma.txt&lt;/a&gt;
&lt;?PHP } ?&gt;
&lt;?PHP if (file_exists("nwd.txt")) { ?&gt;
&lt;a href="nwd.txt"&gt;nwd.txt&lt;/a&gt;
&lt;?PHP } ?&gt;

&lt;?PHP

$rows_array = explode("\n",file_get_contents("input.txt")); // powstanie nam tablica z wierwszami z pliku input.txt

foreach ($rows_array as $key =&gt; $value)
{
$row[$key] = explode(" ",$value); // Powstanie tablica 2 wymiarowa ( 1szy wymiar - numer wiersza, 2gi wymiar - element wiersza )
}

for ( $i=0; $i &lt; count($row); $i++ ) // będziemy sprawdzać kolejne wiersze
{
// NWD
// przykład algorytmu NWD: bierzemy dowolny element z wiersza i sprawdzamy czy nie jest dzielnnikiem,
// jeżeli nie jest schodzimy w dół o jeden, aż znajdziemy dzielenie wszystkich elementów bez reszty ( dzielenie modulo )
$nwd[$i] = $row[$i][0];

$szukam_dzielnik = true;

while ( $szukam_dzielnik )
{
$wynik = 0;

for ( $b=0; $b &lt; count($row[$i]); $b++ )
{
$wynik += ($row[$i][$b] % $nwd[$i]);
}

$nwd[$i]--; // dekrementacja

if ( $wynik == 0 ) // brak dzielenia z reszty - znaleźliśmy NWD szukając od góry
{
$szukam_dzielnik = false;
$nwd[$i]++;
}
}

// SUMA
for ( $b=0; $b &lt; count($row[$i]); $b++ )
{
$sum[$i] += $row[$i][$b]; // tablica suma będzie miała sumę kolejnych wierszy
}
}

if ( $_POST['tryb'] == "suma" )
{
$wynik = "";
foreach ( $sum as $value )
{
$wynik .= $value."\n"; // Z Tablicy sum wpisujemy do zmiennej wynik kolejne wiersze zakańczając je znakiem nowej lini
}

// ZAPIS DO PLIKU - WYMAGA UPRAWNIEŃ NA SERWERZE CHMOD 666 lub 777 gdyby nie działało
file_put_contents("suma.txt",$wynik);
// KONIEC ZAPISU
}

if ( $_POST['tryb'] == "nwd" )
{
$wynik = "";
foreach ( $nwd as $value )
{
$wynik .= $value."\n"; // Z Tablicy sum wpisujemy do zmiennej wynik kolejne wiersze zakańczając je znakiem nowej lini
}

// ZAPIS DO PLIKU - WYMAGA UPRAWNIEŃ NA SERWERZE CHMOD 666 lub 777 gdyby nie działało
file_put_contents("nwd.txt",$wynik);
// KONIEC ZAPISU
}

?&gt;

&lt;/body&gt;&lt;/html&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.poslinski.net/php-szukamy-sumy-i-nwd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

