전체 글

모르는 내용 및 아는 내용 모두 꼼꼼히 복습하여 익숙해지는 그 날까지 꾸준히 공부하겠습니다.
Git

[Git] Git Merge 사용법, 브랜치 Merge 이해 - Squash, Rebase Merge 정리

Merge 알아보기 git checkout feat/1 git merge develop 1. Fast-Forward 새로운 브랜치 ‘feat/1’가 develop 브랜치로부터 분기된 이후 develop 브랜치에 새로운 커밋이 올라오지 않았다면, ‘feat/1’ 브랜치가 develop 브랜치와 비교했을 때 최신의 브랜치라 할 수 있습니다. Git-flow 방식으로 develop 브랜치에서 새 브랜치로 분기하면서 개발하는 경우 이런 경우 ‘feat/1’의 변경 이력을 그대로 develop으로 합치는 것이 Fast-forward Merge입니다. 2. Recursive (재귀적) ‘feat/1’ 브랜치가 develop 브랜치에서 분기 되고 develop 브랜치에 새로운 커밋이 생겼다면, ‘feat/1’를 최신..

Spring Framework/Spring

[Spring] Spring CORS 설정 & 이슈 해결 및 웹 애플리케이션 통신 이해하기

CORS(Cross-Origin Resource Sharing) 란 웹 애플리케이션에서 다른 출처(origin)의 리소스에 접근할 수 있는 규칙을 정의하는 메커니즘입니다. 웹 브라우저는 보안 상의 이유로 스크립트가 동일한 출처에서 실행될 때만 리소스에 접근을 허용합니다. 그러나 이로 인해 다른 출처의 리소스에 접근하는 요청이 차단되는 문제가 발생할 수 있습니다. 이를 해결하기 위해 CORS가 도입되었습니다. 개발하면서 마주치는 CORS 에러 분석하기 Warning! Access to fetch at ‘https://myhompage.com’ from origin ‘http://localhost:3000’ has been blocked by CORS policy: No ‘Access-Control-Allo..

CS/Network

[Socket] 웹 소켓 이해하기 - 양방향 실시간 통신, 메시지 프로토콜, 채팅

웹 소켓 vs HTTP 양방향 통신을 가능하게 하는 통신 프로토콜입니다. HTTP 프로토콜의 한계를 극복하기 위해 등장했으며, 기존에도 자주 사용되는 HTTP 프로토콜은 클라리언트에서 서버로 요청을 보내고 서버는 그에 대한 응답을 보내는 단방향 통신 방식입니다. HTTP 방식은 실시간 통신이나 푸시 알림 등 양방향 통신에는 적합하지 않아, Socket을 사용하여 처리합니다. 주로 서버가 클라이언트에게 비동기 메시지를 보낼 때 널리 사용하는 기술입니다. 웹 소켓 연결은 처음에는 HTTP 연결이지만, 특정 핸드셰이크 절차를 거쳐 웹 소켓 연결로 업그레이드 됩니다. 웹 소켓의 특징 ✔️ 양방향 통신 간단히, 데이터 송수신을 동시에 할 수 있는 방법입니다. 일반 HTTP 통신은 Client가 요청을 보내는 경우..

Spring Framework/Spring boot

[Spring boot] 커스텀 어노테이션을 활용한 JWT 로그인 사용자 인증과 권한 관리: HandlerInterceptor 인증 로직 구현

