<?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>Michał Borek - tech blog &#187; C++</title>
	<atom:link href="http://www.greenpath.pl/category/cpp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.greenpath.pl</link>
	<description>Techblog</description>
	<lastBuildDate>Tue, 11 May 2010 10:15:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nvidia PhysX Visual Debugger</title>
		<link>http://www.greenpath.pl/2009/08/nvidia-physx-visual-debugger/</link>
		<comments>http://www.greenpath.pl/2009/08/nvidia-physx-visual-debugger/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 02:07:54 +0000</pubDate>
		<dc:creator>Michał Borek</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[backgammon]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[physx]]></category>

		<guid isPermaLink="false">http://www.greenpath.pl/?p=102</guid>
		<description><![CDATA[Dotychczas moje debugowanie Physx&#8217;a ograniczało się do debugowania kodu c++ i ręcznego dopasowywania brył otaczających obiekty, które chciałem uwzględnić przy obliczaniu kolizji.
Dziś wpadł mi w ręce PhysX Visual Debugger firmy NVidia. Aplikacja ta zdalnie debuguje scenę stworzoną przy użyciu silnika Physx. Wizualizuje ona zarówno aktorów (obiekty, z którymi liczone są kolizje) jak i wiele innych [...]]]></description>
			<content:encoded><![CDATA[<p>Dotychczas moje debugowanie Physx&#8217;a ograniczało się do debugowania kodu c++ i ręcznego dopasowywania brył otaczających obiekty, które chciałem uwzględnić przy obliczaniu kolizji.</p>
<p>Dziś wpadł mi w ręce <a href="/tag/physx/">PhysX</a> Visual Debugger firmy <a title="NVidia" href="/tag/nvidia">NVidia</a>. Aplikacja ta zdalnie debuguje scenę stworzoną przy użyciu silnika <a href="/tag/physx/">Physx</a>. Wizualizuje ona zarówno aktorów (obiekty, z którymi liczone są kolizje) jak i wiele innych parametrów, w tym:</p>
<ul>
<li>bryły otaczające &#8211; bryły, z którymi przeprowadzane są uproszczone testy kolizji</li>
<li>wektory prędkości</li>
<li>stan obiektu &#8211; pokazuje, czy obiekt jest uśpiony, czy występuje kolizja z innym obiektem itd.</li>
<li>itd.</li>
</ul>
<p>Dodatkowo debugger pokazuje wszystkie parametry aktorów, dzięki czemu możemy w łatwy sposób wychwycić błąd.</p>
<p>Dzięki tej aplikacji udało mi się zauważyć błąd w tworzonej obecnie grze <a href="/tag/backgammon">backgammon</a>, którego nie dało się zauważyć inaczej, a który powodował dziwne zachowywanie się pionków.</p>
<p>Poniżej krótkie wideo z testowania gry z wykorzystaniem Physx Visual Debugger.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/dC71st1xLr0&amp;hl=pl&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/dC71st1xLr0&amp;hl=pl&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>PhysX Remote Debugger dostępny jest do ściągnięcia na stronie: <a title="Physx Visual Debugger" href="http://developer.nvidia.com/object/pvd_home.html">http://developer.nvidia.com/object/pvd_home.html</a></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.greenpath.pl/2009/08/nvidia-physx-visual-debugger/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.greenpath.pl/2009/08/nvidia-physx-visual-debugger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backgammon &#8211; kolizje z planszą</title>
		<link>http://www.greenpath.pl/2009/08/backgammon-kolizje-z-plansza/</link>
		<comments>http://www.greenpath.pl/2009/08/backgammon-kolizje-z-plansza/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 11:00:27 +0000</pubDate>
		<dc:creator>Michał Borek</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[backgammon]]></category>
		<category><![CDATA[physx]]></category>

		<guid isPermaLink="false">http://www.greenpath.pl/?p=98</guid>
		<description><![CDATA[Zaimplementowałem mechanizm Mesh Materials silnika Physx pozwalający na definicję skomplikowanych obiektów, z którymi kalkulowane będą kolizje. Mechanizm ten posłużył do detekcji kolizji kostek do rzucania z planszą w grze Backgammon. Efekt znajduje się na poniższym filmiku.

Share on Facebook]]></description>
			<content:encoded><![CDATA[<p>Zaimplementowałem mechanizm Mesh Materials silnika <a title="PhysX" href="/tag/physx/">Physx</a> pozwalający na definicję skomplikowanych obiektów, z którymi kalkulowane będą kolizje. Mechanizm ten posłużył do detekcji kolizji kostek do rzucania z planszą w grze <a title="Backgammon" href="/tag/backgammon">Backgammon</a>. Efekt znajduje się na poniższym filmiku.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/8im-SgW405k&amp;hl=pl&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/8im-SgW405k&amp;hl=pl&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.greenpath.pl/2009/08/backgammon-kolizje-z-plansza/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.greenpath.pl/2009/08/backgammon-kolizje-z-plansza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back to Backgammon :)</title>
		<link>http://www.greenpath.pl/2009/08/back-to-backgammon/</link>
		<comments>http://www.greenpath.pl/2009/08/back-to-backgammon/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 02:29:30 +0000</pubDate>
		<dc:creator>Michał Borek</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[backgammon]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[physx]]></category>

		<guid isPermaLink="false">http://www.greenpath.pl/?p=91</guid>
		<description><![CDATA[Rok temu zacząłem tworzyć grę w oparciu o OpenGL. Grą tą był Backgammon, jedna z najstarszych gier świata. Chciałem stworzyć wszystko w 3d i zachować jak największy realizm, co okazało się trudnym zadaniem dla początkującego programisty tego typu aplikacji.
Po kilku miesiącach przerwy zasiadłem do pracy ponownie. Zacząłem bawić się silnikiem Physx firmy NVidia, aby gra [...]]]></description>
			<content:encoded><![CDATA[<p>Rok temu zacząłem tworzyć grę w oparciu o OpenGL. Grą tą był Backgammon, jedna z najstarszych gier świata. Chciałem stworzyć wszystko w 3d i zachować jak największy realizm, co okazało się trudnym zadaniem dla początkującego programisty tego typu aplikacji.</p>
<p>Po kilku miesiącach przerwy zasiadłem do pracy ponownie. Zacząłem bawić się silnikiem Physx firmy NVidia, aby gra była bardziej realna. Jak to bywa, co chwilę napotykam na problemy, z którymi męczę się przez kilka godzin, a rozwiązanie okazuje się banalne <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Poniżej 2 filmiki z etapów tworzenia gry <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  To dopiero sam początek, więc za bardzo nie ma czym się zachwycać, ale pokazują one mniej więcej, jak będzie wyglądać gra.</p>
<p>Poniższe filmiki pokazują działanie silnika fizycznego do obsługi kostek. Na razie nie są brane pod uwagę kolizje z planszą, a jedynie pomiędzy kostkami. Kolejnym etapem są kolizje z planszą oraz z pionkami.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/smNRmJzK0r4&#038;hl=pl&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/smNRmJzK0r4&#038;hl=pl&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
Etap 1</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/PHtYONEtfBE&#038;hl=pl&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PHtYONEtfBE&#038;hl=pl&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
Etap 2</p>
<p>Nie wiem kiedy powstanie etap 3, ale mam nadzieję, że niedługo..</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.greenpath.pl/2009/08/back-to-backgammon/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.greenpath.pl/2009/08/back-to-backgammon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rozproszony Ray Tracing</title>
		<link>http://www.greenpath.pl/2009/05/rozproszony-ray-tracing/</link>
		<comments>http://www.greenpath.pl/2009/05/rozproszony-ray-tracing/#comments</comments>
		<pubDate>Sat, 30 May 2009 13:12:00 +0000</pubDate>
		<dc:creator>Michał Borek</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Grafika]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Ray Tracing]]></category>
		<category><![CDATA[distributed systems]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://www.greenpath.pl/?p=35</guid>
		<description><![CDATA[Na zajęcia z systemów rozproszonych postanowiłem rozwinąć lekko swój projekt ray tracera, tworzony w zeszłym roku.
Projekt oparty został o bibliotekę QT w wersji 4.5. Komunikacja odbywa się za pomocą socketów TCP.
Architektura tego rozwiązania opiera się o 3 elementy:

Klient &#8211; program, w którym operuje użytkownik chcący wygenerować obraz metoda ray tracing.
Serwer zarządzający &#8211; który rozsyła części [...]]]></description>
			<content:encoded><![CDATA[<p>Na zajęcia z systemów rozproszonych postanowiłem rozwinąć lekko swój projekt ray tracera, tworzony w zeszłym roku.</p>
<p>Projekt oparty został o bibliotekę <a title="Qt library" href="http://qtsoftware.com" target="_blank">QT</a> w wersji 4.5. Komunikacja odbywa się za pomocą socketów TCP.</p>
<p>Architektura tego rozwiązania opiera się o 3 elementy:</p>
<ul>
<li>Klient &#8211; program, w którym operuje użytkownik chcący wygenerować obraz metoda ray tracing.</li>
<li>Serwer zarządzający &#8211; który rozsyła części obrazu do generowania przez serwery robocze</li>
<li>Serwery robocze &#8211; pracujące nad generowaniem poszczególnych części obrazu.</li>
</ul>
<p>Jak to bywa w projektach studenckich, także i ten jest napisany obecnie dość chaotycznie i zawiera na pewno wiele błędów. Będą one jednak usuwane z biegiem czasu, a w chwili obecnej istotne jest raczej to, że projekt mniej więcej działa <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Na początek jeden screen klienta:</p>
<p><img class="aligncenter size-medium wp-image-36" title="Distributed Ray Tracing - client" src="http://www.greenpath.pl/wp-content/uploads/2009/05/client-300x208.png" alt="Distributed Ray Tracing - client" width="300" height="208" /></p>
<p>Projekt został wrzucony na <a href="http://code.google.com">code.google.com</a> i znajduje się pod adresem: <a href="http://code.google.com/p/distributedraytracing/">http://code.google.com/p/distributedraytracing/</a>.</p>
<p>Sama biblioteka ray tracera jest osobną dll&#8217;ką i jest nieco niedopracowana. Postaram się, bliżej wakacji, poprawić wszystkie błędy w niej zawarte i wprowadzić obsługę standardowych formatów scen (obecnie stosowany jest system niestandardowy, lecz dorzucone są przykładowe sceny).</p>
<p>Postaram się w przyszłości opisać niektóre fragmenty tego rozwiązania.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.greenpath.pl/2009/05/rozproszony-ray-tracing/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.greenpath.pl/2009/05/rozproszony-ray-tracing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenCL &#8211; język obliczeń równoległych &#8211; już jest!</title>
		<link>http://www.greenpath.pl/2008/12/opencl-jezyk-obliczen-rownoleglych-juz-jest/</link>
		<comments>http://www.greenpath.pl/2008/12/opencl-jezyk-obliczen-rownoleglych-juz-jest/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 22:01:14 +0000</pubDate>
		<dc:creator>Michał Borek</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[NVidia CUDA]]></category>
		<category><![CDATA[Cell]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[GPGPU]]></category>
		<category><![CDATA[OpenCL]]></category>

		<guid isPermaLink="false">http://www.greenpath.pl/?p=23</guid>
		<description><![CDATA[5 grudnia br.  została upubliczniona wersja 1.0 specyfikacji języka OpenCL (Open Computing Language), który ma być pomostem pomiędzy API poszczególnych technologii równoległego przetwarzania danych na GPU i CPU (między innymi w technologii NVidia CUDA, ATI Stream na procesorach Cell (tych z PS3  ).
Khronos Group (twórca specyfikacji) chwali się tym, iż język ten ma zapewnić [...]]]></description>
			<content:encoded><![CDATA[<p>5 grudnia br.  została upubliczniona wersja 1.0 specyfikacji języka OpenCL (Open Computing Language), który ma być pomostem pomiędzy API poszczególnych technologii równoległego przetwarzania danych na GPU i CPU (między innymi w technologii <a title="NVIDIA CUDA" href="http://www.greenpath.pl/tag/cuda/">NVidia CUDA</a>, ATI Stream na procesorach Cell (tych z PS3 <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>Khronos Group (twórca specyfikacji) chwali się tym, iż język ten ma zapewnić pełną niezależność języka od wykorzystanej technologii, a lista firm zaangażowanych w projekt, czyli: 3DLABS, Activision Blizzard, AMD, Apple, ARM, Barco, Broadcom, Codeplay, Electronic Arts, Ericsson, Freescale, HI, IBM, Intel, Imagination Technologies, Kestrel Institute, Motorola, Movidia, Nokia, NVIDIA, QNX, RapidMind, Samsung, Seaweed, Takumi, Texas Instruments i Umeå University uspokaja mnie, jeżeli chodzi o powodzenie tego projektu <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Wcześniej zajmowałem się stricte technologią <a title="NVidia CUDA" href="http://www.greenpath.pl/tag/cuda/">CUDA</a>, ale z racji tego iż gdzieś na półce kurzy się moje PS3, to technologię tą zacznę wykorzystywać z jeszcze większą chęcią.</p>
<p>W najbliższym czasie postaram się opisać szerzej język OpenCL (jak tylko przeczytam specyfikację <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), a także sprawdzę na ile język ten jest wygodny, elastyczny i.. czy działa.</p>
<p>A jeżeli zadziała, może być ciekawie <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.greenpath.pl/2008/12/opencl-jezyk-obliczen-rownoleglych-juz-jest/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.greenpath.pl/2008/12/opencl-jezyk-obliczen-rownoleglych-juz-jest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CUDA &#8211; przykład (dodawanie wektorów)</title>
		<link>http://www.greenpath.pl/2008/11/cuda-przyklad-dodawanie-wektorow/</link>
		<comments>http://www.greenpath.pl/2008/11/cuda-przyklad-dodawanie-wektorow/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 17:17:06 +0000</pubDate>
		<dc:creator>Michał Borek</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[NVidia CUDA]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[NVIDIA]]></category>

		<guid isPermaLink="false">http://www.greenpath.pl/?p=15</guid>
		<description><![CDATA[Na początek taki szkolny przykład dodawanie do siebie dwóch tablic wektorów.
Dodawanie kolejnych par wektorów odbywa się na karcie graficznej. Odpowiada za to funkcja vecAdd z kwalifikatorem __global__.
Kwalifikator ten oznacza, że funkcja może być wykonywana zarówno jako host (CPU) jak i device (GPU).
Prosty kod odpowiadający za dodawanie 2 wektorów
#include &#60;stdio.h&#62;
#include &#60;cutil.h&#62;
__global__ void vecAdd (float3 a[10], float3 [...]]]></description>
			<content:encoded><![CDATA[<p>Na początek taki szkolny przykład dodawanie do siebie dwóch tablic wektorów.</p>
<p>Dodawanie kolejnych par wektorów odbywa się na karcie graficznej. Odpowiada za to funkcja vecAdd z kwalifikatorem __global__.<br />
Kwalifikator ten oznacza, że funkcja może być wykonywana zarówno jako host (CPU) jak i device (GPU).</p>
<p>Prosty kod odpowiadający za dodawanie 2 wektorów</p>
<pre>#include &lt;stdio.h&gt;
#include &lt;cutil.h&gt;
__global__ void vecAdd (float3 a[10], float3 b[10]) {
int i = threadIdx.x;
a[i].x += b[i].x;
a[i].y += b[i].y;
a[i].z += b[i].z;
}

int main(int argc, char** argv) {

CUT_DEVICE_INIT(argc, argv); // inicjalizacja GPU

float3 *a_h, *b_h, *a_d, *b_d, *result;
int arraySize = 10;
int sizeInBytes = arraySize * sizeof(float3);
a_h = (float3*)malloc(sizeInBytes); // inicjalizacja tablic (na hoscie)
b_h = (float3*)malloc(sizeInBytes);
result = (float3*)malloc(sizeInBytes);

CUDA_SAFE_CALL(cudaMalloc((void**)&amp;a_d, sizeInBytes)); // inicjalizacja tablic na GPU
CUDA_SAFE_CALL(cudaMalloc((void**)&amp;b_d, sizeInBytes));

for(int i = 0; i &lt; arraySize; i++) { // przykładowe dane
a_h[i].x = 100.0f + i;
a_h[i].y = 200.0f + i;
a_h[i].z = 300.0f + i;
b_h[i].x = 50.0f + i;
b_h[i].y = 50.0f + i;
b_h[i].z = 50.0f + i;
}

CUDA_SAFE_CALL(cudaMemcpy(a_d, a_h, sizeInBytes, cudaMemcpyHostToDevice));
// kopiujemy tablicę z hosta do GPU
CUDA_SAFE_CALL(cudaMemcpy(b_d, b_h, sizeInBytes, cudaMemcpyHostToDevice));

vecAdd&lt;&lt;&lt;1, arraySize&gt;&gt;&gt;(a_d, b_d); // wykonujemy dodawanie
CUDA_SAFE_CALL(cudaMemcpy(result, a_d, sizeInBytes, cudaMemcpyDeviceToHost));
// kopiujemy z powrotem

for(int i = 0; i &lt; arraySize; i++){
printf("Wartość %d.elementu %f, %f, %f \n", i, result[i].x,
result[i].y, result[i].z); // wyswietlamy <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
}

CUT_EXIT(0, NULL); // koniec
}</pre>
<p>Wydaje się proste <img src='http://www.greenpath.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>W przyszłości postaram się opisać po kolei wszystkie szczegóły.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.greenpath.pl/2008/11/cuda-przyklad-dodawanie-wektorow/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.greenpath.pl/2008/11/cuda-przyklad-dodawanie-wektorow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
