অ্যাডোব কীভাবে ব্যবহারকারীদের তার আইকনিক ফটোশপ অ্যাপের ওয়েব সংস্করণে সবচেয়ে বড় ফাইলগুলিকে সম্পাদনা করতে দেয় তা জানুন।
ভূমিকা
(এই নিবন্ধটি একটি ভিডিও আকারে উপলব্ধ।)
2021 সালে, Adobe, Chrome ইঞ্জিনিয়ারিংয়ের সাথে, ওয়েবে ফটোশপের একটি সংস্করণ নিয়ে আসে । সফ্টওয়্যারটি SIMD , মূল প্রাইভেট ফাইল সিস্টেমে উচ্চ কার্যসম্পাদন সঞ্চয়স্থান, ক্যানভাসের জন্য P3 রঙের স্থান এবং Lit সহ ওয়েব উপাদানগুলির মতো বৈশিষ্ট্যগুলির সাথে WebAssembly-এর উদ্ভাবনী ব্যবহার করে। এই নিবন্ধে, আমরা ফোকাস করতে চাই কিভাবে Adobe Photoshop ইঞ্জিনিয়ারিং মেমরিতে ফিট করা যায় তার চেয়ে বড় ফাইলগুলির সাথে কাজ করার সমাধান করেছে৷ এবং, WebAssembly এর ক্ষেত্রে, ফটোশপ কিভাবে wasm32 এর 32-বিট ঠিকানা স্থানের চেয়ে বড় ফাইলগুলির সাথে কাজ করে।
সমস্যাটি
সম্পাদনার জন্য একটি ফাইল খোলার জন্য প্রচুর পরিমাণে মেমরির প্রয়োজন, দেখার জন্য একটি ফাইল খোলার চেয়ে উল্লেখযোগ্যভাবে বেশি। সফ্টওয়্যার দ্বারা অফার করা অনেক বৈশিষ্ট্য, এটির জন্য ব্যবহৃত ডিজিটাল ডিজাইন এবং সম্পাদনার ধরন এবং ব্যবহারকারীর ডিভাইসের ক্ষমতার কারণে ফটোশপে সম্পাদিত ফাইলগুলির জন্য প্রায়শই ব্যবহারকারীর ডিভাইসে উপলব্ধ থেকে বেশি মেমরির প্রয়োজন হয়।
ফটোশপ ফাইল ফরম্যাট ক্ষতিহীন কম্প্রেশন সহ ডেটা সঞ্চয় করে। যখন একটি ফাইল বা নথি পড়া হয়, তখন আরও দক্ষ প্রক্রিয়াকরণের জন্য সমস্ত চিত্র ডেটা ডিকম্প্রেস করা হয়। ফলস্বরূপ, প্রয়োজনীয় মেমরির পরিমাণ একটি নথি ডিস্কে বা ক্লাউড স্টোরেজে যে পরিমাণ স্থান ব্যবহার করে তার চেয়ে কয়েকগুণ বেশি হতে পারে।
ফটোশপ একটি খুব বড় পূর্বাবস্থার ইতিহাস সমর্থন করে। ফটোশপে অনেক অপারেশনকে আমরা ধ্বংসাত্মক অপারেশন বলি। অর্থাৎ, ব্রাশ দিয়ে পেইন্টিংয়ের মতো একটি সম্পাদনা করার ফলে নতুন পিক্সেল ডেটা আসবে যা আসল পিক্সেল ডেটার মতোই বড় হতে পারে। একটি দীর্ঘ সম্পাদনা সেশনে এই সম্পাদনাগুলি করা হলে প্রচুর পরিমাণে পিক্সেল ডেটা পাওয়া যায় যা পূর্বাবস্থায় ক্রিয়াকলাপকে সমর্থন করার জন্য চারপাশে রাখা আবশ্যক৷ এইভাবে, ইতিহাস কয়েকশো মেগাবাইট বা অনেক গিগাবাইট ডেটাতে বৃদ্ধি পেতে পারে।
ডিভাইস এবং প্ল্যাটফর্ম, সেগুলি ডেস্কটপ মেশিন, মোবাইল ডিভাইস বা ব্রাউজার, সবই মেমরি পরিচালনা করে। কিছু তারা অ্যাপ্লিকেশনের জন্য উপলব্ধ কত মেমরি অন্যদের তুলনায় আরো উদার. ডিভাইস থেকে ডিভাইসে মেমরির পরিমাণও পরিবর্তিত হয়, আপনি জানেন যখন আপনি একটি নতুন কম্পিউটার বা ডিভাইস অর্ডার করেন এবং কাঙ্খিত র্যান্ডম-অ্যাক্সেস মেমরি (RAM) এর পরিমাণ নির্দিষ্ট করেন। এই প্ল্যাটফর্মগুলির মধ্যে অনেকগুলি ভার্চুয়াল মেমরিকেও সমর্থন করে, যা একটি অ্যাপ্লিকেশনকে শারীরিকভাবে উপলব্ধের চেয়ে বেশি মেমরি ব্যবহার করতে দেয়৷ এই সমর্থন অপারেটিং সিস্টেম এবং রানটাইম দ্বারা পরিবর্তিত হয়, যেমন WebAssembly এর ক্ষেত্রে, অ্যাপ্লিকেশন দ্বারা সহজেই অ্যাক্সেসযোগ্য বা ব্যবহারযোগ্য নাও হতে পারে। সর্বোপরি, আধুনিক ভার্চুয়াল সিস্টেমগুলির উচ্চ সীমা রয়েছে যা ফটোশপের প্রয়োজনীয়তাগুলি সহজেই অতিক্রম করে।
আদর্শভাবে, অ্যাপ্লিকেশনগুলি যতটা মেমরি ব্যবহার করবে ততটা তাদের প্রয়োজন। এটি সাধারণত তাদের ব্যবহারকারীদের সেরা পারফরম্যান্স প্রদান করতে দেয়। যাইহোক, যদি তারা অত্যধিক মেমরি ব্যবহার করে, তাহলে রানটাইম প্ল্যাটফর্মের দ্বারা তাদের শাস্তি দেওয়া হতে পারে বা মেমরি ফুরিয়ে যেতে পারে, ফলে ব্যর্থতার কারণ হতে পারে।
একটি ঐতিহাসিক নোট হিসাবে, ফটোশপের মূল সমস্যাটি সমাধান করার জন্য প্রয়োজন ছিল ম্যাকওএসের প্রাথমিক সংস্করণে প্রিন্ট রেজোলিউশন ফাইল সম্পাদনা করা, OS এবং সমস্ত অ্যাপ্লিকেশনের জন্য কম 1 MB। CMYK-তে একটি 300 dpi পূর্ণ পৃষ্ঠার চিত্র প্রায় 32 MB আনকম্প্রেসড।
সমাধান
অ্যাপের উপলব্ধ RAM-এর পরিমাণ অতিক্রম করার সমস্যা সমাধানের জন্য, ফটোশপ একটি সফ্টওয়্যার ভার্চুয়াল মেমরি সিস্টেম (VM) প্রয়োগ করেছে। ফটোশপ তার ভিএম ব্যবহার করে ডকুমেন্ট ডেটা, বিশেষ করে ইমেজ ডেটা, সমস্ত পূর্বাবস্থার ইতিহাস এবং অবস্থা, সেইসাথে বর্তমান কমান্ডের জন্য কার্যকরী স্টোরেজ পরিচালনা করতে। এটি ব্রাশের বিবরণের মতো ডেটার বড় ব্লক ক্যাশ করার জন্যও ব্যবহৃত হয় যাতে সেগুলিকে শুধুমাত্র একবার ডিস্ক থেকে সিরিয়ালাইজ করা দরকার।
VM দ্বারা পরিচালিত দিকগুলির একটির উদাহরণ হিসাবে, চিত্রের ডেটা একটি মিপম্যাপ উপস্থাপনা ব্যবহার করে সংরক্ষণ করা হয়, যা টাইলের একটি পিরামিডাল সেট, যা নিম্ন থেকে উচ্চ রেজোলিউশনের পরিসরে চিত্র ডেটা সরবরাহ করে। এটি ফটোশপকে দ্রুত প্রতিক্রিয়ার জন্য উপযুক্ত রেজোলিউশন ডেটাতে কাজ করার অনুমতি দেয় যখন জুম করা হয় বা একটি প্রিভিউ দেখা যায়, বনাম জুম আউট।
অ্যাপ্লিকেশন আরম্ভ করার সময়, ফটোশপ নির্ধারণ করে কতটা RAM উপলব্ধ। এটি ভিএম-এ ডেটা সংরক্ষণের জন্য একটি অংশ আলাদা করে রাখে। অবশিষ্ট RAM স্ট্যান্ডার্ড C++ রানটাইম লাইব্রেরির মাধ্যমে অন্যান্য অ্যাপ্লিকেশনের প্রয়োজনের জন্য উপলব্ধ। VM মেমরি পৃষ্ঠাগুলিতে বিভক্ত হয়। প্রতিটি পৃষ্ঠা সাধারণত ডিভাইসের জন্য হার্ডওয়্যার পৃষ্ঠার আকারের একাধিক। ইমেজ ডেটার জন্য ব্যবহার করা হলে, মেমরিকে টাইলস হিসাবে উল্লেখ করা হয়। একটি টাইল হল জ্যামিতি সীমা সহ একটি একক স্তরের পিক্সেলের একটি বর্গক্ষেত্র। একটি টাইল এক বা একাধিক পৃষ্ঠা গ্রহণ করে।
VM পৃষ্ঠাগুলির জন্য ডিস্ক-ভিত্তিক ব্যাকিং প্রদান করতে ফটোশপ এক বা একাধিক স্ক্র্যাচ ফাইল তৈরি করে। এই স্ক্র্যাচ ফাইলগুলি অরিজিন প্রাইভেট ফাইল সিস্টেমে সংরক্ষণ করা হয়। স্ক্রিনশটটি একটি চিত্র সম্পাদনা সেশনের সময় এই ধরনের একটি স্ক্র্যাচ ফাইল (হলুদে হাইলাইট করা) এবং অন্যান্য ফাইলগুলির একটি অনুকরণীয় ফাইল শ্রেণিবিন্যাস দেখায়। প্রতিটি স্ক্র্যাচ ফাইলে অনেকগুলি VM পৃষ্ঠা থাকতে পারে। যখন VM-এর আরও ব্যাকিংয়ের প্রয়োজন হয়, তখন এটি অতিরিক্ত স্ক্র্যাচ ফাইল তৈরি করে। পৃষ্ঠাগুলি খালি হওয়ার সাথে সাথে একটি স্ক্র্যাচ ফাইলে তাদের স্থানটি নতুন পৃষ্ঠাগুলির জন্য পুনরায় ব্যবহার করা যেতে পারে।
ইমেজ ডেটা প্রক্রিয়া করার সময়, ফটোশপ পিক্সেল গণনা সম্পাদন করে টাইলসের উপর পুনরাবৃত্তি করে। প্রতিটি গণনা একাধিক টাইল উল্লেখ করতে পারে। বর্তমান পুনরাবৃত্তির জন্য উৎস এবং গন্তব্য টাইলগুলি মেমরিতে রয়েছে তা নিশ্চিত করার জন্য VM দায়ী, প্রয়োজন অনুসারে স্ক্র্যাচ ফাইল থেকে সেগুলি লোড করে। একই সময়ে, এটি মেমরিতে জায়গা তৈরি করতে স্ক্র্যাচ ফাইলগুলিতে পৃষ্ঠাগুলি ফ্লাশ করতে পারে।
উপসংহার
যদিও VM-এর সুনির্দিষ্ট বাস্তবায়নের বিবরণ এই নথির সুযোগের বাইরে চলে যাবে (এবং এটি Adobe-এর মালিকানাধীন), সমাধানের উচ্চ-স্তরের বিবরণ সহ, আমরা আপনাকে এমন একটি অবস্থানে রেখেছি যেখানে আপনি বুঝতে পারবেন ফটোশপ কীভাবে করতে পারে। বড় ফাইলের সাথে ডিল করুন। অরিজিন প্রাইভেট ফাইল সিস্টেম যার উচ্চ পারফরম্যান্স সহ ফাইলগুলিতে পড়ার এবং লেখার অ্যাক্সেস রয়েছে এটি সমাধানের একটি মূল উপাদান।
স্বীকৃতি
এই ব্লগ পোস্টটি অলিভার আন্টার একার এবং রাচেল অ্যান্ড্রু দ্বারা পর্যালোচনা করা হয়েছে। ফটোশপ ভিএম-এ তার চমৎকার ডকুমেন্টেশনের জন্য রাসেল উইলিয়ামসকে বিশেষ ধন্যবাদ।