목록2025/02 (10)
민스씨의 일취일장

WebSocket 통신을 위한 간단한 Flutter UI를 구성해 보았다.WebSocket - Flutter 프론트 구성하기1. Flutter 프로젝트 생성기본 프로젝트에 추가해 줄 의존성은 하나이다.web_socket_channelflutter pub add web_socket_channel2. UI 구성간단하게 버튼을 누르면 숫자를 서버로 보내서, 메시지를 받도록 구성해 보았다. 메시지를 받으면 숫자를 1씩 늘려줘 몇번 통신을 주고 받았는지 표시하였다.final WebSocketChannel channel = WebSocketChannel.connect(Uri.parse('ws://localhost:8080/ws'));var cnt = 1;@overrideWidget build(BuildCo..

백준 16916 문제를 해결하는 과정에서 사용한 KMP 알고리즘에 대한 기록이다.h.o.Algorithm - Java 백준 16916문제두 개의 문자열이 주어진다. 두 번째 문자열이 첫 번째 문자열에 포함되는지 여부를 판단하는 문제이다.풀이String.contins()를 이용한 풀이간단하게 String.contains() 메소드를 이용해서 문제를 해결을 시도하였다.import java.io.*;public class baekjoon16916 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

WebSocket 통신을 위한 간단한 Spring 서버를 구성해 보았다.WebScoekt - Spring 백엔드 구성하기1. Spring Initializr를 이용해 프로젝트 생성하기필요한 의존성- Spring Boot Starter Web- Spring WebSocket2. WebSocketHandler와 WebSocketConfig 작성하기현재 작성할 Handler는 클라이언트가 서버와 WebSocket 통신을 처리를 목적으로 한다.@Componentpublic class CTOSWebSocketHandler extends TextWebSocketHandler { @Override protected void handleTextMessage(WebSocketSession session, Te..

WebSocket에 대해 공부한 내용이다.처음 공부하는 WebSocket WebSocket이란?WebSocket은 양방향 통신을 지원하는 프로토콜이다. 서버와 클라이언트 사이에서 실시간 데이터 교환이 필요한 경우 사용한다. 실시간 통신에 있어서 HTTP 보다 효율적이고, 지속적인 연결을 유지할 수 있다.WebSoket를 잘 이해하기 위해서 핵심 개념 3가지를 알아야 한다.핸드쉐이크 (Hand Shake)지속 연결 (Persistent Connection)이벤트 기반 통신 (실시간 제공 Real-Time Push)1.핸드 쉐이크 (Hand Shake)WebSockt 연결은 일반적인 HTTP 요청으로 시작되지만, 연결된 이후에는 지속적으로 연결을 유지한다. 처음 WebSocket 연결을 하기 위해선 여전히 ..

Java Map.Entry에 대한 글이다.Java Map은 순회가 안된다?Map은 순회가 안된다 단순하게 학습한뒤, Map의 순회가 필요할 땐 별도의 데이터 구조(List, Array, Set)를 이용해 순회를 처리했었다. 하지만 이렇게 사용할 때, 로직이 복잡해질 수록 코드가 점점 복잡해지는 문제가 생겼다. 그래서 좀 더 자세히 알아보니 Map도 순회를 처리할 수 있는 방법이 있다는 것을 알게되었다. 방법은 바로 Map.Entry(EntrySet)를 사용하는 것이다.Map.Entry란?Map.Entry는 Java의 Map 인터페이스 내부에 존재하는 인터페이스로, Map에 저장되어 있는 키-값 쌍(Entry)을 관리하는 데 사용된다.이후 Key-Value 한 쌍을 Entry라고 부르겠다.EntrySetE..

인텔리제이에서 DisplayName이 안뜰 때 해결방법에 대한 글이다.IntelliJ - Test 수행 시 DisplayName 안뜨는 이슈현상IntelliJ에서 Test 수행 시 설정해 놓은 DisplayName이 뜨지 않는 이슈가 발생했다.체크리스트DisplayName은 JUnit5 부터 사용가능하다.해결방법JUnit5를 사용하는데 DisplayName이 안뜰 때에는 Build 툴을 변경해볼 수 있다. IntelliJ에서 Gradle을 이용해 프로젝트를 진행하면 기본적으로 Gradle을 Build 툴로 사용한다. 이를 IntelliJ로 변경할 수 있다.IntellliJ > SettingsBuild, Execution, Deployment > Build Tools > Gradle해당 탭에서 Gradle..