bg_image
header

Fully Qualified Domain Name - FQDN

Der Fully Qualified Domain Name (FQDN) ist der vollständige und eindeutige Name eines Computers oder Hosts im Internet oder in einem lokalen Netzwerk. Er besteht aus mehreren Teilen, die eine hierarchische Struktur widerspiegeln.

Aufbau eines FQDN

Ein FQDN setzt sich aus drei Hauptbestandteilen zusammen:

  1. Hostname – Der spezifische Name eines Computers oder Dienstes (z. B. www).

  2. Domainname – Der Name der übergeordneten Domain (z. B. example).

  3. Top-Level-Domain (TLD) – Die oberste Ebene der Domainstruktur (z. B. .com).

Beispiel eines FQDN:
👉 www.example.com.

  • www → Hostname

  • example → Domainname

  • .com → Top-Level-Domain

  • Der abschließende Punkt (.) ist optional und steht für die Root-Domain des DNS-Systems.

Warum ist der FQDN wichtig?

Eindeutigkeit: Jeder FQDN ist weltweit einzigartig und verweist auf eine bestimmte Ressource im Internet.
DNS-Auflösung: Er wird von DNS-Servern genutzt, um IP-Adressen für Webseiten und Server zu finden.
SSL-Zertifikate: Ein FQDN wird oft in SSL/TLS-Zertifikaten verwendet, um sichere Verbindungen zu gewährleisten.
E-Mail-Zustellung: Mailserver verwenden FQDNs, um Mails an die richtigen Hosts zu senden.

Unterschied zwischen FQDN und einfacher Domain

  • FQDN: mail.google.com (vollständig spezifiziert)

  • Einfache Domain: google.com (kann mehrere Hosts enthalten, z. B. www, mail, ftp)

Zusammengefasst ist der FQDN die vollständige Adresse eines Geräts oder Dienstes im Internet, während eine einfache Domain eine allgemeine Adresse ist.


Early Exit

Ein Early Exit bezeichnet in der Programmierung eine Technik, bei der eine Funktion oder ein Algorithmus vorzeitig beendet wird, sobald eine bestimmte Bedingung erfüllt ist. Das Ziel ist meist eine effizientere oder lesbarere Code-Struktur.

Beispiel in einer Funktion:

function getDiscount($age) {
    if ($age < 18) {
        return 10; // 10% Rabatt für Minderjährige
    }
    if ($age > 65) {
        return 15; // 15% Rabatt für Senioren
    }
    return 0; // Kein Rabatt für andere Altersgruppen
}

Hier sorgt der Early Exit dafür, dass die Funktion direkt einen Wert zurückgibt, sobald eine Bedingung zutrifft. Das verhindert überflüssige else-Blöcke und macht den Code übersichtlicher.

Vergleich mit einer verschachtelten Variante:

function getDiscount($age) {
    $discount = 0;
    if ($age < 18) {
        $discount = 10;
    } else {
        if ($age > 65) {
            $discount = 15;
        }
    }
    return $discount;
}

Hier wird die Logik unnötig verschachtelt, was die Lesbarkeit verschlechtert.

Weitere Anwendungsfälle:

  • Fehlertests am Anfang einer Funktion (return oder throw bei ungültigen Eingaben)

  • Schleifen schneller abbrechen, wenn das gewünschte Ergebnis gefunden wurde (break oder return)

Ein Early Exit verbessert also Lesbarkeit, Wartbarkeit und Performance eines Codes.


Vite

Vite ist ein modernes Build-Tool und Entwicklungsserver für Webanwendungen, das von Evan You, dem Schöpfer von Vue.js, entwickelt wurde. Es ist darauf ausgelegt, die Entwicklungs- und Build-Prozesse schneller und effizienter zu gestalten. Der Name "Vite" stammt vom französischen Wort für "schnell" und spiegelt das Hauptziel der Software wider: eine blitzschnelle Entwicklungsumgebung.

