बंदर पैच

From alpha
Jump to navigation Jump to search

मंकी पैचिंग एक ऐसी तकनीक है जिसका उपयोग रन-टाइम पर कोड के एक टुकड़े के व्यवहार को गतिशील रूप से अपडेट करने के लिए किया जाता है। मंकी पैच (जिसे मंकी-पैच, मंकीपैच भी कहा जाता है) गतिशील भाषाओं (जैसे स्मॉलटॉक, जावास्क्रिप्ट, उद्देश्य सी , रूबी_(प्रोग्रामिंग_लैंग्वेज), पर्ल, पायथन_(प्रोग्रामिंग_लैंग्वेज), अपाचे_ग्रूवी, आदि के रनटाइम कोड को बढ़ाने या संशोधित करने का एक तरीका है। .) मूल स्रोत कोड को बदले बिना।

व्युत्पत्ति

ऐसा प्रतीत होता है कि मंकी पैच शब्द एक पुराने शब्द, गुरिल्ला पैच से आया है, जो रनटाइम के दौरान कोड को चुपचाप - और संभवतः ऐसे अन्य पैच के साथ असंगत रूप से बदलने के लिए संदर्भित करता है। गुरिल्ला शब्द, जो लगभग गोरिल्ला के समानार्थी है, बंदर बन गया, संभवतः पैच की ध्वनि को कम डराने वाला बनाने के लिए।[1] एक वैकल्पिक व्युत्पत्ति यह है कि इसका तात्पर्य कोड के साथ खिलवाड़ करना (इसके साथ खिलवाड़ करना) है।

नाम के सुझाव के बावजूद, मंकी पैच कभी-कभी किसी कार्यक्रम का विस्तार करने का आधिकारिक तरीका है। उदाहरण के लिए, फ़ायरफ़ॉक्स और इंटरनेट एक्सप्लोरर जैसे वेब ब्राउज़र इसे प्रोत्साहित करते थे, हालाँकि आधुनिक ब्राउज़र (फ़ायरफ़ॉक्स सहित) के पास अब एक आधिकारिक एक्सटेंशन प्रणाली है।

परिभाषाएँ

इस शब्द की परिभाषा इसका उपयोग करने वाले समुदाय के आधार पर भिन्न होती है। रूबी (प्रोग्रामिंग भाषा) में,[2] पायथन (प्रोग्रामिंग भाषा),[3] और कई अन्य गतिशील प्रोग्रामिंग भाषाओं में, मंकी पैच शब्द केवल रनटाइम पर क्लास या मॉड्यूल के गतिशील संशोधनों को संदर्भित करता है, जो मौजूदा तृतीय-पक्ष कोड को बग या फीचर के वर्कअराउंड के रूप में पैच करने के इरादे से प्रेरित होता है जो वांछित के रूप में कार्य नहीं करता है। रनटाइम पर संशोधित कक्षाओं के अन्य रूपों के उनके अलग-अलग इरादों के आधार पर अलग-अलग नाम होते हैं। उदाहरण के लिए, ज़ोप और प्लोन (सॉफ़्टवेयर) में, सुरक्षा पैच अक्सर गतिशील वर्ग संशोधन का उपयोग करके वितरित किए जाते हैं, लेकिन उन्हें हॉट फ़िक्स कहा जाता है।[citation needed]

अनुप्रयोग

मंकी पैचिंग का उपयोग किया जाता है:

  • रनटाइम पर विधि (कंप्यूटर विज्ञान) / कक्षाएं (कंप्यूटर विज्ञान) / विशेषता (कंप्यूटिंग) / सबरूटीन बदलें, उदाहरण के लिए। परीक्षण के दौरान किसी फ़ंक्शन को विधिपूर्वक स्टब आउट करना;
  • स्रोत कोड की निजी प्रति बनाए रखे बिना किसी तृतीय-पक्ष उत्पाद के व्यवहार को संशोधित/विस्तारित करें;
  • रनटाइम पर पैच के परिणाम को डिस्क भंडारण पर स्रोत कोड के बजाय मेमोरी (कंप्यूटिंग) में स्थिति पर लागू करें;
  • सुरक्षा या व्यवहार संबंधी सुधारों को वितरित करें जो मूल स्रोत कोड के साथ रहते हैं (इसका एक उदाहरण रूबी ऑन रेल्स प्लेटफॉर्म के लिए प्लगइन के रूप में फिक्स को वितरित करना होगा);

नुकसान

