<?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>Grandgeorg Websolutions Developer Blog</title>
	<atom:link href="http://blog.intelligibel.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.intelligibel.de</link>
	<description>Weil's unheimlich Spaß macht!</description>
	<lastBuildDate>Fri, 16 Apr 2010 12:02:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Neue Comodo Firewall Version 4</title>
		<link>http://blog.intelligibel.de/2010/04/16/neue-comodo-firewall-version-4/</link>
		<comments>http://blog.intelligibel.de/2010/04/16/neue-comodo-firewall-version-4/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 11:33:37 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=211</guid>
		<description><![CDATA[Die neue Version der Comodo Firewall macht unter Umständen Schwierigkeiten beim Installieren. Es kann zu Fehlermeldungen über einen fehlerhaften Verzeichnispfad kommen, der ungültige Zeichen enthalten soll, was bei der Installation zu dem Fehler Nummer 1603 führt.
Der Fehler liegt im Installer von Comodo. Man kann es leicht umgehen, indem man den Installer die zwei Setupdateien nur [...]]]></description>
			<content:encoded><![CDATA[<p>Die neue Version der Comodo Firewall macht unter Umständen Schwierigkeiten beim Installieren. Es kann zu Fehlermeldungen über einen fehlerhaften Verzeichnispfad kommen, der ungültige Zeichen enthalten soll, was bei der Installation zu dem Fehler Nummer 1603 führt.</p>
<p>Der Fehler liegt im Installer von Comodo. Man kann es leicht umgehen, indem man den Installer die zwei Setupdateien nur entpacken lässt und den Installer dann beendet. Danach starten man nacheinander die lpcsetup_3.0.131727.7.msi und die CFP_Setup.msi.</p>
<p>Bei Problemen mit VPN hat sich die Einstellung zum deaktivieren von <em>Block Fragmented IP datagrams</em> (siehe Post <a href="http://blog.intelligibel.de/2009/04/25/comodo-firewall-und-vpn/">COMODO Firewall und VPN</a>) geändert. Es findet sich jetzt unter <em>Firewall-&gt;Advanced-&gt;Firewall Behavior settings-&gt;Advanced.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2010/04/16/neue-comodo-firewall-version-4/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Zend Framework mit Eclipse PDT (Galileo) und SVN</title>
		<link>http://blog.intelligibel.de/2010/02/22/zend-framework-mit-eclipse-pdt-galileo-und-subversion-unter-windows/</link>
		<comments>http://blog.intelligibel.de/2010/02/22/zend-framework-mit-eclipse-pdt-galileo-und-subversion-unter-windows/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 12:27:40 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=170</guid>
		<description><![CDATA[Wer ZendStudio nicht benötigt oder sich nicht leisten kann oder will, kann mit der hier beschriebenen Konfiguration Eclipse mit Subversion für seine PHP Zend Framework Projekte unter Windows verwenden.
Zunächst gehen wir davon aus, dass Apache und PHP bereits installiert sind und dass irgendwo eine Version von Zend Framework gespeichert ist (z.B.: c:\server\library\ZendFramework-1.9.0). Darüber hinaus werden [...]]]></description>
			<content:encoded><![CDATA[<p>Wer ZendStudio nicht benötigt oder sich nicht leisten kann oder will, kann mit der hier beschriebenen Konfiguration Eclipse mit Subversion für seine PHP Zend Framework Projekte unter Windows verwenden.</p>
<p>Zunächst gehen wir davon aus, dass Apache und PHP bereits installiert sind und dass irgendwo eine Version von Zend Framework gespeichert ist (z.B.: c:\server\library\ZendFramework-1.9.0). Darüber hinaus werden wir die Möglichkeit benötigen unter Windows symbolische Verknüpfungen anzulegen, dazu kann man einfach (falls nicht vorhanden) die junction.exe bei Microsoft <a href="http://technet.microsoft.com/de-de/sysinternals/bb896768.aspx" target="_blank">herunterladen</a>.</p>
<p>In diesem Beispiel gehe ich von folgender Verzeichnisstruktur aus (die natürlich auch ganz anders sein kann). Was die einzelnen Verzeichnisse beinhalten wird im Laufe der Konfiguration klar:</p>
<p>C:\\</p>
<ul>
<li>Programme
<ul>
<li>eclipse</li>
<li>SlikSvn
<ul>
<li>bin</li>
</ul>
</li>
</ul>
</li>
<li>server
<ul>
<li>Apache</li>
<li>eclipse
<ul>
<li>workspaces</li>
</ul>
</li>
<li>library
<ul>
<li>PEAR</li>
<li>ZendFramework</li>
<li>etc.</li>
</ul>
</li>
<li>MySQL</li>
<li>php</li>
<li>svn
<ul>
<li>repository</li>
</ul>
</li>
<li>vhost</li>
<li>xdebug</li>
</ul>
</li>
</ul>
<p>Als Nächstes installieren wir <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-php-galileo-SR1-win32.zip" target="_blank">eclipse-php-galileo-SR1-win32</a>.</p>
<p>Dann benötigen wir Subversion für Windows. Derzeit kann man von tigris.org nichts herunterladen, da das Projekt Apache übergeben wird. Wir installieren deshalb Subversion von <a href="http://www.sliksvn.com/en/download" target="_self">sliksvn.com</a> &#8211; ist ein super Paket.</p>
<p>Jetzt müssen wir den Subversion-Server unter Windows einrichten. Bei codinghorror.com gibt es dazu eine wunderbare <a href="http://www.codinghorror.com/blog/2008/04/setting-up-subversion-on-windows.html" target="_blank">Anleitung</a>. Hier die wesentlichen Schritte zusammengefasst:</p>
<ul>
<li>cmd:
<pre>svnadmin create "c:\server\svn\repository"</pre>
</li>
<li>conf/svnserve.conf des erstellten Repository:
<pre>anon-access = none
auth-access = write
password-db = passwd</pre>
</li>
<li>conf/passwd des erstellten Repository:
<pre>dein-name= dein-passwort</pre>
</li>
<li>Subversion als Dienst registrieren, Server starten, SVN-Editor setzen, SVN-(Test)-Verzeichnis erzeugen &#8211; cmd:
<pre>sc create svnserver binpath= "c:\Programme\SlikSvn\bin\svnserve.exe --service -r c:\server\svn\repository" displayname= "Subversion" depend= Tcpip start= auto
net start svnserver
set SVN_EDITOR=c:\Programme\Notepad++\notepad++.exe
svn mkdir svn://localhost/test</pre>
</li>
</ul>
<p>Damit wir loslegen können, müssen wir jetzt nur noch Subversion unter Eclipse konfigurieren. Dazu gibt es wiederum eine wunderbare <a href="http://javathreads.de/2009/07/subversion-unter-eclipse-galileo-konfigurieren/" target="_blank">Anleitung bei javathreads.de.</a> Ich verzichte auf eine Zusammenfassung, hier nur der benötigte Link für die Installation des Connectors:</p>
<p>http://community.polarion.com/projects/subversive/download/eclipse/2.0/galileo-site/</p>
<p>Die eigentliche Konfiguration hier als ein kleiner Screencast:<br />
(Die Audiospur hängt ganz schön hinterher und ich bin mit der Maus zuweilen ganz schön am Abwandern, aber worum es geht wird, denke ich, recht klar)</p>
[See post to watch Flash video]
<p>P.S. Unter Umständen ist es sinnvoll am Ende die Datei .buildpath und den Ordner .settings in die ignore-Liste von SVN aufzunehmen &#8211; am Besten einfach mit TortoiseSVN o.Ä.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2010/02/22/zend-framework-mit-eclipse-pdt-galileo-und-subversion-unter-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screencast erstellen mit CamStudio und WinFF (FFmpeg)</title>
		<link>http://blog.intelligibel.de/2009/08/12/screencast-erstellen-mit-camstudio-und-winff-ffmpeg/</link>
		<comments>http://blog.intelligibel.de/2009/08/12/screencast-erstellen-mit-camstudio-und-winff-ffmpeg/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 12:50:28 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=157</guid>
		<description><![CDATA[Ich habe relativ lange herumexperimentiert um Screencasts in guter Qualität und kleinen Dateigrößen erstellen zu können. Mein Ziel war es die Screencasts am Ende als flv-Dateien zu generieren, sodass diese einfach online gestellt und in einen flv-Player (z.B. FLV Player) eingebunden werden können &#8211; und alles natürlich mit kostenlosen Tools.
Ich verwende zum Capturen CamStudio und [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe relativ lange herumexperimentiert um Screencasts in guter Qualität und kleinen Dateigrößen erstellen zu können. Mein Ziel war es die Screencasts am Ende als flv-Dateien zu generieren, sodass diese einfach online gestellt und in einen flv-Player (z.B. <a title="video-flash.de" href="http://www.video-flash.de/flv-flash-fullscreen-video-player/" target="_blank">FLV Player</a>) eingebunden werden können &#8211; und alles natürlich mit kostenlosen Tools.</p>
<p>Ich verwende zum Capturen <a title="camstudio.org" href="http://camstudio.org/" target="_blank">CamStudio</a> und zwar mit dem Lossless Codec von eben diesem. Die Aufnahme speichere ich als AVI. Danach konvertiere ich das AVI mit <a title="winff.org" href="http://winff.org/html_new/" target="_blank">WinFF</a> in eine flv-Datei.<br />
Hier die Parameter für die Programme:</p>
<p>Aufnahmeeinstellungen CamStudio:</p>
<ul>
<li>Audio
<ul>
<li>Conexant HD Audio input (meine Soundkarte)</li>
<li>22.05 kHz, mono, 16-bit</li>
<li>Compressed Format:
<ul>
<li>PCM</li>
<li> 22050 Hz, 16 Bit Mono 44100 Bytes/sec</li>
</ul>
</li>
<li>Interleave every 100 Milliseconds</li>
<li>Use MCI Recording</li>
</ul>
</li>
<li>Video
<ul>
<li>CamStudio Lossless Codec v1.0 (mit LZO)</li>
<li>Quality 100</li>
<li>Key Frames every 20 frames</li>
<li>Capture Frame 50 milliseconds</li>
<li>Playback Rate 20 frames/second</li>
<li>(Auto Adjust)</li>
</ul>
</li>
</ul>
<p>WinFF Encoder (FFmpeg GUI)</p>
<ul>
<li>Video
<ul>
<li>600 x 800 px</li>
<li>10 Bilder / sec (oder auch 20 ergibt ca. 1,5% größere Datei)</li>
<li>Bitrate 768</li>
<li>2 Pass</li>
</ul>
</li>
<li>Audio
<ul>
<li>Bitrate 80</li>
<li>Abtastrate 22050</li>
<li>1 Kanal (mono)</li>
</ul>
</li>
</ul>
<p>Das ergibt als Batch für ffmpeg (dateiname ersetzen):</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">chcp <span style="color: #cc66cc;">1252</span>
<span style="color: #b1b100; font-weight: bold;">title</span> Konvertieren dateiname.avi <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>/<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
&quot;C:\Programme\WinFF\ffmpeg.exe&quot; -i &quot;C:\ScreenCast\dateiname.avi&quot; -vcodec flv -f flv  -r <span style="color: #cc66cc;">10</span>  -s 800x600 -aspect <span style="color: #cc66cc;">4</span>:<span style="color: #cc66cc;">3</span>  -b 768kb -g <span style="color: #cc66cc;">160</span> -cmp dct  -subcmp dct  -mbd <span style="color: #cc66cc;">2</span> -flags +aic+cbp+mv0+mv4 -trellis <span style="color: #cc66cc;">1</span>  -ac <span style="color: #cc66cc;">1</span> -ar <span style="color: #cc66cc;">22050</span> -ab 80kb  -an -passlogfile &quot;C:\ScreenCast\flv\dateiname.log&quot; -pass <span style="color: #cc66cc;">1</span>  -y &quot;<span style="color: #0000ff; font-weight: bold;">NUL</span>.avi&quot;
&quot;C:\Programme\WinFF\ffmpeg.exe&quot; -y -i &quot;C:\ScreenCast\dateiname.avi&quot; -vcodec flv -f flv  -r <span style="color: #cc66cc;">10</span>  -s 800x600 -aspect <span style="color: #cc66cc;">4</span>:<span style="color: #cc66cc;">3</span>  -b 768kb -g <span style="color: #cc66cc;">160</span> -cmp dct  -subcmp dct  -mbd <span style="color: #cc66cc;">2</span> -flags +aic+cbp+mv0+mv4 -trellis <span style="color: #cc66cc;">1</span>  -ac <span style="color: #cc66cc;">1</span> -ar <span style="color: #cc66cc;">22050</span> -ab 80kb  -passlogfile &quot;C:\ScreenCast\dateiname.log&quot; -pass <span style="color: #cc66cc;">2</span>  &quot;C:\ScreenCast\flv\dateiname.flv&quot;
<span style="color: #b1b100; font-weight: bold;">pause</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/08/12/screencast-erstellen-mit-camstudio-und-winff-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Merkzettel für VPN Port-Forwarding</title>
		<link>http://blog.intelligibel.de/2009/07/22/merkzettel-fur-vpn-port-forwarding/</link>
		<comments>http://blog.intelligibel.de/2009/07/22/merkzettel-fur-vpn-port-forwarding/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 19:05:59 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=154</guid>
		<description><![CDATA[Nur damit ich das nie wieder vergesse:
(Windows) VPN:

PPTP
TCP 1723
GRE (Protokoll Nr. 47)
L2TP (verwendet IPsec zur Verschlüsselung)
UDP 1701
ESP (Protokoll Nr.50)
UDP 500 (für IKE)
UDP 4500 (für NAT-T)


Assigned Internet Protocol Numbers
Installieren und Konfigurieren eines VPN-Servers in Windows Server 2003
Beschreibung der für L2TP/IPSec erstellten IPSec-Richtlinie



]]></description>
			<content:encoded><![CDATA[<p>Nur damit ich das nie wieder vergesse:</p>
<p>(Windows) VPN:</p>
<ul>
<li>PPTP<br />
TCP 1723<br />
GRE (Protokoll Nr. 47)</li>
<li>L2TP (verwendet IPsec zur Verschlüsselung)<br />
UDP 1701<br />
ESP (Protokoll Nr.50)<br />
UDP 500 (für IKE)<br />
UDP 4500 (für NAT-T)</li>
</ul>
<ul>
<li><a href="http://www.iana.org/assignments/protocol-numbers">Assigned Internet Protocol Numbers</a></li>
<li><a href="http://support.microsoft.com/default.aspx?scid=kb;de;323441">Installieren und Konfigurieren eines VPN-Servers in Windows Server 2003</a></li>
<li><a href="http://support.microsoft.com/kb/248750">Beschreibung der für L2TP/IPSec erstellten IPSec-Richtlinie</a></li>
</ul>
<p><a href="http://www.iana.org/assignments/protocol-numbers"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/07/22/merkzettel-fur-vpn-port-forwarding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erstellen eines CMS mit ZendFramework &#8211; Teil 1</title>
		<link>http://blog.intelligibel.de/2009/06/28/erstellen-eines-cms-mit-zendframework-teil-1/</link>
		<comments>http://blog.intelligibel.de/2009/06/28/erstellen-eines-cms-mit-zendframework-teil-1/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 16:22:46 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=136</guid>
		<description><![CDATA[Vorüberlegungen und Strategien
1. Routing
Das A und O von Webseiten sind ihre URLs. ZF bietet weitreichende Möglichkeiten mit dynamischen Routing, URLs an die gewünschten Anforderungen anzupassen. Jedoch sind die Möglichkeiten für ein professionelles CMS begrenzt.
Beispiel:
In unserem CMS möchten wir 5 verschiedene Seiten erstellen, die alle bis auf &#8216;News&#8217; zunächst mit einfachen Texten und Bildern gefüllt werden [...]]]></description>
			<content:encoded><![CDATA[<h3>Vorüberlegungen und Strategien</h3>
<h4>1. Routing</h4>
<p>Das A und O von Webseiten sind ihre URLs. ZF bietet weitreichende Möglichkeiten mit dynamischen Routing, URLs an die gewünschten Anforderungen anzupassen. Jedoch sind die Möglichkeiten für ein professionelles CMS begrenzt.</p>
<p><strong>Beispiel:</strong></p>
<p>In unserem CMS möchten wir 5 verschiedene Seiten erstellen, die alle bis auf &#8216;News&#8217; zunächst mit einfachen Texten und Bildern gefüllt werden sollen. Die Seitentitel lauten:</p>
<p>+ Home<br />
+ Unser Unternehmen (über uns)<br />
+ Kontakt<br />
+ Abteilungen<br />
+ Impressum<br />
+ News</p>
<p>Da wir von Anfang an eine mehrsprachige Seite aufbauen wollen, möchten wir jede Seite in jeder verfügbaren Sprache ansprechen können. Sollte eine Seite noch nicht übersetzt worden sein, soll sie in der Standardsprache (im CMS konfigurieren wir hierfür deutsch) angezeigt werden. Auf Grund der Mehrsprachlichkeit, möchten wir, dass die URIs im Gegensatz zu den Seitentiteln auf englisch sind:</p>
<p>- index<br />
- about<br />
- contact<br />
- &#8211; departments<br />
- imprint<br />
- news</p>
<p>Wir möchten im CMS auch konfigurieren können, ob für die Standardsprache in den URLs auch der Ländercode angezeigt werden soll.<br />
Wenn wir zunächst zwei Sprachen (deutsch und englisch) im CMS definieren, möchten wir folgende URLs erhalten:</p>
<p>Mit Ländercode in der URL für die Standardsprache:</p>
<p>- http://example.com (mit Redirect auf:)<br />
- http://example.com/de<br />
- http://example.com/de/about<br />
- http://example.com/de/contact<br />
- http://example.com/de/contact/departments<br />
- http://example.com/de/imprint<br />
- http://example.com/de/news</p>
<p>- http://example.com/en<br />
- http://example.com/en/about<br />
- http://example.com/en/contact<br />
- http://example.com/en/contact/departments<br />
- http://example.com/en/imprint<br />
- http://example.com/en/news</p>
<p>Ohne Ländercode in der URL für die Standardsprache:</p>
<p>- http://example.com<br />
- http://example.com/about<br />
- http://example.com/contact<br />
- http://example.com/contact/departments<br />
- http://example.com/imprint<br />
- http://example.com/news</p>
<p>- http://example.com/en<br />
- http://example.com/en/about<br />
- http://example.com/en/contact<br />
- http://example.com/en/contact/departments<br />
- http://example.com/en/imprint<br />
- http://example.com/en/news</p>
<p>Da es sich bei allen Seiten, bis auf &#8216;News&#8217;, die einen eigenen Controller bekommen sollen, um einfache Seiten mit Bildern und Texten handelt, erstellen wir für die Funktionalität einen Controller im ZF, den wir z.B. Article nennen und dessen indexAction die entsprechenden Inhalte aus einer Persistenzschicht ausliest und über die View ausgibt.</p>
<p><strong>Problem:</strong></p>
<p>Auch wenn mit den Routern von ZF viel möglich ist, wären die URLs in ZF so nicht darstellbar. Standardmäßig hätten wir URLs etwa in der Form: http://example.com/article/index/page/about/language/en</p>
<p>Lösung für das CMS:</p>
<p>Wir erstellen einen URL-Mapper bzw. einen Module-Controller-Action-Mapper, der aus dem Request anhand der Daten aus der Persistenzschicht die entsprechenden Segmente auf die Klassen von ZF mappt. Der Mapper bietet einerseits die gewünschte Flexibilität URLs syntaktisch und semantisch den Wünschen entsprechend aufzubauen und andererseits ermöglicht er volle Kompatibilität zum ZF Routing.</p>
<p>Für ein CMS hat das weitere Vorteile: Wir können noch weitere Daten zu der jeweiligen Seite bzw. URL speichern (z.B. ob die Seite überhaupt online ist, Angaben zur Resource für ACL, Seitenname etc.). Vor allem aber erhalten wir so, schon eine Liste aus der sich direkt eine Navigation erzeugt lässt. Das Datenobjekt der Persistenzschicht, wir nennen sie mal Page, hat also etwa folgende Eigenschaften:</p>
<p>- id<br />
- parent_id<br />
- name<br />
- req_modul<br />
- req_controller<br />
- req_action<br />
- zf_modul<br />
- zf_controller<br />
- zf_action</p>
<p>Unsere Seiten würden dann wie folgt gespeichert:</p>

<div class="wp_syntax"><div class="code"><pre class="t-sql" style="font-family:monospace;">============================================================================================================================
| id   | parent_id | name               | req_modul | req_controller | req_action   | zf_modul | zf_controller | zf_action |
============================================================================================================================
| 1    | 0         | Home               | default   | index          | index        | default  | article       | index     |
----------------------------------------------------------------------------------------------------------------------------
| 2    | 0         | Unser Unternehmen  | default   | about          | index        | default  | article       | index     |
----------------------------------------------------------------------------------------------------------------------------
| 3    | 0         | Kontakt            | default   | contact        | index        | default  | article       | index     |
----------------------------------------------------------------------------------------------------------------------------
| 5    | 3         | Abteilungen        | default   | contact        | departments  | default  | article       | index     |
----------------------------------------------------------------------------------------------------------------------------
| 4    | 0         | Impressum          | default   | imprint        | index        | default  | article       | index     |
----------------------------------------------------------------------------------------------------------------------------
| 6    | 0         | News               | default   | news           | index        | default  | news          | index     |
============================================================================================================================</pre></div></div>

<p>Der URL-Mapper ruft also bis auf News immer den ArticleController mit der indexAction auf. Im Mapper wird auch sichergestellt, dass die ermittelte id später in der indexAction verfügbar ist, damit diese die Inhalte, die zu der Seite gehören in der Persistenzschicht suchen und dann dem View übergeben kann.</p>
<p>Was ist mit der Mehrsprachlichkeit?<br />
Die Länderkennungen sind weder Module, noch Controller, noch Actions. Vielmehr sind sie Parameter für den Controller. Deswegen entfernen wir Sie aus der URL und schreiben sie in die Registry bevor ZF den Routingprocess startet. Schnell anskizziert könnte eine Funktion, die wir in der Bootstrap vor dem Routing aufrufen etwa wie folgt aussehen:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> setLanguage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$oLanguageConfig</span> <span style="color: #339933;">=</span> Zend_Registry<span style="color: #339933;">::</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'config'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">languages</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$sCurrentLang</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oLanguageConfig</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">default</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$oLanguageConfig</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">enable</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'@/[^/]*@'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$aUrlMatches</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$aUrlMatches</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$sUrlMatch</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$aUrlMatches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$aLangs</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oLanguageConfig</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$aLangs</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$aLangs</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$aLangs</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$aLangs</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$sLang</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$sLang</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$sUrlMatch</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$sCurrentLang</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$sLang</span><span style="color: #339933;">;</span>
                        <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sLang</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        Zend_Registry<span style="color: #339933;">::</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'currentLang'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sCurrentLang</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Was ist mit der Mehrsprachlichkeit in der Persistenzschicht? Wir realisieren diese mit einem &#8220;page_language_overlay&#8221; Datenobjekt. Es hat folgende Eingeschaften:</p>
<p>- fk_page_id<br />
- language<br />
- name</p>
<h4>Bevor es weiter geht, ein kleiner Exkurs zum Aufbau von URLs:</h4>
<p>Zunächst muss man sich vor Augen halten, dass man durch den URL-Mapper sehr weitgehende Freiheiten in Bezug auf den Aufbau von URLs gewonnen hat und kaum noch an das Korsett der ZF Logik gebunden ist, dass man damit aber auch in der Verantwortung steht, den logischen Aufbau selbst zu vollziehen. Warum sollte man sich das überhaupt aufbürden? Ganz einfach:<br />
Programmierer (und alle Technokraten dieser Welt), hätten sicher kein Problem damit, wenn URLs immer nach Schema ZF aufgebaut wären. Auftraggeber, für die letztlich das CMS gemacht wird und die unseren Lebensunterhalt finanzieren, akzeptieren aber kein:</p>
<p>http://example.com/article/index/page/about</p>
<p>sie bestehen (teilweise zu recht) auf:</p>
<p>http://example.com/about</p>
<p>Warum auf solchen URLs bestehen? Ganz einfach: Man kann sie sich besser merken (Es ist erstaunlich wie wenige Auftraggeber Bookmarks nutzen). Ach ja, auch für Suchmaschinen sind Angaben wie &#8216;article/index/page&#8217; ziemlicher Blödsinn.</p>
<p>Schauen wir uns das Problem genauer an (unabhängig von einer möglichen Abneigung gegen Technokraten &#8211; Jenseits von Gut und Böse sozusagen) und stellen uns als Resource das klassische Offlinemedium vor: ein Buch. Schlagen wir es auf und schauen ins Inhaltsverzeichnis. Jetzt überlegen wir, wie die einzelnen Punkte im Inhaltsverzeichnis als URL mit ZF standardmäßig dargestellt werden würden. Anstatt eines Inhaltsverzeichnisses wie wir es alle kennen, würde dort etwas stehen wie:</p>
<p>Buch / Inhalt / zeige / Kapitel / &#8220;Götzen-Dämmerung&#8221; / Seite / 279<br />
(module / controller / action / key / value / key / value)</p>
<p>Tatsächlich findet sich im Buch aber nur Folgendes im Inhaltsverzeichnis:</p>
<p>Götzen-Dämmerung 279</p>
<p>Zugegeben, weiß man ja im Internet noch nicht, dass man ein Buch aufgeschlagen hat und man weiß auch noch nicht unbedingt, dass es sich um das Buch &#8220;Jenseits von Gut und Böse&#8221; handelt &#8211; schließlich gibt es vielleicht auch andere Bücher mit gleichnamigem Kapitel und vielleicht gibt es auch Räucherkerzen die Götzen-Dämmerung heißen. Was dagegen im Ggs. zum Druckerzeugnis im Internet nicht interessiert, ist die Seite auf der das Kapitel anfängt. Nach der ZF Logik würde das zu einer Syntax etwa wie folgt führen:</p>
<p>http://example.com/buch/inhalt/zeige/titel/Jenseits-von-Gut-und-Boese/kapitel/Goetzen-Daemmerung</p>
<p>Die kürzere Syntax &#8211; die dem Auftraggeber gefällt &#8211; hingegen ist aber:</p>
<p>http://example.com/buch/Jenseits-von-Gut-und-Boese/Goetzen-Daemmerung</p>
<p>Im Grunde haben wir bei der kurzen URL aber nicht viel mehr getan, als das Verb (die Action) und die Kennzeichnung der Adjektive (oder anders gesagt, die Typen der Attribute des Buches, die keys &#8216;titel&#8217; und &#8216;kapitel&#8217;) wegzulassen. Der Sachverhalt bezüglich der Adjektive erscheint recht klar, schließlich sagen wir ja auch nicht: &#8220;Dieses Buch hat die Farbe blau.&#8221; Vielmehr würden wir sagen &#8220;Dieses Buch ist blau.&#8221; Darüber hinaus ist in der natürlichen Sprache das Verb &#8220;sein&#8221; (in manchen Sprachen leider auch das Verb &#8220;haben&#8221;) ebenso selbstverständlich, wie im Internet die Action &#8220;zeige&#8221; oder &#8220;liste&#8221; oder &#8220;gib aus&#8221; oder &#8220;stell dar&#8221;. Deswegen können wir ja auch einfach sagen: &#8220;Dieses blaue Buch&#8221; (Nach dem Motto: &#8220;Dieser Satz kein Verb&#8221;, aber mit einem hic-deiktischem Pronomen). Erst wenn wir mit dem Buch etwas anstellen wollen, benötigen wir ein Verb:  &#8220;Ich kaufe dieses Buch von Nietzsche&#8221;. Das Buch wird dabei zum Objekt des Satzes. Das bedeutet, dass eine Information aus Subjekt + eindeutiges Attribut immer dann ausreichend ist, wenn wir das Subjekt lediglich darstellen wollen und wenn wir immer mit den gleichen Typen von Attributen unsere Auswahl treffen. Wenn wir im Internet ein Buch kaufen möchten, ist das Subjekt nicht mehr das Buch, sondern der Shop der Website, wir erhalten dann eine URL wie:</p>
<p>http://example.com/shop/kaufe/ISBN/3-89508-038-1</p>
<p>oder, falls wir annehmen, dass der Buchtitel immer eindeutig ist:</p>
<p>http://example.com/shop/kaufe/buch/Jenseits-von-Gut-und-Boese</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/06/28/erstellen-eines-cms-mit-zendframework-teil-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>P2S im Einsatz</title>
		<link>http://blog.intelligibel.de/2009/06/28/p2s-im-einsatz/</link>
		<comments>http://blog.intelligibel.de/2009/06/28/p2s-im-einsatz/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 16:13:23 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=134</guid>
		<description><![CDATA[Ich habe jetzt P2S im Einsatz &#8211; läuft ausgesprochen gut und stabil, oblgeich die Version noch nicht die 1 erreicht hat.
]]></description>
			<content:encoded><![CDATA[<p>Ich habe jetzt P2S im Einsatz &#8211; läuft ausgesprochen gut und stabil, oblgeich die Version noch nicht die 1 erreicht hat.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/06/28/p2s-im-einsatz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Mail Server Tool und POP2SMTP bzw. IMAP2SMTP Tool</title>
		<link>http://blog.intelligibel.de/2009/05/12/test-mail-server-tool-und-pop2smtp-bzw-imap2smtp-tool/</link>
		<comments>http://blog.intelligibel.de/2009/05/12/test-mail-server-tool-und-pop2smtp-bzw-imap2smtp-tool/#comments</comments>
		<pubDate>Tue, 12 May 2009 15:19:41 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=127</guid>
		<description><![CDATA[Test Mail Server Tool
Ein unheimlich nützliches kleines Tool um das Senden von E-Mail beim Entwickeln von Webanwendungen zu testen ist ToolHeap.
Das Programm lauscht auf localhost auf einem SMTP Port (standardmäßig 25, was sich aber einstellen lässt). Jegliche E-Mail, die an diesen Port verschickt wird, wird in einem einstellbaren Verzeichnis im eml-Format gespeichert und optional gleich [...]]]></description>
			<content:encoded><![CDATA[<h3>Test Mail Server Tool</h3>
<p>Ein unheimlich nützliches kleines Tool um das Senden von E-Mail beim Entwickeln von Webanwendungen zu testen ist <a href="http://www.toolheap.com/" target="_blank">ToolHeap</a>.</p>
<p>Das Programm lauscht auf localhost auf einem SMTP Port (standardmäßig 25, was sich aber einstellen lässt). Jegliche E-Mail, die an diesen Port verschickt wird, wird in einem einstellbaren Verzeichnis im eml-Format gespeichert und optional gleich mit dem assoziierten E-Mail Programm geöffnet.</p>
<h3>P2S POP2SMTP bzw. IMAP2SMTP Tool</h3>
<p>Ich hatte als POP2SMTP Tool bisher immer <a href="http://www.popcon.de/" target="_blank">POPcon</a> im Einsatz. Das Tool ist auch wirklich klasse es verrichtet einfach seine Arbeit und lässt sich durch so gut wie nichts beirren. Leider kostet es schon in der Standardversion 79 €. Die meisten meiner Kunden, die sich einen Small Business Server angeschafft haben, haben nicht wirklich viel Verständnis dafür, dass der teuere Server mit Exchange nicht einmal in der Lage ist anständig POP3 Postfächer abzurufen (der POP3 Connector von MS ist ja bekannter maßen ziemlicher Mist).</p>
<p>Gestern habe ich <a href="http://www.p2s-de.skittel.de/index.html" target="_blank">P2S</a> gefunden. Ein Tool das, derzeit zumindest, nichts kostet und das Gleiche können soll wie POPcon. Ich habe es noch nicht testen können. Aber es sieht vielversprechend aus.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/05/12/test-mail-server-tool-und-pop2smtp-bzw-imap2smtp-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neues Wordpress-Theme up and running</title>
		<link>http://blog.intelligibel.de/2009/04/27/neues-wordpress-theme-up-and-running/</link>
		<comments>http://blog.intelligibel.de/2009/04/27/neues-wordpress-theme-up-and-running/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 22:21:32 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[I18N]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=38</guid>
		<description><![CDATA[Ich habe das aktuelle Theme &#8220;inove&#8221; von mg12 angepasst und ausgebaut. Ich habe unter Anderem die Sprachdatei für Deutsch mit Poedit vervollständigt und das Layout und die CSS etwas angepasst. Ich habe auch die sidebar.php meinen Bedürfnissen angepasst und in den Footer die Widgetfähigkeit eingebaut &#8211; Ist eigentlich recht einfach und übersichtlich.
]]></description>
			<content:encoded><![CDATA[<p>Ich habe das aktuelle Theme &#8220;inove&#8221; von <a href="http://www.neoease.com/" target="_blank">mg12</a> angepasst und ausgebaut. Ich habe unter Anderem die Sprachdatei für Deutsch mit <a href="http://www.poedit.net/" target="_blank">Poedit</a> vervollständigt und das Layout und die CSS etwas angepasst. Ich habe auch die sidebar.php meinen Bedürfnissen angepasst und in den Footer die Widgetfähigkeit eingebaut &#8211; Ist eigentlich recht <a href="http://www.web-ideas.de/tutorials/wordpress-tutorial-footer-design-mit-widgets/" target="_blank">einfach </a>und übersichtlich.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/04/27/neues-wordpress-theme-up-and-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>COMODO Firewall und VPN</title>
		<link>http://blog.intelligibel.de/2009/04/25/comodo-firewall-und-vpn/</link>
		<comments>http://blog.intelligibel.de/2009/04/25/comodo-firewall-und-vpn/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 08:29:52 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=20</guid>
		<description><![CDATA[Ich habe auf meinem Notebook seit einiger Zeit die Firewall von Comodo Internet Security installiert. Es funktionierte soweit auch recht zufriedenstellend, bis auf die Tatsache, dass ich mich nicht über VPN in andere Netze einwählen konnte &#8211; weder Windows VPN über PPTP, noch über FRITZ!Fernzugang, noch OpenVPN. Die Lösung ist recht versteckt in Comodo:
in den [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe auf meinem Notebook seit einiger Zeit die <a href="http://personalfirewall.comodo.com/download_firewall.html" target="_blank">Firewall von Comodo Internet Security</a> installiert. Es funktionierte soweit auch recht zufriedenstellend, bis auf die Tatsache, dass ich mich nicht über VPN in andere Netze einwählen konnte &#8211; weder Windows VPN über PPTP, noch über FRITZ!Fernzugang, noch OpenVPN. Die Lösung ist recht versteckt in Comodo:</p>
<p>in den Einstellungen unter <em>Firewall-&gt;Advanced-&gt;Attack Detection Settings-&gt;Miscellaneous-&gt;Block Fragmented IP datagrams</em> das Häkchen entfernen. Danach funktionieren alle VPN Verbindungen wie gewünscht.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/04/25/comodo-firewall-und-vpn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>dojo und der ewige K(r)ampf</title>
		<link>http://blog.intelligibel.de/2009/04/24/dojo-und-der-ewige-krampf/</link>
		<comments>http://blog.intelligibel.de/2009/04/24/dojo-und-der-ewige-krampf/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 19:22:16 +0000</pubDate>
		<dc:creator>Viktor Grandgeorg</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.intelligibel.de/?p=12</guid>
		<description><![CDATA[Ich habe auf einem Testrechner die wohl ausgefeilteste Referenzimplementierung die Pastebin app für Zend Framework mit dojo von Matthew Weier O&#8217;Phinney installiert. Der PHP Code und der Umgang mit Objekten ist sicher sehr elegant, aber &#8230;
Unter Windows gestaltet sich die Installation nicht ganz einfach, da Matthew mit symlinks arbeitet. Hat man kein Vista zur Hand [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe auf einem Testrechner die wohl ausgefeilteste Referenzimplementierung die <a href="http://weierophinney.net/matthew/archives/189-Pastebin-app-and-conference-updates.html" target="_blank">Pastebin app</a> für <a href="http://framework.zend.com/" target="_blank">Zend Framework</a> mit <a href="http://www.dojotoolkit.org/" target="_blank">dojo </a>von Matthew Weier O&#8217;Phinney installiert. Der PHP Code und der Umgang mit Objekten ist sicher sehr elegant, aber &#8230;</p>
<p>Unter Windows gestaltet sich die Installation nicht ganz einfach, da Matthew mit symlinks arbeitet. Hat man kein Vista zur Hand oder kein cygwin installiert, kann man aber die<a href="http://technet.microsoft.com/de-de/sysinternals/bb896768.aspx" target="_blank"> junction.exe</a> von Microsoft installieren, mit der man einfach symbolische Verknüpfungen erstallen kann.</p>
<p>Nach der Installation ist das Ergebnis aber eher ernüchternd. Die Performance der Anwendung ist lausig. Die Länge der Permalinks mit <em>http://example.com/spindle/paste/display/id/nummer</em> ist viel zu lang &#8211; ein typisches ZF Problem (von wegen module/controller/action/key1/var1). Es kann sich überhaupt nicht mit <a href="http://pastebin.com/" target="_blank">pastebin.com</a> oder <a href="http://de.pastebin.ca/" target="_blank">de.pastebin.ca</a> messen.</p>
<p>Schlimmer finde ich jedoch, dass dojo bzw. die benutzerdefinierten Klassen von Matthiew für dojo im Microsoft Internet Explorer 7 überhaupt nicht funktionieren. Es gibt eine Fehlermeldung (eigentlich zwei) in der JS Console: Colud not load &#8217;spindle.main&#8217;. Werde es noch gegen den IE8 testen, denke aber nicht, dass es besser geht.</p>
<p>Dojo an sich hat echte Probleme mit dem IE &#8211; man versuche mit dem IE8 den <a href="http://dojocampus.org/explorer/" target="_blank">Dojo Feature Explorer</a>.</p>
<p>Ich habe dahingehend Matthiew auch <a href="http://weierophinney.net/matthew/archives/189-Pastebin-app-and-conference-updates.html#c24402" target="_blank">einen Kommentar geschrieben</a>.</p>
<p>Ich hätte es ja eher begrüßt, wenn ZF nicht gleich dojo heiratet, sondern vielleicht lieber <a href="http://developer.yahoo.com/yui/" target="_blank">YUI</a> oder Ähnliches.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intelligibel.de/2009/04/24/dojo-und-der-ewige-krampf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
