সরাসরি প্রধান সামগ্রীতে চলে যান

Rust-এ মডিউল, স্কোপ এবং প্রাইভেসি কন্ট্রোল করার সহজ নিয়ম

ইন্ট্রোডাকশন: এই ভিডিওতে মূলত Rust প্রোগ্রামিং ল্যাঙ্গুয়েজের "মডিউল সিস্টেম" নিয়ে আলোচনা করা হয়েছে। বড় বড় প্রোজেক্টে যখন হাজার হাজার লাইন কোড থাকে, তখন সেগুলোকে আলাদা আলাদা ফাইল বা ফোল্ডারে গুছিয়ে রাখা এবং কোন কোডটি বাইরের মানুষ দেখতে পারবে বা পারবে না (Privacy) তা নিয়ন্ত্রণ করা শিখিয়েছেন পীযূষ গর্গ। এটি মূলত Rust Book-এর একটি চ্যাপ্টারের সহজ ব্যাখ্যা।


মডিউল চিট শিট (Module Cheat Sheet)

ভিডিও রেফারেন্স: [00:21]

মডিউল সিস্টেম বোঝার জন্য কিছু বেসিক রুলস আছে যা শুরুতে জেনে নেওয়া ভালো:

  • Crate Root: যখন আমরা কোড কম্পাইল করি, Rust প্রথমে src/main.rs (বাইনারি ক্রেটের জন্য) অথবা src/lib.rs (লাইব্রেরি ক্রেটের জন্য) ফাইলে খোঁজে।

  • Declaring Modules: কোডের ভেতর mod garden; লিখলে Rust বুঝে নেয় যে garden নামে একটি মডিউল আছে। এটি হয় ওই ফাইলের ভেতরেই থাকতে হবে অথবা garden.rs নামে আলাদা ফাইলে থাকতে হবে।

  • Sub-modules: মডিউলের ভেতর আরও মডিউল থাকতে পারে। যেমন বাগানের ভেতর সবজি (mod vegetables;) থাকতে পারে।

সহজ ভাষায় ব্যাখ্যা: মডিউল হলো একটি ড্রয়ারের মতো। আপনি আপনার জামাকাপড় যেমন আলাদা আলাদা ড্রয়ারে রাখেন, তেমনি কোডগুলোও মডিউলের ভেতর সাজিয়ে রাখা হয়।


পাবলিক বনাম প্রাইভেট (Public vs Private)

ভিডিও রেফারেন্স: [04:16]

Rust-এ ডিফল্টভাবে সবকিছু Private থাকে। এর মানে হলো, এক মডিউলের কোড অন্য মডিউল থেকে সরাসরি দেখা যায় না।

  • pub keyword: কোনো ফাংশন, স্ট্রাক্ট (Struct) বা মডিউলকে যদি আপনি বাইরে থেকে ব্যবহার করতে দিতে চান, তবে তার আগে pub লিখতে হয়।

কঠিন শব্দ:

  • Privacy: কোড লুকিয়ে রাখা বা কার কাছে অ্যাক্সেস থাকবে তা ঠিক করা।

  • Encapsulation: ভেতরের কাজ বাইরে থেকে আড়াল করে শুধু দরকারি অংশটুকু দেখানো।


পাথ বা রাস্তার ব্যবহার (Paths in Module Tree)

ভিডিও রেফারেন্স: [12:36]

মডিউলের ভেতরের কোনো ফাংশনকে কল করতে হলে আমাদের "পাথ" ব্যবহার করতে হয়। এটি দুই ধরণের:

  1. Absolute Path: একদম শুরু (crate) থেকে শুরু হয়। যেমন: crate::front_of_house::hosting::add_to_waitlist().

  2. Relative Path: বর্তমানে আপনি যেখানে আছেন সেখান থেকে শুরু হয়। যেমন: super::serving::take_order().

আমার চিন্তা: এটি অনেকটা কম্পিউটারের ফাইল ফোল্ডারের মতো। আপনি যেমন C:/Users/Documents/file.txt লিখেন, Rust-এও তেমনি কোডের ঠিকানায় যেতে হয়।


Use কিওয়ার্ডের জাদু

ভিডিও রেফারেন্স: [25:24]

