100.000 Streams auf Jamendo

Donnerstag, 1. Dezember, 2016

Huh!! Heute kommt ja alles zusammen :-)

Auf Jamendo wurde die 100.000 er Marke abgespielter Streams geknackt! Und es gibt über 50.000 Downloads.

2016-12-01-jamendo-100000.png

Der mit grossem Abstand am häufigsten geklickte Song ist … ein Weihnachtslied :-)

Jamendo: Jingle Bells

Innovation Award Oktober 2016 für Klasse ahpwcheck

Donnerstag, 1. Dezember, 2016

Ja sowas: mit 37.5 % der Stimmen abgeräumt :-)
Die Javascript-Klasse zählt in einem (Passwort-) Input-Feld Typen von Zeichen und ermittelt Grad der Erfüllung der Anforderungen, Gross- und Kleinschreibung, Ziffern, Sonderzeichen und Anzahl. Plus Mehrsprachigkeit und Callbackfunktion zum Abrunden.

2016-12-01-jsclasses-innovation-award-4-ahpwcheck.png

2016-12-01-jsclasses-innovation-award-4-ahpwcheck-email.png

Update:
Auf einen der gesponsorten Preise habe ich verzichtet. Damit können “richtige” oder angehende Programmierer mehr anfangen, als ich. Der Award gehört mir ja bereits - das reicht mir völlig aus :-)

weiterführende Links:

  1. jsclasses.org: ahpwcheck
  2. Github: Sourcen inkl. Beispiele
  3. axel-hahn.de: Docs

Opcache auf WAMP-Server unter MS Windows aktivieren

Sonntag, 27. November, 2016

Auf dem Wampserver für Windows wird die opcache DLL mitgeliefert, ist aber nicht aktiv.
Um es zu aktivieren, muss man die php.ini bearbeiten. Man findet Hinweise, wie die Extension zu aktivieren ist. Mein Fehler war, dass ich per Dateimanager die php.ini im Verzeichnis

C:\wamp\bin\php\php5.5.12\

bearbeitete … was zu keinerlei Resultat führte, weil der Apache Daemon die php.ini aus dem Apache-Verzeichnis anzieht:

C:\wamp\bin\apacheapache2.4.9\bin\php.ini

Also …

Schritt 1:
Mit einem phpinfo() in der Ausgabe prüfen, welches die richtige php.ini ist :-)
Oder direkt im Traymenü unter Php die dortige php.ini zum Bearbeiten anklicken.

Schritt 2:
Die php.ini bearbeiten … in der Sektion “[opcache]” ist die Extension zu aktivieren: die Zeile zend_extension=php_opcache.dll eintragen (sie existiert nicht).
Der Eintrag opcache.enable=1 ist hingegen bereits vorhanden:

(...)
[opcache]

zend_extension=php_opcache.dll

; Determines if Zend OPCache is enabled
opcache.enable=1
(...)

Schritt 3:
Apache neu starten. In der Ausgabe von phpinfo() sieht man dann das zusätzliche Modul … und auch Im Tray-Menü Php -> Php Extensions ist opcache ist das Warnsymbol nun weg.
Wer mag, kann noch einen Viewer wählen, um den Speicherstatus zu prüfen, z.B. ob der zugewiesene Speicher für den Cache korrekt ausgelegt ist.

weiterführende Links:

  1. Github: opcache-status
  2. https://easyengine.io/tutorials/php/zend-opcache/ - weitere Webviewer (en)

Umstellung auf SSL

Mittwoch, 23. November, 2016

“Mein” Hoster bietet 1 kostenloses SSL Paket bei shared Hosting an (hätte man einen eigenen Host, könnte man ja ein Zertifikat mit Lets Encrypt installieren).

Das Zertifikat ist seit dieser Woche aktiv und ich habe nun einige Konfigurationen umgeschrieben und Anwendungen (Blog, Diashow, Dokumentationen) angepasst.
Ich glaube, jetzt läuft es. Im Wesentlichen.

Alle Aufrufe mit http werden daher auf https mittels .htaccess umgeleitet.

RewriteEngine on
RewriteBase /

# 2016-11-23 - force SSL :-)
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Update:

Wenn eine Subdomain in einem Unterverzeichnis der Hauptdomain liegt (so werden bei Strato die zusätzlichen Domains abgelegt), dann kann man deren Hostnamen mit einem Regex prüfen und von der Umleitung aussliessen.

  • RewriteCond %{HTTP_HOST} !.*example\.com [NC]
    .* als Platzhalter für beliebige Zeichen: Domain mit allen Subdomains. Bei mehrenen Domains im Paket schreibt man pro Domain eine Zeile
  • RewriteCond %{HTTP_HOST} !^www1\.example\.com [NC]
    mit ^ beginnend genau diese Subdomain und Domain

In der .htaccess des Webroots der Haupdomain kann man schreiben:

RewriteEngine on
RewriteBase /

# force SSL
RewriteCond %{HTTP_HOST} !.*domain2\.de [NC]
RewriteCond %{HTTP_HOST} !.*domain3\.de [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

weiterführende Links:

  1. letsencrypt.org (en)
  2. Axels Webseite: Diashows
  3. Axels Webseite: Dokumentationen (en)

JS Klasse ahpwcheck ist nominiert für Innovation Award Oktober 2016

Donnerstag, 3. November, 2016

Vor einigen Tagen habe ich auf jsclasses.org eine 2. Javascript-Klasse eingerichtet: ahpwcheck. Deren Sourcen sind zuvor auf Github und Doku ebenfalls online gestellt worden.
Und nun wurde diese Klasse für den Innovation Award Oktober 2016 nominiert.

Bitte Voten!!! :-)

2016-11-03-ahpwcheck-on-jsclasses-nominee.jpg

weiterführende Links:

  1. Projektseite auf www.jsclasses.org (en)
  2. Source von ahpwcheck: Github (en)
  3. Docs (en)

Song: Lift control

Mittwoch, 2. November, 2016

Good Mood … etwas Instrumentales in Richtung EDM. Stampfende Beats mit 125 bpm.

Der Song kann auf meiner Webseite unter www.axel-hahn.de/music/axels-songs/ heruntergeladen werden.
Dort gibt es diesen Song (und weitere) als Versionen in stereo und 5.1 surround:

ogg | m4a

weiterführende Links:

  1. Song auf Soundcloud
  2. Song auf Jamendo

Javascript Demo-Sourcecode anzeigen

Donnerstag, 15. September, 2016

Zu einer Javascript Klasse habe ich Beispiel-Dateien erstellt.
Den Javascript Schnipsel, der für die jeweilige Demo verwende, wollte ich aber nicht duplizieren und als HTML in der Sektion mit den Erläuterungen nochmal wiederholen. Copy & Paste Fehler … wenn man das Demo anpasst … Fehlerquellen gibt es einige. Und wenn jemand den Democode aus einem Beispiel kopiert, dann soll es ja auch funktionieren.

Abhilfe ist recht einfach, um nicht zu sagen banal: das Script-Tag des Demos bekommt eine ID:

<script id="source">
    var oPwCheck = new ahpwcheck();
    oPwCheck.watch('ePassword', 'outpwcheck');
</script>

Und man erstellt einen Ausgabecontainer mit einem PRE Tag.

<p>So wurde es gemacht:</p>
<pre id="viewsource"></pre>

Bei den Erläuterungen greift man den Content mit document.getElementById(”source”).innerHTML ab und schreibt ihn in den PRE-Tag hinein.

<script>
    document.getElementById('viewsource').innerHTML=document.getElementById("source").innerHTML.replace(/</g, '&lt;');
</script>

Das replace am Ende wandelt die öffnenden Tags “<” (resp. Kleiner-Zeichen für Vergleiche) in dessen HTML Entity um.

Pimped Apache Status Beta

Donnerstag, 8. September, 2016

Ich bin dabei, eine Version 2 meines Monitoring Tools Pimped Apache Status bereitzustellen.

