<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Slavus programing blog]]></title>
  <link href="http://slavus.net/atom.xml" rel="self"/>
  <link href="http://slavus.net/"/>
  <updated>2012-01-12T11:11:09+01:00</updated>
  <id>http://slavus.net/</id>
  <author>
    <name><![CDATA[slavus]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[getting super meat boy to work on OpenSUSE 12.1 and intel graphics card]]></title>
    <link href="http://slavus.net/blog/2011/12/26/getting-super-meat-boy-to-work-on-opensuse-12-dot-1-and-intel-graphics-card/"/>
    <updated>2011-12-26T10:01:00+01:00</updated>
    <id>http://slavus.net/blog/2011/12/26/getting-super-meat-boy-to-work-on-opensuse-12-dot-1-and-intel-graphics-card</id>
    <content type="html"><![CDATA[<p>Hi, I bought Humble bundle 4, and I wanted to play Super Meat Boy, i started it up and I have got:</p>

<pre><code>user@mypc: /usr/local/games/supermeatboy
➜  ./SuperMeatBoy 
Super Meat Boy: Installed in '.'.
Super Meat Boy: Using x86 version.

Fatal Error: MojoShader compile failed!
</code></pre>

<p>So how to fix this?</p>

<!--more-->


<p>First thing I started googling i I stumbled upon couple of links:
<a href="https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/905456">Bug #905456 in mesa (Ubuntu): “needs to be built with &#8211;disable-asm for super meat boy to work”</a> and explanation (on German but i translated it) <a href="http://www.glasen-hardt.de/?p=1494#comments">SuperMeatboy und Intel-Grafik</a>. It turns out Super Meat Boy Linux port has some kind of problems with integrated Intel graphics cards (which I have in my laptop). So after reading links above for some reason Mesa must be built with h <strong><em>“–disable-asm”</em></strong> switch. So I wanted to do the same on OpenSUSE 12.1, and here is guide how to do this:</p>

<p>Download Mesa srpm from <a href="http://download.opensuse.org/source/distribution/12.1/repo/oss/suse/src/Mesa-7.11-11.1.2.src.rpm">Mesa srpm</a></p>

<pre><code>$ unrpm Mesa-7.11-11.1.2.src.rpm
$ sudo zypper in build
</code></pre>

<p>Open up Mesa.spec and change following line in %install part of spec</p>

<pre><code>%configure --disable-glw \
</code></pre>

<p>to :</p>

<pre><code>%configure --disable-glw \
           --disable-asm \
</code></pre>

<p>after that you can just do:</p>

<pre><code>user@mypc: /home/user/mesa/rpm
➜  sudo build
</code></pre>

<p>If everything goes without problems you will probably get rpm that you can update over existing Mesa. By default built rpm should be at:</p>

<pre><code>/var/tmp/build-root/home/abuild/rpmbuild/RPMS/i586
</code></pre>

<p>I had some problems during building of rpm, I have got following error message:</p>

<pre><code>expanding package dependencies...
Warning: distribution not specified, assuming '12.1-i386' (see /usr/lib/build/configs).
expansion error
  nothing provides libgcc45
  nothing provides gcc45
  nothing provides cpp45
  nothing provides libstdc++45
  nothing provides libgomp45
</code></pre>

<p>It turns out you have to change /usr/lib/build/configs/sl12.1.conf following line:</p>

<pre><code>%define gcc_version 45
</code></pre>

<p>to:</p>

<pre><code>%define gcc_version 45
</code></pre>

<p>And line :</p>

<pre><code>Preinstall: filesystem fillup glibc grep insserv libacl libattr
</code></pre>

<p>to</p>

<pre><code>Preinstall: filesystem fillup glibc grep insserv libacl1 libattr1
</code></pre>

<p>And now you can play Super Meat Boy.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Kako kupovati andorid aplikacije iz Android Marketa u Hrvatskoj]]></title>
    <link href="http://slavus.net/blog/2010/09/23/kako-kupovati-andorid-aplikacije-iz-android-marketa-u-hrvatskoj/"/>
    <updated>2010-09-23T21:58:00+02:00</updated>
    <id>http://slavus.net/blog/2010/09/23/kako-kupovati-andorid-aplikacije-iz-android-marketa-u-hrvatskoj</id>
    <content type="html"><![CDATA[<p>Nedavno sam kupio svoju prvu Android aplikaciju i to iz Hrvatske s
Android telefonom kupljenim u Hrvatskoj preko Android Marketa. Ovo je
bilo izuzetno jednostavno zato ću ukratko opisati kako omogućiti kupnju
aplikacija s Android Marketa.</p>

<!--more-->


<p></p>

<p>Što je sve potrebno:</p>

<ul>
<li>Rootani Android telefon (uputstvo kako root vaš telefon potražite u bespućima interneta uputstva ima na tone)</li>
<li><a href="[http://amip.tools-for.net/wiki/android/marketaccess][]">Market Access</a> tj market-enabler</li>
<li>kreditna kartica za plaćanje (plaćanje se vrši preko Google  Checkout računa koji će automatski biti kreiran)</li>
</ul>


<p>Rootanje Andorid telefona neću objašnjavati jer se rootanje razlikuje za
svaki uređaj. O prednostima i manama rootnja također možete pročitati na
Internetu, ali pošto ovo čitate pretpostaviti ću da ste telefon rootali.</p>

<p>Nakon toga potrebna vam je aplikacija
<a href="http://code.google.com/p/market-enabler/">market-enabler</a>, no ja
sam koristio rewrite verziju
<a href="http://amip.tools-for.net/wiki/android/marketaccess">MarketAccess</a>.
Skinite i instalirajte
<a href="http://amip.tools-for.net/ds/dl.php?f=/files/MarketAccess.apk">marketaccess.apk</a>
(morate imati omogućenu instalaciju aplikacija iz nepoznatih izvora
<em>Settings->Applications->Unknown sources</em> će vam to omogućiti).</p>

<p>Nakon što ste instalirali MarketAccess, pokrenite ga i dobit će te
slijedeći ekran:</p>

<p><img src="http://slavus.net/images/media/kako-kupovati-aplikacije-iz-android-market-u-hr/actual_en.png" width="240" title="Odabir operator" ></p>

<p>Prvo napravite backup odabirom na <em>Backup value</em> koji se backupirati vaš
originalni SIM value (da bi ste ga kasnije mogli restorati ako to
poželite), a nakon toga odaberite tab <em>Providers</em> i iz njega odaberite
nekog mobilnoga operatera iz zemlje u kojoj Android Market omogućava
kupnju aplikacija. (Moja preporuka je neki iz SAD ili Njemačke, ali ovo
nije bitno).</p>

<p><img src="http://slavus.net/images/media/kako-kupovati-aplikacije-iz-android-market-u-hr/list_en.png" width="240" title="Odabir operator" ></p>

<p>Nakon što ste odabrali nekog od operatora možete otići u Android Market
i kupiti aplikaciju koju ste oduvijek željeli, a niste mogli kupiti već
ste ju morali piratizirati.</p>

<p>Android Market određuje da li i koje aplikacije možete kupovati na
temelju vašeg operatera, Market-enabler/MarketAccess radi na način da
“glumi” neku SIM karticu prema Android Marketu, tako da Android Market
misli da imate SIM karticu nekog operatera.</p>

<p>Ekvivalent tome je da ste nabavili SIM karticu iz Njemačke npr. i
stavili u svoj telefon, opet biste mogli normalno kupovati aplikacije iz
Marketa, tada ne biste morali niti rootati telefon.</p>

<p>Postupak dalje je trivijalan, odaberite aplikaciju koju želite kupiti,
Android Market će vas prvi puta tražiti kreditnu karticu, unesite broj
kartice i gotovo. Kupili ste aplikaciju.</p>

<p>Dobra stvar u cijeloj priči da kasnije ako telefon odrootate/updateate
ili što god već, i nećete imati Market-enabler/MarketAccess instaliran,
vaše kupljene aplikacije biti će dostupne za vas da ih skinete s Android
Marketa. Ovo je isprobano i radi.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Fetching html page over http in Java using google-guava]]></title>
    <link href="http://slavus.net/blog/2010/09/06/fetching-html-page-over-http-java-using-guava/"/>
    <updated>2010-09-06T14:05:00+02:00</updated>
    <id>http://slavus.net/blog/2010/09/06/fetching-html-page-over-http-java-using-guava</id>
    <content type="html"><![CDATA[<p>I am using google-guava for some time know, I used it when there was only google-collections, and it is absolutely fabulous.
Here is simple trick how to fetch whole html page over http in Java using google guava in one line:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='java'><span class='line'><span class="n">Resources</span><span class="o">.</span><span class="na">toString</span><span class="o">(</span><span class="k">new</span> <span class="n">URL</span><span class="o">(</span><span class="s">&quot;[http://slavus.net&quot;</span><span class="o">)][],</span><span class="n">Charsets</span><span class="o">.</span><span class="na">UTF_8</span><span class="o">);</span>
</span></code></pre></td></tr></table></div></figure>


<p>Go ahead and try out
<a href="http://code.google.com/p/guava-libraries/">google-guava</a>. Guava is great java lib.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Java 1.6.0_21 and Eclipse]]></title>
    <link href="http://slavus.net/blog/2010/07/19/java-160_21-and-eclipse/"/>
    <updated>2010-07-19T15:07:00+02:00</updated>
    <id>http://slavus.net/blog/2010/07/19/java-160_21-and-eclipse</id>
    <content type="html"><![CDATA[<p>If you update to newest version of Java 1.6.0 update 21 and try to run Eclipse you surely seen on of this:
 - Unhandled event loop exception
 - PermGen space</p>

<p>So Eclipse started to become pretty unusable WTF. However for now there is simple workaround just edit your <em>eclipse.ini</em> like this:</p>

<pre><code>-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-XX:MaxPermSize=256m
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m 
</code></pre>

<p>You have to add -XX:MaxPermSize=256m.</p>

<p>The most interesting thing about this is reason why this problem
reappeared, an old problem actually.</p>

<p>The reason is because somebody at Eclipse team hard-coded to check jvm
signature by checking the file jvm.dll if the company name is “Sun
Microsystems”. And as we all know because of the Sun-Oracle merge, and
end of Sun existence, the company name changed to “Oracle”, and also the
jvm.dll signature changed. more about this read on <a href="http://aniefer.blogspot.com/2010/07/permgen-problems-and-running-eclipse-on.html">link
</a></p>

<p>What have we learned from this, <em>never ever</em> hard-code a string that can
change in the future, even when it is not likely to change, maybe there
is some kind of “Oracle” that will come and “buy your string”.</p>

<p>Ref:</p>

<pre><code>http://aniefer.blogspot.com/2010/07/permgen-problems-and-running-eclipse-on.html
</code></pre>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Django FormMediaContext]]></title>
    <link href="http://slavus.net/blog/2009/05/03/django-formmediacontext/"/>
    <updated>2009-05-03T21:46:00+02:00</updated>
    <id>http://slavus.net/blog/2009/05/03/django-formmediacontext</id>
    <content type="html"><![CDATA[<p>Django has great abstraction for forms. Feature that I find very useful in forms, is media meta class.</p>

<p>For example:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="k">class</span> <span class="nc">SimpleForm</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">Form</span><span class="p">):</span>
</span><span class='line'>    <span class="k">class</span> <span class="nc">Media</span><span class="p">:</span>
</span><span class='line'>        <span class="n">css</span> <span class="o">=</span> <span class="p">{</span>
</span><span class='line'>            <span class="s">&#39;all&#39;</span><span class="p">:</span> <span class="p">(</span><span class="s">&#39;pretty.css&#39;</span><span class="p">,)</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>        <span class="n">js</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;animations.js&#39;</span><span class="p">,</span> <span class="s">&#39;actions.js&#39;</span><span class="p">)</span>
</span></code></pre></td></tr></table></div></figure>




<!--more-->


<p>Than you can do get javascripts and CSS, rendered simple with something like this:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="o">&gt;&gt;&gt;</span> <span class="n">form</span> <span class="o">=</span> <span class="n">SimpleForm</span><span class="p">()</span>
</span><span class='line'><span class="o">&gt;&gt;&gt;</span> <span class="k">print</span> <span class="n">form</span><span class="o">.</span><span class="n">media</span>
</span><span class='line'><span class="o">&lt;</span><span class="n">link</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;http://media.example.com/pretty.css&quot;</span> <span class="nb">type</span><span class="o">=</span><span class="s">&quot;text/css&quot;</span> <span class="n">media</span><span class="o">=</span><span class="s">&quot;all&quot;</span> <span class="n">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="o">/&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="n">script</span> <span class="nb">type</span><span class="o">=</span><span class="s">&quot;text/javascript&quot;</span> <span class="n">src</span><span class="o">=</span><span class="s">&quot;http://media.example.com/animations.js&quot;</span><span class="o">&gt;&lt;/</span><span class="n">script</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="n">script</span> <span class="nb">type</span><span class="o">=</span><span class="s">&quot;text/javascript&quot;</span> <span class="n">src</span><span class="o">=</span><span class="s">&quot;http://media.example.com/actions.js&quot;</span><span class="o">&gt;&lt;/</span><span class="n">script</span><span class="o">&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Ok, that is really nice, but when you put your form in template than you get this html fragment in the middle of you html document, and that is not a good practice. A good recommendation is to put all your CSS in head of your document (for example in HEAD), and all your javascripts on end of your html.</p>

<p>So what do we want? We want to all our javascripts and CSS in a context variable so we can write a our base template like:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;</span>
</span><span class='line'><span class="cp">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span>
</span><span class='line'><span class="nt">&lt;html</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.w3.org/1999/xhtml&quot;</span><span class="nt">&gt;</span>
</span><span class='line'><span class="nt">&lt;head&gt;</span>
</span><span class='line'>  <span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span class="s">&quot;Content-Type&quot;</span> <span class="na">content=</span><span class="s">&quot;text/html; charset=UTF-8&quot;</span> <span class="nt">/&gt;</span>
</span><span class='line'>  {\% for css in forms_css \%}  {\% endfor \%}
</span><span class='line'><span class="nt">&lt;/head&gt;</span>
</span><span class='line'><span class="nt">&lt;body&gt;</span>
</span><span class='line'>{ %block body\%} {\%endblock\%}
</span><span class='line'>{\% for js in forms_js %}  {\% endfor \%}
</span><span class='line'><span class="nt">&lt;/body&gt;</span>
</span><span class='line'><span class="nt">&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>With this template we get all our javascripts and CSS injected in html. Nice. But I don&#8217;t want to manually put my media files in context every time I want to render template, so I wrote a simple extension of Context (and RequestContext) class, that looks in a context dictionary and looks for any forms that are in it. And adds all javacripts and CSS to context variables  forms_js (for javascript), and forms_css(for css).</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="k">class</span> <span class="nc">FormMediaContext</span><span class="p">(</span><span class="n">Context</span><span class="p">):</span>
</span><span class='line'>    <span class="sd">&#39;&#39;&#39;</span>
</span><span class='line'><span class="sd">     Context that automaticly for all Forms in context adds</span>
</span><span class='line'><span class="sd">     media to context</span>
</span><span class='line'><span class="sd">    &#39;&#39;&#39;</span>
</span><span class='line'>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">dict</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">processors</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
</span><span class='line'>        <span class="n">Context</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)</span>
</span><span class='line'>
</span><span class='line'>        <span class="n">contexts_values</span> <span class="o">=</span> <span class="p">[]</span>
</span><span class='line'>        <span class="nb">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">d</span><span class="p">:</span><span class="n">contexts_values</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="bp">self</span><span class="o">.</span><span class="n">dicts</span><span class="p">)</span>
</span><span class='line'>        <span class="n">forms_in_context</span> <span class="o">=</span> <span class="p">[</span> <span class="n">form</span> <span class="k">for</span> <span class="n">form</span> <span class="ow">in</span> <span class="n">contexts_values</span>
</span><span class='line'>                             <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">form</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">Form</span><span class="p">)]</span>
</span><span class='line'>        <span class="n">forms_js</span> <span class="o">=</span>  <span class="p">[]</span>
</span><span class='line'>        <span class="n">forms_css</span> <span class="o">=</span> <span class="p">[]</span>
</span><span class='line'>        <span class="k">for</span> <span class="n">form</span> <span class="ow">in</span> <span class="n">forms_in_context</span><span class="p">:</span>
</span><span class='line'>            <span class="n">forms_js</span> <span class="o">+=</span> <span class="p">[</span><span class="n">mark_safe</span><span class="p">(</span><span class="n">js</span><span class="p">)</span> <span class="k">for</span> <span class="n">js</span> <span class="ow">in</span> <span class="n">form</span><span class="o">.</span><span class="n">media</span><span class="o">.</span><span class="n">render_js</span><span class="p">()]</span>
</span><span class='line'>            <span class="n">forms_css</span> <span class="o">+=</span> <span class="p">[</span><span class="n">mark_safe</span><span class="p">(</span><span class="n">css</span><span class="p">)</span> <span class="k">for</span> <span class="n">css</span> <span class="ow">in</span> <span class="n">form</span><span class="o">.</span><span class="n">media</span><span class="o">.</span><span class="n">render_css</span><span class="p">()]</span>
</span><span class='line'>
</span><span class='line'>        <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">({</span> <span class="s">&#39;forms_js&#39;</span> <span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">forms_js</span><span class="p">)),</span>
</span><span class='line'>                       <span class="s">&#39;forms_css&#39;</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">forms_css</span><span class="p">))</span> <span class="p">})</span>
</span></code></pre></td></tr></table></div></figure>


<p>Or if you like RequestContext more  (like I do), than you can use:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="k">class</span> <span class="nc">FormMediaRequestContext</span><span class="p">(</span><span class="n">RequestContext</span><span class="p">):</span>
</span><span class='line'>    <span class="sd">&#39;&#39;&#39;</span>
</span><span class='line'><span class="sd">     Context that automaticly for all Forms in context adds</span>
</span><span class='line'><span class="sd">     media to context</span>
</span><span class='line'><span class="sd">    &#39;&#39;&#39;</span>
</span><span class='line'>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="nb">dict</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">processors</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
</span><span class='line'>        <span class="n">RequestContext</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">processors</span><span class="p">)</span>
</span><span class='line'>
</span><span class='line'>        <span class="n">contexts_values</span> <span class="o">=</span> <span class="p">[]</span>
</span><span class='line'>        <span class="nb">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">d</span><span class="p">:</span><span class="n">contexts_values</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="bp">self</span><span class="o">.</span><span class="n">dicts</span><span class="p">)</span>
</span><span class='line'>        <span class="n">forms_in_context</span> <span class="o">=</span> <span class="p">[</span> <span class="n">form</span> <span class="k">for</span> <span class="n">form</span> <span class="ow">in</span> <span class="n">contexts_values</span>
</span><span class='line'>                             <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">form</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">Form</span><span class="p">)]</span>
</span><span class='line'>        <span class="n">forms_js</span> <span class="o">=</span>  <span class="p">[]</span>
</span><span class='line'>        <span class="n">forms_css</span> <span class="o">=</span> <span class="p">[]</span>
</span><span class='line'>        <span class="k">for</span> <span class="n">form</span> <span class="ow">in</span> <span class="n">forms_in_context</span><span class="p">:</span>
</span><span class='line'>            <span class="n">forms_js</span> <span class="o">+=</span> <span class="p">[</span><span class="n">mark_safe</span><span class="p">(</span><span class="n">js</span><span class="p">)</span> <span class="k">for</span> <span class="n">js</span> <span class="ow">in</span> <span class="n">form</span><span class="o">.</span><span class="n">media</span><span class="o">.</span><span class="n">render_js</span><span class="p">()]</span>
</span><span class='line'>            <span class="n">forms_css</span> <span class="o">+=</span> <span class="p">[</span><span class="n">mark_safe</span><span class="p">(</span><span class="n">css</span><span class="p">)</span> <span class="k">for</span> <span class="n">css</span> <span class="ow">in</span> <span class="n">form</span><span class="o">.</span><span class="n">media</span><span class="o">.</span><span class="n">render_css</span><span class="p">()]</span>
</span><span class='line'>
</span><span class='line'>        <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">(</span> <span class="p">{</span> <span class="s">&#39;forms_js&#39;</span> <span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">forms_js</span><span class="p">)),</span>
</span><span class='line'>                       <span class="s">&#39;forms_css&#39;</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">forms_css</span><span class="p">))</span> <span class="p">})</span>
</span></code></pre></td></tr></table></div></figure>


