HTML steht für HyperText Markup Language (Hypertext-Markierungssprache). Wenn wir eine Webseite betrachten, sehen wir häufig immer noch viel Text. Jedoch ist der Text sehr unterschiedlich dargestellt, je nachdem, ob es sich um eine Überschrift, einen Link oder um eine längere Beschreibung handelt. In HTML können wir diese Textteile markieren, um sie als Überschriften, Absätze oder Links kenntlich zu machen.

HTML dient also dazu, sowohl die Texte selbst, als auch wichtige Struktur- und Bedeutungsinformationen abzuspeichern.

2.1 Einführung

2.1.1 HTML versus CSS

Wir unterscheiden also die folgenden Aspekte einer Webseite:

Eine der großen Errungenschaften im Web ist die konsequente Trennung zwischen:

Wie schon oben gezeigt, ist HTML nur für Inhalte, Struktur und Bedeutung zuständig. CSS baut dann auf den Informationen im HTML auf, um die grafische Umsetzung, das Styling, zu regeln.

Warum soll das eine "Errungenschaft" sein? Stellen Sie sich vor, Sie erstellen viele Webseiten für eine Institution in HTML. Jetzt können Sie ganz zentral in CSS alle diese Webseiten "stylen", ohne nochmal die HTML-Dateien ändern zu müssen. Wenn Sie aber im HTML Style-Informationen "versteckt" haben (wie es früher üblich war), dann bekommen Sie Probleme und müssen immer wieder durch alle HTML-Dateien durchgehen, um ein konsistentes Styling hinzubekommen.

2.1.2 Geschichte von HTML

HTML wurde 1989 von dem Physiker Tim Berners-Lee (CERN, Genf) definiert. Damals gab es XML noch nicht, sondern nur einen Vorläufer namens SGML. Berners-Lee baute HTML also auf SGML (einem ISO-Standard) auf. Später nahm sich das World Wide Web Consortium (W3C) der Weiterentwicklung an.

Die weitere Entwicklung von HTML war turbulent, zunächst ging es darum, überhaupt eine Einigung - einen Standard - über die Form von HTML zu erlangen, das nennt man auch eine Spezifikation:

Warum ist so ein Standard überhaupt wichtig? Ganz einfach: jeder Browserhersteller muss wissen, welche HTML-Elemente welche Bedeutung haben, damit der Browser die Webseiten richtig darstellt. Über Jahrzehnte (teilweise auch heute noch) waren Webseiten-Entwickler und -Designer einen Großteil ihrer Zeit damit beschäftigt, ihre Webseiten auf verschiedenen Browsern zu testen und spezielle Varianten und Workarounds für spezielle Browser zu programmieren (häufig ging es dabei um Microsofts Internet Explorer).

Der nächste Schritt war die Frage, ob man nicht XML als Grundlage für HTML nehmen sollte. SGML galt inzwischen als überholt. Also definierte man 2001 das sog. XHTML 1.0. Es war eine reine Anpassung von HTML 4.01 an XML.

Der nächste große Schritt war eine tatsächliche Erweiterung von HTML. Hier kam es zum Konflikt zwischen Entwicklern von XHTML 2.0 - das W3C - und einem neuen Konsortium (angestoßen von der Browserindustrie), der Web Hypertext Application Technology Working Group (WHATWG).

Man einigte sich glücklicherweise darauf, ein einem gemeinsamen Standard namens HTML5 zu arbeiten.

Heute sind wir in der glücklichen Lage, dass HTML5 weltweiter Standard ist und von allen Browsern verstanden wird. Dennoch ist es auch heute noch wichtig, Webseiten auf vielen Browsern und insbes. auch auf Mobilgeräten zu testen, um evtl. Anpassungen für spezielle Browser oder Displays vorzunehmen.

2.2 Basics 1

2.2.1 Grundgerüst

Ein HTML-Dokument ist eine einfache Textdatei mit der Endung .html, die prinzipiell folgende Struktur enthält:

<html>
  <head>
  </head>
  <body>
  </body>
</html>

Sie wissen aus dem Abschnitt über XML, dass wir es hier mit drei Elementen zu tun haben. Das Element html besagt, dass wir es hier mit einem HTML-Dokument zu tun haben. Das Element head beinhaltet Informationen über das Dokument. Diese Informationen werden nicht im Browser dargestellt. Das Element body schließlich enthält alles, was tatsächlich im Browser dargestellt werden soll.

