Effizienter arbeiten im Terminal: Wichtige Shortcuts für Profis

Ich möchte heute über einige wichtige Terminal Shortcuts sprechen, die dir helfen können, schneller und effizienter zu arbeiten.

  • Terminalbefehle wiederholen
Tastaturpfeil nach oben im Terminal
  • Terminal durchsuchen
STRG + R
  • letzten Befehl im Terminal noch einmal ausführen
!! + ENTER
  • Zum Anfang der Zeile springen
STRG + A
  • Zum Ende der Zeile springen
STRG + E
  • Abbruch des aktuellen laufenden Prozesses
STRG + C

Einführung in die Verwendung von Docker exec -it

In diesem Blogartikel werde ich euch zeigen, wie ihr die docker exec -it-Funktion effektiv nutzen könnt, um in einen laufenden Docker-Container einzusteigen. Dies ist besonders nützlich, um Befehle im Container auszuführen und Debugging durchzuführen.

Codebeispiel 1: Docker exec -it für den Einstieg in einen Container

docker exec -it containername /bin/bash

Diese Zeile startet eine interaktive Bash-Shell innerhalb des Containers mit dem Namen containername. Ihr könnt nun Befehle innerhalb des Containers ausführen.

Codebeispiel 2: Dateien im Container bearbeiten

docker exec -it containername vi /pfad/zur/datei.txt

Mit diesem Befehl könnt ihr eine Datei im Container öffnen und bearbeiten. Das ist hilfreich, wenn ihr Konfigurationsdateien ändern müsst.

Codebeispiel 3: Installation von Software im Container

docker exec -it containername apt-get install paketname

Ihr könnt Softwarepakete direkt im Container installieren, ohne den Container neu zu erstellen.

Codebeispiel 4: Anzeigen von Container-Logs

docker exec -it containername tail -f /var/log/container.log

Mit diesem Befehl könnt ihr die Protokolldateien eines Containers anzeigen, um Fehler zu diagnostizieren.

Codebeispiel 5: Docker exec -it mit einem anderen Benutzer

docker exec -it -u benutzername containername /bin/bash

Ihr könnt als ein anderer Benutzer in den Container einsteigen, indem ihr -u benutzername hinzufügt.

Nützliche Tipps:

Verwendet docker ps zum Auffinden von Container-IDs und -Namen. Stellt sicher, dass der Container gestartet ist, bevor ihr docker exec -it verwendet. Beachtet, dass ihr den Container nicht verlassen könnt, wenn ihr die Shell mit exit verlasst.

Mit diesen docker exec -it-Tipps und Codebeispielen seid ihr bestens gerüstet, um Docker-Container effizient zu verwalten und zu debuggen. Happy Dockering!

Laravel Testing: Versteh den Unterschied zwischen Feature und Unit Tests

Als ich bei einer Firma erstmals mit dem richtigen Testen von Applikationen konfrontiert wurde, lernte ich es leider falsch- bzw. verstand Anfangs nicht ganz den Unterschied, wann man was verwenden sollte... Warum? Ich habe leider anfangs die Testlogik von den Unternehmen übernommen - leider hat das Unternehmen das aber Falsch gemacht und hatte unmengen Featuretests im Unittestordner.. Weil ich neu dort war und mit testen noch nicht so viel anfangen konnte- habe ich es falsch übernommen. Leider, damit dir das nicht auch passiert, gibts hier einen kleinen Guide.

In der Welt des Laravel-Entwicklungsprozesses und generell im Developmentbereich ist es entscheidend, Tests zu schreiben, um sicherzustellen, dass unsere Anwendungen stabil und fehlerfrei funktionieren. Es gibt jedoch zwei Haupttypen von Tests, die du kennen solltest: Feature Tests und Unit Tests. Lass uns einen genaueren Blick darauf werfen.

  • Feature Tests: Diese Tests überprüfen die Funktionalität deiner Anwendung auf höherer Ebene. Sie simulieren die Interaktion eines Benutzers mit der Anwendung und testen, ob die Features korrekt funktionieren. Hier ist ein einfaches Beispiel eines Feature Tests in Laravel:
public function test_user_can_login()
{
    $user = User::factory()->create();

    $response = $this->post('/login', [
        'email' => $user->email,
        'password' => 'password',
    ]);

    $response->assertRedirect('/dashboard');
    $this->assertAuthenticatedAs($user);
}
  • Unit Tests: Im Gegensatz dazu überprüfen Unit Tests einzelne Komponenten deiner Anwendung auf ihre korrekte Funktionsweise. Hier ein Beispiel für einen Unit Test in Laravel:
public function test_user_has_full_name()
{
    $user = new User();
    $user->first_name = 'John';
    $user->last_name = 'Doe';

    $this->assertEquals('John Doe', $user->full_name());
}

Es ist wichtig, sowohl Feature Tests als auch Unit Tests in deiner Laravel-Anwendung zu verwenden, um eine umfassende Testabdeckung sicherzustellen und Fehler frühzeitig zu erkennen. Denke daran, dass Feature Tests die Benutzerinteraktion nachbilden, während Unit Tests auf die kleineren Einheiten deines Codes fokussieren.

Laravel: Factories in einem Package nutzen

In diesem Blogbeitrag möchte ich über die Verwendung von Laravel Factories sprechen, einem nützlichen Werkzeug in der Laravel-Welt. Mit Laravel Factories können wir Daten für unsere Tests effizient erstellen, ohne sie manuell eingeben zu müssen. Das spart Zeit und sorgt für konsistente Testdaten. Ich zeige dir, wie du Laravel Factories in deinen Projekten in einem Package nutzen kannst. In unserem Beispiel ist das Package ein unterpackage von Laravia und nennt sich Content. (Im Namespace ersichtlich)

In Laravel sollten Factories in der Regel im Verzeichnis database/factories innerhalb deines Laravel-Projekts erstellt werden. Die Namenskonvention für Factory-Dateien ist, den Namen des Modells in Kleinbuchstaben zu verwenden, gefolgt von "Factory.php". Zum Beispiel, wenn du eine Factory für ein Modell namens "Content" erstellst, sollte die Factory-Datei "ContentFactory.php" heißen.

  • Teile den Composer mit was du vorhast
"autoload": {
        "psr-4": {
            "Laravia\\Content\\Database\\Factories\\": "./src/database/factories"
        }
    },
"autoload-dev": {
        "psr-4": {
            "Laravia\\Content\\Database\\Factories\\": "./src/database/factories",
        }
    },
  • Erstelle eine factory: database/factories/ContentFactory.php
namespace Laravia\Content\Database\Factories;

use Laravia\Content\App\Models\Content;
use Illuminate\Database\Eloquent\Factories\Factory;

class ContentFactory extends Factory
{
    //Sagt deinem Package model zu welcher Klasse die Factory gehört
    protected $model = Content::class;

    //Erstelle die Definition
    public function definition()
    {
        return [
            'body' => $this->faker->text(),
        ];
    }
}
  • Aktiviere die Factory in deinem Package Model: app/Models/Content.php

namespace Laravia\Content\App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Laravia\Content\Database\Factories\ContentFactory;

class Content extends Model
{
    use HasFactory;

    protected static function newFactory()
    {
        return ContentFactory::new();
    }
}
  • du kannst nun in tests oder wo auch immer du die factory verwenden willst so einbinden:
Content::factory()->create(['body' => 'linux']);

Hier gehts zur Laravel Doku

Checke mit Laravel, ob du in der Console bist

Laravel bietet eine einfache Möglichkeit, zu überprüfen, ob du gerade in der Konsolenanwendung arbeitest. Dies kann in bestimmten Szenarien sehr nützlich sein, z. B. wenn du bestimmte Aufgaben nur in der Konsole ausführen möchtest. Hier ist, wie du das in Laravel machst:

if (app()->runningInConsole()) {
    // Du befindest dich in der Konsolenanwendung
}

Der obige Code verwendet die app()-Funktion, um die Anwendung zu überprüfen und festzustellen, ob sie im Konsolenmodus ausgeführt wird. Wenn ja, kannst du deine Konsolenbefehle ausführen. Andernfalls werden die Webanwendungsaufgaben ausgeführt.

Diese Funktion ist besonders hilfreich, wenn du Artisan-Befehle in Laravel entwickelst und sicherstellen möchtest, dass sie nur in der Konsole ausgeführt werden.