URL-Shortener mit neuer Funktion

Heute gibt es Neuigkeiten zum URL-Shortener der UX9 Group. Seit einiger Zeit ist es möglich, den URL Shorterne über verschiedene URLs aufzurufen. Bislang jedoch gab es keinen Unterschied zwischen den einzelnen Domains. Doch nun habe ich ein Feature freigeschalten, mit dem nun noch mehr kurze URL’s generiert werden können.

Bei der Generierung der kurzen URL’s, wird nun die Domain beachtet. Dies hat den Vorteil, dass ein viel höherer Pool an möglichen URL’s entsteht. Auf http://ux6.de/ ist die Chance auf eine vier-stellige URL noch sehr hoch. Dies kann sich in den nächsten Wochen zwar ändern, doch ich werde immer wieder neue Domains aktivieren und bekannt geben.

Aktuelle URL’s

Seit dem Start von meinem URL-Shortener sind noch vier weitere Domains dazu gekommen. In Kürze werden auch noch weitere folgen. Mit der Premium-Version habt ihr auch jetzt schon Zugriff darauf.

Aktuell könnt ihr auf den folgenden Seiten URL’s generieren:

Sobald diese offiziell verfügbar sind, werde ich dazu nochmal einen Newsletter verfassen.

URL-Shortener
QR-Code

Laracon: Übersicht Laravel 5.3

Gestern hat Taylor Otwell auf der LaraconUS einige neue Features von Laravel 5.3 präsentiert. Die Präsentation beinhaltete die vier Hauptpunkte: Laravel Scout, Laravel Passport, Laravel Mailable und Laravel Notifications. Hier nun ein grober Überblick, was man damit alles machen kann.

Laravel Scout

Laravel Scout ist eine Treiber basierende Volltextsuche für Eloquent. Algolia wird bereits bei der Auslieferung unterstützt. Da es jedoch Treiber basierend ist, können und werden noch andere Volltextsuch-Systeme integriert. Da wird es in der nächsten Zeit in der Community viele Vorschläge geben.

Scout kann leicht über einen „Searchable“-Trait in die bestehenden Models eingebaut werden. Anschließend müssen die Daten nur noch über einen Service synchronisiert werden. Dies könnte z.B. so aussehen:

php artisan scout:import App\\Post

Dann kann danach gesucht werden:

Post::search('Alice')->get();

Auch das Paginieren ist möglich:

Post::search('Alice')->paginate();

Genauso wie einfache WHERE-Bedingungen:

Post::search(‘Alice’)—>where('acount_id', '>', 1)->paginate();

Laravel Mailable

Laravel Mailable ist eine neue Mail-Klasse, die das Verenden von E-Mails deutlich verbessert. Das ganze schaut nun viel mehr nach Laravel aus, als die bisherige Vorgehensweise mit der Closure-Funktion.

Mail::to('[email protected]')->send(new OrderComplete);

Es sind alle Mail-Features weiterhin verfügbar:

Mail::to('[email protected]')->cc('[email protected]')->queue(new OrderComplete);

Laravel Notifications

Laravel Notifications erlaubt es uns, Updates über Services wie Slack, SMS oder E-Mail zu machen.

Notifications werden bereits mit einem „responsive transactional“ E-Mail Template ausgeliefert. In der eigentlichen Klasse muss dann nur noch folgendes aufgerufen werden:

 

$this->line('Thank you for joining')
    ->action('Button Text', 'http://url.com')
    ->line('If you have any questions please hit reply')
    ->success();

 

$this->line('Sorry we had a problem with your order')
    ->action('Button Text', 'http://url.com')
    ->error();

Laravel Passport

Laravel Passport ist ein optionales Packages das einen vollständigen OAuth2 Server bereitstellen kann. Man kann damit z.B. Token generieren oder zurücknehmen.

 

Diese Features werden alle noch bis zum Release Dokumentiert. Allerdings wird es bis dahin doch noch ein paar Wochen dauern. Vielleicht ja zur LaraconEU?

Installation eines MEAN.JS Stack

In diesem Beitrag werde ich darauf eingehen, was MEAN.JS eigentlich ist, wie man einen MEAN.JS Stack auf seinem Server aufsetzten kann und was man hierbei für Vorteile hat. In einem späteren Beitrag werde ich dann an einem Beispiel beschreiben, was man mit MEAN.JS machen kann.

Was ist MEAN.JS?

MEAN.JS ist eine Full-Stack-Software-Lösung, die dabei hilft eine Web-Anwendung schnell, robust und in Produktion besser wart bar zu machen. Dabei werden die Technologien MongoDB, Express, AngularJS und Node.JS verwendet. Daher kommt auch der Name MEAN.

MEAN.JS Logo - Maxham.de
MEAN.JS

Warum MEAN.JS?

MEAN.JS hilft dabei unnötige Routinearbeiten und häufige Fehler während der Laufzeit der Anwendung zu vermeiden. Das Hauptziel ist es, eine einfache und gut lesbare OpenSource-Lösung zu verwenden, die man in seinen Webprojekte verwenden kann und vertrauen kann.

Die MEAN Komponenten

Fangen wir mit MongoDB an. MongoDB ist eine NoSQL-Datenbank und im Großen und Ganzen JSON (oder JSONB) Dokumente verwaltet. Die Dokumentation von MongoDB ist gigantisch umfangreich und hilft sicherlich, MongoDB besser zu verstehen.

Express.js – ist ein serverseitiges Web-Application-Framework, das für die JavaScript basierende Plattform Node.js läuft.

Angular.js – ist ein clientseitiges JavaScript MVC-Framework, das zur Erstellung von Single-Page-Webanwendungen verwendet wird. Das von Google entwickelte Framework ist eines der beliebtesten und führendsten Frameworks in diesem Bereich.

Node.js – ist eine serverseitige Plattform zum Betrieb von Netzwerkanwendung.

Voraussetzungen

  • GIT $ git –version
  • Node.js & npm $ npm install && npm install -g bower
  • MongoDB
  • Bower
  • Grunt $ npm install -g grunt-cli
  • Gulp (optional) $ npm install -g gulp

Wie man sehen kann, ist weder Express noch AngularJS in der Liste enthalten. Dies kommt daher, dass MEAN.JS die Abhängigkeiten automatisch installieren kann.

Download MEAN.JS

Es gibt zwei Möglichkeiten wie man MEAN.JS installieren kann. Die von mir bevorzugte Methode ist, das Git-Repository direkt in ein lokales Verzeichnis zu kopieren. Das geht mit dem folgenden Befehl:

$git clone https://github.com/meanjs/mean.git meanjs

Mit diesem Befehl wird die aktuelle Version von MEAN.JS in das lokale Verzeichnis „meanjs“ geklont. Alternativ kann man sich den Build direkt als ZIP-Datei herunterladen.

$wget https://github.com/meanjs/mean/archive/master.zip

MEANJS installieren

Nachdem MEAN.JS nach den oben genannten Schritten in ein Verzeichnis kopiert wurde, muss folgender Befehl ausgeführt werden:

$npm install

Mit diesem Befehl werden alle Abhängigkeiten, die für die Anwendung benötigt werden installiert. Anschließend kann man die Anwendung mit dem Befehl $grunt starten. Sollten mit diesem Befehl Warnungen angezeigt werden, kann versucht werden diese mit $grunt -serve ODER $ grunt -force zu umgehen. Ein Versuch die Anwendung mit $grunt -force auszuführen sollte jedoch vermieden werden.

 

DigitalOcean: Server Deployment

Im Gegensatz zu anderen Anbietern hat sich DigitalOcean hauptsächlich auf das Deployment von virtuellen Cloud Server konzentriert. Da hier in den vergangenen Jahren ständig optimiert wurde, kann nun in wenigen Sekunden eine neue virtuelle Maschine aufgesetzt werden.

In der Web-Oberfläche muss man zunächst ein Image auswählen dass eine Distribution oder ein anderes Paket wie Node.js, MongoDB, LEMP oder Docker sein kann. Im Anschluss wählt man noch die gewünschte Server Größe. Da gibt es verschiedene Stufen die man auswählen kann. Diese steigen von 512MB RAM für 5$ auf bis zu 64GB RAM für 640$. Der verfügbare Speicher (SSD Disk) steigt auch entsprechend an. Wer mehr Speicherkapazität benötigt kann sich zusätzlich ein Block Storage anhängen. Diese sind aktuell aber nur in NYC1 und SFO2 verfügbar. Die Kosten betragen 0,10$ je GB.

Digital Ocean: create droplet
Digital Ocean: create droplet

Im Anschluss kann man optional noch den Hostnamen angeben. Außerdem kann man bis zu zehn virtuelle Maschinen gleichzeitig mit demselben Image erstellen. Mit diesen drei Schritten ist man wirklich echt schnell und kann so in kurzer Zeit eine virtuelle Maschine aufsetzen. Wenn man dies einige Male gemacht hat, dauert es bis zum Zugriff auf den Server nur ein bis zwei Minuten.

Ein weitere Vorteil von DigitalOcean ist die sehr übersichtliche API. Hier kann man dann über einen einzigen Befehl einen neuen Server, mit entsprechenden vorinstallierten Anwendungen und SSL-Zertifikaten erstellen. Somit benötigt man auch kein root-Passwort mehr.

Deployment

Doch für was kann man das nun nutzen? Man kann mit DigitalOcean in kurzer Zeit ein komplexes Netzwerk in verschiedenen Datenzentren aufbauen. Denkbar wäre auch das Aufsetzten von Hochverfügbarkeits-Systemen (HA für high availability) die durch die Möglichkeit der Skalierung schnell angepasst werden können. Durch das schnelle Aufsetzten und die Nutzung der API ist es aber auch für Entwickler Teams ein hoher Vorteil. So können einheitliche Server aufgesetzt werden oder im Handumdrehen Test-Server erstellt werden, die die Applikation bereits installiert haben. Wie man dies durch die API realisieren kann, werde ich in einem weiteren Beitrag berichten.