트랜스클루전
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
트랜스클루전은 텍스트나 코드의 재사용 기술로, 여러 위치에서 동일한 내용을 참조하거나 포함하는 방식을 의미한다. 프로그래밍 언어에서 파일 내용 재사용 개념으로 시작되어, 하이퍼텍스트 시스템과 웹 기술로 발전했다. 웹에서는 HTTP 프로토콜을 통해 지원되며, HTML, 서버 측 기술, 콘텐츠 관리 시스템 등 다양한 환경에서 구현된다. 트랜스클루전은 컨텍스트 중립성과 매개변수화를 통해 유연성을 확보하며, 소프트웨어 개발 및 콘텐츠 관리 시스템에서 코드 재사용 및 모듈화를 위해 활용된다.
더 읽어볼만한 페이지
- 하이퍼텍스트 - 더글러스 엥겔바트
더글러스 엥겔바트는 미국의 발명가이자 컴퓨터 과학자로, 컴퓨터 마우스, 하이퍼텍스트, 그래픽 사용자 인터페이스(GUI) 등 혁신적인 컴퓨터 기술들을 개발하여 현대 컴퓨터 기술과 인터넷 발전에 큰 영향을 미쳤다. - 하이퍼텍스트 - H. G. 웰스
H. G. 웰스는 《타임머신》, 《모로 박사의 섬》, 《투명인간》, 《우주 전쟁》 등의 작품을 쓴 영국의 소설가이자 과학 소설의 선구자이며, 사회 개혁에도 관심을 가진 인물이다. - HTML - Alt 속성
`alt` 속성은 HTML의 `img` 및 `area` 태그에서 이미지를 로드할 수 없을 때 대체 텍스트를 지정하며, 스크린 리더 및 SEO에 영향을 미치고, W3C 지침에 따라 이미지의 의미를 전달하거나 장식용 이미지는 빈 문자열로 지정해야 한다. - HTML - 폰트 패밀리 (HTML)
폰트 패밀리(HTML)는 CSS 스타일 시트, 인라인 CSS, HTML `font` 태그를 통해 웹 페이지 글꼴을 지정하는 방법으로, 사용자 기기에 설치된 글꼴에 따라 표현이 달라지며, CSS의 `font-family` 속성은 글꼴 모양을 식별하고 제네릭 폰트와 글꼴 대체 메커니즘을 통해 일관된 글꼴 표현을 가능하게 한다. - 메타데이터 - DOAJ
DOAJ는 과학 및 학술 저널의 오픈 액세스 가시성을 높이고 이용 편의성을 향상시켜 접근성과 영향력을 확대하며, 피어 리뷰를 거친 학술지를 엄격하게 심사하여 수록하고 모든 콘텐츠를 무료로 제공하는 오픈 액세스 저널 디렉토리이다. - 메타데이터 - 해시태그
해시태그는 2007년 트위터에서 관심 주제를 묶기 위해 제안되어 마이크로블로깅 네트워크에서 널리 사용되기 시작했으며, 다양한 분야에서 활용되고 언어학적 분석의 대상이 되기도 한다.
트랜스클루전 |
---|
2. 역사와 기원
트랜스클루전의 개념은 1960년대 컴퓨터 프로그래밍 언어에서 시작되었다. 정보를 위한 단일 재사용 가능 소스라는 아이디어는 반복 금지 및 추상화 원리와 같은 개념으로 이어졌으며, 프로그램의 이식성을 높이는 데 활용되었다. 이식 가능한 소스 코드는 각 컴퓨터 환경에 따라 다른 시스템별 소스 코드를 포함하는 표준 라이브러리를 지정하기 위해 include 지시어를 사용한다.[5]
2. 1. 프로그래밍 언어에서의 시작
파일 내용 재사용 개념은 1960년 COBOL을 시작으로 BCPL, PL/I, C 그리고 1978년에는 FORTRAN과 같은 컴퓨터 프로그래밍 언어에서 시작되었다.[2] include 지시어는 공통 소스 코드를 재사용할 수 있게 해주는 동시에 복사-붙여넣기 프로그래밍 및 상수 하드 코딩의 함정을 피할 수 있게 해준다. 많은 혁신과 마찬가지로, 문제점이 발생했다. 여러 개의 include 지시어가 다른 include 지시어와 동일한 내용을 제공하여 최종 결과물에 동일한 소스 코드가 반복적으로 포함되어 구문 오류가 발생할 수 있다. Include guard는 내용이 한 번 포함된 후 중복 내용을 생략함으로써 이를 해결하는 데 도움이 된다.[4]정보를 위한 단일 재사용 가능 소스라는 아이디어는 반복 금지 및 추상화 원리와 같은 개념으로 이어졌다. 더 나아가 프로그램의 이식성을 높이는 데 활용되었다. 이식 가능한 소스 코드는 각 컴퓨터 환경에 따라 다른 시스템별 소스 코드를 포함하는 표준 라이브러리를 지정하기 위해 include 지시어를 사용한다.[5]
2. 2. 테드 넬슨과 프로젝트 재나두
테드 넬슨은 '하이퍼텍스트'와 '하이퍼미디어'라는 단어를 처음 만들었으며, 1980년 저서 문학 기계에서 '트랜스클루전'이라는 용어도 만들었다. 그의 제안에는 내용 조각이 여러 곳에서 얼마나 많이 가져와지든, 모든 텍스트에 대해 독자로부터 자동으로 소액 결제를 징수할 수 있다는 아이디어가 담겨 있었다.[6]넬슨은 트랜스클루전을 "같은 내용이 여러 곳에서 알려져 있는 것"으로 정의하며, 다른 위치에서 콘텐츠를 포함하는 경우(그는 '트랜스전송'이라고 부름) 또는 원래 출처에 연결된 명시적인 인용구(그는 '트랜스인용'이라고 부름)와 같은 더 특별한 경우와 구분했다.
테드 넬슨 자신의 재나두 프로젝트를 포함한 일부 하이퍼텍스트 시스템은 트랜스클루전을 지원한다.[7]
넬슨은 웹 트랜스클루전 시연인 리틀 트랜스쿼터(2004-2005년 앤드루 팸이 넬슨의 사양에 맞춰 프로그래밍)를 제공했다.[8] 이는 웹 페이지의 일부 주소를 기반으로 하는 새로운 형식을 생성한다. 역참조될 때 결과 페이지의 각 부분은 원래 컨텍스트에 클릭 연결된 상태로 유지된다.
3. 기술적 고려 사항
트랜스클루전이 효과적으로 작동하려면 몇 가지 기술적인 고려 사항이 필요하다. 하위 섹션에서는 문맥 중립성과 매개변수화에 대해 자세히 설명한다.
3. 1. 문맥 중립성
트랜스클루전된 텍스트는 그 자체로 의미가 완전해야 하며, 주변 문맥에 의존하지 않아야 한다. 예를 들어 "이전 섹션에서 설명한 바와 같이"와 같은 표현은 트랜스클루전된 섹션이 다른 문맥에 나타날 때 혼란을 야기할 수 있으므로 문제가 된다. "컨텍스트 중립적" 텍스트의 예시로는 보일러플레이트 등이 있다. 컨텍스트 의존성 문제를 해결하기 위해 위키백과에서는 "noinclude", "onlyinclude", "includeonly"와 같은 태그를 사용한다.3. 2. 매개변수화
매개변수화는 독립적으로 변경할 수 있는 외생 변수에 따라 트랜스클루전된 텍스트의 특정 부분 또는 하위 섹션을 수정하는 기능을 의미한다. 이는 일반적으로 트랜스클루전된 텍스트에 하나 이상의 ''대체 플레이스홀더''를 제공하여 수행된다. 그런 다음 이러한 자리 표시자는 컨텍스트에서 최종 트랜스클루전된 출력을 렌더링하기 전에 해당 변수 값으로 대체된다.상황에 따라서는 트랜스클루전된 문장이 문맥 중립성을 엄격하게 유지하지 않아도 "파라미터화"를 통해 트랜스클루전 가능한 형태로 만들 수 있다. 파라미터화란, 트랜스클루전된 문장의 일부(플레이스홀더)를 문맥(파라미터)에 따라 변화시키는 것이다.
4. 웹에서의 구현
HTTP는 전송 프로토콜로서, 바이트 서비스를 통해 트랜스클루전에 대한 기본적인 지원을 제공한다. 즉, HTTP 요청 메시지에서 바이트 범위를 지정하는 것이다.[9]
트랜스클루전은 전송 전(서버 측) 또는 전송 후(클라이언트 측)에 발생할 수 있다.
웹 콘텐츠 게시자는 자신의 웹 사이트 자료가 다른 웹 사이트로 트랜스클루전되는 것에 반대하거나, 그렇게 하기 위한 동의를 요구할 수 있다. 이 관행을 비판하는 사람들은 다양한 형태의 인라인 링크를 대역폭 절도 또는 리칭이라고 부를 수 있다.
다른 게시자는 웹 광고 형태 또는 위젯 (예: 히트 카운터 또는 웹 버그)과 같이 자사의 자료가 다른 웹 사이트로 트랜스클루전되도록 특별히 추구할 수 있다.
매시업은 지오태깅된 사진을 대화형 지도에 배치하거나, 대화형 대시보드에 비즈니스 지표를 표시하는 것과 같이 리소스 또는 데이터를 새로운 애플리케이션으로 조립하기 위해 트랜스클루전을 사용한다.
4. 1. HTTP
HTTP는 바이트 서비스를 통해 트랜스클루전에 대한 기본적인 지원을 제공한다. HTTP 요청 메시지에서 바이트 범위를 지정하는 것이다.[9]트랜스클루전은 전송 전(서버 측) 또는 전송 후(클라이언트 측)에 발생할 수 있다. 예를 들면 다음과 같다.
- HTML 문서는 서버 측 포함 또는 다른 서버 측 애플리케이션을 사용하여 클라이언트에 전달되기 전에 서버에서 미리 구성될 수 있다.
- XML 엔티티 또는 HTML 객체는 클라이언트에서 구문 분석될 수 있으며, 클라이언트는 주 문서와 별도로 해당 리소스를 요청한다.
- 웹 브라우저는 문서의 마크업에 명시적인 지시 없이 작동할 수 있는 자체 알고리즘을 사용하여 요소를 캐시할 수 있다.
- AngularJS는 중첩된 디렉티브 작동을 위해 트랜스클루전을 사용한다.
웹 콘텐츠 게시자는 자신의 웹 사이트의 자료가 다른 웹 사이트로 트랜스클루전되는 것에 반대하거나, 그렇게 하기 위한 동의를 요구할 수 있다. 이 관행을 비판하는 사람들은 다양한 형태의 인라인 링크를 대역폭 절도 또는 리칭이라고 부를 수 있다.
다른 게시자는 웹 광고 형태 또는 위젯 (예: 히트 카운터 또는 웹 버그)과 같이 자사의 자료가 다른 웹 사이트로 트랜스클루전되도록 특별히 추구할 수 있다.
매시업은 지오태깅된 사진을 대화형 지도에 배치하거나, 대화형 대시보드에 비즈니스 지표를 표시하는 것과 같이 리소스 또는 데이터를 새로운 애플리케이션으로 조립하기 위해 트랜스클루전을 사용한다.
4. 2. 클라이언트 측 HTML
HTML은 이미지, 스크립트, 스타일 시트, 다른 문서, 다른 유형의 미디어 트랜스클루전을 위한 요소를 정의한다.[9] HTML은 웹 초창기부터 클라이언트 측 트랜스클루전에 크게 의존해 왔다. 이는 멀티미디어 요소 로딩이 완료되기 전에 웹 페이지를 더 빠르게 표시하기 위해, 이러한 객체에 대한 원시 데이터를 웹 페이지 마크업에 인라인으로 임베딩하는 것보다 효율적이기 때문이다.Ajax와 같은 기술을 통해 HTML 문서와 관련된 스크립트는 웹 브라우저에게 웹 서버에서 페이지의 완전히 새로운 버전을 가져와야 했던 이전 기술과 달리, 문서를 제자리에서 수정하도록 지시할 수 있다.[9] 이러한 스크립트는 사용자 입력이나 변화하는 조건에 따라 웹 브라우저가 페이지를 렌더링한 후 서버에서 요소나 문서를 트랜스클루전할 수 있다.
향후 HTML 버전은 엔터티, XPointer 문서 참조, XSLT 조작과 같은 XML 기술을 사용하여 문서 일부를 더 깊이 트랜스클루전하는 것을 지원할 수 있다.[9]
AngularJS는 중첩된 디렉티브 작동을 위해 트랜스클루전을 사용한다.[9]
4. 3. 서버 측 트랜스클루전
서버 사이드 인클루드와 서버 소프트웨어에 의해 해결되는 마크업 엔티티 참조를 통해 이루어진다. 대체 템플릿의 기능이다.4. 4. 웹 콘텐츠 게시와 트랜스클루전
웹 콘텐츠 게시자는 자신의 웹 사이트 자료가 다른 웹 사이트로 트랜스클루전되는 것에 반대하거나 동의를 요구할 수 있다. 이러한 관행을 비판하는 사람들은 다양한 형태의 인라인 링크를 대역폭 절도 또는 리칭이라고 부를 수 있다.[9]다른 게시자는 웹 광고 형태 또는 위젯(예: 히트 카운터 또는 웹 버그)과 같이 자사의 자료가 다른 웹 사이트로 트랜스클루전되도록 특별히 추구할 수도 있다.
매시업은 지오태깅된 사진을 대화형 지도에 배치하거나, 대화형 대시보드에 비즈니스 지표를 표시하는 것과 같이 리소스 또는 데이터를 새로운 애플리케이션으로 조립하기 위해 트랜스클루전을 사용한다.[9]
5. 소프트웨어 개발에서의 구현
소프트웨어 설계 또는 참고 자료에 소스 코드를 트랜스클루전하면 문서 내에 소스 코드를 표시할 수 있지만, 문서의 일부로 해석되지 않아 삽입된 코드의 의미론적 일관성을 소스 코드베이스와 관련하여 유지할 수 있다.
일부 프로그래밍 언어는 다른 파일을 명시적으로 포함(INCLUDE)하는 기능을 제공한다. 포함된 파일은 컴파일 시 변수에 따라 실행 가능한 코드, 선언, 컴파일러 지침, 문서의 뒷부분으로 분기하는 내용 등을 포함할 수 있다.
어셈블리 언어와 일부 고급 프로그래밍 언어는 일반적으로 매크로를 제공한다. 매크로는 정의를 생성하고, 실행 가능한 코드를 만들고, 루핑 및 기타 결정을 지원하며, 파일이 렌더링될 때 매크로에 제공된 매개변수에 따라 생성되는 문서를 수정하는 데 사용되는 특수 명명된 지침이다.
코볼(Cobol) 프로그래밍 언어에는 복사(COPY) 명령어가 있다. 복사된 파일은 복사하는 문서에 삽입되어 COPY 명령어를 대체한다. 복사된 파일의 코드와 선언은 복사 명령어의 REPLACING 인수를 통해 수정할 수 있다.
5. 1. 소스 코드 트랜스클루전
소프트웨어 설계 또는 참고 자료에 소스 코드를 트랜스클루전하면 문서 내에 소스 코드를 표시할 수 있지만, 문서의 일부로 해석되지 않아 삽입된 코드의 의미론적 일관성을 소스 코드베이스와 관련하여 유지할 수 있다.5. 2. 프로그래밍 언어 기능
일부 프로그래밍 언어는 다른 파일을 명시적으로 포함(INCLUDE)하는 기능을 제공한다. 포함된 파일은 컴파일 시 변수에 따라 실행 가능한 코드, 선언, 컴파일러 지침, 문서의 뒷부분으로 분기하는 내용 등을 포함할 수 있다.어셈블리 언어와 일부 고급 프로그래밍 언어는 일반적으로 매크로를 제공한다. 매크로는 정의를 생성하고, 실행 가능한 코드를 만들고, 루핑 및 기타 결정을 지원하며, 파일이 렌더링될 때 매크로에 제공된 매개변수에 따라 생성되는 문서를 수정하는 데 사용되는 특수 명명된 지침이다.
코볼(Cobol) 프로그래밍 언어에는 복사(COPY) 명령어가 있다. 복사된 파일은 복사하는 문서에 삽입되어 COPY 명령어를 대체한다. 복사된 파일의 코드와 선언은 복사 명령어의 REPLACING 인수를 통해 수정할 수 있다.
6. 콘텐츠 관리 시스템에서의 구현
단일 소스 출판을 위한 콘텐츠 관리에서 최고 수준의 콘텐츠 관리 시스템은 점점 더 트랜스클루전과 대체 기능을 제공하고 있다. 특히 컴포넌트 콘텐츠 관리 시스템은 모듈식 설계 원칙을 최적의 수준으로 끌어올리는 것을 목표로 한다. 미디어위키는 트랜스클루전과 대체 기능을 제공하며, 다른 상용 옵션을 위한 예산이 없을 수 있는 많은 소규모 조직 (예: 소규모 비영리 단체 및 중소기업)에게 좋은 기성품 옵션이다. 자세한 내용은 ''컴포넌트 콘텐츠 관리 시스템''을 참조하라.
참조
[1]
서적
The Discipline of Organizing
MIT Press
2013
[2]
서적
Initial Specifications for a COMMON BUSINESS ORIENTED LANGUAGE (COBOL) for Programming Electronic Digital Computers
http://bitsavers.tra[...]
Department of Defense
1960-04
[3]
논문
The development of the C language
https://dl.acm.org/d[...]
1993-03-01
[4]
서적
The C Preprocessor: For gcc version 6.3.0 (GCC)
[5]
논문
UNIX time-sharing system: Portability of C programs and the UNIX system
https://ieeexplore.i[...]
2020-02-27
[6]
간행물
A File Structure for the Complex, the Changing and the Indeterminate
Proceedings of the ACM 20th National Conference
1965
[7]
웹사이트
Transclusions in an HTML-Based Environment
http://info.iicm.edu[...]
2017-01-27
[8]
웹사이트
The Little Transquoter
http://www.xanadu.co[...]
[9]
웹사이트
AngularJS
https://docs.angular[...]
2016-08-11
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com