이끌든지 따르든지 비키든지

전체 글 61

[JPA] @Converter 암호화를 사용해 데이터베이스 보안 강화하기

데이터베이스에 중요한 정보를 보관할 때, 보안은 필수적인 요소입니다.  특히, 개인정보와 같은 민감한 데이터를 저장할 때는 암호화를 통해 보안을 강화하는 것이 중요합니다.  JPA를 사용하여 데이터베이스에 저장되는 데이터를 안전하게 암호화하고 복호화하는 방법에 대해 알아보겠습니다.  @ColumnTransformer 첫 번째 방법은, @ColumnTransformer 어노테이션을 사용하는 것입니다. @Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "email") @ColumnTransformer( read = ..

Framework/JPA 2024.08.24

Gradle의 의존성 구성

빌드 자동화 도구인 Gradle은 의존성 관리를 위해 다양한 구성 옵션을 제공하는데, 주로 사용되는 종속성 구성 방법에 대해 자세히 알아보겠습니다. 주요 의존성 구성 옵션 implementation 프로젝트의 기본적인 종속성을 선언하는 데 사용됩니다. 이 옵션을 사용하면 선언된 의존성은 컴파일 시점과 런타임 시점에 모두 포함됩니다.  testImplementation 테스트 코드에서만 사용될 의존성을 선언할 때 사용됩니다. 이 의존성은 테스트 컴파일 및 테스트 실행 단계에서만 사용됩니다.  compileOnly 컴파일 시점에만 필요한 의존성을 선언할 때 사용됩니다. 런타임 시점에는 해당 의존성이 포함되지 않습니다.  develomentOnly 개발 환경에서만 사용되는 의존성을 선언할 때 사용됩니다.주로 ..

Framework/Spring 2024.07.21

[Spotless] 클릭 한 번으로 코드 정리하기

Spotless란?코드 스타일 규칙을 자동으로 적용하여 코드베이스의 일관성 유지를 도와주는 오픈 소스 도구입니다.Gradle 플러그인으로 쉽게 통합할 수 있으며, Java, Kotlin, Groovy, Scala, Python, C, C++, Markdown, JSON, XML 등을 지원합니다.  Spotless를 의존성에 추가하기// build.gradleplugins { id 'java' id 'com.diffplug.spotless' version '6.25.0'}repositories { mavenCentral() gradlePluginPortal()}  Spotless를 사용하려면, Gradle 플러그인 포털에 대한 정보를 추가해주어야 합니다.gradlePluginPorta..

[PostgreSQL] PostGIS로 쉽고 빠르게 지리적 거리 계산하기

웹 애플리케이션에서는 사용자 경험을 향상하기 위해 지리적 위치 데이터를 활용하는 경우가 많습니다.예를 들어, 지도 및 내비게이션 서비스에서 두 지점 간의 경로를 안내하거나, 주변 장소를 검색하는 기능이 필요합니다. 오픈 소스 DBMS인 PostgreSQL과 이를 확장하여 공간 데이터를 처리할 수 있게 해주는 PostGIS는 공간 참조 시스템, 공간 데이터 타입, 공간 인덱스 등을 제공하여 복잡한 공간 데이터를 효율적으로 처리할 수 있도록 지원합니다. 이를 활용해 두 지점 간의 거리 계산, 주변 반경 검색, 경로 최적화 등 다양한 공간 연산을 수행할 수 있는데, 이 중 두 지점 간의 거리 계산에 대해 알아보도록 하겠습니다. PostgreSQL & PostGIS 설치하기 저는 Docker Compose 환경..

[Linux] 프로세스에게 시그널 보내기

들어가기 앞서 - 시그널(Signal)이란?시그널은 운영 체제가 프로세스 간 통신을 위해 사용하는 중요한 메커니즘 중 하나입니다. 시그널은 프로세스에게 특정 이벤트가 발생했음을 알리고, 프로세스가 그에 맞게 행동하도록 합니다.    SIGNAL의 특징비신뢰성리눅스 시그널은 비신뢰성을 가지고 있습니다. 이는 시그널이 도착하는 순서가 보장되지 않으며, 시그널이 손실될 수 있다는 것을 의미합니다. 여러 시그널이 동시에 발생하면 일부 시그널은 무시될 수 있습니다.  대기하지 않음시그널은 비동기적으로 처리됩니다. 이는 시그널이 발생하면 즉시 프로세스에 전달되며, 프로세스는 시그널을 기다리지 않고 자신의 작업을 계속 수행할 수 있습니다. 시그널이 도착했을 때만 프로세스는 이를 처리합니다.  대표적인 SIGNAL S..

괜찮은 개발자 되기

꾸준하게어느 날 갑자기 많이 달린다고 해서 실력이 향상되는 것은 아니다. 갑작스러운 노력보다는 오랫동안 지속적으로 노력하고, 너무 서두르지 말고, 즐길 수 있도록 하면서 꾸준히 학습하고 연습하는 자세가 필요하다.  여유있게당연히 하루빨리 실력을 쌓고 싶은 마음이 크지만, 너무 서두르면 부상의 위험만 커질 뿐이다. 스스로에게도 마음이 급할 뿐, 스트레스만 받고 실력은 제자리걸음일 수 있다는 것을 잊지 말자. 처음부터 과하게 목표를 세우기보다는 차근차근 단계를 밟아가자.  재미있게의지만으로는 오래 지속하기 어렵다. 재미 있어져야 꾸준히 할 수 있게 된다.스스로에게 물어보자. 이것이 정말 재미있는가? 그렇지 않다면, 어떻게 하면 재미있게 할 수 있을지 고민해보자.  자신있게다른 사람과 비교하는 것은 정신건강에..

생각창고 2024.05.02

[Java] Java 21의 새로운 기능 톺아보기

Java 17에 이은 다음 LTS 버전인 Java 21에 추가된 기능에 대해 알아보도록 하겠습니다. 💡LTS?LTS란, 'Long-Term-Support'의 약자로, LTS 버전은 다른 버전보다 장기적인 지원과 보안 업데이트를 포함하여 상대적으로 긴 기간 동안 지원됩니다.Java의 LTS 버전은 약 3년 주기로 출시되고 있습니다.  Java 21에 추가된 기능 총 15개의 기능이 추가되었고, 이를 4가지 카테고리로 분류할 수 있습니다. Core Java LibraryJEP 431: Sequenced CollectionsJEP 442: Foreign Function & Memory API (Third Preview)JEP 444: Virtual ThreadsJEP 446: Scoped Values (Pr..

[Spring] 애플리케이션과 NCP Object Storage 연결하기

Spring 애플리케이션과 네이버 클라우드 플랫폼(NCP)의 Object Storage 간 연결을 구성하는 방법에 대해 알아보겠습니다. 💡Object Storage?데이터를 객체 단위로 저장하는 서비스로, AWS의 S3와 유사한 서비스입니다.  1. Object Storage 버킷 생성하기 NCP 콘솔에 로그인하셨다면, 왼쪽 메뉴 중 Services를 클릭 후, Object Storage를 클릭해주세요.    최초로 해당 서비스에 접근하는 경우, 이용 신청 및 약관 동의를 먼저 진행해야 합니다.동의 후, Bucket Management → 버킷 생성을 진행해 주세요.    다음으로, 생성할 버킷의 이름을 입력합니다.버킷의 이름은 리전 내에서 유일한 이름이여야 합니다!    이후, 설정 관리(잠금 여부 ..

Framework/Spring 2024.03.25

좋은 개발 습관?

■ Make it work - 작동하게 만들기 개발의 초기 단계는, 프로그램이 작동하도록, 의도한 목적을 달성하고, 원하는 기능을 제공하도록 만드는 것이다.  ■  Make it right - 올바르게 만들기 프로그램이 작동한다면, 코드베이스를 개선하고, 구조를 개선하여 장기적인 사용을 위해 유지보수성을 높여 '올바른' 코드를 만든다. ■  Make it fast - 빠르게 만들기 마지막 단계에서는 프로그램의 성능을 최적화해, 더 빠르고 효율적이게 만든다.그러나, 이 단계를 달성하기 위해 이전 단계에서 달성한 정확성과 유지보수성이 저하되어서는 안 된다.   "완벽함을 추구하다 기능을 잃어버리는 것보다, 완벽하지 않아도 작동하는 코드가 낫다." Make It Work, Make I..

생각창고 2024.03.24

[Spring] 스프링의 캐시 추상화

들어가기 앞서 - 캐시(Cache)란? 캐시(Cache)는 데이터 빠르게 접근하기 위해 임시로 저장하는 공간 입니다. 캐시는 자주 사용되는 데이터나 결과를 저장해 두었다가, 동일한 요청이 들어올 때 빠르게 응답할 수 있게 도와줍니다. 이는 데이터베이스나 외부 시스템에 대한 접근 횟수를 줄여 시스템의 전체적인 성능을 향상시킬 수 있습니다. 스프링에서는 이러한 캐시의 사용과 관리를 쉽게 만들어주는 캐시 추상화를 제공합니다. 스프링의 캐시 추상화는 다양한 캐시 저장소를 지원하며, 개발자가 캐시 로직을 쉽게 구현하고 관리할 수 있도록 지원합니다. 💡캐시 추상화란? 캐시 추상화는 캐시 구현을 애플리케이션 로직으로부터 분리하여, 개발자가 캐시를 보다 쉽게 사용할 수 있도록 하는 개념입니다. 어노테이션을 사용하여 메..

Framework/Spring 2024.03.17