1. ভূমিকা
এই ল্যাবে, আপনি একটি বিদ্যমান পাইথন ওয়েব অ্যাপ্লিকেশনে পরীক্ষা যোগ করতে এবং পরীক্ষাগুলির মাধ্যমে প্রকাশিত অ্যাপ্লিকেশনটিতে ত্রুটিগুলি খুঁজে বের করতে এবং সংশোধন করতে গুগল ক্লাউডে একটি AI-চালিত সহযোগী জেমিনি কোড অ্যাসিস্ট ব্যবহার করবেন। এরপর আপনি নতুন কার্যকারিতার জন্য পরীক্ষা তৈরি করতে এবং সেই পরীক্ষাগুলি পাস করার জন্য কোড তৈরি করতে এবং অ্যাপটি প্রসারিত করতে কোড অ্যাসিস্ট ব্যবহার করবেন।
তুমি যা করবে...
- আপনি একটি বিদ্যমান ওয়েব অ্যাপ্লিকেশনের কোড ডাউনলোড করতে ক্লাউড শেল এডিটর ব্যবহার করবেন।
- গুগল ক্লাউড সম্পর্কে সাধারণ প্রশ্ন জিজ্ঞাসা করার জন্য আপনি ক্লাউড শেল এডিটরে জেমিনি কোড অ্যাসিস্ট চ্যাট ব্যবহার করবেন।
- আপনি অ্যাপ্লিকেশনটির জন্য পরীক্ষা তৈরি করতে, পরীক্ষাগুলি চালাতে, ত্রুটিগুলি খুঁজে বের করতে এবং সংশোধন করতে এবং তারপরে অ্যাপ্লিকেশনটির কার্যকারিতা প্রসারিত করতে ক্লাউড শেল এডিটরে জেমিনি কোড অ্যাসিস্ট ইনলাইন কোড সহায়তা ব্যবহার করবেন।
তুমি যা শিখবে...
- টেস্ট জেনারেশন এবং কোড জেনারেশনের মতো বেশ কয়েকটি ডেভেলপার কাজের জন্য জেমিনি কোড অ্যাসিস্ট কীভাবে ব্যবহার করবেন।
- গুগল ক্লাউড সম্পর্কে জানতে জেমিনি কোড অ্যাসিস্ট কীভাবে ব্যবহার করবেন।
তোমার যা লাগবে...
- ক্রোম ওয়েব ব্রাউজার
- একটি জিমেইল অ্যাকাউন্ট
- বিলিং সক্ষম করা একটি ক্লাউড প্রকল্প
- আপনার ক্লাউড প্রজেক্টের জন্য জেমিনি কোড অ্যাসিস্ট সক্ষম করা হয়েছে
এই ল্যাবটি সকল স্তরের ডেভেলপারদের জন্য তৈরি, যার মধ্যে নতুনরাও অন্তর্ভুক্ত। যদিও নমুনা অ্যাপ্লিকেশনটি পাইথন ভাষায়, তবে কী ঘটছে তা বোঝার জন্য আপনাকে পাইথন প্রোগ্রামিং সম্পর্কে জানতে হবে না। আমাদের লক্ষ্য হবে ডেভেলপারদের জন্য জেমিনি কোড অ্যাসিস্টের ক্ষমতার সাথে পরিচিত হওয়া।
2. সেটআপ
এই ল্যাবের জন্য ব্যবহারের জন্য আপনার কাছে ইতিমধ্যেই একটি ক্লাউড প্রজেক্ট থাকা উচিত যার বিলিং সক্ষম করা আছে। আমরা এখন আমাদের গুগল ক্লাউড প্রজেক্টে জেমিনি এপিআই সক্ষম করব। নীচের ধাপগুলি অনুসরণ করুন:
- https://console.cloud.google.com এ যান এবং নিশ্চিত করুন যে আপনি এই ল্যাবের জন্য যে Google Cloud Project এর সাথে কাজ করার পরিকল্পনা করছেন সেটি নির্বাচন করেছেন। উপরের ডানদিকে আপনি যে Gemini আইকনটি দেখতে পাচ্ছেন তাতে ক্লিক করুন।

- কনসোলের ডানদিকে Gemini for Cloud কনসোল উইন্ডোটি খুলবে। নিচে দেখানো Enable বোতামে ক্লিক করুন। যদি আপনি Enable বোতামটি দেখতে না পান এবং পরিবর্তে একটি Chat ইন্টারফেস দেখতে পান, তাহলে আপনি ইতিমধ্যেই প্রকল্পের জন্য Gemini for Cloud সক্ষম করেছেন এবং আপনি সরাসরি পরবর্তী ধাপে যেতে পারেন।

