<?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>Soziotechnische Integration &#187; Dienstintegration</title>
	<atom:link href="https://test.soziotech.org/category/integrationsebenen/dienstintegration/feed/" rel="self" type="application/rss+xml" />
	<link>https://test.soziotech.org</link>
	<description>Ein Projekt mit der Forschungsgruppe Kooperationssysteme an der Universität der Bundeswehr München</description>
	<lastBuildDate>Mon, 15 Jun 2015 15:24:48 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>CommunityMashup &#8211; Ein erster Überblick</title>
		<link>https://test.soziotech.org/communitymashup-ein-erster-ueberblick/</link>
		<comments>https://test.soziotech.org/communitymashup-ein-erster-ueberblick/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 12:53:53 +0000</pubDate>
		<dc:creator><![CDATA[Peter Lachenmaier]]></dc:creator>
				<category><![CDATA[Berichte]]></category>
		<category><![CDATA[CommunityMashup]]></category>
		<category><![CDATA[Dienstintegration]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Aggregation]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Filtertung]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Mashup]]></category>
		<category><![CDATA[Modell]]></category>
		<category><![CDATA[personenzentrisch]]></category>
		<category><![CDATA[Service-Orientierte-Architektur]]></category>
		<category><![CDATA[Social Software]]></category>

		<guid isPermaLink="false">http://sevastyanova.cscwlab.de/</guid>
		<description><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/211_crop_940x198_istock_000001551784medium.jpg" width="618" height="130" alt="CommunityMashup &#8211; Ein erster Überblick" /></p>Das CommuntiyMashup ist eine Integrationslösung für Daten aus sozialen Diensten. Es vereinheitlicht und verbindet Daten aus den unterschiedlichsten Quellen. Hierbei steht im Sinne des &#8222;Social Web&#8220; die Person im Vordergrund. Eine definierte Schnittstelle mit vorgefertigen Anwendungskompenten lässt eine einfache Verwendung &#8230; <a href="https://test.soziotech.org/communitymashup-ein-erster-ueberblick/">Weiterlesen <span class="meta-nav">&#8594;</span></a><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fcommunitymashup-ein-erster-ueberblick%2F&amp;action_name=CommunityMashup+%26%238211%3B+Ein+erster+%C3%9Cberblick&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/communitymashup/" rel="bookmark" title="CommunityMashup &#8211; Überblick">CommunityMashup &#8211; Überblick </a></li>
<li><a href="https://test.soziotech.org/communitymashup/service-orientierte-architektur/" rel="bookmark" title="CommunityMashup &#8211; Service-Orientierte-Architektur">CommunityMashup &#8211; Service-Orientierte-Architektur </a></li>
<li><a href="https://test.soziotech.org/communitymashup/model-driven-approach/" rel="bookmark" title="CommunityMashup &#8211; Model Driven Approach">CommunityMashup &#8211; Model Driven Approach </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/211_crop_940x198_istock_000001551784medium.jpg" width="618" height="130" alt="CommunityMashup &#8211; Ein erster Überblick" /></p><p> <em>Das CommuntiyMashup ist eine Integrationslösung für Daten aus sozialen Diensten. Es vereinheitlicht und verbindet Daten aus den unterschiedlichsten Quellen. Hierbei steht im Sinne des &#8222;Social Web&#8220; die Person im Vordergrund. Eine definierte Schnittstelle mit vorgefertigen Anwendungskompenten lässt eine einfache Verwendung der Daten in verschiedensten Anwendungsszenarien zu. Diese Seite gibt einen Überblick über die dem CommunityMashup zugrundeliegenden Konzepte und vermittelt einen Einblick in seine vielfältigen Verwendungsmöglichkeiten.</em></p>
<h2>Ausgangssituation</h2>
<p>Mit dem Erfolg von <a href="https://test.soziotech.org/glossar/web-2-0/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für Web 2.0 zu springen." onmouseover="tooltip.show('Teilmenge des soziotechnischen Systems Internet (d.h. Dienste + Menschen, von denen diese genutzt werden). Im Gegensatz zum Web 1.0 steht hier das Individum im Vordergrund (me centricity), es geht um Beteiligung jedes Einzelnen (participation) und um freudvolle(re) Nutzung. Hieraus sind verschiedene spezialisierte Dienste entstanden, die sich für vielfältige und ggf. individuell verschiedene Use Cases einsetzen lassen (Nutzungsoffenheit). ');" onmouseout="tooltip.hide();">Web 2.0</a> im privaten und <a href="https://test.soziotech.org/glossar/2078/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für Enterprise 2.0 zu springen." onmouseover="tooltip.show('Der Einsatz von Plattformen und Ideen aus dem Web 2.0-Umfeld in Unternehmen zur Unterstützung ihrer Wissensarbeiter. ');" onmouseout="tooltip.hide();">Enterprise 2.0</a> im unternehmensweiten Bereich veränderte sich die Art und Weise wie Informationen strukturiert und kosumiert werden.</p>
<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/stockphotos/istock_000010104241large.jpg" title="
			Digitale Vernetzung der Gesellschaft			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/220__618x_istock_000010104241large.jpg" alt="Social Networking" title="Social Networking" />
</a>
			<p class="wp-caption-text">Social Networking</p>
</div>

