전체 글 33

[우테코 7기] 방탈출 예약 관리 회고

레벨2 시작 🍬레벨1에서 자바를 배우고 레벨2에는 스프링을 배운다는 것을 알고만 있었다.아주 예전에 학회에서 스프링 스터디를 한다고 김영한 강사님 입문 강의를 찍먹만 해봤지, 웹 애플리케이션을 개발하고 배포해본 경험은 아예 없었다.앞으로의 레벨2가 걱정됐지만 그렇다고 해서 방학때 스프링 공부를 한 건 아니었다. 😊 레벨2의 스프링 강사님은 솔라!레벨2 OT시간에 솔라가 "레벨2 커리큘럼은 스프링을 처음 학습하는 사람을 대상으로 설계되었다!"라는 것을 알려주셨다.불안해 할 시간에 공부나 더 열심히 해야겠다는 생각이 들었다. 공식 문서 참고, 영어 번역 🔠검색 키워드 : 검색어 + docs 모르는 거 생겼을 때1 공식문서 찾아보기2 지피티한테 물어보기 지금까지는 개인블로그를 많이 참고했는데,앞으로 영어..

[우테코 7기] 레벨1 마무리 짓기 - 첫 레벨 인터뷰를 돌아보며

🚨우아한 테크코스 7기 백엔드 레벨1 회고록 (2025.02.11 ~ 2025.04.04)🚨 첫 OT가 엊그제 같은데, 벌써 레벨1이 끝나고 방학도 끝나간다...방학이 끝나기 전에 얼른 회고를 써야겠다는 생각에 노트북을 켰다. 미션에 대한 각 회고는 작성해두었기 때문에 이번 회고는 레벨 인터뷰에 대한 회고를 작성해보려고 한다. 레벨 인터뷰란?🌱우테코에서는 매 레벨이 끝나면 '레벨 인터뷰'라는 것을 진행한다.조별로 각 레벨에서 본인이 학습한 내용을 바탕으로 A4 분량의 정리본을 제출하면, 매칭된 코치와 인터뷰 방식으로 질문 답변을 하는 활동이다.면접 대비? 정도로 보면 될 것 같다. 그룹당 5-6명 정도로 진행되고, 1명의 인터뷰어, 3명의 인터뷰이, 2-3명의 옵저버와 진행된다.총 2일간 진행되었고..

[우테코 7기] 장기 미션 회고(상태 패턴 State Pattern, 추상클래스, 인터페이스)

장기 미션레벨1의 마지막 미션은 장기를 구현하는 것이었다. 당장 전년도까지 레벨1의 마지막 미션은 전통적으로 체스여서 당연히 체스일 줄 알았다... 장기는 태어나서 둬본 적도 없어서 데일리미팅에서 급하게 장기 룰을 익혔다. 우리 조는 대체 뭘위해 체스를 열심히 했는가...이번 페어는 (놀랍게도) 같은 데일리 조인 메이였다! 상태 패턴(State Pattern)지난번 블랙잭 미션에서 네오의 수업을 듣고 상태 패턴을 꼭 다음 미션에 적용해야겠다고 생각했었다. 장기는 당연하지만 기물마다 움직이는 방법이 달라야 한다.그리고 연속적으로 움직이는 차, 포 같은 기물이 있고, 기물을 하나 뛰어넘어서 이동해야 하는 포 같은 기물이 있다. 기물이라는 객체이지만 장기판 위에서 움직일 수 있는 방법이 다르다.따라서 기물들 ..

[우테코 7기] 블랙잭 미션 회고(함수형 인터페이스, 상태 패턴 State Pattern, 불변 클래스)

블랙잭 미션레벨1의 세 번째 미션은 블랙잭 게임을 구현하는 것이었다. 블랙잭은 딜러와 플레이어가 겨루는 카드게임이다. step1에서는 플레이어 이름을 입력받아 게임을 진행하고, 딜러와 플레이어의 승패를 출력하는 것이 목표였다. step2에서는 베팅 기능이 추가되어 승패 결과에 따라 받는 상금까지 출력하는 것이 목표였다.이번 페어는 서프였다! step1구현 준비(?)블랙잭 게임을 한 번도 안 해봐서 룰을 몰랐다. 우리 조에서 같이 블랙잭 카드 게임을 직접 해보자는 얘기가 나와서 거의 이틀 동안 블랙잭 게임을 같이 하면서 룰을 익히는 시간을 가졌다... (논게 아니라 도메인 공부를 한 것이다.) (사실 넘 재밌었다.) 그리고 나중에 포수타에서 들었는데, 이렇게 미션 하기 전에 실제로 그 미션에 대해 공부해 ..

[Java] 제네릭(Generic)을 알아보자(불공변, 와일드카드)

용어정리클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 이를 제네릭 클래스 혹은 제네릭 인터페이스라고 한다.public class ClassName { ... } // 제네릭 클래스public interface InterfaceName { ... } // 제네릭 인터페이스 List와 같이 다양한 종류의 데이터를 관리하는 경우 데이터의 타입을 특정 타입으로 고정할 수 있다. 제네릭을 사용하지 않았을 경우ArrayList values = new ArrayList();values.add("우테코");values.add(100);values.add(new Position(7, 25));String first = (String) values.get(0);int second = (int) values.get(1..

Study/Java 2025.03.14

[우테코 7기] 출석 미션 회고(TDD)

출석 미션📅우테코 레벨1의 두 번째 미션은 최종 코테였던 출석 미션이었다. (다시는 안 볼 줄 알았건만...)이번 미션의 키워드는 'TDD'였다. 코치님들이 이번 미션에서는 다른 거 생각 안 하고 TDD만 확실히 학습하라고 말씀하셔서 TDD 익히는데 시간을 많이 쏟았다.출석 미션 페어는 도기였다. Step1️⃣구현에 급급했던 step1네오의 수업이 큰 도움이 되었다.`막막하면 탑다운으로 시작하고 나중에 바텀업으로 바꿔도 된다. 방식은 왔다갔다 하기도 한다.``테스트를 먼저 구체적으로 작성하지 않는다. 수도코드로 먼저 작성하자.``객체의 필드값까지 구체적으로 정해둘 필요 없다. 큰 틀만 기억해두자.``TDD 그린 단계에서, 출석 추가 기능 구현하는 상황에서 AttendanceManager에서 시작을 했다..

[우테코 7기] 로또 미션 회고

첫 미션이었던 로또 미션🎫우테코에서의 첫 미션은 로또 미션이었다.첫 페어프로그래밍 경험이어서 많은 것이 서툴렀고, 심지어는 미션 제출 방법과 순서도 많이 헷갈렸다...step1과 step2로 이루어져 있고, step1은 페어와 함께 짝 프로그래밍으로 개발한다. 이후 리뷰어의 피드백을 받고, step2에서는 혼자 리팩토링을 진행한다. PR과 리뷰받기를 반복하고 리뷰어가 merge해주면 해당 미션이 끝나게 된다.나의 첫 페어프로그래밍은 헤일러와 함께 진행했다! Step1️⃣인터페이스의 사용주어진 요구사항을 분석하여 리드미부터 작성했다. TDD로 구현할지도 잠깐 고민했지만 TDD는 다음 미션때 확실히 공부하기로 헤일러와 합의를 보고 원래 하던 방식대로 도메인 설계를 해나갔다. 고민이 되었던 부분은 로또 머신..

[우테코 7기] 백엔드 1주차 회고

연극조랑 친해지기 👩‍👩‍👧‍👧첫 OT날 연극 조가 정해졌다! 그리고 레벨1에서의 코치는 리사 😆점심에 백소정가서 점심을 먹으며 연극조랑 친해지는 시간을 가졌다. 나 혼자만의 생각일지도 모르지만... 우리 연극조는 정말 분위기가 좋은 것 같다 ㅎㅎ 데일리미팅 🗣본격적으로 수요일부터 데일리미팅이 시작되었다.이틀 정도는 돌아가면서 자기소개(mbti, 취미ㅋㅋ)를 하고 질의응답을 하는 시간을 가졌다.팀원들의 닉네임도 몰랐는데 이 시간을 통해서 잘 알 수 있어서 좋았다.특히 목요일에는 리사가 재택근무 이슈로 돔푸가 데일리장을 맡아서 진행했는데,,, 라이어게임을 준비해와서 이 게임을 하면서 정말 많이 웃고 좀 친해졌던 것 같다😆 감사합니다 돔푸... 첫 로또 미션, 첫 페어프로그래밍 👯‍♂️수요일부..

[SpringBoot] Insomnia로 API 테스트하기, JPA 설정, 테이블 생성(Entity)

회원가입 기능을 구현하기 위해 Insomnia로 api테스트를 하려고 했다.http://localhost:8080/api/user/signup 주소로 post 요청을 보내니 이런 오류가 발생했다.org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [select m1_0.id,m1_0.intro,m1_0.join_date,m1_0.name,m1_0.nickname,m1_0.password,m1_0.profile_image_url from member m1_0 where m1_0.name=?] [Table 'box_it_db.member' doesn't exist] [n/a]; SQL [n/a..

Study/SpringBoot 2025.01.22

[Git] 팀 프로젝트 환경 구성 - 각자의 branch 파기

1. 커밋 작성자 식별$ git config --global user.email "이메일주소" 나는 이미 tmddus4671@gmail.com 으로 설정되어 있으므로 패스. 2. 브랜치 생성 후 전환$ git checkout -b feature/sy-signup-login 브랜치 이름은 컨벤션 맞추어 작성하는 것이 좋다./- 3. 원격 저장소에 생성된 브랜치 푸시$ git push origin feature/sy-signup-login 4. 생성한 브랜치(로컬)에서 파일 수정하고, main 브랜치(원격)를 pull 받고, 생성한 브랜치(원격)에 push$ git pull origin master ==> master 브랜치에서 달라진 내용이 있다면 가져오기$ git add --all ==>..

개발/Git 2025.01.16