안녕하세요 기형쌤입니다.

한동안 포스팅을 못 하다가 오랜만에 컴퓨터 앞에 앉네요.

어느새 2021년이 되었습니다. 다들 새해 복 많이받으세요!

새해가 되었음에도 아직도 코로나는 가라앉을 생각을 하지 않네요.

이대로 코로나가 생활의 일부가 되는게 아닌가 걱정이 되는 요즘입니다.

 

상황이 이렇다보니 취업시장은 점점 더 얼어붙고, 비대면 면접이니 뭐니 하며

일상적으로 아는 취업준비가 어려워지고 있죠.

심지어 취업에 성공하더라도 바로 자택근무를 시작하는 경우가 다반사라고 하더라구요.

 

상황이 이렇다보니 많은 사람들이 집에서도 할 수 있는 일을 찾기 시작했고,

그에따라 IT업계로 뛰어드는 분들도 많아졌습니다.

누가 뭐라해도 프로그래밍은 집에서도 할 수 있는 작업들이 맞으니까요.

 

오늘 제가 들고 온 이야기는 HTML에 관한 이야기 입니다.

HTML이란?

일단 HTML은 프로그래밍 언어가 아닙니다. HyperText Mark-up Language의 약자인 HTML은

그 이름에서 볼 수 있듯이 Mark-up Language 입니다.

그렇다면 마크업 언어는 어떤 것을 뜻할까요?

마크업 언어는 문서가 화면에 표시되는 형식을 나타내거나 데이터의 논리적인 구조를 명시하기 위한

규칙들을 정의한 언어의 일종입니다. 데이터를 기술한 언어라는 점에서 프로그래밍 언어와는 분명한 차이가 있습니다.

본래는 교정 부호 등을 표기하는데에 사용했지만, 점차 용도가 확장되어 문서의 구조를 표현하도록 발전한 언어입니다.

 

마크업 언어에 대해 자세히 설명하자면

실제 책을 하나의 프로그램이라고 생각하면 편하다.

그리고 사람이 그 책에 볼펜으로 밑줄을 긋거나 볼펜으로 필기를 하는 행위가 마크업의 일종이라고 할 수 있습니다.

또는 그래픽 디자이너들한테

'책 표지는 배경을 무지개 그라데이션으로 넣어주시고 제목은 중앙에 검은색 굴림체로 크게 박아주세요'

라고 말하는 것 또한 자연언어 기반 마크업 언어라고 할 수 있습니다.

 

우리가 흔히 웹사이트에서 보는 로그인 시스템이나 계정에 따라 다르게 보이는 프로필 등은

모두 프로그래밍 언어가 조합된 웹사이트 입니다.다.

일반적인 마크업 언어만으로는 이러한 기능을 구현하는 것이 불가능합니다.

 

보다 컴퓨터 상의 실제 사례를 보자면, 우선 한컴오피스 한글에서 수식 입력기를 들 수 있습니다.

한글의 수식입력기에서는 마우스로 기호를 하나하나 찾아 골라서 클릭을 하는 식으로도 수식을 입력을 할 수 있지만,

수식이 나타나는 화면의 아래창에 몇가지 명령어들을 규칙에 맞춰 직접 타이핑하며

마우스를 사용하지 않고도 여러가지 수식들을 입력할 수도 있습니다.

이때 사용되는 명령어들도 한컴오피스 한글 문서에서 수식 문자가 화면에 표시되는

모양과 형식을 결정하는 마크업 언어에 해당하게 됩니다.

 

돌아와서

HTML 언어는 웹 페이지의 모습을 기술하기 위한 프로그래밍 언어가 아니라 마크업 언어 입니다.

웹사이트에서 흔히 볼 수 있는 htm이나 html 확장자의 문서가 바로 이 언어로 작성된 문서입니다.

 

HTML은 프로그래밍 언어에 비하여 문법 오류에 관대한 편입니다.

그래서 닫는 태그를 누락하거나 태그에 오타가 나거나 하는 오류가 발생해도 어느 정도 무시하고 작동할 수 있습니다.

다만 <div> 태그 등 중요한 태그에서 오타가 난다면 사이트 레이아웃이 깨져버리기도 하니

오타나 누락이 없는게 가장 좋겠죠?

 

예를 들어

<h1>Hello World!라고만 써도

(<!DOCTYPE> 선언문 누락, <html> 선언 태그 누락, <head>, <body> 태그 누락, 닫는 태그 </h1> 누락)

