2025/04 4

웹소켓(WebSocket) 가볍게 알아보기 + STOMP 프로토콜

올해 초 종합 운세 웹 서비스 프로젝트를 진행했습니다.저희 사이트에는 사용자의 사주 정보를 기반으로 대화 상대를 추천해 주고 채팅으로 연결해 주는 기능을 제공하고 있는데, 저를 포함한 두 명이 이 기능을 담당했었습니다.채팅 기능을 구현하기 위해 웹소켓 프로토콜 통신을 이용했고, 그때의 경험과 기억을 살려 정리해두면 좋겠다 싶어서 글을 작성하게 되었습니다. 사실 자잘한 버그들이 조금 있기도 하고, 추가해야 할 기능들이 있어서 아직 홍보는 따로 안하고 있지만, 기능이 궁금하신 분들은 https://www.unsemawang.com 접속하셔서 이용해보실 수 있습니다. 🔍 목차# 00. 기존 실시간 양방향 통신 방법# 01. WebSocket WebSocket? WebSocket 핸드셰이크# 02. STOM..

CS&Network 2025.04.28

대 LLM의 시대, 더 좋은 답변을 위한 방법 RAG(검색 증강 생성) 알아보기 + 벡터 DB

작년 처음 프로그래밍 공부를 시작하고 4개월 차쯤에 1~2주 정도 기간 동안 간단하게 저의 도서 쇼핑몰 사이트에 챗봇을 붙여 넣는 토이 프로젝트를 진행하게 되었습니다.정말 병아리 시절이라 (사실 지금도 ...) 차마 저 허접한 코드를 다시 돌려보는 게 스스로 부끄럽고 굉장히 오글거리는데요...이때가 제가 LLM을 활용한 프로그래밍에 관심을 갖기 시작했던 시기였습니다.조잡하긴 하지만 같은 기관에서 공부하던 동료 개발자 한 분으로부터 제가 SQL을 미리 정의해놓고 적절한 테이블을 조회하는 함수를 프롬프트에 달아놓는 방식이 마치 RAG와 같다고 했습니다.그때 RAG라는 단어를 처음 접하기도 했습니다. 어찌 되었든, 그로부터 몇 달이 지난 후 이제서야 RAG에 대해 자세히 알아보고 공부하게 되었는데요, 이번 포..

LLM 2025.04.17

Java Stream API 이해부터 '잘' 사용하는 방법까지

쉽게 변하는 기술보다는 느리게 변하는 기술을 우선적으로 학습하는 것이 중요하다는 것을 머리로는 알고 있습니다.여기서 쉽게 변하는 기술은 프레임워크, 라이브러리 등 유행을 타는 기술들을 의미하고 느리게 변하는 기술은 프로그래밍 언어, 프로그래밍 패러다임, 알고리즘 등으로 분류할 수 있습니다.개발 공부를 시작할 때 기초를 다질 시간이 부족한 상태에서 급하게 다양한 프로젝트를 하면서 배워왔다 보니, 쉽게 변하는 기술을 학습하는 것에는 익숙하고 재미를 붙여왔지만, 느리게 변하는 기술을 공부하는 건 자꾸 미루게 되었고 생각만 해도 따분하다는 생각이 듭니다. 서론이 길었는데, 미뤄왔던 느리게 변하는 기술인 Java 언어 자체에 대한 복습을 하는 중 Stream에 대한 내용을 정리해보면 좋겠다 싶어서 글을 작성하게 ..

Java 2025.04.11

Promise와 async, await을 사용해 타입스크립트에서 비동기 함수 작성하기

# 00. About Asynchronous 비동기란 무엇일까요?MDN 에서 정의한 비동기는 다음과 같습니다.비동기라는 용어는 둘 이상의 객체 또는 이벤트가 동시에 존재하지 않거나 발생하지 않는 경우(또는 이전 객체 또는 이벤트가 완료될 때까지 기다리지 않고 발생하는 여러 관련 작업)를 말합니다. 비동기의 개념을 처음 접하는 분들은 위의 정의만으로는 정확하게 이해하기 어려울 것입니다. 통상적으로는  비동기를 병렬적 실행 정도로 이해하고 설명하곤 합니다.비동기의 경우 한 작업이 시작되면 그 작업이 끝나기를 기다린 후 다음 작업을 실행하는 동기와는 다르게 이전 작업이 끝나기를 기다리지 않고 다음 작업을 시작할 수 있습니다. 비동기 처리의 경우 오래 걸리는 작업을 효율적으로 처리할 수 있기 때문에 주로, 네트..

TypeScript 2025.04.05