একটি ফুলস্ট্যাক চলচ্চিত্র সুপারিশ সিস্টেম নির্মাণ

1. আপনি শুরু করার আগে

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

এই কোডল্যাবে, আপনি কীভাবে একটি ফুলস্ট্যাক সুপারিশকারী তৈরি করবেন তা শিখবেন:

  • টেনসরফ্লো সুপারিশকারীরা মুভির সুপারিশের জন্য একটি পুনরুদ্ধার এবং একটি র‌্যাঙ্কিং মডেলকে প্রশিক্ষণ দেয়
  • TensorFlow মডেল পরিবেশন করা
  • প্রস্তাবিত সিনেমা প্রদর্শনের জন্য একটি ক্রস-প্ল্যাটফর্ম অ্যাপ তৈরি করতে ফ্লটার

পূর্বশর্ত

  • ডার্টের সাথে ফ্লটার বিকাশের প্রাথমিক জ্ঞান
  • টেনসরফ্লো সহ মেশিন লার্নিং এর প্রাথমিক জ্ঞান, যেমন প্রশিক্ষণ বনাম স্থাপনা
  • সুপারিশ সিস্টেমের সাথে প্রাথমিক পরিচিতি
  • পাইথন, টার্মিনাল এবং ডকার সম্পর্কে প্রাথমিক জ্ঞান

আপনি কি শিখবেন

  • TensorFlow Recommenders ব্যবহার করে কিভাবে পুনরুদ্ধার এবং র‌্যাঙ্কিং মডেলের প্রশিক্ষণ দেওয়া যায়
  • TensorFlow সার্ভিং ব্যবহার করে প্রশিক্ষিত সুপারিশ মডেলগুলি কীভাবে পরিবেশন করবেন
  • প্রস্তাবিত আইটেমগুলি প্রদর্শন করতে কীভাবে একটি ক্রস-প্ল্যাটফর্ম ফ্লাটার অ্যাপ তৈরি করবেন

আপনি কি প্রয়োজন হবে

2. আপনার ফ্লটার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করুন

ফ্লাটার ডেভেলপমেন্টের জন্য, এই কোডল্যাবটি সম্পূর্ণ করার জন্য আপনার দুটি টুকরো সফ্টওয়্যার প্রয়োজন— Flutter SDK এবং একজন সম্পাদক

আপনি এই ডিভাইসগুলির যেকোনো একটি ব্যবহার করে কোডল্যাবের ফ্রন্টএন্ড চালাতে পারেন:

  • আইওএস সিমুলেটর (এক্সকোড সরঞ্জাম ইনস্টল করা প্রয়োজন)।
  • অ্যান্ড্রয়েড এমুলেটর (অ্যান্ড্রয়েড স্টুডিওতে সেটআপ প্রয়োজন)।
  • একটি ব্রাউজার (ডিবাগিংয়ের জন্য Chrome প্রয়োজন)।
  • একটি Windows , Linux , বা macOS ডেস্কটপ অ্যাপ্লিকেশন হিসাবে। আপনি যে প্ল্যাটফর্মে স্থাপন করার পরিকল্পনা করছেন সেখানে আপনাকে অবশ্যই বিকাশ করতে হবে। সুতরাং, আপনি যদি একটি উইন্ডোজ ডেস্কটপ অ্যাপ বিকাশ করতে চান, তাহলে যথাযথ বিল্ড চেইন অ্যাক্সেস করতে আপনাকে অবশ্যই উইন্ডোজে বিকাশ করতে হবে। অপারেটিং সিস্টেম-নির্দিষ্ট প্রয়োজনীয়তা রয়েছে যা docs.flutter.dev/desktop- এ বিস্তারিতভাবে কভার করা হয়েছে।

ব্যাকএন্ডের জন্য, আপনার প্রয়োজন হবে:

  • একটি লিনাক্স মেশিন বা একটি ইন্টেল-ভিত্তিক ম্যাক।

