Einträge vom Juli 2008 ↓

Arm an Zahlen

Dem ein oder anderen ist vielleicht aufgefallen, dass seit ein paar Tagen in der Sidebar rechts keine Zahlen mehr zu finden sind. Zumindest ganz unten, dort wo „Counter“ steht. Schon länger wird ja immer wieder diskutiert ob man es aus Datenschutzrechtlichen Gründen überhaupt vertreten kann, Counter in die eigene Seite einzubinden und seit dem die Datenschutzbeauftragten von Schleswig-Holstein vor zwei Wochen erklärten, dass Google Analytics illegal sei, gilt dies umso mehr.

Hintergrund

Zum Verständnis der Hintergründe ein kurzer Exkurs in die Kunst der Besucher-Zählung. Die Zahl der Besucher einer Webseiten lässt sich auf zwei Arten und Weisen zählen:

  • intern oder
  • extern

In beiden Fällen wird dabei gezählt, wie oft bestimmte Elemente der Webseiten von einer IP-Adresse aufgerufen werden.
Im internen Fall wird also erfasst, wie oft zB Bilder oder bestimmte URLs (Webadressen) aufgerufen werden. Dabei verbleiben alle gesammelten Daten auf dem Server des Webseitenbetreibers und es liegt an ihm, diese Daten auszuwerten, wobei auch dies illegal sein könnte.
Im externen Fall bindet der Webmaster einen sogenannten „Counter-Code“ in seinen Webauftritt ein, in der Regel ist dies ein kleines Bild. Bei jedem Aufruf der Webseite wird nun das Bild des Counters geladen und somit der Counter-Betreiber darüber informiert, wann, wie oft und für wie lange eine bestimmte IP-Adresse auf der Webseite war.
Das „Besucherzählen“ ist eine Kunst für sich, denn Feinheiten wie „Ab wie vielen Sekunden Pause zählt eine Aktion einer IP als neuer Besucher?“, „Wie verhindere ich, dass der Besucher die Zählung verhindert?“ oder „Woran erkenne ich, dass der Besucher die Seite noch liest, auf wenn er keine Aktionen mehr ausführt?“ wehren sich meist heftig einer Objektiven Betrachtung und Einordnung.

Warum sind Counter umstritten?

Die Problematik bei jeder Besucherzählung ist, dass viele Daten über den Besucher gesammelt werden um ihn möglichst genau identifizieren zu können, der Besucher davon aber nichts weiß. „Möglichst genau identifizieren“ bedeutet hier nicht zu erkennen, dass Herr Meier auf der Seite war, sondern um zu erkennen, dass zB ein weiterer Nutzer mit der selben IP die Seite besucht. Die geschieht zB durch Auswertung der Versionsnummern von Betriebssystem und Browser, Bildschirmauflösung und ähnlichem.
Im Ergebnis erhält der Zählende eine ganze Menge Informationen. Falls nun intern gezählt wird, so mag das noch einigermaßen unproblematisch sein, stattet aber ein Counter-Betreiber viele Webseiten mit seinem Zähler aus, so kann er Benutzerprofile erstellen, wenn er die Bewegungen des Nutzers nachvollzieht.

Warum habe ich die Counter-Codes ausgebaut?

Counter sind natürlich nur dann sinnvoll, wenn man aus dem Counter Informationen zieht, die die oben genannten Gefahren erträglich erscheinen lassen. Ich habe zur Zeit einfach keine Lust und auch keine Zeit regelmäßig zu „überprüfen“ wie viele Leser hier im Blog vorbei gesehen haben, so dass die Abwägung gegen die Counter ausschlägt. Falls nun wirklich einige der Counter illegal sein sollten, so ist dies ein weiterer Grund.

Nicht verschweigen möchte ich jedoch, dass hier im Blog die interne Zählung weiter geht und neuerdings auch viele Artikel „vorverpixelt“ sind. Was es aber damit auf sich hat, schreibe ich demnächst.

