বিনিময় হার আনার সময় জাভাস্ক্রিপ্ট ফাংশন ত্রুটি ঠিক করা

বিনিময় হার আনার সময় জাভাস্ক্রিপ্ট ফাংশন ত্রুটি ঠিক করা
বিনিময় হার আনার সময় জাভাস্ক্রিপ্ট ফাংশন ত্রুটি ঠিক করা

জাভাস্ক্রিপ্ট রেট আনয়ন ফাংশনে ত্রুটিগুলি কীভাবে সমাধান করবেন

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

এই নিবন্ধটি একটি জাভাস্ক্রিপ্ট ফাংশন লেখার একটি অসুবিধা নিয়ে আলোচনা করে যা দুটি মুদ্রার মধ্যে বিটকয়েনের হার পুনরুদ্ধার করে। সমস্যা, "রেফারেন্স ত্রুটি: btc সংজ্ঞায়িত করা হয়নি," প্রায়শই ভুলভাবে নির্দিষ্ট পরামিতি এবং ভেরিয়েবলের কারণে হয়। কোডটি সঠিকভাবে গঠন করা হলে এই উদ্বেগগুলি এড়ানো যেতে পারে।

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

আপনি যদি অনুরূপ সমস্যার সম্মুখীন হন বা "অনির্ধারিত ('রেট' পড়া)" এর বৈশিষ্ট্যগুলি পড়তে পারে না" ত্রুটিটি পেয়ে থাকেন তবে এই নিবন্ধটি আপনাকে সমস্যা সমাধানে এবং কার্যকরভাবে সমাধান করতে সহায়তা করবে৷ আসুন ধাপে ধাপে দেখে নেওয়া যাক কীভাবে এই সমস্যাগুলি সমাধান করা যায়।

আদেশ ব্যবহারের উদাহরণ
XMLHttpRequest() এই কনস্ট্রাক্টর নেটওয়ার্ক অনুরোধ করার জন্য XMLHttpRequest এর একটি উদাহরণ তৈরি করে। এটি ব্যাপকভাবে অ্যাসিঙ্ক্রোনাস HTTP প্রশ্নগুলির জন্য ব্যবহৃত হয়, বিশেষ করে পুরানো ওয়েব প্রকল্পগুলিতে যা ফেচ ব্যবহার করে না।
খুলুন ('GET', url, true) খোলা() পদ্ধতিটি অনুরোধের ধরন (এই ক্ষেত্রে, GET), লক্ষ্য URL এবং অনুরোধটি অ্যাসিঙ্ক্রোনাস (সত্য) কিনা তা সংজ্ঞায়িত করে।
অনলোড এটি XMLHttpRequest-এ একটি ইভেন্ট হ্যান্ডলার যা অনুরোধটি সফলভাবে সম্পন্ন হলে বহিস্কার করা হয়। সমস্ত ডেটা প্রাপ্ত হয়ে গেলে এটি আপনাকে প্রতিক্রিয়া প্রক্রিয়া করার অনুমতি দেয়।
আনুন() আনুন() ফাংশন নেটওয়ার্ক অনুরোধ করার জন্য একটি আরও আধুনিক এবং বহুমুখী পদ্ধতি। এটি একটি প্রতিশ্রুতি প্রদান করে এবং সাধারণত অ্যাসিঙ্ক্রোনাস API কল করতে আধুনিক জাভাস্ক্রিপ্টে ব্যবহৃত হয়।
response.json() এই পদ্ধতিটি একটি API থেকে প্রত্যাবর্তিত প্রতিক্রিয়াকে একটি জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করে। এটি প্রাথমিকভাবে JSON ডেটার সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, যা API-এর জন্য একটি জনপ্রিয় বিন্যাস।
async/অপেক্ষা করুন অ্যাসিঙ্ক কীওয়ার্ড একটি প্রতিশ্রুতি ফেরত একটি ফাংশন কারণ, যেখানে অপেক্ষা করা প্রতিশ্রুতির সমাধান না হওয়া পর্যন্ত মৃত্যুদন্ড কার্যকর করা বন্ধ করে। এটি অ্যাসিঙ্ক্রোনাস কোড পরিচালনার সুবিধা দেয়।
চেষ্টা করুন/ধরুন ট্রাই/ক্যাচ ব্লক সুন্দরভাবে ভুলগুলি পরিচালনা করে। API কলগুলির সাথে কাজ করার সময়, নেটওয়ার্ক অসুবিধা বা অনুপযুক্ত ডেটার কারণে নিক্ষিপ্ত কোনো ব্যতিক্রম ধরার জন্য এটি কার্যকর।
http.get() Node.js ফাংশন http.get() একটি সার্ভারে একটি GET অনুরোধ পাঠায় এবং প্রতিক্রিয়া পরিচালনা করে। ব্যাকএন্ড Node.js অ্যাপ্লিকেশনগুলিতে HTTP অনুরোধ করার জন্য এটি অপরিহার্য।
ঠাট্টা-আনয়ন-মক ইউনিট পরীক্ষায় নিয়ে আসা প্রশ্নগুলিকে উপহাস করার জন্য একটি নির্দিষ্ট জেস্ট টেস্টিং ইউটিলিটি। এটি আপনাকে তাদের প্রতিক্রিয়া অনুকরণ করে বহিরাগত API কলগুলির উপর নির্ভর করে এমন পদ্ধতিগুলি পরীক্ষা করার অনুমতি দেয়।

