프로그래밍 언어 번역방식


프로그래밍 언어를 분류하는 기준에는 번역방식에 따라 분류하는 방식이 있는데 


컴파일 방식 : 

프로그램 소스코드를 작성하고 컴파일을 하게 되면 실행가능한 프로그램이 생성된다. (바이너리파일) 번역과 실행이 따로 된다.

< C, C++, C#, JAVA, C# 등 >


인터프리터 방식 : 

프로그램 소스코드가 목적프로그램 or 바이너리 파일로 변환되는 번역과정이 일어나지 않는다. 번역되어서 저장되는 절차가 없다. 

한줄한줄 실행된다고 생각하면 편하다. (따라서 한줄에서 오류가 발생했을 경우 다음줄부터는 아예 실행이 되지 않는다.)

< JavaScript, ActionScript, VB Script, SQL, HTML 등 >

cf. 인터프리터 언어의 특징은 매우 한정적이고, 제한적인 사용용도를 가지고 있다고 볼 수 있다. ex) SQL(관계형 데이터베이스 시스템 언어)




추가할것

JavaScript let와 var const


참고 : http://blog.nekoromancer.kr/2016/01/26/es6-var-let-%EA%B7%B8%EB%A6%AC%EA%B3%A0-const/

CSS문법 : 선택자 사용해보기 (맛보기)


CLASS 와 ID 


CLASS

CSS를 사용하면서 전체적인 스타일을 일관성있게 표현해주기 위해서는 클래스를 사용하는 것이 필수적이라고 할 수 있다. 

아래 코드에 CLASS를 사용했는데 CLASS는 얼핏보면 구조체 정의하는 것처럼 생겼다.

HTML에 CSS를 적용하는 것처럼 똑같이 사용하면 된다. 

CLASS를 선언해줄때는 '.'를 사용한다. 

아래코드에서 .size-40px 처럼 앞에 .을 사용한 것을 확인 할 수 있다.

클래스를 사용할 때에는 

class="클래스명" 으로 사용하면 된다.

(※편의상 내부스타일 방식으로 구현했다.)




ID

ID도 CLASS와 적용하는 방법이 비슷하다. 

CLASS는 .으로 선언해준 반면에

ID는 #으로 선언해준다. 

그렇다면 CLASS와 ID의 차이점은 무엇일까?

아래 코드를 보면 위의 CLASS를 다 ID로 바꾸기만 한 코드인데 

3번째 줄은 적용이 되지 않은 것을 확인 할 수 있다.  


즉, ID안에는 하나의 속성만 사용될 수 있다. 


따라서 한페이지 내에서 여러번 반복될 필요가 있는 스타일은 CLASS 선택자를 사용하고 

한번 유일하게 적용될 스타일은 ID 선택자를 사용하는 것이 바람직하다. 


CLASS 속성은 어떤 분류안에 포함된 요소의 특성을 정의하는 데 사용이되고, 

ID 속성은 어떤 요소에 대해 유일한 특성을 정의하는데 사용이되는게 바람직 하기 때문이다.  


EX)

글자색이나 글자 굵기 등 나중에 다른 곳에도 적용할 수 있는 스타일을 CLASS로 지정하고

웹 문서 안에서 요소의 배치 방법을 지정할 때는 ID 속성을 사용하는 것이 좋다. 



CLASS 와 ID혼용 사용

ID속성으로 유일한 특성(기울기)를 정의해 적용했다. (#second)






CSS란? 


Cascading Style Sheet 을 말하여 웹에 사용되는 HTML 문서가 사용자에게 어떻게 보여지게 할지 만들어(꾸며) 주는 언어이다.


Mozilla에 설명이 잘 되어있어서 링크를 걸어둔다. (https://developer.mozilla.org/ko/docs/Web/CSS/ko/docs/Web/CSS/시작하기/CSS란)



HTML에 CSS를 적용하는 3가지 사용법이 있다.


1. 인라인(inline)방식

2. 내부스타일 시트

3. 외부스타일 시트 

(4. CSS 임포트)


1. 인라인 방식 

말그대로 HTML 코드안에서

<span>이라는 태그와 style속성을 통해 CSS 속성을 주어 사용한다.

※Result 누르면 결과를 확인 가능하다.




2. 내부스타일 시트 

HTML코드안에 넣는 것은 아니지만 같은 HTML문서 안에서 넣는 방식이다. 

<span>이라는 태그를 사용하였고

코드 외부에서 <span>태그를 정의하는 것처럼 <style>속성의 CSS를 사용하는 방식이다.

※Result 누르면 결과를 확인 가능하다.



3. 외부스타일 시트 

HTML코드안에 넣는 것도 아니고 같은 HTML문서 안에 넣는 방식도 아니다. 

HTML의 가장 중요한 것!  

링크를 통해서 확장자가 .CSS인 문서를 HTML과 연결 시켜주는 것이다. 

아래 코드를 보면 알 수 있는데 

<link rel ="stylesheet" href="style.css">를 통해 HTML에 style.css를 링크를 걸어 준걸 볼 수 있다. 

따라서 내부스타일 시트와 다르게 <style>태그 없이 바로 <span>을 통해 속성값을 줄 수 있다는 것도 확인 가능하다.

※CSS, Result 누르면 CSS문서와 결과를 확인 가능하다.



(4. CSS 임포트)

3. 외부스타일 시트 처럼 CSS를 작성하고 HTML에 @import url을 사용해 넣는 방식이다. 

너무 번거럽고 귀찮아 잘 사용하지 않는다.  



어떤 방식을 적용해야할까?

그렇다면 어떻게 CSS 적용해야 잘했다고 소문이 날까??


1. 인라인 방식의 경우 사람이 보았을 때는 무척 편리하다.

바로 앞에 속성이 정의가 되어있으니 읽어가면서 바로 확인이 가능하다. 

하지만 크롤링을하는 크롤러의 입장에서 보았을 경우에는 좋지 않다. (ex.글을 가져가야하는데 CSS속성이 끼여있다.)

그리고 한번만(적은 횟수)로 CSS를 사용했을 경우에는 좋지만, 

여러번 사용하게된다면 소스코드가 늘어나고 수정시 번거로운 일이 발생할 수 있다.


그렇다면 2. 내부스타일 시트 방식으로 CSS를 모아서 관리하게 되면 어떤가??

내부스타일 시트의 경우에는 CSS내용이 전부 HTML에 속해있다. 

이것이 중요한 포인트가 되는데..

스마트폰을 사용하면서 인터넷 네트워크를 사용하면 요금이 나간다. (LTE데이터, 3G데이터라고 하는 것들...)

따라서 인터넷 서핑을 하게 될 경우 HTML를 요청하고 응답받으면서 인터넷 네트워크를 사용하므로 데이터 사용이 발생하게 될 것이고, 

HTML안에 많은 내용의 CSS데이터가 포함이 되어있다면, 그많큼 더 많은 데이터를 사용하게 될 것이다. 

이렇게 생각했을 때.. 

CSS의 내용(속성)은 변하지 않는다고 가정하면

우리가 HTML을 받을 때마다 똑같은 CSS를 계속 포함해서 받게되면 우리는 아까운 데이터를 더욱 많이 사용하게 된다는 것이다.


이걸 막기위해 3. 외부스타일 시트 방식으로 CSS를 사용하면 좋은데

HTML문서가아닌 외부문서에 CSS를 관리하기 때문에 내용변화가 없는 CSS는 한번만 받아서 캐시(캐시메모리)로 저장하게 되면 불필요한 데이터 낭비없이 사용자가 사용하기에 더욱 편리한 웹 환경을 만들어 줄 것이다. 



정리:

1.인라인 방식은 가끔사용할때 사용하자.

2.내부스타일 시트방식을 사용할 바에는

3.외부스타일 시트방식을 사용해보자!!!!!


외부스타일 시트방식 짱!!!!


CSS 치트시트 링크 : http://learn.shayhowe.com/advanced-html-css/complex-selectors/


HTML 



HTML이름설명(http://hpitos.tistory.com/8)

Hyper Text Markup Language.


한가지 중요한 점이 HTML 태그를 사용함에 있어서

CSS나 JavaScript에서 표현 가능한 동적 처리 표현은 사용을 지양하는 것이 좋다.


cf) 인터넷 크롤링을 하였을때 

(인터넷 크롤링 : 웹 정보를 수집하는 봇들이 HTML내용을 긁어서 DB에 저장한다음 사용자가 검색한 키워드와 자신이 저장한 내용을 비교해 우선순위 높은 것을 나타내준다.)

예를들어 : <strong></strong> 이라는 태그안에 감싸져 있는 컨텐츠를 크롤러가 중요한 내용인줄 알고 판단할 수 있는 계기를 만들어 줄 수 있다. (<strong>하면 효과를 받는 컨텐츠가 굵게 표시된다.)


cf) <br> 태그는 글의 개행을 시키는 것에만 사용한다. (무조건 글안에만 사용할 것!!) 

cf) <h*> 태그는 <strong>과 비슷한 개념 h1, h2, h3.... 진행하는데 h1이 가장 크다.