3. সেট আপ করুন

এই কোডল্যাবের জন্য কোড ডাউনলোড করতে:

  1. এই কোডল্যাবের জন্য GitHub সংগ্রহস্থলে নেভিগেট করুন।
  2. এই কোডল্যাবের জন্য সমস্ত কোড ডাউনলোড করতে কোড > জিপ ডাউনলোড করুন ক্লিক করুন।

2cd45599f51fb8a2.png

  1. আপনার প্রয়োজনীয় সমস্ত সংস্থান সহ একটি codelabs-main রুট ফোল্ডার আনপ্যাক করতে ডাউনলোড করা জিপ ফাইলটি আনজিপ করুন।

এই কোডল্যাবের জন্য, আপনার শুধুমাত্র সংগ্রহস্থলের tfrs-flutter/ সাবডিরেক্টরিতে থাকা ফাইলগুলির প্রয়োজন, যাতে একাধিক ফোল্ডার রয়েছে:

  • step0 থেকে step5 ফোল্ডারে স্টার্টার কোড থাকে যা আপনি এই কোডল্যাবের প্রতিটি ধাপের জন্য তৈরি করেন।
  • finished ফোল্ডারে সমাপ্ত নমুনা অ্যাপ্লিকেশনের জন্য সম্পূর্ণ কোড রয়েছে।
  • প্রতিটি ফোল্ডারে একটি backend সাবফোল্ডার থাকে, যার মধ্যে রয়েছে সুপারিশ ইঞ্জিন ব্যাকএন্ড কোড এবং একটি frontend সাবফোল্ডার, যার মধ্যে রয়েছে ফ্লটার ফ্রন্টএন্ড কোড

4. প্রকল্পের জন্য নির্ভরতা ডাউনলোড করুন

ব্যাকএন্ড

আমরা আমাদের ব্যাকএন্ড তৈরি করতে ফ্লাস্ক ব্যবহার করতে যাচ্ছি। আপনার টার্মিনাল খুলুন এবং নিম্নলিখিত চালান:

pip install Flask flask-cors requests numpy

সামনের অংশ

  1. ভিএস কোডে, ফাইল > ফোল্ডার খুলুন ক্লিক করুন এবং তারপরে আপনি আগে ডাউনলোড করা সোর্স কোড থেকে step0 ফোল্ডারটি নির্বাচন করুন।
  2. step0/frontend/lib/main.dart ফাইল খুলুন। আপনি যদি একটি VS কোড ডায়ালগ দেখতে পান যা আপনাকে স্টার্টার অ্যাপের জন্য প্রয়োজনীয় প্যাকেজগুলি ডাউনলোড করতে অনুরোধ করে, তাহলে প্যাকেজ পান ক্লিক করুন।
  3. আপনি যদি এই ডায়ালগটি দেখতে না পান, আপনার টার্মিনাল খুলুন এবং তারপর step0/frontend ফোল্ডারে flutter pub get কমান্ড চালান।

7ada07c300f166a6.png

5. ধাপ 0: স্টার্টার অ্যাপটি চালান

  1. VS কোডে step0/frontend/lib/main.dart ফাইলটি খুলুন, নিশ্চিত করুন যে Android এমুলেটর বা iOS সিমুলেটর সঠিকভাবে সেট আপ হয়েছে এবং স্ট্যাটাস বারে প্রদর্শিত হচ্ছে।

উদাহরণস্বরূপ, আপনি যখন Android এমুলেটরের সাথে Pixel 5 ব্যবহার করেন তখন আপনি যা দেখতে পান তা এখানে:

9767649231898791.png

আপনি যখন iOS সিমুলেটর দিয়ে iPhone 13 ব্যবহার করেন তখন আপনি যা দেখেন তা এখানে:

95529e3a682268b2.png

  1. ক্লিক a19a0c68bc4046e6.png ডিবাগিং শুরু করুন

অ্যাপটি চালান এবং অন্বেষণ করুন

অ্যাপটি আপনার অ্যান্ড্রয়েড এমুলেটর বা iOS সিমুলেটরে চালু করা উচিত। UI বেশ সোজা। একটি পাঠ্য ক্ষেত্র রয়েছে যা ব্যবহারকারীকে ব্যবহারকারী আইডি হিসাবে পাঠ্য টাইপ করতে দেয়। Flutter অ্যাপটি ব্যাকএন্ডে ক্যোয়ারী রিকোয়েস্ট পাঠাবে, যা 2 টি রেকমেন্ডেশন মডেল চালায় এবং মুভি রেকমেন্ডেশনের র‍্যাঙ্ক করা তালিকা প্রদান করে। রেসপন্স পাওয়ার পর ফ্রন্টএন্ড UI-তে ফলাফল প্রদর্শন করবে।

d21427db9587560f.png73e8272a5ce8dfbc.png

আপনি যদি এখনই সুপারিশ করুন ক্লিক করেন, কিছুই হবে না কারণ অ্যাপটি এখনও ব্যাকএন্ডের সাথে যোগাযোগ করতে পারে না।

6. ধাপ 1: সুপারিশ ইঞ্জিনের জন্য পুনরুদ্ধার এবং র‌্যাঙ্কিং মডেল তৈরি করুন

বাস্তব-বিশ্বের সুপারিশ ইঞ্জিনগুলি প্রায়শই একাধিক পর্যায়ে গঠিত হয়:

  1. পুনরুদ্ধার পর্যায় সমস্ত সম্ভাব্য প্রার্থীদের থেকে শত শত প্রার্থীর প্রাথমিক সেট নির্বাচন করার জন্য দায়ী। এই মডেলটির মূল উদ্দেশ্য হল ব্যবহারকারীর আগ্রহ নেই এমন সমস্ত প্রার্থীকে দক্ষতার সাথে আউট করা। কারণ পুনরুদ্ধার মডেলটি লক্ষ লক্ষ প্রার্থীর সাথে কাজ করতে পারে, এটি গণনাগতভাবে দক্ষ হতে হবে।
  2. র‌্যাঙ্কিং পর্যায়টি পুনরুদ্ধার মডেলের আউটপুট নেয় এবং সেরা সম্ভাব্য মুষ্টিমেয় সুপারিশগুলি নির্বাচন করতে তাদের সূক্ষ্ম সুর করে। এর কাজ হল ব্যবহারকারীর আগ্রহী হতে পারে এমন আইটেমগুলির সেটগুলিকে সংকুচিত করা যাতে শত শত ক্রমে সম্ভাব্য প্রার্থীদের একটি সংক্ষিপ্ত তালিকা তৈরি করা হয়।
  3. পোস্ট-র‍্যাঙ্কিং পর্যায় বৈচিত্র্য, সতেজতা এবং ন্যায্যতা নিশ্চিত করতে সাহায্য করে এবং প্রার্থী আইটেমগুলিকে কয়েক ডজনের ক্রমে দরকারী সুপারিশের সেটে পুনর্গঠিত করে।

70dfc0d7e989164f.png

এই কোডল্যাবের জন্য, আপনি জনপ্রিয় মুভিলেন্স ডেটাসেট ব্যবহার করে একটি পুনরুদ্ধার মডেল এবং একটি র‌্যাঙ্কিং মডেল প্রশিক্ষণ দেন। আপনি Colab-এর মাধ্যমে নিচের ট্রেনিং কোডটি খুলতে পারেন এবং নির্দেশাবলী অনুসরণ করতে পারেন:

7. ধাপ 2: সুপারিশ ইঞ্জিন ব্যাকএন্ড তৈরি করুন

এখন যেহেতু আপনি পুনরুদ্ধার এবং র‌্যাঙ্কিং মডেলগুলিকে প্রশিক্ষণ দিয়েছেন, আপনি সেগুলি স্থাপন করতে এবং একটি ব্যাকএন্ড তৈরি করতে পারেন।

