본문 바로가기

전체 글65

[회고 #2] 24년 1월 회고 개요 월별 회고는 2022년 1년 정도 해본 적이 있고 작년에는 하다가 말았었는데, 지속적으로 발전하기 위해서는 월별 회고가 꼭 필요할 것 같아 이번 연도에도 월별 회고를 작성해보려 합니다. 1. 블로그 정착 (티스토리 - 벨로그 - 노션 - 벨로그 - 현재..) 첫 번째로 느끼는 것은 그동안 벨로그, 티스토리, 노션, 깃허브 리드미 등으로 명확히 잡지 않았던 블로그 플랫폼을 티스토리로 정착했다는 점입니다. 어느덧 이 블로그에 글들을 업로드한 지 세 달 정도 되었는데, 이 정도면 마지막 개발 블로그라고 봐도 되지 않을까 싶습니다. 물론 공부 기록의 대부분은 노션에 기록해두고 있는데, 티스토리에 바로 올리지 않고 노션에 기록하는 이유는 블로그로 작성할 내용들은 제 자신뿐 아니라 다른 분들에게도 이해하기 쉽.. 2024. 1. 31.
[Spring MVC] DTO를 사용하여 파라미터로 전달받을 때는 @RequestBody를 꼭 적용하자! 개요 이번에도 멘토링 프로젝트 개발을 하며 마주친 이슈입니다. 이번에는 스프링 프로젝트를 여러 번 하면서 별로 겪지 않았었지만, 프로젝트를 오랜만에 하다 보니 접하게 된 실수에 가까웠습니다. 그럼에도 다신 같은 실수를 하지 않기 위해 공유해보려 합니다! 문제 상황 어쩌면 순수 자바로 개발하다가 스프링으로 넘어갈 때 한 번쯤은 접하셨을 실수였을 것이라고 생각이 듭니다. 글 (Board) 쓰기 코드를 작성하며, 글 작성에 사용되는 요청 dto는 아래처럼 레코드로 작성했었습니다. (응답 dto는 여기에 id도 추가했습니다.) public record BoardCreateRequest(String title, String content) { } 그리고 생성 코드는 아래처럼 작성했었습니다. @PostMapping.. 2024. 1. 19.
[Spring Data JPA] 스프링 데이터 JPA 구현체를 작성할 때 주의할 점! (feat. 순환 참조) 문제 발생 전학교 선배 분께 좋은 기회로 스프링에 대해 멘토링을 받을 수 있게 되어, 멘토링 과제로 간단한 게시판부터 만들어보고 있었습니다.문제 발생게시글 (Board)에 대한 리포지토리를 작성하던 도중, 순환 참조 이슈가 발생했습니다. 저는 게시글에 관련된 리포지토리의 구현체들을 여러 개로 두고 싶어, 완전히 추상화된 인터페이스인 BoardRepository를 만들고, 스프링 데이터 JPA 인터페이스로 BoardJpaRepository를 만들었었습니다. 그리고 스프링 데이터 환경에서 BoardRepository를 구현하는 BoardJpaRepositoryImpl을 만들었습니다. 즉, 코드로 나타내면 다음과 같습니다. public interface BoardRepository { Long save(fin.. 2024. 1. 19.
[Algorithm & DS] 세그먼트 트리 (Segment Tree) 정리 자료 공유 안녕하세요 dev_writer입니다. 그간 알고리즘을 공부하며 세그먼트 트리에 대해 정리하였고, 이를 다른 분들도 쉽게 이해하실 수 있도록 문제에 설명을 덧붙이는 식으로 PDF를 만들었습니다! 앞으로 자료구조와 알고리즘은 블로그에 글로 작성하기보다는 이렇게 PDF 형태로 만들 계획입니다. 틀린 사항 등이 있다면 댓글 남겨주시면 바로 수정하겠습니다! 원래는 알고리즘, 자료구조의 난이도 순으로 정리하려 했으나 그때그때 작성하는 게 더 좋겠다는 생각이 들어 비교적 어려운 알고리즘인 세그먼트 트리부터 작성해 봤습니다 :) 많은 도움 되시길 바랍니다! 2024. 1. 5.
[혼공컴운] Ch02. 데이터 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 .. 2023. 12. 26.
[혼공컴운] Ch01. 컴퓨터 구조 시작하기 컴퓨터 구조를 알아야 하는 이유 좋은 개발자가 되기 위해서는 프로그래밍 언어의 문법과 함께 컴퓨터의 근간 (컴퓨터 구조, 운영체제)을 알아야 합니다. 이를 알게 된다면 문제 해결 능력 향상과 성능, 용량, 비용을 고려한 개발을 할 수 있게 됩니다. 문제 해결 능력 향상 개발을 하다 보면, 자신이 개발했던 환경에서는 문제가 없었으나 실제로 배포했을 때 문제가 생기는 상황이 종종 발생하곤 합니다. 심지어 컴파일 에러가 아닌데도 발생하기 때문에, 더 어렵게 느껴지기도 합니다. 이는 문법상의 문제가 아니라, 그를 넘은 영역의 문제입니다. 좋은 개발자가 되기 위해서는 컴퓨터 내부를 뜯어볼 줄 알아야 합니다. 그렇게 한다면 컴퓨터를 미지의 대상에서 분석의 대상으로 바라볼 수 있게 될 수 있기 때문입니다. 또한, 기.. 2023. 12. 21.