Protocol Design – FAQ
Letzte Änderung an dieser Seite / Last change Tuesday, 20-Nov-2007 16:07:52 CET
ErläuterungWir bemühen uns, in dieser FAQ folgende Kennzeichnung zu verwenden (nur in graphischen Browsern sichtbar):
|
Description |
||||||||||||||||||||||||||||||
FragenAllgemeines
Erstes Blatt
Fünftes Blatt |
Questions |
||||||||||||||||||||||||||||||
AntwortenIch will lieber an einem anderen Rechner arbeiten. Wie greife ich auf die Rechner im Praktikumsraum zu?Einfach mit ssh auf irgendeinen der Rechner im Praktikumsraum einloggen. Die Rechner heißen: python, cottonmouth, copperhead, cobra, boa, viper, adder, mudsnake, kingsnake, catsnake, treesnake, seasnake, keelback, die Domain ist net.t-labs.tu-berlin.de Ein Beispiel für einen vollständigen Hostnamen lautet also treesnake.net.t-labs.tu-berlin.de
Welche Anforderungen werden an die Lösungen gestellt?Die Lösungen müssen …
Wie gebe ich meine praktischen Aufgaben ab?Ihr kopiert eure Lösung auf einen Rechner im Praktikumsraum (per ssh oder scp), packt es in ein tar-Archiv und kopiert es in das Abgabeverzeichnis. Details (wie muss das tar-Archiv bennant werden, wo ist das Abgabeverzeichnis, etc.) gib es in den nächsten Tagen!
BeispielAngenommen, mein eigenes Login lautete meinLogin und das meines Teampartners partnerLogin. Das Datum sei der 25. Oktober (25.10.) und die Uhrzeit sei 15:00h (und 27 Sekunden). Dann gebe ich meine Lösung für die 1. Übung folgendermaßen ab: |
Answers |
||||||||||||||||||||||||||||||
|
meinLogin@viper> mkdir meinLogin_partnerLogin meinLogin@viper> cp loesungsfile1 loesungsfile2 loesungsfile3 meinLogin_partnerLogin/ meinLogin@viper> date +%m%d%H%M%S 1025150027 meinLogin@viper> tar -czf meinLogin_partnerLogin_1025150027.tar.gz meinLogin_partnerLogin/ meinLogin@viper> cp meinLogin_partnerLogin_1025150027.tgz ~inetprak/abgabe/1.uebung/ meinLogin@viper> chmod g+r /home/inetprak/abgabe/1.uebung/meinLogin_partnerLogin_1025150027.tgz meinLogin@viper> |
|||||||||||||||||||||||||||||||
HinweisSchon abgegebene Lösungen können bis zur Abgabedeadline upgedatet werden (d. h., man kann z. B. sicherheitshalber z. B. ein paar Tage vor der Deadline schonmal eine halbfertige Lösung abgeben, ohne Nachteile zu erwarten.) Dazu gibt man einfach nochmal eine komplette Lösung wie oben beschrieben mit aktuellem Datum ab.
Infos zum Thema Zweiergruppen
Wie generiere ich ein tar-File eines Verzeichnisses inklusive aller darin enthaltenen Dateien, Unterverzeichnisse etc.?Angenommen, das Verzeichnis heiße dir. Dann:
Anmerkung falls die Übungen an einem
anderen Rechner (z.B. zuhause) erstellt wurden:
Was ist ein File der Form name.gz?Es ist ein mit dem Befehl
oder
In Perl kannst Du es recht trickreich auslesen mit open(DATEIHANDLE, "zcat dateiname|") sodass das File also beim Auslesen gleich automatisch dekomprimiert wird.
Und wie verarbeite ich dann so ein File, das auf der Standardausgabe ausgegeben wird?Du brauchst nicht immer ein Programm zu schreiben; Du kannst manchmal wichtige Informationen durch eine einzige Zeile in der Shell herausbekommen. Benutze hierzu die sogenannten Du kannst diese Pipes sogar schachteln, was sie sehr, sehr mächtig macht. Ein Beispiel: zcat name.gz | grep "http" | sort -n -r | uniq | head >ausgabe.txt
Wohlgemerkt: Das ist eine einzige Zeile, die man in die Shell eintippt. Diese recht komplexe Aufgabe wurde also komplett ohne irgendein Programm oder Skript gelöst.
Wie verarbeite ich eines dieser Datenfiles mit Perl?Das folgende kombinierte Shell-/Perlskript gibt aus, wie oft welcher HTTP-Returncode im Logfile logfile.gz vorkommt:
zcat logfile.gz | perl -e 'while(<>){s/\s+/ /g;@l=split;@f=split("/",$l[3]);$p{$f[1]}++;}foreach $i (sort keys %p) {print "$i:$p{$i}\n";}'
Natürlich ist dieser Einzeiler schrecklich unübersichtlich und somit quasi unlesbar. Daher nochmal in kommentierter Form:
Und wie Du siehst, kann man Perl also auch "on-the-fly" benutzen, also ohne eine extra Skriptdatei anzulegen. Das ist natürlich recht unübersichtlich, also muss man solche "Einzeiler" dann gut dokumentieren. Mehr Infos, wie man Perl trickreich aufrufen kann und sich dadurch eine Menge Schreibarbeit sparen kann, findest Du übrigens auf der Manpage man perlrun.
Wie kontaktiere ich die Referenz-Implementierung des P2P-Knotens für dieses Aufgabenblatt?Die Referenz-Implementierung des P2P-Knotens, mit aktueller Protokoll-Version und Featureset, kann kontaktiert werden unter viper.net.t-labs.tu-berlin.de:12000. Dies funktioniert ausschliesslich auf den Rechnern im Praktikumsraum! |
|||||||||||||||||||||||||||||||
