🏁 서론이번에는 초간단 애플리케이션인 자동차 경주를 구현해 보았다. 총 4단계에 걸쳐 요구사항에 맞게 점진적으로 개발하고 리팩토링을 진행하였다. 이전에 진행한 계산기 프로젝트보다 난이도가 올라갔고, 특히 설계와 객체 분리에 대한 고민이 많았다. 그동안의 프로젝트는 ‘일단 동작하게 만드는 것’에 급급해 설계적인 부분에 깊이 다가가지 못했다는 점을 이번 스터디를 통해 확실히 느꼈다. 특히 계산기 프로젝트는 학습 순서나 리팩토링 타이밍이 다소 뒤죽박죽이었다면, 이번 미션은 단계별 학습 → 구현 → 리팩토링의 사이클을 비교적 체계적으로 따라가 보려 노력했다. 덕분에 마지막 리팩토링에서는 코드 구조를 전반적으로 개선하면서도 여러 시행착오를 겪었고, 그 과정을 통해 많은 걸 배울 수 있었다. 📚 이번 주 학..
전체 글
기록 겸 공부 블로그입니다. 문제를 해결해 나아가는 과정을 기록하고 있어요. 잘못된 부분이 있으면 자유롭게 댓글 달아 주세요👍
🏁 서론요즘 취준만 하느라 뭔가 흐리멍덩하게 시간을 보내고 있다는 느낌이 들어서, 의식적으로 개발 리듬을 다시 잡고자 스터디를 시작했다. 이번에 참여하게 된 건 초록 스터디라는 곳인데, 단순히 과제를 제출하는 게 아니라 PR을 올리고, 테스트 코드를 작성하고, 클린 코드와 설계에 대한 피드백까지 주고받는 구조라는 점이 마음에 들어서 신청하게 되었다. https://cho-log.notion.site/1c81a5419760805fb2e9d99d53ab73f2 🌿 초록해듀오 | 함께 배우고 성장하는 개발 스터디 | Notion초록해듀오란?cho-log.notion.site 📚 이번 주 학습 내용https://github.com/izzy80/java-calculator-unit-playground/tr..
📢 본 내용은 원티드 프리온보딩 백엔드 챌린지 1월를 정리한 내용입니다. 1. 매니지드 & 서버리스 비교 - 매니지드 : 관리는 AWS가 해주지만 리소스는 계속 실행 중- 서버리스 : 필요할 때만 실행되고, 실행한 만큼만 과금 리소스의 실행 상태(항시 실행 vs 필요시만 실행)용량 관리 방식 (직접 선택 vs 자동 관리)과금 방식 (시간 단위 vs 사용량 단위) 서버리스 단점콜드스타트(ColdStart) : 추운 상태에서 시작함cold : pc가 꺼진 상태hot : 사용 될 때 잠깐 켜져서 사용될 때까지 그래도 활성화된 상태warm : 아 이제 사용 안 하나 보다~ 하는 상태 2. Aurora Serverless - AWS에서 자체 개발한 RDS- PostgreSQL, MySQL 호환 가능- 자동 ..

📢 본 내용은 원티드 프리온보딩 백엔드 챌린지 1월를 정리한 내용입니다. 1. IDC (Internet Data Center)- 네트워크, 전력, 냉방, 보안- 통신사, 대형 SI, 네이버, 카카오 등이 운영 2. VPC(Virtual Private Cloud) 나만의 사설 클라우드 공간이라고 생각해도 된다 - aws 내 격리된 가상 네트워크- 사용자 정의 IP 주소 범위- 보통 리전에 들어가보면 기본 vpc가 하나씩 있다. (사용하지 않는 것을 추천) 3. AWS Region / 가용영역3.1. AWS Region - AWS의 물리적 데이터센터 군집- 전 세계 주요 지역에 분산된 인프라- Region에 따라 지연 시간(Latency) , 법적 규제(Data Residency) , 제공 서비스 범위, ..
📢 본 내용은 원티드 프리온보딩 백엔드 챌린지 1월를 정리한 내용입니다. 1. Root vs IAM1.1. Root- 최초 생성시 입력한 이메일 주소 Root 계정- 모든 AWS 서비스와 리소스에 대한 완전한 접근 권한 보유- 권한을 제한할 수 없음- AWS 계정당 단 하나만 존재 1.2. IAM (Identity and Access Management) - 관리자가 정의한 특정 권한만 가짐- 필요에 따라 권한 추가/삭제 가능- 팀원별로 독립적인 계정 발급 가능- 그룹과 역할을 통한 체계적인 궈한 관리 가능 2. S3 / Cloudfront2.1. S3 (Simple Storage Service)- 무제한 확장 가능한 객체 스토리지- 99.999999999% 데이터 내구성(SLA) - 정적 웹 호스팅 ..
프로젝트에서 조회수 기능을 구현해야 했다.처음에는 단순하게 조회수 컬럼을 게시판 테이블에 추가하여, 게시글을 조회할 때마다 조회수를 1씩 증가시키는 방식으로 설계했다. 예를 들면 다음과 같은 구조다. @Entitypublic class Article { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String content; private int views; public void increaseViews() { this.views += 1; }}그래서 GET 요청이 올 때마다 조회수를 단순히 증가시키는 접근으로..

계층 구조에 대한 DB를 찾다가 알게 된 구조흔히 사용하는 인접리스트가 있는데 DB에서 자식만 가져오는 것이 아닌 자손까지 가져온다고 했을 때, 계층이 너무 깊으면 self join을 많이해서 쿼리 구조가 복잡하다는 단점이 있다. 그래서 다른 방법을 찾다가 여기까지 왔다. 자기 자신을 포함해서 자식 노드를 모두 저장하는 DB 형태 예를 들어 계층구조가 이런 형태면 DB형태가 ancestor, descendant, length가 저장이 된다. length는 우리가 dfs를 풀 때 depth를 사용하는데 이와 같다고 생각하면 될 것 같다. 그래서 만약 내가 조상일 때 ancestor=1일때라는 조건을 걸어서 select를 하면 되니까 자손을 모두 가져오기도 편하고자식을 가져올 때도 depth=1이라는 조..

언제 발생?1:N, N:1, 양방향 관계 내 경우는?나의 경우 user, userinfo를 1:1 양방향으로 해놓았는데 여기서 문제 발생 문제 해결 방법1. @JsonManagedReference와 @JsonBackReference를 사용@JsonManagedReference를 부모 클래스, 연관 관계 주인의 반대편@JsonBackReference를 자식 클래스, 연관 관계의 주인(외래 키가 있는 곳)에 붙인다. 2. DTO를 객체를 만들어서 반환한다. -> 선택!-> 이걸로 시도해서 해결-> 사실 DTO를 만들어야 해야하는데, 비즈니스 로직 같은 복잡한 코드는 없고 순수하게 전달해야할 때 사용한다~라고만 알고 있었다. 개념만 알고 있었는데 실제 사용해야하는 이유를 알게 되었다.
⏰문제https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. - 두 사람 사이에 더 많은 선물을 준 사람이 선물을 받음 - 선물 기록이 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 받음 - 선물..

🐛문제Test에 아래와 같은 코드를 작성했다. @DisplayName("updateArticle : 블로그 글 수정에 성공한다.")@Testpublic void updateArticle() throws Exception {} 원래라면 실행탭에 `updateArticle : 블로그 글 수정에 성공한다.`라는 글이 떠야 하는데 아래 사진과 같이 아무것도 뜨지 않았다! 🛠️ 해결 방법1. `File` -> `Settings` -> `Build, Execution, Deployment` -> `Build Tools` -> `Gradle`2. `Gradle Projects` -> `Run tests using`에서 기존에 `Gradle` -> `IntelliJ IDEA`로 바꾼다. 수정했더니 아래와 같..