শিম কী?


উত্তর:


92

উইকিপিডিয়া থেকে:

কম্পিউটার প্রোগ্রামিংয়ে একটি শিম একটি ছোট গ্রন্থাগার যা স্বচ্ছভাবে একটি এআইপি বাধা দেয়, পাস করা প্যারামিটারগুলি পরিবর্তন করে, নিজেই অপারেশন পরিচালনা করে বা অন্য কোথাও অপারেশনটিকে পুনর্নির্দেশ করে। শিমগুলি সাধারণত এপিআই-এর আচরণ পরিবর্তিত হয়, এর ফলে পুরানো অ্যাপ্লিকেশনগুলির জন্য সামঞ্জস্যের সমস্যা দেখা দেয় যা এখনও পুরানো কার্যকারিতার উপর নির্ভর করে। এই ক্ষেত্রে, পুরানো এপিআই এখনও নতুন কোডের উপরে একটি পাতলা সামঞ্জস্যতা স্তর দ্বারা সমর্থিত হতে পারে। শিমগুলি বিভিন্ন সফ্টওয়্যার প্ল্যাটফর্মে যেগুলি তাদের জন্য বিকাশ করা হয়েছিল তার চেয়ে বেশি প্রোগ্রাম চালাতে ব্যবহৃত হতে পারে।


82
এই উত্তরটি উইকিপিডিয়ায় প্রকৃত গুগল অনুসন্ধান করা থেকে আলাদা নয়। একটি উদাহরণ ভাল হবে।
নাচ

4
এটি লাইব্রেরিগুলিকে ইন্টারফেসিংয়ের জন্য ফেকাড ডিজাইনের প্যাটার্নের ব্যবহারের মতো মনে হচ্ছে।
blz

84

উইকিপিডিয়ায় সংজ্ঞায়িত "শিম" শব্দটি প্রযুক্তিগতভাবে "স্ট্রাকচারাল" ডিজাইনের ধরণ হিসাবে এর সংজ্ঞা অনুসারে শ্রেণিবদ্ধ করা হবে। "স্ট্রাকচারাল" নকশার ধরণগুলির অনেক ধরণের অবজেক্ট ওরিয়েন্টেড সফটওয়্যার ডিজাইন প্যাটার্নস রেফারেন্স "ডিজাইন প্যাটার্নস, পুনরায় ব্যবহারযোগ্য অবজেক্ট-ওরিয়েন্টড সফ্টওয়্যার এর উপাদানসমূহ" আরও "গ্যাং অফ ফোর" নামে পরিচিত হিসাবে বর্ণিত হয়েছে ।

"চার গ্যাং" টেক্সট প্রান্তরেখা হিসাবে, "প্রক্সি", "অ্যাডাপ্টার" এবং "ছদ্মরূপ" যা সব প্রদান "shim" টাইপ কার্যকারিতা পরিচিত অন্তত 3 সুপ্রতিষ্ঠিত নিদর্শন। বেশিরভাগ ক্ষেত্রে এটি প্রায়শই একই মূল ধারণার জন্য বিভিন্ন সংক্ষিপ্ত শব্দ ব্যবহার এবং মিস না যা মানুষের বিভ্রান্তি সৃষ্টি করে। আরও সুনির্দিষ্ট "স্ট্রাকচারাল" ডিজাইনের ধরণ "প্রক্সি" , "অ্যাডাপ্টার" এবং "ফ্যাসেড" বর্ণনা করতে "শিম" শব্দটি ব্যবহার করা অবশ্যই এই ধরণের পরিস্থিতির একটি সুস্পষ্ট উদাহরণ। "কাঠামোগত" নিদর্শনগুলির আরও নির্দিষ্ট ধরণের "প্রক্সি", "অ্যাডাপ্টার", "মুখোমুখি" এবং সম্ভবত অন্যদের জন্য একটি "শিম" কেবল একটি সাধারণ শব্দ।


5
এই উত্তরটি ইঙ্গিত দেয় যে শিম একটি ডিজাইনের প্যাটার্ন (অনেকের মধ্যে একটি), কিছু অনুরূপ ডিজাইনের ধরণগুলির নাম দেয় এবং লোকেরা কীভাবে বিভিন্ন সংক্ষিপ্ত শব্দে বিভ্রান্ত হয় সে সম্পর্কে একটি স্পর্শকাতর হয়ে যায়। তবে এটি আসলে শিম কী, কী করে, বা কীভাবে ব্যবহৃত হয় তার মূল প্রশ্নের উত্তর দেয় না।
রিচি টমাস

53

কার্টুনের মাধ্যমে সহজ ব্যাখ্যা

শিমের উদাহরণ:

আমার কুকুর র‌্যাল্ফ হ'ল এক ভাগ্যবান বাশ-টার্ড (ডাবল পাং উদ্দেশ্যযুক্ত)

