Polyfill (programming)
সফ্টওয়্যার বিকাশে, একটি পলিফিল হল কোড যা উন্নয়ন পরিবেশের এমন একটি বৈশিষ্ট্য প্রয়োগ করে যা বৈশিষ্ট্যটিকে স্থানীয়ভাবে সমর্থন করে না। প্রায়শই, এটি একটি জাভাস্ক্রিপ্ট লাইব্রেরিকে বোঝায় যা একটি এইচটিএমএল5 বা সিএসএস ওয়েব স্ট্যান্ডার্ড প্রয়োগ করে, হয় পুরানো ব্রাউজারে একটি প্রতিষ্ঠিত মান (কিছু ব্রাউজার দ্বারা সমর্থিত), অথবা বিদ্যমান ব্রাউজারে একটি প্রস্তাবিত মান (কোনও ব্রাউজার দ্বারা সমর্থিত নয়)। পলিফিল পিএইচপি এবং পাইথনেও ব্যবহৃত হয়। আনুষ্ঠানিকভাবে, "একটি পলিফিল একটি ব্রাউজার এপিআই-এর জন্য একটি সিম"। পলিফিলগুলি ওয়েব ডেভেলপারদের কোনও ব্রাউজার দ্বারা সমর্থিত হোক বা না হোক, এবং সাধারণত ন্যূনতম ওভারহেড সহ একটি এপিআই ব্যবহার করার অনুমতি দেয়। সাধারণত তারা প্রথমে কোনও ব্রাউজার কোনও এপিআই সমর্থন করে কিনা তা পরীক্ষা করে এবং উপলব্ধ থাকলে এটি ব্যবহার করে, অন্যথায় তাদের নিজস্ব বাস্তবায়ন ব্যবহার করে। পলিফিলগুলি নিজেরাই অন্যান্য, আরও সমর্থিত বৈশিষ্ট্যগুলি ব্যবহার করে এবং এইভাবে বিভিন্ন ব্রাউজারের জন্য বিভিন্ন পলিফিলের প্রয়োজন হতে পারে। শব্দটি একটি ক্রিয়া হিসাবেও ব্যবহৃত হয়ঃ পলিফিলিং একটি বৈশিষ্ট্যের জন্য একটি পলিফিল প্রদান করে। সংজ্ঞা এই শব্দটি রেমি শার্প দ্বারা উদ্ভাবিত একটি নতুন শব্দ, যার অর্থ "জাভাস্ক্রিপ্ট (বা ফ্ল্যাশ বা যাই হোক না কেন) ব্যবহার করে একটি এপিআই প্রতিলিপি তৈরি করুন যদি ব্রাউজারটিতে এটি স্থানীয়ভাবে না থাকে" 2009 সালে এইচটিএমএল5-এর সহ-রচনা করার সময়। আনুষ্ঠানিকভাবে, "একটি শিম হল এমন একটি গ্রন্থাগার যা শুধুমাত্র সেই পরিবেশের মাধ্যম ব্যবহার করে একটি পুরানো পরিবেশে একটি নতুন এপিআই নিয়ে আসে।" পলিফিলগুলি ঠিক এই সংজ্ঞার সাথে মানানসই; শিম শব্দটি প্রাথমিক পলিফিলগুলির জন্যও ব্যবহৃত হত। যাইহোক, শার্প শিম অ-স্বচ্ছ এপিআই এবং ওয়ার্কারউন্ডকে বোঝায়, যেমন বিন্যাসের জন্য স্পেসার জিআইএফ, যা কখনও কখনও shim.gif নামে পরিচিত, এবং প্রগতিশীল বর্ধন এবং সুন্দর অবক্ষয়ের মতো অনুরূপ শব্দগুলি উপযুক্ত ছিল না, তাই তিনি একটি নতুন শব্দ উদ্ভাবন করেছিলেন। শব্দটি বহুমুখী ফিলিং পেস্ট ব্র্যান্ড পলিফিলার উপর ভিত্তি করে তৈরি, একটি পেস্ট যা দেয়ালের ফাটল এবং গর্তগুলি ঢেকে রাখতে ব্যবহৃত হয় এবং এর অর্থ "অনেক (পলি-) উপায়ে গর্তগুলি (কার্যকারিতাতে) পূরণ করুন"। শব্দটি তখন থেকে জনপ্রিয়তা অর্জন করেছে, বিশেষ করে পল আইরিশ এবং মডার্নিজার ডকুমেন্টেশনে এর ব্যবহারের কারণে। শার্প যে পার্থক্যটি করে তা হলঃ এই পার্থক্যটি অন্য লেখকদের দ্বারা আঁকা হয় না। কখনও কখনও শিম, পলিফিল এবং ফলব্যাকের মধ্যে অন্যান্য বিভিন্ন পার্থক্য আঁকা হয়, তবে সাধারণত কোনও স্বীকৃত পার্থক্য নেইঃ বেশিরভাগ পলিফিলকে শিমের একটি রূপ হিসাবে বিবেচনা করে। পলিফিলার শব্দটিও মাঝে মাঝে পাওয়া যায়। উদাহরণস্বরূপ কোর-জেএস কোর-জেএস হল সবচেয়ে জনপ্রিয় জাভাস্ক্রিপ্ট স্ট্যান্ডার্ড লাইব্রেরি পলিফিলগুলির মধ্যে একটি। ইসিএমএস্ক্রিপ্টের জন্য স্ট্যান্ডার্ডের সর্বশেষ সংস্করণ পর্যন্ত পলিফিল অন্তর্ভুক্ত রয়েছেঃ প্রতিশ্রুতি, প্রতীক, সংগ্রহ, পুনরাবৃত্তিকারী, টাইপ করা অ্যারে, অন্যান্য অনেক বৈশিষ্ট্য, ইসিএমএস্ক্রিপ্ট প্রস্তাব, কিছু ক্রস-প্ল্যাটফর্ম হোয়াটডব্লিউজি/ডব্লিউ3সি বৈশিষ্ট্য এবং ইউআরএল-এর মতো প্রস্তাব। আপনি শুধুমাত্র প্রয়োজনীয় বৈশিষ্ট্যগুলি লোড করতে পারেন বা বিশ্বব্যাপী নামস্থান দূষণ ছাড়াই এটি ব্যবহার করতে পারেন। এটি ব্যাবেলের সাথে একীভূত করা যেতে পারে, যা এটিকে স্বয়ংক্রিয়ভাবে আপনার কোডে প্রয়োজনীয় কোর-জেএস মডিউলগুলি ইনজেক্ট করার অনুমতি দেয়। এইচ. টি. এম. এল5 শিব 9-এর আগের আই. ই সংস্করণগুলিতে, অজানা এইচ. টি. এম. এল উপাদানগুলিকে খালি উপাদান হিসাবে বিশ্লেষণ করা হবে, যা পৃষ্ঠার নেস্টিং কাঠামোকে ভেঙে দেবে এবং সেই উপাদানগুলিকে সি. এস. এস ব্যবহার করে স্টাইল করা অসম্ভব করে তুলবে। সর্বাধিক ব্যবহৃত পলিফিলগুলির মধ্যে একটি, এইচটিএমএল5শিভ, এই বাগটি নিয়ে কাজ করার জন্য আইই-এর আরেকটি কৌশলকে কাজে লাগায়ঃ প্রতিটি নতুন এইচটিএমএল5 উপাদানের জন্য document.createElement ("ট্যাগনাম") কল করা, যার ফলে আইই তাদের সঠিকভাবে বিশ্লেষণ করে। এটি সেই এইচ. টি. এম. এল5 উপাদানগুলির জন্য মৌলিক ডিফল্ট স্টাইলিংও অন্তর্ভুক্ত করে। - প্রিফিক্স-মুক্ত যদিও বেশিরভাগ পলিফিল পুরানো ব্রাউজারগুলিকে লক্ষ্য করে, তবে কিছু আধুনিক ব্রাউজারকে আরও কিছুটা এগিয়ে নিয়ে যাওয়ার জন্য বিদ্যমান। লিয়া ভেরুর-প্রিফিক্স-মুক্ত পলিফিল এমন একটি পলিফিল, যা বর্তমান ব্রাউজারগুলিকে বিকাশকারীকে সমস্ত বিক্রেতার প্রিফিক্স লেখার পরিবর্তে বেশ কয়েকটি সিএসএস 3 বৈশিষ্ট্যের অনির্ধারিত সংস্করণগুলি সনাক্ত করতে দেয়। এটি পৃষ্ঠার স্টাইলশিটগুলি পড়ে এবং বর্তমান ব্রাউজার দ্বারা স্বীকৃত তাদের পূর্বনির্ধারিত প্রতিরূপগুলির সাথে যে কোনও অনির্ধারিত বৈশিষ্ট্যগুলিকে প্রতিস্থাপন করে। সিলেক্টিভিজার কিথ ক্লার্কের সিলেক্টিভিজার একটি জনপ্রিয় পলিফিল যা অনেক সিএসএস 3 নির্বাচককে আইই 8 এবং তার নিচে কাজ করতে বাধ্য করে। এটি বেশ কয়েকটি পরিচিত সিএসএস3 নির্বাচকের সন্ধানে পৃষ্ঠার স্টাইলশিটগুলি পড়ে, তারপরে সেই নির্বাচকদের সাথে মিলে যাওয়া উপাদানগুলির জন্য নথিটি অনুসন্ধান করতে একটি জাভাস্ক্রিপ্ট নির্বাচক গ্রন্থাগার ব্যবহার করে, শৈলীগুলি সরাসরি সেই উপাদানগুলিতে প্রয়োগ করে। এটি জেকুয়েরির মতো বেশ কয়েকটি জাভাস্ক্রিপ্ট নির্বাচক গ্রন্থাগারকে সমর্থন করে। ফ্লেক্সি সম্ভবত সিএসএস3-এর সবচেয়ে প্রত্যাশিত বৈশিষ্ট্যগুলির মধ্যে একটি, ফ্লেক্সিবল বক্স লেআউট (অর্থাৎ। ফ্লেক্সবক্স) ইন্টারফেস উপাদানগুলি স্থাপনের জন্য একটি অত্যন্ত শক্তিশালী সরঞ্জাম হওয়ার প্রতিশ্রুতি দেয়। ওয়েবকিট এবং মোজিলা ইঞ্জিনগুলি বছরের পর বছর ধরে একটি প্রাথমিক খসড়া বাক্যবিন্যাসকে সমর্থন করে আসছে। ফ্লেক্সি আইই এবং অপেরায় একই বাক্যবিন্যাসের জন্য সমর্থন প্রয়োগ করে। যাইহোক, খসড়া বিশেষণটি একটি নতুন (এবং অনেক বেশি শক্তিশালী) বাক্যবিন্যাসে কঠোর সংশোধন করেছে, যা এখনও ফ্লেক্সি দ্বারা সমর্থিত নয়। ফ্লেক্সি এখনও পুরানো বাক্যবিন্যাসের সাথে ব্যবহার করা যেতে পারে, তবে বিকাশকারীকে অবশ্যই নিশ্চিত করতে হবে যে তারা ভবিষ্যতের ব্রাউজারগুলির জন্যও নতুন বাক্যবিন্যাস অন্তর্ভুক্ত করেছে। সিএসএস3 পিআইই পিআইই ("প্রগ্রেসিভ ইন্টারনেট এক্সপ্লোরার") আইই-তে কিছু জনপ্রিয় অনুপস্থিত সিএসএস3 বাক্স সজ্জা বৈশিষ্ট্য প্রয়োগ করে, যার মধ্যে রয়েছে আইই 8 এবং তার নীচের জন্য বর্ডার-ব্যাসার্ধ এবং বক্স-শ্যাডো এবং আইই 9 এবং তার নীচের জন্য রৈখিক-গ্রেডিয়েন্ট ব্যাকগ্রাউন্ড। এইচটিসি আচরণ (একটি মালিকানাধীন আইই বৈশিষ্ট্য) হিসাবে আহ্বান করা, এটি নির্দিষ্ট উপাদানগুলিতে অসমর্থিত সিএসএস 3 বৈশিষ্ট্যগুলি সন্ধান করে এবং আইই 6-8-এর জন্য ভিএমএল এবং আইই 9-এর জন্য এসভিজি ব্যবহার করে সেই বৈশিষ্ট্যগুলি রেন্ডার করে। এর রেন্ডারিং বেশিরভাগ ক্ষেত্রে নেটিভ ব্রাউজার বাস্তবায়নের থেকে আলাদা করা যায় না এবং এটি গতিশীল ডিওএম পরিবর্তনকে ভালভাবে পরিচালনা করে। জে. এস. ও. এন 2 ডগলাস ক্রকফোর্ড মূলত তাঁর (তখনকার আসন্ন) জে. এস. ও. এন ডেটা ফরম্যাট পড়ার এবং লেখার জন্য একটি এ. পি. আই হিসাবে <আই. ডি1> লিখেছিলেন। এটি এত ব্যাপকভাবে ব্যবহৃত হয় যে ব্রাউজার বিক্রেতারা এর এপিআই স্থানীয়ভাবে প্রয়োগ করার সিদ্ধান্ত নেয় এবং এটিকে একটি ডি ফ্যাক্টো স্ট্যান্ডার্ডে পরিণত করে; যেহেতু json2.js এখন পুরানো ব্রাউজারে নতুন ব্রাউজারের স্থানীয় বৈশিষ্ট্যগুলি প্রয়োগ করে, এটি একটি লাইব্রেরির পরিবর্তে একটি পলিফিল হয়ে উঠেছে। ই. এস. 5-শিম ই. সি. এম. এ. স্ক্রিপ্ট 5ম সংস্করণ ("ই. এস. 5") কিছু দরকারী নতুন স্ক্রিপ্টিং বৈশিষ্ট্য নিয়ে আসে এবং যেহেতু এগুলি পুরানো জাভাস্ক্রিপ্ট ইঞ্জিনগুলির সাথে সিনট্যাক্টিকভাবে সামঞ্জস্যপূর্ণ তাই এগুলি বেশিরভাগ ক্ষেত্রে অন্তর্নির্মিত জে. এস অবজেক্টে প্যাচিং পদ্ধতির মাধ্যমে পলিফিল করা যেতে পারে। এই এস5-সিম পলিফিল এটিকে দুটি অংশে বিভক্ত করেঃ es5-shim.js-এ সেই পদ্ধতিগুলি রয়েছে যা সম্পূর্ণরূপে পলিফিল করা যেতে পারে এবং es5-sham.js-এ অন্যান্য পদ্ধতির আংশিক বাস্তবায়ন রয়েছে যা সঠিকভাবে কাজ করার জন্য অন্তর্নিহিত ইঞ্জিনের উপর খুব বেশি নির্ভর করে। ফ্ল্যাশক্যানভাস একটি অ্যাডোবি ফ্ল্যাশ প্লাগ-ইন ব্যবহার করে এইচটিএমএল5 ক্যানভাস এপিআই-এর একটি বাস্তবায়ন। একটি বিরল বাণিজ্যিক পলিফিল, এটি একটি প্রদত্ত সংস্করণের পাশাপাশি একটি বিনামূল্যে সংস্করণে আসে, যার ছায়ার মতো কয়েকটি উন্নত বৈশিষ্ট্যের অভাব রয়েছে। ফ্ল্যাশ বা সিলভারলাইট প্লাগ-ইন ব্যবহার করে পুরানো ব্রাউজারগুলিতে এইচটিএমএল5 মিডিয়া এলিমেন্ট এপিআই সহ <ভিডিও> এবং <অডিও> উপাদানগুলির জন্য জন ডায়ার-এর MediaElement.js পলিফিল সমর্থন করে। এটি সেই উপাদানগুলির জন্য একটি ঐচ্ছিক মিডিয়া প্লেয়ার ইউআই প্রদান করে, যা সমস্ত ব্রাউজার জুড়ে সামঞ্জস্যপূর্ণ। মোজিলা দ্বারা প্রস্তাবিত ব্রাউজারআইডি প্রমাণীকরণ প্রোটোকল, আকর্ষণ অর্জন করতে ব্যর্থ হয়েছে। ওয়েবশিম্স লিব আলেকজান্ডার ফারকাস-এর ওয়েবশিম্স লিব অন্যান্য অনেক পলিফিলকে একটি একক প্যাকেজে একত্রিত করে এবং শর্তসাপেক্ষে শুধুমাত্র পরিদর্শনকারী ব্রাউজারের প্রয়োজনীয়তাগুলি লোড করে। Hyphenopoly.js Hyphenopoly.js স্বয়ংক্রিয় হাইফেনেশন সক্ষম করে যদি এটি ইতিমধ্যে সংশ্লিষ্ট নথির ভাষার জন্য ব্রাউজার দ্বারা সমর্থিত না হয়। আরও দেখুন অ্যাডাপ্টার প্যাটার্ন শিম (কম্পিউটিং) র্যাপার লাইব্রেরি অ্যাডাপটিভ ওয়েব ডিজাইন ব্যাকওয়ার্ডস কম্প্যাটিবিলিটি নোটস রেফারেন্স এক্সটার্নাল লিঙ্ক কম্প্যাটিবিলিটি লেয়ার ওয়েব ব্রাউজার রেসপন্সিভ ওয়েব ডিজাইন ওয়েব ডেভেলপমেন্ট