트랜스클루전

Transclusion
이 예에서는 파일 B의 데이터가 문서 A로 변환됩니다.

컴퓨터 과학에서 트랜슬루전(transclusion)은 하이퍼텍스트를 통해 참조함으로써 전자 문서의 일부 또는 전부를 하나 이상의 다른 문서에 포함하는 것을 말합니다.일반적으로 변환은 참조 문서가 표시될 때 수행되며, 일반적으로 최종 사용자에게 [1]투명하고 자동적입니다.트랜슬루전(transclusion)의 결과, 다른 소스에서 동적으로 조립된 부품으로 구성된 단일 통합 문서가 생성되며, 서로 다른 장소에 있는 서로 다른 컴퓨터에 저장될 수 있습니다.

트랜슬루전(transclusion)은 모듈러 설계를 용이하게 합니다(데이터, 코드 또는 컨텐츠에 관계없이 단일 소스 진실 모델을 사용). 리소스는 한 번 저장되고 여러 문서에서 재사용할 수 있도록 배포됩니다.그러면 리소스에 대한 업데이트 또는 수정 사항이 참조 문서에 반영됩니다.

트랜슬레이션을 사용할 수 없는 시스템과 트랜슬레이션을 사용할 수 있지만 바람직하지 않은 일부 상황에서는 대체가 종종 보완적 옵션이며, 이를 통해 단일 진실 소스의 정적 복사가 관련 문서에 통합된다.예를 들어, Wikipedia의 콘텐츠를 작성하는 데 사용되는 방법에 따라 두 가지 예가 제공됩니다(Wikipedia:트랜스클루전 위키피디아:추가 정보 대체).대체 정적 복사본은 버전 관리를 위해 변환과 다른 고려 사항을 도입하지만 경우에 따라서는 필요한 경우도 있습니다.

테드 넬슨은 1980년 그의 비선형 책 Literical Machines를 위해 이 용어를 만들었지만 마스터 카피와 오카렌스 개념은 17년 전에 스케치패드에 적용되었다.

기술적 고려 사항

콘텍스트 중립성

트랜슬루션은 텍스트의 트랜슬레이티드 섹션이 자급자족할 때 더 잘 작동하므로 텍스트의 의미와 타당성이 컨텍스트와 무관합니다.예를 들어, "이전 섹션에서 설명한 바와 같이"와 같은 공식은 문제가 있습니다. 왜냐하면 변환된 섹션이 다른 컨텍스트에서 나타나 혼란을 일으킬 수 있기 때문입니다.콘텍스트 뉴트럴의 텍스트는 다양하지만, 기업 정보나 상용판 등의 정보가 포함되는 경우가 많습니다.전술한 것과 같은 문맥 민감도 문제를 해결하기 위해 트랜슬루전 가능한 시스템은 트랜슬루전 콘텐츠 내의 특정 요소를 억제할 수도 있습니다.예를 들어 Wikipedia는 이러한 목적으로 "noinclude", "only include" 및 "include only"와 같은 태그를 사용할 수 있습니다.이러한 예외가 종종 필요한 요소의 일반적인 예로는 문서 제목, 각주 및 상호 참조가 있습니다. 이렇게 하면 각 인스턴스에 대한 수동 재작업 없이 변환 시 자동으로 억제할 수 있습니다.

파라미터화

경우에 따라서는 기술적인 맥락에서 텍스트의 트랜스코드 섹션은 "콘텍스트 중립성" 원칙을 엄격하게 준수할 필요가 없습니다. 트랜스코드 섹션은 파라미터화가 가능하기 때문입니다.매개 변수화는 독립적으로 변경할 수 있는 외부 변수에 따라 변환된 텍스트의 특정 부분 또는 하위 섹션을 수정할 수 있는 기능을 의미합니다.일반적으로 변환된 텍스트를 하나 이상의 대체 자리 표시자와 함께 제공하여 이 작업을 수행합니다.그런 다음 이러한 자리 표시자는 컨텍스트에서 변환된 최종 출력을 렌더링하기 전에 해당하는 변수 값으로 대체됩니다.

오리진스

파일 콘텐츠 재사용의 개념은 1960년 [2]COBOL에서 시작되었으며, 그 후 BCPL, PL/I, C,[3] 그리고 1990년대까지 [4]FORTRAN까지 사용되었습니다.인크루드 디렉티브는 복사 및 붙여넣기 프로그래밍과 하드 코딩 상수의 함정을 피하면서 공통 소스 코드를 재사용할 수 있습니다.많은 혁신과 마찬가지로 문제가 발생했다.여러 include 디렉티브가 다른 include 디렉티브와 같은 내용을 제공하므로 실수로 같은 소스 코드가 최종 결과로 반복되어 오류가 발생할 수 있습니다.include guards는 내용을 한 번 포함시킨 후 중복된 [5]내용을 생략함으로써 이 문제를 해결하는 데 도움이 됩니다.

재사용 가능한 단일 정보 소스의 개념은 다음과 같은 개념으로 이어집니다.자기 자신과 추상화 원칙을 반복하지 마세요.프로그램을 보다 휴대하기 쉽게 하기 위한 추가 용도가 발견되었습니다.휴대용 소스 코드는 포함 명령을 사용하여 표준 라이브러리를 지정합니다. 표준 라이브러리에는 각 컴퓨터 [6]환경에 따라 다른 시스템별 소스 코드가 포함되어 있습니다.

프로젝트 Xanadu에 의한 이력 및 구현

"하이퍼텍스트"와 "하이퍼미디어"라는 단어를 만든 테드 넬슨은 1980년 저서 "문학적 기계"에서 "트랜스전"이라는 용어를 만들었습니다.그의 제안의 일부는 다양한 장소에서 얼마나 많은 콘텐츠 조각을 취하든 상관없이 모든 텍스트에 대해 독자들로부터 자동으로 소액 결제가 요구될 수 있다는 아이디어였다.

하지만 넬슨에 따르면, 트랜슬레이션의 개념은 이미 1965년 하이퍼텍스트[7]대한 그의 설명의 일부를 형성하고 있었다.Nelson은 "같은 콘텐츠를 여러 곳에서 알 수 있을 정도로"라고 정의하며, 다른 장소의 콘텐츠를 포함하는 것(트랜스 딜리버리라고 함)이나 그 출처와 관련된 명시적 인용문(트랜스 쿼트라고 함)과 같은 특별한 경우와는 구분합니다.

Ted Nelson의 Xanadu Project를 포함한 일부 하이퍼텍스트 시스템은 트랜클루전([8]transclusion)을 지원합니다.

Nelson은 웹 트랜슬루전, 리틀 트랜스쿼터(2004-2005년 [9]Andrew Pam에 의해 넬슨 사양에 따라 프로그램됨)의 데모를 제공했습니다.웹 페이지의 부분 주소에 작성된 새 형식을 작성합니다. 참조가 취소되면 페이지의 각 부분이 원래 컨텍스트에 클릭된 상태로 유지됩니다.

웹에서의 구현

HTTP는 전송 프로토콜로서 HTTP 요청 메시지에서 바이트 범위를 지정하는 바이트 서비스를 통한 트랜슬루션을 기본적으로 지원합니다.

변환은 (서버 측) 전송 전 또는 (클라이언트 측) 전송 후에 발생할 수 있습니다.예를 들어 다음과 같습니다.

  • HTML 문서는 서버측 포함 또는 다른 서버측 응용프로그램을 사용하여 클라이언트에 전달하기 전에 서버가 미리 구성할 수 있습니다.
  • XML 엔티티 또는 HTML 오브젝트는 클라이언트에 의해 해석될 수 있습니다.이것에 의해, 메인 문서와는 별도로 대응하는 자원을 요구할 수 있습니다.
  • 웹 브라우저는 자체 알고리즘을 사용하여 요소를 캐시할 수 있으며, 문서 마크업에 명시적인 지시 없이 작동할 수 있습니다.
  • AngularJS는 중첩된 방향 [10]연산을 위해 트랜스클루전(transclusion)을 사용합니다.

