분류 전체보기

개요 이번에도 멘토링 프로젝트 개발을 하며 마주친 이슈입니다. 이번에는 스프링 프로젝트를 여러 번 하면서 별로 겪지 않았었지만, 프로젝트를 오랜만에 하다 보니 접하게 된 실수에 가까웠습니다. 그럼에도 다신 같은 실수를 하지 않기 위해 공유해보려 합니다! 문제 상황 어쩌면 순수 자바로 개발하다가 스프링으로 넘어갈 때 한 번쯤은 접하셨을 실수였을 것이라고 생각이 듭니다. 글 (Board) 쓰기 코드를 작성하며, 글 작성에 사용되는 요청 dto는 아래처럼 레코드로 작성했었습니다. (응답 dto는 여기에 id도 추가했습니다.) public record BoardCreateRequest(String title, String content) { } 그리고 생성 코드는 아래처럼 작성했었습니다. @PostMapping..
문제 발생 전학교 선배 분께 좋은 기회로 스프링에 대해 멘토링을 받을 수 있게 되어, 멘토링 과제로 간단한 게시판부터 만들어보고 있었습니다.문제 발생게시글 (Board)에 대한 리포지토리를 작성하던 도중, 순환 참조 이슈가 발생했습니다. 저는 게시글에 관련된 리포지토리의 구현체들을 여러 개로 두고 싶어, 완전히 추상화된 인터페이스인 BoardRepository를 만들고, 스프링 데이터 JPA 인터페이스로 BoardJpaRepository를 만들었었습니다. 그리고 스프링 데이터 환경에서 BoardRepository를 구현하는 BoardJpaRepositoryImpl을 만들었습니다. 즉, 코드로 나타내면 다음과 같습니다. public interface BoardRepository { Long save(fin..
· 자료구조
안녕하세요 dev_writer입니다. 그간 알고리즘을 공부하며 세그먼트 트리에 대해 정리하였고, 이를 다른 분들도 쉽게 이해하실 수 있도록 문제에 설명을 덧붙이는 식으로 PDF를 만들었습니다! 앞으로 자료구조와 알고리즘은 블로그에 글로 작성하기보다는 이렇게 PDF 형태로 만들 계획입니다. 틀린 사항 등이 있다면 댓글 남겨주시면 바로 수정하겠습니다! 원래는 알고리즘, 자료구조의 난이도 순으로 정리하려 했으나 그때그때 작성하는 게 더 좋겠다는 생각이 들어 비교적 어려운 알고리즘인 세그먼트 트리부터 작성해 봤습니다 :) 많은 도움 되시길 바랍니다!
0과 1로 숫자를 표현하는 방법 정보 단위 먼저 컴퓨터 안에서 흘러가는 데이터에 대해 알기 위해서는, 컴퓨터가 어떤 단위로 정보를 사용하는지 알아야 합니다. 컴퓨터에서는 가장 작은 정보 단위로 비트 (bit)를 가지고 있습니다. 비트는 쉽게 말하면 0과 1을 표현하는 가장 작은 정보 단위입니다. 1 비트가 0과 1을 표현할 수 있으니, n비트는 2^n 가지의 정보를 표현할 수 있음을 이끌어 낼 수 있습니다. 프로그램은 수많은 비트로 이루어져 있으나, 프로그램의 크기를 말할 때는 비트보다 더 큰 단위 (바이트, 킬로바이트, 메가바이트, 기가바이트..)를 사용합니다. 1바이트 (1byte) 8비트 (8bit) 1킬로바이트 (1kB) 1,000 바이트 (1,000 byte) 1메가바이트 (1MB) 1,000 ..
컴퓨터 구조를 알아야 하는 이유 좋은 개발자가 되기 위해서는 프로그래밍 언어의 문법과 함께 컴퓨터의 근간 (컴퓨터 구조, 운영체제)을 알아야 합니다. 이를 알게 된다면 문제 해결 능력 향상과 성능, 용량, 비용을 고려한 개발을 할 수 있게 됩니다. 문제 해결 능력 향상 개발을 하다 보면, 자신이 개발했던 환경에서는 문제가 없었으나 실제로 배포했을 때 문제가 생기는 상황이 종종 발생하곤 합니다. 심지어 컴파일 에러가 아닌데도 발생하기 때문에, 더 어렵게 느껴지기도 합니다. 이는 문법상의 문제가 아니라, 그를 넘은 영역의 문제입니다. 좋은 개발자가 되기 위해서는 컴퓨터 내부를 뜯어볼 줄 알아야 합니다. 그렇게 한다면 컴퓨터를 미지의 대상에서 분석의 대상으로 바라볼 수 있게 될 수 있기 때문입니다. 또한, 기..
· 💬 회고
제목에서 보시다시피, 아쉽게도 우아한테크코스 6기에 1차 불합격되어 최종 불합격 처리가 되었습니다. 이번 학기는 들이부었던 노력에 비해 매우 낮은 성과를 얻었는데, 앞으로의 성장에 있어 새롭게 마인드를 정리해 볼 겸 회고를 작성해보려 합니다. 우아한테크코스 불합격 다른 블로거 분들이 우아한테크코스 합격 글을 올리시는 것들을 보며, 저 또한 합격 메일을 받을 수 있도록 미련 없이, 후회 없이 이번 학기에는 우아한테크코스에만 집중해 보자는 결심을 학기 초부터 했었습니다. 하지만 위에서 작성했듯이 아래처럼 1차 심사에서 불합격이라는 결과를 얻었습니다. 프리코스를 진행하면서 평소에 두렵기만 했던 JUnit에 대해 깊게 파보고, 왜 존재하는지 잘 몰랐던 Enum에 대해서 깊이 탐구해 보게 되어 이 점을 성장한 점..
어느덧 프리코스의 마지막 미션이 주어졌습니다. 코수타 (코치와의 수다타임) 때 포비 님과 코치님들께서 말씀해 주셨듯이 쉽게 풀리지는 않았었습니다. 객체지향의 의미를 다시 생각하자. (현실 세계 반영 주의) 그동안 객체지향의 사실과 오해 책을 읽으며 블로그에도 기록했었는데요, 책에서는 다음과 같은 내용이 나옵니다. 객체지향이 단순한 현실 세계의 모방이 아닌 이유 중 하나는 현실 속에서 수동적인 존재가 객체지향 세계에서는 능동적인 존재가 될 수 있기 때문이다. 이는 객체를 의인화 (anthropomorphism) 하였기 때문이다. 즉, 진정한 객체지향을 구축하기 위해서 주의할 점은 현실 세계를 그대로 옮기는 행위는 하면 안 된다는 것입니다. 그러나 저는 날짜 (Day)와 주문 (Orders)를 만든 다음, ..
이 내용은 코드 리뷰 스터디를 했던 당시 벨로그에 작성했었던 내용입니다. Getter와 Setter 흔히 클래스가 가지고 있는 필드값들을 가져오거나 설정할 때 쓰이는 메서드들을 각각 Getter, Setter 메서드라 합니다. 또는 접근 제어자라고 하기도 합니다. public class Car { private static final int START_DISTANCE = 0; private static final int ACCELERATE_MINIMUM_VALUE = 4; private static final int ACCELERATE_MAXIMUM_VALUE = 9; private final Name name; private int distance; private Car(final Name name, ..
이번에는 처음 해 보는 문제였으나, 나름 추측했던 (?) 문제였던 로또 문제였습니다. Enum에 대해 더 깊은 관찰과 고민을 하게 됨 1주 차 때 이펙티브 자바를 보며 공용 상수는 Enum으로 관리하는 것이 좋을 것 같다는 글을 썼었는데요, 이번 미션에서는 아예 요구사항으로 Java Enum을 적용하는 게 있었습니다! 그래서 이펙티브 자바에서 Enum에 대해 미처 알지 못했던 부분들을 읽거나, 다른 자료를 더 찾아보곤 하였습니다. 언제 Enum을 쓰고 언제 private static final을 써야 할까? (feat. 응집도) 1주 차 때 작성된 글을 보면, 객체에 private 하게 사용되는 상수는 후자 방식을 쓰고, 그렇지 않다면 Enum을 통해 관리하도록 하는 게 좋다고 했었는데요. 아쉬운 점은 ..
서문 마틴 파울러의 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점 개념 관점 (Conceptual Perspective): 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현 도메인 (domain): 사용자들이 관심을 가지고 있는 특정 분야나 주제 명세 관점 (Specification Perspective): 소프트웨어 안에서 살아 숨 쉬는 객체들의 책임에 초점을 맞춤 객체의 인터페이스 (interface)를 바라본다. 구현 관점 (Implementation Perspective): 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성 위 관점들이 순서대로 개발되는 게 아니라, 클래스에서 이 관점들이 모두 관찰될 수 있도록 작성해야 한다. 커피 전문점 도메인 커피 전문점 도메인을 정의해 ..
dev_writer
'분류 전체보기' 카테고리의 글 목록 (3 Page)