Beruflich Dokumente
Kultur Dokumente
1. Programmierung:
- Formulierung und Analyse des Problems, Erstellung eines Computerprogramms fürs Problem
Coding: Automatisierung von Aufgaben, Codes von einer Sprache in eine andere
Programmierer vs Codierer
Codierer übersetzt Logik in eine Sprachmaschine ( Sprachorientiert). Programmierer beschäftigt sich mit allem, mit
dem Gesamtbild
Software Entwicklungsprozess:
Analyse: Analyse von Geschäftsprozessen; Erarbeitung von funktionale und nicht-funktionale Anforderungen,
Erstellung von Szenarien; Gruppierung und Strukturierung der Anforderungen
-> Output: Lastenheft, Pflichtenheft, Glossar,…
Entwurf: Systemdesign( Datenmodell, Datenstruktur, Schnittstellen), Performance Abschätzung, Planung des Tests
Implementation: Ausführung
Testing: technische (unit, performance, security) und inhaltliche Tests (Können alle Szenarien abgedeckt werden?)
Software Bugs: Mariner I Crash durch fehlenden Bindestrich, Y2K Problem, Northeast Blackout durch Race Condition,
Divide by Zero Bug
Web-Umfeld:
Chrome, Windows 10, Fritz! OS, HP ProVision, Cisco IOS, FreeBSD, Apache httpd (Webserver)
Fehlende Software:
- Hypervisor, USV, Klima, Zugangskontrolle, Content Erstellung, Analyse, SEO,…
Syntax: Was wird genau gemacht? A,b, c schreiben -> Sagt noch nichts aus, zb 046586781? Kann telefonnummer sein
aber auch Kontonummer
WWW: globales, verteiltes Informationssystem, das hypermediale Daten mit Hilfe des http-Protokolls auf Grundlage
Internet Technologie zur Verfügung stellt
Hypertext System: Dokumente enthalten Verweise (Hyperlinks)
Plattformunabhängig
Urprüngliches Ziel:
Erleichterung der Publikation von Forschungsergebnissen und hypermedialer Zugriff auf Datenbanken
Design Prinzipien:
Einfach, Plattformunabhängig, Zugriff auf mehrere Protokolle, Client-Server Architektur (Request Response
Paradigma), erste Implementierung im CERN durch Browser Mosaic
Grundbegriffe:
Document: Baumförmige Datenstruktur aus HTML Elementen und Text, nach dem Parsen durch Browser wird
daraus DOM
Parsen: Inhalt einer Datei wird auf Begriffe überprüft, die durch einen anderen Begriff ersetzt werden können
DOM: Document Object Model, Programmierschnittstelle, welche HTML Dokumente als Baumstruktur
darstellt, in der jeder Knoten ein Objekt ist, welches einen Teil des Dokuments repräsentiert (z.B. Absatz,
Überschrift). Plattformunabhängig und erlaubt, Struktur und Layout eines Dokumentes zu verändern. Wichtig
für dynamische Webseiten.
Browsing Context: Browserfenster, jeder Context hat eigene Historie, nur ein aktives Document pro Context
Processing Model: Spezifikation der Schritte, die Browser ausführt, wenn er Ressource aus Web lädt
Content Model: elementbezogen, gibt an, welchen Inhalt ein spezifisches Element haben kann, Inhalt wird als
Kindelement im DOM eingefügt
Dokumentkopf (Begrenzung durch <head>, beinhaltet Informationen: Titel, Stickpunkte für Suchmaschine,
Beschreibung des Inhalts)
Dokumentkörper (Begrenzung durch <body>, eigentlicher Inhalt: Text, Verweise, Listen Hyperlinks)
HTML dient der Strukturierung und Formatierung von Web-Inhalten (Texte, Bilder,etc.)
HTML Sections:
Strukturieren mit Sitemap und Mockup Phase, = vereinfachtes Modell der Website
HTML Elemente:
Links (absolut, relative, root-relative, Web 03 Folie 8, Attribute: href,id,.., <a bedeutet anker)
o Absoluter Link: von außen
o Relativer Link: zeigt nach innen, ausgehend von aktuellem Ort
o Root-relative link: zeigt nach innen, ausgehend vom obersten erreichbaren Ort
Tables
Zeichenformatierung: physikalisch (fett <b>, kursiv <i>, hochgestellt <sup>) und semantisch (<cite>, <code>)
Textfelder, Radio Buttons, Checkboxes, Listen, Submit Button, Reset Button,… dienen der Eingabe von Informationen
durch den Benutzer, zb Umfrage, Suchmaschine -> <form ….. </form>
Flow Elemente: fast alle Elemente, die im Body vorkommen, werden als
Flow kategorisiert
Paragraphs: Absätze sind ein Grundbestandteil und werden als Folge von Elementen aus dem Phrasing
definiert (section)
Eventhandler Attribute: Funktionen, die vom User Agent aufgerufen werden (onclick)
Box Model:
Relative Maßangaben:
em: Vielfaches der aktuellen Schriftgröße des Elements (Angabe als Ganzzahl Faktor)
HTML Flow:
- Zentrale Komponente des Webseiten Renderings: Document Flow
- Ergibt sich aus der Anordnung der Elemente im Quelltext und aus dem Typ
Rendering:
- Grafische Ausgabe im Browserfenster
- Quellcode, Stylesheets, JavaScript Dateien werden im Browser zusammengefügt
- Ergebnis: DOM Baum
CSS Cascading
Mehrere Quellen von Style Informationen, die sich nach einer festen Reihenfolge überlagern
1. Default Style des Browsers
2. Styles, die der User definiert
3. Style Informationen des Website Autors (Größte Priorität)
Aufbau: Ein Style Sheet ist eine Sammlung von Regeln, die auf ein Dokument angewendet werden
- Selector: spezifiziert, welches Element betroffen ist
- Declaration: legt Stil fest, besteht aus 2 Teilen: Property (Eigenschaft) und Value (Wert)
Style Sheets in externer Datei: HTML Element link referenziert die Datei
Beispiel außerhalb:
<html>
<head>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
<html>
<head>
</head>
<body>
<h1 style="color: green">Hello World</h1>
</body>
</html>
Diese CSS-Angabe gilt nur für dieses H1-Tag
Medientypen:
Angabe Zielmedium: @import url („Beispiel.css“) Medientyp;
@media print { /* Stylesheet für den Druck */}
Angabe Zielmedium innerhalb Dokumentensprache:
<LINK rel="stylesheet" type="text/css"
media="print, handheld" href="foo.css">
CSS- Medientyp gibt eine Menge von Eigenschaften an, z.B.: für print, projection, tv,…
CSS Selektoren:
Element: Selektiert alle Elemente des angegebenen Elementtyps
<span>Hallo</span> span {…} h1 {…}
Class: Selektiert alle Elemente, die die angegebene CSS Klasse haben
<span class="redText">Hallo</span> .redText {…}
Attibute: Selektiert alle Elemente, bei denen das Attribut den entsprechenden Wert aufweist
Presence: [data-fhws]
Substring: Sucht nach Wert, selektiert alle die dieses Wort enthalten haben, [data -fhws*=“Inhalt“]
Prefix: Selektiert alle, die mit dem Wert anfangen, zb [data-fhws^=“begrüßung“]
Pseudo Klassen: Selektiert alle Elemente des entsprechenden Typs, aber nur wenn sie zusätzlich eine der in HTML fest
vorgegebenen Pseudo Klassen besitzen
Hover: Wenn man drüber geht, dann selektiert es; a:hover { … }, z.B.: h2:hover{}
Nth-of-type: selektiert das nth von type, man kann auch jedes wählen, z.B.: li:nth-of-type(2n) {}, li:nth-of-type(2n+1)
{}, li:nth-of-type(3) {}
Pseudo Elemente
A::after/before= fügt oder bearbeitet etwas hinter/vor dem A an, zb li::after {content:“XXX“}
Kontext: Selektiert alle <li>, die innerhalb eines Containers mit der id „nav“ stehen
#nav li { … }
Child: Selektiert nur die direkten Nachfolger (Kinder) eines Elternteils, im DOM also eine Ebene unter dem Element der
Regel stehen, A > B
#nav > li { … }
Adjacent Sibling: Geschwister, bleiben auf der gleichen Ebene, der angrenzende, muss direkter Nahbar sein, zb div + p
General Sibling: Geschwister, alle werden auf der gleichen Ebene selektiert, div ~ p (~ muss unten stehen)
Wie vorher, nur wird nur das <li> selektiert, das direkt an das linke Element (#nav) der Regel anschließt und sich auf
gleicher Ebene befindet, A + B
#nav + li { … }
General Sibling: Hier müssen beide Selektoren das gleiche Eltern Element besitzen und das rechte (<li>) muss auf das
linke (#nav) Element der Regel folgen, A_B
#nav + li { … }
Hintergrund
Property:
o { background-color: #ffffff; }
o { background-image: url(pfadZumBild.jpg) }
o { background-position: <horizontale Position< <vertikale Position> }
Horizontal: center, left, right
Vertikal: center, top, bottom
Können zu einem formatiert werden
o {background: url(pfadZumBild.jpg) no-repeat 0 50% }
Zeichenformatierung
Property:
o {color: <Farbe> }
Angabe mit Schlüsselwörter (Yellow, balck), RGB Werten (10, 10, 10),
o {font-family: <Schriftart>}
{ font-family: arial, helvetica, sans-serif }
Priorität von links nach rechts kleienr
o {font-size}
{font-size: 12px}, {font-size: 2em}
o {font-style} -> für kursiven Text
{font-style: italics}
o • {font-weight} -> Schriftstärke
{font-weight: bold}
o {text-transform} -> Schreibweise
uppercase, lowercase,
Typographie
Richtige Verwendung von Schriftarten und Schriften, da man viele Möglichkeiten hat
http://www.webtypography.net/
Web Font
CSS Spezifität:
Mechanismen: Style Definition mit größerer Spezifität gewinnt, bei gleicher Spezifität gewinnt letzte Definition
Layouts:
Positionierung: top, bottom, left, right
- static: dort, wo es im flow erscheint
- absolute: über Attribute (top, bottom, left, right ) platziert, ist danach kein Block Element mehr, wenn man Website
kleiner macht, sieht man es nicht mehr, geht raus aus Flow, Ausrichtung vom Beginn des Dokuments
- fixed: Ausrichtung am sichtbaren Bildschirmbereich
-relative: bleibt im Flow, verschiebt vpm ursprungsplatz und Platz im FLow bleibt erhalten
-position: static/absolute/fixed/relative;
Top: 150px:
Left: 150px;
Display Property
Box Model:
margin, padding, border lassen sich beliebig anpassen: Properties: margin-top / bottom / left…
Shorthand: #element {margin 10px 20px}
Floats:
- Text und Elemente fließen lassen
- Property kann Werte annehmen: none, left, right, inline-start
- Wenn Property gesetzt ist, ordnen sich block Elemente so lange vertikal an bis für das nächste kein Platz mehr ist
-Praxis:
platzieren sich hintereinandere horizontal, verhält sich wie ein Span, verbraucht nur so viel Platz, wie Sie
brauchen
fängt keine neue Zeile mehr an, äußer wenn nötig
-> kann sein das es in der Luft hängt, Lösung: clear:
both;
left: wird von links gefüllt( wie gewohnt
right: wird von recht gefüllt
Flexbox:
- Container und Inhalte
- Container definiert Bereich, in dem Inhalte platziert werden können
- Kriterien: Größe, Verteilung, Ausrichtung, Sortierung
- Ausrichtung entlang Hauptachse wird durch justify-content Parameter gesteuert
- Entlang der Cross-Achse heißt der Parameter align-items
Column-reverse; Gegenteil, gut weil manche von rechts nach links lesen
Formatierungen:
Properties:
{color: <Farbe>} Schlüsselwörter oder RGB Werte
{font-size} Größe der Zeichen
HTTP-Protokoll:
Webclient und Server tauschen Nachrichten aus
Twitter Bootstrap
Mobile First Ansatz
o Statt von der vollen Ausprägung der Website auszugehen und für mobile Geräte Inhalt wegzulassen
geht dieser Ansatz den umgekehrten Weg
o Die Site wird für mobile Geräte entwickelt und enthält auf größeren Geräten mehr Inhalt und anderes
Layout
Grundlage ist immer ein Container
o <div class= „container“>.. </div>
Container mit einem festen Rahmen, hat noch einen weißen Rand links und rechts (margin),
Container springt immer von einem zum anderen Device, zb ab 1200Px Xl, ab 991PX md usw,
o <div class=“container-fluid“>… </div>
Container mit voller Breite, hat keine Spalten links und rechts
In Container werden Zeilen und Spalten (Rows und Columns) platziert
o <div class=,,row“></div>, (am wichtigsten)
<div class=,,col-X-N“></div>
Aufbau der Columns
o .col-X-N
X gibt an, für welche Devices diese Klasse gilt
N gibt an, wie viel Spalten (von den 12) diese Klasse abdeckt
Beispiel
o <div class=“col-12 col-md-4 col-xl-2“>
Je nach Größe des Devices, springt es von einem zum anderen
Handy= col-12, Tablet=col-md-4, PC= col-xl-2
CSS Grid
Setzt auf gitterförmige Einteilung des zur Verfügung stehenden Platzes mit folgenden Eigenschaften: Feste
(z.B.: Pixel) und flexible( z.B.: Fractions)
Grid container
o Grundlage von CSS Grid ist immer ein Grid Container, der mittels der CSS Property display: grid oder
display: inline-grid erstellt wird
o Alle Kinder eines Containers sind dann sogenannte „grid-items“
Grid Tracks
o Die eigentliche Einteilung des Grid erfolgt in sogenannte Grid Tracks
o Grid Tracks sind definiert als der Platz zwiscehn zwei der gedachten Gitterlinien, (Vgl. Zellen in Excel)
o Die CSS Properties grid-template-columns und grid-template-rows definieren das Grid in absoluten
Werten (explizites Grid)
Wenn die definierte Zeilen und Spalten nicht ausreichen, wird das Grid automatisch erweitert
(implizites Grid)
Mittels grid-auto-rows und grid-auto-columns kann der
Aufbau des impliziten Grids gesteuert werden
Grid Einheiten
o Alle bisher behandelten Einheiten (absolute und relative)
können zur Definition von Grid Tracks verwendet werden
display: grid;
grid-template-columns: 33vw 20vw 10vw;
grid-template-rows: 2em 3rem;
o Zusätzlich kann die neue Einheit "fr" für Fraction, also Bruchteil, verwendet werden
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: 2fr 2fr;
o Mittels der repeat() Syntax kann man mehrere identische Tracks erzeugen
grid-template-columns: 1fr repeat(5, 3fr) 1fr;
grid-template-rows: repeat(4, 2fr)
o grid-template-areas: „first title c“ “first d f“ “first e g“;
#div2 { grid-area: first; }
Grid Positionierung
Aufbau:
JS Standardisierung
ECMAScript war ein eher kleiner Stgandard mit folgenden Themen enthalten
Textmanipulation, Datumsfunktionen, Reguläre Ausddrücke
Wird immer größer
Alles andere vor allem Input und Output wird von der sogenannten Host Umgebung gestellt
• Ausgehend vom DOM Baum passiert das eigentliche Rendering der Website • èGrafische Ausgabe im Browserfenster
Einbinden von JS in HTML Code
JS im Browser
Formulare:
Get Daten werden in URL übertragen
Post Daten werden im http Request Body übertragen
<?php
foreach ($_GET as $key => $val) {
echo „$key => $val <br>”;
}
?>
MySQL:
Schnittstellen zu Datenbanken: mysqli und PDO
Bestandteile Programmiersprachen:
echo $summe.“<br>“;
echo substr ($summe, 0, 1). “<br>”; Zuweisung: by Reference
echo strlen ($zahl).”<br>“; $a = 3;
$b = &$a;
$b = 5;
echo “$a $b”
Variable Variablen:
$hello = “world”; echo $hello; world
$$hello = “universe”; echo $$hello; universe echo $world; universe
Scope – Gültigkeitsbereich:
for ($i = 0; $i <10; $i++) {
$a = $a + $i;
2. Operatoren:
Increment Operator oder Vergleichsoperator
Arithmetische Operatoren:
+$a Identity Konversion des Inhalts zu integer oder float
$a % $b Module Rest der Division
$a ** $b Exponentiation „hoch“
Bitweise Operatoren: Vergleichsoperatoren:
I Or == gleich
^ Xor != nicht gleich
~ Not === identisch
<< Left shift !== nicht identisch
Verschiedene Operatoren:
@ Error Control Fehler werden nicht angezeigt
3. Ausdrücke:
$a =5;
können gleichzeitig Anweisungen sein
4. Anweisungen:
kleinste ausführbare Einheit einer Programmiersprache
Zuweisungen (a=5)
Blöcke ({…})
Kontrollstrukturen (if…then…)
Funktionsaufrufe (read())
5. Kontrollfuß:
Schleifen: wiederholte Abarbeiten von Befehlen (abweisende (kopfgesteuert) und annehmende (fußgesteuert)
Schleifen
For-Schleifen:
for ($i = 0; $i < 5; $i++) {
echo $i;
}
Foreach-Schleifen:
$a = array (1,2,3,4);
foreach ($a as $val) {echo $val;}
While-Schleifen:
§i = 0;
while ($i <5) { echo $i++; }
Do-While-Schleifen:
$i = 0;
do { echo $i++ }
while ($i < 5);
1. break: bricht Durchlauf ab und fährt mit Code, der auf die Schleife folgt, fort
2. break <N>: z.B. break <2> verlässt aktuelle Schleife und die erste äußere Schleife
3. continue: springt ans Ende des Durchlaufes. Erst Bedingung evaluieren und Durchlauf neu starten, oder
Durchlauf direkt neu starten
Bsp.:
function funktion () {
echo „Hallo Welt“;
}
funktion ();
7. Typsystem:
printf() ist eine Funktion zur formatierten Ausgabe von Datentypen
- Generelle Syntax:
printf(„<Formatstring>“, Argument1, Argument2,…);
printf(„Hallo %s!<br>“, $name);
9 verschiedene Datentypen:
Scalar: Boolean: Wertebereiche TRUE oder FALSE
Integer: Ganzzahlen, zu groß für Wertebereich des Datentyps, wird er float
Float: Gleitkommazahlen, Vergleich kann falsch sein
String: Sequenz von Zeichen, nur ein Byte groß
- Single Quote:
• $s1 = ‚Hallo Welt‘;
• echo $s1;
Hallo Welt
• $s2 = ‚Hallo Welt\n Guten Morgen‘;
• echo $s2;
Hallo Welt\n Guten Morgen
• $name = ‚Rolf‘;
• $s3 = ‚Guten Morgen $name‘;
• echo $s3;
Guten Morgen $name
- Double Quote
• $s1 = „Hallo Welt“;
• echo $s1;
Hallo Welt
• $s2 = ‚Hallo Welt\n Guten Morgen‘;
• echo $s2;
Hallo Welt Guten Morgen
• $name = ‚Rolf‘;
• $s3 = ‚Guten Morgen $name‘;
• echo $s3;
Guten Morgen Rolf
- Here Quote
• $name = ‚Rolf‘;
$s1 = <<<EOF
Hallo $name<br>
Wie geht´s?
EOF
echo $1;
- Now Doc
Zugriff ist auch auf einzelne Zeichen innerhalb des Strings möglich
• $str = „123456789ABCDEFG“; echo $str[3]; echo $str[11];
String Konkatenierung:
• $a = „Hallo“; $b = „Welt“; echo $a.$b;
String Länge:
• $a = „Hallo Welt“; echo strlen($a);
6. Special resource
NULL
CSS – Selektoren