[Spring boot] @Transactional 이란?
·
개발 | 프로젝트/Java | Spring
1. 트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 작업 단위를 말합니다. 쇼핑몰에서 주문을 처리할 때, 주문 정보 저장, 재고 감소, 결제 처리가 모두 성공해야만 전체 주문이 완료됩니다. 이 세 가지 작업을 하나의 트랜잭션으로 묶어서 처리하면, 중간에 문제가 생겼을 때 모든 작업을 원래대로 되돌릴 수 있습니다.트랜잭션은 다음 네 가지 특성(ACID)을 가집니다.원자성(Atomicity): 트랜잭션 내의 모든 작업은 전부 성공하거나 전부 실패합니다.일관성(Consistency): 트랜잭션이 완료된 후에도 데이터베이스는 일관된 상태를 유지해야 합니다.격리성(Isolation): 동시에 실행되는 트랜잭션들은 서로 영향을 미치지 않습니다.지속성(Durability): 트랜잭션이 성공적으..
[Spring Boot] GlobalExceptionHandler 예외 처리
·
개발 | 프로젝트/Java | Spring
Global Exception이란?Global Exception(전역 예외 처리)이란, 애플리케이션 전반에서 발생하는 예외를 한 곳에서 통합적으로 처리할 수 있는 방식입니다.일반적으로 Spring MVC 기반 웹 애플리케이션에서는 컨트롤러나 서비스 계층에서 다양한 예외가 발생할 수 있습니다. 이를 각각의 코드에서 try-catch로 처리하다 보면중복 코드가 많아지고예외 메시지나 응답 포맷이 제각각이며유지보수 난이도가 올라갑니다.👉 이 문제를 해결하기 위해 스프링에서는 @ControllerAdvice (또는 @RestControllerAdvice)와 @ExceptionHandler를 활용하여 예외를 전역적으로 처리할 수 있습니다. 어노테이션설명@ControllerAdvice모든 컨트롤러의 예외를 가로채 ..
[Spring Security] UsernamePasswordAuthenticationFilter Authentication Flow
·
개발 | 프로젝트/Java | Spring
UsernamePasswordAuthenticationFilter는 Spring Security에서 사용자가 로그인할 때 인증을 처리하는 핵심적인 필터입니다. UsernamePasswordAuthenticationFilter가 Spring Security 인증 과정에서 어떻게 동작하는지 알아보겠습니다. 1. Spring Security와 인증 Spring Security는 Spring 기반 애플리케이션에서 보안을 처리하는 프레임워크로, 인증(authentication)과 권한 부여(authorization) 기능을 제공합니다. 이 중에서 인증 과정은 사용자의 아이디와 비밀번호를 확인하여 시스템에 접근할 수 있는지 판별하는 과정입니다. UsernamePasswordAuthenticationFilter는 S..
CORS란? / React + Spring Boot CORS 문제 해결
·
개발 | 프로젝트
1. CORS란?CORS(Cross-Origin Resource Sharing)는 웹 브라우저가 보안상의 이유로 다른 출처(Origin)에서 리소스를 요청하는 것을 제한하는 정책입니다. 기본적으로 브라우저는 보안 문제로 인해 다른 도메인, 프로토콜, 포트에서 오는 요청을 차단합니다.예를 들어, 웹사이트 A가 API 서버 B에서 데이터를 가져오려할 때, API 서버 B에서 CORS 허용 설정이 되어있지 않다면 브라우저는 요청을 차단할 수 있습니다. 이때 CORS를 올바르게 설정하면 특정 도메인에서의 요청을 허용할 수 있습니다.  2. CORS가 필요한 이유웹 보안의 핵심 원칙 중 하나는  동일 출처 정책(SOP, Same-Origin Policy)입니다. 동일 출처 정책은 한 사이트에서 로드된 웹 페이지가..
Few-Shot Learning 감정 분석 예시
·
개발 | 프로젝트
Few-shot "Few-shot"은 머신러닝, 특히 자연어 처리(NLP)에서 사용되는 개념으로, 모델이 매우 적은 예시(few examples)**를 보고 학습하여 새로운 작업을 수행할 수 있도록 하는 방식입니다.  Few-shot 학습을 활용함으로써, 언어 모델은 주어진 예제들을 참고하여 더 정확하고 일관된 응답을 생성할 수 있습니다. 이는 특히 특정 도메인이나 형식의 질문에 대해 모델의 성능을 향상시키는 데 효과적입니다.   이 방식은 Zero-shot(아예 학습 데이터 없이 수행하는 방식)과 One-shot(하나의 예시만 제공) 학습 방식의 중간에 위치하는 개념입니다.  예시문장 1: "오늘 정말 기분이 좋다!"라벨: 긍정적문장 2: "오늘은 정말 피곤하고 지친 하루였다."라벨: 부정적문장 3:..
KoBERT 모델
·
개발 | 프로젝트
KoBERT란? KoBERT(Korean BERT)는 한국어 자연어 처리(NLP)에 최적화된 BERT 기반 모델입니다. Google의 BERT는 다양한 언어를 지원하는 모델로, 양방향 Transformer를 활용해 언어를 깊이 이해할 수 있도록 설계되었습니다. KoBERT는 이러한 BERT 모델의 한국어 성능 한계를 극복하기 위해 개발되었으며, 한국어 데이터로 사전 학습하여 한국어 NLP 작업에서 더욱 향상된 성능을 발휘하도록 개발되었습니다. KoBERT의 특징1) BERT 기반 모델Google에서 개발한 BERT(Bidirectional Encoder Representations from Transformers) 모델을 기반으로 함.문장의 맥락을 양방향으로 학습하여 높은 성능을 발휘.2) 한국어 데이터..
Whisper로 STT(Speech-To-Text) 구현하기
·
개발 | 프로젝트
인공지능 학습을 위한 필요한 데이터를 수집하기 위해 크롤링했던 음성 데이터를 텍스트로 변환해야 합니다. 여기서 변환할 때에 Google Cloud의 STT나 Naver CLOVA STT를 사용하면 되지만 데이터가 많기 때문에 무료로 STT를 직접 구현해서 변환하려고 합니다.  WhisperWhisper는 다양한 언어와 환경에서 우수한 성능을 제공하는 강력한 음성 인식 라이브러리입니다. OpenAI가 제공하는 오픈소스로, API를 통해 사용자가 비용을 지불하고 이용할 수 있으며, 파이썬 라이브러리 형태로 제공되어 사용자가 모델을 자유롭게 다운로드하여 활용할 수 있습니다 ! (영어 스피킹 애플리케이션인 스픽과 ChatGPT 공식 앱의 음성 인식에서도 Whisper를 사용합니다.)  아래 표는 사용 가능한 모..
FFmpeg으로 영상 데이터 음성 변환 (MP4 to WAV)
·
개발 | 프로젝트
오늘은 어제 크롤링한 영상 데이터를 음성 데이터로 변환해보겠습니다.웹 크롤링 과정은 아래 글에 있습니다 !  [Data preprocessing] 웹 크롤링을 통한 데이터 수집 (Selenium) / NoSuchElementException머신러닝을 위한 음성 데이터 수집을 위해 웹 크롤링을 진행하였습니다.  크롬에서 크롤링을 진행할 것이기 때문에 크롤링 전에 크롬 드라이버를 설치하고 가상환경에 셀레니움을 설치하였습seulow-down.tistory.com  음성 데이터에서 STT를 사용해서 텍스트로 변환할 것이기 때문에 FFmpeg를 통해서 mp4를 wav로 변환하려고 합니다. 먼저 FFmpeg를 설치한 후, ffmpeg-python을 사용하여 아래의 코드로 변환 가능합니다.import osimport..