shopkeeper/kowiki-cleaned-020126 huggingface dataset:
루프 불변 코드 이동

컴퓨터 프로그래밍에서 루프 불변 코드는 프로그램의 의미론에 영향을 주지 않고 루프 본문 밖으로 이동할 수 있는 명령문 또는 표현식( 명령형 프로그래밍 프로그래밍 언어에서)으로 구성된다. 루프 불변 코드 이동(Loop-invariant code motion, 호이스팅 또는 스칼라 승격이라고도 함)은 이 이동을 자동으로 수행하는 컴파일러 최적화이다.

예시
다음 코드 샘플에는 두 가지 최적화가 적용될 수 있다.

int i = 0;
while (i < n) {
 x = y + z;
 a[i] = 6 * i + x * x;
 ++i;
}

x = y + z와 x * x 계산은 루프 불변이지만, 코드를 루프 밖으로 이동하기 전에 주의를 기울여야 한다. 루프 조건이 false일 가능성(예: n이 음수 값을 가질 경우)이 있으며, 이 경우 루프 본문은 전혀 실행되지 않아야 한다. 올바른 동작을 보장하는 한 가지 방법은 루프 외부에 조건부 분기를 사용하는 것이다. 루프 조건을 평가하는 것은 부작용을 가질 수 있으므로, if 구성에 의한 추가 평가는 while 루프를 do {} while로 대체하여 보상해야 한다. 코드가 처음부터 do {} while을 사용했다면, 루프 본문이 최소 한 번 실행될 것이 보장되므로 전체 보호 프로세스가 필요 없다.

int i = 0;
if (i < n) {
 x = y + z;
 int const t1 = x * x;
 do {
 a[i] = 6 * i + t1;
 ++i;
 } while (i < n);
}

이 코드는 더욱 최적화될 수 있다. 예를 들어, 강도 감소는 루프 내의 두 곱셈(6*i 및 a[i])을 제거할 수 있고, 유도 변수 제거는 i를 완전히 생략할 수 있다. 6 * i는 i 자체와 동기화되어야 하므로 둘 다 가질 필요는 없다.

불변 코드 감지
일반적으로, 도달 정의 분석은 명령문이나 표현식이 루프 불변인지 감지하는 데 사용된다.

예를 들어, 어떤 단순 표현식의 피연산자에 대한 모든 도달 정의가 루프 밖에 있다면, 그 표현식은 루프 밖으로 이동될 수 있다.

모이앙, 루비아노, 세이예의 최근 연구는 데이터 흐름 의존성 분석을 사용하여 불변 명령어뿐만 아니라 내부 루프와 같은 더 큰 코드 조각도 감지한다. 이 분석은 또한 임의의 차수의 준불변, 즉 루프 본문의 고정된 반복 횟수 후에 불변이 되는 명령어 또는 코드 조각을 감지한다. 이 기술은 후에 오베르, 루비아노, 루쉬, 세이예에 의해 루프를 자동으로 병렬화하는 데 사용되었다.

장점
루프 밖으로 이동된 루프 불변 코드는 더 적게 실행되어 속도를 향상시킨다. 이 변환의 또 다른 효과는 상수를 레지스터에 저장하고 각 반복마다 주소를 계산하고 메모리(또는 캐시 라인)에 접근할 필요가 없다는 것이다.

그러나 너무 많은 변수가 생성되면, 특히 32비트 X86과 같이 레지스터가 적은 프로세서에서는 레지스터 압박이 높아진다. 컴파일러가 레지스터를 다 소진하면 일부 변수는 레지스터 스필링된다. 이를 상쇄하기 위해 역최적화인 재자료화가 수행될 수 있다.

 같이 보기 
 코드 이동
 루프 불변성

더 읽어보기
 Aho, Alfred V.; Sethi, Ravi; & Ullman, Jeffrey D. (1986). Compilers: Principles, Techniques, and Tools. Addison Wesley. .

 각주 

 외부 링크 
 컴파일러 최적화 — 호이스팅

분류:컴파일러 최적화
상수 폴딩

상수 폴딩(constant folding)과 상수 전파(constant propagation)는 많은 현대 컴파일러에서 사용되는 관련 컴파일러 최적화 기법이다. 희소 조건부 상수 전파로 알려진 상수 전파의 고급 형태는 상수를 더 정확하게 전파하고 동시에 불필요한 코드를 제거할 수 있다.

 상수 폴딩 

상수 폴딩은 런타임에 계산하는 대신 컴파일 타임에 상수 표현식을 인식하고 평가하는 과정이다. 상수 표현식의 항은 일반적으로 정수 리터럴 2와 같은 단순 리터럴이지만, 컴파일 타임에 값이 알려진 변수일 수도 있다. 다음 문장을 살펴보자.

i = 320 * 200 * 32;

대부분의 컴파일러는 이 문장에 대해 실제로 두 개의 곱셈 명령과 하나의 저장 명령을 생성하지 않는다. 대신 이러한 구문을 식별하고 컴파일 타임에 계산된 값(이 경우 2,048,000)으로 대체한다.

상수 폴딩은 산술 항등식을 활용할 수 있다. x가 숫자이면 컴파일러가 x의 값을 모르더라도 0 * x의 값은 0이다. (이것은 x가 무한대나 NaN일 수 있으므로 IEEE 부동소수점에서는 유효하지 않다는 점에 유의한다.)

상수 폴딩은 숫자 외에도 적용될 수 있다. 문자열 리터럴과 상수 문자열의 연결은 상수 폴딩될 수 있다. "abc" + "def"와 같은 코드는 "abcdef"로 대체될 수 있다.

 상수 폴딩과 크로스 컴파일 

크로스 컴파일러를 구현할 때 호스트 아키텍처의 산술 연산 동작이 대상 아키텍처의 동작과 일치하는지 확인해야 한다. 그렇지 않으면 상수 폴딩을 활성화하면 프로그램의 동작이 변경된다. 이는 부동소수점 연산의 경우 특히 중요하며, 정밀한 구현이 크게 다를 수 있다.

 상수 전파 

상수 전파는 컴파일 타임에 표현식에서 알려진 상수의 값을 대체하는 과정이다. 이러한 상수에는 위에 정의된 상수뿐만 아니라 상수 값에 적용된 내장 함수도 포함된다. 다음 의사 코드를 살펴보자.

int x = 14;
int y = 7 - x / 2;
return y * (28 / x + 2);

x를 전파하면 다음과 같다.

int x = 14;
int y = 7 - 14 / 2;
return y * (28 / 14 + 2);

계속 전파하면 다음과 같은 결과가 나온다 (이는 x와 y 모두에 대한 불필요한 코드 제거를 통해 추가로 최적화될 가능성이 높다.)

int x = 14;
int y = 0;
return 0;

상수 전파는 정의 도달 분석 결과를 사용하여 컴파일러에 구현된다. 변수의 모든 도달 정의가 동일한 할당(동일한 상수를 변수에 할당하는)인 경우 변수는 항상 동일한 값을 가지므로 상수로 대체될 수 있다.

