Helper
 

HTML

최근 수정 시각:


1. 마크업 언어
1.1. 개요1.2. 특징 및 설명1.3. 태그1.4. 버전1.5. HTML 문서 저장 방법1.6. 트랜스컴파일러1.7. 바깥 고리
2. 가방 브랜드

1. 마크업 언어[편집]


<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>Hello world!</title>
</head>
<body>
  <h1>Hello world!</h1>
</body>
</html>
HTML5로 작성한 Hello, world!

파일:q48nDmx.jpg

마셜제도에서 팀 버너스리 경을 기리며 발행된 특별우표.


HyperText Mark-up Language

1.1. 개요[편집]

"Hyper Text Mark-up Language" 의 약자. 웹 페이지의 모습을 기술하기 위한 규약. 프로그래밍 언어가 아니라 마크업 언어[1]다. 헷갈리지 않도록 하자. 웹사이트에서 흔히 볼 수 있는 htm 이나 html 확장자가 바로 이 언어로 작성된 문서이다.

최초 제안자는 당시 CERN에서 계약직으로 착취당하던 공돌이 연구중이던 물리학자 티머시 J. 버너스리 경(Timothy John Berners-Lee OM, KBE, 1955년 6월 8일 ~ ) [2] 지금 이 문서을 보고 있는 독자가 이렇게 편하게 인터넷으로 위키를 하고 있게 된 것도 다 이 양반이 대인배스럽게 HTML에 대한 특허를 내지 않았기 때문이다. 못 믿겠으면, 지금 마우스 오른쪽을 클릭하고 "소스 보기" 메뉴를 선택해보자. URL, HTTP, WWW의 전신인 Enquire 등도 이 양반이 세트로 개발하고 제안했다. TCP/IP 통신규약을 만든 빈턴 G. 서프(Vinton Gray Cerf)와 함께 인터넷의 아버지로 불리운다.


참고로 나무위키 내에서는 다음과 같이 내용을 집어넣어 HTML을 적용시킬수 있다.

