<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Django Blog</title>
	
	<link>http://www.djangoblog.pl</link>
	<description>Czyli łatwo, szybko i bezpiecznie</description>
	<lastBuildDate>Mon, 22 Feb 2010 05:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DjangoBook" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="djangobook" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">DjangoBook</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Django 1.2 Beta 1 już jest!</title>
		<link>http://www.djangoblog.pl/django-1-2-beta-juz-jest/</link>
		<comments>http://www.djangoblog.pl/django-1-2-beta-juz-jest/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 06:54:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[1.2]]></category>
		<category><![CDATA[beta]]></category>

		<guid isPermaLink="false">http://www.djangoblog.pl/?p=133</guid>
		<description><![CDATA[Beta Django 1.2 już jest, można je pobrać tutaj. Przypominamy, że ta wersja Django nie jest do produkcji lecz tylko dla testów! O zmianach można przeczytać tutaj.]]></description>
			<content:encoded><![CDATA[<p>Beta Django 1.2 już jest, można je pobrać <a href="http://www.djangoproject.com/download/">tutaj</a>.</p>
<p>Przypominamy, że ta wersja Django nie jest do produkcji lecz tylko dla testów!</p>
<p>O zmianach można przeczytać <a href="http://docs.djangoproject.com/en/dev/releases/1.2-beta-1/">tutaj</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/django-1-2-beta-juz-jest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Django-profile – nie tylko Imię i Nazwisko.</title>
		<link>http://www.djangoblog.pl/django-profile/</link>
		<comments>http://www.djangoblog.pl/django-profile/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 05:53:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Aplikacje]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[profile]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=125</guid>
		<description><![CDATA[Jako, że jestem leniwy, wygodny i w ogóle &#8211; szukałem czegoś do obsługi profilów do jednego z moich projektów. Potrzebowałem możliwości wprowadzenia takich danych: Imię i Nazwisko O mnie/Zainteresowania Lokacja Data Urodzin Płeć Znalazłem coś &#8211; dostałem nawet więcej niż oczekiwałem: Imię, Nazwisko O mnie Strona WWW Płeć Data urodzenia Lokacja (Integracja z Google Maps) [...]]]></description>
			<content:encoded><![CDATA[<p>Jako, że jestem leniwy, wygodny i w ogóle &#8211; szukałem czegoś do obsługi profilów do jednego z moich projektów. Potrzebowałem możliwości wprowadzenia takich danych:</p>
<ul>
<li>Imię i Nazwisko</li>
<li>O mnie/Zainteresowania</li>
<li>Lokacja</li>
<li>Data Urodzin</li>
<li>Płeć</li>
</ul>
<p><a href="http://code.google.com/p/django-profile/">Znalazłem coś</a> &#8211; dostałem nawet więcej niż oczekiwałem:</p>
<ul>
<li>Imię, Nazwisko</li>
<li>O mnie</li>
<li>Strona WWW</li>
<li>Płeć</li>
<li>Data urodzenia</li>
<li>Lokacja (Integracja z Google Maps)</li>
<li>Avatar</li>
<li>Zmień Hasło/E-mail/Usuń profil</li>
</ul>
<p>Jak widać całkiem ciekawa lista &#8211; nie wiem czego mógłbym jeszcze potrzebować.</p>
<p>Opiszę pokrótce jak uruchomić demo. Jest to wręcz &#8222;masakrycznie&#8221; proste.</p>
<p>Pobieramy aplikację &#8211; ja wziąłem wersję 0.6 z <a href="http://code.google.com/p/django-profile/downloads/list">Downloadu</a>. Wypakowujemy archiwum, przechodzimy do katalogu django-profile. Kopiujemy foldery media, userprofile do katalogu demo.  Teraz musimy zsynchronizować bazę danych, uruchamiamy.</p>
<blockquote><p>manage.py syncdb</p></blockquote>
<p>Tworzymy konto administratora, i wtedy już w stu procentach nasze demo działa. Możemy je uruchomić.</p>
<blockquote><p>manage.py runserver</p></blockquote>
<p><strong><span style="color: #ff0000;">Uwaga!</span></strong></p>
<p>Aby aplikacja działała poprawnie potrzebujesz biblioteki <a href="http://code.google.com/p/gdata-python-client/">Gdata</a>.</p>
<p>Instalacja:</p>
<p>Pobieramy <a href="http://gdata-python-client.googlecode.com/files/gdata-2.0.7.tar.gz">najnowszą wersję</a>. Wypakowujemy archiwum, przechodzimy do katalogu (cd w linii poleceń dla Windowsa) i uruchamiamy instalację.</p>
<blockquote><p>setup.py install</p></blockquote>
<p>Potrzebna jest również biblioteka <a href="http://www.pythonware.com/products/pil/">Image (PIL)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/django-profile/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Django-SocialAuth</title>
		<link>http://www.djangoblog.pl/django-socialauth/</link>
		<comments>http://www.djangoblog.pl/django-socialauth/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 15:30:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Aplikacje]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=113</guid>
		<description><![CDATA[Django-SocialAuth to aplikacja umożliwiająca logowanie do serwisu używających danych z Facebook-a, Twitter-a, Yahoo, Gmail-a czy Openid, działa znakomicie z Django auth. Tutaj znajdziemy demo a tutaj kod aplikacji. Używanie Django-SocialAuth jest bardzo proste. Aplikacja jest udostępniana na licencji AAS. Jak tego używać. Aby zacząć używać tej aplikacji potrzebujemy bibliotek: Python-Openid Python-yadis Python-oAuth No i to [...]]]></description>
			<content:encoded><![CDATA[<p>Django-SocialAuth to aplikacja umożliwiająca logowanie do serwisu używających danych z Facebook-a, Twitter-a, Yahoo, Gmail-a czy Openid, działa znakomicie z Django auth. Tutaj znajdziemy <a href="http://socialauth.uswaretech.net/">demo</a> a tutaj <a href="http://github.com/uswaretech/Django-Socialauth/tree/master">kod </a>aplikacji.  Używanie Django-SocialAuth jest bardzo proste. Aplikacja jest udostępniana na licencji <a href="http://www.opensource.org/licenses/attribution.php">AAS</a>.</p>
<h2>Jak tego używać.</h2>
<p>Aby zacząć używać tej aplikacji potrzebujemy bibliotek:</p>
<ol>
<li><a href="http://pypi.python.org/pypi/python-openid/">Python-Openid</a></li>
<li><a href="http://pypi.python.org/pypi/python-yadis/">Python-yadis</a></li>
<li><a href="http://oauth.googlecode.com/svn/code/python/oauth/">Python-oAuth</a></li>
</ol>
<p>No i to właściwie wszystko.  Klucze API można zdobyć stąd:</p>
<ul>
<li><a href="http://www.facebook.com/developers/createapp.php">Facebook</a></li>
<li><a href="https://developer.yahoo.com/dashboard/createKey.html">Yahoo!</a></li>
<li><a href="https://www.google.com/accounts/ManageDomains">Google</a></li>
<li><a href="http://twitter.com/oauth_clients">Twitter</a></li>
</ul>
<p>Klucze wpisz w pliku &#8222;<a href="http://github.com/uswaretech/Django-Socialauth/blob/master/localsettings.example.py">localsettings.py</a>&#8221; (uprzednio usuwając &#8222;.example&#8221; z nazwy pliku &#8222;localsettings.example.py&#8221;). Powinno wyglądać to mniej więcej tak:</p>
<blockquote><p>TWITTER_CONSUMER_KEY = &#8216;LCpeKIvSJ9Zxowd3Dad29yQ&#8217;<br />
TWITTER_CONSUMER_SECRET = &#8216;J0yLhHve94QgwJ7oyaRT38fFhezKz40RAh8yxdFAAw4&#8242;</p>
<p>FACEBOOK_API_KEY = &#8216;achdka5f46725f9f7201c79c67ca31a7&#8242;<br />
FACEBOOK_API_SECRET = &#8217;00945075d85e95fa310cc3ch82n96e4&#8242;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/django-socialauth/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pobieranie statusów z Twittera</title>
		<link>http://www.djangoblog.pl/pobieranie-statusow-z-twittera/</link>
		<comments>http://www.djangoblog.pl/pobieranie-statusow-z-twittera/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 17:23:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=100</guid>
		<description><![CDATA[Do wyświetlania najnowszych statusów z Twittera użyjemy API, korzystając z biblioteki python-twitter. Instrukcję oraz pliki znajdziemy na <a href="http://code.google.com/p/python-twitter/">google code</a>.

Aby wszystko działało musimy sprecyzować gdzie Django ma szukać naszego pliku koordynującego cały proces.]]></description>
			<content:encoded><![CDATA[<p>Do wyświetlania najnowszych statusów z Twittera użyjemy API, korzystając z biblioteki python-twitter. Instrukcję oraz pliki znajdziemy na <a href="http://code.google.com/p/python-twitter/">google code</a>.</p>
<p>Aby wszystko działało musimy sprecyzować gdzie Django ma szukać naszego pliku koordynującego cały proces. Do pliku settings.py dodajemy:</p>
<blockquote>
<pre>from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS

TEMPLATE_CONTEXT_PROCESSORS = TEMPLATE_CONTEXT_PROCESSORS + (
    "mysite.blog.context_processors.latest_tweet",
)

TWITTER_USER = "djangoblog"
TWITTER_TIMEOUT = 3600</pre>
</blockquote>
<p>TWITTER_USER to nazwa użytkownika którego statusy będą pobierane, TWITTER_TIMEOUT to odstęp czasowy.</p>
<p>Teraz powinniśmy dodać definicję latest_tweet w context_processors.py, powinno wyglądać to mniej więcej tak:</p>
<blockquote>
<pre>from datetime import datetime
from django.conf import settings
from django.core.cache import cache
import twitter

def latest_tweet( request ):
    tweet = cache.get( 'tweet' )

    if tweet:
        return {"tweet": tweet}

    tweet = twitter.Api().GetUserTimeline( settings.TWITTER_USER )[0]
    tweet.date = datetime.strptime( tweet.created_at, "%a %b %d %H:%M:%S +0000 %Y" )
    cache.set( 'tweet', tweet, settings.TWITTER_TIMEOUT )

    return {"tweet": tweet}</pre>
</blockquote>
<p>Powyższy kod sprawdza cache, jeśli go nie ma pobiera statusy przez API. Następnie datę ostatniego Tweeta zmienia na bardziej ludzki format, zapisuje cache.</p>
<p>Teraz możemy wyświetlić tweeta:</p>
<blockquote>
<pre>&lt;div id="tweet"&gt;
    {% if tweet %}
        &lt;p&gt;Ostatni tweet z dnia {{ tweet.date|naturalday }}: {{ tweet.text }}&lt;p&gt;
    {% endif %}
&lt;/div&gt;</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/pobieranie-statusow-z-twittera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting dla Django</title>
		<link>http://www.djangoblog.pl/hosting-dla-django/</link>
		<comments>http://www.djangoblog.pl/hosting-dla-django/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 17:52:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=89</guid>
		<description><![CDATA[Django (Python) jest używane rzadziej od PHP, najczęstszym tego powodem jest problem z hostingiem. Przynajmniej tak niektórzy myślą, ja problemu nie zauważam. Nasz projekt możemy hostować gdziekolwiek gdzie mamy Pythona i któreś z wymienionych modułów: Apache + mod_python SCGI + Cherokee Apache + mod_fcgid Lighttpd nginx/FastCGI Przydatny jest również dostęp przez Shell. Istnieje przydatna lista [...]]]></description>
			<content:encoded><![CDATA[<p>Django (Python) jest używane rzadziej od PHP, najczęstszym tego powodem jest problem z hostingiem. Przynajmniej tak niektórzy myślą, ja problemu nie zauważam. Nasz projekt możemy hostować gdziekolwiek gdzie mamy Pythona i któreś z wymienionych modułów:</p>
<ul>
<li> Apache + mod_python</li>
<li>SCGI + Cherokee</li>
<li>Apache + mod_fcgid</li>
<li>Lighttpd nginx/FastCGI</li>
</ul>
<p>Przydatny jest również dostęp przez Shell.</p>
<p>Istnieje przydatna lista amerykańskich Django-Friendly serwerów którą znajdziemy <a href="http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts">tutaj</a>. Mała również <a rel="nofollow" href="http://djangohosting.org/">tutaj</a>.  Istnieje też możliwość skorzystania z dobrodziejstw <a rel="nofollow" href="http://code.google.com/intl/pl/appengine/">Google App-Engine</a>, jest nawet mały kurs <a rel="nofollow" href="http://code.google.com/intl/pl/appengine/articles/django.html">jak zacząć</a> (przed postawieniem tam swojej strony polecam trochę <a href="http://code.google.com/intl/pl/appengine/terms.html">poczytać</a>).</p>
<p>Jesteśmy w trakcie tworzenia listy polskich dostawców hostingowych umożliwiających hosting aplikacji napisanych w Django, jeżeli znasz jakiś <a href="http://djangoblog.pl/kontakt/">napisz do nas</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/hosting-dla-django/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Pisz notki na Django Blog</title>
		<link>http://www.djangoblog.pl/pisz-notki-na-django-blog/</link>
		<comments>http://www.djangoblog.pl/pisz-notki-na-django-blog/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 16:33:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[O stronie]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[pomoc]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=80</guid>
		<description><![CDATA[Ostatnio dostałem kilka maili z pytaniami czy można napisać notkę na tego bloga. Otóż można, wystarczy zarejestrować się pod tym linkiem i później zalogować tutaj (linki można znaleźć w menu bocznym). I wtedy można zwyczajnie napisać posta, jeśli ktoś ma/miał bloga na WordPressie, doskonale sobie poradzi. Wpisy są później moderowane przeze mnie, poprawiane literówki itp. [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio dostałem kilka maili z pytaniami czy można napisać notkę na tego bloga. Otóż można, wystarczy zarejestrować się pod <a href="http://djangoblog.pl/wp-login.php?action=register">tym</a> linkiem i później zalogować <a href="http://djangoblog.pl/wp-login.php">tutaj</a> (linki można znaleźć w menu bocznym). I wtedy można zwyczajnie napisać posta, jeśli ktoś ma/miał bloga na WordPressie, doskonale sobie poradzi. Wpisy są później moderowane przeze mnie, poprawiane literówki itp. (z oczywistych powodów).</p>
<p>Jeżeli masz jakiś pomysł na notkę (np. czegoś potrzebujesz a nie umiesz tego zrobić) napisz do nas a my odpowiemy w formie posta na blogu (o ile tego będziesz chciał).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/pisz-notki-na-django-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zmiany. Serwer, domena, silnik – wszystko.</title>
		<link>http://www.djangoblog.pl/zmiany-serwer-domena-silnik-wszystko/</link>
		<comments>http://www.djangoblog.pl/zmiany-serwer-domena-silnik-wszystko/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 19:40:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[O stronie]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=64</guid>
		<description><![CDATA[Po dwóch dniach męki z perfidną skórką, home.pl i moim dostawcą internetu który nie chciał zflushować DNS&#8217;ów jesteśmy. Jesteśmy na WordPressie więc teraz możemy dosłownie wszystko! Co prawda to nie jest Django ale po co pisać coś co już jest i do tego jest bardzo dobre. Już niedługo ruszy Forum &#8211; pracujemy jeszcze nad skórką [...]]]></description>
			<content:encoded><![CDATA[<p>Po dwóch dniach męki z perfidną skórką, home.pl i moim dostawcą internetu który nie chciał zflushować DNS&#8217;ów jesteśmy.</p>
<p>Jesteśmy na WordPressie więc teraz możemy dosłownie wszystko! Co prawda to nie jest Django ale po co pisać coś co już jest i do tego jest bardzo dobre.</p>
<p>Już niedługo ruszy Forum &#8211; pracujemy jeszcze nad skórką i <a href="http://djangoblog.pl/szukamy-moderatorow-i-administratorow-na-forum/">szukamy moderatorów oraz administratora</a> forum. Forum będzie stało na PHPBB3 &#8211; spróbujemy.</p>
<p>Mamy również <a href="http://djangoblog.blip.pl/">konto na Blipie</a> oraz <a href="http://www.facebook.com/pages/Django-Blog/274967661741">Fun Club na FaceBook-u</a> zapraszamy do obserwowania nas i do łączania.  Przypominam o <a href="http://feeds.feedburner.com/DjangoBook">kanale RSS </a>oraz możliwości Subskrypcji przez E-Mail.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/zmiany-serwer-domena-silnik-wszystko/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Przejdziemy na WordPressa</title>
		<link>http://www.djangoblog.pl/przejdziemy-na-wordpressa/</link>
		<comments>http://www.djangoblog.pl/przejdziemy-na-wordpressa/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:15:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[O stronie]]></category>
		<category><![CDATA[blogger]]></category>
		<category><![CDATA[djangoblog]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[zmiany]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=14</guid>
		<description><![CDATA[Witam, jako, że na Bloggerze mamy bardzo małe możliwości &#8211; przechodzimy na WordPressa. Serwer oraz domena już została kupiona, jutro podepniemy domenę pod DNS-y BlogSpota żeby wujek Gugle zaindeksowały nas ładnie i nie posądziły o duplicate content i myślę, że za dwa dni będziemy już blogiem z prawdziwego zdarzenia. Mam też kilka pomysłów w zanadrzu [...]]]></description>
			<content:encoded><![CDATA[<p>Witam, jako, że na Bloggerze mamy bardzo małe możliwości &#8211; przechodzimy na WordPressa. Serwer oraz domena już została kupiona, jutro podepniemy domenę pod DNS-y BlogSpota żeby wujek Gugle zaindeksowały nas ładnie i nie posądziły o duplicate content i myślę, że za dwa dni będziemy już blogiem z prawdziwego zdarzenia.</p>
<p>Mam też kilka pomysłów w zanadrzu więc już niedługo wielkie zmiany. Zapraszam do komentowania i subskrybowania naszego kanału RSS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/przejdziemy-na-wordpressa/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Python vs. PHP</title>
		<link>http://www.djangoblog.pl/python-vs-php/</link>
		<comments>http://www.djangoblog.pl/python-vs-php/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:13:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=12</guid>
		<description><![CDATA[W dzisiejszej będę bronił Django. Może bronił to złe określenie ale wyjaśnimy sobie kilka rzeczy które zostały opisane na blogu Mateusza Żeromskiego w notce Python okiem PHP. Nie mam zamiaru nikogo pognębiać, każdy ma prawo i powinien mieć swoje zdanie. Czyli opiszemy czego Django NIE ma. Żaden flejm. Po kolei. Mam świadomość, że mogę zostać [...]]]></description>
			<content:encoded><![CDATA[<p>W dzisiejszej będę bronił Django. Może bronił to złe określenie ale wyjaśnimy sobie kilka rzeczy które zostały opisane na blogu Mateusza Żeromskiego w notce <a href="http://blog.zeromski.com.pl/2009/06/python-okiem-programisty-php-kompletne-porownanie/">Python okiem PHP</a>. Nie mam zamiaru nikogo pognębiać, każdy ma prawo i powinien mieć swoje zdanie. Czyli opiszemy czego Django NIE ma. Żaden flejm.</p>
<p>Po kolei.</p>
<blockquote><p>Mam świadomość, że mogę zostać za to zlinczowany</p></blockquote>
<p>Nie przeze mnie.</p>
<blockquote><p>Każdy kto pierwszy raz zainstaluje django, uruchamia panel admina i zaczyna się rewelucja – jakie to łatwe i przyjemne. Django na podstawie modeli baz danych automatycznie generuje dobre panele administracyjne. Lecz dla mnie to za mało. Tworząc aplikacje Web2.0 panel administracyjny musi być ładny przejrzysty i podporządkowany użytkownikom. Czyli ikony, pomoce itp. W django stworzenie takiego panelu jest możliwe – tylko trzeba się dość namęczyć, i trzeba mieć dużo doświadczenia w tej technologii – oznacza to permanentne klepanie takich cudaków.</p></blockquote>
<p>Prawda, większość tak myśli. Dostajemy od razu bezpieczny panel administracyjny, logowanie, dokumentację. Może nie ma takiego szczegółu jak ikonki &#8211; mi osobiście one by przeszkadzały. Wyobraź sobie ile musiałbyś spędzić pisząc panel administracyjny w PHP, logowanie, zarządzanie każdym działem po kolei, użytkownikami, forum, artykułami, newsami, galerią. A to wszystko tylko dla ikonek ? Nonsens.</p>
<blockquote><p>Aktualne aplikacje muszą być nowoczesne i ładne, w pełni ajaxowe – panele django są na poziomie który był jakieś dwa lata temu. W permanentnie zmieniającym się środowisku<span> </span>- to już przeszłość. Także panel admina nie przekonał mnie.</p></blockquote>
<p>Możesz sobie upiększa panel admina jak tylko zechcesz, przykładem jest plugin <a href="http://code.google.com/p/django-grappelli/">Django-Grappelli</a><br />
(którego zresztą mam zamiar opisać w następnej notce). Ale szczerze ja nie potrzebuje ładnego panelu admina.</p>
<blockquote><p>Znając wady i zalety – sqlAlchemy nie wywarł na mnie super wrażenia – to samo osiągam w doctrine/propel. W modelach nie ma zresztą wielkiej trudności – zależności i tyle.</p></blockquote>
<p>W takim razie jesteśmy na 0. Skoro jest takie same jak doctrine/propel to dlaczego jest gorsze? Może czegoś nie zrozumiałem.</p>
<blockquote><p>Lecz abym nie wyszedł kogoś kto się nie zna <img src='http://www.djangoblog.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  sqlAlchemy pozwala na budowanie relacji pomiędzy tabelami w innych bazach danych – a nie tylko tabelami w tej samej bazie – lecz z takim praktycznym rozwiązaniem się nie spotkałem. No ale jest i to jest ciekawe w tym – na poziomie akademickim oczywiście <img src='http://www.djangoblog.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></blockquote>
<p>Tutaj mały przykład:<br />
Pobieram feedy z RSS&#8217;ów, trzymam je w bazie w postaci</p>
<table>
<tbody>
<tr>
<td>ID</td>
<td>feed_url</td>
<td>last_check</td>
<td>cache</td>
</tr>
<tr>
<td>id wpisu</td>
<td>url feedu atom</td>
<td>ostatnio pobierano</td>
<td>zserializowane cache</td>
</tr>
</tbody>
</table>
<p>Oraz wpisy:</p>
<table>
<tbody>
<tr>
<td>id</td>
<td>feed_id</td>
<td>url</td>
<td>title</td>
<td>category</td>
<td>tags</td>
<td>content</td>
</tr>
<tr>
<td>id wpisu</td>
<td>id feedu (czytaj dalej&#8230;)</td>
<td>url wpisu</td>
<td>tytuł wpisu</td>
<td>kategoria wpisu</td>
<td>tagi</td>
<td>content</td>
</tr>
</tbody>
</table>
<p>i teraz nie muszę używać dwóch modeli żeby dowiedzieć się z jakiego są feeda dzięki czemu mam mniej kodu, a skrypt jest wydajniejszy.</p>
<blockquote><p>Tutaj niekwestionowanym liderem jest python, z tego powodu że każdy kod kompresuje to bytecodu i dopiero wykonuje. W php takie coś nie istnieje. Powiedzmy sobie szczerze – tyle aplikacji jest php’owych i nie sądzę aby zwykły użytkownik widział różnicę w prędkości podczas korzystania ze strony/aplikacji napisanej w php czy python.<span> </span>Także ta szybkość pythona nie jest super praktyczna.</p></blockquote>
<p>Nie zauważa&#8230;dlaczego ? A no bo w większości przypadków nie wie czy strona jest napisana w Pythonie czy w PHP, poza tym przeciętny użytkownik na to nie zwraca uwagi. Głównie chodzi tu o obciążenie serwera, Python generuje mniejsze.</p>
<blockquote><p>Dokumentacja mnie nie przekonała bo końcowy użytkownik i tak nie zobaczy różnicy.</p></blockquote>
<p>Nie zobaczy ? A co gdy wykorzystasz funkcje źle ? Gdy wyskoczy Ci masa błędów, ciężko będzie tego nie zauważyć.</p>
<blockquote><p>Nie uważam aby w pythonie można było super więcej zarobić niż w php – wszystko zależy od tego co się tworzy i gdzie <img src='http://www.djangoblog.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Jeżeli ktoś jest dobry w programowaniu w języku X i ma otwarty umysł – bez problemu poradzi sobie z językiem Y. Ja od zawsze jestem zadowolony ze swoich zarobków – i na ich wysokość – nigdy nie wpłynęła umiejętność programowania w python – to nie argument. Ważniejsze jest „co” a nie „jak”.</p></blockquote>
<p>Chodzi tutaj raczej o terminy. Aplikacja która będzie pisana w PHP 3 tygodnie w Django napisana zostanie w tydzień ? &#8222;Django &#8211; Framework webowy dla perfekcjonistów z terminami&#8221;.</p>
<blockquote><p>No tutaj niestety, ale w php prędzej znajdziemy pracę <img src='http://www.djangoblog.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Pomimo zajebistości pythona, rynek php się nie zmniejsza, z prostych powodów – programistą php można być po pół roku, a bycie programistą pythona na tym samym poziomie – zajmie troszkę więcej – także i kasy trzeba więcej zapłacić. Php jest popularniejszy i nie ma co się tutaj kłócić</p></blockquote>
<p>Tutaj nie będę się kłócił, jak na razie łatwiej jest znaleźć programistę PHP lub zleceniodawce który woli PHP. Nie jest to dziwne, a powód &#8211; hosting, nic innego wg. mnie.</p>
<blockquote><p>Po poznaniu języka python – emocje opadły. Czy to ruby (tego tez poznałem <img src='http://www.djangoblog.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p></blockquote>
<p>Wybacz ale tutaj wychodzi to, że chyba jednak mało poświęcasz na nowe języki. Po programowaniu w Pythonie 1 tydzień nie poznasz jego wszystkich zalet.</p>
<blockquote><p>python to tylko inny język programowania, w którym tak samo jak w php należy napisać pętle, funkcje, modele, widoki itp.</p></blockquote>
<p>No niestety, jakby robił to za nas język &#8211; programiści nie byliby potrzebni.</p>
<p>To chyba wszystko co bym chciał i mógł powiedzieć nt. Pythona i Django.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/python-vs-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Django Snippets</title>
		<link>http://www.djangoblog.pl/django-snippets/</link>
		<comments>http://www.djangoblog.pl/django-snippets/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:12:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Inne strony]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://djangoblog.pl/?p=11</guid>
		<description><![CDATA[Django Snippets czyli kawałki użytecznego kodu które można wykorzystać w swoim projekcie, jakieś funkcje, (tutaj) wbrew pozorom nie koniecznie w Pythonie. Możemy tu znaleźć snippety w JavaScripcie, HTML-u (Templaty dla Django itp.), SQL-u oraz Pythonie. Teraz powinno powstać nowe pojęcie w stylu DRO (Don&#8217;t Repeat Others). Szczerze mówiąc strona jest trochę mało przejrzysta (mam na [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.djangosnippets.org/">Django Snippets</a> czyli kawałki użytecznego kodu które można wykorzystać w swoim projekcie, jakieś funkcje, (tutaj) wbrew pozorom nie koniecznie w Pythonie. Możemy tu znaleźć snippety w JavaScripcie, HTML-u (Templaty dla Django itp.), SQL-u oraz Pythonie. Teraz powinno powstać nowe pojęcie w stylu DRO (Don&#8217;t Repeat Others). Szczerze mówiąc strona jest trochę mało przejrzysta (mam na myśli listy jak <a href="http://www.djangosnippets.org/languages/javascript/">ta</a> ale już np. <a href="http://www.djangosnippets.org/snippets/1333/">tutaj</a> jest ok). Nie będę wypisywał tutaj fajnych snippetów bo dla każdego projektu wykorzystamy inne, oczywiste.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djangoblog.pl/django-snippets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

