Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/ckdu: Unterschied zwischen den Versionen

(3. Stufe: Stufe 3 Output anpassen)
(Alles besser :-))
Zeile 37: Zeile 37:
 
<u>''so koennte das dann aussehen:''</u>
 
<u>''so koennte das dann aussehen:''</u>
 
<pre>
 
<pre>
 +
  0.0M HelloWorld.snm
 +
30.0M HelloWorld.pdf
 +
36.0K HelloWorld.tex
 
153.0M img/
 
153.0M img/
 
  12.0M  uebung.png
 
  12.0M  uebung.png
Zeile 42: Zeile 45:
 
  86.0M  world2.png
 
  86.0M  world2.png
 
   3.0M  world.png
 
   3.0M  world.png
30.0M HelloWorld.pdf
 
  0.0M HelloWorld.snm
 
36.0K HelloWorld.tex
 
 
</pre>
 
</pre>
  
Zeile 55: Zeile 55:
 
<u>''so koennte das dann aussehen:''</u>
 
<u>''so koennte das dann aussehen:''</u>
 
<pre>
 
<pre>
153M img/
+
153.0M img/
  86,1M img/world2.png
+
12.0M  uebung.png
  24,9M img/vortrag.png
+
24.0M  vortrag.png
  12,9M img/uebung.png
+
86.0M  world2.png
    3,9M img/world.png
+
  3.0M  world.png
  30M HelloWorld.pdf
+
  30.0M HelloWorld.pdf
  36K HelloWorld.tex
+
  36.0K HelloWorld.tex
  0 HelloWorld.snm
+
  0.0M HelloWorld.snm
 
</pre>
 
</pre>
  
Zeile 70: Zeile 70:
 
== 5. Stufe ==
 
== 5. Stufe ==
 
In dieser Stufe folgen alle wichtigen Sachen, die man noch beachten '''muss''', wenn man auf dem Dateisystem operiert.
 
In dieser Stufe folgen alle wichtigen Sachen, die man noch beachten '''muss''', wenn man auf dem Dateisystem operiert.
Ausserdem bieten wir einige Ideen mit denen du dein ckdu erweiteren kannst :)
+
Außerdem bieten wir einige Ideen mit denen du dein ckdu erweiteren kannst :)
 
 
 
 
* Symlinks nur einmal Folgen (parameter)
 
* Hardlinks nur einmal Folgen
 
 
 
* Fehler-handling
 
  
  
 +
* Symlinks nur einmal folgen (Parameter)
 +
* Hardlinks nur einmal folgen
 +
* Oredntliches Fehler-handling
 
* du-parameter-kompatible:
 
* du-parameter-kompatible:
 
** "--max-depth"
 
** "--max-depth"
** getopt
+
** basierend auf getopt
** device verlassen
+
** Device verlassen verbieten
 
 
 
 
 
* Wird nicht von den Betreuern betreut:
 
* Wird nicht von den Betreuern betreut:
** Farbige ausgabe
+
** Farbige Ausgabe
** interaktive
+
** Interaktivität
 +
** Einlesen mit mehreren Threads?
  
 
=== Vorgabe ===
 
=== Vorgabe ===
 
* ''Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 4.''
 
* ''Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 4.''

Version vom 17. September 2010, 15:03 Uhr

Diese Aufgabe ist eine besondere Aufgabe. Sie wird/wurde in der 7. Vorlesung live fast komplett implementiert. Da dies sehr viel ist und damit wichtige Fragen dort geklaert werden koennen, probiert diese Aufgabe zu Hause übers Wochenende doch schon mal selbst zu implementieren.

Aufbau dieser Seite

Es gibt mehrere Stufen. Das heißt wir haben diese große Aufgabe schon für euch in kleine Happen geteilt. Wenn ihr also wirklich nicht weiterkommt, könnt ihr euch in der Vorgabe (base1.c bis base 3.c) der nächst höheren Stufe angucken wie wir es gelöst haben. Aber bedenke: Jede Stufe wird ein bisschen anspruchsvoller!

Funktion

ckdu soll wie das Tool du auch, eine Auflistung aller Dateien/Ordner und deren Größe. Zusätzlich soll ckdu diese Liste auch sortieren und menschlich Lesbar gestalten (in KB, MB, GB).

Stufen

1. Stufe

Ordnerinhalt einlesen und ausgeben. Ähnliche wie: ls -1s

so koennte das dann aussehen:

    4 img
29832 HelloWorld.pdf
    0 HelloWorld.snm
   36 HelloWorld.tex

Vorgabe

2. Stufe

Refactoring ! Eingelesene Inhalte in einer Liste speichern. Diese Liste wieder Ausgaben.

Vorgabe

3. Stufe

Ordnerinhalte rekursiv aufaddieren

so koennte das dann aussehen:

  0.0M HelloWorld.snm
 30.0M HelloWorld.pdf
 36.0K HelloWorld.tex
153.0M img/
 12.0M   uebung.png
 24.0M   vortrag.png
 86.0M   world2.png
  3.0M   world.png

Vorgabe

4. Stufe

sortieren nach Groesse (absteigend)

so koennte das dann aussehen:

153.0M img/
 12.0M   uebung.png
 24.0M   vortrag.png
 86.0M   world2.png
  3.0M   world.png
 30.0M HelloWorld.pdf
 36.0K HelloWorld.tex
  0.0M HelloWorld.snm

Vorgabe

  • Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 3.

5. Stufe

In dieser Stufe folgen alle wichtigen Sachen, die man noch beachten muss, wenn man auf dem Dateisystem operiert. Außerdem bieten wir einige Ideen mit denen du dein ckdu erweiteren kannst :)


  • Symlinks nur einmal folgen (Parameter)
  • Hardlinks nur einmal folgen
  • Oredntliches Fehler-handling
  • du-parameter-kompatible:
    • "--max-depth"
    • basierend auf getopt
    • Device verlassen verbieten
  • Wird nicht von den Betreuern betreut:
    • Farbige Ausgabe
    • Interaktivität
    • Einlesen mit mehreren Threads?

Vorgabe

  • Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 4.