কিভাবে জাভাস্ক্রিপ্ট ফাংশন ক্রিপ্টোকারেন্সি রেটগুলির জন্য API অনুরোধগুলি পরিচালনা করে তা বোঝা

এখানে সরবরাহ করা স্ক্রিপ্টগুলি জাভাস্ক্রিপ্ট ব্যবহার করে দুটি মুদ্রার মধ্যে ক্রিপ্টোকারেন্সি বিনিময় হার পেতে বিকল্প কৌশলগুলি প্রদর্শন করে৷ প্রথম স্ক্রিপ্টটি XMLHttpRequest অবজেক্ট ব্যবহার করে, যা জাভাস্ক্রিপ্টে অ্যাসিঙ্ক্রোনাস HTTP অনুরোধগুলি পরিচালনা করার জন্য পুরানো কৌশলগুলির মধ্যে একটি। ফাংশন ঝাঁঝরি (থেকে, থেকে) দুটি পরামিতি গ্রহণ করে: রূপান্তরিত মুদ্রা। সরবরাহকৃত প্যারামিটারের উপর ভিত্তি করে একটি ইউআরএল গতিশীলভাবে তৈরি করা হয় এবং বিটপে-এর এপিআই এন্ডপয়েন্টে একটি অনুরোধ পাঠানো হয়। উত্তর পাওয়ার পর, JSON.parse() ব্যবহার করে ডেটা পার্স করা হয় নথির অংশে বিনিময় হার প্রদর্শন করে। এই সমাধানটি পুরানো ব্রাউজারগুলির সাথে সামঞ্জস্য বজায় রাখে, তবে এতে কিছু নতুন ক্ষমতা যেমন প্রতিশ্রুতির অভাব রয়েছে, যা দ্বিতীয় উদাহরণে আলোচনা করা হয়েছে।

দ্বিতীয় উদাহরণে, একই ক্রিয়া করতে XMLHttpRequest এর পরিবর্তে Fetch API ব্যবহার করা হয়। ফেচ API আরও বর্তমান এবং নেটওয়ার্ক অনুরোধ করার একটি সহজ উপায় অফার করে৷ এটি অ্যাসিঙ্ক্রোনাস প্রবাহকে আরও পঠনযোগ্য এবং পরিচালনাযোগ্য করার প্রতিশ্রুতি দেয়। যখন ফাংশনটি আহ্বান করা হয়, এটি একই URL-এ একটি HTTP অনুরোধ করে এবং একটি প্রতিক্রিয়ার জন্য অপেক্ষা করে। প্রতিক্রিয়া পাওয়ার পরে, এটি একটি JSON অবজেক্টে ডেটা পরিণত করে এবং হার প্রাপ্ত করে। Fetch API অনুরোধ বা ডেটা প্রক্রিয়াকরণের সময় উদ্ভূত সমস্যাগুলি সংগ্রহ এবং পরিচালনা করতে চেষ্টা/ক্যাচ ব্লক ব্যবহার করে ত্রুটি ব্যবস্থাপনা উন্নত করে।

তৃতীয় স্ক্রিপ্ট লক্ষ্য ক ব্যাকএন্ড পরিবেশ এবং Node.js এর HTTP মডিউল দিয়ে API কোয়েরি করে। এটি বিশেষত সার্ভার-সাইড অ্যাপ্লিকেশনগুলি বিকাশের জন্য উপকারী যেগুলির বিনিময় হার পুনরুদ্ধার করা প্রয়োজন৷ এইচটিটিপি মডিউলটি Node.js-এ তৈরি করা হয়েছে এবং ডেভেলপারদের HTTP অপারেশন পরিচালনা করতে দেয়। এই ফাংশনটি আগের স্ক্রিপ্টগুলির মতো একই পদ্ধতিতে URL তৈরি করে, API এ একটি GET কল পাঠায় এবং তারপর প্রাপ্ত ডেটা পার্স করে। ফলাফলটি ব্রাউজারে প্রদর্শিত হওয়ার পরিবর্তে কনসোলে লগ ইন করা হয়েছে, এটিকে ব্যাকএন্ড পরিস্থিতিগুলির জন্য আরও উপযুক্ত করে তোলে যেগুলির জন্য ওয়েব ব্রাউজারগুলির প্রয়োজন নেই৷

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

