안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

전체 글 (168)

[React] 프론트 엔드와 백 엔드 분리 시 동작 원리 (vs 풀 스택)

1. 일반적인 웹 어플리케이션의 동작 원리 : 풀 스택 (Full Stack) 프론트 엔드와 백 엔드가 구분되지 않는 일반적인 웹 어플리케이션의 동작 원리는 어떠할까? 파이썬 기반의 장고(Django), 자바 기반의 스프링(Spring) 등이 대표적인 웹 어플리케이션이라고 볼 수 있다. 이러한 웹 어플리케이션의 동작 원리는 아주 단순하다. 클라이언트가 요청(Request)을 보내면 서버에 존재하는 웹 어플리케이션이 데이터베이스 서버와 통신하여 필요한 데이터들을 전부 가져오고, 이것들을 가지고 완전한 HTML, CSS, JavaScript 파일들을 만들어서 클라이언트에게 제공한다. 그러면 클라이언트는 그렇게 전달받은 파일들을 그대로 브라우저에서 사용하기만 하면 된다. 이와 같은 방식으로 웹을 개발하는 사람..

리액트 (React) 2020.07.22

[JavaScript] Node.js와 npm(+ npx)의 개념

1. Node.js Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임을 의미한다. 런타임이란 해당 프로그래밍 언어로 작성된 코드가 구동되는 환경을 말한다. 브라우저가 대표적인 JavaScript 런타임이다. 결국 Node.js란 JavaScript 코드가 구동되는 환경을 말하며, 브라우저 외부에서도 JavaScript 프로그래밍이 가능하게 하였다. 다음과 같은 두 가지 방식으로 JavaScript 런타임을 제공한다. REPL (Read, Evaluate, Print, Loop) : 사용자의 입력을 받아(Read) 그 코드를 평가(Evaluate) 및 실행하고, 그 결과를 화면에 출력(Print)해주는 작업을 반복(Loop)한다. 이는 윈도우의 cmd 혹은 리눅스의 터미널 등..

[React] 렌더링 과정 (+ 재조정, 생명 주기)

* 개인적으로 React를 막 공부하기 시작하면서 정리한 내용들입니다. 잘못된 내용이 있다면 지적 부탁드립니다. 1. React 최초 렌더링 과정 ReactDOM.render(루트 엘리먼트, DOM 노드) 호출 루트 엘리먼트부터 시작해서, 마주친 엘리먼트의 type을 검사한다. DOM 엘리먼트 : 자식 엘리먼트들에 대하여 동일한 과정을 재귀적으로 반복한다. 컴포넌트 엘리먼트 : 해당 컴포넌트에게 props를 입력으로 제공하여 엘리먼트 트리를 얻는다. 함수형 컴포넌트라면 해당 함수를 호출함으로써, 클래스형 컴포넌트라면 컴포넌트 인스턴스를 생성한 후 render() 메소드를 호출함으로써 얻을 수 있다. 그리고 그렇게 얻은 엘리먼트 트리의 루트 엘리먼트에 대해서 동일한 과정을 재귀적으로 반복한다. 위와 같이 ..

리액트 (React) 2020.07.21

[React] 엘리먼트, 컴포넌트, 인스턴스 개념

1. 엘리먼트 (Element) 실제로 화면에 렌더링 할 DOM 노드들의 정보를 React에게 알려주기 위한 수단이다. DOM 노드 혹은 컴포넌트를 표현하는 JavaScript의 일반 불변 객체(Plain Immutable Object)에 해당한다. type(문자열 혹은 컴포넌트 함수/클래스) 필드와 props(객체) 필드로 표현된다. 일반적으로 하나 이상의 자식 엘리먼트는 props의 children 필드로 표현하며, 이를 통해 엘리먼트들이 중첩될 수 있다. (이 필드에는 텍스트에 해당하는 문자열, 엘리먼트, 혹은 엘리먼트들의 배열 등이 저장될 수 있다.) 일반적으로 JavaScript의 React.createElement() 함수 또는 JSX의 태그 문법(ex. )으로 작성한다. 엘리먼트들로 이뤄진 ..

리액트 (React) 2020.07.21

[Python] bytes, bytearray, 인코딩 및 디코딩

1. bytes, bytearray (바이트 배열 객체) - 왜 필요할까? 파이썬에는 바이트 배열을 나타내는 객체의 타입으로 bytes, bytearray가 존재한다. 즉 1바이트(= 8비트) 크기의 요소들로 이뤄진 리스트를 나타내는 타입인 것이다. 그렇다면 bytes, bytearray 타입의 바이트 배열 객체와 str 타입의 문자열 객체는 어떤 차이가 있을까? 이를 이해하기 위해서는 다음과 같은 절대적인 사실을 떠올릴 필요가 있다. 바로 "컴퓨터는 오로지 바이트 배열만 저장할 수 있다"는 것이다. 즉 컴퓨터에 무언가를 저장하려면 먼저 그것을 바이트 배열의 형태로 '인코딩(Encoding)'을 해야 한다. 다음은 음악 파일, 사진 파일, 문자 파일 등을 컴퓨터에 저장할 수 있는 바이트 배열의 형태로 인..

