Codeworld - это образовательная среда, использующая Haskell. Он предоставляет простую математическую модель для геометрических фигур, анимации и интерактивных и многопользовательских игр. Веб-среда программирования поддерживает эту образовательную миссию с редактором и компилятором с нулевым оборудованием, легким обменом и облачным хранилищем проектов и возможностью запуска программ прямо в веб-браузере с использованием GHCJS.
Существует несколько вариантов доступного кодового код:
codeworld-api и blank-canvas .Codeworld стабилен и используется в школах в течение многих лет! Смотрите страницу пользователей для частичного списка. Мы постоянно улучшаем окружающую среду. Разрывные изменения, при необходимости, должны происходить между типичными (США) школьными семестрами K-12, чтобы минимизировать нарушение существующих классов.
Google распространяет код для Codeworld, но Codeworld не является официальным проектом Google, и Google не предоставляет его поддержке. Вместо этого, вопросы о проекте или коде должны быть заданы в список рассылки Codeworld-Discuss. Вопрос и ответный форум для студентов также доступен по адресу http://help.code.world для вопросов о программах, написанных с использованием Codeworld, а не на вопросы о создании или изменении самого кодюрла.
Просто посетите https://code.world, чтобы начать работу.
Нет необходимости загружать или устанавливать что -либо, чтобы использовать Codeworld. Этот репозиторий будет полезен, если вы предпочитаете разветвлять и изменять среду Codeworld или внести изменения.
Чтобы обсудить и услышать объявления о Codeworld, подпишитесь на список рассылки по адресу https://groups.google.com/forum/#!forum/codeworld-discuss
Список рассылки должен использоваться для:
Чтобы сообщить об ошибках или формальных запросах функций, попробуйте https://github.com/google/codeworld/issues.
Существует небольшое количество документов, связанных с участием в Codeworld. Вам нужно согласиться с лицензионным соглашением о участнике. См. CONTRIBUTING.md для деталей.
Строительство и запуск Codeworld может быть длительным процессом, но автоматизируется с использованием сценариев установки в корневом каталоге, которые работают на большинстве форм Linux, включая Debian, Ubuntu, Redhat и CentOS. Пошаговые инструкции следующие:
./install.sh , чтобы настроить проект../run.sh , чтобы запустить сервер.Теперь вы можете получить доступ к системе Codeworld по адресу http: // localhost: 8080.
Если вы внесете изменения в Codeworld, вы можете восстановить его без восстановления зависимостей:
./build.sh , чтобы перекомпилировать только сам код, используя ранее установленные инструменты и библиотеки../run.sh , чтобы запустить сервер.Также можно создать и запустить сервер, используя Docker. Это еще не рекомендуемый способ развития с Codeworld, но он может добраться туда в ближайшее время.
Команды, чтобы попробовать для Docker:
sudo docker build -t codeworld https://github.com/google/codeworld.git
sudo docker run -p 80:8080 -t codeworld
На данный момент контейнер Docker не может получить доступ к идентификатору клиента, установить общий диск NFS или другие шаги настройки. Это сработает, но не будет полным. В будущем это должно стать стандартным способом развертывания Codeworld.
stack.yaml в корне проекта присутствует, чтобы частично поддерживать Interce и Travis CI. На Трэвисе тесты codeworld-compiler не работают.
Создание и запуск кодювла локально со стеком не поддерживается и на самом деле не работает. Stack еще не может заменить сценарии оболочки или использование Docker выше.
Codeworld предлагает два режима аутентификации или возможность запуска с аутентификацией отключена с уменьшенной функциональностью. Два предоставленных метода следующие:
Запуск CodeWorld в одном из этих двух режимов позволяет пользователям сохранять и управлять своими проектами и папками. Без необходимости аутентификации пользователи могут писать, строить и запускать код, но теряют возможность сохранять и управлять проектами и папками.
Для работы с аутентификацией Google вам нужно будет получить ключ Google API и сохранить его в web/clientId.txt .
Чтобы получить ключ Google API для вашей установки CodeWorld, обратитесь к следующим ресурсам:
После того, как у вас есть ключ Google API, скопируйте и вставьте его в web/clientId.txt . Запуск экземпляра Codeworld немедленно поднимет изменения в этом файле.
В целом, система аутентификации Google будет самой простой системой для поддержания, поскольку не требуется локальные запасы паролей. Это механизм, используемый официальной, живой версией Codeworld.
Для приложений, в которых внешние зависимости, такие как учетные записи Google, не являются приемлемыми, мы предоставляем простую локальную систему аутентификации:
Это обеспечивает локальную систему аутентификации с очень похожими рабочими процессами для аутентификации Google (т.е. сеансы на стороне без состояния на стороне клиента). В настоящее время не предоставляется веб-административный интерфейс. Вместо этого вы можете использовать инструмент codeworld-auth CLI для управления учетными записями.
Локальная система аутентификации может быть полезна для ситуаций, когда инструктор не может разумно ожидать, что у всех учащихся будут иметь действительную учетную запись Google, в которой инструктор готов развернуть локальный стек Codeworld.
Локальная аутентификация будет включена, если в корневом каталоге приложения присутствует файл codeworld-auth.db . Чтобы создать эту базу данных, запустите следующее из корня репозитория GIT:
build/bin/codeworld-auth init-accounts -d codeworld-auth.db
Это создаст пустую базу данных учетной записи без учетных записей.
Предполагая, что вы уже создали базу данных учетных записей, как описано выше, вы можете создать новую учетную запись следующим образом:
build/bin/codeworld-auth create-account -d codeworld-auth.db johndoe Expired
Это создаст новую учетную запись с идентификатором пользователя johndoe с случайно сгенерированным паролем. Учетная запись будет установлена на «истек», что означает, что пользователю будет предложено ввести новый пароль в следующее время входа.
Другие подкоманды предоставляются для обновления и удаления учетных записей и т. Д. Для получения помощи:
build/bin/codeworld-auth --help
Чтобы использовать локальную аутентификацию, вам также необходимо будет генерировать секрет JWT, хранящийся в файле с именем codeworld-auth.txt . Это используется для подписи токенов JWT, проходящих взад и вперед между сервером и браузером. Из корневого каталога репозитория GIT запустите следующую команду:
build/bin/codeworld-auth generate-secret -s codeworld-auth.txt
Это генерирует новый случайный ключ подписания JWT. Сервер не должен подвергать этот секрет внешним пользователям.
Если вы устанавливаете CodeWorld на виртуальном сервере, имейте в виду, что ОЗУ по умолчанию на этих серверах часто недостаточно для GHC. Codeworld должен составить очень большие проекты Haskell во время его установки. Следующее должно быть достаточно, чтобы решить любые проблемы вне памяти, с которыми вы сталкиваетесь:
$ sudo dd if=/dev/zero of=/swap bs=1024 count=2097152
$ sudo mkswap /swap
$ sudo swapon /swap
Это создает файл обмена 2 ГБ для увеличения доступной виртуальной памяти. Установка с файлом подкачки может быть медленной, но она будет успешной. (Если вы не собираетесь написать очень большие программы в Codeworld, обычно безопасно удалить файл SWAP после первого запуска сервера.)