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

স্প্রিং বুট ব্যবহার করে কুইজ অ্যাপ তৈরি: পার্ট ৩ (মাইক্রোসার্ভিসেস)

ভূমিকা (Introduction)

এই ভিডিওতে আমরা একটি কুইজ অ্যাপ্লিকেশন তৈরির পরবর্তী ধাপগুলো শিখব। মূলত এখানে দেখানো হয়েছে কীভাবে ডাটাবেস থেকে নির্দিষ্ট ক্যাটাগরি (যেমন: Java, Python) অনুযায়ী প্রশ্ন খুঁজে বের করা যায় এবং কীভাবে নতুন প্রশ্ন সিস্টেমে যোগ (Add) করা যায়। এটি একটি Microservices Tutorial সিরিজের অংশ, যেখানে Spring Boot এবং Spring Data JPA ব্যবহার করে ব্যাকএন্ডের কাজগুলো সহজ করা হয়েছে।


পার্ট ১: ক্যাটাগরি অনুযায়ী প্রশ্ন খোঁজা (Fetching Questions by Category)

আগের পর্বে আমরা সব প্রশ্ন একসাথে আনা শিখেছিলাম। কিন্তু বাস্তবে আমাদের হয়তো শুধু 'Java' বা 'Python'-এর প্রশ্ন দরকার হতে পারে।

রেফারেন্স: ভিডিওর শুরু থেকে ০৫:৫০ পর্যন্ত দেখুন

বিস্তারিত আলোচনা: ১. Controller-এ পরিবর্তন: আমরা একটি নতুন মেথড তৈরি করি যা ইউজার থেকে একটি 'Category' ইনপুট নেবে। ২. Path Variable: ব্রাউজারের লিঙ্কে (URL) যখন আমরা কোনো মান পাঠাই (যেমন: /question/category/java), তখন সেই 'java' শব্দটিকে কোডে ধরার জন্য @PathVariable অ্যানোটেশন ব্যবহার করা হয়। ৩. JPA Magic: মজার ব্যাপার হলো, আমাদের ডাটাবেসের জন্য কোনো কঠিন কুয়েরি (Query) লিখতে হয়নি। QuestionDao ইন্টারফেসে শুধু findByCategory নামে একটি মেথড লিখলেই Spring Data JPA নিজে থেকেই বুঝে নেয় যে তাকে 'category' কলামে সার্চ করতে হবে।

সহজ ব্যাখ্যা: * Path Variable: এটি একটি ঠিকানার মতো। মনে করুন আপনি একটি লাইব্রেরিতে গিয়ে বললেন "আমাকে বিজ্ঞানের বই দিন"। এখানে 'বিজ্ঞান' হলো পাথ ভেরিয়েবল।


পার্ট ২: নতুন প্রশ্ন যোগ করা (Adding a New Question)

সিস্টেমে নতুন প্রশ্ন ইনপুট দেওয়ার জন্য আমাদের একটি 'POST' রিকোয়েস্ট তৈরি করতে হবে।

রেফারেন্স: ভিডিওর ০৬:৫০ থেকে ১৫:২০ পর্যন্ত দেখুন

বিস্তারিত আলোচনা: ১. POST Mapping: ডাটাবেসে নতুন কিছু সেভ করার জন্য আমরা @PostMapping ব্যবহার করি। ২. Request Body: যখন ক্লায়েন্ট (যেমন মোবাইল অ্যাপ বা ব্রাউজার) থেকে কোনো ডাটা পাঠানো হয়, তখন সেটি JSON ফরম্যাটে থাকে। এই JSON ডাটাকে জাভা অবজেক্টে রূপান্তর করতে @RequestBody ব্যবহার করা হয়। ৩. Service & DAO: কন্ট্রোলার থেকে ডাটা সার্ভিসে যায়, আর সার্ভিস থেকে questionDao.save(question) মেথড কল করে ডাটাবেসে সেভ করা হয়।

সহজ ব্যাখ্যা:

  • JSON: এটি ডাটা আদান-প্রদানের একটি সহজ ভাষা। অনেকটা লিস্টের মতো যেখানে নাম এবং তার মান লেখা থাকে (যেমন: "question": "What is Java?").

কোডিং সেকশন (Coding Snippet)

