SpringBoot - SpringBoot Study

1. 스프링부트 공부하는 이유 내 생각 : 스프링 개념은 처음 공부하거나 학원에서 많이 자세히 배우는데 스프링부트 관련 개념은 단순히 개발 환경만 편히 제공한다는 것만 배우고 제대로 배우지 않는다고 생각해서 이전에 해당 강의를 구매함. 강의에서 말하는 스프링 부트 : 최소한 스프링 부트가 어떤 원리로 작동하는지 알아두어야 함! 그래야 문제가 발생했을 때 해결 가능! 스프링 부트의 원리를 이해하면 문제점을 쉽게 파악! 대부분의 개발자가 비슷하게 고민하는 기능을 스프링 부트는 이미 만들어서 제공! ex) 외부 설정,...

더보기

TypeScript - TypeScript Study3

8. 타입 조작하기** 0) 타입 조작이란 기본 타입이나 별칭 또는 인터페이스로 만든 원래 존재하던 타입들을 상황에 따라 유동적으로 다른 타입으로 변환하는 타입스크립트의 강력한 기능!! 앞에서 배운 제네릭도 함수나 인터페이스, 타입 별칭, 클래스 등에 적용해서 상황에 따라 달라지는 가변적인 타입을 정의할 수 있기 때문에 타입을 조작하는 기능에 포함되지만 개념이 방대하다. a. 타입 조작하기 4가지 인덱스드 액세스 타입 : 객체, 배열, 튜플 타입으로부터 특정 프로퍼티나 특정 요소의 타입만 추출 keyof 연산자 : ...

더보기

TypeScript - TypeScript Study2

5. 인터페이스 0) 인터페이스 개념 타입 별칭과 동일하게 타입에 이름을 지어주는 또 다른 문법!! interface Person { name: string; age: number; } 인터페이스를 타입 주석과 함께 사용해 변수의 타입을 정의 const person: Person = { name: "이정환", age : 27 }; a. 선택적 프로퍼티 interface Person { name: string; age?: number; } const person: Person = { name: "이정환", // age: 27, }; b...

더보기

TypeScript - TypeScript Study1

1. TypeScript 개론 1) TypeScript 실행 순서 타입스크립트 코드의 컴파일 과정에 타입 검사가 포함되어 있기 때문에 타입 스크립트 코드를 컴파일 해서 생성한 자바스크립트 코드는 타입 검사를 통과한 자바스크립트 코드이다. 그러므로 타입 오류가 발생할 가능성이 낮은 안전한 자바스크립트 코드이다. 타입 오류가 발생하고 있는 타입스크립트 코드는 컴파일 시, 타입 검사를 통과할 수 없기 때문에 자바스크립트 코드로 변환되지 않아 실행할 수 없게 된다. 또 다른 사실은 타입스크립트에 작성한 타입 관련 코드들은 결국 자바스크립트로 변환될 때 사라지게 되어 프로그램 ...

더보기

Design Pattern - Design Pattern GoF Study1

1. Strategy 1) 캡슐, 캡슐화 캡슐** : 내부의 코드가 뭔지 알 필요가 없다. 즉, 인터페이스 개념 캡슐 밖에서는 캡슐 안의 코드를 사용할 수 없게 해야 한다.(외부에서 영향을 주면, 에러가 발생한다.) 캡슐화** : 비슷한 속성을 가진 클래스나 메서드 연결! 인터페이스로 내부 구현 숨기는 방법 캡슐화를 위해 private으로 작성한다 2) Strategy Pattern** a. 개념 추상화, 인터페이스를 의존하는 객체가 필요하다. Client 객체 설계 : 생성과 사...

더보기

Architecture - DDD Study1

1. DDD DDD 아키텍처를 이용하려는 이유 : 이전에 공부했던 내용 중에 객체 지향 예시 코드들나 JPA 예시 코드들이 거의 Data-Driven이나 Transactional Script 방식이 아니라 Domain-Driven 방식이라서 공부하게 되었다. 처음에는 이러한 방식이라는 것을 알지 못했으나 공부를 하면서 Domain-Driven라는 것을 알게 되었고 사이드 프로젝트로 ORM을 JPA를 이용하면서 해당 도메인 모델을 도입해보려고 자세하게 알아보게 되었다. 0) DDD 전술적 패턴 vs DDD 전략적 패턴 전쟁이랑 똑같은 생각을 하면 된다. 전략...

