<?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>Hendis Blog &#187; php &amp; Co.</title>
	<atom:link href="http://hendi.name/category/technik/php-co/feed/" rel="self" type="application/rss+xml" />
	<link>http://hendi.name</link>
	<description>Der Blog von Hendrik Richter</description>
	<lastBuildDate>Fri, 04 Jun 2010 22:06:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Inoffizielles Sicherheitsupdate für easyLink</title>
		<link>http://hendi.name/2009/07/23/inoffizielles-sicherheitsupdate-fur-easylink/</link>
		<comments>http://hendi.name/2009/07/23/inoffizielles-sicherheitsupdate-fur-easylink/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 10:15:51 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/?p=305</guid>
		<description><![CDATA[Seit mehreren Wochen ist nun bekannt, dass in verschiedenen Versionen von easyLink gravierende Sicherheitslücken vorhanden sind. Wie die Firma Mountaingrafix mit ihren Kunden im Forum umspringt, lasse ich an dieser Stelle besser unkommentiert. Ein Update steht von offizieller Seite anscheinend noch immer nicht zur Verfügung; im Forum gibt es zwar ein paar &#8220;dringende Sofortmaßnahmen&#8221;, diese [...]]]></description>
			<content:encoded><![CDATA[<p>Seit mehreren Wochen ist nun bekannt, dass in verschiedenen Versionen von easyLink gravierende Sicherheitslücken vorhanden sind. Wie die Firma Mountaingrafix mit ihren Kunden im <a href="http://www.mountaingrafix.at/forum/index.php?page=Thread&amp;threadID=369" rel="nofollow">Forum</a> umspringt, lasse ich an dieser Stelle besser unkommentiert. Ein Update steht von offizieller Seite anscheinend noch immer nicht zur Verfügung; im Forum gibt es zwar ein paar &#8220;dringende Sofortmaßnahmen&#8221;, diese bringen jedoch zahlreiche Nebenwirkungen mit sich.</p>
<p>Bis ein Sicherheitsupdate seitens Mountaingrafix erscheint, wird man sich wohl noch einige Zeit gedulden müssen. Herr Schoppengerd schreibt im Forum: &#8220;leider hat bei uns momentan leider niemand Zeit sich um die Version wirklich zu kümmern.&#8221;</p>
<p>Um die Nutzer von easyLink 2 nicht im Regen stehen zu lassen, habe ich daher nach bestem Wissen und Gewissen ein <strong>inoffizielles Sicherheitsupdate</strong> erstellt. Da es potenziellen Angreifern hilfreiche Informationen über die Lücken liefern könnte, werde ich es jedoch nicht öffentlich anbieten.</p>
<p><strong>Betroffene easyLink-Besitzer können es kostenlos per E-Mail an <a href="mailto:sicherheitsupdate@naggel.com">sicherheitsupdate@naggel.com</a> anfordern.</strong></p>
<p>[Nachtrag 28.07.09: Mittlerweile stellt der Hersteller für die neueste Version ein <a href="http://www.mountaingrafix.at/2009/07/28/sicherheitspatch-fuer-easylink-v2-6-4/" rel="nofollow">Update</a> zur Verfügung, das auf meinen Änderungen beruht. Benutzern älterer Versionen wird empfohlen, die Änderungen manuell anhand meiner Anleitung durchzuführen.]</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2009/07/23/inoffizielles-sicherheitsupdate-fur-easylink/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sicherheitslücken in easyLink 2.6</title>
		<link>http://hendi.name/2009/07/20/sicherheitslucken-in-easylink-2-6/</link>
		<comments>http://hendi.name/2009/07/20/sicherheitslucken-in-easylink-2-6/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 14:54:03 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Vermischtes]]></category>
		<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/?p=297</guid>
		<description><![CDATA[Einer meiner Kunden rief mich besorgt an und teilte mir mit, dass es Sicherheitslücken in einem seiner Link-Kataloge gebe. Nach dem Gespräch schickte er mir noch ein Video zu, das das Ausmaß der Lücken demonstrieren sollte: es zeigte einen leicht bedienbaren Exploit, der anscheinend nach Eingabe einer URL private Daten wie E-Mail-Adressen und Kontonummern aus [...]]]></description>
			<content:encoded><![CDATA[<p>Einer meiner Kunden rief mich besorgt an und teilte mir mit, dass es Sicherheitslücken in einem seiner Link-Kataloge gebe. Nach dem Gespräch schickte er mir noch ein Video zu, das das Ausmaß der Lücken demonstrieren sollte: es zeigte einen leicht bedienbaren Exploit, der anscheinend nach Eingabe einer URL private Daten wie E-Mail-Adressen und Kontonummern aus einem Web-Katalog auslas.</p>
<p>Das stank natürlich nach XSS, SQLi und mehr, und nach einiger Recherche im Code fand ich auch einige Sicherheitslücken, die das Ausspähen dieser Daten ermöglichten. Natürlich habe ich umgehend Fehlerkorrekturen erstellt und bei allen meinen betroffenen Kunden installiert!</p>
<p>Zitat meines Kunden: &#8220;Vielen Dank für die super schnelle Fehlerbehebung! Ich bin froh, dass Sie den Support für mein Portal leisten!&#8221;.</p>
<p>Danke, das hört man gerne :-)</p>
<p>[Nachtrag 28.07.09: Mittlerweile stellt der Hersteller für die neueste Version ein Update zur Verfügung, das auf meinen Änderungen beruht. Benutzern älterer Versionen wird empfohlen, die Änderungen manuell anhand meiner Anleitung durchzuführen.]</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2009/07/20/sicherheitslucken-in-easylink-2-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funktionen mit Vorgabe-Parametern</title>
		<link>http://hendi.name/2009/02/24/funktionen-mit-vorgabe-parametern/</link>
		<comments>http://hendi.name/2009/02/24/funktionen-mit-vorgabe-parametern/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 16:07:39 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[php & Co.]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://hendi.name/?p=284</guid>
		<description><![CDATA[Betrachtet man folgenden php-Code,

function addToArray($number, $array=array()) {
    $array[] = $number;
    return $array;
}
print_r(addToArray(1));
print_r(addToArray(2));
print_r(addToArray(3));

so erwartet man als php-Programmierer die Ausgabe:

Array
(
    [0] =&#62; 1
)
Array
(
    [0] =&#62; 2
)
Array
(
    [0] =&#62; 3
)

Man stelle sich vor, die Ausgabe wäre:

Array
(
    [0] =&#62; 1
)
Array
(
  [...]]]></description>
			<content:encoded><![CDATA[<p>Betrachtet man folgenden php-Code,</p>
<blockquote>
<pre>function addToArray($number, $array=array()) {
    $array[] = $number;
    return $array;
}
print_r(addToArray(1));
print_r(addToArray(2));
print_r(addToArray(3));</pre>
</blockquote>
<p>so erwartet man als php-Programmierer die Ausgabe:</p>
<blockquote>
<pre>Array
(
    [0] =&gt; 1
)
Array
(
    [0] =&gt; 2
)
Array
(
    [0] =&gt; 3
)</pre>
</blockquote>
<p>Man stelle sich vor, die Ausgabe wäre:</p>
<blockquote>
<pre>Array
(
    [0] =&gt; 1
)
Array
(
    [0] =&gt; 1
    [1] =&gt; 2
)
Array
(
    [0] =&gt; 1
    [1] =&gt; 2
    [2] =&gt; 3
)</pre>
</blockquote>
<p>und man müsste, um das gewünschte Ergebnis zu erhalten, folgendes schreiben:</p>
<blockquote>
<pre>function addToArray($number, $array=false) {
    if ($array === false) {
        $array = array();
    }
    $array[] = $number;
    return $array;
}</pre>
</blockquote>
<p>Sieht umständlich und merkwürdig aus?</p>
<p>Ist Python-Style.</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2009/02/24/funktionen-mit-vorgabe-parametern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Übersetzungen mit php-gettext</title>
		<link>http://hendi.name/2007/01/05/ubersetzungen-mit-php-gettext/</link>
		<comments>http://hendi.name/2007/01/05/ubersetzungen-mit-php-gettext/#comments</comments>
		<pubDate>Fri, 05 Jan 2007 19:38:25 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[Aachen]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Vermischtes]]></category>
		<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/2007/01/05/ubersetzungen-mit-php-gettext/</guid>
		<description><![CDATA[Im aktuellen phpMagazin (2.2007) wird mein Artikel &#34;&#220;bersetzers Liebling&#34; ver&#246;ffentlicht, in dem ich die Vorteile, die man durch die Verwendung des php-Moduls gettext bzw. Danilo Å egans php-gettext erf&#228;hrt, beschreibe. Es wird erkl&#228;rt, wie man eine php-Anwendung &#252;bersetzbar macht und wie man die einem zur Verf&#252;gung stehenden Funktionen zu verwenden hat. Zum besseren Verst&#228;ndnis wird alles [...]]]></description>
			<content:encoded><![CDATA[<p>Im aktuellen phpMagazin (2.2007) wird mein Artikel &quot;<a target="_blank" href="http://phpmagazin.de/itr/online_artikel/psecom,id,874,nodeid,62,_language,de.html">&Uuml;bersetzers Liebling</a>&quot; ver&ouml;ffentlicht, in dem ich die Vorteile, die man durch die Verwendung des php-Moduls <em>gettext</em> bzw. Danilo Å egans <em>php-gettext</em> erf&auml;hrt, beschreibe. Es wird erkl&auml;rt, wie man eine php-Anwendung &uuml;bersetzbar macht und wie man die einem zur Verf&uuml;gung stehenden Funktionen zu verwenden hat. Zum besseren Verst&auml;ndnis wird alles zus&auml;tzlich durch komplette Beispiele erl&auml;utert. Mein dort erw&auml;hnter Patch f&uuml;r php-gettext befindet sich <a target="_blank" href="http://savannah.nongnu.org/bugs/?17997">hier</a>.</p>
<p>Kommentare und Anregungen k&ouml;nnen gerne hier in meinem Blog hinterlassen werden; ich werde versuchen sie im kommenden Teil zu ber&uuml;cksichtigen.</p>
<p><img width="16" height="16" border="0" title="now playing:" alt="now playing:" src="http://hendi.name/wp-content/now%20playing.png" /> Les Cowboys Fringants &#8211; Un P&#8217;tit Tour</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2007/01/05/ubersetzungen-mit-php-gettext/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Wenn ~$bm nicht will&#8230;</title>
		<link>http://hendi.name/2006/05/11/wenn-bm-nicht-will/</link>
		<comments>http://hendi.name/2006/05/11/wenn-bm-nicht-will/#comments</comments>
		<pubDate>Thu, 11 May 2006 13:59:28 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[Arbeit]]></category>
		<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/2006/05/11/wenn-bm-nicht-will/</guid>
		<description><![CDATA[&#8230;flucht man zuallerst und fragt sich, wie solch ein essenzieller Operator nicht funktionieren kann. Dann bastelt man sich eben einen Workaround:
function complement($bm) {&#160;&#160; &#160;return $bm ^ (pow(2, floor(log($bm, 2))+1)-1);}

Und schon interessiert die Ursache des Problems (vorerst) nicht mehr. Ursachenforschung muss halt bis nach Feierabend warten.
]]></description>
			<content:encoded><![CDATA[<p>&#8230;flucht man zuallerst und fragt sich, wie solch ein essenzieller Operator nicht funktionieren kann. Dann bastelt man sich eben einen Workaround:</p>
<blockquote><p>function complement($bm) {<br />&nbsp;&nbsp; &nbsp;return $bm ^ (pow(2, floor(log($bm, 2))+1)-1);<br />}</p>
</blockquote>
<p>Und schon interessiert die Ursache des Problems (vorerst) nicht mehr. Ursachenforschung muss halt bis nach Feierabend warten.</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2006/05/11/wenn-bm-nicht-will/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>str_replace für JavaScript</title>
		<link>http://hendi.name/2006/04/08/str_replace-fur-javascript/</link>
		<comments>http://hendi.name/2006/04/08/str_replace-fur-javascript/#comments</comments>
		<pubDate>Sat, 08 Apr 2006 14:37:59 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/?p=133</guid>
		<description><![CDATA[Als Web-Entwickler ist man es ja gewohnt, beim Programmieren mit JavaScript regelmäßig über Unzulänglichkeiten in den Implementierungen der einzelnen Browser zu stolpern. Da ich mich in der letzten Zeit jedoch näher mit JavaScript beschäftigen musste, stellte ich weitere Ungereimtheiten fest, je tiefer ich mich in die Materie einarbeitete und meine Erfahrungen mit dem &#8220;JavaScript way [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://vg04.met.vgwort.de/na/307749ec872a4591947e2cff57166d43" width="1" height="1" alt=""/>Als Web-Entwickler ist man es ja gewohnt, beim Programmieren mit JavaScript regelmäßig über Unzulänglichkeiten in den Implementierungen der einzelnen Browser zu stolpern. Da ich mich in der letzten Zeit jedoch näher mit JavaScript beschäftigen musste, stellte ich weitere Ungereimtheiten fest, je tiefer ich mich in die Materie einarbeitete und meine Erfahrungen mit dem &#8220;JavaScript way of programming&#8221; machte.</p>
<p>In diesem Beitrag beschreibe ich die für mich drei größten Überraschungen. Besonders interessant dürfte für die meisten Punkt 3 sein, indem ich meine effiziente Lösung für eine str_replace wie in php für JavaScript vorstelle.</p>
<p>Doch der Reihe nach &#8212; aber ihr dürft natürlich auch direkt weiter scrollen ;-)</p>
<p><strong>1. Semikolons am Befehlsende sind optional.</strong> Und alles was optional ist, macht in der Regel Probleme. In C, php, Java usw. fliegt einem der Compiler bei einem vergessenem Semikolon um die Ohren; man merkt, dass etwas nicht stimmt, und kann den Fehler schnell beheben. Nicht so in JavaScript, denn hier ist das Semikolon am Befehlsende optional, man kann auch einfach eine neue Zeile einfügen. Dumm nur, dass dadurch ungewünschte Effekte auftreten können. Es gibt Situationen &#8211; und das leider öfter, als man denkt! &#8211; da vergisst man ein Semikolon, und das was JavaScript dann dort reininterpretiert unterscheidet sich von dem, was man sich vorgestellt hatte. Ups! Abhilfe schaffen hier Tools wie <em>jsLint</em><strong>.</strong></p>
<p><strong>2. Variablen in Funktionen und Objekten sind global.</strong> Jedenfalls solange man nicht <em>var</em> vor sie schreibt. Das kann übel sein, wenn man beispielsweise in zwei Funktionen die selben Variablennamen &#8211; bspw. i für eine Zählvariable &#8211; verwendet, und diese abwechselnd aufruft.</p>
<p><strong><img src="http://vg04.met.vgwort.de/na/307749ec872a4591947e2cff57166d43" alt="" width="1" height="1" />3. str_replace für JavaScript. </strong>String-Objekte in JavaScript besitzen zwar eine replace-Methode, die jedoch mit regulären Ausdrücken arbeitet und das Objekt modifiziert. Da ich jedoch nur eine simple Suchen/Ersetzen-Funktion benötige und die Einfachheit der <em>str_replace(search, replace, subject)</em>-Funktion aus php gewöhnt bin, wollte ich mir so etwas für JavaScript basteln, nachdem ich dies auch schon für <em>foreach</em> und <em>in_array</em> getan hatte. Zuerst wollte ich einen Wrapper für String.replace bauen, dann kam mir jedoch eine viel simplere Idee:</p>
<blockquote><p>function str_replace(search, replace, subject) {<br />
return subject.split(search).join(replace);<br />
}</p></blockquote>
<p>Der String <em>subject</em> wird an allen Vorkommen von <em>search</em> zerteilt, es entsteht ein Array mit den resultierenden Teil-Strings. Dieses Array wird dann wieder zu einem String verkettet, und zwar mit <em>replace</em> an allen Verknüpfungspunkten.</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2006/04/08/str_replace-fur-javascript/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Mathematisches Rennspiel</title>
		<link>http://hendi.name/2005/12/27/mathematisches-rennspiel/</link>
		<comments>http://hendi.name/2005/12/27/mathematisches-rennspiel/#comments</comments>
		<pubDate>Tue, 27 Dec 2005 15:38:49 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[Matraçe]]></category>
		<category><![CDATA[Spaß]]></category>
		<category><![CDATA[Vermischtes]]></category>
		<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/2005/12/27/mathematisches-rennspiel/</guid>
		<description><![CDATA[Wie einige vielleicht bei meinen geplanten Projekten gesehen haben, taucht dort der omin&#246;se Punkt &#34;Mathematisches Rennspiel&#34; auf. Google findet au&#223;er meinem Blog keine Ergebnisse, also was soll das ganze nun sein?!
In meiner Schulzeit, in etwa als ich die siebte Klasse besuchte, ersann ich mir ein mathematisches Rennspiel. Ziel war und ist es, mit seinem Rennwagen [...]]]></description>
			<content:encoded><![CDATA[<p>Wie einige vielleicht bei meinen <a target="_self" href="http://hendi.name/geplante-projekte/">geplanten Projekten</a> gesehen haben, taucht dort der omin&ouml;se Punkt &quot;Mathematisches Rennspiel&quot; auf. Google findet au&szlig;er meinem Blog keine Ergebnisse, also was soll das ganze nun sein?!</p>
<p>In meiner Schulzeit, in etwa als ich die siebte Klasse besuchte, ersann ich mir ein mathematisches Rennspiel. Ziel war und ist es, mit seinem Rennwagen als erster ins Ziel zu kommen ohne in komplett zu verschrotten. Das Spiel ist komplett deterministisch, es gibt keinen Zufall, die einzige Varianz vom im Kopf ersinnten perfektem Weg zum Ziel entsteht durch die Reaktionen der Mitspieler. Ein Wagen hat zwei Geschwindigkeitsvektoren, je einen in x- und y-Richtung, deren Summe den Ort im n&auml;chsten Zug bestimmt, sofern man weder Richtung noch Geschwindigkeit &auml;ndert. Die Kunst liegt nun darin so weit wie m&ouml;glich voraus zu berechnen, mit welcher Geschwindigkeit und Lenkung man in eine bestimmte Kurve fahren darf usw. Miteinbeziehen muss man noch Sonderf&auml;lle wie in die Quere kommende Konkurrenten, verunreinigte Strecken und verschiedene Bodenbel&auml;ge. Die kompletten Regeln hier jetzt aufzuschreiben w&uuml;rde den Rahmen und so manche Planets sprengen, daher lasse ich das lieber und verweise auf die noch nicht existierende Anleitung, die ich noch zu schreiben habe.</p>
<p>Jedenfalls fiel mir vor einigen Wochen wieder ein, womit ich mir damals im Unterricht die Zeit vertrieben und meine Mitsch&uuml;ler in den Wahnsinn getrieben habe. Wen wundert&#8217;s, denn mit zwei verschiedenen Koordinatensystem zu arbeiten und dort einfache Vektorrechnung zu betreiben &uuml;berfordert halt die meisten Dreizehnj&auml;hrigen.</p>
<p>Gestern Nacht, nach einer feucht-fr&ouml;hlichen Party bei Phil, spielten Straubi und ich bis morgens um 6 Uhr eine Runde des Rennspiels, er war begeistert, mehrfach verlie&szlig; das Wort &quot;genial&quot; seinen Mund.</p>
<p>Trotz leichtem Kater bewaffnete ich mich daher heute Vormittag gegen 10 Uhr mit Pizza und Cola und fing an zu programmieren, herausgekommen ist eine erste Version des <strong><a target="_blank" href="http://hendi.name/rennen/">Streckeneditors</a></strong> (bisher nur mit Gecko getestet, Code-Qualit&auml;t ist nat&uuml;rlich auch noch lange nicht fertig; <em>Proof of Concept</em> eben). Die Strecken werden im offenen PNG-Format gespeichert, was mehrere Vorteile bringt:            </p>
<ul>
<li>H&auml;lt man sich an die vorgegebene Farbpalette, so kann man eigene Strecken auch mittels Programmen wie bspw. Gimp bearbeiten.</li>
<li>Die resultierenden Strecken haben eine sehr kleine Dateigr&ouml;&szlig;e</li>
<li>Man kann komplett ohne Aufwand Vorschaubilder der Strecken anzeigen</li>
<li>Einfacher Austausch von Strecken, PNG-Dateien k&ouml;nnen quasi &uuml;berall hoch geladen werden, was auch ImageShack und unz&auml;hlige Internetforen miteinbezieht</li>
</ul>
<p>  Noch gibt es viel zu tun, aber zumindest das Grundger&uuml;st steht und ist seitens des Streckeneditors schon gut benutzbar.</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2005/12/27/mathematisches-rennspiel/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>AJAX suxx, but rockz!</title>
		<link>http://hendi.name/2005/10/07/ajax-suxx-but-rockz/</link>
		<comments>http://hendi.name/2005/10/07/ajax-suxx-but-rockz/#comments</comments>
		<pubDate>Fri, 07 Oct 2005 13:11:48 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/2005/10/07/ajax-suxx-but-rockz/</guid>
		<description><![CDATA[KDEs James Ots schrieb gestern:
All because we have AJAX, which sucks, and I love it.
Und er hat Recht, meiner Meinung nach. AJAX (nicht der Allzweckreiniger, sondern Asynchronous Javascript and XML), schon seit einigen Jahren möglich, aber erst vor Kurzem so richtig bekannt geworden durch Google Suggest und Google Maps, ist zwar noch lange nicht perfekt, [...]]]></description>
			<content:encoded><![CDATA[<p>KDEs <a href="http://jamesots.blogspot.com/2005/10/i-love-ajax.html" target="_blank">James Ots</a> schrieb gestern:</p>
<blockquote><p>All because we have AJAX, which sucks, and I love it.</p></blockquote>
<p>Und er hat Recht, meiner Meinung nach. AJAX (nicht der Allzweckreiniger, sondern <strong>A</strong>synchronous <strong>J</strong>avascript <strong>a</strong>nd <strong>X</strong>ML), schon seit einigen Jahren möglich, aber erst vor Kurzem so richtig bekannt geworden durch Google Suggest und Google Maps, ist zwar noch lange nicht perfekt, aber es <em>existiert</em> und kann benutzt werden. Endlich ist es möglich, Serverseitig direkt auf Benutzereingaben zu reagieren, ohne diesen erst ein Formular abschicken zu lassen. <a href="http://gallery.sf.net" target="_blank">Gallery2</a> zeigt dem Benutzer beim Installieren beispielsweise an, welche Pfade auf dem Server möglich ist. Die Eingabe von &#8220;/srv/www/ht&#8221; zeigt bspw. direkt &#8220;/srv/www/htdocs/&#8221; usw. an, äußerst praktisch!</p>
<p>Anfang des Jahres habe ich einen WYSIWYG-Editor geschrieben, der dank AJAX und aspell eine eingebaute, on-the-fly Rechtschreibprüfung besitzt.</p>
<p>Auch wenn es momentan etwas überbewertet und im vB 3.5 fast schon zu exzessiv verwendet wird, man kann damit wirklich arbeitserleichternde, sinnvolle Dinge machen. Schöne neue AJAX-Welt also, ich bin gespannt, wie sich das ganze noch weiterentwickelt.</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2005/10/07/ajax-suxx-but-rockz/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>In meinem Rotwein schwimmt &#8216;ne Mücke</title>
		<link>http://hendi.name/2005/10/06/in-meinem-rotwein-schwimmt-ne-mucke/</link>
		<comments>http://hendi.name/2005/10/06/in-meinem-rotwein-schwimmt-ne-mucke/#comments</comments>
		<pubDate>Thu, 06 Oct 2005 21:31:06 +0000</pubDate>
		<dc:creator>hendi</dc:creator>
				<category><![CDATA[Vermischtes]]></category>
		<category><![CDATA[php & Co.]]></category>

		<guid isPermaLink="false">http://hendi.name/2005/10/06/in-meinem-rotwein-schwimmt-ne-mucke/</guid>
		<description><![CDATA[Ich hasse das.
Nachdem ich dank Fieber am Wochenende und bis heute anhaltendem Husten bis morgen krank geschrieben bin (weder Autofahren mit Fieber noch das Zubereiten von Essen mit Husten ist toll) habe ich die letzten Tage intensiv zum arbeiten genutzt. Seit heute Nachmittag hatte ich dann also nichts mehr zu tun, sodass ich mich einem [...]]]></description>
			<content:encoded><![CDATA[<p>Ich <strong>hasse</strong> das.</p>
<p>Nachdem ich dank Fieber am Wochenende und bis heute anhaltendem Husten bis morgen krank geschrieben bin (weder Autofahren mit Fieber noch das Zubereiten von Essen mit Husten ist toll) habe ich die letzten Tage intensiv zum arbeiten genutzt. Seit heute Nachmittag hatte ich dann also nichts mehr zu tun, sodass ich mich einem Projekt widmen konnte, was mir im Urlaub 2001 in Frankreich, im Haus &#8220;<em>Villa Ariba</em>&#8221; meiner Tante, eingefallen ist. Ein kleines aber feines Online-Schach, webbasiert. Zugauswertung und -abgabe per AJAX usw. Bis gerade eben saß ich daran, und hätte auch schon etwas zum Vorzeigen, würde ich es endlich über&#8217;s Herz gebracht haben, auf meinem Server php5 zu installieren. Da ich bisher leider <strike>zu faul dazu war</strike> nicht dazu kam, muss also eine kurze Beschreibung herhalten. Das ganze ist momentan noch auf php5 getrimmt, da es von den dortigen Neuerungen bzgl. objektorientierter Programmierung Gebrauch macht. Auf php4 läuft es zwar ohne Murren trotz <em>error_reporting(E_ALL)</em>, zeigt aber lediglich ein leeres Schachbrett an.</p>
<p>Lokal sehe ich ein hübsch-hässliches Schachbrett mit der Startaufstellung, die Bauern des weißen Spielers sind jedoch entfernt worden. Die &#8220;Figuren&#8221; sind anklickbar, daraufhin erscheinen alle Felder, zu denen sie sich mittels gültigen (!) Zügen bewegen können, markiert; Felder, die sie angreifen können, werden gesondert hervorgehoben. Dabei wird auch berücksichtigt, dass möglicherweise gegnerische oder eigene Figuren die Bewegung einschränken. Das Bewegen von Figuren ist im Quellcode schon möglich, damit man es &#8220;live&#8221; machen kann fehlen nur noch wenige Zeilen. Das ganze Frontend ist zur Zeit zwar nur rudimentär, d.h. ohne AJAX oder validen XHML-/CSS-Code (momentan noch nicht einmal valides HTML), aber darum wird sich später gekümmert. Bei der Anzeige der gültigen Züge fehlen &#8220;nur&#8221; noch die Rochaden, das Schlagen en Passant, die Bauernumwandlung sowie &#8211; oh Graus &#8211; die Überprüfung, dass ein Zug kein Matt des eigenen Königs verursacht.</p>
<p>Habe heute Abend also einiges geschafft, wobei noch viel zu tun bleibt. Ist aber endlich nochmal etwas anspruchsvollere Arbeit, Algorithmen zu finden, die funktional als auch schnell sind. Mal schauen, wann ich das nächste zum Rumbasteln komme, vielleicht kriege ich dann auch heraus, wieso php4 die &#8220;Figuren&#8221; nicht zeichnen will.</p>
<p>Morgen Abend steht übrigens <strong>Dream Theater</strong> in Dortmund an&#8230; Oshin meinte, dies bedeute 3 Stunden Musik ohne Vorband. Ich bin gespannt und voller Vorfreude!</p>
]]></content:encoded>
			<wfw:commentRss>http://hendi.name/2005/10/06/in-meinem-rotwein-schwimmt-ne-mucke/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
