<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Christian Ahmer's Webentwicklungs Blog</title>
		<link>http://www.christian-ahmer.de/blog/</link>
		<atom:link href="http://www.christian-ahmer.de/blog/" rel="self" type="application/rss+xml" />
		<description>Was fällt mir da nur wieder ein...</description>

		
		<item>
			<title>Google Keyword Rankchecker</title>
			<link>http://www.christian-ahmer.de/google-keyword-rankchecker/</link>
			<description>&lt;p&gt;Gestern habe ich einmal daran gedacht, wie ein Ex-Arbeitgeber von mir ein intern recht n&amp;uuml;tzliches Tool geschrieben hat, welches es einem erm&amp;ouml;glicht, den Pagerank von bestimmten Seiten aus der Googlesuche zu extrahieren.&lt;br /&gt;So etwas wollte ich auch haben und habe es schlicht einfach einmal in 3 Stunden umgesetzt. Mein eigener Rankchecker allerdings kommt mit nur 30 Zeilen Code aus und nutzt extensiv jQuery, denn er l&amp;auml;uft weitgehend im Browser selbst.&lt;br /&gt;Er hat ein Suchfeld, welches man mit gew&amp;uuml;nschten Keywords f&amp;uuml;ttern kann und ein weiteres Feld, in dem man die Seite angeben kann, dessen Rank im Google Suchergebnis gecheckt werden soll.&lt;/p&gt;
&lt;p&gt;Kleinere Unregelm&amp;auml;&amp;szlig;igkeiten k&amp;ouml;nnen zustandekommen, da Google nicht bei jeder Suche die gleichen Ergebnisse rauswirft, da Seiteneffekte wie der Google Dance oder versteckte Werbung seitens Google (z.B. f&amp;uuml;r Google Books) die Ergebnisse minimal verf&amp;auml;lschen k&amp;ouml;nnen.&lt;br /&gt;Im Grunde funktioniert die Suche aber schon f&amp;uuml;r die 3 Stunden Aufwand hervorragend gut und findet aus den ersten 100 Suchergebnissen die Treffer der gew&amp;auml;hlten Homepage zuverl&amp;auml;ssig heraus. Und das genauso schnell, wie eine durchschnittliche Googlesuche dauert - einen Bruchteil einer Sekunde.&lt;/p&gt;
&lt;p&gt;Hier ist ein Video davon zu sehen. Der Google Keyword Rankchecker V.01 in Aktion:&lt;/p&gt;
&lt;p&gt;{Video1}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hinweis:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Der neuste Firefox (3.6) hat unter Linux ein kleines Problem mit dem anklicken von Schaltfl&amp;auml;chen im Flash.&lt;br /&gt;Das kann man beheben, indem man einfach Firefox mit folgender Anweisung vorangestellt ausf&amp;uuml;hrt:&lt;/p&gt;
&lt;p&gt;GDK_NATIVE_WINDOWS=1 firefox.&lt;br /&gt;&lt;br /&gt;Das wird hoffentlich seitens Mozilla in Zukunft automatisch gefixt werden.&lt;/p&gt;</description>
			<pubDate>Mon, 01 Feb 2010 19:55:55 +0000</pubDate>
			
			<guid>http://www.christian-ahmer.de/google-keyword-rankchecker/</guid>
		</item>
		
		<item>
			<title>PHP 5.2.12 und max_file_uploads</title>
			<link>http://www.christian-ahmer.de/php-5-2-12-und-max-file-uploads/</link>
			<description>&lt;p&gt;K&amp;uuml;rzlich durfte ich an einem, urspr&amp;uuml;nglich nicht von mir stammenden Projekt, welches auf Basis des Zend Frameworks in Version 1.7.2 l&amp;auml;uft, feststellen, dass die Applikation nicht mehr funktionierte, wenn man bestimmte Formularfelder absenden wollte.&lt;/p&gt;