- একবার এটি সক্রিয় হয়ে গেলে, আপনি জেমিনিকে একটি বা দুটি প্রশ্ন জিজ্ঞাসা করে পরীক্ষা করতে পারেন। কয়েকটি নমুনা প্রশ্ন দেখানো হয়েছে তবে আপনি ক্লাউড রান কী? এর মতো কিছু চেষ্টা করে দেখতে পারেন।

কোড অ্যাসিস্ট আপনার প্রশ্নের উত্তর দেবে। আপনি ক্লিক করতে পারেন
কোড অ্যাসিস্ট চ্যাট উইন্ডোটি বন্ধ করতে উপরের ডানদিকের কোণায় আইকনটি ক্লিক করুন।
ক্লাউড শেল এডিটরে জেমিনি সক্ষম করুন
জেমিনি কোড অ্যাসিস্ট পাওয়া যায় এবং বেশ কয়েকটি জনপ্রিয় IDE তে একই রকম আচরণ করে। এই কোডল্যাবে আপনি Google Cloud Shell Editor ব্যবহার করবেন, যা সম্পূর্ণরূপে আপনার ওয়েব ব্রাউজারে চলে। আপনাকে Cloud Shell Editor এ জেমিনি সক্ষম এবং কনফিগার করতে হবে এবং ধাপগুলি নীচে দেওয়া হল:
- নিচে দেখানো আইকনটি ব্যবহার করে ক্লাউড শেল চালু করুন। ক্লাউড শেল ইনস্ট্যান্স শুরু করতে এক বা দুই মিনিট সময় লাগতে পারে।

- এডিটর অথবা ওপেন এডিটর বোতামে ক্লিক করুন (যেভাবে প্রযোজ্য) এবং ক্লাউড শেল এডিটর প্রদর্শিত না হওয়া পর্যন্ত অপেক্ষা করুন। যদি আপনি "নতুন সম্পাদক চেষ্টা করুন" বোতামটি দেখতে পান, তাহলে সেখানে ক্লিক করুন।

- নীচের স্ট্যাটাস বারে দেখানো ক্লাউড কোড - সাইন ইন বোতামে ক্লিক করুন। নির্দেশ অনুসারে প্লাগইনটি অনুমোদন করুন। যদি আপনি স্ট্যাটাস বারে "ক্লাউড কোড - কোনও প্রকল্প নয়" দেখতে পান, তাহলে সেটি নির্বাচন করুন এবং তারপরে আপনি যে প্রকল্পগুলির সাথে কাজ করার পরিকল্পনা করছেন তার তালিকা থেকে নির্দিষ্ট গুগল ক্লাউড প্রকল্পটি নির্বাচন করুন।

- যদি আপনি ডানদিকের নীচের স্ট্যাটাস বারে জেমিনি আইকনটি দেখতে না পান, তাহলে আপনাকে ক্লাউড কোডে এটি সক্ষম করতে হবে। এটি করার আগে নিশ্চিত করুন যে জেমিনি (পূর্বে ডেভেলপারদের জন্য ডুয়েট এআই নামে পরিচিত) IDE তে সক্রিয় আছে , ক্লাউড কোড এক্সটেনশন → সেটিংসে যান এবং তারপরে নীচে দেখানো হিসাবে Duet AI: সক্ষম করুন লেখাটি লিখুন। নিশ্চিত করুন যে চেকবক্সটি নির্বাচন করা হয়েছে। আপনার IDE পুনরায় লোড করা উচিত। এটি ক্লাউড কোডে জেমিনি সক্ষম করে এবং জেমিনি স্ট্যাটাস বার আপনার IDE তে প্রদর্শিত হবে।

- নীচের ডান কোণে দেখানো Gemini বোতামে ক্লিক করুন এবং সঠিক Google Cloud প্রকল্পটি নির্বাচন করুন যার জন্য আমরা Cloud AI Companion API সক্ষম করেছি।

- একবার আপনি আপনার গুগল ক্লাউড প্রজেক্টটি নির্বাচন করলে, নিশ্চিত করুন যে আপনি স্ট্যাটাস বারে ক্লাউড কোড স্ট্যাটাস মেসেজে এটি দেখতে পাচ্ছেন এবং নীচে দেখানো স্ট্যাটাস বারে ডানদিকে জেমিনি সক্ষম করা আছে কিনা:

