<?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>vsemaphore::net</title>
	<atom:link href="http://vsemaphore.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://vsemaphore.net</link>
	<description>A little developer blog...</description>
	<lastBuildDate>Mon, 27 Apr 2009 14:29:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Xerox 6125n</title>
		<link>http://vsemaphore.net/2009/04/25/xerox-6125n/</link>
		<comments>http://vsemaphore.net/2009/04/25/xerox-6125n/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 19:54:03 +0000</pubDate>
		<dc:creator>vsemaphore</dc:creator>
				<category><![CDATA[administracja]]></category>
		<category><![CDATA[6125n]]></category>
		<category><![CDATA[drukara]]></category>
		<category><![CDATA[phaser]]></category>
		<category><![CDATA[sieć]]></category>
		<category><![CDATA[windrukarka]]></category>
		<category><![CDATA[xerox]]></category>

		<guid isPermaLink="false">http://vsemaphore.net/?p=60</guid>
		<description><![CDATA[Dziś wieczorem z moich ust padło szczere: „Uff”. Udało mi się zmusić mojego Xeroxa 6125n, który jest tzw. „windrukarką” do działania z Ubuntu 9.10!
Sposób jest niezmiernie prosty. Na stronie http://openprinting.org/show_printer.cgi?recnum=Xerox-Phaser_6125 znalazłem informacje, że kiku sobą udało się ją uruchomić z Ubuntu i Mac OS X. Poszedłem tym tropem.
Z adresu http://www.fujixerox.com.au/support/downloaddriver?productId=307&#38;operatingSystemCode=Linux zciągnąłem sterowniki do drukarki FX [...]]]></description>
			<content:encoded><![CDATA[<p>Dziś wieczorem z moich ust padło szczere: „Uff”. Udało mi się zmusić mojego Xeroxa 6125n, który jest tzw. „windrukarką” do działania z Ubuntu 9.10!</p>
<p>Sposób jest niezmiernie prosty. Na stronie <a href="http://openprinting.org/show_printer.cgi?recnum=Xerox-Phaser_6125">http://openprinting.org/show_printer.cgi?recnum=Xerox-Phaser_6125</a> znalazłem informacje, że kiku sobą udało się ją uruchomić z Ubuntu i Mac OS X. Poszedłem tym tropem.</p>
<p>Z adresu <a href="http://www.fujixerox.com.au/support/downloaddriver?productId=307&amp;operatingSystemCode=Linux">http://www.fujixerox.com.au/support/downloaddriver?productId=307&amp;operatingSystemCode=Linux</a> zciągnąłem sterowniki do drukarki <em>FX DocuPrint C525 A-AP v1.0</em>. W archiwum znajdował się plik rpm. Przekonwerterowałem go za pomocą narzędzia alien do archiwum deb po czym zainstalowałem. Następnie w menu <em>System → Administracja → Drukowanie</em> dodałem nową drukarkę. System znalazł ją w sieci. Wybrałem ręcznie sterownik (producent <em>FX</em>, model <em>DocuPrint C525 A-AP</em>). Ilość pamięci RAM ustawiłem na 64 MB, a dodatkowy podajnik papieru na 250 arkuszy (w innym wypadku będziemy drukować jedynie z ręcznego podajnika). Następna strona to już tylko nazwa i położenie drukarki, które można wypełnić wg własnej fantazji. Po zakończeniu działania kreatora pojawi się okno właściwości drukarki. Ważne aby nie zapomnieć o wybraniu dodatkowego podajnika papieru jako domyślnego. Po tych zabiegach możemy już śmiało drukować wprost z Ubuntu.</p>
]]></content:encoded>
			<wfw:commentRss>http://vsemaphore.net/2009/04/25/xerox-6125n/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Narzędzia</title>
		<link>http://vsemaphore.net/2009/04/13/narzedzia/</link>
		<comments>http://vsemaphore.net/2009/04/13/narzedzia/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 08:40:23 +0000</pubDate>
		<dc:creator>vsemaphore</dc:creator>
				<category><![CDATA[utils]]></category>
		<category><![CDATA[narzędzia]]></category>
		<category><![CDATA[varia]]></category>

		<guid isPermaLink="false">http://vsemaphore.net/?p=57</guid>
		<description><![CDATA[Postanowiłem pod adres http://vsemaphore.net/utils/ wrzucać mniej lub bardziej przydatne narzędzia online. Na razie są dwa: md5/sha1/crc32/base64 encoder (chciałem mieć to wreszcie w jednym miejscu, bo czasem szlag mnie trafiał jak potrzebowałem coś szybko „odbaseować”) i generator papieru kancelaryjnego&#8230; Nie pytajcie po co mi to było ;)
]]></description>
			<content:encoded><![CDATA[<p>Postanowiłem pod adres <a href="http://vsemaphore.net/utils/">http://vsemaphore.net/utils/</a> wrzucać mniej lub bardziej przydatne narzędzia online. Na razie są dwa: md5/sha1/crc32/base64 encoder (chciałem mieć to wreszcie w jednym miejscu, bo czasem szlag mnie trafiał jak potrzebowałem coś szybko „odbaseować”) i generator papieru kancelaryjnego&#8230; Nie pytajcie po co mi to było ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://vsemaphore.net/2009/04/13/narzedzia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mnogość PHP</title>
		<link>http://vsemaphore.net/2009/03/03/mnogosc-php/</link>
		<comments>http://vsemaphore.net/2009/03/03/mnogosc-php/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 22:44:28 +0000</pubDate>
		<dc:creator>vsemaphore</dc:creator>
				<category><![CDATA[administracja]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://vsemaphore.net/?p=44</guid>
		<description><![CDATA[Poczułem wewnętrzy imperatyw instalacji PHP w wersji 5.3. Jako że  instalacja wielu wersji PHP w Apache&#8217;u jest możliwa (1 jako moduł + wiele jako CGI/FastCGI) postanowiłem pozostawić 5.2.6 z Debianowej paczki jako moduł Apache&#8217;a, a w vhostach postawić 5.3 i 6.0.
Do dzieła.
PHP 5.3
Ściągamy najnowszą paczkę źródeł:
wget http://snaps.php.net/php5.3-latest.tar.gz 
i wypakowujemy
tar xf php5.3-latest.tar.gz
przechodzimy do wypakowanego katalogu [...]]]></description>
			<content:encoded><![CDATA[<p>Poczułem wewnętrzy imperatyw instalacji PHP w wersji 5.3. Jako że  instalacja wielu wersji PHP w Apache&#8217;u jest możliwa (1 jako moduł + wiele jako CGI/FastCGI) postanowiłem pozostawić 5.2.6 z Debianowej paczki jako moduł Apache&#8217;a, a w vhostach postawić 5.3 i 6.0.<br />
Do dzieła.<br />
<strong>PHP 5.3</strong><br />
Ściągamy najnowszą paczkę źródeł:</p>
<blockquote><p><em>wget http://snaps.php.net/php5.3-latest.tar.gz </em></p></blockquote>
<p>i wypakowujemy</p>
<blockquote><p>tar xf php5.3-latest.tar.gz</p></blockquote>
<p>przechodzimy do wypakowanego katalogu i odpalamy skrypt „configure”, z odpowiadającymi nam parametrami, u mnie wyglądało to tak:</p>
<blockquote><p>./configure &#8211;disable-short-tags &#8211;with-openssl &#8211;with-zlib &#8211;enable-bcmath &#8211;with-bz2=/bin/bzip2 &#8211;enable-calendar &#8211;with-curl &#8211;with-curlwrappers &#8211;enable-exif &#8211;enable-ftp &#8211;with-gd &#8211;with-jpeg-dir=/usr/lib &#8211;with-png-dir=/usr/lib –with-xpm-dir=/usr/lib &#8211;with-t1lib &#8211;enable-gd-native-ttf &#8211;enable-gd-jis-conv &#8211;with-gettext &#8211;with-imap &#8211;with-imap-ssl &#8211;with-ldap &#8211;with-ldap-sasl &#8211;enable-mbstring &#8211;with-mcrypt &#8211;with-mhash &#8211;with-mysql=mysqlnd &#8211;with-mysqli=mysqlnd &#8211;with-pdo-mysql &#8211;with-pspell &#8211;with-readline &#8211;with-snmp &#8211;enable-soap &#8211;enable-sockets &#8211;with-sqlite &#8211;enable-sqlite-utf8 &#8211;with-tidy &#8211;enable-wddx &#8211;with-xmlrpc &#8211;with-xsl &#8211;enable-zip &#8211;with-pear &#8211;with-kerberos &#8211;prefix=/opt/php5.3</p></blockquote>
<p>Jako katalog instalacji wybrałem <em>/opt/php5.3</em>, aby zainstalować nową wersję równolegle z poprzednią.<br />
Następnie uruchamiamy kompilacje:</p>
<blockquote><p>make -j</p></blockquote>
<p>Fakt – uruchomienie make z bez limitu wątków, przymuli kompa, ale jako osoba niecierpliwa poświęciłem się, by skompilować szybciej.<br />
Warto uruchomić teraz make test dla sprawdzenia naszego świeżutkiego PHP.<br />
Odpalamy make install i po chwili możemy się cieszyć nowiusieńką wersją PHP!<br />
Dla pewności: <em>/opt/php5.3/bin/php-cgi -v</em>. Na konsoli powinno pojawić się <em>PHP 5.3.0beta2-dev (cgi-fcgi)</em>.<br />
Teraz czas na nowego vhosta. Używam Ubuntu, więc uruchomienie go jest dziecinnie proste. Przechodzimy do katalogu <em>/etc/apache2/</em> i do pliku <em>httpd.conf</em> dopisujemy linijkę</p>
<blockquote><p>NameVirtualHost *:80</p></blockquote>
<p>przechodzimy do <em>sites-avaible</em> i edytujemy <em>default</em>, ustawiamy <em>&lt;VirtualHost *:80&gt;</em>.<br />
W katalogu <em>sites-avaible</em> tworzymy plik <em>php53</em>. Przykładowa zawartość:</p>
<blockquote><p>&lt;VirtualHost *:80&gt;<br />
ServerName php53</p>
<p>DocumentRoot /home/vsemaphore/wwwphp53/<br />
&lt;Directory /&gt;<br />
Options FollowSymLinks<br />
AllowOverride All<br />
&lt;/Directory&gt;<br />
&lt;Directory /home/vsemaphore/wwwphp53/&gt;<br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride All<br />
Order allow,deny<br />
allow from all<br />
&lt;/Directory&gt;</p>
<p>ErrorLog /home/vsemaphore/wwwphp53/error.log<br />
LogLevel warn</p>
<p>CustomLog /home/vsemaphore/wwwphp53/access.log combined</p>
<p>AddType application/x-httpd-php53 .php<br />
ScriptAlias /php/ &#8220;/opt/php5.3/bin/&#8221;<br />
Action application/x-httpd-php53 &#8220;/php/php-cgi&#8221;</p>
<p>&lt;/VirtualHost&gt;</p></blockquote>
<p>Do pliku <em>/etc/hosts</em> dopisujemy</p>
<blockquote><p>127.0.0.1	php53</p></blockquote>
<p>Następnie aktywujemy vhosta (<em>a2ensite php53</em>) i restartujemy Apache&#8217;a. Od tego momentu po wejściu na adres <em>http://localhost</em> będziemy używać PHP w wersji zainstalowanej domyślnie w systemie jako moduł (u mnie 5.2.6), a poprzez <em>http://php53 </em>w wersji 5.3 poprzez CGI.</p>
<p><strong>PHP 6.0</strong><br />
Postępujemy analogicznie.<br />
Ściągamy:</p>
<blockquote><p>wget http://snaps.php.net/php6.0-latest.tar.gz</p></blockquote>
<p>Wypakowujemymy:</p>
<blockquote><p>tar xf php6.0-latest.tar.gz</p></blockquote>
<p>Przechodzimy do folderu i konfigurujemy. Tym razem jako katalog instalacji wybrałem: <em>/opt/php6.0</em></p>
<blockquote><p><em></em><br />
./configure &#8211;disable-short-tags &#8211;with-openssl &#8211;with-zlib &#8211;enable-bcmath &#8211;with-bz2=/bin/bzip2 &#8211;enable-calendar &#8211;with-curl &#8211;with-curlwrappers &#8211;enable-exif &#8211;enable-ftp &#8211;with-gd &#8211;with-jpeg-dir=/usr/lib &#8211;with-png-dir=/usr/lib –with-xpm-dir=/usr/lib &#8211;with-t1lib &#8211;enable-gd-native-ttf &#8211;enable-gd-jis-conv &#8211;with-gettext &#8211;with-imap &#8211;with-imap-ssl &#8211;with-ldap &#8211;with-ldap-sasl &#8211;enable-mbstring &#8211;with-mcrypt &#8211;with-mhash &#8211;with-mysql=mysqlnd &#8211;with-mysqli=mysqlnd &#8211;with-pdo-mysql &#8211;with-pspell &#8211;with-readline &#8211;with-snmp &#8211;enable-soap &#8211;enable-sockets &#8211;with-sqlite &#8211;enable-sqlite-utf8 &#8211;with-tidy &#8211;enable-wddx &#8211;with-xmlrpc &#8211;with-xsl &#8211;enable-zip &#8211;with-kerberos –prefix=/opt/php6.0</p></blockquote>
<p>Kompilujemy (<em>make</em>).<br />
Testujemy (<em>make test)</em><br />
Instalujemy(<em>make install</em>).<br />
Dodajemy analogicznie wpisy w <em>/etc/hosts</em> i nowy plik vhosta w <em>/etc/apache/sites-availbe</em>. Ważne, aby dla każdej konfiguracji użyć innego wpisu AddType (przykładowo: <em>AddType application/x-httpd-php53 .php</em> dla PHP 5.3 i <em>AddType application/x-httpd-php60 .php</em> dla PHP 6.0).<br />
Jeśli podczas kompilacji pojawią się błędy to prawdopodobnie nie masz wszystkich potrzebnych (w zależności jakie funkcjonalności wkompilowujesz w PHP) pakietów zainstalowanych w systemie. Dodatkowo potrzebujesz wczytać moduł <em>mod_action</em> do Apache&#8217;a.<br />
Uff..teraz powinno działać – czas sprawdzić w praktyce nowe możliwości języka.</p>
]]></content:encoded>
			<wfw:commentRss>http://vsemaphore.net/2009/03/03/mnogosc-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dawne czasy &#8211; kernel</title>
		<link>http://vsemaphore.net/2009/02/24/dawne-czasy-kernel/</link>
		<comments>http://vsemaphore.net/2009/02/24/dawne-czasy-kernel/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 08:57:25 +0000</pubDate>
		<dc:creator>vsemaphore</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[starocie]]></category>

		<guid isPermaLink="false">http://vsemaphore.net/?p=38</guid>
		<description><![CDATA[Na dziś dwie sprawy.
Pierwsza – kernel.
Przeglądając stos płyt leżących w jednym z kartonów za biurkiem, przypomniałem sobie o moim  zajęciu sprzed kilku lat&#8230; chyba 3 lub 4 jeśli mnie pamięć nie myli. Wtedy z młodzieńczą pasją zabrałem się za pisanie własnego systemu operacyjnego. Oczywiście nie miałem o tym zielonego pojęcia. Jedyne co posiadałem to [...]]]></description>
			<content:encoded><![CDATA[<p>Na dziś dwie sprawy.<br />
<strong>Pierwsza</strong> – <a href="http://vsemaphore.net/wp-content/uploads/2009/02/coretar.gz">kernel</a>.<br />
Przeglądając stos płyt leżących w jednym z kartonów za biurkiem, przypomniałem sobie o moim  zajęciu sprzed kilku lat&#8230; chyba 3 lub 4 jeśli mnie pamięć nie myli. Wtedy z młodzieńczą pasją zabrałem się za pisanie własnego systemu operacyjnego. Oczywiście nie miałem o tym zielonego pojęcia. Jedyne co posiadałem to znajomość podstaw C++. Dopiero pisząc kernel tak naprawdę nauczyłem się dopiero C. Ale po kolei&#8230;<br />
Po dzięki wędrówkom po kawiarenkach internetowych i szkolnych pracowniach (w tamtych czasach to były jedyne sposoby dostępne dla mnie, aby skorzystać z internetu) udało mi się zebrać trochę tutoriali i materiałów. W większości były to powtarzające się, absolutne podstawy, a ja chciałem czegoś więcej. Natchnąłem się na perełkę &#8211; stronę autorstwa bodajże Christophera Giesea – Operating System Development. Niestety już nie jest dostępną w sieci (kiedyś była pod adresem: <a title="http://my.execpc.com/~geezer" href="http://my.execpc.com/~geezer">http://my.execpc.com/~geezer</a>). Zawierała kody źródłowe i dokumentacje, która była dla mnie wtedy idealna. No mniejsza o szczegóły. Wiadomo – były i upadki i wzloty. Kilka razy od zaczynałem początku. Finalnie udało mi się napisaćć kernel, który działał w 32 bitach na procesorach i386, obsługiwał tryb tekstowy VGA, wielowątkowość z wywłaszczaniem, dynamiczną alokacje pamięci, obsługę wyjątków i przerwań sprzętowych i modułów kernela (ELF, COFF i a.out). Część kodu napisałem własnoręcznie, część zaczerpnąłem z tutoriala (funkcja printf,obsługa plików coff, elf a.out, funkcje napisane w assemblerze i kilka innych).<br />
Kernel, który znalazłem był ostatni raz kompilowany 15 sierpnia 2005, a więc chwilę temu. W kodzie jedynie zmieniłem kilka rzeczy, które ewidentnie „gryzły” w oczy. Udostępniam kod na nowej licencji BSD, więc kto chce niechaj <a href="http://vsemaphore.net/wp-content/uploads/2009/02/coretar.gz">pobiera</a>. (Uwaga! Pliki spakowałem jak leci, więc jest tam niezły b.. nieporządek).<br />
<strong>Druga</strong> – w sumie to już temat na osobną notkę.<br />
<em>P.S. Udało mi się znaleźć mirror stronki Giesea:<a title="http://geezer.osdevbrasil.net/osd/index.htm" href=" http://geezer.osdevbrasil.net/osd/index.htm" target="_blank"> http://geezer.osdevbrasil.net/osd/index.htm</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://vsemaphore.net/2009/02/24/dawne-czasy-kernel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eh ta rekurencja&#8230;</title>
		<link>http://vsemaphore.net/2008/07/23/eh-ta-rekurencja/</link>
		<comments>http://vsemaphore.net/2008/07/23/eh-ta-rekurencja/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 08:42:19 +0000</pubDate>
		<dc:creator>vsemaphore</dc:creator>
				<category><![CDATA[varia programistyczna]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[varia]]></category>

		<guid isPermaLink="false">http://vsemaphore.net/blog/?p=27</guid>
		<description><![CDATA[Zagadnienie było z pozoru proste. Potrzebowałem za pomocą SQL-a wyciągać z bazy wszystkie podkategorie dla danej kategorii w sklepie. Typowe drzewo. Od razu przychodzi na myśl rozwiązanie: funkcja/procedura rekurencyjna&#8230; niestety w MySQL-u nie jest to takie proste&#8230;Nie pozwala nam on na ich Tworzenie. Po dłuższym czasie wpadłem na rozwiązanie, które zamieszczam poniżej. Nie jest ono [...]]]></description>
			<content:encoded><![CDATA[<p>Zagadnienie było z pozoru proste. Potrzebowałem za pomocą SQL-a wyciągać z bazy wszystkie podkategorie dla danej kategorii w sklepie. Typowe drzewo. Od razu przychodzi na myśl rozwiązanie: funkcja/procedura rekurencyjna&#8230; niestety w MySQL-u nie jest to takie proste&#8230;Nie pozwala nam on na ich Tworzenie. Po dłuższym czasie wpadłem na rozwiązanie, które zamieszczam poniżej. Nie jest ono zbytnio eleganckie. Oto ono:</p>
<blockquote><p>DROP PROCEDURE IF EXISTS getTreeElements;<br />
DELIMITER //<br />
CREATE PROCEDURE getTreeElements(root INT(8))<br />
BEGIN<br />
DROP TABLE IF EXISTS TreeElementsTemporaryTable;<br />
CREATE TABLE TreeElementsTemporaryTable (id BIGINT NOT NULL, depth INT NOT NULL, UNIQUE (id));</p>
<p>SET @parent = root, @depth = 0;<br />
INSERT INTO TreeElementsTemporaryTable VALUES (root, @depth);<br />
mlp: LOOP<br />
set @depth = @depth + 1;<br />
SELECT COUNT(*) FROM TreeElementsTemporaryTable INTO @pre;</p>
<p>INSERT INTO TreeElementsTemporaryTable<br />
SELECT node.id, @depth FROM TreeElementsStorageTable AS node, TreeElementsTemporaryTable AS nn<br />
WHERE node.parent_id = nn.id<br />
ON DUPLICATE KEY UPDATE TreeElementsTemporaryTable.id = node.id;</p>
<p>SELECT COUNT(*) FROM TreeElementsTemporaryTable INTO @post;</p>
<p>IF @post = @pre THEN LEAVE mlp; END IF;<br />
END LOOP;</p>
<p>SELECT id FROM TreeElementsTemporaryTable; #tutaj wstaw Twoją kwerende</p>
<p>DROP TABLE TreeElementsTemporaryTable;<br />
END//<br />
DELIMITER ;</p></blockquote>
<p>Małe wyjaśnienie:<br />
TreeElementsTemporaryTable – nazwa tabeli przechowującej tymczasowe wyniki. Niestety tabela ta nie może być tabelą tymczasową (temporary table), gdyż do takich tabel możemy tworzyć jedynie jedno połączenie w zapytaniu, a jak widać powyżej potrzebowałem ich więcej.<br />
TreeElementsStorageTable – tabela z danymi drzewa. W moim wypadku była to tabela o takiej strukturze:</p>
<blockquote><p>CREATE TABLE IF NOT EXISTS `TreeElementsStorageTable` (<br />
`id` bigint(20) NOT NULL auto_increment,<br />
`parent_id` bigint(20) NOT NULL default &#8216;0&#8242;,<br />
`name` varchar(255) NOT NULL,<br />
PRIMARY KEY  (`id`),<br />
KEY `parent_id` (`parent_id`)<br />
);</p></blockquote>
<p>Rozwiązanie niezbyt eleganckie, które stwarza dużo nadmiarowego ruchu, ale po kolei. Na początku do tabeli tymczasowej dodaje id głównego elementu, a następnie w każdym obiegu pętli dodaje to tej tabeli id tych elementów, których id rodzica już się znajduje w tej tabeli. Za każdym razem porównuje ilość wpisów przed i po aktualizacji tabeli tymczasowej. Gdy te liczby są sobie równe, oznacza to że już nie dodałem żadnego nowego elementu, a więc dotarłem do końca drzewa.<br />
Jeśli, ktoś ma lepszy pomysł na rozwiązanie tego problemu niech śmiało pisze w komentarzach. Do usłyszenia.</p>
]]></content:encoded>
			<wfw:commentRss>http://vsemaphore.net/2008/07/23/eh-ta-rekurencja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
