프로젝트 소개
CodeWorld는 Haskell로 구현된 교육용 프로그래밍 환경입니다. 기하 도형, 애니메이션, 대화형 또는 다인용 게임을 위한 단순한 수학적 모델을 제공합니다. 웹 기반 환경은 설치가 필요 없는 편집기와 컴파일러를 통한 교육 지원, 프로젝트의 손쉬운 공유와 클라우드 저장, GHCJS를 사용한 브라우저 내 직접 실행 기능을 목표로 합니다.
변형
- CodeWorld(code.world)는 수학 교육을 지원하도록 설계된 교육용 Haskell 변형과 라이브러리를 사용합니다.
- CodeWorld Haskell(code.world/haskell)은 표준 Haskell을 대상으로 하므로, 프로그램을 사이트에서 GHCJS로 실행하거나 codeworld-api 패키지와 blank-canvas를 사용해 네이티브로 컴파일할 수 있습니다.
- CodeWorld Blocks(code.world/blocks)는 어린 학생을 위한 드래그 앤 드롭 인터페이스를 제공합니다. README에는 아직 버그가 있어 사용을 권장하지 않는다고 명시되어 있습니다.
상태 및 지원
CodeWorld는 안정적이라고 설명되며 수년간 학교에서 사용되어 왔고, 저장소 문서에 사용자 목록의 일부가 있습니다. 호환성을 깨는 변경은 혼란을 줄이기 위해 일반적인 미국 K-12 학기 사이에 예정됩니다. Google이 코드를 배포하지만 CodeWorld는 공식 Google 프로젝트가 아니며 지원을 제공하지 않는다고 명시합니다. 질문은 codeworld-discuss 메일링 리스트로 보내며, 학생 대상 Q&A 포럼이 help.code.world에 있습니다.
시작하기
사용자는 code.world를 직접 방문할 수 있으며, 호스팅 서비스를 사용하는 데 다운로드나 설치가 필요하지 않습니다. 저장소는 환경을 포크하거나 수정하거나 기여하려는 사람을 위한 것입니다.
빌드 및 배포
CodeWorld의 빌드와 실행은 길지만 루트 디렉터리의 설치 스크립트로 자동화되어 있으며, Debian, Ubuntu, RedHat, CentOS를 포함한 대부분의 Linux 배포판에서 작동합니다. 단계: 프로젝트 루트로 이동해 ./install.sh를 실행한 다음 ./run.sh를 실행하고 localhost:8080에서 시스템에 접속합니다. 변경 후에는 ./build.sh가 이전에 설치된 도구와 라이브러리를 사용해 CodeWorld 자체를 다시 컴파일한 다음 ./run.sh가 서버를 시작합니다. Docker 빌드 및 실행 명령도 문서화되어 있지만, README에는 Docker가 아직 권장 개발 방법이 아니며 컨테이너에 클라이언트 ID 접근, 공유 NFS 마운트 및 기타 설정 단계가 없다고 나와 있습니다. Stack은 로컬 빌드에 지원되지 않으며 현재 셸 스크립트나 Docker를 대체할 수 없다고 언급되어 있습니다.
인증
CodeWorld는 Google 인증, 로컬 인증 또는 기능이 축소된 상태로 인증을 비활성화한 실행을 지원합니다. 인증 없이 사용자는 코드를 작성, 빌드, 실행할 수 있지만 프로젝트와 폴더를 저장하거나 관리할 수 없습니다.
Google 인증에는 web/clientId.txt에 저장된 Google API 키가 필요하며, 실행 중인 인스턴스는 해당 파일의 변경 사항을 반영합니다. README는 프로젝트와 OAuth 클라이언트 ID를 만드는 방법에 대한 Google Cloud 문서를 링크하며, 이것이 공식 라이브 사이트에서 사용하는 메커니즘이라고 설명합니다.
로컬 인증은 SQLite3 데이터베이스를 사용하고 BCrypt 비밀번호 해시만 저장하며 JWT 기반 무상태 인증을 사용합니다. 애플리케이션 루트에 codeworld-auth.db 파일이 있으면 활성화됩니다. codeworld-auth CLI 도구가 계정을 관리합니다. init-accounts는 빈 데이터베이스를 만들고, create-account는 무작위로 생성된 비밀번호와 Expired 같은 계정 상태를 가진 사용자를 만들며, 다른 하위 명령은 업데이트와 삭제를 처리합니다. JWT 비밀은 generate-secret으로 codeworld-auth.txt에 생성해야 하며, 서버는 이 비밀을 노출해서는 안 됩니다.
주의 사항
가상 서버에서는 CodeWorld가 설치 중 매우 큰 Haskell 프로젝트를 컴파일하기 때문에 기본 RAM이 GHC에 종종 충분하지 않습니다. README는 dd, mkswap, swapon으로 2GB 스왑 파일을 만들 것을 제안합니다. 설치가 느릴 수 있지만 성공해야 하며, 매우 큰 프로그램을 의도하지 않는 한 첫 서버 실행 후 스왑 파일을 보통 제거할 수 있습니다.
기여
기여하려면 Contributor License Agreement에 동의해야 하며, 자세한 내용은 CONTRIBUTING.md에 있습니다. 버그와 공식 기능 요청은 GitHub 이슈 트래커로 보냅니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.