Codeworld هي بيئة تعليمية باستخدام Haskell. يوفر نموذجًا رياضيًا بسيطًا للأشكال الهندسية والرسوم المتحركة والألعاب التفاعلية والمتعددة اللاعبين. تدعم بيئة البرمجة المستندة إلى الويب هذه المهمة التعليمية من خلال محرر ومترجم صفري ، ومشاركة سهلة وتخزين السحابة للمشاريع ، والقدرة على تشغيل البرامج مباشرة في متصفح الويب باستخدام GHCJs.
هناك العديد من المتغيرات من 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
يجب استخدام القائمة البريدية إلى:
للإبلاغ عن Bugs أو ملفات الملفات الرسمية ، جرب 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 في جذر المشروع لدعم جزئيًا Intero و Travis CI. على Travis ، لا يتم تشغيل اختبارات codeworld-compiler .
إن بناء وتشغيل Codeworld محليًا مع Stack غير مدعوم ، وفي الواقع لا يعمل. لا يمكن أن تحل Stack بعد عن البرامج النصية Shell أو استخدام 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 بعد تشغيل الخادم لأول مرة.)