<?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>puRe - FL3X - Marcel Oelke</title>
	<atom:link href="http://blog.fl3x.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fl3x.de</link>
	<description>Thats all me!</description>
	<lastBuildDate>Sun, 25 Apr 2010 02:53:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Me on Soundcloud</title>
		<link>http://blog.fl3x.de/2008/11/12/me-on-soundcloud/</link>
		<comments>http://blog.fl3x.de/2008/11/12/me-on-soundcloud/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 12:57:48 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[soundcloud]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/?p=37</guid>
		<description><![CDATA[Soundcloud.com is a really great site for producers and music lovers. You can listen to some of my tunes using their player here:
New: Lush Lush by marceloelke
Updated: RR

RR Track by  marceloelke

MoboKoo

Marcel Oelke MoboKoo by   marceloelke

Fameball

Marcel Oelke &#8211; Fameball by   marceloelke

Comments are always welcome, here or on soundcloud.
More of my productions [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.soundcloud.com/">Soundcloud.com</a> is a really great site for producers and music lovers. You can listen to some of my tunes using their player here:</p>
<p><strong>New: Lush</strong><object height="81" width="100%"><param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fmarceloelke%2Flush&amp;show_comments=true&amp;auto_play=false&amp;color=427d2a"></param><param name="allowscriptaccess" value="always"></param> <embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fmarceloelke%2Flush&amp;show_comments=true&amp;auto_play=false&amp;color=427d2a" type="application/x-shockwave-flash" width="100%"></embed></object><span><a href="http://soundcloud.com/marceloelke/lush">Lush</a> by <a href="http://soundcloud.com/marceloelke">marceloelke</a></span></p>
<p><strong>Updated: RR</strong>
<div style="font-size: 11px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="81" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://player.soundcloud.com/player.swf?track=rr-track&amp;show_comments=true&amp;auto_play=false&amp;color=94576b" /><embed type="application/x-shockwave-flash" width="100%" height="81" src="http://player.soundcloud.com/player.swf?track=rr-track&amp;show_comments=true&amp;auto_play=false&amp;color=94576b" allowscriptaccess="always" wmode="transparent"></embed></object>
<div style="padding-top: 5px;"><a href="http://soundcloud.com/marceloelke/rr-track">RR Track</a> by  <a href="http://soundcloud.com/marceloelke">marceloelke</a></div>
</div>
<p><strong>MoboKoo</strong>
<div style="font-size: 11px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="81" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://player.soundcloud.com/player.swf?track=marcel-oelke-mobokoo&amp;show_comments=true&amp;auto_play=false&amp;show_playcount=true&amp;show_artwork=true&amp;color=514c67" /><embed type="application/x-shockwave-flash" width="100%" height="81" src="http://player.soundcloud.com/player.swf?track=marcel-oelke-mobokoo&amp;show_comments=true&amp;auto_play=false&amp;show_playcount=true&amp;show_artwork=true&amp;color=514c67" allowscriptaccess="always" wmode="transparent"></embed></object>
<div style="padding-top: 5px;"><a href="http://soundcloud.com/marceloelke/marcel-oelke-mobokoo">Marcel Oelke MoboKoo</a> by   <a href="http://soundcloud.com/marceloelke">marceloelke</a></div>
</div>
<p><strong>Fameball</strong>
<div style="font-size: 11px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="81" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://player.soundcloud.com/player.swf?track=marcel-oelke-fameball-pre3&amp;show_comments=true&amp;auto_play=false&amp;show_playcount=true&amp;show_artwork=true&amp;color=53674c" /><embed type="application/x-shockwave-flash" width="100%" height="81" src="http://player.soundcloud.com/player.swf?track=marcel-oelke-fameball-pre3&amp;show_comments=true&amp;auto_play=false&amp;show_playcount=true&amp;show_artwork=true&amp;color=53674c" allowscriptaccess="always" wmode="transparent"></embed></object>
<div style="padding-top: 5px;"><a href="http://soundcloud.com/marceloelke/marcel-oelke-fameball-pre3">Marcel Oelke &#8211; Fameball</a> by   <a href="http://soundcloud.com/marceloelke">marceloelke</a></div>
</div>
<p>Comments are always welcome, here or on soundcloud.<br />
More of my productions here: <a href="http://soundcloud.com/marceloelke">http://soundcloud.com/marceloelke</a></p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=37&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2008/11/12/me-on-soundcloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plusser.de ist online</title>
		<link>http://blog.fl3x.de/2008/03/05/plusserde-ist-online/</link>
		<comments>http://blog.fl3x.de/2008/03/05/plusserde-ist-online/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 14:53:56 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Discoveries]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2008/03/05/plusserde-ist-online/</guid>
		<description><![CDATA[Seit kurzer Zeit ist das Projekt (Plusser), an dem ich arbeite, mit dem ersten Release online. Plusser.de ist ein Portal, das über den schlichten Community-Gedanken hinaus geht. Plusser.de soll die Startseite ins Internet für alle ab ca. 40 Jahren werden, da Plusser.de Spaß, Kommunikation und Lernmöglichkeiten miteinander verbindet. Obwohl im Zentrum des Portals der Erfahrungsaustausch [...]]]></description>
			<content:encoded><![CDATA[<p>Seit kurzer Zeit ist das Projekt (<a href="http://www.plusser.de">Plusser</a>), an dem ich arbeite, mit dem ersten Release online. Plusser.de ist ein Portal, das über den schlichten Community-Gedanken hinaus geht. Plusser.de soll die Startseite ins Internet für alle ab ca. 40 Jahren werden, da Plusser.de Spaß, Kommunikation und Lernmöglichkeiten miteinander verbindet. Obwohl im Zentrum des Portals der Erfahrungsaustausch steht, bietet das Portal u.a. zusätzlich aktuelle Neuigkeiten, einen E-Mail-Dienst und die Möglichkeit alte Freunde wiederzufinden oder neue, interessante Menschen kennenzulernen. Derzeit tummeln sich noch ein paar kleinere Bugs auf der Seite, aber ich denke diese werden wir bald in den Griff bekommen. Wer Lust hat sich mal anzuschauen was ich im &#8220;echten Leben&#8221; so mache sollte einen Blick auf <a href="http://www.plusser.de">www.plusser.de</a> werfen ;).</p>
<p>Besonders interessant war für mich die Entwicklung des E-Mail-Clients und der Einsatz des <a href="http://framework.zend.com/">Zend Frameworks</a>, auf dem einigeTeile der Website basieren. Mittlerweile bin ich ein Großer Befürworter des ZF. Wir haben sehr viel Zeit durch den Einsatz des Frameworks gespart.</p>
<p>Jeder Benutzer kann sich übrigens bei der Registrierung entscheiden ob er sich mit seiner eigenen E-Mail Adresse anmelden möchte, oder ob er eine kostenlose Adresse von Plusser.de haben möchte. Momentan sind mehrere Web und E-Mail Server für Plusser.de im Einsatz, wobei ich denke dass wir schon bald aufstocken werden müssen. Wir verwenden übrigens mehrere MySQL 5 Server mit Replikation sowie PHP5. Für das Load-Balancing sind zwei BIG-IP&#8217;s von F5 zuständig.</p>
<p>So, nun aber back 2 work &#8230;</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=30&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2008/03/05/plusserde-ist-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who is the Subversion King in your Company?</title>
		<link>http://blog.fl3x.de/2007/11/26/who-is-the-subversion-king-in-your-company/</link>
		<comments>http://blog.fl3x.de/2007/11/26/who-is-the-subversion-king-in-your-company/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 17:05:11 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Discoveries]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2007/11/26/who-is-the-subversion-king-in-your-company/</guid>
		<description><![CDATA[Have you ever wanted to know who&#8217;s the top committer in your company?
In my previous company we etablished the term &#8220;CVS King&#8221;, a title comparable to &#8220;Employee of the month&#8221;. The developer with the most cvs commits was the &#8220;CVS King of the month&#8221;. We determined who was the &#8220;CSV King&#8221; using commit emails that [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wanted to know who&#8217;s the top <a href="http://en.wikipedia.org/wiki/Committer">committer</a> in your company?<br />
In my previous company we etablished the term &#8220;CVS King&#8221;, a title comparable to &#8220;Employee of the month&#8221;. The developer with the most cvs commits was the &#8220;CVS King of the month&#8221;. We determined who was the &#8220;CSV King&#8221; using commit emails that were sent to all developers on each cvs commit.<br />
Two years ago we switched to Subversion, so now we&#8217;re talking about the &#8220;Subversion King&#8221;. Naturally all this is anything but serious ;)</p>
<p>Anyway, today i programmed a little php script that uses a different approach to determine who is the &#8220;Subversion King of the Month&#8221;. It&#8217;s counting the line delta directly from the svn repository using <a href="http://svnbook.red-bean.com/en/1.4/svn.ref.svnlook.html">svnlook</a>. So the developer with the most lines added to the repository (not the most commits) is the number one.<br />
Here&#8217;s some example output (names are anonymized):</p>
<pre>--- Most productive users for 11/2007 ---
1   usera                6319      42.47%
2   userb                5797      38.96%
3   userc                1990      13.37%
4   userd                 773      05.20%
--- Most active commiters for 11/2007 ---
1   usera                  47         47%
2   userb                  34         34%
3   userc                   4          4%
4   userd                   2          2%
-----------------------------------------
</pre>
<p>The script reads all commits (revisions) for the current month, counts the line delta (how many lines have been added/removed) and the amount of commits.<br />
You can view the <a href="http://pure.rednoize.com/svnking/svnking.phps">highlighted source here</a> or <a href="http://pure.rednoize.com/svnking/svnking.php.txt">download the script here</a>. Use it on the command line like that:<br />
php -f /path/to/svn/repository</p>
<p>I know that the number of lines comitted may not be the one and only criteria to measure the productivity of a developer. But its an indicator to start with.<br />
So the question is: Are you the &#8220;Subversion King&#8221; in your company/project?</p>
<p>P.S.<br />
Again, please, dont take this serious ;)</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=29&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2007/11/26/who-is-the-subversion-king-in-your-company/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Record mouse movement using Javascript and AJAX</title>
		<link>http://blog.fl3x.de/2007/10/18/record-mouse-movement-using-javascript-and-ajax/</link>
		<comments>http://blog.fl3x.de/2007/10/18/record-mouse-movement-using-javascript-and-ajax/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 12:45:33 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Discoveries]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2007/10/18/record-mouse-movement-using-javascript-and-ajax/</guid>
		<description><![CDATA[I just found some piece of code i created one or two years ago. The &#8220;movelogger&#8221; records the mouse movement a users does on a web site. Just before the user leaves the current page, the recorded data get posted back to the server using AJAX.
The cool thing is that you can &#8220;replay&#8221; these movements [...]]]></description>
			<content:encoded><![CDATA[<p>I just found some piece of code i created one or two years ago. The &#8220;movelogger&#8221; records the mouse movement a users does on a web site. Just before the user leaves the current page, the recorded data get posted back to the server using AJAX.<br />
The cool thing is that you can &#8220;replay&#8221; these movements afterwards. The movelogger records clicks on links and other elements. In replay mode this events are fired in the exact same order as they have been recorded.<br />
That way it would be possible to record a websesion (the click-flow) in a heavy AJAX based application. It would even be possible to record keyboard strokes and other type of events.</p>
<p><a href="http://pure.rednoize.com/movelogger/">Check out the little demo of the movelogger here.</a></p>
<p>This technique may be usefull or not. But some use cases could be:</p>
<ul>
<li>Instead of eye tracking, use mouse tracking.</li>
<li>Analyze the usage of ajax enabled websites.</li>
<li>Spionage and other Bad Things&trade; (not recommended).</li>
</ul>
<p>The whole thing is coded in javascript using Prototype and script.aculo.us with some php code on the server side.</p>
<p>The data recorded on the demo website is stored only in the php session on the server and gets deleted automatically, soon after you close your browser. But theoreticaly it would be possible to store that data in some kind of database for further analysis.</p>
<p>Please let me know what you think about this. Do you have any ideas for other uses of this technique ?</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=28&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2007/10/18/record-mouse-movement-using-javascript-and-ajax/feed/</wfw:commentRss>
		<slash:comments>59</slash:comments>
		</item>
		<item>
		<title>Random Timestamps in MySQL</title>
		<link>http://blog.fl3x.de/2007/10/14/random-timestamps-in-mysql/</link>
		<comments>http://blog.fl3x.de/2007/10/14/random-timestamps-in-mysql/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 16:38:57 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2007/10/14/random-timestamps-in-mysql/</guid>
		<description><![CDATA[Have you ever needed a random timestamp in MySQL? For example to create demo data programmatically? Here&#8217;s my solution:

SELECT FROM_UNIXTIME(
  FLOOR(
    UNIX_TIMESTAMP('2007-01-01') +
        RAND() *
	(UNIX_TIMESTAMP('2007-01-03')-UNIX_TIMESTAMP('2007-01-01'))
    )
) as random_timestamp;

Or if you prefer a function:

CREATE FUNCTION random_timestamp (start TIMESTAMP, end TIMESTAMP)
RETURNS TIMESTAMP NOT [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever needed a random timestamp in MySQL? For example to create demo data programmatically? Here&#8217;s my solution:</p>
<pre name="code" class="sql">
SELECT FROM_UNIXTIME(
  FLOOR(
    UNIX_TIMESTAMP('2007-01-01') +
        RAND() *
	(UNIX_TIMESTAMP('2007-01-03')-UNIX_TIMESTAMP('2007-01-01'))
    )
) as random_timestamp;
</pre>
<p>Or if you prefer a function:</p>
<pre name="code" class="sql">
CREATE FUNCTION random_timestamp (start TIMESTAMP, end TIMESTAMP)
RETURNS TIMESTAMP NOT DETERMINISTIC
RETURN FROM_UNIXTIME(
  FLOOR(
    UNIX_TIMESTAMP(start) +
    RAND() *
    (UNIX_TIMESTAMP(end)-UNIX_TIMESTAMP(start))
  )
);

mysql> select random_timestamp('2007-10-01', NOW());
+---------------------------------------+
| random_timestamp('2007-10-01', NOW()) |
+---------------------------------------+
| 2007-10-05 23:07:11                   |
+---------------------------------------+
1 row in set (0.00 sec)
</pre>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=27&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2007/10/14/random-timestamps-in-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to name something that imports and exports ?</title>
		<link>http://blog.fl3x.de/2007/10/11/how-to-name-something-that-imports-and-exports/</link>
		<comments>http://blog.fl3x.de/2007/10/11/how-to-name-something-that-imports-and-exports/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 11:56:22 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2007/10/11/how-to-name-something-that-imports-and-exports/</guid>
		<description><![CDATA[Simple Question:
When a script/function/class exports something, I name it &#8220;exporter&#8221;.
When it imports something, I name it &#8220;importer&#8221;.
How do I name it when it does both?
What do you think? Write your thoughts into the comments please. Thanks!
]]></description>
			<content:encoded><![CDATA[<p>Simple Question:<br />
When a script/function/class exports something, I name it &#8220;exporter&#8221;.<br />
When it imports something, I name it &#8220;importer&#8221;.<br />
How do I name it when it does both?</p>
<p>What do you think? Write your thoughts into the comments please. Thanks!</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=26&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2007/10/11/how-to-name-something-that-imports-and-exports/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>New minimal music</title>
		<link>http://blog.fl3x.de/2007/07/15/new-minimal-music/</link>
		<comments>http://blog.fl3x.de/2007/07/15/new-minimal-music/#comments</comments>
		<pubDate>Sun, 15 Jul 2007 15:38:57 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2007/07/15/new-minimal-music/</guid>
		<description><![CDATA[Hey guys
Here are some of my latest tunes. I guess its something between minimal, electro and techno. None of these is finished 100% yet, but you&#8217;ll get the idea.
http://pure.rednoize.com/tunes/
By the way, the picture in the background is taken in my favorite club, the water gate in Berlin.
I appreciate any comments !
Thanks
puRe
]]></description>
			<content:encoded><![CDATA[<p>Hey guys</p>
<p>Here are some of my latest tunes. I guess its something between minimal, electro and techno. None of these is finished 100% yet, but you&#8217;ll get the idea.</p>
<p><a href="http://pure.rednoize.com/tunes/">http://pure.rednoize.com/tunes/</a></p>
<p>By the way, the picture in the background is taken in my favorite club, the <a href="http://www.water-gate.de/">water gate</a> in Berlin.<br />
I appreciate any comments !</p>
<p>Thanks<br />
puRe</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=25&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2007/07/15/new-minimal-music/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL Performance: Use counter tables</title>
		<link>http://blog.fl3x.de/2007/04/03/mysql-performance-use-counter-tables/</link>
		<comments>http://blog.fl3x.de/2007/04/03/mysql-performance-use-counter-tables/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 11:17:58 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2007/04/03/mysql-performance-use-counter-tables/</guid>
		<description><![CDATA[I guess many of you know, that using SELECT count(*) FROM table is problematic and slow when using Innodb tables.
This actually only applies to COUNT(*) queries without WHERE a clause as mentioned in the MySQL Performance Blog.
But if you got some slow count query in your application the best way to increase its performance is [...]]]></description>
			<content:encoded><![CDATA[<p>I guess many of you know, that using SELECT count(*) FROM table is problematic and slow when using Innodb tables.<br />
This actually only applies to COUNT(*) queries without WHERE a clause as mentioned in the <a href="http://www.mysqlperformanceblog.com/2006/12/01/count-for-innodb-tables/">MySQL Performance Blog</a>.</p>
<p>But if you got some slow count query in your application the best way to increase its performance is to replace / remove it.</p>
<p>So if you are going do to &#8220;SELECT count(*) FROM products&#8221; the best way, is to have a separated table<br />
that stores the number of products. If you&#8217;re inserting a row increment the counter, if you&#8217;re deleting a row, decrement it.</p>
<p>Here is some example:</p>
<pre name="code" class="sql">CREATE TABLE counter( number_of_products int(10) DEFAULT '0' NOT NULL);</pre>
<p>Increment when you&#8217;re adding a new product to the products table:</p>
<pre name="code" class="sql">UPDATE counter SET number_of_products = number_of_products +1;</pre>
<p>Decrement when you&#8217;re removing a product:</p>
<pre name="code" class="sql">UPDATE counter SET number_of_products = number_of_products -1;</pre>
<p>In one of my applications i have the case that i have many reads on a table, but just a few updates / writes to the table. The count was in my case not related to a table, but specific to a row of it.</p>
<p>Example:</p>
<pre name="code" class="sql">CREATE TABLE user (
user_id int(10) DEFAULT '0' NOT NULL,
username int(10) DEFAULT '0' NOT NULL,
...
number_of_purchases int(10) DEFAULT '0' NOT NULL,
);</pre>
<p>Scenario:<br />
Just imagine that the number of purchases a user has made is somehow complicated to calculate and query. That&#8217;s why we store the number directly in the user table.<br />
We also have a website that produces a lot of reads to this table column, but (unfortunately) its quite seldom that a user purchases something. So using this complicated count query in each website impression would be slow.</p>
<p>What comes handy here is using MySQL 5 triggers.<br />
With triggers we can calculate the number_of_purchases each time a purchase is made by a user and update the users number_of_purchases column.</p>
<p>Example:</p>
<pre name="code" class="sql">
delimiter //
create trigger trg_update_user_purchases after update on purchases
 for each row begin
call count_and_update_user_purchases(new.user_id);
 end;
//
delimiter ;

delimiter //
create trigger trg_insert_user_purchases after insert on purchases
 for each row begin
call count_and_update_user_purchases(new.user_id);
 end;
//
delimiter ;

delimiter //
create trigger trg_delete_user_purchases after delete on purchases
 for each row begin
call count_and_update_user_purchases(new.user_id);
 end;
//
delimiter ;
</pre>
<p>So each time a records in the purchase table is inserted, updated or deleted the user table gets automaticly updated.</p>
<p>Your application gains the performance from selecting a static int field instead of executing complex count queries. Additionally your application is not bloated with unnecessary code to increment and decrement the count column, because the trigger does this automatically for you.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=23&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2007/04/03/mysql-performance-use-counter-tables/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MD5 Hash Database Update &#8211; Supports SHA1 Now</title>
		<link>http://blog.fl3x.de/2006/11/27/md5-hash-database-update-supports-sha1-now/</link>
		<comments>http://blog.fl3x.de/2006/11/27/md5-hash-database-update-supports-sha1-now/#comments</comments>
		<pubDate>Mon, 27 Nov 2006 09:47:30 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2006/11/27/md5-hash-database-update-supports-sha1-now/</guid>
		<description><![CDATA[<a href="http://md5.rednoize.com/"><img src="http://md5.rednoize.com/images/md5_logo_xs.gif" alt="md5.rednoize.com - md5/sha1 hash database" style="float: left;padding: 4px;border:0;" /></a><a href="http://md5.rednoize.com/">Md5.rednoize.com</a> has been updated yesterday. The web site features a new design and has gained support for sha1 hashes. The interface has been ajaxified and the amount of hashes stored in the database has been increased again. The database stores now about 35,000,000 md5/sha1 hashes with their plain text counterpart. And md5.rednoize.com got a new logo as well ;)]]></description>
			<content:encoded><![CDATA[<p><a href="http://md5.rednoize.com/"><img src="http://md5.rednoize.com/images/md5_logo_xs.gif" alt="md5.rednoize.com - md5/sha1 hash database" style="float: left;padding: 4px;border:0;" /></a><a href="http://md5.rednoize.com/">Md5.rednoize.com</a> has been updated yesterday. The web site features a new design and has gained support for sha1 hashes. The interface has been ajaxified and the amount of hashes stored in the database has been increased again. The database stores now about 35,000,000 md5/sha1 hashes with their plain text counterpart. And md5.rednoize.com got a new logo as well ;)</p>
<p>The &#8220;URL API&#8221; has not been changed. You still may use the parameter &#8220;<a href="http://md5.rednoize.com/?p&#038;q=a669c4570f99fab64c98225fc33601e6">p</a>&#8221; for plain text and &#8220;<a href="http://md5.rednoize.com/?xml&#038;q=a669c4570f99fab64c98225fc33601e6">xml</a>&#8221; for xml output. The new optional url parameter &#8220;<a href="http://md5.rednoize.com/?s=sha1">s</a>&#8221; defines the search mode (currently supported are md5 and sha1).</p>
<p>I would greatly appreciate your feedback ;)</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=22&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2006/11/27/md5-hash-database-update-supports-sha1-now/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>MySQL: Collation matters when using unique indexes</title>
		<link>http://blog.fl3x.de/2006/11/26/mysql-collation-matters-when-using-unique-indexes/</link>
		<comments>http://blog.fl3x.de/2006/11/26/mysql-collation-matters-when-using-unique-indexes/#comments</comments>
		<pubDate>Sun, 26 Nov 2006 15:52:35 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Discoveries]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2006/11/26/mysql-collation-matters-when-using-unique-indexes/</guid>
		<description><![CDATA[When using a uniqie index on a text field in mysql, the column collation setting is very important. The collation settings of a column does not only affect sorting and comparsion, but also unique indexes. So you can not insert "a" and "A" into a table that has a unique index on a column that has a case-insensitive collation.]]></description>
			<content:encoded><![CDATA[<p>When using a uniqie index on a text field in mysql, the column collation setting is very important. The collation settings of a column does not only affect sorting and comparsion, but also unique indexes. So you can not insert &#8220;a&#8221; and &#8220;A&#8221; into a table that has a unique index on a column that has a case-insensitive collation. The <a href="http://dev.mysql.com/doc/refman/5.0/en/charset-general.html">mysql manual</a> about collations: &#8220;A <em>character set</em> is a set of symbols and encodings. A <em>collation</em> is a set of rules for comparing characters in a character set.&#8221;</p>
<p>Here is an example:<br />
The column text in table text1 has a case-sensitive collation (_cs suffix), the column in text2 has a  case-insensitive collation (_ci suffix).</p>
<pre name="code" class="sql">
CREATE TABLE text1 (
  `text` varchar(50) character set latin1 collate latin1_general_cs NOT NULL default '',
  UNIQUE KEY uniq_text (text)
) ENGINE=MyISAM
;
INSERT INTO text1 (text) VALUES ('a');
Query OK, 1 row affected (0.00 sec)

INSERT INTO text1 (text) VALUES ('A');
Query OK, 1 row affected (0.00 sec)

CREATE TABLE text2 (
  `text` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '',
  UNIQUE KEY uniq_text (text)
) ENGINE=MyISAM
;
INSERT INTO text2 (text) VALUES ('a');
Query OK, 1 row affected (0.00 sec)

INSERT INTO text2 (text) VALUES ('A');
ERROR 1062 (23000): Duplicate entry 'A' for key 1
</pre>
<p>Constraints are also affected by collation:<br />
The queries on table text1 give different results (a and A), the two queries on table text2 result in the same row twice (a).</p>
<pre name="code" class="sql">
SELECT * FROM text1 WHERE text = 'a';
+------+
| text |
+------+
| a    |
+------+
1 row in set (0.01 sec)

SELECT * FROM text1 WHERE text = 'A';
+------+
| text |
+------+
| A    |
+------+
1 row in set (0.00 sec)

SELECT * FROM text2 WHERE text = 'a';
+------+
| text |
+------+
| a    |
+------+
1 row in set (0.00 sec)

SELECT * FROM text2 WHERE text = 'A';
+------+
| text |
+------+
| a    |
+------+
1 row in set (0.00 sec)
</pre>
<p>You can display all available collations using
<pre name="code" class="sql">SHOW COLLATION;</pre>
<p> or
<pre name="code" class="sql">SHOW COLLATION LIKE 'latin%';</pre>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=21&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2006/11/26/mysql-collation-matters-when-using-unique-indexes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chora Subversion Viewer Path Error</title>
		<link>http://blog.fl3x.de/2006/10/17/chora-subversion-viewer-path-error/</link>
		<comments>http://blog.fl3x.de/2006/10/17/chora-subversion-viewer-path-error/#comments</comments>
		<pubDate>Tue, 17 Oct 2006 16:23:39 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2006/10/17/chora-subversion-viewer-path-error/</guid>
		<description><![CDATA[Today i faced one of these problems that i really hate. I mean these kind of problems that are absolutly bogus.
Even google had no solution for this one handy. And thats why i am posting this solution, so that anyone that could have the same problem may find the solution a little bit faster.]]></description>
			<content:encoded><![CDATA[<p>Today i faced one of these problems that i really hate. I mean these kind of problems that are absolutly bogus.<br />
Even google had no solution for this one handy. And thats why i am posting this solution, so that anyone that could have the same problem may find the solution a little bit faster.</p>
<p>I installed the <a href="http://www.horde.org/chora/">Chora</a> cvs/svn viewer today to browse our svn repositories. Beside tons of other problems (especially with Horde) I encountered this one:</p>
<p>Chora displays an error message when trying to browse a subversion repository:<br />
<code>Error   svn: Can't check path '/root/.subversion': Permission denied</code></p>
<p>or in german:</p>
<p><code>Fehler  svn: Kann Pfad '/root/.subversion' nicht prüfen: Keine Berechtigung</code></p>
<p>After 2 hours of googling (usualy takes 2 minutes) I found the following bug report that gave <strong>the</strong> useful hint:</p>
<p><a href="http://websvn.tigris.org/issues/show_bug.cgi?id=32">http://websvn.tigris.org/issues/show_bug.cgi?id=32</a></p>
<p><em>Apache now runs as www, and the &#8220;USER&#8221; environment is set to &#8220;bob&#8221;.<br />
However, the &#8220;HOME&#8221; variable is (incorrectly) set to &#8220;/root&#8221;.</p>
<p>When PHP calls the svn function, it seems that it picks up the HOME<br />
variable. SVN must probably look for it&#8217;s preferences inside<br />
~/.subversion, ~ being the HOME variable (/root). Since it runs as<br />
www, it fails and spits out a permission error. I am not sure if the<br />
USER variable changes something in this.</em></p>
<p>Because upgrading our subversion version (1.3.2) was not possible, here&#8217;s the quick-hack solution:<br />
Edit horde/chora/lib/base.php and add<br />
<code>putenv ("HOME=/var/lib/www");</code><br />
somewhere.<br />
Replace /var/lib/www with the home directory of your apache user (wwwrun on suse 9.3).</p>
<p>Damn .. i hate such waste of time &#8230;</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=20&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2006/10/17/chora-subversion-viewer-path-error/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google likes md5();</title>
		<link>http://blog.fl3x.de/2006/09/03/google-likes-md5/</link>
		<comments>http://blog.fl3x.de/2006/09/03/google-likes-md5/#comments</comments>
		<pubDate>Sun, 03 Sep 2006 11:09:56 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2006/09/03/google-likes-md5/</guid>
		<description><![CDATA[<a href="http://md5.rednoize.com/"><img src="http://pure.rednoize.com/images/md5_logo_50.gif" alt="md5.rednoize.com logo" style="float: left;padding: 4px;border:0;" /></a> At least on my monitor md5(); is visible on the first page without scrolling when <a href="http://www.google.com/search?hl=en&#038;q=md5&#038;btnG=Google+Search">searching for "md5"</a>. So my page is on position 7 or 8 (depends whether you count php.net twice or not). Thats so awesome!
Oh .. and here is a <a href="http://pure.rednoize.com/images/google_likes_md5.gif">screenshot</a>.]]></description>
			<content:encoded><![CDATA[<p><a href="http://md5.rednoize.com/"><img src="http://pure.rednoize.com/images/md5_logo_50.gif" alt="md5.rednoize.com logo" style="float: left;padding: 4px;border:0;" /></a> At least on my monitor md5(); is visible on the first page without scrolling when <a href="http://www.google.com/search?hl=en&#038;q=md5&#038;btnG=Google+Search">searching for &#8220;md5&#8243;</a>. So my page is on position 7 or 8 (depends whether you count php.net twice or not). Thats so awesome!<br />
Oh .. and here is a <a href="http://pure.rednoize.com/images/google_likes_md5.gif">screenshot</a>.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=19&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2006/09/03/google-likes-md5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Md5 Database Under Attack</title>
		<link>http://blog.fl3x.de/2006/09/02/md5-database-under-attack/</link>
		<comments>http://blog.fl3x.de/2006/09/02/md5-database-under-attack/#comments</comments>
		<pubDate>Sat, 02 Sep 2006 14:57:16 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Discoveries]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/2006/09/02/md5-database-under-attack/</guid>
		<description><![CDATA[<a href="http://md5.rednoize.com/"><img src="http://pure.rednoize.com/images/md5_logo_50.gif" alt="md5.rednoize.com logo" style="float: left;padding: 4px;border:0;" /></a> The amount of the stored hashes on md5.rednoize.com has made a large jump in the last few days. The site in the <a href="http://www.google.com/search?q=cache:ey2reqMVDTEJ:md5.rednoize.com/+http://md5.rednoize.com/&#038;hl=en">google cache</a> (dated from 30 Aug 2006 19:49:32 GMT) counts 5,531,616 md5 strings.
The actual count is about 6,363,467.]]></description>
			<content:encoded><![CDATA[<p><a href="http://md5.rednoize.com/"><img src="http://pure.rednoize.com/images/md5_logo_50.gif" alt="md5.rednoize.com logo" style="float: left;padding: 4px;border:0;" /></a> The amount of the stored hashes on <a href="http://md5.rednoize.com/">md5.rednoize.com</a> has made a large jump in the last few days. The site in the <a href="http://www.google.com/search?q=cache:ey2reqMVDTEJ:md5.rednoize.com/+http://md5.rednoize.com/&#038;hl=en">google cache</a> (dated from 30 Aug 2006 19:49:32 GMT) counts 5,531,616 md5 strings.<br />
The actual count is about 6,363,467.</p>
<p>The ip 24.141.55.x has added about 400,000 plain text strings to the database.<br />
It started (21 Aug 2006 12:27:50) with &#8220;3QOOk28N&#8221; and &#8220;NtIDSzQ7&#8243;, then went over to dictionary words<br />
like &#8220;codex&#8221;, &#8220;hazard&#8221;, &#8220;strength&#8221; to finaly end the mass attack with &#8220;Zyzzogeton&#8221; (what ever this is supposed to mean) on 02 Sep 2006 06:57:45. For more then ten days the server had a somehow higher load then usual thanks to this guy (although i did not recognized it before yesterday).</p>
<p>In contrast to the &#8220;donor of hashes&#8221; mentioned above, the ip 195.114.42.x has requested clear text strings for about 53,800 md5 hashes. The attack started on 02 Sep 2006 04:27:24 and lasted until 12:49 the same day. 53,800 queries in 8 hours is a good score.</p>
<p>So, in reaction to this abuse, the web site sleeps some milliseconds with each query from now on.<br />
Normal users should not be affected by this, but these mass query scripts should be slowed down, at least a little bit.</p>
<p>Actually I do not have anything against such mass queries to my server. However the other services running on the machine should not be impaired.</p>
<p>Conclusion: Thanks to the donor, shame on the <a href="http://en.wikipedia.org/wiki/Leech_%28computing%29">leecher</a>.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=18&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2006/09/02/md5-database-under-attack/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hiphop-Battles.com 2.0 finally online</title>
		<link>http://blog.fl3x.de/2006/09/01/hiphop-battlescom-20-finally-online/</link>
		<comments>http://blog.fl3x.de/2006/09/01/hiphop-battlescom-20-finally-online/#comments</comments>
		<pubDate>Fri, 01 Sep 2006 16:29:55 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/archives/17/</guid>
		<description><![CDATA[<img src="http://pure.rednoize.com/images/hiphop_battles_v2_001.jpg" alt="Hiphop-Battles.com 2.0 screenshot" style="float: left;padding: 4px;" />The most recent project i am working on, <a href="http://www.hiphop-battles.com">Hiphop-Battles.com</a>, went finally online today. My partners and me are working on this project for about 2 years now. The team consists of Eike Reifhardt (<a href="http://www.hiphop-battles.com/user/1111/">BioPhonC</a>) who made all the artistic stuff (web design, CI, and all other types of media), Michael Scheel (<a href="http://www.hiphop-battles.com/user/1003/">StarbuG</a>) who is the original founder of hiphop-battles.com and manages all the organizational stuff, and me (<a href="http://www.hiphop-battles.com/user/1027/">puRe</a>) who made all the web site programming, database layout and such things.

We've put a lot new features into the new version, which i will describe detailed in forthcoming posts.
For now you may read the <a href="http://www.prweb.com/releases/2006/9/prweb430845.htm">official press release</a>.]]></description>
			<content:encoded><![CDATA[<p><img src="http://pure.rednoize.com/images/hiphop_battles_v2_001.jpg" alt="Hiphop-Battles.com 2.0 screenshot" style="float: left;padding: 4px;" />The most recent project i am working on, <a href="http://www.hiphop-battles.com">Hiphop-Battles.com</a>, went finally online today. My partners and me are working on this project for about 2 years now. The team consists of Eike Reifhardt (<a href="http://www.hiphop-battles.com/user/1111/">BioPhonC</a>) who made all the artistic stuff (web design, CI, and all other types of media), Michael Scheel (<a href="http://www.hiphop-battles.com/user/1003/">StarbuG</a>) who is the original founder of hiphop-battles.com and manages all the organizational stuff, and me (<a href="http://www.hiphop-battles.com/user/1027/">puRe</a>) who made all the web site programming, database layout and such things.</p>
<p>We&#8217;ve put a lot new features into the new version, which i will describe detailed in forthcoming posts.<br />
For now you may read the <a href="http://www.prweb.com/releases/2006/9/prweb430845.htm">official press release</a>:</p>
<hr />
<p><i>On September 1st, one of the leading international hip-hop battle websites, <a href="http://www.hiphop-battles.com," title="www.hiphop-battles.com" target="_blank">www.hiphop-battles.com</a>, relaunched to introduce a brand new design and a new free arena for graffiti battles.</i></p>
<p>Frankfurt am Main, Germany (PRWEB) September 1, 2006 -&#8211; With the launch of the second version of <a href="http://www.hiphop-battles.com" title="www.hiphop-battles.com" target="_blank">www.hiphop-battles.com</a> on September 1st, a third battle arena for graffiti graphic battles was introduced to the website, next to the older arenas for rap and beatbox audio battles. The graffiti arena was a response to the high demand in the hip-hop and graffiti scene, which currently lacks legal ways for competing art skills with graffiti writers from all over the world.</p>
<p>Hiphop-battles.com provides hip-hop fans and artists with free access to over 15,000 legal hip-hop mp3s and a way to vote in ongoing battles in a democratic voting system. The ranking system tells the visitor about &#8220;who is hot and who is not&#8221; and orients new users, to find the most interesting battles. In its second version, <a href="http://www.hiphop-battles.com" title="www.hiphop-battles.com" target="_blank">www.hiphop-battles.com</a> also received a total makeover, and shines with a brand new design. Switching to another interface language or to another arena got much easier, and can now be controlled from everywhere on the website.</p>
<p>With the rap, beatbox and the new graffiti battle arena, <a href="http://www.hiphop-battles.com" title="www.hiphop-battles.com" target="_blank">www.hiphop-battles.com</a> now combines three important elements of hip-hop, and strengthens its position as leading hip-hop battle website.</p>
<p>For more information about the relaunch of hiphop-battles.com or the new online graffiti battle feature, please visit <a href="http://www.hiphop-battles.com/press/" title="www.hiphop-battles.com/press/" target="_blank">www.hiphop-battles.com/press/</a>, or contact Michael Scheel.</p>
<p>About hiphop-battles.com</p>
<p><a href="http://www.hiphop-battles.com" title="www.hiphop-battles.com" target="_blank">www.hiphop-battles.com</a> is a unique online competition platform for international hip-hop artists focusing on audio and graphic battles. With over 11,000 members and more then 8000 battles we have become one of the leading hip-hop competition websites. HipHop-Battles.com enables artists to compete their rap, beatbox and graffiti skills with other artists from around the globe. Hip-hop fans get free access to over 15,000 legal mp3s and the constantly growing community is producing new content on a daily basis.</p>
<p>###</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=17&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2006/09/01/hiphop-battlescom-20-finally-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Materialized Views in MySQL</title>
		<link>http://blog.fl3x.de/2005/11/12/dynamic-materialized-views-in-mysql/</link>
		<comments>http://blog.fl3x.de/2005/11/12/dynamic-materialized-views-in-mysql/#comments</comments>
		<pubDate>Sat, 12 Nov 2005 22:05:25 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Discoveries]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/?p=13</guid>
		<description><![CDATA[In one of my latest postings I mentioned a way to create semi materialized views in MySQL. The problem was that the solution required a stored procedure for every materialized view. That&#8217;s very annoying. So I looked for a more general and dynamic approach. The result is another stored procedure with 3 parameters:

the name for [...]]]></description>
			<content:encoded><![CDATA[<p>In one of my<a href="http://pure.rednoize.com/archives/9/"> latest postings</a> I mentioned a way to create semi materialized views in MySQL. The problem was that the solution required a stored procedure for every materialized view. That&#8217;s very annoying. So I looked for a more general and dynamic approach. The result is another stored procedure with 3 parameters:</p>
<ul>
<li>the name for the source table / view</li>
<li>the primary key columns of the source table / view</li>
<li>the desired name for the materialized view</li>
</ul>
<p>Basically this procedure does the following:</p>
<ul>
<li>It drops the materialized view if it already exists</li>
<li>It creates the materialized view with the structure and data of the source table</li>
<li>It adds a primary key to the newly created materialized view</li>
</ul>
<p>However the procedure does not create triggers on the table. This could be an improvement for a next version ;)<br />
To call the procedure use:</p>
<pre name="code" class="sql">CALL create_mview('big_table', 'id', 'view_m_big_table');</pre>
<p>And here&#8217;s the procedure:</p>
<pre name="code" class="sql">DROP PROCEDURE IF EXISTS create_mview;
DELIMITER //
CREATE PROCEDURE create_mview (IN source_table VARCHAR(150), IN primary_key VARCHAR(150), IN target_table  VARCHAR(150))
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
MODIFIES SQL DATA
BEGIN
-- declare some variables ...
DECLARE m_view_name VARCHAR(150);
DECLARE create_m_view_sql TEXT;
DECLARE drop_m_view_sql TEXT;
DECLARE add_primary_key_sql TEXT;
--
-- create the sql queries to drop the materialized view, create the tmaterialized view
-- and add a primary key to the materialized view.
SET m_view_name:=concat('view_m_', source_table);
SET @drop_m_view_sql:=concat('DROP TABLE IF EXISTS ',target_table);
SET @create_m_view_sql:=concat('CREATE TABLE ', target_table , ' SELECT * FROM ', source_table);
SET @add_primary_key_sql:=concat('ALTER TABLE ', target_table , ' ADD PRIMARY KEY (', primary_key ,')');
--
-- drop the materialized view if it exists
PREPARE stmt1 FROM @drop_m_view_sql;
EXECUTE stmt1;
--
-- create the table
PREPARE stmt2 FROM @create_m_view_sql;
EXECUTE stmt2;
--
-- add the primary key
PREPARE stmt3 FROM @add_primary_key_sql;
EXECUTE stmt3;
--
DEALLOCATE PREPARE stmt1;
DEALLOCATE PREPARE stmt2;
DEALLOCATE PREPARE stmt3;
--
END; //
DELIMITER ;
</pre>
<p>You can <a href="http://pure.rednoize.com/download/create_mview.sql">download</a> the procedure also.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=13&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2005/11/12/dynamic-materialized-views-in-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Checking password strength using md5.rednoize.com and AJAX</title>
		<link>http://blog.fl3x.de/2005/11/10/checking-password-strength-using-md5rednoizecom-and-ajax/</link>
		<comments>http://blog.fl3x.de/2005/11/10/checking-password-strength-using-md5rednoizecom-and-ajax/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 13:36:25 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/?p=12</guid>
		<description><![CDATA[With some inspiration from Ben Ramsey i created a little demo for using my md5 database during the signup process on a website.
This example demonstrates the use of the MD5 database at http://md5.rednoize.com and AJAX to check password strength during signup on a website. After supplying a username and a password, a md5 hash of [...]]]></description>
			<content:encoded><![CDATA[<p>With some inspiration from <a href="http://benramsey.com/archives/essential-php-security-and-md5-reversing/">Ben Ramsey</a> i created a little demo for using my md5 database during the signup process on a website.</p>
<p>This example demonstrates the use of the MD5 database at <a href="http://md5.rednoize.com">http://md5.rednoize.com</a> and <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">AJAX</a> to check password strength during signup on a website. After supplying a username and a password, a md5 hash of the password is generated using Paul Johnston&#8217;s <a href="http://pajhome.org.uk/crypt/md5/">md5 javascript library</a>.</p>
<p>The hash of the password (not the password itself) is then sent to http://md5.rednoize.com. If the website returns a result for the given password (hence the hash password combination is stored in the md5 database) it can be regarded as &#8220;insecure&#8221;. Because the md5 hash of the password, and not the password itself is transferred, no sensitive data will be saved at md5.rednoize.com.</p>
<p>For sure not every password that is <em>not</em> stored in the MD5 database can be considered secure. I recommend adding some extra checks (existence of upper and lowercase characters, numbers, special characters and so on) to increase the password strength.</p>
<p>You can see the example in action here: <a href="http://md5.rednoize.com/ajax/">http://md5.rednoize.com/ajax/</a></p>
<p>Feel free to use the code in this example any play with it ;)<br />
To implement this on your own webserver you would need some kind of proxy script that redirects the AJAX calls from your own server to the md5 database.</p>
<p><ins datetime="2005-11-10T15:39:31+00:00">Update:</ins></p>
<p>I recommend saving passwords using <a href="http://en.wikipedia.org/wiki/Password_cracking#Salting">salted </a>md5 hashes. Salting in short: &#8220;When the user sets a password, a short string called the salt is suffixed to the password before encrypting it; the salt is stored along with the encrypted password so that it can be used during verification. Since the salt is different for each user, the attacker can no longer use a single encrypted version of each candidate password. If the salt is long enough, the attacker must repeat the encryption of every guess for each user, and this can only be done after obtaining the encrypted password record for that user.&#8221;</p>
<p>Here&#8217;s a little example using salted passwords:</p>
<p>To authenticate users on your website (login) your probably using a SQL statement like this one:<br />
<code>SELECT user_id, username FROM users WHERE passsword = MD5('thepassword');</code></p>
<p>This is insecure. If someone would know the md5 hash of the password, and the password is weak, it could be &#8220;reversed&#8221; using the MD5 database.</p>
<p>Use salted passwords to avoid this:<br />
<code>SELECT user_id, username FROM users WHERE passsword = MD5(user_id || 'some_secret_string' || 'thepassword');</code></p>
<p>Its also possible to store the salt along the password in the database.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=12&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2005/11/10/checking-password-strength-using-md5rednoizecom-and-ajax/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Hamachi &#8211;  Secure Mediated peer to peer VPN</title>
		<link>http://blog.fl3x.de/2005/11/07/hamachi-secure-mediated-peer-to-peer-vpn/</link>
		<comments>http://blog.fl3x.de/2005/11/07/hamachi-secure-mediated-peer-to-peer-vpn/#comments</comments>
		<pubDate>Mon, 07 Nov 2005 10:09:16 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Discoveries]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/?p=10</guid>
		<description><![CDATA[
Hamachi is a piece of software that belongs to the very rare category &#8220;Double-click to install and it works&#8221;. If you ever wanted to build a &#8220;private&#8221; VPN, take Hamachi into consideration.
&#8220;Hamachi is fast, secure and simple. It is also free.&#8221; The client is available for Windows and Linux.
The Hamachi website describes how it works:
&#8220;Hamachi [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://pure.rednoize.com/images/hamachi_screenshot.png" alt="Hamachi Screenshot" align="left" /><br />
<a href="http://www.hamachi.cc/">Hamachi</a> is a piece of software that belongs to the very rare category &#8220;Double-click to install and it works&#8221;. If you ever wanted to build a &#8220;private&#8221; <a href="http://en.wikipedia.org/wiki/Virtual_private_network">VPN,</a> take Hamachi into consideration.<br />
&#8220;Hamachi is fast, secure and simple. It is also free.&#8221; The client is available for Windows and Linux.</p>
<p>The <a href="http://www.hamachi.cc/howitworks">Hamachi website</a> describes how it works:<br />
&#8220;Hamachi is a UDP-based virtual private networking system. Its peers utilize the help of a 3rd node called mediation server to locate each other and to boot strap the connection between themselves. The connection itself is direct and once it&#8217;s established no traffic flows through our servers.&#8221;</p>
<p>The installation procedure is very easy:<br />
In short: download, double-click, join or create a network, invite your friends, done.</p>
<p>After install you&#8217;ve got a new network adapter with a 5.x.x.x IP attached to it. Now you can create a &#8220;Network&#8221; (optionally with a password) and start inviting your friends to join your network. After inviting your friends your see their IP addresses in the &#8220;contact window&#8221;. It’s now possible to ping them, browse their files or whatever. You can only ping the IP addresses that are in your network / contact list.</p>
<p>The great thing about Hamachi is that it works with almost any network configuration. It doesn’t matter if your behind a firewall or <a href="http://en.wikipedia.org/wiki/Network_address_translation">nated</a>. Hamachi is also secure. The complete traffic between the peers is SSL <a href="http://www.hamachi.cc/security">encrypted</a>.</p>
<p>Most people use Hamachi to play multiplayer games using the VPN.<br />
I use Hamachi to grant my friends access to the Apache virtual hosts that are running on my development machine.</p>
<p>The only disadvantage of Hamachi is that the mediation-server is not available. That’s why I only use it for &#8220;private&#8221; things. To connect to my companies network I’m using <a href="http://openvpn.net/">OpenVPN</a> which is also quite comfortable.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=11&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2005/11/07/hamachi-secure-mediated-peer-to-peer-vpn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Materialized Views in MySQL</title>
		<link>http://blog.fl3x.de/2005/10/26/materialized-views-in-mysql/</link>
		<comments>http://blog.fl3x.de/2005/10/26/materialized-views-in-mysql/#comments</comments>
		<pubDate>Wed, 26 Oct 2005 19:17:59 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/?p=9</guid>
		<description><![CDATA[Update: Dynamic Materialized Views
Please read this article also. Its an improved versio of the technique described below.
Today i found a workaround for a feature that was realy missing in MySQL.
Let&#8217;s say you got a really complicated query that requires a lot of cpu and time to complete, but the resulting data is quite static. That&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: <a href="http://pure.rednoize.com/2005/11/12/dynamic-materialized-views-in-mysql/">Dynamic Materialized Views</a><br />
Please read this article also. Its an improved versio of the technique described below.</strong></p>
<p>Today i found a workaround for a feature that was realy missing in MySQL.<br />
Let&#8217;s say you got a really complicated query that requires a lot of cpu and time to complete, but the resulting data is quite static. That&#8217;s the perfect opportunity to use a &#8220;Materialized View&#8221;. The Bad Thing™ is, mysql does not support what&#8217;s usually known as materialized views. But today i found a nice workaround for MySQL 5.<br />
But first let&#8217;s clarify what a materialized view is. I found a good explanation <a href="http://www.adp-gmbh.ch/ora/concepts/materialized_view.html">here</a>:<br />
&#8220;A materialized view is a stored summary containing precomputes results (originating from an SQL select statement).<br />
As the data is precomputed, materialized views allow for (seemingly) faster dataware query answers.&#8221;</p>
<p>Okay, so a materialized view saves the result of a query somewhere (e.g. into another table)  else.</p>
<p>In my case i had to calculate a rating of users based on votes from other users (Website of <a href="http://www.hiphop-battles.com">http://www.hiphop-battles.com</a> btw) .  I&#8217;m doing this with some nested views (also a new feature in MySQL5). The whole calculation and query took 0.5 seconds on my athlon xp 3200 machine. Thats way to much to run this query on each page impression.</p>
<p>The trick is a new feature that was introduced in MySQL 5. From the <a href="http://dev.mysql.com/doc/refman/5.0/en/create-table.html">MySQL Manual:</a><br />
&#8220;In MySQL 5.0, you can create one table from another by adding a SELECT statement at the end of the CREATE TABLE statement:</p>
<pre name="code" class="sql">CREATE TABLE new_tbl SELECT * FROM orig_tbl;</pre>
<p>So its possible to create a new table with structure based on an already existing table. The data of the table gets copied also.<br />
To create a table of a very processing intensive view we run the following query:</p>
<pre name="code" class="sql">CREATE TABLE view_m_demo SELECT * FROM view_demo;</pre>
<p>To make it little bit better we put this code into a procedure (also a new feature in MySQL5):</p>
<pre name="code" class="sql">DELIMITER //
CREATE PROCEDURE updateDemoView ()
BEGIN
    DROP TABLE IF EXISTS view_m_demo;
    CREATE TABLE view_m_demo SELECT * FROM view_demo;
END; //
DELIMITER ;</pre>
<p>Now we can call this procedure using a trigger:</p>
<pre name="code" class="sql">delimiter //
CREATE TRIGGER T_updateDemoView AFTER INSERT ON some_involved_table
  FOR EACH ROW BEGIN
  /* calls the procedure to update out materialized view on each insert */
    CALL updateDemoView ();
END //
delimiter ;</pre>
<p>The same can be done with an &#8220;AFTER UPDATE&#8221; trigger. dont use database triggers if the data in the original tables get updated frequently.<br />
Another option in this case is to update the view time triggerd via cron.<br />
To update the materialized view every minute use:</p>
<pre name="code" class="sql">*/1 * * * * echo "CALL updateDemoView ();"  |  mysql -u user --password=pass database</pre>
<p>I hope this helps somebody as much as it helps my projects website loading time ;)<br />
before: 0,48 sec<br />
after: 0,003 sec</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=10&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2005/10/26/materialized-views-in-mysql/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>2,007,161 md5 strings</title>
		<link>http://blog.fl3x.de/2005/10/26/2007161-md5-strings/</link>
		<comments>http://blog.fl3x.de/2005/10/26/2007161-md5-strings/#comments</comments>
		<pubDate>Wed, 26 Oct 2005 18:27:51 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/?p=8</guid>
		<description><![CDATA[Today i took a look at my md5 site and found out that i (we)  broke the 2 million barrier. The database has now  2,007,161 md5 strings with their counter part stored. 222,101 queries where run against the database till now. The size of the database has grown to 320 MB on the [...]]]></description>
			<content:encoded><![CDATA[<p>Today i took a look at my<a href="http://md5.rednoize.com/"> md5 site</a> and found out that i (we)  broke the 2 million barrier. The database has now  2,007,161 md5 strings with their counter part stored. 222,101 queries where run against the database till now. The size of the database has grown to 320 MB on the disk.</p>
<p>I even found out that some crazy people use my website in their scripts and programs. Someone (not me) created a <a href="http://mycroft.mozdev.org/download.html?submitform=Find&amp;category=6">search plugin</a> for mozilla. Another <a href="http://paradigma.pt/ja/slog/comments.php?y=05&amp;m=09&amp;entry=entry050908-154448">guy</a> created a <a href="http://paradigma.pt/ja/slog/downloads/reversemd5.phps">PHP Class</a> that uses my site. Again another guy created an <a href="http://66.249.93.104/search?q=cache:ZMd7O5TkCXoJ:pastebin.com/335909+md5.rednoize.com&amp;hl=en">IRC bot</a> that &#8220;reverses&#8221; given md5 strings on command &#8230; using my site.<br />
The website currently produces ~300 MB traffic per month, so thats okay for now.</p>
<p>I really never expected that this little project attracts so much attention ;)</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=9&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2005/10/26/2007161-md5-strings/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MD5 Database</title>
		<link>http://blog.fl3x.de/2005/05/28/md5-database/</link>
		<comments>http://blog.fl3x.de/2005/05/28/md5-database/#comments</comments>
		<pubDate>Sat, 28 May 2005 15:33:23 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Useless]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/archives/6/</guid>
		<description><![CDATA[I just did some work on my little MD5 project today. I added Plain and XML Output to http://md5.rednoize.com. For example some website could use this to automaticly check if a password is &#8220;safe&#8221; uppon registration.
But actually this project is kinda useless i think. At least it was big fun to read posts like this [...]]]></description>
			<content:encoded><![CDATA[<p>I just did some work on my little MD5 project today. I added <a href="http://md5.rednoize.com/?q=06cf664ae1e21c4a6ba3ac9a2fa49ffa&#038;p">Plain</a> and <a href="http://md5.rednoize.com/?q=06cf664ae1e21c4a6ba3ac9a2fa49ffa&#038;xml">XML</a> Output to <a href="http://md5.rednoize.com">http://md5.rednoize.com</a>. For example some website could use this to automaticly check if a password is &#8220;safe&#8221; uppon registration.<br />
But actually this project is kinda useless i think. At least it was big fun to read posts like <a href="http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:205912">this</a> and <a href="http://www.contnew.com/tech/webmaster/other/2005/3/49_186653_01.html">that</a> (<a href="http://translate.google.com/translate?hl=en&#038;sl=zh-CN&#038;u=http://www.contnew.com/tech/webmaster/other/2005/3/49_186653_01.html&#038;prev=/search%3Fq%3Drednoize%2Bmd5%26hl%3Den%26lr%3D%26client%3Dfirefox-a%26rls%3Dorg.mozilla:de-DE:official">translated</a>).</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=7&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2005/05/28/md5-database/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Sunday HipHop-Battles</title>
		<link>http://blog.fl3x.de/2005/01/05/sunday-hiphop-battles/</link>
		<comments>http://blog.fl3x.de/2005/01/05/sunday-hiphop-battles/#comments</comments>
		<pubDate>Wed, 05 Jan 2005 09:51:18 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/archives/5/</guid>
		<description><![CDATA[A new tune from me that i produced exclusively for  HipHop-Battles can be found on the site under Beats / Loops (you need to signup and login there to see that menu entry). Its called Sunday. Not for any particular reason. I&#8217;m just so uncreativ when it comes to naming stuff.
The tune has been [...]]]></description>
			<content:encoded><![CDATA[<p>A new tune from me that i produced exclusively for  <a href="http://www.hiphip-battles.com">HipHop-Battles</a> can be found on the site under Beats / Loops (you need to signup and login there to see that menu entry). Its called Sunday. Not for any particular reason. I&#8217;m just so uncreativ when it comes to naming stuff.</p>
<p>The tune has been used for 5 MC Battles so far.<br />
<a href="http://rap.hiphop-battles.com/index.php?target=battlepage&#038;bid=241">Brainfreeze vs mc31 (German)</a><br />
<a href="http://rap.hiphop-battles.com/index.php?target=battlepage&#038;bid=252">sebbo vs loony-tune (German)</a><br />
<a href="http://rap.hiphop-battles.com/index.php?target=battlepage&#038;bid=254">sebbo vs Rap-O (German)</a><br />
<a href="http://rap.hiphop-battles.com/index.php?target=battlepage&#038;bid=249">Lennoxxx vs Scheuerman (German)</a><br />
<a href="http://rap.hiphop-battles.com/index.php?target=battlepage&#038;bid=237">MrMef vs Die-anna</a></p>
<p>The quality of the recorded raps is not allways good but its all just for fun.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=6&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2005/01/05/sunday-hiphop-battles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lorem Ipsum</title>
		<link>http://blog.fl3x.de/2004/11/21/lorem-ipsum/</link>
		<comments>http://blog.fl3x.de/2004/11/21/lorem-ipsum/#comments</comments>
		<pubDate>Sun, 21 Nov 2004 00:41:58 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Useless]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/archives/4/</guid>
		<description><![CDATA[Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus sem erat, sollicitudin vitae, auctor ac, aliquet lobortis, enim. Nam quis mi. Maecenas nibh quam, convallis et, placerat quis, mollis eu, tortor. Quisque posuere quam lobortis felis. Suspendisse facilisis dolor ut ipsum. Duis feugiat augue nec nunc. Maecenas ut justo. Nulla facilisi. Aliquam aliquet, dui eget [...]]]></description>
			<content:encoded><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus sem erat, sollicitudin vitae, auctor ac, aliquet lobortis, enim. Nam quis mi. Maecenas nibh quam, convallis et, placerat quis, mollis eu, tortor. Quisque posuere quam lobortis felis. Suspendisse facilisis dolor ut ipsum. Duis feugiat augue nec nunc. Maecenas ut justo. Nulla facilisi. Aliquam aliquet, dui eget elementum commodo, ligula augue porttitor nibh, id tempus nulla nibh quis quam. Integer massa urna, commodo sodales, tincidunt id, euismod quis, elit. Mauris dapibus justo eleifend enim. Pellentesque lacinia felis sed nulla. Nullam justo. Morbi venenatis. Morbi diam. Nunc a nibh. Sed mattis mi dapibus dui. Aenean erat enim, lobortis ut, egestas nec, nonummy et, dui.</p>
<p>Donec pharetra augue id dolor. Quisque et massa. Nullam volutpat consectetuer ante. Maecenas ornare. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Duis vitae eros vitae nulla tincidunt iaculis. Nam nulla. Suspendisse metus augue, dictum vitae, varius a, molestie ut, lorem. Donec malesuada dolor quis tortor. Suspendisse in nibh. Suspendisse id arcu eu massa interdum egestas. Sed libero. Pellentesque sed mauris.</p>
<p>Nullam egestas pede in leo. Aliquam ante urna, blandit ac, tincidunt eu, varius ornare, ligula. Vestibulum mattis gravida felis. Vivamus faucibus orci nec quam. Maecenas aliquam pede sed lacus. Donec at ligula. Vestibulum eget nibh vel nibh tincidunt ullamcorper. Etiam quis turpis sit amet arcu malesuada placerat. Vestibulum eget wisi at arcu feugiat egestas. Integer tellus. Pellentesque vitae pede. Vestibulum id eros. Cras non sapien. Pellentesque turpis urna, rhoncus sed, ultrices eget, bibendum egestas, urna. Phasellus porttitor metus nec lacus. Vivamus hendrerit massa quis tortor. Sed sodales condimentum quam. Integer tempus hendrerit ipsum. Nullam scelerisque est a eros. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;</p>
<p>Proin tincidunt quam at wisi. Nullam ornare, tellus et eleifend tincidunt, urna magna consectetuer libero, in fermentum felis neque non ante. Phasellus tincidunt nunc quis massa. Integer non enim id ante tincidunt vestibulum. Morbi tincidunt. Proin vulputate ornare ante. Nulla facilisis. Pellentesque eros libero, ultrices quis, fringilla in, interdum et, libero. Cras est. Nunc auctor. Aenean tincidunt.</p>
<p>Donec elementum turpis quis dolor. Nullam a felis ac elit accumsan aliquam. Sed vel pede. Praesent sodales lorem sed augue. Proin eu quam. Proin dolor quam, dapibus eu, ullamcorper a, condimentum et, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec a eros. Mauris sit amet lorem vitae neque volutpat fringilla. Mauris dui. Sed mauris sapien, rhoncus eget, sodales a, fringilla a, mauris. Nullam placerat velit et orci. Nam vel lorem eu nunc iaculis tempus.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=5&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2004/11/21/lorem-ipsum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://blog.fl3x.de/2004/11/19/hello-world-2/</link>
		<comments>http://blog.fl3x.de/2004/11/19/hello-world-2/#comments</comments>
		<pubDate>Fri, 19 Nov 2004 15:45:08 +0000</pubDate>
		<dc:creator>Marcel Oelke</dc:creator>
				<category><![CDATA[Useless]]></category>

		<guid isPermaLink="false">http://pure.rednoize.com/?p=2</guid>
		<description><![CDATA[Hi, this is my first post on my first Blog. I just installed this wonderfull piece of software.
I&#8217;ll write more later.
]]></description>
			<content:encoded><![CDATA[<p>Hi, this is my first post on my first Blog. I just installed this wonderfull piece of software.<br />
I&#8217;ll write more later.</p>
<img src="http://blog.fl3x.de/?ak_action=api_record_view&id=4&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.fl3x.de/2004/11/19/hello-world-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