<h3>Auswirkungen des Erfolg von <a href="https://test.soziotech.org/glossar/social-software/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für Social Software zu springen." onmouseover="tooltip.show('Anwendungssysteme, die unter Ausnutzung von Netzwerk- und Skaleneffekten, indirekte und direkte zwischenmenschliche Interaktion (Koexistenz, Kommunikation, Koordination, Kooperation) auf breiter Basis ermöglichen und die Identitäten und Beziehungen ihrer Nutzer im Internet abbilden und unterstützen. ');" onmouseout="tooltip.hide();">Social Software</a></h3>
<p>Im Zuge des immer verbreiteteren Einsatzes von Social Software auch im Unternehmenskontext vollzieht sich eine Entwicklung von einer datenzentrischen Systemsicht hin zu einer personzentrischen Perspektive. Soziale Netzwerke wie Facebook oder <a href="https://test.soziotech.org/glossar/microblogging/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für Microblogging zu springen." onmouseover="tooltip.show('Microblogging ermöglicht es seinen Nutzern, kurze Nachrichten zu veröffentlichen. Die Nachrichten sind in der Regel in der Länge beschränkt (z.B. 140 Zeichen bei der bekanntesten Internetplattform Twitter) und erscheinen in einem plattformweiten Nachrichtenstrom. Nachrichten anderer Nutzer können gezielt abonniert werden. ');" onmouseout="tooltip.hide();">Microblogging</a> Dienste wie Twitter sind nur zwei Arten von Diensten die Einzug in unser tägliches Leben gefunden haben. Insgesamt lässt sich beoachten, dass fast jeder Nutzer inzwischen mehr als einen Dienst benutzt, sei es wegen spezieller Funktionalitäten, den Personen die über den jeweiligen Dienst erreichbar sind oder schlichtweg um private und berufliche Nutzung zu trennen. So sind wir unter anderem gezwungen den richtigen Kanal zu wählen um Informationen zu konsumieren bzw. zu verteilen. Dies nährt den Wunsch nach einer Integrationslösung, die unsere Daten aus unterschiedlichen Diensten vereint ohne dabei ein neues zentralisiertes System zu schaffen. Insbesondere muss uns die Wahl der Dienste und die Art und Weise, wie wir diese nutzen wollen offen bleiben.</p>
<h3>Mobile und ubiquitäre Nutzung</h3>
<p>Eine weitere Veränderung der letzten Jahre lässt sich in der Nutzung verschiedenster Geräte, mit denen wir Informationen konsumieren, festhalten. Sei es mit dem Tablet zuhause im Wohnzimmer, unterwegs per <a href="https://test.soziotech.org/glossar/smartphone/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für Smartphone zu springen." onmouseover="tooltip.show('Mobiltelefon, das im Vergleich zu herkömmlichen Mobiltelefonen mehr Computerfunktionalität und -konnektivität zur Verfügung stellt. Aktuelle Smartphones lassen sich meist über zusätzliche Programme (sogenannte Apps) vom Anwender individuell mit neuen Funktionen aufrüsten. Häufig vefügt ein Smartphone über einen Touchscreen. ');" onmouseout="tooltip.hide();">Smartphone</a> oder klassisch im Büro mit dem Desktoprechner. Hinzukommen ubiquitäre Systeme wie interaktive Wandbildschirme, welche die letzten Lücken unserer Informationsversorgung schließen. Eine zukunftsfähige Integrationslösung muss daher dem Nutzer die Möglichkeiten der freien Geräte- und Plattformwahl offen lassen.</p>
<h3>Nutzerzentrische Aggregation verschiedener Quellen</h3>
<p>Der Grundgedanke des Web 2.0 beinhaltet die starke Einbeziehung aller Nutzer bei der Erstellung von Inhalten und die Möglichkeit diese mit anderen Personen zu teilen. Mit der Integration von Daten aus uterschiedlichen Diensten entsteht der Wunsch diese untereinander mit zusätzlichen Informationen zu Verknüpfen und diese wiederum mit anderen zu teilen. Hierin liegt auch ein Kritikpunkt an aktuellen Integrationssystemen, die meist nur aus einer Single-User Perspektive getrieben sind. Beispielsweise ist die Verteilung der Information innerhalb einer Gruppe, wer welche Artikel  zu einem gemeinsamen Interessensgebiet gelesen hat, aus dieser Perspektive unmöglich. Wobei die Artikel natürlich aus verschiedensten Quellen stammen können. Zusammen mit der personenzentrischen Sicht auf Daten, der Vielzahl verschiedenster genutzer Dienste und der Verwendung unterschiedlichster Geräte führt dies zum Wunsch einer neuen Integrationslösung für die wir im folgenden die Konzepte und Lösungsansätze vorstellen.</p>
<h2>Grundidee</h2>
<p>Das CommunityMashup verbindet die Inhalte aus verschiedensten sozialen Diensten. Dazu zählen beispielsweise Soziale Netzwerke wie facebook, Microblogging Dienste wie twitter oder Bild-Dienste wie flickr, aber auch spezielere wie beispielsweise der Referenzmanagement-Dienst Mendeley für wissenschaftliche Veröffentlichungen. Die Daten aus diesen Diensten werden über die Schnittstellen der Services abgerufen und über spezielle Adapter vereinheitlicht, so dass sie miteinander vermischt und verbunden werden können (&#8222;mashup&#8220;). Die vereinheitlichten Daten werden anschließen wieder über spezielle Schnittstellen bereitgestellt. Hierbei wird auf unterschiedliche Anwendungsszenarien und deren spezielle Anforderung eingegangen, die insbesondere durch verschiedene Geräte und Plattformen beeinflusst sind. Wir unterscheiden ganz allgemein zwischen Web-Anwendungen, Desktop-Anwendungen und Anwendungen für mobile Geräte. Die folgende Grafik visualisiert diese Zusammenhänge noch einmal grafisch. Hierbei ist vorallem zu beachten, dass Daten nicht nur von den angebunden Diensten zu den Endbenutzer Anwendungen fließen, sondern auch in umgekehrter Richtung.<br />
<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/community_mashup_overview_0.png" title="
			Grundidee des CommunityMashup			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/603__618x_community_mashup_overview_0.png" alt="Grundidee des CommunityMashup" title="Grundidee des CommunityMashup" />
</a>
			<p class="wp-caption-text">Grundidee des CommunityMashup</p>
</div>
</p>
<h2>Model Driven Approach</h2>
<p>Ausgehend von der Grundidee einer Integrationslösung für soziale Dienste, die Daten vereinheitlicht und über spezielle Schnittstellen wieder bereitstellt, stellt sich die Frage nach dem passenden Entwicklungsansatz. Erfahrungen haben gezeigt, dass Internetdienste sowie ihre ggf. vorhandenen Schnittstellen einer permanenten Änderung und Weiterentwicklung unterworfen sind. Dienste kommen und gehen bzw. sind populären oder unpopulärer ebenso verhält es sich mit ihren Funktionen und Schnittstellen. Um flexibel auf diesen kontinuierlichen Wandel reagieren zu können und dabei eine stetige Evolution der Integrationslösung zu ermöglichen, schlagen wir einen modellgetriebenen Ansatz vor. Dieser basiert auf einem dafür konzipierten personenzentrischen Datenmodell, das die Zusammenhänge in sozialen Diensten wiedergibt. Dieses Datenmodell und die darauf aufbauenden Anwendungskomponenten stellen wir im weiteren Verlauf näher vor.</p>
<h3>Datenmodell</h3>
<p>Untenstehende Abbildung zeigt die Kernelemente des personenzentrischen CommunityMashup-Datenmodells. Es enthält die drei Kernelmente Person, Organisation und Inhalt (Content). Organisationen wie auch Inhalte können hierarchisch strukturiert werden. Inhalte werden über eine Autor-Beziehung mit Personen verknüpft, diese wiederum können über Organisationen gruppiert werden. Personen-Objekte spiegeln jeweils reale Menschen wieder, d. h. für eine Person wird nicht ein eigenes Element für je benutzten Dienst erzeugt werden, vielmehr bilden alle verteilten Profile zusammen eine digitale Identität ab. Das Selbe gilt auch für die Profile von Organisationen. Jeder weitere Dienst trägt seine zusätzlichen Profilinformationen über Erweiterungs-Objekte (Extensions) bei. So bleibt auch der Bezug zur ursprünglichen Quelle erhalten.<br />
<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/data_model.png" title="
			Kernelemente des CommunityMashup Datenmodells			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/600__618x_data_model.png" alt="Kernelemente des CommunityMashup Datenmodells" title="Kernelemente des CommunityMashup Datenmodells" />
</a>
			<p class="wp-caption-text">Kernelemente des CommunityMashup Datenmodells</p>
</div>
</p>
<p>Ein Kernkonzept des Datenmodells ist die bewusst offene Verwendung von Tags für Metainformationen, um ein Minimum von zusätzlichen Attributen für die einzelnen Daten-Objekte fix speichern zu müssen. Beispielsweise erhält eine Person nicht mehr zwei Attribute für die private und die berufliche E-Mail-Adresse, sondern Referenzen zu zwei E-Mail Objekten getaggt mit privat bzw. beruflich. Ein E-Mail Objekt lässt sich dann beispielsweise noch facebook taggen um so deren Verwendung auszuzeichnen. Dieses Verfahren wird auf alle Objekte des Datenmodells angewandt und erlaubt sehr flexible Such- und Filtermethoden und ermöglicht dadurch letztlich eine nutzungsoffene Verwendung der Integrationslösung.</p>
<h3>Anwendungskomponenten</h3>
<p>Mit der aus dem Datenmodell hervorgehend Abbildungsvorschrift, die es erlaubt Daten aus sozialen Diensten zu vereinheitlichen und miteinander zu verbinden, stellt sich die Frage, welche Teile einer konkreten Anwendung direkt vom vorliegenden Datenmodell abängen und somit ebenfalls automatisch aus dem Modell generiert werden können. Um eine nachhaltige und erweiterbare Lösung zu ermöglichen, ist es quasi ein Muss, dass alle diese direkt ableitbaren Teile automatisch bzw. zumindest semi-automatisch generiert werden. Die folgende Grafik gibt einen Überblick über die für das CommunityMashup relevanten, automatisch generierbaren Anwendungskomponenten:<br />
<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/model_driven_idea_0.png" title="
			Übersicht über die Modell-Getriebene-Entwicklung von CommunityMashup Komponenten			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/604__618x_model_driven_idea_0.png" alt="Modell-Getriebene-Entwicklung" title="Modell-Getriebene-Entwicklung" />
</a>
			<p class="wp-caption-text">Modell-Getriebene-Entwicklung</p>
</div>
</p>
<p>Viele UML-Werkzeuge unterstützen mittlerweile die automatische Erzeugung einer (Java) Schnittstelle mit zugehörigen leeren Klassen und Methoden. Für eine durchgängige Lösung wird allerdings ausführbare Code mit einer Laufzeitumgebung (RunTime) benötigt. Diese kümmert sich beispielsweise um die Erzeugung von Objekten bzw. um die Bereitstellung von Methoden zur Manipulation solcher Instanzen. Ein zusätzlicher Event-Mechanismus erlaubt das Verfolgen dieser Änderungen. Eine weitere wichtige Anwendungskomponente stellt die Persistierung dar. Diese wird beispielsweise für Caching benötigt. Für die Persistierung von Daten ist eine Serialisierung und Deserialisierung der Objekte notwendig. Diese wird ebenfalls für den Datenaustaustausch über Web-Schnittstellen im <a href="https://test.soziotech.org/glossar/xml/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für XML zu springen." onmouseover="tooltip.show('Extensible Markup Language; Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdaten.');" onmouseout="tooltip.hide();">XML</a>-Format benötigt. Im Rahmen des CommunityMashup-Projektes wird aktuell eine durchgängige Werkzeugkette aufgebaut, die die automatische Erstellung dieser Komponenten ermöglicht. Wir wenden den gleichen modellgetrieben Ansatz auch auf ein Meta-Modell an, das die möglichen Konfigurationen des CommunityMashup beschreibt. Hierfür werden viele identische Komponenten benötigt, allerdings jeweils bezogen auf ein anderes Modell. Die Verwendung des Meta-Modells erlaubt es, Konfigurationen speichern und laden zu lassen (Persitierung) und beispielsweise aus Gründen der Fernwartung auch über eine Web-Schnittstelle abfragen und verändern zu lassen.</p>
<h2>Service-Orientierte-Architektur</h2>
<p>Alleine durch die oben beschrieben, aus einem Modell erzeugbaren Komponenten lässt sich noch keine gesamte Integrationslösung erstellen. Ziel des CommunityMashups ist nicht nur ein flexibles Entwicklungskonzept das durch den modellgetriebenen Ansatz erreicht wird, sondern auch eine flexible Systemarchitektur die aufgrund von Anforderungen wie Skalierbarkeit, Performance und Ausfallsicherheit eine Verteilung von Systemkomponenten zulässt. Diese Service-Orientierte-Architektur, muss sich dadurch auszeichnen, dass definierte Systemkomponenten als eigenständige Services mit definierten Schnittstellen realisiert werden. So lassen sich selbst zur Laufzeit einzelne Komponenten aktualisieren bzw. austauschen ohne die Verfügbarkeit des Gesamtsystems zu beeinflussen. Nachfolgende Abbildung zeigt ein exemplarisches verteiltes Szenario mit Client- und Server Komponenten.<br />
<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/distributed_environment.png" title="
			Exemplarischer Aufbau einer Verteilten Umgebung mit CommunityMashup Komponenten			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/601__618x_distributed_environment.png" alt="Verteilte Umgebung" title="Verteilte Umgebung" />
</a>
			<p class="wp-caption-text">Verteilte Umgebung</p>
</div>
</p>
<p>Die Verbindung der Daten aus den eizelnen Quelldiensten (Source 1 bis Source n) wird auf einem Server durchgeführt und durch eine Konfiguration gesteuert. Jede dieser Quellkomponenten wird als eigener Service realisiert, der sich sich einzeln aktualiseren lässt, beispielsweise um auf die Änderung einer entfernten Schnittstelle zu reagieren.Java Intern überführen die dargestellten Quellkomponenten Daten der externen Dienste in das dem personenzentrische CommunityMashup-Datenmodell und tragen diese hierdurch sukzessive zu einem gemeinsamen Datensatz zusammen. Die zentrale CommunityMashup-Komponente stellt diesen Datensatz (ggf. je nach Bedarf gefiltert) wieder über eine Java Schnittstelle bereit. Darauf aufbauend lässt sich eine <a href="https://test.soziotech.org/glossar/rest/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für REST zu springen." onmouseover="tooltip.show('Representational State Transfer');" onmouseout="tooltip.hide();">REST</a> Schnittstelle hinzufügen, die die aggregierten und gefilterten Daten (zugriffsbeschränkt) über das Web verfügbar macht. Spezielle Anwendungskomponenten lassen nun eine Verwendung der Daten auf Client-Seite über eine identische Java <a href="https://test.soziotech.org/glossar/api/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für API zu springen." onmouseover="tooltip.show('Application Programming Interface (dt. Programmierschnittstelle)');" onmouseout="tooltip.hide();">API</a> zu. Die je nach Client-Typ (im oben abgebildeten Beispiel eine klassische Desktop Anwendung in Kombination mit einem Android Mobile Device) speziell ausgeprägten Anwendungskomponenten kümmern sich im Hintergrund transparent um den Datenaustausch und verlagern je nach Client rechenintensive Aufgaben auf den Server.</p><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fcommunitymashup-ein-erster-ueberblick%2F&amp;action_name=CommunityMashup+%26%238211%3B+Ein+erster+%C3%9Cberblick&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/communitymashup/" rel="bookmark" title="CommunityMashup &#8211; Überblick">CommunityMashup &#8211; Überblick </a></li>
<li><a href="https://test.soziotech.org/communitymashup/service-orientierte-architektur/" rel="bookmark" title="CommunityMashup &#8211; Service-Orientierte-Architektur">CommunityMashup &#8211; Service-Orientierte-Architektur </a></li>
<li><a href="https://test.soziotech.org/communitymashup/model-driven-approach/" rel="bookmark" title="CommunityMashup &#8211; Model Driven Approach">CommunityMashup &#8211; Model Driven Approach </a></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>https://test.soziotech.org/communitymashup-ein-erster-ueberblick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CommunityMashup REST-Schnittstelle</title>
		<link>https://test.soziotech.org/communitymashup-rest-schnittstelle/</link>
		<comments>https://test.soziotech.org/communitymashup-rest-schnittstelle/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 13:13:40 +0000</pubDate>
		<dc:creator><![CDATA[Jan Philipp Fiedler]]></dc:creator>
				<category><![CDATA[CommunityMashup]]></category>
		<category><![CDATA[Dienstintegration]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Studienarbeiten]]></category>
		<category><![CDATA[Authorisierung]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Schnittstelle]]></category>

		<guid isPermaLink="false">http://sevastyanova.cscwlab.de/?p=2015</guid>
		<description><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/632_crop_940x198_fotolia_12446708_subscription_l.jpg" width="618" height="130" alt="CommunityMashup REST-Schnittstelle" /></p>Das CommunityMashup stellt Anwendungen eine auf Web2.0-Inhalte spezialisierte und auf einem personenzentrischen Datenmodell basierende Datenbasis zur Verfügung. Um Anwendern/Entwicklern generische Zugriffsmöglichkeiten auf diese Datenbasis zu ermöglichen, wurde im Rahmen einer Masterarbeit eine REST-Schnittstelle für das CommunityMashup entwickelt, die nachfolgend kurz vorgestellt wird Problemstellung Zu &#8230; <a href="https://test.soziotech.org/communitymashup-rest-schnittstelle/">Weiterlesen <span class="meta-nav">&#8594;</span></a><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fcommunitymashup-rest-schnittstelle%2F&amp;action_name=CommunityMashup+REST-Schnittstelle&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss yarpp-related-none'>

Keine ähnlichen Artikel.
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/632_crop_940x198_fotolia_12446708_subscription_l.jpg" width="618" height="130" alt="CommunityMashup REST-Schnittstelle" /></p><p> <em>Das CommunityMashup stellt Anwendungen eine auf Web2.0-Inhalte spezialisierte und auf einem personenzentrischen Datenmodell basierende Datenbasis zur Verfügung. Um Anwendern/Entwicklern generische Zugriffsmöglichkeiten auf diese Datenbasis zu ermöglichen, wurde im Rahmen einer Masterarbeit eine <a href="https://test.soziotech.org/glossar/rest/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für REST zu springen." onmouseover="tooltip.show('Representational State Transfer');" onmouseout="tooltip.hide();">REST</a>-Schnittstelle für das CommunityMashup entwickelt, die nachfolgend kurz vorgestellt wird</em></p>
<h2>Problemstellung</h2>
<p>Zu Beginn der Entwicklung des <a href="https://test.soziotech.org/communitymashup/" class="link-internal">CommunityMashups</a> wurde der Zugriff auf die Daten des Frameworks lediglich über eine Java-Schnittstelle ermöglicht, d.h. eine es nutzende Anwendung musste in Java implementiert sein und auf der gleichen Maschine wie das CommunityMashup laufen.Eine auf verschiedene Geräte oder Architekturen verteilte Nutzung wurde somit starkt erschwert (vgl. Abbildung links).</p>
<p><div class="ngg-singlepic ngg-left wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/problemstellung.png" title="
			Aufbau des CommunityMashups vor der Erweiterung durch die REST-Schnittstelle.			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/582__x270_problemstellung.png" alt="Aufbau des CommunityMashups" title="Aufbau des CommunityMashups" />
