কম্পিউটার টিউটোরিয়াল

স্ক্রিপ্টিং শিখুন: পুনরাবৃত্ত কাজগুলি অটোমেট করে উৎপাদনশীলতা বাড়ান

স্ক্রিপ্টিং শিখুন: পুনরাবৃত্ত কাজগুলি অটোমেট করে উৎপাদনশীলতা বাড়ান

কঠোর, গুণগত সফ্টওয়্যার তৈরি করার অভিজ্ঞ ডেভেলপাররা তাদের অধিকাংশ কাজ স্ক্রিপ্ট লিখে অটোমেট করতেই পছন্দ করেন। এই স্ক্রিপ্টগুলো সাধারণ বাশ এলিয়াস কমান্ড থেকে শুরু করে সার্ভারে চলমান ক্রন ট্রিগার পর্যন্ত হতে পারে।

স্ক্রিপ্ট কী?

একটি স্ক্রিপ্ট হলো নির্দেশাবলির একটি সেট যা যেকোনো স্ক্রিপ্টিং ভাষায় (যেমন Bash, Python, JavaScript এবং অন্যান্য) লিখা থাকে এবং যা কাজগুলি অটোমেট করতে বা প্রক্রিয়াগুলি নিয়ন্ত্রণ করতে সাহায্য করে। কম্পাইলড প্রোগ্রামের বিপরীতে, স্ক্রিপ্টগুলো সাধারণত ইন্টারপ্রেটেড হয়, অর্থাৎ তাদের পূর্বে কম্পাইল করা ছাড়াই একটি রানটাইম পরিবেশে সরাসরি এক্সিকিউট করা হয়।

স্ক্রিপ্ট হলো পুনরাবৃত্ত কাজগুলি অটোমেট করার, ওয়ার্কফ্লো পরিচালনার এবং ছোট (এবং কখনও কখনও বড়) সমস্যাগুলি দক্ষতার সাথে সমাধান করার জন্য একটি শক্তিশালী টুল। আপনি चाहে বিগিনার হন বা অভিজ্ঞ ডেভেলপার, স্ক্রিপ্ট লিখতে জানলে আপনার উৎপাদনশীলতা বাড়বে এবং প্রযুক্তিগত ক্ষমতা প্রসারিত হবে।

কেন স্ক্রিপ্ট লিখবেন?

আমি ইতিমধ্যে স্পর্শ করেছি স্ক্রিপ্ট দিয়ে কী করা যায়। এখন আসুন এর সুবিধাগুলি (এবং চ্যালেঞ্জগুলিও) দেখি যাতে বুঝতে পারেন কেন এত শক্তিশালী – এবং কখন ব্যবহার করবেন।

স্ক্রিপ্টের সুবিধাগুলি

  1. অটোমেশন: স্ক্রিপ্ট ডেটা প্রসেসিং বা ফাইল ম্যানেজমেন্টের মতো পুনরাবৃত্ত কাজগুলি সহজ করতে সাহায্য করে।

  2. দক্ষতা: এগুলো আপনার সময় বাঁচাতে পারে যেসব কাজ ম্যানুয়ালি করতে হতো।

  3. ত্রুটি হ্রাস: নির্দেশাবলির सुसঙ্গত এক্সিকিউশনের মাধ্যমে স্ক্রিপ্ট মানব ত্রুটি কমাতে সাহায্য করে।

  4. নমনীয়তা: ন্যূনতম পরিবর্তনে স্ক্রিপ্ট বিভিন্ন ধরনের কাজে উপযোগী হয়।

  5. ইন্টিগ্রেশন: এগুলো অন্যান্য সিস্টেম, টুল বা ওয়ার্কফ্লোর সাথে सहজে একীভূত হয়।

স্ক্রিপ্টের চ্যালেঞ্জগুলি

  1. পারফরম্যান্স: ইন্টারপ্রিটেশন ওভারহেডের কারণে স্ক্রিপ্ট কম্পাইলড প্রোগ্রামের চেয়ে ধীর হতে পারে।

  2. স্কেলেবিলিটি: বড় স্কেলের বা অত্যন্ত জটিল কাজের জন্য এগুলো সবসময় উপযুক্ত নয়।

  3. ডিবাগিং: ডাইনামিক প্রকৃতির কারণে স্ক্রিপ্ট ডিবাগ করা কখনও কখনও চ্যালেঞ্জিং হতে পারে।

  4. নিরাপত্তা ঝুঁকি: খারাপভাবে লেখা স্ক্রিপ্ট 위험ে ফেলতে পারে, বিশেষ করে যদি সিস্টেম-লেভেল কমান্ড এক্সিকিউট করে।