더보기

Kafka - Kafka Study1

1. Message Broker vs Event Broker 1) Message Broker 메시지 브로커는 일반적으로 대기업들에서 대규모 메시지 기반 미들웨어 아키텍쳐에서 사용되어 왔다. 미들웨어는 서비스하는 애플리케이션들을 보다 효율적으로 아키텍처들을 연결하는 요소들로 작동하는 소프트웨어이다. 예를 들어, 메시징 플랫폼, 인증 플랫폼, 데이터베이스 등이 있다. 또한, 메시지 브로커는 메시지 브로커에 있는 큐에 데이터를 보내고 받는 프로듀서와 컨슈머를 통해 메시지를 통신하고 네트워크를 맺는 용도로 사용해왔다. 메시지 브로커는 메시지를 받아서 적절히 처리하고나서 즉시 또는 ...

더보기

Project - Etirovaf

1. Infra 1) 3Tier-Docker-Compose 사용기 etirovaf의 초기 개발 환경 구조는 Docker 환경에서 React(+ Vite) + SpringBoot + MySQL(MariaDB)으로 3tier-docker-compose 개발 환경을 구성했다. 초기 프로젝트 설정에서 SpringBoot 프로젝트를 jar 파일로 만들기 위해 빌드를 하면 다음과 같은 에러가 발생한다. DataSourceBeanCreationException을 뱉는데 test에서 connection을 제대로 맺지 못하고 뱉는 에러이다. 즉, SpringBoot Server보다 먼저 My...

더보기

Next - NextJS Study1

1. Next.js 1) Next.js 개념 Next.js는 오픈 소스 JS 프레임워크이다. React.js는 오픈 소스 JS 라이브러리이다. Next.js는 React와 매우 유사하고 몇가지 메서드와 개념이 추가된다. 그래서 React.js의 확장판이다. 개발 시, Next.js는 프레임워크에서 정해놓은 방법대로 개발을 해야 한다. 반면, React.js는 프로그래머가 무슨 도구를 쓰던간에 상관없다. 또한, SSR 방식을 제공한다. CSR과 혼합해서 사용 가능하다. 기술적, 비즈니스적으로 매우 효율이 좋다. SEO(검색 엔진)에 최적화되어 있다. 2)...

더보기

React - React Study2

7. useReducer : 상태 관리 분리 1) useReducer 개념 useState와 같은 역할을 하며, 새로운 State를 생성한다. 또한, State를 업데이트 시키는 함수도 제공한다. 추가적으로 컴포넌트 외부에 State 관리 로직 분리가 가능하다.** a. useReducer 구조 정리 const [저장 값, dispatch] = useReducer(reducer, 저장 값의 초기화); dispatch : 어떤 함수를 실행시킬지 설정(트리거) - 어떤 상태 변화를 할지 선택 dispatch 내부의 설정은 action이라는 인수로 ...

더보기

React - React Study1

1. Node.js 1) Node.js 실행하기 Node.js 사용 시, pakage.json의 scripts에서 실행 스크립트를 추가 설정하면 Node.js 실행 시, 모든 경로를 다 써주지 않아도 된다. node src/index.js : 이러한 명령어 같은 것들은 이젠 더 이상 사용하지 않아도 된다. npm run start : 이제는 이렇게 간단한 명령어로 Node.js 코드를 실행한다. a. 실습 코드 : package.json : { "name": "section1", "version": "1.0.0", "descript...

더보기

SpringBoot - JPA Study2

1. JPA 등장 배경 1) JPA 사용하는 이유?** 객체와 RDB(관계형 데이터 베이스)의 패러다임을 줄이고자 사용!! SQL 중심의 개발에서 객체중심의 개발로 하기위해서 2) queryDSL 사용 이유? 컴파일 단계에서 오류를 잡아줌 변수명이나 쿼리가 길어지기 때문에 이를 줄이고자 등장 3) spring 사용하는 이유? Bean -> IOC -> DI // filter, AOC, intercept 빈이 객체의 생명주기를 관리해줘서 2. JPA 동작원리 EntityManager 안에 영속성 컨텍스트가 있으며...

더보기