분류 전체보기

[Effective C++] #26_변수 정의 Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 항목은 5장 '구현', 항목 26 "변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘"에 해당하는 내용입니다. 변수 정의 변수를 정의하면 항상 부담해야 하는 비용이 두 가지가 있습니다. 하나는 프로그램 제어 흐름이 변수의 정의에 닿을 때 생성자가 호출되는 비용, 또 하나는 변수가 유효범위를 벗어날 때 소멸자가 호출되는 비용입니다. 변수를 일찍 정의 했을 때 std::string encryptPassword(const std::string& password){ using namespace std; string encryptedPas..
본 내용은 Node jsd의 "http module"의 개념과 예제들을 통해 Brower와 server의 통신 방법을 이해하기 위함입니다. 1. HTTP? "HyperText Transfer Protocol"의 악자로, HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 주로 웹에서 클라이언트-서버 사이에 이루어지는 요청/응답(Requset/Response) 프로토콜이죠! 예를 들면, 웹 브라우저(클라이언트)가 HTTP를 통해 서버로부터 웹페이지의 그림 정보, 혹은 Document 정보를 요청(Request) 하면, 서버는 응답(Response)하여 필요한 정보를 클라이언트로 전달합니다. 2. 서버 생성 const http = require('http'); const se..
[Effective C++] #25_예외를 던지지 않는 swap Scott Meyers의 "Effective C++" 를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 항목은 4장 '설계 및 선언', 항목 25 "예외를 던지지 않는 swap에 대한 지원"에 해당하는 내용입니다. Concept namespace std { template void swap (T& a, T& b){ T temp(a); a = b; b = temp; } } CS 전공자라면, 한번쯤 해봤을 "swap"에 대한 구현입니다. 25번 항목은 C++의 STL에 포함된 swap의 효율적인 구현을 목표로 합니다. 먼저, swap은 말 그대로 "값의 맞바꾸기" 입니다. 코드를 통해 swap 알고리즘을 살펴보겠습니다. ..
[DirectX12] #Part 2 - Direct 3D 기초 "DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행. 2.4 교환 사슬 (Swap Chain) 에니메이션 구현 중 프레임과 프레임 사이에 끊김 현상을 방지하기위해, 이중 버퍼링(Double Buffering)을 사용합니다. 먼저, 한 프레임 전체를 화면 바깥의 텍스처, 즉 후면 버퍼에 그립니다. 그리고, 후면 버퍼에 저장된 하나의 프레임을 화면에 제시함으로써, 사용자에게 오직 완성된 프레임만 보여주어, 끊김 현상을 방지할 수 있습니다. 이때, 우리는 2개의 텍스처가 ..
[DirectX12] #Part 2 - Direct 3D 기초 "DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행. 2.3 텍스처 형식 기본적으로 2차원 텍스처는 자료 원소들을 담는 2차원 행렬입니다. 2차원 텍스처는 2차원 이미지를 담고 있으며, 각 원소는 해당 이미지의 픽셀 하나의 색상 정보를 갖는다. 단순히 2차원 이미지의 픽셀 정보를 담는것보다 훨씬 범용적으로 사용됩니다. 단순 배열로 취급할 수 없습니다. 그렇다고, 아무 자료나 담을 수 있는것도 아니죠. Texture에는 특정 형식의 자료 원소들만 담고, 이는 DXGI_..
[DirectX12] #Part 2 - Direct 3D 기초 "DirectX12를 이용한 3D 게임 프로그래밍 입문" 서적의 Part 2, "Direct3D의 기초"에 해당하는 내용입니다. 현재, 게임 개발에 입문하여 기초지식을 습득하여 기록하기 위함이며, 개념 이해와 예제코드 작성을 진행. 2.1 - 기본 지식 D3D12(Direct 3D 12)는 Low-level에 사용되는 그래픽 API로, 응용 프로그램에서 GPU를 제어하고 프로그래밍하는데 사용됩니다. COM(Component Object Model), COM 객체 DirectX의 프로그래밍 언어의 독립성과 하위호환성을 가능케하는 기술이다. 책에서 설명하는 COM은 우리가 아주 잘 알고있는 C++의 클래스로 취급해도 무방하다. C++의 동적 메모..
Node,js의 async동작을 Promise 객체를 이용하여 구현해 보겠습니다. 1. Promise? Promise 객체는 Javascript의 비동기처리를 위한 객체입니다. 여기서 비동기 처리 코드란, Compiler가 code를 Line by line으로 위에서 아래로 읽어가며 컴파일을 진행할때, blocking fuction 혹은 코드를 만나 해당 코드 밑에 위치한 내용들이 언제 끝날지 모르는 blocking funciton 완료를 기다리는 synchronous operation과 달리, Event Loop을 통해 비동기 처리 코드를 call stack에서 빼와 처리하여 Call stack의 내용들을 보다 신속히 처리할 수 있습니다. 2. Promise 객체 사용 Promise객체는 JAVA의 "..
Node.js의 Event Loop Concept 이해하기 2편! 1. Single threaded, and blocking funciton console.log("first task"); console.time(); for (let i = 0; i < 1000000; i++) { const h3 = document.querySelector("h3"); h3.textContent = "Hey, everyone is waiting on me"; } console.timeEnd(); console.log("next task"); : 앞서, 우리는 Event Loop을 살펴보며, Node.js의 특성에 대해 파악했습니다. Node.js의 경우 코드를 line by line으로 읽어내며, 앞선 line의 fun..
1. What is JS? Single-threaded, non-blocking , asynchronous, and concurrent language. A) Call stack : Javascript is single-threaded programming language, which means that it has a single call stack! 그렇다면, single-threaded는 무슨 의미일까? 단순히 한번에 하나 의 일만 처리할 수 있다라고 볼 수 있습니다. Call stack에 대한 시각화를 위해 간단한 예제를 작성해봤습니다. function multiply (a, b) { return a*b; } function square (x) { return multiply(x, x); } fu..
Hardii2
'분류 전체보기' 카테고리의 글 목록 (54 Page)