HTML 기본 태그를 알고가자

<CSS나 JavaScript에서 표현 가능한 동적 처리 표현은 사용을 지양!!>


시작표기끝 표기설명
<Html></Html>Html의 시작과 끝을 알린다.
<Head></Head>Html문서의 머릿말이라고 할수 있다.
<Title></Title>브라우저의 상태바에 나타낼 이름을 정의한다.
<Body></Body>본문의 시작을 알린다.
<!-->주석처리를 알린다. 사이에 들어가는 내용들은
소스보기에서는 보이지만 실제 브라우저에서는 안보인다.
<P> 줄바꿈과 동시에 한 줄이 두개의 단락으로 분리된다.
<Br> 줄바꿈을 하지만 그 단락은 하나로 묶여 있다.
<Pre></Pre>Html의 문서를 작성시의 문서로 보관한다. (고정의 역할)
<Font></Font>폰트에 속성을 부여할 시작을 알린다.
<Font Size=""></Font>"" 속에 폰트의 크기를 입력한다. 1~7 까지 표현이 가능하며 기본값은 3 이다.
<Font Color=""></Font>"" 속에 폰트의 색을 입력한다. 기본적으로 내장된 객체를 사용할 수 있으며(Red,Blue,White 등) RGB 컬러를 입력할수 있다.
(#ff0000,#cccccc,#ffffff 등)
<Hr><Hr Align="" Width="" Size="">브라우저에 줄을 표시한다. Align은 정렬을,Width는 좌우크기를 Size는 줄의 굵기를 나타낸다.
<Hr><Hr Align="" Width="" Size="">브라우저에 줄을 표시한다. Align은 정렬을,Width는 좌우크기를 Size는 줄의 굵기를 나타낸다.
<Center></Center>사이에 들어가는 모든 객체를 가운데로 정렬한다.
<Strong></Strong>글짜를 굵게 표현한다.
<B></B>글짜를 굵게 표현한다.
<Em></Em>글짜를 Italic 체로 표현한다.
<I></I>글짜를 Italic 체로 표현한다.
Background="" 배경에 이미지 경로를 삽입할수 있다.
Body,Table,Tr,Td 등 여러군데 삽입이 가능하다.
Bgcolor="" 배경에 색상을 삽입할수 있다.
Body,Table,Tr,Td 등 여러군데 삽입이 가능하다.
<Blink></Blink>글짜를 깜빡이게 해준다.
<U></U>글짜에 밑줄을 그어준다.
Underline의 약자로 보인다.
<A Href=""></A>객체에 하이퍼링크 속성을 부여한다.
클릭시 정의된 주소로 페이지가 이동하며
그 기본값은 "_Self" 다.
Target="" Target="_Parent" 한프레임 위로 주소를 이동한다.
Target="_Blank" 새창으로 주소를 연다.
Target="_Self" 현재페이지에서 주소를 이동시킨다.
Target="_Top" 포함된문서에서 가장 상단의 프레임의 주소로 페이지를 이동시킨다.
<A name=""></A>현재 보고 있는 페이지에서 지정된 이름을 가진 갈고리 TAG소스로 이동한다.
<Table></Table>테이블의 시작과 끝을 알린다.
<Tr></Tr>줄의 시작과 끝을 알린다.
<Td></Td>칸의 시작과 끝을 알린다.
Colspan="" 가로칸을 "" 속의 수만큼 합친다.
Rowspan="" 세로칸을 "" 속의 수만큼 합친다.
<Td Align="" 칸 속에 정렬방식을 지정한다. (좌우)
Center,Left,Right
<Td Valign="" 칸속에 정렬방식을 지정한다. (상하)
Top,Middle,Bottom,Baseline
<Img src=""></Img>이미지태그의 시작과 끝을 알린다.
<Img src="" Align=""> 이미지의 정렬방식을 지정한다.
<Img src="" Width=""> 이미지의 좌우 크기를 지정한다.
<Img src="" Height=""> 이미지의 높이 크기를 지정한다.
<Img src="" Vspace="" Hspace=""> 이미지의 여백을 지정한다.
<Img src="" Border=""> 이미지의 테두리선을 지정한다.
<Imf src=""Alt=""> 이미지가 해당 경로에 위치하지 않을경우 "" 속에 적힌 글짜로 대처되며, 화면을 설명하기 위해 사용되기도 한다.

(표 참고:http://2verworks.tistory.com/8)




HTML 치트시트 사이트 : http://overapi.com/html


[웹에대한 큰그림을 그려보자]




생산자                    소비자

*웹서버                   브라우저

백엔드                  프론트엔드


< 백엔드 >

시스템의 구축, 내부로직, 데이터베이스설계, 데이터의 처리 등을 담당 

< 프론트엔드 > 

사용자나 혹은 다른 프로그램과의 인터페이스(GUI)

< JSP (자바) > 

< HTML >

< Node.JS >

< CSS > 

< PHP >

< JAVA Script >

 < ASP.net >

 

 < django(py) >

 





참고1)

HTML = 문서의 내용과 뼈대

CSS = 디자인 적인 요소를 추가

JAVA Scrpt = 문서안에서 동적인 요소를 만들어주는 역할. (실시간검색어 서버통신을 말하는 것이 아님)


참고2)

