Back-end
-
1. 애플리케이션 패러다임 용어 정리 1-1. DI(Dependency Injection) 의존성 주입을 알아보기 전에 먼저 Dependency, 즉 "의존성"이라는 것이 무엇을 말하는지 알아보겠습니다. 어떤 객체가 다른 객체와 직접 상호작용하거나, 어떤 객체가 다른 객체를 참조하고 있다면 '그 객체는 다른 객체에 의존성을 갖는다'고 말합니다. 또한 그러한 의존성을 직접 갖도록 하는 것이 아니라 제 3자로부터 주입 받는 것을 의존성 주입이라고 합니다. 이렇게만 들으면 이해하기 어려우니 위키피디아에 나와있는 5살에게 DI 설명하기를 한 번 볼까요? 너가 스스로 냉장고로 가서 무언가를 꺼내오려고 할 때 문을 닫지 않고 열어두거나 엄마나 아빠가 너가 안먹었으면 좋겠다고 생각하는 것들을 갖게 되는 문제가 생길 ..
[NestJS] NestJS와 관련된 기술 용어 정리 (DI, IoC, AOP 등...)1. 애플리케이션 패러다임 용어 정리 1-1. DI(Dependency Injection) 의존성 주입을 알아보기 전에 먼저 Dependency, 즉 "의존성"이라는 것이 무엇을 말하는지 알아보겠습니다. 어떤 객체가 다른 객체와 직접 상호작용하거나, 어떤 객체가 다른 객체를 참조하고 있다면 '그 객체는 다른 객체에 의존성을 갖는다'고 말합니다. 또한 그러한 의존성을 직접 갖도록 하는 것이 아니라 제 3자로부터 주입 받는 것을 의존성 주입이라고 합니다. 이렇게만 들으면 이해하기 어려우니 위키피디아에 나와있는 5살에게 DI 설명하기를 한 번 볼까요? 너가 스스로 냉장고로 가서 무언가를 꺼내오려고 할 때 문을 닫지 않고 열어두거나 엄마나 아빠가 너가 안먹었으면 좋겠다고 생각하는 것들을 갖게 되는 문제가 생길 ..
2024.01.19 -
NestJS에 대해서 모든걸 샅샅이 알아보도록 합시다. 이번 포스팅은 그 대장정의 첫 발걸음으로 NestJS에 대한 간략한 소개와 백엔드 관련 용어의 의미를 정리해보는 시간이 될 것 입니다. 아무리 NestJS에서 제공하는 모듈이나 테크닉들을 사용한다고 해도 그것을 왜 사용하는지를 모르면 결국은 말짱 도루묵입니다. 1. NestJS란? 우선 NestJS에 대해 깊이 공부하기 위해서는 그와 관련되어 상당히 많은 것들을 알아야 합니다. 우선 당연하게도 NestJS는 백엔드 프레임워크이기 때문에 백엔드와 관련된 지식들은 물론이거니와 NestJS가 채택한 수많은 소프트웨어적 아키텍처와 이를 뒷받침 하는 기술들도 마찬가지이죠. 아래 관계도에서 화살표는 크게 의미 없지만 NestJS에서 뻗어나올 수 있는 것들을 정..
[NestJS] NestJS 시작 전에 알아야 하는 백엔드 지식NestJS에 대해서 모든걸 샅샅이 알아보도록 합시다. 이번 포스팅은 그 대장정의 첫 발걸음으로 NestJS에 대한 간략한 소개와 백엔드 관련 용어의 의미를 정리해보는 시간이 될 것 입니다. 아무리 NestJS에서 제공하는 모듈이나 테크닉들을 사용한다고 해도 그것을 왜 사용하는지를 모르면 결국은 말짱 도루묵입니다. 1. NestJS란? 우선 NestJS에 대해 깊이 공부하기 위해서는 그와 관련되어 상당히 많은 것들을 알아야 합니다. 우선 당연하게도 NestJS는 백엔드 프레임워크이기 때문에 백엔드와 관련된 지식들은 물론이거니와 NestJS가 채택한 수많은 소프트웨어적 아키텍처와 이를 뒷받침 하는 기술들도 마찬가지이죠. 아래 관계도에서 화살표는 크게 의미 없지만 NestJS에서 뻗어나올 수 있는 것들을 정..
2024.01.10 -
※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번 주차는 드디어 대망의 마지막 주차이다. 이번 주차에는 세션과 쿠키, 예외처리, DispatcherServlet, 데이터의 변환과 검증 등 굉장히 많은 것을 배운 한 주가 되었다. 유튜브에서 패스트캠퍼스 광고를 많이 볼 수 있었는데 그 중 하나로 남궁성 강사님의 스프링 강의를 많이 지나치며 보았고 해당 강의 내용은 세션에 대한 부분이었다. 그래서 그 광고를 볼 때마다 되게 내용이 궁금했는데 그 강의를 실제로 보니 되게 감회가 새로웠다. 세션은 "하나의 브라우저와 하나의 서버가 1대1로 매칭되어 만들어지는 요청과 응답의 세트인 HTTP tr..
[패스트캠퍼스] 스프링 강의 - 8주차(마지막). Spring MVC※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번 주차는 드디어 대망의 마지막 주차이다. 이번 주차에는 세션과 쿠키, 예외처리, DispatcherServlet, 데이터의 변환과 검증 등 굉장히 많은 것을 배운 한 주가 되었다. 유튜브에서 패스트캠퍼스 광고를 많이 볼 수 있었는데 그 중 하나로 남궁성 강사님의 스프링 강의를 많이 지나치며 보았고 해당 강의 내용은 세션에 대한 부분이었다. 그래서 그 광고를 볼 때마다 되게 내용이 궁금했는데 그 강의를 실제로 보니 되게 감회가 새로웠다. 세션은 "하나의 브라우저와 하나의 서버가 1대1로 매칭되어 만들어지는 요청과 응답의 세트인 HTTP tr..
2023.04.01 -
※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번 주차에는 스프링에서의 Annotation에 대해서 많이 배웠다. 이전까지는 스프링을 사용하기 위해 가장 기초적인 단계를 배워 스프링에서 사용되는 각종 애노테이션에 대해서 이해를 더 쉽게 할 수 있게 도와주는 강의였다면 이제부터는 실제 그 기능을 사용해 보면서 언제 이것을 사용하고 무엇때문에 사용하는지에 대해 배울 수 있었다. 이번 주차에 강의들을 쭉 들으면서 느낀점은 이렇게 다양한 스프링의 기능들을 익혀놓는 것도 중요하지만 내가 사용하는 프로젝트에서 어떤 기능에 어떤 애너테이션을 붙여야 하는지를 또 생각해 봤을 때는 막막할 것 같다는 생..
[패스트캠퍼스] 스프링 강의 - 7주차. Spring MVC※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번 주차에는 스프링에서의 Annotation에 대해서 많이 배웠다. 이전까지는 스프링을 사용하기 위해 가장 기초적인 단계를 배워 스프링에서 사용되는 각종 애노테이션에 대해서 이해를 더 쉽게 할 수 있게 도와주는 강의였다면 이제부터는 실제 그 기능을 사용해 보면서 언제 이것을 사용하고 무엇때문에 사용하는지에 대해 배울 수 있었다. 이번 주차에 강의들을 쭉 들으면서 느낀점은 이렇게 다양한 스프링의 기능들을 익혀놓는 것도 중요하지만 내가 사용하는 프로젝트에서 어떤 기능에 어떤 애너테이션을 붙여야 하는지를 또 생각해 봤을 때는 막막할 것 같다는 생..
2023.04.01 -
※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번주에는 유명한 MVC 패턴과 관심사의 분리 등에 대해서 배웠다. 백엔드 개발자를 지망하면서 수없이 많이 들은 MVC패턴은 사실 유튜브를 찾아보거나 하면서 무엇인지 알기위한 노력을 해 왔으나 결국 제대로 된 내용은 어떤 것인지 머릿속에 들어온 것이 없었다. 이번 강의를 들으면서 그 개념을 확실히 익힐 수 있었지만 초반에는 무슨 소린지 이해하기 위해 조금 시간이 걸렸지만 역시 백문이 불여일견, 실습한 번을 진행해 보니 앞서 말했던 것이 무엇을 말하는 지 확실히 이해가 갈 수 있었다. 강의에서는 MVC 패턴을 다음과 같이 정의한다. Model을..
[패스트캠퍼스] 스프링 강의 - 6주차. Spring 시작하기※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번주에는 유명한 MVC 패턴과 관심사의 분리 등에 대해서 배웠다. 백엔드 개발자를 지망하면서 수없이 많이 들은 MVC패턴은 사실 유튜브를 찾아보거나 하면서 무엇인지 알기위한 노력을 해 왔으나 결국 제대로 된 내용은 어떤 것인지 머릿속에 들어온 것이 없었다. 이번 강의를 들으면서 그 개념을 확실히 익힐 수 있었지만 초반에는 무슨 소린지 이해하기 위해 조금 시간이 걸렸지만 역시 백문이 불여일견, 실습한 번을 진행해 보니 앞서 말했던 것이 무엇을 말하는 지 확실히 이해가 갈 수 있었다. 강의에서는 MVC 패턴을 다음과 같이 정의한다. Model을..
2023.04.01 -
※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번 주차부터는 드디어 스프링 강의 듣기 시작한다. 너무 배워보고 싶었는데 드디어 배울 수 있어서 너무 기대가 된다. 이번주에 들은 강의 내용은 스프링에 들어가기 앞서 웹 프로그래밍 및 백엔드 지식에 필요한 것들을 배운 시간이 되었다. 정말 기본부터 시작해서 점점 세세하게 가르쳐 주시기 때문에 놓치는 부분이 잘 생기지 않는다는 점이 정말 좋은 것 같다. 그 전에도 다른 백엔드 프레임워크를 사용해 보았지만 서버와 클라이언트 관점에서 깊이 생각할 수 있는 기회가 없었는데 이번 기회에 정말 자세하게 원격 프로그램을 시작하는 관점에서 서버와 클라이언..
[패스트캠퍼스] 스프링 강의 - 5주차. Spring 시작하기※ 패스트캠퍼스 포스팅들은 패스트캠퍼스 국비지원교육 'Java & Spring으로 시작하는 웹 프로그래밍'에 대한 내용을 정리하고 나름의 회고를 남겨놓은 글입니다. 이번 주차부터는 드디어 스프링 강의 듣기 시작한다. 너무 배워보고 싶었는데 드디어 배울 수 있어서 너무 기대가 된다. 이번주에 들은 강의 내용은 스프링에 들어가기 앞서 웹 프로그래밍 및 백엔드 지식에 필요한 것들을 배운 시간이 되었다. 정말 기본부터 시작해서 점점 세세하게 가르쳐 주시기 때문에 놓치는 부분이 잘 생기지 않는다는 점이 정말 좋은 것 같다. 그 전에도 다른 백엔드 프레임워크를 사용해 보았지만 서버와 클라이언트 관점에서 깊이 생각할 수 있는 기회가 없었는데 이번 기회에 정말 자세하게 원격 프로그램을 시작하는 관점에서 서버와 클라이언..
2023.03.31 -
9. 관심사의 분리와 MVC 패턴 - 이론 9-1. 관심사의 분리 (Separation of Concerns) package com.fastcampus.ch2; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.Calendar; @Controller public ..
[Spring] 관심사의 분리와 MVC 패턴9. 관심사의 분리와 MVC 패턴 - 이론 9-1. 관심사의 분리 (Separation of Concerns) package com.fastcampus.ch2; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.Calendar; @Controller public ..
2023.03.25 -
1. 원격 프로그램의 실행 로컬 프로그램 실행 Main이라는 프로그램이 어떤 컴퓨터에 있을 때 이를 로컬 프로그램이라고 하면 이 프로그램을 실행시키기 위해선 'java Main\n' 을 Command Line에 입력하면 되는데 여기서 java는 java.exe(자바인터프리터)를 의미하고 뒤의 Main 클래스의 main() 메소드를 호출하여 프로그램이 실행된다는 의미를 갖는다. "자바인터프리터로 Main 프로그램 실행해 줘." 해당 프로그램을 실제로 커맨드에서 실행해 보면 Hello라는 문구가 콘솔에 출력되고 다음 입력을 기다리는 커서가 깜빡거리는 상태가 될 것이다. 이 자바인터프리터가 객체를 새로 생성하지 않고도 main 메소드를 호출할 수 있는 이유는 main 메서드가 static 메서드이기 때문이다...
[Spring] HTTP 요청과 응답(feat. AWS 배포, MIME, Base64, 설정파일)1. 원격 프로그램의 실행 로컬 프로그램 실행 Main이라는 프로그램이 어떤 컴퓨터에 있을 때 이를 로컬 프로그램이라고 하면 이 프로그램을 실행시키기 위해선 'java Main\n' 을 Command Line에 입력하면 되는데 여기서 java는 java.exe(자바인터프리터)를 의미하고 뒤의 Main 클래스의 main() 메소드를 호출하여 프로그램이 실행된다는 의미를 갖는다. "자바인터프리터로 Main 프로그램 실행해 줘." 해당 프로그램을 실제로 커맨드에서 실행해 보면 Hello라는 문구가 콘솔에 출력되고 다음 입력을 기다리는 커서가 깜빡거리는 상태가 될 것이다. 이 자바인터프리터가 객체를 새로 생성하지 않고도 main 메소드를 호출할 수 있는 이유는 main 메서드가 static 메서드이기 때문이다...
2023.03.25