반응형

분류 전체보기 428

Spring Boot + PayPal 결제 구현해 보기 (sandbox 테스트 환경)

Spring Boot + PayPal 결제 구현 해당 포스팅은 PayPal 결제 테스트 환경인 PayPal sandbox를 사용하여 Spring Boot 프로젝트에서 PayPal Checkout API를 통한 결제 테스트를 구현해 보며 정리한 내용입니다. 전체 코드가 있는 github 주소는 포스팅 맨 하단에 링크되어 있으니 부족한 내용은 해당 링크를 참고해 주시면 좋을 것 같습니다. (아래 구현된 부분은 전체 api 중 아주 일부분에 해당됩니다.) 결제 테스트에 필요한 부분 테스트에 앞서 필요한 것은 테스트를 위한 'PayPal 계정'이 필요하며, 해당 계정에서 생성한 'REST API apps', 'Sandbox text accounts'가 필요합니다. *** test account의 View/Edi..

포토샵 물결, 파도 모양 만들기 (Distort Filter -> Wave 사용)

(해당 포스팅은 포토샵 물결, 파도 모양을 만드는 방법에 대한 포스팅으로 사용된 포토샵 버전은 'Adobe Photoshop 2020 영문 버전'이 사용되었습니다.) 해당 예시는 'Rectangle Tool'을 기반으로 물결 모양을 만드는 예시로, 사용되는 경우에 따라 'Line Tool'을 사용하여 같은 방법을 적용할 수 있습니다. 먼저 위 이미지에서 보이는 것과 같이 물결 모양을 만들 Rantangle 하나를 생성합니다. 다음으로 포토샵 상단 'Filter -> Distort -> Wave...'의 경로를 통해 'Wave' 기능을 적용합니다. 그러면 아래와 같은 메시지가 출력되고 Convert To Smart Object, Rasterize 두 가지 선택지가 나오는데요. 'Convert To Smar..

Photoshop 2023.06.04

Kotlin + Spring Boot 기본적인 api를 만들면서 비교한 Java + Spring Boot와의 차이점

최근 여러 기업들이 Java + Spring 기반의 백엔드에서 Kotlin + Spring 기술 스택을 도입하고 있으며, 백엔드 개발자들 사이에서도 코프링(Kotlin + Spring)이라는 용어가 생길 정도로 코틀린에 대한 관심도가 증가하고 있는데요. 아래 내용은 Kotlin + Spring Boot를 통해 간단한 api(get, post)를 만들면서 비교해 본 Java + Spring Boot와의 차이점에 대한 정리입니다. *** JetBrains에서 만든 JVM 기반의 언어인 코틀린은 자바와의 호환성을 기반으로 생산성을 높이기 위해 나왔으며, 높은 가독성과 자바의 고질적인 문제였던 Null 안전성을 해결하는 것에 초점을 맞춘 언어입니다. 1. 하나의 파일(*.kt)에 여러 개의 클래스 정의 가능 자..

Programming/Kotlin 2023.06.02

스트랭글러 패턴(Strangler Pattern) 개념 정리

지난 5월 AWS Summit Seoul에서 '스트랭글러 패턴(Strangler Pattern)'에 대한 개념을 처음 접하게 되었는데요. 29cm에서 기존의 모놀리식 애플리케이션을 현대적 애플리케이션(MSA, MicroService Architecture)으로 전환하는 과정에서 스트랭글러 패턴이 주로 사용되었다고 하며, 시스템이 정상적으로 돌아가면서 점진적으로 서비스 아키텍처로 분리해 간다는 방식이 궁금증을 자아냈습니다. *Strangler Pattern의 어원은 Martin Fowler가 호주에서 본 Strangler figs라는 식물에서 기원되었습니다. 스트랭글러 패턴은 '소프트웨어 시스템을 점진적으로 재구축하기 위한 디자인 패턴'으로, 이 패턴은 기존에 구축된 레거시 시스템을 한 번에 완전히 대체하..

Programming/Web 2023.05.31

CDN(Content Delivery Network)이란? 콘텐츠 전송 네트워크 개념 정리

이번 5월에 참가했던 aws 컨퍼런스에서도 그렇고 회사 업무 중에도 '서비스에서 사용자 환경을 개선하기 위해 CDN이 사용된다.'는 이야기를 자주 접하게 되었는데요. CDN이란 무엇인지, 어떻게 사용되는지가 궁금하여 정리한 내용입니다. CDN이란 무엇인가? CDN이란 콘텐츠 전송 네트워크(Content Delivery Network)의 약자로 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술(콘텐츠 전송 네트워크)을 말합니다. CDN의 주요 역할은 콘텐츠가 저장된 서버와 사용자의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화하는 것인데요. 많은 산업들의 디지털화가 증가되고 또 글로벌한 서비스들이 늘어남에 따라 CDN의 시장 규모는 점점 더 증가하..