상수 전파는 또한 조건 표현식이 컴파일 타임에 참 또는 거짓으로 평가되어 유일한 가능한 결과를 결정할 수 있는 경우 조건부 분기를 하나 이상의 무조건 명령문으로 단순화할 수 있다.

 최적화의 작동 방식 

상수 폴딩과 전파는 많은 단순화 및 감소를 달성하기 위해 일반적으로 함께 사용되며, 이러한 효과가 멈출 때까지 번갈아 가며 반복적으로 적용된다.

분석을 기다리는 알 수 없는 숫자를 반환하는 최적화되지 않은 다음 의사 코드를 살펴보자.

int a = 30;
int b = 9 - (a / 5);
int c = b * 4;

if (c > 10) {
 c = c - 10;
}
return c * (60 / a);

상수 전파를 한 번 적용한 다음 상수 폴딩을 적용하면 다음과 같다.

int a = 30;
int b = 3;
int c = b * 4;

if (c > 10) {
 c = c - 10;
}
return c * 2;

두 단계를 두 번 반복하면 다음과 같다.

int a = 30;
int b = 3;
int c = 12;

if (true) {
 c = 2;
}
return c * 2;

변수 a와 b의 모든 사용을 상수로 대체했으므로 컴파일러의 불필요한 코드 제거가 해당 변수에 적용되어 다음과 같이 남는다.

int c = 12;

if (true) {
 c = 2;
}
return c * 2;

(불리언 구성은 언어와 컴파일러마다 다르지만, 참의 상태, 원본 및 표현과 같은 세부 사항은 이러한 최적화 원칙에 영향을 미치지 않는다.)

전통적인 상수 전파는 더 이상의 최적화를 생성하지 않는다. 프로그램을 재구성하지 않는다.

그러나 유사한 최적화인 희소 조건부 상수 전파는 적절한 조건부 분기를 선택하고 항상 참인 조건부 테스트를 제거하여 더 나아간다. 따라서 변수 c는 불필요해지고 상수 연산만 남는다.

return 4;

만약 이 의사 코드가 함수 본문을 구성한다면, 컴파일러는 이 함수가 정수 상수 4로 평가된다는 것을 알게 되어 함수 호출을 4로 대체하고 프로그램 효율성을 더욱 높일 수 있다.

 같이 보기 
 제어 흐름 그래프
 사용-정의 체인 및 SSA 형식
 복사 전파
 공통 부분식 제거
 부분 평가

 각주 

 더 읽어보기 
 

분류:컴파일러 최적화
희소 조건부 상수 전파

컴퓨터 과학에서 희소 조건부 상수 전파(Sparse conditional constant propagation, SCCP)는 정적 단일 대입 형식(SSA)으로 변환된 후 컴파일러에 자주 적용되는 최적화 기법이다. 이는 컴파일 시점에 계산될 수 있는 정적 값의 계산인 상수 폴딩을 전파한다. 더욱이, 이는 어떤 순서로든 또는 어떤 횟수로든 데드 코드 제거와 상수 전파를 개별적으로 적용하는 것보다 더 많은 상수 값과 따라서 더 많은 개선 기회를 찾을 수 있다.

이 알고리즘은 SSA 형식 코드의 추상 해석을 수행하여 작동한다. 추상 해석 중에는 일반적으로 값에 대한 평탄한 격자와 SSA 변수를 이 격자의 값에 매핑하는 전역 환경을 사용한다. 알고리즘의 핵심은 분기 명령어의 해석을 처리하는 방식에 있다. 분기 명령어를 만나면, 분기 조건은 조건에 있는 변수에 바인딩된 추상 값의 정밀도를 고려하여 가능한 한 최적으로 평가된다. 값들이 완벽하게 정밀하여(최상도 최하도 아닌) 추상 실행이 어느 방향으로 분기할지 결정할 수 있는 경우가 있을 수 있다. 값들이 상수가 아니거나 조건의 변수가 정의되지 않은 경우, 보수성을 유지하기 위해 두 분기 방향 모두를 취해야 한다.

추상 해석이 완료되면, 결코 도달하지 않은 명령어들은 데드 코드로 표시된다. 상수 값을 가진 것으로 발견된 SSA 변수들은 그 사용 지점에서 인라인될 수 있다(전파될 수 있다).

 내용주 

 각주 
 Cooper, Keith D. and Torczon, Linda. Engineering a Compiler. Morgan Kaufmann. 2005.

분류:컴파일러 최적화
개인 보안

개인의 안보는 1948년 유엔이 채택한 세계 인권 선언에서 보장하는 기본적인 권리이다. 또한 유럽 인권 조약, 캐나다의 헌법, 남아프리카 공화국의 헌법 및 전 세계의 다른 법률에 의해 명시적으로 정의되고 보장되는 인권이기도 하다.

일반적으로 개인의 안보에 대한 권리는 자유와 관련이 있으며, 부당하게 투옥될 경우 인신보호청원과 같은 구제책을 받을 권리를 포함한다. 개인의 안보는 고문과 잔인하고 비정상적인 형벌 금지에 기반한 권리의 확장으로 볼 수도 있다. 개인의 안보에 대한 권리는 덜 치명적인 행위를 막을 수 있으며, 수감자 권리와 관련하여 사용될 수 있다.

유엔
개인의 안보에 대한 권리는 세계 인권 선언 제3조에 의해 보장된다. 이 조항에서 개인의 안보는 생존권 및 자유와 결합되어 있다. 전문은 "모든 사람은 생명, 자유 및 개인의 안전에 대한 권리를 가진다."고 되어 있다.

유엔 조약인 시민적 및 정치적 권리에 관한 국제규약(1966)도 개인의 안보에 대한 권리를 인정한다. 제3조는 "모든 사람은 자유와 개인의 안전에 대한 권리를 가진다."고 명시하며, 이 조항은 "자의적인 체포 또는 구금"을 금지한다. 이 조항은 "누구든지 법률에 의해 정해진 근거와 절차에 따르지 아니하고는 그 자유를 박탈당하지 아니한다."고 계속된다.

 유럽 
개인의 안보에 대한 권리는 유럽 인권 조약 제5조 (1)항의 자유와 안보에 대한 권리("모든 사람은 자유와 개인의 안보에 대한 권리를 가진다. 다음의 경우 및 법률에 규정된 절차에 따르지 아니하고는 누구도 자유를 박탈당하지 아니한다") 및 유럽 연합 기본권 헌장 제6조("모든 사람은 자유와 개인의 안보에 대한 권리를 가진다")에 명시되어 있다.

캐나다
개인의 안보에 대한 권리는 1960년 캐나다의 캐나다 권리장전에서 인정되었다. 이 법의 제1조 (a)항은 "개인의 생명, 자유, 개인의 안전 및 재산 향유에 대한 권리, 그리고 적법절차에 따르지 아니하고는 이를 박탈당하지 않을 권리"를 인정했다. 그러나 권리장전은 법률이었고 헌법의 일부가 아니었다.

1982년, 개인의 안보에 대한 권리가 헌법에 추가되었다. 이는 캐나다 권리 및 자유 헌장의 제7조에 포함되었는데, "모든 사람은 생명, 자유 및 개인의 안전에 대한 권리와 기본적 정의의 원칙에 따르지 아니하고는 이를 박탈당하지 않을 권리를 가진다."고 규정하고 있다. 제7조의 개인의 안보는 신체와 건강의 사생활에 대한 권리와 개인의 "심리적 완전성"을 보호하는 권리로 구성된다. 즉, 이 권리는 개인의 정신 상태에 대한 정부에 의한 중대한 해( 스트레스 )로부터 보호한다. (블렌코 대 브리티시컬럼비아 인권위원회 사건, 2000년)

이 권리는 상당한 판례를 만들어냈다. 캐나다의 낙태는 R. 대 모르겐탈러 (1988) 사건에서 대법원이 치료적 낙태 위원회가 여성의 건강을 위협하여 개인의 안보를 침해했다고 판결한 후 합법화되었다. 일부 판사들은 또한 신체에 대한 통제권이 개인의 안보 내에 있는 권리이며, 낙태법에 의해 침해되었다고 느꼈다. 작전 해체 대 국왕 (1985) 사건에서 순항 미사일 시험은 핵전쟁 위험을 야기하여 개인의 안보를 침해한다는 주장이 제기되었으나 실패했다. 쇼이 대 퀘벡주 (법무장관) (2005) 사건에서 일부 대법원 판사들은 퀘벡주의 민간 의료 금지가 의료 지연이 신체적 및 심리적 결과를 초래할 수 있기 때문에 개인의 안보를 침해한다고 간주하기도 했다.

캐나다 대법원과 학계에서는 개인의 안보가 일부 경제적 권리도 보장하는지에 대한 논의가 있어왔다. 이론적으로, 정부가 복지를 거부하거나, 직업에 필수적인 재산을 빼앗거나, 면허를 거부함으로써 개인의 소득 창출 능력을 제한한다면 개인의 안보는 침해될 것이다. 그러나 제7조는 주로 법적 권리와 관련되어 있으므로 경제적 권리에 대한 이러한 해석은 의문스럽다. 많은 경제적 문제 또한 통치행위일 수 있다.

남아프리카 공화국
1996년 남아프리카 공화국 정부는 제12조에서 개인의 안보에 대한 권리를 인정한 헌법적 권리장전을 채택했다. 여기서 개인의 안보는 "자유에 대한 권리"와 결합되었다. 제12조는 신체 통제 및 재생산 통제, 고문 및 잔인하고 비정상적인 형벌로부터의 자유, 재판을 받을 권리를 포함하여 개인의 안보와 자유에 대한 권리를 더 자세히 정의했다. 전문은 다음과 같다.

튀르키예
튀르키예 헌법은 1982년에 제정되고 2001년에 개정된 제19조에서 자유에 대한 권리와 함께 개인의 안전을 보장한다. 이 조항은 정신 병원 및 중독자 시설, 범죄인 인도 등을 허용하는 법률에 따른 법원의 판결 형태로 이러한 권리의 제한을 명시한다. 이 조항은 또한 판사가 허용하는 경우, 충분한 시간이 없는 경우 또는 범죄를 저지른 것으로 보이는 경우에만 체포 및 구금을 제한한다. 그러면 체포된 사람은 체포 이유를 고지받게 되며, 근친자에게도 체포 사실이 통보된다. 마지막으로, 이 조항은 이러한 권리가 침해될 경우 정부의 보상을 허용한다.

뉴질랜드
1990년에 채택된 뉴질랜드 권리장전법은 제8조부터 제11조까지 "생명과 개인의 안전"을 보장한다. 제8조는 기본적 정의에 따라 박탈되는 경우를 제외하고는 생존권을 보장하며, 제9조는 잔인하고 비정상적인 처벌을 금지한다. 제10조는 개인의 의지에 반하여 의료 치료를 받지 않도록 금지한다. 마지막으로, 제11조는 뉴질랜드인에게 의료 치료를 받지 않을 권리를 부여한다.

영국
개인의 안전은 1998년 영국 인권법 제1부 제5조에 명시되어 있다. 이 버전은 이 법의 최신 형태이며, 이후 약간의 수정이 있었다. 이 새로운 법은 토니 블레어가 약속한 헌법 개혁의 한 측면을 나타낸다.

 같이 보기 
 차별금지법
 소비자보호
 인간 안전
 개인 정체성에 대한 권리
 재산을 소유할 권리

 각주 

분류:권리
분류:낙태법
분류:보안
분류:주제별 인권
별칭 분석

별칭 분석(alias analysis)은 컴파일러 이론에서 저장 위치가 두 가지 이상의 방식으로 접근될 수 있는지 확인하는 데 사용되는 기술이다. 두 포인터가 동일한 위치를 가리키는 경우 별칭 처리된다고 말한다.

별칭 분석 기술은 일반적으로 흐름 민감도와 문맥 민감도에 따라 분류된다. 이는 may-alias 또는 must-alias 정보를 결정할 수 있다. 별칭 분석이라는 용어는 특정 사례인 포인터 분석과 종종 상호 교환적으로 사용된다.

별칭 분석기는 프로그램 내 별칭 처리를 이해하는 데 유용한 정보를 만들고 계산하는 것을 목표로 한다.

개요
일반적으로 별칭 분석은 별개의 메모리 참조가 메모리의 동일한 영역을 가리키는지 여부를 결정한다. 이를 통해 컴파일러는 프로그램의 어떤 변수가 특정 문장에 의해 영향을 받을지 결정할 수 있다. 예를 들어, 구조체 멤버에 접근하는 다음 코드 섹션을 고려해 보자:

p.foo = 1;
q.foo = 2;
i = p.foo + 3;

여기에는 세 가지 가능한 별칭 사례가 있다:
 변수 p와 q는 별칭 처리될 수 없다 (즉, 결코 동일한 메모리 위치를 가리키지 않는다).
 변수 p와 q는 반드시 별칭 처리되어야 한다 (즉, 항상 동일한 메모리 위치를 가리킨다).
 컴파일 시점에 p와 q가 별칭 처리되는지 여부를 확실하게 결정할 수 없다.

