<?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>Tsurais Dev Blog</title>
	<atom:link href="http://blog.tsukiro.net/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.tsukiro.net</link>
	<description>Software engineering and game development</description>
	<lastBuildDate>Tue, 26 Jun 2012 15:19:59 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=Tsukiro_&amp;popout=1&amp;url=http%3A%2F%2Fblog.tsukiro.net%2F&amp;language=de_DE&amp;category=text&amp;title=Tsurais+Dev+Blog&amp;description=Software+engineering+and+game+development&amp;tags=blog" type="text/html" />
		<item>
		<title>Pyramid python web framework auf Uberspace installieren</title>
		<link>http://blog.tsukiro.net/?p=409</link>
		<comments>http://blog.tsukiro.net/?p=409#comments</comments>
		<pubDate>Tue, 26 Jun 2012 09:37:27 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Uberspace]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[pylon]]></category>
		<category><![CDATA[pyramid]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[uberspace]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=409</guid>
		<description><![CDATA[Pyramid ist ein sehr nettes open source python web Framework, dass sich durch Minimalistig und Verlässlichkeit auszeichnet. Folgend möchte ich euch zeigen wie man Pyramid auf dem Hoster Uberspace installiert und einrichtet. Installation cd ~ mkdir -p ~/bin ~/lib/python2.7 Bevor zusätzliche python Module installiert werden können, müssen erst noch zwei zusätzliche Verzeichnisse erstellt werden, falls <a href="http://blog.tsukiro.net/?p=409"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.pylonsproject.org/" target="_blank">Pyramid</a> ist ein sehr nettes open source <a href="http://www.python.org/" target="_blank">python</a> web Framework, dass sich durch Minimalistig und Verlässlichkeit auszeichnet. Folgend möchte ich euch zeigen wie man Pyramid auf dem Hoster Uberspace installiert und einrichtet.<br />
<span id="more-409"></span></p>
<h4>Installation</h4>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> ~<span style="color: #000000; font-weight: bold;">/</span>bin ~<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>python2.7</pre></td></tr></table></div>

<p style="text-align: justify;">Bevor zusätzliche python Module installiert werden können, müssen erst noch zwei zusätzliche Verzeichnisse erstellt werden, falls diese nicht bereits existieren.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">easy_install-<span style="color: #000000;">2.7</span> virtualenv
virtualenv <span style="color: #660033;">--no-site-packages</span> <span style="color: #c20cb9; font-weight: bold;">env</span></pre></td></tr></table></div>

<p style="text-align: justify;">Nun können wir das virtualenv Paket installieren und uns für Pyramid eine isolierte Umgebung erstellen. Der &#8211;no-site-packages Parameter ist zwar mittlerweile das Standardverhalten aber man weiß ja nie.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #c20cb9; font-weight: bold;">env</span>
bin<span style="color: #000000; font-weight: bold;">/</span>easy_install pyramid</pre></td></tr></table></div>

<p style="text-align: justify;">Als nächstes wechseln wir in unsere neue python Umgebung und installieren Pyramid selbst.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bin<span style="color: #000000; font-weight: bold;">/</span>easy_install flup</pre></td></tr></table></div>

<p style="text-align: justify;">Zum Schluss wird noch flup installiert, da es später für das fcgi Skript gebraucht wird.</p>
<h4>Pyramid Projekt erstellen</h4>
<p style="text-align: justify;">Es gibt mehrere Wege um ein Pyramid Projekt zu erstellen. Einer wäre es das ganze manuell von Hand zu schreiben. In den meisten Fällen ist es aber sinnvoller sich von Pyramid ein Template Projekt erstellen zu lassen. Wie das geht werde ich euch als nächstes zeigen.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">env</span>
bin<span style="color: #000000; font-weight: bold;">/</span>pcreate <span style="color: #660033;">-s</span> starter MyProject</pre></td></tr></table></div>

<p style="text-align: justify;">Innerhalb unserer selbst erstellten python Umgebung rufen wir den pcreate Befehl auf um ein Projekt namens MyProject mit dem &#8220;starter&#8221; Template zu erstellen.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> MyProject
..<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>python setup.py develop
..<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>python setup.py <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-q</span></pre></td></tr></table></div>

<p>Nun installieren wir unser Projekt im &#8216;development mode&#8217;. Dazu wechseln wir in das Projektverzeichnis und führen <code>setup.py develop</code> aus. Zum Schluss kann mit <code>setup.py test -q</code> noch ein unit test durchgeführt werden um zu prüfen ob alles seine Ordnung hat.<br /> Sollte kein Fehler aufgetreten sein ist das Projekt jetzt bereit für die Außenwelt erreichbar gemacht zu werden.</p>
<h4>Projekt erreichbar machen</h4>
<p style="text-align: justify;">Mittlerweile haben wir Pyramid erfolgreich installiert und ein Template Projekt erstellt. Aber leider ist es noch nicht über das Web erreichbar. Dafür schreiben wir als nächstes einen kleinen Wrapper der unsere python Anwendung startet.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>fcgi-bin
<span style="color: #c20cb9; font-weight: bold;">vim</span> MyProject
&nbsp;
<span style="color: #666666; font-style: italic;">##############################</span>
<span style="color: #666666; font-style: italic;">#!/home/USERNAME/env/bin/python</span>
import sys
&nbsp;
from paste.deploy import loadapp
from flup.server.fcgi_fork import WSGIServer
&nbsp;
myapp = <span style="color: #ff0000;">'/home/USERNAME/env/MyProject'</span>
&nbsp;
sys.path.insert<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0</span>, myapp<span style="color: #7a0874; font-weight: bold;">&#41;</span>
app = loadapp<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'config:'</span> + myapp + <span style="color: #ff0000;">'/production.ini'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> __name__ == <span style="color: #ff0000;">'__main__'</span>:
        WSGIServer<span style="color: #7a0874; font-weight: bold;">&#40;</span>app<span style="color: #7a0874; font-weight: bold;">&#41;</span>.run<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #666666; font-style: italic;">#############################</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> MyProject</pre></td></tr></table></div>

<p style="text-align: justify;">Ich werde an dieser Stelle nicht im Detail erklären was das fcgi Skript eigentlich macht. Das kann uns aber auch egal sein, da es ja bloß unser Pyramid Projekt starten soll.<br />
Zu beachtet ist aber, dass das Skript in ~/fcgi-bin liegt und optimalerweise den selben Namen wie euer Projekt hat damit es im Nachhinein leichter zu zuordnen ist.<br />
Im Skript sollte USERNAME logischerweise mit dem eigenen Uberspace username ersetzt und die Pfade gegebenenfalls angepasst werden, solltet ihr andere benutzt haben als ich. Nachdem ihr das Skript erstellt habt bekommt es noch entsprechende Zugriffsrechte damit man es auch problemlos ausführen kann.<br />
Damit ist euer Pyramid Projekt auch schon im Web unter http://USERNAME.SERVER.uberspace.de/fcgi-bin/MyProject.</p>
<p style="text-align: justify;">Zum Schluss kann man das Projekt noch mit einer Suddomain verbinden, damit man nicht jedes mal fcgi-bin in der URL stehen hat.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>virtual<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$USER</span><span style="color: #000000; font-weight: bold;">/</span>subdomain.domain.tld <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$_</span>
<span style="color: #c20cb9; font-weight: bold;">vim</span> .htaccess
&nbsp;
<span style="color: #666666; font-style: italic;">#############################</span>
RewriteEngine on
RewriteRule ^<span style="color: #7a0874; font-weight: bold;">&#40;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>$ <span style="color: #000000; font-weight: bold;">/</span>fcgi-bin<span style="color: #000000; font-weight: bold;">/</span>MyProject<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$1</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>QSA,L<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;">#############################</span></pre></td></tr></table></div>

<p style="text-align: justify;">Mit diesen zwei einfachen Schritten werden alle requests auf subdomain.domain.tld auf unser fcgi Skript umgeleitet, welches dann wiederum unser Pyramid Projekt aufruft.</p>
<h4>Schlusswort</h4>
<p style="text-align: justify;">Wenn alles glatt gelaufen ist solltet ihr nun Pyramid mit einem funktionierenden Template Projekt haben, dass dazu auch noch leicht aufzurufen ist.<br />
Bei jeglichen Problemen könnt ihr euch gerne jederzeit in den Kommentaren oder per Twitter an mich wenden. Feedback ist wie immer gerne gesehen.<br />
Ich hoffe dieses kleinen Tutorial konnte euch helfen. Viel Spaß mit Pyramid und bis zum nächsten mal.</p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=409&amp;md5=56512dcbd7e7da3c68eddfb9caf96060" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=409</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=Tsukiro_&amp;popout=1&amp;url=http%3A%2F%2Fblog.tsukiro.net%2F%3Fp%3D409&amp;language=de_DE&amp;category=text&amp;title=Pyramid+python+web+framework+auf+Uberspace+installieren&amp;description=Pyramid+ist+ein+sehr+nettes+open+source+python+web+Framework%2C+dass+sich+durch+Minimalistig+und+Verl%C3%A4sslichkeit+auszeichnet.+Folgend+m%C3%B6chte+ich+euch+zeigen+wie+man+Pyramid+auf+dem+Hoster+Uberspace+installiert...&amp;tags=framework%2Cpylon%2Cpyramid%2Cpython%2Ctutorial%2Cuberspace%2Cweb%2Cblog" type="text/html" />
	</item>
		<item>
		<title>QGL1 &#8211; OpenGL mit Qt: Grundgerüst</title>
		<link>http://blog.tsukiro.net/?p=322</link>
		<comments>http://blog.tsukiro.net/?p=322#comments</comments>
		<pubDate>Fri, 22 Jun 2012 09:41:51 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[c/c++]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[anfänger]]></category>
		<category><![CDATA[bare]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[beginner]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[grundgerüst]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[indie]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=322</guid>
		<description><![CDATA[In der QGL Tutorial Serie möchte ich euch mit diesem Post beginnend die Grundlagen von OpenGL unter Benutzung des Qt Frameworks näher bringen. Da dies ein Tutorial sein soll und kein Roman, werde ich nicht weiter darauf eingehen was genau OpenGL und Qt sind und worin ihre Vorteile liegen. Dafür könnt ihr euch gerne entsprechende <a href="http://blog.tsukiro.net/?p=322"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">In der QGL Tutorial Serie möchte ich euch mit diesem Post beginnend die Grundlagen von OpenGL unter Benutzung des Qt Frameworks näher bringen. <br />Da dies ein Tutorial sein soll und kein Roman, werde ich nicht weiter darauf eingehen was genau OpenGL und Qt sind und worin ihre Vorteile liegen. Dafür könnt ihr euch gerne entsprechende Wikipedia Artikel über <a href="https://de.wikipedia.org/wiki/Opengl" target="_blank">OpenGL </a>und <a href="https://de.wikipedia.org/wiki/Qt_%28Bibliothek%29" target="_blank">Qt</a> durchlesen. Kurz zusammengefasst könnte man sagen, dass wir möglichst offen und platformunabhängig arbeiten wollen. <br />Ziel dieses ersten Tutorials ist es ein OpenGL fähiges Fenster anzuzeigen und darauf ein farbiges Dreieck zu zeichnen. <span id="more-322"></span></p>
<h4>Die Qt Project Datei &#8211; qgl1.pro</h4>

<div class="wp_syntax"><table><tr><td class="code"><pre class="cpp-qt" style="font-family:monospace;">QT <span style="color: #006E28;">+=</span> opengl
TARGET <span style="color: #006E28;">=</span> qgl1
TEMPLATE <span style="color: #006E28;">=</span> app
SOURCES <span style="color: #006E28;">+=</span> main.<span style="color: #2B74C7;">cpp</span> \
    glwidget.<span style="color: #2B74C7;">cpp</span>
HEADERS  <span style="color: #006E28;">+=</span> \
    glwidget.<span style="color: #2B74C7;">h</span></pre></td></tr></table></div>

<p style="text-align: justify;">Qt hat ein eigenes Modul für OpenGL spezifische features wie z.b. das QGLWidget welches wir als Ausgabefenster benutzen werden. <br />Mit der Zeile <code>Qt += opengl</code> teilen wir Qt mit, dass wir das Modul laden und benutzen wollen. Sonst gibt es an der Projekt Datei nichts besonderes zu beachten.</p>
<h4>Der GLWidget Header &#8211; glwidget.h</h4>

<div class="wp_syntax"><table><tr><td class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #006E28;">#ifndef GLWIDGET_H</span>
<span style="color: #006E28;">#define GLWIDGET_H</span>
<span style="color: #006E28;">#include &lt;QGLWidget&gt;</span>
&nbsp;
<span style="color: #0057AE;">class</span> GLWidget <span style="color: #006E28;">:</span> <span style="color: #0057AE;">public</span> <span style="color: #22aadd;">QGLWidget</span>
<span style="color: #006E28;">&#123;</span>
    <span style="color: #0057AE;">Q_OBJECT</span>
<span style="color: #0057AE;">public</span><span style="color: #006E28;">:</span>
    <span style="color: #0057AE;">explicit</span> GLWidget<span style="color: #006E28;">&#40;</span><span style="color: #22aadd;">QWidget</span> <span style="color: #006E28;">*</span>parent <span style="color: #006E28;">=</span> <span style="color: #B08000;">0</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #0057AE;">protected</span><span style="color: #006E28;">:</span>
    <span style="color: #0057AE;">void</span> initializeGL<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    <span style="color: #0057AE;">void</span> resizeGL<span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">int</span> width<span style="color: #006E28;">,</span> <span style="color: #0057AE;">int</span> height<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    <span style="color: #0057AE;">void</span> paintGL<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">#endif // GLWIDGET_H</span></pre></td></tr></table></div>

<p style="text-align: justify;">Qt stellt mit QGLWidget ein sehr schönes Widget zu Verfügung, dass uns viel Arbeit bei der Initialisierung und Benutzung von OpenGL abnimmt.<br /> Wir includen <code>QGLWidget</code>, erstellen eine eigene Klasse und vererben ihr <code>QGLWidget</code>.</p>
<p style="text-align: justify;">Wie in der <a href="http://doc.qt.nokia.com/4.7-snapshot/qglwidget.html" target="_blank">Qt QGLWidget Dokumentation</a> zu sehen ist besitzt <code>QGLWidget</code> eine Reihe von virtueller Funktionen. Von diesen Funktionen interessieren uns im Moment nur drei, nämlich <code>initializeGL</code>, <code>resizeGL</code> und <code>paintGL</code>.</p>
<h4>Der GLWidget Code &#8211; glwidget.cpp</h4>

<div class="wp_syntax"><table><tr><td class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #006E28;">#include &quot;glwidget.h&quot;</span>
&nbsp;
<span style="color: #888888; font-style: italic;">/* konstruktor */</span>
GLWidget<span style="color: #006E28;">::</span><span style="color: #2B74C7;">GLWidget</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span> <span style="color: #006E28;">&#123;</span>
    setWindowTitle<span style="color: #006E28;">&#40;</span><span style="color: #BF0303;">&quot;QGL1&quot;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></td></tr></table></div>

<p style="text-align: justify;">Der Konstruktor sollte selbst erklärend sein. Wir setzen nur den Fenster Titel und das wars auch schon.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #888888; font-style: italic;">/* initialisierung von OpenGL */</span>
<span style="color: #0057AE;">void</span> GLWidget<span style="color: #006E28;">::</span><span style="color: #2B74C7;">initializeGL</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span> <span style="color: #006E28;">&#123;</span>
    <span style="color: #888888;">// schaltet smooth shading an</span>
    glShadeModel<span style="color: #006E28;">&#40;</span>GL_SMOOTH<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    <span style="color: #888888;">// stellt die Farbe zum clearen des bildschirms auf schwarz</span>
    glClearColor<span style="color: #006E28;">&#40;</span><span style="color:#800080;">0.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #888888;">// stellt die beste perspektiven korrektion ein</span>
    glHint<span style="color: #006E28;">&#40;</span>GL_PERSPECTIVE_CORRECTION_HINT<span style="color: #006E28;">,</span> GL_NICEST<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></td></tr></table></div>

<p style="text-align: justify;">Bitte entschuldigt sollten die Kommentare etwas schwer verständlich sein. Normalerweise kommentiere ich ausschließlich in Englisch und es ist etwas ungewohnt sie in Deutsch zu schreiben.</p>
<p style="text-align: justify;">Die Funktion <code>initializeGL()</code> wird immer vor dem ersten Aufruf von <code>paintGL()</code> oder <code>resizeGL()</code> und nach jeder GLContext Zuweisung aufgerufen. In ihr sollen alle Aufgaben zur Initialisierung von OpenGL ausgeführt werden. In unserem einfachen Beispiel müssen wir nur ein paar Einstellungen festlegen.</p>
<p style="text-align: justify;">Smooth shading sorgt dafür das die Farben von Polygonen sauber ineinander überlaufen. Desweiteren hat es Effekte auf Lighting Effekte die wir im Moment außen vor lassen.<br /> Die clear color wird dafür benutzt um am Anfang von jedem Frame die Zeichenfläche komplett zu übermalen. Sie dient uns also auch indirekt als Hintergrundfarbe.<br /> Als letztes teilen wir OpenGL noch mit, dass wir die beste Perspektiven Korrektion benutzen möchten. Das benötigt zwar etwas mehr Rechenaufwand liefert aber ein deutlich besseres Ergebnis.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #888888; font-style: italic;">/* fenster größe ändern */</span>
<span style="color: #0057AE;">void</span> GLWidget<span style="color: #006E28;">::</span><span style="color: #2B74C7;">resizeGL</span><span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">int</span> width<span style="color: #006E28;">,</span> <span style="color: #0057AE;">int</span> height<span style="color: #006E28;">&#41;</span> <span style="color: #006E28;">&#123;</span>
    <span style="color: #888888;">// aktuellen viewport resetten</span>
    glViewport<span style="color: #006E28;">&#40;</span><span style="color: #B08000;">0</span><span style="color: #006E28;">,</span> <span style="color: #B08000;">0</span><span style="color: #006E28;">,</span> width<span style="color: #006E28;">,</span> height<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #888888;">// projektions matrix auswählen</span>
    glMatrixMode<span style="color: #006E28;">&#40;</span>GL_PROJECTION<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    <span style="color: #888888;">// matrix resetten</span>
    glLoadIdentity<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #888888;">// orthogonale ansicht einstellen</span>
    glOrtho<span style="color: #006E28;">&#40;</span><span style="color: #B08000;">0</span><span style="color: #006E28;">,</span> width<span style="color: #006E28;">,</span> height<span style="color: #006E28;">,</span> <span style="color: #B08000;">0</span><span style="color: #006E28;">,</span> <span style="color: #006E28;">-</span><span style="color: #B08000;">1</span><span style="color: #006E28;">,</span> <span style="color: #B08000;">1</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #888888;">// modelview matrix auswählen</span>
    glMatrixMode<span style="color: #006E28;">&#40;</span>GL_MODELVIEW<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    <span style="color: #888888;">// matrix resetten</span>
    glLoadIdentity<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></td></tr></table></div>

<p style="text-align: justify;"><code>resizeGL()</code> wird nicht nur ausgeführt wenn sich die Größe des Widgets ändert, sondern auch einmal bei deren Erstellung. Dementsprechend kümmern wir uns hier um den Viewport, die Transformationsmatrizen usw.</p>
<p style="text-align: justify;">Als erstes wählen wir unsere Projektionsmatrix aus und setzen diese mit <code>glLoadIdentity()</code> auf die Einheitsmatrix zurück. Die folgende <code>glOrtho()</code> Funktion berechnet dann für uns eine parallele Projektionsmatrix.<br /> Mit der Parallelprojektion sorgen wir dafür, dass die Z Koordinate keinen Einfluss mehr auf die Größe hat, in der ein Objekt gezeichnet wird. Wir schalten OpenGL also in einen 2D Modus. Mit den Parametern der Funktion definieren wir die Dimensionen unseres View Volumes.</p>
<p style="text-align: justify;">OpenGL hat kein striktes Koordinatensystem wie man sie aus anderen Grafik librarys kennt, denn es unterteilt die Zeichenfläche nicht in Pixel sondern in Einheiten die man selbst definieren kann.<br /> Ich persöhnlich definiere es gerne aber trotzdem in der Pixelgröße des Ausgabefensters mit dem Ursprung in der oberen linken Ecke.<br /> In folgenden Tutorials werde ich nach und nach tiefer in die Materie vordringen. Vorallem wenn wir in 3D zeichnen werden wird es noch etwas komplizierter. Im Moment soll es uns aber nicht weiter stören.<br /> Zum Schluss resetten wir die Modelview Matrix und sind mit der Funktion fertig.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #888888; font-style: italic;">/* zeichnet die szene */</span>
<span style="color: #0057AE;">void</span> GLWidget<span style="color: #006E28;">::</span><span style="color: #2B74C7;">paintGL</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span> <span style="color: #006E28;">&#123;</span>
    <span style="color: #888888;">// setzt den color und depth buffer zurück</span>
    glClear<span style="color: #006E28;">&#40;</span>GL_COLOR_BUFFER_BIT <span style="color: #006E28;">|</span> GL_DEPTH_BUFFER_BIT<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    <span style="color: #888888;">// resettet die modelview matrix</span>
    glLoadIdentity<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    glBegin<span style="color: #006E28;">&#40;</span>GL_TRIANGLES<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
        <span style="color: #888888;">// oben</span>
        glColor3f<span style="color: #006E28;">&#40;</span><span style="color:#800080;">1.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
        glVertex2d<span style="color: #006E28;">&#40;</span>width<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">/</span><span style="color: #B08000;">2</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
        <span style="color: #888888;">// unten links</span>
        glColor3f<span style="color: #006E28;">&#40;</span><span style="color:#800080;">0.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">1.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
        glVertex2d<span style="color: #006E28;">&#40;</span><span style="color: #B08000;">0</span><span style="color: #006E28;">,</span> height<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
        <span style="color: #888888;">// unten rechts</span>
        glColor3f<span style="color: #006E28;">&#40;</span><span style="color:#800080;">0.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">0.0f</span><span style="color: #006E28;">,</span> <span style="color:#800080;">1.0f</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
        glVertex2d<span style="color: #006E28;">&#40;</span>width<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">,</span> height<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    glEnd<span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></td></tr></table></div>

<p style="text-align: justify;">Nun kommen wir endlich zum eigentlichen zeichnen unseres tollen Dreiecks. In jedem Frame rufen wir als erstes <code>glClear()</code> und <code>glLoadIdentity()</code> auf um die Buffer und Modelview Matrix zurück zu setzen.<br /><code>glBegin(GL_TRIANGLES)</code> teilt OpenGL mit, dass wir Dreiecke zeichnen möchten und <code>glEnd()</code> signalisiert am Ende logischerweise das wir fertig sind.<br /> Ein Dreieck besteht wie der Name schon sagt aus drei Ecken also müssen wir innerhalb des glBegin/glEnd Blocks 3 Vertices definieren.</p>
<p style="text-align: justify;">Ein Vertex (Plural: Vertices) ist ein Punkt im Raum und besteht aus zwei bis vier Koordinaten. Ein Weg um in OpenGL Vertices zu definieren ist die <code>glVertex</code> Funktion. Diese hat verschiedene Suffixe jenachdem wieviele Koordinaten von welchem Typ wir angeben wollen.<br /> In unserem Fall benutzen wir <code>glVertex2d()</code>, weil wir ein Vertex mit 2 Koordinaten (x, y) des Typs Interger definieren möchten.<br /> Um dem ganzen noch etwas Glanz zu verleihen verändern wir vor jedem Vertex die Zeichenfarbe um einen Verlauf zu bekommen.</p>
<h4>Die main Methode und das Schlusswort</h4>

<div class="wp_syntax"><table><tr><td class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #006E28;">#include &lt;QtGui/QApplication&gt;</span>
<span style="color: #006E28;">#include &quot;glwidget.h&quot;</span>
&nbsp;
<span style="color: #0057AE;">int</span> main<span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">int</span> argc<span style="color: #006E28;">,</span> <span style="color: #0057AE;">char</span> <span style="color: #006E28;">*</span>argv<span style="color: #006E28;">&#91;</span><span style="color: #006E28;">&#93;</span><span style="color: #006E28;">&#41;</span>
<span style="color: #006E28;">&#123;</span>
    <span style="color: #22aadd;">QApplication</span> a<span style="color: #006E28;">&#40;</span>argc<span style="color: #006E28;">,</span> argv<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    GLWidget window<span style="color: #006E28;">;</span>
    window<span style="color: #006E28;">-&gt;</span><span style="color: #2B74C7;">show</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #000000; font-weight:bold;">return</span> a.<span style="color: #2B74C7;">exec</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></td></tr></table></div>

<p style="text-align: justify;">Die main Methode sollte wohl von jedem ohne zusätzliche Worte zu verstehen sein. Ich habe sowieso schon wieder viel zu viel geschrieben.<br /> Hoffentlich kann euch dieses kleine Tutorial bei euren Anfängen mit OpenGL weiterhelfen.<br /> In den nächsten Tutorials wird es dann etwas interesanter und wir werden Themen wie 3D, Transparenz, Translation, Texturen usw behandeln. Außerdem werde ich euch andere Zeichentechniken zeigen, die um einiges besser sind als den hier aus Einfachheit benutzten Intermediate Mode. Dann hoffentlich auch knackiger mit weniger Worten <img src='http://i0.wp.com/blog.tsukiro.net/wp-includes/images/smilies/icon_wink.gif?w=620' alt=';)' class='wp-smiley' data-recalc-dims="1" /> </p>
<p style="text-align: justify;">Bitte korrigiert mich sollten sich Fehler eingeschlichen haben. Kommentare und Feedback sind immer erwünscht und bei Fragen könnt ihr mich auch gerne auf Twitter anschreiben. Anschließend verlinke ich euch noch den kompletten code als tar Archiv.</p>
<p>Bis zum nächsten mal</p>
<p><a title="QGL1 source code" href="http://blog.tsukiro.net/wp-content/uploads/2012/06/qgl1.tar.gz">Download source code</a></p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=322&amp;md5=3cecf91aaefc3919a16a2e5fabb97cb6" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=322</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=Tsukiro_&amp;popout=1&amp;url=http%3A%2F%2Fblog.tsukiro.net%2F%3Fp%3D322&amp;language=de_DE&amp;category=text&amp;title=QGL1+%26%238211%3B+OpenGL+mit+Qt%3A+Grundger%C3%BCst&amp;description=In+der+QGL+Tutorial+Serie+m%C3%B6chte+ich+euch+mit+diesem+Post+beginnend+die+Grundlagen+von+OpenGL+unter+Benutzung+des+Qt+Frameworks+n%C3%A4her+bringen.+Da+dies+ein+Tutorial+sein+soll+und...&amp;tags=anf%C3%A4nger%2Cbare%2Cbasic%2Cbeginner%2Cc%2Cc%2Fc%2B%2B%2Cdevelopment%2Cgamedev%2Cgrundger%C3%BCst%2Chello+world%2Cindie%2Copengl%2Cqt%2Csetup%2Ctutorial%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Meine Gedanken zu Geeks und Depressionen</title>
		<link>http://blog.tsukiro.net/?p=281</link>
		<comments>http://blog.tsukiro.net/?p=281#comments</comments>
		<pubDate>Mon, 21 May 2012 14:11:39 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Geekdom]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[depression]]></category>
		<category><![CDATA[depressionen]]></category>
		<category><![CDATA[geekdom]]></category>
		<category><![CDATA[geeks]]></category>
		<category><![CDATA[Jens Ohlig]]></category>
		<category><![CDATA[sigint]]></category>
		<category><![CDATA[sigint12]]></category>
		<category><![CDATA[Stephan Urbach]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=281</guid>
		<description><![CDATA[Heute wollte ich mal über ein sehr ernstes Thema schreiben. Wie viele von euch habe auch ich letztes Wochenende die sigint12 Konferenz in Köln verfolgt. Leider konnte ich aus Geldmangel nicht selbst da sein, nichtsdestotrotz habe ich aber alles per livestream mitverfolgt. Dabei ist mir vorallem ein großartiger Vortrag aufgefallen, nämlich &#8220;Geeks und Depressionen&#8221; von <a href="http://blog.tsukiro.net/?p=281"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Heute wollte ich mal über ein sehr ernstes Thema schreiben. Wie viele von euch habe auch ich letztes Wochenende die sigint12 Konferenz in Köln verfolgt. Leider konnte ich aus Geldmangel nicht selbst da sein, nichtsdestotrotz habe ich aber alles per livestream mitverfolgt.</p>
<p>Dabei ist mir vorallem ein großartiger Vortrag aufgefallen, nämlich &#8220;Geeks und Depressionen&#8221; von Stephan Urbach und Jens Ohlig. Dieses sehr wichtige Thema wird leider kaum erwähnt, denn man redet nicht gerne über solche unangenehmen Sachen und schweigt lieber darüber. Dabei grassiert es immer mehr in der Bevölkerung und das nicht nur bei uns Geeks.<br />Der immer stärker werdende Leistungsdruck und die hohe Erwartungshaltung in Beruf sowie auch im Privatleben zerren an den Nerven und können eine Person in ein tiefes Loch stürtzen aus dem man so leicht nicht wieder herauskommt kann. Dabei erkennt die Umwelt viel zu selten wenn ein Mitmensch mit solchen Problemen zu kämpfen hat und tragischerweise kommt es so immer wieder zu Selbstmorden von großartigen Personen. Aus gegebenen Anlass möchte ich folgend meine eigenen Gedanken zu diesem Thema offenlegen.<span id="more-281"></span></p>
<p>Es gibt viele Gründe wieso man unter Depressionen leiden kann, zum Teil sind diese der betroffenen Person nicht mals selbst bewusst. Es ist unglaublich wichtig, dass wir auf unsere Mitmenschen achten und Zeichen von Depressionen erkennen und ihnen unsere Hilfe anbieten. <br />Dabei sind Freunde wie Herr Urbach in seinem Vortrag schon sagte <em>keine</em> Therapeuten. Wir können anderen eine helfende Hand reichen und sie stützen aber <em>nicht selbst therapieren</em>.<br />Dafür ist keiner von uns ausgebildet und im schlechtesten Fall verschlimmern wir nur die Situation für die betreffende Person.<br />Wir können ihnen aber helfen wieder in einen geregelten Alltag zu kommen. Mal zusammen an die frische Luft gehen, sich einfach unterhaltet und etwas unternehmen. <br />Nur lasst sie nicht mit ihren Problemen ganz alleine daheim sitzen.</p>
<p>Nun habe ich darüber geredet wie man aus der Sicht des Außenstehenden anderen hilft. Was ist aber wenn ich selbst Depressionen habe? Wie kann ich mir selbst helfen damit zurecht zukommen? <br />Nun, das beste Mittel ist wohl sich zu überwinden und zu einem Fachmann zu gehen. Therapeuten sind immerhin dazu ausgebildet Menschen mit solchen Problemen zu helfen.<br />Ich habe selbst mit gewissen Problemen zu kämpfen, die ich hier nicht weiter erläutern werde, aber aus eigener Erfahrung kann ich sagen, dass Techniken zur Entspannung z.b. sehr helfen.</p>
<p>Den Kopf für einen Moment zur Ruhe zu bringen und durchzuatmen kann sehr gut tun. Ein Freund empfiehlt zu diesem Zweck z.b. Yoga Stunden zu nehmen. Auch einfache körperliche Betätigung wie Sport, radfahren oder spazieren gehen können helfen. <br />Ich persöhnlich mache Zazen, dass sind Meditationen mit denen man alle Gedanken im Kopf zum schweigen bringen kann um für einen Moment absolute Stille und Ruhe zu haben. Vorallem bei einer immer länger werdenen ToDo Liste ist das sehr erleichternd und entspannend. Und nein das ist kein pseudo-religiöser Hokuspokus sondern einfache Techniken um den Geist zur Ruhe kommen zu lassen die auch Atheisten, wie ich selbst einer bin, benutzen können.<br />Natürlich ist das nicht unbedingt für jeden etwas aber ich denke da kann jeder für sich selbst den besten Weg aussuchen.<br />Desweitern kann man sich Meilensteine bei den zu erledigenden Aufgaben setzen und sich bei deren Erfüllung selbst mit etwas belohnen und sei es ein Bierchen zum Feierabend oder mal wieder ins Kino zu gehen.</p>
<p>Was ich dem sehr guten Vortrag von Herr Urbach und Herr Ohlig zum Schluss noch hinzufügen möchte ist der Hinweis, dass Depressionen auch oft mit anderen Problemen und Krankheiten verbunden sind. Stempelt Depressionen nicht sofort als &#8220;nur&#8221; Depressionen ab sondern geht zu einem Therapeuten und lasst ihn entscheiden was mit euch nicht stimmt.<br />Es gibt viele psychische Probleme die mit Depressionen eingehen wie z.b. Borderline. Vondaher bitte ich euch wirklich zu einem Experten zu gehen und euch nicht selbst diagnostizieren.</p>
<p>Sobald der Vortrag von der sigint online ist werde ich ihn nochmal verlinken. Für den Moment habe ich aber genug zu diesem Thema geschrieben. <br />Bei Anregungen und oder Kritik könnt ihr wie immer gerne einen Kommentar hinterlassen.</p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=281&amp;md5=07e18d7951febdf6e27bbaba407abb50" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=281</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=Tsukiro_&amp;popout=1&amp;url=http%3A%2F%2Fblog.tsukiro.net%2F%3Fp%3D281&amp;language=de_DE&amp;category=text&amp;title=Meine+Gedanken+zu+Geeks+und+Depressionen&amp;description=Heute+wollte+ich+mal+%C3%BCber+ein+sehr+ernstes+Thema+schreiben.+Wie+viele+von+euch+habe+auch+ich+letztes+Wochenende+die+sigint12+Konferenz+in+K%C3%B6ln+verfolgt.+Leider+konnte+ich+aus+Geldmangel...&amp;tags=depression%2Cdepressionen%2Cgeekdom%2Cgeeks%2CJens+Ohlig%2Csigint%2Csigint12%2CStephan+Urbach%2Cblog" type="text/html" />
	</item>
		<item>
		<title>ZNC IRC bouncer auf Uberspace einrichten</title>
		<link>http://blog.tsukiro.net/?p=232</link>
		<comments>http://blog.tsukiro.net/?p=232#comments</comments>
		<pubDate>Wed, 25 Apr 2012 13:33:41 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Uberspace]]></category>
		<category><![CDATA[bnc]]></category>
		<category><![CDATA[bouncer]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[relay]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[uberspace]]></category>
		<category><![CDATA[znc]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=232</guid>
		<description><![CDATA[Als glücklicher Ubernaut wollte ich mal ein Tutorial für meine Ubernauten Freunde schreiben.Darum möchte ich euch hier kurz zeigen wie man einen IRC bouncer auf Uberspace installiert. Ein bouncer vermittelt zwischen IRC Server und Client. Er kann dauerhaft mit einem IRC Server verbunden sein und z.B. dem Client verpasste Nachrichten beim nächsten login zukommen lassen.Im <a href="http://blog.tsukiro.net/?p=232"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Als glücklicher Ubernaut wollte ich mal ein Tutorial für meine Ubernauten Freunde schreiben.<br />Darum möchte ich euch hier kurz zeigen wie man einen IRC bouncer auf Uberspace installiert. Ein bouncer vermittelt zwischen IRC Server und Client. Er kann dauerhaft mit einem IRC Server verbunden sein und z.B. dem Client verpasste Nachrichten beim nächsten login zukommen lassen.<br />Im Internet sind viele verschiedene freie IRC bouncer verfügbar, aber in diesem Tutorial möchte ich mich auf <a title="znc auf github" href="https://github.com/znc" target="_blank">ZNC</a> beschränken.<span id="more-232"></span></p>
<h4>Installation</h4>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> bnc
<span style="color: #7a0874; font-weight: bold;">cd</span> bnc</pre></td></tr></table></div>

<p>Als erstes erstellen wir einen Ordner für den bouncer.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>znc.in<span style="color: #000000; font-weight: bold;">/</span>releases<span style="color: #000000; font-weight: bold;">/</span>znc-<span style="color: #000000;">0.206</span>.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzvf</span> znc<span style="color: #000000; font-weight: bold;">*</span>.<span style="color: #000000; font-weight: bold;">*</span>gz</pre></td></tr></table></div>

<p style="text-align: justify;">Nun laden wir die ZNC sources als tarball herunter und entpacken das ganze. Für den Fall, dass ihr eine andere Version heruntergeladen habt gebe ich den Namen beim entpacken mit * an.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> znc<span style="color: #000000; font-weight: bold;">*</span>
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>bnc</pre></td></tr></table></div>

<p style="text-align: justify;">Jetzt wechseln wir in das soeben entpackte Verzeichnis und rufen das configure script auf. Dabei muss aber darauf geachtet werden, mit dem prefix Parameter das Zielverzeichnis zu ändern. Der default Pfad ist nämlich /usr/local/ und dort haben wir keine Zugriffsrechte.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> znc<span style="color: #000000; font-weight: bold;">*</span></pre></td></tr></table></div>

<p style="text-align: justify;">Nun muss das ganze nur noch installiert werden und znc ist auf eurem Uberspace unter dem Pfad $HOME/bnc zu finden. Da wir die sources nicht mehr benötigen können wir diese mit dem letzten Befehl entfernen. Bitte achtet aber darauf, dass nichts anderes außer die sources und das tarball archiv mit znc anfangen denn sonst löscht ihr diese Daten auch.</p>
<h4>Konfiguration</h4>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>bnc<span style="color: #000000; font-weight: bold;">/</span>bin
.<span style="color: #000000; font-weight: bold;">/</span>znc <span style="color: #660033;">--makeconf</span></pre></td></tr></table></div>

<p style="text-align: justify;">Als erstes erstellen wir  eine Konfigurationsdatei indem wir znc mit dem Parameter makeconf aufrufen. Daraufhin wird ein Assistent ausgeführt der das conf file  für uns erstellt. Dieser ist eigentlich recht simpel vondaher werde ich nicht großartig ins Detail gehen.<br />Den Port solltet ihr &gt;1023 wählen und euch gut merken, denn über diesen port connected ihr dann mit username und passwort auf eurem bouncer. Von Haus aus sind diese Ports aber bei Uberspace blockiert. <br />Hier habt ihr zwei Möglichkeiten.<br />Ihr könnt den guten Jonas anschreiben und euch den Port freischalten lassen oder aber ihr erstellt einen Tunnel durch den ihr dann zu dem bouncer connecten könnt.</p>
<h4>Schlusswort</h4>
<p style="text-align: justify;">Damit ist der ZNC bouncer auch schon aufgesetzt und betriebsbereit. <br />Für weitere Einstellungen könnt ihr im Wiki von ZNC unter <a href="http://wiki.znc.in/ZNC" target="_blank">http://wiki.znc.in/ZNC</a> vorbeischauen, dort steht alles nötige.<br />Bitte schreibt mir solltet ihr Probleme mit der Installation oder einen Fehler entdeckt habt.</p>
<p style="text-align: justify;">Ich hoffe dieses kleine tut war hilfreich für euch.<br />Bis zum nächsten mal <img src='http://i2.wp.com/blog.tsukiro.net/wp-includes/images/smilies/icon_smile.gif?w=620' alt=':)' class='wp-smiley' data-recalc-dims="1" /> </p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=232&amp;md5=85edfec478032cfb031852f1109bbf0f" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=232</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=Tsukiro_&amp;popout=1&amp;url=http%3A%2F%2Fblog.tsukiro.net%2F%3Fp%3D232&amp;language=de_DE&amp;category=text&amp;title=ZNC+IRC+bouncer+auf+Uberspace+einrichten&amp;description=Als+gl%C3%BCcklicher+Ubernaut+wollte+ich+mal+ein+Tutorial+f%C3%BCr+meine+Ubernauten+Freunde+schreiben.Darum+m%C3%B6chte+ich+euch+hier+kurz+zeigen+wie+man+einen+IRC+bouncer+auf+Uberspace+installiert.+Ein+bouncer+vermittelt...&amp;tags=bnc%2Cbouncer%2Cchat%2Cinternet%2Circ%2Crelay%2Ctutorial%2Cuberspace%2Cznc%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Stecken bleiben</title>
		<link>http://blog.tsukiro.net/?p=194</link>
		<comments>http://blog.tsukiro.net/?p=194#comments</comments>
		<pubDate>Sun, 22 Apr 2012 13:41:53 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=194</guid>
		<description><![CDATA[Ich glaube jeder kennt diese Situation, man hat sich für den Tag eine Aufgabe oder ein festes Ziel genommen, bleibt aber stecken und schiebt es stattdessen vor sich her. Anstatt die Arbeit zu erledigen verschwendet man die Zeit mit Google, Twitter, Flashgames, oder für euch Exhibitionisten mit Facebook.Nun könnte man das als einfache Faulheit abtun <a href="http://blog.tsukiro.net/?p=194"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Ich glaube jeder kennt diese Situation, man hat sich für den Tag eine Aufgabe oder ein festes Ziel genommen, bleibt aber stecken und schiebt es stattdessen vor sich her. Anstatt die Arbeit zu erledigen verschwendet man die Zeit mit Google, Twitter, Flashgames, oder für euch Exhibitionisten mit Facebook.<br />Nun könnte man das als einfache Faulheit abtun und in so manchen Fällen trifft das wohl auch zu. Aber grade bei Entwicklern habe ich in Gesprächen mit Kollegen festegestellt, dass bei uns die Ursache oft ganz woanders liegt als bei bloser Faulheit.<span id="more-194"></span></p>
<p>Nun gibt es verschiedene Arten in denen man stecken bleiben könnte. Zum Beispiel weil man Verständnis Schwierigkeiten hat und die Aufgabenstellung erst garnicht versteht. Es könnte aber auch an einer externen Library die nicht richtig funktioniert liegen, dass wir in unserem Projekt nicht weiterkommen. Es gibt unendlich viele Faktoren wieso man in seiner Arbeiten stecken bleiben könnte.</p>
<p style="text-align: justify;">Wenn ich an einem programmier Projekt arbeite versuche ich immer modular zu entwickeln und das Projekt möglichst gut zu unterteilen. Modular zu arbeiten ist, wie jedem klar sein sollte, besser als irgendwie alles aufeinmal zu machen und hoffen, dass es am Ende zusammen passt.<br />Trotz meinem modularen Ansatz muss ich zu einem gewissen Grad natürlich an das gesamte System denken und wie die Module am Ende ineinander greifen werden.<br />Genau hier beginnt der Teufelskreis.</p>
<p style="text-align: justify;">Halb unbewusst fangen meine Gedanken an von der eigentlichen Aufgabe abzuschweifen. So tauchen immer mehr Fragen auf: &#8220;Wie gestalte ich das Modul am besten? Gibt es ein passendes Design Pattern für diesen Zweck und wenn ja welches wäre am besten geeignet? Welcher Algorithmus ist besser um Problem xy zu lösen? In was für einer Datenstruktur speichere ich die Daten am besten? Und überhaupt, was wenn&#8230;..&#8221;<br />So überschlagen sich die Gedanken und man bleibt in einer der schlimmsten Arten stecken.</p>
<p><em>Man bleibt nämlich stecken, weil man Angst davor hat stecken zu bleiben.</em></p>
<p style="text-align: justify;">All diese unbewussten Fragen führen dazu, dass die eigentlich klare Aufgabe immer größer und komplexer scheint. Anstatt loszulegen und Sachen im Zweifelsfall einfach auszuprobieren quält man sich mit Fragen &#8220;was wenn&#8221; und verliert die Motivation mit der Arbeit anzufangen. Bevor man sich versieht ist man auf youtube oder twitter und verschwendet seine Zeit.</p>
<p style="text-align: justify;">Was kann man nun dagegen machen? Tja, das ist eine gute Frage. <br />Ich glaube es ist wichtig erst einmal den Grund zu erkennen wieso man überhaupt stecken geblieben ist. Wenn es daran liegt, dass man Angst hat während des programmierens irgendwann stecken zu bleiben, dann muss man sich &#8220;einfach&#8221; dazu zwingen trotzdem anzufangen. <br />Es muss einem klar sein, dass etwas auszuprobieren besser ist als sich den Kopf zu zerbrechen und doch zu keinem Ergebnis zu kommen.<br />Selbst wenn man zuerst einen falschen Ansatz nachgeht und ihn später wieder ändert. Dann ist man um Erfahrung reicher und auf dem richtigen Weg anstatt nur zu grübeln und am Ende überhaupt nichts zu machen.</p>
<p style="text-align: justify;">Versteht mich nicht falsch, es ist gut wenn man seine Programme plant und durchdenkt und ich will auch niemanden davon abraten. Aber wenn es dazu führt, dass man nicht mehr weiterkommt, dann ist es besser die Gedanken beiseite zu schieben und einfach anzufangen zu arbeiten.</p>
<p>In diesem Sinne wünsche ich euch viel Erfolg bei euren Projekten und bis zum nächsten mal.</p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=194&amp;md5=436e1e099228af0814f96c9a40c4a1d9" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=194</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=Tsukiro_&amp;popout=1&amp;url=http%3A%2F%2Fblog.tsukiro.net%2F%3Fp%3D194&amp;language=de_DE&amp;category=text&amp;title=Stecken+bleiben&amp;description=Ich+glaube+jeder+kennt+diese+Situation%2C+man+hat+sich+f%C3%BCr+den+Tag+eine+Aufgabe+oder+ein+festes+Ziel+genommen%2C+bleibt+aber+stecken+und+schiebt+es+stattdessen+vor+sich+her.+Anstatt...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Engine Architektur</title>
		<link>http://blog.tsukiro.net/?p=171</link>
		<comments>http://blog.tsukiro.net/?p=171#comments</comments>
		<pubDate>Fri, 06 Apr 2012 22:40:34 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Moon Engine]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[architektur]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[c/c++]]></category>
		<category><![CDATA[diagramm]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[komponenten]]></category>
		<category><![CDATA[laufzeit]]></category>
		<category><![CDATA[moon]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[spiel]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=171</guid>
		<description><![CDATA[Wie beginnt man am besten ein größeres Softwareprojekt zu planen? Richtig, mit einer SRS und passenden Diagramme. In diesem Zuge habe ich, angelehnt an eine Grafik aus dem wirklich großartige Buch Game Engine Architecture von Jason Gregory, welches ich jedem wärmstens empfehlen kann, ein Diagramm erstellt in dem die wichtigsten Runtime Komponenten aufgeführt werden. Wie <a href="http://blog.tsukiro.net/?p=171"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Wie beginnt man am besten ein größeres Softwareprojekt zu planen? Richtig, mit einer SRS und passenden Diagramme. In diesem Zuge habe ich, angelehnt an eine Grafik aus dem wirklich großartige Buch <em><a title="Game Engine Architecture" href="http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135/ref=sr_1_1?ie=UTF8&amp;qid=1332545274&amp;sr=8-1" target="_blank">Game Engine Architecture</a></em> von <em>Jason Gregory</em>, welches ich jedem wärmstens empfehlen kann, ein Diagramm erstellt in dem die wichtigsten Runtime Komponenten aufgeführt werden.<span id="more-171"></span></p>
<p style="text-align: justify;"><a href="http://i2.wp.com/blog.tsukiro.net/wp-content/uploads/2012/04/moon_engine_architecture.jpg" rel="lightbox[171]" title="moon_engine_architecture"><img class="aligncenter size-large wp-image-172" title="moon_engine_architecture" src="http://i2.wp.com/blog.tsukiro.net/wp-content/uploads/2012/04/moon_engine_architecture.jpg?resize=550%2C711" alt="Engine Runtime Components" data-recalc-dims="1" /></a>Wie ihr sehen könnt ist das nicht unbedingt wenig und es zeigt auch nicht alle Elemente, aber gibt dafür einen ganz guten Überblick. Einzelne Komponenten wie das Debug/Logging System, cross platform highres Timer, Memory Allocators usw sind bereits implementiert aber es ist noch viel Arbeit zu erledigen.<br />Demnächst werde ich näher auf einzelne Module eingehen und auch den Code zeigen. Also schaut doch ab und zu mal vorbei.</p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=171&amp;md5=ca936a695516034264621ecf71c832b2" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=171</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Befunge &#8211; source code in 2D</title>
		<link>http://blog.tsukiro.net/?p=138</link>
		<comments>http://blog.tsukiro.net/?p=138#comments</comments>
		<pubDate>Fri, 06 Apr 2012 21:04:13 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[befunge]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programmieren]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=138</guid>
		<description><![CDATA[Vor ein paar Tagen hat mich ein Kommilitone auf eine esoterische Programmiersprache namens Befunge aufmerksam gemacht. Seltsamerweise hatte ich vorher noch nie von ihr gehört, obwohl es Befunge schon seit 1993 gibt. Es handelt sich dabei um eine Stack orientierte Sprache mit einem 2D control flow. Die einzelnen Anweisungen werden in einem 80&#215;25 großem Rasten <a href="http://blog.tsukiro.net/?p=138"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Vor ein paar Tagen hat mich ein Kommilitone auf eine esoterische Programmiersprache namens Befunge aufmerksam gemacht. Seltsamerweise hatte ich vorher noch nie von ihr gehört, obwohl es Befunge schon seit 1993 gibt. <br />Es handelt sich dabei um eine Stack orientierte Sprache mit einem 2D control flow. Die einzelnen Anweisungen werden in einem 80&#215;25 großem Rasten eingefügt. Mittels Pfeil Operanden und Bedingungen kann der Fluss des Programmes beliebig innerhalb dieses Rasters umgelenkt werden.<span id="more-138"></span></p>
<p style="text-align: justify;">Eine weitere Interessante Eigenschaft stellen die p und g Instruktionen dar, mit denen man den Code während der runtime verändern kann. Vondaher kann man sehr intressante Algorithmen schreiben die am Ende sogut wie garnicht mehr nachvollziehbar sind.</p>
<p style="text-align: justify;">Chris Pressey hat Befunge erfunden um eine möglichst schwer zu compilierende Programmiersprache zu definieren. Soweit ich weiß, gibt es auch keinen richtigen Befunge Compiler der ordentlich funktioniert.<br />Zum Schluss noch ein kleines Beispiel Programm, Hello World Extended von <a href="https://de.wikipedia.org/wiki/Befunge#Hello_World_Extended">Wikipedia</a>.</p>
<pre>91+70pv</pre>
<pre>v p173&lt;        v  &lt; </pre>
<pre>&gt;"!dlroW olleH"&gt;,:|</pre>
<pre>     v:-1g17      &lt;</pre>
<pre>^ p17_$70g,v</pre>
<pre>^_ #&amp;@#p173&lt;</pre>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=138&amp;md5=c0bfe8b55838784f7909a94d00524913" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=138</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Space Cam</title>
		<link>http://blog.tsukiro.net/?p=111</link>
		<comments>http://blog.tsukiro.net/?p=111#comments</comments>
		<pubDate>Wed, 04 Apr 2012 19:15:37 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Experimente]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[exwerk]]></category>
		<category><![CDATA[kamera]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[wetterballon]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=111</guid>
		<description><![CDATA[Als Student hat man teilweise nette Vorteile. Wie in meinem Fall z.b. das studentische Experimentierwerk oder kurz eXwerk. Dort können Studenten Geld von der Uni beantragen und damit Ideen und Projekte zu realisieren und sich auszuprobieren. Sei es nun handwerkschaftlich oder elektronisch wie z.b. etwas mit µControllern zu basteln. In diesem Rahmen haben ein Kommilitonen <a href="http://blog.tsukiro.net/?p=111"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Als Student hat man teilweise nette Vorteile. Wie in <a href="http://i0.wp.com/blog.tsukiro.net/wp-content/uploads/2012/04/512px-Comparison_satellite_navigation_orbits.svg_1.png" rel="lightbox[111]" title="Umlaufbahnen der Erde"><img class="alignright  wp-image-114" title="Umlaufbahnen der Erde" src="http://i0.wp.com/blog.tsukiro.net/wp-content/uploads/2012/04/512px-Comparison_satellite_navigation_orbits.svg_1.png?resize=200%2C200" alt="" data-recalc-dims="1" /></a><br />meinem Fall z.b. das studentische Experimentierwerk oder kurz eXwerk. Dort können Studenten Geld von der Uni beantragen und damit Ideen und Projekte zu realisieren und sich auszuprobieren. Sei es nun handwerkschaftlich oder elektronisch wie z.b. etwas mit µControllern zu basteln. In diesem Rahmen haben ein Kommilitonen und ich das Projekt <em>Space Cam</em> beantragt und genehmigt bekommen.<br />Dabei handelt es sich um einen Wetterballon, der eine Nutzlast bestehend aus Kameras und einem halben Dutzend Messgeräten in die Stratosphäre auf eine Höhe von ca 25km bringen wird. Das ist zwar nichtmals annähernd das Weltall, aber so klingt der Projektname einfach aufregender <img src='http://i0.wp.com/blog.tsukiro.net/wp-includes/images/smilies/icon_wink.gif?w=620' alt=';)' class='wp-smiley' data-recalc-dims="1" /> <span id="more-111"></span></p>
<p style="text-align: justify;">Das Bild am Rand sollte verdeutlichen wie wenig 25km in Wirklichkeit sind im Vergleich zu einer stabilen Umlaufbahn unseres Planetens. Dennoch ist es schon garnicht mal so wenig. Hoch genug, dass man die Erdkrümmung gut erkennen kann und sich schon fast wie im Weltall fühlt <img src='http://i2.wp.com/blog.tsukiro.net/wp-includes/images/smilies/icon_smile.gif?w=620' alt=':)' class='wp-smiley' data-recalc-dims="1" /> <br />Natürlich wollen wir nicht auf gut Glück etwas hochfliegen lassen und hoffen, dass alles heil wieder zurück auf den Boden kommt, sondern führen vorher wissenschaftliche Tests durch. Denn es gibt in solchen Höhen mehr Probleme als man zuerst denkt. Die Temperaturen betragen ca -65c° und in so einer Kälte funktionieren viele normale Batterien z.b. erst garnicht mehr und die gesamte Stromversorgung würde zusammenbrechen.<br />Mit der Nutzlast wollen wir 2 HD Kameras, 5 LD Kameras, mehreren Temperatur-, Feuchtigkeits- und Luftdruck-/Höhenmesser sowie einen Strahlungsmesser auf die Reise schicken. Per Funk werden die Messdaten mit den aktuellen GPS Koordinaten zurück zum Boden gesandt.</p>
<p style="text-align: justify;">Innerhalb der nächsten Wochen werden die ersten Prototypen erstellt und getestet. Ich werde während der Arbeiten immer wieder Updates schreiben und euch auf dem laufenden halten. Falls jemand von euch mal selbst einen Wetterballon starten lassen möchte und etwas Starthilfe braucht kann er oder sie sich gerne bei mir melden. Denn es gibt vorher viel zu Regeln, wie z.b. eine Starterlaubnis der Deutschen Flugsicherung und Versicherungen etc pp.</p>
<p style="text-align: justify;">Wie üblich ist Feedback immer gerne gesehen</p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=111&amp;md5=18c8b59161cf7fcf8d30acc1d1824ff1" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=111</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Living World &amp; Moon Engine</title>
		<link>http://blog.tsukiro.net/?p=97</link>
		<comments>http://blog.tsukiro.net/?p=97#comments</comments>
		<pubDate>Wed, 04 Apr 2012 14:44:28 +0000</pubDate>
		<dc:creator>Tsurai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Living World]]></category>
		<category><![CDATA[Moon Engine]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[c/c++]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[indie]]></category>
		<category><![CDATA[living]]></category>
		<category><![CDATA[moon]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[spiel]]></category>
		<category><![CDATA[world]]></category>

		<guid isPermaLink="false">http://blog.tsukiro.net/?p=97</guid>
		<description><![CDATA[In den ersten paar Blog Einträgen möchte ich euch erstmal von meinen aktuell laufenden Software Projekte berichten, bzw euch einen groben Überblick geben. Den Anfang machen Living World und Moon Engine. Ich beschäftige mich in meiner Freizeit, wie so viele andere auch, gerne ab und zu mit Computerspielen. Als Programmierer habe ich schnell den Wunsch <a href="http://blog.tsukiro.net/?p=97"> read more <span class="meta-nav">&#187;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">In den ersten paar Blog Einträgen möchte ich euch erstmal von meinen aktuell laufenden Software Projekte berichten, bzw euch einen groben Überblick geben.</p>
<p style="text-align: justify;">Den Anfang machen <em>Living World</em> und <em>Moon Engine. </em>Ich beschäftige mich in meiner Freizeit, wie so viele andere auch, gerne ab und zu mit Computerspielen. Als Programmierer habe ich schnell den Wunsch verspürt irgendwann einmal selbst ein Spiel zu designen, planen und schließlich zu realisieren. <span id="more-97"></span><br />Man muss sich natürlich klar machen, dass ein Spiel ein unglaublich großes Softwareprojekt ist und es sehr viel Arbeit bedeutet. Ein Programmierer sollte seine Grenzen kennen und sich von unrealistischen Zielen trennen, vorallem wenn er es alleine oder in einem kleinen Team umsetzen will.</p>
<p style="text-align: justify;"><em>Living World</em> ist der Projektname eines 2D Action RPG nach Vorbildern wie Secret of Mana oder Bastion. Der 2D Grafikstil wurde gewählt, weil ich finde, dass es einen gewissen Charm hat und weil es um einiges weniger Arbeit bedeutet als alles in 3D umzusetzen. Man kann erstaunliche Resultate erziehen, wenn man eine 2D Sicht mit modernen Techniken verbindet. Ich werde an dieser Stelle noch keine Details zum eigentlichen Gameplay, der Story oder den Features verraten. Diese Informationen werde ich zusammen mit den Entwicklungsfortschritt nach und nach vorstellen. Last mir euch aber sagen, dass es teilweise sehr erfrischende und dynamische Fähigkeiten besitzt, die man so ehr selten sieht. Natürlich behauptet so etwas jeder von seinem Produkt, aber ihr werdet es am Ende ja selbst sehen können <img src='http://i2.wp.com/blog.tsukiro.net/wp-includes/images/smilies/icon_smile.gif?w=620' alt=':)' class='wp-smiley' data-recalc-dims="1" /> </p>
<p style="text-align: justify;">Das zweite Projekte, dass ich euch vorstellen möchte ist eng mit <em>Living World</em> verbunden. Es handelt sich um eine sehr kleine und simple 2D Game Engine, die ich <em>Moon Engine</em> genannt habe.<br />Schon in den Anfängen meiner Arbeit an <em>Living World</em> habe ich festgestellt, dass ich erst einmal sehr grundlegende Systeme schaffen muss, auf denen ich dann letztendlich aufbauen kann. Da ist mir die Idee gekommen, dass ich auch direkt eine eigene simple Game Engine schreiben kann.<br />Aber wieso sollte man sich die Mühe machen und eine eigene Engine schreiben wenn es doch so viele viel bessere und optimiertere Engines gibt die man frei benutzen kann.<br />Naja, ganz einfach weil ich es kann. Vorallem geht es mir darum zu lernen wie solche Engines aufgebaut sind und wie sie funktionieren. Das kann man am besten indem man selbst eine erstellt. Ich finde, dass sich die Erfahrungen und das Wissen was man sich dabei aneignet den Aufwand auf jeden fall rechtfertigen.</p>
<p style="text-align: justify;">Beide Projekte sind sehr ambitioniert und groß. Ich mache mir keinerlei Illusionen, dass die Resultate großartig seien werden und mir eventuell sogar Geld in die Tasche spülen. Darum geht es mir auch garnicht. Ich möchte einfach nur etwas neues lernen und meine Erfahrungen mit anderen teilen.<br />Ich hoffe, dass manche von euch an diesen Themen Interesse haben und mehr darüber lesen möchten. Sollte dies so sein könnt ihr natürlich gerne Kommentare hinterlassen. <br />Ich freue mich immer über jegliches Feedback.</p>
<p style="text-align: justify;">Puh, jetzt wurde es doch etwas mehr Text als beabsichtigt und es soll für den Moment auch reichen.<br />Bis zum nächsten mal.</p>
 <p><a href="http://blog.tsukiro.net/?flattrss_redirect&amp;id=97&amp;md5=e987ae3b3858717d546ed1e15f6680ff" title="Flattr" target="_blank"><img src="http://blog.tsukiro.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tsukiro.net/?feed=rss2&#038;p=97</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
