본문으로 이동

몽키 패치

위키백과, 우리 모두의 백과사전.

몽키 패치(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
>>>

같이 보기

[편집]

각주

[편집]
  1. “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 
  2. Nutter, Charles Oliver. “Refining Ruby”. 《Charles Oliver Nutter》. 
  3. Biswal, Bimal. “Monkey Patching in Python”. 《Software Technology Tips》. Mindfire Solutions. 2012년 8월 22일에 원본 문서에서 보존된 문서. 2013년 12월 9일에 확인함.