স্ক্রিপ্ট কখন ব্যবহার করবেন এবং কখন করবেন না

স্ক্রিপ্ট আদর্শ:

  1. সरल, ভালোভাবে সংজ্ঞায়িত, বা এককালীন কাজের জন্য

  2. প্রোটোটাইপিং বা দ্রুত কোনো প্রক্রিয়া অটোমেট করার জন্য

  3. যখন স্কোপ যথেষ্ট ছোট হয় যাতে জটিলতা এড়ানো যায়

স্ক্রিপ্ট আদর্শ নয়:

  1. উচ্চ দক্ষতা প্রয়োজন এমন পারফরম্যান্স-ক্রিটিক্যাল কাজের জন্য। স্ক্রিপ্টের বদলে ডেডিকেটেড ETL (Extract, Transform, Load) টুল বা মেসেজ ব্রোকার, বা আপনার ইউজ-কেসের সাথে মিলে যাওয়া অন্য টুল ব্যবহার করুন।

  2. ব্যাপক ইউজার ইন্টারফেস वाले অ্যাপ্লিকেশনের জন্য। বরং একটি ছোট অ্যাপ্লিকেশন বা মডুলার সিস্টেম তৈরি করুন যাতে প্রপার লগিং, টেস্টিং এবং ডকুমেন্টেশন থাকে।

  3. দীর্ঘমেয়াদী মেইনটেনেন্স প্রয়োজন এমন পরিস্থিতিতে, যেখানে কম্পাইলড প্রোগ্রাম বেশি স্থিতিশীল হতে পারে। বরং CRON, Airflow, AWS Lambda/GCP Functions-এর মতো টাস্ক স্কিডিউলার বা ওয়ার্কফ্লো ম্যানেজার ব্যবহার করুন।

কার্যকর স্ক্রিপ্ট লিখার পদ্ধতি

নিচে আমার ফলো করা প্রক্রিয়া দেওয়া আছে। এরপর আমরা বিভিন্ন ভাষায় উদাহরণ স্ক্রিপ্ট দেখব যাতে হ্যান্ডস-অন প্র্যাকটিস করা যায়।

  1. সমস্যাটি সংজ্ঞায়িত করুন: স্ক্রিপ্ট লিখার আগে সমস্যাটি চিহ্নিত করুন যা সমাধান করবে। অটোমেট করার কাজ এবং প্রত্যাশিত ফলাফল স্পষ্ট রাখুন।

  2. সঠিক ভাষা বেছে নিন:

    • Bash: ফাইল অপারেশন বা সার্ভার ম্যানেজমেন্টের মতো সিস্টেম-লেভেল কাজের জন্য আদর্শ।

    • Python: ডেটা প্রসেসিং, ওয়েব স্ক্র্যাপিং এবং আরও জটিল অটোমেশনের জন্য চমৎকার।

    • JavaScript: ওয়েব ডেভেলপমেন্ট এবং ব্রাউজার-ভিত্তিক অটোমেশনের জন্য উপযুক্ত।

  3. স্ক্রিপ্ট লিখুন: একটি টেক্সট এডিটর বা IDE ব্যবহার করুন এবং কমেন্ট ব্যবহার, অর্থপূর্ণ ভেরিয়েবল নাম এবং মডুলার কোডের মতো বেস্ট প্র্যাকটিস মেনে চলুন।

  4. স্ক্রিপ্ট টেস্ট করুন: নিয়ন্ত্রিত পরিবেশে টেস্ট করুন যাতে ত্রুটি ছাড়া প্রত্যাশা অনুযায়ী পারফর্ম করে।

  5. এক্সিকিউট এবং ডিপ্লয় করুন: স্ক্রিপ্টটি তার নির্দিষ্ট পরিবেশে চালান। প্রয়োজনে Cron (Bash-এর জন্য) বা টাস্ক স্কিডিউলার ব্যবহার করে এর এক্সিকিউশন শিডিউল করুন।

উদাহরণ স্ক্রিপ্টসমূহ