Jetzt füllen wir das Grundgerüst mit zwei Inhalten. Das Element title zeigt an, was in der Fensterleiste des Browsers (oder im Reiter/Tab) angezeigt werden soll. Der Text in body wird dann auf der Seite angezeigt.

  <html>
      <head>
          <title>Meine Homepage</title>
      </head>
      <body>
          Willkommen auf meiner Seite!
      </body>
  </html>

Jetzt ist es noch üblich, in einer ersten Zeile anzugeben, dass das Dokument oder der DOCTYPE HTML ist (genauer gesagt, wird damti angegeben, dass wir HTML 5 verwenden und keine der früheren Versionen von HTML).

Dann fügen wir noch ein Attribut lang in das html-Element ein, das aussagt, dass es sich um ein deutschsprachiges Dokument handelt. Zu guter Letzt machen wir noch eine Angabe zur Zeichencodierung mit Hilfe des Elements meta: man verwendet üblicherweise UTF-8 (Unicode).

  <!DOCTYPE html>
  <html lang="de">
      <head>
          <meta charset="UTF-8"/>
          <title>Meine Homepage</title>
      </head>
      <body>
          Willkommen auf meiner Seite!
      </body>
  </html>

Formatierung: Wie Sie im obigen Beispiel sehen, kann man in HTML, genauso wie in XML, flexibel mit Einrückung und Zeilenumbruch umgehen. So ist z.B. das Element title in eine Zeile gesetzt, weil es mir so übersichtlicher erschien. Wichtig ist, dass es übersichtlich bleibt (für Sie und für andere). Wenn Sie Einrückungen verwenden, achten Sie darauf, dass diese korrekt sind: Sie sollten bei </html> wieder ganz am Anfang der Zeile sein.

2.2.2 Text

Ein einfacher Text hat eine Überschrift (engl. headline oder heading) und mehrere Absätze (engl. paragraph). In HTML gibt es dafür die Elemente h1 und p. Hier ein Beispiel:

<h1>Unglaubliche Geschichte</h1>
<p>
  Gestern passierte eine wahnsinnig unglaubliche Geschichte.
  Zwei Menschen gingen über eine Straße.
</p>
<p>
  Und wenn Sie nicht gestorben sind, dann leben sie noch heute.
</p>

Wenn Sie diesen Text in Ihre HTML-Datei im body einbetten, dann werden Sie im Browser den Text entsprechend formatiert (Überschrift groß, Abstände zwischen Absätzen) sehen.

Bei den Überschriften gibt es sechs Varianten: h1 bis h6. Diese Überschriften repräsentieren verschiedene "Ebenen". Zum Beispiel könnten ein Inhalteverzeichnis so aussehen:

<h1>Leben des Harry Hacker</h1>
<h2>Zarte Kindheit</h2>
<p>Bla bla bla</p>
<h2>Wilde Jugend</h2>
<p>Bla bla bla</p>
<h2>Reifes Erwachsenendasein</h2>
<p>Bla bla bla</p>

Um innerhalb eines Absatzes Wörter oder Passagen hervorzuheben, gibt es die Elemente em (engl. emphasis) und strong. Das em steht für eine dezentere Hervorhebung und wird meist kursiv dargestellt, wohingegen strong eine starke Hervorhebung erreichen soll und oft fett dargestellt wird.

<p>
  In diesem Kapitel geht es um <strong>HTML</strong>.
  Eine wirklich <em>wichtige</em> Sprache.
</p>

Weitere Formatierungs-Elemente sind:

2.2.3 Block und Inline

Ein wichtiger Unterschied sollte Ihnen zwischen Elementen wie h1 und p einerseits und em und strong andererseits aufgefallen sein.

Elemente wie h1 und p, nehmen sich viel Raum für ihren Inhalt und haben am Ende einen Zeilenumbruch. Man kann sich vorstellen, dass diese Elemente jeweils einen Block darstellen, der über die gesamte verfügbare Breite läuft. Man nennt diesen Typ Element auch Block-Elemente.

Elemente wie em und strong fügen sich dem Fluss von links nach rechts, genauso wie die Wörter in einer Zeile (engl. line). Man nennt diesen Typ auch Inline-Elemente.

