<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>initOS Blog</title>
	<atom:link href="http://blog.initos.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.initos.com</link>
	<description>Open Source im Unternehmenseinsatz</description>
	<lastBuildDate>Thu, 09 Feb 2012 15:39:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Magento meets Actindo ERP &#8212; Konnektorprobleme</title>
		<link>http://blog.initos.com/2012/02/09/magento-meets-actindo/</link>
		<comments>http://blog.initos.com/2012/02/09/magento-meets-actindo/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 15:39:26 +0000</pubDate>
		<dc:creator>Tobias Kalbitz</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[actindo]]></category>
		<category><![CDATA[konnektor]]></category>
		<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=390</guid>
		<description><![CDATA[Einer unser Kunden nutzt den kostenlosen Actindo ERP Konnektor und hatte in den letzten Tagen Probleme seine Produkte mit dem Magentoshop abzugleichen. Es klappte bis zu diesem Zeitpunkt problemlos. Nachdem die Artikelanzahl in den letzten paar Monaten auf mehrere Tausend gestiegen war, funktionierte der Abgleich plötzlich nicht mehr. Es stellte sich nach Auswertung eines Netzwerkdumps heraus, [...]]]></description>
			<content:encoded><![CDATA[<p>Einer unser Kunden nutzt den kostenlosen <a href="http://www.atlantismedia.de/magento/schnittstellen.html">Actindo ERP Konnektor</a> und hatte in den letzten Tagen Probleme seine Produkte mit dem Magentoshop abzugleichen. Es klappte bis zu diesem Zeitpunkt problemlos. Nachdem die Artikelanzahl in den letzten paar Monaten auf mehrere Tausend gestiegen war, funktionierte der Abgleich plötzlich nicht mehr.</p>
<p>Es stellte sich nach Auswertung eines Netzwerkdumps heraus, dass die Shopseite eine Anfrage über den XMLRPC-Server erhält, aber nie auf den Request antwortet. Als das Zeit- und Speicherlimit für PHP, die üblichen Verdächtigen in solchen Fällen, ausgeschlossen waren, sahen wir, dass der Konnektor suboptimale Anfragen an die Datenbank stellt und diese somit schwer arbeiten musste. Die angefragten 500 Artikel können so nicht rechtzeitig geliefert werden und die Gegenseite bricht den Versuch ab.</p>
<p>Da der Kunde eine schnelle Lösung benötigt, um die neusten Produkte zu synchronisieren, beschränkten wir den Abgleich auf 350 Artikel. Weiterhin unterbreiteten wir ihm den Vorschlag das Problem durch geschicktere Datenbankanfragen und Caching der Ergebnisse  komplett aus der Welt zu schaffen um die volle Funktionalität wiederherzustellen.</p>
<p>Falls Sie auch Unterstützung bei der Anbindung eines ERP-Systems an Magento  oder der Anpassung am Shop benötigen, nehmen Sie <a title="Kontakt aufnehmen" href="http://www.initos.com/kontakt" target="_blank">Kontakt</a> mit uns auf und wir helfen Ihnen gerne weiter.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2012/02/09/magento-meets-actindo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Performanceoptimierung</title>
		<link>http://blog.initos.com/2012/02/07/magento-performanceoptimierung/</link>
		<comments>http://blog.initos.com/2012/02/07/magento-performanceoptimierung/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 11:36:56 +0000</pubDate>
		<dc:creator>Tobias Kalbitz</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=373</guid>
		<description><![CDATA[Einer unserer Kunden kam mit dem Wunsch auf uns zu, seinen Magentoshop zu beschleunigen. Es ist ein relativ neuer Shop, der noch am Anfang seiner Entwicklung steht. Das Hosting übernimmt ein vServer, für den der Kunde auch root-Zugang hat. Unsere ersten Schritte bestanden in einer Ist-Analyse gefolgt von einer Soll-Definition. Der Kunde wählte dafür eine [...]]]></description>
			<content:encoded><![CDATA[<p>Einer unserer Kunden kam mit dem Wunsch auf uns zu, seinen Magentoshop zu beschleunigen. Es ist ein relativ neuer Shop, der noch am Anfang seiner Entwicklung steht. Das Hosting übernimmt ein vServer, für den der Kunde auch root-Zugang hat. Unsere ersten Schritte bestanden in einer Ist-Analyse gefolgt von einer Soll-Definition. Der Kunde wählte dafür eine für Ihn repräsentative Seite aus.</p>
<p>Für die Untersuchung der Seite boten sich die Webseiten <a href="http://gtmetrix.com/">GTmetrix</a> und <a href="http://www.webpagetest.org/">WebPagetest</a> an. GTmetrix fasst die Ergebnisse von YSlow und Google PageSpeed zusammen und als Bonus speichert es alte Messungen zum Vergleich der verschiedenen Optimierungen. Die Seite WebPagetest überzeugt mit aussagekräftigen Wasserfall und Verbindungsdiagrammen.</p>
<p>Bei der Analyse zeigte sich, dass das Rendern der Seite mehr als 15 Sekunden benötigt und diese Seite mehr als 1.1 MB an initialen Daten benötigt. Als Ziel setzte der Kunde 6 Sekunden zum Rendern der Seite. Das sahen wir auch als realistisch an.</p>
<div id="attachment_379" class="wp-caption alignright" style="width: 280px"><a href="http://blog.initos.com/wp-content/uploads/2012/02/connection.png"><img class=" wp-image-379 " src="http://blog.initos.com/wp-content/uploads/2012/02/connection-300x194.png" alt="" width="270" height="175" /></a><p class="wp-caption-text">Beispiel eines Verbindungsdiagramms</p></div>
<p>Im Wasserfalldiagramm stellt sich die TTFB (Time To First Byte) als größter Posten dar und dort begannen wir auch mit unserer Arbeit. Nach eingehender Analyse der momentanen Systems zeigte sich auf PHP-Seite, dass der APC Bytecode Cache mit 12MB zu klein dimensioniert war und PHP per FCGI eingebunden ist.</p>
<p>Der kleine Cache sorgte für eine schnelle Verdrängung von Cacheeinträgen. Dies führt zu einer Hit / Miss Rate von 20 / 80. Da jeder FCGI Prozess seinen eigenen Bytecode Cache benötigt, wird bei der Nutzung von APC für den Magento Cache zusätzlicher Platz benötigt. Wir splitteten den Mangento Cache und Bytecode Cache in zwei verschiedene Systeme. Der APC-Cache ist mit 128MB bemessen und sorgt für das Cachen des Bytecodes. Der Magento Cache wird jetzt durch einen Memcached-Server mit 256MB übernommen. Durch diese Maßnahme kann der Kunde später durch neue Server horizontal skalieren und hat einen gemeinsamen Cache für alle Instanzen. Die TTFB war damit bei einem Drittel der ursprünglichen Zeit und die Hit- / Missrate für den APC- und Bytecode-Cache bei 99/1.</p>
<p>Die Begutachtung des Seiten-HTML-Codes förderte zu Tage, das Boxen mit aktuellen Angebote per iframe eingebunden wurden. Dies sorgte beim Laden der Seite für ein ständiges Neurendern und verzögerte den subjektiven Seitenaufbau. Die diversen iframes konsolidierten wir zu einem einzigen, der bereits von Magento an der richten Stelle im Template eingebunden wird.</p>
<p>Die Verbindungsanalyse von GTmetrix zeigte, das viele Bilder/CSS/JS Dateien sequenziell geladen werden müssen und nur eine begrenzte Anzahl von Verbindungen zum Server aufgebaut werden. Dies lösten wir durch Aktivieren von HTTP-Pipelining im Apacheserver und Aufteilung der js, media und skin Verzeichnisse auf verschiedene vHosts. Beispielhaft nachzulesen ist das in einem <a href="http://www.jcg.de/host-splitting-fur-magento/">Blogeintrag zum Thema Hostplitting</a>.</p>
<div id="attachment_380" class="wp-caption alignleft" style="width: 300px"><a href="http://blog.initos.com/wp-content/uploads/2012/02/waterfall1.png"><img class="size-medium wp-image-380 " src="http://blog.initos.com/wp-content/uploads/2012/02/waterfall1-290x300.png" alt="" width="290" height="300" /></a><p class="wp-caption-text">Beispiel eines Wasserfalldiagramms</p></div>
<p>Als letztes widmeten wir uns dem Thema Trafficreduzierung. Dazu ließen wir Magento alle CSS- und JS-Dateien jeweils in eine Datei zusammenfassen und diese mit einem CSS- und JS-Minifier weiter komprimieren, die Produktbilder von Magento auf die korrekte Größe skalieren.</p>
<p>Weiterhin verkleinerten wir die Bilder ohne Qualitätseinbußen durch das Tool in Googles Pagespeed.  Die GZip-Kompression aller textuellen Ressourcen und das Setzen eines Expires-Headers durch den Apache Server brachte noch einmal einen deutliche Geschwindigkeitssteigerung und Trafficreduzierung bei weiteren Zugriffen auf die Seite.</p>
<p>Desweiteren setzten wir alle einfach zu erreichenden Vorschläge von YSlow und Googles Pagerank um.</p>
<p>Das Ergebnis der Mühe ist ein Shop, der in 4.5 Sekunden lädt.  Der benötigte Traffic für die Seite sank dabei von 1.1MB auf 590KB. Das YSlow-Ranking wuchs von  67% auf 80% und das PageSpeed-Ranking von 75% auf 93%.</p>
<p>Wir legten dem Kunden dar, dass er die Ladezeit von 4.5s weiter reduzieren könnte, da dort 2.5s als TTFB enthalten sind. Dies könnte er durch geschicktes Caching mittels eines Reverse Proxy wie beispielsweise Varnish erreichen. Das Laden des statischen Contents könnte weiterhin auch durch einen leichtgewichtigeren Webserver wie lighttpd oder nginx noch beschleunigt werden. Der Kunde ist mit dem erreichten Zustand sehr zufrieden und priorisiert momentanen andere Projekte höher.</p>
<p>Falls auch Sie Hilfe bei der Beschleunigung ihres eCommerce Portals benötigen, stehen wir Ihnen gerne mit Rat und Tat  zur Seite. Fordern Sie uns ! Wir lieben Herausforderungen. Nehmen Sie einfach über das <a title="Kontakt aufnehmen" href="http://www.initos.com/service" target="_blank">Kontaktformular</a> mit uns Kontakt auf und wir melden uns bei Ihnen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2012/02/07/magento-performanceoptimierung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tortoise SVN on Linux ?</title>
		<link>http://blog.initos.com/2012/01/24/tortoise-svn-on-linux/</link>
		<comments>http://blog.initos.com/2012/01/24/tortoise-svn-on-linux/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 11:29:54 +0000</pubDate>
		<dc:creator>fkramer</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[GIT]]></category>
		<category><![CDATA[RabbitVCS]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[TortoiseSVN]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=365</guid>
		<description><![CDATA[As a Software Developer or Project Manager one has to deal quite often with versioned documents (at least if he / she tries to keep minimum track of his / her work advancements). Without arguing on the individual advantages or disadvantages of SVN or GIT, most developers end up in using at least these two [...]]]></description>
			<content:encoded><![CDATA[<p>As a Software Developer or Project Manager one has to deal quite often with versioned documents (at least if he / she tries to keep minimum track of his / her work advancements). Without arguing on the individual advantages or disadvantages of SVN or GIT, most developers end up in using at least these two solutions (if not Mercurial and CVS as well). As a software engineering company that fully migrated to Ubuntu Linux Desktop we were searching for a tool similar to <a title="TortoiseSVN" href="http://tortoisesvn.tigris.org/" target="_blank">TortoiseSVN</a> on Windows, that allows easy sharing and updating of repositories using the favorite Desktop Explorer (in our case Nautilus on Gnome). While addressing these task regularly we recently discovered <a title="RabbitVCS" href="http://rabbitvcs.org/" target="_blank">RabbitVCS</a>. We installed the tool on two different machines, one running <strong>Ubuntu Lucid (LTS)</strong> the other running <strong>Ubuntu Oneiric</strong>. It works like a charm, providing all menu entries that you need to neatly deal with SVN or GIT.</p>
<p>The only thing you have to do is to add the following PPA to your Ubuntu installation and update the repository afterwards (Ubuntu Karmic and Later)</p>
<p><span id="more-365"></span></p>
<p><strong>sudo add-apt-repository ppa:rabbitvcs/ppa</strong><br />
<strong>sudo apt-get update</strong></p>
<p>followed by a</p>
<p><strong>sudo apt-get install «packages»</strong></p>
<p>Aavailable packages are:</p>
<p><strong>rabbitvcs-nautilus3</strong> for the Nautilus 3.x extension<br />
<strong>rabbitvcs-nautilus</strong> for the Nautilus 2.x extension<br />
<strong>rabbitvcs-thunar</strong> for the Thunar extensions<br />
<strong>rabbitvcs-gedit</strong> for the GEdit extension<br />
<strong>rabbitvcs-cli</strong> for the command line launchers</p>
<p>We tested the <strong>nautilus integration</strong> and the <strong>gedit extension</strong> on both versions of Ubuntu and all work like a charm !</p>
<p>Thanks a lot to the RabbitVCS community for having put that project on the track.</p>
<p>Additional extra suggested by <a title="WebUpd8" href="http://www.webupd8.org/2011/01/rabbitvcs-perfect-tortoisesvn.html" target="_blank">WebUpd8</a> is to re-add the icons to the nautilus menu</p>
<p>Prior to Oneiric you hav run</p>
<p><strong>gconf-editor</strong></p>
<p>on the console and check</p>
<p><em>&#8220;desktop&#8221;-&gt;&#8221;gnome&#8221;-&gt;&#8221;interface&#8221;-&gt;&#8221;menu_have_icons&#8221;</em></p>
<p>starting from Oneiric you have to use the new by just typing</p>
<p><strong>dconf-editor</strong></p>
<p>on the console to check</p>
<p><em>&#8220;org&#8221;-&gt;&#8221;gnome&#8221;-&gt;&#8221;desktop&#8221;-&gt;&#8221;interface&#8221;-&gt;&#8221;menu_have_icons&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2012/01/24/tortoise-svn-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EmailStatusSender &#8211; Benachrichtigungen bei Mantis Events</title>
		<link>http://blog.initos.com/2011/11/22/emailstatussender-benachrichtigungen-bei-mantis-events-2/</link>
		<comments>http://blog.initos.com/2011/11/22/emailstatussender-benachrichtigungen-bei-mantis-events-2/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:51:06 +0000</pubDate>
		<dc:creator>Tobias Kalbitz</dc:creator>
				<category><![CDATA[Consulting]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=356</guid>
		<description><![CDATA[Wir hatten den Wunsch bei neuen Issues in diversen Projekten immer benachrichtet zu werden. Die Einstellungen in Mantis erlaubten uns leider nur alle Administratoren auf einmal zu informieren. Unsere Intention bestand aber darin, die Benutzer für jedes Projekt einzeln konfigurieren zu können. So entstand die Idee das Pluginsystem von Mantis dafür zu verwenden. Es ist [...]]]></description>
			<content:encoded><![CDATA[<p>Wir hatten den Wunsch bei neuen Issues in diversen Projekten immer benachrichtet zu werden. Die Einstellungen in Mantis erlaubten uns leider nur alle Administratoren auf einmal zu informieren. Unsere Intention bestand aber darin, die Benutzer für jedes Projekt einzeln konfigurieren zu können. So entstand die Idee das Pluginsystem von Mantis dafür zu verwenden. Es ist eventbasiert und sendet diese an alle Plugins, die sich für dieses Event angemeldet haben.</p>
<p>Im Moment werden nur bei neuen Issues alle konfigurierten Benutzer informiert. Dabei ist es durch Konfigurationsoptionen auch möglich den Reporter und den Bearbeitenden auszusparen. Es wird sicherlich mit neuen Anforderungen wachsen und genereller werden. Das aktuelle Plugin ist bei <a title="GitHub zu finden" href="https://github.com/tkalbitz/EmailStatusSender">GitHub zu finden</a>. Über Patches, Kommentare und Feedback würden wir uns natürlich freuen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2011/11/22/emailstatussender-benachrichtigungen-bei-mantis-events-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Query Builder</title>
		<link>http://blog.initos.com/2011/11/21/magento-query-builder/</link>
		<comments>http://blog.initos.com/2011/11/21/magento-query-builder/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 10:31:55 +0000</pubDate>
		<dc:creator>Markus Schneider</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Magento Query Builder]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=333</guid>
		<description><![CDATA[Wenn man mal bei Magento schnell in der Datenbank nachschauen will, dann ist das sehr umständlich durch die EAV Datenbankstruktur. Ab und zu tauchen ein paar fertige SQL-Querys auf, die aber nicht auf jeden Shop passen. Da es ziemlich aufwändig ist, sich immer per Hand die entsprechenden Statements zusammenzubauen, haben wir ein kleines Tool geschrieben, [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man mal bei Magento schnell in der Datenbank nachschauen will, dann ist das sehr umständlich durch die EAV Datenbankstruktur. Ab und zu tauchen ein paar fertige SQL-Querys auf, die aber nicht auf jeden Shop passen. Da es ziemlich aufwändig ist, sich immer per Hand die entsprechenden Statements zusammenzubauen, haben wir ein kleines Tool geschrieben, mit dem man sich die SQL-Querys bauen lassen kann. Dafür braucht man nur PHP + Verbindung zur Datenbank.</p>
<p>Dieses Tool findet ihr auf GitHub:</p>
<p><a href="https://github.com/OSguard/Magento-Query-Builder">https://github.com/OSguard/Magento-Query-Builder</a></p>
<p>Das Beispiel:</p>
<p><a href="https://github.com/OSguard/Magento-Query-Builder/blob/master/example_export_all_products.php">https://github.com/OSguard/Magento-Query-Builder/blob/master/example_export_all_products.php</a></p>
<p>erklärt im Wesentlichen, wie man das Script benutzen kann. Man erzeugt sich ein Objekt, auf das man zugreifen will und lädt die Attribute:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$builder</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> QueryBuilder<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'catalog/product'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$builder</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadAllAttributes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Danach wählt man aus, welche Attribute man ausgeben will:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$attr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">&quot;entity_id&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;sku&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;name&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;price&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;url_path&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;url_key&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;attribute_set&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;status&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;created_at&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;updated_at&quot;</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$builder</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">selectAttributes</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$attr</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Man kann z.B. noch die Bedienung einschränken, damit eine WHERE-Klausel gebaut wird:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$builder</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setCond</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'type_id'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'='</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&quot;simple&quot;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Dann kann man sich das Query ausgeben lassen:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$builder</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getQuery</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>In unserem Beispiel wird dann folgender SQL-Befehl erzeugt:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> a<span style="color: #66cc66;">.</span>entity_id <span style="color: #993333; font-weight: bold;">AS</span> entity_id<span style="color: #66cc66;">,</span>
 a<span style="color: #66cc66;">.</span>sku <span style="color: #993333; font-weight: bold;">AS</span> sku<span style="color: #66cc66;">,</span>
 t0<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">VALUE</span> <span style="color: #993333; font-weight: bold;">AS</span> name <span style="color: #66cc66;">,</span>
 t1<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">VALUE</span> <span style="color: #993333; font-weight: bold;">AS</span> price <span style="color: #66cc66;">,</span>
 t2<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">VALUE</span> <span style="color: #993333; font-weight: bold;">AS</span> url_path <span style="color: #66cc66;">,</span>
 t3<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">VALUE</span> <span style="color: #993333; font-weight: bold;">AS</span> url_key <span style="color: #66cc66;">,</span>
 b<span style="color: #66cc66;">.</span>attribute_set_name <span style="color: #993333; font-weight: bold;">AS</span> attribute_set<span style="color: #66cc66;">,</span>
 t4<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">VALUE</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #993333; font-weight: bold;">STATUS</span> <span style="color: #66cc66;">,</span>
 a<span style="color: #66cc66;">.</span>created_at <span style="color: #993333; font-weight: bold;">AS</span> created_at<span style="color: #66cc66;">,</span>
 a<span style="color: #66cc66;">.</span>updated_at <span style="color: #993333; font-weight: bold;">AS</span> updated_at
	<span style="color: #993333; font-weight: bold;">FROM</span>
	<span style="color: #66cc66;">&#40;</span>
	<span style="color: #993333; font-weight: bold;">SELECT</span>
		entity<span style="color: #66cc66;">.*</span>
	<span style="color: #993333; font-weight: bold;">FROM</span> 
		catalog_product_entity entity 
        <span style="color: #993333; font-weight: bold;">WHERE</span> 
                entity<span style="color: #66cc66;">.</span>type_id <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;simple&quot;</span>   <span style="color: #66cc66;">&#41;</span> a
		    <span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span>
			eav_attribute_set b
		    <span style="color: #993333; font-weight: bold;">ON</span>
			b<span style="color: #66cc66;">.</span>attribute_set_id<span style="color: #66cc66;">=</span>a<span style="color: #66cc66;">.</span>attribute_set_id
		    <span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
                        catalog_product_entity_varchar t0
                        <span style="color: #993333; font-weight: bold;">ON</span> 
                        t0<span style="color: #66cc66;">.</span>attribute_id<span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">96</span> <span style="color: #993333; font-weight: bold;">AND</span>
                        t0<span style="color: #66cc66;">.</span>entity_id<span style="color: #66cc66;">=</span>a<span style="color: #66cc66;">.</span>entity_id <span style="color: #993333; font-weight: bold;">AND</span>
                        t0<span style="color: #66cc66;">.</span>store_id <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> 
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
                        catalog_product_entity_decimal t1
                        <span style="color: #993333; font-weight: bold;">ON</span> 
                        t1<span style="color: #66cc66;">.</span>attribute_id<span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">99</span> <span style="color: #993333; font-weight: bold;">AND</span>
                        t1<span style="color: #66cc66;">.</span>entity_id<span style="color: #66cc66;">=</span>a<span style="color: #66cc66;">.</span>entity_id <span style="color: #993333; font-weight: bold;">AND</span>
                        t1<span style="color: #66cc66;">.</span>store_id <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> 
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
                        catalog_product_entity_varchar t2
                        <span style="color: #993333; font-weight: bold;">ON</span> 
                        t2<span style="color: #66cc66;">.</span>attribute_id<span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">570</span> <span style="color: #993333; font-weight: bold;">AND</span>
                        t2<span style="color: #66cc66;">.</span>entity_id<span style="color: #66cc66;">=</span>a<span style="color: #66cc66;">.</span>entity_id <span style="color: #993333; font-weight: bold;">AND</span>
                        t2<span style="color: #66cc66;">.</span>store_id <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> 
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
                        catalog_product_entity_varchar t3
                        <span style="color: #993333; font-weight: bold;">ON</span> 
                        t3<span style="color: #66cc66;">.</span>attribute_id<span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">481</span> <span style="color: #993333; font-weight: bold;">AND</span>
                        t3<span style="color: #66cc66;">.</span>entity_id<span style="color: #66cc66;">=</span>a<span style="color: #66cc66;">.</span>entity_id <span style="color: #993333; font-weight: bold;">AND</span>
                        t3<span style="color: #66cc66;">.</span>store_id <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> 
<span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">JOIN</span> 
                        catalog_product_entity_int t4
                        <span style="color: #993333; font-weight: bold;">ON</span> 
                        t4<span style="color: #66cc66;">.</span>attribute_id<span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">273</span> <span style="color: #993333; font-weight: bold;">AND</span>
                        t4<span style="color: #66cc66;">.</span>entity_id<span style="color: #66cc66;">=</span>a<span style="color: #66cc66;">.</span>entity_id <span style="color: #993333; font-weight: bold;">AND</span>
                        t4<span style="color: #66cc66;">.</span>store_id <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span></pre></div></div>

<p>Das ist keine fertige Bibliothek, die man in ein Modul einbauen kann. Aber mann kann damit z.B. Export-Scripte bauen, die auch sehr viele Produkte in Sekunden exportieren, da hier der Magento-Weg sehr langsam ist. Oder es erleichtert das Arbeiten auf der Datenbank-Konsole. Zur Zeit ist das noch eine Rohfassung, vielleicht findet sich ja der ein oder andere, der bei der Entwicklung hilft. Der Code steht unter BSD-Lizenz.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2011/11/21/magento-query-builder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein Wochenende Datev-Migration, ein Erfahrungsbericht</title>
		<link>http://blog.initos.com/2011/11/14/328/</link>
		<comments>http://blog.initos.com/2011/11/14/328/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 09:53:21 +0000</pubDate>
		<dc:creator>fkramer</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Datev]]></category>
		<category><![CDATA[Datev Pro]]></category>
		<category><![CDATA[Kanzlei REWE]]></category>
		<category><![CDATA[LODAS]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Terminal Server]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=328</guid>
		<description><![CDATA[Wenn man in der IT-Branche arbeitet ist es keine Besonderheit, dass gerade die Einsätze am Wochenende lange dauern. Dies liegt weniger daran, dass am Wochenende weniger helfende Hände zu Verfügung stehen, als viel mehr an der Tatsache, dass gerade am Wochenende zusammenhängende und aufwendige Arbeiten, wie etwa eine Datenmigration bzw. die Substitution von Anwendungssystemen durchgeführt [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Arial,sans-serif;">Wenn man in der IT-Branche arbeitet ist es keine Besonderheit, dass gerade die Einsätze am Wochenende lange dauern. Dies liegt weniger daran, dass am Wochenende weniger helfende Hände zu Verfügung stehen, als viel mehr an der Tatsache, dass gerade am Wochenende zusammenhängende und aufwendige Arbeiten, wie etwa eine Datenmigration bzw. die Substitution von Anwendungssystemen durchgeführt werden müssen. Dieses Wochenende war es mal wieder soweit. Bei einem unserer Kunden, einer mittelständischen Steuerberatungskanzlei mit Sitz in Buchholz i.d.N. bei Hamburg sollte dass deutlich in die Jahre gekommene Anwendungssystemkonglomerat DATEV durch die evolutionäre Variante Datev Pro ersetzt werden. </span></p>
<h2>Vorwort</h2>
<p><span style="font-family: Arial,sans-serif;">Mit viel Aufwand hat die Firma DATEV e.G. mit Hauptsitz in Nürnberg, das deutschlandweit erste Unternehmen, das überhaupt derartige Software angeboten hat, den Schritt in das Zeitalter voll-integrierter Anwendungssysteme gemacht. Bis dato bestand Datev aus wenig bis gar nicht integrierten Insellösungen für die unterschiedlichen Geschäftsprozesse, darunter Programme für die Lohnbuchhaltung (LODAS), Einkommenssteuererklärung (ESt), die Kanzleiorganisation (Eigenorganisation) und das Rechnungswesen (Kanzlei ReWe). </span></p>
<p><span style="font-family: Arial,sans-serif;">Bereits mit Beginn des Jahres 2010 hatte Datev angefangen, die Vorzüge des neues Produktes in entsprechender Weise zu präsentieren und die Kunden zu einer Umstellung zu bewegen. Eine im Rahmen der Einführung dieses Wochenende durchgeführte Befragung des First und Second Level Support von Datev zeigt jedoch, dass allen Bemühungen zum trotz vermutlich erst 1/3 aller Steuerberater, die Datev nutzen umgestellt haben. Dies ist insofern bedenklich, als dass ab dem 1.1.2012 keine Transaktionen der alten Programme mit den Rechenzentren von Datev und den Finanzbehörden mehr möglich sein wird. Datev hat hierzu mit bereits einjähriger Vorlaufzeit den Support abgekündigt. </span></p>
<h2>Verlauf der Migration</h2>
<p><span style="font-family: Arial,sans-serif;">Der Betrieb von 10 Arbeitsplätzen in der Kanzlei und 2 Remotenutzern (über VPN angeschlossen) bei unserem Kunden, läuft auf einem leistungsfähigen Hostserver der Marke Dell mit Windows 2008 Small Business Server, sowie einem darauf installierten Windows 2008 SBS Terminal Server. Dieser lößte bereits in einem letzten Ausbauschritt die früherer Client / Server Installation mit Servern und einer Vielzahl eigener Clients ab. Die Maintainance und Wartungskosten der Clientsysteme sind mit dieser Maßnahme erheblich gesenkt worden. Die Stabilität und Konistenz der Anwendungsnutzung konnte zudem durch die WTS-Umgebung gesteigert werden. Da in diesem Setup sowohl der Hostserver (der auch als Datenbankserver fungiert) alsauch der WTS-Server sogenannte &#8220;single points of failure&#8221; darstellen, wurde zur Migrationsvorbereitung beschlossen, ein komplett separates Offline Backup der Hostmaschine zu fahren. Nachdem alle Vorarbeiten erledigt waren und alles aktuellen Sicherheitsupdates der Plattform eingespielt waren, wurde deshalb eine vollständiges Backup der etwa 250GB Kanzleidaten durchgeführt. Da es sich bei derart großen Datenbeständen in Datenbanken zumeist um recht fragmentierte Daten handelt, dauerte diese Maßnahme gut 6 Stunden und erfolgte am Freitag Nachmittag und in der Nacht zum Samstag. </span></p>
<p><span style="font-family: Arial,sans-serif;">Am Samstag wurde dann morgens mit der Basisinstallation des Fileservers begonnen. Zu diesem Zweck stellt Datev eine Reihe von Leitfäden bereit, deren Lektüre zur Fehlervermeidung dringend anzuraten ist. Besonders hilfreich war, dass die Firma Datev e.G. als einer der letzten Softwarehäuser in Europa dazu durchringen konnte ihren Support zumindest zeitlich an die üblichen Zeitfenster für Updates und Migrationen anzupassen und eine Hotline auch am Wochenende anzubieten. Dies war besonders bei der notwendigen Datenbereinigung der Nummernzusammenhänge im Vorfelde der Datenübernahme sehr hilfreich. </span></p>
<p><span style="font-family: Arial,sans-serif;">So konnte sichergestellt werden, dass die circa 1500 Mandantenstammdatensätze ohne ein gravierendes Problem übernommen werden konnten. Ein ewiger Problempunkt bei Datev ist das Softwareschutzmodul und die damit recht eng verzahnte Nutzungskontrolle sowie DFÜ-Übertragung. Auch hier war jedoch ein Supporttechniker sehr hilfreich. Sehr kritisch anzumerken ist, dass die Wartezeiten der Supporthotline von Datev nach wie vor unzumutbar sind. Die Qualität des Services und die Kompetenz mit der beraten wurde waren jedoch vorbildlich </span></p>
<h2>Nach der Migration</h2>
<p><span style="font-family: Arial,sans-serif;">Die Kanzlei hat bereits mit der letzten Version von Datev Classic die Officelösung Open Office eingesetzt und damals eine Menge Aufwand betrieben, die offensichtlich unzureichend getestete Schnittstelle zur korrekten Arbeit mit Datev zu bewegen. Nach einer schwierigen Anlaufphase (Laufzeitproblemen) konnte das Produkt jedoch erfolgreich mit Datev Classic genutzt werden. Umso ärgerlicher ist es daher, dass die Installationsroutine von Datev Pro oder besser die stets vorher durchlaufende Anforderungsprüfung ein rote Ampel liefert, wenn kein Microsoft Office installiert ist, obwohl Open Office in der Version 3.3 zumindest für die wichtigsten Schriftwechsel offiziell freigegeben ist. </span></p>
<p><span style="font-family: Arial,sans-serif;">Die deuten wir als Zeichen dafür, dass Datev nach wie vor Open Office bzw. seinen Fork (LibreOffice) unzureichend bzw. gar nicht unterstützen. Hier ist nach wie vor erhebliches Verbesserungspotential. Ebenso ärgerlich ist, dass nach der Fertigstellung der Installation eine Neuanlage von Dokumenten mit Open Office fehlschlägt und eine Fehlermeldung geworfen wird. Daran ändert auch eine Prüfung der Einstellungen mit dem Office Konfigurationsdialog von Datev &#8220;OfficeDiag.exe&#8221; nichts. Es bleibt abzuwarten ob der Fehler am Montag morgen zeitnah bereinigt werden kann. </span></p>
<h2>Erster Eindruck</h2>
<p><span style="font-family: Arial,sans-serif;">Sowohl der Kunde, als auch wir als IT-Dienstleister konnten direkt im Anschluss der Installation und Erstbestückung des Arbeitsplatzes Pro von Datev (hierbei ist darauf zu achten, dass der installierende Nutzer auch Nuko Admin ist) das deutlich intuitiver zu bedienende Dashboard von Datev Pro bewundern. Die Kommunikation (Email und CTI) ist jetzt nahtlos integriert und erlaubt eine schnelle Kontaktaufnahme mit den Mandanten. Die Termin- und Aufgabenverwaltung ersetzt einen Exchangeserver weitgehend (obwohl der Datenabgleich möglich wäre) und verringert so die Umstiegshürden von MS-Office auf Open Office, da letzteres leider nicht über einen Rich Mail Client verfügt. Auch die Dokumentenorganisation ist recht intuitiv zu bedienen und kann direkt am Kunden abgelegt werden. Im Anschluss an die Installation wurde beschlossen die Anbindung der Email-Kommunikation künftig über Thunderbird und die IMAP Funktion des installierten Exchange 2007 Servers zu realisieren. Damit ist sichergestellt, dass der Mailverkehr in einem zentralen Mailstore gespeichert wird und so auditsicher verwahrt werden kann. Zeitgleich können so Handlingproblem insbesondere bei den zum Teil großen Attachements deutlich reduziert werden, da der Webclient von Exchange 2007 hier nach wie vor Schwächen hat. </span></p>
<h2>Fazit und Resümee</h2>
<p><span style="font-family: Arial,sans-serif;">Die Tatsache dass der Arbeitsplatz Pro der zentrale Anlaufpunkt für alle kanzleispezifischen Prozesse geworden ist, hängt für die nun folgende Schulungs- und Einführungsphase die Erwartungshaltung sehr hoch. Wermutstropfen ist und bleibt die schlechte Perfomance vieler auf .NET Basis entwickelter Anwendungen. Dieses bereits von Sage Office Line Evolution bekannte schleppende Laufzeitverhalten, scheint ein grundsätzliches Problem auch von Datev Pro zu sein bzw. zu werden. Dennoch erwarten der Steuerberater als auch wir einen deutliche Effizienzsteigerung der Kanzleiprozesse nach dieser Umstellung. Wir ziehen insgesamt ein positive Resümee der Migration und konnten zumindest die auch von uns vorher geäußerten Vorbehalte weitgehend ausräumen. Bewahrheitet sich der erste Eindruck auch in der Praxis und gelingt es der Datev insbesondere beim Support und dem Laufzeitverhalten sowie der Unterstützung offener Standards noch ein deutliches Quäntchen nachzulegen, dürften DATEV neuerlicher Erfolg beschieden sein. Ein kritischer Punkt werden sicherlich die geballten noch ausstehenden Migrationen zum Jahreswechsel 2011/2012.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2011/11/14/328/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>j2Mantis parameter documentation</title>
		<link>http://blog.initos.com/2011/11/10/j2mantis-parameter-documentation/</link>
		<comments>http://blog.initos.com/2011/11/10/j2mantis-parameter-documentation/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 08:33:49 +0000</pubDate>
		<dc:creator>Markus Schneider</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[j2Mantis]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[mantisbt]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=321</guid>
		<description><![CDATA[There is a lack of documentation about what the parameters in the backend of j2Mantis mean. Here is a brief overview: Webservice url the URL to the SOAP API of Mantis Username a valid Mantis user, you have to try whether you need a Manager-User or whether a Developer just works, this depends on your [...]]]></description>
			<content:encoded><![CDATA[<p>There is a lack of documentation about what the parameters in the backend of j2Mantis mean. Here is a brief overview:</p>
<ul>
<li><strong>Webservice url </strong>the URL to the SOAP API of Mantis</li>
<li><strong>Username </strong>a valid Mantis user, you have to try whether you need a Manager-User or whether a Developer just works, this depends on your Mantis installation</li>
<li><strong>Password</strong> of the user</li>
<li><strong>Project ID</strong> the default mantis project that you want to use in Joomla, you can override this by menu entry</li>
<li><strong>Backup Email</strong> sends the data of form to this email if mantis SOAP is not working</li>
<li><strong>use captcha</strong> use the JCCReCaptcha Plugin to protect your form</li>
<li><strong>Secret Key</strong> random string to encrypt your mantis id in the url (weak encryption)</li>
<li><strong>overview</strong> enable/disable the link from the form back to the overview of all bugs of the selected project</li>
</ul>
<div>Hope this helps.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2011/11/10/j2mantis-parameter-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento &#8211; keine Produkte im Shop bei Indexerstellung</title>
		<link>http://blog.initos.com/2011/11/04/magento-index-keine-produkte/</link>
		<comments>http://blog.initos.com/2011/11/04/magento-index-keine-produkte/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 12:17:36 +0000</pubDate>
		<dc:creator>Markus Schneider</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[MyISAM]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=302</guid>
		<description><![CDATA[Ein sehr ungewöhnliches Problem ist uns bei einem größeren Magento Shop eines Kunden begegnet. Jedes Mal wenn in Magento die Indizes neu erstellt wurden, waren im Shop keine Produkte mehr verfügbar. Das ist natürlich mehr als ärgerlich, denn der Workaround, die Indizes nur in der Nacht neu zu bauen, ist bei einem Shop, der viele [...]]]></description>
			<content:encoded><![CDATA[<p>Ein sehr ungewöhnliches Problem ist uns bei einem größeren Magento Shop eines Kunden begegnet. Jedes Mal wenn in Magento die Indizes neu erstellt wurden, waren im Shop keine Produkte mehr verfügbar. Das ist natürlich mehr als ärgerlich, denn der Workaround, die Indizes nur in der Nacht neu zu bauen, ist bei einem Shop, der viele Produkte hat und diese häufig aktualisiert nicht sehr praktikabel.</p>
<p>Eine Auswertung des SQL-Query-Logs ergab erstmal nichts auffälliges, der ganze Prozess zur Indexerstellung lief in einer Transaktion ab. Bei einem genauen Blick und sorgfältiger Analyse stellte man fest, dass Magento im <em>Model Mage_Index_Model_Mysql4_Abstract</em> den SQL-Befehl &#8220;<em>ALTER TABLE {$destTable} DISABLE KEYS</em>&#8221; immer ausführt, auch wenn die Storage-Engine von MySQL InnoDB ist. Diese Zeile existiert, um das nachfolgende INSERT zu beschleunigen, dies ist aber nur bei MyISAM notwendig. Unter InnoDB sorgt es dafür, dass ein implizierter Commit gemacht wird und damit die Indextabelle erstmal leer ist. Das Überschreiben des Models hat das Problem gelöst.</p>
<p>In der aktuellen Magento-Version ist das Problem behoben, aber nicht jeder will und kann seinen Shop gleich updaten.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2011/11/04/magento-index-keine-produkte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenschutzkonforme Webanalyse mit Piwik</title>
		<link>http://blog.initos.com/2011/10/28/datenschutzkonforme-webanalyse-mit-piwik/</link>
		<comments>http://blog.initos.com/2011/10/28/datenschutzkonforme-webanalyse-mit-piwik/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 09:05:55 +0000</pubDate>
		<dc:creator>Lina Schneider</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OXID]]></category>
		<category><![CDATA[Piwik]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=262</guid>
		<description><![CDATA[Webanalyse-Tools geben Webseiten-Betreibern die Möglichkeit, Statistiken über ihre Besucher zu erheben und auszuwerten. Sie helfen, die Fragen zu beantworten, woher die Besucher kommen, wie sie auf die Webseite gelangen, mit welchen Suchbegriffen die Seite gefunden wird, welche Unterseiten am beliebtesten sind, etc. Besonders zu beachten ist, dass der Einsatz eines Webanalyse-Tools nicht gegen deutsche Datenschutzgesetze [...]]]></description>
			<content:encoded><![CDATA[<p>Webanalyse-Tools geben Webseiten-Betreibern die Möglichkeit, Statistiken über ihre Besucher zu erheben und auszuwerten. Sie helfen, die Fragen zu beantworten, woher die Besucher kommen, wie sie auf die Webseite gelangen, mit welchen Suchbegriffen die Seite gefunden wird, welche Unterseiten am beliebtesten sind, etc.</p>
<p>Besonders zu beachten ist, dass der Einsatz eines Webanalyse-Tools nicht gegen deutsche Datenschutzgesetze verstoßen darf, weswegen z.B. Google Analytics umstritten ist .</p>
<p><a title="Piwik" href="http://de.piwik.org" target="_blank">Piwik</a> ist eine Open-Source Webanalyse-Software, die datenschutzkonform eingesetzt werden kann wie zum Beispiel <a title="Datenschützer empfehlen Piwik" href="http://www.heise.de/newsticker/meldung/Datenschuetzer-empfehlen-Piwik-zur-Webanalyse-1208686.html" target="_blank">Heise</a> unlängst berichtete.</p>
<p>Die Vorteile von Piwik sind:</p>
<ul>
<li>Die <strong>Statistiken</strong> werden <strong>in Echtzeit</strong> erstellt.</li>
<li>Piwik ist eine Software, die <strong>auf dem eigenen Server installiert</strong> wird. Die <strong>Daten</strong>, die von Piwik erhoben werden, befinden sich in einer Datenbank unter eigener Kontrolle und <strong>werden nicht</strong> wie etwa bei <strong>Google auf U.S. Servern gespeichert</strong>.</li>
<li>Die <strong>Bedienoberfläche kann vollständig</strong> den eigenen Bedürfnissen <strong>angepasst werden</strong>.</li>
</ul>
<p>&nbsp;</p>
<p>Piwik lässt sich auf der eigenen Webseite ganz einfach durch Einfügen eines Javascript-Codeschnipsels integrieren.<br />
In der aktuellen Version 1.6 bietet Piwik folgende Möglichkeiten zum datenschutzkonformen Einsatz:</p>
<ul>
<li><strong>Anonymisierung der IP-Adressen</strong> der Besucher durch das Plugin AnonymizeIP.</li>
<li>Alte Besucherdaten lassen sich in regelmäßigen Abständen automatisch aus der Datenbank löschen.</li>
<li>Einfügen eines Codes auf der Webseite, der die Deaktivierung der Webanalyse durch den Besucher erlaubt.</li>
</ul>
<p>Ein Beispiel für die Einbindung der Deaktivierungsmöglichkeit findet sich auf dieser Webseite im <a title="Impressum" href="http://www.initos.com/impressum#optout" target="_blank">Impressum</a>.</p>
<p>Piwik lässt sich auch in Verbindung mit eShops verwenden. <a title="marmalade.de" href="http://www.marmalade.de/" target="_blank">marmalade.de</a> hat ein <strong>Piwik-Plugin für</strong> den <strong>OXID eShop</strong> veröffentlicht, weitere Infos dazu befinden sich <a title="Piwik-Plugin für OXID-eShop" href="http://blog.marmalade.de/2011/10/marmpiwik-piwik-plugin-fur-oxid-eshop/" target="_blank">hier</a>.</p>
<p>Ein <strong>Piwik-Plugin für Magento</strong> findet man <a title="Piwik-Plugin für Magento" href="http://www.magentocommerce.com/magento-connect/wagner_tim78/extension/3693/faett_piwik" target="_blank">hier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2011/10/28/datenschutzkonforme-webanalyse-mit-piwik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento &#8211; Ratings abhängig vom Attributeset</title>
		<link>http://blog.initos.com/2011/10/25/magento-ratings-attributeset/</link>
		<comments>http://blog.initos.com/2011/10/25/magento-ratings-attributeset/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 19:01:12 +0000</pubDate>
		<dc:creator>Markus Schneider</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://blog.initos.com/?p=250</guid>
		<description><![CDATA[Wenn man in Magento seine Produkte in verschiedene Attributesets verteilt hat, dann stellt sich die Frage beim Ermitteln von Kundenbewertungen, ob der Kunde vielleicht unterschiedliche Bewertungskriterien für die Produkte haben möchte. Ein Beispiel wäre, wenn man Zubehör und dem eigentlichen Produkt jeweils unterschiedliche Kriterien zuordnen will. Dabei reicht eine einfache Änderung im Template aus: &#60;?php [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man in Magento seine Produkte in verschiedene Attributesets verteilt hat, dann stellt sich die Frage beim Ermitteln von Kundenbewertungen, ob der Kunde vielleicht unterschiedliche Bewertungskriterien für die Produkte haben möchte.</p>
<p>Ein Beispiel wäre, wenn man Zubehör und dem eigentlichen Produkt jeweils unterschiedliche Kriterien zuordnen will.</p>
<p>Dabei reicht eine einfache Änderung im Template aus:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
    <span style="color: #000088;">$product</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getProduct</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$attributeSetModel</span> <span style="color: #339933;">=</span> Mage<span style="color: #339933;">::</span><span style="color: #004000;">getModel</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;eav/entity_attribute_set&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$attributeSetModel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAttributeSetId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$attributeSetName</span>  <span style="color: #339933;">=</span> <span style="color: #000088;">$attributeSetModel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAttributeSetName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getRatings</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$_rating</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
        <span style="color: #000000; font-weight: bold;">&lt;?php</span> 
	<span style="color: #666666; font-style: italic;">// Wenn kein Zubehör, dann kein Zubehör anzeigen</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_rating</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getRatingCode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Zubehör&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">!=</span> <span style="color: #990000;">strcmp</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$attributeSetName</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Zubehoer'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
              <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span> 
        <span style="color: #009900;">&#125;</span>
        <span style="color: #666666; font-style: italic;">// Wenn Zubehör, dann nur Zubehör anzeigen</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_rating</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getRatingCode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Zubehör&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">==</span> <span style="color: #990000;">strcmp</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$attributeSetName</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Zubehoer'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
              <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span> 
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Diese Änderung nimmt man in Advancereview/review/form.phtml seines Templates vor.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.initos.com/2011/10/25/magento-ratings-attributeset/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

