본문 바로가기

전체 글62

[Spring] Gmail SMTP를 활용한 이메일 인증 기능 개발 with Redis 안녕하세요. 프로젝트를 진행하는 과정에서 사용자가 회원가입을 위해 입력한 이메일이 실제 사용자의 이메일인지 확인할 수 없다는 문제가 발생했습니다. 따라서 사용자가 입력한 이메일이 정말 본인 이메일인지 검증하는 기능을 개발하게 됐습니다. 기존에는 사용자가 임의의 문자열을 입력해도 가입할 수 있었다면, 이제부터는 이메일로 발송된 인증코드를 입력해야만 가입할 수 있습니다. 이메일 발송 솔루션을 통해 기능을 구현하는 방법이 일반적이지만, 솔루션 구입에 추가적인 비용이 발생하기 때문에 간편하면서 무료로 사용할 수 있는 웹 메일 기반 이메일 인증 방식을 적용했습니다. 본 포스트에서는 Gmail SMTP를 바탕으로 이메일 인증 기능을 구현했습니다. 1. Flow (1) 이메일 인증 요청 & 인증코드 발송 사용자가 서.. 2024. 4. 14.
[Infra] AWS를 활용한 웹 애플리케이션 배포(4) - 소스코드 배포 안녕하세요. 지난 포스트까지는 RDS 및 ElastiCache를 통해 클라우드 환경에서 MySQL과 Redis를 구축해보는 시간을 가졌습니다. 이번 포스트에서는 구축한 환경을 바탕으로 소스코드를 배포하는 내용을 다루도록 하겠습니다. 이전 포스트 내용이 궁금하신 분들은 아래 링크를 클릭해주세요 :) [Infra] AWS를 활용한 웹 애플리케이션 배포(1) - EC2 인스턴스 생성 및 접속 안녕하세요. 프로젝트를 진행하게 되면 기능 개발이 어느정도 완료된 시점에 소스코드를 배포해서 팀원들과 함께 테스트를 진행하는 등 협업이 필요한 경우가 발생합니다. 저는 조사한 여러 클 hareandrabbit.tistory.com [Infra] AWS를 활용한 웹 애플리케이션 배포(2) - RDS를 통해 클라우드 환경에 .. 2024. 1. 7.
[Infra] AWS를 활용한 웹 애플리케이션 배포(3) - ElastiCache를 통해 클라우드 환경에 Redis 구축 안녕하세요. 지난 포스트에서는 RDS를 통해 데이터베이스를 생성하고, 생성한 DB에 EC2 인스턴스를 연결하는 내용을 다뤘습니다. RDS와 마찬가지로 클라우드 환경에서 Redis 같은 In-Memory DB를 구축하려면 'Memory DB in Redis' 또는 'ElastiCache'를 사용해야만 합니다. 따라서 오늘은 대중적으로 많이 사용되고 있는 Amazon ElastiCache를 통해 클라우드 환경에 Redis를 설치하고, 인스턴스에 연결하는 내용을 포스팅해보려고 합니다. 이전 포스트 내용이 궁금하신 분들은 아래 링크를 타고 이동해주세요. [Infra] AWS를 활용한 웹 애플리케이션 배포(1) - EC2 인스턴스 생성 및 연결 안녕하세요. 프로젝트를 진행하게 되면 기능 개발이 어느정도 완료된 시.. 2024. 1. 7.
[Infra] AWS를 활용한 웹 애플리케이션 배포(2) - RDS를 통해 클라우드 환경에 MySQL 구축 안녕하세요. 지난 포스트에서는 웹 애플리케이션 배포를 위해 EC2 인스턴스를 생성하고, 생성한 인스턴스에 연결해보는 내용을 다뤘습니다. EC2를 통해 깃허브 레포지토리에 저장된 소스코드를 클론해서 받아올 수는 있지만, 서버를 실행시키려면 로컬 환경과 마찬가지로 DB가 설치돼있어야만 합니다. 따라서 오늘은 Amazon RDS를 통해 클라우드 환경에서 DB를 설치하는 내용을 포스팅하려고 합니다. 현재 회사에서는 오라클을 사용하고 있지만, RDS Free Tier가 제공하는 혜택을 받기 위해 MySQL을 채택했습니다. EC2 인스턴스를 생성하고 연결하는 과정이 궁금하신 분들은 아래 링크를 타고 이동해주세요. [Infra] AWS를 활용한 웹 애플리케이션 배포(1) - EC2 인스턴스 생성 및 접속 안녕하세요... 2024. 1. 6.
[Infra] AWS를 활용한 웹 애플리케이션 배포(1) - EC2 인스턴스 생성 및 연결 안녕하세요. 프로젝트를 진행하게 되면 기능 개발이 어느정도 완료된 시점에 소스코드를 배포해서 팀원들과 함께 테스트를 진행하는 등 협업이 필요한 경우가 발생합니다. 저는 여러 클라우드 서비스 중 레퍼런스가 많은 AWS를 활용하기로 결정했습니다. 이번 포스트에서는 AWS를 활용한 웹 애플리케이션 배포를 하기 전 준비과정으로 EC2 인스턴스를 생성하고, 엔드포인트 설정을 통해 EC2 인스턴스에 연결하는 과정까지 살펴보겠습니다. 1. EC2 인스턴스 생성 EC2를 사용하려면 먼저 AWS에 회원가입을 해야합니다. 회원이 아니신 분들은 회원가입 후에 글을 읽어주세요 :) (1) EC2 대시보드에 접속한 후 아래 이미지에서 보이는 '인스턴스 시작'을 클릭합니다. (2) 'Quick Start'에서 'Ubuntu'를 .. 2023. 12. 25.
[Error] Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 안녕하세요. 스프링부트 환경설정 후 처음 실행했을 때 발생한 오류와 해결법을 공유하려고 합니다. 내용***************************APPLICATION FAILED TO START***************************Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the following:If you want an embedded database (H2, HSQL or Derby), .. 2023. 11. 25.
[Java] N자리 랜덤 숫자+알파벳 대문자 문자열 생성 - Random Class 안녕하세요. 프로젝트를 진행하는 과정에서 숫자+영문 대문자 문자열로 이뤄진 중복되지 않는 무작위 인증코드를 생성하는 기능이 필요해서 개발을 진행하게 되었는데, 기능을 구현하는 과정에서 공부하고 정리한 내용을 공유하면 좋을 것 같아 포스팅하게 되었습니다. 오늘은 자바의 'Random' 클래스를 활용해서 무작위 영문 대문자 문자열을 생성하는 방법과 무작위 숫자 문자열을 생성하는 방법을 배워보고, 최종적으로 무작위 숫자+영문 대문자 문자열을 생성하는 방법을 알아보겠습니다. 무작위 숫자 문자열 생성 import java.util.Random; public class CreateRandomNumberCode { public static void main(String[] args) { Random random = .. 2023. 5. 5.
[Oracle] CONNECT BY LEVEL - 연속된 숫자 조회, 순번 생성 CONNECT BY LEVEL 계층형 쿼리 'CONNECT BY LEVEL'을 활용한 예제를 살펴보자. 예시 - 순번 생성 계층형 쿼리를 사용하면 순번을 가진 테이블을 생성할 수 있다. 또한, 이 쿼리를 활용하면 반복문을 사용하지 않고도 순번을 생성해서 채번을 진행할 수 있다. 예를 들어, ID를 '056932'부터 2000개의 ID를 순차적으로 기입해서 데이터를 삽입해야 한다면 어떻게 해야할까? 무식하게 2000개의 ID를 하나씩 넣어서 진행할 수도 있지만 매우 비효율적이다. 이때 'CONNECT BY LEVEL'을 사용하면 보다 쉽게 순번을 만들어서 데이터를 삽입할 수 있다. 아래는 ID를 '056932'부터 2000개의 ID를 순차적으로 생성해서 조회하는 쿼리문이다. SELECT LPAD(LEVEL.. 2023. 1. 19.
[BOJ] 백준 10971번 - 외판원 순회 2(with Java) 문제 알고리즘 1. 한 노드에서 다른 노드로 이동하는데 필요한 비용 데이터를 저장하기 위해서 인접리스트를 선언하고 값을 저장한다. 2. 최소 비용을 구하기 위해서 편의상 answer를 최대값으로 초기화 및 출발 지점 i를 방문처리하고 DFS를 시작한다. 3. DFS 메소드에서 매개변수 start와 인접한 각각의 노드까지의 이동 비용이 0이 아니고 방문하지 않았는지 확인한다. 4. 조건을 모두 만족하면 인접 노드 adj.idx를 방문처리 후에 i에서 출발하고 다시 돌아올 때까지 필요한 비용 sum에 인접 노드까지의 비용 adj.cost를 더해준다. 5. DFS를 수행할 때마다 start와 sum을 갱신하고 메소드를 빠져나올 때 다음 경우의 수를 확인하기 위해서 백트래킹을 수행한다. 6. target 노드를.. 2022. 6. 30.
[BOJ] 백준 2210번 - 숫자판 점프(with Java) 알고리즘 가능한 경우의 수를 찾는 문제이므로 정답 출력용 집합을 만들어준다. 각 위치에 대한 값이 모두 다를 수도 있고 이전에 방문한 위치를 재방문할 수 있으므로 전체에 대해서 DFS를 시작한다. 6자리 숫자를 만들어야하므로 다음 DFS를 수행할 때마다 nextVal을 통해서 값을 갱신하고 depth+1을 통해서 자릿수를 갱신한다. depth가 6이 되면 answer에 값을 추가하고 반환한다. 모든 위치에 대해서 위의 과정을 반복한 후에 answer의 크기를 출력한다. 소스코드 문제링크 2210번: 숫자판 점프 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 21211.. 2022. 6. 30.