इस प्रोजेक्ट के बारे में

CodeWorld हास्केल में कार्यान्वित एक शैक्षिक प्रोग्रामिंग वातावरण है। यह ज्यामितीय आकृतियों, एनिमेशन और इंटरैक्टिव या मल्टी-प्लेयर गेम के लिए एक सरल गणितीय मॉडल प्रदान करता है। वेब-आधारित वातावरण का उद्देश्य शून्य-सेटअप एडिटर और कंपाइलर के साथ शिक्षण का समर्थन करना, परियोजनाओं की आसान साझेदारी और क्लाउड स्टोरेज, और GHCJS का उपयोग करके सीधे ब्राउज़र में प्रोग्राम चलाने की क्षमता है। प्रकार - CodeWorld (code.world) हास्केल के एक शैक्षिक प्रकार और गणित शिक्षण का समर्थन करने के लिए डिज़ाइन की गई लाइब्रेरी का उपयोग करता है। - CodeWorld Haskell (code.world/haskell) मानक हास्केल को लक्षित करता है, इसलिए प्रोग्राम साइट पर GHCJS के साथ चल सकते हैं या codeworld-api पैकेज और blank-canvas का उपयोग करके मूल रूप से संकलित किए जा सकते हैं। - CodeWorld Blocks (code.world/blocks) छोटे छात्रों के लिए ड्रैग-एंड-ड्रॉप इंटरफ़ेस प्रदान करता है; README में कहा गया है कि इसमें अभी भी बग हैं और इसके उपयोग की सिफारिश नहीं की जाती है। स्थिति और समर्थन CodeWorld को स्थिर बताया गया है और यह वर्षों से स्कूलों में उपयोग किया जा रहा है, रिपॉजिटरी दस्तावेज़ों में उपयोगकर्ताओं की आंशिक सूची है। व्यवधान कम करने के लिए सामान्य अमेरिकी K-12 स्कूल सेमेस्टर के बीच ब्रेकिंग परिवर्तन निर्धारित किए जाते हैं। Google कोड वितरित करता है लेकिन कहता है कि CodeWorld एक आधिकारिक Google परियोजना नहीं है और कोई समर्थन प्रदान नहीं करता; प्रश्न codeworld-discuss मेलिंग सूची में जाते हैं, और छात्र-उन्मुख प्रश्नोत्तर फोरम help.code.world पर मौजूद है। शुरुआत करना उपयोगकर्ता सीधे code.world पर जा सकते हैं; होस्ट की गई सेवा का उपयोग करने के लिए किसी डाउनलोड या इंस्टॉलेशन की आवश्यकता नहीं है। रिपॉजिटरी उन लोगों के लिए है जो वातावरण को फोर्क, संशोधित या इसमें योगदान करना चाहते हैं। बिल्ड और परिनियोजन CodeWorld को बिल्ड और चलाना लंबा बताया गया है लेकिन रूट डायरेक्टरी में इंस्टॉलेशन स्क्रिप्ट द्वारा स्वचालित है, जो अधिकांश Linux वितरणों में काम करता है जिनमें Debian, Ubuntu, RedHat और CentOS शामिल हैं। चरण: प्रोजेक्ट रूट में जाएं, ./install.sh चलाएं, ./run.sh चलाएं, और localhost:8080 पर सिस्टम एक्सेस करें। परिवर्तनों के बाद, ./build.sh पहले से इंस्टॉल किए गए टूल और लाइब्रेरी का उपयोग करके CodeWorld को पुनः संकलित करता है, फिर ./run.sh सर्वर शुरू करता है। Docker बिल्ड और रन कमांड भी प्रलेखित हैं, हालांकि README कहता है कि Docker अभी अनुशंसित विधि नहीं है और कंटेनर में क्लाइंट ID, साझा NFS माउंटिंग और अन्य सेटअप चरणों का अभाव है। Stack को स्थानीय बिल्ड के लिए असमर्थित बताया गया है और यह वर्तमान में शेल स्क्रिप्ट का विकल्प नहीं है। प्रमाणीकरण 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 जैसी खाता स्थिति के साथ उपयोगकर्ता बनाता है, और अन्य सबकमांड अपडेट और डिलीशन संभालते हैं। generate-secret के साथ codeworld-auth.txt में एक JWT सीक्रेट उत्पन्न करना आवश्यक है; सर्वर को यह सीक्रेट उजागर नहीं करना चाहिए। चेतावनियाँ वर्चुअल सर्वर पर, डिफ़ॉल्ट RAM अक्सर GHC के लिए अपर्याप्त होती है क्योंकि CodeWorld इंस्टॉलेशन के दौरान बहुत बड़ी हास्केल परियोजनाओं को संकलित करता है। README dd, mkswap और swapon के साथ 2 GB स्वैप फ़ाइल बनाने का सुझाव देता है; इंस्टॉलेशन धीमा हो सकता है लेकिन सफल होना चाहिए, और पहले सर्वर रन के बाद स्वैप फ़ाइल आमतौर पर हटाई जा सकती है जब तक कि बहुत बड़े प्रोग्राम का इरादा न हो। योगदान योगदान में Contributor License Agreement से सहमत होना शामिल है, विवरण CONTRIBUTING.md में है। बग और औपचारिक फीचर अनुरोध GitHub इश्यू ट्रैकर में जाते हैं।