통상 우리가 지칭하는 프로그래밍 언어를 JAVA Script라고 생각 할 수 있다.

현재 웹을 CSS만으로 해도 구현을 할 수 있다. 

그렇지만 우선 Java Script를 통해 만드는 법을 알고나서 다른 것을 통해 만들어라

(다른 좋은 언어들 보다 C를 먼저 배우는 이유와 비슷하다고 생각, 역사를 알아야 미래를 만들 수 있다.)




[ *웹서버는 한가지가 아니다!!!! ]


웹서버라는 것을


웹서버와 WAS(웹어플리케이션서버) 로 나누어 생각해 볼 수 있다.  

 

우리가 흔히 보는 웹창을 보게되면 정적인 부분과 동적인 부분을 볼 수 있는데.


웹의 부분

정적인 부분 :

 틀, 베너, 로그인 창 틀, favicon.ico(아이콘), CSS(속성)

동적인 부분 :  (WAS 서버이용)

 로그인 창 틀안에 내용, 실시간 검색어 변화



정적인 부분은 응답받은 것을 처리만 해주면 되지만

동적인 부분은 언어를 사용해 WAS서버를 이용해서 처리를 해주게 된다. 


현재 보통의 웹페이지에서는 웹서버랑 WAS서버를 동시에 같이 사용하는데 

동시에 같이 사용한다는 것을 소스 보기를 통해 ( 크롬 기준 F12버튼 누르면 나온다. ) 확인해볼 수 있다. 



www.naver.com 의 메인화면의 소스를 확인해본 결과이고, 

위와같이 static을 사용해서 그림파일의 주소를 가리키고 있다는 것을 확인 할 수 있다. 

(그림파일을 따로 처리하는 서버를 두고 처리한다는 것을 유추해 볼 수 있다.)


이렇게 서버를 연동해서 사용하는 이유는 처리속도를 높일 수 있기 때문이다. 


WAS서버 하나로 정적인 부분까지 함께 처리를 해줄 수 도 있다. 

하지만 이렇게 하는 것은 매우 비효율적이다. 

일반적으로 아파치와 같은 웹 서버는 정적인 동작을 처리하는 데 초점이 맞춰져 있고, 

WAS서버는 JSP, 서플릿과 같은 프로그램을 실행하여 결과를 제공하는 데 초점이 맞춰져 있기 때문이다.  



브라우저가 웹서버로부터 웹페이지를 전달받는 것을 확인해 보면 더욱 이해가 쉬울 것이다. 


출처 : http://genesis8.tistory.com/231 참고

웹서버

웹 브라우저의 요청을 받아 알맞은 결과를 웹 브라우저에 전송

만약 프로그램의 처리가 필요하다면 WAS서버를 이용하거나 프로그램을 직접 호출하여 결과를 생성한다. 

주로 정적인 HTML, CSS, 이미지 자바 스크립트를 웹 브라우저에 제공할 때 웹 서버를 사용한다.

(아파치)

웹어플리케이션서버(WAS)

게시글 목록, 로그인 처리와 같은 기능을 실행(처리) 하고 그 결과를 응답으로 웹 서버에 전달한다. 

(톰켓, 웹로직, JBOSS 등) , ASP 등이 포함된다.

데이터베이스 

웹 어플리케이션이 필요로 하는 데이터를 저장한다. (오라클,  MySQL, MS-SQL 등)

웹브라우저 

웹 서버에 서비스 실행을 요청하며 웹 서버의 처리 결과를 사용자에게 보여준다. (익스플로러, 크롬 등)



 

+ Recent posts