전체 글 17

Cloudflare로 웹 프로젝트 React 프론트엔드 배포하기 + Github 연결 자동 배포

스터디원과 개인 프로젝트를 진행하면서 프로젝트 배포를 하게 되었습니다.백엔드는 팀원이 하고 프론트엔드는 제가......그리고 아주 간단하게 자동배포까지 하는 방법을 정리하고자... 원래는 Vercel을 사용하려 했으나...... GitHub Organization 프로젝트를 배포하려면 유료라고 하더라고요.따라서 무료로 배포할 수 있는 Cloudflare를 사용하는 것으로 방향을 변경. 1. Cloudflare 로그인 혹은 회원가입일단 로그인 버튼을 클릭합니다. 계정이 없을 경우 회원가입 회원가입은 이메일만 입력하면 끝이메일로 인증 메일이 날아오니까 링크를 꼭 확인하십시오...안 하면 프로젝트 배포할 때 프로젝트명 변경이 안 되더라고요 ㅎ 인증메일 온 줄 모르고 배포 진행하다가 막혔던...... 2. 대시..

기타 2026.04.10

[Spring] WebSocket & STOMP로 채팅 구현하기 (4)

프론트로 넘어가기 전 JWT 유효성 검사를 위해 configureClientInboundChannel를 사용했습니다.다시 WebSocketConfig로 돌아가서... WebSocketConfig@Configuration@EnableWebSocketMessageBroker@RequiredArgsConstructorpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer { private final JwtUtil jwtUtil; @Override public void configureClientInboundChannel(ChannelRegistration registration) { registration...

자바&스프링 2025.04.07

[Spring] WebSocket & STOMP로 채팅 구현하기 (3)

이번에는 메시지 전송을 위한 Controller와 Service, Repository에 대해 작성하고자 합니다. Controller@Controller@RequiredArgsConstructorpublic class ChatMessageController { private final ChatMessageService chatMessageService; private final SimpMessagingTemplate messagingTemplate; // 메시지 전송 @MessageMapping("/message/{chatRoomId}") public void sendMessage(@DestinationVariable("chatRoomId") Long chatRoomId,..

자바&스프링 2025.03.28

[Spring] Spring boot와 MySQL 연동하기

개발할 때는 H2를 쓰는 것도 괜찮았지만MySQL이 DB 마이그레이션 하기 편할 것 같아 Spring 프로젝트와 MySQL을 연동해서 사용했습니다. MySQL DB 추가하기저는 DBeaver 사용해서 데이터베이스를 추가해줬습니다.localhost와 연결할 것이기 때문에 localhost 안에 새로운 데이터베이스를 추가 DB명을 정하고 만약 다른 거로 되어 있다면 utf8로 설정해야 됩니다! application.ymlspring: application: name: 프로젝트명 datasource: url: ${DB_URL} username: ${DB_USERNAME} password: ${DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc..

자바&스프링 2025.03.20

[Spring] WebSocket & STOMP로 채팅 구현하기 (1)

프로젝트로 채팅을 구현했었는데, 복습할 겸 내용을 정리해두고자 합니다.구현 과정에 대한 설명 전...WebSocket과 STOMP에 대해서 하나도 몰랐기 때문에 내용을 정리했었습니다.WebSocketWebSocket이란?Ws 프로토콜 기반으로 클라이언트와 서버 사이에 지속적인 완전 양방향 연결 스트림을 만들어주는 기술을 말합니다.대표적으로 게임과 채팅에 많이 사용됩니다. 따라서 채팅은 HTTP 통신이 아니라 웹소켓(WebSocket) 통신을 통해서 일어납니다.웹 소켓은 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜로 실시간성을 보장하기 위해 사용됩니다.즉, 채팅은 실시간성이 필요하기 때문에! 웹소켓을 사용합니다. HTTP 통신은 한 번 요청 후 응답하면 연결이 끝납니다. 여러 번..

자바&스프링 2025.03.14

[SQLD] NULL, 단일행 문자형 함수, 윈도우 함수 등 정리

SQLD를 공부하면서 잘 안 외워지거나 헷갈리는 함수들만 따로 정리했다. Null 함수함수명설명NVL(인수1, 인수2)인수1이 NULL이면 인수2 반환 아니면 인수1 반환NVL2(인수1, 인수2, 인수3)인수1이 NULL이면 인수3 반환, 아니면 인수2 반환ISNULL(인수1, 인수2)인수1이 NULL이면 인수2 반환, 아니면 인수1 반환NULLIF(인수1, 인수2)인수1이 인수2 이면 NULL 반환, 아니면 인수1 반환COALESCE(표현식1, 표현식2, 표현식3,…)NULL이 아닌 경우의 첫 번째 값을 리턴ex) COALESCE(NULL, 1, 2) → 1 단일행 문자형 함수의 종류오라클 함수명/SQL Server 함수명(구분이 없는 경우 공통 함수)함수명설명LOWER(문자열)문자열의 알파벳 문자를 ..

SQL 2025.03.07

[SQLD] SQL SELECT문은 DML? DQL?

SQLD를 공부하면서...지금까지는 SELECT문은 당연하게 DML이라고 생각해왔는데, DQL로 나눈다는 내용을 알게 되었다. 사실 아직 확실하게 알지는 못했지만일단 SELECT를 DML으로 보고, 시험에도 DQL이 나오지 않는 이상 DML로 선택하는 게 맞는 거 같다. DML (Data Manipulation Language)데이터 조작어로 데이터베이스에 대해 데이터 검색, 등록, 삭제, 갱신 등을 하기 위한 명령어이다.SELECT : 데이터 검색INSERT : 데이터 입력UPDATE : 데이터 수정DELETE : 데이터 삭제MERGE : INSERT, UPDATE, DELETE를 모두 수행하는 오라클 명령어.데이터가 없으면 INSERT, 조건을 만족하면 UPDATE 혹은 DELETE를 실행하는 형식으..

SQL 2025.02.27

[백준] 10828번 : 스택 - JAVA(자바)

백준 10828번 : 스택  문제 풀이자료 구조인 스택을 만드는 문제로, 스택의 개념을 이미 알고 있다면 쉬운 문제이다!사실 모르고 있어도 문제 내용을 보면 쉽게 풀 수 있다. 스택은 후입선출(LIFO : Last In First Out) 구조로 먼저 들어온 데이터가 나중에 빠져나가고, 나중에 들어온 데이터가 먼저 빠져나간다. 즉, 단방향 입출력 구조이다. 자바는 util 패키지 안에 Stack이 따로 있지만문제에서는 Stack을 사용하지 않고, ArrayList로 스택을 만들었다. 문제 풀이 자체는 if문을 사용한 간단한 방식으로 풀었다. 코드import java.io.*;import java.util.*;public class Main { public static void main(String[..

알고리즘/백준 2025.02.27

[백준] 11655번 : ROT13 - JAVA(자바)

백준 11655번 : ROT13  문제 풀이백준 11655번은 브론즈 1 난이도로 구현, 문자열에 관한 문제입니다. 우선 문자열을 입력 받은 뒤 문자열의 길이만큼 반복문을 돌립니다.이때 charAt()함수를 사용해서 char형으로 문자열을 잘랐고,그 문자가 A ~ Z 범위인지, a ~ z 범위인지를 구분했습니다. 또 구분한 그 안에서 만약 아스키 코드 값으로 원래 문자 + 13을 했을 때 z의 범위가 넘어갈 경우문자 - 13을 하면 다시 a값부터 시작하므로 알맞은 문자를 찾을 수 있습니다.대소문자 둘 다 동일한 방식이므로 아스키 코드만 바꿨습니다. 코드import java.io.*;public class Main { public static void main(String[] args) throws IOE..

알고리즘/백준 2025.02.26