Piwik-Statistik mit statischen Grafiken in der Webseite einbinden

Montag, 17. November, 2014

Ich wollte meine Statistik-Anzeige auf meiner Startseite etwas anders haben und die Grafiken von PIWIK [01] einbinden. Es gibt verschiedene APIs [02] zum Holen von Daten - als XML, JSON oder Grafik [03]. Aber die Grafiken sollten nicht mitsamt der URL der PIWIK-Api eingebunden sein - ich wollte die Grafiken holen, cachen und die gecachten Bilder einbinden.

Das Ergebnis auf der Webseite sieht dann so aus:

2014-11-17-piwik-stats-with-static-images.jpg

Konfiguration

Zunächst einmal die Basis-Daten als Konfiguration: Für die eigene Verwendung sind die Parameter anzupassen. Die Variablennamen sollten einleuchtend sein:


// anpassen
$sPiwikToken = "419f6099c81111fdb6ae65...";
$iPiwikSiteId = 7;

// Bildgroesse und Farbe
$iImageWidth = 500;
$iImageHeight = 200;
$sBarColor = "887799";

// Domain und Pfad zu Piwik anpassen
$sBaseUrl = "http://[www.deine-domain.de/piwik]/index.php?module=API&method=ImageGraph.get"
  . "&idSite=$iPiwikSiteId&apiModule=[MODULE]&apiAction=[ACTION]"
  . "&period=range&date=last[DAYS]"
  . "&token_auth=$sPiwikToken"
  . "&width=$iImageWidth&height=$iImageHeight&colors=$sBarColor";

[Weiterlesen…]

Bootstrap 3.3 unter Concrete 5.6

Montag, 3. November, 2014

Meine Webseite verwendet Concrete 5 als CMS.
Auf aktuelle Version 5.7 kann man dummerweise nicht upgraden, weil man im Unterbau zuviel geändert hat. Toll. Ich will einige Komponenten trotzdem aktualisieren.

Ich hatte so die famose Idee, auf meiner Webseite Bootstrap auszutauschen
VON v3.0
AUF v3.3

Der Konflikt besteht darin, dass das Backend mit Bootstrap 2 arbeitet und mit jQuery v1.7 daherkommt.

Bootstrap 3.3 braucht nun aber mind. jQuery 1.9. Mit vermeintlich gutem Gewissen habe ich die letzte 1-er Version von jquery heruntergeladen. Und mit jQuery 1.11 läuft wiederum das Bootstrap 2 Backend nicht mehr sauber.

Ein Teufelskreis ;-)

Erschwerend kommt hinzu, dass C5 das jQuery innerhalb

Loader::element('header_required');

irgendwo lädt (damit werden mehrere Html-Header Zeilen per echo rausgeschrieben).

Entweder man modifiziert Originale (davon rate ich per se ab), macht Custom-Elemente - oder ersetzt es in seinem Template. Letzters habe ich gemacht - mit Hilfe der ob_ Funktionen wird der Content abgegriffen und darin der Pfad zum jQuery File ersetzt.

        // 2014-11-01 hahn
        // HACK to use bootstrap 3.3 in live mode and concrete5 cms mode
        // --> load specific jquery version
        ob_start();
        Loader::element('header_required'); 
        $sHeadcontent = ob_get_contents();
        ob_end_clean();
        
        $u = new User();
         if (!$u->isRegistered()) {
             $sHeadcontent=str_replace(
                     '/concrete/js/jquery.js', // or '/updates/concrete[version]_updater/concrete/js/jquery.js',
                     $this->getThemePath() . '/js/jquery_1.11.1.js',
                     $sHeadcontent
             );
         }
        echo $sHeadcontent;
        // ENDE jquery HACK

Eine andere Folge des jQuery Updates war die Inkompatibilität mit colorbox (Addon Lightboxed Image - 0.9.2).
Durch Aktualisieren der Dateien unter

[webroot]/packages/lightboxed_image/blocks/lightboxed_image

mit den aktuellen colorbox-Sourcen lief auch das wieder.

Update:
Eine andere Variante (die Auswirkung auf alle Themes hätte) wäre, die Datei concrete/elements/header_required.php in das Verzeichnis elements zu kopieren und dort anzupassen. So kommt man auch ohne die ob_-Funktionen aus.

weiterführende Links:

Soundcloud: Doop

Dienstag, 21. Oktober, 2014