TensorFlow পরিবেশন শুরু করুন

যেহেতু প্রস্তাবিত চলচ্চিত্রের তালিকা তৈরি করতে আপনাকে পুনরুদ্ধার এবং র‌্যাঙ্কিং মডেল উভয়ই ব্যবহার করতে হবে, তাই আপনি টেনসরফ্লো সার্ভিং ব্যবহার করে একই সময়ে উভয়ই স্থাপন করবেন।

  • আপনার টার্মিনালে, আপনার কম্পিউটারের step2/backend ফোল্ডারে যান এবং ডকারের সাথে TensorFlow পরিবেশন শুরু করুন:
docker run -t --rm -p 8501:8501 -p 8500:8500 -v "$(pwd)/:/models/" tensorflow/serving --model_config_file=/models/models.config

ডকার স্বয়ংক্রিয়ভাবে টেনসরফ্লো সার্ভিং ইমেজটি প্রথমে ডাউনলোড করে, যা এক মিনিট সময় নেয়। এর পরে, টেনসরফ্লো পরিবেশন শুরু করা উচিত। লগটি এই কোড স্নিপেটের মতো হওয়া উচিত:

2022-04-24 09:32:06.461702: I tensorflow_serving/model_servers/server_core.cc:465] Adding/updating models.
2022-04-24 09:32:06.461843: I tensorflow_serving/model_servers/server_core.cc:591]  (Re-)adding model: retrieval
2022-04-24 09:32:06.461907: I tensorflow_serving/model_servers/server_core.cc:591]  (Re-)adding model: ranking
2022-04-24 09:32:06.576920: I tensorflow_serving/core/basic_manager.cc:740] Successfully reserved resources to load servable {name: retrieval version: 123}
2022-04-24 09:32:06.576993: I tensorflow_serving/core/loader_harness.cc:66] Approving load for servable version {name: retrieval version: 123}
2022-04-24 09:32:06.577011: I tensorflow_serving/core/loader_harness.cc:74] Loading servable version {name: retrieval version: 123}
2022-04-24 09:32:06.577848: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:38] Reading SavedModel from: /models/retrieval/exported-retrieval/123
2022-04-24 09:32:06.583809: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:90] Reading meta graph with tags { serve }
2022-04-24 09:32:06.583879: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:132] Reading SavedModel debug info (if present) from: /models/retrieval/exported-retrieval/123
2022-04-24 09:32:06.584970: I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-04-24 09:32:06.629900: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:206] Restoring SavedModel bundle.
2022-04-24 09:32:06.634662: I external/org_tensorflow/tensorflow/core/platform/profile_utils/cpu_utils.cc:114] CPU Frequency: 2800000000 Hz
2022-04-24 09:32:06.672534: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:190] Running initialization op on SavedModel bundle at path: /models/retrieval/exported-retrieval/123
2022-04-24 09:32:06.673629: I tensorflow_serving/core/basic_manager.cc:740] Successfully reserved resources to load servable {name: ranking version: 123}
2022-04-24 09:32:06.673765: I tensorflow_serving/core/loader_harness.cc:66] Approving load for servable version {name: ranking version: 123}
2022-04-24 09:32:06.673786: I tensorflow_serving/core/loader_harness.cc:74] Loading servable version {name: ranking version: 123}
2022-04-24 09:32:06.674731: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:38] Reading SavedModel from: /models/ranking/exported-ranking/123
2022-04-24 09:32:06.683557: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:90] Reading meta graph with tags { serve }
2022-04-24 09:32:06.683601: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:132] Reading SavedModel debug info (if present) from: /models/ranking/exported-ranking/123
2022-04-24 09:32:06.688665: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:277] SavedModel load for tags { serve }; Status: success: OK. Took 110815 microseconds.
2022-04-24 09:32:06.690019: I tensorflow_serving/servables/tensorflow/saved_model_warmup_util.cc:59] No warmup data file found at /models/retrieval/exported-retrieval/123/assets.extra/tf_serving_warmup_requests
2022-04-24 09:32:06.693025: I tensorflow_serving/core/loader_harness.cc:87] Successfully loaded servable version {name: retrieval version: 123}
2022-04-24 09:32:06.702594: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:206] Restoring SavedModel bundle.
2022-04-24 09:32:06.745361: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:190] Running initialization op on SavedModel bundle at path: /models/ranking/exported-ranking/123
2022-04-24 09:32:06.772363: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:277] SavedModel load for tags { serve }; Status: success: OK. Took 97633 microseconds.
2022-04-24 09:32:06.774853: I tensorflow_serving/servables/tensorflow/saved_model_warmup_util.cc:59] No warmup data file found at /models/ranking/exported-ranking/123/assets.extra/tf_serving_warmup_requests
2022-04-24 09:32:06.777706: I tensorflow_serving/core/loader_harness.cc:87] Successfully loaded servable version {name: ranking version: 123}
2022-04-24 09:32:06.778969: I tensorflow_serving/model_servers/server_core.cc:486] Finished adding/updating models
2022-04-24 09:32:06.779030: I tensorflow_serving/model_servers/server.cc:367] Profiler service is enabled
2022-04-24 09:32:06.784217: I tensorflow_serving/model_servers/server.cc:393] Running gRPC ModelServer at 0.0.0.0:8500 ...
[warn] getaddrinfo: address family for nodename not supported
2022-04-24 09:32:06.785748: I tensorflow_serving/model_servers/server.cc:414] Exporting HTTP/REST API at:localhost:8501 ...
[evhttp_server.cc : 245] NET_LOG: Entering the event loop ...

