악마는 디테일에 있다는 말은 협상 격언등에서 사용되는 용어로 본래 뜻은 문제점이나 불가사의한 요소가 세부사항 속에 숨어있다는 의미의 속담입니다. 저는 이 말을 매우 좋아합니다. 우리는 개발할 때 모든 설계 구조에 대한 이유를 설명할 수 있도록 노력해야합니다. 끊임없이 고민하고 본질에 대해 파악할 수 있도록 노력해야 성장할 수 있다는 것을 많이 느끼는 것 같습니다. 길지 않은 개발 경력의 초반 프리랜서 활동을 하면서 다양한 외주를 받고 나름 일이라는 걸 하면서 스스로 꽤 잘하는 개발자다라고 착각했던 적이 있습니다. 당시에 클라이언트가 말하는 대부분의 기능을 구현하는데 문제가 없었고 그 과정에서 스스로 우물로 들어가지 않았나 생각을 많이합니다. 물론 그 기간 동안 엄청 열심히 개발을 하긴 했습니다. (fea..
1편에 이어 React에서 MVVM패턴을 사용하는 방법을 이어 진행하겠습니다. 1편 마지막에 Service 단에 Counter를 직접 들고 있는 형태의 구조가 나왔는데 실제로는 Repository를 이용해 모델 데이터를 관리하게 됩니다. 모델 데이터의 저장과 불러오기를 Repository를 통해 사용하며 Repository는 실제 API를 통해 데이터를 가져오는데도 역할을 하게 됩니다. 하지만 많은 실제 API를 통해 받아오는 데이터는 불규칙하며 페이지 별로 상이하기 때문에 DTO에 맞춘 여러 변형 객체를 여러개 소장하고 있어야 합니다. (GraphQL을 활용한다면 완전한 Repository를 구성할 수 있지 않을까라는 생각도 되네요) 1. Repository import Counter from "./c..
팀을 초기에 세팅할때 유닛 테스트 관련 컨벤션을 꾸리는데 여러 고민에 빠지게 됩니다.. 유닛테스트의 범위와 규모 TDD를 중심으로 할 것인가? 일반 유닛테스트와 통합테스트만을 중심으로 개발할 것인가? 여러 고민을 하게 됩니다. 해당 글은 이런 고민 속에서 테스트 커버리지를 어떤 방식으로 확인 하는지에 대한 글입니다. JaCoco를 활용하여 간단하게 테스트 커버리지를 확인하는 방법을 알아보고 이를 통해 팀의 컨벤션을 확보하는데 도움이 되길 빕니다! 우선 JaCoco에 대해 간략히 소개드리면 Java기반 언어를 분석하여 테스트 코드가 커버하는 코드 블락을 확인 후 커버리지 퍼센트를 도출해 주는 도구입니다. 물론 그외에 다양한 기능을 제공하기 때문에 해당 글을 보고 찾아보시면 많은 도움을 받을 수 있습니다. ..
개발바닥 유튜브를 보던 중 [React 불만 大 발설] 영상을 보고 내가 생각하는 React Best Practice를 정리해보면 좋겠다고 생각했습니다. (영상링크 * https://www.youtube.com/watch?v=1V6mQom0paI) 기본적으로 해당 영상에서 말씀하시는 내용 중 OOP가 FE에서 필요한 개념인가? 없으면 어떻게 짜는가? 라는게 영상 내용의 주요 주제 중 하나입니다. 위의 내용들을 제 경험에 투영하여 작성하려하며, 온전히 제 경험에서 나온 내용이라 정답은 아니라는 점을 유의해 주시길 바랍니다. 해당 Practice는 Typescript를 기본으로 하기 때문에 Javascript프로젝트에 도입하기에는 한계가 있을 수 있는 점 유의해 주세요! 해당 Practice에서 사용한 주요..
혼자서 공부할 겸 프로젝트를 하나 진행하려고 고민하던 중 그래도 나름 괜찮은 아이디어가 떠올라 시작하게 됐습니다. 프로젝트를 진행하면서 진행과정을 블로그에 정리하고 경험을 공유하고자 합니다. 첫번째 글로는 프로젝트의 백엔드 기술스택 선정과 그 이유에 대해 정리해보았습니다. 백엔드 기술스택의 언어로는 코틀린으로 선정했습니다. 이유는 최근에 자바를 이용한 프로젝트를 많이 진행했는데 다양한 편의 기능과 functional + OOP의 장점들을 모두 취할 수 있기 때문에 선정했습니다. 최근 자바에 대항한 JVM언어 중 원탑이 아닐까 생각합니다. 물론 자바와 거의 100% 호환하기 때문에 거기에서 오는 심리적 안정감도 존재했습니다. 레퍼런스에 대한 고민과 문제가 생겼을 때 자바를 이용한 일부 코드를 작성할 수도 ..
Spring 프로젝트를 진행하면서 Query DSL을 언제 도입할지에 대해 고민하던 중 좋은 타이밍이라 생각하여 도입했습니다. 내가 QueryDSL을 도입한 이유와 타이밍에 대해서 간략하게 정리하여 경험을 공유하고 합니다. QueryDSL은 프로젝트 초기에 바로 도입하여 사용하는걸 권장하지만 현재 회사의 프로젝트를 시작하면서 최소한의 툴을 사용하면서 정말 필요할때 도입하고자 목표를 잡았었습니다. 본론으로 들어가기 전에 QueryDSL에 대해 간략하게 소개하고자 합니다. QueryDSL이란? QueryDSL은 Query 빌더로 조금 더 정확하게는 Jpa의 JPQL을 만들어주는 빌더입니다. 보통 Jpa Repository에서 자동으로 만들어주는 매핑 메소드를 생성하기 어렵거나 복잡한 상황에서 쿼리를 작성하고..
Spring Boot 프로젝트에서 JPA를 사용하면 Repository를 통해 DB의 데이터를 꺼내오게 된다. JPA가 지원하는 기본적인 Repository는 다양한 기능을 함께 지원하지만 규모가 커지고 복잡한 쿼리가 필요할때는 한계에 부딪히게 된다. 이럴때 개발자가 자체적으로 Repository를 만들어서 커스텀해 사용해야 하는데 이를 위한 두 가지 방법을 소개하려 한다. 1. 기본 Repository에 Interface를 추가하여 확장하는 방법 2. 기본 Repository와 별개의 Repository생성하는 방법 1. 추가 Interface를 통해 Repository 확장 - 기존 JpaRepostory에 CustomRepo를 추가해준다. public interface ConsultationRepo..
JPA를 이용해 구현을 하다보면 그래프 탐색을 통해 다양한 테이블을 탐색하게 된다. 하지만 객체를 기반으로 구현돼있는 JPA는 자칫 잘못하면 불필요한 집단 쿼리(n + 1)가 발생해 성능에 악영향을 줄 가능성이 매우 높다. 나 또한 이런 문제를 격었기 때문에 그 경험을 공유하려한다. 해당 포스트가 N+1문제 해결을 설명하려는 글은 아니며, 연관된 문제에서 조금 더 유연한 대처를 하는 방법을 소개하려한다. 내가 만난 문제는 고객, 판매자(Account) 테이블과 결제(Payment) 테이블 2가지가 존재했다. 이런 환경에서 판매자가 가지고있는 결제들을 불러오고 결제한 구매자(고객)의 데이터를 함께 List로 return해주는 문제를 해결해야 했다. 처음 작성한 코드는 다음과 같다. //@Query("sel..
Spring Boot Security를 이용해 커스텀 프로바이더로 인증 필터를 생성하던 중 ProviderNotFoundException를 만나게 됐다. 한참 삽질중에 생각보다 쉽게 해결했다. public class OAuthAuthenticationProvider implements AuthenticationProvider { ...중략... @Override public boolean supports(Class authentication) { return authentication == OAuthAuthenticationToken.class; } } supports 함수에서 해당 프로바이더에서 처리해줄 Token 클래스를 지정해주면 된다. 나같은 경우 OAuthAuthenticationToken 클래..
최근 스프링 프로젝트를 수행하면서 JPA에 대해 조금 더 공부하고 싶은 마음이 들었다. 그래서 JPA에 대해 간략하게 정리해보려 한다. JPA를 이야기하기 전에 ORM에 대해 간략한 이해가 필요하다고 생각한다. 기존에 자바를 이용해 DB에 접속하기 위해서는 마이바티스같은 Mapper를 사용하거나 JDBC를 이용해 직접 쿼리를 날리는 식으로 사용됐었다. 이런 방식에는 문제가 있는데 객체지향적인 프로그래밍이 어렵다는 문제이다. ORM은 이런 문제를 해결하기 위해 데이터베이스의 테이블을 객체화 시켜 개발할 수 있다. JPA는 이런 자바진영의 공식 ORM API 표준이다. 하지만 JPA자체는 Interface를 묶어둔 추상화 API로 이를 구현하여 사용할 수 있도록 만들어준 프로젝트가 Hibernate이다. 일..
- Total
- Today
- Yesterday
- 우주게임
- JIRA
- 이명규
- 튜토리얼
- Unity3D
- JPQL
- 게임 개발
- QueryDSL
- 개발
- spring
- 인디
- 인디게임
- 게임
- JPA
- 신작
- Java
- Lombok
- 사이드프로젝트
- 스크럼
- 모험
- 유니티
- 게임개발
- mobx
- spring boot
- studio108
- frontend
- 용사
- 보따리장사
- 개발일지
- 턴드림
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |