Archiv der Kategorie: Web

Studien zu Piwik und Google Analytics

Als Benutzer und Unterstützer von Piwik bin ich natürlich auch daran interessiert, wie sich Piwik gegenüber Google Analytics und anderen Webanalyse-Tools behaupten kann.

Ende September hat yourposition ihre Studie „Web Analytics in der Schweiz“ präsentiert. In dieser Studie liegt Piwik in der Schweiz auf Position 5, ganz klar abgehängt von Google Analytics und auch mit relevantem Abstand zu den Plätzen 2 bis 4. Wenn man nur die Webseiten betrachtet, die ein clientseitiges Webanalyse-Tool einsetzen (784 in der Studie) kommt Piwik auf einen Marktanteil von 2.9%.

W3Techs analysiert regelmässig die verwendeten Technologien auf den Webseiten. Sie stellen dabei auch eine Analyse für Top Level Domains (TLD) zur Verfügung. Laut W3Techs Analyse der Webanalyse-Tools für die TLD „.ch“ erreicht Piwik mit einem Marktanteil von 4.3% den zweiten Platz hinter Google Analytics (Stand 5. Oktober 2011). Die weiteren Konkurenten kann Piwik mit knapp einem Prozent oder mehr Vorsprung hinter sich lassen.

Marktanteile der Webanalyse-Tools

Aus dem Vergleich der beiden Studien kann man einige Schlüsse ziehen:

  • Google Analytics ist klarer Marktführer, ob nun mit knapp 73% (laut yourposition) oder mit knapp 88% (nach W3Techs) Maktanteil.
  • Piwik hat einen gewissen Marktanteil erreicht, es hat aber noch Potential nach oben!
  • Je nach Auswahl der Webseiten (Schweizer Webseiten und Webseiten mit TLD .ch müssen nicht dieselben sein) und Anzahl derselben kann das Resultat unterschiedlich ausfallen.
  • Studien und Analysen sollten immer mit einer Portion Skepsis betrachtet werden, getreu dem Sprichwort „Glaube keiner Statistik, die du nicht selbst gefälscht hast“.

Slippery When Wet #4: this is it – the this keyword in Javascript

I proudly present to you the fourth in a infinite number of posts of “Slippery When Wet.” In these posts I show you a little bastard I stumbled on.

Coming from the C++/C#/Java world, the ‚this‘ keyword is well known for accessing the instance of the class itself. For accessing members, it is not mandantory but often favored for clearness.

With this background, a first try could look like this (complete html page in the package, file this1.html):

var marc = {
    name: "Marc",
    hello: function(visitor) {
        document.write("Hello " + visitor + ", my name is " + name + "!")
    }  
}

window.onload = function()
{
    marc.hello("Peter");
}

And the output is:

Hello Peter, my name is !

OK, let’s try again!
We call the name property explicit (this2.html):

        document.write("Hello " + visitor + ", my name is " + this.name + "!")

And the output is, as expected:

Hello Peter, my name is Marc!

So, it’s a piece of cake, we have only to put the this keyword for all members, and we’re done…

Wait, not so fast, youngster!

Let’s try it with a function reference like in the next example (this3.html):

var marc = {
    name: "Marc",
    hello: function(visitor) {
        document.write("Hello " + visitor + ", my name is " + this.name + "!")
    }  
}

var greet = marc.hello;

window.onload = function()
{
    greet("Peter");
}

And the output is:

Hello Peter, my name is !

The name is lost again!

This problem occurs because JavaScript doesn’t support implicit binding in a way C++ and others do.

With calling the function through the function reference, the this inside the hello function points not to marc but to the window. To verify this thesis, we just add a name to the window:

var marc = {
    name: "Marc",
    hello: function(visitor) {
        document.write("Hello " + visitor + ", my name is " + this.name + "!")
    }  
}

var greet = marc.hello;

window.name = "Sue";

window.onload = function()
{
    greet("Peter");
}

And the output is:

Hello Peter, my name is Sue!

But how can we solve this problem? The two easiest solutions are apply and call:

var marc = {
    name: "Marc",
    hello: function(visitor) {
        document.write("Hello " + visitor + ", my name is " + this.name + "!")
    }  
}

var greet = marc.hello;

window.onload = function()
{
    greet.apply(marc, ["Peter"]);
    document.write("<br />");
    greet.call(marc, "Peter");
}

And the output is:

Hello Peter, my name is Marc!
Hello Peter, my name is Marc!

With apply and call, you do an explicit binding. The object you pass as the first argument (in our example marc) does not need to have the function itself, but should of course have the members that are used inside the function.
The difference of apply and call is only in the signature of the function. With apply, the parameter have to be passed inside an array. With call, the parameters are lined up after the explicit binding object.

This should give you some ideas to identify problems coming from the binding and some solutions to solve them.

For further reading i suggest the following articles:

Fremde Webseite online editieren

Ein kleiner Trick im Firefox (getestet mit Version 4.0.1):

Einfach eine Webseite laden und dann folgende Zeile in das Adress-Feld eingeben und Enter drücken:

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

Erstmals ist keine Änderung ersichtlich. Man kann jetzt aber z.B. einen Text markieren und editieren. So kann man einfach kleine Änderungen vornehmen. Diese werden natürlich nicht gespeichert sondern gehen beim nächsten reload wieder verloren.

Weitere Tricks nehme ich gerne in den Kommentaren entgegen.

Piwik in Version 1.5 erschienen

Piwik ist in der Version 1.5 erschienen.

Neben einem wichtigen Sicherheitsupdate sind dies die (aus meiner Sicht) wichtigesten Neuerungen:

  • Diagramme mit Canvas und jQuery – keine Flash-Diagramme mehr
  • Eigenes Logo hochladbar um Piwik zu individualisieren
  • Ecommerce Analytics

Für diesen Release wurden 55 Tickets abgearbeitet.

Piwik in Version 1.4 erschienen

Und es geht Schlag auf Schlag weiter: nachdem diesen Monat schon Version 1.3 erschienen ist, wurde nun auch schon Version 1.4 veröffentlicht.
Hier die (aus meiner Sicht) wichtigesten Neuerungen:

  • Automatische Reports können nun auch als HTML generiert werden
  • Die automatischen Reports funktionieren nun auch, wenn keine cron-Tasks eingerichtet werden können
  • Experimenteller IPv6 Support

Für diesen Release wurden 31 Tickets abgearbeitet.

Info-Offensive für Piwik

Zwei deutschsprachige Artikel haben den Fokus auf Piwik gerichtet:

Der erste Artikel über den Einsatz von Piwik habe ich im c’t 7/2010 gefunden. Neben einigen Tricks für das Einrichten und den Einsatz in Foren und Shops hat es auch Informationen zu Datenschutzbelangen.
Der zweite Artikel, erstellt vom Unabhängiges Landeszentrum für Datenschutz Schleswig-Holstein, befasst sich haptsächlich mit Datenschutzbelangen. Das Datenschutzzentrum stellt Piwik dabei ein gutes Zeugnis aus (besonders verglichen mit anderen Web-Tracking-Angeboten), sieht aber auch noch Verbesserungspotential. Voraussetzung für einen legalen Einsatz (gemäss deutschem Datenschutzgesetz) sind aber verschiedene Konfigurationen, die im Artikel ausführlich erläutert werden.

Es ist zu hoffen, dass diese beiden Artikel Piwik einen weiteren Popularitätsschub verpassen werden.