전체 글

it, 웹 백엔드, 알고리즘
프로젝트/StartStudy

[배포] 프론트엔드 배포 + https 적용

1.S3 와  CloudFront Github aciotn  CI/CD 1 ) Github Actions를 위한 IAM 생성2) 프론트엔드 : github action에서 CI/CD위해 s3와 cloudfront  생성(1) s3 생성(2) cloudfront 생성  2. Cloudfront에 HTTPS 적용 1) acm에서 ssl인증서 발급 2) cloudfront에  인증서 적용 3) route53에서 호스팅  참고https://jindevelopetravel0919.tistory.com/189 [AWS] 가비아 도메인 설정 및 EC2 에 해당 도메인 적용EC2 서버를 배포하면 기본적으로 ip주소로 입력하여 요청하거나 호출해야 합니다. 하지만 보통 일반적인 사이트들을 보면 ip주소로 접근하지 않고 도..

프로젝트/StartStudy

[배포] nginx를 통해 https 연결

1. 가비아에서 도메인을 산다. 2. 가비아에 route 53 연결 및 route 53에 ec2 도메인 연결3. nginx 설정4. ec2 ssh에서 cd /etc/nginx/sites-enabled/default 으로 이동 리버스 프록시 서버 등록 및 SSL 인증서 설정\\4. Certbot cron을 이용한 SSL 인증서 자동 갱신  참고 자료https://velog.io/@kylekim2123/Infra-%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-HTTPS-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-with-Nginx [Infra] 리버스 프록시를 이용한..

프로젝트/StartStudy

[Start Study] 예외처리 코드 리펙토링

1. 코드의 간결함이전 exceptionhandler 각각의 exception마다 지정하여 코드를 길게 작성하게됨 @Slf4j@RestControllerAdvicepublic class ExControllerAdvice extends ResponseEntityExceptionHandler { @ResponseStatus(BAD_REQUEST) //400 @ExceptionHandler(IllegalArgumentException.class) public ExceptionResponse illegalExHandler(IllegalArgumentException e) { return new ExceptionResponse(BAD_REQUEST.value(), e.getMessag..

DB

Index

1 ~ 100인덱스데이터를 빠르게 접근하기 위해 쌍으로 구성된 데이터인덱스가 없으면 테이블의 특정값을 찾기위해 모든 데이터를 다 뒤지는 Table Scan 발생Index 사용 이유?Index는 데이터베이스에서 table의 검색 성능을 높여주는 대표적인 방법중 하나입니다. 일반적인 RDBMS(관계형데이터베이스)에서는 B+Tree구조로 된 index를 사용하여 검색속도를 향상시킵니다.index는 책마다 마지막 페이지에 있는 색인(index)과 같은 역할을 하는 자료구조입니다. 책에서 어떤 용어나 단어를 찾기위해 첫 페이지부터 끝 페이지 까지 전체를 훑지 않아도(Full Table Scan) index를 찾아보면 몇 페이지에 적혀 있는지 바로 찾을 수 있는 것(Index Scan)과 비슷합니다.SELECT ..

DB

RDBMS 와 Nosql의 차이

관계형 데이터베이스(RDB)의 특징사전에 엄격하게 정의된 DB schema를 요구하는 table 기반 데이터 구조를 갖습니다.NoSQL(비관계형 데이터베이스)의 특징table 형식이 아닌 비정형 데이터를 저장할 수 있도록 지원합니다.RDB는 엄격한 schema로 인해 데이터 중복이 없기 때문에 데이터 update가 많을 때 유리합니다.NoSQL의 경우 데이터 중복으로 인해 데이터 update 시 모든 컬렉션에서 수정이 필요하기 때문에 update가 적고 조회가 많을 때 유리합니다.Q. Nosql은 언제 사용하면 좋을까요?NoSQL은 정확한 데이터 구조가 정해지지 않은 경우, 데이터 update가 자주 이루어지지 않고 조회가 많은 경우, 또 scale out이 가능하므로 데이터 양이 매우 많은 경우에 사용..

DB

함수적 종속

함수적 종속어떤 테이블 RX, Y는 각각 R의 속성 집합의 부분 집합 속성 X 각 값에 대해 속성 Y의 값은 오직 하나만 대응될 때, Y 는 X에 대해 함수적 종속 관계 에 있다 함.결정자, 종속자X → Y의 관계를 갖는 속성 X, Y에서 X를 결정자, Y를 종속자 라고 한다.아래의 경우 “학번”이 결정자 , “이름”이 종속자학번 →이름성적은 그 학생의 학번의 과목번호에 종속.학년은 학번에 종속함수적 종속 다이어그램한 테이블에 존재하는 ‘속성’간의 함수적 종속 관계를 그림으로 표현한 것완전 함수 종속, 부분 함수 종속위 테이블 속성 중‘성적’(학번, 과목번호) 은 완전 함수적 종속‘학년’(학번, 과목번호) 에 대해 완전 함수적 종속은 아니고 부분 함수적 종속이라 고함주문 번호 , 부품 번호 → 거래처 ..

DB

이상

이상테이블에서 일부 속성중의 종속으로 인하여 “중복”이 발생하고 이러한 중복으로 인해 테이블 조작 시 문제가 발생하는 현상→ Update ,Insert ,Delete 할때,이상 종류 3가지삽입 이상테이블에 데이터를 삽입할 떄, 의도와는 다른 상관없이 원하지 않는 값들로 인해 삽입할 수 없게 되는 현상.데이터 중복 저장삭제 이상삭제 이상은 테이블에서 한 튜플을 삭제할 때, 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상문제 : 등록 삭제만 하려고 했는데 그 존제 자체가 없어짐갱신 이상갱신 이상은 테이블에서 튜플에 있는 속성 값을 갱신할 떄, 일부 튜플의 정보만 갱신되어 정보의 불일치성이 생기는 증상EX) 연습 문제이상 증상 발생이상테이블에서 일부 속성중의 종속으로 인하여 “중복”이 ..

