Codeworld ist ein Bildungsumfeld mit Haskell. Es bietet ein einfaches mathematisches Modell für geometrische Figuren, Animationen sowie interaktive und Mehrspielerspiele. Die webbasierte Programmierumgebung unterstützt diese Bildungsmission mit einem Null-Setup-Editor und Compiler, der einfachen Freigabe und der Cloud-Speicherung von Projekten sowie der Möglichkeit, Programme mit GHCJs direkt im Webbrowser auszuführen.
Es gibt mehrere Varianten der Codeworld:
codeworld-api Paket und blank-canvas zusammengestellt werden.Codeworld ist stabil und wird seit Jahren in Schulen verwendet! Eine Teilliste finden Sie auf der Seite der Benutzer. Wir verbessern die Umwelt jedoch ständig. Bei Bedarf werden bei Bedarf zwischen typischen (US) K-12-Schulsemestern auftreten, um die Störung bestehender Klassen zu minimieren.
Google verteilt den Code für Codeworld, Codeworld ist jedoch kein offizielles Google -Projekt, und Google bietet keine Unterstützung dafür. Stattdessen sollten Fragen zum Projekt oder zum Code an die Mailingliste der Codeworld-Discuss gestellt werden. Ein student-freundlicher Frage und ein Antwortforum finden Sie auch unter http://help.code.world für Fragen zu Programmen, die mit Codeworld geschrieben wurden, anstatt Fragen zum Erstellen oder Ändern von Codeworld selbst.
Besuchen Sie einfach https://code.world, um loszulegen.
Es ist nicht erforderlich, irgendetwas herunterzuladen oder zu installieren, um Codeworld zu verwenden. Dieses Repository ist nützlich, wenn Sie die Codeworld -Umgebung bevorzugen und ändern oder Änderungen beibringen.
Abonnieren Sie die Mailingliste unter https://groups.google.com/forum/#!
Die Mailingliste sollte verwendet werden, um:
Um Fehler oder formale Funktionsanfragen zu melden, versuchen Sie es mit https://github.com/google/codeworld/issues.
Es ist ein kleines Stück Papierkram mit dem Beitrag zur Codeworld verbunden. Sie müssen einer Mitwirkungslizenzvereinbarung zustimmen. Weitere Informationen finden Sie CONTRIBUTING.md .
Das Erstellen und Ausführen von Codeworld kann ein langwieriger Prozess sein, wird jedoch mithilfe der Installationsskripte im Stammverzeichnis automatisiert, die an den meisten Linux -Formen arbeiten, einschließlich Debian, Ubuntu, Redhat und CentOS. Die Schritt -für -Schritt -Anweisungen sind wie folgt:
./install.sh , um das Projekt einzurichten../run.sh aus, um den Server zu starten.Sie können jetzt auf das Codeworld -System unter http: // localhost: 8080 zugreifen.
Wenn Sie Änderungen an Codeworld vornehmen, können Sie es wieder aufbauen, ohne die Abhängigkeiten wieder aufzubauen:
./build.sh um nur Codeworld selbst mit zuvor installierten Tools und Bibliotheken neu zu kompilieren../run.sh aus, um den Server zu starten.Es ist auch möglich, den Server mit Docker zu erstellen und auszuführen. Dies ist noch nicht die empfohlene Art, sich mit Codeworld zu entwickeln, aber es könnte bald dort gelangen.
Befehle zum Versuch für Docker:
sudo docker build -t codeworld https://github.com/google/codeworld.git
sudo docker run -p 80:8080 -t codeworld
Der Docker -Container hat vorerst keine Möglichkeit, auf eine Client -ID zuzugreifen, ein freigegebenes NFS -Laufwerk oder andere Setup -Schritte zu montieren. Es wird funktionieren, aber es wird nicht vollständig sein. In Zukunft sollte dies der Standard für die Bereitstellung von Codeworld werden.
Der stack.yaml in der Wurzel des Projekts ist vorhanden, um Intero und Travis CI teilweise zu unterstützen. Auf Travis werden codeworld-compiler -Tests nicht durchgeführt.
Das Aufbau und Betrieb von Codeworld vor Ort mit Stack ist nicht unterstützt und funktioniert tatsächlich nicht. Stack kann die oben genannten Shell -Skripte oder Docker -Verwendung noch nicht ersetzen.
CodeWorld bietet zwei Authentifizierungsmodi oder die Möglichkeit, mit authentifizierter Behinderung mit reduzierter Funktionalität auszuführen. Die beiden bereitgestellten Methoden sind wie folgt:
Durch das Ausführen von Codeworld in einem dieser beiden Modi können Benutzer ihre Projekte und Ordner speichern und verwalten. Da keine Authentifizierung aktiviert ist, können Benutzer Code schreiben, erstellen und ausführen, aber die Möglichkeit verlieren, Projekte und Ordner zu speichern und zu verwalten.
Damit die Google -Authentifizierung funktioniert, müssen Sie einen Google -API -Schlüssel erhalten und in web/clientId.txt speichern.
Um einen Google -API -Schlüssel für Ihre Codeworld -Installation zu erhalten, wenden Sie sich bitte an die folgenden Ressourcen:
Sobald Sie einen Google -API -Schlüssel haben, kopieren Sie sie und fügen Sie sie in web/clientId.txt ein. Eine laufende Codeworld -Instanz nimmt sofort Änderungen an dieser Datei ab.
Im Allgemeinen ist das Google -Authentifizierungssystem das am einfachsten zu verwaltende System, da keine lokalen Kennwortspeicher erforderlich sind. Dies ist der Mechanismus, der von der offiziellen Live -Version von Codeworld verwendet wird.
Für Anwendungen, bei denen externe Abhängigkeiten wie Google -Konten nicht akzeptabel sind, bieten wir ein einfaches lokales Authentifizierungssystem an:
Dies bietet ein lokales Authentifizierungssystem mit sehr ähnlichen Workflows wie die Google-Authentifizierung (dh staatenlose clientseitige Sitzungen). Derzeit wird keine webbasierte Verwaltungsschnittstelle bereitgestellt. Stattdessen können Sie das codeworld-auth CLI-Tool verwenden, um Konten zu verwalten.
Das lokale Authentifizierungssystem kann für Situationen nützlich sein, in denen ein Ausbilder nicht vernünftigerweise erwarten kann, dass alle Schüler über ein gültiges Google -Konto verfügen und in dem der Ausbilder bereit ist, einen lokalen Codeworld -Stack bereitzustellen.
Die lokale Authentifizierung wird aktiviert, wenn eine codeworld-auth.db Datei im Stammverzeichnis der Anwendung vorhanden ist. Führen Sie zum Erstellen dieser Datenbank Folgendes aus dem Stammwurzel des Git -Repositorys aus:
build/bin/codeworld-auth init-accounts -d codeworld-auth.db
Dadurch wird eine leere Kontodatenbank ohne Konten erstellt.
Angenommen, Sie haben bereits wie oben beschrieben eine Kontodatenbank erstellt, können Sie wie folgt ein neues Konto erstellen:
build/bin/codeworld-auth create-account -d codeworld-auth.db johndoe Expired
Dadurch wird ein neues Konto bei der Benutzer -ID johndoe mit einem zufällig generierten Kennwort erstellt. Das Konto wird auf "abgelaufen" festgelegt, was bedeutet, dass der Benutzer zum nächsten Anmeldezeit ein neues Kennwort eingeben wird.
Andere Unterbefehle werden zur Aktualisierung und Löschen von Konten usw. bereitgestellt, um Hilfe zu erhalten:
build/bin/codeworld-auth --help
Um die lokale Authentifizierung zu verwenden, müssen Sie auch ein JWT-Geheimnis generieren, das in einer Datei namens codeworld-auth.txt gespeichert ist. Dies wird verwendet, um JWT -Token zwischen dem Server und dem Browser zu verpflichten. Führen Sie aus dem Root -Verzeichnis des Git -Repositorys den folgenden Befehl aus:
build/bin/codeworld-auth generate-secret -s codeworld-auth.txt
Dies erzeugt einen neuen zufälligen JWT -Signierschlüssel. Der Server sollte dieses Geheimnis externer Benutzer nicht aussetzen.
Wenn Sie Codeworld auf einem virtuellen Server installieren, beachten Sie, dass der Standard -RAM auf diesen Servern für GHC häufig nicht ausreicht. Codeworld muss während der Installation sehr große Haskell -Projekte kompilieren. Das Folgende sollte ausreichen, um alle außerstehörigen Probleme zu lösen, denen Sie begegnen:
$ sudo dd if=/dev/zero of=/swap bs=1024 count=2097152
$ sudo mkswap /swap
$ sudo swapon /swap
Dadurch wird eine 2 -GB -SWAP -Datei erstellt, um den verfügbaren virtuellen Speicher zu erhöhen. Die Installation mit einer Swap -Datei kann langsam sein, aber es wird erfolgreich sein. (Sofern Sie nicht beabsichtigen, sehr große Programme in Codeworld zu schreiben, ist es normalerweise sicher, die SWAP -Datei nach dem ersten Ausführen des Servers zu entfernen.)