웬만해서는 의도한 바대로 출력이 됩니다.

 

HTML은 서버에서 보내오는 정보대로 페이지를 그려내는 것에는 강하지만

반대로 사용자의 입력에 민감하게 반응하여 페이지를 그리는 것에는 약한 편입니다.

또한 동적인 화면 구성이 힘들다는 약점도 있습니다.

이러한 약점을 보완하기 위하여 JavaScript 등의 각종 스크립트의 도움을 받으며,

요즘 유행하는 AJAX도 그런 면을 보완하기에 적합합니다.

 

그 외에 멀티미디어 지원을 위하여 외부 프로그램을 불러올(embedding) 수 있습니다.

다만 브라우저 의존적인 면이 강하기 때문에

한 쪽 브라우저로 잘 표시되는 페이지가 다른 브라우저로는 완전 엉망이 되는 경우도 있습니다.

 

HTML5는 비디오/오디오 처리를 위한 별도의 <video><audio> 태그를 추가하고

동적인 그래픽은 <svg>와 <canvas> 태그를 통해 사용할 것을 권고하고 있으며

외부 플러그인은 가급적 사용하지 않으려 하고 있습니다.

그러나 아직은 <embed> 태그와 <object> 태그를 통해 외부 플러그인을 제한적으로 실행할 수는 있습니다.

하지만 2021년부터 어도비가 대표적인 플러그인인 플래시의 지원을 종료하면서 사용하지 않을 것을 권고하고 있습니다.

그래서 이전에 플래시로 할 수 있던 기능을 HTTP,CSS,JavaScript (혹은 Node.js) 등으로 통폐합 시키게 됩니다.

태그

태그는 HTML의 근간이라 불립니다.

HTML을 기술하기 위하여 사용하는 명령어의 집합을 태그(Tag)라고 합니다.

태그는 기본적으로 여는 태그와 닫는 태그로 구성되며, 닫는 태그 없이 단독으로 이용하는 태그도 있습니다.

태그에 주는 다양한 옵션은 모두 여는 태그에 지정하며,

닫는 태그는 태그 효과가 적용되는 범위의 끝을 나타내는 기능만을 합니다.

 

HTML은 웹 브라우저마다 지원하는 태그가 조금씩 다르며,

같은 태그라도 작동하는 방법이 다르지만 대체로 비슷한 태그를 지원합니다.

 

그래서 태그 종류가 수십 가지가 넘는 데다가,

지정가능한 옵션까지 일일이 열거하면 책 한 권 분량의 엄청난 분량이 됩니다.

따라서 일반적으로는 사용빈도가 높은 일부 태그만 암기하고,

나머지는 '태그사전(또는 레퍼런스)'이라고 하는 도움말 파일을 참고하는 편이 대부분 입니다.

물론 암기 범위는 고급 사용자 내지는 프로페셔널(흔히 웹 퍼블리셔라라 불리는 사람들)로 갈수록 넓어지겠죠?

 

웹 퍼블리셔, 웹 디자이너, 웹 프로그래머에게 태그는 기본 소양이라고 할 수 있습니다.

'태그 사전'의 도움을 받으면, 약간의 교육만으로 누구나 간단한 웹 사이트는 만들 수 있습니다.

물론 복잡한 사이트는 경험이 필요하기 때문에 입문자들은 만들기 어렵습니다.

 

사실 HTML 규격에는 HTML이 어떻게 표시돼야 할지에 대해서

큰 틀만 정해져 있고 구체적으로는 설명하지 않고 있습니다.

예를 들어 테이블의 경우 선을 이용해서 줄과 칸을 구별하는 식으로 정해져 있지만,

선의 모양을 구체적으로 정의하지는 않은 것처럼 생각하시면 편합니다.

애초에 HTML은 화면 구성보다는 의미 표현에 치중하고 있기 때문에

결국 한 HTML 파일도 브라우저마다 다르게 보이는 경우가 존재합니다.

이로 인해 최근의 추세는 HTML에는 표시하고자 하는 문서의 구조를 중심으로 기술하고,

구체적인 표시 방법은 CSS에서 정의하는 방향으로 나아가고 있습니다.

 

HTML 문서를 만드는 방법

HTML 문서의 장점은 언어를 알고있다면 작성은 쉽다는 것에 있습니다.

타 프로그래밍 언어들처럼 언어를 만들기 위한 고유의 환경이 필요하다던지

리눅스라는 OS에서 개발해야한다던지 하는 제약이 없고

간단하게 메모장에 작업을 진행해도 됩니다.

 

HTML 문서를 작성한 후 메모장에서 저장할 시, 다른 이름으로 저장을 선택한 뒤,

파일 형식을 '모든 파일 (*.*)'로 지정하고 파일명 끝에 .html이나 .htm을 추가하면 HTML 문서가 됩니다.

이렇게 하지 않으면 그냥 메모장으로 열리게 되겠죠?

 

.html로 바꾸고 난 이후에 수정하고 싶다면, .html 확장자 파일을 오른쪽 클릭 후,

연결 프로그램을 선택하고 Notepad(메모장)을 선택하거나, .html 파일을 메모장에 끌어다 놓기 하면 됩니다.

다시 확장자를 .txt로 바꿔도 동일하게 작동 합니다.

참고로 윈도우즈의 메모장으로 HTML 문서를 편집하면, 각 줄마다 CRLF가 달라붙어서 문제가 되기도 합니다.

그러니 웬만하면 Editplus나 vim, Notepad++ 같은 에디터로 편집하도록 하는것을 추천드립니다.

이런 에디터의 경우 HTML이나 서버 사이드 스크립트 코딩에 최적화되어 있기 때문에

구문에 따라 색상 구분도 되는 등 여러 가지 장점이 있습니다.

 

작성하는 방식은 크게 텍스트 에디터를 이용해 직접 코드를 편집하는 방법과

WYSIWYG 편집기를 사용하는 방법이 있습니다.

WYSIWYG 방식은 드림위버 나모 웹에디터가 지원하는데 현재의 WYSIWYG 방식은

거의 온라인 에디터로 대체되었으며, 본격적인 웹 개발에는 사용되지 않고 있습니다.

이유는 구조화된 HTML을 강조하는 HTML5와는 심히 궁합이 안 맞기 때문입니다.

 

제로보드 스킨 등을 만들거나 혹은 기타 다른 홈페이지용 게시판을 자신의 홈페이지에 맞게 만들기 위하여

필요한 PHP나 CGI 파일의 이미지 수정을 위해서는 어느 정도 메모장으로 HTML을 구성하는 능력이 필요합니다.

 

마지막으로, 이렇게 저장한 .html 파일을 더블클릭해서 실행할 경우

HTML 파일 내부에서 다른 외부 리소스들을 불러오는 데 제약이 가해집니다.

사실상 HTML 파일 하나만 로딩되는 수준인데 이는 브라우저의 보안 모델이 로컬 컴퓨터의 리소스(파일)를

읽지 못하게 제약이 걸려있기 때문으로, 이 문제를 피하려면 웹 서버를 실행해서

http://localhost 또는 http://127.0.0.1 로 접근해야 합니다.

그냥 더블클릭했을 때의 URL은 file:// 로 시작하는 걸로 구분할 수 있습니다.

간단한 페이지를 만든다면 로컬 웹 서버를 실행하는 것보다 저렴한 웹호스팅 계정을 개설한 뒤

FTP를 통해 이용하는 방법이 더 간편하므로 이 방법을 추천드리는 편입니다.

 

컴파일러

2016년 즈음부터는 웹 환경이 나날이 대형화되고 복잡해짐에 따라 웹 사이트의 근간을 이루는

HTML, CSS, JavaScript는 모두 대안 언어나 기술이 존재합니다.

HTML은 열고 닫는 태그를 일일이 오타 없이 쓰는 게 불편하고 마크업 언어인 탓에

템플릿 지원이 되지 않고 객체 지향적으로 작성이 불가능한 등의 여러 단점이 있었습니다.

 

그래서 이것을 극복하고자 Pug(구 JADE)라는 컴파일러(트랜스컴파일러)가 만들어졌습니다.

들여쓰기로 블럭을 구분하고 변수나 템플릿 기능을 추가하고 자주 사용하는 id, class 속성을

특수 문법을 통해 간편하게 지원하는 등 여러가지 기능을 제공합니다.

 

그렇지만 Pug 자체는 컴파일러이고 컴파일 결과가 HTML로 나오는 것입니다.

어디까지나 정적 HTML 문서를 만들어내는 데 특화된 언어 및 유틸리티이기 때문에

Pug만으론 홈페이지에 동적인 기능을 삽입하기는 어렵습니다.

 

그리고 Pug는 트랜스컴파일러이지 Virtual DOM의 일종이 아닙니다.

