<?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>Steffens Noteblog &#187; Coding</title>
	<atom:link href="http://www.steffenvogel.de/category/software/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.steffenvogel.de</link>
	<description>technology, electronics, music, coding and more</description>
	<lastBuildDate>Sat, 30 Jul 2011 18:08:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>github Migration</title>
		<link>http://www.steffenvogel.de/2011/07/30/github-migration/</link>
		<comments>http://www.steffenvogel.de/2011/07/30/github-migration/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 18:08:09 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Umzug]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1506</guid>
		<description><![CDATA[Heute habe ich meine 27 git Repositories auf github umgezogen. Ich habe mich entschlossen sie so einer größeren Öffentlichkeit zugänglich zu machen und als zusätzliches Backup auf meinem Server zu spiegeln. Seit kurzem hat github seine neue API v3 veröffentlicht. Auf dieser aufbauend habe ich ein PHP Script geschrieben, welches existierende Repositories einfach auf github [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2011/07/octocat_construction.gif"><img class="alignright size-thumbnail wp-image-1507" title="octocat_construction" src="http://static.steffenvogel.de/wp-content/uploads/2011/07/octocat_construction-150x150.gif" alt="" width="150" height="150" /></a>Heute habe ich meine 27 git Repositories auf <a href="https://github.com/stv0g">github</a> umgezogen. Ich habe mich entschlossen sie so einer größeren Öffentlichkeit zugänglich zu machen und als zusätzliches Backup auf <a href="http://web.git.0l.de">meinem Server</a> zu spiegeln.</p>
<p>Seit kurzem hat github seine <a href="https://github.com/blog/879-api-v3-190-methods-to-build-on">neue API v3</a> veröffentlicht. Auf dieser aufbauend habe ich ein <a href="https://0l.de/cgit/snippets.git/tree/php_scripts/github.php">PHP Script</a> geschrieben, welches existierende Repositories einfach auf github erstellt und hochläd:</p>
<ol>
<li>Das Script in das Wurzelverzeichnis aller Repositories ablegen</li>
<li>github Username und Passwort im Skript anpassen</li>
<li><code>php github.php</code></li>
</ol>
<p>Ein paar Features:</p>
<ul>
<li>Es wird automatisch ein entsprechende <em>github</em> Remote im Repository hinzugefügt</li>
<li>Alle in der Datei <em>gitweb.projects</em> gelisteten Repositories werden als öffentlich markiert</li>
<li>Befindet sich im Repository eine Datei <em>description</em> wird deren Inhalt übernommen</li>
<li>Per Exclude-Filter können bestimmte Repositories ausgeschlossen werden</li>
</ul>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2011/07/30/github-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RWTH uC Tetris</title>
		<link>http://www.steffenvogel.de/2011/07/16/rwth-uc-tetris/</link>
		<comments>http://www.steffenvogel.de/2011/07/16/rwth-uc-tetris/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 00:33:50 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[ATMega]]></category>
		<category><![CDATA[Atmel]]></category>
		<category><![CDATA[Mikrocontroller AG]]></category>
		<category><![CDATA[MMI]]></category>
		<category><![CDATA[RWTH Aachen]]></category>
		<category><![CDATA[Tetris]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1490</guid>
		<description><![CDATA[Neben der Informatik Vorlesung besuchte ich dieses Semester die Mikrocontroller AG. In dieser freiwilligen Veranstaltung lernten wir den aus der Vorlesung bekannten Mikrocontroller, ATMega zu benutzen. Zusammen mit meinen Gruppenmitgliedern Annika, Maiwand &#38; Christian bauten wir ein 8&#215;16 LED-Dot Matrix Display auf dem wir Tetris spielen konnten: Von der Uni haben wir dabei ein Mikrocontroller [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2011/07/tetris.png"><img class="alignright size-thumbnail wp-image-1494" title="tetris" src="http://static.steffenvogel.de/wp-content/uploads/2011/07/tetris-e1310776859628-150x128.png" alt="" width="150" height="128" /></a>Neben der Informatik Vorlesung besuchte ich dieses Semester die Mikrocontroller AG. In dieser freiwilligen Veranstaltung lernten wir den aus der Vorlesung bekannten Mikrocontroller, ATMega zu benutzen.</p>
<p>Zusammen mit meinen Gruppenmitgliedern Annika, Maiwand &amp; Christian bauten wir ein 8&#215;16 LED-Dot Matrix Display auf dem wir Tetris spielen konnten:</p>
<p><a href="http://www.steffenvogel.de/2011/07/16/rwth-uc-tetris/"><em>Click here to view the embedded video.</em></a></p>
<p>Von der Uni haben wir dabei ein Mikrocontroller Board als Leihgabe bekommen. Das ergänzten wir durch das selbst gelayoutete Display und einen umgebautes SNES Gamepad.</p>
<p>Wir haben dabei darauf geachtet durch geschicktes Hardware Layout die Programmierung zu vereinfachen. So haben wir die normalen 10 Blöcken pro Zeile auf 8 reduziert, um unser komplettes Spielfeld in einem  Integer-Array (<em>uint8_t board[16]</em>) speichern zu können. Vieles lies sich so recht realisieren:</p>
<ul>
<li>Stein verschieben: Logical Shift Left/Right (<em>board[line] &lt;&lt;= 1</em>)</li>
<li>volle Zeilen erkennen: <em>board[line] == 255</em></li>
</ul>
<p>Während der letzten Vorlesung bekamen wir die Gelegenheit das Projekt unseren Kommilitionen und Prof. Roßmann vorzustellen.</p>
<p><a href="http://www.steffenvogel.de/2011/07/16/rwth-uc-tetris/"><em>Click here to view the embedded video.</em></a></p>
<p>Der Sourcecode und die Eagle-Dateien der Displayplatine sind im git <strong><a href="http://web.git.0l.de/rwth-uc-tetris.git">verfügbar</a></strong>.</p>
<p><a href="http://static.steffenvogel.de/wp-content/uploads/2011/07/tetris_layout-e1311283012953.png"><img class="aligncenter size-full wp-image-1503" title="tetris_layout" src="http://static.steffenvogel.de/wp-content/uploads/2011/07/tetris_layout-e1311283012953.png" alt="" width="534" height="263" /></a><a href="http://static.steffenvogel.de/wp-content/uploads/2011/07/tetris_layout.png"><br />
</a></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2011/07/16/rwth-uc-tetris/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>transcode</title>
		<link>http://www.steffenvogel.de/2011/07/16/transcode/</link>
		<comments>http://www.steffenvogel.de/2011/07/16/transcode/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 00:20:07 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Assembler]]></category>
		<category><![CDATA[avr-gcc]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[MMI]]></category>
		<category><![CDATA[RWTH]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1377</guid>
		<description><![CDATA[Ich sitze im Zug nach Hause. Komme von der letzten Vorlesung des 2. Semesters: Informatik. Eigentlich bin ich auf dem Weg in die Semester-&#8221;Ferien&#8221;, ständen da nicht für den nächsten Monat noch 4 Klausuren in meinem Kalender Informatik, Grundlagen des Digitalrechners. Klingt eigentlich recht trocken. Trotzdem ist es klar mein Favorit unter den Fächern dieses [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2011/07/assembler.png"><img class="alignright size-thumbnail wp-image-1482" title="assembler" src="http://static.steffenvogel.de/wp-content/uploads/2011/07/assembler-150x150.png" alt="" width="150" height="150" /></a>Ich sitze im Zug nach Hause. Komme von der letzten Vorlesung des 2. Semesters: Informatik. Eigentlich bin ich auf dem Weg in die Semester-&#8221;Ferien&#8221;, ständen da nicht für den nächsten Monat noch 4 Klausuren in meinem Kalender <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Informatik, Grundlagen des Digitalrechners. Klingt eigentlich recht trocken. Trotzdem ist es klar mein Favorit unter den Fächern dieses Semesters.<br />
Als Ergänzung zur Vorlesung richtete unser Professor einen kleinen Wettbewerb aus.<br />
Mein Beitrag zum <em>Students Englightment Award</em> ist ein Compiler Frontend für den GNU Compiler der Atmel AVRs.</p>
<p>Teil der Vorlesung war die Einführung des Mikrocontrollers ATMega8 von Atmel und dessen Programmierung mit Assembler. Dabei lernten wir zuerst die Schaltungstechnischen Grundlagen und die Minimierung von Schaltnetzen. Anschließend sind wir auf den Aufbau der Zentralen Recheneinheit eingegangen (Steuerwerk, ALU etc..).</p>
<p><strong><em><a title="http://t0.0l.de/transcode" href="http://t0.0l.de/transcode" rel="nofollow">transcode</a></em></strong> kompiliert/assembliert ANSI C und Assembler in Maschinencode und umgekehrt. Dabei wird mit Hilfe von Debugging Informationen ein Bezug zwischen Zeilen im C-Code und den Mnemonics hergestellt. Durch Auswählen von Zeilen werden Bezüge direkt durch Hervorhebungen dargestellt. Für die Darstellung des Maschinencodes lässt sich zwischen binär, dezimal &amp; hexadezimaler Form wählen.</p>
<p><a href="http://static.steffenvogel.de/wp-content/uploads/2011/07/schaltnetz-e1310774501908.png"><img class="aligncenter size-full wp-image-1484" title="schaltnetz" src="http://static.steffenvogel.de/wp-content/uploads/2011/07/schaltnetz-e1310774501908.png" alt="" width="531" height="134" /></a>Ziel des Tools ist es die Arbeitsweise des Compilers und dessen Optimierungen tiefer zu verstehen. <a href="http://t0.0l.de/transcode/"><em>transcode</em></a> ist im Rahmen der Vorlesung Grundlagen der Informatik 2 von Prof. Roßmann als Beitrag für den Fellow Student Enlightment Award entstanden.</p>
<p>Zum Tool gehts <strong><a href="http://t0.0l.de/transcode/">hier</a></strong>.</p>
<p>Der Sourcecode ist wie immer im git <strong><a href="http://web.git.0l.de/transcode.git/">verfügbar</a></strong>.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2011/07/16/transcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MantisBT SourceIntegration with GitHub</title>
		<link>http://www.steffenvogel.de/2011/03/02/mantisbt-sourceintegration-with-github/</link>
		<comments>http://www.steffenvogel.de/2011/03/02/mantisbt-sourceintegration-with-github/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 17:33:23 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[BugTracker]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Mantis]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1328</guid>
		<description><![CDATA[leetcode.net has written an excellent GitHub integration plugin for the Mantis BugTracker. It allows you to reference issues by their #id in your commit message. You can close an issue simple by adding &#8220;fixed #35&#8243; in your git commit message. Unfortunatly there is only poor documentation for the GitHub integration. I also had some problems [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://leetcode.net/blog/2009/01/integrating-git-svn-with-mantisbt/">leetcode.net</a> <a href="http://git.mantisforge.org/w/source-integration.git">has written</a> an excellent GitHub integration plugin for the <a href="http://www.mantisbt.org/">Mantis BugTracker</a>. It allows you to reference issues by their #id in your commit message. You can close an issue simple by adding &#8220;fixed #35&#8243; in your git commit message.</p>
<div id="attachment_1335" class="wp-caption aligncenter" style="width: 510px"><a href="http://static.steffenvogel.de/wp-content/uploads/2011/03/source_integration-e1299086699183.png"><img class="size-full wp-image-1335" title="source_integration" src="http://static.steffenvogel.de/wp-content/uploads/2011/03/source_integration-e1299086699183.png" alt="" width="500" height="223" /></a><p class="wp-caption-text">Verknüpfung des Bugtracker Eintrags mit dem GitHub Commit</p></div>
<p>Unfortunatly there is only poor documentation for the GitHub integration. I also had some problems with the &#8220;MantisBT&#8221; post commit hook on the GitHub repository configuration. So, I did some code analysis and added a &#8220;Post-Receive-URL&#8221; to my GitHub repo:</p>
<p><code>http://&lt;server&gt;/&lt;path_to_mantis&gt;/plugin.php?page=Source/import&amp;id=&lt;repository_id&gt;</code></p>
<div id="attachment_1332" class="wp-caption aligncenter" style="width: 510px"><a href="http://static.steffenvogel.de/wp-content/uploads/2011/03/github_conf.png"><img class="size-full wp-image-1332" title="github_conf" src="http://static.steffenvogel.de/wp-content/uploads/2011/03/github_conf-e1299085997304.png" alt="" width="500" height="324" /></a><p class="wp-caption-text">GitHub Configuration</p></div>
<p>To allow remote imports of new commits, you have to set the following checkboxes and IP addresses in your MantisBT configuration.</p>
<div id="attachment_1333" class="wp-caption aligncenter" style="width: 510px"><a href="http://static.steffenvogel.de/wp-content/uploads/2011/03/mantis_conf.png"><img class="size-full wp-image-1333" title="mantis_conf" src="http://static.steffenvogel.de/wp-content/uploads/2011/03/mantis_conf-e1299085954883.png" alt="" width="500" height="195" /></a><p class="wp-caption-text">MantisBT Configuration</p></div>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2011/03/02/mantisbt-sourceintegration-with-github/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Schreibt mir eine SMS</title>
		<link>http://www.steffenvogel.de/2011/02/15/schreibt-mir-eine-sms/</link>
		<comments>http://www.steffenvogel.de/2011/02/15/schreibt-mir-eine-sms/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 17:46:22 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Gästebuch]]></category>
		<category><![CDATA[Kontakt]]></category>
		<category><![CDATA[kostenlos]]></category>
		<category><![CDATA[Sipgate]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1316</guid>
		<description><![CDATA[So, die zweite Klausur ist geschafft! Heute haben wir Grundgebiete 1 der E-Technik geschrieben :-/ nach 1,5 Stunden bin ich mal wieder mit gemischten Gefühlen aus dem Hörsaal gekommen. Dafür gab&#8217;s dann aber eine kleine Belohnung: ich habe MMET bestanden Nicht grandios, aber auch nicht ganz so knapp wie ich es erwartet hatte. Nach der [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2011/02/sms.jpg"><img class="alignright size-thumbnail wp-image-1317" title="sms" src="http://static.steffenvogel.de/wp-content/uploads/2011/02/sms-150x150.jpg" alt="" width="150" height="150" /></a>So, die zweite Klausur ist geschafft! Heute haben wir Grundgebiete 1 der E-Technik geschrieben :-/ nach 1,5 Stunden bin ich mal wieder mit gemischten Gefühlen aus dem Hörsaal gekommen. Dafür gab&#8217;s dann aber eine kleine Belohnung: ich habe MMET bestanden <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Nicht grandios, aber auch nicht ganz so knapp wie ich es erwartet hatte.</p>
<p>Nach der Klausur hab ich mich mal etwas von der Uni abgelenkt und ein kleines Skript geschrieben: Ihr könnt mich nun <strong>kostenlose SMS schicken</strong>. Benutzt dazu einfach die Textbox in der rechten Sidebar. Es ist quasi eine Art Shoutbox &amp; Gästebuch in einem. Eure Nachrichten werden aber nicht gespeichert, sondern direkt per SMS an mein Handy gesendet.</p>
<p>Das ganze läuft über meinen VoIp-Provider <a href="http://www.sipgate.de">Sipgate</a>, der seinen Kunden eine <a href="http://www.sipgate.de/api/">XML-RPC API</a> zu Verfügung stellt, um damit SMS &amp; Faxe zu versenden. Dazu habe ich dann ein kleines PHP-Skript geschrieben, welches ihr in meinm Git-Repository finden könnt:</p>
<p><strong>Hier gehts zum <a href="https://0l.de/cgit/snippets.git/tree/sms_contact">Code</a>.</strong></p>
<p>SMS zu versenden ist leider immer noch nicht kostenlos. Daher könnt ihr maximal alle 4 Stunden eine 160 Zeichen lange Nachricht versenden.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2011/02/15/schreibt-mir-eine-sms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>volkszaehler.org Zählerbox</title>
		<link>http://www.steffenvogel.de/2011/01/25/volkszaehler-org-zahlerbox/</link>
		<comments>http://www.steffenvogel.de/2011/01/25/volkszaehler-org-zahlerbox/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 08:22:40 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Erfassen]]></category>
		<category><![CDATA[Hutschiene]]></category>
		<category><![CDATA[Messen]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[S0]]></category>
		<category><![CDATA[Smart Meter]]></category>
		<category><![CDATA[Stromzähler]]></category>
		<category><![CDATA[Verbrauch]]></category>
		<category><![CDATA[volkszaehler.org]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1252</guid>
		<description><![CDATA[Das volkszaehler.org Projekt nähert sich mit großen Schritten seiner ersten stabilen Version und damit dem ersten Release. Ich möchte hier nur einen kurzen Überblick über den aktuellen Stand geben. Du kennst das Projekt noch gar nicht? Weiß nicht was Smartmeter sind? Da steigst du besser auf unsere Projekt Website ein! Für die Entwicklung am Projekt [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2011/01/DSC00364.jpg"><img class="alignright size-thumbnail wp-image-1256" title="DSC00364" src="http://static.steffenvogel.de/wp-content/uploads/2011/01/DSC00364-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://static.steffenvogel.de/wp-content/uploads/2011/01/favicon.png"><img class="size-thumbnail wp-image-1262 alignleft" title="volkszaehler.org Logo" src="http://static.steffenvogel.de/wp-content/uploads/2011/01/favicon-150x150.png" alt="" width="62" height="62" /></a> Das <a href="http://volkszaehler.org">volkszaehler.org Projekt</a> nähert sich mit großen Schritten seiner ersten stabilen Version und damit dem ersten Release.</p>
<p><strong>Ich möchte hier nur einen kurzen Überblick über den aktuellen Stand geben. Du kennst das Projekt noch gar nicht? Weiß nicht was Smartmeter sind? Da steigst du besser auf unsere <a href="http://volkszaehler.org">Projekt Website</a> ein!</strong></p>
<p>Für die Entwicklung am Projekt habe ich mir eine kleine Hutschienenbox gebaut. Sie eignet sich perfekt für den mobilen Einsatz und zum Testen neuer Firmware und Funktionen. Mal schnell den Verbrauch des eigenen Kühlschranks zu erfassen ist kein Problem. Derzeit ist mein Schreibtisch an die Box angeschlossen und liefert so aktuelle Daten für die <a href="http://volkszaehler.org/demo/frontend/?uuid=6836dd20-00d5-11e0-bab1-856ed5f959ae">Demo Installation</a> des Projektes.</p>
<p>Die Box enthält folgende Komponenten:</p>
<ul>
<li>~230V Eingang über Kaltgerätestecker (geerdet, max. 10 Ampere)</li>
<li>~230V Ausgang über Schukostecker (geerdet, max. 16 Ampere)</li>
<li>Sicherungsautomat (Ein-/Ausschalter)</li>
<li>B&amp;G E-Tech DRS-154D S0-Zähler (einphasig, 2000 Impulse/kWh)</li>
<li><a href="http://wiki.volkszaehler.org/hardware/controllers/s0_server">Udo&#8217;s S0-Server</a> (basierend auf ATMEL AVR&#8217;s &amp; <a href="http://ethersex.de">ethersex</a>, 10 Mbit/s Ethernet, TFTP Bootloader)</li>
<li>Knopf zum manuellen Triggern von Impulsen</li>
<li>externer Anschluss von Zählern</li>
</ul>
<h3>Aktueller Stand</h3>
<p>Der alte Prototyp wurde nun durch ein flexibleres und modulares System ersetzt. Praktisch jede Kombination von Sensoren, Zählern, Controllern und Frontends ist möglich. Hier sind keine Grenzen mehr gesetzt.</p>
<p>Du kannst das Projekt zum Erfassen des eigenen Strom-/Wasser-/Gasverbrauchs ebenso benutzen wie zur Abrechnung eines ganzen Studentenwohnheims.</p>
<p>Zur Visualisierung bist du nicht mehr an das Browser basierte Web-Frontend gebunden. Durch den modularen Aufbau können viele Frontends gleichzeitig verwendet werden: Smartphone, Laptop etc.. Gleiches gilt für die Sensoren/Zähler. Hier kannst du beliebig viele gleichzeitig auswerten. Sie müssen noch nicht einmal am gleichen Ort installiert sein.</p>
<p>So schwebt derzeit die Idee im Raum ein Sensornetzwerk von Geigerzählern zur verteilten Strahlunsmessung aufzubauen.</p>
<div id="attachment_1274" class="wp-caption aligncenter" style="width: 310px"><a href="http://static.steffenvogel.de/wp-content/uploads/2011/01/frontend_screenshot_2.png"><img class="size-medium wp-image-1274 " title="Screenshot des Frontends" src="http://static.steffenvogel.de/wp-content/uploads/2011/01/frontend_screenshot_2-300x228.png" alt="" width="300" height="228" /></a><p class="wp-caption-text">Screenshot des Frontends</p></div>
<div id="attachment_1258" class="wp-caption aligncenter" style="width: 310px"><a href="http://static.steffenvogel.de/wp-content/uploads/2011/01/DSC00370.jpg"><img class="size-medium wp-image-1258 " title="DSC00370" src="http://static.steffenvogel.de/wp-content/uploads/2011/01/DSC00370-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Die Zählerbox</p></div>
<h3>Ausblick</h3>
<p>Die Ideen sprudeln nur so aus unser heraus. Es ist ein Jammer, dass ich gerade nicht mehr Zeit in das Projekt invertieren kann. Aber mein Studium hält mich derzeit sehr in Atem. Nach den Klausuren geht es dann wieder etwas schneller weiter.</p>
<p>Unsere Agenda ist endlos:</p>
<ul>
<li>erste stablie Version veröffentlichen</li>
<li>Betriebsstundezähler unterstützen</li>
<li>weitere Controller, wie den Flukso und &#8220;offizielle&#8221; Smartmeter unterstützen</li>
<li>Radioaktivität messen</li>
<li>Visualisierung für Smartphones</li>
<li>Visualisierung über Moodlights</li>
<li>Installation vereinfachen</li>
</ul>
<p>Hast du weitere Ideen, Anregungen, möchtest etwas verbessern oder eigene Features hinzufügen? Dann bist du immer auf unsere <a href="https://volkszaehler.org/mailman/listinfo/volkszaehler-dev">Mailingliste</a> willkommen! Wir freuen uns über jeden fleißigen Helfer <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2011/01/25/volkszaehler-org-zahlerbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conway&#8217;s Game of Life</title>
		<link>http://www.steffenvogel.de/2010/12/01/conways-game-of-life/</link>
		<comments>http://www.steffenvogel.de/2010/12/01/conways-game-of-life/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 00:33:01 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[conway]]></category>
		<category><![CDATA[game of life]]></category>
		<category><![CDATA[libncurses]]></category>
		<category><![CDATA[RWTH]]></category>
		<category><![CDATA[spiel des lebens]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1213</guid>
		<description><![CDATA[Als Übung für meine Informatik Vorlesung an der RWTH Aachen habe ich diese C Implementation von Conways Game of Life geschrieben. Dieses simple &#8220;zero player&#8221; Game wird komplett im Terminal ausgeführt. Mit Mausunterstützung und Farben wurden mit libncurses realisiert. Den Quelltext findet ihr sammt Makefile in meinem Git-Repository. Hints &#38; Shortcuts &#8220;p&#8221; pausiert das Spiel [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/12/conway.png"><img class="alignright size-thumbnail wp-image-1214" title="conway" src="http://static.steffenvogel.de/wp-content/uploads/2010/12/conway-150x150.png" alt="" width="150" height="150" /></a>Als Übung für meine Informatik Vorlesung an der RWTH Aachen habe ich diese C Implementation von<a href="http://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens"> Conways Game of Life</a> geschrieben.</p>
<p>Dieses simple &#8220;<strong>zero player</strong>&#8221; Game wird komplett im Terminal ausgeführt. Mit Mausunterstützung und Farben wurden mit libncurses realisiert.</p>
<p>Den Quelltext findet ihr sammt Makefile in meinem <strong><a href="https://0l.de/cgit/rwth-info1.git/tree/src/conway.c">Git-Repository</a></strong>.</p>
<h3>Hints &amp; Shortcuts</h3>
<ul>
<li>&#8220;<strong>p</strong>&#8221; pausiert das Spiel</li>
<li>&#8220;<strong>q</strong>&#8221; beendet das Spiel</li>
<li>&#8220;<strong>c</strong>&#8221; leert das Spielfeld</li>
<li>die <strong>Leertaste</strong> setzt eine Zelle</li>
<li>die <strong>Pfeiltasten</strong> bewegen den Cursor</li>
<li>die <strong>Maus</strong> kann zum Bewegen des Cursors genutzt werden</li>
<li>&#8220;<strong>0</strong>&#8221; fügt ein chaotisches Anfangsmuster ein</li>
<li>&#8220;<strong>1</strong>&#8221; fügt einen Glider in das Spielfeld ein</li>
<li>&#8220;<strong>2</strong>&#8221; fügt einen Segler in das Spielfeld ein</li>
<li>&#8220;<strong>3</strong>&#8221; fügt einen Buffer in das Spielfeld ein</li>
<li>&#8220;<strong>+</strong>&#8221; erhöht die Anzahl der Generationen pro Sekunde (frames per second)</li>
<li>&#8220;<strong>-</strong>&#8221; erniedrigt die Anzahl der Generationen pro Sekunde (frames per second)</li>
</ul>
<p><a href="http://www.steffenvogel.de/2010/12/01/conways-game-of-life/"><em>Click here to view the embedded video.</em></a></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/12/01/conways-game-of-life/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>BASH script collection</title>
		<link>http://www.steffenvogel.de/2010/11/14/bash-script-collection/</link>
		<comments>http://www.steffenvogel.de/2010/11/14/bash-script-collection/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 10:27:38 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[collection]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1204</guid>
		<description><![CDATA[In den letzten Jahren als Linux User hat sich bei mir eine kleine Toolbox aus BASH (Bourne Again Shell)  Skripten angesammelt. Einige habe ich bereits in Blog-Posts vorgstellt. Jetzt habe ich sie mal in einem git-Repository zusammengefasst. Viel Spaß damit!]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/11/300px-Bash1.jpg"><img class="alignright size-thumbnail wp-image-1205" title="300px-Bash1" src="http://static.steffenvogel.de/wp-content/uploads/2010/11/300px-Bash1-150x150.jpg" alt="" width="150" height="150" /></a>In den letzten Jahren als Linux User hat sich bei mir eine kleine Toolbox aus BASH (Bourne Again Shell)  Skripten angesammelt. Einige habe ich bereits in Blog-Posts vorgstellt. Jetzt habe ich sie mal in einem <a href="https://0l.de/cgit/snippets.git/"><strong>git-Repository</strong></a> zusammengefasst.</p>
<p>Viel Spaß damit!</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/11/14/bash-script-collection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>fnordlicht vu meter</title>
		<link>http://www.steffenvogel.de/2010/11/12/fnordlicht-vu-meter/</link>
		<comments>http://www.steffenvogel.de/2010/11/12/fnordlicht-vu-meter/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 00:13:37 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Musik]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[fnordlicht]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[peak]]></category>
		<category><![CDATA[vu meter]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1190</guid>
		<description><![CDATA[Last time, I showed you my new fnordlicht&#8217;s. Today, I&#8217;ve a little gift for you: I&#8217;ve written a small c program to control the lights according to the current peak level. The software analyses the audio signal of my system (Ubuntu 10.10 with pulseaudio). So you can dance to everything that can play audio.. Update: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.steffenvogel.de/2010/11/12/fnordlicht-vu-meter/"><em>Click here to view the embedded video.</em></a></p>
<p><a href="http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/">Last time</a>, I showed you my new <a href="http://wiki.lochraster.org/wiki/Fnordlichtmini">fnordlicht&#8217;s</a>. Today, I&#8217;ve a little gift for you: I&#8217;ve written a small c program to control the lights according to the current peak level.</p>
<p>The software analyses the audio signal of my system (Ubuntu 10.10 with pulseaudio). So you can dance to everything that can play audio.. <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><strong>Update:</strong> As preparation for a exam, I added a discrete fourier analysis (DFT). Unfortunatly the serial bus is to slow to visualize the audio spectrogram in real time <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  The bars are colored with their complex phase-&gt;hue (HSV) aquivalent.</p>
<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/11/fnordlicht_fft.png"><img class="aligncenter size-full wp-image-1326" title="fnordlicht_fft" src="http://static.steffenvogel.de/wp-content/uploads/2010/11/fnordlicht_fft.png" alt="" width="420" height="235" /></a></p>
<p>The software uses and is distributed together with my fnlib (fnordlicht library) available under: <a title="http://web.git.0l.de/libfn.git/tree/fnvum" dir="ltr" href="http://web.git.0l.de/libfn.git" rel="nofollow" target="_blank">http://web.git.0l.de/libfn.git</a></p>
<h3>Some technical details (in german):</h3>
<p>Ich benutze <a href="http://pulseaudio.org/">PulseAudio</a> um mich in die Soundkarte des Systems einzuklingen. Das Programm tarnt sich als Recording-Tool. Und kann dadurch den kompletten Audio-Output oder nur bestimmte Programme visualisieren. Sogar das Mikrofon kann ich benutzen :p</p>
<p>PulseAudio liefert mir einen einfachen PCM Stream (44,1kHz Samplingrate, Mono &amp; 16-Bit signed Integers). Derzeit addiere ich immer nur x Werte dieses Bytestreams und mittele diese Summe dann über einen kurzen Zeitraum.</p>
<p>Geplant ist noch eine FFT-Analyse um  die Amplituden verschiedener Frequenzen gemäß der &#8220;Ohrkurve&#8221;, der Empfindlichkeit des menschlichen Gehörs, gewichten zu können. Der Schritt zur Spektraldarstellung (jedes meiner 10 fnordlichter als VU-Meter für ein bestimmtes Frequenzband) ist dann hoffentlich auch nicht mehr so weit.</p>
<div id="attachment_1196" class="wp-caption aligncenter" style="width: 510px"><a href="http://static.steffenvogel.de/wp-content/uploads/2010/11/Ohrkurve.gif"><img class="size-full wp-image-1196" title="Ohrkurve" src="http://static.steffenvogel.de/wp-content/uploads/2010/11/Ohrkurve.gif" alt="" width="500" height="281" /></a><p class="wp-caption-text">Ohrkurve</p></div>
<h4>Hints (for me)</h4>
<ul>
<li>FFT lib to use: <a href="http://www.fftw.org">http://www.fftw.org</a></li>
<li>Approximation for &#8220;Ohrkurve&#8221;</li>
</ul>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/11/12/fnordlicht-vu-meter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>visualize your power consumption with fnordlicht&#8217;s</title>
		<link>http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/</link>
		<comments>http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 21:19:40 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[bus]]></category>
		<category><![CDATA[fd0. fnordlicht]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[metering]]></category>
		<category><![CDATA[modul]]></category>
		<category><![CDATA[seriell]]></category>
		<category><![CDATA[smart]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1144</guid>
		<description><![CDATA[Gerade zurückgekommen vom elektro:camp(&#60;&#60;2010&#62;&#62;). aus Kaiserslautern, blogge ich heute über mein neustes Spielzeug: zehn fnordlichtmini&#8216;s. Vor ein paar Wochen bin ich auf das Projekt von Alexander Neumann aufmerksam geworden, um den Eingang neuer Mails, Nachrichten und meinen Stromverbrauch darzustellen. Meine 10 Module waren schnell aufgebaut. Sie bestehen aus je 3&#215;3 LED&#8217;s (RGB) und einem ATMega8 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3754.jpg"><img class="alignright size-thumbnail wp-image-1149" title="IMG_3754" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3754-150x150.jpg" alt="" width="150" height="150" /></a>Gerade zurückgekommen vom <a id="elektrocamp_2010__-_campcoordination" name="elektrocamp_2010__-_campcoordination" href="http://developer.mysmartgrid.de/doku.php?id=campcoordination"></a>elektro:camp(&lt;&lt;2010&gt;&gt;). aus Kaiserslautern, blogge ich heute über mein neustes Spielzeug: zehn <a href="http://wiki.lochraster.org/wiki/Fnordlichtmini">fnordlichtmini</a>&#8216;s.</p>
<p><a href="http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/"><em>Click here to view the embedded video.</em></a></p>
<p>Vor ein paar Wochen bin ich auf das Projekt von <a href="http://www.lochraster.org">Alexander Neumann</a> aufmerksam geworden, um den Eingang neuer Mails, Nachrichten und meinen Stromverbrauch darzustellen. Meine 10 Module waren schnell aufgebaut. Sie bestehen aus je 3&#215;3 LED&#8217;s (RGB) und einem ATMega8 Mikrocontroller, der die PWM-Ansteuerung und die Kommunikation über einen seriellen Bus übernimmt.</p>
<p>Leider gab es noch <a href="http://github.com/fd0/fnordlicht/tree/master/tests/">kein gutes Programm</a> für die Ansteuerung über einen Rechner. Also griff ich schnell zum Lötkolben und schrieb eine kleine C-Library. Mit der Ethernet-RS232 Bridge von <a href="http://www.ethersex.de">ethersex</a> (<a href="http://ethersex.de/index.php/YPORT">Y-Port</a>) konnte ich sogar die Ansteuerung über das Internet testen. Dies wird auch von der Library unterstützt.</p>
<p>Die Bibliothek sowie ein Beispiel-Programm für die Linux-Konsole gibt es in meinem <a href="https://0l.de/cgit/libfn.git/">git-Repository</a>.</p>

<a href='http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/img_3749/' title='IMG_3749'><img width="150" height="150" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3749-150x150.jpg" class="attachment-thumbnail" alt="IMG_3749" title="IMG_3749" /></a>
<a href='http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/img_3754/' title='IMG_3754'><img width="150" height="150" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3754-150x150.jpg" class="attachment-thumbnail" alt="IMG_3754" title="IMG_3754" /></a>
<a href='http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/img_3756/' title='IMG_3756'><img width="150" height="150" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3756-150x150.jpg" class="attachment-thumbnail" alt="IMG_3756" title="IMG_3756" /></a>
<a href='http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/img_3760/' title='IMG_3760'><img width="150" height="150" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3760-150x150.jpg" class="attachment-thumbnail" alt="IMG_3760" title="IMG_3760" /></a>
<a href='http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/img_3765/' title='IMG_3765'><img width="150" height="150" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3765-150x150.jpg" class="attachment-thumbnail" alt="IMG_3765" title="IMG_3765" /></a>
<a href='http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/img_3770/' title='IMG_3770'><img width="150" height="150" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3770-150x150.jpg" class="attachment-thumbnail" alt="IMG_3770" title="IMG_3770" /></a>
<a href='http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/img_3766/' title='IMG_3766'><img width="150" height="150" src="http://static.steffenvogel.de/wp-content/uploads/2010/10/IMG_3766-150x150.jpg" class="attachment-thumbnail" alt="IMG_3766" title="IMG_3766" /></a>

<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/10/31/visualize-your-power-consumption-with-fnordlichter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>git SCM</title>
		<link>http://www.steffenvogel.de/2010/08/17/git-scm/</link>
		<comments>http://www.steffenvogel.de/2010/08/17/git-scm/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 12:45:01 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=1002</guid>
		<description><![CDATA[Ich gehe mit der Zeit und wechsele mein Source Code Management System. Obwohl SVN weiterhin entwickelt und gepflegt wird wurde es von git überholt. Das Design, die Idee, der dezentrale Ansatz von git ist SVN weit überlegen. Nun verwalte ich meinen Quelltext mit git. Alle Projekte und Code-Schnipsel befinden sich in meinen git-Repositories: http://web.git.0l.de Ich [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/08/git.png"><img class="alignright size-full wp-image-1004" title="git" src="http://static.steffenvogel.de/wp-content/uploads/2010/08/git.png" alt="" width="129" height="47" /></a>Ich gehe mit der Zeit und wechsele mein <strong>S</strong>ource <strong>C</strong>ode<strong> M</strong>anagement System.</p>
<p>Obwohl <a href="http://subversion.apache.org/"><strong>SVN</strong> </a>weiterhin entwickelt und gepflegt wird wurde es von <a href="http://git-scm.com/"><strong>git</strong></a> überholt. Das Design, die Idee, der dezentrale Ansatz von <strong>git</strong> ist <strong>SVN</strong> weit überlegen.</p>
<p>Nun verwalte ich meinen Quelltext mit <strong>git</strong>. Alle Projekte und Code-Schnipsel befinden sich in meinen git-Repositories:</p>
<p><a href="http://web.git.0l.de">http://web.git.0l.de</a></p>
<p>Ich habe alle Verweise im Blog nun auf das neue <strong>git Repository</strong> aktualisiert worden.</p>
<p>Jedem der sich auch mit dem Thema beschäftigen möchte, empfehle ich diese Lektüre:</p>
<p style="text-align: center;"><a href="http://oreilly.com/catalog/9780596520137"><img class="aligncenter size-medium wp-image-1005" title="lrg" src="http://static.steffenvogel.de/wp-content/uploads/2010/08/lrg-228x300.jpg" alt="" width="228" height="300" />O&#8217;Reilly</a></p>
<p style="text-align: center;">(bei Interesse bitte bei mir melden <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/08/17/git-scm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>volkszaehler.org</title>
		<link>http://www.steffenvogel.de/2010/07/02/volkszaehler-org/</link>
		<comments>http://www.steffenvogel.de/2010/07/02/volkszaehler-org/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 10:27:52 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Sensoren]]></category>
		<category><![CDATA[Smart Meter]]></category>
		<category><![CDATA[Stromzähler]]></category>
		<category><![CDATA[volkszaehler.org]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=923</guid>
		<description><![CDATA[volkszaehler.org ist ein freier Smart Meter (hier: intelligenter Stromzähler) im Selbstbau. Die anfallenden Stromprofile bleiben dabei unter der Kontrolle des Nutzers. Seit dem 1.1.2010 müssen Stromversorger ihren Kunden für Neubauten so genannte &#8220;intelligente Stromzähler&#8221; (Smart Meter) anbieten. Der Kunde soll dadurch seinen Stromverbrauch analysieren und optimieren können. Die dabei anfallenden Daten (&#8220;Stromverbrauchsprofil&#8221;) erlauben einen sehr [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://volkszaehler.org">volkszaehler.org</a> ist ein freier Smart Meter (hier: intelligenter Stromzähler) im Selbstbau. Die anfallenden Stromprofile bleiben dabei unter der Kontrolle des Nutzers.</p></blockquote>
<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/06/logo.png"><img class="alignright size-full wp-image-917" title="logo" src="http://static.steffenvogel.de/wp-content/uploads/2010/06/logo.png" alt="" width="168" height="168" /></a><br />
Seit dem 1.1.2010 müssen Stromversorger ihren Kunden für Neubauten so genannte &#8220;intelligente Stromzähler&#8221; (Smart Meter) anbieten. Der Kunde soll dadurch seinen Stromverbrauch analysieren und optimieren können.</p>
<p>Die dabei anfallenden Daten (&#8220;Stromverbrauchsprofil&#8221;) erlauben einen sehr detallierten Einblick in den Tagesablauf des Nutzers (wann steht er auf? wann geht er in&#8217;s Bett? wann kocht er? wie oft verwendet er seine Spülmaschine? verändert sich sein Verhalten? &#8230;). Darum sollten die Daten ausschließlich für den Nutzer selbst zur Verfügung stehen &#8211; und das geht nur, wenn man sich den Smart Meter selbst baut. Mit einem Materialeinsatz von ca. EUR 100, etwas Geschick und Zeit lässt sich das mit Hilfe eines Standard-µC-Moduls aufbauen.</p>
<p>Auf der <a href="http://events.ccc.de/sigint/2010/wiki/Hauptseite">SIGINT 2010</a> konnte ich mir den <a href="http://events.ccc.de/sigint/2010/wiki/Fahrplan/events/3862.de.html">Vortrag </a>von Justin Otherguy über das noch recht junge Projekt anhören und fand anschließen die Gelegenheit mit ihm über das Projekt zu sprechen. Schnell war für mich klar, dass ich hier helfen möchte.</p>
<p>Bisher gibt es nur einen funktionsfähigen Prototypen. In den letzten Wochen habe ich mit ein paar weiteren Entwicklern begonnen den Code des Prototypen neu aufzubauen. Volkzaehler.org ist dreigeteilt:</p>
<ol>
<li><strong>Die Controller und Sensor Ebene</strong><br />
erfasst  mithilfe eines Mikrocontrollers die Daten leitet sie an den Backendserver weiter.</li>
<li><strong>Der Backendserver<br />
<span style="font-weight: normal;">besteht aus einem PHP-Skript und einer Datenbank. Hier werden die Daten weiter verarbeitet und ausgewertet. Er kommuniziert ausschließlich über eine standardisierte JSON API.</span></strong></li>
<li><strong>Das Frontend<br />
<span style="font-weight: normal; font-size: small;">stellt die Daten für den Benutzer übersichtlich dar und ist für die Ausgabe der Analysen verantwortlich.</span></strong></li>
</ol>
<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/07/overview.png"><img class="aligncenter size-large wp-image-929" title="overview" src="http://static.steffenvogel.de/wp-content/uploads/2010/07/overview-1024x724.png" alt="" width="400" /></a></p>
<p><span>Diese Darstellung verrät uns auch, dass nur der Stromverbrauch erfasst werden kann. Geplant sind sämtliche Messgrößen (Temperatur, Luftdruck, Luftfeuchtigkeit, Strahlung, Niederschlag etc&#8230;).</span></p>
<p><span>Bisher gibt es noch keine stabile, lauffähige Version des Quellcodes. Im </span><a href="http://de.volkszaehler.wikia.com/wiki/Volkszaehler.org_Wiki">Wiki</a><span>, der </span><a href="mailto:volkszaehler-dev-subscribe@lists.volkszaehler.org">Mailing-Liste</a><span> und </span><a href="http://github.com/volkszaehler/volkszaehler.org">GitHub</a><span> findet ihr weitere Informationen zu meinem neuen Projekt.</span></p>
<p><span>Wir freuen uns über jede Unterstüzung <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Besonders Entwickler mit PHP und Javascript Kenntnissen wären hilfreich <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </span></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/07/02/volkszaehler-org/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rezension: Der Pragmatische Programmierer</title>
		<link>http://www.steffenvogel.de/2010/03/02/rezension-der-pragmatische-programmierer/</link>
		<comments>http://www.steffenvogel.de/2010/03/02/rezension-der-pragmatische-programmierer/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 12:51:34 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Bericht]]></category>
		<category><![CDATA[Buch]]></category>
		<category><![CDATA[pragmatisch]]></category>
		<category><![CDATA[Programmierer]]></category>
		<category><![CDATA[Rezension]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=692</guid>
		<description><![CDATA[Carl Hanser Verlag 2003 München Wien 307 Seiten CD, Beihefter Flexibler Einband ISBN: 978-3-446-22309-7 € 39,90 Auf gut 300 Seiten liefern Andrew Hunt &#38; David Thomas &#8220;fortgeschrittenen Programmierern und alten Hasen&#8221; einen Kodex zum pragmatischen Programmieren. Ihre &#8220;70 Gebote&#8221; sind so universell und allgemein gültig, wie ihr christliches Pedant und sollten zu den Vorsätzen jedes [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; padding: 0 0 10px 10px;"><a href="http://static.steffenvogel.de/wp-content/uploads/2010/03/prag_prog_cover.jpg"><img class="size-medium wp-image-694 " title="Cover" src="http://static.steffenvogel.de/wp-content/uploads/2010/03/prag_prog_cover-229x300.jpg" alt="" width="151" height="194" /></a><br />
<em>Carl Hanser Verlag</em><br />
<em>2003 München Wien</em><br />
<em>307 Seiten</em><br />
<em>CD, Beihefter</em><br />
<em>Flexibler Einband</em><br />
<em>ISBN: 978-3-446-22309-7</em><br />
<em> € 39,90</em></div>
<p>Auf gut 300 Seiten liefern Andrew Hunt &amp; David Thomas &#8220;fortgeschrittenen Programmierern und alten Hasen&#8221; einen Kodex zum pragmatischen Programmieren. Ihre &#8220;70 Gebote&#8221; sind so universell und allgemein gültig, wie ihr christliches Pedant und sollten zu den Vorsätzen jedes Programmierers gehören. Viele der Gesetze dürften erfahrenen Entwicklern schon in ihren Grundzügen bekannt sein und werden durch das Buch noch einmal auf den Punkt gebracht. Durch Angabe verwandter Abschnitte entsteht Schritt für Schritt ein guter Gesamtüberblick.</p>
<p>Dieses Buch ist keine Referenz für Bibliotheken und lehrt auch nicht das Programmieren in einer bestimmten Sprache. Weder Syntax noch Design Patterns werden hier tiefergehend behandelt. Vielmehr wird dem Leser die <em>Kunst</em> des Programmierens näher gebracht.<span id="more-692"></span></p>
<p>Für mich ist das Buch ein ständiger Begleiter geworden. Seitdem ich es vor gut einem Jahr geschenkt bekommen habe, erlange ich immer noch neue Erkenntnisse beim Lesen oder Stöbern im Buch. Die Umsetzung dieser Paradigmen gestaltete sich gerade am Anfang nicht immer so leicht. Bereits nachdem ich die ersten Kapitel gelesen hatte begann ich meine laufenden Projekte fundamental neu zu strukturieren. Gerade Perfektionisten (zu denen ich mich wohl nun auch zählen muss <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) werden ihre Schwierigkeiten haben all diese Paradigmen umzusetzten. Klar ist: es ist nötig viele Kompromisse einzugehen und Entscheidungen gut abzuwägen.</p>
<ul>
<li><a href="http://static.steffenvogel.de/wp-content/uploads/2010/03/prag_prog_inhalt.pdf">Inhaltsverzeichnis</a></li>
<li><a href="http://static.steffenvogel.de/wp-content/uploads/2010/03/prag_prog_vorwort.pdf">Vorwort</a></li>
<li><a href="http://static.steffenvogel.de/wp-content/uploads/2010/03/prag_prog_tipps.pdf">Checklisten &amp; Tipps</a></li>
<li><a href="http://www.hanser.de/buch.asp?isbn=978-3-446-22309-7&amp;area=Computer">Verlags Website</a></li>
</ul>
<blockquote><p>Wer dieses Buch  liest, lernt: die Anwender zu begeistern, die echten Anforderungen zu  finden, den Verfall von Software zu bekämpfen, gegen Redundanz  anzugehen, dynamischen und anpassbaren Quelltext zu schreiben, effektiv  zu testen, Teams von Pragmatischen Programmierern zu bilden und durch  Automatisierung sorgfältiger zu entwickeln.</p>
<p>Zunehmende  Spezialisierung und Technisierung verstellen den Softwareentwicklern oft  den Blick auf das Wesentliche: Anforderungen in ein funktionierendes  und wartbares Programm zu überführen, das die Anwender begeistert. Der  Pragmatische Programmierer rückt dies wieder in den Mittelpunkt.</p></blockquote>
<h3>Über die Autoren</h3>
<p>Andrew Hunt hat Erfahrungen in den Bereichen Telekommunikation, Bankwesen und Finanzdienstleistungen, medizinische Bildverarbeitung,  Druckvorstufe u.a. Er ist darauf spezialisiert, etablierte mit  brandneuen Technologien zu kombinieren und dabei praktische Lösungen zu  erstellen. Er betreibt eine Beratungsfirma in Raleigh, North Carolina.<br />
David  Thomas berät Unternehmen in Branchen wie Luftfahrt,  Finanzdienstleistung, Telekommunikation, Touristik und Transportwesen.  Bevor er 1994 in die USA umgezogen ist, hat er eine ISO  9001-zertifizierte Softwarefirma gegründet, die von Großbritannien aus  anspruchsvolle Individualsoftware in alle Welt liefert. Heute ist er  unabhängiger Berater, in Dallas, Texas.<br />
Inzwischen arbeiten David  Thomas und Andrew Hunt zusammen als &#8220;The Pragmatic Programmers, L.L.C.&#8221;  und bringen gemeinsam mehr als 40 Jahre Erfahrung zu Kunden in allen  Teilen der Vereinigten Staaten.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/03/02/rezension-der-pragmatische-programmierer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tiny DNS &amp; URL aka SDDNS</title>
		<link>http://www.steffenvogel.de/2010/01/25/sddns/</link>
		<comments>http://www.steffenvogel.de/2010/01/25/sddns/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 10:20:07 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[0l.de]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Domain Name System]]></category>
		<category><![CDATA[DynDNS]]></category>
		<category><![CDATA[eta.li]]></category>
		<category><![CDATA[Nameserver]]></category>
		<category><![CDATA[SDDNS]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Tiny]]></category>
		<category><![CDATA[TinyURL]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=552</guid>
		<description><![CDATA[Zusammen mit Micha besuchte ich Ende letzten Jahres das U23 des C4 in Köln. Dort habe ich viel über die Techniken des Internets gelernt. Unter anderem ging es hier auch um das Domain Name System, das für die Namensauflösung im Internet verantwortlich ist. Mittlerweile betreibe ich einen eigenen DNS Server für meine beiden Domains: 0l.de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.steffenvogel.de/wp-content/uploads/2010/01/favicon.ico.gzip"><img class="alignright size-full wp-image-649" title="favicon" src="http://static.steffenvogel.de/wp-content/uploads/2010/01/favicon.ico.gzip" alt="" width="115" height="115" /></a>Zusammen mit Micha besuchte ich Ende letzten Jahres das <a href="http://koeln.ccc.de/u23">U23 </a>des <a href="http://koeln.ccc.de/">C4 in Köln</a>.<br />
Dort habe ich viel über die Techniken des Internets gelernt. Unter anderem ging es hier auch um das <a href="http://de.wikipedia.org/wiki/Domain_Name_System">Domain Name System</a>, das für die Namensauflösung im Internet verantwortlich ist.</p>
<p>Mittlerweile betreibe ich einen eigenen DNS Server für meine beiden Domains: <a href="http://0l.de">0l.de</a> und <a href="http://eta.li">eta.li</a>. Rekursives Auflösen ist über diesen Server ebenso möglich. Ihr könnt ihn also geren auch benutzen: 83.169.1.58</p>
<p>Zudem biete ich euch <strong>kostenloses DNS Hosting</strong>. Gerne übernehme ich auch die DNS Administration eurer Domains. Jedoch könnt ihr sicherlich verstehen, dass ich euch dafür dann nichts garantieren kann.</p>
<p>Mit der Zeit habe ich ein Webinterface für den DNS Server Bind entwickelt auf das nun jeder Zugriff hat. Ihr könnt eigene Subdomains registrieren, Records setzen und URL Weiterleitungen einrichten. <strong>DynDns</strong> ist ebenso möglich.</p>
<p>Es ist auch möglich <strong>URLs zu verkürzen</strong> und so beispielsweise die URL:<br />
<a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=100237997621038330776.000468b0a95f89721a96e&amp;ll=18.646245,15.820313&amp;spn=120.933723,198.632813&amp;z=3">http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=100237997621038330776.000468b0a95f89721a96e&amp;ll=18.646245,15.820313&amp;spn=120.933723,198.632813&amp;z=3</a><br />
auf<br />
<a href="http://a.0l.de">http://a.0l.de</a></p>
<p>abzukürzen.  Das ist vergleichbar mit dem Service von <a href="http://tinyurl.com">TinyURL</a>. Jedoch sind meine URLs dann um 7 Zeichen kürzer <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Im Gegensatz TinyURL sind meine URLs auch nur über die Subdomains erreichbar. Eine direkte Unterscheidung zwischen eigenem DNS Record und einer simplen URL Weiterleitung ist also nicht möglich.</p>
<h1 style="text-align: center;"><a href="http://d.0l.de ">Service</a> &#8211; <a href="http://0l.de/projects/sddns/">Projekt Wiki</a></h1>
<p><span id="more-552"></span></p>
<h2>Bedienung</h2>
<p>Der Dienst besitzt ein <a href="http://0l.de/projects/sddns/usage">dokumentiertes</a> <a href="http://de.wikipedia.org/wiki/Programmierschnittstelle">API</a>. Durch ein <a href="http://d.0l.de/simple">einfaches Webinterface</a> ist es auch Anfängern möglich das Script zu bediehnen. Ein <a href="http://d.0l.de/expert">Expertenmodus</a> bietet dann noch fortgeschrittenen Usern den kompletten Zugriff auf das API.</p>
<p>Die Schnittstelle ist auch kompatibel zu den Update Clients des Marktführers <a href="http://dyndns.org/">DynDns.org</a>.</p>
<p>Das Verkürzen einer URL ist mit diesem einfachen <strong>Bookmarklet</strong> möglich:</p>
<p style="text-align: center;"><a href="javascript:u='http://d.0l.de/add.html?type=URL&#038;rdata='+encodeURIComponent(location.href);h=encodeURIComponent(window.getSelection().toString().replace(/[sx21x22x23x24x25x26x27x28x29x2Ax2Bx2Cx2Ex2Fx3Ax3Bx3Cx3Dx3Fx40x5Bx5Cx5Dx5Ex5Fx60x7Bx7Cx7Cx7Dx7E]+/gi,'-').replace(/^-+/,'').replace(/-+$/,''));if(!h){h=prompt('Subdomain','');}if(h){u+='&#038;host='+h;}location.href=u"><img class="size-full wp-image-650 aligncenter" title="bookmarklet" src="http://static.steffenvogel.de/wp-content/uploads/2009/12/bookmarklet.png" alt="" width="98" height="24" /></a></p>
<h2 style="text-align: left;">Technik</h2>
<p>Das komplette System besteht aus einem Webserver (Apache) mit PHP, einem Datenbankserver (MySQL) und dem DNS-Server (Bind9). Das PHP Script sorgt für die Syncronisation zwischen Datenbank und Nameserver. Dazu benutzt es das Kommandozeilen Tool &#8220;nsupdate&#8221; von Bind. Cron-Jobs sorgen regelmäßig für das Löschen von veralteten Records und URLs sowie die Konsistenz der Daten.</p>
<p>Das komplette System wurde nach modernen Paradigmen entworfen und ist vollständig objektorientiert implementiert. Das MVC Design-Pattern ermöglicht das einfache Erweitern um neue Komponenten.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2010/01/25/sddns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UNI-TREND UT61E Digital Multimeter</title>
		<link>http://www.steffenvogel.de/2009/11/29/uni-trend-ut61e-digital-multimeter/</link>
		<comments>http://www.steffenvogel.de/2009/11/29/uni-trend-ut61e-digital-multimeter/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 09:00:50 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Datenlogger]]></category>
		<category><![CDATA[DMM]]></category>
		<category><![CDATA[GNUplot]]></category>
		<category><![CDATA[Logger]]></category>
		<category><![CDATA[Messen]]></category>
		<category><![CDATA[Optokopler]]></category>
		<category><![CDATA[Plotter]]></category>
		<category><![CDATA[UNI-TREND]]></category>
		<category><![CDATA[UT61E]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=594</guid>
		<description><![CDATA[Seit ein paar Wochen habe ich schon nun mein neues Multimeter: ein UT61E von UNI-TREND. Bisher bin ich rundum zufrieden damit. Gekauft habe ich es über das Internet bei Pinsonne-Elektronik. Lieferung und Bezahlung verlief schnell und problemlos. Den Laden kann ich also nur weiterempfehlen. Ein besonderes Highlight der neuen Messgeräte ist die RS232 Schnittstelle für [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_598" class="wp-caption alignright" style="width: 209px"><a href="http://static.steffenvogel.de/wp-content/uploads/2009/11/DSC00102.JPG"><img class="size-medium wp-image-598" title="DSC00102" src="http://static.steffenvogel.de/wp-content/uploads/2009/11/DSC00102-300x225.jpg" alt="Der Testaufbau" width="199" height="149" /></a><p class="wp-caption-text">Der Testaufbau</p></div>
<p>Seit ein paar Wochen habe ich schon nun mein neues Multimeter: ein <a href="http://www.pinsonne-elektronik.de/pi2/pd58.html">UT61E</a> von<a href="http://www.uni-trend.com/"> UNI-TREND</a>. Bisher bin ich rundum zufrieden damit. Gekauft habe ich es über das Internet bei <a href="http://www.pinsonne-elektronik.de/">Pinsonne-Elektronik</a>. Lieferung und Bezahlung verlief schnell und problemlos. Den Laden kann ich also nur weiterempfehlen.</p>
<p>Ein besonderes Highlight der neuen Messgeräte ist die RS232 Schnittstelle für die Auswertung am Rechner. Über diese per Optokopler isolierte Schnittstelle ist es möglich in aktuelle Messergebnisse am Rechner auszuwerten und weiter zu verarbeiten.</p>
<p>Leider haben die in China ansässigen Hersteller die Linux-Gemeinde aber mal wieder vergessen. Nach einigen Recherchen und etlichen Stunden später habe ich es dann jedoch geschafft ein kleines Tool für Linux zu entwickeln, welches mir die Messergebnisse im CSV Format liefert. In diesem Format kann ich sie nun in Open Office, MatLab und vielen anderen Programmen öffnen und auswerten.</p>
<p>Als besonderes Gimmick habe ich auch noch ein kleines Script geschrieben, das mit Hilfe <a href="http://www.gnuplot.info/">gnuplot </a>Graphen der Messergebnisse zeichnet. Diese werden dann 1-2 in der Sekunde aktualisiert. Mit einem Oszilloskop ist das jedoch lange noch nicht vergleichbar. Aber für Langzeit-Messungen durchaus sehr praktisch.</p>
<div id="attachment_595" class="wp-caption aligncenter" style="width: 310px"><a href="http://static.steffenvogel.de/wp-content/uploads/2009/11/screenshot.png"><img class="size-medium wp-image-595" title="screenshot" src="http://static.steffenvogel.de/wp-content/uploads/2009/11/screenshot-300x192.png" alt="Die Live-Darstellung der Messergebnisse mit gnuplot" width="300" height="192" /></a><p class="wp-caption-text">die Live-Darstellung der Messergebnisse mit gnuplot</p></div>
<p>Ich bedanke mich bei <a href="http://www-user.tu-chemnitz.de/~heha/">Henrik Haftmann</a> für <a href="http://static.steffenvogel.de/wp-content/uploads/2009/11/UT61E.txt.gzip">die detaillierte Beschreibung des Protokolls</a>, welche mir beim Entwickeln dieses Tools unheimlich geholfen hat.</p>
<p><strong>Update: </strong>Ich habe das Datenblatt es verwendeten IC&#8217;s gefunden. Es enthält auch eine Spezifikation des serielle Protokolls. <a href="/2011/01/25/inner-workings-of-uni-trend-ut61e-digital-multimeter/">Hier</a> geht es zum neuen Eintrag mit Bildern des Chips und der restlichen Platine.</p>
<p>Das Tool sowie das gnuplot Script habe ich hier <a href="http://static.steffenvogel.de/wp-content/uploads/2009/11/dmmut61e-0.01.tar.gz">in einem Archiv zusammengefasst</a>. Die Installation ist sicherlich nicht die einfachste. Aber die nötigen Kenntnisse setzte ich bei dieser Zielgruppe einfach mal voraus :p</p>
<p><strong>Achtung:</strong> Das Binary, das ich im Archiv beigelegt habe, ist für 64bit Linuxe kompiliert. Benötigt dafür aber keine weiteren dynamischen libs.</p>
<p>Anregungen, Patches und Bugreports sind per Mail immer willkommen.</p>
<p>Hier noch ein kleines Beispiel wie die Daten von meinem Tool ausgegeben werden. Für das Verständnis hilft sicherlich ein Blick in den Quelltext.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">1;0.0589;0.0589;0;0.0589;V;AC;Manual
2;0.07184;0.07184;0;0.06537;V;AC;Manual
3;0.12869;0.12869;0;0.0864767;V;AC;Manual
4;0.07876;0.12869;0;0.0845475;V;AC;Manual
5;0.06458;0.12869;0;0.080554;V;AC;Manual
6;0.09626;0.12869;0;0.0831717;V;AC;Manual
7;0.17355;0.17355;0;0.0960829;V;AC;Manual
8;0.17487;0.17487;0;0.105931;V;AC;Manual
9;0.13565;0.17487;0;0.109233;V;AC;Manual
10;0.10726;0.17487;0;0.109036;V;AC;Manual
11;0.16506;0.17487;0;0.114129;V;AC;Manual
12;0.14415;0.17487;0;0.116631;V;AC;Manual
13;0.15238;0.17487;0;0.119381;V;AC;Manual
14;0.17396;0.17487;0;0.123279;V;AC;Manual
15;0.11834;0.17487;0;0.12295;V;AC;Manual
16;0.2117;0.2117;0;0.128497;V;AC;Manual
17;0.18906;0.2117;0;0.132059;V;AC;Manual
18;0.17674;0.2117;0;0.134542;V;AC;Manual
19;0.08354;0.2117;0;0.131857;V;AC;Manual
20;0.053;0.2117;0;0.127915;V;AC;Manual
21;0.0688;0.2117;0;0.1251;V;AC;Manual
22;0.12796;0.2117;0;0.12523;V;AC;Manual
23;0.14954;0.2117;0;0.126287;V;AC;Manual
24;0.17535;0.2117;0;0.128331;V;AC;Manual
25;0.1381;0.2117;0;0.128722;V;AC;Manual
26;0.1588;0.2117;0;0.129878;V;AC;Manual
27;0.13258;0.2117;0;0.129979;V;AC;Manual
28;0.097;0.2117;0;0.128801;V;AC;Manual
29;0.04637;0.2117;0;0.125958;V;AC;Manual
30;0.06749;0.2117;0;0.124009;V;AC;Manual
31;0.09002;0.2117;0;0.122913;V;AC;Manual
32;0.07575;0.2117;0;0.121439;V;AC;Manual
33;0.0711;0.2117;0;0.119914;V;AC;Manual</pre></div></div>

<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2009/11/29/uni-trend-ut61e-digital-multimeter/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>gesundheitsmanagement-schule.de</title>
		<link>http://www.steffenvogel.de/2009/09/24/gesundheitsmanagement-schule-de/</link>
		<comments>http://www.steffenvogel.de/2009/09/24/gesundheitsmanagement-schule-de/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 10:59:32 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Andy Pons]]></category>
		<category><![CDATA[Fortbildung]]></category>
		<category><![CDATA[Gesundheitsmanagement]]></category>
		<category><![CDATA[LIO]]></category>
		<category><![CDATA[Schule]]></category>
		<category><![CDATA[Veranstaltung]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=521</guid>
		<description><![CDATA[Ich freue mich euch einen neuen Auftrag präsentieren zu dürfen, mit der ich mein etwas knappes FÖJ Taschengeld aufbessern konnte :p  Basierend auf der Website rueckgrat-beweisen.de, die ich für meinen ehemaligen Sportlehrer entworfen habe, ist nun eine weitere Website zum Thema Gesundheitsmanagement in Schulen entstanden. Das Design der Page wurde aufgrund einiger Fotos weitesgehend von [...]]]></description>
			<content:encoded><![CDATA[<p>Ich freue mich euch einen neuen Auftrag präsentieren zu dürfen, mit der ich mein etwas knappes FÖJ Taschengeld aufbessern konnte :p  Basierend auf der Website <a href="http://rueckgrat-beweisen.de">rueckgrat-beweisen.de</a>, die ich für meinen ehemaligen Sportlehrer entworfen habe, ist nun eine weitere Website zum Thema Gesundheitsmanagement in Schulen entstanden.</p>
<p><a href="http://static.steffenvogel.de/wp-content/uploads/2009/09/gesundheitsmanagement.jpg"><img class="aligncenter size-medium wp-image-522" title="gesundheitsmanagement" src="http://static.steffenvogel.de/wp-content/uploads/2009/09/gesundheitsmanagement-300x180.jpg" alt="gesundheitsmanagement" width="300" height="180" /></a></p>
<p>Das Design der Page wurde aufgrund einiger Fotos weitesgehend von mir selbstständig entworfen und umgesetzt. Funktionell wurde die Seite recht einfach gehalten. Es gibt die üblichen Funktionen zum Bearbeiten des Inhalts und ein Kontakt/Mail Fomular. Hierbei habe ich mich hauptsächlich auf den Quelltext von <a href="http://rueckgrat-beweisen.de/">rueckgrat-beweisen.de</a> gestützt und diesen weiterentwickelt. Wie immer ist die Seite 100% selbstgecodet und 100% W3C XHTML und CSS valid.</p>
<p>Zusätzlich zum Design und der Programmierung der Website habe ich auch die komplette Verwaltung des Webspaces inkl. Domainumzug übernommen.</p>
<p>Zu erreichen ist die neue Website unter: <strong><a href="http://www.gesundheitsmanagement-schule.de">www.gesundheitsmanagement-schule.de</a></strong></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2009/09/24/gesundheitsmanagement-schule-de/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Live SVN &amp; Revision im Footer</title>
		<link>http://www.steffenvogel.de/2009/07/24/live-svn-revision-im-footer/</link>
		<comments>http://www.steffenvogel.de/2009/07/24/live-svn-revision-im-footer/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 02:13:17 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[checkout]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[keywords]]></category>
		<category><![CDATA[post commit]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[regular expression]]></category>
		<category><![CDATA[revision]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=471</guid>
		<description><![CDATA[In diesem Post möchte ich euch mal kurz meinen Entwicklungsprozess am Beispiel der TuS Handball Website vorstellen. Fast alle meine Projekte befinden sich auf meinem eigenen SVN Server. Mittlerweile sind wir zu git gewechselt. Auch wenn ich meistens nur alleine an einem Projekt arbeite, bietet mir die Versionsverwaltung einige Vorteile: Entwicklungsfortschritt wird dokumentiert Backup der [...]]]></description>
			<content:encoded><![CDATA[<p>In diesem Post möchte ich euch mal kurz meinen Entwicklungsprozess am Beispiel der <a href="http://www.handball.griesm.de">TuS Handball Website</a> vorstellen.</p>
<p><del datetime="2010-08-17T12:38:46+00:00">Fast alle meine Projekte befinden sich auf meinem eigenen <a href="http://svn.griesm.de">SVN Server</a>.</del> Mittlerweile sind wir zu git <a href="http://www.steffenvogel.de/2010/08/17/git-scm/">gewechselt</a>.</p>
<p>Auch wenn ich meistens nur alleine an einem Projekt arbeite, bietet mir die Versionsverwaltung einige Vorteile:</p>
<ul>
<li>Entwicklungsfortschritt wird dokumentiert</li>
<li>Backup der Daten</li>
<li>Einfaches Auschecken der neuesten Version auf einem anderen Rechner</li>
<li>Wiederherstellen einer älteren Version (Revision)</li>
</ul>
<p>Auch das lästige Hochladen und Veröffentlichen der neusten Version auf dem Webserver wird überflüssig.</p>
<p>Mit einem &#8220;post-commit&#8221; Skript, welches im &#8220;hooks&#8221; Verzeichnis des SVN Repositories abgelegt werden muss, kann nach jedem Commit die aktuellste Version in ein vom WWW aus zugänglichen Ordner geupdated werden. Es ist nur einmalig nötig eine Version in das Webserververzeichnis auszuchecken:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #7a0874; font-weight: bold;">cd</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>projectdir
<span style="color: #c20cb9; font-weight: bold;">svn</span> up</pre></div></div>

<p>Ein weiteres kleines Gimmick ist die Anzeige der aktuellen Revision im Footer der Website. Das lässt sich am einfachsten mit SVN Keywords bewerkstelligen. Diese Keywords werden beim Committen durch die aktuelle Revisionsnr, das Datum oder den User ersetzt. Mithilfe einer Regular Expression können die Keywords auf ihre wesentliche Information gekürzt werden:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/(\d+)/&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'$Revision: 4 $'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$rev</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\((.*)\)/&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'$Date: 2009-07-24 03:47:35 +0200 (Fr, 24 Jul 2009) $'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$date</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'CMS Revision: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$rev</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' ('</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$date</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">')'</span><span style="color: #339933;">;</span></pre></div></div>

<p>Um das Ersetzen der Keywords zu aktivieren, müssen die entsprechenden SVN Properties gesetzten sein:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> propset <span style="color: #c20cb9; font-weight: bold;">svn</span>:keywords <span style="color: #ff0000;">&quot;Date Revision&quot;</span> footer.php</pre></div></div>

<p><del datetime="2010-08-17T12:38:46+00:00">Das ganze könnt ihr in Aktion auf der TuS Handball Website betrachten!</del> Viel Spaß! Die Seite ist leider nicht mehr verfügbar.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2009/07/24/live-svn-revision-im-footer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSM Changesets als RSS Feed</title>
		<link>http://www.steffenvogel.de/2009/05/06/osm-changesets-als-rss-feed/</link>
		<comments>http://www.steffenvogel.de/2009/05/06/osm-changesets-als-rss-feed/#comments</comments>
		<pubDate>Wed, 06 May 2009 20:26:51 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[OpenStreetMap]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Changesets]]></category>
		<category><![CDATA[OSM]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=302</guid>
		<description><![CDATA[Seit einigen Wochen hat das OpenStreetMap Projekt seine Server auf die API Version 0.6 umgestellt. Mit diesem Upgrade wurde die API um Changesets erweitert. Diese sind mit SVN Commits vergleichbar und fassen eine Reihe von Änderungen zusammen. Um immer auf dem Laufenden zu bleiben, wer oder was in deiner Gegend verändert wurde, kannst du nun [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-thumbnail wp-image-338 alignright" title="RSS Feed Logo" src="http://static.steffenvogel.de/wp-content/uploads/2009/05/square-150x150.jpg" alt="RSS Feed Logo" width="150" height="150" />Seit einigen Wochen hat das<a href="http://www.openstreetmap.org/" target="_blank"> OpenStreetMap Projekt</a> seine Server auf die<a href="http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.6" target="_blank"> API Version 0.6</a> umgestellt. Mit diesem Upgrade wurde die API um <a href="http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.6#Changesets_2" target="_blank">Changesets</a> erweitert. Diese sind mit SVN Commits vergleichbar und fassen eine Reihe von Änderungen zusammen.</p>
<p>Um immer auf dem Laufenden zu bleiben, wer oder was in deiner Gegend verändert wurde, kannst du nun mein RSS Skript benutzten und musst nicht mehr auf die proprietäre Lösung von <a href="http://www.itoworld.com/" target="_blank">ito!</a> nutzen.</p>
<p>Mein Skript fragt live die aktuellen Changesets aus der API ab und verarbeitet diese Daten in einen RSS 2.0 Feed.</p>
<p>Hier ein paar Beispiellinks:</p>
<ul>
<li><code><a href="/demos/snippets/osm_changeset_rss/osmrss.php?bbox=8.54217,49.84782,8.60002,49.87355&amp;filter=bots" target="_blank">http://www.steffenvogel.de/demos/snippets/osm_changeset_rss/osmrss.php?bbox=8.54217,49.84782,8.60002,49.87355&amp;filter=bots</a></code></li>
<li><code><a href="/demos/snippets/osm_changeset_rss/osmrss.php?user=64791" target="_blank">http://www.steffenvogel.de/demos/snippets/osm_changeset_rss/osmrss.php?user=64791</a></code></li>
<li><code><a href="/demos/snippets/osm_changeset_rss/osmrss.php?user=70696&amp;open" target="_blank">http://www.steffenvogel.de/demos/snippets/osm_changeset_rss/osmrss.php?user=70696&amp;open</a></code></li>
</ul>
<p>Alle Optionen hinter dem “?” sind identisch mit denen der OSM API. Ihr könnt also dynamische RSS Feeds mit <a href="http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.6#Parameters_6" target="_blank">allen Parametern des normalen API</a> erstellen.</p>
<p>Das Skript befindet sich auch in meinem <a href="https://0l.de/cgit/snippets.git/tree/osm_changeset_rss">git Repository</a>.</p>
<p>viel Spaß</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2009/05/06/osm-changesets-als-rss-feed/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GeoPortal macht Fortschritte</title>
		<link>http://www.steffenvogel.de/2009/03/13/geoportal-macht-fortschritte/</link>
		<comments>http://www.steffenvogel.de/2009/03/13/geoportal-macht-fortschritte/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 18:14:51 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[GeoPortal]]></category>
		<category><![CDATA[Projekt]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=312</guid>
		<description><![CDATA[Vor einem guten Jahr präsentierte ich euch bereits die ersten Pläne für mein neues OpenSource Projekt. Lange Zeit war es sehr ruhig um das GeoPortal Projekt. Mittlerweile habe ich es jedoch wieder aufgegriffen und mir etwas Gedanken um den mislungen Start gemacht. Ich bin zu dem Schluss gekommen, dass es dem Projekt noch an Struktur [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einem guten Jahr <a href="../2007/12/05/geoportal-sucht-noch-freiwillige-entwickler/" target="_blank">präsentierte ich euch bereits</a> die ersten Pläne für mein neues OpenSource Projekt. Lange Zeit war es sehr ruhig um das GeoPortal Projekt. Mittlerweile habe ich es jedoch wieder aufgegriffen und mir etwas Gedanken um den mislungen Start gemacht. Ich bin zu dem Schluss gekommen, dass es dem Projekt noch an Struktur und Planung mangelte. <del datetime="2010-08-17T12:33:24+00:00">Also habe ich mit Trac und einem SVN Repository eine <a href="http://www.geoportal.griesm.de/" target="_blank">Platform</a> geschaffen auf der sich der Entwicklungsprozess transparent verfolgen lässt.</del> Seit kurzem gibt es auch ein neues Logo.</p>
<p><strong>Das Projekt wurde eingestellt. Die Platform ist nicht mehr verfügbar. Den Quellcode findet ihr noch in einem <a href="http:/web.git.0l.de/geoportal.git">git Repository</a>.</strong></p>
<div id="attachment_358" class="wp-caption aligncenter" style="width: 274px"><a href="http://static.steffenvogel.de/wp-content/uploads/2009/03/geoportal.png"><img class="size-full wp-image-358" title="GeoPortal" src="http://static.steffenvogel.de/wp-content/uploads/2009/03/geoportal.png" alt="Das neue Logo" width="264" height="78" /></a><p class="wp-caption-text">Das neue Logo</p></div>
<p>Momentan bin ich bis voraussichtlich bis Anfang April noch dabei ein detailliertes <a href="http://trac.griesm.de/geo/wiki/Design" target="_blank">Konzept</a> zu entwickeln. Dies soll es vor allem einsteigenden Entwicklern ermöglichen sich leichter zurechtzufinden und einen roten Faden vorgeben.</p>
<h3 style="text-align: center;">Hier könnt ihr einen Blick auf die neue Platform werfen: <a href="http://www.geoportal.griesm.de/" target="_blank">http://www.geoportal.griesm.de</a></h3>
<p>Um auch gleichzeitig mein Englisch zu verbessern, habe ich mich entschieden diese Platform englischsprachig zu halten. Dazu gehören dann natürlich auch Kommentare, Commit Logs, der Bug Tracker und die Dokumentation.</p>
<p>Zudem hat sich das Projekt etwas neu orientiert.  Google Maps und andere kommerzielle Dienste wurden weitestgehen verbannt. Anstelle dessen wird eine Kombination aus <a href="http://www.openstreetmaps.org/" target="_blank">OpenStreetMaps</a> und <a href="http://www.openlayers.org/" target="_blank">OpenLayers</a> eingesetzt. Neue Punkte wie Real Time Tracking und Community Funktionen stehen jetzt auch auf der Aufgabenliste. Mit dem zunehmend günstiger werdenden mobilen Internet wird es bald möglich sein über all auf GeoPortal zuzugreifen. Auch das Real Time Tracking wird so rentabel. Die Daten sollen nun nicht mehr nur aus den Einträgen des Protals selber bestehen, sondern auch von externen Datenquellen bezogen werden. Dies soll mit Plugins realsiert werden. Mögliche Quellen wären zum Beispiel:</p>
<ul>
<li>GeoRSS Feeds</li>
<li>Wettervorhersagen</li>
<li>Geocaches</li>
<li>FON WLAN Spots</li>
<li>usw…</li>
</ul>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2009/03/13/geoportal-macht-fortschritte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rückgrat-beweisen.de</title>
		<link>http://www.steffenvogel.de/2009/02/08/ruckgrat-beweisende/</link>
		<comments>http://www.steffenvogel.de/2009/02/08/ruckgrat-beweisende/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 11:22:44 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Rückenschule]]></category>
		<category><![CDATA[Rückgrat beweisen!]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=314</guid>
		<description><![CDATA[Mal wieder ist es soweit. Ich kann euch einen weiteren abgeschlossenen Auftrag präsentieren. Diesmal ist es eine bewusst einfach gehaltene Seite für eine Rückenschule aus Darmstadt. www.rueckgrat-beweisen.de ist bis auf das Logo ist alles 100% selbstgecodet und designed. Natürlich wie gewohnt ohne Coldfusion oder andere ähnliche WYSIWYG Editoren. Die Seite ist  valid und nach anfänglichen [...]]]></description>
			<content:encoded><![CDATA[<p>Mal wieder ist es soweit. Ich kann euch einen weiteren abgeschlossenen Auftrag präsentieren. Diesmal ist es eine bewusst einfach gehaltene Seite für eine Rückenschule aus Darmstadt.</p>
<p><a href="http://www.rueckgrat-beweisen.de/" target="_blank">www.rueckgrat-beweisen.de</a> ist bis auf das Logo ist alles 100% selbstgecodet und designed. Natürlich wie gewohnt ohne Coldfusion oder andere ähnliche WYSIWYG Editoren.</p>
<p>Die Seite ist <img src="http://validator.w3.org/images/valid_icons/valid-xhtml10" alt="" width="88" height="31" /> valid und nach anfänglichen Problemen nun auch auf allen Browsern betrachtbar.</p>
<p>Hier noch ein Screenshoot:</p>
<p><a href="http://static.steffenvogel.de/wp-content/uploads/2009/02/ruckgrat.png"><img class="aligncenter size-medium wp-image-355" title="rueckgrat-beweisen.de Screenshot" src="http://static.steffenvogel.de/wp-content/uploads/2009/02/ruckgrat-300x244.png" alt="rueckgrat-beweisen.de Screenshot" width="300" height="244" /></a></p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2009/02/08/ruckgrat-beweisende/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Noxon 2 Audio Interna</title>
		<link>http://www.steffenvogel.de/2008/09/12/noxon-2-audio-interna/</link>
		<comments>http://www.steffenvogel.de/2008/09/12/noxon-2-audio-interna/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 21:12:52 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[interna]]></category>
		<category><![CDATA[noxon]]></category>
		<category><![CDATA[protokoll]]></category>
		<category><![CDATA[sniffing]]></category>
		<category><![CDATA[Terratec]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=169</guid>
		<description><![CDATA[Nachdem ich mich im vorherigen Beitrag über die Verwendung des Noxons als Last.fm Client ausgelassen habe, werde ich mich diesmal tiefer in die Interna des Streaming Clients wagen. Genauer geht es um das Ersetzten / Erweitern der vTuner Stationsliste und das Hinzufügen eigener Services in das &#8220;My NOXON&#8221; bzw. &#8220;Podcasts&#8221; Menü. Firmwareimage Bei der Analyse [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich mich im vorherigen Beitrag über die Verwendung des Noxons als Last.fm Client ausgelassen habe, werde ich mich diesmal tiefer in die Interna des Streaming Clients wagen.</p>
<p>Genauer geht es um das Ersetzten / Erweitern der vTuner Stationsliste und das Hinzufügen eigener Services in das &#8220;My NOXON&#8221; bzw. &#8220;Podcasts&#8221; Menü.</p>
<p><a rel="attachment wp-att-194" href="/2008/09/12/noxon-2-audio-interna/noxon/"><img class="aligncenter size-full wp-image-194" title="noxon" src="http://static.steffenvogel.de/wp-content/uploads/2008/09/noxon.gif" alt="" width="300" height="149" /></a> <span id="more-169"></span></p>
<h2>Firmwareimage</h2>
<p>Bei der Analyse des <a href="ftp://ftp.terratec.net/HomeEntertainment/NOXON2/">Firmwareimages</a> mit dem Hexeditor bin ich auf einige URLs gestoßen (Offset 3962E4). Diese scheinen zum Update der Stationslisten und Favoriten vorgesehen zu sein.</p>
<p><a rel="attachment wp-att-195" href="/2008/09/12/noxon-2-audio-interna/firmware/"><img class="aligncenter size-medium wp-image-195" title="firmware" src="http://static.steffenvogel.de/wp-content/uploads/2008/09/firmware-300x187.jpg" alt="" width="300" height="187" /></a></p>
<p>Dabei scheint es zwei verschiedene Typen von URLs zu geben (dazu gleich mehr):</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">RadioNativeEntries
RadioNative01
	RootName Podcasts
	RootUrl http://radio567.vtuner.com/setupapp/radio567/asp/BrowseXML/navXML.asp?gofile=S-ByLocation
	LoginUrl http://radio567.vtuner.com/setupapp/radio567/asp/BrowseXML/loginXML.asp?token=0
	RetrieveFavsURL http://radio567.vtuner.com/setupapp/radio567/asp/BrowseXML/FavXML.asp?empty=&amp;amp;sFavName=My%5F%5FFavorites
&nbsp;
RadioNative02
	RootName My NOXON
	RootUrl http://gatekeeper.my-noxon.net/RadioNative.php
	LoginUrl http://gatekeeper.my-noxon.net/RadioNativeLogin.php
	RetrieveFavsURL http://gatekeeper.my-noxon.net/RadioNativeFavorites.php
&nbsp;
RadioNative03
	RootName StarXed Services
	RootUrl http://starxed.homelinux.org/radionative-multi/index.xml
	LoginUrl http://noxonserver.de/RadioNativeLogin.php
	RetrieveFavsURL http://starxed.homelinux.org/radionative-multi/favs.php
&nbsp;
MultiRadioStationDB
MRSDB01
	UserFriendlyName Internet Radio
	url0 http://www.radio579.com/setupapp/bluewin/asp/rsdb/update.asp</pre></div></div>

<p>Hier eine Kurze Beschreibung der zwei Typen:</p>
<ul>
<li>Es gibt eine dynamische Variante. Hier wird bei jedem Verzeichniswechsel innerhalb der &#8220;My NOXON&#8221; &amp; &#8220;Podcasts&#8221; Ordnerstruktur ein neuer Request für die untergeordnete Ordnerstruktur gesendet (RadioNativeEntries). Der dritte Service &#8220;StarXed Services&#8221; scheint deaktiviert worden zu sein. Die <a href="http://starxed.homelinux.org">URL</a> zeigt auf einen DynDns Account von Manfred Dreese, der Entwickler des Noxons.</li>
<li>Und es gibt die statische Stationsliste von <a href="http://vtuner.com/">vtuner.com</a> die etwa 10000 Stationen enthällt und meistens nur manuell geupdatet wird. Alle 10000 Stationen werden aufeinmal gesendet (ca. 5 MB). Die Stationen werden hierbei im Noxon gespeichert (MultiRadioStationDB).</li>
</ul>
<p>Jeder Service besitzt auch eine Backup URL die benutzt wird, falls der standart URL nicht erreichbar ist.</p>
<h2>Sniffing</h2>
<p>Ein Mitsniffen des Netzwerkverkehrs des Noxon 2 Audio via ARP Poisoning konnte meine Vermutungen bestätigen. Das Noxon sendet je nach dem in welchem Menü man sich befindet zu dem jeweiligen Server einen HTTP-GET Request. Daraufhin erhällt es eine XML codierte Anwort die, die Stationen oder SubDirectories enthällt. An die URL werden per GET einige User spezifische Daten gehängt (hier am Beispiel der statischen Liste):</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.radio579.com/setupapp/bluewin/asp/rsdb/update.asp
?mac=001b9e******				&amp;lt;= MAC Adresse des Clients
&amp;uid=C089E7AE6153F372B20EB7A5********
&amp;ver=EMPTY
&amp;xml=2.0
&amp;mime=audio/mpeg-url
&amp;sw=24.6392					&amp;lt;= Firmware Version
&amp;bl=6166					&amp;lt;= Bootloader Version
&amp;hw=158.0					&amp;lt;= Hardware Revision
&amp;up=13693
&amp;lang=ger					&amp;lt;= Sprache
&amp;st=15167
&amp;rel=0</pre></div></div>

<p>Die Antworten dieser beider Typen unterscheiden sich. Hier zwei Kurze Beispiele:</p>
<p>RadioNativeEntry (dynamische Services):</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;">&lt; ?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;iso-8859-1&quot;</span> <span style="color: #000066;">standalone</span>=<span style="color: #ff0000;">&quot;yes&quot;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listofitems<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;itemtype<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Display<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/itemtype<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Your Streaming device is unknown! Please register at www.besonic.com!<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/display<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;itemtype<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Dir<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/itemtype<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Demo playlists<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;urldir<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://gatekeeper.my-noxon.net/RadioNative.php?service=1<span style="color: #ddbb00;">&amp;node=playlist&amp;token=215385555997023&lt;/urldir&gt;</span>
<span style="color: #ddbb00;">		&lt;noaudiocontent&gt;true&lt;/noaudiocontent&gt;</span>
<span style="color: #ddbb00;">		&lt;urldirbackup&gt;&lt;/urldirbackup&gt;</span>
<span style="color: #ddbb00;">		&lt;bookmarkshow&gt;&lt;/bookmarkshow&gt;</span>
<span style="color: #ddbb00;">	&lt;/item&gt;</span>
<span style="color: #ddbb00;">	&lt;item&gt;</span>
<span style="color: #ddbb00;">		&lt;itemtype&gt;Station&lt;/itemtype&gt;</span>
<span style="color: #ddbb00;">		&lt;stationid&gt;&lt;/stationid&gt;</span>
<span style="color: #ddbb00;">		&lt;stationname&gt;Ellen_Klinghammer - Mess - live *sample*&lt;/stationname&gt;</span>
<span style="color: #ddbb00;">		&lt;stationurl&gt;http://webservices.besonic.com/audio/00-1b-9e-22-e9-ec/124122.mp3&lt;/stationurl&gt;</span>
<span style="color: #ddbb00;">		&lt;stationdesc&gt;&lt;/stationdesc&gt;</span>
<span style="color: #ddbb00;">		&lt;stationformat&gt;&lt;/stationformat&gt;</span>
<span style="color: #ddbb00;">		&lt;stationlocation&gt;&lt;/stationlocation&gt;</span>
<span style="color: #ddbb00;">		&lt;stationbandwidth&gt;&lt;/stationbandwidth&gt;</span>
<span style="color: #ddbb00;">		&lt;stationmime&gt;&lt;/stationmime&gt;</span>
<span style="color: #ddbb00;">		&lt;bookmark&gt;http://gatekeeper.my-noxon.net/RadioNative.php?service=10002&amp;node=21cb40ef2acb0b15e2eea1c731de4472&amp;token=08920a9358128a9&lt;/bookmark&gt;</span>
<span style="color: #ddbb00;">	&lt;/item&gt;</span>
<span style="color: #ddbb00;">&lt;/listofitems&gt;</span></pre></div></div>

<p>MultiRadioStationDB (statische Stationsliste):</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;">&lt; ?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;iso-8859-1&quot;</span> <span style="color: #000066;">standalone</span>=<span style="color: #ff0000;">&quot;yes&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;station_db</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;2008-09-10T11:00:50Z&quot;</span> <span style="color: #000066;">format_version</span>=<span style="color: #ff0000;">&quot;2.0&quot;</span> <span style="color: #000066;">station_count</span>=<span style="color: #ff0000;">&quot;11337&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;database_info<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;format_version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/format_version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>vTuner<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;server_url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://www.radio579.com/setupapp/bluewin/asp/rsdb/update.asp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/server_url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>PREMIUM<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/database_info<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;station_list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;station<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;station_name</span> <span style="color: #000066;">size_limit</span>=<span style="color: #ff0000;">&quot;off&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Last.fm Proxy<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/station_name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Just a Proxy for the Social Music Network Last.fm<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bw<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>96<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bw<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://87.230.33.74:[port]/lastfm.mp3?pw=[pw]<span style="color: #ddbb00;">&amp;amp;</span>user=[user]<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mime_type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>m3u<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mime_type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/station<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/station_list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;directory_list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dir</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Internet Radio&quot;</span> <span style="color: #000066;">subdir_count</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">station_count</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dir<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;dir</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Dir&quot;</span> <span style="color: #000066;">subdir_count</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">station_count</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dir<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;dir</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Subdir&quot;</span> <span style="color: #000066;">subdir_count</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">station_count</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;station<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/station<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dir<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/directory_list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/station_db<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h2>Stations Liste modifizieren</h2>
<p>Die Antwort der statischen Liste besitzt jedoch im Zweig &lt;station_db&gt; -&gt; &lt;database_info&gt; ein Element &lt;server_url&gt; das die URL des Requests enthällt.</p>
<p>Durch DNS Spoofing ist es mir gelungen die Anfrage an <a href="http://www.radio579.com ">www.radio579.com </a>auf einen eigenen Server umzuleiten und so eine eigene Stationsliste ins Noxon zu laden. Ändert man in der eigenen Antwort den Inhalt des &lt;server_url&gt; Elements wird das DNS Spoofing für künftige Updatevorgänge überflüssig. Das Noxon speichert die empfange Server URL intern und greift später wieder darauf zurück, wenn es die Liste wieder updaten möchte. Erst nach einem Firmwareupdate / Reset wird wieder vom vTuner Server geupdated.</p>
<h2>Service hinzufügen</h2>
<p>Die URL der drei &#8220;RadioNative&#8221;-Eintrage lassen sich ohne Firmwaremodifikation nicht so einfach ändern. Die Verwaltung der Einträge im &#8220;Podcasts&#8221;-Menü läuft wieder über vTuner. Die Einträge im &#8220;my NOXON&#8221;-Menü werden über die <a href="http://www.my-noxon.net">my-noxon.net Website</a> geupdated und verwaltet. Manfred Dreese, der Entwickler des Noxons, hat auf seiner <a href="http://dreese.de/raw2/Projekte/page18/page18.html">Website</a> ein inoffizielles Projekt für die Integration des Ampache Medienservers ins Noxon Menü veröffentlicht. Die in diesem Projekt enthaltene PHP Klasse lassen sich durch entsprechende Modifikationen auch für die Integration eigener Menüs verwenden. Die angesprochene Klasse trägt den eigenen Service mit einer entsprechenden URL auf der my-noxon.net Webseite ein. Alles was innerhalb des eigenen Services angezeigt wird, läuft über die eigene URL.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2008/09/12/noxon-2-audio-interna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://webservices.besonic.com/audio/00-1b-9e-22-e9-ec/124122.mp3" length="0" type="audio/mpeg" />
		</item>
		<item>
		<title>My perfect coding setup</title>
		<link>http://www.steffenvogel.de/2008/05/25/my-perfect-coding-setup/</link>
		<comments>http://www.steffenvogel.de/2008/05/25/my-perfect-coding-setup/#comments</comments>
		<pubDate>Sun, 25 May 2008 11:15:00 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Setup]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=71</guid>
		<description><![CDATA[Irgendwie komme ich einfach nicht zum Programmieren. Die vielen Konfigurationsmöglichkeiten und Plugins von Eclipse faszinieren mich einfach zu sehr. Die letzten Tage habe ich damit verbracht mir ein schönes IDE zusammenzustellen. Zusammen mit meinem VServer ist daraus ein ziemlich komfortables und hoffentlich produktives System entstanden. Hier ein kurzer Überblick über die eingesetzte Software: Eclipse (Europa): [...]]]></description>
			<content:encoded><![CDATA[<p>Irgendwie komme ich einfach nicht zum Programmieren. Die vielen Konfigurationsmöglichkeiten und Plugins von Eclipse faszinieren mich einfach zu sehr.</p>
<p>Die letzten Tage habe ich damit verbracht mir ein schönes IDE zusammenzustellen. Zusammen mit meinem VServer ist daraus ein ziemlich komfortables und hoffentlich produktives System entstanden.</p>
<p>Hier ein kurzer Überblick über die eingesetzte Software:</p>
<p>Eclipse (Europa):</p>
<ul>
<li> Subversive</li>
<li>AVR-Eclipse</li>
<li>Mylyn</li>
<li>PDT</li>
<li>WST</li>
<li>JST</li>
<li>QT</li>
<li>CDT</li>
<li>JSEclipse</li>
<li>DTP</li>
<li>JDT</li>
<li>RSE</li>
<li>SQL Explorer</li>
<li>Clay Database</li>
</ul>
<p>Server:</p>
<ul>
<li>Trac 10.3</li>
<li>SVN 1.4</li>
</ul>
<p>Anfangs benutzte ich noch Zend Studio zum Programmieren. Nachdem auch Zend nun ihre IDE auf dem Eclipse Framework aufbaut (Zend Neon) habe ich mich entschieden auch auf ein Eclipse und damit Open Source basiertes System zu wechseln.</p>
<p>Nun habe ich alles unter einem Hut und eine immense Funktionsvielfalt. Früher musste ich für 2-3 verschiedenen IDEs die Bedienung und Shortcuts lernen. Nun ist alles einheitlich.</p>
<p>Besonders beindruckt bin ich von der Teamfähigkeit von Eclipse mit Mylyn, SVN &amp; CVS wird das Entwickeln im Team zum Kinderspiel.</p>
<p>Auch wenn ich meistens alleine an einem Projekt arbeite, haben Tools wie SVN, CVS und Mylyn extrem viele Vorteile, die ich nur zu gerne mal im Team nutzen würde.</p>
<p><strong>Update:</strong> Mittlerweile sind wir zu git <a href="../2010/08/17/git-scm/">gewechsel</a>.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2008/05/25/my-perfect-coding-setup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>n-Damen Problem</title>
		<link>http://www.steffenvogel.de/2008/05/14/n-damen-problem/</link>
		<comments>http://www.steffenvogel.de/2008/05/14/n-damen-problem/#comments</comments>
		<pubDate>Wed, 14 May 2008 20:00:27 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Backtick]]></category>
		<category><![CDATA[Backtrack]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[Damen]]></category>
		<category><![CDATA[n-Damen]]></category>
		<category><![CDATA[Problem]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/?p=74</guid>
		<description><![CDATA[Für meine morgige Informatik-Klausur habe ich mich mal wieder an C++ gewagt um einen Algorithmus zu implementieren. Die Hauptthemen der Klausur werden das n-Dame Problem und das Josephus Problem sein. Für das n-Damen-Problem habe ich eine iterative Backtracking-Implementation in C++ geschrieben. Gleichzeitig ist es mein erstes funktionsfähiges und komplexeres C++ Programm Um euch meine Ergebnisse [...]]]></description>
			<content:encoded><![CDATA[<p>Für meine morgige Informatik-Klausur habe ich mich mal wieder an C++ gewagt um einen Algorithmus zu implementieren. Die Hauptthemen der Klausur werden das <a href="http://de.wikipedia.org/wiki/Damenproblem#cite_note-Rivin-1">n-Dame Problem</a> und das Josephus Problem sein.</p>
<p><a rel="attachment wp-att-76" href="http://www.steffenvogel.de/2008/05/14/n-damen-problem/dame/"><img class="aligncenter size-medium wp-image-76" title="n-Damen Problem" src="http://static.steffenvogel.de/wp-content/uploads/2008/05/dame-300x288.jpg" alt="JS, PHP &amp; CSS Frontend" width="300" height="288" /></a></p>
<p>Für das n-Damen-Problem habe ich eine iterative <a href="/demos/snippets/ndame">Backtracking-Implementation</a> in C++ geschrieben. Gleichzeitig ist es mein erstes funktionsfähiges und komplexeres C++ Programm <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Um euch meine Ergebnisse zeigen zu können, habe ich mich bei der PHP, JS &amp; CSS Version meines Freundes Micha bedient und sie leicht angepasst.</p>
<p>Das PHP-Script ruft über den Backtick-Operator das C++ Programm auf und stellt es anschließen mit JS und CSS dar.</p>
<p>Um den Server zu schonen habe ich die maximale Feldgröße auf 13 beschränkt. Das sind zu mindestens schon mal 5 Damen mehr als bei der PHP-Version.</p>
<p>Ohne die Beschränkung sind auch Problemgrößen bis 16 in einem angemessenen Zeitrahmen zu bewältigen. An den Weltrekord (25 Damen) komme ich jedoch noch nicht <img src='http://static.steffenvogel.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Wer interesse an dem Quellcode hat, kann sich einfach per Mail melden.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2008/05/14/n-damen-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InteractivePHP</title>
		<link>http://www.steffenvogel.de/2008/03/26/interactivephp/</link>
		<comments>http://www.steffenvogel.de/2008/03/26/interactivephp/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 09:51:51 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[asynchron]]></category>
		<category><![CDATA[GD]]></category>
		<category><![CDATA[image]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/2008/03/26/interactivephp/</guid>
		<description><![CDATA[InteractivePHP ist ein kleines Experiment mit PHP, GD &#38; Javascript. Dabei habe ich versucht mit PHP &#38; GD animierte Bilder zu erstellen. Das Generieren von animierten GIFs mit GD ist kompliziert und langsam. Das Generieren eines einzellnen Frames ist dagegen denkbar einfach. InteractivePHP besteht aus zwei Komponenten: Dem Bild, das mit PHP &#38; GD immer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/demos/snippets/interactive_php">InteractivePHP</a> ist ein kleines Experiment mit PHP, GD &amp; Javascript.</p>
<p>Dabei habe ich versucht mit PHP &amp; GD animierte Bilder zu erstellen. Das Generieren von animierten GIFs mit GD ist kompliziert und langsam.  Das Generieren eines einzellnen Frames ist dagegen denkbar einfach. InteractivePHP besteht aus zwei Komponenten:</p>
<ol>
<li>Dem Bild, das mit PHP &amp; GD immer dynamisch generiert wird. Per GET wird dem Bild-Script die aktuelle Position der Animation mitgeteilt.</li>
<li>Der Oberfläche, die mit HTML und Javascript das animierte Bild anzeigt und mit einem Timer das Bild alle par Millisekunden neu lädt.</li>
</ol>
<p>In der Oberfläche habe ich einige Slider implementiert. Mit diesen kann man den Text drehen und verschieben.</p>
<p><a title="InteractivePHP" rel="attachment wp-att-68" href="http://www.steffenvogel.de/2008/03/26/interactivephp/interactivephp/"><img src="http://static.steffenvogel.de/wp-content/uploads/2008/03/interactivephp.thumbnail.jpg" alt="InteractivePHP" /></a></p>
<p><span id="more-67"></span>Das Script ist bisher nur mit dem Firefox getestet worden. Sollte keine Anmiation zusehen sein, kann es helfen die  den Regler &#8220;Animtions-Speed&#8221; zu nach rechts zu schieben. Je nach Internetverbindung sollte dann eine einigermaßen flüssige Animation zu sehen sein.</p>
<p>Sicherlich ist diese Technik nicht alltagstauglich. Die Serverbelastung bei mehreren Usern wäre einfach zu hoch. Für einen Ajax-Chat der die Nachrichtenfenster mit Smilies als Grafik darstellt, wäre diese Technik aber anwendbar, da jeder User die gleichen Bilder sehen würde. Ein Caching-Mechanismus könnte dieses Problem beheben.</p>
<p>Erstmal der Quellcode zum Laden: <a title="InteractivePHP Quellcode" href="http://static.steffenvogel.de/wp-content/uploads/2008/03/interactivephptar.gz">InteractivePHP Quellcode</a></p>
<p>Und hier verkürzt zum angucken:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> ?php
 <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-Type: image/png'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #990000;">putenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'GDFONTPATH='</span> <span style="color: #339933;">.</span> <span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$img</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecreate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #cc66cc;">4</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'imgsize'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #cc66cc;">3</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'imgsize'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$bg_col</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$img</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$text_col</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$img</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #990000;">imagettftext</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$img</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fontsize'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'angle'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'x'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'y'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$text_col</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'font'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'.ttf'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'text'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #990000;">imagepng</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$img</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #990000;">imagedestroy</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$img</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
?<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span></pre></div></div>

<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2008/03/26/interactivephp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Search highlighting via Referrer</title>
		<link>http://www.steffenvogel.de/2008/02/01/php-highlighting-funktion/</link>
		<comments>http://www.steffenvogel.de/2008/02/01/php-highlighting-funktion/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 14:41:57 +0000</pubDate>
		<dc:creator>Steffen Vogel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Funktion]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Griesheim]]></category>
		<category><![CDATA[Highlighting]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[Referrer]]></category>
		<category><![CDATA[TUS]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.steffenvogel.de/2008/02/01/php-highlighting-funktion/</guid>
		<description><![CDATA[Für die Handballseite des TuS Griesheims habe ich für die Suchfunktion eine Highlighting Funktion in PHP geschrieben. Diese hebt bestimmte Wörter eines Textes hervor. die Suchoperatoren der boolschen Volltextsuche von Mysql werden entfernt durch Leerzeichen getrennte Suchbegriffe werden einzeln hervorgehoben die Suchbegriffe werden mit verschieden Farben hervorgehoben Sonderzeichen usw. werden escaped Aus dem Referrer verschiedener [...]]]></description>
			<content:encoded><![CDATA[<p>Für die Handballseite des TuS Griesheims habe ich für die Suchfunktion eine Highlighting Funktion in PHP geschrieben. Diese hebt bestimmte Wörter eines Textes hervor.</p>
<ul>
<li>die Suchoperatoren der boolschen Volltextsuche von Mysql werden entfernt</li>
<li>durch Leerzeichen getrennte Suchbegriffe werden einzeln hervorgehoben</li>
<li>die Suchbegriffe werden mit verschieden Farben hervorgehoben</li>
<li>Sonderzeichen usw. werden escaped</li>
<li>Aus dem Referrer verschiedener Suchmaschinen werden die Suchbegriffe extrahiert und hervorgehoben</li>
</ul>
<p><span id="more-56"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> hl<span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #339933;">,</span> <span style="color: #000088;">$words</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$words</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$colors</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#ff9999'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'#ffff99'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'#ff99ff'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'#99ffff'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'#99ff99'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'#9999ff'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$words</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$word</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$word</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$colors</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
					<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/('</span> <span style="color: #339933;">.</span> <span style="color: #990000;">preg_quote</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$word</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">')(?![^&amp;lt; ]+&amp;gt;)/i'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&lt;span&gt;${1}&lt;/span&gt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$text</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> get_search_words<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$referer</span> <span style="color: #339933;">=</span> <span style="color: #990000;">urldecode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_REFERER'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/www\.google.*/i'</span><span style="color: #339933;">,</span><span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span>
		<span style="color: #339933;">||</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/search\.msn.*/i'</span><span style="color: #339933;">,</span><span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span>
		<span style="color: #339933;">||</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/search\.yahoo.*/i'</span><span style="color: #339933;">,</span><span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span>
		<span style="color: #339933;">||</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/search\.lycos\.com/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span>
		<span style="color: #339933;">||</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/search\.aol\.com/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span>
		<span style="color: #339933;">||</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/ask\.com/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span>
		<span style="color: #339933;">||</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/search\.netscape\.com/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/(www\.google.*)|(search\.msn.*)|(ask\.com)/i'</span><span style="color: #339933;">,</span><span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			 <span style="color: #000088;">$delimiter</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;q&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/search\.yahoo.*/i'</span><span style="color: #339933;">,</span><span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			 <span style="color: #000088;">$delimiter</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;p&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/(search\.lycos\.com)|(search\.aol\.com)|(search\.netscape\.com)/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			 <span style="color: #000088;">$delimiter</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;query&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/^.*&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$delimiter</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;=([^&amp;amp;]+)&amp;amp;?.*<span style="color: #000099; font-weight: bold;">\$</span>/i&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$query_terms</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pattern</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'$1'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'hl'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$query_terms</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rawurldecode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'hl'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">else</span>
		<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$search_array</span> <span style="color: #339933;">=</span> escape_search_words<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query_terms</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$search_array</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> escape_search_words<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query_terms</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$query_ops</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'+'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'-'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&amp;lt; '</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&amp;gt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'~'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'*'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&quot;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'('</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">')'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$query_terms</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$query_terms</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$query_terms</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[('</span> <span style="color: #339933;">.</span> <span style="color: #990000;">preg_quote</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query_ops</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">')]/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$query_terms</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$query_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_split</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/[\s,\+\.]+/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$query_terms</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$query_array</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Viel Spaß beim Coden&#8230;</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.steffenvogel.de/2008/02/01/php-highlighting-funktion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: www.steffenvogel.de @ 2012-02-08 11:58:01 by W3 Total Cache -->
