Datenverarbeitungstechnik

Größe: px
Ab Seite anzeigen:

Download "Datenverarbeitungstechnik"

Transkript

1 Datenverarbeitungstechnik 2017/18 Reiner Doll, Technikerschule München 1

2 Inhalt Betriebssysteme 4 Systemstruktur 5 Multitasking 10 Scheduler 13 Echtzeit-Betriebssysteme 18 Probleme durch Multitasking 28 Memory Manager 40 Windows 46 Domänenstruktur 47 Active Directory 48 Rechtesysteme 60 Administration (VB.net) 63 2

3 Internettechnologien Apache-Server interaktive Anwendungen (Forms) PHP Datenbanken Entwurf, ER-Modell SQL dynamische Websites Kommunikation in Industrieanlagen Middleware Webservices, REST XML Security 3

4 Betriebssysteme Moderne Leitrechner und in jüngster Zeit auch SPS gewinnen rasant an Rechenleistung. Auch in der SPS-Welt werden Multitasking-Betriebssysteme eingeführt, deren Betrieb in industrieller Anwendung komplexe Anforderungen an den Programmierer stellt. Man muß die Grundlagen kennen, um in der Diskussion, beim Lesen von technischen Unterlagen und schließlich in der Anwendung mithalten zu können. 4

5 Systemstruktur, Grundbegriffe Multitasking Durch schnelles Umschalten von einer Task zur anderen entsteht bei Anwender der Eindurck der Gleichzeitigkeit. Alle Prozesse, die im Zeitmultiplex auf dem Prozessor laufen, müssen gestartet, eine Weile ausgeführt, und dann wieder zugunsten des nächsten Prozesses gestoppt werden. Speicherverwaltung Die Prozesse teilen sich den installierten RAM (heute einige GB). Daten müssen so verwaltet werden, daß alle Prozesse mit dem einen Speicher auskommen. Prozesskommunikation Zu einer Zeit läuft immer nur ein Prozess. Will er mit einem anderen kommunizieren, müssen hierfür Mechanismen (Serverdienste) bereitgestellt werden. 5

6 Diese Aufgaben, und noch eine ganze Reihe weiterer, führen bei heute üblichen modularen Betriebssystemen spezielle Module aus (z.b. der Memory Manager). Die Kommunikation der Module untereinander und das grundliegende Multitasking erledigt der BS-Kern, der sogenannte Micro-Kernel : monolithische Struktur (frühe LINUX, Windows CE, SPS) Alle Funktionen des BS in einem Programm, dem Kernel (meist in C entwickelt) modulare Systemstruktur (moderne Linux, Windows) Modul Modul Modul Micro-Kernel : Kommunikation und Multitasking 6

7 Prozessor als Betriebssystembasis Protected-Mode-Prozessoren (Intel 1982), Schutzringe für verschiedene Programmklassen : Von innen nach außen nimmt die Anzehl verfübarer (kritischer) Befehle (zum Beispiel der Befehl HLT : Prozessor stoppt), sowie die Speicherbereiche, auf die zugegriffen werden darf, ab. Jeder Prozess trägt, vom System vergeben, eine Kennzeichnung (CPL : current privilege level), die bestimmt, in welchem Ring es laufen darf. 7

8 Protected-Mode Betriebssysterm : Windows Es werden nur die Schutzringe 0 (Kernel-Mode) und 3 (User- Mode) benutzt. Eine User-Mode Applikation kann nicht auf die Hardware zugreifen. Hierzu müssen Systemdienste in Ring 0 zur Hilfe genommen werden. 8

9 User-Mode Kernel-Mode Wenn Anwenderprogramme nicht direkt auf Hardware zugreifen können, steigt die Systemsicherheit. Die System Services lassen nur Zugriffe zu, die die Systemstabilität nicht gefährden. Allerdings wird das System (auf einer schwachen Hardware) langsam. 9

10 Multitasking Zeitmultiplex läßt sich gut als rotierende Zeitscheibe darstellen. Task XY CPU Die Zeitscheibe dreht sich, jede Task bekommt eine Zeitlang die CPU zugeteilt. Die zugeteilte Zeit heißt Quantum. Zu Beginn und am Ende jedes Quantums muß das Betriebssystem die Taskumschaltung durchführen, diese Zeiten gehen als Systemrechenzeit den Prozessen verloren. 10

11 Task Der Unterschied zwischen einer Task und einem Programm ist, daß sich eine Task unterbrechen läßt, was bei einem Programm zunächst nicht vorgesehen ist. Rezept für Franzbrötchenteig : 200ml Milch leicht erwärmen und 1 Würfel frische Hefe darin auflösen. 500g Mehl auf die Arbeitsfläche aufschütten und mittig eine Kuhle formen. In diese Mulde ein Ei und die Milch-Hefe- Mischung gießen. Mit zwei Fingern nach und nach die flüssigen mit den festen Zutaten vermengen. Bei der Ausführung werden Sie nun unterbrochen, die Freundin ruft an. Am Besten schreiben Sie auf, wo Sie waren : Ei ist schon drin, Hefe ist in Milch aufgelöst, muß aber wahrscheinlich nachher nochmal gerührt werden, und dann in die Mulde gegossen werden. Dieser Zusatz unterscheidet die Task vom Programm : Weil Sie alle relevante Information über den Ablauf notiert haben, kann die Unterbrechung erfolgen und die Task später fortgeführt werden. 11

12 Taskumschaltung Man kann den Zustand einer Task auch gut als state-machine (Zustandsdiagramm) darstellen : Sleeping : wartet Running : läuft gerade Blocked : nicht lauffähig, wartet auf I/O Eine rechenbereite Task wird rechnend gesetzt ( bekommt die CPU ). Nach ihrem Quantum wird sie wieder schlafen gelegt. Falls eine Task ein (im Vergleich zur CPU unendlich langsames) Peripheriegerät anspricht (Netzwerk, Festplatte usw.), wird sie blockes ( nicht rechenbereit ). Wenn die Peripherie meldet, daß sie fertig ist, wird die Task wieder rechenbereit. 12

13 Scheduler Die Funktion der Taskumschaltung erfüllen zwei wichtige Betriebsystemkomponenten. Der Scheduler legt strategisch fest, welche Task als nächste drankommt und wann. Der Dispatcher führt dann die Taskumschaltung durch. Der Scheduler ist für das Verhalten des Betriebssystems von entscheidender Bedeutung. Es gibt eine ganze Reihe verschiedener Scheduling-Strategien. Für unser Umfeld, die Industrieanwendung, sind folgende von Bedeutung : - Kooperatives Multitasking - Präemptives Multitasking - Echtzeit-Scheduling 13

14 kooperatives Multitasking Bei diesem Verfahren wirkt die running task selber bei der Entscheidung des Schedulers mit, wann sie gestoppt wird. Der optimale Zeitpunkt ist jeweils bei Übergang nach blocked, weil sie ja dann sowieso nicht mehr rechnen kann. Das funktioniert so richtig nur bei sehr interaktiven Systemen (Büro, Spiele usw..), und hat einen gewaltigen Hacken : Wenn eine Programmfehler vorliegt, zum Beispiel eine Endlosschleife, steht das ganze System. Es findet kein Taskwechsel mehr statt, den Rechner kann man dann neu booten. Im Industrieumfeld kann das also nie das primäre Scheduling- System sein. 14

15 preemptive multitasking Das Problem beim kooperativen Multitasking war das Mitspracherecht der Task. Beim preemptive multitasking wird der Taskwechsel deswegen taskunabhängig, durch einen Timer, gesteuert. Egal was eine Task tut, auch wenn sie durch Programmfehler abstürzt, die Systemstabilität ist dadurch nicht gefährdet. Es lohnt sich, über die Auswirkung der Quantum-Länge beim preemptive multitasking nachzudenken. Ein langes Quantum bewirkt, daß das Verhältniss von Taskrechenzeit und Taskumschaltzeit günstiger wird. Die Netto-Rechenleistung des Systems steigt. Ein kurzes Quantum bewirkt, daß die Prozesse schneller wieder drankommen. Das bewirkt eine schnellere Reaktionszeit des Systems z.b. auf Benutzereingaben. Der Anwender fühlt ein schnelles System. 15

16 preemptive multitasking in Windows Windows arbeitete bis Windows NT mit kooperativem Multitasking. Mit einer relativ schwachen Hardware kann so ein einigermaßen schnelles System gebaut werden, für Heimanwender, Gamer usw. optimal. Ab Windows NT hatte Mikrosoft den professionellen Markt im Visier. Dazu mußte das System stabil werden, und (wie z.b UNIX) preemtive arbeiten. Der Windows-Scheduler arbeitet mit 15 Prioritätsstufen : P15 P14 P13 Tx Ty Tz P1 Tk 16

17 P15 ist die höchste Stufe, P1 die niedrigste. Nun werden beginnend mit P15 zunächst alle Tasks abgearbeitet, die in dieser Stufe vorhanden sind. Erst wenn diese alle beendet sind, schaut man in die nächst tiefere Prioritätsstufe. Jedes mal, wenn eine Task in der aktuell arbeitenden Priorität mit einem Quantum nicht zu Ende rechnen kann (das Quantum also voll ausrechnet) fällt sie eine Stufe in der Priorität. (Schon nach wenigen (genau 14) Quanten kommt sie also in P1 an) Falls eine Task, egal in welcher Stufe, interaktiv wird (also z.b. mit einem Benutzer interagiert), wird sie sofort in die höchste Priorität versetzt. Das Quantum ist in der höchsten Priorität kurz (schnelle Reaktion), bei Windows NT waren es 20ms. In der niedrigsten Priorität ist es lang (damals 120ms), um hohe Rechenleistung zu erzielen. 17

18 Echtzeit-Betriebssysteme Im Wesentlichen gibt es drei Familien von Echtzeit-Schedulern. - non preemptive realtime multiplexing (NPRM) - preemptive realtime multiplexing (PRM) - event-driven realtime multiplexing (EDRM) Wie in der Automatisierungstechnik ist das wesentlichste Kriterium der Determinismus. Ein deterministisches System kann in seinem Zeitverhalten berechnet werden. Ob das System schnell genug für eine Anwendung ist, kann ich ausrechnen und damit garantieren. 18

19 Non-preemptive realtime multiplexing NPRM Ein sehr simples Verfahren, in dem die Tasks nicht unterbrochen werden, sondern so geschrieben sind, daß sie nur kurze Rechenintervalle brauchen. Beispiele sind Regler, Meßwerterfassung und ähnliches in Prozessrechnern oder kleinen Microcontrollern. Beispiel : der NPRM-Scheduler des tsm-copters (C++) ( while(1) { if (trigger_200hz ==1) { trigger_200hz = 0; Flightcontrol.Achsregler(); switch (trigger_50hz) { case 1: { Flightcontrol.Höhenregler(); trigger_50hz = 2; } case 2: { Flightcontrol.Gierregler(); trigger_50hz = 3; } case 3: { Flightcontrol.GPS_nick(); trigger_50hz = 4; } case 4: { Flightcontrol.GPS_roll(); trigger_50hz = 1; } }//Ende des 50Hz-Zyklus } //Ende des 200Hz-Zyklus }//Ende der main-loop 19

20 Das Flag trigger_200hz wird von einem Interrupttimer alle 5ms = 1 gesetzt. Damit kommen die Tasks (z.b. Flightcontrol.Achsregle ) alle 20ms dran. Wichtig ist natürlich, daß deren Rechenzeit garantiert unter 5ms liegt Das zeitliche Verhalten läßt sich grafisch darstellen : 5 ms 200Hz A A A A A A A A 50Hz/1 G G 50Hz/2 H H 50Hz/3 G_n G_n 50Hz/4 G_r A = Achslageregler G = Gierregler H = Höhenregler G_n = GPS-Stabilisierung der Nickachse G_r = GPS-Stabilisierung der Rollachse 20

21 preemptive realtime multiplexing PRM Deutlich anspruchsvoller als beim simplen NPRM braucht es hier einen Scheduler und einen Dispatcher. Timer-driven scheduling : Der Entwickler der Software muß das Verhalten seiner Programme kennen. Er legt Prioritäten fest und plant das Scheduling. Als Beispiel hier die Bedienung eines solchen Systems anhand einer modernen SPS von Sigmatec : (Quelle : Sigmatec : Training module Lasal Class.pdf Seite 62) 21

22 Falls ein Prozess niedriger Priorität für die Ausführung länger braucht, wird er durch die Jobs höherer Priorität unterbrochen Der zyklische Prozess Cy5 hat länger gebraucht, und wurde deshalb unterbrochen, um die rechtzeitige Ausführung von Rt1 zu ermöglichen. Die niederprioritäten Prozesse B1 bis B3 werden somit nur dann ausgeführt, wenn noch Zeit bleibt. 22

23 Der Anwender legt also fest, welche Priorität die verschiedenen Prozesse bekommen, und wie häufig sie ausgeführt werden. Diese Einstellungen sind im Konfigurationsmenü der SPS auszuführen. (Wieder am Beispiel der Sigmatec-SPS gezeigt) 23

24 Rate monotonic scheduling RMS Das vermutlich am häufigsten (vor allem bei Microcontrollern) eingesetzt Echtzeitscheduling. Die Prioritäen werden statisch vorbelegt, je kürzer die Periodendauer (rate) eines Jobs, desto höher seine Priorität. Wieder werden dabei Jobs auch unterbrochen (siehe oben) T1 hat höchste Priorität, wird von T2 abgelöst, dieser aber wieder von T1 unterbrochen usw.. 24

25 Event-driven realtime multiplexing Der Scheduling-Vorgang wird nicht im Voraus festgelegt, sondern reagiert dynamisch auf das Verhalten der Prozesse. Wenn bekannt ist, wann jeweils ein Rechenvorgang fertig sein muß (z.b. Werte für einen digitalen Regler, kann ein Verfahren wie Early Deadline First (EDF) genutzt werden. Die Tasks bekommen Prioritäten, die sich von der noch zur Verfügung stehenden Zeit ableiten, die Task, die als erste fertig sein muß, erhält so die höchste Priorität. Das kann sich dynamisch ändern. Bilder, die dieses Verhalten zeigen, sind nicht leicht zu verstehen 25

26 Wir betrachten einen Ausschnitt: D1 D2 Bei t=0 hat T1 (4 ms Periode, 1 ms Laufzeit) hat die kürzeste Deadline (D1), er wird vom Scheduler ausgewählt. Wenn T1 fertig ist (Die Rechenarbeit für D1 ist getan), hat T2 die kürzeste Deadline (D2). Er wird gewählt. Nach 3 ms ist auch er fertig udn hat das Ergebnis für D2 bereit. Nun also T3... und so weiter. Dieses Spiel kann man auch mit Unterbrechungen zeigen, das ist allerdings grafisch dann noch komplizierter. 26

27 Multithreading In modernen Betriebssystemen läßt sich die quasi-parallelität (und bei Mehrprozessorsystemen dann die wirkliche Parallelität) von Prozessen vom Anwender weiter unterteilen. Innerhalb einer Task können Codeteile in Threads unterteilt werden. Alle Threads einer Task arbeiten im gleichen Speicherbereich, ansonsten verhalten sich im Wesentlichen wie Tasks. Beispiel in Visual Basic.net : Anlegen des Threads : Dim thread1 As New System.Threading.Thread(AddressOf linear) Programmcode :.. irgendwelcher Code.. End Sub Private Sub linear().. Starten des Threads thread1.start() 27

28 Probleme durch Multitasking Leider bringt der Betrieb eines Rechners (oder einer SPS) in Multitasking nicht nur Vorteile, sondern auch Schwierigkeiten mit sich. So können fehlerfreie Programme sporadisch falsche Ergebnisse produzieren, Prozesse können sich sogar gegenseitig blockieren. 28

29 Deadlock Prozesse A und B wollen Daten von einer Platte zur anderen kopieren. Prozess A will HD1->HD2, Prozess B andersrum. Die Medien werden vor dem Zugriff mit einem lockbit reserviert. Programmablauf beider Prozesse : Reserviere Quell-HD Reserviere Ziel-HD Lies Daten von Quelle Schreib Daten in Ziel Gib Ziel-HD frei Gib Quell-HD frei 29

30 Im Multitasking kann jetzt folgendes passieren: Prozess A : Prozess B : Reserviere Quell-HD HD1 ist jetzt für A reserviert Reserviere Quell-HD Scheduler wählt Prozess B HD2 ist jetzt für B reserviert Hier Reserviere geht s Ziel-HD nicht weiter, B wartet auf Freigabe von HD1 Reserviere Ziel-HD A wartet auf Freigabe von HD 2. Deadlock! Quantum B ist zu Ende. Scheduler wählt wieder A Die beiden Prozesse blockieren sich gegenseitig : deadlock! 30

31 Race condition Zwei Prozesse in einer Industrieanlage erhöhen den Wert eines gemeinsamen Zählers (z.b. 2 Stanzen arbeiten in den gleichen Behälter). Der Zählvorgang ist in beiden so programmiert : Lies Zählerwert n Erhöhe n um 1 Schreib n in Zähler In dieser Anordnung passiert nun etwas äußerst unangenehmes: Die Prozesse bleiben nicht etwa stehen, sonden produzieren sporadisch, nicht reproduzierbar, Rechenfehler, obwohl sie offenbar fehlerfrei programmiert sind! 31

32 Der Zählerwert sei 18. Prozess A will 1 addieren, Prozess B auch : Prozess A Prozess B Lies Zählerwert n (18) Erhöhe n um 1 (19) Lies Zählerwert n (18) Erhöhe n um 1 (19) Schreib Zähler (n=19) Schreib Zähler (n=19)! Also : = 19 Oh! Mehr dazu : Das Problem der 5 Philosophen (Djikstra, rund 1970) 32

33 Semaphore Diese Probleme sind nicht neu. Im Eisenbahnwesen kann es vorkommen, daß 2 Züge von 2 Seiten Seiten den selben eingleisigen Steckenabschnitt befahren wollen. Dazu hat man das Semaphor erfunden. Dieses Signal wird gesetzt, sobald ein Zug den kritischen Abschnitt befährt, der aus der Weiche zum Tunnelabschnitt, dem Tunnel selber, sowie der Weiche nach dem Tunnelabschnitt besteht. Erst wenn er komplett durch ist, gibt das Semaphor den Streckenabschnitt wieder frei. Angeblich wurde dafür ursprünglich ein Besen benutzt, der in einem Rohr steckte, das so an der Weiche montiert war, daß der Lokführer ihn rausziehen und an der anderen Weiche in ein gleiches Rohr wieder einstecken konnte. Ohne Besen keine Weiterfahrt! 33

34 In der Informatik benutzt man dazu spezielle Variablen, die man Sempaphor, oder wenn sie nur 2 Zustände haben können, Mutex (von : mutual exclusion), nennt. Wichtig ist hierbei, in einem Prozess, der mit anderen konkurrieren kann (siehe oben), den kritischen Abschnitt zu isolieren, und dann mit dem Mutex abzusichern. Im Deadlock-Beispiel oben würde das so aussehen : Nimm MUTEX Reserviere Quell-HD Reserviere Ziel-HD Gib MUTEX frei Wenn Prozess A den gemeinsamen MUTEX nimmt, kann Prozess B seine erste Platte nicht mehr reservieren -> kein Deadlock mehr möglich! 34

35 Hierfür stehen in allen Multitasking-Betriebssystemen Systemfunktionen bereit, die der Programmierer nutzen kann. Beispiel : An der Laboranlage digitale Fabrik wird das Tarnsportband von mehreren Modulen beauftragt und gesteuert. Dabei kann es zu race conditions kommen. Definition eines Mutex in Microsoft Visual Basic.net : Dim band_mutex As New System.Threading.Mutex Benutzung im Programm des Leitrechners : 'critical section band beginnt '******************************************************* band_mutex.waitone()..... band_mutex.releasemutex() '******************************************************* 'ende der critical section 35

36 Beschreibung nebenläufiger Systeme : Petrinetz Carl Adam Petri (geb. 12. Juli 1926), deutscher Mathematiker Ein Petrinetz besteht aus Zuständen (state) und Zustandsübergängen (transition). Eine Marke (mark) definiert, ob ein Zustand aktiv oder nicht aktiv ist. Petrinetze werden auch state machine oder Zustandsautomat genannt. Wenn alle Zustände vor einer Transition belegt sind, schaltet diese. Die Marke wandert dann auf die nachfolgenden Zustände : Zeitpunkt 1 : 36

37 Im Petrinetz dargestellt 2 Prozesse, die um gemeinsame Resourcen ( Betriebsmitel BM ) konkurrieren. (Die beiden Betriebsmittel könnten z.b. 2 Festplatten sein, siehe oben) Prozess 1 Prozess 2 Die beiden mittleren Zustände sind die zur Verfügung stehenden BM. Selber spielen? 37

38 Übung : Semaphore Betrachten wir noch einmal den MES-Rechner, der im Multithreading die Laboranlage führt. Er kann aus dem Thread, der das Linearmodul steuert, und aus dem Thread, der das Vertikalmodul steuert, das Bandmodul zur Tätigkeit beauftragen. Die Codestücke hierfür lauten so : Linearmodul : Private Sub linearmodul() Do band.order = 8 Schranke1) band.write_order() band.start_module() Do band.read_state() Loop Until band.state = "ready" //Auftrag setzen (8 = Öffne //Auftrag schreiben //Modul starten //warten, bis fertig Vertikalmodul : Private Sub vertikalmodul() Do band.order = 9 Schranke2) band.write_order() band.start_module() Do band.read_state() Loop Until band.state = "ready" //Auftrag setzen (9 = Öffne //Auftrag schreiben //Modul starten //warten, bis fertig 38

39 Aufgabe : Versuchen Sie, diesen Visual-Basic ähnlichen Code soweit zu verstehen, daß Sie die Steuerlogik für das Bandmodul durchschauen. Überlegen Sie, wie es hier zu einer Race-Condition oder einem Deadlock kommen könnte. Nun setzen Sie geeignete Semaphore, um dies zu verhindern! 39

40 Speicherverwaltung im Multitasking Das Problem ist schnell erklärt : Im Multitasking eines 32-bit Windows laufen z.b. 20 Tasks (schauen Sie in Ihren Taskmanager). Jede Task kann theoretisch bei 32 bit Adressbreite 4GB Ram adressieren -> 20 x 4 GB wären 80GB nötiger Hautpspeicher! Die Lösung auch : SUN Microsystems entwickelte rund 1970 ein System, das mit einem eigenen Prozessor Daten aus dem RAM im Hintergund auf die Festplatte auslagert ( und bei Bedarf wieder zurückholt), um Hauptspeicherplaz zu gewinnen. Man nannte das virtual memory. Schon um 1979 wurde der seperate Prozessor dann auf den Chip de CPU integriert, z.b. von Motorola bei Prozessor, die Komponente heißt MMU (memory management unit) 40

41 Heute integriert : MMU auf CPU RAM Festplatte Prozessor für virtual memory CPU Systembus Die Datenpakete, die zwischen RAM und HD hin- und hergeschoben werden, sind wegen der Physik der Festplatten nie Bytes, sondern pages (page = Seite), das ist die Einheit, in der die Festplatte pro Lese- und Schreibzugriff Daten transportiert. Zur Erklärung : Festplatten sind sogenannte block-oriented devices, das sind Geräte, die nicht auf Byteebene arbeiten können. Wenn die Mechanik es geschafft, den Kopf über der gewünschten Spur auf der MAgnetplatte zu positionieren (was im Vergleich zur Arbeitsgeschwindigkeit der digitalen Elektronik, also Prozessor und so weiter, eine Ewigkeit dauert, lohnt es sich nicht, nur 1 Byte zu lesen. Man holt gleich eine ganze Reihe zusammenhängender Daten von der Platte und schreibt sie in einen schnellen Cache-Speicher in der Plattenekektronik. Meist sind das heute 4 kb, das nennt man also page (Seite). Das Verfahren wird deshalb auch paging genannt. 41

42 Zur Erklärung hier ein (unrealistisches) Beispiel für ein paging- Verfahren. Wir stellen uns einen 16bit-Rechner mit 32 kb RAM vor. Dieser adressiert nun in seinen Programmen 16 bit Adressen, (das sind 64 kb) obwohl er bloß 32k Hauptspeicher hat. Die page-größe wird mit 4kB angenommen (siehe oben, Blockgröße bei Standard-Festplatte). Zuerst die Anzahl der Adressen, die gebraucht werden, um innerhalb einer page zu adressieren. kleine Rechenhilfe : wieviele Bit braucht man um 4096 Byte zu adressieren? log(4096) / log(2) = ld(4096) = 12 Wenn ich diese 12 bit als unteren Teil in die 16 bit-adresse des (virtual!) memory eintrage, bleiben noch 4 bit übrig : damit nummeriere ich die Seiten, die rumkopiert werden 42

43 Beispiel Die von einem Programm zum Beispiel angesprochene Zelle Wird von der MMU jetzt zerlegt, in Adresse innerhalb der page (Index, Offset) und pageadresse (Rahmen, Frame) Seitenadresse (2) Adresse des Bytes auf de 43

44 Zur Erinnerung : virtual memory heißt, das ein Teil der Seiten im RAM ist, ein anderer Teil aber auf die Festplatte ausgelagert wurde. Ist die benötigte Seite Nr. 2 jetzt gerade im RAM vorhanden, oder liegt diese Seite jetzt gerade auf der Festplatte? Dazu führt die MMU eine Verwaltungstabelle, die sogenannte page-table. Auf dieser ist vermerkt, welche Seite (Index) des virtual memory im Hauptspeicher liegt oder nicht (Präsenz-Bit =1 oder =0), und wenn ja, in welcher RAM-Seite (Rahmen oder Frame) : Index PB Rahmen

45 In unserem Beispiel haben wir Glück gehabt, die Seite 2 ( 0010 ) ist gerade im RAM, und hat dort die Adresse 100. Wir bilden damit die neue physikalische RAM-Adresse, indem wir den virtuellen Index durch den physikalischen Frame ersetzen : Aus der virtuellen Adresse 8196 ist die physikalische Adresse entstanden. Diese wird von der MMU jetzt im RAM adressiert. Die CPU des Rechners hat von der Mogelei gar nichts mitbekommen, sie denkt ja, sie hätte die vollen 16 Bit Adressraum (64k). 45

46 Interessant wird es, wenn die gewünschte page nicht im RAM vorhanden ist. Man nennt das einen paging error (Kann man in Windows im Taskmanager sehen). Die MMU teilt dem Scheduler mit, daß das Programm, das gerade läuft, nicht weitermachen kann : es wird blocked gesetzt (wie bei einem anderen I/O-Zugriff auch). Die MMU muß auf der Festplatte nach der ausgelagerten page suchen (hierzu wird auch das Filesystem der Festplatte benutzt, auf das hier nicht eingegangen wird), und diese ins RAM holen. Und da wird s jetzt eng : das RAM ist ja voll! In jedem Betriebssystem gibt es hier nun komplexe Strategien, welche der Seiten im RAM mit den benötigten überschrieben werden sollen (Seitenersetzungs- oder paging-strategie). Diese tragen nicht unerheblich zur Leistungsfähigkeit eines Betriebssystems bei! 46

47 In Windows wird im Prinzip das working-set -Verfahren benutzt : Ausgehend vom Lokalitätsprinzip (das bedeutet, daß wahrscheinlich in der nahen Zukunft Adressen benutzt werden, die sich in der Umgebung der aktuellen befinden), wird nicht nur die eine Seite geladen, die den paging-error ausgelöst hat, sondern gleich eine Menge Seiten da außen rum, in modernen System mit großen Speichern gleich ein paar Tausend. Zur Auswahl der dafür auszulagernden Seiten wird im Wesentlichen der LRU (least recently used) Algorithmus benutzt, der die Seiten wählt, die am längsten nicht mehr benutzt wurden. Wenn dann der paging-vorgang endlich abgeschlossen ist, sind also einige (viele) Seiten aus dem RAM in die Festplatte ausgelagert worden, dafür einige andere (incl. der benötigten) von der Festplatte ins RAM geschrieben worden. Der paging-eror ist damit behoben, die ursächliche Task wird von blocked nach sleeping gesetzt und kommt irgendwann im Scheduling wieder dran. 47

48 Hilfe zum Dualsystem 2 n Bytes Speichergröße kb kb kb kb kb kb kb kb kb kb MB MB MB MB MB MB MB MB MB MB GB 48

49 Übung : Speicherverwaltung Erste Aufgabe Wir betrachten eine Task in einem Rechner mit stark vereinfachtem Adresssystem : - Der Prozessor hat 12 bit Adressbreite - Die Daten werden byteorganisiert gelesen - Der Rechner hat 2 kb Hauptspeicher - Die Festplatte und damit die MMU ist in 1kB-pages organisiert 1. Wie groß ist der adressierbare Speicherbereich? 2. Wieviele pages kann die MMU im RAM halten? 3. Geben Sie eine Zeile der pagetable dieser MMU an 4. Wieviele pages tragen die Kennzeichnung PB=0? 49

50 Zweite Aufgabe Wir betrachten eine Task in einem Rechner mit stark vereinfachtem Adresssystem : - Der Prozessor hat 32 bit Adressbreite - Die Daten werden Byteorganisiert gelesen - Der Rechner hat 512 MB Hauptspeicher - Die Festplatte ist in 4kB-pages organisiert - 1. Wie groß ist der adressierbare Speicherbereich? 2. Wieviele pages kann die MMU im RAM halten? 3. Geben Sie eine Beispielzeile aus der pagetable an 4. Wieviele pages tragen die Kennzeichnung PB=0? Ein kleiner Schritt in Richtung Realität : Nun sollen 32 laufende Tasks betrachtet werden. Als Hardware wird nun ein 64bit-System benutzt, und es werden 8GB RAM eingebaut. Die paging-strategie soll working set sein, wobei bei jedem paging error 1% der zur Verfügung stehenden Seitenzahl pro Task geladen werden soll. 5. Wieviele Seiten umfasst der bei jedem paging-error umgeladene Speicherbereich? 50

51 Windows - Netze In der aktuellen Industrietechnik sind Microsoft-Systeme die mit Abstand dominierende Technik. Deshalb sollten Sie Netze auf dieser Basis installieren und administrieren können. Windows NT war die erste wirklich stabile, industrietaugliche Systembasis von Microsoft. Das Netz war serverbasiert. Mit Windows 2000 verlies Microsoft den streng proprietären Ansatz, und ging mit Active Directory in Richtung offener, verzeichnisbasierter Standards. 51

52 Serverbasiertes Konzept (Windows NT) : NT-Server NT-Ser PDC BDC Mitglied- Server Verzeichnisbasiertes Konzept (ab Windows 2000) Resourcen-Datenbank DC DC DC Mitglied- Server Clients : Windows200pro, WindowsXP und folgende... 52

53 Verzeichnisdienst Active Directory Dieses Konzept entstand aus dem System X.500, das im universitären Umfeld zur Verwaltung von UNIX-Netzen entwickelt wurde. X.500 ist im Prinzip eine Datenbank, die mit einem Zugriffsprotokoll DAP (directory access protocol) zugegriffen werden kann. Das Hierarchische Konzept der Datenbank erlaubt eine sehr komfortable Administration. Andere Umsetzungen von X.500 sind NDS, die Novell Directory Services, sowie Open LDAP, ein Open-Source Projekt. 53

54 Domänencontroller genauer betrachtet : Serverbasiert In Windows NT war die Administration nur auf dem PDC (primary domain controller) möglich. Der BDC (backup domain controller) trug eine read-only - Kopie, um bei Ausfall des PDC den Netzbetrieb aufrecht halten zu können. Verzeichnisbasiert Ab Windows 2000 mit Active Directory ist die Administration der Netzresourcen auf allen DC möglich, jeder trägt eine beschreibbare Kopie der Datenbank, die in zyklischen Abständen von allen DC repliziert wird. Hierzu werden Zeitstempel auf die Einträge benutzt, die sogenannten update sequence numbers. Diese sorgen dafür, daß immer die neuste Änderung netzweit auf allen DC aktualisiert wird. Weitere DC erhöhen die Betriebssicherheit des Netzes. Besondere Funktionen des ersten installierten DC : Der erste installierte Domänencontroller agiert als Betriebsmaster. Seine Spezial-Funktionen ( FSMO flexible single master operations) werden nicht repliziert, das heißt bei Ausfall muß ein anderer Server manuell zum Betriebsmaster hochgestuft werden. Zu diesen Aufgaben gehört die Verwaltung der numerischen ID der Objekte (user, computer usw.), des Active-Dir Schemas (welche Funktionen möglich sind) und noch eine Reihe von weiteren Verwaltungsaufgaben. 54

55 Aufbau eines Verzeichnisdienstes In X.500 heißt der Protokollstandard DAP (directory access protokoll). LDAP ist eine Untermenge davon, das lightweight directory access protocol. (OpenLDAP ist also eigentlich unkorrekt, weil LDAP ja ein Protokoll sein müßte, aber ein Verzeichnisdienst ist ) Die Datenbankstruktur eines Directory Service läßt sich gut graphisch darstellen, das sieht aus wie ein Baum (heißt auch tree), aber die Wurzel ist oben : Wurzelobjekt : root (heißt so wie die Domäne) Strukturobjekt (tree-object) : Dient nur der Strukturierung! Bei Active Directory heißt es organizational unit (oder Container ) Resource (leaf-object) Die vorhandenen Objekte in AD sind im wesentlichen computer und user 55

56 In Active Directory gibt es eine Reihe von vorgegebenen Objekten und Containern. (Bei Novell z.b. ist das anders, da ist der Baum erstmal leer). Die wesentlichste Eigenschaft des directory tree ist, daß er ein hierarchisches System beschreibt : Für einen Container definierte Einstellungen übertragen sich nach unten an alle im Ast liegende Objekte, auch in weiteren Containern. Man nennt dies Vererbung oder inheritation : Domäne : dv-script.tsm.de Container A mit Parameter XY User Hans : XY Container B mit Parameter AB User MAX : AB User PAUL : auch AB 56

57 Objekte in Active Directory : Administriert werden im Wesentlichen Computer und User. Im objektorientierten Sinn sind dies Klassen, also Vorlagen für die zu erzeugenden Objekte. Wie es sich für Objekte gehört, haben diese eine Reihe von Eigenschaften (Attribute : mehrere Namen, Telefonnummern, usw ). Ein Teil davon sind lebenswichtige Attribute, ohne die ein Objekt nicht existieren kann : mandatory attributes. Die übrigen, nicht lebenswichtigen, heißen optional attributes. Objekte in Active Directory haben neben den internen numerischen Kennungen (SID) für den Menschen lesbare Namen : distinguished name (DN) : cn = HANS, ou = B, ou = A, dc = dv-script, dc = tsm, dc = de common name organizational unit domain component 57

58 Eine vereinfachte Form ist der kontextfreie Anmeldename (der Kontext, die Stelle im Baum, wird dann automatisch gesucht) : user prinzipal name (UPN) : HANS@dv-script.tsm.de Am Einfachsten ist der aus NT-Zeiten stammende Name für den Security Account Manager : SamAccountName : HANS 58

59 Administration mit Active Directory : Administrieren in Active Dir bedeutet zum Einen, daß die zu verwaltenden Objekte, also die Computer im Netz und die daran arbeitenden User in einen sinnvoll strukturierten Verzeichnissbaum eingegeben (oder mit einem Programm importiert) werden müssen. Dann können Sie mit Parametern zurechtgestutzt werden. Aus geschichtlichen Gründen heißen diese Parameter bei Microsoft Gruppenrichtlinien (group policies). Gruppenrichtlinien werden an Container vergeben. Sie vererben sich dann wie beschrieben nach unten. Wenn der Baum geschickt aufgebaut ist, kommt man mit wenigen Richtlinien aus. Es gibt enorm viele einstellbare Parameter, sie sind aber streng in zwei Familien eingeteilt Computerrichtlinien wirken nur auf den Objekttyp Computer Benutzerrichtlinien wirken nur auf den Objekttyp User Das kann Probleme bereiten, wenn man unsauber arbeitet. Wenn in Containern die Objekttypen gemischt sind, ist die Wirkung der Richtlinien nicht sehr übersichtlich 59

60 Active Directory in der Praxis : Hier ein Ausschnitt der Labornetzverwaltung der Technikerschule : Default-Objekte Neuer Container Drunter noch einer 60

61 Hier nun (in der alten Ansicht mit Windows2003) die Eigenschaften eines Container-Objekts : Die Gruppenrichtlinien sind Eigenschaften des räume- Objekts. Eine solche Gruppenrichlinie kann beliebig viele Parametereinstellungen enthalten. Es ist aber eine gute Idee, pro Richlinien nur eine einzige Parameteränderung durchzuführen, und die Richtlinie entsprechend zu benennen, um das System übersichtlich zu gestalten. 61

62 Mit einem Klick auf NEU wird eine neue Gruppenrichtlinie hinzugefügt (hier : skripttest). Dann kann mit einem Klick auf BEARBEITEN der Gruppenrichtlinien-Editor geöffnet werden : Man erkennt die wichtige Unterscheidung in Computerkonfiguration und Benutzerkonfiguration. Wenn in diesem Beispiel in Benutzerkonfiguration eine passende Richtlinie gefunden und aktiviert wird, bewirkt das dann NICHTS, weil das Objekt, an dem wir arbeiten, der Container räume, keine Benutzer, sondern nur Computer enthält! 62

63 Windows-Domäne Sie sollen eine Domäne mit zwei VM s in Ihrem PC aufbauen, einen 2008 Domänencontroller und einen Win7-Client. WICHTIG : Scheiben Sie sich alle Ihre Passwörter auf!! Ihr Rechner muß als VM-Host laufen ( die rote Maschine). Nun suchen Sie in der Partition vm (d: oder f: ) auf ihrer Festplatte das Verzeichnis dv-praktikum und machen Sie eine Kopie des gesamten Ordners. Benennen Sie den Ordner nach ihrer Klasse und ihrem Namen, also z.b. Te2b_Maier. 63

64 Sie sollen eine Domäne mit zwei VM s in Ihrem PC aufbauen, Starten Sie den Vmware-Player (Desktop) und öffnen sie in ihrer eben angelegten Kopie die VMs Client und Server. ( open vitrual machine ) Durch Klick auf start virtual machine starten sie die Rechner. Zunächst nur den Server. Schon während des Bootvorgangs stellen sie im VM-Menü (oberer Bildschirmrand) bei Removable Devices für die Ethernetanbindung host only ein, also Kommunikation nur innerhalb ihres Rechners. Sie kollidieren sonst mit Ihren Nachbarn! - Loggen sie sich in die Rechner ein, indem sie STRG/ALT/EINFG (nicht ENTF!!) drücken und als Administrator das Passwort lilli eingeben. 64

65 Stellen Sie zuerst die IP-Adresse des Servers auf /8 und den Client auf DHCP (automatisch beziehen). - Geben Sie (Systemsteuerung / System) beiden Rechnern Computernamen, zunächst in der bestehenden Arbeitsgruppe. Sie beginnen entweder im automatisch erscheinenden Fenster Erstkonfiguration oder in der Verwaltung mit dem Server- Manager : - Wählen Sie bei den Serverrollen A/D Domänendienste, starten Sie die Rollenzuweisung. - Dann in der Kommandozeile (ausführen/cmd) das Tool Dcpromo starten 65

66 o Erstellen Sie eine neue Domäne (Gesamtstruktur) o Vergeben Sie ein Kennwort ( spass4u oder ähnlich) o Vergeben Sie einen Domänennamen (z.b. winprakt.ts.de) o Lassen Sie einen DNS erstellen (Nur IP V4, V6 wegklicken) o Akzeptieren Sie, daß keine DNS-Delegation möglich ist Nun richten Sie noch den DHCP-Server ein : o Definieren Sie einen Bereich innerhalb Ihres Subnet o Deaktivieren Sie IP V6 66

67 Active Directroy administrieren : Sie müssen das Tool Gruppenrichtlinienverwaltung in Verwaltung öffnen. Dort sehen Sie die Objekte, und mit der rechten Maustaste drauf können sie die Funktion Gruppenrichtlinien erstellen und verknüpfen anwählen. Nachdem sie ihrer neuen Richtlinien einen Namen gegeben haben, können sie diese mit der rechten Maus anklicken und unter Bearbeiten den Gruppenrichtlinien-Editor öffnen. Hier wählen sie jetzt die gewünschten Parameter 67

68 Nun erzeugen sie neue Objekte in Active Directory : - Einen Container Rechner für Ihren Clientrechner - Einen Container Mitarbeiter für neue User (mit der rechten Maustaste auf den AD-Baum klicken -> neu -> Organisatorische Einheit) Setzen sie nun mit Gruppenrichtlinien folgende Eigenschaften : - Benutzerkennwörter müssen keinen komplizierten Kennwortrichtlinien entsprechen (Komplexitätsanforderung, minimale Länge und so ) - Beim Anmelden ist kein STRG/ALT/ENTF nötig 68

69 Computer in Domäne aufnehmen : Am Clientrechner lokal anmelden (Administrator / lilli). In der Systemsteuerung auf System (ungewohnt in Win7, ich würde bei Ansicht die Symbolansicht wählen ), dort Computername. Klicken sie auf ändern, und geben sie einen neuen Namen ein, unten markieren sie die Domäne und geben ihren im Server definierten Domänennamen ein. Nun müssen sie mit der Domänenadmin-Kennung zeigen, daß sie das dürfen Fehler? irgendein Netzwerkproblem (meist DNS)! OK? Nun gehen sie wieder am Server in die AD- Verwaltung und verschieben sie den Computer, der jetzt in Computers erscheint (keine Anzeige? F5 drücken!), in den vorher erzeugten Container Rechner 69

70 Benutzer in Domäne aufnehmen : Richten Sie einen neuen Domänenbenutzer ein, mit Ihrem Namen als Kennung. Hierzu in Ihrem Container Mitarbeiter ein Objekt der Klasse User erzeugen. Als Passwort geben sie ihm lilli_neu, was nur klappt wenn die obige Richtlinie mit der Komplexitätsanforderung funktioniert. Testen Sie, ob der Login am Client klappt. 70

71 Remote-Desktop : Erzeugen Sie hierfür einen neuen User zum Testen. Öffnen Sie den RDP-Zugriff auf Ihren Server, indem Sie in Systemsteuerung / Remoteeinstellungen den Remotezugriff erlauben (nicht die Remoteunterstützung). Wahrscheinlich werden sie noch ein paar Gruppenrichtlinien in Active Directory anpassen müssen, damit ihr Remote-User Zugriff hat (ohne Admin zu sein), den Server aber natürlich nicht herunterfahren kann. 71

72 Login im Netz mit Kerberos Active Directory entstand aus dem Verzeichnisdienst X.500 (1990). Ein Kerngedanke eines Verzeichnisdienstes ( directory service ) ist die plattformunabhängig Authentifizierung. Das bedeutet, ein einziger login im Netz (an der Verzeichnisdatenbank) soll genügen, um alle bekannten Systeme im Netz nutzen zu können : auch Systeme mit anderen Betriebssystemen! Heute können das die meisten netzfähigen Geräte, auch Smartphones usw.. Login-Vorgang : KDS KDS : key distribution service LDAP lightweight directory access protocol GINA GINA : graphical interactive network authentification 72

73 Mit dem GINA-Tool (mit Bildschirm-Fenster) stellt der Client eine LDAP-Verbindung zum Datenbankserver (ein DC) her. Dort nimmt der key distribution service (KDS) die Anfrage entgegen. Der ticket granting service (TGS) stellt bei korrektem login ein ticket granting ticket (TGT) aus. Das ist praktisch ein all-inclusive- Bändchen. Es ist mit dem User-Passwort als Key verschlüsselt : deshalb sollten User-Passwörter lang sein! Es gilt eine gewisse Zeit (time to life, TTL), in der es auf jedem Server im Netz den Zugang ermöglicht. Der Client zeigt sozusagen beim Zugriff auf einen beliebigen Server sein all-inclusive-bändchen, das TGT (Port 88), und bekommt dann vom Server ein service-ticket (ST). Dieses ist wieder verschlüsselt, und gilt nur auf diesem einen Server. Der User merkt von all dem nichts. 73

74 Datenzugriffsrechte in Windows In Windows kann ohne Serverunterstützung direkt auf Daten eines anderen Computers zugegriffen werden. Das nennt man peer-to-peer Zugriff. Hierzu muß einfach eine Freigabe erzeugt werden und eine Zugriffskennung bekannt sein. Im Serverbetrieb spielt der peer-to-peer Zugriff wegen mangelnder Übersichtlichkeit und Datensicherheit keine Rolle. Wichtige Daten sollten auf einer technisch dafür ausgerüsteten Maschine gespeichert sein. Schnelle Netzanbindung, robuste Hardware (z.b. redundante Netzteile), und ein schnelles, sicheres Festplattensystem (Raid) sind empfehlenswert. In kleinen Netzen kann das der Domänencontroller sein, in größeren Netzen wird man einen seperaten Fileserver (vielleicht ein geeignetes NAS) hierfür einsetzen. 74

75 Windows Datensicherheit : SCHUTZ : NTFS-Rechte Daten 1) direkter Zugriff SCHUTZ : FREIGABE-Rechte 2) Zugriff über das Netz vom Client-PC aus 3) Zugriff über Terminalservice vom Clientrechner aus 75

76 Windows ist als non-dedicated Serversystem konzipiert. Das bedeutet, daß der (File-) Server auch als Arbeitsstation benutzt werden kann. In sehr kleinen Umgebungen mit wenigen Rechnern mag das Sinn haben. (In anderen Systemen, Novell zum Beispiel, ist das nicht möglich. Auf einem Novell-Server kann keine Applikationssoftware z.b. Textverarbeitung installiert werden : das nennt man einen dedicated Server) Der non-dedicated Aufbau bringt eine kompliziertere Rechtestruktur mit sich. Es kann wie im Bild auf mehreren Wegen auf die Daten des Servers zugegriffen werden. Freigaberechte : Wirken ausschließlich auf den Netzzugriff über das Freigabeprotokoll (SMB : server message blocks). Werden im System gespeichert, nicht als Attribute auf der Festplatte. Zugriffe über direkt angeschlossene Hardware (Terminal) oder die netzgestützten Terminal-Services (Remote Desktop : RDP- Protokoll) werden nicht beeinflußt! NTFS-Attribute : Sitzen als Filesystem-Attribute an den Daten der Festplatte. Administrierbar unter SICHERHEIT bei den Eigenschaften der Daten in Windows. Wirken auf alle Zugriffe. Ein dedicated Server benötigt keine Attribut-Rechte, das macht ihn deutlich übersichtlicher! 76

77 Skriptbasierte Administration von Windows Die Administration per Skript ist immer dann sinnvoll, wenn entweder oft wiederkehrende Tätigkeiten auszuführen sind oder wenn eine große Menge an Objekten (z.b. viele User) gehandelt werden müssen. Die Administration geschieht objektorientiert, hierzu stehen in Klassenbibliotheken innerhalb der Windows- Betriebssysteme umfangreiche Hilfsmittel zur Verfügung. Dokumentation findet sich im Internet, die Orginaldoku in der MSDN-Bibliothek. Sie erzeugen ein Textdocument, bearbeiten den Inhalt mit dem Editor, und speichern es nicht als.txt, sondern als.vbs (Vorsicht : nicht als Textfile sondern als alle Dateien speichern) Dann einfach Doppelklicken Wenn es Schwierigkeiten macht, mit dem Taskmanager den Prozess wscript.exe stoppen! VB classic ist eine Interpretersprache (Skipt-Sprache), das bedeutet, sie wird nicht übersetzt bevor man sie ausführen kann. Deshalb ist auch keine Deklaration von Variablen nötig. 77

78 Syntax von Visual Basic Anweisung : a = b + 1 ; a = b + c a = b c a = b * c a = b / c Schleife : solange Bedingung gilt do while a < loop Zählschleife : for i=1 to 100 für i von 1 bis next 78

79 Verzweigung a > 0? if a > 0 ja nein.... else.. end if Vergleichsoperatoren : > größer als < kleiner als >= größer gleich <= kleiner gleich = gleich <> ungleich Stringoperationen : Zusammenfügen : neu = Hallo & name Stringanalyse : a = right (test,3) b = left (test,4) c = mid (test, 5, 3) 3 Zeichen von rechts aus test 4 Zeichen von links aus test 3 Zeichen ab der 5-ten Stelle CSV untersuchen : String wird in ein Array zerlegt : Ergebnis : zeile = hallo:zwei:drei eintrag =split(zeile, : ) eintrag(0) = hallo Ein-Ausgabe : a = InputBox( Text zur Eingabe ) MsgBox(a) 79

80 Programmier -Praktikum Diesen Schwierigkeitsgrad müssen Sie unbedingt beherrschen! 1. Aufgabe : Schreiben Sie ein Skript, das eine Zahl einliest, diese verdoppelt und das Ergebnis ausgibt. 2. Aufgabe : Schreiben Sie ein Skript, das Ihren Vornamen einliest und entweder hallo Meister oder hallo Fremder ausgibt. 3. Aufgabe : Schreiben sie ein Skript, das von 1 bis 10 zählt und jeweils den Text : Schritt1, Schritt2 usw. ausgibt, mit einem Button manuell bedient, mit einem zweiten Button automatisch laufend. 4. Aufgabe : Schreiben sie ein Skript, das eine Zahl einliest, diese verdoppelt, falls der Wert unter 100 ist,sie halbiert, falls der Wert über 150 liegt, ansonsten unverändert läßt, und dann ausgibt. 80

81 Programmier Praktikum 2 Nice to have Wäre gut wenn Sie damit noch klarkommen! 1. Aufgabe : Schreiben Sie ein Programm, das die Nullstelle von y = mx + t durch Iteration sucht. Iteration (schrittweise Näherung an Lösung) : Ihr Programm startet bei einem Wert x, rechnet den y-wert aus, macht einen Schritt dx (x also ein Stückchen größer), rechnet nochmal und prüft, ob sich das Vorzeichen des Funktionswerts geändert hat. Wenn ja, wurde die Nullstelle überschritten, dann muß die Richtung geändert werden und die Schrittweite wird kleiner. Das Ganze solange, bis eine gewünschte Genauigkeit in y (z.b ) erreicht wird. Zunächst lassen wir nur positiven Werte für die Steigung m und nur negative für den Achsenabschnitt t zu. Die Gerade schneidet die x-achse (=Nullstelle) dann bei positiven Werten. 81

82 2. Aufgabe : Sie sollen eine Blechdose für Tomatensuppe entwickeln! Das Ding soll Zylinderform haben, und eine gegebene Menge (z.b. ein Liter) enthalten. Stellen Sie (Mathe..) eine Formel für die Dosenober-fläche (=Blechverbrauch) auf, die von Volumen und Bodenradius abhängt. Schreiben Sie einen Iterationsalgorithmus, der für ein gegebenes Volumen den minmalen Blechverbrauch ermittelt (Radius und Höhe müssen rauskommen). 82

83 Nutzung von Windows-Objekten mit dem WSH Alle Komponenten in der Windows-Domäne, vom Userobjekt in Active Directory bis zum Textfile auf der Festplatte werden objektorientiert betrachtet. Eine sehr mächtige Klasse ist zum Beispiel Scripting.FileSystemObject Diese Klasse beinhaltet eine große Anzahl von Methoden, die alle möglichen Operationen innerhalb eines Filesystems z.b. auf einer Festplatte ausführen können. Die Dokumentation aller Attribute und Methoden müssen Sie aus dem Internet holen. Suche nach MSDN ScriptingFileSystemObject findet : 83

84 Syntax zur Nutzung von Microsoft-Klassen So kann z.b. ein Textfile (welches wieder ein Objekt darstellt) erzeugt werden : Set apfel = CreateObject( Scripting.FileSystemObject ) Objektname Klasse apfel.createtextfile( c: testordner testfile.txt ) Objekt Methode Parameter 84

85 Ein wenig komplexer, wenn man das erzeugte Objekt gleich wieder nutzen möchte : Set fs = CreateObject("Scripting.FileSystemObject") Erzeugen eines TextStream-Objekts Set a = fs.createtextfile("c:/testfile.txt", true) Überschreiben bestehender files erlaubt a.writeline("this is a test.") a.close Methoden des TextStream-Objekts 85

86 Scripting.FileSystemObejct 1. Schreiben Sie ein Script, das in einem Unterverzeichniss, das Ihren Namen trägt ( irgendwo auf c: ) Testordner anlegt. Es soll zunächst fragen, wieviele Ordner anzulegen sind, dann nach dem Pfad, und schließlich sollen die Ordner mir den Namen test1, test2, usw.. erzeugt werden. Dabei muß geprüft werden, ob die Ordner schon existieren, und wenn ja eine Fehlermeldung erfolgen. 2. Nach dem selben Prinzip wie oben jetzt eine wählbare Anzahl von Textfiles in eines der oben erzeugten Verzeichnisse. Text1.txt, Text2.txt.usw. 3. Ihr nächstes Skript soll eines der Textfiles (wählbar) öffnen, und eine eingebbare Zahl von Wörtern hineinschreiben : test1, test2,.. 86

87 Administration von Active Directory Die Administration geschieht durch Nutzung des Active Directory Service Interface ADSI. Dieses stellt eine Klassenbibliothek für die AD-Objekte bereit. Es gibt hier nur wenige Objekte, im Wesentlichen wie schon besprochen: user, computer und organizational units. Diese haben als wichtige Methoden create und delete zum Erzeugen und Löschen von Objekten, sowie get und put zum Lesen und Schreiben von Attributen. Der Zugriff in die AD-Datenbank kann auf verschiedene Wegen erfolgen, der einfachste ist wohl die Methode, bei der mit dem LDAP-Protokoll ohne Angabe eines Servernamens direkt auf die ActiveDirectory-Verwaltung zugegriffen wird (serverless binding). Welcher Server das dann wirklich ausführt ist für den Benutzer unwichtig. 87

88 Die Position des zu referenzierenden Objekts im AD-Baum (Kontext) wird mit dem sogenannten Moniker angegeben. Dieser nennt zunächst das zu verwendende Zugriffsprotokoll, hier also LDAP (was Microsoft als Provider bezeichnet). Dann folgt der common name cn (siehe oben) : LDAP://ou= B, ou= A, dc= dv-script, dc= tsm, dc =de (ein Container hat keinen common name!) Ablauf : 1. Schritt : Referenzieren eines AD-Objekts mit dem Moniker 2. Schritt : Aufruf einer seiner Methoden Nächste Schritte : weitere Methodenaufrufe Letzter Schritt : Schreiben des modifizierten Inhalts in AD mit der SetInfo-Methode 88

89 Einen User erzeugen im Container A : Eine "Bindung" ist das Herstellen eines Zugangs zu einem Objektin Active Directory. Bindungen können unter Angabe eines Servers erstellt werden, besser jedoch (wie unter) als "serverless binding", die Domäne teilt den Server dann automatisch zu. VB-Funktion zur Herstellung einer Bindung an ein Objekt "ADSI -PROVIDER" : gibt an, auf welchem Weg die Daten erreichbar sind (hier LDAP-Protokoll) set apfel = GetObject("LDAP://ou=A,dc=dv-script,dc=tsm, dc=de") Objektname Erstellt eine Referenz auf das DN (distinguished name), gibt den "Pfad" Objekt in Active Directory zum Objekt und den Objektnamen an Der DN besteht aus CN : commen name (User, Computer..), OU : organziational unit (Container), DC : domain component (DNS-Name) 89

90 Methode, die eine Instanz (=Objekt) der als Parameter angegebenen Klasse (hier user) erzeugt set birne = apfel.create("user","cn=hans") erzeugt ein Objekt Klasse RDN (relative distinguished name) neues Obekt Name birne.put "samaccountname", "wurst" Methode, die ein Attribut setzt. Name des Attributs Wert des Attributs Manche Klassen (user z.b.) haben verbindliche Attribute (mandatory attributes), die gesetzt werden müssen (sonst Fehlermeldung) birne.setinfo Methode, die Objekte und deren Parameter an Active Dirüberträgt (Netzzugriff) 90

91 Damit kann man schon fast alles machen. Welche Attribute ein Objekt hat, schaut man am Besten im Internet nach. Entweder Microsoft direkt : Google-Suche nach : MSDN Attributes ADSI oder bei SelfADSI : 91

92 Collection als Hilfsmittel für Schleifenstrukturen Schwierig wird es mit der bisher beschriebenen Methode beim Zugriff auf Container. Will man zum Beispiel die Namen aller Objekte innerhalb eines Containers wissen, können das unter Umständen sehr viele sein, und die Anzahl ist unbekannt. Man nennt dies eine Collection. Hierzu verwendet man am Einfachsten die for..each Schleife : Set apfel = GetObject ( LDAP://ou=A, dc=dv, dc=tsm, dc=de ) for each gefundenes in apfel seinname = gefundenes.samaccountname msgbox(seinname) next Diese Schleife läuft solange, wie Objekte gefunden werden. 92

93 ADSI leicht 1. Legen Sie per Skript von Ihrem Client aus im Active Directory Ihrer Domäne 10 Container an. Die Container sollen in einer Schleife erzeugt werden und CONT1 bis CONT10 lauten. 2. Legen Sie nun in CONT1 zunächst manuell 2 Kennungen und zwei Computerkonten an. Füllen Sie m öglichst viele Attribute (Namen usw..) aus. 3. Nun lesen Sie vom Client aus einige Attribute der ersten Kennung aus und zeigen Sie an 4. Nun das gleiche für beide Kennungen : mit einer for-each Schleife. 5. Nun löschen Sie (mit einer Schleife!) alle Computerkonten aus dem Container 93

94 6. Setzen Sie nun Vorname und Nachname der ersten Kennung vom Client aus per Skriptauf andere Werte. 7. Nun erzeugen Sie (Schleife ) 10 Kennungen in CONT2 per Skript. Die Kennungen sollen folgende Eigenschaften haben : Kennungsname KEN1 bis KEN10, Vorname VOR1 bis VOR10, Benutzername BEN1 bis BEN10. Alle Kennungen sollen aktiviert werden. 94

95 ADSI schwer Sie sollen nun eine Praxisaufgabe lösen : Das Erzeugen lauffähiger Kennungen Ich stelle Ihnen hierzu den Schüler-Datensatz der Technikerschule zur Verfügung. Schreiben Sie ein Skript, das : Aus dem Datensatz die Nachnamen und Vornamen isoliert. Daraus sollen nach dem Schema : VVVFFF (V:Vorname, F:Familienname) Kennungsnamen erzeugt werden. Diese sind in einem Container schueler in ihrer Domäne angelegt werden. Als Passwort soll allen Kennungen das dazugehörige Geburtsdatum gesetzt werdenfür jeden Schüler ist ein Homeverzeichnis im Pfad c:\homes anzulegen. Das Rechtesystem ist hier unwichtig, z.b. können sie allen Vollzugriff geben Sie werden hier auf Schwierigkeiten stoßen. Diese können Sie gerne auch in Zusammen-arbeit mit ihrem Nachbarn lösen. 95

96 Internettechnologien Client/Server-Struktur Request Client Response Server Ein Client ist ein Programm das einen Dienst (Service) von einem anderen Gerät anfordert. Das kann das Schicken von Daten oder auch eine mechanische Funktion sein. Ein Server ist ein Programm, das eine Funktion auf Anforderung ausführt.die Anforderung des Dienstes heißt Request (Service-Request), das Erbringen des Dienstes wird Response genannt. Der Client ist also ein Requester, der Server ein Responder. 96

97 Beispiel : Ihr Nachbar spielt READ-Responder, sie sind der READ-Requester. Der Dienst heißt READ, er beinhaltet das Lesen des ersten Buchstabens auf einer Seite. 1) Sie (Client) sprechen einen READ-Request aus 2) Ihr Nachbar (Server) kann diesen erst mal quittieren oder nicht (beides gibt s) 3) Ihr Nachbar führt den READ-Dienst aus, er liest den Buchstaben 4) Ihr Nachbar schickt einen READ-Response. Das bedeutet erst mal nur, daß er den READ gemacht hat. Ob er ihnen den Buchstaben auch sagt, hängt von der Definition des READ-Dienstes ab. 97

