목록CodeLog: 개발 언어의 모든 것 (22)
Jin's IT Story
소프트웨어 테스트에서 테스트 더블(Test Double)은 실제 객체를 대체하여 테스트를 수행하는 도구입니다. 다양한 종류가 존재하며, 각각의 목적과 특징에 따라 적절한 상황에 활용해야 효과적입니다. 이 글에서는 Dummy, Stub, Spy, Mock, Fake 등 대표적인 테스트 더블의 개념과 그 차이점, 장단점을 비교 분석하여, 테스트 설계 시 올바른 선택을 돕습니다.테스트 더블이란 무엇인가? 테스트 더블은 테스트 환경에서 실제 객체의 역할을 대신하는 가짜 객체입니다. 이름은 스포츠 용어의 ‘더블(Doubles)’에서 유래되었으며, 배우 대신 위험한 장면을 대체하는 스턴트맨처럼 실제 시스템의 동작을 시뮬레이션합니다. 테스트 더블은 단위 테스트에서 특히 중요하게 사용되며, 시스템의 외부 의존성을 제..
리스트는 컴퓨터 과학에서 가장 널리 사용되는 자료구조 중 하나로, 데이터를 순차적으로 저장하고 관리하는 데 핵심적인 역할을 합니다. 특히 선형리스트와 연결리스트는 각각 배열과 포인터 기반 구조로 서로 다른 특성을 가지고 있으며, 다양한 소프트웨어 시스템과 실제 개발 환경에서 특정 목적에 따라 선택됩니다. 이 글에서는 리스트 구조의 기본 원리를 간단히 되짚어보고, 다양한 현실 세계의 사용사례를 통해 어떤 상황에서 어떤 리스트가 적절한지 구체적으로 살펴보겠습니다.선형리스트 사용 사례: 읽기 중심 데이터 처리 선형리스트는 배열을 기반으로 한 리스트로, 메모리 상에 연속적으로 데이터를 저장합니다. 이 구조는 빠른 인덱스 접근, 고정된 크기의 데이터 관리, 구현의 간단함이라는 장점을 가집니다. 실제로 다양한 ..
한국의 자바 개발자들 사이에서 가장 널리 사용되는 디자인패턴 중 하나는 싱글톤(Singleton) 패턴과 팩토리(Factory) 패턴입니다. 이 두 패턴은 객체 생성과 관리의 복잡도를 줄이고 유지보수성을 높이는 데 큰 역할을 하기 때문에, 실무 프로젝트나 기업 내 표준 코드에서도 빈번하게 등장합니다. 이 글에서는 한국 개발자들이 이 두 패턴을 왜 선호하는지, 실제로 어떻게 활용하고 있는지를 예제 중심으로 자세히 살펴보겠습니다.실무에서 자주 보이는 싱글톤 패턴 활용 싱글톤 패턴은 프로그램 내에서 단 하나의 객체만 생성되어야 하는 경우 사용됩니다. 한국 개발자들은 공통 설정값을 관리하는 Config 클래스나 로그 관리, DB 커넥션 풀 같은 공유 자원 관리에 싱글톤을 자주 사용합니다. 특히 스프링(Sp..
자바스크립트는 원래 브라우저에서만 작동하던 언어였지만, Node.js의 등장으로 서버에서도 활용이 가능해졌습니다. 이 둘은 모두 V8 엔진을 기반으로 하지만, 실행 환경과 기능에 큰 차이가 있습니다. 이 글에서는 Node.js와 브라우저 환경의 V8이 어떻게 다르게 작동하는지, 각 환경의 특징과 구조를 비교해 설명합니다.공통점: 둘 다 V8 엔진을 사용한다 Node.js와 브라우저는 서로 다른 플랫폼이지만, 자바스크립트 실행 엔진으로는 공통적으로 V8을 사용합니다.JIT(Just-In-Time) 컴파일로 빠른 실행가비지 컬렉션(GC)을 통한 자동 메모리 관리Hidden Class, Inline Cache 등의 최적화 기능ECMAScript 표준을 빠르게 반영 이러한 엔진 덕분에 브라우저에서도, Node...
우리가 브라우저에 작성하는 자바스크립트는 어떻게 실행될까요? 코드 한 줄이 실제 동작으로 바뀌는 그 과정은 생각보다 복잡하며, 그 중심에는 Google의 V8 엔진이 있습니다. 이 글에서는 V8이 자바스크립트를 처리하는 전체 흐름을 파싱 → 컴파일 → 실행까지 단계별로 설명하고, 성능 향상을 위한 JIT 컴파일과 최적화 전략도 함께 다룹니다.파싱(Parsing) – 코드를 읽는 첫 단계 자바스크립트는 사람이 읽을 수 있는 언어입니다. 하지만 컴퓨터는 이 텍스트를 바로 실행할 수 없습니다. V8 엔진은 먼저 파서(Parser)를 이용해 자바스크립트 코드를 한 줄씩 읽으며 구조를 분석합니다. 이 단계에서 자바스크립트는 아래와 같은 내부 구조로 바뀝니다:토큰화(Tokenizing)코드 문장을 키워드, 연산자..
자바스크립트는 자동으로 메모리를 관리해 주기 때문에 메모리 구조를 잘 몰라도 개발이 가능합니다. 하지만 서비스가 커지고, 사용자 수가 많아질수록 메모리 누수, 성능 저하 문제가 발생하기 쉽습니다. 이 글에서는 V8 엔진의 메모리 구조와 GC(Garbage Collector)의 작동 원리를 상세하게 설명하고, 실무에서 주의해야 할 메모리 관리 팁도 함께 정리합니다.V8의 메모리 구조 – 스택과 힙 V8은 자바스크립트 코드를 실행할 때 두 가지 메모리 공간을 사용합니다: 스택(Stack)과 힙(Heap)입니다.스택(Stack)크기가 작고, 빠르게 처리되어야 하는 고정된 데이터를 저장합니다.예) 함수 호출, 지역 변수, 기본 타입 값 등힙(Heap)동적으로 크기를 조절할 수 있는 큰 메모리 공간입니다.객체, ..
