Hi Kai,
http://webalizer.teamone.de/selfforum/mgzta.html
(vielen Dank an Michael fuer das Script).
grusel ... daß es sooo schlecht funktioniert, hätte ich ja wirklich
nicht gedacht ... momentan ist diese Tabelle noch ziemlich unbrauchbar.
Irgendwer ballert das Self-Portal mit URLs zu, welche '#' als Zeichen
enthalten, glaube ich ... einige werden sich noch an meinen Thread
deswegen erinnern ... gnlpfts ...
2mal strg+[+] - ah, da steht ja was ;)
Äh, ja. Ich weiß nicht, wie ihr das macht - bei mir ist das Teil in
1024 * 768 bildschirmfüllend, und die Schriftgrößen sind CSS in px ...
-> wo kommen all die Opera 6.02 betas her?
Meinst Du diese ungeheuerlichen Massen von 0.7%? ;-)
-> der Mac scheint mir eine Hochburg für Netscrap 4 - oder?
Für solche Massen von verschiedenen UserAgents war diese Tabelle eigentlich nie gedacht (und einen BrowserWatch sollte sie auch nicht ersetzen). Bedenke auch, daß alles außer den ersten 8 Zeilen praktisch
vernachlässigbare Anteile sind.
-> selbst HIER ist der Tarn-Anteil bei Opera weit über 50% (!) -
oder wirkt das nur so?
Das wirkt nur so.
Ich fasse definitiv nichts "intelligent" zusammen (wie der Webalizer
...), ich nehme nur einige Strings heraus, welche m. E. zur Erkennung
der Art des Browsers nichts Wesentliches betragen (so Sachen wie [de]).
Das müßte ich viel aggressiver tun, um den ganzen Müll so viel besser zusammenzufassen, daß diese Tabelle etwas taugt.
Ich kann ja mal den bisherigen Code posten - vielleicht hat ja jemand
Verbesserungsvorschläge (auch für den Programmierstil, gerne ;-) ...
bisher ist das alles nicht wirklich toll, finde ich selbst.
(Diese UserAgent-Tabelle sollte eigentlich eher rausfliegen ...)
Was mich an den Tabellen reizt, das sind die Zahlen ... nicht die Namen
der Zeilen. Man sieht, was an Traffic fließt und wer woran schuld ist.
Viele Grüße
Michael
# 'clean up' the User Agent a bit ...
if ($strip_useragents)
{
# ------------------------------------------------------------
# delete any HTML code (this will be part of our HTML tables!)
$this_user_agent =~ s/<[^>]*>//g;
# ------------------------------------------------------------
# delete language versions like [de] or [en]
$this_user_agent =~ s/\s*[[a-z][a-z]]\s*/ /;
# ------------------------------------------------------------
# split UserAgent structure "xxxxxx (yyy; zzz) nnn" into parts
if ($this_user_agent =~ /^(.+?)\s*((.+?))\s*(.*)$/)
{
# -----------------------------------------------------
# symbolic names for User Agent's parts
my ($head, $middle, $tail) = ($1, $2, $3);
# -----------------------------------------------------
# Split up middle part at '; '
my %middle_parts = ();
foreach my $this_middle_part (split (/; /, $middle))
{ $middle_parts {$this_middle_part} = 1; }
# -----------------------------------------------------
# Delete useless parts
delete ($middle_parts {'cebit'});
delete ($middle_parts {'compatible'});
delete ($middle_parts {'compat'});
delete ($middle_parts {'DigExt'});
delete ($middle_parts {'I'});
delete ($middle_parts {'U'});
delete ($middle_parts {'de-DE'});
foreach my $this_key (keys %middle_parts)
{ if ($this_key =~ /^X11/) { delete $middle_parts {$this_key}; } }
foreach my $this_key (keys %middle_parts)
{ if ($this_key =~ /^Win/) { delete $middle_parts {$this_key}; } }
foreach my $this_key (keys %middle_parts)
{ if ($this_key =~ /^QX/i) { delete $middle_parts {$this_key}; } }
# -----------------------------------------------------
# re-join remaining middle-parts
$middle = join ('; ', keys (%middle_parts));
if ($middle) { $middle = " ($middle)"; }
# -----------------------------------------------------
# re-join complete User Agent
$this_user_agent = $head . $middle . ' ' . $tail;
# ----------------------------------------------------
$this_user_agent =~ s/C-(\w|-)+/ /i;
$this_user_agent =~ s/QX(\w|-)+/ /i;
# -----------------------------------------------------
}
# else
# { print "$this_user_agent\n"; }
# ------------------------------------------------------------
}
# finally strip trailing spaces
$this_user_agent =~ s/\s+$//;