<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Azzaroff</id>
	<title>Medien Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Azzaroff"/>
	<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/Special:Contributions/Azzaroff"/>
	<updated>2026-04-21T16:10:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61049</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61049"/>
		<updated>2013-10-20T19:27:47Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen, genannt Pitoti, digitalisiert. Dies geschah unter anderem in Zusammenarbeit der Bauhaus-Universität Weimar und Archäologen aus Cambridge. Die Digitalisierung wurde vor allem mit 3D-Laserscanning und Photogrametrie realisiert. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die aus den Oberflächen rekonstruierten Rohdaten verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer, die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren deshalb nur einem kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGL fähigen Browser ist nun in der Lage, sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viele Erklärungen für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Cursor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figur wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursor folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit unterschiedliche Kontraste. So kann man besipielsweise mit manchen Farben Details besser wahrnehmen als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts-Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursor folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Des Weiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht. Damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
Three.js macht das Benutzen von WebGL extrem einfach. Außerdem bietet es nützliche Klassen, wie zum Beispiel den Raycaster, dem man einen Strahl übergibt und der damit beliebige Objekte schneidet und natürlich diese zurückliefert. Der Raycaster wird hier benutzt um die Pitoti-Figuren im &amp;quot;Map Mode&amp;quot; mit Mouseover und OnClick Events zu versehen. Im &amp;quot;Viewer Mode&amp;quot; wird der Schnittpunkt aus einem Strahl der vom Cursor ausgeht, dazu verwendet um die Maus-Lichtquelle zu positionieren.&lt;br /&gt;
&lt;br /&gt;
Aus CSS3 werden die Opacity für die Buttons, abgerundete Ecken und Farbverläufe benutzt. JQuery wird hauptsächlich für die Manipulation des DOM und für das Anlegen von Event Listeners benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Modelle wurden von einem ursprünglichen hochauflösenden Obj-Modell, in Blender importiert und deren Komplexität verkleinert, sodass sie i.d.R. nicht größer sind als 2 MB. Zusätzlich werden sie in ein von Three.js verwendetes JSON-Format konvertiert. Es gibt zwar einen OBJ-Loader in Three.js, dieser ist aber extrem langsam, weil er wahrscheinlich intern genau diese Formatierung vornimmt. Durch die kleinen Modellen gehen natürlich Details verloren, aber nur so ist es möglich, das diese auch auf langsameren Rechnern flüssig angezeigt werden. Außerdem werden sie dadurch auch schneller geladen.&lt;br /&gt;
&lt;br /&gt;
Der Viewer läuft außerdem auch auf Tablets und dass sogar mit vollem Funktionsumfang. Getestet wurde auf einem Nexus 10 mit dem Chrome Browser.&lt;br /&gt;
&lt;br /&gt;
In Chrome scheint der Viewer generell besser zu laufen. So ruckelt er leicht in Firefox, ist aber noch gut benutzbar.&lt;br /&gt;
&lt;br /&gt;
==Danksagung==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher nicht nur die gescannten Objekte zur Verfügung gestellt hat, sondern auch viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beisteuerte.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61044</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61044"/>
		<updated>2013-10-19T15:45:55Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen, genannt Pitoti, digitalisiert. Dies geschah unter anderem in Zusammenarbeit der Bauhaus-Universität Weimar und Archäologen aus Cambridge. Die Digitalisierung wurde vor allem mit 3D-Laserscanning und Photogrametrie realisiert. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die aus den Oberflächen rekonstruierten Rohdaten verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer, die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren deshalb nur einem kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGL fähigen Browser ist nun in der Lage, sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viele Erklärungen für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Cursor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figur wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursor folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit unterschiedliche Kontraste. So kann man besipielsweise mit manchen Farben Details besser wahrnehmen als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts-Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursor folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Des Weiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht. Damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
Three.js macht das Benutzen von WebGL extrem einfach. Außerdem bietet es nützliche Klassen, wie zum Beispiel den Raycaster, dem man einen Strahl übergibt und der damit beliebige Objekte schneidet und natürlich diese zurückliefert. Der Raycaster wird hier benutzt um die Pitoti-Figuren im &amp;quot;Map Mode&amp;quot; mit Mouseover und OnClick Events zu versehen. Im &amp;quot;Viewer Mode&amp;quot; wird der Schnittpunkt aus einem Strahl der vom Cursor ausgeht, dazu verwendet um die Maus-Lichtquelle zu positionieren.&lt;br /&gt;
&lt;br /&gt;
Aus CSS3 werden die Opacity für die Buttons, abgerundete Ecken und Farbverläufe benutzt. JQuery wird hauptsächlich für die Manipulation des DOM und für das Anlegen von Event Listeners benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Modelle wurden von einem ursprünglichen hochauflösenden Obj-Modell, in Blender importiert und deren Komplexität verkleinert, sodass sie i.d.R. nicht größer sind als 2 MB. Zusätzlich werden sie in ein von Three.js verwendetes JSON-Format konvertiert. Es gibt zwar einen OBJ-Loader in Three.js, dieser ist aber extrem langsam, weil er wahrscheinlich intern genau diese Formatierung vornimmt. Durch die kleinen Modellen gehen natürlich Details verloren, aber nur so ist es möglich, das diese auch auf langsameren Rechnern flüssig angezeigt werden. Außerdem werden sie dadurch auch schneller geladen.&lt;br /&gt;
&lt;br /&gt;
Der Viewer läuft außerdem auch auf Tablets und dass sogar mit vollem Funktionsumfang. Getestet wurde auf einem Nexus 10 mit dem Chrome Browser.&lt;br /&gt;
&lt;br /&gt;
In Chrome scheint der Viewer generell besser zu laufen. So ruckelt er leicht in Firefox, ist aber noch gut benutzbar.&lt;br /&gt;
&lt;br /&gt;
==Danksagung==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher nicht nur die gescannten Objekte zur Verfügung gestellt hat, sondern auch viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuerte.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61043</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61043"/>
		<updated>2013-10-19T15:30:14Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung wurde vor allem mit 3D-Laserscanning und Photogrametrie realisiert. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGL fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figur wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera, können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursur folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit Unterschiedliche Kontraste, so kann man mit manchen Farben Details besser wahrnehmen, als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursur folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button, wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Desweiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht, damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
