[SpringBoot] CoolSMS를 통해 프로젝트에 휴대폰 인증 기능 구현[2]
·
SpringBoot
Redis휴대폰번호로 도착한 인증번호를 잠시 저장할 공간이 필요하지만 MySQL과 MariaDB와 같은 RDBMS를 사용하는 것은 비효율적이라 생각했다.  그래서 방법을 찾아보던 중, Redis에 대해 알게 되었다. `Redis`는 고성능의 키-값 저장소로 사용되는 오픈 소스 인메모리 데이터 구조 서버다.  Redis는 Remote Dictionary Server의 약자로, 주로 빠른 데이터 접근 속도와 높은 처리량이 필요한 응용 프로그램에서 사용된다. Redis의 특징1. `인메모리 데이터 저장` : Redis는 모든 데이터를 메모리에 저장하고, 필요에 따라 디스크에 백업한다. 이로 인해 매우 빠른 데이터 접근이 가능하다. 2. `다양한 데이터 구조` : Redis는 문자열, 리스트, 셋, 해시, 정렬..
[SpringBoot] CoolSMS를 통해 프로젝트에 휴대폰 인증 기능 구현[1]
·
SpringBoot
프로젝트에 무분별한 회원가입을 방지하기 위해 휴대폰 인증 기능을 도입하게 되었다. `CoolSms`라는 문자발송대행 서비스를 찾아 구현하게 되었다. https://coolsms.co.kr/ 세상에서 가장 안정적이고 빠른 메시지 발송 플랫폼 - 쿨에스엠에스손쉬운 결제 전용계좌, 신용카드, 계좌이체 등 국내 결제 뿐만 아니라 해용신용카드로 한번의 카드번호 등록으로 자동충전까지 지원합니다. 전용계좌, 신용카드, 계좌이체 등 다양한 결제 방식coolsms.co.kr준비회원가입 후, API Key 관리로 들어가 새로운 API KEY를 발급받는다.build.gradle 의존성 추가implementation 'net.nurigo:sdk:4.3.0'application.properties 설정 추가coolsms.api..
[SpringBoot] AWS EC2, Jenkins를 사용해 깃허브 웹훅 연결하기
·
SpringBoot
저번 게시글에서 ec2 linux 인스턴스에서 젠킨스를 설치하는 것까지 해보았다.  이번에는 깃허브 웹훅과 젠킨스를 연결해볼 것이다.  추후 CI/CD 구현을 할 때 필요하다.  흐름도는 다음과 같다.1. 코드 변경사항을 레포지토리에 커밋하면 깃허브 웹훅이 젠킨스에 신호를 보낸다.  2. 신호를 받은 젠킨스는 파이프라인 빌드를 시작한다.젠킨스를 설치하지 않았다면 이전 게시글을 보고오면 된다.https://l0o0lv.tistory.com/53 [SpringBoot] AWS EC2 Amazon Linux 인스턴스에 젠킨스 설치하기AWS EC2에 젠킨스를 설치해보겠다.설치 과정과 설치 중 발생한 오류 해결에 대한 글이다.(Windows 환경, Amazon Linux 인스턴스 사용)AWS EC2 인스턴스 생성..
[SpringBoot] AWS EC2 Amazon Linux 인스턴스에 젠킨스 설치하기
·
SpringBoot
AWS EC2에 젠킨스를 설치해보겠다.설치 과정과 설치 중 발생한 오류 해결에 대한 글이다.(Windows 환경, Amazon Linux 인스턴스 사용)AWS EC2 인스턴스 생성보안 그룹보안 그룹을 먼저 생성해보자.AWS EC2 대시보드의 네트워크 및 보안 - 보안그룹으로 가서 보안그룹 생성을 눌러준다.  이름을 설정해주고, 인바운드 규칙을 다음과 같이 설정해준다.  그 후 인스턴스 생성 시 기존 보안그룹 선택 - 만들어둔 보안 그룹을 선택해주면 된다.  이제 본격적으로 인스턴스를 생성해보자.인스턴스 생성AWS EC2 대시보드에서 인스턴스 시작 버튼을 눌러주자. region은 서울로 변경해주었다.이름, AMI 설정인스턴스의 이름과 Amazon Machine Image를 선택해준다.  나는 Amazon ..
[SpringBoot] CloudType으로 간단하게 SpringBoot 서버 배포하기
·
SpringBoot
`2024/11/12 현재 프리티어로 CloudType 배포 시 하루에 한 번 무조건 서버가 종료되도록 바뀌었습니다!! 이 점 유의해주세요.` 프로젝트를 하면서 내가 짠 코드를 프론트와 통합하게 되었다. 나는 내 로컬 주소가 프론트에서 접속이 될 거라 생각했고 그 주소로 통신을 시도했다. 하지만 로컬 주소는 특별한 설정이나 터널링 같은 방법을 사용해야 외부에서 내 주소로 접속을 할 수 있다. 그래서 프론트에서 내 로컬로 접속을 시도했을 때 에러가 떴다. 막막하던 와중 클라우드 컴퓨팅 에 대해 알게 되었고, AWS와 네이버 클라우드 플랫폼을 찾을 수 있었다. 그런데 클라우드 서비스를 처음 접해본지라 진입장벽이 높아 서버를 배포하는데 어려움이 있었다. 그러다 주위에서 간단하게 배포할 수 있는 CloudTyp..
[Spring Boot] WebSocket을 활용한 실시간 쪽지 기능 구현(2)
·
SpringBoot
저번 게시글에서 WebSocketConfig, WebSocketHandler를 구성했다. 이제 쪽지 기능을 구현해보겠다.구현UserEntitypackage com.example.SignServer.Entity;import com.example.SignServer.Dto.UserDto;import lombok.*;@Entity(name = "user")@NoArgsConstructor@AllArgsConstructor@ToString@Getter@Setter@Builderpublic class UserEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 회원번호 자동생성 private Long id; //회원번호 pr..
[Spring Boot] WebSocket을 활용한 실시간 쪽지 기능 구현(1)
·
SpringBoot
현재 진행중인 캡스톤 프로젝트에서 웹소켓을 활용해서 실시간 쪽지 기능을 구현하고자 하였다.  실시간 채팅과 쪽지 둘 중 고민하였으나 프로젝트의 컨셉에 실시간 쪽지가 맞다고 생각하였다. 이제 웹소켓을 사용해서 쪽지 기능을 구현하면서 고민했던 것들을 기록해보겠다.웹소켓이란 무엇인가?`웹소켓(WebSocket)`은 인터넷에서 실시간으로 양방향 통신을 가능하게 하는 기술이다. 일반적인 HTTP 프로토콜은 클라이언트에서 서버로 요청을 보내고, 서버가 그 요청에 응답하는 '요청-응답' 방식이다. 하지만 웹소켓은 서버와 클라이언트 간에 지속적인 연결이 유지되어 양방향으로 데이터를 주고받을 수 있다. 지속적인 연결이 포인트다. 웹소켓을 사용하면 서버 역시 클라이언트에게 실시간 정보를 푸시할 수 있으며, 채팅 애플리케이..
[Spring Boot] DB 데이터가 생성될 때 칼럼의 초깃값 설정
·
SpringBoot
투표 커뮤니티 개발 중 유저 회원가입 시 값을 입력하지 않고 초깃값을 설정해야 하는 컬럼이 존재했다.  그래서 `@ColumnDefault`로 초깃값 설정을 하려 했지만 데이터 삽입시 null 값으로 입력되는 문제가 발생했다.  이에 대한 해결과정을 써보겠다. @ColumnDefaultJPA 엔티티의 필드에 대한 기본값을 설정하는데 사용된다.  이 어노테이션은 테이블 스키마 생성 시, 해당 필드에 대한 DDL(Data Definition Language)을 생성하는데 영향을 미친다. 이 어노테이션을 사용하면 특정 필드가 null인 경우에 데이터베이스에 기본값을 할당할 수 있다. 이는 엔티티가 처음 저장되는 시점에만 적용되며, 이후 엔티티가 수정되는 경우에는 적용되지 않는다.하지만 나의 경우 ColumnD..
[SWEA] (D2) 9317. 석찬이의 받아쓰기
·
코딩테스트/SWEA
아기 석찬이는 내년에 초등학교에 입학하지만 아직 알파벳을 떼지 못했다.석찬이의 부모님은 그런 석찬이를 위해 알파벳을 공부할 수 있는 학습지를 구독하였다.학습지에는 길이 N의 알파벳 대소문자로만 이루어진 문자열이 주어지는데, 석찬이는 대소문자를 제대로 구분해서 이 문자열을 받아 적어야 한다.석찬이는 N 개의 문자를 받아 적는 데는 성공했지만, 틀리게 적은 문자들이 몇 개 보인다.석찬이가 몇 개의 문자를 올바르게 받아 적었는지 세어보자. [입력]첫 번째 줄에 테스트 케이스의 수 TC 가 주어진다.이후 TC 개의 테스트 케이스가 새 줄로 구분되어 주어진다.각 테스트 케이스는 다음과 같이 구성되어 있다. 첫 번째 줄에 문자열의 길이 N 이 주어진다. (1 ≤ N ≤ 100,000)두 번째 줄에 석찬이가 따라서 ..
[SWEA] (D3) 1208. [S/W 문제해결 기본] 1일차 - Flatten
·
코딩테스트/SWEA
한 쪽 벽면에 다음과 같이 노란색 상자들이 쌓여 있다.높은 곳의 상자를 낮은 곳에 옮기는 방식으로 최고점과 최저점의 간격을 줄이는 작업을 평탄화라고 한다.평탄화를 모두 수행하고 나면, 가장 높은 곳과 가장 낮은 곳의 차이가 최대 1 이내가 된다.평탄화 작업을 위해서 상자를 옮기는 작업 횟수에 제한이 걸려있을 때, 제한된 횟수만큼 옮기는 작업을 한 후 최고점과 최저점의 차이를 반환하는 프로그램을 작성하시오. 가장 높은 곳에 있는 상자를 가장 낮은 곳으로 옮기는 작업을 덤프라고 정의한다. 위의 예시에서 제1회 덤프를 수행한 이후 화면은 다음과 같다.A부분의 상자를 가장 낮은 B부분에 덤프하였으며, A대신 A’부분의 상자를 사용해도 무방하다. 다음은 제2회 덤프를 수행한 이후의 화면이다.A’부분의 상자를 옮겨..