জাভাস্ক্রিপ্টে টাইপড অ্যারে

জাভাস্ক্রিপ্টে টাইপড অ্যারে

এই প্রবন্ধে জাভাস্ক্রিপ্টে TypedArray নিয়ে আলোচনা করা হয়েছে।

আমরা বিস্তারিতভাবে TypedArray এর মৌলিক ধারণা, প্রতিটি প্রকার, কীভাবে সেগুলি ব্যবহার করতে হয়, এবং নির্দিষ্ট ব্যবহারের ক্ষেত্রে ব্যাখ্যা করব।

YouTube Video

জাভাস্ক্রিপ্টে টাইপড অ্যারে

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

TypedArray এর মৌলিক গঠন

TypedArray এর প্রধান উপাদান হলো ArrayBuffer এবং TypedArray নিজেই।

  • ArrayBuffer: মেমরিতে বাইনারি ডেটা বরাদ্দ করার জন্য একটি স্থির-আকারের বাফার। এই বাফারটি কেবল একটি ডেটা এরিয়া এবং এটি সরাসরি পড়া বা লেখা সম্ভব নয়।
  • TypedArray: একটি র‍্যাপার অবজেক্ট যা বাফারের সাথে নির্দিষ্ট ডেটা টাইপ প্রয়োগ করে, ডেটা অ্যাক্সেস এবং নিয়ন্ত্রণ সক্ষম করে।

প্রাথমিক ব্যবহারের উদাহরণ

নিচে একটি ArrayBuffer তৈরি করার এবং তারপর তার উপর ভিত্তি করে একটি TypedArray তৈরির উদাহরণ দেওয়া হলো।

 1// Create a 16-byte buffer
 2const buffer = new ArrayBuffer(16);
 3
 4// Create a TypedArray (Uint8Array) to handle 8-bit unsigned integers
 5const uint8Array = new Uint8Array(buffer);
 6
 7// Set data
 8uint8Array[0] = 255;
 9uint8Array[1] = 128;
10
11// Retrieve data
12console.log(uint8Array[0]); // 255
13console.log(uint8Array[1]); // 128
  • এই উদাহরণে, একটি ArrayBuffer তৈরি করা হয়েছে এবং তারপর সেই বাফার ভিত্তিক একটি Uint8Array তৈরি করা হয়েছে। প্রতিটি উপাদানকে ৮-বিট সাইনবিহীন পূর্ণসংখ্যা হিসাবে গণ্য করা হয়, যা নির্দিষ্ট সীমার মধ্যে কেবলমাত্র মান সংগ্রহ করে।

TypedArray এর ধরনসমূহ

প্রতিটি ডেটা টাইপের জন্য বিভিন্ন ধরনের TypedArray রয়েছে। মূলত উল্লেখযোগ্য ধরনেরগুলো নিম্নরূপ।

টাইপের নাম উপাদানের আকার বর্ণনা
Int8Array ১ বাইট ৮-বিট স্বাক্ষরিত পূর্ণসংখ্যা
Uint8Array ১ বাইট ৮-বিট আনসাইনড পূর্ণসংখ্যা
Uint8ClampedArray ১ বাইট ৮-বিট আনসাইনড পূর্ণসংখ্যা (ক্ল্যাম্পড মান ধরে রাখে)
Int16Array ২ বাইট ১৬-বিট স্বাক্ষরিত পূর্ণসংখ্যা
Uint16Array ২ বাইট ১৬-বিট আনসাইনড পূর্ণসংখ্যা
Int32Array ৪ বাইট ৩২-বিট স্বাক্ষরিত পূর্ণসংখ্যা
Uint32Array ৪ বাইট ৩২-বিট আনসাইনড পূর্ণসংখ্যা
Float32Array ৪ বাইট ৩২-বিট দশমিক-সংখ্যা
Float64Array ৮ বাইট ৬৪-বিট দশমিক-সংখ্যা

এই TypedArray-গুলো মেমরি দক্ষ এবং বড় পরিমাণ ডেটা প্রক্রিয়াকরণের জন্য কার্যকর।

TypedArray হ্যান্ডলিং

আপনি একটি TypedArray-এর ডেটা ইন্ডেক্স ব্যবহার করে অ্যাক্সেস করতে পারেন, ঠিক নিয়মিত অ্যারের মতো, তবে কিছু বিশেষ পদ্ধতিও প্রদান করা হয়।

মান সেট করা

একটি TypedArray-এ, আপনি একবারে একাধিক মান প্রদান করতে পারেন set পদ্ধতি ব্যবহার করে।

1const buffer = new ArrayBuffer(8);
2const int16Array = new Int16Array(buffer);
3
4// Set values
5int16Array.set([10, 20, 30]);
6
7console.log(int16Array[0]); // 10
8console.log(int16Array[1]); // 20
9console.log(int16Array[2]); // 30
  • এই কোডটি set মেথড ব্যবহার করে একসাথে একাধিক মান একটি Int16Array-এ অ্যাসাইন করে এবং কনসোলে প্রতিটি উপাদান প্রদর্শন করে।

একটি সাবঅ্যারে পাওয়া

একটি TypedArray-এর অংশ সাবঅ্যারে হিসাবে পেতে, subarray পদ্ধতি ব্যবহার করুন। এটি মূল TypedArray-এর একই বাফারকে উল্লেখ করে।