Three.js macht das Benutzen von WebGL extrem einfacher. Außerdem bietet es nützliche Klassen, wie zum Beispiel den Raycaster, dem man einen Strahl übergibt und der damit beliebige Objekte schneidet und natürlich diese zurückliefert. Der Raycaster wird hier benutzt um die Pitoti-Figuren im &amp;quot;Map Mode&amp;quot; mit Mouseover und OnClick Events zu versehen. Im &amp;quot;Viewer Mode&amp;quot; wird der Schnittpunkt aus einem Strahl der vom Cursur ausgeht, dazu verwendet um die Maus-Lichtquelle zu positionieren.&lt;br /&gt;
&lt;br /&gt;
Aus CSS3 werden die Opacity für die Buttons, abgerundete Ecken und Farbverläufe benutzt. JQuery wird hauptsächlich für die Manipulation des DOM und für das anlegen von Event Listeners benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Modelle wurden von einem ursprünglichen hochauflösenden Obj-Modell, in Blender importiert und deren Komplexität verkleinert, sodass sie i.d.R. nicht größer sind als 2 MB. Zusätzlich werden sie in ein von Three.js verwendetes JSON-Format konvertiert. Es gibt zwar einen OBJ-Loader in Three.js, dieser ist aber extrem langsam, weil er wahrscheinlich intern genau diese Formatierung vornimmt. Durch die kleinen Modellen gehen natürlich Details verloren, aber nur so ist es möglich, das diese auch auf langsameren Rechnern flüssig angezeigt werden. Außerdem werden sie dadurch auch schneller geladen.&lt;br /&gt;
&lt;br /&gt;
Der Viewer läuft außerdem auch auf Tablets und dass sogar mit vollem Funktionsumfang. Getestet wurden auf einem Nexus 10 mit dem Chrome Browser.&lt;br /&gt;
&lt;br /&gt;
In Chrome scheint der Viewer generell besser zu laufen, so ruckelt er leicht in Firefox, ist aber noch gut benutzbar. Den Grund konnte ich leider nicht ausmachen.&lt;br /&gt;
&lt;br /&gt;
==Danksagung==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61042</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61042"/>
		<updated>2013-10-19T13:52:41Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung wurde vor allem mit 3D-Laserscanning und Photogrametrie realisiert. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGL fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figur wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera, können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursur folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit Unterschiedliche Kontraste, so kann man mit manchen Farben Details besser wahrnehmen, als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursur folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button, wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Desweiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht, damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
Three.js macht das Benutzen von WebGL extrem einfacher. Außerdem bietet es nützliche Klassen, wie zum Beispiel den Raycaster, dem man einen Strahl übergibt und der damit beliebige Objekte schneidet und natürlich diese zurückliefert. Der Raycaster wird hier benutzt um die Pitoti-Figuren im &amp;quot;Map Mode&amp;quot; mit Mouseover und OnClick Events zu versehen. Im &amp;quot;Viewer Mode&amp;quot; wird der Schnittpunkt aus einem Strahl der vom Cursur ausgeht, dazu verwendet um die Maus-Lichtquelle zu positionieren.&lt;br /&gt;
&lt;br /&gt;
Aus CSS3 werden die Opacity für die Buttons, abgerundete Ecken und Farbverläufe benutzt. JQuery wird hauptsächlich für die Manipulation des DOM und für das anlegen von Event Listeners benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Modelle wurden von einem ursprünglichen hochauflösenden Obj-Modell, in Blender importiert und deren Komplexität verkleinert, sodass sie i.d.R. nicht größer sind als 2 MB. Zusätzlich werden sie in ein von Three.js verwendetes JSON-Format konvertiert. Es gibt zwar einen OBJ-Loader in Three.js, dieser ist aber extrem langsam, weil er wahrscheinlich intern genau diese Formatierung vornimmt. Durch die kleinen Modellen gehen natürlich Details verloren, aber nur so ist es möglich, das diese auch auf langsameren Rechnern flüssig angezeigt werden. Außerdem werden sie dadurch auch schneller geladen.&lt;br /&gt;
&lt;br /&gt;
Der Viewer läuft außerdem auch auf Tablets und dass sogar mit vollem Funktionsumfang. Getestet wurden auf einem Nexus 7 mit dem Chrome Browser.&lt;br /&gt;
&lt;br /&gt;
In Chrome scheint der Viewer generell besser zu laufen, so ruckelt er leicht in Firefox, ist aber noch gut benutzbar. Den Grund konnte ich leider nicht ausmachen.&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61041</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61041"/>
		<updated>2013-10-19T13:51:42Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung wurde vor allem mit 3D-Laserscanning und Photogrametrie realisiert. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGL fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera, können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursur folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit Unterschiedliche Kontraste, so kann man mit manchen Farben Details besser wahrnehmen, als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursur folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button, wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Desweiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht, damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
Three.js macht das Benutzen von WebGL extrem einfacher. Außerdem bietet es nützliche Klassen, wie zum Beispiel den Raycaster, dem man einen Strahl übergibt und der damit beliebige Objekte schneidet und natürlich diese zurückliefert. Der Raycaster wird hier benutzt um die Pitoti-Figuren im &amp;quot;Map Mode&amp;quot; mit Mouseover und OnClick Events zu versehen. Im &amp;quot;Viewer Mode&amp;quot; wird der Schnittpunkt aus einem Strahl der vom Cursur ausgeht, dazu verwendet um die Maus-Lichtquelle zu positionieren.&lt;br /&gt;
&lt;br /&gt;
Aus CSS3 werden die Opacity für die Buttons, abgerundete Ecken und Farbverläufe benutzt. JQuery wird hauptsächlich für die Manipulation des DOM und für das anlegen von Event Listeners benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Modelle wurden von einem ursprünglichen hochauflösenden Obj-Modell, in Blender importiert und deren Komplexität verkleinert, sodass sie i.d.R. nicht größer sind als 2 MB. Zusätzlich werden sie in ein von Three.js verwendetes JSON-Format konvertiert. Es gibt zwar einen OBJ-Loader in Three.js, dieser ist aber extrem langsam, weil er wahrscheinlich intern genau diese Formatierung vornimmt. Durch die kleinen Modellen gehen natürlich Details verloren, aber nur so ist es möglich, das diese auch auf langsameren Rechnern flüssig angezeigt werden. Außerdem werden sie dadurch auch schneller geladen.&lt;br /&gt;
&lt;br /&gt;
Der Viewer läuft außerdem auch auf Tablets und dass sogar mit vollem Funktionsumfang. Getestet wurden auf einem Nexus 7 mit dem Chrome Browser.&lt;br /&gt;
&lt;br /&gt;
In Chrome scheint der Viewer generell besser zu laufen, so ruckelt er leicht in Firefox, ist aber noch gut benutzbar. Den Grund konnte ich leider nicht ausmachen.&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61040</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61040"/>
		<updated>2013-10-19T13:50:52Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung wurde vor allem mit 3D-Laserscanning und Photogrametrie realisiert. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera, können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursur folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit Unterschiedliche Kontraste, so kann man mit manchen Farben Details besser wahrnehmen, als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursur folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button, wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Desweiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht, damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
