본문 바로가기

전체 글

[Slf4j] Slf4j란? Slf4j Slf4j는 다양한 Logging Framework(logging, logback, log4j)의 추상화를 제공하며 컴파일 시, 하나의 Logging Framework와 바인딩 해준다. * 로그 레벨 : TRACE > DEBUG > INFO > WARN > ERROR 장점 다양한 Logging Framework를 라이브러리만 추가해서 바인딩할 수 있다. -> Logging Library 변경 시 로그 엔진을 쉽게 변경할 수 있다. String 연산의 편의성 log.info("log message : " + name); 다음과 같이 코드를 작성하게 되면 String 연산 후 Logging Level을 확인하여 출력 여부를 확인한다. -> 불필요한 CPU 연산 사용 log.info("log mes.. 더보기
[Refactoring] 15. 추측성 일반화 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 추측성 일반화 나중에 쓰일 것으로 예상하고 작성한 코드가 쓰이지 않는 경우 XP의 YAGNI(You aren`t gonna need it) 원칙을 따르자 관련 리팩토링 계층 합치기 -> 추상 클래스를 만들었지만 사용하지 않을 경우 함수 인라인, 클래스 인라인 -> 불필요한 위임을 했을 경우 함수 선언 변경하기 -> 사용하지 않은 매개변수를 가지고 있을 경우 죽은 .. 더보기
[Refactoring] 14. 성의없는 요소 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 성의없는 요소 변수, 메서드, 클래스 등을 만드는 이유 추후 발생할 변화를 대비 재사용을 위해서 의미있는 이름을 위해서 예상하고 만들어 놓은 요소들이 기대에 부응하지 못하는 경우가 있는데 그런 경우에는 해당 요소를 제거해야 한다. 관련 리팩토링 함수 인라인 클래스 인라인 계층 합치기 Refactoring 1. 계층 합치기 상속 구조를 리팩토링하는 중에 기능을 올리.. 더보기
[Docker] 도커란? Docker 도커는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 만들어, 해당 이미지를 사용하여 다양환 환경에서 독자적인 앱 실행 환경을 구축하고 운영하기 위한 오픈 소스 플랫폼이며 컨테이너의 가장 대표적인 구현체이다. * 기업들은 어떻게 서비스를 효율적으로 운영 / 배포할 것인가? 초기 컴퓨터 + OS -> 애플리케이션을 구동하기 위해 필요한 라이브러리, 프레임워크를 OS에 설치해서 운영/배포 가상화 : 비용, 컴퓨팅 자원 효율성 증가 다수의 애플리케이션은 필요로 하는 라이브러리, 프레임워크가 다를 수 있다는 문제점을 해결 다수의 애플리케이션을 각 각의 가상화 머신에서 격리시켜 운영/배포 Virtual Machine - Host OS 위에 Hypervisor -> 각 Virtual Machine.. 더보기
[Naver] Cloud Outbound Mailer 인턴십 기업에서 SMTP 메일 전송 서비스를 Naver Outbound mailer 메일 전송 서비스로 바꾸게 되었다... 이에 Naver Outbound Mailer가 무엇이고, 어떻게 사용하는지, 간단한 예제로 SpringBoot 프로젝트 적용해보고자 한다. Cloud Outbound Mailer 개인화 콘텐츠 메일을 빠르고 안정적으로 전송할 수 있는 서비스로 알림, 정보, 마케팅 대량 메일을 UI를 통해서 쉽게 전송하거나 운영하고 있는 서비스에 연결해 전송할 수 있도록 도와주는 서비스이다. 제공 기능 대용량 및 예약 메일 전송 기능 수신자 그룹관리 및 조합 발송 기능 콘텐츠 개인화 메일 전송 기능 실시간 통계 조회 Open API - 메일 발송, 발송 결과 조회 HTTP Open API를 통해서 메.. 더보기
[Refactoring] 13. 반복문 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 반복문 반복문에 비해 함수형 프로그래밍이라는 더 나은 대안이 생겼다. 반복문을 파이프라인으로 바꾸는 리팩토링을 거치면 필터나 맵핑과 같은 파이프라인 기능을 사용해 보다 빠르게 어떤 작업을 하는지 파악할 수 있다. Refactoring 33. 반복문을 파이프라인으로 바꾸기 고전적인 반복문을 파이프라인 오퍼레이션을 사용해 표현하면 코드를 더 명확하게 만들 수 있다. .. 더보기
[Refactoring] 12. 반복되는 switch 문 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 반복되는 switch 문 예전에는 switch 문이 한 번 등장만 해도 냄새로 취급되었는데 여러 프로그래밍 언어에서 보다 세련된 형태의 switch 문을 지원해 줌으로써 반복해서 등장하는 동일한 switch 문을 냄새로 취급한다. 반복해서 동일한 switch 문이 존재할 경우, 새로운 조건을 추가하거나 기존의 조건을 변경할 때 모든 switch 문을 찾아서 변경해.. 더보기
[Reactive Streams] Operators 이전 글 요약 Publisher(공급자) -> Subscriber가 Publisher에게 등록 -> Subscriber 최대 처리량 세팅(onSubscribe) -> Publisher는 입력 받은 최대 처리량 씩 Subscriber의 onNext 호출 -> Subscriber는 모든 처리가 완료되면 onComplete 호출, 에러 발생 시 onError 호출 Operators Publisher -> [Data1] -> Operator -> [Data2] -> Operator -> [Data3] ... -> Subscriber 중간에 Data를 가공한다. Publisher와 Subscriber가 바로 연결되어 있는 것이 아닌 중간에 Operator가 존재할 수 있다. Map Publisher -> [Dat.. 더보기