<?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>PHP hates me - Der PHP Blog &#187; Schwarzer Magier</title>
	<atom:link href="http://www.phphatesme.com/archives/category/schwarzer-magier/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phphatesme.com</link>
	<description>PhpHatesMe, but that&#039;s ok!</description>
	<lastBuildDate>Sat, 11 Feb 2012 10:13:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>E-Mail Adresse verschlüsseln</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/e-mail-adresse-verschlusseln/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/e-mail-adresse-verschlusseln/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 06:00:59 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Schwarzer Magier]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=4918</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Heute gibt es mal wieder einen HTML/CSS Artikel. Jetzt wo ich so nachdenke &#8211; gab es schon mal einen CSS Artikel? Wahrscheinlich nicht. Egal, die Einleitung hat auch so gereicht, die ersten Zeilen zu füllen. Ich hatte ja vor einiger Zeit mal ein paar <a href="/blog/webentwicklung/vier-webseiten-mit-wow-effekt/" target="_self">nette Effekte</a> gezeigt, die man im Internet so findet. Darunter war auch einer der Symfony Jungs, die mit einem einfachen Trick ihre E-Mails verschlüsselt haben. Diesen möchte ich heute vorstellen.</p>
<p><span id="more-4918"></span>Fangen wir also an. Das Ziel ist es eine E-Mail Adresse zwar lesbar auf dem Monitor anzuzeigen, es den Spam-Bots aber nicht zu einfach zu machen. Dazu nehmen wir die E-Mail Adresse rückwärts und schreiben einfach von Rechts nach Links. CSS unterstützt das ohne Probleme. Dazu brauchen wir nur zwei Attribute: <code>unicode-bidi</code> und <code>direction</code>.</p>
<pre>&lt;style type="text/css"&gt;
 span.crypted_email { unicode-bidi:bidi-override; direction: rtl;}
