7 - WBT Master
Transcription
7 - WBT Master
Technische Universität Graz Institut für Informationsverarbeitung und Computergestützte neue Medien Skript zur Vorlesung 506.032, 506.432 WS 2002/2003 Multimediale Informationssysteme DI. Christof Dallermassl Univ.Ass.DI.Dr. Denis Helic Version vom 24. November 2004 Inhaltsverzeichnis 1 Inhaltsübersicht 1.1 1.2 11 Organisatorisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1.1 Übungsablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Änderungen im Skript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2 Internet - das Netz der Netze 16 2.1 Geschichtliche Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2 Technische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3 Dienste im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4 Protokolle im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3 Informationssysteme 21 3.1 Historisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.1 Geschichte von Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.2 Einteilung von Suchmaschinen nach Kategorien . . . . . . . . . . . . . . . . . . . . 25 Indexsuchdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Katalogsuchdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Meta Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Recommendation Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.3 Reihung von Suchergebnissen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.4 Suche nach Multimediadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3 Brockhaus Multimedial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.1 Textdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.2 Computergenerierter Kontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.3 Bilddaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.4 Videos und Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.5 Landkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.6 Weblinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.7 Programming Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Gläserner Mensch 1 INHALTSVERZEICHNIS 2 4 Markup Languages 34 4.1 4.2 4.3 4.4 SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1.1 Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1.2 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.3 Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.4 Dokumententypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.5 Probleme von SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2.1 Tags und Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2.2 HTML Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.3 HTML Mindesttags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.4 HTML Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.5 Farben in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.6 Skripte (Client-seitig) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.7 Weiterführende Informationen über HTML . . . . . . . . . . . . . . . . . . . . . . 40 Style Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3.1 Einbinden von Style Sheet Definitionen . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.2 Unterschiedliche Ausgabemedien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.3.3 Format-Definitionen für HTML-Tags . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.3.4 CSS Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 eXtensible Markup Language (XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4.1 Warum XML und nicht HTML? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4.2 Aufbau von XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 XML Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 XML Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Document Type Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Schema Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Processing Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.4.3 Beispiele Vorhandener XML-Definitionen . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.4 Extensible Stylesheet Language (XSL) . . . . . . . . . . . . . . . . . . . . . . . . . 58 Mustervergleich (XPath) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Formatting Objects (FO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 XML/XSL in the real-world . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Weitere Literatur zu XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4.5 5 Digital Audio 66 5.1 Digitale Darstellung von Tönen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.2 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.2.1 69 Wellentheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS 3 5.2.2 MPEG Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.2.3 Akustikmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.2.4 Mehrkanal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.2.5 Weitere Kompressionsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.2.6 MPEG Layer 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.2.7 MPEG Layer 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.2.8 MP3 - MPEG Layer 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.2.9 MPEG2/4 AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.2.10 MP3 Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.2.11 Ogg Vorbis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.2.12 TwinVQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.2.13 ATRAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2.14 Dolby AC-3/QDesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2.15 Wave 75 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.16 MSAudio - WMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2.17 Realaudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.2.18 Literatur zu Digital Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.3 MP3 Hörtest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.4 MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6 Digital Images 6.1 6.2 6.3 6.4 78 Das Auge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.1.1 Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.1.2 Richtlinien für die Verwendung von Farben . . . . . . . . . . . . . . . . . . . . . . 79 Farbmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.2.1 RGB-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.2.2 CMY-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.2.3 YUV-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.2.4 YIQ-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.2.5 HSV-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.2.6 Umrechnung zwischen Farbmodellen . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Rasterbilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.3.1 Farbe in Rasterbildern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Gamma-Korrektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Alpha-Kanal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Datenkompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.4.1 Lauflängenkodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.4.2 LZW-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 6.4.3 Huffman Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.4.4 Verlustfreie JPEG Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.4.5 Verlustbehaftete JPEG Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . 90 INHALTSVERZEICHNIS 4 Progressive Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 JPEG Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 JPEG 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 JPEG2000 Kodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Fraktale Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Bildformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.5.1 BMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.5.2 TIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.5.3 GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.5.4 PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Interlacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Datenkompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.4.6 6.4.7 6.5 6.6 6.7 6.5.5 JFIF (JPEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.5.6 JPEG 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Metaformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.6.1 WMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.6.2 PICT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Vektorgrafik Formate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.7.1 Postscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.7.2 Portable Document Format (PDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.7.3 DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.7.4 SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Anwendung von SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 6.8 Digitale Wasserzeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Lowest Bit Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Texture Block Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Patchwork Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Steganografie Literatur 7 Digital Video 7.1 7.3 107 Video und der Mensch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.1.1 7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Wahrnehmung von Bewegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Analoges Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.2.1 BAS und FBAS (Composite Video) . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.2.2 Komponentenvideo (Component Video) . . . . . . . . . . . . . . . . . . . . . . . . 108 7.2.3 Y/C Video (Separiertes Video) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.2.4 PAL Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.2.5 NTSC Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.2.6 High Definition Television (HDTV) . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Digitale Videotechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.3.1 Codecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 INHALTSVERZEICHNIS 5 Cinepak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Indeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Microsoft Video-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Microsoft RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 MJPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 7.3.2 Videokompression nach H.261 und H.263 . . . . . . . . . . . . . . . . . . . . . . . 110 H.261 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.3.3 Videokompression nach MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 MPEG-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 MPEG-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 MPEG-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 MPEG-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 MPEG-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Windows Media Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . 114 DivX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 MPEG-Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 I-Frame Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 P-Frame und B-Frame-Codierung . . . . . . . . . . . . . . . . . . . . . . . . 115 D-Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 7.3.4 Video-Dateiformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Audio-Video-Interleaved Format (AVI) . . . . . . . . . . . . . . . . . . . . . . . . . 116 Quicktime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 RealVideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Advanced Streaming Format (ASF) . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.4 7.5 Speichermedium DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.4.1 Kopierschutzmechanismen der DVD . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.4.2 Rechtliche Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Synchronized Multimedia Integration Language (SMIL) . . . . . . . . . . . . . . . . . . . 118 8 Serverseitige Technologien 8.1 122 Dynamische Generierung von Web-Seiten . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 8.1.1 Common Gateway Interface (CGI) . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 8.1.2 Parameterübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 8.1.3 Sicherheitsüberlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 8.1.4 Server Side Includes (SSI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 8.1.5 Servlets und Java Server Pages (JSP) . . . . . . . . . . . . . . . . . . . . . . . . . 125 Java-Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Java Server Pages (JSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Interne Behandlung von JSP . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Installation Servlet/JSP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 INHALTSVERZEICHNIS 6 Installation Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Installation eigener Java Server Pages . . . . . . . . . . . . . . . . . . . . . 128 Installation eigener Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 8.1.6 Active Server Pages (ASP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 8.1.7 in the beginning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Informationen zu ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 8.1.8 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 8.1.9 Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 8.1.10 Session Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 8.2 Distributed Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 8.2.1 .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 WebMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 8.3 WAP/WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 8.3.1 WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 8.3.2 WAP 8.3.3 Installation einer eigenen WAP-Einwahl unter Linux . . . . . . . . . . . . . . . . . 139 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 mgetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 pppd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Kannel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 9 Knowledge Management 9.1 9.2 142 Die (Informatik) Welt in 100 Jahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 9.1.1 Wie kann irgendwer über eine so lange Zeit eine vernünftige Prognose machen? . . 142 9.1.2 Die arbeitsteilige Gesellschaft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 9.1.3 Die wissensteilige Gesellschaft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 9.1.4 Wissensteilige Gesellschaft oder im Wissen ertrinkende Gesellschaft? . . . . . . . . 145 9.1.5 Technik und Technikspekulationen . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 9.1.6 Wollen wir das alles? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 9.1.7 Zum Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Active Documents: Concept, Implementation and Applications . . . . . . . . . . . . . . . 148 9.2.1 The notion of active documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 9.2.2 The implementation of active documents . . . . . . . . . . . . . . . . . . . . . . . 149 The heuristic approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 The iconic approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 The linguistic approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 9.2.3 Futher research . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 9.2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 INHALTSVERZEICHNIS 9.2.5 7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10 Prüfungsfragen 153 10.1 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 10.2 Informationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 10.3 Markup Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 10.4 Digital Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 10.5 Digital Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 10.6 Digital Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 10.7 Serverseitige Technologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 10.8 Bonus Fragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 A MP3 Hörtest 176 B Abkürzungsverzeichnis 180 C Glossar 182 Literaturverzeichnis 184 Index 187 Abbildungsverzeichnis 2.1 Anzahl der Hosts im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 EBONE 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3 hierarchical organisation of domain names . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1 Ted Nelson’s Interfile Communication (1971) . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 Screenshot eines Gopher Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3 Sponsored Links bei Suchmaschine ’Overture’ . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 Suchergebnis ähnlicher Bilder anhand ihrer Struktur . . . . . . . . . . . . . . . . . . . . . 29 3.5 Beispiel des Wissensnetzwerkes (Computergenerierter Kontext) des Multimedialen Brockhauses (2001) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.1 Das Ergebnis des Formatting Object Processors . . . . . . . . . . . . . . . . . . . . . . . . 63 4.2 Internet Explorer 5.0: XML Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.3 Internet Explorer 5.0: XSL Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.4 Internet Explorer 5.0: XML Datei mit Formatierungen aus XSL Datei . . . . . . . . . . . 65 5.1 Abtastung der Welle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.2 Abtastung der Welle - zeit und wertdiskret . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.3 Abtastung der Welle - Quantisierungsfehler . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.4 Aliasing bei zu niederer Abtastfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.5 Akustikmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.1 Farbraum des RGB-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.2 Farbauswahldialog des Bilderbearbeitungsprogrammes Gimp . . . . . . . . . . . . . . . . 81 6.3 Farbmischung bei RGB und CMY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.4 Farbraum des CMY-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6.5 Codebaum für die Huffman-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.6 Helligkeitsänderung gegenüber Farbtonänderung . . . . . . . . . . . . . . . . . . . . . . . 90 6.7 Zick-Zack-Serialisierung der DCT bei der JPEG-Kompression . . . . . . . . . . . . . . . . 92 6.8 Sehr hohe (1:100) Kompressionsrate bei JPEG . . . . . . . . . . . . . . . . . . . . . . . . 93 6.9 Vergleich JPG mit JPG 2000 bei gleicher Datenrate . . . . . . . . . . . . . . . . . . . . . 94 6.10 JPEG 2000 Regions of Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.11 Wavelet Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 8 ABBILDUNGSVERZEICHNIS 6.12 JPG 2000 Wavelet Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 96 6.13 SVG Grafik ’Stars and Stripes’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.1 I-Frames und P-Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.2 Anordnung und Beziehung der Frame-Typen bei der MPEG-Kompression . . . . . . . . . 115 7.3 RealPlayer mit SMIL Unterstützung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.1 Die Common Language Runtime (CLR) Architektur von .NET . . . . . . . . . . . . . . . 135 8.2 WAP-Einwahl und beteiligte Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Tabellenverzeichnis 4.1 Unvollständige Liste der Entities in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.1 Werte von Abtastfrequenzen und Samplingraten . . . . . . . . . . . . . . . . . . . . . . . 67 6.1 Kompressionsfaktoren bei verlustbehafteter JPEG-Kompression . . . . . . . . . . . . . . . 90 6.2 Quantisierungstabelle von JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.3 EXIF Daten eines JPEG-Bildes einer digitalen Kamera. . . . . . . . . . . . . . . . . . . . 100 7.1 Datenraten bei H.261 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 7.2 Kompressionsraten bei MPEG-Frametypen . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.3 Gruppierung der Frames in MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 A.1 Musikstücke und ihre Filegrössen im Vergleich zu mp3-komprimierten Dateien . . . . . . . 179 10 Kapitel 1 Inhaltsübersicht Das Ziel dieser Lehrveranstaltung (LV) ist es, einen Überblick über vorhandene Multimediale Informationssysteme und die verwendeten Technologien zu geben. Der Schwerpunkt liegt dabei mehr auf den technischen Möglichkeiten und weniger auf der (künstlerischen) Gestaltung oder dem Inhalt der Informationssysteme. Verschiedene Technologien, die verwendet werden, um Multimediale Informationssysteme aufzubauen, werden mehr oder weniger detailiert beschrieben, ihre Vor- und Nachteile aufgezeigt und ihre Verwendung erklärt. Dazu gehören auch (einfache) Beispiele, die aufzeigen, wie die jeweiligen Möglichkeiten verwendet werden können bzw. sollen. Diese LV beschreibt aber auch existierende Informationssysteme und versucht, deren technische Hintergründe zu beleuchten. Informationsgewinnung und Knowledge Management gehören aber ebenfalls zu den behandelten Themen. 1.1 Organisatorisches Die LV “Multimediale Informationssysteme” wird von Prof. Hermann Maurer1 und Christof Dallermassl2 gehalten. Eine Anmeldung für “Multimediale Informationssysteme” ist ab Wintersemester 2001/2002 für die Vorlesung als auch für die Prüfung notwendig. Die Prüfungsanmeldung ist ausschliesslich am Online System der TU-Graz3 möglich. Für die Teilnahme an den Konstruktionsübungen ist eine Anmeldung am Online System notwendig! Der Anmeldeschluss und die Übungsthemen dafür werden in der Vorlesung bekanntgegeben. Unterlagen, Folien und die aktuellste Version dieses Skripts sind unter http://courses.iicm.edu/mmis im Internet zu finden. Die offizielle Webseite der LV ist im Online System der TU Graz zu finden. Dort werden auch alle Vorlesungstermine bzw. deren Entfallen aufgelistet. Die Kommunikation über diese LV findet hauptsächlich in der Newsgroup news://news.tu-graz.ac. at/tu-graz.lv.mmis auf dem Newsserver der TU-Graz news.tu-graz.ac.at statt. In diesem Skript wird soweit als möglich auf die deutsche Rechtschreibung Rücksicht genommen. Allerdings kann nicht garantiert werden, dass alle Regeln der alten/neuen Rechtschreibung berücksichtigt werden :-) Der Schreiber dieses Skripts (Christof Dallermassl) bekennt sich der Einfacherheit halber zu einem Gemisch aus neuer, alter und schweizer (ohne ’scharfes s’ (ß)) Rechtschreibung und hofft auf allgemeines Verständnis. Der Autor ist jedoch im Allgemeinen froh, etwaige Tipp- oder sonstige Fehler mitgeteilt zu bekommen und bemüht sich, diese schnellstmöglich auszubessern. 1 hmaurer@iicm.edu 2 cdaller@iicm.edu 3 http://online.tu-graz.ac.at 11 KAPITEL 1. INHALTSÜBERSICHT 1.1.1 12 Übungsablauf In der Übung sollen Gruppen von StudentInnen (2 bis 4 Personen, in Einzelfällen auch einzeln) ein Projekt durchführen, das irgendwie mit dem in der Vorlesung vorkommenden Stoff zu tun hat. Im Allgemeinen wird daher ein multimediales Informationssystem zu erstellen sein. Das Ziel der Übung ist es, verschiedene Technologien, die in der Vorlesung ja meist nur kurz angerissen werden können, in der Praxis kennenzulernen und das Wissen darüber zu vertiefen. Wichtig ist jedoch nicht nur die Beschäftigung mit diversen Techniken, sondern auch das Planen des Übungsprojektes. Es muss von jeder Gruppe vor Beginn der Implementierung ein kurzer Projektplan abgegeben werden, in dem • die Gruppenteilnehmer (Name, Matrikelnummer, email-Adresse), • eine kurze Beschreibung des Projektes (was wird gemacht) - User Requirements und die daraus resultierenden Software Requirements • eine kurze Beschreibung der verwendeten Technologien (warum wird es so gemacht, wie es geplant ist und nicht mit einer ähnlichen Technologie (z.B. warum PHP und nicht JSP)) - grobes Software Design, • eine Zeitplanung enthalten ist. Die Zeitplanung ist einer der wichtigsten Teile der Projektplanung und nur durch häufige Aufwandsschätzungen zu erlernen. Ohne (halbwegs) richtige Zeitplanung ist es unmöglich, ein Projekt zu kalkulieren. Da die Einschätzung, was wie lange brauchen wird, aber nicht aus Büchern erlernt werden kann, sondern hauptsächlich mit Erfahrungswerten arbeitet, sollte dies so oft wie möglich geübt werden, bevor man sich in die freie Wirtschaft wagt. Eine beispielhafte Projektplanung kann z.B. so aussehen: Teilnehmer: Christof Dallermassl, 9031434, cdaller@iicm.edu Karl Blümlinger, 9112345, kbluem@iicm.edu Thema: Serverbasiertes Fotoalbum im Web Beschreibung: Fotos und ihre Beschreibungen sollen im Web angezeigt werden können. Es soll möglich sein, Fotos upzuloaden und Kommentare und Links zu einzelnen Fotos hinzuzufügen. Zum Uploaden soll kein Zusatzprogramm ausser einem Webbrowser nötig sein. Die Webseiten sollen möglichst mit verschiedenen Browsern zusammen arbeiten. Zusätzlich soll es auch möglich sein, die Bilder auf dem Server leicht zu bearbeiten (Skalieren, Drehen, Spiegeln, evtl. Effekte). Grobes Design: Kommentare und Links werden in einer relationalen Datenbank verwaltet. Die Bilder werden einfach im Filesystem oder auch in der Datenbank gespeichert. Zur dynamischen Generierung der HTML-Seiten wird Serverseitig PHP verwendet, da diese serverseitige Erweiterung einen sehr einfachen Zugriff auf die verwendete Datenbank MySQL erlaubt und es ausserdem eine umfangreiche Bibliothek zur Bildverarbeitung gibt. Zusätzlich ist PHP plattformunabhängig. Alternativ kämen Java Servlets/Java Server Pages in Frage. ASP scheidet wegen der Plattformabhängigkeit aus. Zeitplan: KAPITEL 1. INHALTSÜBERSICHT Task Installation/Konfiguration Apache/PHP/MySQL Design Webseiten Design der Datenbank PHP lernen PHP Implementation Anzeige/Upload/Kommentare Serverseitige Bildbearbeitung Testen Dokumentation 13 Dauer 5h 15h 4h 15h 30h 20h 5h 5h Der Abgabetermin für diese Projektplanung wird in der Vorlesung bzw. in der Newsgroup bekanntgegeben. 1.2 Änderungen im Skript Hier werden Änderungen am Skript dokumentiert, um es dem Leser des Skripts die Entscheidung zu erleichtern, ob sich der Download der neuesten Version bezahlt macht. Die Version des Skripts, die Sie gerade in Händen oder Bildschirm halten, wurde am 24. November 2004 erstellt. Änderungen: • 19.03.2003 : Kleine Fehler im Kapitel “Markup Languages” und “Digital Video” ausgebessert. Danke an Christina Irk • 21.01.2003 : Update für PHP4 Konfiguration (Globale Variablen) - Danke an Edi Haselwanter und einen Übungsteilnehmer (Name leider vergessen) • 13.01.2003 : Kleine Änderungen im Kapitel “Digital Video” • 02.12.2002: Kleine Änderungen im Kapitel “Digital Bilder”: Kleine Beispiele geändert/dazu. Kurzer Kommentar zu JPEG dazu (Zick-Zack) • 25.11.2002: Kleine Änderungen im Kapitel “Digital Audio”: Ogg Vorbis, MP3Pro dazu, kleine Details dazu • 18.11.2002: Kleine Änderungen im Kapitel “Server Seitige Erweiterungen”. • 11.11.2002: Kleine Änderungen im Kapitel “Markup Languages”. XML/CSS hinzugefügt, XHTML kurz erwähnt. Kleine Umstellung der Reihenfolge (XML Anwendungen mit XSL getauscht). • 04.11.2002: Kleine Änderungen im Kapitel “Markup Languages”. • 07.10.2002: Titelseite an neues Semester angepasst, Vorlesungsnummer für Multimediale Informationsysteme 1 eingefügt. • 12.07.2002: Neue Prüfungsbeispiele und Antworten (Bonusfrage) der letzten Prüfung hinzugefügt. Beispiel für Processing Instructions hinzugefügt. Viele Tippfehler ausgebessert (Danke an Martin Pirker). • 25.06.2002: Link auf freien PHP-Provider hinzugefügt. • 13.06.2002: Kleine Änderungen im Kapitel “Digital Video”. • 27.05.2002: Viele Tipp- und Schreibfehler ausgebessert (Danke an Peter Schifferl) • 21.05.2002: Ab sofort gib es auch die Folien in den papiersparenden Versionen von 4 bzw. 8 Folien pro Seite in verschiedenen Anordnungen. Das Skriptum in 2 pro Seite (aber leider ohne Hyperlinks, d.h. nur zum Drucken). • 14.05.2002: JSP/Servlet Konfiguration vereinfacht (keine Contexte mehr). • 02.05.2002: Javascript Beispiel für Hidden Formfields im Kapitel “Serverseitige Erweiterungen” hinzugefügt. (Danke an Karl Svensson!), PHP-Tutorial-Links hinzugefügt. KAPITEL 1. INHALTSÜBERSICHT 14 • 01.05.2002: Updated Links im Kapitel “Serverseitige Erweiterungen” • 23.04.2002: Originelle Bonusfragen der Prüfung vom 17.04.2002 hinzugefügt. • 18.04.2002: kleine Tippfehler (Kapitel Knowledge Management) (gefunden von Mario Grünwald), kleine Änderungen im Kapitel Markup-Languages. Abschnitt “Vorhandene XML-Definitionen” hinzugefügt (Beispiele von XML-Standards). • 21.03.2002: kleinere Tippfehler ausgebessert (Kapitel Markup Languages). Links auf SelfhtmlSeiten upgedated (auf Version 8.0) • 14.03.2002: Tippfehler im Kapitel Internet entfernt. Ein paar Links bei Informationssystemen hinzugefügt. Gnu Image Find Tool (Suche nach Multimediadaten) hinzugefügt. • 17.01.2002: Kleine Umstellung bei XSL. XSL manchmal durch XSLT ersetzt. • 17-19.12.2001: Details zu Processing Instructions hinzugefügt. Literaturverweise aus RFC.bib entfernt (keine Verlinkung innerhalb der RFCs/STDs/FYIs mehr). Details zur Reihung von Suchmaschinen hinzugefügt. Korrektur, dass FTP UDP verwendet. Ist falsch! (Sorry!) (Danke an Thomas Oberhuber) • 27.11.2001: Kapitel “Knowledge Management” von Prof. Maurer hinzugefügt. • 21.11.2001: Originelle Antworten zur Bonusfrage der Prüfung am 14.11.2001 hinzugefügt. • 19.11.2001: Kleine Änderungen im Kapitel “Digitale Bilder”. Info über JPEG2000 upgedated. • 05.11.2001: Kleine Umstellungen (u.a. Titel) im Kapitel “Information Server Technologien” (jetzt “Serverseitige Technologien”). Kleine Fehler in Kapitel “Digital Audio” und “Digital Images” ausgebessert (gefunden von Dieter Freismuth). • 29.10.2001: Kapitel “Markup Sprachen: Kleine Änderungen bei XML/XSL. Beispiel und Screenshot für XSLT/FO eingefügt. • 24.10.2001: Kapitel “Inhaltsübersicht”: Kurze Erklärung zu den Übungen eingefügt. Beispiel für Projektplanung • 22.10.2001: Kapitel “Markup Languages”: Beispiele für verschiedene Media-Typen (print, projection) eingefügt (Danke an Stefan Thalauer). • 12.10.2001: Kapitel “Internet”: Zahlen von Internet Consortium verwendet, nicht mehr von netsizer. Bildformat von pdf auf jpg/png umgestellt, wo vorhanden. • 09.10.2001: Ein paar Index Einträge korrigiert. • 04.10.2001: Ein paar Tippfehler korrigiert und das XML/XSL Beispiel richtig gestellt (gefunden von Dieter Freismuth). • 29.09.2001: Ein oder zwei Prüfungsfragen dazugeschrieben bzw. leicht geändert. • 19.09.2001: Viele kleinere Fehler ausgebessert (bemerkt von Erwin Pischler). • 07.09.2001: Kleine Fehler ausgebessert (bemerkt von Peter Strassnig). • 24.07.2001: Änderung des PHP-Beispiels (jetzt Verwendung von Standard MySQL PHP Befehlen). • 05.07.2001: Minimale Änderungen (Tippfehler, Indexfehler) • 30.05.2001: Kapitel “Digitales Video” ein paar Details dazugefügt, DivX und rechtl. Probleme dazu. • 10.05.2001: Kapitel “Information Server Technologies” Teil über SSI und .NET hinzugefügt. Tippfehler ausgebessert. • 02.05.2001: Tippfehler aus Kapitel ’Digital Images’ entfernt. KAPITEL 1. INHALTSÜBERSICHT 15 • 05.04.2001: Datenmenge in Tabelle (Digital Audio - Sample Rate, Auflösung, Frequenzband, Datenmenge) von kbit auf kB korrigiert. • 04.04.2001: DVD-Audio Werte korrigiert • 03.04.2001: Beschreibung von LZW leicht geändert. • 28.03.2001: in xmltags sind jetzt wieder spaces drin, wenn sie reingehören. • 15.03.2001: ein paar Tippfehler ausgebessert • 07.03.2001: Dateinamen alle umbenannt (mmis_ws2000_ weg - auch die Folien sind jetzt nach Thema und nicht mehr nach Datum benannt.) • 01.02.2001: Index hinzugefügt • 30.01.2001: Englische Prüfungsfragen hinzugefügt. • 29.01.2001: Kleine Layoutänderungen • 27.01.2001: Tippfehler und Vannevar Bush’s Artikel-Titel korrigiert und mit Url versehen (im Literaturverzeichnis). • 26.01.2001: Prüfungsfragen anders gelayoutet, sonst daran nichts geändert. In der Inhaltsübersicht die “Grobe Inhaltsübersicht” rausgeworfen. Leichte Layoutänderungen, weil bei Kapitelanfängen Seitenzahl beim Ausdrucken weggeschnitten wurde. • 24.01.2001: Kapitel Markup Languages/XML: XSL transformiert ein XML-Dokument in ein anderes XML-Dokument (also evtl. auch in ein HTML-Dokument), aber keinesfalls immer in ein HTML-Dokument! Digital Audio: Abbildung mit Aliasing: Rechter Rand wird jetzt nicht mehr abgeschnitten. Kurze Erklärung und Bild zu WAP/WML hinzugefügt. Prüfungsfragen hinzugefügt. Textbreite verändert, Ränder verkleinert und alle code-Schnipsel in kleinerer Schrift (ca. 40 Seiten gespart). • 23.01.2001: IPv6 verwendet natürlich Adressen von 128bit Länge (und nicht 129 bit) [Kapitel Internet - Das Netz der Netze]. • 22.01.2001: Kapitelweise Titel-Folien eingebaut (in die Folien, NICHT ins Skript!) • 20.01.2001: Beim Kapitel “Informationssysteme” die Abschnitte “Suchmaschinen” und “Brockhaus Multimedia” hinzugefügt. • 18.01.2001: Den Abschnitt mit den Änderungen und ein Erstellungsdatum auf die Titelseite eingefügt. Diesen Abschnitt mit den Änderungen gibt es nun auch als eigenes Dokument zur schnellen Überprüfung, ob sich etwas geändert hat. Korrektur von etlichen Schreibfehlern im ganzen Skript. Kapitel 2 Internet - das Netz der Netze 2.1 Geschichtliche Entwicklung Im Jahre 1970 begann die ARPA (Advanced Research Projects Agency) damit, Forschungen an weitreichenden, ausfallsicheren Netzen zu fördern. 1972 wurde dann die Arbeit von DARPA (Defense Advanced Research Projects Agency) weitergeführt, da man vor allem im militärischen Bereich auf der Suche nach ausfallsicherer, weiträumiger Vernetzung war. Die heute anzutreffende Internet Architektur und die Protokolle bekamen ihre Form gegen Ende der 70er Jahre. Durch die besondere Auslegung des Internet als Packet Switched Network erreichte man die Möglichkeit der Topologie als Maschennetz, bei dem der Ausfall eines Knotens noch nicht zum Ausfall des Gesamtnetzes führt, da das Routing auch über andere Knoten weiter erfolgen kann. Basis für alle Protokolle im Internet ist TCP/IP (Transmission Control Protocol/Internet Protocol), an dessen Entwicklung bereits 1979 so viele Organisationen beteiligt waren, sodass DARPA ein informelles Komitee gründete um die Entwicklungen zu koordinieren (ICCB = Internet Control and Configuration Board). Im Jahre 1980 begann, was wir heute als Internet kennen: DARPA stellte die Computer in den Forschungsnetzen auf die neuen TCP/IP Protokolle um. Das ARPANET, das es als Vernetzung schon gab, wurde schnell zum Kern des neuen Internet. Abgeschlossen wurde die Umstellung auf TCP/IP im Jänner 1983. Zur selben Zeit teilte die DCA (Defense Communication Agency) das Internet in zwei getrennte Netzwerke - eines für militärische Zwecke, eines für weitere Forschung. Der Forschungsteil des Netzes behielt den Namen ARPANET, der militärische Teil, der wie zu erwarten damals der grössere war, bekam den Namen MILNET. Um nun den Forschungseinrichtungen einen Anreiz zu geben, mit der neuen Technologie zu arbeiten, gab DARPA eine Implementation zu sehr geringen Kosten heraus. Zu dieser Zeit verwendeten die meisten Computer-Science Institute auf Universitäten BSD Unix. So erreichte man durch die Implementation für Unix auf einen Schlag 90% der universitären Forschungseinrichtungen im Bereich Computer-Science. Ein weiterer Grund für die rasche Verbreitung der TCP/IP Technologie war die mangelnde Verfügbarkeit anderer Protokolle für LANs. Gerade aber LANs waren durch die seit den frühen 80er Jahren verfügbare billige Ethernet Technologie sehr stark im Kommen. Damit schlug man also gleich zwei Fliegen mit einer Klappe - man konnte Rechner billig mit Ethernet vernetzen und durch die Verwendung von TCP/IP als Protokoll kam auch gleich die Möglichkeit dazu, am Internet teilzunehmen. Das “New Hacker’s Dictionary” [Ray] beschreibt den Grund für den Erfolg von TCP/IP so: TCP/IP evolved primarily by actually being used, rather than being handed down from on high by a vendor or a heavily-politicized standards committee. Consequently, it (a) works, (b) actually promotes cheap cross-platform connectivity, and (c) annoys the hell out of corporate and governmental empire-builders everywhere. Als die NSF (National Science Foundation) erkannte, dass Netzwerke bald ein sehr wichtiger Teil der Forschung sein würden, begann sie 1985 um ihre 6 Supercomputer Center herum grössere Netzwerke auf TCP/IP Basis zu installieren. 1986 wurden dann diese Zentren untereinander verbunden und bildeten das NSFNET; weiters wurde das NSFNET auch gleich mit dem ARPANET verbunden. Bis 1987 waren so hunderte Netzwerke in den Staaten und in Europa mit knapp 20.000 Computern zu 16 KAPITEL 2. INTERNET - DAS NETZ DER NETZE 17 Anzahl der Computer im Internet (Source: Internet Software Consortium (http://www.isc.org/)) 180 160 140 in Millionen 120 100 80 60 40 20 0 01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999 01/2000 01/2001 01/2002 01/2003 Abbildung 2.1: Anzahl der Hosts im Internet einem Internet verbunden. Sowohl der Grössenzuwachs (siehe Abbildung 2.1 - Zahlen vom Internet Software Consortium (http://www.isc.org)) als auch der Datenverkehrszuwachs waren damals schon viel grösser als zuvor erwartet. Bereits 1990 verband das Internet ca. 3000 Netze und mehr als 200.000 Computer. Dieser unerwartete Zuwachs stellte die ursprünglich entwickelte Technologie vor einige Probleme, die in den folgenden Jahren gelöst wurden. Zum Beispiel waren ursprünglich alle Rechnernamen und zugehörigen IP-Adressen in einem einzigen File gespeichert, das von Hand editiert wurde und an alle Internet Sites geschickt wurde. Aus diesem Grund wurde dann DNS (Domain Name System) entwickelt, das die Verwaltung in die Verantwortung der Domains übergab. Ein nicht ausser Acht zu lassender Faktor ist das Engagement der Telefongesellschaften AT&T, MCI, SPRINT, etc. die sehr früh erkannten, dass Rechnernetzwerke für sie der Verdienst der Zukunft würden. Dementsprechend stiegen diese sehr früh in den Markt um die Vernetzung der Backbones ein und halfen damit, die Verbreitung noch schneller voranzutreiben. Ein Punkt noch zur Philosophie des Internet - es war als reines Standleitungsnetz geplant und ausgelegt und ist auch in seinem Kern als solches realisiert. Alle Internetdienste sind so definiert, dass adressierte Teilnehmer direkt erreichbar sind und fix definierte IP Adressen haben. SLIP und PPP als Einwahlprotokolle kamen erst relativ spät in Einsatz, zu einer Zeit, als die ersten Studenten, kleineren Firmen und Privatleute über die nun billiger gewordenen Modems die Dienste des Internet nutzen wollten. An dieser Stelle stellt sich nun die Frage nach dem Betreiber des Internet. Nun, diese ist einfach zu beantworten, es gibt ihn nicht direkt. Die Verwaltung des Internet erfolgt vollkommen dezentral, wir betreiben es sozusagen alle. Auch ist bei TCP/IP selber keine Vergebührung vorgesehen. Damit nun aber nicht der absolute Wildwuchs im Technologiebereich im Internet zuschlägt (zumindest bei TCP/IP) gibt es ein Gremium, das die Standards vorgibt: die ISOC (Internet Society). Diese wiederum enthält zwei Gruppen, zum einen das IAB (Internet Architecure Board), das die Anforderungen vorgibt und zum anderen die IETF (Internet Engineering Task Force). Die Arbeit der IETF kommt als RFC (Request For Comment) an die Öffentlichkeit, und diese gelten als niedergeschriebener Standard. Der Backbone ist in Europa allgemein als EBONE Topology bekannt und besteht aus einer ganzen Reihe von breitbandigen Leitungen zwischen verschiedenen Zentren in Europa sowie natürlich nach Amerika (siehe Abbildung 2.2). Die Netzwerke der einzelnen Länder sind über die grossen Knoten an den Backbone angeschlossen. Diese Netzwerke sind wiederum landesabhängig organisiert. KAPITEL 2. INTERNET - DAS NETZ DER NETZE 18 Abbildung 2.2: EBONE 2000 2.2 Technische Grundlagen Jeder Teilnehmer des Netzes hat eine IP Adresse, die aussagt, in welchem Netzwerk er sich befindet und welcher Rechner er in diesem Netzwerk ist. Diese Kombination ist eindeutig. Es kann keine zwei Maschinen mit der gleichen Adresse im Internet geben. Alle IP Adressen sind 32 Bit (IPv4) lang (IPv6 verwendet 128 Bit lange Adressen - Es gibt bei 16 Byte-Adressen 2128 verschiedene Adressen, das sind ca. 3 ∗ 1038 . Auf der gesamten Erde (Land und Wasserflächen!) könnte man damit 7 ∗ 1023 Rechner pro Quadratmeter adressieren.). Adressen werden in einer Punkt-Dezimalzahl Notation geschrieben, d.h. die 32-Bit Adressen werden in 4 x 8 Bit Dezimalzahlen durch einen Punkt getrennt geschrieben. Beispiel: Die Adresse 2166031126 ist binär 10000001000110110000001100010110 (hexadezimal 0x811B0316). Jeweils 8 Bit werden zusammengefasst (10000001.00011011.00000011.00010110) und in der PunktDezimalzahl Notation als 129.27.3.22 geschrieben. Da diese Zahlen unmöglich zu merken sind, werden einzelnen Rechnern auch Namen (einer oder mehrere) zugewiesen. So hat der oben genannte Rechner den Namen news.tu-graz.ac.at. Diese Namen sind hierarchisch organisiert (siehe Abbildung 2.3) und werden von vielen Domain Name Servern verwaltet. Das Internet Protokoll ist jedoch von diesen Namen unabhängig und arbeitet immer nur mit den IPAdressen. TCP/IP ist das im Internet am meisten benutzte Protokoll und setzt sich aus zwei eigentlich unabhängigen Protokollen zusammen: • IP (Internet Protocol): erzeugt eine Punkt zu Punkt Verbindung, kümmert sich um das richtige Routing der Datenpakete. Unterstützt aber keine zuverlässigen Verbindungen oder Fehlerkontrolle der Daten. • TCP (Transmission Control Protocol): baut auf IP auf und stellt eine zuverlässige, virtuelle Punkt KAPITEL 2. INTERNET - DAS NETZ DER NETZE 19 Generic int com edu sun yale eng ai cs gov Countries mil org acm eng jack linda robot net ieee jill jp us ac co keio nec cs csl nl oce ... vu cs flits fluit pc24 Abbildung 2.3: hierarchical organisation of domain names zu Punkt Verbindung her. TCP kümmert sich um die Wiederanforderung von verlorenen oder defekten Paketen. Ausserdem können Pakete in falscher Reihenfolge oder mehrfach beim Empfänger ankommen. TCP behandelt auch diese Fehlerquellen. Durch die Verwendung von Ports ist es bei TCP (und auch bei UDP) möglich, verschiedene Dienste eines Computers über das Netzwerk getrennt anzusprechen. So lauscht z.B. ein Web-Server normalerweise auf Port 80, ein Newsserver auf Port 119 oder ein Telnet-Server auf Port 23. Auf weitere Protokolle, die im Internet verwendet werden (UDP, ICMP, ARP,. . . ), wird hier nicht näher eingegangen, da dies zu weit führen würde. Genaueres kann jedoch im Skript zur Vorlesung ’Datenübertragungsprotokolle’1 nachgelesen werden. 2.3 Dienste im Internet Ursprünglich war das Internet dazu gedacht, eine Möglichkeit zu bieten, auf ’remote’ Rechnern arbeiten zu können (☞TELNET). Diese Anwendung wurde aber schon bald von email überholt. Email ist übrigens immer noch der meistgenutzte Dienst des Internet. Ein weiterer oft benutzter Dienst ist FTP (File Transfer Protocol) der es ermöglicht, Dateien zwischen Rechnern zu übertragen. Schon bald bildeten sich Server im Internet, die eine Vielzahl von Dateien und Programmen anboten. Suchmaschinen für Dateien entstanden. 2.4 Protokolle im Internet Jeder Dienst im Internet verwendet ein eigenes Protokoll, um zwischen dem Client und dem Server Daten auszutauschen. Fast alle Protokolle basieren auf TCP/IP, manche auch auf UDP(/IP). Beispiele für Dienste, die TCP verwenden, sind POP3 (Post Office Protocol Version 3), ☞TELNET, SMTP (Simple Mail Transfer Protocol), HTTP (HyperText Transfer Protocol). FTP verwendet sogar zwei TCPVerbindungen. Auf einer werden die Kommandos des Clients und die Antworten des Servers gesendet, während die Daten (upload, download, Verzeichnislisting) auf einer eigenen TCP-Verbindung verschickt werden. Viele Streamingprotokolle verwenden UDP, da der Übertragungsoverhead geringer ist als bei TCP und es z.B. wenig Sinn macht, ein verlorenes Datenpacket einer Telefonverbindung nocheinmal zu senden, wenn das Telefongespräch schon weiter fortgeschritten ist. Häufig arbeiten viel benutzte Internetdienste mit relativ einfachen, textbasierten Protokollen (z.B. POP3, SMTP, HTTP,...). So ist es meist mit geeigneter Dokumentation relativ einfach, einen (einfachen) Client 1 ftp://ftp2.iicm.edu/pub/hkrott/duep/duep.pdf KAPITEL 2. INTERNET - DAS NETZ DER NETZE 20 oder Server für ein bestimmtes Protokoll zu implementieren. Das Senden der Zeichenkette GET / HTTP1.0 gefolgt von einer Leerzeile an einen beliebigen Webserver (Port 80) liefert beispielsweise schon das gewünschte Ergebnis. Als Grundlage für fast alle der offenen Protokollstandards dient ein RFC - Dokument. Diese RFCs sind frei einsehbar und in der Designphase auch von jedermann kommentierbar (wie der Name schon sagt). RFCs sind u.a. auf den entsprechenden Seiten der IETF2 nachlesbar. Beispiele für RFCs: • UDP: RFC 768 ([Pos80]) • TCP: RFC 793 ([Pos81]) • TCP/IP Tutorial: RFC 1180 ([SK91]) • HTTP 1.0 bzw. 1.1: RFC 1945 ([BLFF96] bzw. RFC 2068 ([FGM+ 97]) • NNTP (Network News Transfer Protocol): RFC 977 ([KL86]) • FTP: RFC 959 ([PR85]) 2 http://www.ietf.org/rfc.html Kapitel 3 Informationssysteme 3.1 Historisches Schon 1945 publizierte Vannevar Bush den Artikel “As We May Think” [Bus45], in dem er eine digitale Bibliothek beschrieb, die wohl heute eher “Knowledge Management System” heissen würde. In ihr wollte er alle “books, records, and communications” eines Menschen speichern. Ein Index-Device namens memex sollte ähnlich dem menschlichen Gehirn arbeiten und das Auffinden von Daten ermöglichen: Consider a future device for individual use, which is a sort of mechanized private file and library. It needs a name, and, to coin one at random, “memex” will do. A memex is a device in which an individual stores all his books, records, and communications, and which is mechanized so that it may be consulted with exceeding speed and flexibility. It is an enlarged intimate supplement to his memory. Der Begriff Hypertext stammt von Ted Nelson, einem Informationssystem-Pionier. Bereits 1967 beschrieb er die Anforderungen an ein Hypertext-System namens Xanadu (später publiziert in Literary Machines [Nel92]). Abbildung 3.1 zeigt ein (historisches) Dokument, in dem Ted Nelson Hyperlinks designt. Er verwendete verschiedene Typen von Hyperlinks wie z.B. • Kommentare • Lesezeichen • Fussnoten • “Hypertext-Sprünge” Ein weiteres Konzept, das auf Ted Nelson zurückgeht, ist das der transclusions. Transclusions erlauben es, Dokumente oder Teile von Dokumenten in andere Dokumente einzubetten, ohne sie zu kopieren. Dies spart redundante Speicherung und garantiert, dass die eingebetteten Dokumente immer auf aktuellem Stand sind. Das Xanadu Projekt ist noch immer in Arbeit (der Start der Implementation war erst in den 90ern). Unter der Url http://www.udanax.com ist der aktuelle Stand der mittlerweile Open-Source Entwicklung zu finden. Andere Informationssysteme waren z.B. das Hypertext Editing System, das 1967 von van Dam entwickelt und als erstes Hypertext-System auch realisiert wurde. Es unterstützte • in-text links • branches: Menü am Ende eines Segments für Verzweigungen zu anderen Segmenten 21 KAPITEL 3. INFORMATIONSSYSTEME 22 Abbildung 3.1: Ted Nelson’s Interfile Communication (1971) • tags: Bemerkungen, die an ein Segment angehängt werden konnten. 1968 entstand NLS (oN-Line System) von Douglas Engelbart, das schon über 100.000 Artikel enthielt, und sowohl Hyperlinks als auch Struktur kannte. Douglas Engelbart gilt heute als der Erfinder der Textverarbeitung, der Fenstertechnik, der elektronischen Post (email), der heutigen Hypertextsysteme und der Maus. Auf http://sloan.stanford.edu/MouseSite/1968Demo.html stehen einige (ziemlich geniale) Demonstrationen von Douglas Engelbart als RealVideos zur Verfügung. Das 1975 von Akscyn geschaffene KMS (Knowledge Management System) war schon ein verteiltes Hypermedia System, das keinen Unterschied zwischen normalen Benutzern und Autoren machte. Informationen waren in mehreren Hierarchien organisiert und durch Hyperlinks untereinander verknüpft. Auch Annotationen (Bemerkungen) waren schon möglich. Das VideoTex-System, das Anfang der 80er Jahre entstand, war ein öffentliches System, das auf Telefon und erweiterten TV-Geräten basierte. Eine Weiterentwicklung davon war BTX (BildschirmTeXt), das ab 1982 von Prof. Maurer und dem IICM entwickelt wurde. BTX enthält über 20.000 Seiten, die ein sehr weit gestreuten Inhalt hatten. Von Enzyklopädien, über Spiele bis zu Diskussionsforen und Sex-Angeboten zog sich das Spektrum. Auch war dies das erste Vorkommen von eCommerce, da bei BTX eine Abrechnung mit dem Konsumenten möglich war. Ein paar Screenshots (damals hiessen die sicher noch Bildschirmschüsse :-) sind im Museum Unseres Computer Hinterhofs (MUCH))1 zu finden. Ein weiteres Hypertextsystem war IRIS , das 1985 von Norman Meyrowitz entwickelt wurde. Mehrfenstertechnik mit eingebauten Editoren (Bearbeitung von Text, Graphik, Bildern, ...), bidirektionale Links und eine “tracking map”, die die aktuelle Position im Verhältnis zu Umgebungslinks zeigte, waren die herausragenden Eigenschaften des Systems. Als Vorgänger zu heutigen Multimediapräsentationswerkzeugen kann man Hypercard nennen (1987 von Bill Atkinson entwickelt). Ein sehr einfaches Benutzerinterface gestattete es relativ einfach, multimediale Präsentation zu gestalten. Die Informationen waren in “Stapeln” von elektronischen Karten (vgl. “card decks” in WML (WAP) (Abschnitt 8.3) organisiert. Eine Skriptsprache erlaubte auch komplexere Operationen. 1 http://much.iicm.edu:88/much/projects/videotex_2/index.htm/ KAPITEL 3. INFORMATIONSSYSTEME 23 WAIS (Wide Area Information Server) startete 1989 als eine gemeinsame Entwicklung von Thinking Machines, Apple Computer und Dow Jones um Online-Zugriff auf das Wall Street Journal zu realisieren. WAIS bietet Suchfunktionalität in einem vorher erzeugten Index, einschliesslich Sortierung der Ergebnisse nach Wichtigkeit. Die Suchergebnisse konnten danach als Basis für weitere Suchen verwendet werden, um so eine verfeinerte Suche durchführen zu können. WAIS ist eine reine Suchmaschine. Es gibt weder Hyperlinks noch irgendeine Strukturierung der enthaltenen Informationen. Gopher wurde ab 1991 als campus-weites Informationsystem an der Universität von Minnesota verwendet. Es bietet Zugriff auf die enthaltenen Informationen über eine Menüstruktur. Auch wenn der “Informationsraum” in Wirklichkeit ein Graph ist (mit Schleifen), präsentiert Gopher eine Baumstruktur. Gopher selbst hat keine Hyperlinks und keine integrierte Suchmaschine, bietet aber gateways zu WAIS. Abbildung 3.2: Screenshot eines Gopher Clients Hyper-G (jetzt Hyperwave2 ) wurde Anfang der 90er am IICM entwickelt und ist ein “multi-user, multiprotocol, structured, hypermedia information system”. Es bietet • Dokumentenmanagement • konsistente Links • Benutzerverwaltung • Editierfunktionalität • und vieles mehr Trotz der vielen Features, die vor allem bei einer grossen Dokumentenanzahl unersetzbar sind, wurde Hyper-G von einer anderen Informationssystemtechnologie überholt. 1994 war das Jahr, in dem die Welt ausserhalb der Universitäten das Internet entdeckte. Hypertext und multimediale Elemente erregten das Aufsehen der Öffentlichkeit. Das WWW (World Wide Web) war geboren. Obwohl dieses System bei weitem nicht das erste Informationsystem war, das Verknüpfungen zwischen verschiedenen Inhalten bot, überholte es alle anderen Systeme mit Überschallgeschwindigkeit. Der Grund dafür war, dass sowohl das verwendete Dateiformat (HTML (HyperText Markup Language)), als auch das verwendete Protokoll (HTTP) sehr einfach waren und so von vielen Anwendern/Anbietern implementiert wurde. HTML wurde aber nicht erst 1994 erfunden. Der Grundstein dafür wurde schon lange vorher bei der Definition von SGML im Speziellen und markup languages im Allgemeinen gelegt. 2 http://www.hyperwave.com KAPITEL 3. INFORMATIONSSYSTEME 3.2 24 Suchmaschinen Der Siegeszug des WWW brachte es mit sich, dass die Anzahl der Dokumente, auf die zugegriffen werden kann, sich in den letzten Jahren explosionsartig vervielfachte. Innerhalb weniger Monate verdoppelt sich der Umfang jeweils und die Anzahl der Dokumente überschritt anfangs des Jahres 2001 die 2 Milliardengrenze. Ähnlich verhält es sich auch bei den Benutzern: Ungefähr alle 11 Monate verdoppelt sich die Anzahl der Internetbenutzer. Im Jahr 2000 waren geschätzte 142 Millionen Menschen InternetTeilnehmer. Das Wachstum des WWW lässt das Internet an die Grenzen seiner Funktionalität stossen, von Effektivität ganz zu schweigen [For99]. Brauchbare Informationen in diesem Wust an Daten zu finden, ist mittlerweile eine eigene Kunst. Dieser Abschnitt veranschaulicht die Technik, mit der heutige Suchmaschinen diese Problematik zu lösen versuchen. 3.2.1 Geschichte von Suchmaschinen Als der Abt Hugues de Saint-Cher im Jahre 1240 das erste Stichwortverzeichnis der Bibel aufstellen liess, waren damit 500 Mönche beschäftigt. Dabei hat die Bibel in der heute üblichen Druckfassung nur etwa 800 Seiten, also knapp 5 MByte. Das World Wide Web, so wird geschätzt, enthält zur Zeit mehrere Milliarden Seiten beziehungsweise mehrere Tera Bytes an Daten. Der erste Versuch, ein “Inhaltsverzeichnis” des Internets zu erstellen, hiess Archie. Archie bestand aus einem ‘Datensammler’ (Data Gatherer ), der automatisch die Inhaltsverzeichnisse von anonymen ftpServern durchsuchte, und einem Retrieval-System, in dem die User mit Suchwörtern nach ftp-Dateien recherchieren konnten. Der Suchdienst, der 1990 an der McGill University in Kanada entwickelt worden war, gehörte spätestens ab 1992 zu den geläufigsten Internet-Tools. Archie war als Suchwerkzeug für ftp-Dateien so erfolgreich, dass er die Mitarbeiter des Rechenzentrums der University of Nevada in Reno 1992 dazu inspirierte, einen ähnlichen Index für den seinerzeitigen Vorläufer des WWW zu entwickeln, Gopher. Die Gopher-Suchmaschine bekam den Namen Veronica. Veronica ähnelt in vieler Hinsicht schon den heute gängigen, kommerziellen Search Engines: Das Programm indizierte im Monatsrhythmus alle Gopher-Sites, die beim ‘Mother Gopher’ an der University of Minnesota angemeldet waren. Veronica erlaubte es, mehrere Suchbegriffe mit Hilfe von booleschen Operatoren zu verknüpfen, also den gleichen Befehlen AND, OR und NOT, die auch heute noch die meisten Suchmaschinen einsetzen. Und obwohl die Zahl der zu untersuchenden Dokumente für heutige Verhältnisse einigermassen überschaubar war (im November 1994 verzeichnete Veronica 15 Millionen Gopher-, ftp- und HTML-Dokumente), wurde schon damals beklagt, dass man als User der unüberschaubaren Zahl von Dokumenten und den Suchmethoden von Veronica hilflos ausgeliefert sei. Der erste Such-Robot für das gerade neu entstehende WWW war der World Wide Web Wanderer, den der MIT-Student Mathew Gray im Frühjahr 1993 programmiert hatte. Ursprünglich zählte der Wanderer nur Web-Server. Einige Monate später fügte Michael L. Mauldin, ein Computerwissenschaftler an der Carnegie Mellon University, ein ‘Retrieval Program’ namens ‘Wandex ’ hinzu, um die gesammelten Daten durchsuchen zu können. Der Wanderer durchsuchte und katalogisierte von Juni 1993 bis Januar 1996 zweimal pro Jahr das Netz. Im Oktober 1993 entstand Aliweb (kurz für: Archie-Like Indexing of the Web). Aliweb überliess einen Teil der Arbeit bei der Katalogisierung den Betreibern von WWW-Servern. Diese mussten für ihren Server einen Index erstellen und diesen bei Aliweb anmelden. Aliweb selbst war lediglich ein in Perl geschriebenes System, das die auf diese Weise zusammengestellten Indizes durchsuchte und sich dabei auf die Angaben der Server-Betreiber und der Autoren der Seiten verliess. Im Dezember 1993 gingen fast gleichzeitig drei neue Suchhilfen ans Netz: Jumpstation, World Wide Web Worm und RBSE Spider. Jumpstation und der World Wide Web Worm waren Suchroboter, die Websites nach Titel und Header (Jumpstation) beziehungsweise nach Titel und URL (WWW Worm) indizierten. Wer mit diesen beiden Tools suchte, bekam eine Liste von ‘Hits’ ohne weitere Bewertung in der Reihenfolge, in der sie in der Datenbank abgespeichert waren. Der RBSE Spider und der im April 1994 an der University of Washington gestartete Webcrawler waren die ersten Search Engines, die nicht bloss eine Aufzählung von gefundenen Dokumenten lieferten, sondern diese auch nach einem ‘Ranking’ sortierten. Webcrawler ist übrigens der einzige der bisher erwähnten Web-Fahnder, der bis heute überlebt KAPITEL 3. INFORMATIONSSYSTEME 25 hat, auch wenn er inzwischen kein Uni-Projekt mehr ist. Mittlerweile hat Excite3 den Webcrawler gekauft und führt ihn als ein Element des Excite Network. Im Mai 1994 begann Michael Mauldin mit der Arbeit an dem Spider, der unter dem Namen Lycos4 immer noch eine der bekanntesten Suchmaschinen ist. Wie Webcrawler listete auch Lycos seine Suchergebnisse nicht einfach nur auf, sondern sortierte sie nach ihrer Relevanz; anders als Webcrawler bewertete Lycos nicht nur die Häufigkeit eines Wortes in einem bestimmten Dokument, sondern auch die ‘word proximity’, also die Nähe von mehreren Suchbegriffen zueinander. Lycos ging am 20. Juli 1994 online. Wie viele Internet-Einrichtungen sind also auch die Suchmaschinen, die - wie Lycos und Webcrawler heute als kommerzielles Unternehmen betrieben werden - ein Ergebnis wissenschaftlicher Vorarbeiten an den Universitäten. Erst 1995, dem Jahr, als das Internet langsam das Bewusstsein einer nicht-akademischen Öffentlichkeit erreichte, gingen die ersten Suchmaschinen ans Netz, die Unternehmen mit Gewinnabsicht entwickelt hatten: Infoseek5 startete Anfang 1995; Architex, heute unter dem Namen Excite bekannt, ging im Oktober 1995 online; AltaVista6 startete im Dezember 1995 den regulären Betrieb. Während AltaVista als Projekt des Western Research Lab, einer Forschungsabteilung der Computerfirma Digital Equipment Corporation (DEC) entstand, war es von Anfang an das ‘Business Model’ von Excite und Infoseek angelehnt, sollte sich also durch Anzeigen finanzieren. Etliche weitere kommerzielle Recherche-Helfer kamen hinzu. Gegenwärtig gehören Search Engines zu den wenigen kommerziellen Angeboten im Internet, die wirklich Profite machen. Anbieter wie Infoseek oder Lycos sind an die Börse gegangen, Lycos machte im dritten Quartal 1997 - nach einem Jahr an der Börse erstmals Gewinne. Google7 meldete kürzlich, dass seit Sommer 2001 wieder schwarze Zahlen geschrieben werden. Heutzutage belegt allein der Index einer Search Engine wie Lycos etwa 300 GByte und wird monatlich aktualisiert. Suchmaschinen erlauben auch Benutzern, die nicht englisch sprechen, auf den jeweiligen Sprachraum eingeschränkte Suchen durchzuführen. Die Hersteller bauen ihre Suchmaschinen um Funktionen für immer neue Medientypen aus. Lycos und AltaVista beispielsweise suchen nicht mehr nur nach HTML-Texten, sondern auch nach Bildern, Videos und MP3-Dateien. Ihre Popularität macht sie zu einem zentralen Element im eCommerce: Keine Portal Site kommt mehr ohne Suchmaschine aus. [Bau99] Google speichert auf seinem Linux Cluster mit mehr als 10.000 Computern über 2 Milliarden Webseiten und beantwortet pro Tag über 150 Millionen Anfragen. (Informationen von http://www.google.com/ press/highlights.html) 3.2.2 Einteilung von Suchmaschinen nach Kategorien Suchmaschinen können nach der verwendeten Technik in verschiedene Kategorien eingeteilt werden [For99]: • Indexsuchdienste mittels Spider • Katalogsuchdienste • Kombination von Index- und Katalogsuchdiensten • Metasuchdienste • Intelligente Agenten • Recommendation Systems 3 http://www.excite.com 4 http://www.lycos.com 5 http://www.infoseek.com 6 http://www.altavista.com 7 http://www.google.com KAPITEL 3. INFORMATIONSSYSTEME 26 Indexsuchdienste Hierbei handelt es sich um vollautomatische Suchdienste. Mit Hilfe von sogenannten Robots werden Informationen zusammengetragen und in einer Datenbank gespeichert. Der User kann Suchbegriffe eingeben, mit deren Hilfe dann vom Suchdienst eine Liste zurückgegeben wird, die nach den Ranking-Kriterien sortiert ist. Robots, auch Wanderer oder Spiders genannt wandern nicht wirklich durchs Netz, sondern bewegen sie sich nur entlang der Hyperlinks fort, indem sie den Dokumenteninhalt verarbeiten und Links aus dem Inhalt extrahieren. Die Suchmaschine führt bei jedem Dokument eine lexikalische Analyse durch, extrahiert inhaltsrelevante Ausdrücke und legt sie in einer Datenbank ab. Meist wird der gesamte Text indiziert (Volltext-Indizierung), oder aber auch nur der Titel plus Headerinformationen und Metatags. Wie man eine Suchmaschine dazu überreden kann, die eigene Seite als besonders wichtig einzustufen ist ebenfalls eine eigene Wissenschaft ([Len99]): Es kommt vor allem darauf an, nicht möglichst viele Besucher auf die eigenen Webseite zu locken, sondern gezielt diejenigen anzusprechen, die auch der Inhalt der Seiten interessieren wird. Mit Zunahme der Komplexität der einzelnen Seiten wird es für Robots immer schwerer aus dem Durcheinander von HTML-Frames (viele Suchmaschinen unterstützen keine Frames und durchsuchen nur den <noframes>-Teil), CSS, JavaScript usw. den wirklichen Inhalt der Seite zu erfassen. Zusatz- (Meta-) Informationen (z.B. <meta name = ’’keywords’’content = ’’Obst, Gemuese, Fruechte’’> oder <meta name = ’’description’’content =’’Der ultimative Obstladen im Internet’’>) werden von Robots bevorzugt ausgewertet und danach dem Suchenden präsentiert. Natürlich wird auch der Titel der Seite besonders bewertet. Seiten, die Informationen nur in graphischer Form präsentieren (Text als Graphik oder Flash, weil der Designer es so will - Google indiziert mittlerweile auch Texte, die in Flash-Anwendungen vorkommen), haben meist das Nachsehen. Damit ein Roboter der Suchmaschine aber erst einmal auf eine eigene Webseite aufmerksam wird, muss er entweder einem Link gefolgt sein, oder die Seite wird bei der Suchmaschine registriert. Bei einer Registrierung sollte man allerdings keineswegs auf sofortige Ergebnisse hoffen. Während Altavista und Fireball8 neue Seiten innerhalb eines ein- oder zweitägigen Zeitraums aufnehmen, kann es bei Lycos schon einmal vier Wochen dauern. Bei Yahoo9 , einem der wichtigsten Web-Wegweiser, wartet man am längsten - denn dieser Katalog wird komplett von Hand gepflegt. Katalogsuchdienste Diese Dienste stehen meist im Zusammenhang mit redaktionell aufgearbeiteten Informationen, es handelt sich um verzeichnisbasierte Suchdienste. Die in der Datenbank eingetragenen Seiten sind von einer Redaktion inhaltlich überprüft, und alle von den Autoren zur Eintragung angemeldeten Seiten werden ebenfalls überprüft und kategorisiert. Auf diese Weise kann sichergestellt werden, dass dem Benutzer des Suchdienstes keine inhaltlich falschen Dokumente vorgeschlagen werden. Der Datenumfang ist jedoch oft viel geringer als bei den vollautomatischen Suchdiensten. Die Inhalte sind nach Interessensgebieten unterteilt, die ähnlich einer Verzeichnisstruktur angeordnet sind. Diese Form des Suchdienstes bietet dem unerfahrenen User einen leichteren Einstieg bzw. oft schnellere Erfolge bei einfachen Suchanforderungen. Meta Suchmaschinen Unter Metasuchdiensten versteht man die simultane Nutzung oder Zusammenfassung mehrerer Suchdienste. Es werden nach Eingabe der Suchkriterien automatisierte Abfragen an verschiedene Suchdienste verschickt und die Ergebnisse dann zusammengefasst. Dies bietet für den Anwender den Vorteil, sich wiederholte Abfragen bei verschiedenen Anbietern ersparen zu können bzw. sich nicht mit der Syntax der verschiedenen Systeme vertraut machen zu müssen. Die speziellen Eigenschaften der einzelnen Anbieter, die im einen oder anderen Fall bei der Suche sehr nützlich sein können, fallen dabei aber grösstenteils weg, d.h. man muss sich mit simplen Suchanfragen zufriedengeben. Ein Beispiel dieser Art von Suchmaschinen 8 http://www.fireball.de 9 http://www.yahoo.com KAPITEL 3. INFORMATIONSSYSTEME 27 ist Metacrawler10 oder Mamma11 . Agents Im Zeitalter der zunehmenden Dienstleistungsgesellschaft geht auch das Internet den Weg hin zur persönlicheren Betreuung. Der Gedanke ist ganz einfach: Jeder User hat seine persönlichen Interessen und kann nun einen “Agenten” beauftragen, Material zu einem bestimmten Thema zu sammeln. Diese Agenten können ferner die Gewohnheiten der User erforschen, dazulernen und entsprechend handeln. Das Prinzip der Agenten wird sicher in der Zukunft noch grossen Anklang finden, hat aber den Nachteil, dass im schlimmsten Fall für jeden User im Internet Unmengen von Nachrichtenpaketen verschickt werden. Schon heute wird über die Belastung der Datenleitungen durch die vielen Suchdienste, die unaufhörlich das Netz durchforsten, geklagt. Die Netzwerkbelastung durch eine grosse Verbreitung von Agenten ist schwer abzuschätzen. Recommendation Systems Man kann sich das System wie folgt vorstellen: Wenn ein Kunde auf der Suche nach einem Buch ist, so kann man ihn einfach fragen, welche Bücher, die er gelesen hat, ihm gefallen haben. Existiert nun eine Gruppe von Personen die dieselben Bücher gut fanden, und dieser Gruppe gefielen weitere Bücher, so ist es naheliegend, dem Kunden auch diese Bücher vorzuschlagen, und er wird damit höchstwahrscheinlich sehr zufrieden sein. Dieses Prinzip liegt den Recommendation Systems zugrunde und kann natürlich auch auf andere Gegenstände, wie etwa Filme, CDs oder Produkte in einem Katalog angewandt werden. Solche Systeme sind vor allem in Online-Buchhandlungen wie Amazon12 oder ähnlichem zu finden. 3.2.3 Reihung von Suchergebnissen Die Schwierigkeiten für aktuelle Suchmaschinen sind nicht so sehr im Auffinden von Informationen zu suchen, sondern eher in der Reihung der Ergebnisse. Das heisst, die besten Treffer sollen zuerst gereiht sein. Da es mittlerweile fast unendlich viele verschiedene Suchmaschinen gibt, verwenden diese auch fast soviele Algorithmen zur Reihung ihrer Suchergebnisse. Einen Überblick über Suchmaschinentechnologien liefert http://searchenginewatch.com/resources/tech.html. Bei der einfachsten Reihung wird einfach die Anzahl der Worte, die mit der Suchanfrage übereinstimmt, untersucht. Etwas bessere Ergebnisse liefert schon der Reihungsalgorithmus, der nicht nur das Vorhandensein bzw. die Häufigkeit, sondern auch die Nähe der Suchworte untereinander bewertet. D.h. eine Webseite, in der die gesuchten Begriffe im gleichen Satz vorkommen bekommt eine bessere Reihung als eine Seite, in der zwar die gesuchten Worte vorkommen, diese aber quer über den ganzen Text verstreut sind. Zusätzlich ist es immer möglich, Suchbegriffe, die nicht nur einfach im Text, sondern an bevorzugten Positionen (Titel der Seite oder in Meta-Beschreibungen (Meta-Tags)) vorkommen, höher zu bewerten und im Suchergebnis nach vorne zu reihen. Eine etwas fragwürdige Reihungsmethode ist die der sponsored Links. Werbekunden zahlen für eine bessere Reihung bei Suchergebnissen. So ist möglich, für spezielle Suchworte eine gute Plazierung zu kaufen. Google13 hebt diese gekauften Links farblich hervor und schränkt sich auf wenige solcher Links pro Suchergebnis ein. Die Suchmaschine Overture14 zeigt sogar, wieviel ein Klick auf das Suchergebnis dem Anzeigenkunden kostet (siehe Abbildung 3.3). Eine Suche nach dem Stichwort “Linux” brachte erst um den Platz 50 (auf Seite 2) einen Link zu http://www.linux.org (der erste nichtbezahlte Link), während bei Google obige URL an erster Stelle kommt. Der Nutzen von solchen Reihungen für den Benutzer ist natürlich sehr fraglich.[SH01] Als innovativer (zumindest zu dem Zeitpunkt, als er vorgestellt wurde) Ansatz wird hier der Reihungsalgorithmus von Google15 [otPC99] vorgestellt: Der sog. PageRank -Algorithmus wurde an der Stanford 10 http://www.metacrawler.com 11 http://www.mamma.com 12 http://www.amazon.com 13 http://www.google.com 14 http://www.overture.com 15 http://www.google.com/technology/index.html KAPITEL 3. INFORMATIONSSYSTEME 28 Abbildung 3.3: Die Suchmaschine ’Overture’ zeigt, wieviel ein Klick auf das Suchergebnis den Anzeigenkunden kostet. University entwickelt und ist immer noch die Grundlage von Google. Hierbei werden vor allem Links, die von und zu einer Seite zeigen, bewertet. Eine Seite wird dabei als (ge)wichtig eingestuft, wenn viele Links von anderen ’(ge)wichtigen’ Seiten einen Link auf diese Seite haben und wenn viele Links von dieser Seite auf andere ’(ge)wichtige’ Seiten zeigen. Dieser Prozess muss natürlich iterativ verlaufen, da ja zu Beginn der Suche nach ’(ge)wichtigen’ Seiten, alle Seiten das gleiche ’Gewicht’ haben. Bei jeder Iteration werden Relationen zwischen den Seiten überprüft und neu bewertet. Somit werden auch Suchbegriffe einer Seite zugeordnet, die unter Umständen garnicht auf der betreffenden Seite, wohl aber auf Seiten, die auf diese Seite verweisen, vorkommt. Als Benutzer kann man dies sehen, wenn man sich die von Google gecachte Seite anschaut. Bei einer Suche nach “xml standards dtd” wurde beispielsweise die URL http://www.oasis-open.org/ gefunden. Bei der Anzeige aus Google’s Cache, kommt folgende Bemerkung zum Vorschein: These search terms have been highlighted: xml standards These terms only appear in links pointing to this page: dtd Das Wort dtd kommt also auf der gefunden Seite nicht vor, wohl aber in Links auf diese Seite. Anfang des Jahres 2002 wurde versucht, dieses Verhalten auszunutzen (Details im Internet unter dem Stichwort “Google Bombing”), in der Praxis stellt es aber keine Gefahr für den Ranking-Algorithmus dar. Die Verwendung von Frames stellt für Google ein grosses Problem dar, da einzelne Frameteile meist nicht extra referenziert werden und somit kein expliziter Link zum Inhalt dieses Frameteils verweist und daher der Teil eine schlechtere Bewertung erhält. 3.2.4 Suche nach Multimediadaten Bei der Suche nach Multimediadaten, also Bildern oder Musikstücken, ist man zur Zeit noch meist auf die Suche in den Beschreibungen der Daten (Metainformationen) beschränkt. Es gibt nur wenige Systeme, die wirklich Query by Content erlauben: Anhand von Farb- und Kontrastvergleichen kann man so beispielsweise alle Bilder finden, die ein blauer Himmel ziert. Doch solche Algorithmen sind noch kaum den Kinderschuhen entwachsen. Das Fraunhofer-Institut versucht sich in diese Richtung und versucht die Suche nach Schablonen ([V.98]). Eine Anwendung ist z.B. das Fingerabdruckarchiv des FBI, das über 25 Millionen Bilder von Fingerabdrücken enthält. Der Sinn dieser Datenbank ist es, Personen anhand ihrer Fingerabdrücke zu identifizieren. Eine andere Anwendung, die in Zukunft grosse Bedeutung erlangen wird, ist die automatische Erkennung von Personen anhand eines Photos. Weitere Anwendungen sind medizinische Bilddatenbanken, geographische oder Wetter-Karten, Filmarchive, Kunstsammlungen... KAPITEL 3. INFORMATIONSSYSTEME 29 Abbildung 3.4: Suchergebnis von ähnlichen Bildern anhand ihrer Struktur (Photobook vom MIT). Das gesuchte Bild ist links oben, die ähnlichsten Bilder aus der Datenbank nachfolgend von links nach rechts, oben nach unten. Normalerweise verlangt die automatische Suche nach Bildern ein grosses Wissen von domain-spezifischen Merkmalen (wie z.B. Know-How über Fingerabdruckmerkmale). Es gibt jedoch auch Projekte, die diese Einschränkungen zu umgehen suchen. Das Photobook Projekt des MIT16 (siehe auch Abbildung 3.4) versucht, Ähnlichkeiten von Bildern zu finden, indem es nicht die Bilder selbst vergleicht, sondern Merkmale von Bildern heranzieht. Beispielsweise werden Farbe, Struktur und Formen verwendet. Diese Eigenschaften werden mit verschiedenen Matching-Algorithmen verglichen (euclidean, mahalanobis, divergence, vector space angle, histogram, Fourier peak, wavelet tree distances und lineare Kombinationen dieser). Eine andere Möglichkeit, Bilder nach ihrem Inhalt zu finden, ist das GNU Image Finding Tool 17 . Dieses nach der GPL (General Public Licence) freie Werkzeug erlaubt die Suche anhand von Beispielbildern. Das Besondere ist jedoch die Möglichkeit, die Suchanfrage iterativ mit der Angabe von positiver oder negativer Relevanz zu verbessern. Dies erlaubt eine genauere Beschreibung des gewünschten Ergebnisses. Ein guter Artikel zu GIFT ist unter [M0̈2] zu finden, der unter anderem auch die Installation beschreibt. GIFT indiziert alle Bilder und analysiert dabei verschiedene Bildcharakteristika - hauptsächlich Farb- und Texturmerkmale (Farbhistogramm, vorherrschende Farbe in bestimmten Bereichen des Bildes, Muster und Kanten). Eine Online-Demonstation kann unter http://viper.unige.ch probiert werden. Eine gute Übersicht über bestehende Systeme ist ebenfalls auf der zum GIFT Projekt gehörigen Webseite 16 http://vismod.www.media.mit.edu/vismod/demos/photobook/index.html 17 http://www.gnu.org/software/gift KAPITEL 3. INFORMATIONSSYSTEME 30 der Multimedia Retrieval Markup Langauge (MRML)18 zu finden. Ein nicht mehr ganz aktueller Artikel steht unter http://searchenginewatch.com/sereport/00/12-images.html. 3.3 Brockhaus Multimedial Der Brockhaus Multimedial dient als Beispiel eines grossen Informationssystems, das viele Bereiche aus dem Themengebiet “Multimediale Informationsysteme” in der Praxis zeigt. Da die Entwicklung dieses Nachschlagewerks am IICM stattfindet, können auch einige Hinweise über die interne Arbeitsweise des Systems gegeben werden. Der Brockhaus Multimedial 2002 enthält 98.000 Artikel zu verschiedensten Themen, die aus dem 15bändigen Brockhaus, dem Kunst und Kultur Brockhaus, dem Schülerduden über Sexualität, dem 6bändigen Werk über Weltgeschichte, Büchern aus der Reihe “Mensch, Natur, Technik” und anderen stammen. Zusätzlich sind zahlreiche Weblinks, Animationen, Bilder, Filme, Interaktive Anwendungen und Tonbeispiele enthalten. Die gesamte Datenmenge beträgt ungefähr 3GB und wird auf 6 CDs bzw. auf DVD ausgeliefert. 3.3.1 Textdaten Die Texte werden von der Firma Brockhaus zum Grossteil in Form von SGML (Standard Generalized Markup Language)-Dateien geliefert (mehr über SGML ist in Abschnitt 4.1 zu finden) und am IICM in ein proprietäres Textformat umgewandelt. Dieses proprietäre Format wird aus Effizienzgründen verwendet und nicht etwa aus Ablehnung von SGML. Als Beispiel dient der Artikel über “Leporello” [Bro00]: Leporello [nach der langen Liste der Geliebten Don Giovannis, die sein Diener Leporello in Mozarts Oper anlegt] das, harmonikaartig gefaltete Landkarten, Prospekte, Bilderbücher oder Ähnliches. Hier ein Ausschnitt aus der SGML-Version, die von Brockhaus geliefert wird: <sachart art-id="30899000" typ="norm" verwstw="nein" inhalt="i-nein"> <lem><t>Lepor<k>e</k>llo</t></lem> <sachkopf> <ety> [nach der langen Liste der Geliebten Don Giovannis, die sein Diener Leporello in <person><pn>Mozarts</pn></person> Oper anlegt] </ety> <gram>das,</gram> </sachkopf> <artcorp> <abs> harmonikaartig gefaltete Landkarten, Prospekte, Bilderbücher und Ähnliches. </abs> </artcorp> </sachart> Sehr schön ist hier zu erkennen, dass die Informationen mit Hilfe von verschiedenen SGML-Tags inhaltlich gekennzeichnet werden (z.B. <gram> kennzeichnet eine grammatikalische Information, <person> eine Person, ...) und nicht etwa ein Teil des Textes als ’kursiv’ markiert wird. Die Trennung von Inhalt und Darstellung wird hier sehr schön durchgeführt. Die Weiterverarbeitung dieses Artikels fügt interne Daten, wie z.B. eine eindeutige Identifikationsnummer (%ID=30899000%) oder Metainformationen (MIME-Type) hinzu und resultiert in dem (weniger interessanten und nur der Vollständigkeit halber aufgeführtem) Text: @1Lepore£éllo@0\S{;.FWISSEN;107}@8\\ @9@C%ID=30899000% @0[nach der langen Liste der Geliebten Don Giovannis, die sein Diener Leporello in Mozarts Oper anlegt] @2das, @0harmonikaartig gefaltete Landkarten, Prospekte, Bilderbücher und Ähnliches.\\ 18 http://www.mrml.net KAPITEL 3. INFORMATIONSSYSTEME 31 Die Texte für alle Artikel werden blockweise komprimiert und in einer Datei gespeichert. Die Unterteilung in Blöcke hat den Vorteil, dass trotz Kompression effizient auf beliebige Stellen innerhalb der Datei zugegriffen werden kann (random access). Die Offsetwerte, die auf einzelne Artikel in dieser Datei zeigen, werden in mehreren Indizes mit Hilfe einer eigenentwickelten Datenbank gespeichert, die mit binären Bäumen sog. b-trees arbeitet. b-trees eignen sich hervorragend, um Daten effizient zu speichern und zu suchen, speziell wenn diese auf Festplatte/CDRom/etc. gespeichert werden sollen (für eine genauere Beschreibung von b-trees siehe [MR01] oder http://perl.plover.com/BTree/article.html). Es gibt Index-Dateien für die Volltextsuche und für die Suche nach Stichwörtern. Der gesamte Textumfang (komprimiert) beläuft sich auf ca. 41MB Daten. Der Volltextindex belegt fast 50MB Speicherplatz. Aktuelle Daten, die über das Internet als Update geholt wurden, werden in einem zweiten Satz von Datenbank plus Indizes abgelegt, die bei Suchen automatisch verwendet werden. Es werden also keine Daten in die originale Datenbank aufgenommen. Der Benutzer merkt von der Aufteilung der Daten in verschiedene Datenbanken aber nichts, mit der Ausnahme, dass er gesondert nach aktualisierten/aktuellen Daten suchen kann. 3.3.2 Computergenerierter Kontext Der computergenerierte Kontext (auch Wissensnetzwerk genannt) ist eine Neu- und Eigenentwicklung des IICM und erstmals beim multimedialen Brockhaus im Einsatz. Abbildung 3.5 zeigt einen Screenshot des Wissensnetzwerkes des Wiedehopfes. Abbildung 3.5: Beispiel des Wissensnetzwerkes (Computergenerierter Kontext) des Multimedialen Brockhauses (2001) Wollte ein Lexikonhersteller bisher mehrere Artikel so verlinken, dass sie inhaltlich zusammenpassen, musste ein Heer von Redakteuren dies erledigen. Das Wissensnetzwerk versucht nun, mit Hilfe von verschiedenen Ähnlichkeitsfunktionen herauszufinden, ob und welche Artikel inhaltlich zusammenpassen. Dazu werden mehrere Kriterien herangezogen: • Wortähnlichkeit: je mehr Worte in beiden Artikeln vorkommen, desto höher wird die Wortähnlichkeit eingestuft. Dabei wird jedoch unterschieden, wie hoch das Gewicht der einzelnen Worte ist. Je seltener ein Wort im ganzen Datenbestand vorkommt, desto höher ist sein Gewicht. Dadurch werden u.a. Bindeworte (und, oder, ...), Artikel (der, die, das, ...) usw. nicht berücksichtigt. Um diese Gewichtung berechnen zu können, muss zu Beginn ein Worthistogramm erstellt werden, das die Häufigkeit jedes Wortes enthält. Worte, die im Titel eines Artikels vorkommen, werden auch höher bewertet, als solche, die nur im Text des Artikels enthalten sind. • (Fein)Klassifikation: jeder Artikel wird von der Brockhausredaktion einem Themengebiet zugeordnet. Z.B. existiert eine Klasse Literatur, mit der Unterklasse österreichische Literatur. Diese Themenklassen werden auch als Vergleichskriterium für die Ähnlichkeit zweier Artikel herangezogen. • Linkwert: zwei Artikel enthalten gemeinsame Referenzen auf einen dritten Artikel KAPITEL 3. INFORMATIONSSYSTEME 32 • Medienwert: zwei Artikel verweisen auf gleiche Multimediaobjekte (Bilder, Audioobjekte, ...) Da die Erstellung der für diese Vergleiche benötigten Daten (z.B. des Worthistogrammes) sehr viel Computerleistung (Zeit und Speicher) benötigt, wird das gesamte Wissensnetzwerk für alle Brockhaus-Artikel vorgeneriert und nicht dynamisch erzeugt. Selbst dies wäre aber ein Ding der Unmöglichkeit, wenn jeder der knapp 100.000 Artikel mit jedem Anderen verglichen werden müsste: Die Anzahl der Vergleiche wäre n(n−1) = ca. 5 Milliarden, bei einer 2 theoretischen Vergleichsdauer von 1ms immer noch über 2 Monate Rechenzeit! Daher werden für den Artikelvergleich nur Artikel herangezogen, die ähnliche Worte aufweisen. Dazu werden zwei Tabellen erstellt: Eine enthält für jedes der ca. 300.000 verschiedenen Worte diejenigen Artikel, in denen das Wort vorkommt. Die andere Tabelle enthält für jeden Artikel eine Wortliste von Worten, die insgesamt nicht öfter als 200mal vorkommen dürfen. Dadurch kann relativ schnell eine grobe Auswahl an Artikeln getroffen werden, die zu einem Artikel passen könnte (rein durch Vergleichen der ’seltenen’ Worte). In diesem Zusammenhang sei noch ein grosses Problem erwähnt, dass das Erkennen von gleichen Worten betrifft: Die deutsche Sprache hat viele Wortformen (gleiches Wort mit verschiedenen Endungen) und zusammengesetzte Worte, die durch einen einfachen Vergleich natürlich nicht gefunden werden können. Daher wird (mässig erfolgreich) versucht, mit verschiedenen morphologischen Programmen den Wortstamm zu extrahieren. Die Erstellung des Wissensnetzwerkes wird von verschiedenen ☞PERL-Skripts erledigt. 3.3.3 Bilddaten Bilder werden nicht einzeln als Dateien gespeichert, sondern viele zusammen in einer grossen Datenbank (ebenfalls ein b-tree), da bei ca. 13.000 Bildern und vor allem den dazugehörigen Thumbnails viel Speicherplatz durch Fragmentierung der CD verschwendet würde. Jede Datei belegt ja mindestens einen Block auf der CD und im Schnitt wird ein halber Block pro Datei verschwendet. Die Bilder selbst sind im JPG-Format oder als Bitmap gespeichert. 3.3.4 Videos und Animationen Die Videodaten und Animationen (und teilweise auch die Musik) sind als grossteils als Quicktime Movie gespeichert. Dies ist durch lizenzrechtliche Gründe und die einfache Installation des Quicktime Players begründet. Quicktime Videos können eine Vielzahl an verschiedenen Datentypen enthalten (siehe auch Abschnitt Quicktime auf Seite 116). So kommen beim Brockhaus gezeichnete (Computer)-Animationen, Videos, aber auch interaktive dreidimensionale Animationen (Quicktime VR) und 360◦ Fotos vor. Einen Nachteil hat der Quicktime Player aber doch: es ist nicht ganz so einfach, den Player so in ein Programm zu integrieren, dass die Player-Oberfläche (Buttons, Fortschrittsanzeige, ...) mit der Applikation eine Einheit darstellt und nicht der Quicktime Player als gesondertes Programm (Fenster) erscheint. Als weitere Formate sind in der Zwischenzeit Flash- oder IPIX-Animationen in Verwendung. Gläserner Mensch Eine Sonderrolle bei den Animationen des Brockhaus stellt der Gläserne Mensch (auch Anima genannt) dar: Ein menschlicher Körper kann von allen Seiten interaktiv betrachtet werden. Verschiedene Ansichten zeigen den nackten Körper, nur die Muskeln, nur Venen, Adern und Nerven, das Knochenskelett oder nur inneren Organe. Die jeweilige Ansicht kann gedreht und vergrössert werden. Was aussieht, wie ein 3D-Modell des Menschen, besteht in Wirklichkeit aus über 1500 Bilddateien (JPG), die nur sehr geschickt hintereinander dargestellt werden, sodass der Eindruck entsteht, ein wirkliches 3DModell vor sich zu haben. Ein Lookup-Table beschreibt dabei, wie die einzelnen Bilder aneinander gereiht werden müssen, um eine flüssige Bewegung zu erzielen. KAPITEL 3. INFORMATIONSSYSTEME 33 Anima ist eine zugekaufte Applikation der Firma iAS19 . 3.3.5 Landkarten Die Landkarten des Brockhaus bestehen im Grunde genommen aus Bitmap-Grafiken, die mit Ortsinformationen angereichert wurden. Die Bitmaps sind in einem eigenen Format gespeichert, um erstens ein einfaches Auslesen zu verhindern und um die Daten effizient speichern zu können. 3.3.6 Weblinks Es gibt zwei verschiedene Arten von Verbindungen ins Internet: • Redaktionell erstellte Weblinks, die im Text von Brockhaus geliefert werden. • Es kann eine Anfrage an verschiedene Suchmaschinen generiert werden. Die Begriffe, nach denen gesucht wird, sind mehr oder weniger ein Abfallprodukt der Generierung des Wissensnetzwerkes, da hierbei die “gewichtigsten” Worte (siehe Abschnitt 3.3.2), die einen Artikel beschreiben, gefunden werden. 3.3.7 Programming Framework Die Brockhaus-Applikation ist vollständig in ☞C++ geschrieben und verwendet eine selbstentwickelte Oberfläche. 19 http://www.brainmedia.de Kapitel 4 Markup Languages Ein Markup gibt an, wie Text in einem Dokument zu interpretieren ist. Es sind Zusatzinformationen, die zu dem eigentlichen Text eines Dokuments hinzugefügt sind. Das deutsche Wort für “Markup Language” wäre Auszeichnungssprache, zum leichteren Verständnis wird jedoch der englische Begriff verwendet werden. Markups gibt es in vielen textverarbeitenden Programmen. In LATEX werden z.B. die verschiedenen Teile eines Dokuments damit gekennzeichnet. Dieser Teil des Skriptums wird z.B. von \chapter{Markup Languages} eingeleitet. Andere Markups zeigen LATEX, wie es den Text setzen soll (kursiv oder fett), wie groß die Seite ist, usw. Jede Textverarbeitung schreibt in ihr Dokumentenformat verschiedene “Auszeichnungen”. Ein “Hello World” Dokument in RTF (Rich Text Format) wird z.B. von Staroffice so geschrieben: {\rtf1\ansi\deff0 {\fonttbl{\f0\froman\fprq2\fcharset0 Times;}} {\colortbl\red0\green0\blue0;\red255\green255\blue255;\red128 \green128\blue128;} {\stylesheet{\s1\snext1 Standard;} } {\info{\comment StarWriter}{\vern5690}}\deftab720 {\*\pgdsctbl {\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1800 \margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Standard;}} \paperh15840\paperw12240\margl1800\margr1800\margt1440\margb1440 \sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800 \margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar \aenddoc\aftnrstcont\aftnstart1\aftnnrlc \pard\plain \s1 Hello World \par } Man sieht, dass der Anteil der Formatierungsanweisungen also durchaus höher sein kann als der Anteil der wirklichen Information. Die meisten Textverarbeitungen verbergen die Markups vor dem Benutzer, sodass dieser nur in seltenen Fällen damit konfrontiert wird (ausser er benutzt LATEX und einen ’normalen’ Texteditor :-). Verallgemeinerte oder beschreibende Auszeichnungen (generalized or descriptive Markups) folgen einer einfachen Philosophie: sie beschreiben nur die Struktur innerhalb des Dokuments. Das Layout des Dokuments wird von anderen Elementen bestimmt; Formatierungsanweisungen sind beispielsweise in style sheets enthalten. Ein Beispiel für eine solche beschreibende Auszeichnung könnte sein (in diesem Fall in SGML-Notation, aber das spielt keine Rolle): <section> <p>this ia a paragraph</p> <p>this ia another paragraph</p> 34 KAPITEL 4. MARKUP LANGUAGES 35 <p>this ia a third paragraph</p> </section> Diese Trennung von Inhalt und Darstellung hat grosse Vorteile: • Konsistenz: Alle Überschriften, Absätze, Fussnoten, usw. haben das gleiche Layout. Muss z.B. die Schriftgrösse einer Überschrift geändert werden, wird nur einmal die “Formatvorlage” geändert und sofort nehmen alle Überschriften die Änderung an. • Flexibilität: Verschiedene “style sheets” passen das Dokument einfachst an verschiedene Bedingungen an. So ist es z.B. einfach, den Inhalt leicht für sehschwache Personen anzubieten, indem die Schriftgrösse einfach auf “riesig” gesetzt wird. Diese Trennung von Inhalt und Layout wird seit langem gepredigt, aber von den Erzeugern von Dokumenten nur selten eingehalten (sei es, wenn es um die Benutzung der Formatvorlage in Winword geht, oder um HTML/CSS). 4.1 SGML Als Internationaler Standard ISO8879 [SGM86] wurde 1986 SGML als ein solches “generalized markup” System verabschiedet. Er ist ein Standard für geräte- und systemunabhängige Beschreibung von Text in elektronischer Form. Wer sich für historische Details über SGML interessiert, sei auf die Webseite http://www.sgmlsource.com/history/index.htm verwiesen. SGML bietet ein Markup-Schema, das flexibel und plattformunabhängig ist. Da der Standard aber gleichzeitig sehr komplexe Möglichkeiten bietet, waren erstens Programme, die SGML verarbeiten konnten, sehr teuer und zweitens setzte sich SGML daher nie wirklich durch. Zusätzlich erlaubte die Definition von SGML verschiedene Dinge, die für Autoren zwar manchmal praktisch waren, aber bei SGML Parsern (☞parse) nur schwer zu implementieren waren (z.B. Weglassen des End-Tags in manchen Fällen). Trotzdem ist SGML immer noch eine wichtige Grundlage, auf der viele heutige Markup languages aufbauen (HTML, XML, ...). Die Markup language definiert, • welche Markups überhaupt erlaubt sind, • welche davon notwendig sind • wie die Markups vom restlichen Text unterschieden werden und • welche Bedeutung die verschiedenen Markups haben. Ein Markup beschreibt zwar die Bedeutung, lässt die Vorgehensweise aber offen. So kennzeichnet das Markup “<p>” einen Absatzbeginn, stellt aber das Verhalten frei (Neue Zeile, einrücken, etc.). Daher kann die Interpretation leicht an unterschiedliche Bedingungen angepasst werden. So kann z.B. ein Programm, das Texte analysiert, alle Literaturangaben einfach weglassen, während ein Formatierungsprogramm diese Angaben sammelt und am Ende des Dokuments anhängt. 4.1.1 Struktur SGML führte das Konzept von Ende-Tags zur Kennzeichnung des Endes für ein Strukturmelement ein. So wird z.B. ein Absatz der mit dem Tag <p> beginnt, immer von dem Ende-Tag </p> beendet. In SGML-Terminologie ist der Absatz ein Element mit dem Element-Typ “p”. Das Problem von SGML war allerdings, dass Ende-Tags in manchen Fällen weggelassen werden konnte. Ein Absatz darf beispielsweise nicht innerhalb eines anderen Absatzes vorkommen und so erlaubt SGML das Weglassen des End-Tags </p> für den Fall, dass das Ende des Absatzes zugleich der Anfang eines neuen Absatzes ist. KAPITEL 4. MARKUP LANGUAGES 36 <p> Hier ist ein Absatz <p> Und hier kommt ein neuer Absatz. Das fehlende End-Tag stoert SGML nicht, da Absaetze nicht verschachtelt sein können und daher ein Start-Tag eindeutig den vorherigen Absatz schliesst. </p> Um verschiedene Strukturen zu erhalten, können Elemente verschachtelt werden: <p> Dies ist ein Absatz, der ausserdem noch ein Zitat (quote) enthaelt <q> dies ist das Zitat </q> hier koennte der Absatz weitergehen... </p> 4.1.2 Attribute Für praktische Anwendungen sind Zusatzinformationen zu Tags oft notwendig. So kann zum Beispiel für eine Notiz ein Typ angegeben werden, der hilft, die Art der Notiz näher zu bestimmen: <note type="warning"> Im Falle eines Notfalles.... </note> Attribute werden also direkt in das jeweilige Tag geschrieben. Nähere Details zu XML-Attributen folgen in Abschnitt XML Attribute auf Seite 49 4.1.3 Entities SGML-Dokumente sollen leicht und ohne Verluste von einer Software/Hardware auf eine andere übertragen werden können. Daher basiert SGML auf ASCII (American Standard Code for Information Interchange). Um Buchstaben anderer Zeichensätze oder binäre Daten (Musik, Bilder, ...) unterstützen zu können, wurden sog. Entities eingeführt. Jede Folge von Zeichen oder Bytes kann als Entity in SGML kodiert werden. So sind z.B. Umlaute oder Buchstaben mit Akzenten als Entities kodiert (z.B. ä für ’ä’). Um z.B. ein Bild in ein SGML-Dokument einzubinden könnte folgender Code benutzt werden: <figure entity="figure1"> “Figure1” ist allerdings kein Filename, sondern ein Entity-Name, der irgendwo am Anfang der Datei deklariert werden muss: <!ENTITY figure1 SYSTEM "fig1.bmp" NDATA BMP> Auf Details dieser Notation wird hier nicht näher eingegangen, da dieser Abschnitt über SGML nur als Überleitung zu anderen Markup-Sprachen wie XML oder HTML verwendet wird. 4.1.4 Dokumententypen SGML und die meisten von SGML abstammenden Markup-Sprachen unterstützen verschiedene Dokumententypen, die formal durch die verschiedenen Bestandteile und deren Struktur beschrieben werden. Diese Information steht in der DTD (Document Type Definition). Ohne eine DTD kann ein SGMLDokument nicht auf seine syntaktische Richtigkeit überprüft werden. Eine DTD legt fest, wie sich Elemente innerhalb eines Dokumentes aufeinander beziehen. Sie stellt auch eine Grammatik (Syntax) für das Dokument und alle seine Elemente zur Verfügung. Ein Dokument, das sich sowohl an die Markup-Spezifikationen als auch an die Regeln hält, die von seiner DTD umrissen KAPITEL 4. MARKUP LANGUAGES 37 werden, wird als gültig bezeichnet (im Gegensatz zu einem wohlgeformten Dokument, das sich nur an die die Markup-Syntaxregeln hält). Details, wie genau eine DTD aufgebaut wird, sind im Abschnitt Document Type Definition auf Seite 50 zu finden. 4.1.5 Probleme von SGML Die Spezifikation von SGML umfasst über 500 Seiten (zum Vergleich: die Spezifikation von XML (eXtensible Markup Language) passt auf 33 Seiten). SGML ist extrem komplex und beinhaltet viele nur selten gebrauchte Features. SGML unterstützt tippfaule Dokumentenersteller, indem es erlaubt, dass Tags, die offensichtlich nutzlos sind (End-Tag, wenn keine Verschachtelung erlaubt), weggelassen werden können. Dies erleichtert das Lesen/Schreiben von SGML-Dokumenten für Menschen, erschwert aber die Interpretation für Computerprogramme. 4.2 HTML 1990 verwendete Tim Berners-Lee1 , britischer Informatiker am Genfer Hochenergieforschungszentrum CERN und der Erfinder des Word-Wide-Webs, einige Tags einer SGML-DTD, die am CERN verwendet wurde, fügte die Möglichkeit, Hyperlinks und Bilder einzubinden dazu, und schon war HTML entstanden. Die anfänglich reine Dokumentenbeschreibungsprache entwickelte sich mangels Alternativen nun auch zu einer Sprache, die das Layout bestimmte. HTML wurde von Netscape und Microsoft ohne Koordination verwässert und erweitert. Browserinkopatibilitäten machten Web-Designern das Leben schwer. Das Layout wurde unter Zuhilfenahme von “schmutzigen” Tricks, selbst unter Ausnutzung von Fehlern der Browser, erzeugt. Die Trennung von Inhalt und Darstellung und die Einhaltung des HTML-Standards wurde immer unwichtiger, sodass es heute kaum noch Seiten im WWW gibt, die dem Grundgedanken des Erfinders von HTML entsprechen. Da das Wissen über HTML schon sehr verbreitet ist, folgt hier nur ein kurzer Überblick über die Grundzüge dieser Seitenbeschreibungssprache. HTML ist eine Sammlung plattformunabhängiger Stile, die die verschiedenen Komponenten eines Dokuments im WWW definieren. Es existiert eine HTML Document Type Definition (DTD), die die erlaubten Tags und Entities definiert. 4.2.1 Tags und Entities Ein Tag in HTML ist mit spitzen Klammern umgeben (z.B. <p> oder <a>) und tritt meist paarweise (Start & End-Tag) auf. Das End-Tag unterscheidet sich durch ersteres durch einen vorgestellten Schrägstrich ’/’. Bei HTML spielt es keine Rolle, ob Tags in Form von Klein- oder Grossbuchstaben geschrieben werden. <H1> ist demnach äquivalent mit <h1>. Einige wenige “Standalone-Tags” haben kein abschliessendes End-Tag (z.B. das Tag für den manuellen Zeilenumbruch <br>). Tags können Attribute haben, die zusätzliche Angaben enthalten. Viele Browser akzeptieren den Attributwert auch ohne doppelte Anführungsstriche: <h4 align=center> HTML - die Sprache des WWW </h4> Dieses Beispiel zeigt eine Überschrift 4. Ordnung, die zentriert auszugeben ist. Hier sieht man auch schon/schön, wie Inhalt (Überschrift) mit Darstellung (zentriert) vermischt wurde. 1 http://www.w3.org/pub/WWW/People/Berners-Lee/ KAPITEL 4. MARKUP LANGUAGES 38 Tags, die ein Browser nicht kennt, werden normalerweise einfach ignoriert. Dies ist zwar praktisch beim Surfen, aber unpraktisch beim Erstellen von Seiten, da eigene Fehler schwerer auffallen. Entities beginnen mit einem kaufmännischem ’&’ und schliessen mit Strichpunkt ’;’. Die UnicodeNummern oder Namen bzw. Abkürzungen für diese Namen bezeichnen die einzelnen Sonderzeichen. Entities werden hauptsächlich verwendet, um (deutsche) Umlaute bzw. akzentuierte Buchstaben und Sonderzeichen zu setzen. Je nach HTML-Version (3.2 oder 4.0) existieren eine ganze Menge davon. Tabelle 4.1 zeigt ein paar davon. Zeichen à á â ã ä å À ... è ... α ... ∀ ... Beschreibung a mit Accent grave a mit Accent acute a mit Circumflex a mit Tilde a mit Umlaut a mit Ring A mit Accent grave Name à á â ã ä å À Unicode à á â ã ä å À ab Version 3.2 3.2 3.2 3.2 3.2 3.2 3.2 e mit Accent grave è è 3.2 alpha α α 4.0 für alle ∀ ∀ 4.0 Tabelle 4.1: Unvollständige Liste der Entities in HTML Eine ziemlich vollständige Liste findet sich im entsprechenden Kapitel von SelfHTML2 . Viele Browser “verstehen” mittlerweile auch z.B. die deutschen Umlaute direkt, dies sollte aber nicht dazu verleiten, sie in eine HTML-Seite einzubauen! 4.2.2 HTML Kommentare HTML beinhaltet die Möglichkeit, an beliebigen Stellen innerhalb einer HTML-Datei Kommentare einzufügen. Kommentare werden von WWW-Browsern ignoriert, d.h. bei der Präsentation nicht angezeigt. Kommentare sind z.B. sinnvoll, um interne Angaben zu Autor und Erstelldatum in einer Datei zu plazieren, um interne Anmerkungen zu bestimmten Textstellen zu machen, oder um verwendete HTML-Befehle intern auszukommentieren. <!-- Dieser Text ist ein Kommentar --> Eine Kommentardeklaration beginnt mit ’<!’ und endet mit ’>. Ein Kommentar selbst beginnt und endet mit ’--’ und darf ’--’ nicht enthalten. D.h. dass verschachtelte Kommentare nicht möglich sind, wohl aber andere HTML-Tags in einem Kommentar. 4.2.3 HTML Mindesttags Ein HTML-Dokument muss mindestens aus folgenden Tags bestehen: <html> <head> <title> Titel des Dokuments </title> </head> <body> 2 http://courses.iicm.edu/mmis/selfhtml80/html/referenz/zeichen.htm KAPITEL 4. MARKUP LANGUAGES 39 Inhalt des Dokuments </body> </html> Der <head>-Teil kann zusätzliche Meta-Informationen enthalten, die z.B. den Autor des Dokuments ausweisen. Diese Information wird vom Browser aber nicht angezeigt (der Inhalt von < title > steht meist in der Titelzeile des Browserfensters). Nur die Teile zwischen dem Start- und dem End-Tag von <body> werden vom Browser interpretiert und angezeigt. Da es nicht sehr sinnvoll ist, im Rahmen dieses Skriptums alle möglichen HTML-Tags herunterzuleiern (dazu gibt es tausende Bücher und Webseiten - siehe auch Abschnitt 4.2.7), werden hier nur einige wichtige Techniken beschrieben, die zum Standardwerkzeug von HTML-Programmierern bzw. HTML-Designer gehören. 4.2.4 HTML Frames Die Erklärungen von SelfHTML sind so gut, dass dem nicht wirklich was hinzuzufügen ist (und es auch nicht viel Sinn macht, es abzuschreiben) siehe SelfHTML Kurs / Frames3 4.2.5 Farben in HTML Die Farbdefinitionen und deren HTML-Tags sind je nach Browser ziemlich unterschiedlich, die Farbkodierung selbst folgt jedoch einem einheitlichen Schema: • durch Angabe der RGB-Werte in Hexadezimalform (RGB = Rot/Grün/Blau) (browserunabhängig und vielseitiger) • durch Angabe eines Farbnamens (Nur 16 Farbnamen standardisiert, der Rest ist browserabhängig!) Beispiel für hexadezimale Kodierungen: <body bgcolor=#808080> <!-- dunkelgrauer Dateihintergrund --> <font color=#990000>roter Text</font> <table bgcolor=#00C0C0> <!-- blaugrüner Tabellenhintergrund --> <hr color=#CC00CC> <!-- violette Trennlinie --> Jede hexadezimale Farbdefinition ist 6stellig und hat das Schema: #XXXXXX. Die ersten beiden Stellen stellen den Rot-Wert der Farbe dar, die zweiten beiden Stellen den Grün-Wert, und die letzten beiden Stellen den Blau-Wert. Die jeweiligen Werte sind natürlich in hexadezimaler Form anzugeben (00 bis FF). Ein Beispiel für die Kodierung mit Farbnamen: <body bgcolor=black> <!-- schwarzer Dateihintergrund --> <font color=yellow>gelber Text</font> <table bgcolor=aqua> <!-- hellblauer Tabellenhintergrund --> <hr color=red> <!-- rote Trennlinie --> 4.2.6 Skripte (Client-seitig) Normale HTML-Seiten sind, sobald sie einmal beim Client angekommen sind, rein statische Dokumente. D.h. es ist wohl möglich, sie auf der Server-Seite dynamisch zu erzeugen, im Client-Browser können sie aber nicht mehr verändert werden. Oft ist es jedoch sinnvoll, bestimmte Dinge beim Client zu starten. Es ist beispielsweise viel effizienter, eine einfache Überprüfung von Formularfeldern (z.B. besteht die Postleitzahl nur aus Ziffern?) direkt beim Client durchzuführen, als das ausgefüllte Formular zum Server, und bei einem Fehler wieder zum Client zurück zu schicken. 3 http://courses.iicm.edu/mmis/selfhtml80/html/frames/definieren.htm KAPITEL 4. MARKUP LANGUAGES 40 Diese Skripte werden direkt in den HTML-Code eingebettet und vom Browser ausgeführt (interpretiert). Ein einfaches Beispiel4 zeigt eine Interaktion zwischen dem User und dem HTML-Dokument und eine aktive Veränderung des Dokumentes durch die Eingabe des Benutzers: <html> <head> <title>Text des Titels</title> <script language="JavaScript"> <!-UserName = window.prompt("Dein Vorname:","Vorname"); --> </script> </head> <body> <script language="JavaScript"> <!-document.write("<h1>Hallo " + UserName + "!</h1>"); --> </script> </body> </html> Das daraus resultierende HTML-Dokument enthält (in meinem Fall) die Zeile ’<h1>Hallo Christof</h1>’. Mit <script> leitet man einen Skript-Bereich ein. Innerhalb des einleitenden <script>-Tags gibt man mit dem Attribut language an, welche Script-Sprache man innerhalb des Bereichs benutzen möchten. Die gängigste Angabe ist dabei language="JavaScript". Andere denkbare Sprachangaben sind beispielsweise JScript oder VBScript (beide Microsoft). Auch hier gehört es zum guten Ton, dem Betrachter der Webseiten eine “Skript-freie” Zone anzubieten. Dies geschieht mit Hilfe des <noscript>-Tags. Manche Surfer benutzen Web-Browser, die keine Skripte ausführen können, andere verbieten aus Sicherheits- oder anderen Gründen die Ausführung von aktiven Skripten in ihrem Browser. Eine weiterführende Behandlung der Skript-Sprachen würde den Rahmen dieser Unterlagen sprengen. Es sei hier nur kurz auf das Kapitel über JavaScript von SelfHTML5 verwiesen. 4.2.7 Weiterführende Informationen über HTML Als ausführlicher HTML-Kurs mit allen Tipps, Tricks und Features bietet sich SelfHTML6 an. Um den Internetverkehr möglichst gering zu halten und gleichzeitig die Zugriffsgeschwindigkeit zu erhöhen, liegt der gesamte Kurs unter http://courses.iicm.edu/mmis/selfhtml80/ bzw. unter ftp://courses. iicm.edu/courses/mmis/selfhtml80.zip als Zip-Datei (7.1MB). 4.3 Style Sheets Style-Sheets sind eine unmittelbare Ergänzung zu HTML7 . Es handelt sich dabei um eine Sprache zur Definition von Formateigenschaften einzelner HTML-Befehle. Mit Hilfe von Style-Sheets kann man beispielsweise bestimmen, dass Überschriften erster Ordnung eine Schriftgrösse von 18 Punkt haben, in der Schriftart Helvetica, aber nicht fett erscheinen, und mit einem Abstand von 1,75 Zentimeter zum darauffolgenden Absatz versehen werden. Angaben dieser Art sind mit herkömmlichem HTML nicht möglich. Das ist aber nur der Anfang. Style-Sheets bieten noch viel mehr Möglichkeiten. So kann man beliebige Bereiche einer HTML-Datei mit einer eigenen Hintergrundfarbe, einem eigenen Hintergrundbild (Wallpaper) oder mit diversen Rahmen versehen. Man kann beliebige Elemente, sei es eine Grafik, ein Textabsatz, eine Tabelle oder ein Bereich aus mehreren solcher Elemente, pixelgenau im Anzeigefenster des WWW-Browsers positionieren. Für Drucklayouts stehen Befehle zur Definition eines Seitenlayouts bereit. Für die akustische Wiedergabe von HTML-Dateien gibt es ein ganzes Arsenal an Befehlen, um 4 http://courses.iicm.edu/mmis/selfhtml80/javascript/beispiele/formulareingaben.htm 5 http://courses.iicm.edu/mmis/selfhtml80/javascript/index.htm 6 http://www.selfhtml.com 7 bzw. zu SGML. Da SGML Style Sheets aber wenig Bedeutung haben, werden hier nur HTML Style Sheets behandelt. KAPITEL 4. MARKUP LANGUAGES 41 künstliche Sprachausgabesysteme feinzusteuern. Spezielle Filter schliesslich, die derzeit allerdings noch rein Microsoft-spezifisch sind, erlauben Grafik-Effekte bei normalen Texten, die aus Grafikprogrammen wie PhotoShop bekannt sind. Ein weiteres wichtiges Leistungsmerkmal von Style-Sheets ist es, dass man Style-Definitionen zentral angeben kann. So kann man beispielsweise im Kopf einer HTML-Datei zentrale Definitionen zum Aussehen einer Tabellenzelle notieren. Alle Tabellenzellen der entsprechenden HTML-Datei erhalten dann die Formateigenschaften, die einmal zentral definiert sind. Das spart Kodierarbeit und macht die HTMLDateien kleiner. Man kann die Style-Sheet-Definitionen sogar in separaten Dateien notieren. Solche Style-Sheet-Dateien kann man in beliebig vielen HTML-Dateien referenzieren. Auf diese Weise können für grosse Projekte einheitliche Layouts entworfen werden. Ein paar kleine Änderungen in einer zentralen Style-Sheet-Datei bewirken so für hunderte von HTML-Dateien ein neues Layout. Style-Sheets unterstützen also erstens die professionelle Gestaltung beim Web-Design, und zweitens helfen sie beim Corporate Design für grosse Projekte oder für firmenspezifische Layouts. Es gibt mehrere Sprachen zum Definieren von Style-Sheets (siehe <style type=’’style sheet language’’> in unterem Beispiel). Die bekannteste ist CSS (Cascaded Style Sheet). Ein erstes Beispiel zeigt, wie Style Angaben in einem HTML-Dokument angegeben werden können. <head> <title>Text des Titels</title> <style type="text/css"> <!-/* eine Style-Angabe in CSS */ body { margin:2cm } h1 { font-size:24pt } --> </style> <style type="text/javascript"> <!-/* eine Style-Angabe in der Netscape eigenen JSSS-Sprache */ with(tags.H2) { color = "red"; fontSize = "16pt"; marginTop = "2cm"; } --> </style> </head> Wie man sieht, kochen auch hier die grossen Browser-Hersteller ihre eigenen Süppchen. Das W3C hat bisher zwei Standards verabschiedet: CSS1 und CSS2 Netscape 4.x interpretiert fast den vollen Sprachumfang der CSS-Version 1.0 und einen Teil der Befehle der CSS-Version 2.0. Der MS Internet Explorer kennt die CSS-Version 1.0 bereits seit seiner Produktversion 3.0. In der Version 4.0 interpretiert er einen Teil der CSS-Version 2.0 und einige spezielle, von Microsoft eingeführte Style-Sheet-Angaben. Daraus ergibt sich auch, dass der Einsatz von CSS gut überlegt werden muss, da dies zwar einige Möglichkeiten bietet, Web-Seiten “aufzupeppen”, ein Benutzer dessen Browser diese Features nicht unterstützt, wird dann allerdings evtl. gelangweilt oder enttäuscht sein. 4.3.1 Einbinden von Style Sheet Definitionen Die Style Informationen können auf verschiedene Arten einem HTML-Dokument zugewiesen werden: • innerhalb des HTML-Dokumentes • in einer extra-Datei Zweiteres hat den unschätzbaren Vorteil, dass sich eine Änderung in einer Datei sofort auf alle einbindenden Dokumente auswirkt. Werden beide Möglichkeiten genutzt, überschreiben die Definitionen in einem HTML-Dokument die Definitionen der externen Datei. So kann man globale Einstellungen treffen, die aber noch je nach Dokument leicht angepasst werden können. KAPITEL 4. MARKUP LANGUAGES 42 Ein Beispiel für die Definition innerhalb eines HTML-Dokuments: <html> <head> <title>Titel der Datei</title> <style type="text/css"> <!-/* ... Style-Sheet-Angaben ... */ --> </style> </head> <body> </body> </html> Mit Hilfe des <link>-Tags kann eine externe Datei als Style-Sheet eingebunden werden: <link rel=’’stylesheet’’ type=’’text/css’’ href=’’formate.css’’> Eine zweite Möglichkeit bietet die selbe Funktionalität, wird aber nicht von allen Browsern unterstützt: ... <style type="text/css"> <!-@import url(formate.css); //--> </style> ... Weitere Details entnehme man bitte dem entsprechenden Kapitel von SelfHTML8 . 4.3.2 Unterschiedliche Ausgabemedien Style Sheets unterstützen unterschiedliche Ausgabemedien. Je nach verwendetem Client, ist es möglich, verschiedene Formatierungen zu erstellen. Diese drei Definitionen im Header des HTML-Dokuments ermöglichen Style-Definitionen aus unterschiedlichen Dateien zu laden: <link rel=stylesheet media="screen" href="website.css"> <link rel=stylesheet media="print" href="printer.css"> <link rel=stylesheet media="aural" href="speaker.css"> bzw. <style type="text/css"> <!-@import url(druck.css) print; @import url(multimedia.css) projection, tv; --> </style> bzw. direkt in ein externes Style File: /* allgemeines fuer alle */ @media print { /* und hier nur die Style Angaben fuer den Druck */ } Mögliche Medien sind: • screen für Style-Sheets, die bei der Bildschirmpräsentation wirksam sein sollen. • print für Style-Sheets, die bei der Ausgabe über Drucker wirksam sein sollen. Beispiele finden sich unter – http://www.telematik.edu/xml/index.xml?style=css: Druckansicht ohne Navigationsleiste 8 http://courses.iicm.edu/mmis/selfhtml80/css/index.htm KAPITEL 4. MARKUP LANGUAGES 43 – http://courses.iicm.edu/mmis/selfhtml80/css/eigenschaften/printlayouts.htm#size: Ausdruck im Querformat • aural für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei per Sprachausgabe über Lautsprecher erfolgt. • projection für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei per Diaprojektor oder Overhead-Projektor erfolgt. Ein Beispiel findet sich unter http://www.opera.com/ support/operashow/. • braille für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei über taktile Braille-Medien erfolgt. • tv für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei über Fernsehtechnik erfolgt. • handheld für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei über Handys, Palmtops oder ähnliche Geräte mit kleinem Display erfolgt. • all für Style-Sheets, die in allen Medientypen wirksam sein sollen. Zur Zeit werden diese verschiedenen Medien allerdings nicht von allen Browsern unterstützt (CSS2). Eine gute Testmöglichkeit bietet der kleine, aber feine Browser Opera9 , da er z.B. eine Druckvorschau (Media-Typ print) und einen full-screen Modus (Media-Typ projection) bietet. 4.3.3 Format-Definitionen für HTML-Tags Es ist möglich, verschiedene Style-Definitionen für verschiedene HTML-Tags zu definieren. Diese StyleAngaben werden dann vom Browser immer verwendet, um das HTML-Tag darzustellen. Folgendes Beispiel definiert einen Style für eine Überschrift 1. Ordnung (<h1>) und einen für Text eines Absatzes (<p>) und einen Listeneintrag (< li >): <style type="text/css"> <!-h1 { font-size:48pt; color:#FF0000; font-style:italic; } p,li { font-size:12pt; line-height:14pt; font-family:Helvetica,Arial; letter-spacing:0.2mm; word-spacing:0.8mm; } --> </style> Hier sieht man auch, dass Format-Definitionen für mehrere Tags auf einmal deklariert werden können. Zusätzlich bieten Format-Unterklassen weitere Möglichkeiten, verschiedene Formatierungen auf gleiche HTML-Tags anzuwenden. Das Beispiel von SelfHTML zeigt auf http://courses.iicm.edu/mmis/ selfhtml80/css/formate/zentrale.htm, wie Unterklassen definiert und verwendet werden. Das Attribut “class”, das die Klassenzugehörigkeit bestimmt, ist ein sog. Universalattribut und kann bei allen HTML-Tags verwendet werden. Das folgende Beispiel zeigt auch, wie man ein Navigationsmenu für den Ausdruck (Medientyp “print”) ausblenden kann. <html> <head> <title>Titel der Datei</title> <style type="text/css"> <!-p.normal { font-size:10pt; color:black; } p.gross { font-size:12pt; color:black; } p.klein { font-size:8pt; color:black; } all.rot { color:red; } .blau { color:blue; } /* do not show menu on print: */ 9 http://www.opera.com KAPITEL 4. MARKUP LANGUAGES 44 @media print { .menu {display: none;} } --> </style> </head> <body> <p class="menu">Navigations Menu: etc.</p> <p class="normal">Normaler Textabsatz mit Schrift 10 Punkt schwarz</p> <p class="gross">Textabsatz mit Schrift 12 Punkt schwarz</p> <p class="klein">Textabsatz mit Schrift 8 Punkt schwarz</p> <p class="rot">roter Textabsatz</p> <address class="rot">roter Absatz für Adressen</address> <blockquote class="blau">blaues Zitat</blockquote> </body> </html> Eine Unterklasse von all gilt für alle Tags (das Wort all kann auch weggelassen werden). Will man das Aussehen eines Tags von der Verschachtelung der HTML-Tags abhängig machen (Wie schaut ein kursiver (<i>) Text aus, wenn er in einer Überschrift 1. Ordnung (<h1>) verwendet wird?), verwendet man folgende Syntax: <html> <head> <title>Titel der Datei</title> <style type="text/css"> <!-h1 { color:red; } h1 i { color:blue; font-weight:normal; } --> </style> </head> <body> <h1>Wir lernen <i>Style-Sheets</i></h1> <p>Wir lernen <i>Style-Sheets</i></p> </body> </html> Es lassen sich aber auch Formatdefinitionen deklarieren, die keinem bestimmten Tag zugewiesen sind: <html> <head> <title>Titel der Datei</title> <style type="text/css"> <!-p,li,dd,dt,blockquote { color:red;font-family:Times; margin-top:1cm; margin-left:1cm; } #fettkursiv { font-weight:bold; font-style:italic; } --> </style> </head> <body> <p id="fettkursiv"> Extra-Formatierung </p> <p> Das ist formatierter Text mit <em id="fettkursiv"> Extra-Formatierung</em> </p> </body> </html> Diese unabhängigen Definitionen können mit dem Universalattribut “id” jedem HTML-Tag zugewiesen werden. Diese Ids müssen eindeutig für das ganze Dokument sein (im Gegensatz zu den Definitionen per “class” Attribut, wo ein Klassenname für mehrere Tags auch verschiedene Formatierungen hervorrufen kann). Es gibt auch Formatierungen, die nicht von HTML-Tags abhängig sind, bzw. die sich nicht eindeutig durch ein Tag ausdrücken lassen. Diese heissen “Pseudo”-Formate. Ein Beispiel ist ein Hyperlink, der verschiedene Zustände haben kann: <style type="text/css"> KAPITEL 4. MARKUP LANGUAGES 45 a:link { color:#FF0000; font-weight:bold } a:visited { color:#990000; } a:active { color:#0000FF; font-style:italic } </style> Die Schlüsselworte sind festdefiniert und können nicht frei gewählt werden. Seit der Version 2.0 der Cascaded Style Sheets gibt es auch die Möglichkeit, Styles abhängig von verwendeten Attributen zu erstellen: <html> <head> <title>Titel der Datei</title> <style type="text/css"> <!-p { font-weight:bold; font-family:Tahoma,sans-serif; font-size:14pt; } p[align] { color:red; } p[align=center] { color:blue; text-align:left; } td[abbr~=Berlin] { background-color:#FFFF00 } *[lang|=en] { background-color:#FF0000; color:#FFFFFF; } --> </style> </head> <body> <p>Das ist ein Textabsatz, ein stinknormaler.</p> <p align="right">Das ist ein Textabsatz, rechts ausgerichtet.</p> <p align="center">Das ist ein Textabsatz, zentriert? Wirklich zentriert?</p> <table border="1"><tr> <th>Berlin</th> <th>Hamburg</th> </tr><tr> <td abbr="Es folgen Infos zu Berlin">Eine Menge Inhalt zu Berlin</td> <td abbr="Es folgen Infos zu Hamburg">Eine Menge Inhalt zu Hamburg</td> </tr></table> <p> Ein Textabsatz <span lang="fr">avec</span> Text <span lang="en">about</span> einen <span lang="en-US"> English man in New York</span> </p> </body> </html> Der Hauptnutzen von Style Sheets ist eigentlich die zentrale Definition von Formatangaben. Ab und zu ist es allerdings notwendig, einem HTML-Tag direkt eine Formatangabe ohne zentrale Deklaration zuzuweisen. Mit Hilfe des style-Attributes ist dies bei allen HTML-Tags möglich: <h1 style="color:red;font-size:36pt;"> Heading 1. order </h1> Beliebige Textabschnitte lassen sich mit dem <span>-Tag formatieren. Dieses Tag hat keine eigene Bedeutung und dient nur zum Definieren von Style-Sheet-Angaben. Es eignet sich besonders dazu, um innerhalb des Geltungsbereichs anderer HTML-Tags einzelne Zeichen oder Wörter anders zu formatieren: ... <body> <h1> Überschrift 1. Ordnung mit <span style="color:blue;"> blauem Text </span> </h1> <p> Normaler Textabsatz mit <span style="font-style:italic; color:red;"> rotem kursiven Text </span> </p> </body> ... Ähnlich kann das <div>-Tag verwendet werden. Im Unterschied zu <span> erzwingt <div> aber eine neue Textzeile. KAPITEL 4. MARKUP LANGUAGES 4.3.4 46 CSS Eigenschaften Hier soll keine komplette Liste aller Dinge, die man mit CSS beeinflussen kann, stehen, da das den Rahmen dieses Skriptes sprengen würde. Eine vollständigere Liste findet man wieder mal im Kapitel “Style-Sheet-Angaben” von SelfHTML 10 . Ein Grossteil (vor allem von CSS1) der Formatierungen bezieht sich auf die verwendeten Schriften. Es können fast alle Eigenschaften bestimmt/geändert werden: • Schriftgrösse (font-size) • Schriftart (font-family) • Schriftstil (font-style) • Schriftvariante (font-variant) • Schriftgewicht (font-weight) • Wortabstand (word-spacing) • Zeichenabstand (letter-spacing) • Textdekoration (text-decoration) • Textfarbe (color) • Textschatten (text-shadow) (CSS2) Ausserdem ist es möglich, eigene Schriften in eine Web-Seite einzubetten, bzw. diese nachzuladen, falls sie auf dem Computer nicht existiert (CSS2): <style type="text/css"> @font-face { font-family:Kino; src:local(Kino MT), url(kino.ttf) format(TrueType); } @font-face { font-family:MeineArt; url(http://www.xy.de/cgi-bin/myfont.pl) format(intellifont) } </style> Die erste Deklaration erwartet eine Schrift der “Kino”-Familie. Falls diese Schrift lokal nicht existiert, wird sie von der angegebenen Url geladen. Die zweite Deklaration lädt eine Schrift von der angegebenen Url und signalisiert, dass diese im Format ’intellifont” ist. Ein Problem mit diesen Angaben stellen natürlich die verschiedenen Schriftformate dar. Ein Macintosh kann mit einer TrueType-Schrift nicht viel anfangen, braucht sie daher erst garnicht herunterzuladen, kann sie danach natürlich aber auch nicht darstellen. Weitere Formatangaben beziehen sich auf die Positionierung der Elemente (Abstand zum Rand, Texteinrückung, Textausrichtung, etc.) und ermöglichen z.T. eine pixelgenaue Positionierung am Bildschirm. Eine ganz andere Art von Formatierung beschreiben die Attribute für die Sprachausgabe. Aus dieser in CSS2 eingeführte Möglichkeit, HTML-Dokumente z.B. für Blinde als gesprochene Worte auszugeben, folgen eine ganze Reihe von Einstellungen (siehe auch http://courses.iicm.edu/mmis/selfhtml80/ css/eigenschaften/sprachausgabe.htm): • Lautstärke (volume) • Aussprache (speak) • Pause vor/nach einem Element (pause) • Hintergrund-Sound (play-during) 10 http://courses.iicm.edu/mmis/selfhtml80/css/eigenschaften/index.htm KAPITEL 4. MARKUP LANGUAGES 47 • Raum-Effekt links/rechts/vorne/hinten (azimuth) • Sprechgeschwindigkeit (speech-rate) • Sprechertyp (voice-family) • etc. Es wäre nicht Microsoft, wenn es nicht auch in Cascaded Style Sheets eine ganze Reihe von eigenen Erweiterungen eingebaut hat, die hier nur kurz erwähnt werden sollen: • Kontrolle über den Cursor • Bild-Filter – Vordergrund/Hintergrund verschmelzen - filter:Alpha() – Verwisch-Effekt - filter:Blur() – Transparenzfarbe - filter:Chroma() – Schattenwurf - filter:DropShadow() – Spiegeln - filter:FlipH() und filter:FlipV() – Transparenzmaske filter:Mask() – etc. Eine vollständigere Liste und deren Beschreibungen sind bitte unter http://courses.iicm.edu/mmis/ selfhtml80/css/eigenschaften/filter.htm nachzulesen. Es ist aber zu beachten, dass diese Features nur vom Internet Explorer >4.0 unterstützt werden, und eine Verwendung derselben dadurch automatisch viele Web-Surfer ausschliesst. 4.4 eXtensible Markup Language (XML) Die erweiterbare Markup-Sprache XML ist ein Dokumentenverarbeitungsstandard, der vom World-WideWeb-Konsortium (W3C)11 vorgeschlagen wurde. Obwohl die genauen Spezifikationen noch nicht alle fertiggestellt sind, erwarten viele, dass XML und die mit XML verwandten Technologien HTML ersetzen werden. 4.4.1 Warum XML und nicht HTML? Die ursprüngliche Absicht von HTML war, dass Elemente (Tags) verwendet werden, um Information logisch auszuzeichnen (nach ihrer Bedeutung) ohne Rücksicht darauf zu nehmen, wie ein Browser diese Information präsentiert. In anderen Worten: Titel, Überschriften, hervorgehobener Text oder die Kontaktadresse des Autors sollten in die Elemente < title >, <h1>, <em> (oder <strong>) und <address> gestellt werden. Werden in die Information Elemente wie <font> oder <i> eingemischt um ein gutes Layout zu bekommen, wird es sehr schwierig, die Information bestmöglich an die Gegebenheiten des Benutzers anzupassen. Der Grund, warum am Besten der Browser entscheidet, wie er z.B. Titel und Überschriften präsentiert, ist, weil er am meisten über die Vorlieben und die Umgebung des Benutzers weiss und daher die Layoutentscheidungen darauf aufbauen kann. Da der Autor der Informationen den Benutzer nicht kennt, kann er natürlich keine Rücksicht darauf nehmen. Beispielsweise kann so ein Benutzer, der schlecht sieht, eine grössere Schrift benutzen. Leider haben Browserhersteller dieses Konzept entweder nicht verstanden oder beschlossen, es einfach zu ignorieren und haben so Standards, die Präsentation und Inhalt zu trennen versuchen, einfach ignoriert. Im Gegenteil - sie erfanden eigene Elemente und Attribute, die nur darauf abzielten, die Präsentation zu 11 http://www.w3c.org KAPITEL 4. MARKUP LANGUAGES 48 bestimmen (wie <font>, <center>, <bgcolor> etc.). Zusätzlich wurden existierende semantische Tags für Layoutinformationen missbraucht. So verwendete beispielsweise der HTML-Editor Netscape Gold das Tag <ul>, um Text einzurücken und nicht nur für Listenelemente. Dies ist aber nur ein Teil des Problems. Will man unterschiedlichste Informationen sehr präzise beschreiben, werden viele unterschiedliche Elemente benötigt, die es in HTML nicht gibt. Ein Chemiker braucht z.B. viele Elemente, um chemische Formeln zu beschreiben. Ein Maschinenbauer kann damit aber rein garnichts anfangen. Statt dessen würde er Elemente verwenden, die Maschinenteile beschreiben. Ein weiteres Problem ist, dass HTML nur sehr wenige Regeln definiert, wie Elemente verschachtelt werden dürfen. Es macht im Allgemeinen wenig Sinn, eine Überschrift <h2> innerhalb einer Überschrift <h1> zu verwenden. HTML verbietet dies aber nicht. 1996 begann das W3C einen Standard zu entwickeln, der diese Probleme beseitigen soll. Die XMLWorking Group definierte drei Phasen: 1. Definition eines Standards für die Erstellung von Markup-Sprachen. 2. Entwicklung eines Standards, um Relationen in diesem Markup-Sprachen zu definieren. 3. Entwicklung eines Standards, um die Präsentation dieser Dokumente zu spezifizieren. 4.4.2 Aufbau von XML XML ist eine vereinfachte Form von SGML, die deren Nachteile vermeiden will, die Vorteile jedoch auszunutzen versucht. Die XML-Working Group sieht XML eher als “SGML light” als “HTML++”. XML erlaubt die Definition eigener Markup-Sprachen und daher auch höchstmögliche Präzision, um Informationen kodieren zu können. Dies erlaubt auch Programmen, die diese Informationen verarbeiten, diese besser zu “verstehen”. Als Beispiel könnte ein Dokument dienen, das Kochrezepte enthält und einer DTD entspricht, die es erlaubt, die verschiedenen Zutaten und Mengen zu definieren. Dieses Dokument kann so von einem Programm verarbeitet werden, das aus den Zutaten im Kühlschrank alle möglichen Gerichte heraussucht. Sind zusätzliche Informationen über die Kalorien oder die Preise der Zutaten enthalten, können weitere Kriterien angewandt werden, was zu Mittag am Tisch stehen soll. Dies ist nur möglich, wenn die Applikation die Bedeutung der Informationen wirklich “versteht”. Das folgende Beispiel zeigt den Unterschied zwischen einer Markup-Sprache, die nur den Inhalt beschreibt und einer, die es erlaubt, den Inhalt zu interpretieren. In HTML könnte ein Eintrag einer Adressliste so geschrieben werden: <p> <strong>Christof Dallermassl</strong><br> email:<a href="mailto:cdaller@iicm.edu">cdaller@iicm.edu</a><br> <p> Inffeldg. 16c<br> 8010 Graz<br> Tel: +43-316/873-5636<br> Tel: +43-316/873-5699<br> </p> </p> Die gleiche Information in XML: <person> <name>Dallermassl Christof</name> <email>cdaller@iicm.edu</email> <address> <street>Inffeldg. 16c</street> <town>8010 Graz</town> <tel note="office">+43-316/873-5636</tel> <tel note="fax">+43-316/873-5699</tel> </address> </person> Der Unterschied besteht nun darin, dass die XML-Beschreibung des Eintrags z.B. von einer Suchmaschine, “verstanden” werden kann und somit die Suche nach einer Adresse einfacher und besser beantworten KAPITEL 4. MARKUP LANGUAGES 49 kann, während sie bei der HTML-Version nur Anhand der Worte vermuten kann, dass es sich um eine Adressbeschreibung handelt. Voraussetzung für das richtige Interpretieren ist allerdings das Kennen der verwendeten XML-Elemente. XML Syntax Bevor hier weiter auf die Verwendung und Details von XML eingegangen wird, soll noch kurz die Syntax erklärt werden. Die Syntax von XML ist sehr ähnlich zu HTML und SGML, wobei es trotzdem kleine, aber feine Unterschiede gibt: • Alle Elemente haben ein End-Tag. Das Weglassen von End-Tags aus Faulheit oder weil es sowieso implizit geschlossen wird (<p> in SGML), ist in XML verboten. • Elemente, die keinen Inhalt haben, können (müssen aber nicht) verkürzt geschrieben werden: <img src=’’filename.jpg’’/> anstatt <img src=’’filename.jpg’’></img>. Man beachte den Schrägstrich (’/’) vor der schliessenden Spitzklammer! • Bei Element- und Attributnamen wird zwischen Gross- und Kleinschreibung unterschieden. • Alle Elemente müssen richtig verschachtelt sein. HTML bzw. die Browser erlauben ja zum Teil Konstrukte wie <b><i>dieser Text ist fett und kursiv, aber falsch verschachtelt!</b></i> • Attributwerte müssen immer zwischen Anführungsstrichen stehen. Elemente wie <img src=filename.jpg> sind ungültig und werden vom XML-Parser nicht akzeptiert. Richtig wäre <img src=’’filename.jpg’’>. • Element oder Attributnamen dürfen nicht mit “xml” beginnen, weder in Gross- noch in Kleinschreibung. • Doppelpunkte sind in Elementnamen nur erlaubt, um Namensräume zu vergeben (siehe Abschnitt Namespaces auf Seite 55). • Elementnamen dürfen keine Leerzeichen enthalten. Zusätzlich dürfen sie nicht mit Ziffern beginnen. Dafür sind Umlaute oder Zeichen aus anderen Alphabeten erlaubt (aber nicht sehr empfehlenswert). XML Attribute XML Attribute werden normalerweise verwendet, um XML-Elemente näher zu beschreiben oder Zusatzinformationen zu den Elementen zu liefern. Beim aus HTML bekannten Tag <img src=’’filename.jpg’’> ist src ein Attribut zum <img>-Element und liefert die Zusatzinformation, welches Bild eingebunden werden soll. Folgendes Beispiel zeigt nicht nur den Gebrauch von Attributen, sondern auch das Dilemma, in dem der Autor von XML-Dokumenten ist, da er sich entscheiden muss, ob eine gewisse Information eher als eigenes XML-Element oder lieber als Attribute bei einem XML-Element stehen soll. Gebrauch eines Attributes, um die Abteilung (department) einer Person anzugeben: <person department="marketing"> <firstname>Anna</firstname> <lastname>Smith</lastname> </person> Verwendung eines eigenen Elements für den gleichen Zweck: <person> <department>marketing</department> <firstname>Anna</firstname> <lastname>Smith</lastname> </person> KAPITEL 4. MARKUP LANGUAGES 50 Es gibt keine fixen Regeln, wann Attribute und wann eigene Elemente verwendet werden sollen. Die Erfahrung zeigt jedoch, dass Attribute eher vermieden werden sollen: • Attribute können keine Mehrfach-Werte annehmen. Es ist jedoch durchaus erlaubt, mehrmals ein Element zu verwenden (z.B. wenn eine Person mehreren Abteilungen zugeordnet ist.). • Attribute sind nicht erweiterbar (für zukünftigen Gebrauch). Beispielsweise kann man das Element <adresse> später durch weitere Elemente wie <strasse>, <ort>, . . . erweitern und somit genauer beschreiben. • Attribute können keine Strukturen beschreiben (wie Kind-Elemente es können). • Attribut-Werte sind schwerer zu überprüfen (gegen eine DTD). Manche Informationen sind trotzdem (jede Regel hat ihre Ausnahmen) gut (besser?) in Attributen aufgehoben( z.B. eindeutige Identifikation von Elementen): <?xml version="1.0"?> <messages> <note id="501"> bla, bla, bla,... </note> <note id="502"> und so weiter und so weiter.... </note> </messages> Entities Da es nicht wirklich grossartige Unterschiede von XML-Entities zu SGML-Entities gibt, sei hier nur auf Abschnitt 4.1.3 verwiesen. Document Type Definition Da es keinen einheitlichen Standard gibt, welche XML-Elemente existieren (das widerspräche ja dem Sinn von XML), kann sich jeder seine eigene Markup Sprache selbst definieren. Eine Möglichkeit, dies zu tun, ist das Erzeugen einer Document Type Definition (DTD). Eine eigene Markup-Sprache zu definieren ist ziemlich einfach. Das folgende Beispiel zeigt ein XML Dokument, das den Inhalt und den logischen Aufbau eines Buches beschreibt. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE book SYSTEM "book.dtd"> <book> <info> this is some info about this book </info> <date> 2000-10-31 </date> <author> <name>Christof Dallermassl</name> <email>cdaller@iicm.edu</email> </author> <chapter name="the chapter heading"> <section name="Section one"> <image src="image1.jpg"/> <para>some text abtout Ted Nelson .....</para> <para>some info about XML .....</para> </section> <section name="Section two"> .... </section> </chapter> </book> Die Deklaration (<?xml .... ?>) hält mehrere Attribute, die generell ein XML-Dokument beschreiben. Es soll nicht näher auf einzelne Details eingegangen werden, da dies den Rahmen sprengen würde. Trotzdem KAPITEL 4. MARKUP LANGUAGES 51 ein paar Anmerkungen: Das encoding Attribut gibt an, mit welchem Zeichensatz das XML-Dokument erstellt worden ist. Wird hier z.B. ISO-8859-1 verwendet, können auch Umlaute verwendet werden. Ist der Wert des Attributes standalone ’no’, muss der Parser weitere XML-Dokumente (z.B. eine DTD) laden, um ein gültiges XML-Dokument zu erhalten (bzw. es kann auch eine DTD in der <!DOCTYPE>Instruktion deklariert werden). Die <!DOCTYPE>-Instruktion bezeichnet nun den Typ des Dokuments. Das Schlüsselwort SYSTEM bedeutet, dass die DTD nur für die private Nutzung bestimmt ist. Im Gegensatz zu PUBLIC, bei dem die DTD für eine weitverbreitete Nutzung gedacht ist. Welche Elemente nun in der XML-Datei vorkommen dürfen, bestimmt die zugehörige Document Type Definition. Normaler- und sinnvollerweise wird diese in einer externen Datei definiert (hier book.dtd), es ist aber auch möglich, die DTD direkt in der XML-Datei anzugeben. <?xml version="1.0"?> <!ELEMENT book (info, author, chapter+, date?)> <!ELEMENT author (name, email?)> <!ELEMENT chapter (section+, para*)> <!ELEMENT section (para+, image*)> <!ELEMENT image (EMPTY)> <!ELEMENT info (#PCDATA)> <!ELEMENT date (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT para (#PCDATA)> <![ IGNORE [ dieser Teil wird ignoriert! ]]> <!ATTLIST chapter <!ATTLIST section <!ATTLIST image name CDATA #IMPLIED> name CDATA #IMPLIED> src CDATA #REQUIRED> <!ELEMENT name content> definiert, wie das Markup heisst (name) und welche Inhalte (content) es haben darf. Das angehängte ’+’ bedeutet ’ein- oder mehrmal’, das ’?’ heisst ’null- oder einmal’ und ’*’ sagt ’null- oder mehrmal’. Ist kein Zeichen angegeben, darf das Element genau einmal vorkommen. #PCDATA steht für normale Buchstaben (Parsed Character Data), die vom XML-Parser geparsed werden (im Gegenteil zu #CDATA, die nicht geparsed werden). Die Deklaration der gültigen/notwendigen Attribute ist folgendermassen: <!ATTLIST element-name attribute-name attribute-type default-value> wobei der Attributtyp #IMPLIED angibt, dass das Argument auch weggelassen werden kann (im Gegenteil zu #REQUIRED). Da hier die genaue Beschreibung aller möglichen Variationen den Rahmen sprengen würde, sei hier auf die Webseite von xml10112 verwiesen, die mehr Einzelheiten auflistet. Ist es unbedingt nötig, eine DTD für ein XML-Dokument zu schreiben? Nein, nicht unbedingt, aber es ist sehr empfehlenswert, da es ansonsten nicht möglich ist, die high-level Syntax bzw. Semantik des Dokuments auf seine Richtigkeit zu überprüfen. Die low-level Syntax wird ja durch die XML-Regeln definiert, aber welche Elemente wie verschachtelt sein können und welche Attribut(werte) sie enthalten dürfen, steht nur in der DTD (Unterschied zwischen valid und wellformed ). Für einen ersten Test ist es allerdings nicht notwendig, eine DTD zu schreiben. Schema Definitionen Traditionellerweise werden XML-Sprachen mittels DTDs (siehe Abschnitt Document Type Definition auf Seite 50) definiert. Diese haben aber einige Nachteile: bestimmte syntaktische Beschränkungen sind mit DTDs nicht möglich, die Anzahl der Datentypen ist sehr beschränkt, die Syntax folgt eigenen Regeln und DTDs unterstützen keine Namespaces (siehe Abschnitt Namespaces auf Seite 55). 12 http://www.xml101.com/dtd/ KAPITEL 4. MARKUP LANGUAGES 52 Schemas13 (oder Schemata) sind als Ersatz für DTDs gedacht und sind selbst im XML-Format geschrieben. Das erleichtert die Implementation von Parsern. Die grossen Vorteile von Schemas sind, dass sie viele verschiedene Datentypen unterstützen und es möglich ist, neue Datentypen zu definieren und ein XML-Dokument auch genauestens zu überprüfen, ob diese Richtlinien auch eingehalten wurden. Dies ist besonders für Dokumente wichtig, die sehr daten-orientiert sind, da es hier besonders auf eine genaue Überprüfung der Datentypen ankommt. Folgendes Beispiel zeigt den Unterschied zwischen dem Daten-orientierten und dem Dokument-orientierten Ansatz: Daten-orientiert <invoice> <orderDate>1999-01-21</orderDate> <shipDate>1999-01-25</shipDate> <billingAddress> <name>Ashok Malhotra</name> <street>123 IBM Ave.</street> <city>Hawthorne</city> <state>NY</state> <zip>10532-0000</zip> </billingAddress> <voice>555-1234</voice> <fax>555-4321</fax> </invoice> Dokument-orientiert <memo importance=’high’ date=’2001-10-23’> <from>Christof Dallermassl</from> <to>Hermann Maurer</to> <subject>Latest draft</subject> <body> We need to discuss the latest draft <important>immediately</important>. Either email me at <email> cdaller@iicm.edu</email> or call <phone>873-5636</phone> </body> </memo> Das ’Daten-orientierte’ Dokument ist mehr oder weniger eine Datenbank, die verschiedenste Elemente enthält. Der grosse Vorteil eines XML-Dokumentes gegenüber einer Datenbank ist jedoch, dass das Dateiformat von vielen Applikationen gelesen werden kann und nicht auf einen Hersteller (den der Datenbank) oder eine Plattform beschränkt ist und somit leicht weitergegeben werden kann. Natürlich ist auch bei dem ’Dokument-orienten’ Dokument eine strenge Typen- oder Werteprüfung nützlich (z.B. bei der Telefonnummer oder dem Datum). Die Frage ist nur, ob sich der Aufwand, ein solches Schema zu erstellen, immer rechnet. Vor allem, da im Moment kaum Tools, die die Erstellung eines Schemas unterstützen, erhältlich sind. Dies hängt auch damit zusammen, dass die Schema-Spezifikation noch nicht abgeschlossen ist (Ende des Reviews war der 15. Oktober 2000) und es daher noch keine gültigen Richtlinien, an die man sich halten könnte, gibt. Seit dem 2. Mai 2001 ist die Schema-Spezifikation eine Recommendation und langsam stehen Werkzeuge zur Verfügung. Folgendes Beispiel ist ein Versuch, ein Schema für das Buch-Beispiel in Abschnitt Document Type Definition auf Seite 50 zu finden: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="book" type="bookType"/> <xsd:complexType name="bookType"> <xsd:sequence> <xsd:element name="info" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="chapter" type="chapterType" minOccurs="1"/> <xsd:element name="date" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="chapterType"> <xsd:sequence> <xsd:element name="section" type="sectionType" minOccurs="1"/> <xsd:element name="para" type="xsd:string" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="sectionType"> <xsd:sequence> <xsd:element name="para" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string"/> </xsd:complexType> 13 http://www.w3c.org/XML/Schema KAPITEL 4. MARKUP LANGUAGES 53 Da dieses Beispiel nur die Möglichkeiten ausnutzt, die eine DTD bietet, verbergen sich die Vorteile von Schemas. Das Beispiel aus dem Schema-Tutorial des W3C14 ist deutlich komplexer, zeigt dafür ein paar Möglichkeiten der Schemadeklaration. <?xml version="1.0"?> <purchaseOrder orderDate="1999-10-20"> <shipTo country="US"> <name>Alice Smith</name> <street>123 Maple Street</street> <city>Mill Valley</city> <state>CA</state> <zip>90952</zip> </shipTo> <billTo country="US"> <name>Robert Smith</name> <street>8 Oak Avenue</street> <city>Old Town</city> <state>PA</state> <zip>95819</zip> </billTo> <comment>Hurry, my lawn is going wild!</comment> <items> <item partNum="872-AA"> <productName>Lawnmower</productName> <quantity>1</quantity> <USPrice>148.95</USPrice> <comment>Confirm this is electric</comment> </item> <item partNum="926-AA"> <productName>Baby Monitor</productName> <quantity>1</quantity> <USPrice>39.98</USPrice> <shipDate>1999-05-21</shipDate> </item> </items> </purchaseOrder> Die zugehörige Schemadeklaration: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. </xsd:documentation> </xsd:annotation> <xsd:element name="purchaseOrder" type="PurchaseOrderType"/> <xsd:element name="comment" type="xsd:string"/> <xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> <xsd:complexType name="USAddress"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="country" type="xsd:NMTOKEN" use="fixed" value="US"/> </xsd:complexType> <xsd:complexType name="Items"> <xsd:sequence> <xsd:element name="item" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> 14 http://www.w3.org/TR/xmlschema-0/ KAPITEL 4. MARKUP LANGUAGES 54 <xsd:sequence> <xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="USPrice" type="xsd:decimal"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="partNum" type="SKU"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <!-- Stock Keeping Unit, a code for identifying products --> <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType> /xsd:schema> Dieses Beispiel soll nicht dazu dienen, alle Features von XML-Schemas zu erklären, sondern soll nur einen kurzen Überblick der Möglichkeiten aufzeigen: • Die Anzahl und Reihenfolge von Kind-Elementen kann genauer begrenzt werden (minOccurs="0"). • Es gibt vordefinierte Datentypen: xsd:string, xsd:date, xsd:positiveInteger, boolean, recurringDay, etc. (die komplette Liste ist unter http://www.w3.org/TR/xmlschema-0/#CreatDt zu finden) • Neue Datentypen können jederzeit definiert werden (type="SKU"). • Gültige Attributwerte können sehr genau (mit Regular Expressions (http://www.w3.org/TR/xmlschema-0/ #regexAppendix) eingegrenzt werden <xsd:pattern value="\d{3}-[A-Z]{2}"/> • usw. Wie man sieht, bieten Schemas deutlich mehr Möglichkeiten als DTDs, fallen dafür aber auch deutlich komplexer aus. Schemas werden DTDs auch nicht überall ersetzen, sondern neue Definitionen ermöglichen, die mit DTDs bisher überhaupt nicht machbar waren. Vor allem ’daten-orientierte’ Dokumente brauchen die Vielfalt der Schemadeklarationen. Und überall, wo Namespaces verwendet werden müssen, kommt man um Schemas nicht herum, da DTDs mit Namensräumen nicht umgehen können. Processing Instructions In HTML werden oft Kommentare dazu missbraucht, eigene Erweiterungen einzuschmuggeln (z.B. serverside includes, Browserspezifische Script-Programme, Datenbankabfragen, etc.). Der Vorteil, Kommentare für diesen Zweck zu benutzen, ist zwar, dass Browser diese Kommandos einfach ignorieren, wenn sie es nicht verstehen. Der Nachteil an dieser Methode ist, wenn alle Kommentare aus dem Dokument entfernt werden, entsteht ein Dokument mit neuem Inhalt (oder auch keinem Inhalt), was ja eigentlich nicht Sinn und Zweck von Kommentaren sein kann. XML bietet für solche Zwecke Processing Instructions (PIs) an. PIs stellen einen Mechanismus zur Verfügung, der es erlaubt, Informationen in ein Dokument einzubetten, die nur für Applikationen und nicht für den XML-Parser bestimmt sind. Eine Processing Instructions steht zwischen <? und ?> und muss als erstes Wort eine eindeutige Identifikation haben (normalerweise der Name der Applikation oder der Name einer XML-Notation der DTD, die auf die Applikation verweist). IBM verwendet z.B. für die Bean Markup Language den Namen bmlpi: KAPITEL 4. MARKUP LANGUAGES 55 z.B. <?bmlpi register demos.calculator.EventSourceText2Int?> Alles, was hinter dem Namen steht, besteht aus Daten, die für Applikationen gedacht sind, die Daten mit diesem Identifier (bmlpi) interpretieren wollen. Der XML-Parser übergibt die Processing Instruction uninterpretiert an jede Applikation. Wenn nun eine Applikation dieses XML-Dokument parst und auf diese Processing Instruction stösst, kann sie (muss aber nicht) die Argumente der PI auswerten und dementsprechend reagieren. In obigem Beispiel wird wahrscheinlich die Java-Klasse demos.calculator.EventSourceText2Int registriert. Es ist aber nicht so, dass ein XML-Parser automatisch eine Applikation mit der gegebenen Id sucht und diese startet! Ob eine PI ausgewertet wird, hängt immer von der Applikation ab, die das Dokument parst. Die Daten, die eine PI enthält, können beliebiger Natur sein (Variablenwerte wie unten, Kommandos wie oben, Zusatzinformationen, . . . ). XML selbst verwendet auch solche Processing Instructions, darum sind auch Identifikationsnamen, die mit xml beginnen, verboten. Als Beispiel dazu kann die Style-File Deklaration von XML gelten: <?xml−stylesheet type=’’text/xsl’’href=’’stylefile. xsl ’ ’?> Diese PI wird beispielsweise vom XSL-Prozessor ausgewertet und der Name des Style-Files herausgelesen. Alle anderen Programme, die dieses XML-Dokument parsen, die aber nichts mit XSL zu tun haben, können diese PI einfach ignorieren. Ein weiteres Beispiel ist das Einbetten von serverseitigem Code (Kapitel 8), z.B. PHP-Code (Abschnitt 8.1.8): hier wird durch die Identifikation php der Applikation, die das Dokument verarbeitet (in diesem Fall dem PHP-Interpreter) mitgeteilt, dass PHP-code folgt. Andere Applikationen können diese Processing Instruction ignorieren. <?php $db_host $db_user $db_pass $db_name $my_url ?> = = = = = "was.weiss.ich.net"; "username"; "meinpasswort"; "meinedb"; "http://dies.ist.meine.url"; Processing Instructions können überall in einem XML-Dokument stehen (ausgenommen in einem Tag oder einem CDATA-Abschnitt). Namespaces Namensräume (namespaces) sind eine Neuerung der XML-Spezifikation. Die Benutzung von Namensräumen ist in XML nicht notwendig, oft aber sehr nützlich. Namensräume sind eingeführt worden, um die Eindeutigkeit unter XML-Elementen sicherzustellen. Ein Element <book> wird sicher von vielen XML-Autoren verwendet werden. Welche Elemente oder Attribute aber bei einem <book> vorkommen dürfen, wird sich aber von Autor zu Autor unterscheiden. Sobald verschiedene Deklarationen von <book> zusammentreffen, kollidieren sie und das korrekte Zusammenführen von Dokumenten wäre unmöglich. Namensräume helfen durch die Bereichserweiterung jedes Tags, Elementnamen-Kollisionen zu vermeiden. Namensräume werden mit dem Attribut xmlns:namespace_id deklariert: <OReilly:Books xmlns:OReilly="http://www.oreilly.com/"> oder <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Falls kein Name (namespace_id) nach dem xmlns-Präfix angegeben wird, wird der Namensraum als Default-Namensraum eingestuft und für alle Elemente innerhalb des definierenden Elements verwendet, die kein eigenes Namensraum-Präfix verwenden. mit explizitem Namespace <OReilly:Books xmlns:OReilly="http://www.oreilly.com/"> <OReilly:Book> was weiss ich was fuer ein buch .... </OReilly:Book> </OReilly:Books> mit Default-Namespace <Books xmlns="http://www.oreilly.com/"> <Book> was weiss ich was fuer ein buch .... </Book> </Books> KAPITEL 4. MARKUP LANGUAGES 56 Ein leerer String als Default-Namespace verhindert, dass ein Default-Namespace innerhalb eines spezifischen Elements gesetzt ist. 4.4.3 Beispiele Vorhandener XML-Definitionen Die Vorteile von XML als universelles Austauschformat kommen natürlich erst zum Tragen, wenn es klar definierte Element-Sätze gibt, die von mehreren Applikationen verstanden werden. Die Liste ist natürlich weit entfernt, vollständig zu sein, versucht aber die Möglichkeiten und das breite Spektrum von XML zu verdeutlichen: • eXtensible HyperText Markup Language (XHTML): ist HTML in strikter XML-Syntax geschrieben (Gross/Klein Schreibung, Verschachtelung, etc.). Der Hauptzweck von XHTML ist die leichtere Überprüfbarkeit auf gültiges HTML. Die generellen Browserprobleme (verschiedene Interpretation von HTML-Tags) werden damit wohl nicht gelöst werden. • Scalable Vector Graphics (SVG): siehe Abschnitt 6.7.4 • Die OpenGIS Geographic Markup Language (GML): Geographische Daten können so applikationsunabhängig gespeichert werden (siehe http://www.opengis.org) und relativ einfach (z.B. mit Hilfe von XSLT) in SVG umgewandelt und dargestellt werden. Als Beispiel dient die (sehr kurze) Definition des Flusses Cam (Cambridge): <River> <gml:description>The river that runs through Cambridge.</gml:description> <gml:name>Cam</gml:name> <gml:centerLineOf> <gml:LineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> <gml:coord><gml:X>0</gml:X><gml:Y>50</gml:Y></gml:coord> <gml:coord><gml:X>70</gml:X><gml:Y>60</gml:Y></gml:coord> <gml:coord><gml:X>100</gml:X><gml:Y>50</gml:Y></gml:coord> </gml:LineString> </gml:centerLineOf> </River> • Docbook bietet eine Möglichkeit, Bücher in XML/SGML zu schreiben. Diese ausgabeformatunabhängige Textbeschreibung erlaubt es relativ einfach, den Text in verschiedene Formate zu konvertieren (HTML, PDF). Details sind unter http://www.oasis-open.org/committees/docbook/ zu finden. Eine online-Version des O’Reilly Buches DocBook: The Definitive Guide ist unter http://www.docbook.org zu finden. Die Homepage der Entwickler steht unter http://docbook. sourceforge.net. Ein einfaches Beispiel (aus dem O’Reilly Buch entnommen) eines Artikels ist z.B.: <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> <article> <artheader> <title>My Article</title> <author><honorific>Dr</honorific><firstname>Emilio</firstname> <surname>Lizardo</surname></author> </artheader> <para> ... </para> <sect1><title>On the Possibility of Going Home</title> <para> ... </para> </sect1> <bibliography> ... </bibliography> </article> Das docbook-Projekt hat auch eine DTD für die Erstellung von Webseiten namens website herausgebracht. Auf den Downloadseiten von Docbook bei Sourceforge15 ist dieser Teil zu finden. Ein Beispiel ist unter http://docbook.sourceforge.net/release/website/example/layout.html zu finden. • Chemical Markup Language (CML) erlaubt es, chemische Elemente zu beschreiben. Viele Beispiele und Details sind unter http://www.xml-cml.org/ zu finden. Auch dieses XML-Format lässt sich einfach mit Hilfe von SVG visualisieren. Das Beispiel (von http://www.adobe.com/svg/demos/devtrack/chemical.html) zeigt ein Karotinmolekül bzw. eine (SVG) Visualisierung eines Koffeinmoleküls: 15 http://sourceforge.net/projects/docbook/ KAPITEL 4. MARKUP LANGUAGES 57 <?xml version="1.0"?> <document> <cml title="carotine" id="cml_carotine_karne" xmlns="x-schema:cml_schema_ie_02.xml"> <molecule title="carotine" id="mol_carotine_karne"> <atomArray> <atom id="carotine_karne_a_1"> <float builtin="x2" units="A">17.3280</float> <float builtin="y2" units="A">2.0032</float> <string builtin="elementType">C</string> </atom> ... many atoms deleted, for space ... </atomArray> <bondArray> <bond id="carotine_karne_b_1"> <string builtin="atomRef">carotine_karne_a_1</string> <string builtin="atomRef">carotine_karne_a_2</string> <string builtin="order" convention="MDL">2</string> </bond> ... many bonds deleted, for space ... </bondArray> </molecule> </cml> </document> • Mathematical Markup Language (MathML): Details sind unter http://www.w3.org/Math/ zu finden. Die Unterstützung von MathML ist browsermässig ganz gut. Pb Als Beispiel (von http://www.zvon.org/HowTo/Output/index.html) dient folgende Formel: x=1 f (x) <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <sum/> <bvar> <ci> x </ci> </bvar> <lowlimit> <ci> a </ci> </lowlimit> <uplimit> <ci> b </ci> </uplimit> <apply> <fn> <ci> f </ci> </fn> <ci> x </ci> </apply> </apply> </math> • Synchronized Multimedia Language (SMIL): siehe Abschnitt 7.5 • Voice Markup Language (VoiceXML): Mit VoiceXML kann man Dialogsysteme aufbauen, die sowohl Sprachein- als auch -ausgabe unterstützen. Die Spezifikationen und Beispiele sind unter http: //www.w3.org/Voice/ zu finden. Folgendes Beispiel lässt den Benutzer eine Stadt aussuchen: <field name="city"> <prompt>Where do you want to travel to?</prompt> <option>Edinburgh</option> <option>New York</option> <option>London</option> <option>Paris</option> <option>Stockholm</option> </field> • Election Markup Language (EML): ein Versuch, strukturierte Wahldaten zwischen verschiedener Soft-, Hardware und Service-Providern austauschen zu können (siehe http://xml.coverpages. org/eml.html). • und viele weitere. . . Eine lange Liste von XML-Anwendungen kann auf den Webseiten des W3C unter http://www.w3.org/ TR/ oder bei xml.com16 unter http://www.xml.com/pub/q/stdlist eingesehen werden. 16 http://www.xml.com KAPITEL 4. MARKUP LANGUAGES 4.4.4 58 Extensible Stylesheet Language (XSL) Die Spezifikation der erweiterten Stylesheet-Sprache XSL17 ist einer der kompliziertesten Teile der XMLSpezifikation und erst seit dem 15.10.2001 eine Recommendation. Da bei XML Tags keine bestimmte Bedeutung haben (das Element <table> könnte sowohl eine HTMLTabelle als auch ein Tisch sein), gibt es keinen Standardweg, ein XML-Dokument anzuzeigen. Es muss also ein Weg gefunden werden zu beschreiben, wie ein solches Dokument präsentiert werden soll. Einer dieser Wege ist CSS, aber XSL sollte der bevorzugte Mechanismus für XML sein. XSL besteht aus zwei Teilen: • XSLT (XSL Transformations): eine Sprache, um XML-Dokumente zu transformieren. • XSL-FO (Formatting Objects): eine Methode, um XML-Dokumente zu formatieren. Dieser Teil der Spezifikation ist noch stark im Wandel begriffen. Daher auch nur eine ganz kurze Beschreibung unter Abschnitt Formatting Objects (FO) auf Seite 62. XSLT ist eine Sprache, die ein XML-Dokument in ein anderes (XML-)Dokument (also evtl. auch in ein HTML-Dokument) transformiert, bestimmte Elemente sortiert und filtert und die die Daten danach noch formatiert (z.B. negative Zahlen in Rot). XML-Dokumente können aus verschiedenen Elementen (nodes) bestehen: • der Dokumentenwurzel (root). • Elementen • Text • Attributen • Namensräumen • Processing Instructions • Kommentaren Diese Knoten sind intern als Baum organisiert und können auch über diese Baumstruktur angesprochen werden. Die XSL-Transformationen arbeiten als Eingabe mit einem solchen Baum und das Resultat ist wiederum ein solcher Baum. Die Transformationen drehen sich in erster Linie um so genannte Template Rules. Diese Schablonen enthalten Anweisungen für den XSLT-Parser, die dieser mit XML-Elementen auffüllt und kombiniert. Gewöhnlich passen die Regeln nur zu bestimmten Elementen (Knoten im Baum). Als Beispiel soll hier ein XML-Dokument, das eine Adressliste enthält, mittels XSLT in HTML (auch eine XML-Art) umgewandelt werden: <?xml version="1.0"?> <addresslist> <person> <name>Dallermassl Christof</name> <email>cdaller@iicm.edu</email> <address> <street>Inffeldg. 16c</street> <town>8010 Graz</town> <tel note="office">+43-316/873-5636</tel> <tel note="fax">+43-316/873-5699</tel> </address> <address> <street>IrgendwoInGrazStr. 43</street> <town>8010 Graz</town> <tel>+43-316/123456</tel> </address> </person> 17 http://www.w3.org/TR/xsl KAPITEL 4. MARKUP LANGUAGES 59 <person> <name>Ablinger Franz</name> <address> <street>Wasweissichwelchestr. 49</street> <town>4840 Igendwo_in_OOe</town> <tel>+43-7672/987654</tel> </address> </person> </addresslist> Das zugehörige XSL-File muss den Namensraum xsl verwenden und ist ebenfalls ein gültiges XML-File: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> Als erstes muss natürlich darauf geachtet werden, dass das Ergebnis ein gültiges HTML-Format besitzt: <xsl:template match="/"> <html> <head> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> Diese Template-Regel trifft nur auf das root-Element (match="/") zu. XSLT-Kommandos sind immer an dem Namensraum xsl zu erkennen. Alle anderen Elemente werden ohne Änderung in den Ausgabebaum bzw. das Ausgabedokument übernommen. In diesem Fall werden die Elemente <html>, <head> und <body> samt ihren zugehörigen Ende-Tags unverändert ausgegeben. Die Anweisung <xsl:apply−templates/> versucht nun, weitere Templates auf den Eingabebaum anzuwenden: <xsl:template match="addresslist"> <h1>Adressenliste</h1> <xsl:apply-templates/> </xsl:template> Das Template zum XML-Element <addresslist> schreibt eine Überschrift und weist den Parser an, weitere Templates anzuwenden. Das Template für <person> geht nun endlich auf die Daten los: <xsl:template match="person"> <p> <strong> <xsl:value-of select="name"/> </strong><br/> <xsl:apply-templates select="email"/> <xsl:apply-templates select="address"/> </p> <hr/> </xsl:template> <xsl:value−of select=’’name’’> selektiert den Wert (den Text) des Sub-Elements <name> und schreibt ihn innerhalb der <strong>-Tags in die Ausgabe. Nach einem Zeilenumbruch (<br> würde gegen die Syntaxregeln von XML verstossen, darum wird <br/> verwendet), werden nun weitere Template Regeln angestossen: für <email> und <address>. Existiert kein Kind-<email>-Element, wird kein Template angewandt und auch kein Ausgabecode produziert. Die weiteren Templates sind hoffentlich selbsterklärend und folgen den obigen Mustern: <xsl:template match="email"> email: <a> <xsl:attribute name="href"> mailto:<xsl:value-of select="."/> </xsl:attribute> <xsl:value-of select="."/> </a> <br/> KAPITEL 4. MARKUP LANGUAGES 60 </xsl:template> <xsl:template match="address"> <p> <xsl:value-of select="street"/><br/> <xsl:value-of select="town"/><br/> <xsl:apply-templates select="tel"/> </p> </xsl:template> <xsl:template match="tel"> Tel: <xsl:value-of select="."/><br/> </xsl:template> Abschliessend muss natürlich noch das <stylesheet>-Element abgeschlossen werden: </xsl:stylesheet> Als XSLT-Prozessor wurde Xalan vom Apache-Projekt18 verwendet. Nach dem Aufruf von # je nach Ort von Xalan, XALAN_HOME zu setzen: setenv CLASSPATH $XALAN_HOME/xerces.jar:$XALAN_HOME/xalan.jar java org.apache.xalan.xslt.Process -in addresslist.xml \ -xsl addresslist.xsl -out addresslist.html entsteht das HTML-Dokument addresslist.html: <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>Adressenliste</h1> <p> <strong>Christof Dallermassl</strong><br> email:<a href="mailto:cdaller@iicm.edu">cdaller@iicm.edu</a><br> <p> Inffeldg. 16c<br> 8010 Graz<br> Tel: +43-316/873-5636<br> Tel: +43-316/873-5699<br> </p> <p> IrgendwoInGrazStr. 43<br> 8010 Graz<br> Tel: +43-316/123456<br> </p> </p> <hr> <p> <strong>Franz Ablinger</strong><br> <p> Wasweissichwelchestr. 49<br> 4840 Igendwo_in_OOe<br> Tel: +43-7672/987654<br> </p> </p> <hr> </body> </html> Der HTML-Code des Dokuments wurde der leichteren Lesbarkeit wegen etwas umformatiert (Einrückung, neue Zeilen, ...), ist aber sonst unverändert und vor allem ein gültiger HTML Code, der von allen Browsern angezeigt werden kann. Die hier verwendeten Transformationen sind natürlich nur ein kleiner Teil der Features, den XSLT bietet. Ein Feature, das die erweiterten Möglichkeiten zeigt und gut zum Beispiel passt, ist z.B. das Umstellen der Reihung (in sortierter Reihenfolge). Der Befehlt < xsl:sort > innerhalb <xsl:apply−templates> bewirkt eine Sortierung der Adressliste: <xsl:template match="addresslist"> <h1>Adressenliste</h1> <xsl:apply-templates> <xsl:sort select="name"/> </xsl:apply-templates> </xsl:template> 18 http://xml.apache.org/xalan KAPITEL 4. MARKUP LANGUAGES 61 Ein XSL-Stylesheet wird mit mit folgender Processing Instruction in ein XML-Dokument eingebunden: <?xml-stylesheet type="text/xsl" href="mystyle.xsl"?> Mustervergleich (XPath) Der mächtige Mustervergleich (XPath19 ) von XSL wird in obigem Beispiel nur sehr wenig ausgenutzt. Er wird u.a. verwendet, um im <xsl:template>-Element mit dem match-Attribute einen Knoten im XMLDokumenten-Baum auszuwählen. Das verwendete Muster passt auf ein Element, das eine Beziehung zum aktuellen Knoten besitzt. <xsl:template match=’’addresslist/person/email’’> addressiert z.B. das <email>-Element ausgehend vom root-Knoten. <xsl:template match="person/email"> stimmt nur dem Element <email> überein, das ein Eltern-Element <person> besitzt. <xsl:template match="person//tel"> passt jedoch zu jedem <tel>-Element, das einen Vorgänger (muss kein direkter sein) <person> hat. Bei obigem Beispiel würde dieser Ausdruck auf alle <tel>-Elemente auch innerhalb der Adresse zutreffen. <xsl:template match="person/address/*"> passt auf alle Elemente innerhalb der Adresse einer Person. <xsl:template match="street | town"> passt auf <street> oder <town>. <xsl:template match="person/comment()"> <xsl:template match="person/pi()"> selektiert alle Kommentare bzw. Processing Instructions innerhalb des <person>-Elements. Aber nicht nur Elemente, auch Attribute können Ziele sein. Es kann z.B. auch nur diejenigen Telefonnummern selektiert werden, die einen (bestimmten) Attributwert besitzt: <xsl:template match="tel[@note]"> In diesem Fall werden nur <tel>-Elemente ausgewählt, die ein note Attribut besitzen. <xsl:template match="tel[@note=’fax’]"> wählt nur Telefoneinträge mit note-Attribut und dem Wert “fax” aus. Der Wert von Attributen wird mit Hilfe des Klammeraffen ’@’ adressiert. Im Beispiel wird das Attribut note mittels @note selektiert und in den HTML-Code in Klammern an die Telefonnummer angefügt. <xsl:template match="tel"> Tel: <xsl:value-of select="."/>(<xsl:value-of select="@note"/>)<br/> </xsl:template> Hier alle Elemente von XSL zu erklären, würde den Rahmen des Skriptes sprengen, so seien ein paar der weiteren nur noch kurz erwähnt: • die Fähigkeit, Zähler mitlaufen zu lassen (um z.B. alle Adresseinträge zu numerieren) • Stringmanipulationen (Zusammenhängen, Ersetzen, ...) • Erzeugen von Kommentaren oder Processing Instructions (<xsl:comment> und < xsl:pi >) • etc... 19 http://www.w3.org/TR/xpath.html KAPITEL 4. MARKUP LANGUAGES 62 Formatting Objects (FO) Die zweite Hälfte der eXtensible Style Language (XSL) ist die Formatting Language. Diese XMLApplikation wird benutzt, um zu beschreiben, wie der Inhalt gerendert wird, wenn er von einem Leser angezeigt wird. Die Spezifikation ist seit 15.10.2001 eine Recommendation. Auch gibt es erst eine sehr kleine Anzahl von Applikationen, die mit Formatting Objects umgehen können. Darum wird die Beschreibung hier sehr knapp ausfallen. FOs bieten ein besseres Layout-Model als CSS, versuchen aber z.T. kompatibel zu CSS zu sein (Eigenschaftsnamen, etc.). FOs basieren auf rechteckigen Boxen und Seiten, die nacheinander / nebeneinander gereiht werden können. Sie erlauben u.a. Text in verschiedenen Formen fliessen zu lassen (von rechts nach links). Mehr Details findet man im Kapitel der XML-Bibel20 . Das FOP-Projekt von Apache21 ist ein freier Formatting Object Processor, der im Moment die Ausgabe in PDF, MIF, PCL, Postscript, Text, auf einen Drucker und auf den Bildschirm unterstützt. Die verwendete Version von FOP ist 0.20.4. Folgendes ist ein einfaches “Hello World” FO-Dokument, das nur aus der Deklaration des Seitenlayouts und vier Blöcken besteht: <?xml version="1.0" encoding="iso-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> ??<fo:layout-master-set> <!-- layout for the first page --> <fo:simple-page-master master-name="my_page" page-height="10cm" page-width="15cm" margin-top="1cm" margin-bottom="1cm" margin-left="1.5cm" margin-right="1.5cm"> <fo:region-body margin-top="3cm"/> <fo:region-before extent="3cm"/> <fo:region-after extent="1.5cm"/> </fo:simple-page-master> </fo:layout-master-set> <!-- actual layout --> <fo:page-sequence master-reference="my_page"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello, world!</fo:block> <fo:block font-size="12pt" font-family="sans-serif" line-height="15pt" space-after.optimum="3pt" text-align="start"> This is the second block in the hello world page. It has a vertical space afterwards. </fo:block> <fo:block>And now there comes the third block! Pay attention!</fo:block> <fo:block> And the fourth and last block in the little Hello World Formatting Objects Example. </fo:block> </fo:flow> </fo:page-sequence> </fo:root> Es kann durch einfaches Aufrufen des Shell-Skripts (Unix) bzw. des Batch-Files (Windows) eine PDFDatei erzeugt werden: unix: fop.sh hello_world.fo -pdf hello_world.pdf windows: fop hello_world.fo -pdf hello_world.pdf Eine gute und ausführliche Einführung in XSL-Formatting Objects kann unter http://www.dpawson. co.uk/xsl/sect3/bk/index.html gefunden werden. 20 http://www.ibiblio.org/xml/books/bible/updates/15.html 21 http://xml.apache.org/fop/ KAPITEL 4. MARKUP LANGUAGES 63 Hello, world! This is the second block in the hello world page. It has a vertical space afterwards. And now there comes the third block! Pay attention! And the fourth and last block in the little Hello World Formatting Objects Example. Abbildung 4.1: Das Ergebnis des Formatting Object Processors Ein nettes Projekt, das ausgehend von HTML-Dokumenten von Word 2000 FO-Dokumente erstellt, ist WH2FO22 . Auf der Webseite sind auch einige schöne Beispiele, die die Mächtigkeit von Formatting Objects zeigen. XML/XSL in the real-world Im Moment gibt es mehrere Möglichkeiten, XML in Kombination mit XSL zu nutzen: • Server seitig: Der Server transformiert das XML-Dokument mit Hilfe einer XSL-Datei zu einem HTML-Dokument (evtl. mit CSS). Der User Agent (Browser) stellt dieses HTML Dokument wie gewohnt dar. • Client seitig mit XSL: Der Server sendet ein XML-Dokument mit dem dazugehörigen XSL Dokument an den User Agent. Dieser transformiert wiederum das Ergebnis und stellt es dar. Da im Moment nur der Internet Explorer eine XSL-Transformation unterstützt, beschränkt sich dieser Weg auf Microsoft-Benutzer. • Client seitig mit CSS: Der Server liefert ein XML Dokument und ein dazugehöriges Cascaded Style Sheet File aus. Der Browser benutzt diese Information, um die XML Daten darzustellen. Diese Methode wird zumindest vom IE, Opera und Mozilla unterstützt. Ein Beispiel ist unter http://www.w3schools.com/xml/xml_display.asp zu finden. Obwohl dies im Moment die browserübergreifendste Möglichkeit ist, XML Dokumente zur Verfügung zu stellen, sollte es sich hier nur um eine Übergangslösung handeln. Ein Server, der schon eingesetzt werden kann und viele der obigen Features unterstützt, ist z.B. Cocoon vom Apache-Projekt23 Weitere nützliche XML/XSL-Werkzeuge: • XSLT processor Xalan (Apache Projekt): http://xml.apache.org/xalan • IBM-XSL-Editor: http://www.alphaworks.ibm.com/tech/xsleditor • XML-Spy: Österreichische Entwicklung! http://www.xmlspy.com • Internet Explorer ab Version 5.0 • Das Kapitel 17 (XSL) der XML-Bible (2.Ed.)24 von Elliot Rusty Harrold ist online lesbar. 22 http://wh2fo.sourceforge.net/index.html 23 http://xml.apache.org/cocoon 24 http://ibiblio.org/xml/books/bible2/chapters/ch17.html KAPITEL 4. MARKUP LANGUAGES 64 Obwohl die XSLT-Unterstützung des Internet Explorers 5.0 nicht 100% kompatibel mit der letzten Spezifikation des W3C ist, zeigen Abbildung 4.2, Abbildung 4.3 und Abbildung 4.4 schon, dass man durchaus damit experimentieren kann. Abbildung 4.2: Internet Explorer 5.0: XML Datei 4.4.5 Weitere Literatur zu XML Weiter(führende) Literatur zum Thema XML: • Der Anlaufpunkt überhaupt sind die XML-Webseiten des W3C25 • Einen guten Start bieten die The XML Cover Pages26 , die auf viele andere Artikel über XML verweisen. • Guter XML Kurs (auch mit XSL, ...) http://www.vbxml.com (empfohlen von Stefan Thalauer) • Kurzes Paper (schon älter): Introduction to XML27 • Ganz gute Einführung in XML ist unter XML10128 zu finden. • W3C Webseite für Schemas29 • O’Reillys Taschenbibliothek “XML kurz und gut” • “XML Bible 2nd Ed.” v. Elliotte Rusty Harold, online zu finden unter http://ibiblio.org/xml/ books/bible2 ([Har00]) • “O’Reilly: Mastering XML Transformations” 25 http://www.w3.org/XML 26 http://xml.coverpages.org/xmlIntro.html 27 http://www.stud.ifi.uio.no/~lmariusg/download/xml/xml_eng.html 28 http://www.xml101.com 29 http://www.w3.org/TR/xmlschema-0/ KAPITEL 4. MARKUP LANGUAGES Abbildung 4.3: Internet Explorer 5.0: XSL Datei Abbildung 4.4: Internet Explorer 5.0: XML Datei mit Formatierungen aus XSL Datei 65 Kapitel 5 Digital Audio Töne sind (Luft)Druckänderungen, die das menschliche Trommelfell als Schwingungen wahrnimmt und mittels Nerven an das Gehirn weiterleitet. Töne haben grundlegende Eigenschaften: • Lautstärke oder Amplitude: je grösser der Druck ist, desto grösser ist die Lautstärke. Lautstärke wird in deziBel gemessen. 0dB kann vom Menschen kaum noch wahrgenommen werden, 120dB erzeugen schon Schmerzen. Eine Erhöhung um 10dB (10fache Amplitude) wird als Verdopplung der Lautstärke wahrgenommen. • Tonhöhe oder Frequenz: wie oft ändert sich der Druck. Das menschliche Ohr kann Frequenzen im Bereich von 16Hz bis 20kHz aufnehmen. Dies unterscheidet sich von Mensch zu Mensch und nimmt im Alter gewöhnlich ab. Das Ohr misst Töne logarithmisch, d.h. eine Verdopplung der Frequenz empfindet man als eine Oktave. Z.B. der Unterschied zwischen 200Hz und 400Hz wird gleich dem Unterschied zwischen 5kHz und 10kHz empfunden (beides entspricht der Verdopplung der Frequenz und damit einer Oktave). Lautstärke und Frequenz sind jedoch nicht völlig unabhängig. So nimmt das menschliche Ohr verschiedene Frequenzen bei gleicher Amplitude als verschieden laut auf. Am empfindlichsten ist das Ohr bei ca. 3kHz, den grössten Lautstärkebereich hat es aber bei ca. 1kHz. Man sieht schon, dass mit reiner Mathematik zwar Töne beschrieben werden können, dass sich aber das menschliche Ohr nicht an die reine Mathematik hält. Töne können aus • reinen Sinusschwingungen, oder aus • einer Basis- und (mehreren) Oberschwingungen bestehen. Die Oberschwingungen bestimmen die Klangfarbe (“Timbre”) des Tons. Verschiedene Musikinstrumente erzeugen zwar gleich hohe Töne, haben aber unterschiedliche Oberwellen, die sich aus den unterschiedlichen Materialien, Bauformen, etc. der Instrumente ergeben. 5.1 Digitale Darstellung von Tönen Mikrophone produzieren im Allgemeinen analoge Signale. Um diese mittels Computer weiterverarbeiten zu können, müssen sie digitalisiert werden. Dazu wird die Musikwelle (Summe der Basis- und aller Oberwellen) zu bestimmten Zeiten abgetastet (Abbildung 5.1) und der Wert digital gespeichert (zeitund wertdiskret - Abbildung 5.2). Dass aus der Einteilung in diskrete Werte ein gewisser Fehler (Quantisierungsfehler) resultiert, ist in Abbildung 5.3 gezeigt. 66 KAPITEL 5. DIGITAL AUDIO 67 Abbildung 5.1: Abtastung der Welle Abbildung 5.2: Abtastung der Welle - zeit und wertdiskret Wichtige Parameter der A/D-Umsetzung: • Abtastfrequenz (Samplingrate) • Bitgrösse des Abtastwertes (Samplingsize), der die Auflösung für die Dynamik (Bereich zwischen leisestem und lautestem Wert) bestimmt. Laut Nyquist/Shannon muss die Samplingrate doppelt so hoch sein, wie die höchste darzustellende Frequenz, damit das Ursprungssignal wieder rekonstruiert werden kann. Ist die Abtastfrequenz zu nieder, kann aliasing auftreten (Abbildung 5.4). Dabei entsteht beim Zurückwandeln in ein analoges Signal eine ganz andere Frequenz und das Ursprungssignal kann somit nicht mehr wiedergegeben werden. Tabelle 5.1 zeigt einige Werte von Samplingraten, Auflösung, Frequenzband und die daraus resultierende Datenmenge (Auflösung in Byte * Samplingrate * Anzahl Kanäle (Stereo/Mono)). Wobei von den angegebenen Beispielen nur das Telefon mono überträgt, alle anderen sind stereo. Telefon CD DAT DVD Audio Sample Rate 8kHz 44.1kHz 48kHz max 192kHz Auflösung 8bit 16bit 16bit max 24bit Frequenzband 200-3400Hz 20-20000Hz 20-20000Hz 0-96000Hz (max) Datenmenge 8kBytes/sec 176kBytes/sec 192kBytes/sec 1152kBytes/sec Tabelle 5.1: Werte von Abtastfrequenzen und Samplingraten KAPITEL 5. DIGITAL AUDIO 68 Abbildung 5.3: Abtastung der Welle - Quantisierungsfehler Abbildung 5.4: Aliasing bei zu niederer Abtastfrequenz 5.2 Kompression NOTIZ: Die hier in Folge beschriebenen Kompressionsalgorithmen bzw. -verfahren stammen zum Grossteil aus [vL00] und sind ziemlich ausführlich beschrieben. Bei der Prüfung zur Vorlesung werden auf keinen Fall hunderte Details verlangt. Ein Überblickswissen reicht! Bei der Kompression von Audio-Daten muss man zwischen verlustlosen Kompressionsverfahren und Verfahren, bei denen ein Teil der Audio-Information verloren geht, unterscheiden. Verlustlose Kompressionsalgorithmen sind: • RLE (Run Length Encoding) (Lauflängen): Serie von gleichen Werten wird durch Wert plus Zähler ersetzt (anstatt 1,5,5,5,5 wird z.B. 1,4*5 geschrieben). (siehe Abschnitt 6.4.1) • Silence Compression: ähnlich zu RLE, Stille wird nicht übertragen. Wird hauptsächlich bei Sprachtelefonie verwendet. • Huffmann Coding: Statistisches Verfahren bei dem Werte binär gewichtet werden und häufigeren Werten kürzere Codes zugewiesen werden. (siehe Abschnitt 6.4.3) • LZW (Lempel, Ziv & Welch) basiert auf wiederkehrenden Mustern. (siehe Abschnitt 6.4.2) • Differential Puls Code Modulation (DPCM): Nur die Differenz zwischen zwei Samples wird gespeichert. Da die Differenz normalerweise kleiner ist, als der Samplewert, kommt man bei der Differenz mit einer kleineren Auflösung aus (8 Bit anstatt 16 Bit). Bei grossen Sprüngen besteht aber die Gefahr des “Nachlaufens”, da der kleine Wert nicht mehr ausreicht und so die grosse Differenz auf mehrere “kleine” Differenzen aufgeteilt werden muss. KAPITEL 5. DIGITAL AUDIO 69 • Adaptive Differential Puls Code Modulation: wie DPCM, nur wird zusätzlich bei kleineren Werten die Auflösung herabgesetzt. • µ-Law, a-Law basieren auf nichtlinearer Abbildung von Samplewert auf Lautstärke. Daraus resultiert eine höhere Dynamik bei gleichen Datenmengen. • etc. Alle diese Verfahren arbeiten für Audiodaten nur in beschränktem Masse zufriedenstellend. Bessere Kompressionsraten erhält man mit “lossy” Kompression, also Verfahren, bei denen ein Teil der Ausgangsinformation unwiederbringlich verloren geht. Eigentlich ist alles ganz einfach: Zur Kompression von Audio-Signalen speichert man unwichtige Informationen nicht ab. Basierend auf Studien über das menschliche Gehör entscheidet der so genannte Encoder, welche Informationen wichtig sind und welche nicht. Beim Menschen ist es nicht viel anders: Bevor ein Klang ins Bewusstsein dringt, haben Ohr und Gehirn ihn schon auf seine Kernelemente reduziert. Die psychoakustische Reduktion der Audio-Daten nimmt diesen Vorgang teilweise vorweg. Der Schlüssel zur Audio-Kompression besteht darin, auch solche Elemente zu beseitigen, die nicht redundant, aber irrelevant sind. Dabei geht es um diejenigen Teile des Signals, die der menschliche Zuhörer sowieso nicht wahrnehmen würde. Es gibt drei Basistechniken bei Audio-Kompression: • Predictive Coding: Das Wissen über das vergangene Signal wird für eine Vorhersage des nächsten Samples benutzt. Die Kompression ergibt sich daraus, dass man nur die Differenz zwischen dem Signal und der Vorhersage abspeichert. Der Verlust resultiert daher, dass das Wissen über vergangenen Signale nicht immer eine exakte Vorhersage der nächsten Samples erlaubt. • Subband Coding: In diesem Fall teilt man das Audio-Spektrum in Frequenzbänder auf. Dann kann man die Tatsache ausnutzen, dass fast alle Bänder ein viel geringeres (oder weniger wichtiges) Signal beinhalten als das lauteste Band. Die Kompression beruht darauf, dass man für die wichtigen Bänder mehr Platz aufwendet als für die unwichtigen; in manchen Fällen kann man sich die Übertragung auch ganz sparen. Die Bits werden dynamisch auf die Bänder verteilt; dem Encoder fällt die aufwendige Selektionsarbeit zu, für die er ein so genanntes psychoakustisches Modell benutzt, nach dem er die wichtigen und unwichtigen Teile eines Signals unterscheidet. Der Encoder muss neben den Audio-Daten auch Informationen über die Bitverteilung übertragen. Der Decoder muss das Signal aus den abgespeicherten Informationen nur synthetisieren. • Spectral oder Transform Coding: Mit dieser Technik berechnet man über die Wellenform periodisch eine Fourier-Transformation. Weil sich die transformierte Darstellung eines Signals nur langsam ändert, muss man sie viel seltener übertragen. Subband Coding wird oft als Spezialfall von Transform Coding verstanden. Transform-Encoder benutzen gewöhnlich eine hohe Zahl an Subbändern und betrachten von der Frequenz her benachbarte Samples gemeinsam. Alle Audio-Kompressionsverfahren vollziehen zunächst den gleichen Schritt wie das menschliche Gehör: Sie schlüsseln das Signal nach der Frequenz auf. Für einen Computer ist das eine aufwendige Angelegenheit, bei der er mit komplexen Zahlen hantiert und einiges an Gleitkomma-Arithmetik vollzieht. Standardverfahren sind die Fourier- und die Diskrete Cosinus-Transformation. 5.2.1 Wellentheorie Die Theorie hinter diesen Verfahren besagt, dass man ein Signal annähern kann, indem man verschiedene Kurven überlagert. In der Regel kommen Sinuskurven zum Einsatz. Wenn man dies aber standardisiert hat, muss man die Funktionen nicht mitspeichern, sondern nur die Koeffizienten. Bei der Kompression von Multimedia-Daten gibt es aber auch noch andere Ziele als die blosse Datenreduktion. Bei MPEG, den Standards der Motion Picture Expert Group, waren beispielsweise wichtige Ziele, dass ein Echtzeit-Encoder mit überschaubaren Kosten in Hardware und ein Echtzeit-Decoder auf verbreiteter Software umsetzbar ist. Weitere Forderungen bestanden darin, dass man im Datenstrom vor- und zurückspulen und ihn auch rückwärts abspielen kann. Ausserdem soll das Ganze resistent gegen KAPITEL 5. DIGITAL AUDIO 70 Kaskadierung sein: Wenn jemand einen Song überspielt (und dabei dekodiert und wieder kodiert), sollen keine neuen Artefakte dazukommen. Darüber hinaus sollte die Bitrate fest sein. Die Netzwerktechnik ist heute so weit, dass man garantierte Bandbreite reservieren kann; man muss also schon am Anfang wissen, wie viel Bandbreite man maximal belegen wird. Und wenn man sich entsprechenden Platz reserviert hat, möchte man ihn auch komplett ausnutzen. Auch würde man gerne den benötigten Platz in Abhängigkeit von der aufgenommenen Zeit berechnen können - dadurch sind Angaben wie ‘auf diese CD passen vier Stunden Musik’ möglich. Deshalb verfolgt MPEG nicht den Ansatz, ein gegebenes Signal auf möglichst wenig Platz abzulegen, sondern eine gegebene Bandbreite optimal für das Signal auszunutzen. Das Ziel der Hardware-Realisierung erkennt man bei MPEG-Audio etwa daran, dass die Konfiguration der Filterbänke im Standard fest definiert und nicht vom Signal abhängig ist; ausserdem benötigt die Technik kein Wissen über das vergangene Signal (das würde im Encoder viel Speicherplatz benötigen und Vor- sowie Zurückspulen wäre nicht möglich). Eine Filterbank ist das Hardware-Äquivalent einer Fourier- oder Cosinus-Transformation und besteht aus vielen parallelen Bandpass-Filtern. Der MPEG-Standard sieht allerdings auch vor, dass man ein Signal auf möglichst wenig Platz ablegen kann. Das Stichwort dafür ist VBR (Variable Bitrate). Der Encoder belegt dabei für schwache Abschnitte des Signals weniger Bandbreite als für starke. Aber auch ohne VBR hat MPEG Layer 3 ein so genanntes Bit-Reservoir, das der Encoder in schwächeren Perioden ansammelt und dann bei dynamischeren Perioden benutzt. Dieses Reservoir ist aber nicht sonderlich gross, da dies sonst wieder viel Speicher beim Encoder verlangen würde. Ausserdem darf es nur sehr kurze Zeit verwendet werden, damit beim Vorspulen (wobei das Reservoir übersprungen würde) keine Schwierigkeiten auftauchen. 5.2.2 MPEG Audio Das MPEG-Gremium hat sich ursprünglich mit Video-Kompression beschäftigt. MPEG-Audio ist in so genannten Layern definiert. Layer 1 ist die Basis, die alle En- und Decoder leisten müssen. Decoder für Layer 2 können automatisch auch Layer 1 spielen, aber nicht umgekehrt. Die berühmten MP3-Dateien sind nach MPEG-1 Layer 3 kodiert (MPEG-2 Layer 3 für die sehr kleinen Bitraten). MPEG-2 unterscheidet sich von MPEG-1 vor allem durch zusätzlich definierte Bitraten, Multichannel-Erweiterungen und der alternativen, zu MP3 inkompatiblen Kodierung AAC (Advanced Audio Coding). Bei dem so genannten perzeptionellen Audio-Coding existiert allerdings das Problem, dass die Wissenschaft die Eigenschaften des Gehörs noch nicht vollkommen verstanden hat. Erst in letzter Zeit gibt es fundierte Daten über die verschiedenen Maskierungseffekte. Diese Daten können nur über Hörtests gewonnen werden, an denen viele Testhörer beteiligt sein müssen, damit man in der Lage ist, die Ergebnisse zu verallgemeinern. MPEG Layer 3 ist beispielsweise unter anderem in Deutschland bei der Fraunhofer-Gesellschaft in Erlangen entwickelt worden, wobei die Hörtests mit Steuergeldern finanziert wurden. Die Firmen und Institute sind dabei in einer Zwickmühle. Forschungsausgaben lassen sich nur rechtfertigen, wenn das Verfahren Verbreitung findet. Auf der anderen Seite findet es nur Verbreitung, wenn es international standardisiert ist. Trotzdem möchte man an Encodern und am besten auch Decodern verdienen. Die ISO, die die MPEG-Entwicklungen als Standards übernimmt, schreibt aber vor, dass Patenthalter an alle zu den gleichen Konditionen Lizenzen vergeben müssen: Der Mann an der Ecke zahlt genau so viel Gebühren wie grössere Firmen wie Microsoft. Bei MPEG ist daher nur der Decoder eindeutig definiert. So ermöglicht man eine weite Verbreitung des Verfahrens, kann aber bei den Encodern Lizenzgebühren kassieren. Für Encoder heisst das aber auch, dass der teuerste (und der wichtige und interessante) Teil, nämlich das psychoakustische Modell, nicht offen gelegt wird. Encoder kann also nur bauen, wer selbst neben dem nötigen Know-how auch das Geld für Hörtests hat oder das Wissen von der Fraunhofer Gesellschaft lizenziert. Eine wichtige Konsequenz ist, dass Aussagen wie “MPEG ist besser als AC-3” Unsinn sind: Die Qualität der Kompression hängt fast ausschliesslich von dem psychoakustischen Modell ab, das nicht mitspezifiziert ist und in der Regel als Firmengeheimnis behandelt wird. Der für den Hörtest verwendete MP3-Encoder verwendet das freie psychoakustische Modell GPSYCHO1 . 1 http://lame.sourceforge.net/gpsycho/gpsycho.html KAPITEL 5. DIGITAL AUDIO 5.2.3 71 Akustikmodell Wenn auch der Encoder nicht spezifiziert ist, so sind doch die von ihm ausgenutzten Eigenschaften des menschlichen Gehörs dokumentiert. Am wichtigsten ist dabei die adaptive Hörschwelle (adaptive hearing threshold): Die leiseste wahrgenommene Lautstärke hängt nicht nur vom Individuum, sondern auch von der Frequenz ab. Das Gehör der meisten Leute ist zwischen ein und fünf Kiloherz am empfindlichsten. Diese Minimallautstärke hängt aber auch vom Umgebungsgeräusch ab. Das Ticken eines Weckers ist normalerweise gut hörbar - aber nicht, während er klingelt, obwohl er natürlich weitertickt. Man spricht davon, dass Geräusche wie das Ticken maskiert werden. Dieser Effekt findet sich auch überall bei Musikaufnahmen, etwa wenn ein Schlagzeug beispielsweise die Bratsche kurzzeitig maskiert. Das Aufnahmegerät nimmt die Bratsche zwar mit auf, man hört sie aber eben nicht. Dieser Effekt tritt interessanterweise nicht nur bei gleichzeitigen Signalen auf. Das Ohr braucht eine kurze Zeit, nachdem der Schlagzeuger Ruhe gibt, bevor sich die Schwelle wieder gesenkt hat (Abbildung 5.5). Ausserdem gibt es sogar einen kurzen Maskierungseffekt vor dem ersten Schlag. Je näher das leisere Signal an der Frequenz des maskierenden Geräuschs ist, desto lauter kann es sein und trotzdem maskiert werden. starkes Signal maskiertes Signal Abbildung 5.5: Ein besonders starkes Signal kann nicht nur mehrere schwächere Folgesignale maskieren, sondern auch Signale überdecken, die isoliert gesehen relativ laut wirken würden. Eine verlustbehaftete Audiokompression wird also versuchen, Töne, die von anderen Tönen maskiert werden, gar nicht abzuspeichern, da der Mensch diese nicht wahrnimmt. 5.2.4 Mehrkanal Bei Mehrkanalsignalen kann ein Encoder zusätzlich auch Redundanzen zwischen den Kanälen ausnutzen. Normalerweise würde er jeden Kanal einzeln speichern und so den benötigten Platz verdoppeln. MPEG Layer 3 hat dafür den Modus Joint Stereo eingeführt. Die Idee dabei ist, dass man für manche Frequenzen auf dem linken Kanal die Summe der beiden Eingabekanäle kodiert und auf dem rechten Kanal die Differenz. Das hat wie im Radio unter anderem den Vorteil, dass ein Mono-Decoder nur einen Übertragungskanal dekodieren muss und man trotzdem das Signal aus beiden Kanälen hören kann. Dem Encoder bietet Joint Stereo den Vorteil, dass er für beide Kanäle nicht gleich viel Platz braucht. Dem Differenzsignal fehlen ja die Anteile, die beide Kanäle gemeinsam haben. Also kann der Encoder für das Summensignal 70 Prozent der Bandbreite und für das Differenzsignal nur 30 Prozent vorsehen (dabei setzt ein Encoder auf spezielle handselektierte Schwellenwerte). Der bei MPEG-2 eingeführte Mehrkanalmodus richtet sich vor allem auf Kinofilme und Heimkino. Historisch gesehen ist es aber interessant, dass Stereo nicht prinzipiell für zwei Kanäle steht. In den 30er Jahren haben die Bell Labs frühe Experimente mit Stereo-Sound gemacht, allerdings mit drei Kanälen. KAPITEL 5. DIGITAL AUDIO 72 In den Kinos gab es in den 50er Jahren erstmals Stereo, wobei vier bis sieben Kanäle gemeint waren. Stereo wurde erst zum Synonym für zwei Kanäle, als es in Form des Plattenspielers die Privathaushalte erreichte. Der Plattenspieler bildete Stereo über die beiden Seiten der Rille auf der Schallplatte ab und war deshalb durch die Hardware auf zwei Kanäle limitiert. Die Dolby Labs haben mit dem Dolby-Surround-Verfahren Mehrkanal-Ton im Heim etabliert, der die zusätzlichen Kanäle analog im Zweikanal-Signal versteckt. Dolby hat sich schon bei der berühmten Rauschunterdrückung (etwa Dolby B und Dolby C bei Kassettendecks) mit der Psychoakustik beschäftigt. Anfangs wurde einfach gemessen, welche Teile des Signals Kassetten gewöhnlich verrauschen - das Signal hat man dann einfach lauter aufgespielt und beim Abspielen wieder (mit dem Rauschen) leiser geregelt. Später hat Dolby dann auch mit AC1 bis AC3 (inzwischen Dolby Digital genannt) verschiedene Kompressionsverfahren für Digital-Sound beim Kinofilm entwickelt. 5.2.5 Weitere Kompressionsverfahren Auch Dolby spezifiziert wie MPEG nicht den Encoder, sondern nur den Decoder und ist damit genau so ’offen’ wie MPEG. Das Unternehmen hat allerdings nach eigenen Aussagen doppelt so viele Anwälte wie Ingenieure, was möglicherweise einer der Gründe dafür ist, dass bisher niemand ausser Dolby einen AC-3 Encoder gebaut hat. AC-3 ist heute im Kino und auf DVDs neben MPEG-2 (allerdings nur Layer 2, nicht AAC) der am häufigsten eingesetzte Standard zur Audio-Kompression. Für Kinofilme und DVDs haben sich auch 5.1-Kanäle durchgesetzt, wobei der Zehntel-Kanal für Bass-Effekte gedacht ist und sehr wenig Bandbreite hat. Neben MPEG und AC-3 ist Sonys proprietäres MiniDisc-Verfahren ATRAC relativ verbreitet. ATRAC komprimiert immerhin auf ein Fünftel der Originalgrösse - dies ist zwar heute nicht mehr sehr viel, aber bei Erscheinen der MiniDisc war dieser Kompressionsfaktor sehr beeindruckend. Ohne ATRAC würden nur 15 Minuten auf eine MiniDisc passen. 5.2.6 MPEG Layer 1 Der erste Schritt bei MPEG ist die Polyphase-Filterbank, die das Signal in 32 gleich breite FrequenzSubbänder aufteilt. Die Filter sind verhältnismässig einfach und haben eine gute Zeitauflösung; die Frequenzauflösung ist ebenfalls recht brauchbar. Bis auf drei Punkte ist das Design ein guter Kompromiss: • Das Gehör teilt das Signal nicht in gleich breite Subbänder auf, sondern sie werden mit steigender Frequenz exponentiell breiter. Bei den Maskierungseffekten kann man die Subbänder des Gehörs beobachten (von 100 Hz für tiefe Frequenzen bis 4 kHz für Höhen), nicht die von MPEG. • Die Filterbank und die Synthese sind verlustbehaftet. Das ist allerdings nicht hörbar. • Benachbarte Bänder haben signifikante Frequenzüberlappung, weil die Filterbänke nicht scharf abschneiden, sondern mit Cosinus approximieren. Ein Ton auf einer Frequenz kann also in zwei Subbändern auftauchen und so die Kompression verschlechtern (Aliasing). Die Filterbank nimmt je 32 Eingabe-Samples und produziert daraus je ein Sample in jedem der 32 Subbänder. Ein Layer-1-Frame hat insgesamt 384 Samples, in dem er zwölf Samples aus jedem der 32 Subbänder gruppiert. Der Encoder befragt das psychoakustische Modell und allokiert dann pro SampleGruppe entsprechend Bits. Wenn eine Sample-Gruppe mehr als 0 Bits zugewiesen bekommen hat, wird auch ein 6-Bit-Skalierungsfaktor mitgespeichert: So kann man den Wertebereich des Quantisierers vergrössern. 5.2.7 MPEG Layer 2 Layer 2 kodiert die Daten in grösseren Gruppen und schränkt die Bit-Allokationen in mittleren und hohen Subbändern ein, weil diese für das Gehör nicht so wichtig sind. Die Bit-Allokationsdaten, die Skalierungsfaktoren und die quantisierten Samples werden kompakter abgelegt. Durch diese Einsparungen können mehr Bits in die Audio-Daten investiert werden. KAPITEL 5. DIGITAL AUDIO 73 Ein Layer 2 Frame hat 1152 Samples pro Kanal. Es werden nicht Gruppen von zwölf Samples betrachtet, sondern Dreier-Blöcke zu je zwölf Samples pro Subband. Die Bits vergibt das Verfahren pro Dreiergruppe, aber es existieren bis zu drei Skalierungsfaktoren. Ausserdem kann Layer 2 drei quantisierte Werte in einem einzigen, kompakteren Code-Wort ablegen, wenn er drei, fünf oder neun Levels für die SubbandQuantisierung vergeben hat. 5.2.8 MP3 - MPEG Layer 3 MPEG Layer 3 (meist als MP3 bezeichnet) benutzt eine modifizierte diskrete Cosinus-Transformation (MDCT) auf die Ausgabe der Filterbänke und erhöht damit die Auflösung drastisch. Dadurch kann Layer 3 auch die Aliasing-Effekte zurückrechnen - der Decoder muss das allerdings wieder hinzufügen. Layer 3 spezifiziert zwei MDCT-Blocklängen: 18 und sechs Samples. Aufeinander folgende TransformationsFenster überlappen sich zu 50 Prozent, sodass die Fenster 36 und 12 Samples umfassen. Die lange Blockgrösse ermöglicht eine bessere Frequenzauflösung für stationäre Audio-Signale, während die kurze Blocklänge bessere Zeitauflösung für transiente impulsartige Signale bietet. Layer 3 definiert Varianten, in welcher Kombination kurze und lange Blöcke vorkommen können. Der Wechsel zwischen Blocklängen funktioniert nicht unmittelbar, sondern wird durch einen speziellen langen Block eingeleitet. Weil MDCT bessere Frequenzauflösung bietet, ist die Zeitauflösung entsprechend schlechter. MDCT operiert auf 12 oder 36 Filterbank-Samples, also ist das effektive Zeitfenster um den Faktor 12 oder 36 grösser. Das Quantisierungsrauschen erzeugt also Fehler, die über dieses grosse Zeitfenster verteilt sind - es ist wahrscheinlicher, dass man sie hört. Bei einem Signal, in dem sich laute und leise Abschnitte in schneller Folge abwechseln, verteilt sich das Rauschen nicht nur auf die lauten Stellen, wo man es weniger stark hören würde, sondern auch auf die leisen. Diese Störungen treten gewöhnlich als Pre-Echo auf, weil die temporale Maskierung vor einem Signal schwächer (und kürzer) ist als danach. Neben MDCT hat Layer 3 noch andere Verbesserungen gegenüber früheren Verfahren: • Layer 3 kann die Aliasing-Effekte der Filterbank wegrechnen. • Der Quantisierer potenziert die Eingabe mit 3/4, um die Signal-to-Noise-Ratio gleichmässiger auf den Wertebereich der Quantisierungswerte zu verteilen. Der Decoder muss das natürlich wieder rückgängig machen. • Die Skalierungsfaktoren werden bei Layer 3 in Bändern zusammengefasst. Ein Band umfasst mehrere MDCT-Koeffizienten und hat ungefähr die Breite der Bänder des Gehörs. So wird das Quantisierungsrauschen ähnlich den Konturen der Maskierungsschwelle eingefärbt, damit es keine Rausch-Spitzen gibt. • Layer 3 benutzt einen statischen Huffman-Code für die quantisierten Samples. Der Encoder sortiert die 576 Koeffizienten (32 Subbänder x 18 MDCT-Koeffizienten) in einer standardisierten Reihenfolge. Dies soll dafür sorgen, dass die hohen Werte von den tiefen Frequenzen am Anfang stehen und die kleinen am Ende. Dann vergibt der Encoder für die hohen Werte am Anfang lange und für die kleinen Werte kurze Code-Wörter. Die Koeffizienten werden in drei Regionen aufgeteilt, die jeweils eine speziell optimierte Huffman-Tabelle benutzen. Teilweise bildet man hier auch mehrere Zahlen auf einen Huffman-Code ab. • Das Bit-Reservoir ist ebenfalls eine Innovation von Layer 3. Der Encoder darf nur Bits entnehmen, die er vorher in das Reservoir gepackt hat - Kredit wird nicht gegeben. 5.2.9 MPEG2/4 AAC Die Details von AAC würden den Rahmen hier bei weitem sprengen. Grundsätzlich teilt AAC das Signal erst mit einem Polyphase Quadrature Filter (PQF) in vier Subbänder, für die es jeweils einen Verstärkungsfaktor separat überträgt. Die vier Subbänder werden jeweils mit einer MDCT der Länge 256 transformiert - für sehr dynamische Passagen kommt auch eine MDCT-Länge von 32 zum Einsatz. Die Koeffizienten sagt AAC aber mit einem speziellen Mechanismus für jedes Frequenzband aus den zwei vorhergehenden Frames vorher. Bei stationären Signalen erhöht das die Effizienz. Die Differenzen KAPITEL 5. DIGITAL AUDIO 74 quantisiert das Verfahren nicht-uniform; es benutzt einen von zwölf vordefinierten Huffman-Codes. Eine wichtige Neuerung ist das Temporal Noise Shaping (TNS), das auf dynamische Signale zugeschnitten ist. Dabei nutzt man die Beobachtung aus, dass ein Ton in der Frequenzdarstellung wie ein Impuls aussieht. Umgekehrt sieht ein Impuls in der Frequenzdarstellung wie ein tonales Signal aus. Tonale Signale kann man mit einem Linear Predictive Coding (LPC)-Ansatz gut vorhersagen. Es kommt dann ein linearer Vorhersager zum Einsatz, um das nächste spektrale Sample zu bestimmen. Im Zuge von MPEG-4 wurde in AAC noch eine sog. Perceptual Noise Substituion eingebaut. Der Encoder codiert Rauschen nicht mehr, sondern teilt dem Decoder lediglich die Rauschleistung und die Frequenz mit. MPEG4-AAC gliedert sich in verschiedene Profile, die jeweils verschiedene Techniken ausnutzen. So unterstützt QuickTime 6 momentan nur das “Low Complexity” (LC) Profil, während der Frauenhofer Codec Daten für das “Long Term Prediction” (LPT) Profil erzeugt. Somit kann der QuickTime Player diese nicht decodieren. 5.2.10 MP3 Pro MP3 Pro erweitert und verbessert MP3 bei niedrigeren Bitraten (um 64kBit/s) bei Kompatibilität zum MP3-Format. Die Kompatibilität heißt allerdings nicht, dass die verbesserten Fähigkeiten von MP3 Pro auch mit einem “normalen” MP3 Decoder genutzt werden können. MP3 Pro versucht mittels Spectral Band Replication (SBR) die bei MP3 verlorenen höheren Harmonischen zu rekonstruieren. Beim Kodieren wird diese Zusatzinformation in den MP3-Bitstrom eingefügt. SBR verliert bei höheren Bitraten zunehmend an Wirkung, sodaß bei Bitraten über 96kBit/s der Einsatz keinen Sinn mehr macht. Ein Nachteil des MP3 Pro Formats ist auch, dass es bei keiner Bitrate tatsächliche Transparenz (kein wahrnehmbarer Unterschied zwischen Original und codiertem Stück) erzeugt. [LZ02] 5.2.11 Ogg Vorbis Ogg Vorbis ist ein Oberbegriff für eine Vielzahl von Multimediaformaten der Xiphophorous Foundation2 . Das Besondere an Ogg Vorbis ist, dass es sich um ein patent- und lizenzfreies Modell handelt. Der Open-Source Codec geniesst daher schon aus diesem Grund einen guten Ruf. Ogg Vorbis liefert aber auch eine sehr gute Tonqualität. Er ist (lt. [LZ02]) auch der einzige Codec, der bei einer Bitrate von 128kBit/s das Signal erst bei 20kHz beschneidet (bei 64kBit/s immerhin erst bei 15,2kHz). Ogg Vorbis unterstützt bis zu 255 Kanäle und es gibt schon Bestrebungen, Multikanal für DivX Videos zu nutzen. Sowohl beim C’t Test [LZ02] als auch bei einem Test der Zeitschrift Chip3 , schnitt Ogg Vorbis erstklassig ab. 5.2.12 TwinVQ TwinVQ wurde vom japanischen Telekommunikationskonzern NTT entwickelt und verfolgt einen anderen Ansatz als MPEG. Beide Verfahren wandeln zwar das Signal in die Kurzzeit-Frequenzdarstellung, aber TwinVQ kodiert die Samples dann nicht, sondern betrachtet jeweils Muster aus Samples in Form von Vektoren. Der Encoder greift auf eine Tabelle von Standardmustern zurück, mit denen er die Eingabevektoren vergleicht. Der Index des Vektors, der der Eingabe am nächsten ist, wird dann übertragen. Die Artefakte von TwinVQ sind anders als bei MPEG. Es klingt nicht so, als würde Rauschen dazukommen, sondern als würden Teile des Signals verloren gehen: Es klingt sozusagen ’weichgespült’. Bei Sprachübertragung geht dabei gewöhnlich unter anderem beispielsweise der Strassenlärm-Teil des Signals 2 http://www.xiph.org/ 3 http://www.chip.de/produkte_tests/produkte_tests_8731098.html KAPITEL 5. DIGITAL AUDIO 75 verloren. Daher ist TwinVQ für Sprachübertragung und für sehr kleine Bitraten ausgezeichnet geeignet und wurde in MPEG-4 aufgenommen. 5.2.13 ATRAC ATRAC steht für Adaptive Transform Accoustic Coding und ist der von Sony entwickelte Codec für die MiniDiscs. Ein ATRAC-Frame hat 512 Samples; die Eingabe wird erstmal mit einem QMF (Quadrature Mirror Filter) in drei Subbänder unterteilt, die jeweils nochmal mit MDCT aufgeteilt werden: 0 bis 5,5 kHz (128 MDCT), 5,5 bis 11 kHz (128 MDCT) und 11 bis 22 kHz (256 MDCT). Es gibt auch einen langen Block-Modus (11,6 ms) und einen Modus mit drei kurzen Blöcken (2,9 ms + 2,9 ms + 1,45 ms). Die Koeffizienten quantisiert ATRAC nach Wortlänge und versieht sie mit einem Skalierungsfaktor. Bei ATRAC schleichen sich bei einer Kaskadierung Artefakte ein. MPEG hingegen hat sich in Hörtests als weitgehend resistent dagegen erwiesen. 5.2.14 Dolby AC-3/QDesign Dolby AC-3 ist ebenfalls ein psychoakustischer Transformations-Codec, der eine Filterbank mit AliasingKürzung verwendet. Überlappende Blöcke aus 512 Eingabe-Samples wandelt das Verfahren mit einer Transformation zu 256 spektralen Koeffizienten. Die Transformation hat die Eigenschaften von MDCT; die AC-3 Dokumente nennen es allerdings nur TDAC: Dies bedeutet nichts anderes als Time Domain Aliasing Cancellation und beschreibt die wichtigste Eigenschaft von MDCT. Dolby macht zu dem Verfahren keine genaueren Angaben, weil es sich um ein Geschäftsgeheimnis handle, das man nur mit einer Vereinbarung, keine Details zu veröffentlichen, lizenzieren kann. Ähnliches erfährt man auch von QDesign, Hersteller des Audio-Codec von Apples QuickTime: Anfragen wies die Firma mit dem Hinweis ab, dass es sich bei den technischen Details um ein Geschäftsgeheimnis handle. Die Firma behauptet jedenfalls, ihr psychoakustisches Modell selbst entwickelt zu haben. Leider sind über den Algorithmus keine Details bekannt; auf der Webseite von QDesign findet man nur die Aussage, dass ihr neuer Codec die Audio-Quelle parametrisch erfasst, das Signal in ’relevante Komponenten’ zerlegt und das Ergebnis als Koeffizienten ablegt. Von der Differenz speichert der Encoder ab, wofür er Platz hat. 5.2.15 Wave Dieses Audioformat (Dateiendung *.wav) von Microsoft und IBM ist Bestandteil der RIFF (Resource Interchange File Format)-Spezifikation und war ursprünglich nur für 16-Bit-Stereo und maximal 44.1kHz Sample-Frequenz gedacht. Dies hielt die Audioindustrie jedoch nicht davon ab, dieses Format mit 32 Bit und 96kHz zu nutzen. In diesem verlustfreien Format können einfach die Daten der PCM-Codierung, aber auch die Codierungsalgorithmen a-Law, µ-Law (Dynamik Kompression) und ADPCM verwendet werden. 5.2.16 MSAudio - WMA Microsoft hat innerhalb kürzester Zeit ASF als ein Konkurrenzmodell zu MP3 aus dem Boden gestampft, das sowohl Audio als auch Video enthalten kann. Es ermöglicht Streaming bis zu 160kbit/sec. Einiges zum Thema MSAudio lässt sich derzeit gar nicht oder nur vage beantworten. So hört man aus ansonsten gut unterrichteten Kreisen, Microsoft habe Entwickler extra eingekauft. Die Zeit für langwierige Forschung und Hörversuche hatte die Firma wohl nicht. Die dem Perceptual Audio Coding zugrundeliegenden Verfahren sind überall bestens dokumentiert und veröffentlicht - hier lässt sich fremdes Know-how wunderbar ausschlachten. Dass es sich bei MSAudio nicht um eine revolutionäre neue Technologie handelt, wird schon daran deutlich, dass Microsoft bisher keinerlei Patente angemeldet hat. [CO99] Die WMA 9 Version von Microsofts Audio Codec kann zusätzlich zu den verlustbehafteten Kompressionsarten auch mit einer Verlustlosen aufwarten. Der Player hat allerdings das Problem, dass er nur unter KAPITEL 5. DIGITAL AUDIO 76 Windows XP läuft. 5.2.17 Realaudio Dieses Streamingverfahren verwendet ein unbekanntes (Firmengeheimnis) Coding. Real erweiterte seinen Real-Audio 8 Codec um Surround Eigenschaften, bleibt aber trotzdem abwärtskompatibel. Ein Vorteil dieses Formats ist die Verfügbarkeit des Real Players, den es für alle Betriebssysteme gibt. In Version 9 hat RealNetworks grosse Teile seines Codes als Open Source (RealNetworks Public Source License (RPSL)) zur Verfügung gestellt. Unter http://www.helixcommunity.org/ finden sich mehr Details. 5.2.18 Literatur zu Digital Audio • Ein Grossteil des Wissens in diesem Kapitel stammt aus [vL00] bzw. aus [LZ02]. • Ein ganz guter Artikel über “Audio Compression” ist unter http://www.cs.sfu.ca/undergrad/ CourseMaterials/CMPT479/material/notes/Chap4/Chap4.3/Chap4.3.html zu finden. Vor allem ist da eine Beschreibung, wie ein psychoakustisches Modell entwickelt wird, zu finden. • Für den MP3-Hörtest wurde das Programm “lame” verwendet. http://lame.sourceforge.net/ • eine gute Linksammlung ist auf http://www.mpeg.org/MPEG/links.html zu finden. 5.3 MP3 Hörtest Für den mp3-Hörtest wurden verschiedene Teile von Musikstücken von CD in mp3-Dateien codiert. Ein gute Mischung aus verschiedenen Musikstilen wurde gegenüber einer akademischen Klanganalyse bevorzugt. Eine genaue Auflistung der verwendeten Stücke und wie diese erzeugt wurden, ist in Anhang A zu finden. 5.4 MIDI Musical Instrument Digital Interface (MIDI) ist kein Soundformat, wie die oben besprochenen, sondern eine Definition von Klangbeschreibungen. Es dient nicht zum Digitialisieren von bestehender Musik, sondern vielmehr zum Produzieren von neuer Musik. Es wurde 1983 von Sythesizerfirmen als serieller Schnittstellenstandard zum Austausch von Musikdaten definiert. MIDI beschreibt keine Einzelsamples, sondern Daten wie • Tonhöhe • Lautstärke • Klangbild • Anschlagdynamik • Instrument • etc. Generell verfolgt MIDI das Ziel, durch eine standardisierte Beschreibung des Klanges, diesen überall, auch mit verschiedenen Geräten, reproduzieren zu können. Dies ermöglicht eine sehr effiziente Übertragung KAPITEL 5. DIGITAL AUDIO 77 (da ja nicht der Klang selbst, sondern nur eine Beschreibung, wie er erzeugt werden kann, übertragen werden muss), setzt aber auch voraus, dass alle MIDI-Geräte die verwendeten Klänge abspielen können. General MIDI stellt dazu eine Instrumententabelle4 und eine percussion map 5 zur Verfügung, die garantieren soll, dass alle beteiligten MIDI-Geräte “die gleiche Sprache sprechen”. MIDI-Geräte kommunizieren mittels Nachrichten. Es gibt zwei Arten von Nachrichten: • Channel Messages: werden benutzt, um einzelne Kanäle anzusprechen, und nicht ein oder mehrere komplette MIDI-Geräte • System Messages: tragen nicht Kanal-spezifische Informationen, wie z.B. timing-Signale für die Synchronisation oder Setup-Informationen für ein MIDI-Gerät Channel Messages enthalten Informationen, • welche bestimmten Klänge ein Instrument abspielen soll, • dass bestimmte Noten ein- oder ausgeschaltet werden sollen, • dass der aktuelle Ton oder die aktuelle Note verändert werden soll. Eine byte-genaue Aufschlüsselung der Nachrichten würde hier den Rahmen sprengen, kann aber unter http://www.cs.sfu.ca/CourseCentral/365/li/material/notes/Chap3/Chap3.1/Chap3.1.html eingesehen werden. Eine weitere gute Quelle für Informationen über MIDI ist http://www.midi.org, MIDI-Dateien en masse können z.B. bei http://www.midi.com gefunden werden. 4 http://www.cs.sfu.ca/CourseCentral/365/li/material/notes/Chap3/Chap3.1/instrument.html 5 http://www.cs.sfu.ca/CourseCentral/365/li/material/notes/Chap3/Chap3.1/percussion.html Kapitel 6 Digital Images Da sich ein Grossteil der Erklärungen in diesem Kapitel sowohl auf Bilder als auch auf Grafiken beziehen, wird der Begriff Bilder als Sammelbegriff für beide verwendet werden. Bilder gehören fast zu jeder (multimedialen) Präsentation, sei es im Web, in einem Informationssystem oder bei einer Präsentation. Sie werden zur Informationsvermittlung, zur Erklärung oder einfach als optischer Aufputz verwendet und nicht umsonst heisst das Sprichwort “ein Bild sagt mehr als tausend Worte”. Bilder wurden bereits in der Steinzeit als Kommunikationsmedium (Felszeichnungen) benutzt und geschätzt, da sie ohne viele Erklärungen von vielen Menschen verstanden werden (bei moderner Kunst gilt dies oft nicht mehr :-). Eine Eigenschaft von Bildern wird jedoch in fast allen Fällen ausgenutzt: Der Mensch ist imstande, innerhalb von sehr kurzer Zeit den Inhalt eines Bildes zu erfassen. Darum ist das Wissen um den Aufbau und Eigenschaften von verschiedenen Bildformaten eine grundlegende Voraussetzung für den optimalen Einsatz. 6.1 Das Auge Etwa 126 Millionen Sinneszellen kleiden das Innere des Augapfels aus (das ergibt ca. 400.000 Zellen/mm2 ) und bilden die Netzhaut (Retina). Es gibt zwei Arten von Photorezeptoren: • Stäbchen arbeiten bereits bei niedriger Lichtintensität und dienen daher dem Dämmerungssehen (Hell/Dunkel). Ein Auge enthält ca. 120 Millionen Stäbchen. • Zapfen dienen dem Tages- und Farbsehen. Jeder Mensch hat ca. 6 Millionen Zapfen pro Auge. In jeder Sekunde werden ca. 20 Bilder über den Sehnerv an das Gehirn übermittelt. [Hol00] 6.1.1 Farbe Das menschliche Auge wandelt elektromagnetische Strahlung einer bestimmten Wellenlänge in eine vom menschlichen Gehirn verständliche Information um. Das Gehirn ordnet dann dieser Information den Sinneseindruck Farbe zu. Gegenstände, die von einer Lichtquelle beleuchtet werden, reflektieren und absorbieren jeweils einen Teil des Lichts. Das für den Menschen sichtbare Spektrum reicht etwa von 380nm (blau) bis zu 780nm (rot). Verschiedene Arten von Zapfen auf der Netzhaut sind mit verschiedenen lichtempfindlichen Farbstoffen ausgestattet [Hen00]: • rot (ca. 580nm), zu etwa 64% vertreten 78 KAPITEL 6. DIGITAL IMAGES 79 • grün (ca. 545nm), zu etwa 32% vertreten • blau (ca. 440nm), zu etwa 4% vertreten Werden alle drei Zapfensorten zu gleichen Teilen angeregt, “sieht” der Mensch Grautöne (schwarz bis weiss, je nach Intensität). Bevor das Signal jedoch in das Sehzentrum des Gehirns geleitet wird, erfährt es noch eine Farbveränderung und es werden aus den separaten Signalen für rot, grün und blau drei neue Signale gebildet. • Differenzsignal rot - grün zur rot/grün Unterscheidung • Summensignal rot + grün = gelb = Y zur Gelb- und Helligkeitswahrnehmung - Im Laufe der Evolution hat sich die spektrale Empfindlichkeit der Helligkeitswahrnehmung an die Farbe der Sonne angepasst. • Differenzsignal gelb - blau zur blau/gelb Unterscheidung. Zunächst noch einige Begriffe, die im Zusammenhang mit Farben immer wieder auftreten: • Die Helligkeit (brightness) bestimmt, wie intensiv ein visueller Reiz erscheint bzw. wieviel Licht die Fläche abzustrahlen scheint (“dunkel” bis “hell”). • Farbton (hue) ist das Attribut einer Farbwahrnehmung, das durch Namen wie “rot”, “grün” usw. bezeichnet wird. • Sättigung (saturation) ermöglicht ein Urteil, wie stark sich ein farbiger Reiz von einem anderen unabhängig von dessen Helligkeit unterscheidet. 6.1.2 Richtlinien für die Verwendung von Farben Die bedachte Auswahl der Farben ist bei Informationssystemen sehr wichtig, da verschiedene Farben auf der einen Seite psychologische Wirkung auf Personen haben, auf der anderen Seite physikalische Gegebenheiten des Auges verschiedenes voraussetzen. Laut [Hen00] sollen folgende Dinge wegen diverser Eigenschaften des Sehapparates vermieden werden: • Gleichzeitige Darstellung mehrerer gesättigter Farben aus unterschiedlichen Bereichen des Spektrums, da dies das Auge ermüdet. • Blauer Text, dünne Linien oder kleine Formen, da im Zentrum der Retina keine blau-sensitiven Zapfen zu finden sind. • Verwendung von rot und grün in der Peripherie grösserer Bilder oder Anzeigen. • Verwendung von roten Zeichen auf blauem Hintergrund: Beispieltext in Rot • Verwendung benachbarter Farben, die sich nur im Blauanteil unterscheiden. • Verwendung von Farbe als alleinigem Unterscheidungsmerkmal bei der Codierung (ca. 9% aller Männer sind Farbenblind) Zu beachten ist weiters: • Ältere Benutzer benötigen eine höhere Lichtintensität. • Farbwahrnehmung ist abhängig vom Umgebungslicht. • Bei gesättigten Farben ist das Auge weniger empfindlich für Farbtonunterschiede. KAPITEL 6. DIGITAL IMAGES 6.2 80 Farbmodelle Der Zweck eines Farbmodells ist immer die bequeme Spezifikation von Farben. Ein Farbmodell enthält nicht unbedingt alle wahrnehmbaren Farben! Eine gute Einführung in Farbmodelle ist u.a. unter http: //www.adobe.com/support/techguides/color/colormodels/rgbcmy.html zu finden. 6.2.1 RGB-Farbmodell Das RGB (rot-grün-blau) Modell ist das meistverwendete Modell zur Ausgabe auf aktiv lichterzeugenden Medien (z.B. Displays, ...). Die Farbmischung in diesem Modell erfolgt additiv, d.h. die spektralen Intensitäten der einzelnen Lichtkomponenten werden addiert (alle drei Farben zusammen in höchster Intensität ergeben weiss - siehe auch Abbildung 6.3). Abbildung 6.1 zeigt den Farbraum des RGB-Modells, der einen Würfel mit der Kantenlänge 1 darstellt. Grauwerte liegen auf der Hauptdiagonale zwischen schwarz und weiss. Schön experimentieren lässt sich mit den Farbauswahldialogen von Photoshop oder Gimp1 , die verschiedene Abbildungen des RGB-Würfels auf eine Ebene vorweisen. So lassen sich auch leichter die Zusammenhänge zwischen RGB und YUV verstehen (siehe Abbildung 6.2). cyan (0,1,1) blau (0,0,1) blau−Achse weiss (1,1,1) magenta (1,0,1) grün−Achse grün (0,1,0) schwarz (0,0,0) gelb (1,1,0) rot−Achse rot (1,0,0) Abbildung 6.1: Farbraum des RGB-Modells [Hen00] 6.2.2 CMY-Farbmodell Das CMY (cyan-magenta-yellow) Modell ist das meistverwendete Modell zur Ausgabe auf reflektierenden Medien (z.B. Druckern, ...). Die Farbmischung erfolgt subtraktiv, d.h. die spektralen Intensitäten der einzelnen Lichtkomponenten werden entsprechend dem Farbwert von Gegenständen absorbiert und der Rest reflektiert (aus dem weissen Licht entfernt, siehe auch Abbildung 6.3). Grauwerte liegen wiederum auf der Hauptdiagonalen. Der Farbbereich (color gamut) im CMY-Farbmodell (siehe Abbildung 6.4) ist nicht identisch mit dem des RGB-Modells, d.h. dass im Allgemeinen nicht alle angezeigten Farben auf einem Bildschirm auch auf einem Farbdrucker druckbar sind! Viele Drucker fügen zu den drei Farben noch schwarz als vierte Farbe hinzu, um dafür nicht alle drei Farben zusammenmischen zu müssen (CMYK-Farbmodell). 1 http://www.gimp.org KAPITEL 6. DIGITAL IMAGES 81 Abbildung 6.2: Farbauswahldialog des Bilderbearbeitungsprogrammes Gimp Abbildung 6.3: Farbmischung bei RGB (links) und CMY Farbmodellen (rechts) [von http://www.adobe.com/ support/techguides/color/colormodels/rgbcmy.html] 6.2.3 YUV-Farbmodell In diesem Modell erfolgt die Aufspaltung der Bildinformation in ein Helligkeits- und zwei Farbsignale (Bläue und Röte - und ist damit äquivalent zum YCbCr-Farbmodell). Es ist damit abwärtskompatibel zum Schwarz-Weiss-Fernsehen. Die Y-Komponente hat den Wertebereich [0,1], die beiden Farbkomponenten den Wertebereich [-0.5,0.5]. Das YUV-Farbmodell wird bei PAL-Video verwendet und ist über die Norm CCIR 601 auch in die Standardisierung für Digitales Video eingegangen. Ausserdem wird dieses (oder YIQ) auch bei der verlustbehafteten JPEG-Kompression (Abschnitt 6.4.5) verwendet. 6.2.4 YIQ-Farbmodell Auch in diesem Modell erfolgt die Aufspaltung der Bildinformation in ein Helligkeits- und zwei Farbsignale. Damit ist es auch abwärtskompatibel zum Schwarz-Weiss-Fernsehen. Es wird bei NTSC-Video verwendet. 6.2.5 HSV-Farbmodell Das HSV (Hue-Saturation-Value bzw. Farbton, Sättigung, Wert) Modell hat als Farbraum eine sechsseitige Pyramide, den sogenannten “Hexcone”. Die Projektion der Pyramide entlang der Value-Achse entspricht dem Blick auf den RGB-Farbwürfel (siehe Abbildung 6.1) entlang der Grauwert-Diagonalen. KAPITEL 6. DIGITAL IMAGES 82 rot (0,1,1) gelb (0,0,1) yellow−Achse schwarz (1,1,1) grün (1,0,1) magenta−Achse magenta (0,1,0) weiss (0,0,0) blau (1,1,0) cyan−Achse cyan (1,0,0) Abbildung 6.4: Farbraum des CMY-Modells [Hen00] Eine sehr gute Simulation (Java-Applet) der verschiedenen Farbmodelle findet sich unter http://www-cg-hci. informatik.uni-oldenburg.de/~pgse96/html/team3/HSV.html. 6.2.6 Umrechnung zwischen Farbmodellen Alle Formeln dieses Abschnitts stammen aus [Hen00]. Als Basis für die Umrechnung dient immer das RGB-Modell. Die Beziehung zwischen RGB und CMY ist sehr einfach: (C M Y ) = (1 1 1) − (R G B) Die Transformation auf die in der Videotechnik verwendeten Formate sind zwar komplizierter, aber immer noch linear: 0.299 −0.168736 0.500 (Y U V ) = (R G B) · 0.587 −0.331264 −0.418688 0.114 0.500 −0.081312 Für Leser mit wenig Erfahrung beim Matrizenrechnen sei hier noch eine kleine Hilfe angegeben: Die Luminanz (Helligkeit, Grauwert) errechnet sich folgendermassen: Y = 0.299 ∗ R + 0.587 ∗ G + 0.114 ∗ B Chrominanz 1 (Bläue): U = −0.168736 ∗ R − 0.331264 ∗ G + 0.5 ∗ B Die Chrominanz 2 (Röte) oder der V-Wert kann somit leicht aus der obiger Matrix berechnet werden. Zu beachten sei aber noch, dass der U- und V-Wert einen Wertebereich von [-0.5,0.5] haben und evtl. noch in einen anderen Wertebereich (in [0,1] bzw. [0,255]) transformiert werden muss. Für die Umrechnung in das Farbmodell HSV sind zunächst einige Hilfsgrössen zu bestimmen: q q 1 c = 23 R − 6 (G + B) q s = 12 (G − B) m1 = max(R, G, B) m2 = min(R, G, B) Dabei sind c und s dem Cosinus und Sinus des Farbwinkels proportional, ferner ist die Mehrdeutigkeit KAPITEL 6. DIGITAL IMAGES 83 der inversen Winkelfunktionen zu berücksichtigen. Der Farbton H ergibt sich daraus als 180, wenn c < 0 s H = arctan c + 360, wenn s < 0 und c > 0 Die Farbsättigung S ergibt sich dann als S = m1 − m2 und die Helligkeit V ist V = m1 6.3 Rasterbilder Die Digitalisierung von Bilddaten verläuft in der Regel so, dass ein rechteckiges Raster über das (rechteckige) Bild gelegt wird. Jedem Feld des Rasters (genannt Pixel für “picture element”) wird ein Helligkeitsoder Farbwert zugeordnet, der der Helligkeit oder Farbe entspricht, die über das Feld gemittelt wurde. Wichtige Eigenschaften jedes Bildes sind • Bildgrösse (Höhe/Breite) • Farbanzahl/Farbtiefe – Monochrom (1 Bit) – Graustufen (z.B. 8 Bit) – Farbpaletten (z.B. 4-8 Bit) – Echtfarben (z.B. 15, 16, 24, 32 Bit) • Kompressionstechniken – keine – verlustlos (lossless) – verlustbehaftet (lossy) - mit mehr oder weniger offensichtlichen Verlusten 6.3.1 Farbe in Rasterbildern Obwohl die Anzahl der Farben, die das menschliche Auge wahrnehmen kann, durch 19 Bits (ca. 520.000 Farben) ausgedrückt werden kann, hat es sich als günstig erwiesen, die technische Auflösung auf eine ganze Anzahl von Bytes aufzurunden (24 Bits). Dies erlaubt die gleichzeitige Darstellung (nicht Wahrnehmung!) von 16,7 Millionen Farben und erlaubt in jeder beliebigen Farbe Verläufe, die von Menschen als kontinuierlich angesehen werden. Diese Darstellung wird deshalb als true color bezeichnet. In den meisten Fällen wird der RGB-Farbraum verwendet und es werden je Grundfarbe 8 Bit Auflösung zur Verfügung gestellt. In vielen Fällen wird nicht für jedes Pixel einzeln eine Farbe gespeichert, sondern aus allen in einem Bild vorkommenden Farben wird eine Tabelle gebildet. Für die entsprechenden Pixel wird dann lediglich ein Index in dieser Farbtabelle gespeichert. Die Grafikformate GIF und TIFF verwenden diese Technik. Gamma-Korrektur Jedes Display ist anders und reagiert anders auf Erhöhung der Eingangsspannung. Bei Kathodenröhren steigt die Leuchtkraft nicht linear mit der Eingangspannung, sondern in einer Potenz. Die lineare Umsetzung der binären Zahlen führt demnach zu einer nichtlinearen Steigerung der Farbintensität. Um dies auszugleichen, kann eine auf die Hardware abgestimmte Color-LookUp Tabelle eingesetzt werden, die für eine entsprechende Korrektur bei der Darstellung sorgt. KAPITEL 6. DIGITAL IMAGES 84 Alpha-Kanal Manche Formate verwenden ein zusätzliches Byte (24 Bit Farbe plus 8 bit Alpha Kanal (also insgesamt 32 Bit)) um z.B. Informationen über die Durchsichtigkeit (Transparenz) des Pixels geben zu können. Die Verwendung des Alpha-Kanals ist jedoch nicht standardisiert. 6.4 Datenkompression Da unkomprimierte Bilddaten sehr gross werden (Höhe * Breite * Farbauflösung in Bytes (nicht Bit!!)), wurden sehr bald Methoden gesucht, diese Datenmenge zu verkleinern. Generell unterscheidet man verlustlose (lossless) und verlustbehaftete (lossy) Algorithmen. Ein unkomprimiertes Bild der Grösse 1024 x 768 Pixel in 24 Bit Farbtiefe (24 Bit = 3 Bytes) benötigt ). daher 1024x768x24bit = 2304KBytes (= 1024x768x24 1024x8 Die verlustfreie Datenkompression sorgt dafür, dass die Codierung des Datenbestandes möglichst der theoretischen Grenze (dem Informationsgehalt) nahekommt, entfernt aber keine Informationen aus dem Datenbestand. Beispiel: Bilddaten werden in bestimmten Formaten mit 8 Bit/Pixel codiert. Für ein schwarz/weiss Bild wäre dies aber eine Verschwendung von 7 Bit/Pixel. Eine verlustfreie Datenkompression würde hier die überflüssigen Bits entfernen. Eine verlustbehaftete Datenkompression ist nur bei Daten möglich, die für menschliche Sinnesorgane bestimmt sind. Aufgrund der Tätigkeit unseres Gehirns kann man bei Bildern, Audio- oder Videodaten Informationen entfernen, ohne dass dies den subjektiven Eindruck verschlechtert. 6.4.1 Lauflängenkodierung Bei der Lauflängenkodierung (RLE) werden Folgen von Mehrfachsymbolen durch ein Symbol und die Angabe eines Zählers ersetzt. Diese sehr einfache Methode ist verlustlos, sehr schnell und einfach, hat aber einen sehr niedrigen Wirkungsgrad bei abwechslungsreichem Bildinhalt. Beispiel: aus den Rohdaten aaaaaaabbcccccccc wird so z.B. 7a 2b 8c. Aus 17 Bytes werden so 6 Bytes (die Leerzeichen dienen nur der besseren Lesbarkeit!). Bei binären Datenströmen (schwarz/weiss bzw. 0/1) kann Zusätzliches eingespart werden, indem nur die Anzahl und nicht mehr der eigentliche Wert übertragen wird: Beispiel: aus 0000000011100001111111110000 wird einfach 8 3 4 9 4. Eindeutigkeit wird erreicht, indem der erste übertragene Wert sich immer auf eine Anzahl von Nullen bezieht (ist daher evtl. Null). Im schlimmsten Fall kann aber die Lauflängenkodierung die Datenmenge vergrössern, anstatt sie zu komprimieren: Beispiel: aus abcdefg wird mit der obersten Kompressionsmethode 1a 1b 1c 1d 1e 1f 1g, also eine Verdopplung der Datenmenge. Dies kann durch z.B. durch escape-codes verhindert werden, indem keine fixen Positionen für Zähler verwendet werden, sondern erst durch ein spezielles Zeichen wird ein Byte als Zähler interpretiert. Beispiel: so kann aus abcdeeeeefffffffg folgendes entstehen: abcd+5e+7fg, wobei hier ’+’ als escapecode verwendet wurde. Eine etwas andere Methode von RLE wird am Macintosh packbits benannt: Jede Zeile beginnt mit Zählerbyte n, gefolgt von einem oder mehreren Datenbytes. • n = 0 bis 127 : die nächsten n+1 Bytes werden direkt angegeben. • n = -127 bis -1 : das nächste Byte wird -n+1 mal wiederholt. • n = -128 : nicht verwendet. KAPITEL 6. DIGITAL IMAGES 85 Mit dieser Methode, die übrigens auch beim Bildformat TIFF verwendet wird, liegt die Grösse der komprimierten Daten im Worst-Case nur mehr geringfügig über der Originalgrösse. Trotzalledem ist die Effizienz dieses Verfahrens eher gering und kommt nur bei sehr grossen Blöcken von gleichen Symbolen auf eine gute Kompressionsrate. Lauflängenkodierung wird beim BMP-, PCX-, JPEG- und vor allem beim Fax-Format (nur 2 Farben, schnell, einfach, grosse weisse Flächen) verwendet. 6.4.2 LZW-Codierung Abraham Lempel und Jakob Ziv entwickelten 1977 den Grundstock dieses Algorithmus (LZ77 und LZ78), der in vielen Text-Kompressionsalgorithmen und Archivierungsprogrammen (z.B. zoo, lha, pkzip oder arj) verwendet wird. Terry Welch (damals bei Unisys) modifizierte 1984 den Algorithmus und so entstand der LZW-Algorithmus, der für eine Vielzahl von unterschiedlichen Daten verwendet werden kann. Die verlustlose Kompression nach Lempel-Ziv-Welch (LZW) beruht auf wiederkehrenden Mustern. Diese Muster bestehen aus Elementen des Grundalphabets und werden ebenso wie diese in eine Tabelle (Wörterbuch) eingetragen. Die komprimierte Version eines solchen Abschnittes besteht aus der laufenden Nummer der entsprechenden Tabellenzeile. Bei wiederholtem Auftreten desselben Abschnittes wird ebenfalls nur der Tabellenverweis geschrieben, ohne dass eine neue Tabellenzeile notwendig wäre. Die Codetabelle wird im Laufe der Übertragung immer länger. Durch eine geschickte Wahl des Verfahrens für die Tabelleneinträge und Verzicht auf die maximal mögliche Kompressionsrate wird erreicht, dass die fertige Codetabelle nicht übertragen/gespeichert werden muss, sondern durch den Dekompressionsalgorithmus selbst wieder dynamisch aufgebaut werden kann. Die Codes haben entweder eine fixe Länge (z.B. bei 8 Bit Daten werden 12 Bit Codes verwendet) oder eine variable Länge (bei GIF). Bei Verwendung der fixen Länge, wird die Tabelle mit dem Grundalphabet gefüllt (normalerweise werden also die ersten 256 Einträge des Wörterbuches zu Beginn mit den ASCII-Werten von 0 bis 255 gefüllt (also ein 1:1 Mapping vom Zeichen zu Wert)). Für jedes neue Muster wird ein neuer Eintrag in der Tabelle gemacht. Prinzip: Ein neuer Substring wird erzeugt, indem ein neues Zeichen an einen bestehenden Substring angehängt wird. Dieser neue Substring bekommt dann den nächsten freien Code im Wörterbuch. Beispiel: Die Zeichenkette /WED/WE/WEE/WEB soll codiert werden. Das Wörterbuch wird zur Initialisierung mit den ASCII-Zeichen von 0 bis 255 gefüllt. char. input /W E D / WE / WEE /W EB code output / = <47> W = <87> E = <69> D = <68> <256> E = <69> <260> <261> <257> B = <66> new code value <256> = /W <257> = WE <258> = ED <259> = D/ <260> = /WE <261> = E/ <262> = /WEE <263> = E/W <264> = WEB Die codierte Zeichenfolge ist also /WED<256>E<260><261><257>B (eigentlich ja <47><87><69><68> <256><69><260><261><257><66>). Beim Decodieren wird nun auch wieder ein Wörterbuch aufgebaut: KAPITEL 6. DIGITAL IMAGES 86 code input / = <47> W = <87> E = <69> D = <68> <256> E = <69> <260> <261> <257> B = <66> char output / E D /W E /WE E/ WE B new code value <256> <257> <258> <259> <260> <261> <262> <263> <264> = = = = = = = = = /W WE ED D/ /WE E/ /WEE E/W WEB und die ursprüngliche Zeichenkette ausgegeben. Ein weiteres Beispiel stammt aus [Lip97]: Beispiel: Angenommen, es steht ein Alphabet, bestehend aus vier Zeichen, zur Verfügung: A,B,C,D. Die LZW-Codetabelle wird folgendermassen initialisiert: LZW-Code 0 1 2 3 Zeichen A B C D Die zu kodierende Zeichenkette lautet ABCABCABCABCD (13 Zeichen). Das erste Zeichen A kommt natürlich in der Tabelle vor. Deshalb merkt man es sich als Präfix. Das nächste Zeichen B wird dem Präfix nachgestellt (Suffix) und es entsteht das aktuelle Muster AB. Dieses ist in der Codetabelle nicht vorhanden, weshalb ein neuer Eintrag in der Zuordnungstabelle erforderlich wird: • LZW-Code 4: AB Nun gibt man den Code <0> für das Präfix A aus, und B wird zum aktuellen Präfix. Das nächste Zeichen C ergibt mit dem Präfix B das aktuelle Muster BC, das wiederum nicht in der Tabelle vorhanden ist. Die nun erforderlichen Schritte sind: • LZW-Code 5: BC • Ausgabe von Code <1> (für B) • neues Präfix: C Das nächste Zeichen ist ein A, das zusammen mit dem Präfix C das Muster CA bildet. Dieses ist in der Tabelle wieder nicht vorhanden, was zu folgender Tätigkeit führt: • LZW-Code 6: CA • Ausgabe von Code <2> (für C) • neues Präfix: A Das nächste zu betrachtende Muster lautet AB (Präfix A, Suffix B), für das bereits ein Eintrag in der Codetabelle existiert (LZW-Code 4). Deshalb lautet das neue Präfix jetzt AB. Das nächste Muster ABC (Präfix AB, Suffix C) ist in der Tabelle nicht vorhanden, weshalb wieder eine neuer Eintrag erforderlich wird: • LZW-Code 7: ABC • Ausgabe von Code <4> (für AB) KAPITEL 6. DIGITAL IMAGES 87 • neues Präfix: C Hier macht sich der Algorithmus erstmals bezahlt, da zwei Zeichen mit einem Code ausgegeben werden konnten. Als neues Muster ergibt sich CA (Präfix C, Suffix A), das als neues Präfix gemerkt wird, da es in der Codetabelle enthalten ist. Das Muster CAB (Präfix CA, Suffix B) kommt jedoch darin nicht vor: • LZW-Code 8: CAB • Ausgabe von Code <6> (für CA) • neues Präfix: B Auch das Muster BC (Präfix B, Suffix C) ist in der Zuordnungstabelle vorhanden. Weiter geht es dann mit BCA (Präfix BC, Suffix A): • LZW-Code 9: BCA • Ausgabe von Code <5> (für BC) • neues Präfix: A Das nächste Muster lautet AB, das zum nächsten Präfix wird. Auch ABC ist in der Tabelle schon vorhanden (LZW-Code 7). Beim Muster ABCD (Präfix ABC, Suffix D) wird die Codetabelle wieder erweitert: • LZW-Code 10: ABCD • Ausgabe von Code <7> (für ABC) • neues Präfix: D Da nun das Ende der Daten erreicht ist, muss noch der LZW-Code für das verbleibende Präfix notiert werden: LZW-Code 3. Insgesamt ergibt sich die Codefolge <0><1><2><4><6><5><7><3>. Die Dekomprimierung erfolgt im Prinzip analog zur Komprimierung. Da die Codetabelle nicht übertragen wird, muss sie beim Dekomprimieren neu erzeugt werden. Alles, was man dazu wissen muss, ist, wieviele Zeichen (roots) es gibt und wie diese codiert werden. GIF löst dieses Problem auf elegante Weise, indem die LZW-Datengrösse zu Beginn der Bilddaten gespeichert wird. Daraus ergeben sich die ersten 2LZW −Datengroesse Einträge in der Codetabelle. Anschliessend wird jeder LZW-Code decodiert und ein neuer Code in der Tabelle erzeugt (Präfix und Suffix). Dieser ergibt sich aus den Zeichen des letzten Codes (Präfix) und dem ersten Zeichen des aktuellen Codes (Suffix). Anschliessend merkt man sich die ausgegebenen Zeichen, um sie für den nächsten Code als Präfix zu verwenden. Die nachstehende Tabelle demonstriert die Dekomprimierung des obigen Beispiels. Zu Beginn ist die Codetabelle mit den Elementarzeichen A,B,C,D belegt: Code <0> <1> <2> <4> <6> <5> <7> <3> Char. Output A B C AB CA BC ABC D Neuer Code <4> = AB <5> = BC <6> = CA <7> = ABC <8> = CAB <9> = BCA <10> = ABCD Präfix A B C AB CA BC ABC KAPITEL 6. DIGITAL IMAGES 88 Wenn die Code-Tabelle voll ist, wird die aktuelle Kompressionsrate überprüft und bei Bedarf ein CLEARCode (z.B. bei GIF 2Code−Size ) ausgegeben, der signalisiert, dass das Wörterbuch gelöscht werden soll um danach ein neues aufzubauen. Der LZW-Algorithmus wird von den Grafikformaten GIF und TIFF verwendet und liefert Kompressionswerte von Faktor 2 bis 3, bei Daten mit vielen ähnlichen Mustern bis zu Faktor 10. Ein Hauptproblem dieser Kompressionsmethode ist, dass Unisys auf Teile ein Patent hat und so die Benutzung lizenzpflichtig ist. Vor allem Compuserves GIF Format verwendet seit 1987 diesen Algorithmus, aber erst 1993 erfuhr Unisys davon und seit 1995 sind alle Programme, die GIF verarbeiten, lizenzpflichtig (eigentlich ist die Implementation des LZW-Algorithmuses lizenzpflichtig). [MvR96] 6.4.3 Huffman Codierung Bei der Huffman-Codierung werden den Zeichen eines Datenstromes Codes verschiedener Länge zugewiesen. Dabei erhalten diejenigen Zeichen die kürzesten Codes, die in der Nachricht am häufigsten auftreten. Dieses Prinzip wurde auch schon vor Beginn des Computerzeitalters verwendet: Der am häufigsten in Texten auftretende Buchstabe “e” hat als Morsecode einen einzelnen “Punkt”. Dieser verlustlose Komprimierungs-Algorithmus wurde schon 1952 erfunden und zeichnet sich dadurch aus, dass die Decodierung sehr schnell geht. Die Codierung (Kompression) erfordert jedoch 2 Durchläufe: 1. Die relativen Häufigkeiten aller Zeichen muss erfasst und ein Codierungsbaum erstellt werden. 2. Die Daten werden mit Hilfe des Codierungsbaumes codiert. Beispiel: Die Zeichenkette abbbbccddddddeeeeeee soll codiert werden. Folgende Tabelle gibt Auskunft über die relativen Häufigkeiten der einzelnen Zeichen. Zeichen a b c d e Summe: Anzahl 1 4 2 6 7 20 p 0.05 0.20 0.10 0.30 0.35 1.0 Der Codebaum für diese Verteilung ist in Abbildung 6.5 zu sehen. Er wird nach folgendem Prinzip erstellt: Fasse die beiden Gruppen niedrigster Häufigkeit zusammen und addiere ihre Häufigkeit. Linke Äste werden mit “0”, rechte mit “1” codiert (in diesem Beispiel). 1.0 0 1 0.35 0 1 0.15 0.65 0 1 a 0.05 c 0.10 b 0.20 0 1 d 0.30 e 0.35 Abbildung 6.5: Codebaum für die Huffman-Codierung für gegebene relative Häufigkeiten einzelner Zeichen KAPITEL 6. DIGITAL IMAGES 89 Die gegebene Zeichenkette wird demnach mit 000, 01, 01, 01, 01, 001, 001, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11 codiert. Der Ergebniscode würde natürlich mit 8 Bit pro Byte codiert und somit 00001010, 10100100, 11010101, 01010111, 11111111, 111xxxx ergeben. Die 20 Bytes der Eingabe wurden auf nur 6 Byte komprimiert! Im Allgemeinen komprimiert dieses Verfahren (für ein verlustloses Verfahren) sehr gut (Faktor 2 bis Faktor 8). Ein Nachteil des Huffman-Verfahrens ist, dass vor der eigentlichen Codierung / Decodierung die statistische Verteilung der Zeichen einer Nachricht bekannt sein muss bzw. die Codetabelle mitgespeichert werden muss. Eine Erweiterung des Huffman-Verfahrens, welches diesen Nachteil aufhebt, ist die adaptive HuffmanCodierung. Schlüssel zu ihrem Verständnis ist, dass sowohl Encoder als auch Decoder dieselbe Routine zur Änderung der Baumstruktur benutzen. Die Codetabelle wird im Laufe der Codierung immer “besser”. Der eigentlich verwendete Code kann sich von einem Zeichen zum nächsten komplett ändern, diese Veränderung wird aber beim Decodieren nachvollzogen. Für spezielle Anwendungen kann auch eine fixe Code-Tabelle festgelegt werden. Ein weiterer Nachteil des Huffman-Algorithmus ist, dass sich kleine Übertragungsfehler dramatisch auswirken. Schon das Kippen eines Bits kann die Missinterpretation aller nachfolgenden Daten nach sich ziehen. Folgende Bildformate verwenden die Huffman-Codierung: • TIFF • TGA • Lossless JPEG (alternativ zur arithmetischer Komprimierung) • PNG (in Kombination mit LZ77) • G3 FAX 6.4.4 Verlustfreie JPEG Kompression Dieses (weniger gebräuchliche) Kompressionsverfahren wurde 1991 bis 1993 durch die Joint Photographers Expert Group (JPEG) entwickelt und ist von der CCITT standardisiert worden (ISO-10918). Die JPEGKompression von Bilddaten ist farbenblind, d.h. sie muss gegebenenfalls für jeden Farbkanal eines Bildes separat durchgeführt werden. JPEG ist eigentlich kein Dateiformat, dieses hat vielmehr die Abkürzung JFIF (JPEG File Interchange Format). Im verlustfreien Modus der JPEG-Kompression werden die einzelnen Pixel eines Bildes aus den benachbarten Pixeln vorhergesagt, und zwar nach einem von 7 möglichen Algorithmen. Dabei wird der Algorithmus ausgewählt, welcher den Vorhersagewert möglichst nahe an die tatsächliche Bildinformation des gesuchten Pixels heranbringt. In den Ausgabestrom wird dann die Nummer des gewählten Algorithmus, sowie die Differenz zwischen Vorhersagewert und tatsächlichem Datenwert geschrieben. Nr. 0 1 2 3 4 5 6 7 Algorithmus A B C A+B-C A + (B - C)/2 B + (A - C)/2 (A + B)/2 Wobei sich ’A’ auf das Pixel links, ’B’ auf das Pixel oberhalb und ’C’ auf das Pixel links-oberhalb des aktuellen Pixels bezieht. KAPITEL 6. DIGITAL IMAGES Kompressionsfaktor 4:1 bis 5:1 5:1 bis 10:1 10:1 bis 20:1 20:1 bis 30:1 30:1 bis 40:1 90 subjektive Bildqualität mit blossem Auge nicht vom Original unterscheidbar exzellente Qualität gute Qualität sichtbare Vergröberung “Klötzchengrafik” Tabelle 6.1: Kompressionsfaktoren bei verlustbehafteter JPEG-Kompression Durch die Flexibilität bei der Vorhersage sind die meisten dieser Differenzwerte nahe bei Null, sie können darum effizient mit Hilfe z.B. der Huffman-Codierung komprimiert werden. Mit der verlustfreien JPEGKompression sind Einsparungen beim Datenvolumen von Bilddaten von bis zu ca. 50% möglich. [Hen00] 6.4.5 Verlustbehaftete JPEG Kompression In der verlustbehafteten Ausprägung basiert das JPEG-Verfahren auf einer speziellen Fourier-Transformation (einer diskreten Cosinus-Transformation), d.h. einer Transformation der Bildinformation in den Frequenzraum. Durch Quantisieren, d.h. Rundung der Fourier-Koeffizienten, werden die höheren Glieder dieser Transformation und damit die feineren Details der Bildinformation unterdrückt. Tabelle 6.1 aus [Hen00] zeigt eine Auflistung der erreichbaren Kompressionsfaktoren und die Auswirkungen auf die subjektive Bildqualität. Die Komprimierung der Grafikdaten mit der verlustbehafteten JPEG Kompression erfolgt in mehreren Schritten: 1. Datenreduzierung: Das Auge ist nicht in der Lage, so viele Farbdetails zu unterschieden wie Unterschiede in der Helligkeit (siehe Abbildung 6.6). Das RGB-Farbmodell (Abschnitt 6.2.1) wird deshalb nach YUV (Abschnitt 6.2.3) oder nach YIQ (Abschnitt 6.2.4) umgewandelt (je nachdem, welcher Literatur man glauben darf), wobei die Farbanteile auf die Hälfte (Y:U:V = 2:1:1) oder auf ein Viertel (Y:U:V = 4:1:1) der Auflösung reduziert werden. Bei einer Umwandlung auf 4:1:1 stehen für die Farbinformation (U und V) nur noch 2 Bit für die Farbanteile (anstatt 8 Bit vor der Umwandlung) zur Verfügung, während für die Helligkeit (Y) immer noch 8 Bit verwendet werden. Dies ergibt schon eine Datenreduktion von 50%. Das Bild wird zusätzlich noch in 8x8 Pixel Blöcke pro Kanal (Y, U, V) oder nur für die Luminanz (Y) aufgeteilt. Die weiteren Schritte werden dann jeweils auf solche Makroblöcke durchgeführt. Abbildung 6.6: Kleine Änderungen der Helligkeit sind für das menschliche Auge leichter zu erkennen (kleines Quadrat links) als kleine Änderungen des Farbtons (kleines Quadrat rechts - fast unsichtbar). KAPITEL 6. DIGITAL IMAGES 91 2. Diskrete Cosinus-Transformation (DCT): Die DCT basiert auf der Fourier-Transformation, die beliebige Signale als Überlagerung von Sinuswellen verschiedener Frequenzen und Amplituden darstellt. Aus der örtlichen Verteilung von Pixelwerten in einem Bild entsteht nach der Fourier-Transformation eine Frequenz- und Amplitudenverteilung. Grosse, regelmässige Flächen schlagen sich dabei in den niederen Frequenzanteilen nieder, feine Details in den hohen. Der überwiegende Anteil der visuellen Information eines Bildes mit kontinuierlich verteilten Werten liegt im Bereich niederer Frequenzen. Für jeden Makroblock wird die DCT des Helligkeitswertes f (i, j) in den Frequenzraum durchgeführt: 7 7 (2j + 1)vπ (2i + 1)uπ 1 X X · cos C(u) · C(v) · f (i, j) · cos F (u, v) = 4 i=0 j=0 16 16 C(u) = C(v) = √1 2 √1 2 wenn u = 0, sonst C(u) = 1 wenn v = 0, sonst C(v) = 1 Das Ergebnis der DCT ist wiederum ein Satz von 8x8 Koeffizienten je Makroblock, wobei sich die niederen Frequenzen links oben, die höheren Frequenzen rechts unten niederschlagen. 3. Quantisierung: Die Quantisierung ist der eigentlich verlustbehaftete Schritt. Aus dem linearen Verlauf der Werte erfolgt die Bildung einer stufenartigen Anordnung, d.h. Division von F (u, v) durch eine Zahl q(u, v) und Rundung der Resultate. Diese Quantisierung ist die Hauptquelle der zunehmenden Ungenauigkeit bei mehrfacher JPEG-Kompression. Q F (u, v) = round F (u, v) q(u, v) Dabei ist entweder eine gleichförmige Quantisierung möglich (ein q(u, v) für alle u, v oder es wird eine Tabelle (Beispielsweise Tabelle 6.2) zugrunde gelegt. Diese Tabelle kann entweder eine Standardtabelle sein, oder eine eigene, die auch in der JFIF-Datei mitgespeichert werden kann. Dabei werden meist niedrigere Frequenzen (links oben) weniger geteilt, während die hohen Frequenzen (rechts unten) durch höhere Werte dividiert werden [Küs95]. Je grösser der Quantisierungsfaktor, desto kleiner sind die zu speichernden Werte, die sich somit mit weniger Bits kodieren lassen. 16 12 14 14 18 24 49 72 11 12 13 17 22 35 64 92 10 14 16 22 37 55 78 95 16 19 24 29 56 64 87 98 24 26 40 51 68 81 103 112 40 58 57 87 109 104 121 100 51 60 69 80 103 116 120 103 61 55 56 62 77 92 101 99 Tabelle 6.2: Quantisierungstabelle von JPEG [Hen00] Die standardisierten Quantisiertabellen wurden durch Versuche mit Testpersonen erstellt, bei denen herausgefunden wurde, welche fehlenden Farben/Frequenzen das subjektive Sehen am wenigsten beeinflussen. 4. Entropie Codierung: Der Fourier-Koeffizient F Q (0, 0) heisst DC-Koeffizient (von directed current, Gleichstrom) und stellt den Gleichanteil dar. Er wird für alle Kompressionsmodi übertragen. Er gibt (bezogen auf den jeweiligen Farbkanal) den mittleren Helligkeitswert des Makroblocks wieder. Dieser Wert ist meist ähnlich dem Wert des vorhergehenden 8x8 Makroblocks. Es wird darum nur der Differenzwert zum vorhergehenden 8x8 Makroblock übertragen. Die weiteren Fourier-Koeffizienten heissen AC-Koeffizienten (von alternating current, Wechselstrom). Sie werden nach dem DC-Koeffizienten normalerweise in der sogenannten Zick-ZackSerialisierung übertragen (Abbildung 6.7). Dabei erfolgt zunächst eine Lauflängen-Codierung (RLE, KAPITEL 6. DIGITAL IMAGES i j f(i,j) 92 DC u v F(u,v) Abbildung 6.7: Zick-Zack-Serialisierung der DCT bei der JPEG-Kompression Abschnitt 6.4.1), die von der Zick-Zack Reihenfolge profitiert, da so öfters ähnliche Werte direkt hintereinander stehen und somit besser komprimiert werden können. Schliesslich werden die dadurch erhaltenen Werte noch entropiecodiert (Huffman-Coding, Lauflängenkodierung, etc.) . Die evtl. vorhandene Huffman-Tabelle wird zusammen mit der evtl. vorhandenen Quantisierungstabelle im Header der Bilddatei gespeichert. Das Decoding von JPEG-Daten erfolgt blockweise und führt die inversen Schritte der Kompression in umgekehrter Reihenfolge durch: • Entropie-Decoding (lt. Huffman-Tabelle) • Dequantisierung • Inverse Diskrete Cosinus-Transformation • Umwandeln in RGB-Werte Progressive Encoding Im progressiven Modus werden die Quantisierungswerte nicht blockweise, sondern nach Frequenzen bzw. Frequenzbereichen sortiert gespeichert (sog. slices oder scans). Zuerst wird hier der Gleichanteil (DC), dann niedrige Frequenzteile bzw. die wichtigsten Bits der AC-Koeffizienten für alle Blöcke und erst zuletzt höhere Frequenzteile übertragen. Im hierarchischen Modus wird ein Bild zunächst in grober Auflösung codiert, die nächstfeinere Auflösung wiederum wird nur als Differenz zur gröberen übertragen. JPEG Eigenschaften JPEG-Kompression eignet sich sehr gut für photorealistische Bilder und bietet hierfür sehr gute Kompressionsraten (Tabelle 6.1). Harte Übergänge im Bildmaterial bilden Artefakte (siehe Abbildung 6.8) oder werden unscharf. Zusätzlich verringert sich die Qualität, wenn Bilder öfter hintereinander mit JPEG komprimiert/dekomprimiert werden. Daher eignen sich Bildformate, die JPEG-Kompression verwenden, nicht für Bildbearbeitung. Der Algorithmus ist sehr aufwendig und daher eher langsam. KAPITEL 6. DIGITAL IMAGES 93 Abbildung 6.8: Sehr hohe (1:100) Kompressionsrate (und zusätzlicher Zoomfaktor) bei JPEG zeigt deutlich die 8x8 Makroblöcke und lässt die Frequenz-Transformation (und Beschneidung) erahnen (beim Text) 6.4.6 JPEG 2000 1997 begannen die Bemühungen zur Schaffung eines neuen Standards mit dem Namen JPEG20002 . Hauptkritikpunkte am alten JPEG-Standard sind unter anderem die geringe Bildqualität bei mittleren und hohen Kompressionsraten, die unbefriedigende progressive Darstellung und die mangelnde Fehlertoleranz bei Online- und Mobilfunk-Anwendungen. Darüber hinaus soll durch eine offene Architektur des neuen Standards eine Optimierung für unterschiedliche Anwendungsbereiche ermöglicht werden, zum Beispiel Digitalfotografie, medizinische Bildverarbeitung, Druckvorstufe und Publishing, digitale Bildarchivierung, mobile Kommunikation, Telefax (auch in Farbe), Satellitenfernerkundung und natürlich die Internetübertragung. Der JPEG2000 Standard unterteilt sich in sechs Teile, von denen der erste die Grundfunktionalität bereit stellt und lizenzfrei ist. Der zweite Teil der Spezifikation stellt einige Erweiterungen zur Verfügung und wurde Ende 2001 fertig gestellt (nicht lizenzfrei). Ein wichtiger weiterer Abschnitt ist Teil 3, der sich dem Speichern von bewegten Bildern widmet: Motion JPEG2000 beruht auf den in Teil 1 festgelegten Verfahren zum Speichern von stehenden Bildern. Weitere Teile befassen sich mit Konformitätstests, Referenzsoftware und einem Spezialformat für gemischte Dokumente. [Tri01] Folgende Anforderungen wurden an den neuen Standard gestellt [BBJ99]: • höhere Auflösung: JPEG unterstützte 24 Bit Farbtiefe und eine Bildgrösse von 65535 x 65535 Pixel. JPEG2000 komprimiert Bilder mit bis zu 16384 Komponenten (z.B. Farbkanäle) zu jeweils 38 Bit Tiefe, woebei die Komponenten unterschiedliche Bittiefen haben können. Die maximale Grösse der Bilder beträgt knapp 4.3 Milliarden Pixel (232 − 1) im Quadrat [SMM01]. • bessere Bildqualität als JPEG bei mittleren und hohen Kompressionsraten. Siehe dazu auch Abbildung 6.9 • wahlweise verlustbehaftete oder verlustfreie Kompression • mehrere Arten der progressiven Übertragung: auflösungsabhängig, qualitätsabhängig oder positionsabhängig (beispielsweise von links oben nach rechts unten) • Erfassung von Echtfarb-, Graustufen- und Schwarzweissbildern • Arbeit mit begrenzten Ressourcen (Übertragungs- oder Speicherkapazität sowie Arbeitsspeicher) und in Echtzeitumgebungen • freier Zugriff auf Teilbereiche eines kodierten Bildes 2 http://www.jpeg.org/JPEG2000.htm KAPITEL 6. DIGITAL IMAGES 94 Abbildung 6.9: Das linke Bild ist mit JPG bei 0.125 Bits per Pixel komprimiert. Das rechte ist bei gleicher Datenrate mit JPG2000 komprimiert. Man sieht deutlich die schlechtere Qualität der JPG Kompression [CS01]. Bei 8 Bit pro Pixel entspricht 0.125bpp einem Kompressionsfaktor von 1:64. • Robustheit gegenüber Übertragungsfehlern. Bei JPG leidet die Bildqualität dramatisch, wenn BitFehler auftreten. • Möglichkeit der Definition besonders wichtiger Bildregionen (ROIs, Regions of Interest), die mit höherer Genauigkeit kodiert werden. Abbildung 6.10 zeigt ein Beispiel, in dem das Gesicht der Person mit höherer Qualtät gespeichert wurde. Abbildung 6.10: Bei JPG 2000 ist es möglich, bestimmte Regionen eines Bildes mit höherer Qualität zu speichern[CS01]. • Mitübertragung von Randinformation wie etwa stufenlose Transparenz • offene Architektur, die Optimierungen auf spezielle Bildklassen erlaubt • Rückwärtskompatibilität zu JPEG und Verträglichkeit mit MPEG-4 sowie bestehenden Fax-Standards • Unterstützung von Metadaten, etwa zur Beschreibung der Bildinhalte, sowie von Mechanismen zum Schutz der Eigentums- und Verwertungsrechte Je nach Anwendung spielen diese Anforderungen wichtigere bzw. unwichtigere Rollen. Für mobile Anwendungen (Handy, PDA, ...) spielt z.B. die progressive Übertragung eine wichtige Rolle. Für satelliten- KAPITEL 6. DIGITAL IMAGES 95 gestützte Abtastung der Erdoberfläche (Remote Sensing) ist die Robustheit gegenüber Übertragunsfehlern wichtiger. Und im medizinischen Bereich sind Regions of Interest unbedingt von Nöten. Eine engdültige Verabschiedung des neuen Standards ist Ende 2000 geschehen (Final Commitee Draft). JPEG2000 verwendet keine Weiterentwicklung der Diskreten Cosinus Transformation von JPEG, sondern eine ganz neue Technik, die Wavelet Kompression. JPEG2000 Kodierung Mit Hilfe des JPEG-Verfahrens sind Kompressionsraten von etwa 1:35 in akzeptabler Bildqualität zu erreichen. Die Wavelet-Kompression ermöglicht Raten von etwa 1:65. Unter den hier vorgestellten Kompressionsverfahren ist dieses sicherlich das mathematisch anspruchsvollste. Die Strategie ist mit JPEG vergleichbar. Es wird versucht, im Bild nicht wahrnehmbare Details zu entfernen. Hierbei wird es jedoch nicht komplett in Frequenzkomponenten zerlegt, sondern nach und nach immer gröbere Bildstrukturen herausgefiltert. Die JPG2000 Kodierung teilt sich in 4 Schritte auf [CS01]: 1. Wavelet Transformation 2. Scan Algorithmus 3. Quantisierung 4. Entropie Kodierung Eine Wavelet-Transformation wandelt das Originalbild in Wavelet-Koeffizienten um, die im Prinzip verkleinerte Kopien des Ausgangsbilds beschreiben. Zusätzlich enthalten diese Koeffizienten noch hoch- und tiefpassgefilterte Versionen dieser Bilder. Abbildung 6.11 zeigt den mathematischen Hintergrund einer Wavelet Transformation. Die Funktion f (x) kann aus gedehnten, gestauchten und verschobenen Kopien seiner selbst dargestellt werden3 . Das zugehörige Wavelet g(x) kann aus denselben Basisfunktionen erzeugt werden[BBSS99]. f(x) f(x/2) f(x/2−1/2) g(x) Abbildung 6.11: Die Haar-Funktion f (x) kann durch verkleinerte (und verschobene) Kopien ihrer selbst beschrieben werden. Das zugehörige Wavelet g(x) wird nun aus der gleichen Basisfunktion konstruiert. Ein Wavelet-transformiertes Bild besteht sozusagen aus gedehnten, gestauchten und verschobenen Kopien seiner selbst [BBSS99]. Abbildung 6.12 zeigt ein solches Bild. Die eigentliche Kompression erfolgt im sogenannten Quantisierungsschritt (Rundung). Der bereits verabschiedete Teil des Standards (Teil 1) definiert zwei Transformationen: eine ganzzahlig arbeitende für die verlustlose und eine Gleitkommavariante für die verlustbehaftete Kompression. 3 In der Mathematik wird ein Satz von Funktionen, aus denen andere Funktionen zusammengesetzt werden, als Basis bezeichnet. Die Haar-Basis von 1910 ist eines der einfachsten Beispiele für eine Wavelet-Funktionenbasis. KAPITEL 6. DIGITAL IMAGES 96 Abbildung 6.12: Die Wavelet Transformation beruht auf der Tatsache, dass das Signal aus verkleinerten Kopien seiner Selbst dargestellt werden kann[BBSS99]. Anschliessend wird das Ergebnis noch einer Entropie-Codierung (z.B. Run-Length Coding) unterworfen. [Hol00, BBSS99, SMM01] Bei JPEG führt die Blockbildung zu störenden Mosaikartefakten bei hoher Komprimierung (‘Klötzchenbilder’), da benachbarte Bildblöcke nach der Kodierung nicht mehr nahtlos aneinander passen. Im aktuellen JPEG-2000-Vorschlag wird deshalb die Einteilung in Blöcke erst nach der Wavelet-Transformation angesetzt. Dadurch können die einzelnen Blöcke unabhängig voneinander kodiert und dekodiert werden. Abweichungen zwischen den Blöcken - etwa durch Datenverlust bei der Übertragung - treten aber nicht an den Blockkanten auf, sondern werden durch die Wavelet-Transformation geglättet. Dass dies gelingt, verdankt man der Eigenschaft der Wavelet-Transformation, nur die Umgebung eines Pixels zu beachten. [BBJ99] Mittlerweile existieren verschiedene Programme, die JPEG2000 Dateien codieren/decodieren können (u.a. eine Java Implementation einer Universität von Lausanne4 ). Andere Links sind auf der Homepage von JPEG20005 angegeben. 6.4.7 Fraktale Kompression Die verlustbehaftete fraktale Bildkompression basiert auf fraktaler Geometrie. 1988 wiesen Michael Barnsley und Alan Sloan die Möglichkeit einer solchen Bildkompressionsmethode nach. Die Grundlage dafür war die Beobachtung, dass natürliche Objekte oft nicht geraden Linien folgen und keine glatten Oberflächen besitzen, mit denen die klassische Geometrie arbeitet. Viele Formen der Natur gehorchen der fraktalen Geometrie. Ihre schroffen, scheinbar zufälligen Formen treten im Grossen, wie im Kleinen auf. Beispiel: Beim Rand einer Wolke treten bei zunehmender Vergrösserung immer wieder die gleichen (gedrehten, gespiegelten) Formen auf. Dieses Verfahren liefert bis zu einer Kompressionsrate von etwa 1:25 ähnlich gute Ergebnisse wie JPEG. 4 http://jj2000.epfl.ch 5 http://www.jpeg.org/JPEG2000.htm KAPITEL 6. DIGITAL IMAGES 97 Bei höheren Raten ergeben sich bei JPEG grobe Rasterungen. Die fraktale Kompression ist sehr zeitaufwendig, die Dekompression eines fraktal komprimierten Bildes erfolgt jedoch sehr schnell. Zur Zeit existiert noch kein Standardbildformat, das dieses Kompressionsverfahren nutzt. [Hol00] 6.5 Bildformate Im Folgenden werden einige der bekanntesten Dateiformate für digitale Rasterbilder vorgestellt. Die Eigenschaften des jeweiligen Formats bestimmen oft den Einsatz (z.B. JPEG für photorealistische Bilder, PNG für Screenshots, ...). 6.5.1 BMP Bei dem Bitmap (BMP) Format handelt es sich um eines der einfachsten Formate für Bilddaten. Es ist vor allem in der Windows Welt weit verbreitet. Als Kompressionsalgorithmus kann RLE (Abschnitt 6.4.1) verwendet werden. Bei Bildern mit 1-, 4- oder 8-Bit Farbinformation enthält der Pixelwert nicht direkt die Farbinformation, sondern einen Index auf die Farbpalette. 6.5.2 TIFF Das TIFF-Format wurde bereits 1986 von Aldus Corporation (seit 1994 Adobe) entwickelt. Oberstes Ziel war Portabilität und Hardwareunabhängigkeit. TIFF ist sehr universell einsetzbar und ist in der Lage, Schwarzweiss-, Grauwert- und Farbbilder inkl. des jeweils verwendeten Farbmodells zu enthalten. Da es viele Varianten von TIFF-Bildern gibt, kann es ab und zu zu Problemen kommen. Viele Programme unterstützen nur einen Teil aller TIFF-Varianten (verschiedene Kompressionsmethoden, etc.). 6.5.3 GIF GIF wurde von Compuserve 1987 entwickelt (GIF87a) und 1989 verbessert (GIF89a - zu GIF87a kompatibel). Vor allem durch die Aufnahme von GIF in die HTML-Spezifikation hat dieses Format ungeheure Verbreitung erlangt. Das Patentproblem (siehe dazu auch The GIF Controversy: A Software Developer’s Perspective 6 ) mit Unisys wegen der Implementation des LZW-Kompressionsalgorithmus (Abschnitt 6.4.2) hat allerdings viele Firmen dazu bewogen, ein anderes Fileformat zu favorisieren. GIF ist dennoch sehr verbreitet und wird für viele Gelegenheiten (vor allem im Web) immer noch benutzt (u.a. weil es im Gegensatz zu JPEG Transparenz und Animationen erlaubt). GIF unterstützt eine Farbtabelle von 256 Farben in 24 Bit. D.h. in einem GIF-Bild können nur 256 verschiedene Farben vorkommen, diese können jedoch beliebig aus dem gesamten RGB-Farbraum gewählt werden. In eine GIF-Datei können mehrere Bilder gespeichert werden, nicht nur eines! Im GIF87a-Format können diese Bilder gleichzeitig angezeigt werden. Eine Offsetangabe pro Bild bestimmt das Pixel links/oben, wo dieses Bild eingeblendet wird. GIF89a unterstützt Animationen, indem ein Wert in 1/100sec angegeben wird, wann das nächste Bild dargestellt werden soll. Das GIF-Format kennt einen interlaced Modus, in welchem die einzelnen Bildzeilen nach Art eines binären Baums umgeordnet werden. Dies kann benutzt werden, um GIF-Bilder bei der Anzeige zunächst grob gerastert und dann sukzessive verfeinert darzustellen. Beispiel: Gegeben sei ein Bild von 13 Zeilen. übertragen werden zuerst die Zeilen 0 und 8. Es folgen die Zeilen 4 und 12, danach 2,6,10 und abschliessend 1,3,5,7,9,11. 6 http://cloanto.com/users/mcb/19950127giflzw.html KAPITEL 6. DIGITAL IMAGES 98 GIF89a unterstützt transparente Farbe. D.h. ein Eintrag der Farbtabelle wird als transparent gekennzeichnet und alle Pixel dieser Farbe erscheinen durchscheinend. Zusätzlich ermöglicht GIF89a, dass Anwendungen spezifische Informationen im Bildformat abspeichern (Bildbeschreibungstexte, Keywords, ...). Eine kurze Zusammenfassung der Eigenschaften von GIF: • LZW-Komprimierung (Patent von Unisys) • max. 256 Farben zu je 24 Bit • mehrere Bilder in einer Datei (Animationen) • interlaced Bildaufbau • Transparenz • Texte können mitgespeichert werden 6.5.4 PNG PNG (gesprochen ’ping’) (Portable Networks Graphics) ist ein Dateiformat, das vor allem dazu gedacht ist, das GIF-Format wegen des LZW-Patent/Lizenzproblems zu ersetzen. Darum auch die inoffizielle rekursive Abkürzung des Namens PNG zu “PNG’s Not GIF”. PNG wurde als einfaches Dateiformat vom W3C spezifiziert7 , das leicht zu implementieren ist, portabel und das alle Eigenschaften von GIF beherrscht ([ea96] bzw. [MvR96, p.700–719]). Folgende Aufzählung zeigt Eigenschaften, die sowohl GIF (GIF89a) als auch PNG besitzen: • Daten als Datenstrom organisiert • verlustlose Datenkompression • Speicherung von Bildern mit Farbtabelle mit bis zu 256 verschiedenen Farben • progressiver Bildaufbau von interlaced Bildern • Transparenz (Ein Test, welche Transparenzen ein Browser unterstützt, ist unter http://entropymine. com/jason/testbed/pngtrans/ zu finden.) • Möglichkeit benutzerdefinierte Daten zu speichern (keywords, ...) • Hardware- und Betriebssystemunabhängig Folgende GIF-Eigenschaften wurden bei PNG verbessert: • keine Patente, keine Lizenzprobleme • Schnellerer progressiver Bildaufbau • Mehr Möglichkeiten, benutzerdefinierte Daten zu speichern Folgende Features von PNG gibt es bei GIF überhaupt nicht: • Speicherung von true-color Bildern mit bis zu 48 Bit pro Pixel (nicht indiziert!) • Speicherung von grayscale Bilder mit bis zu 16 Bit pro Pixel (nicht indiziert!) • Alpha Channel • Gamma Indikator 7 http://www.w3.org/TR/REC-png KAPITEL 6. DIGITAL IMAGES 99 • CRC-Prüfsumme um Fehler bei der Übertragung zu entdecken • Standard Toolkit, um die Implementierung von PNG-Lese- und -Schreib-Routinen zu erleichtern • Standard Set von Benchmark Bildern, um Implementationen zu testen Folgende GIF Features wurden in PNG 1.0 nicht spezifiziert: • Speicherung mehrerer Bilder in einer Datei (wird von MNG (Multi Image Network Graphics)8 übernommen) • Animationen • Zahlung einer Lizenzgebühr, wenn Software verkauft werden soll, die das PNG-Fileformat lesen oder schreiben kann. D.h. es fällt keine Lizenzgebühr an (im Gegensatz zu GIF). Interlacing PNG Bilder werden typischerweise als Serie von scan-lines gespeichert (von oben nach unten). Zusätzlich können die Bilddaten aber auch in einem speziellem Interlace-Muster gespeichert werden, um eine progressive Anzeige von niederer zu höherer Auflösung zu ermöglichen. PNG verwendet ein Schema mit sieben Durchgängen, Adam7 genannt. PNG verwendet die ersten sechs Durchgänge, um die geraden Zeilennummern (0,2,4,6,8,...) und den letzten, siebten, um die ungeraden Zeilen (1,3,5,7,...) darzustellen. Die ersten sechs Durchgänge übertragen keine ganzen Zeilen, sondern immer nur bestimmte Pixel pro Zeile. Die ersten beiden Durchgänge enthalten 1/64 der Pixel des Bildes. Die folgenden übertragen ein 1/32, 1/16, 1/8, 1/4 und der letzte schliesslich 1/2 des Bildes (GIF überträgt 1/8,1/8,1/4,1/2). Ein guter Vergleich der beiden Interlacingverfahren ist unter http://www.libpng.org/pub/png/pngintro.html# interlacing zu sehen. Das Bild selbst wird zuerst in 8x8, dann in 4x8, 4x4, 2x4, 2x2, 1x2 Blöcken dargestellt. Der letzte Durchgang füllt die ungeraden Zeilen. Mit diesem Verfahren kann das menschliche Auge schon nach ca. 30% übertragener Daten den Inhalt des Bildes erkennen (im Gegensatz zu GIF, wo ca 50% benötigt werden). Durch die Tatsache, dass die Bilddaten von interlaced Bildern nicht in der richtigen geometrischen Anordnung gespeichert sind (sich aber im Allgemeinen benachbarte Pixel ähneln und damit besser komprimiert werden können), verschlechtert sich die Kompressionsrate bei interlaced Bilden um ca. 10%. Adam7 Interlacing benutzt untenstehende Tabelle, die über die nichtkomprimierten Bilddaten gelegt wird (neben- und untereinander wiederholt), um festzustellen, welche Pixel in welchem Durchgang übertragen werden müssen. 1 7 5 7 3 7 5 7 6 7 6 7 6 7 6 7 4 7 5 7 4 7 5 7 6 7 6 7 6 7 6 7 2 7 5 7 3 7 5 7 6 7 6 7 6 7 6 7 4 7 5 7 4 7 5 7 6 7 6 7 6 7 6 7 Datenkompression PNG speichert Bilder immer komprimiert. Es verwendet eine Vorhersage von Pixeln und komprimiert die Differenz zwischen dem Pixelwert und der Vorhersage mit einer Variation der Deflate-Komprimierungsmethode, die auch im Archivierungsprogramm pkzip verwendet wird. Diese Kompressionsmethode ist gut dokumentiert, frei verfügbar, schnell und auf vielen Plattformen verfügbar. 8 http://www.libpng.org/pub/png/pngpic2.html KAPITEL 6. DIGITAL IMAGES 100 Deflate ist eine Variation des LZ77-Algorithmus von Lempel/Ziv, der aber keine sortierten Hash-Tabellen verwendet und so Patentverletzungen umgeht. 6.5.5 JFIF (JPEG) Sowohl verlustfrei, als auch die verlustbehaftet JPEG-komprimierten Bilder werden im gleichen Dateiformat abgelegt. Dabei werden die drei Teilbilder (scans) des entsprechenden Farbmodells hintereinander abgespeichert. Die einzelnen Blöcke sind die 8x8-Makroblöcke der JPEG-Kompression. Für Details und Eigenschaften von Bildern, die mit JPEG komprimiert wurden, siehe Abschnitt 6.4.5. In JPEG Bildern kann in Kombination mit dem EXIF -Format auch Metainformationen gespeichert werden. Moderne Digitalkameras speichern in diesen Meta-Informationen z.B. die Belichtungszeit, die Brennweite, Datum und Uhrzeit der Belichtung, etc. Ein (unvollständiges) Beispiel von Metadaten, die aus den EXIF-Daten extrahiert werden können, zeigt Tabelle 6.3. EXIF-Tag Camera make Camera model Date/Time Resolution Flash used Focal length CCD width Exposure time Aperture Focus dist. Metering Mode Jpeg process Wert Canon Canon DIGITAL IXUS 2002:05:11 23:06:04 1152 x 864 Yes 5.4mm (35mm equivalent: 37mm) 5.23mm 0.017 s (1/60) f/2.8 1.02m center weight Baseline Tabelle 6.3: EXIF Daten eines JPEG-Bildes einer digitalen Kamera. 6.5.6 JPEG 2000 Der JPEG2000 Standard definiert gleich mehrere Dateitypen: • .j2k: farbenblinder JPEG 2000 Datenstrom ohne jegliche Dateiheader. • .jp2: Kapselt einen JPEG 2000 Datenstrom und fügt Headerinformationen über das verwendete Farbmodell und optional Informationen über Copyright etc. hinzu. Dieses Dateiformat wird vom JPEG 2000 Standard Teil 1 definiert. • .jpx: Fügt Erweiterungen (JPEG 2000 Standard Teil 2) hinzu. Kann in jp2-Dateien geschrieben werden. Programme, die die Erweiterungen nicht verstehen, können diese einfach ignorieren. • .mj2: Dieser Dateityp wird für collections von Bildern verwendet (JPEG 2000 Standard Teil 3). Dies können z.B. Videos sein. • .jpm: unterstützt mehrere Kompressionsarten und layering (JPEG 2000 Standard Teil 6). 6.6 Metaformate Metaformatdateien speichern Grafiken als Funktionsaufrufe an das jeweilige Graphiksubsystem des Betriebssystems. Daher sind diese Dateiformate auch sehr eng mit einem Betriebssystem verbunden. Ein Vorteil eines solchen Verfahrens ist, dass Metaformatgraphiken sehr schnell aufgebaut werden können, da KAPITEL 6. DIGITAL IMAGES 101 keinerlei Berechnungen/Konvertierungen nötig sind, um das Bild aufzubauen. Der schwerwiegende Nachteil ist jedoch, dass diese Formate sehr plattformspezifisch sind und somit nur für einen eingeschränkten Benutzerkreis verwendbar sind. 6.6.1 WMF Windows Meta File (WMF) ist sehr eng mit MS-Windows verbunden. WMF speichert Grafiken als eine Folge von Konstruktionsanweisungen mit den dazu gehörigen Parametern. Die Anweisungen werden unter Windows als Funktionsaufrufe bezeichnet. Diese setzen auf das Graphics Device Interface (GDI) für die Ausgabe auf die entsprechende Hardware auf. Das GDI enthält Bibliotheken von grafischen Objekten wie z.B. Kreise, Rechtecke, Ellipsen, ... 6.6.2 PICT Ein ähnliches Konzept wie WMF verfolgt PICT, das Macintosh-eigene Funktionsaufrufe für das Grafikprotokoll QuickDraw enthält. 6.7 Vektorgrafik Formate Vektorgrafiken bestehen im Unterschied zu Rasterbildern nicht aus Pixeln, sondern aus mathematisch exakt definierten Kurven und Linien, die als “Vektoren” bezeichnet werden. Um solche Kurven zu definieren, sind meist nur wenige Angaben notwendig. Um z.B. eine Linie zu definieren, müssen nur die Koordinaten des Ausgangspunktes, die Koordinaten des Zielpunktes und die Linienstärke bekannt sein. Ebenso reichen für einen Kreis die Koordinaten des Mittelpunktes, sein Radius und die Linienstärke als Angaben aus. Vektorgrafiken haben folgende Vorteile gegenüber Rasterbildern: • Sie sind beliebig skalierbar, d.h. eine Vektorgrafik kann beliebig vergrössert/verkleinert werden, ohne dass es zu Qualitätseinbussen kommt. • Sie benötigen im Allgemeinen weniger Speicherplatz, da wenige Angaben reichen, um bestimmte Formen darzustellen. • Sie sind beliebig genau, Auflösung ist kein Thema. Vektorgrafiken sind ideal zur Speicherung von Bildern, die linienbasierte Informationen oder Elemente enthalten oder leicht in linienbasierte Informationen zu überführen sind (z.B. Text). Nachteile von Vektorgrafiken sind, dass • komplexe Bilder mit pixelweise wechselnden Farben (Fotos) nur unter grossem Aufwand gespeichert werden können. • das Erscheinungsbild vom darstellenden Programm abhängig ist. Die optimale Ausgabequalität ist naturgemäss nur von Vektorausgabegeräten (z.B. Plotter) erreichbar. 6.7.1 Postscript Postscript wurde 1984 von Adobe entwickelt und ist eigentlich eine Seitenbeschreibungssprache9 . Postscript-Dateien sind reine ASCII-Text-Dateien, die den Programmcode enthalten. Eine Linie wird z.B. in Postscript folgendermassen beschrieben (’%’ leitet einen Kommentar ein): 9 Eigentlich ist Postscript eine vollwertige Programmiersprache, mit Schleifen, Variablen, ... KAPITEL 6. DIGITAL IMAGES 102 % Polyline 7.500 slw n 1900 2000 m 4500 2000 l gs col0 s gr Wobei die Linie von den Koordinaten (1900,2000) zu dem Punkt (4500,2000) reicht und die Farbe Null hat. Postscript beschreibt den kompletten Aufbau einer Druck- oder Bildseite, also Text, Vektorgraphik und eingebettete Rasterbilder. Je nach Version unterstützt Postscript verschiedene Kompressionsalgorithmen (z.B. Postscript Level 2 unterstützt JPEG Kompression) und verschiedene Farbtiefen (1/4/8/24 Bit). 6.7.2 Portable Document Format (PDF) PDF von Adobe basiert im wesentlichen auf Postscript (Abschnitt 6.7.1) und ist eigentlich eher ein Dokumentenformat als ein Bildformat (Ansichtsache!). Die wesentlichen Unterschiede zu Postscript sind: • Ablage nicht als lesbarer ASCII-Code, sondern zum Teil als komprimierter binärer Byte Code. • Erweitertes Interface mit dem Betriebssystem (z.B. für Dateioperationen) • Ablage von Meta-Informationen für Copyright, etc. (z.B. eingebaute Kopierschutzfunktionen) • Hypertextkonzept (Hyperlinks im Dokument und zu anderen Dokumenten (im Web)) 6.7.3 DXF DXF ist ein Format für vektororientierte Programme und wurde von der Firma Autodesk entwickelt. Daher stammt auch die hauptsächliche Verwendung für CAD/CAM/CIM. DXF kann im Gegensatz zu vielen anderen Formaten auch dreidimensionale Objekte speichern. Die Anzahl der Farben ist auf 8 Bit (256 Farben) beschränkt und unterstützt keine Kompression. Da DXF-Dateien reine Textdateien sind, sind sie relativ leicht von Applikationen zu erzeugen und können dann von vielen CAD-Programmen importiert werden. 6.7.4 SVG Das neue Vektor-Grafikformat Scalable Vector Graphics (SVG) 10 wurde vom W3C (und Adobe?) entwickelt. Dieses Format soll den ersten Vektorbasierten Bild-Standard für Web-Grafiken bilden. Einige Eigenschaften von SVG: • Die Daten werden in einer XML-Datei gespeichert. • 24 Bit Farbtiefe (true color ), Transparenz, Gradienten (Farbverläufe) • typographische Features (wie Kerning, “kurvige” Texte, Ligaturen, ...) • Rasterbilder (JPEG, GIF, ...) können eingebettet werden • Interaktiv: es kann auf Benutzeraktionen reagiert werden (mouse-click, ...) • Animationen • Konform zu DOM (Document Object Model). Damit ist es möglich, ein SVG-Bild mit Hilfe von Skriptsprachen (JavaScript, ...) zu bearbeiten. 10 http://www.adobe.com/svg KAPITEL 6. DIGITAL IMAGES 103 Leider verstehen zur Zeit zumindest die grossen Browser (Netscape, Internet Explorer) das SVG-Format noch nicht von selbst. Für beide gibt es für Windows-, Mac- und seit 30.11.2001 auch für LinuxPlattformen ein Plugin, damit SVG-Grafiken angezeigt werden können. Verschiedene Programme können SVG bereits exportieren: Adobe Illustrator, CorelDraw mit SVGPlugin, Gill (Gnome Illustrator) Unter http://www.w3.org/Graphics/SVG/SVG-Implementations finden sich verschiedene SVG-Implementierungen, u.a. verschiedene Viewer. Folgender XML-Code beschreibt die amerikanische Flagge (zum besseren Verständnis des SVG-Codes in Abbildung 6.13 dargestellt) mit drehenden Sternen in SVG-Syntax. Schön sieht man die Definition von verschiedenen graphischen Elementen und deren Wiederverwendung an verschiedenen Koordinaten. Das XML-Tag <g> dient zur Gruppierung von verschiedenen Elementen. <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN" "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylabl e.dtd" > <svg viewBox="0 0 1000 600"> <g transform="translate(10 60)"> <defs> <rect id="red" width="900" height="40" style="fill:#dd0000"/> <rect id="white" width="900" height="40" style="fill:white"/> <polygon id="star" style="fill:white;fill-rule:nonzero;" points="0,-14 8.229,11.326 -13.315,-4.326 13.315,-4.326 -8.229,11.326"> <animateTransform attributeName="transform" type="rotate" values="0;360" dur="3s" repeatDur="indefinite" /> </polygon> <g id="6star_row"> <use xlink:href="#star" <use xlink:href="#star" <use xlink:href="#star" <use xlink:href="#star" <use xlink:href="#star" <use xlink:href="#star" </g> x="20"/> x="90"/> x="150"/> x="210"/> x="270"/> x="330"/> <g id="5star_row"> <use xlink:href="#star" <use xlink:href="#star" <use xlink:href="#star" <use xlink:href="#star" <use xlink:href="#star" </g> x="60"/> x="120"/> x="180"/> x="240"/> x="300"/> </defs> <use <use <use <use <use <use <use <use <use <use <use <use <use xlink:href="#red"/> xlink:href="#white" y="40"/> xlink:href="#red" y="80"/> xlink:href="#white" y="120"/> xlink:href="#red" y="160"/> xlink:href="#white" y="200"/> xlink:href="#red" y="240"/> xlink:href="#white" y="280"/> xlink:href="#red" y="320"/> xlink:href="#white" y="360"/> xlink:href="#red" y="400"/> xlink:href="#white" y="440"/> xlink:href="#red" y="480"/> <rect id="bluebox" width="360" height="280" style="fill:#000088"/> <rect id="border" width="900" height="520" style="fill:none;stroke:black;stroke-width:0.85"/> <g transform="translate(4.5 0)"> <use xlink:href="#6star_row" y="20"/> KAPITEL 6. DIGITAL IMAGES <use <use <use <use <use <use <use <use </g> </g> </svg> xlink:href="#5star_row" xlink:href="#6star_row" xlink:href="#5star_row" xlink:href="#6star_row" xlink:href="#5star_row" xlink:href="#6star_row" xlink:href="#5star_row" xlink:href="#6star_row" 104 y="50"/> y="80"/> y="110"/> y="140"/> y="170"/> y="200"/> y="230"/> y="260"/> Abbildung 6.13: SVG Grafik ’Stars and Stripes’ Dieses Beispiel stammt von der Demo-Webseite von Adobe11 . Um die Dateien schneller übertagen zu können, sind sie alle gezipped, sodass man den XML-Code erst nach einem gunzip<filename> (unter Linux) oder der Behandlung mit einem entsprechenden Programm unter Windows (Winzip) zu sehen bekommt. Die Plugins der Browser (getestet mit IE) können mit gezippten Dateien direkt umgehen. Anwendung von SVG Auf der Webseite von Adobe12 sind einige SVG-Beispiele zu finden (u.a. Visualisierung eines Moleküls in der Chemical Markup Language). Ein wichtiger Bereich wird sicher die Darstellung von geographischen Daten. Beispiele dafür finden sich unter anderen unter http://www.academy-computing.com/svgweb. 6.8 Digitale Wasserzeichen Digitale Wasserzeichen beruhen auf Steganografie: In ansonsten unauffälligen Daten (z.B. Texte, Bilder, Audiodaten, ...) werden zusätzliche Informationen eingebracht. Diese dienen • der möglichst eindeutigen Identifikation des Empfängers der Daten: Tauchen diese Daten später an anderer Stelle auf, ist eindeutig bewiesen, dass sie durch den originalen Empfänger weitergegeben wurden (Kopierschutz ) oder gestohlen wurden (Diebstahlsschutz ). • der eindeutigen Identifikation des Verfassers (Urheberschutz ) 11 http://www.adobe.com/svg/demos/main.html 12 http://www.adobe.com/svg KAPITEL 6. DIGITAL IMAGES 105 Die Entfernung eines digitalen Wasserzeichens aus einem Datenbestand soll grundsätzlich bemerkbar sein - je nach Zielrichtung kann dies von partieller Verfälschung bis zur vollständigen Unbrauchbarkeit der Daten reichen. [Hen00] Sichtbare Wasserzeichen dienen der offenen Identifikation von Daten - etwa durch Anbringung eines Logos. Als Beispiel kann die Senderidentifikation in heutigen Fernsehprogrammen herangezogen werden. Bei Unsichtbaren Wasserzeichen wird ein grosser Teil der Daten geringfügig modifiziert. Beispielsweise wird die Urheberinformationen in digitalen Photos über das gesamte Bild verteilt und ist damit unsichtbar. Unsichtbare digitale Wasserzeichen existieren in verschiedenen Abstufungen der Robustheit. Wenig robuste können schon durch einfache Transformationen der Daten entfernt werden. Für Bilddaten sind dies insbesondere Drehung um kleine Winkel (ca. 0.5 Grad), Glättung oder Beschneiden des Randes. Bei Audio- oder Videodaten sind wegen der hohen Datenmengen viele robuste Verfahren anwendbar. So sind Verfahren bekannt, bei welchen das eingebrachte digitale Wasserzeichen auch eine MP3-Codierung “überlebt”. Lowest Bit Coding Bei der Digitalisierung von Multimediadaten kann eine höhere Anzahl von Bits je Sample verwendet werden, als der Qualität und dem Betrachter angemessen sind. In diesen Bits werden geheime Informationen gespeichert. Texture Block Coding Bei diesem Verfahren werden Bildbereiche ausgeschnitten und an anderer Stelle wieder in das Bild eingefügt. Bei hinreichender Ähnlichkeit (grüne Wiese, blauer Himmel, etc.) kann diese Modifikation subjektiv nicht wahrgenommen werden, identische Bit-Muster können aber leicht mit Hilfe des Computers gefunden werden. Texture Block Coding ist robust gegenüber Veränderungen, die das ganze Bild betreffen (Drehung, Farbveränderungen, ...). Patchwork Coding Bei diesem Verfahren kann nur ein Bit Information in einem Datensatz untergebracht werden: Das Wasserzeichen ist also entweder vorhanden oder nicht. Dazu wird eine Konstante C und ein geheimer Zahlenwert S, der als Startwert eines genau definierten Pseudozufallszahlengenerators (PZG) dient. Der PZG liefert eine möglichst unzusammenhängende Folge von Zahlen, deren Abfolge aber durch die Wahl des Startwertes eindeutig bestimmt ist. Mit diesem Startwert S und dem PZG werden zwei Pixelkoordinaten (A und B) eines Bildes berechnet und die Helligkeit des Pixels A um den Wert C verringert, die Helligkeit des Pixels B und den Wert C vergrössert. Dies wird etwa 10000 mal wiederholt. Zur Überprüfung des Wasserzeichens werden nun wieder die Koordinaten der Pixelpaare mit Hilfe des Startwertes S und des PZGs wieder berechnet und beobachtet, ob im Mittel über die 10000 Pixelpaare die Helligkeitsdifferenz der beiden Pixel 2C ergibt. Ist das so, ist das Wasserzeichen vorhanden, wenn nicht ergibt die mittlere Differenz Null. Eine ausführliche (und mathematisch exaktere) Erklärung findet sich in [Hen00] oder unter http://www. research.ibm.com/journal/sj/mit/sectiona/bender.html. Steganografie Literatur • Eine gute Webseite inkl. vieler Links auf Software ist StegoArchive13 13 http://www.stegoarchive.com KAPITEL 6. DIGITAL IMAGES 106 • Eine grosse Linksammlung über digitale Wasserzeichen ist unter http://view.informatik.uni-leipzig. de/~toelke/Watermark.html zu finden. Dort ist auch der source eines Programmes zu finden, der Wasserzeichen in Bilder einfügen/entfernen/überprüfen kann. • Der Watermarking Webring ist unter http://www.watermarkingworld.org/webring.html zu finden. • Ein Artikel über aktuelle Steganographieprogramme ist in c’t 9/2001 zu finden ([Wes01]). Kapitel 7 Digital Video Unter Video wird jegliche Art von Bewegtbildern verstanden. Im Unterschied zur analogen Videotechnik werden bei der digitalen Videotechnik die Videosignale einer analogen Quelle (Videokamera) digitalisiert und in digitaler Form gespeichert. Digital Video (DV) nimmt die Bilder gleich in digitaler Form auf. Digitale Videotechnik versucht heutzutage die analoge Technik zu verdrängen, die Verarbeitung von digitalem Videomaterial mit einem PC ist aber nicht ganz unproblematisch: Ein einzelnes Vollbild (Frame) in voller Farbtiefe benötigt bei 800.000 Pixeln (zur Zeit die Standardauflösung von digitalen Videokameras) schon 2.4MB. Um eine realistische Bewegtbildfolge zu erhalten, sind 25 bis 30 Bilder pro Sekunde nötig. Das führt zu einem Datenstrom von 60MB pro Sekunde! Ein abendfüllender Film (120min) würde unkomprimiert also 432 Gigabytes an Daten produzieren! Dieses kurze Rechenbeispiel zeigt schon, dass bei digitalem Video die Kompression sehr wichtig ist, will man diese Datenmengen mit ’Standard-PCs’ noch irgendwie bewältigen. 7.1 Video und der Mensch Das menschliche Auge kann nur relativ langsame visuelle Reize aufnehmen. Schnell aufeinanderfolgende Reize können nicht mehr unterschieden werden. Durch hintereinanderfolgende Projektion von Einzelbildern kann dadurch eine “Scheinbewegung” vorgetäuscht werden. Die Grenze für das Eintreten dieser Scheinbewegung liegt bei einer Bildfolge von 16 bis 24 Bildwechseln pro Sekunde. Der traditionelle Kinofilm basiert auf 24 Bilder pro Sekunde, was aber immer noch zu starkem Flimmern führt. Deshalb wird durch eine Blende jedes Bild nocheinmal bzw. zweimal unterbrochen, sodass 48 bzw. 72 Lichtreize pro Sekunde entstehen. Für sehr helle Bilder genügt eine Auflösung von 25 Bildern pro Sekunde nicht. Solche Filme flimmern noch merklich. Daher wurde z.B. beim Fernseher das Zeilensprungverfahren (Interlacing) eingeführt: Die Bilder werden nicht in ihrer natürlichen Reihenfolge wiedergegeben, sondern in der ersten 1/50 Sekunde nur die ungeraden Zeilen, in der nächsten 1/50 Sekunde nur die geraden Zeilen. Dadurch werden 50 Bilder mit halber Zeilenzahl erzeugt, die ineinander geschachtelt dargestellt werden und so einigermassen flimmerfrei wirken. Wirklich flimmerfrei wird das Bild aber erst bei mehr als 75 Bildwechseln pro Sekunde. [Hol00] Bewegung wird aber nicht nur von Auge erfasst, auch andere Einflussfaktoren spielen ein Rolle. 7.1.1 Wahrnehmung von Bewegung Der wichtigste psychologische Einfluss auf die Wahrnehmung von Bewegung ist die gegenseitige Beeinflussung benachbarter Lichtsinneszellen auf der Netzhaut des menschlichen Auges. Von erheblicher Wichtigkeit ist aber auch die Wahrnehmung von Beschleunigung mittels verschiedener Bogengänge im Ohr. Diese Bogengänge sind mit Flüssigkeit gefüllt, die bei Beschleunigung durch ihre Masseträgheit dafür sorgt, dass Sinneshaare im Ohr umgebogen werden. 107 KAPITEL 7. DIGITAL VIDEO 108 Der Simulation von Bewegungen in multimedialen Umgebungen ist durch die darin fehlende Beschleunigungswahrnehmung eine Grenze gesetzt. Wird das menschliche Wahrnehmungssystem raschen optischen Bewegungswechseln ausgesetzt, ohne dass eine passende Beschleunigungswahrnehmung existiert (oder umgekehrt), ergibt sich für die meisten Personen eine heftige Übelkeit. Beispiel: Lesen beim Autofahren, oder der Besuch eines 3-D Kinos. Eine Vermutung für diesen Grund ist, dass das Gehirn die Entkopplung sensorischer Inputs als erstes Zeichen für Vergiftung ansieht, und das spontane Erbrechen von Nahrung sich als evolutionärer Vorteil erwiesen hat. Ein weiteres Problem bei der Betrachtung von Bewegungen auf einem Bildschirm ist der Wegfall der Akkomodation (der Anpassung der Augenlinse auf unterschiedliche Entfernungen): Hintergrund und Objekt sind scheinbar in gleicher Entfernung angeordnet. Dies ist auch ein Problem bei stereoskopischen Aufnahmen, die meist für eine unnatürliche Entkopplung zwischen Vergenz (Schrägstellung der Blickrichtung beider Augen relativ zueinander) und Akkomodation sorgen und damit bei empfindlichen Personen Übelkeit erregen. [Hen00] Jegliche Aufnahme von Bewegung (ob analog oder digital) kann somit nur einen Teil der visuellen Aufnahme simulieren. Trotzdem haben bewegte Bilder einen wichtigen Platz eingenommen, den sie auch in der digitalen Welt beanspruchen. 7.2 Analoges Video Um die Eigenschaften von digitalem Video zu verstehen, sollte man auch einiges von analogem Video verstanden haben. Das Hauptproblem von analogem Video ist, dass sich die Fehler bei wiederholtem Bearbeiten immer weiter fortpflanzen und sich so die Qualität immer mehr verschlechtert. NOTIZ: Die folgenden Videostandards sind nur der Vollständigkeit halber angeführt und werden nur überblicksmässig bei Prüfungen gefragt. 7.2.1 BAS und FBAS (Composite Video) Am Ende jeder abgetasteter Zeile erfolgt ein Rücksprung auf den Anfang der nächsten Zeile, am Ende des gesamten (Halb-)Bildes der Sprung auf den Anfang des Abtastgerätes. Enthält ein BAS-(Bild, Austastung, Synchronisation)-Signal zusätzlich noch Farbinformation, spricht man von einem FBAS-(Farbe, Bild, Austastung, Synchronisation)-Signal. 7.2.2 Komponentenvideo (Component Video) Grundlage dieses Videostandards ist ein Farbmodell, in dem jedes der drei Primärsignale getrennt übertragen wird. Je nach Farbmodell sind RGB, YUV oder YIQ die Primärsignale. 7.2.3 Y/C Video (Separiertes Video) Luminanz/Color-Video ist ein Kompromiss aus FBAS und Component Video. Die beiden Farbsignale (z.B. U und V) werden zu einem gesamten Chrominanz-Signal gemischt, das Luminanzsignal Y wird separat übertragen. S-VHS und Hi-8 verwendend dieses Modell. 7.2.4 PAL Video Der im deutschen Sprachraum verwendete Fernsehstandard hat folgende Eigenschaften: KAPITEL 7. DIGITAL VIDEO 109 • 768 Pixel pro Zeile • 625 Zeilen pro Bild (Frame) (576 sichtbar) • 25 Frames pro Sekunden • Bildseitenverhältnis von 4:3 • Quadratische Pixel • Interlaced Modus (zwei Halbbilder mit geraden/ungeraden Zeilen ergeben ein Bild) 7.2.5 NTSC Video Der amerikanische Fernsehstandard hat folgende Eigenschaften: • 640 Pixel pro Zeile • 525 Rasterzeilen (480 sichtbar) • 29.97 Frames pro Sekunden (diese seltsame Zahl resultiert aus der Tatsache, dass die Trennung von Audio- und Farbträger genau auf 4.5 MHz eingestellt wurde) • Bildseitenverhältnis von 4:3 • Quadratische Pixel • Interlaced Modus (zwei Halbbilder mit geraden/ungeraden Zeilen ergeben ein Bild) • verwendet das YIQ-Farbmodell 7.2.6 High Definition Television (HDTV) HDTV dient als Sammelbegriff für verschiedene Formate hochauflösenden Fernsehens. Die in den verschiedenen HDTV-Standards definierten Auflösungen und Bildraten werden vermutlich durch die derzeitige Entwicklung bei digitalen Videostandards obsolet [Hen00], noch bevor sie wirklich auf den Markt kommen. Die Auflösungen reichen von 1920x1080 (bei einem Seitenverhältnis von 16:9) bis zu 640x480 (bei 4:3). Die Bildraten sind zwischen 24Hz und 60Hz definiert (sowohl die ’krummen’ NTSC-Frequenzen, als auch die ’geraden’ PAL-Frequenzen). 7.3 Digitale Videotechnik Digitale Videotechnik wird wahrscheinlich in der nächsten Zeit die konventionelle analoge Videotechnik ablösen, da mehrere Vorteile klar für die digitale Welt sprechen: • Direkter Zugriff auf einzelne Bilder • Keine Verluste beim wiederholten Bearbeiten/Schneiden Wie schon eingangs erwähnt, ist die Datenmenge, die bei einem digitalen Video anfällt, aber sehr gross und so ist Kompression enorm wichtig. Für die Verarbeitung von Multimediadaten hat es sich bewährt, die dafür benötige Software in mehrere Teile zu spalten und dazwischen Schnittstellen zu standardisieren. Die Arbeitspferde dabei sind Codecs, die Verarbeitung, Umrechnung und das Mixen der Mediastreams übernehmen. Die einzelnen Teile sollten in der Theorie austauschbar sein, jedoch kann man nicht bei jedem Programm alle für einen bestimmten Codec optimalen Einstellungen vornehmen, und nicht jeder Codec kann beliebige Dateiformate schreiben. KAPITEL 7. DIGITAL VIDEO 110 Auf dem Macintosh ist die unangefochtene Multimediaschnittstelle Apple’s Lösung QuickTime. Unter Windows konkurrieren drei Systeme: von Microsoft das alte Video für Windows und das neuere DirectShow - und daneben plattformübergreifend Apple QuickTime[DZ01]. Für Linux gibt es leider noch keine Standards in diese Richtung. 7.3.1 Codecs Codec steht für Coder/Decoder und meint die Software oder Hardware, die zur Kompression/Dekompression von Multimediadaten, hauptsächlich Videodaten, verantwortlich ist. Bei lizenzpflichtigen Verfahren sind diese beiden Teile auch manchmal getrennt: der Kompressor ist gebührenpflichtig, während der Dekompressor frei zugänglich ist. Codecs spielen also die Rolle von Treibern für virtuelle oder reale Geräte. Die wichtigsten Codecs sind Cinepak, Indeo, Video-1, MS-RLE, MJPEG und Codecs nach H.261, H.263 und MPEG (siehe Abschnitt 7.3.2 und Abschnitt 7.3.3): Cinepak Das Verfahren ist mittlerweile von Apple gekauft worden und komprimiert Videodaten, indem wenige vollständige Bilder (Keyframes) eines Videos in eine grössere Menge von Differenzbildern (Delta Frames) eingebunden werden. Die Farbtiefe beträgt 24 Bit und der typische Kompressionsfaktor ist etwa 7:1. Indeo Wurde von Intel für den i750-Prozessor entwickelt, es gibt aber auch reine Softwarelösungen. Das Kompressionsverfahren arbeitet mit Makroblöcken zu je 4x4 Pixel, ist stark verlustbehaftet und asymetrisch, d.h. die Kompression bedarf eines höheren Rechenaufwandes als die Dekompression. Der typische Kompressionsfaktor ist ebenfalls etwa 7:1. Microsoft Video-1 Entwickelt von MediaVision, mittlerweile von Microsoft gekauft, arbeitet das Verfahren mit 8, 16 und 24 Bit Farbtiefe. Der Kompressionsfaktor beträgt nur etwa 2:1. Das Verfahren ist nur unter Windows verfügbar. Microsoft RLE Diese Microsoft Eigenentwicklung erlaubt nur 4 oder 8 Bit Farbtiefe. Der typische Kompressionsfaktor ist noch schlechter als bei Video-1. MJPEG Motion JPEG besteht aus hintereinandergereihten Bildern, die mit JPEG komprimiert wurden. Der Kompressionsfaktor hängt stark von der verwendeten Qualität ab und entspricht dem der JPEG Kompression (siehe Tabelle 6.1). Ein Nachteil dieses Codecs ist, dass die Einbindung von Audio-Daten nicht im MJPEG-Standard definiert ist. MJPEG Videos werden unter Windows nahezu immer im AVI-Dateiformat und unter Apple im QuicktimeFormat abgelegt. Digitale Videokameras speichern die Videodaten in einem verbesserten MJPEG-Format, das mit einer fixen Datenrate von 3.4MByte/Sekunde arbeitet. Damit kommt man auf 204MB Daten pro Minute oder ungefähr 12GB pro Stunde. Der Ton wird mit 16 Bit, 48KHz Stereo (oder 12 Bit, 32kHz, 2x Stereo) im Bitstrom mitgespeichert, um Synchronisationsprobleme zu vermeiden. 7.3.2 Videokompression nach H.261 und H.263 H.261 wurde in den Jahren 1984 bis 1990 entwickelt und ermöglicht Video-Conferencing und VideoTelefonie über ISDN-Leitungen mit einer Bandbreite von 64kbit/sec oder ganzzahligen Vielfachen davon. Entsprechend der Zielanwendung “Kommunikation” wurde spezifiziert, dass Kompression und Dekompression zusammen nicht mehr als 150ms Verzögerung bewirken dürfen. Die Bildwechselfrequenz liegt bei 29.97 Frames/Sekunde (30000/1001). Die Auflösung ist entweder 352x288 oder 176x144 Pixel. Es treten zwei Arten von Frames auf (siehe auch Abbildung 7.1): KAPITEL 7. DIGITAL VIDEO 111 • Intraframes (I-Frames) enthalten vollständige Bilddaten und sind nach JPEG komprimiert. • Predicted Frames (P-Frames) werden durch Bewegungsvorhersage und Differenzbildung aus den vorhergehenden Frames erzeugt. I P P P I P P P Zeit Abbildung 7.1: I-Frames und P-Frames Bei H.263 wurden 1996 einige Teile gegenüber H.261 verbessert: • Verringerte Genauigkeit bei der Bewegungsvorhersage • Einige Teile des Datenstromes sind optional • Aushandelbare Parameter zur Leistungssteigerung (z.B. kann auf eine bidirektionale Vorhersage ähnlich MPEG umgeschaltet werden) • Fünf verschiedene Auflösungen • Bildnummerierung mit 8 Bit anstatt mit 5 Bit Mit diesen Änderungen lassen sich H.263 Datenströme mit weniger als der halben Datenrate als mit H.261 bei gleichem Inhalt übertragen. Eine verbesserte Version von H.263 (H.245) wird vom IP-Telefonie-Standard H.323 benutzt. Mehr Details über H.323 findet man u.a. unter http://www.packetizer.com/iptel/h323/. H.261 Kompression Die I-Frames werden im Prinzip nach JPEG komprimiert: Die 16x16 Makroblöcke werden in vier 8x8 Blöcke unterteilt und mit einem festen Wert für alle Koeffizienten der diskreten Cosinus-Transformation quantisiert. Für die P-Frames wird das aktuelle Bild ebenfalls in 16x16 Makroblöcke zerlegt. Für jeden dieser Blöcke wird im vorhergehenden Bild derjenige Block gesucht, der am besten übereinstimmt (Best Match-Suche). Der relative Verschiebungsvektor wird in den Ausgabestrom aufgenommen. Die Differenz der beiden Makroblöcke wird schliesslich genau wie in der I-Frame-Codierung in das JPEG-Format gewandelt. Tabelle 7.1 zeigt die Datenraten bei der H.261 Kompression. 7.3.3 Videokompression nach MPEG Das MPEG-Kompressionsverfahren wurde zuerst 1992 von der Moving Pictures Expert Group vorgestellt. Derzeit gibt es verschiedene Ausprägungen des MPEG-Standards: KAPITEL 7. DIGITAL VIDEO Format CIF 352x288x30 QCIF 176x144x30 112 Datenrate unkomprimiert 36.45Mbit/sec 9.115Mbit/sec Datenrate H.261 24xISDN = 1.5Mbit/s 6xISDN = 384kbit/s Tabelle 7.1: Datenraten bei H.261 Kompression MPEG-1 (1992) wurde als Standard zur Speicherung von Bildern und Musik auf Datenträgern (z.B. CDROM) kreiert. MPEG-1 Layer 3 (mp3) ist ein Quasi-Standard für hochwertige Audiokompression. MPEG-1 bietet eine mittlere Bandbreite ≤ 1.892Mbit/sec, davon ca. 1.25Mbit/sec Video. Der Rest wird auf zwei Audio-Kanäle aufgeteilt. Die Auflösung beträgt 360x288 bei 25 Frames/Sekunde (CIF Europa) bzw. 352x240x30 (CIF USA) und unterstützt kein Interlacing. Trotzdem ist VHS-Aufzeichnung möglich. Die VideoCD (VCD) basiert auf MPEG-1. Sollte man selbst versuchen, eine VCD herzustellen, muss man beachten, dass das Video als MPEG-1 genau dieser Auflösung und Bildwiederholrate gespeichert werden muss und 1.15MBit/sec nicht überschreiten darf. Audio wird auf VCDs im MPEG-1 Layer II mit 44100kHz/Stereo und fixen 224kbit/sec gespeichert.[DZ01] MPEG-2 (1993) ist das bisher am häufigsten angewandte MPEG-Verfahren und erweitert den MPEG-1 Standard. Primäres Ziel war es, einen Standard für digitales Fernsehen mit Datenraten zwischen 2 und 80Mbit/s zu schaffen. In MPEG-1 war die Kodierung von “Interlaced” Video (in PAL und NTSC verwendetes Zeilensprungverfahren) nicht möglich, MPEG-2 wurde um diese Möglichkeit erweitert. Im Zeilensprungverfahren kann das Video in Halb- oder in Vollbildern kodiert sein. Für die Umrechnung von 24 Hz Film auf 30 Hz NTSC sorgt eine Steuervariable, die das Abspielgerät dazu veranlasst, bestimmte Bilder zu wiederholen. Die Umrechnung von 24Hz Film auf 25Hz PAL unterbleibt, der Film wird einfach mit 25 Bildern pro Sekunde abgespielt und dadurch etwas kürzer. MPEG-2 unterstützt fünf Audiokanäle und einen zusätzlichen Tieftonkanal. Weitere Unterschiede zu MPEG-1 sind unter anderem: • Best Match-Suche untersucht nicht nur Frames, sondern auch Halbbilder (Fields). • Frame Grösse kann bis zu 16383x16383 Pixel betragen. • Nichtlineare Makroblock-Quantisiertabelle MPEG-2 definiert verschiedene Auflösungen (von MPEG-1 Auflösung bis zu HDTV-Auflösung) und unterstützt je nach Auflösung räumliche und/oder zeitliche Skalierbarkeit. Erstere bedeutet, dass derselbe Datenstrom in verschiedenen Auflösungen angezeigt werden kann. Zweitere hilft, den Datenstrom auf Veränderungen der Bandbreite anzupassen. Eine genauere Auflistung, welcher Modus was unterstützt, ist in [Hen00, S.179] zu finden. Die Super-VideoCD (SVCD) und die DVD verwenden MPEG-2 als Codec und bietet daher bessere Qualität (höhere Auflösung) als VCD. Viele DVD-Player können sowohl VCDs als auch SVCDs abspielen. MPEG-4 (1999) ist ein universeller Standard für den Aufbau von Multimedia-Applikationen bis zu halbsynthetischen VR-Welten aus Texturen und 3D-Objekten. Er umfasst nicht nur die Kompression von Audio- und Videodaten, sondern auch Sprites, 3D-Welten, Klang- und Sprachsynthese, Bildsynthese aus vorgefertigten Modellen für Szene und Körper, digitales Fernsehen, mobile Multi-Media, sowie streaming Video mit virtueller Interaktion. Für die fortgeschrittenen Teile fehlt es aber noch an passenden Encodern. Die interne Skriptsprache ist Java-Script, die Kommunikation mit dem Player erfolgt über “MPEG-J”, eine Java-Schnittstelle. [Lov00] Der sehr komplexe Standard ist zur Integration von PC, TV und Telekommunikation in interaktive Programme gedacht. Entsprechende Tools fehlen aber noch. Es sollen die Wünsche von Autoren (flexibel für viele Medien, Rechtsschutz und -verwaltung, bessere Wiederverwertbarkeit), Service-Providern KAPITEL 7. DIGITAL VIDEO 113 (generischer QoS-Deskriptor für verschiedene Medien enthalten, vereinfacht die Transporte und der Optimierung) und Benutzern (hoher Grad an Interaktion) vereint werden. MPEG4 beschreibt: • die Integration beliebiger Medienobjekte. Dazu zählen 2D- und 3D-Objekte, Schallquellen, Texte, usw.1 , die in einer Baumstruktur organisiert sind und zu komplexeren Objekten zusammengefasst werden können. Die Kompression erfolgt immer für einzelne Objekte. • den Zusammenhang dieser Objekte zur Erzeugung einzelner Szenen. • Multiplex- und Sprachsynchronisationsmechanismen für ein Transport und die Berücksichtigung von QoS (Quality of Service). • Interaktion des Benutzers mit der generierten Szene am Zielort. In letzter Zeit ist MPEG-4 durch seine hohen Lizenzkosten in die Schlagzeilen geraten. Die Veröffentlichung von Quicktime 6 wurde lange verzögert, da Apple diese Kosten scheute und abwarten wollte, ob ein alternativer Codec das Rennen um den Quasi-Internet-Video Standard machen würde. MPEG-7 ist seit Dezember 2001 zu grossen Teilen fertig gestellt (6 von 7 Teilen) und hat den Titel “Multimedia Content Description Interface”. MPEG-7 konzentriert sich hauptsächlich darauf, den Inhalt mit Hilfe von XML zu beschreiben, also Informationen über die Informationen zur Verfügung zu stellen um z.B. Suchen in Multimedia-Dateien zu unterstützen. Es soll auch möglich sein, mit MPEG-7 Inhalte, die weder visuelle noch Audiodaten enthalten, zu verarbeiten. MPEG-7 basiert auf folgenden Konzepten [?, GravesMPEG72001] • Descriptor (D): Beschreibt Daten. • Description Scheme (DS): Definiert die Struktur der Daten (Descriptors). • Description Definition Language (DDL): Beschreibt die Sprache, in der Descriptors und Description Schemes spezifiziert sind. DDL basiert auf XML. Ein kurzes Beispiel aus [?, GravesMPEG72001]eigt die Beschreibung von Metadaten eines Videos: <Creation> <Title>Fawlty Towers</Title> <Abstract> <FreeTextAnnotation> Communication Problems </FreeTextAnnotation> </Abstract> <Creator>BBC</Creator> </Creation> Um eine Suche in Multimedialen Daten zu ermöglichen, muss natürlich auch der Inhalt beschrieben werden. Folgendes Beispiel zeigt, wie eine Szene mit Hilfe von MPEG7 beschrieben wird: <TextAnnotation> <FreeTextAnnotation> Basil attempts to fix the car without success. </FreeTextAnnotation> <StructuredAnnotation> <Who>Basil</Who> <WhatObject>Car</WhatObject> <WhatAction>Fix</WhatAction> <Where>Carpark</Where> </StructuredAnnotation> </TextAnnotation> 1 Lt. [Hen00] ist MPEG-4 deshalb eher ein Einstieg in die Welt der Virtual Reality als ein Bewegtbild-Standard. KAPITEL 7. DIGITAL VIDEO 114 Es gibt mehrere Ansätze, wie in solchen Daten gesucht werden kann. Der bekannteste ist XQuery2 , eine Query Language des W3C, die die Suche in XML Daten (und damit auch in in MPEG7) ermöglicht. MPEG-21 Die Arbeit an diesem Standard wurde erst Mitte des Jahres 2000 begonnen und so gibt es noch nicht viel darüber zu berichten! MPEG-21 versucht, ein multimediales Framework zu beschreiben und zukünftige Trends für eine Umgebung vorherzusehen, in der eine Vielzahl von Inhalten unterstützt werden (auch nicht MPEG-Standards). Erste Ergebnisse werden erst in der näheren oder auch ferneren Zukunft erwartet (Die Spanne liegt zwischen Ende 2001 und 2009!). Ein Schwerpunkt liegt sicher in der Vermarktung von multimedialen Inhalten und so definiert MPEG-21 Standards zur Verteilung, Abrechnung, Übertragung, Beschreibung etc. von digital items (Daten plus Metadaten plus Struktur, wie einzelne Daten miteinander in Verbindung stehen). Windows Media Technologies Der Windows Media Player ist für Windows, MacOS, Solaris und einige auf Windows CE basierende Pocket-PCs verfügbar, der Encoder nur für Windows. Bei WMA7 nannte sich der Codec für die Videokompression zwar MPEG4, es wurde aber gemutmasst, dass es sich eher um einen reinen MPEG2-Codec mit einigen Zusätzen zur Verhinderung von Mosaiken handelt. Inwieweit sich Microsoft hierbei an den offiziellen MPEG-4 Standard anlehnte, kann nur gemutmasst werden. In der zwischenzeit steckt hinter der aktuellen Windows Media Technology ein MPEG4 Codec. DivX (für Digital Video Express) war ursprünglich eine gehackte Version des Microsoft MPEG4 V3 Codecs aus Windows Media 7 (DivX 3). Er implementiert Video in DVD-Qualität, der auf dem MPEG-4 ISO Standard für digitale Videokompression basiert und um MP3-codiertes Audio ergänzt wurde. Der grosse Erfolg von DivX bei der Internetgemeinde resultierte in diverse Weiterentwicklungen. Folgende DivX-Versionen sind im Moment im Umlauf: • DivX 3.x ist (wahrscheinlich) eben dem oben erwähnten Microsoft Codec “entsprungen” und hat vor allem den Nachteil, dass die Grösse der DivX-Dateien vor dem Codieren nur sehr schwer berechenbar ist. Qualität und Geschwindigkeit ist nach wie vor eine der Stärken dieses Codecs. • DivX 4 ist eine legale (Weiter- bzw. Neu-) Entwicklung der Firma DivX Networks3 . Sie ist für den privaten Gebrauch frei und wird auch noch weiterentwickelt. DivX 4 unterstützt Variable Bitraten (VBR) und liefert im Grossen und Ganzen (meistens) eine bessere Qualität als DivX 3. • XviD ist eine legale Open Source Entwicklung, die aber zu DivX 3 inkompatibel ist und zur Zeit noch täglichen Änderungen unterliegt. Trotz alledem, soll Xvid gute Qualität liefern. • DivX 5 ist die neueste Version von DivX Networks und verwendet (optional) erstmals eine bidirektionale Vorhersage der Frames (siehe auch Abbildung 7.2). Dieser Kurzüberblick der diversen Codecs stammt von http://www.cselt.it/mpeg/, aus [DZ01] und von http://www.doom9.org/divx-encoding.htm MPEG-Kompression Alle MPEG-Standards verwenden dasselbe Kompressionsverfahren. Die Videodaten liegen in Form von Einzelbildern (Frames) vor. Es gibt drei Typen von Frames: • Intraframes (I-Frames) enthalten vollständige Bilddaten und sind nach JPEG komprimiert. Etwa jeder 15. Frame ist ein I-Frame. • Predicted Frames (P-Frames) werden durch Bewegungsvorhersage und Differenzbildung aus den vorhergehenden Frames erzeugt. Zwischen zwei I-Frames liegen typischerweise drei P-Frames. 2 http://www.w3.org/TR/xquery 3 http://www.divx.com KAPITEL 7. DIGITAL VIDEO 115 • Bidirectionally Predicted Frames (B-Frames) werden durch eine Bewegungsvorhersage aus dem vorhergehenden und dem nachfolgenden I- oder P-Frame erzeugt. Zwischen zwei P-Frames liegen typischerweise zwei bis drei B-Frames. I B B B P B B B P B B B P B B B I Zeit Abbildung 7.2: Anordnung und Beziehung der Frame-Typen bei der MPEG-Kompression Frame-Typ I P B Mittelwert Grösse 92 kByte 32 kByte 13 kByte 26 kByte Kompression 7:1 20:1 50:1 25:1 Tabelle 7.2: Kompressionsraten bei MPEG-Frametypen Die Anordnung und relative Häufigkeit der einzelnen Frames hängt vom verwendeten Codec ab. Bei MPEG werden die Frames nicht in der Reihenfolge übertragen, in der sie dargestellt werden. Für praktische Zwecke hat sich die Darstellungsreihenfolge von Tabelle 7.3 bewährt. So kann der B-Frame leicht aus dem schon vorher übertragenen P-Frame berechnet werden. Darstellungsreihenfolge Bild 1 2 3 4 5 6 Typ I B B P B B Übertragungsreihenfolge Bild 1 4 2 3 7 5 Typ I P B B P B GOB GOB 7 P 8 B 6 B 10 P 9 B 10 P 11 B 8 9 B B GOB 13 I 12 B 13 I 11 12 B B GOB Tabelle 7.3: Gruppierung der Frames in MPEG (GOB = Group of Blocks) [Hen00] I-Frame Codierung erfolgt genau wie bei H.261 (Abschnitt H.261 Kompression auf Seite 111) beschrieben, nur werden die erzeugten Daten sofort wieder decodiert, um sie für die Bewegungsvorhersage im Speicher halten zu können. P-Frame und B-Frame-Codierung Zwischen den I-Frames liegen zunächst P-Frames. Diese sind in 16x16 Pixel grosse Makroblöcke eingeteilt. Für jeden dieser Blöcke wird im vorhergehenden I- oder P-Frame in der näheren Umgebung (ca. 10 Pixel in jede Richtung) nach der grösstmöglichen Übereinstimmung gesucht. Übertragen wird schliesslich der Verschiebungsvektor aus dieser Bewegungsvorhersage sowie ein Korrekturblock (fast identisch mit H.261, Abschnitt H.261 Kompression). KAPITEL 7. DIGITAL VIDEO 116 Zwischen den P-Frames wiederum liegen B-Frames, bei denen die Bewegungsvorhersage sowohl aus dem vorhergehenden als auch aus dem nachfolgenden I- oder P-Frame gewonnen wird. Die Suche nach der besten Übereinstimmung kann auch ergeben, dass diese sich für eine Mittelung aus vorhergehendem und nachfolgendem P- oder I-Frame ergibt. [Hen00, S.183] Von entscheidender Bedeutung für die Qualität des Codec ist auch die Bestimmung der besten Übereinstimmung (best match). Verwendet werden die Berechnung der mittleren quadratischen Abweichung oder der mittlere Betrag der Abweichung. D-Frames sind eine vierte Frame-Kategorie, die ursprünglich für die Darstellung während eines schnellen Vor-/Rücklaufes gedacht waren. Diese Bilder sind sehr grob gerastert und lassen sich in etwa mit den DC-Daten (dem Gleichanteil) von JPEG vergleichen. 7.3.4 Video-Dateiformate Verschiedene Dateiformate können durchaus verschiedene Codecs unterstützen, sodass man keinen direkten Schluss aus dem Dateiformat auf den verwendeten Codec ziehen kann. Audio-Video-Interleaved Format (AVI) AVI ist von Microsoft mit Video for Windows eingeführter Standard, der auf der RIFF-Spezifikation basiert. AVI-Dateien sind in der Regel komprimiert und verwenden meist Cinepak oder Indeo. Aber auch DivX oder MPEG-4 kann als Codec verwendet werden. Die Auflösung bei AVI kann grundsätzlich in vollem PAL-Format erfolgen (768x576 Pixel), typische Werte liegen allerdings bei 320x240 bei 24 bis 30 Frames/sec. Quicktime Quicktime wurde ursprünglich von Apple entwickelt, wurde aber später auch auf Windows-Plattformen portiert. Quicktime-Dateien (*.mov) enthalten sowohl Video- als auch Audio-Daten. Quicktime bietet dem Benutzer und dem Programmierer eine Reihe von komplexen Funktionen und unterstützt auch das Einbinden von neuen Kompressionsalgorithmen. Die am meisten verwendeten Codecs in Quicktime-Movies sind der Indeo-Codec und der Cinepak-Codec. Seit Quicktime Version 6 wird auch MPEG-4 unterstützt. RealVideo Dieses Format von Real Networks4 zeichnet sich vor allem dadurch aus, dass es streaming-fähig ist. Diese Eigenschaft wird vor allem ausgenutzt, um Videos übers Internet zugänglich zu machen. Dabei ist natürlich die verfügbare Bandbreite das grösste Problem. Bei einem RealVideo-Stream teilen sich Video-Informationen und Audio-Informationen die verfügbare Bandbreite. Die Aufteilung kann durchaus je nach Anwendung variieren. So benötigt ein Video mit Musik mehr Anteile für Audio, als ein Video mit einem Sprecher als Audio-Spur. RealVideo verwendet RealAudio um den Soundtrack zu codieren. RealVideo komprimiert wie fast alle anderen Video-Codecs verlustbehaftet. Der im Moment verwendete Codec ist eine Eigenentwicklung namens ’RealVideo 8’ und der Nachfolger des ’Realvideo G2’-Codecs. Eine weitere Methode um die Datenmenge zu reduzieren ist, die Framerate herabzusetzen. RealVideo kann beim Codieren die Framerate dynamisch anpassen, je nachdem wie “action-reich” eine Szene ist. Zusätzlich sorgt die Scalable Video Technology (SVT) dafür, dass die Framerate automatisch an die momentan verfügbare Bandbreite und CPU-Leistung angepasst wird. 4 http://www.real.com KAPITEL 7. DIGITAL VIDEO 117 Eine weitere Technik, die RealVideo verwendet, um die Kompressionsrate zu erhöhen, ist es, die Anzahl der verwendeten Farben zu verringern. Pixel mit ähnlichen RGB-Werten werden einfach eliminiert. Dadurch verschwimmt das Bild und Details verschwinden. RealVideo unterstützt verschiedene Auflösungen von 176x132 bis zu 640x480 Pixel. Je höher die Auflösung, desto höher sind natürlich auch die Ansprüche an die Bandbreite! Die Information dieses Abschnittes stammt von http://service.real.com/help/library/guides/production8/ htmfiles/video.htm. Advanced Streaming Format (ASF) ASF von Microsoft kann sowohl Audio- (siehe Abschnitt 5.2.16) als auch Video-Daten enthalten. Das Dateiformat wird von Microsoft nicht restlos offengelegt, daher ist eine Portierung problematisch. Eine Integration in Videobearbeitungsprogramme sieht Microsoft auch nicht sehr gerne. So existierte eine VirtualDub5 -Version, die ASF-Dateien lesen konnte, nur kurze Zeit. WMA (Windows Media Audio) und WMV (Windows Media Video) sind identisch zu ASF (durch Umbenennung einfach erzeugbar). [Lov00, DZ01] 7.4 Speichermedium DVD Die DVD (Digital Versatile Disc) beruht auf ähnlichen Prinzipien wie die Compact Disc, kann jedoch wesentlich mehr Daten aufnehmen (bis zu 16GB). Daher eignet sie sich erstmalig als Medium für digitale Video-Daten (MPEG-2). Der DVD-Standard ist kein freier Standard und wird vom japanischen DVD-Forum6 kontrolliert. Jeder, der Soft- oder Hardware für DVDs entwickeln will, muss die aktuelle Version des Standards kaufen (zur Zeit ca. 5000$) und ein NDA (Non Disclosure Agreement) unterzeichnen, das die Weitergabe von Informationen verbietet. Darum sind auch nicht viele Informationen erhältlich, die DVDs betreffen. Das Verschlüsselungsverfahren auf DVDs verwendet einen einfachen DES-ähnlichen Algorithmus, der im August 1999 von einer Crackergruppe geknackt wurde. Nichtsdestotrotz gibt es noch keinen freien DVD-Decoder, da jeder Verbreitungsversuch mit scharfen juridischen Attacken abgewehrt wird. Weitere Dinge (das Wort ’Informationen’ wäre hier übertrieben) sind auf folgenden Web-Seiten zu finden: • DVD Copy Control Association7 • OpenDVD8 versucht, Informationen für Entwickler zur Verfügung zu stellen. • Das Linux-Video and DVD Projekt (LiViD)9 will eine gemeinsame Grundlage für Video und DVD unter Linux entwickeln. 7.4.1 Kopierschutzmechanismen der DVD Etwa ein Viertel der Daten auf einer DVD sind mit CSS (Content Scramble System) verschlüsselt. Verfügt der DVD-Player über einen analogen Ausgang, so muss selbiger überdies mit einem MacrovisionKopierschutzsignal ausgestattet sein. Das System sollte in erster Linie Gelegenheitstätern die Möglichkeit zur Duplizierung einer Video-DVD nehmen. Das DVD-Laufwerk und der Decoder tauschen zuerst die Schlüsseldaten über ein Protokoll zur gegenseitigen Authentifizierung aus. Zum einen soll dies das Laufwerk davon abhalten, einem nicht lizenzierten 5 http://www.virtualdub.org 6 http://www.dvdforum.com 7 http://www.dvdcca.org/ 8 http://opendvd.org 9 http://www.linuxvideo.org/ KAPITEL 7. DIGITAL VIDEO 118 Decoder die Schlüsseldaten mitzuteilen. Zum anderen soll sie verhindern, dass man eine gültige Authentifizierung aufzeichnet und zu einem späteren Zeitpunkt gegenüber einem echten Decoder erneut abspielt, was ja wieder das Kopieren der DVD erlauben würde. In diese Berechnung geht ein 40 Bit langer geheimer Wert ein, ein so genanntes Shared Secret. Diesen Wert erfahren offiziell nur Lizenznehmer des CSS-Verfahrens, also Hersteller von Decodern und Laufwerken. Im zweiten Schritt wird nun über den sicheren Kanal der Disc Key vom Player ausgelesen. Er ist auf der DVD selbst gespeichert, allerdings in einem nur der Firmware zugänglichen Bereich. Der Disc Key ist seinerseits chiffriert, und zwar so, dass er sich mit einem von einigen hundert verschiedenen Schlüsseln decodieren lässt. Jeder lizenzierte Player hat einen individuellen Schlüssel (Player Key), um den Disc Key zu decodieren. Sollte ein solcher je an die Öffentlichkeit gelangen, so können die Filmhersteller diesen Player bei der Produktion zukünftiger Titel gezielt sperren. Der für die eigentliche Dekodierung benötigte Title Key steckt schliesslich in den Sektor-Headern der verschlüsselten Datensektoren. Nur der Title Key ist erforderlich, um die Videodaten zu entschlüsseln, der ganze einleitende Aufwand soll nur seine Geheimhaltung sichern. Im Zuge der Bemühungen, für Linux einen DVD-Player zu schreiben, gelangte im Juli 1999 ein CodeFragment in die Öffentlichkeit, das sowohl das Authentifizierungsverfahren als auch das dazu notwendige Shared Secret enthielt. Damit konnte man DVD-Videos samt deren Schlüssel kopieren, aber nicht abspielen. Den zweiten Teil des Algorithmus sowie einen Player Key entwendeten Hacker aus dem SoftwareDecoder XingDVD von Xing Labs und implementierten ihn samt einer komfortablen Oberfläche in DeCSS, was zu einigem medialem Wirbel führte. Programme wie VobDec knacken die Verschlüsselung hingegen über einen kryptografischen Angriff (durch die damalige US-Exportbeschränkung sind alle Schlüssel auf 40 Bit Länge beschränkt). Dies ist jedoch auch kein Ausweg aus der rechtlichen Zwickmühle, da das Verfahren selbst geschützt ist. [DZ01] 7.4.2 Rechtliche Probleme Im Spannungsfeld zwischen kommerziellen Interessen der Unternehmen, Künstlern und Schauspielern, die auf ihr Copyright pochen und den Rechten sowie der Privatsphäre des Kunden ist das letzte Wort noch nicht gesprochen. Scharf schiessende Rechtsabteilungen von Verwertungsgesellschaften, die gerne auch die Rechtslage zu ihren Gunsten überziehen und auf Verunsicherung spekulieren, kämpfen zwar gegen die fortlaufende Entwicklung auf verlorenen Posten, im Einzelfall kann dies jedoch zu kostspieligen Streitigkeiten führen. So führt der DVD-Region-Code schon seit längerem zu einem regelrechten Katz- und Mausspiel zwischen Verschärfungen und Umgehungsprogrammen, die aktuellste Version ist RPC-2 mit “Regional Code Enhancement”. Sie überprüft bei der Initialisierung, ob der Player auch wirklich auf einen Regionalcode festgelegt ist und verweigert anderenfalls die Wiedergabe. Hinzu kommt, dass der öffentliche Verkauf von DVDs aus mit einem anderen Region-Code rechtlich nicht erlaubt ist, eine private Veräusserung hingegen schon. [Stu01] Der zweite juristisch umstrittene Punkt ist das Umgehen der DVD-Verschlüsselung CSS (Content Scrambling System). Prinzipiell ist das Erstellen einer Kopie für den privaten Gebrauch im Familien- und Freundeskreis trotz gegensätzlicher Angaben im Vorspann und auf der Hülle erlaubt, auch wenn man dafür einen Kopierschutz á la Makrovision oder CSS überwinden muss. Ist die Kopiersoftware aber durch einen Verstoss gegen das Gesetz entwickelt worden (durch rechtswidrige Dekompilierung oder Ausspionierung von Betriebsgeheimnissen, was also beispielsweise für DeCSS zutrifft), so ist deren Gebrauch rechtswidrig. Allerdings hängt es im Einzelfall davon ab, ob der Benutzer dies arglos oder ”im Wissen der Umstände“ tut. [Jae00] Patentierte oder geheime Verfahren stellen auch für die Entwickler freier Software nahezu unüberwindbare Hürden dar, was besonders bei der Entwicklung eines DVD-Players für Linux zu Streitigkeiten führte, die bis dato noch nicht entschieden sind. 7.5 Synchronized Multimedia Integration Language (SMIL) SMIL (Synchronized Multimedia Integration Language) (wie “smile” ausgesprochen) ist eine Entwicklung KAPITEL 7. DIGITAL VIDEO 119 des W3C (siehe auch SMIL-Spezifikation10 bzw. SMIL Überblick11 ) in Zusammenarbeit mit u.a. RealNetworks, Microsoft, Netscape und Philips und dient dem einfachen Verfassen von multimedialen Präsentationen im Web. Ein SMIL-Dokument beschreibt in einer einfachen Sprache, wie verschiedene Medien zu koordinieren sind. SMIL folgt der Syntax von XML (siehe Abschnitt 4.4) bzw. HTML. Diese Beschreibung des multimedialen Inhaltes wird von einem SMIL-Player interpretiert. Dieser regelt nur, in welcher Weise die Media-Clips abzuspielen sind, die Spezifikation enthält jedoch keine Vorschriften für die Formate von Multimedia-Dateien. SMIL ist ein recht junger Standard. Dementsprechend gibt es noch kaum Software dafür (für eine Liste der Player, die SMIL unterstützen siehe http://www.w3.org/AudioVideo/). Auch die aktuellen Browser-Versionen unterstützen SMIL noch nicht. Günstig für die weitere Entwicklung des Standards ist das Engagement der Firma RealNetworks. Die aktuellen Versionen ihres RealPlayers wird neben den eigenen Real-Formaten auch SMIL-Anweisungen abspielen. [Pie98] Ein schönes Beispiel einer Smil-Präsentation kann z.B. unter http://www.dfki.de/imedia/miau/demos/ smil_example.html gefunden werden. Hier kann man auch die Einzelteile (Text, Video, Sound) extra downloaden und so die Zusammenhänge der verschiedenen Medien näher betrachten. Abbildung 7.3: RealPlayer mit SMIL Unterstützung Als Beispiel, wie verschiedene Multimedia-Daten verknüpft werden können, kann Abbildung 7.3 dienen. Die dazugehörige SMIL-Datei sieht folgendermassen aus (Beispiel aus dem SMIL Tutorial von Webtech10 http://www.w3.org/TR/REC-smil/ 11 http://www.w3.org/AudioVideo/ KAPITEL 7. DIGITAL VIDEO 120 niques12 ): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 <smil> <head> <layout> <root-layout height="425" width="450" background-color="black"/> <region id="title" left="50" top="150" width="350" height="200"/> <region id="full" left="0" top="0" height="425" width="450" background-color="#602030"/> <region id="video" left="200" top="200" height="180" width="240" z-index="1"/> </layout> </head> <body> <seq> <!-- This img tag displays the title screen --> <text src="title.rt" type="text/html" region="title" dur="20s"/> <!-- This section displays the animated map with an audio soundtrack --> <par> <audio src="map_narration.ra"/> <img src="map.rp" region="full" fill="freeze"/> </par> <!-- This section contains the video-annotated slideshow --> <par> <img src="slideshow.rp" region="full" fill="freeze"/> <seq> <video src="slide_narration_video1.rm" region="video"/> <audio src="slide_narration_audio1.ra"/> <video src="slide_narration_video2.rm" region="video"/> </seq> </par> </seq> </body> </smil> Das <smil> Dokument teilt sich in einen <head> und einen <body> Teil (vgl. HTML). Im <head> steht die Beschreibung des Aussehens/Layouts und der <body> Bereich enthält die Timing-Information und Information über den Inhalt. Innerhalb von <seq> und <par> werden die benannten Medien automatisch (sequentiell oder parallel) abgespielt. SMIL unterstützt viele verschiedene Medientypen wie Text, Textstream, Bilder, Video, Audio und Animationen. Ein wichtiges Feature ist das <switch> Tag. Damit können verschiedene Optionen eingestellt werden, von denen der Player dann zur Laufzeit eine auswählt. So kann aus verschiedenen Medien je nach Sprache, Bildschirmgrösse, Farbtiefe, Bandbreite, etc. ein passendes gewählt werden. Folgender Ausschnitt bietet z.B. verschiedene Auflösungen, je nach verfügbarer Bandbreite: 12 http://www.webtechniques.com/archives/1998/09/bouthillier/ KAPITEL 7. DIGITAL VIDEO 121 1 <par> 2 <switch> 3 <img src="slideshow_hires.rp" region="full" fill="freeze" system-bit-rate="20000"/> 4 <img src="slideshow_lowres.rp" region="full" fill="freeze" system-bit-rate="45000"/> 5 </switch> 6 <audio src="video_narration.ra"/> 7 </par> Ein weiteres SMIL-Tutorial, das mit SMIL erstellt wurde (kein rekursives Problem :-), ist bei “Learn SMIL with a SMIL13 ” zu finden. Der Java-SMIL-Player SOJA14 sorgt dafür, dass die verwendeten SMIL Beispiele direkt betrachtet werden können. 13 http://www.empirenet.com/~joseram/index.html 14 http://www.helio.org/products/smil/ Kapitel 8 Serverseitige Technologien Dieses Kapitel wird einige Techniken vorstellen, die verwendet werden können, um Informationsserver aufzubauen. Die ersten Abschnitte dieses Kapitels widmen sich serverseitigen Erweiterungen von WebServern, die hauptsächlich dazu verwendet werden, um Web-Seiten dynamisch zu generieren. 8.1 Dynamische Generierung von Web-Seiten Es gibt mehrere Gründe, warum Web-Seiten dynamisch und nicht statisch sein sollen: • Die Web-Seiten basieren auf Anfragen von Benutzern, wie z.B. Ergebnisseiten von Suchmaschinen oder der Einkaufswagen bei einem Online-Shop. • Die Daten ändern sich sehr oft, wie z.B. ein Wetterbericht, Schlagzeilen bei Zeitungen. • Die Web-Seiten enthalten Daten, die aus einer Datenbank stammen (z.B. Preise und Produktbezeichnungen von Artikeln eines Geschäfts). Es gibt zahlreiche Möglichkeiten, Webseiten auf dem Server dynamisch zu erzeugen. In den folgenden Abschnitten werden einige vorgestellt. Ein gemeinsames Problem aller serverseitigen Erweiterungen, die dynamisch Web-Seiten generieren, ist meist, dass Inhalt und Layout mehr oder weniger untrennbar vereint sind. Da jedoch meist verschiedene Personen oder Gruppen entweder das Layout erstellen oder die Funktionalität programmieren, muss schon in der Designphase einer dynamisch erzeugten Web-Site geklärt werden, wo der Schwerpunkt liegen soll. Sollen nur wenige Teile einer Seite dynamisch generiert werden, bieten sich eher Technologien wie ASP, JSP oder PHP an. Besteht jedoch die Web-Site hauptsächlich aus einer (Java-)Applikation, die nebenbei Web-Seiten zur Verfügung stellt, sind eher Servlets vorzuziehen. Prinzipiell sind aber die meisten Problem mit jeder der vorgestellten (und auch mit vielen anderen) Möglichkeiten lösbar. Oft entscheiden äussere Einflüsse die Entscheidung, welche Technologie verwendet wird. Oft bestimmen zum Beispiel nicht technische Argumente die Wahl, sondern die Firmenpolitik verlangt, dass ein Produkt der Firma XY (bzw. MS :-) eingesetzt werden muss. 8.1.1 Common Gateway Interface (CGI) Die Mutter aller dynamischen Webseitengenerierung heisst eindeutig CGI (Common Gateway Interface). CGI entstand zuerst aus dem Wunsch (und der Notwendigkeit), HTML-Formulare auf dem Server auszuwerten (siehe auch Abschnitt 8.1.7), die darin enthaltenen Daten irgendwo zu speichern (evtl. in einer Datenbank) und dem Benutzer eine Antwortseite zurückzuliefern. Eine gute Seite für den Recherchestart über CGI im Netz ist http://www.w3.org/CGI/. 122 KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 123 Ein CGI-Programm läuft direkt auf dem Web-Server und erzeugt in der Regel HTML-Code, der an den Browser des Benutzers gesendet wird. Dadurch lassen sich relativ einfach dynamische Web-Seiten generieren. Die Spezifikation von CGI1 sagt nur, dass CGI-Programme vom Standard-Input lesen und auf StandardOutput schreiben müssen. Dabei ist es egal, in welcher Programmiersprache das CGI-Programm geschrieben wurde. Ein gutes Einführungstutorial ist unter http://www.jmarshall.com/easy/cgi/ zu finden. Somit kann sogar ein Unix-Shell Skript verwendet werden. Als Beispiel dient ein Hello World CGI-Skript: #!/bin/sh # send http-header and a newline afterwards: echo "Content-Type: text/html" echo "" # send html content: echo "<HTML>" echo " <HEAD>" echo " <TITLE>Hello World CGI</TITLE>" echo " </HEAD>" echo " <BODY>" echo " Hello World (" date "+%T, %d.%m.%Y" echo ")" echo " </BODY>" echo "</HTML>" Dieses Skript, nachdem es in ein geeignetes Verzeichnis des Web-Servers kopiert wurde (z.B: cgi-bin) oder durch seine Extension dem Webserver verraten hat, dass es ein CGI-Programm ist (.cgi), gibt nun auf Anfrage (natürlich je nach Datum und Uhrzeit) “Hello World (12:05:56, 18.11.2002)” aus. Hier sieht man schön, dass es sehr einfach ist, die Ausgabe von beliebigen Programmen in einer dynamischen Web-Seite zu verwenden. Perl Die Programmiersprache ☞PERL wurde von Larry Wall entwickelt und eignet sich unter anderem besonders gut für Stringmanipulationen aller Arten (Stichwort regular expressions). Daher ist es auch kein Wunder, dass viele CGI-Programme in Perl geschrieben wurden/werden. In Perl können Parameter, Datenbankabfrageergebnisse und andere Programmausgaben einfach (wenn man die z.T. kryptische Syntax von Perl einmal verstanden hat :-) analysiert, weiterverarbeitet und in eine HTML-Seite für die Ausgabe weiterverarbeitet werden. Mittlerweile existieren mehrere Perl-Bibliotheken, die speziell auf die Probleme mit CGI eingehen: z.B. die cgi-lib2 oder die bei der Standard-Perl Distribution schon enthaltene Perl5 CGI Library CGI.pm3 . Ein einfaches CGI-Programm in plain-Perl (ohne Zusatzbibliotheken), das neben “Hello World” auszugeben auch noch die Umgebungsvariable liest, in der die Parameter bei der HTTP-GET Methode übergeben werden, ist folgendes: #!/usr/bin/perl # send http-header and a newline afterwards: print "Content-Type: text/html\n\n"; # send html content: print "<HTML>\n"; print " <HEAD>\n"; print " <TITLE>Hello World CGI</TITLE>\n"; print " </HEAD>\n"; print " <BODY>\n"; print " Hello World.\n"; print " Your QUERY_STRING was ".$ENV{’QUERY_STRING’}."\n"; print " </BODY>\n"; print "</HTML>\n"; Gute Tutorials über Perl/CGI findet man unter http://www.comp.leeds.ac.uk/nik/Cgi/start.html, bei den oben erwähnten Perl-CGI-Bibliotheken oder das CGI-Perl-Kapitel von SelfHtml4 . 1 http://hoohoo.ncsa.uiuc.edu/cgi/interface.html 2 http://cgi-lib.berkeley.edu/ 3 http://stein.cshl.org/WWW/software/CGI/ 4 http://courses.iicm.edu/mmis/selfhtml80/cgiperl/index.htm KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 8.1.2 124 Parameterübergabe Jedem serverseitigem Programm (CGI, Servlet, ...) können auch Parameter übergeben werden. Prinzipiell können Anfragen an einen Webserver mittels zweier Request-Methoden gestellt werden: • HTTP-GET-Methode: Erfolgt der CGI-Aufruf von einem HTML-Formular, das als Methode GET verwendet oder werden die Parameter in der Url codiert, werden diese Parameter (Parametername und Wert) mittels der Umgebungsvariablen QUERY_STRING an das aufgerufene CGI-Programm übergeben. Mehrere Paare [Parametername,Wert] oder mehrere Werte werden durch ’&’ getrennt, Leerzeichen durch ’+’ (bzw. ’%20’) ersetzt. Sonderzeichen werden durch ein vorgestelltes Prozentzeichen (’%’) und einen ASCII-Hexadezimal-Wert dargestellt. Ein Url-Aufruf könnte beispielsweise so aussehen: http://www.google.com/search?sourceid=googlet&q=Abfrage Damit wird eine Suchabfrage bei der Suchmaschine Google5 ausgelöst. In diesem Fall werden zwei Paare [Parametername/Wert] übergeben: sourceid=googlet und q=Abfrage. Der Nachteil dieser Methode ist, dass die Gesamtlänge der Parameter bzw. der Formulardaten auf 1024 Bytes beschränkt ist. • HTTP-POST-Methode: Bei einem Formular kann als Übermittlungsmethode auch POST verwendet werden. In diesem Fall werden alle Formularfelder mit Namen und Wertenim HTTP Header übertragen. Der zugehörige HTML-Code sieht z.B. so aus: <FORM METHOD=”POST”ACTION=”http://www.meinserver.o Dem CGI-Programm werden diese Parameter auf der Standardeingabe (stdin) bereitgestellt. Über die Umgebungsvariable CONTENT_LENGTH kann festgestellt werden, wieviele Zeichen gelesen werden können. Zusätzlich werden noch eine ganze Reihe von Umgebungsvariablen gesetzt, die vom CGIProgramm ausgewertet werden können (z.B. DOCUMENT_ROOT, REMOTE_HOST, REFER_URL, REQUEST_ METHOD, ...). Eine genaue Liste von auswertbaren Variablen kann im CGI-Standard eingesehen werden. Eine Testseite, an der man den Unterschied zwischen HTTP-GET und POST sieht, kann unter http://www-scf.usc.edu/~csci351/Special/CGIinC/examples.html ausprobiert werden. Andere serverseitige Erweiterungen (PHP, ASP, JSP, Servlets, . . . ) verwenden diese Übergabemethoden (HTTP-Standard) natürlich ebenso, erleichtern aber die Auswertung der Parameter durch entsprechende Funktionen bzw. Methoden. Servlets können z.B. einfach durch einen Aufruf von request. getParameter(paramName) die Parameternamen samt ihrer Werte auslesen (siehe auch Abschnitt JavaServlets auf Seite 125). 8.1.3 Sicherheitsüberlegungen Vom Benutzer übergebene Parameter können ein grosses Sicherheitsrisiko auf einem Web-Server darstellen und müssen daher gut überprüft werden. Werden nämlich diese Eingaben nicht auf ihren Inhalt überprüft und an weitere Programme als Argumente übergeben, kann es passieren, dass höchst unliebsame Dinge passieren. Ein einfaches Beispiel ist eine Benutzereingabe, die danach wieder auf einer HTML-Seite verwendet werden soll. Gibt nun ein Benutzer ein HTML-Tag anstatt von reinem Text ein und diese Eingabe wird ungeprüft wieder in eine HTML-Seite eingebaut, kann das Layout dieser Seite total verändert werden. Beispiel (harmlos): Anstatt des Namens WolfgangAmadeusMozart wird <B>WolfgangAmadeusMozart</B> eingegeben. Somit erscheint in einem HTML-Dokument der Name ab sofort in Fett, auch wenn das überhaupt nicht beabsichtigt wurde. Beispiel (weniger harmlos): Es wird als Name WolfgangAmadeusMozart</BODY></HTML> eingegeben. Ein Browser, der etwas auf den HTML-Standard hält (gibts die?), sieht nach dem Namen das Ende des HTML-Dokuments und zeigt den Rest garnicht mehr an. Schlimmere Auswirkungen hat eine unkontrollierte Eingabe natürlich, wenn diese in eine Kommandozeile eingebaut wird, und ein externes Programm aufgerufen wird. So kann schon mit einem einfachen “>/ 5 http://www.google.com KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 125 etc/passwd” (Umleitung der Standard-Ausgabe in die Datei /etc/passwd) diese Datei überschrieben werden (natürlich nur, falls das CGI-Programm die entsprechenden Rechte hat). Auf alle Fälle können evtl. Dateien verändert / gelöscht / erzeugt werden oder andere Programme unter der Benutzerkennung gestartet werden, mit der der Web-Server bzw. das CGI-Programm läuft. Diese Sicherheitsüberlegungen betreffen alle serverseitigen Erweiterungen, die Benutzereingaben verarbeiten, und sind nicht CGI-spezifisch! 8.1.4 Server Side Includes (SSI) Server Side Includes6 sind heute eher ungebräuchlich (werden aber immer noch von modernen WebServern (z.B. Apache) unterstützt) und werden hier nur der Vollständigkeit halber erwähnt. Sie werden vom Web-Server nach SSI-Kommandos geparsed und vor der Auslieferung an den Web-Client ausgeführt. Ein SSI-Kommando wird immer in einen HTML-Kommentar verpackt. Dies erlaubt die Verwendung von HTML-Seiten mit SSI auch von Web-Servern, die SSI nicht beherrschen: <!--#command tag1="value1" tag2="value2" --> Es steht nur eine relativ kleine Anzahl von Kommandos zur Verfügung: • config: stellt verschiedene Parameter ein, die das Parsen der HTML-Seite beeinflussen können. • include: fügt ein anderes Dokument an dieser Stelle ein. • echo: schreibt die Werte von Variablen in die Ausgabe. • fsize: schreibt die Grösse der angegebenen Datei in die Ausgabe. • flastmod: schreibt das letzte Änderungsdatum. • exec: führt ein externes Programm aus (skript oder CGI-Programm). Die Kommunikation mit einem externen CGI-Programm erfolgt wie bei CGI über Umgebungsvariablen, wobei bei SSI noch zusätzliche Variablen definiert wurden (siehe Webseite). Ein etwas ausführlicheres Tutorial ist auf den Apache Seiten des Include Moduls7 zu finden. Ein ganz guter Artikel über SSI ist in c’t 20/2001 ([Len01]) erschienen. 8.1.5 Servlets und Java Server Pages (JSP) Eine sehr gute Einführung über JSP (Java Server Pages) und Java-Servlets von Marty Hall8 (John Hopkins University) findet sich auf http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/ bzw. in [Hal00]. Anmerkung: “Java Applets” sind Java Programme, die im Web-Browser beim client laufen und haben nichts (ausser der Programmiersprache) mit Servlets oder Java Server Pages zu tun! Java-Servlets Servlets sind Java-Programme, die auf einem Web-Server laufen und dynamisch Web-Seiten generieren können. Servlets sind somit die Antwort von Sun auf CGI-Programme. Es gibt aber einige Unterschiede von Servlets gegenüber CGI-Programme: 6 http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html 7 http://httpd.apache.org/docs/mod/mod_include.html 8 http://www.apl.jhu.edu/~hall/ KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 126 • Effizienz: ’Normale’ CGI-Programme werden bei jedem Aufruf vom Web-Server gestartet. Dadurch kann ein ziemlich grosser Overhead durch die oftmalige Initialisierung des Programmes entstehen. Greift das CGI-Programm beispielsweise auf eine Datenbank zu, muss es bei jedem Start eine Verbindung zu der Datenbank aufbauen. Oder es fordern viele Benutzer gleichzeitig eine Seite an und so wird das CGI-Programm mehrmals gestartet. Bei Servlets behandelt eine Java-VM (Virtual Machine) alle Anfragen und startet bei Bedarf einen neuen lightweight Java-Thread und keinen heavyweight Betriebssystemprozess. Mittlerweile existieren schon verschiedene Techniken, die diese Nachteile von CGI etwas verbessern (z.B. Fast-CGI 9 ). • Programmiersprache: Während Java-Servlets logischerweise nur in Java geschrieben werden können, kann man ein CGI-Programm in jeder beliebigen Programmiersprache (auch in Java) schreiben. • Mächtigkeit: Servlets können einige Dinge, die mit CGI-Programmen nur schwer oder garnicht gelöst werden können, wie z.B. das Teilen von Daten oder Objekten zwischen mehreren Servlets. Da die Servlet-Engine durchgehend läuft und nicht wie ein CGI-Programm immer von neuem gestartet wird, ist es auch einfacher, Informationen von einer Anfrage zur nächsten weiterzugeben (session-tracking oder caching von früheren Abfrageergebnissen). • Portabilität: Da Java plattformunabhängig ist, sind natürlich auch Servlets unabhängig vom verwendeten Betriebssystem. CGI-Programme sind je nach verwendeter Programmiersprache nur mehr oder weniger portabel (verschiedene C-Compiler, ...). Ein Servlet ist eine ganz normale Java-Klasse, die von der abstrakten Klasse javax.servlet.http. HttpServlet ableiten und somit u.a. eine Methode public void doGet(request, response) enthalten muss. Diese Methode wird vom Servlet-Server aufgerufen, wenn die entsprechende Seite vom Benutzer angefordert wird (mittels HTTP-GET-request). Folgender Code kann als Grundlage für eigene Versuche verwendet werden: import java.io.∗; import javax.servlet.∗; import javax.servlet.http.∗; /∗∗ ∗ Servlet template ∗/ public class SomeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Use ”request” to read incoming HTTP headers (e.g. cookies) // andHTMLform data (e.g. data the user entered and submitted) // Use ”response” to specify the HTTP response line and headers // (e.g. specifying the content type, setting cookies). PrintWriter out = response.getWriter(); // Use ”out” to send content to browser } } Für eine komplette (?) Installationsanleitung siehe Abschnitt Installation eigener Servlets auf Seite 128. Da es zu weit führen würde, hier alle Einzelheiten und Kniffe der Servlet-Programmierung aufzuzählen, sei hier wieder auf das Servlet-Tutorial10 verwiesen, das u.a. erklärt, 9 http://www.fastcgi.com 10 http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/ KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 127 • wie auf Eingaben von HTML-Forms reagiert werden kann (request.getParameter(paramName)) • wie HTTP-Header ausgelesen werden können (request.getHeader(headerName)) • wie Cookies verwendet werden • wie Sessions ’geTracked’ werden Eine vollständige Beschreibung des Servlet-APIs ist unter http://java.sun.com/products/servlet/ 2.2/javadoc/index.html zu finden. Java Server Pages (JSP) Im Gegenzug zu Servlets, die eigene Java-Klassen sind, ist Java Server Pages eine Technologie, bei der man statisches HTML mit dynamischen Inhalten mischen kann. Dabei wird Java-Code mit dem ansonsten statischen HTML-Code vermischt. Bevor eine solche Seite vom Server an den Browser des Benutzers geschickt wird, wird der darin enthaltene Code ausgeführt und der dabei entstandene HTMLCode eingefügt. Ein kurzes Beispiel verdeutlicht dies: <HTML> <HEAD> <TITLE>JSP-Hello World</TITLE> </HEAD> <BODY> Static Hello World<BR> <% out.print("Dynamic Hello World :-)<br>"); %> </BODY> </HTML> Anmerkung: Die Zeilen • <% out.print("Hello World <BR>"); %> • <%= "Hello World <BR>" %> • <% String hello = "Hello World <BR>"; out.print(hello); %> • <% String hello2 = "Hello World <BR>"; %> <%= hello2 %> • < jsp:scriptlet > out.print("Hello World <BR>"); </ jsp:scriptlet > • <jsp:expression> "Hello World <BR>" </jsp:expression> sind äquivalent. <%= <java-code> %> wird intern zu <% out.print(<java-code>); %> umgesetzt. Die zugehörigen XML-Tags heissen <jsp:expression> und < jsp:scriptlet >. Interne Behandlung von JSP Sämtliche Java Server Pages werden vom JSP-Server beim ersten Aufruf in Java-Code umgewandelt und kompiliert. Der Source-Code unseres Hello-World-JSPs liegt z.B. im Verzeichnis <tomcat-dir>/work/localhost_8080%2Fmmis_jsp_example und ist bis auf den etwas seltsamen Klassennamen (_0002fhello_0005fworld_0002ejsphello_0005fworld_jsp_0) durchaus lesbarer Java-Code: [...] public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { [...] response.setContentType("text/html;charset=8859_1"); [...] out.write("<HTML>\r\n <HEAD>\r\n <TITLE>JSP-Hello World</TITLE>\r\n [...] } [...] </HEAD>\r\n <BODY>\r\n"); Man sieht hier sehr schön, dass JSP im Prinzip genau gleich wie Servlets arbeiten und die gleichen Klassen verwenden. KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 128 Installation Servlet/JSP Server Um Servlets oder JSP versenden zu können, muss ein Server installiert werden/sein, der dies unterstützt. Die Referenzimplementation dafür ist Tomcat11 aus dem Apache12 -Projekt. Tomcat kann als eigenständiger Server für JSP oder Servlets verwendet werden, oder in den Apache Web-Server integriert werden. Eine Übersicht über vorhandene Servlet-Server ist bei eingangs erwähntem Tutorial von Marty Hall im Kapitel “Setup”13 zu finden. Installation Tomcat Die Installation von Tomcat geht ganz einfach von der Hand. Die aktuelle Tomcat-Version downloaden und in einem Verzeichnis auspacken. Da die Windows Version nicht getestet wurde, wird hier nur eine Kurzanleitung für Linux angegeben, die sich prinzipiell aber auf Windows (*.bat-Dateien anstatt *.sh) umlegen lässt (ein kurzer User-Guide findet sich im ausgepackten TomcatVerzeichnis unter webapps/tomcat-docs (bzw. unter doc/uguide/tomcat_ug.html bei Version 3.2.1) bzw. unter http://jakarta.apache.org/tomcat/jakarta-tomcat/src/doc/): # installation in verzeichnis ’/foo’ cd /foo tar xzf <path-to-tomcat-archive>/jakarta-tomcat-4.1.12.tar.gz cd jakarta-tomcat-4.1.12 # make scripts executable (bug in 4.1.12) chmod +x bin/*.sh # start von tomcat (windows: use bin/startup.bat) bin/startup.sh # stoppen von tomcat: bin/shutdown.sh Nach dem Start von Tomcat kann unter http://localhost:8080 (evtl. nur unter http://<hostname>: 8080) auf den Tomcatserver zugegriffen werden. Von hier aus können auch JSP und Servlet Beispiele, die in der Distribution enthalten sind, ausprobiert und die Dokumentation gelesen werden. Installation eigener Java Server Pages Um eigene JSP verwenden zu können (in diesem Beispiel im Verzeichnis <tomcat-dir>/webapps/mmis_jsp, sind folgende Schritte notwendig: • Obiges hello_world.jsp-Beispiel im Verzeichnis <tomcat-dir>/webapps/ROOT/mmis_jsp kopieren/erstellen. Das Verzeichnis <tomcat-dir>/webapps/ROOT/ ist das root-Verzeichnis von Tomcat. (Dieses Verzeichnis erscheint unter der URL http://localhost:8080 im Browser.) • In einem beliebigen Browser die Seite http://localhost:8080/mmis_jsp bzw. http://localhost: 8080/mmis_jsp/hello_world.jsp aufrufen. Installation eigener Servlets Um eigene Servlets aufrufen zu können, müssen folgende Schritte durchgeführt werden: • Das Root Verzeichnis für Servlets ist <tomcat-dir>/webapps/ROOT/WEB-INF/classes. • Erstellen/kopieren eines Servlets in eben diesem/dieses Verzeichnis. Als einfachstes Hello-WorldServlet kann z.B. folgendes verwendet werden (<tomcat-dir>/webapps/ROOT/WEB-INF/classes/ HelloWorld.java): import import import import import import java.io.IOException; java.io.PrintWriter; javax.servlet.ServletException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; 11 http://jakarta.apache.org/tomcat/index.html 12 http://www.apache.org 13 http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Setup.html KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 129 public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String title = "Hello World"; response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println(" <head>"); out.println(" <title>" + title + "</title>"); out.println(" </head>"); out.println(" <body>"); out.println(title); out.println(" </body>"); out.println("</html>"); } } • Kompilieren des Servlets im obigen Verzeichnis. Dazu muss der CLASSPATH auf das aktuelle Verzeichnis und auf das jar-File, das die Servleterweiterungen enthält zeigen: CLASSPATH=.:<tomcat-dir> /common/lib/servlet.jar Unter Windows müssen die Teile des Classpaths natürlich mit ’;’ abgetrennt werden! • evtl. (bei Tomcat 4.1.12 ganz sicher) muss im Konfigurationsfile web.xml im conf-Verzeichnis der Eintrag <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> einkommentiert werden. (Entfernen der <!--...--> Zeichen). Eine Alternative dazu ist das Erzeugen eines neuen Contexts in conf/server.xml, der dann auf ein neues Verzeichnis verweist. • Dieses Servlet ist (evtl. nach Neustart von Tomcat) unter http://localhost:8080/mmis_servlet/ servlet/HelloWorld zu erreichen. Man beachte den servlet-Teil zwischen mmis_servlet und dem Klassennamen und dass kein .class angehängt ist. 8.1.6 Active Server Pages (ASP) Als Gegenstück zu Suns Java-basierter serverseitiger Erweiterung stehen Microsofts ASP (Active Server Pages). ASP ist eine Vermischung von HTML und Visual Basic Script. Lt. einem Artikel des MSDNMagazins14 wird dieses Skript bei jedem Aufruf interpretiert und auf dem Server ausgeführt. Das Ergebnis wird danach zum Benutzer gesendet. Die Verwendung von ASP unterscheidet sich kaum von JSP, was allerdings auch wenig erstaunlich ist, da ASP höchstwahrscheinlich das Vorbild für JSP war und Sun durch leichte Erlernbarkeit möglichst viele Entwickler auf seine Seite ziehen wollte. Folgendes Beispiel zeigt “Hello World” als ASP: <html> <script language="VBScript" runt="Server"> Sub HelloWorld() Response.Write "Hello World from ASP." End Sub 14 http://msdn.microsoft.com/msdnmag/issues/1000/atlserv/atlserv.asp KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 130 </script> <body> <% HelloWorld %> </body> </html> Im Grunde genommen ist es eine Geschmackssache bzw. Plattformentscheidung, welche der beiden Server Pages man einsetzen will. 8.1.7 in the beginning Der folgende Text stammt von http://www.webhostdir.com/guides/asp/in_the_beginning.asp (daraus folgt auch die Lobeshymne auf Web Host Directory am siebten Tag): NOTIZ: Er dient nur der allgemeinen Erheiterung und wird natürlich nicht geprüft :-)) in the beginning was the internet and the internet was bland (unless you liked text) and the internet was boring (unless you got flamed on the newsgroups). Thus ended the first (boring) day. Tim Berners-Lee (God) saw the internet and thought “let there be pages, and let them be linked and let there be colour and graphics”; and there were pages and there was colour and there were graphics, and God saw the internet and said “now it is a web, and the web is good”. And the people saw the web and said, “wow, we can use this even if we aren’t particle physicists” and the people started to use the web and write their own pages (and not all of them were students). Thus ended the second day. Then the people got restless, “we don’t just want static pages”, they cried; “we want dynamic pages, we want information that changes depending on what we put into our browsers, we want phone books”, they wailed. God heard the cries and responded with forms, and radio buttons and text boxes and cgi so that the people would be happy, and the people smiled. The archangel Larry Wall brought forth a perl and said “lo, tho it was not created for this purpose, see how perl works with cgi” and the people rejoiced. Thus ended the third day. Then Bill Gates (The Devil/St. Paul - delete as appropriate) saw the web, and cgi, and perl and all the people whose souls weren’t his and said unto himself “damn, I’ll have to rewrite my book and convince people that I was for the web all along”. And Bill set his pixies to labour long and hard and produced a browser (Internet Explorer v2), and a web server (Internet Information Server v1) to demonstrate his conversion, and they weren’t much cop and the people did laugh, and some of them threw stones from their Mosaic. Thus ended the fourth day. And Bill did wail and gnash his teeth and said to his pixies “work harder and make my products work and then give them away”. The pixies worked and toiled and lo, produced Internet Explorer 3 (which was still not much cop) and Internet Information Server v2 (which was better). And then Bill looked at the web and said, “lo, on the third day the people were rejoicing because they had cgi and perl and things that I did not provide them with; would they not further rejoice if I was to provide for them the same, only better?” and he set his pixies to work. KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 131 Thus ended the fifth day. And on the sixth day, active server pages were born. And some of the people scorned, because they always scorned Bill; and some of the people scorned because they said Bill had just reinvented what was already there and called it his own; and some people scorned because it wasn’t cross platform (like perl) and only ran on Win95/NT machines. But some of the people said “hey, we have NT, we have web servers, we have Access and MS SQL Server and we don’t want to learn perl, which is for the bearded unwashed (or UNIX users as they are known). We like Visual Basic and want to do exciting and dynamic things with our web pages”, and they praised Bill and rejoiced. Thus ended the sixth day And on the seventh day, the Web Host Directory was born. Informationen zu ASP • Eine ganz gute Einführung in ASP ist das Tutorial von http://www.webhostdir.com/guides/asp/ oder http://www.asptutorial.info/. • Ein Tutorial, das das Zusammenspiel von ASP mit diversen Datenbanken zeigt, ist unter http: //asp.papiez.com/tutorials/asp101/ zu finden. Um dieses Tutorial lesen zu können, muss man sich (kostenlos) registrieren. 8.1.8 PHP PHP (PHP Hypertext Processor) ist eine Skriptsprache, die ebenfalls direkt in HTML-Seiten eingebettet werden kann. Bevor diese HTML-Seite vom Server zum Benutzer gesendet wird, werden diese Befehle vom PHP-Interpreter ausgeführt und so eine Web-Seite erzeugt, die vom Browser verstanden wird. Die Verbindung vom Web-Server zum PHP-Interpreter kann auf verschiedene Weise gelöst werden: • Der PHP-Interpreter wird als CGI-Modul verwendet: Diese Methode ist bei jedem Web-Server einsetzbar, der CGI-Programme ausführen kann (praktisch alle “grossen” Web-Server können dies), und sehr flexibel. So ist es auch möglich, den Web-Server und den PHP-Interpreter voneinander unabhängig upzugraden. Als CGI-Programm bringt der PHP-Interpreter jedoch einen gewissen Overhead mit sich. • Viel effizienter ist es, den Interpreter als ein Plug-In des Web-Servers zu installieren. Dies wird bereits für viele verschiedene Web-Server unterstützt: Apache, AOLServer, fhttpd, Internet Information Server, Netscape Server, phttpd, roxen... • Der Interpreter kann auch als Servlet eingesetzt werden und so evtl. in Kombination mit Apaches Jakarta/Tomcat arbeiten [K0̈0]. Es gibt mehrere syntaktische Möglichkeiten, PHP in Web-Seiten einzubauen: • < ? ... ? > • <?php ... ?> • <script language=’’php’’> ... </script> • <% ... %> Als einfachstes PHP-Skript dient wiedereinmal ein hello_world.php: KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 132 <html> <head> <title>Example</title> </head> <body> <?php echo "Hi, I’m a PHP script!"; ?> </body> </html> Die Syntax von PHP lehnt sich an Perl, C und Java an und bietet alle bekannten Kontrollstrukturen dieser Sprachen. PHP bietet untypisierte Variablen, d.h. obwohl es verschiedene Typen von Variablen gibt (Ganzzahl, Fliesskomma, String, Arrays, ...) müssen sie nicht deklariert werden und Typumwandlungen werden automatisch vorgenommen. Variablen werden mit vorangestelltem Dollarzeichen ’$’ geschrieben. PHP-Skripte können Paramter über HTTP-GET und POST erhalten und haben auch Zugriff auf Cookies. Beim Start werden diese Parameter automatisch importiert und stehen als Variable zur Verfügung: Wird also ein PHP-Skript mit der Url http://www.google.com/search?sourceid=googlet&q=Abfrage aufgerufen, stehen dem Skript search die Variablen $client und $q zur Verfügung (Dieses Beispiel dient nur der Demonstation und will keineswegs andeuten, dass Google mit PHP arbeitet!). Diese Art der Variablenbelegung ist sicherheitstechnisch etwas zweifelhaft und kann natürlich ausgeschaltet werden (Stichwort gpc_order bzw. variable_order und register_globals in PHP4 auf einschlägigen Web-Seiten15 oder Manuals). Eine ausführliche Anleitung für PHP ist das PHP-Manual16 , das sowohl die Installation von PHP, als auch die Programmiersprache selbst beschreibt. Eine weitere gute Beschreibung ist unter www.selfphp3.com zu finden. Eine besondere Stärke von PHP ist die Unterstützung von vielen verschiedenen Datenbanken (u.a. Adabas-D, mSQL, MySQL, Oracle, Postgres, Slid, Sybase/Sybase-CT, Velocis, dBase-Files, fileProDateien, ODBC, ... (Liste17 )) und die Einbindung von Datenbankabfragen in Webseiten. Es werden aber auch ganz andere Techniken unterstützt, wie z.B. das dynamische Generieren von Bildern18 , der Zugriff auf Mailserver (SMTP, POP3, IMAP, ...)19 und vieles mehr. Da die freie Datenbank MySQL20 sehr oft in Verbindung mit PHP bei Web-Sites Verwendung findet, folgt ein kurzes Beispiel, wie man mit Hilfe von PHP und einer Datenbank einen Counter für HTML-Seiten erstellt21 . Für Details zu den php-Funktionen siehe die MySQL Seite des PHP-Manuals22 : <?php $db_host $db_user $db_pass $db_name $my_url = = = = = "was.weiss.ich.net"; "username"; "meinpasswort"; "meinedb"; "http://dies.ist.meine.url"; $db_conn = mysql_connect($db_host, $db_user, $db_pass) or die ("\nKeine Verbindung zum Datenbank-Server!<br>\n"); mysql_select_db($db_name, $db_conn) or die ("\nDatenbank auf Server nicht gefunden!<br>\n"); $db_result = mysql_query("SELECT * FROM counter where url = ’$my_url’", $db_conn) or die ("\nDatenbank-Abfrage fehlgeschlagen!<br>\n"); $db_row = mysql_fetch_array($db_result); $hits = $db_row[hits]; $hits++; $db_result = mysql_query("UPDATE counter SET hits = ’$hits’ WHERE url = ’$my_url’", $db_conn) or die ("\nKonnte Zählerstand in Datenbank nicht erhöhen!<br>\n"); $hits_str = sprintf("Hits von URL ’%s’: %07d", $my_url, $hits); echo $hits_str; @mysql_close($db_conn); 15 http://www.intermitto.net/?thema=php&seite=konfig.data 16 http://www.php.net/manual/ 17 http://www.php.net/manual/en/intro-whatcando.php 18 http://www.php.net/manual/en/ref.image.php 19 http://www.php.net/manual/en/ref.imap.php 20 http://www.mysql.com 21 Abgeleitet von der MMIS-Übung SS2001 von Juergen Haeuselhofer, Reinhard Hutter, Michael Mitter und Udo Pichl 22 http://www.php.net/manual/ref.mysql.php KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 133 ?> PHP-Tutorials sind u.a. hier zu finden: • PHP für Anfänger23 • PHP Introductory Tutorial24 • Das PHP4 - Webserver-Programmierung für Einsteiger25 Buch (auch downloadbar). • Datenbank, MySQL und PHP26 führt in die Grundlagen von Datenbanken, SQL und PHP ein. • Ein Pendant zu SelfHtml ist SelfPHP27 . • PHP/MySQL Tutorial28 NOTIZ: Tripod.de (http://www.tripod.lycos.de) bietet gratis 50MB Webspace, PHP (muss aktiviert werden) und Zugriff auf eine MySQL Datenbank an - Optimal, um für die Übung eine PHP-Seite zu erstellen 8.1.9 Cookies Cookies sind Strings, die vom Web-Server per http an den Web-Browser gesendet werden und dort gespeichert werden. Diese Cookies werden als Teil des HTTP-Headers vom Browser wieder an den Server übertragen. Wenn ein Server ein Cookie an einen Browser schickt, kann der Browser dieses Cookie entweder im Cache, in seiner Cookie-Datenbank oder in einer Datei nur für dieses Cookie abspeichern. Cookies haben normalerweise auch ein “Ablaufdatum”. Bei Cache-Cookies wird es auf “Ablaufen bei Beenden des Browsers” gesetzt; bei Datei-Cookies kann es auf ein beliebiges Datum gesetzt werden. Zusätzlich kann festgelegt werden, wer das Cookie lesen darf, also welcher Server. Dies wird aber auch vom Server, der das Cookie schickt, festgelegt. Cookies erlauben so eine Zustandsspeicherung des Dialoges zwischen Browser und Server, der Web-Surfer hat aber kaum inhaltliche Kontrolle über die bei ihm abgelegten Daten. Kommerzielle Anbieter werten mittlerweile Cookies aus, um Interessensprofile von Endnutzern zu erstellen. Oft wird deshalb empfohlen, Cookies entweder auszuschalten oder höchstens nach Bestätigung (da sieht erst einmal, wieviele Cookies übertragen werden!) zu akzeptieren. [Hen00] 8.1.10 Session Tracking HTTP ist prinzipiell (es gibt auch die andere Variante (HTTP1.1 - Stichwort keepAlive)) ein Protokoll, das für jeden Request eine neue TCP/IP Verbindung aufbaut. Nachdem dieser Request abgearbeitet ist (die Datei vom Server zum Client übertragen wurde), wird die Verbindung abgebaut. Für eine neue Anfrage muss erneut eine TCP/IP Verbindung aufgebaut werden. Diese Tatsache erschwert das sogenannte Session Tracking, also das Verfolgen eines Benutzers über mehrere Web-Seiten hinweg. Oft ist es jedoch notwendig zu wissen, welcher Benutzer eine Seite anfordert. Beispielsweise muss ein Online-Shop nach einmaliger Identifikation den Benutzer mitverfolgen, um so immer den richtigen Wahrenkorb anzubieten. Egal, welche Technik (ASP, JSP, PHP, ...) man verwendet, das allgegenwärtige HTTP-Protokoll bietet nur begrenzte Möglichkeiten zum Session Tracking: 23 http://www.skyhome.de/php/ 24 http://www.php.net/tut.php 25 http://www.galileocomputing.de/openbook/php4/ 26 http://ffm.junetz.de/members/reeg/DSP/ 27 http://www.selfphp.info/index.php 28 http://hotwired.lycos.com/webmonkey/programming/php/tutorials/tutorial4.html KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 134 • Der Benutzer wird über Cookies eindeutig identifiziert und bei jedem Seitenaufruf wird ein Cookie vom Client zum Server übertragen, das dem Server mitteilt, welcher Benutzer bzw. welche Session (ein Benutzer könnte ja mehrmals ’eingeloggt’ sein) vorliegt. Der Web-Server muss nur noch nachschlagen, welcher Cookie-Wert welcher Session entspricht und kann so leicht erkennen, dass ein HTTP-Request zu einer bestimmten Session gehört. Diese Möglichkeit funktioniert auch bei statischen Web-Seiten, da Cookies unabhängig von der Web-Seite übertragen werden können. Bei clientseitigen ausgeschalteten Cookies kann diese Technik allerdings nicht angewandt werden. • Bei Web-Formularen können einfach sog. Hidden Fields in der HTML-Seite verborgen werden, deren Inhalt für den Benutzer unsichtbar bleibt und trotzdem für das serverseitige Skript auswertbar ist: <INPUT type=”HIDDEN”name=”sessionInfo”value=”username”> So wird z.B. eine Benutzer/Session-Kennung in jedes ausgelieferte HTML-Dokument verpackt und beim nächsten Post-Request wieder an den Server zurückgeliefert (nur bei einem Submit des Formulars, nicht bei einem normalen Link von der HTML-Seite). Diese Methode ist unabhängig von Browsereinstellungen und sollte somit eigentlich immer funktionieren. Der Nachteil ist allerdings, dass jede ausgelieferte Seite auf einen Benutzer bzw. eine Session zugeschnitten ist. Daher müssen Seiten dieser Art immer dynamisch erzeugt werden, und können daher nicht gecached werden. Ein weiterer Nachteil dieser Methode ist, dass ein verstecktes Formularfeld natürlich ein Formular voraussetzt und daher nur eine submit Methode unterstützt (nur ein Link möglich). Eine Möglichkeit, dies zu umgehen ist folgende, die Javascript verwendet (und von Karl Svensson beigesteuert wurde). Hier wird für jeden Link eine Javascript-Funktion aufgerufen, die das “submitten” übernimmt: <html> <head> <title>Link test</title> </head> <script language="JavaScript"> function linkFunc(inURL) { Info.action = inURL; Info.submit(); } </script> <body> <form name="Info" method="get"> <input type="hidden" name="hidden1" value="Kalle"> <input type="hidden" name="hidden2" value="Svensson"> </form> <a href="javascript:linkFunc(’pelle.htm’)">Pelles page</a> <a href="javascript:linkFunc(’kalle.htm’)">Kalles page</a> </body> </html> • Eine ähnliche Methode wird verwendet, wenn die Sessionkennung für einen HTTP-GET-Request in die Url codiert wird, sog. URL-Rewriting (z.B. bei dem Freemailer GMX29 : http://www.gmx.net/ cgi-bin/folindex/979544435?CUSTOMERNO=1234567). In diesem Fall wird die Kundennummer und eine Session Id in jeder Url mitübergeben. Damit jedoch diese Kundennummer an alle Nachfolgeseiten übergeben wird, muss an alle Links auf dieser Seite ?CUSTOMERNO=1234567 angehängt werden. Dies setzt wiederum eine dynamische Seitengenerierung voraus und macht diese Seiten für Web-Caches untauglich. Ein guter Artikel betreffend Session-Tracking in PHP4 findet sich unter http://www.dclp-faq.de/ch/ ch-version4_session.html, in dem u.a. steht, dass PHP defaultmässig Cookies zum Session-Tracking verwendet. 29 http://www.gmx.net KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 8.2 135 Distributed Programming In diesem Abschnitt wird eine Auswahl an aktuellen Möglichkeiten vorgestellt, wie Applikationen über Netzwerkgrenzen verteilt werden können. Da eine genauere Beschreibung den Raum dieses Skripts bei weitem sprengen würde, wird nur ein kurzer Überblick ohne Anspruch auf Vollständigkeit gegeben. 8.2.1 .NET Laut Microsoft ist .NET eine “revolutionary new platform, built on open Internet protocols and standards, with tools and services that meld computing and communications in new way”. Weniger euphorisch gesagt, versucht Microsoft mit .NET eine Konkurrenz zu Java Enterprise Edition aufzubauen, indem eine Möglichkeit geschaffen wird, Applikationen zu erstellen, die • in verschiedenen Programmiersprachen entwickelt wurden, • auf verschiedenen Plattformen (z.Zt. nur Windows Plattformen) lauffähig sind, • miteinander über das Internet kommunizieren können. Kern der .NET-Plattform ist eine Laufzeitschicht (CLR (Common Language Runtime)), die für alle Sprachen gemeinsam vorgesehen ist, und eine Art Grundgerüst für die Anwendungen darstellt. [Ric00] Die Sprachunabhängigkeit wird durch die Verwendung einer “intermediate language” (MSIL) - also einer Art Bytecode - erreicht. Somit kann in allen Sprachen, für die ein MSIL-compiler erhältlich ist, für .NET entwickelt werden (Abbildung 8.1). Microsoft selbst unterstützt die Entwicklung dieser Compiler, kann und wird jedoch aus rechtlichen (und marketingtechnischen :-) Gründen keinen Java-Compiler anbieten. VB C# C++ compiler compiler compiler ASM Code IL Code Common Language Runtime JIT Compiler Betriebssystem Abbildung 8.1: Die Common Language Runtime (CLR) verarbeitet die intermediate language, die von verschiedenen Compilern erzeugt werden kann. Das Konzept der ’intermediate language’ ist nicht wirklich neu (schon das altehrwürdige BTX hat eine solche verwendet) und so gibt es auch viele Compiler die verschiedenste Sprachen in den Java-Bytecode übersetzen (siehe http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html). Weitere Infos und Links über .NET auf der Vorlesungsseite von Dr. Ralph Zeller (Microsoft’s ExUniversitätsbeauftragen): http://www.ssw.uni-linz.ac.at/Teaching/Lectures/DotNet/ C# Als neue Sprache und direkten Konkurrenz zu Java entwickelte Microsoft C# (sprich “C sharp” - also “Cis Dur”), die folgende Eigenschaften besitzt: KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 136 • Objekt orientiert, aber keine Mehrfachvererbung, kein Operator-Overloading. Originalzitat aus einem MSDN-Magazin30 : “Yeah, yeah. C++ is object oriented. Right. I’ve personally known people who have worked on multiple inheritance for a week, then retired out of frustration to North Carolina to clean hog lago.” • garbage collection • einfachere Datentypen: keine verschiedenen Typen für den selben Zwecke (“a char is a char, not a wchar t”). Keine unsigned Typen. Hier liegt aber auch ein Problem bei der Verwendung von anderen Programmiersprachen, die sehr wohl diese Datentypen unterstützen, aber bei der Compilierung in die (mit C# gemeinsame) MSIL nicht verwendet werden dürfen. So ist ein String in Visual Basic gleich einem String in C# gleich einem String in C (den es aber leider nicht gibt :-). • Versionen für Libraries (“end of the DLL Hell ”). • Aufrufe zur Windows API oder “alte” DLLs werden unterstützt. Sollten solche Aufrufe verwendet werden, ist die Plattformunabhängigkeit natürlich obsolet. Weitere Infos zu C#: • http://msdn.microsoft.com/vstudio/nextgen/technology/csharpintro.asp • http://www.microsoft.com/PressPass/press/2000/jun00/CSharpPR.asp • http://msdn.microsoft.com/msdnmag/issues/0900/csharp/csharp.asp SOAP SOAP (Simple Object Access Protocol) ermöglicht den einfachen Austausch von Informationen zwischen Applikationen über das Netzwerk. Dies kann ein einfaches Austauschen von Nachrichten sein, oder aber ein “remote procedure call ”, also ein Aufruf einer Funktion über Netzwerkgrenzen hinweg. SOAP kann diese Nachrichten über HTTP versenden und umgeht somit Probleme mit Firewalls. SOAP Nachrichten sind in XML kodiert. Mehr Details über SOAP auf der Webseite des W3C31 oder unter http://www.iicm.edu/research/ seminars/ws_00/pacnik_strohmaier.pdf. WebMethod WebMethods erlauben den netzwerktransparenten Zugriff auf Methoden von CLR-Applikationen von anderen Computern über ein Netzwerk. Dazu wird einfach ein [Webmethod] Attribut vor den Methodennamen im Sourcecode gestellt und ab sofort ist diese Methode über das Netzwerk aufrufbar (mit Hilfe von SOAP). [WebMethod(Description="ADO.NET WebMethod Example")] public DataSet GetCustomersNew() { [....] } Das komplette Beispiel findet sich unter http://www.c-sharpcorner.com/database/adovsadonetwebservice. asp. Prinzipiell ist gegen eine solche Idee nichts einzuwenden, erleichtert es ja die Implementation von verteilten Programmen. Der grosse Nachteil32 dieser Methode ist jedoch, dass eine solche WebMethodKennzeichnung auch für andere Programmiersprachen eingeführt wurde und damit der Umfang aller Sprachen verändert wurde. Dies ist auch einer der Gründe, warum Microsoft Java nicht unterstützen kann, da Sun eine Änderung der Sprache Java verboten hat. 30 http://msdn.microsoft.com/msdnmag/issues/0900/csharp/csharp.asp 31 http://www.w3.org/TR/SOAP/ 32 Dies ist natürlich nur die persönliche Meinung des Autors. KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 137 ASP.NET ASP.NET unterscheidet sich vom “normalen” ASP hauptsächlich dadurch, dass es nicht nur Visual Basic innerhalb von ASP-Seiten erlaubt, sondern auch C# oder ähnliche. So bindet folgender Code ein C# Programm in eine ASPX-Seite ein: <%@page language="C#" src="aux1.cs"%> <%assembly Name="aux2.dll" %> Man beachte, dass kein ausführbares Programm oder eine DLL angegeben wurde, sondern direkt der Source Code, der dann bei Bedarf (wenn der Source ein neueres Änderungsdatum als die erzeugte DLL hat) compiliert und ausgeführt wird. 8.3 WAP/WML 8.3.1 WML WML (Wireless Markup Language) ist die Markup Language für WAP (Wireless Application Protocol)Browser (wie HTML für Web-Browser) und wird ebenfalls via HTTP übertragen. Damit der Web-Server WML-Dateien richtig ausliefert, muss dies in der entsprechenden Server-Konfigurationsdatei (z.B. bei Apache unter SuSE7.0-Linux in /etc/httpd/httpd/conf) oder in der .htaccessDatei des Verzeichnisses (falls der Web-Server dies unterstützt) eingetragen sein: AddType AddType AddType AddType Addtype text/vnd.wap.wml wml text/vnd.wap.wmlscript wmls application/vnd.wap.wmlc wmlc application/vnd.wap.wmlscriptc wmlsc image/vnd.wap.wbmp wbmp Dies setzt die MIME-Types für die jeweiligen Dateien, sodass der WAP-Browser diese akzeptiert. Jedes WML-Dokument ist ein gültiges XML-Dokument und muss so alle Anforderungen von XML erfüllen. Ein WML-Dokument besteht aus mehreren Teilen: • Deck (Stapel): Ein Deck ist am besten mit einer herkömmlichen HTML Seite vergleichbar und besteht aus einer oder mehreren Cards (Karten). Es wird immer ein komplettes Deck auf das WAP Gerät geladen, so dass dieses nicht zu groß sein und logisch zusammengehörige Cards enthalten sollte. Das Deck enthält ein <wml>-Tag am Anfang (und das abschließende </wml> am Ende), sowie die Meta-Tags und ggf. für alle Cards gültige <do>-Elemente. • Prolog: <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> • WML-Header: Dieser kann Metainformationen enthalten, ähnelt dem HTML-<head>-Tag und wird innerhalb des <wml>-Tags verwendet: <head> <meta name="keywords" content="Stichwort, Suchwort, Schlagwort"/> <meta name="description" content="Eine Beschreibung"/> <meta name="author" content="Thomas Ziegler"/> </head> • Cards: Eine Card (Karte) ist der Teil eines Decks, mit dem der Benutzer navigiert. Er springt also von einer <card> zur anderen - die sich entweder auf einem Deck (einer Datei) zusammen oder in unterschiedlichen Dateien befinden. KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 138 <card id="cardid" title="Card Titel"> <p>Text auf dieser Karte</p> </card> • Verweise lassen sich auf mehrere Arten angeben, die bei HTML gebräuchliche (<a>) wird jedoch auch hier akzeptiert. <a href="http://wml.domain.de/deck.wml/#card">Gehe zu Karte</a> • Textattribute: werden auch hier unterstützt und folgen dem HTML-Standard (<em>, <i>, <strong>, ...) • Ein Zeilenumbruch muss in XML-konformer Weise <br/> geschrieben werden. Die Definition von Paragraphen erfolgt wie gehabt mittels <p>. Tabellen sind ebenfalls HTML-konform und werden mit <table>, <tr>, <td> erstellt. Da XML jedoch sehr streng auf die Syntax achtet, dürfen keine Ende-Tags aus Faulheit weggelassen werden! • Graphiken: Bei WML können nur Bilder im WBMP-Format (Wireless Bitmap) verwendet werden. • Formularfelder werden auch hier unterstützt (Auswahlfelder, Eingabefelder, ...) • Tasks lösen Aktionen auf einen Event (Card aufgerufen, Verweis angeklickt) aus. – Mit <go> kann auf eine andere Stelle (Card oder Deck) gesprungen werden: <go href="http://www.domain.de/deck"/> <go href="#card"/> – <prev/> springt zur vorherigen Stelle. – <refresh/> lädt die Seite erneut. – <do> behandelt Events • Variablen sind eine leistungsfähige Erweiterung der bekannten HTML Funktionalität. Sie werden benutzt, um Statusinformationen oder Benutzereingaben kontextsensitiv von einer Card zur nächsten oder an den Server weiterzugeben. Variablen werden mit dem Dollar-Zeichen ’$’ eingeleitet. Soll daher ein $-Zeichen im Text verwendet werden, ist $$ zu schreiben. <p>Wert von T ist $T</p> $(URL:unesc) $(PATH:escape) Stellt den Text dar und ersetzt $T mit dem Wert der Variable. Mit unesc und escape lässt sich die Variable URL de- bzw. encodieren. Die WML-Spezifikation33 und andere Referenzen finden sich auf http://www.wapforum.org. Eine gute Einführung, von der auch der WML-Teil dieses Kapitels übernommen wurde findet sich unter http://www.thozie.de/wap/wml.htm. Ein ganz gutes Tutorial ist auch unter http://www.wap-uk. com/Developers/Tutorial.htm zu finden. 8.3.2 WAP Um nun von einem WAP-Device zu einem Server ein WML-Dokument abfragen zu können, werden mehrere Teile benötigt (siehe auch Abbildung 8.2): • Das WAP-Gerät muss sich bei einem Einwahlknoten einwählen und stellt zu diesem eine TCP/IPVerbindung her. Zwischen WAP-Gerät und dem Einwahlknoten besteht eine ganz normale TCP/IPVerbindung, wie zwischen einem Computer, der sich über ein Modem ins Internet einwählt, und dem Internetprovider, bei dem er sich einwählt. 33 http://www1.wapforum.org/tech/documents/SPEC-WML-19991104.pdf KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 139 • WAP-Gateway: Das WAP-Device spricht nun über TCP/IP mit Hilfe des Wireless Application Protocol’s mit einer sog. WAP-Gateway, einer Applikation, die die Umsetzung der Anfragen des WAPDevices auf andere Protokolle erledigt (z.B. HTTP). Die WAP-Einstellungen des WAP-Gerätes geben an, unter welcher IP-Adresse diese WAP-Gateway erreichbar ist. • Ein Web-Server verwaltet WML-Seiten (sog. Decks) und liefert diese auf Anfrage ganz gleich wie HTML-Seiten per HTTP aus. Funkverbindung wap PPP (TCP/IP) WAP−Device Einwahl− knoten WAP HTTP TCP/IP TCP/IP WAP−Gateway Web−Server Abbildung 8.2: WAP-Einwahl und beteiligte Systeme: Ein WAP-Device wählt sich bei einem Einwahlknoten ein und baut eine PPP-Verbindung auf. Die WAP-Gateway verwandelt das komprimierte WAP-Protokoll in normales HTTP und requestet bei einem Web-Server die verlangten WML-Dokumente. 8.3.3 Installation einer eigenen WAP-Einwahl unter Linux In diesem Abschnitt wird die Konfiguration eines eigenen Einwahlsystems für eine WAP-Einwahl unter Linux beschrieben. Sie ist aus der Projektarbeit von Robert Runggatscher34 entstanden und besteht aus mehreren Teilen: • mgetty: Ist für die Einwahl per Modem oder wie hier per ISDN verantwortlich. • pppd : Ermöglicht die PPP-Verbindung zum WAP-Gerät (Mobiltelefon). • Kannel 35 setzt das WAP-Protokoll, das zwischen dem Einwahlknoten und dem WAP-Gerät gesprochen wird, auf HTTP um. Hier werden alle Daten komprimiert und zum WAP-Device übertragen. • Der Apache Web-Server liefert die WML-Dateien per HTTP aus. Es wird nicht garantiert, dass folgende Installationsbeschreibung fehlerlos ist und wirklich funktioniert. Es soll jedoch zumindest ein Einblick gegeben werden, welche Teile nötig sind und wie diese zusammenspielen. NOTIZ: Es wird sicherlich keine Installationsanleitung für irgendwas bei der Prüfung gefragt! mgetty Installing and configuring mgetty for ISDN providing an automatic startup for ppp. I tried this with mgetty 1.1.21 and 1.1.22. We made this with an isdn fritz card PCI, the driver was compiled to the kernel, it didn’t work as module and we didn’t use the driver for the FRITZ A1 card! • Extract package 34 mailto:rrung@iicm.edu 35 http://www.kannel.org KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 140 • make (maybe you should look at the pathes in the Makefile and change them for your needs, e.g. CONFDIR=$(prefix)/etc/mgetty+sendfax to CONFDIR=/etc/mgetty+sendfax • make install • edit the configuration files in $(prefix)/etc/mgetty+sendfax/ – Add the following lines to /etc/inittab: I0:234:respawn:/usr/local/sbin/mgetty -x 4 -s 38400 /dev/ttyI0 – Add the following lines to $(prefix)/etc/mgetty+sendfax/mgetty.config: port ttyI0 debug 9 #(only for debugging purposes) data-only y port-mode 0660 modem-type data init-chat "" AT&B512&E5666&X0S14=4S19=197&R9600 OK issue-file $(prefix)/etc/mgetty+sendfax/foo.issue autobauding n – Add the following lines to $(prefix)/etc/mgetty+sendfax/dialin.config all (allows all numbers a dialin) – Add the following lines to $(prefix)/etc/mgetty+sendfax/login.config /AutoPPP/ - root /usr/sbin/pppd file /etc/ppp/wap.conf The file login.config has to be owned by root.root and have the rights -rw------– Provide an empty file $(prefix)/etc/mgetty+sendfax/foo.issue (holds the welcome text) pppd • Install the pppd (I didn’t do that because it was already installed) • Add the following lines to /etc/ppp/wap.conf (same file as given in the $(prefix)/etc/mgetty+ sendfax/login.config file) vjccomp -ac -pc -vj name wap 10.1.32.10:10.1.32.1 ktune ipcp-accept-local ipcp-accept-remote debug noauth lock asyncmap 0 netmask 255.255.255.255 nodetach noproxyarp lcp-echo-interval 30 lcp-echo-failure 4 idle 600 no ipx Kannel I made this with the Kannel (www.kannel.org) WAP-Gateway 0.12.1 • ./configure • make • makeinstall KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN 141 • Add the following lines to $(prefix)/kannel/conf/kannel.conf: group = core admin-port = 13000 admin-password = wappler admin-allow-ip = "*.*.*.*" #admin-deny-ip = "127.0.0.1;129.27.153.58" #smsbox-port = 13001 wapbox-port = 13002 box-allow-ip = "*.*.*.*" #box-allow-ip = "127.0.0.1;129.27.153.58" wdp-interface-name = 129.27.153.58 log-file = "/usr/local/kannel/log/bearer_kannel.log" log-level = 0 access-log = "/usr/local/kannel/log/kannel.access" unified-prefix = "+43,0043,0" #http-proxy-host = fiicmfw01.tu-graz.ac.at #http-proxy-port = 3128 syslog-level = 0 group = wapbox bearerbox-host = localhost log-file = "$(prefix)/kannel/log/wap_kannel.log" log-level = 0 (for debugging only) • Running Kannel: – change to $(prefix)/kannel/bin – first of all you have to start the bearerbox with th following command: ./bearerbox-0.12.1 -v 1 ../conf/kannel.conf – start the wapbox with th following command: ./wapbox-0.12.1 -v 1 ../conf/kannel.conf – if you want to start an smsbox too you have to add a sms - group to the kannel.conf file and then start it by entering (I didn’t tried this at all): ./smsbox-0.12.1 -v 1 ../conf/kannel.conf Apache Der Web-Server Apache muss so konfiguriert werden, dass er WML-Dateien richtig erkennt und den MIME-Type richtig setzt. Siehe dazu Abschnitt 8.3. Kapitel 9 Knowledge Management In diesem Kapitel finden sich zwei Artikel von Prof. Hermann Maurer1 , die einen kurzen Einblick in Knowledge Management geben sollen. Da die Artikel unverändert übernommen wurden (bis auf minimale Layoutänderungen (WinWord auf LATEX)) beziehen sich eventuelle Literaturverweise immer auf die Referenzen, die am Ende des jeweiligen Papers angegeben sind und nicht auf die allgemeine Literaturliste am Ende des Skriptums. 9.1 9.1.1 Die (Informatik) Welt in 100 Jahren Wie kann irgendwer über eine so lange Zeit eine vernünftige Prognose machen? Diese Frage stellt sich fast zwangsweise, wenn man den Titel dieses Beitrags liest: kann jemand so naiv sein, dass er sich an ein so unmögliches Unterfangen wagt? Nun, ich bin nicht so einfältig zu glauben, dass man 100 Jahre in die Zukunft sehen kann. Tatsächlich halte ich es mit Jaques Hebenstreit, der meint “Jede Vorhersage in der Informatik über mehr als 20 Jahre kann nur als Science Fiction eingestuft werden”. Und wer sehen will, was alles schief gehen kann, der soll bitte meinen Beitrag “Prognosen und Thesen? nicht nur zum Schmunzeln” im Informatik Spektrum Februar 2000 nachlesen! Warum schreibe ich dann diesen Beitrag trotzdem? Weil ich von einem bisher noch nie explizit ausgesprochenen Phänomen überzeugt bin, das tatsächlich mit sehr hoher Wahrscheinlichkeit in 100 Jahren in voller Entfaltung sichtbar sein wird. Es wird das Leben aller Menschen und alle Regelsysteme der Gesellschaft und der Wirtschaft völlig verändern. Bevor ich erkläre, was ich meine, muss ich im nächsten Abschnitt aber erst die Basis dafür schaffen. 9.1.2 Die arbeitsteilige Gesellschaft Wir Menschen sehen uns gerne als Individualisten, die ihr eigenen Ziele und Ideen verfolgen und die also auch eine gewissen Unabhängigkeit von anderen Menschen haben und schätzen. Dieser Traum der persönlichen Eigenständigkeit ist schön, aber entspricht in keiner Weise mehr der Welt in der wir heute leben. Geht man weit zurück, so war das einmal anders. Die Urmenschen lebten in kleinen Gruppen. Sie war damals von anderen Gruppen, ja selbst von den Mitgliedern des eigenen Stammes weitgehend unabhängig. Wurde damals ein erwachsener Mensch aus einer Gruppe verstossen, so konnte er ohne grossen Verlust an physischer Lebensqualität weiter leben: er konnte für sich selbst jagen, sammeln, sich gegen Kälte schützen, usw. 1 mailto:hmaurer@iicm.edu 142 KAPITEL 9. KNOWLEDGE MANAGEMENT 143 Im Laufe der Menscheitsentwicklung wurden die Wechselwirkungen zwischen den Menschen immer stärker. Der Handel, zuerst lokal, später weltweit, schaffte höhere Lebensqualität, aber auch mehr Abhängigkeit, mehr Spezialisierung. Die Verstädterung, später die Industrialisierung und die Globalisierung schließlich führten zu der Situation die wir heute haben, und die uns oft nicht klar genug bewusst ist: was in der Industrialisierung als Taylorismus, als Arbeitsspezialiserung berühmt bzw. berüchtigt wurde, das erleben wir heute überall. Die Menscheit ist in einem unvorstellbaren Mass arbeitsteilig geworden, wie ich mit drei Beispielen erläutere: Während ich dies schreibe, sitze ich in einem Haus mit vielen Einrichtungsgegenständen, die ein Heer von speziell ausgebildeten Menschen für mich geschaffen haben: es geht ja nicht nur um die Baufirmen, die Elektriker, die Installateure, die Möbelfirmen, usw, die unmittelbar sichtbar sind, sondern um deren unzählige Zuliferanten und Subauftragnehmer, die selbst wieder solche haben, und die alle wieder von Infrastruktureinrichtungen abhängig sind (Strom, Strassen, Wasser,?.). Ich trage Kleidung, bei deren Herstellung eine Unzahl von hunderten Spezialisten beteiligt war: allein am Plastikarmband meiner Uhr haben indirekt sicher hunderte (!) Branchen mitgewirkt: jene, die die Maschinen zur Erdölgwinnung bauten, das Personal in der technisch-chemischen Industrie das daraus einen Plastikrohstoff erzeugte, die industriellen Schneidereien, die das Band fertigten, die Vertriebswege, die ohne Transportsysteme oder Buchhaltung nicht funktionieren könnten, usw. Wobei hinter so einfachen Worten wie “Transportsystem” ja wieder unzählige ander Branchen stehen. Ich trinke eine Tasse Kaffee ohne explizit zu realisieren, wieviele Menschen daran beteiligt waren, sowohl an der Produktion der Tasse als auch an der Produktion dieser braunen heissen Flüsigkeit, die aus gerösteten Bohnen gemacht wird, die aus einem anderen Teil der Welt kommen? Wenn einer von uns heute verstossen wird und auf sich selbst gestellt in der Wildnis (wo es die gerade noch gibt) überleben will, schafft er dies im Normalfall nicht mehr. Wenn es gelingt, dann nur mit einem dramatisch niedrigerem Komfort. Unsere Gesellschaft ist so arbeitsteilig geworden, so verzahnt, die Menschen sind so von einander abhängig, dass wir uns nicht mehr als Einzellebenwesen sehen können, sondern schon viel eher analog zu Ameisen in einem Ameisenhaufen. Anders formuliert: es gibt das Lebewesen Mensch nicht mehr, sondern das Lebewesen Menschheit: die Menschen sind nur noch Zellen dieses Lebewesens, die bestimmte Aufgaben übernommen haben. Dieses neue Lebewesen Menscheit hat anstelle von Muskeln Werkzeuge, Maschinen und Energieversorgungsnetze, anstelle von Blut die globalen Transportsysteme, anstelle von Nerven die weltweiten Kommunikations-, Medien-, Daten- und Computernetzewerke. Noch anders formuliert: obwohl wir die materiellen Dinge in unserer Umgebung (von der Kleidung zur Behausung, vom Transportmitel zum Essen,?) andauernd und ganz selbstverständlich benutzen, können wir nur ganz wenige davon selbst herstellen: wir haben uns daran gewöhnt, dass wir im materiellen Bereich vollständig auf andere Menschen angewiesen sind, und greifen auf diese Produkte anderer Menschen ohne Bedenken jederzeit zu. Es ist darum so wichtig, dies einmal deutlich zu verstehen, weil die nächsten hundert Jahre etwas Analoges bringen werden: die Welt wird nicht nur arbeitsteilig, sie wird auch vollständig “wissensteilig”: jeder Mensch wird auf das Wissen anderer Menschen direkt zugreifen müssen und können, und dies als Selbstverständlichekit betrachten, ohne zu verstehen, wie dieses Wissen in den anderen Menschen entstanden ist, und ohne in der Lage zu sein, dieses Wissen selbst zu erarbeiten. Genau wie es die meisten von uns heute tun, wenn sie ein Auto verwenden: weder wissen sie auch nur annäherend, wie es konstruiert wurde, noch wären sie dazu in der Lage, eines zu bauen. So wie traditionelle Werkzeuge unserer körperlichen Fähigkeiten vervielfacht haben werden in Zukunft “Wissenswerkzeuge” unserer geistigen Fähigkeiten dramatisch vergrössern, aber gleichzeit auch die gegenseitige Abhängigkeit! 9.1.3 Die wissensteilige Gesellschaft Meine Hauptthese ist also, dass die Menschheit in den nächsten 100 Jahren in einem gewaltigen Ausmass “wissenssteilig” werden wird, und dass damit einerseits anstelle des Einzellebewesen Mensch das neue Lebewesen Menschheit noch deutlicher als heute sichtbar wird, andererseits die einzelnen Menschen fast KAPITEL 9. KNOWLEDGE MANAGEMENT 144 wie durch ein grosses “externes Gehirn” gewaltig an mentalen Möglichkeiten gewinnen werden. Die Weiterentwicklung der Computer bzw. der Informatik wird dabei eine wesentliche Rolle spielen: darauf gehe ich in einem getrennten Abschnitt näher ein. Freilich sollte man die beispielhaften Aussagen in diesem technischeren Abschnitt nur genau als solche sehen: denn ob die dort beschriebenen oder ganz andere Alternativen in 100 Jahren zum Tragen kommen werden, dass kann wirklich niemand vorhersagen. Meine These aber, dass die Menschheit immer wisssensteiliger wird, die in diesem zentralen Abschnitt erläutert wird, diese Prognose wird dem Wind der Zeit eher standhalten, und ist daher auch sehr viel ernster zu nehmen. Rekapitulieren wir noch einmal kurz: die Menschen waren ursprünglich durchaus in der Lage, jeder für sich zu sorgen. Erst durch Phänomene wie Handel, Urbanisierung, Industrialisierung und Globalisierung wurden die Menschen immer mehr von den materiellen Produkten anderer abhängig, besteht heute in den entwickelten Gesellschaften ein unglaubliche starke Abhängigkeit der Menschen voneinander aber auch ein weltweiter Zugriff auf alle Güter: vor 50 Jahren waren Mangos, Bananen, Kiwis usw in Europa einfach nicht erhältlich, chinsesische Restaurants eine Seltenheit, oder Handschnitzerein aus Afrika den wenigen Fernreisenden vorbehalten. Im Bereich “Wissen” ist ein ähnlicher aber langsamerer Prozess verfolgbar, ein Prozess der erst in den nächsten 100 Jahren seinen wirklichen Höhepunkt erreichen wird. Der schon vorher als Beispiel herangezogene Urmensch verfügte, jeder einzelne, noch über das meiste notwendige Wissen. Er vermittelte dieses Wissen auch nicht durch einen formalen Prozess wie “unterrichten” oder “aufschreiben”, sondern einfach durch “vorzeigen”. In den allmählich sich entwickelnden höheren Kulturen war aber schon bald nicht alles Wissen für alle verfügbar. Beispielweise wussten die Priester in einigen alten Kulturen sehr viel mehr über die Astronomie als die meisten anderen damaligen Menschen, die Medizinmänner mehr über Heilkräuter als der Durchschnitt, oder die griechischen Mathematiker mehr über Geometrie und Logik als ihre Zeitgenossen. Das Wissen begann sich also rasch “aufzuteilen”. Ein wesentlicher weiterer Schritt in diese Richtung war die Entstehung der Schrift, durch die das Wissen einzelner einer grossen Anzahl von Menschen in Gegenwart und Zukunft vermittelbar wurde. Der Buchdruck, und im 20. Jahrhundert dann Bild-, Ton- und Filmedien, schließlich bis hin zu den “neuen Medien” und den Computernetzen, allen voran WWW, trugen dazu bei, dass das wachsende Wissen der Menscheit an immer mehr Orten, aufgeteilt in Milliarden von Bruchstücken, zu finden ist. Jeder einzelne Mensch verfügt dabei nur über einen winzigen Bruchteil des Gesamtwissens. Zusätzlicher Wissenserwerb war und ist nicht einfach. Interessant dabei ist aber, und das ist das Entscheidende, dass nicht nur die Zahl der verschiedenartigst und verstreut aufgezeichneten Wissensbruchstücke im Laufe der Zeit, immer mehr wuchs, sondern dass der Zugang zum Wissen allmählich leichter wurde. Unterrichtseinrichtungen wie Schulen und Universitäten trugen dazu bei, Lesen (durch die allgemeine Schulpflicht seit ca. 1800 in Europa weitverbreitet) spielte eine grosse Rolle, aber auch der Zugang zu Büchern wurde einfacher. Musste man vor 400 Jahren vielleicht noch hunderte Kilometer in eine grosse Klosterbibliothek reiten, mussten sich Leibnitz und Newton noch Wochen gedulden um einen Brief vom anderern zu erhalten, entstanden im 20. Jahrhundert zunehmend öffentliche Bibliotheken, ja sind Bücher heute vergleichsweise so billig, dass viele oft gekauft aber nicht gelesen werden: es ist eine Kuriosität unserer Zeit, dass heute mehr Bücher gekauft werden als je zuvor (auch pro Kopf der Bevölkerung) aber deutlich weniger gelesen wird als noch vor 40 Jahren! Medien wie Radio, Fernsehen und seit nicht einmal 20 Jahren das Internet machen den Zugang zu Information (Wissen?) immer einfacher. Die Möglichkeiten, über moderen Kommunikationsmethoden von Email zu Diskussionsforen oder On-Line Expertenberatung wichtige Wissensbruchstücke zu erhalten, oder durch E-Learning sich grössere Wissensbereiche selbst anzueignen, wachsen ständig. Wie würden heute Newton und Leibnitz zusammen arbeiten? Was wir bisher gesehen haben ist noch nicht einmal die Spitze des Eisberges. Lange vor dem Jahr 2100 werden alle Menschen jederzeit und an jedem Ort auf alles Wissen der Menschheit zugreifen können, ähnlich wie wir das heute bei materiellen Gütern können. Dieser Zugriff wird mit Geräten erfolgen, die stark mit den Menschen integriert sind, und wird sich auf Wissen beziehen das entweder aus Datenbanken kommt oder aus Dialogen mit Experten entsteht. Das Gehirn des Einzelmenschen wird nur noch ein vergleichweise winziger Bestandteil eines gewaltigen Wissenvorrates sein, der durch die Vernetzung aus Milliarden von Menschenhirnen und Datenbanken entsteht. So wie wir heute KAPITEL 9. KNOWLEDGE MANAGEMENT 145 ohne zu überlegen in ein Flugzeug einsteigen um etwas Neues zu sehen, werden die Menschen dann in ein “Wissensflugzeug” einsteigen, das Ihnen neue Erkenntnisse und Erlebnisse liefert. Lernen, etwa gar Faktenlernen, wird etwas sein, das so veraltet ist, wie für uns Pferdefuhrwerke, die noch vor 100 Jahren das Hauptverkehrsmittel waren. So wie wir heute Maschinen und Werkzeuge verwenden um Häuser oder Computer zu bauen, einen Staudamm zu errichten oder Holz zu bearbeiten, werden die Menschen in 100 Jahren Werkzeuge und Maschinen haben mit denen aus Wissensgrundbausteinen neue Wissengebilde erzeugt werden können: nicht alle Menschen werden diese Möglichkeiten ausschöpfen, genau so wie auch heute nur ein kleiner Bruchteil bei grossen Vorhaben entscheidend mitmacht. Aber die Potenzierung des Wissens durch das Zusammenschalten vieler “Köpfe” und von Computern wird ein unglaublich mächtiges Lebewesen Menschheit schaffen. Wie mächtig dieses Lebewesen sein wird mag man am besten daran erkennen, was es heute schon erreicht hat, im Positiven wie im Negativen: es hat jeden Punkt der Welt zugänglich gemacht, es hat (bildlich gesprochen) mit Mond- und Marssonden erstmals sozusagen ins Weltall gespuckt; es hat gewaltige Produktionskapazitäten in allen Bereichen entwickelt, sonst könnte nicht ein ganz kleiner Prozentsatz der Europäer alle anderen mit den erforderlichen Lebensmitteln versorgen; dass unsere Wohnungen wohltemperiert sind nehmen wir inzwischen als genauso selbstverständlich hin wie dass wir uns jederzeit Kleidung oder Essen kaufen oder irgendwohin in die Welt reisen können; andererseits hat dieses Lebewesen auch die Umwelt schwerstens verletzt, ist jederzeit in der Lage sich chemisch, biologisch oder nuklear selbst auszurotten, usw. Die Wissensvernetzung wird neue Phänomene mit sich bringen, die wir genau so wenig vorhersehen können wie irgendwer bei der Erfindung des Autos hätte prognostizieren können, dass ein guter Teil der Wirtschaft einmal von Autos abhängen wird, dass Autos die Welt verschmutzen und das Klima ändern, dazu führen, dass riesige Flächen zuasphaltiert werden, dass Autos mehr Menschen töten als selbst die grössten Kriege das tun, usw. Die Menschen werden gegen die sicher auch auftretenden negativen Folgen der Wissensvernetzung so massiv ankämpfen müssen wie wir heute für z.B. weltweiten Umweltschutz eintreten sollten. 9.1.4 Wissensteilige Gesellschaft oder im Wissen ertrinkende Gesellschaft? Während ich im Obigen von der Wissensvernetzung schwärme, von der Tatsache, dass Menschen in den nächsten hundert Jahren immer direkter auf alles existierende Wissen zugreifen werden können, werden Skeptiker entgegnen: wir versinken doch schon jetzt in einer Flut unübersehbarer Informationen; eine weitere Vermehrung ist doch wirklich nichts Positives, sondern eine Katastrophe. Tatsächlich wäre eine weiter Ausweitung der unkontrollierbaren Informationsflut, in der das Auffinden gewünschter und verlässlicher Information immer schwieriger wird, nicht erstrebenswert. Nur zeichnet sich am Horizont bereits ab, dass die Informationslawine allmählich gebändigt und strukturiert werden wird zu sinnvollen, verlässlichen und auf die Person massgeschneiderte Wissenseinheiten. Das wird geschehen über die stärkere Verwendung von Metadaten, von intelligenten Agenten, von vertikalen Suchmaschinen (wo Fachleute Informationen gefiltert und kombiniert haben), von Gigaportalen für die verschiedensten Anwendungsbereiche, von aktiven Dokumenten, die von sich aus antworten geben können, uvm. Viel von den angedeuteten Aspekten beginnt man zur Zeit unter dem Begriff “Wissensmangement” zu subsumieren: erste tastende Bücher zu diesem Thema erscheinen in zunehmender Zahl, Forschungszentren für diesen Bereich werden gegründet, wie z.B. das Grazer “KNOW-Center” unter meiner wissenschaftlichen Leitung, dessen wisenschaftlicher Direktor Dr. Klaus Tochtermann nicht zufällig aus dem “FAW Ulm” (Forschungsinstitut für anwendungsorientierte Wissensverarbeitung) kommt. Wissensmanagement (Knowledge- Management) geht zurück auf den Stossseufzer vieler Manager: “Wenn meine Mitarbeiter nur wüssten, was meine Mitarbeiter wissen, dann wären wir ein viel schlagkräftigeres Unternehmen”. Diese Herausforderung an das Knowledge Management, das gesamte Wissen in den Köpfen einer Organisation ( “Corporate Mememory”) allen zur Verfügung zu stellen, ist im “Kleinen” das, was durch die globale Wissensvernetzung in sehr viel grösserem Masstab die Menschheit verändern wird. Dass diese Wissensvernetzung nicht nur ein Traum ist, zeigen die ersten Wissensmanagement Systeme wie Hyperwave2 und ihre Module, wie die e-Learning Suite. Die heutigen Methoden des Wissensmanagement beginnen grosse Organisationen wirtschaftlich zu stärken 2 http://www.hyperwave.de KAPITEL 9. KNOWLEDGE MANAGEMENT 146 und ihre Zukunft abzusichern: dieser Prozess wird noch Jahrzehnte andauern, die Methoden werden sich ständig verbessern, und allmählich aus den grossen Organisationen hinausreichen in alle Teile des Lebens der künftigen Menschheit. 9.1.5 Technik und Technikspekulationen Eine echte Wissensvernetzung erfordert nicht nur weitere grosse Fortschritte im Bereich Wissensmanagement, sondern ist nur möglich, wenn das Wissen jederzeit und an jedem Ort sofort und möglichst direkt zur Verfügung steht, d.h. wenn die Verbindung zwischen dem Netz und den Menschen noch sehr viel einfacher und natürlicher wird, als sie es heute ist. Ich habe schon vor vielen Jahren den allgegenwärtigen Computer prognostiziert: nicht viel grösser als eine Kreditkarte, weitaus mächtiger als die heutigen schnellsten Computer, mit hoher Übertragsgeschwindigkeit an weltweite Computernetze mit allen ihren Informationen und Diensten angehängt, in sich vereinigend die Eigenschaften eines Computers, eines Bildtelefons, eines Radio- und Fernsehgerätes, eines Videound Photapparates, eines Global Positioning Systems, einsetzbar und unverzichtbar als Zahlungsmittel, notwendig als Führer in fremden Gegenden und Städten, unentbehrlich als Auskunfts- , Buchungs- und Kommunikationsgerät, usw. Die Handys, die wir noch vor 2010 sehen werden und die mit UMTS oder Weiterentwicklungen davon hohe Geschwindigkeit beim Netzzugang ermöglichen werden, werden den beschriebenen allgegenwärtigen Minicomputern schon nahe kommen. Und doch sind solche Überlegungen natürlich noch sehr konservativ. Die Schirmtechnologie wird sich nicht nur durch faltbare, rollbare, extrem leichte und dünne Farbschirme verbessern, die Schirmtechnolgie wird überhaupt verschwinden: über einfache Brillen, die bei den Ohren Stereoton direkt auf die Gehörknochen abgeben (wie das heute bei Hörbrillen schon gang und gebe ist) werden Bilder direkt durch die Pupille auf die Netzhaut projiziert werden, links und rechts natürlich verschiedene, um dreidimensionale Effekte zu erlauben. Die Brille wird aber auch Aufnahmegerät sein, mit einem 500 fach Zoom mit dem man die dann auf dem Mond entstehenden Gebäude in klaren Nächten sehen wird können, mit Infrarot und Lichtverstärkung für klare Sicht bei Nacht und Nebel, mit einer Makrofunktion, damit ich z.B. den Belag auf der Zunge gleich an meinen Arzt, der irgendwo sein mag, übermitteln kann (und dem ein Computer aus einer Datenbank gleich ähnliche Bilder mit Diagnose und Therapievorschlägen vorlegt). Das bedeutet auch, dass alles was ein Mensch gerade sieht auch beliebigen anderen Menschen zugänglich gemacht werden kann, ja dass vielleicht überhaupt alles, was ein Mensch je hört oder sieht als eine Art “Supertagebuch” aufgezeichnet werden wird, das später nach verschiedensten Kriterien durchsucht werden kann. Natürlich benötigt das auch die Verwendung neuer Speichermedien. Die heutigen 20 Gigabyte Harddisks, die gerade noch einen Tag und eine Nacht als Film guter Qualität aufzeichnen könnten, werden ersetzt werden durch Speichergeräte mit einer millionenfach höheren Speicherdichte, die dann schon problemlos das ganze 150 jährige Leben von 20 Menschen aufzeichnen können. Ist das Science Fiction? Sicher nicht: in den BioNanotechnologielabors wird heute schon an Speicherdichten von 10 Terrabyte pro Quadratzentimenter gearbeitet, auf organisch basierenden Mikrokristallen basierend. Ein kreditkartengrosser Speicher dieser Art würde dann schon 500 Terrabyte Kapazität haben, also 25.000 Mal mehr als die 20 Gigabyte Harddisks. Und da reden wir von ca. 2020, nicht von heute in 100 Jahren! Bei der Wissenswiedergabe und Speicherung von Ton, Sprache, Film, dreidimensionalen Szenen etc. zeichnen sich also schon heute ganz wesentliche Umwälzungen ab. Über taktile und olfaktorische Ausgabegeräte wird geforscht: Computer werden in 100 Jahren auch auf diesem Weg mit uns kommunizieren. Die Kommunikationsrichtung Computer- Mensch ist gut absehbar. Die umgekehrte Richtung ist weniger offensichtlich. Natürlich werden Spracheingabe, Gestenerkennung, Eingabe durch Informationen über einfache Fingerbewgungen, Computer die hören und sehen und das Erlebte verarbeiten, aber auch subtilere Verfahren eine enorme Rolle spielen. Jeder der unter “Wearables” im WWW sucht wird sich rasch überzeugen können, dass enorm viel im Enststehen ist. Aber noch ist irgendwie abzusehen, was sich durchsetzen wird bzw. was die nächsten 100 Jahre an Eingabegeräten noch alles bringen werden. Insgesamt sind die Benutzerschnittstellen Mensch- Computer darum so schwer vorhersehbar, weil es nicht klar ist, wie weit eine direkte Verbindung der menschlichen Nervenbahnen mit Computern erwünscht ist. KAPITEL 9. KNOWLEDGE MANAGEMENT 147 Die medizinisch-technische Machbarkeit zeichnet sich am Beispiel der direkten Impulsübergabe an den Gehörnerv bei tauben Personen ab, oder durch die gedankliche Steuerung von einfachen Bewegungen wie Beinprothesen oder eines Computercursors: wie weit wird die Menschheit bereit sein, eine solche vollständige Symbiose mit Computern anzunehmen. Werden dafür die nächsten 100 Jahre reichen? Hervorragende Wissenschaftler wie Morawetz, Kurzweil oder Gershenfeld würden ein klares “Ja” sagen, ja würden bezweifeln, ober der Mensch als ca. 75 kg schweres Lebewesen überhaupt noch sinnvoll ist, oder eine noch viel weitergehende Verschmelzung Mensch/Machine nicht die offensichtlichere Zukunft ist? Klar ist, dass die Miniaturiserung von sehr mächtigen Computern mit den beschriebenen Benutzerschnittstellen und Funktionen so weit gehen wird, dass man sie z.B. einmal in das Loch in einem Zahn wird einpflanzen können. Die Übertragung der Signale zu und von den menschlichen Sinnesorganen könnte z.B. über die Leitfähigkeit der menschlichen Haut erfolgen, die Verbindung zu den Datennetzen drahtlos. Die notwendige Energie wird direkt aus der Energie des menschlichen Körpers gewonnen werden: dieser erzeugt in Ruhestellung ja immerhin 75 Watt. Ein Bruchteil wird für den Betrieb der notwendigen Elektronik genügen. Ob es dann in 100 Jahren tatsächlich Elektronik sein wird, oder Biochips, oder was ganz anderes, sind dann schon fast “kleine Details”. Werden dann Computer so intelligent wie Menschen sein? Auch dies ist letztlich eine eher esoterische Frage: das Lebewesen Menschheit wird eine so starken Symbiose Mensch mit Maschine sein, dass die Fähigkeit des ganzen Systems jedenfalls die Fähigkeit jeder Komponente weit übersteigt. Wieviel vom menschlichen Körper wird in 100 Jahren noch notwendig sein? Wird man biologische Ersatzteillager für nicht mehr gut funktionierende Organe oder Körperteile verwenden, oder wird fallweise das schwache Herz durch ein künstliches, die alten Beine durch eine mechanisch-biologisch-elektronische Variante, die sehr viel ausdauernder arbeitet, ersetzt werden? Werden wir weiterhin über zwei organische Augen die Umwelt optisch aufnehmen, oder werden wir durch eine Unzahl von kleinen Kameras nicht zwei Bilder sondern viele, fasst wie mit den Facettenaugen eines Insekts, in unser Gehirn pumpen wie dies in zahlreichen Versuchen schon heute getan wird? Und wie innig ist das Gehirn oder die daraus hervorgehenden Nervenstränge mit den weltweiten Computernetzen und damit auch mit anderen menschlichen Gehirnen verbunden? Man kann unzählige solche Fragen stellen. Antworten darauf können nur Spekulationen sein. Ich überlasse sie daher den Verfassern von Science Fiction Literatur. Was aber als einigermassen gesicherte These bestehen bleibt ist umwälzend genug um es nochmals zusammen zu fassen: durch die enge Vernetzung von Menschen und Computernetzen, und die wird sich zwangsweise in den nächsten 100 Jahren in unerhörter Weise weiterentwickeln, entsteht einerseits ein neues Lebewesen Menschheit, wie es ein solches noch nie gegeben hat; und wird andererseits jeder Mensch nicht nur Teil dieses Lebewesens, sondern erhält aus seiner persönlichen Sicht heraus eine Erweiterung des eigenen Gehirns in einem gewaltigen Ausmass, durch die direkte Kommunikation mit riesigen Wissensbeständen und anderen Menschen. 9.1.6 Wollen wir das alles? Viele Menschen sind faustisch: sie leben in einem tieferen Sinn nur dadurch, dass sie etwas erschaffen oder erforschen. So will ich an dieser Stelle Goethe interpretieren. Mao hat Ähnliches aber bescheidener gesagt: wenn er von der Notwendigkeit der dauernden Revolution gesprochen hat, dann meinte er damit, dass es für die Menschen keinen Stillstand gibt (vielleicht auch keine Fortschritt, was immer das ist), sondern dass Menschen Veränderungen benötigen, um sich zu verwirklichen, um zufrieden zu sein. Auf die Frage, warum man den Nordpol oder die Berge oder die Planeten “erobern” will, gibt es die klassische Antwort: weil sie da sind. All dies spricht dafür, dass vieles von dem was machbar ist, gemacht werden wird: nur grosse und unvorhersehbare negative Folgen können fallweise mögliche Entwicklungen bremsen, ändern oder verhindern. Die aufgezeigte wissensteilige Gesellschaft, die Wissensvernetzung ist nicht nur machbar sondern schon im Entstehen. Sie wird in 100 Jahren ein Faktum sein. Dass am Weg dorthin nicht nur technische Problme zu lösen sein werden, sondern auch Richtungsänderungen erfolgen können und fallweise erfolgen müssen um das menschliche Leben lebenswert zu erhalten, ändert das insgesamt entworfene Bild nicht wesentlich. KAPITEL 9. KNOWLEDGE MANAGEMENT 9.1.7 148 Zum Autor In Wien geboren, studierte Maurer Mathematik und Informatik in Österreich und Kanada. Nach einigen Ausflügen in die Industrie wurde Maurer Professor für Informatik, zunächst in Calgary, dann Karlsruhe, dann Graz, mit Gastprofessoren an vielen Stellen der Welt. Autor von über 500 Publikationen und 14 Büchern ist er Mitglied der Finnischen und der Europäischen Akademie der Wissenschaften. Er erhielt für seine Arbeit zahlreiche Auszeichnungen und ist heute als Vorstand zweier Multimedia Institute in Graz, und als wissenschaftlicher Leiter eines im Herbst 2000 gegründeten Forschungsinstituts für Knowledge Management tätig. Er ist Mitgründer und Vorsitzender des Aufsichtsrats der Knowledge-Management Firma Hyperwave. 9.2 Active Documents: Concept, Implementation and Applications E. Heirich (Massey University, Palmerston North, NZ, E.Heinrich@massey.ac.nz H.Maurer (Graz University of Technology, Graz, Austria hmaurer@iicm.edu) Abstract: In this paper we present the notion of “active document”. The basic idea is that in the future, users of documents in any networked system should not just be able to communicate with other users, but also with documents. To put it differently, we believe that communication in networks should be understood in a more general sense than it usually is. Although our notion will, at first glance, almost look like science fiction, we will show that good approximations can indeed be implemented. We conclude this short paper by pointing out a number of important applications of our new concept and mention cases where it has already been successfully applied. 9.2.1 The notion of active documents The idea behind active documents is very simple: whenever a user sees some information on the screen of a networked computer the user can ask (typically by typing) an arbitrary question ... and the document immediately provides the relevant answer. Putting it this way, the notion sounds impossible to implement (how can a document answer any conceivable question?), or at least sounds like an idea out of science fiction. However, although the idea cannot be fully implemented it is surprising how well it can be approximated in large scale distributed networks. The reason for this is that important documents are viewed by a very large number of persons, hence the same questions (albeit in possibly different wordings) come up over and over again. Indeed, experimental data with one of the first users of the Hyperwave eLearning Suite [2, 5, 6] confirms that after some 500 to 1000 users new questions come up only exceedingly rarely. Thus, the basic implementational idea behind active documents is simple: when new documents are added to a server, questions asked are initially answered by experts, ideally but not necessarily immediately and around the clock. All questions and answers are recorded in a database. As a new question is asked it is checked whether this question is semantically equivalent to an earlier one: if so, the system can provide the answer immediately. As the number of semantically new questions decreases (and indeed approaches almost zero) the experts become superfluous. In the very rare case that a really new question arises the system might answer apologetically: “This is a very good question. We will forward it to our experts and you will receive an answer by xxx the latest”. The crux of the matter is, of course, how is it possible to determine if two questions that may be worded quite differently are indeed semantically equivalent. How, to just present one example, can any software recognize that the question “Please explain to me how the picture compression techniques GIF, BMP KAPITEL 9. KNOWLEDGE MANAGEMENT 149 and JPG compare to each other” is really equivalent to “I do not understand the difference between GIF, BMP and JPEG coding”. In the next section we show that this task, as hopeless as it might seem at first glance, has indeed both pragmatic and systematic solutions. 9.2.2 The implementation of active documents The heuristic approach When a question is asked it is compared with some heuristic algorithm to find an earlier question that seems to be similar. Similarity can be determined by using a number of techniques that can become quite sophisticated: from comparing if different words match independently of their order ( like GIF and BMP in our example), to the use of synonyms (like JPG and JEPG), to stemming algorithms that take care of the flexion of words, to semantic nets, to syntactic analysis using such nets, a variety of techniques do exist that are surprisingly powerful. A typical example is the “LIKE” operator in the well-known search engine Verity that is able to identify with a high success rate pieces of text that are likely to have the same meaning. In each case, once the system has determined that the question x being asked is likely to be the same as a question y asked earlier, the system will say “Do you mean y”. It is now up to user to decide whether indeed the answer to this question y is what is desired or not. If not, the system may offer other alternatives, but if none satisfies the user, the apology mentioned earlier: “This is a very good question. We will forward it to our experts and you will receive an answer by xxx the latest” will be shown. As time goes by (in the sense that a document is visited by more and more persons) chances that a question is asked that is not only identical semantically but is also similar in form decreases, thus reducing the amount of time a human expert has to help out, and hence reducing the number of times a question is not answered immediately. The iconic approach Users ask questions by marking (with the cursor) some part of the screen (a formula, an abbreviation, a picture, etc.): their question refers to information in the marked area. When a question has been answered, some icon or highlighting shows to other users that other persons have asked questions concerning this piece of information and that experts have answered them. If another user also has a question concerning the material at issue, one click suffices to show all questions and answers that have occurred so far. Again, after sufficiently many users the chances are good that all questions of interest have indeed been answered. The iconic approach is clearly particularly easy to implement and has the advantage that semantically equivalent questions that are formulated in different ways will not often arise. Also, the advantage of this (and the other techniques relating to active documents) is that feedback is provided to the authors of documents as to where users have questions. After all, this may often mean that some explanation is not clear enough, information is missing, etc., hence allowing the improvement of the documents. The iconic approach has been sometimes belittled by just saying that this is not more than FAQ’s, and in a way it is, of course. However, the FAQ’s are not collected in a long unusable list but in a short list directly where the problems occur. If that list gets too long, something is likely to be wrong with the document, and the document should be improved. The linguistic approach The most satisfying approach to handle active documents would be to develop techniques that actually prove the semantic equivalence of questions. Remember, heuristic techniques can only provide guesses whether two questions are equivalent, they cannot prove their equivalence. Remember also that both the heuristic and iconic approaches use the intelligence of the user to determine whether previously asked questions are relevant or not. To actually prove that two pieces of text are semantically equivalent one would require a complete understanding of natural language, something still quite elusive. However, we can consider a compromise: KAPITEL 9. KNOWLEDGE MANAGEMENT 150 rather than allowing a full natural language we restrict our attention to a simplified grammar and to a particular domain for which an ontology (semantic network) is developed. Clearly, sufficiently restricting syntactic possibilities and terms to be used will allow to actually prove the equivalence of pieces of text. This approach has been investigated in the first author’s Ph.D. thesis (for somewhat different purposes [1] ). Attempts to adjust it to the active document situation are currently been carried out [7]. At this point in time the restriction on the wording of questions and the domain specificity are serious problems. It seems clear that this technique will not be suitable for the nave user, yet (as we will mention in the application section) there may well be situations when this linguistic approach is also useful. 9.2.3 Futher research Before turning our attention to the application of active documents let us point out that the concept is being applied successfully right now, yet there is room for much improvement. In the heuristic approach mentioned, algorithms trying to guess the equivalence of textual pieces still can and should be improved by incorporating both more powerful semantic networks and more syntactic analysis. Observe that the efforts in this area are, unfortunately, also quite language dependent! In the linguistic approach there are two somewhat contradictory aims that one still has to go after: on the one hand, the query syntax should be as natural as possible, on the other hand domain dependence should be reduced and the construction of the domain specific ontologies should be simplified. However, there are also other more intrinsic problems with active documents. We have stated that “really new” questions usually do not arise after a document has been used by some 500 to 1000 users. This figure comes from a large eLearning experiment with a multi-national company with some 200.00 employees, but is quite unrealistic in other contexts. Typically, the WWW or Intranets also contain information that changes over time. What we have discussed so far does not handle this situation at all. Just consider a page about skiing in Austria. At some stage someone has asked “How much snow can I count on” . The answer, whatever it may have been, to exactly the same question is likely to be different as soon as a day later. It thus seems to appear that the notion of active document is only applicable to fairly static information, and question-answer dialogues should be time-stamped so that they disappear automatically when they are invalid. Actually, the situation is better than this: an indirect step can alleviate the problems in some situations in a very elegant way. To be specific, the answer to the question “How much snow can I count on” should not be “30 inches” or such but rather “Find information on current skiing conditions under ’snow report’ “ , where ’snow report’ provides a link to another server that has indeed up to date information on snow depth, temperatures, etc. Another fairly deep problem is that the same question may require different answers depending on the circumstances. Again, an example shows best what can happen. The question “Please explain ISDN” could have as answer “ISDN stands for Integrated Services Digital Networks” and this might be sufficient for some persons. Others might expect much more than the explanation of what the abbreviation stands for! Future active documents should probable reply along the lines: “Do you want to know what the abbreviation stands for (choice a), do you want a short technical explanation (choice b), or a fairly detailed explanation (choice c)”. Clearly this is more work for the experts involved, it tends to blur the border between simple question and answer situations and eLearning on a broader scale, but it also shows that our initial claim that persons should be able to really communicate with documents is not that far fetched. Overall, the deeper one digs into applications of active documents the more does it become apparent that in a way much of the knowledge that now goes into more clever search engines, into language analysis and intelligent agents will also apply to active documents. Let us conclude this section by just making sure that two further points are understood: first, active documents are not supposed to be restricted to textual questions and textual answers: it is easy to allow arbitrary multimedia activities as answers to questions, and it is certainly conceivable to allow questions posed in the form of speech input or such, even if this is likely to make the recognition of semantically equivalent questions still more complicated; secondly, we have always said that questions are originally answered by “experts”. Surely also other users may answer questions being posed, yet somehow the level of competence of the person answering a question should be known to users. 4 Applications of the notion of active documents We have encountered the notion of active documents the first time in connection with eLearning experi- KAPITEL 9. KNOWLEDGE MANAGEMENT 151 ments [5, 2] and have found them to be very useful in this connection. Note that the “critical number” of users of the same document (we have quoted 500 - 1000 a number of times) will usually only be reached if the courseware at issue is offered on the WWW for a large audience, or in a substantial intranet, but will usually not be reached when using material for e.g. teaching typical university classes. However, even in this case, the mechanisms described eliminate many duplicate questions and are hence useful even if the “saturation level” is never achieved. It has become clear over time that the usefulness of active documents goes far beyond eLearning. Indeed we would like to claim that in the future every WWW or intranet system should assure that ALL documents are active. This helps users (who are otherwise frustrated by having to send emails when they have questions, often not knowing whom to send them to), eases the support work for those offering information or services, and provides valuable feed-back to the administrators of sites as to where users have problems. However, in addition to eLearning there are three other areas where active documents seem to be particularly useful: one is support for software, the other is in connection with help desks, and the third are digital libraries. Let us elaborate this again by means of examples. Suppose a company releases a new software product to a large number of (pilot) customers, with the corresponding documentation on the WWW. In the past, support staff would always receive a stream of questions of the type “On page x , line z from the top, in volume y of the documentation it says that the SW should act according to w, but it does not. Can you please help?”. Support staff would then have to consult volume y, go to page x, count to line z and examine the situation, only to find out that this bug had been pointed out many times before, and that the development team was already in the process of fixing the bug (or documentation). If each page of the documentation is an active document this situation does not occur: after the problem at issue is pointed out the first time, other customers have no need to ask the question any more, helping them and the support staff. The situation is similar in help-desk situations when customers do not understand a manual or such. There are two interesting additional aspects in this case, however. First, customers may ask the question not via an active document on the WWW but by telephone. Help desk staff may, however, now use the active document to find the answer to this question: after all the question may have been answered by a colleague at some earlier stage. Second, in this case the linguistic approach mentioned could be handy: the domain is limited, and the staff of the support center may well be expected to be able to translate customer queries into queries allowed by the linguistic approach. Thus, even a help desk person not capable of answering a question x, can translate it into x’ for the system, and the system might provide the answer that is then communicated to the user. We have argued in a separate paper [3] that active documents will also play a fundamental role in digital libraries in the future, since those libraries will turn more and more from static information repositories into interactively and collaboratively used centers of human knowledge. 9.2.4 Conclusion In this paper we have described the new notion of “active document”. We believe that already the first applications make it abundantly clear that this notion will play a major role in the intelligent exploitation of information and knowledge in computer networks. Much research and development remains to be done, yet even with what is available today in e.g. [2] much can be achieved! 9.2.5 References [1]Heinrich, E., Patrick, J., Kemp, E.: A Flexible Structured Language for the Coding of Human Behaviour - FSCL, Massey University Department of Information Systems Report 1 (1999) [2]www.hyperwave.com [3]Maurer, H: Beyond Classical digital Libraries; Proc. NIT conference, Beijing (2001), to appear. [4]Lennon, J.: Hypermedia Systems and Applications; Springer Pub. Co., Germany (1997) KAPITEL 9. KNOWLEDGE MANAGEMENT [5]www.gentle-wbt.com [6]Maurer, H.: Hyperwave - the Next Generation Web Solution; Addison Wesley Longman (1996) [7]Maurer, H.: Hyperwave - the Next Generation Web Solution; Addison Wesley Longman (1996) 152 Kapitel 10 Prüfungsfragen In diesem Teil werden mögliche Prüfungsfragen zur Vorlesung vorgestellt. Da der Schreiber aus eigener leidvollen Erfahrung weiss, dass Prüfungen in einer anderen als seiner Muttersprache nicht gerade einfacher werden (wer würde schon vom französischen Enlèvement des ordures ménagères auf “garbage collection” kommen), wurden alle Fragen so gut als möglich ins Englische übersetzt. 10.1 Internet • Wie funktioniert das Namenschema im Internet? Was ist ein Domain Name Service? How does the naming scheme in the internet work? What is a Domain Name Service? [07.07.2003] [24.06.2004] • Ist es möglich, auf einem Rechner verschiedene Server-Dienste (z.B. Mail und WWW) anzubieten? Wie unterscheidet man bei TCP/IP zwischen verschiedenen Diensten auf einem Rechner? Is it possible to provide different services (e.g. mail and WWW) on one server? How does TCP/IP distinguish different services on one server? [27.06.2001] [13.06.2003] [26.05.2004] • Warum hat sich TCP/IP als Internet-Protokoll durchgesetzt und kein anderes Protokoll? Welche Eigenschaft von TCP/IP macht das Internet relativ unabhängig gegen Ausfälle einzelner Knoten? Why did TCP/IP win the race as internet-protocol (and no other protocol)? Which quality of TCP/IP made the internet relatively independent against the breakdown of single nodes? [31.01.2001] [28.11.2003] [28.04.2004] [11.10.2004] • Welches Adressierungschema wird im Internet verwendet? Welcher Internet-Dienst ist zuständig für die Umsetzung von IP-Adressen auf Namen? Which addressing scheme is used in the internet? Which internet-service is responsible for the translation of IP-addresses to names? [21.03.2001] [03.10.2003] [24.11.2004] 10.2 Informationssysteme • Sind digitale Bibliotheken eine Erfindung der letzten 10 Jahre? Welche digitalen Bibliotheken kennen Sie und wann sind diese ungefähr entstanden? Are digital libraries an invention of the past 10 years? Which digital libraries do you know and approximately when were they invented? 153 KAPITEL 10. PRÜFUNGSFRAGEN 154 • Gibt es verschiedene Arten von Hyperlinks? Nennen Sie mindestens drei und erklären Sie deren Anwendungen. Are there different types of hyperlinks? Name at least three of them and describe their usage. • Welche Eigenschaften machten das World-Wide-Web (WWW) so populär? Erklären Sie die drei Wichtigsten. Which quality made the World-Wide-Web (WWW) so popular? Describe the three most important ones. [02.05.2001] [03.10.2003] [23.01.2004] [12.07.2004] • Ihre 82jährige Grossmutter hat sich kürzlich einen Computer gekauft und fragt Sie jetzt, welche Suchmaschine (welchen Typ) Sie ihr empfehlen würden. Begründen Sie ihre Empfehlung! Your 82year old grandmother just bought a computer and asks you, which search engine (which type of search engine) you would recommend. Explain your recommendation! [26.09.2001] [28.11.2003] • Warum ist es im Internet so schwierig, Informationen zu finden? Why is it difficult to find information in the internet? • Wer oder was ist “Veronica”? Welche Möglichkeiten bot Veronica, die es vorher noch nicht gegeben hat. Who or what is “Veronica”? What previously unknown possibilities did Veronica offer to users? • Muss sich der Ersteller von Web-Seiten selbst darum kümmern, dass seine Seiten von Suchmaschinen indiziert werden? Erklären Sie Ihre Antwort(en). Does the creator of web-pages himself has to worry about that his pages are indexed by search engines? Explain your answer(s). [21.03.2001] • Welche Internetdienste machen schon länger Gewinne und wie machen sie dies? Ist dies positiv für die Benutzer, oder gibt es auch Nachteile? What kind of internet-services have been making money for some time and how do they do it? Is this only positive for users, or are there any disadvantages? • Welche Kategorien von Suchmaschinen gibt es? Erklären sie deren Grundprinzipien in wenigen Sätzen. What types of search engines are there? Explain the fundamental principles in a few sentences. [14.11.2001] [03.06.2002] [15.01.2003] [26.05.2004] • Was unterscheidet einen Indexsuchdiest von einem Katalogsuchdienst? Welchen davon würden Sie Ihrer 82jährigen Grossmutter empfehlen? Warum? What is the difference of index-based search engines and those based on a catalog? Which one would you recommend your 82year old grandmother? Why? [23.01.2002] [09.07.2002] [12.07.2004] • Was ist ein Robot/Spider ? Welche Internettechnologie verwendet einen solchen? Wozu? Was ist seine Aufgabe? What is a robot/spider ? Which internet technology is using one of those? What for? What is his job? [17.04.2002] [23.01.2004] • Welche Schwierigkeiten haben Robots/Spider beim Durchstöbern von Webseiten zu meistern? Welche Massnahmen kann der Web-Seiten-Gestalter ergreifen, um einem solchen Robot/Spider seine Aufgabe zu erleichtern. What problems are facing robots/spiders when they are collecting data in web-pages? What can be done by the creator of the web-page to faciliate this task for the robot/spider? [26.09.2001] [25.09.2002] [16.12.2002] KAPITEL 10. PRÜFUNGSFRAGEN 155 • Erklären Sie das Prinzip von Meta-Suchmaschinen. Welche Vor- und Nachteile hat eine Suche mit Hilfe einer solchen Meta-Suchmaschine? Explain the principle of meta search engines. Which advantages and disadvantages does searching with such a meta search engine have? [13.06.2003] [24.06.2004] • Erklären Sie das Prinzip von Agenten im Zusammenhang mit Suchmaschinen (keine Geheimdienststories bitte :-)). Explain the principle of agents in connection with search engines (no crime stories please :-)). • Wie funktionieren Recommendation Systeme? Wo werden sie hauptsächlich verwendet. Warum? How does recommendation systems work? Where are they used primarily? Why? [27.06.2001] • Welche Möglichkeiten gibt es, Suchergebnisse von Suchmaschinen zu reihen (Ranking)? Erklären Sie eine davon etwas genauer. Which possibilities are there to rank the search results of search engines? Explain one of these methods in detail. [31.01.2001] [17.12.2001] [06.11.2002] [18.03.2003] [07.07.2003] [28.04.2004] Bemerkung: Den ersten Teil der Frage nicht vergessen! Für die volle Punkteanzahl reicht es nicht, z.B. PageRank zu beschreiben. Auch andere Rankingmethoden müssen zumindest erwähnt werden! • Wie funktioniert das Ranking von Suchergebnissen bei Google? Welche Web-Seiten werden bei Google in den Suchergebnissen höher positioniert? How does the Google ranking algorithm work? Which Web pages get better ranking in Google search results? [11.10.2004] • Warum wurde Google so eine Erfolgsgeschichte? Auf welchen grundliegenden Eigenschaften vom Web wurde das Google Ranking basiert, um bessere Suchergebnisse zu erzielen? Why did Google become such a great success? Which are the basic properties of the Web that the Google ranking algorithm is based on? How Google makes use of these properties to achieve better results ranking? [24.11.2004] • Was ist Google Bombing? Kann man damit bessere Positionierung von Web-Seiten in den Suchergebnissen bewirken? Wie wird dieses Problem bei anderen Suchmaschinen (Teoma) bewältigt? What is Google Bombing? Can yopu achieve better ranking of your Web pages with Google bombing? How do other search engines (Teoma) solve that problem? • Welche Möglichkeiten gibt es, nach Multimediadaten (Bildern, Videos, ...) zu suchen? Welche davon wird hauptsächlich von Suchmaschinen verwendet? Warum? Which possibilities are there to search for multimedia data (images, videos, ...)? Which one is used primarily by search engines? Why? [02.05.2001] • Der Computergenerierte Kontext (Wissensnetzwerk) des “Brockhaus Multimedial 2001” verwendet verschiedene Kriterien, um ähnliche Artikel zu finden. Erklären Sie diese kurz. The computergenerated context (the knowledge network) of the “Brockhaus Multimedial 2001” uses different criteria to find matching articles. Explain them with a few sentences. • Welches Problem ergibt sich für ein Informationssystem beim Speichern von vielen kleinen Dateien (z.B. Bildern und ihren Thumbnails)? Wie lässt sich dieses Problem umgehen? Which problem does an information system face when storing lots of small files (e.g. images and their thumbnails)? How can this be circumvented? KAPITEL 10. PRÜFUNGSFRAGEN 10.3 156 Markup Languages • Erklären Sie kurz das Grundprinzip von Markup-Sprachen. Explain in a few sentences the fundamental principle of markup languages. [03.10.2003] • Was beschreiben “Verallgemeinerte oder beschreibende Auszeichnungen (generalized or descriptive Markups)”? Nennen Sie die Vorteile dieser Auszeichnung. What are generalized or descriptive markups describing? Explain the advantages of this kind of markups. • Was definiert SGML? Was nicht? What is SGML defining? What doesn’t it define? • Was sind Entities in HTML/SGML? Wozu werden sie gebraucht? What are Entities in HTML/SGML? What are they used for? • Was legt eine Document Type Definition (DTD) fest? Wie bezeichnet man ein SGML-Dokument, das sich an diese DTD hält? What does a Document Type Definition (DTD) define? How do you call an SGML-document, that conforms to this DTD? • Welche Vorteile/Nachteile haben clientseitige Skripte (z.B. JavaScript) gegenüber Serverseitigen (z.B. JSP, PHP, ASP, ...)? Which advantages/disadvantages have client-side scripts (e.g. JavaScript) in comparison to server side extensions (e.g. JSP, PHP, ASP, ...)? • Wozu dienen Cascaded Style Sheets (CSS)? Welche Eigenschaften einer HTML-Seite können sie beeinflussen? What are Cascaded Style Sheets (CSS) for? Which properties of an HTML-page can they influence/change? [21.03.2001] [13.06.2003] [11.10.2004] • Muss zum Ändern des Layouts von HTML Seiten (z.B. Schriftgrösse von Überschriften, ...), die mit Cascaded Style Sheets (CSS) arbeiten, der HTML-Code der Seite selbst verändert werden? Warum bzw. warum nicht? You wan to change the layout (e.g. fontsize of headlines, ...) of HTML-pages that are defined with Cascaded Style Sheets (CSS). Do you have to change the HTML-code of the page itself? Why? Why not? [07.07.2003] [26.05.2004] • Kann man HTML und XML direkt vergleichen? Wo liegen die Haupt-Unterschiede dieser beiden Markup Sprachen? Are HTML and XML direktly comparable? Where are the main differences of these two markup languages? [02.05.2001] [15.01.2003] [23.01.2004] [24.06.2004] • HTML beschreibt ja mehr oder weniger den Aufbau einer Seite. Was sollte XML beschreiben? Wozu dient diese Beschreibung? HTML describes more or less the structure of a page. What does XML describe? What is this description good for? [27.06.2001] [17.04.2002] [03.10.2003] • Beschreiben Sie die Vorteile und Nachteile von XML gegenüber HTML. Describe the advantages and disadvantages of XML versus HTML. [26.09.2001] [03.06.2002] [22.05.2003] [12.07.2004] KAPITEL 10. PRÜFUNGSFRAGEN 157 • Wie unterscheidet sich die XML-Syntax von der HTML-Syntax? Describe the differences between the syntax of HTML and XML. [28.11.2003] [24.11.2004] • Erstellen Sie eine (kurze) Adressliste (wie in einem Telefonbuch) in XML und beschreiben Sie an Hand dieser die Unterschiede von XML im Vergleich zu HTML. Create a (short) list of addresses (like in a phone book) in XML and use it to describe the differences to XML and HTML. [09.07.2002] [16.12.2002] [07.07.2003] [28.04.2004] [11.10.2004] • Wozu verwendet man Attribute bei XML? Gibt es eine Regel, wann Daten in ein Attribut und wann eher in ein eigenes Tag zu verpacken sind? Welche Vorteile/Nachteile hat man bei Verwendung von Attributen gegenüber eigener Tags? What are attributes used in XML for? Is there a general rule when to use an attribute and when to use a tag for some data? Describe the advantages/disadvantages of the usage of attributes versus the usage of tags? [21.03.2001] [23.01.2002] [18.03.2003] [23.01.2004] [24.11.2004] • Wozu dient eine Document Type Definition (DTD) bei einem XML-Dokument? Muss für jedes XML-Dokument eine DTD erstellt werden? What is the Document Type Definition (DTD) of a XML-document used for? Is it necessary to create a DTD for every XML-document? [26.09.2001] [17.04.2002] [28.11.2003] [24.06.2004] • Welche Möglichkeiten gibt es bei XML festzulegen, welche Tags vorkommen dürfen und wie diese verschachtelt werden können? Welche der beiden Möglichkeiten ist ihrer Meinung nach vorzuziehen? Warum? What possibilities are there to define the allowed tags of an XML-document and how these tags can be nested? Which one (of the two) would you prefer? Why? [14.11.2001] [25.09.2002] [22.05.2003] • Welche Vorteile/Nachteile haben XML-Schemas gegenüber einer Document Type Definition (DTD)? Welche Art von Definition ist mächtiger? What are the advantages/disadvantages of XML-schemas in comparison to a Document Type Definition (DTD)? What kind of definition is more powerful? [17.12.2001] [06.11.2002] • Was sind Processing Instructions bei XML? Wozu werden sie benutzt? What are Processing Instructions in XML? What are they used for? [17.12.2001] [09.07.2002] • Was ist die Extensible Stylesheet Language (XSL)? Wozu wird sie benutzt? What is the Extensible Stylesheet Language (XSL)? What is it used for? [31.01.2001] [16.12.2002] • Welche Möglichkeiten bietet die Extensible Stylesheet Language (XSL) zur Transformation von XML-Dokumenten? Which possibilites does the Extensible Stylesheet Language (XSL) provide to transform XMLdocuments? • Erklären Sie kurz die Extensible Stylesheet Language (XSL). Aus welchen Teilen besteht XSL und wozu dienen diese? Describe the Extensible Stylesheet Language (XSL). What parts is XSL made of and what are they used for. [14.11.2001] [03.06.2002] [25.09.2002] [22.05.2003] [26.05.2004] KAPITEL 10. PRÜFUNGSFRAGEN 158 • Wozu wird XPath bei Extensible Stylesheet Language (XSL) verwendet? What is XPath of Extensible Stylesheet Language (XSL) used for? [12.07.2004] • Wie kann die Kombination XML/XSL verwendet werden? Muss eine XSL-Transformation immer auf dem Server erfolgen oder macht sie auch beim Client Sinn? Ist es im Moment sinnvoll, an einen User Agent (Browser) XML/XSL zu senden? How can the combination of XML/XSL be used? Must the XSL-transformation always happen on the server? Does it make any sense to do it on client as well? Does it make any sense to send XML/XSL to a user agent (browser) at this point of time? [13.06.2003] [28.04.2004] 10.4 Digital Audio • Was versteht man beim Digitalisieren (von Audiodaten) unter Aliasing? Welche andere Fehlerquellen gibt es beim Digitalisieren? What is meant by Aliasing when digitizing audio-data? What kind of other sources of errors are there? [31.01.2001] [26.09.2001] [17.04.2002] [16.12.2002] [13.06.2003] [28.04.2004] • Beschreiben Sie kurz verlustlose und verlustbehaftete Kompressionsarten für Audio-Daten. Welche Effekte werden bei der verlustbehafteten Audiokompression ausgenützt. Describe lossless and lossy compression-methods for audio data. Which effects are used for lossless audioßcompression? [03.06.2002] [06.11.2002] [22.05.2003] [23.01.2004] [24.11.2004] • Welche grundlegenden Arten von Kompression von Audiodaten gibt es? Zählen Sie einige Beispiele beider Arten auf und beschreiben Sie sie kurz. Which fundamental types of compression of audio-data are there? Give some possibilities of both types and describe them in a few sentences. [07.07.2003] • Ein Lied von 3 Minuten Länge wird digitalisert und dann mit MP3 komprimiert. Die Digitalisierung erfolgt mit folgenden Werten: Stereo (2 Kanäle), 16bit Auflösung, 44kHz Sampling Rate. Die Umwandlung ins MP3 Format geschieht mit 128kbit/sekunde (konstante Bitrate). Wie gross ist die unkomprimierte Datei, wie gross die komprimierte (in Kilobytes. Zur Einfachheit: 1 Kilobyte = 1000 Bytes)? A 3 minute song is digitized and converted/compressed to mp3-format. Digitizing is done in stereo (2 channels), 16bit resolution, 44kHz sampling rate. The mp3 compression uses 128kbit/seconds (constant bitrate). What is the file size of the uncompressed, what of the compressed song (in kilobytes). For simplicity use 1 kilo byte = 1000 bytes)? [18.03.2003] [28.11.2003] [26.05.2004] [11.10.2004] • Welche Phänomene des menschlichen Gehörs werden bei verlustbehafteten Kompressionsalgorithmen von Audiodaten ausgenutzt? Which phenomena of the human ear are used/exploited by lossy compression algorithms of audiodata? [21.03.2001] [17.12.2001] [09.07.2002] [15.01.2003] [24.06.2004] • Kann man sagen, dass ein Kompressionsverfahren für Audiodaten besser ist als ein anderes? Warum? Warum nicht? Beschreiben Sie kurz, wo das eigentliche Know-How bei verlustbehafteten Kompressionsalgorithmen für Audiodaten liegt. KAPITEL 10. PRÜFUNGSFRAGEN 159 Is it possible to state that one compression algorithm for audio-data is better than another? Why? Why not? Describe in a few sentences where the ’real’ know-how of lossy compression algorithms for audio-data is. [02.05.2001] [03.10.2003] [12.07.2004] • Was unterscheidet MIDI von anderen Audio-Formaten? Wozu wird MIDI hauptsächlich verwendet? What is the main difference between MIDI and other audio-formats? What is MIDI used for mainly? [27.06.2001] [14.11.2001] [25.09.2002] 10.5 Digital Images • Welche Eigenschaften des menschlichen Sehapparates (Auge, Signalverarbeitung Auge-Gehirn, ...) gilt es beim Design von Informationssystemen zu beachten? Warum? Which qualities/properties of the human visual perception (eye, signal processing eye-brain, ...) should be kept in mind when designing information systems? Why? • Beschreiben Sie kurz die verschiedenen Farbmodelle und deren hauptsächliche Anwendung. Describe in a few sentences the different color models and their main usage. [07.07.2003] [28.04.2004] • Wieviel Speicherplatz benötigt ein digitales unkomprimiertes Rasterbild mindestens? Das Bild hat folgende Eigenschaften: Breite = 1024 Pixel, Höhe = 768 Pixel, 8 bit Farbtiefe je Farbkanal bei Verwendung des RGB-Farbmodells. Die Grösse ist in KiloBytes (1 kbyte = 1024 bytes) anzugeben. Es muss zumindest eine kurze Formel angegeben werden, anhand derer der Rechengang erkennbar ist! Wie verändert sich die Dateigrösse, wenn sowohl Höhe als auch Breite durch 2 dividiert werden? Calculate the minimal memory consumption of a digital uncompressed raster image. The image has the following properties: width = 1024 pixel, height = 768 pixel, 8 bit color depth per channel (RGB color model). The size must be given in kilobytes (1 kbyte = 1024 bytes). There must be given at least a short formula, so the way of the calculation is visible! How does the file size change, when height and width are divided by 2? [31.01.2001] [02.05.2001] [14.11.2001] [23.01.2002] [06.11.2002] [22.05.2003] [24.11.2004] • Beschreiben Sie kurz das Grundprinzip der LZW-Komprimierung. Muss die Code-Tabelle (Wörterbuch) mitgespeichert werden? Warum? Warum nicht? Describe in a few sentences the fundamental principle of the LZW-compression-algorithm. Is it necessary to store the code-table (dictionary) as well? Why? Why not? [21.03.2001] [06.11.2002] [03.10.2003] [26.05.2004] • Beschreiben Sie kurz das Prinzip der Lauflängencodierung (RLE). Welche Probleme können bei dieser Art von Kodierung enstehen? Wie können diese gelöst werden? Describe in a few sentences the fundamental principle of the Run-Length-Encoding (RLE). What problems might occur when using this kind of coding? How can they be solved? [27.06.2001] [23.01.2002] [23.01.2004] • Beschreiben Sie kurz das Prinzip der Huffman Codierung. Welche Vorteile und Nachteile hat diese Codierung? Describe in a few sentences the fundamental principle of Huffman-Coding. Which advantages/disadvantages does this coding has? [31.01.2001] [17.04.2002] [15.01.2003] • Beschreiben Sie kurz das Prinzip der verlustfreien JPEG-Kompression. Describe in a few sentences the fundamental principle of the lossless JPEG-compression. [14.11.2001] [18.03.2003] KAPITEL 10. PRÜFUNGSFRAGEN 160 • Beschreiben Sie kurz das Prinzip der verlustbehafteten JPEG-Kompression (ohne Formeln). Warum wird bei dieser Kompression das YUV (bzw. YIQ) Farbmodell verwendet? Welcher Schritt ist der Verlustbehaftete? Describe in a few sentences the fundamental principle of the lossy JPEG-compression (no formulas needed). Why is the YUV (resp. YIQ) color model used in this algorithm? Which part of the algorithm is ’lossy’ ? [26.09.2001] [16.12.2002] [28.11.2003] [28.04.2004] [11.10.2004] • Für welche Daten sind verlustbehaftete Kompressionsverfahren ungeeignet bzw. wann können keine verlustbehafteten Kompressionsverfahren eingesetzt werden? Warum? For which data are lossy compression algorithms not applicable? When can lossy compression algorithms not be used? Why? • Beschreiben Sie die Vor- und Nachteile der verlustbehafteten JPEG-Kompression. Für welche Bilder (Bildtyp) eignet sich diese gut, für welche weniger gut? Warum? Describe the advantages/disadvantages of the lossy JPEG-compression. For what images (type of images) is it well usable, for what less usable? Why? [23.01.2002] [17.04.2002] [18.03.2003] [24.05.2004] [24.06.2004] • Vergleichen Sie den “alten” JPEG-Standard mit JPEG-2000. Welche Eigenschaften hat JPEG-2000 verbessert? Compare the “old” JPEG-standard with JPEG-2000. Which qualities were improved in JPEG2000? [03.06.2002] [09.07.2002] • Sie möchten ein digitales Photoalbum Ihrer letzten Urlaubsreise ins Web stellen. Welches der folgenden Graphikformate verwenden Sie: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Warum? Warum nicht? Geben Sie Begründungen für jedes der obigen Dateiformate! You want to put your digital photoalbum of your last holiday into the web. Which of the following image formats (file formats) would you use: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Why? Why not? Give arguments for each of the given file formats. [12.07.2004] • Sie möchten eine Linien-Graphik ins Web stellen. Welches der folgenden Graphikformate verwenden Sie: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Warum? Warum nicht? Geben Sie Begründungen für jedes der obigen Dateiformate! You want to put a line-drawing into the web. Which of the following image formats (file formats) would you use: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Why? Why not? Give arguments for each of the given file formats. [17.12.2001] [22.05.2003] • Sie möchten eine Linien-Graphik (3 Farben) in ein Dokument einbinden. Das Dokumentenformat unterstützt folgende Grafikformate: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Welches davon verwenden Sie? Warum? Warum nicht? Geben Sie Begründungen für jedes der obigen Dateiformate! You want to put a line-drawing (3 colors) into the document. The document-format supports the following graphic types: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Which one would you use? Why? Why not? Give arguments for each of the given file formats. [03.06.2002] [15.01.2003] • Welche Vorteile/Nachteile hat das Bildformat Portable Network Graphics (PNG) gegenüber GIF? Which advantages/disadvantages has the file format Portable Network Graphics (PNG) in comparison to GIF? [25.09.2002] [13.06.2003] KAPITEL 10. PRÜFUNGSFRAGEN 161 • Erklären Sie kurz, wie beim Bildformat PNG Interlacing funktioniert. Welche Vor- und Nachteile hat die Verwendung von Interlacing (bei PNG)? Describe in a few sentences how interlacing works in the file format PNG? Which advantages/disadvantages has the usage of interlacing (of PNG)? [02.05.2001] [16.12.2002] • Welche grundlegend verschiedenen Methoden gibt es, Bilder/Graphiken zu speichern? Sind alle unabhängig vom verwendeten Betriebssystem? Für welche Art von Bildern eignet sich die jeweilige Methode am besten? Beschreiben Sie kurz die Vor- und Nachteile der jeweiligen Methoden. Which fundamentally different methods are there to store images/graphics? Are they all independent of the used operating system? Which method suits which images best? Describe in a few sentences the advantages/disadvantages of the methods. • Welche Vor- und Nachteile hat das Vektorformat Scalable Vector Graphics (SVG) gegenüber anderen Vektorformaten und welche gegenüber anderen Rasterbildformaten? Which advantages/disadvantages has the vector format Scalable Vector Graphics (SVG) in comparison to other vector formats und which in comparison to other raster image formats? [27.06.2001] • Wozu dienen digitale Wasserzeichen und wie funktionieren sie? What are digital watermarks used for and how do they work? 10.6 Digital Video • Warum arbeitet das analoge Fernsehen mit 50 Halbbildern pro Sekunde? Wie kommt man auf diese Zahl? Warum Halbbilder? Why does the analog television work with 50 halfframes per second? Why 50? Why halfframes? • Welche Vor- und Nachteile hat digitales Video gegenüber analogem Video? Which advantages/disadvantages has digital video in comparison to analog video? • Was ist ein Codec und wozu wird er bei digitalem Video verwendet? What is a Codec and what is it used for in digital video? [21.03.2001] [03.10.2003] [26.05.2004] • Für welchen Zweck wurden die Videokompressionsstandards nach H.261 und H.263 entwickelt. Welche Bedingungen wurden durch diesen Zweck gestellt? For which purpose were the video-compression-standards H.261 and H.263 developed? Which requirements were derived from this purpose? • Was sind Intraframes, Predicted Frames und Bidirectionally Predicted Frames und wozu dienen sie? What are Intraframes, Predicted Frames und Bidirectionally Predicted Frames and what are they used for? [31.01.2001] [27.06.2001] [23.01.2002] [09.07.2002] [18.03.2003] [24.06.2004] [24.11.2004] • Werden die Frames bei MPEG Video in der gleichen Reihenfolge übertragen, in der sie aufgenommen wurden? Warum? Warum nicht? Erklären Sie auch kurz die verschiedenen Frame-Typen und deren Sinn. Are the frames of MPEG video transmitted in the same order as they are recorded? Why? Why not? Explain in a few sentences the different frame-types and their usage. [02.05.2001] [26.09.2001] [03.06.2002] [16.12.2002] [07.07.2003] [12.07.2004] KAPITEL 10. PRÜFUNGSFRAGEN 162 • Welche Unterschiede/Gemeinsamkeiten haben die Videostandards Motion JPEG (MJPEG) und MPEG2 ? Beschreiben Sie auch die Vor-/Nachteile der jeweiligen Formate. Describe the differences and common things of the video-standards Motion JPEG (MJPEG) and MPEG2. Give advantages/disadvantages of these formats as well. [17.12.2001] [17.04.2002] [25.09.2002] [15.01.2003] [28.11.2003] [11.10.2004] • Kann von einem Video-Dateiformat auf die verwendete Kompressionsmethode (Codec) geschlossen werden, oder ist es möglich, verschiedene Arten von Daten in (verschiedenen) Dateien (z.B. Quicktime-Movie-Dateien) zu speichern? Is it possible to determine the used compression method just by knowing the video-file format or is it possible to store different kinds of data in (different) files (e.g. Quicktime-Movie-files)? • Beschreiben Sie kurz die grundlegenden Eigenschaften und vor allem die Unterschiede von MPEG-2, MPEG-4 und MPEG-7. Give a short description of the characteristics and especially the differences of MPEG-2, MPEG-4, and MPEG-7. [22.05.2003] • Wozu dient die Synchronized Multimedia Integration Language (SMIL)? Welche Möglichkeiten bietet SMIL? What is the Synchronized Multimedia Integration Language (SMIL) used for? Which possibilities does SMIL provide? [31.01.2001] [14.11.2001] [06.11.2002] [23.01.2004] 10.7 Serverseitige Technologien • Welche Vor- und Nachteile haben dynamische gegenüber statischen Webseiten? Which advantages/disadvantages have dynamic web pages in comparison to static ones? • Eine bestehende Applikation, die in C++ geschrieben ist, soll mit einem Webserver gekoppelt, dynamische Webseiten generieren. Welche Technologie (serverseitige Erweiterung) wählen Sie und warum? An already available application (written in C++) should be coupled to a web-server to generate dynamic web-pages. Which technology (server side extension) do you choose? Why? • Eine bestehende Java (!) Applikation, soll mit einem Webserver gekoppelt, dynamische Webseiten generieren. Welche Technologie (serverseitige Erweiterung) wählen Sie und warum? An already available java (!) application should be coupled to a web-server to generate dynamic web-pages. Which technology (server side extension) do you choose? Why? [26.09.2001] [13.06.2003] [12.07.2004] • Beschreiben Sie kurz das Grundprinzip und die Vor- und Nachteile von CGI. Describe in a few sentences the fundamental principle and the advantages/disadvantages of CGI. [27.06.2001] [09.07.2002] [07.07.2003] [26.05.2004] • Ist es möglich, eine in Prolog/Algol68/Pascal geschriebene Anwendung als dynamischer Webseitengenerator einzusetzen? Mit Hilfe welcher Technologie (serverseitige Erweiterung) würden Sie dies angehen? Warum? Is it possible to use an application that is written in Prolog/Algol68/Pascal to generate dynamic web pages? Which technology (server side extension) would you choose? Why? • Welche Methoden gibt es bei HTTP, Parameter (Argumente, Benutzereingaben, ...) an eine serverseitige Anwendung zu übergeben? Welche Vor- und Nachteile haben diese? Which possibilities are there in HTTP to hand over parameters (arguments, user input, ...) to a serverside application? Which advantages/disadvantages do they have? [14.11.2001] [23.01.2002] [06.11.2002] [15.01.2003] [03.10.2003] [24.06.2004] KAPITEL 10. PRÜFUNGSFRAGEN 163 • Ist die Übergabe von Parametern (Argumenten, Benutzereingaben, ...) an eine serverseitige Anwendung mit irgendwelchen sicherheitsrelevanten Überlegungen gekoppelt? Auf was müssen Sie besonders achten? Are there any security concerns to obey when handing parameters (arguments, user input, ...) to a serverside application? What has to be kept in mind? • Beschreiben Sie kurz die Unterschiede und Gemeinsamkeiten von Java Servlets und Java Server Pages (JSP). Wann entscheiden Sie sich eher für die eine, wann für die andere Technologie? Describe the differences and common features of Java Servlets and Java Server Pages (JSP) in a few sentences. When do you use/prefer the one or the other technology? [02.05.2001] [18.03.2003] [28.11.2003] [24.11.2004] • Lassen sich Active Server Pages (ASP) mit Java Server Pages (JSP) vergleichen? Beschreiben Sie kurz die Gemeinsamkeiten bzw. Unterschiede. Is it possible to compare Active Server Pages (ASP) with Java Server Pages (JSP)? Describe the differences and common features in a few sentences. [15.01.2003] • Lassen sich Active Server Pages (ASP) mit Java Servlets vergleichen? Beschreiben Sie kurz die Gemeinsamkeiten bzw. Unterschiede. Is it possible to compare Active Server Pages (ASP) with Java Servlets? Describe the differences and common features in a few sentences. [31.01.2001] [17.12.2001] [25.09.2002] • Lässt sich CGI mit Java Servlets vergleichen? Beschreiben Sie kurz die Gemeinsamkeiten bzw. Unterschiede. Wann würden Sie welche Technologie einsetzen? Is it possible to compare CGI with Java Servlets? Describe the differences and common features in a few sentences. When would you use/prefer the one or the other technology? [17.04.2002] [03.06.2002] [16.12.2002] • Sie möchten eine Datenbank in eine dynamische Webseite integrieren (Abfragen und Ausgaben). Welche server-seitige Erweiterung verwenden Sie und warum? You want to integrate a database in a dynamic web-page (requests and results). Which serverside extension do you use? Why? [13.06.2003] [28.04.2004] • Was sind Cookies? Wo werden sie gespeichert? Wozu dienen sie? What are Cookies? Where are they stored? What are they used for? [21.03.2001] [23.01.2002] [09.07.2002] [18.03.2003] • HTTP ist ein Protokoll, das für jede Anfrage eine neue TCP/IP-Verbindung aufbaut bzw. aufbauen kann. Welche Probleme resultieren daraus für Betreiber von Webservices und wie können diese gelöst werden? Beschreiben Sie die grundlegenden Lösungsverfahren (low-level) und nicht die, die z.B. von PHP angeboten werden (die aber auch auf den low-level Lösungen basieren). HTTP is a protocol that establishes (may establish) a new TCP/IP connection for every request. Which problems result in this behaviour for web-site providers and how can they be solved? Describe the fundamental solutions (low level) and not the high-level ones provided by e.g. PHP (but that nevertheless use the low-level methods). [31.01.2001] [17.12.2001] [25.09.2002] [22.05.2003] [23.01.2004] [11.10.2004] • Sie möchten WML-Dokumente für WAP-fähige Geräte anbieten. Welche Teile sind beteiligt, damit Ihre Dokumente auf einem WAP-Gerät angezeigt werden können? Welche davon müssen Sie selbst zur Verfügung stellen? You want to provide WML-documents for WAP-devices. Which parts are involved so your documents can be displayed on a WAP-device? Which of those do you have to provide? [06.11.2002] KAPITEL 10. PRÜFUNGSFRAGEN 10.8 164 Bonus Fragen Bonus Fragen werden bei Bedarf und Laune als Zusatzfragen eingesetzt und auch bei Bedarf und Laune mit Punkten bewertet. • Bonusfrage: Wie haben Sie ihre Ferien verbracht und was davon würden Sie im nächsten Jahr nicht wieder tun. ;-) Bonus Question: How did you spend your holidays and what activity wouldn’t you repeat during your next year’s holidays. ;-) • Beschreiben Sie ein alkoholhaltiges/alkoholfreies Getränk, das besonders gerne während der kalten Jahreszeit im Freien genossen wird. Describe a drink (with or without alcohol) that is consumed prefereably during the cold season in the open. [14.11.2001] Originelle Antworten: – (Matthias Rüther): Glühwein.... Erlauben verlängerte Aufenthalte im Freien in der Winterzeit und haben somit hohen gesundheitlichen Nutzen – (Klaus Eder): <xml:document> <winter ort="im Freien"> <Getraenk> <Name>Tee</Name> <Preis>25</Preis> <Alkohol in %>5<Alkohol in %> <Milch>ja</Milch> </Getraenk> </winter> </xml:document> – (Rene Vouri): Alkoholhaltiges Getränk: [...] Sehr beliebt bei Studenten und der KopfwehtablettenIndustrie. Alkoholfreies Getränk: in der Südoststeiermark geächtet und nur auf dem Schwarzmark erhältlich. Bewiesene Einnahmen wird durch soziale Ächtung bis hin zum Entzug der südoststeirischen Staatsbürgerchaft bestraft. – (Host Ortmann): ∗ ∗ ∗ ∗ ∗ Punsch, Grog oder Glühwein alle 3 auch in alkoholfreier Form verfügbar (nicht W3C konform!) fuer n ≥ 5 treten extreme Aliasingeffekte auf fuer n ≥ 10 gute Kompression im auditiven Bereich (man hört nur mehr 31 ) fuer n ≥ 15 garbage collection – [...] Jagatee (Tee: wurscht war für einer, Hauptsache viel Rum/Schnaps) [...] (Sandra Weitenthaler) • Bonusfrage: Beschreiben Sie kurz die Unterschiede und Gemeinsamkeiten vom Weihnachtsmann und dem Christkind. Welche “Technologie” würden Sie für Ihre Kinder verwenden? Warum? Ist es möglich, eine Parallel-Installation durchzuführen? Bonus Question: Describe in a few sentences the differences and common features of Santa Claus and the Christkind. Which “technology” would you choose for your own children. Why? Is it possible to do a parallel-installation? [17.12.2001] Originelle Antworten: KAPITEL 10. PRÜFUNGSFRAGEN 165 – (Markus Schwingenschlögl): Der gewichtigeste Unterschied dürften wohl der 150kg Vorsprung vom Weihnachtsmann sein. ad Parallelinstallation: [...] seit Windows und Linux auf einem PC laufen ist sowieso gar nichts mehr unmöglich! – (Dirk Martin): Beide sind die ersten Versuche, Suchmaschinen für Kinder zu implementieren. [...] Der Weihnachtsmann hat eine (schöne?) graphische Oberfläche bekommen. – (Robert Aschenbrenner): Beides sind serverseitige Erweiterungen für XMS Seiten. [...] heavyweight Process Weihnachtsmann [...]. [...] das laute “HO HO HO” des Weihnachtsmannes würde das leise Klingeln des Christkindes maskieren. – (Willibald Krenn): wenn das Christkind mit SGML vergleichbar wäre, kann der Weihnachstmann mit HTML gleichgesetzt werden. – (Michael Gissing): [...] Der Weihnachtsmann war früher grün, wurde aber von Coca-Cola aus Marketing-Techniken in rot umgefärbt. [...] Christkind wird vom Weihnachtsmann aber gemobbt, sodass am absteigenden Ast. – (Josef Brunner): Für meine Kinder (ich hoffe, dass es meine sind) [...] – (Joachim Reiter): [...] das Christkind ist immer früher dran, weil der Weihnachtsmann das Reniter verpasst hat. – (Robert Fritz): [...] CK reitet auf einem Kamel – (Johannes Glückshofer): [...] man sieht dauernd besoffene Weihnachtsmänner, die keinen guten Eindruck hinterlassen. – (Stephan Wagner): Sowohl Weihnachtsmann als auch Christkind sind XMAS-Server [....]. Weihachtsmann zeichnet sich durch Plattformunabhängigkeit aus [...]. – (Klaus Stranacher): [...] Eine Abhilfe könnte in Zukunft die open-source Entwicklung “Weihnachtskind” bringen. – (Helfried Tschemmernegg): [...] Durch das hohe Alter des Weihnachtsmannes ist mit dessen Pensionierung in nächster Zeit zu rechnen. [...] – (Christian Trenner): [...] fette Weihnachtsmänner quälen sich durch russverschmutzte Kamine [...] Flugverkehr verunsichernden Fortbewegung mithilfe von Rentiergezogenen Schlitten [...] – (Gerhard Sommer): [...] Das Christkind ist meiner Vorstellung nach ein Tannenbaum, grün, sehr schön geschmückt und hat einen Weihnachtsstern ganz oben auf der Spitze. – (Thomas Oberhuber): [...] das Ur-Christkind wurde im Jahre Schnee von der katholischen Kirche entwickelt, und drei Jahre später in der RFC-CK-JS+3 veröffentlicht und empfohlen. [...] Der Weihnachtsmann wurde von einem grossen Getränkehersteller entwickelt [...]. [...] katholische Kirche hat nach eigenen Angaben mehr Juristen als Priester [...] ad Parallelinstallation: unbedingt zuerst den Weihnachtsmann und erst dann das Christkind installieren. Denn setzt sich der Weihnachtsmann aufs Christkind, isses weg!! – (Jari Huttunen): The original versions of these “technologies” originate from Finland (Lapland). Other products are pirate versions! • Bonusfrage: Sie stocken bei der Frage nach der Speicherplatz des digitalen Bildes aus Abschnitt 10.5. Was tun Sie? [SCNR] 1. Meine Lösung ist 18.874.368bytes, weil ich den Unterschied zwischen Bit und Byte nicht kenne und auch keine Ahnung habe, was das Prefix “kilo” heisst. 2. Ich rufe meinen Bruder/Schwester/Lehrer/Friseur an, der/die war schon immer besser im Rechnen 3. Meine Lösung ist 1024∗768∗3∗8 . 1024∗8 “Kürzen” und “Einheiten” sind mir Fremdworte. 4. Was ist ein “Farbmodell”? Bonus Question: You’re stuck at the question for the memory consumption in Abschnitt 10.5. What are you doing? [SCNR] 1. My solution is 18.874.368bytes, because I do not know the difference between bit and byte and I haven’t got the faintest clue, what the prefix “kilo” means. KAPITEL 10. PRÜFUNGSFRAGEN 166 2. I call my brother/sister/teacher/hairdresser, he/she was always better in algebra. 3. My solution is 1024∗768∗3∗8 . I don’t know what “cancel” and “unit” means. 1024∗8 4. What is a “color model”? Originelle Antworten: – (Gunther Laure) Rechnet man das jetzt mit dem Euro immer ganz gleich? – (Helmut Adam) (b) Rufe Prof. Mikolasch an - der wird es über irgendeine Gaussberechnung mit mehrdimensionaler Pivotauswahl schon schaffen. – (Harald Auer) (b) [...] Der Telefonjoker fällt mangels Handy aus. Das Saal Publikum kann auch nicht weiter helfen: statistische Genauigkeit wegen der geringen Anzahl (Anm.: nur 8 Prüfungsteilnehmer) nicht gegeben). – (Kevin Krammer) (b) oder (c) Ich verwende den Publikumsjoker. – (Wolfgang Lazian) Eigentlich fehlt hier die Option 50:50 Chance und die Publikumsfrage. Nachdem aber der Prüfungscharacter aufrecht erhalten werden soll, werde ich mal über mein WAP-Handy meiner 82-jährige Grossmutter ein SMS schicken. Diese sitzt ja nun Tag und Nacht vor dem Blechtrottel [...] um diverse Frage der lieben Bekanntschaft in ihre Suchmaschine einzutippen. [...] Wenn sie nichts findet, soll sie doch mal ihren Nachbarn fragen, der Maurer heisst. Der weiss es sicher. – (Andreas Schlemmer) Ich frage meine 82 jährige Oma, die wird die Lösung mit Hilfe eines Suchdienstes im Internet finden. • Bonusfrage: (diesmal rekursiv!) Welche Bonusfrage würden Sie sich selbst stellen, und wie würden Sie diese beantworten? Bonus Question: (recursive!) Which bonus question would you ask yourself and what would you answer? Originelle Antworten: – (Guido Pinkas): x"’ a b x" x’ – – – – Wenn ich mich im Zustand a befinde und nur durch die Transition x0 (Finden einer Lösung zu dem in a gestellten Problem) in den Zustand b gelange, wobei ich durch Transtition x00 (Finden einer weiteren Lösung des Problems) immer noch in Zustand b bin, kann ich dann annehmen, dass ich die Bedingungen erfüllt habe um zu Transition x000 (Finden eines Beweises für die in Zustand b gewonnenen Lösungen) in den Zustand a zu wechseln? Das Modell beinhaltet keinen eindeutigen Endzustand. Q.E.D. (Guido Pinkas): Wozu soll ich eine Antwort auf eine Frage geben, wenn ich ja weiss, dass das Stellen dieser Frage die Beantwortung derselben inkludiert? (Chen Feng): kompliziertes Chinesisches Schiebespiel, (Anmerkung: zu kompliziert zum Abzeichnen, sorry.) (Marc Samuelsson): What do you do when in doubt while grading? - Simple, get better grade. (Gerald Aigner): Was war zuerst da, das Ei oder das Huhn? function ueberlege { call ueberlege } – (Karin Mitteregger): Was ist das hässlichste Tier der Welt und in welchem Format würden Sie ein Bild davon abspeichern? A: Ein Schabrackentapir und natürlich im JPG-Format bei extrem starker Kompression um das hässliche Ding verschwinden lassen zu können. KAPITEL 10. PRÜFUNGSFRAGEN 167 – (Andreas Klausner): War es wirklich notwendig, zur Beantwortung der Bonusfrage eine neue Seite zu beginnen? Nein, da sie nur der Unterhaltung dient und nur im Zweifelsfall Punkte bringt. – (Andreas Rath): Meine Bonusfrage wäre zu fragen, welche Bonusfragen man sich selbst fragen würde. Die Antwort auf diese Frage würde die Frage nach der Frage der Bonusfrage sein. – (Mario Grünwald, Leonhard Kormann, Mario Polaschegg (gleiche Frage, leicht unterschiedliche Antwort)): Frage: Welche Bonusfrage würden Sie sich selbst stellen, und wie würden Sie diese beantworten? Antwort: Welche Bonusfrage würden Sie sich selbst stellen, und wie würden Sie diese beantworten? Anmerkung: Terminiert wenn 1. Die Frage unverständlich geworden ist. 2. Die Frage anders beantwortet wird (das ist aber nicht sicher). – (Philip Hofmair): Bonusfrage = Frage nach der Bonusfrage (Frage nach der Bonusfrage) Ich frage mich, wieso fällt mir keine Bonusfrage ein? • Bonusfrage: (diesmal wieder rekursiv!) Finden Sie diese Bonusfrage sinnvoll? Bonus Question: (recursive again!) Do you find that this bonus question makes sense? [03.06.2002] Originelle Antworten: – (Wolfgang Auer): Finden Sie! diese Bonusfrage sinnvoll? – (Florian Eisl:) Bonusfrage(a) { If a = "?" then Bonusfrage(?); Else End: } Bonusfrage ("?"); – (Andreas Gautsch:) Der Sinn einer Frage liegt in der Antwort! – (Albert Strasser:) Ich nehm die Substitutionsmethode: “Finden Sie diese Finden Sie diese Finden Sie diese ...” Stack Overflow – (Martin Moschitz:) Wenn ich die notwendigen Punkte für die bessere Note mit dieser Antwort bekomme, dann JA. Wenn nicht, dann ist die Antwort NEIN, weil ich mir zumindest ein paar Minuten Gedanken über die Frage gemacht habe, welche mir dann fürs Ausbessern der Prüfungsfragen (um die bessere Note zu bekommen) gefehlt haben. – (Marko Kovacic:) ∗ Finde ich diese Bonusfrage sinnvoll, so finde ich sie sinnvoll. ∗ Suche ich diese Bonusfrage sinnvoll und finde sie nicht sinnvoll, so suche ich diese Bonusfrage sinnlos und finde sie sinnlos. – (Hanno Rasin-Streden:) Ja, diese Bonusfrage kann sinnvoll aufgefunden werden. 1. Sie ist mit ausrechendem Kontrast gedruckt. 2. Das kursiv geschriebene “Bonusfrage” erweckt Aufmerksamkeit, was das Auffinden erleichtert. KAPITEL 10. PRÜFUNGSFRAGEN 168 3. Die Bonusfrage ist durchgehend in Deutsch gehalten. 4. Sie steht auf der Vorderseite in lesbarer Schriftgröße. Bonusfrage, die nicht sinnvoll gefunden werden können, wären etwa solche in weißer, hebräischer 2-Punkt-Schrift auf der Rückseite der Prüfungsangabe. – (Thomas Edlinger:) natürlich → wenn man diese Frage in Frage stellen würde, dann müßte man das auch bei den anderen 8 machen → macht man das, müßte man das bei allen Prüfungen tun und dann stellt sich die Frage: Ist die Prüfung sinnvoll? → Stellt man sich diese Frage kommt man zu: Ist das Fach sinnvoll? → Ist das Studium sinnvoll? ... → Ist das Leben sinnvoll? bzw. Hat das Leben einen Sinn? Oder Was ist der Sinn des Lebens? ... – (Markus Flohberger:) function sinnvoll begin printf("Was tua I do? Wos bringt ma des? Warum ich?"); sinnvoll; end – (Thomas Trattnigg:) Die Antwort kann immer nur so sinnvoll wie die Frage sein. ;-) – (Michael Scharnreitner:) Zur Untersuchung deses Problems machen wir uns die Grundeigenschaften der menschlichen Psyche zunutze, und da explizit die HABGIER. Wir reduzieren (verlustbehaftet, aber für den Mensch nicht nachvollziehbar) auf: ⇒ Bringt diese Frage möglicherweise Punkte? Dieses Problem ist inklusive fertiger Lösung in der Prüfungs-Ordnungs-Lib gespeichert und liefert ⇒ JA als Lösung des reduzierten Problems, und somit als Lösung des gestellten Problems! • Bonusfrage: Beschreiben Sie, was und warum Ihr Traumurlaubsziel ist und warum Sie nicht hinfahren würden. Bonus Question: Describe your dream holiday destination and why you would not travel there. [03.06.2002] • Bonusfrage: Beschreiben Sie in fünf (laut)malerischen Worten eine Ihrer Lieblingstätigkeiten. Eine Erklärung, um welche Tätigkeit es sich handelt ist nicht unbedingt notwendig :-) Beispiel: mpffffluck glugg gluggg gluggggg ahhhhhh (Bier aufmachen und trinken). Bonus Question: Describe in five onomatopoeic words one of your favorite activities. A description of the activity is not compulsory :-) Example: mpfffluck glugg gluggg glugggg ahhhhh (Open beer and drink it). [09.07.2002] Originelle Antworten: – (Gerhard Zingerle): wosch wusch wich voaam iech wup wup wummp plums grrr (Jonglieren) – (Martin Halda): hüstel sprint hooo wucht hüstel (schwitz) - Volleyball spielen (zumindest versuchen) – (Michael Schmid): bum rap rap tap tap (Firmentür abschließen und gehen) – (Klaus Schauch): klick knister klick klick grgrgrgr (Fernseher einschalten, zappen, einpennen) – (Mario Schermann): mp4fluck glu2g glu3g glu5g a6h (Tätigkeit ist lauflängenkodiert) – (Norbert Thek): click click clikelick click click (Je nach Interpretation, Surfen oder Computerspielen - bei zweiterem gehören noch Explosion, Todesschrei und sonstige Geräusche eingefügt.) – (Andreas Martischnig): jajahhh jaajah ohhhh jaaaa aahhh (Wer nun an etwas schweinisches debkt, mein Gedanke war genau der gleiche.) KAPITEL 10. PRÜFUNGSFRAGEN 169 – (Martina Franke): schlürfschlürf knirsch raschl schnarch KRACH (Das Bett war leider vom XXX-L*tz.) – (Martin Mayer): pieppiep ssssssss klickklickklick summ! – (Hans Jürgen Gammauf): mhhh schleck schmatz schleck mhhh – (Martin Pirker): gngngngngn knaaaaarz klack-klack aaaaaaahhhhhhh ....... ssssssshhhhhhhh (Verschlafen, zur Uni hetzen, den Tag brav in der Uni verbringen, den ganzen Tag an die verpaßte Morgentoilette denken und die Lieblingstätigkeit: ∗ ∗ ∗ ∗ ∗ – – – – – gerade noch zurückhalten Tür Klo zusperren Erleichterung! Nachspülen Wenn man dringend muß dann auch können - unüberboten. OK, vielleicht wars auch ne “Scheiß”frage..... (Josef Zehetner): pieppieppiep iiiääkh knacks mmmmmahhhh mmmmhhhhh (Karl Voit): drück schnurr klick schau freu! (PC einschalten, Booten (zum leichteren Verständnis ist Einlogvorgang außen vor gelassen worden), Mausklick auf Bookmark von Nerd-Clippings (http://www.ash.de/nerdclippings/), Lesen der täglich neu erscheinenden Comics zur Hebung der Moral, falls alle Gags den Weg von der Netzhaut zum emotionalen Teil meines Kleinhirns geschafft haben, löst das zumeist Freude oder Schmunzeln aus) (Martin Loitzl): patsch patsch patsch patsch wuuusch (mit viel Anlauf und möglichst großer Wasserverdrängung ins Wasser springen und dabei den Applaus/Verärgerung der umliegenden Badegäste ernten.) (Stephan Weinberger): schrieck gulggulpgilp klink crack schlürf (Martini-Flasche aufschrauben, einschenken, Eiswürfel, zerspringt aufgrund therm. Spannungen, do it!) (Robert Zöhrer): shssssch ..... ssshsssch ..... ssschssch (schlafen) • Bonusfrage: Gibt es ein Leben vor dem Tod? Nehmen Sie allgemein dazu Stellung und berücksichtigen Sie das aktuelle Wetter. Bonus Question: Is there life before death? Discuss this topic in general and take the current weather into consideration. [25.09.2002] Originelle Antworten: – (Norbert Pramstaller): Die Frage, ob es ein Leben vor dem Tod gibt, sollte man als Katholik mit nein beantworten. Als Katholik glaubt man aber an das Leben nach dem Tod [...]. Nur die obige Aussage als Techniker zu beantworten ist einfach: Wenn es ein Leben nach dem Tod gibt, muss es auch ein Leben vor dem Tod geben, also ein geschlossenes System bilden. Kurzum: Katholizismus und Technik - ein totaler Widerspruch! [....] – (Michael Thonhauser): Ob es ein Leben vor dem Tod gibt ist aus meiner jetzigen Situation heraus mit ja zu beantworten. Zwar ist jetzt ein Bezug zum Wetter schwer herzustellen (vielleicht hat ja während der letzten 45 Minuten die Sonne zu scheinen begonnen=, aber trotzdem kann ich hierzu anmerken, dass mir vor dieser Prüfung bewusst wurde, dass es ein Leben vor dem Tod gibt (und zwar durch die Kälte und Nässe auf dem Weg hierher). – (Christoph Rissner): Wenn man an ein Leben nach dem Tod glaubt, so ist die Gesamtzahl der Leben nach dem Tod viel grösser als jedes Leben vor dem Tod. Daraus schliesse ich: Nein (uabh. vom Wetter) – (Bernhard Tatzmann): Auf Grund der anhaltenden Regenfälle der letzten Tage ist zur Zeit ein Leben vor dem Tod nur in eingeschränkter Form möglich Zu dieser Jahreszeit beschränkt sich dann das Leben vor dem Tod auf Internetsurfen und DVD-Schauen. Vorhanden ist es aber in jedem Fall auch wenn man es nicht immer bemerkt, da sich die Menschen dann in ihre Häuser zurückziehen. Viel offensichtlicher wird es an sonnigen Herbsttagen. Dann strotzt die Stadt nur so von “Leben vor dem Tod”. KAPITEL 10. PRÜFUNGSFRAGEN 170 • Bonusfrage: Welche neue Prüfungsfrage sollte bei der nächsten Prüfung von Multimediale Informationsysteme gestellt werden? Bonus Question: Which new question should be asked at the next exam of Multimedia Informationsystems? [06.11.2002] Originelle Antworten: – (Helfried Tschemmernegg): (aus aktuellem Anlass): Beschreibe eine Möglichkeit, die teilweise polaren Temperaturen in den Hörsälen i11 - i13 auf ein angenehmes Niveau zu heben (unter Berücksichtigung extrem begrenzter finanzieller Mittel :-) bzw. beschreibe einen Workaround, um trotz dieser Temperaturen nicht krank zu werden. Ernsthafter: Welches Grundprinzip taucht sowohl bei verlustbehafteter Audio- als auch Bild/VideoKompression immer wieder auf (Lsg: Beschneiden des Frequenzspektrums) – (Martin Lechner): Sie haben ein WAP fähiges Handy mit üblicher Bildschirmauflösung (200 x 100). Wozu wollen Sie ins Internet? – (Christoph Mayr): Welche 7 Fragen möchten sie nicht beantworten um mit einer schlechten Antwort der verbleibenden achten Frage trotzdem die volle Punktezahl zu erreichen? – (Gerd Wurzer): Ist mir eigentlich wurscht, weil ich hoff, dass i net dabei sein werd. Oba wennst scho frogst sprich i mi eineutig dir a lustigere Bonusfrage aus! Woswasi, sowia bilden sie die Quersumme der aus allen Ziffern auf dem Angabeblatt bestehende Zahl. Is gor net so wenig, I glaub 117. – (Christoph Herbst): Bei der Beantwortung dieser Frage werde ich mich wohl zurückhalten müssen, um nicht von meinen Komilitonen für neue Fragen verantwortlich gemacht zu werden. Das könnte ja zur vituellen Steinigung in news.tugraz.flames führen und das versuche ich zu vermeiden. • Bonusfrage: Vergleichen Sie die die Flugeigenschaften von Christkind und Weihnachtsmann. Berücksichtigen Sie dabei auch die Glühweinstandln, die auf dem Weg liegen. Bonus Question (sorry, very hard to translate this time: Vergleichen Sie die die Flugeigenschaften von Christkind und Weihnachtsmann. Berücksichtigen Sie dabei auch die Glühweinstandln, die auf dem Weg liegen. [16.12.2002] Originelle Antworten: – (Andreas Kresitschnig): Ich glaube, dass das Christkind die besseren Flugeigenschaften hat. ∗ kleiner, beweglicher, ... ist ja noch ein Kind ∗ Kinder bekommen nur den Kinderpunsch ∗ Christkind ist für mich weiblich, und Frauen haben sowieso mehr Gefühl ⇒ auch beim Fliegen! ∗ Ausserdem hat der Weihnachtsmann keine windschlüpfrige Kleidung! Das Christkind hat nur ein Seidenkleid → keinen “Reibungs”Verluste in der Luft. – (Katrin Amlacher): Unter Berücksichtigung dvon Glühweinständen, hat eindeutig der Weihnachtsmann die besseren Karten. Erstens verträgt er dank seiner Leibesfülle sehr viel des Getränks und zweitens ist der Weihnachtsmann nicht selbst für die Navigation zuständig. Er muss nur sicherstellen, dass seine Rentiere nichts zu trinken bekommen. Allerdings könnte die Trefferquote der Schornsteine besorgniserregend sinken. Da das Christkind nur spärlich bekleidet ist, ist eine zusätzliche Wärmequelle von Vorteil. Leider ist das Christkind für die Navigation selbst verantwortlich, was Bäume, Antennen und dergleichen zum ernsthaften Problem machen. – (Werner Rohrer): Die Flugeigenschaft beim Christkind ist auf jeden Fall besser als beim Weihnachtsmann, bei dem sich der Wind im Bart verfängt. [...] Da ich mich nicht mehr entsinnen kann, ob mehr Weihnachtsmänner oder Christkinder am Glühweinstand zu finden waren, werde ich diese Erkundung sofort einholen. KAPITEL 10. PRÜFUNGSFRAGEN 171 – (Christoph Fröschl): Aufgrund starten Treibens am 24 in den Einkaufszentren (wo auch die Glühweinstandln sind) hat der Weihnachtsmann mit seinem überdiemensionalem Fluggerät sicher Platz- bzw. Parkprobleme. Ich halte das Christkind sowieso für in der Evolution einen Schritt weiter (siehe Fluggeräte, bzw. Sichtbarkeit). – (Wolfgang Fiedler): Es müsste ja heissen “Flugeigenschaften von Christkind und Rentierschlitten”, weil der Weihnachtsmann nicht fliegen kann! (Viel zu schwer, grosser Sack (eh klar, wenn er nur einmal im Jahr “kommt”! :), keine Flügel, ...) • Bonusfrage: Was würde eine Schneeflocke sagen, wenn sie sprechen könnte. Beschreiben Sie im Speziellen auch die Aussagen von Schneeflocken in Adelboden (z.T. aus Frankreich importiert) nach dem Comeback von Hermann Maier. Bonus Question: What would a snow flake tell you, if it could speak. Also describe the particulary case of snow flakes in Adelboden (partially imported from France) after the comeback of Hermann Maier (world famous Austrian skier, who had a motorcycle accident 22 months ago. In his first reace yesterday in Adelboden he was 3 seconds behind). [15.01.2003] Originelle Antworten: – (Bernhard Rettenbacher): Ihr könnt mir den Buckel runterrutschen. – (Konrad Lanz): Dieser Tage kommen wir alle unter die Räder und jeder rutscht auf uns herum. Aber der Hermann ist auch ohne Schnee gerutscht und trotzdem rutscht auch er auf uns herum. Naja, französische Schneeflocke müsste man sein, da hat man dann seine Ruhe. – (Carlos Schady): I live in Madrid so if I ever come to meed a snow flake and s/he could talk to me, s/he would say “I’m melting!!!”. – (Alexander Hubmann): Ich schätze mal wenig. Sie ist ja schliesslich beschäftigt, mit den Zähnen zu klappern und zu frieren. Haben ja schliesslich wenig an, die armen Dinger. Und wenn sie sich dann aneinander kuscheln und ihnen endlich warm wird, tauen sie im wahrsten Sinne des Wortes auf. – (Martin Antenreiter): Beim Schneefall: “AAAAHHHHHHH!”, in Adelboden, nachdem Hermann Maier über sie gefahren ist: “AUA, AUA, ... merde”. – (Wolfgang Schriebl): class Schneeflocke extends MMIS { public void say() { switch(weather_) { case(bombastic_freezy): println("Schön ist es auf der Welt zu sein."); break; case(let_the_water_freeze): println("Naja, gerade noch im Mass."); break; case(se_big_comeback_or_the_great_herminator): println("Es kann nur einen geben. I’ll be back"); break; } } } – (Roland Pierer): “Monsieur Maier? Je ne connais pas Maier! Je prefere Luc Alphaud! Mon Dieu, les Autrichiens sont victorieux tout les temps.” – (Johannes Fellner): Eine Schneeflocke zur anderen: “Host in Hermann heit obi schiassn gsegn? I glaub, der wird wieda ganz wie früha!” - “Is eh gscheida, weil den Sotz ’gemma zu dir oder zu mir’ aus der Raiffeisen-Werbung hot eh kana mehr auskoitn” KAPITEL 10. PRÜFUNGSFRAGEN 172 – (Stefan Achleitner): “Quelle dommage!” – (Marco Sergio Andrade Leal Camara): From my point of view, it is very good that hte snow flakes do not talk, because there are so many of them, if all would talk, not even our brainquality of selecting the sound would saves us from getting crazy. Besides that, they would always complain becasue they are falling, because they are stepped over, that someone is throwsing them, because they lost identity on the gig white, because it’s cold, because it’s hot and they are melting. Hermann Maier did his training in South America, where the snow flakes are speaking spanish. Now he has a big communication problem with the french speaking snow flakes. He has to improve his snow flake language! – (Georg Varlamis): Flokke Götte mit erhobener Faust: Habe nun, ach Wolke, Himmel und leider auch SMOG duchaus passiert mit heissem Bemühn da lieg ich nun, ich arme Flocke, plattgedrückt, von Hermanns Hocke... Dialog mit Sohn Jacques: Ich lag nun da, bei Eis und Wind getrennt von Vater Flokkenkind ich hatt’ mein’ Knaben wohl im Arm er war sehr sicher, es war nicht warm. Mein Sohn, was birgst du so bang dein Gesicht siehst Vater du den Hermann nicht? den Hermann Maier mit schiefem Bein? Mein Sohn, er wirds nur einmal sein - denn musst du, willst du zwei mal fahren sein kleiner 30 - vom Platz, nicht Jahren! – (Kurt Köstenbauer): Ich mag im nächsten leben eine medizinische Schraube sein. – (Andreas Nebenführ): Schneeflöckchen: “Asta Lavista Baby” Herminator: “I’ll be back!” – (Johannes Rainer): Was gehen mich Ermann Maiar an, diese dreckige Schüft, machen Werbung für Milka Ice Schokolade, woe er doch genaus wissen, Schokolade aus Fronsee sein viel bässer. ... • Bonusfrage: Welchen Titel könnte ein würdiges Nachfolgelied (2004) des heurigen Song-ContestLieds von Alf Poier haben? • Bonus Question: What is missing in the Cultural Capital of Europe 2003 (Graz :-)? [18.03.2003] Originelle Antworten: – (Daniel Blazej): Hansi Hinterseer singt in Pelz-Moonboots “Weil das Tier zählt”. – (Christian Kargl): Von 2004 bis 2014 wird Ö vom Song Contest wegen Beleidigung der Grundidee ausgeschlossen. – (Ewald Griesser): Wenn man letzter wird, braucht man sich um ein Nachfolgelied 2004 sowieso keine Gedanken machen. – (Florian Heuberger): “84 Jahre auf dem Buckel - surft schon fest mit Googel (!)” (Ähnlichkeiten mit Ihrer Grossmutter (die ja nicht zu altern scheint1 ), sind natürlich weder gewollt noch zufällig. 1 obwohl 1 21 Jahre zwischen Prüfungen war sie immer 82? KAPITEL 10. PRÜFUNGSFRAGEN 173 – (Johann Konrad): ... Es wäre mal Zeit für was typisch österreichisches! z.Bsp.: Walzer verpackt in Techno oder Rock, oder eine neue Interpretation des Radetzkymarsches :-) – (MIchael Ebner): Bei einem kühlen Blonden im Parkhaus ist mir ziemlich egal, was da gesungen wird :-) – (Philipp Berglez): Titel für Alf Poier: “Stille” oder “Wer wählt mich” – (Martin Bachler): Nächstes Jahr muss von allen Interpreten die amerikanische Bundeshymne gesungen werden... – (Markus Quaritsch): Wir werden mit dem heurigen Lied sicher 2004 nicht Teilnehmer sein. Titel für den Song-Contest 2005 “Des is da ’Warum die Österreicher immer letzter werden’ Blues” so auf die Art von Hans Söllner vielleicht?? – (Christoph Thumser): Ich hab leider ein Problem, der Name “Alf Poier” sagt mir nichts, da ich aber vermute, dass der Name aus der Schlagerszene kommt. Aber ich hab einen Freund, mit dem ich neulich mal gefrühstückt hab, und der ist ein ziemlicher Folklore-Mensch. Und als er dann die von meiner Mutter selbstgemachte Marmelade gekostet hat, sagte er “Do schmeckt ma die Sun aussa!” – (Markus Geigl): Nicht nur den Titel, sondern den ganzen Text hab ich schon im Kopf! Ein kleiner Auszug: Hey Du, Ti Amo! Strophe: Es war Sommer, die rote Sonne versank im Meer, ich saß allein und du kamst einfach zu mir her, wie lange hab’ echte Liebe ich vermißt! und wie der Sommerwind hast du mich dann geküßt! Refrain: Hey Du, ti amo, ich liebe Dich! Hey Du, ti amo, vergiß mich nicht! Der Sommer mit Dir war so schön! Warum nur, musstet Du gehn? usw., usf. Dieser Text unterliegt natuerlich noch strengster Geheimhaltung! Außerdem untersteht der dem Urheberecht! – (Daniel Gander): Ich hätte mir nicht erwartet, dass die Bonusfrage die einzige ist, die ich nicht beantworten kann. Wie lautet denn der Titel von heuer? – (Christian Mayrhuber): Nach dem heurigen Song Contest wird von allen teilnehmenden Staaten anerkannt, dass dieser sinnlos ist und es gibt keinen Song Contest 2004. ... – (Gerald Eigenstuhler): “Oh du peinliches Österreich” – (Ranub Dalkouhi): Der wohl passendste Titel ob der aktuellen Umwelt und Kriegssituation wäre: “Weil der Mensch sich verrechnet hat!” (Hoffentlich hab ich mich nicht verrechnet :-) – (Christian Kirchstätter): ... Wenn wir aber gewinnen wollen, dann müssen wir auf altbewährtes mit einem österreichischen Touch setzen. Udo Jürgens hat schon einmal gewonnen, eines seiner Lieder ist “Griechischer Wein”. Treten wir mit “Wou, ist der steirische Wein gut, Wuff Wuff” an. – (Philipp Fürnstahl): Liedtitel “Ich muss heim, weil jetzt meine Putzfrau kommt!” Wenig kreativ, aber wahr... • Bonusfrage: Warum wollen gerade Sie (und sonst niemand) mit Hilfe dieser Bonusfrage Bonuspunkte bekommen? Bonus Question: Why do you (just you and nobody else) want to get some bonus points for this bonus question? [22.05.2003] Originelle Antworten: KAPITEL 10. PRÜFUNGSFRAGEN 174 – (Hannes Wornig): 8930496 – (Heim Schwarzenbacher): Weil ich weiß, dass ich es bei Armin Assinger bei der Einstiegsfrage nicht schaffe um damit auf den heißen Stuhl zu kommen und wenigstens dort 1 Million Euro abzuräumen. – (Michael Grabner): Sollte ich wirklich punkten, so möchte ich mein Punkte an Alf Poier weitergeben. – (Florian Fleck): Wenn es wirklich so ist, dass nur eine Person die Vorteile der Bonusfrage genießen wird, dann sollte es nicht ich sein. Ich bin glaube ich zwar schon “Prüfungsverzweifelt”, aber es scheint mir im Raum doch noch einige andere zu geben, die noch verzweifelter als ich sind. Außerdem bin ich ein positiv denkender Mensch und hoffe nicht auf die Bonusfrage angewiesen zu sein. – (Thomas Krajacic): Warum wollen Sie, (und nur Sie) das wissen? – (Franz Einspieler): Wenn nicht ich, wer dann? – (Gerald Krammer): In dubio pro reo – (Wolfgang Wagner): Nach 30min Nachdenken, bin ich zum Schluss gekommen, dass ich so sehr einfallslos und fantasielos bin, mir keine vernünftige Antwort einfällt, und daher Bonuspunkte eigentlich überhaupt nicht verdiene. Also bleibt nur ein Grund, warum ich vielleicht doch 1-2 Pünktchen bekommen sollte: MITLEID – (Bernhard Schütz): 1. Weil ich es diesmal (2ter Versuch für MMIS) zu 100% ohne Abschreiben und Schummeln probiert habe. 2. WEil die Punkte sicher wichtig sind für eine positive Note. 3. WEil mich Günther Laure und Wolfgang Lazian (Telematiker) noch 2 Monate aufziehen, wenn ich MMIS wieder nicht pack. 4. Weil Sowieso. 5. Warum “Thanks for the Fish”, ist das so einer, der an der Wand hängt, sich bewegt und “don’t worry, be happy” singt? [...] – (Katharina Seke): Weil unter den Leuten, die hier mit mir im HSi12 sitzen und die MMIS Prüfung schreiben, keiner soviel Angst vor der Bonusfrage hat wie ich. Da die Bonusfrage hauptsächlich Ihrer und meiner Unterhaltung dient, kann ich es trtzdem schaffen mir das Lachen zu verkneifen (harte Arbeit) und nicht wie verrückt am BOden herumzukugeln. Außerdem habe ich Kaffee über genau diejenigen Seiten des Skriptums geschüttet, auf denen MPEG2, MPEG4 und MPEG7 erklärt wurde. Das hat auch noch den Hund meiner Nachbarin dazu bewegt, diese Zettel zu fressen. Deshalb konnte ich das nicht lernen und kann nun die Bonuspunkte gut gebrauchen. (Und es ist sicher keiner außer mir so arm!) – (Stefan Mendel): Weil ich auch Douglas Adams Fan bin. – (Jürgen Bachler): Weil ich sie nicht mit Fisch bestochen hab (Wie es scheinbar andere Adressaten getan haben). – (Helfried Traussnigg): Fallunterscheidung 1. alle anderen sind besser als ich (worst case) → offensichtlich braucht sie dann keiner dringender als ich. 2. alle anderen sind schlechter als ich (best case) p(x) = 0 → irrelevant – (Reinhold Schmidt): Ich hab für die Bonusfrage eineinhalb mal so viel Zeit investiert, wie für die richtigen Fragen. – (Christian Ropposch): Bonuspunkte für alle! – (Christoph Bouvier): Ich glaub ich war als erster fertig! Außerdem hat ganz bestimmt niemand außer mir das Skriptum gelesen! KAPITEL 10. PRÜFUNGSFRAGEN 175 – (Alexander Gütler): 1 1. ∃ Bonusfrage 1 2. ∃ Punkt für die Bewertung der Bonusfrage 3. ∀ Student ⊆ Matrikelnummer=”9231666” ⇒ #Bonuspunkte++ • Bonusfrage: (diesmal wieder rekursiv!) Bilden Sie eine inoffizielle rekursive Definition für MMIS Abkürzung! Bonus Question: (recursive again!) Provide an nonoffical recursive definiton for MMIS abbreviation! Anhang A MP3 Hörtest Für den mp3-Hörtest wurden verschiedene Teile von Musikstücken von CD in mp3-Dateien codiert. Ein gute Mischung aus verschiedenen Musikstilen wurde gegenüber einer akademischen Klanganalyse bevorzugt. Folgende Stücke wurden verwendet: • Eric Clapton, Unplugged, “Before You Accuse Me” • Ludwig van Beethoven, Symphonie Nr. 5, “1. AllegRo Con Brio” • Bill Whelan, Riverdance, “Firedance” (Kastagnetten) • Ugly Kid Joe, America’s least wanted, “Neighbor” • Queen, Jazz, “Bicycle Race” • Klassische Sagen des Altertums, erzählt von Michael Köhlmeier • Oscar Peterson, Digital at Montreux, “Soft Winds” Jedes Stück wurde als WAV-File auf die Festplatte gerippt und dann mit Hilfe von lame in verschiedene mp3-dateien codiert. Es wurden verschiedene Bitraten, Variable Bit Rate (VBR) und verschiedene StereoVarianten (stereo, joint-stereo, force stereo) verwendet. Danach wurden sämtliche Stücke mit Hilfe des Diskwriter Plugins des mp3-players XMMS1 ins WAV-Format konvertiert und mit WinOnCD 3.7 als Audio-CD gebrannt. Tabelle A.1 zeigt die daraus entstandenen Dateien und ihre Grössen. Es wurde cdda2wav und lame (Version 3.86) verwendet. Die genaue Commandline geht aus folgendem Text hervor: # -----------------------------------------------------------# oscar peterson, digital in montreux, soft winds (track2) # ripped with: cdda2wav -D 0,3,0 -q -x -H -t 2 -d 42 -O wav oscar_peterson-soft_winds.wav # 256kbit mp3 / joint stereo: lame -h -p -b 256 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_256kb.mp3 # 192kbit mp3 / joint stereo: lame -h -p -b 192 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_192kb.mp3 # 128kbit mp3 / joint stereo: lame -h -p -b 128 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_128kb.mp3 # 64kbit mp3 / joint stereo: lame -h -p -b 64 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_64kb.mp3 # 32kbit mp3 / joint stereo: lame -h -p -b 32 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_32kb.mp3 # -----------------------------------------------------------# queen, jazz, bicycle race cdda2wav -D 0,3,0 -q -x -H -t 4 -o 6505 -d 50 -O wav queen-bicycle_race.wav 1 http://www.xmms.org 176 ANHANG A. MP3 HÖRTEST # 128kbit mp3, joint stereo lame -h -m j -p -b 128 queen-bicycle_race.wav queen-bicycle_race_128kbit_jointstereo.mp3 # 128kbit mp3, stereo lame -h -m s -p -b 128 queen-bicycle_race.wav queen-bicycle_race_128kbit_stereo.mp3 # 128kbit mp3, force stereo lame -h -m f -p -b 128 queen-bicycle_race.wav queen-bicycle_race_128kbit_forcestereo.mp3 # 256kbit mp3, stereo lame -h -m f -p -b 256 queen-bicycle_race.wav queen-bicycle_race_256kbit_stereo.mp3 # 256kbit mp3, joint stereo lame -h -m f -p -b 256 queen-bicycle_race.wav queen-bicycle_race_256kbit_jointstereo.mp3 # 32kbit mp3, stereo lame -h -m f -p -b 32 queen-bicycle_race.wav queen-bicycle_race_32kbit_stereo.mp3 # 32kbit mp3, joint stereo lame -h -m f -p -b 32 queen-bicycle_race.wav queen-bicycle_race_32kbit_jointstereo.mp3 # -----------------------------------------------------------# beethoven, symphonie nr.5, 1.satz cdda2wav -D 0,3,0 -q -x -H -t 1 -d 60 -O wav beethoven-symph5.wav # 256kbit mp3 lame -h -h -p -b 256 beethoven-symph5.wav beethoven-symph5_256kbit.mp3 # 192kbit mp3 lame -h -h -p -b 192 beethoven-symph5.wav beethoven-symph5_192kbit.mp3 # 128kbit mp3 lame -h -h -p -b 128 beethoven-symph5.wav beethoven-symph5_128kbit.mp3 # 64kbit mp3 lame -h -h -p -b 64 beethoven-symph5.wav beethoven-symph5_64kbit.mp3 # vbr min 64kbit mp3 lame -v -p -b 64 beethoven-symph5.wav beethoven-symph5_64kbit_vbr.mp3 # vbr min 128kbit mp3 lame -v -p -b 128 beethoven-symph5.wav beethoven-symph5_128kbit_vbr.mp3 # -----------------------------------------------------------# riverdance, firedance (kastagnetten) cdda2wav -D 0,3,0 -q -x -H -t 6 -o 10330 -d 52 -O wav riverdance-firedance.wav # 256kbit mp3 lame -h -p -b 256 riverdance-firedance.wav riverdance-firedance_256kbit.mp3 # 192kbit mp3 lame -h -p -b 192 riverdance-firedance.wav riverdance-firedance_192kbit.mp3 # 128kbit mp3 lame -h -p -b 128 riverdance-firedance.wav riverdance-firedance_128kbit.mp3 # 64kbit mp3 lame -h -p -b 64 riverdance-firedance.wav riverdance-firedance_64kbit.mp3 # 32kbit mp3 lame -h -p -b 32 riverdance-firedance.wav riverdance-firedance_32kbit.mp3 # 256kbit mp3 vbr lame -v -p -b 256 riverdance-firedance.wav riverdance-firedance_256kbit_vbr.mp3 # 192kbit mp3 vbr lame -v -p -b 192 riverdance-firedance.wav riverdance-firedance_192kbit_vbr.mp3 # 128kbit mp3 vbr lame -v -p -b 128 riverdance-firedance.wav riverdance-firedance_128kbit_vbr.mp3 # -----------------------------------------------------------# michael köhlmeier, klassische sagen des altertums, track 1 cdda2wav -D 0,3,0 -q -x -H -t 1 -o 875 -d 30 -O wav koehlmeier-sagen.wav # 256kbit mp3 lame -h -p -b 256 koehlmeier-sagen.wav koehlmeier-sagen_256kbit.mp3 # 192kbit mp3 lame -h -p -b 192 koehlmeier-sagen.wav koehlmeier-sagen_192kbit.mp3 # 128kbit mp3 lame -h -p -b 128 koehlmeier-sagen.wav koehlmeier-sagen_128kbit.mp3 # 64kbit mp3 lame -h -p -b 64 koehlmeier-sagen.wav koehlmeier-sagen_64kbit.mp3 # 32kbit mp3 lame -h -p -b 32 koehlmeier-sagen.wav koehlmeier-sagen_32kbit.mp3 # 192kbit mp3 vbr lame -v -p -b 192 koehlmeier-sagen.wav koehlmeier-sagen_192kbit_vbr.mp3 # 128kbit mp3 vbr lame -v -p -b 128 koehlmeier-sagen.wav koehlmeier-sagen_128kbit_vbr.mp3 # 64kbit mp3 vbr lame -v -p -b 64 koehlmeier-sagen.wav koehlmeier-sagen_64kbit_vbr.mp3 # -----------------------------------------------------------# ugly kid joe, neighbor cdda2wav -D 0,3,0 -q -x -H -t 1 -d 42 -O wav ugly_kid_joe-neighbor.wav # 256kbit mp3 lame -h -p -b 256 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_256kbit.mp3 # 192kbit mp3 lame -h -p -b 192 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_192kbit.mp3 # 128kbit mp3 lame -h -p -b 128 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_128kbit.mp3 # 64kbit mp3 lame -h -p -b 64 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_64kbit.mp3 177 ANHANG A. MP3 HÖRTEST # -----------------------------------------------------------# eric clapton, unplugged, before you accuse me cdda2wav -D 0,3,0 -q -x -H -t 2 -d 60 -O wav clapton-unplugged-before_you_accuse_me.wav # 256kbit lame -h -p -b 256 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_256kbit.mp3 # 192kbit lame -h -p -b 192 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_192kbit.mp3 # 128kbit lame -h -p -b 128 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_128kbit.mp3 # 64kbit lame -h -p -b 64 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_64kbit.mp3 178 ANHANG A. MP3 HÖRTEST Nr 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Titel beethoven-symph5.wav beethoven-symph5 128kbit.mp3 beethoven-symph5 128kbit vbr.mp3 beethoven-symph5 192kbit.mp3 beethoven-symph5 256kbit.mp3 beethoven-symph5 64kbit.mp3 beethoven-symph5 64kbit vbr.mp3 clapton-unplugged-before you accuse me.wav clapton-unplugged-before you accuse me 128kbit.mp3 clapton-unplugged-before you accuse me 192kbit.mp3 clapton-unplugged-before you accuse me 256kbit.mp3 clapton-unplugged-before you accuse me 64kbit.mp3 koehlmeier-sagen.wav koehlmeier-sagen 128kbit.mp3 koehlmeier-sagen 128kbit vbr.mp3 koehlmeier-sagen 192kbit.mp3 koehlmeier-sagen 192kbit vbr.mp3 koehlmeier-sagen 256kbit.mp3 koehlmeier-sagen 32kbit.mp3 koehlmeier-sagen 64kbit.mp3 koehlmeier-sagen 64kbit vbr.mp3 oscar peterson-soft winds.wav oscar peterson-soft winds 128kb.mp3 oscar peterson-soft winds 192kb.mp3 oscar peterson-soft winds 256kb.mp3 oscar peterson-soft winds 32kb.mp3 oscar peterson-soft winds 64kb.mp3 queen-bicycle race.wav queen-bicycle race 128kbit forcestereo.mp3 queen-bicycle race 128kbit jointstereo.mp3 queen-bicycle race 128kbit stereo.mp3 queen-bicycle race 256kbit jointstereo.mp3 queen-bicycle race 256kbit stereo.mp3 queen-bicycle race 32kbit jointstereo.mp3 queen-bicycle race 32kbit stereo.mp3 riverdance-firedance.wav riverdance-firedance 128kbit.mp3 riverdance-firedance 128kbit vbr.mp3 riverdance-firedance 192kbit.mp3 riverdance-firedance 192kbit vbr.mp3 riverdance-firedance 256kbit.mp3 riverdance-firedance 256kbit vbr.mp3 riverdance-firedance 32kbit.mp3 riverdance-firedance 64kbit.mp3 ugly kid joe-neighbor.wav ugly kid joe-neighbor 128kbit.mp3 ugly kid joe-neighbor 192kbit.mp3 ugly kid joe-neighbor 256kbit.mp3 ugly kid joe-neighbor 64kbit.mp3 179 Dateigrösse 10584044 960470 996725 1440705 1920940 480026 914135 10584044 960470 1440705 1920940 480026 5292044 480653 507975 720979 720213 961306 119954 240117 388568 7408844 672496 1008744 1344992 168019 336039 8820044 800391 800391 800391 1600783 1600783 199993 199993 9172844 832574 1033566 1248862 1310335 1665149 1664364 207934 416078 7408844 672496 1008744 1344992 336039 Tabelle A.1: Musikstücke und ihre Filegrössen im Vergleich zu mp3-komprimierten Dateien Anhang B Abkürzungsverzeichnis ARPA . . . . . . . . Advanced Research Projects Agency ASCII . . . . . . . . American Standard Code for Information Interchange ASP . . . . . . . . . . Active Server Pages see also the glossary entry for ☞CGI CGI . . . . . . . . . . . Common Gateway Interface CSS . . . . . . . . . . . Cascaded Style Sheet DARPA. . . . . . . Defense Advanced Research Projects Agency see also the glossary entry for ☞DNS DNS . . . . . . . . . . Domain Name System DOM . . . . . . . . . Document Object Model (DOM) see also the glossary entry for ☞Document Object Model DTD . . . . . . . . . . Document Type Definition DVD . . . . . . . . . . Digital Versatile Disc FO . . . . . . . . . . . . Formatting Objects FTP . . . . . . . . . . File Transfer Protocol see also the glossary entry for ☞FTP GPL . . . . . . . . . . General Public Licence HTML . . . . . . . . HyperText Markup Language see also the glossary entry for ☞HTML HTTP . . . . . . . . HyperText Transfer Protocol see also the glossary entry for ☞HTTP IAB . . . . . . . . . . . Internet Architecure Board IETF . . . . . . . . . Internet Engineering Task Force IP . . . . . . . . . . . . . Internet Protocol see also the glossary entry for ☞IP ISOC . . . . . . . . . Internet Society JSP . . . . . . . . . . . Java Server Pages NDA . . . . . . . . . . Non Disclosure Agreement NNTP . . . . . . . . Network News Transfer Protocol see also the glossary entry for ☞NNTP NSF. . . . . . . . . . . National Science Foundation POP3 . . . . . . . . . Post Office Protocol Version 3 see also the glossary entry for ☞POP3 RFC . . . . . . . . . . Request For Comment 180 ANHANG B. ABKÜRZUNGSVERZEICHNIS 181 RLE . . . . . . . . . . Run Length Encoding RTF . . . . . . . . . . Rich Text Format SGML . . . . . . . . Standard Generalized Markup Language SMIL . . . . . . . . . Synchronized Multimedia Integration Language SMTP . . . . . . . . Simple Mail Transfer Protocol see also the glossary entry for ☞SMTP SOAP . . . . . . . . . Simple Object Access Protocol see also the glossary entry for ☞SOAP TCP . . . . . . . . . . Transmission Control Protocol see also the glossary entry for ☞TCP TCP/IP . . . . . . Transmission Control Protocol/Internet Protocol VM . . . . . . . . . . . Virtual Machine see also the glossary entry for ☞TCP/IP see also the glossary entry for ☞Virtual Machine (VM) WAIS . . . . . . . . . Wide Area Information Server see also the glossary entry for ☞WAIS WAP . . . . . . . . . . Wireless Application Protocol WML . . . . . . . . . Wireless Markup Language WWW . . . . . . . . World Wide Web see also the glossary entry for ☞WWW XML . . . . . . . . . . eXtensible Markup Language XSL . . . . . . . . . . . eXtended Stylesheet Language XSLT . . . . . . . . . XSL Transformations see also the glossary entry for ☞XML Anhang C Glossar C: A high-level programming language developed by Dennis Ritchie and Brian Kernighan at Bell Labs in the mid 1970s. Although originally designed as a systems programming language, C has proved to be a powerful and flexible language that can be used for a variety of applications, from business programs to engineering. C++: A high-level programming language developed by Bjarne Stroustrup at Bell Labs. C++ adds object-oriented features to its predecessor ☞C. C++ is one of the most popular programming language for graphical applications, such as those that run in Windows, ☞UNIX, and Macintosh environments. CGI: Common Gateway Interface A specification for transferring information between a World Wide Web server and a CGI program. A CGI program is any program designed to accept and return data that conforms to the CGI specification. The program could be written in any programming language, including ☞C, ☞PERL, or ☞Java. DNS: Domain Name System An Internet service that translates domain names into IP addresses. Because domain names are alphabetic, they’re easier to remember. The Internet however, is really based on IP addresses. Every time you use a domain name, therefore, a DNS service must translate the name into the corresponding IP address. For example, the domain name www.example.com might translate to 198.105.232.4. Document Object Model (DOM): An application programming interface for HTML and XML documents. It defines the logical structure of documents and the way a document is accessed and manipulated. With the Document Object Model programmers can build documents, navigate their structure, and add, modify, or delete elements and content. FTP: File Transfer Protocol The protocol used on the Internet for sending files. HTML: HyperText Markup Language The authoring language used to create documents on the WWW. HTTP: HyperText Transfer Protocol The underlying protocol used by the WWW. HTTP defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. For example, when you enter a URL in your browser, this actually sends an HTTP command to the Web server directing it to fetch and transmit the requested Web page. IP: Internet Protocol IP specifies the format of packets, also called datagrams, and the addressing scheme. Most networks combine IP with a higher-level protocol called TCP, which establishes a virtual connection between a destination and a source. IP by itself is something like the postal system. It allows you to address a package and drop it in the system, but there’s no direct link between you and the recipient. TCP/IP, on the other hand, establishes a connection between two hosts so that they can send messages back and forth for a period of time. 182 ANHANG C. GLOSSAR 183 Java: A high-level programming language developed by Sun Microsystems. It is an object-oriented language similar to ☞C++, but simplified to eliminate language features that cause common programming errors. Java source code files are compiled into a format called bytecode, which can then be executed by a Java interpreter. Compiled Java code can run on most computers because Java interpreters and runtime environments, known as Java Virtual Machines (VMs), exist for most operating systems, including UNIX, the Macintosh OS, and Windows. NNTP: Network News Transfer Protocol The protocol used to post, distribute, and retrieve Usenet messages. parse: to analyze (a string of characters) in order to associate groups of characters with the syntactic units of the underlying grammar. PERL: Practical Extraction and Report Language A programming language developed by Larry Wall, especially designed for processing text. Because of its strong text processing abilities, Perl has become one of the most popular languages for writing CGI scripts. Perl is an interpretive language, which makes it easy to build and test simple programs. POP3: Post Office Protocol Version 3 A protocol used to retrieve e-mail from a mail server. SMTP: Simple Mail Transfer Protocol A protocol for sending e-mail messages between servers SOAP: Simple Object Access Protocol An XML/HTTP-based protocol to exchange information between computers. This may vary from the simple exchange of messages to remote procedure calls. Used by Microsoft in .NET. TCP: Transmission Control Protocol TCP is one of the main protocols in TCP/IP networks. Whereas the IP protocol deals only with packets, TCP enables two hosts to establish a connection and exchange streams of data. TCP guarantees delivery of data and also guarantees that packets will be delivered in the same order in which they were sent. TCP/IP: Transmission Control Protocol/Internet Protocol used to connect hosts on the Internet. The suite of communications protocols TELNET: Telnet is a service which allows logging onto a remote computer on the Internet. Telnet provides a virtual terminal on the remote computer. UNIX: A popular multi-user, multitasking operating systems developed at Bell Labs in the early 1970s. Virtual Machine (VM): A self-contained operating environment that behaves as if it is a separate computer. For example, Java applets run in a Java Virtual Machine. WAIS: Wide Area Information Server A distributed information retrieval system. WWW: World Wide Web A system of Internet servers that support specially formatted documents. The documents are formatted in a language called HTML (HyperText Markup Language) that supports links to other documents, as well as graphics, audio, and video files. This means you can jump from one document to another simply by clicking on hot spots. Not all Internet servers are part of the World Wide Web. XML: eXtensible Markup Language A specification developed by the W3C1 . XML is a pared-down version of SGML, designed especially for Web documents. It allows designers to create their own customized tags, enabling the definition, transmission, validation, and interpretation of data between applications and between organizations. 1 http://www.w3c.org Literaturverzeichnis [Bau99] Tilman Baumgärtel. Radarschirme für den Cyberspace - von Archie bis AltaVista - kurze Geschichte der Suchmaschinen. c’t, 14:184ff, 1999. [BBJ99] Wilhelm Berghorn, Tobias Boskamp, and Klaus Jung. Schlanke Bilder - Der zukünftige Bildkompressionsstandard JPEG 2000. c’t, 26, 1999. [BBSS99] Wilhelm Berhorn, Tobias Boskamp, Steven Schönfeld, and Hans-Georg Stark. Winzig mit Wavelets, Aktuelle Verfahren zur Bilddatenkompression. c’t, 26:186–197, 1999. [BLFF96] T. Berners-Lee, R. Fielding, and H. Frystyk. RFC 1945: Hypertext Transfer Protocol — HTTP/1.0, May 1996. Status: INFORMATIONAL. [Bro00] Brockhaus, editor. Der Brockhaus multimedial 2001 premium. Bibliographisches Institut & F.A. Brockhaus AG, Mannheim, 2000. [Bus45] Vannevar Bush. As we may think. The Atlantic Monthly, 176(1):101–108, July 1945. available online http://www.theatlantic.com/unbound/flashbks/computer/bushf.htm. [CO99] Matthias Carstens and Alexander Oberdörster. Frontalangriff, Internet-Audio und -Video: Microsoft contra Apple und MP3. c’t, 10, 1999. [CS01] C.A. Christopoulos and A.N. Skondras. Jpeg2000 - the next generation still image compression standard. Technical report, Ericsson Research Media Lab, April 2001. available online http: //www.dsp.toronto.edu/~dsp/JPEG2000/. [DZ01] Alfred Decker and Markus Zoier. Aktuelle Digitale Videoformate. UE zur Vorlesung Multimediale Informationssysteme WS2001, 2000/2001. [ea96] Mark Adler et al. PNG (Portable Network Graphics) Specification. Technical report, W3C, 1996. available online http://www.w3.org/TR/REC-png. [FGM+ 97] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, and T. Berners-Lee. RFC 2068: Hypertext Transfer Protocol — HTTP/1.1, January 1997. Status: PROPOSED STANDARD. [For99] Harald Forstinger. Analyse gegenwärtiger Suchdienste und Konzepte für künftige Wissensauffindung. Master’s thesis, IICM, Graz University of Technology, June 1999. available online http://www.iicm.edu/thesis/hforstinger. [Hal00] Mary Hall. Core Servlets and JavaServer Pages. Sun Microsystems Press/Prentice Hall PTR, 1st edition, 2000. see http://www.coreservlets.com or http://www.apl.jhu.edu/~hall/ java/Servlet-Tutorial/. [Har00] Eliotte Rusty Harold. XML Bible. IDG Books Worldwide, 2000. available online http: //www.ibiblio.org/xml/books/bible/updates/14.html. [Hen00] Peter A. Henning. Taschenbuch Multimedia. Fachbuchverlag Leibzig, 2000. [Hol00] Andreas Holzinger. Basiswissen Multimedia, Band 1. Vogel Verlag, 2000. [Jae00] S. Jaeger. Legal oder illegal? Der rechtliche Status des DVD-Hackertools. c’t, 14:28, 2000. 184 LITERATURVERZEICHNIS 185 [K0̈0] Kristian Köhntopp. Web-Baukasten - Data Driven Websites mit PHP. Linux-Magazin, 8:114– 120, 2000. [KL86] B. Kantor and P. Lapsley. RFC 977: Network news transfer protocol: A proposed standard for the stream-based transmission of news, February 1986. Status: PROPOSED STANDARD. [Küs95] Heiner Küsters. Bilddatenkomprimierung mit JPEG und MPEG. Franzis, 1995. [Len99] Sven Lennartz. ch bin wichtig! - Promotion-Massnahmen für suchdienstgerechte Webseiten. c’t, 23:180ff, 1999. [Len01] Sven Lennartz. Dynamsiche Seiten - Server Side Includes richtig einsetzen. c’t, 20:224–229, 2001. [Lip97] Thomas W. Lipp. Grafikformate. Microsoft Press, 1997. [Lov00] J. Lovischach. Formen mit Normen - Internet-Standards für Multimedia - nicht nur online. c’t, 18:115, 2000. [LZ02] Christoph Laue and Volker Zota. Klangkompresssionen - MP3 und seine designierten Erben. c’t, 19:102 – 109, 2002. [M0̈2] Henning Ml̈ler. Jäger des verlorenen Fotos - Das GNU Image Finding Tool fr̈ Linux in der Praxis. c’t, 6:252–257, 2002. [MR01] Dr. Volker Markl and Frank Ramsak. Universalschlüssel - datenbankindexe in mehreren dimensionen. c’t, 01:174–179, 2001. [MvR96] James D. Murray and William van Ryper. Encyclopedia of Graphics File Formats. O’Reilly and Associates, Inc., 2nd edition, 1996. [Nel92] Theodor Holm Nelson. Litarary Machines 93.1. Mindful Press, 1992. [otPC99] Members of the Project Clever. Neue Pfade duch den Internet-Dschungel - Die zweite Generation von Web-Suchmaschinen. Spectrum der Wissenschaft, August 1999. [Pie98] Claudia Piemont. Ein lächeln fürs web - smil-eine sprache für multimedia-präsentationen im web. c’t, 20, 1998. [Pos80] J. Postel. RFC 768: User datagram protocol, August 1980. Status: STANDARD. See also STD0006. [Pos81] J. Postel. RFC 793: Transmission control protocol, September 1981. See also STD0007. Status: STANDARD. [PR85] J. Postel and J. K. Reynolds. RFC 959: File transfer protocol, October 1985. Obsoletes RFC0765. Updated by RFC2228 . Status: STANDARD. [Ray] Eric S. Raymond. The new hacker’s dictionary. available online http://earthspace.net/ jargon. [Ric00] Jeffrey Richter. Microsoft .net framework delivers the platform for an integrated, serviceoriented web. MSDN, September 2000. available online: http://msdn.microsoft.com/ msdnmag/issues/0900/Framework/Framework.asp. [SGM86] SGML international standard - iso8879, 1986. [SH01] Christiane Schulzki-Haddouti. Die suche nach Geld - Suchmaschinen: Platzierung gegen Bares. c’t, 25:44, 2001. [SK91] T. J. Socolofsky and C. J. Kale. RFC 1180: TCP/IP tutorial, January 1991. Status: INFORMATIONAL. [SMM01] Nico Schulz, Simon McPartlin, and Uwe-Erik Martin. Bilderpresse - JPEG2000, Technik und Hintergründe. c’t, 22:186–187, 2001. LITERATURVERZEICHNIS 186 [Stu01] Ch. Stuecke. DVD-Importe illegal? Der juristische Status ausländischer DVD-Videos in Deutschland. c’t, 01:156, 2001. [Tri01] Andreas Trinkwalder. Flexibles Leichtgewicht - JPEG2000, Produkte und Marktchancen. c’t, 22:180–184, 2001. [V.98] Roth V. Content-based retrieval form digital video. Technical report, Fraunhofer Institut, 1998. available online http://www.igd.fhg.de/igd-a8/publications/OtherSubjects/98_ Content-BasedRetrievalFromDigitalVideo.html. [vL00] Felix von Leitner. Die Kunst des Weglassens, Grundlagen der Audio-Kompression. c’t, 03, 2000. [Wes01] Andreas Westfeld. Unsichtbare Botschaften - Geheime Nachrichten sicher in Bild, Text und Ton verstecken. c’t, 09:170–181, 2001. Index A B a-Law-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70, 73 Abtastfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Abtastwert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 AC-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Active Server Pages . . . . . . . . . . . . . . . . . . . . siehe ASP Adam7 Interlacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 adaptive hearing threshold . . . . . . . . . . . . . . . . . . . . . 71 <address> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Adobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101, 102 ADPCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Agenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 27 Akkomodation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Akustikmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67, 73 Aliweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Alpha Kanal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84, 98 Altavista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Amplitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Anima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97, 99 Anmeldung Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Vorlesung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Apache . . . . . . . . . . . . . . . . . 60, 63, 128, 137, 139, 141 Apple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Archie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ARPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 ARPANET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 ASF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75, 117 ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 129 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Atkinson, Bill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 ATRAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72, 75 Atrribut vs. Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Mehrfachwert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Wert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 72 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Augapfel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Auge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Farbsehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Auszeichnungssprache . . . . . . siehe Markup Sprache Autodesk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 AVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116 b-trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 BAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Bernes-Lee, Tim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Bewegung, Wahrnehmung von . . . . . . . . . . . . . . . . 107 <bgcolor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Bidirectionally Predicted Frame . . . . . . . . . . . . . . 115 Bild digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Meta- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Raster- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Bildformat Vektor- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 BMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85, 97 <body> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 <book> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 <br> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Brightness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Brockhaus Multimedial . . . . . . . . . . . . . . . . . . . . . . . . 30 Bilddaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Computergenerierter Kontext . . . . . . . . . . . . . 31 Gläserner Mensch . . . . . . . . . . . . . . . . . . . . . . . . . 32 Landkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Programming Framework . . . . . . . . . . . . . . . . . 33 Textdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Videos und Animationen . . . . . . . . . . . . . . . . . . 32 Weblinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 BTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Bush, Vannevar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 C C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 <center> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 CERN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122, 125 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Cinepak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116 CMY . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, CMY Cocoon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Codebaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Codec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116 Codierung µ-Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 a-Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 88 Lowest Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 LZ77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 LZW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 85 Patchwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Texture Block . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 187 INDEX Coding predicitve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Spectral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Subband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Color Gamut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Common Gateway Interface . . . . . . . . . . . . siehe CGI Component Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Composite Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Compuserve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Computergenerierter Kontext . . . . . . . . . . . . . . . . . . 31 CONTENT LENGTH . . . . . . . . . . . . . . . . . . . . . . . . 124 Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127, 133 Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41, 117 D D-Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Dallermassl, Christof . . . . . . . . . . . . . . . . . . . . . . . . . . 11 DARPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Dateiformat Bild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Deck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 <department> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Digitales Bild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 DivX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Document Object Model . . . . . . . . . . . . . . . . . . . . . . 102 Document Type Definition . . . . . . . . . . . . siehe DTD DOCUMENT ROOT . . . . . . . . . . . . . . . . . . . . . . . . . 124 Dokumententyp Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Dolby AC-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Dolby-Surround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Domain Name Service . . . . . . . . . . . . . . . . . . . . . . . . . 18 DPCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 DTD HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112, 117 Kopierschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 E EBONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Element leeres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 vs. Attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Engelbart, Douglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Entities HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 escape-codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Excite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Extensible Stylesheet Language . . . . . . . . siehe XSL F Farb 188 -anzahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 -bereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 -modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 CMY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80, 82 HSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80, 82 Umrechnung zwischen verschiedenen . . . . 82 YCbCr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 YIQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 YUV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 82 -sättigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 -tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 -tiefe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 -ton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Rasterbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Verwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Farbmodell YIQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85, 89 FBAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 <firstname> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 <font> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 <form> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Fourier-Transformation . . . . . . . . . . . . . . . . . . . . . 69, 90 Fraktale Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 bidirectionally predicted . . . . . . . . . . . . . . . . . 115 D- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Intra- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114 predicted . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114 Frequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Frequenzraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 G G3-Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Gamma Korrekturk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 GET-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 85, 97, 102 GIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Gimp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Gläserner Mensch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 GNU Image Finding Tool . . . . . . . . . . . . . . . . . . . . . . 29 Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27, 124, 132 Gopher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 24 GPSYCHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 H H.261 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 H.263 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Hörschwelle, adaptive . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Halbbilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 HDTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 <head> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Helligkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Helligkeitswahrnehmung . . . . . . . . . . . . . . . . . . . . . . . 79 Hi-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Hidden Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 INDEX HSV . . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, HSV HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 35, 37 Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Format Definiation . . . . . . . . . . . . . . . . . . . . . . . 43 Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Kommentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Mindesttags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Schrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Style Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 vs. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 <html> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19, 23 GET-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 POST-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Session Tracking . . . . . . . . . . . . . . . . . . . . . . . . . 133 Hue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Huffman-Codierung . . . . . . . . . . . . . . . . . 68, 73, 88, 92 Hyper-G . . . . . . . . . . . . . . . . . . . . . . . . siehe Hyperwave Hypercard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Hyperlink Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Hypertext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Hyperwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 I IAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ICCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 IETF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 IICM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 30 <img> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Indeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116 Indexsuchmaschinen . . . . . . . . . . . . . . . . . . . . . . . 25, 26 Informationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Infoseek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Interlacing . . . . . . . . . . . . . . . . . . . . . . . 97, 99, 107, 109 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Technische Grundlagen . . . . . . . . . . . . . . . . . . . 18 Intraframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114 <invoice> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . siehe TCP/IP IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 IRIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 ISDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 J j2k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Java Server Pages . . . . . . . . . . . . . . . . . . . . . . siehe JSP Java Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 125 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 JFIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89, 100 Joint Stereo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 jp2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 JPEG . . . . . . . . . . . . . . . . . . . . 81, 85, 89, 90, 102, 110 Bildformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 189 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Kompressionsalgorithmus . . . . . . . . . . . . . . . . . 90 Kompressionsfaktoren . . . . . . . . . . . . . . . . . . . . . 90 Progressive Encoding . . . . . . . . . . . . . . . . . . . . . 92 Verlustbehaftete Kompression . . . . . . . . . . . . . 90 Verlustfreie Kompression . . . . . . . . . . . . . . . . . . 89 JPEG2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Bildformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 jpm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 jpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 125, 127 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Interna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Jumpstation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 K Kannel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139, 140 Katalogsuchmaschinen . . . . . . . . . . . . . . . . . . . . . 25, 26 KMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Knowledge Management . . . . . . . . . . . . . . . . . . . . . . 142 Kommentar HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Kompression Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 fraktale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 H.261 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 verlustbehaftet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 verlustbehaftete JPEG . . . . . . . . . . . . . . . . . . . . 90 verlustfreie JPEG . . . . . . . . . . . . . . . . . . . . . . . . . 89 Wavelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Kompressionsfaktoren JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 L <lastname> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Lauflängenkodierung . . . . . . . . . . . . . . . 68, 84, 92, 97 Lautstärke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Lempel, Abraham . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Leporello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 < link > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Lowest Bit Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Luftdruck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Lycos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 LZ77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 LZW-Codierung . . . . . . . . . . . . . . . . . . . . . . . . 68, 85, 97 M Markup generalized, descriptive . . . . . . . . . . . . . . . . . . . 34 Markup Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Maskierungseffekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Maurer, Hermann . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 22 Memex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 <memo> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Metabildformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Metadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Metasuchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . 25, 26 Meyrowitz, Norman . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 mgetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 INDEX Microsoft . . . . . . . . . . . . . . . . . . . . 47, 75, 110, 116, 129 MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 MILNET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Minidisc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 mj2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 MJPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 MNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Modell psychoakustisches . . . . . . . . . . . . . . . . . . . . . . . . . 70 Morsecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Mozart, Wolfgang Amadeus . . . . . . . . . . . . . . . . . . . . 30 MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70, 73 Hörtest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76, 176 MP3 Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Layer 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Layer 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Layer 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Videokompression . . . . . . . . . . . . . . . . . . . . . . . 111 Windows Media Technologies . . . . . . . . . . . . 114 MPEG-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 MPEG-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 MPEG-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 MPEG-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 MPEG-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 MPEG2 AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 MPEG4 AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 MSAudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 µ-Law-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 N Namensraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 55 Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 55 Nelson, Ted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 NLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 NSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 NTSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 NTSC-Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Nyquist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 O Organisatorisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 P <p> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 43 PAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 108 Parameterübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Patchwork Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 PCX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 <person> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 49 Photobook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Photorezeptoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 131 PICT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 190 PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89, 98 POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Portable Document Format . . . . . . . . . . . . . . . . . . . 102 POST-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Postscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 pppd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139, 140 Predicted Frame . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114 Predictive Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Processing Instruction . . . . . . . . . . . . . . . . . . . . . . . . . 54 Progressive Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 psychoakustisches Modell . . . . . . . . . . . . . . . . . . . . . . 70 Q Quantisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 73, 90, 91 QUERY STRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Quickdraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Quicktime . . . . . . . . . . . . . . . . . . . . . . . . . . . 32, 110, 116 R Ranking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Rasterbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 101 Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 RBSE Spider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Realaudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Realvideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Recommendation Systems . . . . . . . . . . . . . . . . . 25, 27 REFER URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 regular expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 REMOTE HOST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Remove Sensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Request for Comment (RFC) . . . . . . . . . . . . . . . . . . 20 REQUEST METHOD . . . . . . . . . . . . . . . . . . . . . . . . 124 RFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 RGB . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, RGB RIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 84 Robots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 RTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Run-Length-Encoding . . . . . . . . . . . . . . . . . 68, 84, 110 S S-VHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Sättigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Samplingrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Samplingsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Saturation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Scalable Vector Graphics . . . . . . . . . . . . . . . . . . . . . 102 Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 < script > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Sehnerv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 SelfHTML . . . . . . . . . . . . . . . . . . . . . . . . . . 38, 39, 42, 47 Servlet . . . . . . . . . . . . . . . . . . . . . . . . . siehe Java Servlet Session Tracking . . . . . . . . . . . . . . . . . . . . . . . . . 127, 133 SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30, 35 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Dokumententyp . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 INDEX Silence Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Sinneszellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Skriptum Änderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 SMIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Spectral Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Spider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . siehe Robots Stäbchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Stars and Stripes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Steganographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 < style > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Style Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Ausgabemedium . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Subband Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Suche nach Multimediadaten . . . . . . . . . . . . . . . . . . 28 Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Kategorien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Reihung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26, 27 SVCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 SVT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 T TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 18, 133 Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Template Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Texture Block Coding . . . . . . . . . . . . . . . . . . . . . . . . 105 TGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 TIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 85, 89, 97 Timbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 < title > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Ton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 digitale Darstellung . . . . . . . . . . . . . . . . . . . . . . . 66 Tonhöhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Transclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 TransformCoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Transparenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Trommelfell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 TwinVQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 U Übungen Anmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Unisys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 URL-Rewriting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 V Variable Bitrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 VBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 VCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Vektorgrafikformat . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Vergenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Veronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Verschachtelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Video analog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 191 Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Dateiformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 ASF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 AVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Quicktime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Realvideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Mensch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Y/C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Video-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Video:Codec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Video:Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 VideoTex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Vorlesung Anmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Newsgroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Rechtschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Unterlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Änderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 W W3C . . . . . . . . . . . . . 47, 58, 61, 64, 98, 102, 119, 122 WAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Wandex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Wasserzeichen, digitale . . . . . . . . . . . . . . . . . . . . . . . 104 Wave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Wavelet Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Web-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 WebMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Welch,Terry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Wellentheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Windows Media Audio . . . . . . . . . . . . . . . . . . . . . . . . . 75 Windows Media Technologies . . . . . . . . . . . . . . . . . 114 Windows Meta File . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Wireless Application Protocol . . . . . . . . . siehe WAP Wireless Markup Language . . . . . . . . . . . siehe WML Wissensnetzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 WMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 WMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 <wml> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 World Wide Web . . . . . . . . . . . . . . . . . . . . siehe WWW World Wide Web Wanderer . . . . . . . . . . . . . . . . . . . . 24 World Wide Web Worm . . . . . . . . . . . . . . . . . . . . . . . 24 WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 37 dynamische Generierung . . . . . . . . . . . . . . . . . 122 X Xalan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Xanadu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 XML . . . . . . . . . . . . . . . . . . . . . . . . . 35, 37, 47, 102, 119 Attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 55 Processing Instruction . . . . . . . . . . . . . . . . . . . . 54 Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51, 64 INDEX Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 vs. HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Formatting Objects . . . . . . . . . . . . . . . . . . . 58, 62 Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Y Y/C Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Yahoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 YCbCr . . . . . . . . . . . . . . . . . siehe Farbmodell, YCbCr YIQ . . . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, YIQ YUV . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, YUV Z Zapfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Zif, Jakob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 192