Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Обезьяний патчинг исправление (Monkey patch) кратко

Лекция



Привет, Вы узнаете о том , что такое обезьяний патчинг, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое обезьяний патчинг, обезьянье исправление, monkey patch , настоятельно рекомендую прочитать все из категории Разработка программного обеспечения и информационных систем.

В компьютерном программировании обезьянье исправление — это метод, используемый для динамического обновления поведения фрагмента кода во время выполнения. Он используется для расширения или изменения кода времени выполнения динамических языков (например, Smalltalk , JavaScript , Objective-C , Ruby , Perl , Python , Groovy и т. д.) без изменения исходного исходного кода.

Этимология

Термин « обезьяний патч», по-видимому, произошел от более раннего термина « партизанский патч» , который относился к скрытому изменению кода – и, возможно, несовместимому с другими подобными патчами – во время выполнения. Слово «партизан» , почти гомофонное слову «горилла », превратилось в «обезьяна» , возможно, чтобы патч звучал менее устрашающе.

Альтернативная этимология заключается в том, что это слово относится к «игранию» с кодом (возиться с ним).

Несмотря на название, «обезьяний патч» иногда является официальным методом расширения программы. Например, такие веб-браузеры, как Firefox и Internet Explorer, поощряли это, хотя современные браузеры (включая Firefox) теперь имеют официальную систему расширений.

Определения

Определение этого термина варьируется в зависимости от сообщества, использующего его. В Ruby , , Python и многих других динамических языках программирования термин «заплатка обезьяны» относится только к динамическим модификациям класса или модуля во время выполнения, мотивированным намерением исправить существующий сторонний код в качестве обходного пути. ошибка или функция, которая не работает должным образом. Другие формы изменения классов во время выполнения имеют разные имена в зависимости от их разных целей. Об этом говорит сайт https://intellect.icu . Например, в Zope и Plone исправления безопасности часто доставляются с использованием динамической модификации классов, но они называются горячими исправлениями .

Приложения

Патч Monkey используются для:

  • Заменять методы / классы / атрибуты / функции во время выполнения, например, чтобы заглушить функцию во время тестирования;
  • Изменять/расширять поведение стороннего продукта без сохранения частной копии исходного кода;
  • Применить результат исправления во время выполнения к состоянию в памяти вместо исходного кода на диске ;
  • Распространять исправления безопасности или поведения, которые находятся рядом с исходным исходным кодом (примером этого может быть распространение исправления в виде плагина для платформы Ruby on Rails );

Подводные камни

Вредоносные, некомпетентно написанные и/или плохо документированные обезьяньи патчи могут привести к проблемам:

  • Они могут привести к проблемам обновления, когда патч делает предположения об исправленном объекте , которые больше не соответствуют действительности; новый выпуск вполне может сломать патч. По этой причине обезьяньи патчи часто делаются условными и применяются только в случае необходимости.
  • Если два модуля пытаются выполнить обезьяний патч одним и тем же методом , один из них (в зависимости от того, какой из них запускается последним) «выигрывает», а другой патч не оказывает никакого эффекта, если только обезьяньи патчи не написаны по шаблону, подобному alias_method_chain.
  • Они создают несоответствие между исходным исходным кодом и наблюдаемым поведением, что может сбить с толку любого, кто не знает о существовании патча. Например, ядро ​​Linux обнаруживает проприетарные и другие сторонние модули, такие как драйвер Nvidia , которые вмешиваются в структуры ядра, поэтому разработчики не тратят время на отладку проблемы, которую они не могут исправить.
  • Они могут быть написаны с использованием вредоносного кода для атаки на основную программу или друг на друга. Например, в 2009 году Джорджио Маоне, разработчик NoScript , атаковал расширение Adblock Plus для Firefox, добавив исключения, чтобы реклама на его собственных сайтах работала. Нарушающий код также гарантировал, что если пользователь попытается удалить исключения, они будут добавлены снова. Ссора вызвала всеобщий гнев, что привело к войне между новыми правилами блокировки рекламы, которые предлагались пользователям, после чего Маоне саботировал новые, что в конечном итоге привело к тому, что Mozilla вмешалась и изменила политику в отношении надстроек.

Примеры

В следующем примере Python корректируется значение числа Пи из стандартной математической библиотеки Python, чтобы оно соответствовало Закону штата Индиана о Пи .

>>> import math
>>> math.pi
3.141592653589793
>>> math.pi = 3.2   # monkey-patch the value of Pi in the math module
>>> math.pi
3.2 

Давайте рассмотрим , как можно создать перехватчик для Fetch API с помощью обезьяньего патча в Javascript:

const { fetch: originalFetch } = window;

window.fetch = async (...args) => {
    let [resource, config ] = args;
    // перехватчик запросов здесь
    const response = await originalFetch(resource, config);
    // перехватчик ответов здесь
    return response;
};

Вау!! 😲 Ты еще не читал? Это зря!

  • Полифилл
  • Аспектно-ориентированное программирование
  • Категория в Objective-C
  • Динамическая загрузка
  • Метод расширения в C#
  • Самомодифицирующийся код

Исследование, описанное в статье про обезьяний патчинг, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое обезьяний патчинг, обезьянье исправление, monkey patch и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Разработка программного обеспечения и информационных систем

Из статьи мы узнали кратко, но содержательно про обезьяний патчинг
создано: 2024-03-07
обновлено: 2024-03-07
132265



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Разработка программного обеспечения и информационных систем

Термины: Разработка программного обеспечения и информационных систем