সারসংক্ষেপ

দ্রষ্টব্য: সাদৃশ্যটি স্ট্রেইড। সাধারণত রাল্ফ যা চেয়েছিলেন তা হুবহু পেয়ে যাবেন - তবে কীভাবে এটি পাওয়া গেল তার মেকানিক্স এমনটি যা তিনি আশা করতে পারেন না।

শিম এমন কিছু কোড যা কোনও জিজ্ঞাসাবাদী না হয়ে ('ইন্টারসেপশন' দ্বারা) যা জিজ্ঞাসা করা হয়েছে তার যত্ন নেয়। এটি সাধারণ ধারণা। এখন আপনার শিমগুলিতে উইকিপিডিয়া এন্ট্রিটি পড়তে এবং বুঝতে সক্ষম হওয়া উচিত।


13

শব্দের উৎপত্তি হিসাবে, অ্যাপলের অভিধান উইজেট

noun
   a washer or thin strip of material used to align parts, 
   make them fit, or reduce wear.

verb ( shimmed, shimming) [ trans. ]
   wedge (something) or fill up (a space) with a shim.

ORIGIN early 18th cent.: of unknown origin

এটি ওয়েব ডিজাইনার শব্দটি কীভাবে ব্যবহার করে এটি বেশ ভাল ফিট করে বলে মনে হয়।


13

শিমগুলি ইউনিট পরীক্ষার জন্য অন্যান্য অ্যাসেম্বলিগুলি থেকে আপনার অ্যাপ্লিকেশনকে আলাদা করতে নেট .৫.৫ মাইক্রোসফ্ট জালিয়াতির ফ্রেমওয়ার্কে ব্যবহৃত হয় । শিমস কোডটিকে নির্দিষ্ট পদ্ধতিগুলিতে কলটি ডাইভার্ট করে যা আপনি আপনার পরীক্ষার অংশ হিসাবে লেখেন


12

মাইক্রোসফ্টের নিবন্ধ অনুযায়ী "শিমসকে চূড়ান্ত করে তোলা " :

এটি ইংরেজি ভাষার শিম শিমের উপর ভিত্তি করে একটি রূপক, যা একটি ইঞ্জিনিয়ারিং শব্দ যা কাঠ বা ধাতুর টুকরোটিকে বর্ণনা করার জন্য ব্যবহৃত হয় যা দুটি বস্তুর মধ্যে একত্রে আরও ভালভাবে ফিট করার জন্য makeোকানো হয়। কম্পিউটার প্রোগ্রামিংয়ে একটি শিম একটি ছোট গ্রন্থাগার যা স্বচ্ছভাবে একটি এআইপি বাধা দেয়, পরামিতিগুলির প্যারামিটারগুলি পরিবর্তন করে, নিজেই অপারেশন পরিচালনা করে বা অন্য কোথাও অপারেশনটিকে পুনঃনির্দেশ করে। শিমগুলি বিভিন্ন সফ্টওয়্যার প্ল্যাটফর্মে যেগুলি তৈরি করা হয়েছিল তার চেয়ে বেশি চলমান প্রোগ্রামগুলির জন্যও ব্যবহার করা যেতে পারে।

আমি এর অর্থ এটি বোঝাতে চাইছি যে শিম একটি কোডের কোনও লাইব্রেরির জন্য একটি জেনেরিক শব্দ যা মধ্যস্থতাকারী হিসাবে কাজ করে এবং একটি প্রোগ্রামের আচরণ বা ক্রিয়াকলাপকে আংশিক বা সম্পূর্ণ পরিবর্তন করে। একজন সত্যিকারের মধ্যবিত্তের মতো, এটি সেই প্রোগ্রামে পাস করা ডেটাগুলিকে প্রভাবিত করতে পারে বা সেই প্রোগ্রাম থেকে ফিরে আসা ডেটাগুলিকে প্রভাবিত করতে পারে।

নিবন্ধটি উদাহরণ হিসাবে উইন্ডোজ এপিআই ব্যবহার করে এবং আমি নীচের বাক্যটি প্রাসঙ্গিক বলে মনে করি:

অ্যাপ্লিকেশনটি সাধারণত অসচেতন যে অনুরোধটি উইন্ডোজ নিজেই পরিবর্তে একটি শিম ডিএলএল চলেছে, এবং উইন্ডোজ অজানা যে অনুরোধটি অ্যাপ্লিকেশন ব্যতীত অন্য কোনও উত্স থেকে আসছে (কারণ শিম ডিএলএল অ্যাপ্লিকেশন প্রক্রিয়ার অভ্যন্তরে কেবল অন্য একটি ডিএলএল) ।

