Codecanvas ist eine Online -Plattform, um Programme in einer kollaborativen Umgebung zu üben. Einige Tutoren können Aufgaben für Sie zu und vervollständigen erstellen. Als registrierter Student können Sie diese Aufgaben erledigen und Ihr Ergebnis bewerten lassen. Die Anwendung hat die Codeausführung eingebaut, wodurch Tutoren und Schüler die für die Aufgaben übergebenen Code validieren können. Darüber hinaus werden auch fragwürdige Aufgaben unterstützt. Dies erleichtert Tutoren, nicht nur Codierungsaufträge zu erstellen, sondern auch Aufgaben, bei denen die Schüler vordefinierte Fragen beantworten müssen.
Wir empfehlen nicht, die Anwendung selbst zu hosten, obwohl Sie es tun können. Wenn Sie diese App für Ihre kleine Gruppe verwenden möchten, haben Sie kostenlos ein Konto für unseren Service erstellt.
sample-compose.yml und füllen Sie die fehlenden Werte aus.| Name | Beschleibung |
|---|---|
| Benutzernpostger | Erstellen Sie einen Postgres -Benutzer für den Benutzerndienst und weisen Sie dem Benutzer eine Datenbank zu. |
| Executor Postgres | Erstellen Sie einen Postgres -Benutzer für den Executor und weisen Sie dem Benutzer eine Datenbank zu. |
| Testamentsvollstrecker Mongodb | Erstellen Sie einfach einen MongoDB -Benutzer für den Executor neben einer Datenbank. Zugeben nur dem Executor -Benutzer Lesen Berechtigungen. |
| Tasky -Nachstriche | Erstellen Sie einen Postgres -Benutzer für den Tasky -Dienst und weisen Sie dem Benutzer eine Datenbank zu. |
| Tasky MongoDB | Erstellen Sie einen MongoDB -Benutzer für Tasky und gewähren Sie dem Benutzer -Lese-/Schreibzugriff auf die freigegebene Datenbank mit dem Executor -Dienst. |
API_URI und EXECUTOR_UI_URL initialisieren.Dieses Projekt ist vollständig in der Gemeinde angetrieben. Daher kann jeder zu diesem Projekt beitragen und zur Verbesserung des Projekts beitragen. Wenn Sie eine finanzielle Entschädigung für die Arbeit geben möchten, die wir leisten, können Sie dies gerne tun. Derzeit gibt es keine Möglichkeit, dies zu tun. Vielleicht überprüfen Sie auch den Beitrag.md
Dieses Projekt befindet sich jetzt in der endgültigen Phase, wobei alle erforderlichen Funktionen vollständig implementiert sind. Zu diesem Zeitpunkt gibt es keine konkrete Roadmap für die Weiterentwicklung, und der aktive Entwicklungsprozess für diese Anwendung wurde abgeschlossen.
Wir werden weiterhin Feature-Anfragen und Fehlerberichte von Fall zu Fall angehen und neue Funktionen oder Korrekturen nur dann implementieren, wenn sie mit unserer Vision übereinstimmen und gültig erscheinen. Wir werden jedoch keine zusätzlichen Funktionen unabhängig einführen.
Unser Hauptziel ist es, die Einfachheit und Benutzerfreundlichkeit der Anwendung aufrechtzuerhalten. Das Hinzufügen zu vieler Funktionen könnte diese Einfachheit beeinträchtigen.
Wir empfehlen Ihnen, Feature -Anfragen oder Fehlerberichte zu teilen. Bitte verstehen Sie jedoch, dass neue Funktionen nur dann hinzugefügt werden, wenn sie durch klare externe Anforderungen angetrieben werden.
Bitte beachten Sie, dass sich die Anwendung im Laufe der Zeit entwickelt hat und zunächst kein Datenbankschema geplant wurde. Darüber hinaus war ich zum Zeitpunkt der Entwicklung relativ neu in der Verwendung von Diesel.Rs als Bibliothek für Datenbankinteraktionen. Dies hat zu suboptimalen Daten abgeholt. Während einige Probleme im Schema bereits angesprochen und verbessert wurden, bleibt der aktuelle Datenabrufprozess ineffizient.
Obwohl das Speichern großer Datenmengen kein Problem mehr ist, kann das Abrufen von Daten noch länger als gewünscht dauern. Dank der Pagination sind die Antwortzeiten jedoch statisch begrenzt und bleiben unabhängig von der Datensatzgröße konsistent. Der Nachteil ist, dass die Anwendung mehr SQL -Abfragen als notwendig ausführt. Diese Ineffizienz ist ein bekanntes Problem, aber im Moment keine Priorität, da sie noch kein erhebliches Problem darstellt.
Wir planen, diesen Aspekt erneut zu besuchen, wenn die Plattform mehr Benutzer gewinnt und die Reduzierung der Serverlast entscheidend für die Minimierung der Betriebskosten wird. In Zukunft könnte diese Ineffizienz möglicherweise durch die Umsetzung effektiver Caching -Strategien gemindert werden.
Dieser Code erfüllt möglicherweise nicht die Erwartungen an diejenigen, die mit Rost erfahrener sind. Als ich anfing, an diesem Projekt zu arbeiten, entwickelte sich immer noch mein Verständnis von Rost. Im Laufe des Projekts habe ich viel gelernt, aber infolgedessen kann der Code nicht vollständig an Best Practices einhalten. Ich frage freundlich um Ihr Verständnis, wenn Sie es überprüfen. Sogar jetzt, wenn ich dieses Projekt überprüfe, kann ich mehrere Bereiche sehen, in denen ich mich anders angehen würde.
Es mag einige Verbesserungen in der Zukunft geben, aber selbst nach ihnen wird es aus der Perspektive eines erfahrenen Rostentwicklers einige riesige Teile mit schlechter Code geben.