Git Cheatsheet von tq-bit

Heute habe ich auf dev.to einen Artikel von Tobias Quante (@tqbit) gefunden, der wichtige Git Befehle aufzeigt. Die Visualisierung der einzelnen Commands ist dabei besonders gut gelungen. So kann man relativ schnell sehen, wann man welche Befehle verwenden muss.

Hier geht es zum original Beitrag: https://dev.to/tqbit/a-printable-pdf-git-cheatsheet-33bd

Hier geht es direkt zu den Cheatsheets: https://github.com/tq-bit/dev-cheatsheets

UX9 URL Shortener: Upgrade auf Laravel 8 – Teil 1

Ich habe wieder einmal meinen Urlaub genutzt, um einige meiner privaten Projekte weiter zu entwickeln. Eines meiner derzeit größten Projekten ist mein eigener URL Shortener: https://ux9.de

Das ist neben meiner eigenen Homepage mittlerweile auch das Projekt, welches am längsten läuft. Bereits Ende 2009 habe ich mit den ersten Ideen dazu angefangen und diese noch auf meinem derzeitigen Blog (kein WordPress) genutzt, um externe Verlinkungen zu analysieren und durch eine einfache Verkürzung besser darstellen zu können. Mit dem Erwerb von mehreren dreistelligen Domains, hat mein URL Shortener dann in den darauffolgenden Jahren auch seine eigene Seite bekommen.

Das Projekt wurde mit der Zeit stetig erweitert. Die ersten Jahre habe ich nur PHP ohne Framework verwendet. Seit 2015 habe ich dort dann mit Laravel 4.2 bzw. Laravel 5 als Framework begonnen. Dabei habe ich auch die Grundstruktur des Projektes neu organisiert. Neben stetigen Weiterentwicklungen gab es zuletzt ein Upgrade auf Laravel 6 im September 2019.

Die darauffolgenden Jahre war ich mir nicht sicher, ob ich das Projekt überhaupt noch weiter betreiben möchte oder nicht. Nach viel Überlegen habe ich mich aber dazu entschlossen, das Projekt weiter laufen zu lassen. Die Vorraussetzung dafür ist aber, dass das Projekt von Grund auf neu strukturiert wird, mit Unit-Test ergänzt wird und es eine vernünftige Möglichkeit gibt, dass Administratoren die einzelnen Module verwalten können.

Die Umstellung meiner Seite, möchte ich in dieser Serie von Beiträgen mit euch teilen. Ich hoffe ich kann damit einen kleinen Einblick geben, wie man Projekte sinnvoll umstellen kann. Die Teile werden in den nächsten 1-2 Wochen erscheinen.

Warum du immer Timeouts definieren solltest

Roberto Vitillo (@ravitillo) schreibt in seinem Beitrag darüber, warum ihr bei API Calls immer darauf achten solltet, auch Timeouts zu verwenden.

Das ist tatsächlich auch etwas, was mir relativ häufig auf Webseiten aufgefallen ist. Plötzlich ist eine Seite sehr langsam, lädt über eine lange Zeit oder ist gar nicht erst erreichbar. Hier kann es unter anderem dann daran liegen, das der Server eine Schnittstelle aufrufen möchte, welche nicht erreichbar oder viel zu lange für eine Antwort benötigt.

Sind bei solchen Szenarien dann keine Timeouts in der Anwendung definiert, so muss mit unerwarteten Problemen der Anwendung gerechnet werden. Im schlimmsten Fall, ist die Anwendung nicht erreichbar weil z.B. Nginx ein Gateway Timeout zurück meldet.

Hier kommt ihr nun weiter zum Blog-Eintrag. Ist wirklich sehr zum empfehlen und auch mit einige Code Beispielen: https://robertovitillo.com/default-timeouts/

Laravel Mailables – Tutorial

Schnell und einfach E-Mails mit Laravel Mailables versenden

Die neue Möglichkeit mit Laravel E-Mails zu versenden

Nun ist es ist es endlich soweit. Laravel 5.3 ist seit Ende August veröffentlicht. Und damit einige neue und großartige Features. Eines der größten Änderungen ist eine neue Art und Weise, wie in Laravel E-Mails versendet werden können.

Hier übrigens eine Zusammenfassung von den größten Änderungen, die Taylor Otwell während der Laracon US schon präsentiert hat. In diesem Beitrag möchte ich mich aber auf Laravel 5.3 Mailables konzentrieren und zeige euch wie man damit den bisherigen Code verbessern kann.