এখন কিছু প্র্যাকটিস করা যাক। ধরা যাক আপনার কাছে প্রায় ১০০টি ফাইল আছে যাদের নাম "book-part-1.pdf", "book-part-2.pdf", ..., "book-part-100.pdf"। আপনি সব ফাইলের হাইফন (-) আন্ডারস্কোর (_) দিয়ে রিপ্লেস করতে চান, কারণ আপলোড করার ওয়েবসাইট হাইফনযুক্ত নামের ফাইল গ্রহণ করে না।

নিচে তিনটি ভাষায় স্ক্রিপ্ট দেওয়া আছে যারা একই অপারেশন করে। প্রক্রিয়াটি হলো:

  1. একটি ডিরেক্টরির সব ফাইল খুঁজে বের করা,

  2. চেক করা যে তাদের নামে হাইফন (-) আছে কিনা, এবং

  3. যে কোনো হাইফন থাকলে সেগুলো আন্ডারস্কোর (_) দিয়ে রিপ্লেস করা।

শুরুতেই ফাইল নামগুলো (হাইফনসহ):

স্ক্রিপ্টিং শিখুন: পুনরাবৃত্ত কাজগুলি অটোমেট করে উৎপাদনশীলতা বাড়ান

Bash স্ক্রিপ্ট

Bash স্ক্রিপ্ট দিয়ে শুরু করা যাক:

#!/bin/bash # ফাইল নামের "-" কে "_" দিয়ে রিপ্লেস করুন DIRECTORY="/path/to/your/folder" for FILE in "$DIRECTORY"/*; do if [[ "$FILE" == *-* ]]; then NEW_NAME=$(echo "$FILE" | sed 's/-/_/g') mv "$FILE" "$NEW_NAME" echo "Renamed: $FILE -> $NEW_NAME" fi done 

শীর্ষে ডিরেক্টরি (ফোল্ডার) ডিফাইন করা হয়েছে যেখানে ফাইলগুলো থাকে। ডিরেক্টরির প্রতিটি ফাইলের জন্য, চেক করা হয় নামে - আছে কিনা। থাকলে, echo কমান্ড দিয়ে পুরনো ফাইল নাম কপি করে sed কমান্ড দিয়ে - কে _ দিয়ে রিপ্লেস করে নতুন নাম NEW_NAME ভেরিয়েবলে স্টোর করা হয়। শেষে mv কমান্ড দিয়ে পুরনো এবং নতুন নাম আর্গুমেন্ট হিসেবে দিয়ে ফাইল রিনেম করা হয়।

Python স্ক্রিপ্ট

এবার Python-এ কেমন দেখায়:

import os # ফাইল নামের "-" কে "_" দিয়ে রিপ্লেস করুন directory = "/path/to/your/folder" for filename in os.listdir(directory): if "-" in filename: old_path = os.path.join(directory, filename) new_filename = filename.replace("-", "_") new_path = os.path.join(directory, new_filename) os.rename(old_path, new_path) print(f"Renamed: {filename} -> {new_filename}") 

পাইথনে ধাপগুলো প্রায় একই। প্রথমে ডিরেক্টরি ডিফাইন করে প্রতিটি ফাইল দিয়ে ইটারেট করা হয়। ডিরেক্টরির সব ফাইল পেতে os প্যাকেজের listdir মেথড ব্যবহার করতে হয়।

পরবর্তী লাইনে চেক করা হয় ফাইল নেমে - আছে কিনা। থাকলে, ডিরেক্টরি এবং ফাইল নাম জোড়া দিয়ে বর্তমান পথ (old_path) বের করা হয়। replace মেথড দিয়ে - কে _ দিয়ে রিপ্লেস করে নতুন ফাইল নাম তৈরি করা হয়।

তারপর old_path-এর মতোই নতুন ফাইল পথ (new_path) তৈরি করা হয়। শেষে os প্যাকেজের rename মেথড কল করা হয় পুরনো এবং নতুন ফাইল পথ আর্গুমেন্ট হিসেবে দিয়ে।

JavaScript স্ক্রিপ্ট

এবার JavaScript-এ কেমন দেখায়:

const fs = require('fs'); const path = require('path'); const directory = '/path/to/your/folder'; fs.readdir(directory, (err, files) => { if (err) { console.error('Error reading directory:', err); return; } files.forEach(file => { if (file.includes('-')) { const oldPath = path.join(directory, file); const newFilename = file.replace(/-/g, '_'); const newPath = path.join(directory, newFilename); fs.rename(oldPath, newPath, err => { if (err) { console.error(`Error renaming ${file}:`, err); } else { console.log(`Renamed: ${file} -> ${newFilename}`); } }); } }); }); 

JavaScript ইমপ্লিমেন্টেশন Python-এর সাথে কিছুটা মিলিত – কিন্তু বেশি কোড লিখতে হয়। সাধারণত ডেভেলপাররা এই ধরনের স্ক্রিপ্টের জন্য JavaScript পছন্দ করেন না। অধিকাংশ Bash/Python-এ নির্ভর করে। JavaScript ব্রাউজার-ভিত্তিক অটোমেশন স্ক্রিপ্টের জন্য আরও উপযুক্ত।

তবুও দেখি কী আছে। এই কোডে fs এবং path দুটি প্যাকেজ ব্যবহার করতে হয়। শীর্ষে ডিরেক্টরি ডিফাইন করে fs প্যাকেজের readdir মেথড দিয়ে ডিরেক্টরির ফাইলগুলো পড়া হয় এবং ডিরেক্টরি আর্গুমেন্ট হিসেবে পাস করা হয়। ডিরেক্টরির পাশাপাশি একটি কলব্যাক ফাংশনও পাস করা হয় যা ফাইলগুলো পড়া শesez এক্সিকিউট হবে।

কলব্যাক ফাংশনের ভিতরে প্রতিটি ফাইল দিয়ে লুপ করা হয় এবং চেক করা হয় ফাইল নেমে হাইফন (-) আছে কিনা। থাকলে, path প্যাকেজ দিয়ে ডিরেক্টরি এবং ফাইল নাম আর্গুমেন্ট হিসেবে দিয়ে পুরনো পথ বের করা হয়। replace মেথড দিয়ে সব হাইফন আন্ডারস্কোর দিয়ে রিপ্লেস করে নতুন ফাইল নাম তৈরি করা হয়।

পুরনো পথের মতোই নতুন ফাইল নাম আর্গুমেন্ট হিসেবে দিয়ে নতুন পথ বের করা হয়। তারপর fs প্যাকেজের rename মেথড দিয়ে পুরনো এবং নতুন ফাইল নাম পাস করে ফাইল রিনেম করা হয়। রিনেম বা ডিরেক্টরি পড়ার সময় কোনো ত্রুটি হলে এরর মেসেজ লগ করা হয়, অন্যথায় সাকসেস মেসেজ।

এই স্ক্রিপ্টগুলো কীভাবে চালাবেন

এখানে কিভাবে ব্যবহার করবেন:

  1. /path/to/your/folder কে আসল ডিরেক্টরিতে রিপ্লেস করুন যেখানে ফাইলগুলো আছে।

  2. সংশ্লিষ্ট পরিবেশে স্ক্রিপ্ট চালান:

    • Bash: .sh ফাইল হিসেবে সেভ করুন, তারপর bash script.sh দিয়ে এক্সিকিউট করুন

    • Python: .py ফাইল হিসেবে সেভ করুন, তারপর python script.py দিয়ে এক্সিকিউট করুন

    • JavaScript: .js ফাইল হিসেবে সেভ করুন, তারপর node script.js দিয়ে এক্সিকিউট করুন

নিচের স্ক্রিনশটটি Bash স্ক্রিপ্ট চালিয়ে ফাইল নামগুলো পরিবর্তন করা দেখাচ্ছে।

স্ক্রিপ্টিং শিখুন: পুনরাবৃত্ত কাজগুলি অটোমেট করে উৎপাদনশীলতা বাড়ান

স্ক্রিপ্টিং শিখুন: পুনরাবৃত্ত কাজগুলি অটোমেট করে উৎপাদনশীলতা বাড়ান

রিকারিং স্ক্রিপ্ট (আবৃত্তিমূলক স্ক্রিপ্ট)

রিকারিং স্ক্রিপ্ট নির্দিষ্টインターバল এ এক্সিকিউট হওয়ার জন্য ডিজাইন করা হয়, যেমন সিস্টেম স্ট্যাটাস সপ্তাহে একবার চেক করা, লগ পরিষ্কার করা, বা ডেটা আপডেট ফেচ করা। এই স্ক্রিপ্টগুলো সাধারণত কোনো টাস্ক স্কিডিউলার ব্যবহার করে।