Die Hauptmerkmale von Vite sind:

  1. Schneller Entwicklungsserver: Vite nutzt die modernen ES-Module (ESM) und bietet durch diese Technik einen ultraschnellen Entwicklungsserver. Es wird nur das neueste Modul geladen, was die Initialisierung deutlich schneller macht als traditionelle Bundler.

  2. Hot Module Replacement (HMR): Der HMR funktioniert extrem schnell, indem er nur die geänderten Module aktualisiert, ohne die gesamte Anwendung neu zu laden.

  3. Modernes Build-System: Vite verwendet Rollup unter der Haube, um die endgültige Produktion zu bundeln, was optimierte und effizientere Builds ermöglicht.

  4. Zero-Konfiguration: Vite ist sehr benutzerfreundlich und erfordert keine umfangreiche Konfiguration. Es funktioniert sofort mit der Standard-Konfiguration, wobei es viele gängige Web-Technologien out-of-the-box unterstützt (z. B. Vue.js, React, TypeScript, CSS-Preprozessoren usw.).

  5. Optimierte Produktion: Für die Produktion wird Rollup verwendet, das für seine effizienten und optimierten Bundles bekannt ist.

Vite richtet sich hauptsächlich an moderne Web-Anwendungen und ist besonders beliebt bei Entwicklern, die mit Frameworks wie Vue, React oder Svelte arbeiten.

 


Partial Mock

Ein Partial Mock (teilweises Mocking) ist eine Technik beim Testen von Software, bei der nur ein Teil eines Objekts durch ein Mock ersetzt wird, während der Rest der echten Implementierung erhalten bleibt. Dies ist besonders nützlich, wenn du nur bestimmte Methoden eines Objekts stubben oder mocken möchtest, während andere Methoden normal ausgeführt werden.

Wann wird ein Partial Mock verwendet?

  • Wenn du eine Klasse testen möchtest, aber bestimmte Methoden von ihr isolieren musst.

  • Wenn einige Methoden schwer zu testen sind (z. B. weil sie externe Abhängigkeiten haben), aber andere weiterhin mit ihrer echten Logik arbeiten sollen.

  • Wenn du nur einige Methoden stubben möchtest, um den Testablauf zu steuern.

Beispiel in PHP mit PHPUnit

Angenommen, du hast eine Klasse Calculator, aber möchtest die Methode multiply() mocken, während add() normal funktioniert.

class Calculator {
    public function add($a, $b) {
        return $a + $b;
    }

    public function multiply($a, $b) {
        return $a * $b;
    }
}

// PHPUnit Test mit Partial Mock
class CalculatorTest extends \PHPUnit\Framework\TestCase {
    public function testPartialMock() {
        // Partial Mock von Calculator
        $calculator = $this->getMockBuilder(Calculator::class)
                           ->onlyMethods(['multiply']) // Nur diese Methode mocken
                           ->getMock();

        // Definiere Verhalten für multiply()
        $calculator->method('multiply')->willReturn(10);

        // Teste echte Methode add()
        $this->assertEquals(5, $calculator->add(2, 3));

        // Teste gemockte Methode multiply()
        $this->assertEquals(10, $calculator->multiply(2, 3));
    }
}

Hier bleibt add() unverändert und arbeitet mit der echten Implementierung, während multiply() immer 10 zurückgibt.

Fazit

Partial Mocks sind nützlich, wenn du Teile einer Klasse isolieren möchtest, ohne sie vollständig zu ersetzen. Sie helfen, Tests stabiler und effizienter zu machen, indem nur bestimmte Methoden gemockt werden.


Rate Limit

Ein Rate-Limit ist eine Einschränkung der Anzahl von Anfragen, die ein Benutzer oder ein System innerhalb eines bestimmten Zeitraums an einen Server oder eine API senden darf. Es dient dazu, Überlastungen zu verhindern, Ressourcen fair zu verteilen und Missbrauch (z. B. DDoS-Angriffe oder Spam) zu vermeiden.