Programming/Web 2023.05.28

RedisHash 사용 시 @Indexed 필드 TTL(timeToLive) 적용 안되는 문제

@RedisHash @Indexed field ttl not working Spring Boot에서 @RedisHash + RedisRepository(CrudRepository를 상속받은)를 통해 인메모리 데이터 저장소 redis를 사용하던 중 @Indexed 어노테이션으로 secondary index를 적용한 필드에 대해 ttl(time to live)이 적용되지 않는 현상이 발생하였습니다. 관련 내용을 찾아보니 github issues에서 'Index cleanup happens on the application side and isn't automatically performed by Redis servers.'라는 내용을 찾을 수 있었는데요. (기본적으로 @RedisHash에서 @Id 어노테이션..

java stream partitioningBy(), groupingBy() 분할과 그룹화

Java Stream 분할과 그룹화 (partitioningBy, groupingBy) 최근 reducing() 메서드를 살펴보던 중 API Note 부분에서 'reducing()은 groupingBy 또는 partitioningBy의 downstream에 사용할 때 유용하다.'는 주석을 보게 되었는데요. 평소 stream을 잘 사용하지 않는 편이라 partitioningBy, groupingBy 기능을 처음 접하게 되었고, 자세한 내용이 궁금하여 검색해 본 결과 알아두면 잘 활용할 수 있는 기능이라고 생각되어 정리한 내용입니다. (그리고 딱 마침 바로 실무에서 활용을 하게 되었는데 활용도도 높고, 상당히 편리한 기능인 것 같습니다.) partitioningBy(), groupingBy() 개념 분할 메..

Programming/Java 2023.05.24

ConcurrentHashMap 개념과 동기화 동작 원리(Thread-safe)

ConcurrentHashMap 개념과 동기화 동작 원리(Thread-safe) 해당 포스팅은 멀티스레드(Multi-Thread) 환경에서 동시성 이슈로 인해 ConcurrentHashMap을 사용해 보면서 정리한 것으로 'ConcurrentHashMap의 개념과 해당 클래스가 Thread-safe 하게 동작할 수 있는 동작 원리'에 대한 내용입니다. (구글링을 해보면 이미 ConcurrentHashMap에 대해 잘 정리된 글이 많지만, 직접 코드를 살펴보고 동작 원리를 파악하고 싶어 다른 글들을 참고하여 정리한 내용입니다.) synchronized 키워드 synchronized 키워드는 아래 ConcurrentHashMap을 이해하는 데 있어서 중요한 요소 중 하나라고 생각되는데요. 멀티스레드(Mult..

Programming/Java 2023.05.21

Ubuntu (20.04.5 LTS) Apache2 웹 서버 설치하는 방법

(Ubuntu) Apache2 웹 서버 설치 방법 해당 포스팅은 'Ubuntu 20.04.5 LTS 환경에서 Apache2 Web Server를 설치하는 방법'에 대한 내용입니다. 웹 서버 설치 및 방화벽 포트 허용 과정이 포함되어 있으며, 해당 과정에서 발생할 수 있는 상황에 대한 주의사항이 포함되어 있습니다. 1. 패키지 목록 업데이트 및 Apache2 설치 //패키지 목록 업데이트 $ sudo apt-get update //Apache2 Web Server 설치 $ sudo apt-get install apache2 apache2 설치로 인해 일정 용량의 디스크 공간이 사용된다는 'After this operation, ~kB of additional disk space will be used.' ..

Programming/Linux 2023.05.15

mysql nextval 사용하는 방법 (oracle sequence 기능)

MySQL nextval 사용 방법 (Oracle Sequence) MySQL의 경우 AUTO INCREMENT를 사용하여 레코드에 대한 값이 중복되지 않고 1씩 증가하도록 할 수 있는데요. 때문에 AUTO INCREMENT는 기본 키(PRIMARY KEY)에 주로 사용됩니다. 하지만 Oracle의 경우 AUTO INCREMENT 기능이 없으며, 해당 역할을 Sequence가 하게 되는데요. 오라클에서 시퀀스(Sequence)는 '유일한 값을 생성해 주는 오라클 객체'이며, '값을 순차적으로 증가시켜 주기 위해서 사용되는 기능'입니다. 해당 포스팅은 mysql에서 필요에 의해 oracle의 sequence 기능을 사용해야 하는 경우 oracle의 sequence 기능인 'nextval를 사용하는 방법'에..

Programming/MySQL 2023.05.13
반응형