ডোম ম্যানিপুলেশন
ডোম ম্যানিপুলেশন : বিস্তারিত আলোচনা
ভূমিকা
ডোম (Document Object Model) ম্যানিপুলেশন ওয়েব ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ। ডোম হলো HTML, XML বা SVG ডকুমেন্টের প্রোগ্রামিং ইন্টারফেস। এটি ওয়েবপেজের উপাদানগুলোকে জাভাস্ক্রিপ্টের মাধ্যমে পরিবর্তন এবং নিয়ন্ত্রণ করার সুযোগ দেয়। ডোম ম্যানিপুলেশন ব্যবহার করে ওয়েবপেজের কনটেন্ট, স্ট্রাকচার এবং স্টাইল পরিবর্তন করা যায়। এই নিবন্ধে ডোম ম্যানিপুলেশনের বিভিন্ন দিক, পদ্ধতি এবং ব্যবহারের উদাহরণ নিয়ে বিস্তারিত আলোচনা করা হলো।
ডোম কী?
ডোম হলো একটি ট্রি-স্ট্রাকচার্ড রিপ্রেজেন্টেশন, যা ওয়েবপেজের উপাদানগুলোকে উপস্থাপন করে। প্রতিটি HTML এলিমেন্ট একটি নোড হিসেবে বিবেচিত হয় এবং এই নোডগুলো একটি হায়ারারকিক্যাল কাঠামো তৈরি করে। এই কাঠামো ব্যবহার করে জাভাস্ক্রিপ্ট কোড ওয়েবপেজের যেকোনো উপাদানকে অ্যাক্সেস এবং পরিবর্তন করতে পারে। জাভাস্ক্রিপ্ট হলো ডোম ম্যানিপুলেশনের প্রধান হাতিয়ার।
ডোম ম্যানিপুলেশনের প্রকারভেদ
ডোম ম্যানিপুলেশনকে প্রধানত তিনটি ভাগে ভাগ করা যায়:
১. এলিমেন্ট তৈরি এবং যোগ করা: নতুন HTML এলিমেন্ট তৈরি করে ওয়েবপেজে যুক্ত করা। ২. এলিমেন্ট পরিবর্তন করা: বিদ্যমান HTML এলিমেন্টের কনটেন্ট, অ্যাট্রিবিউট এবং স্টাইল পরিবর্তন করা। ৩. এলিমেন্ট অপসারণ করা: ওয়েবপেজ থেকে HTML এলিমেন্ট মুছে ফেলা।
এলিমেন্ট তৈরি এবং যোগ করা
নতুন এলিমেন্ট তৈরি করার জন্য `document.createElement()` মেথড ব্যবহার করা হয়। এই মেথড একটি নতুন HTML এলিমেন্ট অবজেক্ট তৈরি করে। এরপর `appendChild()` মেথড ব্যবহার করে এটিকে ডকুমেন্টের নির্দিষ্ট স্থানে যোগ করা হয়।
উদাহরণ:
```html <!DOCTYPE html> <html> <head> <title>ডোম ম্যানিপুলেশন উদাহরণ</title> </head> <body>
হ্যালো, ওয়ার্ল্ড!
<script>
// নতুন প্যারাগ্রাফ এলিমেন্ট তৈরি করা var newParagraph = document.createElement("p"); newParagraph.textContent = "এটি একটি নতুন প্যারাগ্রাফ।";
// কন্টেইনার এলিমেন্টটি নির্বাচন করা var container = document.getElementById("container");
// নতুন প্যারাগ্রাফ এলিমেন্টটিকে কন্টেইনারে যোগ করা container.appendChild(newParagraph);
</script>
</body> </html> ```
এই কোডে, একটি নতুন `
` এলিমেন্ট তৈরি করা হয়েছে এবং এর টেক্সট কনটেন্ট সেট করা হয়েছে। তারপর `container` আইডিযুক্ত `
এলিমেন্ট পরিবর্তন করা
বিদ্যমান এলিমেন্ট পরিবর্তন করার জন্য বিভিন্ন মেথড ব্যবহার করা হয়। যেমন:
- `innerHTML`: কোনো এলিমেন্টের ভেতরের HTML কনটেন্ট পরিবর্তন করে।
- `textContent`: কোনো এলিমেন্টের টেক্সট কনটেন্ট পরিবর্তন করে।
- `setAttribute()`: কোনো এলিমেন্টের অ্যাট্রিবিউট পরিবর্তন করে।
- `style`: কোনো এলিমেন্টের স্টাইল পরিবর্তন করে।
উদাহরণ:
```html <!DOCTYPE html> <html> <head> <title>ডোম ম্যানিপুলেশন উদাহরণ</title> </head> <body>
হ্যালো, ওয়ার্ল্ড!
এটি একটি প্যারাগ্রাফ।
<script>
// হেডিং এলিমেন্টটি নির্বাচন করা var heading = document.getElementById("heading");
// হেডিং এর টেক্সট পরিবর্তন করা heading.textContent = "নতুন হেডিং!";
// প্যারাগ্রাফ এলিমেন্টটি নির্বাচন করা var paragraph = document.getElementById("paragraph");
// প্যারাগ্রাফের HTML কনটেন্ট পরিবর্তন করা paragraph.innerHTML = "এটি একটি বোল্ড প্যারাগ্রাফ।";
</script>
</body> </html> ```
এই কোডে, `heading` আইডিযুক্ত `` এলিমেন্টের টেক্সট পরিবর্তন করা হয়েছে এবং `paragraph` আইডিযুক্ত `` এলিমেন্টের HTML কনটেন্ট পরিবর্তন করা হয়েছে। সিএসএস স্টাইল পরিবর্তন করার জন্য `style` প্রোপার্টি ব্যবহার করা যেতে পারে।
এলিমেন্ট অপসারণ করা
ওয়েবপেজ থেকে এলিমেন্ট অপসারণ করার জন্য `removeChild()` মেথড ব্যবহার করা হয়। এই মেথড একটি প্যারেন্ট এলিমেন্ট থেকে একটি চাইল্ড এলিমেন্টকে মুছে ফেলে।
উদাহরণ:
```html
<!DOCTYPE html>
<html>
<head>
<title>ডোম ম্যানিপুলেশন উদাহরণ</title>
</head>
<body>
প্রথম প্যারাগ্রাফ।
দ্বিতীয় প্যারাগ্রাফ।
<script>
// কন্টেইনার এলিমেন্টটি নির্বাচন করা
var container = document.getElementById("container");
// প্রথম প্যারাগ্রাফ এলিমেন্টটি নির্বাচন করা
var paragraph1 = document.getElementById("paragraph1");
// প্রথম প্যারাগ্রাফ এলিমেন্টটিকে কন্টেইনার থেকে অপসারণ করা
container.removeChild(paragraph1);
</script>
</body>
</html>
```
এই কোডে, `container` আইডিযুক্ত `` এলিমেন্ট থেকে `paragraph1` আইডিযুক্ত `` এলিমেন্টটিকে মুছে ফেলা হয়েছে। জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করে এই প্রক্রিয়াটিকে আরও গতিশীল করা যায়।
ডোম ম্যানিপুলেশনের সুবিধা
- ডাইনামিক ওয়েবপেজ তৈরি: ডোম ম্যানিপুলেশনের মাধ্যমে ওয়েবপেজের কনটেন্ট এবং স্ট্রাকচার পরিবর্তন করে ব্যবহারকারীর সাথে ইন্টার্যাকশন করা যায়।
- ব্যবহারকারীর অভিজ্ঞতা উন্নত করা: ব্যবহারকারীর কার্যকলাপের উপর ভিত্তি করে ওয়েবপেজের উপাদান পরিবর্তন করে ব্যবহারকারীর অভিজ্ঞতা উন্নত করা যায়।
- ওয়েবসাইট পারফরম্যান্স বৃদ্ধি: শুধুমাত্র প্রয়োজনীয় অংশটুকু পরিবর্তন করার মাধ্যমে ওয়েবসাইটের লোডিং সময় কমানো যায়।
- এসপিএ (Single Page Application) তৈরি: ডোম ম্যানিপুলেশন এসপিএ তৈরির জন্য অপরিহার্য, যেখানে একটিমাত্র HTML পেজ ব্যবহার করে বিভিন্ন কনটেন্ট দেখানো হয়। সিঙ্গেল পেজ অ্যাপ্লিকেশন তৈরিতে এটি গুরুত্বপূর্ণ ভূমিকা রাখে।
ডোম ম্যানিপুলেশনের অসুবিধা
- পারফরম্যান্সের সমস্যা: অতিরিক্ত ডোম ম্যানিপুলেশন ওয়েবসাইটের পারফরম্যান্স কমাতে পারে, বিশেষ করে জটিল ওয়েবপেজের ক্ষেত্রে।
- ব্রাউজার কম্প্যাটিবিলিটি: বিভিন্ন ব্রাউজারে ডোম ম্যানিপুলেশনের আচরণ ভিন্ন হতে পারে, তাই ক্রস-ব্রাউজার কম্প্যাটিবিলিটি নিশ্চিত করা জরুরি।
- সিকিউরিটি ঝুঁকি: ভুলভাবে ডোম ম্যানিপুলেশন করলে ক্রস-সাইট স্ক্রিপ্টিং (XSS) এর মতো নিরাপত্তা ঝুঁকি তৈরি হতে পারে। ওয়েব নিরাপত্তা নিশ্চিত করতে যথাযথ সতর্কতা অবলম্বন করা উচিত।
ডোম ম্যানিপুলেশনের জন্য গুরুত্বপূর্ণ মেথডসমূহ
| মেথড | বিবরণ |
|---|---|
| `document.getElementById()` | আইডি দিয়ে এলিমেন্ট নির্বাচন করে |
| `document.getElementsByClassName()` | ক্লাস নাম দিয়ে এলিমেন্ট নির্বাচন করে |
| `document.getElementsByTagName()` | ট্যাগ নাম দিয়ে এলিমেন্ট নির্বাচন করে |
| `document.querySelector()` | সিএসএস সিলেক্টর দিয়ে প্রথম এলিমেন্ট নির্বাচন করে |
| `document.querySelectorAll()` | সিএসএস সিলেক্টর দিয়ে সকল এলিমেন্ট নির্বাচন করে |
| `element.innerHTML` | এলিমেন্টের ভেতরের HTML কনটেন্ট পায় বা সেট করে |
| `element.textContent` | এলিমেন্টের টেক্সট কনটেন্ট পায় বা সেট করে |
| `element.setAttribute()` | এলিমেন্টের অ্যাট্রিবিউট সেট করে |
| `element.style` | এলিমেন্টের স্টাইল পায় বা সেট করে |
| `element.appendChild()` | এলিমেন্টকে চাইল্ড হিসেবে যোগ করে |
| `element.removeChild()` | এলিমেন্টকে প্যারেন্ট থেকে সরিয়ে দেয় |
ডোম ম্যানিপুলেশন এবং ফ্রেমওয়ার্ক
আধুনিক ওয়েব ডেভেলপমেন্ট ফ্রেমওয়ার্কগুলো, যেমন রিঅ্যাক্ট, অ্যাঙ্গুলার, এবং ভিউ.জেএস, ডোম ম্যানিপুলেশনকে আরও সহজ এবং কার্যকরী করে তোলে। এই ফ্রেমওয়ার্কগুলো ভার্চুয়াল ডোম ব্যবহার করে, যা ডোম ম্যানিপুলেশনের পারফরম্যান্স উন্নত করে। ভার্চুয়াল ডোম হলো আসল ডোম-এর একটি হালকা সংস্করণ, যা মেমরিতে তৈরি করা হয় এবং পরিবর্তনগুলো প্রথমে এখানে প্রয়োগ করা হয়। এরপর শুধুমাত্র পরিবর্তিত অংশগুলো আসল ডোম-এ আপডেট করা হয়।
টেকনিক্যাল বিশ্লেষণ এবং ভলিউম বিশ্লেষণ
ডোম ম্যানিপুলেশন ওয়েবপেজের টেকনিক্যাল দিক উন্নত করতে সহায়ক। ওয়েবসাইটের লোডিং স্পিড, এলিমেন্টের রেন্ডারিং এবং ব্যবহারকারীর ইন্টার্যাকশন অপটিমাইজ করার জন্য ডোম ম্যানিপুলেশন ব্যবহার করা হয়। টেকনিক্যাল এসইও এর জন্য ডোম ম্যানিপুলেশন একটি গুরুত্বপূর্ণ কৌশল।
ভলিউম বিশ্লেষণের ক্ষেত্রে, ডোম ম্যানিপুলেশন ব্যবহার করে ওয়েবপেজের বিভিন্ন অংশের ব্যবহারকারীর কার্যকলাপ ট্র্যাক করা যায়। কোন এলিমেন্টের উপর বেশি ক্লিক করা হচ্ছে, কোন অংশটি বেশি দেখা হচ্ছে, ইত্যাদি তথ্য বিশ্লেষণ করে ওয়েবসাইটের কনটেন্ট এবং ডিজাইন অপটিমাইজ করা যায়। ওয়েব অ্যানালিটিক্স এই ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে।
উপসংহার
ডোম ম্যানিপুলেশন ওয়েব ডেভেলপমেন্টের একটি অপরিহার্য অংশ। এটি ওয়েবপেজের কনটেন্ট, স্ট্রাকচার এবং স্টাইল পরিবর্তন করার ক্ষমতা প্রদান করে। সঠিক পদ্ধতি অনুসরণ করে এবং আধুনিক ফ্রেমওয়ার্ক ব্যবহার করে ডোম ম্যানিপুলেশনের সুবিধাগুলো সম্পূর্ণরূপে কাজে লাগানো সম্ভব। তবে, পারফরম্যান্স এবং নিরাপত্তা ঝুঁকির বিষয়ে সতর্ক থাকা জরুরি।
আরও জানতে:
- ডকুমেন্ট অবজেক্ট মডেল (ডোম)
- জাভাস্ক্রিপ্ট টিউটোরিয়াল
- এইচটিএমএল টিউটোরিয়াল
- সিএসএস টিউটোরিয়াল
- ওয়েব ডেভেলপমেন্ট
- ফ্রন্ট-এন্ড ডেভেলপমেন্ট
- রিঅ্যাক্ট (ফ্রেমওয়ার্ক)
- অ্যাঙ্গুলার (ফ্রেমওয়ার্ক)
- ভিউ.জেএস (ফ্রেমওয়ার্ক)
- জাভাস্ক্রিপ্ট লাইব্রেরি
- ওয়েব ডিজাইন
- ইউজার ইন্টারফেস (UI) ডিজাইন
- ইউজার এক্সপেরিয়েন্স (UX) ডিজাইন
- ওয়েব পারফরম্যান্স অপটিমাইজেশন
- ব্রাউজার কম্প্যাটিবিলিটি
- ওয়েব নিরাপত্তা
- ক্রস-সাইট স্ক্রিপ্টিং (XSS)
- টেকনিক্যাল এসইও
- ওয়েব অ্যানালিটিক্স
- এসপিএ (Single Page Application)
এখনই ট্রেডিং শুরু করুন
IQ Option-এ নিবন্ধন করুন (সর্বনিম্ন ডিপোজিট $10)
Pocket Option-এ অ্যাকাউন্ট খুলুন (সর্বনিম্ন ডিপোজিট $5)
আমাদের সম্প্রদায়ে যোগ দিন
আমাদের টেলিগ্রাম চ্যানেলে যোগ দিন @strategybin এবং পান:
✓ দৈনিক ট্রেডিং সংকেত
✓ একচেটিয়া কৌশলগত বিশ্লেষণ
✓ বাজারের প্রবণতা সম্পর্কে বিজ্ঞপ্তি
✓ নতুনদের জন্য শিক্ষামূলক উপকরণ
প্রথম প্যারাগ্রাফ।
দ্বিতীয় প্যারাগ্রাফ।
` এলিমেন্টটিকে মুছে ফেলা হয়েছে। জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করে এই প্রক্রিয়াটিকে আরও গতিশীল করা যায়।
ডোম ম্যানিপুলেশনের সুবিধা
- ডাইনামিক ওয়েবপেজ তৈরি: ডোম ম্যানিপুলেশনের মাধ্যমে ওয়েবপেজের কনটেন্ট এবং স্ট্রাকচার পরিবর্তন করে ব্যবহারকারীর সাথে ইন্টার্যাকশন করা যায়।
- ব্যবহারকারীর অভিজ্ঞতা উন্নত করা: ব্যবহারকারীর কার্যকলাপের উপর ভিত্তি করে ওয়েবপেজের উপাদান পরিবর্তন করে ব্যবহারকারীর অভিজ্ঞতা উন্নত করা যায়।
- ওয়েবসাইট পারফরম্যান্স বৃদ্ধি: শুধুমাত্র প্রয়োজনীয় অংশটুকু পরিবর্তন করার মাধ্যমে ওয়েবসাইটের লোডিং সময় কমানো যায়।
- এসপিএ (Single Page Application) তৈরি: ডোম ম্যানিপুলেশন এসপিএ তৈরির জন্য অপরিহার্য, যেখানে একটিমাত্র HTML পেজ ব্যবহার করে বিভিন্ন কনটেন্ট দেখানো হয়। সিঙ্গেল পেজ অ্যাপ্লিকেশন তৈরিতে এটি গুরুত্বপূর্ণ ভূমিকা রাখে।
ডোম ম্যানিপুলেশনের অসুবিধা
- পারফরম্যান্সের সমস্যা: অতিরিক্ত ডোম ম্যানিপুলেশন ওয়েবসাইটের পারফরম্যান্স কমাতে পারে, বিশেষ করে জটিল ওয়েবপেজের ক্ষেত্রে।
- ব্রাউজার কম্প্যাটিবিলিটি: বিভিন্ন ব্রাউজারে ডোম ম্যানিপুলেশনের আচরণ ভিন্ন হতে পারে, তাই ক্রস-ব্রাউজার কম্প্যাটিবিলিটি নিশ্চিত করা জরুরি।
- সিকিউরিটি ঝুঁকি: ভুলভাবে ডোম ম্যানিপুলেশন করলে ক্রস-সাইট স্ক্রিপ্টিং (XSS) এর মতো নিরাপত্তা ঝুঁকি তৈরি হতে পারে। ওয়েব নিরাপত্তা নিশ্চিত করতে যথাযথ সতর্কতা অবলম্বন করা উচিত।
ডোম ম্যানিপুলেশনের জন্য গুরুত্বপূর্ণ মেথডসমূহ
| মেথড | বিবরণ | |---|---| | `document.getElementById()` | আইডি দিয়ে এলিমেন্ট নির্বাচন করে | | `document.getElementsByClassName()` | ক্লাস নাম দিয়ে এলিমেন্ট নির্বাচন করে | | `document.getElementsByTagName()` | ট্যাগ নাম দিয়ে এলিমেন্ট নির্বাচন করে | | `document.querySelector()` | সিএসএস সিলেক্টর দিয়ে প্রথম এলিমেন্ট নির্বাচন করে | | `document.querySelectorAll()` | সিএসএস সিলেক্টর দিয়ে সকল এলিমেন্ট নির্বাচন করে | | `element.innerHTML` | এলিমেন্টের ভেতরের HTML কনটেন্ট পায় বা সেট করে | | `element.textContent` | এলিমেন্টের টেক্সট কনটেন্ট পায় বা সেট করে | | `element.setAttribute()` | এলিমেন্টের অ্যাট্রিবিউট সেট করে | | `element.style` | এলিমেন্টের স্টাইল পায় বা সেট করে | | `element.appendChild()` | এলিমেন্টকে চাইল্ড হিসেবে যোগ করে | | `element.removeChild()` | এলিমেন্টকে প্যারেন্ট থেকে সরিয়ে দেয় |
ডোম ম্যানিপুলেশন এবং ফ্রেমওয়ার্ক
আধুনিক ওয়েব ডেভেলপমেন্ট ফ্রেমওয়ার্কগুলো, যেমন রিঅ্যাক্ট, অ্যাঙ্গুলার, এবং ভিউ.জেএস, ডোম ম্যানিপুলেশনকে আরও সহজ এবং কার্যকরী করে তোলে। এই ফ্রেমওয়ার্কগুলো ভার্চুয়াল ডোম ব্যবহার করে, যা ডোম ম্যানিপুলেশনের পারফরম্যান্স উন্নত করে। ভার্চুয়াল ডোম হলো আসল ডোম-এর একটি হালকা সংস্করণ, যা মেমরিতে তৈরি করা হয় এবং পরিবর্তনগুলো প্রথমে এখানে প্রয়োগ করা হয়। এরপর শুধুমাত্র পরিবর্তিত অংশগুলো আসল ডোম-এ আপডেট করা হয়।
টেকনিক্যাল বিশ্লেষণ এবং ভলিউম বিশ্লেষণ
ডোম ম্যানিপুলেশন ওয়েবপেজের টেকনিক্যাল দিক উন্নত করতে সহায়ক। ওয়েবসাইটের লোডিং স্পিড, এলিমেন্টের রেন্ডারিং এবং ব্যবহারকারীর ইন্টার্যাকশন অপটিমাইজ করার জন্য ডোম ম্যানিপুলেশন ব্যবহার করা হয়। টেকনিক্যাল এসইও এর জন্য ডোম ম্যানিপুলেশন একটি গুরুত্বপূর্ণ কৌশল।
ভলিউম বিশ্লেষণের ক্ষেত্রে, ডোম ম্যানিপুলেশন ব্যবহার করে ওয়েবপেজের বিভিন্ন অংশের ব্যবহারকারীর কার্যকলাপ ট্র্যাক করা যায়। কোন এলিমেন্টের উপর বেশি ক্লিক করা হচ্ছে, কোন অংশটি বেশি দেখা হচ্ছে, ইত্যাদি তথ্য বিশ্লেষণ করে ওয়েবসাইটের কনটেন্ট এবং ডিজাইন অপটিমাইজ করা যায়। ওয়েব অ্যানালিটিক্স এই ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে।
উপসংহার
ডোম ম্যানিপুলেশন ওয়েব ডেভেলপমেন্টের একটি অপরিহার্য অংশ। এটি ওয়েবপেজের কনটেন্ট, স্ট্রাকচার এবং স্টাইল পরিবর্তন করার ক্ষমতা প্রদান করে। সঠিক পদ্ধতি অনুসরণ করে এবং আধুনিক ফ্রেমওয়ার্ক ব্যবহার করে ডোম ম্যানিপুলেশনের সুবিধাগুলো সম্পূর্ণরূপে কাজে লাগানো সম্ভব। তবে, পারফরম্যান্স এবং নিরাপত্তা ঝুঁকির বিষয়ে সতর্ক থাকা জরুরি।
আরও জানতে:
- ডকুমেন্ট অবজেক্ট মডেল (ডোম)
- জাভাস্ক্রিপ্ট টিউটোরিয়াল
- এইচটিএমএল টিউটোরিয়াল
- সিএসএস টিউটোরিয়াল
- ওয়েব ডেভেলপমেন্ট
- ফ্রন্ট-এন্ড ডেভেলপমেন্ট
- রিঅ্যাক্ট (ফ্রেমওয়ার্ক)
- অ্যাঙ্গুলার (ফ্রেমওয়ার্ক)
- ভিউ.জেএস (ফ্রেমওয়ার্ক)
- জাভাস্ক্রিপ্ট লাইব্রেরি
- ওয়েব ডিজাইন
- ইউজার ইন্টারফেস (UI) ডিজাইন
- ইউজার এক্সপেরিয়েন্স (UX) ডিজাইন
- ওয়েব পারফরম্যান্স অপটিমাইজেশন
- ব্রাউজার কম্প্যাটিবিলিটি
- ওয়েব নিরাপত্তা
- ক্রস-সাইট স্ক্রিপ্টিং (XSS)
- টেকনিক্যাল এসইও
- ওয়েব অ্যানালিটিক্স
- এসপিএ (Single Page Application)
এখনই ট্রেডিং শুরু করুন
IQ Option-এ নিবন্ধন করুন (সর্বনিম্ন ডিপোজিট $10) Pocket Option-এ অ্যাকাউন্ট খুলুন (সর্বনিম্ন ডিপোজিট $5)
আমাদের সম্প্রদায়ে যোগ দিন
আমাদের টেলিগ্রাম চ্যানেলে যোগ দিন @strategybin এবং পান: ✓ দৈনিক ট্রেডিং সংকেত ✓ একচেটিয়া কৌশলগত বিশ্লেষণ ✓ বাজারের প্রবণতা সম্পর্কে বিজ্ঞপ্তি ✓ নতুনদের জন্য শিক্ষামূলক উপকরণ