2.2.4 Kommentare

Wie in Programmiersprachen gibt es auch in HTML die Möglichkeit, Bereiche zu definieren, wo Text ignoriert werden. Kommentare sind nützlich, um komplizierte Konstruktionen zu erklären, werden aber auch gern genutzt, um Stellen "auszukommentieren", die man gerade nicht benötigt, die man aber später evlt. wieder "einkommentieren" will.

Ein Kommentar beginnt mit <!-- und endet mit -->. Es gibt nur eine Art von Kommentar.

<!-- wichtiger Absatz -->
<p>
  Bla bla bla.
</p>

Ein wichtiger Bestandteil von Webseiten sind Links (auch: Hyperlink), d.h. dass ein Wort oder eine Wortgruppe beim Anklicken zu einer anderen Webseite weiterleitet.

Um z.B. im folgenden Satz das Wort "Hochschule" auf die Webseite der Hochschule Augsburg zeigen zu lassen, schreibt man

<p>
  An unserer <a href="http://www.hs-augsburg.de">Hochschule</a>
  studieren mehr als 6000 Studierende.
</p>

In diesem Fall zeigt (man sagt auch referenziert) der Link auf eine externe Webseite, d.h. es handelt sich um einen externen Link. Das Attribut href steht für hyperreference und enthält die Zieladresse der Webseite.

Man kann aber auch Dateien im eigenen Filesystem verlinken. Das nennt man einen lokalen Link. Haben Sie z.B. eine HTML-Datei kontakt.html im gleichen Verzeichnis liegen wie die Datei, in dem der Link vorkommt, so schreiben Sie einfach:

<p>
  Wie Sie uns finden, steht <a href="kontakt.html">hier</a>.
</p>

Bei lokalen Links können Sie beliebige Pfade verwenden. Dabei meint ".." das darüberliegende Verzeichnis (das "Elternverzeichnis"). Hier zwei Beispiele:

<a href="seiten/spezial/foo.html">foo</a>
<a href="../foo.html">foo</a>

Ein vorangestelltes "/" (slash) meint Ihr Web-Wurzelverzeichnis. Wenn Sie z.B. auf dem Server der Hochschule Augsburg Ihr Projekt hochladen, schieben Sie es in das Unterverzeichnis WWW in Ihrem Benutzerverzeichnis. Dieses Verzeichnis WWW ist also Ihr Web-Wurzelverzeichnis. Wenn Sie eine HTML-Seite im Verzeichnis WWW/fancy haben, können Sie so darauf zugreifen:

<a href="/fancy/seite.html">Fancy Seite</a>

2.2.6 Listen

Eine wichtiger Mechanismus in HTML sind Listen, entweder ungeordnet, z.B.

oder geordnet, d.h. die Reihenfolge spielt eine Rolle:

  1. Geld abheben
  2. Einkaufen
  3. Kochen

In HTML umgibt man eine Liste mit dem Tag ul (unordered list) oder ol (ordered list). Die einzelnen Punkte (engl. items) werden mit li (list item) eingefügt.

Also die ungeordnete Liste:

<ul>
  <li>Harry</li>
  <li>Sally</li>
  <li>Molly</li>
</ul>

Die geordnete Liste:

<ol>
  <li>Geld abheben</li>
  <li>Einkaufen</li>
  <li>Kochen</li>
</ol>

Mit dem Attribut type können Sie bei geordneten Listen bestimmen, ob Sie für die Aufzählung lieber Buchstaben nehmen, also Kleinbuchstaben (type="a") oder Großbuchstaben (type="A") oder römische Zahlen in Groß (type="I") oder Klein (type="i").

Listen in Listen

Listen können verschachtelt sein mit Unterlisten:

In HTML verschachtelt man entsprechend Listenelemente in li-Elemente:

<ul>
  <li>
    Harry
    <ul>
      <li>Student</li>
      <li>21 Jahre alt</li>
    </ul>
  </li>
  <li>
    Sally
    <ul>
      <li>Designerin</li>
      <li>29 Jahre alt</li>
    </ul>
  </li>
  <li>
    Molly
    <ul>
      <li>Doktorandin</li>
      <li>25 Jahre alt</li>
    </ul>
  </li>
</ul>

Sie können beliebig "tief" verschachteln und auch geordnete und ungeordnete Listen kombinieren.