98 HTTP-Request Im Internet wird nun bei Diensten mit angegeben, welches Protokoll zur Kommunikation benutzt wird. Das Protokoll bestimmt dann auch, wie die Dienste im Detail aussehen. Der übliche Weg im Internet ist die Aussprache eines HTTP-Request durch eine Client-Software (meist ein Browser) und dessen Beantwortung durch den HTTP-Response des Serverprogramms. Der Transport durch TCP/IP geschieht standardmäßig über SAP ( Port ) 80. Das Adressformat für einen korrekten HTTP-Request sieht so aus : Socket in TCP/IP (eigentlich mit der QDN-IP) Protokoll Serverdomain Service AccessPoint Hostname des Servers Dokument(Pfad..) Dieses Format heißt Uniform Resource Locator (URL). www ist hier kein Protokoll oder so, der Server hat diesen Hostnamen! 98

99 Apache-Server Als Serverprogramme sind viele Alternativen möglich, der Windows-Server (bei den Serverbetriebssystemen von Microsoft enthalten) heißt IIS (Internet Information Server). Am meisten verbreitet ist jedoch eine OpenSource Variante, der Apache Server. Die wesentlichsten Komponenten und Dateien sehen Sie hier : Das Serverprogramm (.exe) Apache Document-Root error.log access.log In Document-Root stehen alle Webseiten, in error.log werden alle Zugriffsfehler, in access.log alle Zugriffe ( z.b. Seite nicht vorhanden) aufgezeichnet 99

