<?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/"
	>

<channel>
	<title>Marcin Kaszyński &#187; Python</title>
	<atom:link href="http://marcinkaszynski.com/blog/index.php/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://marcinkaszynski.com/blog</link>
	<description>Firmy i projekty programistyczne</description>
	<pubDate>Sat, 04 Feb 2012 17:48:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DjangoPiwo</title>
		<link>http://marcinkaszynski.com/blog/index.php/2011/07/26/djangopiwo/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2011/07/26/djangopiwo/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 10:42:37 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Programowanie]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[SetJam]]></category>

		<category><![CDATA[bootstrap]]></category>

		<category><![CDATA[bootstrap.pl]]></category>

		<guid isPermaLink="false">http://marcinkaszynski.com/blog/?p=463</guid>
		<description><![CDATA[Przez zamieszanie z&#160;hackerspace zapomniałem napisać: najbliższe DjangoPiwo odbędzie się w&#160;środę 27 lipca.  Czyli jutro.
SetJam HQ, Warszawa, ul. Puławska 39 lokal 60, 6 piętro, zaczynamy o&#160;20:00, BYOB.  Programujesz w&#160;Pythonie, Ruby, JavaScripcie?  Tworzysz serwisy internetowe?  A&#160;może startupujesz?  Przyjdź, spodoba Ci się.
]]></description>
			<content:encoded><![CDATA[<p>Przez zamieszanie z&nbsp;<a href="http://hackerspace.pl/">hackerspace</a> zapomniałem napisać: najbliższe DjangoPiwo odbędzie się w&nbsp;środę 27 lipca.  Czyli <b>jutro</b>.</p>
<p>SetJam HQ, Warszawa, ul. Puławska 39 lokal 60, 6 piętro, zaczynamy o&nbsp;20:00, BYOB.  Programujesz w&nbsp;Pythonie, Ruby, JavaScripcie?  Tworzysz serwisy internetowe?  A&nbsp;może startupujesz?  Przyjdź, spodoba Ci się.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2011/07/26/djangopiwo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Warsztaty IT: nowe kursy</title>
		<link>http://marcinkaszynski.com/blog/index.php/2009/02/11/warsztaty-it-nowe-kursy/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2009/02/11/warsztaty-it-nowe-kursy/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 03:22:03 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://marcinkaszynski.com/blog/?p=272</guid>
		<description><![CDATA["Warsztaty Django dowodzą, że formuła zajęć się sprawdza, więc co można teraz zrobić? Nowe, ciekawe kursy :)" &#8211; właśnie dodałem do stronie Warsztatów IT zapowiedź nowych szkoleń: Ruby on Rails i&#160;programowania w&#160;Pythonie.
A przy okazji &#8211; do najbliższych warsztatów Django już niecałe dwa tygodnie, miejsc systematycznie ubywa.  Więcej szczegółów tutaj, a&#160;jeśli chcesz mieć pewność że [...]]]></description>
			<content:encoded><![CDATA[<p>"Warsztaty Django dowodzą, że formuła zajęć się sprawdza, więc co można teraz zrobić? Nowe, ciekawe kursy :)" &ndash; właśnie dodałem do stronie <a href="http://warsztatyit.pl/">Warsztatów IT</a> <a href="http://warsztatyit.pl/2009/02/nowe-kursy/">zapowiedź</a> nowych szkoleń: Ruby on Rails i&nbsp;programowania w&nbsp;Pythonie.</p>
<p>A przy okazji &ndash; do najbliższych warsztatów Django już niecałe dwa tygodnie, miejsc systematycznie ubywa.  Więcej szczegółów <a href="http://warsztatyit.pl/django/">tutaj</a>, a&nbsp;jeśli chcesz mieć pewność że weźmiesz udział &ndash; <a href="http://warsztatyit.pl/django/rejestracja-200902/">zapisz się już dzisiaj</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2009/02/11/warsztaty-it-nowe-kursy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django a&#160;martwe drzewa</title>
		<link>http://marcinkaszynski.com/blog/index.php/2009/01/16/django-a-martwe-drzewa/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2009/01/16/django-a-martwe-drzewa/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 13:41:53 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Programowanie]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://marcinkaszynski.com/blog/?p=254</guid>
		<description><![CDATA[Po ostatnich warsztatach dostałem pytanie o&#160;książki na temat Django.  Odpowiedź może być interesująca dla większej grupy ludzi, więc wklejam ją także tutaj.
Z książkami, niestety, jest marnie.  Głównie dlatego, że przed wydaniem wersji 1.0 Django mocno się zmieniało.
Po polsku nie pojawiło się chyba jeszcze nic, chociaż od dłuższego czasu Helion ma "w przygotowaniu" Django. [...]]]></description>
			<content:encoded><![CDATA[<p>Po ostatnich <a href="http://warsztatyit.pl/django/">warsztatach</a> dostałem pytanie o&nbsp;książki na temat Django.  Odpowiedź może być interesująca dla większej grupy ludzi, więc wklejam ją także tutaj.</p>
<p>Z książkami, niestety, jest marnie.  Głównie dlatego, że przed wydaniem wersji 1.0 Django mocno się zmieniało.</p>
<p>Po polsku nie pojawiło się chyba jeszcze nic, chociaż od dłuższego czasu Helion ma "w przygotowaniu" <a href="http://helion.pl/ksiazki/cwdjan.htm">Django. Ćwiczenia praktyczne</a>.</p>
<p>Po angielsku jest <a href="http://djangobook.com/">The Django Book</a>.  Zostało wydane przez Apress, ale w&nbsp;wersji opisującej 0.96, różnic niestety jest dużo i&nbsp;to w&nbsp;ważnych miejscach: szablony, interfejs administracyjny, obsługa formularzy.  Wersja dla 1.0 właśnie powstaje (fragment już można przeczytać na stronie) i&nbsp;jest spora szansa, że będzie aktualna dość długo, bo głównym powodem tak dużych zmian w&nbsp;ostatniej chwili była chęć ustabilizowania API.  <em>Jeśli czyta to ktoś z&nbsp;jakiegoś wydawnictwa: tak, to jest dobry moment żeby pomyśleć nad tłumaczeniem.</em></p>
<p>Więc niestety dobrej odpowiedzi nie mam.  ALE Django ma naprawdę dobrze napisaną i&nbsp;aktualną <a href="http://docs.djangoproject.com">dokumentację</a> (bardzo o&nbsp;to dbają &ndash; praktycznie każdy commit zmieniający cokolwiek widocznego dla użytkownika zawiera też odpowiednią zmianę w&nbsp;docach), więc na razie RTFM jest najlepszym rozwiązaniem <img src='http://marcinkaszynski.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2009/01/16/django-a-martwe-drzewa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Warsztaty Django: druga edycja</title>
		<link>http://marcinkaszynski.com/blog/index.php/2008/12/10/warsztaty-django-druga-edycja/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2008/12/10/warsztaty-django-druga-edycja/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 13:50:32 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.elksoft.pl/index.php/2008/12/10/warsztaty-django-druga-edycja/</guid>
		<description><![CDATA[Od kilku dni można zapisywać się na drugą edycję warsztatów "Tworzenie aplikacji w&#160;Django".  Dla tych, którzy jeszcze zastanawiają się, czy warto, umieściłem na stronie opinie nadesłane przez uczestników pierwszej, listopadowej.  Między innymi taką:
Pierwszy raz uczestniczyłem w&#160;warsztatach, podczas których uczestnicy nie mieli ochoty wychodzić na przerwy.
- Marcin Raczyński

Kiedy ostatnio byliście na szkoleniu, którego uczestnicy [...]]]></description>
			<content:encoded><![CDATA[<p>Od kilku dni można zapisywać się na drugą edycję warsztatów "Tworzenie aplikacji w&nbsp;Django".  Dla tych, którzy jeszcze zastanawiają się, czy warto, umieściłem <a href="http://warsztatyit.pl/django/">na stronie</a> opinie nadesłane przez uczestników pierwszej, listopadowej.  Między innymi taką:</p>
<blockquote><p>Pierwszy raz uczestniczyłem w&nbsp;warsztatach, podczas których uczestnicy nie mieli ochoty wychodzić na przerwy.</p>
<p>- Marcin Raczyński
</p></blockquote>
<p>Kiedy ostatnio byliście na szkoleniu, którego uczestnicy żałowali że już się skończyło i&nbsp;od razu pytali o&nbsp;kontynuację? <img src='http://marcinkaszynski.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Najbliższą szansę macie już 13 stycznia.  Warto <a href="http://warsztatyit.pl/django/rejestracja-200901/">zapisać się</a> już dzisiaj, bo z&nbsp;dwunastu miejsc pierwsze trzy są już zarezerwowane.  Dodatkowo, zostało już tylko 10 dni na skorzystanie ze&nbsp;zniżki.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2008/12/10/warsztaty-django-druga-edycja/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I po warsztatach</title>
		<link>http://marcinkaszynski.com/blog/index.php/2008/11/28/i-po-warsztatach/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2008/11/28/i-po-warsztatach/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 16:44:19 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.elksoft.pl/index.php/2008/11/28/i-po-warsztatach/</guid>
		<description><![CDATA[Ogólne podsumowanie umieściłem we&#160;wpisie na stronie Warsztatów IT.  Tutaj dodam, że:

przede wszystkim &#8211; warsztaty zdecydowanie nie byłyby tak udane bez pomocy mojej Ani. Prawdopodobnie nawet bym do nich nie dożył  
przygotowanie wszystkiego to dwa miesiące poszukiwań sali, zbierania materiałów i&#160;radykalnych zmian zdania co do sposobu przeprowadzenia zajęć,
takie warsztaty są świetnym pretekstem do dokładnego [...]]]></description>
			<content:encoded><![CDATA[<p>Ogólne podsumowanie umieściłem we&nbsp;<a href="http://warsztatyit.pl/2008/11/po-pierwszych-warsztatach/">wpisie na stronie Warsztatów IT</a>.  Tutaj dodam, że:</p>
<ul>
<li>przede wszystkim &ndash; warsztaty zdecydowanie nie byłyby tak udane bez pomocy mojej Ani. Prawdopodobnie nawet bym do nich nie dożył <img src='http://marcinkaszynski.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>przygotowanie wszystkiego to dwa miesiące poszukiwań sali, zbierania materiałów i&nbsp;radykalnych zmian zdania co do sposobu przeprowadzenia zajęć,</li>
<li>takie warsztaty są świetnym pretekstem do dokładnego poznania prezentowanego materiału; dowiedziałem się paru nowych rzeczy, które będę stosował w&nbsp;moich aplikacjach,
</li>
<li>byłem zaskoczony, jak wiele firm wynajmujących sale notorycznie olewa klientów &ndash; rekordziści do dzisiaj nie przesłali informacji obiecanych przez telefon.  Kilkakrotnie.  We&nbsp;wrześniu.</li>
<li>zajęcia odbyły się w&nbsp;<a href="http://akademia.linuksa.pl/">Akademii Linuksa</a>; wszystkim chcącym wynająć salę komputerową mogę tę firmę tylko polecić &ndash; ludzie są pomocni i&nbsp;kompetentni, sprzęt sensowny.  Vista, Debian i&nbsp;Fedora, nie ma też problemu z&nbsp;dostępem do konta roota (w części firm warunkiem było korzystanie z&nbsp;vmware lub virtual pc).  Po całym dniu miałem tylko jedną uwagę: przydałoby się coś zrobić z&nbsp;okablowaniem (mieliśmy drobny incydent z&nbsp;nieszczęśliwie umieszczoną listwą zasilającą osiem komputerów).</li>
</ul>
<p>Ogólnie &ndash; niesamowicie pouczające doświadczenie; ciekawie było przekonać się, jak w&nbsp;praktyce wygląda organizacja takiej imprezy.</p>
<p>A już wkrótce kolejna edycja, jeśli znacie kogoś kto mógłby być zainteresowany &ndash; przekażcie, proszę, adres WarsztatyIT.pl <img src='http://marcinkaszynski.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2008/11/28/i-po-warsztatach/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Najlepsze serwisy w&#160;Django</title>
		<link>http://marcinkaszynski.com/blog/index.php/2008/11/06/najlepsze-serwisy-w-django/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2008/11/06/najlepsze-serwisy-w-django/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 14:18:33 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.elksoft.pl/index.php/2008/11/06/najlepsze-serwisy-w-django/</guid>
		<description><![CDATA[W ramach prac nad rozwojem długo oczekiwanego i&#160;niedawno otwartego polskiego serwisu Django odbywa się właśnie głosowanie na najlepsze polskie strony napisane z&#160;użyciem tej ramówki.  Po tygodniu dwa pierwsze miejsca zajmują Oiola i&#160;El Monito  
Lista jest interesująca: o&#160;Wydarzysie.net i&#160;wolnelektury.pl wiedziałem już wcześniej, ale o&#160;istnieniu sobotnianoc.pl, szarada.net, miejsce-na-reklame.pl, ocenfotke.pl czy rankingdeweloperow.pl dowiedziałem się dopiero teraz. [...]]]></description>
			<content:encoded><![CDATA[<p>W ramach prac nad rozwojem długo oczekiwanego i&nbsp;niedawno otwartego <a href="http://django.pl">polskiego serwisu Django</a> odbywa się właśnie <a href="http://djangopl.uservoice.com/pages/polskie_strony_w_django">głosowanie</a> na najlepsze polskie strony napisane z&nbsp;użyciem tej ramówki.  Po tygodniu dwa pierwsze miejsca zajmują <a href="http://oiola.com">Oiola</a> i&nbsp;<a href="http://el-monito.com">El Monito</a> <img src='http://marcinkaszynski.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Lista jest interesująca: o&nbsp;<a href="http://Wydarzysie.net">Wydarzysie.net</a> i&nbsp;<a href="http://www.wolnelektury.pl/">wolnelektury.pl</a> wiedziałem już wcześniej, ale o&nbsp;istnieniu <a href="http://www.sobotnianoc.pl/">sobotnianoc.pl</a>, <a href="http://szarada.net">szarada.net</a>, <a href="http://miejsce-na-reklame.pl/">miejsce-na-reklame.pl</a>, <a href="http://ocenfotke.pl/">ocenfotke.pl</a> czy <a href="http://rankingdeweloperow.pl/">rankingdeweloperow.pl</a> dowiedziałem się dopiero teraz.  Widać, że <a href="http://djangoproject.com">Django</a> jest używane coraz częściej, i&nbsp;to nie tylko przez hobbistów, ale też przez duże serwisy (<a href="http://grono.net">grono.net</a>, <a href="http://se.pl">Super Express</a> &ndash; ten ostatni przeniesiony z&nbsp;J2EE).</p>
<p>Jeśli jeszcze się zastanawiacie: to jest bardzo dobry moment żeby przyjrzeć się tej ramówce.  Jak to zwykle bywa z&nbsp;narzędziami oszczędzającymi olbrzymie ilości czasu, Django szybko zyskuje na popularności.  Teraz jeszcze zapewnia wyraźną przewagę konkurencyjną, ale niedługo stosowanie tego typu narzędzi będzie już koniecznością pozwalającą nadążyć.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2008/11/06/najlepsze-serwisy-w-django/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Warsztaty Django: zapisy otwarte</title>
		<link>http://marcinkaszynski.com/blog/index.php/2008/10/28/warsztaty-django-zapisy-otwarte/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2008/10/28/warsztaty-django-zapisy-otwarte/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 12:44:52 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.elksoft.pl/index.php/2008/10/28/warsztaty-django-zapisy-otwarte/</guid>
		<description><![CDATA[Od wczoraj można już zapisywać się na pierwszą edycję warsztatów "Tworzenie aplikacji w&#160;Django".  Liczba uczestników ograniczona do 12 osób, decyduje kolejność zgłoszeń.  Pierwsze cztery miejsca już zajęte, więc nie warto zwlekać &#8211; jeśli temat Cię interesuje, to zapisz się już teraz.
Szczegóły, jak zwykle, na stronie warsztatów.
]]></description>
			<content:encoded><![CDATA[<p>Od wczoraj można już zapisywać się na pierwszą edycję warsztatów "Tworzenie aplikacji w&nbsp;Django".  Liczba uczestników ograniczona do 12 osób, decyduje kolejność zgłoszeń.  Pierwsze cztery miejsca już zajęte, więc nie warto zwlekać &ndash; jeśli temat Cię interesuje, to <a href="http://warsztatyit.pl/django/rejestracja-200811/">zapisz się już teraz</a>.</p>
<p>Szczegóły, jak zwykle, <a href="http://warsztatyit.pl/django/">na stronie warsztatów</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2008/10/28/warsztaty-django-zapisy-otwarte/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django: powiadomienia</title>
		<link>http://marcinkaszynski.com/blog/index.php/2008/10/25/django-powiadomienia/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2008/10/25/django-powiadomienia/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 15:43:54 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Programowanie]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.elksoft.pl/index.php/2008/10/25/django-powiadomienia/</guid>
		<description><![CDATA[Wczoraj przyszło mi do głowy, że powiadomienia o&#160;błędach to jednocześnie jeden z&#160;bardziej przydatnych i&#160;najmniej widocznych elementów Django.  To dzięki nim zdarza mi się poprawić błędy i&#160;wysłać do użytkownika informację, że jakaś strona działa już poprawnie nawet jeśli nie chciało mu się zgłaszać usterki.
Na przykład:
&#160;
from django.shortcuts import render_to_response
&#160;
def gather_user_data&#40;user&#41;:
    # in reality [...]]]></description>
			<content:encoded><![CDATA[<p>Wczoraj przyszło mi do głowy, że powiadomienia o&nbsp;błędach to jednocześnie jeden z&nbsp;bardziej przydatnych i&nbsp;najmniej widocznych elementów Django.  To dzięki nim zdarza mi się poprawić błędy i&nbsp;wysłać do użytkownika informację, że jakaś strona działa już poprawnie <em>nawet jeśli nie chciało mu się zgłaszać usterki</em>.</p>
<p>Na przykład:</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">shortcuts</span> <span style="color: #ff7700;font-weight:bold;">import</span> render_to_response
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> gather_user_data<span style="color: black;">&#40;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;"># in reality this would be more complex</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#123;</span><span style="color: #483d8b;">'email'</span>: <span style="color: #dc143c;">user</span>.<span style="color: #dc143c;">email</span><span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> profile_view<span style="color: black;">&#40;</span>request<span style="color: black;">&#41;</span>:
    data = <span style="color: black;">&#123;</span><span style="color: #483d8b;">'user'</span>: request.<span style="color: #dc143c;">user</span><span style="color: black;">&#125;</span>
    data.<span style="color: black;">update</span><span style="color: black;">&#40;</span>gather_user_data<span style="color: black;">&#40;</span>request.<span style="color: #dc143c;">user</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> render_to_response<span style="color: black;">&#40;</span><span style="color: #483d8b;">'profile_view.html'</span>,
                              dictionary = data<span style="color: black;">&#41;</span>
&nbsp;</pre>
<p>Widok <code>profile_view</code> zawiera błąd ujawniający się tylko w&nbsp;niektórych sytuacjach.  Jeśli trafi na niego ktoś na serwerze produkcyjnym, zobaczy standardowe <i>500 Internal server error</i>, a&nbsp;Django automatycznie wyśle do mnie taki raport:</p>
<pre class="python">&nbsp;
Traceback <span style="color: black;">&#40;</span>most recent call last<span style="color: black;">&#41;</span>:
&nbsp;
  File <span style="color: #483d8b;">&quot;/home/marcink/checkout/django-trunk/django/core/handlers/base.py&quot;</span>,
  line <span style="color: #ff4500;">86</span>, <span style="color: #ff7700;font-weight:bold;">in</span> get_response
    response = callback<span style="color: black;">&#40;</span>request, *callback_args, **callback_kwargs<span style="color: black;">&#41;</span>
&nbsp;
  File <span style="color: #483d8b;">&quot;/home/marcink/checkout/utils/blogowe/errtest/../errtest/errapp/views.py&quot;</span>,
  line <span style="color: #ff4500;">8</span>, <span style="color: #ff7700;font-weight:bold;">in</span> profile_view
    data.<span style="color: black;">update</span><span style="color: black;">&#40;</span>gather_user_data<span style="color: black;">&#40;</span>request.<span style="color: #dc143c;">user</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
  File <span style="color: #483d8b;">&quot;/home/marcink/checkout/utils/blogowe/errtest/../errtest/errapp/views.py&quot;</span>,
  line <span style="color: #ff4500;">4</span>, <span style="color: #ff7700;font-weight:bold;">in</span> gather_user_data
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#123;</span><span style="color: #483d8b;">'email'</span>: <span style="color: #dc143c;">user</span>.<span style="color: #dc143c;">email</span><span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #008000;">AttributeError</span>: <span style="color: #483d8b;">'AnonymousUser'</span> <span style="color: #008000;">object</span> has no attribute <span style="color: #483d8b;">'email'</span>
&nbsp;
&lt; wsgirequest GET:&lt; QueryDict: <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>&gt;,
POST:&lt; querydict : <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>&gt;,
COOKIES:<span style="color: black;">&#123;</span><span style="color: #483d8b;">'django_log_selectedLevel'</span>: <span style="color: #483d8b;">'0'</span>,
 <span style="color: #483d8b;">'django_log_showLocation'</span>: <span style="color: #483d8b;">'1'</span>,
 <span style="color: #483d8b;">'sessionid'</span>: <span style="color: #483d8b;">'915922a5710cf210e2f5fae47e0f8900'</span><span style="color: black;">&#125;</span>,
META:<span style="color: black;">&#123;</span><span style="color: #483d8b;">'COLORTERM'</span>: <span style="color: #483d8b;">'gnome-terminal'</span>,
 <span style="color: #483d8b;">'CONTENT_LENGTH'</span>: <span style="color: #483d8b;">''</span>,
 <span style="color: #483d8b;">'CONTENT_TYPE'</span>: <span style="color: #483d8b;">'text/plain'</span>,
 <span style="color: #483d8b;">'DBUS_SESSION_BUS_ADDRESS'</span>: <span style="color: #483d8b;">'unix:abstract=/tmp/dbus-BibuFgosrz,guid=c50cabac45d33af5b6936d0049024c87'</span>,
 <span style="color: #483d8b;">'DESKTOP_SESSION'</span>: <span style="color: #483d8b;">'default'</span>,
 <span style="color: #483d8b;">'DISPLAY'</span>: <span style="color: #483d8b;">':0.0'</span>,
 <span style="color: #483d8b;">'DJANGO_DIR'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/django-trunk'</span>,
 <span style="color: #483d8b;">'DJANGO_SETTINGS_MODULE'</span>: <span style="color: #483d8b;">'errtest.settings'</span>,
 <span style="color: #483d8b;">'FCGI_PORT'</span>: <span style="color: #483d8b;">'9014'</span>,
 <span style="color: #483d8b;">'GATEWAY_INTERFACE'</span>: <span style="color: #483d8b;">'CGI/1.1'</span>,
 <span style="color: #483d8b;">'GDMSESSION'</span>: <span style="color: #483d8b;">'default'</span>,
 <span style="color: #483d8b;">'GDM_LANG'</span>: <span style="color: #483d8b;">'en_US.UTF-8'</span>,
 <span style="color: #483d8b;">'GDM_XSERVER_LOCATION'</span>: <span style="color: #483d8b;">'local'</span>,
 <span style="color: #483d8b;">'GNOME_DESKTOP_SESSION_ID'</span>: <span style="color: #483d8b;">'Default'</span>,
 <span style="color: #483d8b;">'GNOME_KEYRING_PID'</span>: <span style="color: #483d8b;">'7904'</span>,
 <span style="color: #483d8b;">'GNOME_KEYRING_SOCKET'</span>: <span style="color: #483d8b;">'/tmp/keyring-glnuCS/socket'</span>,
 <span style="color: #483d8b;">'GTK_RC_FILES'</span>: <span style="color: #483d8b;">'/etc/gtk/gtkrc:/home/marcink/.gtkrc-1.2-gnome2'</span>,
 <span style="color: #483d8b;">'HISTCONTROL'</span>: <span style="color: #483d8b;">'ignoreboth'</span>,
 <span style="color: #483d8b;">'HOME'</span>: <span style="color: #483d8b;">'/home/marcink'</span>,
 <span style="color: #483d8b;">'HTTP_ACCEPT'</span>: <span style="color: #483d8b;">'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'</span>,
 <span style="color: #483d8b;">'HTTP_ACCEPT_CHARSET'</span>: <span style="color: #483d8b;">'ISO-8859-1,utf-8;q=0.7,*;q=0.7'</span>,
 <span style="color: #483d8b;">'HTTP_ACCEPT_ENCODING'</span>: <span style="color: #483d8b;">'gzip,deflate'</span>,
 <span style="color: #483d8b;">'HTTP_ACCEPT_LANGUAGE'</span>: <span style="color: #483d8b;">'en-us,en;q=0.5'</span>,
 <span style="color: #483d8b;">'HTTP_CACHE_CONTROL'</span>: <span style="color: #483d8b;">'max-age=0'</span>,
 <span style="color: #483d8b;">'HTTP_CONNECTION'</span>: <span style="color: #483d8b;">'keep-alive'</span>,
 <span style="color: #483d8b;">'HTTP_COOKIE'</span>: <span style="color: #483d8b;">'sessionid=915922a5710cf210e2f5fae47e0f8900; django_log_showLocation=1; django_log_selectedLevel=0'</span>,
 <span style="color: #483d8b;">'HTTP_HOST'</span>: <span style="color: #483d8b;">'127.0.0.1:5003'</span>,
 <span style="color: #483d8b;">'HTTP_KEEP_ALIVE'</span>: <span style="color: #483d8b;">'300'</span>,
 <span style="color: #483d8b;">'HTTP_USER_AGENT'</span>: <span style="color: #483d8b;">'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080922 Ubuntu/7.10 (gutsy) Firefox/2.0.0.17'</span>,
 <span style="color: #483d8b;">'JAVA_HOME'</span>: <span style="color: #483d8b;">'/home/marcink/devel/jre1.6.0/'</span>,
 <span style="color: #483d8b;">'LANG'</span>: <span style="color: #483d8b;">'en_US.UTF-8'</span>,
 <span style="color: #483d8b;">'LD_LIBRARY_PATH'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/ldev_comicspot/comicspot/../other'</span>,
 <span style="color: #483d8b;">'LESSCLOSE'</span>: <span style="color: #483d8b;">'/usr/bin/lesspipe %s %s'</span>,
 <span style="color: #483d8b;">'LESSOPEN'</span>: <span style="color: #483d8b;">'| /usr/bin/lesspipe %s'</span>,
 <span style="color: #483d8b;">'LOGNAME'</span>: <span style="color: #483d8b;">'marcink'</span>,
 <span style="color: #483d8b;">'LS_COLORS'</span>: <span style="color: #483d8b;">'no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01;35:*.ogg=01;35:*.wav=01;35:'</span>,
 <span style="color: #483d8b;">'OLDPWD'</span>: <span style="color: #483d8b;">'/home/marcink'</span>,
 <span style="color: #483d8b;">'OTHER_DIR'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/ldev_comicspot/comicspot/../other'</span>,
 <span style="color: #483d8b;">'OUTER_DIR'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/ldev_comicspot/comicspot/..'</span>,
 <span style="color: #483d8b;">'PATH'</span>: <span style="color: #483d8b;">'/home/marcink/bin:/home/marcink/local/bin:/home/marcink/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'</span>,
 <span style="color: #483d8b;">'PATH_INFO'</span>: u<span style="color: #483d8b;">'/profile/'</span>,
 <span style="color: #483d8b;">'PROJECT_BASE_DIR'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/ldev_comicspot/comicspot'</span>,
 <span style="color: #483d8b;">'PROJECT_DIR'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/ldev_comicspot/comicspot/comicspot'</span>,
 <span style="color: #483d8b;">'PROJECT_NAME'</span>: <span style="color: #483d8b;">'comicspot'</span>,
 <span style="color: #483d8b;">'PWD'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/utils/blogowe/errtest'</span>,
 <span style="color: #483d8b;">'PYTHONPATH'</span>: <span style="color: #483d8b;">'/home/marcink/checkout/django-trunk'</span>,
 <span style="color: #483d8b;">'QUERY_STRING'</span>: <span style="color: #483d8b;">''</span>,
 <span style="color: #483d8b;">'REMOTE_ADDR'</span>: <span style="color: #483d8b;">'127.0.0.1'</span>,
 <span style="color: #483d8b;">'REMOTE_HOST'</span>: <span style="color: #483d8b;">''</span>,
 <span style="color: #483d8b;">'REQUEST_METHOD'</span>: <span style="color: #483d8b;">'GET'</span>,
 <span style="color: #483d8b;">'RUN_MAIN'</span>: <span style="color: #483d8b;">'true'</span>,
 <span style="color: #483d8b;">'SCRIPT_NAME'</span>: u<span style="color: #483d8b;">''</span>,
 <span style="color: #483d8b;">'SERVER_NAME'</span>: <span style="color: #483d8b;">'raven.loc'</span>,
 <span style="color: #483d8b;">'SERVER_PORT'</span>: <span style="color: #483d8b;">'5003'</span>,
 <span style="color: #483d8b;">'SERVER_PROTOCOL'</span>: <span style="color: #483d8b;">'HTTP/1.1'</span>,
 <span style="color: #483d8b;">'SERVER_SOFTWARE'</span>: <span style="color: #483d8b;">'WSGIServer/0.1 Python/2.5.1'</span>,
 <span style="color: #483d8b;">'SESSION_MANAGER'</span>: <span style="color: #483d8b;">'local/raven:/tmp/.ICE-unix/7907'</span>,
 <span style="color: #483d8b;">'SHELL'</span>: <span style="color: #483d8b;">'/bin/bash'</span>,
 <span style="color: #483d8b;">'SHLVL'</span>: <span style="color: #483d8b;">'1'</span>,
 <span style="color: #483d8b;">'SSH_AGENT_PID'</span>: <span style="color: #483d8b;">'7947'</span>,
 <span style="color: #483d8b;">'SSH_AUTH_SOCK'</span>: <span style="color: #483d8b;">'/tmp/ssh-lBRzQZ7907/agent.7907'</span>,
 <span style="color: #483d8b;">'TERM'</span>: <span style="color: #483d8b;">'xterm'</span>,
 <span style="color: #483d8b;">'TZ'</span>: <span style="color: #483d8b;">'America/Chicago'</span>,
 <span style="color: #483d8b;">'USER'</span>: <span style="color: #483d8b;">'marcink'</span>,
 <span style="color: #483d8b;">'USERNAME'</span>: <span style="color: #483d8b;">'marcink'</span>,
 <span style="color: #483d8b;">'WINDOWID'</span>: <span style="color: #483d8b;">'39852701'</span>,
 <span style="color: #483d8b;">'WINDOWPATH'</span>: <span style="color: #483d8b;">'7'</span>,
 <span style="color: #483d8b;">'XAUTHORITY'</span>: <span style="color: #483d8b;">'/tmp/.gdmELMXJU'</span>,
 <span style="color: #483d8b;">'XDG_DATA_DIRS'</span>: <span style="color: #483d8b;">'/usr/local/share/:/usr/share/:/usr/share/gdm/'</span>,
 <span style="color: #483d8b;">'XDG_SESSION_COOKIE'</span>: <span style="color: #483d8b;">'90de2c2a7bf31a95a76c4900471ce700-1224887428.976645-1927173936'</span>,
 <span style="color: #483d8b;">'_'</span>: <span style="color: #483d8b;">'/usr/bin/python'</span>,
 <span style="color: #483d8b;">'wsgi.errors'</span>: &lt; <span style="color: #008000;">open</span> <span style="color: #008000;">file</span> <span style="color: #483d8b;">'&lt; stderr&gt;'</span>, mode <span style="color: #483d8b;">'w'</span> at 0xb7dc30b0&gt;,
 <span style="color: #483d8b;">'wsgi.file_wrapper'</span>: &lt; <span style="color: #ff7700;font-weight:bold;">class</span> <span style="color: #483d8b;">'django.core.servers.basehttp.FileWrapper'</span>&gt;,
 <span style="color: #483d8b;">'wsgi.input'</span>: &lt; <span style="color: #dc143c;">socket</span> ._fileobject <span style="color: #008000;">object</span> at 0x854a72c&gt;,
 <span style="color: #483d8b;">'wsgi.multiprocess'</span>: <span style="color: #008000;">False</span>,
 <span style="color: #483d8b;">'wsgi.multithread'</span>: <span style="color: #008000;">True</span>,
 <span style="color: #483d8b;">'wsgi.run_once'</span>: <span style="color: #008000;">False</span>,
 <span style="color: #483d8b;">'wsgi.url_scheme'</span>: <span style="color: #483d8b;">'http'</span>,
 <span style="color: #483d8b;">'wsgi.version'</span>: <span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#125;</span>&gt;
&nbsp;</pre>
<p>Po pierwsze &ndash; dowiaduję się o&nbsp;problemie bez żadnej akcji ze&nbsp;strony użytkownika.  Po drugie &ndash; dostaję mnóstwo informacji o&nbsp;błędzie: opis wyjątku (tutaj &ndash; brak atrybutu email w&nbsp;AnonymousUser), dokładnie wskazane miejsce wystąpienia razem z&nbsp;pełnym stosem wywołań funkcji, zawartość parametrów przekazanych przez GET i&nbsp;POST i&nbsp;zawartość zmiennych środowiskowych.  W&nbsp;praktyce zwykle wystarcza to do złożenia testu pozwalającego na powtórzenie i&nbsp;usunięcie błędu.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2008/10/25/django-powiadomienia/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8222;Django - 3 lata pracy i&#160;wszystko, co mamy, to marne 1.0&#8243;</title>
		<link>http://marcinkaszynski.com/blog/index.php/2008/10/13/django-3-lata-pracy-i-wszystko-co-mamy-to-marne-10/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2008/10/13/django-3-lata-pracy-i-wszystko-co-mamy-to-marne-10/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 20:43:57 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Programowanie]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.elksoft.pl/index.php/2008/10/13/django-3-lata-pracy-i-wszystko-co-mamy-to-marne-10/</guid>
		<description><![CDATA[Z okazji wydania Django 1.0 na ostatnim Bootstrapie opowiedziałem o&#160;najważniejszych zmianach, jakie zaszły w&#160;tej ramówce podczas tych trzech lat, które upłynęły od momentu otwarcia kodu.  Slajdy z&#160;mojej prezentacji:

Reklama: już wkrótce odbędzie się pierwsza edycja warsztatów Django &#8211; najszybszy sposób na poznanie możliwości tego środowiska i&#160;rozpoczęcie pracy.
]]></description>
			<content:encoded><![CDATA[<p>Z okazji wydania Django 1.0 na ostatnim <a href="http://bootstrap.pl/2008/10/13/bootstrap-810-podsumowanie/">Bootstrapie</a> opowiedziałem o&nbsp;najważniejszych zmianach, jakie zaszły w&nbsp;tej ramówce podczas tych trzech lat, które upłynęły od momentu otwarcia kodu.  Slajdy z&nbsp;mojej prezentacji:</p>
<div style="width:425px;text-align:left" id="__ss_655203"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=bootstrap200810-1223917787675541-9&stripped_title=django-3-lata-prac-i-wszystko-co-mamy-to-marne-10-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=bootstrap200810-1223917787675541-9&stripped_title=django-3-lata-prac-i-wszystko-co-mamy-to-marne-10-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p><b>Reklama</b>: już wkrótce odbędzie się pierwsza edycja <a href="http://warsztatyit.pl/django/">warsztatów Django</a> &ndash; najszybszy sposób na poznanie możliwości tego środowiska i&nbsp;rozpoczęcie pracy.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2008/10/13/django-3-lata-pracy-i-wszystko-co-mamy-to-marne-10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django na Bootstrapie</title>
		<link>http://marcinkaszynski.com/blog/index.php/2008/10/04/django-na-bootstrapie/</link>
		<comments>http://marcinkaszynski.com/blog/index.php/2008/10/04/django-na-bootstrapie/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 13:56:22 +0000</pubDate>
		<dc:creator>Marcin Kaszyński</dc:creator>
		
		<category><![CDATA[Django]]></category>

		<category><![CDATA[Programowanie]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://blog.elksoft.pl/index.php/2008/10/04/django-na-bootstrapie/</guid>
		<description><![CDATA[Już w&#160;przyszłym tygodniu Bootstrap 8.10.  Andy Budd opowie o&#160;testach użyteczności (“Guerilla Usability Testing with Silverback”), a&#160;ja ponarzekam na Django ("Django - 3 lata prac i&#160;wszystko, co mamy, to marne 1.0").
Serdecznie zapraszamy.
]]></description>
			<content:encoded><![CDATA[<p>Już w&nbsp;przyszłym tygodniu <a href="http://bootstrap.pl/2008/10/03/810-czyli-wracamy-z-bootstrapem/">Bootstrap 8.10</a>.  <a href="http://www.clearleft.com/about/andy/">Andy Budd</a> opowie o&nbsp;testach użyteczności (“Guerilla Usability Testing with Silverback”), a&nbsp;ja ponarzekam na Django ("Django - 3 lata prac i&nbsp;wszystko, co mamy, to marne 1.0").</p>
<p>Serdecznie zapraszamy.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcinkaszynski.com/blog/index.php/2008/10/04/django-na-bootstrapie/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

