<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Nico Steiner - Frontend-Entwicklung und -Architektur</title>
    <link>http://www.nicosteiner.de/</link>
    <description>Frontend-Technologien, Web Standards, Accessibility, SEO, Performance und Modularisierung</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.4.1 - http://www.s9y.org/</generator>
    
    

<item>
    <title>New SenSEO version is coming</title>
    <link>http://www.nicosteiner.de/archives/286-New-SenSEO-version-is-coming.html</link>
    
    <comments>http://www.nicosteiner.de/archives/286-New-SenSEO-version-is-coming.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=286</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=286</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    In the next days I will finish work on a completely refactored version of SenSEO.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;SenSEO will bootstrap&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
SenSEO will no longer integrate into Firebug but will be, what Mozilla calls, a bootstrapped add-on.&lt;br /&gt;
&lt;br /&gt;
&lt;cite&gt;Bootstrapped add-ons are a special kind of add-on that developers can choose to use instead of normal add-ons in order to allow users to install and use the add-on without needing to restart the application.&lt;/cite&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;New features will come along&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;SenSEO will reopen with the last active tab.&lt;/li&gt;&lt;li&gt;Page load time is calculated with new &lt;a href=&quot;https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html&quot;&gt;HTML5 Navigation Timing API&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;SenSEO is taking &lt;a href=&quot;http://support.google.com/webmasters/bin/answer.py?hl=en&amp;answer=176035&quot;&gt;Microdata&lt;/a&gt; into account.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Some preview screenshots&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:188 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;679&quot; height=&quot;458&quot; src=&quot;http://www.nicosteiner.de/uploads/senseo-preview-1.png&quot; alt=&quot;SenSEO preview&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:189 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;677&quot; height=&quot;456&quot; src=&quot;http://www.nicosteiner.de/uploads/senseo-preview-2.png&quot; alt=&quot;SenSEO preview&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:190 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;675&quot; height=&quot;458&quot; src=&quot;http://www.nicosteiner.de/uploads/senseo-preview-3.png&quot; alt=&quot;SenSEO preview&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
The refactored code in most cases is based on web technologies - don&#039;t nail me down on that, but this should make it easier to publish SenSEO on other platforms also.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://admintell.napco.com/ee/images/uploads/gamertell/chrome-firefox-fight-ie-gives-up.jpg&quot; alt=&quot;SenSEO for Chrome&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
If you find bugs (there will be some, the code is brand new), please report them on &lt;a href=&quot;http://getsatisfaction.com/senseo&quot;&gt;getsatisfaction.com/senseo&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Sun, 05 Feb 2012 01:31:56 +0100</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/286-guid.html</guid>
    
</item>
<item>
    <title>Mini-Suchmaschine mit Frontend-Technologien</title>
    <link>http://www.nicosteiner.de/archives/285-Mini-Suchmaschine-mit-Frontend-Technologien.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/285-Mini-Suchmaschine-mit-Frontend-Technologien.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=285</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=285</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Die &lt;a href=&quot;http://www.sensational-seo.com/&quot;&gt;SenSEO-Extension&lt;/a&gt; bekommt ein neues Feature &quot;Analyze all pages&quot;. Hiermit soll es möglich sein, mit einem Klick die gesamte Website zu crawlen und sämtliche Seiten anhand vorgegebener Keywords zu bewerten. Dieses Crawlen und Bewerten wird ausschließlich mit Frontend-Technologien implementiert. Die nachfolgende Grafik zeigt die geplanten Schritte.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:187 --&gt;&lt;img width=&quot;708&quot; height=&quot;637&quot; src=&quot;http://www.nicosteiner.de/uploads/mini-crawler.png&quot; alt=&quot;Mini-Searchengine&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Der Anfang ist bereits geschafft. Mit &lt;a href=&quot;http://www.sensational-seo.com/mini-searchengine/&quot;&gt;diesem Prototypen&lt;/a&gt; (läuft nur im Firefox) ist es möglich, aus dem Markup einer vorgegebenen Seite sämtliche Links zu extrahieren. Es können lediglich Seiten von sensational-seo.com angegeben werden, da die &lt;a href=&quot;http://en.wikipedia.org/wiki/Same_origin_policy&quot;&gt;Same Origin Policy&lt;/a&gt; nur Seiten der selben Domain für die Analyse zulässt.&lt;br /&gt;
