Git에서 브랜치를 이동할 때 다음 두 명령어를 모두 사용할 수 있다.결과는 비슷해 보이는데, 왜 switch라는 명령어가 따로 존재하는 걸까?

Git & GitHub 자주 사용하는 명령어 정리

프로젝트에서 기능을 개발하던 중 갑자기 긴급한 버그를 수정해야 할 때가 있다.
[Web] 웹 서비스 구조와 프론트엔드의 역할 이해하기
[Web] Web Server와 WAS, 데이터베이스 연결 구조 > 참고 영상: 웹 서비스 이해 02 지난 강의에서는 웹 서비스가 다음과 같은 구조로 동작한다는 것을 배웠다. 이번 강의에서는 백엔드 영역을 조금 더 자세히 살펴보고, Web Server와 WAS의
웹 서비스 이해 03부터 06강

이번 강의에서는 Java의 실행 원리부터 변수, 메서드, 클래스, 패키지까지 기본 개념을 학습했다.

이번 강의에서는 React의 기본 개념부터 개발 환경 구성, 컴포넌트 작성, 로그인 화면과 페이지 라우팅까지 학습했다.

전통적인 전체 페이지 방식과 SPA의 차이를 이해하고, HTML·CSS·JavaScript가 웹 화면을 구성하고 동작시키는 방법을 학습했다.
HTML 문서 구조와 CSS 선택자·레이아웃·반응형 스타일
DOM을 이용해 HTML 요소를 탐색·변경하고, 배열 데이터를 화면에 렌더링하며 사용자 이벤트를 처리하는 방법을 학습했다.
Promise와 fetch, async/await으로 JSON 데이터를 불러오고, DOM API를 이용해 사용자 목록을 렌더링하고 삭제하는 방법을 학습했다.
ES6에서는 객체와 배열을 간결하고 안전하게 다룰 수 있는 여러 문법이 추가됐다.
useState와 useEffect로 React의 상태와 생명주기를 관리하고, MUI·styled-components로 재사용 가능한 버튼을 만든 뒤 Axios 공통 인스턴스로 서버 데이터를 요청하는 방법을 학습했다.
React에서 사용자 입력을 상태와 동기화하고, Axios로 로그인 데이터를 확인한 뒤 조건에 따라 화면과 경로를 변경하는 방법을 학습했다.
React Router와 Axios를 활용해 회원가입·로그인부터 게시글과 댓글 CRUD까지 블로그의 전체 흐름을 구현했다.
React의 컴포넌트·상태·이벤트·Hook·라우팅 흐름을 복습하고, OpenWeatherMap과 카카오맵 OpenAPI를 호출해 위치에 따른 날씨를 화면에 출력했다.

알고 있던 Java와 객체, 확실히 알고 가자.

클래스와 객체가 생성되는 과정부터 static, JVM 메모리, 문자열 비교와 제어문까지 Java 프로그램의 실행 원리를 연결해 학습했다.

배열의 특징과 순회 방법을 복습하고, 상속 관계에서의 생성자 호출 과정과 super, 업캐스팅과 다운캐스팅을 통한 다형성을 학습했다.

추상 클래스와 인터페이스로 객체의 공통 규칙을 정의하고, 은닉화와 다형성을 통해 객체 사이의 결합도를 낮추는 방법을 학습했다.오늘은 객체지향의 특징 중 추상화와 은닉화를 중심으로 학습했다.

1. 오늘의 한 줄 요약 배열을 대신해 여러 객체를 유연하게 관리하는 Collection을 학습하고, Generic과 함수형 인터페이스를 바탕으로 Lambda·메서드 참조·Stream이 연결되는 과정을 실습했다.

MVC 패턴과 Front Controller

Optional, Stream API, Map을 이용해 데이터를 조회·변환·그룹화하는 방법을 익히고, 어제 구현한 Front Controller 구조에 상세 조회·검색·등록 기능을 추가하며 요청이 각 계층을 통과하는 과정을 직접 확인했다.

어제 만든 Front Controller 기반 블로그 프로그램의 CRUD를 완성하고, Java I/O Stream으로 데이터를 파일에 저장·복원한 뒤 제네릭 ResponseEntity<T>를 만들어 응답 코드·메시지·데이터를 하나의 형식으로 반환했다.

