전체 글 18

알쏭달쏭 햇갈리는 파이썬 네임스페이스 (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

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

더 좋은 설계를 위한 S.O.L.I.D 원칙 이해하기

우리는 좋은 소프트웨어 시스템을 개발하기 위해 좋은 설계를 하고자 합니다. 좋은 설계란 무엇일까요?다양한 사람들의 의견을 모아본 바는 다음과 같습니다."낮은 결합도와 높은 응집도를 지향하는 것""유지보수가 쉬운 시스템을 만드는 것""변화를 손쉽게 받아들일 수 있도록 하는 것" 서비스를 지속하고 가치를 창출하기 위해서는 하나의 애플리케이션 개발을 마치고 방치하는 것이 아니라, 지속적으로 유지하고 확장해나가야 합니다.이 과정에서 코드를 추가하거나 기존 코드를 수정해야하는 일이 종종 발생하곤 할겁니다.하지만 유지보수 및 확장 단계에서 다른 사람이 작성한 코드가 이해가 안되거나, 너무 많은 기존의 코드를 건드려야하게 되는 상황을 맞게 된다면 어떨까요?많은 사람들이 좋은 설계의 정의를 위와 같이 내린 이유를 이..

CS&Network 2025.03.11