LZH হল একটি লসলেস ডেটা কম্প্রেশন আর্কাইভ ফরম্যাট যার নামকরণ করা হয়েছে Lempel–Ziv–Huffman এর নামানুসারে, যা হল এটির ভিত্তি হিসেবে ব্যবহৃত অ্যালগরিদম। এটি প্রথম প্রকাশিত হয়েছিল ১৯৮৭ সালে Haruyasu Yoshizaki দ্বারা, যা আগের LZ77 এবং LZ78 কম্প্রেশন ফরম্যাটের উন্নত সংস্করণ হিসেবে, যা ১৯৭০ এর দশকের শেষের দিকে Abraham Lempel এবং Jacob Ziv দ্বারা উদ্ভাবিত হয়েছিল। LZH দ্রুত ডিকম্প্রেশন করার সুযোগ দিয়েও আরও দক্ষ কম্প্রেশন রেশিও প্রদান করে।
LZH তে ব্যবহৃত মূল কম্প্রেশন অ্যালগরিদম হল ডিকশনারি-ভিত্তিক, যা আগে দেখা ডেটা ব্যবহার করে ভবিষ্যতের ডেটাকে আরও সংক্ষিপ্তভাবে এনকোড করে। এনকোডার সবচেয়ে সাম্প্রতিক প্রসেস করা ডেটার একটি স্লাইডিং উইন্ডো বাফার বজায় রাখে। যখন নতুন ডেটা পাও য়া যায়, তখন এনকোডার স্লাইডিং উইন্ডোতে সবচেয়ে বড় ম্যাচিং সিকোয়েন্স খোঁজে। যদি একটি ম্যাচ পাওয়া যায়, তাহলে ডেটাটি ম্যাচিং উইন্ডো পজিশন এবং দৈর্ঘ্যের একটি রেফারেন্স হিসেবে এনকোড করা হয়, আক্ষরিক ডেটার পরিবর্তে। এই রেফারেন্সটি সাধারণত মূল কন্টেন্টের চেয়ে কম স্থান নেয়।
LZ77, যা LZH এর ভিত্তি হিসেবে ব্যবহৃত হয়, এর একটি এনকোডিং লুপ আছে যা এমন দেখায়: 1. আসন্ন ইনপুটের সাথে সবচেয়ে বড় ম্যাচের জন্য স্লাইডিং উইন্ডো সার্চ করুন 2. (অফসেট, দৈর্ঘ্য) জোড়া আউটপুট করুন যা ম্যাচটির রেফারেন্স দেয় 3. যদি কোন ম্যাচ পাওয়া না যায়, তাহলে একটি আক্ষরিক বাইট আউটপুট করুন 4. ম্যাচের দৈর্ঘ্য অনুযায়ী উইন্ডোটিকে এগিয়ে দিন
১৯৮৬ সালে, Terry Welch একটি উন্নত LZW অ্যালগরিদম প্রকাশ করেছিলেন যা LZ78 থেকে কাজ অ্যাডাপ্ট করেছিল। এটি LZ77 এর চেয়ে বেশি ঘনত্ব অর্জন করার জন্য স্ট্রিংয়ের একটি ডিকশনারিতে ইনডেক্স নম্বর ব্যবহার করেছিল। পর ের বছর, LZH প্রকাশিত হয়েছিল, যা LZ77 স্লাইডিং ডিকশনারি পদ্ধতি অন্তর্ভুক্ত করেছিল কিন্তু কম্প্রেশন রেশিও উন্নত করার জন্য একটি অতিরিক্ত ধাপ হিসেবে LZ77 সিম্বলগুলিতে Huffman কোডিং যুক্ত করেছিল।
Huffman কোডিং ঘন ঘন ব্যবহৃত সিম্বলগুলিতে ছোট বিট সিকোয়েন্স এবং বিরল সিম্বলগুলিতে লম্বা সিকোয়েন্স অ্যাসাইন করে। LZH তে, সম্ভাব্য সিম্বলগুলি হল আক্ষরিক বাইট, ব্লক-অফ-এন্ড মার্কার এবং স্লাইডিং উইন্ডো ডিকশনারিতে ম্যাচ রেফারেন্স। Huffman কোডিং মডেলটি প্রতিটি ব্লকের ডেটার জন্য অনন্যভাবে গণনা করা হয় সেই ব্লকের সিম্বল ফ্রিকোয়েন্সি ডিস্ট্রিবিউশনের ভিত্তিতে। বেশি ঘন ঘন ম্যাচ রেফারেন্সগুলিকে ছোট বিট কোড অ্যাসাইন করা হয়। এই এনট্রপি এনকোডিং ধাপটি স্লাইডিং উইন্ডোর বিপরীতে ম্যাচ করার পরে প্রয়োগ করা হয়।
ডিকম্প্রেশন ইনপুট স্ট্রিম থেকে ভেরিয়েবল-দৈর্ঘ্যের Huffman কোডগুলিকে পার্স করে, সেগুলিকে আক্ষরিক বাইট এ বং ম্যাচ রেফারেন্সে অনুবাদ করে। ডিকোড করা ডেটাতে উইন্ডো বাফারে ফিরে তাকিয়ে রেফারেন্সগুলি রিজলভ করা হয়, ম্যাচটি আউটপুটে কপি করা হয়। প্রতিটি সিম্বলের পরে উইন্ডোটি এগিয়ে দেওয়া হয়। ডিকম্প্রেশন দ্রুত, কারণ ম্যাচের জন্য কোন সার্চিংয়ের প্রয়োজন হয় না।
LZH ফাইলগুলিতে ব্লকের একটি সিরিজ থাকে, প্রতিটি স্বাধীনভাবে এই LZ77+Huffman মডেল দ্বারা কম্প্রেস করা হয়। পৃথক ব্লকগুলি র্যান্ডম অ্যাক্সেস এবং ত্রুটি পুনরুদ্ধারের অনুমতি দেয়। প্রতিটি ব্লক একটি হেডার দিয়ে শুরু হয় যা সেই ব্লকের ডেটা ডিকোড করার জন্য প্রয়োজনীয় Huffman কোডিং টেবিল স্টোর করে।
স্ট্যান্ডার্ড LZH ফরম্যাট একটি ১৩-বিট স্লাইডিং উইন্ডো সাইজ বা ৮,১৯২ বাইটের অনুমতি দেয়। উইন্ডোটি সাধারণত প্রতিটি ব্লকের শুরুতে সমস্ত শূন্য বাইটে ইনিশিয়ালাইজ করা হয়। একটি প্রিসেট ডিকশনারি ব্যবহৃত হয় না, শুধুমাত্র আগে কম্প্রেস করা ডেটা। ম্যাচ রেফারেন্সগুলি সর্বাধিক ২৫৬ বাইট দৈর্ঘ্যে সীমাবদ্ধ।
Nelson H.F. Beebe LZH কে এলোমেলোভাবে বড় স্লাইডিং উইন্ডো সাইজ সাপোর্ট করার জন্য এক্সটেন্ড করেছিলেন, তার ফরম্যাটকে LZHXa বলে ডাকতেন। উইন্ডো সাইজগুলি ২ এর ঘাতে সীমাবদ্ধ, যার মধ্যে ২^১৫ (৩২,৭৬৮) এবং ২^১৬ (৬৫,৫৩৬) বাইট সাধারণ। উইন্ডো বাড়ানো কম্প্রেশন উন্নত করে কারণ আরও হিস্ট্রি ডেটা সার্চ করা হয়, এনকোডিং ধীর হওয়া এবং আরও মেমরি ব্যবহারের মূল্যে।
LZH ডেটা ইন্টিগ্রিটি যাচাই করার জন্য চেকসাম অন্তর্ভুক্ত করে। প্রতিটি ব্লক একটি ১৬-বিট CRC কোড দিয়ে শেষ হয়। মাল্টি-ফাইল আর্কাইভ প্রতিটি সম্পূর্ণ ফাইলের জন্য একটি অতিরিক্ত CRC স্টোর করে। বেশিরভাগ ইমপ্লিমেন্টেশন পলিনোমিয়াল x^
ফাইল সংকোচন হলো কোন ডেটা ফাইলের আকার সংগ্রহ অথবা সম্প্রেষণের জন্য ক্ষুদ্র করা একটি প্রক্রিয়া। এটি বিভিন্ন এলগরিদম ব্যবহার করে ডেটা সংকোচন করে অপরিহার্যত া চিহ্নিত করে এবং অপসারণ করে যা প্রায়শই মূল তথ্যগুলি হারানো ছাড়াই ডেটার আকারকে ব্যাপক ভাবে কমিয়ে দেয়।
ফাইল সংকোচনের দুটি প্রধান ধরন রয়েছে: লসলেস এবং লসি। লসলেস সংকোচন মূল ডেটা কে সংকোচিত ডেটা থেকে সম্পূর্ণভাবে পুনর্নির্মাণ করার অবকাঠামো দেয়, যা প্রতিটি ডেটা গুরুত্বপূর্ণ হিসাবে গণনা করা হয়, যেমন টেক্সট অথবা ডাটাবেস ফাইল। সাধারণ উদাহরণ হলে জিপ এবং আরএআর ফাইল ফরম্যাট। অন্যদিকে, লসি সংকোচন অগুরুত্বপূর্ণ ডেটা মুছে ফেলে ফাইলের আকারকে আরও গুরুত্ব সহকারে হ্রাস করে, যা প্রায়শই অডিও, ভিডিও এবং চিত্র ফাইলে ব্যবহৃত হয়। জেপেগস এবং এমপিথ্রি এমন উদাহরণ যেখানে কিছু ডেটা হ্রাস সামগ্রীর আপাত্তিকর গুণমান ব্যাপকভাবে ক্ষয় করে না।
ফাইল সংকোচন অনেকগুলি উপায়ে সুবিধাজনক। এটি ডিভাইস এবং সার্ভারের উপর স্টোরেজ স্পেস সংরক্ষণ করে, যা খরচ হ্রাস করে এবং কার্যক্ষমতা বাড়ায়। এটি নেটওয়ার্কের মাধ্যমে ফাইল স্থানান্তর সময়কে ত্বরান্বিত করে, যা বিশেষ গুরুত্ব সহকারে বড় ফাইলের জন্য। আরও তাই, সংকোচিত ফাইল একটি আর্কাইভ ফাইলে একত্রিত করা যেতে পারে, যা সংগঠন এবং একাধিক ফাইলের সহজ পরিবহনে সাহায্য করে।
তবে, ফাইল সংকোচনের কিছু অনুকূলতা রয়েছে। সংকোচন এবং সংকোচন মুক্তি প্রক্রিয়া গণনায়ন সম্পদ প্রয়োজন করে, যা বিশেষ করে বড় ফাইলের জন্য সিস্টেমের কার্যক্ষমতা ধীর করতে পারে। এছাড়া, লসি সংকোচনের ক্ষেত্রে, কিছু মূল ডেটা সংকোচন সময়ে হারিয়ে যায়, এবং ফলাফলের মান সমস্ত ব্যবহারের জন্য স্বীকার্য হতে পারে না, বিশেষ করে সেই পেশাদার অ্যাপ্লিকেশন যা উচ্চ মান চাই।
ফাইল সংকোচন আজকের ডিজিটাল পৃথিবীতে একটি গুরুত্বপূর্ণ সরঞ্জাম। এটি কার্যক্ষমতা বাড়ায়, স্টোরেজ স্পেস সংরক্ষণ করে এবং ডাউনলোড এবং আপলোড সময় হ্রাস করে। তবে, এর সঙ্গে সিস্টেম কার্যক্ষমতা এবং গুণগত মান হ্রাসের জোখিম বিপরীতে এটি নিজের একটি সেট নিয়ে আসে। তাই, এটি স্পেসিফিক ডেটা প্রয়োজনীয়তার জন্য সঠিক সংকোচন পদ্ধতি চয়নের ক্ষেত্রে এই ঘটনাগুলির প্রতি সচেতন হতে প্রয়োজন।
ফাইল কম্প্রেশন হলো একটি প্রক্রিয়া যা একটি বা একাধিক ফাইলের সাইজ কমানো, সাধারণত স্টোরেজ স্পেস সংরক্ষণ বা নেটওয়ার্কের মাধ্যমে সংপ্রেষণ দ্রুততর করার জন্য।
ফাইল কম্প্রেশন ডেটায় পুনরাবৃত্তিতে চিন্হিত এবং অপসারণ এর মাধ্যমে কাজ করে। এটি অ্যালগরিদম ব্যবহার করে মূল ডেটা ক্ষুদ্র স্পেস এ এনকোড করে।
ফাইল কম্প্রেশনের দুটি প্রধান নিধিবিধিই হ্লসলস এবং লসই কম্প্রেশন। লসলেস কম্প্রেশন মূল ফাইলটি সম্পূর্ণ পুনরুদ্ধার করতে সহায়তা করে, জবাবদিহিতা লসই কম্প্রেশন ডেটা মানের কিছু হ্রাসের মূল্যায় আরও বেশি সাইজের কমানো সম্ভব।
ফাইল কম্প্রেশন সরঞ্জামের একটি জনপ্রিয় উদাহরণ হলো WinZip, যা ZIP এবং RAR সহ একাধিক কম্প্রেশন ফরম্যাট সমর্থন করে।
লসলেস কম্প্রেশনের সাথে, মান পরিবর্তন না হয়। যদিও, লসই কম্প্রেশনের সাথে, ফাইলের সাইজটি আরও উল্লেখযোগ্যভাবে হ্রাস করার জন্য কম-গুরুত্বপূর্ণ ডেটা মুছে ফেলা যেতে পারে, তার ফলে মানে নজরদার করে নেওয়া যেতে পারে।
হ্যাঁ, ডেটা অখণ্ডতার দৃষ্টিকে নিয়ে ফাইল কম্প্রেশন নিরাপদ, বিশেষ করে লসলেস কম্প্রেশনের সাথে। যাই হোক, যেমন যেকোন ফাইল, কম্প্রেস ফাইলগুলিও ম্যালওয়ার বা ভাইরাসের লক্ষ্য হতে পারে, তাই সর্বদা সুপরিচিত নিরাপত্তি সফটওয়্যার স্থাপন করা গুরুত্বপূর্ণ।
প্রায় সমস্ত ধরনের ফাইল কম্প্রেস করা যায়, যেমন টেক্সট ফাইল, চিত্র, অডিয়ো, ভিডিও, এবং সফটওয়্যার ফাইল। যাই হোক, কম্প্রেশন সাধনযোগ্য স্তর ফাইল প্রকারের মধ্যে অনেক বেশি পরিবর্তন হতে পারে।
একটি ZIP ফাইল হলো একটি ফাইল ফরম্যাট ধরন যা লসলেস কম্প্রেশন ব্যবহার করে এক বা একাধিক ফাইলের আকার হ্রাস করে। ZIP ফাইলে মাল্টিপল ফাইলগুলি মোটামুটি একটি Single ফাইলে একত্র করে, যা শেয়ার করা সহজতর করেও তোলে।
প্রযুক্তিগতভাবে, হ্যাঁ, যদিও অতিরিক্ত সাইজ হ্রাস নিম্ন বা এমনসমূহ প্রতিক্রিয়াশীল হতে পারে। ইতিমধ্যে কম্প্রেসযুক্ত ফাইলটি কম্প্রেস করা মাঝে মাঝে তার আকার বড় করে তোলে কম্প্রেশন এলগরিদম দ্বারা যুক্ত করা মেটাডেটাকে আকার বড় করতে পারে।
একটি ফাইল ডিকম্প্রেস করতে, আপনি সাধারণত একটি ডিকম্প্রেশন বা আনজিপিঙ সরঞ্জাম প্রয়োজন, যেমন WinZip বা 7-Zip. এই সরঞ্জামগুলি কম্প্রেস ফরম্যাটে থেকে মূল ফাইলগুলি বাহির করতে পারে।