<?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>DubbelBlog &#187; Programmierung</title>
	<atom:link href="http://www.haukeluebbers.de/category/programmierung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.haukeluebbers.de</link>
	<description>Webworker.</description>
	<lastBuildDate>Sun, 25 Jul 2010 16:38:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Bann Trashmailer Addon für Webspell</title>
		<link>http://www.haukeluebbers.de/2010/07/bann-trashmailer-addon-fuer-webspell/</link>
		<comments>http://www.haukeluebbers.de/2010/07/bann-trashmailer-addon-fuer-webspell/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 15:46:24 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[bann]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[trash]]></category>
		<category><![CDATA[webspell]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=255</guid>
		<description><![CDATA[Auf Wunsch von &#8220;existence&#8221; aus dem webspell.org Forum habe ich ein Addon für webSPELL 4.2.2a entwickelt, dass die E-Mail-Adresse eines Nutzers, der sich registrieren will, mit einer vom Administrator der Seite veränderbaren Liste von sogenannten Trash-Mailern abgleicht. Bei einem positiven Befund wird der Nutzer darauf hingewiesen doch bitte seine echte e-Mail-Adresse anzugeben. Download (Version 0.5, [...]]]></description>
			<content:encoded><![CDATA[<p>Auf Wunsch von &#8220;existence&#8221; aus dem webspell.org Forum habe ich ein Addon für webSPELL 4.2.2a entwickelt, dass die E-Mail-Adresse eines Nutzers, der sich registrieren will, mit einer vom Administrator der Seite veränderbaren Liste von sogenannten Trash-Mailern abgleicht.<span id="more-255"></span></p>
<p>Bei einem positiven Befund wird der Nutzer darauf hingewiesen doch bitte seine echte e-Mail-Adresse anzugeben.</p>
<p><a title="Download Bann Trashmailer Addon for Webspell" href="http://www.haukeluebbers.de/wp-content/uploads/2010/07/bann_trashmailer_addon-0.5.zip" target="_self">Download</a> (Version 0.5, Deutsch und Englisch)</p>
<p>Die read_me.txt:</p>
<blockquote><p># German (English Version at the end of the file)</p>
<p>Bann Trashmailer Addon wurde von HappyCode<br />
www.happycode.de unter GNU GPL License entwickelt<br />
Neuigkeiten und Updates werden bei uns im Blog veröffentlicht<br />
Der Hersteller übernimmt keinerlei Haftung für Schäden,<br />
die eventuell durch diese Software entstehen könnten.</p>
<p>Dieses Addon wurde für Webspell Version<br />
webSPELL 4.2.2a entwickelt, funktioniert<br />
aber eventuell auch auf anderen Versionen</p>
<p>_Installation Einfach_</p>
<p>1.  Backup aller Dateien anlegen, die durch dieses Addon verändert werden<br />
Dateien, die durch dieses Addon verändert werden:<br />
register.php<br />
language/de/register.php<br />
language/uk/register.php<br />
2.  Überprüfen, ob andere Addons diese Dateien bereits verändert haben<br />
Wenn ja: gehe zur Installation Manuell<br />
Wenn nein: Folge weiter diesen Schritten<br />
3.  Alle Dateien des Addons in das Webspell-Verzeichnis ziehen<br />
4.  Bei Bedarf Liste der Trash-Mailer in der Datei<br />
banned_email_providers.php erweitern/verändern</p>
<p>_Installation Manuell_</p>
<p>Diese Installation ist anzuwenden, wenn eine der Dateien<br />
register.php, language/de/register.php oder language/uk/register.php<br />
durch andere Addons verändert wurden.</p>
<p>1. Backup aller zu verändernden Dateien anlegen<br />
2. Datei banned_email_providers.php in das Webspell-Verzeichnis ziehen<br />
3. In der Datei register.php direkt unter dem Webspell Kommentar<br />
ganz oben folgendes einfügen:</p>
<pre class="brush: php;">/* Bann Trashmailer Addon function */
function validate_email_provider($mail)
{
include (&quot;banned_email_providers.php&quot;); // List of banned providers
$mail_provider = explode(&quot;@&quot;,$mail);
if (count($mail_provider) == 2) // if an @ was found
{
foreach ($banned_email_provider as $provider)
{
if (preg_match(&quot;%&quot;.$provider.&quot;%i&quot;,trim($mail_provider[1])))
{
return false; // the provider was banned
}
}
return true;
}
return true;
}
/* End of Bann Trashmailer Addon function*/</pre>
<p>4. In der Datei register.php nach der Zeile:</p>
<pre class="brush: php;">// check e-mail
if(!validate_email($mail)) $error[]=$_language-&gt;module['invalid_mail'];</pre>
<p>folgenden Code einfügen:</p>
<pre class="brush: php;">// check e-mail trash mailers
if (!validate_email_provider($mail)) $error[]= $_language-&gt;module['invalid_email_provider'];</pre>
<p>5. In der Datei languages/de/register.php eine neue Zeile vor dem abschließenden ); einfügen:</p>
<pre class="brush: php;">'invalid_email_provider'=&gt;'Dieser E-Mail Anbieter wurde gesperrt. Bitte melde dich mit einer andern E-Mail-Adresse an.'</pre>
<p>!!! Danach in der darüberliegenden Zeile nach dem letzten &#8216; ein Kommata einfügen</p>
<p>Installation abgeschlossen<br />
Bei Fragen/Problemen hilft webspell.org oder happycode.de</p>
<p>#English</p>
<p>Bann Trashmailer Addon was developed by HappyCode<br />
www.happycode.de under GNU GPL License<br />
For news and updates check out www.happycode.de</p>
<p>The manufacturer assumes no liability for damages<br />
which could possibly result from this software.</p>
<p>This Addon was developed for the Webspell Version<br />
webSPELL 4.2.2a, but may work also with other versions</p>
<p>_Installation Easy_</p>
<p>1.  Create a backup of all files this addon will edit<br />
Files edited by the addon:<br />
register.php<br />
language/de/register.php<br />
language/uk/register.php<br />
2.  Check whether other addons edited these files before<br />
Yes: Go to the Installation by hand<br />
No: Follow these steps<br />
3.  Copy all files of the Addon in your Webspell folder<br />
4.  You can add and edit trashmail-Provider in the file banned_email_providers.php</p>
<p>_Installation by hand_</p>
<p>Follow this steps, if other Addons edited this files before:<br />
register.php, language/de/register.php oder language/uk/register.php</p>
<p>1. Create a backup of all files, which will be edited<br />
2. Copy banned_email_providers.php in your webspell folder<br />
3. Add following code directly under the Webspell-Comment at the top of the file register.php</p>
<pre class="brush: php;">/* Bann Trashmailer Addon function */
function validate_email_provider($mail)
{
include (&quot;banned_email_providers.php&quot;); // List of banned providers
$mail_provider = explode(&quot;@&quot;,$mail);
if (count($mail_provider) == 2) // if an @ was found
{
foreach ($banned_email_provider as $provider)
{
if (preg_match(&quot;%&quot;.$provider.&quot;%i&quot;,trim($mail_provider[1])))
{
return false; // the provider was banned
}
}
return true;
}
return true;
}
/* End of Bann Trashmailer Addon function*/</pre>
<p>4. In the same file under the following code</p>
<pre class="brush: php;">// check e-mail
if(!validate_email($mail)) $error[]=$_language-&gt;module['invalid_mail'];</pre>
<p>add this piece of code:</p>
<pre class="brush: php;">// check e-mail trash mailers
if (!validate_email_provider($mail)) $error[]= $_language-&gt;module['invalid_email_provider'];</pre>
<p>5. In file languages/uk/register.php add the folloing line before the ending );</p>
<pre class="brush: php;">'invalid_email_provider'=&gt;'Your email-provider is banned. Please use another one.'</pre>
<p>!!! Important: Add a commata to the line before</p>
<p>Installation complete<br />
Problems or Questions? Check out webspell.org oder happycode.de</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2010/07/bann-trashmailer-addon-fuer-webspell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2. kleinstes PHP Blogsystem der Welt</title>
		<link>http://www.haukeluebbers.de/2010/03/2-kleinstes-php-blogsystem-der-welt/</link>
		<comments>http://www.haukeluebbers.de/2010/03/2-kleinstes-php-blogsystem-der-welt/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 11:49:58 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=250</guid>
		<description><![CDATA[BÄM! Der PHPgangsta rief am 9. Februar die Aktion &#8220;Wer programmiert das kleinste PHP Blogsystem?&#8221; aus. Nun ist es amtlich: Kim Kortes, auf meinem Code basierende, Version ist mit 78 Byte die kleinste Software. Erforderlich waren ein Adminbereich mit der Möglichkeit Artikel mit Überschrift und Zeit veröffentlichen zu können, die in chronologischer Reihenfolge ausgegeben werden [...]]]></description>
			<content:encoded><![CDATA[<p>BÄM! Der <a href="http://www.phpgangsta.de/" target="_blank">PHPgangsta</a> rief am 9. Februar die Aktion <a href="http://www.phpgangsta.de/aktion-die-kleinste-blogsoftware-der-welt" target="_blank">&#8220;Wer programmiert das kleinste PHP Blogsystem?&#8221;</a> aus. Nun ist es amtlich: Kim Kortes, auf meinem Code basierende, Version ist mit 78 Byte die kleinste Software. Erforderlich waren ein Adminbereich mit der Möglichkeit Artikel mit Überschrift und Zeit veröffentlichen zu können, die in chronologischer Reihenfolge ausgegeben werden müssen.<span id="more-250"></span></p>
<p>Der 3. Platz ging mit 138 Bytes an <a href="http://localdev.de/" target="_blank">Fabian</a> (<a href="http://localdev.de/2010/02/die-kleinste-blog-software-der-welt-4-versuch/" target="_blank">Code</a>), darauf folge ich mit 90 Byte auf dem 2. Platz (<a href="http://nopaste.us/634.html" target="_blank">Code</a>) und schließlich <a href="http://kimkorte.de" target="_blank">Kim Korte</a> (<a href="http://nopaste.us/641.html" target="_blank">Code</a>) auf dem ersten.</p>
<p>Natürlich sind alle diese Skripte absolut praxisfern, und kaum jemand wird sie verwenden wollen, doch es zeigt, was man aus seiner Lieblingsprogrammiersprache herausholen kann.</p>
<p>Ich würde mich freuen, wenn es einen ähnlichen Contest bald wieder gäbe, diesmal vielleicht mit einem etwas größeren Projekt (einem Forensystem?), denn in der heutigen Zeit der Terrabyte Festplatten und Gigabyte RAMs ist der Anreiz, einen möglichst platzsparenden, effektiven Code zu schreiben längt nichtmehr so groß, wir früher, wo man auf jedes einzelne Byte achten musste.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2010/03/2-kleinstes-php-blogsystem-der-welt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPhatesme wird 500</title>
		<link>http://www.haukeluebbers.de/2010/02/phphatesme-wird-500/</link>
		<comments>http://www.haukeluebbers.de/2010/02/phphatesme-wird-500/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 14:44:35 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[IT-Welt]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=241</guid>
		<description><![CDATA[Der vermutlich qualitativhochwertigste deutschsprachige PHP-Blog feiert den 500. Beitrag. Natürlich darf da ein Gewinnspiel mit, für mich, interessanten Gewinnen nicht fehlen. Und da sind wir auch schon beim eigentlichen Grund für diesen Beitrag: Bedingung ist ein Backlink. Und da haben wir ihn auch schon! Schönen Tag noch!]]></description>
			<content:encoded><![CDATA[<p>Der vermutlich qualitativhochwertigste deutschsprachige <a href="http://www.phphatesme.com/blog/" target="_blank">PHP-Blog</a> feiert den 500. Beitrag. Natürlich darf da ein Gewinnspiel mit, für mich, interessanten Gewinnen nicht fehlen.<span id="more-241"></span></p>
<p>Und da sind wir auch schon beim eigentlichen Grund für diesen Beitrag: Bedingung ist ein <a href="http://www.phphatesme.com/blog/allgemein/das-gewinnspiel-geht-los/" target="_blank">Backlink</a>. Und da haben wir ihn auch schon!</p>
<p>Schönen Tag noch! <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2010/02/phphatesme-wird-500/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wer hat den kürzesten?</title>
		<link>http://www.haukeluebbers.de/2010/02/wer-hat-den-kuerzesten/</link>
		<comments>http://www.haukeluebbers.de/2010/02/wer-hat-den-kuerzesten/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 23:15:52 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[IT-Welt]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=235</guid>
		<description><![CDATA[Gemeint ist natürlich der kürzeste PHP Code, der ein rudimentären Blogging-System ermöglicht. Der bisherige offizielle Rekord liegt bei 138 Bytes von Fabian, mein Code liegt bei aktuell 93 Bytes Die Bedingungen: Ein sich identifizierter Administrator muss die Möglichkeit haben, Beiträge mit Titel, Timestamp und natürlich Content auf einer Seite auszugeben. Dort sollen die Beiträge chronologisch [...]]]></description>
			<content:encoded><![CDATA[<p>Gemeint ist natürlich der <a href="http://www.phpgangsta.de/aktion-die-kleinste-blogsoftware-der-welt/" target="_blank">kürzeste PHP Code</a>, der ein rudimentären Blogging-System ermöglicht. Der bisherige offizielle Rekord liegt bei 138 Bytes von <a href="http://localdev.de/" target="_blank">Fabian</a>, mein Code liegt bei aktuell 93 Bytes<span id="more-235"></span></p>
<p>Die Bedingungen: Ein sich identifizierter Administrator muss die Möglichkeit haben, Beiträge mit Titel, Timestamp und natürlich Content auf einer Seite auszugeben. Dort sollen die Beiträge chronologisch angezeigt werden.</p>
<pre class="brush: php;">&lt;?$g=$_GET;$p='&lt;p&gt;';if($g[p]==$p)fwrite(fopen(a,a),$p.time().$p.$g[t].$p.$g[c]);include(a);?&gt;</pre>
<p>Mal sehen, ob ers schafft <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (94 Bytes)</p>
<p>UPDATE 1:</p>
<pre class="brush: php;">&lt;?$g=$_GET;$p='&lt;p&gt;';if($g[p]==a)fwrite(fopen(a,a),$p.time().$p.$g[t].$p.$g[c]);include(a);?&gt;</pre>
<p>Passwort ist jetzt &#8220;a&#8221; &#8211; ein Byte gespart macht 93 Bytes ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2010/02/wer-hat-den-kuerzesten/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Float zu Int &#8211; ein Sicherheitsproblem</title>
		<link>http://www.haukeluebbers.de/2009/10/float-zu-int-ein-sicherheitsproblem/</link>
		<comments>http://www.haukeluebbers.de/2009/10/float-zu-int-ein-sicherheitsproblem/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 11:27:11 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=229</guid>
		<description><![CDATA[Eine oft übersehene Sicherheitslücke: Ein serverseitiges Skript, meistens natürlich PHP, überprüft, ob zwei Variablen gleich sind. Eine aus der Datenbank und eine, die vom User übermittelt wurde. Oft kommt dies vor, wenn man sich bei Social-Networks nicht selber als Freund hinzufügen oder eine Nachricht schicken kann. Hier ein Trick, mit dem es manchmal doch funktioniert. [...]]]></description>
			<content:encoded><![CDATA[<p>Eine oft übersehene Sicherheitslücke: Ein serverseitiges Skript, meistens natürlich PHP, überprüft, ob zwei Variablen gleich sind. Eine aus der Datenbank und eine, die vom User übermittelt wurde. Oft kommt dies vor, wenn man sich bei Social-Networks nicht selber als Freund hinzufügen oder eine Nachricht schicken kann. Hier ein Trick, mit dem es manchmal doch funktioniert.<br />
<span id="more-229"></span><br />
Was übersehen wird: Datenbanken, wie MySQL, wandeln Datentypen (z.B. FLOAT), die in einem Feld mit einem anderen Datentyp (z.B INT),  gespeichert werden sollen, wenn möglich um. Das PHP-Skript prüft also:</p>
<pre class="brush: php;">
if ($_GET['id'] == $db_id) {
echo &quot;Du kannst dir nicht dir selber eine Nachricht schicken!&quot;;
} else {
...
}
</pre>
<p>Wir müssen nun nur eine &#8220;Kommazahl&#8221; übergeben. Sagen wir, meine ID ist 123, ich übergebe aber 123,4. PHP prüft fleißig alles, und da ihm die Typisierung der Variable egal ist, ist 123 nicht das gleiche wie 123,4. Also wird der Wert an die Datenbank übergeben. Das Feld hat aber nur INT-Variablen zu speichern, also wird alles nach dem Kommata abgeschnitten und der Rest gespeichert. Zack, dass war&#8217;s.</p>
<p>Was lernt man daraus jetzt als Webprogrammierer? Immer schön auf die Typen achten. Passen die zur Datenbank? Bei PHP z.B. mit is_int().</p>
<p>Stumpfer Artikel? Ja, herausgefunden habe ich das bereits vor Jahren als kleines Scriptkiddie&#8230;aber ich hab so lang nix mehr geschrieben, da musste halt was her <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2009/10/float-zu-int-ein-sicherheitsproblem/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>AGB Checkr &#8211; Gegen AGB-Abzocke im Netz!</title>
		<link>http://www.haukeluebbers.de/2009/06/agb-checkr-gegen-agb-abzocke-im-netz/</link>
		<comments>http://www.haukeluebbers.de/2009/06/agb-checkr-gegen-agb-abzocke-im-netz/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 10:14:48 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[IT-Welt]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[abzocke]]></category>
		<category><![CDATA[agb]]></category>
		<category><![CDATA[agbchecker]]></category>
		<category><![CDATA[agbcheckr]]></category>
		<category><![CDATA[checker]]></category>
		<category><![CDATA[checkr]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[überprüfen]]></category>
		<category><![CDATA[vertrag]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=167</guid>
		<description><![CDATA[Immer öfter machen unseriöse Webservices wie opendownload.de in den Medien von sich reden, indem sie versuchen ahnungslose Kunden, die sich an die Kostenlos-Mentalität des Netzes gewöhnt haben, durch in den Allgemeinen Geschäftsbedingungen versteckten Kosten und Mindestlaufzeiten, über den Tisch zu ziehen. Die AGB sind oft so lang und unleserlich geschreiben, dass kaum jemand sie richtig [...]]]></description>
			<content:encoded><![CDATA[<p>Immer öfter machen unseriöse Webservices wie opendownload.de in den Medien von sich reden, indem sie versuchen ahnungslose Kunden, die sich an die Kostenlos-Mentalität des Netzes gewöhnt haben, durch in den Allgemeinen Geschäftsbedingungen versteckten Kosten und Mindestlaufzeiten, über den Tisch zu ziehen. Die AGB sind oft so lang und unleserlich geschreiben, dass kaum jemand sie richtig durchliest, und sich stattdessen auf Wörter wie &#8220;open&#8221; oder &#8220;free&#8221; im Titel verlässt.</p>
<p>Doch nun gibt es die Lösung: Der <a href="http://projects.haukeluebbers.de/agbcheckr" target="_blank">AGB Checkr</a> stellt sich auf die Seite des Kunden!<span id="more-167"></span></p>
<p>Dieser Webservice durchsucht die AGB, die der User vorher per Copy &amp; Paste in das Textfeld eingefügt hat, nach Stichwörtern wie &#8220;Mindestlaufzeit&#8221; und &#8220;Kosten&#8221;, und ziegt Sätze, in denen diese Wörter vorkommen, fett an. Außerdem wird die Schriftgröße auf ein leserliches Maß vergrößert.</p>
<p>Mit diesem Tool hat der Internetnutzer wieder mehr Sicherheit und damit auch mehr Möglichkeiten im Netz!</p>
<p>So, Werbung Ende. An sich ist das Tool recht einfach aufgebaut, es nutzt innovative Ajax-Technologie in Verbindung mit einer simplen for-Schleife die in jedem Satz nach bestimmten Wörter aus einem Array sucht. Wer sich für den Code aus irgendeinem mir nicht bekannten Grund interessiert, kann sich bei mir melden, oder &#8220;knackt&#8221; einfach die &#8220;Verschlüsselung&#8221; <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Auf das Design bin ich besonders stolz, nicht, weil es besonders gut ist, sondern eher, weil ich es diesmal selber zusammengebastelt habe&#8230; <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Naja, vielleicht kann ich mit diesem Tool den ein oder anderen vor Abzocker-AGBs retten ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2009/06/agb-checkr-gegen-agb-abzocke-im-netz/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Erste Runde der Chatterboxchallenge beendet</title>
		<link>http://www.haukeluebbers.de/2009/04/erste-runde-der-chatterboxchallenge-beendet/</link>
		<comments>http://www.haukeluebbers.de/2009/04/erste-runde-der-chatterboxchallenge-beendet/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 16:24:57 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[IT-Welt]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[bill]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[chatterbox]]></category>
		<category><![CDATA[robot]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=152</guid>
		<description><![CDATA[BILL liegt zwar abgeschlagen von den ersten 10 Plätzen, die das weiterkommen in die Finalrunde ermöglichen, auf Platz 19 &#8211; doch es gibt noch Hoffnung: Das CBC Public Voting hat heute begonnen. Stimmen die meisten User für BILL, so rutscht dieser automatisch mit in die Finals. Zum Voting gehs hier &#8211; zum Chatbot hier Trotz [...]]]></description>
			<content:encoded><![CDATA[<p>BILL liegt zwar abgeschlagen von den ersten 10 Plätzen, die das weiterkommen in die Finalrunde ermöglichen, auf Platz 19 &#8211; doch es gibt noch Hoffnung: Das CBC Public Voting hat heute begonnen. Stimmen die meisten User für BILL, so rutscht dieser automatisch mit in die Finals.<span id="more-152"></span></p>
<p><strong>Zum Voting gehs <a href="http://www.chatterboxchallenge.com/voting.php" target="_blank">hier</a></strong> &#8211; zum Chatbot <a href="http://chatbot.haukeluebbers.de">hier</a> <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <a href="http://chatbot.haukeluebbers.de"><br />
</a></p>
<p>Trotz Platz 19 sehe ich das Projekt BILL nicht als Misserfolg: Als 16-jähriger bei insgesamt (am 13. April) 31 Chatbots, teilweise von Informatikwissenschaftlern und Softwareentwicklern, auf den 19. Platz zu kommen, ist denke ich nicht schlecht.</p>
<p>Nun kommt es auf die User an&#8230;Bill und ich zählen auf euch <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2009/04/erste-runde-der-chatterboxchallenge-beendet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chatbot &#8220;BILL&#8221; fertiggestellt</title>
		<link>http://www.haukeluebbers.de/2009/03/chatbot-bill-fertiggestellt/</link>
		<comments>http://www.haukeluebbers.de/2009/03/chatbot-bill-fertiggestellt/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 09:53:58 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[TI-BASIC]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[chatterbox]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[leibniz]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[ti]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=147</guid>
		<description><![CDATA[Nun ja, was heißt fertig: So ein Projekt kann man vermutlich nie fertigstellen. Doch nun ist die Version 0.4 unter www.chatbot.haukeluebbers.de erreichbar. Natürlich noch schnell vor dem Einsendeschluss bei der Chatterbox Challenge angemeldet, und ab nach Italien, wo ich eine Woche im Rahmen eines Schüleraustausches weilte.Mehr als diese Ankündigung sollte dieser Artikel eigentlich nicht werden, [...]]]></description>
			<content:encoded><![CDATA[<p>Nun ja, was heißt fertig: So ein Projekt kann man vermutlich nie fertigstellen. Doch nun ist die Version 0.4 unter <a href="http://chatbot.haukeluebbers.de" target="_blank">www.chatbot.haukeluebbers.de</a> erreichbar. Natürlich noch schnell vor dem Einsendeschluss bei der <a href="http://www.chatterboxchallenge.com/" target="_blank">Chatterbox Challenge</a> angemeldet, und ab nach Italien, wo ich eine Woche im Rahmen eines Schüleraustausches weilte.<span id="more-147"></span>Mehr als diese Ankündigung sollte dieser Artikel eigentlich nicht werden, doch vielleicht fragen sich ja einige, was ich nun mache:</p>
<p>Meine To-Do Liste für die Osterferien sieht so aus:</p>
<p>1. Ein kleines PHP-OOP-System basteln, mit dem ich z.B. MySQL-Befehle und Designangaben effektiver programmieren kann</p>
<p>2. Endlich die Version 2.0 des TI-BASIC Tutorials beginnen. Mein Ziel ist es diese bis zum Ende der Ferien in zwei Wochen fertig gestellt zu haben.</p>
<p>Ansonsten nehme ich mit einigen Freunden an der <a href="http://www.intel-leibniz-challenge.de/" target="_blank">Intel-Leibniz-Challenge</a> (schon wieder so ein Wettbewerb -.- ^^) 2009 teil, bei der wir (wie immer) die Aufgaben rund um Programmierung und Physik wie immer am letzten Tag bearbeiten. <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2009/03/chatbot-bill-fertiggestellt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Giga ist tot! Es lebe Giga?</title>
		<link>http://www.haukeluebbers.de/2009/02/giga-ist-tot-es-lebe-giga/</link>
		<comments>http://www.haukeluebbers.de/2009/02/giga-ist-tot-es-lebe-giga/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 16:40:29 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[IT-Welt]]></category>
		<category><![CDATA[ard]]></category>
		<category><![CDATA[giga]]></category>
		<category><![CDATA[pleite]]></category>
		<category><![CDATA[premiere]]></category>
		<category><![CDATA[rettung]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=134</guid>
		<description><![CDATA[Seit dem 13. Februar ist es offiziell: Giga wird eingestellt. Premiere kann in dieser finanziell schwierigen Zeit Giga nicht mehr mitziehen, da der Sender vermutlich erst 2011 Gewinn abwerfen wird. Ich bin kein Giga-Fan. Einmal in der Woche bleibe ich für 5 Minuten mal beim Newsflash hängen, und gucke mir Spiele an, die auf meiner [...]]]></description>
			<content:encoded><![CDATA[<p>Seit dem 13. Februar ist es offiziell: Giga wird eingestellt. Premiere kann in dieser finanziell schwierigen Zeit Giga nicht mehr mitziehen, da der Sender vermutlich erst 2011 Gewinn abwerfen wird. Ich bin kein Giga-Fan. Einmal in der Woche bleibe ich für 5 Minuten mal beim Newsflash hängen, und gucke mir Spiele an, die auf meiner Hardware eh nicht laufen würden. Warum ich trotzdem über diesen Fall berichte? Es gibt einen Giga-Fan namens &#8220;<a href="http://forum.giga.de/showthread.php?t=1181269" target="_blank"><span>TheTool</span></a>&#8220;, der einen Rettungsplan entwickelt hat. Vermutlich wird er scheitern, doch wer nicht kämpft, der hat schon verloren&#8230;<span id="more-134"></span></p>
<p>Konkret sieht er so aus:</p>
<p>Giga hat ein Problem: Wird kein Investor gefunden oder jemand, der das Konzept und die Mitarbeiter in sein Programm aufnimmt, ist es tot. Die Webcommunity kann vielleicht noch ein paar Monate am Leben bleiben, doch auch die kostet Geld.</p>
<p>Auch die Öffentlich-Rechtlichen haben ein Problem: Das Alter ihrer Zuschauer. Bei der ARD liegt es im Moment bei 59 Jahren. Hip ist was anderes.</p>
<p>&#8220;The Tool&#8221; startete also eine <a href="http://giga-ard.blogspot.com/" target="_blank">Kampange</a>, die die ARD mit tausenden Mails von Giga-Unterstützern überzeugen will, GIGA in ihr Programm aufzunehmen. Anbieten würde sich der Kinderkanal KIKA: Ab 21:00 Uhr wird der Sendebetrieb eingestellt, bzw. versucht &#8220;Bernd das Brot&#8221; die Zuschauer zu verscheuchen. GIGAs Vorzeigesendung (&#8220;Giga live&#8221; (live)) lief von 20:00 Uhr bis 24:00. In dieser Sendung wurden abwechselnd die neusten Spiele für Konsole, PC und Handheld vorgestellt. Von Strategie- über Adventurespiele bis zu Horrorshootern (nach 23:00 Uhr). Die Öffentlich-Rechtlichen haben nicht gerade das beste Verhältnis zu &#8220;Killerspielen&#8221; (s. meinen Praktikumsbericht). Doch unter den 10 meistverkauften PC-Spielen sind nur 2 Ego-Shooter. Dieses Genre ist also eigentlich nur ein relativ kleiner Teil der Videospiel-Branche &#8211; wenn auch der mit der größten medialen Aufmerksamkeit.</p>
<p>Auch wenn ich eher mit einer Absage der ARD rechne (Der Initiator hat bereits eine Stellungnahme der ARD erhalten, die jedoch mit einer Sperrfrist belegt wurde), möchte ich für die Aktion werben:</p>
<div class="wp-caption alignleft" style="width: 460px"><a href="http://giga-ard.blogspot.com/"><img title="gigablog" src="http://dergraf147.de.funpic.de/banner.jpeg" alt="Rettet Giga!" width="450" height="58" /></a><p class="wp-caption-text">Rettet Giga!</p></div>
<p>Ach ja: Ich bin auch nicht der einzige, der die Arbeitsplätze und das Konzept von Giga retten möchte: Auch <a href="http://www.spiegel.de/netzwelt/web/0,1518,608387,00.html" target="_blank">Spiegel online</a> , <a href="http://www.basicthinking.de/blog/2009/02/17/wir-sind-giga-ard-soll-den-spiele-sender-retten/" target="_blank">BasicThinking</a> und <a href="http://www.chip.de/news/Fan-Initiative-will-GIGA-bei-der-ARD-unterbringen_35143430.html" target="_blank">Chip online</a> berichteten bereits&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2009/02/giga-ist-tot-es-lebe-giga/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP Chatbot Statusbericht Nr. 2</title>
		<link>http://www.haukeluebbers.de/2009/01/php-chatbot-statusbericht-nr-2/</link>
		<comments>http://www.haukeluebbers.de/2009/01/php-chatbot-statusbericht-nr-2/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 16:49:24 +0000</pubDate>
		<dc:creator>Dubbel</dc:creator>
				<category><![CDATA[IT-Welt]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.haukeluebbers.de/?p=90</guid>
		<description><![CDATA[Wie siehts eigentlich mit meinem Chatbot aus? Die Chatterbox Challenge rückt unaufhaltsam näher &#8211; und bereits in exakt 2 Monaten ist der Abgabetermin. Die Fortschritte meines Bots sowie einige kleine Ausschnitte aus der Arbeitsweise gibt es hier&#8230; Was der Bot kann Ich schätze es ist am einfachsten einfach einige Auszüge aus Konversationen mit dem Bot [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Wie siehts eigentlich mit meinem Chatbot aus? Die <a href="http://chatterboxchallenge.com">Chatterbox Challenge</a> rückt unaufhaltsam näher &#8211; und bereits in exakt 2 Monaten ist der Abgabetermin. Die Fortschritte meines Bots sowie einige kleine Ausschnitte aus der Arbeitsweise gibt es hier&#8230;</p>
<p style="text-align: left;"><span id="more-90"></span></p>
<p style="text-align: left;"><strong>Was der Bot kann</strong></p>
<p style="text-align: left;">Ich schätze es ist am einfachsten einfach einige Auszüge aus Konversationen mit dem Bot hier zu posten:</p>
<blockquote style="text-align: left;"><p><strong>Ich:</strong> Your name is PHPChatBot!<br />
<strong>Bot:</strong> oh, thanks, that was new to me!<br />
<strong>Ich:</strong> Your name is PHPChatBot!<br />
<strong>Bot:</strong> i know<br />
<strong>Ich:</strong> Your name is Dieter!<br />
<strong>Bot:</strong> I think my name is phpchatbot!<br />
<strong>Ich:</strong> What is your name?<br />
<strong>Bot:</strong> in my opinion my name is phpchatbot &#8230;<strong><br />
Ich: </strong>What makes 234.4+234.5?<strong><br />
Bot:</strong> the way i learned it at school that makes 468.9!</p></blockquote>
<p>Man sieht also, dass der Bot:</p>
<ul>
<li>- Eingaben a la &#8220;This is that&#8221; verarbeiten und sich merken kann (Benötigte Syntax: Ausrufezeichen am Ende)</li>
<li>- Eingaben umdrehen kann (&#8220;What is your name&#8221; -&gt; &#8220;What is my name&#8221;)</li>
<li>- Auf Fragen antworten kann, wenn er die Antwort kennt</li>
<li>- Matheaufgaben lösen (+,-,*,/) kann</li>
</ul>
<p style="text-align: left;"><strong>Wie funktionieren die einzelnen Fähigkeiten?</strong></p>
<p style="text-align: left;">Lernfähigkeit:</p>
<p style="padding-left: 30px; text-align: left;">Zunächst wird geprüft, ob am Ende des Satzes ein Ausrufezeichen steht. Ist dies der Fall, so wird der Satz bei einem &#8220;Zuweisungswort&#8221; gespalten. Das Zuweisungswort bei &#8220;Your name is phpchatbot!&#8221; wäre also &#8220;is&#8221;. Nun speichert der Bot diese Information in einer MySQL-Tabelle namens Brain.</p>
<p style="padding-left: 30px; text-align: left;">Die sieht dann so aus:</p>
<p style="padding-left: 30px; text-align: left;">id | value1 | value2 | validations | ip</p>
<p style="padding-left: 30px; text-align: left;">1 | my name | phpchatbot | 0 | 127.0.0.1</p>
<p style="padding-left: 30px; text-align: left;">Wenn der User nun fragt: &#8220;What is your name?&#8221;, sucht der Bot in seinem &#8220;Brain&#8221; nach &#8220;my name&#8221;, da er wieder nach &#8220;is&#8221; aufteilt, und gibt dann die Antwort aus: &#8220;my name is phpchatbot&#8221; (ACHTUNG: Ich suche immer noch nach einem Namen &#8211; Vorschläge bitte in die Kommentare <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). Wenn eine Konversation mal ins Stocken geraten ist (z.B. wenn der User einfach nur &#8220;yes&#8221; geantwortet hat), dann fragt der Chatbot &#8220;btw: is it right, that my name is phpchatbot?&#8221;). Ist die Antwort des Users, der natürlich eine andere IP haben muss als der Aufsteller der Behauptung, positiv, dann wird die variable validation +1 gesetzt. Ist sie negativ wird sie -1 gesetzt und wenn eine Behauptung zweimal negativ eingeschätzt wurde, dann wird sie gelöscht. Der Bot fragt übrigends immer zuerst die Behauptung mit den wenigsten validations.</p>
<p style="padding-left: 30px; text-align: left;">Doch bei dieser Methode gibt es ein Problem: DIESE VERDAMMTEN DO-FRAGEN!!11einseinself</p>
<p style="padding-left: 30px; text-align: left;">Do-Fragen sehen so aus &#8220;Do you go to school?&#8221;. Man sieht: Es gibt kein &#8220;Zuweisungswort&#8221;. Hier sieht es ja noch einfach aus: Der Bot müsste das erste Wort entfernen, das zweite als value1 einordnen und den Rest als value2. Doch was ist, wenn die Frage &#8220;Do your dad go to school?&#8221; ist: Das zweite Wort wäre &#8220;your&#8221;, obwohl das Subjekt auch noch das dritte Wort umfasst. Ich müsste also eine Datenbank voll mit englischen Subjekten anlegen, was, mit meinen Fähigkeiten und innerhalb dieses Zeitraums, unmöglich ist. Ich würde mich über Lösungsvorschläge freuen und bin gespannt, wie ich das Problem letztendlich lösen werde&#8230;</p>
<p style="text-align: left;">Leichter waren da schon die Matheaufgaben:</p>
<p style="padding-left: 30px; text-align: left;">Zunächst habe ich eine Tabelle &#8220;cb_math_answers&#8221; angelegt und Sprüche wie &#8220;(MATH_QUESTION) makes (MATH_RESULT) according to Cocker <img src='http://www.haukeluebbers.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> &#8221; reingepackt. Dann musste ich die Matheaufgaben ersteinmal herausfiltern. Dazu haben ich reguläre Ausdrücke verwendet:</p>
<blockquote style="text-align: left;">
<p style="padding-left: 30px;">~\d+(.\d+)?\s?[+*/-]\s?\d+(.\d+)?\s?=\s?\d+(.\d+)?~</p>
</blockquote>
<p style="padding-left: 30px; text-align: left;">Die &#8220;\s&#8221; garantieren, dass die Matheaufgabe auch erkannt wird, wenn der User Leerzeichen zwischen die Zahlen und Operatoren gesetzt hat. Um auch Dezimalzahlen erkennen zu können (natürlich mit dem englischen Punkt statt Komma), habe ich an die &#8220;/d&#8221; noch ein +(./d+) angehängt, dass aber wegen dem &#8220;?&#8221; nicht zwingend ist. Der Rest ist, denke ich, klar.</p>
<p style="text-align: left;">Bisher ungelöst: Die &#8220;ganz normalen&#8221; Sätze.</p>
<p style="padding-left: 30px; text-align: left;">Was am einfachsten klingt, ist, für meinen Bot, am schwersten: Die &#8220;normalen&#8221; Sätze. Wie soll der Bot auf &#8220;I am going to school today&#8221; antworten? Es steckt keine Frage dahinter, keine Zuweisung &#8211; was nun?</p>
<p style="padding-left: 30px; text-align: left;">Mein bisheriger Plan sieht so aus, dass der Bot diesen Satz, wenn er ihn nicht kennt, mit IP speichert, und an einer anderen Stelle im Gespräch mit einer anderen Person einfügt, wenn das Gespräch droht stecken zu bleiben (z.B. wenn der User einfach nur &#8220;Yes&#8221; antwortet.</p>
<p style="padding-left: 30px; text-align: left;">Die ganze Aktion sieht so aus:</p>
<p style="padding-left: 30px; text-align: center;">
<div class="mceTemp mceIEcenter" style="text-align: center;">
<dl id="attachment_95" class="wp-caption aligncenter" style="width: 410px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-95" title="bot_normal_sentence" src="http://www.haukeluebbers.de/wp-content/uploads/2009/01/bot_normal_sentence.jpg" alt="Diagramm Chatbot" width="400" height="640" /></dt>
<dd class="wp-caption-dd">Diagramm 1 Chatbot &#8211; Ich bitte die schlechte Qualität zu entschuldigen &#8211; unter Linux bin ich mit den Grafikprogrammen nicht so vertraut </dd>
</dl>
</div>
<p style="text-align: center;">
<p style="text-align: left;">Aber, wie gesagt &#8211;  das ganze ist noch nicht eingebaut.</p>
<p style="padding-left: 30px; text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.haukeluebbers.de/2009/01/php-chatbot-statusbericht-nr-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