জাভাস্ক্রিপ্ট: "রেফারেন্স ত্রুটি: বিটিসি সংজ্ঞায়িত নয়" সমস্যা সমাধান করা

ফ্রন্ট-এন্ড পরিবেশে, এই পদ্ধতিটি ডাইনামিক ডেটা আনতে JavaScript এবং XMLHTTPRrequest ব্যবহার করে।

// Solution 1: Using XMLHTTPRequest to fetch cryptocurrency rates
function grate(from, to) {
  var burl = 'https://bitpay.com/rates/';
  var url = burl + from + '/' + to;
  var ourRequest = new XMLHttpRequest();
  ourRequest.open('GET', url, true);
  ourRequest.onload = function() {
    if (ourRequest.status >= 200 && ourRequest.status < 400) {
      var response = JSON.parse(ourRequest.responseText);
      document.body.innerHTML = 'Rate: ' + response.data.rate;
    } else {
      console.error('Error fetching the data');
    }
  };
  ourRequest.onerror = function() {
    console.error('Connection error');
  };
  ourRequest.send();
}
// Test the function with actual currency codes
grate('btc', 'usd');

জাভাস্ক্রিপ্ট: এপিআই আনয়ন এপিআই অনুরোধগুলি পরিচালনা করার জন্য একটি আরও আধুনিক পদ্ধতি।

এই সমাধানটি জাভাস্ক্রিপ্ট এবং ফেচ এপিআই ব্যবহার করে আধুনিক ফ্রন্ট-এন্ড অ্যাপগুলির কার্যকারিতা এবং ত্রুটি পরিচালনার উন্নতি করে।

// Solution 2: Using Fetch API for cleaner asynchronous requests
async function grate(from, to) {
  var burl = 'https://bitpay.com/rates/';
  var url = burl + from + '/' + to;
  try {
    let response = await fetch(url);
    if (!response.ok) throw new Error('Network response was not ok');
    let data = await response.json();
    document.body.innerHTML = 'Rate: ' + data.data.rate;
  } catch (error) {
    console.error('Fetch error: ', error);
  }
}
// Test the function with Fetch API
grate('btc', 'usd');

Node.js ব্যাকএন্ড: নোডের HTTP মডিউল দিয়ে API অনুরোধ করা

এই পদ্ধতি ব্যাকএন্ড অ্যাপ্লিকেশনে Node.js এবং HTTP মডিউল ব্যবহার করে মুদ্রার হার আনে।

// Solution 3: Using Node.js HTTP module to fetch data from API
const http = require('http');
function grate(from, to) {
  const url = 'http://bitpay.com/rates/' + from + '/' + to;
  http.get(url, (resp) => {
    let data = '';
    resp.on('data', (chunk) => { data += chunk; });
    resp.on('end', () => {
      let rateData = JSON.parse(data);
      console.log('Rate: ' + rateData.data.rate);
    });
  }).on('error', (err) => {
    console.log('Error: ' + err.message);
  });
}
// Test the Node.js function
grate('btc', 'usd');

জেস্ট ব্যবহার করে ফ্রন্টএন্ড সমাধানের জন্য ইউনিট পরীক্ষা

JavaScript Fetch API সলিউশনের কার্যকারিতা Jest-এ লেখা ইউনিট পরীক্ষা ব্যবহার করে যাচাই করা হয়।

// Solution 4: Unit testing Fetch API using Jest
const fetchMock = require('jest-fetch-mock');
fetchMock.enableMocks();
test('grate() fetches correct rate data', async () => {
  fetch.mockResponseOnce(JSON.stringify({ data: { rate: 50000 }}));
  const rate = await grate('btc', 'usd');
  expect(document.body.innerHTML).toBe('Rate: 50000');
});

API অনুরোধের জন্য অ্যাসিঙ্ক্রোনাস জাভাস্ক্রিপ্ট ফাংশন অন্বেষণ করা হচ্ছে

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

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

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

জাভাস্ক্রিপ্ট দিয়ে API ডেটা আনার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্ন

  1. মধ্যে পার্থক্য কি XMLHttpRequest এবং Fetch API?
  2. যদিও উভয়ই HTTP ক্যোয়ারী পাঠাতে ব্যবহার করা যেতে পারে, Fetch API আরও বর্তমান এবং একটি সহজ ইন্টারফেস রয়েছে। এটি প্রতিশ্রুতি নিয়োগ করে, যা অ্যাসিঙ্ক্রোনাস প্রক্রিয়াগুলির সাথে কাজ করা সহজ করে তোলে।
  3. ব্যবহার করার সময় আমি কীভাবে ত্রুটিগুলি পরিচালনা করব Fetch API?
  4. ত্রুটিগুলি পরিচালনা করতে, আপনার আনার অনুরোধটি a এর মধ্যে এনক্যাপসুলেট করুন try/catch ব্লক করুন এবং প্রতিক্রিয়া স্থিতি পরীক্ষা করুন। এটি আপনার কোডকে ব্যর্থতার জন্য আরও স্থিতিস্থাপক করে তোলে।
  5. একটি API থেকে ডেটা পুনরুদ্ধার করার চেষ্টা করার সময় আমি কেন একটি অনির্ধারিত মান পাই?
  6. এটি সাধারণত ঘটে যখন এপিআই এন্ডপয়েন্ট বা আর্গুমেন্টগুলি ভুল হয়, বা প্রতিক্রিয়াটি ব্যবহার করে সঠিকভাবে প্রক্রিয়া করা হয়নি JSON.parse().
  7. আমি কি প্রকৃত নেটওয়ার্ক কল ছাড়া API অনুরোধ পরীক্ষা করতে পারি?
  8. হ্যাঁ, আপনি লাইব্রেরি ব্যবহার করতে পারেন jest-fetch-mock পরিক্ষার জন্য API প্রশ্ন এবং উত্তর অনুকরণ করার জন্য জেস্টে।
  9. আমি কিভাবে আমার API অনুরোধের নিরাপত্তা উন্নত করতে পারি?
  10. নিরাপত্তা উন্নত করার একটি বিকল্প হল সামনের প্রান্তের পরিবর্তে একটি ব্যাকএন্ড সার্ভার থেকে অনুরোধ করা। এটি গুরুত্বপূর্ণ API কীগুলিকে লুকিয়ে রাখে এবং দূষিত অভিনেতাদের বিরুদ্ধে আপনার অ্যাপ্লিকেশনকে রক্ষা করে৷

API ত্রুটি এবং অনুরোধগুলি পরিচালনার বিষয়ে চূড়ান্ত চিন্তাভাবনা

জাভাস্ক্রিপ্টে API কলগুলি কীভাবে পরিচালনা করবেন তা বোঝা ডায়নামিক অ্যাপ্লিকেশন বিকাশের জন্য গুরুত্বপূর্ণ। XMLHttpRequest এবং Fetch API-এর মতো প্রযুক্তি ব্যবহার করে, বিকাশকারীরা কার্যকরভাবে ক্রিপ্টোকারেন্সির দামের মতো রিয়েল-টাইম ডেটা পুনরুদ্ধার করতে পারে। যাইহোক, অনির্ধারিত বৈশিষ্ট্যগুলির মতো সাধারণ সমস্যাগুলি অবশ্যই সঠিকভাবে সমাধান করা উচিত।

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

জাভাস্ক্রিপ্ট API অনুরোধ হ্যান্ডলিং জন্য উত্স এবং রেফারেন্স
  1. জাভাস্ক্রিপ্ট ব্যবহার করে API অনুরোধগুলি কীভাবে পরিচালনা করবেন সে সম্পর্কে বিশদ বিবরণ দেয় XMLHttp অনুরোধ এবং এপিআই আনুন, জাভাস্ক্রিপ্ট অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং-এ বহিরাগত গাইড এবং ডকুমেন্টেশন উল্লেখ করা। ভিজিট করুন MDN ওয়েব ডক্স - XMLHttpRequest৷ .
  2. ফ্রন্ট-এন্ড এবং ব্যাক-এন্ড ডেভেলপমেন্ট উভয় ক্ষেত্রেই ত্রুটি পরিচালনা এবং API অনুরোধগুলি সুরক্ষিত করার সেরা অনুশীলনগুলি অন্তর্ভুক্ত করে। তথ্যসূত্র: Node.js অফিসিয়াল ডকুমেন্টেশন - HTTP অনুরোধ .
  3. জেস্ট এবং মক টুল ব্যবহার করে API কার্যকারিতা পরীক্ষা করার অন্তর্দৃষ্টি প্রদান করে ঠাট্টা-আনয়ন-মক. আরো বিস্তারিত জানার জন্য, চেক আউট জাস্ট অফিসিয়াল ডকুমেন্টেশন .