<?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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Sybit Blog » Media</title> <link>http://blog.sybit.de</link> <description /> <lastBuildDate>Tue, 21 May 2013 12:02:12 +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/SybitBlogMedia" /><feedburner:info uri="sybitblogmedia" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Second Screen Apps – Die Kommunikation mit dem TV</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/WMCvcRwWxLw/</link> <comments>http://blog.sybit.de/2013/04/second-screen-apps-kommunikation-mit-dem-tv/#comments</comments> <pubDate>Wed, 24 Apr 2013 08:51:57 +0000</pubDate> <dc:creator>Christian Schneble</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[HbbTV]]></category> <category><![CDATA[Second Screen]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=7543</guid> <description><![CDATA[Nachdem wir im ersten Teil „Second Screen – Die Wiederentdeckung des Fernsehens“ einen Einblick erhalten haben was unter einem Second Screen zu verstehen ist, geht es jetzt um die technischen Details. Wir wollen Fragen zu den Themen Technologie und Plattform in Bezug auf die Kommunikation der Screens klären.]]></description> <content:encoded><![CDATA[<p><img
class="lazy alignleft size-medium wp-image-7641" title="Smarte Steuerung für smarte TVs" alt="Smarte Steuerung für smarte TVs" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2013/04/smart-tv-second-device-270x162.jpg" width="270" height="162" /><noscript><img
class="alignleft size-medium wp-image-7641" title="Smarte Steuerung für smarte TVs" alt="Smarte Steuerung für smarte TVs" src="http://blog.sybit.de/wp-content/uploads/2013/04/smart-tv-second-device-270x162.jpg" width="270" height="162" /></noscript>Nachdem wir im ersten Teil „<a
title="Second Screen – die Wiederentdeckung des Fernsehens" href="http://blog.sybit.de/2013/01/second-screen-die-wiederentdeckung-des-fernsehens/">Second Screen – Die Wiederentdeckung des Fernsehens</a>“ einen Einblick erhalten haben was unter einem Second Screen zu verstehen ist, geht es jetzt um die technischen Details. Wir wollen Fragen zu den Themen Technologie und Plattform in Bezug auf die Kommunikation der Screens klären.</p><p>Die Anforderungen an die Schnittstellen sind schnell umrissen: Die Interaktionspartner (Smart TV und Second Screen App) sollen Events senden und empfangen können. Idealerweise soll die Implementierung der Kommunikationsschicht plattformunabhängig umgesetzt werden. Für den Anwender soll die Koppelung der Geräte möglichst einfach durchzuführen sein.</p><p>Unter Berücksichtigung dieser Anforderungen entstand folgendes Architekturkonzept.</p><h3>Architekturkonzept</h3><p>Eine zunächst naheliegende direkte Kommunikation zwischen den Geräten scheitert derzeit an einheitlichen Standards. Schnittstellen, wie Apples <a
href="http://apple.com/itunes/airplay/">AirPlay</a> oder <a
href="http://dlna.org">DLNA, </a>werden nicht von allen Geräten zuverlässig unterstützt. Aus diesem Grund haben wir uns für eine indirekte Kommunikation über einen Server entschieden.</p><p>Wird die HbbTV-Anwendung auf dem Smart TV aufgerufen, kommuniziert diese mit einem Web-Server. Auch die Anwendung auf dem Second Device (Smartphone oder Tablet) verbindet sich mit diesem Server. Die Architektur besteht aus drei wesentlichen Komponenten:</p><ul><li>einem Second Device (z. B. Tablet), das als Bedienungsgerät dient,</li><li>einem HbbTV-fähigen Fernsehgerät und</li><li>einem Kommunikationsserver.</li></ul><p><img
class="lazy size-large wp-image-7546" alt="Architektur" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2013/03/Architektur-595x381.png" width="595" height="381" /><noscript><img
class="size-large wp-image-7546" alt="Architektur" src="http://blog.sybit.de/wp-content/uploads/2013/03/Architektur-595x381.png" width="595" height="381" /></noscript></p><p>Damit das Second Device mit dem Fernseher interagieren kann, muss sich das Bediengerät mit dem Server verbinden. Über den Server kann es Informationen übermitteln, die der Server  an das Fernsehgerät weiterleitet. Für den Benutzer der Anwendungen interagiert das Second Device scheinbar direkt mit dem Fernseher, obwohl die Verbindung über den Server hergestellt wird.</p><p>Betrachtet man den Server im Detail, kann dieser in zwei Komponenten unterteilt werden. Es gibt einen Content-Server, der die Informationsinhalte bereitstellt und einen Event-Server, der die Kommunikation zwischen den Anwendungen verarbeitet.</p><p>Betätigt der Benutzer der Second Screen Anwendung eine Taste oder macht eine Eingabe, schickt die Anwendung einen Event an den Event-Server. Dieser leitet den Event an die HbbTV-Anwendung weiter. Der Fernseher empfängt den Befehl und verarbeitet diesen in der App. Durch die bidirektionale Verbindung können auch Informationen von der TV-App an das Second Device geschickt werden.</p><p>In einem praktischen Beispiel veranschaulicht hieße dies, dass während einer Kochsendung das Rezept und Zubereitungsinformationen direkt abgerufen werden könnten. Damit die Second Screen App überhaupt weiß, welche Inhalte angezeigt werden sollen, werden dann die ausgelesenen EPG-Informationen in umgekehrter Richtung aus der TV-App an den Server geschickt.</p><h3>Technische Umsetzung</h3><p>In der von uns implementierten Lösung wurde ein Framework erstellt, welches in erster Linie eine plattformunabhängige, auf Standards basierte Lösung zur Kommunikation zwischen Fernsehgerät und Second Device bildet. Durch den immer weiter wachsenden Markt an internetfähigen Geräten, ist es wichtig, eine unabhängige Möglichkeit zur Verbindung der unterschiedlichen Geräte haben. Durch die Nutzung von offenen Webstandards kann das geforderte System ohne einschneidende Einschränkungen genutzt werden.</p><p>Obwohl die Hersteller der TV-Geräte versprechen, den HTML5 Standard zu unterstützen, sieht die Realität anders aus. Anspruchsvolle Komponenten, wie zum Beispiel <a
title="Wikipedia: WebSockets" href="http://de.wikipedia.org/wiki/WebSocket">Websockets</a> werden nur teilweise, meist auch gar nicht unterstützt. Aus diesem Grund muss das Framework durch Fallbacks sicherstellen, dass eine Verbindung auch dann hergestellt wird, wenn keine Websockets verfügbar sind. Als Eventserver wurde ein Server auf Basis von <a
title="Node.js" href="http://nodejs.org/">Node.js</a> genutzt. Mit Hilfe des Erweiterungspaketes <a
title="Socket.io" href="http://socket.io/">Socket.io</a> wird die Kommunikation zwischen den Geräten gewährleistet.</p><p>Das Framework Node.js ist eine Software-Plattform, die zur Programmierung von serverseitigen JavaScript-Anwendungen dient. Sie setzt auf Googles JavaScript-Engine V8 auf, welche auch in Googles Browser Chrome verwendet wird. Node.js bietet zusätzlich eine JavaScript VM mit der JavaScript auf der Konsole ausgeführt werden kann.</p><p>Des weiteren bietet Node.js die Möglichkeit, eine Vielzahl von Erweiterungen durch diverse Module einzubinden. Diese lassen sich über den integrierten Paketmanager NPM verwalten. Eine solche Erweiterung ist Socket.io.</p><p>Socket.io managed den Verbindungstyp während der Laufzeit. Das heißt im Detail, dass die API einen transparenten Fallback auf nachfolgende Verbindungstypen bereit stellt:</p><ul><li>Adobe Flash Socket</li><li>AJAX long polling</li><li>AJAX multipart streaming</li><li>Forever Iframe</li><li>JSONP Polling</li></ul><p>Durch nur wenige Codezeilen lässt sich ein WebSocket-Server mit Hilfe von Node.js und der Erweiterung Socket.io realisieren.</p><p>Im folgenden Codebeispiel wird ein WebSocket-Server erstellt, der auf den Port 8080 hört und eingehende Nachrichten weiterleitet.</p><pre class="brush: jscript; title: ; notranslate">
// will create a http server and listens on port 8080
var io = require('socket.io').listen(8080);
io.sockets.on('connection', function (socket) {
   socket.on('message', function(message){
      //logs Messages Received by Server
      console.log('I received a private message saying', message);
      //send to all connected sockets
      io.sockets.emit('message', message);&lt;/p&gt;
      // send to all connected sockets expect the one that send it
      socket.broadcast.emit('message', message);
      // send to a special socket&lt;br /&gt;
      io.sockets.send(sessionID).emit('message', message);
   });
});
</pre><p>Neben der serverseitigen Implementierung benötigt Socket.io auch eine clientseitige Komponente. Diese Komponente muss bei allen Clients implementiert werden, die sich mit dem Socket-Server verbinden möchten. Ein einfaches Beispiel, wie die clientseitige Implementierung aussehen kann, zeigen folgende Code-Zeilen:</p><pre class="brush: xml; title: ; notranslate">
&lt;script src=&quot;/socket.io/socket.io.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	url = &quot;http://localhost:8080&quot;;
	var socket;
	socket = io.connect(url);
