개발 12

[TDD] TDD는 단순 테스트 코드가 아니었다

최근에 TDD를 다시 보게 되면서, 혼자 끄적이던 생각과 고민이 조금씩 정리가 되었습니다.사실 처음에는 TDD를 그냥 '테스트 코드 먼저 작성하는 방식' 정도로만 알고 있었는데요,이번에 프로젝트를 진행하면서 "테스트가 코드의 방향을 결정할 수도 있다"는 걸 체감하게 되었습니다.TDD는 단순히 테스트를 먼저 짜는 게 아니더라구요보통은 기능을 먼저 구현하고 테스트 코드를 나중에 붙이는 경우가 많잖아요? 그런데 TDD는 반대입니다.테스트 코드를 먼저 작성하고, 그 테스트를 통과할 수 있는 최소한의 코드를 작성한 뒤, 마지막에 리팩토링을 진행합니다.이게 단순히 순서만 바뀌는 게 아니라, "어떻게 코드를 짤 것인가" 자체가 달라집니다. 단계 설명Red실패하는 테스트를 먼저 작성합니다Green테스트를 통과시키기 위..

ETC 2025.04.17

Vault? Google Vault와의 차이점

"Vault"라는 이름은 다양한 서비스에서 사용되며, 각각 다른 목적과 기능을 제공합니다. 이번 글에서는 암호 저장소로서의 Vault와 Google Vault를 비교하여 어떤 차이가 있는지 정리해보겠습니다.Vault란 무엇인가?Vault는 개인이나 조직의 비밀번호와 중요한 정보를 안전하게 보관하는 무료 저장소 도구입니다. 이를 통해 데이터를 암호화하고 접근 권한을 세밀하게 제어할 수 있어 보안이 중요한 환경에서 활용됩니다.주요 특징데이터 보안: 비밀번호, API 키, 인증서 등의 민감한 정보를 암호화하여 안전하게 보호합니다.접근 제어: 사용자 인증 및 권한 부여를 통해 특정 사용자나 애플리케이션만 데이터에 접근할 수 있습니다.동적 비밀 생성: 특정 상황에 맞는 동적 비밀 생성 기능을 제공합니다.자동화 및..

ETC 2025.01.17

2024년 회고: 성장의 발판을 마련한 한 해

2024년은 감사한 마음으로 새로운 여정을 시작한 해였습니다. 운 좋게 더 좋은 회사로 이직하게 되었고, 새로운 환경에서 새로운 팀원들과 함께 일하기 시작했습니다. 하지만 상반기는 결코 쉽지 않았습니다. 업무의 규모는 이전보다 훨씬 커졌고, 일하는 방식 역시 많이 달라져 적응이 필요했죠.성장의 기회로 다가온 실수상반기 중 기억에 남는 일이 하나 있었습니다. 한 번은 지시받은 업무를 진행하던 중 업무의 규모를 잘못 이해한 적이 있었습니다. 제가 이해한 내용을 바탕으로 상급자에게 피드백을 드렸고, 별다른 추가 언급이 없어서 그대로 진행했죠. 하지만 이후 업무의 범위가 훨씬 크다는 사실을 알게 되었고, 그때는 상급자에게 아쉬운 마음을 가지기도 했습니다.그런데 알고 보니, 이 업무는 우리 팀으로 이관된 지 얼마..

ETC 2025.01.02

자바 메모리 구조

java 메모리 구조의 관해서 공부하던 중 상시로 읽어보기 위해서 기재하였습니다. JVM 의 전체적인 구조 클래스 로더(Class Loader): 자바 프로그램은 클래스로 구성되어 있으며, 클래스 로더는 이러한 클래스 파일들을 JVM으로 로드합니다. 클래스 로더는 클래스 파일을 찾고 로드하며, 필요한 경우 클래스를 동적으로 로드하여 실행 환경을 구성합니다. 메모리 영역(Memory Areas): JVM은 다양한 메모리 영역을 관리합니다. 메서드 영역(Method Area): 클래스 정보, 정적 변수, 상수 등이 저장되는 영역입니다. 힙(Heap): 인스턴스 객체와 배열이 할당되는 영역으로 동적으로 생성되며, 가비지 컬렉션에 의해 관리됩니다. 스택(Stack): 메서드 호출과 관련된 지역 변수와 메서드 호..

java 2023.08.16

Queue

