전체 글

우아한테크캠프 7기

나는 방금 우아한테크캠프 7기에서 2주를 보냈다.

글을 쓰기 전에 언제부터 우아한테크캠프와의 인연이 시작됐었는지 궁금하여 메일함을 뒤져봤는데 2024.4.3 우아한테크캠프 7기에 첫 지원을 했던 기록이 있었습니다. 그때까지만 해도 합격할 수 있을까 하는 생각은 하나도 하지 못했는데, 지금은 어느덧 교육을 시작한 지 2주라는 시간이 흘렀습니다.우테캠은 어떤 곳인가?지원할 때까지만 해도 우아한형제들에서 올린 공고를 제외하곤 정보가 거의 없었습니다. 백엔드 교육은 작년 6기가 처음이었고, 뽑는 인원도 20명 내외로 알고 있었기에 인터넷에선 몇 개 안 되는 후기 글밖에 없었습니다. 교육이 시작되고 2주가 지난 지금 당장 우테캠은 어떤 곳이냐고 물어본다면 주어진 짧은 요구사항 속에서 개개인의 저마다의 합리적인 이유를 가지고 미션을 해결하기 위해 고군분투하는 우아..

Spring/Debugging Spring

[Tomcat 디버깅 해보기] mapper.writeValue() 이후 response.setStatus()를 하면 안되는 이유

과거 개발 디코 채널에서 response.setStatus()를 적용했지만 응답이 무조건 200 OK로 내려진다는 이슈에 대한 질문이 있었습니다. (지금은 채널이 사라짐 ㅠ) 실제 테스트 해본 결과 정말 200으로밖에 응답이 내려지지 않았고, 그 이유에 대해서 간단히 디버깅해보고 설명해보고자 합니다. 예제 코드는 아래 저장소에서 확인할 수 있습니다! https://github.com/HiiWee/hiiwee-lab/tree/master/basic-spring-boot ✅ 문제 코드 및 실행 결과 문제 코드 아래 코드는 그때 상황을 발생시키기 위해 비슷하게 작성한 예시 코드입니다! BasicController @Slf4j @Controller public class BasicController { priv..

Java

[Java] Java Generic (2) - 타입 소거 및 제한 사항

지난 시간에는 제네릭의 종류와, 사용법에 대해서 알아봤습니다. 이번시간에는 제네릭에 대해 컴파일러가 수행하는 타입 소거와, 공식문서에서 제안하는 제네릭 사용시 제안 사항에 대해서 알아보겠습니다. ✅ Type Erasure(타입 소거) 타입 소거는 제네릭의 사용 방식이라기 보단 컴파일러가 제네릭을 대하는 방식이라고 생각할 수 있습니다. 제네릭은 컴파일시 엄격한 유형 검사를 제공합니다. 자바 컴파일러는 제네릭 구현을 위해 Type Erasure 기능을 적용합니다. 타입 소거에 대한 규칙은 다음과 같습니다. 제네릭 타입의 모든 타입 매개변수를 해당 경계 혹은 Object 타입으로 교체합니다. 제네릭 타입을 제거한 후 타입이 일치하지 않는다면 타입 캐스팅을 합니다. 확장된 제네릭 타입의 다형성을 보존하기 위해 ..

Java

[Java] Java Generic (1) - 기본적인 제네릭의 사용!

제네릭은 익숙하듯 하다가도, 시간이 지나면 내가 제대로 알고있나? 라는 생각이 들었던 부분이었습니다. 자바 뿐만 아니라 여러 언어에서도 타입에 대한 안정성을 보장하기 위해 제네릭을 차용해 사용하고 있습니다. 무백스 스터디를 진행하면서 공식문서와 레퍼런스를 통해 공부한 제네릭의 모든 내용을 정리해보려고 합니다!! ✅ 제네릭은 왜 사용할까? 컴파일 타임에 강력한 유형 검사를 할 수 있습니다. 자바 컴파일러는 제네릭을 사용한 코드가 type safety를 위반한다면 오류를 발생시킵니다. 형 변환을 제거할 수 있습니다. // 제네릭 사용 x List list = new ArrayList(); list.add("hello"); String s = (String) list.get(0); // 제네릭 사용 O Lis..

스터디/Spring Boot 스터디

[스터디2] 마무리!

JSCODE에서 진행했던 백엔드 프로젝트 클래스는 종료됐습니다! (아직 미션은 전부 구현하지 못했지만 스터디가 끝나서 회고록을 부랴부랴 작성합니다.. 남은 미션은 계속 진행할 예정입니다. ㅠㅠ!) 스터디에 참여하기 전에 간단한 토이 프로젝트를 만들고 있었습니다. 사실 예전부터 만들어 오던 것이었기에 스터디에 참여하게 되면 또다시 프로젝트의 기한이 늘어날 것 같아 참여할지 말지에 대한 고민이 많았습니다. 결과적으로는 참여하길 정말 잘했다는 생각입니다. ㅎ 아쉽다 아쉬워.. 스터디를 진행하면서 정말 열심히 했다고 자부할 수 있지만, 그런데도 아쉬운 부분이 조금 있습니다. 첫 번째로는 시간 약속을 지키지 못한 부분이 컸습니다. 미션 자체는 어렵지 않았으나, 미션을 진행하기 위해서 먼저 공부를 하거나, 혹은 현..

스터디/Spring Boot 스터디

[스터디2] 테스트 리팩토링 및 1:N, N:M관계의 추가 (5회차)

5회차 미션은 1:N 관계와 N:M관계에 대한 새로운 도메인의 추가 및 요구사항이 추가됐습니다. 또한 리소스를 조회하는 로직이 아닌 저장, 수정, 삭제하는 부분에 대해서 사용자의 로그인 및 인증/인가 작업이 필요했습니다. 이제는 익명게시판이 아니라 실명게시판이 됐습니다 ㅎㅎ 설명하지 않은 모든 코드는 다음 PR에 있습니다! https://github.com/JSCODE-EDU/project-class-HiiWee/pull/12 ✅ 추가된 요구사항에 따른 ERD 변화 회원과 댓글, 게시글과 댓글은 모두 1:N의 연관관계를 맺습니다. 1명 이상의 회원은 1개 이상의 게시글을 좋아요할 수 있으므로, 이는 N:M관계가 됩니다. N:M관계를 표현할 수 도 있지만, 편의를 위해 중간 테이블인 POST_LIKE 테이..

HiiWee
HiiWee's Devlog