Zweiter Hauptsatz der Thermodynamik oder Wie plane ich eine Sitzordnung

Hochzeitstisch

Ordnung ist das halbe Leben, so sagt man. Ordnung muss sein, denn zum Chaos kommt es von alleine (Zweiter Hauptsatz der Thermodynamik). Um die Zeit bis zum erreichen des Chaos so weit wie möglich zu verlängern hilft es, ordentlich zu planen, um mit Beginn des Ereignisses einen möglichst hohen Ordnungslevel zu erreichen, von dem aus es dann unweigerlich zum Chaos abgleiten wird:

In einem geschlossenen adiabaten System kann die Entropie nicht abnehmen, sie nimmt in der Regel zu. Nur bei reversiblen Prozessen bleibt sie konstant.
[…]
Alle spontan ablaufenden Prozesse sind irreversibel. Dort findet immer eine Entropiezunahme statt.

Ein Ereignis, das vorhersehbar im Chaos enden wird und bei dem die der eigentlich Sinn und Zweck ist, ist eine Feierlichkeit mit einer großen Anzahl Menschen. Da bei uns ja eine solche Feierlichkeit ansteht, planen wir viel um den Beginn des Chaos möglichst auf eine Uhrzeit zu verschieben, bei der das Chaos nicht mehr negativ auffällt.
Konkret haben wir uns entschlossen eine Sitzordnung zu planen. Eigentlich eine leichte Übung:

98 Personen, 106 Sitzplätze, wo sollte das Problem sein?

Nun, zum Glück sind sowohl Steffi als auch ich mit Familien gesegnet, die in sich und auch untereinander nicht zerstritten oder ähnliches sind, trotzdem will man manche Leute nicht gemeinsam an einen Tisch setzten. Ziel ist es zu Verhindern, dass sich die Tisch-Gruppe aus Langeweile vorzeitig verabschiedet. Dazu kommt, dass aus räumlichen Gegebenheiten manche Tische eine gewisse Größe haben, man von manchem die Tanzfläche oder aber den Brauttisch nicht sieht. So kommt man dann dazu die Gäste ich Grüppchen einzuteilen die man versucht passend auf die Tische zu verteilen. Dabei finden sich immer Klein- und Kleinstgruppen, die nirgends fest dazu gehören, deren Flexibilität man aber auch nicht so hoch einschätzt, dass sie überall dazu passen könnten. So schiebt man fleißig die Gruppen umher, bis man schließlich zu einem passenden Ergebnis kommt, dass aber trotzdem auf wackeligen Beinen steht. Fällt dann aber jemand aus, so kann es passieren, dass aus einem tragenden Teil eine einsturzgefährdete Ruine wird.
Genau das ist uns heute passiert. Meine Oma wird aufgrund einer Verletzung ausfallen, weshalb ein 7er Tisch auf einmal mit nur noch 4 Personen besetzt wäre. Also noch mal alle Grüppchen in den Topf, kräftig umrühren und stürzen. Das ganze wird dann wiederholt bis das Ergebnis passt und wir haben jetzt hoffentlich eine Kombination gefunden, die allen gefallen wird.
Bildnachweis: Pixelio.de-Nutzer omron2003

In einer Woche…

itestra GmbH
… werde ich wieder hier sitzen. In einer Woche werde ich aber meinen ersten Arbeitstag hinter mir haben und mich Software Architect nennen. Mein Arbeitgeber ist die itestra GmbH, ein Software Development und Consulting Unternehmen hier aus München.

Ich bin gespannt, was mich erwarten wird. Voraussichtlich wird mein erstes Projekt bzw das erste Projekt an dem ich mitarbeite eine geschäftskritische Java Lösung bei einem internationalen Großunternehmen…

Search-Hilite und Googlesuche aus dem Firefox heraus


Das Plugin Search-Hilite hab ich nun schon seit über einem Jahr im Blog integriert, doch erst heute habe ich wieder einmal einen fetten Bug darin entdeckt.