그래서 최종 결과물인 홈페이지의 렌더링 속도를 가속해주지는 못합니다.

엄격하게 구조화된 HTML을 생성하기 때문에 HTML 문서 자체의 파싱 속도는 빠르지만

DOM 조작 속도를 개선하지는 못한다고 이해하시면 됩니다.

 

어디서 배울까?

HTML은 다른 프로그래밍 언어들과는 확실히 다르고 배우기 쉬워보이지만

이 또한 문법이 존재하는 언어입니다.

그래서 혼자 시작하시는 분들께는 제대로 배워보시는걸 추천드립니다.

현재 웹 개발자 관련하여 전문가 과정을 진행하고 있습니다.

확실하게 배우시고 취업까지 하셔서 코로나 시국임에도 불구하고

취업과 성공 모두 잡으시길 바랍니다.

오픈 카톡 링크를 남겨놓으니 그 쪽으로 문의 주시면 빠르게 안내드리겠습니다.

 

open.kakao.com/o/sHczZCIc

 

개발자로 취직의 빠른길. IT전문가과정 무료상담 진행중

#IT#취업#국비지원#국민취업지원제도#국비#화이트해커#정보보안#Java#C언어#웹개발자#스펙#무료#취업준비#빅데이터#시스템엔지니어#앱개발

open.kakao.com

 

안녕하세요 기형쌤입니다.

하늘이 깨끗해지고 찬 바람이 이제는 쌩쌩부는 완연한 겨울이 되었습니다.

영하 10도의 너무 추운 날씨가 계속 되어가고 있어요.

다들 감기 걸리지 않게 조심하세요!!

 

오늘 제가 들고 온 이야기는 웹개발자에 대한 이야기입니다.

웹개발자를 지향하는 분들이 흔히 하시는 말들이

프론트엔드로 갈 것인지, 백엔드로 갈 것인지

풀 스텍 개발자를 목표로 할 것인지에 대한 것들이 많습니다.

 

그렇다면 우리는 물어볼 수 있겠죠?

도대체 프론트엔드는 뭐고 백엔드는 뭐지?

풀 스텍은 도대체 뭘 뜻하는거야?

 

개발자를 목표로 한다면 그래도 지향하고자 하는 것의 의미 정도는

어느정도 알고있어야하지 않겠어요?

 

프론트엔드 개발자?

그렇다면 프론트엔드 개발자는 어떤 일을 할까요?

프론트엔드는 프론트 즉 앞에 나와있는것들에 대한 개발을 하는 분들입니다.

흔히 우리가 웹상에 들어가면 보이는 버튼, 베너, 웹을 통해 보는 다양한 콘텐츠들이

사용자들의 요청에 잘 반응해서 잘 동작하게 만드는 일을 책임집니다.

 

즉 사용자가 직접 상호작용을 하는 부분들인 글꼴부터 색상,

드롭 다운 메뉴 및 슬라이더에 이르기까지 인터넷에서 보게되는 모든 것들을

브라우저의 제어를 받는 HTML, CSS, JAVASCRIPT를 이용하여 조합하여 개발하는 사람들 이라고 할 수 있습니다.

 

프론트엔드 개발자가 되기 위해 필요한 것?

앞서 말한 것처럼 프론트엔드 개발자는 웹 사이트에서 사용자가 직접 경험하는 부분과

그 경험의 아키텍처를 담당합니다.

이를 위해서 위에서 말한 HTML, CSS, JAVASCRIPT의 활용에 능숙할 줄 알아야합니다.

 

즉 프론트엔드 개발자는 프론트 영역 전반과 서버에 대한 이해력을 필요로 합니다.

프론트엔드 개발자가 담당하기도 하지만, 종종 업무 효율을 위해 디자인 영역(HTML, CSS)만

작업해주는 마크업 개발자가 따로 있는 경우도 있으며,

프론트엔드 개발자는 해당 작업 파일을 받아 포팅 작업을 하고, 프론트엔드 영역을 개발하게 됩니다.

즉 프론트엔드 개발자는 바닐라 JS와 HTTP 프로토콜, 웹팩 등도 활용할 줄 알아야합니다.

 

프론트엔드 개발자의 업무?

프론트엔드 개발자는 결국 사용자 시점에서의 문제점 및 개선점을 정확히 파악하는것이

가장 중요한 업무입니다.

디자인 수정에 관한 조언과 문제 해결을 위한 코드를 제공하고,