জেমিনি কোড অ্যাসিস্ট ব্যবহারের জন্য প্রস্তুত!
৩. অ্যাপ্লিকেশনটি ডাউনলোড করে পরীক্ষা করুন
টার্মিনাল উইন্ডোতে, প্রারম্ভিক কোড সহ রিপোজিটরি ক্লোন করার জন্য কমান্ডটি চালান এবং তারপর নতুন ডিরেক্টরিতে পরিবর্তন করুন (যদি টার্মিনাল উইন্ডোটি আর খোলা না থাকে, তাহলে এটি পুনরুদ্ধার করতে টার্মিনাল বা ওপেন টার্মিনাল বোতামে ক্লিক করুন):
git clone https://github.com/GoogleCloudPlatform/testing-with-duet-ai-codelab.git
cd testing-with-duet-ai-codelab
এডিটরে main.py খুলুন, তারপর এডিটরের বাম দিকে থাকা জেমিনি চ্যাট আইকনে ক্লিক করে জেমিনি চ্যাট উইন্ডোটি খুলুন। এই জেমিনি চ্যাট উইন্ডোটি IDE-এর মধ্যে রয়েছে এবং আলোচনার জন্য প্রসঙ্গ হিসাবে IDE-তে কোডটি উপলব্ধ রয়েছে। প্রম্পটটি প্রবেশ করান এটি ব্যাখ্যা করুন এবং উত্তরটি দেখুন:

সম্পূর্ণ উত্তরটি দেখতে আপনি এই চ্যাট উইন্ডোটি স্ক্রোল করতে পারেন। ব্যাখ্যায় বলা হয়েছে যে আমরা টার্মিনাল উইন্ডোতে python3 main.py কমান্ড দিয়ে স্থানীয়ভাবে এই প্রোগ্রামটি চালাতে পারি।
৪. স্থানীয়ভাবে চালান
প্রয়োজনে cd ~/testing-with-duet-ai-codelab দিয়ে রিপোজিটরি ডিরেক্টরিতে পরিবর্তন করুন এবং টার্মিনাল উইন্ডোতে python3 main.py কমান্ডটি লিখুন:

অ্যাপ্লিকেশনের হোম পেজে একটি নতুন ব্রাউজার ট্যাব খুলতে http://127.0.0.1:8080 লিঙ্কটিতে ক্লিক করুন:

অ্যাপ্লিকেশনটি "স্থানীয়ভাবে" চলছে। আসলে, ক্লাউড শেল এডিটর এখানে কিছুটা জাদু করেছে। অ্যাপ্লিকেশনটি আপনার নিজের কম্পিউটারে নয়, ক্লাউড শেলে চলছে। আপনি যখন লিঙ্কটিতে ক্লিক করেন, তখন এটি একটি ট্যাব খুলে যা প্রকৃত স্থানীয় ঠিকানা http://127.0.0.1:8080 তে নয়, বরং ক্লাউড শেল দ্বারা এই উদ্দেশ্যে সেট করা একটি প্রক্সি সার্ভারে। এর প্রভাব একই রকম যদি আপনি এটি সত্যিই স্থানীয়ভাবে চালাচ্ছেন।
চেষ্টা করে দেখুন। ২৫ লিখুন এবং Convert! টিপুন।

ঠিকই ধরেছেন, রোমান সংখ্যায় ২৫ হল XXV! তোমার এখানেই শেষ।
হয়তো আরও কয়েকটা সংখ্যা পরীক্ষা করে দেখুন। ২৫ কাজ করেছে, ২৪ এর কী হবে?

