몽키 패치
몽키 패치(monkey patch)는 컴퓨터 프로그래밍에서 런타임 시 코드 조각의 동작을 동적으로 업데이트하는 데 사용되는 기술이다. 원본 소스 코드를 변경하지 않고 스몰토크, 자바스크립트, 오브젝티브-C, 루비, 펄, 파이썬, 아파치 그루비, 리스프와 같은 동적 언어의 런타임 코드를 확장하거나 수정하는 데 사용된다.
용어
[편집]몽키 패치라는 용어는 런타임에 코드를 은밀하게 변경하는 것을 의미하는 게릴라 패치(다른 패치와 호환되지 않을 수도 있음)에서 유래한 것으로 보인다. 고릴라와 거의 동음이의어인 게릴라라는 단어는 패치(patch)가 덜 위협적으로 들리도록 하기 위해 원숭이, 즉 몽키(monkey)가 되었다.[1]
또 다른 어원은 코드를 "멍킹하는 것(monkeying about)", 즉 "코드에 장난을 치는 것"을 의미한다는 것이다.
이름에서 알 수 있듯이 "몽키 패치"는 때때로 프로그램을 확장하는 공식적인 방법이다. 예를 들어, 파이어폭스 및 인터넷 익스플로러와 같은 웹 브라우저는 이를 장려했지만 이제 최신 브라우저(파이어폭스 포함)에는 공식 확장 시스템이 있다.
정의
[편집]용어의 정의는 해당 용어를 사용하는 커뮤니티에 따라 다르다. 루비,[2] 파이썬[3] 및 기타 여러 동적 프로그래밍 언어에서 몽키 패치라는 용어는 런타임 시 클래스나 모듈의 동적 수정만을 의미하며, 이는 버그나 기능에 대한 해결 방법으로 기존 타사 코드를 패치하려는 의도에서 비롯되었다. 원하는 대로 행동하지 마세요. 런타임 시 클래스를 수정하는 다른 형태는 의도에 따라 이름이 다르다. 예를 들어 Zope 및 플론에서는 보안 패치가 동적 클래스 수정을 사용하여 제공되는 경우가 많지만 이를 핫픽스라고 한다.
예시
[편집]>>> import math
>>> math.pi
3.141592653589793
>>> math.pi = 3.2 # monkey-patch the value of Pi in the math module
>>> math.pi
3.2
================================ RESTART ================================
>>> import math
>>> math.pi
3.141592653589793
>>>
같이 보기
[편집]각주
[편집]- ↑
“Glossary — Definition of 'Monkey patch'”. 《 Plone Content Management System》. 2021년 1월 22일에 원본 문서에서 보존된 문서. 2021년 7월 2일에 확인함.
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
- ↑ Nutter, Charles Oliver. “Refining Ruby”. 《Charles Oliver Nutter》.
- ↑ Biswal, Bimal. “Monkey Patching in Python”. 《Software Technology Tips》. Mindfire Solutions. 2012년 8월 22일에 원본 문서에서 보존된 문서. 2013년 12월 9일에 확인함.