분류 전체보기 465

[백엔드 스터디] 4주차 - 컴포넌트 스캔 그리고 의존관계 자동 주입

이번 4주차 주제는 컴포넌트 스캔 그리고 의존관계 자동 주입이다. 컴포넌트 스캔이란? 스프링 빈을 등록할 때 구성파일에 @Bean을 등록해서 사용할 수 있었다. 하지만 관리할 빈이 많아지면 이 방식이 관리하기 번거로워진다. 그래서 굳이 빈 설정파일을 만들지 않거나 @Bean을 안쓰고 빈 등록을 할 수 있는 방식을 쓰게 되었다. 그게 @Component를 써서 컴포넌트 스캔을 하는 방식이다. 설정파일이 없다면 의존관계를 어떻게 주입할까? @Autowired를 사용해서 자동 의존관계 주입을 한다. 자동 의존관계 주입은 아래서 살펴본다. 컴포넌트 스캔이란 스프링이 스프링 빈으로 등록될 준비가 된 클래스들을 스캔해서 빈으로 등록해주는 과정을 말한다. @Component 어노테이션이 붙어있는 클래스들은 모두 컴포..

[UnrealEngine5] Unreal Engine5로 제작한 첫 시네마틱 영상

이번주에 시간이 남아서 언리얼5를 만져봤다. 예전에 한번 잠깐 배워본 적이 있었는데 거의 기억에 남아있지 않아서 이번에 좋은 학습 영상을 추천받아서 새롭게 살펴보았다. 그리고 학습 영상을 통해 하나의 시네마틱 영상을 제작해보았다. 카메라 움직임과 빛의 세기 등을 조절해서 첫 영화를 만들었다. 재밌게 배웠고 정말 뛰어난 툴이라는 생각이 든다. 아래 영상을 첨부한다. 4K라서 영상의 용량이 꽤나 크다. 그래서 카톡으로 다른 사람들에게 자랑하고 싶었지만 못했다. (카톡 전송용량을 초과해버려서 그렇다. 그래서 여기 올려서 링크로 보내줄거다.ㅎ) 조금 어설프지만 그래도 처음 만든 것 치곤 잘 만들었다.

Unreal Engine 2023.01.19

[Computer Graphics] 출력문이 렌더링 속도에 미치는 영향

오늘 시간이 남아서 평소 관심있던 컴퓨터 그래픽스를 살펴보고 있었다. 자바로 3D 오브젝트를 구현하는 내용을 공부 중이었는데 정말 흥미로운 문제를 만났다. 화면에 랜덤으로 색을 입힌 256 x 256 사이즈의 정사각형을 그려내고 해당 정사각형을 지속적으로 움직이도록 했는데 그려내는 속도가 연산 속도를 따라가질 못했다. 한마디로 화면에 그려내는 속도가 너무 느렸다. 아래 영상을 보면 무슨 말인지 알 것이다. 아래 영상을 보면 얼마나 느린지 체감이 될 것이다. (원래는 계속 이어지면서 그려야 한다는 걸 감안하면 뭔가 문제가 있다는 걸 알 수 있다. ) 그래서 추측을 해보게 되었다. 모니터에 그려내는 동작은 IO 작업이 굉장히 많이 일어나는 작업인데 분명 이 과정 어딘가에 병목이 있다고 생각했다. 어떻게 해결..

[백엔드 스터디] 3주차 - Bean Scope 그리고 Bean 생명주기

1, 2주차 스터디에서 애매했던 질문에 대한 탐색은 다음과 같다. 1. IoC/ DI를 통해 응집도가 높아지는 이유? 2. 필드 주입의 단점 중 불변성이 있는데 왜죠? https://shanepark.tistory.com/368 -> 필드 인젝션은 immutable 불가라는 단점이 있다.이건 setter 주입에서도 마찬가지인데 필드 인젝션으로 주입받는 클래스는 final로 선언 할 수 없기 때문에 state safe하지 않다고 한다. (오직 Constructor Injection만 final 선언이 가능하다고 합니다. 그외의 방법들은 주입되는 필드에 대해 mutable한 상태를 만든다고 한다. 그래서 생성자주입이 권장되는 이유이기도 하다. https://sightstudio.tistory.com/20) ..

