আক্কা / এরলং-এ অভিনেতাদের ব্যবহার করা কখন ভাল নয়?


58

আমি এখন প্রতিদিন 7-8 মাস ধরে আককার সাথে কাজ করছি। যখন আমি শুরু করেছি, আমি অ্যাপ্লিকেশনগুলিতে কাজ করব এবং লক্ষ্য করব যে বেশিরভাগ বস্তুর মধ্যে যোগাযোগের জন্য অভিনেতা সিস্টেমের অভ্যন্তরে মূলত যে কোনও জায়গায় ব্যবহার করা হবে। তাই আমিও তাই করেছি - এক্স / ওয়াই / জেড এর জন্য অন্য অভিনেতাকে স্পিন করুন।

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

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

সুতরাং আমার প্রশ্নটি হল - অভিনেতাদের ব্যবহারের কোনও খারাপ সময় আছে কি? আমি কৌতূহল করছি কীভাবে এরলং দেখায় এবং সত্যই অন্যান্য লোকদের অন্তর্দৃষ্টি পছন্দ করে। বা অভিনেতা ব্যবহারের আশেপাশে কিছু নীতি থাকলে।


কী ধরণের চাকরি মাসের জন্য দৈনিক আক্কার সাথে প্রতিদিন কাজ করার সুযোগ দেয়?
ডেন

3
ভাল। :) অথবা নিজেই পরিবর্তন করুন।
জেসনজি

আমি বিশেষত জানতে চাই askযে কোনও অভিনেতাকে ইনগ্রেড করার জন্য এবং কেবল একটি সমতল ব্যবহারের মধ্যে ট্রেড অফগুলি কী Future
ম্যাক্স হাইবার

2
আমি কয়েক বছর পরে আক্কা সম্পর্কে একটি বই লিখতে শেষ করেছি এবং আমি মনে করি আপনি এটির সমষ্টিটি করতে পারেন: আপনার যদি কিছু রাজ্য থাকে - যেমন একটি পাল্টা - একাধিক থ্রেড পড়া এবং সেই মান থেকে / লিখতে একে অপরের উপর চাপ পড়বে ডাব্লু / ও সিঙ্ক্রোনাইজেশন এবং লকিং। যদি আপনি সেই অভিনেত্রীর ভিতরে এই অবস্থাটি রেখে দেন তবে হঠাৎ আপনি নিশ্চিত হয়ে উঠতে পারেন যে এটি নিরাপদে অ্যাক্সেস পেয়েছে এবং আপনি লেখাগুলি বাদ দিচ্ছেন না বা বাসি পড়া পাচ্ছেন না। এরলং এবং আক্কায় অভিনেতারাও ধরে নিয়েছেন যে অবস্থা খারাপ হতে পারে এবং অভিনেতা ত্রুটি ফেলতে পারে যাতে আপনার কিছু স্ব-নিরাময় সিস্টেমের বৈশিষ্ট্য রয়েছে have
ফিউচারগুলি

বহু বছর পরে আমি একজন ইরং / এলিক্সার প্রোগ্রামার এবং আমি নতুন অন্তর্দৃষ্টি দিয়ে এই ফিরে আসতে থাকি :) এলিক্সিরটি একেবারে আলাদা কারণ প্রক্রিয়াগুলির বিকল্প হিসাবে কোনও বস্তু নেই তাই আপনার যখন রাষ্ট্রের প্রয়োজন হয় তখন প্রক্রিয়া সর্বদা নির্মিত হয় । এটি কেবল একই সাথে ঘটে থাকে। এটি এখনও সেরা হিউরিস্টিক।
জেসনজি

উত্তর:


23

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

  • আমি মনে করি আক্কা, কারণ এটি বার্তাগুলির সাথে কাজ করে, একটি "ধাক্কা মানসিকতা" উত্সাহ দেয়। প্রায়শই, একযোগের জন্য, আমি তর্ক করব এটি আপনি চান তা নয়। টানুন অনেক বেশি নিরাপদ। উদাহরণস্বরূপ, বিতরণ সিস্টেমগুলির জন্য একটি সাধারণ প্যাটার্ন হ'ল কর্মীদের একটি সারিতে তথ্য প্রক্রিয়াকরণ করার সেট রয়েছে । স্পষ্টতই আক্কায় এটি সম্ভব তবে এটি প্রথম চেষ্টা করা লোক হিসাবে চেষ্টা করার কথা বলে মনে হচ্ছে না । আক্কা টেকসই মেলবক্সও সরবরাহ করে তবে এটি নির্ভর করে আপনি কীভাবে সেগুলি ব্যবহার করেন - ভারসাম্য / পুনরায় বরাদ্দকরণের কাজের জন্য প্রতিটি কর্মী সারির তুলনায় একটি একক ভাগ করা সারি অনেক বেশি নমনীয়।
  • অভিনেতাদের সাথে আপনার ক্লাস প্রতিস্থাপনের মানসিকতায় প্রবেশ করা সহজ। আসলে কিছু লোক এমনকি অভিনেতাদের কেবল একটি কাজ করা উচিত বলে এটিকে সমর্থন করে বলে মনে হয় । যৌক্তিক উপসংহারে নিয়ে যাওয়া এই জেসন বর্ণিত হিসাবে কোডের জটিলতা বাড়ে, কারণ যদি প্রতিটি শ্রেণি অভিনেতা হয় তবে এটি প্রচুর অতিরিক্ত বার্তা হয় এবং ব্লকগুলি গ্রহণ / প্রেরণ করে। কোডটি বোঝা ও পরীক্ষা করা আরও শক্ত করে তোলে কারণ আপনি ইন্টারফেসের আনুষ্ঠানিকতা হারাতে পারেন - এবং আমি নিশ্চিত নই যে মন্তব্যগুলি এর সমাধান । এছাড়াও আক্কার কিংবদন্তী দক্ষতা সত্ত্বেও , আমি সন্দেহ করি যে অভিনেতার বিস্তার কোনও ভাল ধারণা কর্মের মতো নয় - যখন আমরা জাভা থ্রেড ব্যবহার করি তখন আমরা জানি যে তারা মূল্যবান এবং সে অনুযায়ী তাদের সংরক্ষণ করে।
  • এটি পূর্ববর্তী পয়েন্টের সাথে সম্পর্কিত, তবে আরেকটি বিরক্তি হ'ল নোয়েল এবং পিনো হাইলাইট করা টাইপের তথ্য হারাতে পারে, কারণ আমাদের অনেকের জন্যই আমরা পাইথনের মতো অন্যান্য ভাষার চেয়ে স্কালা ব্যবহার করছি। এর চারপাশে কয়েকটি উপায় রয়েছে তবে সেগুলি হয় মানহীন , প্রস্তাবিত বা পরীক্ষামূলক নয়
  • অবশেষে একমত হওয়া, এমনকি যদি আপনার "একে একে ক্রাশ হতে দিন" মানসিকতা পাওয়া শক্ত হয় তবে। বিকল্প প্রোগ্রামিং মডেলগুলি সহায়তা করতে পারে তবে তারা সমস্যাগুলি দূরে সরিয়ে দেয় না - তারা সেগুলি পরিবর্তন করে - এজন্য তাদের সম্পর্কে আনুষ্ঠানিকভাবে চিন্তা করা ভাল । জো এভারেজ বিকাশকারী কেন রেবিট এমকিউ, স্টর্ম, হডোপ, স্পার্ক, কাফকা বা নোএসকিউএল ডেটাবেসগুলির মতো তৈরি বিল্ট সরঞ্জামগুলিতে পৌঁছায় also আক্কায় কিছু প্রাক-বিল্ট সরঞ্জাম এবং উপাদান রয়েছে যা দুর্দান্ত is

জেসনের মতো, আমি এখানে অন্য লোকের অন্তর্দৃষ্টি শুনতে আগ্রহী। আমি কীভাবে উপরের কয়েকটি সমস্যা সমাধান করতে এবং আক্কাকে আরও ভালভাবে ব্যবহার করতে পারি?



"ইনপ্রেটিশন ওভার ইনরিয়েন্স" নির্ভরতা ইনজেকশনের জন্য এখনও কার্যকর। উদাহরণস্বরূপ, প্রপস হিসাবে নির্ভরতা পাস (কনস্ট্রাক্টর প্যারাম ব্যবহার করে)। তখন সমস্যাটি তদারকি হবে - তৈরি করা অভিনেতা অভিনেতা ব্যতীত অন্য কোথাও তদারকি করবেন। শীর্ষে স্তরের তৈরি অভিনেতাদের চারপাশে তদারকির কৌশলটি মোড়ানোর জন্য একটি রাউটার ব্যবহার করা যেতে পারে তবে পবিত্র যে এখন বেশ জটিল! আমি অনুমান করি কেক একটি ভাল সমাধান হতে পারে - উদাহরণস্বরূপ একটি ডিবি পরিষেবা অভিনেতার জন্য অভিনেতা সৃষ্টির সাথে একটি বৈশিষ্ট্য অর্জন করুন। তারপরে পাঠ্য প্রসঙ্গে কেবল একটি পরীক্ষামূলক মক / স্টাব ডিবি পরিষেবা বৈশিষ্ট্য ব্যবহার করুন।
জেসনজি

