Dandy Now!
  • [ 언어·프레임워크/Python ]
    [Python] Python 패키지 관리의 혁신, uv 사용 가이드 (V3 이슈 포함)
    2025-04-14 19:15:53
    Python 패키지 관리의 혁신, uv 사용 가이드 (V3 이슈 포함)파이썬 개발자라면 누구나 pip를 사용해 패키지를 설치해 보았을 것이다. 하지만 프로젝트가 복잡해질수록 의존성 관리는 점점 어려워지고, 설치 시간은 하염없이 길어지기도 한다. 이러한 문제들을 해결하기 위해 등장한 강력한 도구가 바로 uv이다.이 글에서는 차세대 파이썬 패키지 관리 도구 uv가 무엇인지 알아보고, 기존 pip와의 차이점, 그리고 uv init, uv add, uv run 등의 명령어를 활용하여 pyproject.toml 파일을 중심으로 프로젝트를 진행하는 상세한 예제를 소개하고자 한다. 또한, uv run의 편리한 자동 환경 관리 기능과 가상 환경 직접 관리 방법까지 다룰 것이다.1. uv란 무엇인가?uv는 Rust로 작..
  • [ CS/SW공학 ]
    [SW공학] 학교 예제로 보는 절차지향과 객체지향, 뭐가 다를까?
    2025-04-13 22:00:04
    학교 예제로 보는 절차지향과 객체지향, 뭐가 다를까?소프트웨어 개발 세계에는 크게 두 가지 중요한 프로그래밍 방식이 있다. 바로 절차지향 프로그래밍(Procedural Programming, PP)과 객체지향 프로그래밍(Object-Oriented Programming, OOP)이다. 이 둘은 마치 세상을 바라보는 다른 두 개의 렌즈처럼, 프로그램을 만들고 문제를 해결하는 방식에서 근본적인 차이를 보인다.절차지향은 '어떤 순서로 일을 처리할까?'에 집중하는 반면, 객체지향은 현실 세계처럼 데이터와 관련 기능을 하나로 묶은 '객체'들이 서로 소통하며 프로그램을 만들어나간다.이 글에서는 이 두 가지 프로그래밍 방식의 핵심 개념을 알아보고, 우리에게 친숙한 '학교 운영'을 예시로 들어 그 차이점을 쉽고 명확하..
  • [ 언어·프레임워크/Node.js ]
    [Node.js] cron-cluster: 분산 환경에서의 크론 작업 관리 이해하기
    2025-04-11 14:40:59
    cron-cluster: 분산 환경에서의 크론 작업 관리 이해하기1. 일반 크론 작업과 분산 환경의 문제점일반적인 크론 작업(cron job)은 단일 서버 환경에서는 문제없이 작동한다. 하지만 현대 애플리케이션 아키텍처가 점점 더 분산화되면서, 동일한 애플리케이션이 여러 서버나 컨테이너에서 동시에 실행되는 경우가 많아졌다. 이런 환경에서 일반적인 크론 작업을 사용하면 다음과 같은 문제가 발생한다:중복 실행: 각 서버가 독립적으로 같은 작업을 실행하여 불필요하게 같은 작업이 여러 번 수행됨리소스 낭비: 동일한 작업이 여러 서버에서 반복 실행되어 시스템 리소스 낭비데이터 일관성 문제: 동일한 데이터에 대한 중복 처리로 예기치 않은 결과 발생비즈니스 로직 오류: 한 번만 실행되어야 하는 작업(예: 이메일 발송..
  • [ 언어·프레임워크/Node.js ]
    [Node.js] Redis 데이터베이스를 활용한 Node.js cron-cluster 동시 실행 문제 해결하기
    2025-04-11 14:38:43
    Redis 데이터베이스를 활용한 Node.js cron-cluster 동시 실행 문제 해결하기1. 문제 상황최근 개발 중 한 대의 서버에서 두 개의 Node.js 프로젝트를 동시에 실행하면서 흥미로운 문제에 직면했다. 두 프로젝트 모두 cron-cluster와 Redis를 사용해 예약 작업을 관리하고 있었는데, 두 프로젝트를 동시에 실행하면 두 프로젝트 모두 크론 작업이 동작하지 않았다. 그러나 프로젝트를 각각 따로 실행하면 크론 작업이 정상적으로 동작했다.2. 원인 분석이 문제의 원인은 cron-cluster 라이브러리의 작동 방식에 있었다. cron-cluster는 분산 환경에서 중복 실행을 방지하기 위해 설계되었으며, Redis를 통해 작업 실행을 조율한다. 두 프로젝트가 동일한 Redis 인스턴스..
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] 마이바티스(MyBatis) Parameter Not Found 에러 완벽 분석 및 해결: @Param 어노테이션 사용법
    2025-04-07 17:54:48
    마이바티스(MyBatis) Parameter Not Found 에러 완벽 분석 및 해결: @Param 어노테이션 사용법MyBatis는 강력하고 유연한 SQL 매퍼 프레임워크이지만, 개발 중 종종 org.apache.ibatis.binding.BindingException: Parameter '...' not found 와 같은 에러 메시지를 마주하게 된다. 특히 매퍼(Mapper) 인터페이스의 메소드에 두 개 이상의 파라미터를 전달할 때 자주 발생하는 이 문제의 원인을 명확히 파악하고, @Param 어노테이션을 이용한 깔끔한 해결 방법을 예제 코드와 함께 알아본다.1. 문제 상황 재현 (Error Scenario)사용자 상태(status)와 이름(name)을 조건으로 사용자를 조회하는 간단한 기능을 개발..
  • [ 언어·프레임워크/React.js ]
    [React.js] React useCallback, 함수 인수는 어떻게 동작할까? (feat. 빈 의존성 배열 `[]`)
    2025-04-04 17:30:18
    React useCallback, 함수 인수는 어떻게 동작할까?React 개발 중 성능 최적화를 위해 useCallback 훅을 자주 사용하게 된다. 그런데 useCallback(fn, [])처럼 빈 의존성 배열을 사용하면, 혹시 함수가 처음 호출될 때 사용된 인수가 고정되어 버리는 건 아닐까 하는 의문이 들 때가 있다. 마치 스냅샷처럼.그래서 이 useCallback과 함수 인수 전달의 관계에 대해 명확하게 알아고자 한다. 결론부터 말하면, 빈 의존성 배열은 인수를 고정시키지 않는다!  1. useCallback이란?개념: 함수 자체를 기억(메모이제이션)하여, 특정 조건 하에서 함수의 재생성을 방지하는 React 훅이다.목적: 주로 자식 컴포넌트에 props로 함수를 전달하거나 useEffect의 의존..
  • [ CS/네트워크 ]
    [네트워크] 네트워크 안정성을 위한 기술
    2025-04-01 11:22:41
    네트워크 안정성을 위한 기술1. 가용성 (Availability)시스템 또는 서비스가 정상적으로 운영되어 사용 가능한 정도를 나타내는 지표.높은 가용성은 시스템 장애로 인한 서비스 중단 시간을 최소화하는 것을 의미.2. 고가용성 (High Availability, HA)시스템 장애 발생 시에도 서비스 중단을 최소화하거나 없이 지속적으로 운영될 수 있도록 설계된 시스템.이중화, 결함 감내 등의 기술을 활용하여 구현.3. 결함 감내 (Fault Tolerance)시스템 내부에 결함이 발생하더라도 전체 시스템의 기능을 정상적으로 유지할 수 있는 능력.오류 검출 및 복구 메커니즘을 통해 구현.4. 이중화 (Redundancy)시스템의 구성 요소 (하드웨어, 소프트웨어, 네트워크 등)를 하나 더 준비하여 장애 발..
  • [ CS/컴퓨터구조와 운영체제 ]
    [운영체제] 동기화 기법 : 모니터, 인터페이스, 그리고 조건 변수
    2025-04-01 10:40:35
    모니터, 인터페이스, 그리고 조건 변수1. 모니터 (Monitor)모니터는 공유 자원(데이터)과 이 자원에 접근하는 프로시저(메서드)들을 하나로 묶고, 자동적으로 상호 배제(Mutual Exclusion) 기능을 제공하는 고급 동기화 추상화 구조다. 프로그래머가 락(lock) 관리를 명시적으로 하지 않아도 안전하게 공유 자원을 다룰 수 있도록 돕는다.목적: 복잡한 동기화 문제를 단순화하고, 락/세마포 등을 직접 사용할 때 발생하기 쉬운 오류(예: 데드락, 잘못된 락 순서)를 줄임.주요 특징:상호 배제 (Mutual Exclusion): 모니터 내부에 정의된 프로시저(메서드)는 한 번에 오직 하나의 스레드만 실행할 수 있음. 즉, 모니터 자체가 암묵적인 락을 관리.캡슐화 (Encapsulation): 모니..