Gemini Code Assist की मदद से की जाने वाली टेस्टिंग के बारे में जानकारी

1. शुरुआती जानकारी

इस लैब में, किसी मौजूदा Python वेब ऐप्लिकेशन में टेस्ट जोड़ने के लिए, Google Cloud में एआई के साथ काम करने वाले Gemini Code Assist की सुविधा का इस्तेमाल किया जा सकता है. साथ ही, टेस्ट के दौरान दिखने वाले उस ऐप्लिकेशन में मौजूद गड़बड़ियों को ढूंढा जा सकता है और उन्हें ठीक किया जा सकता है. इसके बाद, आपको Code Assist का इस्तेमाल करके, नई सुविधाओं के लिए टेस्ट तैयार करना होगा. साथ ही, उन जांच को पास करने और ऐप्लिकेशन का दायरा बढ़ाने के लिए, कोड जनरेट करना होगा.

आपको क्या करना होगा...

  • किसी मौजूदा वेब ऐप्लिकेशन का कोड डाउनलोड करने के लिए, आपको Cloud Shell Editor का इस्तेमाल करना होगा.
  • Google Cloud के बारे में सामान्य सवाल पूछने के लिए, आपको Cloud Shell Editor में Gemini Code Assist चैट का इस्तेमाल करना होगा.
  • आपको Cloud Shell Editor में Gemini Code Assist इनलाइन कोड की सुविधा का इस्तेमाल करना होगा. इसकी मदद से, ऐप्लिकेशन के लिए टेस्ट जनरेट किए जा सकते हैं, जांच की जा सकती हैं, और गड़बड़ियां खोजी जा सकती हैं और उन्हें ठीक किया जा सकता है. इसके बाद, ऐप्लिकेशन को बेहतर तरीके से इस्तेमाल किया जा सकता है.

आपको इनके बारे में जानकारी मिलेगी...

  • डेवलपर के कई कामों के लिए Gemini Code Assist का इस्तेमाल कैसे करें. जैसे, टेस्ट जनरेट करना और कोड जनरेट करना.
  • Google Cloud के बारे में जानने के लिए, Gemini Code Assist को इस्तेमाल करने का तरीका.

आपको इन चीज़ों की ज़रूरत होगी...

  • Chrome वेब ब्राउज़र
  • Gmail खाता
  • बिलिंग वाला क्लाउड प्रोजेक्ट
  • आपके Cloud प्रोजेक्ट के लिए Gemini Code Assist की सुविधा चालू कर दी गई है

यह लैब, नए लोगों के साथ-साथ हर लेवल के डेवलपर के लिए बना है. हालांकि, सैंपल ऐप्लिकेशन Python भाषा में बनाया गया है. हालांकि, यह समझने के लिए कि क्या चल रहा है, आपको Python प्रोग्रामिंग जानने की ज़रूरत नहीं है. हमारा मकसद, डेवलपर के लिए Gemini Code Assist की सुविधाओं के बारे में जानना है.

2. सेटअप

इस लैब के लिए, आपके पास पहले से ही ऐसा क्लाउड प्रोजेक्ट होना चाहिए जिसमें बिलिंग की सुविधा चालू हो. अब हम अपने Google Cloud प्रोजेक्ट में Gemini API को चालू करेंगे. इसके लिए, यहां दिया गया तरीका अपनाएं:

  1. https://console.cloud.google.com पर जाएं. पक्का करें कि आपने वह Google Cloud प्रोजेक्ट चुना है जिसके साथ आपको इस लैब के साथ काम करना है. सबसे ऊपर दाईं ओर दिख रहे Gemini आइकॉन पर क्लिक करें.

GeminiBanner.png

  1. Cloud Console के लिए Gemini, कंसोल की दाईं ओर खुलेगा. अगर नीचे दिया गया है, तो चालू करें बटन पर क्लिक करें. अगर आपको चालू करें बटन नहीं दिखता है और उसके बजाय Chat इंटरफ़ेस दिखता है, तो इसका मतलब है कि आपने प्रोजेक्ट के लिए Gemini को Cloud के लिए पहले से ही चालू कर दिया है. अब सीधे अगले चरण पर जाएं.

