이재윤의 블로그
취소

HTTP 메서드

💻 HTTP HTTP 프로토콜은 신뢰성 있는 데이터 전송 프로토콜로 수십억개의 이미지, HTML 페이지, 텍스트 파일, 동영상, 음성 파일등과 같은 대량의 데이터를 빠르고 정확하게 사용자의 브라우저에 옮겨주는 역할을 합니다. HTTP 프로토콜은 메세지를 통해 데이터를 주고 받습니다. HTTP 메세지는 클라이언트로부터의 요청이나 서버로부터의 응답 중 ...

Controller, Service, Repository

DDD(Domain Driven Design)의 방법대로 서비스를 구현하기 위해서는 계층을 나눠 각각의 역할을 분리해야합니다. DDD를 이용한 개발에서 사용하는 세개의 계층에 대해 알아보겠습니다. 💻 Controller Controller는 사용자의 요청 (post, get, delete, patch)을 받은 후, 요청에 대한 응답을 다시 사용자에...

Entity, DTO, VO

💻 Entity 실제 DB의 테이블과 매핑되는 클래스로 id값으로 구분이되며, 로직을 포함할 수 있습니다. 아래의 예시는 JPA를 활용한 Entity 코드 입니다. @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationTy...

DDD vs SQL 중심 설계

💻 SQL 중심 설계란? SQL 중심설계는 시스템을 설계할 때, 데이터베이스를 중심으로 시스템을 설계하는 방법입니다. 따라서 데이터베이스 스키마를 먼저 설계하고, 스키마를 기반으로 서비스의 비즈니스 로직을 작성하게 됩니다. SQL 중심설계의 가장 큰 단점은 스키마와 비즈니스로직의 강한 결합입니다. 이런 단점에서 파생되는 문제는 다음과 같습니다. ...

DI 와 IoC

💻 DI (Dependency Injection)이란? Dependency Injection을 살펴보기 전에 의존성이 무엇인지 살펴보겠습니다. 의존성은 객체들간에 맺을 수 있는 관계중 하나로, 한 클래스의 정의를 일부 변경했을 때 다른 클래스가 변경되는 경우 두 클래스는 의존관계에 있다고 할 수 있습니다. 의존 관계는 보통 구상 클래스(concret...

오버라이딩

💻 오버라이딩이란? 상속을 통해 super class와 sub class 관계가 형성된 두 클래스에서 sub class가 super class의 속성과 함수를 그대로 사용할 수도 있지만, sub class에서 재정의하여 사용할 수도 있습니다. 이렇게 재정의하는 것을 overriding이라고 합니다. public abstract class Caffe...

interface의 객체지향적 특성

interface가 갖는 특징들을 객체지향의 특성 네가지와 연관지어 보겠습니다. 💻 캡슐화 훌륭한 객체란 내부의 정확한 구현을 모른 채, interface만 알면 쉽게 상호작용할 수 있는 객체를 의미합니다. 이런 객체를 만들기 위해서는 객체 외부에서 접근할 수 있는 interface와 내부에 은닉화되는 구현을 명확히 분리해서 생각해야 합니다. i...

객체지향의 네가지 특성

💻 캡슐화 데이터(속성)와 함수가 응집력있게 구성된 집단을 만드는 것을 캡슐화라고 합니다. 캡슐화를 통해서 각 집단들을 구분지을 수 있습니다. 집단을 만드는 과정에서 데이터는 숨겨지고, 일부 함수만 외부에 노출되는데 캡슐화를 정보은닉이라고 부를 수 있는 이유는 이런 이유에서 입니다. class Circle { private int rad; ...

TypeScript 타입 집합으로 생각하기

💻 타입들을 집합으로 생각하기 TypeScript의 타입들을 할당가능한 값들의 집합이라고 생각하면, |, &등을 사용한 연산이나 extends 키워드를 사용해 정의한 새로운 타입들을 이해하기 수월해집니다. TypeScript를 집합관점에서 살펴보기 전에 알고 있어야 할 배경지식은 아래와 같습니다. A extends B는 A ⊂ B와 같...

Webpack 기본 설정

💻 Webpack 이란? Webpack은 프로젝트에 임포트된 여러 모듈들을 의존성에 따라 묶어주어, 하나 이상의 번들을 생성해 주는 번들러(bundler)의 한 종류 입니다. 프로젝트의 규모가 커지게되고 임포트하는 모듈들이 많아질수록 번들러의 중요성이 커지게 되었는데 그 이유를 알아보겠습니다. 아래와 같은 두개의 JavaScript 파일이 있다고 ...

일렉트론 Main Process - app

💻 app 모듈 Main Process에 다음과 같이 임포트해서 사용가능 하며, 애플리케이션의 생명 주기를 관리하는 역할을 합니다. const { app } = require("electron"); Node.js의 Event Emitter를 상속받았기 때문에 이벤트들을 수신해 적절한 로직을 실행할 수 있습니다. app 모듈에서 수신하는 이벤트와...

일렉트론 기초

💻 일렉트론이란? 일렉트론은 chromium과 node.js를 기반으로 만들어진 프레임워크로 JavaScript, HTML, CSS를 이용하여 여러 OS(Window, macOS, Linux)에서 동작하는 에플리케이션을 만들수 있습니다. 💻 설치 및 실행 방법 일렉트론을 전역 (–g) 또는 프로젝트에 로컬로 설치한 후 electron . 명령어로...