Spring의 HandlerInterceptor 구현을 통해 사용자 요청을 가로채어 처리할 수 있는 인터셉터입니다. 이 인터셉터는 특정 핸들러 메서드에 커스텀 어노테이션이 붙어 있을 경우, 해당 요청이 유효한지 검증합니다. 저는 HandlerInterceptor를 통해 인증된 사용자의 권한과 특정 조건을 검사하기 위해 사용했습니다. 로그인한 사용자가 게시글의 작성자인지 확인이 필요한 경우 서비스를 사용하다 보면 로그인 없이 접근 가능한 페이지(홈 페이지 등)가 있고, 로그인을 하거나 추가 권한이 있는 경우에만 접근이 가능한 페이지(게시글 수정, 삭제, 마이페이지)가 존재합니다. 1. 커스텀 어노테이션 만들기 /** * @CheckCombinationOwner : 현재 사용자가 게시글을 작성한 사용자인지 ..

Spring Framework/Spring boot

[Spring boot] Spring 커스텀 어노테이션으로 로그인된 사용자 정보 불러오기 - HandlerMethodArgumentResolver, Webconfig

스프링부트를 통해 프로젝트를 진행하면 "Custom Annotation"을 통해 간편하게 로그인한 사용자의 정보를 불러올 수 있습니다. Controller의 메서드는 사용자의 HTTP, HTTPS 요청을 Serivce에 전달하는 등 핵심 기능만 담당하고, 현재 로그인이 되어있는 사용자의 정보는 어노테이션을 통해 처리합니다. 로그인된 사용자의 정보 불러오기 HandlerMethodArgumentResolver 인터페이스를 구현한 클래스를 추가하여 컨트롤러에서 파라미터에 값을 바인딩 해줄 수 있습니다. @PathVariable의 원리도 HandlerMethodArgumentHandler에 의해서 처리되는 것입니다. 1. 커스텀 어노테이션 정의하기 import java.lang.annotation.*; @Ta..

Spring Framework/Spring

[SPRING] Spring 객체지향 설계 solid 원칙 이해하기 - Spring Container, IoC, DI

SPRING 프레임워크를 통해 객체지향 설계의 원칙 중 SOLID 원칙이 무엇이며, 어떻게 적용되는지 알아보겠습니다. 1. SRP (Single Responsibility Principle) - 단일 책임 원칙 각 클래스는 하나의 단일한 책임만 가져야 한다. Spring에서는 Controller, Service, Repository 등으로 역할을 명확히 나누어 각각의 클래스가 특정 기능 또는 관심사에만 집중하도록 합니다. SRP를 잘 준수했는지 알 수 있는 기준은 변경입니다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따랐다고 할 수 있습니다. // UserController 클래스는 사용자 관리와 관련된 HTTP 요청을 처리하는 책임만을 가져야 합니다. @Controller public ..

Git

[Git] Git branch, switch, merge, rebase 사용하기

Branch 소프트웨어를 개발할 때, 개발자들간에 동일한 소스 코드를 함께 공유하고 서로 다른 작업을 할 때 사용합니다. 1. 브랜치 생성 git branch step1 'step1' 이라는 브랜치가 생성되었지만 ,현재 위치는 아직 main이므로 생성한 브랜치로 이동해야 합니다. 2. 브랜치 이동 git switch step1 main 브랜치에서 step1 브랜치로 이동합니다. 3. 브랜치에서 커밋하기 git commit 4. 브랜치 작업 내역 합치기 (Merge) git switch step1 git merge bugFix git switch bugFix git merge step1 bugFix 브랜치의 위치도 옮겨줍니다. 4.2 브랜치 작업 내역 합치기 (Rebase) git switc..

Spring Framework/Open API

[Chat GPT] Spring boot를 통해 GPT API Fine tuning, prompt 수행하

Prompt 란 프롬프트란 생성 인공지능 분야에서 거대 언어 모델로부터 응답을 생성하기 위한 입력값입니다. Propmt Engineering 이란 거대 언어 모델로부터 높은 품질의 응답을 얻어낼 수 있는 이러한 **프롬프트 입력 값들의 조합을 찾는 작업을 의미합니다. ✅ 프롬프트는 instruction으로 시작하고, context와 instruction을 구분하자. [instruction] 내가 요구하고자 하는 사항이 무엇인지 프롬프트의 제일 첫 부분에 명시하기. ###을 사용해 context를 분리해 보다 AI가 더 잘 인지할 수 있도록 한다. instruction : 모델이 수행하기를 원하는 특정 태스크 또는 지시 사항 context : 모델이 보다 더 나은 답변을 하도록 유도하는 외부 정보 또는 추..

kylo
오늘도 열심히 - BE