Dev study 정리 14

[Web] Server-Side Rendering(SSR) / Client-Side Rendering(CSR)

Rendering 이란?컴퓨터 프로그램을 사용하여 모델 또는 이들을 모아놓은 장면인 씬 파일(scene file)로부터 영상을 만들어내는 과정을 말한다. (위키백과 - 렌더링)SSR / CSR 에서 말하는 렌더링은 인용 문구에서 말하는 scene 파일들을 이용해 영상을 만들지는 않습니다.하지만, 렌더링 엔진을 사용해 소스 코드들로 부터 웹 페이지를 만들어낸다는 면에서 의미는 동일하다고 생각됩니다.     Server-Side Rendering(SSR) 이란?PHP, JSP, ASP, Node.js 등 Server-Side Script 언어 기반의 템플릿 엔진을 이용해 동적인 웹 콘텐츠(html) 문서를 만드는 방식 입니다.  다음 코드는 Node.js 템플릿 엔진인 EJS 문법으로 작성 된 .ejs 파일..

Dev study 정리 2020.08.19

javascript 이벤트 루프 / 태스크 큐 / 콜 스택 알아보기

# 이벤트 루프(event loop)이벤트 루프는 구현방식으로 인해 붙여진 이름이며, 이벤트 루프는 보통 아래 코드와 유사합니다.while(queue.waitForMessage()) { queue.processNextMessage();}이벤트 루프는 javascript 실행환경인 브라우저에서 관리합니다.  # 이벤트 루프 동작방식비어있는 태스크 큐에 1개의 태스크가 들어온 경우, 이벤트 루프에 의해 태스크가 큐에서 pop 됩니다.pop 된 태스크가 실행되면 javascript engine 에 의해 실행 가능한 코드범위로 실행 컨텍스트가 생성됩니다.생성된 실행 컨텍스트는 콜 스택(Call Stack) 에 push 되고 실행됩니다.코드 실행과정에서 생성되는 태스크는 태스큐 큐에 push 됩니다.코드 실행이..

Dev study 정리 2020.07.04

[Web & HTTP] CORS / SOP 학습

# CORS 란?Cross Origin Resource Sharing(교차 출처 자원 공유) 의 약어원본 출처에서 실행 중인 웹 어플리케이션이 다른 출처의 자원에 접근할 수 있도록 서버에서 관련 HTTP 헤더를 추가하여 브라우저에 알려주는 체제 입니다.  # SOP 란?Same Origin Policy(동일 출처 정책) 의 약어원본 출처에서 실행 중인 웹 어플리케이션은 보안상의 이유로 동일한 출처의 리소스만 공유할 수 있다 라는 정책 입니다.SOP 정책 중, 다른 출처 리소스 요청을 허용하는 예외 항목이 있는데 그 중 하나가 CORS 정책을 지킨 리소스 요청 입니다.  # 출처(Origin) 란?URI 구조에 대해서 알아야 합니다.http://localhost:3000/main?page=1#content..

Dev study 정리 2020.07.01

호이스팅(Hoisting) 정리

호이스팅 이란변수나 함수의 호출 코드가 선언 코드보다 아래쪽에 있음에도 불구하고 에러가 발생하지 않고, 마치 선언 코드가 호출 코드보다 더 위에 선언된 것과 같이 동작하는 특성을 호이스팅(Hoisting) 이라고 한다.  호이스팅 현상이 발생하는 이유javascript는 코드가 실행될 때 실행 컨텍스트가 생성된다. 이 때, 실행 컨텍스트 내부 변수 객체에서 현재 컨텍스트에 사용되는 변수 또는 함수를 생성한다. 변수가 생성되는 과정은 3단계로 나뉜다. 1. 변수 선언2. 변수 초기화3. 변수에 사용자가 지정한 값으로 초기화 여기서 3. 변수에 지정한 값 할당은 해당 실행 컨텍스트의 변수 객체 생성이 완료된 뒤에 실행된다. 즉, 변수의 선언 + 초기화 와 사용자가 지정한 값 초기화가 발생되는 환경이 나뉘어 ..

Dev study 정리 2019.03.03

실행 컨텍스트 (Execution context) 정리

실행 컨텍스트란 (Execution Context,  E.C) 실행 가능한 javascript 코드 블럭이 실행되는 환경 실행 컨텍스트가 생성되는 시점실행 가능한 코드(전역 코드, eval() 로 실행되는 코드, 함수 내부의 코드)  가 실행되면 각각의 독립적인 실행 컨텍스트가 생성된다. (ex. 함수가 실행되는 시점에 해당 함수의 실행 컨텍스트가 생성된다.) 생성 된 실행 컨텍스트는 순서대로 콜 스택(Call Stack) 에 push 된다. 스택이므로 가장 마지막에 추가 된 실행 컨텍스트가 현재 실행되고 있는 컨텍스트다. 실행 컨텍스트는 작업이 종료되면 콜 스택에서 pop 된다.  실행 컨텍스트 생성 코드 예123456789101112console.log('this is global context');..