Mit Sounds spielen macht einfach zuviel Spass. Diesmal mit 150 Sachen … äh: 150 bpm.

Downloads:

stereo: mp3 | ogg … und 5.1 surround: ogg | mp4

SRF Homepage ist heute sehr übersichtlich

Samstag, 20. September, 2014

Loriot: Das sieht aber sehr übersichtlich aus …

2014-09-21-srf.png

Links in Quicktime

Mittwoch, 10. September, 2014

Mit choco install quicktime ist Apple Quicktime ja schnell installiert…

Startet man Quicktime, gibt es einen Startbildschirm mit viiiieeelen Links:

2014-09-10-quicktime-links.png

Ich habe mir mal erlaubt die Ziel-Links einzuzeichnen:

Nochmal langsam: es werden 20 (in Worten: zwanzig) Verlinkungen gesetzt, die allesamt auf dasselbe Ziel zeigen??
Und was ist das für ein Ziel auf eine Textwüste beim blau markierten Link?
2014-08-15-quicktime-ziel2.png
Was in aller Welt ist der Sinn dieses Links?

Hey Apple, das ist eines euerer Produkte Stand zweitausendvierzehn!?
Was lasst ihr denn da für einen Sch(… rott) auf die Welt los?

Qualität ist etwas anderes.

UPDATE
(*) Link wurde deaktiviert

Was für ein Vorfall …

Dienstag, 5. August, 2014

Ich habe eine E-Mail bekommen. Irgendein Arbogast Brock meint, mir unterstellen zu müssen, ich hätte zum Zeitpunkt XY mit IP irgendwas einen superdollen Film heruntergeladen.

2014-08-05-vorfall-download.png

Wie ich sowas liebe …

Ich war am 30.07.2014 im Urlaub - und es war keiner hier daheim - das MUSS also Unfug sein.

Die Anrede:
Arbogast weiss also nicht mal meinen Namen.

Die IP-Adresse:
72.91.170.240 - dazu kann man whois [IP-Adresse] aufrufen (unter Linux/ Mac ist es ein mitinstalliertes Kommandozeilentool - oder es gibt auch Webseiten, die diese Aufgabe lösen - einmal nach “whois” suchen).
Jedenfalls ist obiges eine IP der Fa. Verizon Online LLC in Ashburn (USA). Aha.
Wie dumm muss man sein, dass nicht einmal die IP des Landes des Angeschriebenen Opfers übereinstimmt?!
Arbogast weiss also nicht mal, wo ich eigentlich bin.

Der Anhang:
Im Anhang ist ein CAB-Archiv. Darin wiederum ist eine EXE-Datei.
Warum genau sollte ich nochmal eine EXE-Datei von einem unbekannten Absender - ohne eine angegebene Adresse öffnen?

Gesehen .. gelacht .. F8.

Pimped Apache Server Status Update v1.10

Montag, 19. Mai, 2014

Mein PHP Tool “Pimped Apache Server Status” macht den Apache Status lesbar. Dies funktioniert auch mit mehreren Webservern gleichzeitig und eignet sich so auch zum Live Monitoring von loadbalancten Webseiten.

Im letzten Update kamen 2 Boxen in der oberen Reihe hinzu. Sie zeigen die Anzahl der abgefragten Webserver an und wie lange dies brauchte.

2014-05-19-pimped-apache-status-v110.png

Im LAN bei mir auf Arbeit wird der Status von 19 Webservern in weniger als 0.3 Sekunden geholt.
Wie weit es nach oben skaliert, weiss ich noch nicht. Erfahrungsberichte von anderen Webmastern/ Sysadmins sind daher willkommen!

Update:
Ich habe mich noch einmal genauer belesen…
Die einzelnen Apache Server status werden in der Methode ServerStatus->getStatus() (s. Datei ./classes/serverstatus.class.php) mittels curl_multi_exec() geholt. Bei dieser Funktion erfolgen die Requests - wie ich es auf php.net lese - sequentiell.
Erst ab PHP Version 5.5 gibt es eine Funktion curl_multi_setopt, mit der man parallele Requests steuern kann - aber auf diese PHP-Version ist mein Tool noch nicht getrimmt.

Weiterführende Links:

Linkchecker auf meiner Webseite

Freitag, 14. März, 2014

Hinweis: Dieser Artikel von 2014 ist veraltet. Als Linkchecker verwende ich nun den meinen ahCrawler