&lt;p&gt;Der Grund liegt darin, dass die Applikation damals auf einer wesentlich &amp;auml;lteren PHP Version aufgebaut wurde und das Zend Framework welches benutzt wird, ebenfalls ein gutes Jahr alt ist.&lt;br /&gt;Der urspr&amp;uuml;ngliche Programmierer hat die Formularfelder so aufgebaut, dass man bis zu 12 Dateien pro einfachem Formularupload reinstellen konnte.&lt;br /&gt;Das bedeutet: Bei Formularen, welche 2 Dateiuploads hatten, wo man dynamisch mehrere Dateien hinzuf&amp;uuml;gen konnte, gab es also bereits 24 gleichzeitige m&amp;ouml;gliche Uploads.&lt;/p&gt;
&lt;p&gt;Nun wo allerdings auf dem aktuellen Server PHP 5.2.12 installiert wurde, konnte das nicht mehr funktionieren, da die Standardeinstellung von PHP via &lt;strong&gt;max_file_uploads&lt;/strong&gt; genau 20 max. gleichzeitige Uploads zul&amp;auml;sst.&lt;br /&gt;Allerdings hat es recht lang gedauert, herauszufinden, was da schief lief, da ich nicht der Serveradmin war und von der PHP Aktualisierung gar nicht richtig im Bilde war und zu erst Fehler in meinem Code oder im Framework vermutete, da der Zend -&amp;gt; File -&amp;gt; Transfer -&amp;gt; Adapter keine Uploads mehr entgegennehmen konnte sondern einfach crashte und als Fehler angab, keine Dateien zu finden - womit er ja im Grunde auch nicht unrecht hatte, da PHP den Zugriff auf die Dateien scheinbar erst gar nicht zu lies, da max_file_uploads ja &amp;uuml;berschritten wurde.&lt;br /&gt;&lt;br /&gt;Zum Gl&amp;uuml;ck konnte der Fehler aber noch zeitig gefunden werden, so dass die Applikation nun wieder wie gewohnt auf der neuen PHP Version l&amp;auml;uft.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Achtung:&lt;br /&gt;&lt;/strong&gt;Die Einstellung kann dzt. nur direkt in der php.ini ge&amp;auml;ndert werden, Versuche via Apache Konfiguration oder .htaccess sind dzt. nicht erlaubt.&lt;br /&gt;Kommentar eines Entwicklers dazu: &quot;This might open a can of worms&quot;. Ein Schelm, wer b&amp;ouml;ses dabei denkt.&lt;/p&gt;</description>
			<pubDate>Mon, 11 Jan 2010 18:45:36 +0000</pubDate>
			
			<guid>http://www.christian-ahmer.de/php-5-2-12-und-max-file-uploads/</guid>
		</item>
		
		<item>
			<title>APC - Der PHP Turbolader</title>
			<link>http://www.christian-ahmer.de/apc-der-php-turbolader/</link>
			<description>&lt;p&gt;Soeben habe ich den APC Bytecode Cache auf dem Server aktiviert und es macht einen gewaltigen Unterschied in der Serverperformance.&lt;br /&gt;Von vorher durchschnittlich &amp;gt;700ms Antwortzeit kommt die Seite nun auf durschnittlich &amp;lt; 300ms.&lt;br /&gt;Ist schon ein geh&amp;ouml;riger Turbo, den man innerhalb von 5 Minuten ohne gro&amp;szlig;en Aufwand und Kosten zuschalten kann.&lt;br /&gt;&lt;br /&gt;Dem Silverstripe CMS scheint es jedenfalls gut zu bekommen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;br /&gt;Auch auf dem Test-Quadcore System daheim kann ein Turbo von ca. 50% vermerkt werden.&lt;br /&gt;Diese Webseite ben&amp;ouml;tigt ohne zugeschalteten APC ca. 240 ms bis sie generiert wird.&lt;/p&gt;
&lt;pre&gt;Connection Times (ms)&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min&amp;nbsp; mean[+/-sd] median&amp;nbsp;&amp;nbsp; max&lt;/pre&gt;
&lt;pre&gt;Connect:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/pre&gt;
&lt;pre&gt;Processing:&amp;nbsp;&amp;nbsp; 228&amp;nbsp; 240&amp;nbsp; 13.7&amp;nbsp;&amp;nbsp;&amp;nbsp; 239&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 300&lt;/pre&gt;
&lt;pre&gt;Waiting:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 228&amp;nbsp; 240&amp;nbsp; 13.7&amp;nbsp;&amp;nbsp;&amp;nbsp; 239&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 300&lt;/pre&gt;
&lt;pre&gt;Total:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 228&amp;nbsp; 240&amp;nbsp; 13.7&amp;nbsp;&amp;nbsp;&amp;nbsp; 239&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 301&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mit APC sind es nun ~126ms.&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;Connection Times (ms)&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min&amp;nbsp; mean[+/-sd] median&amp;nbsp;&amp;nbsp; max&lt;/pre&gt;
&lt;pre&gt;Connect:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/pre&gt;
&lt;pre&gt;Processing:&amp;nbsp;&amp;nbsp; 119&amp;nbsp; 126&amp;nbsp;&amp;nbsp; 3.5&amp;nbsp;&amp;nbsp;&amp;nbsp; 126&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 132&lt;/pre&gt;
&lt;pre&gt;Waiting:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 119&amp;nbsp; 126&amp;nbsp;&amp;nbsp; 3.5&amp;nbsp;&amp;nbsp;&amp;nbsp; 126&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 132&lt;/pre&gt;
&lt;pre&gt;Total:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 119&amp;nbsp; 126&amp;nbsp;&amp;nbsp; 3.5&amp;nbsp;&amp;nbsp;&amp;nbsp; 126&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 133&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Man sollte bedenken, dass damit die Optimierungsphase gerade erst begonnen hat. Schliesslich kann man auch noch vern&amp;uuml;nftigen Seitencache realisieren, was die Geschwindigkeit erst so richtig erh&amp;ouml;hen w&amp;uuml;rde. Aber immerhin ist das hier nur eine Seite mit eher wenig gleichzeitigen Besuchern, daher reicht die Geschwindigkeit zur Zeit sowieso mehr als aus.&lt;/p&gt;</description>
			<pubDate>Thu, 07 Jan 2010 22:45:43 +0000</pubDate>
			
			<guid>http://www.christian-ahmer.de/apc-der-php-turbolader/</guid>
		</item>
		

	</channel>
</rss>