{{{#!html (내용) }}}


Hello World!

1.2. 특징 및 설명[편집]

HTML은 문법 오류에 관대한 편이다.[3] 그래서 닫는 태그를 누락한다던가 태그에 오타가 난다던가 하는 오류가 발생해도 어느 정도는 씹어먹고 작동할 수 있다. 물론 어느 정도까지만. div태그 등 중요한 태그에서 오타가 난다면 사이트 레이아웃이 홀랑 깨져버리기도 한다. 위에 있는 HTML5 표준 형식 HTML이 아니더라도, 그냥 <h1>Hello World! 라고만 써도(doctype선언문 누락, html선언 태그 누락, head, body태그 누락, h1의 닫는 태그 누락) 어지간해서는 의도한 바대로 출력이 된다. 물론 디버그 모드로 보면 이 부분이 잘못되었다고 에러가 떠 있을 것이다. HTML 최상단의 doctype 선언이 누락될 경우에는 이야기가 많이 달라지는데, 이 경우 브라우저는 해당 HTML문서를 호환성 모드(Quirks mode)[4]로 해석하여 렌더링한다.

그러나 HTML은 서버에서 보내오는 정보대로 페이지를 그려내는 것에는 강하지만 반대로 사용자의 입력에 민감하게 반응하여 페이지를 그리는 것에는 약한 편이다. 또한 동적인 화면구성이 힘든 약점도 있다. 이러한 면을 보완하기 위하여 JavaScript 등의 각종 스크립트의 도움을 받으며, 요즘 유행하는 AJAX도 그런 면을 보완하기에 적합하다. 그 외에 멀티미디어 지원을 위하여 외부 프로그램을 불러올(embedding) 수 있다. 다만 이는 브라우저 의존적인 면이 강하여, 이 브라우저로 잘 표시되는 페이지가 다른 브라우저로는 완전 엉망이 되는 경우도 있다. HTML5는 비디오/오디오 처리를 위한 별도의 <video>. <audio> 태그를 추가하고 동적인 그래픽은 <svg><canvas>태그를 통해 사용할 것을 권고하고 있으며 외부 플러그인은 가급적 사용하지 않으려 하고 있다. 그래도 아직은 <embed>태그와 <object>태그를 통해 외부 플러그인(플래시 등)을 제한적으로 실행할 수는 있다.

1.3. 태그[편집]

HTML을 기술하기 위하여 사용하는 명령어의 집합을 태그(Tag)라고 한다. 태그는 기본적으로 여는 태그와 닫는 태그로 구성되며, 닫는 태그 없이 단독으로 이용하는 태그도 있다. 태그에 주는 다양한 옵션은 모두 여는 태그에 지정하며, 닫는 태그는 태그 효과가 적용되는 범위의 끝을 나타내는 기능만 한다.

그런데 태그 종류가 수십 가지가 넘는데다, 지정가능한 옵션까지 일일이 열거하면 책 한 권 분량이 된다. 따라서 일반인은 사용빈도가 높은 일부 태그만 암기하고, 나머지는 '태그사전(또는 레퍼런스)'이라고 하는 도움말 파일을 참고하는 편이다. 물론 암기 범위는 고급 사용자 내지는 프로페셔널(흔히 웹 디자이너라고 하는 사람들)로 갈수록 넓어진다.

태그는 HTML의 근간이기 때문에, HTML 기반 채팅 프로그램에서도 사용할 수 있다. 대표적인 예가 cafe24 채팅. 다만 보안상 문제와 수많은 테러 때문에 현재는 대부분의 태그를 막고, 일부 태그만 허용하는 상태. 그림 삽입이나 페이지 링크, 음악 삽입, marquee 정도가 허용된다. 대부분의 PHP 기반 웹 게시판에서도 원칙적으로 글 제목과 내용에 태그를 적용시킬 수 있다. 다만 채팅과 같은 이유로 그 사용을 제한하는 경우가 많다. 특히 제목부분에는 어떤 태그도 허용하지 않는 것이 일반적.

HTML 4와 XHTML에서의 태그 사용 방식이 약간 다르다. 여는 태그와 닫는 태그가 별도로 존재하지 않는 태그 (<img>, <br>, <hr> 등)의 경우 XHTML에서는 XML의 표준 표현법에 따라 <img /> 등으로 닫는 부등호 앞에 /를 달아준다. 덧붙여 <img/>보다 <img />(/ 앞에 공백이 있음)을 쓰는 것이 오래된 브라우저와의 호환성을 보장하는 방법이다. HTML 5에서는 HTML 4의 방식으로 다시 돌아갔다.

웹 디자이너, 웹 프로그래머는 기본 소양이라고 할 수 있다. '태그사전'의 도움을 받으면, 약간의 교육만으로 누구나 간단한 웹 사이트는 만들 수 있다. 물론 복잡한 사이트는 경험이 필요하기 때문에 입문자는 만들기 힘들다.

사실 HTML 규격에는 HTML이 어떻게 표시돼야 할지에 대해서 큰 틀만 정해져 있고 구체적으로는 설명하지 않고 있다. 예를 들어 테이블의 경우 선을 이용해서 줄과 칸을 구별하는 식으로 정해져 있지만, 선의 모양을 구체적으로 정의하지는 않은 것이다. 애초에 HTML은 화면 구성보다는 의미 표현에 치중하고 있기 때문이다. 결국 한 HTML 파일도 브라우저마다 다르게 보이는 경우가 존재한다. 이로 인해 최근의 추세는 HTML에는 표시하고자 하는 문서의 구조를 중심으로 기술하고, 구체적인 표시 방법은 CSS에서 정의하는 방향으로 나아가고 있다(하지만 이 CSS도 브라우저마다 표시하는 방법이 달라서 골치를 썩이는 경우가 있다. 이것은 전적으로 브라우저 책임. 특히 IE6같은 옛날 브라우저는 문제가 심각하다). 이 때문에 Acid2 TestAcid3 Test[5] 등의 브라우저가 얼마나 표준을 잘 지키는가를 확인하는 테스트도 등장하였다.

1.4. 버전[편집]

  • HTML 1.0
    최초의 HTML. 1991년 나왔다. 팀 버너스 리가 월드 와이드 웹을 발표하면서 내놓은 버전이다. 처음에는 버전이 붙지 않았으나 나중에 보강된 2.0 버전이 나오면서 붙은 이름. 80년대에 존재하던 SGML이라는 마크업 언어를 참조하여 만들어졌다.

  • HTML 2.0
    1995년 11월 24일, HTML 사상 최초로 표준으로 지정되었다. HTML 1.0에서 파일 업로드 양식과 프레임, 테이블, 이미지맵, 국제화 기능이 추가된 것으로, 팀 버너스 리와 여러 다른 사람의 노력으로 표준화되었다. 인터넷의 대중화가 시작되면서 이때부터 HTML도 널리 알려지기 시작했다. 하지만 동시에 HTML의 문제점 역시 두드러졌던 시기이다. 95년대 브라우저 전쟁시기 웹페이지 관리자는 IE를 위한 페이지와 넷스케이프를 위한 페이지를 따로 만들어야 했었다. 그러하여 그것을 보완하기 위해 W3C에서 보완한 것이 HTML 3.2.

  • HTML 3.2
    1997년 1월 표준으로 지정된 HTML 버전. 표준화 작업을 담당하는 W3C에서 처음으로 나왔다. 수학 수식을 사용하는 태그를 완전히 제외하고, 넷스케이프의 비주얼 관련 태그를 수록했다. <b><font> 태그가 들어간 것이 이 버전.

  • HTML 4.0
    1997년 12월 표준으로 지정된 HTML 버전. Strict, Transitional, Frameset의 세 가지 문서 형태를 지원하는 것이 가장 큰 변화이다. Strict는 비표준이나 비권장 태그를 절대 허용하지 않는 엄격한 문서이고, Transitional은 비표준이나 비권장 태그도 허용하는 융통성 있는 문서, Frameset은 웹브라우저 화면을 나눈 프레임 문서에 쓰는 것이다.

  • HTML 4.01
    1999년 12월 표준으로 지정된 버전으로. 2014년 10월 28일 HTML5의 최종 권고안이 확정되면서 구버전이 되었다. 비주얼 태그가 모두 비권장으로 지정된 것이 가장 큰 변화이다. 기존 비주얼 태그는 CSS로 빼서 사용할 것을 권장하고 있다.

  • XHTML 1.0
    2000년 1월 26일 표준으로 지정된, HTML 4.01과 함께 가장 많이 사용되는 표준이다. 내용상의 변화는 거의 없고, HTML 4.01을 XML 형식으로 포팅한 버전. 따라서 HTML 4.01의 내용을 거의 그대로 가지고 있다. 이 때문에 2013년 지금까지도 HTML 4.01과 함께 가장 많이 사용되고 있다.

  • XHTML 1.1
    2001년 5월 31일 표준으로 지정된 XHTML의 가장 최신 버전이지만, 거의 사용되지 않는 실정이다. XHTML 1.0까지 있었던 Transitional 형식이 빠지면서 비표준이나 비권장 태그와의 호환성이 사라져 버렸다. 이 때문에 지나치게 엄격하다는 지적과 함께 사용되지 않게 되었다. 이어 2014년 10월 28일 HTML5의 최종 권고안이 확정되면서 구버전이 된 상태.

  • XHTML 2.0
    2009년 말에 논의가 중단된 XHTML의 버전이다. 원래 XHTML 1.1을 잇는 차기버전으로 이야기가 되고 있었지만 2008년 HTML 5로 방향을 선회하면서 중단되었다.

  • HTML5
    2014년 10월 28일에 확정된 HTML의 최신 버전이다. 문서 참고.

1.5. HTML 문서 저장 방법[편집]

HTML 문서를 작성한 후 메모장에서 저장할 시, 다른 이름으로 저장 선택후, 파일명 뒤에 .html(htm)을 적는것이다. 이렇게 하지 않으면 저장 방법도 없을 뿐더러, 그냥 메모장이 열린다.

.html로 바꾸고 난 이후에 수정하고 싶다면, .html 확장자 파일을 오른쪽 클릭후, 연결 프로그램을 선택하고 Notepad(메모장)을 선택하거나, .html 파일을 메모장에 끌어다 놓기 해주자. 다시 확장자를 .txt로 바꿔도 된다. 참고로 윈도우즈의 메모장으로 HTML 문서를 편집하면, 각 줄마다 CRLF가 달라붙어서 문제가 되기도 한다. 웬만하면 Editplus나 vim, Notepad++같은 에디터로 편집하도록 하자. 맥이라면 Xcode를 쓰면 된다. [6][7] 이런 에디터의 경우 HTML이나 서버 사이드 스크립트 코딩에 최적화되어 있기 때문에 구문에 따라 색상구분도 되는 등 여러가지 장점이 있다.

HTML 파일 형식의 확장자는 .html이며, '.htm'이라고도 쓸 수 있다. 이는 도스 시절 확장자가 3글자로 제한되었기 때문이다. 윈도우즈 95로 넘어오면서 이 제한이 없어져서 지금은 거의 html로 쓰는 편이다. 또한 html의 인코딩은 현재 거의 utf-8로 통일되었다. 정말 오래된 사이트는 euc-kr을 사용한다. 참고로 일본쪽의 오래된 사이트는 shift-jis 가 가장 보편적이고 euc-jp도 간간히 보인다. 두 나라 모두 최신 사이트는 모두 UTF-8 사용.

작성하는 방식은 크게 텍스트 에디터를 이용해 직접 코드를 편집하는 방법과 WYSIWYG편집기를 사용하는 방법이 있다. WYSIWYG 방식은 드림위버나모 웹에디터가 지원하는데 2016년 현재는 WYSIWYG방식은 거의 온라인 에디터로 대체되었고 본격적인 웹 개발에는 사용하지 않는다. 구조화된 HTML을 강조하는 HTML5와는 영 심각하게 궁합이 안 맞기 때문이다. 심지어 멀쩡히 손코딩(?)으로 작성한 HTML문서를 이들 위지윅 에디터에서 열면 자기 맘대로 소스 코드를 조작하고 임의의 메타데이터를 삽입하거나 태그를 추가하는 등의 뻘짓(!)을 해서 코드를 망가뜨려 놓기도 한다. 특히 XHR을 통해 동적인 기능을 수행하는 홈페이지는 이들 위지윅 에디터로 열어보기만 해도 해당 동적인 기능들이 일제히 망가져서 복구 불가능한 피해를 입을 수 있다. 정적인 기능조차 CSS적용에 문제가 생겨 레이아웃이 뒤틀려버릴 수 있다. 사실 PHP만 사용하려 해도 이들 위지윅 에디터는 전혀 쓸 수가 없고 모든 코드를 텍스트 에디터로 작성해 넣어야 한다.

제로보드 스킨등을 만들거나 혹은 기타 다른 홈페이지용 게시판을 자신의 홈페이지에 맞게 만들기 위해서 필요한 PHP나 CGI파일의 이미지 수정을 위해서는 어느 정도 메모장으로 HTML을 구성하는 능력이 필요하다.

참고로, txt확장자 파일도 웹 브라우저의 파일 -> 열기 해서 웹 브라우저 안에 내용을 띄울수 있다. 하지만 태그는 실행되지 않으니 주의.

마지막으로, 이렇게 저장한 .html파일을 더블클릭해서 실행할 경우 HTML파일 내부에서 다른 외부 리소스들을 불러오는 데 제약이 가해진다. 사실상 HTML파일 하나만 로딩되는 수준인데 이는 브라우저의 보안 모델이 로컬 컴퓨터의 리소스(파일)를 읽지 못하게 제약을 걸었기 때문으로, 이 문제를 피하려면 웹 서버를 실행해서 http://localhost 로 접근해야 한다. 그냥 더블클릭했을 때의 URL은 file:// 로 시작하는 걸로 구분할 수 있다. 로컬 파일 서버를 실행하는 것보다는 호스팅 서비스를 FTP를 통해 이용하는 방법이 더 간단하므로 이 편을 추천한다.

1.6. 트랜스컴파일러[편집]

요즘(2016년)의 웹 환경이 나날이 대형화되고 복잡해짐에 따라 웹 사이트의 근간을 이루는 HTML, CSS, JavaScript는 모두 대안 언어나 기술이 존재한다. HTML은 열고 닫는 태그를 일일이 오타 없이 쓰는 게 불편하고 마크업 언어인 탓에 템플릿 지원이 되지 않고 객체 지향적으로 작성이 불가능한 등의 여러 단점이 있다. 그래서 이것을 극복하고자 pug(구 JADE)라는 컴파일러(트랜스컴파일러)가 만들어졌다. 들여쓰기로 블럭을 구분하고 변수나 템플릿 기능을 추가하고 자주 사용하는 id, class 속성을 특수 문법을 통해 간편하게 지원하는 등 여러 편의 기능을 제공한다. pug자체는 컴파일러이고 컴파일 결과가 HTML로 나오는 것이라서 pug만으론 홈페이지에 동적인 기능을 삽입하기 곤란하다. 어디까지나 정적 HTML문서를 만들어내는 데 특화된 언어 및 유틸리티이다. jQuery 와 궁합이 잘 맞는 편이다. jQuery를 사용할 때에는 class속성을 매우 자주 쓰게 되는데 pug에서는 점하나만 찍으면 클래스 지정이 가능하고 들여쓰기를 강제하는 문법 구조 때문에 태그의 부모자식 관계를 파악하기도 쉽다. 또한 결과물이 평범한 HTML문서이기 때문에(사용자가 작성하지 않은 어떠한 메타데이터도 추가하지 않는다) 업무를 인수인계할 때 받을 사람이 pug를 도저히 사용할 수 없다고 판단되면 마지막으로 컴파일한 HTML파일을 대신 전달해주어도 아무 문제가 없다. 서버 사이드 렌더링 기능을 사용하지 않고 순수하게 트랜스컴파일러만 사용해 정적 HTML을 생성하는 프로젝트 한정. 물론 이때는 minify 옵션을 꺼서 사람이 읽을 수 있는 HTML을 생성하게 해 줘야 한다.

그리고 pug는 트랜스컴파일러이지 VirtualDOM의 일종이 아니다. 그래서 최종 결과물인 홈페이지의 렌더링 속도를 가속해주지는 못한다. 엄격하게 구조화된 HTML을 생성하기 때문에 HTML문서 자체의 파싱 속도는 빠르지만 DOM조작 속도를 개선하지는 못한다는 소리다.

pug 홈페이지에서는 서버 사이드 렌더링 언어로 pug를 소개하고 있는데 정적 컴파일도 가능한 언어이다. 또한 node.js에서 돌아가는 라이브러리인 탓에(컴파일러 겸 라이브러리) express 프레임워크와도 궁합이 좋은 편이다.

1.7. 바깥 고리[편집]

2. 가방 브랜드[편집]

주식회사 제이비패션이 판매하고 있는 가방 브랜드로 Have True Mind for Look의 약자이다.
위 항목의 HTML을 아는 사람이라면 분명 이 로고 보고 의아해했을 것이다.

[1] 마크업 정보를 표현하는 언어로 문서의 내용 이외의 문서의 구조나 서식같은 것을 포함한다. [2] 현재 멀쩡히 살아있는 할아버지. 서울 코엑스에서 열린 2014 WWW 에도 참석했다. 기사 작위도 갖고 있다. 이름 뒤에 붙은 것은 OM(Order of Merit. 메리트 훈장), KBE(Knight Commander of Order of the British Empire) 물론 명예직…[3] XHTML 제외. XHTML은 XML의 부분집합이라 문법에 엄격하다.[4] HTML 표준에서 벗어난 웹 브라우저의 독자적인 렌더링 모드다. 표준을 따르지 않으므로 브라우저간의 호환성은 많이 떨어진다.[5] 2011년 12월 현재는 상황이 매우 좋아져서 IE9를 포함한 대다수의 브라우저들이 Acid3 테스트를 99%에 가깝게 통과한다![6] HTML 문서의 경우 웹 브라우저가 해석하니 별 문제가 없긴 하지만 CGI프로그램의 경우 LF(Line Feed)가 아닌 CRLF(Carriage return & Line Feed)가 붙으면 인터프리터의 주소를 찾지 못하는 문제가 생긴다. CGI 프로그램이 돌아가는 환경이 유닉스나 리눅스가 대부분이기 때문이다. 윈도우 환경에서 돌아가는 CGI라면 해당없다.[7] FTP를 이용해서 올릴 때 ASCII 모드로 올리면 저장될 때 자동으로 서버의 OS 환경으로 맞춰준다.[8] 주의 : 이 사이트는 W3C와 아무런 관련이 없다. 여기 참고.