<?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>tkar.de</title>
<atom:link href="http://tkar.de/feed.xml" rel="self" type="application/rss+xml" />

      <link>http://tkar.de/</link>
      <description>Weblog von Thomas Kleinhenz</description>
      <language>de</language>
      <copyright>Copyright 2010</copyright>
<lastBuildDate>Mon, 22 Feb 2010 14:54:12 +0100</lastBuildDate>





      <generator>http://www.sixapart.com/movabletype/?v=3.2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
            <item>
         <title>Spamschutz mit ReCaptcha</title>
<dc:creator>Thomas Kleinhenz</dc:creator>
         <description>Um menschliche Nutzer der interaktiven Komponenten einer Website von automatisierten Missbrauchsversuchen zu unterscheiden, stellt man eine kleine Zusatzaufgabe. Man fordert beispielsweise dazu auf, einen eingescannten Text zu entziffern.</description>
<content:encoded><![CDATA[<p><img alt="Captcha-Beispiele" src="/uploads/captcha3.jpg" width="180" height="289" title="Beispiele für Captchas" class="rex" /> Versuche, Menschen und Computer durch Tests zu unterscheiden, haben mit dem Akronym CAPTCHA (<em>Completely Automated Public Turing test to tell Computers and Humans Apart</em>) im neudeutschen Technikslang eine Benennung gefunden. Normalerweise findet man Captchas im Web in Form kleiner Bilderrätsel, deren Lösung als Zeichenfolge in ein Formularfeld eingegeben werden müssen.</p>

<p>In aller Regel werden die Aufgaben speziell für diesen Zweck generiert, entweder mit geeigneten Tools und Funktionsbibliotheken vom eigenen Server oder per Webservice von einem externen Anbieter. Es handelt sich meist um Darstellungen von Buchstaben und Zahlen in unterschiedlichen Fonts, Größen, Farben und Neigungen, die zusätzlich durch Überlagerung mit anderen grafischen Elementen verschleiert werden. Seltener werden Rechenaufgaben oder Wissensfragen gestellt. Alternativ werden manchmal für visuell eingeschränkte Nutzer Höraufgaben angeboten.</p>]]>
<![CDATA[<p>Die Schutzwirkung ist unterschiedlich, da die Qualität der Aufgaben dem rasanten Fortschritt auf dem Gebiet der rechnergestützten Bild-, Sprach- und Texterkennung nicht immer Rechnung trägt. Die Aufgabe muss so gestaltet sein, dass sie für Menschen lösbar ist und zugleich für Maschinen unlösbar ist ... und möglichst lange bleibt. Idealerweise verwendet man &quot;Material&quot;, von dem man weiß, dass es der maschinellen Entschlüsselung widerstanden hat.</p>

<p>An diesem Punkt setzt der Webservice <a href="http://recaptcha.net/" target="_blank" title="reCatcha-Website">reCaptcha</a> der Carnegie Mellon University an, der mittlerweile von Google aufgekauft wurde. Er bietet Text- und Spracherkennungsaufgaben, an denen moderne OCR- und Audio-Erkennungssysteme bei der Digitalisierung von Büchern, Zeitschriften und Rundfunksendungen gescheitert sind. Man bekommt also Captchas von guter Qualität und liefert im Gegenzug durch die Benutzereingaben Beiträge zur Komplettierung der Digitalisierungsprojekte. Aber wie kann der Service entscheiden, ob die Aufgabe richtig gelöst wurde? Ganz einfach: Es werden immer zwei Wörter angezeigt, von denen eines bereits bekannt ist. Um den Test zu bestehen, muss das bekannte Wort richtig erkannt werden. Der Lösungsvorschlag für das neue Wort jedoch fließt in eine statistische Berechnung ein, die irgendwann eine gesicherte Lesart für dieses Wort nachweist.</p>

<p>Die Einbindung von <em>reCaptcha</em> erfolgt über Javascript bzw. im <code>&lt;noscript&gt;</code>-Tag in einem <em>iFrame</em>. Es ist zu überlegen, ob man den <code>&lt;noscript&gt;</code>-Teil nicht völlig weglassen kann, um einen zusätzlichen Schutz vor automatisierten Zugriffen zu erreichen, da viele Spambots nicht oder nur rudimentär mit clientseitigen Scripten zurecht kommen. Die Darstellung der Captcha-Abfrage ist nur bei Einbindung über Javascript konfigurierbar, <a href="http://recaptcha.net/apidocs/captcha/client.html" target="_blank" title="ReCaptcha-Dokumentation">die API ist gut dokumentiert</a>. Sinnvollerweise verwendet man die Bibliothek mit dem AJAX-API, die ein leicht zu handhabendes Javascript-Objekt bereitstellt, das über die <code>create</code>-Funktion konfiguriert und direkt ausgegeben werden kann.</p>

<p class="code"><code>
&lt;script type="text/javascript"&#160;src="http://api.recaptcha.net/js/recaptcha_ajax.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
Recaptcha.create(<br />
&#160;&#160;&#160;&#160;"&lt;api_key&gt;",<br />
&#160;&#160;&#160;&#160;"recaptcha_div", {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;theme: "white",<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lang: "de",<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;...<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;callback: Recaptcha.focus_response_field<br />
&#160;&#160;&#160;&#160;}<br />
);<br />
&lt;/script&gt;<br />
</code></p>

<p>Und hier kann man nach Herzenslust mit diesem Captcha spielen:</p>
<iframe height="190" width="600" scrolling="no" style="border: 0px none ;" src="/captcha.php">
</iframe>

<p>Wird der Schutzmechanismus nur selten benötigt, genügt es, ihn erst bei Bedarf per AJAX zu laden. Ein Beispiel findet man auf meiner <a href="/kontakt.php">Kontaktseite</a>: Der vermeintliche E-Mail-Link dient nur als Trigger für das Laden des Captchas. Erst wenn dieses gelöst wurde, wird die E-Mail-Adresse angezeigt.</p>

<p>Mit <a href="http://mailhide.recaptcha.net/" target="_blank">Mailhide</a> bietet ReCaptcha einen eigenen Service zum Schutz von E-Mail-Adressen an. Auch hier wird die Lösung eines Captchas gefordert, bevor die E-Mail-Adresse angezeigt wird. Leider gibt es bei <em>Mailhide</em> noch keine Möglichkeit, das Layout individuell anzupassen. Außerdem läuft der Service immer in einem eigenen Fenster, lässt sich also nur bedingt in eigene Seiten integrieren. Und es wird Vertrauen vorausgesetzt, denn die zu schützenden E-Mail-Adressen müssen beim Anbieter hinterlegt werden.</p>]]></content:encoded>
         <link>http://tkar.de/javascript/spamschutz_mit_recaptcha.php</link>
         <guid>http://tkar.de/javascript/spamschutz_mit_recaptcha.php</guid>
         <category>JavaScript</category>
         <pubDate>Mon, 22 Feb 2010 14:54:12 +0100</pubDate>
      </item>

            <item>
         <title>Mit oder ohne www</title>
