<?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>zeroseven labs &#187; DEVELOPMENT</title>
	<atom:link href="http://labs.zeroseven.de/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://labs.zeroseven.de</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 07:43:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Datei-Upload direkt im RTE</title>
		<link>http://labs.zeroseven.de/development/typo3/datei-upload-direkt-im-rte/</link>
		<comments>http://labs.zeroseven.de/development/typo3/datei-upload-direkt-im-rte/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 12:03:42 +0000</pubDate>
		<dc:creator>albrechtk</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Rich Text Editor]]></category>
		<category><![CDATA[RTE]]></category>
		<category><![CDATA[TSconfig]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1571</guid>
		<description><![CDATA[Der Rich-Text-Editor (RTE) in TYPO3 bietet dem Redakteur die Möglichkeit, Bilder einzubinden und auf Dateien zu verlinken. Dabei kann der Administrator definieren, ob der Redakteur diese Dateien auch gleich im RTE hochladen darf, oder ob er evtl. nur Dateien benutzen darf, die zuvor schon in das fileadmin-Verzeichnis geladen wurden.

Mit folgender Konfigurations-Möglichkeiten im User TSconfig lässt [...]]]></description>
			<content:encoded><![CDATA[<p>Der Rich-Text-Editor (RTE) in TYPO3 bietet dem Redakteur die Möglichkeit, Bilder einzubinden und auf Dateien zu verlinken. Dabei kann der Administrator definieren, ob der Redakteur diese Dateien auch gleich im RTE hochladen darf, oder ob er evtl. nur Dateien benutzen darf, die zuvor schon in das <code>fileadmin</code>-Verzeichnis geladen wurden.</p>
<p><span id="more-1571"></span></p>
<p>Mit folgender Konfigurations-Möglichkeiten im <code>User TSconfig</code> lässt sich der Upload im RTE-aktivieren:</p>
<pre>options.uploadFieldsInTopOfEB = 1</pre>
<p>Und diese Konfigurations-Option erlaubt es dem Benutzer dann sogar noch, auch direkt Ordner anzulegen, um die Uploads besser strukturieren zu können:</p>
<pre>options.createFoldersInEB = 1</pre>
<p>Sind beide Optionen gesetzt, erscheinen die Upload-Felder direkt im Dateiauswahl-Dialog des RTEs.</p>
<p><a href="http://labs.zeroseven.de/wp-content/uploads/2010/07/RTE-filelink.png" rel="lightbox[1571]"><img class="alignnone size-thumbnail wp-image-1573" src="http://labs.zeroseven.de/wp-content/uploads/2010/07/RTE-filelink-150x150.png" alt="" width="150" height="150" /></a> <a href="http://labs.zeroseven.de/wp-content/uploads/2010/07/RTE-image.png" rel="lightbox[1571]"><img class="alignnone size-thumbnail wp-image-1574" src="http://labs.zeroseven.de/wp-content/uploads/2010/07/RTE-image-150x150.png" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/typo3/datei-upload-direkt-im-rte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Empfehlung TYPO3-Extension: nc_staticfilecache</title>
		<link>http://labs.zeroseven.de/development/typo3/empfehlung-typo3-extension-ncstaticfilecache/</link>
		<comments>http://labs.zeroseven.de/development/typo3/empfehlung-typo3-extension-ncstaticfilecache/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 09:01:23 +0000</pubDate>
		<dc:creator>albrechtk</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1526</guid>
		<description><![CDATA[TYPO3 ist ein sehr mächtiges Content-Management-System, woraus sich in Bezug auf Flexibilität und Anpassbarkeit sehr viele Vorteile ergeben. Leider hat diese Mächtigkeit auch einen Nachteil: Beim Aufruf einer TYPO3-Seite muss der komplette TYPO3-Source vom Webserver geladen und geparst werden. Dazu kommen noch etliche Datenbankabfragen, bis die Seite aufgebaut ist und an den Browser gesendet werden [...]]]></description>
			<content:encoded><![CDATA[<p>TYPO3 ist ein sehr mächtiges Content-Management-System, woraus sich in Bezug auf Flexibilität und Anpassbarkeit sehr viele Vorteile ergeben. Leider hat diese Mächtigkeit auch einen Nachteil: Beim Aufruf einer TYPO3-Seite muss der komplette TYPO3-Source vom Webserver geladen und geparst werden. Dazu kommen noch etliche Datenbankabfragen, bis die Seite aufgebaut ist und an den Browser gesendet werden kann. Mit einem geschickten Einsatz der Extension <strong>nc_staticfilecache</strong> lässt sich dieser Umweg abkürzen und der komplette Internetauftritt extrem beschleunigen.</p>
<p><span id="more-1526"></span></p>
<h2 style="font-size: 1em;color: #000;font-weight: bold">Funktionsweise von nc_staticfilecache</h2>
<p>Die Extension generiert aus dynamisch erzeugten TYPO3-Seiten &#8211; vorausgesetzt, sie enthalten ausschließlich cachebare Elemente &#8211; statische HTML-Dokumente als exakte Kopien und legte diese auf dem Webserver ab. Voraussetzung dafür ist die Verwendung einer Extension, die TYPO3 um lesbare Pfade erweitert, wie z.B. <strong><a href="http://labs.zeroseven.de/development/typo3/empfehlung-typo3-extension-realurl/">realurl</a></strong> oder <strong>simulatestatic</strong>.</p>
<p>Durch eine Anpassung der <code>mod_rewrite</code>-Konfiguration wird dann bei jeden Seitenaufruf vom Webserver selbst geprüft, ob zu dieser Seite eine statische Variante gespeichert ist. Existiert diese statische Variante, wird diese direkt an den Client ausgeliefert, ohne dass TYPO3 ins Spiel kommt. Es muss kein PHP-Parser gestartet werden, kein TYPO3 geladen werden und keine Datenbankabfrage durchgeführt werden. Laut Eigenbeschreibung der Extension sind dazu Beschleunigungen bis zu 23000% möglich.</p>
<p>Um die Auslieferung von veraltetem Content zu verhindern, werden die statischen Dateien beim löschen des Frontend-Caches mit gelöscht. Darüber hinaus sollte auch noch ein Cron-Job eingerichtet werden, wie im Extension-Handbuch beschrieben. Dieser löscht die statischen HTML-Seiten automatisch nach ihrer definierten Lebensdauer. Diese Lebensdauer entspricht der im Backend eingestellten Cache-Dauer, die zu jeder Seite in den Seiteneigenschaften vorgenommen werden können.</p>
<h2 style="font-size: 1em;color: #000;font-weight: bold">TYPO3-Auftritt mit nc_staticfilecache beschleunigen</h2>
<p>Der leichteste Schritt ist die Installation der Extension über den TYPO3-Extension-Manager. Anschließend ist im Modul &#8220;Web &gt; Info&#8221; der neue Punkt &#8220;Statischer HTML Cache&#8221; verfügbar. Hier ist ersichtlich, welche Seiten gecached wurden bzw. warum einzelne Seiten nicht gecached wurden.</p>
<p>Die Meldung <code>config.no_cache is true</code> zeigt an, dass die komplette Seite nicht gecached werden kann. Das kann mehrere Gründe haben:
<ol>
<li>Caching in den Seiteneigenschaften deaktiviert</li>
<li>Caching im TypoScript deaktiviert (<code>config.no_cache = 1</code>)</li>
<li>eine Extension deaktiviert das Caching für diese Seite (<code>$GLOBALS['TSFE']-&gt;set_no_cache()</code>)</li>
</ol>
<p>Die Meldung <code>page has INTincScript</code> zeigt an, dass einzelne Elemente nicht gecached werden können. Das können z.B. Plugins sein, die als <code>USER_INT</code> anstatt als <code>USER</code> geladen werden oder TypoScript-Elemente, die vom Typ <code>COA_INT</code> anstatt vom Typ <code>COA</code> sind. Ein Hilfsmittel, um die <code>INT</code>-Elemente ausfindig machen zu können, ist der &#8220;TypoScript-Objekt-Browser&#8221;, der sich im Modul &#8220;Web &gt; Template&#8221; einsehen lässt, sobald eine Seite im Seitenbaum ausgewählt wurde.<br />
Ist ein <code>INT</code>-Objekt ausfindig gemacht, gilt es zu überlegen, ob sich das Caching für dieses Element nicht evtl. doch erlauben lässt. Ist dies der Fall, kann der Typ via TypoScript geändert werden:</p>
<pre>	# noncacheable INT objects
plugin.user_myextension = USER_INT
lib.mytyposcriptobject = COA_INT

	# cacheable objects
plugin.user_myextension = USER
lib.mytyposcriptobject = COA</pre>
<p>Nachdem die Extension installiert ist, und die Seiten als statische Kopien auf dem Webserver abgelegt werden, muss noch die <code>mod_rewrite</code>-Konfiguration angepasst werden. Eine Beispiel-Konfiguration dazu befindet sich in Extension-Handbuch. Diese muss aber je nach Serverumgebung und <strong><a href="http://labs.zeroseven.de/development/typo3/empfehlung-typo3-extension-realurl/">realurl</a></strong>- bzw. <strong>simulatestatic</strong>-Konfiguration noch angepasst werden.</p>
<h2 style="font-size: 1em;color: #000;font-weight: bold">Fazit</h2>
<p>Durch einen geschickten Einsatz der Extension &#8220;<strong>nc_staticfilecache</strong>&#8221; lässt sich der TYPO3-Auftritt extrem beschleunigen und die Serverlast deutlich reduzieren. Voraussetzung dafür ist jedoch ein durchdachter Einsatz von nicht-cachebaren <code>INT</code>-Elementen, die es zu vermeiden gilt. Schließlich kann ein einziges Plugin, das nicht gecached werden darf, schon den kompletten Einsatz der Extension verhindern.</p>
<p>Die Extension &#8220;<strong>nc_staticfilecache</strong>&#8221; ist in ihrer aktuellsten Version über das <a href="http://typo3.org/extensions/">Extension Repository</a> erhältlich.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/typo3/empfehlung-typo3-extension-ncstaticfilecache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schnelle Fourier-Transformation (1D + 2D) für ActionScript</title>
		<link>http://labs.zeroseven.de/development/actionscript-development/schnelle-fourier-transformation-1d-2d-fur-actionscript/</link>
		<comments>http://labs.zeroseven.de/development/actionscript-development/schnelle-fourier-transformation-1d-2d-fur-actionscript/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 12:36:43 +0000</pubDate>
		<dc:creator>alexanders</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[computeSpectrum]]></category>
		<category><![CDATA[extract]]></category>
		<category><![CDATA[fourier]]></category>
		<category><![CDATA[schnelle]]></category>
		<category><![CDATA[Sound]]></category>
		<category><![CDATA[Transformation]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1510</guid>
		<description><![CDATA[Wie schon in einem älteren Beitrag (SoundMixer.computeSpectrum() vs. Sound.extract()) von mir beschrieben, gibt es (noch immer) ein Problem mit der computeSpectrum Methode des SoundMixers. Diese Methode zum Auslesen des Spektrums ist an sich eine schöne Funktion, gehört aber dem SoundMixer. Dieser ist eine globale Flash-Klasse, was einige Probleme mit sich bringt. Nutzt man diese Funktion [...]]]></description>
			<content:encoded><![CDATA[<p>Wie schon in einem älteren Beitrag (SoundMixer.computeSpectrum() vs. Sound.extract()) von mir beschrieben, gibt es (noch immer) ein Problem mit der <code>computeSpectrum</code> Methode des SoundMixers. Diese Methode zum Auslesen des Spektrums ist an sich eine schöne Funktion, gehört aber dem SoundMixer. Dieser ist eine globale Flash-Klasse, was einige Probleme mit sich bringt. Nutzt man diese Funktion innerhalb eines SWFs und hat andere SWF, welche Sound beinhaltet offen, kommt es unweigerlich zu Sicherheitsfehlern und wirklich unschönen Geräuschen. </p>
<p><span id="more-1510"></span></p>
<p>Umgehen lässt sich dies mit Hilfe der der <code>extract()</code> Methode der Sound-Klasse. Hier wird das gesamte Frequenzspektum des Sounds augelesen und kann weiter verwendet werden. Aber es gibt einen gravierenden Unterschied bei beiden Mehtoden. Die computeSpectrum liefert von Haus aus eine schnelle Fourier Transformation mit. Hingegen liefert die <code>extract()</code>-Methode nur RAW-Daten zurück. Kurz zusammengefasst bedeutet dies, dass mit Hilfe der <code>computeSpectrum</code> die zurückgelieferten Frequenzen nach Bereich sortiert werden und bei der anderen Funktion eben nicht.</p>
<p>Klar könnte man hingehen und selbst eine einfache Sortierfunktion schreiben. Doch bei der etwas größeren Datenmenge die bewältigt werden muss, wird dies das Script auf jeden Fall verlangsamen. Eine Methode die verwendet werden kann zur Sortierung ist die Schnelle Fourier-Transformation, die auf der Diskreten Fourier-Transformation basiert. Aber leider gab es diese Funktion, wie gesagt, nur innerhalb der <code>computeSepctrum()</code> Methode.</p>
<p>Nun hat Eugene Zatepyakin sich die Mühe gemacht und eine Implementierung der schnellen Fourier-Transformation in ActionScript 3 geschrieben, die frei verfügbar bei Google-Code ist. Mit Hilfe dieser Klassen konnte ich, nach ein paar Tests, den SoundVisualizer mit der Funktionalität zur Sortierung der Sound Daten erweitern, ohne die oben kurz angerissenen Probleme wieder aufzureißen. </p>
<p>Die Implementierung ist, wie Eugene sie auch beschreibt, sehr einfach. Für die Verwendung mit Sound wird die FFT-Klasse verwendet. Des weiteren gibt es noch die FFT2D-Klasse, welche die Möglichkeit eine zweidimensionale Transforation durchzuführen bietet, wie sie etwa bei Bildern Verwendung findet. Bei der Initialisierung der Klasse mit deren init()-Methode sollte man auch nicht über 2048 Bytes gehen, da sonst wiederum die Performance leidet. Besonders ist darauf zu achten, dass die Anzahl der ausgelesenen Bytes über die <code>extract</code>-Methode mit der bei der init Methode übereinstimmt.</p>
<p>Der eingentliche Analyzer ist in der FFTSpectrumAnalyzer-Klasse. Hier wird in der initLogarithmicAverages-Methode zunächst die Mindestbandbreite angegeben und die Anzahl an Bändern, in die eine Oktave unterteilt werden soll.<br />
Sehr wichtig ist auch die Einstellung &#8220;Little Endian&#8221; für den ByteArray, welcher die resultierenden Daten hält. Innerhalb des onSampleDataEvent-Handlers werden die ausgelesenen Bytes dann der fft-Klass mittels <code>setStereoRAWDataByteArray(bytes)</code> mitgegeben, um dann anschließend die <code>forwardFFT()</code> aufzurufen, welche die eigentliche Transformation ausführt. <code>fftHelp.analyzeSpectrum()</code> liefert dann den analysierten ByteArray, welcher dann weiter benutzt werden kann für alle möglichen visuellen Ausgaben, zurück. Noch ist hier der Sound selbst noch nicht ausgegeben. Dafür müssen die Bytes zurück transformiert werden über <code>fft.inverseFFT()</code>. Nach dem Zurücksetzen der Position innerhalb des BytesArrays können nun die SoundBytes an <code>event.data</code> zur Ausgabe übergeben werden. Den genauen Ablauf der Funktionen kann man auch auf Google Code nachlesen. Hier hat Eugene zwei Beispielscripts eingefügt. Und als anschauliches Beispiel für die Verwendung seiner Bibliothek einfach den zeroseven SoundVisualizer anschauen. Hier ist im letzten Reiter eine weitere Checkbox, in der man angeben kann, ob die Daten sortiert (FFT) oder unsortiert (RAW) verwendet werden sollen.</p>
<p>Links:</p>
<ul>
<li>
Vergleich computeSpectrum und extract: <a href="http://labs.zeroseven.de/development/actionscript-development/soundmixer-computespectrum-vs-sound-extract-2/">http://labs.zeroseven.de/development/actionscript-development/soundmixer-computespectrum-vs-sound-extract-2/</a>
</li>
<li>
Wikipediaeintrag zur Schnellen Fourier-Transformation: <a href="http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation">http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation</a>
</li>
<li>
Wikipediaeintrag zur Diskreten Fourier-Transformation: <a href="http://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation">http://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation</a>
</li>
<li>
Eugenes Blog zu ASFFT: <a href="http://blog.inspirit.ru/?p=405">http://blog.inspirit.ru/?p=405</a>
</li>
<li>
Eugenes Blog zu Update von ASFFT: <a href="http://blog.inspirit.ru/?p=410">http://blog.inspirit.ru/?p=410</a>
</li>
<li>
Google Code Seite: <a href="http://code.google.com/p/in-spirit/wiki/ASFFT">http://code.google.com/p/in-spirit/wiki/ASFFT</a>
</li>
<li>
Beispiel zur Verwendung von ASFFT: <a href="http://visualizer.zeroseven.de">http://visualizer.zeroseven.de</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/actionscript-development/schnelle-fourier-transformation-1d-2d-fur-actionscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starten von Systemprozessen in AIR 2.0</title>
		<link>http://labs.zeroseven.de/development/air/starten-von-systemprozessen-in-air-2-0/</link>
		<comments>http://labs.zeroseven.de/development/air/starten-von-systemprozessen-in-air-2-0/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 07:01:26 +0000</pubDate>
		<dc:creator>juergenm</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AIR 2.0]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[NativeProcess]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1504</guid>
		<description><![CDATA[Eine der Neuerungen von AIR 2.0 ist die NativeProcess API, die es ermöglicht mit Systemprozessen zu interagieren und somit Systemanwendungen zu starten und zu beenden. Diese API bietet eine Menge von neuen Möglichkeiten für AIR-Applikationen. In diesem Blogeintrag werde ich zeigen wie aus AIR Firefox gestartet werden kann.

Native Installers
AIR Applikationen können nicht nur als *.air [...]]]></description>
			<content:encoded><![CDATA[<p>Eine der Neuerungen von AIR 2.0 ist die NativeProcess API, die es ermöglicht mit Systemprozessen zu interagieren und somit Systemanwendungen zu starten und zu beenden. Diese API bietet eine Menge von neuen Möglichkeiten für AIR-Applikationen. In diesem Blogeintrag werde ich zeigen wie aus AIR Firefox gestartet werden kann.</p>
<p><span id="more-1504"></span></p>
<p><strong>Native Installers</strong><br />
AIR Applikationen können nicht nur als *.air Dateien exportiert und weitergegeben werden, sondern auch als &#8220;Native Installer&#8221; also *.exe für Windows bzw. *.dmg für MacOS. Dies ist die Voraussetzung um mit Systemprozessen kommunizieren zu können. Ein weiterer Vorteil von Native Installers ist, dass die AIR Runtime mit der Applikation installiert wird, falls diese noch nicht auf dem System des Benutzers verfügbar ist und eine Internetverbindung besteht. Falls der Benutzer nicht mir dem Internet verbunden ist, kommt wenigstens eine Meldung man solle sich doch bitte die aktuelle AIR runtime von der Adobe Seite herunterladen. Weiterhin gibt es die Möglichkeit die AIR Runtime zum Beispiel auf einer CD/DVD mitzuliefern, dafür ist allerdings eine <a href="http://www.adobe.com/products/air/runtime_distribution1.html#license">Re-Destributable Lizenz</a> von Adobe nötig, <a href="http://www.mikechambers.com/blog/2008/04/07/redistributing-the-adobe-air-runtime-installer/">siehe Blogeintrag von Mike Chambers</a>.</p>
<p><strong>Erstellen eines Native Installers</strong><br />
Da man aus FlashBuilder standardmäßig nur *.air Files exportieren kann müssen hier auf die Konsole zurückgreifen. Das Packagingprogramm hierfür heißt ADT und befindet sich im bin Ordner des AIR sdks. Es gibt grundsätzlich zwei verschiedene Arten Native Installers zu erstellen: </p>
<ul>
<li>aus dem Sourcecode eines AIR Projekts</li>
<li>aus einer bereits bestehenden AIR Datei</li>
</ul>
<p>Dieser Aufruf erstellt eine Anwendung mit Native Installer für MacOS aus den Quelldaten der Applikation.</p>
<pre>adt -package -storetype pkcs12 -keystore myCert.pfx -target native myApp.dmg main-app.xml main.swf</pre>
<p>Folgender Aufruf erstellt eine Anwendung mit Native Installer für MacOS aus einer AIR Datei</p>
<pre>adt -package -target native myApp.dmg myApp.air</pre>
<p>Um einen Native Installer für Windows zu erstellen wird einfach anstatt myApp.dmg myApp.exe verwendet. Einschränkung: Native Installers können immer nur für das Betriebssystem erstellt werden das gerade genutzt wird. Will mal also ein *.exe für Windows erstellen muss ADT unter Windows aufgerufen werden.</p>
<p>Mehr Infos dazu auf der <a href="http://help.adobe.com/en_US/air/build/WS789ea67d3e73a8b22388411123785d839c-8000.html">Adobe Hilfe</a>.</p>
<p><strong>NativeProcess API</strong><br />
Die <a href="http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/desktop/NativeProcess.html">NativeProcess</a> Klasse bietet die Möglichkeit mit einem Systemprozess zu interagieren. Über die Funktionen <code>start(info:NativeProcessStartupInfo):void</code> und <code>exit(force:Boolean  = false):void</code> werden Prozesse gestartet und beendet. Über die Eigenschaften <code>running</code>, <code>standardError</code>, <code>standardInput</code> und <code>standardOutput</code> kann der Prozess überwacht werden.</p>
<p>Der Funktion <code>start()</code> wird eine <a href="http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/desktop/NativeProcessStartupInfo.html">NativeProcessStartupInfo</a> Objekt übergeben das Informationen zum Prozess enthält der gestartet werden soll. Die Eigenschaft <code>executable</code> muss eine Referenz auf die Datei enthalten die gestartet werden soll und über <code>arguments</code> kann eine Vector von Strings<br />
mit Parametern angegeben werden.</p>
<pre>var file = new File('/Applications/Firefox.app/Contents/MacOS/firefox-bin');
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);</pre>
<p>Dies ist nur ein kleines Beispiel das natürlich beliebig erweiter werden kann. Schön ist auf jeden Fall, dass sich dadurch ganz neue Möglichkeiten für AIR Applikationen auftun. Der große Nachteil von AIR bleibt aber weiterhin, dass die AIR Runtime auf jeden Fall installiert werden muss, es ist also zum Beispiel kein Starten von CD möglich.</p>
<p>Links und weitere Beispiele:</p>
<ul>
<li><a href="http://www.adobe.com/devnet/air/flex/quickstart/interacting_with_native_process.html">Adobe DevNet: Interacting with a native process</a></li>
<li><a href="http://help.adobe.com/en_US/air/build/WS789ea67d3e73a8b22388411123785d839c-8000.html">Adobe Help: Packaging an AIR application in a native installer</a></li>
<li><a href="http://www.mikechambers.com/blog/2008/04/07/redistributing-the-adobe-air-runtime-installer/">Mike Chambers: Redistributing the Adobe AIR Runtime Installer</a></li>
<li><a href="http://www.adobe.com/products/air/runtime_distribution1.html#license">Adobe: Distribute Adobe® AIR® Runtime</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/air/starten-von-systemprozessen-in-air-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VEYTON-Hooks: Shop oder Adminbereich?</title>
		<link>http://labs.zeroseven.de/development/online-shops/veyton-hooks-shop-oder-adminbereich/</link>
		<comments>http://labs.zeroseven.de/development/online-shops/veyton-hooks-shop-oder-adminbereich/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 09:47:09 +0000</pubDate>
		<dc:creator>albrechtk</dc:creator>
				<category><![CDATA[Online-Shops]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1500</guid>
		<description><![CDATA[Der Online-Shop VEYTON lässt sich durch das Hook-Konzept wunderbar erweitern. Doch die Hooks sind nicht sauber in Frontend- und Backend-Hooks getrennt. Einige Hooks werden sowohl vom Shop, als auch vom Adminbereich benutzt. Will man unterschiedliche Funktionen für Shop und Adminbereich realisieren, lässt sich ganz leicht im PHP-Script überprüfen, von wo aus der Hook aufgerufen wird.

Die [...]]]></description>
			<content:encoded><![CDATA[<p>Der Online-Shop VEYTON lässt sich durch das Hook-Konzept wunderbar erweitern. Doch die Hooks sind nicht sauber in Frontend- und Backend-Hooks getrennt. Einige Hooks werden sowohl vom Shop, als auch vom Adminbereich benutzt. Will man unterschiedliche Funktionen für Shop und Adminbereich realisieren, lässt sich ganz leicht im PHP-Script überprüfen, von wo aus der Hook aufgerufen wird.</p>
<p><span id="more-1500"></span></p>
<p>Die PHP-Konstante <code>USER_POSITION</code> wird vom Adminbereich auf den Wert <code>admin</code> gesetzt und vom Shop auf den Wert <code>store</code>. Sollen also Aktionen entweder nur im Shop oder nur im Adminbereich ausgeführt werden, lässt sich das mit einer einfachen if-Anweisung regeln.</p>
<pre>if(USER_POSITION == 'admin') {
	// do some action
}

if(USER_POSITION == 'store') {
	// do some action
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/online-shops/veyton-hooks-shop-oder-adminbereich/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX im TYPO3-Frontend</title>
		<link>http://labs.zeroseven.de/development/typo3/ajax-im-typo3-frontend/</link>
		<comments>http://labs.zeroseven.de/development/typo3/ajax-im-typo3-frontend/#comments</comments>
		<pubDate>Fri, 14 May 2010 12:03:19 +0000</pubDate>
		<dc:creator>albrechtk</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Conditions]]></category>
		<category><![CDATA[eID]]></category>
		<category><![CDATA[TypoScript]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1480</guid>
		<description><![CDATA[AJAX ist was feines für den Besucher, alles fühlt sich schneller und flüssiger an. Für den Entwickler kann es manchmal aber eher mühsam sein. Man braucht die Javascript-Funktionalität und die Server-Funktionalität. Hier im Artikel will ich kurz anreißen, wie die Server-Funktionalität elegant in TYPO3 integriert und die Vorteile, die TYPO3 hier mitbringt, genutzt wird.

AJAX mit [...]]]></description>
			<content:encoded><![CDATA[<p>AJAX ist was feines für den Besucher, alles fühlt sich schneller und flüssiger an. Für den Entwickler kann es manchmal aber eher mühsam sein. Man braucht die Javascript-Funktionalität und die Server-Funktionalität. Hier im Artikel will ich kurz anreißen, wie die Server-Funktionalität elegant in TYPO3 integriert und die Vorteile, die TYPO3 hier mitbringt, genutzt wird.</p>
<p><span id="more-1480"></span></p>
<h2 style="font-size:1em;color:#000;font-weight:bold">AJAX mit eID-Machanismus</h2>
<p>Mit dem integrierten eID-Mechanismus von TYPO3 ist es möglich, eigene PHP-Scripte ohne großen Overhead aufzurufen. Instanziert wird dabei nur alles, was man unbedingt braucht oder will. Der Nachteil dabei ist jedoch, das viele interne TYPO3-Bordmittel nicht zur Verfügung stehen. So müssen z.B. für die Spracherkennung oder wenn TypoScript-Bedingungen beachtet werden sollen, komplizierte Workarounds integriert werden. Dadurch wird das anfänglich schlanke Script schnell aufgebläht und unübersichtlich. Und im schlimmsten Fall entstehen dadurch sogar Sicherheitslücken, beispielsweise dann wenn es dem Benutzer Möglich ist, über das AJAX-Backends Daten abzufragen für die er in seiner Benutzergruppe ggf. gar keine Berechtigung haben sollte.<br />
Der eID-Mechanismus ist also meiner Meinung nach für einfache und unkomplizierte Abfragen geeignet. Kommen aber irgendwelche Bedingungen ins Spiel, von denen die Abfrage abhängig sein sollte, empfehle ich eine andere Herangehensweise.</p>
<h2 style="font-size:1em;color:#000;font-weight:bold">AJAX mit eigenem Seiten-Typ</h2>
<p>Wer schon einmal ein TYPO3-Projekt erstellt hat, kennt die Seiten-Typen vermutlich von der Druckansicht. Oftmals wird mit <code>typeNum=98</code> ein Page-Objekt für die Druckansicht definiert, dass sich dann mit einem angehängten Parameter (z.B. <em>http://www.example.com/index.php?id=1&amp;<strong>type=98</strong></em>) aufrufen lässt und eine völlig andere Ansicht der Webseite offenbart.<br />
Genau dieses Feature lässt sich auch nutzen, um ein z.B. ein eigenes Extension-Plugin mit einem definierten Seiten-Typ zu verknüpfen. Hier im Beispiel erzeugen wir mit <code>myajax</code> ein neues Objekt vom Typ <code>PAGE</code>. Mit <code>typeNum = 789</code> wird dann eine alternative Typ-Nummer vergeben. Und nach ein paar Beispielkonfigurationen wird dann noch das Plugin als einziger Content eingebunden.</p>
<p>Unser Plugin ist dann direkt über <em>http://www.example.de/index.php?id=23&amp;L=1&amp;<strong>type=789</strong></em> erreichbar und liefert automatisch die korrekten Ergebnisse, abhänig vom gesetzten Sprachparameter, der gewählten Seite und den aktuellen Berechtigungen des Benutzers. (Die Parameter <em>id</em> und <em>L</em> im Beispiellink sind natürlich variabel und hier nur als Beispiel gesetzt.)</p>
<pre>	# prepare alternative page type
myajax = PAGE
myajax.typeNum = 789
myajax.config {
	disableAllHeaderCode = 1
	additionalHeaders = Cache-Control: no-cache, must-revalidate, max-age=0|Expires: Mon, 2 Jan 2006 01:00:00 GMT|Pragma: no-cache
	xhtml_cleaning = 0
}
	# register plugin directly as page content
myajax.10 &lt; plugin.user_myajaxplugin_pi1</pre>
<p>Der Nachteil dieser Lösung ist, dass bei jeder Anfrage der komplette standardmäßige TYPO3-Overhead mitgeführt wird. Es ist also von Haus aus eher die etwas langsamere Variante im Vergleich zur oben genannten eID-Lösung.</p>
<p>Der enorme Vorteil hingegen ist jedoch, dass sich die AJAX-Serverfunktionalität exakt gleich zur normalen Seite verhält. Alle Spracheinstellungen, die Berechtigungen für irgendwelche Seiten, TypoScript-Conditions, etc. haben auch direkten Einfluss auf die AJAX-Funktionalität und können von einem Angreifer nicht mit einfachen Parameter-Änderungen in der Adresse ausgehebelt werden.</p>
<h2 style="font-size:1em;color:#000;font-weight:bold">Fazit</h2>
<p>Grundsätzlich würde ich keine der beiden Varianten als &#8220;<em>besser</em>&#8221; oder &#8220;<em>schlechter</em>&#8221; bezeichnen. Für einfache AJAX-Abfragen ohne Einschränkungen wie z.B. Sprache, Berechtigung, etc. würde ich die kleinere Schlankere Variante mit dem eID-Mechanismus wählen. Sobald aber Inhalte nur für eine bestimmte Besuchergruppe sichtbar sein sollen, oder in verschiedenen Sprachen verfügbar, rate ich zweifellos zur Variante mit dem eigenen Seiten-Typ.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/typo3/ajax-im-typo3-frontend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlashForum Konferenz 2010 &#8211; Community. Code. Creativity.</title>
		<link>http://labs.zeroseven.de/development/actionscript-development/flashforum-konferenz-2010-community-code-creativity/</link>
		<comments>http://labs.zeroseven.de/development/actionscript-development/flashforum-konferenz-2010-community-code-creativity/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 11:24:38 +0000</pubDate>
		<dc:creator>alexanders</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[FFK10]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1367</guid>
		<description><![CDATA[Auch dieses Jahr hatte ich die Möglichkeit die FFK zu besuchen, nachdem ich letztes Jahr bereits dort war. Auch Jürgen war diesemal mit dabei. Zwei Tage voller Vorträge über Flash, Flex und ActionScript, aber auch über Themen die über das reine Coding hinausgehen. Also eine breitgefächerte Themenwahl, welche jeden Flasher und Flexer in gewissem Maße [...]]]></description>
			<content:encoded><![CDATA[<p>Auch dieses Jahr hatte ich die Möglichkeit die FFK zu besuchen, nachdem ich letztes Jahr bereits dort war. Auch Jürgen war diesemal mit dabei. Zwei Tage voller Vorträge über Flash, Flex und ActionScript, aber auch über Themen die über das reine Coding hinausgehen. Also eine breitgefächerte Themenwahl, welche jeden Flasher und Flexer in gewissem Maße betreffen.</p>
<p><span id="more-1367"></span></p>
<p>Um es gleich Vorweg zu nehmen: Es war der Hammer. Die Fülle an Eindrücken, von neuen Ideen, Technologien und Ansätzen war wieder immens und macht wiederum klar wie mächtig eigentlich die Flash Platform ist. Aber auch die Selbstverständlichkeit im fast schon familiären Umgang der Coder untereinander war wieder beindruckend. Wann hat man denn schon die Möglichkeit die &#8220;Größen&#8221; der Szene zu treffen und mit ihnen alltägliche Coderprobleme zu besprechen.</p>
<p>Dieser Text soll nun nur einen kleine Überblick sein, was ich an Themen mitbekommen hab in den Vorträgen. Ich denke in der nächsten Zeit werden Jürgen und ich immer mal wieder ein Thema hier von auf diesem Blog behandeln. Serge Jespers eröffnete die FFK und stellte unter anderem die Flash Platform Services vor. Interessant hier vor allem die Bereiche Distribution und Collaboration. Die ebenfalls dazugehörenden Social Services waren schon aus dem com.adobe Package bekannt.</p>
<p>Ich möchte jetzt nicht auf jeden Vortrag eingehen den ich gesehen habe. Aber ein paar Highlights für mich herauspicken. Dazu zählt unter anderm der Vortag von Michael Wacker &#8220;Mind the gaps&#8221;, der das Themas Flash Security hatte. Eine richtig gute Anregung und ein Fingerzeig für die Community, was es noch mangelt. Ganz klar mit dabei bei meinen Favoriten mit dabei Andre Michelles &#8220;Tanzen mit Krücken&#8221;. Sehr beeindruckend, vor allem interessant, dass immer mal wieder Tipps und Trick durchsickerten, wie SWFs schnelle und sicherer Laufen. Aber dies nicht nur bei ihm. Auch Saban Ünlü oder Ralph Hauwert mit seinen experimentellen Animationen, ließen hier und da immer wieder ein paar Worte dazu fallen. </p>
<p>Aber auch Bereiche wie Performance Tuning, Usability Testing, Aufbau von Software für Multitouch Devices waren Themen auf der FFK. Richtig beeindruckend, wie schon letztes Jahr, die beiden Vorträge von Joa Ebert und Mario Klingemann. Joas &#8220;Apparat&#8221; ist kurz gesagt einfach der Hammer. SWF ByteCode Optimierung um so noch mehr auf Flash rauszuholen und noch schnelle Animationen laufen lassen zu können. Der experimentelle und künstlerische Ansatz von Mario versetzt jeden Flasher immer wieder in Staunen. </p>
<p>Der für mich am interessanteste Vortrag war aber von Jens Halm: &#8220;Enterprise Applications mit dem Parsley Application Framework&#8221;. Ich hatte davor wenig gehört von Inversion of Control und der ganzen Thematik die hier vorgestellt wurde. Aber der Ansatz der Modularisierung des Codes und der Vereinfachung der Zugriffe und Abhängigkeiten, vor allem die Implementierung in Cairngorm 3 haben mich hellhörig gemacht. Ein Ansatz der Programmierung der mir sehr entgegen kommt und vor allem auch den Workflow des einzelnen und eines ganzen Teams, aber auch das Testen von Apps und Teilbereiche deren immens vereinfacht und verbessert.</p>
<p>Ich könnte jetzt so noch ewig weiter schreiben, da beide Tage voll solche Eindrücke waren. Aber wie gesagt, in nächster Zeit gibt es hier immer wieder ein paar Auszüge davon. Nur eins noch: Ich warte jetzt schon auf die FFK 2011!</p>
<p><a href="http://ffk10.flashforum.de/">http://ffk10.flashforum.de/</a><br />
<a href="http://www.adobe.com/flashplatform/services/">http://www.adobe.com/flashplatform/services/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/actionscript-development/flashforum-konferenz-2010-community-code-creativity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saubere realurl-Links über Domains hinweg</title>
		<link>http://labs.zeroseven.de/development/typo3/saubere-realurl-links-uber-domains-hinweg/</link>
		<comments>http://labs.zeroseven.de/development/typo3/saubere-realurl-links-uber-domains-hinweg/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 08:12:45 +0000</pubDate>
		<dc:creator>albrechtk</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[realurl]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Suchmaschinenoptimierung]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1237</guid>
		<description><![CDATA[In einem früheren Beitrag, habe ich gezeigt wie man in TYPO3 Links über Domains hinweg generiert, hatte damals aber noch keine Lösung wie die Links auch von realurl korrekt geparst werden. Inzwischen weiß ich jedoch, dass die Lösung des Problems unglaublich einfach ist.

In den Seiteneigenschaften verbirgt sich unter dem Reiter &#8220;Optionen&#8221; die kleine unscheinbare Checkbox [...]]]></description>
			<content:encoded><![CDATA[<p>In einem früheren Beitrag, habe ich gezeigt wie man in TYPO3 <a href="http://labs.zeroseven.de/development/typo3/links-uber-domains-hinweg/">Links über Domains hinweg</a> generiert, hatte damals aber noch keine Lösung wie die Links auch von <a href="http://labs.zeroseven.de/development/typo3/empfehlung-typo3-extension-realurl/">realurl</a> korrekt geparst werden. Inzwischen weiß ich jedoch, dass die Lösung des Problems unglaublich einfach ist.</p>
<p><span id="more-1237"></span></p>
<p>In den Seiteneigenschaften verbirgt sich unter dem Reiter &#8220;Optionen&#8221; die kleine unscheinbare Checkbox &#8220;<em>Ist Anfang der Web-Site</em>&#8221; (engl.: &#8220;<em>Is root of website</em>&#8220;). Diese Checkbox muss auf der Root-Page wirklich gesetzt sein – und natürlich die Root-Page auch in der realurl-Konfigurationsdatei korrekt gesetzt sein – uns schon klappt der Seitenübergreifende Link auch wunderschön mit realurl.</p>
<p>Tipp: Wenn Ihr die Checkbox &#8220;<em>Ist Anfang der Web-Site</em>&#8221; nicht sehen könnt, blendet einfach die zweite Optionspalette ein.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/typo3/saubere-realurl-links-uber-domains-hinweg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VEYTON: Eigene Navigationspunkte im Admin-Tool</title>
		<link>http://labs.zeroseven.de/development/online-shops/veyton-eigene-navigationspunkte-im-admin-tool/</link>
		<comments>http://labs.zeroseven.de/development/online-shops/veyton-eigene-navigationspunkte-im-admin-tool/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 09:13:00 +0000</pubDate>
		<dc:creator>albrechtk</dc:creator>
				<category><![CDATA[Online-Shops]]></category>
		<category><![CDATA[acl_nav]]></category>
		<category><![CDATA[Admin]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[TABLE_ADMIN_NAVIGATION]]></category>
		<category><![CDATA[VEYTON]]></category>
		<category><![CDATA[xt_acl_nav]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1226</guid>
		<description><![CDATA[Was in VEYTON die Flexibilität und die Anpassungsmöglichkeiten des Shop-Frontends angeht, bin ich wirklich begeistert. Die Sache mit den Hook-Points ist einfach zu verstehen und extrem flexibel. Doch wenn es an die Anpassung des Admin-Bereichs geht, hört der Spaß auf. Das ist eine extrem undurchsichtige und lästige Angelegenheit. Inzwischen habe ich durch &#8220;trial and error&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Was in VEYTON die Flexibilität und die Anpassungsmöglichkeiten des Shop-Frontends angeht, bin ich wirklich begeistert. Die Sache mit den Hook-Points ist einfach zu verstehen und extrem flexibel. Doch wenn es an die Anpassung des Admin-Bereichs geht, hört der Spaß auf. Das ist eine extrem undurchsichtige und lästige Angelegenheit. Inzwischen habe ich durch &#8220;trial and error&#8221; herausgefunden, wie ich einen eigenen Navigationspunkt im Admin-Backend hinzufügen kann.</p>
<p><span id="more-1226"></span></p>
<p>Die Lösung liegt in der Tabelle, die intern über die Konstante <code>TABLE_ADMIN_NAVIGATION</code> angesprochen wird. Vermutlich heißt diese Tabelle bei Euch <strong>xt_acl_nav</strong> oder <strong>acl_nav</strong>. Wenn nicht, könnt Ihr sie auf jeden Fall über die interne Konstante herausfinden. Bitte beachtet außerdem, dass die Reihenfolge, wie ich auf die Felder eingehen werde, nicht der Reihenfolge in der Datenbank entspricht, sondern für ein besseres Verständnis angepasst wurde.</p>
<p><em>text</em><br />
Die eindeutige Bezeichnung des Navigationspunktes. Der Text kann dann selbstverständlich über die Lokalisierungstabelle an die jeweilige Sprache des Admin-Benutzers angepasst werden.</p>
<p><em>icon</em><br />
Zu jedem Navigationspunkt gibt es neben dem Text auch das kleine Icon. Der Pfad muss relativ zum Verzeichnis <code>xtAdmin</code> sein und die Grafik sollte 16&#215;16 Pixel groß sein.</p>
<p><em>navtype</em><br />
Gibt an, in welche Navigation der neue Punkt integriert werden soll. Mögliche Werte sind <strong>N</strong> und <strong>W</strong>. Vermutlich steht das für &#8220;North&#8221; und &#8220;West&#8221;. Denn schließlich kann man mit <strong>N</strong> einen Button in der oberen Navigationsleiste neben &#8220;Handbuch&#8221;, &#8220;Helpdesk&#8221;, etc. ablegen, während man mit <strong>W</strong> einen Navigationspunkt in der linken Hauptnavigation erzeugt.</p>
<p><em>type</em><br />
Wenn <code>navtype=W</code> angegeben wurde, kann der Typ auf den Wert <strong>G</strong> oder <strong>I</strong> gesetzt werden. <strong>G</strong> enthält weitere Unterpunkte und könnte von &#8220;Group&#8221; abgeleitet worden sein. <strong>I</strong> enthält keine weitere Unterpunkte, sondern ist selbst der letzte Unterpunkt einer Gruppe, die Bezeichnung könnte von &#8220;inner&#8221; abgeleitet worden sein.<br />
Für <code>navtype=N</code> muss der Wert <strong>G</strong> eingetragen werden.</p>
<p><em>parent</em><br />
Für <code>navtype=W</code> zeigt das Feld an, welchem Elternelement der Navigationspunkt zugeordnet worden sein. Das Elternelement muss vom <code>type=G</code> sein. Wird hier der Wert <strong>0</strong> eingetragen, wird in der Navigation ein komplett neuer Block angelegt. Um das neue Navigationselement in eine vorhandene Gruppe einzugliedern, muss deren bei <code>text</code> eingetragene Bezeichnung hier hinterlegt werden.<br />
Für <code>navtype=N</code> muss der Wert <strong>0</strong> eingetragen werden.</p>
<p><em>sortorder</em><br />
Ein einfacher Sortierungswert als Integer. Niedrige Werte werden zuerst dargestellt, höhere Werte danach.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/online-shops/veyton-eigene-navigationspunkte-im-admin-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWF-Uploader in TYPO3-Backend trotz .htaccess-Passwort</title>
		<link>http://labs.zeroseven.de/development/typo3/swf-uploader-in-typo3-backend-trotz-htaccess-passwort/</link>
		<comments>http://labs.zeroseven.de/development/typo3/swf-uploader-in-typo3-backend-trotz-htaccess-passwort/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 08:20:02 +0000</pubDate>
		<dc:creator>albrechtk</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[SWF]]></category>

		<guid isPermaLink="false">http://labs.zeroseven.de/?p=1222</guid>
		<description><![CDATA[Eines der vielen neuen Features, die TYPO3 Version 4.3 mit bringt, ist der SWF-Uploader, bzw. die &#8220;Flash-Schnittstelle zum Hochladen&#8221;, wie es in der deutschen Sprachversion heißt. Doch wenn ein TYPO3-Projekt mit einem .htaccess-Passwortschutz versehen ist, was z.B. in der Entwicklungsphase oder evtl. auch aus anderen Gründen durchaus sein könnte, funktioniert der SWF-Uploader erstmal nicht.

Mit einem [...]]]></description>
			<content:encoded><![CDATA[<p>Eines der vielen neuen Features, die TYPO3 Version 4.3 mit bringt, ist der SWF-Uploader, bzw. die &#8220;Flash-Schnittstelle zum Hochladen&#8221;, wie es in der deutschen Sprachversion heißt. Doch wenn ein TYPO3-Projekt mit einem .htaccess-Passwortschutz versehen ist, was z.B. in der Entwicklungsphase oder evtl. auch aus anderen Gründen durchaus sein könnte, funktioniert der SWF-Uploader erstmal nicht.</p>
<p><span id="more-1222"></span></p>
<p>Mit einem kleinen Eingriff in die .htaccess-Datei lässt sich der SWF-Uploader aber auch zum Laufen bringen, ohne den Passwort-Schutz vom ganzen Projekt zu nehmen. Dazu müssen einfach folgende Zeilen in die .htaccess-Datei eingefügt werden.</p>
<pre>&lt;Files ajax.php&gt;
Allow from any
Satisfy any
&lt;/Files&gt;</pre>
<p>Die erste und vierte Zeile bewirken, dass die Anweisung nur für Dateien mit dem Namen <strong>ajax.php</strong> gelten soll. Zeile 2 besagt, dass ein Zugriff von jeder IP-Adresse aus möglich ist und Zeile 3 bewirkt, dass <em>entweder</em> die User-Authentifizierung via Passwort <em>oder</em> die IP-Adresse des Besuchers stimmen muss. Und da der Besucher jede beliebige IP-Adresse besitzen darf (Zeile 2), ist die Zugriffsbeschränkung für die Datei <strong>ajax.php</strong> aufgehoben und der SWF-Uploader funktioniert wieder tadellos.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.zeroseven.de/development/typo3/swf-uploader-in-typo3-backend-trotz-htaccess-passwort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
