<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Webtubes</title>
	<atom:link href="http://www.webtubes.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webtubes.de</link>
	<description>Web Development aus meiner Sicht</description>
	<lastBuildDate>Fri, 09 Mar 2012 22:55:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Yii Ajax Problem: mehrfaches Laden gleicher Javascript/CSS Dateien</title>
		<link>http://www.webtubes.de/programmierung/php/yii-ajax-problem-mehrfaches-laden-gleicher-javascriptcss-dateien/</link>
		<comments>http://www.webtubes.de/programmierung/php/yii-ajax-problem-mehrfaches-laden-gleicher-javascriptcss-dateien/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 18:02:40 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Yii]]></category>
		<category><![CDATA[Yii Framework]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=450</guid>
		<description><![CDATA[Yii ist im Zusammenspiel mit Ajax und renderPartial etwas zickig. So kommt es vor, dass Yii bei Ajax Requests identische Javascript- und CSS Dateien wiederholt mit ausliefert. Dies führt jedoch zu schlecht handelbaren Problemen. Auf der Suche nach einer Lösung zu diesem Problem, bin ich auf das Blog von Eirik Hoem gestoßen (wer mehr über die Hintergründe [...]]]></description>
			<content:encoded><![CDATA[<p>Yii ist im Zusammenspiel mit Ajax und renderPartial etwas zickig. So kommt es vor, dass Yii bei Ajax Requests identische Javascript- und CSS Dateien wiederholt mit ausliefert. Dies führt jedoch zu schlecht handelbaren Problemen. Auf der Suche nach einer Lösung zu diesem Problem, bin ich auf das <a href="http://www.eirikhoem.net/blog/2011/08/29/yii-framework-preventing-duplicate-jscss-includes-for-ajax-requests/">Blog von Eirik Hoem</a> gestoßen (wer mehr über die Hintergründe des Problems erfahren möchte, kann sich dort gern belesen). Das dort bereit gestellte Code Snippet habe ich ergänzt da es mit CSS Dateien nicht korrekt umgehen konnte. Das für mich gut funktionierende Script kann sehr einfach in den Header eingebunden werden und damit sind die Probleme ein für alle Male gelöst. Javascript- sowie CSS-Dateien werden nun nicht mehr wiederholt geladen.</p>
<p><span id="more-450"></span></p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Yii: Mehrfaches Laden von JS/Css-Dateien verhindern</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">$<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    $<span style="color: #339933;">.</span>ajaxSetup <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        <span style="color: #000000; font-weight: bold;">global</span><span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        dataFilter<span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>data<span style="color: #339933;">,</span>type<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #000000; font-weight: bold;">var</span> getScriptUrl <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>entry<span style="color: #009900;">&#41;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>entry<span style="color: #339933;">.</span>type <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;text/css&quot;</span><span style="color: #009900;">&#41;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                    <span style="color: #b1b100;">return</span> entry<span style="color: #339933;">.</span>href<span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #b1b100;">return</span> entry<span style="color: #339933;">.</span>src<span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>type <span style="color: #339933;">&amp;&amp;</span> type <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;html&quot;</span> <span style="color: #339933;">&amp;&amp;</span> type <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;text&quot;</span><span style="color: #009900;">&#41;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #b1b100;">return</span> data<span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #000000; font-weight: bold;">var</span> selector <span style="color: #339933;">=</span> <span style="color: #0000ff;">'script[src],link[rel=&quot;stylesheet&quot;]'</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>$<span style="color: #339933;">.</span>_loadedScripts<span style="color: #009900;">&#41;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                $<span style="color: #339933;">.</span>_loadedScripts <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                $<span style="color: #339933;">.</span>_dataHolder <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>document<span style="color: #339933;">.</span>createElement <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #000000; font-weight: bold;">var</span> loadedScripts <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>find <span style="color: #009900;">&#40;</span>selector<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #666666; font-style: italic;">//fetching scripts from the DOM</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> 0<span style="color: #339933;">,</span> len <span style="color: #339933;">=</span> loadedScripts<span style="color: #339933;">.</span>length<span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> len<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                    $<span style="color: #339933;">.</span>_loadedScripts<span style="color: #009900;">&#91;</span>getScriptUrl <span style="color: #009900;">&#40;</span>loadedScripts<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            $<span style="color: #339933;">.</span>_dataHolder<span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span>innerHTML <span style="color: #339933;">=</span> data<span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #000000; font-weight: bold;">var</span> incomingScripts <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>$<span style="color: #339933;">.</span>_dataHolder<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>find <span style="color: #009900;">&#40;</span>selector<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> 0<span style="color: #339933;">,</span> len <span style="color: #339933;">=</span> incomingScripts<span style="color: #339933;">.</span>length<span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> len<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>$<span style="color: #339933;">.</span>_loadedScripts<span style="color: #009900;">&#91;</span>getScriptUrl <span style="color: #009900;">&#40;</span>incomingScripts<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                    $<span style="color: #009900;">&#40;</span>incomingScripts<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>remove <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #b1b100;">else</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#123;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                    $<span style="color: #339933;">.</span>_loadedScripts<span style="color: #009900;">&#91;</span>getScriptUrl <span style="color: #009900;">&#40;</span>incomingScripts<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">                <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">            <span style="color: #b1b100;">return</span> $<span style="color: #339933;">.</span>_dataHolder<span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span>innerHTML<span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">        <span style="color: #009900;">&#125;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></li></ol></pre></div></div>
<p>&nbsp;</p>
<p>Viel Spaß damit <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/programmierung/php/yii-ajax-problem-mehrfaches-laden-gleicher-javascriptcss-dateien/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Yii Framework &#8211; das PHP Framework meiner Wahl</title>
		<link>http://www.webtubes.de/programmierung/php/yii-framework-das-php-framework-meiner-wahl/</link>
		<comments>http://www.webtubes.de/programmierung/php/yii-framework-das-php-framework-meiner-wahl/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 17:20:26 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Yii Framework]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=407</guid>
		<description><![CDATA[Irgendwann stand oder steht wohl jeder PHP-Entwickler einmal vor dem Problem der Auswahl eines geeigneten PHP Frameworks. Bis vor einigen Monaten habe ich mich primär mit selbst erstellten Frameworks herum geschlagen. Nicht das die Frameworks schlecht waren, jedoch verspürte ich mehr und mehr den Drang, bekannte PHP-Frameworks kennen zu lernen. Dies ist nicht zuletzt dem Umstand [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.webtubes.de/programmierung/php/yii-framework-das-php-framework-meiner-wahl/"><img class="aligncenter size-full wp-image-419" title="Yii Framework" src="http://www.webtubes.de/wp-content/uploads/yii.png" alt="" width="580" height="126" /></a></p>
<p>Irgendwann stand oder steht wohl jeder PHP-Entwickler einmal vor dem Problem der Auswahl eines geeigneten PHP Frameworks. Bis vor einigen Monaten habe ich mich primär mit selbst erstellten Frameworks herum geschlagen. Nicht das die Frameworks schlecht waren, jedoch verspürte ich mehr und mehr den Drang, bekannte PHP-Frameworks kennen zu lernen. Dies ist nicht zuletzt dem Umstand geschuldet, dass am Markt befindliche Ressourcen nicht kompatibel zu selbst erstellten Frameworks sind (der Aufwand und somit die Kosten sind zu hoch).</p>
<p><a href="http://framework.zend.com/"><img class="alignright size-full wp-image-422" title="Zend Framework" src="http://www.webtubes.de/wp-content/uploads/PoweredBy_ZF_4LightBG.png" alt="" width="127" height="25" /></a>So fiel meine Wahl zunächst auf ZEND Framework – das Flaggschiff unter den PHP Frameworks. ZEND ist ein sehr mächtiges aber leider auch ein unterirdisch performantes Framework. Die eigenartige auf Grund von PHP Abwärtskompatibilität angewendete Namespace-Implementierung mit Unterstrichen sowie die Komplexität des ZEND-Monsters haben mich jedoch zunehmend abgeschreckt. Mit ZEND gehen viele Dinge, wirklich sehr viele, aber in der Regel brauche ich diese Dinge nicht. Insofern bestand tief in mir der Wunsch nach einem schlankeren, Ressourcen schonendem und gut dokumentierten Framework Ausschau zu halten. Das Framework sollte zudem einfach konfigurierbar und modular verwendbar sein. Die Möglichkeit Extensions zur Erweiterung des Frameworks einzubinden, setze ich als gegeben voraus.</p>
<p><span id="more-407"></span></p>
<p>Folgende Komponenten sollte das Framework unbedingt an Board haben:</p>
<ul>
<li>MVC</li>
<li>modular erweiterbar (Module)</li>
<li>i18n (Mehrsprachigkeit)</li>
<li>einfache Konfiguration</li>
<li>ORM einfach austauschbar (falls erforderlich)</li>
<li>gut aufgestellte Community (wichtig für Extensions und Support)</li>
<li>gute Dokumentation (sowie im Code als auch im User Guide)</li>
<li>Access Control &amp; Rights Management</li>
<li>Unit Tests</li>
<li>gute Erweiterbarkeit und somit Flexibilität in jeglicher Hinsicht</li>
<li>Benutzer definiertes URL-Design (Routing)</li>
</ul>
<p><a href="http://www.yiiframework.com/"><img class="size-medium wp-image-419 alignright" style="border-style: initial; border-color: initial;" title="Yii Framework" src="http://www.webtubes.de/wp-content/uploads/yii-300x64.png" alt="" width="300" height="64" /></a></p>
<p>Sicherlich erfüllen sehr viele PHP-Frameworks oben genannte Ansprüche, allerdings wollte ich nach ZEND einem noch jungen Projekt meine Aufmerksamkeit schenken. So viel mein Blick eher zufällig als gezielt auf Yii. Angestachelt durch den <a title="Yii Performance Vergleich" href="http://www.yiiframework.com/performance/">Yii Performance Vergleich</a> mit diversen anderen Frameworks begann ich mich also in Yii einzulesen. Die ersten Tests verliefen zügig und funktionierten ohne Wehwechen – das kannte ich von ZEND auch anders. Module funktionieren von Haus aus, ohne das ich mich in Konfigurationsdateien tot wuseln muss. Selbst Module in Modulen in Modulen … funktionieren ohne groß Schnickschnack veranstalten zu müssen. Das hat mich dann doch sehr beeindruckt.</p>
<p>Das implementierte ORM (AR) ist sehr leistungsfähig, jedoch wie ich finde für Cloud Entwicklung nur bedingt geeignet. Das Problem des ORM ist schlichtweg, dass aus dem Code kein Datenbankschema generiert werden kann (zumindest nicht von Haus aus). Abgesehen davon beherrscht das ORM jedoch alles, was die tägliche Entwicklung benötigt. Mit Dcotrine2ORM, einer Extension zum Implementierung von Doctrine 2.0 in Yii, gibt es die für mich bessere Alternative, die sich ohne Probleme einbinden und nutzen lässt und diesen Missstand behebt.</p>
<p>Nun kann man denken was man will, die Leistungsfähigkeit und Performance eines Frameworks ist lediglich in einem realen Projekt sinnvoll einschätzbar. Von “Hello World” Tests halte ich persönlich nicht viel. Es gilt also ein Exempel zu statuieren, um über zuvor genannte Punkte eine gute Aussage treffen zu können. Ein Vergleich zu anderen Frameworks ist dadurch jedoch auch nur bedingt möglich.</p>
<p>Wie es der Zufall so will, holte ich also eine meiner Ideen aus der Schublade und begann zusammen einem Freund daraus ein Konzept zusammen zu tragen – zunächst alles ohne Yii <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Nachdem wir festgestellt hatten, dass sich die Idee umzusetzen lohnt, haben wir sämtliche erforderliche Seiten und Masken als Prototypen Sketches entworfen und von meinem Designer auf Basis dieser Grundlage ein Layout erstellen lassen. Kosten für weitere Dienstleistungen haben wir im Budget natürlich einfließen lassen, denn wenn man etwas macht dann richtig (-&gt; no money no honey).  genug gesülzt…</p>
<p>Die Landingpage zur Registrierung, zum Login, Passwort zurück setzen etc. ist fertig gestellt und ich erlaube mir an dieser Stelle ein Zwischenfazit. Die Entwicklung mit dem Yii Framework macht einem erfahrenen Entwickler wie mir nicht zuletzt wegen der ausgezeichneten Dokumentation sehr viel Spaß. Das Framework erweist sich als sehr gelungen und flexibel erweiterbar. Komponenten und Erweiterungen lassen sich nach Bedarf sehr trivial ein- beziehungsweise abschalten.</p>
<p>Mit einem Speicherverbrauch (LAMP, inklusive Doctrine, i18n, Verwendung von Modulen, APC=on) von 3,5-5,5 MB pro Request für die bisher entstandenen nicht sonderlich komplexen Seiten ist Yii in meinen Augen sehr Ressourcen schonend. Zum (ungleichen) Vergleich – eine WordPress Installation benötigt ohne Zusatzfeatures 14 MB. Mit einigen Plugins sind 32 MB schnell geknackt. Ein Drupal langt mit 15-40MB ebenfalls üppig zu. Zu bedenken ist, dass unter anderem der Arbeitsspeicher die Anzahl synchroner Requests begrenzt. Wenn das System zum Beispiel 30GB für Apache-Prozesse einräumt (entspricht Anzahl Apache max. Connections multipliziert mit PHP memory_limit) komme ich mit meinem Messergebnis auf 30*1024 / 5,5 = 5.585 maximale mögliche Connections zur gleichen Zeit – das ist verglichen mit WordPress (14 MB, 2.194) oder Drupal (20 MB, 1.536) sehr viel. Dieser Wert ist rein rechnerisch zu betrachten und nicht praxistauglich. Hier spielen noch andere Faktoren (IO, Datenbank Connections, etc.) eine Rolle. Allerdings zeigt der Vergleich durchaus auf, dass Ressourcen für andere wichtige Dinge aufgespart werden.</p>
<p>Warum ich meine jungfräuliche Yii-Applikation mit WordPress/Drupal vergleiche? Weil beide geläufige und zuhauf eingesetzte Softwares sind und jeder diese Softwares kennt. Wie bereits geschrieben ist der Vergleich sehr ungleich. Meine Yii Applikation ist natürlich lange nicht so funktionell wie ein WordPress oder ein Drupal. Wenn ich allerdings bedenke, dass Doctrine schon eine fette Sau ist und die Messergebnisse im Debug Modus zu Stande kommen (Logging, Debug Toolbar, etc.), so kommt mir der Speicherverbrauch doch sehr niedrig vor.</p>
<p>Ich nehme dieses erste Posting zum Yii Framework zum Anlass, weiter über meine Erfahrungen mit dem Yii Framework zu berichten.</p>
<p>Stay tuned!</p>
<p>Links:<br />
<a href="http://www.yiiframework.com/">http://www.yiiframework.com</a> - Yii Framework<br />
<a href="http://framework.zend.com/">http://framework.zend.com/</a> - Zend Framework</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/programmierung/php/yii-framework-das-php-framework-meiner-wahl/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Prototyping von Webseiten einfach gemacht</title>
		<link>http://www.webtubes.de/allgemeines/prototyping-von-webseiten-einfach-gemacht/</link>
		<comments>http://www.webtubes.de/allgemeines/prototyping-von-webseiten-einfach-gemacht/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 19:41:07 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Prototyping]]></category>
		<category><![CDATA[WireframeSketcher]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=392</guid>
		<description><![CDATA[Zusammengefasst bietet das Prototyping von Webseiten sowohl für die ausführende Agentur als auch für den potentiellen Kunden ausschließlich Vorteile. Es ermöglicht in einer sehr frühen Projektphase massive Eingriffe und spart am Ende gegenüber dem Verzicht von Prototyping massiv an teurer Arbeitszeit für Grafikdesigner, Webdesigner und Programmierer. Ein gutes ausgereiftes Prototyping dient im weiteren Projektverlauf als Vorlage beziehungsweise Projektschablone. So gesehen ist Prototyping ein MUSS für jede Web-Entwicklungsabteilung.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.webtubes.de/wp-content/uploads/Facebook.png"><img class="size-thumbnail wp-image-395 alignright" title="Wireframesketcher - Facebook" src="http://www.webtubes.de/wp-content/uploads/Facebook-150x150.png" alt="" width="150" height="150" /></a>Das wichtigste vorab &#8211; Prototyping von Webseiten ist in vielerlei Hinsicht <del datetime="2011-11-27T18:38:03+00:00">sinnvoll</del> unverzichtbar. Bereits in einer sehr frühen Phase eines Projektes kann Fehlentscheidungen vorgebeugt werden. So zeigt Prototyping beispielsweise nicht bedachte Schwächen hinsichtlich der Usability und der Gestaltung auf. Nicht zu vergessen &#8211; potentiellen Kunden (nicht jeder arbeitet an eigenen Projekten) lässt sich bereits sehr früh ein interaktiver Prototyp präsentieren. Bis zu diesem Punkt halten sich die eigene Aufwände in der Regel in Grenzen, so dass die Überlegung, komplett von vorn zu beginnen, nicht Ad Absurdum führt. Diese Flexibilität gefällt im eintretenden Fall nicht nur dem Kunden. Stellen wir uns vor, man hätte diesen Prototyp bereits in Screen- und Webdesign entwickelt und mit Funktionalität versehen &#8211; die bereits investierten Aufwände führen mit Sicherheit zu einer Kostenexplosion!</p>
<p><strong><span id="more-392"></span>Vorteile von Prototyping</strong><br />
Zusammengefasst bietet das Prototyping von Webseiten sowohl für die ausführende Agentur als auch für den potentiellen Kunden ausschließlich Vorteile. Es ermöglicht in einer sehr frühen Projektphase massive Eingriffe und spart am Ende gegenüber dem Verzicht von Prototyping massiv an teurer Arbeitszeit für Grafikdesigner, Webdesigner und Programmierer. Ein gutes ausgereiftes Prototyping dient im weiteren Projektverlauf als Vorlage beziehungsweise Projektschablone. So gesehen ist Prototyping ein MUSS für jede Web-Entwicklungsabteilung.</p>
<p><strong><a href="http://www.webtubes.de/wp-content/uploads/properties.png"><img class="alignright size-thumbnail wp-image-397" title="WireframeSketcher Eigenschaften" src="http://www.webtubes.de/wp-content/uploads/properties-150x150.png" alt="" width="150" height="150" /></a>Welches Werkzeug ist empfehlenswert?<br />
</strong>Ich möchte an dieser Stelle genau ein einziges Werkzeug empfehlen, da ich damit ausgiebige Erfahrungen vorhalten kann und es nahezu alles bietet, was man braucht und / oder auch nicht braucht: <a href="http://wireframesketcher.com/index.html">WireframeSketcher</a></p>
<p>WireframeSketcher kommt sowohl als Standalone Version und auch als Plugin für verschiedenste Entwicklungsumgebungen daher. Egal ob als Komplettsoftware oder als Plugin &#8211; unter der Haube werkelt Eclipse. So lässt sich WireframeSketcher neben Eclipse auch in ZEND Studio oder Aptana einbinden.  Mögliche Betriebssysteme sind all jene, auf denen auch Eclipse läuft.</p>
<p>Die Darstellung von in WireframeSketcher erstellen Prototypen kommt per Default in Comic Stil daher, lässt sich bei Bedarf aber auch auf den klassischen Modus mit geraden Linien umstellen. Bekannte und verwendete Komponenten einer Webseite (Eingabefelder, Buttons, Tabellen, Listen, Grafiken, Icons, Labels, Text, Links, etc.) lassen sich mit wenigen Mausklicks auf den Prototypen ziehen und nach den eigenen Wünschen anpassen. Die Software ist sehr ausgereift und lässt sehr viel zu. Die Krönung an Funktionalität ist das Verlinken verschiedener Screens miteinander &#8211; die Verlinkung kann quasi von jedem Objekt des Prototyps zu einem anderen Screen aus erfolgen.</p>
<p>Ein riesiger Pluspunkt der Software ist, dass in jedem Screen andere Screens eingebunden werden können. Somit lassen sich wunderbar Templates einbinden. Ist das Template einmal zu überarbeiten, reicht es aus, diese Änderung an genau einer Stelle &#8211; dem Template selbst &#8211; vorzunehmen. Sämtliche Screens, die dieses Template einbinden ändern sich entsprechend mit.</p>
<p>In einem Story-Modus lassen sich verschiedene Screens hintereinander hängen und präsentieren. Eine weitere Präsentationsoftware wird dadurch unnötig.</p>
<p>Natürlich lassen sich die erzeugten Prototypen auch als PNG oder PDF exportieren.</p>
<p><a href="http://wireframesketcher.com/features.html">Übersicht der WireframeSketcher Features</a></p>
<p>Viel Spaß beim Prototypen!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/allgemeines/prototyping-von-webseiten-einfach-gemacht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation von Pentaho 3.6</title>
		<link>http://www.webtubes.de/pentaho/installation-von-pentaho-3-6/</link>
		<comments>http://www.webtubes.de/pentaho/installation-von-pentaho-3-6/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 22:22:46 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[Pentaho]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=343</guid>
		<description><![CDATA[Im letzten Artikel Einführung in Business Intelligence mit Pentaho habe ich das Thema Business Intelligence grob angerissen und auf die Notwendigkeit einer Business Intelligence Suite hingewiesen. In diesem Artikel werde ich den Weg zum eigentlichen Tutorial bahnen. Zielstellung ist es, am Ende des Artikels eine funktionierende Pentaho Installation (Community Edition) inklusive der Entwicklertools sowie einer [...]]]></description>
			<content:encoded><![CDATA[<p>Im letzten Artikel <a href="http://www.webtubes.de/pentaho/einfuhrung-in-business-intelligence-mit-pentaho/">Einführung in Business Intelligence mit Pentaho</a> habe ich das Thema Business Intelligence grob angerissen und auf die Notwendigkeit einer Business Intelligence Suite hingewiesen. In diesem Artikel werde ich den Weg zum eigentlichen Tutorial bahnen. Zielstellung ist es, am Ende des Artikels eine funktionierende Pentaho Installation (Community Edition) inklusive der Entwicklertools sowie einer MySQL Datenbank eingerichtet zu haben.<span id="more-343"></span><br />
<br />
Ich beziehe mich im Verlauf des Artikels auf Linux (in meinem Fall Ubuntu). Für abweichende Betriebssysteme ist unter Umständen eine andere Konfiguration und Notation erforderlich.</p>
<p><strong>Herunterladen der Software: Business Intelligence Server Community Edition (<a href="http://sourceforge.net/projects/pentaho/files/Business%20Intelligence%20Server/3.6.0-stable/biserver-ce-3.6.0-stable.zip/download">Windows</a>, <a href="http://sourceforge.net/projects/pentaho/files/Business%20Intelligence%20Server/3.6.0-stable/biserver-ce-3.6.0-stable.tar.gz/download">Linux/Mac</a>)</strong><br />
Aktuell ist die Version 3.6 als stabil gekennzeichnet. Ein <a href="http://sourceforge.net/projects/pentaho/files/Business%20Intelligence%20Server/3.7.0-RC1/">RC 3.7</a> steht für Experimentierfreudige User ebenfalls auf Sourceforge zum Download bereit.</p>
<p>Das heruntergeladene Archiv muss nun entpackt und einige Dinge eingerichtet werden.</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Grundinstallation</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># Anlegen eines Benutzers und einer Benutzergruppe &quot;pentaho&quot; zum späteren Ausführen des Servers</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> addgroup pentaho</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> adduser <span style="color: #660033;">--system</span> <span style="color: #660033;">--ingroup</span> pentaho <span style="color: #660033;">--disabled-login</span> pentaho</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: bold; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># Anlegen eines Verzeichnisses /opt/pentaho</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>pentaho</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># Entpacken der Pentaho Suite nach opt/pentaho</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>pentaho</div></li><li style="font-weight: bold; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> ~<span style="color: #000000; font-weight: bold;">/</span>DownloadVerzeichnis<span style="color: #000000; font-weight: bold;">/</span>biserver-ce-3.6.0-stable.tar.gz</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># Nach dem Entpacken findet ihr im Zielverzeichnis die 2 Verzeichnisse administration-console und biserver-ce an</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;"># Berechtigungen für Benutzer und Gruppe &quot;pentaho&quot; setzen</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> pentaho:pentaho <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>pentaho</div></li><li style="font-weight: bold; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>pentaho<span style="color: #000000; font-weight: bold;">/</span>start-pentaho.sh</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>pentaho<span style="color: #000000; font-weight: bold;">/</span>stop-pentaho.sh</div></li></ol></pre></div></div>
<p>Jetzt ist es an der Zeit, einen ersten Funktionstest durchzuführen. Nach Aufrufen den Start-Scriptes und Starten des Servers ist das System unter http://localhost:8080 auf eurem System verfügbar. Der Hostname ist bei euch gegebenenfalls abweichend und bei Bedarf entsprechend auszutauschen.<br />
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Server starten</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-u</span> pentaho <span style="color: #007800;">JAVA_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>jvm<span style="color: #000000; font-weight: bold;">/</span>java-<span style="color: #000000;">6</span>-sun biserver-ce<span style="color: #000000; font-weight: bold;">/</span>start-pentaho.sh</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">#... zum Stoppen CTRL+C und dann Ausführen des Stopp-Scriptes</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-u</span> pentaho <span style="color: #007800;">JAVA_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>jvm<span style="color: #000000; font-weight: bold;">/</span>java-<span style="color: #000000;">6</span>-sun biserver-ce<span style="color: #000000; font-weight: bold;">/</span>stop-pentaho.sh</div></li></ol></pre></div></div><br />
Nach Auswahl des Benutzers &#8220;Joe&#8221; im Login-Splash wird das Kennwort vorgeschlagen. Es ist einfach nur zu bestätigen.</p>
<p>Im Großen und Ganzen war es das für die Installation auch schon, sofern der Server lediglich zum Testen und Entwickeln betrieben werden soll. Für ein Produktivsystem sind natürlich Anpassungen an der Konfiguration notwendig.</p>
<p>Eine Sache solltet ihr aber noch wissen &#8211; die Beispieldaten funktionieren nicht. Dafür sind Anpassungen notwendig. Der Einfachheit halber sollte über die Administration-Konsole eine JNDI Datenbank Quelle konfiguriert werden. Es macht die Sache später in der Entwicklung sehr einfach, da nicht stetig die kompletten Verbindungs- und Treiberdaten angegeben werden müssen. Hierfür ist die Administration-Konsole zunächst zu starten.<br />
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Administration-Konsole starten</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-u</span> pentaho <span style="color: #007800;">JAVA_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>jvm<span style="color: #000000; font-weight: bold;">/</span>java-<span style="color: #000000;">6</span>-sun administration-console<span style="color: #000000; font-weight: bold;">/</span>start-pac.sh</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">#... zum Stoppen CTRL+C</span></div></li></ol></pre></div></div><br />
</p>
<p>Nach Aufrufen der URI http://localhost:8099 in eurem Browser wird die Eingabe einer Benutzerkennung verlangt. Die Standard Benutzerkennung lautet admin:password. Nach erfolgtem Login klickt ihr auf &#8220;Administration&#8221; (grüner Button links) und wählt dort den Reiter &#8220;Database Connections&#8221; aus. Dort seht ihr links eine Liste aller bereits eingerichteten Datenbank-Verbindungen. Oberhalb dieser Liste kann mit einem Klick auf das &#8220;+&#8221; eine neue Verbindung eingefügt werden. Die Benennung der neuen Verbindung sollte nicht allzu kryptisch, idealerweise sehr kurz (z.B. dwh) lauten, da diese Kennung später als Bezeichner verwendet wird. Im Feld URL ist passend zur Datenbank eine Datasource einzugeben. Für MySQL könnte das wie folgt aussehen<br />
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">MySQL Datasource</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">#jdbc:mysql://Hostname/Datenbank</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">jdbc:mysql:<span style="color: #000000; font-weight: bold;">//</span>localhost<span style="color: #000000; font-weight: bold;">/</span>dwh</div></li></ol></pre></div></div></p>
<p>Alle anderen Felder sind selbsterklärend. Nach dem Speichern steht euch diese Datasource später in der Dashboard-Entwicklung zur Verfügung.</p>
<p><strong>Zusammenfassung</strong><br />
Dieser Artikel sollte euch zu einem funktionierenden Testsystem geführt haben. Die Suite kann in vielfältiger Weise auf die eigenen Ansprüche angepasst werden, aber das würde an dieser Stelle mit dem Ziel der Dashboard-Entwicklung den Rahmen sprengen. </p>
<p><strong>Ausblick</strong><br />
Im nächsten Artikel werde ich euch einige von mir bereits entwickelte Dashboards zeigen. Teile davon werde ich euch in sich anschließenden Artikeln aufzeigen. Im Groben werden wir zunächst ein individuelles Template mit diversen Selektoren erstellen und anschließend für Content sorgen. Innerhalb des Contents werde ich euch aufzeigen, wie man mittels des CDF Anfragen an den Server stellt und deren Responses (JSON, Charts, etc.) verarbeitet. Das Dashboard wird interaktiv sein, so dass eine Analyse von groben Daten hin zu feinen Daten möglich ist. Im Anschluss an dieses Tutorial solltet ihr in der Lage sein, mit dem erworbenen KnowHow eigene Dashboards zu entwickeln. Bis bald.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/pentaho/installation-von-pentaho-3-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Pentaho Dashboard Entwicklung Tutorial]]></series:name>
	</item>
		<item>
		<title>Einführung in Business Intelligence mit Pentaho</title>
		<link>http://www.webtubes.de/pentaho/einfuhrung-in-business-intelligence-mit-pentaho/</link>
		<comments>http://www.webtubes.de/pentaho/einfuhrung-in-business-intelligence-mit-pentaho/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 12:09:45 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[Pentaho]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=307</guid>
		<description><![CDATA[Bevor ich nun groß einsteige, möchte ich vorweg noch eine Buchempfehlung aussprechen &#8211; Pentaho Solutions: Business Intelligence and Data Warehousing with Pentaho and MySQL &#8211; dieses Buch bietet dem Leser einen guten Einstieg in die Thematik Data Warehouse im Zusammenhang mit der Open Source BI-Suite Pentaho. Das Buch ist entsprechend des Informationsgehaltes relativ dick aber [...]]]></description>
			<content:encoded><![CDATA[<p>Bevor ich nun groß einsteige, möchte ich vorweg noch eine Buchempfehlung aussprechen &#8211; <a href="http://www.amazon.de/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.de%2FPentaho-Solutions-Business-Intelligence-Warehousing%2Fdp%2F0470484322&#038;site-redirect=de&#038;tag=webtubes-21&#038;linkCode=ur2&#038;camp=1638&#038;creative=6742">Pentaho Solutions: Business Intelligence and Data Warehousing with Pentaho and MySQL</a><img src="http://www.assoc-amazon.de/e/ir?t=webtubes-21&#038;l=ur2&#038;o=3" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> &#8211; dieses Buch bietet dem Leser einen guten Einstieg in die Thematik Data Warehouse im Zusammenhang mit der Open Source BI-Suite Pentaho. Das Buch ist entsprechend des Informationsgehaltes relativ dick aber liest sich wirklich gut (englisch). Der Preis liegt bei etwa 40 Euro &#8211; das Geld ist aber gut investiert <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p><strong>Was bedeutet Business Intelligence?</strong><br />
In der Praxis versteht man unter „Business Intelligence“ meistens die Automatisierung des Berichtswesens (Reporting). Die in den verschiedensten Systemen (ERP, CRM, Buchhaltung, etc.) anfallenden Unternehmensdaten werden genutzt, um unter verschiedenen Blickwinkeln die Situation des Unternehmens zu analysieren und gegebenenfalls bewerten zu können. Sicherlich könnte man eine Analyse der Unternehmenskennzahlen auch &#8220;zu Fuß&#8221; mittels etlicher Excel-Sheets und dem Einsatz von Pivot-Tabellen vornehmen. Der Aufwand steht jedoch in absolut keinem Verhältnis zum Nutzen. Mit der Vielzahl der eingesetzten Software-Systeme für die unterschiedlichsten Zwecke steigt natürlich auch die Komplexität. Mit Excel gelangt man hier recht schnell an die Grenzen, zumal das auswertbare Datenvolumen durch Excel sowieso begrenzt ist.<br />
<span id="more-307"></span><br />
<strong>Warum nicht mit Excel analysieren?</strong><br />
In der Regel verwenden Unternehmen eben nicht eine All-in-on-Softwarelösung sondern etliche Softwarelösungen parallel. Ich nenne diese Systeme im laufenden Text der Einfachheit halber fortan Quellsysteme. Um die Daten der Quellsysteme analysieren und bewerten zu können, müssen sie nicht selten vereint werden. Sofern die Analyse ohne eine BI-Suite durchgeführt wird, stellt sich diese Problematik natürlich ebenfalls. Im Falle von Excel sind auf die Quellsysteme unter Umständen erheblich komplexe Reporte auszuführen und in CSV-Dateien auszugeben. Die Performance der Quellsysteme kann dadurch dermaßen beeinträchtigt werden, dass ein Arbeiten nicht mehr möglich ist. Grundsätzlich ist es also keine so gute Idee, komplexe Reporte zum Zwecke der Analyse und Betrachtung von Unternehmenskennzahlen auf Quellsystemen aufzuführen. BI-Suiten verfügen über sogenannte &#8220;Staging Areas&#8221;, um die Quellsysteme so wenig wie nur notwendig zu belasten. Das nachfolgende Schaubild veranschaulicht den typischen Aufbau einer DWH-Architektur.<br />
<a href="http://www.webtubes.de/wp-content/uploads/dwh_architektur.png"><img src="http://www.webtubes.de/wp-content/uploads/dwh_architektur-300x173.png" alt="" title="typische Data Warehouse Architektur" width="300" height="173" class="aligncenter size-medium wp-image-319" /></a></p>
<p>Eine Staging Area ist nichts anderes als ein Zwischenlager für Rohdaten. Die Staging Area wird auf einer von den Quellsystemen unabhängigen Hardware gehostet. Bei kleineren Data Warehouses wird sich die Staging Area unter Umständen direkt auf dem DWH-Server befinden. Die Organisation einer Staging Area kann vielfältig sein. In der Regel besteht das Herzstück aber aus einem Datenbankserver (z.B. MySQL). Auf diesem Datenbankserver können mehrere Datenbanken eingerichtet sein, welche allesamt dem Staging von Daten dienen oder eben auch nicht <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Denkbar wäre beispielsweise eine Replikation eines Quellsystems in einer Datenbank und eine mittels ETL-Prozess (Extract -> Transform -> Load) befüllte Datenbank eines weiteren Quellsystems. Der Fantasie sind hier fast keine Grenzen gesetzt. Neben Datenbanken kann die Staging Area natürlich auch Rohdaten in Form von CSV, XML und so weiter beinhalten. </p>
<p>Doch wozu das Ganze? Damit die Quellsysteme beim Abfragen der Quelldaten so wenig wie nur nötig belastet werden, werden komplexe Abfragen (Joins etc.) auf den Quellsystemen in der Regel vermieden. Initial wird für die Analyse der Unternehmenskennzahlen in der Staging Area ein Abbild aller notwendiger Tabellen geschaffen. Anschließend werden mittels diverser Verfahren lediglich Veränderungen im Quellsystem (UPDATE, DELETE, INSERT) in die Staging Area übernommen. Man spricht hier von &#8220;changed data capture&#8221;. Folgende Verfahren kommen hierbei hauptsächlich in Frage:</p>
<ul>
<li>Timestamp</li>
<li>Snaphost</li>
<li>Trigger</li>
<li>Replikation</li>
</ul>
<p>Ohne detailliert auf die einzelnen Verfahren einzugehen, hat jedes dieser Verfahren Vor- und natürlich auch Nachteile. Eine detaillierte Betrachtung würde an dieser Stelle zu weit führen. Dennoch möchte ich euch folgende Gegenüberstellung nicht vorenthalten.<br />
<a href="http://www.webtubes.de/wp-content/uploads/changed_data_capture1.png"><img src="http://www.webtubes.de/wp-content/uploads/changed_data_capture1-300x155.png" alt="" title="Changed Data Capture" width="300" height="155" class="aligncenter size-medium wp-image-312" /></a><br />
Zielstellung einer Staging Area ist also das &#8220;Zwischenlagern&#8221; von Quelldaten aus unterschiedlichsten Quellsystemen in unterschiedlichsten Formaten (<strong>E</strong>TL), die Aufbereitung der Quelldaten mittels Transformation (E<strong>T</strong>L) für das DWH und natürlich das Befüllen und Laden (ET<strong>L</strong>) der Daten in die DWH-Datenbank. Innerhalb der Staging Area können die transformierenden Prozesse aufwendig sein, wie sie wollen. Sie dürfen viel Zeit und viel Rechnerleistung in Anspruch nehmen (auch wenn das nicht ein Hauptziel darstellt). Die Belastung der Quellsyteme wird nur auf Minimum reduziert und das Tagesgeschäft kann ungestört weiter laufen. </p>
<p>Es wird also spätestens hier deutlich, das eine Analyse von Unternehmenskennzahlen mittels Excel eigentlich ein &#8220;NoGo&#8221; sein muss! Dabei habe ich noch nicht einmal die für den User sichtbaren Möglichkeiten eines Data Warehouses aufgeführt. Die Möglichkeiten einer gescheiten BI-Suite sind so gewaltig, dass ich sie hier nicht in Worte fassen kann und möchte. Vielmehr möchte ich mich in den nachfolgenden Artikeln dieser Reihe auf die Generierung von Output in Form von Dashboards (ja die schönen bunten Cockpits) konzentrieren.<br />
<br />
<strong>Zusammenfassung</strong><br />
Ich habe euch einen <strong>groben</strong> Überblick über Business Intelligence gegeben. Diesen gilt es eigenständig zu erweitern. Zum einen lege ich euch das Buch <a href="http://www.amazon.de/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.de%2FPentaho-Solutions-Business-Intelligence-Warehousing%2Fdp%2F0470484322&#038;site-redirect=de&#038;tag=webtubes-21&#038;linkCode=ur2&#038;camp=1638&#038;creative=6742">Pentaho Solutions: Business Intelligence and Data Warehousing with Pentaho and MySQL</a><img src="http://www.assoc-amazon.de/e/ir?t=webtubes-21&#038;l=ur2&#038;o=3" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> sehr ans Herz. Insbesondere wenn ihr Pentaho in Verbindung mit MySQL einsetzen möchtet. Zum anderen bekommt ihr auf Wikipedia eine ganze Menge Begrifflichkeiten erklärt. <em>Last but not least</em> ist natürlich die <a href="http://www.pentaho.com/">Pentaho</a> Seite eine hervorragende Quelle.</p>
<p>Weiterhin haben wir kennen gelernt, wozu eine Staging Area nützlich ist und das komplexe Reportings auf Quellsystemen unbedingt vermieden werden müssen. Excel als maßgebliches Analysetool von Unternehmenskennzahlen sollte spätestens nach Lesen dieses Artikels ein Artefakt, Überbleibsel, Auswechselkandidat, was auch immer sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/pentaho/einfuhrung-in-business-intelligence-mit-pentaho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Pentaho Dashboard Entwicklung Tutorial]]></series:name>
	</item>
		<item>
		<title>Neues Design &#8211; weiteres Thema: Pentaho Data Warehouse</title>
		<link>http://www.webtubes.de/pentaho/neues-design-weiteres-thema-pentaho-data-warehouse/</link>
		<comments>http://www.webtubes.de/pentaho/neues-design-weiteres-thema-pentaho-data-warehouse/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 00:37:59 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[Pentaho]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[CDF]]></category>
		<category><![CDATA[Dashboard]]></category>
		<category><![CDATA[KPI]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=260</guid>
		<description><![CDATA[Vor wenigen Tagen ergriff mich die Lust, auf Webtubes über meine aktuellen Erfahrungen mit dem Business Intelligence Framework Pentaho zu berichten. Zuletzt berichtete ich über teilweise belanglose Dinge, um die schöne Domain nicht verschimmeln zu lassen. Ich gelobe nun Besserung! Es braucht eben manchmal auch eines besonderen Themas, welches nicht bereits 1000.000 mal durchgekaut wurde. [...]]]></description>
			<content:encoded><![CDATA[<p>Vor wenigen Tagen ergriff mich die Lust, auf Webtubes über meine aktuellen Erfahrungen mit dem Business Intelligence Framework <a href="http://www.pentaho.com/">Pentaho</a> zu berichten. Zuletzt berichtete ich über teilweise belanglose Dinge, um die schöne Domain nicht verschimmeln zu lassen. Ich gelobe nun Besserung! Es braucht eben manchmal auch eines besonderen Themas, welches nicht bereits 1000.000 mal durchgekaut wurde.</p>
<p>Direkt zum Start meiner Artikelserie über die Entwicklung von Dashboards mittels des Pentaho <a href="http://code.google.com/p/pentaho-cdf/">CDF</a> (Community Dashboard Framework) erschien mir ein Wechsel meines Blog-Designs hin zu mehr Übersicht und Struktur ein notwendiger Schritt. Gedacht&#8230;. getan&#8230; ich mag klare Designs insbesondere aber schwarz auf weiß (und nicht umgekehrt). Ich hoffe, dass es euch gefällt und wenn nicht, dann gewöhnt euch trotzdem daran. Mir gefällt es nämlich <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .<br />
<span id="more-260"></span><br />
Nun werdet ihr euch sicherlich fragen, was mich dazu bewegt, auf Webtubes fortan auch über Data Warehouse, Pentaho, Dashboards, &#8230; etc. zu schreiben. Die Antwort auf diese Frage ist mit Ausholen relativ einfach zu beantworten. Mein Arbeitgeber hat uns (ein Klasse Team aus Webentwicklern) damit beauftragt, Kennzahlen in verteilten Softwaresystemen verschiedener Unternehmensprozesse &#8220;einzusammeln&#8221; und komprimiert in Form von <a href="http://de.wikipedia.org/wiki/Key_Performance_Indicator">KPI</a>&#8216;s (Key Performance Indicator) fein übersichtlich mit Charts und Trend-Kennzahlen ausgeschmückt auf einem DASHBOARD (aktuell wirklich ein Unwort in unserem Unternehmen &#8211; jeder spricht davon, kaum einer weiß, was es ist <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) auszugeben. Soweit so gut&#8230;<br />
Bisher entwickelten wir Web Applikationen. Business Intelligence (BI) war uns nicht wirklich geläufig. Unser Unternehmen ist von Open Source Software geprägt. Auf der Suche nach einer verbreiteten BI Software wurden wir schnell auf das Open Source BI Framework Pentaho aufmerksam. Nach gut 2 Monaten (natürlich nicht ganztägig, das Tagesgeschäft zu vernachlässigen, ist fahrlässig) Einlesens und Probierens sind wir jetzt soweit, die Werkzeuge grundsätzlich zu beherrschen und Ergebnisse zu erzielen. Unser Knowhow im Umgang mit großen Datenbanken hat uns dabei ein ganzes Stück weiter geholfen. Um mit dem Pentaho Framework effektive BI Lösungen schaffen zu können, werden neben des Wissens über mögliche Architekturen und Design Grundsätze sowie die notwendige Administration (technische Einrichtung und Wartung) folgende Skills abgefordert (Reihenfolge stellt keine Wertung dar):</p>
<ul>
<li>SQL</li>
<li>XML</li>
<li>HTML</li>
<li>Javascript</li>
<li>CSS</li>
</ul>
<p>Wie Ihr seht, sind dies die Skills eines typischen Web Developers. In der Regel beherrscht ein Web Developer sogar einige mehr mit dem Prädikat mindestens gut. Die Dokumentation von Pentaho ist durchwachsen. Einige Bereiche sind wirklich gut (ETL, OLAP) und andere sind dürftig bis gar nicht KOSTENFREI dokumentiert. Mit etwas Biss wird es jedem gescheiten Developer gelingen, mittels des CDF auch ohne den Erwerb der <a href="http://store.kagi.com/cgi-bin/store.cgi?storeID=6FHAR_LIVE">kostenpflichtigen CDF-Dokumentation</a> ein Ergebnis zu erzielen. Hier möchte ich gern Abhilfe schaffen. Datenbanken, AJAX, JSON, Charts, Tabellen, Layer, Javascript, CSS, HTML &#8211; das sind alles Dinge von denen wir eine Menge verstehen. Doch wie sieht es um die Unternehmensprozesse aus? Ohne ein fundiertes Prozesswissen des Unternehmens, in welchem eine BI-Lösung (egal welcher Art) zum Einsatz kommt, kann am Ende eigentlich <span style="text-decoration: line-through;">nur Müll heraus kommen</span> kein gutes Ergebnis erzielt werden. Doch auch hier sind wir bestens gewappnet.</p>
<p>Doch nun mal langsam, nehmen wir wieder etwas Fahrt raus. So völlig unstrukturiert loslegen, das liegt mir dann doch etwas fern. Ich werde euch in einer Serie von Artikeln meine Erfahrungen mit dem Pentaho CDF praktisch nahe bringen und erhoffe mir von euch den einen oder anderen Input &#8211; frei nach dem Motto: Teile mit anderen und profitiere von anderen.</p>
<p>Mit diesem Schlusswort schließe ich diesen Artikel ab, Gute Nacht.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/pentaho/neues-design-weiteres-thema-pentaho-data-warehouse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<series:name><![CDATA[Pentaho Dashboard Entwicklung Tutorial]]></series:name>
	</item>
		<item>
		<title>MySQL &#8211; Update mittels JOIN</title>
		<link>http://www.webtubes.de/programmierung/sql/mysql-update-mittels-join/</link>
		<comments>http://www.webtubes.de/programmierung/sql/mysql-update-mittels-join/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 20:07:09 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=120</guid>
		<description><![CDATA[Nicht selten ist es beim Aktualisieren von Datensätzen notwendig, die Bedingung für in Frage kommende Datensätze bei der Update-Anweisung einzufügen. Wer keine Kenntnis darüber besitzt, wird eine zweite Abfrage vorschalten und das Ergebnis in der eigentlichen Update-Anweisung verwerten. Dabei ist das Updaten von Datensätzen mittels bei MySQL sehr trivial. Folgende Abfrage aktualisiert alle Datensätze von [...]]]></description>
			<content:encoded><![CDATA[<p>Nicht selten ist es beim Aktualisieren von Datensätzen notwendig, die Bedingung für in Frage kommende Datensätze bei der Update-Anweisung einzufügen. Wer keine Kenntnis darüber besitzt, wird eine zweite Abfrage vorschalten und das Ergebnis in der eigentlichen Update-Anweisung verwerten.</p>
<p>Dabei ist das Updaten von Datensätzen mittels bei MySQL sehr trivial. Folgende Abfrage aktualisiert alle Datensätze von tabelle1 (aktiv wird auf 1 gesetzt) welche in tabelle2 existieren.</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Mysql: Update mittels Join</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">UPDATE</span> 	tabelle1 <span style="color: #993333; font-weight: bold;">AS</span> a</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">JOIN</span> 	tabelle2 <span style="color: #993333; font-weight: bold;">AS</span> b</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">ON</span> 	a<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> b<span style="color: #66cc66;">.</span>id</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">SET</span> 	a<span style="color: #66cc66;">.</span>aktiv<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span></div></li></ol></pre></div></div>
<p>Folgende Abfrage setzt das Flag &#8220;aktiv&#8221; in beiden Tabellen bei Datensätzen, die in beiden Tabellen vorkommen.<br />
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Quelltext</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="pascal" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UPDATE		tabelle1 AS a</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">JOIN		tabelle2 AS b</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">		ON a.<span style="color: #0066ee;">id</span> <span style="color: #339933;">=</span> b.<span style="color: #0066ee;">id</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000066; font-weight: bold;">SET</span>		a.<span style="color: #0066ee;">aktiv</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span></div></li><li style="font-weight: bold; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">		b.<span style="color: #0066ee;">aktiv</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span></div></li></ol></pre></div></div></p>
<p>Die Verknüpfung der Tabellen ist beliebig erweiterbar. Selbst Subselects oder Derived Tables sind kein Problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/programmierung/sql/mysql-update-mittels-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL &#8211; Löschen mittels JOIN</title>
		<link>http://www.webtubes.de/programmierung/sql/mysql-loschen-mittels-join/</link>
		<comments>http://www.webtubes.de/programmierung/sql/mysql-loschen-mittels-join/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 19:53:03 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=249</guid>
		<description><![CDATA[Unter Umständen ist bei dem Löschen von Datensätzen ein JOIN notwendig. Das Löschen von Datensätzen unter Verwendung eines JOINS unter MySQL ist dabei relativ einfach. Folgende Operation löscht den Datensatz auf lediglich aus Tabelle 1. Gelöscht werden Datensätze von tabelle1 bei welchen die Bedingungen tabelle1.id = tabelle2.id erfüllt. Folgende Abfrage löscht Einträge aus beiden Tabellen. [...]]]></description>
			<content:encoded><![CDATA[<p>Unter Umständen ist bei dem Löschen von Datensätzen ein JOIN notwendig. Das Löschen von Datensätzen unter Verwendung eines JOINS unter MySQL ist dabei relativ einfach.</p>
<p>Folgende Operation löscht den Datensatz auf lediglich aus Tabelle 1. Gelöscht werden Datensätze von tabelle1 bei welchen die Bedingungen tabelle1.id = tabelle2.id erfüllt.<br />
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Mysql: Löschen mittels Join</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">DELETE</span> 	del</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">FROM</span> 	tabelle1 <span style="color: #993333; font-weight: bold;">AS</span> del</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">JOIN</span> 	tabelle2 <span style="color: #993333; font-weight: bold;">AS</span> sel</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">ON</span> 	del<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> sel<span style="color: #66cc66;">.</span>id</div></li></ol></pre></div></div><br />
Folgende Abfrage löscht Einträge aus beiden Tabellen. Gelöscht werden Datensätze von tabelle1 und tabelle2 bei welchen die Bedingungen tabelle1.id = tabelle2.id erfüllt.<br />
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Mysql: Löschen mittels Join 2</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.webtubes.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">DELETE</span> 	del<span style="color: #66cc66;">,</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">	sel</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">FROM</span> 	tabelle1 <span style="color: #993333; font-weight: bold;">AS</span> del</div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">JOIN</span> 	tabelle2 <span style="color: #993333; font-weight: bold;">AS</span> sel</div></li><li style="font-weight: bold; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333; font-weight: bold;">ON</span> 	del<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> sel<span style="color: #66cc66;">.</span>id</div></li></ol></pre></div></div><br />
Die Verknüpfung der Tabellen mittels JOIN ist beliebig (auch mit LEFT JOIN) erweiterbar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/programmierung/sql/mysql-loschen-mittels-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update: Layer Ads Auszahlung</title>
		<link>http://www.webtubes.de/seo-sem/update-layer-ads-auszahlung/</link>
		<comments>http://www.webtubes.de/seo-sem/update-layer-ads-auszahlung/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 08:39:59 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[SEO und SEM]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=218</guid>
		<description><![CDATA[Layer Ads hat gestern (11. September 2009) alle bis zum 31.05.2009 eingereichten Auszahlungen ausgezahlt. Darunter war nun auch eine meiner Auszahlungen. Ich hatte schon nicht mehr daran geglaubt, aber nach über 3 Monaten vergeblichen Wartens glaubt man an so Einiges nicht mehr. Wie dem auch sei &#8211; es bleibt für den Betreiber S² Media GmbH &#38; [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow external" href="http://layer-ads.de/refer.php?65755">Layer Ads</a> hat gestern (11. September 2009) alle bis zum 31.05.2009 eingereichten Auszahlungen ausgezahlt. Darunter war nun auch eine meiner Auszahlungen. <a href="http://www.webtubes.de/seo-sem/layer-ads-auszahlung-weiterhin-offen/">Ich hatte schon nicht mehr daran geglaubt</a>, aber <strong>nach über 3 Monaten</strong> vergeblichen Wartens glaubt man an so Einiges nicht mehr.</p>
<p>Wie dem auch sei &#8211; es bleibt für den Betreiber S² Media GmbH &amp; Co. KG zu hoffen, das der Zahlungsverzug wieder aufgeholt werden kann und sich der entstandene Imageschaden in Grenzen hält.</p>
<p>Ich bin für meinen Teil zu <a rel="nofollow external" href="http://bin-layer.de/ref-188467.html">Bin-Layer</a> gewechselt und werde dort nun schon bald meine ersten Auszahlungs-Erfahrungen sammeln.</p>
<p>stay tuned <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/seo-sem/update-layer-ads-auszahlung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Layer Ads prellt Publisher]]></series:name>
	</item>
		<item>
		<title>Textdiebstahl überwachen</title>
		<link>http://www.webtubes.de/seo-sem/textdiebstahl-uberwachen/</link>
		<comments>http://www.webtubes.de/seo-sem/textdiebstahl-uberwachen/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 17:00:12 +0000</pubDate>
		<dc:creator>Robert Bernhard</dc:creator>
				<category><![CDATA[SEO und SEM]]></category>

		<guid isPermaLink="false">http://www.webtubes.de/?p=202</guid>
		<description><![CDATA[Textdiebstahl ist in heutigen Zeiten leider eine beliebte Methode von zwielichten Geschäftsleuten Kriminellen. Das läuft in der Regel so ab &#8211; ihr erstellt in mühseliger Kleinarbeit Texte zu einem tollten Thema und stellt diese mit viel Aufwand auf eurer Webseite bereit. Warum macht ihr das? Natürlich um Besucher zu gewinnen oder andere an euren Erfahrungen [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Textdiebstahl </strong>ist in heutigen Zeiten leider eine beliebte Methode von zwielichten <span style="text-decoration: line-through;">Geschäftsleuten</span> Kriminellen. Das läuft in der Regel so ab &#8211; ihr erstellt in mühseliger Kleinarbeit Texte zu einem tollten Thema und stellt diese mit viel Aufwand auf eurer Webseite bereit. Warum macht ihr das? Natürlich um Besucher zu gewinnen oder andere an euren Erfahrungen teil haben zu lassen. So weit so gut.</p>
<p>Der Textdieb ist für all diese Arbeiten zu faul und möchte im Gegensatz zu euch nur eins &#8211; Besucher generieren und mit Adsense oder anderer Werbung zu müllen. Also kopiert er sich eure Texte und stellt sie auf seiner <strong>MFA-Seite</strong> (MFA=Made for Adsense) ein. Mh blöd aber das ist noch nicht das Ende vom Lied. DerTextdieb erzeugt auf diese Art und Weise <strong>Duplicate Content</strong> (DC). Die Folge davon ist, dass deine Seite von Google unter schlechten Umständen abgewertet wird.<br />
<span id="more-202"></span><br />
Was lernen wir daraus? Wir müssen unsere hart erarbeiteten Texte im Hinblick auf das unerlaubte Kopieren überwachen.</p>
<p>Es gibt verschiedene Möglichkeiten, Texte automatisch überwachen zu lassen. Im Speziellen möchte ich mich in diesem Beitrag jedoch <strong>Google Alerts</strong> widmen. Neben Google Alerts gibt es noch Dienste wie CopyScape oder Plagaware. Mittels Google Alerts ist es sehr einfach Texte automatisiert überwachen zu lassen. Zur Einrichtung eines Alerts rufe zunächst folgende Url <a href="http://www.google.de/alerts" target="_blank">http://www.google.de/alerts</a> auf. Dort siehst du auf der rechten Seite ein sehr schlankes Formular.</p>
<div id="attachment_204" class="wp-caption aligncenter" style="width: 344px"><img class="size-full wp-image-204 " title="Google Alert erstellen" src="http://www.webtubes.de/wp-content/uploads/google-alerts1.JPG" alt="Google Alerts zum Aufspüren von Text-Plagiaten" width="334" height="257" /><p class="wp-caption-text">Google Alerts zum Aufspüren von Text-Plagiaten</p></div>
<p>Das Formular ist an sich selbsterklärend. Beachtet bitte das erste Feld. Kopiert euch mitten aus eurem Text eine kurze Passage 10-15 Wörter und fügt diese mit Gänsefüßchen (&#8220;) umschlossen in das Feld Suchbegriffe ein. Die Gänsefüßchen sind wichtig, da Google Alerts auf diese Art und Weise genau nach der Phrase zwischen den Gänsefüßchen sucht. Das Feld Typ lasst ihr auf Multi stehen, das passt so. Die Häufigkeit stellt ihr nach Belieben ein. Ich bevorzuge die Einstellung &#8220;bei Veröffentlichung&#8221;. Am Ende gebt ihr noch eure Email Adresse ein. An diese Email Adresse wird Google Alerts gefundene Text-Plagiate senden.</p>
<p>Sollte Google Alerts einmal ein Plagiat aufspüren, so erhaltet ihr eine Mail mit folgendem Titel:<br />
<strong>Google Web-Alert für: &#8220;mein unique text&#8221;</strong></p>
<p>Das tollste an Google Alerts ist die Tatsache, dass die Verwendung <strong>kostenfrei </strong>ist. Ihr könnt so viele Alerts erstellen, wie ihr möchtet. Ist das nicht Klasse? Am Ende dieses Beitrages möchte ich euch noch einige Tipps mit auf den Weg geben.</p>
<ol>
<li>Sucht euch geeignete Textpassagen aus euren Texten heraus, welche so eurer Meinung nach eindeutig sein sollten.</li>
<li>Wenn ihr Alerts mittels Google Account anlegt, könnt ihr die Alerts später bequem einsehen und administrieren.</li>
<li>Erstellt euch eine Email Adresse plagiate@domain.de und richtet für diese Email Adresse ein eigenes Konto im Email Client ein. Alternativ empfehle ich die Einrichtung eines Filters, der die Textplagiat-Funde in ein entsprechendes Verzeichnis verschiebt.</li>
<li>Google Alerts findet natürlich auch die eigene Webseite &#8211; beim Eintreffen einer Mail im entsprechenden Postfach also nicht gleich einen Herzkasper bekommen <img src='http://www.webtubes.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.webtubes.de/seo-sem/textdiebstahl-uberwachen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

