전체 글

😼 Github : https://github.com/Mingyum-Kim
우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 방학 회고 & 레벨 2 목표

2024년 4월 8일 ~ 4월 15일 조금 뒤늦은 레벨1 첫 방학 회고를 쓰려고 한다. 첫 방학이니만큼 방학 전부터 크루들끼리 방학 때 뭐해?라는 말을 많이 주고 받았다. 나는 방학 때 하고 싶었던 것 중 제일 큰 것은 `레벨 1 때 놓친 키워드들을 다시 제대로 배우는 것`이다. 레벨 1 마지막 쯤에 돌아보기 활동을 하면서 내가 아는 것을 백지에 쭉 써보았었는데, 내가 깊게 학습하지 않았다는 것을 깨달았다. 키워드를 나열할 뿐 깊이 있게 서술하지 못하였고, 레벨 1 동안 미션 코드를 잘 작성하는 것에만 매몰되어 학습 키워드를 많이 놓쳤던 것 같았다. 그래서 이번 방학 때는 적당히 놀고 꾸준히 공부하기를 목표로 삼았다. 방학이 다 지난 지금 시점에서 방학 때 무엇을 했는 지 적어보자면 ... 레벨1 브라운..

우아한테크코스/레벨2

[Spring] 문자열 경로를 반환하는 API를 호출하면 웹 페이지가 렌더링되는 이유는 뭘까? (feat. ViewResolver)

💬 정적 페이지와 동적 페이지 정적 페이지 src/resources/static/admin/index.html 라는 파일이 있다고 하자. 이 html 코드를 특정 URL을 입력했을 때 웹 페이지로 띄우고 싶다. 이 때 스프링에서 지원하는 정적 컨텐츠 기능을 사용할 수 있다. 아래와 같이 html 파일 경로를 포함하여 문자열을 반환하고 실행하였다. localhost:8080/admin을 주소창에 입력하면 내가 만든 index.html 파일이 뜨는 것을 확인할 수 있다. @GetMapping("/admin") public String getAdminPage() { return "/admin/index"; } 이렇게 Static Resource의 경로만 반환했을 뿐인데 html이 웹 페이지로 렌더링되었다. 📝..

우아한테크코스/레벨2

[Spring] @ResponseBody와 ResponseEntity의 차이점과 동작 원리