</a>
			<p class="wp-caption-text">Aufbau des CommunityMashups</p>
</div>
 <div class="ngg-singlepic ngg-left wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/zielsetzung.png" title="
			Verschiedene Szenarien zur Verwendung der REST-Schnittstelle des CommunityMashups.			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/583__x270_zielsetzung.png" alt="Verwendung der REST-Schnittstelle" title="Verwendung der REST-Schnittstelle" />
</a>
			<p class="wp-caption-text">Verwendung der REST-Schnittstelle</p>
</div>
</p>
<p>Um diesem Problem zu begegnen, wurde das CommunityMashup im Rahmen einer Masterarbeit um eine REST-Schnittstelle erweitert. Mit Hilfe dieser Schnittstelle können verschiedenste Arten von Anwendungen (z.B. normale Anwendungen, <a href="https://test.soziotech.org/glossar/smartphone/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für Smartphone zu springen." onmouseover="tooltip.show('Mobiltelefon, das im Vergleich zu herkömmlichen Mobiltelefonen mehr Computerfunktionalität und -konnektivität zur Verfügung stellt. Aktuelle Smartphones lassen sich meist über zusätzliche Programme (sogenannte Apps) vom Anwender individuell mit neuen Funktionen aufrüsten. Häufig vefügt ein Smartphone über einen Touchscreen. ');" onmouseout="tooltip.hide();">Smartphone</a>-<a href="https://test.soziotech.org/glossar/app/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für App zu springen." onmouseover="tooltip.show('App (englische Kurzform für application) bezeichnet im Allgemeinen jede Form von Anwendungsprogrammen. Im Sprachgebrauch sind damit mittlerweile jedoch meist Anwendungen für moderne Smartphones und Tablet-Computer gemeint, die über einen in das Betriebssystem integrierten Onlineshop bezogen und so direkt auf dem Smartphone installiert werden können.');" onmouseout="tooltip.hide();">Apps</a> oder Widgets) auf unterschiedlichen Geräten auf die Daten eines oder mehrerer CommunityMashups zugreifen und diese verwenden sowie manipulieren (vgl. Abbildung rechts).</p>
<h2>Verwendung der Schnittstelle</h2>
<p>Die Schnittstelle kann prinzipiell von jeder Anwendung verwendet werden, die entsprechend der Schnittstellen-Dokumentation erstellt/konfiguriert wurde:</p>
<div class="ngg-singlepic wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/mashup_erweitert.png" title="
			Aufbau des CommunityMashups nach der Erweiterung durch die REST-Schnittstelle.			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/581__518x_mashup_erweitert.png" alt="Aufbau des erweiterten CommunityMashups" title="Aufbau des erweiterten CommunityMashups" />
</a>
			<p class="wp-caption-text">Aufbau des erweiterten CommunityMashups</p>
</div>

<p>Da die Kommunikation mit der REST-Schnittstelle über das HTTP-Protokoll und damit potentiell dem gesamten Internet geschehen kann, ist die Anwendungsentwicklung sowohl was den Ort als auch die Architektur des Zielsystems betrifft vom CommunityMashup unabhängig.</p>
<p>Die REST-Schnittstelle wird vom CommunityMashup in Form eines Java-Servlets bereitgestellt, welches ebenfalls die Dokumentation der Schnittstelle enthält.</p>
<p>Beide können über die <a href="https://test.soziotech.org/glossar/url/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für URL zu springen." onmouseover="tooltip.show('Unter URLs (Uniform Resource Locator) versteht man eindeutige menschenlesbare Adressen, die Inhalte wie beispielsweise Webseiten im Internet identifizieren und dadurch zugreifbar machen. URLs werden meist als Internetadressen bezeichnet. ');" onmouseout="tooltip.hide();">URL</a> des CommunityMashup-REST-Services erreicht werden, der eine selbsterklärende Beschreibung der angebotenen Dienste bereithält. Unter anderem kann die Syntax der REST-Anfragen nachgeschlagen werden und die Anfragen können im Browser getestet werden, was bei der Entwicklung kompatibler Anwendungen hilft.</p>
<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/welcome.png" title="
			Der Einstieg in die Nutzung der REST-Schnittstelle des CommunityMashups ist serlbsterklärend.			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/595__618x_welcome.png" alt="Webeinstieg der REST-Schnittstelle" title="Webeinstieg der REST-Schnittstelle" />
</a>
			<p class="wp-caption-text">Webeinstieg der REST-Schnittstelle</p>
</div>

<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/screenshot.png" title="
			Ein Screenshot der Dokumentation der REST-Schnittstelle des CommunityMashups.			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/584__618x_screenshot.png" alt="Dokumentation der Schnittstelle" title="Dokumentation der Schnittstelle" />
</a>
			<p class="wp-caption-text">Dokumentation der Schnittstelle</p>
</div>

<h2>Technische Umsetzung</h2>
<p>Um die REST-Schnittstelle mit der modellgetriebenen Entwicklung des CommunityMashups <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-2015-1" href="#note-2015-1" onmouseover="tooltip.show('Vgl. https://test.soziotech.org/communitymashup/model-driven-approach/.');" onmouseout="tooltip.hide();"><sup>1</sup></a> im Einklang zu halten, werden die dynamischen (vom Datenmodell des CommunityMashups anhängigen) Methoden und Funktionen mit Hilfe angepasster <a href="http://www.eclipse.org/modeling/m2t/?project=jet#jet" title="JET-Templates" target="_blank" class="link-external">JET-Templates</a> automatisch aus dem Modell generiert, was eine spätere manuelle Anpassung der Schnittstelle an Änderungen des CommunityMashups überflüssig macht:</p>
<div class="ngg-singlepic ngg-center wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/communitymashup/jet.png" title="
			Die Verwendung von JET-Templates im Eclipse Modelling Framework und in der REST-Schnittstelle des CommunityMashups.			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/589__618x_jet.png" alt="Die Verwendung von JET-Templates" title="Die Verwendung von JET-Templates" />
</a>
			<p class="wp-caption-text">Die Verwendung von JET-Templates</p>
</div>

<p>Um den unauthorisierten Zugriff auf das CommunityMashup einzuschränken, wurde ein Sicherheitssystem entwickelt, das nur registrierten Anwendungen den Zugriff auf die Daten und Funktionen des CommunityMashups gestattet. Die Absicherung der REST-Anfragen geschieht durch eine Signatur, welche die Anfrage vor einer Manipulation schützt und den Absender der Anfrage eindeutig identifiziert.</p>
<h2>Sicherheitssystem der Schnittstelle</h2>
<p>Die Sicherheit der Daten des CommunityMashups wird durch die Verwendung sogenannter <a href="http://en.wikipedia.org/wiki/Message_authentication_code" title="Wikipedia: Message Authentication Code" target="_blank" rel="nofollow" class="link-external">Message Authentication Codes</a> (MAC) sichergestellt, welche auch bei anderen (REST)-Schnittstellen namhafter Online-Dienstanbieter wie Amazon, GoogleMaps oder Flickr verwendet wird. Dabeiwird neben der eigentlichen Anfrage der Hashcode der Anfrage und eines geheimen Schlüssels übermittelt, wodurch zum einen die Integrität der Nachricht und zum anderen die Identität des Absenders sichergestellt sind.</p>
<h2>REST-Zugriff</h2>
<p>Die folgenden Prozessdiagramme liefern einen kurzen Überblick über die Zugriffsmöglichkeiten auf das CommunityMashup über die REST-Schnittstelle, darunter auch über den Ablauf einer gesicherten REST-Anfrage:</p>

<div class="ngg-galleryoverview" id="ngg-gallery--20150">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-585" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail wp-caption" >
			<a rel="lightbox-0" href="https://test.soziotech.org/wp-content/uploads/communitymashup/access.png" title="
			Dieses Schaubild zeigt den Ablauf eines Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle, welche lediglich als Vermittler zwischen dem Nutzer und dem CommunityMashup dient.			"  >
								<img alt="Dieses Schaubild zeigt den Ablauf eines Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle, welche lediglich als Vermittler zwischen dem Nutzer und dem CommunityMashup dient." src="https://test.soziotech.org/wp-content/uploads/communitymashup/thumbs/thumbs_access.png" width="126" height="100" class="colorbox-0" />
							</a>
			<p class=wp-caption-text>Zugriff über die REST-Schnittstelle</p>
		</div>
	</div>
			
	<div id="ngg-image-586" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail wp-caption" >
			<a rel="lightbox-0" href="https://test.soziotech.org/wp-content/uploads/communitymashup/access_auth.png" title="
			Dieses Schaubild zeigt den Ablauf eines gesicherten Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle. Die REST-Anfrage wird zunächst auf ihre Integrität getestet, danach wird geprüft ob die anfragende Anwendung über ausreichende Rechte verfügt. Trifft beides zu wird die Anfrage an das CommunityMashup weitergeleitet.			"  >
								<img alt="Dieses Schaubild zeigt den Ablauf eines gesicherten Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle. Die REST-Anfrage wird zunächst auf ihre Integrität getestet, danach wird geprüft ob die anfragende Anwendung über ausreichende Rechte verfügt. Trifft beides zu wird die Anfrage an das CommunityMashup weitergeleitet." src="https://test.soziotech.org/wp-content/uploads/communitymashup/thumbs/thumbs_access_auth.png" width="126" height="100" class="colorbox-0" />
							</a>
			<p class=wp-caption-text>Gesicherter Zugriff über die REST-Schnittstelle</p>
		</div>
	</div>
			
	<div id="ngg-image-587" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail wp-caption" >
			<a rel="lightbox-0" href="https://test.soziotech.org/wp-content/uploads/communitymashup/access_auth_nonce.png" title="
			Dieses Schaubild zeigt den Ablauf eines mit einer Nonce gesicherten Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle. Der Ablauf entspricht dem des normalen gesicherten Zugriffs, durch die Verwendung einer Nonce (Number used Once), welche nur für eine Anfrage gültig ist wird ein Replay-Angriff, d.h. das wiederholte senden der gleichen Anfrage, verhindert.			"  >
								<img alt="Dieses Schaubild zeigt den Ablauf eines mit einer Nonce gesicherten Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle. Der Ablauf entspricht dem des normalen gesicherten Zugriffs, durch die Verwendung einer Nonce (Number used Once), welche nur für eine Anfrage gültig ist wird ein Replay-Angriff, d.h. das wiederholte senden der gleichen Anfrage, verhindert." src="https://test.soziotech.org/wp-content/uploads/communitymashup/thumbs/thumbs_access_auth_nonce.png" width="126" height="100" class="colorbox-0" />
							</a>
			<p class=wp-caption-text>Gesicherter Zugriff über die REST-Schnittstelle</p>
		</div>
	</div>
			
	<div id="ngg-image-588" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail wp-caption" >
			<a rel="lightbox-0" href="https://test.soziotech.org/wp-content/uploads/communitymashup/access_unauth.png" title="
			Dieses Schaubild zeigt den Ablauf eines unauthorisierten Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle.			"  >
								<img alt="Dieses Schaubild zeigt den Ablauf eines unauthorisierten Zugriffs auf die Daten des CommunityMashups über die REST-Schnittstelle." src="https://test.soziotech.org/wp-content/uploads/communitymashup/thumbs/thumbs_access_unauth.png" width="126" height="100" class="colorbox-0" />
							</a>
			<p class=wp-caption-text>Unauthorisierter Zugriff auf die REST-Schnittstelle</p>
		</div>
	</div>
		
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>

