일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Inventory
- 해시
- UnrealEngine
- 구현
- C++
- unityui
- FSM
- c#
- 스파르타내일배움캠프TIL
- 순열
- 워크플로
- 프로그래머스
- 유클리드호제법
- Firebase
- 포톤
- 문자열
- 언리얼엔진
- 스파르타내일배움캠프
- 스택
- Unity2D
- 알고리즘
- Unity3d
- QueryDSL
- 이분탐색
- Unity
- Photon
- BFS
- UE4
- 유니티
- 내일배움캠프
- Today
- Total
목록Java (100)
개발 낙서장
오늘의 학습 키워드📚 SSE를 사용해 클라이언트가 채팅방에 대한 변경 사항을 즉각 조회할 수 있도록 했다. 우선 임시로 채팅방이 생성될 경우 클라이언트가 알 수 있도록 콘솔 로그를 찍어봤다. JavaScript 부분 클라이언트에서 서버로 SSE 연결 요청을 하는데 EventSource 객체를 통해 연결하고 서버가 보내주는 데이터를 받을 수 있다. // SSE 이벤트 구독 const eventSource = new EventSource( `http://localhost:8080/api/chat-rooms/sse?userId=` + localStorage.getItem('userId') ); eventSource.addEventListener('createChatRoom', event => { let dat..
오늘의 학습 키워드📚 SSE 채팅방을 구현하면서 다른 사람의 채팅 메세지를 수신하고 보내는 양방향 통신으로 웹소켓 프로토콜인 STOMP를 사용했다. 채팅방 안에서 메시지를 주고 받고 누가 보낸 메세지인지는 알 수 있었지만 채팅 방에 없을 경우에는 어떻게 해야 될지 고민이 생겼다. 폴링 방식 웹소켓 방식 SSE 폴링(Polling) 폴링 기법은 클라이언트에서 서버에 주기적으로 HTTP 요청을 보내 지속적으로 데이터를 받는 방법이다. 주기를 짧게 할 수록 데이터를 자주 받을 수 있기 때문에 실시간 통신인 '척'은 할 수 있지만 그만큼 서버에 부하가 가는 방법이다. 그래서 나온 방법이 롱 폴링 기법인데 서버에 요청을 보내놓고 대기를 하다가 서버에서 이벤트를 발생시켜 응답을 보내주면 다시 요청을 보내 대기하는 ..
오늘의 학습 키워드📚 JPQL concat 채팅방에 대한 키워드 검색, 해시태그 검색 기능을 구현하던 중 배운 정보이다. 보통 특정 키워드나 태그로 검색을 한다면 like를 많이 사용한다. 채팅방의 제목이나 설명이 ~~ 키워드인 채팅방들을 조회하는 SQL은 다음과 같다. select cr1_0.chat_room_id, cr1_0.chat_room_name, cr1_0.cover_image, cr1_0.created_at, cr1_0.description, cr1_0.modified_at, cr1_0.owner_id from chat_room_tb cr1_0 where cr1_0.chat_room_name like '%?%' escape '' or cr1_0.description like '%?%' esc..
오늘의 학습 키워드📚 STOMP에서 JWT 인증 기존에는 필터를 통해 JWT를 검증하고 Header와 SecurityContext에 추가해 Controller에서 @AuthenticationPrincipal 어노테이션으로 UserDetails 정보를 가져올 수 있었다. @MessageMapping("/chat-rooms/{roomId}/messages") @SendTo("/topic/chat-rooms/{roomId}") public GetMessageResponse sendMessage( @DestinationVariable Long roomId, CreateMessageRequest request, @AuthenticationPrincipal UserDetailsImpl userDetails ) th..
오늘의 학습 키워드📚 STOMP STOMP는 스프링 프레임워크에서 제공하는 웹소켓 프로토콜이다. TCP나 웹소켓과 같은 실시간 양방향 통신이 가능하기에 실시간 채팅 등에 활용이 가능하다. 이번 파이널 프로젝트에서 나는 오픈 채팅에 대한 도메인과 기능 구현을 맡았기에 어떤 것이 있을까 찾아보다 STOMP를 알게 되어 이를 사용해 구현하기로 했다. Config @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { // 메세지 브로커 구성 @Override public void configureMessageBroker(MessageBrokerRegis..
HTTP HTTP는 Hypertext Transfer Protocol의 약자로 클라이언트-서버 간 단방향 통신 프로토콜이다. 클라이언트에서 요청(Request)를 보내면 서버에서 해당 요청에 대한 처리 과정을 거쳐 응답(Response)을 주는 방식으로 통신한다. 네이버에서 검색어를 입력하고 검색 버튼을 누르면 해당 검색어에 대한 내용이 좌르륵 뜨는 것이 HTTP 통신이다. 특징 무상태성(Stateless) : 서버와 클라이언트는 독립적이며 서버에서 클라이언트의 상태를 갖고 있지 않는다. 클라이언트-서버 단방향 구조 : 클라이언트에서 요청을 보내면 서버에서는 그에 대한 응답을 제공하는 단방향 통신만 가능하다. 비연결성(Connectionless) : 요청-응답 처리가 완료되면 연결이 끊어진다. 다양한 메..
오늘의 학습 키워드📚 논리적 참조키, 물리적 참조키 보통 RDB의 가장 큰 특징이 무엇이냐 하면 여러 가지를 답할 수 있겠지만 그중 하나가 테이블 간 관계를 맺을 수 있다는 점이다. RDB의 대표격인 MySQL에서 테이블들의 모든 데이터는 Primary Key를 갖고 있다. 이 때 다른 테이블에서 해당 테이블의 데이터를 갖고 있다는걸 표시하는 컬럼이 '참조 키'이다. 말 그대로 다른 데이터를 참조한다는 것인데 그걸 키 값으로 표현한 것이다. 참조 관계를 맺어 테이블을 구성하면 보통 참조 관계와 제약 조건을 설정하게 되는데 이는 참조 무결성을 위함이다. 참조 무결성이란 참조 키와 기본 키는 항상 일치해야 하며 어느 하나만 수정, 삭제될 수 없음을 말하는데 이를 물리적인 참조라고 (내가)한다. RDBMS에서..
오늘의 학습 키워드📚 Open API Open API는 누구나 사용할 수 있도록 공개된 API를 말한다. 가령 소셜 로그인 API가 있는데, 원래대로라면 모든 프로젝트마다 유저 DB가 있고 전부 회원가입, 로그인, 회원탈퇴 등 전부 구현해줘야 해서 귀찮고 DB도 잘 관리해줘야 하고 그런데 소셜 로그인을 활용하면 보다 쉽게 회원가입, 로그인이 가능하고 관리도 편해진다. Open API는 특정 Key를 발급 받아 해당 API에 요청을 보낼 때 Key 값을 넣어 인증을 받아야 원하는 값을 얻을 수 있다. 나는 영화 진흥 위원회에서 제공하는 영화 목록 오픈 API를 활용해 연습했다. https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo..