Hypermedia FAQ

Markup-Sprachen (Was ist das?)
Markup bedeutet deklarieren und auszeichnen. Dieses wird verwendet um z.b. bestimmte Dinge hervorzuheben oder anderweitige Sonderfunktionen (z.b. hyperlinks, Anker) einzufügen.
HTML ist der defakto Standard des WWW und ermöglicht es plattformunabhängig Informationen zu veröffentlichen. Probleme von HTML sind die teilweise speziellen und nicht standardisierten Erweiterungen der Browserhersteller und die Vermengung von Inhalt und Layout.
XHTML ist die Umsetzung von HTML4 in XML. Der Vorteil ist die Trennung von Inhalt und Layout.
XHTMl Basic = eine abgespeckte Version für den Einsatz auf mobilen Endgeräten.
CHTML (Compact HTML) = HTML für i-mode
WML dient der Darstellung von WAP-Inhalten.
HDML (Handheld Device Markup Language) = Basis von WML, ähnlich HTML

Hytime (nur einfache Sachen, verstehen um was es geht)

à Sprache zur Kodierung der Struktur von Hypermediadokumenten     

à SGML Instanz bzw. SGML Erweiterung (benutzt SGML Syntax)

 

à wie HTML bietet HyTime grundlegende Konzepte zur Repräsentation von

     Hyper- text/media sowie MM Dokumenten.

 

Schwerpunkt :          Darstellung von abstrakten räumlichen und zeitlichen Beziehungen                            zwischen den verbundenen Dokumenten.

 

spezifiziert  wie ...

à      ...  Informationsobjekte innerhalb des Dokumentes mit Hyperlinks assoziiert werden.

à      ...  Objekte räumlich und zeitlich plaziert/positioniert werden

à      ...  Objekte miteinander verknüpft werden können.

 

