728x90
728x90

전체 글 630

공식 문서를 통해 스프링 배치(Spring Batch)에 대해 간략하게 알아보기

Batch Processing 일괄 처리 작업 어떤 서비스를 즐기다 보면 전산 작업 시간 등등에 진행되는 작업이 이 배치 작업이다. 예시로 들면 이런 게 있다. 대용량의 데이터를 복잡한 작업으로 처리하는 경우 주간, 월간 지표 집계와 같은 특정 시점에 정해진 작업이 수행되는 경우 대용량 데이터 유효성 검사 등의 작업을 트랜잭션 안에서 처리 및 기록해야 하는 경우 위 작업을 일반 어플리케이션에서 할 수는 없기 때문에, 이를 위한 별도의 배치 처플리케이션을 구현하고 해당 어플리케이션을 기동하는 편이다. 그렇기 때문에 다양한 작업을 배치 작업을 이용해 처리하고 있고, Srping에서는 Spring Batch를 통해 제공하고 있다. Batch 원칙 일반적으로 같은 서비스 환경에서 동작하는 서비스와 배치는 서로 ..

Framework/Spring 2021.06.20

Elasticsearch와 RDBMS의 용어 비교, 그리고 장단점

Elasticsearch와 RDBMS의 용어 비교 RDBMS Elasticsearch Schema Mapping Database Index Partition Shard Table Type Row Document Column Field Elasticsearch를 써야 할 때? RDBMS 단순 텍스트 매칭에 근거해서 검색을 지원한다. 최신 RDBMS는 Full-text 검색을 지원하지만, 아직도 많은 곳에서 사용하는 RDBMS에서는 이를 지원하지 않는다. 지원한다고 하더라도, 한글에서는 썩 좋은 능력을 보여주지 못하는 부분이 있다. 반면 Elasticsearch는 n-gram 기반 Full-text 검색을 지원한다. 여러 단어로 변형하거나, 동의어/유의어에 근거한 검색도 가능하고 여러 플러그인으로 형태소 기..

Computer Science/DB 2021.06.13

IntelliJ Gradle import 시, 오류 해결 방법 : Unable to find method

무슨 오류인가? Unable to find method ''java.lang.String org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()''. IntelliJ가 추천해줬던 해결 방법 Reimport를 시도해라. Gradle을 다시 설치하거나, 다시 시작해라. (IntelliJ 재부팅) 보통 1번의 방법으로 해결되는 경우가 많다. 이에 관해서는 jojoldu님의 블로그에 자세하게 설명되어 있다. https://jojoldu.tistory.com/364 IntelliJ에서 Gradle 프로젝트 작동안될때 간혹 Gradle 프로젝트를 IntelliJ에서 불러올때 Gradle이 정상작동하지 않을때가 있습니다. 전혀 코드가 작동하..

개발 팁/IDE 2021.06.13

Garbage Collection in Python, 파이썬의 GC에 대해

Python에서의 GC 파이썬은 기본적으로 레퍼런스 카운팅(Reference Counting)을 바탕으로 GC를 수행하고 메모리를 관리한다. 레퍼런스 카운팅(Reference Counting)? 모든 객체는 참조 당할 때 이 레퍼런스 카운트를 증가시키고, 참조가 없어지면 이를 감소시킨다. 이 값이 0이 되면 객체가 메모리에서 해제된다. 해당 객체의 레퍼런스 카운트 값을 확인하는 코드는 다음과 같다. sys.getrefcount(obj) GC의 동작 원리 앞서 언급한 것처럼 GC는 레퍼런스 카운트를 기준으로 진행하는데, 좀 더 정확히 다루자면 세대와 그에 따른 임계값을 바탕으로 주기적으로 관리한다. 여기서 말하는 세대는 숫자가 클수록 오래된 객체이며, GC는 기본적으로 0세대, 즉, 비교적 최근에 생성된 ..

Java의 함수형 인터페이스(Functional Interface)에 대해 알아보기

