본문 바로가기
반응형

전체 글170

[Java] String + 연산 원리와 성능 비교 개발하던 중 갑자기 String의 + 연산이 어떻게 되는지 궁금해져 찾아봤다. String + 연산 동작원리, StringBuilder, StringBuffer와의 성능 차이에 대해 알아보자. String + 연산 동작원리 String의 +연산은 컴파일 타임에 new StringBuilder.append.toString으로 변환된다. 따라서 아래의 두 코드는 동일하다. String s1 = ""; for(int i=1; i 2023. 2. 8.
[OpenRoadmaps] 블로그 카테고리 Unique Constraint 오류 해결 Intro 웹사이트 개발 중 아래와 같이 카테고리가 생성되지 않는 버그가 발생했다. 찾아보니 다른 사용자가 같은 이름의 카테고리를 생성했을 경우 발생하는 문제로, @UniqueConstraint에 name과 client_id를 같이 묶어줬어야 했는데 name으로만 묶어줘서 발생한 것이었다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(uniqueConstraints = { @UniqueConstraint(name = "unique_category_name", columnNames = {"name"}), }) public class Category extends BaseTimeEntity { ... } columnNam.. 2023. 2. 6.
[OpenRoadmaps] 8. 블로그 글 작성, 글 뷰어 기능 개발 블로그 글 작성 기능 개발 Mantine의 Tiptap 기반 Rich Text Editor와 uiwjs의 React Markdown Editor 중 어떤걸 쓸지 고민 끝에 더 많은 기능을 지원하는 Mantine을 사용하기로 했다. 공식 문서를 보고 아래와 같이 Tiptap에서 지원하는 모든 기능을 툴바에 넣었다. Mantine에서 기능을 전부 지원해주기 때문에, 컴포넌트를 갖다 쓰는것만으로도 다양한 기능을 지원하는 편집기를 만들 수 있었다. 로드맵 항목에서 [이 주제로 글 작성하기] 버튼을 누를 시 해당 로드맵 항목을 주제로 글을 업로드하는 기능을 구현했다. 버튼 클릭 시 아래와 같이 현재 로드맵 ID를 파라미터로 넘겨주고, 포스트 작성 컴포넌트에서 받아오도록 작성했다. /blog/posts/new?ro.. 2023. 2. 5.
[OpenRoadmaps] 7. 로드맵 뷰어 기능 개발 Intro 이전에 로드맵 관련 API를 만들었는데, 로드맵 뷰어 기능을 개발하며 추천 / 로드맵 항목 공부 체크 기능이 들어가며 API에 추천 수, 추천 상태, 공부 완료가 추가되어야 했다. 기능을 구현하며 고민한게 2가지가 있다. 고민1: 추천 수 조회 방법 사용자가 중복 추천하지 못하도록 하거나 추천을 취소하기 위해 아래와 같이 Client - Roadmap 간의 매핑 테이블을 만들었다. 그런데 추천 수를 가져오려면 매번 테이블 전체를 읽어 추천의 개수를 세어야 하는데, 풀 스캔을 해야 하기 때문에 추천 수가 쌓이면 쌓일수록 성능이 떨어질 것 같았다. 매핑 테이블 없이 로드맵 테이블에 likes 컬럼 하나를 추가해 관리하면 count 쿼리를 날릴 필요 없이 추천 수를 바로 읽으면 되어 성능이 훨씬 낫.. 2023. 2. 5.
[Github] Github readme stats 사용중 Maximum retries exceeded 에러 뜰 때 Github readme stats 사용중 Maximum retries exceeded 에러 뜰 때 어느날 내 깃허브에 들어가보니 표시되어야할 스탯은 안보이고 아래와 같이 "Maximum retries exceeded" 라는 에러만 뜨기 시작했다. 에러 내용을 토대로 검색해보니 이미 나와 같은 현상을 겪고 있는 사람들이 질문을 올렸고, 아래 이슈에서 에러의 해결방법을 찾을 수 있었다. https://github.com/anuraghazra/github-readme-stats/issues/1471 위 이슈는 github-readme-stats의 제작자가 에러에 관해 직접 open 한것으로, 해당 Repository를 Fork해서 본인의 Vercel에 배포하면 해결된다고 한다. 아래 유튜브 링크에 더 자세한.. 2023. 1. 30.
[OpenRoadmaps] 6. 로드맵 에디터 기능 구현 Intro 백엔드 API 구현이 완료돼서 사용자가 로드맵을 만들고 업로드할 수 있는 에디터를 만들었다. 이 프로젝트를 하며 가장 구현하기 힘들었다. 소스코드는 Github에 업로드 되어있습니다. GitHub - DevJaewoo/OpenRoadmaps Contribute to DevJaewoo/OpenRoadmaps development by creating an account on GitHub. github.com UI 구성 편집기 UI는 아래와 같다. 로드맵 항목 리스트: 편집 영역의 로드맵 항목들을 확인하고 선택할 수 있다. 로드맵 편집 영역: 이 영역에서 로드맵을 만들 수 있다. 로드맵 편집 모드 선택: 아이콘을 선택해 편집 모드를 변경한다. 로드맵 편집 아이콘 클릭 이벤트를 수신하게 했고, up.. 2023. 1. 27.
[회고] 2022년 회고 보호되어 있는 글 입니다. 2023. 1. 12.
[OpenRoadmaps] 5. 로드맵 API 구현 및 테스트 Intro 로드맵 기능은 사용자가 로드맵 편집기를 통해 트리 형태로 자신만의 로드맵을 만들고, 다른 사람이 만든 로드맵을 보고, 로드맵의 각 항목을 따라 공부할 수 있게 해주는 기능이다. 프론트엔드에서 로드맵을 생성하고 조회하기 위해 백엔드에서 로드맵 관련 API를 만들었다. 구현한 API 목록은 다음과 같다. 로드맵 생성 로드맵 검색 로드맵 조회 로드맵 추천 로드맵 항목 공부 완료 구현한 코드를 일일이 설명하진 않을거고, 개발하면서 짚고 넘어가야 된다고 생각되는 것들을 정리해보도록 하겠다. 소스코드는 Github에 업로드 되어있습니다. GitHub - DevJaewoo/OpenRoadmaps Contribute to DevJaewoo/OpenRoadmaps development by creating a.. 2023. 1. 5.
[OpenRoadmaps] 4. 테스트 환경 구성 및 테스트 항목 Intro 클라이언트 기능을 구현했으니 테스트코드를 작성해야 한다. Entity, DTO, Repository, Service, Controller 항목을 테스트했으며, 각 항목별 사용한 기술은 아래와 같다. 공통: JUnit5, AssertJ Entity / DTO: - RepositoryTest: DataJpaTest ServiceTest: Mockito ControllerTest: RestAssured 테스트 항목 별로 무엇을, 어떻게 테스트했는지 정리해보도록 하겠다. Entity JUnit5의 jupiter보다 더 직관적인 테스트코드를 작성하게 해주는 AssertJ를 사용했다. Entity 테스트코드에서 테스트한 항목은 다음과 같다. 정적 팩토리 메서드 연관관계 편의 메서드 정적 팩토리 메서드 테.. 2023. 1. 5.
반응형