Die bestehenden Analyse-Werkzeuge bleiben 1:1 erhalten. Wichtigste Neuheit ist das Admin-Backend: Hier kann man künftig seine Server und Servergruppen für loadbalancte Webseiten per Webbrowser konfigurieren. Bisher musste man dazu eine Config-Datei bearbeiten.

Die Konfigurationsdateien wurden dazu von PHP-Arrays in reine JSON Dateien überführt. Anm.: zur Umwandlung einer 1.x Konfiguration gibt es eine upgrade.php

Aber einmal in Bildern…

Screenshot 1:

  • Das Default-Skin wird ein wenig farbiger: im Menü oben die Icons und die Tabs in der ersten Sub-Navigation
  • In den Kacheln sind wurde eine Kreisgrafik hinzugefügt. Diese hilft beim Bewerten des aktuell angezeigten Wertes: visualisiert ist er im Vergleich zum Maximum der letzten n Werte. Genaueres sieht man dann beim Mouseover über eine Kachel…
  • In der Subnavigation in rot: hier geht es zum Setup

206-09-08-pimped-apache-status-v2beta-01.png

Screenshot 2:

  • Im ersten Tab ist die Konfiguration der Server. Man legt zunächst eine Gruppe an und kann in dieser beliebige Server hinzufügen.
  • in weiteren Tabs kann man die bestehende Konfiguration einsehen: die Default-Einstellungen und die Custom-Settings.

206-09-08-pimped-apache-status-v2beta-02.png

Der Sourcecode der Beta ist in einem Branch auf Github verfügbar. Längerfristig wird der Sourcecode in Github verwaltet werden. Sourceforge wird dann nur noch als Lese-Instanz von Github am Leben erhalten.

Wenn jemand die Beta testen mag, so freue ich mich über euer Feedback.

weiterführende Links:

  1. Github: Pimped Apache Status (Anm.: Seit Veröffentlichung von Version 2 gibt es keinen Beta-Branch mehr)

Objekt mit boolean Attribute per $.ajax senden

Sonntag, 24. Juli, 2016

Ich habe eine kleine PHP-Applikation, die liest Metadaten aus einem JSON-File.
Diese Daten schreibt PHP-Code in ein Html-Dokument als Javascript-Objekt, damit diese in der Seite verfügbar sind.

echo 'var aMetadata=' . json_encode($o->aMetadata, JSON_PRETTY_PRINT) .';';

Wenn ich im Formular die Daten bearbeite und mein aktualisiertes Javascript ans PHP zurücksende, dann in der Form:

   var aMetadata={'title': 'Hello world' }

    $.ajax({
        type: "POST",
        url: sSaveUrl,
        data: {
            function: "setMetadata", 
            value: aMetadata, // <<<<< meine Metadaten
        }
    }).done(function () {
        // ...
    });

Auf Seite PHP wurde $_POST[”value”] der Methode setMetadata() übergeben:

    public function setMetadata($aNewMetadata) {
        if(!is_array($aNewMetadata)){
            echo "ERROR: not an array";
            return false;
        }
        $this->aMetadata=$aNewMetadata;
        return $this->saveMetadata();
    }

Das klappt soweit, bis … ja bis einmal ein boolean Wert übergeben werden soll. Es werden true/ false Werte als Strings in Form von “true”/ “false” vom $.ajax data-Wert gesendet, wenn man das Objekt direkt übergibt. Dann kann schonmal fies werden, wenn lauter korrupte Datensätze entstehen.

[Weiterlesen…]

anclock auf Platz 1 der Wochendownloads

Sonntag, 17. Juli, 2016

Weil ich ein paar PHP-Klassen auf phpclasses.org hinterlegt habe, habe ich nur mal mal vesuchsweise eine Javascript-Klasse in der Partnerseite jsclasses.org hinterlegt: meine Analog-Uhr.
Tja, und nun ist sie dort auf Platz 1. Unerwartet, aber trotzdem schön!

2016-07-17-jsclasses-top10-anclock.png

weiterführende Links:

  1. Analog-Uhr: Einführung auf meiner Webseite (deutsch)
  2. Dokumentation (en)
  3. Projektseite auf jsclasses.org
  4. Sourcen auf Github (en)