GeminiApiEnable.png

  1. इसके चालू होने के बाद, Gemini को इसकी जांच के लिए एक या दो क्वेरी पूछें. यहां कुछ क्वेरी के सैंपल दिखाए गए हैं, लेकिन आपके पास Cloud Run क्या है? जैसा कुछ आज़माने का विकल्प है

GeminiChatWindow.png

कोड असिस्ट आपके सवाल का जवाब देगा. आप कोड असिस्ट चैट विंडो को बंद करने के लिए, सबसे ऊपर दाएं कोने में मौजूद f68286b2b2ea5c0a.png आइकॉन पर क्लिक कर सकते हैं.

क्लाउड शेल एडिटर में Gemini को चालू करें

Gemini Code Assist की सुविधा उपलब्ध है. यह कई लोकप्रिय आईडीई के साथ इसी तरह काम करती है. आप Google Cloud Shell Editor का इस्तेमाल करेंगे. यह कोडलैब आपके वेब ब्राउज़र पर पूरी तरह काम करता है. आपको क्लाउड शेल एडिटर में Gemini को चालू और कॉन्फ़िगर करना होगा. इसके लिए, यह तरीका अपनाएं:

  1. नीचे दिखाए गए आइकॉन की मदद से, Cloud Shell को लॉन्च करें. Cloud Shell के इंस्टेंस को शुरू होने में एक या दो मिनट लग सकते हैं.

72dc3df7b007fcde.png

  1. एडिटर या एडिटर खोलें बटन (जैसा भी हो सकता है) पर क्लिक करें और क्लाउड शेल एडिटर दिखने तक इंतज़ार करें. अगर आपको नया एडिटर आज़माएं बटन दिखता है, तो उस पर क्लिक करें.

CloudShellEditor.png

  1. जैसा कि दिखाया गया है, सबसे नीचे स्टेटस बार में क्लाउड कोड - साइन इन करें बटन पर क्लिक करें. निर्देश के अनुसार प्लग इन को अधिकृत करें. अगर आपको स्टेटस बार में "Cloud Code - कोई प्रोजेक्ट नहीं" दिखता है, तो उसे चुनें. इसके बाद, जिन प्रोजेक्ट पर आपको काम करना है उनकी सूची से वह Google Cloud प्रोजेक्ट चुनें.

CloudCodeSignIn.png

  1. अगर आपको सबसे नीचे दाईं ओर मौजूद स्टेटस बार में Gemini आइकॉन नहीं दिखता, तो आपको इसे Cloud Code में चालू करना होगा. ऐसा करने से पहले, यह पक्का कर लें कि IDE में Gemini (इसे पहले Duet AI for Developers के नाम से जाना जाता था) चालू हो. इसके लिए, Cloud Code एक्सटेंशन → सेटिंग में जाएं और नीचे बताए गए तरीके का इस्तेमाल करके, Duet AI: Activate टेक्स्ट डालें. पक्का करें कि चेकबॉक्स को चुना गया हो. आपको अपने IDE को फिर से लोड करना होगा. इससे Gemini, Cloud Code में चालू हो जाएगा और Gemini स्टेटस बार आपके IDE में दिखेगा.

EnableDuetAiSetting.png

  1. जैसा कि दिखाया गया है, सबसे नीचे दाएं कोने में मौजूद, Gemini बटन पर क्लिक करें. इसके बाद, वह Google Cloud प्रोजेक्ट चुनें जिसके लिए हमने Cloud AI Companion API को चालू किया था.

GeminiSelectGoogleCloudProject.png

  1. Google Cloud प्रोजेक्ट चुनने के बाद, पक्का करें कि आपको स्टेटस बार में, क्लाउड कोड के स्टेटस वाले मैसेज में यह जानकारी दिखे. साथ ही, दाईं ओर Gemini भी चालू हो, जैसा कि यहां दिखाया गया है:

GeminiEnabledStatusBar.png

Gemini Code Assist की सुविधा का अब इस्तेमाल किया जा सकता है!

3. ऐप्लिकेशन डाउनलोड करना और उसकी जांच करना

टर्मिनल विंडो में, शुरुआती कोड के साथ रिपॉज़िटरी का क्लोन बनाने के लिए कमांड चलाएं और फिर नई डायरेक्ट्री में बदलें (अगर टर्मिनल विंडो अब खुली नहीं है, तो उसे वापस लाने के लिए टर्मिनल या टर्मिनल खोलें बटन पर क्लिक करें):

git clone https://github.com/GoogleCloudPlatform/testing-with-duet-ai-codelab.git
cd testing-with-duet-ai-codelab

एडिटर में main.py खोलें, फिर एडिटर की बाईं ओर Gemini चैट आइकॉन पर क्लिक करके Gemini Chat विंडो खोलें. यह Gemini Chat विंडो, IDE में होती है. साथ ही, IDE में इसका कोड, चर्चा के लिए कॉन्टेक्स्ट के तौर पर उपलब्ध होता है. इसके बारे में बताएं प्रॉम्प्ट डालें और जवाब देखें:

GeminiChatExplainThis.png

पूरा जवाब देखने के लिए, इस चैट विंडो को स्क्रोल किया जा सकता है. दी गई जानकारी में बताया गया है कि हम टर्मिनल विंडो में python3 main.py निर्देश की मदद से, इस प्रोग्राम को स्थानीय तौर पर चला सकते हैं.

4. स्थानीय तौर पर चलाएं

अगर ज़रूरी हो, तो cd ~/testing-with-duet-ai-codelab के साथ रिपॉज़िटरी डायरेक्ट्री में बदलें और टर्मिनल विंडो में निर्देश python3 main.py डालें:

3bf558e9cea15375.png

ऐप्लिकेशन के होम पेज पर एक नया ब्राउज़र टैब खोलने के लिए, http://127.0.0.1:8080 लिंक पर क्लिक करें:

fb06f382a4c03e4c.png

ऐप्लिकेशन "स्थानीय रूप से" चल रहा हो. असल में, क्लाउड शेल एडिटर ने यहां थोड़ा-बहुत जादू कर दिया है. यह ऐप्लिकेशन, Cloud Shell में चल रहा है, न कि आपके कंप्यूटर पर. लिंक पर क्लिक करने पर, एक टैब खुला. यह असली स्थानीय पते http://127.0.0.1:8080 के बजाय, Cloud Shell की मदद से इसी मकसद से सेट अप किए गए प्रॉक्सी सर्वर पर खुला था. अगर आपने इसे लोकल स्टोरेज में चलाया हो, तो इसका असर बिलकुल वैसा ही होगा जैसा इसे इस्तेमाल किया जा रहा था.

इन्हें आज़माएं. 25 डालें और बदलें! को दबाएं

e1b9d5832f6d0058.png

बिलकुल सही, रोमन अंकों में 25 XXV है! यहां आपको पूरा करना होगा.

कुछ और नंबर देखें. 25 लोगों ने काम किया, 24 लोगों के बारे में क्या?

37982e385e17baac.png

शायद हम यह सोचने में थोड़ी जल्दबाज़ी कर लेते कि सब कुछ ठीक है. क्या XXIIII 24 का सही रूपांतरण है? क्या यह XXIV नहीं होना चाहिए?

ऐसा हो सकता है कि XXIIII सही हो, लेकिन आम तौर पर लोगों की उम्मीद इससे ज़्यादा नहीं होती है. हालांकि, यह असल में गलत नहीं है (ध्यान दें कि कई घड़ियां 4 को रोमन नंबर II के तौर पर दिखाती हैं), इसलिए इस समस्या को आने वाले समय में बेहतर बनाने के लिए छोड़ दें.

नेगेटिव नंबर आज़माना कैसा रहेगा? शून्य? उन संख्याओं को रोमन नंबरों में दिखाने का कोई तरीका नहीं है. ऐसा लगता है कि उपयोगकर्ता के पास कुछ भी वापस नहीं आ रहा है. ऐसा लगता है कि किसी गड़बड़ी को ठीक करने की ज़रूरत है.

टेस्टिंग से गड़बड़ियों का पता लगाने और उन्हें ठीक करने में मदद मिल सकती है. साथ ही, Gemini Code Assist की मदद से, टेस्ट लिखने और उनका इस्तेमाल किया जा सकता है.

5. टेस्ट जोड़ना

Gemini Chat विंडो पर वापस जाएं और पूछें

How can I test the number_to_roman function?

जवाब को पढ़ें, जिसमें unittest मॉड्यूल और pytest मॉड्यूल के बारे में चर्चा शामिल होनी चाहिए.

आप चाहें, तो Gemini Code Assist की मदद से ये टेस्ट भी तैयार किए जा सकते हैं. calendar.py खोलें, जहां असल कन्वर्ज़न कोड होता है, एडिटर में Gemini चैट विंडो पर वापस जाएं और फिर से पूछें

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")

आपको ऊपर दिए गए उदाहरण से अलग कोड दिख सकता है. Gemini Code Assist के मौजूदा मॉडल समय-समय पर अपडेट किए जाते हैं. इसलिए, सभी जवाब हमेशा एक जैसे नहीं होंगे. अगर आपको कोड का कोई अलग सेट दिखता है, तो यहां दिखाए गए कोड को कॉपी करके, यह चुना जा सकता है कि इस कोडलैब में दिखाए गए सैंपल लेना है या नहीं. इसके अलावा, आपके पास Gemini Code Assist की ओर से दिए गए वैकल्पिक जवाब को इस्तेमाल करने का विकल्प भी है. अगर आपके पास समय है, तो दोनों पाथ आज़माकर भी देखे जा सकते हैं. Gemini Code Assist एक कोडिंग असिस्टेंट है, जिसका इस्तेमाल अपनी ज़रूरत के हिसाब से किया जा सकता है.

Gemini Chat विंडो के ऊपर दाएं कोने में मौजूद, दो बिंदु वाले ऐरो पर क्लिक करके, यूनिट टेस्ट कोड वाली नई फ़ाइल बनाएं. इसके अलावा, नई फ़ाइल बनाने और लैब में दिखाए गए कोड को चिपकाने के लिए, IDE का इस्तेमाल करें. उस विंडो को सेव करने के लिए, Ctrl-S या CMD-S दबाएं और सेव की गई फ़ाइल calendar-unittest.py को कॉल करें.

टर्मिनल पर वापस जाएं और उस वेब सर्वर को बंद करने के लिए Ctrl-C दबाएं जिसे आपने पहले चलाया था, और एक शेल प्रॉम्प्ट पाएं. निर्देश डालें

python3 calendar-unittest.py

ताकि नई जांच कर सकें.

कोई आउटपुट नहीं मिला. आपको यह जवाब नहीं मिला. क्या सब कुछ बिना किसी रुकावट के हो गया? आपको यह पक्का करना है. Gemini Code Assist से मिले जवाब को फिर से देखें, जिसमें टेस्ट कोड भी शामिल था. कोड के नीचे, टेस्ट केस चलाने के तरीके के बारे में ज़्यादा जानकारी दी गई थी:

run-unittest.png

सुझाया गया निर्देश चलाकर देखें:

python -m unittest discover

अगर आपकी मशीन python3 कमांड को python के लिए उपनाम नहीं देती है, तो हो सकता है कि आपके पास एक समस्या हो. इस स्थिति में यह चलता है:

python3 -m unittest discover

निर्देश चलता है, लेकिन यह Ran 0 tests in 0.000s दिखाता है. मॉड्यूल में कई टेस्ट मौजूद हैं. क्या हो रहा है?

यह कमांड का आखिरी शब्द है, discover. यह कहां से आया? साफ़ तौर पर, Gemini Code Assist की उम्मीद थी कि टेस्ट कोड को 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 में बदला जाता है. सभी असफल जांच इसी तरह के मामलों में हुई थीं. जब इस समस्या का पहली बार ज़िक्र किया गया था, तब लैब ने कहा, "यह असल में गलत नहीं है (ध्यान दें कि कई घड़ियों में 4 रोमन अंक IIII के तौर पर दिखता है), इसलिए आने वाले समय में सुधार करने के लिए इस समस्या को छोड़ दें."

टेस्ट केस में, दिए गए कोड के जवाब में "गलत" का अनुमान लगाया और उसे स्वीकार किया जा सकता है. इसके अलावा, यह भी स्वीकार किया जा सकता है कि "आने वाले समय में बेहतर बनाने" का समय आ गया है. इसलिए, आपका अगला कदम Gemini Code Assist की मदद से कोड को ठीक करना होगा, ताकि टेस्ट के हिसाब से सबसे सही जवाब दिए जा सकें.

6. कोड बेहतर बनाना

याद रखें कि ज़्यादा आम XXIV के बजाय, 24 के लिए XXIIII जैसे जवाबों को "बहुत गलत नहीं" माना गया था और आने वाले समय में उन्हें बेहतर बनाने के लिए रोक दिया गया था. यही भविष्य है. ये "बिलकुल गलत नहीं" जवाब अब भी परेशान करने वाले हैं.

रोमन संख्याओं में दोहराए गए अंकों का पहला नियम यह है: अगर किसी पंक्ति में चार एक जैसे अंक मिलते हैं, तो उन्हें किसी एक अंक से बदल दिया जाना चाहिए और उसके बाद अगला अंक सबसे ज़्यादा होना चाहिए. इसलिए, XXIIII को XXIV से बदलना चाहिए. इसी तरह, XXXX को बदलकर XL किया जाना चाहिए और CCCC को CD होना चाहिए.

Gemini Code Assist से पूछें कि रोमन वैरिएबल की वैल्यू को 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?

हमारा सुझाव है कि आप आखिर में कुछ कोड जोड़ें:

6437c3fa2c5fabd1.png

उन लाइनों को एडिटर में कॉपी/पेस्ट करें या टाइप करके देखें कि क्या होता है:

dcefa568cab82fb7.png

Gemini Code Assist ने कुछ और लाइनें जोड़ी हैं. इनसे आपको उन केस को मैनेज करने में आसानी होगी, जो विकल्पों का पहला सेट बनाने के बाद आपके काम आ सकते हैं. उदाहरण के लिए, 19 को XVIIII में, फिर XVIV में, और आखिर में सही XIX में बदला जाएगा.

अगर Gemini Code Assist ने आपको मददगार सुझाव दिए, तो उसे स्वीकार करने, फ़ाइल सेव करने, और वेब सर्वर को फिर से चलाने के लिए Tab दबाएं. अगर आपको ऐसा नहीं करना है, तो यहां उदाहरण में दिखाई गई लाइनों को मैन्युअल तरीके से जोड़ें और फ़ाइल को सेव करें. कठिन बदलाव आज़माएं: 1999:

a206999587fdc9.png

सही जवाब!

जांच फिर से करें. वे सभी पास हो गए!

ऐसा लगता है कि वेब ऐप्लिकेशन, प्रोडक्शन में काम करने के लिए तैयार है.

7. Cloud Run पर डिप्लॉय करें

Cloud Run आपके लिए इंटरनेट पर एक कंटेनर वाला ऐप्लिकेशन चलाएगा. फ़्लैश जैसे सामान्य फ़्रेमवर्क का इस्तेमाल करके लिखे गए ऐप्लिकेशन के लिए, gcloud run deploy कमांड उसे डिप्लॉय करने से पहले आपके लिए वह कंटेनर भी बनाएगा. निर्देश चलाएं:

gcloud run deploy

टर्मिनल में. जब आपसे सोर्स कोड की जगह की जानकारी मांगी गई हो, तब Enter दबाएं. इससे सोर्स कोड की जगह की जानकारी को स्वीकार किया जा सकता है. इसी तरह, जब सेवा का नाम पूछा जाए, तो सुझाव स्वीकार करने के लिए Enter दबाएं.

ऐसा हो सकता है कि कमांड न मिले, क्योंकि gcloud यह तय नहीं कर सकता कि कौनसा प्रोजेक्ट इस्तेमाल करना है. इस स्थिति में, यह निर्देश चलाएं:

gcloud config set core/project <project-id>

जहां को आपके प्रोजेक्ट के आईडी से बदल दिया जाता है. यह उसका नाम भी हो सकता है. इसके बाद, gcloud run deploy निर्देश को फिर से चलाएं.

  • इस निर्देश से आपको यह जानकारी मिलेगी कि कुछ एपीआई की ज़रूरत है और वे अभी तक चालू नहीं हैं. इन्हें अपने लिए चालू करने के लिए, y डालें.
  • जब आपसे कोई इलाका चुनने के लिए कहा जाए, तो अपनी ज़रूरत के हिसाब से कोई इलाका चुनें. us-central1 से जुड़ा नंबर डालना एक सुरक्षित विकल्प है.
  • पूछे जाने पर, जारी रखने के लिए Y डालें.
  • अगर आपकी अनुमति ज़रूरी है, तो इस Cloud Run सेवा का इस्तेमाल करने के लिए, unauthenticated मैसेज भेजे जाने की अनुमति दें. Cloud Run, सेवा को कॉल करने वाले प्रोग्राम के लिए, पुष्टि करने का यह विकल्प इस्तेमाल कर सकता है. यह एक वेबसाइट है, इसलिए पुष्टि करने की सुविधा का इस्तेमाल नहीं किया जा सकेगा.

Google Cloud कंटेनर बनाएगा, उसे डिप्लॉय करेगा, ट्रैफ़िक को उस पर भेजेगा, और ऐक्सेस की नीतियां सेट करेगा. इसके बाद, आपको होम पेज का लिंक दिखाएगा:

94ba7d8d63a44afd.png

उस लिंक पर जाकर अपना ऐप्लिकेशन ऐक्सेस किया जा सकता है.

a2e51666dfd33a9f.png

कोई नंबर डालें और Enter बटन दबाएं और tada!

5021535ac991a95c.png

क्या!?!

यह आपकी मशीन पर काम कर रहा है! यह काम खत्म क्यों नहीं हुआ?

पता लगाएं. Gemini Code Assist से,

Why am I getting an internal server error on cloud run?

4b24321251d6eddf.png

Gemini Code Assist की मदद से, लॉग फ़ाइल को पढ़ा जा सकता है. इससे कुछ मिलता-जुलता नतीजा मिलता है. Gemini Code Assist से पूछें कि आपको लॉग के बारे में जानकारी किस तरह मिल सकती है:

92d1855be73ef1d.png

इसे आज़माकर देखें. गड़बड़ी के संकेत, जैसे कि नीचे दिए गए तरीके से, लाल !! वाली लाइनों को देखें:

9bed4f9ed82de21c.png

इसके बाद, कॉल स्टैक पर कई लाइनों का इस्तेमाल किया जाता है, लेकिन फिर कुछ चीज़ों का ध्यान रखा जाता है:

47fc93be845f4e3f.png

अपनी calendar.py फ़ाइल देखने पर आपको ठीक वहां number_to_roman फ़ंक्शन दिखेगा! और आपको पता है कि यह सही है, क्योंकि इसने आपकी मशीन पर काम किया. Cloud Run में क्या अलग हो सकता है?

