<?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>Sun, 25 Mar 2012 09:33:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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>Puzzle z obrazu „Sąd ostateczny” Michała Anioła</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/JjrGwASE4LE/</link>
		<comments>http://code-laboratory.com/javascript/puzzle-z-obrazu-sad-ostateczny-michala-aniola/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 23:39:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery ui]]></category>
		<category><![CDATA[puzzle]]></category>

		<guid isPermaLink="false">http://code-laboratory.com/?p=100</guid>
		<description><![CDATA[Dawno nic nie pisałem na blogu i postanowiłem to zmienić. Zrobiłem puzzle z fresku znajdującego się w Kaplicy Sykstyńskiej w Watykanie &#8211; &#8222;Sąd ostateczny&#8221;. Zostało to zrobione z użyciem jQuery i jQuery UI (draggable, droppable). Nie ma co pisać tylko grać (choć ułożenie nie będzie łatwe). W komentarzach można wpisywać sukcesy związane z tymi puzzlami [...]]]></description>
			<content:encoded><![CDATA[<p>Dawno nic nie pisałem na blogu i postanowiłem to zmienić. Zrobiłem puzzle z fresku znajdującego się w Kaplicy Sykstyńskiej w Watykanie &#8211; &#8222;Sąd ostateczny&#8221;. Zostało to zrobione z użyciem jQuery i jQuery UI (draggable, droppable). Nie ma co pisać tylko grać (choć ułożenie nie będzie łatwe). W komentarzach można wpisywać sukcesy związane z tymi puzzlami ;)<br />
<a href="http://puzzle.code-laboratory.com/sad.html">Puzzle</a></p>
<img src="http://feeds.feedburner.com/~r/LaboratoriumKodu/~4/JjrGwASE4LE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/javascript/puzzle-z-obrazu-sad-ostateczny-michala-aniola/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://code-laboratory.com/javascript/puzzle-z-obrazu-sad-ostateczny-michala-aniola/</feedburner:origLink></item>
		<item>
		<title>Google Analytics Api z Zend_Gdata_Analytics</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/XqWVvIULoZI/</link>
		<comments>http://code-laboratory.com/php/google-analytics-api-z-zend_gdata_analytics/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 21:42:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[statystyki]]></category>

		<guid isPermaLink="false">http://code-laboratory.com/?p=91</guid>
		<description><![CDATA[Życie zmusiło mnie do zainteresowania się pobieraniem danych z Google Analytics do zewnętrznej aplikacji. Zend Framework ma wbudowane klasy do serwisów Google, jednak nie było tam Analytics. Szybko okazało się, że jest biblioteka, którą ktoś napisał &#8211; Zend_Gdata_Analytics. Jest to zbiór kilku małych klas, które trzeba dograć do biblioteki Zenda. Z początku miałem mały problem [...]]]></description>
			<content:encoded><![CDATA[<p>Życie zmusiło mnie do zainteresowania się pobieraniem danych z Google Analytics do zewnętrznej aplikacji. Zend Framework ma wbudowane klasy do serwisów Google, jednak nie było tam Analytics. Szybko okazało się, że jest biblioteka, którą ktoś napisał &#8211; <a href="https://github.com/danielmitd/Zend_Gdata_Analytics" rel="nofollow">Zend_Gdata_Analytics</a>. Jest to zbiór kilku małych klas, które trzeba dograć do biblioteki Zenda. Z początku miałem mały problem na localhoscie. Wystarczyło nadać odpowiednie prawa plikom przez <em>chmod -R 777 ~/localhost/zendframework/library/Zend</em> i klasy już zaczęły być widoczne.<br />
<span id="more-91"></span></p>
<h5 class="post_naglowek">Autoryzacja</h5>
<p>Na początek trzeba się przedstawić:</p>
<div class="php">$login = &#8216;xxxxx@gmail.com&#8217;;<br />
$pass = &#8216;*******&#8217;;<br />
$profile_id = &#8217;12345678&#8242;;</p>
<p>$client = Zend_Gdata_ClientLogin::getHttpClient(<br />
$login, $pass, Zend_Gdata_Analytics::AUTH_SERVICE_NAME<br />
);<br />
$service = new Zend_Gdata_Analytics($client);</p></div>
<p>Login i hasło to poprostu dane dostępowe do konta Google. Id profilu to <b>NIE jest UA-123&#8230;</b> &#8211; trzeba wejść do analytics i w linku &#8222;Wyświetl raport&#8221; jest parametr id. To jest właśnie id profilu, który trzeba podać. Dane powyżej najlepiej przechowywać w konfiguracji &#8211; najczęściej w pliku ini.</p>
<h5 class="post_naglowek">Zapytanie</h5>
<p>Żeby dostać dane ze statystyk analytics to najpierw trzeba napisać zapytanie.</p>
<div class="php">$query = $service-&gt;newDataQuery()<br />
-&gt;setProfileId($profile_id)<br />
-&gt;addDimension(Zend_Gdata_Analytics_DataQuery::DIMENSION_PAGE_PATH)<br />
-&gt;addMetric(Zend_Gdata_Analytics_DataQuery::METRIC_VISITS)<br />
-&gt;addMetric(Zend_Gdata_Analytics_DataQuery::METRIC_PAGEVIEWS)<br />
-&gt;setStartDate( date(&#8216;Y-m-d&#8217;, strtotime(&#8217;2011-02-01&#8242;)) )<br />
-&gt;setEndDate( date(&#8216;Y-m-d&#8217;, strtotime(&#8217;2011-03-01&#8242;)) )<br />
-&gt;setSort(Zend_Gdata_Analytics_DataQuery::METRIC_VISITS, true)<br />
-&gt;setMaxResults(20)<br />
-&gt;setParam(&#8216;filters&#8217;,'ga:pagePath=~.*ciasta.*&#8217;);</p>
<p>$result = $service-&gt;getDataFeed($query);</p></div>
<p>Zapytanie jest proste i chyba nie trzeba wiele tłumaczyć ;) Warto odnotować, że zapytanie jest konwertowane na url. Lista wszystkich parametrów &#8222;Dimensions &amp; Metrics&#8221; jest w <a href="http://code.google.com/intl/en/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html" rel="nofollow">dokumentacji</a>. W bibliotece nie znalazłem nic na temat filtrowania. Obiekt Zend_Gdata_Analytics_DataQuery ($query) dziedziczy z Zend_Gdata_Query i dzięki temu można było wywołać metodę setParam(&#8216;filters&#8217;,'ga:pagePath=~.*ciasta.*&#8217;) która wyrażeniem regularnym wyfiltrowała wszystkie urle zawierające słowo &#8222;ciasta&#8221;. Więcej na temat filtrów <a href="http://code.google.com/intl/pl-PL/apis/analytics/docs/gdata/gdataReferenceDataFeed.html#filters" rel="nofollow">w dokumenatcji</a></p>
<h5 class="post_naglowek">Przedstawienie wyniku</h5>
<p>Z wynikiem można zrobić wiele rzeczy. Można użyć go w CMS&#8217;ie np. cache&#8217;ować i przedstawiać w formie ładnych wykresów ;) Tutaj wypisałem url &#8212; liczba wizyt &#8212; liczba odsłon. W pliku Zend/Gdata/Analytics/DataQuery.php jest lista co odrazu można użyć w zapytaniach. Czego nie ma to trzeba posiłkować się metodą setParam(..) i ręcznie kombinować ;)</p>
<div class="php">foreach($result as $row){<br />
echo $row-&gt;title . &#8216; &#8212; &#8216;;<br />
echo $row-&gt;getMetric(Zend_Gdata_Analytics_DataQuery::METRIC_VISITS) . &#8216; &#8212; &#8216;;<br />
echo $row-&gt;getMetric(Zend_Gdata_Analytics_DataQuery::METRIC_PAGEVIEWS);<br />
echo &#8216;&lt;br/&gt;&#8217;;<br />
}</div>
<img src="http://feeds.feedburner.com/~r/LaboratoriumKodu/~4/XqWVvIULoZI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/php/google-analytics-api-z-zend_gdata_analytics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://code-laboratory.com/php/google-analytics-api-z-zend_gdata_analytics/</feedburner:origLink></item>
		<item>
		<title>Skrypt powiadomień do Ubuntu</title>
		<link>http://feedproxy.google.com/~r/LaboratoriumKodu/~3/wgs32YTkoPQ/</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 [...]]]></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ł &#8222;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/wgs32YTkoPQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/ubuntu/skrypt-powiadomien-do-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</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/QeZYi82Ol8Q/</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 [...]]]></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/QeZYi82Ol8Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://code-laboratory.com/javascript/matematyka-jest-piekna/feed/</wfw:commentRss>
		<slash:comments>5</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/QYeFOhR8_SU/</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/QYeFOhR8_SU" 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>
	</channel>
</rss>

