2022/05(8)
-
Masking Name with Regex, in java
정규식을 이용해 이름에 마스킹처리를 하는 것이 해당 포스팅의 목표입니다. 보안상 이름 전체가 노출되면 안되는 경우가 있습니다. 하지만 본인의 이름을 구별할 필요는 있기 때문에 제약사항을 가지고 이름을 노출시키곤 하는데요. 부분별로 가려 이름을 마스킹 처리하는 기능을 구현하고자 합니다. Condition 먼저 적용하고자 하는 규칙은 아래와 같습니다. 아래는 실제로 요구받은 마스킹 처리 조건입니다. 한글이름 성명 중 이름의 첫번째 글자 정*성 / 현* 영문이름 첫번째 자리를 제외한 이름의 4자리 이상 B****** Spears / S**** Jobs 하지만 위의 조건은 부족한 점이 있는데요. 예를 들어 한 글자이거나, 영문이름이지만 한 단어인 경우와 같은 흔치않은 예외 상황이 있습니다. 이런 조건들을 고려하..
2022.05.29 -
Caffeine Cache, 어렵지 않게 사용하기 2
Caffeine Cache에 대해 알아보고 사용법에 대해 알아보는 것이 해당 포스팅의 목표입니다. 본 편은 이전 포스팅인 Caffeine Cache, 제대로 사용하기에 이은 두 번째 포스팅입니다. 전반적인 소개글인 이론은 이전 포스팅에서 다루며, 본 편에서는 실제로 사용하는 방법인, 응용에 대해 다룹니다. 추가로, Spring Cache에 대한 기본적인 이해를 하고 있다는 전제하에 작성한 내용입니다. Spring Cache, 제대로 사용하기도 이어진 포스팅이니 참고하시길 바랍니다. 이번 포스팅에서는 로컬 캐시 중 성능에 유리한 Caffeine Cache를 다뤄보겠습니다. 본 포스팅의 큰 그림은 세팅하는 방법부터 어떻게 사용하는지에 대해 다룹니다. Dependency 기본적으로 의존성을 추가해주겠습니다. ..
2022.05.24 -
Java Date & Time, 제대로 사용하기
Java의 날짜와 시간을 제대로 다루기 위해 Date, LocalDate, LocalDateTime 의 개념을 이해하고 응용하는 것이 본 포스팅의 목표입니다. History 이제는 자바 8이 꽤나 보편화된 것 같은데요. 자바 8버전이 중요하다고 하는 이유 중 하나가 바로 "날짜"를 다루는 방식입니다. 자바 8에 새로운 날짜와 시간 API가 생긴 이유는 아래와 같은 이유가 있습니다. ✔️ Mutable 자바 8 이전의 util.Date 클래스는 mutable 하기 때문에 thead safe하지 않았습니다. public class App { public static void main(String[] args) throws InterruptedException { // mutable 한 객체 -> multi-..
2022.05.22 -
ENUM, Clean Code with Java
Java Enum을 통해 If/else 분기문을 제거하여 클린코드를 지향하는 코드를 작성하는 것이 본 포스팅의 목표입니다. 문제점 몇몇의 코드를 관리할 때, if-else 문이 많아지면서 가독성이 떨어지는 경우가 발생하는 것을 경험해보셨을 텐데요. 필자도 이 문제에 대해 조금 더 깔끔한 관리를 할 수 없을지 고민하다가, 조금 더 깔끔하게 관리하기 위한 방법을 고려한 후, 공유하고자 기록하게 되었습니다. IF-ELSE 은행에서 거래 시 예금, 출금, 이체라는 세 가지의 타입의 업무를 수행해야한다고 가정하겠습니다. 그리고 각각 "DEPOSIT", "WITHDRAWAL", "TRANSFER" 이라는 코드로 이들을 구분하고자 합니다. 이 때, 출금(WITHDRAWAL), 이체(TRANSFER)를 수행할 때는 각..
2022.05.11 -
TimeZone, 어렵지 않게 이해하기
주요 Timezone 영국(UTC), 미국(PDT/ PST/ EDT/ EST ... ), 한국 (KST) 을 구분하고 이해하는 것이 해당 포스팅의 목표입니다. 사실,, 해당 포스팅은 "MySQL, DATETIME VS TIMESTAMP" 포스팅을 작성하다가, 다른 주제로 분리하는게 맞는 것 같아서 분리해보았습니다 😋 관심있으신 분은 위 포스팅을 확인해보시길 바랍니다 〰 Timezone 타임존은 동일한 로컬 시간을 따르는 지역을 의미하며, 해당 국가에 의해 법적으로 지정됩니다. 시간대는 지구의 자전에 따른, 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 말하는데요. 이는 영국의 그리니치 천문대를 기준으로 지역에 따른 시간의 차이를 계산하여 적용합니다. UTC, Asi..
2022.05.05 -
MySQL, DATETIME VS TIMESTAMP
MySQL의 날짜 표기 법인 DATE, DATETIME, TIMESTAMP 타입을 이해하고 구분하는 것이 해당 포스팅의 목표입니다. Date Types MySQL에서는 날짜를 표기할 때 DATE, DATETIME, TIMESTAMP 타입을 사용할 수 있습니다. 이 타입들은 어떤 차이가 있을지 알아보도록 합시다. DATE DATETIME TIMESTAMP Format YYYY-MM-DD YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss Desc - 날짜만 표기 - 날짜 및 시간 표기 - 날짜 및 시간 표기 - 기본적으로 NOT NULL - Timezone 기반 Supported 1000-01-01 ~ 9999-12-31 1000-01-01 00:00:00 ~ 9999-12-31 23:..
2022.05.05