Codeworld es un entorno educativo que usa Haskell. Proporciona un modelo matemático simple para figuras geométricas, animaciones y juegos interactivos y de múltiples jugadores. El entorno de programación basado en la web admite esta misión educativa con un editor y un compilador de SETUP cero, fácil intercambio y almacenamiento en la nube de proyectos, y la capacidad de ejecutar programas directamente en el navegador web utilizando GHCJS.
Hay varias variantes de Codeworld disponibles:
codeworld-api y blank-canvas .¡Codeworld es estable y se ha utilizado en las escuelas durante años! Consulte la página de usuarios para obtener una lista parcial. Sin embargo, estamos mejorando constantemente el medio ambiente. Los cambios que rompen, cuando es necesario, se programan entre los semestres escolares típicos (EE. UU.) Para minimizar la interrupción de las clases existentes.
Google está distribuyendo el código para Codeworld, pero Codeworld no es un proyecto oficial de Google, y Google no proporciona soporte para ello. En cambio, se deben hacer preguntas sobre el proyecto o el código a la lista de correo de CodeWorld-Discuss. Un foro de preguntas y respuestas amigables para los estudiantes también está disponible en http://help.code.world para preguntas sobre programas escritos utilizando Codeworld, en lugar de preguntas sobre la construcción o modificación de Codeworld.
Simplemente visite https://code.world para comenzar.
No es necesario descargar ni instalar nada para usar Codeworld. Este repositorio será útil si prefiere bifurcar y modificar el entorno Codeworld o contribuir con cambios.
Para discutir y escuchar anuncios sobre Codeworld, suscríbase a la lista de correo en https://groups.google.com/forum/#!forum/codeworld-discusss
La lista de correo debe usarse para:
Para informar errores o presentar solicitudes de funciones formales, pruebe https://github.com/google/codeworld/issues.
Hay un poco de papeleo involucrado en contribuir a Codeworld. Deberá aceptar un acuerdo de licencia de contribuyente. Ver CONTRIBUTING.md para más detalles.
Construir y ejecutar Codeworld puede ser un proceso largo, pero se automatiza utilizando los scripts de instalación en el directorio raíz, que funcionan en la mayoría de las formas de Linux, incluidos Debian, Ubuntu, Redhat y CentOS. Las instrucciones paso a paso son las siguientes:
./install.sh para configurar el proyecto../run.sh para iniciar el servidor.Ahora puede acceder al sistema Codeworld en http: // localhost: 8080.
Si realiza cambios en Codeworld, puede reconstruirlo sin reconstruir las dependencias:
./build.sh para recompilar solo Codeworld, utilizando herramientas y bibliotecas previamente instaladas../run.sh para iniciar el servidor.También es posible construir y ejecutar el servidor usando Docker. Esta aún no es la forma recomendada de desarrollarse con Codeworld, pero podría llegar pronto.
Comandos para probar Docker:
sudo docker build -t codeworld https://github.com/google/codeworld.git
sudo docker run -p 80:8080 -t codeworld
Por ahora, el contenedor Docker no tiene forma de acceder a una ID de cliente, montar una unidad NFS compartida u otros pasos de configuración. Funcionará, pero no estará completo. En el futuro, esta debería convertirse en la forma estándar de implementar Codeworld.
El stack.yaml en la raíz del proyecto está presente para apoyar parcialmente a Into y Travis CI. En Travis, las pruebas codeworld-compiler no se ejecutan.
Construir y ejecutar Codeworld localmente con Stack no está compatible, y de hecho no funciona. La pila aún no puede sustituir los scripts de shell o el uso de Docker arriba.
Codeworld ofrece dos modos de autenticación o la capacidad de ejecutarse con autenticación deshabilitada con funcionalidad reducida. Los dos métodos proporcionados son los siguientes:
La ejecución de Codeworld en uno de estos dos modos permite a los usuarios guardar y administrar sus proyectos y carpetas. Sin autenticación habilitada, los usuarios pueden escribir, crear y ejecutar código, pero pierden la capacidad de guardar y administrar proyectos y carpetas.
Para que la autenticación de Google funcione, deberá obtener una clave de Google API y almacenarla en web/clientId.txt .
Para obtener una clave de Google API para su instalación de Codeworld, consulte los siguientes recursos:
Una vez que tenga una clave de Google API, copie y péguela en web/clientId.txt . Una instancia de CodeWorld en ejecución recogerá inmediatamente los cambios en este archivo.
En general, el sistema de autenticación de Google será el sistema más fácil de mantener, ya que no se requieren tiendas de contraseñas locales. Este es el mecanismo utilizado por la versión oficial en vivo de Codeworld.
Para las aplicaciones en las que las dependencias externas, como las cuentas de Google, no son aceptables, proporcionamos un sistema de autenticación local simple:
Esto proporciona un sistema de autenticación local con flujos de trabajo muy similares a la autenticación de Google (es decir, sesiones sin estado del cliente). Actualmente, no se proporciona ninguna interfaz administrativa basada en la web. En su lugar, puede usar la herramienta CLI codeworld-auth para administrar las cuentas.
El sistema de autenticación local puede ser útil para situaciones en las que un instructor no puede esperar razonablemente que todos los estudiantes tengan una cuenta válida de Google y en la que el instructor está dispuesto a implementar una pila local de codeworld.
La autenticación local se habilitará si un archivo codeworld-auth.db está presente en el directorio raíz de la aplicación. Para crear esta base de datos, ejecute lo siguiente desde la raíz del repositorio de git:
build/bin/codeworld-auth init-accounts -d codeworld-auth.db
Esto creará una base de datos de cuentas vacía sin cuentas.
Suponiendo que ya ha creado una base de datos de cuenta como se describió anteriormente, puede crear una nueva cuenta de la siguiente manera:
build/bin/codeworld-auth create-account -d codeworld-auth.db johndoe Expired
Esto creará una nueva cuenta con el ID de usuario johndoe con una contraseña generada al azar. La cuenta se establecerá en "caducado", lo que significa que se le pedirá al usuario que ingrese una nueva contraseña en la próxima hora de inicio de sesión.
Se proporcionan otros subcomandos para actualizar y eliminar cuentas, etc. para obtener ayuda:
build/bin/codeworld-auth --help
Para usar la autenticación local, también necesitará generar un Secreto JWT almacenado en un archivo llamado codeworld-auth.txt . Esto se usa para firmar tokens JWT pasados de un lado a otro entre el servidor y el navegador. Desde el directorio raíz del repositorio de git, ejecute el siguiente comando:
build/bin/codeworld-auth generate-secret -s codeworld-auth.txt
Esto generará una nueva clave de firma JWT aleatoria. El servidor no debe exponer este secreto a usuarios externos.
Si está instalando Codeworld en un servidor virtual, tenga en cuenta que la RAM predeterminada en estos servidores a menudo no es suficiente para GHC. Codeworld necesita compilar proyectos de Haskell muy grandes durante su instalación. Lo siguiente debe ser suficiente para resolver cualquier problema fuera de la memoria que encuentre:
$ sudo dd if=/dev/zero of=/swap bs=1024 count=2097152
$ sudo mkswap /swap
$ sudo swapon /swap
Esto crea un archivo de intercambio de 2 GB para aumentar la memoria virtual disponible. La instalación con un archivo de intercambio puede ser lenta, pero tendrá éxito. (A menos que tenga la intención de escribir programas muy grandes en Codeworld, generalmente es seguro eliminar el archivo de intercambio después de ejecutar el servidor por primera vez).