[Tech] DDD - 도메인 주도 설계란?

최근 여유가 생겨 라는 책을 읽고 있다. 흥미로운 개념들이 많이 나와서 재밌게 읽고 있는데 DDD에 대한 개념이 많이 등장한다. DDD에 대한 개념은 이전부터 알고 있었지만 추상적인 개념이라고 명확하게 이해하진 못한 것 같다. 개인적으로 어떤 개념이든 이런 수준의 높은 추상적인 개념, 방법론, 패턴, 철학 등은 본인이 직접 써보거나 신중하게 장단점을 판단하지 않은 이상 무턱대고 쓰지 말아야한다고 생각한다. 그래서 이번에 시간을 갖고 DDD 관련 자료를 여러 개 탐색해보고 그 내용을 정리해보고자 한다. 도메인이란? 소프트웨어로 해결하고자 하는 문제 영역이다. 즉 비즈니스 영역이다. 도메인 주도 설계란? 도메인을 중심으로 하는 개발방식이다. 도메인에 관련된 문제를 해결하는게 핵심이다. 복잡한 도메인을 해결하..

개발 정보 2023.01.06

[백엔드 스터디] 2주차 - Spring Container(ApplicationContext)

2주차 백엔드 스터디에서는 Spring Container(ApplicationContext)에 대해 알아보고자 한다. Container란? 스프링에서 컨텍스트(Context)는 스프링이 관리하는 빈들이 담겨 있는 컨테이너라고 이해하면 된다. ApplicationContext란? ApplicationContext는 BeanFactory의 모든 기능을 포함하며, BeanFactory보다 추천되는 개념이다. 트랜잭션 처리, AOP에 대한 처리를 할 수 있으며 BeanPostProcessor, BeanFactoryPostProcessor 등을 자동으로 등록하고, 국제화 처리, 어플리케이션 이벤트 등을 처리할 수 있다. 스프링 컨테이너라고 말하면 일반적으로 ApplicationContext를 의미한다고 보면 된다..

[백엔드 스터디] 1주차 - DI, IoC 그리고 DI Container

백엔드 스터디 1주차 내용을 정리하고자 합니다. 1주차에 다루고자 하는 내용은 DI, IOC 그리고 DI Container 입니다. DI 란? Dependency Injection은 의존성 주입이라고 부릅니다. 쉽게 말해 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴입니다. 인터페이스를 사이에 둬서 클래스 레벨에서 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입해서 유연성을 확보하면서도 결합도를 낮출 수 있는 패턴입니다. 여기서 의존성(Dependency)은 두 클래스 사이의 관계로 설명할 수 있습니다. A 클래스가 B클래스를 A클래스 내부의 변수로 사용한다고 가정할때 A클래스는 B클래스와 의존관계가 형성되었다고 말합니다. 그리고 이런 상황에서 B클래스를 수정하면 A클래스도 수정..

[Tech] CORS 란? - Cross origin resource sharing

주말이라 블로그를 탐방하면서 백엔드 관련 기술 질문을 보고 있었는데 CORS에 대한 정확한 개념을 알고 있는지 의문이 들었다. CORS가 다른 도메인의 자원을 요청했을때 거부 당하는 개념이라고 알고 있는데 추가적인 내용은 알지 못했다. 다행히도 우테코에 CORS에 대한 굉장히 좋은 자료가 올라와있었다. 관련 자료들을 보고 요약하고 정리한 내용을 간단하게 써보고자 한다. Origin이란? url의 Protocol, Host, Port를 통해서 같은 출처인지 판단할 수 있다. SOP란? same origin policy의 약어이다. 다른 출처의 리소스를 사용하는 것에 제한하는 보안 방식이다. 왜 SOP을 사용해야 할까? 해커가 링크를 담은 메일을 보낸다. 클릭을 한 곳에 가면 해커가 만든 주소로 간다. 이때..

개발 정보 2023.01.01
반응형