안녕하세요.최근 진행하고 있는 사이드 프로젝트에서 클라이언트측의 기획 요구사항으로 실시간 알림 기능이 개발이 되어야 한다고 요청을 받았습니다.백엔드 진영에서는 해당 요구사항을 위한 기술로 SSE, FCM, Web-Socket 3가지 기술이 언급이 되었고,이 중에서 SSE를 선택하게 되었고 개발을 진행하면서 해당 기술에 대한 학습도 병행하여 정리해보려 합니다.우리 팀은 왜 SSE를 선택하였는지.기술 선택에 앞서 고민했던 포인트는 다양하게 있었습니다. 그 중에서 SSE를 선택하게 된 주요 이유로는 아래와 같아요.첫번째로 MVP 성향의 프로젝트로 단기간 개발이 필요했습니다.전체 프로젝트 기간이 한달도 채 안남은 시점에서 받은 요구사항이였고, 1차 MVP 적용을 코앞에 앞두고 있는 시점에서 제일 빠르게 적용할 ..
객체지향 설계를 다루는 '객체지향의 사실과 오해'라는 조영호님의 책을 읽고서 정리하고, 저의 생각에 대해서 작성해보았습니다.한 챕터씩 읽어가면서 생각을 바로 정리하기 위해 챕터별로 나누었고, 개인적인 의견이 다소 섞여 있기 때문에 글의 옳고 그름은 있을 수 있습니다. 피드백 주실만한 부분이 보이신다면 말씀주시면 감사하겠습니다. Chapter 1, 2책의 도입 부분에서부터 내가 알고 있던 객체지향에 대한 오해를 말해주고 있다.처음 배울 때 객체지향은 '현실세계의 사물을 모방해 소프트웨어로 구현하는 것'이라고 접했는데, 이러한 오해는 2장까지 읽고나서 대략적으로 이해를 할 수 있었다. 내가 이 책을 통해 이해한 내용은 아래와 같다. 객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 창조와 같다.'클래스'..
Intro어떤 정점으로부터 모든 정점들로의 최단 경로를 구하는 문제는 최단 경로 알고리즘을 적용해서 정해를 구할 수 있다.이 때 사용되는 최단 경로 알고리즘으로는 아래와 같다.다익스트라(Dijkstra) 알고리즘벨만-포드(Bellman-Ford) 알고리즘플로이드-워셜(Floyd-Warshall) 알고리즘아래 표는 최단 경로 알고리즘 3가지의 각 차이점에 대해 참고할 수 있도록 생성형 AI를 통해 생성한 자료구분다익스트라(Dijkstra)벨만-포드(Bellman-Ford)플로이드-워셜(Floyd-Warshall)목적단일 출발점에서 다른 모든 정점까지의 최단 거리단일 출발점에서 다른 모든 정점까지의 최단 거리모든 정점 쌍 간 최단 거리음수 가중치❌ 불가능 (음수 간선 있으면 오동작)✅ 가능✅ 가능음수 사이클..
문제https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이정석적인 구간합 풀이 (투포인터) 접근법문제를 조금 읽어보면 알 수 있듯, 특정 합(k)을 만족하는 구간을 구하는 문제로 구간합을 구하는 알고리즘을 적용해서 풀 수 있다.처음에 떠올린 방법은 투포인터를 활용해서 구간합 조건을 검색하는 방식이였고, 두번째는 누적합이다.만약 '비내림차순'이 아니라 정렬이 되어 있다는 가정이라면 이분탐색을 활용해도 풀 수 있다. 우선 해당 문제의 조건은 간단하다. 만족하는 구간합이 여러 CASE일 경우 아래 조건에 따..