Lösungsvorschläge zu den Übungen und Praktika zur Datenverarbeitung Wenn Sie hier nachschauen, bevor Sie die jeweilige Aufgabe gelöst haben, ist das verlorene Zeit : da gehen Sie lieber zum Baden! Sie lernen ausschließlich durch selber machen!
Speicherverwaltung 1. 2 32 = 4 GB 2. 512 MB / 4 kb = 2 29 / 2 12 = 2 29-12 = 2 17 = 131072 Seiten 3. 01000100000111001010 11000110101000101 Seitennummer 20 bit (Index) Adresse auf Seite 17 bit 4. Die Anzahl der Seiten im virtual memory ist 2 20, die Anzahl der Seiten im RAM ist 2 17. 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 131072 Seiten 5. 8 GB / 32 Tasks = 2 33 / 2 5 = 256 MB RAM pro Task 256 MB / 4 kb = 2 28 / 2 12 = 65536 davon 1% -> 655 Seiten Nochmal, um Mißverständnise zu vermeiden : diese Verwaltungsbeispiele sind sehr stark vereinfacht, in realen Systemen (z.b. Windows) ist das erheblich komplizierter. Es geht hier nur darum, die Grundlagen zu verstehen!
Scripting.FileSystemObject 1. Set apfel = CreateObjekct( Scripting.FileSystemObject ) zahl=inputbox( Bitte die Anzahl der Ordner ) ort=( 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) 2. Set apfel = CreateObjekct( Scripting.FileSystemObject ) zahl=inputbox( Bitte die Anzahl der Dateien ) ort=( 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! ) 3. Set apfel = CreateObjekct( Scripting.FileSystemObject ) zahl=inputbox( Bitte die Anzahl der Ordner ) ort=( Zielpfad für die Ordner ) set zielfile=apfel.opentextfile(ort,8) for i = 1 to zahl zielfile.writeline( a &i) 4. Set apfel = CreateObjekct( Scripting.FileSystemObject ) ort=( Zielpfad ) set ziel1=apfel.opentextfile(ort& \testtext1.txt,1) set ziel1=apfel.opentextfile(ort& \testtext2.txt,8) while ziel1.atendofstream = false s1 = ziel1.readline s2 = ziel1.readline s2 = right(s2,1) wozu denn das?? s_out = s1&s2 ziel2.writeline(s_out) wend
Lösungen zu den ADSI-Übungen 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 (2. Aufgabe ist manuell, also ohne Skript!) 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) set ref=getobject("ldap://ou=cont1,ou=uebung,dc=dv_praktikum,dc=local") for each ding in ref klasse=ding.class if klasse="user" then sam=ding.get("samaccountname") msgbox(sam) set ref=getobject("ldap://ou=cont1,ou=uebung,dc=dv_praktikum,dc=local") for each ding in ref klasse=ding.class if klasse="computer" then ref.delete "computer",ding.name 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 set ref=getobject("ldap://ou=cont2,ou=uebung,dc=dv_praktikum,dc=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
Lösungsvorschlag zur Kennungserzeugung mit ADSI quelldatei = "c:\prakt.txt" domaene = "dv_praktikum" zielcontainer = "schueler" -------------------------------------------------------------------------------- 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 if vorhanden=0 then set klassencont=activedir.create("organizationalunit","ou="&klasse) klassencont.setinfo msgbox("klasse "&klasse&" anlegen") 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" set klassencont=getobject("ldap://ou="&klasse&",ou="&zielcontainer&", 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
Lösungsvorschlag : 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 m Frauen #Mtgliedsnummer Geburtsdatum Beziehung n Lösung : 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.
Lösungsvorschlag : absolut lächerliche Übung 1. Aufgabe 1) HTML-Seite mit Form. Diese Seite wird zu Anfang geladen, erfasst Daten und schickt sie an den Server : <form action = "schicken.php" method = "POST"> <input type= text name="nachname"><br><br> <input type="submit"> </form> 2) HTML-Seite mit PHP. Diese Seite schicken.php wird von der ersten im Server aufgerufen : <?php?> print "Die Eingabe war : $_POST[Nachname] ; 2. Aufgabe 1) HTML-Seite mit Link : <a href = "schreiben.php?var1=hallllloooo!">sag hallo</a> 2) Das ist der angesprungene Link schreiben.php : <?php?> print "ich sage : $_GET[var1] ;
Lösungsvorschlag : immer noch leicht 1. Aufgabe (hier ein Vorschlag ohne neue Syntax) 1) Datenerfassung : <form action = "Namen.php" method = "POST"> <input type= text name="vor" value ="Vorname" ><br><br> <input type= text name="nach" value="nachname ><br><br> <input type="submit"> </form> 2) Datenverarbeitung (server-sided) : <?php $vor = $_POST[vor]; $nach = $_POST[nach]; $found=0; if ($vor=="reiner") $found=1; if ($nach=="doll") $found=1; if ($found==1) print"hallo Meister"; else print"hallo Fremder";?>
2. Aufgabe <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> <?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 Print prima! ;?>
Lösungsvorschlag : Bieraufgabe 1) Datenerfassung : <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> 2) Datenverarbeitung (server-sided) : <?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! ;
Lösungsvorschlag : Sprachauswahl index.html : sprache.php : <form action = sprache.php method = "post"> please choose your language : <select name = "land"> <option value = "seite2.deutsch">deutsch</option> <option value = "seite2.italienisch">italiano</option> <option value = "seite2.englisch">english</option> </select> your e-mail : <input type ="text" name ="em"> <input type ="submit" value = "go"> </form> <?php $land="$_post[land]"; $str="$_post[em]"; $a=substr_count($str,"@"); if ($a == 0) print "<H1>"; print "Eingabefehler!"; print "</H1>"; $hand=fopen("c:/tools/gaeste.txt","r"); $zahl=0; while (!feof($hand)) $eintrag=fgets($hand,1000); $zahl= substr_count($eintrag,$str)+$zahl; fclose($hand); if ($zahl == 0) $hand=fopen("c:/tools/gaeste.txt","a"); fwrite($hand,$str."\r\n"); fclose($hand); else print "<H1>"; print "Mail schon gespeichert!"; print "</H1>"; $hand2=fopen("c:/tools/".$land,"r"); while (!feof($hand2)) $zeile= fgets($hand2); print $zeile;?>
Rest kommt noch