<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2germanfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>StarSt0rm Design</title>
	
	<link>http://www.starstormdesign.de</link>
	<description>PHP, MySQL, Sicherheit Internet, Suchmaschinenoptimierung, meine Projekte, Tipps, Trick und Zahlreiche Tutorials.</description>
	<lastBuildDate>Wed, 22 May 2013 07:00:31 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/starstormdesign" /><feedburner:info uri="starstormdesign" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=de&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://us.i1.yimg.com/us.yimg.com/i/de/my/addtomyyahoo4.gif">Subscribe with Mein Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/starstormdesign" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fstarstormdesign" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Artefakte, schwarze Linien, im Safari auf dem iPad</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/RvFnOG9JFh8/</link>
		<comments>http://www.starstormdesign.de/artefakte-schwarze-linien-im-safari-auf-dem-ipad/#comments</comments>
		<pubDate>Wed, 22 May 2013 07:00:31 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=425</guid>
		<description><![CDATA[Bei einem Projekt hatte ich ein ungewöhnliches Phänomen: Auf dem Display wurden, horizontale 1 Pixel breite, Linien angezeigt. Diese ließen sich nicht mit Firebug oder anderen Entwickler-Werkzeugen ausfindig machen. Doch nicht nur das: Die Linien blieben dann dauerhaft auf dem Display, auch wenn man eine andere Website aufruft. Nur der Klick auf „Cookies und Daten [...]]]></description>
				<content:encoded><![CDATA[<p>Bei einem Projekt hatte ich ein ungewöhnliches Phänomen: Auf dem Display wurden, horizontale 1 Pixel breite, Linien angezeigt. Diese ließen sich nicht mit Firebug oder anderen Entwickler-Werkzeugen ausfindig machen. Doch nicht nur das: Die Linien blieben dann dauerhaft auf dem Display, auch wenn man eine andere Website aufruft. Nur der Klick auf „Cookies und Daten löschen, in den Einstellungen von Safari sorgte für das Verschwinden der Linien. Dazu muss man sagen, dass das HTML Gerüst nicht besonders einfach gestrickt war. Es war ein Slider mit vielen Video Elemente und Flowplayer Integration.<span id="more-425"></span></p>
<p>Nach langer Recherche fand ich <a href="http://www.danielzhang.info/drupal6/content/graphic-artifacts-in-web-page-rendering-in-safari-for-ipad" title="Graphic Artifacts in Web Page Rendering in Safari for iPad">einen Artikel</a>, der dieses Phänomen in wenigen Sätzen beschreibt: Demnach war das ein Problem der Rendering-Engine im Safari.</p>
<p>Der Bug kann aber umgangen werden, wenn das richtige Element einen negativen Außenabstand (margin) erhält. Die folgenden zwei Zeilen brachten die Lösung:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">element <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span>  <span style="color: #933;">-1px</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Hatte einer von euch schon das Problem?</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/RvFnOG9JFh8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/artefakte-schwarze-linien-im-safari-auf-dem-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/artefakte-schwarze-linien-im-safari-auf-dem-ipad/</feedburner:origLink></item>
		<item>
		<title>Alle Checkboxen selektieren</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/jbDeb_Uw9AY/</link>
		<comments>http://www.starstormdesign.de/alle-checkboxen-selektieren/#comments</comments>
		<pubDate>Fri, 29 Mar 2013 16:44:04 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=395</guid>
		<description><![CDATA[In diesem kurzen Tutorial möchte ich euch zeigen, wie man ein kleines Script schreibt, dass alle Checkboxen aus- oder abwählt. Diese Funktion wird bei praktisch jeder Anwendung gebraucht. Und leider viel zu oft immer neu geschrieben. Aus diesem Grund habe ich das Script in Form eines jQuery Plugins geschrieben und auf GitHub.com veröffentlicht. Wer also [...]]]></description>
				<content:encoded><![CDATA[<p>In diesem kurzen Tutorial möchte ich euch zeigen, wie man ein kleines Script schreibt, dass alle Checkboxen aus- oder abwählt. Diese Funktion wird bei praktisch jeder Anwendung gebraucht. Und leider viel zu oft immer neu geschrieben. Aus diesem Grund habe ich das Script in Form eines jQuery Plugins geschrieben und auf <a title="checkboxToggleizr" href="https://github.com/alexander-bogomolov/checkboxToggleizr">GitHub.com</a> veröffentlicht. Wer also auf der Suche nach solch einem Plugin ist, der kann sich gerne bedienen.<span id="more-395"></span></p>
<h2>Vorbereitung</h2>
<p>Alle Checkboxen, die zusammengehören, haben in der Regel denselben Wert im name-Attribut. (In unserem Beispiel <code>items[]</code>.) Dieser Wert wird also auch als Referent verwendet, um alle Checkboxen auszuwählen. Wir erstellen also eine neue Checkbox und geben dem data-reference-Attribut den Wert <code>items[]</code>. Das entspricht dem name-Attribut der Checkboxen.</p>
<h2>Der Code</h2>
<p>Gehen wir von diesem HTML Konstrukt aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;label for=&quot;item-1&quot;&gt;&lt;input id=&quot;item-1&quot; type=&quot;checkbox&quot; name=&quot;items[]&quot; value=&quot;1&quot; /&gt; Ben&lt;/label&gt;
&lt;label for=&quot;item-2&quot;&gt;&lt;input id=&quot;item-2&quot; type=&quot;checkbox&quot; name=&quot;items[]&quot; value=&quot;2&quot; /&gt; John&lt;/label&gt;
&lt;label for=&quot;item-3&quot;&gt;&lt;input id=&quot;item-3&quot; type=&quot;checkbox&quot; name=&quot;items[]&quot; value=&quot;3&quot; /&gt; Felix&lt;/label&gt;
&lt;label for=&quot;item-4&quot;&gt;&lt;input id=&quot;item-4&quot; type=&quot;checkbox&quot; name=&quot;items[]&quot; value=&quot;4&quot; /&gt; Alex&lt;/label&gt;
&lt;label for=&quot;item-5&quot;&gt;&lt;input id=&quot;item-5&quot; type=&quot;checkbox&quot; name=&quot;items[]&quot; value=&quot;5&quot; /&gt; Tim&lt;/label&gt;
&nbsp;
&lt;label&gt;&lt;input id=&quot;select-all&quot; type=&quot;checkbox&quot; name=&quot;select-all&quot; value=&quot;&quot; data-reference=&quot;items[]&quot; /&gt; Select all&lt;/label&gt;</pre></td></tr></table></div>

<p>Klick man nun die Checkbox mit der ID <code>select-all</code> an, so werden alle Checkboxen mit dem Namen selektiert und ausgewählt.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#select-all'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">on</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">var</span> activator <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">var</span> reference <span style="color: #339933;">=</span> activator.<span style="color: #660066;">data</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'reference'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>activator.<span style="color: #660066;">is</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">':checked'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">':checkbox[name=&quot;'</span> <span style="color: #339933;">+</span> reference <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;]'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'checked'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'checked'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">':checkbox[name=&quot;'</span> <span style="color: #339933;">+</span> reference <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;]'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeAttr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'checked'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Im Grunde genommen war&#8217;s das auch schon. Das <a href="http://www.starstormdesign.de/checkbox-toggleizr/" title="checkboxToggleizr Plugin">jQuery Plugin</a> wurde nur um eine weitere Option erweitert: Es kann den Status der Checkboxen umkehren. Ausgewählte Checkboxen werden abgewählt und umgekehrt.</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/jbDeb_Uw9AY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/alle-checkboxen-selektieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/alle-checkboxen-selektieren/</feedburner:origLink></item>
		<item>
		<title>Einfachen PHP Event-Kalender erstellen</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/ZcDlmhS-NlM/</link>
		<comments>http://www.starstormdesign.de/einfachen-php-event-kalender-erstellen/#comments</comments>
		<pubDate>Mon, 28 Jan 2013 17:13:24 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Kalender]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=415</guid>
		<description><![CDATA[Im Juni 2009 habe ich ein Tutorial geschrieben, wie man einen einfachen Kalender mit PHP erstellt. Dieses Tutorial ist immer noch sehr beliebt und gehört zu den erfolgreichsten in diesem Blog. Jedoch bekomme ich immer wieder E-Mail und Kommentare mit der Frage, wie man Events in diesem Kalender anzeigen könnte. Darauf möchte ich heute kurz [...]]]></description>
				<content:encoded><![CDATA[<p>Im Juni 2009 habe ich ein Tutorial geschrieben, wie man einen <a href="http://www.starstormdesign.de/einfacher-kalender-mit-php-in-100-zeilen/" title="Einfacher Kalender mit PHP in 100 Zeilen">einfachen Kalender mit PHP erstellt</a>. Dieses Tutorial ist immer noch sehr beliebt und gehört zu den erfolgreichsten in diesem Blog. Jedoch bekomme ich immer wieder E-Mail und Kommentare mit der Frage, wie man Events in diesem Kalender anzeigen könnte. Darauf möchte ich heute kurz eingehen.<span id="more-415"></span></p>
<h2>Vorbereitung</h2>
<p>Als Ersten benötigen wir eine Datenbanktabelle, in der die Events eingetragen werden. In diesem Beispiel besteht ein Event nur aus einem Datum und einem Titel. Für die Demonstration sollte das auch genügen.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`events`</span> <span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">`id`</span> <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">11</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span><span style="color: #66cc66;">,</span>
  <span style="color: #ff0000;">`date`</span> <span style="color: #993333; font-weight: bold;">DATE</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  <span style="color: #ff0000;">`title`</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`id`</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span> ENGINE<span style="color: #66cc66;">=</span>InnoDB  <span style="color: #993333; font-weight: bold;">DEFAULT</span> CHARSET<span style="color: #66cc66;">=</span>utf8 <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> ;</pre></td></tr></table></div>

<h2>Ausgabe</h2>
<p>Um die Events für den Kalender aus der Datenbank auszulesen, muss zuerst eine Verbindung zu der Datenbank hergestellt werden.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>45
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$db</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> mysqli<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'test'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'passwort'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'test'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p class="message warning">Die Zeilennummern beziehen sich auf das original Kalender Tutorial, dass am Anfang des Artikels verlinkt ist!</p>
<p>Ist das erfolgt, werden die Event des ausgewählten Monats aus der Datenbank auslesen.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>46
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM `events` WHERE DATE_FORMAT(`date`, '%Y-%m') = '&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%Y-%m'</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$month</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$year</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Jetzt gehen wir die Ergebnisse durch und schreiben die Events in ein zweidimensionales Array. Als Schlüssel nehmen wir das Datum des Events.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>48
49
50
51
52
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$events</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$event</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch_object</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$events</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$event</span><span style="color: #339933;">-&gt;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$event</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Als letzten Schritt müssen wir nur noch in der for-Schleife gucken, ob an dem Tag ein Event eingetragen ist und wenn ja, diesen irgendwie ausgeben. Zusätzlich bekommt die Zelle der Tabelle eine Klasse. Das erreichen wir, indem wir gucken, ob das aktuelle Datum als Schlüssel im Array definiert ist.</p>
<p>Bei der Ausgabe habe ich nur ein i-Element mit einem „T“ in Klammern ausgegeben. Das title-Attribut beinhaltet die Event-Titel Komma getrennt. (Diese werden dann als Tooltip angezeigt.)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$day</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #000088;">$day</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$total_days</span><span style="color: #339933;">;</span> <span style="color: #000088;">$day</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$class</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #666666; font-style: italic;">// Wenn das aktuelle Datum dem &quot;Schleifeninhalt&quot; entspricht ?&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$n_month</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$month</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$n_year</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$year</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$day</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$n_day</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$class</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'today'</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #666666; font-style: italic;">// Wenn an dem Tag Events eingetragen sind ?&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$has_events</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array_key_exists</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%Y-%m-%d'</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$month</span><span style="color: #339933;">,</span> <span style="color: #000088;">$day</span><span style="color: #339933;">,</span> <span style="color: #000088;">$year</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$events</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$has_events</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
  &lt;td id=&quot;day-<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$day</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; class=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$day</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$has_events</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
      &lt;i class=&quot;icon-info&quot; title=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">', '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$events</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%Y-%m-%d'</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$month</span><span style="color: #339933;">,</span> <span style="color: #000088;">$day</span><span style="color: #339933;">,</span> <span style="color: #000088;">$year</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;(T)&lt;/i&gt;
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
  &lt;/td&gt;
&nbsp;
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$day_offset</span><span style="color: #339933;">++;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #666666; font-style: italic;">// Für neue Woche eine neue Zeile beginnen ?&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$day_offset</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #000088;">$day_offset</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$day</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$total_days</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
    &lt;/tr&gt;
    &lt;tr&gt;
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endfor</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p class="message info">Dies ist eine Erweiterung des Kalenders aus dem Artikel: <a href="http://www.starstormdesign.de/einfacher-kalender-mit-php-in-100-zeilen/" title="Einfacher Kalender mit PHP in 100 Zeilen">Einfacher Kalender mit PHP in 100 Zeilen</a></p>
<p>Das war&#8217;s! Ihr habt nun einen voll funktionsfähigen Event-Kalender.<br />
Wenn ihr die Ausgabe anders haben möchtet, dann müsst ihr nur den Bereich der for-Schleife anpassen.</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/ZcDlmhS-NlM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/einfachen-php-event-kalender-erstellen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/einfachen-php-event-kalender-erstellen/</feedburner:origLink></item>
		<item>
		<title>Bower: Paketmanager von Twitter</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/Z7rwvFluXGE/</link>
		<comments>http://www.starstormdesign.de/bower-paketmanager-von-twitter/#comments</comments>
		<pubDate>Fri, 07 Dec 2012 06:52:48 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Paketmanager]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=402</guid>
		<description><![CDATA[Bower ist ein Paketmanager aus dem Hause Twitter. Das Tool erlaubt es uns Fremdbibliotheken, wie Lightboxen, Twitter Bootstap, bequem zu installieren und diese später zu aktualisieren. Ebenso kann Bower Abhängigkeiten auflösen und die nötigten Pakete installieren. Installieren Bower lässt sich leicht über den Node Package Manager (npm) installieren: npm install -g bower Pakete suchen Bower [...]]]></description>
				<content:encoded><![CDATA[<p>Bower ist ein Paketmanager aus dem Hause Twitter. Das Tool erlaubt es uns Fremdbibliotheken, wie Lightboxen, Twitter Bootstap, bequem zu installieren und diese später zu aktualisieren. Ebenso kann Bower Abhängigkeiten auflösen und die nötigten Pakete installieren.<span id="more-402"></span></p>
<h2>Installieren</h2>
<p><a href="https://github.com/twitter/bower">Bower</a> lässt sich leicht über den Node Package Manager (npm) installieren:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">npm <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">-g</span> bower</pre></td></tr></table></div>

<h2>Pakete suchen</h2>
<p>Bower erlaubt eine recht bequeme Suche nach verfügbaren Paketen:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower search</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower search package</pre></td></tr></table></div>

<p>Wer lieber eine grafische Oberfläche bevorzugt, der kann sich auf <a href="http://sindresorhus.com/bower-components/">sindresorhus.com/bower-components</a> umschauen.</p>
<h2>Pakete installieren</h2>
<p>Bower kann die Pakete nicht nur aus seinem Repository installieren. Auch das Installieren direkt von GitHub oder per HTTP ist möglich. Dabei kann in der Regel eine feste Version angegeben werden, damit Kompatibilitätsprobleme ausgeschlossen werden können. Bower legt die Pakete dann standardmäßig im „components“ Verzeichnis ab.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower <span style="color: #c20cb9; font-weight: bold;">install</span> bootstrap-sass</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower <span style="color: #c20cb9; font-weight: bold;">install</span> bootstrap-sass<span style="color: #666666; font-style: italic;">#2.1.1</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower <span style="color: #c20cb9; font-weight: bold;">install</span> git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>jlong<span style="color: #000000; font-weight: bold;">/</span>sass-twitter-bootstrap.git</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower <span style="color: #c20cb9; font-weight: bold;">install</span> https:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>jlong<span style="color: #000000; font-weight: bold;">/</span>sass-twitter-bootstrap.git</pre></td></tr></table></div>

<p>Alternativ habt ihr sogar die Möglichkeit Pakete von der eigenen Festplatte zu installieren:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>github<span style="color: #000000; font-weight: bold;">/</span>netbeans-code-templates</pre></td></tr></table></div>

<h2>Pakete aktualisieren</h2>
<p>Pakete lassen sich ebenso einfach aktualisieren. Der folgender Aufruf genügt:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower update</pre></td></tr></table></div>

<p>Wichtig zu wissen ist es, dass der Aufruf alle Pakete aktualisiert. Will man hingegen nur eins aktualisieren, so muss man einfach eine neuere Version installieren:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower <span style="color: #c20cb9; font-weight: bold;">install</span> bootstrap-sass<span style="color: #666666; font-style: italic;">#2.2.1</span></pre></td></tr></table></div>

<h2>Pakete deinstallieren</h2>
<p>Auch das Deinstallieren geht denkbar einfach;</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower uninstall bootstrap-sass</pre></td></tr></table></div>

<h2>Projekt verwalten</h2>
<p>Die gezeigten Kommandos sind an sich sehr cool, jedoch ist die Verwaltung eines Projekts so recht schwierig. Aus diesem Grund kann man eine <em>components.json</em>-Datei anlegen, die alle benötigten Pakete auflistet. Anschließend genügt der folgende Aufruf:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">bower <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>Eine <em>components.json</em> beinhaltet in unserem Beispiel den folgenden Code:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="json" style="font-family:monospace;">{
  &quot;name&quot;: &quot;StarStormDesign&quot;,
  &quot;version&quot;: &quot;1.0&quot;,
  &quot;dependencies&quot;: {
    &quot;bootstrap-sass&quot;: &quot;2.2.1&quot;
}</pre></td></tr></table></div>

<p>Unter „dependencies“ können nun alle Pakete angegeben werden, die wir benötigen.</p>
<h2>Bower konfigurieren</h2>
<p>Will man seine Pakete nicht in dem „components“ Verzeichnis haben oder die <em>components.json</em>-Datei andern benennen, so benötigt man eine Konfigurationsdatei namens <em>.bowerrc</em>. Diese beinhaltet ebenfalls JSON:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="json" style="font-family:monospace;">{
  &quot;directory&quot;: &quot;third-party&quot;,
  &quot;json&quot;: &quot;libraries.json&quot;
}</pre></td></tr></table></div>

<p>Dort kann man unter anderem das Zielverzeichnis definieren.</p>
<h2>Fazit</h2>
<p>Mit Bower habt ihr ein tolles Tool zur Verwaltung von Paketen. Bequemes installieren und aktualisieren von Paketen ist jederzeit problemlos möglich. Diese können dann auf die „ignore“-Liste bei der Versionskontrolle kommen.</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/Z7rwvFluXGE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/bower-paketmanager-von-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/bower-paketmanager-von-twitter/</feedburner:origLink></item>
		<item>
		<title>Einführung in Sass</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/P3OTf0ZYw5Y/</link>
		<comments>http://www.starstormdesign.de/einfuehrung-in-sass/#comments</comments>
		<pubDate>Fri, 30 Nov 2012 05:35:21 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Präprozessor]]></category>
		<category><![CDATA[Sass]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=398</guid>
		<description><![CDATA[Das Erstellen von neuen Layouts hat schon immer sehr viel Zeit in Anspruch genommen. Und bei jedem neuen Projekt stand man immer wieder vor denselben Problemen: Wie strukturiere ich mein CSS? Schließlich sollte das einige Jahre wartbar, übersichtlich und im besten Fall sogar wiederverwendbar sein. Der erste Schritt wäre das CSS in Module zu unterteilen: [...]]]></description>
				<content:encoded><![CDATA[<p>Das Erstellen von neuen Layouts hat schon immer sehr viel Zeit in Anspruch genommen. Und bei jedem neuen Projekt stand man immer wieder vor denselben Problemen: Wie strukturiere ich mein CSS? Schließlich sollte das einige Jahre wartbar, übersichtlich und im besten Fall sogar wiederverwendbar sein. Der erste Schritt wäre das CSS in Module zu unterteilen: layout.css, content.css, typo.css usw. Jedoch sorgt diese Aufteilung ebenfalls sehr schnell für&#8217;s Chaos, wenn das Projekt über Jahre wächst. Wenn dann noch der Wunsch kommt, eine Farbe auszutauschen, dann ist der Tag endgültig hin und man macht Arbeit, die kaum im vollen Umfang bezahlt wird.<span id="more-398"></span></p>
<p>Es wäre doch gut, wenn wir pro Widget eine eigene CSS Datei hätten. Diese beinhaltet sämtlichen Code, den wir für das Widget benötigen. Das hat aber zur Folge, dass man unzählige Dateien in eine Seite einbinden muss. Außerdem hätte man immer irgendwo redundanten Code.</p>
<blockquote class="message info"><p>Als ein Widget bezeichne ich ein Element der Seite, der für dich geschlossen ist und theoretisch auch in einem anderen Projekt eingesetzt werden könnte. Beispiel: Slider, Tabs, Akkordions, Header, Footer, Schnellsuche usw.</p></blockquote>
<p>Eine mögliche Lösung für viele Probleme sind sogenannte Präprozessoren. Diese haben eine CSS ähnliche Syntax und erweitern das CSS um Features, die die Arbeit mit CSS erleichtern. Es wird dabei immer richtigen CSS kompiliert.</p>
<h2>Was ist Sass?</h2>
<p>Sass (<a href="http://sass-lang.com/">Syntactically Awesome Stylesheets</a>) ist eins dieser Präprozessoren. Sass Dateien haben die Dateiendung .scss und werden können nach der üblichen CSS Syntax geschrieben werden. Eigentlich kann auch jede CSS-Datei einfach in eine SCSS-Datei umbenannt werden, wenn man ab einem bestimmten Moment mit Sass arbeiten möchte.</p>
<p>Um Sass verwenden zu können, ist Ruby erforderlich. Auf Unix-basierten Systemen sollte Ruby schon vorinstalliert sein. Auf Windows lässt es sich leicht installieren.</p>
<p>Eine Installationsanleitung findet ihr auf der <a href="http://sass-lang.com/tutorial.html#install_ruby_and_sass">offiziellen Seite</a>.</p>
<h2>Welche Vorteile bring Sass?</h2>
<h3>Variablen</h3>
<p>Ein Segen für alle Frontend-Entwickler werden die Variablen sein. Sass erlaubt es uns diese zu definieren und somit alle Größen, Farben und Abstände an einem separaten Ort zu lagern. Es ist nicht mehr nötig aufwendig nach einem Farbwert zu suchen, wenn man an einer anderen Stelle diese Farbe erneut braucht. (Ober was noch schlimmer ist: Man öffnet erneut die Vorlage und pickt sich die Farbe raus. Dann kann es passieren, dass der Wert minimal, für das Auge vielleicht gar nicht sichtbar, abweicht. Somit wäre auch ein Suchen/Ersetzen nutzlos.) Muss eine Änderung erfolgen, so geschieht die an nur einer Stelle.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;">$headline-color<span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
h1 <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> $headline-color<span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
h2 <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> $headline-color<span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3>Verschachtelung</h3>
<p>In Sass können die CSS-Regeln verschachtelt werden. Das erhöht die Übersicht extrem und gibt ein bisschen die Verschachtelung in der HTML-Datei wieder. Jedoch Achtung: Diese Funktion kann dazu verleiten sehr lange Selektoren zu erzeugen. Diese sind komplexer und weniger effizient.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;">ul <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
&nbsp;
  li <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> inline-block<span style="color: #00AA00;">;</span>
&nbsp;
    a <span style="color: #00AA00;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
      <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#00f</span><span style="color: #00AA00;">;</span>
&nbsp;
      &amp;<span style="color: #6666ff;">.active</span> <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#f00</span><span style="color: #00AA00;">;</span>
      <span style="color: #00AA00;">&#125;</span>
    <span style="color: #00AA00;">&#125;</span>
  <span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;">ul <span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span>
ul li <span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span>
ul li a <span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span>
ul li a<span style="color: #6666ff;">.active</span> <span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Das &#038; entspricht dabei dem Eltern-Selektor.</p>
<h3>Mixins</h3>
<p>Mixins sind Sass Bausteine, die immer wieder verwendet werden können. Diese Bausteine können leicht mit einer @include Anweisung eingefügt werden. Dabei wird der Code, der im Mixin erzeugt wird, einfach an der Stelle des @include eingefügt.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@mixin text-color($color: #000, $headline: 0) {</span>
  <span style="color: #a1a100;">@if $headline == 1 {</span>
    <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> $<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
h1 <span style="color: #00AA00;">&#123;</span>
  <span style="color: #a1a100;">@include text-color(red, 1);</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;">h1 <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Ein Mixin ähnelt vom Aufbau einer Funktion von einer Programmiersprache. Es kann Parameter entgegennehmen und sogar if-Abfragen beinhalten.</p>
<h3>Vererbung</h3>
<p>Ein sehr oft verwendetes Feature ist die Vererbung in Sass. So lassen sich die CSS-Regeln sehr schnell und einfach auf ein anderes Element übertragen, ohne redundanten Code schreiben zu müssen. Ein gutes Beispiel hierfür wären Infoboxen. Diese gibt es meistens in verschiedenen Farben, aber mit einem gleichen Aufbau. (Fehlermeldung, Hinweis, Erfolgsnachricht usw.)</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.message</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.error</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #a1a100;">@extend .message;</span>
  <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.success</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #a1a100;">@extend .message;</span>
  <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">green</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">green</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.message</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.error</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.success</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.error</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.success</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">green</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">green</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>In den meisten Fällen ist es sinnvoller die Vererbung, anstelle von Mixins, zu verwenden, da der Code nicht wiederholt wird.</p>
<h3>Zusammenfassen in eine Datei</h3>
<p>Ich habe oben schon erwähnt, dass es viel einfacher wäre, wenn man pro Widget eine CSS-Datei hätte. Mit Sass können wir so problemlos arbeiten, denn es besteht immer die Möglichkeit mehrere SCSS-Datein, beim Kompilieren, zu einer einzigen CSS-Datei umzuwandeln.</p>
<p>Sass fasst alle Dateien in eine zusammen, die mit einem Unterstrich beginnen und in eine andere Datei, mit der @import Anweisung, geladen werden.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@import 'variables';</span>
<span style="color: #a1a100;">@import 'reset';</span>
<span style="color: #a1a100;">@import 'layout';</span>
<span style="color: #a1a100;">@import 'widget-xy';</span></pre></td></tr></table></div>

<h2>Fazit</h2>
<p>Mit Sass ist es möglich sehr große Projekte sehr sauber zu gestalten und Anpassungen in kürzester Zeit durchzuführen. Wobei ich Sass nicht nur für große Projekte empfehle.</p>
<p>Natürlich erfordert die Einarbeitung etwas Zeit, diese werdet ihr jedoch in kürzester Zeit wieder einholen.</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/P3OTf0ZYw5Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/einfuehrung-in-sass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/einfuehrung-in-sass/</feedburner:origLink></item>
		<item>
		<title>DevNL 02 – Neues Meta-Tag, Google Webmaster Guidelines, Responsive Patterns und vieles mehr</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/Wm-jCYX_hT0/</link>
		<comments>http://www.starstormdesign.de/dev-nl-02-neues-meta-tag-google-webmaster-guidelines-responsive-patterns-und-vieles-mehr/#comments</comments>
		<pubDate>Fri, 12 Oct 2012 06:00:35 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[DevNL]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Icon Fonts]]></category>
		<category><![CDATA[Responsive Webdesign]]></category>
		<category><![CDATA[Rich Snippets]]></category>
		<category><![CDATA[Web Fonts]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=385</guid>
		<description><![CDATA[Gut ein Monat ist seit dem ersten und letzten Developer Newsletter vergangen und es hat sich im Internet doch viel getan. Aus diesem Grund kommt heute der zweite Teil mit neuen Themen. (Da ich den Artikel nicht überladen wollte, müssen einige Links dem DevNL 03 abwarten.) Heutige Themen Meta-Tag: news_keywords Update: Rich Snippets Testing Tool [...]]]></description>
				<content:encoded><![CDATA[<p>Gut ein Monat ist seit dem <a title="DevNL 01 – Änderungen in CSS, Optimierung für Retina Displays, ARIA und Recht" href="http://www.starstormdesign.de/dev-nl-01-aenderungen-in-css-optimierung-fuer-retina-displays-aria-und-recht/">ersten und letzten Developer Newsletter</a> vergangen und es hat sich im Internet doch viel getan. Aus diesem Grund kommt heute der zweite Teil mit neuen Themen. (Da ich den Artikel nicht überladen wollte, müssen einige Links dem DevNL 03 abwarten.)<span id="more-385"></span></p>
<h2>Heutige Themen</h2>
<ul>
<li><a href="#news-keywords">Meta-Tag: news_keywords</a></li>
<li><a href="#rich-snippets">Update: Rich Snippets Testing Tool</a></li>
<li><a href="#webmaster-guidlines">Webmaster Guidlines</a></li>
<li><a href="#responsive-patterns">Responsive Patterns</a></li>
<li><a href="#studie">Studie</a></li>
<li><a href="#icon-fonts">Icon Fonts: Vor- und Nachteile</a></li>
<li><a href="#google-web-fonts">Guide: Gooogle Web Forms</a></li>
<li><a href="#plattform">Neue Plattform für Webentwickler</a></li>
<li><a href="#unterhaltung">Unterhaltung: iPhone 5</a></li>
</ul>
<h2 id="news-keywords">Meta-Tag: news_keywords</h2>
<p>Google hat wieder etwas Neues parat und führt ein <a href="http://www.zweidoteins.de/google-news/google-fuhrt-meta-tag-news_keywords-fur-news-quellen-ein">neues Meta-Tag »news_keywords«</a> ein. Damit sollen Artikel in Google News schneller zugeordnet werden. Dabei wird <a href="http://www.torbenleuschner.de/blog/759/google-news-keywords-wordpress-plugin/">nicht der normale Algorithmus von Google  verwendet</a>, da dieser für den Newsbereich etwas zu langsam ist.</p>
<h2 id="rich-snippets">Update: Rich Snippets Testing Tool</h2>
<p>Durch Vladimir Simović bin ich auf die Aktualisierung des <a href="http://www.perun.net/2012/09/21/google-aktualisiert-rich-snippets-testing-tool/">Testing Tool für die Rich Snippets</a> von Google aufmerksam geworden. Wie es aussieht, wird in Zukunft mehr Wert darauf gelegt. Ich finde das wirklich klasse.</p>
<h2 id="webmaster-guidlines">Webmaster Guidlines</h2>
<p>Und da wir schon bei Google sind: Es wurden neue <a href="http://t3n.de/news/seo-matt-cutts-neuen-webmaster-418346/">Guidelines für Webmaster</a> veröffentlicht. Da sagt Google ganz klar, was die Suchmaschine nicht will/abstraft.</p>
<h2 id="responsive-patterns">Responsive Patterns</h2>
<p>Responsive Webdesign ist jetzt voll in! Und auch ich taste mich langsam durch die &#8220;unerforschte&#8221; Technologie. Dabei bin ich auf eine Seite mit <a href="http://bradfrost.github.com/this-is-responsive/index.html">Responsive Patterns</a> (Entwurfsmuster) gestoßen. (Das sind bewährte Lösungsansätze für wiederkehrende Probleme.)</p>
<h2 id="studie">Studie</h2>
<p>Eine Studie gibt es heute auch: <a href="http://t3n.de/news/studie-deutsche-angestellte-417366/">Was wünschen sich die Angestellten?</a> Natürlich mehr Ruhe. <img src='http://www.starstormdesign.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2 id="icon-fonts">Icon Fonts: Vor- und Nachteile</h2>
<p>Auf <a href="http://blog.codingpeople.com/tips/icon-fonts-vor-und-nachteile-auch-im-vergleich-zu-sprite-grafiken/">codingpeople.com</a> werden die Vor- und Nachteile von Icon Fonts sehr gut erläutert.</p>
<h2 id="google-web-fonts">Guide: Gooogle Web Forms</h2>
<p>Gestern habe ich noch auf die &#8220;<a href="https://developers.google.com/webfonts/docs/getting_started?hl=de">Getting Started</a>&#8221; Seite der Google Fonts verwiesen, als mich ein Kollege etwas fragte. Heute habe ich ein <em><a href="http://designshack.net/articles/css/a-beginners-guide-to-using-google-web-fonts/">Beginner’s Guide to Using Google Web Fonts</a></em> am Start.</p>
<h2 id="plattform">Neue Plattform für Webentwickler</h2>
<p>Ganz neu: W3C, Adobe, Facebook, Google, HP, Microsoft, Nokia,  Mozilla und Opera haben zusammen eine neue <a href="http://t3n.de/news/web-platform-docs-419195/">Plattform für Webentwickler</a> gegründet. Das Ding ist noch in einer sehr frühen Alpha Version, aber man kann gespannt sein. Ich frage mich was dann aus dem <a href="https://developer.mozilla.org/de/">Mozilla Developer Network</a> wird. Finde das ist eine super Wissensquelle!</p>
<h2 id="unterhaltung">Unterhaltung: iPhone 5</h2>
<p>Und zu guterletzt ein kleiner Lacher: <a href="http://www.youtube.com/watch?v=XNBP18nrRdw">The iPhone 5 (Parody) Ad: A Taller Change</a></p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/Wm-jCYX_hT0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/dev-nl-02-neues-meta-tag-google-webmaster-guidelines-responsive-patterns-und-vieles-mehr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/dev-nl-02-neues-meta-tag-google-webmaster-guidelines-responsive-patterns-und-vieles-mehr/</feedburner:origLink></item>
		<item>
		<title>jQuery UI 1.9.0 veröffentlicht</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/HyGhKxjV5Lo/</link>
		<comments>http://www.starstormdesign.de/jquery-ui-1-9-0-veroeffentlicht/#comments</comments>
		<pubDate>Wed, 10 Oct 2012 05:46:58 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=386</guid>
		<description><![CDATA[jQuery UI, die wohl bekannteste Erweiterung von jQuery, wurde am 08. Oktober in der Version 1.9.0 veröffentlicht. Dabei wurden die APIs von dem Akkordion- und Tabs-Widget und auch von den Position Eigenschaften überarbeitet. Zusätzlich wurden drei neue Widgets hinzugefügt. Die neue Version erfordert die jQuery Version 1.6 oder neuer. Menu Für das Menü-Widget wurde der Grundstein [...]]]></description>
				<content:encoded><![CDATA[<p>jQuery UI, die wohl bekannteste Erweiterung von jQuery, wurde am 08. Oktober in der Version 1.9.0 veröffentlicht. Dabei wurden die APIs von dem <a href="http://forum.jquery.com/topic/accordion-api-redesign">Akkordion</a>- und <a href="http://forum.jquery.com/topic/tabs-api-redesign">Tabs</a>-Widget und auch von den <a href="http://forum.jquery.com/topic/position-api-redesign">Position</a> Eigenschaften überarbeitet. Zusätzlich wurden drei neue Widgets hinzugefügt. Die neue Version erfordert die jQuery Version 1.6 oder neuer.<span id="more-386"></span></p>
<h2>Menu</h2>
<p>Für das Menü-Widget wurde der Grundstein bereits in der Version 1.8 gelegt. Es war in dem Autovervollständigungs-Widget untergebracht. Ab der Version 1.9 kann man dieses auch für das Projekt nutzen. Auf der offiziellen Seite findet ihr <a href="http://jqueryui.com/menu/">Demos</a> und die <a href="http://api.jqueryui.com/menu/">Dokumentation</a>.</p>
<h2>Spinner</h2>
<p>Das Spinner-Widget sieht auf den ersten Blick wie das Standard-Widget von einem HTML5 input-Element vom Typ »number« aus. Auf der rechten Seite des Feldes werden einfach zwei Pfeile, nach unten und oben, ausgegeben. Mit diesen kann man den Wert des Feldes verändern. Ich muss zugeben, dass mir der Nutzen nicht gleich offensichtlich erschien. Schließlich kann man die neuen HTML5 „input types“ verwenden. Der Vorteil des Spinner-Widgets ist, dass man den Wert auch mit dem Mausrad und per Tastatur (hoch / runter) ändern kann und man in das Feld auch Währungen unterbringen kann. Schaut es euch einfach mal an. Auf der offiziellen Seite findet ihr <a href="http://jqueryui.com/spinner/">Demos</a> und die <a href="http://api.jqueryui.com/spinner/">Dokumentation</a>.</p>
<h2>Tooltip</h2>
<p>Jetzt hat man auch direkt mit jQuery UI die Möglichkeit Tooltips einzublenden. Es ist kein weiteres Plugin mehr nötig. Für das Ein- und Ausblenden kann dabei auf die jQuery UI Effekte zurückgegriffen werden. Auf der offiziellen Seite findet ihr <a href="http://jqueryui.com/tooltip/">Demos</a> und die <a href="http://api.jqueryui.com/tooltip/">Dokumentation</a>.</p>
<p>Weitere Änderungen könnt ihr dem <a href="http://blog.jqueryui.com/2012/10/jquery-ui-1-9-0/">offiziellen Artikel</a> entnehmen.</p>
<h2>Relaunch der Webseite</h2>
<p>Die Webseite von jQuery UI wurde überarbeitet und hat ein neues Design bekommen. Ich sage nur, dass es mir kein bisschen gefällt. Furchtbar!</p>
<p>Wie ist eure Meinung zu dem Relaunch? Top oder Flop?</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/HyGhKxjV5Lo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/jquery-ui-1-9-0-veroeffentlicht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/jquery-ui-1-9-0-veroeffentlicht/</feedburner:origLink></item>
		<item>
		<title>Google Maps API Demos aus dem Hause Google</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/q9our4Vcv0w/</link>
		<comments>http://www.starstormdesign.de/google-maps-api-demos-aus-dem-hause-google/#comments</comments>
		<pubDate>Mon, 08 Oct 2012 06:00:56 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google Maps]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=383</guid>
		<description><![CDATA[Google Map hat sich wie ein Lauffeuer verbreitet. Eine Zeit lang wollten alle eine „persönliche“ Karte haben. Auf einer Kontaktseite in einem kleinen Container oder gleich flächendeckend im Hintergrund. Maps waren voll in! Langsam hat sich der Hype, meiner Meinung nach, gelegt und das Verlangen nach Maps ist etwas zurückgegangen. Dabei kann ein Entwickler mit [...]]]></description>
				<content:encoded><![CDATA[<p>Google Map hat sich wie ein Lauffeuer verbreitet. Eine Zeit lang wollten alle eine „persönliche“ Karte haben. Auf einer Kontaktseite in einem kleinen Container oder gleich flächendeckend im Hintergrund. Maps waren voll in! Langsam hat sich der Hype, meiner Meinung nach, gelegt und das Verlangen nach Maps ist etwas zurückgegangen. Dabei kann ein Entwickler mit dem Google Maps API nicht nur einfache Karten mit Info-Dialogen erstellen.<span id="more-383"></span></p>
<p>Um das API bei den Entwicklern etwas zu bewerben, wurde <a href="http://googlegeodevelopers.blogspot.de/2012/10/morethanamap.html">von Google eine neue Webseite</a>, unter der Domain <a href="http://www.morethanamap.com/">www.morethanamap.com</a>, mit zahlreichen Demos veröffentlicht. Dabei zeigen die Demos alle möglichen Funktionen, die man als Entwickler gerne gebrauchen könnte, wenn man ein neues Projekt plant, wo man Maps sinnvoll einsetzen könnte. Zum Beispiel werden alle Flüge von und nach London in einem Zeitraffer angezeigt. Weitere Demos befassen sich mit den Themen Routenberechnung, Orte, Bevölkerungsentwicklung der Welt und einiges mehr.</p>
<p>Auf jeden Fall eine sehr gelungene Webseite, mit wirklich interessanten Demos. Also ein Surftipp von mir.</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/q9our4Vcv0w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/google-maps-api-demos-aus-dem-hause-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/google-maps-api-demos-aus-dem-hause-google/</feedburner:origLink></item>
		<item>
		<title>NetBeans 7.3 Beta kann getestet werden</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/iedWuDuV4uQ/</link>
		<comments>http://www.starstormdesign.de/netbeans-7-3-beta-kann-getestet-werden/#comments</comments>
		<pubDate>Fri, 05 Oct 2012 08:03:18 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=371</guid>
		<description><![CDATA[Gestern Morgen erreichte mich der NetBeans Newsletter mit einem Hinweis, dass NetBeans 7.3 Beta verfügbar sei. Also wurde die Software gleich heruntergeladen und installiert. Schließlich berichte ich immer über das Neueste in der Entwicklung dieser IDE. Wie das bei NetBeans so üblich ist, wurde die neue Version neben dem aktuellen Release auf der Festplatte installiert. [...]]]></description>
				<content:encoded><![CDATA[<p>Gestern Morgen erreichte mich der NetBeans Newsletter mit einem Hinweis, dass <a href="http://dlc.sun.com.edgesuite.net/netbeans/7.3/beta/">NetBeans 7.3 Beta verfügbar</a> sei. Also wurde die Software gleich heruntergeladen und installiert. Schließlich berichte ich immer über das Neueste in der Entwicklung dieser IDE.<span id="more-371"></span></p>
<p>Wie das bei NetBeans so üblich ist, wurde die neue Version neben dem aktuellen Release auf der Festplatte installiert. Das lief wie immer absolut problemlos. Der Vorteil an einer parallelen Installation ist, dass man jederzeit die frühere Version benutzen kann, falls man nicht zufrieden ist oder es zu Problemen kommt.</p>
<p>Nach der Installation kommt auch in der Version 7.3 die Abfrage, ob man die Einstellungen aus der früheren Version übernehmen möchte. Klar doch! Lief auch problemlos. Nur die Position der Werkzeuge wurde wie immer durcheinandergebracht. Das liegt aber wohl auch daran, dass man diese Einstellungen auch nicht exportieren kann. Schade eigentlich. Aber das kann man in wenigen Minuten wieder einstellen.</p>
<h2>Features</h2>
<h3>HTML, CSS und JavaScript</h3>
<p>In der Version 7.3 wurde vieles verändert. So hat ein überarbeiteter JavaScript Editor den Weg in diese Version gefunden.Die Entwickler haben es leider nicht mehr geschafft diesen vor dem Release von 7.2 fertigzustellen. Somit gibt es jetzt auch eine Autovervollständigung in jQuery. Es werden bei den Selektoren sogar die vorhandenen Elemente, IDs und Klassen angeboten.<br />
Ich war auch sehr erfreut zu sehen, dass der Support von Twig-Templates weiter verbessert wurde. Inzwischen bietet NetBeans auch eine Autovervollständigung für die Tags an.</p>
<p><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-twig.png"><img src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-twig.png" alt="" title="Twig Unterstützung in NetBeans 7.3" width="680" height="301" class="aligncenter size-full wp-image-382" /></a></p>
<p>Ihr könnt jetzt gleich ein neues Projekt von Typ »HTML5 Application« erstellen. Und da war ich wirklich sehr überrascht! Ihr könnt nämlich gleich ein vordefiniertes Template aus dem Archive wählen oder online ein Template auswählen. Dabei stehen euch folgende Templates zur Verfügung: AngularJS Seed, Initializr: Bootstrap, Initializr: Clasic, Initializr: Responsive, HTML5 Boilerplate v4.0.0, HTML5 Boilerplate v3.0.2, Twitter Bootstrap und Mobile Boilerplate.</p>
<p><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-html5-projekt.png"><img class="aligncenter size-medium wp-image-376" title="HTML5 Projekte anlegen in NetBeans 7.3" src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-html5-projekt-680x375.png" alt="" width="680" height="375" /></a><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-template.png"><img class="aligncenter size-medium wp-image-380" title="Templates für HTML5 Applikationen bestimmen in NetBeans 7.3" src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-template-680x375.png" alt="" width="680" height="375" /></a></p>
<p>Anschließend habt ihr sogar die Möglichkeit eine oder mehrere JavaScript Bibliotheken auszuwählen, die gleich in das gewünschte Verzeichnis des Projekts heruntergeladen werden. Dabei stehen, geschätzt, 40 Bibliotheken zur Auswahl. Darunter CSS3Pie, History.js, jQuery, jQuery UI, Knockout, Modernizr, MooTools, Prefixfree, Socket.io, underscore.js und viele mehr. Also richtig cooles Zeug. Kein nerviges manuelles herunterladen der Bibliotheken mehr.</p>
<p><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-js-libs.png"><img class="aligncenter size-medium wp-image-379" title="JavaScript Bibliotheken einbinden mit NetBeans 7.3" src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-js-libs-680x378.png" alt="" width="680" height="378" /></a></p>
<p>Außerdem sind es oft die kleinen Dinge im Leben, die einen glücklich machen. Der Editor hat schon immer die öffnende, bzw. schließende, Tags hervorgehoben. Doch was war, als das öffnende Element nicht mehr im sichtbaren Bereich war? Richtig: Nichts! Man musste scrollen und gucken, welches Tag gelb hervorgehoben ist. Auch da haben die Entwickler Abhilfe geschaffen. In der Version 7.3 wird das öffnende Tag in einem Overlay am oberen Rand eingeblendet, zusammen mit all seinen Attributen!</p>
<p><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-html-open-tag.png"><img class="aligncenter size-medium wp-image-377" title="Öffnendes Tag Einblendung in NetBeans 7.3" src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-html-open-tag-680x286.png" alt="" width="680" height="286" /></a></p>
<p>Zusätzlich könnt ihr, im HTML definierten, neue IDs und Klassen per Tastenkombination in die CSS-Datei übertragen. Dann braucht ihr die ID oder Klasse nur noch anzuklicken und ihr landet in der CSS-Datei bei der Definition.</p>
<p><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-generate-css-rule.png"><img class="aligncenter size-full wp-image-375" title="Neue CSS IDs und Klasse Generieren in NetBeans 7.3" src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-generate-css-rule.png" alt="" width="680" height="300" /></a></p>
<p>Was ganz Großes ist die neue Möglichkeit JavaScript zu debuggen. Die Entwickler von NetBeans haben dazu eine Erweiterung für Google Chrome erstellt, die vieles vereinfacht:</p>
<ul>
<li>Beim Speichern der Datei wird der Browser automatisch aktualisiert.</li>
<li>Änderungen an CSS werden sofort im Browser angezeigt.</li>
<li>Und einiges mehr.</li>
</ul>
<p>Ich muss aber zugeben, dass ich diese Funktion noch nicht testen konnte. Aber sobald ich Zeit dazu finde, werde ich davon berichten. <img src='http://www.starstormdesign.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-chrome-plugin.png"><img class="aligncenter size-full wp-image-373" title="Chrome Erweiterung in NetBeans 7.3" src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-chrome-plugin.png" alt="" width="556" height="219" /></a></p>
<p>Auch der Support von der Template-Engine »Smarty« wurde weiter verbessert. So wurde der Parser verfeinert und warnt bei fehlenden Tags. Weiter werde ich auf das Thema nicht eingehen, da ich selber nicht mit »Smarty« arbeite und somit nicht viel testen kann.</p>
<h3>PHP</h3>
<p>Auch bei der Arbeit mit PHP hat sich einiges verändert. Es wurde ein Parser für Annotations gebaut, der die Namensräume berücksichtigt. Damit sollen die <a href="http://www.starstormdesign.de/netbeans-7-2-beta-erschienen/#fix-uses-bug" title="NetBeans 7.2 Beta erschienen">Probleme mit Symfony 2 und Doctrine 2</a> vorgebeugt werden.</p>
<p>Auch der <a href="http://getcomposer.org/">Composer</a> hat den Einzug in NetBeans 7.3 gefunden. Man muss also nicht mehr über die Konsole das Update, oder Ähnliches, ausführen. Ein simpler Rechtsklick genügt. (Auch wenn man sich darüber streiten kann, was tatsächlich schneller ist.)</p>
<p><a href="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-composer.png"><img class="aligncenter size-medium wp-image-374" title="Composer Unterstützung in NetBeans 7.3" src="http://www.starstormdesign.de/wp-uploads/2012/10/netbeans-7-3-composer-675x400.png" alt="" width="675" height="400" /></a></p>
<h3>Allgemeines</h3>
<p>Die Entwickler haben jetzt die Möglichkeit kürzlich geschlossene Dateien, über ein Tastaturkürzel, zu öffnen. Ähnlich wie das bei den kürzlich geschlossenen Tabs im Firefox und Chrome ist. Nur wurde hier als Tastaturkürzel <em>Strg + Alt + T</em> gewählt, was bei Ubuntu die Konsole öffnet. Es lässt sich auch sehr schnell, unter <em>Tools » Options » Keymap</em>, ein anderes Kürzel auswählen.</p>
<h2>Fazit</h2>
<p>Ich arbeite in letzter Zeit sehr viel mit JavaScript und Twig und deswegen kommt für mich die Beta Version von NetBeans wie gerufen! Ich muss sagen, dass die Version, für eine Beta, sehr stabil läuft und ich sehr glücklich damit bin. Ich konnte beim eintägigen Arbeiten keine Probleme feststellen. Da kann man sich schon auf das fertige Produkt freuen. <img src='http://www.starstormdesign.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="message info">
<strong>Quellen und weiterführende Informationen</strong></p>
<ul>
<li><a href="http://netbeans.org/community/releases/73/?intcmp=925655">NetBeans IDE 7.3 Beta Release Information</a></li>
<li><a href="http://netbeans.org/community/releases/73/relnotes.html">NetBeans IDE 7.3 Beta Release Notes</a></li>
<li><a href="http://netbeans.org/kb/docs/intro-screencasts.html">NetBeans IDE 7.3 Beta Screencasts</a></li>
</ul>
</div>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/iedWuDuV4uQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/netbeans-7-3-beta-kann-getestet-werden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/netbeans-7-3-beta-kann-getestet-werden/</feedburner:origLink></item>
		<item>
		<title>Meine Top 8 WordPress-Plugins</title>
		<link>http://feedproxy.google.com/~r/starstormdesign/~3/mWEJsUypXIw/</link>
		<comments>http://www.starstormdesign.de/meine-top-8-wordpress-plugins/#comments</comments>
		<pubDate>Wed, 19 Sep 2012 07:55:31 +0000</pubDate>
		<dc:creator>Alexander Bogomolov</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.starstormdesign.de/?p=358</guid>
		<description><![CDATA[Nachdem Ellen von Elmastudio und Matthias Pabst ihre Top 10 WordPress-Plugins vorgestellt haben, möchte auch ich mich zum Thema äußern. Ich ich habe einige Plugins, die wirklich bei fast jeder WordPress Installation dabei sind. Diese unterscheiden sich teilweise etwas von den bereits vorgestellten Plugins. 1. Antispam Bee Das Plugin von Sergej Müller gehört fast bei [...]]]></description>
				<content:encoded><![CDATA[<p>Nachdem <a href="http://www.elmastudio.de/wordpress/meine-top-10-wordpress-plugins/">Ellen von Elmastudio</a> und <a href="http://matthiaspabst.de/meine-top-10-wordpress-plugins/">Matthias Pabst</a> ihre Top 10 WordPress-Plugins vorgestellt haben, möchte auch ich mich zum Thema äußern. Ich ich habe einige Plugins, die wirklich bei fast jeder WordPress Installation dabei sind. Diese unterscheiden sich teilweise etwas von den bereits vorgestellten Plugins.<span id="more-358"></span></p>
<h2>1. Antispam Bee</h2>
<p>Das <a href="http://wordpress.org/extend/plugins/antispam-bee/">Plugin</a> von Sergej Müller gehört fast bei allen zum Standard. Es schützt WordPress vor Spam und das mit sehr großem Erfolg und ich dabei noch unbedenklich für die deutschen Benutzer.</p>
<h2>2. AddQuicktag</h2>
<p>Mit dem <a href="http://wordpress.org/extend/plugins/addquicktag/">Plugin</a> von Frank Bültge lassen sich im WordPress Editor weitere Buttons für die eigenen Shortcodes anlegen. Eine wirklich einfache und schnelle Sache. Das coolste Feature ist wohl, dass man die Einstellungen exportieren und somit schnell auf andere Installationen übertragen kann.</p>
<h2>3. Feed Delay</h2>
<p>Dieses <a href="http://wordpress.org/extend/plugins/feed-delay/">Plugin</a> unterdrückt die sofortige Veröffentlichung des Feeds. Ich neige leider dazu viele Fehler erst nach der Veröffentlichung zu merken und zu korrigieren. Dank Feed Delay bleiben die Fehler den Feed-Lesern erspart. Das Plugin wurde aber seit Ewigkeiten nicht mehr upgedatet, somit würde ich mich über eine Alternative sehr freuen.</p>
<h2>4. Google Authenticator</h2>
<p>Sicherheit geht immer vor Bequemlichkeit! Mit diesem <a href="http://wordpress.org/extend/plugins/google-authenticator/">Plugin</a> habe ich die Zwei Faktor-Authentifizierung auch in meinen Blogs. Wie bei Google und Dropbox muss man zu dem Benutzernamen und Passwort immer noch das generierte Token angeben. Weiterer Vorteil dieses Plugins ist, dass die Funktion sich pro Benutzer aktivieren lässt. So können sich Gäste bequem ohne Token anmelden, während die Admins ohne Token nicht rein kommen.</p>
<h2>5. Limit Login Attempts</h2>
<p><a href="http://wordpress.org/extend/plugins/limit-login-attempts/">Limit Login Attempts</a> sperrt den Benutzer nach mehreren fehlerhaften Login-Versuchen einfach für eine bestimmte Zeit aus. Nach mehreren Sperren kann eine längere Sperrzeit definiert werden. Alle Parameter sind dabei frei einstellbar. Dadurch kann man wenigstens die vielen Bots vom „Bruteforcen“ abhalten. Das Plugin verwende ich aber nur da, wo der Google Authenticator nicht installiert ist.</p>
<h2>6. WordPress Backup to Dropbox</h2>
<p>Das <a href="http://wordpress.org/extend/plugins/wordpress-backup-to-dropbox/">Plugin</a> speichert in regelmäßigen Abständen gewünschte Dateien der WordPress Installation inklusive der Datenbank in der <a href="http://db.tt/9BGnLTyf">Dropbox</a>*. Eine, aus meiner Sicht, sehr bequeme Backup-Lösung.</p>
<h2>7. WordPress SEO by Yoast</h2>
<p>Dies ist ein super <a href="http://wordpress.org/extend/plugins/wordpress-seo/">SEO Plugin</a> das ich in vielen Installationen verwende. Erfüllt eigentlich alle meine Wünsche und erzeugt sogar eine XML-Sitemap, sodass weitere Plugins entfallen können.</p>
<h2>8. WP Permalauts Extended</h2>
<p>Das <a href="http://wordpress.org/extend/plugins/wp-permalauts-extended/">Plugin</a> schreibt die deutschen Umlaute um, sodass die URLs korrekt erzeugt werden.</p>
<p>Um ehrlich zu sein, habe ich kaum andere Plugins im Einsatz.<br />
Was habt ihr für Plugins im Einsatz und welche könntet ihr mir empfehlen?</p>
<img src="http://feeds.feedburner.com/~r/starstormdesign/~4/mWEJsUypXIw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.starstormdesign.de/meine-top-8-wordpress-plugins/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.starstormdesign.de/meine-top-8-wordpress-plugins/</feedburner:origLink></item>
	</channel>
</rss>