<p>Now all that you need to do is to render your template with FormMediaContext(or FormMediaRequestContext), and have now worries about your media files, if you have multiple entries of same file it will be rendered only once.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Vrijeme je za 1234567890]]></title>
    <link href="http://slavus.net/blog/2009/02/13/vrijeme-je-za-1234567890/"/>
    <updated>2009-02-13T15:38:00+01:00</updated>
    <id>http://slavus.net/blog/2009/02/13/vrijeme-je-za-1234567890</id>
    <content type="html"><![CDATA[<p>Još malo i biti će 1234567890 sekundi od kad se računa Unix vrijeme.
Da li ste spremni dočekali ovaj povjesni trenutak? I kako ste ga proslavili?
Ja ću tu sekundu posvetiti svim Unixodima i onima koji će tek to postati.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Python source file encoding hint]]></title>
    <link href="http://slavus.net/blog/2008/12/16/python-source-file-encoding-hint/"/>
    <updated>2008-12-16T10:59:00+01:00</updated>
    <id>http://slavus.net/blog/2008/12/16/python-source-file-encoding-hint</id>
    <content type="html"><![CDATA[<p>When I program in Python I have bad habit writing comments in Croatian. When using characters like šđčžž i get some stupid errors. Some thing like this:</p>

<pre><code>SyntaxError: Non-ASCII character '\xc4' in file
</code></pre>

<p>I know I have write first special comment, to tell Python I am writing in UTF-8., but I always forget what exactly I have to write.
So here it is:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="c"># -*- coding: utf-8 -*-</span>
</span></code></pre></td></tr></table></div></figure>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Django i dodatne aplikacije s svojom putanjom]]></title>
    <link href="http://slavus.net/blog/2008/12/11/django-i-dodatne-aplikacije-s-svojom-putanjom/"/>
    <updated>2008-12-11T14:25:00+01:00</updated>
    <id>http://slavus.net/blog/2008/12/11/django-i-dodatne-aplikacije-s-svojom-putanjom</id>
    <content type="html"><![CDATA[<p>Ovo je prvi članak iz serija Django u Hrvata.</p>

<p>Ovdje ću opisati jedan kratki trik koji ja koristim da bi u svoj Django projekt ubacio neku od već gotovih Django aplikacija koje postoje u bespućima code.google.com i github-a.</p>

<p>Moja navika je sve dodatne aplikacije staviti u poseban direktorij lib izvan django projekta. No onda imam problem dodavanja skinutih aplikacija u PYTHONPATH. Prvobitno riješenje mi je bilo postaviti PYTHONPATH varijablu okoline ljusci. No ovaj pristup se pokazao nedvovoljno fleksibilan (neprenosivost putanja na različitim računalima, različite ljuske na različitim operacijskim sustavima).</p>

<!--more-->


<p>Nakon nekoliko iteracija došao sam do relativno dobrog rješenja.
U korijenskom direktoriju Django projekta napravim novu python datoteku, npr. python_path_for_libs.py, i u njega
upišemo nešto slično ovome ispod:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="kn">from</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="n">path</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">os.path</span> <span class="kn">import</span> <span class="n">dirname</span><span class="p">,</span> <span class="n">abspath</span>
</span><span class='line'><span class="n">BASEDIR</span> <span class="o">=</span> <span class="n">abspath</span><span class="p">(</span> <span class="n">dirname</span><span class="p">(</span><span class="n">__file__</span><span class="p">)</span><span class="o">+</span><span class="s">&quot;/../../&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;/&quot;</span>
</span><span class='line'>
</span><span class='line'><span class="n">APP_DIRS</span> <span class="o">=</span> <span class="p">(</span>
</span><span class='line'>    <span class="c"># Put strings here like &#39;&#39;</span>
</span><span class='line'>    <span class="s">&#39;django-debug-toolbar&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django_extensions&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django-evolution&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django-robots&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django-batchadmin&#39;</span><span class="p">,</span>
</span><span class='line'><span class="p">)</span>
</span><span class='line'>
</span><span class='line'><span class="k">for</span> <span class="n">app_dir</span> <span class="ow">in</span> <span class="n">APP_DIRS</span><span class="p">:</span>
</span><span class='line'>    <span class="k">if</span> <span class="n">BASEDIR</span><span class="o">+</span><span class="s">&#39;lib/&#39;</span><span class="o">+</span><span class="n">app_dir</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
</span><span class='line'>        <span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BASEDIR</span><span class="o">+</span><span class="s">&#39;lib/&#39;</span><span class="o">+</span><span class="n">app_dir</span><span class="p">)</span>
</span></code></pre></td></tr></table></div></figure>


<p>E sad što tu imamo:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="n">APP_DIRS</span> <span class="o">=</span> <span class="p">(</span>
</span><span class='line'>    <span class="c"># Put strings here like &#39;&#39;</span>
</span><span class='line'>    <span class="s">&#39;django-debug-toolbar&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django_extensions&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django-evolution&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django-robots&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s">&#39;django-batchadmin&#39;</span><span class="p">,</span>
</span><span class='line'><span class="p">)</span>
</span></code></pre></td></tr></table></div></figure>


<p>APP_DIRS je popis direktorija koji sadrže aplikacije koje će biti ubačene u PYTHONPATH. Kao što vidimo ja ovdje koristim  <a href="http://github.com/robhudson/django-debug-toolbar/tree/master">debug-toolbar</a> , <a href="http://code.google.com/p/django-command-extensions/">django_extensions</a> koje bih preporučio svima. Nakon što podesite sve svoje aplikacije iz lib direktorija u APP_DIRS, sve što vam preostaje da na početak vaše settings.py datoteke dodate liniju:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="kn">import</span> <span class="nn">python_path_for_libs</span>
</span></code></pre></td></tr></table></div></figure>


<p>I to je to, sve uredno radi.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Izašao je Django 1.0]]></title>
    <link href="http://slavus.net/blog/2008/09/04/django-10-je-vani/"/>
    <updated>2008-09-04T08:49:00+02:00</updated>
    <id>http://slavus.net/blog/2008/09/04/django-10-je-vani</id>
    <content type="html"><![CDATA[<p>Eto i to smo dočekali, službeno je izašao Django 1.0,
<a href="http://www.djangoproject.com/weblog/2008/sep/03/1/.">http://www.djangoproject.com/weblog/2008/sep/03/1/.</a></p>

<p>Od zadnje objave vezije 0.96 promjenilo se dosta toga, a kako je
0.96 release objavljen skoro godinu dana ovaj release 1.0 se dugo
čekao, a ljudi nestrpljivi, svi su korisitili trunk verziju koja je
bila prihvatljivo stabilna.</p>

<!--more-->


<p>E sad ljudi koji će prebacivati svoje postojeće projekte s vezije
0.96 na 1.0 imati će dosta posla, zbog Backwards Incompatible
promjena, previše je da ih nabrajam pa za više detalja svratite na:
<a href="http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges.">http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges.</a></p>

<p>Koje su se promjene dogodile od verzije 0.96 na 1.0 u brojkama:</p>

<ul>
<li>4000 comitova na svn</li>
<li>više od 2000 riješenih bugova</li>
<li>350 000 linija koda promjenjenih, dodanih ili obrisanih</li>
<li>dodano 40000 linija dokumentacije</li>
</ul>


<p>Sve ovo zvuči dosta impresivno no što od feature je dodano verziji 1.0:</p>

<ul>
<li> refactoring dokumentacije, posebno mi se sviđa da se
 konačno i offline može koristii -
 <a href="http://docs.djangoproject.com/">http://docs.djangoproject.com/</a></li>
<li> refactoring admin aplikacije, ako ste koristili integriranu
 admin aplikaciju sad vam ne gine portanje, no stvar je dobro
 izvedena i sad je omogućena sitnija granulacija admin aplikacije i
 konačno je opis admin sučelja izdvojen iz opisa modela gdje mu nije
 bilo mjesto</li>
<li> Poboljšana podrša za Unicode (iako niti do sada nije bila loša)</li>
<li> Poboljšana ORM</li>
<li> Automatskoiescaping template varijabli</li>
<li> Dodan django.contrib.gis (GeoDjango) kao podršga za
 GIS(Geographic Information Systems).</li>
<li> Podrška za Pluggable file storage, tako se sad FileField i
 ImageField može preusmjeriti na Amazonov S3 ili npr. FTP a ne kao
 do sada samo na lokalno računalo gdje se vrti Django instanca</li>
<li> Django je kompatibilan sad i s Jython, no zašto bi ga netko
 vrtio na JVM-u?</li>
<li> Generic relations in forms and admin</li>
<li> Razlikovanje INSERT/UPDATE kod save() u nekom modelu</li>
<li> sitnija granulacija CacheMiddleware što omogućuje bolje
 upravljanje cachom</li>
<li> Refactorirani django.contrib.comments, moj omiljeni feature
 koji mi je zadavao najviše problema kod promjena na tranku, ako ste
 koristili stare komentare biti će potrebna migracija podataa</li>
<li> uklonjeni deprecated dijelovi (npr. nema više oldforms)</li>
</ul>


<p>Pošto sam pratio razvoj Djanga što mi se posebno svidjelo u 1.0 verziji</p>

<ul>
<li> newforms - super</li>
<li> comments framework</li>
<li> novi signali - pomoću njih se zgodne stvari mogu raditi</li>
<li> refactoring dokumentacije me posebno oduševio, sad konačno mogu
 imati weblike dokmentaciju i lokalno i nemoram ići na web, malo mi
 je teško čitati RST</li>
</ul>


<p>Stvari koje mi fale u 1.0(a nadam se pojaviti će se u 1.1):</p>

<ul>
<li> podrška za agregaciju u ORM, baš bezveze da nema te
 mogućnosti pa nemogu napraviti opibćan select SUM(polje) from
 table; već moram sam pisati svoj manager i SQL da mi to odvrti</li>
<li> podršak za više baza, priča se da posotji low-level API koji
 čak i radi, ali nažalost nije nigdje dokumentiran, dok high level
 API ne postoji</li>
</ul>


<p>Kao poklon na kraju link na django šalabahter:
<a href="http://www.mercurytide.co.uk/media/whitepapers/django-cheat-sheet/django10-cheat-sheet.pdf">http://www.mercurytide.co.uk/media/whitepapers/django-cheat-sheet/django10-cheat-sheet.pdf</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Interactive Django  shell in Eclipse/PyDev interactive console]]></title>
    <link href="http://slavus.net/blog/2008/06/18/interactive-django-shell-in-pydev/"/>
    <updated>2008-06-18T00:27:00+02:00</updated>
    <id>http://slavus.net/blog/2008/06/18/interactive-django-shell-in-pydev</id>
    <content type="html"><![CDATA[<p>We all know that Django is great Python web framework, however one
thing that bothers me is the lack of good development tool (Yes, I
know there is VIM, and there is Emacs but guys it is 2008.) In my
humble opinion best development tool for python is PyDev, Eclipse
plugin for Python. The irony is that the best Python IDE is written
in Java :).</p>

<p>With PyDev and Aptana, another irreplaceable plugin(but that is
another story), you can do great Django development.</p>

<p>There are lot&#8217;s of tutorial how to use Django and PyDev
(Configuring PyDev to work with Django :
<a href="http://pydev.blogspot.com/2006/09/configuring-pydev-to-work-with-django.html">configuring pydev to work with django</a> is a good place to start).</p>

<p>One thing that is very nice in Django is interactive shell, but
this feature must be integrated with IDE, I missed this feature for
long time, but in version 1.3.15 PyDev released new interactive
console, great feature. First you need PyDev version 1.3.15 or
higher (try to use latest one).</p>

<!--more-->


<p></p>

<p>You can start interactive console from Console View by clicking on
the button Open Console(look picture below).</p>

<p><img src="http://slavus.net/images/media/eclipse-django-pydev/shoot1.png" width="680" title="screen1" ></p>

<p>You will get a dialog asking for a type of console you want to
open, select Python console and press OK.</p>

<p><img src="http://slavus.net/images/media/eclipse-django-pydev/shoot2.png" title="screen2" ></p>

<hr />

<p>That is it, you have now working python interactive console. Out of
the box you get some nice features like autocompletition and syntax
coloring. What we want do next is to have interactive console for
Django.</p>

<p>Here is a little tutorial how take advantage of PyDev interactive
console for Djagno shell.</p>

<ol>
<li>Open Window&#8211;>Preferences&#8230;</li>
<li>In Preferences Window go to PyDev-> Interactive console</li>
</ol>


<p><img src="http://slavus.net/images/media/eclipse-django-pydev/shoot4.png" width="680" title="screen3" ></p>

<p>3.In initial interpreter command put following code:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="kn">import</span> <span class="nn">sys</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">YOUR_OWN_PROJECT</span> <span class="kn">import</span> <span class="n">settings</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">django.core.management</span> <span class="kn">import</span> <span class="n">execute_manager</span>
</span><span class='line'><span class="n">execute_manager</span><span class="p">(</span><span class="n">settings</span><span class="p">,[</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="s">&#39;shell&#39;</span><span class="p">])</span>
</span><span class='line'>
</span><span class='line'><span class="kn">import</span> <span class="nn">sys</span><span class="p">;</span> <span class="k">print</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</span> <span class="ow">or</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">get_version</span><span class="p">;</span><span class="k">print</span> <span class="s">&quot;Django version </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">get_version</span><span class="p">()</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">django.core.management</span> <span class="kn">import</span> <span class="n">execute_manager</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">slavus</span> <span class="kn">import</span> <span class="n">settings</span>
</span><span class='line'><span class="n">execute_manager</span><span class="p">(</span><span class="n">settings</span><span class="p">,[</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="s">&#39;shell&#39;</span><span class="p">])</span>
</span></code></pre></td></tr></table></div></figure>


<p>Where YOUR_OWN_PROJECT is the name of yours top level Django
project. It is important to mention that if you have multiple
Python/PyDev projects in your workspace you have to change your
preferences configuration every time you want start interactive
console for anathor project. After starting the shell, you will get
output something like this:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="kn">import</span> <span class="nn">sys</span><span class="p">;</span> <span class="k">print</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</span> <span class="ow">or</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
</span><span class='line'><span class="n">C</span><span class="p">:</span>\<span class="n">Python25</span>\<span class="n">python</span><span class="o">.</span><span class="n">exe</span> <span class="mf">2.5</span><span class="o">.</span><span class="mi">2</span> <span class="p">(</span><span class="n">r252</span><span class="p">:</span><span class="mi">60911</span><span class="p">,</span> <span class="n">Feb</span> <span class="mi">21</span> <span class="mi">2008</span><span class="p">,</span> <span class="mi">13</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">45</span><span class="p">)</span> <span class="p">[</span><span class="n">MSC</span> <span class="n">v</span><span class="o">.</span><span class="mi">1310</span> <span class="mi">32</span> <span class="n">bit</span> <span class="p">(</span><span class="n">Intel</span><span class="p">)]</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">get_version</span><span class="p">;</span><span class="k">print</span> <span class="s">&quot;\Django version </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">get_version</span><span class="p">()</span>
</span><span class='line'>\<span class="n">Django</span> <span class="n">version</span> <span class="mf">0.97</span><span class="o">-</span><span class="n">pre</span><span class="o">-</span><span class="n">SVN</span><span class="o">-</span><span class="mi">7568</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">django.core.management</span> <span class="kn">import</span> <span class="n">execute_manager</span>
</span><span class='line'><span class="kn">from</span> <span class="nn">slavus</span> <span class="kn">import</span> <span class="n">settings</span>
</span><span class='line'><span class="n">execute_manager</span><span class="p">(</span><span class="n">settings</span><span class="p">,[</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="s">&#39;shell&#39;</span><span class="p">])</span>
</span><span class='line'><span class="o">&gt;&gt;&gt;</span> <span class="n">Python</span> <span class="mf">2.5</span><span class="o">.</span><span class="mi">2</span> <span class="p">(</span><span class="n">r252</span><span class="p">:</span><span class="mi">60911</span><span class="p">,</span> <span class="n">Feb</span> <span class="mi">21</span> <span class="mi">2008</span><span class="p">,</span> <span class="mi">13</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">45</span><span class="p">)</span> <span class="p">[</span><span class="n">MSC</span> <span class="n">v</span><span class="o">.</span><span class="mi">1310</span> <span class="mi">32</span> <span class="n">bit</span> <span class="p">(</span><span class="n">Intel</span><span class="p">)]</span> <span class="n">on</span> <span class="n">win32</span>
</span><span class='line'><span class="n">Type</span> <span class="s">&quot;help&quot;</span><span class="p">,</span> <span class="s">&quot;copyright&quot;</span><span class="p">,</span> <span class="s">&quot;credits&quot;</span> <span class="ow">or</span> <span class="s">&quot;license&quot;</span> <span class="k">for</span> <span class="n">more</span> <span class="n">information</span><span class="o">.</span>
</span><span class='line'><span class="p">(</span><span class="n">InteractiveConsole</span><span class="p">)</span>
</span><span class='line'><span class="o">&gt;&gt;&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>That is it, you have working Django interactive console. Now you
can do things like this:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='python'><span class='line'><span class="kn">from</span> <span class="nn">slavus.article.models</span> <span class="kn">import</span> <span class="n">Article</span>
</span><span class='line'><span class="n">Article</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
</span><span class='line'><span class="p">[</span><span class="o">&lt;</span><span class="n">Article</span><span class="p">:</span> <span class="n">example1</span><span class="o">&gt;</span><span class="p">,</span>  <span class="o">&lt;</span><span class="n">Article</span><span class="p">:</span> <span class="n">example2</span><span class="o">&gt;</span><span class="p">,</span>  <span class="o">&lt;</span><span class="n">Article</span><span class="p">:</span> <span class="n">example3</span><span class="o">&gt;</span><span class="p">]</span>
</span></code></pre></td></tr></table></div></figure>


<p>But there is also autocompletition:</p>

<p><img src="http://slavus.net/images/media/eclipse-django-pydev/shoot3.png" width="680" title="screen4" ></p>

<hr />

<p>Enjoy!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Blog  otvoren]]></title>
    <link href="http://slavus.net/blog/2008/05/12/blog-otvoren/"/>
    <updated>2008-05-12T10:14:00+02:00</updated>
    <id>http://slavus.net/blog/2008/05/12/blog-otvoren</id>
    <content type="html"><![CDATA[<p>Da blog ne stoji prazan otvaram ovaj blog.
Uživajte</p>
]]></content>
  </entry>
  
</feed>