DBMS와 SQL의 기본 개념을 살펴보고, SELECT문을 중심으로 데이터 조회, 조건 검색, 중복 제거, 정렬, 문자열 및 NULL 처리 방법을 학습했다.

SQL의 단일행 함수와 복수행 함수를 구분하고, 문자열·날짜·숫자 데이터를 원하는 형태로 가공하는 방법을 실습했다.오늘은 단순히 데이터를 조회하는 것에서 한 단계 더 나아가, 함수로 값을 자르고 변환하고 계산해 보았다.

GROUP BY와 윈도우 함수의 차이를 이해하고, 여러 테이블을 JOIN하여 필요한 데이터를 하나의 결과로 조회하는 방법을 학습했다.

외래키로 테이블 사이의 관계를 정의하고, VIEW와 DML을 이용해 데이터를 안전하고 편리하게 조회·수정하는 방법을 학습했다.오늘은 어제 배운 DDL과 제약조건을 실제 부모·자식 테이블 관계에 적용했다.
@RestController에서 요청을 받아 DTO로 변환하고, Service와 MyBatis Mapper를 거쳐 데이터베이스에 접근하는 Spring 백엔드의 전체 흐름을 학습했다.

1. 오늘의 한 줄 요약 Swagger로 REST API를 직접 테스트하고, React에서 Spring Boot로 회원가입과 로그인 요청을 보내 Access Token과 Refresh Token을 저장하는 과정까지 연결했다.

회원가입과 로그인에 이어 블로그와 댓글 기능을 구현

댓글 수정·삭제 기능을 추가해 기존 CRUD 실습을 마무리하고, @Valid와 BindingResult를 이용해 잘못된 회원가입 요청을 서버에서 검증하는 방법을 학습했다.

새로운 inspire_jpa 프로젝트를 만들고, MyBatis로 구현했던 회원 기능을 Spring Data JPA 방식으로 옮기면서 Entity 매핑, 연관관계, 영속성 관리와 지연 로딩의 동작을 학습했다.

JWT를 생성하고 검증하는 Servlet Filter를 구현해 인증 흐름을 만들었으며, JPA로 블로그 기능을 구현하면서 연관관계 조회에서 발생할 수 있는 N+1 문제와 변경 감지의 동작을 학습했다.

DevOps의 핵심은 단순히 개발과 운영을 합치는 것이 아니라, 개발부터 빌드·테스트·배포·운영까지의 과정을 연결하고 반복 작업을 자동화하는 것임을 배웠다.

Redis에 Refresh Token을 유효기간과 함께 저장하고, Spring Security의 Filter Chain에서 JWT를 검증해 인증 정보를 관리하는 흐름을 학습했다

Spring Boot에서 OpenAI API를 호출하고, 프롬프트를 통해 생성된 응답을 Java DTO로 변환하여 REST API로 반환하는 과정을 학습했다.오늘은 OpenAI API를 직접 호출하는 방식과 Spring AI의 ChatClient를 사용하는 방식을 비교

어제는 AI에게 요청하고 답변을 받는 흐름을 익혔다면, 오늘은 AI가 블로그 조회·저장 기능을 Tool로 사용하도록 연결하고, 별도로 공공데이터 OpenAPI를 백엔드에서 호출하는 구조를 만들었다.
Spring Boot를 이용한 백엔드 개발 학습을 마무리하고, 하나의 애플리케이션을 여러 개의 작은 서비스로 나누어 개발하고 운영하는 MSA(Microservice Architecture)의 기본 개념과 Spring Cloud의 역할을 알아보았다.MSA는 하나의 애플리

Spring Cloud Netflix Eureka를 이용해 Service Discovery 서버를 구성하고, User Service를 여러 인스턴스로 실행해 Eureka에 등록하는 과정을 실습했다.어제 MSA의 전체적인 개념을 알아보았다면, 오늘은 여러 서비스의 위치를
Spring Cloud Gateway를 이용해 클라이언트 요청을 각 마이크로서비스로 전달하고, 요청과 응답에 Filter를 적용한 뒤 Eureka에 등록된 여러 서비스 인스턴스로 요청을 분산하는 과정을 실습했다.지난 시간에 Eureka를 이용해 서비스의 위치를 등록했다