Search-Hilite sorgt dafür, dass Suchbegriffe auf einer Seite farblich hervorgehoben werden. Hintergrund ist, dass man so deutlich schneller sondieren kann, ob die Seite wirklich das gesuchte Themengebiet abdeckt.

Vor einem Jahr stellte ich fest, dass Search-Hilite ein Problem mit Umlauten hat. Ich konnte dieses Problem lösen, indem ich den Quelltext des Plugins veränderte. Dies habe ich dem Pluginautor auch mitgeteilt, doch leider wird das Plugin anscheinend nicht weiterentwickelt.

Der neue Bug ist etwas anders gelagert. Kommt man über Google auf das Blog wurden manchmal nicht die Suchbegriffe, sondern jedes Vorkommen des Buchstaben „t“ markiert. Bis heute konnte ich nicht nachvollziehen woher dieser Bug kommt. Bei den heutigen Tests im Rahmen der Renovierungsarbeiten fiel mir dann auf, dass es einen Unterschied macht, ob ich den Suchbegriff bei Google direkt oder im Firefox Suchfenster eingebe:
Der Referer ist unterschiedlich

Suche ich zB nach Bosbach "Wegwerf-Terrorist sehen die Referer wie folgt aus:

  1. http://www.google.de/search?hl=de<strong>&q</strong>=bosbach+%22wegwerf-terrorist%22&btnG=Suche&meta= bei Eingabe direkt bei Google
  2. http://www.google.com/search<strong>?q</strong>=bosbach+%22wegwerf-terrorist%22&ie=utf-8&oe=utf-8<strong>&aq=t</strong>&rls=org.mozilla:de:official&client=firefox-a bei Eingabe im Firefox Suchfenster

Das Problem ist nun, wie die Suchwörter in den URLs codiert sind. Bei
1. „/search?hl=de&q=bosbach+%22wegwerf-terrorist%22&“ und bei
2. „/search?q=bosbach+%22wegwerf-terrorist%22&“

Bei 1. also „&q“ und „?q“ bei 2.
Search-Hilte filtert mit dem Regulären Ausdruck /^.*q=([^&]+)&?.*$/i und stolpert leider über das &aq=t, denn das „t“ überschreibt die eigentlichen Suchbegriffe.

Um das Problem zu lösen habe ich ein wenig mit dem Regulären Ausdruck rumgespielt, aber bin damit nicht zu Rande gekommen. Stattdessen habe ich mich umgesehen, wie andere das Problem lösen und bin auf das Plugin Landingsites(de) von Frank Bültge gestoßen, das ja auch bei mir im Einsatz ist. Dort wird, statt zu Versuchen das Problem auf einen Streich zu lösen, das Problem (wie auch der String) in kleine, handhabbare Stücke zerlegt.

function ls_get_terms($d) {
	$terms       = null;
	$query_array = array();
	$query_terms = null;

	// Get raw query
	$query = explode('&'.$d.'=', $_SERVER['HTTP_REFERER']);
	if($query[1] == '') {
		$query = explode('?'.$d.'=', $_SERVER['HTTP_REFERER']);
	}
	$query = explode('&', $query[1]);
	$query = urldecode($query[0]);

	// Remove quotes, split into words, and format for HTML display
	$query = str_replace("'", '', $query);
	$query = str_replace('"', '', $query);
	$query_array = preg_split('/[\s,\+\.]+/',$query);
	$query_terms = implode(' ', $query_array);
	$terms = urldecode($query_terms);

	return $terms;
}

Fügt man nun diese Funktion Search-Hilite hinzu, muss man nur noch die bestehende Regexerei auskommentieren und bekommt zuverlässig markierte Suchbegriffe:

// Google query parsing code adapted from Dean Allen's
// Google Hilite 0.3. http://textism.com
// $query_terms = preg_replace('/^.*(&|\?)q=([^&]+)&?.*$/i','$1', $referer);
// $query_terms = preg_replace('/\'|"/', '', $query_terms);
$query_terms = ls_get_terms("q");
$query_array = preg_split ("/[\s,\+\.]+/", $query_terms);

