Codeworldは、Haskellを使用した教育環境です。幾何学的なフィギュア、アニメーション、インタラクティブおよびマルチプレイヤーゲームのシンプルな数学モデルを提供します。 Webベースのプログラミング環境は、ゼロセットアップエディターとコンパイラ、プロジェクトの簡単な共有とクラウドストレージ、およびGHCJSを使用してWebブラウザーでプログラムを実行する機能を備えたこの教育ミッションをサポートしています。
利用可能なCodeworldにはいくつかのバリエーションがあります。
codeworld-apiパッケージとblank-canvasでネイティブにコンパイルできるプログラムを構築します。Codeworldは安定しており、長年学校で使用されてきました!部分的なリストについては、ユーザーページを参照してください。ただし、環境を常に改善しています。既存のクラスの混乱を最小限に抑えるために、必要に応じて、必要に応じて変更を繰り返すことがスケジュールされ、典型的な(米国)K-12学期の間で発生するように予定されています。
GoogleはCodeworldのコードを配布していますが、CodeworldはGoogleプロジェクトの公式ではなく、Googleはそれをサポートしていません。代わりに、プロジェクトまたはコードに関する質問は、Codeworld-Discussメーリングリストに尋ねる必要があります。学生向けの質問と回答フォーラムは、Codeworld自体の構築または変更に関する質問ではなく、Codeworldを使用して書かれたプログラムに関する質問についてもhttp://help.code.worldで入手できます。
https://code.worldにアクセスして開始してください。
Codeworldを使用するために何かをダウンロードまたはインストールする必要はありません。このリポジトリは、CodeWorld環境をフォークして変更するか、変更を寄付する場合に役立ちます。
Codeworldについての発表について話し合い、聞くには、https://groups.google.com/forum/#!
メーリングリストは次のように使用する必要があります。
バグを報告したり、正式な機能リクエストをファイルしたりするには、https://github.com/google/codeworld/issuesをお試しください。
Codeworldに貢献することには、少しの書類があります。貢献者ライセンス契約に同意する必要があります。詳細については、 CONTRIBUTING.mdを参照してください。
Codeworldの構築と実行は長いプロセスになりますが、Debian、Ubuntu、Redhat、Centosなどのほとんどの形式のLinuxで機能するルートディレクトリのインストールスクリプトを使用して自動化されます。段階的な指示は次のとおりです。
./install.shを実行してプロジェクトをセットアップします。./run.shを実行してサーバーを起動します。これで、http:// localhost:8080でcodeworldシステムにアクセスできます。
Codeworldに変更を加えると、依存関係を再構築せずに再構築できます。
./build.shを実行して、以前にインストールされたツールとライブラリを使用して、Codeworld自体だけを再コンパイルします。./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コンテナには、クライアントIDにアクセスしたり、共有NFSドライブをマウントしたり、その他のセットアップ手順を設定したりする方法はありません。動作しますが、完全にはなりません。将来的には、これがCodeworldを展開する標準的な方法になるはずです。
プロジェクトのルートにあるstack.yaml 、InteroおよびTravis CIを部分的にサポートするために存在します。 Travisでは、 codeworld-compilerテストは実行されません。
Codeworldをスタックでローカルに構築および実行することはサポートされておらず、実際には機能しません。スタックは、上記のシェルスクリプトやDockerの使用にまだ置き換えられません。
CodeWorldは、2つの認証モードまたは機能を削減して認証を無効にして実行する機能を提供します。提供される2つの方法は次のとおりです。
これら2つのモードのいずれかでCodeWorldを実行すると、ユーザーはプロジェクトとフォルダーを保存および管理できます。認証が有効になっていないため、ユーザーはコードを書き込み、構築、実行できますが、プロジェクトとフォルダーを保存および管理する機能を失います。
Google認証が機能するには、Google APIキーを取得し、 web/clientId.txtに保存する必要があります。
CodeWorldのインストールのGoogle APIキーを取得するには、次のリソースを参照してください。
Google APIキーを手に入れたら、コピーしてweb/clientId.txtに貼り付けます。実行中のCodeWorldインスタンスは、このファイルの変更をすぐにピックアップします。
一般に、Google認証システムは、ローカルのパスワードストアが不要なため、維持するのが最も簡単なシステムです。これは、Codeworldの公式バージョンで使用されるメカニズムです。
Googleアカウントなどの外部依存関係が受け入れられないアプリケーションについては、単純なローカル認証システムを提供します。
これにより、Google認証と非常によく似たワークフローを備えたローカル認証システム(つまり、ステートレスクライアント側セッション)が提供されます。現在、Webベースの管理インターフェイスは提供されていません。代わりに、 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
これにより、ランダムに生成されたパスワードを備えたユーザーID johndoeを使用して新しいアカウントが作成されます。アカウントは「期限切れ」に設定されます。つまり、ユーザーは次のサインイン時間に新しいパスワードを入力するように求められます。
他のサブコマンドは、アカウントなどを更新および削除するために提供されます。
build/bin/codeworld-auth --help
ローカル認証を使用するには、 codeworld-auth.txtという名前のファイルに保存されているJWTシークレットも生成する必要があります。これは、サーバーとブラウザの間で前後に渡されたJWTトークンに署名するために使用されます。 GITリポジトリのルートディレクトリから、次のコマンドを実行します。
build/bin/codeworld-auth generate-secret -s codeworld-auth.txt
これにより、新しいランダムJWT署名キーが生成されます。サーバーは、この秘密を外部ユーザーに公開しないでください。
Virtual ServerにCodeWorldをインストールしている場合、これらのサーバーのデフォルトRAMではGHCには十分ではないことが多いことに注意してください。 Codeworldは、インストール中に非常に大きなHaskellプロジェクトをコンパイルする必要があります。以下は、あなたが遭遇するメモリ外の問題を解決するのに十分なはずです。
$ sudo dd if=/dev/zero of=/swap bs=1024 count=2097152
$ sudo mkswap /swap
$ sudo swapon /swap
これにより、2 GBのスワップファイルが作成され、利用可能な仮想メモリが増加します。スワップファイルを使用したインストールは遅い場合がありますが、成功します。 (Codeworldで非常に大きなプログラムを作成する予定がない限り、通常、サーバーを初めて実行した後にスワップファイルを削除することは安全です。)