<?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>Interessante Zeiten &#187; Webdesign</title>
	<atom:link href="http://www.interessante-zeiten.de/category/webdesign/feed" rel="self" type="application/rss+xml" />
	<link>http://www.interessante-zeiten.de</link>
	<description>Es gibt einen Fluch, der lautet: „Mögest Du in interessanten Zeiten leben!”</description>
	<lastBuildDate>Sun, 04 Dec 2011 18:39:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>No, it will not.</title>
		<link>http://www.interessante-zeiten.de/webdesign/no-it-will-not-336.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/no-it-will-not-336.html#comments</comments>
		<pubDate>Sat, 20 Dec 2008 08:13:54 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[fail]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/webdesign/no-it-will-not-336.html</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.interessante-zeiten.de/wp-content/uploads/2008/12/this-div-will-be-replaced.jpeg" alt="this div will be replaced.jpeg" border="0" width="320" height="480" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/no-it-will-not-336.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ä zu AE &#8211; Umlaute mit PHP umwandeln</title>
		<link>http://www.interessante-zeiten.de/webdesign/ae-zu-ae-umlaute-mit-php-umwandeln-312.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/ae-zu-ae-umlaute-mit-php-umwandeln-312.html#comments</comments>
		<pubDate>Wed, 15 Oct 2008 21:01:00 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sonderzeichen]]></category>
		<category><![CDATA[transliteration]]></category>
		<category><![CDATA[umlaute]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/?p=312</guid>
		<description><![CDATA[Alle Nase lang muss man als Webdeveloper Sonderzeichen gärtnern. Muss man in PHP Umlaute loswerden, ein &#8220;ß&#8221; verschwinden lassen, einen dieser Ausnahmebuchstaben tilgen – um z.B. schicke URLs wahr werden zu lassen. Oft muss es eben ACSII sein, und das ist halt ein beschissen kleiner Zeichenvorrat von 128 Zeichen. Da ist an Umlaute nicht zu [...]]]></description>
			<content:encoded><![CDATA[<p>Alle Nase lang muss man als Webdeveloper Sonderzeichen gärtnern. Muss man in PHP Umlaute loswerden, ein &#8220;ß&#8221; verschwinden lassen, einen dieser Ausnahmebuchstaben tilgen – um z.B. schicke URLs wahr werden zu lassen. Oft muss es eben ACSII sein, und das ist halt ein beschissen kleiner Zeichenvorrat von 128 Zeichen. Da ist an Umlaute nicht zu denken.</p>
<p>Das kann man machen, indem man sich große Tabellen anlegt und weitläufiges Suchen &#038; Ersetzen durchführt. Ein &#8220;ä&#8221; wird da zu &#8220;ae&#8221;, ein &#8220;ß&#8221; zu &#8220;ss&#8221; und so fort. Will man das richtig machen, kann man da herrlich lange Zeit mit dem Tippen von Vorher/Nachher-Zuordnungen verbringen. Super. Muss man das nun unbedingt selber durchexerzieren? </p>
<p>Kann PHP das vielleicht ab Werk selber erledigen? Ja, doch! Das iconv-Modul bringt so einiges mit, um Zeichenketten zwischen Kodierungen hin- und herzuwandeln. Vor allem beherrscht die Funktion <code>iconv()</code> die Fähigkeit zur <em>Transliteration</em>. Das bedeutet, dass ein Zeichen welches im Ziel-Zeichensatz nicht zur Verfügung steht, durch ähnliche Zeichen ersetzt wird. Durch Anhängen von &#8220;//TRANSLIT&#8221; an den Zielzeichensatz bringt man die Funktion dazu, die speziellen Zeichen nicht zu verwerfen, sondern umzuwandeln:</p>
<pre>&lt;?php
$satz = "Olé Garçon! Diese Süßspeise schmeckt gar nicht übel! *börp*";
print (iconv("UTF-8", "ASCII//TRANSLIT", $satz));
?&gt;</pre>
<p>Das ergibt diese Zeichenfolge (wohlgemerkt wenn die PHP-Datei in UTF-8 kodiert ist): <br />
<em>Ole Garcon! Diese Suessspeise schmeckt gar nicht uebel! *boerp*</em></p>
<p>Na bitte!</p>
<p><a rel="nofollo" href="http://de.php.net/manual/de/intro.iconv.php">iconv()-Dokumentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/ae-zu-ae-umlaute-mit-php-umwandeln-312.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress-Sicherheit: Versionsnummer unterdrücken</title>
		<link>http://www.interessante-zeiten.de/webdesign/wordpress-sicherheit-versionsnummer-unterdruecken-310.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/wordpress-sicherheit-versionsnummer-unterdruecken-310.html#comments</comments>
		<pubDate>Mon, 13 Oct 2008 22:23:51 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sicherheit]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/?p=310</guid>
		<description><![CDATA[Die Macher von WordPress haben schon häufig Schelte für die Sicherheit ihres Weblog-Systems bekommen. Was tun als Hasenfüßiger Webmaster, der man ist? Da hat der &#8220;WordPress Codex&#8221; seit geraumer Zeit einen passenden Artikel parat, der sich der &#8220;Härtung&#8221; von WordPress widmet. Lesen sollte man den schon: Hardening WordPress Da wird nach der Parole &#8220;Security through [...]]]></description>
			<content:encoded><![CDATA[<p>Die Macher von WordPress haben schon häufig Schelte für die Sicherheit ihres Weblog-Systems bekommen. Was tun als Hasenfüßiger Webmaster, der man ist?<br />
Da hat der &#8220;WordPress Codex&#8221; seit geraumer Zeit einen passenden Artikel parat, der sich der &#8220;Härtung&#8221; von WordPress widmet. Lesen sollte man den schon: <a href="http://codex.wordpress.org/Hardening_WordPress" rel="nofollow">Hardening WordPress</a></p>
<p>Da wird nach der Parole &#8220;Security through obscurity&#8221; auch empfohlen, die Versionsnummer der Installation nicht laut herauszuposaunen, damit es die bösen Cracker in der Zeit zwischen Bekanntwerden einer Lücke und der Installation einer gefixten Version nicht so leicht damit haben, &#8220;willige&#8221; Opfer zu finden. Na gut, gar nicht so doof!</p>
<p>Leider reicht es dazu nicht aus, einfach das &#8220;Generator&#8221;-Metatag aus dem Header zu schnipsen. Das System plakatiert seine Versionsnummer an allen Ecken und Enden: in den HMTL-Seiten, in den Feeds und so fort. Das Entfernen des Metatags allein ist bei den letzten Versionswechseln noch ein Stück weit schwieriger geworden &ndash; das Tag wird inzwischen von der builtin-Funktion <code>wp_head()</code> erzeugt. Die macht auch noch andere Dinge und ist nicht so leicht verzichtbar.</p>
<p><strong>Abhilfe: </strong> der &#8220;Generator&#8221;-Funktion per Filter einen Riegel vorschieben. Am schnellsten geht das durch Einfügen folgender Zeilen in die <code>function.php</code> des eigenen WordPress-Templates unter <code>/wp-content/themes/THEME-NAME</code>:</p>
<pre>
function nichts() {
    return "";
}
add_filter('the_generator','nichts');
</pre>
<p>Das behebt das Problem direkt an der Wurzel, da WordPress auf die Funktion <code>the_generator()</code> an allerlei Stellen zurückgreift. Wer diesen &#8220;Schalldämper&#8221; lieber als PlugIn mag (zum ein- und ausknipsen), kann sich natürlich auch mit wenigen Handgriffen <a href="http://codex.wordpress.org/Plugin_Resources#Plugin_Development_Basics" rel="nofollo">selber eines daraus basteln</a> &ndash; das macht den Webmaster natürlich auch nicht doofer <img src='http://www.interessante-zeiten.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/wordpress-sicherheit-versionsnummer-unterdruecken-310.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comic Sans in AdSense &#8211; der Kelch geht vorüber</title>
		<link>http://www.interessante-zeiten.de/webdesign/comic-sans-in-adsense-der-kelch-geht-vorueber-298.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/comic-sans-in-adsense-der-kelch-geht-vorueber-298.html#comments</comments>
		<pubDate>Wed, 16 Jul 2008 18:01:14 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[SEM]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[adsense]]></category>
		<category><![CDATA[comicsans]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/?p=298</guid>
		<description><![CDATA[Die Welt ist ein Stück sicherer geworden: Comic Sans als Font für AdSense-Anzeigen (mit denen ja einige Quadratkilometer des Internets vollgepflastert sind) ist vom Tisch. Gott sei Dank. Google Finally Removes Comic Sans Font From AdSense Ads]]></description>
			<content:encoded><![CDATA[<p>Die Welt ist ein Stück sicherer geworden: <a href="http://www.interessante-zeiten.de/allgemein/comic-sans-fuer-adsense-anzeigen-280.html">Comic Sans als Font für AdSense-Anzeigen</a> (mit denen ja einige Quadratkilometer des Internets vollgepflastert sind) ist <a href="http://www.seroundtable.com/archives/017681.html">vom Tisch</a>.</p>
<p>Gott sei Dank.</p>
<p><a href="http://www.seroundtable.com/archives/017681.html">Google Finally Removes Comic Sans Font From AdSense Ads</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/comic-sans-in-adsense-der-kelch-geht-vorueber-298.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google-Gadget &#187;Klartext-Uhr&#171; &#8211; Update</title>
		<link>http://www.interessante-zeiten.de/webdesign/google-gadget-klartext-uhr-update-286.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/google-gadget-klartext-uhr-update-286.html#comments</comments>
		<pubDate>Tue, 27 May 2008 21:55:36 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[igoogle]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/?p=286</guid>
		<description><![CDATA[Mein Google-Gadget-Kleinod &#8220;Klartextuhr&#8221; enthielt nen saudämlichen Fehler, der nun Geschichte ist. Für andere saudämliche Fehler habe ich natürlich weiterhin ein offenes Ohr So schaut das Ding übrigens aus, wer&#8217;s noch nicht kennt: Wer&#8217;s mal probieren möchte: hier gehts zur Klartext-Uhr]]></description>
			<content:encoded><![CDATA[<p>Mein Google-Gadget-Kleinod &#8220;Klartextuhr&#8221; enthielt nen saudämlichen Fehler, der nun Geschichte ist. Für andere saudämliche Fehler habe ich natürlich weiterhin ein offenes Ohr <img src='http://www.interessante-zeiten.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>So schaut das Ding übrigens aus, wer&#8217;s noch nicht kennt:<br />
<script src="http://gmodules.com/ig/ifr?url=http://www.interessante-zeiten.de/gadgets/clock.xml&amp;up_lang=deutsch&amp;up_font=sans&amp;up_font_size=klein&amp;synd=open&amp;w=286&amp;h=50&amp;title=Umgangssprachen-Uhr&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script> </p>
<p>Wer&#8217;s mal probieren möchte: hier gehts zur <a href="http://www.interessante-zeiten.de/web/google-gadget-klartext-uhr-211.html" target="_self">Klartext-Uhr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/google-gadget-klartext-uhr-update-286.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1-Klick Auto-Update für WordPress</title>
		<link>http://www.interessante-zeiten.de/webdesign/1-klick-update-fuer-wordpress-204.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/1-klick-update-fuer-wordpress-204.html#comments</comments>
		<pubDate>Sun, 09 Sep 2007 19:59:33 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[automatisierung]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[ncftp]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/webdesign/1-klick-update-fuer-wordpress-204.html</guid>
		<description><![CDATA[Ich hab die Faxen dicke: ab mehr als einem zu pflegenden Blog wird die ewige (aber nötige) Updaterei zur Last. Und daher präsentiere ich hier mein bescheidenes Rezept zur automatischen Update-Verteilung von WordPress. Zutaten: Ein willfähriger, leicht zu automatisierender FTP-Client für die Kommandozeile, zum Beispiel nctftp eine Shell, wie z.B. die &#8220;bash&#8221; (auf besseren Systemen [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hab die Faxen dicke: ab mehr als einem zu pflegenden Blog wird die ewige (aber nötige) Updaterei zur Last. Und daher präsentiere ich hier mein bescheidenes Rezept zur automatischen Update-Verteilung von WordPress.</p>
<p>Zutaten:</p>
<ul>
<li>Ein willfähriger, leicht zu automatisierender FTP-Client für die Kommandozeile, zum Beispiel <a href="http://www.ncftp.com/">nctftp</a></li>
<li>eine Shell, wie z.B. die &#8220;bash&#8221; (auf besseren Systemen zu finden unter /bin/sh)</li>
<li>die Zugangsdaten der aktuell zu haltenden Blogs</li>
<li>wenige Minuten Tippen</li>
<li>Für Neulinge: Internetbrowser und Suchmaschine zum Aufsuchen von Hilfe-Seiten</li>
</ul>
<p>Das Rezept:</p>
<ul>
<li>Editor öffnen</li>
<li>Ein Script für den Upload schreiben</li>
<li>Vorsichtige Naturen führen natürlich zuvor auch  ein FTP-Backup durch – in entgegengesetzter Richtung</li>
<li>Script mit &#8220;ausführbar&#8221;-Flag versehen, ggf. Verknüpfung anlegen</li>
</ul>
<p>… und fertig ist der Lack. Schon macht der Rechenknecht das, wozu er gedacht ist: dem Menschen Arbeit abnehmen. Dieser kann jetzt anstatt Dateien mit der Maus im FTP-Client durch die Gegend zu bugsieren den sonntäglichen Tatort anschauen (nur so zum Beispiel).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/1-klick-update-fuer-wordpress-204.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.2 – Update Tango</title>
		<link>http://www.interessante-zeiten.de/webdesign/wordpress-22-update-tango-159.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/wordpress-22-update-tango-159.html#comments</comments>
		<pubDate>Wed, 16 May 2007 22:45:03 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/webdesign/wordpress-22-update-tango-159.html</guid>
		<description><![CDATA[Jetzt u.a. mit Widget-Unterstützung. Ob meine Neugierde ausreicht, das Template soweit abzuändern dasses da mitspielt? Hm &#8230; http://automattic.com/code/widgets/themes/]]></description>
			<content:encoded><![CDATA[<p>Jetzt u.a. mit Widget-Unterstützung. Ob meine Neugierde ausreicht, das Template soweit abzuändern dasses da mitspielt? Hm &#8230;<br />
<a href="http://automattic.com/code/widgets/themes/">http://automattic.com/code/widgets/themes/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/wordpress-22-update-tango-159.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unaufdringliche Bookmarking-Buttons</title>
		<link>http://www.interessante-zeiten.de/webdesign/unaufdringliche-bookmarking-buttons-146.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/unaufdringliche-bookmarking-buttons-146.html#comments</comments>
		<pubDate>Tue, 13 Mar 2007 22:06:30 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bookmark]]></category>
		<category><![CDATA[lesezeichen]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/webdesign/unaufdringliche-bookmarking-buttons-146.html</guid>
		<description><![CDATA[Lieber Besucher, wenn Sie Benutzer eines populären Bookmarking-Services sind, sehen Sie auf dieser Seite (hoffentlich) einen entsprechenden, prominent platzierten Link. Und wenn nicht (jetzt kommts!), sehen Sie hoffentlich keinen Link. Deswegen auch &#8220;unaufdringlich&#8221;, nicht wahr &#8230;]]></description>
			<content:encoded><![CDATA[<p>Lieber Besucher,</p>
<p>wenn Sie Benutzer eines populären Bookmarking-Services sind, sehen Sie auf dieser Seite (hoffentlich) einen entsprechenden, prominent platzierten Link.</p>
<p>Und wenn nicht (jetzt kommts!), sehen Sie hoffentlich <em>keinen</em> Link. </p>
<p>Deswegen auch &#8220;unaufdringlich&#8221;, nicht wahr &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/unaufdringliche-bookmarking-buttons-146.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>gz-Kompression für statische Dateien mit Apache und PHP</title>
		<link>http://www.interessante-zeiten.de/webdesign/gz-kompression-fuer-statische-dateien-mit-apache-und-php-145.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/gz-kompression-fuer-statische-dateien-mit-apache-und-php-145.html#comments</comments>
		<pubDate>Mon, 26 Feb 2007 20:12:08 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[304]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ergonomie]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[kompression]]></category>
		<category><![CDATA[mod-deflate]]></category>
		<category><![CDATA[mod-gzip]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/webdesign/gz-kompression-fuer-statische-dateien-mit-apache-und-php-145.html</guid>
		<description><![CDATA[Des armen Mannes Kompressionsmodul: mit wenigen Handgriffen kann man auch auf dem Webspace für den kleinen Geldbeutel Scripte und Stylesheets gz-komprimiert ausliefern, Apache und PHP vorausgesetzt.]]></description>
			<content:encoded><![CDATA[<p><strong>"Der erste Eindruck zählt" gilt bei einer Website nicht nur für die Optik, sondern auch für die Geschwindigkeit mit der die Seite geladen wird. Und auch trotz schlankem Quellcode bringt eine Webseite mit all ihren Bildern, Stylesheets, Javascript-Frameworks schnell eine stattliche Größe von mehreren 100KByte auf die Waage, die erstmal durch die Leitung müssen. </strong></p>
<p>Dann schlägt beim Apache-Webserver <em>eigentlich</em> die Stunde für Module wie <em>mod_gzip</em> oder <em>mod_deflate</em>, die für Kompression bei der Übertragung zuständig sind. Gerade diese Helferlein stehen beim Billighoster aber höchst selten zur Verfügung. Der Hoster muss in der Regel mit seiner Prozessorkraft haushalten – und wo käme man da hin, wenn jeder so mirnichts–dirnichts Rechenpower für das Komprimieren von Daten abzweigen kann (um Traffic zu sparen, den man genausogut teuer verkaufen kann)?</p>
<p><strong>Scripte &#038; Stylesheets komprimieren</strong><br />
Scripte und Stylesheets schreien dabei geradezu nach komprimierter Übertragung, bestehen sie doch aus Kompressions-freundlichem ASCII-Gebräu. Wie kriegt man diese Dateien also klein, ohne mod_gzip / mod_deflate zu bemühen?</p>
<p><strong>Kompression mit PHP</strong><br />
Nun gut – dann muss der PHP-Interpreter herhalten: Kompression anschalten, Dateiinhalt ausgeben ausgeben (natürlich mit dem entsprechenden Header), fertig.</p>
<p>Als Beispiel soll mal die Datei "prototype.js" des Prototype-Frameworks herhalten, die unkomprimiert immerhin an die 72KByte auf die Waage bringt.</p>
<div class="igBar"><span id="lphp-1"><a href="#" onclick="javascript:showPlainTxt('php-1'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-1">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/ob_start"><span style="color:#000066;">ob_start</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"ob_gzhandler"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/header"><span style="color:#000066;">header</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Content-Type: text/javascript'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/print"><span style="color:#000066;">print</span></a> <span style="color:#006600; font-weight:bold;">&#40;</span>...<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#FF9933; font-style:italic;">//JavaScript-Code ausgeben </span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Und siehe da: der Firefox weist ca. 15KByte übertragene Daten aus – "mal eben" 80% Ladezeit gespart …</p>
<p><strong>Schönheitsfehler Dateiendung</strong><br />
Abzüge in der B-Note gibt es für die falsche Dateiendung: damit die umgepolte Javascript-Datei vom PHP-Parser verarbeitet wird, muss die Endung .php sein. Da weisen wir den Apache per .htaccess-Datei doch lieber gleich darauf hin, dass .js-Dateien ab jetzt PHP-Code enthalten:</p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">AddType application/x-httpd-php .<span style="">js</span> .<span style="">php</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>(Obacht: die Art, wie dies eingestellt wird kann schonmal von Hoster zu Hoster verschieden sein.)</p>
<p><strong>Kompression ohne Caching ist Quatsch</strong><br />
Indem ich alle .js-Dateien zu dynamische Seiten "befördere", kann die Datei nicht mehr gecached werden und wird bei jedem Seitenaufruf neu geladen. Oopsie! In meinem Beispiel habe ich also schlimmstenfalls nach 5 Seitenimpressionen a 15KByte den gewonnenen Vorteil wieder verspielt. Wer "A" sagt, muss also auch …</p>
<p><strong>… den Browser zum Cachen ermuntern</strong><br />
Header-Informationen über den Zeitpunkt der letzten Änderung an der Datei kann der Webserver nicht an den Browser senden, weil wir PHP benutzen – dynamische Seiten ändern sich eben ständig!<br />
Das erledigen wir also von Hand, indem wir den entsprechenden "Last-Modified" Header selbst erzeugen. </p>
<p>Und damit das auch den gewünschten Effekt zeigt, müssen wir vor der Ausgabe des Dateiinhalts prüfen, ob der Browser noch eine aktuelle Version besitzt ("If-modified-since"-Header). Ist das der Fall, senden wir eine "304 Not Modified"-Antwort – die Datei muss nicht übertragen werden, Zeit und Traffic werden gespart. Hurrah!</p>
<p>Es kommt noch besser: mit der <a href="http://pear.php.net/package/HTTP_Header">HTTP::Header::Cache()</a> Klasse aus dem PEAR-Repository bringt man seinen dynamischen Dateien im Handumdrehen statische Verhaltensweisen bei und muss nicht das Rad neu erfinden:</p>
<div class="igBar"><span id="lphp-3"><a href="#" onclick="javascript:showPlainTxt('php-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-3">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">require</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'HTTP/Header/Cache.php'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$header</span> = <span style="color:#000000; font-weight:bold;">new</span> HTTP_Header_Cache<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC66CC;color:#800000;">1</span>,<span style="color:#FF0000;">'days'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$header</span>-&gt;<span style="color:#006600;">sendHeaders</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$date</span>=HTTP::<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Das "Haltbarkeitsdatum" der Datei setze ich einfach mal auf 24 Stunden an. Die Cache-Klasse prüft nun, ob der Browser noch eine gültige Version der Datei besitzt – ist das der Fall, wird der besagte 304-Header abgesendet und das Script beendet.</p>
<p><strong>Plug &#038; Play</strong><br />
Alle seine Scripte und Stylesheets mit PHP-Code vollzustopfen macht auch nicht grade viel Spaß. Darum weise ich den Server per <em>.htaccess</em>-Datei an, in meinem Script-Ordner allen PHP-Dateien automatisch die Datei <em>prepend.php</em> voranzustellen. </p>
<div class="igBar"><span id="lcode-4"><a href="#" onclick="javascript:showPlainTxt('code-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-4">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">php_value auto_prepend_file prepend.<span style="">php</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Da sich alle zum Einleiten der Kompression nötigen Schritte vor der Ausgabe abspielen (logisch), brauche ich die zu komprimierenden Dateien auf diese Art gar nicht ändern. Einen bitteren Nachgeschmack hinterlässt, dass der PHP-Interpreter die nachfolgende Script/Stylesheet-Datei vergeblich nach PHP-Code durchwühlt. Da bleibt noch Raum für spannende Verbesserungen, aber das soll uns erstmal nicht interessieren.</p>
<p>Diese Lösung gewinnt vielleicht keine Benchmarks, trägt aber vielleicht ein wenig zur verbesserten Benutzererfahrung bei.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/gz-kompression-fuer-statische-dateien-mit-apache-und-php-145.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Und zur Abwechslung: ein WordPress-Update</title>
		<link>http://www.interessante-zeiten.de/webdesign/und-zur-abwechslung-ein-wordpress-update-143.html</link>
		<comments>http://www.interessante-zeiten.de/webdesign/und-zur-abwechslung-ein-wordpress-update-143.html#comments</comments>
		<pubDate>Wed, 21 Feb 2007 19:42:07 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.interessante-zeiten.de/webdesign/und-zur-abwechslung-ein-wordpress-update-143.html</guid>
		<description><![CDATA[WordPress 2.1.1 – ich finde Updates gut, habe ich das schonmal gesagt? Dient der Sicherheit, zeugt von fleißigen Programmierern die sich der Verantwortung stellen und so … ehrlich! Also wieder saugen, Backup machen, hochladen, beten. Diesmal bin ich immerhin vorbereitet: dank DSL2 (hähähä) geht der Kram diesmal deutlich schneller vonstatten.]]></description>
			<content:encoded><![CDATA[<p>WordPress 2.1.1 – ich finde Updates gut, habe ich das schonmal gesagt? Dient der Sicherheit, zeugt von fleißigen Programmierern die sich der Verantwortung stellen und so … ehrlich!</p>
<p>Also wieder saugen, Backup machen, hochladen, beten.<br />
Diesmal bin ich immerhin vorbereitet: dank DSL2 (hähähä) geht der Kram diesmal deutlich schneller vonstatten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/webdesign/und-zur-abwechslung-ein-wordpress-update-143.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schöner Leben ohne Internet Explorer</title>
		<link>http://www.interessante-zeiten.de/windows/schoener-leben-ohne-internet-explorer-111.html</link>
		<comments>http://www.interessante-zeiten.de/windows/schoener-leben-ohne-internet-explorer-111.html#comments</comments>
		<pubDate>Fri, 17 Nov 2006 14:45:35 +0000</pubDate>
		<dc:creator>Henning</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[internetexplorer]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[templates]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.rosenhagen.info/windows/schoener-leben-ohne-internet-explorer-111.html</guid>
		<description><![CDATA[Der Internet Explorer geht mir bei der Webentwicklung tierisch auf die Eier.]]></description>
			<content:encoded><![CDATA[<p>Mein IBM-kompatibler PC ist ein derart frankensteinisiertes Gerät, dass ich kaum noch mit der Wimper zucke, wenn er alle paar Monate wieder mal den Betrieb einstellt. Mittlerweile komme ich dank Mac bestens ohne das alte Wrack zurecht. Verhaltenes Tanzen am Grab ist daher grade wieder aktuell.</p>
<p>Zum Debuggen des geänderten WordPress-Templates – evtl. ist es ja bereits jemandem aufgefallen – fehlt mir die olle Möhre allerdings dann doch gewaltig und der Emulator muss herhalten. Scheiss Internet Explorer halt, aber das ist ja auch nix neues. </p>
<p>Meine Herangehensweise an die Cross-Browser-Problemchen sieht übrigens wie folgt aus:</p>
<ul>
<li>Sorgenfreies CSS-Basteln mit dem Firefox, gleichzeitiges Kontrollieren des Outputs im Safari, Opera usw. – kurzum: in Browsern, die nicht so lächerlich sind wie der IE.</li>
<li>Danach: anpassen der bisher schönen und validen Seite an die buckelige, zurückgebliebene Browser-Verwandschaft. Den Internet Explorer.</li>
</ul>
<p>In der Regel kann ich so mein Feierabend-Bier wesentlich früher aufmachen, als wenn ich vorwiegend auf die Darstellung im IE schauen würde. Trotz vieler noch vorhandener Bugs werde ich mir genau das jetzt gestatten <img src='http://www.interessante-zeiten.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.interessante-zeiten.de/windows/schoener-leben-ohne-internet-explorer-111.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

