১. সংক্ষিপ্ত বিবরণ
এই কোডল্যাব সিরিজটির (নিজের গতিতে শেখার উপযোগী হাতে-কলমে টিউটোরিয়াল) লক্ষ্য হলো ডেভেলপারদের তাদের অ্যাপ্লিকেশন ডেপ্লয় করার সময় উপলব্ধ বিভিন্ন বিকল্পগুলো বুঝতে সাহায্য করা। আপনি শিখবেন কীভাবে একটি সাধারণ ওয়েব অ্যাপ্লিকেশনে গুগল ক্লাউড ট্রান্সলেশন এপিআই ব্যবহার করতে হয়। এই অ্যাপটি স্থানীয়ভাবে চালানো যেতে পারে অথবা কোনো ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে ( অ্যাপ ইঞ্জিন, ক্লাউড ফাংশনস, বা ক্লাউড রান ) ডেপ্লয় করা যেতে পারে।
আপনি এই জাভাস্ক্রিপ্ট টিউটোরিয়ালটি Node.js এবং Express.js ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে করবেন। আপনি আরও শিখবেন কীভাবে আমাদের সার্ভারলেস প্ল্যাটফর্মগুলো থেকে গুগল ক্লাউড এপিআই (Google Cloud APIs) অ্যাক্সেস করতে হয়। এই অ্যাপটির সমস্ত সংস্করণ "nebulous serverless" ওপেন সোর্স রিপো থেকে নেওয়া, যেখানে এই অ্যাপটির একটি পাইথন সংস্করণ এবং স্বতন্ত্র কোডল্যাব রয়েছে। এই রিপোতে একই ধরনের আরও অ্যাপ রয়েছে, যা ডেভেলপারদের দেখায় কীভাবে আমাদের সার্ভারলেস প্ল্যাটফর্মগুলো থেকে নন-ক্লাউড গুগল এপিআই (non-Cloud Google APIs) অ্যাক্সেস করতে হয়।
এই কোডল্যাবটি উপরে বোল্ড করা প্ল্যাটফর্ম(গুলি)তে এই অ্যাপটি ডেপ্লয় করার উপর আলোকপাত করে।
আপনি শিখবেন কিভাবে
- Google Cloud API ব্যবহার করুন, বিশেষ করে Cloud Translation API (advanced/v3)।
- স্থানীয়ভাবে একটি সাধারণ ওয়েব অ্যাপ্লিকেশন চালান অথবা ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে স্থাপন করুন।
আপনার যা যা লাগবে
- একটি সক্রিয় ক্লাউড বিলিং অ্যাকাউন্ট সহ একটি গুগল ক্লাউড প্রজেক্ট
- স্থানীয়ভাবে চালানোর জন্য একটি ওয়েব ফ্রেমওয়ার্ক ইনস্টল করা আছে (যারা পাইথন টিউটোরিয়াল করছেন তাদের জন্য ফ্লাস্ক অথবা যারা জাভাস্ক্রিপ্ট/নোড.জেএস টিউটোরিয়াল করছেন তাদের জন্য এক্সপ্রেস )।
- গুগল ক্লাউড ডেপ্লয়মেন্টের জন্য সক্ষম করা অন্তত একটি সার্ভারলেস কম্পিউট প্ল্যাটফর্ম
- প্রোগ্রামিং-এর প্রাথমিক দক্ষতা (পাইথন অথবা জাভাস্ক্রিপ্ট/নোড.জেএস)
- অপারেটিং সিস্টেমের মৌলিক কমান্ড সম্পর্কে কার্যকরী জ্ঞান
জরিপ
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
পাইথন বা নোড.জেএস-এ ডেভেলপ করার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না, এবং আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে প্রজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং এটি অপরিবর্তনীয় (একবার সেট করার পর পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়), তাই যদি এটি আপনার পছন্দ না হয়, তবে এলোমেলোভাবে অন্য একটি তৈরি করুন, অথবা, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এরপর প্রজেক্ট তৈরি হয়ে গেলে এটি "স্থির" হয়ে যায়। - তৃতীয় আরেকটি ভ্যালু আছে, যা হলো প্রজেক্ট নম্বর এবং কিছু এপিআই এটি ব্যবহার করে। এই তিনটি ভ্যালু সম্পর্কে আরও জানতে ডকুমেন্টেশন দেখুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে কোডল্যাবের শেষে দেওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
৩. অনুবাদ এপিআই সক্রিয় করুন
এই অংশে, আপনি সাধারণভাবে গুগল এপিআই (Google APIs) কীভাবে সক্রিয় করতে হয় তা শিখবেন। আমাদের নমুনা অ্যাপটির জন্য, আপনাকে ক্লাউড ট্রান্সলেশন এপিআই (Cloud Translation API) সক্রিয় করতে হবে। এছাড়াও, আপনি নমুনা অ্যাপটি কোন প্ল্যাটফর্মে স্থাপন করতে চান তার উপর নির্ভর করে অ্যাপ ইঞ্জিন (App Engine), ক্লাউড ফাংশনস (Cloud Functions), এবং/অথবা ক্লাউড রান (Cloud Run) (সাথে ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি) সক্রিয় করতে হবে।
গুগল এপিআই সক্রিয় করা
ভূমিকা
আপনি আপনার অ্যাপ্লিকেশনে যে গুগল এপিআই-ই ব্যবহার করতে চান না কেন, সেগুলোকে অবশ্যই সক্রিয় করতে হবে। এপিআইগুলো কমান্ড-লাইন অথবা ক্লাউড কনসোল থেকে সক্রিয় করা যায়। এপিআই সক্রিয় করার প্রক্রিয়া একই, তাই একবার একটি এপিআই সক্রিয় করলে, আপনি একইভাবে অন্যটিও করতে পারবেন।
বিকল্প ১: gcloud কমান্ড-লাইন ইন্টারফেস (ক্লাউড শেল বা স্থানীয় পরিবেশ)
যদিও ক্লাউড কনসোল থেকে এপিআই (API) সক্রিয় করা বেশি প্রচলিত, কিছু ডেভেলপার কমান্ড লাইন থেকে সবকিছু করতে পছন্দ করেন। এটি করার জন্য, আপনাকে একটি এপিআই-এর "সার্ভিস নেম" খুঁজে বের করতে হবে। এটি একটি ইউআরএল (URL)-এর মতো দেখতে: SERVICE_NAME । আপনি এগুলো সাপোর্টেড প্রোডাক্টস চার্টে খুঁজে পেতে পারেন, অথবা গুগল ডিসকভারি এপিআই (Google Discovery API) .googleapis.com করে প্রোগ্রাম্যাটিকভাবে এগুলোর জন্য কোয়েরি করতে পারেন।
এই তথ্যের সাহায্যে, ক্লাউড শেল (অথবা আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে যেখানে gcloud কমান্ড-লাইন টুল ইনস্টল করা আছে ) ব্যবহার করে, আপনি নিম্নলিখিতভাবে একটি API সক্রিয় করতে পারেন:
gcloud services enable SERVICE_NAME.googleapis.com
উদাহরণ ১: ক্লাউড ভিশন এপিআই সক্রিয় করুন
gcloud services enable vision.googleapis.com
উদাহরণ ২: গুগল অ্যাপ ইঞ্জিন সক্রিয় করুন
gcloud services enable appengine.googleapis.com
উদাহরণ ৩: একটি অনুরোধের মাধ্যমে একাধিক এপিআই সক্রিয় করুন। উদাহরণস্বরূপ, যদি এই কোডল্যাবের দর্শকরা ক্লাউড ট্রান্সলেশন এপিআই ব্যবহার করে অ্যাপ ইঞ্জিন, ক্লাউড ফাংশনস এবং ক্লাউড রান-এ একটি অ্যাপ ডেপ্লয় করেন, তাহলে কমান্ড লাইনটি হবে:
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
এই কমান্ডটি অ্যাপ ইঞ্জিন, ক্লাউড ফাংশনস, ক্লাউড রান এবং ক্লাউড ট্রান্সলেশন এপিআই সক্রিয় করে। এছাড়াও, এটি ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি সক্রিয় করে, কারণ ক্লাউড রানে ডেপ্লয় করার জন্য ক্লাউড বিল্ড সিস্টেমকে কন্টেইনার ইমেজগুলো সেখানেই রেজিস্টার করতে হয়।
বিকল্প ২: ক্লাউড কনসোল
আপনি এপিআই ম্যানেজার-এও গুগল এপিআইগুলো সক্রিয় করতে পারেন। ক্লাউড কনসোল থেকে, এপিআই ম্যানেজার- এ যান এবং লাইব্রেরি নির্বাচন করুন।