100 Apache Zuerst müssen Sie das Apache-Paket XAMPP auf Ihren Server installieren. Holen Sie von //filer/dvt das Paket WAMPP.zip auf Ihren Server (oder einen beliebigen Windows-Rechner). Entpacken sie das zip-file in ihr root-directory c: Stellen sie für die Bedientools start und stop oder das ganze Control-Panel (im Verzeichnis suchen) Verknüpfungen auf Ihrem Desktop her 100

101 Nun testen Sie ihre Installation : Im Konfigurationsfile des Apache-Servers httpd.conf stellen sie DocumentRoot auf /xampp/webseiten Dieses neue DocumentRoot müssen sie natürlich in ServerRoot (wo liegt das??) noch anlegen Erzeugen sie ein minimales HTML-File start.html in ihrem neuen DocumentRoot, das die Meldung Hallo, ich bin dein Webserver ausgibt Nun spielen wir noch ein wenig mit dem Server : -Setzen Sie den Serverport (Parameter listen ) auf 90 -Stop/Start des Servers -Greifen Sie auf start.html zu -Schauen sie sich im Server die access.log und die error.log an 101

102 Noch ein wenig HTML : -Setzen sie den Server wieder auf Port 80 -Schreiben sie 2 Webseiten, die sich mit links gegenseitig aufrufen können -Binden sie in eine Seite irgendein Bild mit ein 102

103 Interaktives HTML Gemeint ist hier, daß Der Webserver nicht nur wie bei simplen Webseiten einfach durch Schicken von HTML-Code als Response antwortet, sondern daß am Client erhobene Daten zum Server geschickt und verarbeitet werden. Das ist die technische Grundlage von e-commerce. Hier sind prinzipiell 2 Varianten möglich : a) Client-sided Im Clientsystem werden die (meist vom Benutzer eingegeben) Daten direkt lokal verarbeitet. Der Programmcode steckt in der HTML-Seite, die vorher vom Server geholt wurde. Sprache : Java oder Varianten. b) Server-sided Am Client werden Daten zwar erfasst (meist im Browser durch Eingabefelder o.ä),dann aber nicht lokal verarbeitet, sondern an den Server geschickt, und dort verarbeitet. Sprache : früher PERL, heute meist PHP. 103

104 Variante a) ist schneller, hat aber den Nachteil, daß eine ungünstige Clientkonfiguration die Verarbeitung behindern oder unmöglich machen kann. Variante b) ist wegen der nötigen Übertragung langsamer, aber der Programmierer weiß, wie seine Maschine konfiguriert ist, und es läuft sicher Bei e-commerce wird man alle Programmfunktionen, die dem Komfort und dem Design dienen, client-sided ausführen, alle Funktionen die zum Gelingen des Geschäftsprozesses unabdingbar sind, server-sided. 104

105 Wir gehen nun im Folgenden davon aus, daß ein Client eine Webseite anfordert, die dann einen wie oben beschriebenen Vorgang server-sided ermöglichen soll. 1) Client schickt (vom Benutzer ausgelöst) einen http-request : Apache HTTP-Request Client-Rechner mit Browser Server-Rechner mit Apache-Installation 105

106 2) Der Server sucht das Dokument im angegebenen Pfad (unter Document-Root), und schickt es an den Client. In diesem HTML- File sind graphische Elemente enthalten, die dem Benutzer die Eingabe von Daten ermöglichen (Textfelder usw..) : html-forms Apache http-response 106

107 3) Der Benutzer schreibt seine Daten rein, und schickt sie mit einem Knopfdruck im Browser wieder an den Server. Im HTML-Form ist auch eine Information enthalten, welches Programm im Server nun diese Daten bekommen und verarbeiten soll : form-action. Dies ist wieder eine HTML- Seite mit der Besonderheit, daß ausführbarer Code (meist PHP) enthalten ist. Apache holt sich diese Seite wieder aus Document- Root, und prüft nun (Steuer-Tags auf der Seite) welche Teile davon er dem PHP-Interpreter zur Verarbeitung weitergeben muß PHP Apache 107

108 Der Programmteil auf der Seite (meist ein PHP-Skript) bekommt die Daten, verarbeitet sie, und schickt möglicherweise auch eine Antwort in Form einer Ausgabe. Diese Ausgabe wird nun aber natürlich nicht am Monitor des Servers angezeigt, sondern zurück zum Client geschickt, und dort an den Browser zur Anzeige übergeben. Diese Funktion (Ausgabe des richtigen Skripts an den richtigen Client im Internet) leistet das common gateway interface (cgi). PHP cgi 108

109 Um das Ausprobieren zu können, benötigen wir nun zunächst die Eingabemöglichkeit am Browser, das HTML-Form. Hier der elementare Kern, in eine HTML-Seite reingeschrieben : Definition des HTML-Forms action gibt den Pfad zum Skipt im Server an method wählt die Methode der Datenübertragung <form action= script.php method = post > Ihr Vorname lautet : <input type= text name= vor > <input type= submit > </form> submit ist der Knopf zum Abschicken input type gibt das Eingabefeld in HTML an name definiert den Variablennamen des Werts text ist z.b. ein simples Textfeld 109

110 Als Datenübertragungsmethode stehen get und post zur Verfügung : Get schickt die Daten einfach sichtbar an die Server-URL mit einem Fragezeichen angehängt Post schickt die Daten unsichtbar und verschlüsselt. Man kann bei der GET-Methode die zu übertragenden Daten auch selber anhängen, und dann mit einer beliebigen anderen Aufrufmethode (z.b. in einem Link) arbeiten : <a href = "php1.php?var1=eins">php_hier_aufrufen</a> 110

111 PHP PHP ist eine Skriptsprache ähnlich wie VBScript oder so, und auch genauso einfach. So richtig witzig ist es aber in Verbindung mit HTML, weil man da PHP direkt reinschreiben kann. Der Aufruf schaut in HTML so aus : <html> <body> das ist ein test, diese zeile ist normales html <?php print "das hier ist php-code";?> </body> </html> So ein File muß dann.phtml oder.php (je nach Serverkonfiguration) heißen, damit der Webserver das kapiert

112 Hinter jede Zeile ; setzen Variable : $name = "Alf"; $zahl = 176; $klasse[1] = "Anton"; $klasse[2] = "Berta"; Eingabe : braucht man nicht, Variablen kommen immer vom HTML-Client Ausgabe : echo $name; print $name; (identische Funktion..) print "Name ist :".$name."<br>"; (Der Punkt fügt den Ausdruck zusammen) Html-Tags werden als String ausgegeben. 112

113 Schleifen, Bedingungen : if ($a>$b) if ($a>$b) { { print "a ist größer"; print "a größer"; } } else { print "b größer"; } $i=1; for ($i=1; $i<10; $i++) while ($i<10) { { print $i; print $i; } $i = $i+1; }...usw, also das übliche! 113

114 Beispiel für server-sided Datenverarbeitung : 1) HTML-File mit enthaltenem HTML-Form. Das wird zunächst aufgerufen : <html> <body> hallo, ich bin html <br><br> <form action = "./aktion.php" method = "post"> <input type= text name="alf"><br><br> <input type="submit"> </form> </body> </html> Am Browser erscheint hallo, ich bin html und das Eingabefenster für die form-daten. Ein Textfeld holt einen String, der als Variable dann alf heißen wird, mit dem submit -Knopf wird der Wert an den Server geschickt und das HTML-File aktion.php geladen, welches PHP-Code enthält 114

115 2) Die vom Form aufgerufene HTML-Seite aktion.php mit ausführbarem Code drin : <html> <body> hallo, hier HTML! <?php print hallo, hier PHP ; print "Die Eingabe war : $_POST[alf] ;?> </body> </html> Wird vom Apache also aus dem Documentroot geholt, und dann nach dem <?php untersucht. Alles zwischen diesem Zeichen und dem?> wird an den PHP-Interpreter übergeben. Alle Ausgaben (print..) gehen über den cgi-mechanismus zurück an den Browser und werden angezeigt. 115

116 lächerliche PHP-Übung 1. Schreiben Sie eine HTML-Seite und dazu ein PHP-Skript, das am Webclient über ein Form Ihren Namen einliest, und dann über PHP wieder ausgibt : "hallo Herr. 2. Probieren Sie den Aufruf aus einem Links aus, und übergeben Sie einen Parameter, der dann am Client angezeigt werden soll 1. Schreiben Sie eine HTML-Seite, die das Eingeben eines Vorund eines Familiennames erlaubt. Diese Werte schicken Sie dann mit POST an eine PHP-Seite, die untersuchen soll, ob der Vorname oder der Familienname der Ihre ist. Ist das der Fall, soll Hallo Meister ausgegeben werden, wenn nicht : Hallo Fremder 116

117 Grafische Möglichkeiten zur Gestaltung von HTML-Forms <html> <body> <form action= "./unter/form.php" method ="post"> <input type ="text" name="wort" value="eingabe hier"> <br><br><br> <select name="pizza"> <option value="p1">funghi</option> <option value="p2">mare</option> <option value="p3">rabiata</option> </select> <br><br><br> <input type="radio" name="cash" -> value="mastercard">mastercard<br> <input type="radio" name="cash" -> value="visa">visacard<br> <input type="radio" name="cash" value="nix">nix <br><br><br> <input type="submit" value="druckst du hier"> </form> </body> </html> 117

118 Sieht im Browser so aus : 118

119 Leichte PHP-Übung Schreiben Sie eine Online-Kurzarbeit zum Thema Apache-Server. Es sollen folgende Fragen gestellt werden : -Wie lautet der Name des Files, in dem Apache seine Konfiguration gespeichert hat? -Auf welchem Port kommuniziert Apache üblicherweise? -Wie heißt der Mechanismus, der Ausgaben aus PHP-Skripten an den Client zurückleitet? -Welche Fehlernummer bringt Apache, wenn eine Seite nicht gefunden wird? 119

120 Falls Sie z.b. die letzte Antwort selber nicht wissen : schauen sie in den logfiles nach! Die Fragen werden vom Kandidaten nach Eingabe seines Namens beantwortet. Gestalten Sie die Fragen möglichst grafisch etwas abwechslungsreich (nicht nur Textfelder..). Im Server muß dann geprüft werden, wie der Kandidat abschneidet. Jede Frage bringt 25%, bei weniger als 75% ist der Kandidat durchgefallen. Das Ergebnis wird dem Kandidaten dann mitgeteilt. 120

121 Stringfunktionen in PHP Syntax zur Bearbeitung von Strings finden Sie im Web zur Genüge. Hier nur ein kleiner Einblick : strcmp Vergleich zweier Strings (Binary safe) strcoll Locale-basierter Zeichenkettenvergleich strcspn Ermittelt die Anzahl der nicht übereinstimmenden Zeichen strip_tags Entfernt HTML- und PHP-Tags aus einem String stripcslashes Entfernt Quotes aus mit addcslashes behandelten Strings stripos Findet das erste Vorkommen eines Strings, unabhängig von Groß- und Kleinschreibung stristr Wie strstr, aber unabhängig von Groß- bzw. Kleinschreibung strlen Ermitteln der String-Länge strncmp String-Vergleich der ersten n Zeichen (Binary safe) strpbrk Durchsucht einen String nach einem Zeichen aus einer Gruppe von Zeichen strpos Sucht das erste Vorkommen des Suchstrings strrchr Sucht das letzte Vorkommen eines Zeichens in einem String strrev Kehrt einen String um strripos Findet das letzte Vorkommen, unabhängig von Groß- und Kleinschreibung strrpos Findet das letzte Vorkommen eines Zeichens innerhalb einer Zeichenkette strspn Ermittelt die Länge der am Anfang übereinstimmenden Zeichen strstr Findet das erste Vorkommen eines Strings strtok Zerlegt einen String strtolower Setzt einen String in Kleinbuchstaben um strtoupper Wandelt alle Zeichen eines Strings in Großbuchstaben um strtr Tauscht bestimmte Zeichen aus substr_compare Binärdaten-sicherer Vergleich beginnend an einer bestimmten Position substr_count Ermittelt, wie oft eine Zeichenkette in einem String vorkommt substr_replace Ersetzt Text innerhalb einer Zeichenkette substr Gibt einen Teil eines Strings zurück trim Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings 121