Falls ihr Landingsites(de) bereits einsetzt, solltet ihr die Funktion leicht umbenennen (zB ls_get_terms_hilite). Alternativ kann man auch darauf verzichten die Funktion zu kopieren und ruft sie direkt aus Landingsites(de) auf, allerdings wirken sich dann natürlich Veränderungen an Landingsites(de) auch auf Search-Hilite aus.

Ach ja, natürlich könnte ich das modifizierte Search-Hilite auch direkt hier zum Download bereit stellen, möchte dies aber erstmal nicht tun, bevor ich Frank Bültge um Erlaubnis gebeten habe, seinen Code verwenden zu dürfen. Da Frank momentan in Urlaub ist, kann dies aber noch 3 Wochen dauern…

Renovierungsarbeiten im Blog

Wordpress und Plugins upgedated, Bug in einem Plugin gefunden und gefixt.

In den letzten Monaten habe ich das Blog und vor allem die Technik dahinter ziemlich vernachlässigt. Die letzten zwei WordPress Updates habe ich an mir vorbeiziehen lassen und auch die Plugins waren nicht mehr auf dem neuesten Stand. Da sich für Morgen der Release von WordPress 2.6 andeutet, habe ich in der letzten Woche peu à peu die diversen Blogs auf 2.5.1 nachgezogen und auch die Plugins auf den neuesten Stand gebracht.
Während Steffi sich ein neues Theme ausgesucht hat, habe ich mich darauf beschränkt bei den Plugins auszumisten und Funktionalitäten zu testen. Falls euch wider erwarten doch noch Fehler über den Weg laufen sollten, seid doch bitte so nett und schreibt mir kurz, wo es hängt.

Bezüglich des Plugins mit Bug werde ich gleich noch etwas schreiben. habe ich hier etwas geschrieben.

In zwei Wochen …

… bin ich um diese Uhrzeit verheiratet.

Seit über 8 1/2 Jahren sind Steffi und ich schon ein Paar und am 26.07.08 trauen wir uns und gehen den Bund fürs Leben ein. Für mich hört sich diese Formulierung knackig wie ein Toastbrot und sinnvoll wie ein iPhone an, schließlich bin ich den „Bund fürs Leben“ schon lange mit ihr eingegangen, nur die offizielle Bestätigung durch Vater Staat kommt hinzu.
Wie dem auch sei, nur noch zwei Wochen sinds bis zur großen Feier und eigentlich müsste ich irgendwie nervös sei. So ein kleines bisschen zumindest, aber da ist nichts. Weder beunruhigt mich der Staatsakt noch die Tatsache, dass ich meine Rede noch nicht geschrieben habe. Auch die schlechte Wettervorhersage lässt mich kalt, auch wenn das Fest gewaltig an Flair verlieren würde, falls wir die Hochzeit komplett in Innenräumen verbringen müssten.

Der Grund für diese Ruhe liegt daran, dass ich mich momentan Tag ein, Tag aus mit Innenräumen beschäftige, oder besser gesagt wie man Innenräume am besten modelliert, um sie in Routenplanern verwenden zu können. Kommende Woche wird die vorletzte Version der Ausarbeitung meiner Diplomarbeit bei meinem Betreuer auf dem Tisch landen und dafür muss ich noch fleißig arbeiten. Falls ihr euch wundert, warum ich über meine DA bisher nicht gebloggt habe: Mein Betreuer hat mir davon abgeraten
Die Diplomarbeit muss ich ja ohne fremde Hilfe ausfertigen und wenn ich über das Thema blogge könnte mir in den Kommentaren ja jemand Tipps geben. Edgar persönlich hätte damit zwar vermutlich kein Problem, aber man weiß ja nie ob einem der Prüfungsausschuss nicht einen Strick daraus drehen könnte…
Nachdem die DA aber in seiner endgültigen Form abgeben ist, werde ich aber versuchen die Interessantesten Stellen hier ins Blog zu stellen.