একটি নতুন শেষ পয়েন্ট তৈরি করুন

যেহেতু টেনসরফ্লো সার্ভিং একাধিক ক্রমিক মডেল 'চেইনিং' সমর্থন করে না, তাই আপনাকে একটি নতুন পরিষেবা তৈরি করতে হবে যা পুনরুদ্ধার এবং র‌্যাঙ্কিং মডেলগুলিকে সংযুক্ত করে।

  • step2/backend/recommendations.py ফাইলের get_recommendations() ফাংশনে এই কোডটি যোগ করুন:
user_id = request.get_json()["user_id"]
retrieval_request = json.dumps({"instances": [user_id]})
retrieval_response = requests.post(RETRIEVAL_URL, data=retrieval_request)
movie_candidates = retrieval_response.json()["predictions"][0]["output_2"]

ranking_queries = [
    {"user_id": u, "movie_title": m}
    for (u, m) in zip([user_id] * NUM_OF_CANDIDATES, movie_candidates)
]
ranking_request = json.dumps({"instances": ranking_queries})
ranking_response = requests.post(RANKING_URL, data=ranking_request)
movies_scores = list(np.squeeze(ranking_response.json()["predictions"]))
ranked_movies = [
    m[1] for m in sorted(list(zip(movies_scores, movie_candidates)), reverse=True)
]

return make_response(jsonify({"movies": ranked_movies}), 200)

ফ্লাস্ক পরিষেবা শুরু করুন

এখন আপনি ফ্লাস্ক পরিষেবা শুরু করতে পারেন।

  • আপনার টার্মিনালে, step2/backend/ ফোল্ডারে যান এবং নিম্নলিখিতটি চালান:
FLASK_APP=recommender.py FLASK_ENV=development flask run

ফ্লাস্ক http://localhost:5000/recommend এ একটি নতুন এন্ডপয়েন্ট দাঁড় করাবে। আপনি নীচের হিসাবে লগ দেখতে হবে:

 * Serving Flask app 'recommender.py' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 705-382-264
127.0.0.1 - - [25/Apr/2022 19:44:47] "POST /recommend HTTP/1.1" 200 -

এটি প্রত্যাশিত হিসাবে কাজ করছে তা নিশ্চিত করতে আপনি শেষ পয়েন্টে একটি নমুনা অনুরোধ পাঠাতে পারেন:

curl -X POST -H "Content-Type: application/json" -d '{"user_id":"42"}' http://localhost:5000/recommend

এন্ডপয়েন্ট ব্যবহারকারী 42 এর জন্য প্রস্তাবিত চলচ্চিত্রগুলির একটি তালিকা ফিরিয়ে দেবে:

{
  "movies": [
    "While You Were Sleeping (1995)",
    "Preacher's Wife, The (1996)",
    "Michael (1996)",
    "Lion King, The (1994)",
    "Father of the Bride Part II (1995)",
    "Sleepless in Seattle (1993)",
    "101 Dalmatians (1996)",
    "Bridges of Madison County, The (1995)",
    "Rudy (1993)",
    "Jack (1996)"
  ]
}

এটাই! আপনি সফলভাবে একটি ব্যাকএন্ড তৈরি করেছেন যাতে একটি ব্যবহারকারী আইডির উপর ভিত্তি করে চলচ্চিত্রগুলি সুপারিশ করা হয়৷

8. ধাপ 3: Android এবং iOS এর জন্য Flutter অ্যাপ তৈরি করুন

ব্যাকএন্ড প্রস্তুত। আপনি Flutter অ্যাপ থেকে সিনেমার সুপারিশগুলি জিজ্ঞাসা করতে এটিতে অনুরোধ পাঠানো শুরু করতে পারেন।

ফ্রন্টএন্ড অ্যাপটি মোটামুটি সহজ। এটিতে শুধুমাত্র একটি টেক্সটফিল্ড রয়েছে যা ব্যবহারকারীর আইডি নেয় এবং আপনার তৈরি করা ব্যাকএন্ডে অনুরোধ ( recommend() ফাংশনে) পাঠায়। প্রতিক্রিয়া পাওয়ার পরে, অ্যাপ UI একটি ListView এ প্রস্তাবিত চলচ্চিত্রগুলি প্রদর্শন করে।

  • step3/frontend/lib/main.dart ফাইলে recommend() ফাংশনে এই কোডটি যোগ করুন:
final response = await http.post(
  Uri.parse('http://' + _server + ':5000/recommend'),
  headers: <String, String>{
    'Content-Type': 'application/json',
  },
  body: jsonEncode(<String, String>{
    'user_id': _userIDController.text,
  }),
);

অ্যাপটি ব্যাকএন্ড থেকে প্রতিক্রিয়া পাওয়ার পরে, আপনি নির্দিষ্ট ব্যবহারকারীর জন্য প্রস্তাবিত চলচ্চিত্রগুলির তালিকা প্রদর্শন করতে UI আপডেট করেন।

  • উপরের কোডের ঠিক নিচে এই কোডটি যোগ করুন:
if (response.statusCode == 200) {
  return List<String>.from(jsonDecode(response.body)['movies']);
} else {
  throw Exception('Error response');
}

চালাও এটা

  1. ক্লিক a19a0c68bc4046e6.png ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন।
  2. একটি ব্যবহারকারী আইডি লিখুন (যেমন, 42) এবং তারপরে সুপারিশ নির্বাচন করুন।

badb59d8b96959ae.pnga0d2d4020aebfb0a.png

9. ধাপ 4: ডেস্কটপ প্ল্যাটফর্মে Flutter অ্যাপ চালান

অ্যান্ড্রয়েড এবং আইওএস ছাড়াও, ফ্লাটার লিনাক্স, ম্যাক এবং উইন্ডোজ সহ ডেস্কটপ প্ল্যাটফর্মগুলিকে সমর্থন করে।