<img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fcommunitymashup-rest-schnittstelle%2F&amp;action_name=CommunityMashup+REST-Schnittstelle&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class="simple-footnotes"><h2 class="notes">Quellen und Fußnoten:</h2><ol><li id="note-2015-1">Vgl. <a href="https://test.soziotech.org/communitymashup/model-driven-approach/" class="link-internal">https://test.soziotech.org/communitymashup/model-driven-approach/</a>. <a class="simple-footnote-backlink" href="#return-note-2015-1">&#8617;</a></li></ol></div><div class='yarpp-related-rss yarpp-related-none'>
<p>Keine ähnlichen Artikel.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>https://test.soziotech.org/communitymashup-rest-schnittstelle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quellenangaben und Fußnoten für NextGEN Gallery</title>
		<link>https://test.soziotech.org/quellenangaben-und-fussnoten-fur-nextgen-gallery/</link>
		<comments>https://test.soziotech.org/quellenangaben-und-fussnoten-fur-nextgen-gallery/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 18:02:31 +0000</pubDate>
		<dc:creator><![CDATA[Florian Ott]]></dc:creator>
				<category><![CDATA[Dienstintegration]]></category>
		<category><![CDATA[Internet & Web 2.0]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress / Buddypress]]></category>
		<category><![CDATA[Footnotes]]></category>
		<category><![CDATA[Fußnoten]]></category>
		<category><![CDATA[Gallery]]></category>
		<category><![CDATA[NextGEN]]></category>
		<category><![CDATA[NextGEN Gallery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Quellen]]></category>
		<category><![CDATA[Referenzierung]]></category>
		<category><![CDATA[Simple Footnotes]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Zitation]]></category>

		<guid isPermaLink="false">http://sevastyanova.cscwlab.de/?p=407</guid>
		<description><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/192_crop_940x198_istock_000000079169medium.jpg" width="618" height="130" alt="Quellenangaben und Fußnoten für NextGEN Gallery" /></p>NextGen Gallery ist meiner Meinung nach eine der sinnvollsten und am besten durchdachten Erweiterungen für WordPress. Das Plugin ermöglicht eine galerie- und albumbasierte Verwaltung von Bilder aller Art und darüber hinaus die Zuordnung von Schlagwörtern / Tags zur zusätzlichen (flachen) &#8230; <a href="https://test.soziotech.org/quellenangaben-und-fussnoten-fur-nextgen-gallery/">Weiterlesen <span class="meta-nav">&#8594;</span></a><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fquellenangaben-und-fussnoten-fur-nextgen-gallery%2F&amp;action_name=Quellenangaben+und+Fu%C3%9Fnoten+f%C3%BCr+NextGEN+Gallery&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/" rel="bookmark" title="Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP">Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP </a></li>
