<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Moriturius&#039;s Devlog</title>
	<atom:link href="http://moriturius.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://moriturius.wordpress.com</link>
	<description>My battles with code...</description>
	<lastBuildDate>Fri, 27 Jan 2012 06:46:38 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='moriturius.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Moriturius&#039;s Devlog</title>
		<link>http://moriturius.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://moriturius.wordpress.com/osd.xml" title="Moriturius&#039;s Devlog" />
	<atom:link rel='hub' href='http://moriturius.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Ubuntu &#8211; dwa monitory na nowo</title>
		<link>http://moriturius.wordpress.com/2012/01/27/ubuntu-dwa-monitory-na-nowo/</link>
		<comments>http://moriturius.wordpress.com/2012/01/27/ubuntu-dwa-monitory-na-nowo/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 06:45:21 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[disper]]></category>
		<category><![CDATA[dual]]></category>
		<category><![CDATA[dwa]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[monitory]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=482</guid>
		<description><![CDATA[Po obejrzeniu statystyk oglądania mojego bloga zauważyłem, że znaczna większość odwiedzających przychodzi tu z zapytania &#8222;ubuntu dwa monitory&#8221;. Kiedyś pisałem już o tym ale tamto rozwiązanie jest już co najmniej nieaktualne. Dzisiaj istnieje o wiele lepsze rozwiązanie &#8211; stworzone z myślą o laptopach, ale ja sam używam go na komputerze stacjonarnym z dwoma monitorami. Wspomniane [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=482&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Po obejrzeniu statystyk oglądania mojego bloga zauważyłem, że znaczna większość odwiedzających przychodzi tu z zapytania &#8222;ubuntu dwa monitory&#8221;. Kiedyś pisałem już o tym ale tamto rozwiązanie jest już co najmniej nieaktualne. Dzisiaj istnieje o wiele lepsze rozwiązanie &#8211; stworzone z myślą o laptopach, ale ja sam używam go na komputerze stacjonarnym z dwoma monitorami.</p>
<p>Wspomniane rozwiązanie nazywa się <em>disper</em> i jego strona domowa znajduje się tutaj: <a href="http://willem.engen.nl/projects/disper/">http://willem.engen.nl/projects/disper/</a>. Aktualnie najnowsza wersja opatrzona jest numerem 0.3.0, ale działa już bardzo poprawnie. Cały projekt napisany jest w pythonie więc nie ma problemów z kompilacją i miliardem zależności do rozwiązania. Cała instalacja składa się z upewnienia się, że mamy Pythona i narzędzie <em>make</em>. Możemy to zrobić na przykład tak:</p>
<pre style="padding-left:30px;">$ sudo apt-get install build-essential python2.7</pre>
<p>Następnie ściągamy, <em>make</em>ujemy i instalujemy najnowszą wersję dispera (w moim przypadku 0.3.0):</p>
<pre style="padding-left:30px;">$ wget http://ppa.launchpad.net/disper-dev/ppa/ubuntu/pool/main/d/disper/disper_0.3.0.tar.gz
$ make
$ sudo make install</pre>
<p>To tyle jeśli chodzi o instalację. Teraz jak tego używać? Zacznijmy może od wyświetlenia pomocy programu, która już sama mówi wszystko co trzeba wiedzieć:</p>
<pre style="padding-left:30px;">$ disper -h</pre>
<pre style="padding-left:30px;"></pre>
<p>Jeśli bardziej lubisz czytać strony <em>man</em> lub <em>info</em> to też są dostępne.</p>
<p>Poniżej przedstawię podstawowe komendy <em>disper</em>a wraz z krótkim opisem:</p>
<ul>
<li><strong>disper -l</strong>  - powoduje wyświetlenie wszystkich dostępnych monitorów oraz ich rozdzielczości</li>
<li><strong>disper -s</strong> - wykorzystywany jest jedynie pierwszy monitor</li>
<li><strong>disper -S </strong>- wykorzystywany jest jedynie drugi monitor</li>
<li><strong>disper -e</strong> - wykorzystane oba monitory, jeden z nich jest rozszerzeniem ekranu (xinerama)</li>
<li><strong>disper -c </strong>- klonowanie obrazu &#8211; na obu monitorach jest to samo</li>
<li><strong>disper -C </strong>- przełącza cyklicznie pomiędzy powyższymi trybami (coś jak Fn+Fx w laptopach [x to liczba od 1 do 12 <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ] )</li>
</ul>
<p>Dodatkowo możemy też wyeksportować nasze ustawienia do pliku:</p>
<pre style="padding-left:30px;">$ disper -p &gt; ekran.conf</pre>
<p>Lub zaimportować te ustawienia:</p>
<pre style="padding-left:30px;">$ cat ekran.conf | disper -e</pre>
<p>Jedną poważną zaletą używania dispera jest to, że zmieniamy tryby graficzne i nie musimy restartować serwera Xów. To znaczy po prostu tyle, że uruchomione programy nie zostają ubite w tym procesie i po zmianie ekranu możemy po prostu pracować dalej.</p>
<p>Mam nadzieję, że ten wpis pomoże ludziom trafiającym tu codziennie z problemami dotyczącymi obsługi dwóch monitorów. Oczywiście <em>disper</em> będzie działał w dowolnym innym Linuxie. Wystarczy mieć pythona oraz <em>make&#8217;</em>a, a to jest wszędzie.</p>
<p>Z tym postem muszę stwierdzić z zadowoleniem (ale też z lekkim smutkiem), że czasy kiedy siedziało się tygodniami przed Linuxem, żeby coś w nim uruchomić powoli się kończą. Powoli <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>PS. Jeśli kogoś interesuje dlaczego &#8222;z lekkim smutkiem&#8221; to spieszę z odpowiedzią. Otóż może i siedzenie i grzebanie było czasami nużące i frustrujące, ale ostateczny sukces dawał ogromny zastrzyk samozadowolenia <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/482/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=482&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2012/01/27/ubuntu-dwa-monitory-na-nowo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>
	</item>
		<item>
		<title>Własny odtwarzacz audio/wideo w kilku linijkach</title>
		<link>http://moriturius.wordpress.com/2011/11/20/wlasny-odtwarzacz-audiowideo-w-kilku-linijkach/</link>
		<comments>http://moriturius.wordpress.com/2011/11/20/wlasny-odtwarzacz-audiowideo-w-kilku-linijkach/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 08:31:14 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[Ciekawostki]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[multimedia]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[PyQt]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=461</guid>
		<description><![CDATA[Aktualnie zajmuję się coraz intensywniej przygotowywaniem się do utworzenia projektu związanego z moją pracą magisterską (czy wręcz będącym jego podstawą ). Jego kluczową częścią jest odtwarzanie multimediów dlatego dzisiaj sprawdziłem w jaki sposób najlepiej to ugryźć. Oczywiście im bardziej dostępne dla ludzi (wieloplatformowe) tym lepiej. Na początek pomyślałem sobie, by napisać plugin do programu Totem. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=461&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aktualnie zajmuję się coraz intensywniej przygotowywaniem się do utworzenia projektu związanego z moją pracą magisterską (czy wręcz będącym jego podstawą <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). Jego kluczową częścią jest odtwarzanie multimediów dlatego dzisiaj sprawdziłem w jaki sposób najlepiej to ugryźć. Oczywiście im bardziej dostępne dla ludzi (wieloplatformowe) tym lepiej.</p>
<p>Na początek pomyślałem sobie, by napisać plugin do programu Totem. Jest to Linuksowy program do odtwarzania filmów i utworów. Kiedy rozpocząłem swoje poszukiwania odpowiednich tutoriali w tym temacie okazało się, jest z tym raczej krucho. Bardzo słaba dokumentacja i wsparcie od kogokolwiek skłoniła mnie jednak do poszukania czegoś innego.</p>
<p>Jak zwykle w takich sytuacjach pierwsze kroki kieruję w stronę Pythona. Po prostu wiem, że on potrafi zazwyczaj wszystko co potrzeba. W związku z tym, że jakiś czas temu uczyłem się PyQt4 pomyślałem, że może i to przyjdzie mi z pomocą.</p>
<p>Oczywiście nie zawiodłem się <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Okazało się bowiem, że Qt ma przepiękne wsparcie dla odtwarzania audio/video poprzez <a href="http://pl.wikipedia.org/wiki/Phonon">Phonon</a>. Po kilku minutach przypatrywania się genialnej dokumentacji Qt (ma świetne przykłady) napisałem kilka linijek w interaktywnej konsoli Pythona i moim oczom ukazało się okienko z odtwarzaniem filmu! Linijki te wyglądały tak:</p>
<p style="padding-left:30px;">&gt;&gt;&gt; import sys<br />
&gt;&gt;&gt; from PyQt4.QtGui import QApplication<br />
&gt;&gt;&gt; from PyQt4.phonon import Phonon<br />
&gt;&gt;&gt; app = QApplication(sys.argv)<br />
&gt;&gt;&gt; player = Phonon.VideoPlayer(Phonon.VideoCategory)<br />
&gt;&gt;&gt; source = Phonon.MediaSource(&#8222;/sciezka/do/pliku&#8221;)<br />
&gt;&gt;&gt; player.setVisible(True)<br />
&gt;&gt;&gt; player.play(source)</p>
<p>W ten sposób na ekranie pojawiło się proste okienko z odtwarzaniem filmu. Przy pomocy tego narzędzia można napisać prosty program, który uruchomiony z linii poleceń rozpocznie odtwarzanie filmu:</p>
<p><pre class="brush: python;">
import sys
from PyQt4.QtGui import QApplication
from PyQt4.phonon import Phonon

if __name__ == '__main__':    
    app = QApplication(sys.argv)
    app.setApplicationName(&quot;Simple Video Player&quot;)
    player = Phonon.VideoPlayer(Phonon.VideoCategory)
    
    source = Phonon.MediaSource(sys.argv[1])
    player.play(source)
    player.setVisible(True)
    
    app.exec_()
</pre></p>
<p>W taki sposób możemy stworzyć prosty odtwarzacz. To jednak nie wszystko! W pakiecie dostajemy zupełnie za darmo odtwarzanie strumieni sieciowych. Jeśli do <em>MediaSource</em> podamy URL to player po prostu rozpocznie strumieniowanie i odtwarzanie filmu czy pliku dźwiękowego. Oczywiście podając URL statycznego pliku graficznego również ujrzymy go na ekranie. Problem pojawia się jedynie z przezroczystością w plikach PNG, ale do moich zastosowań zupełnie wystarczy mi to co działa dobrze.</p>
<p>Coraz bardziej się przekonuję o tym, że Python+Qt4 to duet nie do zastąpienia. Wszystko o czym pomyślę można osiągnąć pisząc w zasadzie bardzo niewiele linijek i na dodatek wszystko da się uruchomić na różnych systemach operacyjnych. Pięknie! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/461/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/461/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/461/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=461&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2011/11/20/wlasny-odtwarzacz-audiowideo-w-kilku-linijkach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>
	</item>
		<item>
		<title>Ostatnie prace</title>
		<link>http://moriturius.wordpress.com/2011/01/10/ostatnie-prace/</link>
		<comments>http://moriturius.wordpress.com/2011/01/10/ostatnie-prace/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 10:19:21 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[jME3]]></category>
		<category><![CDATA[minecraft]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=453</guid>
		<description><![CDATA[Dawno nie zajrzałem, ani nie napisałem Wszystko dlatego, że specjalnie nie miałem o czym pisać ponieważ zajmowałem się głównie rzeczami uczelnianymi, a kto chce słuchać o podstawach sieci neuronowych albo javowych technologiach? W międzyczasie przypatrywałem się grze Minecraft. Mimo tego, że na pierwszy rzut oka wygląda okropnie (w sumie to na każdy następny rzut oka [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=453&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dawno nie zajrzałem, ani nie napisałem <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Wszystko dlatego, że specjalnie nie miałem o czym pisać ponieważ zajmowałem się głównie rzeczami uczelnianymi, a kto chce słuchać o podstawach sieci neuronowych albo javowych technologiach? <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>W międzyczasie przypatrywałem się grze <em><a title="Minecraft" href="http://www.minecraft.net/" target="_blank">Minecraft</a></em>. Mimo tego, że na pierwszy rzut oka wygląda okropnie (w sumie to na każdy następny rzut oka wygląda równie słabo), a gra nie ma za specjalnie celu wielu ludzi nie może zrozumieć dlaczego, w ogóle taka gra istnieje i ma się dobrze&#8230; Początkowo też nie byłem przekonany ale po jakimś czasie okazało się, że gra jest niezwykle grywalna! Niemały wpływ na taki stan rzeczy ma fakt, że świat zbudowany z klocków można całkowicie przemodelować przy użyciu kilofa, łopaty i siekiery (które trzeba najpierw sobie zrobić).</p>
<p>Tak czy inaczej nie chciałem zachwalać <em>Minecrafta </em>bo czy ktoś go lubi czy nie to już kwestia indywidualna. Postanowiłem stworzyć coś podobnego do Minecrafta tylko idącego w nieco innym kierunku bardziej skupiając się na drugiej części nazwy &#8211; <em>craftingu. </em>Oczywiście zanim będzie można zabrać się w ogóle za tworzenie czegokolwiek potrzebujemy głównie świata, w którym będziemy pracować <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Bez tego ciężko pozyskać surowce.</p>
<p>W czasie świąt udało mi się zmusić silnik <em><a title="jME3" href="http://jmonkeyengine.com/" target="_blank">jMonkey Engine 3</a></em> do wyświetlania świata złożonego z bloczków. Efekt można podziwiać na poniższym screenie:</p>
<p><img class="alignnone" title="Początki" src="http://i11.photobucket.com/albums/a192/doszes/mycraft.png" alt="" width="480" height="360" /></p>
<p style="text-align:left;">W chwili obecnej możliwe jest niszczenie i dostawianie bloków różnych typów. Dodatkowo ostatnim osiągnięciem jest oświetlenie per-blokowe <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align:left;"><img class="alignnone" title="Oświetlenie 1" src="http://i11.photobucket.com/albums/a192/doszes/oswietlenie.png" alt="" width="480" height="360" /></p>
<p style="text-align:left;"><img class="alignnone" title="Oświetlenie 2" src="http://i11.photobucket.com/albums/a192/doszes/oswietlenie2.png" alt="" width="480" height="360" /></p>
<p style="text-align:left;">Oświetlenie zrealizowane jest przy pomocy kolorów wierzchołków, które są mieszane z teksturą przy pomocy prostego pixel shadera. Brakuje tutaj porządnego algorytmu do zaciemniania miejsc zakrytych przed źródłem światła innymi blokami.</p>
<p style="text-align:left;">Ostatnimi dwiema rzeczami, które potrzebuję do osiągnięcia pełni szczęścia w tej chwili jest utworzenie generatora terenu, który potrafiłby &#8222;<em>dogenerować</em>&#8221; kawałki terenu jeśli byłby potrzebny oraz zaimplementowanie jakiejś prostej fizyki by móc się poruszać po świecie.</p>
<p style="text-align:left;">Do tej pory do fizyki używałem zintegrowanego z jME3 silnika fizyki jBullet, ale wydaje się to być trochę wyciąganiem armaty na muchę&#8230;. Pomijam już fakt, że przy zmienianiu geometrii świata trzeba też było generować na nowo <em>CollisionShape</em> dla danego kawałka terenu, a to zabiera kilka cennych kwantów czasu co jest niedopuszczalne! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align:left;">Tak więc&#8230; nie leniłem się ostatnio choć może tak to wyglądało kiedy nic nie pisałem :p Jeśli macie jakiś pomysł jak stworzyć generator terenu, który można tu wykorzystać to jestem otwarty na propozycje <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align:left;">Przypuszczam, że w przyszłości pojawi się jeszcze jakiś wpis na temat tworzonego przeze mnie&#8230; czegoś <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/453/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=453&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2011/01/10/ostatnie-prace/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>

		<media:content url="http://i11.photobucket.com/albums/a192/doszes/mycraft.png" medium="image">
			<media:title type="html">Początki</media:title>
		</media:content>

		<media:content url="http://i11.photobucket.com/albums/a192/doszes/oswietlenie.png" medium="image">
			<media:title type="html">Oświetlenie 1</media:title>
		</media:content>

		<media:content url="http://i11.photobucket.com/albums/a192/doszes/oswietlenie2.png" medium="image">
			<media:title type="html">Oświetlenie 2</media:title>
		</media:content>
	</item>
		<item>
		<title>Szybkie wybranie utworu w MPD</title>
		<link>http://moriturius.wordpress.com/2010/11/12/szybkie-wybranie-utworu-w-mpd/</link>
		<comments>http://moriturius.wordpress.com/2010/11/12/szybkie-wybranie-utworu-w-mpd/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 11:46:25 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[ArchLinux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[mpd]]></category>
		<category><![CDATA[utwór]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=446</guid>
		<description><![CDATA[W ostatnim wpisie pokazałem jak można szybko włączyć ulubioną listę utworów. Pod koniec napisałem, że można też pokombinować trochę i zrobić skrypt do wyboru konkretnego utworu z załadowanej już listy. Okazało się to nieco bardziej kombinatorskie ale w końcu się udało Poniżej daję skrypt który pokazuje listę utworków i po wyborze jakiegoś zaczyna go odtwarzać: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=446&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>W ostatnim wpisie pokazałem jak można szybko włączyć ulubioną listę utworów. Pod koniec napisałem, że można też pokombinować trochę i zrobić skrypt do wyboru konkretnego utworu z załadowanej już listy.</p>
<p>Okazało się to nieco bardziej kombinatorskie ale w końcu się udało <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Poniżej daję skrypt który pokazuje listę utworków i po wyborze jakiegoś zaczyna go odtwarzać:</p>
<pre style="padding-left:30px;">#!/bin/bash

if [ -z `pgrep mpd` ]
then
 echo "MPD nie jest uruchomione!"
 exit 1
fi

UTWORY=$(mpc playlist | sed 's/\(.*\)/"\1"/' | awk '{print NR,$0}' )

CMD="zenity --title='Wybór utworu' --width=600 --height=600
 --list --column '#' --column 'Utwór' $UTWORY"
NUM=$(eval $CMD)

if [ -z $NUM ]
then
 exit 0
fi

mpc play $NUM</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/446/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=446&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2010/11/12/szybkie-wybranie-utworu-w-mpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>
	</item>
		<item>
		<title>Szybkie włączanie playlist MPD</title>
		<link>http://moriturius.wordpress.com/2010/11/12/szybkie-wlaczania-playlist-mpd/</link>
		<comments>http://moriturius.wordpress.com/2010/11/12/szybkie-wlaczania-playlist-mpd/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 09:59:42 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[ArchLinux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[mpd]]></category>
		<category><![CDATA[playlist]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=441</guid>
		<description><![CDATA[Korzystając z dzisiejszego dnia wolnego postanowiłem pogrzebać trochę w systemie. Uporządkowałem więc problemy z dźwiękiem, które pojawiły się po zainstalowaniu KDE. Problem był taki, że dźwięk mogła odtwarzać tylko jedna aplikacja w danej chwili. Rozwiązanie było dość proste bo wystarczyło zainstalować PulseAudio i przekierować na niego cały dźwięk. Tak czy inaczej pomyślałem sobie, że fajnie [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=441&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Korzystając z dzisiejszego dnia wolnego postanowiłem pogrzebać trochę w systemie. Uporządkowałem więc problemy z dźwiękiem, które pojawiły się po zainstalowaniu KDE. Problem był taki, że dźwięk mogła odtwarzać tylko jedna aplikacja w danej chwili. Rozwiązanie było dość proste bo wystarczyło zainstalować PulseAudio i przekierować na niego cały dźwięk.</p>
<p>Tak czy inaczej pomyślałem sobie, że fajnie byłoby móc szybko wybrać sobie szybko playlistę utworów i zacząć ją odtwarzać najszybciej jak się da. Kto lubi czekać aż włączy się program do odtwarzania muzyki? Jasną jest sprawą, że prędkość zależy od programu <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  W tej sprawie <a title="Music Player Daemon" href="https://secure.wikimedia.org/wikipedia/pl/wiki/Music_Player_Daemon" target="_blank">Music Player Daemon</a> [MPD] jest nie do pobicia. Głównie dlatego, że jest to jedynie serwer dźwięku bez żadnego graficznego zatem nie ładuje żadnych zbędnych bibliotek. Prawdę mówiąc to działa dokładnie jako serwer i jedyna możliwość jego obsługi to podłączenie się do niego poprzez program klienta. Klientów jest bardzo wiele. W większości są to programy używające jakiegoś ładnego GUI co sprawia, że są wygodne i działają w sumie podobnie do zwykłych programów do odtwarzania audio jak Windows Media Player, Amarok czy Rhythmbox [oraz wiele innych <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ].</p>
<p>Najbardziej interesujące jest jednak narzędzie konsolowe do obsługi tegoż serwera. Działa natychmiastowo zatem włączenie serwera i rozpoczęcie odtwarzania muzyki to kwestia kilku poleceń. Ale co szybszego jest w odpalaniu konsoli i wklepywaniu poleceń? NIC! Dlatego trzeba to trochę zautomatyzować by było lepiej i wygodniej. Prowadzi do tego <em>bardzo</em> długa droga składająca się z dwóch kroków:</p>
<ol>
<li>Utworzenie pliku uruchamiającego demona mpd (jeśli jeszcze nie działa) oraz wyświetlającego wszystkie nasze playlisty.</li>
<li>Dodanie globalnego (dla systemu) skrótu klawiszowego do uruchomienia tego skryptu.</li>
</ol>
<p>Najpierw należy utworzyć skrypt gdzieś na domyślnej ścieżce wyszukiwania systemu. Ja dodałem do zmiennej <em>PATH</em> katalog <em>~/.bin</em> dzięki czemu wystarczyło utworzyć plik:</p>
<pre style="padding-left:30px;">touch ~/.bin/mpdplaylist
chmod +x ~/.bin/mpdplaylist</pre>
<p>Do pliku wpiszmy kilka poleceń:</p>
<pre style="padding-left:30px;">#!/bin/bash

MPDPID=`pgrep mpd`
if [ ! -z $MPDPID ]
then
 echo Uruchamiam mpd...
 mpd
fi

LISTY=`mpc lsplaylists`
LISTA=`zenity --list --text "Proszę wybrać listę:" --column "Listy" $LISTY`

if [ -z $LISTA ]
then
 exit
fi

mpc clear
mpc load $LISTA

mpc shuffle
mpc play</pre>
<p>W powyższym skrypcie najpierw sprawdzamy czy jest uruchomiony MPD. Jeśli nie to go uruchamiamy. Jeśli tak to pobieramy wszystkie playlisty oraz wyświetlamy okienko, w którym będziemy mogli wybrać tę do odtwarzania. Jeżeli lista nie zostanie wybrana to nic nie zmieniamy i kończymy skrypt.</p>
<p>Później czyścimy aktualną listę odtwarzania i ładujemy wybraną. Na koniec mieszamy utwory (aby nie słuchać ich zawsze w tej samej kolejności) i uruchamiamy odtwarzanie.</p>
<p>Ostatnim krokiem do szczęścia jest ustawienie globalnego skrótu klawiszowego. W KDE4 należy uruchomić <em>Ustawienia Systemowe &gt; Skróty i gesty &gt;</em>Własne skróty i tam dodać odpowiedni skrót uruchamiający nasz skrypt.</p>
<p>W efekcie otrzymujemy okienko:</p>
<p style="text-align:center;"><img class="alignnone" title="Wykaz list odtwarzania" src="http://imagebin.ca/img/Cmz_Wy.png" alt="" width="308" height="225" /></p>
<p style="text-align:left;"><strong>WAŻNE:</strong> do działania skrypt potrzebuje programu <em>zenity</em>!</p>
<p style="text-align:left;">Takie rozwiązanie sprawy pozwala niemalże natychmiast rozpocząć odtwarzanie ulubionych utworów. W razie gdybyśmy chcieli posłuchać innej playlisty wystarczy znów wcisnąć skrót i wybrać ją z proponowanych.</p>
<p style="text-align:left;">Można by jeszcze utworzyć podobny skrypt tylko do wyświetlania wszystkich utworów na danej playliście żeby skoczyć do odtwarzania go. Wówczas dałoby się powiedzieć, że sam system działa jak odtwarzacz multimediów&#8230; Zwłaszcza jeśli połączy się go z przełącznikiem utworów na pasku zadań  <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/441/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=441&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2010/11/12/szybkie-wlaczania-playlist-mpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>

		<media:content url="http://imagebin.ca/img/Cmz_Wy.png" medium="image">
			<media:title type="html">Wykaz list odtwarzania</media:title>
		</media:content>
	</item>
		<item>
		<title>Jak wywołać z Javy konkretną funkcję skryptu JavaScript</title>
		<link>http://moriturius.wordpress.com/2010/09/23/jak-wywolac-z-javy-konkretna-funkcje-skryptu-javascript/</link>
		<comments>http://moriturius.wordpress.com/2010/09/23/jak-wywolac-z-javy-konkretna-funkcje-skryptu-javascript/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 06:36:08 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[Bez Kategorii]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=427</guid>
		<description><![CDATA[Wczoraj opisałem trochę w jaki sposób można wykonać skrypt JS używając silnika Mozilla Rhino. Wczoraj byłem tak podekscytowany tym, że wreszcie mi się udąło, że zapomniałem napisać z czego właściwie korzystałem Tak czy inaczej samo wykonanie skryptu to jeszcze nie wszystko. Gdybyśmy chcieli mieć w grze wiele różnych obiektów wykonujących kilka zadań w zależności od [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=427&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wczoraj opisałem trochę w jaki sposób można wykonać skrypt JS używając silnika <a href="http://www.mozilla.org/rhino/">Mozilla Rhino</a>. Wczoraj byłem tak podekscytowany tym, że wreszcie mi się udąło, że zapomniałem napisać z czego właściwie korzystałem <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
</p>
<p>
Tak czy inaczej samo wykonanie skryptu to jeszcze nie wszystko. Gdybyśmy chcieli mieć w grze wiele różnych obiektów wykonujących kilka zadań w zależności od potrzeb to musielibyśmy dla każdej funkcji pisać osobny plik skryptu. Ani to wygodne, ani eleganckie dlatego też warto było poświęcić wczoraj kilka chwil na zastanowienie się w jaki sposób wywoływać po nazwie funkcje JS z kodu Javy.
</p>
<p>
Aby to osiągnąć najpierw trzeba załadować skompilowany skrypt tak jak w ostatnim poście.
</p>
<p>
<pre class="brush: java;">
URL[] urls;
urls = new URL[] { new File('/home/morti/NetBeansProjects/RhinoJS/scripts').toURI().toURL() };
URLClassLoader loader = new URLClassLoader(urls);
Class cl = Class.forName('Base', true, loader);

Script scr = (Script) cl.newInstance();
</pre>
</p>
<p>
Następnie należy utworzyć/pobrać kontekst wykonywania oraz przestrzeń:
</p>
<p>
<pre class="brush: java;">
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects();
</pre>
</p>
<p>
Na stronie o silniku RhinoJS nie rozwodzili się przesadnie nad tym czym jest kontekst ale dość jasno zaznaczyli, że ma on występować jeden na wątek. Na szczęście funkcja <em>enter()</em> załatwia wszystko za nas. Jeżeli w tym wątku nie ma jeszcze kontekstu to zostanie utworzony a jeśli jest to zostanie pobrany i zwiększony jego licznik referencji. Skoro jest licznik referencji to pewnie trzeba też jakoś informować o oddaniu obiektu no i rzeczywiście: mamy metodę <em>Context.exit()</em>.
</p>
<p>
A do czego te przestrzenie? No cóż. Służą one głównie do przechowywania środowiska wykonywania skryptu (np. zdefiniowanych zmiennych oraz ich wartości). Możemy mieć takich przestrzeni ile dusza zapragnie no i dobrze <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Cała sztuczka polega na tym, że dla każdego obiektu w grze będziemy mieli jedną przestrzeń, która będzie przechowywała stan zmiennych oraz treści funkcji. Za chwilę postaram się wytłumaczyć dlaczego tyle tych <em>scopów</em> będziemy potrzebować. Najpierw jednak dam następny fragmencik kodu:
</p>
<p>
<pre class="brush: java;">
scr.exec(cx, scope);
</pre>
</p>
<p>
Być może dla niektórych jest już jasne dlaczego potrzebujemy wiele przestrzeni. Napiszę jednak, aby wszyscy mogli wyciągnąć z tego tekstu wartościowe informacje <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Jak widzimy powyżej należy wykonać załadowany skrypt. Trzeba wykonać ten krok aby zdefiniować w przestrzeni funkcje. Jeśli będziemy mieli wiele obiektów używających skryptów tej samej postaci (z tymi samymi nazwami funkcji) to gdybyśmy zdefinoiwali je wszystkie w jednej przestrzeni to tylko funkcje ostatniego skryptu byłyby wykonywane dla wzsystkich gdyż nadpisałyby one definicje poprzednich skryptów. Dlatego każdy obiekt w grze powinien mieć włąsną przestrzeń wykonywania skryptu.
</p>
<p>
Jak dotąd w sumie zrobiliśmy to samo co w ostatnim poście z tą różnicą, że dziś na tym nie skończymy <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  No i oczywiście opisałem nieco znaczenie kilku wymaganych linijek. W całym kodzie trzeba oczywiście jeszcze umieścić odpowiednie bloki <em>try{..} catch(&#8230;)</em> ale nie używam tego tutaj ponieważ utrudniłoby to tylko czytanie przykładów.
</p>
<p>
Ostatnią rzeczą, którą trzeba wykonać jest pobranie obiektu funkcji z przestrzeni oraz wywołanie jej z podaniem parametrów:
</p>
<p>
<pre class="brush: java;">
Object fObj = scope.get('NazwaFunkcji', scope);
if(fObj instanceof Function) {
	Function f = (Function)fObj;

	result = f.call(cx, scope, scope, new Object[] {'Argument1', new Integer(44), arg3});
	System.out.println('Result: ' + result);
}
</pre>
</p>
<p>
Powstaje naturalne pytanie dlaczego podajemy aż 2 razy <em>scope</em> skoro na zdrowy rozum możnaby go nie podawać wcale! Pobraliśmy przecież obiekt z tej przestrzeni więc o co tu chodzi. No cóż. chcąc być do końca szczerym to powiem, że nie zagłębiałem się w te przestrzenie tak mocno aby potrafić udzielić zadowalającej odpowiedzi. Mogę jedynie wkleić opis z dokumentacji:
</p>
<p><pre>java.lang.Object call(Context cx,
                      Scriptable scope,
                      Scriptable thisObj,
                      java.lang.Object[] args)

    Call the function. Note that the array of arguments is not
    guaranteed to have length greater than 0.

    Specified by:
        call in interface Callable

    Parameters:
        cx - the current Context for this thread
        scope - the scope to execute the function relative to.
                This is set to the value returned by getParentScope()
                except when the function is called from a closure.
        thisObj - the JavaScript this object
        args - the array of arguments
    Returns:
        the result of the call
</pre>
</p>
<p>
Być może komuś pryda się opisany tutaj sposób na wywołanie funkcji ze skompilowanych skryptów JavaScript. Może ktoś wie coś więcej i potrafi dodać coś do tematu? Ja z pewnością skorzystam z umiesczenia tutaj tego przykładu bo nie będę musiał go szukać w kodzie <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/427/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=427&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2010/09/23/jak-wywolac-z-javy-konkretna-funkcje-skryptu-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>
	</item>
		<item>
		<title>Java Scripting with JavaScript</title>
		<link>http://moriturius.wordpress.com/2010/09/22/java-scripting-with-javascript/</link>
		<comments>http://moriturius.wordpress.com/2010/09/22/java-scripting-with-javascript/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 18:37:20 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=423</guid>
		<description><![CDATA[Jakiś czas temu pisałem o tym jaki to Jython jest świetny ze względu na to, że potrafi się świetnie integrować z Javą itd. Nadal uważam, że to dobra rzecz, ale po pewnym czasie używania tegoż zaczęła mnie irytować pewna sprawa &#8211; czas uruchamiania! Na początku było tak, że za każdym razem przy uruchamianiu aplikacji kompilowałem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=423&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu pisałem o tym jaki to Jython jest świetny ze względu na to, że potrafi się świetnie integrować z Javą itd. Nadal uważam, że to dobra rzecz, ale po pewnym czasie używania tegoż zaczęła mnie irytować pewna sprawa &#8211; czas uruchamiania!</p>
<p>Na początku było tak, że za każdym razem przy uruchamianiu aplikacji kompilowałem skrypty. Myślałem wówczas, że tworzenie interpretera i kombinowanie da się później wyeliminować kompilując skrypty do plików *.class. Tak się niestety nie stało.</p>
<p>Ostatnio usiłując poprawić czas uruchamiania aplikacji skompilowałem najpierw te kilka skryptów testowych do plików binarnych klas Javy i spróbowałem je załadować zupełnie pomijając tworzenie obiektu klasy PythonInterpreter. Życie nie okazało się jednak łaskawe i jak się okazało Jython utworzył mi klasę NazwaKlasy$py.class. Wszelkie próby załadowania tej klasy bez użycia Jythona skończły się niepowodzeniem&#8230; Sam Jython oczywiście potrafił bez problemów wczytać ten plik ale zajmowało to tyle samo czasu ile wcześniej (ok. 5 sekund), zatem startowanie aplikacji nie przyspieszyło.</p>
<p>Postanowiłem zatem poszukać pomocy gdzie indziej &#8211; zmienić język skryptowy. Po krótkim poszukiwaniu stwiedziłem, że chyba najbardziej trafnym językiem skryptowym dla Javy będzie.. JavaScript <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Szybko zabrałem się za pisanie testowych skryptów i kodu uruchamiającego. Kiedy opanowałem samo wykonywanie, przyszedł czas na kompilację i ładowanie. Po kilkudziesięciu minutach z dokumentacją i przykładowymi kawałkami kodu udało mi się stworzyć program kompilujący plij *.js do pliku *.class. Okazało się to być znacznie prostrze niż przypuszczałem gdyż wystarczył taki fragmencik:</p>
<p><pre class="brush: java;">
String script = readSource(&quot;scripts/base.js&quot;);
CompilerEnvirons env = new CompilerEnvirons();
ClassCompiler classCompiler = new ClassCompiler(env);
Object[] classes = classCompiler.compileToClassFiles(script, &quot;scripts/base.js&quot;, 1, &quot;Base&quot;);
</pre></p>
<p>I tyle! Funkcja readScript(..) wczytuje oczywiście z pliku kod skryptu. Wówczas tablica obiektów classes zawiera nazwy klas oraz skompilowane wersje binarne następujące kolejno po sobie. Wystarczy już tylko wpisać dane do odpowiednich plików *.class:</p>
<p><pre class="brush: java;">
for(int i=0; i &lt; classes.length; i+=2) {
 String name = (String)classes[i];
 byte[] bytes = (byte[])classes[i+1];

 File out = new File(&quot;scripts/&quot; + name + &quot;.class&quot;);
 FileOutputStream os = new FileOutputStream(out);
 os.write(bytes);
 os.close();
}
</pre></p>
<p>Wersja binarna może być już łatwo odczytana przez Javę:</p>
<p><pre class="brush: java;">
URL[] urls = new URL[] { new File(&quot;/path/to/scripts&quot;).toURI().toURL() };
URLClassLoader loader = new URLClassLoader(urls);
Class cl = Class.forName(&quot;Base&quot;, true, loader);
</pre></p>
<p>Na koniec aby wykonac skrypt można utworzyć obiekt przy pomocy klasy oraz wywołać funkcję exec():</p>
<p><pre class="brush: java;">
Script scr = (Script) cl.newInstance();
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects();
scr.exec(cx, scope);
</pre></p>
<p>Na zakończenie powiem tylko, że czasowo kompilacja kilku skryptów nie robi praktycznie żadnej różnicy w działaniu programu. Jest to zatem duży plus dla silnika JavaScriptu od Mozilli <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Warto również dodać, że nie traci się spejcalnie na funkcjonalności ponieważ z poziomu skryptów JS można również korzystać z klas Javy <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Później napiszę jeszcze jak ze skryptu wywoływać konkretne funkcje, bo to w sumie nadaje się na osobny wpis <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/423/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=423&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2010/09/22/java-scripting-with-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>
	</item>
		<item>
		<title>Pan&#8230; z dyplomem.</title>
		<link>http://moriturius.wordpress.com/2010/07/08/pan-z-dyplomem/</link>
		<comments>http://moriturius.wordpress.com/2010/07/08/pan-z-dyplomem/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 15:26:35 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[Bez Kategorii]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/2010/07/08/pan-z-dyplomem/</guid>
		<description><![CDATA[Ostatnimi czasy pisałem niewiele. Nie. Nie chcę powiedzieć, że teraz zacznę pisać więcej, choć oczywiście chciałbym. Problem w tym, że aby pisać trzeba mieć o czym. Pisanie, żeby pisać jest słabym pomysłem. Dlaczego więc teraz piszę? Powód nie-pisania ostatnio oraz tego, że piszę teraz jest w zasadzie ten sam &#8211; egzamin dyplomowy. Dziś miałem okazję [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=422&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ostatnimi czasy pisałem niewiele. Nie. Nie chcę powiedzieć, że teraz zacznę pisać więcej, choć oczywiście chciałbym. Problem w tym, że aby pisać trzeba mieć o czym. Pisanie, żeby pisać jest słabym pomysłem. Dlaczego więc teraz piszę?</p>
<p>Powód nie-pisania ostatnio oraz tego, że piszę teraz jest w zasadzie ten sam &#8211; egzamin dyplomowy. Dziś miałem okazję przystąpić do ustnej wersji egzaminu licencjackiego z wynikiem całkiem zadowalającym &#8211; 4,5. Egzamin taki jest moim zdaniem strasznie dziwnym tworem ponieważ powodzenie i porażka zależą tylko i wyłącznie od naszego szczęścia w losowaniu pytań. U mnie nawet nie było losowanie. W zasadzie po wejściu do sali otrzymywało się kartkę z trzema pytaniami. Jakkolwiek dziwny i niesprawiedliwy system oceny wiedzy by nie był to na (nie)szczęście do gry wchodziła jeszcze średnia z całych studiów.</p>
<p>Ostatecznie nie taki diabeł straszny&#8230; Choć spędziłem ostatnie dwa tygodnie siedząc całe dnie i powtarzając 3 lata nauki. Na szczęście teraz mam już wreszcie zasłużone (mam nadzieję, że nikt nie ma innego zdania) wakacje <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  A po wakacjach na studia drugiego stopnia i znów cyrk <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Chciałbym wam obiecać, że będę pisał częściej ale nie jestem pewien czy nie byłoby to okrutne kłamstwo dlatego też nic nie napiszę <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Mam trochę rzeczy do nadrobienia przez ostatnią nieobecność w życiu publicznym i prywatnym na rzecz wzorów i definicji.</p>
<p>Uf.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/422/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=422&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2010/07/08/pan-z-dyplomem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>
	</item>
		<item>
		<title>Co jest najważniejsze w programowaniu?</title>
		<link>http://moriturius.wordpress.com/2010/06/20/co-jest-najwazniejsze-w-programowaniu/</link>
		<comments>http://moriturius.wordpress.com/2010/06/20/co-jest-najwazniejsze-w-programowaniu/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 06:20:38 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Przemyślenia]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/?p=420</guid>
		<description><![CDATA[Regedit na swoim blogu napisał notkę, w której podał adres ciekawego artykułu na temat etapów przejściowych dotyczących każdego programisty. Wiele prawdy jest we wspomnianym artykule, jednak wydaje mi się, że to czy ktoś da się złapać w pułapkę czy nie zależy jedynie od niego samego. Tarczą obronną powinna być skromność, chęć do dalszej nauki oraz [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=420&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Regedit na swoim blogu napisał <a href="http://regedit.gamedev.pl/news_1380_programmer_incompetence.html" target="_blank">notkę</a>, w której podał <a href="http://coderoom.wordpress.com/2010/03/19/5-stages-of-programmer-incompetence/" target="_blank">adres ciekawego artykułu</a> na temat etapów przejściowych dotyczących każdego programisty.</p>
<p>Wiele prawdy jest we wspomnianym artykule, jednak wydaje mi się, że to czy ktoś da się złapać w pułapkę czy nie zależy jedynie od niego samego. Tarczą obronną powinna być skromność, chęć do dalszej nauki oraz doskonalenia technik. Z programowaniem jest jak z majsterkowaniem. Pierwsza rzecz to posiadanie narzędzi (technik), a druga to ich umiejętne wykorzystanie. Niestety umiejętność taką nabywa się z całymi tysiącami linii złego kodu <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Jeszcze innym problemem jest rozumienie swojej pracy. Każdy człowiek, który ma do wykonania jakąkolwiek pracę, powinien <u>zawsze</u> pamiętać o tym co jest celem tej pracy. Inaczej możemy osiągnąć coś takiego:</p>
<p align="center"><a href="http://george.insideiphone.com/wp-content/uploads/2008/11/development.jpg" target="_blank"><img src="http://george.insideiphone.com/wp-content/uploads/2008/11/development.jpg" width="500" /></a></p>
<p>Powszechne jest przekonanie o tym, że programista pisze kod. Nie jest to jednak prawda. Programista pisze program. Dla ludzi. Często nie związanych ani trochę z informatyką. Wydaje mi się, że często bywa tak, że koder poświęca więcej uwagi temu aby kod był piękny niż temu, żeby tworzone narzędzie było użyteczne. Oczywiście nie mówię, że jakikolwiek kod jest dobry <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Kod powinien być tak dobry jak się da. Problem w tym aby wybrać złoty środek. Taki złoty podział pomiędzy jakością kodu, a jakością programu, ponieważ nie zawsze idą one w parze <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Wracając do wspomnianego na początku artykułu: nie mogę się jednoznacznie przyporządkować do żadnej z tych grup. Pewnie, że niektóre opisane tam rzeczy brzmią znajomo <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Mimo to problem autora leży w pewności siebie. Ja nigdy takiej pewności nie miałem i zawsze podchodziłem do swoich rozwiązań z pewną nieufnością sądząc, że da się to zrobić lepiej. Oczywiście zazwyczaj miałem rację <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Patrzę teraz na kod pisany zaledwie rok czy dwa lata temu i już widzę, że był słaby. Zapewne patrząc za rok na kod, który piszę teraz również zobaczę, że można było lepiej. No cóż&#8230; Taka już rola różnych doświadczeń <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/420/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=420&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2010/06/20/co-jest-najwazniejsze-w-programowaniu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>

		<media:content url="http://george.insideiphone.com/wp-content/uploads/2008/11/development.jpg" medium="image" />
	</item>
		<item>
		<title>Gra oparta o encje</title>
		<link>http://moriturius.wordpress.com/2010/05/27/gra-oparta-o-encje/</link>
		<comments>http://moriturius.wordpress.com/2010/05/27/gra-oparta-o-encje/#comments</comments>
		<pubDate>Thu, 27 May 2010 14:15:37 +0000</pubDate>
		<dc:creator>moriturius</dc:creator>
				<category><![CDATA[Ciekawostki]]></category>
		<category><![CDATA[Programowanie]]></category>

		<guid isPermaLink="false">http://moriturius.wordpress.com/2010/05/27/gra-oparta-o-encje/</guid>
		<description><![CDATA[Ponad rok temu zetknąłem się z artykułem [ang., Java+Slick2D] opisującym jak poradzić sobie z obiektami w grach. Zwłaszcza jeśli jest ich bardzo dużo. Jak się okazuje rozwiązaniem są encje, na które składa się wiele małych charakterystyk (komponentów). Idea jest dość prosta, a jej zastosowanie daje duże możliwości. Jeśli ktoś nie jest jeszcze zapoznany z entities [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=418&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ponad rok temu zetknąłem się z <a href="http://slick.cokeandcode.com/wiki/doku.php?id=entity_tutorial" target="_blank">artykułem</a> [ang., Java+Slick2D] opisującym jak poradzić sobie z obiektami w grach. Zwłaszcza jeśli jest ich bardzo dużo. Jak się okazuje rozwiązaniem są encje, na które składa się wiele małych charakterystyk (komponentów).</p>
<p>Idea jest dość prosta, a jej zastosowanie daje duże możliwości. Jeśli ktoś nie jest jeszcze zapoznany z e<em>ntities </em>to proponuję jak najprędzej przeczytać wspomniany artykuł pod adresem:</p>
<p><a href="http://slick.cokeandcode.com/wiki/doku.php?id=entity_tutorial" target="_blank">http://slick.cokeandcode.com/wiki/doku.php?id=entity_tutorial</a></p>
<p>Zastanawiam się tylko jak to jest możliwe, że zajmując się dość intensywnie (swego czasu) próbami napisania różnych gier i poszukiwaniu jak najlepszych sposobów na to, nigdy nie natrafiłem na żadne informacje dotyczące encji w grach. Może jest to coś o czym warto by wytworzyć artykuł na <a href="www.gamedev.pl" target="_blank">Warsztacie</a>?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/moriturius.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/moriturius.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/moriturius.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/moriturius.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/moriturius.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/moriturius.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/moriturius.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/moriturius.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/moriturius.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/moriturius.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/moriturius.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/moriturius.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/moriturius.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/moriturius.wordpress.com/418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=moriturius.wordpress.com&amp;blog=1762176&amp;post=418&amp;subd=moriturius&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://moriturius.wordpress.com/2010/05/27/gra-oparta-o-encje/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fddf652e7f43f3ba774beeb2c5279b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">moriturius</media:title>
		</media:content>
	</item>
	</channel>
</rss>
