CodeWorld是使用Haskell的教育環境。它為幾何圖形,動畫以及交互式和多玩家遊戲提供了一個簡單的數學模型。基於Web的編程環境通過零設定的編輯器和編譯器,項目的易於共享和雲存儲以及使用GHCJ在Web瀏覽器中運行程序的能力來支持這一教育任務。
有幾種可用的CodeWorld變體:
codeworld-api軟件包和blank-canvas本地編譯。CodeWorld穩定,多年來一直在學校使用!請參閱“用戶”頁面以獲取部分列表。不過,我們不斷改善環境。在必要時,打破變化計劃在典型(美國)K-12學校學期之間發生,以最大程度地減少現有班級的破壞。
Google正在為CodeWorld分發代碼,但是CodeWorld並不是一個官方的Google項目,Google沒有提供支持。取而代之的是,有關項目或代碼的問題應詢問CodeWorld-Discuss郵件列表。也可以在http://help.code.world上獲得一個對學生友好的問答論壇,以了解有關使用CodeWorld編寫的程序的問題,而不是有關構建或修改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可能是一個漫長的過程,但是使用Root Directory中的安裝腳本自動化,該腳本適用於大多數形式的Linux,包括Debian,Ubuntu,Redhat和Centos。逐步說明如下:
./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是不支持的,實際上不起作用。堆棧還不能代替上面的shell腳本或docker用法。
CodeWorld提供了兩種身份驗證模式或通過功能降低的身份驗證運行的能力。提供的兩種方法如下:
在這兩種模式之一中運行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 Secret。這用於在服務器和瀏覽器之間來回簽名JWT令牌。從GIT存儲庫的根目錄中,運行以下命令:
build/bin/codeworld-auth generate-secret -s codeworld-auth.txt
這將生成一個新的隨機JWT簽名密鑰。服務器不應向外部用戶公開此秘密。
如果要在虛擬服務器上安裝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中編寫非常大的程序,否則首次運行服務器後刪除交換文件通常是安全的。)