নিচে ক্যাটাগরি অনুযায়ী প্রশ্ন খোঁজার জন্য কন্ট্রোলারের একটি সহজ উদাহরণ দেওয়া হলো:

Java

// Controller-এর কোড
@GetMapping("category/{category}")
public ResponseEntity<List<Question>> getQuestionsByCategory(@PathVariable String category) {
    // সার্ভিসকে বলা হচ্ছে নির্দিষ্ট ক্যাটাগরির প্রশ্ন দিতে
    return questionService.getQuestionsByCategory(category);
} 

এই কোড দিয়ে আমরা কী পেলাম? এই কোডটি যখনই ব্রাউজারে /question/category/java লিখে সার্চ করা হবে, তখনই ডাটাবেস থেকে শুধু জাভার প্রশ্নগুলো খুঁজে এনে ইউজারের সামনে সুন্দরভাবে সাজিয়ে দেবে।


কঠিন শব্দের সহজ ব্যাখ্যা

১. Annotation (অ্যানোটেশন): এটি জাভাতে @ চিহ্ন দিয়ে শুরু হয়। এটি স্প্রিং বুটকে বলে দেয় যে কোনো একটি ক্লাস বা মেথড কী কাজ করবে। যেমন: @GetMapping মানে এটি ডাটা পড়ার কাজ করবে। ২. JPA (Java Persistence API): এটি একটি টুল যা আমাদের ডাটাবেসের সাথে কথা বলতে সাহায্য করে। আমাদের নিজের হাতে SQL কুয়েরি লিখতে হয় না, এটি নিজেই সব করে দেয়। ৩. Postman: এটি একটি সফটওয়্যার যা দিয়ে আমরা আমাদের তৈরি করা API গুলো চেক করে দেখতে পারি যে সেগুলো ঠিকঠাক কাজ করছে কি না।


বিশ্লেষণ ও বাস্তব ধারণা (Analysis & Thinking)

সৃষ্টিকর্তার উদ্দেশ্য: এই ভিডিওর মাধ্যমে ইন্সট্রাকটর বোঝাতে চেয়েছেন যে, স্প্রিং বুট ব্যবহার করলে ব্যাকএন্ড ডেভেলপমেন্ট কতটা দ্রুত এবং সহজ হতে পারে। বিশেষ করে 'Convention over Configuration' (অর্থাৎ নির্দিষ্ট নিয়ম মেনে চললে কনফিগারেশন কম করতে হয়) বিষয়টি এখানে স্পষ্ট।

বাস্তব প্রেক্ষাপট ও আমার চিন্তা: বাস্তবে যখন আপনি একটি বড় কুইজ অ্যাপ বানাবেন, তখন শুধু ডাটা যোগ বা দেখলেই হবে না। আপনাকে 'Error Handling' বা ভুল হলে কী হবে সেটা নিয়েও ভাবতে হবে। যেমন: যদি কেউ এমন ক্যাটাগরি সার্চ করে যা ডাটাবেসে নেই, তবে যেন একটি সুন্দর মেসেজ দেখায় (যেমন: "No questions found")।

বিকল্প ও পরামর্শ:

  • ভাল বিকল্প: ডাটাবেসে ডাটা যোগ করার সময় সরাসরি ID না দিয়ে 'Auto-increment' বা 'Identity' ব্যবহার করা উচিত, যা ভিডিওতে দেখানো হয়েছে। এতে ডুপ্লিকেট ID হওয়ার ভয় থাকে না।

  • পরামর্শ: আপনি চাইলে আরও দুটি ফিচার যোগ করতে পারেন—Update (পুরানো প্রশ্ন ঠিক করা) এবং Delete (ভুল প্রশ্ন মুছে ফেলা)। স্প্রিং বুটে এগুলো করাও প্রায় একই রকম সহজ।

পরবর্তী পদক্ষেপ: আগামী পর্বে 'Exception Handling' বা ত্রুটি মোকাবিলা করার উপায় নিয়ে কাজ করা হবে, যা একটি প্রফেশনাল অ্যাপের জন্য খুবই জরুরি।

[

Quiz App Using Spring Boot #3 | Microservices Tutorial

Telusko · 42K views

](http://www.youtube.com/watch?v=aoAdMc7-XBQ)

মন্তব্যসমূহ

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

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

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

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

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

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

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