만약 p와 q가 별칭 처리될 수 없다면, i = p.foo + 3;는 i = 4로 변경될 수 있다. 만약 p와 q가 반드시 별칭 처리되어야 한다면, i = p.foo + 3;는 i = 5로 변경될 수 있는데, 왜냐하면 p.foo + 3 = q.foo + 3이기 때문이다. 두 경우 모두, 별칭 지식으로부터 최적화를 수행할 수 있다 (다른 스레드가 동일한 위치를 업데이트하여 현재 스레드와 인터리빙될 수 없거나, 언어 메모리 모델이 명시적인 동기화 구성이 없는 경우 현재 스레드에게 즉시 보이지 않도록 해당 업데이트를 허용한다고 가정한다). 반면에, p와 q가 별칭 처리되는지 여부가 알려지지 않으면, 어떤 최적화도 수행할 수 없으며 결과를 얻기 위해 전체 코드가 실행되어야 한다. 두 메모리 참조는 별칭 처리가 알려지지 않은 경우 may-alias 관계를 갖는다고 말한다.

별칭 분석 수행

별칭 분석에서 우리는 프로그램의 메모리를 별칭 클래스로 나눈다. 별칭 클래스는 서로 별칭 처리될 수 없는 위치들의 분리된 집합이다. 여기서는 여기서 수행되는 최적화가 프로그램의 저수준 중간 표현에서 발생한다고 가정한다. 즉, 프로그램이 이진 연산, 점프, 레지스터 간 이동, 레지스터에서 메모리로 이동, 메모리에서 레지스터로 이동, 분기, 함수 호출/반환으로 컴파일되었다는 의미이다.

타입 기반 별칭 분석
컴파일되는 언어가 타입 안전하고, 컴파일러의 타입 검사기가 정확하며, 언어가 지역 변수를 참조하는 포인터를 생성하는 기능이 부족하다면 (예: ML, 하스켈, 또는 자바), 유용한 최적화를 수행할 수 있다. 두 메모리 위치가 다른 별칭 클래스에 있어야 한다고 아는 많은 경우가 있다:

 서로 다른 타입의 두 변수는 동일한 별칭 클래스에 있을 수 없다. 이는 강타입, 메모리 참조가 없는 (즉, 메모리 위치에 대한 참조를 직접 변경할 수 없는) 언어의 속성상 서로 다른 타입의 두 변수가 동시에 동일한 메모리 위치를 공유할 수 없기 때문이다.
 현재 스택 프레임에 로컬로 할당된 메모리는 이전 스택 프레임의 어떤 할당과도 동일한 별칭 클래스에 있을 수 없다. 이는 새로운 메모리 할당이 다른 모든 메모리 할당과 분리되어야 하기 때문이다.
 각 레코드 타입의 각 레코드 필드는 일반적으로 자체 별칭 클래스를 갖는다. 이는 타이핑 규율이 일반적으로 동일한 타입의 레코드만 별칭 처리되도록 허용하기 때문이다. 특정 타입의 모든 레코드가 메모리에 동일한 형식으로 저장되므로, 필드는 자체적으로만 별칭 처리될 수 있다.
 마찬가지로, 주어진 타입의 각 배열은 자체 별칭 클래스를 갖는다.

코드에 대한 별칭 분석을 수행할 때, 메모리에 대한 모든 로드 및 스토어는 해당 클래스로 레이블이 지정되어야 한다. 그러면 별칭 클래스를 갖는 메모리 위치 와 가 주어졌을 때, 이면 는 와 may-alias 관계를 가지며, 이면 메모리 위치는 별칭 처리되지 않는다는 유용한 속성을 갖게 된다.

흐름 기반 별칭 분석
흐름 기반 분석은 참조 또는 타입 캐스팅이 있는 언어의 프로그램에 적용될 수 있다. 흐름 기반 분석은 타입 기반 분석을 대신하거나 보완하는 데 사용될 수 있다. 흐름 기반 분석에서 새로운 별칭 클래스는 각 메모리 할당에 대해, 그리고 주소가 사용된 모든 전역 및 지역 변수에 대해 생성된다. 참조는 시간이 지남에 따라 하나 이상의 값을 가리킬 수 있으므로 하나 이상의 별칭 클래스에 속할 수 있다. 이는 각 메모리 위치가 단일 별칭 클래스 대신 별칭 클래스 집합을 갖는다는 것을 의미한다.

 같이 보기 

 이스케이프 분석
 포인터 분석
 형태 분석

 각주 

 

 외부 링크 
 별칭 분석의 분류 및 적용 - 이 분야에 대한 소개를 담은 석사 논문.

분류:정적 프로그램 분석
이스케이프 분석

컴파일러 최적화에서 이스케이프 분석(Escape analysis)은 포인터의 동적 범위를 결정하는 방법이다. 이 분석은 프로그램 내에서 포인터가 어디에 접근될 수 있는지를 파악한다. 이는 포인터 분석 및 형태 분석과 관련이 있다.

변수(또는 객체)가 서브루틴에 할당될 때, 변수에 대한 포인터는 다른 실행 스레드나 호출 서브루틴으로 이스케이프될 수 있다. 구현에서 꼬리 재귀 최적화(일반적으로 함수형 프로그래밍 언어에서 요구됨)를 사용하는 경우, 객체는 호출된 서브루틴으로 이스케이프하는 것으로 간주될 수도 있다. 언어가 1급 연속을 지원하는 경우(예: 스킴 및 Standard ML of New Jersey), 콜 스택의 일부도 이스케이프될 수 있다.

서브루틴이 객체를 할당하고 그 객체에 대한 포인터를 반환하는 경우, 해당 객체는 프로그램 내의 불특정한 위치에서 접근될 수 있다. 즉, 포인터가 "이스케이프"한 것이다. 포인터는 또한 전역 변수나 현재 프로시저를 벗어나는 다른 데이터 구조에 저장될 때도 이스케이프할 수 있다.

이스케이프 분석은 포인터가 저장될 수 있는 모든 위치와 포인터의 생명 주기가 현재 프로시저 및 스레드에만 제한되는지 여부를 판단한다.

최적화
컴파일러는 이스케이프 분석 결과를 기반으로 최적화를 수행할 수 있다.

 힙 할당을 스택 할당으로 변환. 객체가 서브루틴에 할당되고 객체에 대한 포인터가 절대 이스케이프하지 않는다면, 그 객체는 힙 할당 대신 스택 할당의 후보가 될 수 있다. 가비지 컬렉션 언어에서는 이로 인해 컬렉터가 실행되어야 하는 빈도를 줄일 수 있다.
 동기화 생략. 객체가 단일 스레드에서만 접근 가능한 것으로 판명되면, 해당 객체에 대한 작업은 동기화 없이 수행될 수 있다.
 객체 분할 또는 스칼라 대체. 객체가 순차적인 메모리 구조로 존재할 필요가 없는 방식으로 접근되는 것으로 판명될 수 있다. 이는 객체의 일부(또는 전체)를 메모리 대신 CPU 레지스터에 저장할 수 있도록 한다.

