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

<channel>
	<title>breakthesystem &#187; Daniel</title>
	<atom:link href="http://breakthesystem.org/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://breakthesystem.org</link>
	<description>Elegante Anwendungen für Web, iPhone und Mac</description>
	<lastBuildDate>Wed, 12 May 2010 14:01:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tenplustwo ist da</title>
		<link>http://breakthesystem.org/2010/tenplustwo-ist-da/</link>
		<comments>http://breakthesystem.org/2010/tenplustwo-ist-da/#comments</comments>
		<pubDate>Wed, 12 May 2010 12:32:52 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=545</guid>
		<description><![CDATA[Unsere neue Software, Tenplustwo ist ab heute im App Store verfügbar. Mit ihr wird denen geholfen, die sich besonders leicht von ihrer Arbeit ablenken lassen.
Tenplustwo ist eine iPhone- (und bald iPad-)App, die den von Productivity-Guru Merlin Mann beschriebenen (10+2)*5-Lifehack umsetzt: Zehn Minuten arbeiten, dann zwei Minuten Pause, dann wieder zehn Minuten Arbeit, und so weiter. [...]]]></description>
			<content:encoded><![CDATA[<p>Unsere neue Software, Tenplustwo ist ab heute <a href="http://itunes.apple.com/de/app/tenplustwo/id369596448?mt=8">im App Store verfügbar</a>. Mit ihr wird denen geholfen, die sich besonders leicht von ihrer Arbeit ablenken lassen.<span id="more-545"></span></p>
<p>Tenplustwo ist eine iPhone- (und bald iPad-)App, die den von Productivity-Guru Merlin Mann beschriebenen <a href="http://www.43folders.com/2005/10/11/procrastination-hack-1025">(10+2)*5-Lifehack</a> umsetzt: Zehn Minuten arbeiten, dann zwei Minuten Pause, dann wieder zehn Minuten Arbeit, und so weiter. Die App stellt dafür einen attraktiv gestalteten und wohlklingenden Timer zur Verfügung.</p>
<p>Durch die Pflichtpausen werden die Anwender motiviert; es sind ja immer &#8220;nur zehn Minuten&#8221; bis zur nächsten Pause. Und durch den Timer, der die Pausen auf eine kurze Zeit beschränkt, geht es trotzdem bald weiter. Langweilige Aufgaben, auf die man keine Lust hat, sind mit dieser Technik viel schneller erledigt als mit der Methode &#8220;Zwei Minuten arbeiten, 30 Minuten Wikipedia.&#8221;</p>
<p>Mehr Informationen gibt es auf der <a href="http://tenplustwo.breakthesystem.org/">Homepage von Tenplustwo</a>. Die Software ist noch bis zum 20. Mai kostenlos verfügbar, danach wird sie zu einem Preis von 0,79€ verkauft. <a href="http://itunes.apple.com/de/app/tenplustwo/id369596448?mt=8">Am besten also gleich herunterladen! (App Store link)</a></p>
<p>Wir haben auch schon einige Ideen für die weitere Entwicklung von Tenplustwo: Die nächste Version wird eine Universal-App sein, also sowohl iPhone und iPod Touch als auch das iPad unterstützen. Außerdem forschen wir nach einer schönen Art und Weise, die Anzahl der bereits absolvierten Arbeit/Pause-Zyklen darzustellen. Und schließlich soll es möglichst bald möglich sein, die neuen Funktionen von iPhone OS 4.0 zu nutzen, um den Timer auch laufen zu lassen, wenn die Applikation nicht im Vordergrund läuft.</p>
<p><small>Wir freuen uns, wenn Blogs, Zeitschriften und sonstige Publikationen aller Art über uns berichten wollen. <a href="info@breakthesystem.org">Schreiben Sie uns</a> bei Fragen oder um Promo-Codes zu erhalten. Sie können zusätzlich auch unser <a href="http://tenplustwo.breakthesystem.org/presskit_tenplustwo.zip">Pressekit</a> benutzen.</small></p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2010/tenplustwo-ist-da/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neues Projekt: Gender Workshop</title>
		<link>http://breakthesystem.org/2010/neues-abgeschlossenes-projekt/</link>
		<comments>http://breakthesystem.org/2010/neues-abgeschlossenes-projekt/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 20:00:26 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=525</guid>
		<description><![CDATA[Zusammen mit meinem Kollegen Markus Steger habe ich heute den Gender Workshop abgeschlossen, eine Web-basierte Lernumgebung, die möglicherweise vom Gender Zentrum der Universität Augsburg (GZA) als Lernprogramm zur &#8220;Sensibilisierung für eine geschlechtergerechte Sichtweise&#8221; eingesetzt wird.
Das GZA: 
Mit dem &#8220;Gender-Online-Tool&#8221; haben Sie die Möglichkeit, interaktiv leicht verständliche Lernmodule rund um das Thema &#8220;Geschlechtersensible Sichtweise&#8221; (Gender Mainstreaming) [...]]]></description>
			<content:encoded><![CDATA[<p>Zusammen mit meinem Kollegen Markus Steger habe ich heute den Gender Workshop abgeschlossen, eine Web-basierte Lernumgebung, die möglicherweise vom <a href="http://www.gza.uni-augsburg.de/de/">Gender Zentrum der Universität Augsburg</a> (GZA) als Lernprogramm zur &#8220;Sensibilisierung für eine geschlechtergerechte Sichtweise&#8221; eingesetzt wird.<span id="more-525"></span></p>
<p>Das GZA: </p>
<blockquote><p>Mit dem &#8220;Gender-Online-Tool&#8221; haben Sie die Möglichkeit, interaktiv leicht verständliche Lernmodule rund um das Thema &#8220;Geschlechtersensible Sichtweise&#8221; (Gender Mainstreaming) zu bearbeiten, die einfach handhabbar sind und auch noch Spaß machen. Das &#8220;Gender-Online-Tool&#8221; vermittelt schnell und unkompliziert Wissen und praktisches Handwerkszeug, um bei allen Vorhaben, Projekten und Planungen von vornherein die unterschiedlichen Lebenssituationen und Bedürfnisse von Frauen und Männern besser berücksichtigen zu können.</p></blockquote>
<p>Besonderes Augenmerk haben wir auf eine schöne, einfach zu bedienende Benutzeroberfläche gelegt. Dazu kommen noch Elemente die den Benutzer zusätzlich am Ball halten sollen. Hier haben wir uns vom Suchtfaktor von Online-Rollenspielen wie World of Warcraft inspirieren lassen, und vom Sammel-Anreiz von Achievements wie zum Beispiel in Xbox Live. </p>
<p>Angelehnt an diese Systeme bieten wir den Kunden des GZA eine motivierende und Interesse weckende Lernumgebung für die Themen Gender und Geschlechtersensibilisierung.</p>
<p><a href="http://breakthesystem.org/wp-content/uploads/2010/02/Screen-shot-2010-02-24-at-20.44.13.png"><img src="http://breakthesystem.org/wp-content/uploads/2010/02/Screen-shot-2010-02-24-at-20.44.13.png" alt="" title="Screen shot 2010-02-24 at 20.44.13" width="521" height="318" class="alignnone size-full wp-image-535" /></a><br />
<a href="http://breakthesystem.org/wp-content/uploads/2010/02/Screen-shot-2010-02-24-at-20.44.39.png"><img src="http://breakthesystem.org/wp-content/uploads/2010/02/Screen-shot-2010-02-24-at-20.44.39.png" alt="" title="Screen shot 2010-02-24 at 20.44.39" width="521" height="184" class="alignnone size-full wp-image-536" /></a></p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2010/neues-abgeschlossenes-projekt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Einträge im Portfolio</title>
		<link>http://breakthesystem.org/2009/neue-eintrage-im-portfolio/</link>
		<comments>http://breakthesystem.org/2009/neue-eintrage-im-portfolio/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 18:51:16 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=520</guid>
		<description><![CDATA[In unserem Portfolio haben wir neue Einträge für die Webseite der Katholischen Hochschulgruppe Augsburg sowie die neue Seite zur Semester Opening Party des Asta an der Universität Augsburg. 
Beiden Kunden sagen wir vielen Dank für die Zusammenarbeit und hoffen, dass sie genauso zufrieden mit den Webseiten sind wie wir.
 ]]></description>
			<content:encoded><![CDATA[<p>In unserem <a href="/portfolio/">Portfolio</a> haben wir neue Einträge für <a href="http://khga.sites.djangoeurope.com/">die Webseite der Katholischen Hochschulgruppe Augsburg</a> sowie die <a href="http://semesteropeningparty.de">neue Seite zur Semester Opening Party des Asta an der Universität Augsburg</a>. </p>
<p>Beiden Kunden sagen wir vielen Dank für die Zusammenarbeit und hoffen, dass sie genauso zufrieden mit den Webseiten sind wie wir.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/neue-eintrage-im-portfolio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing django-thumbnail.py</title>
		<link>http://breakthesystem.org/2009/introducing-django-thumbnail-py/</link>
		<comments>http://breakthesystem.org/2009/introducing-django-thumbnail-py/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 22:05:26 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=439</guid>
		<description><![CDATA[Almost all of our Django projects employ some kind of thumbnail creation mechanism. 
Initially, the thumbnails we needed were just the easy kind: Either scaled down versions of the initial image, or cropped to a square and then scaled down. Those are easily created in a few lines of Python, and I had created a [...]]]></description>
			<content:encoded><![CDATA[<p>Almost all of our <a href="http://djangoproject.com">Django</a> projects employ some kind of thumbnail creation mechanism. <span id="more-439"></span></p>
<p>Initially, the thumbnails we needed were just the easy kind: Either scaled down versions of the initial image, or cropped to a square and then scaled down. <a href="http://stackoverflow.com/questions/709388/whats-a-more-elegant-rephrasing-of-this-cropping-algorithm-in-python">Those are easily created in a few lines of Python</a>, and I had created a custom Django template tag to create them. Pretty soon, caching became important, too, and I added that as well.</p>
<p>For our most recent projects, the design necessitated thumbnails that had exactly specified dimensions. Here are some examples:</p>
<p><img style="margin: 20px 0" src="http://breakthesystem.org/wp-content/uploads/2009/11/examples.png" alt="examples" title="examples" width="521" height="246" class="aligncenter size-full wp-image-444" /></p>
<p>The code to create these kinds of thumbnails is a little trickier. Since I found no preexisting solution, I decided to roll my own, and now we&#8217;re sharing that solution with the world. I&#8217;ll talk a little about the algorithm first, if you just want the code, <a href="http://bitbucket.org/winsmith/django-thumbnail/downloads/">you can grab it right now on the Bitbucket page</a>.</p>
<p>Also, if you aren&#8217;t interested in the technical details, you can skip the technical part and go directly to <a href="#how_to_use">the part where we explain how to use this stuff</a>.</p>
<h2>The Technical Part™</h2>
<p>So, how do we create an image that fits the correct dimensions, while still ensuring that as much as possible of the content of the original image fits?<br />
<img style="margin: 20px 0"  src="http://breakthesystem.org/wp-content/uploads/2009/11/1.png" alt="1" title="1" width="521" height="247" class="aligncenter size-full wp-image-440" /></p>
<p>First I tried comparing the individual sides of the image to those of the thumbnail, but that obviously resulted in nothing but lots and lots of edge cases: How do I have to scale the image if its width is slightly greater than the thumbnail&#8217;s but it&#8217;s a lot higher? What if it&#8217;s the other way round? What if the image is a rectangle and the thumbnail is a square?</p>
<p>The only comparable attribute of the image and thumbnail sizes is their ratio, obtained by dividing their width by their height. The ratio stays the same regardless of the actual width or height and is therefore ideal for determining exactly which part of the original image to crop. The cropped image can then be resized to obtain a thumbnail with exactly the desired dimensions.<br />
<img style="margin: 20px 0"  src="http://breakthesystem.org/wp-content/uploads/2009/11/21.png" alt="2" title="2" width="521" height="158" class="aligncenter size-full wp-image-441" /></p>
<p>If the thumbnail ratio is <em>greater</em> than the image ratio, the thumbnail is <em>wider</em> than the original image, and we keep the image&#8217;s <em>width</em> while cropping top and bottom.</p>
<p>If the thumbnail ratio is <em>less</em> than the image ratio, the thumbnail is <em>taller</em> than the original image, and keep the image&#8217;s <em>height</em> while cropping the sides.</p>
<p>(After cropping, we obviously resize the image to the exact thumbnail dimensions.)</p>
<p><img style="margin: 20px 0" src="http://breakthesystem.org/wp-content/uploads/2009/11/3.png" alt="3" title="3" width="521" height="229" class="aligncenter size-full wp-image-442" /></p>
<p>The code for this is as follows (<code>image</code> is the original image, <code>image.size[0]</code> is the original image&#8217;s x size, <code>x</code> and <code>y</code> are the thumbnails dimensions):</p>
<pre class="textmate-source mac_classic"><span class='linenum'>    1</span> <span class="source source_python">img_ratio <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_function-call meta_function-call_python"><span class="support support_type support_type_python">float</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python"><span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">1</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span>
<span class='linenum'>    2</span> thumb_ratio <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_function-call meta_function-call_python"><span class="support support_type support_type_python">float</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python">x</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> y
<span class='linenum'>    3</span> x <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_function-call meta_function-call_python"><span class="support support_type support_type_python">int</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python">x</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span>; y <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_function-call meta_function-call_python"><span class="support support_type support_type_python">int</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python">y</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span>
<span class='linenum'>    4</span>
<span class='linenum'>    5</span> <span class="keyword keyword_control keyword_control_flow keyword_control_flow_python">if</span>(img_ratio <span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_python">&gt;</span> thumb_ratio):
<span class='linenum'>    6</span>     c_width <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> x <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">*</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">1</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> y
<span class='linenum'>    7</span>     c_height <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">1</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span>
<span class='linenum'>    8</span>     originX <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> <span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">2</span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">-</span> c_width <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> <span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">2</span>
<span class='linenum'>    9</span>     originY <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span>
<span class='linenum'>   10</span> <span class="keyword keyword_control keyword_control_flow keyword_control_flow_python">else</span>:
<span class='linenum'>   11</span>     c_width <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span>
<span class='linenum'>   12</span>     c_height <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> y <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">*</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> x
<span class='linenum'>   13</span>     originX <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span>
<span class='linenum'>   14</span>     originY <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">1</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> <span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">2</span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">-</span> c_height <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">/</span> <span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">2</span>
<span class='linenum'>   15</span>
<span class='linenum'>   16</span> cropBox <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> (originX, originY, originX <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">+</span> c_width, originY <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_python">+</span> c_height)
<span class='linenum'>   17</span> image <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_function-call meta_function-call_python">image.crop<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python">cropBox</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span>
<span class='linenum'>   18</span> <span class="meta meta_function-call meta_function-call_python">image.thumbnail<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python"><span class="meta meta_structure meta_structure_list meta_structure_list_python"><span class="punctuation punctuation_definition punctuation_definition_list punctuation_definition_list_begin punctuation_definition_list_begin_python">[</span><span class="meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python">x</span><span class="punctuation punctuation_separator punctuation_separator_list punctuation_separator_list_python">,</span> <span class="meta meta_structure meta_structure_list meta_structure_list_item meta_structure_list_item_python">y</span><span class="punctuation punctuation_definition punctuation_definition_list punctuation_definition_list_end punctuation_definition_list_end_python">]</span></span>, Image.ANTIALIAS</span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span></span></pre>
<p>Some comments:</p>
<ul>
<li>In the first two lines, we determine the image&#8217;s ratio and that of the thumbnail.</li>
<li>Then we determine, according to the ratio, how wide the thumbnail would be, if it were as high as the image. (For image ratio > thumbnail ratio. Swap width and height for the other way round.)</li>
<li>We create a tuple called <code>cropBox</code>, (line 16) which we fill with the coordinates of four corners of an imaginary box that covers as many of the image&#8217;s pixels as possible while retaining the desired ratio of the thumbnail.</li>
<li>We crop the image based on the <code>cropbox</code> in line 17.</li>
<li>Finally, in line 18, we resize the image, which now has the correct ratio, to the correct size as well, thereby creating the thumbnail.</li>
</ul>
<p>We have some edges cases as well. An easy one is the ratio of the thumbnail being the same as the original image. In this case, the <code>else</code> statement in line 10 is executed, but it could just as well be the the <code>if</code>. Either way, the dimension that is calculated as a product of ratio and the other dimension will be correct.</p>
<p><img style="margin:20px;float:right" src="http://breakthesystem.org/wp-content/uploads/2009/11/4.png" alt="4" title="4" width="147" height="145" class="alignnone size-full wp-image-443" />Another edge case appears if one or both sides of the original image are smaller than the respective side or sides of the thumbnail. In this case, we use the length of the original image&#8217;s side length instead of the length as calculated by the ratio. </p>
<p>This creates images that might in fact be smaller than the desired dimensions, instead of scaling the image somehow to fit. We decided this would be better in most cases, since images that are enlarged usually appear blocky or mangled.</p>
<p>So we just cut the size off:</p>
<pre class="textmate-source mac_classic"><span class='linenum'>    1</span> <span class="source source_python"><span class="keyword keyword_control keyword_control_flow keyword_control_flow_python">if</span> (<span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span> <span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_python">&lt;</span> x):
<span class='linenum'>    2</span>     x <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">0</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span>
<span class='linenum'>    3</span> <span class="keyword keyword_control keyword_control_flow keyword_control_flow_python">if</span> (<span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">1</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span> <span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_python">&lt;</span> y):
<span class='linenum'>    4</span>     y <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_item-access meta_item-access_python">image.size<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">[</span><span class="meta meta_item-access meta_item-access_arguments meta_item-access_arguments_python"><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">1</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">]</span></span></span></pre>
<p>As for file saving and caching, we create a file name based on the original file&#8217;s name plus the dimensions, like <code>image-640x480.png</code>. If such a file already exists and its timestamp is newer than the original files (meaning the original has not been replaced by another version) we skip all the time consuming computations and simply return the existing image.</p>
<p>That&#8217;s all the code-explaining I will do today. For more, <a href="http://bitbucket.org/winsmith/django-thumbnail/issues/new/">ask a question on Bitbucket</a> or <a href="http://bitbucket.org/winsmith/django-thumbnail/src/">read the source code yourself</a>.</p>
<p><a name="how_to_use"><br />
<h2>The Part Where I Explain How To Use This Stuff™</h2>
<p></a></p>
<p>Of course you can simply  use the described algorithm to create your own image thumbnail template tag if you want. Or you can use it in your Python application without using Django. Or you can port it to C. Whatever.</p>
<p>Oh, by the way, you can use all the code in this blog entry and in the <a href="http://bitbucket.org/winsmith/django-thumbnail/src/">django-thumbnail code repository</a> for free, regardless of wether you make money with it or not. No, you don&#8217;t have to make your code open to the general public or to us. You <em>can</em> think of breakthesystem when you need a serious website, a cool iPhone app or an awesome Mac application, though. Or you can buy me a beer. Just <a href="mailto:daniel@breakthesystem.org">contact me</a> for any of that.</p>
<p>And <a href="http://twitter.com/breakthesystem">you should follow me on Twitter</a>, obviously. :)</p>
<p>Okay, let&#8217;s go. I&#8217;m assuming you&#8217;ll have a model in your Django application that looks a bit like this, by the way:</p>
<pre class="textmate-source mac_classic"><span class="source source_python"><span class="meta meta_class meta_class_python"><span class="storage storage_type storage_type_class storage_type_class_python">class</span> <span class="entity entity_name entity_name_type entity_name_type_class entity_name_type_class_python">Picture</span><span class="punctuation punctuation_definition punctuation_definition_inheritance punctuation_definition_inheritance_begin punctuation_definition_inheritance_begin_python">(</span><span class="meta meta_class meta_class_inheritance meta_class_inheritance_python"><span class="entity entity_other entity_other_inherited-class entity_other_inherited-class_python">models.Model</span></span><span class="punctuation punctuation_definition punctuation_definition_inheritance punctuation_definition_inheritance_end punctuation_definition_inheritance_end_python">)</span><span class="punctuation punctuation_section punctuation_section_class punctuation_section_class_begin punctuation_section_class_begin_python">:</span></span>
    title <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_function-call meta_function-call_python">models.CharField<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python"><span class="variable variable_parameter variable_parameter_function variable_parameter_function_python">max_length</span><span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span><span class="constant constant_numeric constant_numeric_integer constant_numeric_integer_decimal constant_numeric_integer_decimal_python">255</span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span>
    image <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="meta meta_function-call meta_function-call_python">models.ImageField<span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_begin punctuation_definition_arguments_begin_python">(</span><span class="meta meta_function-call meta_function-call_arguments meta_function-call_arguments_python"><span class="variable variable_parameter variable_parameter_function variable_parameter_function_python">upload_to</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_python">=</span> <span class="string string_quoted string_quoted_double string_quoted_double_single-line string_quoted_double_single-line_python"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_python">"</span>images/<span class="constant constant_other constant_other_placeholder constant_other_placeholder_python">%Y</span>-<span class="constant constant_other constant_other_placeholder constant_other_placeholder_python">%m</span>-<span class="constant constant_other constant_other_placeholder constant_other_placeholder_python">%d</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_python">"</span></span></span><span class="punctuation punctuation_definition punctuation_definition_arguments punctuation_definition_arguments_end punctuation_definition_arguments_end_python">)</span></span></span></pre>
<p>First, install the template tag. To do that , download the file <a href="http://bitbucket.org/winsmith/django-thumbnail/raw/tip/thumbnail.py">thumbnail.py</a> and place it in <code>YourDjangoProject/your_django_app/templatetags/tumbnail.py</code>. You&#8217;ll probably have to create the <code>templatetags</code> folder. If you&#8217;ve just created it, you&#8217;ll also have to create an empty file called <code>__init__.py</code> in the <code>templatetags</code> folder. </p>
<p>In your template, add the statement <code>{% load thumbnail %}</code> somewhere before you actually use the <code>thumbnail</code> tag. You&#8217;ll need that statement only once, so I recommend placing it at the very top of your template. Then use the tag like this:</p>
<pre class="textmate-source mac_classic"><span class="text text_html text_html_basic"><span class="meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html">&lt;</span><span class="entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html">a</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_html">href</span>=<span class="string string_quoted string_quoted_double string_quoted_double_html"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_html">"</span>{{ picture.image.get_url }}<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_html">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html">&gt;</span></span>
    {{ picture.image|thumbnail:320x240 }}
<span class="meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html">&lt;/</span><span class="entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html">a</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html">&gt;</span></span></span></pre>
<p>This will create a thumbnail of 320 by 240 pixels that links to the original picture.</p>
<p>You can also do this: </p>
<pre class="textmate-source mac_classic"><span class="text text_html text_html_basic"><span class="meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html">&lt;</span><span class="entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html">a</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_html">href</span>=<span class="string string_quoted string_quoted_double string_quoted_double_html"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_html">"</span>{{ picture.image.get_url }}<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_html">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html">&gt;</span></span>
    {{ picture.image|thumbnail:320x0 }}
<span class="meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html">&lt;/</span><span class="entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html">a</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html">&gt;</span></span></span></pre>
<p>The above code will create a thumbnail that is 320 pixels wide. In other words, this is the image scaled down to a width of 320px. You can also use something like <code>thumbnail:0x240</code> for a variable width and fixed height.</p>
<p>Finally, thumbnail.py can do one more trick:</p>
<pre class="textmate-source mac_classic"><span class="text text_html text_html_basic"><span class="meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html">&lt;</span><span class="entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html">a</span> <span class="entity entity_other entity_other_attribute-name entity_other_attribute-name_html">href</span>=<span class="string string_quoted string_quoted_double string_quoted_double_html"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_html">"</span>{{ picture.image.get_url }}<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_html">"</span></span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html">&gt;</span></span>
    {{ picture.image|thumbnail_with_max_side:320 }}
<span class="meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html"><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html">&lt;/</span><span class="entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html">a</span><span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html">&gt;</span></span></span></pre>
<p>The above code will create a scaled down version of the image that is 320 pixels on the longer side, whichever one that is.</p>
<p>And that&#8217;s it. I hope you like it. <a href="http://bitbucket.org/winsmith/django-thumbnail/">You should now go to django-thumbnail&#8217;s Bitbucket homepage</a> and have a look at the current source code, or comment, or follow the project. I probably won&#8217;t update this blog entry for new developments regarding django-thumbnail, so Bitbucket is where you should go.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/introducing-django-thumbnail-py/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iMensa 2.5</title>
		<link>http://breakthesystem.org/2009/imensa-2-5/</link>
		<comments>http://breakthesystem.org/2009/imensa-2-5/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 12:38:41 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=431</guid>
		<description><![CDATA[Wir haben gestern Abend iMensa auf die Version 2.5 upgedatet. Mit diesem Update funktioniert iMensa jetzt endlich auch für die Mensa der FH Augsburg. 
Die anderen Mensen werden nicht mehr angezeigt, weil sich herausgestellt hat, dass die Webseite des Studentenwerks wohl sehr händisch aufgebaut wird, und es große Unterschiede zwischen den einzelnen Unterseiten gibt. Weil [...]]]></description>
			<content:encoded><![CDATA[<p>Wir haben gestern Abend <a href="http://eat.breakthesystem.org/">iMensa</a> auf die Version 2.5 upgedatet. <em>Mit diesem Update funktioniert iMensa jetzt endlich auch für die Mensa der FH Augsburg. </em><span id="more-431"></span></p>
<p>Die anderen Mensen werden nicht mehr angezeigt, weil sich herausgestellt hat, dass die Webseite des Studentenwerks wohl sehr händisch aufgebaut wird, und es große Unterschiede zwischen den einzelnen Unterseiten gibt. Weil es sowieso schon relativ tricky ist, den Inhalt der Seiten zuverlässig auszulesen, warten wir mit dem Umsetzen der anderen Mensen, bis sich ein paar Leute melden, die tatsächlich Bedarf danach haben.</p>
<p><a href="http://eat.breakthesystem.org">Hier geht&#8217;s zu iMensa</a></p>
<p>Wie findet ihr iMensa? Habt ihr noch Verbesserungsvorschläge oder Wünsche? Was würdet ihr zum Beispiel davon halten, wenn iMensa eine eigenständige .de-Adresse hätte?</p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/imensa-2-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wir haben ein 3D-Minigame erschaffen</title>
		<link>http://breakthesystem.org/2009/wir-haben-ein-3d-minigame-erschaffen/</link>
		<comments>http://breakthesystem.org/2009/wir-haben-ein-3d-minigame-erschaffen/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 14:42:06 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=421</guid>
		<description><![CDATA[Zusammen mit der Gruppe SCHMATZ GAMES ist im Praktikum &#8220;Einführung in die Spieleprogrammierung&#8221; ein Sidescrolling-Shooter im Western-Stil erschienen. Der Name: Scoundrel. 
Hier ein kurzer Trailer:

(Trailer in Full HD)
Mitgewirkt haben

Roland Beck
Tobias Lau
Remi Smirra
Claudius Hauser
Alexander Bach
Korbinian Schmid
Dominik Forstmaier
Daniel Jilg &#8592;ich gnihihi!

 ]]></description>
			<content:encoded><![CDATA[<p>Zusammen mit der Gruppe SCHMATZ GAMES ist im Praktikum &#8220;Einführung in die Spieleprogrammierung&#8221; ein Sidescrolling-Shooter im Western-Stil erschienen. Der Name: <em>Scoundrel</em>. <span id="more-421"></span></p>
<p>Hier ein kurzer Trailer:<br />
<object width="526" height="311"><param name="movie" value="http://www.youtube.com/v/1n1MzZY0JkQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1n1MzZY0JkQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="526" height="311"></embed></object></p>
<p>(<a href="http://www.youtube.com/watch?v=1n1MzZY0JkQ">Trailer in Full HD</a>)</p>
<p>Mitgewirkt haben</p>
<ul>
<li>Roland Beck</li>
<li>Tobias Lau</li>
<li>Remi Smirra</li>
<li>Claudius Hauser</li>
<li>Alexander Bach</li>
<li>Korbinian Schmid</li>
<li>Dominik Forstmaier</li>
<li>Daniel Jilg &larr;<em>ich gnihihi!</em></li>
</ul>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/wir-haben-ein-3d-minigame-erschaffen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Software: iMensa</title>
		<link>http://breakthesystem.org/2009/neue-software-imensa/</link>
		<comments>http://breakthesystem.org/2009/neue-software-imensa/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 13:13:49 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=413</guid>
		<description><![CDATA[Für Studenten der Uni Augsburg war es schon immer leicht, über das Internet den Speiseplan der Mensa abzufragen. Nur per iPhone war das bisher noch nicht so komfortabel, da die entsprechende Seite sich nicht besonders gut herunterskalieren lässt.
Deswegen stellt breakthesystem heute iMensa vor, eine Mini-Webanwendung für iPhone und iPod Touch, mit der Studenten der Augsburger [...]]]></description>
			<content:encoded><![CDATA[<p>Für Studenten der Uni Augsburg war es schon immer leicht, über das Internet den <a href="http://web.studentenwerk-augsburg.de/verpflegung/_uni-aktuelle-woche.php">Speiseplan der Mensa</a> abzufragen. Nur per iPhone war das bisher noch nicht so komfortabel, da die entsprechende Seite sich nicht besonders gut herunterskalieren lässt.<span id="more-413"></span></p>
<p>Deswegen stellt breakthesystem heute iMensa vor, eine Mini-Webanwendung für iPhone und iPod Touch, mit der Studenten der Augsburger Hochschulen einfach und komfortabel den Speiseplan für ihre Mensen abfragen können. </p>
<p>Um die Anwendung aufzurufen, besuchen Sie einfach die Adresse <a href="http://eat.breakthesystem.org/">eat.breakthesystem.org</a> mit ihrem Gerät. </p>
<p>Wenn Sie möchten, können Sie einen Link zu iMensa auf ihrem iPhone installieren, indem Sie die Seite aufrufen und dann den &#8220;+&#8221;-Button am unteren Bildschirmrand antippen.</p>
<p>iMensa holt sich die Speisepläne für die Augsburger Mensen in der Universitätsstraße, Friedberger Straße, Schillstraße, sowie die der Hochschulen in Neu-Ulm und Kempten.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/neue-software-imensa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to install Django on Mac OS X 10.6 Snow Leopard</title>
		<link>http://breakthesystem.org/2009/django-on-snow-leopard/</link>
		<comments>http://breakthesystem.org/2009/django-on-snow-leopard/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 13:09:02 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=377</guid>
		<description><![CDATA[So you got your brand spanking new Snow Leopard installed and now you want to do some Django development work on it, huh? Well, you&#8217;re in luck, because I&#8217;ve compiled this little tutorial for you. 
This blog post is partly based on Rob Hudson&#8217;s Installing Django on Leopard post, which has helped me a lot [...]]]></description>
			<content:encoded><![CDATA[<p>So you got your brand spanking new Snow Leopard installed and now you want to do some Django development work on it, huh? Well, you&#8217;re in luck, because I&#8217;ve compiled this little tutorial for you. <span id="more-377"></span></p>
<p>This blog post is partly based on Rob Hudson&#8217;s <a href="http://rob.cogit8.org/blog/2007/Nov/14/installing-django-leopard-mac-os-105/">Installing Django on Leopard</a> post, which has helped me a lot in the past. Thanks, Rob!</p>
<p>Also, if you need help installing other tools on your machine, Dan Benjamin of hivelogic.com has created tutorials for installing <a href="http://hivelogic.com/articles/compiling-mysql-on-snow-leopard/">MySQL</a>, <a href="http://hivelogic.com/articles/compiling-git-on-snow-leopard/">Git</a> and <a href="http://hivelogic.com/articles/compiling-mercurial-on-snow-leopard/">Mercurial</a>.<br />
<br/></p>
<h2>Prerequisites</h2>
<p>Luckily, Snow Leopard brings everything with it that you need: Subversion and Python 2.6 are already pre-installed with the new OSX. This is especially important because as of now, 3 days after the release of OS X 10.6, there is no working version of <a href="http://www.macports.org/">Macports</a> yet, which might otherwise help you install lots of command-line-tools for your mac.<br />
<br/></p>
<h2>Downloading Django</h2>
<p>First, open your Terminal.app. It should be in the Utilities folder, located inside the Applications folder.</p>
<p>To download Django 1.1 using Subversion, first <code>cd</code> into the Python site-packages directory by pasting the following line into the terminal window and pressing enter:</p>
<p><strike>
<pre>cd /usr/local/lib/python2.6/site-packages</pre>
<p></strike></p>
<p>A few commentators rightfully point out that the correct path to the site-packages should be:</p>
<pre>cd /Library/Python/2.6/site-packages/</pre>
<p>And then download Django into the site packages directory using Subversion:</p>
<pre>sudo svn co http://code.djangoproject.com/svn/django/tags/releases/1.1/django</pre>
<p><br/></p>
<h2>Installing Django</h2>
<p>Now Python should know about Django itself. You&#8217;ll only have to tell your system about the <code>django-admin.py</code> so that you can create new projects. To do this, create a symlink:</p>
<pre>sudo ln -s /Library/Python/2.6/site-packages/django/bin/django-admin.py /usr/bin/django-admin.py</pre>
<p><br/></p>
<h2>Cleaning Up</h2>
<p>On American Macs, this should already be enough. On many other system, you&#8217;ll need one more thing to avoid the dreaded <a href="http://www.google.com/search?q=ValueError:+unknown+locale:+UTF-8">unknown locale: UTF-8</a> error. </p>
<p>We simple need to set two environment variables to tell your system about your input language. In your terminal, type</p>
<pre>nano ~/.profile</pre>
<p>which will open your profile file. If there is already something in the file, ignore it. Add these two lines:</p>
<pre>export LC_ALL=de_DE.UTF-8
export LANG=de_DE.UTF-8</pre>
<p>As you can see, the locale is now <code>de_DE.UTF-8</code> which is the correct entry for me, as I live in Germany. For other countries, substitute &#8220;de_DE&#8221; by the correct code as taken from <a href="http://www.elxis.org/guides/developers-guides/elxis-languages-locales-list.html">this list of locales</a>. </p>
<p>Save the file by pressing <code>Ctrl+x</code>, then <code>y</code>. Finally, close your terminal and take a deep breath. You have just installed Django on Snow Leopard. Happy coding.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/django-on-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>A Brief History of the OPAWZM</title>
		<link>http://breakthesystem.org/2009/a-brief-history-of-the-opawzm/</link>
		<comments>http://breakthesystem.org/2009/a-brief-history-of-the-opawzm/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 08:18:19 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=359</guid>
		<description><![CDATA[Wir haben einen 3D-Kurzfilm erschaffen. Entstanden ist er im Rahmen der Vorlesung &#8220;Einführung in die 3D-Gestaltung&#8221; und das Thema war frei wählbar, solange es mit dem Schlüsselwort Gedankenaustausch zusammenhing. Ich zitiere meinen Kollegen, Korbi:

 Nach diversen Brainstorming-Sessions stand die Story: ein Dokumentarfilm über eine fiktive Unterart des Opossums (Didelphis Awesomniens, kurz: OPAWZM). Aber seht selbst!

Hier [...]]]></description>
			<content:encoded><![CDATA[<p>Wir haben einen 3D-Kurzfilm erschaffen. <span id="more-359"></span>Entstanden ist er im Rahmen der Vorlesung &#8220;Einführung in die 3D-Gestaltung&#8221; und das Thema war frei wählbar, solange es mit dem Schlüsselwort <em>Gedankenaustausch</em> zusammenhing. Ich zitiere meinen Kollegen, <a href="http://www.omsn.de/news/a-brief-history-of-the-opawzm/">Korbi</a>:</p>
<blockquote><p>
 Nach diversen Brainstorming-Sessions stand die Story: ein Dokumentarfilm über eine fiktive Unterart des Opossums (Didelphis Awesomniens, kurz: OPAWZM). Aber seht selbst!</p>
</blockquote>
<p>Hier die embedded <a href="http://vimeo.com/5696234">Vimeo-Version</a>. Wobei ich finde, dass jeder meiner Leser sich <a href="http://redir.ec/opawzm">hier die HD YouTube-Version</a> ansehen sollte!</p>
<p><object width="530" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5696234&#038;server=vimeo.com&#038;show_title=1&#038;show_byline=1&#038;show_portrait=0&#038;color=00ADEF&#038;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5696234&#038;server=vimeo.com&#038;show_title=1&#038;show_byline=1&#038;show_portrait=0&#038;color=00ADEF&#038;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="530" height="300"></embed></object></p>
<p>
An dieser Stelle mein Dank an meine Teamkollegen <a href="http://www.omsn.de/news/a-brief-history-of-the-opawzm/">Korbi</a> und <a href="http://twitter.com/DOMPTZNALDA">DOMPZN</a> für die großartige Zusammenarbeit.
</p>
<p>
Ich bin gespannt auf eure Meinung!</p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/a-brief-history-of-the-opawzm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Das Beratungszentrum</title>
		<link>http://breakthesystem.org/2009/das-beratungszentrum/</link>
		<comments>http://breakthesystem.org/2009/das-beratungszentrum/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 12:29:39 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Deutsch]]></category>

		<guid isPermaLink="false">http://breakthesystem.org/?p=353</guid>
		<description><![CDATA[Mal wieder was Neues in Sachen Design: Gerade ist die neue Webseite des Apple-Beratungszentrums der Uni Augsburg fertig geworden. Die Seite ist die Anlaufstelle für Studenten, die Probleme mit ihrer Apple-Hardware haben, den Mac-Computerraum der Uni besuchen wollen oder am speziellen Apple on Campus-Programm für die Universität Augsburg teilnehmen möchten.
Konzept, Design und Umsetzung sind dabei [...]]]></description>
			<content:encoded><![CDATA[<p>Mal wieder was Neues in Sachen Design: Gerade ist die neue Webseite des Apple-Beratungszentrums der Uni Augsburg fertig geworden. Die Seite ist die Anlaufstelle für Studenten, die Probleme mit ihrer Apple-Hardware haben, den Mac-Computerraum der Uni besuchen wollen oder am speziellen Apple on Campus-Programm für die Universität Augsburg teilnehmen möchten.<span id="more-353"></span></p>
<p>Konzept, Design und Umsetzung sind dabei komplett von breakthesystem übernommen worden.</p>
<p>Leider können wir diesmal nur <a href="http://breakthesystem.org/wp-content/uploads/2009/02/apple_bz_full.png">Screenshots</a> zeigen, da die Webseite momentan nur aus dem internen Netz der Universität erreichbar ist. Für Surfer im Netz der Uni Augsburg oder Studenten, die per VPN-Client von zuhause eingeloggt sind, ist die Seite unter <a href="http://mac.student.uni-augsburg.de/">http://mac.student.uni-augsburg.de/</a> erreichbar.</p>
<h2>Mehr, bitte</h2>
<p>Stay tuned und so: Einige meiner Uni-Projekte dieses Semesters sind schon vorbei, zum Beispiel meine Arbeit über <a href="http://breakthesystem.org/2009/distributed-version-control-fur-jedermann/">das DVCS Mercurial</a>. In den nächsten Wochen kommen die anderen auch noch zum Schluss, und die besten werde ich dann hier veröffentlichen. </p>
 ]]></content:encoded>
			<wfw:commentRss>http://breakthesystem.org/2009/das-beratungszentrum/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