Wie wir bisher E-Mails verschickt haben
Mail::send('layout.email.send', ['title' => $title, 'message' => $message], function ($message)
{
    $message->from('[email protected]', 'Tobias Maxham');
    $message->to('[email protected]');
});

Diese Methode hat zwar bisher gut funktioniert, doch nachdem einige E-Mails gesendet wurden, fängt die Code-Basis irgendwann an chaotisch zu werden. Das soll sich aber nun mit Laravel Mailables deutlich verbessern.

Einführung in Laravel Mailables

Mit Mailables in Laravel werden vorgefertigte Klassen erstellt, die später verschickt werden können. Grundsätzlich sind Mailables verantwortlich für die Datenzusammenstellung und diese dann an die Views weiterzugeben. Und mittlerweile ist die API für das Senden von E-Mails wirklich sehr einfach geworden.

Alles was wir nun machen müssen, um E-Mails in Laravel zu versenden ist folgendes:

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

Wie man sehen kann, ist es deutlich einfacher geworden E-Mails zu verschicken. Trotzdem kann man mit der „alten“ API immer noch E-Mails verschicken. Das wird noch weiterhin unterstützt.

Erstellen einer Mailable-Klasse

Mit artisan, dem genialen Laravel Command-Line-Tool, können wir ganz einfach eine neue mailable-Klasse erstellen:

php artisan make:mail <NameDerMailableKlasse>

In meinem Beispiel habe ich die mailable Klasse DoryFound genannt („Findet Dorie“ kommt ende September im Kino).  Demnach müsste der Befehl wie folgt aussehen:

php artisan make:mail DoryFound

Nachdem wir nun die neue mailable Klasse erstellt haben (zu finden in app/mail) hat diese folgenden Aufbau:

<?php
 
namespace App\Mail;
 
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
 
class DoryFound extends Mailable
{
    use Queueable, SerializesModels;
 
    public function __construct()
    {
        //
    }
 
    public function build()
    {
        return $this->view('view.name');
    }
}

Wie man sehen kann, dient die build Methode zum Generieren der Nachricht. In unserem Fall ersetzte ich den Pfad mit email.dory-found. Als nächstes legen wir ein neues Template an. Dazu müssen wir unter ressources/views zunächst einen Ordner email anlegen, sollte dieser noch nicht vorhanden sein, und dort dann eine neue PHP-Datei unter dem Namen dory-found.blade.php.

Daten an die E-Mail View weitergeben

Alle public-Properties der mailable Kasse werden automatisch in der View zur Verfügung gestellt. Daten der View zu übergeben ist also genau so einfach wie die Daten in der mailable Klasse öffentlich zu machen. Sagen wir also, ich möchte den Ort übergeben, an dem ich Dorie gefunden habe, dann muss ich das nur in der Klasse so festhalten:

public $location = 'Ozean';

In der View können wir auf den Wert dann zugreifen, als wäre es eine normale Variable:

<h1>Ich habe es geschafft!</h1>
<p>Ich habe Dory im <strong>{{ $total }}</strong> gefunden.</p>

Zusätzlich könnte man die with-Methode verwenden:

public function build()
{
    return $this->view('emails.dory-found')
                ->with($key, $value);
}

Senden zusätzlicher Parameter

Hinzufügen von BCC, CC und dem ganzen Rest kann auf die $this in der build-Methode aufgerufen werden. Hier ein Beispiel dafür:

public function build()
{
 
    $address = '[email protected]';
    $name = 'TobyMaxham';
    $subject = 'Dorie Gefunden!';
 
    return $this->view('emails.dory-found')
                ->from($address, $name)
                ->cc($address, $name)
                ->bcc($address, $name)
                ->replyTo($address, $name)
                ->subject($subject)
                ->with($key, $value);
}

Fazit

Mit Laravel Mailable lassen sich wirklich schnell und einfach E-Mails versenden. Das Erstellen der Klassen ist genau so leicht wie das Versenden der E-Mails. Wer jedoch lieber die alte Funktionalität nutzen möchte, könnte dies weiterhin nutzen. Ich bin aber schon jetzt ein großer Fan von Laravel 5.3 und werde auch noch weitere Neuerungen wie Notifications oder oAuth beschreiben.