1. مقدمة
في هذا الدرس التطبيقي، ستستخدم Gemini Code Assist، وهو أداة تعاون مستندة إلى الذكاء الاصطناعي في Google Cloud، لإضافة اختبارات إلى تطبيق ويب حالي مكتوب بلغة Python، والعثور على الأخطاء في هذا التطبيق وإصلاحها. بعد ذلك، ستستخدم Code Assist لإنشاء اختبارات للوظائف الجديدة وإنشاء رمز لاجتياز هذه الاختبارات وتوسيع التطبيق.
المهام التي ستنفذها...
- ستستخدم "محرّر Cloud Shell" لتنزيل الرمز لتطبيق ويب حالي.
- ستستخدم ميزة "الدردشة مع Gemini Code Assist" في "محرّر Cloud Shell" لطرح أسئلة عامة حول Google Cloud.
- ستستخدم ميزة "المساعدة المضمّنة في Gemini Code Assist" في "محرِّر Cloud Shell" لإنشاء اختبارات للتطبيق وتشغيلها والعثور على الأخطاء وإصلاحها، ثم لتوسيع وظائف التطبيق.
ما ستتعلمه...
- كيفية استخدام Gemini Code Assist لتنفيذ عدة مهام للمطوّرين، مثل إنشاء الاختبارات وإنشاء الرموز البرمجية
- كيفية استخدام Gemini Code Assist للتعرّف على Google Cloud
المتطلبات...
- متصفّح الويب Chrome
- حساب Gmail
- مشروع على السحابة الإلكترونية تم تفعيل الفوترة فيه
- تفعيل Gemini Code Assist لمشروعك على Google Cloud
هذا المختبر مخصّص للمطوّرين من جميع المستويات، بما في ذلك المبتدئين. على الرغم من أنّ التطبيق النموذجي مكتوب بلغة Python، ليس عليك أن تكون على دراية ببرمجة Python لفهم ما يحدث. سنركّز على التعرّف على إمكانات Gemini Code Assist للمطوّرين.
2. الإعداد
يجب أن يكون لديك مشروع على السحابة الإلكترونية مع تفعيل الفوترة لاستخدامه في هذا المختبر. سنفعّل الآن Gemini API في مشروعنا على Google Cloud. يُرجى اتّباع الخطوات التالية:
- انتقِل إلى https://console.cloud.google.com وتأكَّد من أنّك اخترت مشروع Google Cloud الذي تخطّط لاستخدامه في هذا المختبر. انقر على رمز Gemini الذي يظهر في أعلى يسار الصفحة.

- ستفتح نافذة "Gemini في Cloud" على الجانب الأيسر من وحدة التحكّم. انقر على الزر تفعيل إذا ظهر أدناه. إذا لم يظهر لك الزر تفعيل وظهرت لك بدلاً من ذلك واجهة Chat، يعني ذلك أنّك فعّلت Gemini for Cloud للمشروع ويمكنك الانتقال مباشرةً إلى الخطوة التالية.

- بعد تفعيله، يمكنك تجربة Gemini من خلال طرح سؤال أو سؤالين. يتم عرض بعض طلبات البحث النموذجية، ولكن يمكنك تجربة طلب بحث مثل ما هو Cloud Run؟

سيجيب Code Assist عن سؤالك. يمكنك النقر على رمز
في أعلى يسار الشاشة لإغلاق نافذة محادثة "مساعد البرمجة".
تفعيل Gemini في "محرّر Cloud Shell"
يتوفّر Gemini Code Assist ويتصرف بشكل مشابه في العديد من بيئات التطوير المتكاملة الشائعة. ستستخدم محرّر Google Cloud Shell في هذا الدرس العملي، وهو يعمل بالكامل في متصفّح الويب. عليك تفعيل Gemini وضبطه في "محرّر Cloud Shell"، وفي ما يلي الخطوات:
- ابدأ Cloud Shell من خلال الرمز الموضّح أدناه. قد يستغرق بدء تشغيل مثيل Cloud Shell دقيقة أو دقيقتين.

- انقر على الزر المحرّر أو فتح المحرّر (حسب الحالة) وانتظِر إلى أن يظهر "محرّر Cloud Shell". إذا ظهر لك الزر تجربة المحرِّر الجديد، انقر عليه.

