CRX (Chrome এক্সটেনশন) আর্কাইভ ফরম্যাটটি গুগল ক্রোম, মাইক্রোসফট এজ এবং অন্যান্য ক্রোমিয়াম-ভিত্তিক ওয়েব ব্রাউজারের জন্য ব্রাউজার এক্সটেনশন প্যাকেজ করতে ব্যবহৃত হয়। CRX ফাইলগুলি মূলত ZIP আর্কাইভ যা এক্সটেনশনের সোর্স কোড, রিসোর্স এবং মেটাডেটা ধারণ করে। এগুলি ব্যবহারকারীদের কাছে এক্সটেনশন বিতরণ করার একটি মানকীকৃত এবং নিরাপদ উপায় প্রদান করে।
একটি CRX ফাইলে বেশ কয়েকটি মূল উপাদান থাকে। প্রথমটি হল 'manifest.json' ফাইল, যা এক্সটেনশনের কনফিগারেশন ফাইল হিসাবে কাজ করে। এটি এক্সটেনশনের নাম, সংস্করণ, বর্ণনা, অনুমতি এবং অন্যান্য সেটিংসের মতো মেটাডেটা ধারণ করে। ম্যানিফেস্টটি এক্সটেনশনের এন্ট্রি পয়েন্টগুলিও নির্দিষ্ট করে, যেমন ব্যাকগ্রাউন্ড স্ক্রিপ্ট, কন্টেন্ট স্ক্রিপ্ট এবং ব্রাউজার অ্যাকশন আইকন।
CRX আর্কাইভের আরেকটি অপরিহার্য উপাদান হল এক্সটেনশনের সোর্স কোড। এটিতে HTML, CSS, JavaScript এবং এক্সটেনশনটির কার্যকারিতার জন্য প্রয়োজনীয় অন্য যেকোনো ফাইল অন্তর্ভুক্ত থাকে। সোর্স কোডটি CRX আর্কাইভের মধ্যে একটি ডিরেক্টরি স্ট্রাকচারে সংগঠিত করা হয়, প্রতিটি ফাইল এবং ডিরেক্টরি ম্যানিফেস্টে তালিকাভুক্ত থাকে।
রিসোর্স ফাইলগুলি, যেমন ছবি, ফন্ট এবং স্থানীয়করণ ফাইলগুলিও CRX আর্কাইভে অন্তর্ভুক্ত করা হয়। এই ফাইলগুলি এক্সটেনশনের সোর্স কোড দ্বারা রেফারেন্স করা হয় এবং ব্যবহারকারীর ইন্টারফেসকে উন্নত করতে এবং অতিরিক্ত কার্যকারিতা প্রদান করতে ব্যবহৃত হয়।
CRX ফাইলগুলির সততা এবং নিরাপত্তা নিশ্চিত করার জন্য, একটি প্রাইভেট কী ব্যবহার করে এক্ সটেনশন ডেভেলপার দ্বারা এগুলি ডিজিটালি সাইন করা হয়। সংশ্লিষ্ট পাবলিক কীটি CRX আর্কাইভে নিজেই অন্তর্ভুক্ত করা হয়। যখন কোনো ব্যবহারকারী একটি CRX এক্সটেনশন ইনস্টল করে, তখন ব্রাউজারটি ডিজিটাল স্বাক্ষরটি যাচাই করে নিশ্চিত করে যে এক্সটেনশনটির সাথে ছেড়ছাড় করা হয়নি এবং এটি প্রত্যাশিত ডেভেলপারের কাছ থেকে এসেছে।
CRX ফরম্যাটটি অটো-আপডেটিং এবং কন্টেন্ট স্ক্রিপ্টের মতো ঐচ্ছিক বৈশিষ্ট্যগুলিও সমর্থন করে। অটো-আপডেটিং এক্সটেনশনগুলিকে একটি নির্দিষ্ট URL থেকে স্বয়ংক্রিয়ভাবে আপডেট ডাউনলোড এবং ইনস্টল করতে দেয়, নিশ্চিত করে যে ব্যবহারকারীদের সর্বদা সর্বশেষ সংস্করণটি রয়েছে। কন্টেন্ট স্ক্রিপ্টগুলি JavaScript ফাইল যা তাদের আচরণ বা চেহারা পরিবর্তন করার জন্য ওয়েব পেজে ইনজেক্ট করা যেতে পারে।
CRX আর্কাইভ তৈরি করতে, ডেভেলপাররা সাধারণত ব্রাউজার বিক্রেতা বা তৃতীয় পক্ষের ইউটিলিটি দ্বারা প্রদত্ত একটি প্যাকেজিং টুল ব্যবহার করে। এই টুলগুলি এক্সটেনশনের সোর্স কোড এবং রিসোর্সগুলি গ্রহণ করে, এগুলিকে একটি ZIP আর্কাইভে সংকুচিত করে এবং ডেভেলপারের প্রাইভেট কী দিয়ে আর্কাইভটি সাইন করে। ফলস্বরূপ CRX ফাইলটি তারপর ব্রাউজারের এক্সটেনশন স্টোরের মাধ্যমে বা অন্যান্য উপায়ের মাধ্যমে বিতরণ করা যেতে পারে।
যখন কোনো ব্যবহারকারী একটি CRX এক্সটেনশন ইনস্টল করে, তখন ব্রাউজারটি আর্কাইভের বিষয়বস্তুগুলি বের করে এবং ডিজিটাল স্বাক্ষরটি যাচাই করে। যদি স্বাক্ষরটি বৈধ হয়, তাহলে এক্সটেনশনটি ইনস্টল করা হয় এবং ব্যবহারের জন্য উপলব্ধ হয়। ব্রাউজারটি এক্সটেনশনে একটি অনন্য আইডিও বরাদ্দ করে, যা ব্রাউজারের মধ্যে এক্সটেনশনটিকে সনাক্ত এবং পরিচালনা করতে ব্যবহৃত হয়।
CRX এক্সটেনশনগুলি ব্রাউজার API-এর একটি বিস্তৃত পরিসরে অ্যাক্সেস রাখে, যা তাদের ওয়েব পেজের সাথে যোগাযোগ করতে, ব্রাউজারের ব্যবহারকারীর ইন্টারফেস পরিবর্তন করতে এবং বিভিন্ন কাজ সম্পাদন করতে দেয়। যাইহোক, নিরাপত্তা নিশ্চিত করতে এবং অপব্যবহার রোধ করতে, এক্সটেনশনগুলি অনুমতি এবং কন্টেন্ট সিকিউরিটি পলিসি (CSP) এর अधीन। অনুমতিগুলি সংজ্ঞায়িত করে যে কোন ক্রিয়াকলাপগুলি একটি এক্সটেনশন করতে পারে, যখন CSP সেই সোর্সগুলিকে সীমাবদ্ধ করে যেখান থেকে একটি এক্সটেনশন রিসোর্স লোড করতে পারে।
ডেভেলপাররা ব্রাউজারের জন্য থিম তৈরি করতেও CRX ফরম্যাটটি ব্যবহার করতে পারেন। থিমগুলি মূলত এক্সটেনশন যা ব্রাউজারের ভিজ্যুয়াল চেহারা পরিবর্তন করে, যেমন রঙের স্কিম, ব্যাকগ্রাউন্ড ছবি এবং ইন্টারফেস উপাদান। নিয়মিত এক্সটেনশনের মতো, থিমগুলি CRX ফাইল হিসাবে প্যাকেজ করা হয় এবং ব্যবহারকারীরা এগুলি ইনস্টল করতে পারে।
সামগ্রিকভাবে, CRX আর্কাইভ ফরম্যাট ব্রাউজার এক্সটেনশন প্যাকেজ এবং বিতরণ করার একটি সুবিধাজনক এবং নিরাপদ উপায় প্রদান করে। এর মানকীক ৃত স্ট্রাকচার এবং ডিজিটাল সাইনিং মেকানিজম নিশ্চিত করে যে এক্সটেনশনগুলি ইনস্টল এবং ব্যবহার করা নিরাপদ, যখন এর নমনীয়তা এবং ব্যাপক API সমর্থন ডেভেলপারদের শক্তিশালী এবং বৈশিষ্ট্য-সমৃদ্ধ এক্স
ফাইল কম্প্রেশন অপ্রয়োজনীয় ডেটা কমিয়ে দেয় যাতে একই তথ্য কম বিট ব্যবহার করে। আপনি কতদূর যেতে পারবেন তার উপরের সীমা তথ্য তত্ত্ব দ্বারা নিয়ন্ত্রিত হয়: ক্ষতিহীন কম্প্রেশনের জন্য, সীমা হলো উৎসের এনট্রপি (শ্যানন-এর সোর্স কোডিং থিওরেম এবং তার আসল ১৯৪৮ সালের পেপার “যোগাযোগের একটি গাণিতিক তত্ত্ব”দেখুন)। ক্ষতিযুক্ত কম্প্রেশনের জন্য, হার এবং মানের মধ্যে ট্রেড-অফ রেট-ডিসটরশন তত্ত্ব দ্বারা ক্যাপচার করা হয়।
বেশিরভাগ কম্প্রেসারের দুটি পর্যায় থাকে। প্রথমত, একটি মডেল ডেটাতে কাঠামো ভবিষ্যদ্বাণী করে বা প্রকাশ করে। দ্বিতীয়ত, একটি কোডার সেই ভবিষ্যদ্বাণীগুলিকে প্রায়-সর্বোত্তম বিট প্যাটার্নে পরিণত করে। একটি ক্লাসিক মডেলিং পরিবার হলো লেম্পেল-জিভ: LZ77 (১৯৭৭) এবং LZ78 (১৯৭৮) পুনরাবৃত্ত সাবস্ট্রিং শনাক্ত করে এবং কাঁচা বাইটের পরিবর্তে রেফারেন্স নির্গত করে। কোডিং দিকে, হাফম্যান কোডিং (আসল পেপারটি দেখুন ১৯৫২) বেশি সম্ভাব্য প্রতীকগুলির জন্য ছোট কোড বরাদ্দ করে। অ্যারিথমেটিক কোডিং এবং রেঞ্জ কোডিং হলো সূক্ষ্ম-দানাদার বিকল্প যা এনট্রপি সীমার কাছাকাছি চেপে ধরে, যেখানে আধুনিক অ্যাসিমেট্রিক নিউমেরাল সিস্টেম (ANS) দ্রুত টেবিল-চালিত বাস্তবায়নের মাধ্যমে অনুরূপ কম্প্রেশন অর্জন করে।
DEFLATE (gzip, zlib, এবং ZIP দ্বারা ব্যবহৃত) LZ77-কে হাফম্যান কোডিংয়ের সাথে একত্রিত করে। এর স্পেসিফিকেশনগুলি সর্বজনীন: DEFLATE RFC 1951, zlib র্যাপার RFC 1950, এবং gzip ফাইল ফরম্যাট RFC 1952. Gzip স্ট্রিমিংয়ের জন্য ফ্রেম করা হয়েছে এবং স্পষ্টভাবে র্যান্ডম অ্যাক্সেসের চেষ্টা করে না. PNG ছবিগুলি DEFLATE-কে তাদের একমাত্র কম্প্রেশন পদ্ধতি হিসাবে মানসম্মত করে (সর্বোচ্চ ৩২ KiB উইন্ডো সহ), PNG স্পেসিফিকেশন অনুযায়ী “কম্প্রেশন পদ্ধতি ০… ডিলেট/ইনফ্লেট… সর্বাধিক ৩২,৭৬৮ বাইট” এবং W3C/ISO PNG ২য় সংস্করণ.
Zstandard (zstd): একটি নতুন সাধারণ-উদ্দেশ্য কম্প্রেসার যা খুব দ্রুত ডিকম্প্রেশনের সাথে উচ্চ অনুপাতের জন্য ডিজাইন করা হয়েছে। ফরম্যাটটি RFC 8878 (এছাড়াও HTML মিরর) এবং রেফারেন্স স্পেসিফিকেশন GitHub-এ-এ নথিভুক্ত করা হয়েছে। Gzip-এর মতো, বেসিক ফ্রেম র্যান্ডম অ্যাক্সেসের লক্ষ্য রাখে না. zstd-এর অন্যতম সুপার পাওয়ার হলো অভিধান: আপনার কর্পাস থেকে ছোট নমুনা যা অনেক ছোট বা অনুরূপ ফাইলের উপর কম্প্রেশনকে নাটকীয়ভাবে উন্নত করে (দেখুন python-zstandard অভিধান ডক্স এবং নাইজেল টাও-এর কাজ করা উদাহরণ)। বাস্তবায়নগুলি “অসংগঠিত” এবং “সংগঠিত” উভয় অভিধানই গ্রহণ করে (আলোচনা).
Brotli: ওয়েব সামগ্রীর জন্য অপ্টিমাইজ করা (যেমন, WOFF2 ফন্ট, HTTP)। এটি একটি স্ট্যাটিক অভিধানের সাথে একটি DEFLATE-এর মতো LZ+এনট্রপি কোর মিশ্রিত করে। স্পেসিফিকেশনটি হলো RFC 7932, যা ২WBITS−১৬-এর একটি স্লাইডিং উইন্ডো নোট করে যেখানে WBITS [১০, ২৪]-এর মধ্যে (১ KiB−১৬ B থেকে ১৬ MiB−১৬ B পর্যন্ত) এবং এটি র্যান্ডম অ্যাক্সেসের চেষ্টা করে না. Brotli প্রায়শই ওয়েব টেক্সটে gzip-কে পরাজিত করে এবং দ্রুত ডিকোড করে।
ZIP কন্টেইনার: ZIP এক টি ফাইল আর্কাইভ যা বিভিন্ন কম্প্রেশন পদ্ধতি (deflate, store, zstd, ইত্যাদি) সহ এন্ট্রি সংরক্ষণ করতে পারে। ডি ফ্যাক্টো স্ট্যান্ডার্ড হলো PKWARE-এর APPNOTE (দেখুন APPNOTE পোর্টাল, একটি হোস্ট করা কপি, এবং LC ওভারভিউ ZIP ফাইল ফরম্যাট (PKWARE) / ZIP 6.3.3)।
LZ4 কাঁচা গতির লক্ষ্য রাখে পরিমিত অনুপাতের সাথে। এর প্রকল্প পৃষ্ঠা (“অত্যন্ত দ্রুত কম্প্রেশন”) এবং ফ্রেম ফরম্যাটদেখুন। এটি ইন-মেমরি ক্যাশে, টেলিমেট্রি, বা হট পাথের জন্য আদর্শ যেখানে ডিকম্প্রেশন প্রায় RAM গতির হতে হবে।
XZ / LZMA ঘনত্বে র জন্য চাপ দেয় (দুর্দান্ত অনুপাত) তুলনামূলকভাবে ধীর কম্প্রেশনের সাথে। XZ একটি কন্টেইনার; ভারী উত্তোলন সাধারণত LZMA/LZMA2 (LZ77-এর মতো মডেলিং + রেঞ্জ কোডিং) দ্বারা করা হয়। দেখুন .xz ফাইল ফরম্যাট, LZMA স্পেক (Pavlov), এবং লিনাক্স কার্নেল নোট XZ এমবেডেড-এ. XZ সাধারণত gzip-কে ছাড়িয়ে যায় এবং প্রায়শই উচ্চ-অনুপাতের আধুনিক কোডেকগুলির সাথে প্রতিযোগিতা করে, তবে ধীর এনকোড সময়ের সাথে।
bzip2 Burrows–Wheeler Transform (BWT), মুভ-টু-ফ্রন্ট, RLE, এবং হাফম্যান কোডিং প্রয়োগ করে। এটি সাধারণত gzip-এর চেয়ে ছোট কিন্তু ধীর; দেখুন অফিসিয়াল ম্যানুয়াল এবং ম্যান পেজ (লিনাক্স).
“উইন্ডো সাইজ” গুরুত্বপূর্ণ। DEFLATE রেফারেন্সগুলি কেবল ৩২ KiB পিছনে তাকাতে পারে (RFC 1951 এবং PNG-এর ৩২ KiB ক্যাপ এখানে উল্লেখ করা হয়েছে)। Brotli-এর উইন্ডো প্রায় ১ KiB থেকে ১৬ MiB পর্যন্ত বিস্তৃত (RFC 7932). Zstd স্তর দ্বারা উইন্ডো এবং অনুসন্ধানের গভীরতা টিউন করে (RFC 8878). বেসিক gzip/zstd/brotli স্ট্রিমগুলি অনুক্রমিক ডিকোডিংয়ের জন্য ডিজাইন করা হয়েছে; বেস ফরম্যাটগুলি র্যান্ডম অ্যাক্সেসের প্রতিশ্রুতি দেয় না, যদিও কন্টেইনারগুলি (যেমন, tar ইনডেক্স, চাঙ্কড ফ্রেমিং, বা ফরম্যাট-নির্দিষ্ট ইনডেক্স) এটি স্তর করতে পারে।
উপরের ফরম ্যাটগুলি ক্ষতিহীন: আপনি সঠিক বাইটগুলি পুনর্গঠন করতে পারেন। মিডিয়া কোডেকগুলি প্রায়শই ক্ষতিযুক্ত: তারা কম বিটরেট হিট করার জন্য অদৃশ্য বিবরণ বাতিল করে। ছবিতে, ক্লাসিক JPEG (DCT, কোয়ান্টাইজেশন, এনট্রপি কোডিং) ITU-T T.81 / ISO/IEC 10918-1-এ মানসম্মত। অডিওতে, MP3 (MPEG-1 লেয়ার III) এবং AAC (MPEG-2/4) পারসেপচুয়াল মডেল এবং MDCT ট্রান্সফর্মের উপর নির্ভর করে (দেখুন ISO/IEC 11172-3, ISO/IEC 13818-7, এবং একটি MDCT ওভারভিউ এখানে)। ক্ষতিযুক্ত এবং ক্ষতিহীন সহাবস্থান করতে পারে (যেমন, UI সম্পদের জন্য PNG; ছবি/ভিডিও/অডিওর জন্য ওয়েব কোডেক)।
তত্ত্ব: শ্যানন 1948 · রেট-ডিসটরশন · কোডিং: হাফম্যান 1952 · অ্যারিথমেটিক কোডিং · রেঞ্জ কোডিং · ANS. ফরম্যাট: DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 ফ্রেম · XZ ফরম্যাট. BWT স্ট্যাক: Burrows–Wheeler (1994) · bzip2 ম্যানুয়াল. মিডিয়া: JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
শেষ কথা: আপনার ডেটা এবং সীমাবদ্ধতার সাথে মেলে এমন একটি কম্প্রেসার চয়ন করুন, বাস্তব ইনপুটগুলিতে পরিমাপ করুন, এবং অভিধান এবং স্মার্ট ফ্রেমিং থেকে লাভগুলি ভুলে যাবেন না। সঠিক জুটির সাথে, আপনি পেতে পারেন ছোট ফাইল, দ্রুত স্থানান্তর, এবং আরও দ্রুত অ্যাপ — সঠিকতা বা পোর্টেবিলিটি ত্যাগ না করে।
ফাইল কম্প্রেশন হলো একটি প্রক্রিয়া যা একটি বা একাধিক ফাইলের সাইজ কমায়, সাধারণত স্টোরেজ স্পেস বাঁচাতে বা নেটওয়ার্কের মাধ্যমে দ্রুত ডেটা পাঠানোর জন্য।
ফাইল কম্প্রেশন ডেটাতে পুনরাবৃত্তি চিহ্নিত করে এবং অপ্রয়োজনীয় অংশ বাদ দিয়ে কাজ করে। এটি অ্যালগরিদম ব্যবহার করে মূল ডেটা-কে আরও ছোট আকারে এনকোড করে।
ফাইল কম্প্রেশনের দুটি প্রধান প্রকার হলো লসলেস এবং লসি কম্প্রেশন। লসলেস কম্প্রেশনে মূল ফাইলটি নিখুঁতভাবে পুনরুদ্ধার করা যায়, যেখানে লসি কম্প্রেশনে ডেটার গুণমানে কিছুটা ছাড় দিয়ে ফাইলের আকার আরও উল্লেখযোগ্যভাবে কমানো সম্ভব হয়।
ফাইল কম্প্রেশন সরঞ্জামের একটি জনপ্রিয় উদাহরণ হলো WinZip, যা ZIP এবং RAR সহ একাধিক কম্প্রেশন ফরম্যাট সমর্থন করে।
লসলেস কম্প্রেশনের ক্ষেত্রে ফাইলের মানে কোনো পরিবর্তন হয় না। তবে, লসি কম্প্রেশনে ফাইলের আকার আরও কমাতে কিছু কম-গুরুত্বপূর্ণ ডেটা বাদ দেওয়া হয়, ফলে ফাইলের মানে লক্ষণীয় পরিবর্তন হতে পারে।
হ্যাঁ, ডেটা অখণ্ডতার দিক থে কে ফাইল কম্প্রেশন নিরাপদ, বিশেষ করে লসলেস কম্প্রেশনের ক্ষেত্রে। তবে, যেকোনো ফাইলের মতোই, সংকুচিত ফাইলও ম্যালওয়্যার বা ভাইরাসের লক্ষ্য হতে পারে, তাই নির্ভরযোগ্য নিরাপত্তা সফটওয়্যার ব্যবহার করা জরুরি।
প্রায় সব ধরনের ফাইলই কম্প্রেস করা যায়, যেমন টেক্সট ফাইল, ছবি, অডিও, ভিডিও এবং সফটওয়্যার ফাইল। তবে, ফাইলের ধরন অনুযায়ী কম্প্রেশনের মাত্রা ভিন্ন হতে পারে।
ZIP ফাইল হলো একটি আর্কাইভ ফরম্যাট যা এক বা একাধিক ফাইলকে একটিমাত্র ফাইলে সংকুচিত করে রাখে। এটি ফাইল শেয়ার করা সহজ করে এবং স্টোরেজ বাঁচায়।
হ্যাঁ, técnicamente করা যায়, তবে ফাইলের আকার খুব বেশি কমবে না, এমনকি বেড ়েও যেতে পারে। কারণ, প্রতিটি কম্প্রেশন প্রক্রিয়ায় কিছু অতিরিক্ত ডেটা (মেটাডেটা) যুক্ত হয়।
একটি ফাইল ডিকম্প্রেস করার জন্য আপনার একটি ডিকম্প্রেশন বা আনজিপিং টুল প্রয়োজন হবে, যেমন WinZip বা 7-Zip। এই টুলগুলো সংকুচিত ফাইল থেকে মূল ফাইলগুলো বের করে আনতে পারে।