<dc:creator>Thomas Kleinhenz</dc:creator>
         <description>Zur Suchmaschinenoptimierung macht es Sinn, dass eine Website nur entweder mit oder ohne www vor dem URL zu erreichen ist. Man vermeidet die Duplizierung einer Seite durch serverseitige Umleitung.</description>
<content:encoded><![CDATA[<p><img alt="www-Grafik" src="/uploads/www.jpg" width="200" height="200" class="rex" /> Schon seit etlichen Jahren gibt es eine Initiative, die für die Abschaffung der drei <em>w</em> zur Kennzeichnung von Website-Adressen plädiert (<a href="http://no-www.org/" target="_blank">no-www.org/</a>). Die Benutzung der Subdomain <em>www</em> sei redundant, da der Browser durch Verwendung des Protokolls HTTP dem Server eindeutig mitteilt, welcher Content angefordert wird. Man kann zu diesem Vorschlag stehen, wie man will - im Hinblick auf die englische Sprache gäbe es noch ein anderes Argument -, aber Suchmaschinen zählen zwei Seiten, wenn der Webserver sowohl auf <code>www.example.com</code> als auch auf <code>example.com</code> antwortet. Und sie sehen duplizierte Inhalte!</p>

<p>Um das zu verhindern macht es Sinn, sich für eine Variante, gleich ob mit oder ohne <em>www</em> zu entscheiden, und Requests auf die jeweils andere mit einem <em>Redirect</em> des Servers zu beantworten: die Suchmaschine erkennt die Umleitung, <em>duplicate content</em> wird vermieden.</p>]]>
<![CDATA[<p>Beim Apache-Webserver bedient man sich des Rewrite-Moduls, um den Redirect zu definieren. Auf der Seite der www-Gegner findet man auch gleich den benötigten Code, um die Umleitung vorzunehmen. Der funktioniert Dank einer <em>regular expression</em> auch für den Fall, das mehrere Domainnamen umgeleitet werden sollen.</p>

<p>Nun hat man sich aber womöglich für die Variante <em>mit www</em> entschieden, und sucht nach einem passenden Code-Schnipsel. Der erfahrenen Programmierer mag entweder als faul oder als effizient gelten, aber zunächst googelt er, ob vielleicht ein Kollege das zu lösende Problem schon bearbeitet hat, bevor er das Rad neu erfindet. Und im vorliegenden Fall findet er Lösungen zum Redirect für einen Domainnamen, nicht aber die Umleitung per <em>regular expression</em> für beliebig viele Namen. Selbst die Gegeninitiative <em>www. is not deprecated</em> (<a href="http://www.yes-www.org/" target="_blank">www.yes-www.org/</a>) stellt nur Code für eine Domain zur Verfügung. Solchermaßen versichert, dass die Neuentwicklung sinnvoll ist, musste ich den Code eben selbst schreiben und stelle ihn der interessierten Öffentlichkeit zur Verfügung.</p>

<p>In den folgenden Code-Ausschnitten werden die Rewrite-Anweisungen für Apache-Webserver in allen Varianten zusammengestellt. Obwohl durch die beiden Versionen mit <em>regular expressions</em> eigentlich alle Fälle abgedeckt werden, mag man sich bei Umleitung eines einzelnen Domainnamens womöglich für eine der beiden einfacheren Varianten entscheiden. Die Anweisungen sind zur Verwendung in einer <code>.htaccess</code>-Datei im Server-Root gedacht. Zum Einfügen in die Konfigurationsdateien des Webservers müssen sie u.U. geringfügig angepasst werden.</p>

<h3>Umleitung zu <em>ohne www</em></h3>
<h4>Für einen Domainnamen</h4>
<p class="code"><code>
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]<br />
RewriteRule ^(.*)$ http://example\.com/$1 [R=301,L]
</code></p>
<h4>Für beliebig viele Domainnamen</h4>
<p class="code"><code>
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]<br />
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</code><span class="source">Quelle: <a href="http://no-www.org/" target="_blank">http://no-www.org/</a></span></p>