Three.js macht das Benutzen von WebGL extrem einfacher. Außerdem bietet es nützliche Klassen, wie zum Beispiel den Raycaster, dem man einen Strahl übergibt und der damit beliebige Objekte schneidet und natürlich diese zurückliefert. Der Raycaster wird hier benutzt um die Pitoti-Figuren im &amp;quot;Map Mode&amp;quot; mit Mouseover und OnClick Events zu versehen. Im &amp;quot;Viewer Mode&amp;quot; wird der Schnittpunkt aus einem Strahl der vom Cursur ausgeht, dazu verwendet um die Maus-Lichtquelle zu positionieren.&lt;br /&gt;
&lt;br /&gt;
Aus CSS3 werden die Opacity für die Buttons, abgerundete Ecken und Farbverläufe benutzt. JQuery wird hauptsächlich für die Manipulation des DOM und für das anlegen von Event Listeners benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Modelle wurden von einem ursprünglichen hochauflösenden Obj-Modell, in Blender importiert und deren Komplexität verkleinert, sodass sie i.d.R. nicht größer sind als 2 MB. Zusätzlich werden sie in ein von Three.js verwendetes JSON-Format konvertiert. Es gibt zwar einen OBJ-Loader in Three.js, dieser ist aber extrem langsam, weil er wahrscheinlich intern genau diese Formatierung vornimmt. Durch die kleinen Modellen gehen natürlich Details verloren, aber nur so ist es möglich, das diese auch auf langsameren Rechnern flüssig angezeigt werden. Außerdem werden sie dadurch auch schneller geladen.&lt;br /&gt;
&lt;br /&gt;
Der Viewer läuft außerdem auch auf Tablets und dass sogar mit vollem Funktionsumfang. Getestet wurden auf einem Nexus 7 mit dem Chrome Browser.&lt;br /&gt;
&lt;br /&gt;
In Chrome scheint der Viewer generell besser zu laufen, so ruckelt er leicht in Firefox, ist aber noch gut benutzbar. Den Grund konnte ich leider nicht ausmachen.&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61039</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61039"/>
		<updated>2013-10-19T13:49:35Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera, können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursur folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit Unterschiedliche Kontraste, so kann man mit manchen Farben Details besser wahrnehmen, als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursur folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button, wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Desweiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht, damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
Three.js macht das Benutzen von WebGL extrem einfacher. Außerdem bietet es nützliche Klassen, wie zum Beispiel den Raycaster, dem man einen Strahl übergibt und der damit beliebige Objekte schneidet und natürlich diese zurückliefert. Der Raycaster wird hier benutzt um die Pitoti-Figuren im &amp;quot;Map Mode&amp;quot; mit Mouseover und OnClick Events zu versehen. Im &amp;quot;Viewer Mode&amp;quot; wird der Schnittpunkt aus einem Strahl der vom Cursur ausgeht, dazu verwendet um die Maus-Lichtquelle zu positionieren.&lt;br /&gt;
&lt;br /&gt;
Aus CSS3 werden die Opacity für die Buttons, abgerundete Ecken und Farbverläufe benutzt. JQuery wird hauptsächlich für die Manipulation des DOM und für das anlegen von Event Listeners benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Modelle wurden von einem ursprünglichen hochauflösenden Obj-Modell, in Blender importiert und deren Komplexität verkleinert, sodass sie i.d.R. nicht größer sind als 2 MB. Zusätzlich werden sie in ein von Three.js verwendetes JSON-Format konvertiert. Es gibt zwar einen OBJ-Loader in Three.js, dieser ist aber extrem langsam, weil er wahrscheinlich intern genau diese Formatierung vornimmt. Durch die kleinen Modellen gehen natürlich Details verloren, aber nur so ist es möglich, das diese auch auf langsameren Rechnern flüssig angezeigt werden. Außerdem werden sie dadurch auch schneller geladen.&lt;br /&gt;
&lt;br /&gt;
Der Viewer läuft außerdem auch auf Tablets und dass sogar mit vollem Funktionsumfang. Getestet wurden auf einem Nexus 7 mit dem Chrome Browser.&lt;br /&gt;
&lt;br /&gt;
In Chrome scheint der Viewer generell besser zu laufen, so ruckelt er leicht in Firefox, ist aber noch gut benutzbar. Den Grund konnte ich leider nicht ausmachen.&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61038</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61038"/>
		<updated>2013-10-19T13:34:10Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera, können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
Die obere &amp;quot;Lichtbox&amp;quot; dient zur Manipulation von Lichtquellen. Dem Maus-Cursur folgt standardmäßig eine Punktlichtquelle, welche mit der mittleren Box an- und ausgeschaltet werden kann. Mit den Trapezen an der Seite, lassen sich Scheinwerfer-Lichtquellen (Directional Lights) hinzu- und wegschalten. Da die Figuren und Steine meist etwas gekrümmt sind, führt dies zu interessanten und unterschiedlichen Schattenwürfen.&lt;br /&gt;
&lt;br /&gt;
Der nächste Button weißt dem Modell ein neues Material mit einer Zufallsfarbe zu. In Verbindung mit den Lichtquellen entstehen somit Unterschiedliche Kontraste, so kann man mit manchen Farben Details besser wahrnehmen, als mit anderen.&lt;br /&gt;
&lt;br /&gt;
Der Lichtintensitäts Button darunter steuert die Größe/Intensität der Lichtquelle, welche dem Maus-Cursur folgt.&lt;br /&gt;
&lt;br /&gt;
In späteren Versionen könnte man die eben genannten Buttons als Slider implementieren, um Farbe und Lichtintensität intuitiver einzustellen.&lt;br /&gt;
&lt;br /&gt;
Der letzte Button, wurde als solcher deaktiviert und kann nur mit Druck auf die Leertaste ausgelöst werden. Dabei wird ein Screenshot des WebGL-Render-Inhalts erstellt und in einem neuen Tab geöffnet.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Desweiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. Einmal geladen, werden&lt;br /&gt;
die Modelle nur noch ausgetauscht, damit ist ein schneller und flüssiger Wechsel nach dem ersten Laden möglich.&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61037</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61037"/>
		<updated>2013-10-19T13:24:02Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen. Die Kamera lässt sich mit der Maus manipulieren (Zoomen, Rotation, Panning).&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View Mode kann man ein detailliertes Modell des Pitoti betrachten. &lt;br /&gt;
Zusätzlich zur Manipulation der Kamera, können noch Lichtquellen und Materialeigenschaften des Modells manipuliert werden. Dazu mehr im nächsten Abschnitt.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
Standardmäßig ist immer das erste Modell des jeweiligen Pitoti ausgewählt.&lt;br /&gt;
Der Benutzer kann insgesamt zwischen drei Modellen wählen: &amp;quot;Laserscan des Steins&amp;quot;, &amp;quot;isolierte Figur auf dem Stein&amp;quot; und &amp;quot;Skulptur&amp;quot;. Desweiteren gibt es noch einen Button um zurück zum &amp;quot;Map Mode&amp;quot; zu gelangen. &lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61036</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61036"/>
		<updated>2013-10-19T13:15:28Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|900px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61035</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61035"/>
		<updated>2013-10-19T13:15:10Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|550px]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|550px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61034</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61034"/>
		<updated>2013-10-19T13:14:55Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|350px]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png|350px]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61033</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61033"/>
		<updated>2013-10-19T13:13:40Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|upright=0.1]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61032</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61032"/>
		<updated>2013-10-19T13:13:18Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png|upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Controls2.png&amp;diff=61031</id>
		<title>File:Controls2.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Controls2.png&amp;diff=61031"/>
		<updated>2013-10-19T13:11:12Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:View_mode.png&amp;diff=61030</id>
		<title>File:View mode.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:View_mode.png&amp;diff=61030"/>
		<updated>2013-10-19T13:10:33Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Map_mode.png&amp;diff=61029</id>
		<title>File:Map mode.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Map_mode.png&amp;diff=61029"/>
		<updated>2013-10-19T13:09:28Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: uploaded a new version of &amp;amp;quot;File:Map mode.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61028</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61028"/>
		<updated>2013-10-19T13:06:38Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png]]&lt;br /&gt;