à Inhaltsinformationen =          Objekte

                                      Objekte =  1. Teil des Dokuments

      2. sind unbeschränkt ( un- / formatierte klassische      

          Dokumente jeglicher Art.

à freies Exportieren von Objekten

 

Module:        

HyTime besteht aus 6 Module:

Base Module

Stellt den anderen Modulen Basisfunktionen zur Verfügung

Location Address Module

bietet 3 Möglichkeiten zur Adressierung von Objekten an.

Finite Coordinate Space (FSC) Module

regelt Ablaufsteuerung der Darstellung von Objekten

Hyperlinks Module

 

Event Protection Module

 

Object Modification

 

Bild 5+6 fehlt noch

 

MHEG (Wozu und wie läuft das?)

Das Ziel von MHEG (multimedia and Hypermedia Expert Group (Teil von ISO)) ist die Verknüpfung von TV und Internet um einerseits eine hinreichende Interaktivität erreichen zu können und andereseits eine große Bandbreite ausnutzen zu können.

MHEG ist eine API oder Art Beschreibungssprache die definiert wie multimediale Inhalte und die Benutzerinteraktion formuliert werden können. Ein Beispiel ist VoD (Video on Demand) wo man mit MHEG festlegen kann, welcher Film zu welcher Zeit wo dargestellt werden soll.

Eine multimediale Präsentation wird in diesem Zusammenhang eine MHEG-Applikation bzw. MHEG-Szene genannnt. Eine MHEG-Applikation besteht aus mehreren MHEG-Szenen.

Eine MHEG-Szene besteht aus drei Gruppen: interaktiven Objekten (Button, Slidern), Verbindungs-Objekten (Links die Actions anstoßen), Präsentationsobjekten (werden über die Links gesteuert)

Man kann die logischen Strukturen einer Szene in Form von Skripten beschreiben.

MPEG und JPG können z.b. Objekte sein die in MHEG verwendet werden. Für die Strukturinformationen gibt es keinen einheitlichen Standard, was auch die Ausbreitung von MHEg stark behindert.

MHEG beschäftigt sich nicht mit statischen Informationsobjekten, sondern mit deren zeitlichen und räumlichen Beziehungen zueinander.

Die Ziele von MHEG sind: Austausch, Präsentation und Minimaler Ressourcenaufwand.

Potentiale Anwendungsgebiete sind Abfragedienste (Hypertext und Hypermediakonzepte) und Verteilkonzepte (unidirektional - ohne Rückkanal)

 

MHEG-Engine

oder auch MHEG-Interpreter Software-Komponente beim Client Dekodierung und Abspielen von MHEG-Applikationen sowie Handling von Benutzerinteraktionen bei Digital-TV wäre die MHEG-Engine in der Set-Top-Box oder im digitalen TV-Empfänger integriert sein

 

Vergleich MHEG     HTML

MHEG und HTML haben recht viel gemeinsam. Sie sind deklarative Sprachen, aber haben doch entscheidende Unterschiede. Der wesentliche Unterschied ist die Synchronisierbarkeit der Präsentationseinheiten. In HTML sind die Verknüpfungen von beliebigen Aktionen und Events sehr aufwendig. In MHEG ist diese Synchronisierbarkeit ein wesentliches Merkmal und ein Vorteil.

Darüber hinaus wird in HTML das tatsächliche Layout vom Browser des Endbenutzers festgelegt. Dies bedeutet, dass beispielsweise bestimmte Werbeinhalte nicht an festen Koordinaten präsentiert werden, womöglich sogar außerhalb des Darstellungsrahmens, den der Endkunde sieht. In MHEG hingegen wird jedem sichtbaren Objekt ("Visible") von vorne herein ein bestimmter Bereich im Darstellungsrahmen zugewiesen.

    Synchronität und spatiale Definiertheit !

 

MHEG bietet aber trotzdem die Möglichkeit der Verwendung von HTML-Inhalten über die Darstellungsklasse "HyperText" (als MHEG Klasse), d.h. einen Rahmen in dem eine HTML-Präsentation eingebaut werden kann. Somit lässt sich mit der MHEG-Engine ein ganzer HTML-Browser aufbauen. Eine andere Möglichkeit wäre die Einbindung eines handelsüblichen Web-Browsers, dem innerhalb des MHEG-Szenenrahmens ein bestimmter Bereich zugewiesen wird.

D.h. im Falle der Verfügbarkeit einer solchen MHEG-Engine, verliert man bei der Entscheidung für MHEG nicht die Kompatibilität für HTML-Inhalte. Wenn also auf einer SetTopBox eine solche MHEGEngine läuft kann man auf dem normalen Fernseher auf dem Internet surfen (Das einzige verbleibende Problem wären Eingabgeräte wie Tastatur und Maus). Somit ist das eingangs erwähnte Problem der Verbindung von TV und Computer durch MHEG gelöst.

 

Vergleich MHEG     JAVA

Der grundlegendste Unterschied zwischen JAVA und MHEG ist, daß JAVA eine prozedurale Sprache ist, während MHEG eine deklarative Sprache ist.

Dies wirkt sich direkt auf die zu erwartende Komplexität der Applikationen sowie auf die notwendigen Fähigkeiten der Präsentations-Hard/Software aus.

Im Allgemeinen benötigt eine deklarative Sprache weniger Ressourcen als eine prozedurale Sprache.

Die Zielplattform von MHEG ist eigentlich die SetTopBox - hier ist normalerweise von sehr knappen Ressourcen auszugehen. Dies macht eine Darstellungs-Umgebung mit möglichst kleinem Umfang nötig.

 

Autorensysteme (Wozu? Paradigmen? Klassifikation?)

Wozu?

Ziel von Autorensystemen ist es, den Entwicklungsprozeß interaktiver multimedialer Anwendungen durch graphisch-interaktiver Hilfsmittel (WYSIWIG-Prinzip: „What You See Is What You Get“) zu unterstützen und einem Autor den Umgang mit den neuen Möglichkeiten der elektronischen Publikation (Audio, Videi, Interaktionen,...) zu erleichtern.

 

Paradigmen:

Das „Authoring paradigm“, auch bekannt als „Authoring Metapher“, ist die Methode mit der Autorensysteme ihre Aufgaben erfüllen.

 

 

 

 

Dabei existieren folgende Paradigmen:

Scripting Paradigm . . . . . . . . . . . . . .mit Scripting-Sprachen

Iconic/Flow Control Paradigm . . . . .        Icon-Palette mit möglichen Funktionen und Flußlinie, schlechteste Laufzeit

Frame Paradigm  . . . . . . . . . . . . . . .     auch mit Icon-Palette aber sehr schnell

Card/Scripting Paradigm  . . . . . . . .        integrierte Scriptsprache, gut für Spiele

(Toolbook)

Cast/Score/Scripting Paradigm  . . . .       Musikbox als prim. Methapher, paralelle

Elemente werden gleichzeitig (Flash)

Hierarchical Objekt Paradigm . . . . . benutz das Objekt als Methapher, wie

Objekt Orientierte Programmiersprachen, mit Icon visualisiert

Hypermedia Linkage Paradigm . . . .          Links zwischen den Elementen werden

Konzeptionell angezeigt, wie Frame

paradigm

Klassifikationen:

Am bedeutendsten ist die zeitliche Beziehung zwischen Medienobjekten. Sie definieren den Präsentationsablauf. In diesem Zusammenhang können Autorensysteme in deri Klassen aufgeteilt werden:

 

Bildschirm-basiertes Autorensystem (frame Based) – Die zu repräsentierenden Objekte werden auf Flächen (oder auch Karten, Seiten) gelegt und repräsentieren dabei einen Bildschirm, den der Benutzer für einen bestimmten Zeitraum zu sehen bekommt. (GAIN, Hypercard, Toolbook)

 

Zeitachsen-basiertes Autoernsystem (time-based) – Anstelle von Flächen wird mit Film-Metapher gearbeitet, jede Anwendung stellt einen ganzen Film dar. Der Film besteht aus mehreren Bildern, die aif einer Zeitachse angeordnet sind. Sie werden von Links nach Rechts durchlaufen. Die einzelnen Bilder werden nach und nach auf dem Bildschirm präsentiert. Der Bnutzer kann anhand von Navigationsinteraktionen die Bildreihenfolge bestimmen bzw. einen Sprung auf de Zeitachse auslösen. (Director, Maestro, Quicktime)

 

Flußdiagramm-basiertes Autorensystem (flowchart-based) – Hier wird mit einfachen Diagrammen visuell programmiert. Darstellung der Medianobjekte durch Minaturen (Icons);

Diagramme; Verknüpfungen durch Kanten, die mögliche zeitliche Abläufe repräsentieren; anhand Verzweigungs-stellen stehen Bedingungen (Interaktions-Events). Von Objekten können mehrere zeitliche Beziehungen ausgehen, so dass kein fester Präsentationsablauf besteht. Benutzer bestimmt den Ablauf der Anwendung durch Auswahl der Navigationskanten.

Es gibt strukturierte und unstrukturierte Flussdiagramme.

Strukturiert – bestimmte logisch bzw. funktional zusammenhängende Teile könne zusammengefasst werden und in externe Diagramme ausgelagert.(Authorware)

Unstrtukturiert – steht nichts zu

(Apple Media Tool, Authorware, Director, Course Builder, IconAuthor)

 

Wichtige Themen:

PERL

Übungen Module!

Was sind Module?

Module verringern den programmiertechnischen Aufwand

indem sie einfach handzuhabende Unterroutinen zu einem

Anwendungsgebiet (z.B. Netzwerkprogrammierung) zur

Verfügung stellen.

 

Wo befinden sich Module?

PERL Module haben die Dateiendung .pm und befinden sich im

lib Verzeichnis der PERL-Installation.

 

Wie und wo werden Module eingebunden? USE Package Name

Um auf die Funktionen eines Moduls zuzugreifen, muss das

Modul am Anfang des Skriptes mittels des use-Befehls

eingebunden werden.

Existieren mehrere Module zu einem Anwendungsgebiet, werden diese als

Paket in einem Verzeichnis zusammengefasst, um ein Modul aus einem

Paket einzubinden setzt man den Paketnamen mit 2 Doppelpunkten getrennt

vor den Modulnamen.

use Modul; bindet das Modul "Modul.pm" ein

use Paket::Modul; bindet das Modul "Modul.pm" aus dem Paket "Paket" ein

z.B. Net::SMTP

use LKW; bindet das objektorientierte Modul LKW in das PERL-Skript ein

 

Benutzung in einem Skript:

use Net::SMTP;

$smtp = Net::SMTP->new($mailServer); #Ein neues SMTP Objekt wird erzeugt.

z.B.

$smtp->mail($absender);

 

 

$transporter=LKW->new(100);

Erzeugt ein konkretes LKW-Objekt namens $transporter und initialisiert es mit einer

Anfangsgeschwindigkeit von 100 km/h.

$transporter->Geschwindigkeit(150);

Der LKW wird mittels der Methode Geschwindigkeit auf 150 km/h beschleunigt.

$transporter->Geschwindigkeit(0);

Der LKW wird mittels der Methode Geschwindigkeit zum Stehen gebracht.

Der Pfeiloperator -> trennt Klassennamen vom Methodennamen.

 

Wie erstelle ich Module?

Package und Moduldeklaration:

package Net::SMTP;

require 5.001;

$VERSION = "2.24"; # $Id: //depot/libnet/Net/SMTP.pm#25 $

@ISA = qw(Net::Cmd IO::Socket::INET);

 

sub mail

{

}

 

"perl Makefile.pl"

"make test"

"make" und

"make install" aus, um das gewünschte Modul in die eigene Installation zu integrieren.

Diese Schwierigkeiten wurden von Activestate erkannt und dafür ein Tool für die

Modulinstallation entwickelt. Der PERL Package Manager oder kurz ppm benötigt

hierzu vorbereitete Pakete, die Activestate anbietet.

 

Im einfachsten Fall ruft man ppm von der Kommandozeile mit install option

und dem Paketnamen auf:

ppm install neuesmodul

 

 

 

 

 

 

Wie deploye(verteile) ich Module?

-          Get und Post Umgebungsvariablen abfragen, wie kommt man an die Daten?

GET-Methode:

Daten aus der Umgebungsvariable Query-String

 

·         $data = $ENV{`Query_String`};

 

POST-Methode:

·         Länge der Übergebenen Daten stehen im CONTENT_LENGTH

·         Daten stehen im STDIN

 

Read (STDIN, $data, $ENV{`CONTENT_LENGTH`});

                            á Feldname und Feldinhalte der Formulars

 

@eintrag = split (/=/, $daten);

áArray                    áTeilt den String $daten in 2 Arrayfeldern

 

╚► Beispiel:             user=eren&pswd=geheim

           

1. Array        

                                               @eintrag=split(/&/, $daten)

1. Arrayfeld                @eintrag[0];

2. Arrayfeld                 @eintrag[1];

User=eren

Pswd=geheim

 

 

2. Array        

                                               @user = split(/=/, @eintrag[0])

1. Arrayfeld                       @user[0]

2. Arrayfeld                     @user[1]

User

eren

 

3. Array        

                                               @password = split (/=/,@eintrag[1])

1. Arrayfeld              @password[0]

2. Arrayfeld              @password[1]

Paswd

geheim

 

 

Was ist CPAN?

CPAN (Comprehensive PERL Archive) bietet eine umfassende Auswahl von Modulen zum Download an

 

 

 

 

IPP (Internet Printing Protocol)

 

-          Wie funktioniert http allgemein?

-          Mechanismus zum Drucken über http

-          Encapsulated http

-          http Header angucken

-          Austausch Header

-          Header Content type

 

 

Problemlösung durch IPP

• Der reale Standort des Druckers spielt keine Rolle

• Drucken über LAN- und WAN-Grenzen hinweg möglich. Ein Druckjob kann über die Kontinente hinweg übertragen werden …

• Plattform-unabhängiges Verschicken von Druckdaten durch Client/Server-Architektur

 

 

Was ist mit IPP alles möglich

• Es definiert die Interaktion zwischen IPP-Client und Server

• Druckjobs an den ausgewählten Drucker schicken

• einen zuvor geschickten Job wieder annullieren

Statusabfragen sowie den Abbruch von Aufträgen

• den Fortgang eines Jobs von überall her überwachen

• moderne PDL´s (Postscript, PCL, ...) verarbeiten (PDL = Page Description Language)

• auf Anforderung PDL -Anweisungen überschreiben

• (unbekannte) Drucker im Netz finden

• Liste der besonderen Fähigkeiten eines Druckers abrufen

• Informationen über Treiber (Installation, Konfiguration, Auffinde-Ort) verfügbar machen

• IPP-Drucker oder Server anweisen, das zu druckende Dokument selbst abzuholen

• Drucker und Druckserver konfigurieren

• Der Server ist dabei eine abstrahierte Form eines Ausgabegerätes (kann auch ein Fax sein)

 

Adressierung über URI´s

• Der IPP-Dienst wird über die Portnummer 631 angesprochen

• Ansprechen über einen Standard-Webbrowser http://drucker.org:631/

• Bei zukünftigen Browsern ohne die Portnummer ipp://drucker.org/

IPP ist eine Erweiterung vom HTTP/1.1

(Hypertext-Transfer-Protocol)

 

Die Umsetzung des Protokolls

• IPP setzt auf dem HTTP/1.1-POST-Mechanismus auf

• Die Kommunikation zwischen Client und Server erfolgt über herkömmliche Anfragen (Requests) und Antworten

• Die Kommandos werden als ASCII-Code übermittelt

• Der IPP-Service wird durch die “Multimedia Internet Mail Extension” (MIME) bekannt gegeben: (application/ipp)

 

 

Sicherheit und IPP

Keine eigenen Sicherheitsmechanismen, aber möglich über …

• TLS (“Transport Layer Security”), welches auf SSL (“Secure Sockets Layer ”) basiert

• IPSec (“Internet Protocol Security”)

JSP

-          Aufgabe 4 nachvollziehen / Code verstehen

-          Was ist eine JSP-Datei? HTML-Datei mit Scriplets

-          Was sind Servlets?

-          Warum sind JSPs und Servlets invers zueinander?

-          Seite 16 Bild,31,ab 50 rosa

-          Servlet Lebenszyklus

-          Was läuft in Servlet-Engine?

-          Was sind JSP-Aktionen, Direktiven, Ausdrücke...?

-          Kann ich bzw. wie frage ich Sessions ab? Implizite Sessionvariablen

-          Was machen Scopes? Definieren den Gültigkeitsbereich,

-          Beispiele für Sessions: (session, page, request, applicaction)

-          Wo würden Sie was einsetzten z.B. Request bei Warenkorb???

-          JavaBeans mit useBean anbinden

-          Methoden der JavaBeans ansprechen

 

PHP (Hypertext Preprocessor)

Übungen ansehen.

-          Serverseitige Scriptschprache

-          in der Regel in HTML eigebettet

-          ähnlich C, nicht so komplex

-           

-          SSI – PHP?

 

SSI (Serverside Include)

-          2 Tier, 3 Tier-Architectur

-          Folie 65

 

Es gibt zwei Arten von SSI Programmierung. Die zustandslose sowie die zustandsbehaftete. Bei der zustandsbehafteten gibt es mehrer Möglichkeiten den Zustand zu ermitteln.

-          Statusinformation werden in jedem weiteren CGI-Link als versteckte Parameter mit übergeben. Dieses Verfahren nennt man URL-Rewriting

-          Mit den von Netscape enwickelten Cookies werden bei Client abgespeichert und werden bei weiteren Anfragen an den Server mitgeschickt.

Könnte man sich angucken, muss man aber nicht:

MySQL (einmal durchlesen)

Lebenszyklus eines Servlet
Der Browser schickt eine Anfrage an den Webserver
Der Servlet-Container nimmt eine HTTP-Anfrage an und ermittelt anhand eines URL-Mapping, dass sich um eine JSP handelt.
Ist das Servlet noch nicht geladen (instanziiert), so wird es vom Servlet-Container geladen, der darauf die Methode init aufruft.
Die Methode service wird aufgerufen, in welcher das Servlet den HTML-Code erzeugt.
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
Der Servlet-Container beendet das Servlet eventuell mit destroy.

Globale Variablen eines Skriptlets
request: Die von javax.servlet.ServletRequest definierte Servlet-Anforderungsklasse.
response: Die von javax.servlet.ServletResponse definierte Servlet-Antwortklasse.
out: Die von javax.servlet.jsp.JspWriter definierte Ausgabenkomponentenklasse.
pageContext: Die von javax.servlet.jsp.PageContext definierte Seitenkontextklasse.
Session: Das von javax.servlet.http.HttpSession definierte Sitzungsobjekt.
application: Der von javax.servlet.ServletContext.getServletConfig().getContext() definierte Servlet-Kontext.
config: Das von javax.servlet.ServletConfig definierte Servlet-Konfigurationsobjekt.
page: Die von java.lang.Object definierte Seitenklasse.
exception: Die noch nicht behobene Ausnahme der Klasse java.lang.Throwable.

Ausdruck
<%= <Value> %> enthält am ende kein Semikolon, dient zur direkten Ausgabe.

Direktiven (zur Kompilierungszeit)
dienen als Nachrichten, die von einer JSP-Seite zum JSP-Container übermittelt werden. Sie werden dazu verwendet, um globale Werte wie z.B. Klassendeklarationen, zu implementierende Methoden, Ausgabeinhaltstypen usw. zu setzen.
<%@ include {attribut=“<value>“} %> fügt zur Kompilierungszeit die Inhalte einer Datei
<%@ page {attribut=“<value>“} %> Beispiel: <%@ page import="java.util.Date, java.lang.util“%>
<%@ taglib {attribut=“<value>“} %> taglib ist für eigene Tag Definitionen da

JSP-Aktionen (während der Ausführung)
<jsp:include .../> inhalt an die stelle füllen
<jsp:forward .../> neue Seite beschreiben
<jsp:plugin .../> z.B. applets einbinden
<jsp:fallback .../> fehler beim einbinden wird alles zurückgesetzt und der inhalt ausgegeben
<jsp:useBean .../> Beans werden Erzeigt.
<jsp:setProperty .../> Parameter an die Beans übergeben set ....(...)
<jsp:getProperty .../> Eigenschaften einer Bean auslesen get....(....)
<jsp:params .../>
<jsp:param .../> an Plugins z.b. an Applets

Deklaration
<%! %>. Für die Deklaration von statischen Variablen und Funktionen.