% T1-Howto.txt Hinweise zur T1-Vorlesung im WS'2004/2005: 1a) Organisatorisches: Veranstalter: Prof. Dr. Klaus von der Heide Vorlesungstermin: jeweils Do, 10-12, Phil-A Webseite zur Vorlesung: http://tams-www.informatik.uni-hamburg.de/lehre/ws2004/vorlesungen/t1/ (Hinweis: diese URL wird im folgenden als $T1WWW referenziert) Webseite zu den Übungen: http://tams-www.informatik.uni-hamburg.de/lehre/ws2004/t1Uebung/ Übungsgruppenleiter: Termine: Räume: Zyklen: Stefan Wiegreffe Di 14-16 C 104 A / B Stefan Bergstedt Mi 8-10 F 535 A Simon Hess Mi 12-14 F 535 A / B Birgit Koch Mi 12-14 F 132 A / B Felix Klöckner Mi 14-16 D 129 A / B Felix Klöckner Mi 16-18 F 535 A / B Die Übungen umfassen 1 SWS; es hat sich bewährt dies als 14-tägig zweistündig durchzuführen. Wir versuchen, die Aufteilung in die einzelnen Gruppen (Termine und Zuteilung A/B für erste/zweite Woche) unbürokratisch direkt in der Vorlesung zu organisieren. Damit genügend Vorlesungsstoff für die Übungen vorhanden ist, beginnen die Übungen erst in der dritten Woche: Erster Übungstermin für Gruppe A: 2.11 bzw. 3.11 Erster Übungstermin für Gruppe B: 9.11 bzw. 10.11 Weitere Übungstermine für die Gruppen A/B: A: 02/03.11 16/17.11 30.11/01.12 14/15.12 11/12.01 25/26.01 B: 09/10.11 23/24.11 07/08.12 03/04.01 18/19.01 01/02.02 Die Übungsaufgaben sind jeweils (spätestens) am Montag 12:00 vor der zugehörigen Übung von Gruppe A abzugegben; der erste Übungszettel also bis 2.11. Scheinkriterien sind regelmäßige aktive Teilnahme (inklusive Vorrechnen von Aufgaben) und 50% der Punkte aus den Übungsaufgaben. (Mailadressen, Telefonnummern, Sprechzeiten der Übungsgruppenleiter werden in der jeweiligen Übung bekanntgegeben). 1b) Skript Die Vorlesung wird mit dem "Interaktiven Skript T1" durchgeführt, das in Kürze in den folgenden Versionen zum Download zur Verfügung stehen wird: a. Matlab-Skript mit Browser mscriptview b. HTML-Skript, passiv (zum Nachlesen und Ausdrucken) c. HTML-Skript, aktiv mit Java-Applets und t1runner.exe d. HTML-Skript mit Java/Jython-Applets (für Übungsaufgaben) Das Grundkonzept dahinter ist das sogenannte "explorative Lernen": das Material zur Vorlesung ist nicht fest vorgegeben, sondern alle im Skript vorkommenden Funktionen können beliebig oft und mit immer neuen Parametern ausprobiert werden ("was passiert eigentlich, wenn ich hier einen negativen Wert einstelle?"). Die dadurch mögliche aktive Auseinandersetzung mit dem Lehrstoff führt bei den meisten Lernenden zu einem weit intensiveren Verständnis als ein rein passives Zuhören in der Vorlesung und Nachlesen in Lehrbüchern. Übrigens können im interaktiven Skripte alle verwendeten Funktionen selbst nach Belieben verändert (und verbessert!) werden, da die Quelltexte ohne Ausnahme zur Verfügung stehen. a. Die erste Variante (Matlab-Skript mit Browser mscriptview) wird auch während der Vorlesung verwendet. Zum Anzeigen der Skripte mit dieser Version ist allerdings eine Vollversion der Software "Matlab" erforderlich; Details werden in Abschnitt 2 und 3 beschrieben. b. Das "passive" HTML-Skript wird mit einem Konverterprogramm automatisch aus der Matlab-Version erzeugt und kann mit jedem HTML-Browser angezeigt werden. Diese Version eignet sich auch zum Ausdrucken (leider haben einige Webbrowser bzw. Druckertreiber Probleme mit Formelzeichen, hier hilft nur Ausprobieren). Die zugehörige URL ist $T1WWW/skript/t1_print/ c. Als Zwischenlösung zwischen dem reinen Matlab-Skript und dem passiven HTML-Skript werden wir im Verlauf des Wintersemesters auch eine vorcompilierte Applikation (t1runner.exe) zum Download anbieten, die die meisten Funktionen des T1-Skripts enthält und ohne Matlab-Lizenz benutzt werden kann. Durch Integration von Java-Applets in das HTML-Skript können die zugehörigen Funktionen in t1runner.exe aufgerufen werden, so dass auch ohne Matlab ein voll interaktives Skript zur Verfügung steht. Diese Variante wird in Abschnitt 4) beschrieben. d. Alternativ zur Plattform Matlab können auch andere Software- umgebungen als Grundlage für interaktive Skripte dienen. Für die Bearbeitung von Übungsaufgaben werden wir eine Reihe von Webseiten mit integrierten Java/Jython-Applets online stellen. Die Applets dienen jeweils zur Überprüfung der Lösungen zu den zugehörigen Übungsaufgaben und liefern Hilfestellung bei noch nicht ganz vollständigen Eingaben. Anders als bei den Matlab-Skripten ist in diesem Fall lediglich ein Web-Browser mit installiertem Java (Version JDK 1.4.1 oder höher, 1.4.2 oder 1.5 empfohlen) notwendig. Details sind unten in Abschnitt 5) beschrieben. 1c) Systemanforderungen für das interaktive T1-Skript: Windows 95/98/ME, Windows 2000: Matlab 6.5.1 oder 5.3 (auch Student Edition) HTML-Browser (Mozilla, Internet Explorer...) JDK 1.4.2+ Hinweis: Matlab 7.x nicht installierbar Windows XP: Matlab 7.x, 6.5.1, oder 5.3 (auch Student Edition) HTML-Browser (Mozilla, Internet Explorer...) JDK 1.4.2+ Linux Kernel 2.4.x, 2.6.x: Matlab 7.x oder 6.5.1 HTML-Browser (Mozilla, Konqueror, ...) JDK 1.4.2+ MacOS: Matlab 7.x oder 6.5.1 HTML-Browser JDK 1.4.2+ Solaris: Matlab 7.x oder 6.5.1 HTML-Browser JDK 1.4.2+ 1d) Literaturempfehlungen: werden in der Vorlesung bekanntgegeben. 2) Matlab Matlab steht für "Matrix Laboratory" und ist das führende Software- system für angewandte Mathematik (die Konkurrenten wie Mathematica, Maple, MuPAD etc. sind oft mehr auf reine Mathematik ausgerichtet). Kern ist eine Programmiersprache, die direkt Operationen auf Vektoren und Matrizen unterstützt. Dies erlaubt eine sehr kompakte und gut lesbare Schreibweise von mathematischen Operationen. Hersteller ist die Firma "Mathworks": www.mathworks.com bzw. www.mathworks.de Auch ohne Vorkenntnisse kann Matlab wie ein Taschenrechner benutzt werden, der praktisch alle benötigten Funktionen kennt - inklusive numerischer Differentiation, Integration, graphischer Darstellung von Funktionen, Lösung von Gleichungssystemen und Differential- gleichungen, etc. Als Ergänzung gibt es mehrere Funktionsbibliotheken ("Toolbox"en), mit denen sich Matlab um zusätzliche Funktionen erweitern lässt, z.B. für digitale Signalverarbeitung, die Bildverarbeitung, Bioinformatik oder auch Finanzmathematik. Das T1-Skript macht starken Gebrauch von den Möglichkeiten zur Visualisierung durch Graphiken und nutzt auch die interaktive Audio- ausgabe. Tatsächlich ist auch der Browser "mscriptview" zur Anzeige der Skripte selbst in Matlab geschrieben. % Deutsche Kurzeinführung des RRZ-Hamburg: % http://www.rrz.uni-hamburg.de/RRZ/W.Wiedl/Skripte/Matlab/ 2a) Matlab-Versionen: Matlab gibt es sowohl für Windows als auch für verschiedene Varianten von Unix; darunter spezielle Versionen für Linux, Solaris und MacOS. Alle Funktionen des T1-Skripts sollten mit den aktuellen Versionen 7.x (R14) und 6.5.x (R13) von Matlab funktionieren. Probleme mit diesen Versionen bitte mit Beschreibung und Protokoll als Fehler an uns melden. Viele Funktionen laufen auch noch mit der älteren Version 5.3 (R12), insbesondere auch mit der früheren "Student Edition". Diese Version ist aber nicht mehr erhältlich, so dass die Funktionen nicht mehr mit 5.3 getestet wurden. Bei Problemen kann auf die entsprechenden Funktionen aus dem Wintersemester 2002 zurückgegriffen werden, die alle mit der 5.3 Student Edition kompatibel sind. Als Alternative zur vollständigen Matlab-Umgebung werden wir auch vorcompilierte Programme bereitstellen, die mit dem Matlab-Compiler erstellt wurden. Die zugehörige Laufzeitumgebung erfordert entweder Windows XP oder ein aktuelles Linux; ältere Windows-Versionen und eine MacOS-Version werden vom Matlab-Compiler bisher nicht unterstützt. 2b) Eigene Matlab-Installation und Lizenz: Für Studierende bietet Mathworks im Rahmen der "Student Version" eine Vollversion von Matlab zu sehr günstigen Preisen an. Das Basispaket mit Matlab, Simulink und der Symbolic Math Toolbox kostet derzeit 70$. Weitere Toolboxes lassen sich ebenfalls zu (noch akzeptablen) Preisen ergänzen. Schon bei Benutzung als besserer Taschenrechner und als Hilfe bei Bearbeitung der Mathe-Übungsaufgaben könnte sich diese Investition lohnen: www.mathworks.de/ -> Forschung&Lehre -> Student Version Zum Schnäppchenpreis (ebay?) ist auch die Beschaffung einer älteren Version von Matlab eine Überlegung wert; die meisten Grundfunktionen und die Plot-/Graphikversionen sind seit Version 5.x vorhanden. (Bei Beschaffung der ehemaligen Matlab 5.3 "Student Edition" ist zu beachten, dass die Größe der Datenstrukturen auf 32767 Elemente begrenzt ist, was bei Audio- und Bildverarbeitung eine empfindliche Einschränkung darstellt. Siehe auch die Anmerkung unter 2a). 2c) Matlab auf den (SPARC-) Workstations am FB Informatik: Das regionale Rechenzentrum der Universität Hamburg (RRZ) verfügt über eine Anzahl von "shared"-Lizenzen für Matlab (R12, R13, R14), die in der gesamten Universität genutzt werden können. Auf allen SPARCstations des Informatik-Rechenzentrum sollten die benötigten Pfade vorinstalliert sein. Matlab kann mit dem Befehl /usr/local/bin/matlab (bzw. einfach matlab) gestartet werden, sofern noch Lizenzen frei sind. Andernfalls gibt es eine Fehlermeldung, dass schon alle vorhandenen Lizenzen benutzt werden (in diesem Fall bitte später noch einmal versuchen). Anschließend bitte einmal die benötigten Pfade zu den T1 und MSV Toolboxen setzen und dann das interaktive Skript starten, siehe 3). 2d) Matlab auf den (Windows-/Linux-) Workstations am AB TAMS: Zusätzlich zu den Lizenzen des RRZ verfügt der Arbeitsbereich TAMS über eine "classroom Lizenz" mit 15 Lizenzen, die auf den Rechnern des Arbeitsbereichs installiert sind. Bei Interesse bitte einfach vorbeikommen und schauen, ob Rechner frei sind. (Im Zweifelsfall haben Diplomanden und Projekt-Teilnehmer aber Vorrang vor Erstsemestlern). Windows: Startmenü -> Programme -> Matlab Linux: /opt/matlab/bin/lmstart /opt/matlab/bin/matlab 3) Konfiguration von Matlab und mscriptview Dieser Abschnitt beschreibt die Installation und Inbetriebnahme der Matlab-Version des interaktiven Skripts. Dabei wird eine lauffähige Matlab-Installation (6.5.1 oder 7.x) vorausgesetzt. 3a) Download Die Matlab-Version der interaktiven Skripte umfasst Hunderte von von einzelnen Matlab-Funktionen und zugehörigen Dateien, die für den einfachen Download als zwei ZIP-Archivdateien auf unserem Webserver zur Verfügung stehen: $T1WWW/msv.zip (mscriptview-Browser, Hilfsfunktionen) $T1WWW/t1.zip (Funktionen zur T1 Vorlesung) 3b) Verzeichnisstruktur Im Prinzip können die Installationspfade für die einzelnen Dateien völlig beliebig gewählt werden. Um spätere Versionskonflikte zu vermeiden, hat es aber sich bewährt, jeweils einzelne Verzeichnisse für die Dateien aus msv.zip und t1.zip zu verwenden. Dies entspricht auch der Konvention von Mathworks, die für jede Toolbox jeweils ein eigenes Verzeichnis vorsieht. Unter Unix/Linux empfiehlt sich zum Beispiel ein "matlab"-Unter- verzeichnis im Homeverzeichnis mit weiteren Unterverzeichnissen: ~/matlab/ ~/matlab/msv/ % mscriptview-Dateien abtast.m abtastdemo.m ... zoom3d.m ~/matlab/t1/ % T1-Vorlesung add.m addbabylon.m ... zweigauss.m ~/matlab/work/ % privates "Work"-Verzeichnis Eine entsprechende Verzeichnisstruktur ist auch für Windows-Rechner möglich; da einige Matlab- und Java-Funktionen aber nicht optimal mit Leerzeichen in Dateinamen zurechtkommen, kann es eventuell Probleme mit den voreingestellten Verzeichnisnamen geben. Statt C:\Dokumente und Einstellungen\username\matlab\msv\ etc. ist es deshalb besser, Verzeichnisse wie C:\temp\username\matlab\msv\ anzulegen. Hinweis: für weitere Vorlesungen (T2, Digitale Signalverarbeitung, etc.) lassen sich dann einfach neue Verzeichnisse (~/matlab/t2 etc.) hinzufügen. 3c) Dateien auspacken Nach Anlegen der Verzeichnisse einfach das msv.zip Archiv in das msv-Verzeichnis und t1.zip in das t1-Verzeichnis auspacken. Das Resultat sollte dann so ähnlich aussehen, wie oben unter 3b) skizziert. 3d) Matlab "path" setzen Damit Matlab die neu installierten Dateien auch findet, müssen die zugehörigen Verzeichnisse in den sogenannten "path" eingetragen werden. Dazu bitte Matlab starten und dann über das Menü unter File->Set Path die neuen Pfade auswählen und in die Liste mit aufnehmen, und dann den aktualisierten Pfad abspeichern. Alternativ kann man auch im Matlab Workspace die Funktion path über die Kommandozeile aufrufen: oldpath = path; % liefert bisherigen Pfad p1 = path( oldpath, 'c:\temp\username\matlab\msv' ) %msv anfügen p2 = path( p1, 'c:\temp\username\matlab\t1' ) % t1 anfügen ... 3e) Mscriptview Browser starten Im Workspace den Browser über die Kommandozeile starten: mscriptview( 't1' ) Hinweis: Beim Aufruf von mscriptview ohne Argumente werden alle Matlab-Dateien (im aktuellen Pfad) nach Vorlesungen durchsucht, was einige Zeit dauern kann. Anschließend erscheint eine Menüseite, über die man die gewünschte Vorlesung auswählen kann. 3f) Mscriptview Browser benutzen * Anklicken eines Hyperlinks öffnet die angegebene neue Seite * Anklicken von "weiter" und "zurück" blättert in der aktuellen Seite * Taste 'n' zum Weiterblättern (nächster Bildschirm) * Taste 'l' zum Zurückblättern (letzter Bildschirm) * Taste 'h' für Hilfe zum Browser * Taste 'p' zum Ausdrucken des aktuellen Bildschirms * Taste 's' für (rekursive) Suche durch das gesamte Skript Bei den farblich hervorgehobenen Codeblöcken handelt es sich um die eigentlichen interaktiven Elemente. Ein erster Mausklick in einen solchen Block markiert diesen Block als aktiv. Ein zweiter Mausklick in einen aktivierten Block führt zur Ausführung der jeweiligen Codeblocks im Matlab-Workspace. (Abhängig von der Funktion kann das durchaus einige Sekunden dauern; bei längerer Rechenzeit finden sich entsprechende Hinweise im zugehörigen Text). Ausgaben werden meistens in neuen Fenstern mit Graphiken ausgegeben; einige Funktionen schreiben ihre Ausgaben aber auch einfach in den Workspace. * Taste 'c' zum Laden des aktiven Codeblocks in den Matlab-Editor. Dort kann der Code dann nach Belieben verändert und von dort neu ausgeführt werden. * Taste 'ENTF' zum Schließen des aktiven mscriptview-Fensters oder eines Graphikfensters. * Taste 'ESC' zum Schließen aller aktiven Graphikfenster. Weitere Informationen in der Datei "msv/gettingstarted.txt". 4) Konzept und Konfiguration von t1shell und t1server Zum Arbeiten mit der oben beschriebenen Version des interaktiven Skripts ist eine Matlab-Installation und -Lizenz notwendig. Da zu erwarten ist, dass trotz des guten Preis/Leistungs-Verhältnisses nicht alle Studierenden die Matlab Student Version kaufen, werden wir im Wintersemester 04/05 zusätzlich vorcompilierte Software anbieten. Mit den Matlab-Programmen 't1shell' und 't1server' können die meisten (aber nicht alle) Funktionen aus dem T1-Skript auch ohne Matlab-Lizenz interaktiv benutzt werden. 4a) Prinzip und Matlab Component Runtime Das Grundprinzip besteht darin, die originalen Matlab-Funktionen mit dem Matlab-Compiler in standalone-lauffähige Applikationen umzusetzen. Dabei gibt es zwei Varianten: * t1shell dient als Hauptprogramm mit eigener Benutzeroberfläche, die eine Liste aller verfügbaren Funktionen anzeigt. Dort wird die gewünschte Funktion markiert und dann entweder mit den originalen Parametern aus dem Skript oder mit frei einstellbaren Parametern ausgeführt. * t1server startet einen kleinen Webserver auf Port 8888 und wartet auf Zugriffe der zugehörigen "MCCApplet" Java-Applets aus dem entsprechenden HTML-Skript $T1WWW/skript/t1_mcc_applets/. Beim Anklicken eines Applets im Skript sendet dieses den jeweiligen Matlab-Code an den t1server und dieser führt dann die Funktion aus. Zusätzlich zu dieser Applikation wird die sogenannte "Matlab Component Runtime" (MCR) benötigt, die bisher für Windows XP, Linux 2.4+, MacOSX und diverse Unix-Varianten zur Verfügung steht. Dabei handelt es sich um ein eingeschränktes Matlab, dass zwar über (fast) alle mathematischen und Graphikfunktionen verfügt, bei dem aber der interaktive Workspace abgeschaltet ist. 4b) Vorbereitung: Download der Matlab Component Runtime Die zum Arbeiten mit t1runner benötigte MCR steht auf unserem Webserver zum freien Download zur Verfügung. Wegen der Dateigröße von fast 90 MByte ist eine schnelle Internetverbindung zu empfehlen. Alternativ können wir auch (einzelne) Versionen auf CD-R oder auf Flash-Speichersticks bereitstellen; bitte dann untereinander tauschen. * Download und Installation für Windows XP: $T1WWW/mcr-windows/MCRInstaller.exe (87 MByte) Achtung: ältere Versionen von Windows werden NICHT unterstützt. Nach dem Download einfach den MCRInstaller.exe ausführen, um das Archiv auszupacken. Nach einiger Zeit erscheint ein Setup-Programm, das durch den Rest der Installation führt und die benötigten Einstellungen (Pfade) in der Windows Registry vornimmt. * Download und Installation für Linux 2.4.x und 2.6.x: $T1WWW/mcr-linux/MCRINstaller.zip (89 MByte) $T1WWW/mcr-linux/MCRINstaller.txt (1 KByte) $T1WWW/mcr-linux/set_mcr.csh (1 KByte) Nach dem Download einfach das ZIP-Archiv in ein beliebiges Verzeichnis wie z.B. /opt/MCR auspacken. Vor dem Starten von vorcompilierten Matlab-Applikationen müssen diverse Suchpfade und Librarypfade in der jeweiligen Shell eingetragen werden. Details und Erläuterungen dazu finden sich in der Datei MCRInstaller.txt. Das obige Skript für die C-shell kann als Beispiel dienen (es muss nur der Pfad zum Installations- verzeichnis eingetragen werden). csh>cd matlab/work % Beispielverzeichnis csh>source set_mcr.csh % Pfade initialisieren csh>./t1shell % t1shell Applikation starten ... 4c) Download von t1shell Vorcompilierte Matlab-Applikationen bestehen aus zwei Komponenten: dem eigentlichen Progamm (t1shell.exe bzw. t1shell) und der zugehörigen CTF-Datei (t1shell.ctf). Dieses "Component Technology File" enthält die verschlüsselten Matlab-Anweisungen der ursprünglichen Matlab-Funktion und die Verweise auf alle benötigten Funktionen aus der MCR. Zusätzlich wird noch eine dritte Datei (t1shell.mat) benötigt, die Hilfeinformationen zu den einzelnen enthaltenen Funktionen enthält. Die entsprechenden Dateien bitte einzeln vom Webserver herunterladen und in ein beliebiges Verzeichnis (z.B. ~/matlab/work) verschieben: * Windows XP: $T1WWW/mcr-windows/t1shell.exe % Windows-Programm, ca. 10 KByte $T1WWW/mcr-windows/t1shell.ctf % zugehöriges CTF, ca 500 KByte $T1WWW/mcr-windows/t1shell.mat % Hilfetexte, ca 40 KByte * Linux: $T1WWW/mcr-linux/t1shell % Linux-Programm, ca. 10 KByte $T1WWW/mcr-linux/t1shell.ctf % zugehöriges CTF, ca 500 KByte $T1WWW/mcr-linux/t1shell.mat % Hilfetexte, ca 40 KByte 4d) Bedienung von t1shell Zum Starten von t1shell bitte einfach das entsprechende Programm aufrufen; unter Windows ist es günstig, das Programm nicht über Startmenü->Ausführen sondern aus einer Eingabeaufforderung (cmd.exe) heraus aufzurufen, damit man Textausgaben und eventuelle Fehlermeldungen zu sehen bekommt. (Fehlermeldungen beim Start des Programm sind meistens auf falsche oder unvollständige Einstellungen der Pfade zurückzuführen. In solchen Fällen die jeweiligen Einstellungen überprüfen und dann neu starten.) Hinweis: Der allererste Programmstart von t1shell kann mehrere Sekunden dauern, da die Matlab Component Runtime in diesem Fall die CTF-Datei auspackt und entschlüsselt. Dabei wird automatisch ein Verzeichnis t1shell angelegt. Bei Updates von t1shelt1shell muss dieses Verzeichnis eventuell von Hand gelöscht werden, um Versions- konflikte zu vermeiden. Nach Programmstart erscheint ein Fenster mit mehreren Auswahl- und Textfeldern. Die Bedienung erfolgt in drei Schritten: 1. Auswahl der gewünschten Funktion in der Auswahlliste. Die Funktionen sind dort zusammen mit den im Skript verwendeten Parametern enthalten; die Liste kann entweder alphabetisch nach den Funktionsnamen oder aber nach der Reihenfolge im Skript sortiert werden. 2. Durch Doppelklicken eines Eintrags in der Funktionsliste kann die jeweilige Funktion direkt ausgeführt werden. Anklicken des "Info"-Buttons liefert Informationen zur gerade ausgewählten Funktion, unter anderem die Anzahl der Eingabe- und Ausgabeparameter dieser Funktion. 3. Eintragen anderer Eingabeparameter für die ausgewählte Funktion in das Textfeld. Alle Parameter können in Matlab-Syntax eingegeben werden; dadurch sind auch Matrizen oder Funktionen als Parameter möglich: [0:0.01:2*pi] { 'a'; 'b'; 'c'; 'd' } str2morse( 'INFORMATIK' ) Durch Anklicken des "Ausführen"-Buttons wird die ausgewählte Funktion mit den eingestellten Parametern aufgerufen. Bug: Die Funktionsliste enthält auch einige Funktionen wie 'msvShowImage' oder 'openbyextension', die von t1shell nicht sinnvoll ausgeführt werden können. Hinweis: Aus lizenzrechtlichen Gründen erlaubt t1shell nur das Aufrufen der Funktionen aus der T1-Vorlesung. Insbesondere ist der Zugriff auf eval() (und damit große Teile von Matlab) nur eingeschränkt möglich. 4e) Einsatz von t1server Der Hauptnachteil von t1shell ist die fehlende Integration in das Skript. Als Alternative stellen wir deshalb eine eigene Version des HTML-Skripts bereit, in das kleine Java-Applets eingebettet sind. Im Skript können dann die farblich hervorgehobenen Applet-Blöcke nach Belieben editiert und durch Doppelklicken aufgerufen werden. Dabei wird der aktuelle Text des Applet-Blocks über eine Netzwerk- verbindung zum t1server Serverprozess übertragen und dort ausgeführt. (Hinweis: unter Windows muss man sehr schnell klicken ohne die Maus zu bewegen; alternativ reagieren die Applets daher auch auf shift-click). Der zugehörige Server wird von der Matlab-Applikation t1server realisiert. Da dabei im Hintergrund ein TCP-Serverprozess (auf Port 8888) gestartet wird, kann es zu Warnungen oder Fehler- meldungen von einer aktiven Firewall oder Antivirenprogrammen kommen. In diesem Fall entweder das Starten des Serverprozesses manuell erlauben oder die Firewall geeignet konfigurieren. Sie benötigen die Matlab Component Runtime und die folgenden Dateien: * Windows XP: $T1WWW/mcr-windows/t1server.exe % Windows-Programm, ca. 10 KByte $T1WWW/mcr-windows/t1server.ctf % zugehöriges CTF, ca 500 KByte * Linux: $T1WWW/mcr-linux/t1server % Linux-Programm, ca. 10 KByte $T1WWW/mcr-linux/t1server.ctf % zugehöriges CTF, ca 500 KByte Sie können sowohl die HTML-Seiten direkt von unserem Webserver ($T1WWW/skript/t1_mcc_applets) verwenden oder die HTML-Dateien lokal auf Ihrem Rechner installieren. Beim ersten Aufruf einer Seite mit Applets müssen Sie die Sicherheitsabfrage des Browsers bestätigen. Wir verwenden im Moment signierte Java-Applets, da die Alternative eine sehr umständliche Konfiguration voraussetzt (vgl. Abschnitt 4x). ACHTUNG: auf Multiuser-Maschinen können alle angemeldeten Benutzer auf einen gestarteten t1server Prozess zugreifen. Es ist daher ratsam, den Prozess nicht als Benutzer sondern mit eingeschränkten Rechten zu starten. Ansonsten könnte ein lokaler Benutzer durch entsprechend manipulierte Matlab-Funktionsargumente Zugriff zu Ihren Dateien erlangen. * Windows XP: deaktivieren Sie den remote-Zugang zu Ihrem Rechner * Linux: Installieren Sie das t1server Programm als Benutzer 'nobody' und ändern Sie die Rechte entsprechend, oder bitten Sie Ihren Systemadministrator darum: tcsh> chown nobody /tmp/mcr-linux/t1server* tcsh> cmod 644 /tmp/mcr-linux/t1server.ctf tcsh> cmod 755 /tmp/mcr-linux/t1server tcsh> ls -l /tmp/mcr-linux/t1server* -rw-r--r-- 1 nobody 401442 2004-12-23 09:59 t1server.ctf -rwxr-xr-x 1 nobody 13077 2004-12-23 09:59 t1server tcsh> xhost + localhost Der letzte Schritt ist notwendig, damit der t1server die von Matlab berechneten Fenster auf Ihrem Desktop anzeigen darf. Im Prinzip lassen sich über t1server auch "Denial-of-Service"-Attacken durchführen, zum Beispiel durch Aufruf einer sehr rechen- und speicher- aufwendigen Funktion wie 'demosirpinski(15)'. Das Risiko dafür dürfte aber sehr gering sein, zumal sich (unter Unix/Linux) der Übeltäter über die lastlog Funktion ermitteln lässt. 4x) Hinweise zur .java.policy Datei (unsignierte Applets) Im Moment verwenden wir digital signierte Applet-Archive. Die Applets können dann durch einfaches Bestätigen der Sicherheitsabfrage problemlos gestartet werden. Die Alternative besteht in der Verwendung unsignierter Applets. Da diese jedoch nicht über die notwendigen Zugriffsrechte für Netzwerkverbindungen zum t1server verfügen, müssen diese Rechte explizit durch Einträge in der Java-Konfigurationsdatei .java.policy gesetzt werden. Die notwendigen Einträge sehen so aus: /* Interaktives Skript T1 vom Webserver */ grant codeBase "http://tams-www.informatik.uni-hamburg.de/lehre/ws2004/-" { permission java.net.SocketPermission "*", "connect,accept,listen,resolve"; permission java.lang.RuntimePermission "queuePrintJob"; permission java.util.PropertyPermission "*", "read,write"; permission java.io.FilePermission "${user.home}${/}.elch${/}-", "read,write"; }; Hinweis 1: Überschreiben Sie auf keinen Fall bestehende Einträge in Ihrer .java.policy Datei. Fügen Sie statt dessen einfach die obigen Zeilen am Ende der Datei an. Es besteht aber durchaus die Möglichkeit, dass Sie noch gar keine .java.policy Datei in Ihrem Homeverzeichnis (z.B. c:\Dokumente und Einstellungen\Benutzername) haben. Hinweis 2: Sie müssen Ihren Browser eventuell neu starten, damit die Java-VM die neuen Einträge in der .java.policy Datei auch übernimmt. Hinweis 3: Dateien, deren Namen mit Punkt anfängt (.java.policy), können im Windows-Explorer nur schlecht oder gar nicht bearbeitet werden. Verwenden Sie notfalls die Eingabeaufforderung, um die Datei anlegen oder bearbeiten zu können. Hinweis 4: Der offizielle Weg zum Bearbeiten der .java.policy Datei ist das Java Programm 'policytool'. Aufgrund fehlender Hilfe und absolut kranker Bedienung dürfte ein normaler Texteditor aber die bessere Wahl darstellen. 5) Jython-Applets Um die Funktionen zur Überprüfung und Hilfestellung zu unseren Übungsaufgaben möglichst einfach und universell zugänglich zu machen, sind diese als Java-Applets implementiert. Aus technischen Gründen wird für die meisten Applets Java (JRE/JDK) 1.4.2 oder höher vorausgesetzt. (Dies sollte aber kein Problem darstellen, da diese Version seit ca. einem Jahr für viele Plattformen zur Verfügung steht und viele Vorteile gegenüber älteren Versionen bietet). Zur Ausführung der Applets einfach die entsprechenden Webseiten mit einem Webbrowser aufrufen und den Download der Applets abwarten. Abhängig von den Sicherheitseinstellungen kann es zu einer Nachfrage des Browsers (Wollen Sie das signierte Applet xyz ausführen?) kommen; in diesem Fall die Ausführung des Applets bitte zulassen. Weitere Hinweise zur Bedienung der Applets finden sich auf den jeweiligen Webseiten. (N. Hendrich / K.von der Heide, Hamburg, im Oktober 2004)