<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webkrauts &#187; Adventskalender 2007</title>
	<atom:link href="http://www.webkrauts.de/category/adventskalender/adventskalender-2007/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webkrauts.de</link>
	<description>Für mehr Qualität im Web</description>
	<lastBuildDate>Thu, 24 Dec 2009 06:00:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Netzkönig</title>
		<link>http://www.webkrauts.de/2007/12/25/netzkoenig/</link>
		<comments>http://www.webkrauts.de/2007/12/25/netzkoenig/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 23:00:42 +0000</pubDate>
		<dc:creator>Andreas Demmer</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Netzkönig]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/25/netzkoenig/</guid>
		<description><![CDATA[<img id="image376" src="http://www.webkrauts.de/wp-content/uploads/2007/12/25b.png" alt="25. Türchen des Webkrauts-Adventskalenders" class="bild-rechts" />

In den letzten 24 Tagen haben wir euch ein breites Spektrum von Advents-Quickies zu allen möglichen Webworker-Themen geboten. Heute setzen wir noch ein Sahnehäubchen drauf und bieten euch ein kleines, feines, besinnliches Gedicht: Andreas Demmer mit einer modernen Hommage an Goethes Erlkönig. Frohes Fest. ]]></description>
			<content:encoded><![CDATA[<p><img id="image377" src="http://www.webkrauts.de/wp-content/uploads/2007/12/25p.png" alt="25. Türchen des Webkrauts-Adventskalenders" class="bild-rechts" /></p>
<p>Wer surft so spät durch Nacht und Netz,<br />
es ist ein Webkraut, von Deadlines gehetzt.<br />
Er hält die Maus in feuchten Händen,<br />
zu wenig Zeit – wie soll das enden?</p>
<p>Webkraut, was birgst Du so bang Dein Gesicht?<br />
Siehst Kunde, Du die Fehler nicht?<br />
Invalider Code bereitet mir Qual…<br />
Ach Webkraut, das ist mir doch egal!</p>
<p>Du armer Tropf, komm hör schon auf,<br />
die Seite ist auch so gekauft,<br />
Manch bunte Bildchen zeigt sie elegant,<br />
und die Startseite hat ein schönes Gewand!</p>
<p>Oh Himmel hilf, hörest Du nicht,<br />
was der Kunde mir da leise verspricht?<br />
Sei ruhig, bleib&#039; ruhig, sei kein Idiot,<br />
wer braucht denn schon validen Code!</p>
<p>Willst feiner Webkraut Du online jetzt gehen?<br />
Mag meine Besucher nicht warten sehen.<br />
Denn die surfen sowieso mit dem IE,<br />
da wäre der Code auch jetzt schon ok!</p>
<p>Mein Kunde, mein Kunde, das geht so nicht,<br />
schau: Der W3C Validator zerbricht!<br />
Mein Webkraut, mein Webkraut, ein paar Fehler nur,<br />
dafür macht die Seite doch eine gute Figur.</p>
<p>Vergiss die Fehler, mich reizt nur die Gestalt,<br />
und bist Du nicht willig, so brauch ich Gewalt!<br />
Die Feinpolitur hat dir nichts genutzt,<br />
Die Rechnung hab ich Dir gestutzt!</p>
<p>Dem Webkraut grauset&#039;s, er fürchtet die Pleite,<br />
und lädt sie hoch, die unfertige Seite,<br />
erreicht die Deadline mit Müh und Not,<br />
den Kunden freut&#039;s – der Validator ist tot!</p>
<h4>Zum Autor</h4>
<p><img id="image378" src="http://www.webkrauts.de/wp-content/uploads/2007/12/andreas_demmer.jpg" alt="Autorenfoto: Andreas Demmer" class="bild-links" /><a href="http://www.andreas-demmer.de">Andreas Demmer</a> ist Teamleiter der Online-Unit einer Werbeagentur. Er ist Linux-Evangelist, PHP- und Webstandards-Enthusiast und hat bereits zahlreiche Artikel in Fachmagazinen rund um das Thema Software-Entwicklung verfasst, u.a. im PHP Magazin. Seine Liebe zu den Webstandards spiegelt sich in seinen Moralpredigten über standardkonforme Websites mit unaufdringlichem Javascript wieder.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/25/netzkoenig/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Transparenzeffekte mit PNG-24 und CSS</title>
		<link>http://www.webkrauts.de/2007/12/24/transparenzeffekte-mit-png-24-und-css/</link>
		<comments>http://www.webkrauts.de/2007/12/24/transparenzeffekte-mit-png-24-und-css/#comments</comments>
		<pubDate>Sun, 23 Dec 2007 23:00:07 +0000</pubDate>
		<dc:creator>Nils Pooker</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Hover]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[Transparenz]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/23/transparenzeffekte-mit-png-24-und-css/</guid>
		<description><![CDATA[<div class="adv07 adv07-24">24. Türchen des Webkrauts-Adventskalenders</div>

<p>Unser heutiges Türchen kombiniert die aktuellen Adventskalender-Beiträge <a href="http://www.webkrauts.de/2007/12/16/transparente-grafiken-gif-und-png/"><span class="caps">PNG</span>-24-Bildformat</a> (Nicolai Schwarz), <a href="http://www.webkrauts.de/2007/12/14/oops-wo-bin-ich-ein-herz-fuer-tastaturnutzer/">Hover-Beispiel für eindeutigen Fokus</a> (Tomas Caspers) und <a href="http://www.webkrauts.de/2007/12/13/mehrfacher-einsatz-von-hintergrundgrafiken/">Hintergrundbilder ohne Nachladen</a> (Stefan David).</p>   
]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-24">24. Türchen des Webkrauts-Adventskalenders</div>
<p>Bildtransparenzen bieten im Webdesign viele Einsatzmöglichkeiten. Monochrome <span class="caps">PNG</span>-Deko-Bilder &#034;verschmelzen&#034; beispielsweise über definierter <code>background-color</code> optisch mit den Hintergrundfarben von Webseiten: Ideal für verschiedene Website-Templates und in der Konzeptionierungsphase.<br />
Wird dem Bild ein Link zugewiesen, ergeben sich interessante Hover-Effekte. <a href="http://www.pookerart.de/png24">Hier ein grundsätzliches Beispiel</a> mit einer <span class="caps">PNG</span>-Datei und Änderung der Hintergrundfarbe.</p>
<p>Leider ist die Datenmenge bei <span class="caps">PNG</span> mit Alphakanal größer als bei <span class="caps">JPEG</span>- oder <span class="caps">GIF</span>-Bildern.  Weder der <span class="caps">IE5</span>, noch der <span class="caps">IE6</span> konnten <span class="caps">PNG</span>-24-Alphakanäle anzeigen, mittlerweile gibt es aber <a href="http://homepage.ntlworld.com/bobosola/">geeignete Javascript-Lösungen</a>. Auch die <a href="http://grochtdreis.de/weblog/2007/11/14/png-hintergrund-fix/">dunklen <span class="caps">PNG</span>-Farben</a> lassen sich vermeiden.</p>
<h4>Ein Weihnachtsmotiv: Vorbereitung in Photoshop</h4>
<p><img id="image372" src="http://www.webkrauts.de/wp-content/uploads/2007/12/komposit2.jpg" alt="Bild 1: Die Vorlage" /></p>
<p>Bild 1 zeigt die Vorlage für die spätere <span class="caps">PNG</span>-Datei (Bild 2). Zunächst wählen wir gezielt die gewünschten Bildbereiche aus. Eine bequeme Auswahlmöglichkeit mit Transparenzen bekommt man unter &#034;Auswahl &#8211; Farbbereich auswählen&#8230;&#034;. Mit der Pipette klickt man auf den dunkelsten Bereich und definiert die Toleranz mit &#034;200&#034;.</p>
<p><img id="image373" src="http://www.webkrauts.de/wp-content/uploads/2007/12/farbbereich1.jpg" alt="Farbbereich 1" /></p>
<p>Mit &#034;Befehlstaste-C&#034; und anschließendem &#034;Befehlstaste-V&#034; erhalten wir ein neue Ebene mit dunklen Farbbereichen. Wir wählen zusätzlich eine helle Flächen aus, verkleinern die Toleranz auf &#034;80&#034; und generieren eine neue Ebene mit hellen Farbbereichen.</p>
<p><img id="image374" src="http://www.webkrauts.de/wp-content/uploads/2007/12/farbbereich2.jpg" alt="Farbbereich 2" /></p>
<p>Zuletzt folgt die Lichthöhe, mit einem Auswahlrechteck eingegrenzt und einer Toleranz von &#034;200&#034;. Die Ebenen auf transparentem Hintergrund werden nun über &#034;Für Web speichern&#8230;&#034; als einzelne <span class="caps">PNG</span>-24-Datei (Transparenz) im Web-Ordner abgelegt.</p>
<h4>Transparenzeffekte mit <span class="caps">CSS</span></h4>
<p>Effekte werden per <span class="caps">CSS</span> als MouseOver-Aktion mit der Pseudoklasse <code>:hover</code> definiert. Dass und wie man in der Praxis solche Effekte auch für Tastaturbenutzer mittels <code>:focus</code> und <code>:active</code> zugänglich macht, zeigt der <a href="http://www.webkrauts.de/2007/12/14/oops-wo-bin-ich-ein-herz-fuer-tastaturnutzer/">Beitrag von Tomas Caspers</a>.</p>
<h4>Beispiele</h4>
<p><a href="http://www.pookerart.de/adventskalender_png24">Drei Beispiele für Transparenzeffekte findet Ihr in unserem Testcase</a>. Dort liegen auch die verwendeten Bilddateien zum Download bereit.</p>
<h4>Transparenzeffekt: <code>background-color</code></h4>
<p>Beispiel 1 zeigt den Effekt über eine Änderung der Hintergrundfarbe beim Hovern. Die halbtransparenten roten Bereiche der Christbaumkugel erscheinen vor dem gelben Hintergrund orangefarben.</p>
<h4>Transparenzeffekt: <code>background-image</code></h4>
<p>Beispiel 2 verwendet ein Hintergrundbild in der gleichen Größe wie die <span class="caps">PNG</span>-Datei. Per <code>background-position: 0 -200px;</code> zunächst versteckt, erscheint das Hintergrundbild beim Hovern mit <code>background-position: 0 0;</code> hinter der <span class="caps">PNG</span>-Datei. Der unruhige, türkisfarbene &#034;Fleck&#034; wirkt durch die <span class="caps">PNG</span>-Transparenz hindurch.</p>
<h4>Transparenzeffekt: <code>background-position</code> und <code>background-repeat</code></h4>
<p>In Beispiel 3 wird der obere Teil der Hintergrundgrafik (<code>background-repeat: repeat-x</code>) versteckt und erst beim Hovern mit <code>background-position: 0 -120px;</code> am unteren Bildende gezeigt. Zusätzlich wurde dem <span class="caps">PNG</span> eine Klasse mit 2-Pixel-Rand zugewiesen, der in modernen Browsern beim Hovern eine andere <code>border-color</code> zeigt.</p>
<h4>Zum Autor</h4>
<p><img id="image299" src="http://www.webkrauts.de/wp-content/uploads/2007/11/nils_pooker.jpg" alt="Autorenfoto: Nils Pooker" class="bild-links" />Nils Pooker war im Kunstbereich tätig und arbeitet als selbständiger Webdesigner in Preetz (Schleswig-Holstein). Außerhalb des Webdesigns beschäftigt er sich mit Theorien zu Wahrnehmung und Kommunikation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/24/transparenzeffekte-mit-png-24-und-css/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Vergesst uns nicht: Doppelpunkt und Semikolon</title>
		<link>http://www.webkrauts.de/2007/12/23/vergesst-uns-nicht-doppelpunkt-und-semikolon/</link>
		<comments>http://www.webkrauts.de/2007/12/23/vergesst-uns-nicht-doppelpunkt-und-semikolon/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 23:01:54 +0000</pubDate>
		<dc:creator>Nicolai Schwarz</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/23/vergesst-uns-nicht-doppelpunkt-und-semikolon/</guid>
		<description><![CDATA[<div class="adv07 adv07-23">23. Türchen des Webkrauts-Adventskalenders</div>

Punkt, Komma, Ausrufe- und Fragezeichen. Ab und zu mal der ein oder andere Gedankenstrich. Fertig ist der Text in den meisten Fällen. Dabei bietet die deutsche Sprache auch Doppelpunkt und Semikolon an. Nicolai Schwarz plädiert heute dafür, diese beiden Zeichen nicht in Vergessenheit geraten zu lassen.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-23">23. Türchen des Webkrauts-Adventskalenders</div>
<p>Sicher, Sprache lebt, Sprache entwickelt sich. Im Laufe der Jahrhunderte gehen einige Worte zum Beispiel schlichtweg unter; wer weiß etwa, dass das Wort &raquo;Poetenkasten&laquo; den Hinterteil des Kopfes meinte oder &raquo;doppelherzig&laquo; durch das einfachere &raquo;falsch&laquo; verdrängt wurde. Auf der anderen Seiten entstehen ständig neue Worte, sei es nun &raquo;googeln&laquo; oder <a href="http://de.wikipedia.org/wiki/Sitt">&raquo;sitt&laquo;</a>.</p>
<p>Vielleicht gilt die begrenzte Lebenszeit von Worten auch für Satzzeichen. Vielleicht sterben auch Satzzeichen irgendwann aus? Punkt, Komma und Gedankenstrich sind aktuell nicht gefährdet, aber ich nehme immer weniger Doppelpunkte und vor allem Semikolons&nbsp;&ndash; zu neudeutsch: Strichpunkt&nbsp;&ndash; wahr. Dabei finde ich es immer schade, sich in seinen Möglichkeiten zu beschränken. Unterbewusst benutzt ein Mensch ohnehin schon ziemlich wenig Worte, warum sollte ich mich auch bewusst um einige Satzzeichen bringen? </p>
<p>Möglicherweise leiden beide Satzzeichen nur unter allzu vorsichtigen Schreibern? Nach dem Motto: Lieber Punkt oder Komma benutzen, bevor man sich mit Semikolon oder Doppelpunkt auf unsicheres Terrain begibt. Dabei sind die offiziellen Regeln, die der Duden hergibt, nicht so kompliziert wie einige Kommaregeln.</p>
<h4>Der Doppelpunkt</h4>
<p>Laut Duden steht der Doppelpunkt vor:</p>
<ul>
<li>angekündigten wörtlich wiedergegebenen Äußerungen, Gedanken oder Texten;</li>
<li>angekündigten Aufzählungen, Angaben, Erläuterungen, Titel usw.;</li>
<li>Sätzen, die das Gesagte zusammenfassen oder eine Schlussfolgerung daraus ziehen.</li>
</ul>
<p>Der Doppelpunkt ist noch einfach zu handhaben. Vor wörtlicher Rede setzt ihn noch ziemlich jeder. Vor Angaben und Aufzählungen sehe ich ihn immer seltener. In der Aufzählung oben habe ich ihn auch nur gesetzt, weil es möglich ist, nicht weil ich musste. Vor Schlussfolgerungen ist er jedoch so gut wie nie zu sehen.</p>
<h4>Das Semikolon</h4>
<p>Das Semikolon kann&nbsp;&ndash; ebenso im Duden nachzulesen&nbsp;&ndash; zwischen gleichrangigen Sätzen oder Wortgruppen stehen, wo der Punkt zu stark, das Komma zu schwach trennen würde. Es kann auch verwendet werden, um zusammengehörige Gruppen in Aufzählungen zu markieren.</p>
<p>Das Semikolon ist recht frei einzusetzen; wer kommt schon auf die Idee, groß zu diskutieren, ob zwei Sätze eher durch Komma, Semikolon oder Punkt getrennt werden müssen? Der Autor wird schon wissen, wie stark oder schwach er zwei Wortgruppen trennen will.</p>
<h4>Wider das Vergessen</h4>
<p>Und selbst, wenn man ein Satzzeichen falsch genutzt wird. Was soll’s? Immer noch besser, als ganz darauf zu verzichten, meine ich.</p>
<p>Für alle, die sich ab und zu einen Text aus den Ärmeln schütteln müssen oder sich in ihrem eigenen kleinen Blog austoben, mag sich der Newsletter des Duden lohnen. Dort steht dann ab und zu auch was über <a href="http://www.duden.de/deutsche_sprache/newsletter/archiv.php?begriff=doppelpunkt&#038;id=98">Doppelpunkte</a> oder <a href="http://www.duden.de/deutsche_sprache/newsletter/archiv.php?begriff=semikolon&#038;id=115">Semikolons</a>.</p>
<h5>Zum Autor:</h5>
<p><img id="image125" src="http://www.webkrauts.de/wp-content/uploads/2006/11/nicolai_schwarz_60x60.jpg" alt="Autorenfoto: Nicolai Schwarz" class="bild-links" />Nicolai Schwarz arbeitet als selbstständiger Allrounder in Dortmund. Dort bastelt er hauptsächlich an Logos, Webseiten und Flash-Spielen für kleine Unternehmen. Dank journalistischer Erfahrungen textet er auch ab und zu, sei es für sein <a href="http://www.textformer.de/weblog.php">launiges Blog</a> oder für Kunden. Er wartet gespannt auf den Tag, an dem es die Worte &raquo;irgentwie&laquo; und &raquo;ebend&laquo; in den Duden schaffen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/23/vergesst-uns-nicht-doppelpunkt-und-semikolon/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Wireframes</title>
		<link>http://www.webkrauts.de/2007/12/22/wireframes/</link>
		<comments>http://www.webkrauts.de/2007/12/22/wireframes/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 23:01:16 +0000</pubDate>
		<dc:creator>René Grassegger</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Modell]]></category>
		<category><![CDATA[Wireframes]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/22/wireframes/</guid>
		<description><![CDATA[<div class="adv07 adv07-22">22. Türchen des Webkrauts-Adventskalenders</div>

Hinter dem heutigen Adventskalendertürchen verbergen sich Wireframes. René Grassegger erklärt wie man diese nützlichen Vorabentwürfe sinnvoll nutzt.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-22">22. Türchen des Webkrauts-Adventskalenders</div>
<p>Ein Wireframe ist eine schematische Darstellung einer Webseite. Der Wireframe (dt.: „Gittermodell“) dient zur Veranschaulichung und Planung von Elementen, die auf einer Webseite vorhanden sein sollen. Es werden die grundlegenden Elemente einer Seite dargestellt, dies hat mit dem Design der Webseite zunächst einmal nichts zu tun. Folgende Abbildung zeigt wie ein Wireframe aussehen kann:</p>
<p class="bild-block"><img id="image360" src="http://www.webkrauts.de/wp-content/uploads/2007/12/wireframe1.gif" alt="Wireframe-Beispiel 1" /></p>
<p>Das ist ein Wireframe, der die Position der Grundelemente der Webseite anzeigt. Ist man mit der Platzierung und der Größe der einzelnen Bereiche zufrieden, dann kann man im nächsten Schritt den Wireframe schrittweise verfeinern und Stück für Stück alle benötigten Elemente platzieren. Durch die verschiedenen Graustufen der einzelnen Bereiche können Elemente hervorgehoben werden und die gewünschte Wahrnehmungsreihenfolge auch schon im Wireframing manipuliert werden.</p>
<p class="bild-block"><img id="image361" src="http://www.webkrauts.de/wp-content/uploads/2007/12/wireframe2.gif" alt="Wireframe-Beispiel 2" /></p>
<h4>Vorteile von Wireframes</h4>
<h5>Zeitersparnis</h5>
<p>Die Entwicklung eines Wireframes benötigt nur den Bruchteil der Zeit im Vergleich zu einem traditionellem Layout/Design. Man kann mehr Schritte order Layoutszenarien durchplanen in der gleichen Zeit. Es können auch mehr Layoutvorschläge ausprobiert werden. </p>
<p>Die Umsetzung eines fertigen Wireframes zu einem Layout benötigt viel weniger Zeit, da die Positionierung, Größe und Form vieler Elemente schon bestimmt wurde. Auch hier wird die Effektivität erhöht und die Falschplanung vermindert. </p>
<h5>Bessere Kommunikation mit dem Kunden</h5>
<p>Durch die kurzen Entwicklungszyklen kann der Kunde mehr in die Entwicklung eingebunden werden und fühlt ist daher auch stärker mit dem Projekt verbunden. Es kann schneller und einfacher auf die Bedürfnisse oder Wünsche des Kunden reagiert werden. Zeitraubende Fehlentwicklungen können so reduziert werden.</p>
<p>Auch direkt in Meetings mit den Projektbeteiligten und Kunden können so schnell Veränderungen vorgenommen werden. </p>
<h5>Fehlplanungen</h5>
<p>Da man sich jede Entwicklungsstufe vom Kunden absegnen lassen kann wird die Gefahr einer Entwicklung in eine falsche Richtung reduziert. Ist eine Entwicklungstufe des Wireframes abgenommen, kann mit einer detailierten Version begonnen werden. </p>
<p>Behauptet der Kunden das Layout nicht so beauftragt zu haben, kann er auf abgenommene Stufen der Wireframe Entwicklung verwiesen werden. </p>
<h4>Nachteile von Wireframes</h4>
<p>Wenn man sich nur auf Wireframes verlässt, kann man schnell wieder in ein reines „Kästchen-denken“ zurückfallen, weil man ja meist mit rechteckigen Formen arbeitet. Abhilfe könnte hier das Vorskizzieren von Erstentwürfen vor dem eigentlichen Einsatz von Wireframes helfen.</p>
<p>Auch kann der Kunde sich verzetteln und so die Entwicklung künstlich aufhalten. Dieses Argument wird aber dadurch entkräftet, da dies auch bei klassichen Design-Layouts passieren kann (deren Entwicklung meist ungleich länger dauert).</p>
<h4>Fazit</h4>
<p>Ich verstehe gar nicht wie wir ohne Wireframing auskommen konnte. Bei vielen Projekten wurde die Qualität der Website deutlich gesteigert, wenn wir Wireframing benutzt haben. Bei einem Projekt, wo keine Zeit für Wireframes verwendet werden konnte, hatten wir im Nachhinein mit erheblichem Mehraufwand zu kämpfen. Zuviel Zeit ging mit unzähligen Designprototypen verloren, weil uns die Wireframes fehlten.</p>
<h5>Zum Autor</h5>
<p><img id="image339" src="http://www.webkrauts.de/wp-content/uploads/2007/12/rene_grasegger.jpg" alt="Autorenfoto: René Grasegger" />René Grassegger arbeitet seit 2000 als Webdesigner. Zur Zeit plant, designt und erstellt er Typo3 gestützte Webseiten für Unternehmen. Sein Credo ist: Webdesign aus Leidenschaft!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/22/wireframes/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Flash mit FlashReplace einbinden</title>
		<link>http://www.webkrauts.de/2007/12/21/flash-mit-flashreplace-einbinden/</link>
		<comments>http://www.webkrauts.de/2007/12/21/flash-mit-flashreplace-einbinden/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 23:01:24 +0000</pubDate>
		<dc:creator>Jens Grochtdreis</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/21/flash-mit-flashreplace-einbinden/</guid>
		<description><![CDATA[<div class="adv07 adv07-21">21. Türchen des Webkrauts-Adventskalenders</div>

Möchte man die Unannehmlichkeiten einer traditionellen Flasheinbindung im Internet Explorer umgehen, muss man auf Javascript zurückgreifen. Flashreplace ist dafür die wohl schmalste Variante. Jens Grochtdreis stellt das 2k-kleine Javscript vor.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-21">21. Türchen des Webkrauts-Adventskalenders</div>
<p>Bei der Einbindung von Flash gibt es ein paar Feinheiten und Stolpersteine, über die man Bescheid wissen sollte. Der normale, <a href="http://dciwam.de/faq/html/flash-einbinden">traditionelle Weg der Flasheinbindung</a> ist eine Kombination der Elemente <code>OBJECT</code>, <code>EMBED</code> und <code>PARAM</code>. Der IE benötigt im <code>OBJECT</code>-Element Attribute, die eine Interpretation durch Mozilla unmöglich machen. Deshalb nutzt Mozilla das Element <code>EMBED</code>, das nicht Teil der <span class="caps">W3C</span>-Standards ist</p>
<h4>Ansätze zur Einbindung via Javascript</h4>
<p>Die normale Flasheinbindung ist also in der Gesamtschau invalide. Zudem benötigen wir auf alle Fälle ein Javascript, um <a href="http://www.heise.de/newsticker/meldung/66936">das <span class="caps">EOLAS</span>-Problem</a> im IE zu umgehen. Es handelt sich hierbei um ein Patent, das Microsofts Flasheinbindung als ActiveX-Objekt betrifft. Ohne den Javascript-Trick muss man erst ein Flashelement durch einen Klick &#034;aktivieren&#034; und kann erst dann einem darin enthaltenen Link folgen. Da man also auf Javascipt bei einem Großteil der Betrachter angewiesen ist lag es nahe, auch die Einbettung via Javascript vorzunehmen. Es gibt hierfür ein paar Ansätze, die alle dem Paradigma des <a href="http://ichwill.net">&#034;unobtrusive Javascript&#034;</a> folgen. Die bekanntesten Ansätze sind <a href="http://www.powerflasher.de/sites/blog/swfobject/">SWFObject</a> und <a href="http://www.bobbyvandersluis.com/ufo/">UFO</a> &#8211; für jQuery gibt es ein Plugin.</p>
<h4>Die kompakte Alternative: FlashReplace</h4>
<p>Robert Nyman hat mit <a href="http://www.robertnyman.com/2007/04/19/flashreplace-a-light-weight-javascript-to-insert-flash-movies-into-your-web-page/">FlashReplace</a> einen sehr kompakten Ansatz als Alternative veröffentlicht. Das Skript hat 2 KB und ist sehr einfach zu nutzen.</p>
<p>Man erstellt erst den alternativen Inhalt &#8211; meist ein Ersatzbild, seltener einen Ersatztext &#8211; für den Fall, daß kein Flash-Plugin oder eine alte Version installiert ist. Danach wird dieser alternative Inhalt via <a href="http://www.webkrauts.de/2006/12/02/was-ist-dom-scripting/">DOMScripting</a> ersetzt. Dafür muss man FlashReplace entweder innerhalb einer <a href="http://dean.edwards.name/weblog/2006/06/again/">window.load</a>-Lösung aufrufen oder aber das Javascript nach dem alternativen Inhalt einbinden.</p>
<p>Der Aufruf kann folgendermaßen aussehen:</p>
<pre><code>
&lt;p id="ersetzmich"&gt;&lt;img src="keinflash.gif" alt="" /&gt;&lt;/p&gt;
&lt;script type="text/javascript"&gt;
    FlashReplace.replace("ersetzmich", "flashtest_v5.swf",
                                 "flash-id1", 100, 100, 5);
&lt;/script&gt;
</code></pre>
<p>Im Funktionsaufruf wird zuerst die ID des zu ersetzenden Containers angegeben. Es muss sich hierbei tatsächlich um eine ID handeln, es kann keine Klasse sein. Es folgen Adresse und Name des Flashfiles und die ID, die der später entstehende Flash-Container haben soll. Danach werden Breite und Höhe sowie die Flash-Version angegeben. Ein Verzicht auf die Versionsangabe aktiviert die Default-Einstellung: Version 7.<br />Sollten dem Flashfilm ein paar Parameter mitgegeben werden müssen, beispiesweise mode=&#034;transparent&#034; oder eine Variable, dann fügt man diese optionalem Parameter in geschweiften Klammern nach der Versionsangabe ein.</p>
<pre><code>
FlashReplace.replace("ersetzmich2", "flashtest_v5.swf",
"flash-id2", 100, 100, 5, {wmode: "opaque"});
</code></pre>
<p>Der Teufel kann bei der Anwendung eines solchen Skriptes allerdings im Detail stecken. Man muss darauf achten, daß beim Aufruf des Javascriptes das <span class="caps">DOM</span> schon geladen ist. Deshalb sollte man den Aufruf am besten wie oben gezeigt nach dem zu ersetzenden Container platzieren. Möchte man das Skript hingegen auslagern oder im Head platzieren, so sollte eine der zahlreichen <a href="http://dean.edwards.name/weblog/2006/06/again/">window.onload-Lösungen</a> genutzt werden.</p>
<p>Update aus aktuellem Anlass: <a href="http://www.heise.de/netze/news/meldung/98717/from/rss09">Microsoft hat sich mit dem Patentinhaber geeinigt</a> und angeündigt, daß der IE demnächst keine Aktivierung von Flashinhalten mehr benötigen wird. Das wird allerdings voraussichtlich <a href="http://grochtdreis.de/weblog/2007/11/15/bye-bye-eolas-problem/">erst ab April 2008</a> eintreten. Es steht zu vermuten, daß auch nur der <span class="caps">IE7</span> und folgende Versionen betroffen sein werden.</p>
<h5>Zum Autor</h5>
<p><img id="image97" src="http://www.webkrauts.de/wp-content/uploads/2006/11/jens_grochtdreis_60x60.jpg" alt="Jens Grochtdreis" class="bild-links" />Jens Grochtdreis arbeitet als &#034;Senior Frontend Developer&#034; bei <a href="http://netz98.de">netz98</a> in Mainz. Neben seinem <a href="http://grochtdreis.de/weblog">Weblog</a> betreut er auch die <a href="http://css-faq.de">CSS-FAQ</a> und setzt sich mit den Webkrauts für moderne, standardkonforme Webseiten ein.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/21/flash-mit-flashreplace-einbinden/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mit Webstandards Zeit und Geld sparen</title>
		<link>http://www.webkrauts.de/2007/12/20/mit-webstandards-zeit-und-geld-sparen/</link>
		<comments>http://www.webkrauts.de/2007/12/20/mit-webstandards-zeit-und-geld-sparen/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 23:01:00 +0000</pubDate>
		<dc:creator>Nils Pooker</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/20/mit-webstandards-zeit-und-geld-sparen/</guid>
		<description><![CDATA[<div class="adv07 adv07-20">20. Türchen des Webkrauts-Adventskalenders</div>

Immer noch Standard: zu wenig Webstandards. Dennoch ärgern sich Webdesigner über unbezahlte Arbeit in ihrer Freizeit. Nils Pooker beleuchtet die finanziellen Vorteile von Webstandards, die den Webdesigner zeitlich entlasten und dem Kunden bares Geld einsparen.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-20">20. Türchen des Webkrauts-Adventskalenders</div>
<p>Beim Thema Kostenersparnis durch Webstandards wird von Standardistas meistens das Argument des schlanken Quellcodes vorgebracht, der zu geringeren Provider- und Traffic-Kosten führt. Das trifft zwar für umfangreiche und stark frequentierte Sites zu, das Argument greift dennoch zu kurz. Die tatsächliche Kostenersparnis macht sich vielmehr durch den erheblich reduzierten Abeitsaufwand bemerkbar, unabhängig vom Umfang einer Webseite.</p>
<p>Eine mit Frames, Tabellenlayouts und Font-Tags verseuchte Webseite erscheint kostentechnisch nur im Moment der Online-Stellung ohne erkennbare Nachteile. In allen Projektphasen davor und in den Änderungsphasen danach verursacht eine semantisch strukturierte, nach geltenden Webstandards erstellte Webseite weniger Aufwand und Kosten.</p>
<p>Auch im Webdesign gilt: Zeit ist Geld. Es ist die Summe gesparter Minuten, Stunden und Tage, die sich nicht nur während des Projekt-Workflows positiv auf die Kosten auswirkt. Die gesamte Lebensdauer einer Website ist ständigen Designveränderungen, Erweiterungen und Anpassungen unterworfen.</p>
<h4>Freiheit, Kontrolle, Transparenz</h4>
<p>Das wichtigste Kostenargument für semantischen Webseiten ist die strikte Trennung der Präsentation von den eigentlichen Inhalten der (X)HTML-Seiten. Diese Trennung bringt dem Webdesigner drei wichtige Vorteile:</p>
<ol>
<li>Freiheit zur Gestaltung von Inhalt und Form</li>
<li>Kontrolle über den gesamten Workflow</li>
<li>Transparenz des Quellcodes</li>
</ol>
<h4>Vorteile in der Planungsphase</h4>
<p>Der Webdesigner hat die Freiheit, zuerst die (X)HTML-Seiten nach den Anforderungen der Inhalte zu codieren, er kann sogar sämtliche Einzelseiten fertig stellen, ohne sich Gedanken über die Präsentation zu machen. <span class="caps">CSS</span>-Layouts ermöglichen sogar die Planung eines Projektes auf der Grundlage eines fertigen Designs.</p>
<h4>Vorteile in der Konzeptionierungs- und Umsetzungsphase</h4>
<p>Nur selten wird ein Website-Projekt vom Kunden von der Planung bis zur Umsetzung durchgewunken. Ergänzung von Elementen oder die Modifizierung einiger Attribute in der <span class="caps">CSS</span>-Datei sind oft in Minuten erledigt.<br />
<span class="caps">HTML</span>-Prototyping und/oder <span class="caps">CSS</span>-Frameworks ermöglichen einen ökonomischen Workflow, selbst wenn der Kunde kurz vor dem Launch gestaltungsspezifische Änderungswünsche formuliert. Der Webdesigner verliert weder kostbare Zeit, noch die Kontrolle über das Projekt.</p>
<h4>Vorteile in der Website-Pflege</h4>
<p>Unschlagbar sind Webstandards in der Praxis von Aktualisierungen und Relaunches. Nicht alles kann schnell und problemlos geändert oder ergänzt werden, der Webdesigner kann sich aber auf die Inhalte konzentrieren. Die Transparenz des Quellcodes garantiert auch bei seltenen Aktualisierungen ein schnelles Einarbeiten in den Aufbau der Webseite.</p>
<p>Die korrekte Einhaltung der Webstandards ermöglicht mit überschaubarem Aufwand sogar die seitenübergreifende Ergänzung von IDs und Klassen, selbst ein komplettes Layout auf der Basis von <code>float</code>-Umgebungen lässt sich über die <span class="caps">CSS</span>-Datei verändern. Die Modifizierung des Designs ohne Änderung der Inhalte lässt sich sogar in wenigen Tagen realisieren. Zeit- und kostensparende Vorteile, die nicht einmal bei einem rudimentären Tabellenlayout vorhanden sind.</p>
<h5>Zum Autor</h5>
<p><img id="image299" src="http://www.webkrauts.de/wp-content/uploads/2007/11/nils_pooker.jpg" alt="Nils Pooker" class="bild-links" />Nils Pooker war im Kunstbereich tätig und arbeitet als selbständiger Webdesigner in Preetz (Schleswig-Holstein). Außerhalb des Webdesigns beschäftigt er sich mit Theorien zu Wahrnehmung und Kommunikation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/20/mit-webstandards-zeit-und-geld-sparen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Spammer in die Falle locken</title>
		<link>http://www.webkrauts.de/2007/12/19/spammer-in-die-falle-locken/</link>
		<comments>http://www.webkrauts.de/2007/12/19/spammer-in-die-falle-locken/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 23:01:45 +0000</pubDate>
		<dc:creator>Martin Ladstätter</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/19/spammer-in-die-falle-locken/</guid>
		<description><![CDATA[<div class="adv07 adv07-19">19. Türchen des Webkrauts-Adventskalenders</div>

Spam ist ein tägliches Ärgernis und viele Entwickler versuchen mit verschiedenen Methoden den Spammern ein Schnippchen zu schlagen. Heute stellt Martin Ladstätter einen Honigtopf auf.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-19">19. Türchen des Webkrauts-Adventskalenders</div>
<p><span xml:lang="en" lang="en">Spam</span> nervt und es ist schwer, wirksame Maßnahmen gegen ihn zu ergreifen. Oft entstehen durch solche Maßnahmen neue Barrieren, wie beim Einsatz von <span xml:lang="en" lang="en">Captchas</span>. Doch man kann auch Techniken zur Erhöhung der Barrierefreiheit einsetzen, um <span xml:lang="en" lang="en">Spammern</span> das Geschäft schwerer zu machen. Die Lösung lautet: Man biete ein unnötiges Eingabefeld zum Ausfüllen an.</p>
<p>Bei der Bekämpfung von <span xml:lang="en" lang="en">Spam</span> denken viele Betreiber einer Webseite leider an <a href="http://de.wikipedia.org/wiki/Captcha" xml:lang="en" lang="en">Captchas</a>. Doch dieser Weg ist ein trügerischer. <span xml:lang="en" lang="en">Captchas</span> nerven, werden immer unleserlicher, sind nicht barrierefrei zugänglich und außerdem von den <span xml:lang="en" lang="en">Computern</span> schon besser erfassbar als von Menschen. </p>
<p>Der hier skizzierte Lösungsansatz wird mittlerweile schon von einigen Betreibern von Webseiten seit Monaten erfolgreich eingesetzt und ist eine Kombination aus Techniken zur Erhöhung der Barrierefreiheit mit der Idee eines <a href="http://de.wikipedia.org/wiki/Honeypot" xml:lang="en" lang="en">Honeypot</a>.</p>
<h4>Unnötiges Eingabefeld hinzufügen</h4>
<p>Als ersten Schritt fügt man ein &#034;unnötiges Eingabefeld&#034; ein und beschriftet es:<br />
<code><br />
&lt;span class="invisible"><br />
&lt;label for="honig">Bitte in dieses Feld nichts eintragen, sonst wird der Forumseintrag nicht gespeichert:&lt;/label><br />
&lt;input id="honig" type="text" name="honig"/><br />
&lt;/span><br />
</code></p>
<h4>Eingabefeld per CSS &#034;verstecken&#034;</h4>
<p>Mit der selben Technik, mit der man Sprungmarken für Screenreader nutzbar macht und für sehende Benutzer optisch versteckt, zeichnet man nun in der CSS-Datei das Eingabefeld aus.</p>
<p> <code>.invisible { position:absolute; left:-1000px; top:-1000px; width:1px; height: 1px; overflow:hidden; display:inline;}</code></p>
<h4>Eingabe überprüfen</h4>
<p>Bei der anschließenden Überprüfung der Formulardaten durch eine Skriptsprache (z.B. PHP), muss nur überprüft werden ob das Feld &#034;honig&#034; leer ist. Falls es leer ist akzeptiert man die Eingabe, anderenfalls verwirft man sie. </p>
<h4>Bisher erfolgreich</h4>
<p>Auch wenn im Kampf gegen <span xml:lang="en" lang="en">Spammer</span> nie klar ist, wie lange eine Abwehrtechnik effizient funktioniert. Bei dieser Technik wird eine Schwäche von <span xml:lang="en" lang="en">Spammern</span> ausgenutzt: Sie wollen alles ausfüllen. Denn <span xml:lang="en" lang="en">Spammer</span> arbeiten mit automatisierten Programmen, die jedes Eingabefeld ausfüllen, das ihnen in die Quere kommt. Ein solches Programm würde das Formularfeld ausfüllen, ein Sehender würde das Feld nicht sehen. Ein <span xml:lang="en" lang="en">Screenreader</span> hingegen würde eine Warnung vorlesen, das folgende Feld nicht auszufüllen.</p>
<h4>Zum Autor</h4>
<p><img id="image353" src="http://www.webkrauts.de/wp-content/uploads/2007/12/ladstaetter_martin.jpg" alt="Martin Ladstätter" />Martin Ladstätter ist leidenschaftlicher Redakteur bei <a href="http://www.bizeps.or.at">BIZEPS-INFO</a> im Behindertenberatungszentrum in Wien, beschäftigt sich seit vielen Jahren mit dem Thema barrierefreies Internet und ist daher auch in der österreichischen Plattform &#034;<a href="http://www.accessible-media.at">accessible media &#8211; Zugang für alle</a>&#034; tätig.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/19/spammer-in-die-falle-locken/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Große JavaScript Applikationen leicht gemacht</title>
		<link>http://www.webkrauts.de/2007/12/18/grosse-javascript-applikationen-leicht-gemacht/</link>
		<comments>http://www.webkrauts.de/2007/12/18/grosse-javascript-applikationen-leicht-gemacht/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 23:01:10 +0000</pubDate>
		<dc:creator>Christian Heilmann</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/18/grosse-javascript-applikationen-leicht-gemacht/</guid>
		<description><![CDATA[<div class="adv07 adv07-18">18. Türchen des Webkrauts-Adventskalenders</div>

Unser heutiger Beitrag ist eine Kooperation mit den Kollegen von 24ways.org. Christian Heilmann erklärt hier und dort, wie man große JavaScript-Applikationen am Geschicktesten vorbereitet und umsetzt.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-18">18. Türchen des Webkrauts-Adventskalenders</div>
<p>Heutzutage verwenden wir JavaScript ziemlich anders als fr&uuml;her. Mit dem Aufkommen von Ajax und dem Hype um Web-Applikationen und Social Networks werden unsere JavaScripte immer größer und komplizierter. Da ist es nicht leicht, den &Uuml;berblick zu behalten. Das wird vor allem problematisch wenn man die Applikation in einem einzigen, gro&szlig;en JavaScript erstellt. Pers&ouml;nlich bin ich sehr daf&uuml;r, Applikationen in kleine, logische Bausteine aufzuteilen und diese dann mit der richtigen Logik bei Bedarf zusammenzusetzen. Das erlaubt das parallele Arbeiten mehrerer Entwickler am gleichen Projekt und f&uuml;hrt ausserdem zu kleineren Applikationen, da Module per Bedarf nachgeladen werden. Hier erkl&auml;re ich die ersten Schritte, wie man eine solche Applikation erstellen kann.</p>
<h4>Am Anfang steht das Hauptobjekt</h4>
<p>Am allerwichtigsten ist es, den JavaScript Code durch „Namespacing“ vor dem &Uuml;berschreiben durch andere Skripte zu bewahren. Das geht am einfachsten indem man den gesammten Code in einem globalen Objekt speichert, zum Beispiel <code>meineTolleApplikation</code>:</p>
<pre><code>var meineTolleApplikation = {};</code></pre>
<p>Alle Komponenten der Applikation werden Attribute dieses Objektes und man kann auch gleich von Anfang an testen ob DOM Scripting unterst&uuml;tzt wird oder Sprachdateien laden und so weiter.</p>
<h4>Die Definition der Komponenten</h4>
<p>Der n&auml;chste Schritt ist dem Hauptobjekt ein Komponentenobjekt hinzuzuf&uuml;gen. Darin definiert man die einzelnen Komponenten mit Namen, URL und einem Boolean der angibt ob die Komponente geladen ist oder nicht.</p>
<pre><code>var meineTolleApplikation = {
    komponenten :{
        formular:{
            url:'formular.js',
            geladen:false
        },
        navigation:{
            url:'navigation.js',
            geladen:false
        },
        attachment:{
            url:'attachment.js',
            geladen:false
        },
        lightbox:{
            url:'lightbox.js',
            geladen:false
        }
    }
};</code></pre>
<p>Technisch gesehen kann man das &#034;geladen&#034; Attribut auch weglassen, aber so ist es sauberer. Als n&auml;chsten Schritt ist es sinnvoll eine <code>neueKomponente</code> Methode anzuf&uuml;gen, die es erlaubt, dynamisch Komponenten zur Applikation hinzuzuf&uuml;gen. Das wird am einfachsten dadurch erreicht, indem man neue SCRIPT Elemente dem Dokumentenkopf hinzuf&uuml;gt.</p>
<pre><code>var meineTolleApplikation = {
    komponenten :{
        formular:{
            url:'formular.js',
            geladen:false
        },
        navigation:{
            url:'navigation.js',
            geladen:false
        },
        attachment:{
            url:'galerie.js',
            geladen:false
        },
        lightbox:{
            url:'lightbox.js',
            geladen:false
        }
    },
    neueKomponente:function(komponente){
        var c = this.komponenten[komponente];
        if(c &#038;&#038; c.geladen === false){
            var s = document.createElement('script');
            s.setAttribute('type', 'text/javascript');
            s.setAttribute('src',c.url);
            document.getElementsByTagName('head')[0].appendChild(s);
        }
    }
};</code></pre>
<p>Dadurch kann man neue Komponenten der Applikation hinzuf&uuml;gen wenn diese noch nicht geladen sind:</p>
<pre><code>if(!meineTolleApplikation.komponenten.galerie.geladen){
    meineTolleApplikation.neueKomponente('galerie');
};</code></pre>
<h4>Sind die Komponenten wirklich geladen?</h4>
<p>Das ist allerdings nicht wirklich sicher, da wir nicht wissen ob die Skripte wirklich geladen wurden. Um das einwandfrei sicherzustellen ist das einfachste, jeder Komponente eine Zeile hinzuzuf&uuml;gen, die dem Hauptobjekt meldet, das sie geladen ist:</p>
<pre><code>var meineTolleApplikation = {
    komponenten :{
        formular:{
            url:'formular.js',
            geladen:false
        },
        navigation:{
            url:'navigation.js',
            geladen:false
        },
        galerie:{
            url:'galerie.js',
            geladen:false
        },
        lightbox:{
            url:'lightbox.js',
            geladen:false
        }
    },
    neueKomponente:function(komponente){
        var c = this.komponenten[komponente];
        if(c &#038;&#038; c.geladen === false){
            var s = document.createElement('script');
            s.setAttribute('type', 'text/javascript');
            s.setAttribute('src',c.url);
            document.getElementsByTagName('head')[0].appendChild(s);
        }
    },
    komponenteVerfuegbar:function(komponente){
        this.komponenten[komponente].geladen = true;
    }
}</code></pre>
<p>Zum Beispiel sollte das galerie.js Skript sich als letzte Zeile beim Hauptobjekt anmelden:</p>
<pre><code>meineTolleApplikation.galerie = function(){
    // [... other code ...]
}();

meineTolleApplikation.komponenteVerfuegbar('galerie');</code></pre>
<h4>Und wie teilen wir es den Anwendern mit das eine Komponente vorhanden ist?</h4>
<p>Der letze Schritt ist eigentlich nur eine nette Ma&szlig;nahme gegen&uuml;ber den Entwicklern der Applikation. Wir f&uuml;gen den Aufruf einer &#034;lauscher&#034; Methode hinzu, die den Namen einer jeden Komponente erh&auml;lt, die geladen wurde:</p>
<pre><code>var meineTolleApplikation = {
    komponenten :{
        formular:{
            url:'formular.js',
            geladen:false
        },
        navigation:{
            url:'navigation.js',
            geladen:false
        },
        galerie:{
            url:'galerie.js',
            geladen:false
        },
        lightbox:{
            url:'lightbox.js',
            geladen:false
        }
    },
    neueKomponente:function(komponente){
        var c = this.komponenten[komponente];
        if(c &#038;&#038; c.geladen === false){
            var s = document.createElement('script');
            s.setAttribute('type', 'text/javascript');
            s.setAttribute('src',c.url);
            document.getElementsByTagName('head')[0].appendChild(s);
        }
    },
    komponenteVerfuegbar:function(komponente){
        this.komponenten[komponente].geladen = true;
        if(this.lauscher){
            this.lauscher(komponente);
        };
    }
};</code></pre>
<p>Das erlaubt es Entwicklern die lauscher Methode zu schreiben, die darauf wartet das Komponenten geladen werden und dann auf diese reagiert:</p>
<pre><code>meineTolleApplikation.lauscher = function(komponente){
    if(komponente === 'galerie'){
       zeigegalerie();
    }
};</code></pre>
<h4>Eigene Komponenten hinzuf&uuml;gen</h4>
<p>Da das Hauptobjekt ver&auml;nderbar ist k&ouml;nnen  Entwickler das komponenten Objekt mit eigenen Komponenten erweitern und innerhalb einer lauscher Funktion andere abh&auml;ngige Komponenten nachladen. Sagen wir zum Beispiel wir haben eine neuekomponente mit Daten und Beschreibungen in eigenen Dateien:</p>
<pre><code>meineTolleApplikation.lauscher = function(komponente){
    if(komponente === 'neuekomponente'){
        meineTolleApplikation.neueKomponente('beschreibungen');
    };
    if(komponente === 'beschreibungen'){
        meineTolleApplikation.neueKomponente('daten');
    };
    if(komponente === 'daten'){
        meineTolleApplikation.neuekomponente.init();
    };
};
meineTolleApplikation.komponenten.neuekomponente = {
    url:'neue.js',
    geladen:false
};
meineTolleApplikation.komponenten.beschreibungen = {
    url:'beschreibungen.js',
    geladen:false
};
meineTolleApplikation.komponenten.daten = {
    url:'daten.js',
    geladen:false
};
meineTolleApplikation.neueKomponente('neuekomponente');</code></pre>
<p>Wenn man seine Applikation auf diese Art und Weise plant hat man totale Kontrolle &uuml;ber den Status der einzelnen Komponenten und kann sogar CSS bei Bedarf nachladen.</p>
<h4>Woher kommt diese Idee?</h4>
<p>Falls Sie diese Idee m&ouml;gen und sich fragen ob das auch schon mal in einer echten Applikation angewandt wurde m&ouml;chte ich auf die <a href="http://developer.yahoo.com/yui">Yahoo! User Interface Library</a> weisen, im Speziellen die <a href="http://developer.yahoo.com/yui/yahoo/">YAHOO_config Option und das globale YAHOO.js Objekt</a>.</p>
<h5>Anmerkung der Redaktion</h5>
<p><img id="image368" src="http://www.webkrauts.de/wp-content/uploads/2007/12/zz5f8167c1.png" alt="24 ways to impress your friends" class="bild-rechts" />Dieser Artikel ist die deutsche Übersetzung von <a href="http://24ways.org/2007/keeping-javascript-dependencies-at-bay ">Christians Beitrag</a> für die Seite <a href="http://24ways.org/">24ways</a>. Dieser Adventskalender bietet noch viele weitere interessante Beiträge, alle in englischer Sprache.</p>
<h5>Zum Autor:</h5>
<p><img id="image134" src="http://www.webkrauts.de/wp-content/uploads/2006/12/cheilmann.jpg" alt="Autorenfoto: Christian Heilmann" class="bild-links" />Christian Heilmann lebt seit 1999 im Ausland (USA, England, Indien) und arbeitet derzeit als lei(d|t)ender Entwickler bei Yahoo! in London, England. In seiner Freizeit bloggt er bei <a href="http://wait-till-i.com">wait-till-i.com</a> und schreibt Bücher für Apress und Friends Of Ed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/18/grosse-javascript-applikationen-leicht-gemacht/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Google-Funktionen im Überblick</title>
		<link>http://www.webkrauts.de/2007/12/17/google-funktionen-im-ueberblick/</link>
		<comments>http://www.webkrauts.de/2007/12/17/google-funktionen-im-ueberblick/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 23:00:42 +0000</pubDate>
		<dc:creator>Stefan David</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Suchfunktionen]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/17/google-funktionen-im-ueberblick/</guid>
		<description><![CDATA[<div class="adv07 adv07-17">17. Türchen des Webkrauts-Adventskalenders</div>

Fast jeder nutzt für seine tägliche Arbeit im Netz Google. Dass für die Suche aber einige intelligente Zusatz-Funktionen bereit stehen, weiß noch nicht jeder. Deshalb demonstriert Stefan David heute ein paar der Möglichkeiten, mit wenig Aufwand zu besseren Ergebnisse zu kommen. Auch Webworker dürften noch nicht alle Funktionen kennen.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-17">17. Türchen des Webkrauts-Adventskalenders</div>
<p>Die Suchmaschine <span lang="en" xml:lang="en">Google</span> ist im (Arbeits-)Leben der meisten Internetnutzer allgegenwärtig. Nicht jedem ist aber bekannt, dass die angebotenen Funktionen weit über das hinausgehen, was man im Normalfall nutzt. Manche der zusätzlichen Funktionen entdeckt man durch Zufall, andere blieben einem vermutlich für immer verborgen, könnte man sich nicht bei <span lang="en" xml:lang="en">Google</span> selbst (oder in diesem Artikel) darüber informieren.</p>
<h4>Intelligente Treffer</h4>
<p><span lang="en" xml:lang="en">Google</span> liefert auf Suchanfragen mittlerweile weit mehr als nur die <acronym title="Uniform Ressource Locator">URL</acronym>s von Internetseiten, die die gesuchten Begriffe enthalten. Die eingegebenen Suchbegriffe werden analysiert und <span lang="en" xml:lang="en">Google</span> bietet dem Nutzer je nach Zusammenhang oberhalb oder anstelle der Trefferliste noch Ergebnisse und/oder <span lang="en" xml:lang="en">Deeplinks</span> auf verschiedene populäre Seiten an. So liefert die Eingabe von <kbd>Hamburg München</kbd> z. B. den Link auf die Fahrplanauskunft der Bahn, natürlich genau mit dieser Verbindung.</p>
<p>Den Taschenrechner mal wieder unter dem Stapel der noch zu lesenden Zeitschriften vergraben? Kein Problem: <kbd>6*10</kbd> ins Suchfeld eingeben und schon ist die durchschnittliche Wochenarbeitszeit des modernen Freiberuflers berechnet. Die Aufgaben dürfen auch noch weitaus komplexer sein.</p>
<p>Die Umrechnung von Einheiten ist ebenso möglich; <kbd>22 inch in cm</kbd> gibt die Bildschirmdiagonale des Arbeitsplatzrechners aus. Wichtig: Die Einheiten sind derzeit noch auf englisch einzugeben.</p>
<p><img id="image351" src="http://www.webkrauts.de/wp-content/uploads/2007/12/screen-google.png" alt="Screenshot der Einheitenumrechung in Google" /></p>
<p>In gleicher Weise funktioniert auch das Konvertieren von Währungen. Leider wird nicht angegeben, wie aktuell der Kurs ist, aber um schnell zu erfahren, wieviel der iPod Nano in den <acronym title="United States of America">USA</acronym> kostet, reicht die Eingabe von <kbd>79 USD in EUR</kbd> völlig aus.</p>
<h4>Fakten und Definitionen</h4>
<p>Ziemlich neu ist die Ausgabe von Fakten. <kbd>Fläche von Deutschland</kbd> oder <kbd>Einwohner von Österreich</kbd> liefert Daten aus gut strukturierten Seiten, wie z. B. der Wikipedia.</p>
<p>Oft aus den gleichen Quellen stammen die Definitionen, zu denen <span lang="en" xml:lang="en">Google</span> verweist. Auch hier das Beispiel: <kbd>definiere CSS</kbd> führt zum Wikipedia-Eintrag für <span lang="en" xml:lang="en">Cascading Style Sheets</span>, <kbd>define:CSS</kbd> liefert gleich eine ganze Liste von Definitionen zum Begriff.</p>
<h4>Einschränken der Ergebnisse</h4>
<p>Den meisten schon länger bekannt sind die Möglichkeiten, die Suchergebnisse durch Schlüsselwörter einzugrenzen. <kbd>site:webkrauts.de</kbd> vor oder nach der Eingabe schränkt die Treffer auf die Website der Webkrauts ein. <kbd>filetype:pdf</kbd> zeigt nur in <acronym title="Portable Document Format">PDF</acronym>s gefundene Treffer. <kbd>link:webkrauts.de</kbd> zeigt Treffer, die auf die Webkrauts verlinken und <kbd>inurl:2007</kbd> liefert nur Seiten, deren URL diese Jahreszahl enthält. Die Schlüsselbegriffe lassen sich auch kombinieren. Durch ein vorangestelltes Minus (eigentlich ein Viertelgeviertstrich) werden diese Schlüsselwörter negiert.</p>
<p>Beschreibungen zu den hier vorgestellten und einigen weiteren Funktionen sind unter der wenig überraschenden Überschrift <strong><a href="http://www.google.de/intl/de/features.html"><span lang="en" xml:lang="en">Google</span>-Funktionen</a></strong> zu finden.</p>
<h4>Zum Autor</h4>
<p><img src="http://www.webkrauts.de/wp-content/uploads/2007/01/stefan-david-60x60.jpg" alt="Autorenphoto Stefan David"/> <a href="http://weblog.ononlinework.de/" title="Stefans Blog">Stefan David</a> wohnt im beschaulichen Bad Laer in der Nähe von Osnabrück und arbeitet beim Medienversandhändler jpc, wo er sich um Online-Marketing und Affiliate-Management kümmert. Nebenbei baut er für einen kleinen Kundenkreis Websites und schreibt viel zu selten in seinem eigenen Weblog und im <a href="http://weblog.jpc.de/">Weblog von jpc</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/17/google-funktionen-im-ueberblick/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Transparente Grafiken: gif und png</title>
		<link>http://www.webkrauts.de/2007/12/16/transparente-grafiken-gif-und-png/</link>
		<comments>http://www.webkrauts.de/2007/12/16/transparente-grafiken-gif-und-png/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 23:00:38 +0000</pubDate>
		<dc:creator>Nicolai Schwarz</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Alpha-Transparenz]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[Transparenz]]></category>

		<guid isPermaLink="false">http://www.webkrauts.de/2007/12/16/transparente-grafiken-gif-und-png/</guid>
		<description><![CDATA[<div class="adv07 adv07-16">16. Türchen des Webkrauts-Adventskalenders</div>

Heute geben wir euch eine Einführung in die Transparenz bei Grafikformaten fürs Web. Nicolai Schwarz erläutert an einem einfachen Beispiel die Unterschiede zwischen dem gif- und dem png-Format.]]></description>
			<content:encoded><![CDATA[<div class="adv07p adv07-16">16. Türchen des Webkrauts-Adventskalenders</div>
<p>Für transparente Grafiken im Netz kommen zwei Formate in Frage: gif und png. Beide bieten Vor- und Nachteile, die wir an einem einfachen Beispiel erläutern. Angenommen wir haben folgende Webseite (Abb 1).</p>
<p class="bild-block"><img id="image344" src="http://www.webkrauts.de/wp-content/uploads/2007/12/abb1_website_ohne_button.jpg" alt="Abb 1: Beispiel-Webseite ohne Button" /></p>
<p style="clear:both">Für einen besonderen Hinweis, etwa &raquo;Frohe Weihnachten&laquo;, wollen wir einen Button über die bestehende Seite legen (Abb 2).</p>
<p><img id="image345" src="http://www.webkrauts.de/wp-content/uploads/2007/12/abb2_website_mit_button.jpg" alt="Abb 2: Beispiel-Webseite mit Button" /></p>
<h4>Der Code</h4>
<p>Wer es sich einfach machen will, kann den Button komplett in das Bild mit den Schneemännern einbauen und jenes Bild austauschen. In unserem Fall soll der Button absichtlich über dem Bild und dem Hintergrundmuster liegen.<br />
Im HTML-File kann man dazu ganz am Ende etwa folgenden Code einfügen:<br /><code>&lt;div id="button"&gt;&lt;/div&gt;</code></p>
<p>Dieses div wird per CSS positioniert:</p>
<p><code>div#button {<br />
position: absolute;<br />
top: 5px;<br />
left: 50%;<br />
margin: 0 0 0 -334px;<br />
width: 121px;<br />
height: 121px;<br />
background: transparent url(pfad/button.gif) 0 0 no-repeat;<br />
}</code></p>
<h4>Der Button als gif</h4>
<p>Aus Photoshop oder Illustrator lässt sich der Button als transparentes gif exportieren. Die Transparenz in einem gif ist allerdings beschränkt: Ein Pixel ist entweder transparent oder hat eine Farbe. In unserem Fall besitzt der Button am Rande mehrere Pixel, die eigentlich in die Farbe des Hintergrundes übergehen müssten (Abb 3). Beim gif lässt sich zwar eine Hintergrundfarbe angeben, in den die Randpixel übergehen sollen, aber es ist eben <em>nur eine</em> Hintergrundfarbe. Wählt man beispielsweise weiß als Hintergrundfarbe (Abb 4), verliert die Grafik ihren leichten Schatten und einige Pixel am Rand gehen ins Weiß über, sind aber nicht transparent . Bei mehreren Farben im Hintergrund sieht man ein krisseligen Rand (Abb 5).</p>
<p><img id="image346" src="http://www.webkrauts.de/wp-content/uploads/2007/12/abb3_abb4_ausschnitte.gif" alt="Abb 3 und 4: Button im Original und als gif, vergrößert" /></p>
<p><img id="image347" src="http://www.webkrauts.de/wp-content/uploads/2007/12/abb5_website_mit_gif_button.jpg" alt="Abb 5: Webseite mit gif-Button" /></p>
<h4>Der Button als png</h4>
<p>Für das png gibt es zwei Möglichkeiten beim Speichern: png-8 oder png-24. Das png-8 Format liefert&nbsp;&ndash; was die Transparenzen angeht&nbsp;&ndash; das gleiche Ergebnis wie ein gif. Das png-24 hingegen bietet eine sogenannte <a href="http://de.wikipedia.org/wiki/Alphakanal">Alpha-Transparenz</a> an. Damit ist es möglich, die Punkte am Rand mit einer echten Transparenz zu versehen. Die Original-Übergänge zum Hintergrund (Abb. 3) werden in diesem png beibehalten (Abb 6).</p>
<p><img id="image348" src="http://www.webkrauts.de/wp-content/uploads/2007/12/abb3_abb6_ausschnitte.gif" alt="Abb 3 und 6: Button im Original und als png-24, vergrößert" /></p>
<p><img id="image349" src="http://www.webkrauts.de/wp-content/uploads/2007/12/abb7_website_mit_png_button.jpg" alt="Abb 7: Webseite mit png-24-Button" /></p>
<p>Damit ist das png-24 das ideale Format für unseren Button. Wir können die Hintergrundgrafiken austauschen, Farben auf der Website ändern oder den Button schnell mal ein paar Pixel verschieben&nbsp;&ndash; ohne unschönen Rand oder den Button neu anlegen zu müssen.</p>
<h4>Der Haken</h4>
<p>Leider zeigen ältere Internet Explorer alpha-transparente pngs nicht korrekt an. Hier gibt es zwei Möglichkeiten. Zum einen gibt es eine <a href="http://homepage.ntlworld.com/bobosola/">JavaScript-Lösung</a>, die auch in den Internet Explorern 5.5 und 6 transparente pngs ermöglicht. Zum anderen bietet Fireworks einen interessanten Ansatz, der <a href="http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/">semi-transparente Farben in einem png-8</a> erlaubt.</p>
<h4>Zum Autor:</h4>
<p><img id="image125" src="http://www.webkrauts.de/wp-content/uploads/2006/11/nicolai_schwarz_60x60.jpg" alt="Autorenfoto: Nicolai Schwarz"/>Nicolai Schwarz arbeitet als <a href="http://www.textformer.de">selbstständiger Mediendesigner</a> in Dortmund. Dabei gestaltet er am liebsten Corporate Designs, Webseiten oder Flash-Spiele für kleine Unternehmen. Ab und zu kümmert er sich um <a href="http://www.textformer.de/weblog.php">sein Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkrauts.de/2007/12/16/transparente-grafiken-gif-und-png/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