122 Dateien mit PHP bearbeiten : Dateien werden in PHP wie üblich mit Handles geöffnet : $opfer = fopen( c:/testdatei.txt, w ); (w : schreiben, r : lesen, a : anhängen) dann kann man manipulieren : $werte = fread ($opfer, $zahl); $wert = fgetc ($opfer); $werte = fgets ($opfer, $zahl); fwrite ($opfer, $inhalt); liest Zeichen aus der Datei liest das nächste Zeichen liest Zeichen, maximal bis zum Zeilenende schreibt Variableninhalt in Datei und dann wieder zumachen : fclose ($opfer); 122

123 PHP Prüfuingsniveau Eine Brauerei möchte durch eine Online-Umfrage rauskreigen, welche Biersorte den Kunden am Besten schmeckt. Um teilnehmen zu können, muß man auf einer Webseite Namen und Telefonnummer angeben und dann den Namen der bevorzugten Biersorte nennen : 123

124 Nach Abschicken mit Prost! wird das server-sided Skript bier.php aufgerufen. Zunächst werden die Daten jedes neuen Teilnehmers an die Datei c:/var/trinker.dat angehängt, und dann seine angegebene Biersorte (zur späteren Verarbeitung) an die Datei c:/var/biere.dat : Trinker.dat : Biere.dat : Maier Egon Weißbier Müller Karl Maibock Sollte der Teilnehmer (geprüft wird die Telefonnummer) schon einmal abgestimmt haben,erhält er eine Meldung : Nix gibt s, nur einmal abstimmen! Schreiben Sie index.html und bier.php! 124

125 Ausblick : Dynamische Websites Ein professionelles Webangebot ist meist anders als bisher behandelt aufgebaut. Nehmen wir als Beispiel Amazon : Wenn man für jeden Artikel eine eigene Webseite (.html) schreiben müßte, wäre der Aufwand nicht zu bewältigen. Das geht anders : ein allgemeines Seitengerüst (Design und so) wird dynamisch mit immer neuen Inhalten gefüllt. Diese Inhalte kommen aus einer Datenbank. Es gibt dabei drei völlig verschiedene Aufgaben zu erledigen : 1) Das Seitengerüst und vor allem die Struktur der Datenbank, die dann die Inhalte beisteuert, muß entwickelt werden. Eine Aufgabe für den Software-Entwickler. 2) Die Inhalte müssen in die Datenbank eingepflegt (tolles Wort, oder? meint : hineingeschrieben) werden. Das macht entweder ein tool (siehe z.b. Autoscout oder Ebay, da machts der Kunde praktisch selber) oder eben ein MItarbeiter, wie z.b. bei einem Webshop (Amazon z.b.), der das eingibt. 125

126 3) Die Inhalte müssen dann für den Kunden veröffentlicht werden. Heute üblicherweise natürlich mit einer Weboberfläche. Für alle drei Vorgänge braucht es eine Datenbank sowie eine Programmiersprache, die den Zugang herstellt. Das macht man heute meist mit der Structured Query Language (SQL) Datenbanken, die mit dieser Sprache bedient werden können, werden als SQL-Datenbanken bezeichnet. Ein kommerzielles Beispiel ist ORACLE (das finden Sie z.b. auf dem ERP-Server der digitalen Fabrik der Technikerschule), ein OpenSource-Produkt wäre z.b. mysql (das bei unseren Apache-Installationen mit XAMPP mitinstalliert wurde). 126

127 Datenbanken SQL-Datenbanken sind simpel aufgebaut : Innerhalb der Datenbank (database) sind die Informationen in Tabellen (tables) gespeichert. Die Daten (dataset, entity) werden zeilenweise in die Tabellen eingetragen, die Spalten (attribute) bezeichnen die Informationsteile. database Werkstattverwaltung table Mitarbeiter Attribute Nummer Name Abteilung Telefon 123 Maier EDV Müller Werkstatt Einträge, Datensätze 127

128 Zwischen den Einträgen bestehen Beziehungen (Relationen), deshalb werden solche Datenbanken als relationale Datenbanken bezeichnet. Für diese Beziehungen und den Aufbau der Tabellen (Attributstruktur) gibt es nun Regeln, die dafür sorgen sollen, daß die Datenbank Informationen so speichert, daß sie jederzeit eindeutig zu finden sind und widerspruchsfrei auch bei jeder Frage die gleiche Antwort kommt. Zwei grundliegende Forderungen an den Aufbau der Tabellen sind die Existenz eines Primaryx Key und die Redundanzfreiheit. 128

129 Primary key Jede Tabelle benötigt ein Attribut, das eindeutig die Suche nach einem Eintrag ermöglicht. Hierzu ein paar Fachbegriffe : Ein Schlüsselkandidat ist ein Attribut, das die eindeutige Identifizierung jedes Eintrags ermöglicht. Davon kann es mehrere geben. Ein Schlüsselkandidat kann sich auch aus der Kombination von mehreren Attributen ergeben (Beispiel : Eine Personalausweisnummer kann z.b. in Österreich und Kanada gleich sein. Dann kombiniert man einfach Personalausweisnummer und Land, und erhält damit Eindeutigkeit ). Das ist dann ein zusammengesetzter Schlüssel. Aus den Schlüsselkandidaten muß einer gewählt werden, der dannprimärschlüssel oder primary key genannt wird. Oft wird er Einfachheit halber eine fortlaufende Nummer hierfür benutzt. 129

130 Redundanzfreiheit Eine Information, und das ist hier immer der Zusammenhang zwischenzwei Einträgen : also zum Beispiel daß Frau Maier in der EDV arbeitet (Maier - EDV), darf in einer database nur einmal vorkommen. Steht zum Beispiel in der table Mitarbeiter ein Attribut Name und ein Attribut Abteilung, und in der table Personalräte steht wieder Name und Abteilung : Mitarbeiter Nummer Name Telefon Abteilung 1332 Maier asffsd EDV Personalräte Nummer Name Abteilung 12 Maier EDV a@w.d 130

131 Dann kann folgendes passieren : Frau Maier wird befördert, und steigt von der EDV in die Firmenleitung auf. Die Sekretärin macht die Datenbank auf, und speichert dies, indem sie in der table Mitarbeiter EDV nach Leitung ändert. Nun fragen zwei verschiedene Mitarbeiter irgendwann die Datenbank ab, und die eine Frage geht nach Mitarbeiter, die andere nach Personalräte. Einmal kommt raus, daß Frau Maier in der EDV arbeitet, einmal, daß sie Mitarbeiter der Geschäftsleitung ist. Man nennt dies eine Inkonsistenz, die dann nicht vorkommen kann, wenn die Beziehung Name <-> Abteilung nur einmal gespeichert ist. 131

132 Es gibt darüber hinaus eine ganze Reihe von Anforderungen, die Datenbankstrukturen erfüllen müssen, um effizient und fehlerfrei arbeiten zu können. Hier gibt es Regelwerke, die eingehalten werden sollen : Normalformen z.b. : das ist, um es optimistisch zu sagen, nicht unkompliziert ;-) Nun wollen wir aber nicht große Datenbanksysteme für Unternehmen entwickeln, sondern nur eine kleine SQL-Datenbank benutzten, um unseren Webserver zu unterstützen. Meist wird sogar eine table genügen. Deshalb genügt hier ein einfacheres Entwurfssystem, das einige Forderungen der Normalisierung relativ einfach erfüllt, das ER-Modell. 132

133 ER Modell (entity-relationship) Gleich am Beispiel einer Schuldatenbank gezeigt : Die Database heißtschule, der Entwurf beinhaltet drei tables : Lehrer, Schüler, Klassen. Die tables werden als Rechteck oder so gezeichnet, der primary key jeweils mit einem # davor als erster Eintrag und dann alle Attribute (wichtig : Attribute, keine Daten!!) : Schüler Klassen Lehrer #Schülernummer #Klassenbezeichner #Lehrernummer Name Stammsaal Name Vorname Fachrichtung Vorname Alter Schülerzahl Hauptfach usw usw.. usw 133

134 hier werden nun die Beziehungen (Relationen) eingetragen, und zwar als Linien zwischen den jeweiligen Attributen : Schüler Klassen Lehrer #Schülernummer #Klassenbezeichner #Lehrernummer Name Stammsaal Name Vorname Fachrichtung Vorname Klasse Lehrer Hauptfach usw usw.. usw und dann werden diese Beziehungen untersucht : 134

135 1. Frage : Ich setze mich in die table Schüler, und blicke in Richtung Klassen. Nun frage ich : kommt ein Element hier ( = ein Schüler) in der Zieltabelle Klassen einmal oder öfter vor? (Ist ein Schüler in einer oder in mehreren Klassen?) -> Antwort : Einmal! Diese 1 wird jetzt an der Linie am Zielelement angeschrieben : Schüler #Schülernummer Stammsaal Vorname Klasse usw 1 Klassen #Klassenbezeichner Name Fachrichtung Lehrer usw.. 135

136 2. Frage : Nun setze ich mich in die table Klassen, und blicke in Richtung Schüler.Kommt ein Element aus meiner table in der Zieltable einmal oder öfter vor? Antwort : öfter! (eine Klasse steht bei mehreren Schülern dabei) Dieses öfter wird als n (oder m) an der Zieltable angeschrieben : Schüler #Schülernummer Stammsaal Vorname Klasse usw n 1 Klassen #Klassenbezeichner Name Fachrichtung Lehrer usw.. 136

137 Diese Aussage nennt man nun Kardinalität, oben besteht eine 1:n Kardinalität. Man macht diese Untersuchung nun für alle Beziehungen, die zwischen den tables einer database bestehen. Dabei können folgende Ergebnisse auftreten : 1:n-Kardinalität Alles prima, das kann so bleiben! 1:1 Kardinalität Schlecht, ist verboten. Hier kann aber immer aus den beiden tables eine einzige gemacht werden. n:m Kardinalität Auch schlecht, auch verboten. Hier muß in der Regel eine Zwischentablelle gefunden werden, die für eine Entkoppelung der unerlaubten Kardinalitäten sorgt. 137

138 Beispiel für n:m Klassen #Klassenbezeichner Stammsaal Profil Lehrer usw.. Lehrer #Lehrernummer Name Vorname Hauptfach usw 1. Frage : Aus Sicht von Klassen : kommt ein Element aus Klassen (die TE2b z.b) bei einem oder bei mehreren Lehrern vor? Klar, es unterrichten mehrere Lehrer in der Te2b -> n! 2. Frage Aus Sicht von Lehrer : kommt ein Element aus Lehrer (z.b. der Doll) in einem oder mehreren Klassen vor? Wieder klar, Doll hat Unterricht in mehreren Klassen -> m! 138

139 Das ist also eine n:m Kardinalität, und die ist verboten! Überlegen wir also eine (möglichst sinnvolle) Zwischentable, die hier für Ordnung sorgt. Pptimal wäre hier eine Liste, die irgendwie in jeder Zeile eine Beziehung zwischen den beiden primary keys aus den ursprünglichen tables herstellt. Ich nenne das mal Einsatzplan, man könnte auch einen Stundenplan draus machen : Klassen Einsatzplan Lehrer #Klassenbezeichner #Einsatznummer #Lehrernummer Stammsaal Zeit Name Profil Klasse Vorname Lehrer Lehrer Hauptfach 139

140 Wieder die zwei Fragen, jeweils an den Beziehungen gestellt : Klassen -> Einsatzplan : Kommt eine Klasse im Einsatzplan öfter vor? Ja : n! Einsatzplan -> Klassen : Kommen in einem Einsatz eine oder mehrere Klassen vor? Eine : 1! Einsatzplan -> Lehrer : Kommen in einem Einsatz ein oder mehrere Lehrer vor? Einer : 1! Lehrer -> Einsatzplan : Kommt ein Lehrer in einem oder in mehreren Einsätzen vor? n! Klassen Einsatzplan Lehrer 1 1 #Klassenbezeichner #Einsatznummer #Lehrernummer Stammsaal Zeit Name Fachrichtung Klasse Vorname Lehrer n Lehrer Hauptfach n Nun ist alles in Ordnung, das ER-Modell ist korrekt ausgeführt! 140

141 Beziehungsprobleme Um die Problematik mit den Kardinalitäten nochmals hervorzuheben, betrachten Sie bitte folgende 2 Beispiele : a) Eine Datenbank, in der Partnerfinden24.de seine Mitglieder und deren Beziehungen zueinander speichert b) Eine Datenbank, in der für einen Tanzclub für Verheiratete wieder die Mitgliedermit Geburtsdatum sowie deren eheliche Beziehung als Relation einzutragen ist Stellen Sie die Speichersturktur als ER-Modell dar, prüfen Sie die Kardinalitäten 141

142 Biokiste Ihre Oma eröffnet einen Heim-Lieferdienst für Bio-Lebensmittel. Sie als Techniker sollen eine Datenbank für die Verwaltung aufbauen. Der Service funktioniert folgendermaßen : - Kunden abbonieren ein Bio-Kiste (oder mehrere) - Es gibt verschiedene Bio-Kisten (Standard, Vegetarisch, Premium, Familie) - Die Kisten enthalten Bio-Lebensmittel (Brote, Gemüse, Fleisch..) - Die Lebensmittel werden von verschiedenen Lieferanten zugekauft Welche Informationen sollten sinnvoll erfasst werden, wie sieht das ER-Modell aus? 142

143 SQL - Datenbank in der Praxis 1. Kontaktaufname mit dem Datenbankmonitor (der mysql- Server muß laufen ) : mysql u <username> -p <passwort(wenn nötig)> <datenbankname (wenn schon vorhanden)> Falls Sie in UNIX als root angemeldet sind, genügt : "mysql" als Aufruf. Unter Windows ist u root nötig! Die mysql.exe finden Sie im XAMPP-Paket in /xampp/mysql/bin. 143

144 2. Jetzt kommen die Bedienbefehle. Diese werden immer mit einem ";" abgeschlossen. Wenn das fehlt, bringt der Monitor einen Pfeil als Eingabeaufforderung für weitere Eingaben. CREATE DATABASE datenbankname ; Eine neue Datenbank erzeugen. (Das geht bloß als root) CONNECT datenbankname ; Eine Datenbank öffnen (auch wenn sie gerade erzeugt wurde) CREATE TABLE relationsname (definition,definition,...) ; Damit kann man nun in der Datenbank Relationen anlegen. Beispiel : CREATE TABLE auftrag ( nummer INT NOT NULL AUTO_INCREMENT, datum DATE, kunde VARCHAR(30), primary key (nummer) ); INT ist Integer, DATE ein Datumswert (YYYY-MM-DD), VARCHAR(n) ist n langer Text, das Attribut das zum Primärschlüssel gemacht wird darf nie Null sein (NOT NULL), mit AUTO_INCREMENT zählt das Sytem den Wert selber hoch. 144

145 SHOW TABLES; zeigt alle Relationen der Datenbank an. SHOW COLUMNS FROM table; Relation table an. zeigt alle Attribute aus der SELECT attribut FROM table; zeigt alle Tupel, die zum Attribut gehören. Wenn das Attribut * gesetzt wird, zeigt es alle Einträge. SELECT attribut FROM table WHERE definition; Mit der Definition können nur Auswahlkriterien genannt werden, z.b "WHERE nummer >4". Es gelten die üblichen Zeichen : > < =!= (größer, kleiner, gleich, ungleich). Mit AND und OR kann verknüpft werden. DELETE FROM table; und : DELETE FROM table WHERE definition; Damit können (ausgewählte) Einträge wieder entfernt werden DROP TABLE DROP TABLE <name> löscht eine Relation aus einer Datenbank 145

146 INSERT INTO <table-name> (attribut1, attribut2,...) VALUE ('wert1', 'wert2',...) fügt Werte ein Beispiel : INSERT INTO freundin (haarfarbe, gewicht) VALUE ('blond', '56') DELETE FROM <table-name> WHERE <bedingung> Beispiel : DELETE FROM freundin WHERE gewicht > 60 klar?... alles ALTER TABLE <table-name> ADD <column-name> <type> fügt eine Spalte ein Beispiel : ALTER TABLE freundin ADD vorname VARCHAR(30) ; ALTER TABLE <table-name> DROP <column-name> löscht eine Spalte Natürlich gibt's noch weitere Befehle, die das Arbeiten komfortabler machen (UPDATE zum Beispiel), aber die brauchen wir momentan nicht unbedingt. Sie finden komplette Befehlslisten zuhauf im Internet. 146

147 SQL-Praxis Legen Sie auf Ihrem Rechner eine database mit ihrem Namen an. Darin erzeugen Sie eine table freundinnen ( freunde ), mit möglichst vielen Attributen. Hierzu starten Sie mit dem Xampp- Kommandotool den mysql-server. Dann gehen Sie in die Windows-Kommandozeile (DOS-Eingabe), und starten den mysql-monitor mit : mysql Wenn das klappt, geht s auf der Befehlsliste aus dem DV-Skript weiter. Schreiben sie mindestens 5 Tupel hinein, füllen Sie alle Attribute aus! Suchen Sie nun durch SQL-Queries nach bestimmten Attributen, zum Beispiel in Hamburg lebend und älter als 25 und blond! 147

148 Datenbankzugriff mit PHP und SQL Da Sie PHP und SQL jetzt beherrschen, ist der Rest simpel. Die nötigen SQL-Befehle werden einfachb in ein PHP-Gerüst eingebaut. Die PHP-Kernsyntax dafür sieht so aus : $result = mysql_query( hierher_den_sql_befehl ); Ein Programmbeispiel, das aus unserer Freundinnendatenbank alle Namen ausliest : <HTML> <BODY> <?php mysql_connect(localhost, root); mysql_select_db( freundinnen ); $result = mysql_query( select name from freundin ); while ($row = mysql_fetch_array($result)) { print <br> ; print $row[ name ]; }?> </BODY> </HTML> 148

149 mysql_connect(localhost, root); Diese Zeile stellt mit root-kennung auf dem lokalen Rechner Verbindung zur Datenbank her. (Das geht natürlich auch über IP auf einem anderen Rechner) mysql_select_db( freundinnen ); Öffnet die Database freundinnen. while ($row = mysql_fetch_array($result)) Solange Werte kommen, holt die Schleife Werte aus $result und schreibt sie in ein Array $row. print <br> ; Ausgabe beliebiger HTML-Tags in PHP, nichts neues print $row[ name ]; In der Schleife gelesener Wert aus $result(s.o.) wird aus dem assoziativen Array (egal ;-) gelesen und in HTML ausgegeben. 149