इसका जवाब मुश्किल है. Python3 के साथ एक स्टैंडर्ड मॉड्यूल शामिल किया जाता है, जिसे calendar कहते हैं. यह उसी तरह होता है जैसे calendar.py फ़ाइल में number_to_roman फ़ंक्शन के बारे में बताया जाता है. आपकी लोकल मशीन पर, जब Python ने कैलेंडर नाम का एक मॉड्यूल खोजा, तो पहले उसने आपकी ऐप्लिकेशन डायरेक्ट्री में खोज की. साफ़ तौर पर, Cloud Run पर Python ने पहले स्टैंडर्ड मॉड्यूल ढूंढे, उसे इंपोर्ट किया और कोई number_to_roman फ़ंक्शन नहीं मिला.

परिवेश में इस तरह के अंतर हमेशा संभव होते हैं. अच्छी बात यह है कि जब किसी ऐप्लिकेशन को कंटेनर बनाया जाता है, तो उसमें अपना एनवायरमेंट मौजूद होता है. इसलिए, उसे जहां भी चलाएं, आपको उसी तरह का व्यवहार दिख सकता है. अगर आपने कंटेनर वाले उसी ऐप्लिकेशन को स्थानीय तौर पर चलाया है जैसा कि Cloud Run ने किया है, तो आपको भी यही समस्या होती.

इस समस्या का हल करें. आपको अपने स्थानीय कैलेंडर मॉड्यूल का नाम किसी ऐसे नाम से बदलना होगा जो स्टैंडर्ड मॉड्यूल का नाम भी न हो. 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

अब यह काम करने लगता है:

ed288801c6825eb1.png

आपके पास इस यूआरएल को शेयर करने का विकल्प है. साथ ही, जिन लोगों को रोमन अंकों में कन्वर्ज़न टूल की ज़रूरत है वे सभी आपके यूआरएल का इस्तेमाल कर सकते हैं.

8. ज़रूरी नहीं: इसे अच्छे से दिखाना

आपका ऐप्लिकेशन ठीक से चल रहा है और वेब पर कोई भी उसे ऐक्सेस कर सकता है. हालांकि, यह पूरी तरह सादा है. सभी को इसके बारे में बताने से पहले, क्यों न Gemini Code Assist की सुविधाओं को बेहतर बनाने के लिए इसका इस्तेमाल कर लिया जाए?

templates/index.html फ़ाइल खोलें. Gemini चैट विंडो में, ये सवाल पूछें:

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 चलाएं और झलक विंडो खोलने के लिए लिंक पर क्लिक करें. पेज अब थोड़ा कम सादा है:

295643ec03fcahtm.png

अगर आप चाहें, तो इसे convert.html फ़ाइल के साथ दोहराया जा सकता है.

Gemini Code Assist के बारे में काफ़ी जानकारी मौजूद है. इसकी मदद से, ऐप्लिकेशन पेजों को अलग-अलग स्टाइल में बनाया जा सकता है. यह तो बस शुरुआत है.

अगर आपको इस ऐप्लिकेशन को शेयर करना है, तो इसे Cloud Run पर फिर से डिप्लॉय करें:

gcloud run deploy

यूआरएल उन लोगों को भेजा जा सकता है जिन्हें रोमन नंबरों में बदलना है.

9. बधाई हो!

बधाई हो - आपने किसी ऐप्लिकेशन में टेस्ट जोड़ने, उसमें गड़बड़ियां ठीक करने, और बेहतर सुविधाएं जोड़ने के लिए Gemini Code Assist के साथ मिलकर काम किया.

आपने जो ऐप्लिकेशन बनाया है उसका इस्तेमाल करने के बाद, उसे क्लाउड कंसोल डैशबोर्ड से मिटाया जा सकता है. ऐसा करने पर, आने वाले समय में किसी भी तरह के शुल्क को रोका जा सकता है.

रेफ़रंस दस्तावेज़...