&lt;br /&gt;
===Funktionen===&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
==Technologien==&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
==Props==&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61027</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61027"/>
		<updated>2013-10-19T13:05:25Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png]]&lt;br /&gt;
&lt;br /&gt;
=Funktionen=&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:controls2.png]]&lt;br /&gt;
&lt;br /&gt;
===Hinweise und Sonstiges===&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
===Props===&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Controls.png&amp;diff=61026</id>
		<title>File:Controls.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Controls.png&amp;diff=61026"/>
		<updated>2013-10-19T13:03:32Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Map_mode.png&amp;diff=61025</id>
		<title>File:Map mode.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Map_mode.png&amp;diff=61025"/>
		<updated>2013-10-19T13:01:41Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Pitoti.png&amp;diff=61024</id>
		<title>File:Pitoti.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Pitoti.png&amp;diff=61024"/>
		<updated>2013-10-19T13:00:56Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61023</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61023"/>
		<updated>2013-10-19T13:00:19Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und das sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Viewer teilt sich in zwei Modi ein. Man startet zunächst im &amp;quot;Map Mode&amp;quot;, welcher ein photogrametrisches Modell eines größeren Steins enthält. Auf diesem Modell verteilt finden sich Figuren der Steinzeichnungen, welche auf den Felsen eingehauen wurden. Fährt man mit dem Curor über eine der Figuren, werden zusätzliche Informationen zu der zugehörigen Steinzeichnung angezeigt. Beim Klick auf die Figure wird der entsprechende View Mode geladen.&lt;br /&gt;
&lt;br /&gt;
[[Image:map_mode.png]]&lt;br /&gt;
&lt;br /&gt;
Im View &lt;br /&gt;
&lt;br /&gt;
[[Image:view_mode.png]]&lt;br /&gt;
&lt;br /&gt;
=Funktionen=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:controls.png]]&lt;br /&gt;
&lt;br /&gt;
==Hinweise und Sonstiges==&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
===Props===&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61022</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61022"/>
		<updated>2013-10-19T12:47:27Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer die für diese Daten geschaffen wurden, liefen nur auf vorher eingerichteten Rechnern und waren nur einen kleinen Personenkreis vorbehalten.&lt;br /&gt;
Ziel dieses Projekts war eine neue Art Viewer in WebGL zu konzipieren, sodass auch Laien diesen ohne komplizierte Einrichtung von externer Software benutzen können. Jeder mit einem WebGl fähigen Browser ist nun in der Lage sich die Figuren anzusehen und dass sogar auf mobilen Tablets. Außerdem sorgt eine intuitive Steuerung ohne viel Erklärung für eine einfache Benutzbarkeit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
===Props===&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61021</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61021"/>
		<updated>2013-10-19T12:40:49Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
===Props===&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61020</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61020"/>
		<updated>2013-10-19T12:40:31Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viewer==&lt;br /&gt;
