প্রকল্প সম্পর্কে

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 মেইলিং লিস্টে যায় এবং 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 এখনও সুপারিশকৃত ডেভেলপমেন্ট পদ্ধতি নয় এবং কন্টেইনারে ক্লায়েন্ট আইডি অ্যাক্সেস, শেয়ার্ড NFS মাউন্টিং এবং অন্যান্য সেটআপ ধাপের অভাব রয়েছে। Stack স্থানীয় বিল্ডের জন্য অসমর্থিত হিসেবে উল্লেখ করা হয়েছে এবং বর্তমানে শেল স্ক্রিপ্ট বা Docker-এর বিকল্প হিসেবে কাজ করে না। প্রমাণীকরণ CodeWorld Google প্রমাণীকরণ, স্থানীয় প্রমাণীকরণ, অথবা প্রমাণীকরণ নিষ্ক্রিয় করে সীমিত কার্যকারিতা সহ চালানো সমর্থন করে। প্রমাণীকরণ ছাড়া, ব্যবহারকারীরা কোড লিখতে, বিল্ড করতে এবং চালাতে পারেন কিন্তু প্রজেক্ট ও ফোল্ডার সংরক্ষণ বা পরিচালনা করতে পারেন না। Google প্রমাণীকরণের জন্য web/clientId.txt-এ সংরক্ষিত একটি Google API কী প্রয়োজন; চলমান ইনস্ট্যান্স সেই ফাইলের পরিবর্তনগুলো গ্রহণ করে। README একটি প্রজেক্ট এবং একটি OAuth ক্লায়েন্ট আইডি তৈরির জন্য 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 ইনস্টলেশনের সময় খুব বড় Haskell প্রজেক্ট কম্পাইল করে। README dd, mkswap এবং swapon দিয়ে একটি 2 GB সোয়াপ ফাইল তৈরি করার পরামর্শ দেয়; ইনস্টলেশন ধীর হতে পারে তবে সফল হওয়া উচিত এবং খুব বড় প্রোগ্রামের পরিকল্পনা না থাকলে প্রথম সার্ভার রানের পরে সোয়াপ ফাইলটি সাধারণত সরানো যেতে পারে। অবদান রাখা অবদান রাখার জন্য একটি Contributor License Agreement-এ সম্মত হওয়া প্রয়োজন, বিস্তারিত CONTRIBUTING.md-এ রয়েছে। বাগ এবং আনুষ্ঠানিক ফিচার অনুরোধ GitHub ইস্যু ট্র্যাকারে যায়।