티끌모아 로키산맥 🏔
search
![](https://t1.daumcdn.net/tistory_admin/static/manage/images/r3/default_L.png)
로ᄏl
배움에 끝은 없다... 개발 또한 그러하다.
Today
Yesterday
분류 전체보기 (179)
2022년 (처음이자) 새롭게 입사하게 된 맘편한세상(= 맘시터) 개발팀은 매주 1회 사내 스터디를 진행하고 있다. 자율적인 참여이지만, 필참이라는 마인드로 시간이 되는 선에서는 모두 참여하려고 한다. 내가 합류한 시점에는 클린 아키텍처 책 스터디가 막 끝난 상황이었고, 새로운 도서를 선정하게 됐다. 때마침 최근에 읽고있던 '오브젝트'도 희망 서적 중 하나로 언급이되었지만, 최근 SNS상의 많은 개발자분들이 책 구성이 좋다고 언급하는 Unit Testing 책이 선정되었다! 관심이 없지는 않던터라 ( 테스트는 항상 고민해야하는 녀석이기에.. ) 기쁜 마음으로 도서를 구매하였다! 단위 테스트는 단순히 테스트를 작성하는 것보다 더 큰 범주이다. 단위 테스트에 시간을 투자할 때는 항상 최대한 이..
들어가기에 앞서서... | 해당 글은 2021 유스콘에서 발표한 자바 스프링에서의 이벤트 처리 세션에서 진행된 내용을 코틀린으로 따라해보며 정리한 글입니다. 목적 | 스프링에서 이벤트를 왜 써야하고 어떻게 써야하는지 실습해본다. 전체적인 코드는 깃헙 저장소를 참고하면 된다. `UserService쪽에 의존하는 다양한 의존성들을 어떻게 해결하면 좋을지?`를 계속 생각해보자! Spring은 Bean을 관리하기 위해서 ApplicationContext를 기본으로 가져간다. 이번에 다루게 될 Event도 Spring Bean과 똑같이 Context를 관리해주는데 이벤트 또한 ApplicationContext에서 Event를 관리하고 있다. 따라서 Event도 특별한 Bean을 주입받고 실행해주고 있다. Step..
스프링의 애플리케이션 컨텍스트가 관리하는 객체(=Bean)는 일반적인 POJO 객체와는 중요한 차이점이 있다. 예를들어서 아래의 두 코드는 언뜻보면 비슷해보이지만, 큰 차이가 있다. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); return new MemberServiceImpl(memberRepository()); } public OrderService orderService() { return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());..
트리 참고자료: https://www.youtube.com/watch?v=i5yHkP1jQmo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=13 트리란...? 트리는 가계도와 같은 계층적인 구조를 표현할 때 사용할 수 있는 자료구조이다. 트리 관련 용어 루트 노드(root node): 부모가 없는 최상위 노드 단말 노드(leaf node): 자식이 없는 노드 크기(size): 트리에 포함된 모든 노드의 개수 깊이(depth): 루트 노드부터의 거리 높이(height): 깊이 중 최댓값 차수(degree): 각 노드의 (자식 방향) 간선 개수 트리의 특징 (알고 있으면 좋은 정보) 기본적으로 트리의 크기가 N일 때, 전체 간선의 개수는 N - 1개이다. 이진 탐색 트리..
자프링(=자바 + 스프링)진영에서는 외부의 요청을 검증하기 위해서 Validation을 많이 사용한다. 의존성 설정만해두면... (몇 버전인지 기억이 잘 안나지만 스프링부트 특정 버전 이후부터는 Validation을 따로 추가해줘야한다... 그전에는 스프링부트에 자동으로 포함됐었다 😢) Controller단에서는 DTO로 외부 요청을 받아오고 외부의 요청이 DTO에 할당되는 순간 Validation을 통해 검증이 진행된다. (순서가 정확한지는 모르겠다) 자바에서는 DTO의 필드 위에 `@`로 시작되는 애너테이션을 붙여서 처리한다. 그 사용법도 간단하고 애너테이션 각각의 네이밍이 직관적(@NotNull, @NotBlank, @Pattern, @Size etc..)이라 하나라도 사용을 해봤다면 다른 기능들도..
Lv4 미션으로 쿼리 튜닝해보는 미션이 주어졌다. 먼저 본인의 쿼리 작성 능력을 테스트해볼 겸 실습 사이트에서 아래의 쿼리를 직접 작성해보자! 200개 이상 팔린 상품명과 그 수량을 수량 기준으로 내림차순으로 보이게 하라. 많이 주문한 순으로 고객 리스트(ID, 고객명), 총수량을 구하라. 많은 돈을 지출한 순으로 고객리스트를 구하라. 위 튜토리얼(?)에 대한 나의 쿼리는 아래와 같다. (주의 성능은 1도 생각안하고 결과만 제대로 나오는 쿼리다!) 1번 쿼리 SELECT p.ProductId '상품아이디', p.ProductName '상품이름', SUM(od.Quantity) '총수량' FROM Products p JOIN OrderDetails od ON od.ProductId = p.ProductId..