카테고리 없음

Docker compose 와 Docker- hub

Docker-compose : 결합여러 컨테이너로 구성된 애플리케이션을 정의하고 실행하기 위한 도구.주로 개발 환경에서 여러 서비스를 편리하게 관리하고 실행하는 데 사용version: '3'services: backend: image: my-spring-boot-app:latest ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=dev volumes: - ./backend:/appDocker Compose 파일을 사용하면 docker-compose up 명령을 통해 사용  Docker-hub : 잘 만들어진 컨테이너 개인이 실행Docker 컨테이너 이미지를 저장하고 관리하는 공식적인 Docker 이..

카테고리 없음

Github Action에 대해 알아보자

Github ActionGitHub Actions은 GitHub에서 호스팅되는 지속적인 통합 및 지속적인 배포(CI/CD) 서비스name: Spring Boot & Gradle CI/CD # master branch에 push 또는 pull request가 발생할 경우 동작# branch 단위 외에도, tag나 cron 식 등을 사용할 수 있음on: push: branches: [ develop ] pull_request: branches: [ develop ]jobs: build: # 실행 환경 지정 runs-on: ubuntu-latest # Task의 sequence를 명시한다. steps: - uses: actions/checkout@v2 -..

프로젝트

@Builder와 생성자 차이점

생성자 및 @Builder  정의 및 특징생성자 정의 : 생성자는 클래스의 객체를 생성할 때 호출되는 특별한 메서드입니다특징  : 객체 초기화: 객체가 생성될 때 필드를 초기화할 수 있습니다. @Builder 정의 : @Builder는 Lombok 라이브러리에서 제공하는 애노테이션으로, 빌더 패턴을 쉽게 구현할 수 있도록 도와줍니다.특징 :선택적 매개변수: 필요한 필드만 설정할 수 있어 유연성이 높습니다.가독성: 빌더 패턴을 통해 가독성이 높고, 직관적인 객체 생성 방식을 제공합니다. //생성자Person p = new Person("Kim", "Female", 25);//빌더 패턴Person p = Person.builder() .name("Kim") ..

알고리즘/프로그래머스

[프로그래머스] 소수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코드import java.util.HashSet;class Solution { static boolean[] visited; static HashSet res = new HashSet(); public int solution(String numbers) { String[] arr = numbers.split(""); visited = ..

DB

날짜/ 문자 표기

oracle 예시날짜 → 문자 표기SELECT B.TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS, TO_CHAR(R.CREATED_DATE, 'YYYY-MM-DD') AS CREATED_DATEFROM USED_GOODS_BOARD B JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_IDWHERE TO_CHAR(B.CREATED_DATE, 'YYYY-MM') = '2022-10'ORDER BY R.CREATED_DATE, B.TITLE;SELECT TITLE, BOARD.BOARD_ID, REPLY_ID, REPLY.WRITER_ID, REPLY.CONTENTS, DATE..

카테고리 없음

2월의 회고

2월달엔 Start Study 프로젝트가 끝나게 되었다. 2월달엔 Start Study 프로젝트가 끝나게 되었다. 모든 프로젝트의 이미지와 동영상을 찍어었다. 3월달 - 이력서 수정 3~4월달 - 취업

프로젝트

StartStudy프로젝트 세부화면

https://github.com/Study-Blog-Project/Backend GitHub - Study-Blog-Project/Backend Contribute to Study-Blog-Project/Backend development by creating an account on GitHub. github.com

coffee-it
coffee-it