Buid-Management mit Grunt in JavaScript

Wer mit umfangreichen JavaScript-Dateien hantiert, wie es beispielsweise bei Angular Projekten der Fall ist, braucht ein kleines Helferlein, welches sich um lästige Details automatisiert kümmert. Der ebenfalls in JavaScript implementierte Task-Runner Grunt ist ein solches praktisches Werkzeug. Grunt gehört somit in die Kategorie der Build Tools und übernimmt monotone, wiederkehrende Aufgaben. Ob JavaScript Minimierung, SCSS-Processing, automatisierte Unit-Tests oder das Management von externen Abhängigkeiten: All das gehört zum Aufgabengebiet von Grunt.


Damit die Ergebnisse der Automatisierung immer die gleiche Ausgabe bei gleicher Eingabe produzieren und somit wiederholbar bleiben, sollte man auf spezialisierte Werkzeuge zurückgreifen. Build Tools erfüllen diese Anforderung, ganz egal, auf welchem System sie ausgeführt werden. Bei selbiger Eingabe wird immer die gleiche Ausgabe erzeugt. Die Plattformunabhängigkeit ist ein wichtiges Merkmal von Buildwerkzeugen und auch der wichtigste Grund, wieso einfache Shell- oder Batch-Skripte nicht genügen. Denn die Aufgaben, die mit Tools wie Grunt automatisiert werden, sollen nicht nur auf dem Rechner des Entwicklers laufen, sondern auch auf CI-/CD-Servern.

Wer für sein JavaScript Projekt den Task-Runner Grunt einsetzt, nutzt nicht nur ein mächtiges Werkzeug, sondern erleichtert sich merklich den Entwickleralltag. Dank der Automatisierung werden Fehler, die durch monotone, wiederkehrende Aufgaben entstehen, vermieden. Zusätzlich wird das Team von langweiligen Tätigkeiten befreit. Es ergibt sich somit mehr Raum, sich auf das eigentliche Entwicklungsgeschäft, die Implementierung neuer Funktionalität, zu konzentrieren. Um eine bessere Vorstellung davon zu erhalten, wie Grunt die einzelnen Programmierer im Team entlasten kann, habe ich ein kleines Szenario beschrieben, das so oder ähnlich den meisten sicherlich bekannt ist.

Ein typisches Einsatzszenario von Grunt findet man in der Komprimierung von JavaScript Dateien. Eine möglichst starke Komprimierung dieser oft umfangreichen Ressourcen verbessert die Ladezeiten von Webanwendungen signifikant. Wenn die komprimierte Variante zum Einsatz kommt, erfährt der Endnutzer eine merkliche Verbesserung. Aber auch das Kompilieren von SCSS-Dateien zu vom Browser verarbeitbarem CSS mit entsprechender Komprimierung gehört zum Alltag eines FrontEnd Entwicklers. Moderne Benutzerschnittstellen beinhalten allerdings eine Vielzahl an unterschiedlichen Bibliotheken von Fremdanbietern. Diese Abhängigkeiten gilt es, regelmäßig auf neuere Versionen zu aktualisieren und auf mögliche Sicherheitsrisiken hin zu untersuchen. Daher ist ein leistungsfähiges Dependency Management in modernen Softwareentwicklungsprojekten kaum noch wegzudenken. Bevor ich hier zu ausführlich werde, belassen wir es erst einmal bei den erwähnten Einsatzszenarien des JavaScript Task-Runners Grunt und schauen uns an, wie man diesen in das eigene Projekt integriert.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Validieren von Kreditkartennummern für Online Payments

Wer für seinen Webservice das Bezahlen mit der Kreditkarte anbietet, möchte die Nummer der Kreditkarte möglicherweise bereits im Vorfeld validieren. Auf diese Weise lässt sich die Menge fehlerhafter API Calls reduzieren.

Die Gültigkeit einer Kreditkartennummer lässt sich anhand des Luhn Algorithmus bestimmen. Hans Peter Luhn entwarf den Algorithmus und patentierte diesen 1960 als US Patent 2950048A. Mittlerweile gilt der Algorithmus als public domain und wurde unter ISO/IEC 7812-1 spezifiziert. Der Algorithmus ist sehr allgemein und eignet sich grundsätzlich zur Validierung von Identifikationsnummern. Damit kann das Verfahren auch für die Verwendung von Geschenkkarten beziehungsweise Gutscheincodes angewendet werden.

Um Kreditkarteninhaber vor Betrug beziehungsweise vor Missbrauch zu schützen, kommen beim Onlinebezahlen mehrere Sicherheitsfaktoren zum Tragen. Wichtigster Punkt hierbei ist die Nummer der Kreditkarte in Kombination mit einem Ablaufdatum und einem Prüfcode (CVC/ CVV). Die Laufzeit und die Prüfziffer, welche auf der Kreditkarte ebenfalls aufgedruckt sind, werden von den Kreditkartenfirmen willkürlich vergeben und können daher nur während des Bezahlvorgangs von der Bank verifiziert werden.

Bevor wir uns direkt dem Luhn Algorithmus zuwenden, noch ein Hinweis zum Speichern der Prüfziffern. Diese sollten möglichst nicht in der Datenbank abgelegt werden, sondern jedes Mal aufs Neue erfragt werden. Denn erst durch die Kombination von Kartennummern, Prüfziffer und Ablaufdatum ist das Bezahlen möglich. Fehlt ein einziger Parameter, schlägt der Bezahlvorgang fehl. Sicher kann man argumentieren, dass es für die Nutzer bequemer ist, wenn die Prüfziffer auch hinterlegt wurde. Aber Sicherheit und Komfort sind leider entgegenwirkende Anforderungen. Je höher die Sicherheit umso unbequemer die Benutzung. Wurde aber beispielsweise der Nutzeraccount gehackt oder erfolgreich eine SQL-njektion auf die Datenbank ausgeführt, können die Angreife sofort mit Ihrer Beute auf einen noch verheerenderen Raubzug gehen. Ein solcher Zwischenfall verursacht erheblichen Schaden bei der Reputation des eigenen Onlineangebotes.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

PHP Anwendungen mit Redis beschleunigen

Das Thema NoSQL ist schon ein wenig älter und mittlerweile auch in Produktivsystemen angekommen. Ein Vertreter aus der NoSQL Familie ist Redis. Es handelt sich um einen sehr einfach zu handhabenden in memory Schlüssel – Wert Speicher. Redis gibt es seit 2009 für alle gängigen Betriebssysteme und Programmiersprachen. Das Haupteinsatzgebiet von Redis ist Caching zur Beschleunigung von Applikationen. In diesem kleinen Workshop lernen Sie alles Notwendige, um Redis in Ihren PHP-Applikationen effizient verwenden zu können.

Der schwierigste Schritt ist wie bei so vielen anderen Technologien die Installation der Umgebung. Dank des Virtualisierungswerkzeuges Docker lässt sich die Installation im Handumdrehen in weniger als 5 Minuten erledigen. Um Redis zum Laufen zu bekommen, benötigen wir drei Schritte. Vorausgesetzt, auf dem System ist Docker [1] bereits vorhanden. Zuerst installieren wir den Redis Server [2], um uns anschließend mit Redis insight [3] einer grafischen Administrationsoberfläche auf dem Redis Server zu verbinden. Wenn diese beiden Schritte geglückt sind, muss noch abschließend die Redis Erweiterung in der PHP Installation aktiviert werden.

Beginnen wir daher mit der Installation des Redis Servers unter Docker. Listing 1 zeigt das vollständige Kommando für die Befehlszeile.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.