প্রতিটি ট্র্যাকে প্রথম অনুশীলনীটি খুবই সরল একটি "Hello, World!" অনুশীলনী।
এই অনুশীলনীর উদ্দেশ্য হলো দ্রুত নিশ্চিত করা যে সবকিছু ঠিকভাবে সংযুক্ত আছে। এটি নিশ্চিত করবে যে ব্যবহারকারী প্রোগ্রামিং এনভায়রনমেন্টটি সঠিকভাবে ইনস্টল করেছেন, টেস্ট কীভাবে চালাতে হয় তা জানেন, এবং সেগুলো পাস করাতে সক্ষম। এর বাইরে, Exercism কমান্ড-লাইন ক্লায়েন্ট (CLI)-এর ক্ষেত্রে এটি এটিও নিশ্চিত করে যে ব্যবহারকারী CLI সঠিকভাবে ইনস্টল ও কনফিগার করেছেন, এবং সাইটটি অনুশীলনীর জন্য সঠিক ফাইলগুলো সরবরাহ করে, কোনো অপ্রয়োজনীয় আর্টিফ্যাক্ট ছাড়াই। সবশেষে এটি নিশ্চিত করে যে ব্যবহারকারী CLI দিয়ে অনুশীলনী ডাউনলোড করা, নিজের লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টে সমস্যা সমাধান করা, এবং সমাধান আবার সাইটে সাবমিট করার চক্রটির সাথে পরিচিত।
অন্যভাবে বললে, এটি এখনো ভাষাটি সম্পর্কে কিছু শেখার ব্যাপার নয়। আমাদের লক্ষ্য খুবই সরল কিছু।
ট্র্যাক রিপোজিটরি সঠিকভাবে সেটআপ করার সবচেয়ে কঠিন অংশও সম্ভবত এটি, কারণ একটি অনুশীলনী ইমপ্লিমেন্ট করতে অনেকগুলো চলমান অংশ থাকে।
"Hello, World!" অনুশীলনীর ক্ষেত্রে কিছু বিশেষ নিয়ম প্রযোজ্য:
prerequisites নেইpractices নেই"Hello, World!" অনুশীলনীর (আসলে Exercism-এর সব অনুশীলনীর) নির্দিষ্ট কিছু ফাইল প্রয়োজন:
"Hello, World!" অনুশীলনী তৈরি করার আগে, ট্র্যাক-নির্দিষ্ট ফাইলনেম ও ফাইল পাথ (টেস্ট স্যুট, স্টাব ইমপ্লিমেন্টেশন, উদাহরণ ইমপ্লিমেন্টেশন এবং যেকোনো অতিরিক্ত ফাইল) নিয়ে আপনাকে কিছু সিদ্ধান্ত নিতে হবে।
সাধারণ নিয়ম হলো ভাষার জন্য স্বাভাবিক এমন নাম ব্যবহার করা।
যেখানে জোরালো কোনো পছন্দ নেই, সেখানে অগভীর ডিরেক্টরি কাঠামো পছন্দ করুন।
CI স্ক্রিপ্ট যাতে উদাহরণ ইমপ্লিমেন্টেশনটি শনাক্ত করতে পারে, তাই সব অনুশীলনী ব্যবহার করতে পারে এমন একটি সাধারণ বেসনেম বেছে নেওয়া বাঞ্ছনীয়, যেমন example, sample, বা reference-solution.
ট্র্যাক-নির্দিষ্ট ফাইল পাথ বেছে নেওয়ার পর, সেগুলো রুট config.json ফাইলের files কী (key)-তে কনফিগার করা উচিত।
files কী (key) সব অনুশীলনীর জন্য টেমপ্লেট হিসেবে কাজ করবে, যা যেকোনো টুলিংকে (যার কিছু আমরা একটু পরেই ব্যবহার করব) ফাইল কোথায় খুঁজতে হবে তা জানার সুযোগ দেয়।
অনুশীলনীর স্লাগ (এই ক্ষেত্রে hello-world) সহজে কনফিগার করার জন্য আপনি বিভিন্ন প্লেসহোল্ডার ব্যবহার করতে পারেন।
আপনার ট্র্যাক যদি ফাইলের জন্য PascalCase ব্যবহার করে, তাহলে files কী (key) দেখতে এমন হতে পারে:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
উদাহরণ ফাইলটি/ফাইলগুলো .meta ডিরেক্টরির ভেতরে রাখা উচিত।
আরও তথ্যের জন্য files কী (key) ডকুমেন্টেশন দেখুন।
ফাইল পাথ টেমপ্লেট নির্দিষ্ট করার পর, ট্র্যাকের রুট ডিরেক্টরি থেকে নিচের কমান্ডগুলো চালিয়ে আপনি দ্রুত "Hello, World!" অনুশীলনীর ফাইলগুলো স্ক্যাফোল্ড করতে পারেন:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
ওয়েবসাইটে আপনাকে অনুশীলনীর লেখক হিসেবে দেখাতে, এই ধাপগুলো অনুসরণ করুন:
অনুশীলনীর .meta/config.json ফাইলে:
authors কী (key)-তে আপনার GitHub ইউজারনেম যোগ করুনএটি কাজ করতে হলে, আপনাকে আপনার Exercism অ্যাকাউন্ট GitHub-এর সাথে লিংক করতে হবে। ওয়েবসাইটের Settings পেজের Integrations সেকশনে এটি করতে পারেন।
অনুশীলনীর লেখকদের reputation-ও দেওয়া হয়
নতুন ট্র্যাক রিপোজিটরিগুলো নতুন অনুশীলনী যোগ করতে bin/add-practice-exercise স্ক্রিপ্টটি (সোর্স) ব্যবহার করতে পারে:
bin/add-exercise -a <github_username> two-fer
আপনি যদি এমন একটি ট্র্যাক রিপোতে কাজ করেন যেখানে এই ফাইলটি নেই, তাহলে উপরের সোর্স লিংক ব্যবহার করে অবাধে সেগুলো আপনার রিপোতে কপি করতে পারেন।
স্ক্যাফোল্ড করা ফাইলগুলো তৈরি হয়ে গেলে, এরপর আপনাকে করতে হবে:
একটি অনুশীলনী যোগ করার একটি মূল অংশ হলো টেস্ট যোগ করা। মোটামুটিভাবে বলতে গেলে, উপরের অনুশীলনীগুলোর একটি ইমপ্লিমেন্ট করার সময় দুটি বিকল্প আছে:
canonical-data.json থেকে টেস্ট কেস ব্যবহার করেhttps://exercism.org/exercises/hello-world-এ যান)।"Hello, World!" অনুশীলনীর জন্য মাত্র একটি টেস্ট কেস থাকবে, তাই যেকোনো একটি বিকল্পই ঠিক আছে।
উদাহরণ ইমপ্লিমেন্টেশন ফাইলে টেস্টগুলো সমাধান করার জন্য প্রয়োজনীয় কোড থাকা উচিত।
স্টাব ফাইলে টেস্টগুলোর একটি প্রায় কাজ-করা সমাধান থাকা উচিত, তবে "Hello, World!" লেখাটি "Goodbye, Mars!" দিয়ে প্রতিস্থাপিত। টিপ: শুধু উদাহরণ সমাধানটি কপি-পেস্ট করে পরিবর্তন করে নিতে পারেন।
অনুশীলনী শেষ হয়ে গেলে, অনুশীলনীর .meta/config.json ফাইলের "authors" অ্যারে-তে আপনার GitHub ইউজারনেম যোগ করুন।
এটি নিশ্চিত করবে যে অনুশীলনীটি তৈরি করার কৃতিত্ব আপনাকে সঠিকভাবে দেওয়া হয়।
অনুশীলনীটি সঠিকভাবে সেটআপ হয়েছে কিনা যাচাই করতে, আপনি configlet টুল-এর অন্তর্নির্মিত লিন্টিং কার্যকারিতা ব্যবহার করতে পারেন।
প্রথম ধাপ হলো configlet টুলটি আনা, যার জন্য আমরা দুটি স্ক্রিপ্ট তৈরি করেছি:
bin/fetch-configlet: *nix বা macOS ব্যবহার করলে এটি চালানbin/fetch-configlet.ps1: Windows ব্যবহার করলে এটি চালানট্র্যাকের রিপোর রুট ডিরেক্টরি থেকে এই স্ক্রিপ্টগুলোর একটি চালালে bin/configlet বা bin/configlet.exe বাইনারিটি ডাউনলোড হবে।
এরপর bin/configlet lint চালিয়ে অনুশীলনীটি সঠিক কিনা যাচাই করতে পারেন।
সম্ভবত configlet নিচের এররটি রিপোর্ট করবে:
The `tags` array is empty:
/path/to/track/config.json
এই এররটি লঞ্চের জন্য প্রস্তুতি ধাপে ঠিক করা হবে, তাই হয়:
main-এ বা কোনো পুল রিকোয়েস্টে কিছু পুশ করা হলে configlet ওয়ার্কফ্লো স্বয়ংক্রিয়ভাবে configlet lint চালাবে।