Amazon Alexa - meine Seite kommt Rang 60.000 näher

Donnerstag, 30. Mai, 2019

Amazon Alexa … ist das nicht ein Lautsprecher?
Wenn wer sich das fragt, hat Amazon vielleicht ein Branding Problem. Aber das soll nicht meines sein.

Nein, ich meine das schon viel ältere Amazon Alexa - das mit mit den Webseiten-Rankings.

Hin und wieder schaue ich, wie sich das Ranking von axel-hahn.de in Deutschland verhält. Und das schwankt! Was ich über die letzten Monate so sehe:

  • Im März lief es mal aus dem Listing heraus (über Platz 150.000 vermute ich).
  • Binnen einer Woche schwankt es mal um 30.000 Plätze. Auf 4 Stellen nach - äh: VOR - dem Komma braucht man nicht so genau schauen.
  • Seit Ende März 2019 bewegt es sich um Platz 100.000 (+/- 10.000 Plätze)
  • Ende April war er bei Rang 135.000 (weltweit: 1.5 Mio) … und fällt seitdem
  • Am 29.5. kam ich auf 60931 (weltweit: 1.2 Mio)

Wenn ich mal Zeit habe (hm, das ist ein ganz böses geflügeltes Wort für: das tritt eh nie ein :-)), dann mache ich die PHP-Klasse, mit der ich die Alexa-Statistik einhole, mal schön … wie auch öffentlich.

weiterführende Links:

  1. Golb Slexa: Klettern im Alexa-Ranking
  2. www.alexa.com (en)

Pimped Apache Status: über 500 Downloads im März

Freitag, 24. Mai, 2019

Ich bin leider erst soeben darüber gestolpert: diesen März gab es auf Sourceforge einen absoluten Peak von 565 Downloads im Monat.

2019-05-25-downloadstats-pimped-apache-status.png

Warum habe ich das nicht gesehen?

In die tageweise Statistik reingezoomt … davon waren 500 an einem Tag (19.3.) - ich glaube, da hat sich wer einen Scherz erlaubt und wget bemüht - oder gar öfter F5 im Browser gedrückt.

So schnell kann eine kleine Euphorieblase wieder platzen.

weiterführende Links:

  1. Axels Webseite - Docs Pimped Apache Status Get started - hier ist das Youtube Video
  2. Github: Pimped Apache Status
  3. Sourceforge: Pimped Apache Status

PHP: komisch grosse Zeiten in Curl

Mittwoch, 8. Mai, 2019

Ich hatte wirklich seltsame Antwortzeiten mit der Curl-Bibliothek in PHP in meiner eigenen Monitoring-Anwendung.
Bei Verwendung von curl_getinfo($curl) ist der Wert von “total_time” ein Wert in Sekunden. Eigentlich. Bei einer Reaktionszeit von 16ms sollte es 0,016 sein, ich erhielt aber 16000.

Das Problem ist, dass sich die Werte der Curl-Funktion bei Verwendung von PHP mit mod_php korrekt verhalten - nur im FCGI Modus gibt es Zahlenwerte, die Faktor 1 Mio. zu gross sind.

Bei einer Antwort-Zeit von 16 ms sollte der Wert im Feld total_time 0.016 sein - unter FCGI kommt aber 16000 zurück.

2019-05-08-curl-time-values.png

Nach einer kurzen Suche, fand ich einen bestehenden Bugreport, wo ich meine Daten ergänzte. Mal schauen, ob da wohl was geht …

weiterführende Links:

  1. bugs.php.net- 76438: wrong curl_getinfo time values
  2. php.net: Funktion curl_getinfo()
  3. Github: IML AppMonitor

SPAM: Das ist meine letzte Warnung!

Montag, 14. Januar, 2019

Hach wie süss, was es nicht alles für niedliche Spams gibt:
Mein anonymer Hacker mit dem Mädchennamen hat eine E-Mail-Adresse aus Gabun.

Der-die-das intensiv recherchiernde HackerIn hat mein Adressbuch und lauter private Details durch den selbstprogramierten, webcameinschaltenden Spitzentrojaner ergattert, aber nennt meinen Namen nicht in der Anrede. Das könnte einem … nun ja, ich sage es wirklich ungern, weil es so ein Humorkiller ist: es könnte einem bereits in Zeile 1 verdächtig vorkommen. Verdammt schade. Aber ich habe weitergelesen - es wurde ja tatsächlich noch lustig!

2019-01-14-bitcoin-gegen-angebliche-webcam-videos-01.png

Wie er-sie-es an meine Facebookfreundesliste kam, scheint mir ein faszinierender Trick, den ich mir unbedingt einmal vorführen lassen muss! Mein FB Account ist bereits seit Langem gelöscht.