- انقر على الزر رمز السحابة الإلكترونية - تسجيل الدخول في شريط الحالة أسفل الصفحة كما هو موضّح. امنح المصادقة للمكوّن الإضافي حسب التعليمات. إذا ظهرت لك الرسالة "Cloud Code - no project" في شريط الحالة، اختَرها ثم اختَر مشروع Google Cloud المحدّد من قائمة المشاريع التي تخطّط للعمل عليها.

- إذا لم يظهر لك رمز Gemini في شريط الحالة في أسفل يسار الشاشة، عليك تفعيله في Cloud Code. قبل إجراء ذلك، تأكَّد من تفعيل Gemini (المعروف سابقًا باسم Duet AI للمطوّرين) في بيئة التطوير المتكاملة من خلال الانتقال إلى إضافة Cloud Code → الإعدادات، ثم أدخِل النص Duet AI: تفعيل كما هو موضّح أدناه. تأكَّد من وضع علامة في مربّع الاختيار. عليك إعادة تحميل بيئة التطوير المتكاملة. يؤدي ذلك إلى تفعيل Gemini في Cloud Code، وسيظهر شريط حالة Gemini في بيئة تطويرك المتكاملة.

- انقر على زر Gemini في أسفل يسار الشاشة كما هو موضّح، واختَر مشروع على السحابة الإلكترونية الصحيح الذي فعّلنا له Cloud AI Companion API.

- بعد اختيار مشروعك على Google Cloud، تأكَّد من إمكانية رؤيته في رسالة حالة Cloud Code في شريط الحالة ومن تفعيل Gemini على يسار شريط الحالة كما هو موضّح أدناه:

أصبح 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 على يمين المحرّر. نافذة Gemini Chat هذه مضمّنة في بيئة التطوير المتكاملة (IDE)، ويتوفّر فيها الرمز البرمجي في بيئة التطوير المتكاملة كسياق للمناقشة. أدخِل الطلب اشرح لي هذا واطّلِع على الإجابة:

يمكنك التمرير في نافذة المحادثة هذه للاطّلاع على الإجابة الكاملة. يوضّح الشرح أنّه يمكننا تشغيل هذا البرنامج محليًا باستخدام الأمر python3 main.py في نافذة الوحدة الطرفية.
4. التشغيل محليًا
غيِّر إلى دليل المستودع باستخدام cd ~/testing-with-duet-ai-codelab إذا لزم الأمر، وأدخِل الأمر python3 main.py في نافذة المحطة الطرفية:

انقر على الرابط http://127.0.0.1:8080 لفتح علامة تبويب متصفّح جديدة والانتقال إلى الصفحة الرئيسية للتطبيق:

يتم تشغيل التطبيق "محليًا". في الواقع، أجرى "محرّر Cloud Shell" بعض التعديلات السحرية هنا. يتم تشغيل التطبيق في Cloud Shell، وليس على جهاز الكمبيوتر الخاص بك. عند النقر على الرابط، تم فتح علامة تبويب ليس إلى العنوان المحلي الفعلي http://127.0.0.1:8080، بل إلى خادم وكيل تم إعداده لهذا الغرض فقط من خلال Cloud Shell. ويكون التأثير مماثلاً لما لو كنت تنفّذها محليًا.
ننصحك بتجربته الآن. أدخِل 25 واضغط على تحويل.

إجابتك صحيحة، فالرقم 25 هو XXV بالأرقام الرومانية. يجب أن تكون قد انتهيت من هذه الخطوة.
يُرجى التحقّق من بعض الأرقام الأخرى. لقد نجح الرقم 25، فماذا عن 24؟