&lt;br /&gt;
Das Markup wird mit der &lt;a href=&quot;http://www.w3.org/TR/XMLHttpRequest/ &quot;&gt;XMLHttpRequest API&lt;/a&gt; abgerufen und mit der evaluate Function der Firefox &lt;a href=&quot;https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript&quot;&gt;XPath JavaScript API&lt;/a&gt; geparst.&lt;br /&gt;
&lt;br /&gt;
Da die API lediglich DOM Dokumente https://developer.mozilla.org/en/DOM/document verarbeitet, wird die als String gelieferte XMLHttpRequest Response vorher einem iFrame als Inhalt zugewiesen. Der folgende Code macht dies möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;// create iframe&lt;br /&gt;
var responseTextIframeElement = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
responseTextIframeElement.setAttribute(&#039;width&#039;, &#039;0&#039;);&lt;br /&gt;
responseTextIframeElement.setAttribute(&#039;height&#039;, &#039;0&#039;);&lt;br /&gt;
responseTextIframe = document.body.appendChild(responseTextIframeElement);&lt;br /&gt;
responseTextIframe.contentWindow.document.write(responseText);&lt;br /&gt;
var responseXML = responseTextIframe.contentWindow.document;&lt;br /&gt;
// clear iframe&lt;br /&gt;
responseTextIframe.parentNode.removeChild(responseTextIframe);&lt;br /&gt;
mse.Crawler.gotPageContentByUrl(responseXML);&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Möchte man ohne XMLHttpRequest API arbeiten, kann man einem zuvor erzeugten iFrame auch einfach den URL als scr-Attribut zuweisen.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;// create iframe&lt;br /&gt;
var responseTextIframeElement = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
responseTextIframeElement.setAttribute(&#039;width&#039;, &#039;0&#039;);&lt;br /&gt;
responseTextIframeElement.setAttribute(&#039;height&#039;, &#039;0&#039;);&lt;br /&gt;
responseTextIframe = document.body.appendChild(responseTextIframeElement);&lt;br /&gt;
responseTextIframe.addEventListener(&#039;load&#039;, function(e) {&lt;br /&gt;
  var responseTextIframe = this;&lt;br /&gt;
  var responseXML = responseTextIframe.contentWindow.document;&lt;br /&gt;
  // clear iframe&lt;br /&gt;
  responseTextIframe.parentNode.removeChild(responseTextIframe);&lt;br /&gt;
  // this is not the best sollution&lt;br /&gt;
  mse.Crawler.gotPageContentByUrl(responseXML);&lt;br /&gt;
}, false);&lt;br /&gt;
responseTextIframe.src = url;        &lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Die Extrahierung der href-Attribute aus sämtlichen Anker-Tags übernimmt dann der folgende Code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;var allLinksXpath = responseXML.evaluate(&#039;/html/body//a/@href&#039;, responseXML, null, XPathResult.ANY_TYPE, null);&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
In einem nächsten Schritt sollen all die Verlinkungen extrahiert werden, welche absolut (mit http Schema) auf die selbe Domain verweisen oder Seiten relativ referenzieren. Diese Verlinkungen werden mit der &lt;a href=&quot;http://dev.w3.org/html5/webstorage/&quot;&gt;Local Storage API&lt;/a&gt; auf einem Stack abgelegt und sequentiell nach dem LILO-Prinzip (Last in, Last out) gecrawlt. Dabei wird die Bereinigung von Dubletten mit Hilfe des &lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html&quot;&gt;Canonical-Tag&lt;/a&gt; eine wichtige Rolle spielen. Im Local Storage wird neben der extrahierten URL also auch immer eine zweite kanonische URL abgelegt, welche durch einen entsprechenden Abgleich das doppelte Crawlen von Seiten verhindern soll. 
    </content:encoded>

    <pubDate>Mon, 24 Oct 2011 20:44:56 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/285-guid.html</guid>
    
</item>
<item>
    <title>Rendern von Seiten-Komponenten</title>
    <link>http://www.nicosteiner.de/archives/284-Rendern-von-Seiten-Komponenten.html</link>
    
    <comments>http://www.nicosteiner.de/archives/284-Rendern-von-Seiten-Komponenten.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=284</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=284</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Möchte man nur Teile einer Seite neu rendern, ohne den Rest der Seite zu verändern, bedient man sich häufig der DOM-Manipulation mit JavaScript. Sind an diesem Prozess dynamische Daten beteiligt, die auf dem Server gehalten werden, kommt auch noch XHR und JSON zum Austausch der Daten hinzu. Konkret ergeben sich daraus folgende Schritte, die für gewöhnlich als AJAX bezeichnet werden:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Ein XHR-Request erfragt Daten vom Server, die dieser in einer Session hält&lt;/li&gt;&lt;li&gt;Der Server sendet die angeforderten Daten im JSON-Format und der Client wandelt diese in JavaScript-Objekte&lt;/li&gt;&lt;li&gt;Basierend auf den so entstandenen Objekten werden mit JavaScript Manipulationen am bestehenden HTML-Dokument vorgenommen&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Einige Nachteile dieses Vorgehens&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Der Ansatz funktioniert nur mit JavaScript - ohne JavaScript findet keine Veränderung des Dokuments statt&lt;/li&gt;&lt;li&gt;Eigens für die DOM-Manipulation muss JavaScript-Code geschrieben werden - auf eventuell bestehenden Code des Templatesystems auf dem Server kann nicht zurückgegriffen werden&lt;/li&gt;&lt;li&gt;Durch Punkt 2 besteht die Tendenz zum Duplizieren von Code in verschiedenen Sprachen auf Server- und Clientseite&lt;/li&gt;&lt;li&gt;Setzt man sehr massiv auf den oben beschriebenen Ansatz, sind für Suchmaschinen kaum verwertbare Inhalte verfügbar&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Wie können diese Nachteile umgangen werden?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Die meisten Templatesysteme setzen das HTML-Dokument aus einer Kombination verschiedener Seiten-Komponenten zusammen - typisch hierfür sind ein Header-, Content- und Footer-Bereich - aber auch Navigation, Sidebar etc. bilden solche Komponenten. Oft werden dynamische Daten genutzt, um z. B. eine Navigation zu erzeugen, die Links zu neu erzeugten Seiten generiert, ohne weitere Veränderungen am Code vorzunehmen zu müssen.&lt;br /&gt;
&lt;br /&gt;
Am Beispiel einer Kostenübersicht möchte ich demonstrieren, wie solch eine Komponente mit XHR nach jeder Veränderung des Warenkorbs ohne Neuladen der Seite aktualisiert werden kann. Der folgende Wireframe zeigt den schematisch Aufbau der Seite - links die zu aktualisierende Kostenübersicht, rechts der Bereich, über den Veränderungen am Warenkorb vorgenommen werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;!-- s9ymdb:184 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;500&quot; height=&quot;425&quot; style=&quot;border: 0px; margin: 0 auto;&quot; src=&quot;http://www.nicosteiner.de/uploads/telesales-1.png&quot; alt=&quot;Beispiel für eine Kostenübersicht&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Schritt 1 - Der initial Request&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Der initiale Request ruft die Seite das erste Mal vom Server ab. Angenommen, es befinden sich zu diesem Zeitpunkt bereits zwei Artikel im Warenkorb, dann würde die Kostenübersicht von einer Komponente erzeugt werden, die für jeden der zwei Artikel eine neue Tabellenzeile mit den zugehörigen Daten generiert. Zusammen mit den übrigen Teilen der Seite entsteht ein komplettes HTML-Dokument, welches über HTTP an den Browser ausgeliefert wird.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;!-- s9ymdb:185 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;453&quot; height=&quot;553&quot; style=&quot;border: 0px; margin: 0 auto;&quot; src=&quot;http://www.nicosteiner.de/uploads/html-xslt.png&quot; alt=&quot;Initialer HTTP-Request&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Soweit ist dies der klassische Ansatz, wie er von den meisten Frameworks verfolgt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Schritt 2 - Ein Artikel wird hinzugefügt&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Für das hinzufügen eines Artikels existiert ein Anker-Tag, welches einem Server-Script den neuen Artikel als GET-Paramter übergibt. Um das Neuladen der Seite zu verhindern, wird das Verhalten des Anker-Tags mit JavaScript unterbunden und statt dessen der Artikel über einen Webservice-Call mit XHR an den Server kommuniziert. Somit haben wir ein korrektes Verhalten für aktiviertes und deaktivertes JavaScript sichergestellt.&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird dem Warenkorbsystem auf dem Server der ausgewählte Artikel hinzugefügt. Bei deaktiviertem JavaScript würde erneut ein HTML-Dokument mit dem neuen Artikel in der Kostenübersicht erzeugt und über HTTP an den Browser ausgeliefert werden. Das interessante Verhalten ergibt sich bei aktiviertem JavaScript. Nachdem der Webserivce-Call erfolgreich verarbeitet wurde, gilt es die Kostenübersicht zu aktualisieren. Beim klassischen AJAX-Ansatz würde die Response die neuen Warenkorb-Artikel enthalten und per DOM-Manipulation würde die Tabelle der Kostenübersicht um eine weitere Zeile ergänzt werden. Dies kann bei komplexeren Problemen schnell sehr aufwändig werden. Eine elegantere Lösung besteht darin, das HTML-Fragment der Kostenübersicht auf dem Server neu erzeugen zu lassen und anschließend das bestehende Fragment mit JavaScript durch das neu erzeugte zu ersetzten. Die folgende Grafik soll diese Lösung veranschaulichen.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;!-- s9ymdb:186 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;500&quot; height=&quot;318&quot; style=&quot;border: 0px; margin: 0 auto;&quot; src=&quot;http://www.nicosteiner.de/uploads/html-xslt-2.png&quot; alt=&quot;Schaubild für HTML-Fragment&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Welche Probleme gibt es hierbei zu lösen&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Es muss eine Verbindung vom alten zum neuen HTML-Fragment hergestellt werden können. Am einfachsten ist dies mit einer Element-ID möglich, über welche das Fragment identifiziert und durch das neue ersetzt werden kann. Weiterhin muss das serverseitige Templatesystem/Framework eine entsprechende Funktionalität zum selektiven Neurendern von Seitenkomponenten bereitstellen. Komponentenbasierte Frameworks bieten hier die besten Chancen für einen solchen Support. Eine weitere Herausforderung stellt das Erzeugen und Entfernen von Event-Listenern auf Elemente des Fragments dar - auch hier sollte das Framework eine entsprechende Unterstützung bieten. 
    </content:encoded>

    <pubDate>Mon, 01 Aug 2011 21:55:54 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/284-guid.html</guid>
    
</item>
<item>
    <title>Hühnersuppe ala Mama</title>
    <link>http://www.nicosteiner.de/archives/283-Huehnersuppe-ala-Mama.html</link>
            <category>Rezepte</category>
    
    <comments>http://www.nicosteiner.de/archives/283-Huehnersuppe-ala-Mama.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=283</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=283</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Bei Erkältung hilft nur eins - die Hühnersuppe ala Mama. Die Zubereitung ist einfach und der &lt;a href=&quot;http://www.zeit.de/2003/11/Stimmts_H_9fhnersuppe&quot; title=&quot;Suppentherapie Zeit-Online&quot;&gt;Erkältung fällt dann auch nix mehr ein&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Folgende Zutaten werden für eine große Portion Hühnersuppe benötigt (bei einer kleineren Portion die halbe Menge oder fertig abgepacktes Suppengemüse kaufen):&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:182 --&gt;&lt;img width=&quot;300&quot; height=&quot;225&quot; style=&quot;float: right; border: 0px; padding-left: 5px;&quot; src=&quot;http://www.nicosteiner.de/uploads/huehnersuppe1.jpg&quot; alt=&quot;Hühnersuppe ala Mama&quot; /&gt;&lt;ul&gt;&lt;li&gt;1 großes Suppenhuhn vom Markt oder aus dem BIO-Laden&lt;/li&gt;&lt;li&gt;250g Suppennudeln&lt;/li&gt;&lt;li&gt;1 Kohlrabi&lt;/li&gt;&lt;li&gt;1 Butterrübe&lt;/li&gt;&lt;li&gt;1 Knolle Sellerie&lt;/li&gt;&lt;li&gt;2 mittelgroße Möhren&lt;/li&gt;&lt;li&gt;1 Stange Lauch&lt;/li&gt;&lt;li&gt;1 Bund Petersilie&lt;/li&gt;&lt;li&gt;Salz&lt;/li&gt;&lt;li&gt;Gemahlener schwarzer Pfeffer&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Das Huhn ggf. auftauen und dann mit viel Wasser und reichlich Salz in einem großen Topf bei halb aufgelegtem Deckel zum Kochen bringen. Danach auf mittlere Hitze zurückschalten und weiter kochen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Gemüse schälen und grob in größere Stücke zerteilen. Das Kleinschneiden kommt später. Beim Lauch gibt es zu beachten, dass auch die oberen, grünen Teile mitgekocht werden. Die Gemüsestücke zum Huhn in den Topf geben und ca. 20-30 Minuten gar kochen. Danach mit einer Schöpfkelle wieder aus dem Topf fischen (das Huhn kocht weiter), in eine Schüssel geben, klein schneiden und beiseite stellen. Je nach Geschmack nicht das gesamte Gemüse kleingeschneiden - von der Menge her ist das eher zu viel.&lt;br /&gt;
&lt;br /&gt;
Wenn das Huhn nach 1-2 Stunden gar gekocht ist (das Fleisch sollte sich ganz leicht vom Knochen lösen lassen) aus dem Topf nehmen, die Haut und die Knochen entfernen und das Hühnerfleisch in kleine Stücke schneiden. Parallel dazu Wasser mit einer Prise Salz in einem separaten Topf zum Kochen bringen und die Suppennudeln darin nach Anleitung kochen. Die Nudeln danach in ein feinmaschiges Sieb abgießen und zusammen mit den Fleischstücken und dem geschnitten Gemüse zurück in den Topf geben.&lt;br /&gt;
&lt;br /&gt;
Die Suppe mit Salz und Pfeffer abschmecken. Zum Schluss die Petersilie mit einem Wiegemesser klein schneiden und über die fertige Suppe streuen.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ein paar Tipps&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Suppe braucht viel Salz. Wenn trotzdem mal zu viel Salz an die Suppe gerät, hilft es, eine Kartoffel mitzukochen. Diese saugt das Salz auf und kann später weggeworfen werden.&lt;br /&gt;
&lt;br /&gt;
Wer die Suppe nicht ganz so fett mag, kann sie auch erst erkalten lassen, dann in den Kühlschrank stellen und nach einigen Stunden die Schicht Fett abziehen, die sich auf der Suppe bildet.&lt;br /&gt;
&lt;br /&gt;
Hühnersuppe läßt sich prima einfrieren. Größere Mengen am besten in Portionen aufteilen, da jedes erneute Aufkochen den Nudeln schadet. 
    </content:encoded>

    <pubDate>Mon, 01 Aug 2011 18:07:30 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/283-guid.html</guid>
    
</item>
<item>
    <title>SenSEO Infografik</title>
    <link>http://www.nicosteiner.de/archives/282-SenSEO-Infografik.html</link>
    
    <comments>http://www.nicosteiner.de/archives/282-SenSEO-Infografik.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=282</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=282</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Zum 200.000sten Download von SenSEO habe ich als kleines Dankeschön eine Infografik mit interessanten Fakten zur Firefox-Extension zusammengestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:181 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;725&quot; height=&quot;575&quot; src=&quot;http://www.nicosteiner.de/uploads/senseo-infographic.png&quot; alt=&quot;SenSEO Infografik&quot; /&gt; 
    </content:encoded>

    <pubDate>Tue, 05 Apr 2011 17:33:21 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/282-guid.html</guid>
    
</item>
<item>
    <title>Gastartikel im Webstandard-Blog</title>
    <link>http://www.nicosteiner.de/archives/281-Gastartikel-im-Webstandard-Blog.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/281-Gastartikel-im-Webstandard-Blog.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=281</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=281</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Gestern erschien im &lt;a href=&quot;http://webstandard.kulando.de/&quot;&gt;Webstandard-Blog&lt;/a&gt; der erste von 3 Artikeln zur Verbesserung der Website-Performance mit Expires-Headern. Die Artikel basieren auf &lt;a href=&quot;http://stevesouders.com/hpws/&quot;&gt;Steve Souders Veröffentlichungen&lt;/a&gt; und den praktischen Erfahrungen, die ich mit dem &lt;a href=&quot;http://www.nicosteiner.de/archives/275-Content-Delivery-Server-online!.html&quot;&gt;Content Delivery Server&lt;/a&gt; gesammelt habe. Der zweite und dritte Teil folgen die nächsten Tage. 
    </content:encoded>

    <pubDate>Tue, 19 Oct 2010 16:50:43 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/281-guid.html</guid>
    
</item>
<item>
    <title>CSS3 Redesign abgeschlossen</title>
    <link>http://www.nicosteiner.de/archives/280-CSS3-Redesign-abgeschlossen.html</link>
    
    <comments>http://www.nicosteiner.de/archives/280-CSS3-Redesign-abgeschlossen.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=280</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=280</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    So - jetzt bin ich zufrieden. Ohne eine Zeile HTML zu ändern und mit vielen neuen CSS3 Regeln hat das Blog einen neuen Look bekommen. Das Redesign war ein Versuch, dass Wissen aus &lt;a href=&quot;http://fronteers.nl/congres/2010/workshops/css3-dan-rubin&quot;&gt;Dan Rubins CSS3 Workshop&lt;/a&gt; praktisch anzuwenden.  
    </content:encoded>

    <pubDate>Sun, 17 Oct 2010 13:59:03 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/280-guid.html</guid>
    
</item>
<item>
    <title>Halb zwei - uff...</title>
    <link>http://www.nicosteiner.de/archives/279-Halb-zwei-uff....html</link>
            <category>Privat</category>
    
    <comments>http://www.nicosteiner.de/archives/279-Halb-zwei-uff....html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=279</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=279</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Bin immer noch nicht zufrieden, gehe jetzt aber erstmal ins Bett. 
    </content:encoded>

    <pubDate>Sat, 16 Oct 2010 01:28:52 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/279-guid.html</guid>
    
</item>
<item>
    <title>CSS3 Redesign startet jetzt</title>
    <link>http://www.nicosteiner.de/archives/278-CSS3-Redesign-startet-jetzt.html</link>
            <category>Privat</category>
    
    <comments>http://www.nicosteiner.de/archives/278-CSS3-Redesign-startet-jetzt.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=278</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=278</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Für die nächsten Stunden wird die Seite übel aussehen - danach hoffentlich nicht mehr... &lt;img src=&quot;http://www.nicosteiner.de/templates/nicosteiner/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Fri, 15 Oct 2010 21:58:29 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/278-guid.html</guid>
    
</item>
<item>
    <title>Vortrag auf der WebTechCon 2010</title>
    <link>http://www.nicosteiner.de/archives/277-Vortrag-auf-der-WebTechCon-2010.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/277-Vortrag-auf-der-WebTechCon-2010.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=277</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=277</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Ich bin wieder zurück von der &lt;a href=&quot;http://webtechcon.de/2010/timetable&quot;&gt;WebTechCon 2010&lt;/a&gt;. Neben einigen interessanten Vorträgen und jeder Menge Socializing habe auch ich einen Vortrag gehalten. Es ging um die Frontend-Architektur unserer Abteilung.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.slideshare.net/n.steiner/frontendarchitektur-der-11-bestellsysteme&quot;&gt;&quot;Frontend-Architektur der 1&amp;1 Bestellsysteme&quot; bei Slideshare&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Es gab einige interessante Fragen und jede Menge positives Feedback (&lt;a href=&quot;http://twitter.com/netzartist/status/27242713492&quot;&gt;zwitscher&lt;/a&gt;, &lt;a href=&quot;http://twitter.com/mac3uck/status/27241244239&quot;&gt;zwitscher&lt;/a&gt;, &lt;a href=&quot;http://twitter.com/trishi_de/status/27244746057&quot;&gt;zwitscher&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Einige Dinge, die ich aus den Gesprächen mitnehme:&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Viele Entwickler sitzen auf zwei Stühlen - PHP und das bißchen Frontend gleich noch mit. Den meisten ist bewußt, dass das alles andere als optimal ist&lt;/li&gt;&lt;li&gt;Sehr gewachsene, heterogene Infrastrukturen - Konsolidierung nicht in Sicht (Zeit- oder Geldmangel)&lt;/li&gt;&lt;li&gt;Uneinsichtige Chefs blockieren Innovationen&lt;/li&gt;&lt;li&gt;Gute Kollegen trösten über vieles hinweg&lt;/li&gt;&lt;li&gt;Kicker sind Mangelware&lt;/li&gt;&lt;li&gt;Großraumbüros sind definitiv keine Option für Entwickler&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Das macht mir mal wieder deutlich klar, wie gut wir eigentlich mit Personal und Systemen aufgestellt sind und wie viel Nachholbedarf andere Firmen da noch haben.&lt;br /&gt;
&lt;br /&gt;
Letzte Woche war ich zusammen mit Andi und Mathias auf der Fronteers in Amsterdam. Chris Heilmann hat die Talks der Konferenz &lt;a href=&quot;http://www.wait-till-i.com/2010/10/10/fronteers-2010-report-and-my-slides-and-links/&quot;&gt;sehr gut zusammengefasst&lt;/a&gt;. Bleibt nur noch hinzuzufügen, dass der CSS3 Workshop von Dan Rubin sehr lehrreich und kurzweilig war. 
    </content:encoded>

    <pubDate>Wed, 13 Oct 2010 23:49:22 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/277-guid.html</guid>
    
</item>
<item>
    <title>Die Webseite</title>
    <link>http://www.nicosteiner.de/archives/276-Die-Webseite.html</link>
            <category>Privat</category>
    
    <comments>http://www.nicosteiner.de/archives/276-Die-Webseite.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=276</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=276</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Inspiriert durch dieses &lt;a href=&quot;http://www.youtube.com/watch?v=mRggWhM70Wc&quot;&gt;Meisterwerk von Jochen Malmsheimer&lt;/a&gt; (unbedingt vorher ansehen, sonst kommt der Witz nicht rüber) habe ich versucht, diesen Gag auf ein anderes Thema zu übertragen. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Die Webseite&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Wie geht eine Webseite? Fangen wir unten an. Da ist das valides HTML. VALIDES HTML! Mit einer richtigen Semantik, damit die Elemente der Seite auch eine anständige Bedeutung haben. Richtiges HTML, semantisch, suchmaschinenoptimiert. Nicht diese zusammengeschusterte Tagsuppe, die ihr Layout in Tabellen presst und von Headlines noch nie etwas gehört hat!&lt;br /&gt;
&lt;br /&gt;
Da drauf - extern, minimiert und komprimiert - &lt;a href=&quot;http://www.slideshare.net/stubbornella/object-oriented-css&quot;&gt;gutes CSS&lt;/a&gt;! Man kann auch Stylesheets oder Layout dazu sagen. Und das CSS rendert von oben über das HTML, und dann lernen sie sich kennen und dann tun sie sich zusammen - denn sie wissen, gleich gibt&#039;s noch richtig was auf&#039;s Dach.&lt;br /&gt;
&lt;br /&gt;
Und dann! Das ist jetzt ganz wichtig, Zettel raus, Stifte und mitschreiben - BITTE! Und dann...! &lt;a href=&quot;http://www.onlinetools.org/articles/unobtrusivejavascript/&quot;&gt;Unobtrusive&lt;/a&gt;, buchstabiert U-N-O-B-T-R-U-S-I-V-E, JavaScript! Die Zeiten von Inline-Events sind vorbei!&lt;br /&gt;
&lt;br /&gt;
Die müssen sauber voneinander getrennt sein! HTML und CSS bilden Gerüst und Layout der Seite und JavaScript fügt eine Logik-Schicht hinzu. Und dann gibt das eine Technologieexplosion, die einem die Zähne aus dem Hals bläst, wenn sie nicht ordentlich verschraubt sind!&lt;br /&gt;
&lt;br /&gt;
DAS IST GUT! Seit Jahren ist das so gut! Das sind Webstandards!&lt;br /&gt;
&lt;br /&gt;
Bis... zu diesem furchtbaren Tag... an dem so ein mental verotteter Grafiker (sorry, Jungs) DA FLASH DRAUFGEMACHT HAT, UND GRAFISCHE HEADLINES, UND VERLÄUFE UND OHNE ENDE SCHLAGSCHATTEN! DU HAST DAS GEFÜHL, DU BLICKST AUF EINE SCHIESSBUDE! DAS HAT DOCH MIT EINER WEBSEITE NICHTS ZU TUN! ICH WERDE NOCH WAHNSINNIG!&lt;br /&gt;
&lt;br /&gt;
ICH... ich bin für den Einsatz des Militärs im eigenen Land! Die Soldaten sollen die Grafiker unter vorgehaltener Waffe dazu zwingen, ihre eigenen Webseiten mit einem Screenreader zu bedienen! Ein Grafiker soll morgens ins Büro kommen, eine anständige Webseite layouten und wieder nach Hause gehen - ist das denn so schwer ?!?&lt;br /&gt;
&lt;br /&gt;
Das mache ich fast jeden Tag - könnt ihr euch das vorstellen? Das ich das gesundheitlich überhaupt mitmache! Auf der anderen Seite finde ich, dass ein so durchaus technologielastiges Blog wie dieses so einen Hauch von Emotion durchaus verträgt. Auf der anderen Seite fragt sich der eine oder andere Leser diese Artikels jetzt vielleicht... Was - hat - der - Mann?&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;RECHT HAT ER!!!&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Danke an Andi und Matthias, die zum Teil unter dem Einsatz alkoholischer Getränke ihren Beitrag geleistet haben &lt;img src=&quot;http://www.nicosteiner.de/templates/nicosteiner/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Sat, 02 Oct 2010 15:06:06 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/276-guid.html</guid>
    
</item>
<item>
    <title>Content Delivery Server online!</title>
    <link>http://www.nicosteiner.de/archives/275-Content-Delivery-Server-online!.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/275-Content-Delivery-Server-online!.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=275</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=275</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Seit gestern werden auf der &lt;a href=&quot;http://www.united-internet.de&quot;&gt;United Internet AG Website&lt;/a&gt; sämtliche Grafiken über einen Content Delivery Server ausgeliefert. Dieser komplettiert das Puzzle an Optimierungen, welches die Performance unserer Shops verbessern soll.&lt;br /&gt;
&lt;br /&gt;
Folgende Features wurden in der ersten Phase implementiert:&lt;br /&gt;
&lt;br /&gt;
- Far Future Expires Header (&lt;a href=&quot;http://developer.yahoo.com/performance/rules.html#expires&quot;&gt;mehr Infos bei Yahoo!&lt;/a&gt;)&lt;br /&gt;
- Umschreiben der Grafikpfade auf eine Hashtag-Version&lt;br /&gt;
- Cookiefreie Domain (&lt;a href=&quot;http://developer.yahoo.com/performance/rules.html#cookie_free&quot;&gt;mehr Infos bei Yahoo!&lt;/a&gt;)&lt;br /&gt;
- Mehr parallele Downloads dank verschiedener Subdomains (&lt;a href=&quot;http://developer.yahoo.com/performance/rules.html#split&quot;&gt;mehr Infos bei Yahoo!&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Zum zweiten Feature habe ich keine gute Quelle im Netz gefunden. Es geht hierbei um das Problem, dass eine Grafik mit Expires Header ohne Conditional GET aus dem Cache geladen wird. Was prinzipiell erwünscht ist wird zu einem Problem, wenn eine veränderte Version dieser Grafik gepublished wird. Um dann trotzt des Expires Headers ein Neuladen zu erzwingen, ist eine veränderte Grafik-URL nötig. Für gewöhnlich kann man sich zwischen einer Versionierung und einem Hash Tag entscheiden. Letzteres erschien uns praktikabler, da ein Hash Tag vergleichsweise einfach implementiert werden kann. Facebook hat das gleiche Verfahren gewählt, Amazon dagegen setzt auf eine Versionierung der Dateinamen.&lt;br /&gt;
&lt;br /&gt;
Eine Vorher-Nachher-Analyse belegt die Verbesserungen eindrucksvoll. Obwohl auf der Website vergleichsweise wenige Grafiken eingebunden werden, werden die Seiten beim 1. Request (dank 8 statt 2 parallelen Downloads) 25% schneller geladen. Beim 2. Request ist dank des optimalen Cache-Verhaltens eine Zeiteinsparung von fast 40% messbar. Es gibt diverse Studien, die eine verbesserte User Experience durch schnelle Ladezeiten belegen. Beispielhaft sei auf einige &lt;a href=&quot;http://www.webperformancetoday.com/2010/07/01/the-best-graphs-of-velocity/&quot;&gt;Statistiken der letzten Velocity&lt;/a&gt; verwiesen.&lt;br /&gt;
&lt;br /&gt;
Im Verlauf der nächsten Monate werden wir den CDS in die sehr viel grafiklastigeren Shops integrieren und die Verbesserungen in diesem Umfeld dokumentieren. Man darf gespannt sein.&lt;br /&gt;
&lt;br /&gt;
Für die Zukunft sind weitere Features geplant. So soll mit den Daten des CDS ein &quot;selbstlernendes&quot; &lt;a href=&quot;http://www.4thkingdom.com/public/computers/789073-web-site-speed-prefetching-images-css/view-post.html&quot;&gt;Image Prefetching&lt;/a&gt; gebaut werden. In einem weiteren Schritt könnte der CDS zu einem &lt;a href=&quot;http://developer.yahoo.com/performance/rules.html#cdn&quot;&gt;Content Delivery Network&lt;/a&gt; ausgebaut werden, um statische Ressourcen weltweit mit möglichst geringer Latenz auszuliefern.&lt;br /&gt;
&lt;br /&gt;
Darauf &lt;a href=&quot;http://www.myvideo.de/watch/4862326/Seeed_Oceans_11&quot;&gt;hoch die Tassen&lt;/a&gt;! 
    </content:encoded>

    <pubDate>Thu, 30 Sep 2010 17:21:54 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/275-guid.html</guid>
    
</item>
<item>
    <title>1&amp;1 DSL - Performance-Optimierungen</title>
    <link>http://www.nicosteiner.de/archives/191-11-DSL-Performance-Optimierungen.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/191-11-DSL-Performance-Optimierungen.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=191</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=191</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Das DSL-Projekt ging letzte Woche mit dem neuen &lt;a href=&quot;http://www.nicosteiner.de/archives/185-Neue-Jasmin-Servlet-Version.html&quot; title=&quot;Neue Jasmin-Servlet Version&quot;&gt;Jasmin-Servlet 2.1&lt;/a&gt; online. An diesem Beispiel möchte ich zeigen, wie eine weitere Optimierung dieses Projekts aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Der erste Request&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
In der nachfolgenden Grafik sind sämtliche Requests in Form ihrer Bestandteile, Downloadzeiten und Latenzen beim ersten Aufruf der DSL-Startseite zu sehen. Die Latenzen werden dabei von der Software simuliert, stimmen aber in ihren Relationen zueinander.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:2 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;770&quot; height=&quot;533&quot; src=&quot;http://www.nicosteiner.de/uploads/test-first-request.png&quot; alt=&quot;Der erste Request&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Gleich die ersten Requests (1) wären Kandidaten für eine Optimierung. Das Pustefix-Framework macht ihr diverse Redirects, bevor es die eigentlichen Inhalte ausliefert. Ideal wäre natürlich wenn dies bereits mit dem ersten Request geschehen würde. Somit könnte die Zeit bis zum ersten Rendern der Seite (die grüne, vertikale Linie) deutlich verkürzt werden. Auch die mit (2) gekennzeichneten Requests beeinflussen den Zeitpunkt des ersten Renderns negativ. Diese Requests fordern die Stylesheets des Dokuments an. Die Platzierung der Requests ist optimal, je eher die Stylesheets geladen werden, desto besser. Allerdings ist die Größe der Daten ein Problem. Dies beeinflußt nicht nur die Downloadzeit sondern auch die Zeit der Interpretation der Stylesheets (3). Insgesamt dauert es in dieser Simulation mehr als eine Sekunde, diesen Prozess abzuschließen. Das ist immerhin 1/7 der Zeit, die der Browser mit der kompletten Darstellung des Dokuments beschäftigt ist. Zukünftig wird es dank des &lt;a href=&quot;http://creatified.com/blog/2009/06/introducing-jacqueline-unused-css-selectors-in-java/&quot; title=&quot;Jacqueline&quot;&gt;PMT&lt;/a&gt; möglich sein, diverse veraltete Selektoren aus den Stylesheets zu entfernen, was an dieser Stelle eine deutliche Verbesserung bringen sollte.&lt;br /&gt;
&lt;br /&gt;
Im Anschluß an die Stylesheets werden die Grafiken der Startseite angefordert. Hier lassen sich für den ersten Request kaum Optimierungen finden. Eventuell sind einige weitere Hintergrundgrafiken Kandidaten für CSS-Sprites.&lt;br /&gt;
&lt;br /&gt;
Interessant wird es wieder bei den JavaScript-Requests (4). Auch hier wird deutlich, dass der Umfang der Scripte recht groß ist, was wiederum zusätzlich zu einer Verzögerung bei der Interpretation des JavaScript-Codes (5) führt. Hier werden wir in Zukunft auf eine asynchrones Laden der Scripte mit einem Managed XHR setzen. Wem das nichts sagt, dem sei das Buch &lt;a href=&quot;http://oreilly.com/catalog/9780596522315&quot; title=&quot;O&#039;Reilly&quot;&gt;Even Faster Web Sites&lt;/a&gt; von Steve Souders empfohlen. Den Teil zum asynchronen Laden von JavaScript finde ich in diesem Buch neben den JavaScript-Code-Optimierungen am interessantesten.&lt;br /&gt;
&lt;br /&gt;
Den Abschluß bilden jede Menge Tracking-Pixel-Requests. Diese stellen eine Besondere herausforderung dar, da sie nicht Teil der eigenen Infrastruktuer sind, sondern oftmals von fremden Servern, mit all den Nachteilen die so etwas hat, bezogen werden. Gerade heute morgen hatte ich eine Idee, wie wir dieses Problem mit einer zentralisierten Lösung für solche Requests in den Griff bekommen könnten - mal sehen, was mein Chef dazu meint &lt;img src=&quot;http://www.nicosteiner.de/templates/nicosteiner/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Der zweite Request&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Request wird maßgeblich davon beeinflußt, dass der Browser bestimmte Daten bereits im Cache zwischengespeichert hat. Nur unter gewissen Umständen fordert dieser Daten erneut vom Server an.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:3 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;770&quot; height=&quot;450&quot; src=&quot;http://www.nicosteiner.de/uploads/test-second-request.png&quot; alt=&quot;Der zweite Request&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Hier wirken sich die Redirects bis zur Auslieferung des HTML-Codes (1) in Relation noch massiver aus. Ein wesentlicher Teil der zeit bis zum ersten Rendern der Seite wird dafür beansprucht.&lt;br /&gt;
&lt;br /&gt;
Ein viel größeres Problem wird durch die Bereiche (2), (3) und (4) sichtbar. Diese Bereich stellen sogeannte Conditional GET-Requests dar. Dabei wird beim Server erfragt, ob sich die bereits beim ersten Request abgerufenen Daten in der Zwischenzeit verändert haben. Bei den hier dargestellten Daten handelt es sich ausschließlich um Grafiken. Da sich das System, welches Grafiken zentral ausliefert und diese nur bei Veränderungen entsprechend neu versioniert, noch in der Planung befindet, müssen wir mit diesem Problem leider noch eine Weile leben. (&lt;strong&gt;Nachtrag:&lt;/strong&gt; Der &lt;a href=&quot;http://www.nicosteiner.de/archives/275-Content-Delivery-Server-online!.html&quot;&gt;Content Delivery Server&lt;/a&gt; ist mittlerweile fertig implementiert.)&lt;br /&gt;
&lt;br /&gt;
Als Fazit kann man sagen, dass wir mit unseren bisherigen Bemühungen schon große Schritte in Richtung eines performanten Frontends gegangen sind. Die hier beschriebenen Ansätze werden noch einmal eine deutliche Verbesserung bringen. Mit dem Ende dieser zweiten Phase wird das Thema Performance-Optimierung architektonisch abgehakt sein. Natürlich müssen wir während des Entwicklungsprozess bestehender und neuer Projekte darauf achten, Optimierungen am JavaScript-Code und an dem Umfang der ausgelieferten Ressourcen nicht aus dem Auge zu verlieren und als kontinuierlichen Teil unserer Arbeit zu sehen.&lt;br /&gt;
&lt;br /&gt;
Die komplette Analyse ist bei &lt;a href=&quot;http://www.webpagetest.org/result/091018_2J34/&quot; title=&quot;webpagetest.org&quot;&gt;webpagetest.org&lt;/a&gt; zu finden. 
    </content:encoded>

    <pubDate>Sun, 18 Oct 2009 12:10:13 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/191-guid.html</guid>
    
</item>
<item>
    <title>Expires Header besser verstehen</title>
    <link>http://www.nicosteiner.de/archives/224-Expires-Header-besser-verstehen.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/224-Expires-Header-besser-verstehen.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=224</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=224</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Anhand eines unserer aktuellen Projekte möchte ich zeigen, wie die genannte Technologie in Hinblick auf die Performance einer Website zu verstehen ist.&lt;br /&gt;
&lt;br /&gt;
Folgende Statistik habe ich mit der Firefox Extension &lt;a href=&quot;http://developer.yahoo.com/yslow/&quot; title=&quot;Yahoo! Developer Network&quot;&gt;YSlow&lt;/a&gt; erstellt. Oben ist die Verteilung der Ressourcen bei einem ersten Request mit leerem Cache zu sehen. Der Bereich darunter zeigt die Verteilung bei einem zweiten Request unter Ausnutzung des Caches.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:142 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;465&quot; height=&quot;473&quot; src=&quot;http://www.nicosteiner.de/uploads/weight-graphs.png&quot; alt=&quot;YSlow Weight Graphs&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Der obere Bereich zeigt die typischen Ressourcen einer Seite. Etwas ungewöhlich sind die 2 XML-HTTP-Requests. Dahinter verbergen sich JavaScripte, welche asynchron mit der &lt;a href=&quot;http://stevesouders.com/efws/managed-xhr.php&quot; title=&quot;Even faster Websites&quot;&gt;Managed XHR Technik&lt;/a&gt; von Steve Souders in die Seite integriert werden.&lt;br /&gt;
&lt;br /&gt;
Interessanter in Bezug auf die erwähnte Technologie ist der untere Bereich, nutzt man Expires Header doch, um das Caching-Verhalten einer Seite positiv zu beeinflussen. Hier ist zu sehen, dass Scripte und Stylesheets nicht mehr aufgeführt werden. Dies ist wenig verwunderlich, da wir diese bereits mit &lt;a href=&quot;http://stevesouders.com/hpws/rule-expires.php&quot; title=&quot;Steve Souders&quot;&gt;Far Future Expires Headern&lt;/a&gt; versehen haben.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:144 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;700&quot; height=&quot;220&quot; src=&quot;http://www.nicosteiner.de/uploads/expires-header1.png&quot; alt=&quot;Expires Header für CSS und JavaScript&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Das Neuladen des HTML-Dokuments ist gewollt und wird mit einem in der Vergangenheit liegenden Expires Header erzwungen. Wir erzwingen für diesen Fall das Neuladen, da das Dokument dynamisch generiert wird und sich von einem Aufruf zum nächsten verändern kann.&lt;br /&gt;
&lt;br /&gt;
Neben dem HTML-Dokument erzeugen sämtliche Grafiken der Seite erneut Requests. Bei diesen steht die Auslieferung eines Expires Header momentan noch aus. Was im ersten Moment nur nach einer Einstellung in den Apache-Konfigurationen klingt, wird auf den zweiten Blick sehr viel komplexer, möchte man durch eine möglichst transparente Versionierung der Grafiken ein Neuladen bei Veränderungen erzwingen. Zumindest ist durch korrekte ETags sichergestellt, dass lediglich Requests in Form eines &lt;a href=&quot;http://ruturajv.wordpress.com/2005/12/27/conditional-get-request/&quot; title=&quot;Conditional GET Requests&quot;&gt;Conditional GET&lt;/a&gt; gemacht werden - die Daten selbst werden also nicht erneut übertragen. Allerdings braucht solch ein Request für den gesamten Roundtrip auch etwas Zeit - bei 40 Requests macht das in einem modernen Browser wie dem Firefox immer noch ganze 2 Sekunden aus!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Nachtrag:&lt;/strong&gt; Die Grafiken werden mittlerweile mit Hilfe des &lt;a href=&quot;http://www.nicosteiner.de/archives/275-Content-Delivery-Server-online!.html&quot;&gt;Content Delivery Server&lt;/a&gt; mit Expires Header ausgeliefert. 
    </content:encoded>

    <pubDate>Sun, 07 Feb 2010 16:14:46 +0100</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/224-guid.html</guid>
    
</item>
<item>
    <title>Speaker auf dem PHP World Kongress 2010</title>
    <link>http://www.nicosteiner.de/archives/274-Speaker-auf-dem-PHP-World-Kongress-2010.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/274-Speaker-auf-dem-PHP-World-Kongress-2010.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=274</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=274</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    &lt;!-- s9ymdb:180 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;200&quot; height=&quot;120&quot; style=&quot;float: right; border: 0px; padding-left: 15px;&quot; src=&quot;http://www.nicosteiner.de/uploads/php-worl-kongress-speaker-2010.gif&quot; alt=&quot;&quot; /&gt;Ich werde am 9. November auf dem &lt;a href=&quot;http://www.phpworld-kongress.de/&quot;&gt;PHP World Kongress&lt;/a&gt; einen Vortrag zur Verbesserung der Website Performance halten.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Abstract&lt;/strong&gt;&lt;br /&gt;
Wie verbessere ich die Ladezeiten meiner Websites und welche Vorteile ergeben sich daraus? Auf der Basis allgemeingültiger Regeln werden in diesem Vortrag Lösungen vorgestellt, wie sie im Umfeld der 1&amp;1 Shopsysteme entstanden sind. Es wird weiterhin erläutert, wie zentralisierte Technologien dafür sorgen können, dass diese Optimierungen projektübergreifend angewendet werden, Kennzahlen erhoben und mögliche Schwachstellen identifiziert werden können. 
    </content:encoded>

    <pubDate>Wed, 29 Sep 2010 17:38:54 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/274-guid.html</guid>
    
</item>
<item>
    <title>Promote JS! Better Docs For Us, By Us!</title>
    <link>http://www.nicosteiner.de/archives/273-Promote-JS!-Better-Docs-For-Us,-By-Us!.html</link>
    
    <comments>http://www.nicosteiner.de/archives/273-Promote-JS!-Better-Docs-For-Us,-By-Us!.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=273</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=273</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    &lt;a href=&#039;https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String&#039; title=&#039;JavaScript JS Documentation: JS String toLocaleLowerCase, JavaScript String toLocaleLowerCase, JS String .toLocaleLowerCase, JavaScript String .toLocaleLowerCase&#039;&gt;&lt;img src=&#039;http://static.jsconf.us/promotejsvs.png&#039; height=&#039;280&#039; width=&#039;160&#039; alt=&#039;JavaScript JS Documentation: JS String toLocaleLowerCase, JavaScript String toLocaleLowerCase, JS String .toLocaleLowerCase, JavaScript String .toLocaleLowerCase&#039;/&gt;&lt;/a&gt; 
    </content:encoded>

    <pubDate>Sun, 26 Sep 2010 22:32:26 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/273-guid.html</guid>
    
</item>
<item>
    <title>Speaker auf der WebTech 2010</title>
    <link>http://www.nicosteiner.de/archives/272-Speaker-auf-der-WebTech-2010.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/272-Speaker-auf-der-WebTech-2010.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=272</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=272</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    &lt;!-- s9ymdb:179 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;128&quot; height=&quot;128&quot; style=&quot;float: right; border: 0px; padding-left: 10px;&quot; src=&quot;http://www.nicosteiner.de/uploads/promotionbutton_125_speaker_DE.png&quot; alt=&quot;Speaker auf der WebTech 2010&quot; /&gt; Am 13. Oktober werde ich auf der &lt;a href=&quot;http://webtechcon.de/&quot;&gt;WebTech 2010&lt;/a&gt; einen Vortrag zum Thema &quot;Frontend-Architektur der 1&amp;1-Bestellsysteme&quot; halten.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Abstract&lt;/strong&gt;&lt;br /&gt;
Die Anforderungen an eine Frontend-Architektur sind vielfältig. Neben der Organisation und Modularisierung von HTML, XML, CSS, JavaScript und Grafiken stellen Performance- und Suchmaschinenoptimierung, Ermittlung von Kennzahlen, Coding Guidelines und Qualitätssicherung ganz besondere Herausforderungen dar. In der Session wird gezeigt, wie 1&amp;1 ihre Bestellsysteme darauf ausgerichtet hat.  
    </content:encoded>

    <pubDate>Sun, 19 Sep 2010 17:38:42 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/272-guid.html</guid>
    
</item>
<item>
    <title>Gast-Beitrag im Webstandard-Blog</title>
    <link>http://www.nicosteiner.de/archives/271-Gast-Beitrag-im-Webstandard-Blog.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/271-Gast-Beitrag-im-Webstandard-Blog.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=271</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=271</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Im &lt;a href=&quot;http://webstandard.kulando.de/&quot;&gt;Webstandard-Blog&lt;/a&gt; ist heute mein Gast-Beitrag  &lt;a href=&quot;http://webstandard.kulando.de/post/2010/08/31/onpage-optimierung-moeglichkeiten-und-grenzen&quot;&gt;Onpage-Optimierung - Möglichkeiten und Grenzen&lt;/a&gt; erschienen. Ich versuche darin zu verdeutlichen, dass Onpage-Optimierung keine Ranking-Wunder vollbringen kann, sondern eher als Basis einer vielmehr besucherzentrierten, informativen und relevanten Website zu verstehen ist. 
    </content:encoded>

    <pubDate>Wed, 01 Sep 2010 00:35:02 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/271-guid.html</guid>
    
</item>
<item>
    <title>Zoompf 2010 State Of Web Performance Report</title>
    <link>http://www.nicosteiner.de/archives/270-Zoompf-2010-State-Of-Web-Performance-Report.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/270-Zoompf-2010-State-Of-Web-Performance-Report.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=270</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=270</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Ich hatte den Link gestern bereits getwittert, möchte aber auch hier nochmal auf diesen &lt;a href=&quot;http://zoompf.com/2010-state-of-web-performance-report&quot;&gt;interessanten Report&lt;/a&gt; hinweisen (es ist die Angabe einer E-Mail-Adresse nötig). Zoompf hat nicht nur die 1000 populärsten US-Websites auf typische Performance-Kriterien hin untersucht, sondern auch lesenswerte Schlüsse aus den daraus enstandenen Statistiken gezogen. Ursachen für die schlechte Performance von großen Websites sind laut dem Report zum einen fehlende Lösungen für eine durchgängige Anwendung von Optimierungen auf die gesamte Infrastruktur und zum anderen fehlende Werkzeuge, um sämtliche Webseiten eines Top-1000-Unternehmens auf mögliche Schwachstellen zu durchleuchten und nachhaltig zu überwachen.&lt;br /&gt;
&lt;br /&gt;
Ich hatte auf diese Punkte bereits vor ca. einem Jahr in einem &lt;a href=&quot;http://www.nicosteiner.de/archives/152-Mozilla-Frontend-Code-Standards.html&quot;&gt;Blog-Post&lt;/a&gt; hingewiesen und wir haben seit damals kontinuierlich an der Lösung dieser Probleme gearbeitet. Wenn ich mir die Liste von damals jetzt durchlese, stelle ich erfreut fest, dass viele der Dinge schon geschafft sind - einige wirklich große Brocken stehen noch aus. Mal sehen, was die nächsten Wochen so bringen &lt;img src=&quot;http://www.nicosteiner.de/templates/nicosteiner/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 30 Aug 2010 22:20:22 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/270-guid.html</guid>
    
</item>
<item>
    <title>Vortrag auf dem 1&amp;1 Developer Day</title>
    <link>http://www.nicosteiner.de/archives/269-Vortrag-auf-dem-11-Developer-Day.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/269-Vortrag-auf-dem-11-Developer-Day.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=269</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=269</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Ich werde nächsten Dienstag auf dem 1&amp;1 Developer Day einen Vortrag zu unserer Frontend-Architektur halten. Dieser Vortrag dient unter anderem als Vorbereitung auf die &lt;a href=&quot;http://webtechcon.de/&quot;&gt;WebTech Conference&lt;/a&gt; in Mainz, auf der ich zu einem ähnlich Thema reden werde. Diese Woche wird wohl komplett für die Vorbereitungen draufgehen. Eine Story steht schon - analog auf einem großen Blatt Papier. Jetzt geht es an das Zurechtschneiden von Screenshots, Anfertigen von Statistiken, Suchen passender Fotos und Grafiken etc. Zum Schluß steht dann die Übertragung in Powerpoint an. An dieser Stelle sei nochmals auf die Bücher &lt;a href=&quot;http://www.amazon.de/slide-ology-brillante-Pr%C3%A4sentationen-entwickeln/dp/3897219395&quot;&gt;slide:ology&lt;/a&gt;, &lt;a href=&quot;http://www.amazon.de/Kunst-Präsentation-einfachen-gestalten-präsentieren/dp/3827327083&quot;&gt;ZEN oder die Kunst der Präsentation&lt;/a&gt; und &lt;a href=&quot;http://www.amazon.de/Bekenntnisse-eines-Redners-gehört-werden/dp/389721993X&quot;&gt;Bekenntnisse eines Redners&lt;/a&gt; hingewiesen - in diesen Büchern findet man viel Wissenswertes zum Thema Vorträge und Präsentationen.&lt;br /&gt;
&lt;br /&gt;
Außerdem geht es nächsten Montag zum &lt;a href=&quot;http://webmontag-mrn.mixxt.de/networks/events/show_event.22866&quot;&gt;5. Webmontag Talk&lt;/a&gt; nach Mannheim. &lt;a href=&quot;http://www.webzeugkoffer.de/&quot;&gt;Björn Seibert&lt;/a&gt; hat mich mit einer Einladung über XING darauf aufmerksam gemacht.&lt;br /&gt;
&lt;br /&gt;
Im Oktober steht vor der WebTech noch eine Reise nach Amsterdam zur &lt;a href=&quot;http://fronteers.nl/congres/2010&quot;&gt;Fronteers 2010&lt;/a&gt; an. Der Veranstaltungsort ist wie immer total beeindruckend. Diesmal haben PPK und seine Jungs das &lt;a href=&quot;http://en.wikipedia.org/wiki/Tuschinski&quot;&gt;Pathé Tuschinski&lt;/a&gt; ausgewählt - das Gebäude ist schon &lt;a href=&quot;http://www.flickr.com/photos/25521337@N03/4110153530/&quot;&gt;von außen&lt;/a&gt; eine Wucht - aber drinnen wird&#039;s dann &lt;a href=&quot;http://www.pathe.nl/tuschinski/lokatie.asp&quot;&gt;richtig abgefahren&lt;/a&gt;! 
    </content:encoded>

    <pubDate>Mon, 30 Aug 2010 21:21:09 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/269-guid.html</guid>
    
</item>
<item>
    <title>Unit Tests mit XPath</title>
    <link>http://www.nicosteiner.de/archives/268-Unit-Tests-mit-XPath.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/268-Unit-Tests-mit-XPath.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=268</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=268</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Seit einigen Tagen setzen wir ein neues System zur Verbesserung der Qualität unserer Source-Codes ein. Wir testen mit Hilfe eines &lt;a href=&quot;http://saxon.sourceforge.net/&quot;&gt;Saxon-Processors&lt;/a&gt; unsere &lt;a href=&quot;http://maven.apache.org/&quot;&gt;Apache Maven-Module&lt;/a&gt; auf Verstöße gegen interne Coding Richtlinien. Genauer wenden wir auf alle XML-Dokumente eines Shops XPath-Ausdrücke an, welche sich grundsätzlich in eine der Kategorien &lt;strong&gt;notAllowed&lt;/strong&gt; und &lt;strong&gt;isNeeded&lt;/strong&gt; unterteilen lassen.&lt;br /&gt;
&lt;br /&gt;
So sind beispielhaft folgende XPath-Ausdrücke der Kategorie &lt;strong&gt;notAllowed&lt;/strong&gt; zugeordnet:&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;//@style (Inline-Styles sind nicht erlaubt)&lt;/li&gt;&lt;li&gt;//pfx:blank (Template zum Erzeugen eines Blank-Gifs ist nicht erlaubt)&lt;/li&gt;&lt;li&gt;//br/br (Breaks zum Erzeugen von &quot;Absätzen&quot; sind nicht erlaubt)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Weitere Unarten wie Inline-Events und die Verwendung von Attributen wie clear oder align fallen durch eine sukzessive Umstellung aller Projekte auf den DOCTYPE HTML 4.01 Strict mit Hilfe der &lt;a href=&quot;http://users.skynet.be/mgueury/mozilla/&quot;&gt;HTML Validator Extension&lt;/a&gt; auf.&lt;br /&gt;
&lt;br /&gt;
Kandidaten für die Kategorie &lt;strong&gt;isNeeded&lt;/strong&gt; sind interne Link-Parameter wie&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;//shop:button/@linkId&lt;/li&gt;&lt;li&gt;//shop:button/@linkType&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Dabei sind diese Tests nicht auf valides Markup ausgerichtet, sondern setzen auf einem höheren Level des Markupdesigns und der richtigen Verwendung von internen Templates an.&lt;br /&gt;
&lt;br /&gt;
Generell lassen sich die XPath-Regeln pro Shop individuell festlegen. Integriert ein Shop Templates aus einem Modul, integriert dieses Modul die Regeln zur richtigen Verwendung seiner Templates automatisch. 
    </content:encoded>

    <pubDate>Tue, 03 Aug 2010 22:33:27 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/268-guid.html</guid>
    
</item>
<item>
    <title>Popups im Browserfenster mit Rahmen öffnen</title>
    <link>http://www.nicosteiner.de/archives/267-Popups-im-Browserfenster-mit-Rahmen-oeffnen.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/267-Popups-im-Browserfenster-mit-Rahmen-oeffnen.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=267</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=267</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Wenn Popups über das Kontextmenü in einem neuen Tab geöffnet oder über Suchmaschinen gefunden werden, kann es zu dem Problem kommen, dass keine Verlinkung zur Startseite der Website existiert und das Popup somit eine Sackgasse darstellt. Besonders im Fall der Suchmaschinen-Verlinkung kann dies sehr ärgerlich sein, da einem potentiellen Kunden der Weg zum Angebot der Website versperrt bleibt.&lt;br /&gt;
&lt;br /&gt;
Wir haben dieses Problem gelöst, indem wir mit JavaScript die Existenz von window.opener prüfen. Ist dieses Objekt nicht vorhanden, wurde die Webseite nicht im Popup geöffnet sondern wird im Browserfenster angezeigt. Über eine zusätzliche Klasse auf dem body-Element wird in diesem Fall ein umgebender Rahmen eingeblendet, welcher das ursprüngliche Popup als Webseite mit Hauptnavigation erscheinen läßt.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;1&amp;1 SmartPad als Popup&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:177 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;400&quot; height=&quot;345&quot; src=&quot;http://www.nicosteiner.de/uploads/1und1-smartpad-popup.png&quot; alt=&quot;Popup-Version&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;1&amp;1 SmartPad als Webseite&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:178 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;600&quot; height=&quot;381&quot; src=&quot;http://www.nicosteiner.de/uploads/1und1-smartpad-browser.png&quot; alt=&quot;Webseiten-Version&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Dies setzt vorraus, dass die Popups eine einheitliche Struktur aufweisen und im Idealfall die selben Dimensionen besitzen. Zur Demonstration habe ich das entsprechende Popup &lt;a href=&quot;http://dsl.1und1.de/xml/order/DetailsSmartPad&quot;&gt;direkt verlinkt&lt;/a&gt; und eine &lt;a href=&quot;http://www.google.de/#hl=de&amp;amp;q=1%261+SmartPad+highlights+technische+details&quot;&gt;Google Suchanfrage&lt;/a&gt; formuliert, welche das Popup (hoffentlich an erster Stelle) als Treffer anzeigt. 
    </content:encoded>

    <pubDate>Thu, 22 Jul 2010 22:02:16 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/267-guid.html</guid>
    
</item>
<item>
    <title>Mobile Internet Redesign</title>
    <link>http://www.nicosteiner.de/archives/266-Mobile-Internet-Redesign.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/266-Mobile-Internet-Redesign.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=266</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=266</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Heute ist &lt;a href=&quot;http://pocketweb.1und1.de/&quot;&gt;1&amp;1 Mobile Internet&lt;/a&gt; in einem neuen Gewand online gegangen. Damit sind fast alle &lt;a href=&quot;http://www.1und1.de/&quot;&gt;1&amp;1 Neukundenshops&lt;/a&gt; auf das neue Layout umgestellt. Nicht nur optisch hat sich einiges getan - wir haben die Umstellung dazu genutzt, Benennungen und Ordnerstrukturen für Grafiken und CSS zu vereinheitlichen. Dadurch konnten jede Menge alte Grafiken und Styles gelöscht werden. Auch bei diesem Design wurde darauf geachtet, gesharte Ressourcen modular vorzuhalten und zentral als Maven-Modul für alle Shops bereitzustellen. Obwohl die neuen Layouts sehr grafiklastig sind, findet sich unter der Haube schlankes, semantisches, zugängliches Markup, das mit einem Strict-Doctype valide ausgeliefert wird. Die grafischen Headlines wurden mit Image Replacement und die Buttons und Tabs mit der Sliding Doors Technik realisiert. Die Seiten sind trotz der Größe ihrer Ressourcen sehr performant. Das CSS ist modular aufgebaut, setzt gespritete Grafiken sinnvoll ein und kommt zu einem Großteil ohne Hacks und !important Regeln aus.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Mobile Internet (neu)&lt;/strong&gt;&lt;br /&gt;
&lt;!-- s9ymdb:176 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;724&quot; height=&quot;527&quot; src=&quot;http://www.nicosteiner.de/uploads/mobile-internet-neue-website.png&quot; alt=&quot;Mobile Internet (neu)&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Mobile Internet (alt)&lt;/strong&gt;&lt;br /&gt;
&lt;!-- s9ymdb:175 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;724&quot; height=&quot;524&quot; src=&quot;http://www.nicosteiner.de/uploads/mobile-internet-alte-website.png&quot; alt=&quot;Mobile Internet (alt)&quot; /&gt; 
    </content:encoded>

    <pubDate>Thu, 01 Jul 2010 08:28:33 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/266-guid.html</guid>
    
</item>
<item>
    <title>Vortrag auf dem nächsten PHP Usergroup Treffen</title>
    <link>http://www.nicosteiner.de/archives/265-Vortrag-auf-dem-naechsten-PHP-Usergroup-Treffen.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/265-Vortrag-auf-dem-naechsten-PHP-Usergroup-Treffen.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=265</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=265</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Ich werde mit Frank am 29. Juni noch einmal den Vortrag &lt;a href=&quot;http://www.nicosteiner.de/archives/263-Frontend-Performance-mit-PHP-IPC-Spring-Edition,-Berlin.html&quot;&gt;Frontend-Performance mit PHP&lt;/a&gt; halten. Wer Interesse hat, kann sich im &lt;a href=&quot;http://forum.phpug-karlsruhe.de/viewtopic.php?f=2&amp;amp;t=270&amp;amp;start=0&quot;&gt;PHP Usergroup Forum&lt;/a&gt; über das Treffen informieren und sich dort auch anmelden.&lt;br /&gt;
&lt;br /&gt;
Thema: Frontend-Performance (mit PHP) von Nico Steiner &amp;amp; Frank Kleine&lt;br /&gt;
Datum: Dienstag den 29. Juni 2010, 19 Uhr&lt;br /&gt;
Location: Hochschule Karlsruhe&lt;br /&gt;
Gebäude M, 3. Obergeschoss, Raum 302&lt;br /&gt;
&lt;br /&gt;
Die Veranstaltung ist kostenlos. 
    </content:encoded>

    <pubDate>Sun, 13 Jun 2010 18:22:23 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/265-guid.html</guid>
    
</item>
<item>
    <title>International PHP Conference Spring Edition</title>
    <link>http://www.nicosteiner.de/archives/264-International-PHP-Conference-Spring-Edition.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/264-International-PHP-Conference-Spring-Edition.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=264</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=264</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Die letzten Tage nahm ich zusammen mit &lt;a href=&quot;http://www.schst.net/&quot;&gt;Stephan&lt;/a&gt; und &lt;a href=&quot;http://frankkleine.de/&quot;&gt;Frank&lt;/a&gt; an der IPC in Berlin teil. Parallel dazu fand die Webinale statt, die wir ebenfalls besuchen konnten. Nach Shopping, Hooters, Sonne, Bier und Lena am Samstag ging es am Sonntag nach einer Stadtrundfahrt mit einem Workshop los. Am Montag startete dann die eigentliche Konferenz - die Session zu &lt;a href=&quot;http://createordie.de/webinale2010/sessions/?tid=1597#session-13523&quot;&gt;Augmented Editorial Design&lt;/a&gt; war an diesem Tag für mich das Highlight - Julian Koschwitz hat sehr anschaulich vermittelt, wie diese Technik eingesetzt werden kann. Anhand von Markern in Print-Magazinen (ähnlich einem &lt;a href=&quot;http://de.wikipedia.org/wiki/QR-Code&quot;&gt;QR-Code&lt;/a&gt;) werden digital Zusatzinformationen in das Magazin eingebettet, sobald man dieses mit Hilfe einer Webcam durch einen Flash-Film betrachtet. Am Montag hielt ich zusammen mit Frank eine &lt;a href=&quot;http://www.nicosteiner.de/archives/263-Frontend-Performance-mit-PHP-IPC-Spring-Edition,-Berlin.html&quot;&gt;Session zur Performance von Websites&lt;/a&gt; und entsprechenden Möglichkeiten in PHP. Am Abend gings dann zur obligatorischen Konferenz-Party. Da ich am nächsten Morgen kaum aus dem Bett kam, schaffte ich es nur mit Verspätung zur Präsentation von Stefan Fischerländer zu &lt;a href=&quot;http://createordie.de/webinale2010/sessions/?tid=1620#session-12467&quot;&gt;Kennzahlen der Suchmaschinenoptimierung&lt;/a&gt;. Die von ihm erwähnten Fakten waren für mich zum Großteil komplett neu und sehr interessant. Ich hatte mich bisher immer nur auf das für meinen Job relevante Gebiet der On-Page-Optimierung konzentriert. Was es da jedoch für tolle Möglichkeiten der Messung von eventuellen Verbesserungen gibt, war mir nicht bewußt.&lt;br /&gt;
&lt;br /&gt;
Enttäuschend waren &lt;a href=&quot;http://createordie.de/webinale2010/sessions/?tid=1593#session-12961&quot;&gt;Ich® – Die eigene Identität als Marke&lt;/a&gt; und die Session zu zukünftigen Features von CMS. Da hatte sehr viel mehr erwartet. 
    </content:encoded>

    <pubDate>Thu, 03 Jun 2010 23:16:04 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/264-guid.html</guid>
    
</item>
<item>
    <title>Frontend-Performance mit PHP (IPC Spring Edition, Berlin)</title>
    <link>http://www.nicosteiner.de/archives/263-Frontend-Performance-mit-PHP-IPC-Spring-Edition,-Berlin.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/263-Frontend-Performance-mit-PHP-IPC-Spring-Edition,-Berlin.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=263</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=263</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    &lt;object style=&quot;margin:0px&quot; data=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=frontend-performance-php-100602174705-phpapp02&amp;amp;stripped_title=frontendperformance-ipc-2010&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=frontend-performance-php-100602174705-phpapp02&amp;amp;stripped_title=frontendperformance-ipc-2010&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/n.steiner&quot;&gt;Nico Steiner&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 03 Jun 2010 14:34:15 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/263-guid.html</guid>
    
</item>
<item>
    <title>301 Redirects für gelöschte Seiten</title>
    <link>http://www.nicosteiner.de/archives/262-301-Redirects-fuer-geloeschte-Seiten.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/262-301-Redirects-fuer-geloeschte-Seiten.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=262</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=262</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Durch neue Möglichkeiten der internen Fehleranalyse war es uns in der letzten Woche möglich, viele 404-Seiten mit &lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2008/04/best-practices-when-moving-your-site.html&quot;&gt;301 Redirects&lt;/a&gt; auf existierende Seiten umzuleiten. Neben den internen Analysen halfen uns vor allem die Google Webmaster Tools, dort insbesondere der Bereich &lt;a href=&quot;http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;amp;answer=35120&quot;&gt;Crawl errors&lt;/a&gt;. Die Tools werden von Google kostenlos zur Verfügung gestellt - es ist lediglich eine einmalige Verifikation der Websites nötig. Die Probleme können bis zu 2 Wochen zurückverfolgt werden. Neben den aufgetretenen Fehlern werden auch Zusatzinformationen bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Hilfreich ist z. B. die Aufzählung der verlinkenden Seiten, durch welche es zu 404-Fehler kommt.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:173 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;583&quot; height=&quot;37&quot; src=&quot;http://www.nicosteiner.de/uploads/404-pages.png&quot; alt=&quot;8 pages link to that page&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:174 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;658&quot; height=&quot;327&quot; src=&quot;http://www.nicosteiner.de/uploads/404-pages-detailed.png&quot; alt=&quot;Crawl errors - Detailed view&quot; /&gt; 
    </content:encoded>

    <pubDate>Fri, 21 May 2010 23:25:53 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/262-guid.html</guid>
    
</item>
<item>
    <title>SenSEO bekommt den Famous Software Award</title>
    <link>http://www.nicosteiner.de/archives/260-SenSEO-bekommt-den-Famous-Software-Award.html</link>
    
    <comments>http://www.nicosteiner.de/archives/260-SenSEO-bekommt-den-Famous-Software-Award.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=260</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=260</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    &lt;img src=&quot;http://download.famouswhy.com/awards/Famous_Software_Award_Logo.png&quot; style=&quot;float: right; margin-left: 15px;&quot; alt=&quot;Famous software award&quot; /&gt;&lt;cite&gt;Your product &quot;SenSEO&quot; has been granted the &quot;Famous Software Award&quot; by &lt;a href=&quot;http://download.famouswhy.com/&quot;&gt;Download.FamousWhy.com&lt;/a&gt;. The Famous Software Award has been initiated by Download.FamousWhy.com  to recognize &quot;Famous Software&quot;, which come up with innovative and efficient ways to reflect the best relationship with users assuring their satisfaction. [...]&lt;/cite&gt; 
    </content:encoded>

    <pubDate>Thu, 20 May 2010 23:32:49 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/260-guid.html</guid>
    
</item>
<item>
    <title>Xmarks - Top 10 Site</title>
    <link>http://www.nicosteiner.de/archives/261-Xmarks-Top-10-Site.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/261-Xmarks-Top-10-Site.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=261</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=261</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    &lt;a href=&quot;http://www.xmarks.com/site/sensational-seo.com&quot;&gt;&lt;img src=&quot;http://gizmo.xmarks.com/banner/JTdCJTIydXNlcm5hbWUlMjIlM0ElMjAlMjJuLnN0ZWluZXIlMjIlMkMlMjAlMjJ1cmxfaWQlMjIlM0ElMjAlMjJsRFBHWmRabXVBdWJEVEZrSjNxTEc2b3VQLWNHaVFJYU5QLXRPOF9raVo4JTIyJTJDJTIwJTIyZmdfY29sb3IlMjIlM0ElMjAlMjIlMjMzMzQlMjIlMkMlMjAlMjJ0aXRsZSUyMiUzQSUyMCUyMlNlblNFTyUyMEZpcmVmb3glMjBFeHRlbnNpb24lMjAtJTIwT2ZmaWNpYWwlMjBXZWJzaXRlJTIyJTJDJTIwJTIybGlua19jb2xvciUyMiUzQSUyMCUyMiUyMzM1OCUyMiUyQyUyMCUyMnZpZXdfdHlwZSUyMiUzQSUyMCUyMjAlMjIlMkMlMjAlMjJoZWlnaHQlMjIlM0ElMjAlMjIxNzAlMjIlMkMlMjAlMjJ0b3BpYyUyMiUzQSUyMCUyMmZpcmVidWclMjBleHRlbnNpb25zJTIyJTJDJTIwJTIyYmdfY29sb3IlMjIlM0ElMjAlMjJ3aGl0ZSUyMiUyQyUyMCUyMnZlcnNpb24lMjIlM0ElMjAlMjIxJTIyJTJDJTIwJTIybGlua190YXJnZXQlMjIlM0ElMjAlMjIwJTIyJTdE&quot; width=&quot;210&quot; height=&quot;89&quot; border=&quot;0&quot; title=&quot;Xmarks Top Site in Firebug&amp;#160;Extensions&quot; alt=&quot;Xmarks Top Site in Firebug Extensions&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;cite&gt;SenSEO Firefox Extension - Official Website is a Top Site &amp;#32;in&amp;#32; &lt;a href=&quot;http://www.xmarks.com/topic/firebug_extensions?p=149208147&amp;amp;cid=gz&quot;&gt;Firebug Extensions&lt;/a&gt;.&lt;/cite&gt; 
    </content:encoded>

    <pubDate>Fri, 21 May 2010 21:31:05 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/261-guid.html</guid>
    
</item>
<item>
    <title>SenSEO - Neue Features</title>
    <link>http://www.nicosteiner.de/archives/259-SenSEO-Neue-Features.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/259-SenSEO-Neue-Features.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=259</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=259</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    In der neuen Version von SenSEO habe ich die Überprüfung der Keyworddichte anhand von Prozentwerten ersetzt. Statt dessen wird lediglich überprüft, ob die Keywords einige Male im Inhalt der Seite zu finden sind. Die Prozentwerte waren das mit Abstand umstrittenste Feature von SenSEO. Im Netz lassen sich diesbezüglich viele gute Quellen finden (z.B. &lt;a href=&quot;http://www.seobook.com/archives/001986.shtml&quot;&gt;Aaron Wall&lt;/a&gt;, &lt;a href=&quot;http://www.alistapart.com/articles/findabilityorphan/&quot;&gt;Aarron Walter&lt;/a&gt;). Die neue Überprüfung orientiert sich an der Aussage von &lt;a href=&quot;http://www.mattcutts.com/blog/seo-site-review/&quot;&gt;Matt Cutts zu dem Thema&lt;/a&gt; (0:12:40).&lt;br /&gt;
&lt;br /&gt;
Weiterhin ist ein kleines Twitter Gimmick enthalten. Liefert die Bewertung der Seite ein A (mehr als 90 von 100 Punkte) wird ein Link mit einer Twitter-Message angezeigt.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:172 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;750&quot; height=&quot;38&quot; src=&quot;http://www.nicosteiner.de/uploads/senseo-twitter-message.png&quot; alt=&quot;I got grade A for optimizing my site with SenSEO Firefox extension&quot; /&gt; 
    </content:encoded>

    <pubDate>Thu, 20 May 2010 23:09:43 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/259-guid.html</guid>
    
</item>
<item>
    <title>Neue SenSEO Rich Snippet Vorschau</title>
    <link>http://www.nicosteiner.de/archives/258-Neue-SenSEO-Rich-Snippet-Vorschau.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/258-Neue-SenSEO-Rich-Snippet-Vorschau.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=258</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=258</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Etwas später als bei Twitter angekündigt, kommt heute der Artikel zur Implementierung der Rich Snippet Vorschau in SenSEO.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Das Feature&lt;/strong&gt;&lt;br /&gt;
Das &lt;a href=&quot;http://googlewebmastercentral.blogspot.com/&quot;&gt;Google Webmaster Central Blog&lt;/a&gt; hat in letzter Zeit immer wieder die Darstellung neuer &lt;a href=&quot;http://microformats.org/&quot;&gt;Mikroformate&lt;/a&gt; in den Google SERPs beworben (der offizielle Name ist Rich Snippets). Zu den unterstützen Mikroformaten zählen unter anderem Personen, Ereignisse, Bewertungen oder auch Rezepte. Wie das dann aussehen kann, zeigt sich am Beispiel der Suche nach &quot;thai green mango salad&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:170 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;598&quot; height=&quot;280&quot; src=&quot;http://www.nicosteiner.de/uploads/mango-salat-google-serp.png&quot; alt=&quot;Green Mango Salat Google SERP&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Das zusätzliche Bild und die Bewertungs-Skala werden von Google dargestellt, weil die Macher von about.com ihre Rezepte mit speziellen Auszeichnungen versehen haben. Um diesen und anderen Entwicklern im Vorfeld eine Möglichkeit zu bieten, diese Daten zu testen, bietet Google das &lt;a href=&quot;http://www.google.com/webmasters/tools/richsnippets&quot;&gt;Rich Snippets Testing Tool&lt;/a&gt; als Google Webmaster Tool an. Vor einigen Tagen hatte ich nun die Idee, dieses Tool in &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/9403/&quot;&gt;SenSEO 1.4.0&lt;/a&gt; zu integrieren. Ein solche Vorschau bietet sich an, da SenSEO als Extension auf On-Page Optimierungen ausgerichtet ist. Läßt man von SenSEO eine Rich Snippet Vorschau der erwähnten Rezept-Seite generieren, sieht diese so aus:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:171 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;743&quot; height=&quot;477&quot; src=&quot;http://www.nicosteiner.de/uploads/senseo-rich-snippet-preview.png&quot; alt=&quot;SenSEO Rich Snippet Preview&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Die Umsetzung&lt;/strong&gt;&lt;br /&gt;
Die Umsetzung der Vorschau basiert im Wesentlichen auf dem &lt;a href=&quot;http://developer.yahoo.com/yql/&quot;&gt;Yahoo-Service YQL&lt;/a&gt;. Mit YQL ist es möglich, Inhalte einer fremden Seite zu extrahieren und in die eigene Website (oder Extension) zu integrieren. Diese Möglichkeit habe ich genutzt, um von der aktuell im Browser angezeigten Seite im Hintergund eine Vorschau mit dem Rich Snippet Testing Tool zu erstellen und diese in SenSEO zu integrieren. Die gesamte Umsetzung geschieht mit JavaScript direkt im Browser - serverseitige Scripte sind nicht nötig.&lt;br /&gt;
&lt;br /&gt;
Zu Beginn wird ein XHR-Request erzeugt, welcher mit Hilfe von YQL aus dem Google Tool die Vorschau für das Rich Snippet extrahiert:&lt;br /&gt;
&lt;br /&gt;
var req = new XMLHttpRequest();&lt;br /&gt;
&lt;br /&gt;
req.open(&#039;GET&#039;, &quot;http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fwww.google.com%2Fwebmasters%2Ftools%2Frichsnippets%3Furl%3D&quot; + encodeURIComponent(content.window.location) + &quot;%22%20and%20xpath%3D&#039;%2F%2Fdiv%5B%40class%3D%22onebox%22%5D&#039;&quot;, true);&lt;br /&gt;
&lt;br /&gt;
Als Response wird ein XML-Dokument geliefert, in dem der Code-Schnipsel der aufgerufenen Webseite verpackt ist. Um an diesen Schnipsel zu kommen, nutze ich die XPath-Implementierung des Firefox:&lt;br /&gt;
&lt;br /&gt;
var xmlDoc = req.responseXML;&lt;br /&gt;
&lt;br /&gt;
var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);  &lt;br /&gt;
   &lt;br /&gt;
var nodesSnapshot = xmlDoc.evaluate(&#039;/query/results/node()&#039;, xmlDoc, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );&lt;br /&gt;
&lt;br /&gt;
Um die so entstandenen XML-Knoten in das Dokument integrieren zu können, müssen diese im letzten Schritt in einen String serialisiert werden:&lt;br /&gt;
&lt;br /&gt;
var xmlString = (new XMLSerializer()).serializeToString(nodesSnapshot.snapshotItem(0));&lt;br /&gt;
&lt;br /&gt;
SENSEO.Panel.panelDocument.getElementById(&#039;snippet-container&#039;).innerHTML = xmlString;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Fazit&lt;/strong&gt;&lt;br /&gt;
Durch diese Lösung erspare ich mir das &quot;Nachprogrammieren&quot; des Rich Snippet Testing Tools. Die Generierung der Vorschau wird somit weiterhin von diesem Tool erledigt. Unterstützt Google in Zukunft neue Mikroformate, werden diese auch sofort in SenSEO angezeigt. Ein Schwachpunkt dieser Lösung ist die Selektion des Code-Schipsels anhand von HTML-Elementen. Sollten die Entwickler von Google den Aufbau ihres Dokuments ändern, könnte die Selektion von einer Minute zur Nächsten scheitern und die Vorschau wäre hinüber. In einem solchen Fall ist eine neue Version von SenSEO mit angepasster Selektion nötig. 
    </content:encoded>

    <pubDate>Thu, 20 May 2010 22:59:28 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/258-guid.html</guid>
    
</item>
<item>
    <title>Twitter-Multikulti</title>
    <link>http://www.nicosteiner.de/archives/257-Twitter-Multikulti.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/257-Twitter-Multikulti.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=257</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=257</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Die letzten Tage hat es &lt;a href=&quot;http://twitter.com/followers&quot;&gt;Twitter-Followers&lt;/a&gt; gehagelt. Schön zu sehen, dass es bei den SenSEO-Interessierten international zugeht. Allein die Follower der letzen Tage kommen aus Deutschland, USA, Indien, Holland, Israel und Japan.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:167 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;660&quot; height=&quot;205&quot; src=&quot;http://www.nicosteiner.de/uploads/twitter-follower.png&quot; alt=&quot;Twitter Follower&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Auch bei der &lt;a href=&quot;http://www.alexa.com/siteinfo/sensational-seo.com&quot;&gt;Alexa-Statistik&lt;/a&gt; geht es multikulturell zu:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:168 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;660&quot; height=&quot;308&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://www.nicosteiner.de/uploads/alexa-countries.png&quot; alt=&quot;Visitors by Country for Sensational-seo.com&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Die Besucher-Landkarte von Google Analytics zeigt, dass sich die Besucher von &lt;a href=&quot;http://www.sensational-seo.com/&quot;&gt;www.sensational-seo.com&lt;/a&gt; auf die ganze Welt verteilen:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:169 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;641&quot; height=&quot;349&quot; src=&quot;http://www.nicosteiner.de/uploads/map-overlay-google-analytics.png&quot; alt=&quot;Google Analytics&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 10 May 2010 20:34:33 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/257-guid.html</guid>
    
</item>
<item>
    <title>whats wr6ng w5th 0y 2eyb6ard</title>
    <link>http://www.nicosteiner.de/archives/256-whats-wr6ng-w5th-0y-2eyb6ard.html</link>
            <category>Privat</category>
    
    <comments>http://www.nicosteiner.de/archives/256-whats-wr6ng-w5th-0y-2eyb6ard.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=256</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=256</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Nein, ich hab nicht zu viel getrunken. Gerade eben habe ich mit dieser Suche bei Google in einem Forum die Lösung für die spontan aufgetretenen Probleme mit meiner Tastatur gefunden. Neben einigen erwartbaren Kommentaren war dort auch die Lösung zu finden:&lt;br /&gt;
&lt;br /&gt;
&gt; Turn off your numlock, faggit. 
    </content:encoded>

    <pubDate>Sun, 09 May 2010 22:57:13 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/256-guid.html</guid>
    
</item>
<item>
    <title>Highcharts - Diagramme mit JavaScript erstellen</title>
    <link>http://www.nicosteiner.de/archives/255-Highcharts-Diagramme-mit-JavaScript-erstellen.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/255-Highcharts-Diagramme-mit-JavaScript-erstellen.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=255</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=255</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Ich habe eben die Bücher &lt;a href=&quot;http://www.amazon.de/Presentation-Zen-Simple-Design-Delivery/dp/0321525655&quot;&gt;Presentation Zen&lt;/a&gt; und &lt;a href=&quot;http://www.amazon.de/Slide-ology-Science-Presentation-Design/dp/0596522347&quot;&gt;Slide:ology&lt;/a&gt; durchgeblättert. &lt;a href=&quot;http://www.highcharts.com/&quot;&gt;Highcharts&lt;/a&gt; ist eine JavaScript-Library, welche es erlaubt, Diagramme in dem Stil zu erstellen, wie er von den Büchern empfohlen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;cite&gt;Highcharts is a charting library written in pure JavaScript, offering an easy way of adding interactive charts to your web site or web application. Highcharts currently supports line, spline, area, areaspline, column, bar, pie and scatter chart types.&lt;/cite&gt; 
    </content:encoded>

    <pubDate>Mon, 03 May 2010 00:44:42 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/255-guid.html</guid>
    
</item>
<item>
    <title>Rezension: Bekenntnisse eines Redners</title>
    <link>http://www.nicosteiner.de/archives/254-Rezension-Bekenntnisse-eines-Redners.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/254-Rezension-Bekenntnisse-eines-Redners.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=254</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=254</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Ich habe das Buch von &lt;a href=&quot;http://www.scottberkun.com/&quot;&gt;Scott Berkun&lt;/a&gt; in der &lt;a href=&quot;http://www.amazon.de/Bekenntnisse-eines-Redners-gehört-werden/dp/389721993X&quot;&gt;deutschen Übersetzung&lt;/a&gt; von Peter Klicman in Vorbereitung auf die &lt;a href=&quot;http://it-republik.de/php/phpconference/&quot;&gt;International PHP Conference&lt;/a&gt; gelesen.&lt;br /&gt;
&lt;br /&gt;
Scott warnt bereits im Prolog davor, dass sein Buch für all jene ungeeignet sein könnte, die nicht immer gern die Wahrheit hören. Dieser Warung läßt er 10 Kapitel folgen, die persönlich und eigenwillig seine Erfahrungen und Erlebnisse als Redner schildern. Daraus leitet er zahlreiche Ratschläge für Neulinge und Profis ab, die sich, wie er, auf ein Podium begeben. Scott nimmt die Angst vor Anfängerfehlern, indem er an Beispielen zeigt, dass Fehler ständig passieren und diese nur allzu natürlich sind (&quot;Vermeiden Sie den Fehler, keine Fehler machen zu wollen.&quot;). Er gibt Tipps, wie man mit der Nervosität umgehen kann, die sich in Konfrontation mit einer großen Menschenmenge (auch bei ihm) einstellt. Auf amüsante Weise unternimmt er dabei einen Ausflug zu den Höhlenmenschen und der Organisation unseres Gehirns. Er schreibt über häßliche Kronleuchter und großartig konzipierte Amphitheater, wenn er über schwierige Räume aufklärt. Auch mit der Höhe seines Jahreseinkommens hält er nicht hinterm Berg, und zeigt, was andere in diesem Business verdienen. Der Leser erfährt weiterhin, wie er als Redner den Kontakt zum Publikum aufbaut und aufrecht erhält und welche wichtige Rolle der Aufbau der Präsentation dabei spielt. Amüsante Einblicke in Auftritte beim Fernsehen, persönliche Bekenntnisse des Autors und &quot;handwerkliche&quot; Tipps zu Fernbedienung, Kamera und Mikrofon runden das Buch ab.&lt;br /&gt;
&lt;br /&gt;
&quot;Bekenntnisse eines Redners&quot; ist schonungslos ehrlich, unkompliziert und mit viel Witz geschrieben. Neben zahlreichen Fakten und sehr hilfreichen Einblicken und Ratschlägen erfährt der Leser viele persönliche Einblicke in die Arbeit und das Leben eines Redners. Diese Kombination macht meiner Meinung nach die Stärke des Buchs aus. Scotts Humor hat mir nicht nur einmal irritierte Blicke eingebracht, wenn ich kichernd und glucksend in der Ecke eines Cafes in dem Buch gelesen habe. 
    </content:encoded>

    <pubDate>Sun, 02 May 2010 20:04:12 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/254-guid.html</guid>
    
</item>
<item>
    <title>Erfolgreiche Ladezeiten-Optimierung</title>
    <link>http://www.nicosteiner.de/archives/253-Erfolgreiche-Ladezeiten-Optimierung.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/253-Erfolgreiche-Ladezeiten-Optimierung.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=253</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=253</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Es ist schön zu sehen, wie unsere Bemühungen, die Ladezeiten unserer Webseiten zu verkürzen, Wirkung zeigen. Dies zeigen nicht nur Tools wie &lt;a href=&quot;http://developer.yahoo.com/yslow/&quot;&gt;YSlow&lt;/a&gt; oder &lt;a href=&quot;http://code.google.com/speed/page-speed/&quot;&gt;Page Speed&lt;/a&gt;, sondern auch Tools wie die &lt;a href=&quot;http://www.google.com/webmasters/tools/&quot;&gt;Google Webmaster Tools&lt;/a&gt;. Diese analysieren in ihrem Lab-Bereich die Ladezeiten von Webseiten und veröffentlichen neben einer Statistik der vergangenen Monate auch Empfehlungen für weitere Optimierungen. Diese Statistiken zeigen über die letzten Monate für sämtliche unserer Projekte eine deutliche Verbesserung der Ladezeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:166 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;750&quot; height=&quot;229&quot; src=&quot;http://www.nicosteiner.de/uploads/page-load-time.png&quot; alt=&quot;Ladezeiten eines Pustefix-Projekts&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Die Statistik geht nur bis zum Dezember des letzten Jahres zurück. Einige Optimierungen fanden schon vorher statt, der initiale Wert dürfte also noch sehr viel größer als 3 Sekunden sein. Und wie die Zahlen des Artikels &lt;a href=&quot;http://www.phpied.com/the-performance-business-pitch/&quot;&gt;The performance business pitch&lt;/a&gt; von Stoyan Stefanov zeigen, haben solche Verbesserungen einen großen Einfluß auf die User Experience und das Kaufverhalten des Besuchers einer Website.&lt;br /&gt;
&lt;br /&gt;
Wie wir das geschafft haben, läßt sich in &lt;a href=&quot;index.php?serendipity[action]=search&amp;amp;serendipity[searchTerm]=jasmin&quot;&gt;diversen Artikeln&lt;/a&gt; hier im Blog nachlesen. 
    </content:encoded>

    <pubDate>Wed, 28 Apr 2010 06:49:01 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/253-guid.html</guid>
    
</item>
<item>
    <title>GWT - Top search queries</title>
    <link>http://www.nicosteiner.de/archives/252-GWT-Top-search-queries.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/252-GWT-Top-search-queries.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=252</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=252</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Google hat in den &lt;a href=&quot;http://www.google.com/webmasters/tools/&quot;&gt;Webmaster Tools&lt;/a&gt; die Statistik zu den Top search queries ordentlich erweitert. Statt weniger, wager Daten stehen jetzt detaillierte Statistiken zu Impressions und Clickthroughs in Abhängigkeit zur Position in den SERPs zur Verfügung. Wer hätte gedacht, dass Google solche Daten eines Tages in dieser Genauigkeit so bereitwillig veröffentlicht?&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:165 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;750&quot; height=&quot;505&quot; src=&quot;http://www.nicosteiner.de/uploads/gwt-top-search-queries.png&quot; alt=&quot;Top search queries&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 26 Apr 2010 23:27:55 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/252-guid.html</guid>
    
</item>
<item>
    <title>Xsticky-Addon - Sticky Notes für den Firefox</title>
    <link>http://www.nicosteiner.de/archives/251-Xsticky-Addon-Sticky-Notes-fuer-den-Firefox.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/251-Xsticky-Addon-Sticky-Notes-fuer-den-Firefox.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=251</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=251</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Das &lt;a href=&quot;http://www.xsticky.com/&quot;&gt;Xsticky-Addon&lt;/a&gt; erlaubt im Firefox das Platzieren von Sticky Notes auf einer beliebigen Webseite. Ich schreibe darüber, da mir diese Idee vor einiger Zeit auch durch den Kopf ging (wir hatten vor 2 Jahren &lt;a href=&quot;http://www.nicosteiner.de/archives/35-Stage-Assistent-und-StageNotes.html&quot;&gt;etwas ähnliches&lt;/a&gt; als Teil unserer Entwicklungsumgebung implementiert). Von der Entwicklung eines entsprechenden Firefox-Addons habe ich dann aber abgesehen - der Aufwand schien mir einfach zu groß. Das Xsticky-Addon steht in der aktuellen Version erst am Anfang einer denkbar aufwändigen Entwicklung. Die Todo-Liste auf der &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/61266&quot;&gt;Mozilla Addon-Seite&lt;/a&gt; läßt erahnen, wo die Reise hingehen könnte. Ich bin gespannt, ob Swen Burdack das nötige Durchhaltevermögen zeigt.&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Liste von Gedanken/Problemen, die mir damals vor allem in Hinblick auf den Austausch der Notes durch den Kopf gingen:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Wie bestimme ich, wer die Note zu lesen bekommt? (Organisation von Teams/Projekten/Zuständigkeiten)&lt;/li&gt;&lt;li&gt;Wie findet diese Organisation statt? (Weboberfläche, Autorisierung, Rechtervergabe)&lt;/li&gt;&lt;li&gt;Wie gehe ich mit unterschiedlichen Seitenzuständen um? Welchen Identifier für den Zustand einer Seite kann ich nutzen? Was mache ich mit Seiten, die sich innerhalb eines Flows befinden (Kundendaten etc.)?&lt;/li&gt;&lt;li&gt;Wie kann ich solch ein Addon monetarisieren? (Bis zu 3 Projekte/Personen/Teams kostenlos, dann zahlen?) Wie stelle ich dann eine 100%ige Verfügbarkeit sicher? Und die ganze Zahlungsabwicklung &lt;img src=&quot;http://www.nicosteiner.de/templates/nicosteiner/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;
Ich fänd&#039; es toll, wenn der Entwickler hierfür Lösungen finden würde. Dann wird Xsticky vermutlich ein großer Erfolg. 
    </content:encoded>

    <pubDate>Sun, 25 Apr 2010 23:41:14 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/251-guid.html</guid>
    
</item>
<item>
    <title>Mozilla HeadsUpDisplay</title>
    <link>http://www.nicosteiner.de/archives/250-Mozilla-HeadsUpDisplay.html</link>
    
    <comments>http://www.nicosteiner.de/archives/250-Mozilla-HeadsUpDisplay.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=250</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=250</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Mozilla plant die Fehlerkonsole durch die &lt;a href=&quot;https://wiki.mozilla.org/Firefox/Projects/Console&quot;&gt;interaktive Konsole HeadsUpDisplay&lt;/a&gt; zu ersetzen. Damit soll Entwicklern im Firefox ein sehr genauer Blick auf die Vorgänge während des Aufbaus der Webseite und auf nachfolgende Veränderungen der Seite ermöglicht werden.&lt;br /&gt;
&lt;br /&gt;
Unter anderem soll das Tool folgende Informationen anzeigen:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Alle Arten von Fehlern (Error Console)&lt;/li&gt;&lt;li&gt;Netzwerkaktivitäten (LiveHTTPHeaders)&lt;/li&gt;&lt;li&gt;JavaScript Events&lt;/li&gt;&lt;li&gt;DOM/HTML Manipulation (Firebug)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Weitere geplante Features sind:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Interaktive Kommandozeile zur Ausführung von JavaScript&lt;/li&gt;&lt;li&gt;Logging-API ähnlich der Firebug Konsole&lt;/li&gt;&lt;li&gt;Inspizieren von Objekten&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;Momentan verteilen sich viele der Features auf verschiedene Extensions. Es sieht so aus, als wollte Mozilla diese im HeadsUpDisplay nativ vereinen.&lt;br /&gt;
&lt;br /&gt;
Mozilla war mit Entwickler-Tools in der Vergangenheit oftmals Vorreiter. Allerdings hat Apple diesmal mit der neuen Version des &lt;a href=&quot;http://ajaxian.com/archives/webkit-inspector-improves-again-timeline-audits-and-dedicated-console&quot;&gt;WebKit Inspector&lt;/a&gt; in beeindruckender Weise vorgelegt. Auch Google Chrome hat mittlerweile sehr ausgereifte &lt;a href=&quot;https://chrome.google.com/extensions&quot;&gt;Extensions&lt;/a&gt; zu bieten.&lt;br /&gt;
&lt;br /&gt;
Es bleibt abzuwarten, ob Mozilla den Ruf des Firefox als besten Browser zum Entwickeln von Webseiten gegen Apple und Google in Zukunft verteidigen kann. 
    </content:encoded>

    <pubDate>Sun, 25 Apr 2010 21:44:24 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/250-guid.html</guid>
    
</item>
<item>
    <title>Nachtrag zum JavaScript Error Tool</title>
    <link>http://www.nicosteiner.de/archives/249-Nachtrag-zum-JavaScript-Error-Tool.html</link>
            <category>Referenzen</category>
    
    <comments>http://www.nicosteiner.de/archives/249-Nachtrag-zum-JavaScript-Error-Tool.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=249</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=249</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Es gibt nun auch einen Online-Service &lt;a href=&quot;http://www.exceptionhub.com/&quot;&gt;ExceptionHub&lt;/a&gt;, welcher JavaScript-Fehler trackt und über eine Weboberfläche, per E-Mail oder als RSS-Feed kommuniziert. Weitere Features des Service sind ein stack trace (feine Sache, aber wie in den Kommentaren zu lesen ist, nicht ganz unkritisch implementiert), die Gruppierung von Fehlern und eine Unterscheidung zwischen Entwicklungs- und Produktionsbetrieb. Das Prinzip ähnelt dem des &lt;a href=&quot;http://www.nicosteiner.de/archives/210-J.E.T.-JavaScript-Error-Tool.html&quot;&gt;J.E.T.&lt;/a&gt;, welches wir für die Analyse von JavaScript-Fehlern einsetzen.&lt;br /&gt;
&lt;br /&gt;
Unsere Erfahrungen seit Einführung des J.E.T. im Dezember des letzten Jahres sind durchaus positiv. Nach einer anfänglichen Bugfix-Phase haben sich die Fehler auf ein moderates Maß eingependelt. Viele der jetzt noch auftretenden Fehler sind auf vorzeitig abgebrochene Ladevorgänge und ähnliche, nicht behandelbare Fehler, zurückzuführen. Sehr hilfreich ist das unmittelbare Feedback über neu auftretende Fehler nach Onlinegängen. Hier können wir entsprechende Maßnahmen sehr viel schneller als früher ergreifen.&lt;br /&gt;
&lt;br /&gt;
Ein stack trace, wie ihn ExceptionHub bietet, wäre auch für das J.E.T. wünschenswert. Momentan ist es sehr frustrierend, die Ursache für so ungenaue Fehler wie &quot;target  is null&quot; zu finden. 
    </content:encoded>

    <pubDate>Sun, 25 Apr 2010 21:01:18 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/249-guid.html</guid>
    
</item>
<item>
    <title>Grillsaison geht los</title>
    <link>http://www.nicosteiner.de/archives/248-Grillsaison-geht-los.html</link>
            <category>Rezepte</category>
    
    <comments>http://www.nicosteiner.de/archives/248-Grillsaison-geht-los.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=248</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=248</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Der &lt;a href=&quot;http://blog.schst.net/&quot; title=&quot;Stephan&#039;s Blog&quot;&gt;Chef&lt;/a&gt; heizt nächsten Dienstag &lt;a href=&quot;http://www.weberstephen.de/&quot; title=&quot;Weber-Grill&quot;&gt;den Grill&lt;/a&gt; wieder an. Höchste Zeit nach passenden Rezepten zu schauen. Letztes Jahr haben mich die Rezepte für Polenta-Paprika und für gegrillte Feigen besonders begeistert. Beide Rezepte sind bei &lt;a href=&quot;http://kulinario.org&quot;&gt;kulinario.org&lt;/a&gt; zu finden. Bei EatSmarter! gibt es ebenfalls &lt;a href=&quot;http://eatsmarter.de/nc/rezepte/s.html?id=66&amp;amp;text=gegrillt&amp;amp;search=1&amp;amp;wt_form=1#mainmenu&quot; title=&quot;EatSmarter! Grillen&quot;&gt;jede Menge Anregungen&lt;/a&gt; für die nächste Grillparty. 
    </content:encoded>

    <pubDate>Sun, 25 Apr 2010 19:50:11 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/248-guid.html</guid>
    
</item>
<item>
    <title>Joggen - erste Bilanz</title>
    <link>http://www.nicosteiner.de/archives/247-Joggen-erste-Bilanz.html</link>
            <category>Privat</category>
    
    <comments>http://www.nicosteiner.de/archives/247-Joggen-erste-Bilanz.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=247</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=247</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Jetzt hab ich ein paar Runden hinter mir und es wird Zeit für eine erste Bilanz. Das Laufen macht riesig Spass. Morgens bei Sonnenaufgang vor der Arbeit ins Grüne und bei Vogelgezwitscher und klarer Luft durch den Park - großartig! Jedes Mal geht&#039;s ein Stück weiter - heute von meiner Wohnung zum Schloss und wieder zurück. Das sind immerhin fast 5 Kilometer. Dafür, dass ich das noch nicht mal einen Monat mache, und vorher 15 Jahre keine 100 Meter am Stück gelaufen bin, ist das bestimmt nicht übel. Mit dem &lt;a href=&quot;http://www.gmap-pedometer.com/&quot;&gt;Gmaps Pedometer&lt;/a&gt; habe ich die Strecke mal markiert - dabei ist schön zu sehen, dass ein Großteil der Route durch Parks führt. Nördlich vom Schloss schließt der Hardtwald an - da ist also noch ordentlich Luft und ich kann die Distanz beliebig verlängern.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:164 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;700&quot; height=&quot;426&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://www.nicosteiner.de/uploads/laufroute.png&quot; alt=&quot;Laufroute&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 19 Apr 2010 09:00:29 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/247-guid.html</guid>
    
</item>
<item>
    <title>Mathematisches Ende des IE6 und IE7</title>
    <link>http://www.nicosteiner.de/archives/246-Mathematisches-Ende-des-IE6-und-IE7.html</link>
            <category>Privat</category>
    
    <comments>http://www.nicosteiner.de/archives/246-Mathematisches-Ende-des-IE6-und-IE7.html#comments</comments>
    <wfw:comment>http://www.nicosteiner.de/wfwcomment.php?cid=246</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.nicosteiner.de/rss.php?version=2.0&amp;type=comments&amp;cid=246</wfw:commentRss>
    

    <author>nospam@example.com (Nico Steiner)</author>
    <content:encoded>
    Pingdom hat &lt;a href=&quot;http://royal.pingdom.com/2010/04/08/the-modern-browser-wars-how-well-firefox-ie-and-chrome-succeed-in-getting-their-users-to-upgrade/&quot;&gt;Statistiken zum Update der häufigsten Browser&lt;/a&gt; veröffentlicht. Meine besondere Beachtung galt den Zahlen der verschiedenen Internet Explorer Versionen.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://farm3.static.flickr.com/2734/4499455005_4d140b4b25_o.png&quot; alt=&quot;The upgrade pattern of Internet Explorer&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man die einfache Annahme trifft, dass die Zahl der IE6 und IE7 weiterhin linear abnimmt, kommt man beim IE6 auf eine Steigung von -0,23 und beim IE7 auf -0,32. Das würde bedeuten, dass das mathematische Ende des IE6 noch in diesem Jahr im Dezember gekommen wäre. Der IE7 würde nach dieser Formel im März 2013 von der Bildfläche verschwinden.&lt;br /&gt;
&lt;br /&gt;
Leider zeigen die Statistiken der übrigen Browser, dass die Zahlen gegen Ende exponentiell abnehmen - bleibt zu hoffen, dass sie vorher in den Bereich vernachlässigbarer Werte sinken. 
    </content:encoded>

    <pubDate>Fri, 16 Apr 2010 11:10:43 +0200</pubDate>
    <guid isPermaLink="false">http://www.nicosteiner.de/archives/246-guid.html</guid>
    
</item>

</channel>
</rss>