Dev study 정리 2019.03.03

일급 객체 (First-class citizen)

Javascript를 처음 접했을 당시, 타입이 엄격하지 않음과 더불어 함수가  변수처럼 어떠한 함수의 인자로 전달될 수 있고, 함수의 반환 결과로도 사용 가능하다는 것에 매력을 느꼈었다.  Javascript에서 함수를 자유롭게(?) 사용가능한 이유는 함수를 일급 객체(First-class citizen) 로 취급하기 때문이었다.   어떠한 특징이 있으면 일급 객체라고 부르는 것일까 라는 생각이 들어 위키백과를 찾아봤다.   일급 객체란? '컴퓨터 프로그래밍 언어 디자인에서 일반적으로 다른 객체들에 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.'    일급 객체가 되기위한 조건 1. '변수나 데이터 구조안에 담을 수 있다.'   testList 배열을 선언한 뒤, 0번째 인덱스에 익명함수를 추가했..

Dev study 정리 2018.11.06

componentDidCatch() 함수 확인

React 릴리즈 버전이 16.4.x 버전까지 올랐다는 걸 React 공식페이지나 여러 기술블로그를 통해 알고 있었다. 하지만, 변경 된 사항들에 대해 글을 읽기만 했을 뿐 간단한 예를 만들어서 해보지는 않았다. 최근 이직 준비로 인한 시간이 생겨 변경 된 사항들을 직접 해보고 있다.  오늘은 React v16.0 에 새로 추가 된 componentDidCatch() 함수에 대해 알아보고  이 함수를 어떠한 경우 사용하면 좋을지에 대해 알아보려한다.   React 프로젝트는 수 많은 UI 컴포넌트 트리로 구성되어 있다.  화면 렌더링이 시작되면 수 많은 UI 컴포넌트 들이 각자 역할에 맞게 수행되며 가장 마지막에 위치한 컴포넌트의 역할이 끝나면 페이지 렌더링이 완료된다. 만약 렌더링 도중 어떠한 컴포넌트..

Dev study 정리 2018.08.30

[Web] 브라우저가 웹 페이지 리소스를 받아오는 과정

1. 브라우저 주소창에 접속 할 URL 을 입력 2. 브라우저는 현재 PC에 연결된 네트워크의 DNS 에 접속 할 URL 의 IP 주소를 요청3. DNS 로 부터 IP 확인이 완료되면 브라우저는 서버에 요청 할 HTTP 메시지를 작성 4. 작성이 완료 된 HTTP 메시지를 패킷으로 나누어 서버측으로 전송 (TCP 이므로 3-handshaking 기법을 통해 서버를 찾음)5. 서버측에서는 도착한 패킷을 조합하여 원래의 HTTP 메시지로 만듦6. 서버(Web server + WAS) 는 클라이언트에 보낼 리소스(HTTP 메시지)를 패킷으로 나누어 클라이언트측으로 전달7. 브라우저(클라이언트) 는 서버로부터 전달받은 패킷을 조합하여 화면에 띄움

Dev study 정리 2018.08.23

[javascript] 모듈 사용방식과 번들러 사용 이유

javascript가 최초 나왔을 당시, 웹 페이지의 규모는 지금과 같이 크지 않았다.  그러나 컴퓨터의 성능이 향상되고, 네트워크 속도가 빨라지며 웹 페이지 규모도 점차 커지게 되었다.  웹 페이지 규모가 커지다보니 javascript 코드 규모 또한 커지게 되었고, 중복되는 기능도 많았다.  그러다보니 중복되는 기능들을 하나의 모듈로 만들어 소스 코드의 규모를 줄이고, 재사용성을 좋게 하였다.  하지만, 이 당시 javascript 모듈 사용을 위한 방법에는 정해진 표준이 없었다.  표준 없이 뒤죽박죽 개발을 하면 개발자들간에 혼선이 생기게 되고, 언어 사용성이 떨어지게 된다.  이를 막기위해 CommonJS 와 AMD (Asynchronous Module Definition) 방식의 모듈 사용이 등..

Dev study 정리 2018.05.26

API를 사용하는 이유

API 란?API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. (위키백과)Interface는 우리말로 번역하면 접속, 규격, 연결부분  이라는 의미를 가진다.  API가 없다면? 위 구조에서 미세먼지 정보 DB 쪽에 API 가 없을 경우, A / B / C 어플리케이션 각각에서 DB 접속정보를 알고 있어야 한다.만약, 미세먼지 정보 DB 접속정보가 바뀌게 된다면, A / B / C 어플리케이션 각각에서도 DB 접속정보를 바꿔줘야 한다.어플..

Dev study 정리 2017.07.23