목표와 필요, 기회들을 정확히 이해하고 수행하기 위해서 팀원,

다른 팀들과 유연하게 협업하는 능력도 중요합니다.

 

사용자의 니즈를 파악하고 불편사항들을 고치는 말 그대로

웹 페이지 상에 보이는 모든것들에 대한 개발을 담당하는 것이

프론트엔드 개발자의 업무입니다.

백엔드 개발자?

프론트엔드 개발자는 눈에 보이는 모든 것들에 대한 개발을 담당한다면

백엔드 개발자는 눈에보이지 않는 것들을 개발한다고 보시면 됩니다.

백엔드는 프론트엔드 자체를 가능하게 하고, 데이터를 처리 및 저장하는 곳입니다.

 

사이트의 백엔드는 서버, 응용 프로그램 및 데이터베이스로 구성됩니다.

백엔드 개발자는 서버 영역을 관리 및 개발함으로써

이러한 구성 요소들이 작동할 수 있게 하는 기술을 만들고 유지합니다.

이러한 작업을 통해 프론트엔드, 즉 사용자에게 보여지는 측면이 나타날 수 있게 만듭니다.

 

프로그래밍에서 이야기하는 백엔드의 정의와 다르게, 제안 또는 기획 단계에서 백엔드는

관리자 페이지를 이야기하는 경우도 있습니다.

하지만 관리자 페이지마저도 백엔드, 프론트엔드가 분리될 수 있는 소프트웨어이기 때문에

이 것은 잘못된 용례입니다. 백엔드는 관리자 페이지가 아닙니다.

 

백엔드 개발자가 되기 위해 필요한 것?

백엔드 개발자는 프로그래밍, 데이터베이스, 웹 서버, 네트워크, 인프라 등에 대한 기술이 필요합니다.

백엔드 개발자는 기존 개발자라 불리는 스펙과 방식이 약간 다릅니다.

뷰단은 화면단이 아닌 API개발이 주가 되어

프론트에서 전달된 데이터의 포맷이나 데이터베이스 입출력 및 다양한 비즈니스 프로세스를

프로그래밍 코드로 구현하는 역할을 하게됩니다.

 

서버, 응용 프로그램, 데이터베이스가 서로 통신 할 수 있도록 만들기 위해

백엔드 개발자는 PHP,Ruby, Python, Java와 같은 서버 측 언어의 활용이 중요합니다.

또한 데이터를 검색, 저장 또는 변경하고 이를 프론트엔드 코드로 사용자에게 다시 제공하기 위해서는

MySQL, Oracle, SQL Server를 사용할 줄 아셔야 합니다.

 

PHP는 동적으로 HTML 데이터를 생성하여 동적 웹페이지를 제공하는 것을 주된 목적으로하는

서버 측 스크립트 언어이자 범용 프로그래밍 언어이고

Ruby는 인터프리터 방식의 객체 지향 스크립터 언어입니다.

 

일반적으로 프론트엔드 개발자보다 많은 것을 알고있어야 하고

서버 그 자체를 구성하는 필수요소에 대한 것들을 다루다보니

프론트엔드 개발자들보다는 평균급여가 높은 편입니다.

 

백엔드 개발자의 역할?

그렇다면 백엔드 개발자의 역할은 어떤것일까요?

백엔드 개발자는 비즈니스 이해 관계자와 소통하면서 구체적인 요청 사항을 정확히 파악해야 합니다.

그런 다음 이를 기술적 내용으로 변환하여 기술 설계를 위한 가장 효과적이고 효율적인 솔루션을

제시하여 개발을 이어갑니다.

 

풀스텍 개발자?

풀스텍 개발자는 백엔드와 프론트엔드 두 계열에 모두  능통한 웹개발자를 지칭하는 말입니다.

프론트엔드와 백엔드 두 분야에 전부 능통하니 어떤 회사에서던지 데려가려 하겠죠?

 

웹개발자가 되는 방법

이러한 웹개발자가 되는 방법은 무엇이 있을까요?

아무래도 웹개발자가 되려면 많은것을 알아야 하니

기본부터 차근차근 배워가시는게 좋습니다.

 

국비지원으로 전문가까지 가는 과정을 배우실 수 있는

프로그램이 준비되어있습니다!

아래의 네임카드를 클릭하시면 바로 상담 가능합니다!

상담은 무료이니 부담갖지 말고 연락 주세요!

네임카드를 클릭해주세요!!

 

+ Recent posts