1const int16Array = new Int16Array([1, 2, 3, 4, 5]);
2
3// Get a subarray containing elements from the 2nd to the 4th
4const subArray = int16Array.subarray(1, 4);
5
6console.log(subArray); // Int16Array [2, 3, 4]
  • এই কোডটি subarray মেথড ব্যবহার করে একটি নির্দিষ্ট সীমার উপাদানসমূহ Int16Array থেকে পুনরুদ্ধার করে এবং কনসোলে সেই সাবঅ্যারে প্রদর্শন করে।

বাফার কপি করা

একটি TypedArray-এর বাফার অন্য একটি TypedArray-এও কপি করা যেতে পারে। set পদ্ধতি ব্যবহার করে, আপনি নির্দিষ্ট অবস্থান থেকে কপি করতে পারেন।

1const srcArray = new Uint8Array([10, 20, 30, 40]);
2const destArray = new Uint8Array(4);
3
4// Copy
5destArray.set(srcArray);
6
7console.log(destArray); // Uint8Array [10, 20, 30, 40]
  • এই কোডটি set মেথড ব্যবহার করে একটি Uint8Array-এর বিষয়বস্তু আরেকটি অ্যারেতে কপি করে এবং কনসোলে কপি করা অ্যারে প্রদর্শন করে।

DataView ব্যবহার করা

যখন একটি TypedArray একটি নির্দিষ্ট ডেটা টাইপের বাফার হ্যান্ডেল করে, তখন DataView এমন একটি ইন্টারফেস যা ইচ্ছেমতো অফসেট এবং ডেটা টাইপ ব্যবহার করে বাইনারি ডেটা সহজলভ্য হ্যান্ডলিং করতে সক্ষম করে। এটি একই বাফারের মধ্যে বিভিন্ন ধরনের মিশ্রণকে অনুমতি দেয়।

 1const buffer = new ArrayBuffer(8);
 2const dataView = new DataView(buffer);
 3
 4// Write a 32-bit signed integer at offset 0
 5dataView.setInt32(0, 12345);
 6
 7// Write a 32-bit floating-point number at offset 4
 8dataView.setFloat32(4, 12.34);
 9
10console.log(dataView.getInt32(0)); // 12345
11console.log(dataView.getFloat32(4)); // 12.34000015258789
  • এই কোডটি একটি DataView ব্যবহার করে একই বাফারে ভিন্ন ধরনের ডেটা—৩২-বিট পূর্ণসংখ্যা এবং ৩২-বিট ফ্লোটিং-পয়েন্ট সংখ্যা—লিখে এবং ফলাফল পরীক্ষা করে।

  • TypedArray-এর তুলনায় DataView বেশি ডেটা অ্যাক্সেস নমনীয়তা প্রদান করে এবং বিশেষভাবে বাইনারি ফাইল ফরম্যাট বা নেটওয়ার্ক প্রোটোকল নিয়ে কাজ করতে উপযোগী।

TypedArray-এর ব্যবহার ক্ষেত্রে

TypedArray মূলত গুরুত্বপূর্ণ পরিমাণ বাইনারি ডেটাকে দক্ষতার সাথে পরিচালনা করার জন্য ব্যবহৃত হয়। নির্দিষ্ট ব্যবহার ক্ষেত্রে নিম্নলিখিত অন্তর্ভুক্ত।

ছবি প্রক্রিয়াকরণ

ছবি ডেটার পিক্সেল তথ্য পরিচালনা করার সময় TypedArray ব্যবহার করা হয়। Uint8Array ব্যবহার করে, আপনি প্রতিটি পিক্সেলের RGBA মানগুলো সংরক্ষণ করেন এবং ছবি সম্পাদনা ও প্রক্রিয়াকরণ করেন।

 1const width = 100;
 2const height = 100;
 3const imageData = new Uint8Array(width * height * 4); // RGBA
 4
 5// Set pixel data
 6for (let i = 0; i < imageData.length; i += 4) {
 7    imageData[i] = 255;     // Red
 8    imageData[i + 1] = 0;   // Green
 9    imageData[i + 2] = 0;   // Blue
10    imageData[i + 3] = 255; // Alpha
11}
  • এই কোডটি একটি Uint8Array ব্যবহার করে ১০০ প্রস্থ ও ১০০ উচ্চতার RGBA ফরম্যাটে ইমেজ ডেটা তৈরি করে এবং সমস্ত পিক্সেলগুলোকে লাল সেট করে।

ওয়েবঅ্যাসেম্বলি ইন্টারফেসিং

জাভাস্ক্রিপ্ট এবং ওয়েবঅ্যাসেম্বলির মধ্যে বাইনারি ডেটা বিনিময়ের জন্য TypedArray ব্যবহার করা হয়। ArrayBuffer এর মাধ্যমে জাভাস্ক্রিপ্ট এবং ওয়েবঅ্যাসেম্বলির মেমরি স্থান শেয়ার করে দ্রুত ডেটা বিনিময় সম্ভব।

অডিও এবং ভিডিও ডেটা প্রক্রিয়াকরণ

অডিও এবং ভিডিও প্রক্রিয়াকরণে TypedArray একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। অডিও ডেটার ওয়েভফর্মগুলি সংরক্ষণের জন্য আপনি Float32Array ব্যবহার করতে পারেন যা প্লেব্যাক এবং প্রক্রিয়াকরণে সহায়ক।

উপসংহার

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

আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।

YouTube Video