সাধারণ পদ্ধতিগুলি

  1. CRON জব: অধিকাংশ অপারেটিং সিস্টেম CRON সাপোর্ট করে, যা ডিফাইনড শিডিউল অনুযায়ী স্ক্রিপ্ট ট্রিগার করতে পারে।

  2. টাস্ক কিউ: Celery (Python), Bull (Node.js), বা Sidekiq (Ruby) போன்ற টুল আরও নমনীয়তার সাথে শিডিউলড জব হ্যান্ডেল করতে পারে।

  3. ক্লাউড স্কিডিউলার: AWS Lambda with EventBridge, Google Cloud Scheduler, বা Azure Logic Apps-এর মতো সার্ভিস সার্ভারলেস আর্কিটেকচারে রিকারিং স্ক্রিপ্ট সেট আপ করতে দেয়।

রিকারিং স্ক্রিপ্টের একটি ভালো ইউজ কেস হবে আপনার সিস্টেমের ব্যবহার/পারফরম্যান্সের দৈনিক/সাপ্তাহিক রিপোর্ট ইমেইল로 পাঠানো। আপনি একটি স্ক্রিপ্ট লিখতে পারেন যা খুঁজে বের করবে কতজন ইউজার জয়েন ও সাবস্ক্রাইব করেছে এবং সেটি প্রতিদিন/সপ্তাহে ইমেইল로 পাঠাবে।

স্ক্রিপ্ট লিখার সেরা অভ্যাস

স্ক্রিপ্ট লিখার সময় নিচের বিষয়গুলো মনে রাখুন:

১. কমেন্ট ব্যবহার করুন: স্ক্রিপ্টের জটিল অংশগুলো কমেন্ট দিয়ে ব্যাখ্যা করুন।

নিচের উদাহরণে, কমেন্ট ছাড়া কেউ অতিরিক্ত সময় ব্য় করতে পারে বুঝতে যে কেন ট্যাক্স রেট দশমিক আকারে এবং পার্সেন্টেজ আকারে নয়।

# ট্যাক্সসহ মোট দাম ক্যালকুলেট করুন def calculate_price_with_tax(price, tax_rate): # ট্যাক্স রেট দশমিক হিসেবে এক্সপ্রেস করা হয়েছে (যেমন ৭% এর জন্য ০.০৭) return price + (price * tax_rate) 

২. এরর হ্যান্ডলিং: সম্ভাব্য ত্রুটি সংবর্ধন করে গ্রেসফুলি হ্যান্ডল করুন।

নিচের উদাহরণে, ফাইল না থাকলে স্ক্রিপ্ট ক্র্যাশ করবে না – বরং একটি সহায়ক এরর মেসেজ দেখাবে।

try: with open('data.csv', 'r') as file: data = file.readlines() except FileNotFoundError: print("Error: 'data.csv' file not found. Make sure the file exists before running the script.") except Exception as e: print(f"An unexpected error occurred: {e}") 

৩. মডুলার ডিজাইন: স্ক্রিপ্টকে পুনঃব্যবহারযোগ্য ফাংশন বা মডিউলে ভাগ করুন।

নিচের উদাহরণে, ফাংশনালিটি ছোট, পুনঃব্যবহারযোগ্য ফাংশনে ভাগ করে স্ক্রিপ্টের অংশগুলো স্বাধীনভাবে ডিবাগ বা পুনঃব্যবহার করা যায়।

def fetch_data_from_api(api_url): # দেওয়া API থেকে ডেটা ফেচ করুন pass def process_data(data): # ডেটা প্রসেস করে প্রয়োজনীয় ফরম্যাটে আনুন pass def save_to_file(data, filename): # প্রসেসড ডেটা ফাইলে সেভ করুন pass # মেইন স্ক্রিপ্ট if __name__ == "__main__": data = fetch_data_from_api("https://example.com/api") processed_data = process_data(data) save_to_file(processed_data, "output.json") 

৪. ইনপুট ভ্যালিডেশন: ইউজার ইনপুট ভ্যালিডেট করুন অপ্রত্যাশিত ত্রুটি বা নিরাপত্তা ঝুঁকি রোধ করতে।

