Projektidee (2-3 Tage Aufwand) gesucht



  • Hallöle,

    Die Weihnachtsferien kommen näher und PI möchte in den Ferien irgendwas programmieren, leider hat er aber keine Ideen. Das Projekt sollte innerhalb von 2-3 Tagen umsetzbar sein, da PI spätestens dann die Motivation verliert. Es soll irgendwas mit Netzwerkprogrammierung und ohne GUI sein. Hat jemand Vorschläge?

    Grüße,
    PI



  • Ein FTP-Uploader für Homepages.
    Gesteuert durch die Datei ftpupper.ini im aktuellen Verzeichnis.

    host: ftp.example.com //Die Adresse des Servers
    dir: html //Unterverzeichnis, so alles rein soll, kann weggelassen werden
    login: volkard
    password: 1234
    threads: 5 //Anzahl der parallelen Verbindungen, kann weggelassen werden
    

    Das war alles.
    Im Verzeichnis, wo die ini liegt, gibt es zwei Unterverzeichnisse:
    out //Hier liegt die Homepage, kann zum Beispiel Ziel von Frontpage sein
    //oder vorher durch meine Batch mit robocopy gefüllt werden oder
    //Hardlink sein
    mirror //Hier liegt eine Kopie dessen, was auf dem Server ist

    Der Server wird nicht ausgelesen. Zum Start macht man mal mirror leer und den Server leer. Ab dann uploadet man nur noch mit dem Programm.
    Es vergleicht mirror und out und alles, was gemacht werden muß, um mirror anzupassen, wird gleichzeitig auf dem Server und gleich drauf im mirror-Verzeichnis gemacht.
    Das heißt, Dateien hochschicken, gegebenenfalls vorher nötige Verzeichnisse machen, gegebenenfalls vorher Dateien löschen, die so hießen wie ein zu erstellendes Verzeichnis. Das ist ein wenig tricky.

    Problem: Normale Uploader sind schwer in scripts einzubinden, man muß immer rumklicken und das nervt.
    Problem: Normale Uploader machen nur eine Verbindung, parallel hat man aber locker doppelten Speed. Wenn nicht mehr. Weil ftp immer eine Datei auf dem Steuerkanal beschreibt. Dann auf dem Datenkanal eine Verbindung aufmacht mit vielen Hin-Und-Herpaketen. Und wieder zumacht. In der ganzen Zeit langweit sich das Netzwerkkabel.

    Für optimal frühes Fertigsein, nach Möglichkeit die größen Dateien zuerst uploaden. Damit später die Kleinen kommen und die Threads sich so arrangieren können, daß sie ungefähr gleichzeitig fertig sind.

    Durch Multithreading und dadurch, daß man nicht Planen kann, wer wie lange brauchen wird, also ab wann zum Beispiel ein Verzeichnis erstellt ist, sodaß dort Dateien oder weitere Verzeichnisse gemacht werden können, muß wohl irgendwie ein Netzwerk der Aufgaben mit Vorbedingungen im Ram erzeugt werden, das dann abgearbeitet wird.

    Kann aber 14 Tage dauern statt 2-3. :xmas1:



  • Täusche ich mich, oder stand da vorhin "für meine Homepage"? 😉



  • Ein kleiner Chat mit einem Masterserver.
    Der Masterserver soll eine kleine Datenbank enthalten mit den Usern die Online sind.
    Die kleine Datenbank sollte so aussehen:

    Username=IP
    Username2=IP2
    

    Das sollte recht einfach zu parsen sein.

    Der Client soll alle User anzeigen können.
    Über eine eingabe "chat username" kann man mit einem User chatten können dann.

    PS: Du kannst den Chat so realisieren wie du möchtest das sind nur ein paar Vorschläge wie man es machen könnte.



  • @volkard: Das mit den Verzeichnissen und den Absatz danach habe ich leider nicht verstanden. Könntest du mir das nochmal erklären?



  • Als ich "FTP" gelesen hab, hab ich erstmal geprüft, ob dieser Thread wirklich von 2011 ist. 😉

    Im Ernst, ich hatte nicht erwartet, dass es immer noch Webseiten gibt, die per FTP hochgeladen werden. Ich dachte, dieses Protokoll wäre endlich mal verschwunden.

    Ich nehm zum Hochladen von Webseiten am liebsten rsync oder git. Viel effizienter dürfte kaum möglich sein, außer die Verbindung wird gedrosselt, sodass mehrere parallele Verbindungen schneller sind. Aber bei rsync und git ist normalerweise der upstream konstant zu 100% ausgelastet.

    Aber hier geht es ja um Hobby-Projekte, da wär ein multi-threaded FTP-Upload-Tool bestimmt ganz lehrreich. Und wenn es nur zeigt, wie man ein Protokoll nicht entwerfen sollte.



  • Christoph schrieb:

    Im Ernst, ich hatte nicht erwartet, dass es immer noch Webseiten gibt, die per FTP hochgeladen werden. Ich dachte, dieses Protokoll wäre endlich mal verschwunden.

    Ich sehe hier Websites, die auf einem Windows Server 2000 gehosted sind. Und dort ist FTP das einzige, was vernünftig funktioniert. Da kannst du noch lange warten, bis dieses Protokol verschwindet 😉



  • Christoph schrieb:

    Als ich "FTP" gelesen hab, hab ich erstmal geprüft, ob dieser Thread wirklich von 2011 ist. 😉

    Realitätscheck: www.1und1.de



  • Christoph schrieb:

    Im Ernst, ich hatte nicht erwartet, dass es immer noch Webseiten gibt, die per FTP hochgeladen werden.

    Ist es irgendwie schick, wenn man sich absichtlich realitaetsfern gibt? 😕



  • 314159265358979 schrieb:

    @volkard: Das mit den Verzeichnissen und den Absatz danach habe ich leider nicht verstanden. Könntest du mir das nochmal erklären?

    Du hast auf dem Server
    foo/
    bar
    foo/datei1
    foo/datei2

    Du hast lokal
    foo
    bar/
    bar/datei1

    Also um bar/ anzulegen muß erst bar weg. Dann kann man bar/datei hochladen.
    Also Reigenfolge "del bar" "mkdir bar" "put bar/datei1"
    Und um foo hochzuladen muß erst foo/ weg und dazu müssen erst foo/datei1 und foo/datei2 weg.
    Wobei aber egal ist, ob zuerst foo/datei1 oder foo/datei2 gelöscht wird. Nur muß klar sein, daß wenn ein Thread sich den Auftrag "del foo/datei1" holt, ihn sich kein anderer mehr holt. Also am besten irgendwie die Aufträge in einen gemeinsamen Container stecken, wo sich jeder was abholen kann.

    Nochmal.

    Du hast auf dem Server
    foo/
    foo/datei1
    foo/datei2
    bar

    Du hast lokal
    foo
    bar/
    bar/datei1

    "put foo" wartet auf "rmdir foo"
    "mkdir bar" wartet auf "del bar"
    "rmdir foo" wartet auf "del foo/datei1"
    "rmdir foo" wartet auf "del foo/datei2"
    "put bar/datei1" wartet auf "mkdir bar"

    Also bei Programmstart können die Jobs "del foo/datei1" und "del foo/datei2" und "del bar" sofort starten. Je nachdem, wer dann zuerst fertig ist, kann's mit weiteren Jobs weitergehen.

    Bei parallelen Jobs sollte der die höchste Priorität haben, der am meisten Folgeaktionen freischaltet, damit möglichst alle 5 Threads immer was zu tun haben werden.
    Bei parallelen put-Jobs sollte die größte Datei die höchste Priorität haben, damit nicht am Ende vier fertig sind und der fünfte noch an einer 100MB-Datei ackert.



  • this->that schrieb:

    Christoph schrieb:

    Im Ernst, ich hatte nicht erwartet, dass es immer noch Webseiten gibt, die per FTP hochgeladen werden.

    Ist es irgendwie schick, wenn man sich absichtlich realitaetsfern gibt? 😕

    Manche Leute finden das lustig.

    Wobei du es gerade selbst gemacht hast. Die Antwort war dir ja wohl selbst klar...



  • Zur Kontrolle, ob ich das richtig verstanden habe: Der User legt seine Dateien im out-Verzeichnis an. Das Programm vergleicht das out Verzeichnis mit dem mirror Verzeichnis und lädt die fehlenden Dateien hoch/löscht die nicht mehr vorhandenen Dateien und synchronisiert mirror/ mit dem Server?



  • zur kontrolle, ob ich das richtig verstanden habe: du erledigst auftragsarbeit fuer umsonst? ich wuerde mich gerne fuer deine naechsten ferien voranmelden. :xmas1:



  • 314159265358979 schrieb:

    Zur Kontrolle, ob ich das richtig verstanden habe: Der User legt seine Dateien im out-Verzeichnis an. Das Programm vergleicht das out Verzeichnis mit dem mirror Verzeichnis und lädt die fehlenden Dateien hoch/löscht die nicht mehr vorhandenen Dateien und synchronisiert mirror/ mit dem Server?

    Vielleicht.
    Der User legt seine Dateien im out-Verzeichnis an.
    Das Programm vergleicht out/ mit mirror/ und tut alles, was nötig ist, um mirror/ so aussehen zu lassen, wie out/, also Dateien von out/ nach mirror/ kopieren, Verzeichnisse anlegen, Verzeichnisse löschen, Dateien löschen.

    Allerdings wird immer, wenn ein Schritt in /mirror gemacht wird, der selbe Schritt auch auf dem Server gemacht.

    Der Stand auf dem Server wird niemals ausgelesen.



  • Noch irgendwelche anderen Ideen? So wirklich motivieren kann ich mich für volkards Auftrag nicht...



  • Programmier doch ein kleinen P2P Client der nur strings austauscht 😃



  • CCodex schrieb:

    Programmier doch ein kleinen P2P Client der nur strings austauscht 😃

    Das geht eigentlich sehr schnell aber dazu vielleicht noch eine Verschlüsselung reinbringen.



  • Ein einfacher Torrent-Client.



  • Torrents verwende ich nicht, Verschlüsselung interessiert mich nicht. 😃



  • Findest du 2-3 Tage nicht etwas sehr knapp bemessen?


Anmelden zum Antworten