스프링 어플리케이션을 개발하다보면 @ResponseBody나 ResponseEntity와 같이 응답과 관련한 스프링 프레임워크에 정의된 요소들을 사용하게 된다. 🔥 역할 @ResponseBody와 ResponseEntity의 공통적인 역할은 응답 객체를 JSON으로 직렬화한다는 것이다. 코드를 통해 알아보자. 📝 직렬화란? 객체를 직렬화한다는 것은 객체를 송수신이 가능한 형태로 변형하는 것이다. 네트워크 상에서는 Byte 단위로 데이터를 전달하는데, 서버와 클라이언트의 데이터 통신을 위해 객체를 직렬화하는 과정이 필요하다. @ResponseBody @GetMapping("/reservations") public List getReservations() { return adminRepository.getR..

우아한테크코스/레벨1

[디자인 패턴] 상태 패턴 (State Pattern) 이란? 적용해보며 느낀 장점과 단점

상태마저 객체로 만들어보자라는 아이디어에서 프로그램을 조금 더 객체 지향적으로 구현하기 위해 상태 패턴을 사용하였다. (feat. 네오) 이번 포스팅에서는 상태 패턴이 무엇인지, 그리고 프로그램에 상태 패턴을 적용한 예시를 보여주고 어떠한 장점과 단점이 있는 지 분석해보려고 한다. 상태 패턴이란? 상태 패턴(State Pattern)은 객체가 상태에 따라 행위를 다르게 할 때, 상태를 객체화하여 이러한 행위를 상태 객체에게 위임하는 디자인 패턴이다. 객체의 상태가 클래스로 구현되고, 상태에 따른 행위가 클래스 내 메서드로 구현된다. 아주 간단한 예시로 상태 패턴을 이해해보자. public interface YoutubeState { YoutubeState start(); YoutubeState stop(..

우아한테크코스/레벨1

[OOP] 객체 분리의 필요성? 객체에게 적절한 책임을 부여해야 하는 이유

0️⃣ 객체 분리의 필요성 객체 분리하기 귀찮은데 메인 함수에 때려 넣으면 안되나? 실제로 내가 우아한테크코스에 들어오기 전에 사람들이 하라는 객체 분리를 하면서 떠올린 생각이다. 교내 수업 중 객체지향 프로그래밍에서 OOP에 대한 기본적인 개념들을 많이 배웠지만, 그것들은 하나의 수단일 뿐 실제로 프로그램을 만들 때 어떻게 적용해야 할지 잘 몰랐었다. 그리고 메인 함수에서 다 구현하면 요구사항은 충분히 동작하는데, 왜 굳이 객체를 분리하고 클래스의 양을 늘려야 하는지 이해하지 못했다. 그러던 내가 그 필요성을 인지하게 된 건 프리코스 1주차였다. 처음으로 순수 자바를 사용하여 프레임워크의 도움 없이 백지장에서 요구사항을 만족시키기 위한 코드를 작성하였다. 처음에는 스파게티 코드를 작성했다. 요구사항을 ..

우아한테크코스/레벨1

[OOP] 값 객체(VO, Value Object)란? 원시값 포장과 값 객체의 차이점은?

사다리 미션을 진행하면서 사다리의 높이를 뜻하는 Height라는 객체를 만들었다. public class Height { private static final int UPPER_BOUND = 12; private final int value; ... 사다리의 높이를 의미하는 value라는 원시값을 포장하는 용도로 객체를 설계했고, Height 클래스는 int를 사용하는 대신 Height라는 의미있는 타입 명칭을 사용하는 의도로 만들었다. 이에 대해 코드 리뷰를 받았는데, 원시값 포장과 값 객체의 차이점을 공부해보라는 피드백이 있었다. 값 객체는 무엇일까? 그리고 원시값 포장과 다르게 어떤 상황에서 값 객체가 사용되는걸까? 원시값 포장 int, String, double 등 원시 형태의 변수를 그대로 사용..

카테고리 없음

[회고] 우아한테크코스 8주차 회고

2024년 4월 1일 ~ 4월 5일 레벨 1을 마무리하는 한 주를 보냈다. 레벨 1은 새로운 사람들과 새로운 장소에 적응하고, 미션 프로세스를 적응하는 시간들이었다. 그리고 그 와중에 나만의 라이프 스타일을 찾으려 노력한 두 달이었다. 이번 주는 뭔가 해내야한다는 생각 없이 체스 미션을 마무리하고, 레벨 1을 돌아보는 활동에 집중하는 것으로 하였다. 시간을 내어 우아한테크코스의 추천 도서인 “유연함의 힘”을 읽기도 했다. 코치님들에게 전해들으면서 나는 ‘올바른 마인드셋’에 대해 마음 속으로 그렸었다. 개인적인 생각이 가미되어 마인드셋에 대해 정의내리다보니, 포비와 코치님들이 말하는 것과 다르게 이해한 부분이 있었다. 이를 책을 읽음으로써 깨닫게 되었고, 그 핵심 키워드는 실패를 받아들이는 자세에 있다는 ..

우아한테크코스/레벨1

[회고] 우아한테크코스 레벨 1 회고 : 성장에 대하여

🎈 레벨 1 돌아보기 방학식을 하루 앞두고 레벨 1 돌아보기활동을 하였다. ✨ 레벨 1 동안 학습한 내용을 백지에 써보았는데 두 가지 의미로 놀랐다. 첫 번째는 내가 이렇게 배운 게 많았구나 이고, 두 번째는 내가 이렇게 많은 걸 몰랐구나 이다. ㅋㅋㅋ 미션을 진행하는 모든 순간에 항상 노션을 키고 기록을 해왔다. 그때 그때 떠오르는 기술들, 모르겠는 것들을 다 정리했었다. 하지만 시간에 쫓겨 얕게 배우고 바로 코드에 적용해보기만 했었기에 깊게 공부하지 않았던 것 같다. 만약 면접 질문에서 이 질문이 나오고, 꼬리 질문 2-3개가 반복되면 나는 깊게 대답할 수 있을까? 애매하게 아는 것은 모르는 것보다 위험하지 않을까? 라는 생각을 했다. 👶 나는 성장하긴 한걸까? 레벨 1 미션들을 수행하면서 뭔가 굉장..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 7주차 회고

2024년 3월 25일 ~ 3월 29일 Keep (잘한 것) 우아한테크코스 내에서 얼굴을 알고 있지만 인사하거나 이야기해보지 않았던 여러 크루들에게 먼저 인사하고 말을 걸어보았다. 감자, 위브, 조이썬, 켬미 등등등 .. ☺ 어려울 것이 하나도 없었고 얼굴만 알고 닉네임을 몰랐던 크루들에 대해서 알아갈 수 있었다. 운동을 꾸준히 잘 하고, 건강한 식사도 양을 잘 조절하여 챙겨 먹었다. 매일 정해진 시간 만큼의 집중을 잘 하였다. 덕분에 미션을 다 구현했을 뿐 아니라 제이미와의 피드백을 나누는 과정에서도 최선을 다할 수 있었다. Problem (아쉬운 것) 주말에는 아주 살짝 번아웃이 왔다. 그 이유는 완벽하기 위해 최선을 다한 코드, 최선을 다한 피드백이라는 것에 너무 집착하고 스스로 몰아가서인 것 같다..

MINGYUM
코딩하는 겸