<?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>Lorem Ipsum Ges.m.b.H.</title>
	<atom:link href="http://www.loremipsum.at/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.loremipsum.at</link>
	<description>Der Onlineauftritt der Lorem Ipsum Medienges.m.b.H.</description>
	<lastBuildDate>Wed, 11 Jan 2012 08:14:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Softphone GreenJ mit neuer Heimat auf GitHub</title>
		<link>http://www.loremipsum.at/blog/news/softphone-greenj-mit-neuer-heimat-auf-github/</link>
		<comments>http://www.loremipsum.at/blog/news/softphone-greenj-mit-neuer-heimat-auf-github/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 08:14:18 +0000</pubDate>
		<dc:creator>Daniel Leeb</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GreenJ]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Softphone]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3630</guid>
		<description><![CDATA[Letzten Monat haben wir unser Open-Source Softphone GreenJ bereits auf unserer Seite zum Download freigegeben und ihm auch eine eigene Domain &#8211; greenj.org &#8211; spendiert. GreenJ ist eine plattformunabhängige Voice-over-IP Applikation, welche es einem Webentwickler ermöglicht, mittels einer einfachen Schnittstelle, &#8230; <a href="http://www.loremipsum.at/blog/news/softphone-greenj-mit-neuer-heimat-auf-github/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/produkte/greenj/" rel="bookmark">GreenJ</a></li>
		<li><a href="http://www.loremipsum.at/produkte/greenj/introduction/" rel="bookmark">Einführung / Introduction</a></li>
		<li><a href="http://www.loremipsum.at/blog/news/upgrade-auf-27-neues-design-online/" rel="bookmark">Upgrade auf 2.7 + neues Design online</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Letzten Monat haben wir unser <strong>Open-Source Softphone GreenJ</strong> bereits auf unserer Seite zum <a href="http://www.loremipsum.at/produkte/greenj/introduction/#downloadde">Download</a> freigegeben und ihm auch eine eigene Domain &#8211; <a href="http://www.greenj.org">greenj.org</a> &#8211; spendiert. GreenJ ist eine plattformunabhängige Voice-over-IP Applikation, welche es einem Webentwickler ermöglicht, mittels einer <a href="http://www.loremipsum.at/produkte/greenj/library/">einfachen Schnittstelle</a>, eine Webseite als Telefonsystem zu erstellen. Unser Programm bietet die nötigen Telefonfunktionen und kann eine beliebige Oberfläche durch den integrierten Browser darstellen. Mehr Informationen sowie Downloads des Programms, Quellcodes und der Dokumentation können in der <a href="http://www.loremipsum.at/produkte/greenj/introduction/">Einführung zu GreenJ</a> gefunden werden.</p>
<p><a href="http://www.loremipsum.at/wp-content/uploads/2011/09/screen_licc.png"><img src="http://www.loremipsum.at/wp-content/uploads/2011/09/screen_licc-300x173.png" alt="A callcenter application in GreenJ" title="Screenshot GreenJ Callcenter" width="300" height="173" class="alignnone size-medium wp-image-3538" /></a></p>
<h3>GreenJ auf GitHub</h3>
<p>Um die Verfügbarkeit noch zu verbessern, befindet sich GreenJ ab sofort als <a href="https://github.com/danleeb/GreenJ">Repository auf GitHub.com</a> und kann auch von dort heruntergeladen werden.</p>
<p>Etwa indem man das GreenJ Repository klont:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ git clone git://github.com/danleeb/GreenJ.git</div></td></tr></tbody></table></div>
<p>In der mitgelieferten Readme, siehe auf GitHub unterhalb der Dateiliste, findet man auch eine kurze Schritt für Schritt Anleitung, um GreenJ unter Ubuntu 11.10 (32-bit Linux) zu kompilieren. Natürlich lässt sich GreenJ auch unter einer anderen Linux Distribution oder unter Windows kompilieren und verwenden. Bei Interesse einfach unsere <a href="http://www.loremipsum.at/produkte/greenj/">GreenJ Produktseite</a> besuchen.</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/produkte/greenj/" rel="bookmark">GreenJ</a></li>
		<li><a href="http://www.loremipsum.at/produkte/greenj/introduction/" rel="bookmark">Einführung / Introduction</a></li>
		<li><a href="http://www.loremipsum.at/blog/news/upgrade-auf-27-neues-design-online/" rel="bookmark">Upgrade auf 2.7 + neues Design online</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/blog/news/softphone-greenj-mit-neuer-heimat-auf-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doctrine 2 SQL Profiler in Debugleiste</title>
		<link>http://www.loremipsum.at/blog/code/doctrine-2-sql-profiler-in-debugleiste/</link>
		<comments>http://www.loremipsum.at/blog/code/doctrine-2-sql-profiler-in-debugleiste/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 15:12:17 +0000</pubDate>
		<dc:creator>Daniel Leeb</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Profiler]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[ZF]]></category>
		<category><![CDATA[ZFDebug]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3608</guid>
		<description><![CDATA[Auch wenn es sich um ein sehr spezielles Thema handelt, möchte ich hier kurz zusammenfassen, wie man einen Doctrine 2 SQL Logger/Profiler in einer Zend Framework Umgebung umsetzen kann. Da die Kombination aus ZF und Doctrine 2 durchaus beliebt zu &#8230; <a href="http://www.loremipsum.at/blog/code/doctrine-2-sql-profiler-in-debugleiste/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/code/integration-von-doctrine-in-eine-modul-basierte-zend-anwendung/" rel="bookmark">Integration von Doctrine in eine modulbasierte Zend Anwendung</a></li>
		<li><a href="http://www.loremipsum.at/blog/sem/neues-wordpress-plugin-affiliando-vergleichsrechner-1-0/" rel="bookmark">Neues WordPress Plugin: Affiliando Vergleichsrechner 1.0</a></li>
		<li><a href="http://www.loremipsum.at/blog/code/rundungsfehler-in-magento-beheben/" rel="bookmark">Rundungsfehler in Magento beheben</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Auch wenn es sich um ein sehr spezielles Thema handelt, möchte ich hier kurz zusammenfassen, wie man einen <strong>Doctrine 2 SQL Logger/Profiler</strong> in einer <strong>Zend Framework</strong> Umgebung umsetzen kann. Da die Kombination aus <a href="http://framework.zend.com/" title="Zend Framework">ZF</a> und <a href="http://www.doctrine-project.org/" title="Doctrine Project">Doctrine 2</a> durchaus beliebt zu sein scheint, zumindest wenn man von Blogeinträgen und Tutorials im Internet ausgeht, könnte dieser Beitrag für manch einen hilfreich sein.<span id="more-3608"></span> Vorweg möchte ich auch noch auf eine praktische Lösung hinweisen, um Doctrine 2.x mit dem Zend Framework 1.x zu verbinden: Und zwar <strong>Bisna von Guilherme Blanco</strong>, zu finden in seinem <a href="https://github.com/guilhermeblanco/ZendFramework1-Doctrine2" title="Bisna GitHub Repository">GitHub Repository</a>. Danach lässt sich Doctrine mittels Zend_Config (ini, xml, etc.) konfigurieren.</p>
<h3>SQL Queries in der ZFDebug-Leiste</h3>
<p>Nach der Integration von Doctrine in unsere neue Webapplikation basierend auf dem Zend Framework fehlte uns noch eine einfache Möglichkeit SQL Queries anzuzeigen. Da wir bereits <strong>ZFDebug</strong> verwenden, lag ein zusätzliches Plugin für die Ausgabe in der Debugleiste für uns nahe. <a href="http://code.google.com/p/zfdebug/" title="ZFDebug auf Google-Code">ZFDebug</a> wurde leider seit Mitte 2009 nicht mehr aktualisiert, funktioniert jedoch immer noch sehr gut, liefert hilfreiche Informationen rund um die Webapplikation und lässt sich sehr einfach erweitern. Daher werde ich hier zeigen, wie man den Doctrine 2 Profiler in einem ZFDebug Plugin verwenden kann.</p>
<h3>Profiler</h3>
<p>Doctrine bietet mit <strong>Doctrine\DBAL\Logging\SQLLogger</strong> bereits ein Interface um einen Logger mit einer Datenbank-Verbindung zu verknüpfen. Wir implementieren dieses Interface mit den beiden Methoden <strong>startQuery()</strong> und <strong>stopQuery()</strong> und speichern einfach alle Queries in ein Array das wir später in der Debugleiste ausgeben werden.</p>
<p><strong>DoctrineExtensions/Profiler/ZFDebugProfiler.php:</strong></p>
<div class="codecolorer-container php geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">namespace</span> DoctrineExtensions\Profiler<span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">class</span> ZFDebugProfiler implements \Doctrine\DBAL\Logging\SQLLogger<br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$totalTime</span> <span style="color: #339933;">=</span> <span style="color:#800080;">0.0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$queries</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$_curQuery</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> startQuery<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span> <span style="color: #000088;">$params</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span> <span style="color: #000088;">$types</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_curQuery <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> \stdClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_curQuery<span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$sql</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_curQuery<span style="color: #339933;">-&gt;</span><span style="color: #004000;">params</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$params</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_curQuery<span style="color: #339933;">-&gt;</span><span style="color: #990000;">time</span> <span style="color: #339933;">=</span> \<span style="color: #990000;">microtime</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> stopQuery<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$executionTime</span> <span style="color: #339933;">=</span> \<span style="color: #990000;">microtime</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_curQuery<span style="color: #339933;">-&gt;</span><span style="color: #990000;">time</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">totalTime</span> <span style="color: #339933;">+=</span> <span style="color: #000088;">$executionTime</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">queries</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'time'</span> &nbsp; <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$executionTime</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'sql'</span> &nbsp; &nbsp;<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_curQuery<span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'params'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_curQuery<span style="color: #339933;">-&gt;</span><span style="color: #004000;">params</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Nun müssen wir Doctrine noch mitteilen, dass unser Profiler verwendet werden soll. Wird Bisna eingesetzt, kann dies ganz einfach in der Konfiguration (hier beispielsweise in einer ini-Datei) erledigt werden:</p>
<div class="codecolorer-container php geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">resources<span style="color: #339933;">.</span>doctrine<span style="color: #339933;">.</span>dbal<span style="color: #339933;">.</span>connections<span style="color: #339933;">.</span><span style="color: #b1b100;">default</span><span style="color: #339933;">.</span>sqlLoggerClass <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;DoctrineExtensions\Profiler\ZFDebugProfiler&quot;</span></div></td></tr></tbody></table></div>
<p>Im Hintergrund wird der Konfiguration der DBAL-Verbindung eine neue Instanz unseres SQL Loggers übergeben:</p>
<div class="codecolorer-container php geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$configuration</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Doctrine\DBAL\Configuration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$configuration</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setSQLLogger</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> DoctrineExtensions\Profiler\ZFDebugProfiler<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$connection</span> <span style="color: #339933;">=</span> Doctrine\DBAL\DriverManager<span style="color: #339933;">::</span><span style="color: #004000;">getConnection</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$connectionParams</span><span style="color: #339933;">,</span> <span style="color: #000088;">$configuration</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Natürlich lässt sich statt des ZFDebugProfilers auch einfach ein LogProfiler oder FirebugProfiler implementieren, welche die Queries direkt in eine Datei schreiben bzw. im Firebug ausgeben. Wir verwenden unseren Profiler hingegen, um die SQL Queries in einem ZFDebug Plugin aufzulisten.</p>
<h3>ZFDebug Plugin</h3>
<p>Nachdem der SQL Logger an Doctrine übergeben wurde, werden alle SQL Queries, deren Parameter und die Dauer der einzelnen Queries gespeichert. Ausgeben wollen wir das Ganze in unserer ZFDebug Leiste, wir erstellen also zunächst ein Plugin, indem wir das Interface <strong>ZFDebug_Controller_Plugin_Debug_Plugin_Interface</strong> implementieren:</p>
<p><strong>ZFDebug/Controller/Plugin/Debug/Plugin/Doctrine.php:</strong></p>
<div class="codecolorer-container php geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">class</span> ZFDebug_Controller_Plugin_Debug_Plugin_Doctrine implements ZFDebug_Controller_Plugin_Debug_Plugin_Interface<br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$_identifier</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'doctrine'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$_profilers</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span> <span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'profiler'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers <span style="color: #339933;">=</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'profiler'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getIdentifier<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_identifier<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getTab<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'No Profiler'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers <span style="color: #b1b100;">as</span> <span style="color: #000088;">$profiler</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$profilerInfo</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$profiler</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">queries</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' in '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">round</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$profiler</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">totalTime</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">1000</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> &nbsp;<span style="color: #339933;">.</span> <span style="color: #0000ff;">' ms'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' / '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$profilerInfo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getPanel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$html</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'No Profiler'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_profilers <span style="color: #b1b100;">as</span> <span style="color: #000088;">$index</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$profiler</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;h4&gt;Profiler ['</span><span style="color: #339933;">.</span><span style="color: #000088;">$index</span><span style="color: #339933;">.</span><span style="color: #0000ff;">']&lt;/h4&gt;&lt;ol&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$profiler</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">queries</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;li&gt;&lt;b&gt;['</span> <span style="color: #339933;">.</span> <span style="color: #990000;">round</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'time'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">1000</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' ms]&lt;/b&gt; '</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">highlightSql</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'sql'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'params'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;br/&gt;&lt;i&gt;bindings:&lt;/i&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">listBindings</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'params'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;/li&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;/ol&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$html</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> listBindings<span style="color: #009900;">&#40;</span><span style="color: #000088;">$bindings</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;ol&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$bindings</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$binding</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;li&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$binding</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">listBindings</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$binding</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$binding</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'&lt;/li&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$html</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/ol&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> highlightSql<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$statements</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'UPDATE'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'INSERT'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'FROM'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'WHERE'</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'LEFT JOIN'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'JOIN'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ORDER BY'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'GROUP BY'</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'OFFSET'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'LIMIT'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'SET'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'VALUES'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/('</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$statements</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">')/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&lt;b&gt;\1&lt;/b&gt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Da wir auch ein wenig Wert auf die Formatierung legen, ist der Code des Plugins etwas umfangreicher ausgefallen. Wichtig sind die <strong>getTab()</strong> und <strong>getPanel()</strong> Methoden, welche die HTML Ausgabe für den Titel des Plugins in der Debugleiste und für detaillierte Informationen im Panel beim Ausklappen des Plugins zurückgeben.</p>
<p>Nun muss das Plugin noch in den Optionen von ZFDebug eingetragen werden. Beim Bootstrapping der Applikation erstellen wir das ZFDebug_Controller_Plugin_Debug und registrieren es beim Frontcontroller. Zunächst gehen wir jedoch sicher, dass die Doctrine Ressource bereits existiert und erstellen eine Liste der Profiler aller DBAL-Verbindungen, die wir anschließend unserem Plugin übergeben. In den ZFDebug Optionen tragen wir unter Plugins unsere Klasse <strong>ZFDebug_Controller_Plugin_Debug_Plugin_Doctrine</strong> mit dessen Konfiguration ein:</p>
<div class="codecolorer-container php geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bootstrap</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'doctrine'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$container</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getResource</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'doctrine'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$profilers</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$container</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getConnectionNames</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$connName</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$profiler</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$container</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getConnection</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$connName</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getConfiguration</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getSQLLogger</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$profiler</span> instanceof DoctrineExtensions\Profiler\ZFDebugProfiler<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$profilers</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$connName</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$profiler</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'plugins'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'ZFDebug_Controller_Plugin_Debug_Plugin_Doctrine'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'profiler'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$profilers</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$debug</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ZFDebug_Controller_Plugin_Debug<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bootstrap</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'frontController'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getResource</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'frontController'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registerPlugin</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$debug</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Nun lassen sich alle Queries von Doctrine und deren Performance übersichtlich in ZFDebug anzeigen. Zu beachten ist vielleicht, falls man Bisna verwendet, dass durch den Aufruf von $container->getConnection($name)&#8230; die DBAL-Verbindungen tatsächlich gestartet werden. Ansonsten würden sie nicht unbedingt bereits beim Bootstrapping, sondern erst bei der ersten Verwendung gestartet. Da ZFDebug aber sowieso nur im Debug-Modus laufen sollte, muss diesbezüglich nur auf den Unterschied zwischen Debug- und Production-Modus geachtet werden.</p>
<p>Verwendete Versionen:<br />
- Zend Framework 1.11.11<br />
- Doctrine 2.1.5<br />
- ZFDebug 1.5</p>
<p><a href="http://www.loremipsum.at/wp-content/uploads/2011/12/zfdebug.png"><img src="http://www.loremipsum.at/wp-content/uploads/2011/12/zfdebug-300x51.png" alt="" title="ZFDebug-Leiste mit Doctrine 2 Profiler Plugin" width="300" height="51" class="alignnone size-medium wp-image-3614" /></a></p>
<h3>Zend Framework 2</h3>
<p>Da ZF2 wohl noch einige Monate auf sich warten lässt, kann man im Moment leider noch keine vollwertige Webapplikation darauf aufbauen. Spätestens zum Release wird aber eine Umstellung fällig werden, sollte die zweite Version das einhalten was sie momentan verspricht. Es wäre daher interessant zu wissen, ob ZFDebug auch für ZF2 erscheint, was wenn man sich die Projektaktivität ansieht eher zu bezweifeln ist &#8211; oder es vielversprechende Alternativen dazu gibt?</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/code/integration-von-doctrine-in-eine-modul-basierte-zend-anwendung/" rel="bookmark">Integration von Doctrine in eine modulbasierte Zend Anwendung</a></li>
		<li><a href="http://www.loremipsum.at/blog/sem/neues-wordpress-plugin-affiliando-vergleichsrechner-1-0/" rel="bookmark">Neues WordPress Plugin: Affiliando Vergleichsrechner 1.0</a></li>
		<li><a href="http://www.loremipsum.at/blog/code/rundungsfehler-in-magento-beheben/" rel="bookmark">Rundungsfehler in Magento beheben</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/blog/code/doctrine-2-sql-profiler-in-debugleiste/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Agent</title>
		<link>http://www.loremipsum.at/wissen/lexikon/user-agent/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/user-agent/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 10:09:49 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3527</guid>
		<description><![CDATA[Als User Agents bezeichnet man Anwender-Programme, die es ermöglichen einen Netzwerkdienst (z.B. Browser) überhaupt nutzen zu können. Der User Agent dient somit als Schnittstelle für den Benutzer. Welche Gruppen gibt es, die mit User Agents arbeiten? Webbrowser Programme, die dem &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/user-agent/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/personensuchmaschinen-spionieren-leicht-gemacht/" rel="bookmark">Personensuchmaschinen &#8211; Spionieren leicht gemacht</a></li>
		<li><a href="http://www.loremipsum.at/blog/datenschutz/facebook-connect-in-magento-shops/" rel="bookmark">Facebook-Connect in Magento-Shops</a></li>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/3-dateien-die-ihre-webseite-einfach-verbessern/" rel="bookmark">3 Dateien die Ihre Webseite einfach verbessern</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Als User Agents bezeichnet man Anwender-Programme, die es ermöglichen einen Netzwerkdienst (z.B. Browser) überhaupt nutzen zu können. Der User Agent dient somit als Schnittstelle für den Benutzer.</p>
<h2>Welche Gruppen gibt es, die mit User Agents arbeiten?</h2>
<p><strong>Webbrowser</strong><br />
Programme, die dem Benutzer erlauben im Web zu surfen und diesen das Darstellen von Websiten, Grafiken usw. ermöglichen. Beispiele: Firefox, Safari, Internet Explorer, &#8230;</p>
<p><strong>Webapplikationen</strong><br />
Dies sind Programme, die zur Content-Verwaltung, Kommunikation und Ausführen von Dateien dienen, wie Real-Player oder Adobe Acrobat Reader.</p>
<p><strong>Crawler</strong><br />
Dies sind Programme, die Suchmaschinen verwenden. Diese durchsuchen das Internet nach neuen Inhalten und Aktualisierungen.</p>
<h2>Wie funktioniert ein User Agent?</h2>
<p>Ein Programm (z.B. Browser)  teilt dem Server, bei einer Anfrage, seinen jeweiligen User Agent mit. Dieser besteht aus einer Reihe von Zeichen mit verschiedene Informationen zu Betriebssystem und Version sowie Informationen des Programms.</p>
<h2>Anfragendes Programm und User Agent &#8211; das Gleiche?</h2>
<p>Viele Menschen glauben, dass ein anfragendes Programm und ein User Agent das Gleiche ist, dies ist aber ein Irrtum. Für den Benutzer, der im Internet surft, scheint es vielleicht so, denn dieser setzt sich in den meisten Fällen gar nicht auseinander, welche Informationen das anfragende Programm an den Webserver sendet.</p>
<p>Würde eine Website mittels eines HTML-Editors unter Windows geöffnet werden. So erhält der Server einen User Agent von Internet Explorer.</p>
<p>&nbsp;</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/personensuchmaschinen-spionieren-leicht-gemacht/" rel="bookmark">Personensuchmaschinen &#8211; Spionieren leicht gemacht</a></li>
		<li><a href="http://www.loremipsum.at/blog/datenschutz/facebook-connect-in-magento-shops/" rel="bookmark">Facebook-Connect in Magento-Shops</a></li>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/3-dateien-die-ihre-webseite-einfach-verbessern/" rel="bookmark">3 Dateien die Ihre Webseite einfach verbessern</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/user-agent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>White Hat SEO</title>
		<link>http://www.loremipsum.at/wissen/lexikon/white-hat-seo/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/white-hat-seo/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 08:40:23 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3530</guid>
		<description><![CDATA[Als White Hat SEO bezeichnet man eine Vorgangsweise bei der Suchmaschinenoptimierung, in der alle Richtlinien der Suchmaschinen befolgt wurden. Bei dieser Art von Suchmaschinenoptimierung wurde auf Cloaking, Weiterleitungen, Gästebuch- und Bloggspam verzichtet, die alle als Manipulationsversuche von Suchmaschinen gelten. White &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/white-hat-seo/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/consulting/online-marketing/" rel="bookmark">Online Marketing</a></li>
		<li><a href="http://www.loremipsum.at/produkte/suchmaschinenmarketing/" rel="bookmark">Suchmaschinenmarketing</a></li>
		<li><a href="http://www.loremipsum.at/consulting/" rel="bookmark">Consulting</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Als White Hat SEO bezeichnet man eine Vorgangsweise bei der Suchmaschinenoptimierung, in der alle Richtlinien der Suchmaschinen befolgt wurden. Bei dieser Art von Suchmaschinenoptimierung wurde auf Cloaking, Weiterleitungen, Gästebuch- und Bloggspam verzichtet, die alle als Manipulationsversuche von Suchmaschinen gelten.</p>
<p>White Hat SEO hat sich vor allem das Ziel gesteckt, mittels fairen Mitteln die Konkurrenz zu verdrängen um dem User den besseren Inhalt zu liefern.</p>
<h2>Welche Methoden gibt es bei White Hat SEO?</h2>
<ul>
<li>Im Bezug auf Onpage-Optimierungen, sollte inhaltlich qualitativer Content erstellt werden bzw. die Website um diesen zu erweitern</li>
<li>Es wird mit HTML-Tags gearbeitet</li>
<li>Der Quellcode wird den Suchmaschinen angepasst.</li>
<li>White Hat SEO steht im engem Zusammenhang mit der Onpage-Optimierung. Wenn die Website infolge von qualitativen Content, viele Backlinks bekommt, so hat dies sicherlich mit Onpage-Optimierung zu tun.</li>
<li>Es werden keine Linkfarmen oder ähnliche Methoden, die die Suchmaschinen zu manipulieren versuchen, angewandt.</li>
<li>Man sollte regelmäßig Ranking-Analysen durchführen und unter Umständen, falls notwendig, weitere Optimierungsmaßnahmen setzen.</li>
</ul>
<p>Im Grunde ist man mit White Hat SEO längerfristig gesehen immer auf der sicheren Seite als wie mit Black Hat SEO.</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/consulting/online-marketing/" rel="bookmark">Online Marketing</a></li>
		<li><a href="http://www.loremipsum.at/produkte/suchmaschinenmarketing/" rel="bookmark">Suchmaschinenmarketing</a></li>
		<li><a href="http://www.loremipsum.at/consulting/" rel="bookmark">Consulting</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/white-hat-seo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Targeting</title>
		<link>http://www.loremipsum.at/wissen/lexikon/targeting/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/targeting/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 13:34:54 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3524</guid>
		<description><![CDATA[Targeting definiert die Zielgruppenansprache und bezeichnet die zielgruppenorientierte Einblendung von Werbung auf Websiten. Welches Ziel verfolgt Targeting? Mittels Targeting versucht man den Zielgruppen eine für sie entsprechende Werbung einzublenden. Je genauer Targeting entwickelt wurde, desto besser lassen sich Zielgruppen ansprechen. &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/targeting/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/datenschutzbestimmungen/" rel="bookmark">Datenschutzbestimmungen</a></li>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/virales-und-guerilla-marketing-im-web/" rel="bookmark">Virales- und Guerilla-Marketing im Web</a></li>
		<li><a href="http://www.loremipsum.at/unternehmen/jobs/lehrstelle-marktkommunikation/" rel="bookmark">Lehrstelle Marktkommunikation</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Targeting definiert die Zielgruppenansprache und bezeichnet die zielgruppenorientierte Einblendung von Werbung auf Websiten.</p>
<h2>Welches Ziel verfolgt Targeting?</h2>
<p>Mittels Targeting versucht man den Zielgruppen eine für sie entsprechende Werbung einzublenden. Je genauer Targeting entwickelt wurde, desto besser lassen sich Zielgruppen ansprechen.</p>
<p>Für Targeting werden im Browser gesetzte Cookies verwendet, um die Zielgruppe herauszufinden.</p>
<h2>Welche Formen von Targeting gibt es?</h2>
<p>Es gibt eine verschiedene Formen von Targeting wie:</p>
<p><strong>Content-Targeting</strong><br />
Bei Content-Targeting handelt es sich um die einfachste Form von Targeting. Hierbei wird contentbezogene Werbung geschalten.</p>
<p><strong>Semantisches-Targeting</strong><br />
Diese Form analysiert den kompletten Inhalt einer Website und die Bedeutung der wichtigen Wörter. Hierbei wird ebenfalls versucht Werbung zu dem passenden Inhalt zu schalten. Allerdings werden hier innerhalb einer Inhaltskategorie Unterschiede gemacht.</p>
<p><strong>Behavioral-Targeting</strong><br />
Beim Behavioral-Targeting werden technische Daten analysiert, aber es werden zusätzlich mehrere Faktoren miteinberechnet. Sogar kleinste Faktoren, wie installierte Plug-Ins und Schriftarten lassen Rückschlüsse über das Kaufverhalten des Besuchers ziehen und diese werden beim Behavioral-Targeting miteinbezogen.</p>
<p><strong>Predictive-Behavioral-Targeting</strong><br />
Bei dieser Targeting Form werden User-spezifische Daten durch statistische Daten ergänzt. Dadurch kann eine ungefähre Voraussage bezüglich des Käuferverhaltens gemacht werden.</p>
<p><strong>Retargeting</strong><br />
Beim Retargeting versucht der Websitebetreiber, Kunden die ihm verloren gegangen sind Produkte anzubieten, die der Kunde beim vorigen Besuch der Website angeschaut hat. Dadurch versucht der Websitebetreiber das jeweilige Produkt über Wochen den User zu vermitteln.</p>
<p><strong>Social-Media-Targeting</strong><br />
Das Social-Media-Targeting ist die allerneuste Form von Targeting. Mittels Social-Media-Targeting kann man noch eine genauere Zielgruppendefinition erzielen. Facebook nutzte als erstes Soziale Netzwerk eine selbst entwickelte Social-Media-Targeting Technologie, welche eine personalisierte Werbeschaltung ermöglicht.</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/datenschutzbestimmungen/" rel="bookmark">Datenschutzbestimmungen</a></li>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/virales-und-guerilla-marketing-im-web/" rel="bookmark">Virales- und Guerilla-Marketing im Web</a></li>
		<li><a href="http://www.loremipsum.at/unternehmen/jobs/lehrstelle-marktkommunikation/" rel="bookmark">Lehrstelle Marktkommunikation</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/targeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skyscraper</title>
		<link>http://www.loremipsum.at/wissen/lexikon/skyscraper/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/skyscraper/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 11:44:49 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3509</guid>
		<description><![CDATA[Skyscraper definiert ein Bannerwerbeformat und hebt sich vor allem durch die große Höhe von anderen Formaten ab. Deshalb rührt auch der Name &#8220;Skyscraper&#8221;, was im deutschem &#8220;Hochhaus&#8221; bedeutet. Ein Skyscraper wird in der Regel am rechten oder linken Rand einer &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/skyscraper/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/technik/augmented-reality-meets-smartphone/" rel="bookmark">Augmented Reality meets Smartphone</a></li>
		<li><a href="http://www.loremipsum.at/unternehmen/presse/" rel="bookmark">Presse</a></li>
		<li><a href="http://www.loremipsum.at/blog/das-sip-protokoll/" rel="bookmark">Das SIP-Protokoll</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Skyscraper definiert ein Bannerwerbeformat und hebt sich vor allem durch die große Höhe von anderen Formaten ab. Deshalb rührt auch der Name &#8220;Skyscraper&#8221;, was im deutschem &#8220;Hochhaus&#8221; bedeutet. Ein Skyscraper wird in der Regel am rechten oder linken Rand einer Website platziert.</p>
<h2>Welches Format hat ein Skyscraper?</h2>
<p>Bei Skyscraper gibt es eine Vielzahl an Formaten. In den meisten Fällen hat er allerdings eine Breite von  120 Pixel oder 160 Pixel. Ein Skyscraper mit einer Breite von 160 Pixel wird in der Fachsprache als &#8220;Wide Skyscraper&#8221; bezeichnet. Ein herkömmlicher Skyscraper hat eine Höhe von 600 Pixel. Es ist aber keine fixe Standardhöhe für einen Skyscraper festgelegt.</p>
<div id="attachment_3510" class="wp-caption aligncenter" style="width: 503px"><a href="http://www.loremipsum.at/wissen/lexikon/skyscraper/attachment/580x2500/" rel="attachment wp-att-3510"><img class="size-full wp-image-3510" src="http://www.loremipsum.at/wp-content/uploads/2011/11/580x2500.jpeg" alt="" width="493" height="600" /></a><p class="wp-caption-text">Formate von Skyscraper</p></div>
<h2>Welche Technologien kommen bei Skyscrapern zur Anwendung?</h2>
<p>Bei sogenannten Skyscrapern kommen in den meisten Fällen JavaScript- oder Flash-Technologien zum Einsatz. Damit haben Webdesigner mehr Gestaltungsmöglichkeiten.</p>
<p>Einer Studie zufolge  wird den Skyscraper mehr Aufmerksamkeit geschenkt als herkömmlicher Bannerwerbung. Denn normale Banner werden in den meisten Fällen vom Benutzer ignoriert. Hier ist die Sprache von Bannerblindness. Aber die Klickrate eines Skyscraper ist beachtlich höher gegenüber klassischen Bannern.</p>
<p>&nbsp;</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/technik/augmented-reality-meets-smartphone/" rel="bookmark">Augmented Reality meets Smartphone</a></li>
		<li><a href="http://www.loremipsum.at/unternehmen/presse/" rel="bookmark">Presse</a></li>
		<li><a href="http://www.loremipsum.at/blog/das-sip-protokoll/" rel="bookmark">Das SIP-Protokoll</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/skyscraper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sitemap</title>
		<link>http://www.loremipsum.at/wissen/lexikon/sitemap/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/sitemap/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 11:07:58 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3501</guid>
		<description><![CDATA[Eine Sitemap wird auch noch als Seitenübersicht bezeichnet. In einer Sitemap werden alle einzelnen Webseiten einer Internetpräsenz hierarchisch aufgelistet. Eine Seitenübersicht wird den Besuchern einer Website zur Verfügung gestellt, um den ihnen die Struktur und den Umfang der Website näher &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/sitemap/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/3-dateien-die-ihre-webseite-einfach-verbessern/" rel="bookmark">3 Dateien die Ihre Webseite einfach verbessern</a></li>
		<li><a href="http://www.loremipsum.at/blog/events/planai-einblicke-im-grazer-hotel-weitzer/" rel="bookmark">Planai-Einblicke im Grazer Hotel Weitzer</a></li>
		<li><a href="http://www.loremipsum.at/produkte/website/" rel="bookmark">Website</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Eine Sitemap wird auch noch als Seitenübersicht bezeichnet. In einer Sitemap werden alle einzelnen Webseiten einer Internetpräsenz hierarchisch aufgelistet. Eine Seitenübersicht wird den Besuchern einer Website zur Verfügung gestellt, um den ihnen die Struktur und den Umfang der Website näher zu bringen.</p>
<h2>Sitemap und Inhaltsverzeichnis &#8211; das Gleiche?</h2>
<p>Eine Sitemap darf niemals mit einem Inhaltsverzeichnis verwechselt werden. Denn ein Inhaltsverzeichnis gibt an, welche Themen auf der Website behandelt werden, wobei eine Sitemap aufschluss über die Struktur und den Umfang einer Website gibt.</p>
<div id="attachment_3502" class="wp-caption aligncenter" style="width: 538px"><a href="http://www.loremipsum.at/wissen/lexikon/sitemap/attachment/sitemap/" rel="attachment wp-att-3502"><img class="size-large wp-image-3502" src="http://www.loremipsum.at/wp-content/uploads/2011/11/sitemap-558x600.png" alt="" width="528" height="570" /></a><p class="wp-caption-text">Beispiel - Sitemap</p></div>
<p style="text-align: center">
<h2>Welche Vorteile und Nachteile bringt eine Sitemap mit sich</h2>
<p>Sitemaps spielen im Bereich der Suchmaschinenoptimierung eine sehr zentrale Rolle, da Sie Aufschluss darüber geben, ob alle Seiten überhaupt erreichbar sind. Dies ist vor allem wichtig, wenn Flash- oder JavaScript-Applikationen in der Website miteingebunden sind.</p>
<p>Viele Suchmaschinen folgen nur einen kleinen Teil der Links, die auf der Website vorhanden sind. Deshalb ist es hierbei sehr sinnvoll, eine Sitemap zu erstellen, denn diese bringen Suchmaschinen dazu alle Seiten der Website wahrzunehmen.</p>
<p>Wenn man etwas auf der Website sucht, so ist es sicher einfacher über eine einfache Navigation oder interne Suchfunktion zu den gewünschten Informationen zu kommen als über eine Sitemap, da man die Informationen viel schneller findet.</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/3-dateien-die-ihre-webseite-einfach-verbessern/" rel="bookmark">3 Dateien die Ihre Webseite einfach verbessern</a></li>
		<li><a href="http://www.loremipsum.at/blog/events/planai-einblicke-im-grazer-hotel-weitzer/" rel="bookmark">Planai-Einblicke im Grazer Hotel Weitzer</a></li>
		<li><a href="http://www.loremipsum.at/produkte/website/" rel="bookmark">Website</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/sitemap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS-Feed</title>
		<link>http://www.loremipsum.at/wissen/lexikon/rss-feed/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/rss-feed/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 10:41:18 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3498</guid>
		<description><![CDATA[RSS steht für &#8220;Really Simple Syndication&#8221;, was übersetzt &#8220;wirklich einfache Verbreitung&#8221; bedeutet. Als RSS-Feed bezeichnet man eine Datenzuführung in einfacher Form. Was ist ein RSS-Feed? Ein RSS-Feed ist eine reine Textdatei, ähnlich wie XML, die aus einer Reihe von Einträgen &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/rss-feed/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/code/permanenter-zugriff-fur-die-facebook-app/" rel="bookmark">Permanenter Zugriff für die Facebook-App</a></li>
		<li><a href="http://www.loremipsum.at/blog/rechteverwaltung-alle-benutzer-sind-gleich-manche-sind-gleicher/" rel="bookmark">Rechteverwaltung &#8211; Alle Benutzer sind gleich, manche sind gleicher</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>RSS steht für &#8220;Really Simple Syndication&#8221;, was übersetzt &#8220;wirklich einfache Verbreitung&#8221; bedeutet. Als RSS-Feed bezeichnet man eine Datenzuführung in einfacher Form.</p>
<h2>Was ist ein RSS-Feed?</h2>
<p>Ein RSS-Feed ist eine reine Textdatei, ähnlich wie XML, die aus einer Reihe von Einträgen besteht. Ein RSS-Feed besteht aus einem Titel, einer kleinen Zusammenfassung und den jeweiligen Link zu dessen Homepage, wo der Artikel hinterlegt ist.<br />
RSS-Feeds können auch weitere Zusatzinformationen beinhalten, wie Name des Autors, Datum, usw.</p>
<p>Um ein RSS-Feed lesen zu können, braucht man auch einen dementsprechenden RSS-Reader, welcher es ermöglicht die RSS-Feeds zu verwalten. Die einzelnen RSS-Feeds werden hier gut strukturiert aufgelistet.</p>
<p>Ein RSS-Feed hat kein einheitliches Dateiformat, sondern kann auch aus einem XML, RSS oder RDF Format bestehen.</p>
<h2>Was erlaubt ein RSS-Feed?</h2>
<p>Hinter einem RSS-Feed verbirgt sich eine relativ moderne Technologie, die es erlaubt News von Websiten zu abonnieren. Durch so ein Abo wird man automatisch über Aktualisierungen der jeweiligen Website informiert.</p>
<p>Somit können Sie ganz einfach Diskussionen auf einer Website mitverfolgen. Viele Redaktionen nutzten RSS-Feeds um News ins Web zu stellen und zu verteilen oder mit anderen Websiten auszutauschen.</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/code/permanenter-zugriff-fur-die-facebook-app/" rel="bookmark">Permanenter Zugriff für die Facebook-App</a></li>
		<li><a href="http://www.loremipsum.at/blog/rechteverwaltung-alle-benutzer-sind-gleich-manche-sind-gleicher/" rel="bookmark">Rechteverwaltung &#8211; Alle Benutzer sind gleich, manche sind gleicher</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/rss-feed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Referrer</title>
		<link>http://www.loremipsum.at/wissen/lexikon/referrer/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/referrer/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 09:56:02 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3493</guid>
		<description><![CDATA[Der Begriff Referrer ist die Internetadresse, von der aus der Besucher auf die aktuelle Website gekommen ist. Durch Klicken eines Links an eine andere Website, wird der Referrer an den Server, wo die Internetadresse hinterlegt ist, übermittelt. Der Referrer wird &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/referrer/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/sem/seo/3-schritte-zur-keyword-serp-position-mit-google-analytics/" rel="bookmark">3 Schritte zur Keyword SERP-Position mit Google Analytics</a></li>
		<li><a href="http://www.loremipsum.at/blog/datenschutz/anonymes-internetsurfen-unmoglich/" rel="bookmark">Anonymes Internetsurfen unmöglich?</a></li>
		<li><a href="http://www.loremipsum.at/datenschutzbestimmungen/" rel="bookmark">Datenschutzbestimmungen</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Der Begriff Referrer ist die Internetadresse, von der aus der Besucher auf die aktuelle Website gekommen ist. Durch Klicken eines Links an eine andere Website, wird der Referrer an den Server, wo die Internetadresse hinterlegt ist, übermittelt.</p>
<p>Der Referrer wird automatisch bei Dateien übermittelt, die in dieser Website miteingebunden wurden.</p>
<h2>Welche Funktion hat ein Referrer?</h2>
<p>Der Webserver speichert je Abruf folgende Informationen:</p>
<ul>
<li>GET &#8211; Welche Seite soll geladen werden?</li>
<li>HOST &#8211; Von welchem Server sollen die Informationen bezogen werden?</li>
<li>USER AGENT &#8211; Welcher Browser hat die Anfrage gesendet?</li>
<li>REFERER &#8211; Von welcher Website kam der Besucher?</li>
</ul>
<p>Der Referrer ist somit ein Bestandteil einer HTTP-Anfrage. Durch diese Informationen die in der Protokolldatei archiviert werden, kann der Betreiber einer Website sämtliche Daten herauslesen, wie beispielsweise Websiten, die auf die eigene Internetpräsenz verweisen. Viele Betreiber möchten verhindern, dass fremde Websiten, Bilder von der eigenen Website einbinden. Deshalb können mittels spezieller Referrer Einstellungen, Bilder nur in Kombination eines Referrer auf der Website verwendet werden.</p>
<p>Bei der Programmierung des HTTP-Protokolls unterlief den Programmierern ein Schreibfehler und schrieben statt Referrer einfach Referer.</p>
<p>Einen Referrer kann aber nicht nur ein herkömmlicher Besucher auslösen, sondern auch die Robots von Suchmaschinen. Diese schicken Anfragen an den Webserver durch ein Programm.</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/blog/sem/seo/3-schritte-zur-keyword-serp-position-mit-google-analytics/" rel="bookmark">3 Schritte zur Keyword SERP-Position mit Google Analytics</a></li>
		<li><a href="http://www.loremipsum.at/blog/datenschutz/anonymes-internetsurfen-unmoglich/" rel="bookmark">Anonymes Internetsurfen unmöglich?</a></li>
		<li><a href="http://www.loremipsum.at/datenschutzbestimmungen/" rel="bookmark">Datenschutzbestimmungen</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/referrer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Marketing</title>
		<link>http://www.loremipsum.at/wissen/lexikon/performance-marketing/</link>
		<comments>http://www.loremipsum.at/wissen/lexikon/performance-marketing/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 09:12:52 +0000</pubDate>
		<dc:creator>Elisabeth Krause</dc:creator>
				<category><![CDATA[Lexikon]]></category>

		<guid isPermaLink="false">http://www.loremipsum.at/?p=3491</guid>
		<description><![CDATA[Als Performance Marketing bezeichnet man den Einsatz von Onlinemarketinginstrumenten. Mittels dieser Marketingstrategie möchte man die Transaktionen sowie Reaktionen des Besuchers messen. Der Begriff Performance Marketing ist noch relativ jung und ihm wurde erst in den letzten Jahren immer mehr an &#8230; <a href="http://www.loremipsum.at/wissen/lexikon/performance-marketing/">weiterlesen <span class="meta-nav">&#187;</span></a><div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/wissen/webacademy/maile-ohye-site-performance-speed-optimieren/" rel="bookmark">Maile Ohye – Site Performance &#038; Speed optimieren</a></li>
		<li><a href="http://www.loremipsum.at/consulting/online-marketing/" rel="bookmark">Online Marketing</a></li>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/virales-und-guerilla-marketing-im-web/" rel="bookmark">Virales- und Guerilla-Marketing im Web</a></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Als Performance Marketing bezeichnet man den Einsatz von Onlinemarketinginstrumenten. Mittels dieser Marketingstrategie möchte man die Transaktionen sowie Reaktionen des Besuchers messen.</p>
<p>Der Begriff Performance Marketing ist noch relativ jung und ihm wurde erst in den letzten Jahren immer mehr an Bedeutung zugeschrieben.</p>
<h2>Welche Funktion sollte Performance Marketing haben?</h2>
<p>Das Ziel, was Performance Marketing verfolgt, ist die Neukundengewinnung und Kundenbindung. Es werden bei dieser Marketingstrategie verschiedene Werbekanäle verwendet um Reaktionen und Transaktionen besser messen zu können.</p>
<h2>Über welche Tools verfügt Performance Marketing</h2>
<p>Performance Marketing nutzt vor allem folgende Tools:</p>
<p><strong>Suchmaschinenmarketing</strong><br />
Hiermit sind vor allem Maßnahmen gemeint, die die Rankingposition bei Suchmaschinen steigern, um somit mehr Besucher auf die Webpräsenz zu holen. Hierunter fallen vor allem technische Optimierungen aber auch die Schaltung von Sponsored Links (bezahlte Links) auf Suchmaschinen.</p>
<p><strong>Online-Marketing</strong><br />
Hiermit ist die Promotion einer Website im Web gemeint. Mittels Online-Marketing wird versucht, so viele Besucher wie möglich auf die Website zu holen. Unter Online-Marketing fallen vor allem Bannerwerbung und Inhalt-Integrationen.</p>
<p><strong>E-Mail Marketing</strong><br />
Das Ziel, was E-Mail Marketing verfolgt ist, dass der Besucher selbst die Zustimmung für einen Newsletter gibt bzw. diesen anfordert.</p>
<p><strong>Affiliate Marketing</strong><br />
Diese Marketingstrategie wird vor allem im E-Business verwendet. Ziel ist es, E-Commerce Anbietern, die Verwendung neuer Vertriebsflächen über Partner Webseites zu ermöglichen. Der Besucher wird mittels eines Klicks auf der Partner Webseite, auf die Webseite des E-Commerce Anbieters weiter geleitet.</p>
<p><strong>Mobile Marketing</strong><br />
Mittels Mobile Marketing versucht man zu erreichen, dass Personen die Zusendung von SMS oder MMS freiwillig gestatten bzw. diese von sich aus anfordern.</p>
<div class="related"> 						<span class="hash">Verwandte Themen und Beitr&auml;ge</span>  						<ul>
		<li><a href="http://www.loremipsum.at/wissen/webacademy/maile-ohye-site-performance-speed-optimieren/" rel="bookmark">Maile Ohye – Site Performance &#038; Speed optimieren</a></li>
		<li><a href="http://www.loremipsum.at/consulting/online-marketing/" rel="bookmark">Online Marketing</a></li>
		<li><a href="http://www.loremipsum.at/wissen/ressourcen/virales-und-guerilla-marketing-im-web/" rel="bookmark">Virales- und Guerilla-Marketing im Web</a></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://www.loremipsum.at/wissen/lexikon/performance-marketing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

