Zum Inhalt springen

hetticom

Mitglieder
  • Gesamte Inhalte

    30
  • Benutzer seit

  • Letzter Besuch

Beiträge von hetticom

  1. ich besuche das HHBK aktuell noch und kann sagen, dass es doch sehr gemischt ist. Manche Lehrer sind echt doof wie die Nacht und bekommen nix auf die Reihe. Aber manche Lehrer sind gut im Stoff drin, bilden sich weiter, haben auch hohe Ansprüche an die Schüler (leider auch in Klausuren). Es gibt also schon eine große Diskrepanz beim Niveau der Lehrer.

    Zum Umfeld: Ja, es gibt viele Assis an der Schule, aber man muss sich in den Pausen ja nicht zu denen stellen ;-) Und es sind ja auch nur 3 Wochen, insgesamt kann man das schon verkraften. Seht es mal so: Das ist bezahlter Urlaub :D

  2. Hi,

    das ist keine ausreichende Fehlerbeschreibung.

    ciao,

    vic

    Ja da hast du leider Recht ... :upps

    Hab schon einige Varianten versucht, aber entweder läuft das Skript komplett durch und das "erfolgreich" oder es gibt mir jeden anderen Return-Code raus (meist die 1), nur nicht die "6", die es in dem Fall ausgeben müsste.

    Das Problem liegt im elsif-else-Zweig. Da steht zwar ein "exit(6)", wenn das Zippen der Datei nicht funktioniert. Aber der Return-Code wird scheinbar danach noch verändert (von wem weiß ich nicht), sodass am Ende des Skriptes eine "1" ausgegeben wird.

    Das is aber auch kompliziert mit diesem fork und den child- und parent-Prozessen. Ich steig da nicht so ganz durch :(

  3. hey,

    das mit dem shiften klappt. Aber ich hab folgendes Problem: Return-Codes!

    Wenn das Zippen in einem Child-Prozess nicht klappt, soll dieser einen bestimmten Return-Code zurückgeben, damit das ganze Programm mit diesem abgebrochen wird. Aber irgendwie haut das noch nicht so hin wie es soll.

    
    $prozesse = $options{'n'};
    
    @dateien = glob("$options{'p'}/*$options{'f'}*");
    
    
    if (scalar @dateien < 1) {
    
    	&print_message ('30001', "Keine Dateien gefunden");
    
    	$rc = 10;
    
    	exit $rc;
    
    }
    
    
    # Bestimmung der aeusseren Schleifendurchlaeufe
    
    if (scalar @dateien > $prozesse) {
    
    	$aussen = int(scalar @dateien / $prozesse);
    
    	$aussen++;
    
    }
    
    else {
    
    	$prozesse = scalar @dateien;
    
    }
    
    
    
    # Aeussere Schleife. Durchlaeufe: (Anzahl Dateien / Prozessanzahl) + 1
    
    for ($i=1; $i <= $aussen; $i++) {
    
    	if (scalar @dateien < $prozesse) {
    
    		$prozesse = scalar @dateien;
    
    	}
    
    
    	# Innere Schleife. Durchlaeufe: Anzahl Prozesse
    
    	for (1..$prozesse) {
    
    		my $pid = fork();
    
    		if ($pid != 0) {
    
    		# parent-Prozess
    
    			push (@children, $pid);
    
    		}
    
    		elsif ($pid == 0) {
    
    			# child-Prozess
    
    			$rc = &zipfile;
    
    			if ($rc == 1) {
    
    				exit(0);
    
    			}
    
    			else {
    
    				$rc = 6;
    
    				exit(6);	
    
    			}
    
    
    		} 
    
    		else { die "couldn't fork: $!\n";  }
    
    	$index++;
    
    	}
    
    
    
    foreach (@children) {
    
    	waitpid($_, 0);
    
    	if ($? != 0){
    
    		exit(6);
    
    	}
    
    }
    
    splice (@dateien,0,$prozesse);
    
    $index = 0;
    
    }
    
    
    print "rc: $rc \n";
    
    
    ##########################################################################
    
    sub zipfile {								 #
    
    ##########################################################################
    
    	&timestamp;
    
    	print "Zippe $dateien[$index]\n";
    
    	$rc = system("gzip -N $dateien[$index]");
    
    
    	if ($rc != 0) {
    
    		&print_message ('30001', "$dateien[$index] konnte nicht gezippt werden \n");
    
    		return(6);
    
    
    	}
    
    	else {
    
    		&timestamp;
    
    		print "Zippen von Datei $dateien[$index] erfolgreich beendet \n";		
    
    		return(0);
    
    	}
    
    }
    
    
    ##########################################################################
    
    sub timestamp {								 #
    
    ##########################################################################
    
    	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    
    	printf "%02d.%02d.%4d %02d:%02d:%02d\t", $mday,$mon+1,$year+1900,$hour,$min,$sec;
    
    }
    
    

  4. Hi!

    Ich bräuchte mal eure Hilfe, häng da n bisschen fest (hab auch noch nicht so die tiefen perl-Kenntnisse).

    Folgendes Problem: Ich habe ein Skript gebastelt, mit dem ich 5 Dateien parallel mit gzip komprimieren kann. Soweit, so gut. Nun hab ich aber das Problem, dass die Dateien nicht aus dem Array geschoben werden. D.h. wenn 8 Dateien im Array liegen, werden die ersten 5 gezippt, danach müssten dann die restlichen 3 parallel laufen, das Skript versucht aber wieder 5 zu zippen. Das liegt daran, dass meine Subroutine nach dem Zippen die Dateien nicht aus dem Array wirft. Habt ihr dafür ne Lösung? Hier mal die Code-Schnipsel:

    
    # Bestimmung der aeusseren Schleifendurchlaeufe
    
    if (scalar @dateien > $prozesse) {
    
    	$aussen = int(scalar @dateien / $prozesse);
    
    	$aussen++;
    
    }
    
    else {
    
    	$prozesse = scalar @dateien;
    
    }
    
    
    
    # Aeussere Schleife. Durchlaeufe: (Anzahl Dateien / Prozessanzahl) + 1
    
    for ($i=1; $i <= $aussen; $i++) {
    
    print "anz: scalar @dateien \t array: @dateien \n";
    
    
    	if (scalar @dateien < $prozesse) {
    
    		$prozesse = scalar @dateien;
    
    	}
    
    print "prozesse: $prozesse \n";
    
    	# Innere Schleife. Durchlaeufe: Anzahl Prozesse
    
    	for (1..$prozesse) {
    
    		my $pid = fork();
    
    		if ($pid) {
    
    		# parent-Prozess
    
    			push (@children, $pid);
    
    		}
    
    		elsif ($pid == 0) {
    
    			# child-Prozess
    
    			&zipfile;
    
    			exit(0);
    
    		} 
    
    		else { die "couldn't fork: $!\n";  }
    
    	$index++;
    
    	}
    
    
    
    foreach (@children) {
    
    	waitpid($_, 0);
    
    }
    
    }	
    
    
    sub zipfile {
    
    	&timestamp;
    
    	print "Zippe $dateien[$index]\n";
    
    	$rc = system("gzip -N $dateien[$index]");
    
    
    	if ($rc != 0) {
    
    		&timestamp;
    
    		&print_message ('30001', "$dateien[$index] konnte nicht gezippt werden");
    
    
    	}
    
    	else {
    
    		&timestamp;
    
    		print "Zippen von Datei $dateien[$index] erfolgreich beendet \n";
    
    		shift (@dateien);		
    
    	}
    
    }
    
    
    sub timestamp {	
    
    	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    
    	printf "%02d.%02d.%4d %02d:%02d:%02d\t", $mday,$mon+1,$year+1900,$hour,$min,$sec;
    
    }		
    
    
    
    $rc = 0;
    
    
    

    Weder das Shiften in der Main-Funktion noch in der Zipfile-Funktion führen zum Erfolg. Es ist sogar egal, ob ich der Zipfile-Funktion das Array übergebe oder nicht. Ergebnis ist immer das gleiche.

    Danke!

    Christian

  5. aber es muss doch möglich sein, dass dem Threadersteller eine gewisse Umgebung zur Verfügung gestellt wird, in der er testen und "spielen" kann. Bei mir in der Firma gibt es z.B. eine Testumgebung, auf die die Produktionsumgebung abgebildet wird. Ansonsten muss es doch möglich sein, ein bisschen Equipment aufzutreiben, um sich ein kleines Testnetz aufzubauen. So ein Testlabor hat doch eigentlich jede größere Firma (bzw Stadtverwaltung :)), oder?

  6. mir gehts ähnlich. Ich bin nächsten Mai fertig und weiß auch noch nicht, was ich machen soll. Zum einen bietet sich ein Bachelor in Informatik an (HS Karlsruhe), zum anderen wäre ein Job als Admin in einem kleineren Betrieb interessant (wobei der Medizinbereich auch für mich sehr interessant ist ;-)).

    Vielleicht wäre ein Job als Consultant oder Trainer das richtige. Bei Jobbörsen gibt es doch auch Angebote, dass man dich zum Consultant "ausbildet" (-> Trainee Vertrieb: Wir bilden Dich zum Consultant aus !

    Vielleicht ist das das richtige für dich. Einen Job als Trainer könnte ich mir z.B. auch gut vorstellen, ist aber leider nicht immer eine einfache Aufgabe :)

  7. ok, stat bringt mich schon mal n Stück weiter. Damit kann ich recht einfach die Rechte prüfen. Danke schon mal dafür! :)

    Problem weiterhin: Der Owner. stat zeigt mit die User-ID an, ich möchte/soll aber nach dem Namen prüfen. Und ich finde es ziemlich umständlich, den Namen in der Config-Datei unter Unix mit "id <Username>" in die uid umzuwandeln und dann zu vergleichen. Habt ihr da ne einfachere Lösung?

  8. Hallo zusammen,

    hab den Auftrag bekommen, ein Perl-Skript zu schreiben, das mithilfe einer Config-Datei prüft, ob die Rechte richtig gesetzt sind und der Owner übereinstimmt.

    Bsp: Config-Datei:

    /PfadzurDatei/Dateiname.txt;Benutzername;755

    Bin jetzt soweit, dass ich unter Unix mithilfe von

    ls -la $dateiname | awk '{print $3}'

    den Owner ausgegeben bekomme. Kenne keine Perl-Bordmittel, mit denen ich das realisieren könnte. Jetzt bekomm ichs aber nicht hin, das in ner Variable in Perl zu speichern. ein simples ">" bringt mich leider nicht weiter.

    Die gleiche Methode wollte ich auch für die Rechte nutzen, um dann jeweils nach "r, w, x" zu prüfen und entsprechend aufzuaddieren (4, 2, 1). Häng aber absolut fest.

    Habt ihr ne Idee?

    Danke schon mal!

    Chris

  9. andererseits sind noch 2 Monitorkabel von den kaputten Beamer (gleichen Typs/Hersteller) übrig, wozu also noch ein Kabel kaufen....?

    so denk ich mir das.

    Aber egal, abwarten....

    full ack

    seh ich absolut genauso! wegen diesen besch ... euerten 770 euro statt 760 (das ergebnis hab ich) komm ich statt auf ne 1 (92%) nur auf ne 2 (90,2%)! das is doch algengrütze! :upps

  10. die gleichen Lösungen haben wir heute auch von unserem Ausbilder bekommen. Das sind die vorläufigen Lösungen der IHK. Bin aber dafür, dass die Aufgabe 1.9 gestrichen wird, denn ich hab da 760 Euro und meine, dass das auch richtig ist! Wo kann man denn Beschwerde einreichen? :D Dann käme ich noch auf ne 1 (> 91%)

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...