In meiner alten Webseite hatte ich in externen Linkchecker direkt als Link im HTML-Code.
Im neuen CMS ist das nicht mehr so. Alle Links verweisen auf die echte Zielseite. Aber ich habe weiterhin einen Linkchecker integriert - allerdings als Javascript-Löung.

So funktioniert es:

Alle Links zeigen auf die Zielseite.

<a href="http://example.com/">Beispiellink</a>

Nun ist es so, dass ich in meinen Artikeln keinerlei externe Links verwende. Alle externen Links sind rechterhand platziert - in einem DIV namens “sbright” (”sb” für sidebar).
Alle Links in diesem Div - also nicht die auf der Seite insgesamt - werden geprüft, ob sie eine externe Referenz besitzen - falls ja, wird das Onclick Event umgebogen auf ein PHP-Skript inc_urlchecker.php. Diese Funktion nutzt jQuery:

/**
 * change external links in the sidebar: a linkchecker will be added
 * @returns {undefined}
 */
function initAddLinkchecker(){
    var sLink=false;
    $("#sbright a").each(function() {
        // do something with external links:
        if (this.href.indexOf("axel-hahn.de")<0){
            sLink=this.href;
            sLink="/axel/php/inc_urlchecker.php?url="+sLink;
            $(this).attr("onclick", "location.href='"+sLink+"'; return false;");
        }
    });
}

In jenem PHP-Skript wird der übergebene Link mit einem Http Head Request mittels Curl geprüft.

// from http://php.net/manual/en/function.get-headers.php
function get_headers_curl($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $r = curl_exec($ch);
    $r = preg_split("/n/", $r);
    return $r;
}

Ist der Http-Response Code OK (200er und 300er Http-Statuscodes) wird der Besucher weitergeleitet. Wenn nicht, gibt es einen entsprechenden Hinweis im Webbrowser samt Entschuldigung, Fehlermeldung und Link zurück zur letzten Seite.

Ach so, und vom letzten Test eines Links wird der Response Header in eine (Sqlite) Datenbank geschrieben. Die sehe ich gelegentlich ein und weiss, welche Links ins Nirvana gehen.

Weiterführende Links:

Webseite des SRF verschläft Start der olympischen Spiele?

Donnerstag, 6. Februar, 2014

Die ersten Wettkämpfe in Sotschi sind beendet.
Die offizielle Seite der Olympischen Spiele http://www.sochi2014.com/ hat rechts oben 2 Links auf SRF

2014-02-06-sotschi-at-srf-01.jpg

Beide dortigen gehen ins Leere (die zu anderen SRG Unternehmenseinheiten hingegen sind OK).

Weder der Link

http://www.srf.ch/sotchiplayer
2014-02-06-sotschi-at-srf-02.jpg

noch http://www.srf.ch/sotchi
2014-02-06-sotschi-at-srf-03.jpg

wurden gefunden.

@SRF: Es ging nun los! Bitte diese Seiten schnell freischalten :-)

Anm.: dieser Blogeintrag und Screenshots entstanden nach Kontakt-Aufnahme mit dem SRF Kundendienst. Natürlich gibt es alles rund um Olympia auf srf.ch - es geht rein um die Links, die der offiziellen Olympiaseite kommuniziert wurden.

Links:

  • http://www.sochi2014.com/ (Seite leitet um auf olympic.org)
  • http://www.srf.ch/sotchiplayer]www.srf.ch/sotchiplayer (Anm.: die Olympia-Player-Webseite wurde abgeschaltet)
  • http://www.srf.ch/sotchi (Link wurde deaktiviert)

Updates:
10.02.: Kundendienst findet den besagten Link nicht - ich sende einen Screenshot zurück.
11.02.: Kundendienst schreibt, es wurde an die Multimedia Sportabteilung weitergeleitet.
12.02.: Redirects wurden eingerichtet - die Links funktionieren nun.

Google Analytics wurde deaktiviert

Donnerstag, 11. Juli, 2013

Die da in Übersee sammeln doch schon genug Daten! Mehr als genug.

Als freundliche kleine Randnotiz zu eurer Kenntnisnahme darf ich hiermit verkünden:
Das Tracking mit Google Analytics wurde auf der Webseite www.axel-hahn.de und in meinem Blog gnadenlos gekickt. Weiterhin aktiv ist die Statistische Auswertung mit der Piwik Installation unter www.axel-hahn.de - also auf “meinem” Server in D.