<?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>B. Boerngen-Schmidt</title>
	<atom:link href="http://www.boerngen-schmidt.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.boerngen-schmidt.de</link>
	<description>Die Summe der Kleinigkeiten ergibt das Ganze.</description>
	<lastBuildDate>Mon, 19 Jul 2010 10:16:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>iPhone 3G downgrade von iOS 4 auf iOS 3.1.3</title>
		<link>http://www.boerngen-schmidt.de/2010/07/iphone-3g-downgrade-von-ios-4-auf-ios-3-1-3/</link>
		<comments>http://www.boerngen-schmidt.de/2010/07/iphone-3g-downgrade-von-ios-4-auf-ios-3-1-3/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 10:16:21 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Macintosch]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=245</guid>
		<description><![CDATA[Das Iphone 3G ist einfach grauenhaft langsam, wenn man das iOS 4 darauf installiert hat. Selbst die neuen Features wie Multitasking sind gar nicht erst aktiviert und selbst das aktivieren durch einen Jailbreak verursacht eine nur noch größeren Geschwindigkeitsverlust. Daher habe ich mich, wie scheinbar viel andere auch, dazu entschlossen ein Downgrade auf die Firmware [...]


Keine verwandten Artikel gefunden.]]></description>
			<content:encoded><![CDATA[<p>Das Iphone 3G ist einfach grauenhaft langsam, wenn man das iOS 4 darauf installiert hat. Selbst die neuen Features wie Multitasking sind gar nicht erst aktiviert und selbst das aktivieren durch einen Jailbreak verursacht eine nur noch größeren Geschwindigkeitsverlust. Daher habe ich mich, wie scheinbar viel andere auch, dazu entschlossen ein Downgrade auf die Firmware 3.1.3 vorzunehmen.</p>
<h3>Neue &#8220;alte&#8221; Firmware runterladen und installieren</h3>
<p>Als erstes brauchen wir die passende Firmware. Eine gut gepflegte Liste mit Download-Links direkt von Apple habe ich bei <a title="iSzene" href="http://iszene.com/thread-29469.html" target="_blank">iSzene</a> gefunden.</p>
<p>Ich habe bei meinen Nachforschungen zum Downgrade öfters gelesen, dass es wohl einige Probleme gibt, die alte Firmware auf das iPhone zu spielen. Eine mögliche Lösung und weitere Links gibt es beim <a href="http://www.apfelwerk.de/2010/06/downgrade-iphone-3g-firmware-3-1-3/" target="_blank">Apfelwerk</a>.</p>
<p>Mein Weg war etwas härter, hat aber auch ohne zusätzliche Tools funktioniert. Ich habe das iPhone in den DFU-Modus mit hilfe des Pwnage Tools gebracht und dann via iTunes die alte Firmware installiert. Dies hat nicht direkt geklappt, da iTunes einen Fehler gemeldet hat. Davon aber nicht irritieren lassen, sondern iTunes schließen, neustarten und einfach nochmal versuchen. Eventuell das iPhone nochmals in den DFU Modus versetzen.</p>
<blockquote><p>Wenn man mit gedrückter ALT-Taste auf Wiederherstellen in iTunes klickt, kann man eine Firmwaredatei auswählen. Ansonsten wird die aktuellste von iTunes automatisch ausgewählt.</p></blockquote>
<h3>Wiederherstellen des iPhones aus einem Backup</h3>
<p>Wer nach der erfolgreichen Installation von iOS 3.1.3 versucht, sein iPhone aus einem Backup wiederherzustellen, dass er mit dem iOS 4 gemacht hat wird leider von iTunes enttäuscht mit der Fehlermeldung</p>
<blockquote><p>Das Backup kann nicht wiederhergestellt werden, da es mit einer neueren Version &#8230;.</p></blockquote>
<p>Doof! Aber man kann sich hier mit einem Trick behelfen.</p>
<p>Unter <strong>/Users/&lt;username&gt;/Library/Application Support/MobileSync/Backup </strong>findet man die Backups, die iTunes vom iPhone gemacht hat und geht wie folgt vor:</p>
<ul>
<li>iTunes schließen!!</li>
<li>Suchen des neusten Backupsordners</li>
<li>Dort die info.plist öffnen und nach folgendem suchen

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Product Version<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>und den string darunter auf 3.1.3 abändern. Fertig sieht das dann so aus</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Product Version<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>3.1.3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

</li>
<li>Jetzt iTunes neustarten und den Sync geschehen lassen</li>
</ul>
<p>Das sollte alles sein um das iPhone down zu graden vom langsamen iOS 4.</p>


<p>Keine verwandten Artikel gefunden.</p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2010/07/iphone-3g-downgrade-von-ios-4-auf-ios-3-1-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KyoceraMita OSX Treiber reparieren</title>
		<link>http://www.boerngen-schmidt.de/2010/07/kyoceramita-osx-treiber-reparieren/</link>
		<comments>http://www.boerngen-schmidt.de/2010/07/kyoceramita-osx-treiber-reparieren/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 14:38:57 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Macintosch]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Lösung]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Printer]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=243</guid>
		<description><![CDATA[Ich bin seit langem stolzer Besitzer eines KyoceraMita FS-3830N Druckers und sehr sehr zufrieden mit diesem. Das einzige was leider nicht so gut ist sind die Treiber die Kyocera zur Verfügung stellt. Zum einen gibt es keine aktuellen Packete für Mac OSX &#62; 10.4 und zum Anderen sind sie in einem Format gepackt, dass nicht [...]


Keine verwandten Artikel gefunden.]]></description>
			<content:encoded><![CDATA[<p>Ich bin seit langem stolzer Besitzer eines KyoceraMita FS-3830N Druckers und sehr sehr zufrieden mit diesem. Das einzige was leider nicht so gut ist sind die Treiber die Kyocera zur Verfügung stellt.<br />
Zum einen gibt es keine aktuellen Packete für Mac OSX &gt; 10.4 und zum Anderen sind sie in einem Format gepackt, dass nicht per default geöffnet werden kann (SITX).</p>
<p>Da ich vor kurzem mein MacBook Pro neuinstalliert habe mussten auch die Druckertreiber wieder installiert werden. Nur am Bildschirm lesen macht halt einfach keinen Spaß. Als Problem stellt sich aber heraus, dass ich selbst nach der Installation der Druckertreiber nicht in der Lage bin zu drucken.</p>
<blockquote><p>Die Druckersoftware wurde nicht korrekt installiert. Installieren Sie die Druckersoftware erneut oder wenden Sie sich an den Hersteller.</p></blockquote>
<h2>Problembehebung</h2>
<ol>
<li>Wie bei jedem Unix System erstmal in die Logfiles schauen. Am besten mit der Console.app, dort auf <strong>/private/var/log</strong> dann <strong>cups</strong> und schließlich das <strong>error_log</strong> auswählen.</li>
<li>Fehlermeldung lesen: <em>E [07/Jul/2010:16:15:32 +0200] Filter &#8220;/usr/libexec/cups/filter/kyofilter&#8221; for printer &#8220;FS3830N&#8221; not owned by root. </em>Was soviel bedeutet, dass die Berechtigungen für die Datei nicht stimmen</li>
<li>Fehler analysieren: Terminal.app öffnen und per <strong>ls -l /usr/libexec/cups/filter/kyofilter</strong> die Datei anzeigen lassen

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">-r-xr-xr-x  <span style="color: #000000;">1</span> benjamin  wheel   <span style="color: #000000;">55280</span> <span style="color: #000000;">26</span> Jun  <span style="color: #000000;">2006</span> kyofilter</pre></div></div>

<p>Die Datei sollte dem Nutzer root gehören, nicht mir (benjamin)!</li>
<li>Fehler beheben: As easy as <strong>sudo chown root /usr/libexec/cups/filter/kyofilter</strong></li>
<li>Testseite drucken und siehe da kein Buchstabensalat mehr, sondern das gewünschte Ergebnis</li>
</ol>


<p>Keine verwandten Artikel gefunden.</p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2010/07/kyoceramita-osx-treiber-reparieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einrichten einer Squid Proxy Chain</title>
		<link>http://www.boerngen-schmidt.de/2010/06/einrichten-einer-squid-proxy-chain/</link>
		<comments>http://www.boerngen-schmidt.de/2010/06/einrichten-einer-squid-proxy-chain/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 12:47:43 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[IPCop]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=234</guid>
		<description><![CDATA[Heute steht bei auf dem Plan eine Proxy-Chain einzurichten. Unter einer Proxy-Cahin kann man sich eine Hintereinanderschaltung von mehreren Proxyserver vorstellen. Ein Grund für ein solches SetUp ist zum Beispiel, wenn ein Internetanschluß nur zentral zur Verfügung steht und Außenstellen nur über eine kleine Anbindung an diesen angeschlossen sind. Ziel ist es möglichst wenig Traffic [...]


Keine verwandten Artikel gefunden.]]></description>
			<content:encoded><![CDATA[<p>Heute steht bei auf dem Plan eine Proxy-Chain einzurichten. Unter einer Proxy-Cahin kann man sich eine Hintereinanderschaltung von mehreren Proxyserver vorstellen. Ein Grund für ein solches SetUp ist zum Beispiel, wenn ein Internetanschluß nur zentral zur Verfügung steht und Außenstellen nur über eine kleine Anbindung an diesen angeschlossen sind.</p>
<p>Ziel ist es möglichst wenig Traffic über die kleine Leitung zu schicken, damit andere Services mehr Bandbreite abgreifen können. Zudem wird durch den Proxyserver im Intranet noch die Seitenladezeit verbessert, was aber nur ein &#8220;Abfallprodukt&#8221; des SetUps ist aber durchaus ein angenehmes.</p>
<h3>Installation der Proxyserver</h3>
<p>In dem von mir gewählten SetUp ist der Rechner, welcher mit dem Internet verbunden ist mit <a title="IPCop Firewall" href="http://www.ipcop.org" target="_blank">IPCop</a> versehen, dass von Haus aus einen Proxyserver installiert hat. Diesen gilt es nachfolgend nur noch zu konfigurieren und zu starten.</p>
<p>Auf den Systemen der Außenstellen habe ich mich entschlossen einen Ubuntu Server einzusetzen. Als Proxysoftware wird hier <a href="http://www.squid-cache.org/" target="_blank">Squid</a> benutzt, welcher sich am einfachsten über <strong>apt-get install squid3</strong> installieren lässt.</p>
<h3>Konfiguration der Proxyserver</h3>
<p>Bis hierhin war alles noch kein großartiger Aufwand. Im ersten Setup werde ich auch darauf verzichten eine Authentifizierung der Benutzer vorzunehmen. Später soll es jedoch möglich sein, dass sich die Benutzer durch das Anmelden an der Domäne automatisch auch beim Proxy Identifizieren.</p>
<p>Bei IPCop ist es wichtig, dass man unter /var/ipcop/proxy/acls/include.acl die Optionen für den ICP Datenaustausch hinzufügt, da es sonst funktioniert die chain nicht.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">icp_port <span style="color: #000000;">3130</span>
acl proxy_child src <span style="color: #000000; font-weight: bold;">&lt;</span>ipaddress<span style="color: #000000; font-weight: bold;">&gt;</span>
acl proxy_child src <span style="color: #000000; font-weight: bold;">&lt;</span>ipaddress<span style="color: #000000; font-weight: bold;">&gt;</span>
icp_access allow proxy_child
icp_access deny all</pre></div></div>

<p>Auf dem Kind-Proxy ist es am einfachsten die squid.conf durch zu arbeiten, da diese extrem gut kommentiert ist. Um die Kommunikation mit dem Eltern-Proxy (IPCop) zu aktivieren muss man folgendes in der squid.conf des Kindes hinzufügen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">cache_peer	<span style="color: #000000; font-weight: bold;">&lt;</span>URL PARENT<span style="color: #000000; font-weight: bold;">&gt;</span>	parent	<span style="color: #000000;">3128</span>	<span style="color: #000000;">3130</span>	default</pre></div></div>

<p>Die in der Konfigurationsdatei oft erwähnte Option only-proxy habe ich weggelassen, da mein Ziel es ja war ein Caching auf dem Kind-Proxy zu erreichen. Als gute Hilfe für das grundlegende Einrichten hat mir http://wiki.ubuntuusers.de/squid und http://www.proesdorf.de/linux/squid_conf.php gedient.</p>
<p>So viel Spaß beim cachen.</p>


<p>Keine verwandten Artikel gefunden.</p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2010/06/einrichten-einer-squid-proxy-chain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beschleunigen von Apache mit mod_mem_cache</title>
		<link>http://www.boerngen-schmidt.de/2010/04/beschleunigen-von-apache-mit-mod_mem_cache/</link>
		<comments>http://www.boerngen-schmidt.de/2010/04/beschleunigen-von-apache-mit-mod_mem_cache/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 14:18:41 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=226</guid>
		<description><![CDATA[Um noch mehr Potenzial aus meinem Apache zu kitzel habe ich mich etwas mit mod_mem_cache beschäftigt und muss sagen das Ergebnis gefällt mir. Besonders auffällig waren die Ergebnisse bei meiner Website von SysCP-ng wo sich die Requests pro Sekunde verdoppelten von 20 auf 40. Selbst bei der von mir gehosteten Seite von Propel konnte ich [...]


Verwandte Artikel:<ol><li><a href='http://www.boerngen-schmidt.de/2009/09/apache-itk-mit-mod_php-und-eingener-php-ini/' rel='bookmark' title='Permanent Link: <!--:de-->Apache ITK mit mod_php und eingener php.ini<!--:--><!--:en-->Apache2 ITK with mod_php and own php.ini<!--:-->'><!--:de-->Apache ITK mit mod_php und eingener php.ini<!--:--><!--:en-->Apache2 ITK with mod_php and own php.ini<!--:--></a> <small>Die ganze Zeit habe ich PHP als FastCGI über mod_fcgid...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Um noch mehr Potenzial aus meinem Apache zu kitzel habe ich mich etwas mit mod_mem_cache beschäftigt und muss sagen das Ergebnis gefällt mir.</p>
<p>Besonders auffällig waren die Ergebnisse bei meiner Website von SysCP-ng wo sich die Requests pro Sekunde verdoppelten von 20 auf 40. Selbst bei der von mir gehosteten Seite von Propel konnte ich einen Performanzzuwachs verzeichnen, obwohl dieser eher gering ausfiel mit einer Steigerung von 28 auf 31 Requests pro Sekunde. Den niedrigen Zuwachs kann man aber durch die größere Datenbank des Propel Tracs erklären.</p>
<p>Getestet wurde mit Apache Benchmark (ab) mit folgendem Kommando lokal auf dem Webserver.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ab <span style="color: #660033;">-n</span> <span style="color: #000000;">300</span> <span style="color: #660033;">-c</span> <span style="color: #000000;">5</span> http:<span style="color: #000000; font-weight: bold;">//</span>URL<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Die Konfiguration der vHosts wurde wie folgt erweitert</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">IfModule</span> mod_mem_cache.c&gt;
	CacheEnable mem /
	MCacheSize <span style="color: #ff0000;">32768</span>
	MCacheMaxObjectCount <span style="color: #ff0000;">100</span>
	MCacheMinObjectSize <span style="color: #ff0000;">1</span>
	MCacheMaxObjectSize <span style="color: #ff0000;">4096</span>
&lt;/<span style="color: #000000; font-weight:bold;">IfModule</span>&gt;</pre></div></div>

<p>Zwar ist die Cachegröße mit 32MB nicht sehr hoch angesetzt, aber im vergleich zu 4MB respektive 8MB war hier noch ein kleiner Preformanzzuwachs zu verzeichnen. Ob es Sinnvoll ist die Cachegröße zu erhöhen werden weitere Tests zeigen müssen. Als Literatur kann ich getrost die <a href="http://httpd.apache.org/docs/2.2/mod/mod_cache.html" target="_blank">Seite von mod_cache</a> empfehlen.</p>


<p>Verwandte Artikel:<ol><li><a href='http://www.boerngen-schmidt.de/2009/09/apache-itk-mit-mod_php-und-eingener-php-ini/' rel='bookmark' title='Permanent Link: <!--:de-->Apache ITK mit mod_php und eingener php.ini<!--:--><!--:en-->Apache2 ITK with mod_php and own php.ini<!--:-->'><!--:de-->Apache ITK mit mod_php und eingener php.ini<!--:--><!--:en-->Apache2 ITK with mod_php and own php.ini<!--:--></a> <small>Die ganze Zeit habe ich PHP als FastCGI über mod_fcgid...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2010/04/beschleunigen-von-apache-mit-mod_mem_cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mausbewegungen aufzeichnen</title>
		<link>http://www.boerngen-schmidt.de/2010/03/mausbewegungen-aufzeichnen/</link>
		<comments>http://www.boerngen-schmidt.de/2010/03/mausbewegungen-aufzeichnen/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 14:32:20 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Freeware]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Spaß]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=223</guid>
		<description><![CDATA[Gerade bei einem meiner Streifzüge durch das Internet bin ich auch ein lustiges Gimik gestoßen das sich IOGraphica nennet. Was tut dieses Tool? &#8211; Es zeichnet einfach die Mausbewegeungen auf und verwandelt diese in moderne Kunst Wo gibt es das Tool? &#8211; http://iographica.com/ Keine verwandten Artikel gefunden.


Keine verwandten Artikel gefunden.]]></description>
			<content:encoded><![CDATA[<p>Gerade bei einem meiner Streifzüge durch das Internet bin ich auch ein lustiges Gimik gestoßen das sich IOGraphica nennet.</p>
<p>Was tut dieses Tool? &#8211; Es zeichnet einfach die Mausbewegeungen auf und verwandelt diese in moderne Kunst</p>
<p>Wo gibt es das Tool? &#8211; <a title="IOGraphica" href="http://iographica.com/">http://iographica.com/</a></p>


<p>Keine verwandten Artikel gefunden.</p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2010/03/mausbewegungen-aufzeichnen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wiederherstellen von Mail.app nach Neuinstallation</title>
		<link>http://www.boerngen-schmidt.de/2010/03/wiederherstellen-von-mail-app-nach-neuinstallation/</link>
		<comments>http://www.boerngen-schmidt.de/2010/03/wiederherstellen-von-mail-app-nach-neuinstallation/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 12:48:11 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Macintosch]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=219</guid>
		<description><![CDATA[<!--:de-->Timemachine.app ist ein nettes kleines Programm um von seinem Mac ein Backup zu machen. Dennoch hatte ich bis jetzt immer das Problem, dass ich nicht wusste wie ich Mail.app wieder herstellen konnte, nachdem ich das System neuinstalliert hatte.<!--:-->


Verwandte Artikel:<ol><li><a href='http://www.boerngen-schmidt.de/2009/10/flashvideos-auf-dem-mac-ohne-hohe-cpu-auslastung/' rel='bookmark' title='Permanent Link: <!--:de-->Flashvideos auf dem Mac ohne hohe CPU Auslastung<!--:-->'><!--:de-->Flashvideos auf dem Mac ohne hohe CPU Auslastung<!--:--></a> <small>Jeder Mac Besitzer kennt das Problem, dass Mac OS X...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Im Prinzip ist es jedoch sehr einfach da es einfach. Es müssen nur ein Verzeichnis und eine Datei kopiert werden. Danach einfach wie gewohnt Mail.app starten und den Einrichtungsassistenten die E-Mails importieren lassen.</p>
<p>Zu kopieren vom Backup sind:</p>
<pre>&lt;Homedir&gt;/Library/Mail
&lt;Homedir&gt;/Library/Preferences/com.apple.mail.plist</pre>
<p>Danach müssen nur noch die Passwörter für die Accounts wieder eingegeben werden und alles sollte funktionieren.</p>


<p>Verwandte Artikel:<ol><li><a href='http://www.boerngen-schmidt.de/2009/10/flashvideos-auf-dem-mac-ohne-hohe-cpu-auslastung/' rel='bookmark' title='Permanent Link: <!--:de-->Flashvideos auf dem Mac ohne hohe CPU Auslastung<!--:-->'><!--:de-->Flashvideos auf dem Mac ohne hohe CPU Auslastung<!--:--></a> <small>Jeder Mac Besitzer kennt das Problem, dass Mac OS X...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2010/03/wiederherstellen-von-mail-app-nach-neuinstallation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flashvideos auf dem Mac ohne hohe CPU Auslastung</title>
		<link>http://www.boerngen-schmidt.de/2009/10/flashvideos-auf-dem-mac-ohne-hohe-cpu-auslastung/</link>
		<comments>http://www.boerngen-schmidt.de/2009/10/flashvideos-auf-dem-mac-ohne-hohe-cpu-auslastung/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 09:26:37 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Macintosch]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=215</guid>
		<description><![CDATA[Jeder Mac Besitzer kennt das Problem, dass Mac OS X ganz heftig etwas Adobes Flashplayer hat. Denn egal ob Safari, Firefox oder Opera die CPU Auslastung steigt und steigt, genau wie die Temperatur meines MacBook Pros. Jedoch kann man den Flashplayer auch einfach um gehen und einen anderen Player wie Quicktime oder VLC benutzen. Diese [...]


Keine verwandten Artikel gefunden.]]></description>
			<content:encoded><![CDATA[<p><!--:de-->Jeder Mac Besitzer kennt das Problem, dass Mac OS X ganz heftig etwas Adobes Flashplayer hat. Denn egal ob Safari, Firefox oder Opera die CPU Auslastung steigt und steigt, genau wie die Temperatur meines MacBook Pros.</p>
<p>Jedoch kann man den Flashplayer auch einfach um gehen und einen anderen Player wie Quicktime oder VLC benutzen. Diese können viel besser mit den Videoformaten hinter dem Flashplayer umgehen.<br />
Unser Rezept besteht also aus dem Safari Webbrowser und einem Player, der die entsprechende Datei abspielen kann.</p>
<ol>
<li> Webseite auf der das Video ist mit Safari öffenen und das Viedo laden lassem</li>
<li>Als nächstes über Fenster -&gt; Aktivität das Aktivitätsfenster von Safari öffnen</li>
<li>Dort suchen wie die größte Datei, respektive die die noch läd, selektieren sie mit der Maus und CMD + C kopiert den link</li>
<li>Danach den kopierten Link im Player öffnen (QT: CMD + U; VLC: CMD + N)</li>
</ol>
<p>Bei kleinen 20 Sekunden Filmen macht der Aufwand keinen Sinn, aber wenn ein Video doch ein paar Minuten länger dauert schon.<!--:--></p>


<p>Keine verwandten Artikel gefunden.</p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2009/10/flashvideos-auf-dem-mac-ohne-hohe-cpu-auslastung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache ITK mit mod_php und eingener php.iniApache2 ITK with mod_php and own php.ini</title>
		<link>http://www.boerngen-schmidt.de/2009/09/apache-itk-mit-mod_php-und-eingener-php-ini/</link>
		<comments>http://www.boerngen-schmidt.de/2009/09/apache-itk-mit-mod_php-und-eingener-php-ini/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 15:53:48 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=208</guid>
		<description><![CDATA[Die ganze Zeit habe ich PHP als FastCGI über mod_fcgid laufen gehabt und war eigentlich auch ganz zufrieden. Auf dem jetzigem Server war ich über die Performance aber doch sehr enttäuscht. So wurden durchschnittlich nur 0,49 Requests/Sek. verarbeitet, laut ab -n1000, was meiner Ansicht nach doch etwas sehr wenig ist. Darum habe ich mich entschlossen kurzer [...]


Verwandte Artikel:<ol><li><a href='http://www.boerngen-schmidt.de/2010/04/beschleunigen-von-apache-mit-mod_mem_cache/' rel='bookmark' title='Permanent Link: Beschleunigen von Apache mit mod_mem_cache'>Beschleunigen von Apache mit mod_mem_cache</a> <small>Um noch mehr Potenzial aus meinem Apache zu kitzel habe...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--:de-->Die ganze Zeit habe ich PHP als FastCGI über mod_fcgid laufen gehabt und war eigentlich auch ganz zufrieden. Auf dem jetzigem Server war ich über die Performance aber doch sehr enttäuscht. So wurden durchschnittlich nur <strong>0,49 Requests/Sek.</strong> verarbeitet, laut <em>ab -n1000,</em> was meiner Ansicht nach doch etwas sehr wenig ist. Darum habe ich mich entschlossen kurzer Hand wieder mod_php einzusetzen und siehe da, die Requests pro Sekunde sprangen auf <strong>1,89 Requests/Sek.</strong></p>
<h3>Apache ITK</h3>
<p>Da mir aber auch an Sicherheit gelegen ist soll PHP aber nicht als www_data respektive apache laufen. Außerdem fand ich es bei PHP als FastCGI doch sehr angenehm, dass man sich seine eigene <em>php.ini </em>anlegen konnte. Mit dem ITK Patch für Apache ist es möglich einem vHost einen Benutzer und eine Gruppe zu zuweisen unter welchem Sie laufen sollen, also wird nicht erst der PHP Prozess sondern direkt der vHost, respektive der Apache Prozess, unter diesem Benutzer ausgeführt. Einen schönen einführenden Artikel zu Apache ITK hat <a href="http://blog.stuartherbert.com/php/2008/04/19/using-mpm-itk-to-secure-a-shared-server/">Stuart Herbert</a> in seinem Blog geschrieben.</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">AssignUserID <span style="color: #00007f;">user</span> <span style="color: #00007f;">group</span></pre></div></div>

<p>Dies ist die einzige Ergänzung die im vHost gemacht werden muss um ihn einem speziellen Benutzer zu zuordnen.</p>
<p><strong>PHP mit eigener php.ini</strong></p>
<p><span style="text-decoration: line-through;">Wenn Apache ITK läuft brauch man nur noch mod_php zu aktivieren und PHP läuft nun auch unter dem angegebenem Benutzer, dennoch hat </span><em><span style="text-decoration: line-through;">mod_php</span></em><span style="text-decoration: line-through;"> die Eigenschaft eine gemeinsame </span><em><span style="text-decoration: line-through;">php.ini</span></em><span style="text-decoration: line-through;"> zu verwenden. Aber auch hierfür gibt es Abhilfe! Bei askapache.com gibt es einen netten Artikel über </span><a href="http://www.askapache.com/php/custom-phpini-tips-and-tricks.html"><span style="text-decoration: line-through;">Custom php.ini tips and tricks</span></a><span style="text-decoration: line-through;"> über den ich eine Lösung für das Problem der php.ini gefunden habe. Im vHost Container muss einfach folgende Direktive gesetzt werden:</span></p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">&lt;span style=<span style="color: #7f007f;">&quot;text-decoration: line-through;&quot;</span>&gt;PHPIniDir /path/to/php_ini/&lt;/span&gt;</pre></div></div>

<p><span style="text-decoration: line-through;">Nun wird die php.ini welche sich in diesem Verzeichnis befindet geladen.</span></p>
<p>Leider muss ich das oben geschriebene revidieren, da das Setting PHPIniDir nicht pro vHost sondern global gilt. Es scheint bis jetzt so, als wäre es nicht möglich mit mod_php für jeden vHost eine eigene php.ini festzulegen.</p>
<h3>Fazit</h3>
<p>Durch Apache ITK und einigen Einstellungen ist es möglich ein wesentlich performanteres PHP zu bekommen, dass zudem Vergleich zur FastCGI Variante auch noch mehr Features besitzt und nicht unter dem generellen Benutzers des Apache Webservers läuft.<!--:--></p>


<p>Verwandte Artikel:<ol><li><a href='http://www.boerngen-schmidt.de/2010/04/beschleunigen-von-apache-mit-mod_mem_cache/' rel='bookmark' title='Permanent Link: Beschleunigen von Apache mit mod_mem_cache'>Beschleunigen von Apache mit mod_mem_cache</a> <small>Um noch mehr Potenzial aus meinem Apache zu kitzel habe...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2009/09/apache-itk-mit-mod_php-und-eingener-php-ini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MKV in Quicktime X abspielenPlay MKV-Files using Quicktime X</title>
		<link>http://www.boerngen-schmidt.de/2009/08/play-mkv-using-quicktime-x/</link>
		<comments>http://www.boerngen-schmidt.de/2009/08/play-mkv-using-quicktime-x/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:36:43 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Macintosch]]></category>
		<category><![CDATA[Snow Leopard]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=205</guid>
		<description><![CDATA[Nachdem nun offiziell Snow Leopard erschienen ist war ich doch sehr gespannt wie genau sich die verschiedenen Neuerungen im alltäglichen Betrieb auswirken würden. Eines was mir auffiel war, dass Quicktime keine MKV Dateien mehr abspielt, selbst wenn man Perian installiert hat. In der Perian User Group habe ich einen netten Tipp gefunden der es ermöglicht [...]


Keine verwandten Artikel gefunden.]]></description>
			<content:encoded><![CDATA[<p><!--:de-->Nachdem nun offiziell Snow Leopard erschienen ist war ich doch sehr gespannt wie genau sich die verschiedenen Neuerungen im alltäglichen Betrieb auswirken würden. Eines was mir auffiel war, dass Quicktime keine MKV Dateien mehr abspielt, selbst wenn man <a href="http://perian.org/">Perian</a> installiert hat.</p>
<p>In der Perian User Group habe ich einen netten Tipp gefunden der es ermöglicht Quicktime X das abspielen von MKV Dateien zu ermöglichen. Dazu läd man sich den <a title="Nice Player Homepage" href="http://code.google.com/p/niceplayer/" target="_blank">NicePlayer</a> herunter, mountet das Image und führ diesen einmal aus. Nun ist auch Quicktime X in der Lage MKV Dateien anzuspielen.</p>
<p>Meine Vermutung wieso es nach dem einmaligem starten des NicePlayers auch Quicktime X möglich ist MKV Dateien abzuspielen ist, dass der NicePlayer die Datei ~/Library/Preferences/com.apple.quicktime.plugin.preferences.plist verändert und dort den MKV Kontainer als Videodatei einträgt. Bestätigen kann ich dies allerdings nicht, da ich die Datei nicht mehr im orginal Format habe.</p>
<p>Wie dem auch sei, viel spaß beim Film schauen.<!--:--><!--:en-->After Snow Leopard is now officially released I was eager to see how the various changes work out in day to day use. One thing I noticed right after installing Snow Leopard was, that Quicktime X is not able to play MKV files, even if you got <a href="http://perian.org/">Perian</a> installed.</p>
<p>On the Perian User Group I have found a very nice Tip how to enable Quicktime X to play MKV files again. To do so you need to download <a title="Nice Player Homepage" href="http://code.google.com/p/niceplayer/" target="_blank">NicePlayer</a>, mount the Image and open it once. Now you can close and delete NicePlayer and open MKV files with Quicktime X again.</p>
<p>My assumption why it is possible to play MKV files again with Quicktime X after launching NicePlayer once is, that NicePlayer adds the MKV Container as videofile to ~/Library/Preferences/com.apple.quicktime.plugin.preferences.plist. But since I don&#8217;t have the original file anymore I can not verify this thesis.</p>
<p>Anyway have fun playing MKV files with Quicktime again.<!--:--></p>


<p>Keine verwandten Artikel gefunden.</p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2009/08/play-mkv-using-quicktime-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Der Agavi Filter VersuchPlaying with Agavi Filters</title>
		<link>http://www.boerngen-schmidt.de/2009/08/der-agavi-filter-versuch/</link>
		<comments>http://www.boerngen-schmidt.de/2009/08/der-agavi-filter-versuch/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 14:58:19 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Agavi]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.boerngen-schmidt.de/?p=169</guid>
		<description><![CDATA[Die Filter von Agavi sind ein mächtiges Werkzeug, wenn man weiß wie man sie einsetzen kann. Leider weiß ich das noch nicht so genau, werde mich aber heute im laufe des Artikel Schreibens damit beschäftigen.

Grundlegend kann man bei den Filtern in Globale und Action Filter unterscheiden welche wie eine Zwiebel aufgebaut sind und sich gegenseitig nach und nach aufrufen.


Keine verwandten Artikel gefunden.]]></description>
			<content:encoded><![CDATA[<p><!--:de--><br />
<h3>Generelles zu Filtern</h3>
<p>In der kleinen AsciiArt unten kann man erkennen wie Filter funktionieren. Von links kommt das Request an die Applikation, dieses wird vom Dispatcher bearbeitet, der das Request und seine Daten durch die Globalen Filter schickt, diese leiten es dann an die entsprechende Action weiter, welche wiederum das ganz durch ihre eigenen Filter schickt. Jetzt wird erst das Output generiert und die Filter werden danach in umgekehrter Reihenfolge wieder durchlaufen.</p>
<div id="attachment_174" class="wp-caption aligncenter" style="width: 479px"><img class="size-full wp-image-174 " title="Agavi_Filter" src="http://www.boerngen-schmidt.de/wp-content/uploads/2009/08/Agavi_Filter.gif" alt="Agavi's Filters are like an Onion" width="469" height="240" /><p class="wp-caption-text">Agavi&#39;s Filter sind wie eine Zwiebel</p></div>
<p>Bei allen Filtern ist es so, dass die <strong>Auflistung die Reihenfolge der Ausführung</strong> bestimmt. Weiter unten ein kleines Beispiel dazu.</p>
<h3>Globale Filter</h3>
<p><strong>Was sind globale Filter?</strong> &#8211; Globale Filter gelten für das Request an die Applikation. Als Beispiel kann hier der FormPopulationFiler dienen. Dieser Filter ist in der Lage eine HTML mit Werten zu füllen, was aber erst gemacht werden kann, nachdem das ganze Request durchgelaufen ist und das Output generiert worden ist. Somit ist es möglich in dem Request weitere ActionContainer zu kreieren und weiter Actions auszuführen.</p>
<p>Die Konfiguration der Globalen Filter findet in der global_filter.xml im Konfigurationsverzeichnis der Applikation statt. Hierbei bestimmt die Reihenfolge in welcher sie in der Datei aufgelistet werden in welcher Reihenfolge sie ausgeführt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;FirstFilter&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;SecondFilter&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Hier würde der Filter mit dem Namen <em>FirstFilter</em> zuerst, danach dann der <em>SecondFilter</em> ausgeführt. Die Globalen Filter werden vom Controller geladen und auf gerufen. Hierbei gilt, dass der Controller explizit den Filter <em>AgaviDispatchFilter</em> registriert und ihn dann gleich danach aufruft. In diesem wird das Response gesetzt, aus dem was noch kommt.</p>
<h3>Action Filter</h3>
<p>Action Filter sind, wie der Name auch schon sagt, für die Action gedacht. Die Grafik oben verdeutlicht dieses sehr gut. Eine <em>Action</em> generiert uns ja in der passenden <em>View</em> das Output, welches vor der Ausgabe dann noch mit dem <em>FormPopulationFilter</em> bearbeitet wird.</p>
<p>Bei den Action Filtern gibt es eine Besonderheit. Zum einen gibt es die Action Filter, die für jede Action aufgerufen werden und Spezial Action Filter die nur für eine bestimmt Action aufgerufen werden. Die Spezialfilter werden im <em>app/Modulverzeichnis/config/action_filters.xml</em> spezifiziert. Die Filter die für alle Actions gelten sollen werden in <em>app/config/action_filters.xml</em> spezifiziert.<br />
Zur der Reihenfolge der Ausführung ist zu sagen, dass erst die generellen und dann die speziellen.</p>
<p>Noch etwas sehr wichtiges, dass man bei dem entwerfen eines Action Filters nicht vergessen darf, ist das jeder Slot, jede ForwardAction ihre eigene FilterChain hat, welche die Filter nochmal durchläuft. Deswegen gibt es zwei Verschiedene Methoden in der Klasse. Die eine, <strong>executeOnce</strong>, wird immer für die &#8220;main&#8221; Action auf gerufen, die andere <strong>execute</strong> wird dann in den restlichen FilterChains auf gerufen. Sollte man aber wollen, dass der Filter beim ersten bis zum letzten Aufruf immer gleich aufgerufen wird, bedient sich die Klasse <em>AgaviFilter</em> dem Trick, dass executeOnce einfach execute aufruft. ExecuteOnce muss als explizier überschrieben werden.</p>
<h3>Aufbau eines Filters</h3>
<p>Filter sollten immer die Klasse <em>AgaviFilter</em> erweitern. Dort sind schon einmal die grundlegenden Funktionen definiert wie die oben beschriebene executeOnce Methode.</p>
<p>In dem nachfolgenden Beispiel implementieren wir die Klasse FooBarFilter. Diese kann entweder wie im Beispiel ein Klasse sein die sowohl Global als aus Action Filter ist oder nur eines von beiden. (Hier ist es zu Demonstrationszwecken so gewählt)</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: #000000; font-weight: bold;">class</span> FooBarFilter <span style="color: #000000; font-weight: bold;">extends</span> AgaviFilter implements AgaviIActionFilter<span style="color: #339933;">,</span> AgaviIGlobalFilter <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> executeOnce<span style="color: #009900;">&#40;</span>AgaviFilterChain <span style="color: #000088;">$filterChain</span><span style="color: #339933;">,</span> AgaviExecutionContainer <span style="color: #000088;">$container</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">/* Stuff to be done before the Rest of filters and Output generation is executed */</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/* Now we continue with the other filters. THIS MUST BE DONE!!! */</span>
    <span style="color: #000088;">$filterChain</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$container</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/* now to the Stuff which needs to be done afterwards. ie. Output transformation etc. */</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Das Beispiel oben hat zu dem nur die Methode executeOnce, was also heißt das der Filter pro Kontext nur einmal ausgeführt würde.</p>
<p>Weiter Infos zu und um Agavi gibt es auf <a title="Agavi" href="http://www.agavi.org" target="_blank">http://www.agavi.org</a>. Auch zu empfehlen ist der <a href="http://www.mivesto.de/agavi/agavi-faq.html" target="_blank">Agavi FAQ</a> in dem einige interessante Themen rund um Agavi behandelt werde.<!--:--><!--:en--><br />
<h3 style="font-size: 1.17em;">ENGLISH TRANSLATION WILL FOLLOW!</h3>
<h3 style="font-size: 1.17em;">Generelles zu Filtern</h3>
<p>In der kleinen AsciiArt unten kann man erkennen wie Filter funktionieren. Von links kommt das Request an die Applikation, dieses wird vom Dispatcher bearbeitet, der das Request und seine Daten durch die Globalen Filter schickt, diese leiten es dann an die entsprechende Action weiter, welche wiederum das ganz durch ihre eigenen Filter schickt. Jetzt wird erst das Output generiert und die Filter werden danach in umgekehrter Reihenfolge wieder durchlaufen.</p>
<div style="text-align: center;">
<dl id="attachment_174" style="display: block; margin-left: auto; margin-right: auto; text-align: center; background-color: #f3f3f3; padding-top: 4px; margin-top: 10px; margin-bottom: 10px; -webkit-border-top-right-radius: 3px 3px; -webkit-border-top-left-radius: 3px 3px; -webkit-border-bottom-left-radius: 3px 3px; -webkit-border-bottom-right-radius: 3px 3px; width: 479px; border: 1px solid #dddddd;">
<dt><img style="padding: 0px; margin: 0px; border: 0px none initial;" title="Agavi_Filter" src="http://www.boerngen-schmidt.de/wp-content/uploads/2009/08/Agavi_Filter.gif" alt="Agavi's Filters are like an Onion" width="469" height="240" /></dt>
<dd style="font-size: 11px; line-height: 17px; padding-top: 0px; padding-right: 4px; padding-bottom: 5px; padding-left: 4px; margin: 0px;">Agavi&#8217;s Filter sind wie eine Zwiebel</dd>
</dl>
</div>
<p>Bei allen Filtern ist es so, dass die <strong>Auflistung die Reihenfolge der Ausführung</strong> bestimmt. Weiter unten ein kleines Beispiel dazu.</p>
<h3 style="font-size: 1.17em;">Globale Filter</h3>
<p><strong>Was sind globale Filter?</strong> &#8211; Globale Filter gelten für das Request an die Applikation. Als Beispiel kann hier der FormPopulationFiler dienen. Dieser Filter ist in der Lage eine HTML mit Werten zu füllen, was aber erst gemacht werden kann, nachdem das ganze Request durchgelaufen ist und das Output generiert worden ist. Somit ist es möglich in dem Request weitere ActionContainer zu kreieren und weiter Actions auszuführen.</p>
<p>Die Konfiguration der Globalen Filter findet in der global_filter.xml im Konfigurationsverzeichnis der Applikation statt. Hierbei bestimmt die Reihenfolge in welcher sie in der Datei aufgelistet werden in welcher Reihenfolge sie ausgeführt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;FirstFilter&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;SecondFilter&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Hier würde der Filter mit dem Namen <em>FirstFilter</em> zuerst, danach dann der <em>SecondFilter</em> ausgeführt. Die Globalen Filter werden vom Controller geladen und auf gerufen. Hierbei gilt, dass der Controller explizit den Filter <em>AgaviDispatchFilter</em>registriert und ihn dann gleich danach aufruft. In diesem wird das Response gesetzt, aus dem was noch kommt.</p>
<h3 style="font-size: 1.17em;">Action Filter</h3>
<p>Action Filter sind, wie der Name auch schon sagt, für die Action gedacht. Die Grafik oben verdeutlicht dieses sehr gut. Eine<em>Action</em> generiert uns ja in der passenden <em>View</em> das Output, welches vor der Ausgabe dann noch mit dem<em>FormPopulationFilter</em> bearbeitet wird.</p>
<p>Bei den Action Filtern gibt es eine Besonderheit. Zum einen gibt es die Action Filter, die für jede Action aufgerufen werden und Spezial Action Filter die nur für eine bestimmt Action aufgerufen werden. Die Spezialfilter werden im <em>app/Modulverzeichnis/config/action_filters.xml</em> spezifiziert. Die Filter die für alle Actions gelten sollen werden in<em>app/config/action_filters.xml</em> spezifiziert.<br />
Zur der Reihenfolge der Ausführung ist zu sagen, dass erst die generellen und dann die speziellen.</p>
<p>Noch etwas sehr wichtiges, dass man bei dem entwerfen eines Action Filters nicht vergessen darf, ist das jeder Slot, jede ForwardAction ihre eigene FilterChain hat, welche die Filter nochmal durchläuft. Deswegen gibt es zwei Verschiedene Methoden in der Klasse. Die eine, <strong>executeOnce</strong>, wird immer für die &#8220;main&#8221; Action auf gerufen, die andere <strong>execute</strong> wird dann in den restlichen FilterChains auf gerufen. Sollte man aber wollen, dass der Filter beim ersten bis zum letzten Aufruf immer gleich aufgerufen wird, bedient sich die Klasse <em>AgaviFilter</em> dem Trick, dass executeOnce einfach execute aufruft. ExecuteOnce muss als explizier überschrieben werden.</p>
<h3 style="font-size: 1.17em;">Aufbau eines Filters</h3>
<p>Filter sollten immer die Klasse <em>AgaviFilter</em> erweitern. Dort sind schon einmal die grundlegenden Funktionen definiert wie die oben beschriebene executeOnce Methode.</p>
<p>In dem nachfolgenden Beispiel implementieren wir die Klasse FooBarFilter. Diese kann entweder wie im Beispiel ein Klasse sein die sowohl Global als aus Action Filter ist oder nur eines von beiden. (Hier ist es zu Demonstrationszwecken so gewählt)</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: #000000; font-weight: bold;">class</span> FooBarFilter <span style="color: #000000; font-weight: bold;">extends</span> AgaviFilter implements AgaviIActionFilter<span style="color: #339933;">,</span> AgaviIGlobalFilter <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> executeOnce<span style="color: #009900;">&#40;</span>AgaviFilterChain <span style="color: #000088;">$filterChain</span><span style="color: #339933;">,</span> AgaviExecutionContainer <span style="color: #000088;">$container</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">/* Stuff to be done before the Rest of filters and Output generation is executed */</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/* Now we continue with the other filters. THIS MUST BE DONE!!! */</span>
    <span style="color: #000088;">$filterChain</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$container</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/* now to the Stuff which needs to be done afterwards. ie. Output transformation etc. */</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Das Beispiel oben hat zu dem nur die Methode executeOnce, was also heißt das der Filter pro Kontext nur einmal ausgeführt würde.</p>
<p>Weiter Infos zu und um Agavi gibt es auf <a title="Agavi" href="http://www.agavi.org" target="_blank">http://www.agavi.org</a>. Auch zu empfehlen ist der <a href="http://www.mivesto.de/agavi/agavi-faq.html" target="_blank">Agavi FAQ</a> in dem einige interessante Themen rund um Agavi behandelt werde.<!--:--></p>


<p>Keine verwandten Artikel gefunden.</p>]]></content:encoded>
			<wfw:commentRss>http://www.boerngen-schmidt.de/2009/08/der-agavi-filter-versuch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