150 Einführende Übung Eine Website soll Sie Ihnen von überall in der Welt einen Zugriff auf Ihre Beziehungen geben : Schreiben Sie für die Freundinnen-Database einen Web-Zugriff, der das Eingeben neuer Bekanntschaften ermöglicht. Die nötigen Attribute sind in Textfeldern anzugeben. Schreiben Sie eine weitere Funktion hinein : Es soll in einem Dropdown Menü (select) eine Eigenschaft gewählt werden, und in einem Textfeld ein Wert dazu eingebbar sein. Nun sucht die Datenbank alle Einträge, auf die dieser Attributwert zutrifft (z.b. Haarfarbe = blond) und gibt diese aus. Möglich wären auch Funktionen, die ein größer als oder kleiner als durchführen, dazu müßten Sie ein wenig kreativ sein 150

151 Web-Kochbuch Eine Website soll als interaktives Kochbuch gestaltet werden : Man gibt in ein HMTL-Form eine vorhandene Zutat (z.b.sardinen) ein- Der Webserver schlägt nun Gerichte vor, die diese enthalten Daraus wählt man eines. Nun wird vom Server angegeben, welche weiteren Zutaten benötigt werden 151

152 Entwerfen Sie als ER-Modell eine SQL-Database, die Gerichte und deren Zutaten (zunächst also zwei tables..) speichern kann. Prüfen Sie, ob Ihr Entwurf den ER-Regeln entspricht, modifizieren Sie gegebenenfalls den Entwurf. Auf einer html-seite gibt der Benutzer nun die vorhandene Zutat (z.b. Sardinen) in ein html-form ein, und ruft durch Drücken des Submit-Buttons dann die phtml-seite auf, deren Ausgabe Sie unten sehen. Die vorher eingegebene Zutat wird in der Variablen zutat übergeben. Schreiben Sie diese php-seite, die in der Database nun nach Gerichten sucht, die diese Zutat enthalten. Um eines davon auswählen zu können, sollen die Namen der Gerichte in einem pull-down-menü zum Anklicken angeboten werden. 152

153 Pizzaservice Für einen Pizzaservice sol eine Datenbank entwickelt werden. Gespeichert werden sollen die Pizzen (Mare, Funghi,...) mit ihrem Verkaufspreis (in ct), sowie die Zutaten (Boden, Käse, Tomaten). 1. Erstellen Sie ein korrektes ER-Modell für die dafür nötigen tables. 2. Formulieren Sie an einem Beispiel aus Ihrem ER-Modell die Frage nach der Kardinalität (1:n?) als Text, so daß erkennbar wird, ob Sie diese Bedingung verstanden haben. 153

154 Nun folgen weitere Anforderungen für die nächste Teilaufgabe : Aus der Datenbank soll zum Einen das exakte Rezept der Pizza auslesbar sein Pizza Mare : Boden 1 Stück Tomaten 20 Gramm Käse 15 Gramm Muscheln 12 Stück Thunfisch 20 Gramm und weiter soll daraus der Gesamteinkaufspreis (=Einkaufspreissumme aller Zutaten für jede Pizza ermittelbar sein. Hierzu muß die Einheit einer Zutat (Stück, Gramm.), der Einzelpreis ( 130 ct / Stück, 3 ct / Gramm...) sowie die Mengeder Zutat im Rezept (s.o.) speicherbar sein. 3. Erweitern Sie Ihre tables, so daß die Speicherung der Menge, der Einheit und des Einzelpreises der Zutaten möglich wird. (Was in welche tables??) 4. Schreiben Sie ein php-file, das für eine einzugebende Pizza alle Zutatennamensowie den Gewinn (= Verkaufspreis minus Zutatenprei ssumme) ausgibt. 154

155 Webservices Ein Webservice ist ein Dienst, der über einen URL aufgrufen wird und XML-Daten liefert (Wiki) In jüngster Zeit werden Webservices oft als REST-Services bezeichnet, obwohl die beiden Techniken nicht völlig identisch sind. Ein Unterschied ist z.b. der größere Funktionsumfang von REST-Services. 155

156 Die verfügbaren Dienste sind hier : GET: Get fragt die Repräsentation einer Resource ab. Requests sollten frei von Seiteneffekten sein. GET Requests können beliebig oft abgeschickt werden. Man kann einen Client für seine Auswirkungen nicht in die Verantwortung ziehen. D. h. ein GET kann bedenkenlos abgeschickt werden. POST: Mit POST kann einer Resource etwas hinzugefügt werden. Beispielsweise könnte eine Ware zu einem Warenkorb hinzugefügt werden. POST ist nicht frei von Seiteneffekten. Beispielsweise können durch einen POST Aufruf Felder in einer Datenbank verändert oder Prozesse auf dem Server gestartet werden. PUT: Neue Resourcen können mit PUT erzeugt oder der Inhalt bestehender Resourcen kann mit PUT ersetzt werden. DELETE: Resourcen können mit DELETE gelöscht werden. (ein normaler Webserver beherrscht nur GET und POST) 156

157 REST in der Praxis : Das Generieren des XML-Datensatzes ist einfach. Man könnte sogar mit simplen PHP-Stringbefehlen den Code selber erzeugen. Aber es gibt weit elegantere Methoden. Wir verwenden die Spezifikation DOM (Document Object Model). Diese Spezifikation ist in PHP komplett integriert. Referenzieren : In Visual Basic : Set apfel = CreateObject (.) In PHP : $apfel = new DOMDocument( 1.0 ) Methode aufrufen : In Visual Basic : apfel.creatobject In PHP : $birne = $apfel -> createelement( auftrag ) 157

158 Jetzt ein komplettes Beispiel. Aus einer Datenbank der ERP-Ebene wurde mit PHP auf eine Anfrage hin gelesen, daß teil1 für ein Produkt aus Variante 2 besteht. Es muß ein XML-Dokument an den aufrufenden Rechner geschickt werden, das einen Auftrag enthält, der aus Teil1 besteht, das den Wert 1 hat : <?xml version="1.0"?> <auftrag> <teil1> 2 </teil1> </auftrag> 158

159 Realisierung in PHP : <?php $apfel = new DOMDocument( 1.0 ) ; header( Content-Type: text/plain ) ; $ursprung = $apfel -> createelement( auftrag ) ; $apfel -> appendchild($ursprung) ; $tag = $apfel -> createelement( teil1 ) ; $ursprung -> appendchild($tag) ; $inhalt = $apfel -> createtextnode( 2 ) ; $tag -> appendchild($inhalt) ; echo $apfel -> savexml() ; $> 159

160 Zeile 1 : $apfel ist das erzeugte Objekt Zeile 2 : ist für den (aufrufenden) Browser nötig Zeile 3 : das nötige root-element wird mit der Methode createelement erzeugt Zeile 4 :..und ins Dokument eingefügt Zeile 5 : das Tag mit dem Namen Teil1 wird erzeugt (Methode createelement) Zeile 6 :..und ins Dokument eingefügt : jetzt aber unter $urspung, dem root-element Zeile 7 : Mit der Methode createtextnode wird ein Inhalt erzeugt ( 1 ) Zeile 8 :..und ins Dokument eingefügt : jetzt aber unter $tag, dem zugehörigen tag Zeile 9 : und jetzt wird das Ganze ausgegeben : PHP-Ausgaben über cgi an den Aufrufer! 160

161 Datenverarbeitungstechnik Lösungsvorschläge Reiner Doll, Technikerschule München 161

162 Semaphore Private Sub linearmodul() Do //Beginn critical section band.order = 8 //Auftrag setzen (8 = Öffne Schranke1) band.write_order() //Auftrag schreiben band.start_module() //Modul starten //Ende critical section Do //warten, bis fertig band.read_state() Loop Until band.state = "ready" damit : Dim mein_mutex As New System.Threading.Mutex Private Sub linearmodul() Do Öffne Schranke1) mein_mutex.waitone() band.order = 8 //Auftrag setzen (8 = band.write_order() //Auftrag schreiben band.start_module() //Modul starten mein_mutex.waitone() Do //warten, bis fertig band.read_state() Loop Until band.state = "ready 162

163 Memory Aufgabe = 4 kb 2. 2 kb / 1 kb = 2 Seiten Seitennummer 2 bit Adresse auf Seite (10 bit) (insgesamt 4 Seiten) 4. Die Anzahl der Seiten im virtual memory ist 2 2, die Anzahl der Seiten im RAM ist 2 1. Der VM ist 2 mal so groß wie der physikalische RAM. 2 im Speicher, 2 nicht -> PB=0 bei 2 Seiten 163

164 Memory Aufgabe = 4 GB MB / 4 kb = 2 29 / 2 12 = = 2 17 = Seiten Seitennummer 20 bit (20, weil das ist) Adresse auf Seite 12 bit 4. Die Anzahl der Seiten im virtual memory ist 2 20, die Anzahl der Seiten im RAM ist Der VM ist 8 mal so groß (20-17 = 3 ; 2 3 =8) wie der physikalische RAM. 1/8 im Speicher, 7/8 nicht -> PB=0 bei 7 x Seiten 5. Annahme : Speicher gleichmäßig zugeteilt : 8 GB / 32 Tasks = 2 33 / 2 5 = 256 MB RAM pro Task Anzahl der Seiten pro Task : 256 MB / 4 kb = 2 28 / 2 12 = davon 1% -> 655 Seiten Nochmal, um Mißverständnise zu vermeiden : diese Beispiele sind sehr stark vereinfacht, in realen Systemen ist das erheblich komplizierter. Es geht hier nur darum, die Grundlagen zu verstehen! 164

165 Programmieren 1 do a = inputbox("wort eingeben") loop until a = "sesam" do a = inputbox("vorname bitte") b = inputbox("familienname bitte") loop until a = "reiner" and b = "doll" a = inputbox("vorname bitte") b = inputbox("familienname bitte") c = left(a,3) d = left(b,4) x = c&d msgbox(x) 165

166 Programmieren 2 Zunächst mit bekanntem Vorzeichen von m und t : m = inputbox("steigung (positiven wert!)") t = inputbox("achsenabschnitt (negativen wert!)") x = 0 'bei 0 gehts los dx = 1 'schritt zunächst 1 ' iteration do 'alles solange... do 'solange laufen... y0 = x * m + t 'einen startwert ausrechnen x = x + dx 'einen schritt gehen y1 = x * m + t 'nächsten wert ausrechnen y_vor = y0 * y1 'Vorzeichenwechsel prüfen loop while y_vor > 0 ' (vorzeichen gleich) dx = - (dx / 10) umdrehen und kleinere S. loop while y0*y1 > '...bis genau genug msgbox("gefundener wert : "&x) ' lösung ausgeben 166

167 Nun beliebiges t : m = inputbox("steigung (positiven wert!)") t = inputbox("achsenabschnitt (beliebigen wert!)") x = 0 'bei 0 gehts los dx = 1 'schritt zunächst 1 ' schrittrichtung ermitteln if t>0 then 'falls die y-achse im positiven schneidet dx = -dx 'nach links laufen (richtung drehen) end if ' iteration do 'alles solange... do 'solange laufen... y0 = x * m + t 'einen startwert ausrechnen x = x + dx 'einen schritt gehen y1 = x * m + t 'nächsten wert ausrechnen y_vor = y0 * y1 vorzeichenwechsel? loop while y_vor > 0 ' (vorzeichen gleich) dx = - (dx / 10) loop while y0*y1 > '...bis genau genug msgbox("gefundener wert : "&x) 'lösung ausgeben 167

168 Tomatendose : Aus : V =. r 2. h und : O = 2. r r. h folgt : O = f(r)= 2. r V / r Das ist für positive Werte eine Art Parabel, deren Minimum gesucht wird : v = inputbox("volumen (cm^3)") r = 0.1 dr = 0.1 do do O1 = 6.28 * r * r + 2 * v / r r = r + dr O2 = 6.28 * r * r + 2 * v / r loop until O1 < O2 dr = - dr / 2 loop until dr*dr < msgbox("bodenradius = " & r & " Oberfläche = " & O2 ) 168

169 Scripting.FileSystemObject 1. Set apfel = CreateObject( Scripting.FileSystemObject ) zahl=inputbox( Bitte die Anzahl der Ordner ) ort=inpubox( Zielpfad für die Ordner ) for i = 1 to zahl if apfel.folderexists(ort& \Test &i) then MsgBox( Ordner vorhanden ) else Set ordner=apfel.createfolder(ort& \Test\&i) end if next 169

170 2. Set apfel = CreateObject( Scripting.FileSystemObject ) zahl=inputbox( Bitte die Anzahl der Dateien ) ort=inputbox( Zielpfad für die Dateien ) for i = 1 to zahl if apfel.folderexists(ort) then apfel.createtextfile(ort& \testext &i&.txt ) else MsgBox( kein Ordner da! ) end if next 3. Set apfel = CreateObject( Scripting.FileSystemObject ) zahl=inputbox( Bitte die Anzahl der Ordner ) ort=inputbox( Zielpfad für die Ordner ) set zielfile=apfel.opentextfile(ort,8) for i = 1 to zahl zielfile.writeline( a &i) next 170

171 4. Set apfel = CreateObject( Scripting.FileSystemObject ) ort=inputbox( Zielpfad ) set ziel1=apfel.opentextfile(ort& \testtext1.txt,1) set ziel2=apfel.opentextfile(ort& \testtext2.txt,8) while not ziel1.atendofstream s1 = ziel1.readline s2 = ziel1.readline s2 = right(s2,1) s_out = s1&s2 ziel2.writeline(s_out) wend 171

172 ADSI 1. set ref=getobject("ldap://ou=uebung,dc=dv_praktikum, dc=local") for zahl = 1 to 10 set container=ref.create("organizationalunit","ou=cont"&zahl) container.setinfo next (2. Aufgabe ist manuell, also ohne Skript!) 3. set ref=getobject("ldap://cn=franz gans, ou=cont1,ou=uebung,dc=dv_praktikum,dc=local") sam=ref.get("samaccountname") given=ref.get("givenname") msgbox(sam) msgbox(given) 172

173 4. set ref=getobject("ldap://ou=cont1,ou=uebung,dc=dv_praktikum,d c=local") for each ding in ref klasse=ding.class if klasse="user" then sam=ding.get("samaccountname") msgbox(sam) end if next 5. set ref=getobject("ldap://ou=cont1,ou=uebung,dc=dv_praktikum,d c=local") for each ding in ref klasse=ding.class if klasse="computer" then ref.delete "computer",ding.name end if next 173

174 6. set ref=getobject("ldap://cn=franz gans,ou=cont1,ou=uebung,dc=dv_praktikum,dc=local") ref.put "givenname","donald" ref.put "sn","duck" ref.setinfo 7. set ref=getobject("ldap://ou=cont2,ou=uebung,dc=dv_praktikum,d c=local") for zahl=1 to 10 set ding = ref.create("user","cn=ken"&zahl) ding.put"samaccountname","ken"&zahl ding.put"givenname","vor"&zahl ding.put"sn","ben"&zahl ding.put "useraccountcontrol","512" ding.setinfo next 174

175 Kennungen mit ADSI set filesystem = CreateObject("Scripting.FileSystemObject") set activedir = GetObject("LDAP://ou="&zielcontainer&",dc="&domaene&",dc= local") set liste = filesystem.opentextfile(quelldatei) do until liste.atendofstream zeile = liste.readline element = split(zeile,";") klasse= element(2) vorhanden=0 for each dings in activedir if dings.name = "OU="&klasse then vorhanden=1 end if next if vorhanden=0 then set klassencont= activedir.create("organizationalunit","ou="&klasse) klassencont.setinfo msgbox("klasse "&klasse&" anlegen") 175

176 end if vor=element(4) nach=element(5) kennung=left(vor,3)&left(nach,3) for each dings in activedir set klasscont = GetObject ("LDAP://"&dings.name&", ou="&zielcontainer&", dc="&domaene&",dc=local") for each person in klasscont if person.name = "CN="&kennung then kennung=kennung&"2" end if next next set klassencont=getobject("ldap://ou="&klasse&",ou="&zielcontai ner&", dc="&domaene&",dc=local") set neuer = klassencont.create("user","cn="&kennung) neuer.put "samaccountname",kennung neuer.put "useraccountcontrol", "512" neuer.setinfo neuer.setpassword element(6) neuer.setinfo loop 176

177 Lächerliche PHP-Übung 1) HTML-Seite mit Form. Diese Seite wird zu Anfang geladen, erfasst Daten und schickt sie an den Server : <html> <body> <form action = "schicken.php" method = "POST"> <input type= text name="nachname"><br><br> <input type="submit"> </form> </body> </html> 2) HTML-Seite mit PHP. Diese Seite schicken.php wird von der ersten im Server aufgerufen <html> <body> <?php print "Die Eingabe war : $_POST[Nachname] ;?> </body> </html> 177

178 PHP leicht <html> <body> <form action = "test.php" method = "POST"> Wie lautet der filename für das apache-konfigfile? <input type= text name="kon"><br><br> Welche SAP nutzt Apache als Standard? <input type= radio name= sap value= 21 >21<br> <input type= radio name= sap value= 80 >80<br> <input type= radio name= sap value= 404 >404<br> <input type= radio name= sap value= 0 >0<br><br><br> Wie lautet die Fehlernummer für File not found? <input type= text name="f404"><br><br> Welcher Mechanismus überträgt PHP-Ausgaben an den Client zurück? <select name = cgi_mech > option value= cgi >cgi>/option> option value= html >html>/option> option value= http >http>/option> option value= cgf >cgf>/option> </select><br><br> <input type = submit value = fertig? abschicken! > </form> </body> </html> 178

179 <html> <body> <?php $sum=0; If ($_POST[kon] == httpd.conf ) { $sum=$sum+25; } If ($_POST[sap] == 80) { $sum=$sum+25; } If ($_POST[f404] == 404) { $sum=$sum+25; } If ($_POST[cgi_mech] == cgi ) { $sum=$sum+25; } If ($sum < 75) { Print looser! ; } If ($sum < 75) { Print looser! ; } } Else?> { </body> Print prima! ; </html> 179

180 PHP Prüfuingsniveau 1) Datenerfassung : <html> <body> <h1>welches Bier schmeckt mir?</h1> <br><br> Bitte geben Sie Ihren Namen, Vornamen und Ihre Telefonnummer an :<br> <form action = prost.php method = POST > <input type = text name = fam value= Familienname > <input type = text name = vor value= Vorname > <input type = text name = tel value= Telefonnummer ><br><br> Print Was trinken Sie am liebsten? ; <input type = text name = bier value= Biersorte > <br><br> <Input type = submit value = prost > </form> </body> </html> 180

