목록전체 글 (60)
yeon's blog

📌 도커(Docker)란 무엇인가? 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며, 컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계이다. ✔️ 컨테이너(Container) 코드와 모든 종속성을 패키지화하여 응용프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어 표준 단위이다. → 컨테이너 안에 다양한 프로그램, 실행 환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다. ✔️ 도커 이미지 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용프로그램을 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지이다. → 즉, ..
HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다. 1. GET - 쿼리 파라미터 ?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함하여 전달 검색, 필터, 페이징 등에서 많이 사용하는 방식 2. POST - HTML Form Content-Type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 전달: username=hello&age=20 HTML Form 사용 3. HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용 JSON, XML, TEXT 등 데이터 형식은 주로 J..
HTTP 요청 - 기본, 헤더 정보 조회 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다. HTTP 요청 헤더 정보를 조회하기 위한 코드를 작성한 후, @Slf4j 로깅 라이브러리를 이용해 각 요청에 대한 로그를 남겨 확인해보았다. *로그 관련 글 첨부 https://hyeyeon-ii.tistory.com/66 RequestHeaderController 전체코드 package hello.springmvc.basic.request; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.spri..
HTTP 요청 매핑 관련 애노테이션을 정리해보자 ‼️ 요청 매핑 @RequestMapping 클라이언트 요청에 정보를 어떤 Controller가 처리할지 매핑하기 위한 애노테이션 @RequestMapping에 URL을 포함하여 해당 Controller 클래스에 명시하여 사용한다. 웹 브라우저에서 해당 URL이 호출되면 Controller 내부의 메서드가 호출된다. @RequestMapping("/mapping/users") public class MappingClassController { ... } 웹 브라우저에서 `http://localhost:8080/mapping/users` URL이 호출되면 → MappingClassController 내부의 메서드가 호출된다는 것이다. @Controller @..

System.out.print() System.out.print()로 콘솔을 남기게 되면 문제가 있다. print() 메서드는 syncrhonized로 동기화가 되어있어, 기록을 남길 때마다 lock이 걸려 엄청난 성능 저하를 불러 일으키게 된다. 개발 단계에서 이를 사용한 후 방치해두면 I/O 요청이 발생할 때마다 쓸데없는 리소스를 잡아먹게 될 것이다. 로그(Log) 로그(Log)는 기록을 남기는 것으로, 로깅을 하면 앱 개발시 발생하는 문제점을 모니터링하거나 추적하는 데 용이하다. 또한 해당 데이터를 분석해 통계를 낼 수도 있다. 하지만 로그를 잘못 사용하면 문제가 생길 수도 있기 때문에, 효율적으로 로깅하는 방법을 이해해야 한다. 참고로 로그 관련 라이브러리도 많고, 깊게 들어가면 끝이 없기 때문에..

1. 레이아웃 설정 및 아이콘 넣기 src/main/res/drawable 파일에 팁 페이지에 넣을 아이콘 png들을 넣어준 후 아래와 같이 코드를 작성한다. fragment_tip.xml 추가코드 실행 화면 2. 컨텐츠 리스트 만들기 - RecyclerView *RecyclerView 사용법은 따로 정리해 포스팅 할 예정이므로 자세한 설명은 -- 생략 -- activity_content_list.xml 전체코드 content_rv_item.xml 전체코드 ContentModel 전체코드 package com.example.mysololife.contentsList data class ContentModel ( var title: String = "", var imageUrl: String = "" ) ..

본 내용은 인프런 사이트에서 김영한 선생님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의 내용을 정리한 것입니다. 🌱 스프링 MVC 전체 구조 💡 Spring MVC 구조 💡 동작 순서 핸들러 조회: 핸들러 매핑을 통해 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행한다. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. viewResolver 호출: 뷰 리졸버를 찾고 실행한다. View 반환: 뷰 리졸버는 뷰의 논리 이름을 물리 이름으루 바꾸고, 렌더링 역..

본 내용은 인프런 사이트에서 김영한 선생님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의 내용을 정리한 것입니다. 🌱 단순하고 실용적인 컨트롤러 - v4 앞서 만든 v3 컨트롤러는 서블릿 종속성을 제거하고 뷰 경로의 중복을 제거하는 등, 잘 설계된 컨트롤러이다. 그런데 실제 컨트롤러 인터페이스를 구현하는 개발자 입장에서 보면, 항상 ModelView 객체를 생성하고 반환해야 하는 부분이 조금은 번거롭다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야 한다. 소위 실용성이 있어야 한다. 💡 v4 구조 → 기본적인 구조는 V3와 같지만 컨트롤러가 ModelView를 반환하지 않고 ViewName만 반환한다. ControllerV..

본 내용은 인프런 사이트에서 김영한 선생님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의 내용을 정리한 것입니다. 🌱 프론트 컨트롤러 패턴 소개 💡 프론트 컨트롤러 도입 전 → 공통 로직이 각각의 컨트롤러에 중복되어 존재함 💡 프론트 컨트롤러 도입 후 💡 FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로 !! 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 🌱 프론트 컨트롤러 도입 - v1 💡 v1 구조 Controller V1 package hello.servlet.web.frontcontroller.v1; import jakarta.se..

본 내용은 인프런 사이트에서 김영한 선생님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의 내용을 정리한 것입니다. 🌱 MVC 패턴 개요 💡 MVC 패턴 이전 너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게되고, 결과적으로 유지보수가 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경 할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 한다. HTML 코드 하나 수정해야 하는데, 수백줄의 자바 코드가 함께 있을 것이고 또는 비즈니스 로직을 하나 수정해야 하는데 수백 수천줄의 HTML 코드가 함께 있을 것이다. 변경의 라이프 사이클 사실 진짜 문제는 둘 사이에 ..