[OOP] TDA(Tell, Don't ASK)
·
OOP
TDA에 대해서Tell, Don't Ask. 객체에게 데이터를 요구(Ask) 하지 말고, 객체에게 일을 시켜라(Tell)1. 객체의 책임을 명확히 해야 한다TDA 원칙의 핵심은 객체가 스스로 자신의 책임을 다하도록 만드는 것입니다. 즉, 객체는 자신의 상태를 외부에서 조작하거나 판단하게 만들기보다는, 자신의 상태를 기반으로 행동할 책임을 가져야 합니다. 이렇게 하면 객체 내부의 상태 변경에 따라 외부 코드가 불필요하게 변경되는 상황을 피할 수 있습니다.2. 캡슐화의 중요성캡슐화는 객체의 데이터와 메서드를 보호하고 숨기는 것을 의미합니다. 객체 외부에서 객체의 속성(데이터)을 직접 접근하는 것이 아니라, 객체 스스로가 데이터를 처리하는 메서드를 제공함으로써 캡슐화가 이루어집니다. 이렇게 함으로써, 내부 구..
[TypeScript] 타입스크립트: 컴파일타임에서의 오류 감지
·
Dev Lang/TypeScript
런타임과 컴파일타임에 대해서 알고 있니?런타임(Run-time)과 컴파일 타임(Compile-time)의 개념을 이해하는 것이 TypeScript와 JavaScript의 차이를 이해하는 데 중요한 요소입니다. 이 두 개념이 어떻게 작동하는지 명확하게 이해하면, 왜 TypeScript가 더 엄격한 타입 시스템을 제공하는지, JavaScript가 왜 동적 언어로 런타임 시에 오류를 감지하는지 알 수 있습니다.1. 컴파일 타임(Compile-time)컴파일 타임은 코드가 실행되기 전에, 즉 프로그램이 빌드되는 과정에서 일어나는 단계입니다.컴파일러는 코드를 읽고, 그 코드가 올바른지 확인한 후 기계어로 번역하거나 다른 형태의 코드로 변환하는 역할을 합니다.이 단계에서 문법 오류나 타입 오류가 발생하면, 코드가 ..
[TypeScript] 타입스크립트: 정적 타입 시스템 제공(문자열 타입 & 문자열 리터럴 타입)
·
Dev Lang/TypeScript
두 타입은 두 언어에서 어떻게 사용되고 있을까?문자열 리터럴 타입과 같은 개념은 TypeScript에서 중요한 핵심 개념이지만, JavaScript에서는 제한적으로 적용되는 개념입니다. 그 이유는 TypeScript는 정적 타입 시스템을 제공하는 반면, JavaScript는 동적 타입 언어로 설계되었기 때문입니다.TypeScript에서의 핵심 내용문자열 리터럴 타입과 같은 기능은 TypeScript에서 매우 중요한 역할을 합니다. TypeScript는 JavaScript의 상위 집합으로, 개발자가 코드 작성 시 더 안전한 타입 검사를 통해 버그를 예방할 수 있도록 도와줍니다.TypeScript는 타입을 명시적으로 지정하거나 추론을 통해 정적 분석을 수행하여 런타임 전에 타입 오류를 찾아낼 수 있습니다.문..
[Node.js] 이벤트 루프의 이해: 비동기 처리의 핵심
·
Dev Framework/Node.js
학습하게 된 계기Node.js는 서버 사이드 JavaScript 환경으로, 비동기적이고 이벤트 기반의 아키텍처를 가지고 있습니다. 이러한 특성 덕분에 Node.js는 높은 동시성을 처리할 수 있으며, I/O 작업이 많은 애플리케이션에서 뛰어난 성능을 발휘합니다. 그러나 이 모든 것의 중심에는 '이벤트 루프'라는 핵심 메커니즘이 있습니다. 이 글에서는 Node.js의 이벤트 루프에 대해 자세히 알아보고, 이를 통해 Node.js가 어떻게 비동기 처리를 수행하는지 이해해 보도록 하겠습니다.이벤트 루프란?이벤트 루프는 Node.js가 non-blocking I/O 작업을 수행하면서도 단일 스레드 기반의 자바스크립트가 동시성을 가질 수 있게 해주는 핵심 메커니즘입니다. 이는 마치 효율적인 웨이터가 여러 테이블의..
[NestJS] Node진영에서의 NestJS의 위상
·
Dev Framework/Node.js
1. NestJS와 다른 Node.js 프레임워크 비교NestJS를 다른 주요 Node.js 프레임워크와 비교해 보겠습니다.1.1. NestJS vs Koa- 구조: Koa는 Express와 마찬가지로 미니멀한 프레임워크인 반면, NestJS는 더 구조화되어 있습니다.- 미들웨어: Koa는 간결한 미들웨어 스택을 제공하지만, NestJS는 더 복잡하고 강력한 미들웨어, 인터셉터, 파이프 시스템을 제공합니다.- 타입 안전성: NestJS는 TypeScript를 기본으로 사용하여 더 강력한 타입 안전성을 제공합니다.1.2. NestJS vs Sails.js- ORM: Sails.js는 Waterline ORM을 기본으로 제공하지만, NestJS는 TypeORM, Sequelize 등 다양한 ORM과 통합할 ..
[NestJS] NestJS는 Spring에서 많은 영감을 받았다.
·
Dev Framework/Node.js
1. NestJS와 Spring 프레임워크의 유사성NestJS는 Java 생태계의 Spring 프레임워크에서 많은 영감을 받았습니다. 이 두 프레임워크 간의 유사성은 다음과 같습니다:1.1. 모듈 구조Spring과 NestJS 모두 모듈화된 구조를 채택하고 있습니다. Spring의 `@Configuration`과 `@ComponentScan`은 NestJS의 `@Module` 데코레이터와 유사한 역할을 합니다. 두 프레임워크 모두 관련 기능을 논리적 단위로 그룹화하여 애플리케이션의 구조를 개선합니다.1.2. 의존성 주입 시스템Spring의 핵심 기능 중 하나인 의존성 주입(DI)은 NestJS에서도 중요한 역할을 합니다. Spring의 `@Autowired`와 유사하게, NestJS는 생성자 주입을 통해..
[NestJS] NestJS는 처음이지? 어서와.
·
Dev Framework/Node.js
1. NestJS 너 대체 정체가 뭐야?NestJS는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 혁신적인 프레임워크입니다. 2017년 Kamil Myśliwiec에 의해 개발된 이 프레임워크는 Angular의 아키텍처에서 영감을 받아, TypeScript를 기반으로 한 견고하고 모듈화된 구조를 제공합니다.현대적인 서버 애플리케이션 개발에서 마주치는 많은 과제들, 예를 들어 코드의 구조화, 확장성, 유지보수성 등의 문제를 NestJS는 효과적으로 해결합니다. 이 프레임워크는 Express.js를 기본 HTTP 서버 프레임워크로 사용하지만, 필요에 따라 Fastify로 전환할 수 있는 유연성도 제공합니다.Fastify: Node.js 환경에서 사용되는 웹 프레임워크로, 성능이..
[웹 배포] 프록시(Proxy)
·
협업
프록시의 역사와 배포에서의 역할웹 개발을 하다 보면 프록시라는 용어를 자주 접하게 됩니다. 하지만 프록시가 정확히 무엇이며, 어떻게 발전해 왔는지, 그리고 배포 환경에서 어떤 역할을 하는지 깊게 생각해 본 적이 있으신가요? 이번 글에서는 프록시의 역사와 함께 배포에서의 프록시 활용에 대해 알아보겠습니다.프록시의 탄생: 왜 필요했을까?프록시는 영어로 "대리인"을 뜻합니다. 마치 누군가 대신해서 메시지를 전달해주는 역할을 하는 것이죠. 인터넷 초창기에는 네트워크 속도가 느리고, 보안 이슈도 많았습니다. 이때 프록시는 클라이언트와 서버 사이에서 중간 역할을 수행하며 이러한 문제들을 해결하는 데 도움을 주었습니다.예를 들어, 학교 도서관에서 특정 웹사이트에 접속하려고 할 때 직접 인터넷에 연결하지 않고 도서관 ..
개발자 성현
개발새발 블로그