Serialization এবং Deserialization হল দুটি গুরুত্বপূর্ণ কনসেপ্ট যা ডেটা স্টোরেজ, নেটওয়ার্কিং এবং অন্যান্য সিস্টেমে ডেটা ট্রান্সফার করতে ব্যবহৃত হয়।
Clojure প্রোগ্রামিং ভাষায় serialization এবং deserialization করার জন্য সাধারণত EDN (Extensible Data Notation), JSON, XML, এবং Java Serialization ব্যবহৃত হয়। Clojure-এর মধ্যে মেটাডেটা স্টোরেজের জন্য EDN প্রায়শই ব্যবহৃত হয়, কারণ এটি একটি নির্ভরযোগ্য, পাঠযোগ্য, এবং সহজে বিশ্লেষণযোগ্য ডেটা ফরম্যাট।
Clojure-এ serialization এবং deserialization করার জন্য বেশ কিছু লাইব্রেরি পাওয়া যায়, যেমন clojure.edn
, cheshire
, এবং java.io
।
EDN একটি Clojure-native ফরম্যাট যা ক্লোজারের ডেটা স্ট্রাকচারকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে ব্যবহৃত হয়। এটি একটি পাঠযোগ্য এবং human-friendly ফরম্যাট যা ক্লোজারের জন্য ডিজাইন করা হয়েছে।
Clojure এর clojure.edn
লাইব্রেরি দিয়ে EDN ডেটাকে সিরিয়ালাইজ করা যায়।
(require '[clojure.edn :as edn])
(def my-map {:name "Alice" :age 30 :city "New York"})
; EDN সিরিয়ালাইজেশন
(def serialized (pr-str my-map)) ; pr-str is used to serialize to EDN format
(println serialized)
এখানে, pr-str
ফাংশনটি my-map
কে EDN ফরম্যাটে রূপান্তরিত করে একটি স্ট্রিং আউটপুট দেয়।
EDN ডেটা ডেসিরিয়ালাইজ করার জন্য read-string
ব্যবহার করা হয়।
; EDN ডেসিরিয়ালাইজেশন
(def deserialized (edn/read-string serialized))
(println deserialized) ; আউটপুট: {:name "Alice", :age 30, :city "New York"}
এখানে, read-string
ফাংশনটি সিরিয়ালাইজড EDN স্ট্রিংটিকে আবার Clojure ডেটা কাঠামো (যেমন, ম্যাপ) তে রূপান্তরিত করে।
JSON হল একটি জনপ্রিয় ডেটা ফরম্যাট যা ক্লোজার সহ বিভিন্ন প্রোগ্রামিং ভাষায় সমর্থিত। Clojure-এ JSON সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার জন্য cheshire
লাইব্রেরি ব্যবহার করা হয়।
(require '[cheshire.core :as cheshire])
(def my-map {:name "Alice" :age 30 :city "New York"})
; JSON সিরিয়ালাইজেশন
(def serialized-json (cheshire/generate-string my-map))
(println serialized-json) ; আউটপুট: "{\"name\":\"Alice\",\"age\":30,\"city\":\"New York\"}"
এখানে, cheshire/generate-string
ফাংশনটি my-map
কে JSON ফরম্যাটে রূপান্তরিত করে।
; JSON ডেসিরিয়ালাইজেশন
(def deserialized-json (cheshire/parse-string serialized-json true))
(println deserialized-json) ; আউটপুট: {:name "Alice", :age 30, :city "New York"}
এখানে, cheshire/parse-string
ফাংশনটি JSON স্ট্রিংটিকে আবার Clojure ডেটা কাঠামো (যেমন, ম্যাপ) তে রূপান্তরিত করে।
যেহেতু ক্লোজার JVM-ভিত্তিক, তাই Clojure Java Serialization API ব্যবহার করতে পারে। Java Serialization এর মাধ্যমে অবজেক্টগুলি বাইনারি ফরম্যাটে রূপান্তরিত হয় এবং পুনরায় পুনঃপ্রাপ্ত (deserialize) করা যায়।
(import '(java.io ByteArrayOutputStream ObjectOutputStream))
(def my-object {:name "Alice" :age 30})
; Java Serialization
(def baos (ByteArrayOutputStream.))
(def oos (ObjectOutputStream. baos))
(.writeObject oos my-object)
(.flush oos)
(def serialized-java (bytes baos))
এখানে, Java এর ObjectOutputStream
ব্যবহার করে my-object
অবজেক্টটি বাইনারি ফরম্যাটে সিরিয়ালাইজ করা হয়েছে।
(import '(java.io ByteArrayInputStream ObjectInputStream))
; Java Deserialization
(def bais (ByteArrayInputStream. serialized-java))
(def ois (ObjectInputStream. bais))
(def deserialized-java (.readObject ois))
(println deserialized-java) ; আউটপুট: {:name "Alice", :age 30}
এখানে, ObjectInputStream
ব্যবহার করে বাইনারি ডেটা থেকে অবজেক্ট পুনরুদ্ধার করা হয়েছে।
ক্লোজার প্রিমিটিভ ডেটা (যেমন, ইন্টিজার, ডাবল, বুলিয়ান) এবং বাইনারি ডেটা (যেমন, ইমেজ বা ফাইল) সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন করার জন্য Java I/O লাইব্রেরি ব্যবহার করা যেতে পারে।
(import '(java.io ByteArrayOutputStream ObjectOutputStream))
(def my-data "Hello, Clojure!")
; বাইনারি সিরিয়ালাইজেশন
(def baos (ByteArrayOutputStream.))
(def oos (ObjectOutputStream. baos))
(.writeObject oos my-data)
(.flush oos)
(def serialized-data (baos.toByteArray))
এখানে, একটি সাধারণ স্ট্রিং "Hello, Clojure!"
বাইনারি ফরম্যাটে সিরিয়ালাইজ করা হয়েছে।
Serialization এবং Deserialization হল ডেটা রূপান্তর ও স্থানান্তর পদ্ধতি, যা ডেটাকে সেভ বা ট্রান্সফার করতে সাহায্য করে। Clojure-এ বিভিন্ন ধরনের সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রযুক্তি রয়েছে, যেমন:
ফরম্যাট | সিরিয়ালাইজেশন ফাংশন | ডেসিরিয়ালাইজেশন ফাংশন |
---|---|---|
EDN | pr-str | clojure.edn/read-string |
JSON | cheshire/generate-string | cheshire/parse-string |
Java | ObjectOutputStream.writeObject | ObjectInputStream.readObject |
এগুলি Clojure ডেটা কাঠামোকে বিভিন্ন ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয় এবং ক্লোজার প্রোগ্রামিংয়ে ডেটা ট্রান্সফার ও স্টোরেজের জন্য অপরিহার্য টুল।
common.read_more