웹 콘텐츠 발행자는 자신의 웹 사이트에서 다른 웹 사이트로의 자료 변환에 이의를 제기하거나 동의를 요구할 수 있습니다.이 관행을 비판하는 사람들은 다양한 형태의 인라인링크를 대역폭 도난 또는 거머리라고 부르기도 합니다.

다른 출판사들은 웹 광고의 형태히트 카운터나 웹 버그와 같은 위젯으로 그들의 자료를 다른 웹 사이트로 변환하는 것을 특별히 추구할 수 있다.

매시업에서는 인터랙티브 맵에 지리 태그 부착 사진을 배치하거나 인터랙티브 대시보드에 비즈니스 메트릭을 표시하여 리소스나 데이터를 새로운 응용 프로그램에 결합하기 위해 트랜클루전스를 사용합니다.

클라이언트측 HTML

HTML은 이미지, 스크립트, 스타일시트, 기타 문서 및 기타 유형의 미디어클라이언트 측에서 변환하기 위한 요소를 정의합니다.HTML은 웹 페이지 마크업에 이러한 오브젝트의 원시 데이터를 인라인으로 삽입하는 대신 웹 페이지 초기부터 클라이언트 측 변환에 크게 의존해 왔습니다(따라서 멀티미디어 요소가 로딩되기 전에 웹 페이지를 더 빨리 표시할 수 있었습니다).

Ajax와 같은 기술을 통해 HTML 문서와 관련된 스크립트는 웹 서버에서 완전히 새로운 버전의 페이지를 가져와야 하는 이전 기술과 달리 웹 브라우저에 문서를 즉시 수정하도록 지시할 수 있습니다.이러한 스크립트는 웹 브라우저가 페이지를 렌더링한 후 예를 들어 사용자 입력이나 조건 변경에 따라 서버에서 요소 또는 문서를 제외할 수 있습니다.

향후 HTML 버전에서는 엔티티, XPointer 문서 참조 및 XSLT 조작과 같은 XML 기술을 사용하여 문서의 일부를 보다 상세하게 변환할 수 있습니다.

프록시 서버는 일반적으로 요청된 리소스의 중복 전송을 줄이기 위해 트랜슬루션을 사용할 수 있습니다.

Angular로 알려진 인기 있는 프론트 엔드 프레임워크구글의해 개발되고 유지되는 JS는 트랜슬루션을 사용하는 가장 가까운 상위 디렉티브의 트랜슬루드 DOM에 대한 삽입점을 표시하는 디렉티브 콜엔드 ng 트랜슬루드를 가지고 있다.

서버측 트랜슬루전

서버 소프트웨어에서 해결된 서버측 포함 및 마크업 엔티티 참조를 통해 서버측에서 변환을 수행할 수 있습니다.이것은 대체 템플릿의 기능입니다.

소스 코드 변환

소스코드를 소프트웨어 설계 또는 참조 자료로 변환함으로써 소스코드를 문서 내에 표시할 수 있지만 문서의 일부로 해석할 수 없기 때문에 소스코드 베이스와 관련하여 삽입된 코드의 의미적 일관성을 유지할 수 있습니다.

콘텐츠 관리의 전환