2.2.7 Bilder

Bilder (engl. images) spielen natürlch eine wichtige Rolle auf Webseiten. Sie werden mit dem Element img eingebunden. Im Attribut src (source) gibt man an, unter welchem Dateipfad das Bild zu finden ist. Wichtig ist auch das Attribut alt: Hier gibt man einen Text an, der gezeigt wird, wenn das Bild nicht lesbar ist (Datei unvollständig oder nicht gefunden). Wichtig ist dieses Attribut vor allem aus Gründen der Barrierefreiheit. Menschen mit Sehbehinderung nutzen einen screen reader, der ihnen die Seite vorliest. Statt des Bildes wird dann der Text in alt vorgelesen.

<p>
  Schönes Bild: <img src="img/nice.jpg" alt="Berge" />
</p>

Häufig werden alle Bilde einer Webseite in einem Unterverzeichnis mit Namen img oder (seltener) images abgelegt.

Für die Pfade zu dem jeweiligen Bild gilt das gleiche, was unter "Links" beschrieben wurde.

2.2.8 Entitäten

Sie kennen das Problem aus der Programmierung: Wie setze ich ein Anführungszeichen in einen String? Denn das Anführungszeichen begrenzt ja den String. In Java lösen Sie das durch escaping, Sie setzen einfach ein Backslash vor das besagte Zeichen.

Ein ähnliches Problem haben Sie in HTML: Wie sage ich HTML, dass ich ein < setzen möchte (z.B. für eine mathematisch Ungleichung), denn die spitzen Klammer sind ja "reserviert", um Tags zu kennzeichnen.

Die Lösung: man erfindet einen Mechanismus, um problematische Zeichen zu beschreiben. In HTML nennt man solche Zeichen Entitäten (engl. entities). Entitäten bestehen aus einem & und einem ; und dazwischen ein paar aussagekrätige Buchstaben, z.B.

&lt;

für das < (lt steht für less than). Im Fluss sieht das dann so aus:

<p>Wir sehen also: a &lt; b.</p>

Analog schreibt man &gt; für >.

Im Deutschen können alle Umlaute und das scharfe S mit Entitäten codiert werden. Das ist i.d.R. nicht nötig, aber manchmal eben doch. Ein kleines ü kodiert man mit &uuml;, ein großes Ü mit &Uuml;. Analog mit ö und ä. Ein ß wird mit &szlig; kodiert.

Weitere interessante Zeichen sind etwa das kaufmännische Und (&) mit &amp; und das Copyright-Symbol © mit &copy; oder griechische Buchstaben wie das α mit &alpha;.

Ebenfalls nützlich ist das non-breaking space, damit ist ein Leerzeichen gemeint, an dem nicht umgebrochen wird, z.B. bei

Wenn Sie einen Zeilenumbruch vermeiden wollen, setzen Sie die Entität &nbsp; statt eines normalen Leerzeichens.

Eine Tabelle mit vielen weiteren Zeichen finden Sie bei SELFHTML oder w3schools, u.a. auch Zeichen aus anderen Sprachen und Symbole wie verschiedene Pfeile oder mathematische Zeichen.

2.3 Basics 2

2.3.1 Semantische Elemente in HTML5

Mit dem Übergang von HTML 4.01 auf HTML 5 wurde ganz neue Elemente eingeführt. Die Idee war, dass man neben den kleinteiligen Layout-Bedeutungen (Überschrift, Aufzählung, Absatz...) auch die Bedeutung von größeren Einheiten wie "Navigationsbereich" oder "Fußbereich" ausdrücken wollte.

Eine klassische Webseite könnte etwa so aussehen:

HTML5-Layout

(Quelle: w3schools.com)

Diese Elemente können und sollen in HTML5 verwendet werden, um die Bedeutung der Bereiche zu klären. Zu Zeiten von HTML 4.01 wurden der generische Container div verwendet, um solche Bereiche abzugrenzen.

Ein Beispielgerüst für eine typische HTML5-Seite würde also wie folgt aussehen:

<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="UTF-8"/>
    <title>Meine Homepage</title>
  </head>
  <body>

    <header>
    </header>

    <nav>
    </nav>

    <article>
    </article>

    <footer>
    </footer>

  </body>
</html>

Der Bereich nav könnte auch im header enthalten sein.