public void QueueCreate() { Queue queue = new LinkedList(); //int형 queue 선언, linkedlist 이용 Queue queue2 = new LinkedList(); //String형 queue 선언, linkedlist 이용 } Queue란? Queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조입니다. Queue는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가집니다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말합니다. Queue의 특징 먼..

자료구조 2023.05.24

[프로그래머스] 최솟값 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 두 개의 배열이 주어지고 두 배열을 곱하였을 때 나올 수 있는 최솟값을 구하는 문제입니다. 최솟값은 A의 가장 큰 값과 B의 가장 작은 값이 곱해졌을 때 구할 수 있습니다. (A의 가장 작은 값과 B의 가장 큰 값도 마찬가지로 매칭되어야 합니다.) Arrays.sort(A); Arrays.sort(B); 따라서 우선 두 개의 배열을 초기화해주었습니다. 그다음은 이제 가장 큰 값과 가장 작은 값이 ..

CodingTest 2023.04.28

Decoupled Architecture - 백엔드와 프론트엔드의 분리

개발을 하다보면 프론트엔드와 백엔드가 구분되어있는 것을 확인할 수 있다. 이를 Decoupled Architecture이라고한다. Decoupled Architecture를 알아보기 전에 전통적인 웹사이트 아키텍처를 이해해야 한다. 전통적인 아키텍처 - Monolithic Architecture Monolithic Architecture의 구조는 아래와 같다. Monolithic Architecture - 전통적인 웹 사이트 아키텍처 이 구조는 많은 기능이 동일한 코드베이스 내에 있다. 이 구조에서는 동일한 코드베이스 내에 있는 기능을 통해서 작업을 처리하게 된다. 코드베이스란? 특정 소프트웨어 시스템, 응용 소프트웨어, 소프트웨어 구성 요소를 빌드하기 위해 사용되는 소스 코드의 모임 따라서 이런 단일 ..

ETC 2023.04.11

함수형 인터페이스

1. 함수형 인터페이스란? 함수형 인터페이스는 하나의 추상 메서드만을 가지고 있는 인터페이스입니다. 즉, 함수형 인터페이스를 구현하는 클래스는 하나의 메서드만을 반드시 구현해야 합니다. 예를 들어, 아래와 같은 함수형 인터페이스를 정의할 수 있습니다. @FunctionalInterface public interface Calculator { int calculate(int x, int y); } 위 인터페이스는 calculate라는 하나의 메서드만을 가지고 있습니다. 이 인터페이스를 구현하는 클래스는 calculate 메서드를 반드시 구현해야 합니다. 2. 함수형 인터페이스의 활용 Java 함수형 인터페이스는 함수형 프로그래밍을 지원하기 위해 도입되었습니다. 함수형 프로그래밍은 상태를 변경하는 대신 입력..

java 2023.04.06

Java Stream

Java Stream은 컬렉션, 배열 등의 데이터를 다룰 때 사용되는 API로서, 람다식과 함수형 인터페이스를 이용하여 데이터 처리를 더욱 간결하고 효율적으로 할 수 있도록 지원합니다. Stream 개요 Stream은 크게 중간 연산과 최종 연산으로 구성됩니다. 중간 연산은 Stream을 반환하며, 최종 연산은 다른 타입의 값을 반환합니다. 이때, 최종 연산이 수행되기 전까지는 중간 연산이 실행되지 않습니다. Stream API에서 제공하는 대표적인 중간 연산과 최종 연산은 다음과 같습니다. 중간 연산 filter(Predicate predicate): 조건에 맞는 요소만을 Stream에 남깁니다. map(Function mapper): 각 요소를 매핑하여 Stream을 반환합니다. flatMap(Fun..

java 2023.03.28

WEB SOCKET

ws프로토콜을 이용하는 양방향 통신방식이다. ws프로토콜은 한번 연결되면 연결을 끊지 않고 계속 유지" 한 상태로 "클라이언트와 서버가 서로 데이터를 주고 받는다 따라서 서버 하나에 여러 클라이언트가 붙어서 지속적으로 데이터를 주고 받아야하는 서비스에 유용하다. HTTP 통신의 경우, 클라이언트가 요청을 하고 서버가 응답을 하면 바로 연결이 끊어진다. ws 모듈 ws 모듈이란? : 간단한 웹소켓 통신을 구현하기 위한 모듈이다. 참고: socket.io라는 모듈을 사용하면, WebSocket이 지원되지 않는 브라우저에서도 여러가지 방식을 동원해 비슷하게 구현해준다.(+편의기능 제공) socket.io에 대한 글 참고: [node.js] socket.io 웹 소켓 모듈 기본 사용 방법 ws사용 방법 기본 구..

ETC 2022.11.23