단일 소스 퍼블리싱을 위한 콘텐츠 관리에서는 톱 클래스의 콘텐츠 관리 시스템이 점점 더 많은 트랜스클루전 및 대체 기능을 제공하고 있습니다.특히 컴포넌트 콘텐츠 관리 시스템은 모듈러 설계 원칙을 최적의 수준으로 끌어올리는 것을 목표로 합니다.MediaWiki는 트랜슬레이션과 대체 기능을 제공하며, 다른 상용 옵션에 대한 오버헤드 예산이 없는 소규모 조직(비영리기업이나 SME 등)에 적합한 옵션입니다.자세한 내용은 컴포넌트 콘텐츠 관리 시스템을 참조하십시오.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Glushko, Robert J., ed. (2013). The Discipline of Organizing. Cambridge, Massachusetts: MIT Press. p. 231. ISBN 9780262518505.
  2. ^ Initial Specifications for a COMMON BUSINESS ORIENTED LANGUAGE (COBOL) for Programming Electronic Digital Computers (PDF). Washington: Department of Defense. April 1960. pp. V-27. INCLUDE: Function: To save the programmer effort by automatically incorporating library subroutines into the source program.
  3. ^ 리치, DennisM.(1993-03-01)."C언어의 개발".ACMSIGPLAN Notices.28(3):201–208. doi:10.1145/155360.155580.는 2월 27일 2020년에 원래에서 Archived.많은 다른 변화 1972-3를 올렸으나,는 전처리기의 가장 중요한 도입, 앨런 스나이더[스나이더 74]의 권유이기도 하지만, 또한 the[원문대로]file-inclusion 메커니즘 BCPL과 PL/I에 이용할 수 있는 유틸리티의 인식에에서 일어났다.자전거의 원래 버전은 대단히 있지 않고 단지 포함되어 파일 및 간단한 문자열 대체 제공:#및 매개 변수 없는 매크로의#명확히 포함한다 간단했다.곧 그 후에, 그것은, 마이크 Lesk과 존 라이저에 의해, 엔드 투 엔드 원칙과 조건부 컴파일과 매크로 통합하기 위해 뻗어 나와 있다.그 전처리기는 원래 언어 그 자체에 선택적 부가물로 여겨졌다.Alt키를 URL은 승객을 머신에 2020-02-04 Archived.
  4. ^ Adams, Jeanne C.; Brainerd, Walter S.; Martin, Jeanne T.; Smith, Brian T.; Wagener, Jerrold L. (1992). Fortran 90 Handbook: Complete ANSI / ISO Reference (PDF). New York City: McGraw-Hill Book Company. p. 65. ISBN 0-07-000406-4. The INCLUDE line is a new feature in Fortran that permits the inclusion of source code from a specified file. It is a convenient way to place the same text in several places in a program.[데드링크] Alt URL
  5. ^ Stallman, Richard M.; Weinberg, Zachary. "Header Files" (PDF). The C Preprocessor: For gcc version 6.3.0 (GCC). pp. 10–11. Alternatives to Wrapper #ifndef : CPP supports two more ways of indicating that a header file should be read only once. Neither one is as portable as a wrapper ‘#ifndef’ and we recommend you do not use them in new programs, with the caveat that ‘#import’ is standard practice in Objective-C. [...] Another way to prevent a header file from being included more than once is with the ‘#pragma once’ directive. If ‘#pragma once’ is seen when scanning a header file, that file will never be read again, no atter what.
  6. ^ Johnson, S. C.; Ritchie, D. M. (July–August 1978). "UNIX time-sharing system: Portability of C programs and the UNIX system". The Bell System Technical Journal. 57 (6): 2021–2048. doi:10.1002/j.1538-7305.1978.tb02141.x. ISSN 0005-8580. S2CID 17510065. Retrieved 27 February 2020. Even before the advent of the Interdata machine, it as realized, as mentioned above, that many programs depended to an undesirable degree not only on UNIX I/O conventions but on details of particularly favorable buffering strategies for the PDP-11. A package of routines, called the "portable I/O library," was written by M. E. Lesk and implemented on the Honeywell and IBM machines as well as the PDP-11 in a generally successful effort to overcome the deficiencies of earlier packages
  7. ^ Theodor H. Nelson, "복잡, 변화, 불확실성을 위한 파일 구조"ACM 20차 전국회의(1965년), 84-100페이지
  8. ^ Kolbitsch, Josef; Maurer, Hermann (January 27, 2017). "Transclusions in an HTML-Based Environment" (PDF). Archived from the original (PDF) on July 1, 2017. Retrieved January 27, 2017.
  9. ^ Little Transquoter Xanadu.com.au
  10. ^ "AngularJS". docs.angularjs.org. Retrieved 2016-08-11.

추가 정보

외부 링크