Cheers!
Es folgt eine Rezension eines sog. Feature-Artikel, welche als Pilot einer Serie gedacht ist, deren Folgen nun in regelmaessigen Abstaenden hier bereitgestellt werden.
I - 'Anzeige der Anzahl der Besucher Online' http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm
Der Autor, Christian Seiler, ist mir seit 2002 hier als regelmaessiger Forumsteilnehmer bekannt. Ihm verdanke ich unter anderem die Aufnahme des Wortes 'eineindeutig' in meinen passiven Wortschatz, waehrend er mir wiederum u.a. den kleinen Hinweis auf einen der besten Filme aller Zeiten verdankt, naemlich 'The good, the bad and the ugly' (zu Deutsch: 'Zwei glorreiche Halunken' - baeeh). (Bedauerlicherweise hat der genannte Film von Sergio Leone nur den Status "eines der besten Italo-Western" erhalten. Der im Film thematiserte und der juedischen Philosophie folgende Kampf zwischen dem Guten, dem Boesen und dem Haesslichen ist vermutlich nur von den allerwenigsten Kinobesuchern bemerkt worden. BTW - man sollte den Haesslichen leben lassen.)
Christian Seiler, dessen Beitraege ich in aller Regel sehr schaetze und schaetzte, hat also ca. im Sommer 2003 den genannten und hier zu rezensierenden Artikel verfasst. Auf bestimmte Nachfragen, hat er sich noch im Maerz 2004 auf Kernaussagen des Artikels bezogen, so dass die Rezension, die nun folgen wird, also kein "historisches" Material begutachten wird, sondern aktuelles. Die Meinung des Autors, bzw. dessen Fazit, wird auch noch im Jahr 2004 von bestimmten Meinungsfuehrern (Stoerern der Stoererklasse II ;-) dieses Forums regelmaessig wiedergegeben.
Der Feature-Artikel ist in etwa wie folgt aufgebaut: es wird eine (fiktive) Anforderung ("User online") beschrieben, besondere Herausforderungen erwaehnt und dann mehrere Loesungsmoeglichkeiten vorgeschlagen. Deren Auswirkungen werden dann jeweils beschrieben und zu allerletzt folgt dann das Fazit, das recht eindeutig ausfaellt.
Werfen wir also mal einen Blick auf die (beschriebene und fiktive) Anforderungslage http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm#anforderung
"Dieser Text zeigt an, wie viele Besucher sich gerade auf der Webseite bewegen. Dieser Artikel soll zeigen, wie so eine Anzeige realisiert werden kann und welche Probleme dabei auftreten." heisst es da. Nun gleich der erste Kritikpunkt: die Anforderungslage bleibt sehr unklar und ist natuerlich voellig unzureichend beschrieben. Nein, da hilft auch kein Hinweis darauf, dass die Anforderung ohnehin fiktiv ist, denn wenn die Anfoderung unzureichend spezifiziert bis unspezifiziert bleibt, dann kann der Artikel auch nichts mehr hergeben. (Zumindest bei der im vorletzten Absatz beschriebenen Argumentationsfuehrung)
Ich stelle mir nun einfach mal vor, dass eine in kaufmaennischen Ebenen entstandene Anforderungslage an mich mit dem Ziel der Umsetzung herangetragen wird. Was waere da wohl letztlich (gemeinsam) formuliert worden? Vielleicht grob skizziert so etwas: Der Webanwendung <xyz>, die dynamisch generierte HTML-Seiten bereitstellt, ist eine Funktionalitaet hinzuzubauen, die wie folgt beschrieben wird. Einem Nutzer ist logisch eine Sitzungseindeutigkeit (incl. sog. Login-Moeglichkeit) zuzuordnen und unter Bezug auf diese Eindeutigkeit wird dessen Zugriffsverhalten auf das genannte Web wie folgt ausgewertet. Hat der genannte Nutzer waehrend einer bestimmten Zeit (hier: 5 Minuten) einen Datenzugriff im Rahmen des genannten Sitzungskontexts durchgefuehrt, dann gilt dieser als verbunden. Auswertungen ueber verbundene Nutzer erfolgen wie folgt: in einem an anderer Stelle definierten Bereich wird die Anzahl der verbundenen Nutzer angezeigt, zudem hat der Nutzer die Moeglichkeit an anderer Stelle als Freund markierte Nutzer namentlich anzeigen zu lassen. Zudem sind die Datenzugriffe aller Nutzer (der eingeloggten und der, die nur per Sitzungseindeutigkeit identifiziert werden koennen) zu speichern und diese Daten weiteren, noch zu spezifizierenden Auswertungstools bereitzstellen. Zudem ist ein Briefkastenchatsystem vorgesehen, so dass eingeloggte und nach obigen Massstaeben verbundene Nutzer beim naechsten Seitenaufruf (Datenzugriff) ueber neue Nachrichten benachrichtigt werden.
Ich denke klargestellt zu haben, dass eine wie im genannten Artikel unzureichend spezifizierte Anforderungslage, dann auch keinerlei weitere Rueckschluesse mehr erlaubt. Nun ein Blick auf Teile der Argumentationsfuehrung unter der Fragestellung "Was ist vielleicht noch werthaltig?":
Die besondere Herausforderung (http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm#problem) wird also als Zweites beschrieben. Die Kernaussage zusammenfassend heisst es da "keine permanenet Verbindung zwischen Server und Webclient, weil HTTP verbindungslos".
Gut, dann kann man schon mal trocken feststellen, dass nicht geprueft werden kann, ob die jeweils andere Seite noch da ist, d.h. im Besondereren, dass die Definition von "verbunden" mit dem vorgefundenen Sachverhalt nur noch einmal abgeglichen werden muss, um eine bereits abschliessende Einschaetzung zur Anfoderungslage treffen zu koennen. Aber wie gesagt, die geschilderte Anfoderungslage ist von Anfang an unklar, so dass ich mich im folgenden auf die im letzten Absatz von mir selbst beschriebene beziehen werde (wenn ueberhaupt ;-).
Der erste Loesungsvorschlag (http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm#erster_loesungsvorschlag) beschreibt einen Ansatz ohne Sitzungseindeutigkeit, aber ueber Betrachtung der dem HTTP-Reuqest des Clients mitgegebenen IP-Adresse. Gut, da weiss jeder, dass sich diese aendern kann, dass diese gefaelscht werden kann und dass mehrere Clients ueber dieselbe IP-Adresse kommen koennen. Also schnell zum
Zweiten Loesungsvorschlag (http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm#zweiter_loesungsvorschlag), der den Roundtrip einer vom Webserver beim ersten Zugriff generierten Sitzungseindeutigkeit als Methode nennt. Werfen wir gleich einen Blick auf die von Christian Seiler genannten "Nachteile" dieses Ansatzes: 'Diese Lösung eliminiert nicht das Problem der Verweildauer. Ein angemeldeter Benutzer kann auch nur zwei Sekunden, aber auch zwei Stunden auf der Seite verweilen, bevor er sein Browserfenster schließt. Daher wird nur eine Quelle der Ungenauigkeit entfernt: die Identifikation des Benutzers.'
Ich erkenne da ein Totschlagargument, also ein Argument, dass z.B. auch bei verbindenden Protokollen greift. Ausserdem wird kein Zusammenhang zum Datenzugriff durch den Nutzer hergestellt. Der Datenzugriff durch den Nutzer ist einer Tastatureingabe vergleichbar.
'Diese Lösung ermöglicht es nur, die angemeldeten Benutzer zu zählen, nicht jedoch die Benutzer insgesamt. Dies geht natürlich nur dann, wenn die Seite sowieso eine Möglichkeit zum Einloggen bietet (weil sie zum Beispiel ein Community-Portal oder ein Board ist) und außerdem werden dann diejenigen, die keinen Benutzeraccount auf dieser Seite haben, nicht mitgezählt.' liesst man dann noch, wobei die behauptete Notwendigkeit des Einloggens falsch ist. zuletzt kommt das Argument 'Falls die Benutzer nicht bloß aufgezählt werden, sondern auch aufgelistet, dann kann es sein, dass einige Benutzer nicht wollen, dass sie auf dieser Liste erscheinen.', das an der Sache offensichtlich vorbeigeht. Also schnell zum
Dritten Loesungsvorschlag:
Der "Meta-Refresh", also die vom Server gesandte Bitte an den Client, sich doch bitte mal in regelmaessigen Abstaenden zu melden, bzw. den HTTP-Request zu wiederholen, um auf dem neuesten Stand zu bleiben. - Mal davon abgeshen, dass diese Loesung nicht cool ist und browserseitig wegkonfiguriert werden koennte, hoert sich's doch erst mal ganz gut an. Blicken wir auf die von Christian Seiler genannten Gegenargumente: 'Die Seite verwendet nun Frames.' Warum frage ich da, ist das notwendig, wenn man einen "Meta-Refresh" installieren moechte? 'Wenn jemand sein Browserfenster offen lässt, den Bildschirmschoner aktiviert und in die Mittagspause geht, dann finden die regelmäßigen Verbindungen mit dem Server immer noch statt. Dies hat zur Folge, dass dieser Besucher immer noch gezählt wird, obwohl er gar nicht mehr an seinem Rechner sitzt.' ist wieder ein Totschlagargument, das immer greift. Und dann wird noch richtigerweise der erhoehte Traffic gennant.
Endlich das Fazit (http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm#fazit): 'Die Realisierung einer Anzeige der Anzahl der Besucher, die im Moment online sind, ist nicht möglich.', welches genauso deutlich ausfaellt, wie die Anfroderungslage zuvor undeutlich formuliert blieb. 'Die Anzeige ist nur dann genau, wenn sich gar kein Besucher auf der Seite befindet.' ist eigentlich auch sinnlos. Was ist mit einem Nutzer, dessen Sitzung ausgetimt ist, der aber immer noch am Monitor sitzt, moechte man fast fragen? (Und genau so wurde ja vorher von Christian Seiler fortwaehrend argumentiert.)
Mein Fazit: Es geht um nichts, Teilaussagen sind wahr oder falsch und das behauptete Fazit unbegruendet. (Das Fazit zudem moeglicherweise nur daraus entstanden, dass manche Websites mit "User Online"-Aussagen nerven, bei denen jedes Kind merken kann, dass da Mist implementiert worden ist?)
Gruss,
Lude
Dave Grohl - Probot ist meine Empfehlung an die verbleibenen Metalkraefte der 80er (Lemmy ;-) - welch ein Musiker!
Franz Ferdinand - Franz Ferdinand (kommt auch gut)
Virginia jetzt! kommt nun verstaerkt auf MTV - reinhoeren nicht verkehrt