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

<channel>
	<title>Blogisticon &#187; Architektur</title>
	<atom:link href="http://blog.holisticon.de/category/architektur/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.holisticon.de</link>
	<description>Das Holisticon-Blog</description>
	<lastBuildDate>Fri, 18 May 2012 08:23:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Freundliche Eindringlinge auf dem Entwicklertag 2012</title>
		<link>http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/</link>
		<comments>http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/#comments</comments>
		<pubDate>Fri, 18 May 2012 08:23:19 +0000</pubDate>
		<dc:creator>Norman Erck</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Rundumsichtig]]></category>
		<category><![CDATA[#etka12]]></category>
		<category><![CDATA[Aktoren]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=5523</guid>
		<description><![CDATA[Dieses Jahr wurde ich zum Karlsruher Entwicklertag auf dem Conference Day eingeladen, um den Teilnehmern mit dem Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI&#8221; eine Einführung in die Context und Dependency Injection im Java-Standard zu geben. Ich habe natürlich nicht nur meinem Vortrag gehalten, sondern mir auch Vorträge von anderen angehört. Begrüßung In der [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.holisticon.de/wp-content/uploads/2012/05/ET-schatten_0.png"><img src="http://blog.holisticon.de/wp-content/uploads/2012/05/ET-schatten_0.png" alt="Entwicklertag Logo" width="145" height="43" class="alignleft size-full wp-image-5546 colorbox-5523" /></a>Dieses Jahr wurde ich zum <a href="http://entwicklertag.de/" title="Entwicklertag 2012">Karlsruher Entwicklertag</a> auf dem Conference Day eingeladen, um den Teilnehmern mit dem Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI&#8221; eine Einführung in die Context und Dependency Injection im Java-Standard zu geben. Ich habe natürlich nicht nur meinem Vortrag gehalten, sondern mir auch Vorträge von anderen angehört.<span id="more-5523"></span></p>
<h3>Begrüßung</h3>
<p>In der Begrüßung vermittelte <a href="http://ka.stadtwiki.net/Margret_Mergen">Margret Mergen</a> (Bürgermeisterin der Stadt Karlsruhe) viele interessante Fakten zu Karlsruhe. Sie bezeichnete die Stadt als das &#8220;Silicon Valley Deutschlands&#8221; und nahm damit Bezug auf die räumliche Nähe der über 3.000 IT Firmen mit über 25.000 ITlern. Ebenfalls interessant war die Tatsache, dass jede vierte Informatiker aus Karlsruhe kommt.  </p>
<h3>Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI</h3>
<p>Wie den Teilnehmern des Entwicklertages versprochen, möchte ich an dieser Stelle die Tonspur und die Beispielapplikation zur Verfügung stellen. Da ich bereits darüber gebloggt habe, veröffentliche ich hier nur den Link zu meinem Beitrag <a href="http://blog.holisticon.de/2012/01/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/">Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI</a>.</p>
<p>Zum Vortrag kann ich nur sagen, dass es Spaß gemacht hat, ihn in den schönen Räumen der <a href="http://www.karlsruhe.ihk.de/">IHK Karlsruhe</a> halten zu dürfen und dass ich auch das Glück einer aktiven Zuhörerschaft mit spannenden Fragen hatte.</p>
<p><a href="http://entwicklertag.de/conference-day/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi" title="Infos &amp; Folien Entwicklertag 2012">Freundliche Eindringinge @ Entwicklertag 2012</a></p>
<h3>Rechtliche Aspekte zu Cloud Computing</h3>
<p>Prof. Dr. Rupert Vogel, Tobias Haar und Dr. Oliver Meyer-van Raay beleuchteten die rechtlichen Aspekte zum Thema Cloud. Nach der Definition des <a href="https://www.bsi.bund.de/DE/Themen/CloudComputing/CloudComputing_node.html" title="BSI: Cloud Computing">Cloud-Begriffs</a>, den Ausprägungen (<a href="http://de.wikipedia.org/wiki/IaaS#Infrastructure_as_a_Service_.28IaaS.29" title="IaaS">IaaS</a>, <a href="http://de.wikipedia.org/wiki/Platform_as_a_Service" title="PaaS">PaaS</a>, <a href="http://de.wikipedia.org/wiki/IaaS#Software_as_a_Service_.28SaaS.29" title="SaaS">SaaS</a>) und der Erkenntnis, dass es sich beim Thema Cloud Computing nicht um einen Rechtsbegriff handelt, wurden alle relevanten Rechtsbereiche erörtert.</p>
<h4>IT-Recht</h4>
<p>Sofern es sich um eine B2B-Beziehung handelt, kann die Rechtswahl selbst übernommen werden, d.h., ich kann mir ein Land aussuchen, gemäß dessen Rechtsprechung ich agieren möchte. Als Tipp wurde genannt, dass immer der Kunde auf Rechtswahl drängen sollte.</p>
<p>Handelt es sich jedoch um eine B2C-Beziehung, muss nach Recht des Verbrauchers verfahren werden, also nach dem Recht, das am günstigsten für den Verbraucher ist. Hier spielt in der Regel das Land, in dem der Verbraucher firmiert, eine Rolle. Ebenfalls interessant dazu ist, dass im Zweifelsfall das Recht des Landes, in dem der Schaden eintritt, gilt.<br />
Zum Thema Vertragsgestaltung wurde erwähnt, dass es sich um Mietverträge nach deutschem Recht handelt, sodass der Vermieter für die Leistung verantwortlich ist. Um auf der sicheren Seite zu sein, müssen Service Level Agreements vereinbart werden. Spannend ist auch das Thema &#8220;Exit Management&#8221;. Wir wird mit Daten verfahren?</p>
<p>Zur Vertragsgestaltung wurde der Tipp gegeben, den Vetrag immer so zu gestalten, dass ein 60jähriger Richter diesen auch verstehen kann. Also nicht &#8220;Leistung 98% verfügbar&#8221;, sondern lieber alles detailliert beschreiben. Was ist denn beispielsweise &#8220;die Leistung&#8221;? Und was heißt &#8220;verfügbar&#8221;?</p>
<p>Ein Blick in das Amazon Web Services Customer Agreement zeigte, dass Amazon den Service einfach mal abschalten kann&#8230;</p>
<h4>Urheberrecht</h4>
<p>Beim Urheberrecht sind in der Regel drei Parteien betroffen. Der Kunde, der Cloud-Anbieter und das Software-Haus. Aufgepasst werden muss vor allem im Bereich des Software-Hauses. Wurde eine Lizenz für die Cloud erworben? Wie sieht es mit der Handhabung von Vervielfältigungen aus? Ist es nicht eine Vermietung, wenn ich die Software in der Cloud zur Verfügung stelle? All dies muss zwischen den Parteien vereinbart werden.</p>
<p>Wie steht es um Software, die ein Angestellter oder ein Freelancer für ein Unternehmen entwickelt hat? Kann diese einfach in die Cloud gehen? Beim Angestellten ist das recht einfach, hier hat der Arbeitgeber Verwertungsrechte. Bei Freelancern ist das ein wenig schwieriger, weil hier unter Umständen eine neue Nutzungsart hinzukommt.</p>
<h4>Datenschutz/-sicherheit</h4>
<p>Hier gilt das Territorialitätsprinzip, also die Rechtsprechung des Landes in dem die Daten verarbeitet werden. Problematisch wird das Ganze natürlich nur bei personenbezogenen Daten. Hier muss eine Anonymisierung stattfinden und optimalerweise auch noch eine Verschlüsselung, damit die Cloud-Anbieter diese Daten nicht im Zugriff haben. Spannend wird es auch beim Thema der Auftragsdatenverarbeitung: hier sollte man sich einen geeigneten Anbieter á la Microsoft oder Salesforce, die den Richtlinien der EU entsprechen, suchen.</p>
<p>Mehr dazu kann in den Vortragsfolien auf der <a href="http://entwicklertag.de/vortraege/rechtliche-aspekte-zu-cloud-computing" title="Rechtliche Aspekte zu Cloud Computing">Webseite des Entwicklertages 2012</a> nachgelesen werden.</p>
<p>In der Fragerunde zum Vortrag wurde noch erwähnt, dass man im rechtlichen Sinne nicht vom Besitz von Daten sprechen kann, sondern nur vom Zugriff.</p>
<p><a href="http://entwicklertag.de/vortraege/rechtliche-aspekte-zu-cloud-computing" title="Rechtliche Aspekte zu Cloud Computing">Rechtliche Aspekte zu Cloud Computing @ Entwicklertag 2012</a></p>
<h3>Software Engineering von Mobile Apps</h3>
<p>Stefan Hellfeld zeigte sehr schön die Entwicklung der mobilen Endgeräte an seiner eigenen Handy-Historie auf. Danach machte er darauf aufmerksam, wer eigentlich aktuell die Software für mobile Endgeräte verkauft: Betriebssystem- und Gerätehersteller. Auch erfunden hat das Ganze nicht Apple mit dem App Store, sondern Nokia mit Symbian schon einige Jahre zuvor.</p>
<h4>Was?</h4>
<p>Was ist das größte Problem, wenn man eine Software in den App Store bringt? Die Konkurrenz! Wie kann man sich, abgesehen vom Preis, von seinen Konkurrenten absetzen? Durch Innovation! Wie diese Innovation vorangeschritten ist, zeigt die Gegenüberstellung einiger Features des Smartphones (GSM, GPRS, Kamera, Bewegungssender) gegenüber verschiedenen Features von Software (Virtuelle Realität, Wecker, Aufzeichnung, MP3-Player). Hier steht es 9:26 für die Software. Herr Hellfeld legte nahe, sich als Entwickler von Mobilen Apps als Integrator zu sehen und so mehrere Hardwarekomponenten für die Lösung eines Problems zu verknüpfen.</p>
<h4>Wie?</h4>
<p>Da wir jetzt wussten, <em>was</em> wir zu programmieren hatten, stellte sich natürlich die Frage nach dem <em>Wie</em>. Hier verglich Herr Hellfeld die mobile Entwicklung für iOS mit der klassischen Software-Entwicklung. Bei letzterer wurden in der Regel Lizenzen für IDEs gekauft und fertig war man, was die Ausgaben im Entwicklungsprozess anging. In der mobilen Entwicklung ist die IDE zwar kostenlos (sofern man einen Mac hat), aber man braucht Lizenzen für die Entwickler, muss auf externen Geräten testen und die Software dann auch noch im App Store zur Abnahme einreichen. </p>
<h4>Zukunft iOS, Android, Windows Phone &amp; JavaME</h4>
<p>Es gibt schon jetzt mehr Smartphones als Handys. Android Apps sind im Schnitt teurer als iOS Apps, und JavaME liegt hinsichtlich des Marktanteils noch 15% hinter iOS und Android. Herr Hellfeld ist der Meinung, dass iOS weiter wachsen wird, Android auch &#8211; und zwar stärker &#8211; und Microsoft wird es zukünftig mit den beiden aufnehmen, da es noch keine richtige Office-Integration auf iOS oder Android gibt und es Windows Phone noch an Tablets fehlt.</p>
<h4>Organisation</h4>
<p>Was wird alles benötigt, um starten zu können? Eine Entwicklungsumgebung und ein SDK, ein Team, wobei sich die optimale Anzahl Mitarbeiter seiner Ansicht nach aus der Wurzel der Projektdauer in Personentagen ermittelt. Ferner benötigt man ein gutes Management, bei dem Enwickler 16 LOC (lines of code) pro Tag schaffen, die direkt in der Software verwendet werden, ein Vorgehensmodell und jede Menge Testgeräte. Es gibt zwar Simulatoren, aber diese ersetzen nicht die Tests auf Endgeräten.</p>
<p>Sicherlich neu in der mobilen Entwicklung ist die Rolle des Kunden, da man hier jetzt mit &#8220;Experten&#8221; redet, die genau wissen, wie eine mobile App auszusehen und wie sie sich anzufühlen hat.</p>
<h4>Nativ, WebApp oder Hybrid?</h4>
<p>Die Abgrenzung der unterschiedlichen App-Typen ist ja mittlerweile in aller Munde. Interessant ist jedoch Herr Hellfelds Abgrenzung im Detail. Native Apps sind bei ihm Apps, die nativ programmiert wurden, bei denen sich jedoch auch alle Daten auf dem Smartphone befinden. Hybrid sind bei ihm einerseits die Lösungen, die via Titanium oder PhoneGap auf beliebig viele Plattformen gebracht werden können, als auch Apps, die nativ implementiert wurden, aber ihre Daten aus dem Internet beziehen.</p>
<p>Als Best-Practice-Beispiele nannte er die Apps von Facebook und N-tv, die beide auf eine hybride Lösung setzen. Die UI-Elemente sind nativ implementiert, da sie flüssig sein müssen; die Informationsdarstellung erfolgt in Webviews.</p>
<p>Als gutes Feature von iOS wurde erwähnt, dass man es geschafft habe, auch Apps elegant abstürzen zu lassen, so dass sich der Nutzer selbst hinterfragt, bevor er davon ausgeht, dass die App fehlerhaft ist.</p>
<p>Spannend war auch ein Vergleich der Effizienz der Entwicklung zwischen iOS (Xcode) und Windows Phone (Visual Studio mit Expression Blend). So bräuchte man in Xcode für die Entwicklung einer Taschenlampen-App 80 Sekunden und in Visual Studio nur 32 Sekunden.</p>
<h4>Zukunft der Apps</h4>
<p>Apps sind in der Zukunft agil, sie passen sich an Anwender, Kontext, Gerät und Informationskanal an, sie sind intelligent, denken mit und treffen banale Entscheidungen, und darüber hinaus bilden sie Menschen auf Informationssystemen ab.<br />
<a href="http://entwicklertag.de/conference-day/software-engineering-von-mobile-apps" title="Software Engineering von Mobile Apps">Software Engineering von Mobile Apps @ Entwicklertag 2012</a></p>
<h3>Entspannte Nebenläufigkeit &#8211; Aktoren in Scala und Java</h3>
<p>Andi Scharfstein und Ben Romberg motivierten Aktoren mit dem <a href="http://en.wikipedia.org/wiki/Northeast_blackout_of_2003" title="Wikipedia Northeast blackout">&#8220;Northeast blackout of 2003&#8243;</a>. Als Ursache wurde eine Race Condition identifiziert. Um Race Conditions zu vermeiden, sollen Aktoren eingesetzt werden. Es muss also, getreu dem Aktoren-Paradigma, Datenfluss nur in gekapselten Systemen agiert werden.</p>
<p>Aktoren haben dabei einen eindeutigen Namen (Adresse), ein Verhalten (Code), einen Zustand (Daten) sowie eine Mailbox. Aktoren können Nachrichten verschicken, den eigenen Zustand bzw. ihr Verhalten ändern und neue Aktoren erstellen. In der Theorie laufen Aktoren parallel zueinander; es gibt keine Aussage zum Nachrichtenverhalten, und somit können Nachrichten theoretisch verloren gehen oder auch ihre Reihenfolge verändern.</p>
<p>In einem Bespiel, in dessen Rahmen Spielstände von Mannschaften verändert wurden (ja, es ist ja bald EM), wurde das <a href="http://akka.io/" title="Akka Framework">Akka-Framework</a> vorgestellt.</p>
<p>Für den Einsatz wurde vorgeschlagen, dass über Nachrichten kommuniziert werden soll und Nachrichten nur als immutable Objekte verwendet werden sollen, um Race Conditions zu vermeiden.</p>
<p>Als Fazit machten die Vortragenden Werbung für den Einsatz von Aktoren, da der Einarbeitungsaufwand gering sei, man nur seine Herangehensweise ändern müsse und so sehr performante nebenläufige Applikationen ohne Race Conditions bauen könne.</p>
<p>Mich haben die Jungs überzeugt und ich werde den nächsten passenden Anwendungsfall mal mit Aktoren umsetzen.</p>
<p><a href="http://entwicklertag.de/vortraege/entspannte-nebenl%C3%A4ufigkeit-aktoren-scala-und-java" title="Entspannte Nebenläufigkeit">Entspannte Nebenläufigkeit &#8211; Aktoren in Scala und Java @ Entwicklertag 2012</a></p>
<h3>Subjektorientorierung</h3>
<p>Albert Fleischmann hat ein neues Modell für den Softwareentwicklungsprozess entwickelt. Eingangs rief er den Zuhörern den deutschen Satzbau im Aktiv mit Subjekt, Prädikat und Objekt ins Gedächtnis (Wer macht was womit?) Im Vergleich dazu skizzierte er unterschiedliche Modelle der Softwareentwicklung (Flussdiagramm, ER-Diagramm, UML etc.), die im nicht ausreichenden Maße Subjekt, Prädikat und Objekt beschreiben. Sein Anliegen war es, Anwender für die Subjektorientierung zu motivieren. Als Fallbeispiel stellte er die Steuerung eines ferngesteuerten Vogels vor, die er später in ein Bespiel zu einem Transportunternehmen verwandelte. Spätestens hier hatte er mich leider komplett abgehängt. Als nach 40 Minuten Motivation innerhalb von fünf Minuten das Modell vorgestellt werden sollte, konnte ich leider nicht mehr das Konzept und den Nutzen der Subjektorientierung verstehen. Falls die Folien online gestellt werden, werde ich auf jeden Fall noch mal hineinschauen.</p>
<p><a href="http://entwicklertag.de/vortraege/subjektorientierung" title="Subjektorientierung">Subjektorientierung @ Entwicklertag 2012 </a></p>
<h3>Fazit</h3>
<p>Für mich eine sehr gelungene Veranstaltung &#8211; von der Organisation über die Referenten bis hin zum Veranstaltungsort. Dafür möchte ich mich bei den Veranstaltern und Referenten herzlich bedanken, und vielleicht bin ich ja nächstes Jahr auch wieder dabei.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Freundliche Eindringlinge auf dem Entwicklertag 2012" data-url="http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drittes Hamburg Web Performance Meetup</title>
		<link>http://blog.holisticon.de/2012/05/drittes-hamburg-web-performance-meetup-2/</link>
		<comments>http://blog.holisticon.de/2012/05/drittes-hamburg-web-performance-meetup-2/#comments</comments>
		<pubDate>Tue, 08 May 2012 08:13:30 +0000</pubDate>
		<dc:creator>Jan Weinschenker</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Rundumsichtig]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[kundenzufriedenheit]]></category>
		<category><![CDATA[Metriken]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[webperf]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=5323</guid>
		<description><![CDATA[Das dritte Hamburg Web Performance Meetup fand am 25. April in den Räumlichkeiten von Telefónica in der City Nord statt. Den fast vierzig Teilnehmern, die sich trotz eines zeitgleich laufenden, hochkarätigen Champions-League-Spiels nicht vor den Fernseher gesetzt hatten, wurden zwei interessante Vorträge geboten. Den Anfang machten Jan Vogel (DI UNTERNEHMER) und Uwe Beßle (Iteratec) mit [...]]]></description>
			<content:encoded><![CDATA[<p><img class="colorbox-5323"  style="margin-left: 1em;" src="http://photos1.meetupstatic.com/photos/event/6/3/1/c/highres_71725372.jpeg" alt="Web Performance HH" align="right" /></p>
<p>Das dritte <a title="Drittes Hamburg Web Performance Meetup bei meetup.com" href="http://www.meetup.com/Hamburg-Web-Performance-Group/events/57384682/" rel="external">Hamburg Web Performance Meetup</a> fand am 25. April in den Räumlichkeiten von Telefónica in der City Nord statt. Den fast vierzig Teilnehmern, die sich trotz eines zeitgleich laufenden, hochkarätigen Champions-League-Spiels nicht vor den Fernseher gesetzt hatten, wurden zwei interessante Vorträge geboten.</p>
<p>Den Anfang machten <a href="https://www.xing.com/profile/Jan_Vogel" target="_blank">Jan Vogel</a> (<a href="http://www.di-unternehmer.com/" target="_blank">DI UNTERNEHMER</a>) und <a href="https://www.xing.com/profile/Uwe_Bessle" target="_blank">Uwe Beßle</a> (<a href="http://iteratec.de/" target="_blank">Iteratec</a>) mit dem Thema &#8220;Optimierung der gefühlten Performance &#8211; Web Performance Management für Fortgeschrittene&#8221;. Die beiden präsentierten ihre Erfahrungen, die sie im Umfeld einer der weltweit größten eCommerce-Sites gemacht haben. Vorgestellt wurden u.a. eigene Metriken für Performance und Kundenzufriedenheit.</p>
<p>Im Rahmen des Projekts wurden End-User-Tests mit etwa 1.500 Probanden sowie automatisierte Tests mit dem Tool <a href="http://www.webpagetest.org" target="_blank">WebPagetest</a> (WPT) durchgeführt. Mit Best-Practise-Beispielen zu WPT und einem regen und ausführlichen Frage-und-Antwort-Teil endete dieser Vortrag.</p>
<p>Der zweite Teil des Abends bestritten <a href="https://www.xing.com/profile/Oliver_Ochs" target="_blank">Oliver Ochs</a> und <a href="https://www.xing.com/profile/Jan_Weinschenker" target="_blank">meine Wenigkeit</a> mit unserer Präsentation &#8220;Building Performance, ein Frontend-Build-Prozess&#8221;.</p>
<p>Wir haben einen auf Maven basierenden Build-Prozess vorgestellt, mit dem die Frontent-Komponente des <a href="http://dsl.o2online.de" target="_blank">DSL-Portals</a> von Telefónica O<sub>2</sub> erstellt wird. In mehreren Schritten sorgt dieser Build-Prozess automatisiert dafür, dass HTML, CSS, JavaScript und Bildelemente hinsichtlich der Web Performance optimiert werden. Dabei kommen unter anderem Werkzeuge wie OptiPng, Web Ressource Optimizer, JSLint, CSSLint und der Google Closure Optimizer zum Einsatz, die als Maven-Plugins ohne großen Aufwand in den Prozess integriert werden.</p>
<p>Der Abend endete mit einer Verlosung von Fachbüchern des Sponsors unseres Web Performance Meetups in Hamburg, dem <a href="http://www.oreilly.de/" rel="external">O&#8217;Reilly</a> Verlag.</p>
<p>Unser Vortrag zum Frontend-Build-Prozess ist bei SlideShare verfügbar:</p>
<ul>
<li>
<div style="margin-top: 1em;"><strong><a title="Building Performance - ein Frontend-Build-Prozess für Java mit Maven" href="http://www.slideshare.net/oliverochs/building-performance-ein-frontendbuildprozess-fr-java-mit-maven">Building Performance &#8211; ein Frontend-Build-Prozess für Java mit Maven</a></strong></div>
</li>
</ul>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/05/drittes-hamburg-web-performance-meetup-2/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Drittes Hamburg Web Performance Meetup" data-url="http://blog.holisticon.de/2012/05/drittes-hamburg-web-performance-meetup-2/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/05/drittes-hamburg-web-performance-meetup-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liferay/Tomcat Bundle – Logging mal richtig</title>
		<link>http://blog.holisticon.de/2012/05/liferaytomcat-bundle-logging-mal-richtig/</link>
		<comments>http://blog.holisticon.de/2012/05/liferaytomcat-bundle-logging-mal-richtig/#comments</comments>
		<pubDate>Fri, 04 May 2012 08:09:45 +0000</pubDate>
		<dc:creator>Enno Thieleke</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[java.util.logging]]></category>
		<category><![CDATA[Liferay]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[Logging]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=5067</guid>
		<description><![CDATA[Wer möchte wissen, wie man Liferay und Tomcat in Punkto Logging richtig verbindet? Jeder vernünftig denkende Mensch, der gerade wissen möchte, wie man Liferay und Tomcat in Punkto Logging richtig verbindet. Ganz generell Also, ich habe mich mal mit den Logging-Details von Liferay und Tomcat beschäftigt und muss sagen: das geht besser! Evaluiert habe ich [...]]]></description>
			<content:encoded><![CDATA[<p>Wer möchte wissen, wie man <a href="http://www.liferay.com/">Liferay</a> und <a href="http://tomcat.apache.org/">Tomcat</a> in Punkto Logging richtig verbindet? Jeder vernünftig denkende Mensch, der gerade wissen möchte, wie man Liferay und Tomcat in Punkto Logging richtig verbindet.<br />
<span id="more-5067"></span></p>
<h3>Ganz generell</h3>
<p>Also, ich habe mich mal mit den Logging-Details von Liferay und Tomcat beschäftigt und muss sagen: das geht besser! Evaluiert habe ich Liferay 6.0.6 im Bundle mit Tomcat 6.0.29. Eine momentan sehr gängige Kompilation, da Liferay 6.1 noch sehr jung ist und man sich Kinderkrankheiten nicht gerne mit an Bord holt.</p>
<h3>Tomcat</h3>
<p>Sehr interessant. Tomcat ist aus dem Hause <a href="http://apache.org/">Apache</a>. Der wahrscheinliche gängigste Logger ist <a href="http://logging.apache.org/log4j/">log4j</a> und kommt aus dem Hause&#8230; Apache. Also wird Tomcat ausgeliefert mit&#8230; richtig, <a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/package-summary.html">java.util.logging</a>. [Metapher von der Redaktion zensiert.] In Tomcat ist das Logging über eine dünne Zwischenschicht realisiert – <a href="http://tomcat.apache.org/tomcat-6.0-doc/logging.html">JULI</a>. JULI ist eigentlich nur das bekannte Commons Logging aus dem Hause&#8230; Apache – allerdings in einem anderen <em>Java Package</em>, damit auch ja jeder sein eigenes Commons Logging mitbringt und ja nichts modular ist. Was soll&#8217;s, der Tomcat ist trotzdem recht gut. Außerdem gibt es ja die „<a href="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/extras/">Extras</a>“, in denen eine JULI –Variante existiert, mit der auch log4j funktioniert.</p>
<h3>Liferay</h3>
<p>Liferay bringt sein eigenes Logging mit – natürlich Apache log4j. Aber ich wäre nicht ich, wenn ich hier nichts Negatives anzumerken hätte: Wenn man Liferay im Bundle mit Tomcat ausliefert und Tomcat von Haus aus nur java.util.logging mitbringt, wobei aber log4j als Logger möglich ist, und Liferay eh log4j enthält, warum kann man das nicht alles verbinden und Liferay im Bundle mit Tomcat gleich mit einem schlüssigen Logging-Gesamtkonzept ausliefern? Richtig, weil Liferay in Wahrheit die Eierlegende-Wollmilchsau-Web-Applikation sein soll. Und trotzdem sind Mühen in Anpassungen des Tomcats im Bundle geflossen. Huch, den letzten Satz streichen!</p>
<h3>Und jetzt zusammen</h3>
<p>Nun, die Richtung ist soweit klar: Tomcat und Liferay sollen beide mit log4j arbeiten, und am besten noch mit demselben, d.h., die log4j-Bibliothek soll nur einmal in der gesamten <em>ClassLoader</em>-Hierarchie existieren. Dafür muss man nicht viel machen, man verschiebt einfach nur die entsprechende Jar-Datei von $CATALINA_HOME/webapps/ROOT/WEB-INF/lib/log4j.jar nach $CATALINA_HOME/lib. Als nächstes brauchen wir <a href="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/extras/">die alternative JULI-Variante aus den Tomcat-Extras</a>, damit log4j auch von Tomcat und nicht nur von Liferay erkannt wird. Zwei Dateien sind notwendig:</p>
<ul>
<li>tomcat-juli.jar -&gt; $CATALINA_HOME/bin</li>
<li>tomcat-juli-adapters.jar -&gt; $CATALINA_HOME/lib</li>
</ul>
<p>Und für die Funktionstüchtigkeit von log4j brauchen wir noch eine log4j.properties-Datei. Diese legen wir ebenfalls in $CATALINA_HOME/lib. Hier habe ich mal eine Beispieldatei:</p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">
#
# Default properties (can be referenced)
#

default.DatePattern='.'yyyy-MM-dd
default.ConversionPattern=%d{HH:mm:ss.SSS} %p [%c{1}:%L] %m%n

#
# Appenders
#

log4j.appender.ROOT=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROOT.File=${catalina.base}/logs/root.log
log4j.appender.ROOT.Append=true
log4j.appender.ROOT.Encoding=UTF-8
log4j.appender.ROOT.DatePattern=${default.DatePattern}
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT.layout.ConversionPattern=${default.ConversionPattern}

# The appender below is an example for a special purpose logger
#log4j.appender.CATALINE/LOCALHOST=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.CATALINE/LOCALHOST.File=${catalina.base}/logs/catalina-localhost.log
#log4j.appender.CATALINE/LOCALHOST.Append=true
#log4j.appender.CATALINE/LOCALHOST.Encoding=UTF-8
#log4j.appender.CATALINE/LOCALHOST.DatePattern=${default.DatePattern}
#log4j.appender.CATALINE/LOCALHOST.layout=org.apache.log4j.PatternLayout
#log4j.appender.CATALINE/LOCALHOST.layout.ConversionPattern=${default.ConversionPattern}

#
# Loggers
#

log4j.rootLogger=INFO, ROOT

# The logger below is an example for a special purpose
#log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, CATALINE/LOCALHOST
#log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=false
</pre>
<p>Ok, fast geschafft. In Liferay ist natürlich noch eine unglaublich clevere log4j-Konfigurationslogik hinterlegt, die es auszuhebeln gilt. In der system.properties-Datei in $CATALINA_HOME/webapps/ROOT/WEB-INF/lib/portal-impl.jar ist ein <em>Property</em> zu finden, das dafür sorgt, dass log4j von Liferay konfiguriert wird: „log4j.configure.on.startup“. Natürlich setzen wir dieses auf „false“. Wir kommen einem schlüssigen Gesamtkonzept immer näher. Um java.util.logging daran zu hindern, für Tomcat initialisiert zu werden, muss noch die Datei $CATALINA_HOME/conf/logging.properties entfernt werden.</p>
<p>Wenn man jetzt Tomcat startet, dann bekommt man&#8230; 500kB Log-Nachrichten? Ja, heutige Applikationen sind unglaublich geschwätzig. Als wir Liferay daran gehindert haben, log4j für sich zu konfigurieren, haben wir auch die <em>Priority</em> pro <em>Logger</em> auf Standard gelassen (INFO). Mit einem kleinen Tool können wir sämtliche <em>Priority</em>- und <em>Logger</em>-Einstellungen aus der META-INF/portal-log4j.xml-Datei in $CATALINA_HOME/webapps/ROOT/WEB-INF/lib/portal-impl.jar extrahieren.</p>
<pre class="brush: java; collapse: true; light: false; title: ; toolbar: true; notranslate">
package noorg;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Iterator;

import javax.xml.namespace.NamespaceContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Log4jXml2Properties {

	public static void main(String[] args) throws Exception {
		InputStream in = null;
		try {
			in = new FileInputStream(&quot;portal-log4j.xml&quot;);
			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
			dbf.setNamespaceAware(true);
			DocumentBuilder db = dbf.newDocumentBuilder();
			Document d = db.parse(in);
			XPathFactory xpf = XPathFactory.newInstance();
			XPath xp = xpf.newXPath();
			xp.setNamespaceContext(new NamespaceContext() {

				@Override
				public String getNamespaceURI(String prefix) {
					return &quot;http://jakarta.apache.org/log4j/&quot;;
				}

				@Override
				public String getPrefix(String namespaceURI) {
					return &quot;log4j&quot;;
				}

				@Override
				public Iterator&lt;String&gt; getPrefixes(String namespaceURI) {
					return Arrays.asList(&quot;log4j&quot;).iterator();
				}
			});
			NodeList categories = (NodeList) xp.evaluate(&quot;/log4j:configuration/category&quot;, d, XPathConstants.NODESET);
			for (int i = 0; i &lt; categories.getLength(); ++i) {
				Node category = categories.item(i);
				String name = (String) xp.evaluate(&quot;@name&quot;, category, XPathConstants.STRING);
				String priority = (String) xp.evaluate(&quot;priority/@value&quot;, category, XPathConstants.STRING);
				System.out.println(&quot;log4j.logger.&quot; + name + &quot;=&quot; + priority);
			}
		} finally {
			if (in != null)
				try {
					in.close();
				} catch (IOException ignore) {}
		}
	}
}
</pre>
<p>Und hier das Endergebnis als log4j.properties:</p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">
#
# Default properties (can be referenced)
#

default.DatePattern='.'yyyy-MM-dd
default.ConversionPattern=%d{HH:mm:ss.SSS} %p [%c{1}:%L] %m%n

#
# Appenders
#

log4j.appender.ROOT=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROOT.File=${catalina.base}/logs/root.log
log4j.appender.ROOT.Append=true
log4j.appender.ROOT.Encoding=UTF-8
log4j.appender.ROOT.DatePattern=${default.DatePattern}
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT.layout.ConversionPattern=${default.ConversionPattern}

# The appender below is an example for a special purpose logger
#log4j.appender.CATALINE/LOCALHOST=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.CATALINE/LOCALHOST.File=${catalina.base}/logs/catalina-localhost.log
#log4j.appender.CATALINE/LOCALHOST.Append=true
#log4j.appender.CATALINE/LOCALHOST.Encoding=UTF-8
#log4j.appender.CATALINE/LOCALHOST.DatePattern=${default.DatePattern}
#log4j.appender.CATALINE/LOCALHOST.layout=org.apache.log4j.PatternLayout
#log4j.appender.CATALINE/LOCALHOST.layout.ConversionPattern=${default.ConversionPattern}

#
# Loggers
#

log4j.rootLogger=INFO, ROOT

# The logger below is an example for a special purpose
#log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, CATALINE/LOCALHOST
#log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=false

#
# Categories and priorities
#

log4j.logger.com.ecyrd.jspwiki=ERROR
log4j.logger.com.germinus.easyconf=ERROR
log4j.logger.com.liferay=ERROR
log4j.logger.com.liferay.documentlibrary=ERROR
log4j.logger.com.liferay.documentlibrary.util=ERROR
log4j.logger.com.liferay.documentlibrary.util.CMISHook=INFO
log4j.logger.com.liferay.documentlibrary.util.DLIndexer=ERROR
log4j.logger.com.liferay.documentlibrary.util.HookFactory=ERROR
log4j.logger.com.liferay.jdbc=ERROR
log4j.logger.com.liferay.mail.service.impl.MailServiceImpl=ERROR
log4j.logger.com.liferay.mail.util=ERROR
log4j.logger.com.liferay.mail.util.DummyHook=ERROR
log4j.logger.com.liferay.mail.util.HookFactory=ERROR
log4j.logger.com.liferay.mail.util.MailSessionFactoryBean=ERROR
log4j.logger.com.liferay.portal.action.JSONServiceAction=INFO
log4j.logger.com.liferay.portal.action.LayoutAction=WARN
log4j.logger.com.liferay.portal.bean.BeanLocatorImpl=WARN
log4j.logger.com.liferay.portal.cache=WARN
log4j.logger.com.liferay.portal.cache.ehcache.EhcachePortalCacheManager=ERROR
log4j.logger.com.liferay.portal.cache.ehcache.LiferayBootstrapCacheLoaderFactory=INFO
log4j.logger.com.liferay.portal.cache.ehcache.LiferayCacheEventListenerFactory=INFO
log4j.logger.com.liferay.portal.cache.ehcache.LiferayCacheManagerPeerProviderFactory=INFO
log4j.logger.com.liferay.portal.captcha.CaptchaImpl=INFO
log4j.logger.com.liferay.portal.cluster=INFO
log4j.logger.com.liferay.portal.convert=DEBUG
log4j.logger.com.liferay.portal.dao.db=INFO
log4j.logger.com.liferay.portal.dao.db.BaseDB=INFO
log4j.logger.com.liferay.portal.dao.jdbc.aop=ERROR
log4j.logger.com.liferay.portal.dao.jdbc.pool=ERROR
log4j.logger.com.liferay.portal.dao.jdbc.util.DataSourceFactoryBean=INFO
log4j.logger.com.liferay.portal.dao.orm.common.SQLTransformer=ERROR
log4j.logger.com.liferay.portal.dao.orm.hibernate.SessionFactoryImpl=ERROR
log4j.logger.com.liferay.portal.dao.shard=ERROR
log4j.logger.com.liferay.portal.deploy=INFO
log4j.logger.com.liferay.portal.deploy.hot.HookHotDeployListener=INFO
log4j.logger.com.liferay.portal.deploy.hot.PluginPackageHotDeployListener=ERROR
log4j.logger.com.liferay.portal.deploy.hot.ThemeLoaderHotDeployListener=ERROR
log4j.logger.com.liferay.portal.deploy.hot.messaging.HotDeployMessageListener=ERROR
log4j.logger.com.liferay.portal.editor=ERROR
log4j.logger.com.liferay.portal.editor.fckeditor.ConnectorAction=ERROR
log4j.logger.com.liferay.portal.events.EventsProcessor=ERROR
log4j.logger.com.liferay.portal.events.FixOracleAction=INFO
log4j.logger.com.liferay.portal.events.GarbageCollectorAction=ERROR
log4j.logger.com.liferay.portal.events.LogMemoryUsageAction=DEBUG
log4j.logger.com.liferay.portal.events.LoginPostAction=ERROR
log4j.logger.com.liferay.portal.events.LoginPreAction=ERROR
log4j.logger.com.liferay.portal.events.LogoutPostAction=ERROR
log4j.logger.com.liferay.portal.events.LogoutPreAction=ERROR
log4j.logger.com.liferay.portal.events.LogSessionIdAction=DEBUG
log4j.logger.com.liferay.portal.events.LogThreadCountAction=DEBUG
log4j.logger.com.liferay.portal.events.ServicePreAction=ERROR
log4j.logger.com.liferay.portal.events.ShutdownHook=ERROR
log4j.logger.com.liferay.portal.events.StartupAction=ERROR
log4j.logger.com.liferay.portal.events.StartupHelper=INFO
log4j.logger.com.liferay.portal.image.HookFactory=ERROR
log4j.logger.com.liferay.portal.image.ImageProcessorImpl=ERROR
log4j.logger.com.liferay.portal.image.SpriteProcessorImpl=WARN
log4j.logger.com.liferay.portal.kernel.bean.PortalBeanLocatorUtil=ERROR
log4j.logger.com.liferay.portal.kernel.cache.cluster.BasePortalCacheClusterChannel=WARN
log4j.logger.com.liferay.portal.kernel.dao.orm.QueryUtil=WARN
log4j.logger.com.liferay.portal.kernel.deploy=INFO
log4j.logger.com.liferay.portal.kernel.servlet.PortletContextListener=INFO
log4j.logger.com.liferay.portal.kernel.servlet.ServletContextPool=ERROR
log4j.logger.com.liferay.portal.kernel.servlet.ServletContextUtil=INFO
log4j.logger.com.liferay.portal.kernel.upgrade=INFO
log4j.logger.com.liferay.portal.kernel.util.JavaProps=ERROR
log4j.logger.com.liferay.portal.kernel.util.ServerDetector=INFO
log4j.logger.com.liferay.portal.lar=ERROR
log4j.logger.com.liferay.portal.lucene=INFO
log4j.logger.com.liferay.portal.lucene.IndexWriterFactory=INFO
log4j.logger.com.liferay.portal.lucene.LuceneFileExtractor=ERROR
log4j.logger.com.liferay.portal.model.Image=ERROR
log4j.logger.com.liferay.portal.model.ModelHintsImpl=ERROR
log4j.logger.com.liferay.portal.plugin.PluginPackageUtil=INFO
log4j.logger.com.liferay.portal.pop=ERROR
log4j.logger.com.liferay.portal.sanitizer.DummySanitizerImpl=ERROR
log4j.logger.com.liferay.portal.scheduler.quartz.PortalJobStore=ERROR
log4j.logger.com.liferay.portal.search.lucene.LuceneIndexSearcherImpl=ERROR
log4j.logger.com.liferay.portal.security.auth.CASAutoLogin=WARN
log4j.logger.com.liferay.portal.security.auth.LDAPAuth=WARN
log4j.logger.com.liferay.portal.security.auth.OpenSSOAutoLogin=WARN
log4j.logger.com.liferay.portal.security.auth.PrincipalThreadLocal=ERROR
log4j.logger.com.liferay.portal.security.auth.ScreenNameGeneratorFactory=ERROR
log4j.logger.com.liferay.portal.security.auth.ScreenNameValidatorFactory=ERROR
log4j.logger.com.liferay.portal.security.auth.SiteMinderAutoLogin=WARN
log4j.logger.com.liferay.portal.security.ldap=ERROR
log4j.logger.com.liferay.portal.security.ldap.PortalLDAPUtil=ERROR
log4j.logger.com.liferay.portal.security.permission.AdvancedPermissionChecker=ERROR
log4j.logger.com.liferay.portal.security.permission.BasicPermissionChecker=INFO
log4j.logger.com.liferay.portal.security.permission.ResourceActionsUtil=WARN
log4j.logger.com.liferay.portal.security.pwd.RegExpToolkit=WARN
log4j.logger.com.liferay.portal.service.impl.LayoutLocalServiceImpl=ERROR
log4j.logger.com.liferay.portal.service.impl.PermissionLocalServiceImpl=ERROR
log4j.logger.com.liferay.portal.service.impl.PortalLocalServiceImpl=INFO
log4j.logger.com.liferay.portal.service.impl.PortalServiceImpl=INFO
log4j.logger.com.liferay.portal.service.impl.PortletLocalServiceImpl=WARN
log4j.logger.com.liferay.portal.service.impl.ReleaseLocalServiceImpl=INFO
log4j.logger.com.liferay.portal.service.impl.ResourceLocalServiceImpl=ERROR
log4j.logger.com.liferay.portal.service.impl.ServiceComponentLocalServiceImpl=INFO
log4j.logger.com.liferay.portal.service.impl.ThemeLocalServiceImpl=INFO
log4j.logger.com.liferay.portal.service.impl.ThemeServiceImpl=ERROR
log4j.logger.com.liferay.portal.service.persistence.PermissionPool=ERROR
log4j.logger.com.liferay.portal.service.persistence.ResourcePool=ERROR
log4j.logger.com.liferay.portal.servlet=ERROR
log4j.logger.com.liferay.portal.servlet.FriendlyURLServlet=ERROR
log4j.logger.com.liferay.portal.servlet.ImageServlet=ERROR
log4j.logger.com.liferay.portal.servlet.LanguageServlet=WARN
log4j.logger.com.liferay.portal.servlet.LuceneServlet=INFO
log4j.logger.com.liferay.portal.servlet.MainServlet=ERROR
log4j.logger.com.liferay.portal.servlet.PortalSessionCreator=ERROR
log4j.logger.com.liferay.portal.servlet.PortalSessionDestroyer=ERROR
log4j.logger.com.liferay.portal.servlet.SharedSessionUtil=ERROR
log4j.logger.com.liferay.portal.servlet.SoftwareCatalogServlet=ERROR
log4j.logger.com.liferay.portal.servlet.filters=ERROR
log4j.logger.com.liferay.portal.servlet.filters.autologin.AutoLoginFilter=ERROR
log4j.logger.com.liferay.portal.servlet.filters.cache=ERROR
log4j.logger.com.liferay.portal.servlet.filters.doubleclick=ERROR
log4j.logger.com.liferay.portal.servlet.filters.fragment=ERROR
log4j.logger.com.liferay.portal.servlet.filters.gzip=ERROR
log4j.logger.com.liferay.portal.servlet.filters.language=ERROR
log4j.logger.com.liferay.portal.servlet.filters.minifier=ERROR
log4j.logger.com.liferay.portal.servlet.filters.sessionid.SessionIdFilter=ERROR
log4j.logger.com.liferay.portal.servlet.filters.sessionid.SessionIdServletRequest=ERROR
log4j.logger.com.liferay.portal.servlet.filters.strip=ERROR
log4j.logger.com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter=ERROR
log4j.logger.com.liferay.portal.spring=ERROR
log4j.logger.com.liferay.portal.spring.context.ArrayApplicationContext=ERROR
log4j.logger.com.liferay.portal.spring.context.PortalApplicationContext=ERROR
log4j.logger.com.liferay.portal.spring.context.PortletApplicationContext=ERROR
log4j.logger.com.liferay.portal.spring.context.TunnelApplicationContext=ERROR
log4j.logger.com.liferay.portal.spring.hibernate.DialectDetector=INFO
log4j.logger.com.liferay.portal.spring.jpa.DatabaseDetector=INFO
log4j.logger.com.liferay.portal.spring.jpa.LocalContainerEntityManagerFactoryBean=INFO
log4j.logger.com.liferay.portal.struts=ERROR
log4j.logger.com.liferay.portal.struts.MultiMessageResources=ERROR
log4j.logger.com.liferay.portal.struts.PortalRequestProcessor=ERROR
log4j.logger.com.liferay.portal.struts.PortletRequestProcessor=WARN
log4j.logger.com.liferay.portal.struts.StrutsURLEncoder=ERROR
log4j.logger.com.liferay.portal.struts.StrutsUtil=ERROR
log4j.logger.com.liferay.portal.theme.ThemeLoader=INFO
log4j.logger.com.liferay.portal.tools.BaseDeployer=INFO
log4j.logger.com.liferay.portal.tools.DBUpgrader=ERROR
log4j.logger.com.liferay.portal.tools.PortletDeployer=INFO
log4j.logger.com.liferay.portal.tools.ThemeDeployer=INFO
log4j.logger.com.liferay.portal.tools.sql=INFO
log4j.logger.com.liferay.portal.upgrade=INFO
log4j.logger.com.liferay.portal.upgrade.UpgradeProcessUtil=INFO
log4j.logger.com.liferay.portal.util=ERROR
log4j.logger.com.liferay.portal.util.CookieKeys=ERROR
log4j.logger.com.liferay.portal.util.EntityResolver=ERROR
log4j.logger.com.liferay.portal.util.FileImpl=WARN
log4j.logger.com.liferay.portal.util.HttpImpl=INFO
log4j.logger.com.liferay.portal.util.MaintenanceUtil=DEBUG
log4j.logger.com.liferay.portal.util.MimeTypesUtil=ERROR
log4j.logger.com.liferay.portal.util.PortalInstances=ERROR
log4j.logger.com.liferay.portal.util.PortalImpl=INFO
log4j.logger.com.liferay.portal.velocity=ERROR
log4j.logger.com.liferay.portal.velocity.ClassLoaderVelocityResourceListener=ERROR
log4j.logger.com.liferay.portal.velocity.LiferayResourceLoader=ERROR
log4j.logger.com.liferay.portal.velocity.ServletVelocityResourceListener=ERROR
log4j.logger.com.liferay.portal.verify=INFO
log4j.logger.com.liferay.portal.verify.VerifyUser=INFO
log4j.logger.com.liferay.portal.webdav=ERROR
log4j.logger.com.liferay.portal.xml.SAXReaderImpl=WARN
log4j.logger.com.liferay.portlet.InvokerPortlet=ERROR
log4j.logger.com.liferay.portlet.PortletPreferencesImpl=ERROR
log4j.logger.com.liferay.portlet.RenderRequestFactory=ERROR
log4j.logger.com.liferay.portlet.RenderResponseFactory=ERROR
log4j.logger.com.liferay.portlet.admin=ERROR
log4j.logger.com.liferay.portlet.admin.action.EditServerAction=INFO
log4j.logger.com.liferay.portlet.asset.util.AssetUtil=ERROR
log4j.logger.com.liferay.portlet.blogs.service.impl.BlogsEntryLocalServiceImpl=INFO
log4j.logger.com.liferay.portlet.blogs.util=INFO
log4j.logger.com.liferay.portlet.documentlibrary.lar=WARN
log4j.logger.com.liferay.portlet.documentlibrary.webdav=WARN
log4j.logger.com.liferay.portlet.enterpriseadmin.action.EditUserPortraitAction=ERROR
log4j.logger.com.liferay.portlet.enterpriseadmin.util.OrganizationIndexer=WARN
log4j.logger.com.liferay.portlet.enterpriseadmin.util.OrganizationSearchTerms=WARN
log4j.logger.com.liferay.portlet.journal=ERROR
log4j.logger.com.liferay.portlet.journal.lar=WARN
log4j.logger.com.liferay.portlet.journal.service.impl.JournalContentSearchLocalServiceImpl=INFO
log4j.logger.com.liferay.portlet.journal.util.JournalUtil=ERROR
log4j.logger.com.liferay.portlet.journal.util.PropertiesTransformerListener=WARN
log4j.logger.com.liferay.portlet.journal.util.RegexTransformerUtil=INFO
log4j.logger.com.liferay.portlet.journalcontent.JournalContentPortletLayoutListener=ERROR
log4j.logger.com.liferay.portlet.journalcontent.util.JournalContentUtil=ERROR
log4j.logger.com.liferay.portlet.mail=WARN
log4j.logger.com.liferay.portlet.messageboards.pop.MessageListenerImpl=ERROR
log4j.logger.com.liferay.portlet.messageboards.service.impl.MBCategoryLocalServiceImpl=ERROR
log4j.logger.com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl=ERROR
log4j.logger.com.liferay.portlet.messageboards.util.MBUtil=ERROR
log4j.logger.com.liferay.portlet.portletconfiguration.action=ERROR
log4j.logger.com.liferay.portlet.shopping.action.PayPalNotificationAction=DEBUG
log4j.logger.com.liferay.portlet.webproxy=INFO
log4j.logger.com.liferay.portlet.wiki.importers=WARN
log4j.logger.com.liferay.samplestruts=INFO
log4j.logger.com.liferay.sampletest=INFO
log4j.logger.com.liferay.testhook=INFO
log4j.logger.com.liferay.util.JNDIUtil=ERROR
log4j.logger.com.liferay.util.dao=ERROR
log4j.logger.com.liferay.util.dao.orm.CustomSQLUtil=INFO
log4j.logger.com.liferay.util.mail=WARN
log4j.logger.com.liferay.util.portlet.PortletRequestUtil=INFO
log4j.logger.com.liferay.util.servlet.ServletRequestUtil=INFO
log4j.logger.com.liferay.util.servlet.ServletResponseUtil=ERROR
log4j.logger.com.mchange=WARN
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.com.opensymphony.oscache.plugins.clustersupport.JavaGroupsBroadcastingListener=ERROR
log4j.logger.com.sample=INFO
log4j.logger.com.sun=ERROR
log4j.logger.com.sun.faces=ERROR
log4j.logger.de.hunsicker=ERROR
log4j.logger.de.nava.informa=ERROR
log4j.logger.httpclient.wire=ERROR
log4j.logger.net.htmlparser.jericho=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.logger.net.sf.ehcache.config.ConfigurationFactory=INFO
log4j.logger.net.sf.ehcache.config.DiskStoreConfiguration=ERROR
log4j.logger.net.sf.hibernate=ERROR
log4j.logger.org.apache.axis=INFO
log4j.logger.org.apache.bsf=FATAL
log4j.logger.org.apache.commons.digester=ERROR
log4j.logger.org.apache.commons.beanutils=ERROR
log4j.logger.org.apache.commons.fileupload=ERROR
log4j.logger.org.apache.commons.httpclient=ERROR
log4j.logger.org.apache.commons.validator=ERROR
log4j.logger.org.apache.jackrabbit=ERROR
log4j.logger.org.apache.myfaces=ERROR
log4j.logger.org.apache.struts=ERROR
log4j.logger.org.apache.struts.action.RequestProcessor=ERROR
log4j.logger.org.apache.struts.tiles.TilesRequestProcessor=ERROR
log4j.logger.org.apache.velocity=ERROR
log4j.logger.org.apache.xbean=ERROR
log4j.logger.org.hibernate=ERROR
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=OFF
log4j.logger.org.hibernate.util.JDBCExceptionReporter=ERROR&lt;a class=&quot;edit-timestamp hide-if-no-js&quot; tabindex=&quot;4&quot; href=&quot;http://blog.holisticon.de/wp-admin/post.php?post=5067&amp;action=edit#edit_timestamp&quot;&gt;Bearbeiten&lt;/a&gt;
log4j.logger.org.jabsorb=ERROR
log4j.logger.org.jgroups=ERROR
log4j.logger.org.openid4java=ERROR
log4j.logger.org.pdfbox=INFO
log4j.logger.org.portletbridge=INFO
log4j.logger.org.quartz=ERROR
log4j.logger.org.springframework=ERROR
</pre>
<p>So, nun werden nur die Nachrichten protokolliert, die auch gewünscht sind. Leider hat diese Konfiguration einen Nachteil, der aber nicht an der Konfiguration selbst liegt, sondern (wieder einmal) an Liferay, denn in Liferay werden manche Nachrichten und Fehler in <em>System.out</em> bzw. <em>System.err</em> geschrieben. Ja, ein solides System in der Version 6.0.6 schreibt schon mal direkt in die Konsole – ganz normal.</p>
<h3>Das Wort zum Abschluss</h3>
<p>Ich hoffe, dass damit dem einen oder anderen geholfen ist. Wenn jemand noch Verbesserungsvorschläge hat oder der Meinung ist, dass das totaler Käse sei, der möge doch bitte einen Kommentar hinterlassen.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/05/liferaytomcat-bundle-logging-mal-richtig/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Liferay/Tomcat Bundle – Logging mal richtig" data-url="http://blog.holisticon.de/2012/05/liferaytomcat-bundle-logging-mal-richtig/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/05/liferaytomcat-bundle-logging-mal-richtig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Holisticon empfiehlt: NoSQL</title>
		<link>http://blog.holisticon.de/2012/04/holisticon-empfiehlt-nosql/</link>
		<comments>http://blog.holisticon.de/2012/04/holisticon-empfiehlt-nosql/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 08:19:23 +0000</pubDate>
		<dc:creator>Enno Thieleke</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[RDBMS]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=5054</guid>
		<description><![CDATA[Sie fragen sich, was NoSQL ist? Sie möchten wissen, ob NoSQL die richtige Lösung für Ihre Anforderungen ist? Ganz egal, wie tief Sie und ich die Fragestellung ausweiten, ich kann Sie nicht davon abbringen, mehr zu lesen. Holisticon hat in einem Whitepaper (gut: es ist wohl etwas mehr als nur ein Whitepaper) zusammengefasst, was NoSQL [...]]]></description>
			<content:encoded><![CDATA[<p>Sie fragen sich, was NoSQL ist? Sie möchten wissen, ob NoSQL die richtige Lösung für Ihre Anforderungen ist? Ganz egal, wie tief Sie und ich die Fragestellung ausweiten, ich kann Sie nicht davon abbringen, mehr zu lesen.</p>
<p><span id="more-5054"></span>Holisticon hat in einem Whitepaper (gut: es ist wohl etwas mehr als nur ein Whitepaper) zusammengefasst, was NoSQL ist, wo man es ansiedelt und wie man es abgrenzt. Und um auf die einleitende Fragestellung zurückzukommen, es wird Ihnen helfen, diese zu beantworten.</p>
<p>Ja, und wo ist jetzt dieses Whitepaper?<br />
Na, auf unserer Hompage, fein säuberlich kategorisiert – also kurz: <a href="http://holisticon.de/cms/Technologie/NoSQL">hier</a>.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/04/holisticon-empfiehlt-nosql/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Holisticon empfiehlt: NoSQL" data-url="http://blog.holisticon.de/2012/04/holisticon-empfiehlt-nosql/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/04/holisticon-empfiehlt-nosql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drittes Hamburg Web Performance Meetup</title>
		<link>http://blog.holisticon.de/2012/04/drittes-hamburg-web-performance-meetup/</link>
		<comments>http://blog.holisticon.de/2012/04/drittes-hamburg-web-performance-meetup/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 12:28:14 +0000</pubDate>
		<dc:creator>Oliver Ochs</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Technologie]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=5040</guid>
		<description><![CDATA[Das Hamburg Web Performance Meetup geht in die dritte Runde. Wir treffen uns am kommenden Mittwoch um 19:00 Uhr bei Telefonica (Überseering 33a, Hamburg). Geplant sind wieder zwei Talks: Jan Vogel (DI UNTERNEHMER) und Uwe Beßle (Iteratec) &#8211; Optimierung der &#8220;gefühlten&#8221; Performance &#8211; Web Performance Management für Fortgeschrittene Anhand konkreter Erfahrungen im Umfeld einer der [...]]]></description>
			<content:encoded><![CDATA[<p>Das Hamburg Web Performance Meetup geht in die dritte Runde. Wir treffen uns am kommenden Mittwoch um 19:00 Uhr bei Telefonica (Überseering 33a, Hamburg).</p>
<p><img class="colorbox-5040"  src="http://photos1.meetupstatic.com/photos/event/6/3/1/c/highres_71725372.jpeg" alt="Hamburg Web Performance Group" /></p>
<p>Geplant sind wieder zwei Talks:</p>
<p><strong><a href="https://www.xing.com/profile/Jan_Vogel" target="_blank">Jan Vogel</a> (<a href="http://di-unternehmer.com/" target="_blank">DI UNTERNEHMER</a>) und <a href="https://www.xing.com/profile/Uwe_Bessle" target="_blank">Uwe Beßle</a> (<a href="http://iteratec.de/" target="_blank">Iteratec</a>) &#8211; Optimierung der &#8220;gefühlten&#8221; Performance &#8211; Web Performance Management für Fortgeschrittene</strong></p>
<p>Anhand konkreter Erfahrungen im Umfeld einer der größten eCommerce Sites wird vorgestellt, wie es gelingt, das subjektive Kundenempfinden zum Maßstab für das kontinuierliche Web-Performance-Management der komplexen Anwendungslandschaft einer großen eCommerce-Site zu machen. Dabei wird die Entwicklung und Definition von Ladezeit-Indikatoren und deren Messung mit dem Open Source-Tool WebPagetest beleuchtet. Es wird vorgestellt, wie die Auswirkung von Ladezeiten auf die Kundenzufriedenheit mittels einer Remote-Studie abgeleitet werden kann. Abgerundet wird der Vortrag mit einer Darstellung von Best-Practise-Beispielen bei der Arbeit mit WPT und WPT-Monitor.</p>
<p><strong><a href="https://www.xing.com/profile/Jan_Weinschenker" target="_blank">Jan Weinschenker</a> und <a href="https://www.xing.com/profile/Oliver_Ochs" target="_blank">Oliver Ochs</a> (<a href="http://holisticon.de/" target="_blank">Holisticon AG</a>) &#8211; Building Performance, ein Frontend-Build-Prozess</strong></p>
<p>In diesem Vortrag geht es um eine konkrete Website. Im ersten Teil des Vortrags stellen wir die wichtigsten Optimierungsmaßnahmen vor, die außerhalb eines Builds durchgeführt wurden. Für eine dauerhafte, nachhaltige Performance-Optimierung müssen die Maßnahmen automatisiert bzw. in den Build-Prozess integriert werden. Im zweiten Teil des Vortrags zeigen wir einen beispielhaften Build-Prozess für Java-Webanwendungen, der Teile der Optimierungsmaßnahmen durchführt. Andere Teile müssen durch eine geeignete Architektur sichergestellt werden, wofür wir ebenfalls Ideen liefern.</p>
<p>Das Event ist leider sowohl bei <a href="http://www.meetup.com/Hamburg-Web-Performance-Group/" target="_blank">Meetup.com</a> als auch in der <a href="https://www.xing.com/events/hamburg-web-performance-meetup-1005326" target="_blank">XING-Gruppe</a> bereits ausgebucht.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/04/drittes-hamburg-web-performance-meetup/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Drittes Hamburg Web Performance Meetup" data-url="http://blog.holisticon.de/2012/04/drittes-hamburg-web-performance-meetup/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/04/drittes-hamburg-web-performance-meetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auswirkungen der neuen Gebührenordnung für Zahnärzte 2012 – Vorteile der Prozessorientierung</title>
		<link>http://blog.holisticon.de/2012/04/auswirkungen-der-neuen-gebuhrenordnung-fur-zahnarzte-2012-vorteile-der-prozessorientierung/</link>
		<comments>http://blog.holisticon.de/2012/04/auswirkungen-der-neuen-gebuhrenordnung-fur-zahnarzte-2012-vorteile-der-prozessorientierung/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 08:16:44 +0000</pubDate>
		<dc:creator>Roman Schlömmer</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[BPM/SOA]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Modellierung]]></category>
		<category><![CDATA[Prozessmanagement]]></category>
		<category><![CDATA[Prozessorientierung]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=4278</guid>
		<description><![CDATA[Am 1. Januar 2012 trat die neue Gebührenordnung für Zahnärzte (GOZ.2012) in Kraft. Diese wurde über die vergangenen Jahre von einer Arbeitsgruppe &#8211; bestehend aus Bundesgesundheitsministerium, Bundeszahnärztekammer und Verband der privaten Krankenversicherung – als Vorschlag für eine Reform erarbeitet und vom Bundesrat am 4. November 2011 verabschiedet. In den vergangenen Monaten ist es uns gelungen, [...]]]></description>
			<content:encoded><![CDATA[<p>Am 1. Januar 2012 trat die neue <a title="GOZ" href="http://de.wikipedia.org/wiki/Geb%C3%BChrenordnung_f%C3%BCr_Zahn%C3%A4rzte" target="_blank">Gebührenordnung für Zahnärzte (GOZ.2012)</a> in Kraft. Diese wurde über die vergangenen Jahre von einer Arbeitsgruppe &#8211; bestehend aus Bundesgesundheitsministerium, Bundeszahnärztekammer und Verband der privaten Krankenversicherung – als Vorschlag für eine Reform erarbeitet und vom Bundesrat am 4. November 2011 verabschiedet.</p>
<p>In den vergangenen Monaten ist es uns gelungen, zusammen mit unserem Kunden HanseMerkur Krankenversicherung beachtliche und vor allem messbare <a title="Gold für HanseMerkur bei den BPM Awards 2011" href="http://blog.holisticon.de/2011/12/gold-fur-hansemerkur-bei-den-bpm-awards-2011/" target="_blank">Erfolge</a> im Bereich der Automatisierung der Leistungsabrechnung zu erzielen. Nun musste sich der erstellte Prozess Einflüssen von außen stellen und seine durch den Ansatz BPM/SOA beworbene Flexibilität unter Beweis stellen.</p>
<p><span id="more-4278"></span></p>
<h3>Inhalte und Anwendung der GOZ.2012</h3>
<p>In der GOZ sind – etwas vereinfacht ausgedrückt – die zahnärztlichen Behandlungen und deren abrechenbare Kosten beschrieben. Die einzelnen Behandlungen werden dabei textuell, aber auch durch einen Schlüssel, die Gebührenordnungsziffer, beschrieben bzw. können darüber identifiziert werden. Um die durchgeführten Behandlungen für eine eingereichte Zahnarztrechnung zu bewerten und daraus den Erstattungsbetrag zu errechnen, bedient sich ein Versicherungsunternehmen eben jener Gebührenordnungsziffern und gleicht darüber die Inhalte der Rechnung mit den versicherten Leistungen ab.</p>
<p>Die GOZ.2012 löst ihren etwa 25 Jahre alten Vorgänger, die GOZ.1988 ab. Ein Beweggrund für die Reform waren über diesen Zeitraum entstandene Behandlungsmethoden, die nun durch die Etablierung von neuen Gebührenordnungsziffern expliziten Einzug in die Gebührenordnung gehalten haben. In der Vergangenheit wurden diese Behandlungen in der Regel unter Zuhilfenahme sogenannter Analogziffern berechnet. Diese haben allerdings einen direkten Rückschluss auf die tatsächlich durchgeführte Behandlung und damit die Errechnung des Erstattungsbetrags erschwert.</p>
<h3>Auswirkungen der Reform auf die Versicherungsunternehmen</h3>
<p>Der Gesamtablauf des Prozesses vom Input Management über die verschiedenen Leistungsprüfungen und die Regulierung bis zur Erstellung des ausgehenden Druckstücks und der Zahlungsanweisung wird an diversen Stellen von der Einführung der GOZ.2012 betroffen. Diese gilt es in ihrer Gesamtheit zu berücksichtigen, um einerseits einen zielgerichteten, reibungslosen internen Ablauf zu gewährleisten und andererseits dem Kunden gegenüber weiterhin eine kurze Bearbeitungszeit und vor allem korrekte, nachvollziehbare Abrechnungen gewährleisten zu können.</p>
<p>Von der Verabschiedung durch den Bundesrat bis zum Inkrafttreten der GOZ.2012 lagen nur zwei Monate, so dass auch schon in den ersten Monaten des Jahres 2012 mit Einreichungen, die nach der GOZ.2012 abgerechnet wurden, zu rechnen war. Es war also Eile geboten, die allerdings keinesfalls zu Lasten der Qualität des bestehenden Prozesses gehen durfte – weder für den Kunden, noch für die HanseMerkur.</p>
<p>Und damit nicht genug &#8211; eine zusätzliche Herausforderung bestand darin, im gleichen Zuge das Expertensystem ZABAS in die vormals eigenentwickelte Prüfstrecke für Zahnarztrechnungen einzubetten.</p>
<h3>Prozessorientierung und automatisierte Abnahmetests machen das Leben leichter</h3>
<p>Die Einphasung der GOZ.2012 beginnt bereits im Input Management. Die Regelwerke zur automatischen Erkennung der Belegdaten und zu den manuellen Nachkorrekturstellen mussten entsprechend um die geänderten Gebührenordnungsziffern ergänzt bzw. angepasst werden.</p>
<p>Im Fachprozess selbst bestand die Herausforderung darin, die Belege nun so durch den Prozess zu leiten, dass sie durch das Expertensystem ZABAS GOZ geprüft werden. Während die Zusteuerung durch lokale Eingriffe in entsprechende, bereits existierende Steuertabellen realisiert werden konnte, stellten der Aufbau und die Anpassung des Regelwerks zur Prüfung der Belege in ZABAS die größere und komplexere Aufgabe dar.</p>
<p>Weitere essentielle Anpassungen gab es sowohl im Bereich der Ermittlung geeigneter Sachbearbeiter für die manuelle Bearbeitung als auch hinsichtlich der Dialoge und weiterer unternehmensspezifischer Schlüssel- bzw. Regelsysteme.</p>
<p>Bei Anforderungen mit den oben geschilderten Ausmaßen gilt es zunächst, die betroffenen Stellen im Prozess und die notwendigen Maßnahmen zu identifizieren. Ein prozess- und serviceorientierter Ansatz und eine durch Modelle gestützte End-to-End-Betrachtung des Gesamtprozesses machen einem das Leben an dieser Stelle erheblich leichter und helfen dabei, Konsens über die Vision zu erreichen, um schnell mit der Feinkonzeption und der Umsetzung beginnen zu können.</p>
<p>So auch in unserem Fall. Dennoch ist dieser Ansatz keine Garantie für fehlerfreie Konzepte und Software oder für eine reibungslose Integration von Fremdsystemen in die eigene IT- und Prozesslandschaft. Es soll an dieser Stelle nicht verschwiegen werden, dass wir vor Inbetriebnahme mit Fehlern und den allseits ungeliebten Integrationsschwierigkeiten an der Schnittstelle zum Fremdsystem zu kämpfen hatten. Glücklicherweise haben wir schon in der Vergangenheit in den konsequenten Einsatz von automatisierten Modul- und Abnahmetests auf Basis des <a title="FIT für’s Testen?" href="http://blog.holisticon.de/2011/07/fit-furs-testen/" target="_blank">FIT</a>-Frameworks investiert, so dass wir in der Lage waren, die Fehler zeitnah zu identifizieren und zu beheben.</p>
<p>Bemerkenswert war meiner Meinung nach der Umgang mit den Problemen und miteinander in der „heißen Phase“ vor der Produktivsetzung. Trotz einiger Widrigkeiten wurde nicht in operative Hektik verfallen. Sowohl das Team – Fachbereich und IT – als auch das Management haben durch ihre besonnene Art und das respektvolle, kollegiale Miteinander den konstruktiven, lösungsorientierten Umgang mit dieser Situation ermöglicht.</p>
<h2>Fazit</h2>
<p>Die Umstellung auf die GOZ.2012 hat zwar etwas länger gedauert als erhofft, aber alles in allem hat sie weniger Zeit in Anspruch genommen, als manche Prognosen und der marktübliche Schnitt erahnen ließen. Ob dies auch ohne Prozess- und Serviceorientierung sowie automatisierte Tests gegangen wäre? Sicher nicht. Und das gesamte Team, Fachbereich, IT, Interne wie Externe, ist froh, es nicht probiert haben zu müssen.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/04/auswirkungen-der-neuen-gebuhrenordnung-fur-zahnarzte-2012-vorteile-der-prozessorientierung/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Auswirkungen der neuen Gebührenordnung für Zahnärzte 2012 – Vorteile der Prozessorientierung" data-url="http://blog.holisticon.de/2012/04/auswirkungen-der-neuen-gebuhrenordnung-fur-zahnarzte-2012-vorteile-der-prozessorientierung/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/04/auswirkungen-der-neuen-gebuhrenordnung-fur-zahnarzte-2012-vorteile-der-prozessorientierung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MobileTech Conference 2012 &#8211; Tag 2</title>
		<link>http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-2/</link>
		<comments>http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-2/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 08:15:47 +0000</pubDate>
		<dc:creator>Norman Erck</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Rundumsichtig]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=4880</guid>
		<description><![CDATA[Wie mein Kollege Oliver Ochs im Beitrag zum ersten Konferenz-Tag erwähnt hat, waren wir gemeinsam auf der MobileTech Conference 2012 in München und haben uns neuen Input rund um das Thema Mobile aus Sicht der Entwicklungs- und Marketingabteilungen abgeholt. Den ganzen zweiten Tag lang besuchten wir den Business-Track. Darüber, ob das an dem beeindruckenden Vortrag [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.holisticon.de/wp-content/uploads/2012/04/logo_MTC12.png"><img class="alignleft size-full wp-image-5002 colorbox-4880" title="logo_MTC12" src="http://blog.holisticon.de/wp-content/uploads/2012/04/logo_MTC12.png" alt="" width="180" height="180" /></a><br />
Wie mein Kollege <a title="Leitung Geschäftsfeld Architektur Olli Ochs" href="https://www.xing.com/profile/Oliver_Ochs">Oliver Ochs</a> im Beitrag zum ersten Konferenz-Tag erwähnt hat, waren wir gemeinsam auf der MobileTech Conference 2012 in München und haben uns neuen Input rund um das Thema Mobile aus Sicht der Entwicklungs- und Marketingabteilungen abgeholt.</p>
<p>Den ganzen zweiten Tag lang besuchten wir den Business-Track. Darüber, ob das an dem beeindruckenden Vortrag von Herrn Konjovic über die Paid-mobile-Content-Strategie von Axel Springer am Vortag lag, lässt sich streiten.<span id="more-4880"></span></p>
<h3>&#8220;Es ist ja nur eine App&#8221; – oder vielleicht doch nicht?</h3>
<p>Der zweite Tag startete für uns mit einem Vortrag von Dr. Ralf Carbon vom Fraunhofer Institut. Neben einem Ausblick in die unterschiedlichen Arten von Apps (Consumer / Business) stellte er die Konzepte zweier vom Fraunhofer Institut betreuten Mobile-Projekte vor.</p>
<p>Beeindruckend war der Nutzen, der im Bereich der Landwirtschaft durch verschiedene Apps für John Deere erzielt werden konnte. So gibt es Apps für die Wartung und den Service der Maschinen, eine App für den Landwirt, der auf seinem iPad die Task-Planung vornimmt und eine für den Arbeiter auf dem Feld, der durch eine iPhone-App diese Tasks bekommt und bei der Umsetzung, durch Standortermittlung (bin ich auf dem richtigen Feld?) etc. unterstützt wird. Hier fällt auf, dass für jeden individuellen Anwendungsfall eine eigenständige App gebaut wurde, die nur auf den Nutzen des jeweiligen Anwenders reduziert ist. Ergo kommt es bei Apps stets auf den Kontext an.</p>
<p>Ebenfalls spannend war der Exkurs zu Lufthansa Systems. Hier wurde eine App realisiert, die Piloten das Leben dahingehend erleichtert, dass sie ihre Karten nicht mehr in riesigen Aktenordnern in ihren Pilotenkoffern hinter sich herziehen und bei jeder Änderung neu in ihre Ordner einpflegen müssen. Eine App verwaltet dieses Kartenmaterial automatisch, stellt es dar und übernimmt auch die Aktualisierung des Kartenmaterials bei Änderungen.</p>
<p>Neben der Vorstellung der beiden realisierten Projekte wurde der Prozess namens &#8220;mConcAppt&#8221;, den das Fraunhofer Institut für die App-Entwicklung erstellt hat (und selbstverständlich auch jedem vorschlägt), vorgestellt.</p>
<p>Er soll helfen, eine Antwort auf die zentralen Fragen der App-Entwicklung zu finden.</p>
<ul>
<li>Welche Anforderungen habe ich an das Testen?</li>
<li>Welche an die User Experience?</li>
<li>Welche an das Variantenmanagement (Apps für spezifische Kontexte, verschiedene Plattformen)?</li>
<li>Gibt es ein Mobilitätspotential für den Workflow, den Geschäftsprozess, die Aufgaben etc?</li>
<li>Ist es die &#8220;richtige&#8221; App für den Score?</li>
<li>Ist das Backend für den mobilen Anwendungsfall geeignet?<br />
Interessant ist hier das erwähnte Verhältnis von 80 zu 20, wenn es um den Arbeitsaufwand von Backend-Entwicklung und Frontend-Entwicklung geht. Dieses Verhältnis können wir nur bestätigen.</li>
<li>Welche Architektur ist die richtige für meine App (Nativ, Hybrid oder Web)?</li>
<li>Welche Anforderung stelle ich an die Interaktion (UI, UX etc.)?</li>
</ul>
<p>Der &#8220;mConcAppt&#8221;-Prozess beginnt dabei mit einem eintägigen Workshop zur Anforderungserfassung mit Kunde, Anwender, Fachabteilung etc., um in den folgenden zwei bis drei Wochen ein komplettes Konzept für die App zu erarbeiten.</p>
<p>Sehr große Erfolge haben sie dabei mit einfachen Prototypen in Form von Bleistiftzeichnungen und Wireframetools wie <a title="Balsamiq" href="http://www.balsamiq.com/">Balsamiq</a> erzielt.</p>
<p>Klingt für uns alles sehr stark nach Wasserfall, auch wenn Herr Dr. Carbon erwähnte, dass es mehrere Zyklen in den einzelnen Schritten von &#8220;mConcAppt&#8221; gibt. Interessant wäre, wie sich das Ganze mit agilen Methoden in Einklang bringen ließe.</p>
<h3>Die Mobile-Plattform der Zukunft: Facebook</h3>
<p>Martin Szugat gab uns einen Einblick die App-Welt von Facebook und nannte dabei viele interessante Fakten zu Facebook.</p>
<ul>
<li>In den USA verbringen die Leute 16% ihrer Online-Zeit auf Facebook</li>
<li>57% der Smartphone User sind bei Facebook</li>
<li>47% der Zeit verbringen die Amerikaner mit Spiele- und 32% mit Soziale-Netzwerke-Apps</li>
<li>Als Nutzer zählt Facebook nur Nutzer, die innerhalb der letzten drei Tage online waren</li>
<li>7.000.000 Webseiten sind mit Facebook verbunden</li>
<li>Jeden Tag kommen 10.000 hinzu</li>
<li>20 Millionen Facebook-Apps werden pro Tag installiert</li>
</ul>
<p>All diese Fakten unterstreichen, dass über Facebook sehr viele Menschen erreicht werden können und dass Facebook sehr tief im Web &#8220;verankert&#8221; ist.</p>
<p>Ebenfalls erklärte er das neue Marketing-Buzzword &#8220;SoLoMo&#8221;. Die Leute wollen sich vernetzen (Social), wollen zeigen, wo sie sind bzw. sagen, was um sie herum los ist (Local) und wollen das auch noch alles mobil machen (Mobile). Als Beispiele, die &#8220;SoLoMo&#8221; sehr gut umsetzen, nannte er <a title="Glancee" href="http://www.glancee.com/">Glancee</a> und <a title="Badoo" href="http://badoo.com/de/">Badoo</a>. Einen Dienst, der eine &#8220;neue Ebene&#8221; in Facebook einführt, indem er Leute mit gleichen Interessen zusammenführt und eine etwas andere Dating-Plattform. Gemeinsam haben beide, dass sie in Verbindung mit Facebook extrem geringe <a title="Customer Acquisition Costs" href="http://www.tellja.de/empfehlungsmarketing-glossar/customer-acquisition-cost.html">Customer Acquisition Costs</a> haben.</p>
<p>Nach einem Exkurs ins Marketing wurden die Technik von Facebook Apps und die Zukunft von Facebook thematisiert.</p>
<p>Facebook Apps könnnen bei Facebook einfach via iFrame eingebunden werden, d.h., der App-Anbieter muss sich selbst um das Hosting etc. kümmern. Jeder Nutzer muss die Daten, die eine App nutzen darf, explizit freigeben, es macht also den Eindruck, als ob ordentlich mit den Daten umgegangen wird.</p>
<p>Werden Apps für mobile Endgeräte erstellt, so können diese via HTML5 oder Nativ realisiert werden. Als Vorteil von HTML5 wurde erwähnt, dass eine APP nur einmal geschrieben werden muss und so für Desktop und für Mobile eingesetzt werden kann. Vorteilhaft ist auch, dass der Nutzer seine Daten nur einmal freigeben muss.</p>
<p>Interessant ist, dass Facebook die Anforderung &#8220;Social by Design&#8221; an Apps stellt, es Kampagnen-Apps somit schwer haben.</p>
<p>Am Ende gab Herr Szugat noch einen Ausblick in zukünftige, neue Features von Facebook. Da wären der Open Graph, welcher den App Entwicklern ermöglicht, einen Nutzer mit einer Aktion zu einem Objekt in Beziehung zu setzen (z.B. Frau Wunderlich hört Little Dragon), da ein &#8220;Like&#8221; nicht mehr aussagekräftig genug für gezielte Marketingaktionen ist. Auch auf die neue Online-Währung <em>Credits</em>, die Facebook etablieren möchte, wurde eingegangen. Auch hier ist interessant, dass, wann immer bei Facebook gezahlt werden soll, auch diese Credits als Zahlungsvariante angegeben werden müssen. Dabei verdient Facebook ganz nebenbei 30% mit.</p>
<p>Facebook stellt folglich eine echte Alternative zu App Stores bzw. zu einer eigenen mobilen Webseite dar, da viele Nutzer erreicht und auf mehreren Kanälen z.B. durch nur eine HTML5-App angesprochen werden können. Wenn <em>Facebook Credits</em> von den Nutzern angenommen wird, gibt es zusätzlich eine neue Internet-Währung.</p>
<h3>Werbung auf mobilen Plattformen &#8211; mehr Relevanz für nachhaltig erfolgreiche Geschäftsmodelle</h3>
<p>Herr Markus Breuer startete mit der Aussage &#8220;advertising sucks&#8221; und variierte diese Aussage noch zu &#8220;too much advertising sucks&#8221;, &#8220;stupid advertising sucks&#8221; und &#8220;irrelevant advertising sucks&#8221;.</p>
<p>Er ging auf eine Statistik ein, die wir auf der Konferenz schon mehrfach gesehen hatten: Ab 2014 werden mehr mobile Endgeräte als &#8220;klassische&#8221; Rechner genutzt werden. Diese Zahl ist umso bedeutender, wenn man bedenkt, dass Apps und mobile Webseiten derzeit nahezu werbefrei sind. &#8220;Mobile &#8211; It&#8217;s a wonderful world?&#8221; Wir als Nutzer würden selbstverständlich sagen: ja, aber &#8220;kostenfreier&#8221; Content wird in der Regel durch Werbung finanziert. Die schöne neue Welt wird folglich leider nicht so bleiben.</p>
<p>Nach einem Exkurs, dass sich mit Android schwerer Geld verdienen lässt als mit iOS (3% Paid Apps vs. 17%), stellte er das Werbekonzept vor, das <a title="nugg.ad" href="http://www.nugg.ad/">nugg.ad</a> anbietet.</p>
<p>Um das &#8220;sucks&#8221; in &#8220;advertising sucks&#8221; zu entkräften, müsse Werbung effektiv gemacht werden. Dies soll durch Targeting erreicht werden. Das Verhalten des Nutzers wird durch Cookies und andere Technologien, &#8220;die jeder Entwickler kennt&#8221;, beobachtet und analysiert; ab und zu werden Nutzer zusätzlich durch Umfragen um weitere Informationen gebeten. Ziel ist es, dem Nutzer Werbung zu zeigen, die zu Ihm passt bzw. die die Marketingabteilungen als zur Zielgruppe passend definieren.</p>
<p>Neue Herausforderungen zum Thema Mobil sind jetzt natürlich, wie dieses Beobachten des Nutzers auf mobilen Endgeräten geschehen kann. Konkrete Lösungsansätze wurde aber leider noch nicht vorgestellt. Es bleibt spannend.</p>
<h3>UX-Webdesign für Tablets. Eine Anleitung</h3>
<p>Christian Kuhn legte den Teilnehmern User Experience durch Unterstützung zahlreicher Werbevideos nahe. Nach der Viedeoshow gab er Hinweise auf Dokumente, Tools und Links, die helfen, um eine User Experience, die diesen Namen auch verdient, umzusetzen:</p>
<ul>
<li><a href="http://tablet-screendesign.info/">Tablet-screendesign.info/</a> &#8211; eine Liste aller gängigen Tablets mit Auflösung, Betriebssystem etc.</li>
<li><a title="iMockups" href="http://www.endloop.ca/imockups/">iMockups</a> &#8211; eine Software, um Wireframes für Apps und Webseiten zu erstellen</li>
<li>Die User Experience Design Guidelines von <a title="User Experience Design Guidelines for Windows Phone" href="http://msdn.microsoft.com/en-us/library/hh202915(v=vs.92).aspx">Windows Phone 7</a> und <a title="iOS User Experience Guidelines" href="http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/UEBestPractices/UEBestPractices.html">iOS</a></li>
<li><a title="Onswipe" href="http://www.onswipe.com/">Onswipe</a> &#8211; ein Tool zur Realisierung der Tablet-Unterstützung von Webinhalten</li>
<li><a title="Loadtimer" href="http://loadtimer.org/">Loadtimer</a> &#8211; für das Testen der Ladezeiten auf mobilen Endgeräten</li>
<li><a title="aside" href="http://asidemag.com/">Aside</a> &#8211; ein in HTML5 umgesetztes Magazin als gelungenes Beispiel</li>
</ul>
<p>Für das Gelingen von User Experience in der Praxis gab es folgende Tipps:</p>
<ul>
<li>unterschiedliche mobile Betriebsysteme unterstützen unterschiedliche Anzahl an Gesten &#8211; es gibt dafür leider noch keinen Standard</li>
<li>UX der Hardware, des Betriebsystems und der Webseite sind von Bedeutung</li>
<li>Um Bereitstellung der Schriftart kümmern &#8211; einige mobile Betriebsysteme nehmen sonst eigene</li>
<li>Informationen weglassen &#8211; Tablet first</li>
<li>1 cm Platz um Navigationselemente</li>
<li>Responsive Design &#8211; evtl. jedoch nicht für mobile Version</li>
<li>Einsatz Adaptive Images</li>
<li>Minimalistisches &amp; helles Design</li>
</ul>
<h3>Interactive TV &#8211; mit HTML5 auf den 2nd Screen</h3>
<p>Andreas Lohmann gab uns einen Einblick in die Welt des interaktiven TVs. Neben den Anfängen von Interactive TV durch Text, Home Shopping und der Gameshow <em>Hugo</em> zeigte er uns, wohin die Reise geht. Zu 2nd Screens, die wir in Form von Smartphones oder Tablets in Zukunft nutzen können, um uns am Geschehen im TV zu beteiligen.</p>
<h2>Fazit</h2>
<p>Betrachte ich den zweiten Tag der Konferenz in Summe, nehme ich mit, dass es bei Apps stets auf den <em>Kontext</em> ankommt, das Thema Facebook Apps in Zukunft auch für uns spannend wird, &#8220;advertising sucks&#8221;, auf Tablets <em>Content + Context = King</em> gilt und beim interaktiven Fernsehen <em>Context King</em> ist.</p>
<p>Selbstverständlich bedanken wir uns bei den Sprechern, Ausstellern und Organisatoren für eine gelungene Konferenz.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-2/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="MobileTech Conference 2012 &#8211; Tag 2" data-url="http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-2/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MobileTech Conference 2012 &#8211; Tag 1</title>
		<link>http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-1/</link>
		<comments>http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-1/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 08:11:10 +0000</pubDate>
		<dc:creator>Oliver Ochs</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Rundumsichtig]]></category>
		<category><![CDATA[Technologie]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=4911</guid>
		<description><![CDATA[Ich habe mit meinem Kollegen Norman Erck die MobileTech Conference 2012 in München besucht. Wir haben die Eindrücke, die wir auf der zweitägigen Messe gesammelt haben, in zwei Blog-Beiträgen zusammengetragen. Dies hier sind die Impressionen der verschiedenen Vorträges und Präsentationen des ersten Tages. Die Konferenz wurde durch Sebastian Meyen vom Software&#38;Support-Verlag eröffnet. Er übergab die Session [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="https://www.xing.com/profile/Oliver_Ochs">Ich</a> habe mit meinem Kollegen <a href="https://www.xing.com/profile/Norman_Erck">Norman Erck</a> die <a href="http://mobiletechcon.de/2012spring/">MobileTech Conference 2012</a> in München besucht. Wir haben die Eindrücke, die wir auf der zweitägigen Messe gesammelt haben, in zwei Blog-Beiträgen zusammengetragen. Dies hier sind die Impressionen der verschiedenen Vorträges und Präsentationen des ersten Tages.</p>
<div id="attachment_4915" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.holisticon.de/wp-content/uploads/2012/03/2012-03-27-09.45.12.jpg"><img class="size-medium wp-image-4915 colorbox-4911" src="http://blog.holisticon.de/wp-content/uploads/2012/03/2012-03-27-09.45.12-300x224.jpg" alt="Die Eröffnung der MobileTechCon 2012" width="300" height="224" /></a><p class="wp-caption-text">Die Eröffnung der MobileTechCon 2012</p></div>
<p><span id="more-4911"></span></p>
<p style="text-align: left;">Die Konferenz wurde durch <a href="https://www.xing.com/profile/Sebastian_Meyen">Sebastian Meyen</a> vom <a href="http://sandsmedia.com/">Software&amp;Support-Verlag</a> eröffnet. Er übergab die Session an <a href="http://www.nunatak.com/company/founding-partners/">Maks Giordano</a> von <a href="http://www.nunatak.com/">Nunatak</a>. Wer vom Design mobiler Applikationen spricht, meint dabei meist das Design von grafischen Oberflächen. Dass Audio genauso wichtig sein kann, liegt schon in der Historie der Telekommunikation begründet. Mobile Anwendungen laufen auf modernen Telefonen. Telefone wurden erfunden, um Sprache zu übertragen.</p>
<p style="text-align: left;">Manfred Lutzky von <a href="http://www.iis.fraunhofer.de/">Fraunhofer IIS</a> stellte den <a href="http://www.iis.fraunhofer.de/bf/amm/produkte/audiocodec/audiocodecs/aaceld/">AAC-ELD-Codec</a> vor. Dieser Codec ist ein Full HD Voice-Codec, der heute schon in <a href="http://www.apple.com/de/mac/facetime/">Apple Facetime</a> verwendet wird und in iOS 5 auch Entwicklern von Apps zur Verfügung steht. Der AAC-ELD-Codec ähnelt dem AAC-Codec, ist aber auf geringe Verzögerungen optimiert, was wichtig für die Real-Time-Kommunikation ist.</p>
<p style="text-align: left;"><a href="https://www.xing.com/profile/Philipp_Eibach">Philipp Eibach</a> stellte sein neues Startup <a href="http://wahwah.fm/">wahwah.fm</a> vor. Eibach war schon an der Gründung von <a href="http://www.lastfm.de/home">last.fm</a> beteiligt und ist schon lange im Bereich Social Music unterwegs. Auf dem Smartphone hört jeder Musik für sich allein. Das Ziel von wahwah.fm ist, dass Musik wieder gemeinsam und zusammen gehört wird. So lässt sich Musik von Bekannten und Unbekannten entdecken. In wahwah.fm kann jeder Nutzer mit seiner Playlist auf Sendung gehen. Jeder Nutzer ist damit ein eigener, kleiner Radiosender. Andere Nutzer können sich in diese Sendung einklinken und mithören. Hörer einer laufenden Sendung können über Chats etc. interagieren. Die Location eines Senders lässt sich bei der Suche nach Sendern berücksichtigen. wahwah.fm ist eine prima Möglichkeit, Musik neu zu entdecken.</p>
<p style="text-align: left;"><a href="https://twitter.com/#!/byzo">Michael Breidenbrücker</a> von <a href="http://blog.rjdj.me/pages/contact">Reality Jockey Ltd.</a> zeigte <a href="http://rjdj.me/">RjDj</a>. RjDj lässt einen Nutzer selbst Musik erschaffen. Dabei verwendet RjDj nicht ein klassisches User Interface, sondern bezieht das komplette Sensor-Netzwerk des Smartphones ein. Musik wird also durch die Location, die Bewegung des Nutzers und sein Umfeld erschaffen. Der Nutzer taucht so in eine audiovisuelle Umgebung ein, in der die Intensität der Immersion sehr hoch ist. Auf Basis von RjDj wurden bereits weitere Apps entwickelt &#8211; wie die Audio-App zum Film <a href="http://www.imdb.de/title/tt1375666/">Inception</a>, die in Zusammenarbeit mit dem Soundtrack-Komponisten <a href="http://www.imdb.de/name/nm0001877/">Hans Zimmer</a> und dem Regisseur <a href="http://www.imdb.de/name/nm0634240/">Christopher Nolan</a> entstanden sind.</p>
<p style="text-align: left;"><a href="http://mobile-knowledge.de/referentin.html">Anika Brinkmann</a>, die als Kommunikationsdesigner <a href="http://Mobile-Knowledge.de">Mobile-Knowledge.de</a> verantwortet, eröffnete den Mobile Web-Track. Sie gab einen allgemeinen Überblick über die Themen des Tracks: Was bedeutet „Always on“? Hat always online nur gute oder auch unangenehme Seiten wie die allzeitige Bereitschaft von Arbeitnehmern, die mit modernen Kommunikationsendgeräten ausgestattet werden? Ist „Always on“ nur ein Versprechen oder schon heute Realität? Gibt es immer noch die Schere zwischen Stadt und Land, was die Netzabdeckung von UMTS und LTE angeht? Der Footprint (die Größe) der Seiten wächst im Moment noch stärker als die verfügbare mobile Bandbreite. Was nutzt die Cloud, wenn gerade keine Verbindung zum Internet hergestellt werden kann? Wie muss mit Nutzerdaten umgegangen werden &#8211; besonders im Spannungsfeld zwischen den Wünschen des Marketings und den Anforderungen des Datenschutzes? Wie befreie ich Daten aus Datensilos wie SAP oder gängigen CRM-Systemen? Content (sprich: Daten) muss in unterschiedlichen Kontexten unterschiedlich genutzt werden können. Daher muss er in offenen Formaten (kein Flash) und in unterschiedlichen Ausprägungen (z.B. auch in hoher Auflösung für Retina-Displays) vorliegen, um genutzt werden zu können. Um all diese Fragen zu beantworten, sollte zunächst eine Strategie erarbeitet werden, aus der wiederum Konzepte entwickelt werden können. Content sollte sowohl für’s Web als auch für mobile Anwendungen verwendet werden können. Dabei sollte man auf offene, zukunftssichere Plattformen statt auf proprietäre Technologien setzen. Wir sind hier und jetzt dabei, ein neues Level der Kommunikation zu erreichen. Zu den Technologien, mit dem dies umgesetzt werden wird, gehören sicherlich HTML5 und CSS3.</p>
<p style="text-align: left;"><a href="https://www.xing.com/profile/Ulrich_Schmidt3">Ulrich Schmidt</a> von <a href="http://www.sevenval.com/">sevenval</a> zeigte die Offlinemöglichkeiten von HTML5-Webapplikationen. Der Grund, warum man überhaupt Offline-fähige Applikationen braucht, ist die unvollständige Netzabdeckung. Gerade wenn man beispielsweise in der Bahn unterwegs oder im Ausland-Urlaub ist, dann hat man oft kein Netz. Offline zu sein ist ein temporäres Problem, das durch HTML5 gelöst werden kann. Konzeptionell ist zwischen Daten und Funktionen zu trennen: Entweder man kann nur Daten oder nur Funktionen offline vorhalten. Oder man kann eine komplett Offline-fähige Webapplikation erstellen. Technologien für ein „Aktives Offline“ für Daten sind Local Storage, das als Cookie-Ersatz in allen Browsern läuft, WebSQL, das inzwischen deprecated ist aber zumindest auf iOS und Android zur Verfügung steht, und IndexDB, die in neueren Browsern (allerdings noch nicht in mobilen Browsern) als Weiterentwicklung von Local Storage und WebSQL angesehen werden kann. Als Bleeding Edge kann die FileSystem API angesehen werden, die ab Chrome 13 einen direkten Zugriff aufs Filesystem zur Ablage von Binärdaten erlaubt. „Passives Offline“ für Funktionalität (JavaScript) und Ressourcen (HTML, CSS, Bilder) bietet der Application Cache. Die Herausforderung bei der Verwendung des Application Caches ist es, diesen „aktuell“ zu halten und das Update-Verhalten sinnvoll zu implementieren. Der Application Cache schlägt HTTP-Header (außer beim Firefox). Die Schritte zur Erstellung einer Offline-fähigen Webapplikation sind laut Schmidt zuerst das Erstellen von Layout und Struktur (analog zu einer normalen Webapplikation), danach das Einführen von Local Storage zur Speicherung der Daten und anschließend die Verwendung des Application Caches zur Speicherung des bereits erstellten Layouts und der Struktur. Der Vortrag schloss mit Empfehlungen aus der Praxis zum Umgehen von Fallstricken.</p>
<p style="text-align: left;"><a href="https://www.xing.com/profile/Sven_Guenther6">Sven Günther</a> von <a href="http://www.it-agile.de/">it-agile</a> stellte die API des Zeitungskiosks in iOS 5 vor. Zeitschriften-Apps lassen sich mit NewsstandKit implementieren. Dieses bietet Features wie Push Notificiation und Background Downloads. Außerdem lässt sich programmatisch das Programm-Icon verändern, so dass das Cover der aktuellen Ausgabe als Icon verwendet werden kann. Payments lassen sich über das StoreKit abwickeln. Zur Anzeige von Content sind WebViews ungeeignet, da sich mit WebViews nur schwer die Anmutung einer Zeitung oder eines Magazins nachahmen lässt. Besser geeignet dazu sind CoreText und der UIPageViewController.</p>
<p style="text-align: left;"><a href="https://www.xing.com/profile/Torsten_Drees">Torsten Drees</a> präsentierte die MEAP (Mobile Enterprise Application Plattform), die mit einer Multi-Channel-Architektur die Herausforderung aktueller Enterprise Mobility Trends lösen soll. Eine Implementierung der MEAP ist die Magic Integration Plattform von <a href="http://www.magicsoftware.com/">Magic Software</a>. Diese Präsentation kann als reiner Marketing-Vortrag bewertet werden.</p>
<p style="text-align: left;"><a href="https://www.xing.com/profile/Georg_Konjovic">Georg Konjovic</a>, der als Director Premium Content die Konzern-weite Paid Content-Stratgie bei <a href="http://www.axelspringer.de/">Axel Springer</a> verantwortet, präsentierte die Ziele des Verlags. ASV sieht sinkende Print-Reichweiten nicht als Gefahr, sondern als neue Chance für den Qualitätsjournalismus. Die Paid Content-Stragie vom Axel Springer Verlag äußert sich in ca. 70 Apps (teilweise HD-Apps für das iPad), der Plattform iKiosk (ePapers im Portable Document Format, der iKiosk steht für andere Verlagshäuser offen), einem News-Aggregator (myEdition), der sich zurzeit in einer Closed Beta befindet, und zahlreichen News-Sites. Die größte Herausforderung ist die Schaffung neuer Abo-Modelle bzw. die Migration der Nutzer von kostenlosen Web-Diensten zu Nutzern kostenpflichtiger Dienste. Anders als in den USA entwickelt sich der Markt für Qualitätsjournalismus in Deutschland positiv. Vor allem Nutzer des iPads haben eine hohe Zahlungsbereitschaft. Alle zukünftigen Angebote bei Axels Springer sollen ein Preisschild bzw. einen Abo-Preis haben.</p>
<p style="text-align: left;"><a href="http://www.linkedin.com/pub/rosemarie-wirthmueller/7/10b/250">Rosemarie Wirtsmüller</a> von <a href="http://www.antennainternational.com/">Antenna International</a> zeige Apps für Museumsbesucher. Diese Apps sind viel mehr als reine eGuides. Sie informieren den Nutzer schon vor dem Besuch des Museums (Pre-Visit-Kontakt) und unterstützen in bei der Nachbereitung (Post-Visit-Kontakt). Dies äußert sich auch in den Download-Zahlen. Diese Apps werden sogar von Nutzern verwendet, die gar nicht das Museum besuchen, sondern sich mit der App über das Thema einer Ausstellung selbst lange nach der eigentlichen Ausstellung informieren möchen.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-1/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="MobileTech Conference 2012 &#8211; Tag 1" data-url="http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-1/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/04/mobiletech-conference-2012-tag-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auch Prozesse haben ihre Last zu tragen</title>
		<link>http://blog.holisticon.de/2012/03/auch-prozesse-haben-ihre-zu-tragen/</link>
		<comments>http://blog.holisticon.de/2012/03/auch-prozesse-haben-ihre-zu-tragen/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 08:10:42 +0000</pubDate>
		<dc:creator>Stefan Zilske</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[BPM/SOA]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[Payload]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=4838</guid>
		<description><![CDATA[Wenn Sie sich mit der Automatisierung von Prozessen in einer Business Process Engine (BPE) beschäftigen, stehen oder standen Sie vielleicht auch schon vor der Frage, welche Daten Sie als Payload durch den Prozess schleusen. Dass diese Frage alles andere als trivial und doch manchmal ganz leicht zu beantworten ist, haben wir kürzlich im Projekt erfahren. [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn Sie sich mit der Automatisierung von Prozessen in einer Business Process Engine (BPE) beschäftigen, stehen oder standen Sie vielleicht auch schon vor der Frage, welche Daten Sie als Payload durch den Prozess schleusen.</p>
<p>Dass diese Frage alles andere als trivial und doch manchmal ganz leicht zu beantworten ist, haben wir kürzlich im Projekt erfahren.</p>
<p><span id="more-4838"></span></p>
<p>Als Payload (engl. für „Nutzlast“) bezeichnet man üblicherweise die Daten, die in einem Prozess von Aktivität zu Aktivität transportiert werden. In vielen Fällen ist die Payload eine XML-Struktur, die den Transport beliebiger Daten zulässt. Eine Aktivität nimmt die Payload, führt darauf eine Operation aus (dies kann alles sein: von einer lokalen XSL-Transformation bis zum Aufruf eines Webservices) und schreibt das Ergebnis zurück in die Payload, worauf die nächste Aktivität dann ihrerseits operiert.</p>
<h2>Extrem 1: Payload mit IDs</h2>
<p>In unserem Projekt ist die BPE, in unserem Fall die <a title="inubit Suite" href="http://www.inubit.com/inubit-suite.html" target="_blank">inubit Suite</a>, aufgesetzt auf einer serviceorientierten, mit EJB3 realisierten Architektur, die in einem JBoss Application Server läuft. Geschäftslogik findet nur in der Business Service-Schicht statt, die BPE übernimmt ausschließlich die Prozesssteuerung und orchestriert im Wesentlichen die Business Services, die sie über Webservices aufruft. Die Tatsache, dass die zugrunde liegende SOA in Hinblick auf ihre Schnittstellen sehr homogen ist, hat dazu geführt, dass die Prozesse mit einer sehr schlanken Payload auskommen. Wir schleusen in den meisten Fällen nur die IDs von Fachobjekten durch den Prozess, die dann an die Services gereicht werden.</p>
<p>Dieses Vorgehen stellt gewisse Anforderungen an die Business-Service-Schicht. Diese muss nämlich alle Daten, die sie benötigt, anhand der IDs, die sie vom Prozess bekommt, über Domain Services aus der Datenbank beschaffen und die Änderungen nach der Verarbeitung über Domain Services auch wieder persistieren.</p>
<h2>Extrem 2: Payload mit Fachobjekten</h2>
<p>Das andere Extrem ist es, komplette Fachobjekte am Beginn des Prozesses einmal über einen Service in den Prozess zu laden und dann in der Payload mitzuführen. Die Objekte werden dann an die Services gereicht, die dann nur noch die Änderungen durchführen und das manipulierte Objekt an den Prozess zurückgeben müssen. Der Prozess muss dann an geeigneter Stelle die Objekte persistieren. In einer heterogenen Welt könnte der Prozess so auch Schnittstellen bedienen, die unterschiedliche Strukturen erwarten, indem die Fachobjekte ggf. in die jeweilige Zielstruktur gemapped werden.</p>
<p>Auf der Service-Schicht würde dieses Vorgehen einerseits Datenbankzugriffe, andererseits remote calls auf die Domain Service-Schicht sparen.</p>
<h2>And the winner is…?</h2>
<p>Wir haben kürzlich beide Varianten auf ihr Laufzeitverhalten untersucht. Das Ergebnis war eindeutig: Die Ersparnis an Datenbankzugriffen und remote calls wird durch die Verwaltung der Payload in der BPE, bei der große XML-Strukturen häufig in das Filesystem geschrieben und wieder geladen werden, bei weitem neutralisiert. Die Variante mit Fachobjekten war in unseren Tests bis zu fünf Mal langsamer als die Variante mit IDs. Die Ergebnisse bei der Laufzeit waren so eindeutig, dass wir weiterführende Untersuchungen, z.B. in Richtung Netzlast, gar nicht mehr angestellt haben.</p>
<h2>Was wir daraus lernen können</h2>
<p>Mindestens genauso interessant wie das eigentliche Ergebnis der Untersuchung waren aber die Erkenntnisse, die ich als Nebenprodukt gewinnen konnte. Die eine wie die andere Variante hätte nämlich erheblichen Einfluss auf die gesamte Architektur und das Prozessdesign.</p>
<p>Persistiert jeder Service immer alle Änderungen sofort, braucht man sich keine Gedanken darüber zu machen, zu welcher Zeit man welchen Datenzustand benötigt und wann manuelle Synchpoints aus dem Prozess heraus nötig sind. Möglicherweise reicht es dabei gar nicht aus, am Anfang des Prozesses zu laden und am Ende zu speichern. Gibt es im Prozess manuelle Rückkopplungen mit Mitarbeitern, so muss vor diesen gespeichert werden, damit der Mitarbeiter auf dem aktuellen Stand aufsetzt.</p>
<p>Dazu kommt, dass die Fachobjekte in der BPE, z.B. als XSD, modelliert werden müssen. Existiert in der SOA ein Versionskonzept, das den parallelen Betrieb verschiedener Versionen eines Services erlaubt, so muss dieses in der BPE entsprechend nachgebildet werden. Außerdem wird ein Konzept für den Transport von Fachobjekten über die (Web-)Service-Schnittstellen hinaus notwendig. Setzt man auf abstrakte DTOs (seit EJB3 manchmal als Anti-Patterns verschrien), entsteht zusätzliches Mapping auf der Service-Schicht, das sowohl zur Entwicklungs- als auch Laufzeit Aufwand bereitet. Werden echte JPA-Entitäten verwendet, verliert man die lose Kopplung, die den Charme einer SOA ausmacht, da die (Web-)Service-Consumer direkt von Änderungen an den Entitäten abhängig sind.</p>
<p>Auf der anderen Seite muss man sagen, dass eine Payload, die nur auf IDs operiert, eine homogene Servicelandschaft voraussetzt, in der alle Services mit diesen IDs auch umgehen können und Zugriff auf die Daten haben. Werden Dritt- oder Legacysysteme angebunden, so müssen möglicherweise Fachobjekte durch den Prozess geschleust werden, um diese Systeme zu bedienen.</p>
<h2>Fazit</h2>
<p>Eine eindeutige Empfehlung für den einen oder anderen Weg kann es an dieser Stelle nicht geben. Ich möchte aber die Sinne dafür schärfen, dass diese Entscheidung durchaus weitreichende Folgen haben kann und gründliche Überlegungen erfordert.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/03/auch-prozesse-haben-ihre-zu-tragen/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Auch Prozesse haben ihre Last zu tragen" data-url="http://blog.holisticon.de/2012/03/auch-prozesse-haben-ihre-zu-tragen/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/03/auch-prozesse-haben-ihre-zu-tragen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ankündigung Zweites Hamburg Web Performance Meetup</title>
		<link>http://blog.holisticon.de/2012/03/ankundigung-zweites-hamburg-web-performance-meetup/</link>
		<comments>http://blog.holisticon.de/2012/03/ankundigung-zweites-hamburg-web-performance-meetup/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 20:30:22 +0000</pubDate>
		<dc:creator>Oliver Ochs</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[webperf]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=4689</guid>
		<description><![CDATA[Nach einem erfolgreichen ersten Treffen wollen wir weiter versuchen, das Thema Web Performance in Hamburg zu verankern. Darum planen wir ein zweites Treffen der Hamburg Web Performance Group, das in unseren Räumlichkeiten (Holisticon AG, Friedensallee 120, 22763 Hamburg) am Mittwoch, den 21. März 2012 um 19:00 Uhr stattfinden wird. Geplant sind zwei Talks: Lars Lentfer [...]]]></description>
			<content:encoded><![CDATA[<p><img class="colorbox-4689"  style="float: right;" src="http://photos1.meetupstatic.com/photos/event/6/3/1/c/highres_71725372.jpeg" alt="Logo der Hamburg Web Performance Group" /></p>
<p>Nach einem <a title="Erstes Hamburg Web Performance Meetup" href="http://blog.holisticon.de/2012/02/erstes-hamburg-web-performance-meetup/">erfolgreichen ersten Treffen</a> wollen wir weiter versuchen, das Thema Web Performance in Hamburg zu verankern.</p>
<p><span class="vevent"><br />
Darum planen wir ein <span class="summary" title="Hamburg Web Performance Meetup">zweites Treffen der Hamburg Web Performance Group</span>, das in unseren Räumlichkeiten (<span class="location">Holisticon AG, Friedensallee 120, 22763 Hamburg</span>) am <span class="dtstart" title="2012-03-21T19:00+0100">Mittwoch, den 21. März 2012 um 19:00 Uhr</span> stattfinden wird.<br />
</span></p>
<ul>Geplant sind zwei Talks:</ul>
<ul>
<li><a href="https://www.xing.com/profile/Lars_Lentfer2" target="_blank">Lars Lentfer</a> (<a href="https://www.xing.com" target="_blank">XING</a>) und <a href="https://www.xing.com/profile/Timothy_Payton" target="_blank">Timothy Payton</a> (<a href="https://www.xing.com" target="_blank">XING</a>) über die <a title="XING mobile web app" href="http://touch.xing.com" target="_blank">XING Mobile Web App</a>.</li>
<li><a title="folge Pat Meenan auf Twitter" href="http://twitter.com/#!/@Patmeenan" target="_blank">Pat Meenan</a> (<a title="Homepage von WebPagtest.org" href="http://www.webpagetest.org/" target="_blank">WebPagetest</a>, Google) über Frontend SPOF.</li>
</ul>
<p>Das <a title="Zweites Treffen bei Meetup.com" href="http://www.meetup.com/Hamburg-Web-Performance-Group/events/53991622/" target="_blank">Event</a> ist leider sowohl bei <a title="Unsere Gruppe auf Meetup.com" href="http://www.meetup.com/Hamburg-Web-Performance-Group" target="_blank">Meetup.com</a> als auch in der <a title="XING-Gruppe der Hamburg Web Performance Group" href="https://www.xing.com/events/hamburg-web-performance-meetup-878405" target="_blank">XING-Gruppe</a> bereits ausgebucht.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/03/ankundigung-zweites-hamburg-web-performance-meetup/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Ankündigung Zweites Hamburg Web Performance Meetup" data-url="http://blog.holisticon.de/2012/03/ankundigung-zweites-hamburg-web-performance-meetup/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/03/ankundigung-zweites-hamburg-web-performance-meetup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