<li><a href="https://test.soziotech.org/wordpress-xml-sitemap-fur-multisite-installationen/" rel="bookmark" title="WordPress XML Sitemap für Multisite-Installationen">WordPress XML Sitemap für Multisite-Installationen </a></li>
<li><a href="https://test.soziotech.org/datenschutzrichtlinien-google-analytics-fur-wordpress/" rel="bookmark" title="Datenschutz &amp; Google Analytics für WordPress">Datenschutz &amp; Google Analytics für WordPress </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/192_crop_940x198_istock_000000079169medium.jpg" width="618" height="130" alt="Quellenangaben und Fußnoten für NextGEN Gallery" /></p>
<p><a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/" title="Zur Website von NextGEN Gallery" target="_blank" class="link-external">NextGen Gallery</a> <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-407-1" href="#note-407-1" onmouseover="tooltip.show('Downloaddes Plugins im WordPress-Repository unter http://wordpress.org/extend/plugins/nextgen-gallery/');" onmouseout="tooltip.hide();"><sup>1</sup></a> ist meiner Meinung nach eine der sinnvollsten und am besten durchdachten Erweiterungen für WordPress. Das Plugin ermöglicht eine galerie- und albumbasierte Verwaltung von Bilder aller Art und darüber hinaus die Zuordnung von Schlagwörtern / Tags zur zusätzlichen (flachen) Strukturierung. Hierdurch wird es möglich, Bilder in Artikeln mithilfe des nggtags-Shortcodes <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-407-2" href="#note-407-2" onmouseover="tooltip.show('Dokumentation unter http://nextgen-gallery.com/gallery-tags/.');" onmouseout="tooltip.hide();"><sup>2</sup></a> dynamisch einzubinden, d.h. statt einer festen Referenz auf eine Auswahl von Bildern wird nur noch festgelegt, welche Schlagwortkombinationen für eine bestimmte Artikelstelle relevant sind. Beispielsweise würden mit folgendem Shortcode alle Bilder als Thumbnails angezeigt, die mit &#8222;Auto&#8220; (Groß- und Kleinschreibung egal) verschlagwortet wurden <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-407-3" href="#note-407-3" onmouseover="tooltip.show('Achtung: Die Leerzeichen innerhalb der eckigen Klammern müssen nach einem Copy &amp; Paste entfernt werden, damit der Shortcode von WordPress ausgeführt wird.');" onmouseout="tooltip.hide();"><sup>3</sup></a></p>
<pre>[ nggtags gallery=Auto ]</pre>
<p>Das Ganze hat meiner Meinung nach drei entscheidende Vorteile:</p>
<ol>
<li>Kommen weitere Bilder mit den entsprechenden Tags in irgendeiner Galerie hinzu, werden sie automatisch im Artikel mit angezeigt.</li>
<li>In der Galerie angegebene Metadaten, wie Titel und Beschreibung werden automatisch übernommen und müssen so im Vergleich zur Nutzung der WordPress Mediathek nicht redundant gepflegt werden &#8211; v.a. dann nicht, wenn sie sich nachträglich ändern.</li>
<li>Der Tagging-Mechanismus funktioniert galerieübergreifend, d.h. neben der in NextGEN vorhandenen intuitiven Strukturierung in verschiedene Galerien (z.B. zu einem bestimmten Ereignis wie &#8222;Doktorandenseminare&#8220; oder einer bestimmten Bilderkategorie wie &#8222;WordPress Screenshots&#8220;), lassen sich sehr einfach übergreifende Selektionen vornehmen <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-407-4" href="#note-407-4" onmouseover="tooltip.show('Beispielsweise würden mithilfe des Shortcodes [ nggtags gallery=Referenzverwaltung ] alle Bilder angezeigt werden, die mit &#8222;Referenzverwaltung&#8220; verschalgwortet wurden, sowohl aus der Galerie &#8222;Doktorandenseminare&#8220; als auch aus der Galerie &#8222;WordPress Screenshots&#8220; (sowie allen ggf. vorhandenen weiteren Galerien).');" onmouseout="tooltip.hide();"><sup>4</sup></a>.</li>
</ol>
<h2>Problem bei externen Bildquellen</h2>
<p>Ein &#8222;Problem&#8220; mit dem Plugin ergibt sich dann, wenn man Bilder z.B. im wissenschaftlichen Kontext von anderen Quellen referenzieren und dennoch auf den Komfort des Plugins nicht verzichten möchte. Aktuell bietet NextGEN Gallery keine Möglichkeit, Bildquellen oder Ähnliches direkt anzugeben. Natürlich könnte man dafür das Beschreibungsfeld nutzen bzw. zweckentfremden und die entsprechende Quelle einfach als Text dort mit aufnehmen. Für den Fall, dass man die Anzeige der Quelle allerdings gezielter steuern möchte, ist diese Möglichkeit nicht geeignet. Auch widerspräche das Vorgehen klar dem Atomaritätsprinzip bzw. der semantischen Bedeutung des Beschreibungsfeldes. Prinzipiell bietet NextGEN auch hierfür einen eingebauten <a href="http://nextgen-gallery.com/custom-fields/" title="Zur Dokumentation der Custom Fields von NextGEN Gallery" target="_blank" class="link-external">Mechanismus zur Angabe weiterer Metadaten</a>, allerdings ist dieser in neueren Versionen des Plugins nur sehr umständlich erreichbar und wird v.a. nicht in den Übersichten angezeigt.</p>
<h2>Lösungsschritte</h2>
<p>Nachdem bis zu einer sinnvoll nutzbaren Lösung zur Quellangabe einige Schritte erforderlich waren, halte ich das hier kurz fest.</p>
<h3>1. Zusätzliches Feld zur Quellenangabe bei jedem Bild</h3>
<p>Zur Bereitstellung des benötigten Metadatenfeldes im Backend von NextGEN hilft das <a href="http://wordpress.org/extend/plugins/nextgen-gallery-custom-fields/" title="Zur Downloadseite des Plugins NextGEN Custom Fields " target="_blank" class="link-external">Plugin NextGEN Custom Fields</a>, mit dem nach erfolgter Installation über den neuen Menüpunkt &#8222;NGG Custom Fields&#8220; sehr einfach ein neues  Image Custom Field mit  Bezeichnung &#8222;Source&#8220; für Quellenangaben angelegt werden kann. Die Eingabe erfolgt anschließend wie gewohnt über den Punkt &#8222;Galerie verwalten&#8220;, wie im folgenden Screenshot auf der rechten Seite zu sehen.</p>
<div class="ngg-singlepic wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/wordpress-screenshots/nextgen-source.png" title="
			Zusätzliches Feld für Quellenangaben bei Bildern in NextGEN Gallery			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/245__614xfloat=_nextgen-source.png" alt="NextGEN Gallery Source Feld" title="NextGEN Gallery Source Feld" />
</a>
			<p class="wp-caption-text">NextGEN Gallery Source Feld</p>
</div>

<h3>2. Anpassen des Galerie-Templates</h3>
<p>Damit das neu erstellte Feld auch in Thumbnail-Übersichten oder bei Einzelbildern im Frontend angezeigt wird, muss es entsprechend eingebunden werden. Mein erster Ansatz war, ein eigenes NextGEN Gallery Template für die Ausgabe zu nutzen, allerdings funktioniert der folgende Shortcode leider nicht, da NextGEN seltsamerweise bei tagbasierten Galerien bisher keine Tamplates unterstützt.</p>
<pre>[ nggtags gallery=Auto template=source]
</pre>
<p>Dieser Missstand ließe sich zwar entsprechend <a href="http://wordpress.org/support/topic/plugin-nextgen-gallery-nggtags-caption" title="Zum Forenbeitrag zu nggtags mit captions" target="_blank" class="link-external">http://wordpress.org/support/topic/plugin-nextgen-gallery-nggtags-caption</a> beseitigen, allerdings müssten hierzu die Funktion nggShowGalleryTags in der nggfunctions.php und die Funktion show_tags in der shortcode.php von NextGEN entsprechend angepasst werden, was logischerweise nicht update-sicher und damit wenig sinnvoll ist. Hier heißt es also abwarten, ob diese durchaus sinnvollen Erweiterungen für nggtags irgendwann durch den Autor Alex Rabe ihren Weg in das Plugin finden, wovon ich fest ausgehe.</p>
<p>Somit blieb nichts anderes, als direkt das gallery.php Template entsprechend anzupassen. Nachdem wir hier im Blog allerdings sowieso ein einheitliches Galerieformat verwenden, ist dem auch nichts entgegenzusetzen &#8211; insbesondere da es so (ohne den zusätzlichen template-Parameter im Shortcode) noch einfacher ist, später Galerien in Blogartikeln einzufügen.</p>
<p>Um sicherzustellen, das die Templates nicht bei einem Plugin-Update direkt wieder überschrieben werden, sollten die folgenden Anpassungen ausschließlich (!) in einem zu erstellenden Unterordner &#8222;nggallery&#8220; des verwendeten Themes durchgeführt werden:</p>
<ol>
<li>Kopieren der gallery.php und der singlepic.php aus /wp-content/plugins/nextgen-gallery/view/ nach wp-content/themes/AKTUELLES-THEME/nggallery/.</li>
<li>Einfügen von $image-&gt;ngg_custom_fields[&#8222;Source&#8220;] an der gewünschten Stelle, z.B. hinter echo $image-&gt;caption.</li>
</ol>
<p>Problem hierbei ist, dass die Quellangaben (zumindest in unserem Fall) meist <a href="https://test.soziotech.org/glossar/url/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für URL zu springen." onmouseover="tooltip.show('Unter URLs (Uniform Resource Locator) versteht man eindeutige menschenlesbare Adressen, die Inhalte wie beispielsweise Webseiten im Internet identifizieren und dadurch zugreifbar machen. URLs werden meist als Internetadressen bezeichnet. ');" onmouseout="tooltip.hide();">URLs</a> sind, die i.d.R. eine Länge haben, durch welche die schön gefloateten Thumbnail-Übersichten unruhig würden oder falscch umbrechen, sicher aber schlecht lesbar wären (s. Screenshot):</p>
<div class="ngg-singlepic wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/wordpress-screenshots/nextgen-thumbnail-problem-mit-quellen.png" title="
			Zerschossene Thumbnails bei langen Quellenangaben			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/246__614xfloat=_nextgen-thumbnail-problem-mit-quellen.png" alt="Fehlerhafte Darstellung bei Thumbnails mit Quellen" title="Fehlerhafte Darstellung bei Thumbnails mit Quellen" />
</a>
			<p class="wp-caption-text">Fehlerhafte Darstellung bei Thumbnails mit Quellen</p>
</div>

<h3>3. Fußnoten für Quellenangaben</h3>
<p>Da wir hier im Blog ein Plugin zur Erzeugung von Fußnoten für zusätzliche Anmerkungen oder wissenschaftliche Quellenangaben verwenden, war es naheliegend, dieses Plugin auch für die Galeriebilder zu nutzen. In unserem Fall handelt es sich um das Plugin <a href="http://wordpress.org/extend/plugins/simple-footnotes/" title="Zur Downloadseite des Plugins Simple Footnotes" target="_blank" class="link-external">Simple Footnotes</a>, das sich durch eine sehr einfache Handhabung sowie Multisite- und WP 3.1-Kompatibilität auszeichnet. Im Prinzip sollten die folgenden Schritte aber auch auf andere Plugins übertragbar sein.</p>
<p>Statt der Einbindung der Quellangabe direkt in der Caption, muss hierzu das Source-Field von oben lediglich mit der entsprechenden Shortcode-Funktion das Simple Footnotes Plugins &#8222;gewrappt&#8220; werden. Da das Gallery-Template das Plugin allerdings nicht kennt, ist es erforderlich, zunächst eine entsprechende lokale Instanz zu erzeugen:</p>
<pre class="brush:php">n
$footnotes-&gt;shortcode('', "Bildquelle: " . imagesourcelink($image-&gt;ngg_custom_fields["Source"]) . "."));</pre>
<p>Damit die Fußnoten nur dann erzeugt werden, wenn auch tatsächlich  eine Quellenangabe vorhanden ist, sollte zusätzlich noch folgende  Abfrage integriert werden:</p>
<pre class="brush:php">if ($image-&gt;ngg_custom_fields["Source"]){
	echo ($footnotes-&gt;shortcode('', "Bildquelle: " . imagesourcelink($image-&gt;ngg_custom_fields["Source"]) . "."));
}</pre>
<p>Mit diesem Code wurden die Fußnoten auch erzeugt, allerdings leider für jedes Bild wieder bei 1 beginnend, da bei jedem Aufruf innerhalb der Bilderschleife des Gallery-Templates eine neue Instanz des Footnote-Plugins erstellt wurde. Abhilfe schafft hier das Auslagern der Instanzerzeugung außerhalb der Schleife und verwenden von $footnotes als globale Variable. Wichtig: Ähnlich wie bei einem Singleton <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-407-5" href="#note-407-5" onmouseover="tooltip.show('Informatiker mögen mir die unsaubere Verwendung an dieser Stelle verzeihen.');" onmouseout="tooltip.hide();"><sup>5</sup></a> sollte die globale Plugin-Referenz nur initialisiert werden, sofern sie noch null ist:</p>
<pre class="brush:php">global $footnotes;
if (!$footnotes){
	$footnotes = new nacin_footnotes();
}
</pre>
<p>Resultat sind wie gewünscht in Fußnoten ausgelagerte Quellenangaben der Bildergalerie. Allerdings tritt das Problem doppelter Fußnoten weiterhin auf, sofern auf einer Seite, wie in diesem Beitrag, normale (textbasierte) Fußnoten und Bildergalerien gleichzeitig verwendet werden. Das liegt daran, dass das Plugin Simple Footnotes seinen Content Filter so angelegt hat, dass es sich selbst bzw. besser gesagt eine Instanz von sich selbst dem Filter übergibt:</p>
<pre class="brush:php">add_filter( 'the_content', array( &amp;$this, 'the_content' ), 12 );</pre>
<p>Durch den WordPress-Filter-Registrierumgsmechanismus <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-407-6" href="#note-407-6" onmouseover="tooltip.show('Siehe dazu auch Diskussion auf http://stackoverflow.com/questions/1524925/howto-use-the-has-filter-wordpress-function-with-an-object-based-callback.');" onmouseout="tooltip.hide();"><sup>6</sup></a> wird bei jeder neuen Instanz von nacin_footnotes() auch jeweils ein entsprechender Content-Filter eingehängt, was a) inperformant ist und b) dazu führt, dass der Fußnotenblock in seiner Gesamtheit mehrfach am Ende eines Posts angezeigt werden kann. Leider habe ich für dieses Problem keine Optimallösung parat, so dass nur die Anpassung des der Datei simple-footnotes.php des Plugins bleibt. Hier muss ganz am Ende der Datei folgende Änderung durchgeführt werden:</p>
<pre class="brush:php">//new nacin_footnotes();
global $footnotes;
$footnotes = new nacin_footnotes();</pre>
<p>Hierdurch wird sichergestellt, dass das Plugin nur einmal erzeugt wird, egal ob direkt oder über das Gallery-Template. Zusätzlich ist es ggf. noch erforderlich, die folgende Änderung an der shortcode-Funktion des Plugins vorzunehmen. Hierdurch wird sichergestellt, dass die Fußnoten immer korrekt durchgezählt werden und bei 1 beginnen:</p>
<pre class="brush:php">//FO we have to check if the footnote text is already present, otherwise the gallery plugin mechanism will not work (don't know why)
/*
if ( ! isset( $this-&gt;footnotes[$id] ) )
	$this-&gt;footnotes[$id] = array( 0 =&gt; false );
$this-&gt;footnotes[$id][] = $content;
$note = count( $this-&gt;footnotes[$id] ) - 1;
*/
if (!in_array($content,$this-&gt;footnotes[$id])){
	$this-&gt;footnotes[$id][] = $content;
	$note = count( $this-&gt;footnotes[$id] ) - 1;
}
else{
	$note =  array_search($content,$this-&gt;footnotes[$id]);
}</pre>
<p>Ersetzt man nun noch den von NextGEN für die Bildunterschriften verwendeten span-Tag im Gallery-Template nun noch durch den von WordPress standardmäßig genutzten p-Tag der Klasse wp-caption-text und fügt dem ngg-gallery-thumbnail-Container die Klasse wp-caption hinzu, erhält man das folgende &#8222;fertige&#8220; Gallery-Tempalte:</p>
<pre class="brush:php">&lt;?php
/**
Template Page for the gallery overview

Follow variables are useable :

	$gallery     : Contain all about the gallery
	$images      : Contain all images, path, title
	$pagination  : Contain the pagination content

 You can check the content when you insert the tag &lt;?php var_dump($variable) ?&gt;
 If you would like to show the timestamp of the image ,you can use &lt;?php echo $exif['created_timestamp'] ?&gt;
**/

// FO: muss global erzeugt werden, da sonst die Nummerierung für jede Galerie neu beginnt
global $footnotes;
if (!$footnotes){
	$footnotes = new nacin_footnotes();
}
if (!function_exists('imagesourcelink')) {
	function imagesourcelink($text){
		// text starts with http://
		if (strpos($text, "http://") === 0){
			return '&lt;a href="' . $text . '" title="Go to external Source" &gt;' .$text . '&lt;/a&gt;';
		}
		else{
			return $text;
		}
	}
}

/*	FO: Da $gallery-&gt;<a href="https://test.soziotech.org/glossar/id/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für ID zu springen." onmouseover="tooltip.show('Identifikator oder auch Kennung; ist ein künstlich zugewiesenes Merkmal zur eindeutigen Identifizierung eines Objektes. ');" onmouseout="tooltip.hide();">ID</a> als Group-ID für jQuery Colorbox / Slimbox nur dann funktioniert,
	wenn echte Gallerien verwendet werden, nicht aber bei nggtags (Tag-basierter Auswahl)
	muss hier noch einmal gesondert mitgezählt werden
*/
global $lightboxgroup;
if (!$lightboxgroup){
	$lightboxgroup = 0;
}

?&gt;
&lt;?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?&gt;&lt;?php if (!empty ($gallery)) : ?&gt;

&lt;div id="&lt;?php echo $gallery-&gt;anchor . $lightboxgroup ?&gt;"&gt;

&lt;?php if ($gallery-&gt;show_slideshow) { ?&gt;
	&lt;!-- Slideshow link --&gt;
	&lt;div&gt;
		&lt;a href="&lt;?php echo $gallery-&gt;slideshow_link ?&gt;"&gt;
			&lt;?php echo $gallery-&gt;slideshow_link_text ?&gt;
		&lt;/a&gt;
	&lt;/div&gt;
&lt;?php } ?&gt;

&lt;?php if ($gallery-&gt;show_piclens) { ?&gt;
	&lt;!-- Piclense link --&gt;
	&lt;div&gt;
		&lt;a href="&lt;?php echo $gallery-&gt;piclens_link ?&gt;"&gt;
			&lt;?php _e('[View with PicLens]','nggallery'); ?&gt;
		&lt;/a&gt;
	&lt;/div&gt;
&lt;?php } ?&gt;

	&lt;!-- Thumbnails --&gt;
	&lt;?php foreach ( $images as $image ) : ?&gt;

	&lt;div id="ngg-image-&lt;?php echo $image-&gt;pid ?&gt;" &lt;?php echo $image-&gt;style ?&gt; &gt;
		&lt;div &gt;
			&lt;a rel="lightbox-&lt;?php echo $lightboxgroup ?&gt;" href="&lt;?php echo $image-&gt;imageURL ?&gt;" title="
			&lt;?php
			echo $image-&gt;description;
			if ($image-&gt;ngg_custom_fields["Source"]){
				echo ', Quelle: ' . $image-&gt;ngg_custom_fields["Source"] . ".";
			}
			?&gt;
			" &lt;?php echo $image-&gt;thumbcode ?&gt; &gt;
				&lt;?php if ( !$image-&gt;hidden ) { ?&gt;
				&lt;img alt="&lt;?php echo $image-&gt;description ?&gt;" src="&lt;?php echo $image-&gt;thumbnailURL ?&gt;" &lt;?php echo $image-&gt;size ?&gt; /&gt;
				&lt;?php } ?&gt;
			&lt;/a&gt;
			&lt;p-caption-text&gt;&lt;?php 

			echo $image-&gt;alttext;

			if ($image-&gt;ngg_custom_fields["Source"]){
				echo ($footnotes-&gt;shortcode('', "Bildquelle: " . imagesourcelink($image-&gt;ngg_custom_fields["Source"]) . "."));
			}

			?&gt;&lt;/p&gt;
		&lt;/div&gt;
	&lt;/div&gt;
	&lt;?php if ( $image-&gt;hidden ) continue; ?&gt;
	&lt;?php if ( $gallery-&gt;columns &gt; 0 &amp;&amp; ++$i % $gallery-&gt;columns == 0 ) { ?&gt;
	&lt;br style="clear: both" /&gt;
	&lt;?php }
	endforeach;
	$lightboxgroup++;
	?&gt;

	&lt;!-- Pagination --&gt;
 	&lt;?php echo $pagination ?&gt;

&lt;/div&gt;

&lt;?php endif; ?&gt;
</pre>
<p>Zusätzlich zu den hier beschriebenen Punkten ist in diesem Template von Zeile 32-39 auch eine Zählervariable für Bildergruppen in Lightboxen, wie beispielsweise <a href="http://www.digitalia.be/software/slimbox" target="_blank" class="link-external">Slimbox </a>oder <a href="http://colorpowered.com/colorbox/" target="_blank" class="link-external">Colorbox </a>enthalten, die es auch bei tagbasierten Galerien ermöglicht, Bilder einer Galerie nacheinander durchzuklicken. Außerdem enthält das Template die Funktion imagesourcelink (Zeile 20-30), die im Source-Feld eingetragene URLs in den Fußnoten automatisch verlinkt.</p>
<h2>Endergebnis</h2>
<p>Das Ergebnis der Bemühungen sieht anschließend wie folgt aus:</p>
<div class="ngg-singlepic wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/wordpress-screenshots/thumbnails-mit-fussnoten.png" title="
			Fertige Galerie basierend auf dem erstellten Gallery-Template mit Verwendung von Fußnoten für die Bildquelle (Source)			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/247__614xfloat=_thumbnails-mit-fussnoten.png" alt="Thumbnails mit Fußnoten" title="Thumbnails mit Fußnoten" />
</a>
			<p class="wp-caption-text">Thumbnails mit Fußnoten</p>
</div>

<p>Für den Fall, dass noch kein CSS für die Galerie-Darstellung existiert, sind ggf. noch folgende ergänzenden CSS-Angaben erforderlich, um die Darstellung der Thumbnails gleichmäßig über die Seite zu verteilen. Die Größenangaben basieren hierbei auf einer in NextGEN eingestellten Thumbnail-Größe von 126x100px. Die Pixeldifferenz zu 146px Breite rührt von den CSS-Einstellungen des hier verwendeten Twentyten Child-Themes bzw. den dort vorgegebenen Paddings:</p>
<pre class="brush:css">.ngg-gallery-thumbnail{
	width: 146px;
	height: 160px;
	overflow: hidden;
}
</pre>
<p>Die ggf. erforderlichen Änderungen an der singlepic.php zur Darstellung von Einzelbildern erfolgen analog.</p><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fquellenangaben-und-fussnoten-fur-nextgen-gallery%2F&amp;action_name=Quellenangaben+und+Fu%C3%9Fnoten+f%C3%BCr+NextGEN+Gallery&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class="simple-footnotes"><h2 class="notes">Quellen und Fußnoten:</h2><ol><li id="note-407-1">Downloaddes Plugins im WordPress-Repository unter <a href="http://wordpress.org/extend/plugins/nextgen-gallery/" title="Zum Download von NextGEN Gallery" target="_blank" class="link-external">http://wordpress.org/extend/plugins/nextgen-gallery/</a> <a class="simple-footnote-backlink" href="#return-note-407-1">&#8617;</a></li><li id="note-407-2">Dokumentation unter <a href="http://nextgen-gallery.com/gallery-tags/ " title="Dokumentation des nggtags-Shortcodes" target="_blank" class="link-external">http://nextgen-gallery.com/gallery-tags/</a>. <a class="simple-footnote-backlink" href="#return-note-407-2">&#8617;</a></li><li id="note-407-3">Achtung: Die Leerzeichen innerhalb der eckigen Klammern müssen nach einem Copy &amp; Paste entfernt werden, damit der Shortcode von WordPress ausgeführt wird. <a class="simple-footnote-backlink" href="#return-note-407-3">&#8617;</a></li><li id="note-407-4">Beispielsweise würden mithilfe des Shortcodes [ nggtags gallery=Referenzverwaltung ] alle Bilder angezeigt werden, die mit &#8222;Referenzverwaltung&#8220; verschalgwortet wurden, sowohl aus der Galerie &#8222;Doktorandenseminare&#8220; als auch aus der Galerie &#8222;WordPress Screenshots&#8220; (sowie allen ggf. vorhandenen weiteren Galerien). <a class="simple-footnote-backlink" href="#return-note-407-4">&#8617;</a></li><li id="note-407-5">Informatiker mögen mir die unsaubere Verwendung an dieser Stelle verzeihen. <a class="simple-footnote-backlink" href="#return-note-407-5">&#8617;</a></li><li id="note-407-6"> Siehe dazu auch Diskussion auf <a href="http://stackoverflow.com/questions/1524925/howto-use-the-has-filter-wordpress-function-with-an-object-based-callback" target="_blank" class="link-external">http://stackoverflow.com/questions/1524925/howto-use-the-has-filter-wordpress-function-with-an-object-based-callback</a>. <a class="simple-footnote-backlink" href="#return-note-407-6">&#8617;</a></li></ol></div><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/" rel="bookmark" title="Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP">Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP </a></li>
<li><a href="https://test.soziotech.org/wordpress-xml-sitemap-fur-multisite-installationen/" rel="bookmark" title="WordPress XML Sitemap für Multisite-Installationen">WordPress XML Sitemap für Multisite-Installationen </a></li>
<li><a href="https://test.soziotech.org/datenschutzrichtlinien-google-analytics-fur-wordpress/" rel="bookmark" title="Datenschutz &amp; Google Analytics für WordPress">Datenschutz &amp; Google Analytics für WordPress </a></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>https://test.soziotech.org/quellenangaben-und-fussnoten-fur-nextgen-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Placeboard &#8211; Jeder Ort ein Schwarzes Brett</title>
		<link>https://test.soziotech.org/placeboard-jeder-ort-ein-schwarzes-brett/</link>
		<comments>https://test.soziotech.org/placeboard-jeder-ort-ein-schwarzes-brett/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 16:51:56 +0000</pubDate>
		<dc:creator><![CDATA[Michael Koch]]></dc:creator>
				<category><![CDATA[Dienstintegration]]></category>
		<category><![CDATA[Internet & Web 2.0]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[BlockChalk]]></category>
		<category><![CDATA[CommunityMirrors]]></category>
		<category><![CDATA[placeboard]]></category>
		<category><![CDATA[QR-Code]]></category>
		<category><![CDATA[Schwarzes Brett]]></category>

		<guid isPermaLink="false">http://sevastyanova.cscwlab.de/?p=156</guid>
		<description><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/9_crop_940x198_placeboard.png" width="618" height="130" alt="Placeboard &#8211; Jeder Ort ein Schwarzes Brett" /></p>Das Berliner Startup placeboard (http://www.placeboard.com) versucht das Prinzip des Schwarzen Bretts in der Nachbarschaft ins Internet zu übertragen. Im Gegensatz zu anderen Internet-basierten Kleinanzeigen-Plattformen steht hier der Ortsbezug einer Mitteilung und die Filterung nach dem Ort im Vordergrund. Neben einer &#8230; <a href="https://test.soziotech.org/placeboard-jeder-ort-ein-schwarzes-brett/">Weiterlesen <span class="meta-nav">&#8594;</span></a><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fplaceboard-jeder-ort-ein-schwarzes-brett%2F&amp;action_name=Placeboard+%26%238211%3B+Jeder+Ort+ein+Schwarzes+Brett&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss yarpp-related-none'>

Keine ähnlichen Artikel.
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/9_crop_940x198_placeboard.png" width="618" height="130" alt="Placeboard &#8211; Jeder Ort ein Schwarzes Brett" /></p><p>Das Berliner Startup placeboard (<a href="http://www.placeboard.com" title="Zur Website von placeboard" target="_blank" class="link-external">http://www.placeboard.com</a>) versucht das Prinzip des Schwarzen Bretts in der Nachbarschaft ins Internet zu übertragen.</p>
<div class="ngg-singlepic wp-caption">
<a rel="lightbox" href="https://test.soziotech.org/wp-content/uploads/web2-0-dienste/placeboard.png" title="
			Screenshot des placeboard Webinterface Februar 2011, Quelle: http://www.placeboard.com.			" 

 >
	<img src="https://test.soziotech.org/wp-content/uploads/cache/9_web20_400x280_placeboard.png" alt="placeboard" title="placeboard" />
</a>
			<p class="wp-caption-text">placeboard <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-156-1" href="#note-156-1" onmouseover="tooltip.show('Bildquelle: http://www.placeboard.com.');" onmouseout="tooltip.hide();"><sup>1</sup></a></p>
</div>

<p>Im Gegensatz zu anderen Internet-basierten Kleinanzeigen-Plattformen steht hier der Ortsbezug einer Mitteilung und die Filterung nach dem Ort im Vordergrund.</p>
<p>Neben einer recht nett gemachten Web-Schnittstellen erlauben die placeboard-Macher auch eine einfache Erweiterung der Plattform in die reale Welt: Selbst erstelle Nachrichten können mit einem QR-Code ausgedruckt werden und so an reale Schwarze Bretter geheftet werden ohne den Bezug zur digitalen Version des Aushangs zu verlieren.</p>
<p>Meiner Meinung nach schreit das Ganze nach einer CommunityMirror-Schnittstelle (und natürlich nach mobilen <a href="https://test.soziotech.org/glossar/app/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für App zu springen." onmouseover="tooltip.show('App (englische Kurzform für application) bezeichnet im Allgemeinen jede Form von Anwendungsprogrammen. Im Sprachgebrauch sind damit mittlerweile jedoch meist Anwendungen für moderne Smartphones und Tablet-Computer gemeint, die über einen in das Betriebssystem integrierten Onlineshop bezogen und so direkt auf dem Smartphone installiert werden können.');" onmouseout="tooltip.hide();">Apps</a> dafür).</p>
<p>Verwandte Dienste (ausserhalb von Deutschland): BlockChalk (<a href="http://blockchalk.com" title="Zur Website von BlockChalk" target="_blank" class="link-external broken_link">http://blockchalk.com</a>)</p>

<div class="ngg-galleryoverview" id="ngg-gallery--1561">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-8" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail wp-caption" >
			<a rel="lightbox-1" href="https://test.soziotech.org/wp-content/uploads/web2-0-dienste/blockchalk.png" title="
			Screenshot des BlockChalk Webinterface Februar 2011, Quelle: http://blockchalk.com.			"  >
								<img alt="Screenshot des BlockChalk Webinterface Februar 2011" src="https://test.soziotech.org/wp-content/uploads/web2-0-dienste/thumbs/thumbs_blockchalk.png" width="126" height="100" class="colorbox-1" />
							</a>
			<p class=wp-caption-text>BlockChalk <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-156-2" href="#note-156-2" onmouseover="tooltip.show('Bildquelle: http://blockchalk.com.');" onmouseout="tooltip.hide();"><sup>2</sup></a></p>
		</div>
	</div>
			
	<div id="ngg-image-9" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail wp-caption" >
			<a rel="lightbox-1" href="https://test.soziotech.org/wp-content/uploads/web2-0-dienste/placeboard.png" title="
			Screenshot des placeboard Webinterface Februar 2011, Quelle: http://www.placeboard.com.			"  >
								<img alt="Screenshot des placeboard Webinterface Februar 2011" src="https://test.soziotech.org/wp-content/uploads/web2-0-dienste/thumbs/thumbs_placeboard.png" width="126" height="100" class="colorbox-1" />
							</a>
			<p class=wp-caption-text>placeboard <a class="simple-footnote" title="Klicken Sie, um zur Fußnote zu springen oder Links in der Fußnote zu folgen." id="return-note-156-1" href="#note-156-1" onmouseover="tooltip.show('Bildquelle: http://www.placeboard.com.');" onmouseout="tooltip.hide();"><sup>1</sup></a></p>
		</div>
	</div>
		
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>

<img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fplaceboard-jeder-ort-ein-schwarzes-brett%2F&amp;action_name=Placeboard+%26%238211%3B+Jeder+Ort+ein+Schwarzes+Brett&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class="simple-footnotes"><h2 class="notes">Quellen und Fußnoten:</h2><ol><li id="note-156-1">Bildquelle: <a class="link-external" href="http://www.placeboard.com" title="Go to external Source" >http://www.placeboard.com</a>. <a class="simple-footnote-backlink" href="#return-note-156-1">&#8617;</a></li><li id="note-156-2">Bildquelle: <a class="link-external" href="http://blockchalk.com" title="Go to external Source" >http://blockchalk.com</a>. <a class="simple-footnote-backlink" href="#return-note-156-2">&#8617;</a></li></ol></div><div class='yarpp-related-rss yarpp-related-none'>
<p>Keine ähnlichen Artikel.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>https://test.soziotech.org/placeboard-jeder-ort-ein-schwarzes-brett/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Exchange Toolboxcenter konnte nicht alle Tools anzeigen</title>
		<link>https://test.soziotech.org/microsoft-exchange-toolboxcenter-konnte-nicht-alle-tools-anzeigen/</link>
		<comments>https://test.soziotech.org/microsoft-exchange-toolboxcenter-konnte-nicht-alle-tools-anzeigen/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 09:23:23 +0000</pubDate>
		<dc:creator><![CDATA[Florian Ott]]></dc:creator>
				<category><![CDATA[Dienstintegration]]></category>
		<category><![CDATA[Windows Server]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[Updaterollup]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://sevastyanova.cscwlab.de/?p=152</guid>
		<description><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/224_crop_940x198_exchange-server-2010.jpg" width="618" height="130" alt="Microsoft Exchange Toolboxcenter konnte nicht alle Tools anzeigen" /></p>Man lernt ja nicht aus. Heute bin ich zufällig über einen relativ seltsamen Fehler in unserer Microsoft Exchange 2007 Installation gestolpert. Durch ein automatisch per Windows Update installiertes Update Rollup 1 für Exchange 2007 SP2 meldete die Exchange-Verwaltungskonsole bei jedem &#8230; <a href="https://test.soziotech.org/microsoft-exchange-toolboxcenter-konnte-nicht-alle-tools-anzeigen/">Weiterlesen <span class="meta-nav">&#8594;</span></a><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fmicrosoft-exchange-toolboxcenter-konnte-nicht-alle-tools-anzeigen%2F&amp;action_name=Microsoft+Exchange+Toolboxcenter+konnte+nicht+alle+Tools+anzeigen&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/jquery-is-not-defined-fehler-im-wordpress-backend/" rel="bookmark" title="&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend">&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/224_crop_940x198_exchange-server-2010.jpg" width="618" height="130" alt="Microsoft Exchange Toolboxcenter konnte nicht alle Tools anzeigen" /></p><p>Man lernt ja nicht aus. Heute bin ich zufällig über einen relativ seltsamen Fehler in unserer Microsoft Exchange 2007 Installation gestolpert. Durch ein automatisch per Windows Update installiertes <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=de&amp;FamilyID=de91f994-6263-47ef-89d7-6d344997459d" title="Microsoft Downloadseite zu Updaterollup 1 für Exchange Server 2007 Service Pack 2 (KB971534)" target="_blank" class="link-external">Update Rollup 1 für Exchange 2007 SP2</a> meldete die Exchange-Verwaltungskonsole bei jedem Zugriff auf die Toolbox folgende Fehler:</p>
<pre class="brush:plain">--------------------------------------------------------
Microsoft Exchange Fehler
--------------------------------------------------------
Das Toolboxcenter konnte nicht alle Tools anzeigen.

ExTRA-DRM
Fehler
Fehler:
Fehler des Tools beim Laden, weil das Tool ungültig ist. Beheben Sie die folgenden Ursachen des Fehlers:
'Datenbankwiederherstellungs-Verwaltung' ist kein zulässiges Tool.

ExTRA-MailFlow
Fehler
Fehler:
Fehler des Tools beim Laden, weil das Tool ungültig ist. Beheben Sie die folgenden Ursachen des Fehlers:
'Nachrichtenübermittlungs-Problembehandlung' ist kein zulässiges Tool.

ExTRA-MDBMount
Fehler
Fehler:
Fehler des Tools beim Laden, weil das Tool ungültig ist. Beheben Sie die folgenden Ursachen des Fehlers:
'Datenbank-Problembehandlung' ist kein zulässiges Tool.

ExTRA-MsgTrack
Fehler
Fehler:
Fehler des Tools beim Laden, weil das Tool ungültig ist. Beheben Sie die folgenden Ursachen des Fehlers:
'Nachrichtenverfolgung' ist kein zulässiges Tool.

ExTRA-Perf
Fehler
Fehler:
Fehler des Tools beim Laden, weil das Tool ungültig ist. Beheben Sie die folgenden Ursachen des Fehlers:
'Leistungsproblembehandlung' ist kein zulässiges Tool.

--------------------------------------------------------
OK
--------------------------------------------------------</pre>
<p>Die entsprechenden Tools</p>
<ul>
<li>ExTRA-DRM: Datenbankwiederherstellungs-Verwaltung,</li>
<li>ExTRA-MailFlow: Nachrichtenübermittlungs-Problembehandlung,</li>
<li>ExTRA-MDBMount: Datenbank-Problembehandlung,</li>
<li>ExTRA-MsgTrack: Nachrichtenverfolgung und</li>
<li>ExTRA-Perf: Leistungsproblembehandlung</li>
</ul>
<p>wurden nicht geladen.</p>
<p>Die Ursache des Problems ist relativ einfach. Microsoft hatte im Zuge des Updates die Namen der Tools von deutschen Bezeichnungen auf Englisch geändert, allerdings ohne entsprechende Updates für bereits bestehende Registry-Einträge zur Verfügung zu stellen. Manche Dinge muss man wohl nicht verstehen &#8230;</p>
<p>Beheben lässt sich das Problem relativ einfach, in dem man die deutschen Namen im Registry-Pfad HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\v8.0\AdminTools\Toolbox\ durch ihre nachfolgenden englischen Pendants aus der <a href="http://technet.microsoft.com/en-us/library/aa997892.aspx" title="Technet Dokumentation zur Exchange 2007 Toolbox" target="_blank" class="link-external">Dokumentation</a> ersetzt:</p>
<ul>
<li>ExTRA-DRM: Database Recovery Management,</li>
<li>ExTRA-MailFlow: Mail Flow Troubleshooter,</li>
<li>ExTRA-MDBMount: Database Troubleshooter,</li>
<li>ExTRA-MsgTrack: Message Tracking und</li>
<li>ExTRA-Perf: Performance Troubleshooter</li>
</ul>
<p>Als Registry-File sähe das dann so aus:</p>
<pre class="brush:vb">Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\v8.0\AdminTools\Toolbox\ExTRA-DRM]
@=""
"Name"="Database Recovery Management"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\v8.0\AdminTools\Toolbox\ExTRA-MailFlow]
@=""
"Name"="Mail Flow Troubleshooter"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\v8.0\AdminTools\Toolbox\ExTRA-MDBMount]
@=""
"Name"="Database Troubleshooter"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\v8.0\AdminTools\Toolbox\ExTRA-MsgTrack]
@=""
"Name"="Message Tracking"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\v8.0\AdminTools\Toolbox\ExTRA-Perf]
@=""
"Name"="Performance Troubleshooter"</pre><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fmicrosoft-exchange-toolboxcenter-konnte-nicht-alle-tools-anzeigen%2F&amp;action_name=Microsoft+Exchange+Toolboxcenter+konnte+nicht+alle+Tools+anzeigen&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/jquery-is-not-defined-fehler-im-wordpress-backend/" rel="bookmark" title="&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend">&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend </a></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>https://test.soziotech.org/microsoft-exchange-toolboxcenter-konnte-nicht-alle-tools-anzeigen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2 SSL-Zertifikat vom DFN</title>
		<link>https://test.soziotech.org/apache2-ssl-zertifikat-vom-dfn/</link>
		<comments>https://test.soziotech.org/apache2-ssl-zertifikat-vom-dfn/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 13:31:47 +0000</pubDate>
		<dc:creator><![CDATA[Florian Ott]]></dc:creator>
				<category><![CDATA[Dienstintegration]]></category>
		<category><![CDATA[Internet & Web 2.0]]></category>
		<category><![CDATA[Linux / Apache]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[DFN]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PEM]]></category>
		<category><![CDATA[PKI]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[X.509]]></category>
		<category><![CDATA[Zertifikat]]></category>

		<guid isPermaLink="false">http://sevastyanova.cscwlab.de/?p=138</guid>
		<description><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/223_crop_940x198_dfn-apache.jpg" width="618" height="130" alt="Apache2 SSL-Zertifikat vom DFN" /></p>Wie viele andere wissenschaftliche Einrichtungen nutzen wir in der Foschungsgruppe Kooperationssysteme die Möglichkeit, unsere SSL-Serverzertifikate durch die Zertifizierungsstelle (CA) des Deutschen Forschungsnetzes (DFN) zertifizieren zu lassen. Die Zertifizierung findet durch die lokale Zwischenzertifizierungsstelle innerhalb der DFN Public Key Infrastruktur (PKI), &#8230; <a href="https://test.soziotech.org/apache2-ssl-zertifikat-vom-dfn/">Weiterlesen <span class="meta-nav">&#8594;</span></a><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fapache2-ssl-zertifikat-vom-dfn%2F&amp;action_name=Apache2+SSL-Zertifikat+vom+DFN&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/" rel="bookmark" title="Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP">Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/223_crop_940x198_dfn-apache.jpg" width="618" height="130" alt="Apache2 SSL-Zertifikat vom DFN" /></p>
