<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.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/" version="2.0">

<channel>
	<title>Emanuel Kluge</title>
	
	<link>http://www.emanuel-kluge.de</link>
	<description>Zeitgenössisches Web-Design aus Hannover</description>
	<lastBuildDate>Sat, 28 Apr 2012 16:19:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blog_ek" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blog_ek" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><item>
		<title>Bookmarks for April 24th</title>
		<link>http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-24th-through-april-28th/</link>
		<comments>http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-24th-through-april-28th/#comments</comments>
		<pubDate>Sat, 28 Apr 2012 10:00:23 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Bookmarks]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1612</guid>
		<description><![CDATA[These are my links for April 24th: Postgres.app &#124; the easiest way to run PostgreSQL on the Mac datalist experiment &#8211; The HTML5 element andtan/node-pad &#8211; DualShock3-Controller-Library for Node.js rice - openDatabase-wrapper in JavaScript iScroll 4 Coding for the Mobile Web Verwandte Beiträge: Bookmarks for April 23rd These are my links for April 23rd: HTML [...]]]></description>
			<content:encoded><![CDATA[<p>These are my links for April 24th:</p>
<ul>
<li><a href="http://postgresapp.com/">Postgres.app | the easiest way to run PostgreSQL on the Mac</a> </li>
<li><a href="http://demo.agektmr.com/datalist/">datalist experiment &ndash; The HTML5  element</a></li>
<li><a href="https://github.com/andtan/node-pad">andtan/node-pad &ndash; DualShock3-Controller-Library for Node.js</a></li>
<li><a href="http://rice.jscraft.org/#rice">rice - openDatabase-wrapper in JavaScript</a></li>
<li><a href="http://cubiq.org/iscroll-4">iScroll 4</a></li>
<li><a href="http://arandomurl.com/2011/03/16/coding-for-the-mobile-web.html">Coding for the Mobile Web</a></li>
</ul>
<hr /><p>Verwandte Beiträge:<ul>
<li><a href='http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-23rd-through-april-24th/' rel='bookmark' title='Bookmarks for April 23rd'>Bookmarks for April 23rd</a> <small>These are my links for April 23rd: HTML KickStart -...</small></li>
<li><a href='http://www.emanuel-kluge.de/neuigkeiten/backbone-fundamentals-ein-fundierter-einstieg-in-das-thema-backbone-js/' rel='bookmark' title='„Backbone Fundamentals“ – Ein fundierter Einstieg in das Thema Backbone.js'>„Backbone Fundamentals“ – Ein fundierter Einstieg in das Thema Backbone.js</a> <small>Wer hier gelegentlich mitliest, wird eventuell mitbekommen haben, dass ich...</small></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-24th-through-april-28th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bookmarks for April 23rd</title>
		<link>http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-23rd-through-april-24th/</link>
		<comments>http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-23rd-through-april-24th/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 20:01:27 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Bookmarks]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1609</guid>
		<description><![CDATA[These are my links for April 23rd: HTML KickStart - Ultra&#8211;Lean HTML Building Blocks for Rapid Website Production - KickStart your Website Production - 99Lime.com mod_rewrite Cheat Sheet crypto-js - JavaScript implementations of standard and secure cryptographic algorithms - Google Project Hosting Verwandte Beiträge: Bookmarks for April 24th These are my links for April 24th: [...]]]></description>
			<content:encoded><![CDATA[<p>These are my links for April 23rd:</p>
<ul>
<li><a href="http://www.99lime.com/">HTML KickStart - Ultra&ndash;Lean HTML Building Blocks for Rapid Website Production - KickStart your Website Production - 99Lime.com</a></li>
<li><a href="http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/">mod_rewrite Cheat Sheet</a></li>
<li><a href="http://code.google.com/p/crypto-js/">crypto-js - JavaScript implementations of standard and secure cryptographic algorithms - Google Project Hosting</a></li>
</ul>
<hr /><p>Verwandte Beiträge:<ul>
<li><a href='http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-24th-through-april-28th/' rel='bookmark' title='Bookmarks for April 24th'>Bookmarks for April 24th</a> <small>These are my links for April 24th: Postgres.app | the...</small></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/bookmarks/bookmarks-for-april-23rd-through-april-24th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>„B“ für Blogs</title>
		<link>http://www.emanuel-kluge.de/off-topic/b-fuer-blogs-cdu/</link>
		<comments>http://www.emanuel-kluge.de/off-topic/b-fuer-blogs-cdu/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 18:11:43 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Neuigkeiten]]></category>
		<category><![CDATA[Off-Topic]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1555</guid>
		<description><![CDATA[In einem neuerlichen Anlauf zur Novellierung des Jugendmedienstaatsvertrages (Positionspapier [PDF]) kann der Medienpolitische Expertenkreis der CDU Deutschland mit einem Vorschlag aufwarten, der in punkto Absurdität sicherlich seinesgleichen sucht: Neben den Kennzeichnungen für die Altersstufen 6, 12, 16 und 18 soll es eine weitere Kennzeichnung für Blogs geben &#8211; das &#8220;B&#8221;. Dieser Vorschlag kann nur von [...]]]></description>
			<content:encoded><![CDATA[<p>In einem neuerlichen Anlauf zur Novellierung des Jugendmedienstaatsvertrages (<a href="http://www.cdu.de/doc/pdfc/120305-jugendmedienschutzstaatsvertrag.pdf">Positionspapier [<abbr title="Portable Data Format">PDF</abbr>]</a>) kann der Medienpolitische Expertenkreis der <abbr title="Christlich-demokratische Union">CDU</abbr> Deutschland mit einem Vorschlag aufwarten, der in punkto Absurdität sicherlich seinesgleichen sucht: Neben den Kennzeichnungen für die Altersstufen 6, 12, 16 und 18 soll es eine weitere Kennzeichnung für Blogs geben &ndash; das &ldquo;B&rdquo;.</p>
<p>Dieser Vorschlag kann nur von Politikern kommen, die in tagelangen Gremiumssitzungen mal wieder komplett den Bezug zur Realität verloren haben. Und grundsätzlich regt mich diese Anekdote auch zum Schmunzeln an. Allerdings gibt es zwei Punkte, die mir doch übel aufstoßen:</p>
<blockquote><p>[&hellip;] und ein System der regulierten Selbstregulierung auch für diese Mediengattung einzuführen.</p></blockquote>
<p>&ldquo;Regulierte Selbstregulierung&rdquo; &ndash; das dürfte wohl die paternalistische Herangehensweise an die Thematik sein. Allerdings sehr wohlwollend &ndash; natürlich kriegen &ldquo;die Blogger&rdquo; so etwas wie Selbstregulierung nicht hin. Trotzdem dürfen sie sich ein bißchen ausprobieren. Weil sie das mögen. Vater Staat korrigiert hinterher nochmal kräftig nach eigenem Gutdünken. &hellip;das ist der blanke Hohn.</p>
<blockquote><p>In Zukunft sollten die Blogger dann eigenverantwortlich die Reputation der Kennzeichnung &ldquo;B&rdquo; hochhalten, indem sich die Szene selbst reguliert, <abbr title="zum Beispiel">z. B.</abbr> durch das Instrument des &ldquo;Crowd-Sourcing&rdquo;.</p></blockquote>
<p>Was hier in meinen Augen implizit zum Ausdruck kommt, ist, dass Inhalte ab 18 minderwertiger Qualität sind. So etwas unverblümt zu behaupten ist hochgradig ignorant und unverschämt. Und wie die Regulierung der Selbstregulierung durch die <abbr title="sogenannte">sog.</abbr> &ldquo;Szene&rdquo; ausfallen dürfte, kann sich jeder vorstellen. Ich vermute allerdings, dass die Verantwortlichen für derlei Details kein Auge hatten im Freudentaumel über das gelungene Buzzwording (siehe &ldquo;Crowd-Sourcing&rdquo;).</p>
<p>Alles in allem frage ich mich mal wieder, warum die Herrschaften Politiker nicht mal fünf Minuten Pause machen und an die frische Luft gehen können, anstatt sich während endloser Sitzungen in hirnlose Abstrusitäten zu verrennen?!</p>
<p>Gefunden bei <a href="http://netzpolitik.org/2012/neue-cdu-idee-b-fur-blogs/">netzpolitik.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/off-topic/b-fuer-blogs-cdu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autoloader-Funktionalität in Require.js</title>
		<link>http://www.emanuel-kluge.de/tutorial/autoloader-funktionalitat-in-require-js/</link>
		<comments>http://www.emanuel-kluge.de/tutorial/autoloader-funktionalitat-in-require-js/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 15:45:34 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Backbone.js]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1536</guid>
		<description><![CDATA[Demo &#124; Download Wenn aus dem &#8220;One-Pager&#8221; ein &#8220;Multi-One-Pager&#8221; wird, kann sich ein gewisser Overhead bezüglich der geladenen Skripte einstellen. Angenommen man baut eine Web-App, die aus vielen Einzelseiten besteht, und jede Einzelseite stellt für sich einen &#8220;One-Pager&#8221; dar, welcher nicht zwingend beim Besuch eines Nutzers aufgerufen wird. Dann werden &#8211; benutzt man Require.js zum [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.emanuel-kluge.de/wp-content/uploads/2012/03/requirejs-autoloader.jpg" alt="Require.js-Autoloader" title="Require.js-Autoloader" width="480" height="200" class="aligncenter size-full wp-image-1537" /></p>
<div class="dedo"><a href="http://www.emanuel-kluge.de/demo/requirejs-autoloader/" title="Demo &mdash; Autoloader-Funktionalität in Require.js" rel="nofollow">Demo</a> | <a href="http://www.emanuel-kluge.de/wp-content/uploads/2012/03/requirejs-autoloader.zip" title="Download &mdash; Autoloader-Funktionalität in Require.js" lang="en">Download</a></div>
<p>Wenn aus dem &ldquo;One-Pager&rdquo; ein &ldquo;Multi-One-Pager&rdquo; wird, kann sich ein gewisser Overhead bezüglich der geladenen Skripte einstellen. Angenommen man baut eine Web-App, die aus vielen Einzelseiten besteht, und jede Einzelseite stellt für sich einen &ldquo;One-Pager&rdquo; dar, welcher nicht zwingend beim Besuch eines Nutzers aufgerufen wird. Dann werden &ndash; benutzt man Require.js zum Laden der Skripte &ndash; beim initialen Aufruf der Web-App alle Skripte geladen, auch wenn sie letztlich gar nicht benötigt werden.</p>
<p>In diesem Fall wäre es praktischer, mehrere Require.js-Instanzen anzulegen und durch einen zentralen Router gesteuert bei Bedarf aufzurufen. Dieses Szenario habe ich einmal mithilfe von Backbone.js nachgestellt. Die &ldquo;Web-App&rdquo; besteht aus diversen Einzelseiten, welche bestimmte jQuery-<abbr title="User Interface">UI</abbr>-Widgets beinhalten. Außerdem gibt es eine Startseite mit einem kurzen Erklärungstext. Ziel ist es, den Startseiteninhalt und die jQuery-<abbr title="User Interface">UI</abbr>-Widgets nur bei Bedarf zu laden.</p>
<p>Dafür wird beim Aufruf der Seite lediglich eine fundamentale Require.js-Instanz aufgerufen, die die global benötigten Skripte &ndash; jQuery, Underscore, Backbone, den jQuery-<abbr title="User Interface">UI</abbr>-Core und einen Observer &ndash; laden und einen Backbone-Router initialisieren, der die Autoloader-Funktionalität zur Verfügung stellt.</p>
<p><script>
PRETTY_PRINT = true;
</script></p>
<pre class="prettyprint lang-js">
<dfn class="nocode">JavaScript</dfn>
<code class="block">
require(['jQuery', 'Underscore', 'Backbone', 'Observer'], function ($, _, Backbone, Observer) {

	var Router = Backbone.Router.extend({

		routes : {
			':site/*sub' : 'autoLoad'
		},

		initialize : function () {
			location.hash = location.hash || 'index/';

			Backbone.history.start();
		},

		autoLoad : function (site, sub) {
			var path = 'sites/' + site + '/app';

			require([path], function (App) {
				App.init({
					subPages : sub
				});
			});
		}
	}),

	router = new Router();

});
</code>
</pre>
<p>Der Router prüft als erstes, ob ein Location-Hash gesetzt ist. Ist dies nicht der Fall, wird der Hash &ldquo;/index/&rdquo; gesetzt, was die Initialisierung der Startseite einleitet. Weiterhin wartet der Router auf Änderungen des Location-Hash und führt im Bedarfsfall die &ldquo;autoLoad&rdquo;-Funktion aus, welche das gewünschte Modul/die gewünschte Seite lädt. Das &ldquo;*sub&rdquo; im &ldquo;routes&rdquo;-String des Routers stellt sicher, dass auch beim initialen Aufruf von Unter-Unterseiten die Autoload-Funktion tut, was sie soll.</p>
<p>Das vom Autoloader geladene Skript übergibt eine &ldquo;init&rdquo;-Funktion &ndash; dabei kann es sich, je nachdem ob die Seite lediglich statischen Inhalt hat oder tiefergreifende Funktionalität besitzt, entweder um eine Backbone-View- oder eine Backbone-Router-Instanz handeln.</p>
<pre class="prettyprint">
<dfn class="nocode">JavaScript</dfn>
<code class="block">
var init = function () {
		return new View();
	};

return {
	init : init
};
</code>
</pre>
<pre class="prettyprint">
<dfn class="nocode">JavaScript</dfn>
<code class="block">
var init = function (args) {
		return new Router(args);
	};

return {
	init : init
};
</code>
</pre>
<p>Das Datepicker-Modul habe ich als Beispiel für eine zusätzliche Router-Instanz gewählt. Inhaltlich zugegebenermaßen etwas mau, wird doch deutlich, dass auf diese Weise die Funktionalität der Web-App auch auf Unterebenen gewährleistet werden kann, ohne dass dies beim initialen Aufruf der Seite angemeldet <abbr title="beziehungsweise">bzw.</abbr> geladen werden muss.</p>
<p>Beobachtet man den Inhalt des <abbr title="Hypertext Markup Language">HTML</abbr>-Head beim Durchklicken der Seite im Firebug <abbr title="beziehungsweise">bzw.</abbr> Web Inspector, kann man sehr schön verfolgen, wie die jeweils benötigten Module und Widgets sukzessive nachgeladen werden.</p>
<p>Ich hoffe, mein Versuch, den Sachverhalt hier darzustellen, ist einigermaßen verständlich. Über Anregungen, Anmerkungen und Fragen freue ich mich immer. Sollte diesbezüglich Bedarf bestehen, kann ich nur dazu ermutigen, regen Gebrauch von der Kommentar-Funktion zu machen.</p>
<p>Außerdem sei darauf hingewiesen, dass der Code zur schnellen Inspektion auch <a href="https://github.com/herschel666/Require.js-Autoloader">auf GitHub zur Verfügung steht</a>.</p>
<hr /><p>Verwandte Beiträge:<ul>
<li><a href='http://www.emanuel-kluge.de/tutorial/backbone-js-tutorial-die-merkliste/' rel='bookmark' title='Backbone.js-Tutorial: Die Merkliste'>Backbone.js-Tutorial: Die Merkliste</a> <small>...</small></li>
<li><a href='http://www.emanuel-kluge.de/html-css/clipboard-digitales-notizbrett-node-js-backbone-js/' rel='bookmark' title='„Clipboard“ – Digitales Notizbrett mit Node.js und Backbone.js'>„Clipboard“ – Digitales Notizbrett mit Node.js und Backbone.js</a> <small>Um etwas Zerstreuung vom Uni-Lernstress zu bekommen, habe ich einen...</small></li>
<li><a href='http://www.emanuel-kluge.de/tutorial/animierte-image-caption-mit-jquery-unter-wordpress/' rel='bookmark' title='Animierte Image-Caption mit jQuery unter WordPress'>Animierte Image-Caption mit jQuery unter WordPress</a> <small>Demo | Download Google liebt es ja, wenn unter oder...</small></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/tutorial/autoloader-funktionalitat-in-require-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>„Clipboard“ – Digitales Notizbrett mit Node.js und Backbone.js</title>
		<link>http://www.emanuel-kluge.de/html-css/clipboard-digitales-notizbrett-node-js-backbone-js/</link>
		<comments>http://www.emanuel-kluge.de/html-css/clipboard-digitales-notizbrett-node-js-backbone-js/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 07:06:24 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Backbone.js]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Neuigkeiten]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1530</guid>
		<description><![CDATA[Um etwas Zerstreuung vom Uni-Lernstress zu bekommen, habe ich einen Ausflug in die bunte Node.js-Welt unternommen. Als Mittel zum Zweck diente mir dabei das digitale Notizbrett &#8220;Clipboard&#8221;. Serverseitig kommt das Application-Framework Express zum Einsatz. Gespeichert werden die Daten in einer MongoDB-Datenbank mithilfe von Mongoose. Client-seitig kommt die bewährte Kombo aus Underscore, Backbone und jQuery zum [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://clipboard.nodester.com/"><img src="http://www.emanuel-kluge.de/wp-content/uploads/2012/01/clipboard-node-js.gif" alt="Clipboard &ndash; Digitales Notizbrett mit Node.js und Backbone.js" title="Clipboard &ndash; Digitales Notizbrett mit Node.js und Backbone.js" width="480" height="249" class="aligncenter size-full wp-image-1531" /></a></p>
<p>Um etwas Zerstreuung vom Uni-Lernstress zu bekommen, habe ich einen Ausflug in die bunte <a href="http://nodejs.org/">Node.js</a>-Welt unternommen. Als Mittel zum Zweck diente mir dabei <a href="http://clipboard.nodester.com/">das digitale Notizbrett &ldquo;Clipboard&rdquo;</a>. Serverseitig kommt das <a href="http://expressjs.com/">Application-Framework Express</a> zum Einsatz. Gespeichert werden die Daten in einer MongoDB-Datenbank mithilfe von <a href="http://mongoosejs.com/">Mongoose</a>.</p>
<p>Client-seitig kommt die bewährte Kombo aus <a href="http://documentcloud.github.com/underscore/">Underscore</a>, <a href="http://documentcloud.github.com/backbone/">Backbone</a> und <a href="http://jquery.com/">jQuery</a> zum Einsatz. Für Ordnung sorgt überdies <a href="http://requirejs.org/">Require.js</a>, wobei ich auf folgenden Ansatz zurückgegriffen habe: <a href="https://github.com/thomasdavis/backbonetutorials/tree/gh-pages/examples/modular-backbone">Modular JavaScript &#038; Backbone.js</a>. Außerdem hat <a href="http://jqueryui.com/">jQueryUI</a> einen &ldquo;Gast-Auftritt&rdquo; und sorgt für die Draggability der Notizen.</p>
<p>Das Hosting übernimmt dankenswerterweise <a href="http://nodester.com/">Nodester</a>, die Daten werden bei <a href="https://mongohq.com/">MongoHQ</a> abgelegt. Defenitiv zwei sehr praktische Services.</p>
<p>(<a href="https://github.com/herschel666/clipboard">Clipboard-Code bei GitHub</a>)</p>
<hr /><p>Verwandte Beiträge:<ul>
<li><a href='http://www.emanuel-kluge.de/neuigkeiten/backbone-fundamentals-ein-fundierter-einstieg-in-das-thema-backbone-js/' rel='bookmark' title='„Backbone Fundamentals“ – Ein fundierter Einstieg in das Thema Backbone.js'>„Backbone Fundamentals“ – Ein fundierter Einstieg in das Thema Backbone.js</a> <small>Wer hier gelegentlich mitliest, wird eventuell mitbekommen haben, dass ich...</small></li>
<li><a href='http://www.emanuel-kluge.de/tutorial/backbone-js-tutorial-die-merkliste/' rel='bookmark' title='Backbone.js-Tutorial: Die Merkliste'>Backbone.js-Tutorial: Die Merkliste</a> <small>...</small></li>
<li><a href='http://www.emanuel-kluge.de/html-css/ajax-wordpress-theme-backbone-js/' rel='bookmark' title='Studie &ldquo;Backboned&rdquo;: AJAX-powered WordPress-Theme mit Backbone.js'>Studie &ldquo;Backboned&rdquo;: AJAX-powered WordPress-Theme mit Backbone.js</a> <small>Demo | Download Um mir gelegentlich etwas Zerstreuung vom Lernen...</small></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/html-css/clipboard-digitales-notizbrett-node-js-backbone-js/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>„Backbone Fundamentals“ – Ein fundierter Einstieg in das Thema Backbone.js</title>
		<link>http://www.emanuel-kluge.de/neuigkeiten/backbone-fundamentals-ein-fundierter-einstieg-in-das-thema-backbone-js/</link>
		<comments>http://www.emanuel-kluge.de/neuigkeiten/backbone-fundamentals-ein-fundierter-einstieg-in-das-thema-backbone-js/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 11:44:18 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Backbone.js]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Neuigkeiten]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1514</guid>
		<description><![CDATA[Wer hier gelegentlich mitliest, wird eventuell mitbekommen haben, dass ich mich gerne mit dem JavaScript-MVC-Framework Backbone.js beschäftige. Von daher war meine Freude recht groß, als ich gewahr wurde, dass Addy Osmani höchstselbst sich dran gemacht hat, eine unter CC-Lizenz stehende Wissenssammlung zum Thema unter dem Namen &#8220;Backbone Fundamentals&#8221; zu scheiben. Diese behandelt die Basis-Themen und [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.emanuel-kluge.de/wp-content/uploads/2012/01/backbone-js.png" alt="Backbone.js &ndash; Logo" title="Backbone.js &ndash; Logo" width="480" height="119" class="aligncenter size-full wp-image-1515" /></p>
<p>Wer hier gelegentlich mitliest, wird eventuell mitbekommen haben, dass ich mich gerne mit dem <a href="http://documentcloud.github.com/backbone/" title="Backbone.js">JavaScript-<abbr title="Model-View-Controller">MVC</abbr>-Framework Backbone.js</a> beschäftige. Von daher war meine Freude recht groß, als ich gewahr wurde, dass <a href="http://addyosmani.com/" title="AddyOsmani.com | jQuery &amp; JavaScript Articles For The Community">Addy Osmani</a> höchstselbst sich dran gemacht hat, eine unter <abbr title="Creative Commons">CC</abbr>-Lizenz stehende Wissenssammlung zum Thema unter dem Namen <a href="https://github.com/addyosmani/backbone-fundamentals" title="Backbone Fundamentals">&ldquo;Backbone Fundamentals&rdquo;</a> zu scheiben.</p>
<p>Diese behandelt die Basis-Themen und gibt einen kurzen Einblick in das Thema Backbone.js. Des weiteren wird die Entwicklung einer &ldquo;<abbr title="Representational state transfer">REST</abbr>ful Application&rdquo; mithilfe von <a href="http://nodejs.org/" title="node.js">Node.js</a>, <a href="http://expressjs.com/" title="node web framework">Express</a>, <a href="http://mongoosejs.com/" title="Mongoose ODM">Mongoose</a> und <a href="http://www.mongodb.org/" title="MongoDB">Mongo<abbr title="Database">DB</abbr></a> beschrieben. Es folgt eine Einführung in das Thema &ldquo;Modular JavaScript&rdquo; im Kontext von Backbone.js, abgerundet durch konkrete Anwendungsszenarien. Anschließend wird das nicht uninteressante Thema Backbone.js in Kombination mit <a href="http://jquerymobile.com/" title="jQuery Mobile">jQuery Mobile</a> behandelt. Und zum Schluss steht Unit Testing mit dem Test-Framework <a href="http://pivotal.github.com/jasmine/" title="Jasmine: BDD for your JavaScript">Jasmine</a> auf der Agenda.</p>
<p>Alle Themen werden anhand der <a href="https://github.com/addyosmani/backbone-todo" title="backbone-todo">Backbone-Todo-Application</a> erläutert, so dass der praktische Einsatz der vorgestellten Techniken direkt ersichtlich wird. Meinem Empfinden nach entsteht mit &ldquo;Backbone Fundamentals&rdquo; eine sehr wertvolle, breit gefächerte Ressource, was das Thema Backbone.js anbelangt. Vielen Dank deshalb an Addy Osmani und <a href="https://github.com/addyosmani/backbone-fundamentals/contributors" title="Backbone Fundamentals &ndash; Contributors">allen weiteren</a>, die mitgeholfen haben.</p>
<p>Zum Schluss möchte ich jedoch auch anmerken, dass es sich bei &ldquo;Backbone Fundamentals&rdquo; nicht gänzlich um Einstiegslektüre handelt. Grundsätzlich sollte man ein Verständnis von JavaScript, <abbr title="Document Object Model">DOM</abbr>-Libraries im allgemeinen und Application Development in Ansätzen mitbringen, um sich der Lektüre der Basics zu widmen. Bei den weiterführenden Themen ist ein Grundverständnis der verwandten Frameworks und Techniken, die im Kontext von Backbone.js beleuchtet werden, sicherlich auch hilfreich.</p>
<p>Obwohl meiner Meinung nach auch nichts dagegen spricht, <abbr title="beispielsweise">bspw</abbr>. das Kapitel &ldquo;Modular JavaScript&rdquo; zum Anlass zu nehmen, sich endlich einmal mit der Materie auseinander zu setzen. Allerdings wird man in diesem Fall wohl nicht umhin kommen, begleitende Lektüre zu konsultieren.</p>
<hr /><p>Verwandte Beiträge:<ul>
<li><a href='http://www.emanuel-kluge.de/html-css/clipboard-digitales-notizbrett-node-js-backbone-js/' rel='bookmark' title='„Clipboard“ – Digitales Notizbrett mit Node.js und Backbone.js'>„Clipboard“ – Digitales Notizbrett mit Node.js und Backbone.js</a> <small>Um etwas Zerstreuung vom Uni-Lernstress zu bekommen, habe ich einen...</small></li>
<li><a href='http://www.emanuel-kluge.de/html-css/ajax-wordpress-theme-backbone-js/' rel='bookmark' title='Studie &ldquo;Backboned&rdquo;: AJAX-powered WordPress-Theme mit Backbone.js'>Studie &ldquo;Backboned&rdquo;: AJAX-powered WordPress-Theme mit Backbone.js</a> <small>Demo | Download Um mir gelegentlich etwas Zerstreuung vom Lernen...</small></li>
<li><a href='http://www.emanuel-kluge.de/tutorial/backbone-js-tutorial-die-merkliste/' rel='bookmark' title='Backbone.js-Tutorial: Die Merkliste'>Backbone.js-Tutorial: Die Merkliste</a> <small>...</small></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/neuigkeiten/backbone-fundamentals-ein-fundierter-einstieg-in-das-thema-backbone-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“Rollstuhlsport” – Android-App für DRS ist fertig</title>
		<link>http://www.emanuel-kluge.de/html-css/rollstuhlsport-android-app-fur-drs-ist-fertig/</link>
		<comments>http://www.emanuel-kluge.de/html-css/rollstuhlsport-android-app-fur-drs-ist-fertig/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 13:40:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Neuigkeiten]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1508</guid>
		<description><![CDATA[Der Deutsche Rollstuhl-Sportverband hat neuerdings eine Android-App, welche ich in meiner Rolle als Frontend-Developer bei w3design. entwickeln durfte. Die App wird zeitnah außerdem auch für das iPhone erscheinen. Was daran jedoch besonders interessant ist &#8211; abgesehen vom Erscheinen der App selbst &#8211;, ist die Tatsache, dass ich sowohl von Java, als auch von Objective-C nicht [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.emanuel-kluge.de/wp-content/uploads/2011/12/rollstuhlsport-android-app.gif" alt="Rollstuhlsport &ndash; Android-App des DRS" title="Rollstuhlsport &ndash; Android-App des DRS" width="480" height="255" class="aligncenter size-full wp-image-1509" /></p>
<p>Der <a href="http://www.drs.org/cms/">Deutsche Rollstuhl-Sportverband</a> hat neuerdings eine <a href="https://market.android.com/details?id=com.phonegap.drsapp">Android-App</a>, welche ich in meiner Rolle als Frontend-Developer bei <a href="http://www.w3design.de/">w3design.</a> entwickeln durfte. Die App wird zeitnah außerdem auch für das iPhone erscheinen.</p>
<p>Was daran jedoch besonders interessant ist &ndash; abgesehen vom Erscheinen der App selbst &ndash;, ist die Tatsache, dass ich sowohl von Java, als auch von Objective-C nicht den blassesten Schimmer habe. Vielmehr habe ich mich beim Entwickeln der App auf meine HTML-, CSS- und JavaScript-Kenntnisse verlassen. Möglich ist das durch <a href="http://phonegap.com/">PhoneGap</a>, ein Framework, das Web-Apps in native Apps umwandelt und dabei ein paar sinnvolle Hardware-APIs zur Verfügung stellt.</p>
<p>Für die App selbst, habe ich auf <a href="http://documentcloud.github.com/backbone/">Backbone.js</a> gesetzt, da es mir gute Möglichkeiten bot, einerseits die Fülle an unterschiedlichen Daten zu verarbeiten, und andererseits ein sehr umfangreichen &ldquo;One-Pager&rdquo; zu bauen, welcher aus einer index.html besteht und alle Unterseiten client-seitig rendert.</p>
<p>Ich kann Phonegap jedenfalls nur empfehlen und möchte noch auf <a href="http://www.lungojs.com/">LungoJS</a> hinweisen, welches bei kleineren Apps sicher gut mit Phonegap Hand in Hand geht.</p>
<hr /><p>Verwandte Beiträge:<ul>
<li><a href='http://www.emanuel-kluge.de/tutorial/bilder-mit-jquery-einblenden-wenn-sie-fertig-geladen-sind/' rel='bookmark' title='Bilder mit jQuery einblenden, wenn sie fertig geladen sind'>Bilder mit jQuery einblenden, wenn sie fertig geladen sind</a> <small>Das hier ist zwar eher im Bereich &quot;Spielerei&quot; anzusiedeln, aber...</small></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/html-css/rollstuhlsport-android-app-fur-drs-ist-fertig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daten sukzessive, asynchron laden mit dem Pub-Sub-Pattern</title>
		<link>http://www.emanuel-kluge.de/html-css/daten-sukzessive-asynchron-laden-mit-dem-pub-sub-pattern/</link>
		<comments>http://www.emanuel-kluge.de/html-css/daten-sukzessive-asynchron-laden-mit-dem-pub-sub-pattern/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 16:31:33 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1500</guid>
		<description><![CDATA[Derzeit bin ich mit dem Bau einer Web-App beschäftigt, die initial einen Haufen Daten asynchron laden soll. Dafür könnte ich zwar ganz einfach ein paar $.ajax-Funktionen nacheinander aufrufen, doch hat diese Methode ihre Nachteile: Es bestehen Abhängigkeiteen zwischen den zu ladenden Daten, so dass sicher gestellt sein muss, dass die Daten vom Typ A fertig [...]]]></description>
			<content:encoded><![CDATA[<p>Derzeit bin ich mit dem Bau einer Web-App beschäftigt, die initial einen Haufen Daten asynchron laden soll. Dafür könnte ich zwar ganz einfach ein paar $.ajax-Funktionen nacheinander aufrufen, doch hat diese Methode ihre Nachteile:</p>
<ol>
<li>Es bestehen Abhängigkeiteen zwischen den zu ladenden Daten, so dass sicher gestellt sein muss, dass die Daten vom Typ A fertig geladen sind, bevor das Laden der Daten vom Typ B startet <abbr title="beziehungsweise">bzw.</abbr> starten kann.</li>
<li>Der Fortschritt des Ladevorgangs soll visualisiert werden, heißt, ist ein Ladevorgang abgeschlossen und es beginnt der nächste, soll ein Ladebalken vorwärts schreiten.</li>
</ol>
<p>Es wird ersichtlich, dass es nicht damit getan ist, die AJAX-Calls hintereinander aufzurufen. Vielmehr braucht es eine ordnende Instanz, die dafür sorgt, dass die Aufrufe sauber von einander getrennt ablaufen und zwischendurch Callback-Funktionen aufgerufen werden können. Um das zu erreichen, greife ich auf <a href="http://msdn.microsoft.com/en-us/scriptjunkie/hh201955.aspx">das Pub-Sub-Pattern von Addy Osmani</a> zurück und kombiniere es mit einer <em>InitialDataloader</em>-Funktion. Die AJAX-Funktionalitäten hole ich mir von jQuery.</p>
<p>Im folgenden das Pub-Sub-Pattern:</p>
<pre class="prettyprint">
<dfn>JavaScript</dfn>
<code class="block">
var mediator = (function () {

	function subscribe(channel, fn) {

		if ( !mediator.channels[channel] ) {
			mediator.channels[channel] = [];
		}

		mediator.channels[channel].push({
			context : this,
			callback : fn
		});

		return this;

	}

	function publish(channel, context) {

		var i = 0,
			len,
			args,
			subscription;

		if ( !mediator.channels[channel] ) {
			return false;
		}

		args = Array.prototype.slice.call(arguments, 2);
		len = mediator.channels[channel].length;

		for ( ; i&lt;len; i += 1 ) {
			subscription = mediator.channels[channel][i];
			subscription.callback.apply((context || subscription.context), args);
		}

		return this;

	}

	return {
		channels : {},
		publish : publish,
		subscribe : subscribe,
		installTo : function (obj) {
			obj.subscribe = subscribe;
			obj.publish = publish;
		}
	}

})();
</code>
</pre>
<p>Auf das Pub-Sub-Pattern möchte ich gar nicht weiter eingehen. Lediglich der Hinweis, dass ich die <em>Publish</em>-Funktion um die Möglichkeit ergänzt habe, einen eigenen Kontext zu übergeben.</p>
<p>Kommen wir als nächstes zur <em>InitialDataloader</em>-Funktion:</p>
<pre class="prettyprint">
<dfn>JavaScript</dfn>
<code class="block">
var InitialDataloader = function (args) {
	this.args = args;
	this.result = [];

	this.init();
};

InitialDataloader.prototype.init = function () {

	var i = 0,
		len = this.args.length;

	if ( !len ) {
		return;
	}

	for ( ; i&lt;len; i+=1 ) {
		mediator.subscribe(this.args[i], this.load);
	}

	mediator.publish(this.args[0], this, {path : this.args[0], next : 1});

};

InitialDataloader.prototype.load = function (obj) {

	var that = this,
		deferred = $.ajax({url : obj.path});

	deferred.success(function (resp) {
		that.result.push(&#x27;Data&#x27; + obj.next + &#x27; loaded&#x27;);
	});

	deferred.then( function (resp) {
		if ( obj.next === that.args.length ) {
			console.log(that.result);
		} else {
			mediator.publish(that.args[obj.next], that, {path : that.args[obj.next], next : obj.next+1});
		}
	});

};
</code>
</pre>
<p>in der Konstruktor-Funktion werden die Argumente entgegen genommen und der Prozess via der <em>init</em>-Funktion gestartet. Das args-Argument stellt dabei einen Array dar, der die Pfade zu den Daten enthält.</p>
<p>In der <em>init</em>-Funktion wiederum wird für jeden Pfad des args-Array eine Funktion im Pub-Sub-Pattern angemeldet. Anschließend wird das erste Element des Pub-Sub-Patterns &ldquo;veröffentlicht&rdquo;, sprich die  <em>load</em>-Funktion mit dem ersten Pfad aufgerufen und der Zähler zum nächsten Element des Pfad-Arrays mit übergeben.</p>
<p>Innerhalb der <em>load</em>-Funktion wird ein AJAX-Call auf den übergebenen Pfad gemacht und an ein <em>deferred</em>-Objekt übergeben. Dies wird anschließend genutzt, um eine <em>Callback</em>-Funktion zu starten, wenn der Ladevorgang abgeschlossen ist, und anschließend entweder das nächste Element des Pfad-Array im Pub-Sub-System zu &ldquo;veröffentlichen&rdquo; oder &ndash; wenn alle AJAX-Calls gemacht sind &ndash; eine finale Funktion aufzurufen (<em>console.log(that.result);</em>).</p>
<p>Anschließend noch der Aufruf der Funktion:</p>
<pre class="prettyprint">
<dfn>JavaScript</dfn>
<code class="block">
var initialDataLoad = new InitialDataloader([
	&#x27;http://apple.com/&#x27;,
	&#x27;https://twitter.com/&#x27;,
	&#x27;http://www.spiegel.de/&#x27;,
	&#x27;http://www.flickr.com/&#x27;
]);
</code>
</pre>
<p>Die Adressen sind willkürlich gewählt.</p>
<p>Wenn man den Code in ein Skript packt und im Browser laufen lässt, sieht man in der Konsole nacheinander die AJAX-Calls und abschließend die Ausgabe des <em>this.result</em>-Array, der die einzelnen, zu ladenden Elemente mitgezählt hat.</p>
<p>Das war es auch schon. Sollte es Fragen oder Anregungen, nutzt bitte die Kommentar-Funktion. Ich freue mich immer über Feedback!</p>
<hr /><p>Verwandte Beiträge:<ul>
<li><a href='http://www.emanuel-kluge.de/tutorial/animierte-image-caption-mit-jquery-unter-wordpress/' rel='bookmark' title='Animierte Image-Caption mit jQuery unter WordPress'>Animierte Image-Caption mit jQuery unter WordPress</a> <small>Demo | Download Google liebt es ja, wenn unter oder...</small></li>
<li><a href='http://www.emanuel-kluge.de/tutorial/backbone-js-tutorial-die-merkliste/' rel='bookmark' title='Backbone.js-Tutorial: Die Merkliste'>Backbone.js-Tutorial: Die Merkliste</a> <small>...</small></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/html-css/daten-sukzessive-asynchron-laden-mit-dem-pub-sub-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trailer des AK-Madagaskar-Film</title>
		<link>http://www.emanuel-kluge.de/video/trailer-des-ak-madagaskar-film/</link>
		<comments>http://www.emanuel-kluge.de/video/trailer-des-ak-madagaskar-film/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 15:04:38 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Neuigkeiten]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1489</guid>
		<description><![CDATA[AK Madagaskar Filmtrailer auf Vimeo Vor etwas mehr als einem Jahr sind einige Pfadfinderinnen und Pfadfinder vom AK Madagaskar des VCP Land Niedersachsen nach Madagaskar gereist um das Land kennen zu lernen und den Fortschritt des dort betreuten Projekts zu begutachten. Des weiteren wurde der Plan gefasst, im Zuge der Reise einen Dokumentarfilm sowie eine [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/32564110?title=0&amp;byline=0&amp;portrait=0" width="480" height="270" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p><a href="http://vimeo.com/32564110"><abbr title="Arbeitskreis">AK</abbr> Madagaskar Filmtrailer auf Vimeo</a></p>
<p>Vor etwas mehr als einem Jahr sind einige Pfadfinderinnen und Pfadfinder vom <a href="http://akmadagaskar.vcp-nds.de/" title="AK Madagaskar"><abbr title="Arbeitskreis">AK</abbr> Madagaskar</a> des <a href="http://www.vcp-niedersachsen.de/" title="VCP Land Niedersachsen"><abbr title="Verband christlicher Pfadfinderinnen und Pfadfinder">VCP</abbr> Land Niedersachsen</a> nach Madagaskar gereist um das Land kennen zu lernen und den Fortschritt des dort betreuten Projekts zu begutachten.</p>
<p>Des weiteren wurde der Plan gefasst, im Zuge der Reise einen Dokumentarfilm sowie eine Fotoausstellung zum Thema &ldquo;Kindheit und Jugend in Madagaskar&rdquo; zu erstellen. Beides &ndash; Film und Ausstellung &ndash; nähern sich nun langsam der Fertigstellung. Obiger Trailer gibt schon einmal einen Vorgeschmack auf das, was kommen wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/video/trailer-des-ak-madagaskar-film/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Music Tour – Starker Auftritt mit fadem Abgang</title>
		<link>http://www.emanuel-kluge.de/musik/google-music-tour-%e2%80%93-starker-auftritt-mit-fadem-abgang/</link>
		<comments>http://www.emanuel-kluge.de/musik/google-music-tour-%e2%80%93-starker-auftritt-mit-fadem-abgang/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 16:14:55 +0000</pubDate>
		<dc:creator>Emanuel</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Musik]]></category>
		<category><![CDATA[Neuigkeiten]]></category>

		<guid isPermaLink="false">http://www.emanuel-kluge.de/?p=1479</guid>
		<description><![CDATA[Google stellt seinen neuen Service &#8220;Music&#8221; mit einer ziemlich beeindruckenden Tour vor. Diese ist multimedial, gefällig im Design und insgesamt sehr kurzweilig. Die einzelnen Bereiche der Tour werden durch Tonspuren repräsentiert, die quirlig über den Bildschirm flitzen und sich sukzessive zu einem Song ergänzen. Ist man mit der Tour fertig, ist auch der Song vollständig [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.emanuel-kluge.de/wp-content/uploads/2011/11/google-music-tour-screenshot.png" rel="lightbox"><img src="http://www.emanuel-kluge.de/wp-content/uploads/2011/11/google-music-tour-screenshot-480x298.png" alt="Google Music Tour &ndash; Screenshot" title="Google Music Tour &ndash; Screenshot" width="480" height="298" class="aligncenter size-large wp-image-1480" /></a></p>
<p><a href="http://music.google.com/about/tour/" title="Google Music &ndash; Tour">Google stellt seinen neuen Service &ldquo;Music&rdquo; mit einer ziemlich beeindruckenden Tour vor.</a> Diese ist multimedial, gefällig im Design und insgesamt sehr kurzweilig. Die einzelnen Bereiche der Tour werden durch Tonspuren repräsentiert, die quirlig über den Bildschirm flitzen und sich sukzessive zu einem Song ergänzen.</p>
<p>Ist man mit der Tour fertig, ist auch der Song vollständig und kann kostenlos heruntergeladen werden. Das ist ein ziemlich guter Call-to-Action und katapultiert den Besucher direkt in das Google-Music-System. Die erste Hemmschwelle, den Service auszuprobieren, könnte also schnell abgebaut sein. Allerdings funktioniert das nicht, wenn man nach dem Klicken des Download-Buttons folgende Seite angezeigt bekommt:</p>
<p><a href="http://www.emanuel-kluge.de/wp-content/uploads/2011/11/google-music-song-not-available.png" rel="lightbox"><img src="http://www.emanuel-kluge.de/wp-content/uploads/2011/11/google-music-song-not-available-480x190.png" alt="Google Music &ndash; Song not available in your Country" title="Google Music &ndash; Song not available in your Country" width="480" height="190" class="aligncenter size-large wp-image-1481" /></a></p>
<p>Nun muss man Google zugute halten, dass der Service noch brandneu ist und es daher nicht verwundern sollte, wenn er nur nach und nach über die US-amerikanischen Landesgrenzen hinaus erweitert wird. Aber ein bißchen ernüchternd war das nach der Präsentation zuvor schon&hellip;</p>
<p>(via <a href="https://twitter.com/#!/73inches/status/138640845875331073">@73inches</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanuel-kluge.de/musik/google-music-tour-%e2%80%93-starker-auftritt-mit-fadem-abgang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