파이썬 (Python) 2020.07.09

[운영체제] 프로세스 (Process), 쓰레드 (Thread)

1. 프로세스 (Process) 1-1. 개념 프로그램(Program)은 특정 작업을 수행하기 위한 일련의 명령어들로 이뤄진 하나의 실행 파일을 의미한다. 프로세스(Process)는 메인 메모리에 로드되어 실행 중인 특정 프로그램의 인스턴스를 의미한다. 프로세스는 시스템으로부터 공간적 자원(= 메모리 공간)과 시간적 자원(= CPU 시간)을 일정량 할당받아서 특정 작업을 수행한다. 운영체제는 각 프로세스에게 할당된 시스템 자원들을 관리하는 역할을 수행한다. 1-2. 특징 각 프로세스는 서로 겹치지 않는 독립된 메모리 공간(Code, Data, Heap, Stack 영역)을 할당받는다. 가상 메모리 시스템에 의해 하나의 프로세스는 다른 프로세스의 메모리 공간에 접근할 수 없도록 제한된다. 다른 프로세스의 ..

[네트워크] OSI 7 계층 참조 모델 (OSI 7 Layer Reference Model)

오늘날 우리는 다양한 종류의 컴퓨터, 노트북, 스마트폰, 태블릿 등의 기기들을 활용하여 인터넷 상에서 서로 통신을 한다. 인터넷은 전 세계의 수많은 통신 기기들이 유선 혹은 무선으로 상호 연결되어 있는 하나의 거대한 네트워크이다. 그래서 www, 즉 Word Wide Web이라는 용어를 사용하는 것이다. 그렇다면 어떻게 서로 다른 기기들이 네트워크 상에서 통신을 할 수 있는 것일까? 이를 이해하기 위한 개념이 바로 OSI 7 계층 참조 모델(OSI 7 Layer Reference Model)이다. 이에 대해 한 번 알아보자. 1. 네트워크의 역사 네트워크의 시초는 미국 국방부(DoD)의 산하 연구기관이었던 방위고등연구계획국(DARPA)에서 연구용으로 제작한 아르파넷이다. 그 당시 아르파넷 상에서 서로 통..

[Java] Java SE, JDK, JRE, JVM, 자바 프로그램의 실행 원리

1. 자바 기본 용어 1-1. Java SE (Java Platform, Standard Edition) 자바의 표준안으로서, 자바가 어떠한 문법적인 구성을 가지는 언어인지를 정의하고 있다. 즉 이것은 언어 그 자체가 아닌 언어의 설계도(Specification, 명세서)에 해당한다. 이 설계도에 따라서 자바가 만들어진다. Java SE 19는 자바 버전 19에 대한 명세서이다(계속 발전한다). 이 명세서는 JCP(Java Community Process)라는 조직에 의해서 만들어진다. 1-2. JDK (Java Development Kit) : 개발자를 위한 자바 Java SE의 표준안에 따라 만들어진 구체적인 소프트웨어이다. 자바 프로그램을 개발하기 위해서는 반드시 이것을 다운로드하여서 설치해야 한다..

자바 (Java) 2020.07.08

[Django] 쿠키 및 세션 다루기 (+ messages, request.user)

쿠키 및 세션에 대한 기본적인 개념은 이 포스팅을 참조하기 바란다. 여기서는 그러한 쿠키와 세션을 Django에서 어떤 식으로 다룰 수 있는지, 그리고 쿠키와 세션에 기반하여 제공하는 Django의 기본적인 기능 몇 가지를 살펴보도록 한다. 1. Django에서 쿠키 다루기 브라우저가 Request를 보낼 때 함께 보내는 쿠키의 값들은 장고에서 request.COOKIE 객체를 통해 접근 가능하다. 2. Django에서 세션 다루기 해당 브라우저와의 연결 상태를 기억하고 있는 세션 저장소(이하 세션)는 장고에서 request.session 객체를 통해 접근 가능하다. 이는 장고의 기본 미들웨어인 SessionMiddleware의 역할이다. 이 미들웨어는 클라이언트가 보내는 매 요청마다 request.se..

장고 (Django) 2020.07.07

[Web] HTTPS, 대칭키 및 비대칭키(공개키) 암호화

1. HTTPS 프로토콜 HTTP(HyperText Transfer Protocol)란 인터넷 상에서 통신을 할 때 데이터를 주고받는 형식(프로토콜)들 중 하나를 의미한다. 각각의 HTTP 요청과 HTTP 응답은 정해진 형식이 존재한다. 클라이언트가 HTTP 요청의 형식으로 서버에게 요청을 보내면 서버가 그 요청을 HTTP 요청의 형식에 맞게 해독을 하고, 이에 대한 응답을 HTTP 응답의 형식으로 클라이언트에게 보내면 클라이언트가 그 응답을 HTTP 응답의 형식에 맞게 해독을 하는 것이다. HTTPS의 S는 Secure의 약자로, HTTP의 보안 기능을 한층 더 강화한 프로토콜을 의미한다. 요즘 대부분의 신뢰할 만한 사이트들은 HTTPS 프로토콜을 사용하고 있다. HTTPS가 제공하는 대표적인 보안 기..