실용적 고려 사항
객체 지향 프로그래밍 언어에서 동적 컴파일러는 이스케이프 분석을 수행하는 데 특히 적합하다. 전통적인 정적 컴파일에서는 메소드 오버라이딩으로 인해 이스케이프 분석이 불가능할 수 있다. 이는 호출된 모든 메소드가 포인터를 이스케이프시킬 수 있는 버전으로 오버라이드될 수 있기 때문이다. 동적 컴파일러는 오버로딩에 대한 가용한 정보를 사용하여 이스케이프 분석을 수행할 수 있으며, 관련 메소드가 동적 코드 로딩에 의해 오버라이드될 때 분석을 다시 수행할 수 있다.

자바 프로그래밍 언어의 인기로 인해 이스케이프 분석은 관심의 대상이 되었다. 자바의 힙 전용 객체 할당, 내장 스레딩, 썬 핫스팟 동적 컴파일러, 그리고 OpenJ9의 JIT 컴파일러 (JIT)의 조합은 이스케이프 분석 관련 최적화를 위한 후보 플랫폼을 제공한다 (자세한 내용은 자바의 이스케이프 분석 참조). 이스케이프 분석은 자바 표준 에디션 6에 구현되어 있다. 일부 JVM은 함수의 특정 경로에서 객체가 이스케이프하더라도 할당된 객체의 스칼라 대체를 가능하게 하는 부분 이스케이프 분석이라는 더 강력한 이스케이프 분석 변형을 지원한다.

예시 (자바)
class Main {
 public static void main(String[] args) {
 example();
 }
 public static void example() {
 Foo foo = new Foo(); //alloc
 Bar bar = new Bar(); //alloc
 bar.setFoo(foo);
 }
}

class Foo {}

class Bar {
 private Foo foo;
 public void setFoo(Foo foo) {
 this.foo = foo;
 }
}

이 예시에서는 두 개의 객체가 생성되고(alloc 주석), 그 중 하나가 다른 객체의 메소드에 인수로 제공된다. `setFoo()` 메소드는 받은 Foo 객체에 대한 참조를 저장한다. Bar 객체가 힙에 있었다면 Foo에 대한 참조는 이스케이프되었을 것이다. 그러나 이 경우 컴파일러는 이스케이프 분석을 통해 Bar 객체 자체가 `example()` 호출을 벗어나지 않는다는 것을 판단할 수 있다. 결과적으로 Foo에 대한 참조도 이스케이프할 수 없으며, 컴파일러는 두 객체를 안전하게 스택에 할당할 수 있다.

예시 (스킴)
다음 예시에서 벡터 p는 g로 이스케이프되지 않으므로 스택에 할당된 후 g를 호출하기 전에 스택에서 제거될 수 있다.
(define (f x)
 (let ((p (make-vector 10000)))
 (fill-vector-with-good-stuff p)
 (g (vector-ref p 7023))))

그러나 만약 다음과 같다면
(define (f x)
 (let ((p (make-vector 10000)))
 (fill-vector-with-good-stuff p)
 (g p)))
p는 힙에 할당되거나 (g가 f가 컴파일될 때 컴파일러에 알려져 있고 잘 작동한다면) g가 호출될 때 제자리에 유지될 수 있는 방식으로 스택에 할당되어야 한다.