<h3>Umleitung zu <em>mit www</em></h3>
<h4>Für einen Domainnamen</h4>
<p class="code"><code>
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]<br />
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]<br /><br />
</code><span class="source">Quelle: <a href="http://www.yes-www.org/redirection/" target="_blank">http://www.yes-www.org/redirection/</a></span></p>
<h4>Für beliebig viele Domainnamen</h4>
<p class="code"><code>
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)$ [NC]<br />
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
</code></p>

<p>Der Knackpunkt im letzten Code-Schnipsel, um das es mir hier eigentlich geht, ist der Ausdruck für <em>fehlendes www</em>:
<code>^(?!www\.)</code>. Er beruht auf einer <em>negative look-ahead assertion</em>. Gemäß <a href="http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck#Look-around_assertions" target="_blank" title="Artikel 'Regulärer Ausdruck' in Wikipedia">Definition</a> prüft die Formel <code>Ausdruck1(?!Ausdruck2)</code>, dass <code>Ausdruck2</code> nicht auf <code>Ausdruck1</code> folgt. Genau was gesucht wurde! Wenn <code>www.</code> nicht auf den Zeilenanfang (<code>^</code>) folgt, dann ist die Bedingung erfüllt und die <code>RewriteRule</code> wird ausgeführt: die Umleitung wird geschaltet.</p>

<p>Ein Nachteil dieser Pauschalumleitung sei nicht verschwiegen: Sie setzt <code>www.</code> auch gnadenlos vor jede Subdomain! Will man Subdomains verwenden, muss man also entweder dafür sorgen, dass der Server auch deren Umleitung richtig ausliefert, oder man passt die ReWrite-Bedingung an. Aber für das Problem, für das die beschriebene Lösung entwickelt wurde, hat sie sich bewährt: Eine Typo3-Site mit RealUrl-Extension und vielen Domainnamen, von denen einige noch auf Subsites innerhalb der Typo3-Installation gelenkt werden. Wer so etwas schon einmal aufgesetzt hat, weiß wovon ich rede.</p>
]]></content:encoded>
         <link>http://tkar.de/systemadministration/mit_oder_ohne_www.php</link>
         <guid>http://tkar.de/systemadministration/mit_oder_ohne_www.php</guid>
         <category>Systemadministration</category>
         <pubDate>Sun, 25 Oct 2009 16:28:33 +0100</pubDate>
      </item>

            <item>
         <title>Diagramme von Google</title>
<dc:creator>Thomas Kleinhenz</dc:creator>
         <description>Zur Visualisierung von Daten werden im einfachsten Fall Bilder eingesetzt. Die Google Chart API generiert sie dynamisch für uns.</description>
<content:encoded><![CDATA[<p>Ein Bild sagt mehr als tausend Worte. Das gilt insbesondere, wenn mit den Worten Zahlen transportiert werden sollen. Der Wunsch nach einem Diagramm kann auf verschiedene Weise erfüllt werden, etwa indem man mit der Bildbearbeitung oder - etwas bequemer - mit der Tabellenkalkulation eine entsprechende Grafik produziert.</p>

<p>Bei dynamischen Daten stößt man damit schnell an Grenzen. Ein serverseitiges Script kann die Aufgabe lösen, sofern die benötigte Grafik-Funktionalität auf dem Server verfügbar ist. Die Qualität der Ausgabe ist jedoch abhängig von den verwendeten Funktionsbibliotheken nicht immer zufriedenstellend.</p>

<div style="float: right;"><p class="entry-excerpt" style="text-align: center; padding: 0;">Webbrowser-Statistik September 2009</p><img src="http://chart.apis.google.com/chart?cht=p3&amp;chd=t:65,26,4,3,2&amp;chs=350x100&amp;chco=ffcc00,ff6633,cc3333,339933,3333cc&amp;chl=Internet Explorer|Mozilla Firefox|Safari|Google Chrome|Andere" alt="Chart Tortendiagramm" /></div><p>Google ist unser Freund und stellt eine Chart API zur Verfügung, die im einfachsten Fall direkt über das <code>src</code>-Attribut des <code>&lt;img&gt;</code>-Tags angesprochen werden kann. Sie liefert ein Bild im PNG-Format zurück.</p>]]>
<![CDATA[<p>Das Ergebnis kann sich sehen lassen. Es stehen neun verschiedene Diagrammtypen zur Verfügung, die sich vielfältig konfigurieren lassen. Unterschiedlichste Daten können damit visualisiert werden. Das dreidimensionale Tortendiagramm wird durch Aufruf von <code>http://chart.apis.google.com/chart</code> mit folgenden Parametern erstellt:</p>

<p class="code"><code>cht=p3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Diagrammtyp 3-dimensionales Tortendiagramm
chd=t:65,26,4,3,2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// Daten
chs=350x100&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// Gesamtgröße der Grafik in Pixel
chco=ffcc00,ff6633,cc3333,339933,3333cc&#160;&#160;// Farbwerte für die Daten
chl=Internet Explorer|Mozilla Firefox|Safari|Google Chrome|Andere
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// Text für die Legende</code></p>

<p>Der Aufruf erfolgt genauso wie das Laden einer statischen Grafik über <code>&lt;img src="http://chart.apis.google.com/chart?cht=p3&amp;chd=t:65,26,4,3,2&amp;chs=350x100&amp;chco=ffcc00,ff6633,cc3333,339933,3333cc&amp;chl=Internet Explorer|Mozilla Firefox|Safari|Google Chrome|Andere" /&gt;</code>.</p>

<div style="float: right;"><p class="entry-excerpt" style="text-align: center; padding: 0;">Breitband-Internet-Dichte in Europa Dezember 2008</p><img src="http://chart.apis.google.com/chart?cht=t&amp;chtm=europe&amp;chs=400x200&amp;chco=ffffff,ffffff,3333cc,000000&amp;chf=bg,s,dddddd&amp;chld=DKNLNOCHISSEFILUGBBEFRDEATESIEITCZHUPTGRSKPLTR&amp;chd=t:37,36,35,34,33,32,31,30,29,28,28,27,22,21,21,19,17,17,16,14,12,11,8" alt="Chart Europa-Karte" /></div><p>Einige Diagrammtypen, die Google bereitstellt, sind geradezu spektakulär, wenn man bedenkt, mit welchem Aufwand man sie von Hand produzieren müsste. Andere bestechen durch automatische Berechnung und Markierung von bestimmten Werten wie Maximum oder Durchschnittswert, Kurvenverlaufspunkten oder Bereichen. Die umfangreiche <a target="_blank" href="http://code.google.com/intl/de-DE/apis/chart/">Dokumentation</a> zeigt alle Möglichkeiten, die die API zu bieten hat.</p>

<p>Bleibt die Frage, ob man Google seine Daten anvertrauen möchte. Zunächst einmal ist festzuhalten, dass für jede Grafik separat Daten übermittelt werden. Sie zusammenzuführen und auszuwerten dürfte aufwändig sein, sie zu deuten fast unmöglich. Bleibt vielleicht der Suchtfaktor. Ihn zu messen sollte für Google machbar sein: Von einer bestimmten Domain kommen in messbarer Häufigkeit Anfragen mit gleicher Struktur aber unterschiedlichen Werten. Ihn auszunutzen, scheint das Ziel von Google: Wer die Chart API zu schätzen gelernt hat, steigt vielleicht schon bald auf die <a target="_blank" href="http://code.google.com/intl/de-DE/apis/visualization/">Google Visualization API</a> um. Die bietet noch ganz andere Möglichkeiten und lässt sich direkt mit strukturierten Daten aus verschiedensten Quellen füttern. Am bequemsten geht das, wenn man die Datenquelle über HTTP-Requests abfragen kann, wie zum Beispiel ein Google Spreadsheet.</p>

<p><img alt="Chart QR Code" src="http://chart.apis.google.com/chart?chs=250x250&amp;cht=qr&amp;chl=<?php echo urlencode("begin:vcard\nversion:2.1\nfn:Thomas Kleinhenz\nn:Kleinhenz;Thomas\nadr:;;Dinkelbergstr. 26;Rheinfelden;;79618;Deutschland\ntel;home:+49 7623 7416135\nurl:http://www.tkar.de\nend:vcard\n"); ?>&amp;choe=UTF-8" style="float: right;" /> Ein Schelm, wer Böses dabei denkt. Liegen nicht unsere E-Mails bereits auf Servern von Google oder Microsoft? Und unsere digitalen Fotografien bei Picasa und Flickr? Und sie liegen dort, weil die jeweilige API den Zugriff darauf so bequem macht, sowohl für den Programmierer als auch - über eine Weboberfläche - für den Endnutzer. Einige dieser Services sind ganz offensichtlich so genial, dass es schwer fällt, sie nicht zu benutzen. Und deshalb traue ich mich, sogar meine persönlichen Daten an Google zu schicken, um daraus ein ganz besonderes Diagramm erzeugen zu lassen: einen dreidimensionalen Barcode (QR Code). Den können Sie mit Ihrem Handy vom Bildschirm abfotografieren, dekodieren und Ihrem Adressbuch hinzufügen. Es handelt sich um meine Visitenkarte im vCard-Format.</p>]]></content:encoded>
         <link>http://tkar.de/design_und_grafik/diagramme_von_google.php</link>
         <guid>http://tkar.de/design_und_grafik/diagramme_von_google.php</guid>
         <category>Design und Grafik</category>
         <pubDate>Tue, 13 Oct 2009 10:27:19 +0100</pubDate>
      </item>

            <item>
         <title>Web 2.0</title>
<dc:creator>Thomas Kleinhenz</dc:creator>
         <description>Nachdem ein Versionssprung propagiert wurde, stellt man fest, dass die Neuerungen schon in der alten Version angelegt waren. Das wiederum ist keine Erkenntnis, die den Hype rechtfertigt, der nun um den Begriff Web 2.0 losgebrochen ist.</description>
<content:encoded><![CDATA[<p>Was ist geschehen? In bester amerikanischer Marketingtradition wurde eine Steigerungsform in Tech-Speech erdacht und als Markenzeichen für eine Konferenzserie verwendet. Wie weiland David Siegel die Konstruktion von Webseiten einer ominösen "zweiten Generation" erklärte, widmen sich die Web 2.0-Konferenzen des O'Reilly-Verlages dem Unterschied von älteren und modernen Internetanwendungen. Die Kritiker sprechen von einer Mogelpackung, das angeblich "neue Netzverständnis" habe durchaus bereits dem "alten Web 1.0" zugrunde gelegen, so kein Geringerer als Tim Berners-Lee, der Begründer des World Wide Web.</p>]]>
<![CDATA[<p>Unbestreitbar haben O'Reilly und seine Leute einen Trend erkannt, den auch Andere bemerken und der sie berührt, sonst wäre die Diskussion nicht entstanden. Man beobachtet, wie statische Webseiten durch komplexe Internetapplikationen ersetzt werden (Web-Fotoalbum vs. Flickr). Informationen werden vom Besucher nicht mehr nur abgerufen, sondern selbst aktiv beigetragen, modifiziert, gestaltet (Encyclopædia Britannica Online vs. Wikipedia). Aktuelle Meldungen müssen nicht mehr aktiv aufgerufen, sondern können im Abonnement automatisiert bezogen werden (Nachrichten-Portal vs. Newsfeed). Diskussionen werden nicht mehr über Mailprotokolle abgewickelt und Anfragen nicht über statische FAQs abgehandelt (Mailinglisten, Newsgroups, FAQ-Seiten vs. Webforen). Werbung wird dem Besucher kontextbezogen serviert, was voraussetzt, dass der Kontext zunächst analysiert, Daten erhoben und gespeichert werden (DoubleClick vs. GoogleAdSense). Die statische persönliche Webseite wird durch ein Blog ersetzt. Ich könnte noch weitere Beispiele nennen.</p>

<p><img alt="Web-2-Architektur" src="http://blog.tkar.de/uploads/web2architecture.jpg" width="616" height="417" title="Web-2-Architektur, Quelle: http://web2.wsj2.com" /> <span style="display: block; text-align: right;">Quelle: http://web2.wsj2.com</span></p>

<p>Aus technischer Sicht werden dem Web 2.0 Verfahren zugeordnet, die zwar teilweise schon länger bekannt sind, deren Verwendung aber erst mit der Verfügbarkeit breitbandiger Netzzugänge Sinn macht. Die Tendenz geht dahin, den Browser zur universellen Client-Anwendung zu machen, die mit der jeweils benötigten Applikation auf dem Server kommuniziert. Die persönliche Arbeitsumgebung ist von jedem internetfähigen PC an jedem beliebigen Ort aus verfügbar. Selbstredend werden Daten nicht mehr auf der lokalen Festplatte, sondern auf dem Server abgelegt.</p>

<p>Schöne neue Welt! Auf ideologische Gesichtspunkte will ich nicht weiter eingehen. Lassen wir außer Acht, ob es vertretbar ist, persönliche Daten auf fremden Servern abzulegen oder auf die Korrektheit von Informationen zu vertrauen, die prinzipiell jeder verändern kann. Mein Punkt ist vielmehr, dass das Buzzword Web 2.0 eine Entwicklung benennt, die zwar keinen Paradigmenwechsel darstellt, aber durch das Bild des Versionssprungs sehr treffend beschrieben wird. Die neue Version von Web beruht auf der alten Version, sie kann mehr als der Vorgänger, und sie bringt so etwas wie ein neues, erweitertes Dateiformat mit. Das ist mein Bild für etwas, was der Benutzer gar nicht wahrnimmt. Es ist nur eine Frage der Zeit, bis es sich auf breiter Front durchgesetzt haben wird.</p>

<p>Wir können die Entwicklung nun benennen, wie wir einst die Webseiten mit den vielen Layout-Tabellen und Blind-GIFs benennen konnten. Mittlerweile sind wir bei Seiten der vierten oder fünften Generation angekommen, ohne dass jemand mitgezählt hätte. Web 3.0 wird es ebensowenig geben. Buzzwords muss man immer wieder neu erfinden. Aber hilfreich sind sie schon.</p>]]></content:encoded>
         <link>http://tkar.de/web_und_welt/web_20.php</link>
         <guid>http://tkar.de/web_und_welt/web_20.php</guid>
         <category>Web und Welt</category>
         <pubDate>Sat, 28 Oct 2006 11:50:54 +0100</pubDate>
      </item>

            <item>
         <title>Open Source-Software</title>
<dc:creator>Thomas Kleinhenz</dc:creator>
         <description>Bei der Verwendung freier Software im Internet-Bereich überwiegen die Vorteile. Open Source-Technologien kann man guten Gewissens auch zu kommerziellen Zwecken einsetzen.</description>
<content:encoded><![CDATA[<p><img alt="OSI-License Logo" src="/uploads/osi.png" width="100" height="137" class="rex" /> Ohne auf die verschiedenen Lizenzmodelle und die darum und um die Begrifflichkeit geführten Diskussionen eingehen zu wollen, verstehe ich unter freier Software solche Produkte, die mir Einsicht in den Quellcode gestatten, deren Verwendung nicht mit Lizenzkosten verbunden ist und die ich unter Beachtung bestimmter Regeln modifizieren darf. Allein aus diesen Punkten ergeben sich eine Reihe von Vorteilen. Offener Quellcode zieht Programmierer an, die in der Lage sind, seine Qualität zu beurteilen und ihn weiter zu entwickeln. Projekte, um die sich eine große Community entwickelt hat, sind interessanter und produzieren in der Folge ausgereiftere Software als andere. Kostenfreiheit sorgt für die Verbreitung und für Anregungen von Anwenderseite.</p>]]>
<![CDATA[<p>Im Web-Bereich gibt es viele ausgereifte Produkte, die als Open Source angeboten werden. Der oft zitierte Nachteil, dass ihre Einrichtung und Administration schwierig sei, zählt hier nicht, da man derartige Arbeiten ohnehin einem Dienstleister überlässt. Wenn es nicht gerade darum geht, eigene Hard- oder Software in eine neu aufzusetzende Webapplikation zu integrieren, fällt die Auswahl der zusätzlich erforderlichen Mittel eher in den Bereich der Geschmacksfragen. Der beauftragte Entwickler wird eine Empfehlung geben, für die er einstehen kann.</p>

<p>Für den Webserver setze ich auf die bewährten LAMPP-Systeme. Sie werden von so gut wie jedem Webhosting-Provider angeboten. Damit sind die Scriptsprachen und das Datenbanksystem vorgegeben. Aus den für diese Konstellation verfügbaren Applikationen empfehlen sich je nach Einsatzzweck verschiedene Produkte. Eine Hand voll Anwendungen, die man immer wieder gerne einsetzt, gehören zum Repertoire eines jeden Beraters, auch wenn er mit kommerzieller Software handelt. Ich beschränke mich auf Applikationen, die ich verstehe, anpassen und ggf. erweitern kann, und von denen ich weiß, dass eine rege Entwickler-Community existiert: Voraussetzungen, die nur Open Source-Software erfüllen kann.</p>

<p>Aus der Entwicklergemeinschaft gehen immer wieder spezialisierte Dienstleister hervor, die Investitionen in die Installation, Anpassung und Erweiterung einer Software für kundenspezifische Szenarien zukunftssicher machen. Steht der ausgesuchte Dienstleister irgendwann nicht mehr zur Verfügung, so hat man keine Probleme, Ersatz zu finden.</p>]]></content:encoded>
         <link>http://tkar.de/webapplikationen/open_sourcesoftware.php</link>
         <guid>http://tkar.de/webapplikationen/open_sourcesoftware.php</guid>
         <category>Webapplikationen</category>
         <pubDate>Fri, 27 Oct 2006 11:47:49 +0100</pubDate>
      </item>

            <item>
         <title>Moderner Quelltext</title>
<dc:creator>Thomas Kleinhenz</dc:creator>
         <description>Valider XHTML-Code und die Trennung von Inhalts- und Layoutinformationen sind die Grundlage für viele Aspekte einer erfolgreichen Internetpräsentation.</description>
<content:encoded><![CDATA[<p>Es zählt keineswegs nur, was sich wie dem Besucher mit einem ganz bestimmten Browser darstellt. Die Seiten werden vielleicht selten von Mitmenschen mit Sehbehinderung besucht, dafür umso öfter von den Indexierungsprogrammen der großen Suchmaschinen.</p>]]>
<![CDATA[<h3>Ausgezeichneter Inhalt</h3>

<p><img alt="T-Shirt mit Aufdruck" src="/uploads/html_shirt.jpg" width="200" height="200" title="T-Shirt im Angebot von zazzle.de" class="rex" style="border: 1px solid #999;" /> Die Inhalte einer Website werden sinnvollerweise in der modernsten Variante der Internet-Markupsprache HTML (Hypertext Markup Language), der XML-Untermenge XHTML, ausgezeichnet und damit strukturiert. Durch die Verwendung von XHTML wird u.a. erreicht, dass der Code automatisiert überprüft und ggf. in andere XML-Dialekte umgewandelt werden kann. Mit der Strukturierung wird ersichtlich, dass ein bestimmter Satz eine Hauptüberschrift darstellt, während ein anderer Teil einer Aufzählung ist. Rückschlüsse dieser Art sind sowohl dem den Quelltext lesenden Menschen als auch bei der maschinellen Verarbeitung möglich. Screenreader und Suchmaschinen-Robots orientieren sich fast ausschließlich an den solchermaßen strukturierten Texten.</p>

<h3>Form nach Bedarf</h3>

<p>Die Layout-Informationen werden in separaten Dateien (CSS - Cascading Style Sheets) nachgeliefert. Und sie werden dem Zweck oder Anzeigegerät entsprechend angepasst. Auf dem PC-Bildschirm können die Informationen aufwändiger präsentiert werden als auf dem Mobiltelefon oder Handheld. Beim Drucken möchte man sich vielleicht auf bestimmte Elemente beschränken, also Navigationsstrukturen ausblenden, aber einen Copyright-Hinweis hinzufügen. Und wird ein Redesign der Website fällig, so genügt es im besten Fall, die Layout-Dateien allein zu ändern.</p>

<p>Die Kombination von XHTML und CSS ergibt sehr kompakte Quelltext-Dateien, die von den zugreifenden Applikationen selbständig selektiert oder ignoriert werden. Ein Suchmaschinen-Robot wird die CSS-Dateien gar nicht laden. Aber da die XHTML-Datei den zu indizierenden Text ganz ohne störende Designelemente präsentiert, wird er sehr viel davon einlesen und anhand der Strukturen gewichten können. Ein moderner Browser holt sich zunächst zusätzlich zur XHTML- die CSS-Datei für die Bildschirmausgabe und lädt ggf. das Drucklayout nach. Ein älterer Browser kann die CSS-Datei vielleicht nicht auswerten, stellt den Inhalt aber entsprechend der strukturellen Auszeichnung im XHTML richtig und vollständig dar.</p>

<p>Moderner Quelltext ist schnell geladen, suchmaschinenfreundlich, ansatzweise barrierefrei, geräteunabhängig und zukunftsicher. Und er hat natürlich Vorteile für den Entwickler, denn er ist übersichtlich und pflegeleicht.</p>]]></content:encoded>
         <link>http://tkar.de/webdesign/moderner_quelltext.php</link>
         <guid>http://tkar.de/webdesign/moderner_quelltext.php</guid>
         <category>Webdesign</category>
         <pubDate>Thu, 26 Oct 2006 11:54:41 +0100</pubDate>
      </item>

            <item>
         <title>Webseiten pflegen</title>
<dc:creator>Thomas Kleinhenz</dc:creator>
         <description>Wie Internetseiten sinnvollerweise aktualisiert und erweitert werden, ist nicht nur eine Frage der Vorkenntnisse.</description>
<content:encoded><![CDATA[<p>Es stellt sich auch die Frage, ob ein Rechtemanagement benötigt wird, weil mehrere Redakteure eingesetzt werden. Und man kann es mehr oder weniger komfortabel haben, wenn es darum geht, wie die Navigationsstruktur angepasst wird, wenn neue Seiten die Website erweitern.</p>]]>
<![CDATA[<h3>Mit HTML ...</h3>

<p>Die einfachste Konstellation geht von einer Internetpräsentation aus, bei der lediglich bestehende Seiten aktualisiert werden sollen und kein Rechtemanagement benötigt wird. Das Navigationsmenü unterliegt demnach keinen regelmäßigen Änderungen, es geht lediglich darum, den Contentbereich einer Seite bearbeiten zu können. Mit entsprechenden Vorkenntnissen könnte man statische HTML-Seiten direkt im Quelltext modifizieren.</p>

<p><img alt="Screenshot: HTML-Editor" title="Bearbeiten des HTML-Quelltextes, hier im Editor PSPad" src="/uploads/22_html.gif" width="418" height="241" /></p>

<p>Etwas bequemer und sicherer ist es, wenn die Seiten so unterteilt und in mehrere Dateien abgespeichert sind, dass nur die Datei mit dem Content bearbeitet werden muss. Der Server setzt die Seitenteile beim Aufruf dynamisch zusammen. Der Code im Editor ist übersichtlicher und es besteht keine Gefahr, dass an der falschen Stelle etwas verändert wird.</p>

<p><img alt="Screenshot: HTML-Editor" title="Bearbeiten des Content-Containers im Quelltext, hier mit PSPad" src="/uploads/22_content.gif" width="418" height="241" /></p>

<h3>... oder ohne?</h3>

<p>Für immer gleich strukturierte Daten kann man Formate verwenden, die ganz auf die Bedürfnisse des Bearbeiters abgestimmt sind, beispielsweise das Exportformat einer lokal verwendeten Software. Will man dem Redakteur jedoch ermöglichen, Text nach eigenen Vorstellungen zu formatieren, ohne dass er HTML beherrscht, lässt sich das nicht mehr durch das lokale Bearbeiten einer Textdatei realisieren. Eine Editorkomponente muss in die Website integriert werden, mit der die einzelnen Seiten im Webbrowser bearbeitet werden können.</p>

<p><img alt="Screenshot: FCK-Editor" title="Bearbeiten des Content-Containers mit WYSIWYG-Editor FCK im Backend der Website." src="/uploads/22_fckeditor.gif" width="418" height="237" /></p>

<p>Ein WYSIWYG-Editor (ein Eingabeprogramm, bei dem man die Auswirkungen der Formatierung unmittelbar sehen kann) im Backend der Website (also in einem Bereich, auf den nur der Redakteur Zugriff hat) ist bereits ein Schritt hin zu einem komplexeren Content Management System. Denn vorgeschaltet muss eine Auswahlmöglichkeit für die zu bearbeitende Seite sein, und sehr bald wird der Wunsch erwachen, neue Seiten hinzufügen zu können.</p>

<h3>Content Management Systeme</h3>

<p>Mit einem Content Management System (CMS) hat man in der Regel zusätzlich die Möglichkeit, den Zugriff für mehrere Redakteure zu steuern. Dass neue Seiten automatisch in die Navigation aufgenommen und gelöschte entfernt werden, versteht sich von selbst. Bei der Auswahl ist einerseits die gewünschte Funktionalität und andererseits die Komplexität der Applikation zu berücksichtigen.</p>

<p><img alt="Screenshot: Typo3 CMS" title="Bearbeiten einer Seite im CMS Typo3." src="/uploads/22_typo3.gif" width="418" height="240" /></p>

<p>Modular aufgebaute Systeme können je nach Bedarf erweitert werden, z.B. um bereits vorhandene Daten aus anderen Systemen automatisiert abzurufen, aufzubereiten und auszugeben.</p>]]></content:encoded>
         <link>http://tkar.de/webapplikationen/webseiten_pflegen.php</link>
         <guid>http://tkar.de/webapplikationen/webseiten_pflegen.php</guid>
         <category>Webapplikationen</category>
         <pubDate>Wed, 25 Oct 2006 11:52:28 +0100</pubDate>
      </item>

      
      
      
      
      
      
   </channel>
</rss>