181 2) Datenverarbeitung (server-sided) : <html> <body> <?php $handle=fopen( c:/var/triner.dat, r ); $zahl=0; While(!feof($handle)) { $zeile = fgets($hanlde,100); $zahl = substr_count($zeile, $_POST[tel] + $zahl; } Fclose($handle); If ($zahl>0) { Print nix gibt s! ; } Else { $handle=fopen( c:/var/trinker.das, a ); Fwrite($handle, $_POST[fam]..$_POST[vor]..$_POST[tel]. \r\n ); Fclose($handle); $handle=fopen(c:/var/biere.dat, a ); Fwrite($handle,$_POST[bier]. \r\n ); Fclose($handle); Print danke! ; }?> </body> </html> 181

182 Beziehungsprobleme In Teil a) ist das Problem, daß die Mitglieder nicht auf eine einzige Beziehung zu anderen Mitgliedern beschränkt sind : Männer #Mitgliedsnummer Geburtsdatum Beziehung n m Frauen #Mtgliedsnummer Geburtsdatum Es muß eine Zwischentable erzeugt werden, z.b. Beziehungen, in der in einem Eintrag (eine Beziehung) jeweils ein Mann und eine Frau drinstehen. In Teil b) ist das Problem, daß jede Realtion, die von einem Mann zu einer Frau zeigt, eine 1:1 Kardinalität aufweist. Lösung : Die Tables Männer und Frauen müssen zu einer einzigen zusammengefasst werden. Es wird eine Table Ehepaare erzeugt, in der in den Einträgen die beiden Eheleute drinstehen. 182

183 Biokiste Erster Entwurf : gespeichert werden Kunden, Kisten, Lebensmittel und Lieferanten : Kisten Kunden #Name Preis Lebensmittel #KDnummer Anschrift Kistenwahl Lebensmittel Lieferanten #Lmnummer Name Einheit Preis #LIEFnummer Lebensmittel 183

184 Prüfung der Kardinalitäten : Kisten Kunden #Name n #KDnummer Preis Anschrift Lebensmittel n m Kistenwahl Lebensmittel Lieferanten m #Lmnummer Name n #LIEFnummer Einheit Preis m Lebensmittel 184

185 Zwischentables: Kisten Bestellungen Kunden 1 1 #Name #BESTnummer #KDnummer Preis Kiste Anschrift Lebensmittel m Kunde Menge m Lebensmittel Zulieferliste Lieferanten 1 1 #Lmnummer #Zunummer #LIEFnummer Name Ware Einheit n Zulieferer Preis n 185

186 Zwischentables: Kisten Bestückung Lebensmittel 1 1 #Name #Stücknummer #Lmnummer Preis Kiste Name n Lebensmittel Einheit Menge n Preis 186

187 SQL-Praxis Eingabe der table : Werte rein : 187

188 Prüfung der Inhalte : Suche : 188

189 Einführung 189

190 Web-Kochbuch Schritt 1 : Eingabe des Gerichts, dann Ausgabe der Zutaten : 3 Tables in der Database test : 190

191 Aufrufende Seite kochbuch.html : <html> <body> Küchenservice <br><br> welches Gericht möchten Sie machen? <br> <br> <form action = "./liste.php" method = "post"> <select name = "gericht"> <option value = "PizzaFunghi">Pizza Funghi</option> <option value = "Jagerschnitzel">Jagerschnitzel</option> </select> <br> <br> <input type = "submit"> </form> </body> </html> 191

Übungen Datenverarbeitungstechnik 2017/18. Reiner Doll, Technikerschule München

Übungen Datenverarbeitungstechnik 2017/18. Reiner Doll, Technikerschule München Übungen Datenverarbeitungstechnik 2017/18 Reiner Doll, Technikerschule München http://portal.ts-muenchen.de mail@reinerdoll.de Übungen sind theoretisch zu lösende Aufgaben, die die besprochenen Themengebiete

Mehr

Technikerprüfung 2015/16. Datenverarbeitungstechnik. Zeit : 150 Minuten

Technikerprüfung 2015/16. Datenverarbeitungstechnik. Zeit : 150 Minuten Technikerschule - Fachschule für Maschinenbau-, Metallbau-, Informatik- und Elektrotechnik der Landeshauptstadt München Technikerprüfung 2015/16 Datenverarbeitungstechnik Zeit : 150 Minuten Klasse : Name

Mehr

Active Directory. Aufbau Funktion - Objekte

