본문 바로가기

분류 전체보기314

[책] 객체지향의 사실과 오해 - 1 차근차근 비유법을 써서 설명해주는 책이었다. 객체지향의 개념에 대해 좀 더 직관적으로 이해할 수 있는 계기가 되었다. 중요하다고 생각되는 부분들을 요약했는데, 두고 두고 객체 지향에 대한 개념이 흔들릴 때마다 봐야겠다. 목표 코드를 담는 클래스의 관점에서 메시지를 주고받는 객체의 관점으로 사고 전환 "행동이 상태를 결정한다" 를 이해하자. 1. 협력하는 객체들의 공동체 기능을 구현하기 위해 객체들은 협력한다. 책에서는 협력의 과정을 "커피를 주문하는 과정"을 예시로 아주 상세하게 풀어준다. "커피를 주문하는 과정"은 대략 이러하다. 손님이 캐시어에게 커피를 주문한다. 캐시어가 바리스타에게 커피 제조를 요청한다. 바리스타는 커피를 완성하여 캐시어에게 건내준다. 캐시어는 커피를 완성하여 손님에게 준다. 역할.. 2021. 10. 9.
[Spring] RestTemplate과 WebClient 이해하기 Intro 외부 API 정보를 요청하려면 어떻게 해야할까? 가장 흔하게 사용하는 방식은 Http Client 이다. Web으로 API를 호출하기 위해 사용하는 Http 모듈 중 하나인 Spring WebClient에 대해 알아보려 한다. RestTemplate vs WebClient 기존에 많이 사용한 RestTemplate과 가장 큰 차이점은 RestTemplate는 Blocking이고, WebClient는 Non-Blocking 방식이라는 것이다. (Blocking은 호출되는 함수가 호출하는 함수에게 제어권을 넘기지 않고 대기하게 한다. Non-Blocking은 제어권을 바로 넘긴다. 관련 포스팅은 여기를 참고) 현재 RestTemplate는 Spring 5.0 이후부터 Deprecated되었고, W.. 2021. 9. 12.
정적 분석 도구 Sonarqube 란? Intro 코드 품질에 대해 이야기를 하다가 정적 분석 도구에 대해 잘 모르고 사용하고 있어서 오늘은 그 개념과 실습을 해보았다. 실습은 여기 를 참고하여 해보았다! Sonarqube 지속적으로 코드 품질을 높이고, 유지보수를 할 때 도움을 주는 애플리케이션이다. 코드 컨벤션부터 잠재적인 위험 사항까지 체크를 해주어 코딩 습관과 품질 향상에 도움을 준다. Intellij에는 소나 큐브 플러그인이 있는데, SonarLint만 설치하더라도 소나큐브 서버 없이 정적 분석이 가능하다. 소나큐브 서버를 연동해 놓으면 서버의 Code analyzer가 업데이트 되었을 때 최신 Ruleset이 로컬에도 동기화되어 서버와 연동해 놓는 것이 좋다. 특징 다양한 언어에 대한 코드 분석 지원 Admin을 통해 확인해볼 수 .. 2021. 8. 20.
[MyBatis] 동적 SQL 처리 - trim 사용하기 Intro 검색 관련 쿼리를 작성하다가 동적으로 SQL을 처리해야했다. IF문을 3번 써야했는데, Where절 뒤에 들어가는 조건문 속에 AND가 바로 오면 Syntax Error가 발생했다. trim을 사용해서 해결했는데, 공식문서에 정말 자세히 설명이 나와있고 유사 케이스여서 금방 해결할 수 있었다. Trim 문 안에 있는 쿼리의 맨앞 혹은 맨뒤에 붙는 문자열을 붙이거나 뗄 수 있도록 한다. prefix trim 내부 쿼리 가장 앞에 문자열을 붙여준다. ... prefixOverrides trim 내부 쿼리 가장 앞에 해당 문자열을 지워준다. ... suffix trim 내부 쿼리 가장 뒤에 해당 문자열을 붙여준다. ... suffixOverrides trim 내부 쿼리 가장 뒤에 해당 문자열을 지워.. 2021. 8. 19.