1
হ্যাঁ, ঠিক - নির্ভরতা ইনজেকশন দিয়ে তদারকি ভাল কাজ করে না। ক্লাসের চেয়ে কারখানাটি ইনজেকশন করা দরকার ছিল এমনও আমার নজির রয়েছে, অন্যথায় বন্ধের বন্ধন সমস্যা দেখা দিয়েছে - আক্কার থ্রেডের চিকিত্সার কারণে আমি অনুমান করছি।
মার্ক বাটলার

আমি মনে করি এটি কোনও খারাপ ধারণা নয় - ধন্যবাদ চিহ্ন - আমি সম্ভবত এটি সম্পর্কে কিছুটা লিখতে চেষ্টা করেছি এবং এটি সামাজিকীকরণ করতে পারি। আপনি এমন কিছু ইনজেকশন করতে পারেন যা প্রপস সম্ভবত দেয়? ধরণের একটি অভিনেতার কারখানা যেখানে গ্রাহক অভিনেতাকে তাত্পর্যপূর্ণ করতে পারেন। উদাহরণস্বরূপ Def পদ্ধতি (আরগ) = সেই (psuedo?) ফ্যাক্টরি থেকে প্রপসগুলি (নতুন অভিনেতাউথআর্গস (আরগ)) রিটার্ন করুন যাতে আপনি অভিনেতাকে সঠিক প্রসঙ্গে তৈরি করতে পারেন। এটি ডিআই এর জন্য কেক সমাধানের জন্য একটি ভাল ধারণা এবং একটি ভাল লক্ষ্য বলে মনে হচ্ছে।
জেসনজি

আমি সবেমাত্র এই কোর্সটি অনুসরণ করা শুরু করেছি: coursera.org/course/posa যদিও এটি মূলত লোকেরা অ্যান্ড্রয়েড প্রোগ্রামিংয়ের উদ্দেশ্যে করা হয়েছে, এটি জাভাতে সম্মতিতে একটি ভাল ওভারভিউও রয়েছে। সুতরাং আমি যে বিষয়টির বিষয়ে ভাবছি তা হ'ল "আক্কা কি কিছু ঘণ্টা এবং শিসিসহ ইভেন্ট লুপগুলির অভিনব রূপ নয় (কারণ আপনি বিভিন্ন থ্রেডে ইভেন্টের লুপগুলি রাখতে পারেন)?"
মার্ক বাটলার

21

অভিনেতা মডেলটি কীসের জন্য ব্যবহৃত হয় তা বিবেচনা করা উচিত: অভিনেতা মডেল

  1. একটি সহকারী মডেল
  2. যা পরিবর্তনীয় স্থানে একযোগে অ্যাক্সেস এড়ায়
  3. সংমিশ্রণ সরবরাহের জন্য অ্যাসিনক্রোনাস যোগাযোগ ব্যবস্থা ব্যবহার করা।

এটি মূল্যবান কারণ একাধিক থ্রেড থেকে ভাগ করা রাষ্ট্র ব্যবহার করা সত্যিই শক্ত হয়ে যায়, বিশেষত যখন ভাগ করা রাষ্ট্রের বিভিন্ন উপাদানগুলির মধ্যে সম্পর্ক থাকে যা অবশ্যই সিঙ্ক্রোনাইজড রাখতে হবে। তবে, যদি আপনার ডোমেন উপাদান থাকে তবে:

  • আপনি সম্মতি বা মঞ্জুরি দেয় না OR
  • আপনি পরিবর্তনীয় স্থিতি (কার্যকরী প্রোগ্রামিংয়ের মতো), ওআরকে অনুমতি দেবেন না
  • আপনাকে অবশ্যই কিছু সিঙ্ক্রোনাস যোগাযোগ ব্যবস্থার উপর নির্ভর করতে হবে,

তাহলে অভিনেতা মডেল খুব বেশি (যদি থাকে) কোনও সুবিধা দেয় না।

আশা করি এইটি কাজ করবে.


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

আমার ধারণা, রেডিসের সাথে যোগাযোগের জন্য দায়িত্বে থাকা অভিনেতা ব্যতিক্রম পেয়ে পুনরায় আরম্ভ করবেন।
জেসনজি

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

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

12

আপনার অন্তর্দৃষ্টি সঠিক, আইএমএইচও। অভিনেতাদের সর্বত্র ব্যবহার করা প্রবাদযুক্ত হাতুড়ি থাকা এবং কেবল নখ দেখার মতো।

এরলং সেরা অনুশীলন হ'ল একই সাথে ঘটে যাওয়া সমস্ত ক্রিয়াকলাপের জন্য প্রক্রিয়া / অভিনেতা ব্যবহার করা। অর্থাৎ বাস্তব জীবনের মতোই। কখনও কখনও সঠিক গ্রানুলারিটি খুঁজে পাওয়া কঠিন, তবে বেশিরভাগ সময় আপনি কেবল মডেলড ডোমেনটি দেখে এবং কিছুটা সাধারণ জ্ঞান ব্যবহার করে জানেন। আমি আশঙ্কা করি যে এর চেয়ে ভাল পদ্ধতি আমার কাছে নেই, তবে আমি আশা করি এটি সাহায্য করবে।