এই উক্তিটি সাধারণীকরণের জন্য, "শিম স্যান্ডউইচ" "রুটি" তৈরি করে এমন দুটি প্রোগ্রাম তাদের প্রতিপক্ষের প্রোগ্রামে এবং শিমের সাথে কথা বলার মধ্যে পার্থক্য করতে সক্ষম হবে না।

শিমস ব্যবহারের কিছু উপকারিতা এবং বিধানগুলি কী কী?

আবার, নিবন্ধ থেকে:

আপনি সোর্স কোড অ্যাক্সেস ছাড়াই বা এগুলি পরিবর্তন না করেই অ্যাপ্লিকেশনগুলি ঠিক করতে পারেন। আপনি অতিরিক্ত পরিচালনার ওভারহেডের একটি ন্যূনতম পরিমাণে ব্যয় করেন ... এবং আপনি এইভাবে যুক্তিসঙ্গত সংখ্যক অ্যাপ্লিকেশন ঠিক করতে পারেন। নেতিবাচক দিকটি সমর্থন কারণ বেশিরভাগ বিক্রেতারা শিমড অ্যাপ্লিকেশনগুলি সমর্থন করে না। আপনি শিম ব্যবহার করে প্রতিটি অ্যাপ্লিকেশন ঠিক করতে পারবেন না। বেশিরভাগ লোকেরা সাধারণত অ্যাপ্লিকেশনগুলির জন্য শিমগুলি বিবেচনা করে যেখানে বিক্রেতার ব্যবসায়ের বাইরে রয়েছে, সফ্টওয়্যারটি সমর্থন প্রয়োজনের পক্ষে যথেষ্ট কৌশলগত নয় বা তারা কিছুটা সময় কিনতে চায়।

এই প্রশ্নের প্রসঙ্গে, উপরের লিঙ্কটি পড়ার পরে "প্রক্সি", "অ্যাডাপ্টার", এবং "ফ্যাসাদ" এর মতো শব্দগুলি আরও সার্থক করে তোলে (কমপক্ষে আমার কাছে)।


3

যেহেতু আমরা এখানে অনেক প্রতিক্রিয়াতে দেখতে পেলাম, একটি শিম হ'ল এক ধরণের অ্যাডাপ্টার যা এপিআই স্তরে কার্যকারিতা সরবরাহ করে যা সেই API এর অংশ ছিল না। এই থ্রেডটিতে অনেক ভাল এবং সম্পূর্ণ প্রতিক্রিয়া রয়েছে, সুতরাং আমি সংজ্ঞাটি আরও প্রসারিত করছি না।