&lt;br /&gt;
[[Image:pitoti.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
Im Rahmen des Digital Heritage EU-Projekts wurden in Val Camonica, in den italienischen Alpen, 5000 Jahre alte Steinzeichnungen genannt Pitoti, digitalisiert. Dies geschah unter anderem mit der Zusammenarbeit der Bauhaus-Universität Weimar und Archeologen aus Cambridge. Die Digitalisierung gescha vor allem mit 3D-Laserscanning und Photogrametrie. &lt;br /&gt;
&lt;br /&gt;
Die daraus resultierenden 3D-Modelle konnten daraufhin für vielfältige Anwendungen verwendet werden. Die Akquirierung der Daten, deren Verarbeitung und Verwendung, waren Gegenstand der Bachelorarbeit Marcel Karnapkes.&lt;br /&gt;
So wurden nicht nur die Oberflächen rekonstruierten Rohdaten des Steins verwendet, sondern auch neue &amp;quot;Skulpturen&amp;quot; aus den Daten modelliert.&lt;br /&gt;
&lt;br /&gt;
Bisherige Viewer &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;br /&gt;
&lt;br /&gt;
===Props===&lt;br /&gt;
Vielen Dank an Marcel Karnapke, welcher viele Ideen zur Konzeption des Pitoti Viewers und der Benutzeroberfläche beigesteuert hat.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Toolchain.png&amp;diff=61019</id>
		<title>File:Toolchain.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Toolchain.png&amp;diff=61019"/>
		<updated>2013-10-19T12:16:21Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: Auszug aus Bachelorarbeit von Marcel Karnapke&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Auszug aus Bachelorarbeit von Marcel Karnapke&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
Copyright by Marcel Karnapke&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61018</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61018"/>
		<updated>2013-10-19T12:14:29Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viwer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
[[Image:toolchain.png]]&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61017</id>
		<title>IFD:Web Advanced II SS13/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Felix_Trojan&amp;diff=61017"/>
		<updated>2013-10-19T12:01:49Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: Created page with &amp;quot;==Pitoti Viwer==   ==Idee und Motivation==   ==Aufbau==    ===Technologien=== *three.js *jquery *CSS3&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pitoti Viwer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*three.js&lt;br /&gt;
*jquery&lt;br /&gt;
*CSS3&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=61016</id>
		<title>User:Azzaroff</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=61016"/>
		<updated>2013-10-19T11:59:05Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projekte =&lt;br /&gt;
* [[IFD:WebApps/Felix Trojan|Friend Carpet]]&lt;br /&gt;
* [[IFD:Web_Advanced_II_SS13/Felix Trojan|Pitoti Viewer]]&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58536</id>
		<title>User:Azzaroff</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58536"/>
		<updated>2013-06-14T15:00:39Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projekte =&lt;br /&gt;
* [[IFD:WebApps/Felix Trojan|Friend Carpet]]&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58535</id>
		<title>User:Azzaroff</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58535"/>
		<updated>2013-06-14T15:00:29Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projekte =&lt;br /&gt;
** [[IFD:WebApps/Felix Trojan|Friend Carpet]]&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58534</id>
		<title>User:Azzaroff</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58534"/>
		<updated>2013-06-14T15:00:15Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Projekte =&lt;br /&gt;
&lt;br /&gt;
[[IFD:WebApps/Felix Trojan|Friend Carpet]]&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58533</id>
		<title>User:Azzaroff</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=User:Azzaroff&amp;diff=58533"/>
		<updated>2013-06-14T14:54:17Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here be Dragons.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Kursplan_Web_Advanced_II&amp;diff=58532</id>
		<title>IFD:Web Advanced II SS13/Kursplan Web Advanced II</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Kursplan_Web_Advanced_II&amp;diff=58532"/>
		<updated>2013-06-14T14:52:58Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;08.04.2013&#039;&#039;&#039;&lt;br /&gt;
* Einführungsveranstaltung&lt;br /&gt;
** [[Media:20130408_web_adv_II_introduction.pdf|Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15. 04.2013&#039;&#039;&#039;&lt;br /&gt;
* Vektor / Bitmap, Piktogramme und Icons  I&lt;br /&gt;
** [[Media:20130415_web_advanced_II_material.pdf|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** Colorhandling&lt;br /&gt;
** Snippettools&lt;br /&gt;
** [[Media:20130415_web_modul_toolthemen_color_snippets.zip|Toolthemen]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;22.04.2013&#039;&#039;&#039;&lt;br /&gt;
* Piktogramme und Icons II, CSS3 Fonts vs. SVG&lt;br /&gt;
** [[Media:20130421_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** responsives Webdesign (Ditmar)&lt;br /&gt;
** Animierte Gif (Christian)&lt;br /&gt;
** [[Media:20130421_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;29.04.2013&#039;&#039;&#039;&lt;br /&gt;
* XML &amp;amp; SVG&lt;br /&gt;
** [[Media:20130429_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** CSS Preprocessors (Benjamin)&lt;br /&gt;
** Zeichen Frameworks: [[Media:paperJS.zip|paper.js]](Alex)&lt;br /&gt;
** [[Media:20130429_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;06.05.2013&#039;&#039;&#039;&lt;br /&gt;
* fällt aus (Workshop)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13.05.2013&#039;&#039;&#039;&lt;br /&gt;
* SVG II&lt;br /&gt;
** [[Media:20130513_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** Prototyping&lt;br /&gt;
** Editoren&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;20.05.2013&#039;&#039;&#039;&lt;br /&gt;
* fällt aus (Feiertag)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.05.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment I&lt;br /&gt;
** [[Media:20130527_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthema&lt;br /&gt;
** Templating Lösungen&lt;br /&gt;
&#039;&#039;&#039;03.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Zwischenpräsentation – Einzeltermine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10.06.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment II&lt;br /&gt;
** [[Media:20130610_web_advanced_II_material.zip|Material]]&lt;br /&gt;
** [http://www.blender.org/download/get-blender/ Blender]]&lt;br /&gt;
** [https://github.com/mrdoob/three.js/ ThreeJs Lib &amp;amp; Examples]]&lt;br /&gt;
** [[Media:20130610_web_advanced_II_workaround.zip|Workaround]]&lt;br /&gt;
* Toolthema&lt;br /&gt;
** [[Media:Js_validierung_kompression_obfuscation.pdf|JS: Validierung, Komprimierung, Obfuscation (Felix)]]&lt;br /&gt;
** [[Media:20130610_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17.06.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment III&lt;br /&gt;
* Toolthema&lt;br /&gt;
** MVC, Backbone.js/Ember (Jan)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;24.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Arbeitsprozesse Webentwickler / -designer I&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;01.07.2013&#039;&#039;&#039;&lt;br /&gt;
* Arbeitsprozesse Webentwickler / -designer II&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;08.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Kursinterne Zwischenpräsentation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freitag, 12. Juli 2013, ab 15:30 Uhr&#039;&#039;&#039;&lt;br /&gt;
* Endpräsentation Showreel (Belvederer Allee 5, Raum 007)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;30.09.2013&#039;&#039;&#039;&lt;br /&gt;
* Projektabgabe (offene Sourcefiles + gehostet Webprojekt)&lt;br /&gt;
&lt;br /&gt;
==...auch interessant==&lt;br /&gt;
* Urheberrecht –  [https://upload.wikimedia.org/wikipedia/commons/d/db/Licensing_tutorial_de.svg was darf ich hochladen]? (Bei Wikimedia Commons)&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Kursplan_Web_Advanced_II&amp;diff=58531</id>
		<title>IFD:Web Advanced II SS13/Kursplan Web Advanced II</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Kursplan_Web_Advanced_II&amp;diff=58531"/>
		<updated>2013-06-14T14:51:27Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;08.04.2013&#039;&#039;&#039;&lt;br /&gt;
* Einführungsveranstaltung&lt;br /&gt;
** [[Media:20130408_web_adv_II_introduction.pdf|Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15. 04.2013&#039;&#039;&#039;&lt;br /&gt;
* Vektor / Bitmap, Piktogramme und Icons  I&lt;br /&gt;
** [[Media:20130415_web_advanced_II_material.pdf|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** Colorhandling&lt;br /&gt;
** Snippettools&lt;br /&gt;
** [[Media:20130415_web_modul_toolthemen_color_snippets.zip|Toolthemen]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;22.04.2013&#039;&#039;&#039;&lt;br /&gt;
* Piktogramme und Icons II, CSS3 Fonts vs. SVG&lt;br /&gt;
** [[Media:20130421_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** responsives Webdesign (Ditmar)&lt;br /&gt;
** Animierte Gif (Christian)&lt;br /&gt;
** [[Media:20130421_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;29.04.2013&#039;&#039;&#039;&lt;br /&gt;
* XML &amp;amp; SVG&lt;br /&gt;
** [[Media:20130429_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** CSS Preprocessors (Benjamin)&lt;br /&gt;
** Zeichen Frameworks: [[Media:paperJS.zip|paper.js]](Alex)&lt;br /&gt;
** [[Media:20130429_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;06.05.2013&#039;&#039;&#039;&lt;br /&gt;
* fällt aus (Workshop)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13.05.2013&#039;&#039;&#039;&lt;br /&gt;
* SVG II&lt;br /&gt;
** [[Media:20130513_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** Prototyping&lt;br /&gt;
** Editoren&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;20.05.2013&#039;&#039;&#039;&lt;br /&gt;
* fällt aus (Feiertag)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.05.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment I&lt;br /&gt;
** [[Media:20130527_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthema&lt;br /&gt;
** Templating Lösungen&lt;br /&gt;
&#039;&#039;&#039;03.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Zwischenpräsentation – Einzeltermine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10.06.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment II&lt;br /&gt;
** [[Media:20130610_web_advanced_II_material.zip|Material]]&lt;br /&gt;
** [http://www.blender.org/download/get-blender/ Blender]]&lt;br /&gt;
** [https://github.com/mrdoob/three.js/ ThreeJs Lib &amp;amp; Examples]]&lt;br /&gt;
** [[Media:20130610_web_advanced_II_workaround.zip|Workaround]]&lt;br /&gt;
* Toolthema&lt;br /&gt;
** [[Media:Js_validierung_kompression_obfuscation.pdf|JS: Validierung, Komprimieren, Encrypten (Felix)]]&lt;br /&gt;
** [[Media:20130610_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17.06.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment III&lt;br /&gt;
* Toolthema&lt;br /&gt;
** MVC, Backbone.js/Ember (Jan)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;24.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Arbeitsprozesse Webentwickler / -designer I&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;01.07.2013&#039;&#039;&#039;&lt;br /&gt;
* Arbeitsprozesse Webentwickler / -designer II&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;08.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Kursinterne Zwischenpräsentation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freitag, 12. Juli 2013, ab 15:30 Uhr&#039;&#039;&#039;&lt;br /&gt;
* Endpräsentation Showreel (Belvederer Allee 5, Raum 007)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;30.09.2013&#039;&#039;&#039;&lt;br /&gt;
* Projektabgabe (offene Sourcefiles + gehostet Webprojekt)&lt;br /&gt;
&lt;br /&gt;
==...auch interessant==&lt;br /&gt;
* Urheberrecht –  [https://upload.wikimedia.org/wikipedia/commons/d/db/Licensing_tutorial_de.svg was darf ich hochladen]? (Bei Wikimedia Commons)&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Js_validierung_kompression_obfuscation.pdf&amp;diff=58530</id>
		<title>File:Js validierung kompression obfuscation.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Js_validierung_kompression_obfuscation.pdf&amp;diff=58530"/>
		<updated>2013-06-14T14:50:40Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: Vortrag über JS-Validierung/Kompression/Obfuscaition&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Vortrag über JS-Validierung/Kompression/Obfuscaition&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
Macht damit was ihr wollt :-)&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Kursplan_Web_Advanced_II&amp;diff=58529</id>
		<title>IFD:Web Advanced II SS13/Kursplan Web Advanced II</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:Web_Advanced_II_SS13/Kursplan_Web_Advanced_II&amp;diff=58529"/>
		<updated>2013-06-14T14:46:00Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;08.04.2013&#039;&#039;&#039;&lt;br /&gt;
* Einführungsveranstaltung&lt;br /&gt;
** [[Media:20130408_web_adv_II_introduction.pdf|Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15. 04.2013&#039;&#039;&#039;&lt;br /&gt;
* Vektor / Bitmap, Piktogramme und Icons  I&lt;br /&gt;
** [[Media:20130415_web_advanced_II_material.pdf|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** Colorhandling&lt;br /&gt;
** Snippettools&lt;br /&gt;
** [[Media:20130415_web_modul_toolthemen_color_snippets.zip|Toolthemen]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;22.04.2013&#039;&#039;&#039;&lt;br /&gt;
* Piktogramme und Icons II, CSS3 Fonts vs. SVG&lt;br /&gt;
** [[Media:20130421_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** responsives Webdesign (Ditmar)&lt;br /&gt;
** Animierte Gif (Christian)&lt;br /&gt;
** [[Media:20130421_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;29.04.2013&#039;&#039;&#039;&lt;br /&gt;
* XML &amp;amp; SVG&lt;br /&gt;
** [[Media:20130429_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** CSS Preprocessors (Benjamin)&lt;br /&gt;
** Zeichen Frameworks: [[Media:paperJS.zip|paper.js]](Alex)&lt;br /&gt;
** [[Media:20130429_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;06.05.2013&#039;&#039;&#039;&lt;br /&gt;
* fällt aus (Workshop)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13.05.2013&#039;&#039;&#039;&lt;br /&gt;
* SVG II&lt;br /&gt;
** [[Media:20130513_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthemen&lt;br /&gt;
** Prototyping&lt;br /&gt;
** Editoren&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;20.05.2013&#039;&#039;&#039;&lt;br /&gt;
* fällt aus (Feiertag)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.05.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment I&lt;br /&gt;
** [[Media:20130527_web_advanced_II_material.zip|Material]]&lt;br /&gt;
* Toolthema&lt;br /&gt;
** Templating Lösungen&lt;br /&gt;
&#039;&#039;&#039;03.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Zwischenpräsentation – Einzeltermine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10.06.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment II&lt;br /&gt;
** [[Media:20130610_web_advanced_II_material.zip|Material]]&lt;br /&gt;
** [http://www.blender.org/download/get-blender/ Blender]]&lt;br /&gt;
** [https://github.com/mrdoob/three.js/ ThreeJs Lib &amp;amp; Examples]]&lt;br /&gt;
** [[Media:20130610_web_advanced_II_workaround.zip|Workaround]]&lt;br /&gt;
* Toolthema&lt;br /&gt;
** [[Media:20130610_web_advanced_II_toolthemen.zip|JS: Validierung, Komprimieren, Encrypten (Felix)]]&lt;br /&gt;
** [[Media:20130610_web_advanced_II_toolthemen.zip|Toolthemen Material]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17.06.2013&#039;&#039;&#039;&lt;br /&gt;
* 3D WebDevelopment III&lt;br /&gt;
* Toolthema&lt;br /&gt;
** MVC, Backbone.js/Ember (Jan)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;24.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Arbeitsprozesse Webentwickler / -designer I&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;01.07.2013&#039;&#039;&#039;&lt;br /&gt;
* Arbeitsprozesse Webentwickler / -designer II&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;08.06.2013&#039;&#039;&#039;&lt;br /&gt;
* Kursinterne Zwischenpräsentation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freitag, 12. Juli 2013, ab 15:30 Uhr&#039;&#039;&#039;&lt;br /&gt;
* Endpräsentation Showreel (Belvederer Allee 5, Raum 007)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;30.09.2013&#039;&#039;&#039;&lt;br /&gt;
* Projektabgabe (offene Sourcefiles + gehostet Webprojekt)&lt;br /&gt;
&lt;br /&gt;
==...auch interessant==&lt;br /&gt;
* Urheberrecht –  [https://upload.wikimedia.org/wikipedia/commons/d/db/Licensing_tutorial_de.svg was darf ich hochladen]? (Bei Wikimedia Commons)&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26269</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26269"/>
		<updated>2011-04-17T13:19:08Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Anhang: Crawling Magic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_mobil3.png|200px]] [[Image:Fc_mobil2.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für Interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur der funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ausloggen am Ende ist sehr wichtig, andernfalls kann es dazu führen dass bei schnellen wiederholten Anfragen StudiVZ einem Captchas wesentlich schneller aufzwingt und man dadurch nicht richtig angemeldet wird.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26268</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26268"/>
		<updated>2011-04-17T13:18:33Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Anhang: Crawling Magic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_mobil3.png|200px]] [[Image:Fc_mobil2.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für Interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ausloggen am Ende ist sehr wichtig, andernfalls kann es dazu führen dass bei schnellen wiederholten Anfragen StudiVZ einem Captchas wesentlich schneller aufzwingt und man dadurch nicht richtig angemeldet wird.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26267</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26267"/>
		<updated>2011-04-17T13:15:36Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Friend Carptet auf mobilen Geräten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_mobil3.png|200px]] [[Image:Fc_mobil2.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ausloggen am Ende ist sehr wichtig, andernfalls kann es dazu führen dass bei schnellen wiederholten Anfragen StudiVZ einem Captchas wesentlich schneller aufzwingt und man dadurch nicht richtig angemeldet wird.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26266</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26266"/>
		<updated>2011-04-17T13:15:24Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Erfahrungen und Fazit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ausloggen am Ende ist sehr wichtig, andernfalls kann es dazu führen dass bei schnellen wiederholten Anfragen StudiVZ einem Captchas wesentlich schneller aufzwingt und man dadurch nicht richtig angemeldet wird.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26265</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26265"/>
		<updated>2011-04-17T13:11:24Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Erfahrungen und Fazit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_mobil3.png|200px]] [[Image:Fc_mobil2.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ausloggen am Ende ist sehr wichtig, andernfalls kann es dazu führen dass bei schnellen wiederholten Anfragen StudiVZ einem Captchas wesentlich schneller aufzwingt und man dadurch nicht richtig angemeldet wird.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Fc_mobil3.png&amp;diff=26264</id>
		<title>File:Fc mobil3.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Fc_mobil3.png&amp;diff=26264"/>
		<updated>2011-04-17T13:10:46Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: FC auf dem Defy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
FC auf dem Defy&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26263</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26263"/>
		<updated>2011-04-17T13:10:16Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Erfahrungen und Fazit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_mobil2.png]] [[Image:Fc_mobil3.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ausloggen am Ende ist sehr wichtig, andernfalls kann es dazu führen dass bei schnellen wiederholten Anfragen StudiVZ einem Captchas wesentlich schneller aufzwingt und man dadurch nicht richtig angemeldet wird.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Fc_mobil2.png&amp;diff=26262</id>
		<title>File:Fc mobil2.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Fc_mobil2.png&amp;diff=26262"/>
		<updated>2011-04-17T13:09:01Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: FC auf dem Defy login&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
FC auf dem Defy login&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|c}}&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26261</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26261"/>
		<updated>2011-04-17T12:42:21Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Anhang: Crawling Magic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ausloggen am Ende ist sehr wichtig, andernfalls kann es dazu führen dass bei schnellen wiederholten Anfragen StudiVZ einem Captchas wesentlich schneller aufzwingt und man dadurch nicht richtig angemeldet wird.&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26260</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26260"/>
		<updated>2011-04-17T12:40:07Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Anhang: Crawling Magic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26259</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26259"/>
		<updated>2011-04-17T12:39:03Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Anhang: Crawling Magic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
Für interessierte hier einmal wie ich StudiVZ crawle.&lt;br /&gt;
Facebook funktioniert ziemlich analog, davon findet man auch genug wenn man mal danach googelt. Bei Facebook crawle ich übrigens die Mobile-Version, weil ich kein Javascript unterstützen kann. Es gibt zwar eine Art &amp;quot;noscript-Flag&amp;quot; als GET-Request, nur das funktioniert nicht mehr allzu gut. &lt;br /&gt;
Außerdem ist die Mobile Seite wesentlich schneller abzufragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
$ch = curl_init();&lt;br /&gt;
 curl_setopt($ch, CURLOPT_URL, &#039;https://secure.studivz.net/Login&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POSTFIELDS,&#039;email=&#039;.urlencode($login_email).&#039;&amp;amp;password=&#039;.urlencode($login_pass).&#039;&amp;amp;ipRestriction=1&amp;amp;login=Einloggen&amp;amp;jsEnabled=true&amp;amp;formkey=156b5e49efad4132cbe29d20939778376b0a44edc7d74fac47862a82338411a65dc24b586321a542bf7f95592a0371913275f9ceb9708e99bff5c0192f70bfaeccd6cd59c304bda62e9cd2a835ff7786a5ac330bc6a74baa9a177ce9ee6f2cad&amp;amp;iv=8419a4452f139ba570dd856be3b1c522&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_POST, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
 curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
 $html = curl_exec($ch);&lt;br /&gt;
 $err = 0;&lt;br /&gt;
 $err = curl_errno($ch); &lt;br /&gt;
 curl_close($ch);&lt;br /&gt;
&lt;br /&gt;
if ($err == 0){&lt;br /&gt;
	sleep(2); &lt;br /&gt;
	//Get Friend Link&lt;br /&gt;
	$dom = new DOMDocument();&lt;br /&gt;
	@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
	$xpath = new DOMXPath($dom);&lt;br /&gt;
	$links = $xpath-&amp;gt;query(&amp;quot;/html/body//a[@title=&#039;Meine Freunde&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if(($links-&amp;gt;length) &amp;gt; 0) {	&lt;br /&gt;
		$hash = $links-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
		preg_match(&amp;quot;/\/Friends\/All\/(.*)\/tid\/103/&amp;quot;, $hash, $matches);&lt;br /&gt;
		$hash = $matches[1]; &lt;br /&gt;
		&lt;br /&gt;
		$logout = $xpath-&amp;gt;query(&amp;quot;//a[text()=&#039;Raus hier&#039;]&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	//get Friends&lt;br /&gt;
	for ($j = 1; $j &amp;lt; $limit; $j++) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net/Friends/All/&#039;.$hash.&#039;/p/&#039;.$j);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/sv_cookies.txt&#039;);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 	curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
		$html = curl_exec($ch);&lt;br /&gt;
	&lt;br /&gt;
	 	curl_close($ch);&lt;br /&gt;
		//create DOM object&lt;br /&gt;
		$dom = new DOMDocument();&lt;br /&gt;
		@$dom-&amp;gt;loadHTML($html);&lt;br /&gt;
		//use xpath to find stuff&lt;br /&gt;
		$xpath = new DOMXPath($dom);&lt;br /&gt;
		$imgs = $xpath-&amp;gt;query(&amp;quot;/html/body//img&amp;quot;);&lt;br /&gt;
	   //$title = $dom-&amp;gt;getElementsByTagName(&#039;title&#039;);&lt;br /&gt;
		//$title = $title-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
		//create img tags&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $imgs-&amp;gt;length; $i++) {&lt;br /&gt;
			$img = $imgs-&amp;gt;item($i);&lt;br /&gt;
			$img_str = &amp;quot;&amp;lt;img src=&#039;../phpthumb/phpThumb.php?src=&amp;quot;.substr_replace($img-&amp;gt;getAttribute(&amp;quot;src&amp;quot;), &amp;quot;.jpg&amp;quot;, -6).&amp;quot;&amp;amp;w=170&amp;amp;h=170&amp;amp;zc=1&#039; &amp;quot;;&lt;br /&gt;
			if(strpos($img_str,&amp;quot;imagevz.net&amp;quot;)){&lt;br /&gt;
				$name = $img-&amp;gt;getAttribute(&amp;quot;alt&amp;quot;);&lt;br /&gt;
				$profileLink = $img-&amp;gt;parentNode-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
			echo &amp;quot;&amp;lt;div class=&#039;friend&#039;&amp;gt;&amp;lt;a href=&#039;http://www.studivz.net&amp;quot;.$profileLink.&amp;quot;&#039; target=”_blank”&amp;gt;&lt;br /&gt;
					&amp;quot;.$img_str.&amp;quot;alt=&#039;&amp;quot;.$name.&amp;quot;&#039;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&#039;friend_txt&#039;&amp;gt;				&lt;br /&gt;
						&amp;lt;p&amp;gt;&amp;quot;.$name.&amp;quot;&amp;lt;br&amp;gt;StudiVZ&amp;lt;br&amp;gt;&amp;quot;.$login_email.&amp;quot;&amp;lt;/p&amp;gt;			&lt;br /&gt;
					&amp;lt;/div&amp;gt; &lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	  &lt;br /&gt;
	  if(($logout-&amp;gt;length) &amp;gt; 0){ &lt;br /&gt;
	      $logout = $logout-&amp;gt;item(0)-&amp;gt;getAttribute(&amp;quot;href&amp;quot;);&lt;br /&gt;
	      $ch = curl_init();&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_URL, &#039;http://www.studivz.net&#039;.$logout);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace(&#039;\\&#039;,&#039;/&#039;,dirname(__FILE__)).&#039;/fb_cookies.txt&#039;);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;
	 		curl_setopt($ch, CURLOPT_USERAGENT, &amp;quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)&amp;quot;);&lt;br /&gt;
	 		curl_exec($ch);&lt;br /&gt;
	 		curl_close($ch);&lt;br /&gt;
	  }&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
  	//if no links found&lt;br /&gt;
  	echo &amp;quot;&amp;lt;p&amp;gt;Could not find any friends for &amp;quot;.$login_email.&amp;quot;, maybe wrong password or email!&amp;lt;p&amp;gt;&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26258</id>
		<title>IFD:WebApps/Felix Trojan</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=IFD:WebApps/Felix_Trojan&amp;diff=26258"/>
		<updated>2011-04-17T12:32:06Z</updated>

		<summary type="html">&lt;p&gt;Azzaroff: /* Anhang: Crawling Magic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Friend Carpet==&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_logo.png]]&lt;br /&gt;
&lt;br /&gt;
==Idee und Motivation==&lt;br /&gt;
Social Networks erfreuen sich immer größerer Beliebtheit. Je nach Region,&lt;br /&gt;
Hobbies, Popularität, Beruf oder Karriere kann man das für sich passende Netzwerk auswählen. Dabei komm es häufig vor, dass Freunde oder Bekannte andere Netzwerke bevorzugen als man selbst, was oft dazu führt das man in mehreren Social Networks anmeldet und nicht überall die selben Freunde hat.&lt;br /&gt;
Bei der Webanwendung &amp;quot;Friend Carpet&amp;quot; geht es zum einen darum eine Brücke zwischen diesen verschiedenen Netzwerken zu schlagen, indem ein virtueller Teppich dessen Flicken Bilder von Freunden aus Netzwerken verschiedener Accounts bestehen.&lt;br /&gt;
Zum anderen geht es um eine andere Art seine Freundeskreis zu betrachten und spielerisch zu entdecken.&lt;br /&gt;
&lt;br /&gt;
==Aufbau==&lt;br /&gt;
&lt;br /&gt;
Der Grundlegende Ablauf:&lt;br /&gt;
#Login Daten für 1-n Accounts in 1-m Netzwerken abfragen&lt;br /&gt;
##es können sich auch mehrere Accounts im selben Netzwerk befinden&lt;br /&gt;
#einen Account auswählen und dessen Freunde crawlen&lt;br /&gt;
#für jeden ermittelten Freund Profil-Link und Profilbild URL extrahieren&lt;br /&gt;
##eventuell Qualität der Bilder anpassen&lt;br /&gt;
#Div-Container mit Bild,Link und sonstigen Informationen generieren und ausgeben &lt;br /&gt;
#1-4 solange wiederholen bis alle Accounts abgearbeitet sind&lt;br /&gt;
&lt;br /&gt;
===Technologien===&lt;br /&gt;
*HTML4.1&lt;br /&gt;
*PHP (crawlen der Netzwerke und generieren des Teppichs)&lt;br /&gt;
*JavaScript (auf Usereingaben zu reagieren)&lt;br /&gt;
*Lampp (Apache Webserver mit PHP)&lt;br /&gt;
*phpThumb (PHP Library zur Bildmanipulation)&lt;br /&gt;
*cURL Unterstützung für PHP(umfangreiche HTTP Anfragen zum crawlen + CookieJar)&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_login_form.png]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer wird begrüßt mit dem &amp;quot;Friend Carpet&amp;quot;-Logo und einer Login Box.&lt;br /&gt;
Dort kann er für ein bestimmtes Netzwerk(im momment Facebook oder StudiVZ) seine&lt;br /&gt;
Login-Daten eingeben und per &amp;quot;add&amp;quot;-Button in eine Liste einfügen. Dies kann beliebig oft wiederholt werden um mehrere Accounts und Netzwerke in die Erstellung des Teppichs einfließen zu lassen. Ist der Nutzer zufrieden mit &lt;br /&gt;
der Zusammenstellung kann er mit &amp;quot;Create Carpet&amp;quot; seinen persöhnlich Teppich erstellen lassen.&lt;br /&gt;
&lt;br /&gt;
===Carpet und Interaktion===&lt;br /&gt;
&lt;br /&gt;
[[Image:Fc_carpet.png|600px|]]&lt;br /&gt;
&lt;br /&gt;
Der Nutzer kann den direkten Aufbau des Carpets(je nach Internetverbindung nun miterleben). Sollten die Login-Daten nicht korrekt sein, wird der Nutzer darauf hingewiesen, sind in der Liste aber korrekte Daten neben inkorrekten enthalten werden die korrekten trotzdem verarbeitet und angezeigt. Nach dem Aufbau stehen dem Nutzer einige Interaktionsmöglichkeiten zur Verfügung. Bei einem Mouseover über ein Profilbild erhält er zusätzliche Information zur Person(Name, Netzwerk, Account unter dem er gefunden wurde). Bei einen Klick auf ein Pofilbild wird die entsprechende Profilseite des zugehörigen Netzwerkes in einer neuen Browserseite bzw. Tab aufgerufen. Weiterhin ist es möglich die Größe der Profilbilder zu ändern. Die Profilbilder werden auf ein bestimmtes Format &amp;quot;zugeschnitten&amp;quot;, was manchmal dazu führt, dass man nicht das komplette Bild sieht, deshalb gibt es die Option das originale Bildverhältnis für alle Bilder anzuzeigen. Weiterhin gibt es ein Suchfeld, welches die Bilder während der Eingabe filtern kann. Der Teppich reduziert sich auf die Profilnamen die Teile der Eingabe enthalten.&lt;br /&gt;
&lt;br /&gt;
===Friend Carptet auf mobilen Geräten===&lt;br /&gt;
&lt;br /&gt;
Auf mobilen Geräten läuft &amp;quot;Friend Carpet&amp;quot; ohne Probleme. Getestet wurde mit&lt;br /&gt;
einem Motorola Defy(Display 480x854) und mit dem Emulator aus dem Android SDK.&lt;br /&gt;
CSS wurde mit &#039;&#039;&#039;&#039;&#039;@media only screen and (max-device-width: 480px)&#039;&#039;&#039;&#039;&#039; angepasst. Das Login-Feld sowie der Carpet selbst werden auf komplette Breite des mobilen Geräts angeglichen. Das Einzige was nicht funktioniert ist die Anzeige der Infobox bei einem Mouseover.&lt;br /&gt;
&lt;br /&gt;
===Erfahrungen und Fazit===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Friend Carpet&amp;quot; habe ich einigen Leuten vorgeführt und die meisten fanden die Idee cool und haben einige Zeit mit dem erkunden des Carpets verbracht.Ich denke mit vielleicht noch ein paar mehr Features könnte man es so ins Netz stellen. Nur leider wäre das dass Problem mit den Nutzungsbedingungen der Betreiber der sozialen Netzwerke, die i.d.R. verbieten nämlich die automatische Durchsuchung ihrer Seiten. Manche bieten zwar APIs an, aber man ist dann gezwungen deren Interfaces zu benutzen, die nicht unbedingt das tun was man möchte. Einzige Möglichkeit wäre eine Art Lizenz für diese Art der Nutzung zu bekommen, ich fürchte aber so etwas wird sehr teuer oder garnicht erst angeboten. Was mich noch gestört hat, ist dass man an der Uni zwar relativ einfach PHP-Unterstützung bekommt, aber keine speziellen Apache-Module oder Apache-Versionen. So musste ich das Projekt privat hosten, was schade ist, weil ich es gerne als Anregung präsentiert hätte.&lt;br /&gt;
&lt;br /&gt;
===Anhang: Crawling Magic===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;lol&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Azzaroff</name></author>
	</entry>
</feed>