Die verschiedenen Elemente haben die folgende Bedeutung (Semantik):

Meine persönliche Erfahrung (2017) ist, dass insbesondere die Elemente nav, header und footer mittlerweile immer verwendet werden.

Oft möchte man auf einer Seite navigieren, indem man ein Inhaltsverzeichnis mit Links auf die jeweilige Abschnitte bereitstellt.

Dies nennt man einen seiteninternen Link. Dazu muss man zunächst Zielmarken in Form von IDs setzen. Zum Beispiel bei den Überschriften der Abschnitte, die man anspringen möchte:

<h2 id="mauerlauer">3.2 Auf der Mauer auf der Lauer</h2>
<p> Lorem ipsum ... </p>

Jetzt kann man einen Link setzen. Man setzt der Sprungmarke ein Hash voran:

Den Liedtext finden Sie im <a href="#mauerlauer">Abschnitt 3.2</a>.

2.3.3 Zeilenumbruch, Linie, Adresse

Hier beschreiben wir ein zwei leere Elemente, die Sie in Einzelfällen benötigen könnten.

Um eine horizontale Linie als visuelle Begrenzung zu erzeugen, verwenden Sie

<hr/>

(für horizontal line).

Um einen Zeilenumbruch zu erzwingen, schreiben Sie

<br/>

(für break). Ein Zeilenumbruch sollten Sie nur im Notfall verwenden. In der Regel müssten Sie mit dem Absatz-Element <p> auskommen.

Ein Fall, wo Sie tatsächlich regelmäßig einen Zeilenumbruch benötigen, ist die Angabe einer Adresse. Es wird sehr empfohlen, Adressen im folgenden Format zu setzen:

<address>
  Johnny B. Good<br/>
  An der Hochschule 1<br/>
  86161 Augsburg
</address>

Die Verwendung des Elements address hilft Suchmaschinen, Adressangaben aus Ihren Webseiten zu ziehen.

2.3.4 Tabellen

Eine einfache Tabelle könnte so aussehen. Sie besteht aus Zeilen und Spalten. Ein einzelnes Element nennen wir auch Zelle.

eins zwei
drei vier

Eine Tabelle wird in HTML Zeile für Zeile aufgebaut. Das umgebende Element ist table. Jede Zeile ist ein tr Element (table row). Innerhalb einer Zeile kann man die einzelnen Zellen dann mit td (table data) definieren.

<table>
  <tr>
    <td>eins</td>
    <td>zwei</td>
  </tr>
  <tr>
    <td>drei</td>
    <td>vier</td>
  </tr>
</table>

Sehen wir uns folgende Tabelle an:

Produkt Preis
Apfel 1 EUR

Hier sind die Zellen der ersten Zeile besonders markieren, denn Sie enthalten die "Überschriften" für die jeweilige Spalte. Für solche speziellen Zellen verwendet man statt td das Element th (table header).

<table>
  <tr>
    <th>Produkt</th>
    <th>Preis</th>
  </tr>
  <tr>
    <td>Apfel</td>
    <td>1 EUR</td>
  </tr>
</table>

Denken Sie daran, dass solche table header auch in der ersten Spalte stehen können:

Produkt Apfel
Preis 1 EUR

2.3.5 Zitate, Abkürzungen

Wir wissen, daß der modernste Computer der Welt kein so hochentwickeltes Gehirn hat wie eine Ameise. Klar, das könnten wir auch von vielen unserer Verwandten sagen, aber mit denen müssen wir ja bloß bei Hochzeiten oder besonderen Gelegenheiten auskommen. (Woody Allen)

Zitate (engl. quotes) können auf zwei Arten gekennzeichnet werden. Das obige Zitat ist ein Blockzitat, d.h. es soll alleinstehend als Block gesetzt werden:

<blockquote cite="http://www.zitate.de/autor/Allen%2C+Woody">
  Wir wissen, daß der modernste Computer der Welt
  kein so hochentwickeltes Gehirn hat wie eine
  Ameise. Klar, das könnten wir auch von vielen
  unserer Verwandten sagen, aber mit denen müssen wir
  ja bloß bei Hochzeiten oder besonderen
  Gelegenheiten auskommen. (Woody Allen)
</blockquote>

Im Attribut cite kann man optional die Herkunft oder eine Quelle des Zitats angeben.