함수형 인터페이스(Functional Interface)? 하나의 추상 메서드만 존재하는 인터페이스 람다 표현식에 사용할 수 있는 인터페이스 인터페이스 범위가 확장됨에 따라 여러 메서드가 정의되어 있을 수 있지만, 오직 하나의 추상 메서드만 존재한다면 함수형 인터페이스이다. 기본 형태 @FunctionalInterface public interface Consumer { void accept(T var1); default Consumer andThen(Consumer

JAVA에서 람다식(Lambda Expression)에 대해 정리해보기

람다식? 람다식 또는 람다 표현식(Lambda Expression)은 프로그래밍에서 흔히 사용되는 개념으로 익명 함수 등으로 불리기도 한다. 많은 프로그래밍 언어에서 람다식을 볼 수 있으며 Java에서는 이 람다 표현식을 Java8부터 추가되어 활용할 수 있다. 특징 기본 형태 (int param1, String param2) -> { DoSomething...} // 기본 (Parameter, ...) -> { DoSomething... } // 타입이 동일한 경우 () -> { DoSomething... } // 매개변수가 없는 경우 (Parameter, ...) -> DoSomething // 단일 실행문인 경우 (Parameter, ...) -> { return some; } // 단일 실행문이 ..

M1 맥북에서 내 SSD의 수명을 확인해보자

많은 사람들이 간과하고 있는 사실이, SSD 같은 저장 장치에는 수명이란 게 존재한다. 일반적인 환경에서 일반적인 유저들에게는 크게 문제되지 않지만, 엄청난 부하를 주는 일을 하거나, 설계 결함 등에 의해 과도하게 쓰기 작업이 반복되면 사실상 컴퓨터 교체 시기에 가까운 저장 장치 수명보다 짧아지게 된다. 일반적인 노트북이나 컴퓨터는 SSD가 별도의 부품으로 교체가 가능하기 때문에 SSD 수명이 다하는 것이 크게 문제되지 않는다. 하지만, M1 맥북은 이 모든 것이 보드에 탑재된 형식이고 수명이 다해버리면 사실상 기기 교체 수순을 밟게 된다. 게다가 스왑 메모리 이슈 때문에 M1 맥북의 SSD 수명이 빠르게 줄게 된다는 이야기가 퍼지면서, SSD의 상태를 확인하지 않을 수가 없었다. 먼저 수명을 확인 하기..

IT/IT 팁 2021.04.11

M1 맥북에서 MySQL 설치하기

MySQL은 호환성 문제가 없는 편인 것 같다. M1 맥북에서 MySQL을 설치하는 방법은 기존 맥과 다르지 않은 편인데, 혹시나 싶어서 망설이고 있는 사람들과 초보자들을 위해 글로 남긴다. 기본 설정 Homebrew는 맥을 사용해본 사람이라면 한 번쯤은 사용해본 패키지 관리자로, 이번 설치에서 활용할 수 있다. Homebrew를 설치하고 나서 cask 패키지를 설치하고 업데이트 체크를 한 번 수행해주자. brew install cask brew update MySQL 설치하기 Homebrew를 설치해줬다면, 이제 MySQL을 설치해볼 차례다. 먼저 아래 명령어를 통해 MySQL 패키지 목록을 확인해보자. brew search mysql 여기서 그냥 mysql을 설치한다고 하면, 기존 맥에서는 다음 명령..

객체 지향 설계 5원칙 - SOLID

이론적으로만 알고 있던 SOLID에 대해서 다시 한 번 정리해볼 필요가 있다고 생각해서 정리했다. 면접 준비할 때만 개념적으로 이해하고 있던 내용도 있고, 주변에서 항상 들어왔던 이야기를 바탕으로 최대한 신경 쓰려고 하는 원칙도 있었던 것 같다. 코딩 면접을 준비하는 사람들은 최소한 아래 용어에 대해서는 알고 있어야 한다. 이 글에서는 해당 용어에 대한 설명 외에도, 다른 분의 정리와 본인의 생각을 결합하여 끄적여봤다. SRP, Single Responsibility Principle, 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임?? 아무것도 모르던 시절엔 이 "책임"의 범위를 정하는 것이 가장 어려운 것 같다. 크고 작은 것을 어떻게 정할 것인지에 대한 기준이 필요하지 않을까?..

M1 맥북에서 파이썬 개발환경(아나콘다, 파이참) 설치하기

M1 실리콘 맥에서 파이썬 개발 환경을 설치해보자. 파이썬 개발 환경이라고 하면 대표적으로 사용하는 것이 아나콘다(Anaconda)와 파이참(Pycharm)일 것이다. 이 두 가지는 윈도우, 맥을 가리지 않고 사용하는 보편적인 툴이다. 아나콘다(Anaconda3) 설치하기 Anaconda | Individual Edition Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine. www.anaconda.com 설치 순서는 상관 없지만, 먼저 아나콘다부터 설치해보도록 하자. M1 출시 초기에는 아나콘다 활용이 불가능하다는..

728x90