stanford-oval/wikipedia huggingface dataset:
컴포넌트 오브젝트 모델
기술 세부 사항 > 클래스

COM에서 클래스는 coclass라고 불린다.
coclass는 하나 이상의 인터페이스를 구체적으로 구현한 것이다. coclass는 COM 컴포넌트 개발을 지원하는 모든 언어(예를 들어 C++나 비주얼 베이직 등)로 작성할 수 있다.
윈도 개발에 대해 COM이 한 주요 기여 중 하나는 인터페이스를 구현으로부터 분리한다는 개념을 도입했다는 점이다. COM에서는 객체를 인터페이스를 통하지 않고 직접 접근할 수 없기 때문에 반드시 인터페이스와 구현이 분리되어야 한다. 이와 함께 COM은 단일 인터페이스 다중 구현을 지원한다. 단일 인터페이스 다중 구현 개념은 애플리케이션이 실행 중에 인터페이스에 대한 여러 구현 중 하나를 선택하여 인터페이스를 인스턴스화 할 수 있다는 것을 의미한다.
기술 세부 사항 > 인터페이스 정의 언어와 타입 라이브러리

타입 라이브러리는 COM 타입들을 설명하는 메타데이터를 포함한다. 이러한 COM 타입들에 대한 설명은 인터페이스 정의 언어(Interface Definition Language, IDL)를 통해 작성되며 컴파일 될 수 있도록 텍스트 파일로 저장된다.
COM 컴포넌트 개발에서 IDL을 사용하여 먼저 타입들을 정의하면서 시작하는 건 흔히 있는 일이다. IDL 파일은 개발자가 어떠한 프로그래밍 언어와도 관련되지 않는 방법으로 객체 지향적인 클래스, 인터페이스, 구조체, 열거형 및 다른 사용자 정의 타입들을 정의할 수 있도록 해준다.
IDL 파일은 MIDL 컴파일러에서 타입 라이브러리(.TLB 파일)로 컴파일된다. 이러한 타입 라이브러리에 저장된 바이너리 메타데이터는 VB, VC++, 델파이 등과 같은 다양한 프로그래밍 언어로 처리하게 된다. 이와 같은 처리의 결과로 각각의 언어 컴파일러는 자신의 언어에 맞는 형식(VB를 위한 VB 클래스, VC++를 위한 클래스, 구조체, 매크로 및 typedef 등)을 만들게 되고, 이런 형식들은 .TLB 파일(궁극적으로는 원래 정의된 IDL 파일)에 정의된 coclass를 나타내게 된다.
기술 세부 사항 > 오브젝트 프레임워크로서의 COM

COM의 기반이 되는 개념들은 객체 지향성에 그 뿌리를 두고 있다. COM은 프로그램을 객체 지향적으로 개발하고 배치하기 위한 인터페이스이다.
COM은 런타임 프레임워크이기 때문에 실행 중에 타입들을 개별적으로 식별하거나 지정할 수 있다. 이를 위해 전역 고유 식별자(GUID)가 사용된다. 각각의 COM 타입에는 실행 시 식별 될 수 있도록 GUID가 할당된다.
COM 타입에 대한 정보를 컴파일시 및 실행시에 접근할 수 있게 하기 위해, COM은 타입 라이브러리를 소개하고 있다. 타입 라이브러리의 효과적인 사용을 통해 COM은 오브젝트 사이의 상호 동작을 지원하는 동적 프레임워크로서의 기능을 수행한다.
IDL에서의 다음과 같은 coclass 정의 예제를 살펴 보자 :
coclass MyObject
{
  [default] interface IMyObject;
  [default, source] dispinterface _IMyObjectEvents;
};
위의 코드는 MyObject라는 이름의 COM 클래스를 선언하고 있다. 이 클래스는 IMyObject라는 이름의 인터페이스를 구현하며, _IMyObjectEvents 이름의 이벤트 인터페이스를 지원한다.
이벤트 인터페이스 부분을 무시하면, 이것은 다음과 같은 C++ 클래스 정의와 개념적으로 동일하다 :
class CSomeObject : public ISomeInterface
{
  ...
  ...
  ...
};
위의 코드에서 ISomeInterface는 C++ 가상 클래스이다.
이제 다시 MyObject COM 클래스를 보자 : MyObject를 위한 coclass가 IDL에 정의되고, 그것으로부터 타입 라이브러리가 컴파일되었다면, 각각의 언어 컴파일러는 이러한 타입 라이브러리를 읽고 적절히 해석하여, 개발자가 COM이 이해할 수 있는 coclass인 MyObject를 구현하고 궁극적으로 바이너리 실행 코드를 생성할 수 있도록 필요한 모든 코드를 (각각의 언어에 적합한 형태로) 생성해야 할 의무가 있다.
COM coclass가 구현되고 시스템에서 사용할 수 있게 되었다면, 이제 이를 어떻게 인스턴스화 할 지의 문제가 뒤따르게 된다. 현재 C++ 같은 언어에서는, CoCreateInstance() API를 인스턴스화 할 coclass의 CLSID (CLSID_MyObject)와 해당 coclass에서 사용하려는 인터페이스 IID (IID_IMyObject)를 지정하여 사용할 수 있다. CoCreateInstance()를 호출하는 다음과 같은 코드는 :
CoCreateInstance
(
  CLSID_MyObject,
  NULL,
  CLSCTX_INPROC_SERVER,
  IID_IMyObject,
  (void**)&m_pIMyObject
);
개념적으로 다음의 C++ 코드와 동일하다 :
ISomeInterface* pISomeInterface = NULL;
pISomeInterface = new CSomeObject();
첫 번째 경우는 COM 서브 시스템에게 IMyObject 인터페이스를 구현하는 오브젝트에 대한 포인터를 얻어오되 이 인터페이스를 구현하는 CLSID_MyObject 구현을 통해 얻어오고 있다. 두 번째 경우는 ISomeInterface 인터페이스를 구현하는 C++ 클래스의 인스턴스를 CSomeObject 클래스를 통해 생성하고 있다.
이 두개가 (개념적으로) 같다는 것은 명확하다. coclass는 COM 세계에서의 객체 지향적 클래스이다. coclass의 주요 특징은 (1) 원래부터 바이너리 규약이고, 따라서 결과적으로 (2) 프로그래밍 언어에 독립적이다.
기술 세부 사항 > 레지스트리

윈도에서 COM 클래스, 인터페이스, 타입 라이브러리들은 GUID로써 리스트되어 레지스트리에 저장된다. COM 라이브러리는 레지스트리를 사용하여 COM 오브젝트들의 로컬 라이브러리를 찾거나 원격 서비스의 네트워크 위치를 찾는다.
기술 세부 사항 > 참조 카운팅