Noch üblicher sind Zitate im Fließtext, z.B. "Ich denke viel an die Zukunft, weil das der Ort ist, wo ich den Rest meines Lebens verbringen werde" (Woody Allen). Solche Zitate kann man mit dem Element q umgeben:

<q>Ich denke viel an die Zukunft, weil das der Ort ist, wo ich den Rest meines Lebens verbringen werde</q> (Woody Allen)

Die Anführungszeichen setzt dann der Browser bzw. vielleicht sollen solche Zitate ja auch kursiv gesetzt werden. Mit CSS haben Sie später volle Kontrolle darüber.

Abkürzungen oder auch Fachwörter können mit einer Art "tool tip", also einem kurzen Erklärtext, versehen werden, der erscheint, wenn man mit der Maus über dem Wort fährt. Sie verwenden dazu das Element abbr (für abbreviation = Abkürzung) und schreiben im Attribute title ihren Erklärtext.

<p>
  In diesem Kapitel geht es um
  <abbr title="Hypertext Markup Language">HTML</abbr>.
</p>

Sie können natürlich auch mehrere Wörter in das Element packen.

2.3.6 Code darstellen

Wenn Sie Code einer Programmiersprache (z.B. Java oder auch HTML) ins Netz stellen wollen, möchten Sie i.d.R. eine Schrift, die "monospace" ist und Sie möchten, dass Ihre Einrückungen erhalten bleiben, die ja normalerweise ignoriert werden.

Das erreichen Sie mit dem Element pre (steht für preformatted text).

Zum Beispiel:

<pre>
  if (x > 5) {
    println("success");
  }
</pre>

Erzeugt:

if (x > 5) {
  println("success");
}

Es gibt noch das Element code, das Codeteile innerhalb der Zeile darstellt/hervorhebt.

Zum Beispiel:

Mit <code>println()</code> geben Sie Text aus.

erzeugt: Mit println() geben Sie Text aus.

2.4 HTML validieren

Wie Sie im Kapitel über XML schon gelernt haben, besteht ein großer Vorteil der XML-Sprachen darin, dass man automatisch die syntaktische Korrektheit überprüfen kann. Bei HTML müssen Sie zwischen den verschiedenen Versionen unterscheiden:

HTML 5 ist die aktuelle Version, aber viele Webseiten im Internet beruhen noch auf HTML 4.01. Bei den älteren Versionen gibt es noch Zusätze wie "strict" oder "transitional". Das braucht uns aber nicht zu interessieren, wir möchten immer auf HTML 5 testen. Das wird mit der folgenden Angabe auf der ersten Zeile unseres Dokuments sichergestellt:

<!DOCTYPE html>

Wenn Sie kleinere Fehler in Ihre Dateien einbauen (z.B. ein Element nicht schließen), werden Sie feststellen, dass das Ihren Browser nicht besonders stört. Das liegt daran, dass Browser - um konkurrenzfähig zu sein - möglichst jede noch so fehlerbehaftete Webseite einigermaßen gut darstellen möchte. Wer möchte schon Fehlermeldungen beim Browsen sehen? Kurz gesagt: Browser sind sehr fehlertolerant.

Für Sie als Entwickler ist das aber durchaus problematisch. Sie sollten darauf aus sein, möglichst "korrekte" (d.h. standardkonforme) Seiten zu erstellen. Warum?

  1. Standardkonformes HTML sieht auf allen Browsern gleich aus - Fehler werden evtl. unterschiedlich behandelt

  2. Mit einiger Wahrscheinlichkeit läuft standardkonformer Code auch in Zukunft noch - Fehlermechanismen werden evtl. irgendwann eingestellt

Wie stelle ich fest, ob mein Code korrekt ist? Ganz einfach: Sie verwenden einen der vielen Validatoren, die online arbeiten. Zum Beispiel den ganz offiziellen W3C Markup Validation Service.

Hier können Sie den Reiter "Validate by direct Input" wählen.

Validation Service

Und dann einfach Ihren HTML-Code hinein-pasten. Anschließend müssen Sie auf "Check" drücken:

By direct input

...und Sie bekommen einen ausführlichen Bericht:

Validierungsbericht

Probieren Sie es einfach mal aus und wenn Sie dann größere Projekte entwickeln, machen Sie ab und zu einen Check.