연속을 사용하여 예외와 같은 제어 구조를 구현하는 경우, 이스케이프 분석은 이를 자주 감지하여 실제 연속을 할당하고 콜 스택을 복사하는 것을 피할 수 있다. 예를 들어, 다음에서
;;사용자가 입력한 스킴 객체를 읽습니다. 모든 객체가 숫자이면,
;;모든 객체가 순서대로 포함된 목록을 반환합니다. 사용자가 숫자가 아닌
;;객체를 입력하면 즉시 #f를 반환합니다.
(define (getnumlist)
 (call/cc (lambda (continuation)
 (define (get-numbers)
 (let ((next-object (read)))
 (cond
 ((eof-object? next-object) '())
 ((number? next-object) (cons next-object (get-numbers)))
 (else (continuation #f)))))
 (get-numbers))))
이스케이프 분석은 `call/cc`에 의해 캡처된 연속이 이스케이프하지 않으므로 연속 구조를 할당할 필요가 없으며, `continuation`을 호출하여 연속을 호출하는 것은 스택 풀기를 통해 구현될 수 있다고 판단할 것이다.

 같이 보기 
 별칭 분석
 포인터 분석
 형태 분석

 각주 

분류:정적 프로그램 분석
계산사회과학

계산사회과학(Computational social science)은 사회과학에 대한 계산적 접근 방식을 다루는 학제 간 학술 분야이다. 이는 컴퓨터를 사용하여 사회 현상을 모델링, 시뮬레이션 및 분석하는 것을 의미한다. 이는 계산경제학, 전산사회학, 계산 미디어 분석, 클리오다이내믹스, 컬투로믹스, 비영리 연구 등의 분야에 적용되었다. 데이터 사이언스 접근 방식(기계 학습 또는 규칙 기반 분석 등), 네트워크 분석, 사회 시뮬레이션 및 대화형 시스템을 사용한 연구를 통해 사회 및 행동 관계와 상호 작용을 조사하는 데 중점을 둔다.

 정의 

서로 관련된 두 가지 용어가 있다: 사회과학 컴퓨팅(SSC)과 계산사회과학(CSS). 문헌에서 CSS는 사회 현상을 연구하는 데 계산적 접근 방식을 사용하는 사회과학 분야를 의미한다. 반면에 SSC는 사회 현상 설명을 돕기 위해 계산 방법론이 생성되는 분야이다.

계산사회과학은 과학적 방법의 두 가지 근본적인 축, 즉 빅 데이터를 통한 실증적 연구를 혁신한다. 특히 온라인 사회 활동을 통해 남겨진 디지털 발자국을 분석하고, 과학 이론은 사회 시뮬레이션을 통한 컴퓨터 시뮬레이션 모델 구축을 통해 혁신한다. 이는 고급 정보 기술을 통한 정보 처리에 중점을 둔 사회 조사의 다학제적 통합 접근 방식이다. 계산 작업에는 사회 연결망, 사회 지리 시스템, 소셜 미디어 콘텐츠 및 전통 미디어 콘텐츠의 분석이 포함된다.

계산사회과학 작업은 현재 여러 학제 간 프로젝트에서 구축 및 유지 관리하고 있는 대규모 데이터베이스의 가용성 증가에 점차 의존하고 있다. 여기에는 다음이 포함된다.
 세샤트: 글로벌 역사 데이터뱅크(Seshat: Global History Databank)는 인간 집단의 정치 및 사회 조직과 시간이 지남에 따라 사회가 어떻게 진화했는지에 대한 최신 설명을 권위 있는 데이터뱅크로 체계적으로 수집한다. 세샤트는 "진화 과학을 사용하여 실제 문제를 해결"하는 비영리 싱크탱크인 진화 연구소(Evolution Institute)와도 제휴하고 있다.
 D-PLACE: 장소, 언어, 문화 및 환경 데이터베이스로, 1,400개 이상의 인간 사회 구성체에 대한 데이터를 제공한다.
 피터 N. 페레그린이 만든 고고학 데이터베이스인 문화 진화 아틀라스(Atlas of Cultural Evolution)
 CHIA: 역사 분석을 위한 협업 정보(Collaborative Information for Historical Analysis)는 피츠버그 대학교에서 주최하는 다학제적 협업 노력으로, 역사 정보를 보관하고 전 세계의 데이터와 학술/연구 기관을 연결하는 것을 목표로 한다.
 국제 사회사 연구소(International Institute of Social History)는 노동 관계, 노동자 및 노동의 글로벌 사회사에 대한 데이터를 수집한다.
 인간 관계 지역 파일 eHRAF 고고학
 인간 관계 지역 파일 eHRAF 세계 문화
 Clio-Infra는 1800년부터 현재까지 전 세계 사회 표본의 경제 성과 및 기타 사회 복지 측면을 측정하는 데이터베이스
 구글 N그램 뷰어, 인간 지식의 가장 큰 온라인 본문인 구글 도서 코퍼스에서 발견되는 연간 N그램 수를 사용하여 쉼표로 구분된 검색 문자열 집합의 빈도를 차트로 나타내는 온라인 검색 엔진.
 펜실베이니아 대학교에서 주최하는 대학, 기업 및 정부 연구실의 공개 컨소시엄인 언어 데이터 컨소시엄. 이 컨소시엄은 언어학 연구 및 개발 목적을 위한 음성 및 텍스트 데이터베이스, 어휘집 및 기타 자료를 생성, 수집 및 배포한다.

방대한 양의 역사 신문 및 도서 콘텐츠 분석은 2017년에 개척되었으며, 유사한 데이터에 대한 다른 연구에서는 역사 신문에서 주기적 구조를 자동으로 발견할 수 있음을 보여주었다. 비슷한 분석이 소셜 미디어에서도 수행되었으며, 다시 강력한 주기적 구조가 드러났다.

 접근 방식 

학제 간 분야로서 학자들은 다양한 기존 분야에서 온다. 그러나 이 분야가 전통적인 학문적 경계를 넘어 지식을 통합해야 한다는 공통된 정신이 있는 것으로 보인다. 그러나 넬리마르카는 계산사회과학에 대한 다섯 가지 뚜렷한 원형적 접근 방식을 제안한다.

 데이터 중심 접근 방식은 소셜 미디어 또는 스마트폰의 데이터를 포함하여 새로운 유형의 데이터 소스에 대한 접근을 통해 계산사회과학을 인식한다.
 방법 중심 접근 방식은 계산사회과학의 핵심 영역으로 새로운 방법과 방법론적 엄격성을 강조한다.
 모델 중심 접근 방식은 모델 구축과 사회에서 인간 행동을 지배하는 보편적인 법칙을 찾는 데 중점을 둔다. 예를 들어 사회 시뮬레이션 또는 사회 물리학이 있다.
 디지털 사회 중심 접근 방식, 계산사회과학자들이 알고리즘 편향과 같이 알고리즘 사회에서 발생하는 문제를 해결하고자 한다.
 사회 이론 관점, 계산 방법의 목적이 사회 이론을 발전시키는 것, 즉 현재 이론에 대한 증거를 찾거나 우리 사회를 이해하기 위한 대안적 개념화를 제안하는 데 도움이 되는 것.

전반적으로 계산사회과학은 다양한 학문적 활동이다. 특히 컴퓨터 과학에서 이 학문을 하나로 묶는 것으로 보이는 일부 학술 연구가 있지만, 그 외에는 더 다양한 커뮤니티가 있다.

 학술 출판 경로 

계산사회과학 논문은 New Media & Society, Social Science Computer Review, PNAS, Political Communication, EPJ Data Science, PLOS ONE, Sociological Methods & Research 및 사이언스와 같은 여러 저널에 게재된다.

그러나 계산사회과학에만 초점을 맞춘 몇몇 학술지가 있다.
 국제 계산사회과학 회의 
 계산사회과학 저널
 스프링거 계산사회과학 도서 시리즈

 같이 보기 
 계산 인지학
 계산 정치학
 전산사회학
 계산통계학
 사회 물리학
 클리오다이내믹스
 디지털 인문학
 디지털 사회학
 온라인 콘텐츠 분석
 예측 분석
 사회 정보학
 소셜 웹
 사회 연결망 분석

 각주 

 외부 링크 

 ESSA: 유럽 사회 시뮬레이션 협회 포털
 PAAA: 사회 시스템 과학의 에이전트 기반 접근 방식을 위한 범아시아 협회
 CSSSA: 미주 계산사회과학회
 2022 국제 계산사회과학 회의
 "네트워크 속 삶: 계산사회과학의 시대가 오다". 2015년 6월 10일 검색.
 세샤트
 

분류:계산 학문 분야
분류:계산과학
분류:사회과학
유니코드 키릴 문자

유니코드 버전 현재, 키릴 문자는 여러 영역에 인코딩되어 있다:
 키릴: U+0400–U+04FF, 256자
 키릴 보충: U+0500–U+052F, 48자
 키릴 확장-A: U+2DE0–U+2DFF, 32자
 키릴 확장-B: U+A640–U+A69F, 96자
 키릴 확장-C: U+1C80–U+1C8F, 11자
 키릴 확장-D: U+1E030–U+1E08F, 63자
 음성 확장: U+1D2B, U+1D78, 키릴 문자 2자
 결합 반쪽 기호: U+FE2E–U+FE2F, 키릴 문자 2자

U+0400–U+045F 범위의 문자는 기본적으로 ISO 8859-5의 문자를 864자리 위로 이동한 것이다. 키릴 문자 영역의 다음 문자들, U+0460–U+0489 범위의 문자들은 역사적인 글자들로, 일부는 여전히 교회 슬라브어에 사용된다. U+048A–U+04FF 범위의 문자들과 전체 키릴 보충 영역 (U+0500–U+052F)은 키릴 문자로 표기되는 다양한 언어들을 위한 추가 문자들이다. 음성 확장 영역에는 두 개의 문자가 있는데, 우랄어 음성 알파벳에서 온 과 비모음을 전사하기 위한 이다.

유니코드에는 전합성된 악센트 키릴 문자가 거의 포함되어 있지 않으며, 다른 문자들은 악센트 모음 뒤에 를 추가하여 결합할 수 있다 (예: е́ у́ э́). 아래를 참조한다.

키릴 문자에만 국한되지 않는 여러 발음 구별 기호는 키릴 텍스트와 함께 사용할 수 있으며 다음을 포함한다.
 결합 발음 구별 기호 영역 U+0300–U+036F.
 (일반적인 키릴 강세 기호).
 (불가리아어 강세 기호).
 (슬라브어가 아닌 언어에서)
 (슬라브어가 아닌 언어에서)
 (й와 함께, 또한 슬라브어가 아닌 언어의 다른 글자들과 함께)
 (다른 문자 체계의 음역에서)
 (슬라브어가 아닌 언어에서)
 (슬라브어가 아닌 언어에서)
 (슬라브어가 아닌 언어에서)
 (슬라브어가 아닌 언어에서)
 (옛 철자에서 ѷ와 함께)
 (19세기 알류트 알파벳에서)
 (다른 문자 체계의 음역에서)
 (19세기 폴란드 키릴 알파벳, 19세기 리투아니아 키릴 알파벳에서)
 (다른 문자 체계의 음역에서)
 (19세기 폴란드 키릴 알파벳에서)
 결합 발음 구별 기호 기호 영역 U+20D0–U+20F0
 (키릴 만 단위 기호).

아래 표에서 소문자는 유니코드 번호 순으로 정렬되어 있으며, 대문자는 해당 소문자 바로 앞에 배치되어 있다. 표준 유니코드 이름과 표준 분해가 포함되어 있다.

 같이 보기 
 키릴 문자 목록
 키릴 문자
 키릴 문자를 사용하는 언어

 각주 

 

분류:유니코드 영역
분류:키릴 문자
KOI-8

KOI-8(КОИ-8)은 GOST 19768-74로 표준화된 8비트 문자 집합이다. 라틴 음소문자와 러시아어 문자를 대소문자 모두 사용할 수 있도록 KOI-7을 확장한 것이다. 그러나 문자 Ёё와 대문자 Ъ는 빠져 있는데, 후자는 지움 문자와의 충돌을 피하기 위함이다(대부분의 확장에서는 둘 다 추가된다. KOI8-B 참조). 처음 127개의 코드 포인트는 달러 기호$ (코드 포인트 2416진수)가 만국 통화 기호 ¤로 대체된 것을 제외하고는 ASCII와 동일하다. x8_ 및 x9_ 행(코드 포인트 128-159)은 확장 이진화 십진법 교환 부호의 추가 제어 문자 (코드 포인트 32-63)로 채워질 수 있다.

이 표준은 이후 인터넷 표준인 KOI8-RU의 기반이 되었다.

현대 응용 프로그램, 특히 인터넷에서는 KOI-8 및 그 변형이나 다른 키릴 문자 인코딩보다 유니코드가 선호되며, 이로 인해 UTF-8은 웹 페이지에서 지배적인 인코딩이 되었다. (옛 키릴 문자를 포함하여 436개의 키릴 문자/코드 포인트를 포괄하는 유니코드의 완전한 범위와, Windows-1251 및 KOI8 변형과 같은 단일 바이트 문자 인코딩이 이를 제공할 수 없는 방법에 대한 자세한 내용은 유니코드 키릴 문자를 참조한다.)

 문자 집합 
다음 표는 KOI-8 인코딩을 보여준다. 각 문자는 해당 유니코드 코드 포인트와 함께 표시된다.

]]}}
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}

 같이 보기 
 KOI 문자 인코딩

 내용주 

 각주 

분류:문자 집합
KOI8-R

KOI8-R(RFC 1489)은 프로그래머 안드레이 체르노프가 1993년에 KOI-8 인코딩에서 파생시킨 8비트 문자 인코딩으로, 키릴 문자의 러시아어 하위 집합을 사용하는 러시아어를 지원하도록 설계되었다. KOI-8은 차례로 MTK-2 텔레타이프 코드에서 러시아어와 라틴어 문자의 음성 일치를 계승한 KOI-7 인코딩의 8비트 확장이다. 그 결과, KOI8-R의 러시아어 키릴 문자는 ISO 8859-5와 같은 일반적인 키릴 문자의 알파벳 순서가 아닌 유사 라틴어 알파벳 순서로 되어 있다. 이것은 부자연스럽게 보일 수 있지만, 8번째 비트가 제거되어도 텍스트가 ASCII 기반 인코딩(KOI8-R 자체 포함)에서 대소문자가 반전된 전자된 형태로 부분적으로 읽을 수 있는 유용한 효과가 있다. 예를 들어, "Код для обмена и обработки информации" (KOI 약어의 러시아어 의미)는 kOD DLQ OBMENA I OBRABOTKI INFORMACII가 된다.

KOI-8은 "정보 교환을 위한 8비트 코드"를 의미하는 8-bitnyy kod dlya obmena i obrabotki informatsii()를 나타낸다. 마이크로소프트 윈도우에서 KOI8-R은 코드 페이지 번호 20866이 할당되어 있다. IBM에서 KOI8-R은 코드 페이지 878이 할당되어 있다. KOI8-R은 또한 불가리아어도 포함한다.

이러한 언어에 대한 적절한 인용 부호가 없는데, «...»와 불가리아어 „...“ 모두 해당한다. Windows-1251은 이들을 지원하며 더 많은 문자를 지원하므로 더 인기가 많아졌다. KOI8-R은 웹사이트의 0.004% 미만에서 사용되며, 주로 러시아와 불가리아 웹사이트에서 사용된다. 유니코드와 UTF-8은 현대 애플리케이션에서 단일 바이트 키릴 인코딩보다 선호되며, 유니코드에는 옛 키릴 문자를 포함하여 436개의 키릴 문자가 포함되어 있다.

문자 집합
다음 표는 KOI8-R 인코딩을 보여준다. 각 문자는 해당 유니코드 코드 포인트와 함께 표시된다.

]]}}
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}

 같이 보기 
 KOI8-B, 문자 하위 집합만 구현된 KOI8-R의 파생물
 KOI8-U, 우크라이나어 문자를 추가한 또 다른 파생 인코딩
 KOI 문자 인코딩
 RELCOM
 Windows-1251, 또 다른 일반적인 키릴 문자 인코딩

 각주 

추가 자료
 
 
 
 
 

 외부 링크 
 Universal Cyrillic decoder, 깨진 KOI8-R 또는 기타 문자 인코딩으로 된 키릴 문자 텍스트를 복구하는 데 도움이 될 수 있는 온라인 프로그램.

분류:문자 집합
KOI8-U

KOI8-U(RFC 2319)는 키릴 문자를 사용하는 우크라이나어를 다루도록 설계된 8비트 문자 인코딩이다. 러시아어와 불가리아어를 다루는 KOI8-R을 기반으로 하지만, 8개의 상자 그리기 문자를 대문자와 소문자 Ґ, Є, І, Ї 네 개의 우크라이나 문자로 대체한다.

KOI8-RU는 밀접하게 관련되어 있지만 벨라루스어를 위해 Ў를 추가한다. 둘 다 문자 할당은 KOI8-E의 문자 할당과 일치하며, KOI8-F에 추가된 Ґ는 예외이다.

마이크로소프트 윈도우에서 KOI8-U는 코드 페이지 번호 21866으로 할당된다. IBM에서 KOI8-U는 코드 페이지/CCSID 1168로 할당된다.

KOI8은 실제로 유행하지 못했던 ISO 8859-5보다 훨씬 더 일반적으로 사용된다. 또 다른 일반적인 키릴 문자 인코딩은 Windows-1251이다. 미래에는 둘 다 결국 유니코드에 자리를 내줄 수도 있다.

