전체 글 11

데이터베이스 I/O와 스캔 메커니즘

학부생인 아는 분이랑 온라인 스터디 같이 하다가 나눈 얘기가 있습니다.그분이 학교 축제에 츄가 왔는데, 츄가 본인을 보면서 환하게 웃어줬다면서 너무 좋아하시는 거예요.거의 뭐 사랑에 빠진 것처럼 푹 빠져있으시길래 제가 얘기해 드렸죠.그거 츄가 님을 인덱스 스캔한 게 아니라 풀 테이블 스캔 하는 중이었는데 마침 님이 그 테이블에 있었던 거라고. 인트로에 쓸 말이 없어서 쓸데없는 얘기 좀 해봤고요.그런 의미에서 이번 포스트에서는 데이터베이스의 I/O 작업과 데이터 스캔 메커니즘에 대해 알아보도록 하겠습니다. 🔍 목차00. 데이터베이스 저장 구조01. Sequential Access vs Random Access02. Single Block I/O vs Multi Block I/O02. Table Full..

Database 2025.05.20

컨트롤러 요청/응답 가로채기, 스프링 인터셉터(Interceptor)

취미로 계속 만지고 있는 사이트에서 일별 사용자 수를 모니터링할 수 있으면 좋겠다고 생각했습니다.여러 가지 방법이 있겠지만 저는 프론트에서 GA를 붙이는 방법과 백엔드에서 직접 DB에 로깅을 하는 방법 두 가지를 시도했습니다.DB에 직접 로깅하는 방식에 대해 고민하고 알아보면서 공부하게 된 스프링 인터셉터에 대해 정리하고자 글을 남겨놓게 되었습니다. 🔍 목차00. Interceptor?01. Interceptor 구조 / 동작 흐름02. HandlerInterceptor 메서드03. Interceptor 등록 방법04. Interceptor vs Filter # 00. Interceptor? 인증·인가, 로깅 등 스프링에 매핑된 모든 핸들러 요청에 대해 일관적인 처리를 해야 할 때가 있습니다. 이..

Spring 2025.05.13

알쏭달쏭 햇갈리는 파이썬 네임스페이스 (namespace) 이해하기

졸업 프로젝트에서 백엔드 웹 프레임워크로 FastAPI를 사용하게 되었습니다.파이썬을 사용본 적이 있지만 언어 자체에 대한 공부는 하지 않았었는데, 이번 기회에 언어부터 차근차근 채워나가고자 하고 있습니다. 이번 포스트에서는 최근에 파이썬을 공부하면서 헷갈리면서도 중요하다고 생각되는 파이썬의 네임스페이스에 대해 알아보는 시간을 가져보겠습니다. 🔍 목차# 00. About NameName?네임 바인딩 (Name Binding)# 01. About NamespaceNamespace?Namespace 종류# 02. if __name__ == '__main__': 문의 의미# 00. About Name Name?네임스페이스에 대해 알아보기 전에 먼저 파이썬에서의 이름(name)에 대해 이해할 필요가 있다고 ..

Python 2025.05.05

웹소켓(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

AI 시대에서 개발자로 살아남기 위한 Prompt Engineering (Zero-shot, Few-shot, Role Prompting, Chain Prompting, Chain-of-Thought)

2020년대에서 가장 빠르게 발전하고 있고, 가장 이슈가 되는 분야를 생각해 보면 단연 AI라고 할 수 있습니다.정말 다양한 AI 서비스들이 나오고 있지만, 이 AI 시장에서도 가장 핫한 분야는 아무래도 LLM (Large Language Model)이라고 할 수 있는데요, Chat-GPT의 등장 이후로 이 언어 모델을 얼마나 잘 활용하느냐에 따라 업무 효율과 정보 습득의 속도 차이는 어마어마하다고 볼 수 있습니다. 저는 GPT-3.0 시절인 2023년 3월부터 꾸준히 유료 구독을 하여 어느덧 구독한 지 2년이 되었는데요, 지금까지 OpenAI에 바친 돈이 50만 원을 넘는다고 생각하면 큰돈인 듯싶지만 저는 그 이상의 가치를 GPT로부터 돌려받았다고 생각합니다.GPT와 같은 언어 모델들은 사용자에 따라 ..

LLM 2025.03.27

데이터 일관성을 위한 트랜잭션 격리 수준 (Isloation Level) 알아보기

여러 사용자가 하나의 데이터에 동시에 접근할 때는 우리 눈에 보이지 않는 작은 전쟁이 벌어지고 있습니다.데이터의 일관성과 무결성을 지키면서, 다른 한편으로는 높은 성능을 유지해야 하는 이 어려운 균형을 잡기 위해 데이터베이스에는 트랜잭션이라는 개념이 존재합니다.  트랜잭션이 데이터를 읽고 쓰는 수많은 요청들이 서로 충돌하지 않도록, 그리고 한 트랜잭션 작업이 다른 트랜잭션에 영향을 주지 않도록 하는 메커니즘을 트랜잭션의 격리 수준 (Isolation - Level) 이라고 합니다.  # 00. About Transaction 트랜잭션의 격리 수준을 알아보기 전에 먼저 트랜잭션의 정의를 살펴봅시다.데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서..

Database 2025.03.22

네트워크 기술의 중심 TCP/IP 4계층 알아보기

과거에는 다양한 네트워크 기술들이 독립적으로 존재했지만, 현시대에는 대부분의 네트워크가 TCP/IP 프로토콜 스택으로 이루어져 있습니다.우리가 일상에서 사용하는 인터넷부터 회사 내부의 인트라넷, 심지어 스마트폰과 IoT 기기까지 모두 TCP/IP를 통해 연결되어 있죠. 개인적으로는 처음 네트워크를 공부하면서 TCP/IP라는 용어를 들었을 때부터 한참 동안 TCP/IP의 개념이 너무 추상적으로 느껴지고 정확하게 의미하는 바가 무엇인지 이해하기 힘들었습니다. 이번 글에서는 네트워크 기술의 핵심이자 현대 IT 인프라의 표준인 TCP/IP의 4 계층 구조를 명확히 짚어보고, 각 계층이 어떤 역할을 하는지 함께 알아보겠습니다.  # 00. About TCP/IP TCP/IP란 무엇일까요?TCP/IP는 현시대에서 ..

CS&Network 2025.03.13