&lt;/script&gt;
</pre><p>Wurde Node.js erfolgreich installiert und Server wie Client nach dem vorangegangenen Beispiel eingerichtet, verbindet sich der Client beim Aufruf der HTML Seite automatisch mit dem Server.</p><p><strong>Gestatten, ich bin das Second Device</strong></p><p>Nun besteht eine prinzipielle Verbindung zwischen Second Device und Fernsehgerät. Um jedoch beliebige Geräte miteinander zu koppeln, müssen diese einander bekannt gemacht werden. Dazu wird bei der initialen Koppelung ein Token ausgetauscht. Dies kann eine Ziffernfolge oder ein QR-Code &#8211; der mit dem Smartphone fotografiert wird &#8211; sein. Durch die Bestätigung des Tokens kann der Server die beide Geräte miteinander verknüpfen. Diese Verknüpfung kann sogar applikationsübergreifend genutzt werden. Die Koppelung muss nur einmal pro Gerätepaar auf dem Server vorgenommen werden.</p><h3>Zusammenfassung</h3><p>Da sich die internetfähigen Endgeräte in vielen Aspekten unterscheiden (Bedienbarkeit, Netzwerkbandbreite, Rechenleistung), ändert sich auch die Darstellung und Nutzung der Anwendungen. Gerade die HbbTV Gerätehersteller versprechen viel, in der Praxis hinken sie im Vergleich zu Desktop und mobilen Lösungen spürbar hinterher. Der aktuelle Stand der Technik bietet durch die mangelnde Unterstützung der Browser noch keine optimale Performance. Die Verarbeitung von JavaScript und die Nutzung von neuen Technologien wie HTML5 können noch nicht problemlos eingesetzt werden. Laut der Hersteller von <a
href="http://www.sybit.de/de/media/leistungen/hbbtv.html">HbbTV</a> fähigen Geräten soll HTML5 unterstützt werden. In der Praxis zeigt sich, dass gerade die neu hinzugekommenen Technologien wie Websockets noch nicht kompatibel oder voll implementiert sind. Trotz der festgestellten Schwachpunkte kann die Lösung bereits genutzt werden. Sie skaliert sogar mit der eingesetzten Plattformtechnologie.</p><p>Es ist davon auszugehen, dass das Zusammenwirken von Smart Devices und TV-Geräten in der Zukunft noch deutlich mehr genutzt wird, um den Benutzern neue Möglichkeiten in Kombination mit dem Fernsehgerät zu bieten. So werden die TV-Hersteller auch die Kommunikation zwischen den Geräten weiter optimieren und ein Framework das alle Kommunikationswege unterstützt bleibt als stabile Komponente im Technologie-Stack.</p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2013/04/second-screen-apps-kommunikation-mit-dem-tv/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2013/04/second-screen-apps-kommunikation-mit-dem-tv/</feedburner:origLink></item> <item><title>Second Screen – die Wiederentdeckung des Fernsehens</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/axRYBZS2Y0w/</link> <comments>http://blog.sybit.de/2013/01/second-screen-die-wiederentdeckung-des-fernsehens/#comments</comments> <pubDate>Thu, 17 Jan 2013 08:19:33 +0000</pubDate> <dc:creator>Christian Schneble</dc:creator> <category><![CDATA[Media]]></category> <category><![CDATA[HbbTV]]></category> <category><![CDATA[Second Screen]]></category> <category><![CDATA[Smart TV]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=7355</guid> <description><![CDATA[TV-Castingshows, bei welchen Zuschauer für ihren Lieblingssänger voten können, gibt es schon lange. Bisher wurden diese Abstimmungen über Telefonanrufe oder SMS-Services realisiert. In letzter Zeit werden aber immer häufiger Anwendungen für den sogenannten Second Screen bereitgestellt. Neben nützlichen Zusatzinformationen werden dort auch interaktive Aktionen zur Verfügung gestellt.]]></description> <content:encoded><![CDATA[<div
id="attachment_7383" class="wp-caption alignleft" style="width: 280px"><img
class="lazy size-medium wp-image-7383" title="Sybit Second-Screen-App" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2013/01/Sybit-Second-Device-App-270x199.jpg" alt="Kommunikation zwischen Second Screen und Smart TV" width="270" height="199" /><p
class="wp-caption-text"><noscript><img
class="size-medium wp-image-7383" title="Sybit Second-Screen-App" src="http://blog.sybit.de/wp-content/uploads/2013/01/Sybit-Second-Device-App-270x199.jpg" alt="Kommunikation zwischen Second Screen und Smart TV" width="270" height="199" /></noscript> Interaktion: iPad und Smart TV</p></div><p><strong>TV-Castingshows, bei denen Zuschauer für ihren Lieblingssänger voten können, gibt es schon lange. Bisher wurden diese Abstimmungen über Telefonanrufe oder SMS-Services realisiert. In letzter Zeit tauchen aber immer häufiger Anwendungen für den sogenannten Second Screen auf. Neben nützlichen Zusatzinformationen werden dort auch interaktive Aktionen zur Verfügung gestellt.<br
/> </strong></p><p>Laut einer <a
href="http://anywab.com/second-screen/die-studie/">Studie</a> der Unternehmensberatung Anywab, nutzen in Deutschland ca. die Hälfte aller Zuschauer im Alter von 14-49 Jahren bereits den Second Screen während sie fern schauen.</p><p><img
class="lazy alignleft size-large wp-image-7380" title="Second Screen Zero - Die Macht des zweiten Bildschirms" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2013/01/2ndnutzung-595x382.png" alt="Quelle: Anywag-Stufie: Second Screen Zero - Die Macht des zweiten Bildschirms" width="595" height="382" /><noscript><img
class="alignleft size-large wp-image-7380" title="Second Screen Zero - Die Macht des zweiten Bildschirms" src="http://blog.sybit.de/wp-content/uploads/2013/01/2ndnutzung-595x382.png" alt="Quelle: Anywag-Stufie: Second Screen Zero - Die Macht des zweiten Bildschirms" width="595" height="382" /></noscript></p><p>Second Screen beschreibt die Nutzung des Internets auf einem Zweitgerät wie PC, Tablet oder Smartphone während des Fernsehens mit Bezug auf den aktuellen Inhalt der Sendung. In der <a
title="Wikipedia: Second Screen" href="http://de.wikipedia.org/wiki/Second_Screen">Wikipedia</a> wird er wie folgt definiert:</p><blockquote><p><strong>Second Screen</strong> (engl. für <em>zweiter Bildschirm</em>) ist ein um 2010 entstandener Begriff, der die Nutzung eines zweiten Bildschirms parallel zum laufenden Fernsehprogramm beschreibt. Der zweite Bildschirm ist typischer Weise ein internetfähiges Telefon (Smartphone) oder ein tastaturloser berührungsempfindlicher Tablet-Computer. Über den zweiten Bildschirm ruft der Nutzer zusätzliche und über das Fernsehprogramm hinausgehende Informationen ab oder kommentiert das Programm interaktiv mit anderen online.</p></blockquote><p>Der Fernsehzuschauer nutzt also den Second Screen beispielsweise, um weitere Informationen zu der aktuellen Sendung zu bekommen oder kommentiert und diskutiert in sozialen Netzwerken über diese.</p><p>Der Studie von Anywab zufolge nutzen 2/3 der Befragten den Second Screen zur Recherche von Zusatzinformationen, dicht gefolgt von Aktivitäten in sozialen Netzwerken (56%). Die Experten stellen &#8211; wie auch auf dem <a
href="http://www.bitkom.org/de/veranstaltungen/102_72359.aspx">NewTV Summit</a> des BITKOM &#8211; offen die Frage, welcher Bildschirm tatsächlich der First und welcher der Second Screen ist. Worauf legt der Konsument seinen primären Fokus? Die Abgrenzung zwischen First Screen und Second Screen verschwimmt also zunehmend.</p><h3>Interaktion zwischen den Screens</h3><p>So wie die Priorisierung der Screens zunehmend verschwimmt, verschmelzen die Geräte durch spezielle Anwendungen für den Anwender zu einem Device. Durch die Koppelung des Smart TV mit dem Tablet oder Smartphone lassen sich nicht nur Zusatzinformationen benutzerfreundlich bereitstellen, sondern mit dem Einsatz der Gestensteuerung wird auch die Bedienung erleichtert und für Flexibilität in der Nutzung gesorgt.</p><p>Der stark wachsende Markt im Bereich Smartphones und Tablets hat zur Folge, dass immer mehr Fernsehzuschauer den Second Screen für sich entdecken werden. Durch die weitaus entspanntere Bedienung der mobilen Geräte wird das „leanback“ Feeling, das man am Fernsehen so schätzt, nicht durch PC oder große Laptops zunichte gemacht.</p><h3>Smart TV mit Joy of Use</h3><p>Die Bedienung eines Fernsehers mit Hilfe eines Second Devices ist sinnvoll, da Navigation und Texteingabe mit der herkömmlichen Fernbedienung schwer bis fast unmöglich machbar sind. Die User Experience bei reinen HbbTV-Anwendungen hat noch Potential! Die entscheidenden Erfolgsfaktoren einer Anwendung auf dem Smart TV sind die Usability sowie die Einfachheit der Bedienung. Der Einsatz eines Second Device mit einer einfachen, intuitiven Oberfläche steigert den Erfolgsfaktor und schafft gleichzeitig ein neues Bedienungserlebnis (Joy of Use).</p><p>Auf dem Second Device kennt der Nutzer die Bedienelemente bereits und kann die Anwendung ohne Einführung oder weiterer Instruktionen nutzen. Bei „reinen“ mit der Fernbedienung gesteuerten HbbTV Anwendungen verliert man hingegen oft den Überblick in der Navigation. Die Pfeilnavigation macht keinen Spaß. Der Anwender wird automatisch in den Lean-Forward Modus gezwungen oder beendet die Anwendung frustriert.</p><h3>Smartphone calls TV</h3><p>Der Markt an Second Screen Anwendungen wird täglich größer. Immer weitere Interaktionsmuster werden für den Benutzer bereitgestellt. Gerade bei der Synchronisation der Geräte werden unterschiedliche Ansätze  und Technologien eingesetzt. Bei den am Markt verfügbaren Anwendungen kann man drei Modelle der Synchronisation unterscheiden.</p><h4>Zahlencode</h4><p>Diverse Anbieter nutzen einen Zahlencode, der auf dem Second Device eingegeben werden muss. Dazu wird eine Connect-Aktion auf dem Smart TV ausgelöst. Diese stellt auf dem TV-Gerät einen Zahlen-Code bereit. Dieser Code muss in der App auf dem Second Device eingetippt werden. Jetzt kennen sich beide Geräte und können miteinander interagieren.</p><h4>Ich höre, was Du siehst</h4><p>Ein anderer Ansatz ist das Überwachen und Analysieren von Video- bzw. Audioinhalten. Die Second Screen App nimmt für einen Moment das Audiosignal über das integrierte Mikrofon auf, gleicht dieses mit einer Datenbank ab und erhält so die Informationen zum richtigen Programm (z.B. <a
href="http://wywy.com/">wywy</a>). Auch die für Audiotitel ausgelegte App Shazam möchte zu Beginn des Jahres 2013 den Videomarkt mit ihrem Angebot so abdecken.</p><h4>QR-Code</h4><p>Bei der dritten Möglichkeit wird ein QR-Code bereitgestellt, der mit dem Second Device vom TV-Gerät abfotografiert werden kann. Zeitgemäße Smart Devices besitzen alle eine Kamera und können QR-Codes verarbeiten. Durch einen einfachen Scan kann sich der Benutzer schnell mit der App verbinden und erspart sich lange Konfigurationen.</p><p>Möchte man aber Geräte ohne Kamera wie das iPad der ersten Generation unterstützen, sollte man in jedem Fall über eine Alternativlösung nachdenken.</p><h3>Ausblick</h3><p>Im ersten Teil dieser Artikelreihe haben Sie einen Einblick zum Thema Second Screen und Interaktion mit dem Smart TV erhalten. Im Folgeartikel wird dann auf technische Details eingegangen und eine Möglichkeit gezeigt, wie sich eine Interaktion zwischen den Devices implementieren lässt.</p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2013/01/second-screen-die-wiederentdeckung-des-fernsehens/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2013/01/second-screen-die-wiederentdeckung-des-fernsehens/</feedburner:origLink></item> <item><title>Social Media und B2B – neue Freundschaft oder altes Eisen? Das sagen die Experten.</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/vuJrRXXcXvs/</link> <comments>http://blog.sybit.de/2012/10/social-media-und-b2b-neue-freundschaft-oder-altes-eisen-das-sagen-die-experten/#comments</comments> <pubDate>Mon, 08 Oct 2012 15:08:32 +0000</pubDate> <dc:creator>Fabian Lauber</dc:creator> <category><![CDATA[Allgemein]]></category> <category><![CDATA[CRM]]></category> <category><![CDATA[Media]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=7204</guid> <description><![CDATA[Auch dieses Jahr fand in Hamburg die Social Media Conference statt. Doch im Gegensatz zu den Vorjahren wurde aufgrund der hohen Nachfrage ein Tag rund um Social Media im B2B-Umfeld angeboten. Verschiedene Referenten aus B2B-Unternehmen gaben ihre Erfahrungen aus der Umsetzung von Social Media Strategien weiter und machten deutlich, dass sie trotz des erschwerten ROI-Nachweises einen klaren Nutzen aus ihren Social Media Maßnahmen ziehen. Ich war dabei und fasse im Folgenden für Sie die aus meiner Sicht interessantesten Aussagen zusammen.]]></description> <content:encoded><![CDATA[<p><a
href="http://blog.sybit.de/wp-content/uploads/2012/10/Logo_SocialMediaConference.jpg" class="thickbox no_icon" rel="gallery-7204" title="Logo Social Media Conference"><img
class="lazy size-medium wp-image-7206 alignleft" title="Logo Social Media Conference" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/10/Logo_SocialMediaConference-270x119.jpg" alt="Logo Social Media Conference" width="270" height="119" /><noscript><img
class="size-medium wp-image-7206 alignleft" title="Logo Social Media Conference" src="http://blog.sybit.de/wp-content/uploads/2012/10/Logo_SocialMediaConference-270x119.jpg" alt="Logo Social Media Conference" width="270" height="119" /></noscript></a>Auch dieses Jahr fand in Hamburg die <a
title="Social Media Conference" href="http://www.socialmediaconference.de/B2B-Special" target="_blank">Social Media Conference</a> statt. Doch im Gegensatz zu den Vorjahren wurde aufgrund der hohen Nachfrage ein Tag rund um Social Media im B2B-Umfeld angeboten. Verschiedene Referenten aus B2B-Unternehmen gaben ihre Erfahrungen aus der Umsetzung von Social Media Strategien weiter und machten deutlich, dass sie trotz des erschwerten ROI-Nachweises einen klaren Nutzen aus ihren Social Media Maßnahmen ziehen. Ich war dabei und fasse im Folgenden für Sie die aus meiner Sicht interessantesten Aussagen zusammen.</p><p>Leider gibt es kein Patentrezept für den Erfolg mit Social Media. Darüber, was dringend vermieden werden sollte, waren sich jedoch alle Referenten einig: Verwenden Sie <strong>keine produktbezogenen Beiträge!</strong> Der Mensch sei resistent gegen Werbung und fühle sich davon gestört. Auf lange Sicht würden produktbezogene Beiträge eher ignoriert als honoriert, so die einhellige Erfahrung.</p><p>Positive Resonanz erzeugten hingegen Beiträge wie:</p><ul><li>Mitarbeiterprofile</li><li>Fachartikel (auch gerne Hinweise auf Beiträge anderer Autoren)</li><li>Umfragen</li><li>Videoreihen (ein super Beispiel ist der <a
title="Beispiel für populäre Videoreihen" href="http://www.youtube.com/user/unserbarfussmann?feature=CAQQwRs%3D" target="_blank">Barfußmann</a>)</li></ul><p><strong>Menschliche Kommunikationsebene</strong><br
/> Entscheidend für den Erfolg einer Social Media Strategie sei außerdem, die <strong>Kommunikation auf einer menschlichen Basis</strong> zu halten. Neben der Informationsgewinnung will der Konsument in erster Linie unterhalten werden und, ganz wichtig, nicht mit einer Marke kommunizieren –  man sollte also ruhig auch einmal die Gesichter zeigen, die hinter den Beiträgen stecken.</p><p><strong>Zuhören vs. schweigen</strong><br
/> In Zukunft sollen <strong>audio-visuelle Medien</strong> das Geschehen bestimmen. Vor allem die Plattform <a
title="Pinterest" href="http://pinterest.com/" target="_blank">Pinterest</a> wurde in diesem Zusammenhang mehrfach empfohlen, welche als Pinnwand für Bilder und Grafiken dient. Weiterhin soll auf Kundenbeiträge primär reagiert und nicht, wie es die meisten Unternehmen aktuell handhaben, lediglich eine Flut von Beiträgen erzeugt werden. <strong>Zuhören</strong> ist dabei oberste Prämisse und bei den <strong>Antworten</strong> sollte auf eine <strong>kurze Reaktionszeit</strong> geachtet werden.</p><p><strong>Erreichbare Ziele</strong><br
/> Wie anhand der genannten Beispiele bereits deutlich wird, hat Leadgenerierung nicht die höchste Priorität. Social Media zielt auf Image. <strong>PR-Maßnahmen</strong> sollen die Marke stärken und, mit Blick auf das überwiegend junge Publikum, soll das <strong>Personal-Recruiting</strong> angetrieben werden. Nicht zuletzt steht die <strong>Platzierung in Suchmaschinenrankings</strong> im Fokus, da Suchmaschinen zunehmend die Social Media Relevanz von Seiten in ihren Algorithmen verwenden.</p><p><strong>Mein Fazit</strong><br
/> Im Gegensatz zu den Ergebnissen verschiedener Umfragen die im Netz kursieren, scheint mir nur ein geringer Anteil der B2B Unternehmen bereits eine ausgereifte Social Media Strategie zu verfolgen. Anhand der Fragestellungen der Teilnehmer war jedoch erkennbar, dass die meisten bereits konkrete Pläne für die Zukunft entwickeln. Für mich war es ein absolut spannender Tag mit abwechslungsreichem Programm. Im Februar 2013 soll ein eigenes Social Media B2B Event in München veranstaltet werden. Ich bin gespannt, was sich in der schnelllebigen Online-Welt bis dahin tut.</p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/10/social-media-und-b2b-neue-freundschaft-oder-altes-eisen-das-sagen-die-experten/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/10/social-media-und-b2b-neue-freundschaft-oder-altes-eisen-das-sagen-die-experten/</feedburner:origLink></item> <item><title>Online + Offline: Nur mit Mobile</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/7hg_qAYtJnI/</link> <comments>http://blog.sybit.de/2012/09/online-offline-nur-mit-mobile/#comments</comments> <pubDate>Tue, 18 Sep 2012 09:40:27 +0000</pubDate> <dc:creator>Dr. Christoph Mangold</dc:creator> <category><![CDATA[CRM]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[Mobiles CRM]]></category> <category><![CDATA[dmexco]]></category> <category><![CDATA[e-business]]></category> <category><![CDATA[User Journey]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=6929</guid> <description><![CDATA[Diese Woche war ich auf der dmexco. Eine wirklich lohnenswerte Messe wenn man mal wieder auf allen Kanälen mit Information <span
style="text-decoration: line-through;">zugestopft</span> versorgt werden will. Apropos Kanäle: Wichtigstes Thema im Bereich E-Business war natürlich – wie zurzeit eigentlich überall – die User Journey im Cross-Channel-Marketing. Also die Reise des Kunden durch verschiedene Kanäle: ]]></description> <content:encoded><![CDATA[<div
id="attachment_6937" class="wp-caption alignleft" style="width: 280px"><img
class="lazy size-medium wp-image-6937" title="dmexco 2012" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/09/IMG_1560-270x202.jpg" alt="dmexco 2012" width="270" height="202" /><p
class="wp-caption-text"><noscript><img
class="size-medium wp-image-6937" title="dmexco 2012" src="http://blog.sybit.de/wp-content/uploads/2012/09/IMG_1560-270x202.jpg" alt="dmexco 2012" width="270" height="202" /></noscript> dmexco 2012</p></div><p><strong>Diese Woche war ich auf der <a
href="http://www.dmexco.de/">dmexco</a>. Eine wirklich lohnenswerte Messe wenn man mal wieder auf allen Kanälen mit Information <span
style="text-decoration: line-through;">zugestopft</span> versorgt werden will. Apropos Kanäle: Wichtigstes Thema im Bereich E-Business war natürlich – wie zurzeit eigentlich überall – die User Journey im Cross-Channel-Marketing. Also die Reise des Kunden durch verschiedene Kanäle:</strong></p><p>von Adwords, über Landingpages / SEO, Facebook, Newsletter, den Besuch im guten alten Ladengeschäft, bis natürlich zum Online-Shop. Die große Frage dabei ist immer wieder, welchem Touchpoint, also welchem Kanal welcher Anteil an der Verkaufsprovision zusteht. Hat der Kunde gekauft weil der Online-Shop so sexy war? Weil die Argumente im Newsletter einfach genau den Bedarf getroffen haben? Weil die Facebook-Werbung genau im richtigen Moment aufgepoppt ist? Zur Beantwortung dieser Fragen existieren bereits Lösungen, die Sie leicht finden können, indem Sie nach dem Begriff „<strong><a
href="https://www.google.com/search?q=Attributionsmodelle">Attributionsmodelle</a></strong>“ googeln.</p><h3>Habe gelernt</h3><p>Für mich war dieses Jahr interessant, dass viele Händler, die sowohl Online-Shops als auch Ladengeschäfte betreiben, vor der Herausforderung stehen, nicht nur die online User Journey ihrer Kunden aufzuzeichnen, sondern die Besuche im Ladengeschäft zu bewerten. Meine Erkenntnis an dieser Stelle war, dass alle Ansätze in dieser Richtung über mobile Geräte führen. Bisher waren Apps für mich entweder Shops oder eben ein weiterer Kanal zur Kommunikation mit Kunden. Tatsächlich können Apps aber viel mehr: <strong>Nur durch mobile Apps lässt sich die User Journey bis ins Ladengeschäft verfolgen.</strong> Das habe ich durch die vielen interessanten Gespräche auf der dmexco wirklich begriffen.</p><div
id="attachment_6938" class="wp-caption alignleft" style="width: 280px"><img
class="lazy size-medium wp-image-6938" title="Panel des BVDW zum Thema: Everywhere Commerce - reines Multichannel war gestern" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/09/IMG_1570-270x202.jpg" alt="Panel des BVDW zum Thema: Everywhere Commerce - reines Multichannel war gestern" width="270" height="202" /><p
class="wp-caption-text"><noscript><img
class="size-medium wp-image-6938" title="Panel des BVDW zum Thema: Everywhere Commerce - reines Multichannel war gestern" src="http://blog.sybit.de/wp-content/uploads/2012/09/IMG_1570-270x202.jpg" alt="Panel des BVDW zum Thema: Everywhere Commerce - reines Multichannel war gestern" width="270" height="202" /></noscript> Panel des BVDW zum Thema: Everywhere Commerce &#8211; reines Multichannel war gestern</p></div><h3>Beispiel:</h3><p>Vor ein paar Wochen wollte ich ein Zelt für unseren anstehenden Sommerurlaub kaufen. In meinem Lieblingsladen haben mir zwei Zelte ganz gut gefallen, ich wollte das also mit meiner Frau besprechen. Verständlicherweise wollte der Verkäufer aber nicht <span
style="text-decoration: line-through;">seine Provision sausen </span>mich ohne Kauf ziehen lassen. Eine unangenehme Situation.<br
/> Wäre es jetzt wirklich schwierig, mir für beide Zelte einen QR-Code zu geben (hier kommt die App ins Spiel!), mit dem ich dann am Abend vom Sofa aus, direkt im Online-Shop das jeweilige Zelt finde und mit meiner Frau klären kann welches wir kaufen? Natürlich fehlt dann noch die Kundenbindung. Z.B. ein kleiner Rabatt, oder einfach nur, dass ich vom Kunden-Service meiner Vorort-Filiale so überzeugt bin, dass ich das Produkt nicht an anderer Stelle im Internet erstehe.<br
/> Das Ende vom Lied war: Nachdem ich mich mit meiner Frau besprochen hatte, musste ich noch einmal ins Auto sitzen, um das Ding offline zu kaufen. Einen Onlineshop hat mein Lieblingsladen nämlich keinen und wenn ich mein Zelt bei Amazon gekauft hätte, wäre dieser auch bald pleite. Ob ich das aber noch oft so mache, weiß ich noch nicht.</p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/09/online-offline-nur-mit-mobile/feed/</wfw:commentRss> <slash:comments>1</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/09/online-offline-nur-mit-mobile/</feedburner:origLink></item> <item><title>Automatisierte Verschlagwortung</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/msroYlBd6OU/</link> <comments>http://blog.sybit.de/2012/08/automatisierte-verschlagwortung/#comments</comments> <pubDate>Tue, 14 Aug 2012 08:35:16 +0000</pubDate> <dc:creator>Ulrich Raab</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[CMS]]></category> <category><![CDATA[geo]]></category> <category><![CDATA[NLP]]></category> <category><![CDATA[Webservice]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=6815</guid> <description><![CDATA[Nachrichtenportale, Blogs und Webseiten ermöglichen uns ständig auf dem aktuellen Stand der Dinge zu sein. Informationen in Form von Texten sind allgegenwärtig. Doch wer kann von sich behaupten das für sich relevante schnell und effizient zu finden? Mehr Informationen führen nicht automatisch zu mehr Informiertheit. ]]></description> <content:encoded><![CDATA[<p><strong><img
class="lazy alignleft size-medium wp-image-6819" title="Enziclopädie" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/08/2641415853_325ea48e8e-270x179.jpg" alt="Automatisierte Verschlagwortung im CMS" width="270" height="179" /><noscript><img
class="alignleft size-medium wp-image-6819" title="Enziclopädie" src="http://blog.sybit.de/wp-content/uploads/2012/08/2641415853_325ea48e8e-270x179.jpg" alt="Automatisierte Verschlagwortung im CMS" width="270" height="179" /></noscript></strong></p><p><strong>Nachrichtenportale, Blogs und Webseiten ermöglichen uns ständig auf dem aktuellen Stand der Dinge zu sein. Informationen in Form von Texten sind allgegenwärtig. Doch wer kann von sich behaupten das für sich relevante schnell und effizient zu finden? Mehr Informationen führen nicht automatisch zu mehr Informiertheit.</strong></p><p>Bereits in den 1950er Jahren veranschaulichte der <a
href="http://books.google.de/books?id=mjRxvoh4NHYC&#038;lpg=PA40&#038;ots=T-ITJdhkxj&#038;dq=signalcode%20Sputnik-Schock&#038;hl=de&#038;pg=PA40#v=onepage&#038;q=signalcode%20Sputnik-Schock&#038;f=false">zweite Sputnik-Schock </a>diese Problematik. Damals benötigten die USA ein halbes Jahr, um den Signalcode der Sputnik zu entschlüsseln. Dabei wurde übersehen, dass der Signalcode bereits zwei Jahre zuvor in einer russischen Zeitschrift veröffentlicht wurde, die übersetzt in vielen Bibliotheken des Landes auslag. Das infolge dessen von John F. Kennedy in Auftrag gegebene Gutachten bestätigte die Problematik und enthält einen Maßnahmenkatalog zur Optimierung der Informationsvermittlung. Ein Punkt in diesem Katalog ist, dass Texte nur zusammen mit <strong>Schlagworten</strong> veröffentlicht werden sollten. Doch die Generierung  ist aufwändig und wird oft nicht oder nur unzureichend durchgeführt.</p><p>Auch unsere Kunden haben dieses Problem und wir haben es <strong>für sie gelöst</strong> indem wir den Prozess zur Erstellung passender <strong>Schlagworte automatisiert</strong> haben. Die aufwändige Arbeit für den Autor entfällt und die generierten Schlagworte sind homogen und einheitlich. Doch weil uns das allein nicht reicht und wir unsere Kunden begeistern möchten, haben wir die Funktionalität dahingehend erweitert, dass nicht nur Schlagworte, sondern auch <strong>relevante Metainformationen zu den Schlagworten</strong> erzeugt werden.</p><h3>Der typische Anwendungsfall</h3><p>Stellen Sie sich den Arbeitsablauf eines Redakteures vor: Dieser schreibt einen Artikel und publiziert diesen unter Verwendung eines <a
href="http://www.sybit.de/de/media/leistungen/redaktionssysteme.html">Content Management Systems (CMS)</a>. Gleichzeitig wird der geschriebene Text automatisch an unseren Service weitergegeben und von diesem verarbeitet. Im Text genannte <strong>Entitäten</strong>, also Personen, Orte, etc. werden von der Software erkannt und zusammen mit Metadaten an das CMS zurückgegeben. Diese Informationen können dann beliebig genutzt werden. Denkbar wäre beispielsweise die Anzeige von Steckbriefen zu den im Text erwähnten Personen, oder die Anzeige der im Text genannten Orte auf einer Karte. Und das Beste daran: <strong>Es funktioniert automatisch und ohne Zutun des Redakteures.</strong></p><h3>Technische Umsetzung</h3><p>Die von uns implementierte Lösung verwendet ein <a
href="http://en.wikipedia.org/wiki/Natural_language_processing"><strong>Natural Language Processing</strong></a> (kurz NLP) Framework zum Finden von Entitäten in einem Text. Dieses funktioniert jedoch nicht „Out of the box“ da die in dem Framework verwendeten Algorithmen statistische Modelle zur Erkennung benannter Entitäten benötigen, welche nicht in deutscher Sprache verfügbar sind. Daher müssen zuerst geeignete <strong>statistische Modelle erzeug</strong>t werden. Voraussetzung dafür ist wiederum eine  große Textsammlungen (<strong>Korpus</strong>) in der möglichst alle vorkommenden Entitäten, also Personen, Orte, etc. gekennzeichnet sind.</p><p>Aufgrund der minimalen Größe von 15.000 Sätzen ist die manuelle Erzeugung eines annotierten Korpus nicht praktikabel. Wir haben deshalb eine automatisierte Lösung entwickelt, die basierend auf frei verfügbaren Texten, einer <strong><a
href="http://de.wikipedia.org/wiki/Ontologie_%28Informatik%29">Ontologie</a> und strukturierten Informationen</strong> geeignete annotierte Korpora erzeugt.</p><p><img
class="lazy alignnone size-large wp-image-6833" title="annotierter Korpus" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/08/annotierter-Korpus-595x141.png" alt="" width="595" height="141" /><noscript><img
class="alignnone size-large wp-image-6833" title="annotierter Korpus" src="http://blog.sybit.de/wp-content/uploads/2012/08/annotierter-Korpus-595x141.png" alt="" width="595" height="141" /></noscript></p><p>Die verwendete Ontologie als auch die strukturierten Informationen werden von <a
href="http://dbpedia.org">DBpedia</a> zur Verfügung gestellt. DBpedia extrahiert diese Informationen aus Wikipedia und stellt das Extrakt in einem standardisierten Format frei zur Verfügung. Dieser Datenbestand ist mehrere Gigabyte groß und enthält eine Fülle an relevanten Informationen, die bei Bedarf durch Datensätze anderer Anbieter ergänzt werden können. Wir nutzten diese Daten zudem auch für die Anreicherung der in einem Text gefundenen Entitäten mit Metadaten, wenn eine eindeutige Zuordnung möglich ist.</p><p>Für uns hat sich die Frage gestellt, wie das entwickelte System in die Softwarelandschaft möglichst vieler Kunden mit unterschiedlichen CMS integriert werden kann. Hier haben wir uns für die Verwendung von <strong>Webservices</strong> entschieden. Dabei wird der zu analysierende Text an den Webservice gesendet. Dieser erkennt die in dem Text vorkommenden Entitäten, reichert diese soweit möglich mit Metadaten an und gibt das Ergebnis im JSON-Format zurück.</p><p><img
class="lazy alignnone size-full wp-image-6834" title="webservice" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/08/webservice.png" alt="" width="557" height="242" /><noscript><img
class="alignnone size-full wp-image-6834" title="webservice" src="http://blog.sybit.de/wp-content/uploads/2012/08/webservice.png" alt="" width="557" height="242" /></noscript></p><h3>Fazit</h3><p>Die Möglichkeit homogene Schlagworte automatisch zu generieren ist ein erheblicher Vorteil wenn es darum geht Texte &#8211; und speziell die darin genannten Informationen &#8211; leicht auffindbar zu machen. Dies ist jedoch nur ein Aspekt unserer Lösung. Die zusätzliche Anreicherung mit Metadaten ist ebenfalls bedeutend, da dadurch viel mehr Möglichkeiten geschaffen werden die ermittelten Daten sinnvoll zu nutzen. <strong>Steckbriefe</strong> zu den vorkommenden Personen beispielsweise können einen<strong> großen Mehrwert für den Leser</strong> haben, da dieser nicht zwangsläufig mit den genannten Personen vertraut sein muss und sich bei Bedarf schnell und unkompliziert informieren kann. Eine weitere Möglichkeit ist die Verwendung von <strong>Ortsnamen</strong> bzw. deren <strong>GPS-Koordinaten</strong> zur Darstellung der Orte <strong>auf einer Karte</strong>. Der Nutzer könnte dann ortsbezogen navigieren und so Nachrichten zu einem Ort einfach abfragen da diese automatisch verknüpft werden.</p><p>Die genannten Beispiele für die Nutzung der extrahierten Informationen sind nur Anregungen was mit dem System möglich ist. Durch konsequente Integration und Verwendung der Daten kann ein großer Mehrwert für den Nutzer und für den Redakteur geschaffen werden. Wie und in welchem Umfang dies geschieht kann jeder Kunde für sich selbst bestimmen.</p><p><em>Bild</em>: <a
href="href=&quot;http://www.flickr.com/photos/shishberg/264141585" target="_blank">goran_zec/Flickr</a> (Lizenz: CC BY-SA 2.0)</p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/08/automatisierte-verschlagwortung/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/08/automatisierte-verschlagwortung/</feedburner:origLink></item> <item><title>Macht kaputt, was euch kaputt macht!</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/pEGiqNRxXeg/</link> <comments>http://blog.sybit.de/2012/07/website-lasttests/#comments</comments> <pubDate>Wed, 18 Jul 2012 08:06:17 +0000</pubDate> <dc:creator>Christian Güttinger</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[Accelerated Web]]></category> <category><![CDATA[Cache]]></category> <category><![CDATA[CDN]]></category> <category><![CDATA[CMS]]></category> <category><![CDATA[Testing]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=6625</guid> <description><![CDATA[Keine Angst in diesem Blog-Artikel wird es nicht politisch. Ich will auch nicht die APO wiederauferstehen lassen.Vielmehr geht es darum, wie man effektiv Webanwendungen an ihre Lastgrenzen bringt und wie man aus den gewonnenen Daten die richtigen Schlüsse zieht.Wenn es bei einer neu entwickelten Website mit extrem hohen Zugriffszahlen in Richtung Go-Live geht, stellt sich die Frage, ob die Gesamtlösung aus CMS, Media Asset Management, CDN, Cache etc. in ihrer Leistungsfähigkeit ausreichend für die erwarteten Besucherzahlen ausgelegt ist.]]></description> <content:encoded><![CDATA[<p><img
class="lazy size-medium wp-image-6630 alignleft" title="Lasttest" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/07/4137098683_592b46c33b-270x347.jpg" alt="" width="270" height="347" /><noscript><img
class="size-medium wp-image-6630 alignleft" title="Lasttest" src="http://blog.sybit.de/wp-content/uploads/2012/07/4137098683_592b46c33b-270x347.jpg" alt="" width="270" height="347" /></noscript><strong>Keine Angst in diesem Blog-Artikel wird es nicht politisch. Ich will auch nicht die APO wiederauferstehen lassen. </strong></p><p><strong>Vielmehr geht es darum, wie man effektiv Webanwendungen an ihre Lastgrenzen bringt und wie man aus den gewonnenen Daten die richtigen Schlüsse zieht.</strong></p><p>Wenn es bei einer neu entwickelten Website mit extrem hohen Zugriffszahlen in Richtung Go-Live geht, stellt sich die Frage, ob die Gesamtlösung aus CMS, Media Asset Management, CDN, Cache etc. in ihrer Leistungsfähigkeit ausreichend für die erwarteten Besucherzahlen ausgelegt ist.</p><h3>Gleichung mit mehreren Unbekannten</h3><p>Dieses Frage ist nicht trivial, da es in dieser auf den ersten Blick einfachen Gleichung viele Unbekannte gibt, die man erst einmal mit plausiblen Annahmen hinterlegen muss.</p><p>Da ist zunächst die Anzahl der Benutzer. Wenn man Glück hat, erstellt man eine Website nicht auf der grünen Wiese, sondern kann auf eine bestehende Nutzerstatistik zurückgreifen. Hier gilt es dann wesentliche Kennzahlen zu ermitteln:</p><ul><li>Wie viele <strong>Page-Visits pro Monat</strong> sind zu erwarten</li><li>Welches sind die <strong>normalen Lastspitzen (Peaks)</strong> in diesem Zeitraum</li><li>Gibt es Statistiken zu Peaks bei besonderen Ereignissen (9/11, Fukushima, Fußball WM, Olympiade, Live-Events)</li></ul><p>Wenn man ein <a
title="CMS-Projekte: Unsere Referenzen" href="http://www.sybit.de/de/media/referenzen.html">CMS-Projekt</a> für eine noch nicht bekannte Nutzer-Reichweite durchführt, hat man den Vorteil, dass sich die Nutzungszahlen nach dem Launch meistens kontinuierlich entwickeln.</p><p>Das Konzept muss daher sinnvolle Annahmen für die wichtigen Kennzahlen als Ausgangsbasis enthalten. Wichtig ist in diesem Zusammenhang ein <strong>schlüssiges Skalierungskonzept</strong> in der Hinterhand zu haben, um mit steigenden Nutzerzahlen und wachsendem Content klar zu kommen.</p><h3>Request Profil Aufzeichnung</h3><p>Hat man die Nutzer in ihrer Gesamtheit, so kann man diese auch versuchen in typische Benutzerprofile aufzuteilen. Im Grunde geht es darum eine Verteilungsfunktion für die Seiten des Angebots zu finden, die von Tests simuliert werden kann. Man wird also analysieren welche Seiten des Angebots aller Wahrscheinlichkeit nach überdurchschnittlich häufig aufgerufen werden. Im Idealfall bekommt man durch diese Analyse oder geeignete Annahmen eine handvoll <strong>Benutzerprofile</strong>, die man als Grundlage für ein Lastprofil nutzen kann.</p><p>Diese Daten benutzt man, um <strong>Abrufprofile</strong> zu erstellen indem man die entsprechenden Seiten und alle Ressourcen, die mit einem clientseitigen Abruf enthalten sind (z.B. Bilder, JS, CSS, Flash, Audio/Video) aufzeichnet und das Abrufprotokoll <strong>als Basis für die Lastsimulation</strong> nutzt.</p><p>Hierzu gibt es unterschiedliche Strategien. Will man nah an den Benutzerprofilen bleiben, muss man die Requests in einem Browser ausführen, um auch Einflüsse des User Agent und Abrufe die erst beim Rendering zum Tragen kommen, beispielsweise Ressourcen aus dem CSS, zu berücksichtigen. Man sollte sich nicht auf einfache Spidertools (wie <a
href="http://www.gnu.org/software/wget/" target="_blank">wget</a> o.ä.) verlassen. Diese sind nur hilfreich, wenn man die Gesamtheit der Webseite als Basisprofil in dem Lasttest zugrunde legt.</p><p>Eine gute Möglichkeit beide Welten miteinander zu verbinden, ist <a
href="http://bclary.com/projects/spider/" target="_blank">Mozilla Spider</a>, eine Chrome/XUL Anwendung für Mozilla basierte Browser. Damit kann man die Webseite abspidern und hat dennoch ein realistisches Request-Profil, denn die Seiten werden komplett gerendert. Die Request-Protokolle kann man entweder clientseitig mitschneiden oder dem Logging des Webservers entnehmen.</p><h3>So früh wie nötig, so spät wie möglich</h3><p><strong>Wann ist der richtige Zeitpunkt für Lasttests</strong>? Testet man zu früh, dann geht man das Risiko ein, dass mit ausstehenden Feature-Implementierungen noch Bestandteile hinzukommen, die sowohl Einfluss auf die Performance als auch auf die Benutzerprofile haben. Dann ist die Aussagekraft eines solchen Tests gering und mit einer gewissen Unsicherheit behaftet.</p><p>Testet man jedoch zu spät, wird man in vielen Fällen Probleme bei der Behebung der Performance-Engpässe bekommen, was den Go-Live im schlimmsten Fall verzögert oder das Projekt verteuert.</p><p><strong>Welche Bestandteile möchte man eigentlich bei einem Lasttest überprüfen?</strong> Meiner Meinung nach erreicht man die beste Aussagekraft, wenn man alle Komponenten in ihrer Gesamtheit, möglichst nahe am Produktiv-Betrieb testet. Denn nicht nur die Ausspiel-Webserver und ein Content-Management / Redaktionssystem haben großen Einfluss auf das Lastverhalten, sondern auch die vorgelagerten Komponenten, wie Load-Balancer, Firewall, Cache-Server, CDNs und die gesamte Hardware-Infrastruktur inklusive Internetanbindung.</p><div
id="attachment_6651" class="wp-caption alignleft" style="width: 544px"><img
class="lazy size-full wp-image-6651" title="Diagramm Lasttest" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/07/diagramm_blogartikel.jpg" alt="Diagramm Lasttest" width="534" height="174" /><p
class="wp-caption-text"><noscript><img
class="size-full wp-image-6651" title="Diagramm Lasttest" src="http://blog.sybit.de/wp-content/uploads/2012/07/diagramm_blogartikel.jpg" alt="Diagramm Lasttest" width="534" height="174" /></noscript> Diagramm Lasttest</p></div><h3>Over the top</h3><p>Ich glaube, eine wirklich belastbare Antwort darauf, wie gut ein System mit Last umgehen kann, wird man nur finden, wenn man es an seine Grenzen bringt, den <strong>Lasttest als Stresstest</strong> auslegt.</p><p>Die Hauptschwierigkeit ist dabei die Rolle von <strong>Caching und Cache-Invalidierung</strong> zu beurteilen. Um einen realistischen Betrieb auch Backend-seitig zu simulieren und dabei das richtige Verhältnis von Cache-Invalidierung und Abruf gecachter Seiten zu finden, braucht man in vielen Fällen eine Glaskugel.</p><p>Deshalb bin ich der Meinung, dass man eine sehr viel verlässlichere Datenbasis bekommt, wenn man bei einem <strong>Stresstest die Grenzfälle testet</strong>. Das heißt gänzlich gecachte Inhalte-Ausspielung und vollkommen ungecachte Ausspielung.</p><p>Diese beiden Fälle sollte man mit den angenommenen Benutzerprofilen mit steigenden parallelen Zugriffen bis an die Grenzen des Gesamtsystems testen. <strong>Die Prämisse ist also das Gesamtsystem so zu belasten, dass es nicht mehr zufriedenstellend funktioniert, damit dieser Fall nicht im produktiven Betrieb auftritt und man vorher reagieren kann:</strong></p><blockquote><p>Macht kaputt, was euch kaputt macht!</p></blockquote><p>Ein solcher Stresstest sollte folgende Erkenntnisse bringen:</p><ul><li>Wann ist die Grenze zumutbarer <strong>Antwortzeiten durch die Ausspielserver</strong> erreicht?</li><li>Wann ist die <strong>Bandbreite der Anbindung</strong> ausgereizt?</li><li>Wann ist die <strong>Belastungsgrenze der Ausspielserver</strong> erreicht?</li><li>Gibt es <strong>anhaltende Ausfalleffekte</strong>, die sich mit dem Verringern der Last nach dem Stresstest nicht auflösen?</li><li>Welche Maßnahmen lassen sich ergreifen, um die Lastgrenze weiter nach oben zu verschieben?</li></ul><p>Um die Daten eines Lasttests zu interpretieren, sollte man sich intensiv vorbereiten. Nur das Antwortzeitverhalten zu messen ist definitiv zu wenig. Man kann so keine Aussage machen, welche Komponenten die begrenzenden Faktoren darstellen.</p><p>Folgende Messzahlen sollte man erfassen:</p><ul><li><strong>Antwortzeiten</strong> / Anzahl der Aufrufe über die Zeit auf Clientseite</li><li><strong>Prozessorauslastung</strong> der Ausspielserver</li><li><strong>Festplattenzugriffe</strong></li><li><strong>Speicherentwicklung</strong></li><li>Monitoring von <strong>Load-Balancer</strong> und <strong>Firewall</strong></li><li>Monitoring der <strong>Netzwerk-Anbindung</strong> und <strong>Auslastung der Bandbreite</strong></li></ul><h3>Lastesel</h3><p>Ein Problem ist die Last realitätsnah zu erzeugen. Man benötigt genügend Lasttreiber mit einer ausreichenden Bandbreite bezüglich der lokalen und verteilten Komponenten. Um Lasttests mit minimalem Aufwand durchzuführen, nutzen wir intern eine <strong>Test-Grid</strong>, welches mit bootbaren Linux-Live Distributionen arbeitet. Hier kann man ohne langwierige Konfiguration einen beliebigen Rechnerpool in kurzer Zeit zu einem Lasttest-Treiber machen.</p><p>Wichtige Voraussetzung ist, dass die <strong>begrenzenden Faktoren dieser Konfiguration</strong> bekannt sind, da man sonst die Ergebnisse nicht interpretieren kann und eventuell sinnlose Tests durchführt. Man sollte also die Ausgangskapazitäten für Netzwerk und die Multithreading-Fähigkeiten der Prozessoren in der konkreten Konfiguration des Test-Sets berücksichtigen.</p><h3>Cloud Power</h3><p>Interessante Entwicklungen auf diesem Gebiet sind die Nutzung von <strong>Cloud-Computing</strong> zur variablen Gestaltung der Basis für einen Last- und Performance-Test. Hier kann man mit wenig Aufwand einen umfangreichen Rechnerpool aufbauen, ohne diese Systeme selbst vorhalten zu müssen oder viel Zeit in die Basiskonfiguration zu investieren.</p><h3>„Last“ words</h3><p>Welche Schlüsse sind aus einem Lasttest zu ziehen? In den wenigsten Fällen wird man eine einfache Antwort erhalten. Meist ergibt sich doch eine<strong> Verkettung von verschiedenen Parametern</strong>.</p><p>Im dem einen Fall wird es ausreichen, die Prozessorleistung zu erhöhen, um akzeptable Werte zu erhalten. Im nächsten Projekt wird man eine umfangreiche Laufzeitoptimierung der Applikation vornehmen müssen.</p><p>Was immer es auch ist, es ist besser diese Fallstricke vorher zu kennen, als mit dem Launch in einen offenen Beta-Test zu gehen. So bringt man dann auch ein <a
title="ARD Olympiaportal: Highperformance Portal mit Sophora" href="http://www.sybit.de/de/media/news/2010/ard_olympia_portal.html">Portal zur Olympiade </a>performant an den Start.</p><p><em>Titelbild</em>: <a
href="http://www.flickr.com/photos/gazeronly/4137098683/" target="_blank">gazeronly</a> / flickr.com (CC BY 2.0)</p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/07/website-lasttests/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/07/website-lasttests/</feedburner:origLink></item> <item><title>medienforum.nrw: All Media mobil</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/aamUa3yE-ps/</link> <comments>http://blog.sybit.de/2012/07/all-media-mobil/#comments</comments> <pubDate>Fri, 06 Jul 2012 08:43:49 +0000</pubDate> <dc:creator>Stephan Strittmatter</dc:creator> <category><![CDATA[Media]]></category> <category><![CDATA[konferenz]]></category> <category><![CDATA[medienforum.nrw]]></category> <category><![CDATA[mobil]]></category> <category><![CDATA[Smart TV]]></category> <category><![CDATA[Smartphone]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=6535</guid> <description><![CDATA["All Media mobile", unter dieses Motto könnte man vordergründig das diesjährige Medienforum.NRW in Köln stellen. Doch ganz wird es der Vision nicht gerecht, denn es geht nicht nur um die mobile Nutzung, sondern auch um die unmittelbare Verfügbarkeit - immer und überall. Im Folgenden möchte ich dazu die Visionen und Meinungen aus dem Kongress skizzieren.]]></description> <content:encoded><![CDATA[<div><p><strong><img
class="lazy alignleft size-medium wp-image-6537" title="Ossi Urchs, F.F.T. MedienAgentur im Gespräch mit Fernando Burgos, Telefónica Germany" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/07/2012-06-20-10.49.07-270x201.jpg" alt="" width="270" height="201" /><noscript><img
class="alignleft size-medium wp-image-6537" title="Ossi Urchs, F.F.T. MedienAgentur im Gespräch mit Fernando Burgos, Telefónica Germany" src="http://blog.sybit.de/wp-content/uploads/2012/07/2012-06-20-10.49.07-270x201.jpg" alt="" width="270" height="201" /></noscript>&#8220;All Media mobile&#8221;, unter dieses Motto könnte man vordergründig das diesjährige <a
href="http://www.medienforum.nrw.de/">Medienforum.NRW</a> in Köln stellen. Doch ganz wird es der Vision nicht gerecht, denn es geht nicht nur um die mobile Nutzung, sondern auch um die unmittelbare Verfügbarkeit &#8211; immer und überall. Im Folgenden möchte ich dazu die Visionen und Meinungen aus dem Kongress skizzieren.</strong></p><h2><strong>Mobile, mobile, mobile, &#8230;</strong></h2><p>Ein ganz zentrales Thema war natürlich das Thema Mobile. Dabei ging es im Gegensatz zum vergangenen Jahr überhaupt nicht mehr um die Technologien: iOS, Android, Windows 8 oder doch HTML5/JavaScript? Nein, vielmehr sind die Ökosysteme und Marktplätze Dreh- und Angelpunkt. Man hat erkannt, dass die Technik nicht ausschlaggebend ist. Sicher, sie muss funktionieren, aber viel wichtiger sind Zusammenspiel der Betriebssysteme, App-Stores und Bezahldiensten und schlussendlich die Auffindbarkeit der Apps. Auch das Mobilfunknetz gehört als zentrales Element zu diesem Ökosystem. So hat der Sohn eines Erikson-Managers seinen Vater als Looser gesehen, so berichtete er persönlich: Als Manager bei Erikson hat er es nicht geschafft WLAN, für den Nintendo DS spielenden Sprössling, ins Familienauto zu bringen. Die Verfügbarkeit des Netzes wird immer und überall erwartet. Mit LTE steht ein Standard in den Startlöchern, der auch die Performance verspricht, die man für Videos benötigt. Bei LTE Adv. werden in Zukunft 16 Mbps durch den Äther gebeamt.</p><h2><strong>Bewegtbild auf dem Smart TV</strong></h2><p>Neben der mobilen Nutzung der Medien ist der Smart TV bereits in den Wohnzimmern angekommen. Es wird zwar noch heiß diskutiert, wie viele Smart TV wirklich &#8220;connected&#8221;, also mit dem Web verbunden, sind. Doch sind sich die meisten Experten einig, dass Web und Broadcast, das klassische Fernsehen auf den Fernsehern, im Wohnzimmer verschmelzen. Marc Schröder von RTL verglich den aktuellen Stand der Smart TV mit WAP auf den Handys der 1990er: Die Bedienung ist noch sehr umständlich. Bedienkonzepte mittels klassischer Fernbedienungen aus dem letzten Jahrtausend und numerisch vergebene Programmplätze für die Sender bieten nicht die notwendige Userexperience, um das Lean-Back-Gefühl vom linearen Fernsehprogramm auf die Webebene des Fernsehers zu transportieren.</p><h2><strong>Glotz ich noch TV?</strong></h2><div><p>Das haben auch die Hersteller von Apps und Fernsehgeräten erkannt und setzen auf den Second Screen. Dabei ist allerdings schwer zu definieren, welcher Screen wirklich der erste und welcher der zweite ist: Tablet oder Fernseher? Eine Rangfolge ist nicht immer erkennbar. Da die Interoperabilität zwischen den Devices mehr und mehr einfacher wird, werden die Displays zukünftig eher in Klassen eingestuft: Großbildschirm (TV, Monitor, Beamer), Tablet und Smartphone. Der Formfaktor beeinflusst Bedienweise und Einsatz der Geräte. Wo der große Bildschirm für das Lean-Back-Feeling sorgt, da beugen sich die Digital Natives in der S-Bahn über das Smartphone &#8211; Lean-Forward.</p></div><div
id="attachment_6538" class="wp-caption alignright" style="width: 605px"><img
class="lazy size-large wp-image-6538" title="Always Access: Smartphone non-voice usage" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/07/2012-06-20-11.56.37-595x444.jpg" alt="Immer Online: Die Smartphone-Nutzung - ohne Telefonate" width="595" height="444" /><noscript><img
class="size-large wp-image-6538" title="Always Access: Smartphone non-voice usage" src="http://blog.sybit.de/wp-content/uploads/2012/07/2012-06-20-11.56.37-595x444.jpg" alt="Immer Online: Die Smartphone-Nutzung - ohne Telefonate" width="595" height="444" /></noscript><p
class="wp-caption-text">Immer Online: Die Smartphone-Nutzung - ohne Telefonate</p></div><p>Apropos S-Bahn, die Nutzung der mobilen Dienste findet nach einer Untersuchung 70-80% zu Hause statt,  beim Tablet eher mehr. Beim Smartphone sind es immer noch 70% der Nutzungszeit. Die Kombination TV und Smartphone ist also bei dem Fernsehkonsum von <strong>durchschnittlich 195 Minuten</strong> ein wichtiger alltäglicher &#8220;Use-Case&#8221; für Fernsehsender und Anbieter der Endgeräte. Das Werben um den Verbraucher ist im vollem Gange.</p><h2><strong>Content is King, Package is God</strong></h2><p>Durch die Verschmelzung &#8211; der Konvergenz der Medien &#8211; die durch die Geräte massiv unterstützt wird, wird auch das klassische lineare Fernsehen verändert. WebTV in seinen Facetten wird vermehrt zur Alternative der klassischen Fernsehkanäle. Zunächst denkt man hier an die Klassiker, wie <a
href="http://www.youtube.com/">YouTube</a> oder <a
href="http://www.myvideo.com/">MyVideo</a>, doch der Markt des WebTVs ist weit größer. Jeder Dienst versucht sein Alleinstellungsmerkmal zu positionieren: Video on Demand (VoD), Social Community, kuratierte Channels oder exklusiver Content.  Jan Lerch von <a
href="http://www.tape.tv/">Tape.tv</a> hat einen Satz geprägt, der mir in diesem Zusammenhang sehr treffend erscheint:</p><blockquote><p><em>Content is King, Package is God!</em></p><p
style="text-align: right;">- Jan Lerch, <a>Tape.tv</a></p></blockquote><p>Durch eine redaktionelle Zusammenstellung des Contents wird der Surfer mit Inhalten bedient. Im Gegensatz zum linearen Fernsehen jedoch zeitunabhängig. Zurück gelehnt kann sich der Zuschauer aber mit den vorgeschlagenen Inhalten bedienen lassen.</p><div><h2>Exklusivität des Fernsehens</h2><p>In einer der Podiumsdiskussionen konstatierte einer der Redner, dass dem Fernsehen das gleiche Los wie dem Rundfunk beschert sei. Wo unsere Großeltern sich gemeinsam vor dem Radio für eine Sendung im Wohnzimmer versammelt haben, läuft heutzutage das Radio in Bad und Küche nebenher. Gleiches prognostizieren die Experten dem Fernsehen. Schon heute ist durch die Parallelnutzung von Smartphone und Tablet der Weg dahin beschert, dass das Fernsehprogramm die exklusive Aufmerksamkeit der Zuschauer verliert.</p><p>Durch Eventshows und interaktive Elemente versuchen die Broadcaster dem entgegenzuwirken und blenden beispielsweise Werbung auch als Banner in die laufende Sendung ein, um so die volle Aufmerksamkeit zu bekommen.</p><h2><strong>Werbung und Smart TV</strong></h2><p>Apropos Werbung, es gab eine recht hitzige Diskussion zur aktuellen Gesetzeslage in Verbindung mit Smart TV Applikationen. Der Politik wurde vorgeworfen, die Entwicklungen verschlafen zu haben und eine schnelle Reaktion wurde gefordert. Thematisiert werden Apps auf den Fernsehgeräten, die als Overlay Teile des Livebildes überlagern können und so beispielsweise Werbung überlagert wird. Ein Problem für die Broadcaster, die maßgeblich auf die Werbeerlöse angewiesen sind.</p><p>Das Spannungsfeld zwischen Gerätehersteller und Broadcaster wurde in der Diskussion sichtbar. So verweigern beispielsweise einige TV-Sender die HbbTV-Ausspielung auf bestimmten Geräten: Die Gerätehersteller halten sich aus Sicht der Sender nicht an Bedingungen, die diese erwarten: Das zuletzt ausgewählte TV- Programm ist beim Wiedereinschalten nicht voreingestellt und es erscheint Werbung des TV-Herstellers beim Einschalten. Man merkt, keiner möchte von seinem Kuchen etwas abgeben. Zumal noch keiner richtig weiß, wo die <a
title="Couch Surfing: Das Internet zu Gast auf dem TV" href="http://blog.sybit.de/2011/08/couchsurfing-das-internet-zu-gast-auf-dem-tv/">Reise des Smart TV</a> letztendlich wirklich hin geht.</p><h2><strong>Fazit</strong></h2><div><div
id="attachment_6540" class="wp-caption alignleft" style="width: 280px"><img
class="lazy size-medium wp-image-6540 " title="Diskussion zum WebTV mit Dr. Jessica Eisermann, Einsfestival// Bertram Gugel, gugelproductions // Richard Gutjahr, Bayerisches Fernsehen // Florian Hoffmann, vogelheim.tvn // Jan Lerch,  Tape.TV" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/07/2012-06-19-14.40.20-270x201.jpg" alt="Diskussion zum WebTV mit Dr. Jessica Eisermann, Einsfestival// Bertram Gugel, gugelproductions // Richard Gutjahr, Bayerisches Fernsehen // Florian Hoffmann, vogelheim.tvn // Jan Lerch,  Tape.TV" width="270" height="201" /><noscript><img
class="size-medium wp-image-6540 " title="Diskussion zum WebTV mit Dr. Jessica Eisermann, Einsfestival// Bertram Gugel, gugelproductions // Richard Gutjahr, Bayerisches Fernsehen // Florian Hoffmann, vogelheim.tvn // Jan Lerch,  Tape.TV" src="http://blog.sybit.de/wp-content/uploads/2012/07/2012-06-19-14.40.20-270x201.jpg" alt="Diskussion zum WebTV mit Dr. Jessica Eisermann, Einsfestival// Bertram Gugel, gugelproductions // Richard Gutjahr, Bayerisches Fernsehen // Florian Hoffmann, vogelheim.tvn // Jan Lerch,  Tape.TV" width="270" height="201" /></noscript><p
class="wp-caption-text">Diskussion zum WebTV</p></div><p>Nach dem Smartphone werden Smart TVs die Haushalte erobern. Hersteller wie Fernsehsender versuchen die Chancen der Verbindung von linearen mit nichtlinearen Inhalten. Aber auch die Interaktion mit dem Zuschauer wird geprobt. So gibt Richard Gutjahr offen zu, dass er in der vierwöchigen Pilotsendung <a
href="http://blog.br.de/rundshow/">Rundshow</a> alles an Interaktionsmöglichkeiten eingebaut hatte, was nur ging. Es war eine einmalige Chance zu experimentieren, was mit aktueller Technik machbar ist.</p></div><p>Aus schnell zusammengestellten Lösungen werden zukünftig professionelle und tragfähige Lösungen entwachsen müssen, damit auch ein <a
href="http://www.basicthinking.de/blog/2012/05/14/tatort-ohne-auflosung-mordersuche-im-internet-und-interkatives-fernsehen-zweiter-versuch/">interaktiver Tatort</a> den Zugriffen standhalten kann. Aktuell will noch jeder der erste an der Zielgerade sein, doch schon bald werden strukturierte und auch technisch auf festem Fundament gegründete Lösungen den Verbraucher überzeugen, bevor dieser den Spaß verliert.</p></div></div> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/07/all-media-mobil/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/07/all-media-mobil/</feedburner:origLink></item> <item><title>Spring Batch</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/-7_wKfQ9cQg/</link> <comments>http://blog.sybit.de/2012/06/spring-batch/#comments</comments> <pubDate>Mon, 18 Jun 2012 08:59:03 +0000</pubDate> <dc:creator>Rolf Gehring</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[Spring]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=6003</guid> <description><![CDATA[Der Begriff der Batch- bzw. Stapelverarbeitung stammt aus der Anfangszeit der Datenverarbeitung, als ein Programm noch aus einem Stapel von Lochkarten bestand. Heute versteht man darunter einen Prozess der ohne Benutzerinteraktion eine oft große Datenmenge sequentiell abarbeitet. Auch heute sind Batchverarbeitungen von großer Bedeutung. Oft handelt es sich um komplexe Berechnungen auf großen Datenmengen deren Ergebnisse sehr wichtig für die Unternehmen sind wie z.B. Lohnabrechnungen, Monatsabschlüsse und ähnliches.]]></description> <content:encoded><![CDATA[<h3><img
class="lazy alignleft size-medium wp-image-6340" title="Spring Batch" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/06/3047045861_c0bb7831fd-270x421.jpg" alt="" width="270" height="421" /><noscript><img
class="alignleft size-medium wp-image-6340" title="Spring Batch" src="http://blog.sybit.de/wp-content/uploads/2012/06/3047045861_c0bb7831fd-270x421.jpg" alt="" width="270" height="421" /></noscript>Einleitung – Warum Spring Batch</h3><p>Der Begriff der Batch- bzw. Stapelverarbeitung stammt aus der Anfangszeit der Datenverarbeitung, als ein Programm noch aus einem Stapel von Lochkarten bestand. Heute versteht man darunter einen Prozess, der ohne Benutzerinteraktion eine oft große Datenmenge sequentiell abarbeitet. Auch heute sind Batchverarbeitungen von großer Bedeutung. Oft handelt es sich um komplexe Berechnungen auf großen Datenmengen, deren Ergebnisse sehr wichtig für die Unternehmen sind wie z.B. Lohnabrechnungen, Monatsabschlüsse und Ähnliches.</p><p>An Batchverarbeitungen werden also hohe Anforderungen in Sachen <strong>Robustheit</strong>, <strong>Skalierbarkeit</strong>, <strong>Performanz</strong> und <strong>Wartbarkeit</strong> gestellt. Zwar haben sich über die Jahre verschiedene Prinzipien zur Batchverarbeitungen bewährt, bis vor kurzem mussten diese jedoch insbesondere in der Java-Welt immer wieder neu in den spezifischen Projekten implementiert werden. Bei der Entwicklung von komplexen Batch-Prozessen nimmt die technische Einbindung der Batchverarbeitung meist sehr viel Zeit in Anspruch, die sinnvoller für die Business-Anforderungen investiert werden sollte.</p><p>Mit <a
title="Spring Batch" href="http://static.springsource.org/spring-batch/" target="_blank">Spring Batch </a>hat sich die Spring Foundation diesem Missstand angenommen und stellt ein interessantes Framework bereit, um die Entwicklung von Batchverarbeitungen deutlich zu vereinfachen. Wie bei Spring-Projekten üblich, verfolgt auch Spring-Batch einen <strong>leichtgewichtigen Ansatz,</strong> der die Businesslogik mit wenigen spezifischen Anpassungen belastet.</p><p>Dieser Artikel gibt im Folgenden eine kurze Einführung in Spring-Batch. Für tiefere Einblicke sollte die sehr gute Dokumentation zu Rate gezogen werden. Da Spring-Batch in der Version 1.3 oder in der Version 2.0 eingesetzt werden kann, muss darauf geachtet werden, auf welche Version sich die Dokumentation bezieht.</p><h3>Spring Batch Elemente</h3><p>Spring-Batch gliedert sich in die zwei Komponenten <strong>Core</strong> und <strong>Infrastructure</strong>. Während ersteres die grundlegenden Interfaces und Implementierungen beinhaltet, bietet letzteres Paket Interfaces zur Anpassung an spezielle Ausführungsumgebungen wie JMS, ESB/SEDA oder Grid-Architekturen. Mitgeliefert ist eine einfache Ausführungsumgebung, die für allgemeine Fälle ausreichend ist. Diese beinhaltet bereits Implementierungen für vereinfachtes Handling von Datenbanken oder zeilenweises Auslesen und Verarbeiten von Dateien in Batchprozessen.</p><h4>Job &amp; Step</h4><p>Ein Job bezeichnet die Definition eines Batch-Prozesses. Ein Job besteht aus einzelnen Steps, die in einer vorgegebenen Reihenfolge durchlaufen werden.</p><pre class="brush: xml; title: ; notranslate">

&lt;job id=&quot;footballJob&quot;&gt;
  &lt;step id=&quot;playerload&quot; next=&quot;gameLoad&quot;/&gt;
  &lt;step id=&quot;gameLoad&quot; next=&quot;playerSummarization&quot;/&gt;
  &lt;step id=&quot;playerSummarization&quot;/&gt;
&lt;/job&gt;
</pre><h4>JobInstance, JobParameter &amp; JobExecution</h4><p>Eine JobInstance ist eine geplante Ausführung einer Job-Definition, z.B die Ausführung eines Jobs zu einer bestimmten Uhrzeit. Eine JobInstance wird mit den JobParameters, z.B. dem Ausführungszeitpunkt,  parametrisiert.</p><p>Eine JobExecution ist die tatsächliche Ausführung einer JobInstance. Die Unterscheidung von JobInstance und JobExecution ist darin begründet, dass eine JobExecution fehlschlagen kann. Dann muss es möglich sein, dieselbe JobInstance erneut auszuführen, ohne dass die in der JobExecution gespeicherten Informationen über die Ausführung verloren gehen.</p><h4>ItemReader, ItemWriter &amp; ItemProcessor</h4><p>Innerhalb eines Steps werden die einzelnen Verarbeitungseinheiten definiert. Diese Verarbeitungseinheiten sind ItemReader, ItemProcessor und ItemWriter.</p><p>ItemReader ist ein einfaches Interface, das vom Entwickler implementiert werden kann. Ein ItemReader ist dafür verantwortlich, einen Datensatz aus der Datenquelle zu lesen und zurückzugeben.</p><pre class="brush: java; title: ; notranslate">
public interface ItemReader&lt;T&gt; {
 T read() throws Exception, UnexpectedInputException, ParseException;
}
</pre><p>SpringBatch bringt schon eine Vielzahl von <a
title="ItemReader Implementierungen" href="http://http://static.springsource.org/spring-batch/reference/html-single/index.html#itemReadersAppendix">ItemReader Implementierungen</a> mit &#8211; wie beispielsweise <strong>FlatFileItemReader</strong>, <strong>JdbcCursorItemReader</strong> oder <strong>JpaPagingItemReader</strong> &#8211; welche sich einfach konfigurieren und benutzen lassen.</p><p>ItemProcessor ist ein Interface, um ein Item &#8211; welches vom ItemReader eingelesen wurde &#8211; zu verarbeiten. Hier spielt sich typischerweise ein wichtiger Teil der Business Logik ab. Es können Berechnungen durchgeführt sowie Daten transformiert werden. In vielen Anwendungsfällen sind jedoch keine gesonderten Berechnungen nötig, daher ist die Definition eines ItemProcessors innerhalb eines Steps optional.</p><pre class="brush: java; title: ; notranslate">
public interface ItemProcessor&lt;I, O&gt; {
  process(I item) throws Exception;
}
</pre><p>Eine ItemWriter implementierende Klasse ist das Gegenstück zum ItemReader. Sie ist dafür verantwortlich die Daten zu persistieren.</p><pre class="brush: java; title: ; notranslate">
public interface ItemWriter&lt;T&gt; {
  void write(List&lt;? extends T&gt; items) throws Exception;
}
</pre><p>Auch hier bietet Spring-Batch eine Vielzahl vorgefertigter <a
title="Implementierungen" href="http://static.springsource.org/spring-batch/reference/html-single/index.html#itemWritersAppendix">ItemWriter-Implementierungen</a> an.</p><p>In Spring-Batch 2.0 ist eine <strong>Verarbeitung in so genannten Chunks</strong> vorgesehen. So werden ItemReader, ItemWriter und optional ItemProcessor für jeden Step innerhalb eines Chunks definiert. Der ItemReader liest eine bestimmte (konfigurierte) Zahl von Datensätzen ein, die der ItemProcessor dann verarbeitet. Der ItemWriter persistiert aber immer einen Chunk, also mehrere Datensätze gleichzeitig. Die Größe eines Chunks ist mit dem <em>commit-interval</em> konfigurierbar.</p><p><code></code><code><br
/> </code></p><div
id="attachment_6008" class="wp-caption aligncenter" style="width: 411px"><img
class="lazy size-full wp-image-6008   " title="Spring Batch Reader-Writer Sequenzendiagramm" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/05/readerwriter.png" alt="Sequenzdiagramm Reader-Writer" width="401" height="320" /><noscript><img
class="size-full wp-image-6008   " title="Spring Batch Reader-Writer Sequenzendiagramm" src="http://blog.sybit.de/wp-content/uploads/2012/05/readerwriter.png" alt="Sequenzdiagramm Reader-Writer" width="401" height="320" /></noscript><p
class="wp-caption-text">Sequenzdiagramm Reader-Writer (Quelle: Spring Batch Dokumentation)</p></div><p>Jobs werden im Spring Context File definiert. Durch den von Spring bekannten Dependency Injection Mechanismus können Implementierungen von ItemReader, ItemWriter oder ItemProcessor als einfache POJOs deklariert werden. Durch die Separation der einzelnen Schritte in einzelne Klassen lassen sich die Schritte einfach warten und können auch wiederverwendet werden.</p><p><strong>Beispiel Job:</strong></p><pre class="brush: xml; title: ; notranslate">
&lt;job id=&quot;sampleJob&quot; job-repository=&quot;jobRepository&quot;&gt;
 &lt;step id=&quot;step1&quot;&gt;
   &lt;tasklet transaction-manager=&quot;transactionManager&quot;&gt;
     &lt;chunk reader=&quot;itemReader&quot; writer=&quot;itemWriter&quot; commit-interval=&quot;10&quot;/&gt;
   &lt;tasklet&gt;
 &lt;/step&gt;
&lt;/job&gt;
</pre><p>Spring Batch bietet viele weitere Funktionalität für den Aufbau von transaktionalen Jobs, bei denen im Fehlerfall feingranular gesteuert werden kann, ob und wieweit die bisher verarbeiteten Daten gespeichert oder ob ein Rollback durchgeführt werden soll.</p><p>Für querschnittliche Aspekte wie zum Beispiel Logging oder Fehlerbehandlung können diverse Listener implementiert und über die XML-Konfiguration gesetzt werden.</p><h3>Praxiseinsatz</h3><p>Bei einem unserer Projekte stand ein Refactoring der Suchindizierungslogik an. Im Zuge dessen haben wir die bestehende Logik auf Spring Batch umgebaut.</p><p><strong>Aufgabe</strong>: Befüllen eines <a
title="Solr" href="http://lucene.apache.org/solr" target="_blank">Solr</a>-Suchindexes aus XML-Daten. In den XML-Daten sind diverse „Dokumenttypen“ enthalten, unter anderem Audio/Video, Artikel, Segmente und GeoSegmente. Vor dem Indizieren werden die einzelnen Solr-Einträge mit umfangreichen Berechnungen aus den Roh-Daten erzeugt. Dabei gibt es einen initialen Prozess, welcher einen leeren Solr-Index aus dem kompletten Datenbestand befüllt und einen kontinuierlichen Update-Prozess, der nur noch Änderungen geschickt bekommt und die entsprechenden Solr-Einträge anpasst.</p><p>Bisher wurden  zum Indizieren mehrere Java-Klassen mit zum Teil sehr langen Methoden eingesetzt. Nach dem Umbau auf Spring Batch zerfielen diese in sehr viele kleine Java-Klassen. Die Jobs werden in einer Spring-XML deklariert, dabei können die deklarierten Beans mehrfach verwendet werden.</p><p>Ein Vorher/Nachher Vergleich mit <a
title="Architektur-Review mit CodeCity" href="http://blog.sybit.de/2012/05/architektur-review-mit-codecity/">CodeCity </a>bietet folgendes Bild:</p><div
id="attachment_6005" class="wp-caption aligncenter" style="width: 605px"><a
href="http://blog.sybit.de/wp-content/uploads/2012/05/code-old.jpg" class="thickbox no_icon" rel="gallery-6003" title="Spring-Batch Alter Code"><img
class="lazy size-large wp-image-6005 " title="Spring-Batch Alter Code" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/05/code-old-595x517.jpg" alt="CodeCity mit dem &quot;alten&quot; Code vor der Spring Batch Umstellung" width="595" height="517" /><noscript><img
class="size-large wp-image-6005 " title="Spring-Batch Alter Code" src="http://blog.sybit.de/wp-content/uploads/2012/05/code-old-595x517.jpg" alt="CodeCity mit dem &quot;alten&quot; Code vor der Spring Batch Umstellung" width="595" height="517" /></noscript></a><p
class="wp-caption-text">CodeCity mit dem &quot;alten&quot; Code vor der Spring Batch Umstellung</p></div><p>Gut zu erkennen sind mehrere hohe und vor allem breite Gebäude. Das blaue breite Gebäude ganz vorne bildet die Hauptklasse für die Indizierungslogik in Solr ab. Dieses Gebäude wurde durch den Einsatz von Spring Batch „abgerissen“. Anstelle des ehemals unansehnlichen „Klotzes“ entstand eine gemütliche Neubausiedlung aus vielen kleinen Einfamilienhäusern, wie der grün markierte Bereich in dem folgenden Bild veranschaulicht.</p><div
id="attachment_6007" class="wp-caption aligncenter" style="width: 605px"><a
href="http://blog.sybit.de/wp-content/uploads/2012/05/code-new.jpg" class="thickbox no_icon" rel="gallery-6003" title="Spring-Batch Neuer Code"><img
class="lazy size-large wp-image-6007 " title="Spring-Batch Neuer Code" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/05/code-new-595x517.jpg" alt="CodeCity mit dem Code nach der Spring-Batch Umstellung" width="595" height="517" /><noscript><img
class="size-large wp-image-6007 " title="Spring-Batch Neuer Code" src="http://blog.sybit.de/wp-content/uploads/2012/05/code-new-595x517.jpg" alt="CodeCity mit dem Code nach der Spring-Batch Umstellung" width="595" height="517" /></noscript></a><p
class="wp-caption-text">CodeCity mit dem Code nach der Spring-Batch Umstellung</p></div><p><em>Hinweis:<br
/> Durch die Einführung von Spring Batch wurden auch gewisse Klassen in andere Packages verschoben. Das erklärt den leicht anderen Aufbau der CodeCity. Zudem macht die mit Spring Batch umgesetzte Funktionalität nur ein Teil des gesamten Modul-Codes aus.</em></p><p>Zusätzlich zu den Klassen gibt es noch eine Spring XML-Datei, welche die benötigten Jobs (initialer Job, Update Job, sowie zusätzliche Jobs) mit allen ihren Steps und Listener definiert.</p><p><strong>Performance</strong></p><p>Die Umstellung auf Spring Batch brachte einen <strong>großen Performance Vorteil</strong>, da am eigentlichen Code durch die Modularisierung einige Schwachstellen (z.B. zu häufiges Committen an den Solr-Index) gefunden und eliminiert werden konnten. Den Overhead, den Spring Batch mit sich bringt, war bei unserem Projekt vernachlässigbar gering. Nach unserer Erfahrung geht die meiste Zeit in einem Programmablauf beim „warten“ auf externe Systeme (Datenbank,  Suche-Index, Web-Service, Filesystem etc.) verloren. D.h. durch ein Optimieren dieser Aufrufe lässt sich meist mehr Zeit einsparen, als ein Framework wie Spring Batch kostet.</p><p><strong>Fazit</strong></p><p>Spring Batch, wie auch Spring im Allgemeinem, hilft dem Entwickler seinen Code modularer zu gestalten. Das Design von Spring Batch hilft dem Entwickler dabei kleine und übersichtliche Klassen zu implementieren.</p><p>Des Weiteren hilft die Modellierung des Batch-Ablaufs in XML, die Prozesse besser zu verstehen. Auch können relativ schnell kleine Verzweigungen, bzw. spezielle Abfolgen modelliert werden, ohne dass eine Zeile Java-Code geschrieben werden muss. Somit konnten für den Update Prozess viele Beans aus dem initialen Prozess wiederverwendet werden.</p><p>Die XML-Datei(en) werden jedoch auch sehr schnell sehr groß und unübersichtlich. Hier bietet sich ein fein granulares Aufteilen auf mehrere „thematische“ XML-Files an.</p><p>Es lassen sich auch leicht bestimmte „Hilfssteps“ integrieren, z.B. um eine Commit-Meldung an Solr zu schicken. Dies war bisher im Java-Code versteckt und wird jetzt durch Spring Batch explizit aufgerufen.</p><p>Last but not least bekommt man bei Spring Batch viele Dinge wie Transaktionsfähigkeit, mit Restartmöglichkeit im Fehlerfall, geschenkt.</p><p><em>Titelbild</em>: <a
href="http://www.flickr.com/photos/paulesson/" target="_blank">paulesson/flickr.com</a> (CC BY-SA 2.0)</p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/06/spring-batch/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/06/spring-batch/</feedburner:origLink></item> <item><title>Fernseher twitter dich… – Eine App fürs Smart TV</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/ihbaimi6iTs/</link> <comments>http://blog.sybit.de/2012/06/smart-tv-fernseher-twitter-dich/#comments</comments> <pubDate>Wed, 06 Jun 2012 08:46:32 +0000</pubDate> <dc:creator>Christian Bayha</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[Hybrid TV]]></category> <category><![CDATA[Lab Day]]></category> <category><![CDATA[Samsung]]></category> <category><![CDATA[Smart TV]]></category> <category><![CDATA[TV App]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=6201</guid> <description><![CDATA[„Trimedialität“ ist eines der großen Zukunftsthemen der Medienbranche. Der noch nicht im Duden gelistete Begriff umfasst die redaktionelle und technische Zusammenarbeit zwischen Radio, Fernsehen und Online. Im Bereich Fernsehen wurde in den letzten Jahren einiges erreicht, um eine Vernetzung von TV- und Online-Medien zu erleichtern.
Im Zuge einer unserer LabDay-Veranstaltungen haben wir dieses Thema aufgegriffen und eine TV-App auf Basis des Samsung Smart TV SDK umgesetzt. Es stellte sich als eine sehr einfache und interessante Zusammenführung von TV und Web heraus.]]></description> <content:encoded><![CDATA[<p><strong><img
class="lazy alignleft size-medium wp-image-6241" title="2296523466_dc92cef07e" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/06/2296523466_dc92cef07e-270x268.jpg" alt="" width="270" height="268" /><noscript><img
class="alignleft size-medium wp-image-6241" title="2296523466_dc92cef07e" src="http://blog.sybit.de/wp-content/uploads/2012/06/2296523466_dc92cef07e-270x268.jpg" alt="" width="270" height="268" /></noscript>„Trimedialität“ ist eines der großen Zukunftsthemen der Medienbranche. Der noch nicht im Duden gelistete Begriff umfasst <a
href="http://www.ndr.de/unternehmen/organisation/faq/ndr6143.html">die redaktionelle und technische Zusammenarbeit zwischen Radio, Fernsehen und Internet</a>. Im Bereich Fernsehen wurde in den letzten Jahren einiges erreicht, um eine Vernetzung von TV- und Online-Medien zu erleichtern.</strong></p><p><strong>Im Zuge einer unserer LabDay-Veranstaltungen haben wir dieses Thema aufgegriffen und eine TV-App auf Basis des Samsung Smart TV SDK umgesetzt. Es stellte sich als eine sehr einfache und interessante Zusammenführung von TV und Web heraus.</strong></p><p>Samsung bietet hierfür eine Entwicklungsumgebung mit integriertem Emulator. Die Apps können mit HTML/JavaScript oder mit Flash entwickelt werden. Wir haben uns für den zukunftsorientierteren Standard  HTML/JavaScript entschieden.</p><h3>Die Vision</h3><p>Wie immer beim Entdecken einer neuen Technologie, fragt man sich selbst: „Was baue ich jetzt tolles damit?“</p><p>Unsere selbst gesetzte Anforderung war, einen bestehenden Online-Dienst bzw. ein Online-Angebot sinnvoll in die Welt des Fernsehens zu integrieren. Nach Abstimmung im Labday-Team war eine Integration von Twitter in das aktuell laufende Programm unser Ziel.</p><div
id="attachment_6244" class="wp-caption alignright" style="width: 280px"><img
class="lazy size-medium wp-image-6244" title="Labday: Samsung-App Team" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/06/P1090225-270x202.jpg" alt="Labday: Samsung-App Team" width="270" height="202" /><p
class="wp-caption-text"><noscript><img
class="size-medium wp-image-6244" title="Labday: Samsung-App Team" src="http://blog.sybit.de/wp-content/uploads/2012/06/P1090225-270x202.jpg" alt="Labday: Samsung-App Team" width="270" height="202" /></noscript> Labday: Das Samsung-App Team</p></div><p>Die Anwendung sollte dabei in Abhängigkeit der aktuell laufenden Sendung zugehörige Twitter-Meldungen in einem Teilbereich des Fernsehers darstellen und in regelmäßigen Abständen aktualisieren. Das generieren der benötigten Twitter-Hashs sollte sowohl redaktionell aber auch automatisiert (durch einen Algorithmus) erfolgen. Beim Umschalten des Senders sollen die Twitter-Meldungen automatisch angepasst werden.</p><h4>Die User Stories</h4><p>Folgende <a
title="Wie verwalte ich meine Stories? (Teil 1)" href="http://blog.sybit.de/2011/01/wie-verwalte-ich-meine-stories-teil-1/">User Stories</a> lassen sich aus unserer Labday-Vision formulieren:</p><ul><li>Der Fernsehzuschauer möchte am Bildschirmrand Twitter-Meldungen zur aktuellen Sendung verfolgen.</li><li>Der Zuschauer möchte, dass sich die Meldungen regelmäßig aktualisieren.</li><li>Der Zuschauer möchte durch die Liste der Meldungen mittels Fernbedienung navigieren können.</li></ul><p>Während des Labdays haben wir also eine App Samsungs Smart TV entwickelt, die aus dem aktuellen TV-Programm den Titel ausliest und damit bei Twitter nach Meldungen zur Sendung sucht und diese neben der Sendung anzeigt. Die Meldungen werden regelmäßig (alle 10 Sekunden) aktualisiert.</p><h3>Das Samsung SDK</h3><p>Über das SDK, welches Samsung anbietet, kann eine Anwendung in Form von HTML und JavaScript entwickelt werden. Das SDK stellt hierfür verschiedene Schnittstellen bereit. Über diese kann auf Aktionen der Fernbedienung oder auf Eigenschaften des Fernsehers zugegriffen werden.</p><div
id="attachment_6204" class="wp-caption aligncenter" style="width: 605px"><img
class="lazy size-large wp-image-6204" title="Samsung-IDE" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/06/Samsung-IDE-595x399.png" alt="Samsung Entwicklungsumgebung" width="595" height="399" /><p
class="wp-caption-text"><noscript><img
class="size-large wp-image-6204" title="Samsung-IDE" src="http://blog.sybit.de/wp-content/uploads/2012/06/Samsung-IDE-595x399.png" alt="Samsung Entwicklungsumgebung" width="595" height="399" /></noscript> Samsung Entwicklungsumgebung</p></div><h4>Anatomie einer Samsung TV-App</h4><p>Eine auf HTML und Javascript basierte App besteht immer aus folgenden Bestandteilen:</p><ul><li>Die config.xml legt die Rahmenbedingungen der App fest. Z.B. ob diese im Fullscreen, als Single-Wide-App oder Ticker am unterem Bildschirmrand läuft.</li><li>HTML-Files definieren die Inhalte bzw. die einzelnen Ansichten und binden die notwendigen Plugins als Object-Tags ein.</li><li>CSS-Dateien zum Layouten der Applikation.</li><li>Die Javascript-Dateien enthalten die Logik der App.</li><li>Images etc.: Notwendige Media-Assets.</li></ul><div><h4>Die Screenmodi</h4><p>Für die Darstellung der App bietet das SDK verschiedene Screenmodi an. So kann sowohl die gesamte Fläche, als auch nur ein Teilbereich des Bildschirmes verwendet werden. Generell ist die Umsetzung von Apps, welche nur einen Teilbereich des Bildschirms einnehmen (oft auch als Widgets bezeichnet), problematisch. So wirft dies <a
title="Heise Artikel: Privatsender gegen Widgets auf ihren Wellen" href="http://www.heise.de/newsticker/meldung/Privatsender-gegen-Widgets-auf-ihren-Wellen-917838.html">rechtliche Fragen</a> auf, da ein App-Entwickler so die Möglichkeit hat, eine durch einen Fernsehsender werbefrei erreichte Zielgruppe mit Werbung zu konfrontieren.</p><h4>Die Dokumentation</h4><p>Einen allgemeinen Einstieg in die Entwicklung von Apps für Samsung SmartTVs findet man direkt über die Entwicklungsumgebung. Darin enthalten sind neben API-Beschreibungen einige Beispiele für die konkrete Umsetzung. Die sehr gut strukturierte  Dokumentation gefällt grundsätzlich, beinhaltet allerdings noch einige Fehler, so dass ein abgebildeter Code-Ausschnitt leider nicht immer direkt verwendet werden kann.</p></div><div><h3>Die Umsetzung</h3><p>Da wir als <a
title="HbbTV - Hybrid Broadcast Broadband TV" href="http://www.sybit.de/de/media/leistungen/hbbtv.html">Supporter für HbbTV</a> bereits unsere Anwendungen auf Samsung-Geräten testen, konnten wir von unserem HbbTV-Team ein Testgerät bekommen und unsere App unter Live-Bedingungen testen.</p><p>Zunächst haben wir uns aber Gedanken gemacht, wie wir am besten vorgehen.</p><p>Zwei Dinge sind für die Twitter-App wichtig:</p><ol><li>Welche Sendung läuft gerade?</li><li>Unter welchen Twitter-Tags wird zu dieser Sendung getwittert?</li></ol><div><h4>Das laufende TV-Programm auslesen</h4><p>Das Auslesen des Programm-Titels erfolgt über ein natives Plugin von Samsung, welches in der HTML Seite eingebunden werden muss:</p><pre class="brush: xml; title: ; notranslate">

&lt;body onload=&quot;Main.onLoad()&quot; onunload=&quot;Main.onUnload();&quot; onkeydown=&quot;Main.MainKeyHandler();&quot;&gt;

   &lt;OBJECT id=&quot;pluginObjectTv&quot;  border=&quot;0&quot; classid='clsid:SAMSUNG-INFOLINK-TV' style='opacity:0.0; background-color:#000000;'&gt; &lt;/OBJECT&gt;
   &lt;OBJECT id=&quot;pluginObjectPlayer&quot;  border=&quot;0&quot; classid='clsid:SAMSUNG-INFOLINK-PLAYER' style='opacity:0.0; background-color:#000000;'&gt; &lt;/OBJECT&gt;
...
</pre><p>Die zu implementierende Logik greift dann in JavaScript auf diese Objekte zu:</p><pre class="brush: jscript; title: ; notranslate">
   var playerPlugin = document.getElementById(&quot;pluginObjectPlayer&quot;);
   playerPlugin.play(„http://….“);
</pre><p>So kann auch der benötigte Titel aus dem laufenden Programm via JavaScript ermittelt werden:</p><pre class="brush: jscript; title: ; notranslate">
   var TVPlugin = document.getElementById(&quot;pluginObjectTv&quot;);
   var programTitle = TVPlugin.GetPresentProgram_Title();
</pre><h4>Die passenden Tweets</h4><p>Anhand eines redaktionell gepflegten Mappings wird der Hashtag ermittelt und die zur Sendung verschickten Tweets über die API von Twitter abgerufen. So wird zum Beispiel bei der Sendung „TV Total Wok WM 2012“ der Hashtag <strong>#wokwm</strong> gesucht und die dazugehörigen Tweets angezeigt.</p><p>Nicht gepflegte Sendungen werden über einen einfachen Algorithmus angenähert, welcher in Abhängigkeit der Wortanzahl einen Hashtag zusammensetzt. Wir haben folgenden Algorithmus implementiert:</p><ol><li>Falls ein Bindestrich vorkommt, wird alles nach dem Bindestrich  weggeschnitten. So wird z. B. aus „Rach – der Restauranttester“ der Hashtag <strong>#rach</strong>.</li><li>Ersetzen aller möglichen Sonderzeichen (, : ; usw.) durch ein Leerzeichen</li><li>Splitten nach Leerzeichen<ol><li>Besteht der Titel aus mehr als zwei Worten, wird eine Abkürzung mit den ersten Buchstaben als HashTag verwendet: „Wer wird Millionär“ wird somit <strong>#wwm</strong>.</li><li>Bei zwei oder weniger Worten wird ein Hashtag aus den zusammengesetzen Worten erzeugt. Aus„Verbotene Liebe“ wird <strong>#verboteneliebe</strong>.</li></ol></li><li>Zusätzliche Oder-Verknüpfen der Strings aus Punkt 2 (in Anführungszeichen gesetzt) und des aus Punkt 3 gewonnenen HashTags. Z. B. für &#8220;Wer wird Millionär&#8221;: <strong>„wer wird millionär“ OR #wwm</strong></li></ol><div><h4>Samsung App Deployment</h4><p>Reicht der Emulator der Entwicklungsumgebung nicht aus, kann über einen Apache Webserver die App komfortabel auf einen Samsung-Fernseher übertragen und dort unter Livebedingungen getestet werden. Um die App zu deployen muss das TV-Gerät zunächst in den Entwicklungsmodus versetzt werden. Hierzu loggt man sich als Benutzer „develop“ und dem identischen Passwort über die Samsung-Konto-Einstellungen auf dem TV ein.  Des Weiteren benötigt man zum Deployment einen Apache Web Server. Dessen IP-Adresse wird im Entwickungsmodus auf dem TV konfiguriert. Nach Abschluss der Konfiguration kann eine App, die zuvor über das SDK gepackt wurde, deployed werden. Dazu verbindet sich der Samsung TV mit dem Apache Server und holt die als zip-File gepackte App ab und installiert diese.</p><p>Welche Apps sich der TV abholen und installieren kann, wird in der widgetlist.xml konfiguriert. Diese liegt ebenfalls im htdocs-Verzeichnis des Apache. Das Ablegen der gepackten App auf dem Server sowie das erzeugen des Eintrags in der widgetlist.xm kann automatisiert vom SDK während des Packaging-Prozesses vorgenommen werden.</p><div
id="attachment_6214" class="wp-caption aligncenter" style="width: 605px"><img
class="lazy size-large wp-image-6214" title="Samsung widgetlist.xml" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/06/samsung-package-xml-595x158.png" alt="Samsung widgetlist.xml" width="595" height="158" /><p
class="wp-caption-text"><noscript><img
class="size-large wp-image-6214" title="Samsung widgetlist.xml" src="http://blog.sybit.de/wp-content/uploads/2012/06/samsung-package-xml-595x158.png" alt="Samsung widgetlist.xml" width="595" height="158" /></noscript> Samsung widgetlist.xml</p></div><p>Die App erscheint in der Übersichtliste des Smart TV und kann mit der Fernbedienung gestartet werden.</p><p>Das Ergebnis kann sich nach unserer Meinung sehen lassen:</p><div
id="attachment_6215" class="wp-caption aligncenter" style="width: 605px"><img
class="lazy size-large wp-image-6215" title="Die Samsung Twitter App im Einsatz" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/06/samsung-twitter-app-595x440.jpg" alt="Die Samsung Twitter App im Einsatz" width="595" height="440" /><p
class="wp-caption-text"><noscript><img
class="size-large wp-image-6215" title="Die Samsung Twitter App im Einsatz" src="http://blog.sybit.de/wp-content/uploads/2012/06/samsung-twitter-app-595x440.jpg" alt="Die Samsung Twitter App im Einsatz" width="595" height="440" /></noscript> Die Samsung Twitter-App im Einsatz</p></div><p>Stolz wurden im Anschluss einige Tests mit der App durchgeführt: Unser Algorithmus hat für alle Serien passende Tweets gefunden!</p><h4>Download der Demo-App</h4><p>Im nachfolgenden Link ist ein Zip-Datei mit der hier beschriebenen App. Diese Zip-Verzeichnis muss entpackt und als Projekt im Samsung SDK 2.5 geöffnet werden. Anschließend kann die App wie oben beschrieben auf den Fernseher deployed werden.</p><p><a
href="http://blog.sybit.de/wp-content/uploads/2012/06/twapp3.zip">Download twapp.zip</a></p><p>Teaser-Bild: <a
href="http://www.flickr.com/photos/kevenlaw/" target="_blank">kevenlaw/flickr.com</a> (CC BY-SA 2.0)</p></div></div></div> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/06/smart-tv-fernseher-twitter-dich/feed/</wfw:commentRss> <slash:comments>9</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/06/smart-tv-fernseher-twitter-dich/</feedburner:origLink></item> <item><title>Caching in CoreMedia Web-Applikationen</title><link>http://feedproxy.google.com/~r/SybitBlogMedia/~3/KYN6iazcFho/</link> <comments>http://blog.sybit.de/2012/05/caching-in-coremedia-web-applikationen/#comments</comments> <pubDate>Thu, 10 May 2012 08:58:15 +0000</pubDate> <dc:creator>Daniel Clauss</dc:creator> <category><![CDATA[Entwicklung]]></category> <category><![CDATA[Media]]></category> <category><![CDATA[Accelerated Web]]></category> <category><![CDATA[Cache]]></category> <category><![CDATA[CAE]]></category> <category><![CDATA[CMS]]></category> <category><![CDATA[CoreMedia]]></category><guid isPermaLink="false">http://blog.sybit.de/?p=5862</guid> <description><![CDATA[Im heutigen Teil unserer Serie zum Caching in Web-Applikationen möchte ich einen Überblick über die Möglichkeiten geben, welche CoreMedia bei der Entwicklung einer Web-Applikation auf Basis der Content Application Engine (CAE) zur Verfügung stellt.]]></description> <content:encoded><![CDATA[<p><strong>Im heutigen Teil unserer <a
title="Serie: Accelerated Web" href="http://blog.sybit.de/tag/accelerated-web/">Serie zum Caching</a> in Web-Applikationen möchte ich einen Überblick über die Möglichkeiten geben, welche CoreMedia bei der Entwicklung einer Web-Applikation auf Basis der Content Application Engine (CAE) zur Verfügung stellt.</strong></p><h3>Cache bei Repository-Zugriffe</h3><h3><a
href="http://blog.sybit.de/2012/05/caching-in-coremedia-web-applikationen/3333710952_f794627625/" rel="attachment wp-att-5905"><img
class="lazy alignleft size-medium wp-image-5905" title="3333710952_f794627625" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/04/3333710952_f794627625-270x183.jpg" alt="" width="270" height="183" /><noscript><img
class="alignleft size-medium wp-image-5905" title="3333710952_f794627625" src="http://blog.sybit.de/wp-content/uploads/2012/04/3333710952_f794627625-270x183.jpg" alt="" width="270" height="183" /></noscript></a></h3><p>In der Regel basieren Anwendungen, welche mit der CAE realisiert werden, zum größten Teil auf Inhalten aus einem <a
title="CoreMedia CMS für high Performance" href="http://www.sybit.de/de/media/produkte/coremedia-cms.html">CoreMedia</a> Content-Repository. Zugriffe auf das Content-Repository erfolgen mittels der <strong>Unified API (UAPI)</strong> von CoreMedia. An dieser Stelle gibt es den ersten Cache, den <strong>UAPI-Cache</strong>. Er speichert alle Zugriffe auf das Content-Repository, um bei einem erneuten Zugriff auf die selben Daten und somit die Zugriffszeit zu verkürzen. Denn anstatt die Daten nochmals aus dem entfernten Content-Repository abzufragen, kommen diese direkt aus dem UAPI-Cache. Dieser Cache wird<strong> im Hauptspeicher</strong> vorgehalten.</p><p>Die Aktualität der im Cache abgelegten Daten gewährleistet ein <strong>eventbasierter Ansatz</strong>. Die Daten des Cache werden verworfen sobald die zugrunde liegenden Inhalte im Content Repository geändert werden. So bleibt die Verwendung des UAPI-Cache für den Entwickler vollkommen transparent. <strong>Die UAPI kümmert sich vollkommen selbständig um die Verwaltung und Einbindung des Cache.</strong></p><h3>Cache in der Business-Logik</h3><p>Um <strong>zeit- oder lastkritische Berechnungen in der Business-Logik</strong> zwischenzuspeichern bietet CoreMedia in der CAE die <strong>Dataviews</strong> an. Dabei handelt es sich um eine Caching-Schicht deren Programmcode auf <strong>Basis einer XML-Konfiguration automatisch generiert</strong> wird. In der Business-Logik muss kein Programmcode für das Caching implementiert werden. Der Programm-Code ist frei von irgendwelchen API-Calls für das Caching. Mit Dataviews lassen sich ein Netz von Business-Objekten aufbauen deren Berechnungsergebnisse im Hauptspeicher gehalten werden. Dabei lassen sich nicht nur Berechnungsergebnisse zwischenspeichern, welche auf Daten aus dem Content-Repository basieren. <strong>Diese nutzen für die Verwaltung des Dataview-Cache auch die Events des Content-Repository</strong>. Es können auch Berechnungen, welche auf andere Datenquellen basieren im Dataview-Cache vorgehalten werden. Dabei erfolgt die Verwaltung der Daten zeitbasiert. Als Alternative zur zeitbasierten Verwaltung kann für die jeweilige Datenquelle ein geeigneter Benachrichtigungs-Mechanismus implementiert werden. Über diesen Mechanismus wird der Cache benachrichtigt, falls es in der Datenquelle Änderungen gibt. Hierfür bietet CoreMedia in der API entsprechende Schnittstellen.</p><div
id="attachment_5889" class="wp-caption alignleft" style="width: 605px"><a
href="http://blog.sybit.de/2012/05/caching-in-coremedia-web-applikationen/cm_cache-2/" rel="attachment wp-att-5889"><img
class="lazy size-large wp-image-5889" title="CM_cache" src="http://blog.sybit.de/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="http://blog.sybit.de/wp-content/uploads/2012/04/CM_cache1-595x446.png" alt="" width="595" height="446" /><noscript><img
class="size-large wp-image-5889" title="CM_cache" src="http://blog.sybit.de/wp-content/uploads/2012/04/CM_cache1-595x446.png" alt="" width="595" height="446" /></noscript></a><p
class="wp-caption-text">Die verschiedenen Caches der CoreMedia CAE.</p></div><h3>Cache bei Auslieferung</h3><p>Neben den bisher angesprochenen Caches, welche innerhalb der Anwendungslogik agieren und nur im Hauptspeicher existieren, bietet CoreMedia auch einen Cache, welcher auf der Kommunikationsebene zwischen Web-Server und Browser ansetzt. Der<strong> HTTP-Cache</strong>, speicherte komplette HTTP-Antworten. Dieser Cache speichert nicht die Zugriffe auf das Content-Repository oder die Berechnungsergebnisse einzelner Business-Objekte sondern die <strong>komplett aufbereitet Darstellung,</strong> wie sie an den Browser des Benutzers geschickt wird.</p><p>Von ähnlichen Cache-Mechanismen, welche mit gewöhnlichen Webservern realisiert sind, hebt sich der CoreMedia HTTP-Cache durch die Tatasche ab, dass er für die Verwaltung der zwischengespeicherten HTTP-Antworten auch wieder auf <strong>die Events des CoreMedia Content-Repository zurückgreifen kann</strong>. Der entscheidende Unterschied zu den bisher angesprochenen Caches ist die Tatsache, dass es sich beim HTTP-Cache um einen <strong>nicht flüchtigen Cache</strong> handelt. Der HTTP-Cache steht auch nach einem Neustart der CAE im selben Zustand wie vor dem Herunterfahren zur Verfügung. Der HTTP-Cache persistiert seinen Inhalt auf der Festplatte. Zur Verwaltung der Daten nutzt er eine relationale Datenbank.</p><h3>Fazit</h3><p>Ich denke es wird deutlich, dass CoreMedia dem <a
title="CoreMedia: Unsere Entwickler unterstützen auch Ihr Projekt" href="http://www.sybit.de/de/media/cms-consulting/coremedia-cms-consultant.html">Entwickler</a> in der CAE an entscheidenden Stellen Mechanismen zum Caching bietet. Bereits der <strong>UAPI-Cache beeinflusst die Bearbeitungszeit der eingehenden Anfragen positiv</strong>, da er die Netzwerkkommunikation mit dem Content-Repository beträchtlich verringert. Vor allem aber ist der UAPI-Cache fester Bestandteil der UAPI und muss weder gesondert konfiguriert werden, noch muss etwas zusätzlich implementiert werden.</p><p>Aufwändiger gestaltet sich hingegen die Einführung der anderen Caches. Die Szenarien in welchen der Einsatz des Dataview- oder HTTP-Caches sinnvoll sind, sind spezieller. Der Dataview-Cache spielt seine Stärke vor allem bei komplizierten Berechnungen innerhalb der Business-Logik aus, typische Fälle für den Dataview-Cache sind die Berechnungen der Navigation oder die Anbindung von externen Datenquellen. Wobei sich der Dataview-Cache für Beans und Methoden, welche auf Inhalte aus dem Content-Repository aufbauen, durch eine XML-Konfiguration noch relativ einfach aufsetzen lässt. Für das Caching von externen Datenquellen muss für eine flexible reagierende Lösung schon mehr Entwicklungsaufwand investiert werden.</p><p>Der HTTP-Cache eignet sich vor allem in Fällen in welchen die Erzeugung der Darstellung aufwändig ist. PDFs könnte beispielsweise nach der Generierung im HTTP-Cache abgelegt werden.</p><p>Daher ist es vollkommen legitim die Verwendung der beiden zuletzt genannten Caches erst in Betracht zu ziehen wenn sich ein <strong>konkreter Engpass</strong>, zum Beispiel im Laufe eines Lasttest, in der Web-Applikation abzeichnet.</p><p><em>Titelbild</em>: <a
title="twicepix" href="http://www.flickr.com/photos/twicepix/" target="_blank">twicepix</a> / <a
title="Titelbild" href="http://www.flickr.com/photos/twicepix/3333710952" target="_blank">flickr.com</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.sybit.de/2012/05/caching-in-coremedia-web-applikationen/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.sybit.de/2012/05/caching-in-coremedia-web-applikationen/</feedburner:origLink></item> </channel> </rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

 Served from: blog.sybit.de @ 2013-05-21 14:32:21 by W3 Total Cache -->
