728x90
반응형

전체 글 88

[Focussu] Kafka & Redis 통합/단위 테스트

1. 들어가며최근 집중도 분석 독서실 플랫폼(또는 스터디룸 플랫폼) 백엔드(Spring Boot)에서, 사용자의 WebRTC 연결 상태를 Kafka 메시지로 수신하고 이를 Redis에 반영하는 기능을 개발했다. 요약하자면,Kafka Topicmediasoup.user.connected (사용자 입장)mediasoup.user.disconnected (사용자 퇴장)동작 흐름Kafka 메시지를 @KafkaListener가 수신JSON 파싱 후, roomId, userId 추출Redis에 roomId를 키로 한 Set 구조에 userId 추가/삭제테스트 목표이 흐름이 실제로 잘 동작하는지, 즉 Kafka 메시지를 소비했을 때 Redis가 제대로 갱신되는지를 테스트하고 싶었다.그런데 이게 말처럼 간단하지 않았다..

[Codetree] 마법의 숲 탐색

2024 상반기 오후 1번순수 시간 5시간 소요 설계에 많은 시간을 투자했던 문제이다 이전에 "왕실의 기사 대결" 문제 설계할 때처럼 골렘 객체 2차원 배열을 만들까 고민했는데,십자 범위로 골렘의 위치를 표기하는 배열과, 골렘의 상태를 저장하는 1차원 배열로 해결했다. 2차원 테트리스 구현하듯이 한칸씩 내려가면서, 다음 칸에 갈 수 있는지 조건 잘 걸어주면 골렘은 잘 쌓였다 근데 그 다음에 골렘 위에 탄 정령이 이동하는 로직에서 함수를 쪼개고, 디버깅하느라 여기서 시간을 좀 많이 썼다. 빨리 풀려면 초반부 골렘 내려오는 곳을 굉장히 빠르게 짰으면 더 빠르게 끝났을듯.. ? 디버깅 포인트1. visited 배열 초기화 하는 위치 잘 선정2. 좌표가 범위를 벗어나지 않는지 체킹하는 함수 꼭 따로 빼자retu..

PS 2025.04.11

[Codetree] 왕실의 기사 대결

2023 하반기 오전 1번 문제첫 설계 1시간 걸리고,구현 2시간 하고, 디버깅 1시간 하다가 로직이 답이 없음을 깨닫고정답 코드를 이해하고 구현했다. 단순 시뮬레이션으로 구현하려다가, 풀이는 bfs던데 하나의 조각 단위로 밀면서 계산하는 방식이 너무 어려워서.. 기사 다음 칸 이동 가능한지 검사(DFS)기사 다음칸 이동(DFS) 2중 DFS로 구현했다. 답을 알고 구현하는 데에는 1시간, 예외처리 + 테케 맞추는 데에 15분? 정도 걸렸다. 체스판(board)에는 빈칸/함정/벽 기록하고기사판(knightBoard)에는 기사들의 위치를 기록했다 그리고 Map로 각 기사들의 분포 위치를 (r,c)와 (h,w)에 맞게 넣어주고 contains로 비교하려 했으나.. 그냥 Knight[] 배열에 참조 테이블을 ..

PS 2025.04.10

[Codetree] 포탑 부수기

2023 상반기 오전 1번 문제순수 시간 5시간 정도 갈아 넣은 끝에 구현한 포탑 부수기..처음에 문제 이해하고 설계를 했으나 객체지향 특징은 잘 못 살리고 절차지향으로 설계해서 디버깅이 오래 걸렸다 1차 구현은 2시간 안으로 됐는데, 제공하는 테케 2개를 다 맞히고 나머지 히든을 맞춰보다가 계속 틀렸다. 2% 4% 6% 8%에서 계속 끊겼었음.. 제출 코드import java.io.*;import java.util.*;public class Main { private static Tower[][] board; private static int n; private static int m; private static int k; private static boolean[][] p..

PS 2025.04.09

[Focussu] 아키텍쳐 설계

0. 온라인 스터디 플랫폼, Focussu 백엔드 아키텍처 설계기― 실시간 스트리밍, Kafka, 그리고 Docker Compose까지캡스톤 프로젝트에서 "실시간 집중도 분석이 가능한 온라인 스터디 플랫폼"을 개발하게 되었다.단순히 영상 전화를 넘어서, 각 사용자들의 스트리밍 데이터를 AI 서버로 전달하고, 그 분석 결과를 기반으로 각 사람의 집중도를 실시간으로 보여주는 플랫폼이다. 이 글은 백엔드 개발자로서 내가 어떤 기술을 선택했고, 왜 그런 선택을 하게 되었는지를 정리한 기록이다.또, 각종 트러블 슈팅을 시리즈 별로 정리할 예정이다.1. 핵심 요구사항 정리사용자의 비디오/오디오 스트리밍 데이터를 AI 분석 서버로 보내야 한다.따라서 WebRTC의 P2P 방식은 사용할 수 없고, 중계 서버(SFU 기..

Ne(o)rdinary Hackerthon 회고

행사 개요 Ne(o)rdinary Hackerthon이란 UMC 14기, CMC 5기의 크루원들이 모여 1박 2일간 주제를 갖고 개발을 진행하는 해커톤이다. 다른 프로젝트도 진행하고 있고, 그 외에도 일정이 있어 사실 해커톤 참여를 망설였다. 하루 밤 새는 것이 타격이 크기 때문에 주어진 일을 못 할까 걱정이 앞섰기 때문이다. 또한, 제대로된 해커톤이 사실상 처음이라 짧은 시간 내에 개발할 수 있을지, 팀원분들에게 폐를 끼치진 않을지 걱정했다. 하지만 짧은 시간동안 좋은 팀원분들과 개발에 몰두하며 많은 것을 배울 수 있었고, 짧은 시간이지만 해커톤에 몰입한 결과 만족스러운 결과도 얻을 수 있었다! 주제 뉴진스(New Jeans)의 노래 제목을 앱 이름으로 하여 서비스 구상 “뉴진스의 하입보이요”는 202..

Activities/UMC 5th 2023.12.02

연관관계 매핑(양방향)

✅ 양방향 매핑이란? 객체의 연관관계 중 하나인 양방향 매핑은, 사실상 단방향 매핑이 두번 이루어진 것이다. 즉, 개념적으로 두 개의 단방향 매핑을 추상적으로 양방향 매핑이라 칭하는 것이다. ✅ 양방향 연관관계 매핑의 필요성 테이블과 객체를 비교해보자. 테이블에서는 외래 키 하나로 두 테이블의 연관관계를 확인할 수 있다. 외래 키를 가지고 조인하면 두 테이블간 데이터의 결합과 접근성이 자유롭다. 즉, 외래 키 하나만으로 한 컬럼의 연관된 데이터를 획득할 수 있다. 하지만 객체에서는? 객체를 탐방하려면 참조가 쌍방으로 존재해야 한다. 참조가 양방향으로 존재해야 참조와 역참조가 가능한 구조라는 것이다. 이런 패러다임의 차이를 극복하기 위해 양방향 매핑을 한다. 하지만, 엔티티 연관관계를 설정할 때 우선 단방..

Dev/Spring 2023.11.21
728x90
반응형