Coole Programmierprojekte



  • Servus,

    habe momentan totale Langeweile und bin auf der Suche nach interessanten/anspruchsvollen Programmierprojekten, kann auch ruhig was größeres sein wofür man ein paar Wochen/Monate dransitzt.
    Bin aber total einfallslos und wollte fragen ob hier jemand eine Idee hat.

    Am besten in C++. Generell interessieren mich Netzwerke, bin da aber offen, allerdings eher nix mit GUI.

    Ciao 🙂



  • Schreib nen Minecraft-Server, gibts im Moment keinen brauchbaren. Und wo du schon mal dabei bist, auch gleich nen neuen Client. Ach, machs einfach komplett neu. :p



  • Wenn du wirklich was sinnvolles machen möchtest, dann schreib mal ne kleine Anwendung die aus einer Firebird Datenbank eine OOP Abbildung in C++ erstellt. Jede Tabelle ist eine Klasse die wiederum in einer Oberklasse "Datenbank" liegt bla bla bla.. Quasi Entity Framework für C++



  • Ich spiele kein Minecraft, wieso gibts da keinen brauchbaren Server? Was sollte ein neuer besser machen? 😃

    Der Vorschlag von lw klingt auch interessant, vl setz ich mich da mal dran.

    Danke, weitere Vorschläge willkommen 😛



  • Eine patentfreie, portierbare Standard-C++ Implementierung von Remote-Differential-Compression wäre nett:
    http://research.microsoft.com/pubs/64692/tr-2006-157.pdf
    https://www.google.com.tr/patents/US8112496

    Zur Erklärung kurz: RDC ist im Prinzip wie rsync, nur einfach viel viel besser. 😉
    Vorteile gegenüber rsync:
    * Braucht viel weniger Resourcen bei richtig grossen Files (zig GB).
    * Es verbrät die Resourcen (vor allem CPU Zeit) auf der "Downloader" Seite - die "Server" Seite hat fast nichts zu tun.
    * Es werden sehr wenig Daten in der "verkehrten" Richtung (=Upload für den "Downloader") übertragen.
    * Am Server muss kein spezieller Code laufen. Wenn der Client kleine Stücke aus den am Server liegenden Files anfordern kann, ist das ausreichend um RDC zu verwenden.
    (Wobei der Server idealerweise ein "Batch-Read" Kommando haben sollte, mit dem der Client mehrere kleine Stücke gleichzeitig anfordern kann.)
    => Optimal für z.B. "Loader" von Online Spielen. Bzw. allgemein zum Datenabgleich von einem zentralen Anbieter zu vielen "Usern".

    Und der grösste Nachteil von RDC gegenüber rsync ist: es gibt momentan nur die Implementierung vom Microsoft, die mit Windows mit ausgeliefert wird, und natürlich auch nicht Open Source ist.

    Ein paar Dinge wird man vermutlich ändern müssen, eben um die bestehenden Patente zu umgehen, aber grundsätzlich denke ich mir müsste das möglich sein.

    Hat aber nicht wirklich viel mit Netzwerk zu tun - der Netzwerk-Code ist dabei recht wenig und auch recht wenig spannend.

    EDIT: Ich seh' grad, bei dem verlinkten Patent geht's anscheinend nicht um RDC selbst, sondern um das Finden von möglichen Seed Files. Was zumindest die Möglichkeit offen lässt dass es auf den RDC Teil selbst keine Patente gibt -- wobei es mich fast wundern würde.



  • Das klingt ziemlich geil muss ich sagen, kenn mich jetzt nicht mit Patentrecht aus und was man da ändern müsste, aber das kann man ja später immer noch machen.

    Werd mich da mal reinlesen, klingt spannend



  • Also ich sehe da zwei Sachen die patentiert sein könnten:

    1. Das Grundprinzip "wie teilen ein File in Blöcke auf, deren Grenzen wir anhand des File-Inhalts bestimmen". Wenn das patentiert ist, dann ist Game Over, denn ohne das geht RDC nunmal nicht.

    2. Der spezielle "Grenzen-Bestimmungs-Algorithmus". Da gibt es viele Möglichkeiten, d.h. man könnte dem Patent (so vorhanden) u.U. ausweichen. Nur u.U. deswegen, weil wenn alle praktikablen Algorithmen patentiert sein sollten, dann ist natürlich auch wieder Game Over.

    Der bei (2) verwendete Algorithmus sollte auf jeden Fall schön irgendwo weggekapselt sein -- dann lässt er sich bei Bedarf auch schnell austauschen.



  • keine_kreativität schrieb:

    Ich spiele kein Minecraft, wieso gibts da keinen brauchbaren Server? Was sollte ein neuer besser machen? 😃

    Die meisten sind nur irgendein modifizierter Abklatsch vom Vanilla Server und damit lahmer, single-threaded Java Mist. Die uebrigen sind alle nicht mal ansatzweise fertig.


Anmelden zum Antworten