তবে আমি মনে করি যে আমি একটি ভাল উদাহরণ যুক্ত করতে পারি, যা জাভাস্ক্রিপ্ট ইএস 5 শিম ( https://github.com/es-shims/es5-shim ):

জাভাস্ক্রিপ্ট গত কয়েক বছরে প্রচুর বিকশিত হয়েছে এবং ভাষা নির্দিষ্টকরণের অন্যান্য অনেক পরিবর্তনের মধ্যে এর মূল বিষয়গুলিতে প্রচুর নতুন পদ্ধতি যুক্ত হয়েছে।

উদাহরণস্বরূপ, ES2015 নির্দিষ্টকরণে (ওরফে ES5) পদ্ধতিটি প্রোটোটাইপটিতে findযুক্ত করা হয়েছে Array। সুতরাং আসুন আমরা এই কোডটির আগে জাভাস্ক্রিপ্ট ইঞ্জিন ব্যবহার করে আপনার কোড চালাচ্ছি (উদাহরণ: নোড ০.০২) যা এখনও এই পদ্ধতিটি দেয় না। ES5 শিম লোড করার মাধ্যমে, এই নতুন পদ্ধতিগুলি Arrayপ্রোটোটাইপের সাথে যুক্ত হবে , আপনি যদি কোনও নতুন জাভাস্ক্রিপ্টের বিশদ বিবরণে চালিত না হন তবে আপনাকে সেগুলি ব্যবহার করতে দেয়।

আপনি জিজ্ঞাসা করতে পারেন: কেউ কেন পরিবেশটিকে আরও নতুন সংস্করণে উন্নীত করার পরিবর্তে তা করবে (আসুন নোড 8 বলে দিন)?

বাস্তব পদ্ধতির অনেকগুলি দৃশ্য রয়েছে যেখানে সেই পদ্ধতির অর্থ হয়। একটি ভাল উদাহরণ:

ধরা যাক আপনার একটি পুরানো পরিবেশে চলছে এমন একটি উত্তরাধিকার ব্যবস্থা রয়েছে এবং কোনও কার্যকারিতা কার্যকর করতে / ঠিক করতে আপনাকে এই জাতীয় নতুন পদ্ধতি ব্যবহার করতে হবে। আপনার পরিবেশের আপগ্রেড এখনও প্রক্রিয়াধীন রয়েছে কারণ এখানে সামঞ্জস্যতার সমস্যা রয়েছে যার জন্য প্রচুর কোড পরিবর্তন এবং পরীক্ষার প্রয়োজন (একটি জটিল উপাদান)।

এই উদাহরণস্বরূপ, আপনি এই জাতীয় কার্যকারিতার নিজস্ব সংস্করণটি তৈরি করার চেষ্টা করতে পারেন, তবে এটি আপনার কোডটি আরও জটিল পড়া সহজতর করে তুলবে, নতুন বাগগুলি প্রবর্তন করতে পারে এবং কেবলমাত্র একটি কার্যকারিতা coverাকতে আপনাকে আরও অনেকগুলি পরীক্ষার প্রয়োজন হবে যা আপনি জানেন যে এটি হবে পরবর্তী প্রকাশে উপলব্ধ।

পরিবর্তে, আপনি এই শিমটি ব্যবহার করতে পারেন এবং এই নতুন পদ্ধতিগুলি ব্যবহার করতে পারবেন, এই ফিক্স / কার্যকারিতা আপগ্রেডের পরে সামঞ্জস্যপূর্ণ হবে এই সুযোগটি গ্রহণ করে, কারণ আপনি ইতিমধ্যে পরবর্তী স্পেসিফিকেশনে উপলব্ধ বলে পরিচিত পদ্ধতিগুলি ব্যবহার করছেন। এবং এখানে একটি বোনাস কারণ রয়েছে: যেহেতু এই পদ্ধতিগুলি পরবর্তী ভাষার স্পেসিফিকেশনের স্থানীয়, তাই আপনার নিজের সংস্করণ তৈরি করার চেষ্টা করা হলে আপনি যে কোনও বাস্তবায়ন করতে পারতেন তার চেয়ে দ্রুত চালিত হওয়ার ভাল সম্ভাবনা রয়েছে।

আর একটি আসল দৃশ্য যেখানে ব্রাউজার পর্যায়ে এ জাতীয় দৃষ্টিভঙ্গি স্বাগত। আসুন আমরা আপনাকে পুরানো ব্রাউজারটি সমর্থন করতে হবে এবং এই নতুন বৈশিষ্ট্যগুলির সুবিধা নিতে চাই say জাভাস্ক্রিপ্ট এমন একটি ভাষা যা আপনাকে এর মূল অবজেক্টগুলিতে পদ্ধতিগুলি যুক্ত / সংশোধন করার অনুমতি দেয় (অ্যারে প্রোটোটাইপের সাথে পদ্ধতি যুক্ত করার মতো), এবং এই শিম গ্রন্থাগারগুলি কেবলমাত্র যদি বর্তমান প্রয়োগের অভাব থাকে তবে এ জাতীয় পদ্ধতি যুক্ত করার জন্য যথেষ্ট স্মার্ট।

PS: 1) আপনি এই জাভাস্ক্রিপ্ট শিমগুলির সাথে সম্পর্কিত "পলিফিল" শব্দটি দেখতে পাবেন। পলিফিল হ'ল আরও বিশেষ ধরণের শিম যা বিভিন্ন ব্রাউজার স্তরের বিশদগুলিতে সামনের সামঞ্জস্যতা প্রদান করতে ব্যবহৃত হয়। যাইহোক, আমার উপরের উদাহরণটি ঠিক যেমন উদাহরণকে বোঝায়।

২) শিমগুলি এই উদাহরণে সীমাবদ্ধ নয় (ভবিষ্যতের প্রকাশে উপলব্ধ কার্যকারিতা যুক্ত করা হবে)। বিভিন্ন ব্যবহারের কেস রয়েছে যা শিম হিসাবেও বিবেচিত হবে।

৩) এই নির্দিষ্ট পলিফিলটি কীভাবে কার্যকর করা হয় সে সম্পর্কে আপনি যদি আগ্রহী হন তবে আপনি জাভাস্ক্রিপ্ট অ্যারে.ফাইন্ডগুলি খুলতে পারেন এবং পৃষ্ঠার প্রান্তে স্ক্রোল করতে পারেন যেখানে আপনি এই পদ্ধতির জন্য একটি ন্যাশনাল বাস্তবায়ন পাবেন।


0

শিম হ'ল সুরক্ষা যাচাইয়ের আরও একটি স্তর যা সমস্ত পরিষেবাগুলির জন্য প্রবাহিত সিস্টেমগুলি সুরক্ষার জন্য করা হয়। শিম সার্ভার ব্যবহারকারী শংসাপত্রগুলির বিপরীতে শিরোনাম ব্যবহারকারী শংসাপত্রগুলির সাথে প্রতিটি আগত অনুরোধকে বৈধ করে তোলে, যা অনুরোধে পাস হয় (SOAP / RESTFUL)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.