내일배움캠프를 시작한 지 3일차입니다...1, 2일차가 없는 이유는 강의시청이랑 메인페이지 뼈대를 제가 작성한다고 했기 때문이죠...게다가 이번달까지는 아르바이트 대타를 못 구해 그만두지 못하는 상태라 시간이 많이 부족했습니다. 그래도 완벽하진 않지만 목표를 잘 마무리
Spring 6기 32조의 팀원 프로필 페이지를 개발하면서 Firebase Firestore를 이용해 데이터를 동적으로 불러오고, 사용자 입력을 저장하는 기능을 구현했다.이 과정에서 팀원 목록, 프로젝트 관리, 문의하기 기능을 개발했으며, 진행 중 발생한 문제와 해결
🚀 GitHub Pages 배포 & 프로젝트 발표 정리 📌 1. GitHub Pages를 활용한 프로젝트 배포 이번 프로젝트에서는 GitHub Pages를 활용하여 정적 웹사이트를 배포했습니다. 배포 과정에서 발생한 몇 가지 이슈와 해결 방법을 공유합니다. 1
다음은 Keep, Problem, Try(해결책), 추가 작업을 정리한 회고록입니다. 박화랑GitHub & 카카오톡을 활용한 원활한 협업 GitHub을 통해 버전 관리를 철저히 진행하고, Push 작업이 완료될 때마다 즉시 공유 카카오톡을 활용하여 번호를 받아 빠
튜터에게 받은 조언을 바탕으로, 협업 과정에서 주석을 작성하는 것이 얼마나 중요한지 다시 한 번 깨닫게 되었다.개발자들 간의 원활한 소통을 위해선, 단순히 동작하는 코드가 아닌, 이해하기 쉬운 코드가 필수적이다. 협업 과정에서는 여러 개발자가 같은 프로젝트를 수정하고
GitHub Flow는 협업할 때 유용한 전략이지만, 혼자서도 효과적으로 연습할 수 있는 방법이 있다.주요 개념인 기능 단위 브랜치 생성 → 개발 → PR → 병합 → 정리 과정을 반복하면서 익숙해질 수 있다.☞ 기본 개념main 브랜치는 항상 안정적인 상태로 유지새로
프로젝트를 진행하다 보면 개발자마다 코드를 작성하는 스타일이 다를 수 있습니다.예를 들어, 어떤 부분에서는 for 문을 사용하고, 어떤 부분에서는 Stream API를 사용하는 경우 코드의 일관성이 깨질 수 있습니다. 이러한 통일되지 않은 코드 스타일은 다음과 같은
✅ 문제 상황 특정 값과 동일한 값을 검색하는 기능을 구현했음 그러나 filterResultsByEqual(double target) 메서드에서 int와 double을 비교할 때 검색 결과가 반환되지 않는 문제 발생 예를 들어, 리스트에 124.0이 존재하지만 124를
Java에서 데이터를 반복 처리할 때 for-loop과 Stream API를 많이 사용합니다. 하지만 튜터님께 피드백 받은 결과 코드의 가독성을 위해 stream으로 전부 통일했습니다. 하지만 stream을 쓰는데 속도의 차이가 얼마나 발생하는 지 정도를 알고 작성하는
1. 추상화란? 추상화(Abstraction)란 불필요한 세부 사항을 숨기고, 중요한 부분만을 설계하는 개념입니다. ✔ 현실 세계의 개념을 프로그래밍적으로 표현할 때 공통적인 속성과 동작만 남기고, 세부 구현은 감추는 것입니다. ✔ 예를 들어, "동물"이라는 개념은
캡슐화(Encapsulation)는 객체지향 프로그래밍(OOP)에서 데이터(필드)와 메서드를 하나의 단위(클래스)로 묶고, 외부에서 직접 접근하지 못하도록 보호하는 개념입니다.즉, 내부 구현을 감추고 필요한 기능만 외부에 공개하는 것이 핵심입니다. ✔ 나의 입장에서는
Enum은 열거형이라고도 하는데, 상수(constant)들의 집합을 의미한다.예를 들어, 요일을 표현할 때 월, 화, 수, 목, 금, 토, 일처럼 정해진 값들만 존재한다면 Enum이 적합함. 위 Day Enum은 요일을 나타내는 고정된 값들의 집합임이제 Day 타입을
JVM은 자바 애플리케이션을 실행하기 위한 가상 머신이다.자바는 운영체제(OS)에 직접 종속되지 않고, 한 번 작성된 코드가 다양한 환경에서 실행될 수 있도록 설계되었다.이것이 바로 "Write Once, Run Anywhere" 개념이며, 이를 가능하게 하는 것이 바
1. x-www-form-urlencoded 방식으로 두 개의 객체를 받으려 했던 시도 서론 강의를 듣던 중 @ModelAttribute와 @RequestParam을 생략해도 필드명이 같으면 자동으로 바인딩된다는 내용을 접했다. 여기서 "객체가 2개라면 어떻게 될까?
자바에서 예외(Exception)는 크게 두 가지로 나뉜다: CheckedException과 UncheckedException그리고 UncheckedException의 종류들 중에 자주 나오는 오류가 RuntimeException강의 실습 중 ‘비밀번호 검증 실패 시
시작하며... Spring 프로젝트에서 서버가 클라이언트에게 응답을 보낼 때, Map이나 DTO 둘 다 사용할 수 있다. 특히 예외 처리에서 Map 형태로 응답을 구성하는 경우가 많은데, 처음엔 "왜 DTO를 안 만들고 Map으로 하지?" 의문이 들어서 확인해봤다 그래서 이 글에서는 Map을 사용하는 이유와 함께, 언제 DTO를 써야 하고 언제 Map...
이번 친구 요청 기능을 구현하면서, 발생 가능한 다양한 예외 상황에 대해 전략적인 예외 처리 구조를 설계했습니다. 이 구조는 다음과 같은 흐름으로 구성되어 있습니다:먼저, 발생 가능한 모든 예외 상황을 ErrorCode라는 Enum으로 정의했습니다.이 Enum에는 에러
서로가 맡은 바 임무를 잘 분배한 점이 좋았습니다. 서로의 역할을 원할하게 분배하여 과한 업무 부담이 없도록 방지했던 점이 좋았습니다.코드 형식 통일(반환 값, 파라미터, 처리 로직 등등)을 하지 않아 코드의 통일성이 아쉬웠습니다.다음에는 코드 작성이나 방식을 통일하는
기능별 테스트 코드 반드시 작성 (작성하지 않으면 분명 피드백 받을 것입니다.)사용하지 않는 import, repository, 코드 등은 제거Timestamped, CommonRequestDto 등은 common 패키지로 정리들여쓰기, 함수명, 리턴 타입, 파라미터
S3 업로드 기능을 만들다가 처음엔 이렇게 생각했다.“파일 하나 업로드하는데, 굳이 Service를 두 개나 나눠야 해?”강의나 실무 코드에서는 S3Service, S3Uploader, S3InfraService 등으로 분리하는 경우가 많았고, 그 이유가 궁금했다. 그
"클루드"는 미국의 AI 스타트업 Anthropic이 개발한 차세대 인공지능 어시스턴트로, 자연어 처리와 코드 생성, 멀티모달 처리 등 다양한 기능을 제공하는 모델입니다. 현재 최신 버전은 Claude 3.7 Sonnet이며, 개발자와 일반 사용자를 위한 다양한 도구와
처음에는 WebSocket 접속 시 클라이언트의 고유 ID를 식별하기 위해 determineUser() 메서드에서 다음과 같이 UUID를 반환하는 방식으로 구현했다.처음에는 이 방식으로도 충분할 것이라고 생각했다. UUID는 고유하고 충돌이 없기 때문에, 각 클라이언트
사용자 회원가입 및 로그인사용자가 사이트에 처음 접속하여 회원가입 또는 로그인을 시도한다.적용 기술 • Spring Security: 사용자 인증/인가 처리 • OAuth 2.0 (Google, Kakao): 소셜 로그인 기능 • 세션 또는 JWT 방식 중 선택: 인증
사용자 회원가입 및 로그인 - 윤소현사용자가 사이트에 처음 접속하여 회원가입 또는 로그인을 시도한다.적용 기술• Spring Security: 사용자 인증/인가 처리• OAuth 2.0 (Google, Kakao): 소셜 로그인 기능• 세션 또는 JWT 방식 중 선택:
최근 DevMountain 프로젝트에서 Toss Payments를 연동하며 여러 문제와 상황들이 겹쳤다. 이에 대해 간단하게 정리해두고 다음에 비슷한 상황이 생기면 아래와 같은 방법으로 해결할 예정이다.✅ 요구 조건Toss는 orderId에 다음 조건을 강제합니다: •
튜터님에게 MVP 시연 후 피드백 들은 사항에 대해 정리한 뒤 내가 맡을 분야는 MCP 클라이언트 구축 후(MCP 서버는 추가), 유튜브 같은 영상 플랫폼(mcp 서버를 활용해 강의 데이터를 가져오기) 였다. MCP에 대한 개념을 확실히 알아둬야 하는 것도 좋고 요즘 핫한 ai 기능에 대한 경험이 있다는 것은 분명 신입 개발자로서 취업 전 해보기 좋은 프로...
개발자가 강의를 검색하고 추천받을 수 있는 온라인 학습 플랫폼 Devmountain! 이 글에서는 실제 구현 과정 중 내가 맡게 된 기능들(토스 API 연동, CI/CD, Docker, BraveSearch)에 대해서 구현 사항과 관련 내용들을 정리할 예정이다 왜
Brave Search & YouTube API Key 순환 구조 설계 문제 상황 YouTube 및 Brave Search API에는 하루 또는 분당 요청 한도가 존재함 기존 방식은 하나의 API 키만 .env나 설정 파일에 고정해 사용함 한도가 초과되면 API 요
이 글에서는 Devmountain에서 키를 발급 받아서 PRO 등급을 경험해보실 사용자 분들께 Brave Search API 키(Subscription Token)를 발급받는 과정을 단계별로 안내합니다.Brave Search API는 전 세계 웹 검색 결과를 손쉽게 활
재시도 / 예외 처리 기술목표: 네트워크 지연, 429 오류 등 발생 시 요청 유실 없이 재시도 및 복구문제 추천 기술 설명재시도 resilience4j-retry 예외 발생 시 자동 재시도 (@Retry 어노테이션 사용 가능)백오프 재시도 Spring Retry +
API 요청이 실패했을 때 아무런 안내 없이 사용자에게 500 에러를 던지는 건 친절하지 않다.실제 요청한 사용자의 이메일로 실패 이유를 직접 안내하는 구조를 아래와 같이 구현했다.@AuthenticationPrincipal을 통해 로그인한 사용자의 이메일을 추출하고,
최근 많은 기업들이 클라우드로 전환하고 있다.하지만 완전히 퍼블릭 클라우드로 넘어가기도 어렵고,온프레미스(내부 서버)만 고수하기엔 유연성이 부족하다.특히 다음과 같은 상황에서는 단일 클라우드 구조가 한계를 가진다.기존 레거시 시스템과의 연계가 필수금융, 의료 등 민감