Active Directory. Aufbau Funktion - Objekte Active Directory Aufbau Funktion - Objekte Active Directory Was ist das? Hierarchischer Verzeichnisdienst Datenbank (gleiche DB wie Exchange) Schema (1 Schema pro Forest) Replikationsmechanismus (Multiple

Mehr

Festplatte klonen: Tutorial

Festplatte klonen: Tutorial Festplatte klonen: Tutorial Allgemein Es gibt sicherlich schon sehr viele Anleitungen dazu, wie man eine Festplatte klont. Der Grund, warum ich also eine eigene Anleitung schreibe ergibt sich daraus, dass

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Network-Attached Storage mit FreeNAS

Network-Attached Storage mit FreeNAS Network-Attached Storage mit FreeNAS Diese Anleitung zeigt das Setup eines NAS-Servers mit FreeNAS. FreeNAS basiert auf dem OS FreeBSD und unterstützt CIFS (samba), FTP, NFS, RSYNC, SSH, lokale Benutzer-Authentifizierung

Mehr

Windows Server 2016 Essentials Basis-Server für kleine Unternehmen

Windows Server 2016 Essentials Basis-Server für kleine Unternehmen Windows Server 2016 23 Windows Server 2016 Essentials Mit Windows Server 2016 Essentials hat Microsoft einen Server im Angebot, der sich relativ leicht einrichten lässt und grundlegende Funktionen zu Verfügung

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version

2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version 2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version Das Verwaltungsmodul moveon besteht aus zwei Komponenten: dem moveon Client und der moveon Datenbank. Der moveon Client enthält alle Formulare,

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch

Mehr

SCHATTENKOPIE OHNE SCHATTEN

SCHATTENKOPIE OHNE SCHATTEN alias K. Fabian Copyright 2006 K. Fabian Copyright 2006 http://www.wintotal.de 19.02.2006 SCHATTENKOPIE OHNE SCHATTEN Schattenkopien können das Leben eines Netzwerk-Administrators in bestimmten Situationen

Mehr

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis Einführung Einführung in in Betriebssysteme Betriebssysteme und und Theorie und Praxis Theorie und Praxis Oktober 2006 Oktober 2006 Prof. Dr. G. Hellberg Prof. Dr. G. Hellberg Email: hellberg@drhellberg.de

Mehr

Installationsanleitung ETU-Planer

Installationsanleitung ETU-Planer Mindestsystemvoraussetzungen: Der ETU-Planer besteht aus zwei Installationskomponenten: Die Serverkomponenten enthalten Datenbankserver und Netzwerklizenzierungsdienst Die Arbeitsplatzversion enthält die

Mehr

Printing mit Windows Server 2003 Ver 1.0

Printing mit Windows Server 2003 Ver 1.0 Printing mit Windows Server 2003 Ver 1.0 Autor: Mag Georg Steingruber Veröffentlicht: August 2003 Feedback oder Anregungen:i-georgs@microsoft.com Abstract Dieses Dokument beschreibt die Einrichtung eines

Mehr

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. 1 In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. Zunächst stellt sich die Frage: Warum soll ich mich mit der Architektur eines DBMS beschäftigen?

Mehr

Basisinformationstechnologie I Wintersemester 2011/ November 2011 Betriebssysteme

Basisinformationstechnologie I Wintersemester 2011/ November 2011 Betriebssysteme Basisinformationstechnologie I Wintersemester 2011/12 23. November 2011 Betriebssysteme Seminarverlauf 12. Oktober: Organisatorisches / Grundlagen I 19. Oktober: Grundlagen II 26. Oktober: Grundlagen III

Mehr

2 Verwalten der Active

2 Verwalten der Active 2 Verwalten der Active Directory Domänendienste Prüfungsanforderungen von Microsoft: Manage and Maintain Active Directory Domain Services (AD DS) o Configure Service Authentication and account policies

Mehr

Datenbank auf neuen Server kopieren

Datenbank auf neuen Server kopieren Datenbank auf neuen Server kopieren Mobility & Care Manager Release Datum: 01.10.2014 Version 1.1 Inhaltsverzeichnis Inhaltsverzeichnis... 2 Änderungsgeschichte... 15 1. Einleitung... 3 2. Voraussetzungen...

Mehr

Präsentation von Markus Häfele

Präsentation von Markus Häfele Präsentation von Markus Häfele Network Implementation and Integration, 7. Semester 19. Jänner 2009 Zentraler, hierarchischer Verzeichnisdienst Gemeinsame Datenbank bzw. Informationsquelle Speichert Attribute

Mehr

Support Center Frankfurt Windows 2000 Server. Hessisches Landesinstitut für Pädagogik Gruppenrichtlinien. Gruppenrichtlinien

Support Center Frankfurt Windows 2000 Server. Hessisches Landesinstitut für Pädagogik Gruppenrichtlinien. Gruppenrichtlinien Unter Windows 2000 wurden die von NT 4.0 bekannten System- und Sicherheitsrichtlinien durch das Konzept der abgelöst. Die dienen der zentralen Definition von Konfigurationseinstellungen für Benutzer und

Mehr

1. Verfahren und Vorüberlegungen

1. Verfahren und Vorüberlegungen Clients per GPO herunterfahren Regionaler Arbeitskreis Netze Adrian Koch, Antonius Schnetter, Felix Kehl, Andreas Mayer 04.06.2017 CC BY-SA 4.0 1. Verfahren und Vorüberlegungen In dieser Anleitung erfahren

Mehr

Single- und Multitasking

Single- und Multitasking Single- und Multitasking Peter B. Ladkin ladkin@rvs.uni-bielefeld.de Peter B. Ladkin Command Interpreter (ComInt) läuft wartet auf Tastatur-Eingabe "liest" (parst) die Eingabe (für Prog-Name) Macht "Lookup"

Mehr

Kommen wir nun zum Kernthema. Dazu starten wir beide Windows 10 Betriebssysteme in Virtualbox.

Kommen wir nun zum Kernthema. Dazu starten wir beide Windows 10 Betriebssysteme in Virtualbox. Dokumentation zur einfachen Einrichtung eines Netzwerkes mittels Netzwerkbrücke zwischen zwei virtuellen Maschinen in Virtualbox inklusive freigegebenen Ordnern sowie einer Remoteverbindung. Ein installiertes

Mehr

Windows 10 Terminal Anleitung Vorher eine Sicherheitskopie von der termsrv.dll (C:\Windows\System32) und der win.ini (C:\Windows) erstellen.

Windows 10 Terminal Anleitung Vorher eine Sicherheitskopie von der termsrv.dll (C:\Windows\System32) und der win.ini (C:\Windows) erstellen. Windows 10 Terminal Anleitung Vorher eine Sicherheitskopie von der termsrv.dll (C:\Windows\System32) und der win.ini (C:\Windows) erstellen. Technische Dokumentation EUCASOFT Itas GmbH Allacher Straße

Mehr

Datenverarbeitungstechnik 2015/16

Datenverarbeitungstechnik 2015/16 Datenverarbeitungstechnik 2015/16 Serverbetriebssysteme (Grundlagen) Multitasking, Scheduler Memory Management Windows (Microsoft-Server) Windows Domäne Active Directory Rechtesystem und User Administration

Mehr

{tip4u://094} Passwort ändern

{tip4u://094} Passwort ändern {tip4u://094} Version 7 Zentraleinrichtung für Datenverarbeitung (ZEDAT) www.zedat.fu-berlin.de Diese Anleitung erklärt die grundsätzlichen Anforderungen an das Passwort für Ihren ZEDAT-Account und die

Mehr

Schnelleinstieg Agenda Anywhere

Schnelleinstieg Agenda Anywhere Schnelleinstieg Agenda Anywhere Bereich: IT-Lösungen - Info für Anwender Nr. 86218 Inhaltsverzeichnis 1. Ziel 2. Beschreibung 3. Voraussetzungen 3.1. Sicherheitsinformationen Anywhere-Server 3.2. Betriebssysteme

Mehr

Betriebssysteme. Thomas Fahringer. Institut für Informatik Universität Innsbruck. VO Betriebssysteme

Betriebssysteme. Thomas Fahringer. Institut für Informatik Universität Innsbruck. VO Betriebssysteme Grundzüge der Informatik IV: Betriebssysteme Thomas Fahringer Institut für Informatik Universität Innsbruck V Thomas.Fahringer@uibk.ac.at 1 Kapitel I Betriebssysteme: Aufgaben und Überblick V 2 Was ist

Mehr

Installation. Wenn SPG-Verein nur an einem Arbeitsplatz genutzt werden soll, dann sollte diese Installationsart gewählt werden.

Installation. Wenn SPG-Verein nur an einem Arbeitsplatz genutzt werden soll, dann sollte diese Installationsart gewählt werden. Übersicht sarten Sie können -Verein 4.0 auf 3 verschiedene Arten installieren. Einzelplatzinstallation (LocalDB) Wenn -Verein nur an einem Arbeitsplatz genutzt werden soll, dann sollte diese sart gewählt

Mehr

Technikerprüfung Datenverarbeitungstechnik. Zeit : 150 Minuten

Technikerprüfung Datenverarbeitungstechnik. Zeit : 150 Minuten Fachschule für Elektrotechnik, Maschinenbautechnik und Metallbautechnik der Landeshauptstadt München Klasse : Name : Technikerprüfung 2012 Datenverarbeitungstechnik Zeit : 150 Minuten Erstkorrektur Zweitkorrektur

Mehr

Installationsanleitung GAEB-Konverter 9

Installationsanleitung GAEB-Konverter 9 Installationsanleitung GAEB-Konverter 9 1 2 1. Systemvoraussetzungen Die Systemvoraussetzungen sind stark abhängig von der Größe und der Anzahl der gleichzeitig zu verarbeitenden Dateien. Allgemein kann

Mehr

Network Access Protection

Network Access Protection Network Access Protection mit Windows Server 2012 Funktion DHCP Version: 1.0 Autor: Andreas Wisler 1 Inhaltsverzeichnis 1 INHALTSVERZEICHNIS 2 2 VORBEREITUNGEN 3 3 ACTIVE DIRECTORY 3 3.1 Installation 3

Mehr

EINFÜHRUNG IN LINUX DR. MATTHIAS M. HÖLZL

EINFÜHRUNG IN LINUX DR. MATTHIAS M. HÖLZL EINFÜHRUNG IN LINUX DR. MATTHIAS M. HÖLZL 1. Aufbau eines Computer-Systems Ein Computersystem besteht aus Hardware (dem eigentlichen Rechner) und Software (den Programmen). Zur Hardware zählen der Prozessor

Mehr

Installation Netzwerk Client

Installation Netzwerk Client Installation Netzwerk Client Abweichend von einer normalen zentralen Netzwerkinstallation, kann eine Netzwerk Client Installation zu einer zentralen Netzwerkinstallation hinzugefügt werden. Dadurch wird

Mehr

Installationsanleitung ab-agenta

Installationsanleitung ab-agenta Installationsanleitung ab-agenta Hard-/Software-Voraussetzungen Unterstützung von 32- und 64-Bit Betriebssystemen Windows 7/8/8.1/10, 2008/2012/2016 Server Einplatz-Version: mindestens 4 GB RAM Arbeitsspeicher,

Mehr

Virtuelle Desktop Infrastruktur

Virtuelle Desktop Infrastruktur Virtuelle Desktop Infrastruktur Inhaltsverzeichnis 1. Hintergrund 2. VMware Horizon View Clients 3. Installation VMware Horizon View Client 3.1. Installation für Windows 3.2. Installation für OS X 3.3.

Mehr

Installation und Konfiguration von Windows Servern

Installation und Konfiguration von Windows Servern IVV Naturwissenschaften IV der Fachbereiche Biologie Chemie Physik Westfälische Wilhelms-Universität Münster Einführung für Administratoren im SS 2004 Installation und Konfiguration von Windows Servern

Mehr

Kurzanleitung für den MyDrive Client

Kurzanleitung für den MyDrive Client Kurzanleitung für den MyDrive Client Hinweis: Prüfen Sie bei Problemen zuerst, ob eine neuere Version vorhanden ist und installieren Sie diese. Version 1.3 für MAC und Linux (29.06.2017) - Hochladen mit

Mehr

Update-Installation ASV-BW ASV-BW. Stand: Kontaktdaten SCS: .

Update-Installation ASV-BW ASV-BW. Stand: Kontaktdaten SCS:  . Stand: 30.03.2017 Kontaktdaten SCS: Telefon: E-Mail 0711 89246-0 sc@schule.bwl.de Weitere Informationsquellen: Im Intranet Im Internet http://kvintra.kultus.bwl.de/wdb www.scs.kultus-bw.de Inhaltsverzeichnis

Mehr

SET-ACL. Dokumentation

SET-ACL. Dokumentation SET-ACL Dokumentation getmorex GmbH Länggstr. 17 Postfach CH-8308 Illnau e-mail: contact@getmorex.ch web: www.getmorex.ch Tel.: 052 / 346 10 46 Fax: 052 / 346 14 79 Inhaltsverzeichnis 1 Set-ACL 1.1 Installations-Anleitung

Mehr

Technikerprüfung 2016/17. Datenverarbeitungstechnik TE2b. Zeit : 150 Minuten

Technikerprüfung 2016/17. Datenverarbeitungstechnik TE2b. Zeit : 150 Minuten Technikerschule - Fachschule für Maschinenbau-, Metallbau-, Informatik- und Elektrotechnik der Landeshauptstadt München Technikerprüfung 2016/17 Datenverarbeitungstechnik TE2b Zeit : 150 Minuten Klasse

Mehr

Leitfaden für die Installation der freien Virtual Machine. C-MOR Videoüberwachung auf einem VMware ESX Server

Leitfaden für die Installation der freien Virtual Machine. C-MOR Videoüberwachung auf einem VMware ESX Server Diese Anleitung illustriert die Installation der Videoüberwachung C-MOR Virtuelle Maschine auf VMware ESX Server. Diese Anleitung bezieht sich auf die Version 4 mit 64-Bit C-MOR-Betriebssystem. Bitte laden

Mehr

ILIAS-Hauptordner als Laufwerk anbinden

ILIAS-Hauptordner als Laufwerk anbinden 11.04.2013 Informatikdienste ILIAS-Hauptordner als Laufwerk anbinden 1 Zugriff auf ILIAS-Daten Auf die in ILIAS gespeicherten Dateien und Verzeichnisse hat man auch ohne Umweg über den Webbrowser Zugriff.

Mehr

Teil I. Allgemeine System-Administration. Windows Server 2016 Neues, Lizenzierung und Download... 23

Teil I. Allgemeine System-Administration. Windows Server 2016 Neues, Lizenzierung und Download... 23 Teil I Allgemeine System-Administration In diesem Teil: Kapitel 1 Windows Server 2016 Neues, Lizenzierung und Download............................... 23 Kapitel 2 Windows Server 2016 installieren oder

Mehr

Freispeicherverwaltung Martin Wahl,

Freispeicherverwaltung Martin Wahl, Freispeicherverwaltung Martin Wahl, 17.11.03 Allgemeines zur Speicherverwaltung Der physikalische Speicher wird in zwei Teile unterteilt: -Teil für den Kernel -Dynamischer Speicher Die Verwaltung des dynamischen

Mehr

Content Management System

Content Management System Content Management System Joomla ist ein CMS. Dieses soll von der Website www.joomlaos.de in der aktuellsten Version geladen werden, um es dann auf dem Gratis-Hoster (Anbieter von Web-Platz) zu installieren.

Mehr

Zentral verwaltete Netzwerke. Grundlage:

Zentral verwaltete Netzwerke. Grundlage: Grundlage: Grundlage: Verzeichnisdienst AD (Active Directory) AD ist eine Datenbank, die sich auf dem Server befindet Diese Datenbank erhält einen Namen, der als Domäne bezeichnet wird Strukturbildung

Mehr

Linux-Camp: Linux als Server am Beispiel LAMP

Linux-Camp: Linux als Server am Beispiel LAMP Linux-Camp: Linux als Server am Beispiel LAMP Linux, Apache, MySQL, PHP mit Ubuntu Version 8.04 Inhalt LAMP-Komponenten LAMP-Komponenten installieren, konfigurieren und prüfen Apache Webserver PHP5 MySQL

Mehr

1.3 Erster Start des AfA-Moduls und Anlegen der Datenbank (Mandant und AFA)

1.3 Erster Start des AfA-Moduls und Anlegen der Datenbank (Mandant und AFA) Die Installation des AfA-Moduls im Netzwerk setzt sich aus fünf Teilen zusammen: 1. Installation der Datenbank Pervasive SQL 2000i Server Engine (Kapitel 1 bis 3) 2. Installation des Pervasive SQL 2000i

Mehr

Anleitung zur Erstinstallation von ElsaWin 6.0

Anleitung zur Erstinstallation von ElsaWin 6.0 Anleitung zur Erstinstallation von ElsaWin 6.0 Seite 1 von 28 Inhaltsverzeichnis 1. Voraussetzungen... 3 2. Installation ElsaWin 6.0... 4 3. Einrichtung VZ-/Importeursnummer und Händlernummer... 14 4.

Mehr

Installations-Checkliste DATEV DMS classic für Unternehmen Update-Installation. 1 Informationen zum Update... 2 Ausnahmefall...2

Installations-Checkliste DATEV DMS classic für Unternehmen Update-Installation. 1 Informationen zum Update... 2 Ausnahmefall...2 1 Informationen zum Update... 2 Ausnahmefall...2 Einsatz von individuellen Erweiterungen...2 Ergänzung für Anwender der DATEV E-Mail-Archivierung...2 2 Vorbereitende Maßnahmen... 3 Sichern des bestehenden

Mehr

Bestellsoftware ASSA ABLOY Matrix II

Bestellsoftware ASSA ABLOY Matrix II Bestellsoftware ASSA ABLOY Matrix II Installationsanleitung Inhalt Einleitung... 2 Erstinstallation... 2 Weitere Installation / Installation im Netzwerk... 3 Fehlerbehandlung... 5 Webserver nicht erreichbar...

Mehr

Installation von Web Attached Backup V 13

Installation von Web Attached Backup V 13 Installation von Web Attached Backup V 13 Seite 1 von 24 Inhalt: BEVOR SIE MIT DER INSTALLATION BEGINNEN:... 3 INSTALLATION DS-CLIENT... 4 INSTALLATION DER DS-RECOVERY TOOLS... 14 BACKUPSÄTZE EINRICHTEN...

Mehr

Installationsanleitung E-Newsletter

Installationsanleitung E-Newsletter Installationsanleitung E-Newsletter Einleitung...2 Installation WebService...2 Vorbereitung Windows Server 2003, 2008, 2008 R2...2 Vorbereitung Windows Server 2012...6 PROFFIX E-Newsletter WebService installieren...

Mehr

NetMan Desktop Manager Quickstart-Guide

NetMan Desktop Manager Quickstart-Guide NetMan Desktop Manager Quickstart-Guide In diesem Dokument wird die Installation des NetMan Desktop Manager beschrieben. Bitte beachten Sie, dass hier nur ein Standard-Installationsszenario beschrieben

Mehr

Backup und Restore mit PC Wrapper

Backup und Restore mit PC Wrapper Backup und Restore mit PC Wrapper Zusammenfassung: PC Wrapper ermöglicht es, ein Backup einer virtuellen Maschine auf einem Backupserver abzulegen. Der Backupserver ist ein virtuelle oder physikalische

Mehr

Anleitung für die Installation des USB Netzwerkkabels unter WIN2000 :

Anleitung für die Installation des USB Netzwerkkabels unter WIN2000 : Anleitung für die Installation des USB Netzwerkkabels unter WIN2000 : Lieferumfang : USB-Netzwerkkabel Treiber-Diskette Deutsche Installationsanleitung Produktbeschreibung : Das USB-Netzwerkkabel ermöglicht

Mehr

Einrichtung von WSUS auf Computern mit Windows- Betriebssystem an der Universität Hamburg

Einrichtung von WSUS auf Computern mit Windows- Betriebssystem an der Universität Hamburg Einrichtung von WSUS auf Computern mit Windows- Betriebssystem an der Universität Hamburg 1) Einleitung Das Regionale Rechenzentrum bietet für Rechner mit Windows Betriebssystem im Netz der Universität

Mehr

Hofmann & Gschwandtner GbR T I P P M A S T E R. Tastatur-Lernprogramm in 50 Lektionen. Ergänzende Installation von Programm-Komponenten im Netzwerk

Hofmann & Gschwandtner GbR T I P P M A S T E R. Tastatur-Lernprogramm in 50 Lektionen. Ergänzende Installation von Programm-Komponenten im Netzwerk Hofmann & Gschwandtner GbR T I P P M A S T E R Tastatur-Lernprogramm in 50 Lektionen Ergänzende Installation von Programm-Komponenten im Netzwerk (Ergänzung zur Kurzanleitung für Schulen) Stand November

Mehr

KVN-Portal. das Onlineportal der KVN. Dokumentation für Microsoft Windows. Version 5.1 vom Kassenärztliche Vereinigung Niedersachsen

KVN-Portal. das Onlineportal der KVN. Dokumentation für Microsoft Windows. Version 5.1 vom Kassenärztliche Vereinigung Niedersachsen Kassenärztliche Vereinigung Niedersachsen Inhaltsverzeichnis 1. Allgemein... 3 1.1 Unterstützte Betriebssysteme und Internet Browser... 3 2. Zugang... 4 2.1 Anmeldung... 4 2.2 VPN Verbindung herstellen...

Mehr

Installationsanleitung für die netzbasierte Variante Ab Version 3.6. KnoWau, Allgemeine Bedienhinweise Seite 1

Installationsanleitung für die netzbasierte Variante Ab Version 3.6. KnoWau, Allgemeine Bedienhinweise Seite 1 1 Installationsanleitung für die netzbasierte Variante Ab Version 3.6 Copyright KnoWau Software 2014 KnoWau, Allgemeine Bedienhinweise Seite 1 2 Inhaltsverzeichnis 1 Übersicht... 3 2 Installation... 4

Mehr

Kurzanleitung für den MyDrive Client

Kurzanleitung für den MyDrive Client Kurzanleitung für den MyDrive Client Hinweis: Prüfen bei Problemen zuerst, ob eine neuere Version vorhanden ist und installieren Sie diese. Version 1.1 - Kopieren von einzelnen Files innerhalb von MyDrive

Mehr

Technikerprüfung Datenverarbeitungstechnik. Zeit : 180 Minuten

Technikerprüfung Datenverarbeitungstechnik. Zeit : 180 Minuten Fachschule für Elektrotechnik, Maschinenbautechnik und Metallbautechnik der Landeshauptstadt München Klasse : Name : Technikerprüfung 2009 Datenverarbeitungstechnik Zeit : 180 Minuten Erstkorrektur Zweitkorrektur

Mehr

Hyper V unter Windows 10 benutzen

Hyper V unter Windows 10 benutzen Hyper V unter Windows 10 benutzen Virtualisierungslösungen Der Betrieb von virtuellen Computern gehört bereits seit geraumer Zeit zu einem wichtigen Einsatzgebiet moderner PC Systeme. Früher kamen dafür

Mehr

Virtueller Speicher und Memory Management

Virtueller Speicher und Memory Management Virtueller Speicher und Memory Management Speicher-Paradigmen Programmierer ein großer Adressraum linear adressierbar Betriebssystem eine Menge laufender Tasks / Prozesse read-only Instruktionen read-write

Mehr

Klausur Betriebssysteme

Klausur Betriebssysteme Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme 5.2.2016 Die Dauer der Klausur beträgt 90 Minuten. Es sind keine Unterlagen und Hilfsmittel erlaubt. Bitte bearbeiten Sie die Aufgaben soweit wie

Mehr

FreeIPA. Eine Einführung. Robert M. Albrecht. Presented by. Fedora Ambassador CC-BY-SA. Freitag, 20. Juli 12

FreeIPA. Eine Einführung. Robert M. Albrecht. Presented by. Fedora Ambassador CC-BY-SA. Freitag, 20. Juli 12 FreeIPA Eine Einführung Presented by Robert M. Albrecht Fedora Ambassador CC-BY-SA Robert M. Albrecht Linux seit 1992 RedHat User seit 1996 Fedora seit 2003 romal@fedoraproject.org Robert-M.Albrecht@T-Systems.COM

Mehr

Dateien mit Scan-to-Folder an einen SMB-Ordner senden

Dateien mit Scan-to-Folder an einen SMB-Ordner senden Seite 1 von 10 Deutsch English Español Français Italiano Nederlands Dateien mit Scan-to-Folder an einen SMB-Ordner senden Veröffentlicht 01.06.2007 23:22 Aktualisiert 09.03.2011 21:35 Antwort-ID 67804

Mehr

Tutorial 7 TEIL 1/2. Untersuchung von ebusiness Anwendungen auf der Basis des IBM WebSphere Developer V 7.0

Tutorial 7 TEIL 1/2. Untersuchung von ebusiness Anwendungen auf der Basis des IBM WebSphere Developer V 7.0 Tutorial 7 TEIL 1/2 Untersuchung von ebusiness Anwendungen auf der Basis des IBM WebSphere Developer V 7.0 Copyright Institut für Informatik, Universität Leipzig Hinweise: Die Arbeiten werden unter Windows

Mehr

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Installationsanleitung MS SQL Server 2005 für Sage 50 Ablage & Auftragsbearbeitung Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Inhaltsverzeichnis 1. GRUNDSÄTZLICHES... 3 2. SQLExpress Installationsanleitung

Mehr

Handbuch für Anwender. ipoint Player

Handbuch für Anwender. ipoint Player Handbuch für Anwender ipoint Player Inhaltsverzeichnis 1 DIE PLAYER-APPLIKATION STARTEN... 3 2 ERSTE ANWENDUNG DES PLAYERS... 4 3 ANWENDUNG DESPLAYERS... 6 4 DEN PLAYER ALS DEDICATED PLAYER EINSETZEN...

Mehr

Topal Payroll braucht mindestens SQL Server (Express) Version 2014

Topal Payroll braucht mindestens SQL Server (Express) Version 2014 INSTALLATIONSANLEITUNG TOPAL PAYROLL Voraussetzungen Topal Payroll braucht mindestens SQL Server (Express) Version 2014 Topal Payroll setzt eine vorgängige SQL-Server Installation voraus (falls Topal Finanzbuchhaltung

Mehr

HOBLink Mobile und HOBCOM Universal Server

HOBLink Mobile und HOBCOM Universal Server und HOBCOM Universal Server Sicherer Zugriff auf Unternehmensressourcen mit mobilen Endgeräten Überblick Aktuelle Studien belegen, dass immer mehr Mitarbeiter mit mobilen Endgeräten auf Unternehmensdaten

Mehr

Lokale Scanner am Thin Client als Netzwerkscanner nutzen. Inhaltsverzeichnis

Lokale Scanner am Thin Client als Netzwerkscanner nutzen. Inhaltsverzeichnis Lokale Scanner am Thin Client als Netzwerkscanner nutzen Inhaltsverzeichnis Scannen mit WIA: Windows 10, Server 2008R2 (64bit), Server 2012, Server 2016...2 Scannen mit Twain: Windows XP, Windows 2003,

Mehr

pinremotex Handbuch Version 1.0

pinremotex Handbuch Version 1.0 pinremotex Handbuch Version 1.0 Page 1 Inhaltsverzeichnis 1 Einleitung... 3 2 Setup... 4 2.1 VM laden... 4 2.2 IP Adresse ermitteln... 4 2.2.1 Über Konsole... 4 2.2.2 Über Detection Tool... 4 2.3 Erste

Mehr

EINRICHTEN EINER SQL-SICHERUNG FÜR BMD NTCS

EINRICHTEN EINER SQL-SICHERUNG FÜR BMD NTCS EINRICHTEN EINER SQL-SICHERUNG FÜR BMD NTCS, Steyr INHALT 1. EINRICHTEN EINER SQL-SICHERUNG FÜR BMD NTCS... 3 1.1. Einrichten einer SQL-Sicherung... 3 1.1.1. Kontrolle des Recovery models... 3 1.1.2. Kontrolle

Mehr

MySQL Community Server Installationsbeispiel

MySQL Community Server Installationsbeispiel MySQL Community Server 5.5.28 Installationsbeispiel Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der untermstrich-datenbank

Mehr

Installation. Prisma. Netzwerkversion

Installation. Prisma. Netzwerkversion 1 Installation Prisma Netzwerkversion Alleinvertrieb: Dipl.-Ing. W. Reichel Email: info@myprisma.com Internet: www.myprisma.com 2 Die Voraussetzungen für den Netzwerkbetrieb von Prisma sind folgende: 1.

Mehr

(Cache-Schreibstrategien)

(Cache-Schreibstrategien) Übungsblatt 2 Aufgabe 1 (Digitale Datenspeicher) 1. Nennen Sie einen digitalen Datenspeicher, der mechanisch arbeitet. 2. Nennen Sie zwei rotierende magnetische digitale Datenspeicher. 3. Nennen Sie zwei

Mehr

Installation und Konfiguration

Installation und Konfiguration Installation und Konfiguration Das BUILDUP Programm besteht aus zwei Teilen: das BUILDUP Programm und das BUILDUP Server Programm. Der BUILDUP Server ist für die Datenhaltung und die Lizenzierung zuständig

Mehr

Konfiguration des Servers

Konfiguration des Servers Um mehreren Rechnern den Zugang zum Internet zu ermöglichen gibt es sowohl verschiedene Software Lösungen (WinRoute, Jana, AVM Ken, ) als auch verschiedene Hardware Lösungen (Router ). Für ein kleines

Mehr

DLS.Touch Interface. Voraussetzungen. DLS.Touch Interface

DLS.Touch Interface. Voraussetzungen. DLS.Touch Interface DLS.Touch Interface DLS.Touch ist eigens für Industriecomputer mit Touchscreen entwickelter Client für das DLS Dokumentenmanagementsystem und damit können auch Benutzern in Feuchträumen oder in staubiger

Mehr

Samba. Zinching Dang. 06. Juni 2014

Samba. Zinching Dang. 06. Juni 2014 Samba Zinching Dang 06. Juni 2014 1 Samba Samba allgemein Software-Schnittstelle für Interoperabilität zwischen verschiedenen Betriebssystemen, z. B. Microsoft Windows, Linux, Mac OS X, etc. basiert auf

Mehr

ESTOS XMPP Proxy

ESTOS XMPP Proxy ESTOS XMPP Proxy 4.1.12.22953 4.1.12.22953 1 Willkommen zum ESTOS XMPP Proxy... 4 1.1 WAN Einstellungen... 4 1.2 LAN Einstellungen... 5 1.3 Diagnose... 6 1.4 Proxy Dienst... 6 1.5 Server-Zertifikat...

Mehr

ESTOS XMPP Proxy

ESTOS XMPP Proxy ESTOS XMPP Proxy 4.1.18.27533 4.1.18.27533 1 Willkommen zum ESTOS XMPP Proxy... 4 1.1 WAN Einstellungen... 4 1.2 LAN Einstellungen... 5 1.3 Diagnose... 6 1.4 Proxy Dienst... 6 1.5 Server-Zertifikat...

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 13.11.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Installation von ib-normcad 11 unter rz-industriebau 2012

Installation von ib-normcad 11 unter rz-industriebau 2012 Installation von ib-normcad 11 unter rz-industriebau 2012 Für ib-normcad 11 unter rz-industriebau 2012 gibt es derzeit kein Setup-Programm. Die Anwendung muss manuell installiert werden. Dazu sind die

Mehr

am abspeichern übertragen. USB-Treiber bestätigen. Seite 1 von 9

am abspeichern übertragen. USB-Treiber bestätigen. Seite 1 von 9 Bedienungsanleitung Software Cross Control V 2. 01 Software Cross- Control V.2.01 Die Software im Überblick Mit der Software Cross-Control erhalten Sie die Möglichkeit, alle Einstellwerte der Lucius-6K

Mehr

Musterlösung Prüfung WS 01/02

Musterlösung Prüfung WS 01/02 Musterlösung Prüfung WS 01/02 Fach: I3 Software-Technik (SEE, GRS, BTS) Teilprüfung: Betriebssysteme Tag: 29.01.2002 10:45 14.45 Raum: 1006 Bearbeitungszeit: 4 Stunden Name:... Matr.Nr.:... Punkte:...

Mehr

S.M. Hartmann GmbH IT Solutions

S.M. Hartmann GmbH IT Solutions S.M. Hartmann GmbH 82008 Unterhaching Prager Straße 7 www.smhsoftware.de S.M. Hartmann GmbH IT Solutions Software für den modernen Handel SMH-Connect/400 Version V6.0 Beschreibung SMH-Connect: iseries

Mehr

DOSEMU. Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Matthias Felix FAU. 13.

DOSEMU. Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Matthias Felix FAU. 13. DOSEMU Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren Matthias Felix filo@icip.de FAU 13. Juni 2007 Matthias Felix (FAU) DOSEMU 13. Juni 2007 1 / 22 Inhalt 1 Einführung

Mehr