<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II.</title>
    <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II.</title>
      <description>&lt;p&gt;Jak wspomnia&#322;em &lt;a href="http://blog.zabiello.com/articles/2006/05/27/django-wy%C5%BCszy-poziom-abstrakcji"&gt;w pierwszej cz&#281;&#347;ci&lt;/a&gt;, Django jest frameworkiem kt&#243;ry wyr&#243;s&#322; na bazie zastosowa&#324; komercyjnych. Zanim tw&#243;rcy zdecydowali si&#281; otworzy&#263; i udost&#281;pni&#263; jego kod na zasadach open-source, Django by&#322; ju&#380; wcze&#347;niej intensywnie u&#380;ywany w zastosowaniach komercyjnych&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;


	&lt;h2&gt;Przewaga Django&lt;/h2&gt;


	&lt;p&gt;Wcze&#347;niej pisa&#322;em o zaletach &lt;a href="http://blog.zabiello.com/articles/2006/03/04/pylons-czyli-si%C5%82a-myghty-i-wygoda-rubyonrails"&gt;Pylons&#243;w&lt;/a&gt;. Jednak&#380;e, po moich ostatnich testach z &amp;#8220;oczyszczon&#261; z magii&amp;#8221; wersj&#261; &lt;a href="http://djangoproject.com"&gt;Django&lt;/a&gt; musz&#281; przyzna&#263;, &#380;e jest to chyba aktualnie najlepszy framework, z jakim mia&#322;em do czynienia w tej klasie zastosowa&#324;.&lt;/p&gt;


	&lt;p&gt;Django oferuje &lt;strong&gt;znacznie wi&#281;cej&lt;/strong&gt; helper&#243;w i udogodnie&#324; ni&#380; &#347;wietny &lt;a href="http://pylonshq.com"&gt;Pylons&lt;/a&gt;. Poza wbudowan&#261; autoryzacj&#261; i zaawansowanym panelem admina, Django pracuje na wy&#380;szym poziomie abstrakcji ni&#380; Pylons czy Rails. Zamiast prostych generator&#243;w &lt;span class="caps"&gt;HTML&lt;/span&gt; dla formularzy, Django wprowadza kontrolki, kt&#243;re pracuj&#261; na wy&#380;szym poziomie abstrakcji. Bardzo przejrzy&#347;cie obs&#322;uguje tak&#380;e walidowanie formularzy. Kto si&#281; m&#281;czy&#322; z obs&#322;uga formularzy, nareszcie odetchnie z ulg&#261;. Idea &lt;a href="http://www.djangoproject.com/documentation/forms/"&gt;manipulator&#243;w&lt;/a&gt; bardzo upraszcza pisanie obs&#322;ugi formularzy. Kto&#347; powie, &#380;e to mo&#380;na sobie samemu napisa&#263;. Owszem. Ale Django daje ci to ju&#380; gotowe. Uruchamiasz i u&#380;ywasz zamiast traci&#263; czas.&lt;/p&gt;


	&lt;p&gt;Sprawa dokumentacji, i promocji w og&#243;lno&#347;ci, w wypadku wiekszo&#347;ci framework&#243;w Pythona jest po prostu &#380;enuj&#261;ca. Zdumiewaj&#261;ce jest jak to jest mo&#380;liwe, &#380;e nawet tak pot&#281;&#380;ne &#347;rodowisko jakim jest &lt;a href="http://zope.org"&gt;Zope&lt;/a&gt; ma tak s&#322;ab&#261; stron&#281; i chaotycznie porozrzucan&#261; dokumentacj&#281;.&lt;/p&gt;


	&lt;h3&gt;Kilka m&#261;drych posuni&#281;&#263;.&lt;/h3&gt;


	&lt;p&gt;Pierwsz&#261;, m&#261;dr&#261; rzecz&#261;, jak&#261; zrobiono po otwarciu kodu Django, by&#322;o skupienie si&#281; na pisaniu dokumentacji. Dzi&#281;ki temu, Django ma dzi&#347; jedn&#261; z najlepszych dokumentacji pomi&#281;dzy pythonowymi frameworkami. Bez dobrej dokumentacji, trudno aby ktokolwiek si&#281; zainteresowa&#322; projektem. 