“Sobald Sie diese E-Mail öffnen, werde ich wissen, dass Sie sie geöffnet haben.” - ach nein! Noch ein Fail! Der zieht das Ganze wieder arg in die Tiefe. Das gibt definitiv Abzug in der B-Note. Das ging vieleicht vor 10 Jahren. Mittlerweile blockt nahezu jedes E-Mail-Programm Bilder - sichtbare … als auch jenes heimlich eingebaute 1×1 Pixel Bildchen, das nachhause telefonieren will.

Und der Rest des Textes ist Unterhaltung pur: gern genossen mit einem Bier, Chips und Erdnussflips. Und einem Taschentuch, um die Tränen vor Lachen aus dem Auge zu wischen.

Anonym?

Schauen wir mal, wie anonym die Anonyme Barbara ist. Dazu muss man in seinem E-Mailprogramm den E-Mailheader anschauen (oder auch Kopfzeilen).

Die E-Mail wurde versendet … und vom E-Mailserver mx.ee.anonymer-hackers.ga angenommen. Falls jemand die Logs jenes Servers analysieren möchte - die E-Mail an mich hat in dessen Logfiles die ID 43dVh823zcz4mkv und den Zeitstempel Mon, 14 Jan 2019 10:53:44 +0000 (UTC).

Jener Mailserver hat die IP-Adresse 142.93.139.160 - und dies wiederum ist in Amsterdam beim Provider Digital Ocean.

Der Mailserver meines Providers (smtp.rzone.de) hat jene ID und den versendenden ebenfalls im E-Mail-Log drin. Der-die-das HackerIn kann somit seine eigenen Spuren verwischen, indem die eigenen Logfiles getilgt würden. Aber die Spur ist dennoch da: bei meinem Provider.

Und noch ein Funfact: Zuguterletzt taucht da eine Unsubscribe Liste auf. Das ist eher typisch für eine Mailing-Liste - also eine Software, die massenweise E-Mails versendet. Ob ich mich abmelden kann und dann kein Spam mehr erhalte? SCNR

2019-01-14-bitcoin-gegen-angebliche-webcam-videos-02.png

Google Maps: bitte bewerte doch mal …

Samstag, 8. Dezember, 2018

Ich war einmal - genaugenommen, war es letzte Woche: ich war im Auto und ein Freund fuhr mich Nähe München … hach nein, so viele unnütze Details. Soll ich nochmal anfangen?

Google Maps erbat so aus dem Nichts gar Sonderbares: bitte bewerte doch den Golfclub XY … frag-mich-doch-nicht… bettel-heul-ich-will-aber-gern.

Sorry, ich war nirgends Golf spielen und in keinem Golf-Club. Das Auto, in dem ich sass, fuhr lediglich ausserhalb des Golfgeländes daran vorbei. Was bitte soll ich da bewerten? Den Strassenbelag, die Symmetrie der Bäume entlang der Allee - oder doch das Grün, was ich unter Einhaltung des Geschwindigkeitslimits mit nur geringer Aufmerksamkeitsspanne an mir vorbeirauschen sah?

Ich meine, da war Rasen. Und es war hügelig … und nach meiner Erinnerung habe ich in der Tat gar nicht soo genau darauf geachtet. Tja, und schon waren wir daran vorbei.

Mein Vorschlag wäre: fragt doch bitte echte Besucher jenes Areals! Und als Hint: das wären tendenziell diejenigen Bewegungseinheiten, die sich nach Analyse der Positionsdaten zum einen direkt auf dem Golfgelände befinden als auch mit zumeist deutlich weniger als 30km/h über den Platz bewegen.

Javascript Snippet: Query Parameter holen

Montag, 16. Juli, 2018

Ab und an brauche ich es mal … und daher ergänze ich hier ein weiteres Snippet.

/**
 * get query parameters from url as object
 * @returns {object}
 */
function getQueryParams() {
    qs = document.location.search.split('+').join(' ');

    var params = {},
            tokens,
            re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
    }

    return params;
}

Beispiel:

// to get values from current request
// https://example.com/path/index.html?parameter1=foo&parameter2=bar
var oQuery=getQueryParams();
console.log(oQuery.parameter1); // foo
console.log(oQuery.parameter2); // bar

Immer wieder hilfreich: SMS mit Roaming-Kosten

Donnerstag, 18. Januar, 2018

Zum Jahreswechsel war ich mal wieder St. Petersburg. Von meinem Mobilanbieter bekomme ich stets eine SMS mit Roamingkosten für das jeweilige Land, sobald er mich irgendwo neu lokalisiert.
Auch wenn wir 2017/2018 haben - und ich “mitten in Europa” war (der Ural als Europagrenze zu Asien ist 1.500 km weg), war dies eine hilfreiche Info:

2018-01-18-roaming-kosten.jpg

Ich nehme mal an, das meinen sie ernst: 10 Franken für 1 Megabyte.
Wenn man es hochrechnet: 1GB Datenvolumen kosten 10.000 Franken (=9.000 Euro). *Schluck*

Bye-bye Facebook

Freitag, 22. Dezember, 2017

Nachdem ich heute einmal alle Aktivitäten heruntergeladen habe - das waren gerade einmal 8 MB, ich habe mit Schlimmerem gerechnet - wurde der Account deaktiviert.

2017-12-22-byebye-facebook.png

Kurz darauf kam eine E-Mail:

On 22.12.2017 22:16, Facebook wrote:
Hallo Axel,

wir haben eine Anfrage auf dauerhafte Löschung deines Kontos erhalten. Dein Konto wurde von der Seite deaktiviert und wird innerhalb von 14 Tagen dauerhaft gelöscht.

Falls du die dauerhafte Löschung deines Kontos nicht beantragt hast, melde dich bitte bei Facebook an, um diesen Antrag abzubrechen:

https://www.facebook.com/login.php

Danke,
Das Facebook-Team

Aber auch wenn der Account endgültig gelöscht ist, gebe ich mich keiner Illusion hin: natürlich weiss ich, dass mich Facebook weiterhin im Internet tracken wird.

weiterführende Links: (für Nachahmer :-))

  1. Seite Facebook: Mein Konto löschen
  2. Und wie sie sammeln… Heise: Datensammlung: Bundeskartellamt droht Facebook mit Sanktionen Entweder das US-Unternehmen schlage eine eigene Lösung vor oder das Kartellamt müsse “das Sammeln und Verwerten von Daten aus Drittquellen ohne ausdrückliche Zustimmung der Nutzer” verbieten, sagte Kartellamts-Chef Andreas Mundt.

Axel was here … OpenNebula Conf 2017

Mittwoch, 8. November, 2017

Na, ein Glück, gibt es ein Beweisfoto! Oder Suchbild. Je nachdem.
Demnach war ich wohl im Oktber 2017 in Madrid bei der OpenNebula Conf.

2017-11-08-opennebulaconf-01.jpg

Anm.: OpenNebula ist ein Verwaltungswerkzeug für virtuelle Server verschiedener Hypervisor (z.B. KVM, Xen, Vmware … und auch gemixt) in einem oder mehreren Rechenzentren für private, public und hybride Clouds.

weiterführende Links:

  1. opennebula.org

PHP-Funktion: Passwort-Check bei haveibeenpwned.com

Mittwoch, 16. August, 2017

Anbei eine Funktion, die mit der API von haveibeenpwned.com ein Passwort prüft, ob dieses als gehackt gilt.
Wenn die Funktion true zurückliefert, wurde das Passwort gefunden (sprich: wurde gehackt). Diese Funktion kann man z.B. in einer Applikation einbauen, wenn man Benutzer ihr Passwort setzen lässt. Wenn die Funktion true liefert, dann wäre die Benutzereingabe als unsicher zurückzuweisen.

/**
* check password in an online database; it returns true if the password
* was found in the database
*
* @see https://haveibeenpwned.com/API/v2
* @param string   $sPassword   password to check
* @param boolean  $bShowDebug  show debug infos or not (default: false)
* @return boolean
*/
function haveibeenpwned($sPassword, $bShowDebug=false){
   
    // --- make the request
    $sCheckPwUrl='https://haveibeenpwned.com/api/pwnedpassword/'.sha1($sPassword).'?originalPasswordIsAHash=true';
    $context = stream_context_create($opts);
    $sPwReturn = file_get_contents(
            $sCheckPwUrl, false,
            stream_context_create(
                array(
                    "http" => array(
                        "method" => "GET",
                        "header" => "User-Agent: php-check-4-my-password\r\nAccept: application/vnd.haveibeenpwned.v2+json\r\n"
                    )
                )   
            )
    );
    $aRespHeader=$http_response_header;
   
    echo $bShowDebug ? '<pre>'.$sCheckPwUrl.'<br>'
            . 'Header: '.print_r($aRespHeader, 1).'<br>'
            . '$sPwReturn = '.$sPwReturn.'<br>'
            .'</pre>' : '' ;
   
    // --- check result
    $bFound=array_search('HTTP/1.1 200 OK', $aRespHeader)!==false;
    echo $bShowDebug ? (
            $bFound ? 'ERROR: The password was found in the database :-/'
                : 'OK: seems not to been hacked yet :-)'
            ) : '';
    return $bFound;
}

weiterführende Links:

  1. https://haveibeenpwned.com/
  2. haveibeenpwned.com - API