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

<channel>
	<title>gironimo.org</title>
	<atom:link href="http://www.gironimo.org/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gironimo.org</link>
	<description>there&#039;s nothing left to say...</description>
	<lastBuildDate>Wed, 25 Jan 2012 16:32:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Web 3.0 &#8211; Das semantische Web</title>
		<link>http://www.gironimo.org/webentwicklung/web-3-0-das-semantische-web.html</link>
		<comments>http://www.gironimo.org/webentwicklung/web-3-0-das-semantische-web.html#comments</comments>
		<pubDate>Wed, 25 Jan 2012 16:32:11 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[Logik]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web 3.0]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1504</guid>
		<description><![CDATA[Um dieses mal dubiosen Internetseiten entgegenzuwirken, veröffentliche ich meine Studienarbeit zum Thema Web 3.0 gleich selbst. Wer sich das Dokument gerne als PDF anschauen möchte, kann dies hier downloaden.Wer mag, kann sich die Präsentationsfolien gleich mit besorgen. Zur Ausarbeitung sei gesagt, das dies einen derzeitigen...]]></description>
			<content:encoded><![CDATA[<p>Um dieses mal dubiosen Internetseiten entgegenzuwirken, veröffentliche ich meine Studienarbeit zum Thema <strong>Web 3.0</strong> gleich selbst. Wer sich das Dokument gerne als PDF anschauen möchte, kann dies hier <a href="/wp-content/uploads/2012/01/Web-3.0-Ausarbeitung.pdf">downloaden</a>.Wer mag, kann sich die <a title="Web 3.0 Präsentation" href="/wp-content/uploads/2012/01/Web-3.0.pdf">Präsentationsfolien</a> gleich mit besorgen. Zur Ausarbeitung sei gesagt, das dies einen derzeitigen Standpunkt der Forschung darstellt und keinesfalls den Anspruch auf Vollständigkeit erhebt. Ich habe die Ausarbeitung mit bestem Gewissen erledigt, bitte jedoch alle die sich mit Thema auskennen, mir Feedback zu geben.</p>
<h3>1. Die Evolution des Webs</h3>
<p>Das Web enstand 1989 als Projekt am CERN bei Genf (Schweiz), an dem <strong>Tim-Berners-Lee</strong> ein Hypertext-System aufbaute. Das ursprüngliche Ziel des Systems was es, Forschungsergebnisse auf einfache Art und Weise mit Kollegen auszutauschen. Eine Methode dafür war „Verflechten“ von wissenschafftlichen Artikeln – also das Erstellen eines <strong>Webs</strong>. In Berners-Lees eigenen Worten:</p>
<blockquote><p>„The World Wide Web (W3) is a wide-area hypermedie information retrieval initiative aming to give universal acces to a large universe of documents.“</p></blockquote>
<blockquote><p>„Das World Wide Web ist eine großräumige Hypermedia-Initiative zur Informationsbeschaffung mit dem Ziel, den allgemeinen Zugang zu einer großen Sammlung von Dokumenten zu erlauben.“</p></blockquote>
<p><em>- TIM BERNERS-LEE</em></p>
<p>Das World Wide Web baut auf einem freien Protokoll auf, was die Entwicklung von Servern und Clients ohne Beschränkungen durch Lizenzen möglich machte. Tim Berners-Lee machte das <strong>World Wide Web-Projekt</strong> am 6. August 1991 mit einem Beitrag zur Newsgroup <a href="http://groups.google.com/group/alt.hypertext/msg/395f282a67a1916c">alt.hypertext</a> öffentlich und weltweit verfügbar.</p>
<h4>1.1 Web 1.0</h4>
<p>Anfangs bestand das Web aus einfachen Webseiten, die Informationen lieferten. Diese Dokumente waren zum Anschauen gedacht. Die Webseiten selbst hatten so gut wie keine Interaktion mit dem Besucher der Webseite. Das Web war statisch.</p>
<p>Web 1.0, oder einfach Web, bezieht sich auf die erste Stufe des World Wide Webs seit dessen Veröffentlichung, das Webseiten mittels <strong>Hyperlinks</strong> verbindet.</p>
<p>Bis zur so genannten <a href="http://de.wikipedia.org/wiki/Dotcom-Blase">Dot-Com-Blase</a> 2001, blieb das Web weitestgehend in dieser Form bestand. Es wurden lediglich etwas mehr Interaktionsmöglichkeiten für Besucher bedacht, etwa Gästebucher auf Webseiten.</p>
<p>Auswahl einiger Web 1.0 Design Elemente:</p>
<ul>
<li>Statische Seiten anstelle von Benutzer generiertem Inhalt</li>
<li>Verwendung von Framesets</li>
<li>Verwendung von Tabellen zum Positionieren und Ausrichten der Elemente auf der Webseite</li>
<li>Properitäre HTML-Erweiterungen (z.B.: <code>&lt;marquee&gt;</code>, <code>&lt;blink&gt;</code>)</li>
<li>Online Gästebucher</li>
<li>Verwendung von vielen GIF Animationen</li>
<li>Formulare, die per E-Mail gesendet wurden</li>
</ul>
<h4>1.2 Web 2.0</h4>
<p>Nach der <strong>Dot-Com-Blase</strong> entwickelte sich das Web weiter. Angetrieben von neuen und teilweise auch etwas älteren IT- &amp; Webfirmen rückte der Besucher der Webseite immer mehr in den Vordergrund und wurde schließlich Benutzer.</p>
<div id="attachment_1505" class="wp-caption alignright" style="width: 370px"><a href="http://www.gironimo.org/wp-content/uploads/2012/01/Web20en.png"><img class=" wp-image-1505  " title="Web20en" src="http://www.gironimo.org/wp-content/uploads/2012/01/Web20en.png" alt="Web 2.0 Tagcloud" width="360" height="240" /></a><p class="wp-caption-text">Abbildung 1: Diese Tagcloud zeigt die Prinzipien des Web 2.0. Sie wurde von Markus Angermeier am 11. November 2005 veröffentlicht.</p></div>
<p>Der Begriff <strong>Web 2.0</strong> grenzt die interaktiven Nutzungsarten vom Web 1.0 ab, in dem es nur wenige „Bearbeiter“ (Personen und Organisationen, die Inhalte für das Web erstellten oder Informationen bereitstellten), aber zahlreiche „Benutzer“ (Konsumenten, welche die bereitgestellten Inhalte passiv nutzten) gegeben habe.</p>
<p>Damit sich Seiten auch von mehreren Menschen effizient bearbeiten und verwalten lassen, sind <strong>Content-Management-Systeme</strong> und aus Datenbanken gespeiste Systeme entwickelt worden, die während der Laufzeit die Inhalte von Seiten dynamisch austauschen oder neue Inhalte einzusetzen helfen.</p>
<p>Folgende Entwicklungen trugen ab 2005 zur Veränderung des Nutzens des Internets bei:</p>
<ul>
<li>Die Trennung von lokal verteilter und zentraler Datenhaltung schwindet.</li>
<li>Die Trennung lokaler und netzbasierter Anwendungen schwindet.</li>
<li><strong>Benutzergenierter Inhalt</strong> → Webseiten stellen nur noch die Plattform</li>
<li>Webinhalte verschiedener Dienste werden über offene Programmierschnittstellen nahtlos zu neuen Diensten verbunden.</li>
</ul>
<p>Neben den technischen Änderungen wurden dabei auch viele neuen Webdienste erschaffen. Tim O&#8217;Reilly schrieb am 30. September 2005 einen <a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">Artikel</a>, der dieses Thema grundlegend erklärt. Abbildung 1 zeigt in einer Tagcloud die <strong>Prinzipien des Web 2.0</strong>.</p>
<h4>1.3 Vergleich Web 1.0 &amp; Web 2.0</h4>
<p>Tim O&#8217;Reilly definierte den Begriff Web 2.0 im Jahr 2006. Er beschrieb Web 2.0 als eine Veränderung in der Geschäftswelt und als eine neue Bewegung in der Computerindustrie hin zum <a href="http://radar.oreilly.com/2006/12/web-20-compact-definition-tryi.html">Internt als Plattform</a>.</p>
<p>O&#8217;Reily beschrieb somit den grundlegenden Wechsel einer Internetseite von einem <strong>festen, statischen Dokument hin zu einer Plattform</strong>. Der Inhalt stammt nicht mehr vom Webmaster selbst, sondern kommt von den Benutzern der Webseite. Abbildung 2 verdeutlicht dies noch ein Mal anschaulich.</p>
<div id="attachment_1506" class="wp-caption aligncenter" style="width: 418px"><a href="http://www.gironimo.org/wp-content/uploads/2012/01/web1_0-vs-web2_0.jpg"><img class=" wp-image-1506" title="web1_0-vs-web2_0" src="http://www.gironimo.org/wp-content/uploads/2012/01/web1_0-vs-web2_0.jpg" alt="" width="408" height="408" /></a><p class="wp-caption-text">Abbildung 2: Vergleich Web 1.0 vs. Web 2.0 (Quelle)</p></div>
<p><iframe src="http://www.youtube.com/embed/bsNcjya56v8" frameborder="0" width="420" height="315"></iframe></p>
<h4>Web 3.0</h4>
<p>Ein Problem des heutigen Internets ist die riesige <strong>Datenmenge</strong>, die für jedermann zugänglich ist. Das Web weiß aber nicht, was es damit anfangen kann, um uns die tägliche Arbeit zu erleichtern. Das Web hat somit nicht mehr als einen Speicher (Gedächtnis), ohne es mit <strong>Logik und Weitsicht</strong> verbinden zu können. Das Web ist „dumm“.</p>
<p>Eine Änderung muss her. Von den reinen Dokumenten, die bisher im Internet zugänglich sind müssen diese eine <strong>Bedeutung (Semantik)</strong> bekommen. Von daher spricht man von Web 3.0 auch vom <strong>sematischen Web</strong>.</p>
<p>Das semantische Web ist eine Instanz von Semantischen Netzen. Als Instanz ist das Semantische Web außerdem eine <strong>Erweiterung des World Wide Web</strong>. Ziel des Semantischen Webs ist es, die Bedeutung von Informationen für Computer verwertbar zu machen und damit automatisch für die interessierten Nutzer im Zuge einer Abfrage zu ordnen. Die Information im Web sollen von Maschinen interpretiert und automatisch weiterverarbeitet werden können. Informationen über Orte, Personen und Dinge sollen mit Hilfe des Semantischen Webs auf der Basis der Inhalte <strong>miteinander in Beziehung</strong> gesetzten werden können.</p>
<p>Während das World Wide Web eine Möglichkeit darstellt, Daten miteinander zu vernetzen, zeigt das Sematic Web einen Weg auf, Informationen auf der <strong>Ebene ihrer Bedeutung miteinander zu verknüpfen</strong>.</p>
<p>Eine Möglichkeit zur Lösung dieses Problems zeigt das Konzept der Wissensrepräsentation – auch als <strong>Knowledge Representation</strong> bezeichnet.</p>
<p>Die Wissenrepräsentation setzt sich aus drei Bereichen anderer wissenschaftlicher Felder zusammen:</p>
<ul>
<li><strong>Logik</strong> stellt die formale Struktur bereit, um Regeln zu formulieren, mit deren Hilfe das Computersystem Rückschlüsse bilden kann.</li>
<li><strong>Ontologien</strong> definieren die Objekte, die einem bestimmten Umfeld existieren.</li>
<li><strong>Berechenbarkeit</strong> ist eine Eigenschaft einer Wissensbasis, die diese praxistauglich werden lässt.</li>
</ul>
<p>Das Web von heute sind Dokumente, während das Web von morgen, das sematische Web, Dinge sind. Das Web erkennt Personen, Orte, Veranstaltungen, Unternehmen, Produkte, Filme, etc&#8230; und es versteht die Beziehung zwischen den Daten. Semantik wird in der Informatik als Bedeutung hinter den Daten bezeichnet. Deswegen auch das semantische Web genannt.</p>
<p>In Anlehnung an den Begriff Web 2.0 spricht man nach <a href="http://www.nytimes.com/2006/11/12/business/12web.html?ex=1320987600&amp;en=254d%20697964cedc62&amp;ei=5088">John Markoff </a>von Web 3.0, wenn zu den <strong>Konzepten des Web 2.0 noch die Konzepte des semantischen Web</strong> hinzukommen.</p>
<h3>2. Grundbausteine des Web 3.0</h3>
<p>Der Begriff „Sematic Web“ bezieht sich auf die Vision des World Wide Web Consortiums (W3C) des „Webs of <strong>Linked Data</strong>“. Die Sematic Web Technologien sollen das Ziel ermöglichen, Computern mehr nützliche Arbeit aufzutragen und Systeme zu erstellen, die eine vertrauenswürdige Interaktion im Netzwerk bereitstellen. Um dies zu ermöglichen, werden zu den Linked Data, <strong>Vocabularies</strong> erschaffen. <strong>Querys</strong> können diese Daten abfangen und durch so genannten <strong>Inference</strong> auch schlussfolgert werden.</p>
<h4>2.1 Linked Data</h4>
<p>Die Idee offener vernetzter Daten sind sätmliche Datenbestände, die im Interesse der Allgemeinheit der Gesellschafft ohne jedwede Einschränkung zur <strong>freien Nutzung</strong>, zu <strong>Weiterverbreitung</strong> und zu <strong>freien Weiterverwendung</strong> frei zugänglich gemacht und über das World Wide Web miteinander vernetzt sind.</p>
<p>Während das WWW ein Netzt aus Webseiten ist, soll mit Linked Data ein Netz aus Daten entstehen, die aus verschiedenen Quellen zusammen automatisch weiterverwendet werden können. Das Konzept von <strong>Linked Data</strong> geht im Wesentlichen auf Tim Berners Lee zurück, der auch Ende 2007 die Bezeichnung „Giant Global Graph“ (GGG) <a href="http://blogs.talis.com/nodalities/2007/11/who_is_afraid_of_the_ggg.php">vorschlug</a>. Er prägte vier Regeln für Linked Data:</p>
<blockquote><p>„1. Verwende zur Bezeichnung von Objekten URIs<br />
2. Verwende HTTP URIs, so dass sich die Bezeichnungen nachschlagen lassen<br />
3. Stelle zweckdienliche Informationen bereit, wenn jemand eine URI nachschlägt (mittels Standards)<br />
4. Zu diesen Informationen gehören insbesondere Links auf andere URIs, über die weitere Objekteenteckt werden können.“</p></blockquote>
<p>– TIM BERNERS-LEE<span style="font-size: 11px;"> (<a href="http://www.w3.org/DesignIssues/LinkedData.html">Quelle</a>)</span></p>
<p><strong>Tim Berners-Lee on the next Web</strong> (<a href="http://www.ted.com/talks/lang/de/tim_berners_lee_on_the_next_web.html">Quelle</a>)</p>
<p><object width="526" height="374" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talk/stream/2009/Blank/TimBernersLee_2009-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=484&amp;lang=de&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=tim_berners_lee_on_the_next_web;year=2009;theme=what_s_next_in_tech;event=TED2009;tag=Business;tag=Design;tag=Technology;tag=communication;tag=invention;tag=web;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="pluginspace" value="http://www.macromedia.com/go/getflashplayer" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><embed width="526" height="374" type="application/x-shockwave-flash" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" allowFullScreen="true" allowScriptAccess="always" wmode="transparent" bgColor="#ffffff" flashvars="vu=http://video.ted.com/talk/stream/2009/Blank/TimBernersLee_2009-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=484&amp;lang=de&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=tim_berners_lee_on_the_next_web;year=2009;theme=what_s_next_in_tech;event=TED2009;tag=Business;tag=Design;tag=Technology;tag=communication;tag=invention;tag=web;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" pluginspace="http://www.macromedia.com/go/getflashplayer" allowfullscreen="true" allowscriptaccess="always" /></object></p>
<p>Zu den Komponenten von Linked Data zählen also <strong>URIs</strong>, <strong>HTTP</strong>, das <strong>Resource Description Format</strong> (RDF) als Standarisierung, und <strong>Serilalization Formate</strong> (RDFa, RDF/XML, …), um Daten abzurufen.</p>
<p>Ein Beispiel für Linked Data ist <a href="http://dbpedia.org/">DBpedia</a>, welches die Inhalte (Daten) aus Wikipedia extrahiert und den Benutzern erlaubt Beziehungen und Eigenschaften der Daten anzugeben. Mittlerweile beschreibt DBpedia mehr als 3.64 Millionen Dinge (siehe Abbildung 3).</p>
<div id="attachment_1507" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.gironimo.org/wp-content/uploads/2012/01/lod.png"><img class="size-medium wp-image-1507 " title="lod" src="http://www.gironimo.org/wp-content/uploads/2012/01/lod-600x449.png" alt="" width="600" height="449" /></a><p class="wp-caption-text">Abbildung 3: Verknüpfung zwischen Linked Open Data Datenbeständen (Juli 2009) (Quelle)</p></div>
<h4>2.2 Vocabularies</h4>
<p>Im semantischen Web <strong>definieren Vocabularies Konzepte und Beziehungen</strong> (auch „term“ genannt) der einzelnen Daten. Vocabularies werden verwendet, um den Daten mögliche Beziehungen und Charakterisierungen zu definieren und behalten auch mögliche Einschränkungen vor. In der Praxis werden Vocabularies sehr komplex sein (mit mehreren Tausend Begriffen) oder einfach (mit ein oder zwei Begriffen).</p>
<p>In der Informatik wird Vocabulary (vom W3C definiert) auch als Ontologie bezeichnet. Wikipedia beschreibt <a href="http://de.wikipedia.org/wiki/Ontologie_(Informatik)">Ontologie</a> so:</p>
<blockquote><p>„Ontologien in der Informatik sind meist sprachlich gefasste und formal geordnete Darstellungen einer Menge von Begrifflichkeiten und der zwischen ihnen bestehenden Beziehungen in einem bestimmten Gegenstandsbereich. Sie werden dazu genutzt, „Wissen“ in digitalisierter und formaler Form zwischen Anwendungsprogrammen und Diensten auszutauschen. Wissen umfasst dabei sowohl Allgemeinwissen als auch Wissen über sehr spezielle Themengebiete und Vorgänge.“</p></blockquote>
<p>Vocabularies werden also verwendet, um die miteinander verknüpften Daten (Linked Data) zu beschreiben und ihnen einen Sinn zu geben.</p>
<h4>2.3 Query</h4>
<p>„Query“ im semantischen Web, sind Technologien und Protokolle, die automatisch Information aus dem „Web of Data“ abrufen können. Genauso wie strukturierte Datenbanksysteme Querys benutzen, um Informationen abzurufen, braucht das semantische Web ebenfalls Querys, um die Beziehungen und Eigenschaften einer Anfrage zu verarbeiten und zurückzuliefern.</p>
<p>Vom World Wide Web Consortium wurde 2011 die „<strong>SPARQLquery language</strong>“ als Standard fürs semantische Web herausgebracht. Diese Technologie soll bis zur Verarbschiedung des Standards für die Aufbereitung und Abrufen der Daten im semantischen Web verwendet werden. Die Kommunikation erfolgt entweder über das <strong>Hypertext Transfer Protocol</strong> (HTTP) oder über <strong>Simple Object Asses Protocol</strong> (SOAP).</p>
<h4>2.4 Inference</h4>
<p>Inference, zu deutsch etwa „Schlussfolgerung“, soll auf Grundlage von erstellen Vocabularies und Linked Data, <strong>völlig automatisch</strong> neue Beziehungen und Charakterisierungen aufstellen. Es soll wie der Name bereits propagiert „schlussfolgern“.</p>
<p>Diese Schlussfolgerungen sollen ebenfalls auch wichtig zur Entdeckung von Inkonsistenzen in den breits vorhandenen (integrierten) Daten sein.</p>
<p>Mit Inference und den bereits angesprochenen Linked Data und Vocabularies wird das Web dann tatsächlich <strong>zum denken Web</strong>, das sein Wissen auch tatsächlich selbständig nutzen kann.</p>
<p>Als weiterer Grundbaustein des Web 3.0 sei noch so genannte „<a href="http://www.w3.org/standards/semanticweb/applications.html">Vertical Applications</a>“ angesprochen. Dies sind Forschungsgruppen die in Zusammenarbeit mit dem World Wide Web Consortium das Semantic Web „erforschen“ und auf Grundlage ihrer Ergebnisse diese als neue Webstandards beschließt.</p>
<h3>3. Realisierung auf der eigenen Webseite</h3>
<p>Um bereits heute seine eigene Webseite semantisch aufzubereiten, gibt es mehrere Möglichkeiten. Im folgenden möchte ich kurz die drei am häufigsten verwendeten aufzeigen und diese kurz erläutern.</p>
<h4>3.1 RDFa (Resource Description Framework – in – attributes)</h4>
<p>Das <strong>Resource Description Framework</strong> (<strong>RDF</strong>) bezeichnet eine <a href="http://www.w3schools.com/w3c/w3c_rdf.asp">Familie von Standards</a> des World Wide Web Consortiums (W3C) zur formalen Beschreibung von Information über Objekte, sogenannte Ressource, die durch eindeutige Bezeichner (URIs) identifiziert werden.</p>
<p>Im wesentlichen stellt RDFa eine Reihe von Attributen, mit denen Metadaten in eine XML-Sprache überführt werden, bereit.</p>
<p>Diese Attribute sind:</p>
<ul>
<li><code>about</code> &amp; <code>src</code>: URI oder CURIE Angabe über die Quelle</li>
<li><code>rel</code> &amp; <code>rev</code>: Angabe einer Beziehung oder umgekehrte Beziehung mit einer anderen Ressource</li>
<li><code>href</code> &amp; <code>resource</code>: Angabe der Partner-Ressource</li>
<li><code>property</code>: Angabe einer Eigenschaft für den Inhalt des Elements</li>
<li><code>content</code>: optionales Attribut, das den Inhalt des Elements überschreibt</li>
<li><code>datatype</code>: optionales Attribut, das den Datentyp spezifiziert</li>
<li><code>typeof</code>: optionales Attribut, spezifiziert den RDF Typ des Titels</li>
</ul>
<p>Beispiel:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; about=&quot;http://www.example.com/books/wikinomics&quot;&gt;
In his latest book &lt;cite property=&quot;dc:title&quot;&gt;Wikinomics&lt;/cite&gt;, &lt;span property=&quot;dc:creator&quot;&gt;Don Tapscott&lt;/span&gt; explains deep changes in technology, demographics and business. The book is due to be published in &lt;span property=&quot;dc:date&quot; content=&quot;2006-10-01&quot;&gt;October 2006&lt;/span&gt;.
&lt;/p&gt;
</pre>
<p><em>Beispiel 1: RDFa Beispiel</em></p>
<h4>3.2 Microformat</h4>
<p>Mikroformate sind ein Markup-Format zur <strong>semantischen Annotation</strong> von HTML oder XHML. Mikroformat-Annotationen können leicht aus Webseiten extrahiert werden und machen weiteren Programmen (etwa Suchmaschinen) die <strong>Bedeutung</strong> des Seiteninhalts verständlich.</p>
<p>Jedes Mikroformat wurde für ein spezielles Themen- oder Wissensgebiet entwickelt. So gibt es Mikroformate für Termine, für Kontaktinformationen und für soziale Beziehungen.</p>
<p>Die bisher vorhanden (X)HTML-Standards erlauben minimale semantische Annotationen durch folgenden Attribute:</p>
<ul>
<li><code>class</code>: Klassenname</li>
<li><code>rel</code>: (von relationship) Vorwärtsbeziehung in einem anchor-Element (&lt;a&gt;), Beschreibung der Zieladresse</li>
<li><code>rev</code>: (von reverse relationship) Rückwärtsbeziehung, Gegenteil der Vorwärtsbeziehung, Beschreibung des referenzierenden Dokuments</li>
</ul>
<p>Folgendes Beispeil ist mit dem Mikroformat <code>hCard</code> ausgezeichnet:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;vcard&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;Max Mustermann&lt;/div&gt;
&lt;div class=&quot;org&quot;&gt;Musterfirma&lt;/div&gt;
&lt;div class=&quot;tel&quot;&gt;01234/56789&lt;/div&gt;
&lt;a class=&quot;url&quot; href=&quot;http://example.com/&quot;&gt;http://example.com/&lt;/a&gt;
&lt;/div&gt;
</pre>
<p><em>Beispiel 2: Mikroformat Beispiel</em></p>
<p>Die Klassen beschreiben folgendes:</p>
<ul>
<li><code>fn</code>: formatted name</li>
<li><code>org</code>: Organisation</li>
<li><code>tel</code>: Telephone</li>
<li><code>url</code>: Homepage</li>
</ul>
<h4>3.3 Microdata</h4>
<p>Diese <strong>Spezifikation</strong> versucht, das Einbinden maschinenlesbarer Informationen in HTML-Dokumenten zu definieren. Ziel dabei ist, dass dieser Mechanismus eindeutig definiert und zu anderen Formaten wie <strong>RDF</strong> und <strong>JSON</strong> kompatibel ist.</p>
<p>Globale Microdata Attribute:</p>
<ul>
<li><code>itemscope</code>: Erzeugt das Item und zeigt an, dass Nachkommen von diesem Element Informationen über dieses enthalten.</li>
<li><code>itemtype</code>: Eine valide URL zu einem Vocabulary, dass das Item und seinen Inhalt beschreibt.</li>
<li><code>itemid</code>: Gibt einen einzigartige ID für das Item an.</li>
<li><code>itemprop</code>: Zeigt an, dass mithilfe des Tags das Element die Eigenschaften des Tags enthält.</li>
<li><code>itemref</code>: Eigenschaften, die nicht Nachkommen des Elements mit dem itemscope Attributs sind, kann mit diesem Attribut zugeordnet werden. Enthält außerdem eine Liste der IDs der Elemente mit zusätzlichen Eigenschaften an anderer Stelle im Dokument.</li>
</ul>
<p>Beispiel:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;section itemscope itemtype=&quot;http://data-vocabulary.org/Person&quot;&gt;
Hello, my name is &lt;span itemprop=&quot;name&quot;&gt;John Doe&lt;/span&gt;, I am a &lt;span itemprop=&quot;title&quot;&gt;graduate research assistant&lt;/span&gt; at the &lt;span itemprop=&quot;affiliation&quot;&gt;University of Dreams&lt;/span&gt;. My friends call me &lt;span itemprop=&quot;nickname&quot;&gt;Johnny&lt;/span&gt;. You can visit my homepage at &lt;a href=&quot;http://www.JohnnyD.com&quot; itemprop=&quot;url&quot;&gt;www.JohnnyD.com&lt;/a&gt;.

&lt;section itemprop=&quot;address&quot; itemscope itemtype=&quot;http://data-vocabulary.org/Address&quot;&gt;
I live at &lt;span itemprop=&quot;street-address&quot;&gt;1234 Peach Drive&lt;/span&gt; &lt;span itemprop=&quot;locality&quot;&gt;Warner Robins&lt;/span&gt;, &lt;span itemprop=&quot;region&quot;&gt;Georgia&lt;/span&gt;.
&lt;/section&gt;
&lt;/section&gt;
</pre>
<p><em>Beispiel 3: Microdata Beispiel (HTML5-Spezifikation)</em></p>
<p>Google würde das obige Beispiel folgend interpretieren:</p>
<pre class="brush: plain; title: ; notranslate">
Item
    Type: http://data-vocabulary.org/Person
    name = John Doe
    title = graduate research assistant
    affiliation = University of Dreams
    nickname = Johnny
    url = http://www.johnnyd.com/
    address = Item(1)
Item 1
    Type: http://data-vocabulary.org/Address
    street-address = 1234 Peach Drive
    locality = Warner Robins
    region = Georgia
</pre>
<p><em>Beispiel 4: Google Interpretation von Beispiel 3</em></p>
<h3>4. Beispiele</h3>
<p>Im folgenden wird versucht anhand von drei Beispielen Web 3.0 in der Praxis zu zeigen, vorab sollte erwähnt werden, dass das semantische Web immer noch Gegenstand der Forschung ist.</p>
<h4>4.1 GroupMe!</h4>
<p>An dieser Stelle wird eine Anwendung präsentiert, die eine neue Art vom sozialen <strong>Tagging System</strong> darstellt. Die Anwendung heißt <a href="http://groupme.org/">GroupMe!</a> und verbindet neben Web 2.0 Ansätze von <strong>Semantic Web Technologien</strong>.</p>
<p>Die neuartige Web 2.0”-Anwendung GroupMe!” fasst multimediale Webinhalte in Themengruppen zusammen. Durch seine innovative Benutzeroberfläche und den Einsatz von Semantic-Web-Technologien bietet GroupMe!” neue Möglichkeiten, Informationen zu erschliessen. Die neue Gruppenstruktur und semantische Annotationen verbessern die zielgerichtete Suche nach Inhalten.</p>
<p>Die Anwendung basiert auf einer einfachen Idee, die den Benutzern erlaubt Web Ressourcen zu gruppieren. Also eine der wichtigsten Funktionen ist die Erstellung von Gruppen von Multimedia Web Ressourcen mit Drag and Drop. Den Benutzern ist eine gewisse Freiheit überlassen die Gruppen nach eigenen Wünschen zu formatieren und zu strukturieren, basierend auf dem Konzept von Mind Maps. Der Sinn der Sache ist, dass sehr viele relevante Ressourcen in Gruppen zusammengefasst werden. Die Gruppen stellen ver-<br />
schiedene Themenbereiche dar. Innerhalb der Anwendung ist den Benutzern die Suche von Ressourcen von anderen Benutzern selbstverständlich gestattet. Eine eigene API steht den Benutzern zur Verfügung und bietet die Möglichkeit die Anwendung mit weiteren Funktionen zu erweitern.</p>
<p>Ein Überblick über die Möglichkeiten und Funktionen von GroupMe wird im Bild (Abbildung 4) dargestellt.</p>
<div id="attachment_1517" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.gironimo.org/wp-content/uploads/2012/01/groupme.png"><img class="size-medium wp-image-1517 " title="GroupMe! Funktionsweise" src="http://www.gironimo.org/wp-content/uploads/2012/01/groupme-600x254.png" alt="" width="600" height="254" /></a><p class="wp-caption-text">Abbildung 4: Aufbau von GroupMe!</p></div>
<p>Eine GroupMe!”-Gruppe ist eine thematische Sammlung von Links, die auf relevante Webseiten, Bilder und Videos verweisen. Ein wichtiger Unterschied zu gewöhnlichen Linksammlungen ist die graphische Darstellung der Links und Gruppen. Links werden dem Medientyp entsprechend visualisiert: Bilder und Videos können direkt in der Gruppe betrachtet werden, bei News-Feeds, wie Informationen aus Blogs, werden aktuelle Schlagzeilen angezeigt, und Musikdateien können direkt abgespielt werden. Durch diese Form der Visualisierung bekommt der Betrachter einer Gruppe einen sofortigen Überblick über das Thema und seinen Inhalt. Mit dem GroupMe!-System können Web-Inhalte somit effizienter erfasst und verwaltet werden als mit traditionellen Wissensmanagement-Systemen.</p>
<h4>4.2 RelFinder</h4>
<p><a href="http://www.visualdataweb.org/relfinder.php">RelFinder</a> ermöglicht eine wunderbar visualisierte Form der Beziehungen zwischen einzelnen Objekten. Es extrahiert und visualisiert Beziehungen zwischen bestimmten Objekten in Datensätzen und macht diese Zusammenhänge <strong>interaktiv erforschbar</strong>. Highlighting und Filterfunktionen unterstützen die Analyse sowohl auf globaler und auf detaillierten Ebene.</p>
<p>RelFinder basiert auf dem Open-Source-Framework <strong>Adobe Flex</strong>, das einfach zu bedienen ist und funktioniert mit allen RDF Daten, die standardisierte <strong>SPARQL</strong> Zugang zur Verfügung stellen.</p>
<div id="attachment_1518" class="wp-caption aligncenter" style="width: 431px"><a href="http://www.gironimo.org/wp-content/uploads/2012/01/tool-banner.png"><img class="size-full wp-image-1518" title="RelFinder" src="http://www.gironimo.org/wp-content/uploads/2012/01/tool-banner.png" alt="" width="421" height="148" /></a><p class="wp-caption-text">Abbildung 5: Visualisierung der Beziehungen von semantischen Daten: RelFinder</p></div>
<h4>4.3 THESEUS</h4>
<p><a href="http://www.theseus-programm.de/">THESEUS</a> ist ein vom Bundesministerium für Wirtschaft und Technologie (BMWi) initiiertes <strong>Forschungsprogramm</strong> mit dem Ziel, den Zugang zu Informationen zu vereinfachen, Daten zu neuem Wissen zu vernetzen und die Grundlage für die <strong>Entwicklung neuer Dienstleistungen im Internet</strong> zu schaffen.</p>
<p>Im Fokus des Forschungsprogramms stehen semantische Technologien, die Inhalte (Wörter, Bilder, Töne) nicht mit Hilfe herkömmlicher Verfahren (z. B. Buchstabenkombinationen) ermitteln, sondern die <strong>inhaltliche Bedeutung von Informationen</strong> erkennen und einordnen können. Mit diesen Technologien sollen Computerprogramme besser nachvollziehen können, in welchem Kontext Daten abgespeichert wurden. Darüber hinaus können Computer aus den Inhalten logische Schlüsse ziehen und selbständig Zusammenhänge zwischen unterschiedlichen Informationen aus mehreren Quellen erkennen und herstellen. Mit diesen Technologien schafft Theseus die Grundlage für neuartige Produkte, Werkzeuge, Dienste und Geschäftsmodelle für das Internet der Dienste. Das Forschungsprogramm leistet damit wichtige Beiträge zu zwei aktuellen Entwicklungen in der Informations- und Kommunikationstechnologie (IKT):</p>
<ol>
<li>Die Schaffung eines „Internet der Dienste“, einer „Marktplattform, auf der künftig Serviceleistungen wie Güter handelbar und auf der Grundlage semantischer Technologien und serviceorientierter Architekturen beliebig kombinierbar“ sind</li>
<li>Das Vorantreiben des lernfähigen „Web 3.0“, welches laut Wolfgang Wahlster (DFKI GmbH) durch seine semantischen Verknüpfungen dem Endnutzer auf eine Anfrage „direkt eine präzise Antwort“ liefern soll</li>
</ol>
<p>Die Basistechnologien werden in den sechs Anwendungsszenarien Alexandria, Contentus, Medico, Ordo, Processus, Texo exemplarisch auf ihre Nutzbarkeit hin aufbereitet und getestet.</p>
<p><iframe src="http://www.youtube.com/embed/UiwVfOMk5xM" frameborder="0" width="420" height="315"></iframe></p>
<h3>5. Vor- und Nachteile des Web 3.0</h3>
<p>Nachfolgend werden Vor- und Nachteile des semantischen Web aufgezählt und erläutert. Da das Web 3.0 noch kein fester Standard ist, oder wird, können die aufgezählten Punkte in Zukunft revidiert werden.</p>
<h4>5.1 Vorteile</h4>
<p>Das Internet setzt sich aus einer überwältigenden Menge von Webseiten, Texten, Bildern, Videos, Dokumenten &#8211; kurz Ressourcen zusammen, die jeweils uber eine eindeutige Adresse, die URL auffindbar sind. Eine bessere Ordnung in dieses Ressourcenuniversum zu bringen ist eine zentrale Hoffnung, die mit <strong>Semantic-Web-Technologien</strong> verbunden ist.</p>
<p>Eine der Ziele von Semantic Web ist die Wiederverwendung von Wissen über sprachliche Barrieren hinweg, die wiederum eine aggregierte Suche über mehrere Seiten erlauben sollte. Durch den Einsatz von Techniken der <strong>künstlichen Inteligenz</strong> soll die Qualität der Suche verbessert werden, indem die Fehler und Wiedersprüche identifiziert und eliminiert werden.</p>
<p>Weitere Vorteile des semantischen Webs sind:</p>
<ul>
<li><strong>digitale Signaturen</strong>: Die Herkunft einer Information lässt sich eindeutig nachweisen. Entsprechende Programme könnten also die Glaubwürdigkeit einer Information abschätzen. So kann das Vertrauen der Nutzer in die gewonnenen Informationen gestärkt werden. Ebenfalls ist denkbar, dass, gestützt auf diese glaubwürdigen Daten, die Zusammenarbeit im Unternehmen und von Unternehmen durch das Semantic Web ausgeweitet werden kann.</li>
<li><strong>Verkettung von Diensten</strong>: Einzelne Dienste (z.B. bestimmte Suchmaschinen oder spezialisierte Datenbanken) könnten ihre Serviceleistungen über entsprechende semantische Strukturen anpreisen, so dass ein Computer sie auslesen und ihren Nutzen abschätzen kann. Anschließend könnte er für eine beliebige Anfrage eine passende Kette zusammenstellen, in der er eine grosse Anzahl von Informationen durch verschiedene Dienste schickt und dem Nutzer anschließend nicht eine unüberschaubare Vielzahl von Links gibt, sondern nur die Informationen nennt, die wirklich alle Filter durchlaufen haben. Die gezielte Auffindung von Informationen wird also stark verbessert.</li>
<li><strong>Automation</strong>: Wenn alle Geräte über entsprechende Datenbanken verkettet sind, lassen sie sich einfach automatisieren. Hierzu ein Beispiel: Ein Nutzer hört laute Musik, als das Telefon klingelt. Praktisch wäre es, wenn sich die Musik automatisch leise drehen würde, sobald er den Hörer abhebt, und wieder lauter wird, wenn das Gespräch beendet ist. Mit semantischen Strukturen ist so etwas nicht nur möglich, sondern auch einfach: Ein Nutzer muss jetzt nämlich nicht mehr seinen Computer so einstellen, dass er leiser wird, wenn das Telefon klingelt; und dann seinen Fernseher so einstellen, dass er leiser wird, wenn das Telefon klingelt; und dann seinen DVD-Spieler so einstellen, dass&#8230; sondern alle Geräte, die über die Information Lautstärke kann geregelt werden verfügen, werden automatisch leiser, wenn das Telefon klingelt.</li>
</ul>
<h4>5.2 Nachteile</h4>
<p>Obwohl das Semantic Web bereits seit vielen Jahren propagiert wird, ist bisher nur in einzelnen Vorzeige-Projekten eine Realisierung zu erkennen. Die vorgestellten Semantic-Web-Standards sind zwar technisch gesehen Standards, aber noch weit davon entfernt, durch verbreiteten Gebrauch faktisch akzeptierte Standards darzustellen. In der Praxis ergeben sich erhebliche Probleme. Sie reichen von der Frage, wie detailliert man semantische Relationen modellieren soll, will oder kann, bis hin zur politischen Überlegung, ob es Autoritäten geben soll, die zentrale Bedeutungen festlegen. Zunächst bedeutet die zusätzliche Anreicherung von Daten mit maschinenlesbaren Informationen auch zusätzliche Arbeit. Redakteure müssen neben der Erstellung des Artikels auch noch für die korrekte Verschlagwortung sorgen.</p>
<p>Die Konzepte des Semantic Web sind <strong>hochkomplexe Formalismen</strong>. Das bleiben sie selbst dann, wenn es gelinge, eine intuitive Anwendung zu entwickeln. In erster Linie bleibt der Aufbau semantischer Netze damit Experten vorbehalten. Stärker noch als Enzyklopädien definieren semantische Netze, was die Welt ist, was wahr ist und was falsch. Damit kommt einer sehr kleinen Gruppe von Menschen eine ausgesprochen große Definitionsmacht zu.</p>
<p>Eine alternative Herangehensweise stellen Social-Tagging-Systeme dar, die genutzt werden können, um aus einer groen Menge von individuell vergebenen Schlagwörtern dezentrale Onthologien (<strong>Folksonomies</strong>) aufzubauen. Daraus ergibt sich allerdings das umgekehrte Problem: Was einen Tag ausmacht wird über den Mittelwert der Masse aller, die Objekte mit diesem Tag versehen haben, definiert. Doch gibt es reichlich Beispiele für populäre Irrt ̈mer. Die Popularität von Tagging in diversen Web 2.0 Anwendungen macht dennoch Hoffnung, dass zwei Grundannahmen des Semantic Web richtig sind: Zum Einen geben sich viele Nutzer Mühe, Daten mit semantisch korrekten <strong>Metadaten</strong> anzureichern. Zum Anderen scheinen sich Tags als sinnvolle und verständliche Suchmöglichkeit neben der Volltextsuche etabliert zu haben.</p>
<p>Auch der <strong>Datenschutz</strong> spielt eine immense Rolle. Was wäre wenn es Hackern gelingen würde das intelligente Web zu manipulieren? Es sozusagen für ihre Zwecke missbrauchen und anderen damit schaden. Für solche Fragen müssen definitiv noch viele Sicherheitsmechanismen aufgebaut werden, die dann auch greifen müssen.</p>
<p>Und zu guter Letzt noch ein entscheidener Punkt. Will ich wirklich vom World Wide Web bemuttert werden? Wenn das Web immer glaubt zu wissen was ich derzeit brauche, hat dies wirklich nur Vorteile? Wenn ich in <strong>einer Suchanfrage nur eine passende Antwort bekomme</strong> reicht mir das? Oder will ich nicht lieber vergleichen und selber nachdenken was für mich richtig ist.</p>
<h3>6. Fazit</h3>
<p>Der Begriff <strong>Web 3.0</strong>, ist nicht mehr wie ein Begriff. Er ist kein festegschriebener Standard o.ä. sondern bringt eine Reihe <strong>neuer Standards</strong> mit sich. Diese befinden sich aktuell alle noch in der Entwicklung. Das semantische Web wird frühestens 2018 als Standard verabschiedet.</p>
<p>Mit dem Web 3.0 soll das Word Wide Web <strong>vom Dokumenten-Web zum „Web of Data“</strong> weiterentwickelt werden. Grundsätzlich sind nicht mehr die einzelnen HTML-Dokumente entscheidend, sondern die darin befindliche Bedeutung und die Beziehungen zwischen einander. <strong>Das Web wird somit intelligent</strong> und kann sein rießiges Gedächtnis auch wirklich nutzen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/webentwicklung/web-3-0-das-semantische-web.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eigenes Eclipse Paket für Ubuntu/Debian bauen</title>
		<link>http://www.gironimo.org/linux/eigenes-eclipse-paket-ubuntu-debian-bauen.html</link>
		<comments>http://www.gironimo.org/linux/eigenes-eclipse-paket-ubuntu-debian-bauen.html#comments</comments>
		<pubDate>Mon, 07 Nov 2011 11:49:35 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Paketverwaltung]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1493</guid>
		<description><![CDATA[Wer die neueste Eclipse Version für Debian oder Ubuntu 11.04 benötigt, der hat ein Problem. Die, sowohl in Ubuntu Natty als auch in Debian Sid verfügbare Version ist 3.5, obwohl seit Juni 2010 3.6 verfügbar ist oder sogar seit diesem Jahr 3.7 Indigo. In Ubuntu 11.10...]]></description>
			<content:encoded><![CDATA[<p>Wer die <strong>neueste Eclipse Version</strong> für <strong>Debian</strong> oder <strong>Ubuntu 11.04</strong> benötigt, der hat ein Problem. Die, sowohl in <strong>Ubuntu Natty</strong> als auch in <strong>Debian Sid</strong> verfügbare Version ist 3.5, obwohl seit Juni 2010 3.6 verfügbar ist oder sogar seit diesem Jahr 3.7 Indigo. In Ubuntu 11.10 dagegen ist endlich die neue Version 3.7 verfügbar.</p>
<p>Ein Grund für die zögerliche <strong>Paketierung</strong> könnte sein, dass Eclipse bereits eine interne <strong>Paketverwaltung</strong> mitbringt, über die Plugins mittels Paketquellen installiert werden können. Eventuell haben wenige Leute Interesse daran Eclipse zu paketieren. Deshalb bin ich dazu übergegangen mir selbst ein <strong>eigenes Eclipse Paket zu bauen</strong>, und dieses über <strong>APT</strong> zu installieren. Wie das ganze funktioniert, beschreibe ich hier.</p>
<h3>Vorbereiten und Erstellen des Arbeitsverzeichnisses</h3>
<p>Bevor wir mit der Paketierung starten können, benötigen wir noch einige Pakete und ein <strong>Arbeitsverzeichnis</strong>, in dem wir später unser Eclipse Paket bauen werden.</p>
<pre class="brush: bash; title: ; notranslate">$ sudo apt-get install fakeroot dpkg-dev debhelper unp</pre>
<p>Hiermit werden einige Tools installiert, die wir benötigen um die entsprechenden <strong>Rechte</strong> des Pakets zu setzen und dieses schlussendlich zu bauen.</p>
<pre class="brush: bash; title: ; notranslate">$ mkdir eclipse-sdk</pre>
<p>Innerhalb dieses Arbeitsverzeichnisses müssen nun die Ordner so angelegt werden, wie sie später auf dem Dateisystem abgebildet werden sollen. Legt man also innerhalb dieses Ordners <code>eclipse-sdk</code> den Ordner <code>bin</code> an und speichert dort Dateien, so werden diese Dateien später nach <code>/bin</code> installiert. Userprogramme werden unter Linux üblicherweise unter <code>/usr</code> installiert. Ich lasse den Inhalt des Archivs nach <code>/usr/lib/eclipse</code> installieren.</p>
<h3>Eclipse herunterladen und Paket vorbereiten</h3>
<p>Ich installiere mir das Eclipse SDK, also mit bereits installierten JAVA Development Tools und in der 64-Bit Variante. Wer eine andere Version braucht, sollte dies anpassen.</p>
<pre class="brush: bash; title: ; notranslate">$ wget http://download.eclipse.org/eclipse/downloads/drops/R-3.7.1-201109091335/download.php?dropFile=eclipse-SDK-3.7.1-linux-gtk-x86_64.tar.gz
$ unp eclipse-platform-3.6.2-linux-gtk-x86_64.tar.gz
$ mkdir -p eclipse-sdk/usr/lib
$ mv eclipse eclipse-sdk/usr/lib/eclipse</pre>
<p>Anschließen erstellen wir ein Skript, mit dem wir Eclipse starten können. <strong>Startskripte</strong> werden in <code>/usr/bin</code> abgespeichert.</p>
<pre class="brush: bash; title: ; notranslate">$ mkdir -p eclipse-sdk/usr/bin
$ touch eclipse-sdk/usr/bin/eclipse
$ chmod +x eclipse-sdk/usr/bin/eclipse</pre>
<p>Mit dem zweiten Befehl erstellen wir eine leere Datei und geben dieser mit dem dritten Befehl <strong>Ausführrechte</strong>. Nun sollten wir dem Startskript natürlich auch einen Inhalt geben. Dies kann entweder mit einem Konsolen-Editor geschehen (wie <strong>vi</strong> oder <strong>nano</strong>) oder auch mit einem grafischen Editor (z.B. <strong>gedit</strong>, &#8230;). Folgenden Inhalt bekommt unser Startskript:</p>
<pre class="brush: bash; title: ; notranslate">#!/bin/sh
exec /usr/lib/eclipse/eclipse &quot;$@&quot;</pre>
<p>&#8220;<code>$@</code>&#8221; bewirkt, dass dem Skript mitgegebene Parameter an Eclipse weitergereicht werden. Nun müssen wir noch einen Menüeintrag erstellen, so dass sich Eclipse auch bequem aus dem Anwendungsmenü heraus starten lässt.</p>
<pre class="brush: bash; title: ; notranslate">$ mkdir -p eclipse-sdk/usr/share/applications
$ nano eclipse-sdk/usr/share/applications/eclipse.desktop</pre>
<p>&nbsp;</p>
<pre class="brush: bash; title: ; notranslate">[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Eclipse
Exec=eclipse
Terminal=false
Icon=/usr/lib/eclipse/icon.xpm
Comment=Eclipse Integrated Development Environment
Categories=Development;IDE;
</pre>
<p>Nun haben wir also ein Startskript, einen Anwendungsstarter sowie einen Programmordner. Fehlen nur noch Informationen, die das Paket näher beschreiben, damit auch APT was damit anfangen kann.</p>
<h3>Paketinformationen und paketieren</h3>
<p>Wir brauchen für die Paketierung eine Debain Control Datei. Die das Paket näher beschreibt und <strong>Abhängigkeiten</strong> auflistet.</p>
<pre class="brush: bash; title: ; notranslate">mkdir eclipse-sdk/DEBIAN
nano eclipse-sdk/DEBIAN/control</pre>
<p>In die Control Datei kommt folgender Inhalt:</p>
<pre class="brush: bash; title: ; notranslate">Package: eclipse-sdk
Version: 3.7.1
Architecture: amd64
Maintainer: InsertYourNameHere
Depends: openjdk-6-jre | sun-java6-jre
Section: devel
Priority: optional
Description: Eclipse IDE, static-linked, minimal plugins.</pre>
<p>Als Maintainer sollte euer Name stehen. Die Abhängigkeiten die Eclipse benötigt sind <strong>Java</strong>. Egal ob dies OpenJDK oder doch Sun Java ist. Alles andere ist bei Eclipse dabei.</p>
<p>Nun verpacken wir das Paket und können dies dann ganz bequem installieren.</p>
<pre class="brush: bash; title: ; notranslate">$ fakeroot dpkg -b eclipse-sdk eclipse-sdk_3.7.1_amd64.deb
$ sudo dpkg -i eclipse-sdk_3.7.1_amd64.deb</pre>
<p>Wenn <code>fakeroot</code> nicht vergessen wurde (wird benötigt um die Rechte richtig zu setzen!) sollte Eclipse jetzt problemlos starten.</p>
<p>Getestet mit Ubuntu 11.10 und Ubuntu 11.04.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/linux/eigenes-eclipse-paket-ubuntu-debian-bauen.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto: Veetle unter Ubuntu 64-bit installieren</title>
		<link>http://www.gironimo.org/netzwelt/howto-veetle-ubuntu-64-bit-installieren.html</link>
		<comments>http://www.gironimo.org/netzwelt/howto-veetle-ubuntu-64-bit-installieren.html#comments</comments>
		<pubDate>Tue, 05 Jul 2011 20:36:14 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Netzwelt]]></category>
		<category><![CDATA[64-Bit]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Veetle]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1483</guid>
		<description><![CDATA[Wer von euch auch Probleme hat Veetle unter einem 64-Bit Linux zu installieren, dem kann ich hier helfen. Leider war es bei mir so das weder die selbstinstallierende Datei noch das *.tgz Archiv bei mir funktionierten. Bei näherem Untersuchen des Problems stellt sich heraus, das...]]></description>
			<content:encoded><![CDATA[<p>Wer von euch auch Probleme hat <strong>Veetle</strong> unter einem <strong>64-Bit Linux</strong> zu installieren, dem kann ich hier helfen. Leider war es bei mir so das weder die selbstinstallierende Datei noch das *.tgz Archiv bei mir funktionierten.</p>
<p>Bei näherem Untersuchen des Problems stellt sich heraus, das diese Dateien auch nicht für 64-Bit Systeme gedacht sind sondern für &#8220;normale&#8221; 32-Bit Systeme. Also erstmal versucht auf der Webseite von Veetle bzw. deren FTP-Servern eine andere Version zu finden, doch leider alles ohne Erfolg. Ich hab dennoch nicht aufgegeben. Stundenlanges Suchen sowie tausende Foren und Blogeinträge später hatte ich mein Ergebnis. Irgendwer hatte noch eine sogenannte <strong>Plus Version</strong> von Veetle, die auf 64-Bit Rechnern funktionieren soll.</p>
<p>Und tatsächlich, das hat geklappt. Also für alle hier der <a href="http://www.gironimo.org/wp-content/uploads/2011/07/veetle.tar.gz">Download</a>, nachdem ihr das Archiv heruntergeladen und (2x) entpackt habt, beschreib ich kurz wie das ganze installiert wird.</p>
<ol>
<li>Terminal öffnen</li>
<li><code>mkdir -p ~/.mozilla/plugins</code></li>
<li><code>cp *.so ~/.mozilla/plugins</code></li>
<li><code>mkdir -p ~/.veetle_vlc</code></li>
<li><code>cp vlc vlcori ~/.veetle_vlc</code></li>
</ol>
<p>Wenn ihr dann euren Browser öffnet unter <a href="about:plugins">about:plugins</a> und euch folgende neuen Plugins begrüßen, habt ihr Veetle erfolgreich installiert. Testen könnt ihr das ganze dann natürlich unter <a href="http://www.veetle.com/">www.veetle.com</a>.</p>
<div id="attachment_1485" class="wp-caption aligncenter" style="width: 594px"><a href="http://www.gironimo.org/wp-content/uploads/2011/07/veetle.jpg"><img class="size-full wp-image-1485" title="veetle" src="http://www.gironimo.org/wp-content/uploads/2011/07/veetle.jpg" alt="Veetle Plugin" width="584" height="159" /></a><p class="wp-caption-text">Installiertes Veetle Plugin unter Google Chrome auf einem 64-Bit Ubuntu</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/netzwelt/howto-veetle-ubuntu-64-bit-installieren.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SWFUpload in Django integrieren</title>
		<link>http://www.gironimo.org/webentwicklung/swfupload-django-integrieren.html</link>
		<comments>http://www.gironimo.org/webentwicklung/swfupload-django-integrieren.html#comments</comments>
		<pubDate>Sun, 03 Jul 2011 15:34:48 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Flash Uploader]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Multi File Upload]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SWFUpload]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1462</guid>
		<description><![CDATA[Mit dem SWFUpload Cookies Plugin und einer Django Middleware, lässt sich der Flash-basierte SWFUpload einfach und komfortabel in Django integrieren. Der Vorteil der ganze Prozedur ist für die Benutzer der Seite ein wesentlich einfacher Upload Mechanismus, welcher es erlaubt mehrere Dateien gleichzeitig hochzuladen. Mit diesem kleinen Tutorial...]]></description>
			<content:encoded><![CDATA[<p>Mit dem <strong>SWFUpload Cookies Plugin</strong> und einer <strong>Django Middleware</strong>, lässt sich der Flash-basierte SWFUpload einfach und komfortabel in Django integrieren. Der Vorteil der ganze Prozedur ist für die Benutzer der Seite ein wesentlich einfacher Upload Mechanismus, welcher es erlaubt mehrere Dateien gleichzeitig hochzuladen. Mit diesem kleinen Tutorial möchte ich euch zeigen wie das ganze funktioniert.</p>
<h3>Ein paar Worte zu Beginn</h3>
<p>Warum überhaupt ein ganzes Tutorial, mehr als einwenig Javascript und Python Code ist das ganze ja nicht. Eigentlich ja, jedoch gibt es genau dort ein kleines Problem. Django&#8217;s Authentifizierungssystem gibt bei jeder Server Anfrage den Session-Token via Browser Cookie weiter. SWFUpload hingegen sendet den <code>sessionid</code> Cookie nicht weiter. Somit sieht Django im View nur das <code>request.user</code> ein <code>AnonymousUser</code> ist, egal ob der Uploader authentifiziert war oder nicht.</p>
<p>Um das Problem zu beheben benötigen wir das SWFUpload Cookie Plugin, was nicht mehr als ein wenig JavaScript Code ist, welcher die aktuellen Cookies hinzufügt. Dann werden wir eine Middleware in Django schreiben welche uns den Session Token extrahiert und zurück zu <code>request.COOKIES</code> schreibt.</p>
<h3>Vorbereitung</h3>
<p>Ich zeige das ganze Vorgehen nun bei dem Beispiel einer (einfachen) Bildergalerie in Django und ich gehe davon aus das euer Webserver statische Dateien wie in <code>settings.MEDIA_ROOT</code> ausliefert und diese im Web via <code>settings.MEDIA_URL</code> zugänglich macht (siehe <a title="Django Dokumentation statische Dateien" href="http://docs.djangoproject.com/en/dev/howto/static-files/">Django Dokumentation</a>).</p>
<p>Zuerst einmal unser Model in gallery.models</p>
<pre class="brush: python; title: ; notranslate">
from django.db import Models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from tagging.fields import TagField
from tagging.models import Tag
from category.models import Category

def get_image_path(instance, filename):
    '''
        Create dynamic image upload path for every gallery
    '''
    return 'gallery/%s/%s' % (str(instance.album.slug), filename)

class Album(models.Model):
    '''
        Model for an gallery
    '''
    name = models.CharField(max_length=150, verbose_name=_('Name'))
    slug = models.SlugField(max_length=150, unique=True)
    content = models.TextField(verbose_name=_('Beschreibung'), blank=True, null=True)

    user = models.ForeinKey(User, related_name='user')
    category = models.ForeignKey(Category, related_name='category', verbose_name=_('Kategorie')

    def __unicode__(self):
        return self.name

    @models.permalink
    def get_absolute_url(self):
        return 'gallery_detail', (), {'slug': self.slug}

    class Meta:
        verbose_name = _(u'Fotoalbum')
        verbose_name_plural = _(u'Fotoalben')

class Picture(models.Model):
    '''
        Model for images. Every Image must have a gallery.
    '''
    album = models.ForeignKey(Album, related_name='album')

    image = models.ImageField(max_length=180, upload_to=get_image_path, verbose_name=_('Bild'))
    content = models.TextField(verbose_name=_('Beschreibung'), blank=True, null=True)
    tags = TagField()

    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self, tags):
        return Tag.objects.get_for_object(self)

    def __unicode__(self):
        return '%s Picture #%d'% (self.album.name, self.id)

    class Meta:
        verbose_name = _(u'Foto')
        verbose_name_plural = _(u'Fotos')
</pre>
<p>Nun gehen wir davon aus, das in unser View per gallery_add erreicht wird. Will heißen in der urls.py wird der view mit diesem Name versehen. Bevor wir uns jedoch um den View kümmern integrieren wir erst einmal SWFUpload ins Template (bei mir gallery/add.html). Also zunächst einmal das Core Package von SWFUpload <a href="http://code.google.com/p/swfupload/downloads/list">downloaden</a>, Archiv entpacken und die Dateien <code>Flash/swfupload.swf</code>, <code>swfupload.js</code> und <code>plugins/swfupload.cookies.js</code> ins <code>settings.MEDIA_ROOT</code> Verzeichnis verschieben. Im Template selbst nun die JavaScript Dateien einfügen.</p>
<h3>SWFUpload integrieren</h3>
<p>Der nächste Schritt ist SWFUpload mit ein klein bißchen JavaScript verfügbar zu machen. In der <a title="SWFUpload Dokumenation" href="http://demo.swfupload.org/Documentation/">Dokumentation</a> von SWFUpload ist vieles weitaus ausführlicher beschrieben, wie ich das hier mache, ich beschränke mich auf wesentliche.</p>
<pre class="brush: jscript; title: ; notranslate">
var swfu;

    SWFUpload.onload = function () {
        var settings = {
            flash_url: '{{ MEDIA_URL }}swfupload.swf',
            upload_url: '{% url gallery_add slug=slug %}',
            file_size_limit: '10 MB',
            file_types: '*.*',
            file_types_description: 'Bilddateien',
            file_upload_limit: 100,
            file_queue_limit: 0,
            custom_settings: {
                progressTarget : 'fsUploadProgress',
                cancelButtonId : 'btnCancel'
            },
            post_params: {
                'csrfmiddlewaretoken': '{{ csrf_token }}',
                'slug': '{{ slug }}'
            },
            debug: false,

            // Button Settings
            button_placeholder_id: &quot;spanButtonPlaceholder&quot;,
            button_width: 128,
            button_height: 30,
            button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
            button_cursor: SWFUpload.CURSOR.HAND,

            // The event handler functions are defined in handlers.js
            swfupload_loaded_handler: swfUploadLoaded,
            file_queued_handler: fileQueued,
            file_queue_error_handler: fileQueueError,
            file_dialog_complete_handler: fileDialogComplete,
            upload_start_handler: uploadStart,
            upload_progress_handler: uploadProgress,
            upload_error_handler: uploadError,
            upload_success_handler: uploadSuccess,
            upload_complete_handler: uploadComplete,
            queue_complete_handler: queueComplete,	// Queue plugin event

            // SWFObject settings
            minimum_flash_version: &quot;9.0.28&quot;,
            swfupload_pre_load_handler: swfUploadPreLoad,
            swfupload_load_failed_handler: swfUploadLoadFailed
        };

        swfu = new SWFUpload(settings);
    }
</pre>
<p>Der Parameter <code>flash_url</code> muss auf die <code>swfupload.url</code> verweisen, der Parameter <code>upload_url</code> verweist demnach auf unseren View, den ich später vorstelle. Was zu beachten ist, die URL die zum View führt wird via Slug weitergegeben.</p>
<p>Wie man bereits erkennt hab ich hier <code>custom_settings</code> angegeben und die ganzen Handler-Funktionen ausgelagert. Aber es reicht auch ein minimales Setup wie in der Dokumenation oder <a href="http://demo.swfupload.org/v220/index.htm" title="SWFUpload Demos">Demos</a> beschrieben.</p>
<p>Wichtig sind jedoch die Parameter in <code>post_params</code>! Hier geben wir den <code>csrf_token</code> sowie unseren Slug via POST mit. Das ist wichtig, sonst wird Django böse wenn wir im POST ohne <strong>Cross-Site-Request-Forgey</strong> &#8211; Token ankommen!</p>
<p>Hier meine komplette gallery/add.html:</p>
<pre class="brush: xml; title: ; notranslate">
{% extends &quot;base.html&quot; %}
{% load i18n %}

{% block title %}{% trans &quot;Bilder hinzufügen | fha-django-gallery&quot; %}{% endblock %}

{% block extrahead %}
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;all&quot; href=&quot;{{ MEDIA_URL }}swfupload.css&quot; /&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;{{ MEDIA_URL }}swfupload.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;{{ MEDIA_URL }}swfupload.queue.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;{{ MEDIA_URL }}swfupload.swfobject.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;{{ MEDIA_URL }swfupload.cookies.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;{{ MEDIA_URL }swfupload.fileprogress.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;{{ MEDIA_URL }}swfupload.handlers.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
    var swfu;

    SWFUpload.onload = function () {
        var settings = {
            flash_url: '{{ MEDIA_URL }swfupload.swf',
            upload_url: '{% url gallery_add slug=slug %}',
            file_size_limit: '10 MB',
            file_types: '*.*',
            file_types_description: 'Bilddateien',
            file_upload_limit: 100,
            file_queue_limit: 0,
            custom_settings: {
                progressTarget : 'fsUploadProgress',
                cancelButtonId : 'btnCancel'
            },
            post_params: {
                'csrfmiddlewaretoken': '{{ csrf_token }}',
                'slug': '{{ slug }}'
            },
            debug: false,

            // Button Settings
            button_placeholder_id: &quot;spanButtonPlaceholder&quot;,
            button_width: 128,
            button_height: 30,
            button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
            button_cursor: SWFUpload.CURSOR.HAND,

            // The event handler functions are defined in handlers.js
            swfupload_loaded_handler: swfUploadLoaded,
            file_queued_handler: fileQueued,
            file_queue_error_handler: fileQueueError,
            file_dialog_complete_handler: fileDialogComplete,
            upload_start_handler: uploadStart,
            upload_progress_handler: uploadProgress,
            upload_error_handler: uploadError,
            upload_success_handler: uploadSuccess,
            upload_complete_handler: uploadComplete,
            queue_complete_handler: queueComplete,	// Queue plugin event

            // SWFObject settings
            minimum_flash_version: &quot;9.0.28&quot;,
            swfupload_pre_load_handler: swfUploadPreLoad,
            swfupload_load_failed_handler: swfUploadLoadFailed
        };

        swfu = new SWFUpload(settings);
    }
    &lt;/script&gt;
{% endblock %}

{% url gallery_add slug=slug as gallery_add %}

{% block breadcrumbs %}
    {% blocktrans %}
        Sie befinden sich hier: &lt;a href=&quot;/&quot;&gt;fha-django-gallery&lt;/a&gt; &amp;raquo;
        &lt;a href=&quot;/account/profile/&quot;&gt;Account&lt;/a&gt; &amp;raquo;
        &lt;a href=&quot;{{ gallery_add }}&quot;&gt;Bilder hinzufügen&lt;/a&gt;
    {% endblocktrans %}
{% endblock %}

{% block content %}
    &lt;h2&gt;{% trans &quot;Bilder zur Galerie hinzufügen&quot; %}&lt;/h2&gt;
    &lt;p&gt;{% trans &quot;Um Bilder zur Galerie hinzuzufügen, wählen sie diese bitte aus und klicken anschließend auf Weiter&quot; %}&lt;/p&gt;
    &lt;p&gt;&lt;a href=&quot;{% url gallery_edit slug=slug %}&quot; class=&quot;button blue&quot;&gt;{% trans &quot;Weiter&quot; %}&lt;/a&gt;&lt;/p&gt;
    &lt;div id=&quot;divSWFUploadUI&quot;&gt;
        &lt;div class=&quot;fieldset flash&quot; id=&quot;fsUploadProgress&quot;&gt;
            &lt;span class=&quot;legend&quot;&gt;Warteschlange&lt;/span&gt;
        &lt;/div&gt;
        &lt;p id=&quot;divStatus&quot;&gt;0 Dateien hochgeladen&lt;/p&gt;
        &lt;p&gt;
            &lt;span id=&quot;spanButtonPlaceholder&quot;&gt;&lt;/span&gt;
            &lt;button id=&quot;btnUpload&quot; class=&quot;red&quot; type=&quot;button&quot;&gt;Dateien auswählen&lt;/button&gt;
            &lt;button id=&quot;btnCancel&quot; type=&quot;button&quot; disabled=&quot;disabled&quot;&gt;Uploads abbrechen&lt;/button&gt;
        &lt;/p&gt;
    &lt;/div&gt;
    &lt;noscript style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px;&quot;&gt;
        {% trans &quot;We're sorry. SWFUpload could not load. You must have JavaScript enabled to enjoy SWFUpload.&quot; %}
    &lt;/noscript&gt;
    &lt;div id=&quot;divLoadingContent&quot; class=&quot;content&quot; style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;&quot;&gt;
        {% trans &quot;SWFUpload is loading. Please wait a moment...&quot; %}
    &lt;/div&gt;
    &lt;div id=&quot;divLongLoading&quot; class=&quot;content&quot; style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;&quot;&gt;
        {% trans &quot;SWFUpload is taking a long time to load or the load has failed.  Please make sure that the Flash Plugin is enabled and that a working version of the Adobe Flash Player is installed.&quot; %}
    &lt;/div&gt;
    &lt;div id=&quot;divAlternateContent&quot; class=&quot;content&quot; style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;&quot;&gt;
        {% blocktrans %}
            We're sorry. SWFUpload could not load. You may need to install or upgrade Flash Player. Visit the &lt;a href=&quot;http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&quot;&gt;Adobe website&lt;/a&gt; to get the Flash Player.
        {% endblocktrans %}
    &lt;/div&gt;
{% endblock %}
</pre>
<h3>Schreiben der Middleware</h3>
<p>Als vorletzten Schritt müssen wir eine <strong>Middleware in Django</strong> schreiben. Keine Sorge klingt schlimmer wie es eigentlich ist <img src='http://www.gironimo.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . In der Middleware müssen wir mehrere Dinge beachten: Den Slug extrhahieren, genauso mit dem csrf_token fungieren und ganz wichtig die <code>sessionid</code> aus dem POST rausholen und in <code>request.COOKIES</code> schreiben. Das ganze am Besten unter gallery/middleware.py schreiben.</p>
<p>Hier nun die komplette Middleware:</p>
<pre class="brush: python; title: ; notranslate">
&quot;&quot;&quot;
    This middleware etracts slug, csrf_token and sessionid and gives them django back.
&quot;&quot;&quot;

from django.conf import settings
from django.core.urlresolvers import reverse

class SWFUploadMiddleware(object):
    def process_request(self, request):
        if request.POST.has_key('slug'):
            if (request.method == 'POST') and (request.path == reverse('gallery_add', kwargs={'slug': request.POST['slug']})):
                if request.POST.has_key(settings.SESSION_COOKIE_NAME):
                    request.COOKIES[settings.SESSION_COOKIE_NAME] = request.POST[settings.SESSION_COOKIE_NAME]
                if request.POST.has_key('csrftoken'):
                    request.COOKIES['csrftoken'] = request.POST['csrftoken']
</pre>
<p>Wie gesagt nicht viel Code und relativ einfach ist es auch. Jedoch müssen wir die Middleware noch in die <code>settings.py</code> einfügen damit Django diese auch kennt. Das ganze sollte am Besten an die <strong>zweite Stelle der Middlewares</strong> eingefügt werden.</p>
<pre class="brush: python; title: ; notranslate">
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'gallery.middleware.SWFUploadMiddleware', #adds our new middleware
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
</pre>
<h3>Den Upload verarbeiten</h3>
<p>So als letztes brauchen wir noch den View der unsere hochgeladenen Bilder entgegen nimmt und verarbeitet. Selbstverständlich funktioniert das nur wenn man angemeldet ist&#8230; wär ja schrecklich wenn jeder User irgendwas hochladen dürfte&#8230;</p>
<p>Das ganze ist nicht besonders kompliziert, Django typisch halt. Die Dateien kommen in <code>request.FILES</code> an, über diese müssen wir iterieren und daraus ein Objekt erstellen.</p>
<pre class="brush: python; title: ; notranslate">
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponse
from django.contrib.auth.decorators import login_required
from django.middleware.csrf import get_token
from gironimo.gallery.models import Album, Picture

@login_required
def add(request, slug):
    '''
        Adds new images to a given gallery, only authenticated access
    '''
    if request.method == 'POST':
        album = Album.objects.get(slug=slug)
        for field_name in request.FILES:
            image = request.FILES[field_name]

            picture = Picture.objects.create(album=album, image=image)
            picture.save()

        # say ok to SWFUploader
        return HttpResponse(&quot;ok&quot;, mimetype=&quot;text/plain&quot;)

    else:
        return render_to_response('gallery/add.html', {
            'slug': slug,
            'csrf_token': get_token(request)
        }, context_instance=RequestContext(request))
</pre>
<p>Das wars! Wichtig ist nur das wir den <code>csrf_token</code> mitgeben und SWFUpload ein <code>HttpResponse</code> zurück geben, damit er weiß das alles OK war.</p>
<p>Nun sollte das ganze bei euch wunderbar funktionieren, jedoch bleibt noch viel Arbeit das ganze schön aussehen zu lassen denn Flash Sachen nerven beim designen.</p>
<p>Sollte ich irgendwo einen Fehler gemacht haben oder Blödsinn aufgeschrieben haben, sagt mir das wär echt super. Auch für Verbesserungsvorschläge oder andere Ideen wäre ich dankbar (natürlich ist ein Danke auch super <img src='http://www.gironimo.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/webentwicklung/swfupload-django-integrieren.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Artikel auf webmasterpro.de</title>
		<link>http://www.gironimo.org/netzwelt/artikel-auf-webmasterpro.html</link>
		<comments>http://www.gironimo.org/netzwelt/artikel-auf-webmasterpro.html#comments</comments>
		<pubDate>Tue, 12 Apr 2011 19:39:39 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Netzwelt]]></category>
		<category><![CDATA[Buchrezensionen]]></category>
		<category><![CDATA[Cross-Site-Scripting]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[SQL-Injection]]></category>
		<category><![CDATA[Web-Sicherheit]]></category>
		<category><![CDATA[Webdesigner]]></category>
		<category><![CDATA[Webentwickler]]></category>
		<category><![CDATA[Webmaster]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1440</guid>
		<description><![CDATA[Auf webmasterpro.de &#8211; Das Portal für Webentwickler, Webdesigner und Webmaster &#8211; veröffentliche ich hin und wieder einige Fachartikel zu Themen wie JavaScript, Web-Sicherheit oder Webentwicklung mit Django. Auch einige Buchrezensionen finden sich dort. Diese Seite soll einen Überblick meiner bisherigen Publikationen darstellen und wird fortlaufend...]]></description>
			<content:encoded><![CDATA[<p>Auf <a title="Tutorials, Tipps &amp; Tricks für Webmaster auf Webmasterpro.de" href="http://www.webmasterpro.de/">webmasterpro.de</a> &#8211; Das Portal für <strong>Webentwickler</strong>, <strong>Webdesigner</strong> und <strong>Webmaster</strong> &#8211; veröffentliche ich hin und wieder einige Fachartikel zu Themen wie <strong>JavaScript</strong>, <strong>Web-Sicherhei</strong>t oder <strong>Webentwicklung mit Django</strong>. Auch einige Buchrezensionen finden sich dort. Diese Seite soll einen Überblick meiner bisherigen Publikationen darstellen und wird fortlaufend aktualisiert.</p>
<h3>Artikelserie Web-Sicherheit:</h3>
<ul>
<li><strong><a href="http://www.webmasterpro.de/server/article/sicherheit-sql-injection.html">SQL-Injection</a></strong><br />
SQL-Injection (dt. SQL-Einschleusung) bezeichnet das Ausnutzen einer Sicherheitslücke in Zusammenhang mit SQL-Datenbanken, die durch mangelnde Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht. Der Angreifer versucht dabei, über die Anwendung, die den Zugriff auf die Datenbank bereitstellt, eigene Datenbankbefehle einzuschleusen. Dieser Artikel zeigt die Funktionsweise einer SQL-Injection sowie einfach zu implementierende Gegenmaßnahmen. [<a href="http://www.webmasterpro.de/server/article/sicherheit-sql-injection.html">Artikel lesen</a>]</li>
<li><strong><a href="http://www.webmasterpro.de/server/article/sicherheit-cross-site-scripting.html">Cross-Site-Scripting (XSS)</a></strong><br />
Mit Cross-Site Scripting (XSS) wird das Ausnutzen einer Computersicherheitslücke in Webanwendungen bezeichnet, indem ein Angreifer Webseiten mit clientseitigen Skripten infiziert, die von anderen Nutzern aufgerufen werden. Der Artikel geht auf Folgen und Funktionsweise dieser Methodik ein und veranschaulicht Schutzmaßnahmen für Webseitenbetreiber. [<a href="http://www.webmasterpro.de/server/article/sicherheit-cross-site-scripting.html">Artikel lesen</a>]</li>
<li><strong><a href="http://www.webmasterpro.de/server/article/sicherheit-header-injection.html">Header-Injection</a></strong><br />
Header-Injection ist eine Klasse von Sicherheitslücken in Webanwendungen, welche auftreten, wenn die Header eines Protokolls dynamisch unter Hinzunahme von unzureichend geprüften Benutzereingaben generiert werden. Hier beschreibe ich anhand eines Beispiels die Funktionsweise und entsprechende Maßnahmen gegen die Ausnutzung solch eines Angriffs. [<a href="http://www.webmasterpro.de/server/article/sicherheit-header-injection.html">Artikel lesen</a>]</li>
<li><strong><a href="http://www.webmasterpro.de/server/article/sicherheit-http-response-splitting.html">HTTP-Response Splitting</a></strong><br />
Einfügen präparierter Inhalte in den HTTP-Header um die Seitendarstellung und Seiteninhalte zu manipulieren. Dieser Artikel geht auf die möglichen Folgen, die Funktionsweise und Gegenmaßnahmen ein. [<a href="http://www.webmasterpro.de/server/article/sicherheit-http-response-splitting.html">Artikel lesen</a>]</li>
</ul>
<h3>Buchrezensionen:</h3>
<ul>
<li><strong><strong>xt:Commerce Veyton 4</strong></strong> [<a href="http://www.webmasterpro.de/coding/article/php-buch-xtcommerce-veyton-4.html">Rezension lesen</a>]<strong><br />
</strong></li>
<li><strong>Web X.0 Erfolgreiches Webdesign und professionelle Webkonzepte </strong>[<a href="http://www.webmasterpro.de/design/article/konzeption-buch-web-x0-erfolgreiches-webdesign-und-professionelle-webkonzepte.html">Rezension lesen</a>]</li>
<li><strong>jQuery: Das Praxishandbuch </strong>[<a href="http://www.webmasterpro.de/coding/article/javascript-buch-jquery-das-praxisbuch.html">Rezension lesen</a>]</li>
<li><strong>Fortgeschrittene CSS-Techniken &#8211; inkl. Debugging und Performace-Optimierung</strong> [<a href="http://www.webmasterpro.de/coding/article/buch-fortgeschrittene-css-techniken-inkl-debugging-und-performace-optimierung.html">Rezension lesen</a>]</li>
<li><strong>Sichere Webanwendungen &#8211; das Praxishandbuch für Webentwickler</strong> [<a href="http://www.webmasterpro.de/coding/article/werkzeuge-sichere-webanwendungen-das-praxishandbuch-fuer-webentwickler.html">Rezension lesen</a>]</li>
<li><strong>Magento &#8211; Installation, Anwendung, Erweiterung</strong> [<a href="http://www.webmasterpro.de/coding/article/cms-buch-magento-installation-anwendung-erweiterung.html">Rezension lesen</a>]</li>
<li><strong>Recht für Grafiker und Webdesigner (Ausgabe 2011)</strong> [<a href="http://www.webmasterpro.de/management/article/buch-recht-fuer-grafiker-und-webdesigner-ausgabe-2011.html">Rezension lesen</a>]</li>
</ul>
<h3>Weitere Artikel:</h3>
<ul>
<li><strong><a href="http://www.webmasterpro.de/coding/article/tooltips-mit-query-erstellen.html">Tooltips mit JavaScript erzeugen &#8211; jQuery</a></strong><br />
In diesem kleinen Artikel wollen wir mit Hilfe von jQuery eine Tooltip auf Albert Einsteins Zunge legen. [<a href="http://www.webmasterpro.de/coding/article/tooltips-mit-query-erstellen.html">Artikel lesen</a>]</li>
<li><strong><a href="http://www.webmasterpro.de/management/article/webspace-hosting-ud-media-webspace-wehosting.html">UD Media Webspace &amp; Webhosting</a><br />
</strong>Kleine Vorstellung des deutschen Internetproviders. [<a href="http://www.webmasterpro.de/management/article/webspace-hosting-ud-media-webspace-wehosting.html">Artikel lesen</a>]</li>
</ul>
<p>weitere News, Artikel und Neuigkeiten findet ihr auf meiner Profilseite bei <a href="http://www.webmasterpro.de/user/gironimo/">webmasterpro.de</a>. Viel Spaß beim Lesen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/netzwelt/artikel-auf-webmasterpro.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 und Box Shadows</title>
		<link>http://www.gironimo.org/webentwicklung/css3-boxshadow.html</link>
		<comments>http://www.gironimo.org/webentwicklung/css3-boxshadow.html#comments</comments>
		<pubDate>Tue, 04 Jan 2011 20:42:53 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[W3]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1423</guid>
		<description><![CDATA[Wer ist es nicht langsam leid, immer wieder die tollen Photoshop Designvorlagen zu slicen nur um damit viele einzelne Bilder (oder ein etwas größeres, mit Sprites) zu erstellen die schlussendlich auf der Webseite verwendet werden sollen. Dabei geht es auch soviel einfacher seitdem es HTML5...]]></description>
			<content:encoded><![CDATA[<p>Wer ist es nicht langsam leid, immer wieder die tollen <strong>Photoshop Designvorlagen</strong> zu slicen nur um damit viele einzelne Bilder (oder ein etwas größeres, mit Sprites) zu erstellen die schlussendlich auf der Webseite verwendet werden sollen. Dabei geht es auch soviel einfacher seitdem es <strong>HTML5</strong> und <strong>CSS3</strong> endlich gibt.</p>
<p><strong>Update 14.04.2011:</strong><br />
Adobe hat mittlerweile die <strong>Creative Suite CS5.5</strong> angekündigt, das am 3. Mai erscheinen soll. Unter anderem sollen viele Updates für HTML5 enthalten sein. Die <strong><a href="http://www.webmasterpro.de/design/news/2011/04/13/cs-5-5-kaufen-ab-mai-creative-suite-student.html">Adobe Creative Suite 5.5 Students</a></strong> ist bis zu 80% billiger zu haben.</p>
<p>Mithilfe von CSS3 kann beispielsweise ein <strong>Text einen Schatten</strong> bekommen oder eine <strong>ganze Box</strong>. <strong>Verläufe im Hintergrund</strong> sind auch möglich ohne Bilder zu verwenden. Eigene Schriftarten können auf die Webseite eingebettet, usw usf. Für jeden Webdesigner/Webentwickler ist es ein Muss, sich mit HTML5 und CSS3 zu beschäftigen. Doch wo liegt der Vorteil? Ganz klar, die <strong>Performance ist deutlich besser</strong>, außerdem müssen sich Webentwickler ohne große Photoshop Kenntnisse nicht mehr abmühen, bis sie endlich an die richtige Arbeit können.<br />
Im folgenden möchte ich euch zeigen, was mit mit der CSS3 Eigenschaft <code>box-shadow</code> möglich ist.</p>
<div id="attachment_1426" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.gironimo.org/wp-content/uploads/2011/01/boxshadow-normal.png"><img class="size-full wp-image-1426" title="boxshadow-normal" src="http://www.gironimo.org/wp-content/uploads/2011/01/boxshadow-normal.png" alt="CSS3 Eigenschaft box-shadow" width="320" height="320" /></a><p class="wp-caption-text">Normale Box mit einfachen box-shadow</p></div>
<p>Jedoch ist ein viel &#8220;schönerer&#8221; Effekt ebenfalls möglich:</p>
<div id="attachment_1427" class="wp-caption aligncenter" style="width: 340px"><a href="http://www.gironimo.org/wp-content/uploads/2011/01/boxshadow-cool.png"><img class="size-full wp-image-1427" title="boxshadow-cool" src="http://www.gironimo.org/wp-content/uploads/2011/01/boxshadow-cool.png" alt="CSS Eigenschaft box-shadow besser" width="330" height="330" /></a><p class="wp-caption-text">Box mit coolem box-shadow</p></div>
<p>Das alles ist möglich mit reinem <strong>CSS</strong> und <strong>einem DIV</strong>! Also ran an die Arbeit!</p>
<h3>1. Schritt: Grundgerüst erstellen</h3>
<p>In eurem HTML-Dokument reicht es wenn ihr folgendes erstellt:</p>
<pre class="brush: xml; title: ; notranslate">&lt;div id=&quot;box&quot;&gt;
    Nice CSS3 Box Shadow
&lt;/div&gt;</pre>
<p>Mit einem einzigen DIV können wir viele tolle Sachen in CSS machen. Wir werden nun einen <strong>Verlauf</strong>, <strong>text-shadow</strong>, <strong>box-shadow</strong> sowie die etwas experimentelle CSS Eigenschaft <strong>transform: matrix</strong> verwenden.</p>
<h3>2. Schritt: CSS Grundlayout</h3>
<p>Achtung: Es sind hier nur Webkit Prefixe eingearbeitet. Mozilla (<strong>-moz-</strong>) und Opera (<strong>-o-)</strong> fehlen hier, können aber selbstverständlich ebenfalls verwendet werden.</p>
<pre class="brush: css; title: ; notranslate">* {
    margin: 0;
    padding: 0;
}
body {
    background-color: #ddd;
    font-family: Trebuchet MS, Arial, Verdana, Helvetica, sans-serif;
    font-size: 100.01%;
}
#box {
    width: 300px;
    height: 220px;
    margin: 50px auto;
    position: relative;
    background: -webkit-gradient(linear, 0 0, 0 100%, from(#fefbb0), to(#fff955));
    -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.4);
    -webkit-border-radius: 10px;
    font-size: 2em;
    color: #fff;
    text-shadow: 1px 1px 2px rgba(1, 1, 1, 0.8);
    text-align: center;
    padding-top: 80px;
}</pre>
<p>Also was machen wir? Wir geben unserer Box eine Höhe, Breite sowie position: relative, das wir später noch brauchen, sowie einen Hintergrundverlauf mit <code>gradient</code>. Die Box bekommt auch gleich einen einfachen Schatten. Zudem setzen wir Angaben zur Schrift.</p>
<h3>3. Schritt: Pseduo Klassen :before und :after machen tolle Effekte</h3>
<p>Mit den Pseudo Klassen <code>:before</code> und <code>:after</code> werden wir nun den Effekt zaubern. Beide müssen <strong>position: absolute</strong> bekommen, damit wir sie genau auf die Box ausrichten können (merke position: relative von #box). Zudem setzen wir beide Pseudo Klassen mit einem <code>z-index</code> hinter die Box. Dort wo ein Schatten auch sein sollte&#8230;</p>
<pre class="brush: css; title: ; notranslate">#box:before,
#box:after {
    position: absolute;
    content:'';
    background-color: transparent;
    bottom: 12px;
    width: 70%;
    height: 60px;
    z-index: -1;
    -webkit-border-radius: 10px;
}
#box:before {
    -webkit-box-shadow: -14px 12px 10px rgba(2, 2, 2, 0.6);
    -webkit-transform: matrix(1, -0.05, -0.2, 1, 0, 0);
    left: 15px;
}
#box:after {
    -webkit-box-shadow: 14px 12px 10px rgba(2, 2, 2, 0.6);
    -webkit-transform: matrix(1, 0.05, 0.2, 1, 0, 0);
    right: 15px;
}</pre>
<p>Hier kommt CSS3 richtig zum Einsatz. Mithilfe von <strong>rgba Angaben</strong> und box-shadow erzeugen wir eine neue Box mit Schatten (jeweils für :before und :after). Die transformieren wir. Mit einer Matrix Angabe können wir die Box unseren Wünschen anpassen. Wer dazu mehr Informationen möchte, sollte sich die <a title="transform Spezifikation CSS3" href="http://www.w3.org/TR/css3-2d-transforms/#transform-property">Spezifikation des W3 ansehen</a>.</p>
<p>Versucht mal den z-index wegzulassen, bzw höher zu stellen, und ihr werdet sehen, welche Boxen, die als Schatten herhalten, wirklich erzeugt werden. Viel Spaß dabei.</p>
<p>Wer eine kreative und innovative <strong>CSS3 und HTML5 Homepage</strong> erstellen möchte, jedoch nicht selbst Hand anlegen will, sollte sich mal bei der <a href="http://www.team23.de/kompetenzen/webagentur.html">Webagentur Team23</a> umsehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/webentwicklung/css3-boxshadow.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Das Jahr 2010 in der Statistik</title>
		<link>http://www.gironimo.org/webseite/das-jahr-2010-in-der-statistik.html</link>
		<comments>http://www.gironimo.org/webseite/das-jahr-2010-in-der-statistik.html#comments</comments>
		<pubDate>Fri, 31 Dec 2010 09:26:14 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Webseite]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1412</guid>
		<description><![CDATA[Der letzte Tag im Jahr, überall wurden wir schon mit Rückblicken und Statistiken über das Jahr 2010 genervt. Für mich, als Betreiber der Webseite, ist es sehr interessant zu sehen inwieweit die Besucherzahlen im Vergleich zum Vorjahr aussehen. Wer möchte kann die Statistik vom letzten...]]></description>
			<content:encoded><![CDATA[<p>Der letzte Tag im Jahr, überall wurden wir schon mit Rückblicken und Statistiken über das Jahr 2010 genervt. Für mich, als Betreiber der Webseite, ist es sehr interessant zu sehen inwieweit die Besucherzahlen im Vergleich zum Vorjahr aussehen. Wer möchte kann die Statistik vom letzten Jahr <a href="/webseite/statistiken-zum-jahresende.html">hier ansehen</a>.</p>
<p>Alle Statistiken wurden mithilfe von Google Analytics erstellt. Das heißt zum einen auch, das eventuell nicht alle Besucher erfasst sind, da es nun ja auch Plugins gibt um Google Analytics auszuschalten und Personen die ohne JavaScript surfen, werden ebenfalls nicht erfasst.</p>
<p>Das wichtigste zuerst, die Gesamtstatistiken:</p>
<table>
<thead>
<tr>
<th></th>
<th>2010</th>
<th>2009</th>
<th>Veränderung:</th>
</tr>
</thead>
<tbody>
<tr>
<td>Seitenzugriffe</td>
<td><strong>14.856</strong></td>
<td>6.082</td>
<td><span style="color: #00ff00;"><strong>+ 144 %</strong></span></td>
</tr>
<tr>
<td>Seiten/Besuch</td>
<td><strong>2,34</strong></td>
<td>2,03</td>
<td><span style="color: #00ff00;"><strong>+ 15 %</strong></span></td>
</tr>
<tr>
<td>Besuchszeit (Durchschnitt)</td>
<td><strong>02:05 min</strong></td>
<td>01:54 min</td>
<td><span style="color: #00ff00;"><strong>+ 9 %</strong></span></td>
</tr>
</tbody>
</table>
<p>Statistiken sind toll, mir zeigt es eindeutig das meine Homepage mehr Besucher anzieht und diese auch nicht sofort wieder abhauen, sondern auch lesen was hier alles gibt.</p>
<p>Die TOP 5 der verwendeten Browser:</p>
<table>
<thead>
<tr>
<th></th>
<th>Zugriffe:</th>
<th>Anteil:</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mozilla Firefox</td>
<td><strong>3.815</strong></td>
<td>60,12 %</td>
</tr>
<tr>
<td>Google Chrome</td>
<td><strong>1.121</strong></td>
<td>17,67 %</td>
</tr>
<tr>
<td>Internet Explorer</td>
<td><strong>965</strong></td>
<td>15,21 %</td>
</tr>
<tr>
<td>Apple Safari</td>
<td><strong>210</strong></td>
<td>3,31 %</td>
</tr>
<tr>
<td>Opera</td>
<td><strong>186</strong></td>
<td>2,93 %</td>
</tr>
</tbody>
</table>
<p>Hier lässt sich auch allgemein einiges ableiten. Google Chrome feiert einen Siegeszug durchs Internet. Mozilla Firefox ist in Deutschland weitestgehend der am meisten genutzte Browser während der Internet Explorer immer mehr Marktanteil verliert. Opera und Safari teilen sich dann die unteren Plätze.</p>
<p>Die TOP 5 der verwendeten Betriebssysteme:</p>
<table>
<thead>
<tr>
<th></th>
<th>Anteil 2010:</th>
<th>Anteil 2009:</th>
</tr>
</thead>
<tbody>
<tr>
<td>Microsoft Windows</td>
<td><strong>66,02 %</strong></td>
<td>60,35 %</td>
</tr>
<tr>
<td>GNU/Linux</td>
<td><strong>28,98 %</strong></td>
<td>33,96 %</td>
</tr>
<tr>
<td>Macintosh</td>
<td><strong>3,69 %</strong></td>
<td>4,48 %</td>
</tr>
<tr>
<td>iPad, iPhone &amp; iPod</td>
<td><strong>1,10 %</strong></td>
<td>0,50 %</td>
</tr>
<tr>
<td>Android</td>
<td><strong>0,09 %</strong></td>
<td>0,07 %</td>
</tr>
</tbody>
</table>
<p>Während der Marktanteil bei Macs und Linux rapide sank (wieso nur???) sieht man einen deutlichen Zuwachs an Windows User, aber auch Mobiltelefone bzw. andere Apple Produkte sind am wachsen.</p>
<p>Am wichtigsten ist jedoch welche Artikel am meisten gelesen von den Besuchern gelesen wurden. Daraus lässt sich auch ableiten welche Zielgruppe eher auf die Webseite kommt. Jedoch verfälschen andere interessante Themen, zu denen nur ein Artikel vorhanden ist, natürlich diese Ableitung. Also zu guter Letzt, die wichtigste Statistik, die am meisten gelesenen Artikel:</p>
<table>
<thead>
<tr>
<th></th>
<th>Zugriffe:</th>
<th>Kategorie:</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/hochschule/python-und-qt-pyqt4.html">Python und Qt – PyQt4</a></td>
<td><strong>924</strong></td>
<td>Hochschule</td>
</tr>
<tr>
<td><a href="/musik/muse-undisclosed-desires.html">Muse – Undisclosed Desires</a></td>
<td><strong>879</strong></td>
<td>Musik</td>
</tr>
<tr>
<td><a href="/sport/wrestlemania-26-countdown.html">Wrestlemania 26 Countdown</a></td>
<td><strong>787</strong></td>
<td>Sport</td>
</tr>
<tr>
<td><a href="/webseite/linux-und-der-desktop-markt.html">Linux und der Desktop Markt</a></td>
<td><strong>749</strong></td>
<td>Webseite</td>
</tr>
<tr>
<td><a href="/handy/neuer-weltrekord-662000-sms-verschickt.html">Neuer Weltrekord: 662.000 SMS verschickt</a></td>
<td><strong>563</strong></td>
<td>Handy</td>
</tr>
<tr>
<td><a href="/leben/resumee-zur-grundausbildung-bei-der-bundeswehr.html">Resümee zur Grundausbildung bei der Bundeswehr</a></td>
<td><strong>554</strong></td>
<td>Leben</td>
</tr>
<tr>
<td><a href="/linux/alte-kernel-inkl-header-loschen.html">Alte Kernel inkl. Header löschen</a></td>
<td><strong>459</strong></td>
<td>Linux</td>
</tr>
<tr>
<td><a href="/hochschule/programmieren-java.html">Programmieren: Java</a></td>
<td><strong>415</strong></td>
<td>Hochschule</td>
</tr>
<tr>
<td><a href="/leben/hassliebe.html">Hassliebe</a></td>
<td><strong>282</strong></td>
<td>Leben</td>
</tr>
<tr>
<td><a href="/computer/es-ist-da-mein-thinkpad-r500.html">Es ist da! Mein ThinkPad R500!</a></td>
<td><strong>265</strong></td>
<td>Computer</td>
</tr>
</tbody>
</table>
<p>Dann bleibt mir nur Danke zu sagen, für die zahlreichen Besucher, die ich dieses Jahr hatte und verspreche gleichzeitig eine Überraschung für 2011, denn die Seite wird gerade generalüberholt. Auch werde ich versuchen oft genug, neue interessante Artikel zu schreiben.</p>
<p>Einen guten Rutsch, und ja nicht ausrutschen!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/webseite/das-jahr-2010-in-der-statistik.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

