React-এর experimental_TracingMarker API-এর একটি গভীর পর্যালোচনা, যা ডেভেলপারদের জটিল React অ্যাপ্লিকেশনের পারফরম্যান্সের বাধাগুলি খুঁজে বের করতে, মূল কারণ চিহ্নিত করতে এবং উন্নত ব্যবহারকারী অভিজ্ঞতার জন্য অপ্টিমাইজ করতে সাহায্য করে।
React experimental_TracingMarker: জটিল অ্যাপ্লিকেশনের পারফরম্যান্সের গভীর বিশ্লেষণ
React অ্যাপ্লিকেশনগুলি যত জটিল হতে থাকে, পারফরম্যান্সের বাধাগুলি চিহ্নিত করা এবং সমাধান করা তত বেশি চ্যালেঞ্জিং হয়ে ওঠে। প্রচলিত প্রোফাইলিং টুলগুলি প্রায়শই একটি উচ্চ-স্তরের ধারণা দেয়, কিন্তু পারফরম্যান্স সমস্যার সঠিক উৎস চিহ্নিত করার জন্য প্রয়োজনীয় সূক্ষ্মতার অভাব থাকে। React-এর experimental_TracingMarker
API, যা বর্তমানে পরীক্ষামূলক পর্যায়ে রয়েছে, পারফরম্যান্স ট্রেসিংয়ের জন্য একটি শক্তিশালী নতুন পদ্ধতি প্রদান করে। এটি ডেভেলপারদের তাদের কোডে মার্কার ব্যবহার করে এক্সিকিউশন ফ্লো সম্পর্কে বিস্তারিত তথ্য পেতে সাহায্য করে। এর মাধ্যমে আপনি বুঝতে পারবেন আপনার React অ্যাপ্লিকেশনের কোন অংশগুলি ধীরগতির কারণ হচ্ছে এবং সেগুলিকে কার্যকরভাবে অপ্টিমাইজ করতে পারবেন।
সূক্ষ্ম-স্তরের পারফরম্যান্স ট্রেসিংয়ের প্রয়োজনীয়তা বোঝা
experimental_TracingMarker
-এর বিস্তারিত বিবরণে যাওয়ার আগে, আসুন জেনে নেওয়া যাক কেন জটিল React অ্যাপ্লিকেশনগুলির জন্য সূক্ষ্ম-স্তরের পারফরম্যান্স ট্রেসিং অপরিহার্য:
- কম্পোনেন্টের জটিলতা: আধুনিক React অ্যাপ্লিকেশনগুলিতে প্রায়শই অসংখ্য নেস্টেড কম্পোনেন্ট থাকে, যার প্রতিটি বিভিন্ন কাজ করে। বিস্তারিত ট্রেসিং ছাড়া পারফরম্যান্স বাধার জন্য দায়ী কম্পোনেন্ট চিহ্নিত করা কঠিন হতে পারে।
- অ্যাসিঙ্ক্রোনাস অপারেশন: ডেটা ফেচিং, অ্যানিমেশন এবং অন্যান্য অ্যাসিঙ্ক্রোনাস অপারেশনগুলি পারফরম্যান্সের উপর উল্লেখযোগ্যভাবে প্রভাব ফেলে। ট্রেসিং আপনাকে এই অপারেশনগুলিকে নির্দিষ্ট কম্পোনেন্টের সাথে সম্পর্কিত করতে এবং সম্ভাব্য বিলম্ব চিহ্নিত করতে সাহায্য করে।
- থার্ড-পার্টি লাইব্রেরি: থার্ড-পার্টি লাইব্রেরি একীভূত করার ফলে পারফরম্যান্স ওভারহেড তৈরি হতে পারে। ট্রেসিং আপনাকে বুঝতে সাহায্য করে যে এই লাইব্রেরিগুলি আপনার অ্যাপ্লিকেশনের প্রতিক্রিয়াশীলতাকে কীভাবে প্রভাবিত করে।
- শর্তাধীন রেন্ডারিং: জটিল শর্তাধীন রেন্ডারিং লজিক অপ্রত্যাশিত পারফরম্যান্স সমস্যার কারণ হতে পারে। ট্রেসিং আপনাকে বিভিন্ন রেন্ডারিং পাথের পারফরম্যান্স প্রভাব বিশ্লেষণ করতে সাহায্য করে।
- ব্যবহারকারীর ইন্টারঅ্যাকশন: ব্যবহারকারীর ইন্টারঅ্যাকশনের ধীর প্রতিক্রিয়া একটি হতাশাজনক ব্যবহারকারীর অভিজ্ঞতা তৈরি করতে পারে। ট্রেসিং আপনাকে নির্দিষ্ট ইন্টারঅ্যাকশন পরিচালনা করার জন্য দায়ী কোডটি চিহ্নিত করতে এবং এটিকে দ্রুত করার জন্য অপ্টিমাইজ করতে সাহায্য করে।
experimental_TracingMarker
-এর পরিচিতি
experimental_TracingMarker
API আপনার React কোডকে নির্দিষ্ট নামের ট্রেস (named traces) দিয়ে ইনস্ট্রুমেন্ট করার একটি পদ্ধতি প্রদান করে। এই ট্রেসগুলি আপনার অ্যাপ্লিকেশন এক্সিকিউশনের সময় রেকর্ড করা হয় এবং React DevTools প্রোফাইলারে দেখা যায়। এটি আপনাকে দেখতে দেয় যে কোডের প্রতিটি ট্রেস করা অংশ এক্সিকিউট হতে ঠিক কত সময় নিচ্ছে এবং সম্ভাব্য পারফরম্যান্সের বাধাগুলি চিহ্নিত করতে সাহায্য করে।
মূল বৈশিষ্ট্য:
- নামযুক্ত ট্রেস: প্রতিটি ট্রেসকে একটি নাম দেওয়া হয়, যা কোডের নির্দিষ্ট অংশগুলি সনাক্ত এবং বিশ্লেষণ করা সহজ করে তোলে।
- নেস্টেড ট্রেস: ট্রেসগুলি একে অপরের মধ্যে নেস্ট করা যেতে পারে, যা আপনাকে আপনার অ্যাপ্লিকেশনের এক্সিকিউশন ফ্লো-এর একটি অনুক্রমিক দৃশ্য তৈরি করতে দেয়।
- React DevTools-এর সাথে ইন্টিগ্রেশন: ট্রেসগুলি React DevTools প্রোফাইলারে সুন্দরভাবে একত্রিত হয়, যা আপনার অ্যাপ্লিকেশনের পারফরম্যান্সের একটি ভিজ্যুয়াল উপস্থাপনা প্রদান করে।
- ন্যূনতম ওভারহেড: ট্রেসিং নিষ্ক্রিয় থাকলে API-টি ন্যূনতম পারফরম্যান্স ওভারহেড রাখার জন্য ডিজাইন করা হয়েছে।
কীভাবে experimental_TracingMarker
ব্যবহার করবেন
আপনার React অ্যাপ্লিকেশনে experimental_TracingMarker
কীভাবে ব্যবহার করবেন তার একটি ধাপে ধাপে নির্দেশিকা এখানে দেওয়া হলো:
১. ইনস্টলেশন (যদি প্রয়োজন হয়)
যেহেতু experimental_TracingMarker
পরীক্ষামূলক, তাই এটি স্ট্যান্ডার্ড React প্যাকেজে অন্তর্ভুক্ত নাও থাকতে পারে। আপনার React সংস্করণটি পরীক্ষা করুন এবং প্রয়োজনে ইনস্টলেশন নির্দেশাবলীর জন্য অফিসিয়াল React ডকুমেন্টেশন দেখুন। আপনাকে আপনার বিল্ড কনফিগারেশনে পরীক্ষামূলক বৈশিষ্ট্যগুলি সক্রিয় করতে হতে পারে।
২. API ইম্পোর্ট করুন
react
প্যাকেজ থেকে experimental_TracingMarker
কম্পোনেন্টটি ইম্পোর্ট করুন:
import { unstable_TracingMarker as TracingMarker } from 'react';
৩. আপনার কোডকে TracingMarker
দিয়ে র্যাপ করুন
আপনি যে কোডের অংশটি ট্রেস করতে চান সেটিকে TracingMarker
কম্পোনেন্ট দিয়ে র্যাপ করুন। ট্রেসটি সনাক্ত করতে একটি name
prop দিন:
function MyComponent() {
return (
<>
<TracingMarker name="MyComponent Rendering">
<p>Rendering content...</p>
</TracingMarker>
<>
);
}
৪. ট্রেস নেস্ট করা
আপনার অ্যাপ্লিকেশনের এক্সিকিউশন ফ্লো-এর একটি অনুক্রমিক দৃশ্য তৈরি করতে TracingMarker
কম্পোনেন্টগুলিকে নেস্ট করুন:
function MyComponent() {
return (
<>
<TracingMarker name="MyComponent">
<TracingMarker name="Data Fetching">
{/* Code for fetching data */}
</TracingMarker>
<TracingMarker name="Rendering UI">
<p>Rendering content...</p>
</TracingMarker>
</TracingMarker>
<>
);
}
৫. passiveEffect
ব্যবহার করা
এফেক্ট ট্রেস করার জন্য, `passiveEffect` প্রপার্টি ব্যবহার করুন। এটি শুধুমাত্র তখনই ট্রেসিং ট্রিগার করবে যখন এফেক্টের ডিপেন্ডেন্সি পরিবর্তন হবে।
import React, { useState, useEffect, unstable_TracingMarker as TracingMarker } from 'react';
function MyComponent() {
const [data, setData] = useState(null);
useEffect(() => {
<TracingMarker name="Fetch Data Effect" passiveEffect>
// Simulate data fetching
setTimeout(() => {
setData({ message: "Data fetched!" });
}, 1000);
</TracingMarker>
}, []);
return (
<div>
{data ? <p>{data.message}</p> : <p>Loading...</p>}
</div>
);
}
৬. React DevTools দিয়ে ট্রেস বিশ্লেষণ
React DevTools প্রোফাইলারটি খুলুন এবং একটি প্রোফাইলিং সেশন রেকর্ড করুন। আপনি টাইমলাইনে আপনার নামযুক্ত ট্রেসগুলি দেখতে পাবেন, যা আপনাকে তাদের এক্সিকিউশন সময় বিশ্লেষণ করতে এবং পারফরম্যান্সের বাধাগুলি চিহ্নিত করতে সাহায্য করবে।
উদাহরণ: একটি ধীরগতির তালিকা রেন্ডারিং
ধরুন আপনার একটি কম্পোনেন্ট আছে যা একটি বড় তালিকা রেন্ডার করে। আপনি সন্দেহ করছেন যে রেন্ডারিং প্রক্রিয়াটি ধীর, কিন্তু আপনি নিশ্চিত নন যে কোডের কোন অংশটি বাধার কারণ।
function MyListComponent({ items }) {
return (
<TracingMarker name="MyListComponent Rendering">
<ul>
{items.map(item => (
<TracingMarker key={item.id} name={`Rendering Item ${item.id}`}>
<li>{item.name}</li>
</TracingMarker>
))}
</ul>
</TracingMarker>
);
}
তালিকা রেন্ডারিং এবং প্রতিটি আইটেম রেন্ডারিংকে TracingMarker
কম্পোনেন্ট দিয়ে র্যাপ করে, আপনি দ্রুত সনাক্ত করতে পারবেন যে বাধাটি সামগ্রিক তালিকা রেন্ডারিং প্রক্রিয়ায় নাকি পৃথক আইটেমগুলির রেন্ডারিংয়ে রয়েছে। এটি আপনাকে আপনার অপটিমাইজেশন প্রচেষ্টা সেই নির্দিষ্ট ক্ষেত্রে ফোকাস করতে সাহায্য করে যা সমস্যার কারণ।
বাস্তব উদাহরণ এবং ব্যবহারের ক্ষেত্র
এখানে কিছু বাস্তব উদাহরণ এবং ব্যবহারের ক্ষেত্র রয়েছে যেখানে experimental_TracingMarker
অমূল্য হতে পারে:
- ধীরগতির ডেটা ফেচিং চিহ্নিত করা: ধীরগতির API কল বা অদক্ষ ডেটা প্রক্রিয়াকরণ সনাক্ত করতে ডেটা ফেচিং অপারেশনগুলিকে
TracingMarker
দিয়ে র্যাপ করুন। - জটিল গণনা অপ্টিমাইজ করা: মেমোাইজেশন বা ওয়েব ওয়ার্কার ব্যবহারের মতো অপটিমাইজেশনের ক্ষেত্রগুলি সনাক্ত করতে কম্পিউটেশনালভাবে নিবিড় গণনাগুলি ট্রেস করুন।
- অ্যানিমেশন পারফরম্যান্স বিশ্লেষণ করা: ফ্রেম ড্রপ সনাক্ত করতে এবং মসৃণ অ্যানিমেশনের জন্য অপ্টিমাইজ করতে অ্যানিমেশন লজিক ট্রেস করুন। আরও ভালো পারফরম্যান্স এবং অ্যানিমেশনের উপর নিয়ন্ত্রণের জন্য GSAP (GreenSock Animation Platform)-এর মতো লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন।
- থার্ড-পার্টি লাইব্রেরির সমস্যা ডিবাগ করা: পারফরম্যান্স ওভারহেড এবং সম্ভাব্য দ্বন্দ্ব সনাক্ত করতে থার্ড-পার্টি লাইব্রেরিতে করা কলগুলিকে
TracingMarker
দিয়ে র্যাপ করুন। - ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রতিক্রিয়াশীলতা উন্নত করা: ব্যবহারকারীর ইন্টারঅ্যাকশনের ধীর প্রতিক্রিয়া সনাক্ত করতে এবং আরও প্রতিক্রিয়াশীল ব্যবহারকারীর অভিজ্ঞতার জন্য অপ্টিমাইজ করতে ইভেন্ট হ্যান্ডলারগুলি ট্রেস করুন।
- আন্তর্জাতিকীকরণ (i18n) অপ্টিমাইজেশন: একাধিক ভাষা সমর্থনকারী অ্যাপ্লিকেশনগুলির জন্য, বিভিন্ন লোকেলে অনুবাদগুলি কার্যকরভাবে লোড এবং রেন্ডার হচ্ছে কিনা তা নিশ্চিত করতে i18n লাইব্রেরির পারফরম্যান্স ট্রেস করুন। প্রয়োজন অনুযায়ী ভাষা-নির্দিষ্ট রিসোর্স লোড করতে কোড স্প্লিটিংয়ের মতো কৌশল ব্যবহার করার কথা বিবেচনা করুন।
- অ্যাক্সেসিবিলিটি (a11y) অডিটিং: যদিও এটি প্রথাগত অর্থে সরাসরি পারফরম্যান্সের সাথে সম্পর্কিত নয়, ট্রেসিং এমন ক্ষেত্রগুলি সনাক্ত করতে সাহায্য করতে পারে যেখানে অ্যাক্সেসিবিলিটি পরীক্ষা বা আপডেট রেন্ডারিংয়ে বিলম্ব ঘটাচ্ছে, যা সকল ব্যবহারকারীর জন্য একটি মসৃণ অভিজ্ঞতা নিশ্চিত করে।
experimental_TracingMarker
ব্যবহারের সেরা অনুশীলন
experimental_TracingMarker
থেকে সর্বাধিক সুবিধা পেতে, এই সেরা অনুশীলনগুলি অনুসরণ করুন:
- বর্ণনামূলক নাম ব্যবহার করুন: আপনার ট্রেসগুলির জন্য বর্ণনামূলক নাম চয়ন করুন যা স্পষ্টভাবে ট্রেস করা কোডটিকে নির্দেশ করে।
- কৌশলগতভাবে ট্রেস নেস্ট করুন: আপনার অ্যাপ্লিকেশনের এক্সিকিউশন ফ্লো-এর একটি অনুক্রমিক দৃশ্য তৈরি করতে ট্রেসগুলিকে নেস্ট করুন, যা পারফরম্যান্স সমস্যার মূল কারণ সনাক্ত করা সহজ করে তোলে।
- গুরুত্বপূর্ণ অংশে ফোকাস করুন: কোডের প্রতিটি লাইন ট্রেস করবেন না। কোডের সেই অংশগুলিতে ফোকাস করুন যেগুলি পারফরম্যান্সের বাধা হওয়ার সম্ভাবনা সবচেয়ে বেশি।
- প্রোডাকশনে ট্রেসিং নিষ্ক্রিয় করুন: অপ্রয়োজনীয় পারফরম্যান্স ওভারহেড এড়াতে প্রোডাকশন পরিবেশে ট্রেসিং নিষ্ক্রিয় করুন। ট্রেসিং নিয়ন্ত্রণ করতে একটি ফিচার ফ্ল্যাগ বা এনভায়রনমেন্ট ভেরিয়েবল প্রয়োগ করুন।
- শর্তসাপেক্ষ ট্রেসিং ব্যবহার করুন: শুধুমাত্র যখন প্রয়োজন, যেমন ডিবাগিং বা পারফরম্যান্স বিশ্লেষণের সময়, ট্রেসিং সক্ষম করুন।
- অন্যান্য প্রোফাইলিং সরঞ্জামগুলির সাথে একত্রিত করুন: আপনার অ্যাপ্লিকেশনের পারফরম্যান্সের একটি আরও ব্যাপক দৃশ্যের জন্য Chrome DevTools Performance ট্যাবের মতো অন্যান্য প্রোফাইলিং সরঞ্জামগুলির সাথে
experimental_TracingMarker
ব্যবহার করুন। - ব্রাউজার-নির্দিষ্ট পারফরম্যান্স নিরীক্ষণ করুন: বিভিন্ন ব্রাউজারে (Chrome, Firefox, Safari, Edge) পারফরম্যান্স ভিন্ন হতে পারে। ব্রাউজার-নির্দিষ্ট সমস্যা সনাক্ত করতে প্রতিটি টার্গেট ব্রাউজারে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করুন এবং ট্রেস করুন।
- বিভিন্ন ডিভাইসের জন্য অপ্টিমাইজ করুন: ডেস্কটপ, ট্যাবলেট এবং মোবাইল ফোন সহ বিভিন্ন ডিভাইসের জন্য আপনার React অ্যাপ্লিকেশনের পারফরম্যান্স অপ্টিমাইজ করুন। প্রতিক্রিয়াশীল ডিজাইনের নীতিগুলি ব্যবহার করুন এবং ছোট পর্দার জন্য ছবি এবং অন্যান্য সম্পদ অপ্টিমাইজ করুন।
- নিয়মিতভাবে পর্যালোচনা এবং রিফ্যাক্টর করুন: নিয়মিতভাবে আপনার কোড পর্যালোচনা করুন এবং পারফরম্যান্স-গুরুত্বপূর্ণ অংশগুলি রিফ্যাক্টর করুন। অপ্রয়োজনীয় কোড সনাক্ত করুন এবং বাদ দিন, অ্যালগরিদম অপ্টিমাইজ করুন এবং ডেটা স্ট্রাকচার উন্নত করুন।
সীমাবদ্ধতা এবং বিবেচ্য বিষয়
যদিও experimental_TracingMarker
একটি শক্তিশালী টুল, এর সীমাবদ্ধতা এবং বিবেচ্য বিষয়গুলি সম্পর্কে সচেতন থাকা গুরুত্বপূর্ণ:
- পরীক্ষামূলক অবস্থা: API-টি বর্তমানে পরীক্ষামূলক এবং React-এর ভবিষ্যতের সংস্করণগুলিতে পরিবর্তন বা সরানো হতে পারে।
- পারফরম্যান্স ওভারহেড: ট্রেসিং কিছু পারফরম্যান্স ওভারহেড তৈরি করতে পারে, বিশেষ করে যখন প্রোডাকশন পরিবেশে ট্রেসিং সক্ষম করা হয়।
- কোডের জট:
experimental_TracingMarker
কম্পোনেন্টের অতিরিক্ত ব্যবহার আপনার কোডকে জটিল করে তুলতে পারে এবং পড়া কঠিন করে তুলতে পারে। - React DevTools-এর উপর নির্ভরশীলতা: ট্রেস বিশ্লেষণ করার জন্য React DevTools প্রোফাইলার প্রয়োজন।
- ব্রাউজার সমর্থন: নিশ্চিত করুন যে React DevTools এবং এর প্রোফাইলিং বৈশিষ্ট্যগুলি টার্গেট ব্রাউজার দ্বারা সম্পূর্ণরূপে সমর্থিত।
experimental_TracingMarker
-এর বিকল্প
যদিও experimental_TracingMarker
React অ্যাপ্লিকেশনগুলিতে পারফরম্যান্স ট্রেস করার একটি সুবিধাজনক উপায় সরবরাহ করে, পারফরম্যান্স বিশ্লেষণের জন্য বেশ কয়েকটি বিকল্প সরঞ্জাম এবং কৌশল ব্যবহার করা যেতে পারে:
- Chrome DevTools Performance Tab: Chrome DevTools Performance ট্যাব আপনার অ্যাপ্লিকেশনের পারফরম্যান্সের একটি ব্যাপক দৃশ্য প্রদান করে, যার মধ্যে রয়েছে CPU ব্যবহার, মেমরি বরাদ্দ এবং নেটওয়ার্ক কার্যকলাপ।
- React Profiler: React Profiler (React DevTools-এ উপলব্ধ) কম্পোনেন্ট রেন্ডারিং সময়ের একটি বিস্তারিত বিভাজন প্রদান করে এবং পারফরম্যান্সের বাধাগুলি সনাক্ত করতে সহায়তা করে।
- WebPageTest: WebPageTest ওয়েব পেজ এবং অ্যাপ্লিকেশনগুলির পারফরম্যান্স পরীক্ষা করার জন্য একটি বিনামূল্যে অনলাইন টুল। এটি লোড টাইম, টাইম টু ফার্স্ট বাইট এবং রেন্ডারিং টাইম সহ বিস্তারিত পারফরম্যান্স মেট্রিক প্রদান করে।
- Lighthouse: Lighthouse ওয়েব পেজের গুণমান উন্নত করার জন্য একটি ওপেন-সোর্স, স্বয়ংক্রিয় টুল। এটি পারফরম্যান্স, অ্যাক্সেসিবিলিটি, প্রগ্রেসিভ ওয়েব অ্যাপস, SEO এবং আরও অনেক কিছুর জন্য অডিট প্রদান করে।
- পারফরম্যান্স মনিটরিং টুলস (যেমন, New Relic, Datadog): এই সরঞ্জামগুলি React অ্যাপ্লিকেশন সহ ওয়েব অ্যাপ্লিকেশনগুলির জন্য ব্যাপক পারফরম্যান্স পর্যবেক্ষণ এবং সতর্কতা ক্ষমতা প্রদান করে।
উপসংহার
React-এর experimental_TracingMarker
API জটিল React অ্যাপ্লিকেশনগুলিতে পারফরম্যান্স ট্রেস করার একটি শক্তিশালী নতুন উপায় প্রদান করে। আপনার কোডকে নামযুক্ত ট্রেস দিয়ে সজ্জিত করে, আপনি এক্সিকিউশন ফ্লো সম্পর্কে বিস্তারিত অন্তর্দৃষ্টি লাভ করতে পারেন, পারফরম্যান্সের বাধাগুলি সনাক্ত করতে পারেন এবং একটি মসৃণ ব্যবহারকারী অভিজ্ঞতার জন্য অপ্টিমাইজ করতে পারেন। যদিও API-টি বর্তমানে পরীক্ষামূলক, এটি React পারফরম্যান্স টুলিংয়ের ভবিষ্যতের একটি ঝলক দেয় এবং তাদের অ্যাপ্লিকেশনগুলির পারফরম্যান্স উন্নত করতে চাওয়া ডেভেলপারদের জন্য একটি মূল্যবান টুল সরবরাহ করে। সেরা অনুশীলনগুলি ব্যবহার করতে মনে রাখবেন, সীমাবদ্ধতা সম্পর্কে সচেতন থাকুন এবং একটি ব্যাপক পারফরম্যান্স বিশ্লেষণের জন্য experimental_TracingMarker
-কে অন্যান্য প্রোফাইলিং সরঞ্জামগুলির সাথে একত্রিত করুন। React যেমন বিকশিত হতে থাকবে, ক্রমবর্ধমান জটিল অ্যাপ্লিকেশনগুলিতে পারফরম্যান্স অপ্টিমাইজ করার জন্য আরও উন্নত সরঞ্জাম এবং কৌশল আশা করা যায়। আপনার React অ্যাপ্লিকেশনগুলি বিশ্বজুড়ে ব্যবহারকারীদের জন্য একটি দ্রুত এবং প্রতিক্রিয়াশীল অভিজ্ঞতা প্রদান করে তা নিশ্চিত করতে সর্বশেষ আপডেট এবং সেরা অনুশীলন সম্পর্কে অবগত থাকুন।