TOML কনফিগারেশন (.toml)
TOML স্ট্যান্ডার্ডটমস অবভিয়াস মিনিমাল ল্যাঙ্গুয়েজ (TOML) হলো একটি দ্ব্যর্থহীন, মানব-কেন্দ্রিক কনফিগারেশন ফরম্যাট যা গিটহাবের সহ-প্রতিষ্ঠাতা টম প্রেস্টন-ওয়ার্নার তৈরি করেছেন। এটি রাস (Cargo) এবং পাইথন (pyproject.toml)-এর মতো আধুনিক প্রোগ্রামিং ইকোসিস্টেমে ব্যাপকভাবে সমাদৃত।
TOML থেকে JSON কনভার্ট করুন
বিনামূল্যে ইন-ব্রাউজার TOML থেকে JSON কনভার্টার। আপনার ডিভাইসে তাত্ক্ষণিকভাবে ফাইল কনভার্ট করুন।
ইনস্পেক্ট ও মেটাডেটা
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে TOML ফাইল শনাক্ত করে:
বাইট-লেভেল হেডার সিগনেচার (ম্যাজিক বাইটস)
অপারেটিং সিস্টেম এবং ফাইল অ্যানালাইজারগুলো শুরুর বাইনারি বাইট সিকোয়েন্স পরীক্ষা করে TOML ফাইল শনাক্ত করে:
হেক্স সিগনেচার (অফসেট 0):
5B ... 5DASCII রিপ্রেজেন্টেশন: [...]
স্ট্যান্ডার্ডাইজেশন: TOML v1.0.0 Specification
প্রযুক্তিগত বৈশিষ্ট্য
| কন্টেইনার আর্কিটেকচার | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| কম্প্রেশন | Uncompressed text stream |
| বাইট এন্ডিয়াননেস | UTF-8 text stream |
| কালার স্পেস | N/A (Configuration File) |
| চ্যানেল ও কাঠামো | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| সর্বোচ্চ মাত্রা | Unbounded text length |
| স্বচ্ছতা | None |
| স্ট্রিমিং ও প্রোগ্রেসিভ | Sequential line-by-line configuration parsing |
টেকনিক্যাল তুলনা ম্যাট্রিক্স: TOML বনাম প্রতিযোগীগণ
| প্রযুক্তিগত বৈশিষ্ট্য | TOML (বর্তমান) | YAML | JSON | INI |
|---|---|---|---|---|
| দ্ব্যর্থতার ঝুঁকি | শূন্য (কঠোরভাবে দ্ব্যর্থহীন স্পেসিফিকেশন) | উচ্চ (YAML-এর 'নরওয়ে সমস্যা' বুলিয়ান বাগ) | শূন্য (কঠোর ডেটা টাইপ) | মাঝারি (কোনো আনুষ্ঠানিক স্ট্যান্ডার্ড নেই) |
| নেটিভ ডেটটাইম টাইপ | নেটিভ RFC 3339 তারিখ ও সময় সমর্থন | অন্তর্নিহিত স্ট্রিং / তারিখ পার্সিং | নেই (শুধুমাত্র স্ট্রিং) | নেই (শুধুমাত্র স্ট্রিং) |
| কমেন্ট সমর্থন | নেটিভ (# কমেন্ট) | নেটিভ (# কমেন্ট) | কোনো কমেন্ট অনুমোদিত নয় | নেটিভ (; এবং # কমেন্ট) |
| প্রধান ইকোসিস্টেম | রাস (Cargo), পাইথন (PEP 518), গো | কুবারনেটস, অ্যানসিবল, CI/CD পাইপলাইন | ওয়েব API, ব্রাউজার যোগাযোগ | লিগ্যাসি উইন্ডোজ, গিট কনফিগারেশন |
সাধারণ করাপশন মোড এবং হেক্স রিকভারি গাইড
পার্সার ত্রুটি: 'টেবিলে ডুপ্লিকেট কী' বা 'অবৈধ টেবিল হেডার' (Duplicate key in table or Invalid table header)।
মূল কারণ: নথির মধ্যে একটি বিদ্যমান কী বা টেবিল নেমস্পেস পুনরায় সংজ্ঞায়িত করার চেষ্টা করা।
পুনরুদ্ধার: File2File TOML ফরম্যাটার ব্যবহার করে TOML সিনট্যাক্স যাচাই এবং পুনর্বিন্যাস করুন।
নিরাপত্তা বিশ্লেষণ ও পার্সার অ্যাটাক ভেক্টর
TOML পার্সারগুলোকে প্রোটোটাইপ পলিউশন এবং অতিরিক্ত টেবিল অ্যারে নেস্টিংয়ের কারণে CPU নিষ্ক্রিয়তা থেকে রক্ষা করতে হবে।
পরিচিত অ্যাটাক ভেক্টর
- JavaScript TOML পার্সারে প্রোটোটাইপ পলিউশন যা Object.prototype-এ প্রপার্টি ইনজেক্ট করে।
- গভীরভাবে নেস্টেড টেবিল অ্যারে ঘোষণার মাধ্যমে ডিনায়াল অফ সার্ভিস (DoS)।
- বিশাল ইনলাইন অ্যারে পার্সিংয়ের সময় অপরিমিত মেমরি বরাদ্দ।
প্রতিরক্ষামূলক সেরা অনুশীলন:
ঐতিহাসিক উৎপত্তি ও মাইলফলক
প্রধান সুবিধাসমূহ ও গুণাবলী
- সম্পূর্ণ দ্ব্যর্থহীন: কোনো ধরনের অপ্রত্যাশিত টাইপ রূপান্তর ছাড়াই পরিচ্ছন্ন ও অনুমানযোগ্যভাবে একটি হ্যাশ টেবিলে ম্যাপ করে।
- স্ট্রিং এস্কেপিং ছাড়াই প্রথম শ্রেণির নেটিভ ডেটটাইম সমর্থন (RFC 3339 টাইমস্ট্যাম্প, তারিখ, সময়)।
- আধুনিক ভাষা টুলিংয়ের জন্য অফিসিয়াল স্ট্যান্ডার্ড কনফিগারেশন ফরম্যাট হিসেবে গৃহীত (রাস Cargo.toml, পাইথন pyproject.toml)।
কারিগরি সীমাবদ্ধতা ও অসুবিধা
- YAML-এর তুলনায় গভীরভাবে নেস্টেড বহু-স্তরের অবজেক্ট ট্রি অনেক বড় ও জটিল হতে পারে।
- টেবিলের অ্যারে সিনট্যাক্স ([[table.array]]) নতুনদের জন্য সহজে বোধগম্য নাও হতে পারে।
- উচ্চ-থ্রুপুট মেশিন-টু-মেশিন API ডেটা বিনিময়ের ক্ষেত্রে JSON-এর তুলনায় কম কম্প্যাক্ট।
আকর্ষণীয় কারিগরি তথ্য
- TOML তৈরি করেছেন টম প্রেস্টন-ওয়ার্নার, যিনি গিটহাব সহ-প্রতিষ্ঠা করেছিলেন এবং Gravatar ও SemVer (Semantic Versioning) তৈরি করেছিলেন।
- প্রতিটি রাস প্রজেক্টের 'Cargo.toml' ফাইলে TOML ফরম্যাটে সমস্ত প্যাকেজ ডিপেন্ডেন্সি এবং কম্পাইলার ফ্ল্যাগ নির্দিষ্ট করা থাকে।
- JSON-এর বিপরীতে, TOML নেটিভভাবে কমেন্ট ('#' অক্ষর ব্যবহার করে) এবং মাল্টিলাইন স্ট্রিং সমর্থন করে।
সচরাচর জিজ্ঞাসಿತ টেকনিক্যাল প্রশ্নাবলি
TOML কী কাজে ব্যবহার করা হয়?
TOML সফটওয়্যার কনফিগারেশনের জন্য ব্যবহৃত হয়, বিশেষ করে Rust-এর Cargo.toml, Python-এর pyproject.toml, Go Hugo কনফিগ এবং কন্টেইনার টুলসে।
কনফিগারেশনের জন্য YAML-এর চেয়ে TOML কেন বেশি পছন্দ করা হয়?
TOML, YAML-এর কুখ্যাত এজ-কেস পার্সিং বাগগুলো (যেমন আনকোটেড 'NO' ভুলবশত বুলিয়ান false-এ পরিণত হওয়া) এড়িয়ে চলে, পাশাপাশি কমেন্ট এবং পরিষ্কার টেবিলসহ এটি মানব-বান্ধব থাকে।
আমি কীভাবে TOML-কে JSON বা YAML-এ রূপান্তর করতে পারি?
আপনি আপনার ওয়েব ব্রাউজারে সরাসরি File2File.app ব্যবহার করে তাৎক্ষণিকভাবে TOML ফাইলগুলোকে JSON বা YAML-এ রূপান্তর করতে পারেন।
সম্পর্কিত TOML কনভার্সন পেয়ার
টিওএমএল কনফিগারেশন ফাইলগুলোকে জেএসওএন ফরম্যাটে রূপান্তর করলে মানুষের পড়ার উপযোগী প্রোপার্টি সেটিংস একটি কঠোর ডেটা অবজেক্টে পরিণত হয় যা ওয়েব অ্যাপ্লিকেশনগুলো দ্রুত পার্স করতে পারে।
জেসন কনফিগারেশন ফাইলগুলিকে টমল ফরম্যাটে রূপান্তর করলে সমস্ত কাঠামোগত কী-ভ্যালু ডেটা হায়ারার্কি সংরক্ষণ করে মানবীয় সম্পাদনা সহজ হয়।