<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pamiętnik programisty &#187; Odkurzone</title>
	<atom:link href="http://piotr.doniec.eu/devlog/category/odkurzone/feed/" rel="self" type="application/rss+xml" />
	<link>http://piotr.doniec.eu/devlog</link>
	<description></description>
	<lastBuildDate>Thu, 05 Aug 2010 20:22:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>A może jednak Python?</title>
		<link>http://piotr.doniec.eu/devlog/2009/03/a-moze-jednak-python/</link>
		<comments>http://piotr.doniec.eu/devlog/2009/03/a-moze-jednak-python/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 19:14:53 +0000</pubDate>
		<dc:creator>pejotr</dc:creator>
				<category><![CDATA[Odkurzone]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://piotr.doniec.eu/devlog/?p=125</guid>
		<description><![CDATA[Do odkurzenia tego artykułu skusił mnie link przekazany przez kolegę: http://www.artima.com/weblogs/viewpost.jsp?thread=252441 . Związek jest dość luźny, pod linkiem jest raczej rozważanie na temat przyszłości języków programowania ich mutacji i wspomniane co nieco o Jython&#8217;ie. Poniższy wpis jest odkurzony i lekko przeredagowny. Python to język bardzo wysokiego poziomu w związku z tym tworzenie aplikacji w nim]]></description>
			<content:encoded><![CDATA[<p>Do odkurzenia tego artykułu skusił mnie link przekazany przez kolegę: http://www.artima.com/weblogs/viewpost.jsp?thread=252441 . Związek jest dość luźny, pod linkiem jest raczej rozważanie na temat przyszłości języków programowania ich mutacji i wspomniane co nieco o Jython&#8217;ie. Poniższy wpis jest odkurzony i lekko przeredagowny.</p>
<p>Python to język bardzo wysokiego poziomu w związku z tym tworzenie aplikacji w nim powinno być szybkie. I może samo tworzenie jest, ale jak już się Pythona dobrze zna. Dostarczona dokumentacja jest średnio czytelna i korzystanie z niej nie było zbyt wygodne. Żeby korzystać z docs&#8217;ów Pythona trzeba mieć chyba jakiś dar.<br />
<span id="more-125"></span></p>
<h2><a id="core-documentation" name="core-documentation"></a></h2>
<blockquote><p>&#8222;Although both PHP and Python have excellent core documentation, Python&#8217;s is more extensive and generally higher quality.&#8221;</p></blockquote>
<p>No niestety nie moge się z tym zgodzić&#8230;<br />
Nie wiem jakie są powody że ludzie tak się zachwycają owym Pythonem. Ja bardzo się zniechęciłem gdy zobaczyłem że nie ma ani kwantyfikatowór dostępu, ani definicji pól klasy. Pola można sobie dodawać dowolnie w tracie działania, żadne deklaracje nie są wymagane. To takie wbudowane <em>__set</em> i <em>_call</em> z php.<br />
Napisanie programiku do logowania się do &#8222;wioski&#8221; w grze plemiona zajęło mi koło 2,5h.<br />
Linii mamy 32, co daje jakie 4,5 minuty na napisanie linii, a wiadomo że nie wszystkie linie są sobie równe.</p>
<pre class="brush: python">
import urllib, urllib2, cookielib

class PlemionaTool :
  def connect(self, username, password, world) :
    try:
      cookies = cookielib.CookieJar()
      self._world = world
      self._connection_handler = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies))
      headers = {&quot;User-Agent&quot;: &quot;Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11&quot;}
      login_data = urllib.urlencode({&quot;user&quot;: username,
                                              &quot;clear&quot;: &quot;true&quot;,
                                              &quot;password&quot;: password,
                                              &quot;server&quot;: world,
                                              &quot;login-btn-input&quot;: &quot;&quot;,
                                              &quot;cookie&quot; : &quot;false&quot;})
      request_http = &quot;http://www.plemiona.pl/index.php?action=login&quot;
      req = urllib2.Request(request_http, login_data, headers)
      self._connection_handler.open(req)
    except urllib2.HTTPError:
        print &quot;Jakis zonk&quot;

  def headquater(self) :
    response = self._connection_handler.open(&quot;http://&quot; + self._world +     &quot;.plemiona.pl/game.php?village=NUMER_WIOSKI&amp;amp;amp;amp;amp;amp;screen=main&quot;)
    page = response.read()
    return page

def main():
  pt = PlemionaTool()
  pt.connect(&quot;LOGIN&quot;, &quot;HASLO&quot;, &quot;SWIAT&quot;)
  print pt.headquater()

if __name__ == &#039;__main__&#039;:
  main()
</pre>
<p>Z zalet można wymienić wysokopoziomowość. Nie trzeba się męczyć z odbiorem, obróbką i wysyłaniem cookies, nie trzeba się też bawić z przechwytywć żadnego wyjątku  jak np. HTTPRedirect z Delphi.</p>
]]></content:encoded>
			<wfw:commentRss>http://piotr.doniec.eu/devlog/2009/03/a-moze-jednak-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obiekty proxy w Java&#8217;ie</title>
		<link>http://piotr.doniec.eu/devlog/2009/03/obiekty-proxy-w-javaie/</link>
		<comments>http://piotr.doniec.eu/devlog/2009/03/obiekty-proxy-w-javaie/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 20:34:07 +0000</pubDate>
		<dc:creator>pejotr</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Odkurzone]]></category>

		<guid isPermaLink="false">http://piotr.doniec.eu/devlog/?p=116</guid>
		<description><![CDATA[Co to są właściwie klasy Proxy? Z pojęciem proxy często się w informatyce można spotkać, mamy serwery proxy, wzorzec projektowy proxy i zawsze się to ogranicza do pośrednictwa, tak też jest i w tym przypadku, tylko że dostarcza to ogromnych możliwości. Na podstawie przekazanego literału klasy ( niektórzy nazywają to obiektem typu Class ) można]]></description>
			<content:encoded><![CDATA[<p>Co to są właściwie klasy Proxy? Z pojęciem proxy często się w informatyce można spotkać, mamy serwery proxy, wzorzec projektowy proxy i zawsze się to ogranicza do pośrednictwa, tak też jest i w tym przypadku, tylko że dostarcza to ogromnych możliwości. Na podstawie przekazanego literału klasy ( niektórzy nazywają to obiektem typu Class ) można dynamicznie w trakcie wykonywania programu stworzyć klasy implementujące np. wszystkie metody podanego interface&#8217;u. Taka możliwość skłoniła mnie do napisania mini-frameworka umożliwiającego całkowite oddzielenie Widoku aplikacji od Kontrolera. Tak więc w zależności od Kontrolera ten sam guzik widoku może robić 2 różne rzeczy.<br />
<span id="more-116"></span><br />
Celem stworzenia obiektu proxy musimy posłużyć się statyczną metodą:</p>
<pre class="brush: java">
java.lang.reflect.Proxy.newProxyInstance( classLoader, interfaces, handler);
</pre>
<p>gdzie:<br />
classLoader, to co tu dużo mówić classLoader,<br />
intefaces, to tablica interface&#8217;ów jakie ma implementować nowo tworzona klasa<br />
handler, obiekt implementujący interface InvocationHandler &#8211; będzie pośredniczył właśnie w wywołaniach metod interface&#8217;ów podanych jako 2 parametr.</p>
<p>Kod mojego frameworka razem z przykładem zastosowania można obejrzeć, przeanalizować, dostępne jest na googlowym SVN: <code>svn checkout http://pjr-framework.googlecode.com/svn/trunk/ pjr-framework-read-only</code></p>
]]></content:encoded>
			<wfw:commentRss>http://piotr.doniec.eu/devlog/2009/03/obiekty-proxy-w-javaie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