Typische Rate-Limit-Methoden:

  1. Fixed Window – Eine feste Anzahl von Anfragen innerhalb eines Zeitfensters (z. B. max. 100 Anfragen pro Minute).

  2. Sliding Window – Eine gleitende Begrenzung basierend auf den letzten Anfragen.

  3. Token Bucket – Nutzer erhalten eine bestimmte Anzahl von „Tokens“ für Anfragen, die sich mit der Zeit regenerieren.

  4. Leaky Bucket – Anfragen werden in einer Warteschlange verarbeitet, die nur begrenzt abfließen kann.

Beispiele für Rate-Limits:

  • Eine API erlaubt maximal 60 Anfragen pro Minute pro Benutzer.

  • Eine Webseite blockiert eine IP nach 10 fehlgeschlagenen Logins in 5 Minuten.

Falls du Rate-Limits in deiner Webentwicklung umsetzen willst, gibt es dafür verschiedene Techniken und Tools wie Redis, NGINX rate limiting oder Middleware in Frameworks wie Laravel oder Express.js.

 


Memcached

Memcached ist ein verteiltes In-Memory-Caching-System, das häufig zur Beschleunigung von Webanwendungen eingesetzt wird. Es speichert häufig abgefragte Daten temporär im Arbeitsspeicher, um teure Datenbankabfragen oder API-Aufrufe zu vermeiden.

Wichtige Eigenschaften von Memcached:

  • Schlüssel-Wert-Speicher: Daten werden als Key-Value-Paare gespeichert.

  • In-Memory: Läuft vollständig im RAM, daher extrem schnell.

  • Verteilt: Unterstützt mehrere Server (Cluster), um die Last zu verteilen.

  • Einfach: Bietet eine minimalistische API mit grundlegenden Operationen wie set, get, delete.

  • Eviction (Ablaufstrategie): Verwendet LRU (Least Recently Used), um alte Daten bei Speicherüberlastung zu löschen.

Typische Anwendungsfälle:

  • Caching von Datenbankabfragen: Reduziert die Last auf Datenbanken wie MySQL oder PostgreSQL.

  • Session-Management: Speichert Benutzersitzungen bei skalierbaren Web-Apps.

  • Temporäre Datenspeicherung: Z.B. für API-Rate-Limiting oder kurze Zwischenspeicher.

Memcached vs. Redis:

  • Memcached: Schneller bei einfachen Key-Value-Speichern, skaliert gut horizontal.

  • Redis: Bietet mehr Features wie persistente Speicherung, Listen, Hashes, Sets und Pub/Sub.

Installation & Nutzung (Beispiel für Linux):

sudo apt update && sudo apt install memcached
sudo systemctl start memcached

Mit PHP oder Python kann Memcached über entsprechende Libraries verwendet werden.

 


Spider

Ein Spider (auch Webcrawler oder Bot genannt) ist ein automatisiertes Programm, das das Internet durchsucht, um Webseiten zu indexieren. Diese Programme werden oft von Suchmaschinen wie Google, Bing oder Yahoo eingesetzt, um neue oder aktualisierte Inhalte zu entdecken und in den Suchindex aufzunehmen.

Funktionsweise eines Spiders:

  1. Startpunkt: Der Spider beginnt mit einer Liste von URLs, die gecrawlt werden sollen.

  2. Analyse: Er ruft den HTML-Code der Webseite ab und analysiert die Inhalte, Links und Metadaten.

  3. Folgen von Links: Er folgt den auf der Seite gefundenen Links, um neue Seiten zu entdecken.

  4. Speicherung: Die gesammelten Daten werden an die Datenbank der Suchmaschine weitergeleitet, wo sie für die Indexierung verarbeitet werden.

  5. Wiederholung: Der Vorgang wird regelmäßig wiederholt, um aktuelle Inhalte zu erfassen.

Anwendungsgebiete von Spidern:

  • Suchmaschinenoptimierung (SEO)

  • Preisvergleichsportale

  • Webarchivierung (z. B. durch die Wayback Machine)

  • Automatische Inhaltsanalyse für KI-Modelle

Manche Webseiten setzen eine robots.txt-Datei ein, um festzulegen, welche Bereiche von einem Spider gecrawlt werden dürfen und welche nicht.

 


Crawler

Ein Crawler (auch Webcrawler, Spider oder Bot genannt) ist ein automatisiertes Programm, das das Internet durchsucht und Webseiten analysiert. Es folgt Links von Seite zu Seite und sammelt dabei Informationen.

Einsatzgebiete von Crawlern:

  1. Suchmaschinen (z. B. Googlebot von Google) – Indizieren Webseiten, damit sie in Suchmaschinen-Ergebnissen erscheinen.

  2. Preisvergleichsportale – Durchsuchen Onlineshops nach aktuellen Preisen und Produkten.

  3. SEO-Tools – Analysieren Webseiten auf technische Fehler oder Verbesserungspotenzial.

  4. Datenanalyse & Monitoring – Beobachten Webseiteninhalte, z. B. für Marktforschung oder Konkurrenzanalysen.

  5. Archivierung – Speichern Webseiten für spätere Referenzen (z. B. Internet Archive).

Funktionsweise eines Crawlers:

  1. Startet mit einer Liste von URLs.

  2. Ruft Webseiten auf und speichert Inhalte (Text, Metadaten, Links).

  3. Folgt den Links auf den Seiten und wiederholt den Vorgang.

  4. Speichert oder verarbeitet die gesammelten Daten je nach Zweck.

Viele Webseiten setzen die robots.txt-Datei ein, um zu steuern, welche Inhalte von Crawlern besucht oder ignoriert werden sollen.

 


Internationalized Resource Identifier - IRI

Ein Internationalized Resource Identifier (IRI) ist eine erweiterte Version eines Uniform Resource Identifier (URI), die Unicode-Zeichen außerhalb des ASCII-Zeichensatzes unterstützt. Dadurch können auch nicht-lateinische Schriftzeichen (z. B. chinesische, arabische oder kyrillische Zeichen) sowie Sonderzeichen in Webadressen und anderen Identifikatoren verwendet werden.

Wichtige Merkmale von IRIs:

  1. Unicode-Unterstützung: Während URIs auf ASCII (also Zeichen von A-Z, 0-9, -, . und _) beschränkt sind, erlauben IRIs Zeichen aus dem gesamten Unicode-Zeichensatz.
  2. Rückwärtskompatibilität: Jeder IRI kann in einen URI umgewandelt werden, indem nicht-ASCII-Zeichen in eine Punycode- oder Prozent-kodierte Form überführt werden.
  3. Anwendung in Web-Technologien: IRIs ermöglichen internationalisierte Domänennamen (IDNs), Pfade und Abfrageparameter in URLs, was die Webnutzung für nicht-englische Sprachen erheblich verbessert.

Beispiel:

  • IRI: https://de.wikipedia.org/wiki/Überblick
  • Entsprechender URI: https://de.wikipedia.org/wiki/%C3%9Cberblick
    (Hier wird Ü als %C3%9C kodiert)

Standardisierung:

IRIs sind in RFC 3987 definiert und werden in modernen Webtechnologien wie HTML5, XML und RDF unterstützt.

Fazit:

IRIs machen das Internet sprachlich inklusiver, indem sie Webseiten und Ressourcen mit nicht-lateinischen Zeichen leichter zugänglich machen.

 


System Under Test - SUT

Ein SUT (System Under Test) ist das System oder die Komponente, die in einem Testprozess geprüft wird. Der Begriff wird häufig in der Softwareentwicklung und Qualitätssicherung verwendet.

Bedeutung und Anwendung:

  • In Softwaretests bezeichnet der SUT das gesamte Programm, ein einzelnes Modul oder eine spezifische Funktion, die getestet wird.
  • In Hardwaretests kann der SUT ein elektronisches Gerät oder eine Maschine sein, die überprüft wird.
  • In automatisierten Tests wird der SUT oft mit Testframeworks und Tools getestet, um Fehler oder unerwartetes Verhalten zu identifizieren.

Ein typischer Testprozess umfasst:

  1. Definition der Testfälle basierend auf den Anforderungen.
  2. Ausführung der Tests auf dem SUT.
  3. Überprüfung der Testergebnisse und Abgleich mit den erwarteten Werten.