ربما كنا متسرّعين بعض الشيء في الاعتقاد بأنّ كل شيء على ما يرام. هل XXIIII هي عملية التحويل الصحيحة للرقم 24؟ أليس من المفترض أن يكون XXIV؟
يمكن القول إنّ XXIIII صحيحة، ولكنّها ليست ما يتوقّعه الأشخاص عادةً. بما أنّ هذا ليس خطأ فعليًا (يُرجى العِلم أنّ العديد من الساعات تعرض الرقم 4 بالأرقام الرومانية IIII)، يمكنك ترك هذه المشكلة لتحسينها في المستقبل.
ماذا عن تجربة الأرقام السالبة؟ صفر؟ لا يمكن تمثيل هذه الأرقام بالأعداد الرومانية. لا يبدو أنّ هناك أي شيء يعود إلى المستخدم، ويبدو أنّ هذا خطأ يجب معالجته.
يمكن أن يساعد الاختبار في العثور على الأخطاء وإزالتها، ويمكن أن يساعدنا 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?
أصبح الردّ أكثر تحديدًا الآن، ويتضمّن حتى وحدة unittest يمكنك نسخها أو إدراجها في ملف جديد:
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 لإنشاء ملف جديد يحتوي على رمز اختبار الوحدة، أو استخدام بيئة التطوير المتكاملة لإنشاء ملف جديد ولصق الرمز المعروض في هذا المختبر. اضغط على CTRL-S أو CMD-S في تلك النافذة لحفظها، وأطلِق على الملف المحفوظ اسم calendar-unittest.py.
ارجع إلى الوحدة الطرفية واضغط على CTRL-C لإيقاف خادم الويب الذي تركته قيد التشغيل سابقًا، ثم احصل على موجّه الأوامر. أدخِل الأمر
python3 calendar-unittest.py
لإجراء الاختبارات الجديدة.
لا يوجد أي ناتج. هذا ليس ما كان متوقعًا. هل تم اجتياز كل الاختبارات بدون تنبيه؟ بالتأكيد، تريد معرفة ذلك. راجِع إجابة Gemini Code Assist التي تضمّنت رمز الاختبار. أسفل الرمز، كانت هناك معلومات إضافية حول كيفية تنفيذ حالة الاختبار:

جرِّب تنفيذ الأمر المقترَح:
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. تحسين الرمز البرمجي
تذكَّر أنّ الردود مثل XXIIII على 24، بدلاً من XXIV الأكثر شيوعًا، كانت تُعتبر "غير خاطئة تمامًا" وتم تأجيلها إلى تحسين مستقبلي. وقد أصبح هذا المستقبل حقيقة. لا تزال الإجابات "غير الخاطئة" مزعجة.
تنص القاعدة الأولى للأرقام المتكررة في الأرقام الرومانية على أنّه في كل مرة تتكرر فيها أربعة أرقام متطابقة على التوالي، يجب استبدالها بأحد الأرقام متبوعًا بالرقم الأعلى التالي. لذلك، يجب استبدال XXIIII بـ XXIV. وبالمثل، يجب تغيير XXXX إلى XL، ويجب أن تصبح CCCC هي CD.
اسأل Gemini Code Assist عن كيفية تغيير قيمة المتغيّر roman بهذه الطريقة قبل أن تعرضه الدالة 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?
الاقتراح هو إضافة بعض الرموز في النهاية:

انسخ هذه الأسطر أو الصقها أو اكتبها في المحرّر، ثم شاهِد ما يحدث:

أضافت أداة Gemini Code Assist المزيد من الأسطر للتعامل مع الحالات التي قد تنتهي بها بعد إجراء المجموعة الأولى من عمليات الاستبدال. على سبيل المثال، سيتم تحويل الرقم 19 إلى XVIIII، ثم إلى XVIV، وأخيرًا إلى الرقم الصحيح XIX.
إذا قدّم Gemini Code Assist اقتراحات مفيدة على ما يبدو، اضغط على Tab لقبول الاقتراحات، واحفظ الملف، وشغِّل خادم الويب مرة أخرى. بخلاف ذلك، أضِف الأسطر الموضّحة في المثال هنا يدويًا، ثم احفظ الملف. جرِّب تحويلًا صعبًا: 1999:

إجابتك صحيحة.
أعِد تشغيل الاختبارات الآن. جميعها اجتازت الاختبار.
يبدو أنّ تطبيق الويب جاهز للإصدار العلني.
7. النشر على Cloud Run
ستشغّل Cloud Run تطبيقًا ضِمن حاوية على الإنترنت نيابةً عنك. بالنسبة إلى التطبيقات المكتوبة باستخدام أُطر شائعة، مثل Flash، سينشئ الأمر 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 هذه. خيار المصادقة الذي يستخدمه Cloud Run مناسب للاستخدام من قِبل البرامج التي تستدعي الخدمة. بما أنّ هذا الموقع الإلكتروني، لن تستخدم المصادقة.
ستنشئ Google Cloud الحاوية وتوزّعها وتوجّه الزيارات إليها وتضبط سياسات الوصول، ثم ستعرض لك رابطًا يؤدي إلى الصفحة الرئيسية:

يمكنك الانتقال إلى هذا الرابط والوصول إلى تطبيقك.

أدخِل رقمًا واضغط على Enter، وها قد تم ذلك.

ماذا؟
لقد نجح الأمر على جهازك! لماذا لم يتم الانتهاء من ذلك؟
مزيد من المعلومات اسأل Gemini Code Assist،
Why am I getting an internal server error on cloud run?

يبدو أنّ Gemini Code Assist يمكنه قراءة ملف السجل الذي يتضمّن رسالة مشابهة. لنسأل Gemini Code Assist كيف يمكنك الاطّلاع على السجلات بنفسك:

يمكنك إجراء ذلك. ابحث عن الأسطر التي تحتوي على مؤشرات خطأ حمراء !!، كما هو موضّح أدناه:

يلي ذلك العديد من أسطر التفاصيل حول كيفية الوصول إلى حزمة التنفيذ، ولكن بعد ذلك يظهر ما يلي:

عند إلقاء نظرة على ملف calendar.py، ستجد الدالة number_to_roman. وتعرف أنّها صحيحة لأنّها عملت على جهازك. ما هي الاختلافات المحتملة في Cloud Run؟
الإجابة صعبة. تتضمّن Python3 وحدة نمطية عادية باسم calendar، تمامًا مثل ملف calendar.py الذي تم تحديد الدالة number_to_roman فيه. على جهازك المحلي، عندما بحثت لغة Python عن وحدة باسم calendar، بحثت أولاً في دليل التطبيق. يبدو أنّ Python على Cloud Run بحث عن الوحدات النمطية العادية أولاً، واستوردها، ولم يعثر على الدالة number_to_roman.
هذه الأنواع من الاختلافات في البيئات ممكنة دائمًا. لحسن الحظ، عندما يتم وضع تطبيق في حاوية، يحمل بيئته بداخله، لذا أينما شغّلته، يمكنك توقّع السلوك نفسه. إذا كنت قد شغّلت التطبيق نفسه ضمن الحاويات محليًا كما فعلت في Cloud Run، كنت ستواجه المشكلة نفسها.
حل هذه المشكلة. عليك تغيير اسم وحدة التقويم على جهازك إلى اسم لا يتطابق مع اسم وحدة عادية. أعِد تسمية الملف calendar.py إلى my_calendar.py، ثم غيِّر الأسطر import calendar في الملفين main.py وcalendar-unittest.py إلى import my_calendar. أخيرًا، غيِّر السطر
roman = calendar.number_to_roman(number)
إلى
roman = my_calendar.number_to_roman(number)
جرِّبها على جهازك، ونفِّذ الاختبارات، ثم أعِد نشرها:
gcloud run deploy
والآن، إليك طريقة عملها:

يمكنك مشاركة عنوان URL هذا، وسيتمكّن أي شخص يحتاج إلى أداة لتحويل الأرقام إلى أرقام رومانية من استخدام أداتك.
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 وانقر على الرابط لفتح نافذة معاينة. أصبحت الصفحة الآن أقل بساطة:

يمكنك تكرار هذه العملية مع الملف convert.html إذا أردت ذلك.
يعرف Gemini Code Assist الكثير عن CSS، ويمكنك الاستعانة به لمساعدتك في تصميم صفحات التطبيق بطرق متنوعة. هذه ليست سوى البداية.
بما أنّك تريد مشاركة هذا التطبيق، لا تنسَ إعادة نشره على Cloud Run:
gcloud run deploy
يمكنك مشاركة عنوان URL مع المستخدمين الذين يحتاجون إلى التحويل إلى أرقام رومانية.
9- تهانينا!
تهانينا، لقد نجحت في استخدام Gemini Code Assist لإضافة اختبارات إلى أحد التطبيقات وإصلاح الأخطاء فيه وإضافة وظائف محسّنة.
عند الانتهاء من استخدام التطبيق الذي تنشئه، يمكنك حذفه من لوحة بيانات وحدة التحكّم السحابية لإيقاف أي رسوم مستقبلية محتملة.