মিল থাকা ফলাফলগুলো দেখতে সার্চ বারে একটি API-এর নাম লিখতে শুরু করুন:

আপনি যে API-টি সক্রিয় করতে চান তা নির্বাচন করুন এবং ' সক্রিয় করুন' বোতামে ক্লিক করুন:

আপনি কোন গুগল এপিআই ব্যবহার করতে চান তা নির্বিশেষে, সমস্ত এপিআই সক্রিয় করার প্রক্রিয়া একই রকম।
খরচ
অনেক গুগল এপিআই বিনামূল্যে ব্যবহার করা যায়, তবে বেশিরভাগ গুগল ক্লাউড প্রোডাক্ট এবং এপিআই ব্যবহার করার জন্য খরচ রয়েছে। ক্লাউড এপিআই সক্রিয় করার সময়, আপনার কাছে একটি সক্রিয় বিলিং অ্যাকাউন্ট চাওয়া হতে পারে। তবে, কিছু গুগল ক্লাউড প্রোডাক্টে একটি "সর্বদা বিনামূল্যে" (Always Free) স্তর রয়েছে, যা অতিক্রম করলেই বিলিং চার্জ প্রযোজ্য হবে।
নতুন GCP ব্যবহারকারীরা ফ্রি ট্রায়ালের জন্য যোগ্য, যার বর্তমান মূল্য ৩০০ মার্কিন ডলার এবং এটি প্রথম ৯০ দিনের জন্য প্রযোজ্য। কোডল্যাবস সাধারণত খুব বেশি বা কোনো বিলই নেয় না, তাই আমরা আপনাকে পরামর্শ দিচ্ছি যে, আপনি এটি পরীক্ষা করার জন্য পুরোপুরি প্রস্তুত না হওয়া পর্যন্ত ফ্রি ট্রায়ালটি গ্রহণ করা থেকে বিরত থাকুন, বিশেষ করে যেহেতু এটি একটি এককালীন অফার। ফ্রি টিয়ারের কোটাগুলোর কোনো মেয়াদ নেই এবং আপনি ফ্রি ট্রায়াল ব্যবহার করুন বা না করুন, তা নির্বিশেষে এটি প্রযোজ্য হবে।
যেকোনো API চালু করার আগে ব্যবহারকারীদের এর মূল্য সংক্রান্ত তথ্য দেখে নেওয়া উচিত (উদাহরণস্বরূপ: ক্লাউড ভিশন API প্রাইসিং পেজ), বিশেষ করে এটির কোনো ফ্রি টিয়ার আছে কিনা এবং থাকলে, সেটি কী তা লক্ষ্য করা উচিত। যতক্ষণ আপনি সামগ্রিকভাবে নির্দিষ্ট দৈনিক বা মাসিক সীমার মধ্যে থাকবেন, ততক্ষণ আপনার কোনো চার্জ লাগার কথা নয়। গুগল প্রোডাক্ট গ্রুপের API গুলোর মধ্যে মূল্য এবং ফ্রি টিয়ার ভিন্ন ভিন্ন হয়ে থাকে। উদাহরণ:
- গুগল ক্লাউড/জিসিপি — প্রতিটি পণ্যের বিল আলাদাভাবে করা হয় এবং সাধারণত ব্যবহারের ভিত্তিতে অর্থ প্রদান করতে হয়; উপরে ফ্রি টিয়ার সম্পর্কিত তথ্য দেখুন।
- গুগল ম্যাপস — এতে রয়েছে একাধিক এপিআই এবং এটি ব্যবহারকারীদের প্রতি মাসে মোট ২০০ মার্কিন ডলারের বিনামূল্যে ক্রেডিট প্রদান করে।
- গুগল ওয়ার্কস্পেস (পূর্বের নাম জি স্যুট) এপিআই — ওয়ার্কস্পেসের মাসিক সাবস্ক্রিপশন ফি- এর আওতায় (নির্দিষ্ট সীমা পর্যন্ত) এর ব্যবহার পাওয়া যায়, তাই জিমেইল, গুগল ড্রাইভ, ক্যালেন্ডার, ডকস, শিটস বা স্লাইডসের মতো অ্যাপ্লিকেশনগুলোর এপিআই ব্যবহারের জন্য সরাসরি কোনো বিলিং করা হয় না।
গুগলের বিভিন্ন পণ্যের বিল ভিন্ন ভিন্ন হয়ে থাকে, তাই এই তথ্যের জন্য অবশ্যই সংশ্লিষ্ট ডকুমেন্টেশন দেখে নেবেন।
কাঙ্ক্ষিত পরিষেবাগুলি সক্রিয় করা নিশ্চিত করুন।
উপরে নির্দেশিত পদ্ধতি অনুযায়ী এপিআই ম্যানেজার -এ ক্লাউড ট্রান্সলেশন এপিআই নিশ্চিত করুন। যদি আপনি কমান্ড-লাইন থেকে সার্ভারলেস প্ল্যাটফর্মগুলো চালু না করে থাকেন, তবে ক্লাউড কনসোল-এ থাকা তাদের নিজ নিজ ড্যাশবোর্ড— অ্যাপ ইঞ্জিন , ক্লাউড ফাংশনস , ক্লাউড রান— থেকে তা করতে পারেন।
ক্লাউড কনসোল থেকে এপিআই (API) চালু করাটা দেখতে সুবিধাজনক হলেও, gcloud টুল ব্যবহার করা আরও দ্রুত, যা দিয়ে সমস্ত পরিষেবা চালু করতে কয়েক সেকেন্ড সময় লাগে:
$ gcloud services enable appengine.googleapis.com \ cloudfunctions.googleapis.com artifactregistry.googleapis.com \ run.googleapis.com translate.googleapis.com Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.
খরচ সম্পর্কে আরও তথ্য
খরচ সংক্রান্ত উপরের অংশটি গুগল এপিআইগুলোর জন্য সাধারণভাবে প্রযোজ্য। চলুন এই টিউটোরিয়ালের জন্য আরও নির্দিষ্ট কিছু বিষয় আলোচনা করা যাক। যদিও এর মাসিক কোটা সামগ্রিক "সর্বদা বিনামূল্যে" স্তরের সারাংশ পৃষ্ঠায় তালিকাভুক্ত নয়, ট্রান্সলেশন এপিআই-এর মূল্য নির্ধারণী পৃষ্ঠায় বলা আছে যে সকল ব্যবহারকারী প্রতি মাসে একটি নির্দিষ্ট পরিমাণ অনূদিত অক্ষর পান। আপনি যদি সেই সীমার নিচে থাকেন, তাহলে এপিআই থেকে আপনার কোনো চার্জ লাগার কথা নয়। গুগল ক্লাউড সার্ভারলেস প্ল্যাটফর্ম ব্যবহারের খরচ সম্পর্কে আরও জানতে, রিপোজিটরির "খরচ" (Costs) অংশটি দেখুন। শেষের "পরিষ্কারকরণ" (Clean up) অংশে আলোচনা করা হবে কীভাবে এই কোডল্যাবটি শেষ হওয়ার পর বিলিং বন্ধ করা যায়।
৪. নমুনা অ্যাপ কোডটি সংগ্রহ করুন।
ZIP ডাউনলোড করুন অথবা রিপো ক্লোন করুন
- ZIP ফাইলটি ডাউনলোড করুন অথবা
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.gitদিয়ে রিপোটি ক্লোন করুন। - যদি আপনার কোনো লোকাল ডেভ এনভায়রনমেন্ট না থাকে এবং আপনি এই টিউটোরিয়ালটি ক্লাউড শেল- এ করতে চান, তাহলে সেখানেও একই
git cloneকমান্ড দিয়ে রিপোটি ক্লোন করতে পারেন। - নিচের স্ক্রিনশটে দেখানো অনুযায়ী, আপনি এর সবুজ 'কোড' বাটনটি থেকেও জিপ ফাইলটি অ্যাক্সেস করতে পারেন:

এখন যেহেতু আপনার কাছে সবকিছু আছে, এই নির্দিষ্ট টিউটোরিয়ালটি করার জন্য ফোল্ডারটির একটি সম্পূর্ণ কপি তৈরি করুন, কারণ এতে সম্ভবত ফাইল ডিলিট বা পরিবর্তন করার প্রয়োজন হবে। আপনি যদি অন্য কোনো ডেপ্লয়মেন্ট করতে চান, তাহলে আসল ফাইলটি কপি করে আবার নতুন করে শুরু করতে পারেন, যাতে আপনাকে এটি পুনরায় ক্লোন বা ডাউনলোড করতে না হয়।
৫. Node.js পরিবেশ নিশ্চিত করুন
আপনার Node.js পরিবেশ সেট আপ করতে, নিম্নলিখিতগুলি করুন:
- আপনার সিস্টেমে Node (>=10) এবং NPM (>=6)-এর সাম্প্রতিক সংস্করণ ইনস্টল করা আছে কিনা, তা নিশ্চিত করুন।
- যেখানে আপনি রিপোটি ক্লোন করেছেন (বা জিপ ফাইলটি আনজিপ করেছেন) সেখানে যান, তারপর
cloud/nodejsফোল্ডারে যান। -
package.jsonআছে কিনা নিশ্চিত করুন, তারপরnpm installচালান।
উপরের #১ এর ক্ষেত্রে, আপনি কমান্ড-লাইনে আপনার কাছে কোন সংস্করণগুলো আছে তা যাচাই করতে পারেন:
$ node -v v17.0.1 $ npm -v 8.1.0
৬. নমুনা অ্যাপটির পরিভ্রমণ
নমুনা অ্যাপটি গুগল ট্রান্সলেটের একটি সরল সংস্করণ, যা ব্যবহারকারীদের ইংরেজিতে টেক্সট লিখতে বলে এবং তার সমতুল্য স্প্যানিশ অনুবাদ প্রদান করে।
package.json কনফিগারেশন ফাইলটি নির্দেশ করে যে অ্যাপ্লিকেশনটির জন্য কোন কোন থার্ড-পার্টি প্যাকেজ প্রয়োজন (উল্লেখ্য যে, এখানে তালিকাভুক্ত প্যাকেজের সংস্করণ ছাড়াও অন্যান্য সংস্করণ আপডেট করা হতে পারে):
{
"name": "cloud-nebulous-serverless-nodejs",
"version": "0.0.1",
"description": "Nebulous Serverless sample app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha test/test_neb.js"
},
"author": "Google LLC",
"license": "Apache-2.0",
"dependencies": {
"@google-cloud/translate": "^6.3.1",
"express": "^4.17.1",
"nunjucks": "^3.2.3"
},
"devDependencies": {
"mocha": "^9.1.3",
"supertest": "^6.1.6"
}
}
এখন index.js ফাইলটি খুলুন যাতে আমরা দেখতে পারি এটি কীভাবে কাজ করে। লাইসেন্সিং সম্পর্কিত কমেন্ট করা লাইনগুলো বাদ দিলে, এর উপরে এবং নীচে এটি দেখতে এইরকম:
const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');
const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();
const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
parent = `projects/${result}`;
});
if (!process.env.FUNCTION_TARGET) {
app.listen(PORT, () =>
console.log(`Listening on port ${PORT}`)
);
}
# . . . [translate() function definition] . . .
app.all('/', translate);
module.exports = {
app
};
- এর জন্য ফ্রেমওয়ার্ক ও টেমপ্লেটিং কার্যকারিতা এবং ক্লাউড ট্রান্সলেশন এপিআই ক্লায়েন্ট লাইব্রেরি অন্তর্ভুক্ত করা
require। - গ্লোবাল ভেরিয়েবলগুলো ওয়েব অ্যাপ, ক্লাউড প্রজেক্ট আইডি, ট্রান্সলেশন এপিআই ক্লায়েন্ট, ট্রান্সলেশন এপিআই কলের জন্য প্যারেন্ট "লোকেশন পাথ" এবং
SOURCEওTARGETভাষাকে নির্দেশ করে। এক্ষেত্রে, এগুলো হলো ইংরেজি (en) এবং স্প্যানিশ (es), কিন্তু ক্লাউড ট্রান্সলেশন এপিআই দ্বারা সমর্থিত অন্যান্য ভাষার কোড ব্যবহার করে আপনি এই মানগুলো পরিবর্তন করতে পারেন। - প্রতিটি জোড়ার (
SOURCEএবংTARGET) প্রথম উপাদানটি হলো ভাষা কোড এবং দ্বিতীয়টি হলো ভাষার নাম (যা শুধুমাত্র প্রদর্শনের জন্য ব্যবহৃত হয়, কারণ এটি API-এর জন্য অপ্রাসঙ্গিক)। - নিচের কয়েকটি লাইন সমস্ত HTTP অনুরোধকে
translate()ফাংশনে পাঠানোর এবং তারপরappঅ্যাপ্লিকেশন অবজেক্টটি এক্সপোর্ট করার জন্য ব্যবহৃত হয়।
অবশেষে, index.js ফাইলের মাঝখানে রয়েছে অ্যাপ্লিকেশনটির প্রাণকেন্দ্র, translate() ফাংশনটি:
async function translate(req, rsp) {
let text = null;
let translated = null;
if (req.method === 'POST') {
text = req.body.text.trim();
if (text) {
const data = {
contents: [text],
parent: parent,
targetLanguageCode: TARGET[0]
};
const [response] = await TRANSLATE.translateText(data);
translated = response.translations[0].translatedText;
}
}
const context = {
orig: {text: text, lc: SOURCE},
trans: {text: translated, lc: TARGET}
};
rsp.render('index.html', context);
}
মূল ফাংশনটি ব্যবহারকারীর ইনপুট গ্রহণ করে এবং বাকি জটিল কাজগুলো করার জন্য ট্রান্সলেশন এপিআই-কে কল করে। চলুন বিষয়টি ভেঙে দেখি:
- ফর্মের মৌলিক ভেরিয়েবলগুলো রিসেট করুন। এটি মূলত GET রিকোয়েস্টের জন্য, কারণ POST রিকোয়েস্টের ডেটা এগুলোকে প্রতিস্থাপন করে।
- যদি এটি একটি POST অনুরোধ হয়, তাহলে অনুবাদের জন্য টেক্সটটি নিন এবং সেটি খালি না থাকলে, API মেটাডেটার প্রয়োজনীয়তা অনুযায়ী একটি JSON কাঠামো তৈরি করুন। এরপর পরিষেবাটির জন্য API-কে কল করুন।
- আমরা API-তে কোনো নির্দিষ্ট ইংরেজি উৎসের জন্য
SOURCE[0]পাস করিনি। যখন আপনি উৎসের ভাষা উল্লেখ করেন না, তখন আপনি API-কে উৎসের ভাষা স্বয়ংক্রিয়ভাবে শনাক্ত করতে অনুরোধ করছেন ( ডকুমেন্টেশনেsourceLanguageCodeদেখুন)। - যাই হোক না কেন, প্রকৃত ফলাফল (POST) অথবা কোনো ডেটা না থাকা (GET) অবস্থাকে টেমপ্লেট কনটেক্সটে ফরম্যাট করুন এবং রেন্ডার করুন।
অ্যাপ্লিকেশনটির ভিজ্যুয়াল অংশটি টেমপ্লেট index.html ফাইলে রয়েছে। এটি পূর্বে অনুবাদ করা ফলাফলগুলো দেখায় (অন্যথায় ফাঁকা থাকে) এবং তারপরে অনুবাদ করার জন্য কিছু জানতে চেয়ে একটি ফর্ম আসে:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<style>
body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}
</style>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
এই টিউটোরিয়ালের বাকি অংশে, আপনি এই অ্যাপটি ডেপ্লয় এবং রান করার জন্য চারটি বিকল্পের যেকোনো একটি বা সবগুলো বেছে নিতে পারেন। সমস্ত ডেপ্লয়মেন্টই ঐচ্ছিক, অর্থাৎ আপনি এগুলোর যেকোনো একটি বা সবগুলোই করতে পারেন।
- সার্ভিসটি স্থানীয়ভাবে চালান
- অ্যাপ ইঞ্জিনে (স্ট্যান্ডার্ড এনভায়রনমেন্ট) ডিপ্লয় করুন
- ক্লাউড ফাংশনে স্থাপন করুন
- ক্লাউড রানে স্থাপন করুন
৭. বিকল্প ১: সার্ভিসটি স্থানীয়ভাবে চালান
কোডল্যাবের এই অংশটি শুধুমাত্র স্থানীয়ভাবে চালানোর জন্য। আপনি যদি শুধু ক্লাউডে ডেপ্লয় করতে চান, তাহলে পরবর্তী অংশে চলে যান।
স্যাম্পল অ্যাপটি স্থানীয়ভাবে চালানোর জন্য তিনটি স্বতন্ত্র ধাপ অবশ্যই অনুসরণ করতে হবে:
- একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
- একটি সার্ভিস অ্যাকাউন্টের পাবলিক/প্রাইভেট কী পেয়ার তৈরি করুন
- ক্রেডেনশিয়াল ফাইলটি ডাউনলোড করুন এবং অ্যাপ্লিকেশন কোডের সাথে বান্ডল করুন।
- পরিষেবাটি শুরু করুন
পরিষেবা অ্যাকাউন্ট সম্পর্কে জানুন
সার্ভিস অ্যাকাউন্ট হলো একটি নিরাপত্তা ব্যবস্থা, যা ক্লাউড-ভিত্তিক অ্যাপ্লিকেশনগুলোর জন্য গুগল এপিআই অ্যাক্সেস করতে ব্যবহৃত হয়, বিশেষত যখন এমন ডেটা অ্যাক্সেস করা হয় যা কোনো মানুষের মালিকানাধীন নয়। ক্লাউডে ডেপ্লয় করার সময়, ব্যবহারকারীদের ক্লাউডে অন্তর্ভুক্ত করার প্রাথমিক সময় কমাতে, সমস্ত গুগল ক্লাউড কম্পিউট প্ল্যাটফর্ম (সার্ভারবিহীন এবং অন্যান্য) ডিফল্ট সার্ভিস অ্যাকাউন্ট সরবরাহ করে।
ডিফল্ট সার্ভিস অ্যাকাউন্টগুলো আমলাতান্ত্রিক জটিলতা এড়ানোর জন্য বিস্তৃত পরিসরের অনুমতিসহ আসে, কিন্তু প্রোডাকশন সার্ভিস চালু করার প্রস্তুতির সময় আমরা ব্যবহারকারীদেরকে 'সর্বনিম্ন সুবিধা' (least privileges) প্রদানের সর্বোত্তম পদ্ধতি অনুসরণ করার জন্য দৃঢ়ভাবে সুপারিশ করি। এর জন্য ব্যবহারকারী-পরিচালিত সার্ভিস অ্যাকাউন্টগুলোতে শুধুমাত্র আপনার অ্যাপটি সঠিকভাবে কাজ করার জন্য প্রয়োজনীয় অনুমতি রাখতে হয়। যাই হোক, লোকাল ডেপ্লয়মেন্টের জন্য কোনো ডিফল্ট সার্ভিস অ্যাকাউন্ট নেই, তাই আপনাকে অবশ্যই একটি সার্ভিস অ্যাকাউন্ট এবং একটি সার্ভিস অ্যাকাউন্ট কী (প্রকৃতপক্ষে একটি পাবলিক/প্রাইভেট কী পেয়ার) তৈরি করতে হবে এবং সেই ক্রেডেনশিয়ালগুলো অ্যাপ্লিকেশন কোডের জন্য উপলব্ধ করতে হবে।
সার্ভিস অ্যাকাউন্ট কী-পেয়ার তৈরি করুন এবং ক্রেডেনশিয়াল ফাইল ডাউনলোড করুন
স্থানীয়ভাবে চালানোর জন্য একটি সার্ভিস অ্যাকাউন্ট এবং পাবলিক/প্রাইভেট কী পেয়ার তৈরি করতে এই পৃষ্ঠার নির্দেশাবলী অনুসরণ করুন। সার্ভিস অ্যাকাউন্ট কী তৈরি করার সময়, আপনাকে প্রয়োজনীয় অনুমতিগুলো প্রদান করতে বলা হবে। roles/cloudtranslate.user নির্বাচন করতে ভুলবেন না, যাতে আপনি সফলভাবে এপিআই (API) অ্যাক্সেস করতে পারেন।
আপনার কী পেয়ার সফলভাবে তৈরি হয়ে গেলে, আপনাকে সার্ভিস অ্যাকাউন্ট কী ফাইলটি ডাউনলোড করার জন্য অনুরোধ করা হবে। ফাইলটির নাম দিন credentials.json এবং এটিকে অ্যাপ্লিকেশনের টপ-লেভেল ফোল্ডারে নিয়ে যান। এখন আপনাকে ক্লাউড এসডিকে-কে এই ক্রেডেনশিয়ালগুলো ব্যবহার করতে বলতে হবে: GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবলটি সেট করে ফাইলটিকে নির্দেশ করুন। এই প্রক্রিয়া সম্পর্কে আরও বিস্তারিত তথ্য সার্ভিস অ্যাকাউন্ট ব্যবহার বিষয়ক এই পেজটিতেও পাওয়া যাবে।
পরিষেবাটি শুরু করুন
যখন আপনি এগিয়ে যেতে প্রস্তুত হবেন, তখন নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার লোকাল সিস্টেমে এক্সপ্রেস সার্ভারটি চালু করুন:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
আপনার ওয়েব ব্রাউজারে localhost:8080- এ সংযোগ করুন, এবং আপনি নিচের মতো কিছু দেখতে পাবেন:

কোনো কিছু অনুবাদ করে দেখুন তা কীভাবে কাজ করে!

যখন আপনি এতে সন্তুষ্ট হবেন, তখন ^C (কন্ট্রোল-সি) চেপে সার্ভারটি বন্ধ করে দিন। স্থানীয়ভাবে ডেপ্লয়মেন্ট চালু করতে পারার জন্য অভিনন্দন। একটি সুখবর আছে: ক্লাউডে ডেপ্লয় করা অনেক বেশি সহজ।
সমস্যা সমাধান
অনুবাদ অনুরোধ করার সময় আপনি কি এই ধরনের কোনো ত্রুটি পাচ্ছেন?
node:fs:2486
handleErrorFromBinding(ctx);
^
Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json'
. . .
সমাধান : এই ত্রুটির অর্থ হলো আপনি একটি সার্ভিস অ্যাকাউন্ট তৈরি করা এবং পাবলিক/প্রাইভেট কী পেয়ার ফাইল credentials.json ডাউনলোড করার প্রক্রিয়াটি সম্পূর্ণ করেননি। অনুগ্রহ করে " বিকল্প ১: সার্ভিসটি স্থানীয়ভাবে চালান " অংশে ফিরে যান এবং এই প্রক্রিয়াটি সম্পূর্ণ করে সামনে এগোনোর আগে মূল ফোল্ডারে ক্রেডেনশিয়ালস (credentials) ইনস্টল করুন।
৮. বিকল্প ২: অ্যাপ ইঞ্জিনে স্থাপন করুন (প্রমিত পরিবেশ)
কোডল্যাবের এই অংশটি শুধুমাত্র নোড অ্যাপ ইঞ্জিনে ডেপ্লয় করার জন্য। আপনি আগ্রহী না হলে, পরবর্তী অংশে চলে যান।
এই ডেপ্লয়মেন্টে app.yaml কনফিগারেশন ফাইলটি ব্যবহৃত হয়, যা App Engine-কে একটি মাত্র লাইনের মাধ্যমে বলে দেয় কোন রানটাইম ব্যবহার করতে হবে:
runtime: nodejs16
app.yaml ফাইলটি ক্লাউড ফাংশনস বা ক্লাউড রান কোনোটিই ব্যবহার করে না। যদি আপনি অ্যাপ ইঞ্জিন ব্যবহার করার পরিকল্পনা না করেন, তবে এই ফাইলটি নিরাপদে মুছে ফেলা যেতে পারে। যখন আপনি অ্যাপ ইঞ্জিনে ডেপ্লয় করার জন্য প্রস্তুত হবেন, তখন এই কমান্ডটি চালান:
$ gcloud app deploy
একবার একটি অঞ্চল নির্বাচন করা হলে, gcloud app deploy আউটপুট অনেক সংক্ষিপ্ত হবে এবং দেখতে নিম্নলিখিতের মতো হবে:
Services to deploy: descriptor: [/private/tmp/nodejs/app.yaml] source: [/private/tmp/nodejs] target project: [PROJECT_ID] target service: [default] target version: [2021...] target url: [https://PROJECT_ID.REG_ABBR.appspot.com] target service account: [App Engine default service account] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 2 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REG_ABBR.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse To take a quick anonymous survey, run: $ gcloud survey
এখন যেহেতু আপনার অ্যাপটি বিশ্বজুড়ে উপলব্ধ, আপনি আপনার প্রজেক্ট আইডি সম্বলিত URL-এ এটি অ্যাক্সেস করতে পারবেন এবং স্থানীয় Express সংস্করণের মতোই একটি আউটপুট দেখতে পাবেন, তবে জেনে রাখুন যে এটি ক্লাউডে চলছে এবং বিশ্বজুড়ে উপলব্ধ।

আপনি অনুরোধ জমা দিলে দেখতে পাবেন, এটি অন্য সব ডেপ্লয়মেন্টের মতোই কাজ করে।
৯. বিকল্প ৩: ক্লাউড ফাংশনগুলিতে স্থাপন করুন
কোডল্যাবের এই অংশটি শুধুমাত্র নোড ক্লাউড ফাংশন-এ ডিপ্লয় করার জন্য। আপনি আগ্রহী না হলে, পরবর্তী অংশে চলে যান।
ক্লাউড ফাংশনসে কোনো কনফিগারেশন ফাইল নেই, তাই যখন আপনি ক্লাউড ফাংশনসে ডিপ্লয় করার জন্য প্রস্তুত হবেন, তখন এই কমান্ডটি চালান:
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
আপনার GCP প্রোজেক্টের একটি ডিফল্ট REGION থাকতে পারে, কিন্তু আপনি আপনার ফাংশনটিকে একটি নির্দিষ্ট অঞ্চলে ডেপ্লয় করার জন্য --region ফ্ল্যাগটি ব্যবহার করতে পারেন। অন্যান্য ক্লাউড প্রোডাক্টের মতো ক্লাউড ফাংশনস আপনাকে কোনো প্রম্পট দেখায় না। আপনি যে অঞ্চলই বেছে নিন না কেন, gcloud functions deploy আউটপুটটি দেখতে নিম্নলিখিতের মতো হবে:
Deploying function (may take a while - up to 2 minutes)...⠛ For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx entryPoint: app httpsTrigger: securityLevel: SECURE_OPTIONAL url: https://REGION-PROJECT_ID.cloudfunctions.net/translate ingressSettings: ALLOW_ALL labels: deployment-tool: cli-gcloud name: projects/PROJECT_ID/locations/REGION/functions/translate runtime: nodejs16 serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip status: ACTIVE timeout: 60s updateTime: '2021...' versionId: '...'
এখন যেহেতু আপনার অ্যাপটি বিশ্বজুড়ে উপলব্ধ, তাই ডিপ্লয়মেন্ট আউটপুটে (" httpsTrigger/url " এর অধীনে) দেখানো আপনার প্রজেক্ট আইডি সম্বলিত URL-এ আপনি এটি অ্যাক্সেস করতে পারবেন। URL-টি দেখতে অনেকটা এইরকম হবে: https:// REGION যা আপনার নির্বাচিত অঞ্চল এবং ক্লাউড প্রজেক্ট আইডির উপর ভিত্তি করে পরিবর্তিত PROJECT_ID .cloudfunctions.net/translate -

১০. বিকল্প ৪: ক্লাউড রান-এ ডেপ্লয় করুন
কোডল্যাবের এই অংশটি শুধুমাত্র ক্লাউড রান-এ ডেপ্লয় করার জন্য। আপনি আগ্রহী না হলে, পরবর্তী অংশে চলে যান।
ক্লাউড রান-এ কোনো কনফিগারেশন ফাইল নেই, তাই যখন আপনি ক্লাউড রান-এ ডেপ্লয় করার জন্য প্রস্তুত হবেন, তখন নিচের নির্দেশাবলী অনুসরণ করুন।
এখন এই কমান্ডটি চালিয়ে আপনি আপনার অনুবাদ পরিষেবাটি ক্লাউড রান-এ স্থাপন করতে প্রস্তুত:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
আউটপুটটি নিম্নরূপ হওয়া উচিত এবং পরবর্তী পদক্ষেপের জন্য কিছু নির্দেশনা প্রদান করবে:
Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
ক্লাউড বিল্ডপ্যাক আপনার অ্যাপগুলোকে ক্লাউড রান-এ ঠিক সেভাবেই প্যাক করে, যেভাবে আপনি আপনার অ্যাপটি স্থানীয়ভাবে চালান। Node.js ব্যবহারকারীদের জন্য, এটি npm install এবং npm start চালায়। Python-এর জন্য, এটি pip install -r requirements.txt কমান্ডটি চালায় এবং আপনার Procfile এ থাকা নির্দেশাবলী অনুযায়ী অ্যাপটি চালু করে। ( ক্লাউড বিল্ডপ্যাক দ্বারা সমর্থিত অন্য সব ভাষার ক্ষেত্রেও একই নিয়ম প্রযোজ্য।) বিল্ড প্রক্রিয়াটি সম্পন্ন হলেই আপনার অ্যাপটি ব্যবহারের জন্য প্রস্তুত হয়ে যাবে।
আপনার অ্যাপটি তখন (আঞ্চলিকভাবে ডেপ্লয় করা হলেও) বিশ্বব্যাপী উপলব্ধ হয়, এবং ডেপ্লয়মেন্ট আউটপুটে (" Service URL :" এর অধীনে) দেখানো আপনার প্রজেক্ট আইডি সম্বলিত URL-এ এটি অ্যাক্সেস করা যায়।

কোনো কিছু অনুবাদ করে দেখুন তা কীভাবে কাজ করে!

১১. উপসংহার
অভিনন্দন! আপনি শিখেছেন কীভাবে ক্লাউড ট্রান্সলেশন এপিআই (Cloud Translation API) সক্রিয় ও ব্যবহার করতে হয়, প্রয়োজনীয় ক্রেডেনশিয়াল (credentials) সংগ্রহ করতে হয় এবং একটি সাধারণ ওয়েব অ্যাপ স্থানীয়ভাবে এক্সপ্রেস (Express), অ্যাপ ইঞ্জিন (App Engine), ক্লাউড ফাংশনস (Cloud Functions) এবং/অথবা ক্লাউড রান (Cloud Run)-এ ডেপ্লয় (deploy) করতে হয়। আরও জানতে অথবা এই অ্যাপের অন্যান্য সংস্করণ ও অন্যান্য কোডল্যাবগুলো অ্যাক্সেস করতে অনুগ্রহ করে রিপো ফোল্ডারটি দেখুন।
পরিষ্কার করা
ক্লাউড ট্রান্সলেশন এপিআই আপনাকে প্রতি মাসে একটি নির্দিষ্ট পরিমাণ অক্ষর বিনামূল্যে অনুবাদ করার সুযোগ দেয়। অ্যাপ ইঞ্জিনেরও একটি বিনামূল্যের কোটা আছে, এবং ক্লাউড ফাংশন ও ক্লাউড রানের ক্ষেত্রেও একই নিয়ম প্রযোজ্য। এই কোটা অতিক্রম করলে আপনাকে চার্জ দিতে হবে। আপনি যদি পরবর্তী কোডল্যাবে যেতে চান, তবে আপনার অ্যাপটি বন্ধ করার প্রয়োজন নেই।
তবে, আপনি যদি এখনও পরবর্তী টিউটোরিয়ালে যাওয়ার জন্য প্রস্তুত না হন অথবা আপনার সদ্য ডেপ্লয় করা অ্যাপটি ইন্টারনেট খুঁজে পাবে বলে চিন্তিত হন, তাহলে চার্জ এড়ানোর জন্য আপনার App Engine অ্যাপটি নিষ্ক্রিয় করুন , আপনার Cloud Function মুছে ফেলুন , অথবা আপনার Cloud Run পরিষেবাটি নিষ্ক্রিয় করুন । যখন আপনি পরবর্তী কোডল্যাবে যাওয়ার জন্য প্রস্তুত হবেন, তখন আপনি এটি পুনরায় সক্রিয় করতে পারবেন। অন্যদিকে, আপনি যদি এই অ্যাপ্লিকেশন বা অন্যান্য কোডল্যাব নিয়ে আর কাজ চালিয়ে যেতে না চান এবং সবকিছু পুরোপুরি মুছে ফেলতে চান, তাহলে আপনি আপনার প্রজেক্টটি শাট ডাউন করতে পারেন।
এছাড়াও, গুগল ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে ডেপ্লয় করার জন্য সামান্য বিল্ড এবং স্টোরেজ খরচ হয়। ক্লাউড বিল্ড এবং ক্লাউড স্টোরেজ উভয়েরই নিজস্ব ফ্রি কোটা রয়েছে। অধিক স্বচ্ছতার জন্য, ক্লাউড বিল্ড আপনার অ্যাপ্লিকেশন ইমেজ তৈরি করে, যা পরবর্তীতে ক্লাউড কন্টেইনার রেজিস্ট্রি অথবা এর পরবর্তী সংস্করণ আর্টিফ্যাক্ট রেজিস্ট্রি- তে সংরক্ষণ করা হয়। সেই ইমেজটি সংরক্ষণ করতে এবং সার্ভিসে স্থানান্তরের সময় নেটওয়ার্ক ইগ্রেসের জন্য কোটার কিছু অংশ ব্যবহৃত হয়। তবে, আপনি এমন কোনো অঞ্চলে থাকতে পারেন যেখানে এই ধরনের কোনো ফ্রি টিয়ার নেই, তাই সম্ভাব্য খরচ কমাতে আপনার স্টোরেজ ব্যবহারের বিষয়ে সচেতন থাকুন।
১২. অতিরিক্ত সম্পদ
পরবর্তী বিভাগগুলিতে, এই টিউটোরিয়ালটি সম্পন্ন করে অর্জিত জ্ঞানকে আরও সমৃদ্ধ করার জন্য প্রস্তাবিত অনুশীলনী খুঁজে পাবেন।
অতিরিক্ত অধ্যয়ন
এখন যেহেতু ট্রান্সলেশন এপিআই (Translation API) নিয়ে আপনার কিছুটা অভিজ্ঞতা হয়েছে, চলুন আপনার দক্ষতা আরও বাড়ানোর জন্য কিছু অতিরিক্ত অনুশীলন করা যাক। আপনার শেখার পথ অব্যাহত রাখতে, আমাদের নমুনা অ্যাপটিকে নিম্নলিখিত কাজগুলো করার জন্য পরিবর্তন করুন:
- স্থানীয়ভাবে চালানোর জন্য অথবা গুগল ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে স্থাপন করার জন্য এই কোডল্যাবের বাকি সমস্ত সংস্করণ সম্পূর্ণ করুন ( রিপো README দেখুন)।
- অন্য একটি প্রোগ্রামিং ভাষা ব্যবহার করে এই টিউটোরিয়ালটি সম্পূর্ণ করুন।
- বিভিন্ন উৎস বা লক্ষ্য ভাষা সমর্থন করার জন্য এই অ্যাপ্লিকেশনটি পরিবর্তন করুন।
- একাধিক ভাষায় পাঠ্য অনুবাদ করতে সক্ষম হওয়ার জন্য এই অ্যাপ্লিকেশনটি আপগ্রেড করুন; সমর্থিত লক্ষ্য ভাষাগুলোর একটি পুলডাউন তালিকা যুক্ত করতে টেমপ্লেট ফাইলটি পরিবর্তন করুন।
আরও জানুন
গুগল অ্যাপ ইঞ্জিন
গুগল ক্লাউড ফাংশন
গুগল ক্লাউড রান
গুগল ক্লাউড বিল্ডপ্যাকস, কন্টেইনার রেজিস্ট্রি, আর্টিফ্যাক্ট রেজিস্ট্রি
- ক্লাউড বিল্ডপ্যাক ঘোষণা
- ক্লাউড বিল্ডপ্যাকস রিপো
- ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি হোম পেজ
- ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি ডকুমেন্টেশন
- ক্লাউড কন্টেইনার রেজিস্ট্রি হোম পেজ
- ক্লাউড কন্টেইনার রেজিস্ট্রি ডকুমেন্টেশন
গুগল ক্লাউড ট্রান্সলেশন এবং গুগল এমএল কিট
- ক্লাউড ট্রান্সলেশন হোম পেজ
- ক্লাউড অনুবাদ ডকুমেন্টেশন
- ক্লাউড ট্রান্সলেশন এপিআই ক্লায়েন্ট লাইব্রেরি (সকল ডেভেলপমেন্ট ল্যাঙ্গুয়েজ)
- ক্লাউড ট্রান্সলেশন এপিআই সমর্থিত (কথ্য/লিখিত) ভাষা
- অনুবাদ এপিআই মূল্য নির্ধারণ পৃষ্ঠা
- সমস্ত ক্লাউড এআই/এমএল "বিল্ডিং ব্লক" এপিআই
- গুগল এমএল কিট (মোবাইলের জন্য ক্লাউড এআই/এমএল এপিআই-এর একটি উপসেট)
- গুগল এমএল কিট অনুবাদ এপিআই
অন্যান্য গুগল ক্লাউড পণ্য/পৃষ্ঠা
- গুগল ক্লাউড ক্লায়েন্ট লাইব্রেরি
- গুগল ক্লাউড "সর্বদা বিনামূল্যে" স্তর
- গুগল ক্লাউডের সমস্ত ডকুমেন্টেশন
পাইথন লিঙ্ক
- পাইথন ৩ অ্যাপ ইঞ্জিন কুইকস্টার্ট
- পাইথন ২ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) রানটাইম
- পাইথন ৩ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) রানটাইম
- পাইথন ২ এবং ৩ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) রানটাইমের মধ্যে পার্থক্য
- পাইথন ২ থেকে ৩ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) মাইগ্রেশন গাইড
- পাইথন ক্লাউড ফাংশন কুইকস্টার্ট
- পাইথন ক্লাউড রান কুইকস্টার্ট
- গুগল ক্লাউড পাইথন সমর্থন
- ফ্লাস্ক
নোড.জেএস লিঙ্ক
- নোড.জেএস অ্যাপ ইঞ্জিন কুইকস্টার্ট
- নোড.জেএস অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) রানটাইম
- নোড.জেএস ক্লাউড ফাংশন কুইকস্টার্ট
- নোড.জেএস ক্লাউড রান কুইকস্টার্ট
- গুগল ক্লাউড নোড.জেএস সমর্থন
- এক্সপ্রেস
লাইসেন্স
এই টিউটোরিয়ালটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত, অপরদিকে রিপোজিটরিতে থাকা সোর্স কোডটি অ্যাপাচি ২ লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।