Dokumentacja Django nie r&#243;wna si&#281; jeszcze temu co jest dost&#281;pne dla &lt;a href="http://rubyonrails.com"&gt;Rails&#243;w&lt;/a&gt; ale jest i tak lepsza od wi&#281;kszo&#347;ci framework&#243;w pythonowych.&lt;/p&gt;


	&lt;p&gt;Drugim, r&#243;wnie dobrym posuni&#281;ciem, by&#322; refaktoring pierwotnego kodu zgodnie z zasadami filozofii Pythona. Wg zasady, ze dzia&#322;anie jawne jest lepsze od domy&#347;lnego, nast&#261;pi&#322; proces &lt;strong&gt;usuwania &amp;#8220;magii&amp;#8221;&lt;/strong&gt; z kodu. Np. teraz zamiast tajemniczych prefiks&#243;w do nazw dodatkowych metod modelu, mo&#380;na tworzy&#263; je bardziej naturalnie &amp;#8211; jako metody klasowe Pythona. Aktualnie wersja pozbawiona &amp;#8220;magii&amp;#8221; jest dost&#281;pna w repozytorium &lt;span class="caps"&gt;SVN&lt;/span&gt;. Frameworkiem, kt&#243;ry jest mocno prze&#322;adowany &amp;#8220;magicznymi&amp;#8221; metodami jest Rails. Mo&#380;e to i &#322;adnie wygl&#261;da, ale filozofia Python pot&#281;pia takie podej&#347;cie, gdy&#380; to utrudnia programi&#347;cie w szybkim zorientowaniu si&#281; o co chodzi w kodzie.&lt;/p&gt;


	&lt;p&gt;Trzecim, dobrym pomys&#322;em, jest mo&#380;liwo&#347;ci &lt;strong&gt;testowania &#347;rodowiska w spos&#243;b interaktywny&lt;/strong&gt; w interpreterze. Domy&#347;lne uruchomia si&#281; to w miejscu stworzonego projektu za pomoc&#261; komendy:
&lt;em&gt;manage.py shell&lt;/em&gt;. Ta komenda odpala &lt;a href="http://ipython.scipy.org/"&gt;ipythona&lt;/a&gt; (ile mamy go zainstalowanego) i udost&#281;pnia w nim &#322;atwy dostep do ca&#322;ego &#347;rodowiska Django, jego modeli, bibliotek itp. Ipython to podrasowana wersja interpretera Pythona. &#346;wietnie uzupe&#322;nia metody, ma dobr&#261; histori&#281; edycji i ca&#322;y szereg dodatkowych mo&#380;liwo&#347;ci&lt;sup&gt;&lt;a href="#fn2"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;


	&lt;p&gt;Przyk&#322;adem r&#243;&#380;nic w podej&#347;ciu do kwestii jawno&#347;ci i &amp;#8220;magii&amp;#8221; jest &lt;strong&gt;inny spos&#243;b podej&#347;cia do modu&#322;&#243;w i przestrzeni nazw mi&#281;dzy Pythonem a Ruby&lt;/strong&gt;. Python stosuje przejrzyst&#261; do b&#243;lu zasad&#281;: modu&#322; to po prostu plik. Wszystko co w nim jest, automatycznie jest &#322;adowane do przestrzeni nazw okre&#347;lonej nazw&#261; pliku. Python umo&#380;liwia tak&#380;e selektywne &#322;adowanie z modu&#322;u wybranych klas i metod. Wszystko jest niezmiernie czytelne.&lt;/p&gt;


	&lt;p&gt;W wypadku Rubiego mamy tylko wyra&#380;enie &lt;em&gt;require&lt;/em&gt; kt&#243;re odpala i w&#322;&#261;cza plik. Przy czym z tego kodu kompletnie nic nie mo&#380;na wywnioskowa&#263;, nawet tego, czy w &#347;rodku zawiera jakikolwiek modu&#322;. &lt;strong&gt;Trzeba zajrze&#263;&lt;/strong&gt; aby si&#281; dowiedzie&#263;, co zosta&#322;o dorzucone do naszej przestrzeni nazw. Pythonowa zasada &amp;#8220;jawno&#347;ci ponad domy&#347;laniem si&#281;&amp;#8221;, w tym wypadku stanowi kolejny argument na rzecz wi&#281;kszej produktywno&#347;ci Pythona wobec Rubiego.&lt;/p&gt;


	&lt;h3&gt;Django jest szybsze.&lt;/h3&gt;


	&lt;p&gt;Django jest cholernie szybkie. Nie tylko dlatego, &#380;e korzysta z Pythona i bytecodu, ale tak&#380;e dlatego, &#380;e jest dobrze napisane. Np. szablony Django s&#261; szybsze od &lt;a href="http://cheetahtemplate.org"&gt;Cheetah&lt;/a&gt; i nie wymagaj&#261; &#380;adnej dodatkowej kompilacji! Wszystkie wyra&#380;enia regularne u&#380;ywane np. do parsowania adres&#243;w &lt;span class="caps"&gt;URL&lt;/span&gt; s&#261; jednokrotnie kompilowane, s&#261; wi&#281;c wykonywane bardzo szybko. Ma&#322;o tego, w Django mo&#380;na w&#322;&#261;czy&#263; obs&#322;ug&#281; &lt;a href="http://psyco.sourceforge.net/"&gt;akceleratora Psyco&lt;/a&gt;. Wystarczy w mojprojekt/settings.py doda&#263; linijk&#281; &lt;em&gt;&lt;span class="caps"&gt;ENABLE&lt;/span&gt;_PSYCO = True&lt;/em&gt;. Railsy nie maj&#261; wydajno&#347;ciowo szans z Django. Chyba tylko &lt;a href="http://pylonshq.com"&gt;Pylons&lt;/a&gt; mo&#380;e si&#281; zbli&#380;y&#263; i nawi&#261;za&#263; jak&#261;&#347; walk&#281; na tym polu. Rails i &lt;span class="caps"&gt;PHP&lt;/span&gt; s&#261; tu bez szans.&lt;/p&gt;


	&lt;h3&gt;Django pracuje na wy&#380;szym poziomie abstrakcji.&lt;/h3&gt;


	&lt;p&gt;Obs&#322;uga formularzy, ich walidacja s&#261; zwykle uci&#261;&#380;liwe i programi&#347;ci maj&#261; z nimi ci&#261;gle do czynienia. &lt;a href="http://rubyonrails.com"&gt;Rails&lt;/a&gt; oraz  &lt;a href="http://pylonshq.com"&gt;Pylons&lt;/a&gt; (kt&#243;ry to skopiowa&#322; z Rails&#243;w) udost&#281;pniaj&#261; ca&#322;a grup&#281; wygodnych helper&#243;w do generowania kodu html np. do formularzy. Mimo, &#380;e to jest na pewno lepsze podej&#347;cie od bezpo&#347;redniego d&#322;ubania w kodzie &lt;span class="caps"&gt;HTML&lt;/span&gt;, to Django oferuje co&#347; znacznie lepszego &amp;#8211; &lt;strong&gt;kontrolki&lt;/strong&gt;. Co&#347;, co u&#380;ywa np. &lt;span class="caps"&gt;ASP&lt;/span&gt;.NET, tylko &#380;e znacznie prostsze w obs&#322;udze.&lt;/p&gt;


	&lt;p&gt;Djangowe modele korzystaj&#261;ce z mapowania relacyjno-obiektowego (ORM) r&#243;wnie&#380; pracuj&#261; &lt;a href="http://www.djangoproject.com/documentation/model_api/"&gt;na wy&#380;szym poziomie abstrakcji ni&#380; tylko odwzorowania prostych typ&#243;w&lt;/a&gt; danych jakie posiada relacyjna baza danych. Uwa&#380;am te&#380;, &#380;e djangowy &lt;span class="caps"&gt;ORM&lt;/span&gt; jest lepszy od &lt;a href="http://www.sqlobject.org/"&gt;SQLObject&lt;/a&gt;. Nie do&#347;&#263; &#380;e ma znacznie lepsz&#261; dokumentacj&#281;, to na dodatek ma wi&#281;cej mo&#380;liwo&#347;ci. Np. niby taka trywialna sprawa, ale jak w SQLObject odwzorowa&#263; takie zapytanie (z takim samym traktowaniem du&#380;ych i ma&#322;ych polskich znak&#243;w)?&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_sql "&gt;SELECT * FROM tabelka WHERE pole LIKE '%warto&#347;&#263;%'&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;W Django to jest trywialna operacja i na dodatek operuje na generatorze:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;row&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="constant"&gt;Tabelka&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;objects&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;filter&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;pole__icontains&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;warto&#347;&#263;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;):&lt;/span&gt;
    &lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="ident"&gt;row&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;pole&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;W kolejnych cz&#281;&#347;ciach, zajm&#281; si&#281; przyk&#322;adem stworzenia prostej aplikacji internetowej. Poka&#380;&#281; te&#380; jak przeci&#261;&#380;y&#263; modyfikator &lt;a href="http://www.djangoproject.com/documentation/templates/#pluralize"&gt;pluralize&lt;/a&gt; aby uwzgl&#281;dnia&#322; polskie znaki, i jak obs&#322;ugiwa&#263; formularze (w&#322;&#261;cznie z dynamicznym budowaniem ich tre&#347;ci)&lt;/p&gt;


	&lt;p&gt;&lt;del&gt;-&lt;/del&gt;&lt;/p&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; Poza ca&#322;ym &lt;a href="http://code.djangoproject.com/wiki/DjangoPoweredSites"&gt;szeregiem z&#322;o&#380;onych portali&lt;/a&gt;, developerzy Django sprzedaj&#261; &lt;a href="http://www.ellingtoncms.com/"&gt;Elington&lt;/a&gt; &amp;#8211; profesjonalny &lt;span class="caps"&gt;CMS&lt;/span&gt; zbudowany na bazie tego frameworku. Oczywi&#347;cie &lt;a href="http://rubyonrails.com"&gt;Railsy&lt;/a&gt; r&#243;wnie&#380; powsta&#322;y pierwotnie jako projekt do zastosowa&#324; komercyjnych. St&#261;d nic dziwnego, &#380;e oba &#347;rodowiska oferuj&#261; sporo interesuj&#261;cych rozwi&#261;za&#324;.&lt;/p&gt;


	&lt;p id="fn2"&gt;&lt;sup&gt;2&lt;/sup&gt; Aby dzia&#322;a&#322;y uzupe&#322;niania metod (po wci&#347;ni&#281;ciu klawisza Tab) trzeba doinstalowa&#263; modu&#322; &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=82407&amp;#38;package_id=84552"&gt;readline&lt;/a&gt; oraz &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=71702&amp;#38;package_id=71318"&gt;ctypes&lt;/a&gt;. Je&#347;li interpreter nie wyrzuca wyj&#261;tku po  wpisaniu &lt;em&gt;import readline&lt;/em&gt;, to znaczy &#380;e mamy go ju&#380; zainstalowanego.&lt;/p&gt;


