본문 바로가기

전체 글

(45)
[우아한테크코스] 8기 프리코스 - 오픈 미션 회고록 transtalk 백엔드 개발 회고록: 성장을 위한 도전과 통찰transtalk 백엔드 팀에서 인증·보안(JWT, OAuth2, Redis), WebSocket 실시간 통신, MongoDB 기반 메시지 저장 구조를 설계·구현하고, AWS EC2 · RDS · Nginx · MongoDB Atlas로 전체 서버 인프라를 구축했습니다. 실시간 번역 채팅 서비스가 안정적으로 동작할 수 있도록 서버의 핵심 기반 구조 전반을 책임지고 개발·운영했습니다.이번 프로젝트는 제가 개발자로서 어떤 관점을 가지고 문제를 정의하고 해결해 나가는지, 그리고 팀과 함께 성장하는 데 어떤 태도를 가지고 있는지를 스스로 증명할 수 있었던 중요한 경험이었습니다. 단순히 요구된 기능을 구현하는 것을 넘어서, 실제 서비스 수준의 인증·보..
[우아한테크코스] 8기 프리코스 - 3차 미션 회고록 로또 발매기 과제를 하며 느낀 점이번 로또 발매기 과제를 진행하면서, 항상 과제를 대할 때처럼 절차지향적으로 기능을 먼저 구현하고 이후에 객체지향적으로 리팩토링하는 습관에 대해 다시 한번 고민하게 되었습니다. 기능을 하나씩 구현해 나가는 과정은 익숙하지만, “이 방식이 정말 좋은 접근일까?”라는 의문이 생겼습니다.기능 구현 중심의 사고에서 구조 중심의 사고로과제를 시작할 때는 늘 그렇듯, 먼저 필요한 기능을 나열했습니다. 금액 입력, 예외 처리, 로또 번호 생성, 당첨 결과 판별, 수익률 계산 등, 각 단계를 세분화하여 절차적으로 하나씩 완성해 나갔습니다. 이 과정에서 Set, List, Map 같은 다양한 자료구조를 활용하며 데이터의 성격에 맞는 자료형 선택의 중요성을 절감했습니다.특히 다음과 같은 방..
[우아한테크코스] 8기 프리코스 - 2차 미션 회고록 🚗 자동차 경주 게임 프로그래밍 소감문이번 자동차 경주 게임을 구현하면서 가장 많이 고민했던 부분은 입력 문자열을 어떻게 정확하게 분리할 것인가, 그리고 이름과 점수, 회차 정보를 어떤 자료구조로 저장할 것인가였습니다. 단순히 문자열을 split(",")으로 나누는 것이 아니라, 연속된 구분자(,,), 빈 문자열, 정규표현식의 한계, limit 값의 차이 등 세밀한 상황까지 고려해야 했기 때문입니다.🧩 1. String.split()의 한계를 직접 파악하다처음에는 String.split(",")만 사용하면 된다고 생각했습니다.하지만 테스트 중 "a,,b,c" 같은 입력에서 예상치 못한 결과가 나왔습니다.이유를 찾기 위해 String 클래스의 실제 구현을 분석해보니,split() 메서드는 내부적으로 다..
[우아한테크코스] 8기 프리코스 - 1차 미션 회고록 🧭 우테코 1차 미션 회고록 — 문자열 덧셈 계산기 구현기1️⃣ 프로젝트 개요이번 미션의 목표는 “입력된 문자열을 분석해 숫자를 덧셈하는 계산기”를 직접 구현하는 것이었다. 단순한 산술 연산보다는 입력 파싱, 커스텀 구분자 처리, 예외 처리, 타입 분기, 리팩토링 등을 경험하는 것이 핵심이었다.문자열 입력에서 시작해, 정수·실수 구분, 구분자 처리, 계산 로직 분리까지 전 과정을 설계하고 구현했다.2️⃣ 개발 과정 요약단계주요 작업학습 포인트1단계Console과 Scanner를 이용한 입력 구조 설계입력 스트림 처리의 제약 이해2단계CustomInputStream, CustomScanner 제작 시도FilterInputStream과 Reflection 실험3단계Reflection을 통한 Console ..
JAVA LocalDate와 Enum 에 대해 - TermType Spring Boot 를 사용한 게시판 어플리케이션을 만들던 중 Memo 를 요약해 저장하는 기능을 만들고 싶다고 생각했다또한 요약을 어떤 기준으로 진행할 것인가 생각해보았다이때 기간 단위로 Memo 들을 모아 하나의 Summary 로 만들고 싶다고 생각했다기간 단위는 어떻게 정할까 고민을 했고, 하루 요약, 한주 요약, 한달 요약 의 세가지 단위로 설정하고자했다기간은 입력된 날짜(2025-07-23) 기준으로 당일, 월요일 부터 일요일, 그리고 해당 달 전체로 생각했다입력된 날짜 값은 JAVA 의 LocalDate 타입과 일치했으며 daily, weekly, monthly의 키워드는 열거 상수, 특히 ENUM에 저장하기에 적합하다고 생각했다오늘은 TermType 이라는 클래스를 만들며 공부했던 정보를 ..
쿠키, 세션과 JWT: HTTP의 단점 보완하기 HTTP 의 특징1. 비연결지향(connectionless) 클라이언트가 서버에 요청(request)을 한 후 서버가 보낸 요청(response)을 받으면 서버와의 연결을 끊는다 2. 무상태성(stateless) 연결을 끊는 순간 서버와 클라이언트의 통신이 끝나며 상태 정보를 유지하지 않는다쿠키(cookie) 클라이언트(브라우저) 로컬에 저장되는 데이터 파일이다 이 데이터 파일에는 클라이언트의 상태 정보를 나타내는 키-값(key-value)이 들어있다 Response Header Set-Cookie 속성을 설정해서 쿠키를 만들 수 있다 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request Hearder에 넣어 자동으로 서버에 전송한다 쿠키의 구성요소 이름: 각각의 쿠키를 구별하는데 사용되는 이름..
RESTful하게 API를 짜려면 어떻게 할까? API(Application Programming Interface)란?다른 소프트웨어 시스템과 통신하기 위해 따라야하는 규칙을 정의한다 웹 API : 클라이언트와 웹 리소스 사이의 게이트웨이 클라이언트 웹에서 정보에 액세스하려는 사용자이다 API를 사용하는 사람 또는 소프트웨어 시스템을 말한다리소스 다양한 어플리케이션이 클라이언트에게 제공하는 정보이다 리소스는 이미지, 동영상, 택스트, 숫자 등 모든 유형의 데이터가 될 수 있다서버는 클라이언트에 리소스를 제공하는 시스템이다서버는 API를 사용하여 리소스를 공유, 보안, 제어 및 인증을 유지하면서 웹 서비스를 제공한다REST(Repesentational State Transfer) API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍쳐이다자원을 이..
[Kotlin&Spring] 5기 Redis sorted sets 자료구조와 명령어 이해하기 Redis sorted setsunique 한 Strings를 연관된 score에 의해 정렬한 자료구조string이 하나 이상의 같은 score 를 가질 경우 String은 사전 순에 따라 정렬된다 sorted sets를 사용하는 예시순위표ex) 대용량 온라인 게임의 최고 점수들의 정렬된 리스트를 쉽게 유지할 수 있다요금 제한기ex) 특히 과도한 API 요청을 방지하기 위해 sliding window 속도 제한기를 구축할 때 사용할 수 있다 set과 Hash를 섞은 자료구조라고 생각할 수 있다set와 같이 sorted sets은 unique한 반복되지 않는 문자열 요소들로 구성된다따라서 어떤 부분에서 sorted set은 set과 동일하다그러나 set의 요소들이 정렬되지 않는 반면에sorted set 의..