লিনাক্স

  1. লক্ষ্য ডিভাইস সেট করা আছে তা নিশ্চিত করুন 86cba523de82b4f9.png VSCode এর স্ট্যাটাস বারে।
  2. ক্লিক a19a0c68bc4046e6.png ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন।
  3. একটি ব্যবহারকারী আইডি লিখুন (যেমন, 42) এবং তারপরে সুপারিশ নির্বাচন করুন।

2665514231033f1.png

ম্যাক

  1. ম্যাকের জন্য, আপনাকে উপযুক্ত এনটাইটেলমেন্ট সেট আপ করতে হবে যেহেতু অ্যাপটি ব্যাকএন্ডে HTTP অনুরোধ পাঠাবে। আরো বিস্তারিত জানার জন্য অনুগ্রহ করে এনটাইটেলমেন্ট এবং অ্যাপ স্যান্ডবক্স দেখুন।

এই কোডটি যথাক্রমে step4/frontend/macOS/Runner/DebugProfile.entitlements এবং step4/frontend/macOS/Runner/Release.entitlements এ যোগ করুন:

<key>com.apple.security.network.client</key>
<true/>
  1. লক্ষ্য ডিভাইস সেট করা আছে তা নিশ্চিত করুন eb4b0b5563824138.png VSCode এর স্ট্যাটাস বারে।
  2. ক্লিক a19a0c68bc4046e6.png ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন।
  3. একটি ব্যবহারকারী আইডি লিখুন (যেমন, 42) এবং তারপরে সুপারিশ নির্বাচন করুন।

860d523a7ac537e0.png

উইন্ডোজ

  1. লক্ষ্য ডিভাইস সেট করা আছে তা নিশ্চিত করুন 9587be1bb375bc0f.png VSCode এর স্ট্যাটাস বারে।
  2. ক্লিক a19a0c68bc4046e6.png ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন।
  3. একটি ব্যবহারকারী আইডি লিখুন (যেমন, 42) এবং তারপরে সুপারিশ নির্বাচন করুন।

7d77c1e52a5927fc.png

10. ধাপ 5: ওয়েব প্ল্যাটফর্মে Flutter অ্যাপটি চালান

আপনি আরও একটি জিনিস করতে পারেন তা হল Flutter অ্যাপে ওয়েব সমর্থন যোগ করা। ডিফল্টরূপে ওয়েব প্ল্যাটফর্মটি স্বয়ংক্রিয়ভাবে ফ্লাটার অ্যাপের জন্য সক্ষম হয়, তাই আপনাকে যা করতে হবে তা হল এটি চালু করা।

  1. লক্ষ্য ডিভাইস সেট করা আছে তা নিশ্চিত করুন 71db93efa928d15d.png VSCode এর স্ট্যাটাস বারে।
  2. ক্লিক a19a0c68bc4046e6.png ডিবাগিং শুরু করুন এবং তারপরে Chrome ব্রাউজারে অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন।
  3. একটি ব্যবহারকারী আইডি লিখুন (যেমন, 42) এবং তারপরে সুপারিশ নির্বাচন করুন।

9376e1e432c18bef.png

11. অভিনন্দন

আপনি আপনার ব্যবহারকারীদের সিনেমা সুপারিশ করার জন্য একটি ফুলস্ট্যাক অ্যাপ তৈরি করেছেন!

যদিও অ্যাপটি শুধুমাত্র সিনেমার সুপারিশ করে, আপনি একটি শক্তিশালী সুপারিশ ইঞ্জিন তৈরির সামগ্রিক কার্যপ্রবাহ শিখেছেন এবং একটি ফ্লাটার অ্যাপে সুপারিশগুলি গ্রহণ করার দক্ষতা অর্জন করেছেন। আপনি যা শিখেছেন তা সহজেই অন্যান্য পরিস্থিতিতে প্রয়োগ করতে পারেন (যেমন, ইকমার্স, খাবার এবং ছোট ভিডিও)।

আরও জানুন