CBOR / MessagePack কোডেক
JSON ইনপুট
হেক্স আউটপুট
প্রযুক্তিগত বিবরণ
CBOR ও MessagePack কনভার্টার কীভাবে কাজ করে
টুলটি কী করে
এই টুলটি JSON ডেটাকে CBOR (Concise Binary Object Representation) বা MessagePack বাইনারি ফরম্যাটে এনকোড করে এবং বাইনারি পে-লোডকে আবার মানুষের-পাঠযোগ্য JSON-এ ডিকোড করে। এটি ডিকোড করা স্ট্রাকচারের পাশে কাঁচা হেক্স বাইট দেখায়, ফলে সীমিত রিসোর্সের পরিবেশে ব্যবহৃত কমপ্যাক্ট বাইনারি এনকোডিং সহজে পরিদর্শন করা যায়। উভয় এনকোডিং দিকেই নেস্টেড অবজেক্ট, অ্যারে এবং স্ট্যান্ডার্ড JSON টাইপ সমর্থিত।
ডেভেলপারদের সাধারণ ব্যবহারক্ষেত্র
IoT ডেভেলপাররা ডেসিরিয়ালাইজেশন কোড না লিখেই CoAP মেসেজ বা COSE-সাইনড টোকেন থেকে CBOR পে-লোড পরিদর্শনের জন্য এই টুল ব্যবহার করেন। ব্যাকএন্ড ইঞ্জিনিয়াররা হেক্স ডাম্প পেস্ট করে এবং ডিকোড করা JSON দেখে MessagePack-এনকোডেড WebSocket ফ্রেম, Redis প্রোটোকল বাফার, বা RPC পে-লোড ডিবাগ করেন। ব্যান্ডউইথ-সীমাবদ্ধ সিস্টেমের জন্য সবচেয়ে কার্যকর ওয়্যার ফরম্যাট বেছে নিতে JSON, CBOR এবং MessagePack-এর মধ্যে পে-লোড সাইজ তুলনা করতেও এটি উপকারী।
ডেটা ফরম্যাট, টাইপ বা ভ্যারিয়েন্ট
CBOR (RFC 8949) হলো একটি সেলফ-ডিসক্রাইবিং বাইনারি ফরম্যাট, যা ছোট কোড সাইজ এবং ছোট মেসেজ সাইজের জন্য ডিজাইন করা, এবং LwM2M ও FIDO2/WebAuthn-এর মতো IoT স্ট্যান্ডার্ডে ব্যাপকভাবে গৃহীত। MessagePack হলো অনুরূপ একটি বাইনারি সিরিয়ালাইজেশন, যা স্কিমা-ফ্রি থাকা সত্ত্বেও যতটা সম্ভব কমপ্যাক্ট হওয়ার লক্ষ্য রাখে; এটি Redis, Fluentd এবং বহু RPC ফ্রেমওয়ার্কে সাধারণভাবে ব্যবহৃত। উভয় ফরম্যাটই JSON-এর চেয়ে বেশি কমপ্যাক্ট, তবে দক্ষতার বিনিময়ে মানুষের-পাঠযোগ্যতা কমে যায়।
সাধারণ ভুল ও এজ কেস
CBOR এমন ডেটা টাইপ সমর্থন করে যা JSON নেটিভভাবে উপস্থাপন করতে পারে না—যেমন বাইট স্ট্রিং, ট্যাগ এবং অনির্দিষ্ট-দৈর্ঘ্যের কনটেইনার—এগুলোকে JSON-এর মাধ্যমে রাউন্ড-ট্রিপ করলে টাইপ তথ্য হারিয়ে যাবে। MessagePack কাঁচা বাইট এবং UTF-8 স্ট্রিং আলাদা করে, যা JSON একটিমাত্র স্ট্রিং টাইপে একীভূত করে। ইন্টিজার প্রিসিশন ভিন্ন হতে পারে: উভয় ফরম্যাটই ইচ্ছামতো দৈর্ঘ্যের ইন্টিজার সমর্থন করে, কিন্তু JavaScript-এ ডিকোড করলে Number.MAX_SAFE_INTEGER-এর বাইরে প্রিসিশন হারাতে পারে।
কোডের বদলে কখন এই টুল ব্যবহার করবেন
নেটওয়ার্ক ট্র্যাফিক থেকে ক্যাপচার করা বাইনারি পে-লোড তাৎক্ষণিকভাবে পরিদর্শন, IoT ডিভাইস মেসেজ ডিবাগ, বা দ্রুত এনকোডিং সাইজ তুলনা করার জন্য এই ব্রাউজার টুল ব্যবহার করুন। প্রোডাকশনে অ্যাপ্লিকেশন কোডে সিরিয়ালাইজেশনের জন্য আপনার ভাষার উপযোগী msgpack বা cbor2 (Python), cbor-x (Node.js)-এর মতো ডেডিকেটেড লাইব্রেরি ব্যবহার করুন—এগুলো স্ট্রিমিং, স্কিমা ভ্যালিডেশন এবং সঠিক টাইপ ম্যাপিং সামলায়, যা একটি ব্রাউজার টুল দিতে পারে না।