<p>Wie viele andere wissenschaftliche Einrichtungen nutzen wir in der <a href="http://www.kooperationssysteme.de" title="Zur Website der Forschungsgruppe Kooperationssysteme" target="_blank" class="link-external">Foschungsgruppe Kooperationssysteme</a> die Möglichkeit, unsere SSL-Serverzertifikate durch die Zertifizierungsstelle (<a href="https://test.soziotech.org/glossar/ca/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für CA zu springen." onmouseover="tooltip.show('Certificate Authority; bezeichnet die Organisationseinheit (Zertifizierungsstelle) innerhalb einer PKI, die das CA-Zertifikat bereitstellt und die Signatur von Zertifikatsanträgen übernimmt.');" onmouseout="tooltip.hide();">CA</a>) des <a href="http://www.dfn.de/" title="Zur Website des Deutschen Forschungsnetzes" target="_blank" class="link-external">Deutschen Forschungsnetzes</a> (<a href="https://test.soziotech.org/glossar/dfn/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für DFN zu springen." onmouseover="tooltip.show('Deutsche Forschungsnetz; das von der Wissenschaft selbst organisierte Kommunikationsnetz für Wissenschaft und Forschung in Deutschland. Es verbindet Hochschulen und Forschungseinrichtungen miteinander und ist nahtlos in den europäischen und weltweiten Verbund der Forschungs- und Wissenschaftsnetze integriert. Über mehrere leistungsstarke Austauschpunkte ist das DFN mit dem allgemeinen Internet verbunden.');" onmouseout="tooltip.hide();">DFN</a>) zertifizieren zu lassen. Die Zertifizierung findet durch die lokale Zwischenzertifizierungsstelle innerhalb der DFN Public Key Infrastruktur (<a href="https://test.soziotech.org/glossar/pki/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für PKI zu springen." onmouseover="tooltip.show('Public Key Infrastructure; bezeichnet die Gesamtheit der für die Verschlüsselung mit öffentlichen Schlüsseln spwie die Vergabe digitaler Signaturen erforderlichen Technologien. Zu den notwendigen Einrichtungen gehören typischerweise Registrierungsinstanzen (Registration Authority, RA), Zertifizierungsinstanzen (Certification Authority, CA) sowie Verzeichnisdienste (Directory Service, Repository).');" onmouseout="tooltip.hide();">PKI</a>), unsere <a href="http://www.unibw.de" title="Zur Website der Universität der Bundeswehr München" target="_blank" class="link-external">Universität der Bundeswehr München</a> (<a href="https://test.soziotech.org/glossar/unibwm/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für UniBwM zu springen." onmouseover="tooltip.show('Abkürzung für Universität der Bundeswehr München. Die UniBwM ist die südliche der zwei deutschen Bundeswehr Universitäten. Anschrift: Werner-Heisenberg-Weg 39, 85577 Neubiberg.');" onmouseout="tooltip.hide();">UniBwM</a>), statt . Großer Vorteil ist, dass die CA des DFN-Vereins (&#8222;DFN-Verein PCA Global &#8211; G01&#8243;) als Root-Zertifikat das in gängigen Browsern enthaltene &#8222;Deutsche Telekom Root CA 2&#8243; des T-TeleSec Trust Center der Deutschen Telekom AG für seine Zertifizierung verwendet. Somit wird der Zertifizierungspfad der ausgestellten Zertifikate ohne Zusatzinstallation eines Root-Zertifikats validiert.</p>
<h2>Beantragen eines Serverzertifikats</h2>
<p>Zur Zertifizierung lässt man sich unter ausführlicher Prüfung der persönlichen Daten und der Zugehörigkeit zur jeweils ausstellenden Einrichtung sowie der Sicherheit des zu zertifizierdenden Systems für einen ausgewählten Hostnamen ein Apache-taugliches PEM-Zertifikat generieren. Dabei handelt es sich um ein <a href="https://test.soziotech.org/glossar/base64/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für Base64 zu springen." onmouseover="tooltip.show('Verfahren zur plattformübergreifenden Kodierung von Binärdaten in eine Zeichenfolge, die nur aus lesbaren Codepage-unabhängigen ASCII-Zeichen besteht.');" onmouseout="tooltip.hide();">Base64</a>-kodiertes <a href="https://test.soziotech.org/glossar/x-509/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für X.509 zu springen." onmouseover="tooltip.show('Von der Internationalen Fernmeldeunion alias International Telecommunication Union (ITU) herausgegebener Standard für eine Public Key Infrastruktur (PKI). ');" onmouseout="tooltip.hide();">X.509</a> Zertifikat im Format:</p>
<pre class="brush:plain">-----BEGIN CERTIFICATE-----

Zertifkatinhalt

-----END CERTIFICATE-----</pre>
<h2>Einbinden in die Apache-Konfiguration</h2>
<p>Dieses Zertifikat kann anschließend in die Webserver-Konfiguration integriert werden. Bisher haben wir hierzu das Zertifikat sowie den von Apache benötigten privaten Schlüssel (Private Key) auf folgende einfache und der <a href="http://httpd.apache.org/docs/2.0/mod/mod_ssl.html" title="Zur Dokumentation von Apache2 mod_ssl" target="_blank" class="link-external">Standard-Dokumentation</a> entsprechende Art in die Konfiguration des jeweiligen vHosts unter /etc/apache2/sites-enabled eingebunden:</p>
<pre class="brush:plain">SSLEngine on
SSLCertificateFile /etc/ssl/certs/ZERTIFIKATSNAME.pem
SSLCertificateKeyFile /etc/ssl/private/PRIVATE_KEY.key</pre>
<p>Hierzu ist natürlich das Apache2 SSL-Modul erforderlich, das sich bei Bedarf über</p>
<pre class="brush:plain">a2enmod ssl
</pre>
<p>aktivieren lässt.</p>
<p>Anschließend muss Apache neu gestartet werden:</p>
<pre class="brush:plain">/etc/init.d/apache2 restart</pre>
<h2>Probleme bei der bisherigen Nutzung</h2>
<p>In gängigen Browsern, wie Firefox, Internet Explorer, Chrome oder Safari  hatten wir damit nie Probleme und das Zertifikat wurde immer  als gültig angezeigt. Dies ist darauf zurückzuführen, dass diese Browser beim Validieren des Zertifikats im lokalen Cache nach den verschiedenen in der Zertifikatskette enthaltenen Authority-Zertifikaten suchen und sie &#8211; sofern vorhanden &#8211; für die Validierung verwenden. Allerdings gelten in größeren Unternehmen oder bestimmten öffentlichen Einrichtungen häufig erhöhte Sicherheitsrichtlinien. Dort werden häufig Web-Proxies eingesetzt, die bei der Validierung des Zertifizierungspfades nicht auf einen lokalen Zertifikats-Cache zurückgreifen können (oder sollen), sondern für die alle Informationen direkt über den Webserver erreichbar sein müssen. In unserem Fall hat dies auf einigen Verwaltungsrechnern dazu geführt, dass bestimmte SSL-verschlüsselte Login-Seiten über den genutzten Web-Proxy nicht erreichbar waren, da die Verbindung als nicht sicher angezeigt wurde.</p>
<h2>Zertifikat-Validierung mit openSSL</h2>
<p>Grundsätzlich lassen sich ausgestellte Zertifikate mit dem Linux-Programm openSSL relativ einfach validieren. Hierzu verwendet man einfach den s_client mit der entsprechenden Adresse des Apache vHosts:</p>
<pre class="brush:plain">openssl s_client -connect vhost-adresse.de:443</pre>
<p>Resultat sollte bei gültigen Zertifikaten ein</p>
<pre>Verify return code: 0 (ok)</pre>
<p>sein. In unserem Fall bekamen wir allerdings trotz der Gültigkeitsanzeige in Brwosern von openSSL ein</p>
<pre>Verify return code: 21 (unable to verify the first certificate)</pre>
<p>weshalb das Zertifikat auch vom Web-Proxy abgelehnt wurde.</p>
<h2>Korrektur durch Einfügen eines SLCACertificateFile</h2>
<p>Beseitigen ließ sich das Problem schließlich durch Nutzung eines SLCACertificateFile in der Apache-Konfiguration. Nachdem der Weg dorthin allerdings etwas steinig war, hier ein paar kurze Erläuterungen.</p>
<p>Zunächst muss das &#8222;Chain-File&#8220; der jeweils genutzten DFN-Zwischenzertifizierungsstelle heruntergeladen werden, das die CA-Zertifikate aller Zwischenzertifizierungsstellen sowie der Root-CA in einem File enthält. Die jeweilige Datei ist auf den öffentlich zugänglichen Servern des DFN-Vereins verfügbar. In unserem Fall beispielsweise unter dem Link <a href="https://pki.pca.dfn.de/uni-bundeswehr-muenchen-ca/pub/cacert/chain.txt" title="DFN-CA Chain-File der UniBwM" target="_blank" class="link-internal broken_link">https://pki.pca.dfn.de/uni-bundeswehr-muenchen-ca/pub/cacert/chain.txt</a>.</p>
<p>Diese Datei muss mit der Endung PEM (streng genommen spielt die Endung in Linux keine Rolle) in den Zertifikatsordner auf den Server (in Debian- und Ubuntu-basierten Distributionen i.d.R. /etc/ssl/certs) geladen und in der vHost-Konfiguration mittels SSLCertificateChainFile entsprechend ergänzt werden. Außerdem war es in unserem Fall erforderlich, Apache den Pfad, in dem die CA-Zertifikate zu finden sind, ebenfalls mitzuteilen:</p>
<pre class="brush:plain">SSLCertificateChainFile /etc/ssl/certs/CHAIN-FILE.pem
SSLCACertificatePath /etc/ssl/certs</pre>
<p>Anschließend muss Apache wieder neu gestartet werden:</p>
<pre class="brush:plain">/etc/init.d/apache2 restart</pre>
<h2>Erneute Validierung</h2>
<p>Interessant ist das Ergebnis der erneuten Validierung, denn hier liefert openSSL im Falle eines DFN-Zertifikats:</p>
<pre>Verify return code: 19 (self signed certificate in certificate chain)</pre>
<p>oder in anderen Worten, dass ein selbst-signiertes Zertifikat im Zertifizierungspfad gefunden wurde. Dies ist darauf zurückzuführen, dass das openssl nichts vom oben bereits erwähnten Root-CA-Zertifikat (&#8222;Deutsche Telekom Root CA 2&#8243;) weiß. Durch Anhängen des CAfile-Parameters lässt sich das Zertifikat allerdings doch noch validieren:</p>
<pre class="brush:plain">openssl s_client -connect vhost-adresse.de:443 -CAfile /etc/ssl/certs/deutsche-telekom-root-ca2.pem
</pre>
<p>Das Resultat ist nun wie gewünscht ein</p>
<pre>Verify return code: 0 (ok)</pre>
<p>Auch von Clients, die den Web-Proxy nutzen, ließ sich die Seite damit problemlos validieren.</p><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fapache2-ssl-zertifikat-vom-dfn%2F&amp;action_name=Apache2+SSL-Zertifikat+vom+DFN&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/" rel="bookmark" title="Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP">Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP </a></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>https://test.soziotech.org/apache2-ssl-zertifikat-vom-dfn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP</title>
		<link>https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/</link>
		<comments>https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 16:30:35 +0000</pubDate>
		<dc:creator><![CDATA[Florian Ott]]></dc:creator>
				<category><![CDATA[Dienstintegration]]></category>
		<category><![CDATA[Linux / Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technologien]]></category>
		<category><![CDATA[Wordpress / Buddypress]]></category>
		<category><![CDATA[Buddypress]]></category>
		<category><![CDATA[Gallery]]></category>
		<category><![CDATA[NextGEN]]></category>
		<category><![CDATA[Rechte]]></category>
		<category><![CDATA[suPHP]]></category>
		<category><![CDATA[Thumbnails]]></category>
		<category><![CDATA[umask]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://sevastyanova.cscwlab.de/?p=89</guid>
		<description><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/228_crop_940x198_suphp-apache.jpg" width="618" height="130" alt="Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP" /></p>Auf unserer Multiblogging-Plattform setzen wir aus Sicherheitsgründen suPHP statt mod_php ein. Einer der großen Vorteile ist, dass Skripte so unter dem Benutzer des jeweiligen vHosts ausgeführt werden und so weder schreibbar noch ausführbar für andere Benutzer sein müssen. Da die &#8230; <a href="https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/">Weiterlesen <span class="meta-nav">&#8594;</span></a><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fnicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp%2F&amp;action_name=Nicht+lesbare+Thumbnails+bei+WordPress+%2F+Buddypress+mit+suPHP&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/wordpress-xml-sitemap-fur-multisite-installationen/" rel="bookmark" title="WordPress XML Sitemap für Multisite-Installationen">WordPress XML Sitemap für Multisite-Installationen </a></li>
<li><a href="https://test.soziotech.org/jquery-is-not-defined-fehler-im-wordpress-backend/" rel="bookmark" title="&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend">&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend </a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p><img src="https://test.soziotech.org/wp-content/uploads/cache/228_crop_940x198_suphp-apache.jpg" width="618" height="130" alt="Nicht lesbare Thumbnails bei WordPress / Buddypress mit suPHP" /></p><p>Auf unserer Multiblogging-Plattform setzen wir aus Sicherheitsgründen suPHP statt mod_php ein. Einer der großen Vorteile ist, dass Skripte so unter dem Benutzer des jeweiligen vHosts ausgeführt werden und so weder schreibbar noch ausführbar für andere Benutzer sein müssen. Da die Dateien dem vHost-Besitzer &#8222;gehören&#8220; genügt für normale Dateien, wie z.B. Bilder, eine Linux-Dateisystem-Berechtigung von umask 644 bzw. -rwxr&#8211;r&#8211; oder auf Deutsch:  Besitzer (vHost owner) darf lesen und schreiben, der Rest &#8211; insbesondere der Apache-User www-data darf nur lesen.</p>
<h2>Das Problem &#8230;</h2>
<p>In der Debian / Ubuntu Default-Konfiguration für von Skripten erstellte Dateien, also z.B. für von WordPress / Buddypress erzeugte Profilbilder oder vom <a href="http://wordpress.org/extend/plugins/nextgen-gallery/" title="Wordpress Plugin NextGEN Gallery" target="_blank" class="link-external">Plugin NextGEN Gallery</a> erstellte Thumbnails, setzt suPHP die Berechtigung 600 bzw. -rw&#8212;&#8212;-, wodurch die Dateien nicht durch den Apache-User gelesen werden können. Das führt i.d.R. zu klassischen 404-Fehlermeldungen beim Zugriff auf die <a href="https://test.soziotech.org/glossar/url/" class="glossaryLink" title="Klicken Sie, um zum detaillierten Glossareintrag für URL zu springen." onmouseover="tooltip.show('Unter URLs (Uniform Resource Locator) versteht man eindeutige menschenlesbare Adressen, die Inhalte wie beispielsweise Webseiten im Internet identifizieren und dadurch zugreifbar machen. URLs werden meist als Internetadressen bezeichnet. ');" onmouseout="tooltip.hide();">URLs</a> oder dazu, dass Bilder einfach nicht dargestellt werden, sondern lediglich deren Alternativtext (sofern überhaupt verfügbar).</p>
<h2>Die Lösung &#8230;</h2>
<p>&#8230; ist prinzipiell relativ einfach. Allerdings ist zur Änderung Zugriff auf die Webserverkonfiguration erforderlich, was jedoch inzwischen aufgrund der immer häufiger genutzten eigenen vServer mit Root-Zugriff vielfach gegeben ist. In diesem Fall muss lediglich der umask-Eintrag der Datei /etc/suphp/suphp.conf von 0077 (entspricht 600 in Oktalnotation) auf 0022 (entspricht 644 in Oktalnotation) geändert werden:</p>
<pre class="brush:cpp">;Umask to set, specify in octal notation
;umask=0077</pre>
<p>Sicherheitshalber ggf. noch den Apache-Prozess neu starten, so dass die Änderungen auch auf jeden Fall übernommen werden und ab sofort sollten von PHP-Prozessen erzeugte Dateien mit den korrekten und v.a. von Apache lesbaren Berechtigungen 644 erzeugt werden:</p>
<pre class="brush:cpp">/etc/init.d/apache2 restart</pre><img src="https://analytics.flottmedia.com/piwik/piwik.php?idsite=2&amp;rec=1&amp;url=https%3A%2F%2Ftest.soziotech.org%2Fnicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp%2F&amp;action_name=Nicht+lesbare+Thumbnails+bei+WordPress+%2F+Buddypress+mit+suPHP&amp;urlref=http%3A%2F%2Ffeeds.feedburner.com%2Fsoziotech" style="border:0;width:0;height:0" width="0" height="0" alt="" /><div class='yarpp-related-rss'>
<h3>Verwandte Artikel:</h3><ol>
<li><a href="https://test.soziotech.org/wordpress-xml-sitemap-fur-multisite-installationen/" rel="bookmark" title="WordPress XML Sitemap für Multisite-Installationen">WordPress XML Sitemap für Multisite-Installationen </a></li>
<li><a href="https://test.soziotech.org/jquery-is-not-defined-fehler-im-wordpress-backend/" rel="bookmark" title="&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend">&#8222;jQuery is not defined&#8220;-Fehler im WordPress Backend </a></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>https://test.soziotech.org/nicht-lesbare-thumbnails-bei-wordpress-buddypress-mit-suphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