COM 규약은 참조 카운팅(reference counting)이라는 기법을 필요로 한다. 이 기법은 COM 오브젝트가 노출하는 인터페이스를 하나 이상의 클라이언트가 사용하고 있다면 오브젝트가 해제되지 않게 한다. 바꿔 말하면 COM 오브젝트는 자신의 인터페이스를 사용 중인 모든 클라이언트가 인터페이스 사용을 끝마쳤을 때 해제된다. COM 오브젝트는 자신의 참조 카운트가 0이 될 때 자신이 현재 사용 중인 모든 메모리를 해제해야 할 책임이 있다는 점에 주의하자.
COM의 가장 기반이 되는 인터페이스인 (그래서 모든 COM 인터페이스가 반드시 상속해야 하는) IUnknown 인터페이스는 AddRef()와 Release() 이렇게 두 개의 메서드를 통해 참조 카운팅의 개념을 지원한다. 참조 카운트는 COM 오브젝트의 참조 카운트를 말하는 것이며 COM 인터페이스가 참조 카운팅 되지 않는다는 점에 주의하자.
COM 오브젝트는 참조 카운팅을 위해 내부적으로 하나의 정수형 값을 사용한다. 이 값은 IUnknown 또는 이를 상속한 다른 COM 인터페이스를 통해 AddRef()를 호출하면 증가한다. 이 값은 Release()를 호출하면 감소한다. AddRef()와 Release()는 클라이언트가 COM 객체의 수명에 관여하는 유일한 방법이다. 이 정수값은 COM 오브젝트의 private 멤버이며 직접 접근할 수 있게 되는 경우는 없다.
AddRef()의 목적은 COM 오브젝트에게 자신에 대한 추가적인 참조가 만들어졌음을 알려주는 것이다. 따라서 이 참조가 여전히 유효하다면 COM 오브젝트는 해제되지 않고 유지되어야 한다. 반대로 Release()의 목적은 COM 오브젝트에게 클라이언트가 더 이상 자신을 필요로 하지 않음을 알려주는 것이다. 이를 통해 만약 참조 카운트가 0이 되었다면, COM 오브젝트는 해제되게 된다.
어떤 프로그래밍 언어는 (예를 들어 비주얼 베이직) 참조 카운팅을 자동으로 지원하여 COM 오브젝트 개발자가 소스 코드에 참조 카운팅 관련 코드를 직접 작성하지 않아도 되게 한다. C++와 같은 저 수준의 프로그래밍 언어는 정수형 멤버를 선언하는 등 소스 코드에 직접 참조 카운팅 관련 코드를 작성해 주는 것이 필요하다.
다음은 AddRef() 및 Release() 호출과 관련하여 COM 오브젝트가 적절히 참조 카운팅되도록 돕는 일반적인 가이드라인이다:
메서드 또는 전역 함수는 인터페이스를 직접 또는 "out" 파라미터를 통해 반환할 때 반환되는 오브젝트의 참조 카운트를 증가시킨 후 반환하도록 한다. 즉 함수 또는 메서드 안에서, 반환되는 인터페이스에 대해 AddRef()를 호출하도록 한다. 이 방식의 예로 IUnknown 인터페이스의 QueryInterface() 메서드가 있다. 개발자는 반환되는 인터페이스의 참조 카운트가 이미 증가된 상태로 반환된다는 것을 반드시 알고 있어야 하며, 해당 인터페이스에 대해 다시 AddRef()를 호출하는 일이 없어야 한다.
인터페이스가 더 이상 필요하지 않게 되었다면 꼭 Release()를 호출하도록 한다.
인터페이스가 복사되어 새로 저장되었다면, 해당 인터페이스에 대해 AddRef()를 호출하도록 한다. 이는 결국 (해당 인터페이스를 구현하는) 내부 오브젝트에 대한 또 다른 참조(인터페이스)를 만드는 것이 된다.
참조 카운팅의 원리는 단순하지만 COM 개발자들 특히 신입 COM 개발자들은 참조 카운팅을 관리하는 소스 코드를 작성할 때 종종 오류를 일으킨다. 이는 참조 카운트를 부정확하게 하여, 어떠한 클라이언트도 사용하지 않는 COM 오브젝트가 해제되지 않고 메모리 누수를 일으키거나, 이미 해제된 COM 오브젝트에 대해 메서드를 호출하게 하여 런타임 오류를 일으킨다.
이런 문제들을 줄이기 위해 마이크로소프트는 C++ 개발자들을 위해 ATL(Active Template Library)을 소개하였다. ATL은 높은 수준의 COM 개발 패러다임을 지원한다. 또한 COM 클라이언트 애플리케이션 개발자가 직접 참조 카운팅을 관리하지 않도록 하는 스마트 포인터 오브젝트(smart pointer objects)를 지원한다.
기술 세부 사항 > 인스턴스화

COM은 COM 오브젝트를 인스턴스화하는(즉 생성하는) 작업에 클래스 팩토리(Class Factories)를 사용하도록 표준화하였다. COM 오브젝트를 생성하기 위해서는 반드시 다음 두 개의 항목 조합이 있어야 한다:
클래스 아이디
클래스 팩토리
각각의 COM 오브젝트는 반드시 유일한 클래스 아이디(GUID)가 할당되어 있어야 한다. 또한 각각의 COM 오브젝트는 반드시 자신의 클래스 팩토리가 있어야 한다. 클래스 팩토리는 그 자신도 역시 COM 오브젝트로서 IClassFactory 인터페이스를 구현하는 오브젝트이다. 이러한 클래스 팩토리의 역할은 다른 오브젝트들을 생성하는 것이다.
보통 클래스 팩토리 오브젝트는 COM 오브젝트를 포함하고 있는 바이너리 실행 파일(즉 서버 코드)와 같은 파일에 포함된다. 클래스 팩토리 오브젝트의 소스 코드는 COM 오브젝트 개발자가 직접 작성할 수도 있지만, (비주얼 베이직 컴파일러같은) 코드 생성 프로그램에서도 생성할 수 있다. 클래스 팩토리를 사용하여 오브젝트를 생성하려면, 대상이 되는 오브젝트의 클래스 아이디가 반드시 있어야 한다. 클래스 팩토리는 클래스 아이디를 사용하여 해당 오브젝트를 인스턴스화한다.
클래스 팩토리가 하나 이상의 클래스에 대한 오브젝트를 생성할 수 있다는 점을 알아두자. 즉 서로 다른 클래스 아이디를 가지는 오브젝트들이 같은 클래스 팩토리 오브젝트에서 만들어질 수 있다. 그러나 이 부분은 COM 오브젝트 및 클래스 팩토리 개발자들에게만 관계되는 내부 사항이다. COM 시스템은 이 부분에 대해 투명하다.
왜 클래스 팩토리가 필요한지 의문이 생길 수 있다. 클래스 팩토리는 오브젝트의 생성에 대한 책임을 별개의 오브젝트(클래스 팩토리)에 위임함으로써, 개발자에게 오브젝트 생성에 대한 엄청난 유연성을 부여한다. 예를 들어 싱글턴(singleton) 오브젝트들은 클래스 팩토리를 통해 매우 쉽게 구현될 수 있다.
클라이언트 애플리케이션이 클래스 팩토리 오브젝트를 얻을 수 있도록, COM 서버는 반드시 클래스 팩토리를 적절하게 노출해야 한다. 클래스 팩토리는 COM 서버 코드의 특징에 따라 다르게 노출된다. DLL 기반 서버는 반드시 DllGetClassObject() 전역 함수를 익스포트해야 한다. EXE 기반 서버는 어떠한 API도 익스포트하지 않는다. 대신 CoRegisterClassObject() API를 통해 실행 중에 클래스 팩토리를 등록한다.
다음은 클래스 팩토리를 사용하여 오브젝트를 생성하는 순서에 대한 일반적인 개요이다:
오브젝트의 클래스 팩토리는 (윈도의 표준 API인) CoGetClassObject() API를 통해 얻는다.
CoGetClassObject()를 호출할 때, 반드시 (생성하려는) 오브젝트에 대한 클래스 아이디가 있어야 한다. 다음 C++ 코드는 이러한 사항을 보여준다:   IClassFactory* pIClassFactory = NULL;

  CoGetClassObject
  (
    CLSID_SomeObject,
    CLSCTX_ALL,
    NULL,
    IID_IClassFactory,
    (LPVOID*)&pIClassFactory
  );
위의 코드는 CLSID_SomeObject 클래스 아이디로 지정된 COM 오브젝트의 클래스 팩토리 오브젝트를 요청한다. 클래스 팩토리 오브젝트는 IClassFactory 인터페이스 형태로 반환된다.
반환된 클래스 팩토리 오브젝트는 이제 원래 의도했던 COM 오브젝트의 인스턴스를 생성하는 데 사용된다. 다음 C++ 코드는 이러한 사항을 보여준다: ISomeObject * pISomeObject = NULL ; if ( pIClassFactory ) { pIClassFactory -> CreateInstance ( NULL , IID_ISomeObject , ( LPVOID * ) & pISomeObject ); pIClassFactory -> Release (); pIClassFactory = NULL ; }
ISomeObject* pISomeObject = NULL;

  if (pIClassFactory)
  {
    pIClassFactory -> CreateInstance
    (
      NULL,
      IID_ISomeObject,
      (LPVOID*)&pISomeObject
    );

    pIClassFactory -> Release();

    pIClassFactory = NULL;
  }
위의 코드는 클래스 팩토리 오브젝트의 CreateInstance() 메서드를 사용하여 IID_ISomeObject GUID로 지정된 인터페이스를 노출하는 오브젝트를 생성한 후, 이 오브젝트의 ISomeObject 인터페이스에 대한 포인터를 반환한다. 클래스 팩토리 오브젝트 자체도 COM 오브젝트이기 때문에, 클래스 팩토리 오브젝트가 더 이상 필요하지 않다면 Release() 해주는 것이 필요하다. (즉 Release() 메서드를 반드시 호출해야 한다.)
위에서는 가장 기본적인 레벨에서 오브젝트를 인스턴스화하기 위한 클래스 팩토리의 사용 방법에 대해 설명하였다. 좀 더 고수준의 인스턴스화도 또한 가능한데, 이들 중 일부는 윈도 API에 대한 직접적인 접근 없이도 사용할 수 있다.
예를 들어 애플리케이션은 CoCreateInstance() API를 통해 클래스 팩토리를 얻는 과정을 건너 뛰고 바로 COM 오브젝트를 생성할 수 있다. 그러나 내부적으로 CoCreateInstance() API도 CoGetClassObject() API를 호출하여 오브젝트의 클래스 팩토리를 얻은 다음 이 클래스 팩토리의 CreateInstance() 메서드를 사용하여 COM 오브젝트를 생성한다.
비주얼 베이직은 오브젝트 인스턴스화를 위해 전역 함수 CreateObject()와 new 키워드를 제공한다. 비주얼 베이직 언어가 제공하는 이러한 인스턴스화 방법은 (CoGetClassObject() API를 통해) 대상 오브젝트의 클래스 팩토리를 얻은 다음 IClassFactory::CreateInstance() 메서드를 호출하여 오브젝트를 생성하는 작업을 캡슐화한다.
다른 언어들도(예를 들어 파워빌더의 파워스크립트) 자신만의 고수준 오브젝트 생성 방법을 제공할 수 있다. 그러나 CoGetClassObject() 함수와 IClassFactory 인터페이스는 여전히 가장 기반이 되는 오브젝트 생성 기법이다.
기술 세부 사항 > 리플렉션

컴포넌트는 COM 타입 라이브러리를 사용하여 자기 자신에 대한 정보를 기록할 수 있다. 타입 라이브러리는 컴포넌트의 CLSID, 컴포넌트가 구현하는 인터페이스의 IID 및 각 인터페이스에 선언된 메서드 정보 등을 포함한다. 타입 라이브러리는 일반적으로 비주얼 베이직 및 비주얼 스튜디오 같은 RAD 툴들로 말미암아 COM 컴포넌트를 사용하는 프로그래머들을 돕는 데 사용된다.
기술 세부 사항 > 프로그래밍

COM 프로그래머는 COM 환경의 시작과 종료, COM 오브젝트의 인스턴스화 및 참조 카운트 관리, 버전 정보를 얻기 위한 오브젝트에 대한 쿼리, 개선된 버전 오브젝트의 이점을 얻을 수 있는 코딩, 최신 버전을 사용할 수 없을 경우 우아하게 기능을 줄여 동작할 수 있는 코딩을 할 책임이 있다.
기술 세부 사항 > 애플리케이션과 네트워크에서의 투명성

COM 오브젝트를 인스턴스화하고 참조하는 작업은 하나의 프로세스 안에서 이루어지거나, 하나의 컴퓨터 안에서 프로세스의 경계를 넘어 이루어지거나, DCOM 기술을 사용하여 네트워크를 통해 원격으로 이루어질 수 있다. 프로세스의 경계를 넘거나 원격으로 사용되는 오브젝트들은 마샬링을 사용하여 메서드 호출을 보내고 결과를 받을 수 있다. 마샬링은 투명하게 동작하기 때문에 오브젝트 및 해당 오브젝트를 사용하는 코드에서는 보이지 않는다. (즉 마샬링을 사용하거나 사용하지 않거나 코드는 동일하다.)
기술 세부 사항 > COM 스레딩

COM의 스레딩은 아파트먼트라는 단위로 이루어진다. 하나의 아파트먼트에는 하나 이상의 COM 컴포넌트가 포함되어 있다. 아파트먼트에는 단일 쓰레드, 다중 쓰레드, 쓰레드 뉴트럴 등 세 종류가 있다.
아파트먼트는 아파트먼트에 참여하는 모든 스레드와 오브젝트에 대해 다음과 같은 지침을 지키도록 규정하고 있다.
각각의 COM 오브젝트는 하나의 아파트먼트 안에서 실행된다. 어느 아파트먼트인지는 프로그램 실행시 오브젝트를 생성할 때 결정된다. 한 번 배정된 COM 오브젝트의 아파트먼트는 변경되지 않는다.
COM 스레드 (즉 COM 오브젝트의 코드를 실행하는 스레드 또는 COM 메서드를 호출하는 스레드)도 하나의 아파트먼트에서 실행된다. COM 오브젝트와 마찬가지로 COM 스레드의 아파트먼트도 초기화시에 배정된다. COM 스레드의 아파트먼트도 한 번 배정되면 변경되지 않는다.
같은 아파트먼트에 속하는 COM 스레드와 오브젝트들은 같은 스레드 접근 규칙을 따른다. 한 아파트먼트에서 이루어지는 메서드 호출은 어떠한 COM 프레임워크의 도움 없이 바로 실행된다.
다른 아파트먼트에 속하는 COM 스레드와 오브젝트들은 서로 다른 스레드 접근 규칙에 따라 동작한다. 아파트먼트의 경계를 넘어 이루어지는 메서드 호출은 마샬링을 통해 수행된다. 마샬링은 프락시와 스텁의 사용이 필요하다.
COM에는 세 종류의 아파트먼트가 있는데 각각 싱글 쓰레디드 아파트먼트(Single-Threaded Apartment, STA), 멀티 쓰레디드 아파트먼트(Multi-Threaded Apartment, MTA) 그리고 쓰레드 뉴트럴 아파트먼트(Thread Neutral Apartment)이다. 각각의 아파트먼트는 하나의 메커니즘을 나타내는데, 이 메커니즘을 통해 여러 스레드가 오브젝트의 내부 상태 정보를 접근할 경우 동기화가 이루어지기도 한다.
싱글 쓰레디드 아파트먼트는 매우 일반적으로 사용되는 모델이다. 여기서의 COM 오브젝트는 일반 데스크톱 애플리케이션의 사용자 인터페이스가 (프로그래밍적으로) 동작하는 방식과 유사한 방식으로 동작한다. STA 모델에서는 하나의 오브젝트 전용 스레드에서 오브젝트의 메서드들이 실행된다. 따라서 해당 아파트먼트의 외부 스레드로부터 메서드 호출이 있으면, 그 메소드 호출이 마샬되어 시스템에서 자동으로 큐에 쌓이게 된다(여기에서 표준 윈도 메시지 큐가 사용된다.). 따라서 경쟁 조건(race condition) 또는 동기화 문제에 대해 걱정하지 않아도 된다. 이는 각각의 메서드 호출이 항상 이전에 호출되었던 메서드가 끝난 다음에 차례대로 실행되기 때문이다.
COM 오브젝트의 메서드가 자체적으로 동기화를 수행하는 경우, COM 오브젝트의 호출 메서드들에 다중 스레드를 전용으로 사용하는 것이 허용된다(즉 COM 오브젝트의 메서드를 동시에 여러 스레드에서 실행할 수 있다). 이를 멀티 쓰레디드 아파트먼트라 부른다. STA에 있는 스레드로부터 MTA 오브젝트에 대한 (메서드) 호출이 있는 경우 마샬된다. 프로세스는 STA 및 MTA에 속하는 COM 오브젝트를 섞어서 사용할 수 있다.
쓰레드 뉴트럴 아파트먼트에서의 스레드들은 오브젝트의 호출 메서드들에 대해 전용으로 사용될 필요는 없다. 유일한 조건은 오브젝트의 모든 메서드들이 차례대로 재진입해야 한다는 것이다.
COM에 대한 비판

COM은 꽤나 복잡한 구현이기 때문에, 몇몇 “플러밍(plumbing)” 이슈들로 말미암아 프로그래머들은 당황할 수 있다.
COM에 대한 비판 > 환경 초기화

COM은 COM의 기능을 필요로 하는 모든 스레드에 대해 CoInitialize[Ex]와 CoUninitialize 메서드를 프로그래머가 호출할 것을 요구한다. 추가적으로, OLE 클립보드 또는 드래그 앤 드랍을 사용하는 코드가 있다면, 프로그래머는 OleInitialize 와 OleUninitialize 메서드를 반드시 호출해야 한다. 시스템에 있는 몇몇 스레드들은 COM을 모르는 라이브러리에서 만들어질 수도 있기 때문에, 프로그래머는 자신이 만든 스레드 이외의 스레드에서 COM 라이브러리를 사용할 경우 항상 조심해야 한다.
COM에 대한 비판 > 메시지 펌핑

COM은 초기화 될 때 숨겨진 윈도를 생성하여 스레드 사이 또는 프로세스 사이의 메시지 라우팅에 사용한다. 이 윈도는 자신의 윈도 메시지 큐를 갖고 있고, 큐의 데이터는 정기적으로 체크되어 사용된다. 시스템에서 그렇게 하는 것은 윈도 초기 버전의 경우, 오류를 가지고 있어 시스템 전역적인 데드락을 일으킬 수 있다. 이 문제는 특히 난처한데 왜냐하면 일부 윈도 API는 자신의 구현 일부로서 COM을 초기화하기 때문이다. 이는 구현에 있어 메모리 누수를 야기시킨다.
COM에 대한 비판 > 참조 카운팅

COM 참조 카운팅은 두 개 이상의 오브젝트가 서로 순환 참조하는 문제가 일어날 수 있다. 애플리케이션을 디자인할 때 이 사항을 반드시 고려하여 오브젝트가 고아(orphaned)가 되지 않도록 해야 한다.
COM "이벤트 싱크(event sink)" 모델을 사용하는 오브젝트의 참조 카운트는 항상 0보다 크게 된다. 왜냐하면 이벤트를 발생시키는 오브젝트는 해당 이벤트를 처리하는 오브젝트에 대한 참조가 필요하게 되는데, 이는 오브젝트의 참조가 결코 0이 되지 않도록 한다.
참조 사이클은 일반적으로 대역외 종료(out-of-band termination) 또는 신분 나누기(split identities)를 사용하면 깨지게 된다. 대역외 종료 기법에서 오브젝트는 호출될 경우 갖고 있는 다른 오브젝트에 대해 모든 참조를 버리게(drop) 하는 메서드를 노출하는데, 이 메서드가 호출되면 사이클은 깨지게 된다. 신분 나누기 기법에서는 하나의 구현이 서로 다른 두개의 COM 오브젝트(identities)를 노출하여, COM 오브젝트 사이에 약한 참조를 만든다. 이는 참조 사이클을 방해한다.
COM에 대한 비판 > DLL 지옥

COM 컴포넌트는 시스템 전역적인 위치, 즉 윈도 레지스트리에 COM 컴포넌트의 위치 정보를 저장하기 때문에, 특정 컴포넌트에 대하여 하나의 버전만을 인스톨하여 사용할 수 있다. 따라서 COM은 DLL 지옥이라는 심각한 문제가 발생할 수 있는데, 이는 두 개 이상의 애플리케이션에서 특정 컴포넌트에 대한 서로 다른 버전을 필요로 할 때 발생하게 된다.
윈도우 XP는 "레지스트레이션-프리 COM(Registration-free COM)"이라 불리는 COM 오브젝트를 등록시키는 새로운 COM 오브젝트 등록 모드를 소개하였다. 이 기능은 애플리케이션이 COM 오브젝트들을 설치할 때 COM 등록에 필요한 정보를 전역적인 레지스트리가 아닌 자신의 디렉터리에 저장하여 사용할 수 있도록 한다. 엄밀히 말해 이 기능은 해당 COM 컴포넌트들을 단일 애플리케이션에서 사용할 경우에만 적용이 가능하다. 레지스트레이션-프리 COM 을 사용하면 대부분 DLL 지옥을 피할 수 있다. 다만 최소 윈도우 XP 또는 그 이상의 상위 버전의 OS가 필요하며, EXE COM 서버 및 시스템 전역적인 컴포넌트들 즉 MDAC, MSXML, 다이렉트X 및 인터넷 익스플로러 등에는 사용할 수 없다.
참고 자료

COM: A Brief Introduction.
Essential COM (Don Box 저, 1998).
ActiveX와 OLE (데이비드 채펠 저, 정현주역).
같이 보기

분산 컴포넌트 오브젝트 모델(DCOM)
동적 데이터 교환(DDE)
닷넷 프레임워크
객체 연결 삽입(OLE)
대한민국 상법 제418조

대한민국 상법 제418조는 신주인수권의 내용 및 지정일의 지정, 공고에 대한 상법 회사법의 조문이다. 2011. 4. 14.,법률 제10600호로 일부개정되어 
2012년 4월 15일에 시행되었다.
조문

제418조 (신주인수권의 내용 및 배정일의 지정·공고)①주주는 그가 가진 주식 수에 따라서 신주의 배정을 받을 권리가 있다.  <개정 2001. 7. 24.>
②회사는 제1항의 규정에 불구하고 정관에 정하는 바에 따라 주주 외의 자에게 신주를 배정할 수 있다. 다만, 이 경우에는 신기술의 도입, 재무구조의 개선 등 회사의 경영상 목적을 달성하기 위하여 필요한 경우에 한한다.  <신설 2001. 7. 24.>
③회사는 일정한 날을 정하여 그 날에 주주명부에 기재된 주주가 제1항의 권리를 가진다는 뜻과 신주인수권을 양도할 수 있을 경우에는 그 뜻을, 그 날의 2주간전에 공고하여야 한다. 그러나 그 날이 제354조제1항의 기간중인 때에는 그 기간의 초일의 2주간전에 공고하여야 한다.  <신설 1984. 4. 10.>
④ 제2항에 따라 주주 외의 자에게 신주를 배정하는 경우 회사는 제416조제1호, 제2호, 제2호의2, 제3호 및 제4호에서 정하는 사항을 그 납입기일의 2주 전까지 주주에게 통지하거나 공고하여야 한다.  <신설 2011. 4. 14.>
第418條 (新株引受權의 내용 및 配定日의 指定·公告) ① 주주는 그가 가진 주식 수에 따라서 신주의 배정을 받을 권리가 있다.  <개정 2001.7.24.>
②회사는 제1항의 규정에 불구하고 정관에 정하는 바에 따라 주주 외의 자에게 신주를 배정할 수 있다. 다만, 이 경우에는 신기술의 도입, 財務構造의 개선 등 회사의 경영상 목적을 달성하기 위하여 필요한 경우에 한한다.  <신설 2001.7.24.>
③會社는 一定한 날을 정하여 그 날에 株主名簿에 記載된 株主가 第1項의 權利를 가진다는 뜻과 新株引受權을 讓渡할 수 있을 경우에는 그 뜻을 그 날의 2週間전에 公告하여야 한다. 그러나 그 날이 第354條第1項의 期間 중인 때에는 그 期間의 初日의 2週間전에 이를 公告하여야 한다. <新設 1984.4.10.>
④ 제2항에 따라 주주 외의 자에게 신주를 배정하는 경우 회사는 제416조제1호, 제2호, 제2호의2, 제3호 및 제4호에서 정하는 사항을 그 납입기일의 2주 전까지 주주에게 통지하거나 공고하여야 한다.  <신설 2011.4.14.>
참고문헌

류지민. (2021). 한진칼의 제3자배정 신주발행 사례에 비추어 본 상법 제418조 제2항 관련 심사기준 - 서울중앙지법 2020. 12. 1. 선고 2020카합22150 결정 -. 기업법연구, 35(1), 107-154.
같이 보기

대한민국 상법 제419조 신주인수권자에 대한 최고
유상증자
신주인수권부사채
논 (1993년)

| 논 のん  |
| --- | --- |
2019 도쿄국제영화제에서
본명: 노넨 레나(能年玲奈)
출생: 1993년 7월 13일(1993-07-13)(31세) 일본 효고현 가미카와정
국적: 일본
직업: 배우, 패션 모델
활동 기간: 2006년 ~ 현재
소속사: 레프로 엔터테인먼트
웹사이트: 공식 프로필
논(のん, 1993년 7월 13일 ~ )은 일본의 배우, 패션 모델이다. 본명은 노넨 레나(能年玲奈)다.
효고현 칸자키 군 카미카와 정 출신. 레프로 엔터테인먼트 소속.
약력

2006년, 로틴용 패션 잡지 《니콜라》(신초샤)의 모델이었던 아라가키 유이를 동경해, 제10회 니콜라 모델 오디션에 응모해, 그랑프리를 획득.
2010년, 영화 《고백》으로 배우 데뷔.
2013년 2월 8일, 공식 팬클럽 〈쿠루부시.〉를 개설. 동년, NHK 연속 TV 소설 《아마짱》(NHK)의 여주인공·아마노 아키 역에, 오디션으로 1953명 중에서 뽑혔다. 〈도쿄 드라마 어워드 2013〉 주연 여우상, 제78회 더 텔레비전 드라마 아카데미상 주연 여우상, 또 극 중의 대사 〈제제제〉는 2013년 〈신조어·유행어대상〉의 연간 대상을 수상. 12월 31일에 방송된 제64회 NHK 홍백가합전에서는, 홍백 PR 대사를 맡아, 〈아마짱〉 “특별편”으로 “GMT 스페셜 유닛 feat.아메요코 여학원 예능 코스”로 〈달력상으로는 디셈버〉를, 아다치 유이 역을 연기한 하시모토 아이와 “파도소리의 메모리즈”로 〈파도소리의 메모리〉의 1절을, 마지막에는 출연자 전원이서 〈고향에 돌아가자〉를 노래했다.
2014년, 첫 주연 영화 《핫 로드》로 제6회 TAMA 영화상 최우수 신인 여우상을 수상.
2016년 7월부터 예명을 논(일본어: のん)으로 변경해 활동하는 것을 표명.
인물

낯을 가리는 성격으로, 특기는 그림 그리기, 취미는 기타 연주, 독서, 애니메이션 감상.
나카무라 루이나, 스기우라 카나, 미요시 아야카, 무라카미 유리와 사이가 좋다.
출연 > 영화

고백 (2010년 6월 5일, 토호) - 키리타니 슈카 역
동물 사냥법 (2011년 2월 21일, ndjc2010) - 주연·미유키 역
아바타 (2011년 4월 30일, 우즈마사) - 오오쿠보 린 역
로렉스 아저씨의 비밀 종 (2012년 10월 6일, 토호 토와) - 오드리(더빙) 역
까마귀의 엄지 손가락 (2012년 11월 23일, 20세기 폭스/팬텀 필름) - 카와이 마히로 역
굿모에비앙! (2012년 12월 15일, 쇼게이트) - 토모 짱 역
해바라기~오키나와는 잊지 않는다, 그 날의 하늘을~ (2013년 1월 26일, 영화 센터 전국 연락 회의/고고 비주얼 기획) - 시로마 카나 역
핫 로드 (2014년 8월 16일, 쇼치쿠) - 주연·미야이치 카즈키 역
해파리 공주 (2014년 12월 27일, 아스믹 에이스) - 주연·쿠라시타 츠키미 역
출연 > 텔레비전 드라마

신·경시청 수사 1과 9계 season2 제7화 (2010년 8월 11일, TV 아사히) - 이치노세 미라이 역
소중한 것은 전부 네가 가르쳐 주었어 (2011년 1월 17일 ~ 3월 28일, 후지 TV) - 토쿠나가 레나 역
고교생 레스토랑 (2011년 5월 7일 ~ 7월 2일, 닛폰 TV) - 미야자와 마호 역
괴도 로얄 제6화 (2011년 12월 2일, TBS) - 하토무라 카에데 역
열쇠가 잠긴 방 (2012년 4월 16일 ~ 6월 25일, 후지 TV) - 미즈시로 리나 역
서머 레스큐~천공의 진료소~ (2012년 7월 8일 ~ 9월 23일, TBS) - 스즈키 마코 역
연속 TV 소설 아마짱 (2013년 4월 1일 ~ 9월 28일, NHK) - 주연·아마노 아키 역
아마짱 특별편 (2013년 12월 31일, NHK) ※제64회 NHK 홍백가합전 안에서 생방송 출연
기묘한 이야기 '14 봄 특별편 〈공상 소녀〉 (2014년 4월 5일, 후지 TV) - 주연·아사히나 카오루 역
출연 > CM

NTT 도코모 〈START! DoCoMo 캠페인〉 (2007년 ~ 2008년)
오리엔탈 랜드 〈도쿄 디즈니 리조트 캠퍼스 데이 패스포트〉 (2011년)
칼피스 〈칼피스 워터〉 (2012년 3월 ~ 2015년 3월)
에이 넷 〈Ne-net〉 (2012년 9월 ~ 2014년 1월)
아사히 푸드 & 헬스 케어 〈Natureve 과실 Dolce〉 (2013년 10월 ~ 2014년 10월)
KOSÉ
기업 (2013년 12월 ~ 2014년 12월)
코세 코스메 포트 〈소프티모 내츄새본〉 (2014년 6월 ~ 2015년 9월)
캐논 미러리스 카메라 〈EOS M2〉 (2014년 1월 ~ )
칸포 생명 기업 (2014년 2월 ~ 2016년 2월)
JX 닛코 닛세키 에너지 〈ENEOS〉 (2014년 3월 ~ 2015년 3월)
스퀘어 에닉스 〈드래건 퀘스트 몬스터즈 수퍼 라이트〉 (2014년 6월 ~ 2015년 9월)
파르코 〈PARCO 그란바자르〉 (2014년 12월 ~ 2015년 2월)
출연 > 광고

나카노 히로미치 톰보우 학생복 (2008년)
선 호세키 〈Fancy Pocket Girls'〉 (2008년) - 전속 모델
니센 〈푸치 베리〉 (2008년) - 전속 모델
카와이쥬쿠 (2009년)
에이 넷 Ne-net 이미지 캐릭터 (2012년)
칼피스 칼피스 워터 제11대 CM 캐릭터 (2012년)
섬광 라이어트 2012 제*4대째 응원 걸 (2012년)
가을 전국 화재 예방 운동 포스터 (2012년)
일본 잡지 협회 〈잡지 애독 월간 2013〉 이미지 캐릭터 (2013년 7월 21일 ~ 8월 20일)
출연 > WEB

nicola© (2009년 4월 10일 ~ 2010년 2월 26일, goomo) - 부정기 출연
준코의 수첩 (2012년 4월 13일 ~ 6월 18일, YouTube) - 주연·미즈키 리나 역
출연 > 라디오

SCHOOL OF LOCK! 〈GIRLS LOCKS!〉 (2012년 4월 23일 ~ 2015년 9월, TOKYO FM) - 제4주째 퍼스낼리티
출연 > PV

츄르 〈그 눈동자, 의미 심장〉 (2012년 2월 1일) - PV+CD 자켓
출연 > 그 외

제64회 NHK 홍백가합전 〈매일 PR! 홍백〉 (2013년 12월 1일 ~ 12월 31일, NHK) - 홍백 PR 대사
핫 로드×ZIP! 〈그녀가 사랑하는 25초 전〉 (2014년 7월 14일 ~ 8월 15일, 닛폰 TV)
서적 > 사진집

NHK 연속 TV 소설 아마짱 노넨 레나 featuring 아마노 아키 완전 보존판 (2013년 8월 27일, NHK 출판) ISBN 978-4-14-081611-0
노넨 레나 1st 포토 북 (2014년 7월 31일, 도쿄 뉴스 통신사) ISBN 978-4-08-780727-1
서적 > 캘린더

노넨 레나 2013년도 캘린더 (2012년 11월 7일, 트라이엑스)
노넨 레나 2014년도 캘린더 (2013년 11월 2일, 트라이엑스)
노넨 레나 2015년도 캘린더 (2014년 11월 1일, 트라이엑스)
서적 > 잡지

니콜라 (2006년 10월호 ~ 2010년 5월호, 신초샤) - 전속 모델
B.L.T. (2012년 6월호 ~ 2014년 1월호, 도쿄 뉴스 통신사) - 연재
서적 > 무크

Ne-net 2012 S/S STYLE BOOK / MOOK (2012년 3월 14일, 매거진 하우스) - 표지 ISBN 978-4-8387-8722-7
Ne-net 2012-2013 Autumn/Winter Collection (2012년 8월 30일, 쇼덴샤)
Ne-net 2013 Spring/Summer Collection (2013년 3월 6일, 쇼덴샤)
Ne-net 2013-2014 Autumn/Winter Collection (2013년 8월 29일, 쇼덴샤)
수상

2006년
제10회 니콜라 독자 모델 오디션 그랑프리
2012년
제37회 호치 영화상 신인상 (《까마귀의 엄지 손가락》)
2013년
도쿄 드라마 어워드 2013 주연 여우상 (《아마짱》)
제26회 쇼가쿠칸 DIME 트렌드 대상·화제의 인물상
제78회 더 텔레비전 드라마 아카데미상 주연 여우상 (《아마짱》)
2014년
제38회 엘란도르상 신인상
제22회 하시다상 신인상 (《아마짱》)
제17회 닛칸 스포츠 드라마 그랑프리 주연 여우상 (《아마짱》)
제6회 TAMA 영화상 최우수 신진 여우상 (《핫 로드》)
제27회 닛칸 스포츠 영화대상 신인상 (《핫 로드》)
제38회 일본 아카데미상 신인 배우상 (《핫 로드》)
제31회 아사쿠사 연예대상 신인상
숨피

숨피(영어: Soompi)는 한국 문화, 주로 K-pop에 대해 다루는 영어 웹사이트이다. 1998년 한국계 미국인 웹 개발자 수잔 강(Susan Kang)이 설립하였으며, 현재 인터넷 상에서 가장 활성화된 케이팝 커뮤니티 중 하나이다.
2011년부터는 대한민국의 연예 기획사들과의 협업을 통해 대한민국내 아티스트와 엔터테인먼트 콘텐츠를 전세계에 소개하고 있다. 2015년 8월 19일부터는 미국의 글로벌 TV 사이트 비키가 숨피를 운영한다.
숨피 어워즈

숨피 팬들을 대상으로 부문별로 나뉘어 투표를 통해 가장 많은 득표를 얻은 스타가 선정되는 방식의 시상식이다. 2017년 연초에 진행된 숨피 어워즈는 1억건 이상의 투표를 얻었고, 관련 해시태그는 트위터에서 8시간 연속 전 세계 실시간 트렌드를 기록했다.
같이 보기

Allkpop
Kpopmap
A/UX

| --- | --- |
개발자: 애플
OS 계열: 유닉스 시스템 V
소스 형태: 클로즈드 소스
최신 버전: 3.1.1 / 1995년
커널: 모노리식 커널
라이선스: 상용 소프트웨어
A/UX (Apple Unix에서 따옴)는 애플이 몇몇 매킨토시 기종을 위해 만든 유닉스 계열 운영 체제이다. 최근 출시된 A/UX는 매킨토시 II. 매킨토시 쿼드라. 매킨토시 센트리스 시리즈 및 매킨토시 SE/30에서 작동된다. A/UX는 1988년 처음으로 출시되었다. A/UX는 FPU와 메모리 관리 장치를 포함하는 모토로라 68k 프로세서를 요구한다. 유닉스 시스템 V 릴리즈 2.2에 기반해 있으며 시스템 V 릴리즈 3 및 4, BSD 버전 4.2 및 4.3의 몇가지 기능도 포함하고 있다.
기능

A/UX 3.x는 매킨토시랑 아주 흡사한 그래픽 사용자 인터페이스를 제공한다. A/UX의 파인더는 시스템 7에 있는 파인더랑 아주 같은 버전은 아니지만. 유닉스 프로세스에서 작동하고 커널 및 파일 시스템과 소통할 수 있게 구성되었다. 또한 A/UX는 CommandShell이라는 터미널 프로그램을 제공했다. 이 프로그램은 맥 OS에서는 절대 없었던. 유닉스 시스템용 커맨드 라인 인터페이스를 사용할 수 있다. X 윈도 시스템 서버 애플리케이션 MacX는 파인더에서 바로 X 윈도 시스템 애플리케이션을 로딩할 수 있는 터미널 프로그램이다. 또한 사용자는 풀 X11R4 세션을 파인더 없이 실행할 수 있다.
호환 레이어를 이용해서, A/UX는 매킨토시 시스템 7.0.1, 유닉스, 및 하이브리드 애플리케이션을 구동할 수 있다. 하이브리드 애플리케이션은 매킨토시 및 유닉스 시스템의 기능을 모두 사용한다.
A/UX는 커맨도라는 유틸리티를 탑재하고 있다. 이 프로그램은 유닉스 커맨드를 사용할 수 있게 해주는 도구다. 파인더에서 유닉스 실행 파일을 오픈하면 파일을 유닉스 커맨드 라인으로 여는 옵션을 선택할 수 있다.
A/UX 사용자들은 대부분의 A/UX의 응용 프로그램을 "재규박스"라는 NASA의 서버에서 받았다. 재규박스의 관리자는 A/UX FAQ의 작성자이기도 하다. 재규박스는 현재 닫혔지만 몇몇 미러는 아직도 운영되고 있다.
사라짐

마지막 A/UX 버전인 3.1.1은 1995년 릴리즈되었다. A/UX는 모토로라 68000 프로세서에 FPU 및 메모리 관리 유닛을 탑재한 매킨토시에서만 작동되었다. A/UX 4.0이 파워PC용으로 포팅 될 것이라는 루머는 있었지만. 애플은 한번도 A/UX를 파워PC 프로세서용으로 포팅 한 적이 없었다. 애플은 1996년 A/UX 개발을 중단하고. 애플 네트워크 서버에 IBM의 AIX 운영 체제를 크게 편집한 버전을 사용하게 된다. 스티브 잡스가 애플로 돌아온 이후, 새로운 유닉스 운영 체제가 맥 OS X 안에 들어가게 되는데. A/UX와 거의 관계가 없고, 대부분 BSD 기반 NeXTSTEP의 영향을 받았다.
몇몇 독립된 서버들이 아직도 A/UX를 구동하고 있기는 하지만. A/UX를 구동하는 컴퓨터는 현재 거의 사라졌다.
같이 보기

MacOS
MkLinux
조나 존스

| 조나 존스 Jonah Jones |
| --- | --- |
본명: Robert Elliott Jones
출생: 1909년 12월 31일 켄터키주
사망: 2000년 4월 29일
성별: 남성
국적: 미국
경력: 윌리스 브라이언트 악단, 지미 랜스포드 악단, 프레쳐 헨더슨 악단, 캡 캘로웨이 악단
직업: 트럼펫 연주자
1947년
조나 존스(Jonah Jones, 본명: Robert Elliott Jones, 1909년 12월 31일 - 2000년 4월 29일)는 재즈계에서 활약한 사람으로 파퓰러한 댄스 음악에서도 인기가 높은 트럼펫 주자이다. 켄터키주 태생으로 1929년에 윌리스 브라이언트 악단에 참가하였다. 지미 랜스포드, 프레쳐 헨더슨, 캡 캘로웨이 악단 등을 거쳐 독립하였다. 1957년에 4중주단을 이끌고 뉴욕의 클럽에서 활약하였다. 뮤트(弱音器)를 단 경쾌한 연주를 뮤테드 재즈의 대스타가 되어 인기가 높았다.
이른 여름, 슈퍼맨

| 이른 여름, 슈퍼맨 |
| --- | --- |
감독: 유상곤
각본: 이강욱, 전일룡, 유상곤
촬영: 박성훈
편집: 박종락, 유상곤
음악: 양정우, 조용화
시간: 15분
국가:  대한민국
언어: 한국어
"이른 여름, 슈퍼맨"은 2001년에 제작한 대한민국의 영화이다.
캐스팅

우혜빈
고창석 : 슈퍼맨 역
이정은 : 맛사지남 역
타이거 JK

| 타이거 JK  |
| --- | --- |
2018년 AK플라자 분당점에서의 드렁큰타이거 팬싸인회
기본 정보
본명: Jaykay Seo
예명: 타이거 JK(Tiger JK)
출생: 1974년 7월 29일(1974-07-29)(50세) 대한민국 서울특별시
성별: 남성
국적:  미국
직업: 래퍼, 작사가, 작곡가, 프로듀서
장르: 랩, 힙합
활동 시기: 1995년 ~
배우자: 윤미래(결혼 2007년)
가족: 아버지 서병후, 아들 서조단
소속사: Feel Ghood Muzik
관련 활동: 드렁큰 타이거 무브먼트 MFBTY
웹사이트: 필굿뮤직   타이거밤
타이거 JK(Tiger JK, 본명: Jaykay Seo, 한국명: 서정권(徐廷權), 1974년 7월 29일 ~ )는 한국계 미국인 래퍼이며, 드렁큰 타이거의 전 멤버이다. 현재는 MFBTY의 멤버이다.
배경 > 활동 이전

타이거 JK는 1974년 7월 29일, 서울에서 평론가인 아버지 서병후와 와일드캐츠의 리더였던 어머니 김성애 사이에서 태어났다. 초등학교 때 아버지를 따라 미국으로 이민을 가지만, 아버지의 권유로 로스앤젤레스로 가던 가족과는 홀로 떨어져 마이애미로 가 태권도 도장을 운영하던 삼촌 아래서 자랐다. 이후 로스앤젤레스로 돌아와 베벌리힐스 고등학교를 다녔다. 1992년, 자신이 존경했던 힙합 그룹 N.W.A의 멤버인 아이스 큐브가 해체 후 솔로 활동을 하면서 "Black Korea"라는 곡을 통해 한인에 대한 곡을 발표하였다. 이에 타이거 JK는 역사시간에 논문과 음악에 대한 반박하는 랩을 하였는데 교내에서 상을 받았고 이어 그에 관련된 소문이 커져 힙합 페스티벌에 초청되었다. 힙합 페스티벌에 초청된 타이거 JK는 "Call Me Tiger"를 통해 한인 비하에 대해 반박하였고 즉흥 랩 부문에서 수상하였다. 이어 《쟈니윤 쇼》에 출연하여 한국에서도 주목을 받았고 3년 뒤인 1995년, 오아시스 엔터테인먼트의 도움을 받아 자신의 친구인 DJ 샤인, 스크램과 함께 한국으로 돌아와 자신의 솔로 음반 Enter the Tiger를 발매하지만, 당시 힙합에 대한 선입견과 인종 차별, 서태지와 아이들의 〈컴백홈〉의 큰 인기 등으로 인해 SBS의 《점프챔프》 출연 한 번으로 끝난 채 실패하고 말았고 타이거 JK는 미국으로 되돌아 갔다. 1997년, 한 동호회에 의해 다시 한국에 초청되었고 초청에 응한 타이거 JK는 여러 차례 길거리 공연 및 클럽 공연을 시작하면서 다시 미국으로 돌아가 1998년, DJ 샤인과 함께 드렁큰 타이거를 결성하며 본격적인 활동을 준비하기 시작하였다.
배경 > 데뷔 이후

드렁큰 타이거  문서를 참고하십시오.
드렁큰 타이거(Drunken Tiger)는 1999년 2월, 1집 《이어 오브 더 타이거》(Year of The Tiger)를 발매하며 힙합 페스티벌에 만난 친구 DJ 샤인과 함께 본격적인 활동을 시작하였다. 같은 해 3월에는 힙합 컴필레이션 음반 《1999년 대한민국》에 김진표, 업타운, 허니 패밀리 등과 함께 참여하여 발매하였고, 5월에는 드림콘서트에 참여하였다.
드렁큰 타이거 5집 이후 DJ 샤인이 드렁큰 타이거에서 탈퇴하여 타이거 JK는 혼자서 드렁큰 타이거로 활동하기 시작하였다. 2006년부터는 척수염에 걸려 가수 활동에 어려움을 겪었다. 2007년 가수 겸 래퍼 윤미래와 결혼하였고, 2008년에 아들 조단을 얻었다. 2001년부터 두 사람이 만나 결혼하기 전까지 윤미래와의 관계는 외부에 알려지지 않았는데 두 사람이 관계가 외부에 알려지는 것을 원치 않아 주위에서 철저히 함구한 것으로 알려졌다.
2013년에는 윤미래, 비지와 함께 프로젝트 그룹 MFBTY를 결성하여 활동하였으며, 2014년에는 윤미래와 함께 정글 엔터테인먼트에서 독립하여 필굿뮤직을 설립하였다. 2016년에 도끼와 함께 굿 라이프 크루를 결성하였으며, 슈퍼비, 면도, 주노플로가 참여하였다. 2017년 1월에는 드렁큰 타이거의 마지막 앨범을 준비하고 있다고 밝혔으나 가수로서의 은퇴는 아니며 필굿뮤직의 수장이자 MFBTY의 멤버로서 활동을 지속할 것이라고 밝혔다. 2017년 4월에는 《Show Me The Money 6》에 필굿뮤직의 소속된 비지와 함께 프로듀서로 출연하는 것이 확정되었다.
2018년 11월, 마지막 정규 앨범을 끝으로 드렁큰 타이거의 활동이 20년 만에 마무리되었다.
학력

베벌리힐스 고등학교
UCLA 창작문예학
음반 목록 > 정규 앨범 > 솔로

| 앨범 # | 앨범명 | 발매일 | 비고 |
| --- | --- | --- | --- |
| 1 | Enter The Tiger | 1995년 7월 |  |
음반 목록 > 정규 앨범 > 드렁큰 타이거

| 앨범 # | 앨범명 | 발매일 | 비고 |
| --- | --- | --- | --- |
| 1 | Year of The Tiger | 1999년 2월 |  |
| 2 | 위대한 탄생 | 2000년 4월 |  |
| 3 | The Legend of... | 2001년 3월 |  |
| 4 | 뿌리 | 2003년 2월 |  |
| 5 | 하나하면 너와 나 | 2004년 8월 |  |
| 6 | 1945 해방 | 2005년 8월 |  |
| 7 | Sky Is The Limit | 2007년 9월 |  |
| 8 | Feel gHood Muzik | 2009년 6월 |  |
| 9 | 살자 (The Cure) | 2013년 9월 |  |
| 10 | Drunken Tiger X | 2018년 11월 |  |
음반 외 활동 > TV 드라마

2009년 MBC 일일시트콤 《지붕뚫고 하이킥!》 (특별 출연)
2012년 SBS 금요시트콤 《도롱뇽도사와 그림자 조작단》 - 타이거 역
2018년 JTBC 금토드라마 《내 아이디는 강남미인》 (특별 출연)
음반 외 활동 > 영화

《세계일주》 (2015년) - 필홍 역
음반 외 활동 > 예능

2011년 SBS 《런닝맨》 게스트 (59회)
2015년 tvN 《SNL 코리아 6》
2016년 Mnet 《위키드》
2017년 Mnet 《Show Me The Money 6》
2017년 tvN 《대화가 필요한 개냥》
2019년 KBS 2TV 《사장님 귀는 당나귀 귀》
2020년 MBN 《보이스 퀸》
음반 외 활동 > 교양

2016년 TV조선 《공감다큐 해바라기》 1회
수상 경력

서울가요대상 - 힙합상, 최고 앨범상
골든 디스크 - 본상, 남자 가수상
Mnet 아시안 뮤직 어워드 - 남자 가수상
제4회 에이 어워즈 - 패션 부문 상
홍보대사

2016년 5월 대한사회복지회 홍보대사 위촉