শীতল ধন্যবাদ. আমি এই আলোচনায় কী ঘটে তা দেখতে সত্যিই আগ্রহী।
জেসনজি

0

ক্রম ইনপুট / আউটপুট বার্তাপ্রেরণ:

আমি সম্প্রতি আক্কা-ভিত্তিক অ্যাপ্লিকেশনটির সাথে দেখা করেছি যেখানে অভিনেতা মডেলটি আসলে সম্মতিজনিত সমস্যা তৈরি করেছিল, একটি সাধারণ মডেল বোঝার মধ্যে আরও ভাল যথেষ্ট হতে পারে।

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

সমস্যাটি কিছুটা কম অভিনেতাদের দিয়ে সঠিকভাবে সমাধান করা যেতে পারে তবে তাদের অতিরিক্ত ব্যবহার করার সময় এটি করা একটি সহজ ভুল।


এটি ভিত্তি এবং ব্যাপক প্রাসঙ্গিক। আপনি কেবল দুটি অভিনেতার মধ্যে অর্ডার দেওয়ার গ্যারান্টি দিতে পারেন। doc.akka.io/docs/akka/current/scala/general/… আপনি যে কোনও সিস্টেমে / আউট ফ্যান আউট করার আদেশ দিতে পারবেন না guarantee andreasohlund.net/2012/01/18/dont-assume-message-ordering
জেসনজি

-1

আমার মতে অভিনেতাদের জন্য দুটি ব্যবহারের মামলা রয়েছে। ভাগ করা সংস্থান যেমন বন্দর এবং পছন্দ এবং বৃহত রাজ্য। প্রথমটি এতক্ষণ আলোচনার দ্বারা ভালভাবে আচ্ছাদন করা হয়েছে, তবে বৃহত রাষ্ট্রটিও একটি বৈধ কারণ।

প্রতিটি প্রক্রিয়া কল সহ একটি বৃহত কাঠামো পাস করা হচ্ছে প্রচুর স্ট্যাক ব্যবহার করতে পারে। এই রাজ্যটিকে একটি পৃথক প্রক্রিয়াতে স্থাপন করা যেতে পারে, গঠন প্রক্রিয়া আইডি দ্বারা প্রতিস্থাপন করা হয় এবং প্রয়োজনীয় প্রক্রিয়াটি প্রয়োজনীয় ভিত্তিতে অনুসন্ধান করা হয় qu

মেনেসিয়ার মতো ডেটাবেসগুলি অনুসন্ধান প্রক্রিয়াটিতে বাহ্যিকভাবে স্টেট স্টোর হিসাবে বিবেচনা করা যেতে পারে।


1
আপনি কি স্পষ্ট করতে পারেন? আপনি নেটওয়ার্ক জুড়ে বৃহত রাজ্য মানে? স্থানীয় প্রক্রিয়াতে অপরিবর্তনীয় কাঠামোর রেফারেন্স পাস করার জন্য প্রায় কোনও খরচ হয় না এবং আপনি পরিবর্তনীয় কাঠামো পাস করতে পারবেন না। ধরে নিচ্ছি যে আপনি এমন একটি বৃহত পরিবর্তনীয় কাঠামোর কথা বলছেন যা পাঠানোর জন্য অনুলিপি করা দরকার? সুতরাং যে মূলত আবার একই জিনিস - ভাগ রাষ্ট্র। আকারটি আসলে কিছুই পরিবর্তন করে না। আমি যদি ভুল বুঝে থাকি তবে আমাকে জানান।
জেসনজি

তাহলে আপনি রেফারেন্স দিয়ে কীভাবে পাস করবেন? অবশ্যই এটি করার উপায় হ'ল একটি প্রক্রিয়াতে কাঠামো স্থাপন এবং প্রসেসিড পাস করা। স্থানীয় কলগুলি ডেটা স্ট্যাকের উপরে রাখবে এবং প্রতিটি পুনরাবৃত্ত কল আবার তা করবে (লেজ পুনরাবৃত্তি বাদে)। কাঠামোর পুনরাবৃত্ত প্রক্রিয়াকরণ এক কল থেকে অন্য কলকে রাষ্ট্র স্থানান্তর করার জন্য তালিকাগুলি ব্যবহার করে করা যেতে পারে, এই রাজ্যটি অন্য প্রক্রিয়াতে কাঠামোগুলি উল্লেখ করতে পারে।
টনি ওয়ালেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.