दुर्भावनापूर्ण, अक्षम रूप से लिखे गए, और/या खराब तरीके से प्रलेखित बंदर पैच समस्याएँ पैदा कर सकते हैं:

  • जब पैच पैच किए गए ऑब्जेक्ट (कंप्यूटर विज्ञान) के बारे में ऐसी धारणाएं बनाता है जो अब सत्य नहीं हैं, तो वे अपग्रेड समस्याएं पैदा कर सकते हैं; एक नई रिलीज़ बहुत अच्छी तरह से पैच को तोड़ सकती है। इस कारण से बंदर पैच को अक्सर सशर्त बनाया जाता है, और केवल उपयुक्त होने पर ही लागू किया जाता है।[4]
  • यदि दो मॉड्यूल एक ही विधि (कंप्यूटर विज्ञान) में बंदर पैच करने का प्रयास करते हैं, तो उनमें से एक (जो भी अंतिम चलता है) जीत जाता है और दूसरे पैच पर कोई प्रभाव नहीं पड़ता है, जब तक कि बंदर पैच को एक पैटर्न के साथ नहीं लिखा जाता है alias_method_chain.[5]
  • वे मूल स्रोत कोड और देखे गए व्यवहार के बीच एक विसंगति पैदा करते हैं जो पैच के अस्तित्व से अनजान किसी भी व्यक्ति के लिए बहुत भ्रमित करने वाला हो सकता है। उदाहरण के लिए, लिनक्स कर्नेल मालिकाना और एNVIDIA ड्राइवर जैसे अन्य तृतीय-पक्ष मॉड्यूल का पता लगाता है, जो कर्नेल संरचनाओं के साथ छेड़छाड़ करते हैं, ताकि डेवलपर्स उस समस्या को डीबग करने में अपना समय बर्बाद न करें जिसे वे ठीक नहीं कर सकते।[6]
  • उन्हें मुख्य प्रोग्राम या एक-दूसरे पर हमला करने के लिए दुर्भावनापूर्ण कोड के साथ लिखा जा सकता है। उदाहरण के तौर पर, 2009 में, नोस्क्रिप्ट के डेवलपर जियोर्जियो माओन ने फ़ायरफ़ॉक्स के लिए ऐडब्लॉक प्लस एक्सटेंशन पर हमला किया, जिसमें अपवाद जोड़े गए ताकि उनकी अपनी वेबसाइटों पर विज्ञापन काम कर सकें। आपत्तिजनक कोड ने यह भी सुनिश्चित किया कि यदि उपयोगकर्ता अपवादों को हटाने का प्रयास करता है, तो उन्हें फिर से जोड़ा जाएगा। विवाद के कारण बड़े पैमाने पर गुस्सा पैदा हुआ, जिससे उपयोगकर्ताओं के लिए नए एडब्लॉक नियमों को आगे बढ़ाने के बीच एक युद्ध शुरू हो गया, जिसके बाद मेओन ने नए नियमों में तोड़फोड़ की, जिसके कारण अंततः मोज़िला को ऐड-ऑन के संबंध में नीतियों को बदलने के लिए कदम उठाना पड़ा।[7]


उदाहरण

निम्नलिखित पायथन उदाहरण मानक पायथन गणित पुस्तकालय से पाई के मूल्य को इंडियाना पाई बिल के अनुरूप बनाने के लिए बंदर-पैच करता है। <syntaxhighlight लैंग = पाइकॉन > >>>गणित आयात करें >>> गणित.pi 3.141592653589793 >>> गणित.पीआई = 3.2 # गणित मॉड्यूल में पाई के मान को मंकी-पैच करें >>> गणित.pi 3.2

यह भी देखें

संदर्भ

  1. "Glossary — Definition of 'Monkey patch'". Plone Content Management System. Archived from the original on 2021-01-22. Retrieved 2021-07-02. when someone created a guerrilla patch very carefully and tried to avoid any battles, they tried to make it sound less forceful by calling it a monkey patch
  2. "रूबी को परिष्कृत करना". 2013-02-27.
  3. Biswal, Bimal. "पायथन में बंदर पैचिंग". Software Technology Tips. Mindfire Solutions. Retrieved 9 December 2013.{{cite web}}: CS1 maint: url-status (link)
  4. "Maintainable JavaScript: Don't modify objects you don't own". 2010-03-02.
  5. "New in Rails: Module#alias_method_chain". 2006-04-26.
  6. "Tainted kernels — The Linux Kernel documentation". www.kernel.org. Retrieved 2020-07-12.
  7. Paul, Ryan (2009-05-04). "फ़ायरफ़ॉक्स एक्सटेंशन लड़ाई के बाद मोज़िला नीति परिवर्तन पर विचार कर रहा है". Ars Technica. Retrieved 2020-07-12.