- [ 언어·프레임워크/JavaScript ][JavaScript] JavaScript 배열 메서드, 무엇을 바꾸고 무엇을 반환할까?2025-04-18 10:11:42JavaScript 배열 메서드, 무엇을 바꾸고 무엇을 반환할까?JavaScript에서 배열을 다룰 때 다양한 메서드를 사용하게 된다. 하지만 각 메서드가 원본 배열을 변경하는지, 어떤 값을 반환하는지 헷갈릴 때가 많다. 이 글은 JavaScript 배열 메서드의 특징을 한눈에 파악하고자 작성했다.배열 메서드, 꼼꼼하게 알아야 하는 이유배열 메서드를 제대로 이해하지 못하면 예상치 못한 side effect가 발생하거나, 원하는 결과를 얻지 못할 수 있다. 특히 원본 배열을 변경하는 메서드는 주의해서 사용해야 한다.JavaScript 배열 메서드 요약MethodModifies Original ArrayReturns a ValueentriesNoYesfillYesYesfilterNoYesfindNoYesfi..
- [ 언어·프레임워크/JavaScript ][JavaScript] 안정 정렬 vs 불안정 정렬: JavaScript `sort()` 메서드의 숨겨진 진실2025-04-18 09:56:10안정 정렬 vs 불안정 정렬: JavaScript sort() 메서드의 숨겨진 진실JavaScript에서 배열을 정렬할 때 흔히 사용하는 sort() 메서드, 과연 완벽할까? 오늘은 sort() 메서드의 숨겨진 진실, 바로 안정 정렬과 불안정 정렬에 대해 알아보겠다.안정 정렬(Stable Sort)이란?안정 정렬은 정렬 후에도 동일한 값을 가진 요소들의 원래 순서가 그대로 유지되는 정렬 알고리즘이다. 마치 질서정연한 줄 세우기처럼, 키가 같은 사람들은 원래 서 있던 순서대로 줄을 서는 것이다.불안정 정렬(Unstable Sort)이란?반면 불안정 정렬은 동일한 값을 가진 요소들의 원래 순서가 바뀔 수 있는 정렬 알고리즘이다. 키가 같은 사람들의 순서가 뒤죽박죽 섞일 수도 있다는 뜻이다.JavaScript..
- [ 언어·프레임워크/Python ][Python] 파이썬, 한글 파일명 자모 분리? 걱정 노노!2025-04-17 13:47:24파이썬, 한글 파일명 자모 분리? 걱정 노노!파이썬으로 파일을 다루다 보면, 특히 macOS 환경에서 한글로 된 파일명이 'ㅎㅏㄴㄱㅡㄹ'처럼 자음과 모음이 따로 떨어져 보이는 당황스러운 경험을 할 수 있다. 분명 '한글'이라고 저장했는데 왜 이렇게 보이는 걸까? 이 현상은 생각보다 흔하며, 다행히 간단한 해결 방법이 있다.1. 왜 이런 문제가 발생할까? (유니코드 정규화)이 문제의 핵심에는 유니코드 정규화(Unicode Normalization) 방식의 차이가 있다.같은 글자, 다른 표현: 컴퓨터는 글자를 유니코드라는 표준 방식으로 다루는데, 놀랍게도 '한'이라는 하나의 한글 글자를 표현하는 방식이 여러 가지일 수 있다.NFC (표준 조합): 우리가 흔히 생각하는 방식이다. '한'이라는 글자를 하나의 완..
- [ 언어·프레임워크/JavaScript ][JavaScript] JavaScript Array.includes() 와 객체에서 구조적 동일성과 참조 동일성 문제2025-04-17 11:42:11JavaScript Array.includes() 와 객체에서 구조적 동일성과 참조 동일성 문제JavaScript에서 Array.prototype.includes() 메서드를 사용할 때, 객체와 원시 값(숫자, 문자열 등)을 다룰 때 어떻게 동작하는지 이해하는 것이 중요핟다.핵심 차이: 참조 vs. 구조원시 값의 경우, includes()는 배열의 요소 중 검색하는 값과 엄격하게 같은 (===) 요소가 있는지 확인한다.하지만 객체의 경우, includes()는 구조적 동일성이 아닌 참조 동일성을 확인한다. 즉, 배열이 메모리에서 정확히 동일한 객체 인스턴스에 대한 참조를 포함하는지 확인하며, 단순히 동일하게 보이는 객체(즉, 동일한 속성과 값을 가진 객체)를 확인하지 않는다.코드 예제예제를 통해 이를 설..
- [ 언어·프레임워크/Python ][Python] Python 패키지 관리의 혁신, uv 사용 가이드 (V3 이슈 포함)2025-04-14 19:15:53Python 패키지 관리의 혁신, uv 사용 가이드 (V3 이슈 포함)파이썬 개발자라면 누구나 pip를 사용해 패키지를 설치해 보았을 것이다. 하지만 프로젝트가 복잡해질수록 의존성 관리는 점점 어려워지고, 설치 시간은 하염없이 길어지기도 한다. 이러한 문제들을 해결하기 위해 등장한 강력한 도구가 바로 uv이다.이 글에서는 차세대 파이썬 패키지 관리 도구 uv가 무엇인지 알아보고, 기존 pip와의 차이점, 그리고 uv init, uv add, uv run 등의 명령어를 활용하여 pyproject.toml 파일을 중심으로 프로젝트를 진행하는 상세한 예제를 소개하고자 한다. 또한, uv run의 편리한 자동 환경 관리 기능과 가상 환경 직접 관리 방법까지 다룰 것이다.1. uv란 무엇인가?uv는 Rust로 작..
- [ 언어·프레임워크/Node.js ][Node.js] cron-cluster: 분산 환경에서의 크론 작업 관리 이해하기2025-04-11 14:40:59cron-cluster: 분산 환경에서의 크론 작업 관리 이해하기1. 일반 크론 작업과 분산 환경의 문제점일반적인 크론 작업(cron job)은 단일 서버 환경에서는 문제없이 작동한다. 하지만 현대 애플리케이션 아키텍처가 점점 더 분산화되면서, 동일한 애플리케이션이 여러 서버나 컨테이너에서 동시에 실행되는 경우가 많아졌다. 이런 환경에서 일반적인 크론 작업을 사용하면 다음과 같은 문제가 발생한다:중복 실행: 각 서버가 독립적으로 같은 작업을 실행하여 불필요하게 같은 작업이 여러 번 수행됨리소스 낭비: 동일한 작업이 여러 서버에서 반복 실행되어 시스템 리소스 낭비데이터 일관성 문제: 동일한 데이터에 대한 중복 처리로 예기치 않은 결과 발생비즈니스 로직 오류: 한 번만 실행되어야 하는 작업(예: 이메일 발송..
- [ 언어·프레임워크/Node.js ][Node.js] Redis 데이터베이스를 활용한 Node.js cron-cluster 동시 실행 문제 해결하기2025-04-11 14:38:43Redis 데이터베이스를 활용한 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)을 조건으로 사용자를 조회하는 간단한 기능을 개발..