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.
Ein FQDN setzt sich aus drei Hauptbestandteilen zusammen:
Hostname – Der spezifische Name eines Computers oder Dienstes (z. B. www
).
Domainname – Der Name der übergeordneten Domain (z. B. example
).
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.
✅ 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.
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.
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.
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.
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.
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 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:
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.
Hot Module Replacement (HMR): Der HMR funktioniert extrem schnell, indem er nur die geänderten Module aktualisiert, ohne die gesamte Anwendung neu zu laden.
Modernes Build-System: Vite verwendet Rollup unter der Haube, um die endgültige Produktion zu bundeln, was optimierte und effizientere Builds ermöglicht.
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.).
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.
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.
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.
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.
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.
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.
Fixed Window – Eine feste Anzahl von Anfragen innerhalb eines Zeitfensters (z. B. max. 100 Anfragen pro Minute).
Sliding Window – Eine gleitende Begrenzung basierend auf den letzten Anfragen.
Token Bucket – Nutzer erhalten eine bestimmte Anzahl von „Tokens“ für Anfragen, die sich mit der Zeit regenerieren.
Leaky Bucket – Anfragen werden in einer Warteschlange verarbeitet, die nur begrenzt abfließen kann.
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 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.
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.
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: Schneller bei einfachen Key-Value-Speichern, skaliert gut horizontal.
Redis: Bietet mehr Features wie persistente Speicherung, Listen, Hashes, Sets und Pub/Sub.
sudo apt update && sudo apt install memcached
sudo systemctl start memcached
Mit PHP oder Python kann Memcached über entsprechende Libraries verwendet werden.
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.
Startpunkt: Der Spider beginnt mit einer Liste von URLs, die gecrawlt werden sollen.
Analyse: Er ruft den HTML-Code der Webseite ab und analysiert die Inhalte, Links und Metadaten.
Folgen von Links: Er folgt den auf der Seite gefundenen Links, um neue Seiten zu entdecken.
Speicherung: Die gesammelten Daten werden an die Datenbank der Suchmaschine weitergeleitet, wo sie für die Indexierung verarbeitet werden.
Wiederholung: Der Vorgang wird regelmäßig wiederholt, um aktuelle Inhalte zu erfassen.
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.
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.
Suchmaschinen (z. B. Googlebot von Google) – Indizieren Webseiten, damit sie in Suchmaschinen-Ergebnissen erscheinen.
Preisvergleichsportale – Durchsuchen Onlineshops nach aktuellen Preisen und Produkten.
SEO-Tools – Analysieren Webseiten auf technische Fehler oder Verbesserungspotenzial.
Datenanalyse & Monitoring – Beobachten Webseiteninhalte, z. B. für Marktforschung oder Konkurrenzanalysen.
Archivierung – Speichern Webseiten für spätere Referenzen (z. B. Internet Archive).
Startet mit einer Liste von URLs.
Ruft Webseiten auf und speichert Inhalte (Text, Metadaten, Links).
Folgt den Links auf den Seiten und wiederholt den Vorgang.
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.
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.
A-Z
, 0-9
, -
, .
und _
) beschränkt sind, erlauben IRIs Zeichen aus dem gesamten Unicode-Zeichensatz.https://de.wikipedia.org/wiki/Überblick
https://de.wikipedia.org/wiki/%C3%9Cberblick
Ü
als %C3%9C
kodiert)IRIs sind in RFC 3987 definiert und werden in modernen Webtechnologien wie HTML5, XML und RDF unterstützt.
IRIs machen das Internet sprachlich inklusiver, indem sie Webseiten und Ressourcen mit nicht-lateinischen Zeichen leichter zugänglich machen.
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.
Ein typischer Testprozess umfasst: