shopkeeper/korean_wiki_content_only_120125 huggingface dataset:
관계중심적 증상(relationship-centered symptom)은 관계의 "올바름(rightness)"을 중심으로 돌아가는 사고를 말한다. 예를 들어 자신의 느낌을 의심하거나 파트너의 느낌의 진심을 의심하는 것이 있다. 이들은 자신이 파트너를 사랑하는지, 관계가 "옳은(right)" 관계인지, 파트너가 자신을 정말로 사랑하는지를 지속적으로 의심한다. 종종 환자들은 이런 의심이 비합리적임을 알고 자기 자신이나 파트너로부터 안심시키기(reassurance)를 요구할 것이다. 이는 환자가 관계에 남을 것인지 아니면 떠날 것인지를 선택하면서 고통을 야기할 수 있다.
파트너중심 증상.
파트너중심 증상(partner-focused symptom)은 파트너의 결함이 인지되었을 때에 발생하는 강박사고를 말한다. 이들이 인지하는 파트너의 결함은 외모, 사회성, 지능, 도덕성과 같은 많은 요소와 연관될 수 있다. 파트너중심 증상은 부모아이 관계에서도 나타날 수 있다. 이때는 부모가 아이의 결함을 인지하면서 강박사고를 갖는다.
두 유형의 증상은 침투적 사고(intrusive thought), 침투적 이미지, 대인관계에 관한 욕동(urge)으로 나타날 수 있다. 이들은 대인관계에 관한 자신만의 가치와 주관적 경험을 부정하기에, 증상으로 인한 많은 고통이 생긴다. 이들은 죄책감과 수치심이 든다는 것을 언급하며 이 증상을 받아들이지 못하고 원하지도 않는다고 말한다. 이들은 중대한 고통을 다루기 위하여 강박행동을 하기도 한다. 강박행동은 안심시키기 행동을 지속적으로 찾기, 자기 느낌을 과도하게 의식하기, 파트너를 다른 잠재적 파트너와 비교하기, 파트너와 있을 때 행복한 모습을 겉으로 드러내기가 있다.
최근 연구에서는 부모아이 관계에서 파트너중심 증상은 심각한 부모의 스트레스와 우울을 야기할 수 있다고 주장하였다. 게다가 이는 아이에게 불안, 우울, 강박장애 증상을 촉발할 수 있다.
《러브 미》는 2025년 12월 19일부터 방송 예정인 JTBC 금요 드라마다.
전주 얼티밋 페스티벌(Jeonju Ultimate Music Festival)은 대한민국 전라북도 전주시에서 매년 개최되는 대형 야외 음악 축제이다. ‘점프(JUMP)’라는 별칭으로 불리며, 관객·무대·축제의 도약을 상징하는 의미를 담고 있다. 2016년 첫 개최 이후 인디, 록, 힙합 등 다양한 장르의 국내외 아티스트가 참여하며 전주시를 대표하는 종합 음악 행사로 자리 잡았다.
전주 얼티밋 뮤직 페스티벌은 2016년 처음 개최되었으며, 2025년 기준 10회째를 맞는다. 축제는 매년 3일간 진행되며 다양한 장르의 공연 프로그램과 부대 행사로 구성된다.
행사 운영 시간은 일반적으로 15:00부터 23:00까지이며, 주요 아티스트가 하루 공연의 마지막 순서를 장식한다. 늦은 시간까지 이어지는 공연 특성상 지역 단체나 팬들이 단체 버스를 대절해 참여하는 사례도 있다.
----축제는 두 개의 메인 스테이지를 중심으로 운영되며, 두 무대는 약 30분 간격으로 공연을 진행한다. 이를 통해 관객은 서로 다른 장르와 아티스트의 공연을 선택적으로 관람할 수 있다.
안전 관리를 위해 일일 입장 인원은 약 1만 명으로 제한된다. 티켓 가격은 1일권 기준 약 10만 원대이며, 3일권 구매 시 할인 혜택이 제공된다. 전주시민 및 전주권 대학생에게는 지역 할인 제도가 운영되어 지역 기반 축제로서의 접근성을 높이고 있다.
행복의 발원지(Origin of Happiness)를 추구하는 전북대학교 생활관은 1965년 6월 8일에 준공된 황성택 목사 기념관을 효시로, 1984년부터 신축을 시작하여 평화관, 대동관을 개관 운영하고 있으며, 2009년 민자유치 사업(BTL)에 의한 참빛관(5개동) 및 혜민관(2개동) 그리고 2010년 새빛관(2개동)을 포함하여 총 11개 동을 개관하여 운영하고 있다. 2004년 3월에 「기숙사」의 명칭을 「생활관」으로 변경하여, 단지 숙식하는 개념의 기능에서 벗어나 또 하나의 교육 공간과 쾌적한 환경으로 발전하고 있다.
혜민관(의과대학의 특수성을 감안한 Medical Complex).
의과대학 학생들이 쾌적하고 안락한 환경에서 학업과 학교생활을 할 수 있도록 총면적 9,227㎡, 지상6층, 지하1층 2개동 규모의 학생 생활관인 혜민관이 있다. 혜민관은 의학전문대학원 및 전북 대학교 병원과 근접 거리에 위치하여 학생들의 학교 접근성을 높였고, 건지산 산책로 입구에 위치 하여 학습과 휴식에 이상적인 조건을 갖추고 있다.
장애인 전용 3실, 1인실 12실, 2인실 244실로 503명을 수용할 수 있으며, 체력 단련실, 편의점, 세탁실, 독서실, 컴퓨터실, 세미나실, 휴게실, 회의실 등의 다양한 편의시설을 갖추고 있다.
2. 건물 구성.
혜민관은 1관과 2관 등으로 구성되어 있으며, 각 건물에는 엘리베이터가 1대씩 설치되어 있다.
2.2. 호실 내부.
기본적으로 2인실과 1인실로 운영되나, 인원 배정 현황에 따라 2인실을 1인이 사용하는 경우도 있다.
3. 운영 및 규정.
3.1. 입사 및 퇴사.
입주 시에는 본인 확인을 위한 지문 등록과 결핵 진단서 제출이 필수이다. 중도 퇴관 시에는 별도의 환불 규정에 따라 관비가 반환된다. 식사는 별도로 제공되지 않는다(식사 제공 X).
3.3. 상벌점 제도.
생활관 규칙 위반 시 벌점이 부과되며, 학기당 누적 벌점이 15점 이상일 경우 퇴관 조치된다(2학기 연장 거주자의 경우 상한선 20점). 상점 프로그램을 통해 벌점을 만회할 수 있다.
이종호(Lee jong ho, 1962년 7월 20일~)는 대한민국의 안과 전문의이자 의학박사로, 시력교정술 및 노안·백내장 수술 분야에서 선도적인 역할을 해온 의료인이다.
밝은세상안과의원(서울·부산)의 설립자이자 대표원장이며, 국내 라식, 라섹, 스마일라식, ICL 렌즈삽입술, 노안교정술 등 오늘날 국내에서 시행되고 있는 주요 시력교정술의 도입과 정착에 많은 역할을 했다.
“환자의 눈을 내 가족의 눈이라 생각하고 진료한다”는 이종호 원장은, 수술 전 철저한 검사·분석을 통해 환자 개개인의 눈 상태와 라이프스타일에 최적화된 수술법을 제안하는 것을 중요시한다.
또한, 단순히 기술 도입에 만족하지 않고 끊임없이 연구하고 이상을 추구하는 것이 최고의 의사로서의 자세라고 강조한다.
듀이 십진분류법(DDC)은 전체 지식 세계를 다루는 10개의 주요 범주를 중심으로 구성된다. 각 주요 범주는 다시 10개의 계층적 구분으로 세분되며, 각 구분은 점점 더 구체화되는 10개의 구분으로 이루어진다. 도서 분류법 체계로서 DDC는 "주제가 아닌 학문 분야별로 배열"되므로, 옷과 같은 주제는 개념적 틀 내에서 학문적 취급(155.95에서 옷의 심리적 영향, 391에서 옷과 관련된 세관, 746.92에서 옷의 패션 디자인)에 따라 분류된다. 아래 목록은 10개의 주요 범주, 100개 구분, 1000개 섹션을 제시한다.
텔레겐 정리(Tellegen's theorem)는 네트워크 이론에서 가장 강력한 정리 중 하나이다. 네트워크 이론의 대부분의 에너지 분배 정리와 극점 원리는 이 정리에서 파생될 수 있다. 이 정리는 1952년 베르나르드 텔레겐에 의해 발표되었다. 근본적으로 텔레겐 정리는 전기 키르히호프의 전기회로 법칙을 만족하는 크기들 간의 간단한 관계를 제공한다.
텔레겐 정리는 다양한 네트워크 시스템에 적용할 수 있다. 시스템의 기본 가정은 세기 성질과 크기 성질의 흐름 보존(키르히호프의 전류 법칙, KCL)과 네트워크 노드에서의 전위의 고유성(키르히호프의 전압 법칙, KVL)이다. 텔레겐 정리는 전기 회로, 망생물학, 대사망, 파이프라인 수송 네트워크, 화학적 과정 네트워크를 포함한 복잡계 네트워크 시스템을 분석하는 데 유용한 도구를 제공한다.
formula_1개의 가지와 formula_2개의 노드를 가진 임의의 집중 상수 모델 네트워크를 고려해보자. 전기 네트워크에서 가지는 2단자 부품이고 노드는 상호 연결 지점이다. 각 가지에 formula_3에 대해 임의로 가지 전위차 formula_4와 가지 전류 formula_5를 할당하고, 임의로 선택된 관련 기준 방향에 대해 측정된다고 가정한다. 만약 가지 전위차 formula_6가 KVL에 의해 부과된 모든 제약 조건을 만족하고 가지 전류 formula_7가 KCL에 의해 부과된 모든 제약 조건을 만족한다면,
텔레겐 정리는 매우 일반적이다. 선형 또는 비선형, 수동 또는 능동, 시간 가변 또는 시간 불변의 모든 요소를 포함하는 모든 집중 네트워크에 유효하다. formula_4와 formula_5가 전위차 세트와 가지 전류 세트에 대한 선형 연산(각각)일 때 일반성은 확장되는데, 이는 선형 연산이 KVL과 KCL에 영향을 미치지 않기 때문이다. 예를 들어, 선형 연산은 평균 또는 라플라스 변환일 수 있다. 더 일반적으로, KVL을 보존하는 연산자를 키르히호프 전압 연산자라고 부르고, KCL을 보존하는 연산자를 키르히호프 전류 연산자라고 부르며, 둘 다 보존하는 연산자를 단순히 키르히호프 연산자라고 부른다. 이러한 연산자는 텔레겐 정리가 성립하기 위해 반드시 선형일 필요는 없다.
전류 세트는 KVL과 KCL이 모든 순간에 참이므로 전위차 세트와 다른 시간에 샘플링될 수도 있다. 또 다른 확장은 전위차 세트 formula_4가 한 네트워크에서 온 것이고 전류 세트 formula_5가 완전히 다른 네트워크에서 온 경우인데, 두 네트워크가 동일한 토폴로지(동일한 인접 행렬)를 가지는 한 텔레겐 정리는 참으로 유지된다. 텔레겐 정리의 이러한 확장은 2포트 네트워크와 관련된 많은 정리로 이어진다.
간결한 증명을 제공하기 위해 몇 가지 필요한 네트워크 정의를 도입해야 한다.
인접 행렬:
formula_13 행렬 formula_14는 행렬 요소 formula_15에 대해 노드-가지 인접 행렬이라고 불린다.
환경을 나타내고 모든 동적 노드와 터미널에 연결되는 기준 또는 기준 노드 formula_17가 도입된다. 참조 노드 formula_18의 요소 formula_19를 포함하는 행이 제거된 formula_20 행렬 formula_21는 축소된 인접 행렬이라고 불린다.
벡터-행렬 형식의 보존 법칙(KCL):
벡터-행렬 형식의 전위 고유성 조건(KVL):
여기서 formula_24는 기준 노드 formula_18에 대한 노드들의 절대 전위이다.
KVL을 사용하면:
왜냐하면 KCL에 의해 formula_27이기 때문이다. 따라서:
다양한 물리 시스템에 대한 네트워크 아날로그가 구축되었으며, 동적 거동을 분석하는 데 매우 유용하다는 것이 입증되었다. 네트워크 이론과 텔레겐 정리의 고전적인 응용 분야는 전기 회로 이론이다. 주로 신호 처리 응용 분야에서 필터를 설계하는 데 사용된다.
텔레겐 정리의 더 최근 응용은 화학 및 생물학적 과정 분야이다. 전기 회로에 대한 가정(키르히호프 법칙)은 비가역적 열역학 법칙을 따르는 동적 시스템에 대해 일반화된다. 반응 네트워크(반응 메커니즘, 대사 네트워크)의 토폴로지와 구조는 텔레겐 정리를 사용하여 분석할 수 있다.
텔레겐 정리의 또 다른 응용은 화학 공장이나 석유 생산 시스템과 같은 복잡한 공정 시스템의 안정성과 최적성을 결정하는 것이다. 텔레겐 정리는 공정 노드, 터미널, 흐름 연결을 사용하고 광범위한 양의 생산 또는 파괴를 위한 흡수원과 공급원을 허용하여 공정 시스템에 대해 공식화할 수 있다.
공정 시스템에 대한 텔레겐 정리 공식화:
여기서 formula_30는 생산 항, formula_31는 터미널 연결, formula_32는 광범위한 변수에 대한 동적 저장 항이다.
마이크로소프트 운영체제에서 GUID 파티션 테이블 (GPT) 레이아웃으로 파티션된 기본 디스크를 사용할 때, 기본 데이터 파티션(basic data partition, BDP)은 GUID 로 식별되는 모든 파티션이다.
마이크로소프트에 따르면, 기본 데이터 파티션은 마스터 부트 레코드 (MBR) 파티션 타입 (FAT16B), (NTFS 또는 ExFAT), 그리고 (FAT32)와 동일하다. 실제로는 (FAT12), (FAT16), (논리 블록 주소 지정을 사용하는 FAT32), 그리고 (논리 블록 주소 지정을 사용하는 FAT16) 타입과도 동일하다.
기본 데이터 파티션은 어떤 파일 시스템으로든 포맷될 수 있지만, 일반적으로 BDP는 NTFS, ExFAT 또는 FAT32 파일 시스템으로 포맷된다. BDP에 어떤 파일 시스템이 포함되어 있는지 프로그래밍 방식으로 확인하려면 마이크로소프트는 BDP의 볼륨 부트 레코드에 포함된 BIOS 파라미터 블록을 검사해야 한다고 명시하고 있다.
마이크로소프트 운영체제가 GPT로 파티션된 기본 디스크를 동적 디스크로 변환할 때, 모든 BDP는 단일 논리 디스크 관리자 데이터 파티션으로 결합되고 변환되며 GUID 로 식별된다. 이는 MBR 파티션 디스크에서 파티션 타입 , , , , , , 및 를 파티션 타입 로 변환하는 것과 유사하다.
리눅스는 리눅스 전용 데이터 파티션 GUID 가 도입되기 전까지 윈도우와 동일한 기본 데이터 파티션 GUID를 사용했다.
보안 서술자(security descriptor)는 보호 가능한 윈도우 객체 즉 고유한 이름으로 식별할 수 있는 객체에 대한 보안 정보의 데이터 구조이다. 보안 서술자는 파일, 폴더, 공유, 레지스트리 키, 프로세스, 스레드, 명명된 파이프, 서비스, 작업 객체 및 기타 리소스를 포함하여 모든 명명된 객체와 연결할 수 있다.
보안 서술자는 사용자 또는 그룹과 같은 수탁자에 대한 접근을 허용하거나 거부하는 접근 제어 엔트리(ACE)를 포함하는 재량적 접근 제어 목록(DACL)을 포함한다. 또한 객체 접근 감사를 제어하는 시스템 접근 제어 목록(SACL)을 포함한다. ACE는 객체에 명시적으로 적용되거나 부모 객체로부터 상속될 수 있다. ACL에서 ACE의 순서는 중요하며, 접근 허용 ACE보다 접근 거부 ACE가 더 높은 순서로 나타난다. 보안 서술자에는 객체 소유자도 포함된다.
필수 무결성 제어는 보안 서술자의 새로운 유형의 ACE를 통해 구현된다.
파일 및 폴더 권한은 파일 탐색기, WMI, Cacls, XCacls, ICacls, SubInACL과 같은 명령줄 도구, 프리웨어 Win32 콘솔 FILEACL, 자유 소프트웨어 유틸리티 SetACL 및 기타 유틸리티를 포함한 다양한 도구로 편집할 수 있다. 보안 서술자를 편집하려면 사용자에게 객체에 대한 WRITE_DAC 권한이 필요하며, 이 권한은 일반적으로 기본적으로 관리자 및 객체 소유자에게 위임된다.
NTFS 권한.
다음 표는 NTFS 권한과 그 역할을 요약한 것이다(개별 행). 이 표는 다음 정보를 보여준다.
대부분의 권한은 자명하지만, 다음은 예외이다.
C++에서 클래스는 codice_1, codice_2 또는 codice_3 키워드 중 하나로 선언된 사용자 정의 자료형 또는 자료 구조이며 (처음 두 개는 비-유니온 클래스라고 총칭함) 데이터와 함수(또한 멤버 변수와 멤버 함수라고도 함)를 멤버로 가지며, 이들의 접근은 private, protected 또는 public 세 가지 접근 지정자에 의해 관리된다. 기본적으로 codice_1 키워드로 선언된 C++ 클래스의 멤버에 대한 접근은 private이다. private 멤버는 클래스 외부에서 접근할 수 없으며, 클래스의 멤버 함수를 통해서만 접근할 수 있다. public 멤버는 클래스에 대한 인터페이스를 형성하며 클래스 외부에서 접근할 수 있다.
클래스 자료형의 인스턴스는 객체로 알려져 있으며, 프로그래머가 정의한 멤버 변수, 상수, 멤버 함수, 오버로드된 연산자를 포함할 수 있다.
C++에서 codice_2와 codice_1의 차이.
C++에서 codice_1 키워드로 정의된 클래스는 기본적으로 private 멤버와 기본 클래스를 가진다. 구조체는 codice_2 키워드로 정의된 클래스이다.&lt;ref name="C++03 9/4"&gt;ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §9 Classes [class] para. 4&lt;/ref&gt; 그 멤버와 기본 클래스는 기본적으로 public이다. 실제로는 구조체는 일반적으로 함수가 없는 데이터에 사용된다. 클래스/구조체로부터 구조체를 파생시킬 때, 기본 클래스/구조체에 대한 기본 접근 지정자는 public이다. 그리고 클래스를 파생시킬 때는 기본 접근 지정자는 private이다.
집합 클래스.
집합 클래스는 사용자 선언 생성자, private 또는 protected 비정적 데이터 멤버, 기본 클래스, 가상 함수가 없는 클래스이다.&lt;ref name="C++03 8.5.1/1"&gt;ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §8.5.1 Aggregates [dcl.init.aggr] para. 1&lt;/ref&gt; 이러한 클래스는 중괄호로 묶인 쉼표로 구분된 초기화 구문 목록으로 초기화할 수 있다.&lt;ref name="C++03 8.5.1/2"&gt;ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §8.5.1 Aggregates [dcl.init.aggr] para. 2&lt;/ref&gt; 다음 코드는 C와 C++ 모두에서 동일한 의미를 가진다.
struct D {
C c;
C c = {1, 2.0};
D d = {10, 20.0, {1, 2.0}};
POD-구조체.
POD-구조체 (Plain Old Data Structure)는 비-POD-구조체, 비-POD-유니온(또는 그러한 유형의 배열) 또는 참조 유형의 비정적 데이터 멤버가 없고, 사용자 정의 대입 연산자 및 사용자 정의 소멸자가 없는 비-유니온 집합 클래스이다. POD-구조체는 C++에서 C의 codice_2에 해당한다고 할 수 있다. 대부분의 경우, POD-구조체는 C에서 선언된 해당 구조체와 동일한 메모리 레이아웃을 가진다. 이러한 이유로 POD-구조체는 때때로 구어적으로 "C-스타일 구조체"라고 불린다.
선언 및 사용법.
C++ 클래스는 자체 멤버를 가진다. 이 멤버에는 변수(다른 구조체 및 클래스 포함), 멤버 함수로 알려진 함수(특정 식별자 또는 오버로드된 연산자), 생성자 및 소멸자가 포함된다. 멤버는 codice_10 및 codice_11 접근 지정자를 사용하여 공개적으로 또는 비공개적으로 접근 가능하도록 선언된다. 지정자 다음에 나오는 모든 멤버는 다른 지정자가 나올 때까지 해당 접근 권한을 가진다. 클래스 간에는 codice_12 지정자를 사용할 수 있는 상속도 있다.
this 키워드.
클래스가 자신을 참조할 수 있는 기능을 용이하게 하기 위해 C++은 모든 멤버 함수에 대해 codice_13 키워드를 구현한다. codice_13 키워드는 현재 객체에 대한 포인터 역할을 한다. 그 유형은 현재 객체에 대한 포인터이다.
codice_13 키워드는 클래스 자체가 반환 값인 멤버 함수에 특히 중요하다.
Complex&amp; operator+=(const Complex&amp; c) noexcept {
this-&gt;realPart += c.realPart;
this-&gt;imagPart += c.imagPart;
위에서 언급했듯이, codice_13는 포인터이므로 반환할 참조로 변환하려면 별표 (*)를 사용하는 것이 필요하다.
전역 및 지역 클래스.
모든 함수 외부에서 정의된 클래스는 전역 클래스이다. 객체가 프로그램의 어디에서든 생성될 수 있기 때문이다. 함수 본문 내에서 정의되면 지역 클래스이다. 해당 클래스의 객체는 함수 범위에 지역적이기 때문이다.
기본 선언 및 멤버 변수.
비-유니온 클래스는 codice_1 또는 codice_2 키워드로 선언된다. 멤버 선언은 이 선언 내에 위치한다.
위 정의들은 기능적으로 동일하다. 두 코드 모두 codice_19 유형의 객체가 두 개의 public 데이터 멤버, codice_20과 codice_21를 가지도록 정의한다. 닫는 중괄호 뒤의 쌍반점은 필수이다.
이 선언들 중 하나(둘 다 아님) 후에, codice_19은 다음과 같이 사용하여 codice_19 데이터 유형의 새로 정의된 변수를 생성할 수 있다.
struct Person {
Person a;
Person b;
std::println("{}: {}", a.name, a.age);
std::println("{}: {}", b.name, b.age);
위 코드를 실행하면 다음이 출력된다.
C++ 클래스의 중요한 특징은 멤버 함수이다. 각 자료형은 자체 내장 함수(멤버 함수라고 함)를 가질 수 있으며, 이 함수는 자료형의 모든(public 및 private) 멤버에 접근할 수 있다. 이러한 비정적 멤버 함수의 본문에서는 codice_13 키워드를 사용하여 함수가 호출된 객체를 참조할 수 있다. 이는 일반적으로 객체의 주소를 함수의 암시적 첫 번째 인수로 전달함으로써 구현된다. 위 codice_19 유형을 다시 예로 들어보자.
int age = 5;
// "name" and "age" are the member variables. The "this" keyword is an
// expression whose value is the address of the object for which the member
// was invoked. Its type is "const Person*", because the function is declared
// const.
void printData() const {
std::println("{}: {}", name, age);
위 예제에서 codice_26 메서드는 클래스 본문에 선언되어 있으며 클래스 이름 뒤에 codice_27를 붙여 한정함으로써 정의된다. codice_20과 codice_21는 모두 private(클래스의 기본값)이며 codice_26는 클래스 외부에서 사용하려면 public으로 선언되어야 한다.
멤버 함수 codice_26를 사용하면 출력은 다음으로 간소화될 수 있다.
a.printData();
b.printData();
여기서 위에서 codice_32와 codice_33는 송신자라고 불리며, codice_34 함수가 실행될 때 각자는 자신의 멤버 변수를 참조한다.
모듈이 도입되기 전(즉, 헤더를 사용하던 시점)에는 일반적으로 클래스 또는 구조체 선언(인터페이스라고 함)과 정의(구현이라고 함)를 별도의 단위로 분리했다. 사용자가 필요로 하는 인터페이스는 헤더 파일에 보관하고 구현은 소스 또는 컴파일된 형태로 별도로 보관했다.
C++ 표준은 비POD 클래스의 메모리 레이아웃을 지정하지 않는다. 예를 들어, 많은 인기 있는 C++ 컴파일러는 부모 클래스 필드와 자식 클래스 필드를 연결하여 단일 상속을 구현하지만, 이는 표준에서 요구하는 바가 아니다. 이러한 레이아웃 선택은 부모 클래스 유형에 대한 포인터를 통해 파생 클래스를 참조하는 것을 간단한 작업으로 만든다.
예를 들어 다음을 고려해 보자.
struct P {
struct C : public P {
codice_35가 가리키는 codice_36의 인스턴스는 메모리에서 다음과 같이 보일 수 있다.
┃P::x┃
codice_35가 가리키는 codice_38의 인스턴스는 다음과 같이 보일 수 있다.
┃P::x┃C::y┃
따라서 codice_36 객체의 필드를 조작하는 모든 코드는 codice_38의 필드 정의에 대해 아무것도 고려할 필요 없이 codice_38 객체 내부의 codice_36 필드를 조작할 수 있다. 어떠한 경우에도 올바르게 작성된 C++ 프로그램은 상속된 필드의 레이아웃에 대해 어떠한 가정도 하지 않아야 한다. static_cast 또는 dynamic_cast 형 변환 연산자를 사용하면 포인터가 한 유형에서 다른 유형으로 올바르게 변환되도록 보장한다.
다중 상속은 그렇게 간단하지 않다. 클래스 codice_43가 codice_36와 codice_38를 상속하는 경우, 두 부모의 필드가 어떤 순서로든 저장되어야 하지만, (최대) 하나의 부모 클래스만 파생 클래스의 시작 부분에 위치할 수 있다. 컴파일러가 포인터를 codice_43 유형에서 codice_36 또는 codice_38로 변환해야 할 때마다 컴파일러는 파생 클래스의 주소에서 기본 클래스 필드의 주소로 자동 변환을 제공한다 (일반적으로 이는 간단한 오프셋 계산이다).
다중 상속에 대한 자세한 내용은 가상 상속을 참조하세요.
codice_49 키워드는 클래스가 하위 클래스로 만들어지는 방식을 제한한다. 클래스의 하위 클래스는 부모 클래스에 의해 codice_49로 표시된 메서드를 재정의할 수 없도록 방지된다. final 클래스는 상속될 수 없다. 이를 통해 데비추얼라이제이션(가상화 제거), 즉 메서드 조회를 위해 vtable 사용을 제거하여 최종 클래스에서 메서드 호출을 인라인화할 수 있다.
// class 선언의 final은 클래스가 확장될 수 없음을 선언한다.
class Z final : public X, public Y {
// 메서드 시그니처의 final은 메서드가 더 이상 재정의될 수 없음을 선언한다.
void someOperation() override final {
// do something here
codice_49은 C++의 예약어가 아니라, 기존 코드베이스에서 'final' 식별자의 사용과 충돌하지 않도록 문맥 의존적 키워드로 정의된다.
오버로드된 연산자.
C++에서 codice_52와 같은 연산자는 프로그래머의 필요에 맞게 오버로드될 수 있다. 이러한 연산자를 오버로드 가능한 연산자라고 한다.
관례적으로 오버로드된 연산자는 내장 자료형(codice_53, codice_54 등)과 거의 동일하게 동작해야 하지만, 이는 필수 사항은 아니다. 프로그래머는 변수가 실제로 정수를 저장하는 codice_55라는 구조체를 선언할 수 있지만, codice_56를 호출하면 정수의 곱이 아닌 합이 반환될 수 있다.
struct Integer {
Integer() = default;
Integer(int j):
Integer operator*(const Integer&amp; k) const {
return Integer(i + k.i);
위 코드는 반환 값을 "구성"하기 위해 생성자를 사용했다. 더 명확한 표현을 위해 (컴파일러가 이 문장을 위의 동일한 문장으로 최적화할 수 없다면 프로그램 효율성이 저하될 수 있지만), 위 코드는 다음과 같이 다시 작성할 수 있다.
Integer m;
m.i = i + k.i;
프로그래머는 또한 codice_2 선언에 연산자의 프로토타입을 넣고 전역 범위에서 연산자의 함수를 정의할 수 있다.
Integer operator*(const Integer&amp; k) const;
Integer Integer::operator*(const Integer&amp; k) const {
return Integer(i * k.i);
위의 codice_58는 발신자의 자체 멤버 변수를 나타내고, codice_59는 인수 변수 codice_60의 멤버 변수를 나타낸다.
codice_61 키워드는 위 코드에 두 번 나타난다. 첫 번째 발생인 인수 codice_62는 인수 변수가 함수에 의해 변경되지 않음을 나타낸다. 선언 끝의 두 번째 발생은 컴파일러에게 함수 실행에 의해 발신자가 변경되지 않을 것을 약속한다.
codice_62에서 앰퍼샌드(&amp;)는 "참조에 의한 전달"을 의미한다. 함수가 호출될 때 변수 값 대신 변수에 대한 참조가 함수에 전달된다.
연산자의 결합성과 연산의 우선순위는 변경할 수 없다는 점에 유의해야 한다.
이항 오버로드 가능 연산자.
이항 연산자(두 개의 인수를 갖는 연산자)는 하나의 단일 인수를 호출하는 "식별자" 연산자(무엇인가)를 사용하여 함수를 선언함으로써 오버로드된다. 연산자의 왼쪽에 있는 변수는 발신자이고 오른쪽에 있는 변수는 인수이다.
Integer i = 1;
/* 이처럼 구조체 변수를 초기화할 수 있다.
마치 첫 번째 인수만 지정하여 생성자를 호출하는 것과 같다. */
Integer j = 3;
/* 변수 이름은 구조체의 멤버 변수 이름과 무관하다. */
Integer k = i * j;
std::println("{}", k.i);
'3'이 출력될 것이다.
다음은 이항 오버로드 가능 연산자 목록이다.
동일한 구조체 유형의 두 변수 사이의 '=' (대입) 연산자는 기본적으로 한 변수에서 다른 변수로 변수 전체 내용을 복사하도록 오버로드된다. 필요한 경우 다른 것으로 덮어쓸 수 있다.
연산자는 하나씩 오버로드해야 한다. 다시 말해, 어떤 오버로딩도 서로 관련되어 있지 않다. 예를 들어, codice_64가 codice_65의 반대인 것은 아니다.
단항 오버로드 가능 연산자.
위에서 명시된 일부 연산자는 왼쪽에 발신자, 오른쪽에 인수를 취하는 두 항을 가지지만, 일부 연산자는 발신자라는 하나의 인수만 가지며 "단항"이라고 불린다. 예를 들어 음수 부호(왼쪽에 아무것도 없을 때)와 "논리 NOT" (느낌표, codice_66)가 있다.
단항 연산자의 발신자는 연산자의 왼쪽 또는 오른쪽에 있을 수 있다. 다음은 단항 오버로드 가능 연산자 목록이다.
발신자가 오른쪽에 있는 단항 연산자의 오버로딩 구문은 다음과 같다.
발신자가 왼쪽에 있을 때 선언은 다음과 같다.
위의 codice_69는 오버로드될 연산자를 나타낸다. codice_70을 반환 값의 자료형(codice_53, codice_72, 구조체 등)으로 대체한다.
codice_53 매개변수는 본질적으로 아무 의미가 없으며, 발신자가 연산자의 왼쪽에 있음을 보여주는 관례일 뿐이다.
해당하는 경우 선언 끝에 codice_61 인수를 추가할 수 있다.
괄호 오버로딩.
C++ 클래스에서는 대괄호 codice_75와 소괄호 codice_76를 오버로드할 수 있다. 대괄호는 정확히 하나의 인수, 초기화 목록(C++11 이후), 또는 임의의 매개변수 팩(C++23 이후)을 포함해야 하며, 소괄호는 특정 개수의 인수 또는 인수를 포함하지 않을 수 있다.
다음 선언은 대괄호를 오버로드한다.
괄호 안의 내용은 codice_78 부분에 지정된다.
소괄호는 비슷한 방식으로 오버로드된다.
연산자 호출에서 괄호의 내용은 두 번째 괄호 안에 지정된다.
위에서 명시된 연산자 외에 화살표 연산자(codice_80), 별표 화살표(codice_81), codice_82 키워드, codice_83 키워드도 오버로드될 수 있다. 이 메모리 또는 포인터 관련 연산자들은 오버로드 후 메모리 할당 함수를 처리해야 한다. 대입(codice_84) 연산자처럼, 특별한 선언이 없으면 기본적으로 오버로드된다.
때때로 프로그래머는 변수가 선언될 때 기본값 또는 특정 값을 가지도록 원할 수 있다. 이는 생성자를 선언하여 수행할 수 있다.
Person::Person(string name, int age) {
this-&gt;name = name;
this-&gt;age = age;
아래 예와 같이 콜론을 사용하여 초기화 목록에서 멤버 변수를 초기화할 수 있다. 이는 위와는 달리 대입 연산자를 사용하는 것이 아니라 (생성자를 사용하여) 초기화하는 방식이다. 클래스 유형의 경우 직접 구성되기만 하면 되므로 더 효율적이다. 반면 대입의 경우 기본 생성자를 사용하여 먼저 초기화한 다음 다른 값을 대입해야 한다. 또한 일부 유형(참조 및 유형 등)은 대입할 수 없으므로 초기화 목록에서 초기화해야 한다.
Person(string name, int age):
중괄호는 비어 있어도 생략할 수 없다는 점에 유의해야 한다.
기본값 초기화를 돕기 위해 마지막 인수에 기본값을 지정할 수 있다.
Person(string name = "", int age = 0):
위 예시의 생성자에 인수가 주어지지 않으면, 인수가 없는 다음 생성자(기본 생성자)를 호출하는 것과 동일하다.
Person():
생성자 선언은 자료형과 이름이 같은 함수처럼 보인다. 실제로 생성자 호출은 함수 호출 형태를 취할 수 있다. 이 경우 초기화된 codice_19 유형 변수는 반환 값으로 생각할 수 있다.
Person r = Person("Wales", 40);
r.print();
위 예제와 동일한 작업을 수행하는 다른 구문은 다음과 같다.
Person r("Wales", 40);
r.printData();
변수와 관련이 있거나 없을 수 있는 특정 프로그램 동작을 생성자의 일부로 추가할 수 있다.
Person() {
std::println("Hello!");
위 생성자를 사용하면 기본 codice_19 생성자가 호출될 때 "Hello!"가 출력된다.
기본 생성자.
클래스에 생성자가 정의되지 않았을 때 기본 생성자가 호출된다.
// 괄호를 사용하여 객체 생성.
A* a = new A(); // 기본 생성자를 호출하며, b는 '0'으로 초기화된다.
// 괄호 없이 객체 생성.
A* a = new A; // 메모리를 할당한 다음 기본 생성자를 호출하며, b는 '0' 값을 갖는다.
// new 없이 객체 생성.
A a; // 스택에 a를 위한 공간을 예약하며, b는 알 수 없는 쓰레기 값을 갖는다.
그러나 클래스에 사용자 정의 생성자가 정의된 경우, 위의 두 선언 모두 이 사용자 정의 생성자를 호출하여 정의된 코드가 실행되지만, 변수 b에 기본값은 할당되지 않는다.
소멸자.
소멸자는 생성자의 역이다. 클래스 인스턴스가 소멸될 때 호출된다. 예를 들어, 블록(중괄호 "{}" 집합) 내에서 생성된 클래스 객체가 닫는 중괄호 다음에 삭제되면 소멸자가 자동으로 호출된다. 변수를 저장하는 메모리 위치가 비워질 때 호출된다. 소멸자는 해당 클래스 인스턴스가 소멸될 때 힙 할당 메모리 및 열린 파일과 같은 리소스를 해제하는 데 사용될 수 있다.
소멸자를 선언하는 구문은 생성자와 유사하다. 반환 값이 없으며 함수 이름은 클래스 이름과 동일하고 앞에 물결표(~)가 붙는다.
~Person() {
std::println("I'm deleting {} with age {}", name, age);
C++에서는 클래스 템플릿으로부터 클래스 선언을 생성할 수 있다. 이러한 클래스 템플릿은 클래스들의 패밀리를 나타낸다. 실제 클래스 선언은 하나 이상의 템플릿 인수를 사용하여 템플릿을 인스턴스화함으로써 얻어진다. 특정 인수 집합으로 인스턴스화된 템플릿은 템플릿 특수화라고 불린다.
C++ 구문은 클래스의 모든 측면이 기본 자료형과 같아 보이도록 노력한다. 따라서 오버로드된 연산자는 클래스를 정수 및 부동 소수점 숫자처럼 조작할 수 있도록 하고, 클래스 배열은 대괄호 구문(codice_87)으로 선언할 수 있으며, 클래스 포인터는 내장 자료형 포인터와 같은 방식으로 역참조될 수 있다.
구조체의 메모리 소비는 최소한 구성 변수들의 메모리 크기 합계이다. 아래 codice_88 구조체를 예로 들어보자.
struct TwoNums {
이 구조체는 두 개의 정수로 구성된다. 현재 많은 C++ 컴파일러에서 정수는 기본값으로 32비트 정수이므로 각 멤버 변수는 4바이트의 메모리를 소비한다. 따라서 전체 구조체는 최소한 (또는 정확히) 8바이트의 메모리를 소비하며, 다음과 같다.
| a | b |
그러나 컴파일러는 주어진 컴퓨터 아키텍처에 대한 적절한 데이터 정렬을 보장하기 위해 변수 사이에 또는 구조체 끝에 패딩을 추가할 수 있으며, 종종 변수를 32비트 정렬로 패딩한다. 예를 들어, 구조체
struct BytesAndSuch {
char D;
는 메모리에서 다음과 같이 보일 수 있다.
|c|C|D|X|s |XX| i | d |
여기서 는 4바이트 정렬을 기반으로 하는 패딩 바이트를 나타낸다.
구조체는 멤버 변수를 선언하고 초기화하기 위해 포인터와 배열을 사용할 수 있으므로 구조체의 메모리 소비는 반드시 상수가 아니다. 비상수 메모리 크기의 또 다른 예는 템플릿 구조체이다.
비트 필드.
비트 필드는 정수형보다 적은 저장 공간을 차지할 수 있는 클래스 멤버를 정의하는 데 사용된다. 이 필드는 정수형(int, char, short, long 등)과 열거형(예: std::byte)에만 적용되며 float 또는 double은 제외된다.
unsigned a:2; // 가능한 값 0..3, int의 처음 2비트 차지
unsigned b:3; // 가능한 값 0..7, int의 다음 3비트 차지
unsigned :0; // 다음 정수형의 끝으로 이동
unsigned :4; // c와 d 사이에 4비트 패딩
공용체도 비트 필드 멤버를 가질 수 있다.
union A {
unsigned a:2;
unsigned b:3;
unsigned :0; // 아무것도 하지 않음
unsigned :4; // 이 경우 아무것도 하지 않음; 비트 필드의 너비가 충분히 컸다면 공용체의 크기를 맞추기 위해 변경되었을 것
참조로 전달.
많은 프로그래머는 구조체를 포함하는 함수의 인수를 선언할 때 앰퍼샌드(&amp;)를 사용하는 것을 선호한다. 이는 역참조 앰퍼샌드를 사용하면 변수의 메모리 위치, 즉 단어 하나(일반적으로 32비트 머신에서는 4바이트, 64비트 머신에서는 8바이트)만 함수에 전달하면 되기 때문이다. 그렇지 않으면 값으로 전달을 사용하면 함수가 호출될 때마다 인수를 복사해야 하는데, 이는 큰 구조체의 경우 비용이 많이 든다.
참조에 의한 전달은 원래 구조체가 함수에 의해 수정될 수 있도록 노출시키므로, 의도하지 않은 경우에는 codice_61 키워드를 사용하여 함수가 매개변수를 수정하지 않음을 보장해야 한다(const-정확성 참조).
마이크로소프트 윈도우에서 codice_1와 그 대체제인 codice_2는 컴퓨터 파일과 폴더의 보안 디스크립터를 표시하고 수정할 수 있는 기본 명령줄 유틸리티이다. 접근 제어 목록은 파일이나 폴더와 같은 보안 가능한 개체에 대한 권한 목록으로, 누가 해당 개체에 접근할 수 있는지 제어한다. codice_1 명령어는 ReactOS에서도 사용할 수 있다.
cacls.
cacls.exe 유틸리티는 윈도우 NT 3.5 및 이후 윈도우 NT 계열 운영체제에서 디렉터리 및 파일 보안 디스크립터의 사용이 중단된 명령줄 편집기이다. 마이크로소프트는 NTFS 파일 시스템 버전 3.0에서 도입된 변경 사항을 지원하기 위한 향상된 기능을 제공하는 다음과 같은 최신 유틸리티를 제작했으며, 일부는 나중에 사용이 중단되었다.
ReactOS 버전은 토마스 바이덴뮐러가 개발했으며 GNU 약소 일반 공중 사용 허가서에 따라 라이선스가 부여된다.
icacls.
Integrity Control Access Control List의 약자이다. 윈도우 서버 2003 서비스 팩 2 이상에는 icacls가 포함되어 있으며, 이는 파일 및 폴더의 ACL을 표시, 수정, 백업 및 복원하고 비스타 및 이후 버전에서 무결성 수준 및 소유권을 설정할 수 있는 기본 제공 명령줄 유틸리티이다. 그러나 cacls를 완전히 대체하는 것은 아니다. 예를 들어, 명령줄 매개변수를 통해 보안 서술자 정의 언어 (SDDL) 구문을 직접 지원하지 않는다 (오직 /restore 옵션을 통해서만).
컴퓨팅에서 파일 연결(file association)은 파일을 해당 파일을 열 수 있는 응용 프로그램과 연결하는 것을 말한다. 더 일반적으로, 파일 연결은 파일 클래스(일반적으로 codice_1와 같은 파일 확장자로 결정됨)를 해당 응용 프로그램(예: 문서 편집기)과 연결한다.
연결 및 동사.
단일 파일 확장자는 다양한 작업을 수행하기 위한 여러 연결, 즉 동사를 가질 수 있다. 일반적인 동사는 다음과 같다.
예를 들어, 사진은 이러한 단어와 연결될 수 있는데, 열기는 이미지 뷰어에서 사진을 열고, 편집은 이미지 편집 프로그램을 열며, 인쇄는 사진을 프린터로 보낸다.
대부분의 운영체제는 어떤 형태로든 파일 연결을 지원한다. 예를 들어, 파일 관리자에서 파일을 열면 일반적으로 해당 파일이 연결된 응용 프로그램으로 열기 동사가 호출된다. "열기" 동사는 연결된 응용 프로그램을 호출하여 파일을 읽거나 문서를 사용자에게 표시하여 보거나 편집하거나 다른 작업을 수행할 수 있도록 한다.
인쇄와 같은 추가 작업은 일반적으로 마우스 오른쪽 버튼 콘텍스트 메뉴를 통해 액세스한다. 연결을 수정하는 메커니즘도 일반적으로 존재한다. 이에 대한 예로는 윈도우 셸의 "연결 프로그램" 옵션이 있다.
윈도우 3.x부터 시작하는 마이크로소프트 윈도우 계열의 운영체제는 파일 확장자 기반 연결을 지원한다. 연결은 각 파일 확장자에 대한 동사 집합으로 레지스트리에 저장된다. 이전 버전은 WIN.INI에 저장된 열기 연결을 지원했다.
파일 연결은 codice_2 명령어를 사용하여 표시하고 편집할 수 있으며, codice_3 명령어를 통해 파일 형식과 해당 파일을 여는 응용 프로그램 간의 연결을 생성할 수 있다.
윈도우 셸은 COM, 드래그 앤 드롭, 명령줄 호출 또는 동적 데이터 교환을 통해 파일 연결 작업을 호출한다. 마이크로소프트 윈도우 파일 연결의 고급 기능에는 임의의 수의 연결된 작업, 기본 기본 작업, 특정 파일 형식에 대해서만 확장자 표시, 파일 형식 아이콘 및 설명 사용자 지정, 연결된 MIME 형식 및 해당 처리(인터넷 익스플로러 브라우저 내에서 다운로드되거나 직접 열린 파일의 파일 형식을 처리하는 방법) 사용자 지정이 포함되었다. 그러나 고급 파일 연결 기능을 구성하는 기능은 윈도우 비스타 및 이후 운영체제에서 제거되었다.
KDE 및 그놈과 같은 리눅스 기반 GUI는 MIME 유형 기반 연결을 지원한다. 예를 들어, MIME 유형 codice_4은 문서 편집기와 연결될 수 있다. 이 연결은 일반적으로 freedesktop.org 공유 MIME 데이터베이스(파일의 MIME 유형을 결정하기 위해) 및 데스크톱 항목 규격(파일을 열 응용 프로그램을 결정하기 위해)을 통해 이루어진다.
클래식 Mac OS는 파일 확장자와 관계없이 각 파일을 해당 응용 프로그램과 연결하기 위해 유형 코드와 생성자 코드를 사용했다. 최신 macOS도 파일 확장자 기반 연결을 지원한다.
macOS의 응용 프로그램 번들은 Info.plist 파일에서 지원되는 파일 유형을 선언한다. 이들 지정된 유형 각각에 대해 Uniform Type Identifier가 제공되며, 이 유형의 파일 또는 데이터를 식별하는 방법을 정의하는 '태그' 목록이 함께 제공된다. 예를 들어, JPEG 유형은 'public.jpeg' UTI로 정의되며, 확장자 'jpg' 및 'jpeg', MIME 유형 'image/jpeg', 유형 코드 'JPEG'로 태그가 지정된다.
운영체제는 이 정보를 사용하여 각 유형을 열 수 있는 응용 프로그램 목록을 생성한다. 파인더 (소프트웨어) 내에서 각 파일은 UTI로 식별되며 해당 유형의 기본 응용 프로그램으로 열린다. 사용자는 해당 유형을 지원하는 다른 응용 프로그램 목록에서 선택할 수도 있다.
이 시스템을 사용하면 파일 이름이 없거나 파일 확장자가 없는 데이터와도 유형이 연결된다. 여기에는 붙여넣기 데이터와 MIME 유형이 제공된 HTTP와 같은 프로토콜을 통해 스트리밍되는 데이터가 포함된다.
아사나하로(, ? ~ 659), 아시나 허루는 서돌궐의 카간이다. 당나라 태종 사후에 이쉬바라 카간(Ishbara Khagan, )을 칭하며 당에 대항하였으나, 당의 세 차례 원정을 맞아 658년 소정방에게 생포되어 장안으로 압송되었다.
부트 플래그(boot flag)는 마스터 부트 레코드 내의 비확장 파티션 레코드에 있는 1바이트 값이다. 이것은 파티션 레코드의 시작 부분에 0x80 값으로 나타난다. 0x00 값은 파티션에 부트 플래그가 설정되어 있지 않음을 나타낸다. 다른 모든 값은 유효하지 않다.
그 주요 기능은 MS-DOS/마이크로소프트 윈도우 유형의 부트 로더에 부팅할 파티션을 나타내는 것이다. 어떤 경우에는 Windows XP/2000에서 활성 파티션에 "C:" 문자를 할당하는 데 사용된다. 활성 파티션은 부트 플래그가 설정된 파티션이다. DOS와 Windows는 부트 플래그로 하나의 부트 파티션만 설정할 수 있도록 허용한다.
타사 부트 관리자(예: GRUB 또는 XOSL)에서 사용하는 다른 부트 로더는 마스터 부트 레코드에 설치될 수 있으며, 부트 플래그가 설정되지 않은 기본 또는 확장 부트 레코드 파티션을 부팅할 수 있다.
Windows의 디스크 관리, 리눅스의 GPartEd, Fdisk와 같이 부트 플래그를 수정할 수 있는 많은 디스크 편집기가 있다.
일부 바이오스는 적어도 하나의 파티션에 부트 플래그가 설정되어 있는지 테스트하며, 그렇지 않으면 부트 순서에서 해당 장치를 무시한다. 따라서 부트 로더가 플래그를 필요로 하지 않더라도 바이오스에서 부트 코드를 시작하려면 플래그를 설정해야 한다.
넷부트(NetBoot)는 애플의 기술로, 유능한 펌웨어(즉, 뉴 월드 롬)를 갖춘 맥이 로컬 하드 디스크나 광학 디스크 드라이브 대신 네트워크에서 부팅할 수 있도록 했다. 넷부트는 부트스트랩 프로토콜(BOOTP)에서 파생된 작업이며, 사전 부팅 실행 환경과 개념이 유사하다. 이 기술은 1999년 1월 5일 맥월드 엑스포에서 맥 OS X 서버의 원래 버전의 일부로 발표되었다. 넷부트는 애플의 핵심 시스템 관리 기술로 계속 사용되어 왔으며, 최신 Mac Intel 시스템을 지원하도록 적용되었다. 넷부트, USB, 파이어와이어는 운영체제 재설치를 위한 외부 볼륨 옵션 중 일부이다. 넷부트는 T2 보안 칩이 탑재된 최신 Mac 또는 애플 실리콘에서는 지원되지 않는다.
macOS, macOS 서버, 맥 OS 9, 또는 맥 OS 8 사본이 포함된 디스크 이미지는 시스템 이미지 유틸리티를 사용하여 생성되며 일반적으로 macOS 서버인 서버에 저장된다. 클라이언트는 HTTPS, AFP, TFTP, NFS, 및 멀티캐스트 애플 소프트웨어 리스토어(ASR)를 포함한 많은 인기 프로토콜을 사용하여 네트워크를 통해 이 이미지를 수신한다. 서버 측 넷부트 이미지는 전체 시스템을 부팅할 수 있지만, 넷부트는 노턴 고스트와 다소 유사하게 운영체제 및 소프트웨어 전개에 더 일반적으로 사용된다.
클라이언트 시스템은 먼저 DHCP를 통해 네트워크 구성 정보를 요청한 다음, BSDP를 사용하여 부팅 이미지 및 서버 목록을 요청하고 위에 언급된 프로토콜을 사용하여 이미지를 다운로드한다.
인텔 및 파워PC 기반 서버 모두 인텔 및 파워PC 기반 클라이언트를 위한 이미지를 제공할 수 있다.
넷인스톨.
넷인스톨은 macOS 서버의 유사한 기능으로, 넷부트와 ASR을 활용하여 네트워크 클라이언트(일반적으로 첫 부팅 시)에 설치 이미지를 전달한다. 넷부트와 마찬가지로 넷인스톨 이미지는 시스템 이미지 유틸리티를 사용하여 생성할 수 있다. 넷인스톨은 사전 부팅 실행 환경(Preboot Execution Environment)에 의존하는 마이크로소프트 클라이언트를 위한 윈도우 디플로이먼트 서비스(Windows Deployment Services)와 유사한 기능을 macOS에 제공한다.
맥 OS 8.5 및 맥 OS 9는 IP 정보를 얻기 위해 BOOTP/DHCP만을 사용하고, 이어서 맥 OS 롬 파일의 TFTP 전송을 수행한다. 다음으로, 클라이언트 디스크 이미지가 있는 두 볼륨이 TCP를 통한 애플토크로 마운트된다. 대체로 클래식 맥 OS는 세 가지 이미지를 사용한다. 운영체제와 응용 프로그램을 포함할 수 있는 시스템 이미지. 다음으로, 읽기 전용 시스템 이미지 위에 오버레이로 프라이빗 이미지(또는 스크래치 디스크)가 마운트된다. 마지막으로 응용 프로그램 이미지가 마운트된다. 그러나 이 이미지는 비어 있을 수 있다.
페스터 파워(영어: Pester Power)는 아동이 부모나 보호자에게 특정 제품의 구매를 끈질기게 요구하거나 졸라서 소비 결정에 영향을 미치는 능력을 일컫는 마케팅 및 사회학 용어이다. 이를 마케팅 업계에서는 잔소리 효과(영어: The Nag Factor)라고도 부르며, 기업이 구매력이 없는 아동을 대상으로 마케팅을 펼쳐 최종적으로 구매력을 가진 부모의 지갑을 열게 만드는 간접적인 판매 전략을 설명할 때 주로 사용된다. 이는 현대 자본주의 사회에서 아동이 단순히 보호의 대상을 넘어 가정 내 소비의 강력한 인플루언서이자 주체적인 경제 행위자로 부상했음을 보여주는 대표적인 현상이다.
전통적인 가부장적 가정 구조에서는 경제권을 가진 부모가 독단적으로 소비를 결정하는 것이 일반적이었다. 그러나 20세기 후반 들어 핵가족화가 가속화되고 맞벌이 부부가 증가하면서 부모가 자녀와 함께 보내는 시간이 줄어들었고, 이에 대한 보상 심리로 물질적 요구를 들어주는 경향이 강해졌다. 동시에 사회 전반적으로 아동 중심의 양육 문화가 확산됨에 따라 가정 내 의사결정 과정에서 자녀의 발언권이 비약적으로 상승했다. 마케터들은 이러한 사회적 변화를 포착하여 부모를 직접 설득하는 것보다, 브랜드에 대한 충성도가 쉽게 형성되고 욕구 표현이 즉각적인 아동을 공략하는 것이 훨씬 효율적이라는 사실을 발견했다. 이로 인해 아동용 장난감이나 제과류뿐만 아니라 외식 메뉴, 휴가지 선정, 전자제품, 심지어 자동차 구매에 이르기까지 가족 소비 전반에 걸쳐 아동의 영향력이 확대되는 결과가 나타났다. 텍사스 A&amp;M 대학교의 마케팅 교수였던 제임스 맥닐은 아동이 세 가지 시장(직접 구매자, 부모 구매의 영향력 행사자, 미래의 잠재 고객)으로서 기능한다고 분석하며 이들의 영향력을 강조하였다.
심리학적 기제와 유형.