&lt;/style&gt;
&lt;span class="crypted_email"&gt;ed.80nalp@rengnal&lt;/span&gt;</pre>
<p>Der Code-Schnipsel gibt euch dann langner@plan08.de (mist jetzt hab ich meine Adresse doch hingeschrieben!) aus.  Genau das was wir wollten. Im Code steht die Adresse aber niemals Plaintext. Natürlich hat diese Technik auch ein großes ABER. Verwende ich den Schnipsel, so kommt auch der Browser nicht mit zurecht. Copy und Paste des Strings resultiert in einem umgedrehten Text in der Zwischenablage und mindert somit die Usability der Webseite. Ist es das Wert? Wahrscheinlich nicht, denn es gibt andere Möglichkeiten seine Adresse zu schützen.</p>
<p>Ich werde hier gerne noch mal ein paar andere vorstellen. Auch welche, die die User-Experience nicht beinträchtigen. Ich finde den Trick trotzdem ziemlich nett und ich habe mal wieder ein paar neue Features von CSS kennengelernt. Vielleicht will man ja andere Dinge so verschlüsseln, dass sie von Bots nicht gelesen werden können. Gibt bestimmt viele schöne Anwendungsgebiete. Denkt aber immer dran google ist auch ein bot und wird die Texte nicht indizieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/e-mail-adresse-verschlusseln/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Six Degrees of Separation (friend of a friend)</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/six-degrees-of-seperation-friend-of-a-friend/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/six-degrees-of-seperation-friend-of-a-friend/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 07:00:29 +0000</pubDate>
		<dc:creator>Ludwig Ruderstaller</dc:creator>
				<category><![CDATA[Schwarzer Magier]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=2498</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Nein, hier geh&#8217;ts nicht um den Film-Remake mit Will Smith (<a href="http://www.imdb.com/title/tt0108149/" target="_blank">Six Degrees of Separation</a>) sondern um eine Funktion die man öfters auf Social-Web 2.0 Seiten sieht. Ich kenne diese Person über &#8230;.</p>
<p>Kleine Geschichtsstunde.<span id="more-2498"></span></p>
<p>Ich bin so frei und übernehme den Text des <a href="http://de.wikipedia.org/wiki/Kleine_Welt#Experiment" target="_blank">Wikipedia Artikels</a>:</p>
<div class="important">
<blockquote><p>1967 startete der Psychologe/Soziologe Stanley Milgram (übrigends der selbe welcher das &#8220;<a href="http://de.wikipedia.org/wiki/Milgram-Experiment" target="_blank">Milgram Experiment</a>&#8221; durchführte) das &#8220;Small World&#8221; Experiment. Milgram erstellte eine Art Informationspaket, das 60 zufällig ausgewählte Teilnehmer an jeweils eine vorher festgelegte Person in Boston zu senden hatten. Als Startpunkte wählte er Personen aus den sozial und geografisch weit von der Zielstadt entfernten Städten Omaha und Wichita. Die Aufgabe der Teilnehmer bestand darin, das Paket nicht direkt an die Zielperson zu senden, sofern sie diese nicht persönlich kannten (bei ihrem Vornamen ansprachen), sondern an eine Person, die sie persönlich kannten und bei der die Wahrscheinlichkeit höher war, dass sie die Zielperson kannte. Gleichzeitig waren die Teilnehmer angehalten, grundlegende Daten über sich selbst in einer Tabelle zu vermerken und eine Postkarte an die Wissenschaftler zu senden, um die Kette nachvollziehbar zu machen.</p>
<p>Insgesamt erreichten drei Pakete die Zielpersonen mit einer durchschnittlichen Pfadlänge von 5,5 oder aufgerundet sechs. Die Wissenschaftler schlossen daraus, dass jede Person der US-amerikanischen Bevölkerung von jeder anderen Person der USA durchschnittlich durch sechs Personen getrennt ist oder, andersherum formuliert, durch durchschnittlich sechs Personen erreicht werden kann.</p>
<p>In einem zwei Jahre später durchgeführten Experiment mit 296 möglichen Ketten wurden 217 Pakete gestartet und 64 erreichten ihr Ziel.<sup class="reference">[1]</sup> Im Jahre 1970 folgte ein weiterer Versuch, der, neben der Entfernung der Menschen untereinander, auch mögliche Grenzen zwischen ethnisch unterschiedlichen Gruppen untersuchen sollte. Von 270 mit afroamerikanischen Personen als Ziel gestarteten Paketen erreichten 13 % diese Person, während 33 % von wiederum 270 an „weiße“ Personen adressierte Pakete ihr Ziel erreichten.<sup class="reference">[2]</sup></p></blockquote>
<p>Möchte man jetzt die Verbindung von Person A zu Person B darstellen, läuft man schnell in das &#8220;<a href="http://de.wikipedia.org/wiki/K%C3%BCrzester_Pfad" target="_blank">shortest path problem</a>&#8220;. Um dies zu lösen eignet sich der sogenannte &#8220;<a href="http://de.wikipedia.org/wiki/Algorithmus_von_Dijkstra" target="_blank">Dijkstra-Algorithmus</a>&#8220;.</p>
<p>Wie sieht jetzt die Impementierung in PHP aus ?</p>
<p>Wir nehmen an wir haben eine Tabelle mit unseren Usern, und eine Zweite die Verbindungen von den Usern untereinander darstellt (fromid =&gt; toid).</p>
<pre>CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`firstnames` varchar(200) NOT NULL,
`lastname` varchar(200) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;

CREATE TABLE IF NOT EXISTS `links` (
`link_id` int(11) NOT NULL auto_increment,
`fromid` int(11) NOT NULL,
`toid` int(11) NOT NULL,
PRIMARY KEY  (`link_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;</pre>
<p>Als erstes brauchen wir den theoretisch längsten Pfad: Dies wäre die Anzahl der User +1.<br />
Nächster Schritt das Basis array, welches die schritte von person x zu person y festlegt, da wir dies aber noch nicht wissen inintialisieren wir das array mit -1 (unbekannter pfad). Einen Pfad kennen wir jedoch nämlich den Pfad von $fromid zu $fromid. Dieser hat die Distanz 0.</p>
<pre><code>private function _fetchUser(){
  $m_user = new UserModel();
  $this-&gt;_users = $m_user-&gt;fetchAll();
  $this-&gt;_longestPath = $this-&gt;_users-&gt;count()+1;
}

private function _buildSkel($fromid){
  if(!$this-&gt;_users){
    $this-&gt;_fetchUser();
  }

  foreach($this-&gt;_users as $user){
	$this-&gt;_nodes[]=$user-&gt;id;
	$this-&gt;_dist[$user-&gt;id]=$this-&gt;_longestPath;
	$this-&gt;_previous[$user-&gt;id]=-1;
  }

  if($fromid&gt;0)
	$this-&gt;_dist[$fromid]=0;
  }</code></pre>
<p>Jetzt beginnt der Spass, suchen des kürzesten Pfads von User A zu User B:</p>
<pre><code>private function _findPath($toid){
  $Q = $this-&gt;_nodes;
  while(count($Q)&gt;0){
	$qsize=count($Q);
	$unode = $this-&gt;_findMin($Q);

	if($unode == $toid){
        	break; // We have found ToId
	}

	$u = array_search($unode, $Q);
	$Q[$u]=false;

	$Q = array_filter($Q);

	if($qsize == count($Q)){
	  throw new Exception("Qsize doesnt shrink!");
	}

	$m_link = new LinksModel();

	$invitees = $m_link-&gt;fetchAll("fromid='$unode'");
	$inviters = $m_link-&gt;fetchAll("toid='$unode'");

	if($invitees-&gt;count()&gt;0)
	$this-&gt;_relaxNeighbors($unode,$invitees,'toid');

	if($inviters-&gt;count()&gt;0)
	  $this-&gt;_relaxNeighbors($unode,$inviters,'fromid');
  }
}

private function _relaxNeighbors($unode,$neighbors,$col){
	foreach($neighbors as $neighbor){
		$this-&gt;_relax($unode,$neighbor-&gt;$col);
	}
}

private function _relax($u,$v){
	if($this-&gt;_dist[$v] &gt; $this-&gt;_dist[$u]+1){
		$this-&gt;_dist[$v]=$this-&gt;_dist[$u]+1;
		$this-&gt;_previous[$v] = $u;
	}
}

private function _findMin($nodes){
	$keys = array_keys($nodes);
	$minid = $nodes[$keys[0]];
	$mindist = $this-&gt;_dist[$minid];
	foreach ($keys as $key){
		$tnode = $nodes[$key];
		if($this-&gt;_dist[$tnode] &lt; $mindist){
			$mindist = $this-&gt;_dist[$tnode];
			$minid=$tnode;
		}
	}

	return $minid;
}</code></pre>
<p>Wir laufen also unsere Knoten durch und berechnen die Kantenlängen für jeden knoten. Dabei wird ein bereits bekannter kürzester Weg benutzt und um eine Kante (zu dem jeweils nächsten) Nachfolgeknoten ergänzt. Dadurch entsteht letztendlich eine Baumstruktur, welche die kürzesten Wege von einem Startknoten repräsentiert.</p>
<p>Die gesamte Klasse findet sich auf <a title="http://www.cwd.at/shortestpath.phps" href="http://www.cwd.at/shortestpath.phps" target="_blank">http://www.cwd.at/shortestpath.phps</a></p>
<p>Raum für Optimierung gibt es genug. Zb. das errechnen der Kantenlängen jedes Users zueinander und speichern in einer Tabelle. Oder aber auch den gesamten <a title="Dijkstra’s shortest path algorithm" href="http://www.artfulsoftware.com/infotree/queries.php?&amp;bw=1680#766" target="_blank">Algorithmus in die Datenbank auszulagern</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/six-degrees-of-seperation-friend-of-a-friend/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Umkreissuche in PHP &#8211; Teil 2</title>
		<link>http://www.phphatesme.com/blog/schwarzer-magier/umkreissuche-in-php-teil-2/</link>
		<comments>http://www.phphatesme.com/blog/schwarzer-magier/umkreissuche-in-php-teil-2/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 06:00:24 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Schwarzer Magier]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=442</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hier ist nun der zweite Teil meines Umkreissuche-Artikels. Es tut mir leid, falls der eine oder andere vor Aufregung nicht schlafen konnte, aber jetzt ist ja auch schon der nächste Tag und wir machen weiter. Wir haben jetzt also alle Einzelteile, die man für eine Umkreissuche benötigt. Jetzt müssen wir sie nur noch anhand der OpenGeoDB  zusammenführen. Sollte ja eigentlich kein Problem sein.</p>
<p>Aber vielleicht reiße ich nochmal schnell unsere Vorgehensweise und die Problemstellung an. Wir haben also einen User und wollen ihm anzeigen, welche andere User in 50km Umkreis wohnen. Klingt ja ganz einfach. Fangen wir also an. Zuerst benötigen wir die PLZ des Benutzers, was nicht wirklich ein Problem sein sollte, denn in unserer Community können wir ja selbst bestimmen, welche Daten der User beim Anmelden hinterlegen muss. Schritt Zwei wäre alle Postleitzahlen zu suchen, die nicht weniger als 50km entfernt sind. Im dritten und letzten Schritt suchen wir uns die User raus, die in diesem PLZ Bereich wohnen. Tadaaa wir sind fertig. Natürlich kann man noch irgendwelche Heuristiken einführen, es darf z.B. die erste Stelle der PLZ nur um eine Zahl abweichen oder ähnliches. Hier ist der Kreativität keine Grenze gesetzt. Wir bleiben aber bei unserem einfachen Beispiel und der nicht ganz so performanten Methode. Wer von euch das ganze verbessern will kann dies natürlich tun, werde dann hier auch drüber berichten.<span id="more-442"></span></p>
<p>Eigentlich hatte ich mir hier vorgenommen noch ein paar SQL Anfragen zu posten, mit denen man z.B. den Abstand zwischen Karlsruhe und Berlin ausrechen kann. Da ich aber gerade nicht so viel Zeit habe und die GeoDB ca. 50 MB groß ist und ich mich da erstmal wieder einarbeiten muss, werde ich das ganze einfach auf eine andere Session verschieben. Natürlich könnt ihr das auch über positives Feedback beschleunigen. Wenn ihr Beispiel habt, dann könnt ihr die hier auch posten.</p>
<p>So das war auch schon wieder meine kleine Einführung in die Umkreissuche. Ich hoffe, dass ich wenigstens einigen von euch einen Einblick geben konnte und ihm/ihr auch die Angst davor genommen habe. Spielt einfach ein wenig mit rum und ihr werdet sehen, dass es gar nicht so schwer ist,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/schwarzer-magier/umkreissuche-in-php-teil-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Umkreissuche in PHP &#8211; Teil 1</title>
		<link>http://www.phphatesme.com/blog/schwarzer-magier/umkreissuche-in-php-teil-1/</link>
		<comments>http://www.phphatesme.com/blog/schwarzer-magier/umkreissuche-in-php-teil-1/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 06:00:44 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Schwarzer Magier]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=432</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Den heutigen Artikel möchte ich Caro widmen. Leider habe ich keine Ahnung wer Caro ist, aber sie hat sich in ihrem letzten Kommentar gewünscht, dass ich doch die Umkreissuche in PHP doch mal vorziehen sollte. Und natürlich ist ihr Wunsch mir Befehl. Gleichzeitig soll dies auch mein erster Beitrag in der Rubrik des schwarzen Magiers sein, da sich bestimmt viele von euch auch schon gefragt haben, wie man mit einfachen Mitteln raus bekommt, welche Mitglieder einer Community z.B. nicht mehr als 10km von einem entfern wohnen. Ich werde also versuchen einen Weg zu beschreiben, den man ohne Kosten und Mühen gehen kann und trotzdem ein gewünschtes Resultat bekommt. Ich konnte es mir nicht verkneifen zu sagen, dass es kostenlos sein wird, denn auf dem Markt findet man hunderte von Anbietern, die einem einen Webservice anbieten, der einem bei der Umkreissuche hilft. Diese sind dann aber meist richtig teuer.<span id="more-432"></span></p>
<p>Fangen wir also an, wir brauchen eine Datenbank, die Postleitzahlen (PLZ) in Geo-Koordinaten umsetzt, eine Datenbank mit vielen Usern und den Orten (PLZ) in denen sie wohnen und den Satz des Pythagoras. Fangen wir mit dem einfachsten an, der Datenbank mit PLZ und ihren Koordinaten. Natürlich ist dies auch gleichzeitig der komplexeste Teil, aber dank eines Open Source Projektes wurde uns diese Arbeit schon abgenommen. Die <a href="http://opengeodb.hoppe-media.com/" target="_blank">OpenGeoDB</a> ist der Versuch eine möglichst vollständige Datenbank zu allen Orten und Postleitzahlen im europäischen Raum (A, B, CH. DE und FL) aufzubauen. Und diese werden wir einfach für unsere Zwecke verwenden. Wer will kann gleich auch die GeoClassPHP mit runterladen, die einem viele Aufgaben bereits abnimmt. Da wir aber auch hierbei noch etwas lernen wollen, machen wir das jetzt einfach selber. <em>Normalerweise bin ich aber ein Freund des &#8220;<strong>Rad-nicht-neu-Erfindens&#8221;</strong></em>.</p>
<p>Der zweite Punkt, den wir benötigen sind viele User in unsere Community. Natürlich klappt das alles auch mit zwei Leuten, macht aber viel weniger Spaß. Also alle Freunde einladen, die beste Community aller Zeiten bauen und schon sind wir am Ziel. Ein paar Millionen User sollten es schon sein &#8211; <a href="http://www.studivz.de" target="_blank">StudiVZ</a> hat es ja schließlich auch geschafft. Ok wir haben jetzt also unsere Datenbank und eine Million Mitglieder. Es kann also losgehen. Ach ja den Satz des Pythagoras.</p>
<blockquote><p>Der Satz des Pythagoras ist einer der fundamentalen Sätze der euklidischen Geometrie. Er besagt, dass in allen ebenen rechtwinkligen Dreiecken die Summe der Flächeninhalte der Kathetenquadrate gleich dem Flächeninhalt des Hypotenusenquadrates ist.</p></blockquote>
<p>Ah ich liebe die Mathematik. Hab ich mal erwähnt, dass Mathe mein Nebenfach beim Studium war? Weiß auch nicht wirklich warum, aber ich hab es sogar bestanden (danke Annette!). Ich will niemanden unterstellen, dass er den Satz nicht verstanden hat, aber ich versuche es einfach nochmal in meinem eigenen Worte zu fassen. Wir haben also ein rechwinkeliges Dreieck (ein Winkel 90°), dort gibt es eine lange Seite, die Hypotenuse und zwei kurze Seiten, die Katheten. Quadriert man nun die Länge der Hypotenuse, so ist das Ergebnis genau so groß wie die Summe der beiden Kathetenquadrate. Wenn ich mir meine Erklärung so durchlesen fällt mir auf, dass sie auch nicht viel besser ist. Aber egal. Vielleicht sind zwei schlechte Erläuterungen ja so gut wie eine gute. Wir merken uns also <strong>a<sup>2</sup> + b<sup>2</sup> = c<sup>2</sup></strong></p>
<p style="text-align: justify;">Kommen wir nochmal zurück zu den Geo-Koordinaten. Da wir hier keine super komplizierte Formel haben wollen, um den Abstand zwischen zwei Orten auszurechnen, nehmen wir einfach an, dass die Erde flach ist. Im Atlas geht das ja auch. Wir legen jetzt also durch unsere Deutschlandkarte ein Koordinatensystem. Eigentlich machen diese Geo-Koordinaten ja nichts anderes, der <a href="http://de.wikipedia.org/wiki/Geographische_Breite" target="_self">Breitengrad</a> ist unsere Y-Achse, der <a href="http://http://de.wikipedia.org/wiki/Geographische_L%C3%A4nge" target="_blank">Längengrad</a> die X-Achse. Eigentlich müssen wir jetzt nur noch den Abstand zweier Punkte berechnen. Dafür nehmen wir den Satz des Pythagoras.</p>
<p style="text-align: left;"><img class="aligncenter size-medium wp-image-435" title="Satz des Pythagoras" src="http://www.phphatesme.com/upload/2008/08/pyth.gif" alt="" /></p>
<p style="text-align: justify;">Hier mal eine kleine Grafik um den Zusammenhang zwischen dem Abstand zwischen zwei Punkten und den Satz des Pythagoras zu verdeutlichen. Wir nehmen also die X-Koordinaten der beiden Punkte und ziehen sie voneinander ab und schon haben wir die Länge der ersten Kathede, das gleiche mit den Y-Koordinaten, dann nur noch quadrieren und fertig.</p>
<p style="text-align: justify;">So mehr möchte ich für heute auch nicht erzählen, da es wohl sonst zu viel für einen Tag wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/schwarzer-magier/umkreissuche-in-php-teil-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Der schwarze Magier verrät seine Tricks</title>
		<link>http://www.phphatesme.com/blog/schwarzer-magier/der-schwarze-magier-verrat-seine-tricks/</link>
		<comments>http://www.phphatesme.com/blog/schwarzer-magier/der-schwarze-magier-verrat-seine-tricks/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 06:00:15 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Schwarzer Magier]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=205</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Heute würde ich gerne eine neue Kategorie einführen, ich nenne sie &#8220;Schwarzer Magier&#8221;. Leider muss ich zugeben, dass dieser Name an eine RTL Sendung angelehnt ist. Dort gab es vor geraumer Zeit einen Magier, der den einen oder anderen Trick seiner Kollegen verraten hat. Unter Magiern gilt dies natürlich als Todsünde. Zum Glück aber nicht unter PHP Entwicklern.<br />
Was ich also machen werde ist Folgendes: Ich nehme mir das eine oder andere Feature von bekannten Webseiten, bei denen ich mir denken kann, dass es vielleicht interessant ist zu wissen, was dort hinter den Kulissen passiert, analysiere dieses und stelle einen möglichen Lösungsansatz zur Verfügung.<br />
Die zwei ersten Themen, die ich analysieren werden, sind schon geplant. Dabei geht es zum Einem um das &#8220;<a href="http://www.phphatesme.com/blog/webentwicklung/six-degrees-of-seperation-friend-of-a-friend/" target="_self">Friend of a friend</a>&#8221; Feature, wie es z.B. <a href="http://www.xing.com" target="_self">Xing</a> besitzt und zum anderen geht es um eine einfache Umkreissuche, die mit PLZ hantieren kann und somit alle &#8220;Nachbarn&#8221; finden kann.<br />
Natürlich versuche ich hier am Zahn der Zeit zu bleiben und aktuellen Themen sofort aufzunehmen, da es um Web 2.0 Zeitalter aber nicht unbedingt möglich ist alles zu beobachten, ohne 24h am Tag vor dem PC zu sitzen, bin ich auch auf die Hilfe der Leser angewiesen. Wer ein Feature enträtselt haben will, der sollte einfach einen Kommentar hinterlassen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/schwarzer-magier/der-schwarze-magier-verrat-seine-tricks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

