it-zertifikat der phil.fak kurs 2: allgemeine technologien ii patrick sahle xml-basicsws 08/09
TRANSCRIPT
IT-Zertifikat der Phil.Fak
Kurs 2: Allgemeine Technologien II
Patrick Sahle XML-Basics WS 08/09
Organisatorisches
• Zeiten und Pausen
• IT-Zertifikat
• Teilnehmer
• WLan läuft? XAMPP läuft?
• Literatur?
• Kursprojekt, Kursziel
• Didaktische Mantras• Skills not Knowledge
• Konzepte, nicht Syntax
• Hilfe zur Selbsthilfe (Finden Sie die Lösungen selbst!)
• CPs und Arbeitsaufwand; Noten
• "Klappe zu" heißt Klappe zu!
• Fragen?
Kursinhalte
• Netzwerke• Internet-Grundtechnologien• ein Schritt zurück: HTML/CSS
• Programmieren am Beispiel: PHP• Online-Datenbanken: MySQL
Beispielprojekt• "Pimp my Book"
• http://www.injoest.ac.at/projekte/laufend/mittelalterliche_judenurkunden/• http://www.injoest.ac.at/upload/Regesten_Text(1).pdf• http://www.injoest.ac.at/upload/Regesten_Anhang(1).pdf• Worum geht es hier? Was ist das? Wie funktioniert das?
• Zielstellungen• Verwandeln Sie ein digitalisiertes Buch in eine interaktive Online-
Anwendung auf der Basis von PHP und MySQL
• Lösungsbeispiele mit anderen Technologien (X)• http://itzert.phil-fak.uni-koeln.de/Kurs4/Coutura/regesten.html• http://itzert.phil-fak.uni-koeln.de/Kurs4/Sahle/• http://itzert.phil-fak.uni-koeln.de/Kurs4/Quiring/regesten.html
• Lösungsbeispiele mit PHP(MySQL• http://localhost/Boettger/HaBoettgerSQL.php
• Im Hinterkopf: Vergleich X-Technologien vs. PHP/MySQL (Vorteile, Nachteile, Zusammenspiel)
Netzwerke
• Referate:• Eike Steinhoff - entfällt• Kerstin Kropmanns
Netzwerke
• Ein Computernetz ist ein verteiltes System von autonomen und räumlich getrennten Computern, die durch Datenübertragungs- und Vermittlungseinrichtungen sowie Vermittlungseinrichtungen sowie Übertragungsmedien miteinander verbunden sind.
• Funktion: verteilte Informationsspeicherung, Informationsübermittlung, Informationsverarbeitung
• Kommunikation über eine Hierarchie von Protokollen• Protokoll = Menge von Regeln, die das Verhalten von Instanzen
oder Prozessen bei der Kommunikation festlegt• Verbindungs-Auf und -Abbau, Formate, Codierungen,
Fehlererkennung
Netzwerke
• Netzwerktypen:• Terminal-Netz, Peer-to-Peer-Netz, Client-Server-Netz
• Klassifikation von Netzen durch Übertragungskapa-zität und räumliche Aus-dehnung
• PAN (Personal Area Network)• LAN (Local Area Network)• SAN (Storage Area Network)• MAN (Metroplitan Area Network)• WAN (Wide Area Network)• GAN (Global Area Network)
Netzwerke
• OSI-Referenzmodell• Open Systems Interconnection Reference Model• … "geschichtete Kommunikationsarchitektur" …
Netzwerke
• DoD-Schichtenmodell• Department of Defense - Schichtenmodell
Netzwerke
• OSI-Schichten und DoD-Schichten
Netzwerke
• Lokale Netzwerke• HUB, Router, Switch• Server, Firewall• Zentrale Dienste, Speicherverwaltung, Nutzer-
und Rechteverwaltung, Druckerverwaltung etc.• Software: Netware (z.B. Novell Netware), Groupware
Internet-Grundtechnologien
• Referate: • Tibor Toth:
• Client-Server-Architektur• Alexander Recht:
• Mailprotokolle• Fabian Heerbaart:
• DNS• HTTP
Internet-Grundtechnologien
• DNS• Domain Name System• Auflösung eines Hostnamen zu einer IP-Adresse• Verteilter Verzeichnisdienst zur Verwaltung des Namensraums des
Internets• Hierarchische Struktur des Namensraums (Baum)
• TLD = Top Level Domain• Hierarchie der Nameserver (Software / Hardware)• Domains: Registrierungsorganisationen; IP-Adressen: Provider
• Konsole: nslookup; Browser: www.whois.net, www.denic.de• Beispiel: www.i-d-e.de (whois.net - dig) ide.uni-koeln.de
Internet-Grundtechnologien
• http• Hypertext Transfer Protocol• OSI-Modell: Anwendungsschicht, setzt auf Transportschicht
(TCP) bzw. Vermitlungsschicht (IP) auf • HTTP-Request und HTTP-Response• Request:
• Host + Anfrage• GET, POST plus weitere Request-Methoden
• Response:• Statuscodes• HTTP-Header und HTTP-Body
• https – sichere Kommunikation zwischen Client und Server durch zusätzliches Verschlüsselungsprotokoll zwischen den Protokollschichten http und TCP.
• Beispiel: www.ide.uni-koeln.de – Firefox Live Headers
Internet-Grundtechnologien
• GET und POST• Übertragung zusätzlicher Informationen bei einem http-Request• GET
• Informationen als Teil der URL• http://www.regesten.org/rgjoem/regesten.php?nummer=123• Übergabe von Paaren aus Argument und Wert
• POST• Informationen im Body-Teil des HTTP-Requests• Übergabe von Paaren aus Argument und Wert
• Beispiel: Live Header zu localhost/Kurs/For-Schleife-1.php
Ein Schritt zurück: HTML, CSS, Javascript
• Referat:• Philipp Wolfram
Ein Schritt zurück: HTML, CSS, Javascript
• Wissensstand?• Ggf. Schnellkurs
• Grundkonzepte• Aufbau einer HTML-Datei• Struktur eines HTML-Body• Wichtige Elemente• CSS-Konzepte• Javascript, DOM
• Alles, was Sie brauchen finden Sie hier:• http://de.selfhtml.org/html/index.htm• http://de.selfhtml.org/css/index.htm
Nützlich: Firebug-Plugin für Firefox
Übungen: HTML und CSS
• Erstellen Sie aus einem Regest eine HTML-Seite (mit assoziierter CSS-Datei)
• Erstellen Sie eine Projekt-Startseite (mit Auswahlmenüs und ggf. Eingabefeldern)
• Besprechung der Entwürfe
Einstieg in PHP
• Referat: • Faatin Hegazi
Einstieg in PHP
• Rekursives Akronym: PHP Hypertext Preprocessor• PHP als Programmiersprache für dynamische Webseiten
• Stärken: Einfachheit, Serverintegration, Datenbankanbindung• Interpretierte Sprache (PHP-Interpreter auf dem Server)• Schwache und dynamische Typisierung• Mögliche Einbindung in HTML-Code
• HTML wird serverseitig vorverarbeitet (PHP-Teile werden ausgeführt und dabei ersetzt)
• Vergleich zu Javascript und Perl• Aktuelle Version: 5.2.8
PHP schreiben: Editoren
• Grundsätzlich: PHP-Code ist Text und kann mit einem beliebigen Editor geschrieben werden
• Allgemeine Editoren• vi, emacs
• Editoren für andere Zwecke• Dreamweaver, oXygen
• Spezielle PHP-Editoren (IDEs) • Maguma Open Studio, ZEND Studio, PHPEclipse,
KDevelop, PHPEdit, NuSphere PhpED etc.
Grundlegendes in PHP
• Referat: • Johannes Lenz
Grundlegendes in PHP
• Befehle mit ; abschließen !!!• Kommentare
• // einzeilige Kommentare (auch: #)• /* … */ mehrzeilige Kommentare
• Strings in doppelten Anführungszeichen ("… hier werden Anweisungen noch ausgewertet …")
und einfachen Anführungszeichen ('… hier wird wirklich alles als String behandelt …')
• Schachtelung von Anführungszeichen
Grundlegendes in PHP
• Konstanten und Variablen• Datentypen (Zahlen, Strings, Booleans, Objekte)• Keine strenge Typisierung
• Variablen können typisiert werden, Typen können umgewandelt werden, PHP versucht Funktionen anzuwenden
• $variable = wert• Namenskonventionen: Keine Leerzeichen; nur Buchstaben, Zahlen
und Unterstrich; reservierte Wörter! • Gültigkeitsbereich von Variablen
• lokal (in Funktionen), global, superglobal (Systemvariablen, z.B. $_GET)
• Arrays• numerisch indizierte Arrays
• $var = array("1","2","3") auch: $array[n] = "wert"• assoziative Arrays
• $var = array("nr"=>001, "datum"=>"1323")• ein- und mehrdimensionale Arrays
Grundlegendes in PHP
• Operatoren• arithmetisch (+ - * / )• Inkremente/Dekremente (++ --)• logisch (AND, OR, !)• Vergleiche (>, <, <=, ==, !=)• Zuweisungen (=, viele andere)• Verkettung ( . ) ("Konkatenation")• … viele weitere
Grundlegendes in PHP
• Kontrollstrukturen und Schleifen• if if ( Bedingung ) { Anweisungsblock }• if-else if ( Bedingung ) { Anweisungsblock TRUE}
else { Anweisungsblock FALSE}• if-elseif-else• switch switch ( Ausdruck ) {
case Wert1: Anweisungsblock … break; case Wert2: Anweisungsblock … break; … default: Anweisungsblock … break; }
• for for (Initialisierung; Bedingung; Änderung) { Anweisungsblock } Bsp: for ($i=1; $i<10; $i++) {echo "$i";}
• while while ( Bedingung ) { Anweisungsblock } • foreach foreach (array as $wert) { Anweisungsblock }
PHP in HTML
• Referate:• Anna Job• Angela Brinck
PHP in HTML
• PHP-Code kann beliebig in einer HTML-Datei "eingestreut" werden
• PHP-Code wird bei der Ausführung durch das Ergebnis des Codes ersetzt
• PHP-Code kann durch HTML unterbrochen werden
PHP Code-Konventionen
• Keine Vorschriften, nur Empfehlungen!• Benutzen Sie sprechende Bezeichner• Trennen Sie Teil-Namen durch Unterstrich
oder großen Anfangsbuchstaben• Rücken Sie hierarchisch ein (Tabs benutzen)• Kommentieren Sie!
PHP Poor Man's Debugging
• Immer ein Semikolon am Ende?• Alle Klammern geschlossen?• Anführungszeichen geschlossen?
• … und korrekt geschachtelt?• Alle Variablen direkt anzeigen lassen
• echo "Wert: $var";• print_r($array);
PHP-Übungen
• Hallo Welt (HelloWorld.php)
• Ein Auswahlmenü• Ohne Funktionalität (For-Schleife.php)
• live-Header?!
• Mit Rückmeldung (For-Schleife-1.php)
• Mit Beibehaltung des ausgewählten Wertes (For-Schleife-2.php)
• GET statt POST (For-Schleife-3.php)
• Den submit-Button loswerden (Javascript) (For-Schleife-4.php)
• Ein Suchfeld (Suchfeld.php)
• Leeres Submit abfangen (todo)
• Ein Array benutzen• Datum der ersten zehn Regesten; Gib zu einem angefragten
Regest das Jahr zurück (todo)
Funktionen in PHP
• Referat: • Arne Schunack (entfällt)
Funktionen in PHP
• Funktionen werden aufgerufen, es wird ihnen etwas übergeben und sie liefern etwas zurück
• $variable = funktion (wert1, wert2, …)• Es gibt viele vorgefertigte Funktionen• Funktionsreferenz: http://de3.php.net/manual/de/funcref.php
• Z.B. Dateisystem (fopen, fgets)
• Z.B. Textverarbeitung, Zeichenketten (substr)
• Z.B. Variablen, Arrays (shuffle)
• Funktionen können selbst definiert werden• function meineNeueFunktion (Parameter1, Parameter2, …) {
Anweisungen;return $rückgabe
}• Einbindung externer Funktionsbibliotheken mit include
PHP-Übungen
• phpinfo ()• Datei auslesen
• Drop-Down Jahrzehnte (mit Jahrzehnte.txt; Datei_auslesen.php)• Drop-Down Jahrzehnte (mit JahreNummern.txt; Datei_auslesen-1.php)• Vollständiges Regest in Array umwandeln
• Mit explode (Explode.php, baut auf For-Schleife-4.php auf und nutzt regest1.txt)
• Mit while ein assoziatives array aufbauen (ArrayAusDatei.php)• Ausgabe verschönern; Weitere Auswertungen; Kommentare an Datei anhängen lassen
• Eine eigene Funktion schreiben• Schreiben Sie eine Funktion, die regest1.txt öffnet und den Inhalt als
assoziatives Array zurückgibt
MySQL – Einstieg, Allgemeines, Konzepte
• Referat: • Timo Coutura
MySQL – Einstieg, Allgemeines, Konzepte
• Zusammenfassung
MySQL – Einstieg, Allgemeines, Konzepte
• Tabellentypen• http://dev.mysql.com/doc/refman/5.1/de/storage-engines.html
• Datentypen für Attribute / Eigenschaften / Spalten• http://dev.mysql.com/doc/refman/5.1/de/data-types.html• http://www.schmager.de/mysql.php• http://www.grammiweb.de/uebersichten/mysql-datentypen.shtml
• Optionen für Spalten• NULL / NOT NULL• DEFAULT• PRIMARY KEY• AUTO_INCREMENT
MySQL – Einstieg, Allgemeines, Konzepte
• Beziehungen zwischen Tabellen• Konzept der Fremdschlüssel• Foreign-Key-Regeln
• Sichert die "Referenzielle Integrität" einer Datenbank• FOREIGN KEY (Fremdschlüsselspalte) REFERENCES Tabelle (Spalte)
PHPMyAdmin – Erstes Arbeiten mit SQL
• Referat: Bethzy Karla Gianella Chiang - entfällt
PHPMyAdmin – Erstes Arbeiten mit SQL
• Zusammenfassung wichtiger Aspekte
PHPMyAdmin – Erstes Arbeiten mit SQL
• Übung: Wir erstellen eine erste Regestendatenbank
SQL als Abfragesprache
• Referate • Roman Quiring• Pierre Dedy
SQL als Abfragesprache
• Datenbank und Tabellen anlegen
• CREATE DATABASE [IF NOT EXISTS] Datenbank;• CREATE TABLE [IF NOT EXISTS] Tabelle (
(Spaltendefinitionen, …) [Tabellenoptionen])
• Spaltenname [verschiedene optionale Flags]• AUTO_INCREMENT, CHARACTER SET Zeichensatz, DEFAULT
Wert, NULL | NOT NULL, [PRIMARY] KEY, UNIQUE [KEY], etc. etc.• ALTER TABLE Tabelle Aktionsliste
• Verschiedene mögliche Aktionen, z.B.• ADD COLUMN (Spaltendefinitionen, …)• DROP COLUMN Spaltenname• RENAME TO Neuer_Tabellenname• … etliche weitere
SQL als Abfragesprache
• Daten einfüllen, löschen, ändern …
• INSERT Tabelle [(Spalte, …] VALUES ({Wert, …})• (Es müssen soviele Values wie Spalten übergeben werden!)
• INSERT Tabelle SET Spalte={Wert}, …• DELETE FROM Tabelle WHERE Spalte=Wert
• (Löscht Zeilen)• UPDATE Tabelle SET Spalte=Wert WHERE Spalte=Wert
• (Ersetzt Werte)
SQL als Abfragesprache• Daten abfragen
• Einfache Beispiele für SELECT• SELECT * FROM Tabelle
• (alle Daten der Tabelle anzeigen)• SELECT Spalte FROM Tabelle WHERE Spalte=Wert
• (suche einzelne Feldinhalte)• Auf Teile der Abfrage können Funktionen angewandt werden (z.B. count)• Ergebnisse sortieren
• SELECT Spalte FROM Tabelle ORDER BY Spalte• Daten können aus mehreren Tabellen kommen … ( "joins")
• SELECT * FROM Tabelle, Tabelle• SELECT * FROM Tabelle, Tabelle WHERE
Tabelle.Spalte=Tabelle.Spalte• (Tabellen werden über ein gemeinsames Feld zusammengeführt)
• … verschiedene Formen von "joins"• Selects können verschachtelt werden (Sub-SELECTs)
PHP und MySQL (Anbindung und Kommunikation)
• Referat: • Christoph Stollwerk
PHP und MySQL (Anbindung und Kommunikation)
Eigentlich ganz einfach …
<html><body>
<?php mysql_connect("","root");mysql_select_db("regesten1"); // selbst das kann man sich sparen$res = mysql_query("select * from texte");while ($zeile = mysql_fetch_array($res)) {
echo "$zeile[0] - ";echo "$zeile[Datum]<br/>";
}?>
</body></html>
SQL-Abfrage-minimal.php
PHP und MySQL (Anbindung und Kommunikation)
Im einzelnen …
• Kontakt aufnehmen: mysql_connect($server,$Benutzername,$Benutzerpasswort)
• Verbindung schließen: mysql_close($verbindung)• Permanente Verbindung: mysql_pconnect(…)
PHP und MySQL (Anbindung und Kommunikation)
Im einzelnen …
• Datenbank auswählen: mysql_select_db($datenbankname)
PHP und MySQL (Anbindung und Kommunikation)
Im einzelnen …
• Daten aus der Datenbank holen: mysql_query(" SQL-Anfrage ")
PHP und MySQL
(Anbindung und Kommunikation)
• Übungen• Kontakt aufnehmen• Etwas ausgeben
Datenbank-Design und Normalisierung
• Referat:• Camilla Ottnad
Datenbank-Design und Normalisierung
• Begriffe: Datenbank und Datenbankmanagementsystem• Datenbankentwurf
• Modell eines Teilbereichs der Realität• Vermeidung von Redundanz• Effizienz der Datenverwaltung und Datenverarbeitung
• Das relationale Datenbankmodell• Tabellen und Relationen statt …
• Hierarchien (Hierarchisches Modell)• Netzwerke (Netzwerkmodell)• Objekte (Objektorientiertes Modell)
Datenbank-Design und Normalisierung
• Tabellen• Jeder Zeile ein Datensatz (Entität, Tupel)• Jede Spalte eine Eigenschaft (Attribut)• Jede Zelle ein Wert
• Tabellen sind Relationen• Tabellen modellieren Objekte (Objekttypen)• Mehrere Tabellen können verbunden sein (Beziehungen)
• Primärschlüssel• Fremdschlüssel
• 1:1-Beziehung• 1:n-Beziehung• n:m-Beziehung
Normalisierung
•Problemlage• Redundanz • Gefahr von Anomalien durch Änderung (update-
Anomalien), Einfügen (insert-Anomalien) oder Löschen (delete-Anomalien)
•Lösung• "Normalisierung"• Zerlegung von Relationen• 5 Normalformen• … für die es viele verschiedene Formulierungen gibt
Normalisierung
• Erste Normalform:
Jeder Datensatz hat eine eindeutige Identifizierung (ggf. über mehrere Felder)
Jedes Datenfeld beinhaltet nur einen (atomaren, nicht zusammengesetzten) Wert
Attribute sollen sich in einem Datensatz nicht wiederholen
Normalisierung
• Zweite Normalform:
Wenn sich Inhalte in Spalten wiederholen, dann muss die Tabelle in Teiltabellen zerlegt werden
Die Tabellen müssen durch Fremdschlüssel miteinander verbunden werden
Normalisierung
• Dritte Normalform:
Spalten, die nicht in unmittelbarer Abhängigkeit zum Primärschlüssel einer Tabelle stehen, müssen eliminiert werden (in eine eigene Tabelle ausgelagert werden)
Normalisierung
• Vierte Normalform:
Tabellen sollen nur triviale mehrwertige Abhängigkeiten enthalten
• Fünfte Normalform:
Tabellen sollen aufgespalten werden, wenn sich die ursprünglichen Relationen wieder herstellen lassen (Tabellen sollen so weit wie möglich aufgespalten werden)
Datenmodellierung im ERM
• Entity-Relationship-Modell• Abstraktes Modell• Visualisierung durch ER-Diagramme• Z.B. Chen-Notation …
Entitätstyp Attribut Be-ziehung abgeleitet
• Umsetzung des Modells (vom ERM zum RDM)• Entities werden zu Tabellen• Attribute werden zu Spalten• Beziehungen werden durch Schlüssel abgebildet
Datenbank-Theorie?
• Vor und Nachteile relationaler Datenbanken gegenüber anderen Datenbankmodellen?
• Was sind die zu erwartenden Probleme bei der Umsetzung des Kursmaterials in eine relationale Datenbank?
Kursprojekt Regesten-Datenbank
• Übung: Remodellieren der Regesten-Datenbank• Probleme des ersten Entwurfs beseitigen• Hilfsmittel zur Modellierung (in phpMyAdmin, SQL
Workbench)
Kursprojekt Regesten-Datenbank
• Datenbank mit Inhalt füllen• Automatisationspotentiale?
Kursprojekt Regesten-Datenbank
• Inhalte auslesen und präsentieren• Auswahllisten herstellen• Regestpräsentation herstellen• Register generieren• Weiterführende Links einbauen• Suche über alles / Suche über bestimmte Felder
Das finale Kursprojekt
• Übungen: Realisierung des Kursprojekts• Welche Seiten brauchen wir?
PHP für Fortgeschrittene:Objektorientierte Programmierung und OOP in PHP
• Referate: • Manuel Carlos Lenz• Benjamin Gelhaar
PHP für Fortgeschrittene:Sicherheitsfragen
• Referat: • Bastian Odenthal
PHP für Fortgeschrittene(was wir hier nicht vertieft behandeln)
• Eigene Funktionen definieren• [Objektorientierte Programmierung]• Frameworks• PEAR (PHP Extension and Application Repository)
• XML-Verarbeitung• [Sicherheitsfragen (PHP, MySQL, Server)]