&lt;p style="text-align:center;"&gt;(Zobacz: &lt;a href="http://blog.zabiello.com/articles/2006/06/12/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-iii"&gt;cz&#281;&#347;&#263; &lt;span class="caps"&gt;III&lt;/span&gt;&lt;/a&gt;)&lt;/p&gt;</description>
      <pubDate>Sat, 27 May 2006 18:53:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:554ba58d-ef92-4c15-ace3-deffeb48adb7</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii</link>
      <category>Python</category>
      <category>Django</category>
      <category>django</category>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Kontrolki Django wygl&#261;daj&#261; bardzo prosto w szablonie. Wg mnie te dostarczane standardowo powinny by&#263; bardziej elastyczne (np. brakuje mi tam parametr&#243;w dla styli) Zawsze jednak mo&#380;esz stworzy&#263; swoje klasy na bazie podstawowych kontrolek. Wr&#281;cz to jest koniecznie dla bardziej z&#322;o&#380;onych przypadk&#243;w.&lt;/p&gt;


	&lt;p&gt;Z kolei Pylons jest o tyle ciekawy, &#380;e udost&#281;pnia helpery skopiowane z &lt;a href="http://rubyonrails.org" rel="nofollow"&gt;Ruby on Rails&lt;/a&gt;, kt&#243;re s&#261; bardzo elastyczne. Znacznie bardziej od tych, co ma Django, ale co&#347; za co&#347;. Django zapewnia eleganck&#261; walidacj&#281; szablon&#243;w (szablon wi&#261;&#380;e z klas&#261;, pisz&#281; o tym w &lt;a href="http://blog.zabiello.com/articles/2006/06/12/django-zab&#243;jcza-aplikacja-cz&#281;&#347;&#263;-iii" rel="nofollow"&gt;trzeciej cz&#281;&#347;ci artyku&#322;u o Django&lt;/a&gt;). Pylons do tego u&#380;ywa biblioteki &lt;a href="http://pylonshq.com/docs/0.9.3/form_handling.html" rel="nofollow"&gt;FormEncode&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Zope to oddzielna, ci&#281;&#380;ka bestia, nie b&#281;d&#281; komentowa&#322;. Powiem tylko, &#380;e tam wszystko robi si&#281; inaczej. Walidacj&#281; szablonu zapewnia np. gotowy produkt Zope, kt&#243;ry wystarczy doda&#263; do Zope.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 00:57:26 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:57c54b40-3643-414c-b0f0-b39a41ec4578</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-294</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by proximus</title>
      <description>&lt;p&gt;Witam,
naprawd&#281; &#347;wietne artyku&#322;y. Jestem raczej pocz&#261;tkuj&#261;cym programist&#261;. Mam kilka pyta&#324; odno&#347;nie tworzenia interfejsu u&#380;ytkownika w Django za pomoc&#261; opisywanych w tek&#347;cie &amp;#8220;kontrolek&amp;#8221;. Chodzi mi o prostot&#281; generowania dobrze wygl&#261;daj&#261;cych, i &#322;atwych w obs&#322;udze formularzy, list itp. czyli wszystkiego co wi&#261;&#380;e si&#281; z UI. Czy Django wspiera samo z siebie tworzenie UI czy te&#380; trzeba &amp;#8220;ostro d&#322;uba&#263;&amp;#8221; w htmlu i stylach? Podam przyk&#322;ad: chcia&#322;bym stworzy&#263; formularz z wieloma inputami, chceckboxami itd. W jaki spos&#243;b wykona&#263; to naj&#322;atwiej (i najszybciej) w Django tak, aby by&#322;o to wygodne w u&#380;ytkowaniu?(g&#322;&#243;wnie chodzi o to, &#380;eby inputy nie by&#322;y ka&#380;dy w innej linii, a to dlatego, &#380;eby nie trzeba by&#322;o w niesko&#324;czono&#347;&#263; przewija&#263; strony) Moje pytanie bierze si&#281; st&#261;d, &#380;e w r&#243;&#380;nych tutorialach i screencastach widzia&#322;em, bardzo proste przyk&#322;ady, w kt&#243;rych formularze sk&#322;ada&#322;y si&#281; z maksymalnie kilku p&#243;l, a interesuje mnie jak to wygl&#261;da w wersji bardziej skomplikowanej. Korzystaj&#261;c z wiedzy autora chcia&#322;bym zapyta&#263; tak&#380;e jak od strony wsparcia dla budowania UI wygl&#261;daj&#261; pylons  i zope? Z g&#243;ry dzi&#281;kuj&#281; za odpowied&#378;.&lt;/p&gt;</description>
      <pubDate>Sat, 18 Nov 2006 00:30:56 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:0714a679-35d7-4b33-a68e-b94dce9cc95a</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-293</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Drogomir</title>
      <description>&lt;p&gt;Bardzo fajny tekst, czekam na dalsz&#261; cz&#281;&#347;&#263;.&lt;/p&gt;


	&lt;p&gt;Odpali&#322;em dzisiaj django i przedzed&#322;em przez 1 tutorial. Wygl&#261;da to do&#347;&#263; fajnie, ale zawsze jak widz&#281; takie narz&#281;dzia, to zastanawiam si&#281; co b&#281;dzie, jak b&#281;d&#281; chcia&#322; podmieni&#263; niekt&#243;re akcje, doda&#263; gdzieniegdzie ajax&amp;#8217;a, zrobi&#263; jakie&#347; niestandardowe formularze (na przyk&#322;ad menu w postaci drzewa) itd. B&#281;d&#281; musia&#322; rozpracowa&#263; django w tym kierunku.&lt;/p&gt;


	&lt;p&gt;Jak na razie django w moich oczach jest doskona&#322;ym narz&#281;dziem do tworzenia raczej szablonowych aplikacji &amp;#8211; cms&amp;#8217;y na przyk&#322;ad. Czekam wi&#281;c na nast&#281;pne artyku&#322;y, kt&#243;re by&#263; mo&#380;e b&#281;d&#261; powodem zmiany mojego zdania ;-)&lt;/p&gt;</description>
      <pubDate>Mon, 29 May 2006 11:48:12 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:0c23d1c9-87fc-4a85-a3d0-e3356d3c50a1</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-125</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Balwi</title>
      <description>&lt;p&gt;Szukam jakiego&#347; frameworka i to wygl&#261;da bardzo ciekawie czekam na wi&#281;cej. Bardzo ciekawy blog, tak trzyma&#263; !!!&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 12:24:47 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:25c1c61b-ea2a-4a85-b417-d5309706dbe1</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-124</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Adamh</title>
      <description>&lt;p&gt;Wiem, ze ksiazka powstaja i wiem, ze ponoc ma byc wydana na licencji FDL (odpowiednik GPL dla ksiazek) tak jak: &lt;a href="http://diveintopython.org/" rel="nofollow"&gt;http://diveintopython.org/&lt;/a&gt; 
Dodam, ze bardzo na nia czekam.&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 10:34:01 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:bcba3369-0eaf-4dd5-ad40-b9b583d13d4c</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-123</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Przemek: Django jest bardzo dobrze wytestowany g&#322;&#243;wnie z PostgresSQL, na nim od pocz&#261;tku pracowa&#322;. Z kolei, mam silne wra&#380;enie, &#380;e Rails od pocz&#261;tku powstawa&#322; i by&#322; testowany g&#322;&#243;wnie na MySQL&amp;#8230;&lt;/p&gt;


	&lt;p&gt;Adamh: ksi&#261;&#380;ka do Django jst w trakcie pisania przez jego tw&#243;rc&#243;w. Fakt, &#380;e dokumentacja Rails&#243;w wraz z ksi&#261;&#380;kami jest nie do pobicia. Ale ja si&#281; sam zdziwi&#322;em jak niewiele trzeba, aby co&#347; napisa&#263; w Django. Mo&#380;e dlatego, &#380;e Pythona wci&#261;&#380; lepiej znam i poruszam si&#281; w nim bardziej intuicyjnie ni&#380; w Ruby?&lt;/p&gt;


	&lt;p&gt;Maniel: ipython ma to wszystko ju&#380; gotowe.  No chyba, &#380;e co&#347; innego masz na my&#347;li.&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 09:39:38 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:ccb451ce-ebe4-4f48-9b72-a4d57c9cd601</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-120</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Tomek</title>
      <description>&lt;p&gt;Dz&#281;ki bardzo &amp;#8211; czekam na wi&#281;cej bo stoje przed wyborem ruby czy python&amp;#8230; :)&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 07:33:40 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:be5ded56-db94-4ef3-9d48-1cee7b42a027</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-119</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by maniel</title>
      <description>&lt;p&gt;ja chcia&#322;em zauwa&#380;y&#263; ze standardowy interpreter pythoina tez mo&#380;na skonfigurowa&#263; coby dopelnia&#322; nazwy klas, metod i zmiennych oraz zapisywa&#322; histori&#281; polece&#324; do pliku jak w shellu ;-)&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 06:58:53 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:59c29d1a-534e-4b7e-afc6-da554e6c0ad5</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-117</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Adamh</title>
      <description>&lt;p&gt;Tak jak pisalem juz kilka razy wczesniej. Przyszlosc WWW to imho Rails i Dajngo. 
Django zrobilo duzy krok do przodu i moze niedlugo nawiazac bezposrednio walke z Rails jesli chodzi o popularnosc. 
Z wiekszoscia argumentow jakie podajesz zgadzam sie czesciowo ale z jednym nie mozna sie spierac:wydajnosc.
Poki co Django brakuje wsparcia i rozglosu, do tego dokumentacja nadal jest bardzo slawa w porownaniu do Rails (nie wspomne nawet o ksiazkach).&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 05:25:32 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:35c10731-4956-4743-acff-944bd8fae1f4</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-113</link>
    </item>
    <item>
      <title>"Django - zab&#243;jcza aplikacja. Cz&#281;&#347;&#263; II." by Przemek Piotrowski</title>
      <description>&lt;p&gt;Swietny artykul, nareszcie magic-removal i nareszcie obsluga Oracle. Wersja 1.0 prawdopodobnie usunie inne frameworki w cien juz na stale &amp;#8211; Guido (=Google) popiera Django i to rowniez moze okazac sie decydujace.  Szkoda tylko ze jego developerzy maja taki lekcewazacy stosunek do integracji z komercyjnymi warstwami aplikacji, ale licze ze to sie jeszcze zmieni w przyszlosci.&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 03:10:07 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:8a5ff847-67a9-45d0-b7c2-1b721c32fc2a</guid>
      <link>http://blog.zabiello.com/articles/2006/05/27/django-zab%C3%B3jcza-aplikacja-cz%C4%99%C5%9B%C4%87-ii#comment-112</link>
    </item>
  </channel>
</rss>