KOI8은 "정보 교환을 위한 코드, 8비트"를 의미하는 러시아어인 Kod Obmena Informatsiey, 8 bit ()의 약자이다.

KOI8 문자 집합은 키릴 문자가 ISO 8859-5와 같이 키릴 알파벳 순서가 아니라 유사 라틴 알파벳 순서로 배열되어 있다는 특징을 가지고 있다. 이는 8번째 비트가 제거되고 텍스트가 KOI8 자체를 포함하여 ASCII 기반의 모든 문자 집합으로 표시될 경우에도 텍스트가 대소문자가 뒤바뀐 전사로 여전히 합리적으로 읽을 수 있다는 유용한 효과를 제공한다. 예를 들어, "KOI" 약어 "Код Обмена Информацией"는 kOD oBMENA iNFORMACIEJ가 된다.

문자 집합
다음 표는 KOI8-U 인코딩을 보여준다. 각 문자는 해당 유니코드 코드 포인트와 함께 표시된다.

]]}}
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}

RFC 2319는 문자 0x95가 U+2219 (∙)여야 한다고 명시하고 있지만, Windows-1251의 글머리표 문자와 일치하도록 U+2022 (•)일 수도 있다.

일부 참고 자료에는 오타가 있어 문자 0xB4가 올바른 U+0404가 아닌 U+0403이라고 잘못 기재되어 있다. 이 오타는 RFC 2319의 부록 A에 있다 (그러나 RFC 본문의 표에는 올바른 매핑이 나와 있다).

 같이 보기 
 KOI 문자 인코딩
 우크라이나어 알파벳

 각주 

더 읽어보기

 
 
 
 

 외부 링크 

 https://web.archive.org/web/20050206230944/http://www.net.ua/KOI8-U/

분류:문자 집합
보체성분 5

보체성분 5(補體成分五, , C5)는 사람의 경우 C5 유전자에 의해 암호화되는 단백질이다.

C5는 보체계에 관여한다. C5는 다음과 같이 C5a와 C5b로 분열된다.
 C5a는 화학주성에서 중요한 역할을 한다.
 C5b는 보체 막공격 복합체의 첫 번째 부분을 형성한다.

라이네르병은 C5의 결핍으로 인해 발생하는 것으로 생각된다.

 기능 
C5는 보체의 다섯 번째 성분으로, 염증과 세포사멸 과정에서 중요한 역할을 한다. C5는 이황화물 다리로 연결된 α와 β 폴리펩타이드 사슬로 구성된다. 활성화 펩타이드로 아나필라톡신인 C5a는 강력한 경련성 및 화학주성 활성을 가지고 있으며, C5-전환효소에 의한 절단을 통해 α 폴리펩타이드로부터 유래된다. C5b 거대분자 절단 생성물은 C6(보체성분 6)과 복합체를 형성할 수 있으며, 이 복합체는 추가적인 보체성분을 포함하는 막공격 복합체 형성의 기초가 된다.

 임상적 중요성 
이 유전자의 돌연변이는 C5 결핍증을 유발하는데, 이 질병을 앓는 환자는 심각한 재발성 감염의 경향이 있다. 이 유전자의 결함은 간경변증과 류머티스 관절염에 걸리기 쉬운 것과도 관련이 있다.

 치료적 활용 
에쿨리주맙(상품명 솔라리스)은 C5가 C5a와 C5b로 분리되는 것을 방지한다.

 보체계 경로 

 같이 보기 
 보체계
 보체성분 4
 보체성분 6

 각주 

 더 읽을거리 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 외부 링크 
 

분류:인간 9번 염색체상 유전자
분류:보체계
2016년 하계 올림픽 나미비아 선수단

2016년 하계 올림픽 나미비아 선수단은 2016년 8월 5일부터 8월 21일까지 브라질 리우데자네이루에서 열린 2016년 하계 올림픽에 참가한 올림픽 나미비아 선수단이다.

 메달 집계 

 종목별 성적 
 30px|alt=|link= 복싱 

 30px|alt=|link= 사격 

 30px|alt=|link= 사이클 

 30px|alt=|link= 육상 

 같이 보기 
 2016년 하계 올림픽

 외부 링크 

올림픽
나미비아
분류:하계 올림픽 나미비아 선수단
2016년 하계 올림픽 탄자니아 선수단

2016년 하계 올림픽 탄자니아 선수단은 2016년 8월 5일부터 8월 21일까지 브라질 리우데자네이루에서 열린 2016년 하계 올림픽에 참가한 올림픽 탄자니아 선수단이다.

 메달 집계 

 종목별 성적 
 30px|alt=|link= 수영 

 30px|alt=|link= 유도 

 30px|alt=|link= 육상 

 같이 보기 
 2016년 하계 올림픽

 외부 링크 

올림픽
탄자니아
분류:하계 올림픽 탄자니아 선수단
한계이익

한계이익(marginal profit)는 관리 회계 개념 중의 하나로, 매출액에서 변동비를 뺀 값이다. 한계 이익을 매출로 나눈 값을 한계이익률 (marginal profit ratio)라고 하며 매출이 1단위 증가함에 따라 증가하는 이익이다.

한계이익에는 고정비가 포함되어 있다. 다음 식으로 표현된다.

 한계이익 = 매출 - 변동비
 한계이익 = 고정비 + 이익

한편 고정비의 회수에 공헌하는 것으로부터, 공헌이익 (contribution margin)이라고도 한다. 다만, 회계학상 상품별 한계이익에서 개별 상품 판매에 직접 관여한 고정비를 추가로 뺀 것을 공헌이익이라고 부르기도 한다.

 영업 부문의 한계이익 계산 
매입판매회사 등의 영업부문에서는 한계이익의 의미가 조금 다른데, 이 경우에는 관리회계 상의 소위 매출총이익을 나타내며, 다음과 같이 계산한다.

 한계이익 (매출총이익) = 매출 - 상품 구입가
 한계이익률(매출총이익률) = 한계이익/매출액

변동비가 상품 구입가만 있으므로, 이들은 위에 나타낸 값과 같다.

 관련 항목 

 손익 분기점
 수익성 분석
 한계 (경제학)

 외부 링크 
 

분류:관리회계
발코니의 여자들

《발코니의 여자들》()은 2024년 개봉한 프랑스의 코미디 범죄 영화이다.

 출연 
 주연 
 노에미 메를랑 - 엘리스 역
 수헤일라 야쿱 - 루비 역
 산다 코드레아누 - 니콜 역

 조연 
 루카스 브라보 - 마그나니, 르 부아인 덴 페이스 역
 헨리 코헨 - 르 지네콜로그 역
 아니 메르시에 - 라부아진 역

 외부 링크 
 

분류:2024년 영화
분류:프랑스어 영화 작품
분류:프랑스의 코미디 영화
분류:프랑스의 범죄 영화