Trash Manager ist soweit fertig



  • Ich habe ein Programm entwickelt mit dem man einen Papierkorb für die Konsole hat. Funktioniert ganz ohne irgendwelche GUIs. So kann man anstatt den Befehl rm zB trm zum löschen benutzen und die Datei könnte bei Bedarf wiederhergestellt werden.

    Hab mir von vielen sagen lassen, dass das Programm unsinnig ist, aber es war halt eine Übung für mich. Und trotzdem würde ich mir wünschen wenn es ein paar Leute tatsächlich benutzen wurden.

    Mehr dazu auf GitHub https://github.com/bennisen/TrashManager



  • Hmm, kannst gleich weiterüben. z.B. prepared statements statt + "'".



  • Mechanics schrieb:

    Hmm, kannst gleich weiterüben. z.B. prepared statements statt + "'".

    ich liebe solche Kommentare 🙂

    Hab eigentlich überall Prepared Statements benutzt, aber wohl an einer Stelle nicht. Wird in Zukunft geändert.

    edit: schon erledigt.

    Vergisst man das an einer Stelle wirste gleich mit Steinen beworfen 😃



  • Du bist wohl ein Bisschen empfindlich?



  • Ach komm, auf dummen Spruch kommt dummer Spruch. Find ich in dem Fall voll in Ordnung 🙂



  • hustbaer schrieb:

    Du bist wohl ein Bisschen empfindlich?

    keines Wegs. Ich rechne immer mit solchen Kommentaren. Ich werde erst überempfindlich wenn es massiv viele solcher Kommentare sind 😉



  • Das war in dem Fall gar nicht böse gemeint. Das Programm interessiert mich nicht, aber ich hab kurz in den Code geschaut und hab mir gedacht, wenn das für dich eine Übung ist, geb ich dir halt mal den Tipp mit den Prepared Statements. Hab keine gesehen, mir ist nur eine Stelle ins Auge gesprungen, wo keine benutzt werden.



  • Mechanics schrieb:

    Das war in dem Fall gar nicht böse gemeint. Das Programm interessiert mich nicht, aber ich hab kurz in den Code geschaut und hab mir gedacht, wenn das für dich eine Übung ist, geb ich dir halt mal den Tipp mit den Prepared Statements. Hab keine gesehen, mir ist nur eine Stelle ins Auge gesprungen, wo keine benutzt werden.

    Dann ist es wohl falsch angekommen. Aber danke für den Hinweis, hatte es ja sofort geändert.



  • Mechanics schrieb:

    prepared statements statt + "'".

    Die braucht man doch nur, wenn der input ein unbekannter String ist (nicht validierter user input zB.) ?!



  • Bennisen schrieb:

    So kann man anstatt den Befehl rm zB trm zum löschen benutzen und die Datei könnte bei Bedarf wiederhergestellt werden.

    Es wäre klüger gewesen, den rm-Befehl zu ersetzen.



  • Andromeda schrieb:

    Bennisen schrieb:

    So kann man anstatt den Befehl rm zB trm zum löschen benutzen und die Datei könnte bei Bedarf wiederhergestellt werden.

    Es wäre klüger gewesen, den rm-Befehl zu ersetzen.

    Ich möchte eigentlich niemanden dazu zwingen einen Papierkorb zu nutzen. Mit dem Trash Manager soll man nur eine Alternative haben eine Datei anders zu behandeln. Zum Beispiel wenn ich eine Datei löschen will, mir aber in den Sinn kommt, vielleicht brauche ich die noch. Dann könnte man Trash Manager einsetzen. Ich glaube das würde auch niemanden machen, also rm ersetzen.



  • Bennisen schrieb:

    Ich möchte eigentlich niemanden dazu zwingen einen Papierkorb zu nutzen. Mit dem Trash Manager soll man nur eine Alternative haben eine Datei anders zu behandeln. Zum Beispiel wenn ich eine Datei löschen will, mir aber in den Sinn kommt, vielleicht brauche ich die noch. Dann könnte man Trash Manager einsetzen. Ich glaube das würde auch niemanden machen, also rm ersetzen.

    Hast Recht. Letztlich wird keiner trm einsetzen und sich hinterher ärgern, weil er es nicht getan hat. 😃

    Eigentlich müssten moderne Betriebssysteme inzwischen eine integrierte Versionsverwaltung haben, die jeden beliebigen Stand einer Datei wieder restaurieren kann. Haben sie leider nicht. Kommt aber bestimmt.



  • Andromeda schrieb:

    Bennisen schrieb:

    Ich möchte eigentlich niemanden dazu zwingen einen Papierkorb zu nutzen. Mit dem Trash Manager soll man nur eine Alternative haben eine Datei anders zu behandeln. Zum Beispiel wenn ich eine Datei löschen will, mir aber in den Sinn kommt, vielleicht brauche ich die noch. Dann könnte man Trash Manager einsetzen. Ich glaube das würde auch niemanden machen, also rm ersetzen.

    Hast Recht. Letztlich wird keiner trm einsetzen und sich hinterher ärgern, weil er es nicht getan hat. 😃

    Eigentlich müssten moderne Betriebssysteme inzwischen eine integrierte Versionsverwaltung haben, die jeden beliebigen Stand einer Datei wieder restaurieren kann. Haben sie leider nicht. Kommt aber bestimmt.

    Ok da muss ich dir zustimmen. Hatte vor ein paar Wochen mal eine Situation wo ich was gelöscht habe und 1 Sekunde danach ging mir durch den Kopf "Oh Shit..."



  • Andromeda schrieb:

    Es wäre klüger gewesen, den rm-Befehl zu ersetzen.

    Wenn trm die gleichen Command-Line-Optionen wie rm unterstützen würde, könnte man einfach ein "alias rm=trm" in sein Profil packen.

    Andromeda schrieb:

    Eigentlich müssten moderne Betriebssysteme inzwischen eine integrierte Versionsverwaltung haben, die jeden beliebigen Stand einer Datei wieder restaurieren kann. Haben sie leider nicht. Kommt aber bestimmt.

    Hatte OpenVMS doch in den 80ern (70ern?) schon. Gibt auch einige moderne Implementierungen für sowas:
    https://en.wikipedia.org/wiki/Versioning_file_system



  • Nur ganz kurz in die Sourcen reingeschaut. Das hier ist eine sehr schlechte Idee:

    if (user == "root")
            strPath = "/root/.trashdb/";
        else
            strPath = "/home/" + (std::string)user + "/.trashdb/";
    

    Ich habe einige Maschinen, bei denen die User-Verzeichnisse nicht in /home/$USER liegen. Verwende besser man: getpwnam und das pw_dir -Feld.



  • Btw, ich habe vor Tausend Jahren mal hiermit herumgespielt, das löst ein ähnliches Problem auf recht kreative Art:
    http://pages.stern.nyu.edu/~marriaga/software/libtrash/



  • Vielen Dank. Hab das gleich mal geändert. Freut mich sehr, wenn welche in meinen Code reinstöbern und ein paar Tipps haben.



  • Fein, freut mich. 👍

    Ich habe ehrlich gesagt gerade keine Zeit, mir das Projekt genauer anzusehen, aber das hier sieht auch ein bisschen ungewöhnlich aus:

    System *sys = new System();
    

    Normalerweise würde man da einfach System sys; schreiben. (Gründe lassen sich ergoogeln. Sieht nach einem Javaismus aus.)



  • nman schrieb:

    Fein, freut mich. 👍

    Ich habe ehrlich gesagt gerade keine Zeit, mir das Projekt genauer anzusehen, aber das hier sieht auch ein bisschen ungewöhnlich aus:

    System *sys = new System();
    

    Normalerweise würde man da einfach System sys; schreiben. (Gründe lassen sich ergoogeln. Sieht nach einem Javaismus aus.)

    direkt nach dieser Zeile übergebe ich sys an die Klasse Params, da ich keine Kopie wollte habe ich einen Pointer verwendet.


  • Mod

    Bennisen schrieb:

    direkt nach dieser Zeile übergebe ich sys an die Klasse Params, da ich keine Kopie wollte habe ich einen Pointer verwendet.

    Das ist absolut kein Grund.


Anmelden zum Antworten