হয়তো আমরা একটু তাড়াহুড়ো করে ভেবেছিলাম সবকিছু ঠিক আছে। XXIIII কি 24 এর জন্য সঠিক রূপান্তর? এটা কি XXIV হওয়া উচিত নয়?
একটা যুক্তি দেওয়া যেতে পারে যে XXIIII সঠিক, কিন্তু মানুষ সাধারণত যা আশা করে তা আসলে তা নয়। যেহেতু এটি আসলে ভুল নয় (লক্ষ্য করুন যে অনেক ঘড়িতে রোমান সংখ্যা IIII হিসেবে 4 দেখানো হয়), তাই ভবিষ্যতের বর্ধনের জন্য এই সমস্যাটি ছেড়ে দেওয়া হয়।
ঋণাত্মক সংখ্যা চেষ্টা করলে কেমন হয়? শূন্য? রোমান সংখ্যায় এই সংখ্যাগুলিকে উপস্থাপন করার কোনও উপায় নেই। ব্যবহারকারীর কাছে কিছুই ফিরে আসে না, যা দেখে মনে হচ্ছে কোনও ত্রুটির সমাধান করা প্রয়োজন।
পরীক্ষা ত্রুটি খুঁজে বের করতে এবং দূর করতে সাহায্য করতে পারে, এবং জেমিনি কোড অ্যাসিস্ট আমাদের পরীক্ষা লিখতে এবং ব্যবহার করতে সাহায্য করতে পারে।
৫. পরীক্ষা যোগ করা
জেমিনি চ্যাট উইন্ডোতে ফিরে যান এবং জিজ্ঞাসা করুন
How can I test the number_to_roman function?
উত্তরটি পড়ুন, যার মধ্যে ইউনিটেস্ট মডিউল এবং পাইটেস্ট মডিউল নিয়ে আলোচনা অন্তর্ভুক্ত থাকা উচিত।
তুমি হয়তো জেমিনি কোড অ্যাসিস্টকে এই পরীক্ষাগুলো লিখতে দিতে চাইবে। calendar.py খুলো, যেখানে আসল রূপান্তর কোডটি আছে, এডিটরে, জেমিনি চ্যাট উইন্ডোতে ফিরে যাও, এবং আবার জিজ্ঞাসা করো
How can I test the number_to_roman function?
প্রতিক্রিয়াটি এখন আরও সুনির্দিষ্ট, এমনকি একটি ইউনিটটেস্ট মডিউলও অন্তর্ভুক্ত যা আপনি একটি নতুন ফাইলে অনুলিপি বা ইনজেক্ট করতে পারেন:
import unittest
import calendar
class NumberToRomanTest(unittest.TestCase):
def test_convert_1(self):
self.assertEqual(calendar.number_to_roman(1), "I")
def test_convert_4(self):
self.assertEqual(calendar.number_to_roman(4), "IV")
def test_convert_9(self):
self.assertEqual(calendar.number_to_roman(9), "IX")
def test_convert_40(self):
self.assertEqual(calendar.number_to_roman(40), "XL")
def test_convert_90(self):
self.assertEqual(calendar.number_to_roman(90), "XC")
def test_convert_400(self):
self.assertEqual(calendar.number_to_roman(400), "CD")
def test_convert_900(self):
self.assertEqual(calendar.number_to_roman(900), "CM")
def test_convert_1990(self):
self.assertEqual(calendar.number_to_roman(1990), "MCMXC")
def test_convert_2023(self):
self.assertEqual(calendar.number_to_roman(2023), "MMXXIII")
উপরের উদাহরণ থেকে আপনি ভিন্ন কোড দেখতে পারেন। জেমিনি কোড অ্যাসিস্টের অন্তর্নিহিত মডেলগুলি সময়ে সময়ে আপডেট করা হয়, তাই উত্তরগুলি সবসময় একই থাকে না। যদি আপনি কোডের একটি ভিন্ন সেট দেখতে পান, তাহলে আপনি এখন এখানে দেখানো কোডটি অনুলিপি করে এই কোডল্যাবে দেখানো নমুনাগুলি ব্যবহার করে চালিয়ে যেতে চান কিনা তা বেছে নিতে পারেন, অথবা আপনি জেমিনি কোড অ্যাসিস্টের দেওয়া বিকল্প উত্তরটি চেষ্টা করে দেখতে পারেন। যদি আপনার সময় থাকে, তাহলে আপনি উভয় পথই চেষ্টা করে দেখতে পারেন। জেমিনি কোড অ্যাসিস্ট হল একটি কোডিং সহকারী যা আপনি আপনার পছন্দ মতো ব্যবহার করতে পারেন।
জেমিনি চ্যাট উইন্ডোর উপরের ডানদিকের কোণায় অবস্থিত ডাবল-পয়েন্টেড তীর চিহ্নে ক্লিক করে ইউনিট টেস্ট কোড সম্বলিত একটি নতুন ফাইল তৈরি করুন, অথবা IDE ব্যবহার করে একটি নতুন ফাইল তৈরি করুন এবং এই ল্যাবে দেখানো কোডটি পেস্ট করুন। এটি সংরক্ষণ করতে সেই উইন্ডোতে CTRL-S অথবা CMD-S টিপুন এবং সংরক্ষিত ফাইল calendar-unittest.py-তে কল করুন।
টার্মিনালে ফিরে যান এবং CTRL-C টিপুন যাতে আপনি আগে যে ওয়েব সার্ভারটি চালু রেখেছিলেন তা বন্ধ করতে পারেন, এবং একটি শেল প্রম্পট পান। কমান্ডটি লিখুন।
python3 calendar-unittest.py
নতুন পরীক্ষা চালানোর জন্য।
কোন আউটপুট নেই। যা আশা করা হয়েছিল তা নয়। সবকিছু কি নীরবে সম্পন্ন হয়েছে? আপনি অবশ্যই এটি জানতে চান। জেমিনি কোড অ্যাসিস্টের উত্তরটি দেখুন যাতে পরীক্ষার কোড অন্তর্ভুক্ত ছিল। কোডের নীচে টেস্ট কেস কীভাবে চালানো যায় সে সম্পর্কে আরও তথ্য ছিল:

প্রস্তাবিত কমান্ডটি চালানোর চেষ্টা করুন:
python -m unittest discover
যদি আপনার মেশিন python3 কমান্ডটিকে python এ উপনাম না দেয়, তাহলে আপনার সমস্যা হতে পারে, এই ক্ষেত্রে:
python3 -m unittest discover
কমান্ডটি রান করে, কিন্তু এটি Ran 0 tests in 0.000s রিটার্ন করে। মডিউলটিতে বেশ কয়েকটি পরীক্ষা রয়েছে। কী হচ্ছে?
কমান্ডের শেষ শব্দ হলো discover । এটা কোথা থেকে এসেছে? স্পষ্টতই, জেমিনি কোড অ্যাসিস্ট আশা করেছিল যে পরীক্ষার কোডটি discover অথবা discover.py নামের একটি ফাইলে সংরক্ষণ করা হবে, কিন্তু আপনার এটি করা উচিত তা নির্দিষ্ট করেনি। যেহেতু আপনি আসলে ফাইলটি calendar-unittest.py এ সংরক্ষণ করেছেন, তাই কমান্ডটি চালানোর চেষ্টা করুন:
python3 -m unittest calendar-unittest
এখন আপনি অনেক আউটপুট দেখতে পাচ্ছেন, এইরকম কিছু দিয়ে শুরু করে:
$ python3 -m unittest calendar-unittest
.F.FFFFFF
======================================================================
FAIL: test_convert_1990 (calendar-unittest.NumberToRomanTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/charles_engelke/testing-with-duet-ai-codelab/calendar-unittest.py", line 28, in test_convert_1990
self.assertEqual(calendar.number_to_roman(1990), "MCMXC")
AssertionError: 'MDCCCCLXXXX' != 'MCMXC'
- MDCCCCLXXXX
+ MCMXC
প্রথম লাইনে প্রতিটি পাস করা পরীক্ষার জন্য একটি পিরিয়ড এবং প্রতিটি ফেল করা পরীক্ষার জন্য একটি F দেখানো হয়েছে। বেশিরভাগ পরীক্ষাই ফেল করছে! এরপর এটি ফেইলিং পরীক্ষাগুলিকে পৃথকভাবে তালিকাভুক্ত করে, প্রত্যাশিত আউটপুট এবং প্রকৃত আউটপুট দেখায়। এই পরীক্ষাগুলি কোন ক্রমে চালানো হয়েছিল তা কিছুটা স্পষ্ট নয়। এটি পরীক্ষার নামের বর্ণানুক্রমিক ক্রমে ছিল, ফাইলে পরীক্ষাগুলি যে ক্রমে প্রদর্শিত হয়েছিল তা নয়। তাই test_convert_1 প্রথমে চালানো হয়েছিল, তারপর test_convert_1990 , তারপর test_convert_2023 , ইত্যাদি। 1 এবং 2023 এর পরীক্ষার কেসগুলিই একমাত্র পাস করেছে।
যখন আপনি প্রথম এই কোডটি ব্যবহার করে দেখেছেন, তখন আপনি লক্ষ্য করেছেন যে এটি 24 কে XXIIII তে রূপান্তরিত করেছে, যা মোটেও ভুল ছিল না, তবে সাধারণ ফর্মটিও নয় যেখানে IIII কে IV তে রূপান্তরিত করা হয়। সমস্ত ব্যর্থ পরীক্ষা একই ধরণের ক্ষেত্রে ছিল। যখন এই সমস্যাটি প্রথম লক্ষ্য করা যায়, তখন ল্যাব বলে, "যেহেতু এটি আসলে ভুল নয় (মনে রাখবেন যে অনেক ঘড়িতে রোমান সংখ্যা IIII হিসাবে 4 দেখানো হয়), ভবিষ্যতের উন্নতির জন্য এই সমস্যাটি ছেড়ে দিন।"
আপনি পরীক্ষার কেসগুলি পরিবর্তন করে কোডটি প্রদত্ত "সত্যিই ভুল নয়" উত্তরগুলি আশা করতে এবং গ্রহণ করতে পারেন, অথবা "ভবিষ্যতের বর্ধনের" সময় এসেছে তা মেনে নিতে পারেন। তাই আপনার পরবর্তী পদক্ষেপ হল জেমিনি কোড অ্যাসিস্টের সাহায্যে কোডটি ঠিক করা, যাতে পরীক্ষাগুলি প্রত্যাশিত আরও গ্রহণযোগ্য উত্তর দিতে পারে।
৬. কোড উন্নত করা
মনে রাখবেন যে 24 এর জন্য XXIIII এর মতো উত্তরগুলি, সাধারণ XXIV এর পরিবর্তে, "আসলে ভুল নয়" বলে বিবেচিত হয়েছিল এবং ভবিষ্যতের উন্নতির জন্য স্থগিত করা হয়েছিল। সেই ভবিষ্যত এখন। সেই "আসলে ভুল নয়" উত্তরগুলি এখনও বিরক্তিকর।
রোমান সংখ্যায় পুনরাবৃত্ত সংখ্যার প্রথম নিয়ম হল: যখনই আপনার চারটি অভিন্ন সংখ্যা পরপর থাকে, তখন তাদের পরিবর্তে পরবর্তী উচ্চতর সংখ্যাটি ব্যবহার করা উচিত। তাই XXIIII XXIV দিয়ে প্রতিস্থাপন করা উচিত। একইভাবে XXXX XL এ পরিবর্তন করা উচিত এবং CCCC CD করা উচিত।
number_to_roman দ্বারা ফেরত আসার ঠিক আগে রোমান ভেরিয়েবলের মান কীভাবে এইভাবে পরিবর্তন করতে হয় তা জেমিনি কোড অ্যাসিস্টকে জিজ্ঞাসা করুন:
If the final value of roman has IIII in it, that should be replaced by IV. Similarly XXXX should be replaced by XL, and CCCC should become CD. How can I make those changes?
পরামর্শ হল শেষে কিছু কোড যোগ করা:

এই লাইনগুলো এডিটরে কপি/পেস্ট করুন অথবা টাইপ করুন, এবং তারপর দেখুন কী হয়:

প্রথম সেট প্রতিস্থাপনের পরে আপনি যে কেসগুলি ব্যবহার করতে পারেন সেগুলি পরিচালনা করার জন্য জেমিনি কোড অ্যাসিস্ট আরও লাইন যুক্ত করেছে। উদাহরণস্বরূপ, 19 কে XVIII, তারপর XVIV এবং অবশেষে সঠিক XIX এ রূপান্তরিত করা হবে।
যদি জেমিনি কোড অ্যাসিস্ট আপাতদৃষ্টিতে কার্যকর পরামর্শ দিয়ে থাকে, তাহলে সুপারিশ গ্রহণ করতে ট্যাব টিপুন, ফাইলটি সংরক্ষণ করুন এবং আবার ওয়েব সার্ভারটি চালান। অন্যথায়, এখানে উদাহরণে দেখানো লাইনগুলি ম্যানুয়ালি যোগ করুন এবং ফাইলটি সংরক্ষণ করুন। একটি কঠিন রূপান্তর চেষ্টা করুন: 1999:

ঠিক!
এখনই আবার পরীক্ষা দাও। সবগুলোই পাস!
ওয়েব অ্যাপ্লিকেশনটি উৎপাদনের জন্য প্রস্তুত বলে মনে হচ্ছে।
৭. ক্লাউড রানে স্থাপন করুন
ক্লাউড রান আপনার জন্য ইন্টারনেটে একটি কন্টেইনারাইজড অ্যাপ্লিকেশন চালাবে। ফ্ল্যাশের মতো সাধারণ ফ্রেমওয়ার্ক ব্যবহার করে লেখা অ্যাপ্লিকেশনগুলির জন্য, gcloud run deploy কমান্ডটি স্থাপনের আগে আপনার জন্য সেই কন্টেইনারটি তৈরি করবে। কমান্ডটি চালান:
gcloud run deploy
টার্মিনালে। সোর্স কোডের অবস্থান জিজ্ঞাসা করা হলে, এটির সঠিক অবস্থানটি গ্রহণ করতে এন্টার টিপুন। একইভাবে, যখন কোনও পরিষেবার নাম জিজ্ঞাসা করা হয়, তখন পরামর্শটি গ্রহণ করতে এন্টার টিপুন।
কমান্ডটি ব্যর্থ হতে পারে কারণ gcloud কোন প্রকল্পটি ব্যবহার করবে তা নির্ধারণ করতে পারে না। সেক্ষেত্রে, কমান্ডটি চালান:
gcloud config set core/project <project-id>
কোথায় আপনার প্রোজেক্টের আইডি দ্বারা প্রতিস্থাপিত হবে, যা এর নামের মতোই হতে পারে। তারপর gcloud run deploy কমান্ডটি পুনরায় চালান।
- কমান্ডটি আপনাকে বলবে যে কিছু API গুলি প্রয়োজন কিন্তু এখনও সক্রিয় করা হয়নি। আপনার জন্য এগুলি সক্রিয় করতে y লিখুন।
- যখন আপনাকে একটি অঞ্চল নির্বাচন করতে বলা হবে, তখন আপনার জন্য সুবিধাজনক একটি অঞ্চল বেছে নিন।
us-central1এর সাথে সম্পর্কিত নম্বরটি প্রবেশ করানো একটি নিরাপদ পছন্দ। - জিজ্ঞাসা করা হলে, চালিয়ে যেতে Y লিখুন।
- আপনি এই ক্লাউড রান পরিষেবার অননুমোদিত আহ্বানগুলিকে অনুমতি দিতে চাইবেন। ক্লাউড রান দ্বারা ব্যবহৃত প্রমাণীকরণ বিকল্পটি পরিষেবাটি কলকারী প্রোগ্রামগুলির ব্যবহারের জন্য উপযুক্ত। যেহেতু এটি একটি ওয়েবসাইট, তাই আপনি প্রমাণীকরণ ব্যবহার করবেন না।
গুগল ক্লাউড কন্টেইনারটি তৈরি করবে, এটি স্থাপন করবে, এতে ট্র্যাফিক রুট করবে এবং অ্যাক্সেস নীতি সেট করবে এবং তারপর আপনাকে হোম পেজের লিঙ্কটি দেখাবে:

আপনি সেই লিঙ্কে যেতে পারেন এবং আপনার আবেদনটি অ্যাক্সেস করতে পারেন।

একটি নম্বর লিখুন এবং এন্টার টিপুন, আর তখনই!

কি!?!
এটা তোমার মেশিনে কাজ করেছে! এটা শেষ হচ্ছে না কেন?
খুঁজে বের করুন। জেমিনি কোড অ্যাসিস্টকে জিজ্ঞাসা করুন,
Why am I getting an internal server error on cloud run?

স্পষ্টতই, জেমিনি কোড অ্যাসিস্ট লগ ফাইলটি পড়তে পারে, যা একই রকম কিছু বলে। আসুন জেমিনি কোড অ্যাসিস্টকে জিজ্ঞাসা করি কিভাবে আপনি নিজে লগগুলি দেখতে পারেন:

এগিয়ে যান এবং এটি করুন। নীচের মত লাল রঙের লাইনগুলি দেখুন!! ত্রুটির সূচকগুলি দেখুন:

এর পরে কল স্ট্যাকের অনেক বিস্তারিত লাইন এখানে আসছে, কিন্তু তারপর এটি আছে:

যখন আপনি আপনার calendar.py ফাইলটি দেখবেন, তখন আপনি ঠিক সেখানে number_to_roman ফাংশনটি দেখতে পাবেন! এবং আপনি জানেন যে এটি ঠিক কারণ এটি আপনার মেশিনে কাজ করেছে। ক্লাউড রানে আলাদা কী হতে পারে?
উত্তরটা বেশ জটিল। Python3-এর সাথে calendar নামে একটি স্ট্যান্ডার্ড মডিউল রয়েছে, ঠিক যেমন calendar.py ফাইলে number_to_roman ফাংশনটি সংজ্ঞায়িত করা হয়েছে। আপনার স্থানীয় মেশিনে, যখন Python calendar নামক একটি মডিউল খুঁজছিল, তখন এটি প্রথমে আপনার অ্যাপ্লিকেশন ডিরেক্টরিটি অনুসন্ধান করেছিল। স্পষ্টতই, ক্লাউড রানে Python প্রথমে স্ট্যান্ডার্ড মডিউলগুলি খুঁজছিল, এটি আমদানি করেছিল এবং কোনও number_to_roman ফাংশন খুঁজে পায়নি।
পরিবেশে এই ধরণের পার্থক্য সবসময়ই সম্ভব। সৌভাগ্যবশত, যখন কোনও অ্যাপ্লিকেশন কন্টেইনারাইজ করা হয় তখন এটি তার পরিবেশ বহন করে, তাই আপনি যেখানেই এটি চালান না কেন আপনি একই আচরণ আশা করতে পারেন। আপনি যদি ক্লাউড রানের মতো একই কন্টেইনারাইজড অ্যাপ্লিকেশন স্থানীয়ভাবে চালাতেন, তাহলে আপনারও একই সমস্যা হত।
এই সমস্যাটি সমাধান করুন। আপনার স্থানীয় ক্যালেন্ডার মডিউলের নাম পরিবর্তন করে এমন কিছু করতে হবে যা একটি স্ট্যান্ডার্ড মডিউলের নাম নয়। calendar.py ফাইলটির নাম পরিবর্তন করে my_calendar.py রাখুন, তারপর main.py এবং calendar-unittest.py- তে import calendar লাইনগুলি পরিবর্তন করে import my_calendar । অবশেষে, লাইনটি পরিবর্তন করুন।
roman = calendar.number_to_roman(number)
থেকে
roman = my_calendar.number_to_roman(number)
স্থানীয়ভাবে এটি চেষ্টা করে দেখুন, পরীক্ষাগুলি চালান এবং তারপর পুনরায় স্থাপন করুন:
gcloud run deploy
এবং এখন এটি কাজ করে:

আপনি এই URL টি শেয়ার করতে পারেন, এবং যাদের রোমান সংখ্যা রূপান্তর টুলের প্রয়োজন তারা আপনারটি ব্যবহার করতে পারবেন।
৮. ঐচ্ছিক: এটিকে আরও সুন্দর দেখান
আপনার অ্যাপ্লিকেশনটি ঠিকঠাক চলছে এবং ওয়েবে যে কেউ এটি ব্যবহার করতে পারবে। কিন্তু এটি দেখতে একটু সহজ। সবাইকে এটি সম্পর্কে বলার আগে, কেন জেমিনি কোড অ্যাসিস্টকে এর চেহারা উন্নত করতে বলবেন না?
templates/index.html ফাইলটি খুলুন। জেমিনি চ্যাট উইন্ডোতে, জিজ্ঞাসা করুন:
Make this index.html file use material design.
এর উত্তর হল বর্তমান ফাইলে কিছু সংযোজন করা, যার ফলে নিম্নলিখিতগুলির মতো কিছু তৈরি হবে:
<!DOCTYPE html>
<html>
<head>
<title>Roman Numerals</title>
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
</head>
<body>
<h1 class="mdl-typography--title">Roman Numerals</h1>
<form action="/convert" method="post">
<div class="mdl-textfield mdl-js-textfield">
<input class="mdl-textfield__input" type="text" id="number" name="number" required />
<label class="mdl-textfield__label" for="number">Enter a number:</label>
</div>
<button class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored">
Convert!
</button>
</form>
</body>
</html>
প্রস্তাবিত কোডটি কপি করতে আইকনটি ব্যবহার করুন এবং index.html এর বিদ্যমান বিষয়বস্তুর উপর পেস্ট করুন। টার্মিনালে, python3 main.py চালান এবং একটি প্রিভিউ উইন্ডো খুলতে লিঙ্কটিতে ক্লিক করুন। পৃষ্ঠাটি এখন একটু কম সরল:

আপনি চাইলে convert.html ফাইল দিয়ে এটি পুনরাবৃত্তি করতে পারেন।
জেমিনি কোড অ্যাসিস্ট CSS সম্পর্কে বেশ কিছু জানে, এবং আপনি এটির সাহায্যে অ্যাপ্লিকেশন পৃষ্ঠাগুলিকে বিভিন্ন উপায়ে স্টাইল করতে পারেন। এটি কেবল একটি শুরু।
যেহেতু আপনি এই অ্যাপ্লিকেশনটি শেয়ার করতে চান, তাই এটিকে ক্লাউড রানে পুনরায় স্থাপন করতে ভুলবেন না:
gcloud run deploy
যাদের রোমান সংখ্যায় রূপান্তর করতে হবে, তাদের কাছে আপনি URLটি পাঠাতে পারেন।
9. অভিনন্দন!
অভিনন্দন - আপনি একটি অ্যাপ্লিকেশনে পরীক্ষা যোগ করতে, ত্রুটিগুলি সংশোধন করতে এবং উন্নত কার্যকারিতা যোগ করতে জেমিনি কোড অ্যাসিস্টের সাথে সফলভাবে কাজ করেছেন।
আপনার তৈরি করা অ্যাপ্লিকেশনটি ব্যবহার করা শেষ হলে, ভবিষ্যতের সম্ভাব্য চার্জ বন্ধ করতে আপনি এটি ক্লাউড কনসোল ড্যাশবোর্ড থেকে মুছে ফেলতে পারেন।