ভ্যালিডেশন ছাড়া কেউ অবৈধ বা ম্যালিশাস ডেটা ইনপুট দিতে পারে (উদাহরণস্বরূপ, নির্দিষ্ট পরিস্থিতিতে SQL ইনজেকশন স্ট্রিং)।

import re # ইনপুট ভ্যালিড ইমেইল ঠিকানা কিনা তা যাচাই করুন def validate_email(email): pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' if not re.match(pattern, email): raise ValueError("Invalid email address format") return email # উদাহরণ ব্যবহার try: user_email = validate_email(input("Enter your email: ")) print(f"Valid email: {user_email}") except ValueError as e: print(e) 

৫. ভার্সন কন্ট্রোল: Git বা অন্য ভার্সন কন্ট্রোল টুল ব্যবহার করুন পরিবর্তন ট্র্যাক করতে।

যদি কোনো পরিবর্তন স্ক্রিপ্ট ভাঙে, আপনি সহজে git checkout দিয়ে পূর্বের কমিটে ফিরে যেতে পারেন। প্লাস, টিম মেম্বারদের সাথে স্মুথলি কলাবরেট করতে পারেন।

git init git add script.py git commit -m "Initial commit" 

উপসংহার

স্ক্রিপ্ট লিখা একটি দক্ষতা যা আপনার উৎপাদনশীলতা এবং সমস্যা সমাধানের ক্ষমতা উল্লেখযোগ্যভাবে বাড়াতে পারে। Bash, Python, এবং JavaScript-এর মতো স্ক্রিপ্টিং ভাষার বেসিক বুঝলে আপনি কাজ অটোমেট করতে, ওয়ার্কফ্লো স্ট্রিমলাইন করতে এবং মূল্যবান সময় বাঁচাতে পারবেন। ছোট থেকে শুরু করুন, ধাপে ধাপে বিল্ড আপ করুন, এবং বিভিন্ন ইউজ কেসের জন্য স্ক্রিপ্ট লিখে প্র্যাকটিস করুন এই অমূল্য দক্ষতায় পারদর্শী होने के लिए।

আমার কাছে আপনার জন্য একটি এক্সারসাইজ আছে। এই উদাহরণ স্ক্রিপ্ট রান ও ভেরিফাই করতে আপনি ভাবতে পারেন ১০০টি ফাইল ম্যানুয়ালি তৈরি করতে হবে। এতে অনেক সময় লাগবে।

আমি সেই ১০০টি ফাইল জেনারেট করার জন্য একটি স্ক্রিপ্ট লিখেছি। আমি পরামর্শ দেব আপনিও চেষ্টা করুন হাইফনযুক্ত ১০০টি ফাইল জেনারেট করার একটি স্ক্রিপ্ট লিখতে। তারপর উদাহরণ স্ক্রিপ্টটি চালিয়ে হাইফনগুলো আন্ডারস্কোরে কনভার্ট করুন।

এটি শুনতে কঠিন লাগতে পারে, কিন্তু বিশ্বাস করুন Bash-এ মাত্র ৫ লাইন কোডে ১০০টি ফাইল জেনারেট করা যায়। শুধু ১০০ নয় – আপনি মিলিয়ন/বিলিয়ন/ট্রিলিয়ন ফাইলও মাত্র ৫ লাইন কোডে জেনারেট করতে পারেন।

যদি স্ক্রিপ্ট সম্পর্কে আরও জানতে চান, আমার ইমেইল নিউজলেটার সাবস্ক্রাইব করুন (https://5minslearn.gogosoon.com/) এবং সোশ্যাল মিডিয়ায় ফলো করুন।

শুভ স্ক্রিপ্টিং!

নিঃশুল্ক কোডিং শিখুন। freeCodeCamp-এর ওপেন সোর্স কারিকুলাম ৪০,০০০-এর বেশি লোককে ডেভেলপার হিসেবে চাকরি পেতে সাহায্য করেছে। শুরু করুন।

  1. পাইথনে ইনঅর্ডার এবং পোস্টঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি কনস্ট্রাক্ট করা

  2. সি প্রোগ্রামিং-এ read() সিস্টেম কল দক্ষতা অর্জন: একটি جامع গাইড

  3. CSS3-এ HSL রং মান

  4. HTML DOM Anchor অবজেক্ট: হাইপারলিংক নিয়ন্ত্রণ