বারবার বড় বড় পাথ লেখা অনেক বিরক্তিকর। এই সমস্যার সমাধান হলো use কিওয়ার্ড।

  • এটি ব্যবহার করে আপনি কোনো মডিউল বা ফাংশনকে শর্টকাট হিসেবে আপনার স্কোপে নিয়ে আসতে পারেন।

Rust

// বারবার crate::front_of_house::hosting লিখতে হবে না
use crate::front_of_house::hosting;

fn main() {
    hosting::add_to_waitlist(); // এখন সরাসরি ব্যবহার করা যাচ্ছে
} 

এই কোড থেকে আমরা কী পেলাম? এই কোডটি আমাদের কাজের সময় বাঁচায় এবং কোডকে পরিষ্কার রাখে। বড় বড় অ্যাড্রেস বারবার লিখতে হয় না।


স্ট্রাক্ট এবং ইনাম-এর প্রাইভেসি (Struct & Enum Privacy)

ভিডিও রেফারেন্স: [21:46]

  • Struct: যদি কোনো স্ট্রাক্টকে pub করা হয়, তার ভেতরের ফিল্ডগুলো তবুও প্রাইভেট থাকে। প্রত্যেকটি ফিল্ডকে আলাদাভাবে pub করতে হয়।

  • Enum: ইনামকে pub করলে এর ভেতরের সব অপশন (Variants) অটোমেটিক পাবলিক হয়ে যায়।

কোডিং উদাহরণ:

Rust

mod back_of_house {
    pub struct Breakfast {
        pub toast: String, // এটি পাবলিক
        seasonal_fruit: String, // এটি প্রাইভেট
    }

    impl Breakfast {
        pub fn summer(toast: &str) -> Breakfast {
            Breakfast {
                toast: String::from(toast),
                seasonal_fruit: String::from("peaches"),
            }
        }
    }
} 

ব্যাখ্যা: এখানে আপনি ব্রেকফাস্টের 'টোস্ট' কী হবে তা বাইরে থেকে ঠিক করতে পারবেন, কিন্তু 'ফল' কী দেওয়া হবে তা শুধু হোটেলের ভেতরের লোক (মডিউল) ঠিক করতে পারবে।


অ্যানালাইসিস ও আমার মতামত

বিশ্লেষণ: কন্টেন্ট ক্রিয়েটর এখানে বোঝাতে চেয়েছেন যে Rust-এ কোড গুছিয়ে রাখা এবং সিকিউরিটি (Privacy) কতটা গুরুত্বপূর্ণ। বিশেষ করে pub কীওয়ার্ডের সঠিক ব্যবহার না জানলে কোড রান করা কঠিন হয়ে পড়ে।

বাস্তবতার নিরিখে পারসেপশন: শুরুতে এই মডিউল সিস্টেম এবং পাথ (crate, super, self) একটু গোলমেলে মনে হতে পারে, কারণ এটি জাভা বা পাইথনের চেয়ে কিছুটা আলাদা। তবে একবার বুঝে গেলে এটি কোডকে অনেক বেশি সুরক্ষিত করে।

পরামর্শ: ১. যেকোনো প্রোজেক্ট শুরু করার সময় শুরুতেই lib.rs এবং main.rs-কে আলাদা করে ফেলার অভ্যাস করুন। ২. সরাসরি সব ফাইল এক ফোল্ডারে না রেখে ছোট ছোট মডিউলে ভাগ করুন। ৩. কোড প্র্যাকটিস করার সময় cargo modules টুলটি ব্যবহার করে দেখতে পারেন আপনার মডিউল ট্রি ঠিক আছে কি না।

বিকল্প ব্যবস্থা: আপনি যদি খুব ছোট স্ক্রিপ্ট লেখেন, তবে মডিউল নিয়ে মাথা না ঘামালেও চলে। কিন্তু যখনই প্রোজেক্টটি বড় হবে, তখন মডিউল ছাড়া কোড মেইনটেইন করা অসম্ভব হয়ে পড়বে।

লিঙ্ক- https://www.youtube.com/watch?v=-CkD-mNVVws

[

Defining Modules to Control Scope and Privacy | Rust Book

Piyush Garg · 3.4K views

](http://www.youtube.com/watch?v=-CkD-mNVVws)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...