ডেটা সিরিয়ালাইজেশন (Data Serialization) এবং ডেসিরিয়ালাইজেশন (Deserialization) প্রক্রিয়া দুটি গুরুত্বপূর্ণ টুল যা ডেটা আদান-প্রদান এবং সঞ্চয় করার জন্য ব্যবহৃত হয়। সিরিয়ালাইজেশন হল ডেটাকে একটি স্টোরেবল বা ট্রান্সফারেবল ফর্ম্যাটে রূপান্তরিত করার প্রক্রিয়া, এবং ডেসিরিয়ালাইজেশন হল সেই ডেটাকে পুনরায় আসল অবস্থা (অথবা পঠনযোগ্য ফর্ম্যাট) এ ফিরিয়ে আনা।
লুয়া ভাষায় সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন সাধারণত টেবিলগুলোকে স্ট্রিং ফর্ম্যাটে রূপান্তরিত করা এবং পরবর্তীতে আবার টেবিল হিসেবে ফিরে আনা হয়।
১. Data Serialization (ডেটা সিরিয়ালাইজেশন)
লুয়া ভাষায়, ডেটা সিরিয়ালাইজেশন সাধারণত টেবিলকে একটি স্ট্রিং (বা অন্যান্য ফর্ম্যাট) রূপে রূপান্তরিত করার জন্য ব্যবহৃত হয়। লুয়া নিজেই সরাসরি সিরিয়ালাইজেশন এর জন্য কোনো বিল্ট-ইন ফাংশন সরবরাহ না করলেও, জনপ্রিয় serpent লাইব্রেরি ব্যবহার করা হয় যা টেবিলকে সিরিয়ালাইজড ফর্ম্যাটে রূপান্তরিত করতে সাহায্য করে।
উদাহরণ:
১.১. serpent লাইব্রেরি ব্যবহার
লুয়া প্রোগ্রামিং ভাষায় সিরিয়ালাইজেশন করতে serpent লাইব্রেরি ব্যবহার করা যেতে পারে। এটি একটি খুবই জনপ্রিয় লাইব্রেরি যা লুয়া টেবিলের সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন সহজ করে।
প্রথমে serpent লাইব্রেরি ইনস্টল করতে হবে।
luarocks install serpentএরপর, টেবিল সিরিয়ালাইজ করতে এবং ডেসিরিয়ালাইজ করতে নিচের কোড ব্যবহার করা হয়।
-- serpent লাইব্রেরি লোড করা
local serpent = require("serpent")
-- একটি টেবিল তৈরি করা
local person = {
name = "Alice",
age = 30,
hobbies = {"Reading", "Traveling", "Cycling"}
}
-- টেবিল সিরিয়ালাইজ করা
local serializedData = serpent.dump(person)
-- সিরিয়ালাইজড ডেটা প্রিন্ট করা
print(serializedData)
-- ডেসিরিয়ালাইজ করা
local deserializedData = loadstring(serializedData)()
print(deserializedData.name) -- আউটপুট: Aliceএখানে, serpent.dump ফাংশন ব্যবহার করে person টেবিলটি সিরিয়ালাইজ করা হয়েছে এবং তারপর loadstring ফাংশন ব্যবহার করে ডেসিরিয়ালাইজ করা হয়েছে।
২. Data Deserialization (ডেটা ডেসিরিয়ালাইজেশন)
ডেসিরিয়ালাইজেশন হল সিরিয়ালাইজড ডেটা (যেমন স্ট্রিং) কে আবার আসল অবস্থা বা অবজেক্টে ফিরিয়ে আনার প্রক্রিয়া।
উদাহরণ:
২.১. serpent লাইব্রেরি ব্যবহার
উপরের উদাহরণে দেখানো হয়েছে, কীভাবে সিরিয়ালাইজড ডেটা loadstring ফাংশন দিয়ে ডেসিরিয়ালাইজ করা যায়।
local serpent = require("serpent")
-- সিরিয়ালাইজড ডেটা
local serializedData = "return {name = \"Alice\", age = 30, hobbies = {\"Reading\", \"Traveling\", \"Cycling\"}}"
-- ডেসিরিয়ালাইজ করা
local deserializedData = loadstring(serializedData)()
-- ডেসিরিয়ালাইজড ডেটা ব্যবহার করা
print(deserializedData.name) -- আউটপুট: Aliceএখানে, স্ট্রিং আকারে থাকা সিরিয়ালাইজড ডেটা loadstring ফাংশনের মাধ্যমে পুনরায় টেবিল আকারে ফিরে এসেছে, যা পরে ব্যবহার করা হয়েছে।
৩. JSON ফরম্যাট ব্যবহার
লুয়া ভাষায় JSON ফরম্যাটেও সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন করা সম্ভব। লুয়া cjson বা dkjson লাইব্রেরি ব্যবহার করে JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন করা যায়।
উদাহরণ:
৩.১. cjson লাইব্রেরি ব্যবহার
cjson লাইব্রেরি লুয়াতে JSON ডেটা পরিচালনা করার জন্য ব্যবহার করা হয়।
luarocks install lua-cjsonএরপর, নিচের কোড ব্যবহার করে JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন করা যায়:
local cjson = require("cjson")
-- একটি টেবিল তৈরি করা
local person = {
name = "Alice",
age = 30,
hobbies = {"Reading", "Traveling", "Cycling"}
}
-- টেবিলকে JSON স্ট্রিংয়ে সিরিয়ালাইজ করা
local jsonStr = cjson.encode(person)
print(jsonStr) -- আউটপুট: {"name":"Alice","age":30,"hobbies":["Reading","Traveling","Cycling"]}
-- JSON স্ট্রিংকে টেবিল আকারে ডেসিরিয়ালাইজ করা
local decoded = cjson.decode(jsonStr)
print(decoded.name) -- আউটপুট: Aliceএখানে, cjson.encode ফাংশনটি টেবিলকে JSON স্ট্রিং এ রূপান্তরিত করেছে এবং cjson.decode ফাংশনটি JSON স্ট্রিংকে পুনরায় টেবিল হিসেবে রূপান্তরিত করেছে।
সারসংক্ষেপ
- সিরিয়ালাইজেশন (Serialization) হল ডেটাকে স্টোরেবল বা ট্রান্সফারযোগ্য ফরম্যাটে রূপান্তর করার প্রক্রিয়া।
- ডেসিরিয়ালাইজেশন (Deserialization) হল সিরিয়ালাইজড ডেটাকে পুনরায় আসল অবস্থা বা অবজেক্টে ফিরিয়ে আনা।
- লুয়া ভাষায়
serpent,cjson, এবংdkjsonলাইব্রেরি ব্যবহারের মাধ্যমে টেবিল এবং অন্যান্য ডেটা সিরিয়ালাইজ ও ডেসিরিয়ালাইজ করা যায়।
এই প্রক্রিয়াগুলি ব্যবহার করে আপনি ডেটা সংরক্ষণ এবং অন্যান্য সিস্টেমের মধ্যে সহজে আদান-প্রদান করতে পারেন।
Read more