<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Laboratorium kodu</title>
	
	<link>http://code-laboratory.com</link>
	<description />
	<lastBuildDate>Tue, 27 Jul 2010 17:53:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/LaboratoriumKodu" /><feedburner:info uri="laboratoriumkodu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Skrypt powiadomień do Ubuntu</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/-u6Z5tg_0mg/skrypt-powiadomien-do-ubuntu</link>
		<comments>http://code-laboratory.com/ubuntu/skrypt-powiadomien-do-ubuntu#comments</comments>
		<pubDate>Tue, 27 Jul 2010 17:27:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://code-laboratory.com/?p=82</guid>
		<description><![CDATA[Moja przygoda z bashem zaczęła się całkiem niedawno. Na studiach miałem przedmiot „systemy operacyjne” i od razu mnie to zaciekawiło, jak wiele fajnych rzeczy można z tym zrobić. Napisałem skrypt, który wykorzystuje powiadomienia w Ubuntu, wyświetlające ciekawe cytaty. Podczas siedzenia przed komputerem może to być ciekawa odskocznia od codziennej pracy.

Cytaty Jana Pawła II
Z pewnością wszyscy [...]]]></description>
			<content:encoded><![CDATA[<p>Moja przygoda z bashem zaczęła się całkiem niedawno. Na studiach miałem przedmiot „systemy operacyjne” i od razu mnie to zaciekawiło, jak wiele fajnych rzeczy można z tym zrobić. Napisałem skrypt, który wykorzystuje powiadomienia w Ubuntu, wyświetlające ciekawe cytaty. Podczas siedzenia przed komputerem może to być ciekawa odskocznia od codziennej pracy.<br />
<span id="more-82"></span></p>
<h5 class="post_naglowek">Cytaty Jana Pawła II</h5>
<p>Z pewnością wszyscy ze mną się zgodzą, że był on jednym z najwybitniejszych Polaków ostatnich lat. Ze strony <a href="http://pl.wikiquote.org/wiki/Jan_Pawe%C5%82_II">http://pl.wikiquote.org/wiki/Jan_Paweł_II</a> pobrałem cytaty autorstwa Papieża – Polaka. Po uruchomieniu skryptu co jakiś czas pojawiają się powiadomienia z cytatami. Oczywiście skrypt można dowolnie modyfikować. W chwili obecnej ustawione jest na:</p>
<ul>
<li>wyświetlanie co 15 minut (900 sekund)</li>
<li>czas wyświetlania 15 sek (15000 milisekund)</li>
<li>domyślna ikonka (notification-message-im) – można podać ścieżkę do swojej ikonki</li>
<li>tytuł &#8220;Jan Paweł II&#8221;</li>
</ul>
<p><img style="width: 590px;" src="http://code-laboratory.com/wp-content/uploads/2010/07/LabNot.png" alt="" /></p>
<h5 class="post_naglowek">Instalacja</h5>
<p><a onclick="javascript: pageTracker._trackPageview('/downloads/LabNot');" href="http://code-laboratory.com/wp-content/uploads/2010/07/LabNot.sh.zip"><img style="display:block; margin:20px auto;" src="http://code-laboratory.com/wp-content/uploads/2009/12/box_download_48.jpg" alt="" /></a></p>
<p>Należy pobrać plik <strong>.sh</strong> – najlepiej umieścić go w katalogu głównym <strong>~/</strong> (u mnie /home/grzesiek/). Zainstalować pakiet<br />
<strong><em>sudo aptitude install notify-osd</em></strong><br />
Nadać plikowi uprawnienia do uruchamiania jako programu. Można to zrobić przez wybranie właściwości pliku → Uprawnienia → Zezwól na wykonywanie jako programu lub przez konsolę:<br />
<strong><em>chmod +x ~/LabNot.sh</em></strong><br />
Teraz można uruchomić skrypt przez dwukrotne kliknięcie pliku i „uruchom”. Można też ustawić żeby skrypt sam uruchamiał się przy starcie systemu. Można to zrobić przez System → Preferencje → Programy Startowe → Dodaj i w polu Nazwa wpisać Cytaty Jana Pawła II a w Poleceniu ścieżkę do pliku (czyli np. /home/grzesiek/LabNot.sh – oczywiście nazwę trzeba zmienić). Aby usunąć wyświetlanie cytatów trzeba usunąć po prostu proces. Można to zrobić w System → Administracja → Monitor Systemu, znaleźć na liście LabNot.sh i usunąć.<br />
Od teraz będziemy się cieszyć cytatami wielkiego Polaka. Mała rzecz a cieszy ;-)</p>
<img src="http://feeds.feedburner.com/~r/LaboratoriumKodu/~4/-u6Z5tg_0mg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/ubuntu/skrypt-powiadomien-do-ubuntu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://code-laboratory.com/ubuntu/skrypt-powiadomien-do-ubuntu</feedburner:origLink></item>
		<item>
		<title>Matematyka jest piękna</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/0GkzeJqrDrc/matematyka-jest-piekna</link>
		<comments>http://code-laboratory.com/javascript/matematyka-jest-piekna#comments</comments>
		<pubDate>Tue, 23 Mar 2010 18:05:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://code-laboratory.com/?p=76</guid>
		<description><![CDATA[Wiele razy przeglądałem na różnych stronach fajne rysunki. Niestety nie zostałem obdarzony talentem do rysowania i nie mogłem stworzyć niczego podobnego sam. Jak przeglądałem materiały związane z elementem &#60;canvas&#62; &#8211; nowego znacznika HTML5, zobaczyłem fajne rysunki stworzone za pomocą prostych linii. Pomyślałem, że można zrobić coś ładnego za pomocą matematyki ;-)

Animacja

Animacja, którą zrobiłem za pomocą [...]]]></description>
			<content:encoded><![CDATA[<p>Wiele razy przeglądałem na różnych stronach fajne rysunki. Niestety nie zostałem obdarzony talentem do rysowania i nie mogłem stworzyć niczego podobnego sam. Jak przeglądałem materiały związane z elementem <strong>&lt;canvas&gt;</strong> &#8211; nowego znacznika<strong> HTML5</strong>, zobaczyłem fajne rysunki stworzone za pomocą prostych linii. Pomyślałem, że można zrobić coś ładnego za pomocą matematyki ;-)</p>
<p><span id="more-76"></span></p>
<h5 class="post_naglowek">Animacja</h5>
<p><a href="http://code-laboratory.com/wp-content/uploads/2010/03/piekna_mat_2010_03_23.html"><img src="http://code-laboratory.com/wp-content/uploads/2010/03/matematyka.png" style="display:block;margin:10px auto;"></a><br />
Animacja, którą zrobiłem za pomocą elementu <strong>&lt;canvas&gt;</strong> rysuje sobie linie, które składają się na figurę geometryczną. Internet Explorer najprawdopodobniej nie pokaże żadnej animacji, więc polecam zmienić przeglądarkę jeżeli jej używasz. Policzenie linii ile potrzeba do narysowania takiego rysunku nie jest  zadaniem trudnym, jednak obliczenie pola powierzchni całej figury może okazać się niełatwe. Ma ktoś pomysł?<br />
<a href="http://code-laboratory.com/wp-content/uploads/2010/03/piekna_mat_2010_03_23.html" style="display:block;text-align:center;font-size:2em;">Zobacz animację</a></p>
<img src="http://feeds.feedburner.com/~r/LaboratoriumKodu/~4/0GkzeJqrDrc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/javascript/matematyka-jest-piekna/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://code-laboratory.com/javascript/matematyka-jest-piekna</feedburner:origLink></item>
		<item>
		<title>Kod źródłowy javascript do gry LabMathGame</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/0_AzCW2DvBE/kod-zrodlowy-javascript-do-gry-labmathgame</link>
		<comments>http://code-laboratory.com/javascript/kod-zrodlowy-javascript-do-gry-labmathgame#comments</comments>
		<pubDate>Thu, 17 Dec 2009 21:55:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://code-laboratory.com/?p=62</guid>
		<description><![CDATA[Jakiś czas temu opublikowałem grę, którą napisałem jako gadżet do iGoogle. Jest to gra o bardzo prostych zasadach. Trzeba po prostu szybko dodawać cyfry. Postanowiłem pokazać kod źródłowy który napisałem na potrzeby tej gry. Jest to zwykły plik HTML, który można uruchomić w przeglądarce. Do stworzenia gadżetu iGoogle potrzeba oczywiście pliku XML, ale chciałem, żeby [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu opublikowałem grę, którą napisałem jako gadżet do iGoogle. Jest to gra o bardzo prostych zasadach. Trzeba po prostu szybko dodawać cyfry. Postanowiłem pokazać kod źródłowy który napisałem na potrzeby tej gry. Jest to zwykły plik HTML, który można uruchomić w przeglądarce. Do stworzenia gadżetu iGoogle potrzeba oczywiście pliku XML, ale chciałem, żeby można było od razu zobaczyć efekt skryptu w przeglądarce. Aby wiedzieć o czym poniżej piszę, należy pobrać najpierw kod źródłowy i go przeglądnąć ;-)</p>
<p><span id="more-62"></span></p>
<h5 class="post_naglowek">Zasada działania</h5>
<p>Cały plik to mieszanina HTML, CSS oraz JavaScript&#8217;u. Pominę style i przejdę od razu do kodu. Na początku deklarowane jest kilka zmiennych globalnych:</p>
<ul>
<li><em>level</em> – numer rundy; jeśli podana suma cyfr zgadza się z rzeczywistą sumą to zmienna jest inkrementowana</li>
<li><em>countCols</em> – liczba kolumn obszaru dodawania; domyślnie ustawiłem 5</li>
<li><em>countSecPerNumber</em> – liczba milisekund przeznaczona na pokazanie kolejnej cyfry (liczba sekund wybrana na początku rozgrywki z pola select pomnożona razy 1000)</li>
<li><em>randed</em> – tablica wylosowanych cyfr</li>
<li><em>endTime</em> – do tej zmiennej będzie przypisana funkcja setTimeout</li>
<li><em>endOfLevel</em> – zmienna przechowuje wartość logiczną mówiącą czy zakończył się czas przewidziany na pokazanie wszystkich cyfr w tabelce; jest stworzona po to, żeby uniemożliwić podanie wyniku zanim cyfry zostaną wylosowane. Wiem, że troche dyskryminuje jasnowidzów ;-)</li>
<li><em>levelLength</em> – liczba milisekund, po jakiej zostanie wyświetlona ostatnia cyfra</li>
<li><em>infoCorrect, infoWrong, infoTime, infoRunning</em> – tablice z komentarzami człowieczka w określonych sytuacjach</li>
</ul>
<p>Teraz czas na funkcje:</p>
<ul>
<li><em>startLabMathGame ()</em> &#8211; główna funkcja gry; wywoływana jest po kliknięciu na start i wywołuje inne funkcje</li>
<li><em>createTable ()</em> &#8211; wywoływana jest w funkcji startLabMathGame i tworzy tabele z odpowiednią ilością wierszy i kolumn wypełnioną pytajnikami</li>
<li><em>fillTable ()</em> &#8211; steruje czasem po jakim mają się pokazywać cyfry oraz czasem po jakim sympatyczny człowieczek poinformuje, że time is over ;-)</li>
<li><em>fillTd (row, col)</em> – wywoływana cyklicznie w funkcji fillTable do wylosowania i uzupełnienia pojedynczej komórki</li>
<li><em>checkAnswer()</em> &#8211; funkcja sprawdza poprawność odpowiedzi – jeśli jest dobra to inkrementuje zmienną level i gracz uzyskuje dostęp do kolejnej rundy</li>
<li><em>endOfTime ()</em> &#8211; funkcja wywoływana gdy skończy się czas</li>
<li><em>getInfo (event, correct)</em> – wyświetla odpowiedni komentarz w zależności od sytuacji</li>
<li><em>switchButtons(visibility)</em> – przełącza przycisk „start” i pole tekstowe do wpisywania wyniku, aby nie były wyświetlane naraz.</li>
</ul>
<h5 class="post_naglowek">Podsumowanie</h5>
<p>Może nie stanę się sławny po opublikowaniu tego skromnego kodu, ale może się komuś przydać do nauki lub stać się inspiracją do napisania czegoś ;-) Jeśli można było coś zrobić lepiej to proszę napisz w komentarzach. Jeszcze nie czuję się guru w JavaScript, więc jestem otwarty na podpowiedzi.</p>
<p><a onclick="javascript: pageTracker._trackPageview('/downloads/LabMathGame_Code1');" href="http://code-laboratory.com/wp-content/uploads/2009/12/LabMathGame.zip"><img style="display:block; margin:20px auto;" src="http://code-laboratory.com/wp-content/uploads/2009/12/box_download_48.jpg" alt="" /></a></p>
<img src="http://feeds.feedburner.com/~r/LaboratoriumKodu/~4/0_AzCW2DvBE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/javascript/kod-zrodlowy-javascript-do-gry-labmathgame/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://code-laboratory.com/javascript/kod-zrodlowy-javascript-do-gry-labmathgame</feedburner:origLink></item>
		<item>
		<title>Gra matematyczna jako gadżet do iGoogle</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/U09-aWdc3Qc/gra-matematyczna-jako-gadzet-do-igoogle</link>
		<comments>http://code-laboratory.com/google/gra-matematyczna-jako-gadzet-do-igoogle#comments</comments>
		<pubDate>Wed, 09 Dec 2009 21:22:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://code-laboratory.com/?p=53</guid>
		<description><![CDATA[Fajnym sposobem na uatrakcyjnienie strony startowej przeglądarki jest stworzenie strony iGoogle. Jest to strona, którą każdy może spersonalizować według własnych upodobań dodając różne gadżety. Postanowiłem bliżej przyjrzeć się tworzeniu gadżetów. Okazało się to być bardzo prostym zadaniem. Wystarczy napisać &#8220;normalnie&#8221; kod HTML, JavaScript, CSS, a później dodać kilka znaczników XML i gadżet gotowy. Napisałem grę [...]]]></description>
			<content:encoded><![CDATA[<p>Fajnym sposobem na uatrakcyjnienie strony startowej przeglądarki jest stworzenie strony iGoogle. Jest to strona, którą każdy może spersonalizować według własnych upodobań dodając różne gadżety. Postanowiłem bliżej przyjrzeć się tworzeniu gadżetów. Okazało się to być bardzo prostym zadaniem. Wystarczy napisać &#8220;normalnie&#8221; kod HTML, JavaScript, CSS, a później dodać kilka znaczników XML i gadżet gotowy. Napisałem grę opartą o te technologie.</p>
<p><span id="more-53"></span></p>
<h5 class="post_naglowek">LabMathGame</h5>
<p>LabMathGame jest grą o bardzo prostych zasadach. Polega na zliczaniu sumy wyświetlanych cyfr i wpisaniu tej sumy do pola tekstowego. Prawda, że łatwe? ;-) Największą trudnością jest goniący nas czas. Na początku gry można ustawić trudność &#8211; co ile sekund ma się pojawiać kolejna liczba czyli ile będziemy mieli czasu na dodanie tej liczby do pozostałych. Na chwilę obecną dostępne są: 1s, 1.5s, 2s, gdzie 1s jest najtrudniejsze (trzeba szybciej liczyć), a 2s jest najłatwiejsze (mamy więcej czasu na liczenie).</p>
<p>Po pojawieniu się ostatniej liczby mamy 5 sekund na wpisanie wyniku do pola tekstowego i naciśnięcie entera. Sympatyczny pan poinformuje nas czy właściwie policzyliśmy. Jeśli tak to mamy przepustkę do kolejnej rundy. Jeśli nie to rundę trzeba powtarzać.</p>
<h5 class="post_naglowek">Podsumowanie</h5>
<p>Gry logiczne poprawiają refleks, wyobraźnię i uczą koncentracji. Podobno nieużywany organ obumiera więc warto czasem poćwiczyć swój umysł ;-) Zapraszam do gry. W komentarzach zostawiajcie swoje rekordy. Jest to moja pierwsza gra. Kod źródłowy pokażę w najbliżsyzm czasie.</p>
<h5 style="text-align:center;">
<p><a onclick="javascript: pageTracker._trackPageview('/downloads/LabMathGame');" href="http://www.google.com/ig/adde?synd=open&amp;source=ggyp&amp;moduleurl=hosting.gmodules.com/ig/gadgets/file/115319182193529530509/LabMathGame.xml">Dodaj do iGoogle</a></h5>
<img src="http://feeds.feedburner.com/~r/LaboratoriumKodu/~4/U09-aWdc3Qc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/google/gra-matematyczna-jako-gadzet-do-igoogle/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://code-laboratory.com/google/gra-matematyczna-jako-gadzet-do-igoogle</feedburner:origLink></item>
		<item>
		<title>Dynamiczne generowanie wykresów w PHP</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/_GVpVMiXgkU/dynamiczne-generowanie-wykresow-w-php</link>
		<comments>http://code-laboratory.com/php/dynamiczne-generowanie-wykresow-w-php#comments</comments>
		<pubDate>Sat, 05 Dec 2009 11:04:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[php class]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://code-laboratory.com/?p=39</guid>
		<description><![CDATA[W poprzednim poście opisywałem jak łatwo jest tworzyć wykresy z Google Charts API. Tworzyć jest łatwo, jednak jeśli przyjdzie nam zrobić kilka wykresów to może to być kłopotliwe. Postanowiłem napisać małą bibliotekę PHP generującą wykresy. Biblioteka korzysta z opisanego wcześniej Google Charts API. Dzięki tej bibliotece można stworzyć wykres kołowy, słupkowy i liniowy podając tylko [...]]]></description>
			<content:encoded><![CDATA[<p>W poprzednim poście opisywałem jak łatwo jest tworzyć wykresy z Google Charts API. Tworzyć jest łatwo, jednak jeśli przyjdzie nam zrobić kilka wykresów to może to być kłopotliwe. Postanowiłem napisać małą bibliotekę PHP generującą wykresy. Biblioteka korzysta z opisanego wcześniej Google Charts API. Dzięki tej bibliotece można stworzyć wykres kołowy, słupkowy i liniowy podając tylko kolejne wartości. Biblioteka LabCharts wygeneruje odpowiednie wartości dla Google Charts API a ten wygeneruje obrazek. Dodatkowo można troche „upiększyć” wykres.<br />
<span id="more-39"></span></p>
<h5 class="post_naglowek">Wykres kołowy</h5>
<div class="php">
<ol>
<li><span class="kw2">&lt;?php</span></li>
<li><span class="kw1">include_once</span><span class="br0">(</span><span class="st_h">&#8216;./LabChartsPie.php&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsPie</span> <span class="sy0">=</span> <span class="kw2">new</span> LabChartsPie<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsPie</span><span class="sy0">-&gt;</span><span class="me1">setData</span><span class="br0">(</span><span class="kw3">array</span><span class="br0">(</span><span class="nu0">100</span><span class="sy0">,</span> <span class="nu0">200</span><span class="sy0">,</span> <span class="nu0">200</span><span class="sy0">,</span> <span class="nu0">200</span><span class="sy0">,</span> <span class="nu0">430</span><span class="sy0">,</span> <span class="nu0">760</span><span class="sy0">,</span> <span class="nu0">54</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="kw1">echo</span> <span class="st_h">&#8216;&lt;img src=&#8221;&#8216;</span><span class="sy0">.</span><span class="re0">$LabChartsPie</span><span class="sy0">-&gt;</span><span class="me1">getChart</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">.</span><span class="st_h">&#8216;&#8221; /&gt;&#8217;</span><span class="sy0">;</span></li>
<li><span class="sy1">?&gt;</span></li>
</ol>
</div>
<p>Na początek trzeba wczytać klasę dla wykresu kołowego i utworzyć jej obiekt. Teraz najważniejsza metoda – <em>setData()</em>. Jest to metoda dla wszystkich typów wykresów. Definiuje ona wartości potrzebne do wygenerowania wykresu, a argumentem tej metody jest właśnie tablica wartości. Nie należy się przejmować tym, że Google Charts API przyjmuje wartości tylko z określonych zakresów. LabCharts skaluje te wartości aby zmieściły się w wyznaczonym zakresie. Nie ma limitu wartości, jednak trzeba się z tym liczyć, że przy większej ilości danych wykres może być nieczytelny. W kolejnej linijce znajduje się wywołanie wykresu tj. obrazka z odpowiednim adresem. Metoda <em>getChart()</em> zwraca adres obrazka wygenerowany na podstawie właściwości obiektu.<br />
<img style="display:block; margin:20px auto;" src="http://chart.apis.google.com/chart?cht=p&amp;chs=300x150&amp;chd=t:5.144,10.288,10.288,10.288,22.119,39.095,2.778&amp;chco=0000FF&amp;PoweredBy_Code-Laboratory.Com" alt="" /></p>
<p>Jak widać niewiele potrzeba do wygenerowania wykresu. Wykres ten można trochę „upiększyć” za pomocą kilku metod:</p>
<ul>
<li><em>setType()</em> &#8211; typ wykresu – dla wykresu kołowego może to być wartość „p” (2D) lub „p3” (3D)</li>
<li><em>setTitle()</em> &#8211; tytuł wykresu – będzie to napis widoczny na górze obrazka</li>
<li><em>setSize()</em> &#8211; wymiary obrazka w pixelach</li>
<li><em>setColors()</em> &#8211; kolor lub kilka kolorów oddzielonych znakiem „|”</li>
<li><em>setLabels()</em> &#8211; etykiety kolejnych wartości (w takiej samej kolejności jak podane w metodzie setData()</li>
</ul>
<div class="php">
<ol>
<li><span class="kw2">&lt;?php</span></li>
<li><span class="co1">//$LabChartsPie-&gt;setType(&#8217;p3&#8242;);</span></li>
<li><span class="re0">$LabChartsPie</span><span class="sy0">-&gt;</span><span class="me1">setTitle</span><span class="br0">(</span><span class="st_h">&#8216;Udziały w pewnej firmie&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsPie</span><span class="sy0">-&gt;</span><span class="me1">setSize</span><span class="br0">(</span><span class="st_h">&#8216;400&#215;200&#8242;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsPie</span><span class="sy0">-&gt;</span><span class="me1">setColors</span><span class="br0">(</span><span class="st_h">&#8216;D9351C&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsPie</span><span class="sy0">-&gt;</span><span class="me1">setLabels</span><span class="br0"> (</span><span class="st_h">&#8216;Marek|Franek|Michał|Lech|Jarosław|Grzesiek|Tomek&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="kw1">echo</span> <span class="st_h">&#8216;&lt;img src=&#8221;&#8216;</span><span class="sy0">.</span><span class="re0">$LabChartsPie</span><span class="sy0">-&gt;</span><span class="me1">getChart</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">.</span><span class="st_h">&#8216;&#8221; /&gt;&#8217;</span><span class="sy0">;</span></li>
<li><span class="sy1">?&gt;</span></li>
</ol>
</div>
<p>A tak będzie wyglądał wykres po modyfikacjach:</p>
<p><img style="display:block; margin:20px auto;" src="http://chart.apis.google.com/chart?cht=p&amp;chs=400x200&amp;chd=t:5.144,10.288,10.288,10.288,22.119,39.095,2.778&amp;chtt=Udziały+w+pewnej+firmie&amp;chco=D9351C&amp;chl=Marek|Franek|Michał|Lech|Jarosław|Grzesiek|Tomek&amp;PoweredBy_Code-Laboratory.Com" alt="" /></p>
<h5 class="post_naglowek">Wykres słupkowy</h5>
<div class="php">
<ol>
<li><span class="kw2">&lt;?php</span></li>
<li><span class="kw1">include_once</span><span class="br0">(</span><span class="st_h">&#8216;./LabChartsBar.php&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsBar</span> <span class="sy0">=</span> <span class="kw2">new</span> LabChartsBar<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">setData</span><span class="br0">(</span><span class="kw3">array</span><span class="br0">(</span><span class="nu19">85.8</span><span class="sy0">,</span><span class="nu19">57.5</span><span class="sy0">,</span> <span class="nu19">16.7</span><span class="sy0">,</span> <span class="nu0">5</span><span class="sy0">,</span> <span class="nu19">1.7</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="kw1">echo</span> <span class="st_h">&#8216;&lt;img src=&#8221;&#8216;</span><span class="sy0">.</span><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">getChart</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">.</span><span class="st_h">&#8216;&#8221; /&gt;&#8217;</span><span class="sy0">;</span></li>
<li><span class="sy1">?&gt;</span></li>
</ol>
</div>
<p>Tak jak w przypadku wykresu kołowego najpierw trzeba wczytać klasę wykresu słupkowego i utworzyć obiekt. Metoda setData() działa dokładnie tak samo. Wystarczy po prostu wczytać kolejne wartości.</p>
<p><img style="display:block; margin:20px auto;" src="http://chart.apis.google.com/chart?cht=bvs&amp;chs=300x150&amp;chd=t:100,67.016,19.464,5.828,1.981&amp;chco=D9351C|FAAC02|79D81C|2A9DF0|02AA9D&amp;PoweredBy_Code-Laboratory.Com" alt="" /></p>
<p>Dodatkowe metody do wykresu słupkowego:</p>
<ul>
<li><em>setSize()</em></li>
<li><em>setTitle()</em></li>
<li><em>setColors()</em> &#8211; kolory w systemie szesnastkowym odpowiadające kolejnym słupkom. Najlepiej jak liczba kolorów jest równa liczbie danych.</li>
<li><em>setLabels()</em> &#8211; etykiety kolejnych słupków oddzielone znakiem „|”</li>
<li><em>setBarStyles()</em> &#8211; metoda definiująca style wykresu słupkowego. Pierwszy argument metody ustawia szerokość słupków, a drugi odległość słupków od siebie.</li>
<li><em>setAxis()</em> &#8211; Metoda ustawia skale na osi y oraz co ile wartości ma być wyświetlana np. jeśli mamy wartości z przedziału 0-300 można ustawić wartość 30 i na osi y będą zaznaczone wartości: 0, 30, 60 itd.</li>
<li><em>se</em><em>tGrids()</em> &#8211; Metoda definiująca położenie poziomych lini pomocniczych na wykresie. Argument $range mówi co ile jednostek ma być linia. Zwyke jest to ta sama wartość co w metodzie setAxis(), ale można też ustawić inną wartość.</li>
</ul>
<div class="php">
<ol>
<li><span class="kw2">&lt;?php</span></li>
<li><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">setSize</span><span class="br0">(</span><span class="st_h">&#8216;400&#215;200&#8242;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">setTitle</span><span class="br0">(</span><span class="st_h">&#8216;Przychody w poszczególnych miesiącach&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="co1">//$LabChartsBar-&gt;setColors(&#8217;D9351C|FAAC02|79D81C|2A9DF0|02AA9D&#8217;);</span></li>
<li><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">setLabels</span><span class="br0">(</span><span class="st_h">&#8216;Styczen|Luty|Marzec|Kwiecien|Maj&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">setBarStyles</span><span class="br0">(</span><span class="nu0">40</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">setAxis</span><span class="br0">(</span><span class="nu0">10</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">setGrids</span><span class="br0">(</span><span class="nu0">10</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="kw1">echo</span> <span class="st_h">&#8216;&lt;img src=&#8221;&#8216;</span><span class="sy0">.</span><span class="re0">$LabChartsBar</span><span class="sy0">-&gt;</span><span class="me1">getChart</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">.</span><span class="st_h">&#8216;&#8221; /&gt;&#8217;</span><span class="sy0">;</span></li>
<li><span class="sy1">?&gt;</span></li>
</ol>
</div>
<p>A wykres będzie wyglądał:</p>
<p><img style="display:block; margin:20px auto;" src="http://chart.apis.google.com/chart?cht=bvs&amp;chs=400x200&amp;chd=t:100,67.016,19.464,5.828,1.981&amp;chtt=Przychody+w+poszczególnych+miesiącach&amp;chco=D9351C|FAAC02|79D81C|2A9DF0|02AA9D&amp;chdl=Styczen|Luty|Marzec|Kwiecien|Maj&amp;chbh=40,10,10&amp;chxt=y&amp;chxl=0:|0|10|20|30|40|50|60|70|80&amp;chxp=0,0,11.655,23.31,34.965,46.62,58.275,69.93,81.585,93.24&amp;chg=0,11.655&amp;PoweredBy_Code-Laboratory.Com" alt="" /></p>
<h5 class="post_naglowek">Wykres liniowy:</h5>
<div class="php">
<ol>
<li><span class="kw2">&lt;?php</span></li>
<li><span class="kw1">include_once</span><span class="br0">(</span><span class="st_h">&#8216;./LabChartsLine.php&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsLine</span> <span class="sy0">=</span> <span class="kw2">new</span> LabChartsLine<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">setData</span><span class="br0">(</span><span class="kw3">array</span><span class="br0">(</span><span class="nu0">27</span><span class="sy0">,</span><span class="nu0">25</span><span class="sy0">,</span><span class="nu0">60</span><span class="sy0">,</span><span class="nu0">31</span><span class="sy0">,</span><span class="nu0">25</span><span class="sy0">,</span><span class="nu0">39</span><span class="sy0">,</span><span class="nu0">25</span><span class="sy0">, </span><span class="nu0">31</span><span class="sy0">,</span><span class="nu0">26</span><span class="sy0">,</span><span class="nu0">28</span><span class="sy0">,</span><span class="nu0">8</span><span class="sy0">,</span><span class="nu0">28</span><span class="sy0">,</span><span class="nu0">27</span><span class="sy0">,</span><span class="nu0">31</span><span class="sy0">,</span><span class="nu0">27</span><span class="sy0">,</span><span class="nu0">29</span><span class="sy0">,</span><span class="nu0">26</span><span class="sy0">,</span><span class="nu0">35</span><span class="sy0">,</span><span class="nu0">70</span><span class="sy0">,</span><span class="nu0">25</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="kw1">echo</span> <span class="st_h">&#8216;&lt;img src=&#8221;&#8216;</span><span class="sy0">.</span><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">getChart</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">.</span><span class="st_h">&#8216;&#8221; /&gt;&#8217;</span><span class="sy0">;</span></li>
<li><span class="sy1">?&gt;</span></li>
</ol>
</div>
<p>Inicjalizacja wygląda tak samo jak w poprzednich wykresach. Wczytanie klasy LabChartsLine, utworzenie obiektu i wczytanie danych.</p>
<p><img style="display:block; margin:10px auto;" src="http://chart.apis.google.com/chart?cht=lc&amp;chs=300x150&amp;chd=t:38.571,35.714,85.714,44.286,35.714,55.714,35.714,44.286,37.143,40,11.429,40,38.571,44.286,38.571,41.429,37.143,50,100,35.714&amp;chco=FAAC02&amp;PoweredBy_Code-Laboratory.Com" alt="" /></p>
<p>Metody dla wykresu liniowego:</p>
<ul>
<li><em>setSize()</em></li>
<li><em>setTitle()</em></li>
<li><em>setColors()</em></li>
<li><em>setAxis()</em> &#8211; metoda działa podobnie do tej z wykresu słupkowego z tą różnicą, że przyjmuje drugi argument – nazwy etykiet na osi x, których MUSI być tyle samo co wartości zadeklarowanych w metodzie setData() oddzielonych znakiem „|”.</li>
<li><em>setGrids()</em> &#8211; metoda definiująca położenie poziomych i pionowych linii pomocniczych na wykresie. Argument $range mówi co ile jednostek ma być linia pozioma. Zwykle jest to ta sama wartość co w metodzie setAxis(), ale można też ustawić inną wartość. Linie pionowe są generowane automatycznie do każdej wartości na wykresie.</li>
</ul>
<div class="php">
<ol>
<li><span class="kw2">&lt;?php</span></li>
<li><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">setColors</span><span class="br0">(</span><span class="st_h">&#8216;D9351C&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">setSize</span><span class="br0">(</span><span class="st_h">&#8216;400&#215;250&#8242;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">setTitle</span><span class="br0">(</span><span class="st_h">&#8216;Zyski w poszczególnych miesiącach&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">setAxis</span> <span class="br0">(</span><span class="nu0">10</span><span class="sy0">,</span> <span class="st_h">&#8216;Sty||Mar||Maj||Lip||Wrz||Lis||Sty||Mar||Maj||Lip|&#8217;</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">setGrids</span> <span class="br0">(</span><span class="nu0">10</span><span class="br0">)</span><span class="sy0">;</span></li>
<li><span class="kw1">echo</span> <span class="st_h">&#8216;&lt;img src=&#8221;&#8216;</span><span class="sy0">.</span><span class="re0">$LabChartsLine</span><span class="sy0">-&gt;</span><span class="me1">getChart</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">.</span><span class="st_h">&#8216;&#8221; /&gt;&#8217;</span><span class="sy0">;</span></li>
<li><span class="sy1">?&gt;</span></li>
</ol>
</div>
<p><img style="display:block; margin:20px auto;" src="http://chart.apis.google.com/chart?cht=lc&amp;chs=400x250&amp;chd=t:38.571,35.714,85.714,44.286,35.714,55.714,35.714,44.286,37.143,40,11.429,40,38.571,44.286,38.571,41.429,37.143,50,100,35.714&amp;chtt=Zyski+w+poszczególnych+miesiącach&amp;chco=D9351C&amp;chxt=y,x&amp;chxl=0:|0|10|20|30|40|50|60|70|1:|Sty||Mar||Maj||Lip||Wrz||Lis||Sty||Mar||Maj||Lip|&amp;chxp=0,0,14.286,28.572,42.858,57.144,71.43,85.716&amp;chg=5.26,14.286&amp;PoweredBy_Code-Laboratory.Com" alt="" /></p>
<h5 class="post_naglowek">Podsumowanie</h5>
<p>Wiele jest serwisów, które prowadzą różnego rodzaju statystyki. Profesor od statystyki powiedział, że jeśli tylko da się coś zobrazować to należy to zrobić ;) Klasę LabCharts łatwo można zintegrować z istniejącą aplikacją. Kod źródłowy, przykłady oraz dokumentację można pobrać poniżej.</p>
<p><a onclick="javascript: pageTracker._trackPageview('/downloads/LabCharts');" href="http://code-laboratory.com/wp-content/uploads/2009/12/LabCharts.zip"><img style="display:block; margin:20px auto;" src="http://code-laboratory.com/wp-content/uploads/2009/12/box_download_48.jpg" alt="" /></a></p>
<p style="font-weight:bold;">UPDATE 2010-01-30 13:40<br />Dodana została metoda setBackground($color) dla wszytskich typów wykresów, która zmienia tło np. $LabChartsLine->setBackground(&#8217;474747&#8242;);</p>
<p style="font-weight:bold;">UPDATE 2010-05-22 22:59<br />Zmieniona została klasa LabChartsLine &#8211; teraz możliwe jest pokazywanie na wykresie liczb ujemnych i dodatnich</p>
<img src="http://feeds.feedburner.com/~r/LaboratoriumKodu/~4/_GVpVMiXgkU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/php/dynamiczne-generowanie-wykresow-w-php/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://code-laboratory.com/php/dynamiczne-generowanie-wykresow-w-php</feedburner:origLink></item>
	</channel>
</rss>
