채야미의 코드레시피🍳

분류 전체보기

Dev/Spring Boot
쇼핑몰 페이지는 기본적으로 로그인 여부와 상관 없이 이용 가능하지만, 특정 기능에는 로그인한 사용자의 정보가 필요하다. 문의 기능은 로그인 여부에 따라 정보 요청이 달라지고(비로그인시 이름,이메일을 입력), 문의 답변과 리뷰 작성은 로그인한 사용자만 가능하게 했다. 클라이언트에서 이를 가져오는 것은 보안에 취약하므로 내부에서 현재 로그인한 사용자 정보를 사용하는 것이 안전하다고 판단했다. 로그인 중인 사용자의 정보를 가져오는 방법에는 두 가지가 있다. SecurityContextHolder 클래스를 이용하는 방법, 그리고 우리는 로그인에 jwt를 사용하고 있으므로, 클라이언트에서 요청을 보낼 때 Header에서 보내는 accesstoken을 사용할 수 있다. Spring Security - 인증과 인가 ..
Dev/Spring Boot
쇼핑몰은 홈에서 상품 리스트를 보여준다. 새 상품별, 인기순 등 조건에 따라 리스트를 보여주려고 생각하니 페이징을 해야겠다는 생각을 하게 됐다. Spring Data JPA는 데이터베이스에서 데이터를 페이징하는 기능을 지원하기 때문에 이를 이용하기로 함! React와 함께 REST API로 구현 중이기 때문에, 클라이언트에서 URL 파라미터로 번호, 크기를 보내 페이징을 하도록 설계했다. 따라서 컨트롤러에서 URL 파라미터로 페이지 번호와 크기를 받고, 서비스 클래스에서 직접 Pageable(번호, 크기 담은 객체)을 생성해 서비스 메서드에서 URL 파라미터를 메서드로 받도록 구현했다. 페이지 번호 : 말 그대로 페이지 번호이다. 0부터 시작 크기 : 한 페이지 안에 보여줄 요소의 개수 기존 서비스 & ..
Dev/Spring Boot
MySQL과 Workbench 설치MySQL 설치하기 [MySQL] MySQL, MySQL Workbench 설치하기2024.04.19 글 업데이트! 업데이트 내용 : MySQL 버전. 끝. 다운로드 링크 : https://dev.mysql.com/downloads/windows/installer/8.0.html MySQL :: Download MySQL Installer Note: MySQL 8.0 is the final series with MySQL Installer. As of MySQL 8chaeyami.tistory.comConnections 생성워크벤치를 실행하고, + 버튼을 눌러 커넥션을 생성한다.원하는 커넥션 이름으로 설정해 Test ConnectionMySQL 설치시에 설정했던 root..
Dev/Spring Boot
관리자 페이지에서 판매할 상품을 등록한다. 엔티티와 함께 등록 로직도 다 구현했으니 이제 사진을 업로드 해야 한다. 우선 구조를 생각해보자. 사진은 서버에 저장되어야 하며, 경로를 DB에 저장해야 한다. -> MultipartFile 사용 : Spring의 파일 업로드 인터페이스 한 상품 객체에 여러 사진 경로가 저장될 수 있어야 한다. -> 상품 엔티티에 사진 경로 리스트 필드 리스트 필드는 OneToMany로 구현해야 한다. -> 썸네일 엔티티가 별개로 필요하다. 정리하면 이미지 업로드는 사진을 저장할 엔티티(테이블)을 만든다. MultipartFile 인터페이스로 구현한다. 상품과 썸네일은 일대다 (1:N) 관계 엔티티 설정 ProductThumbnail 엔티티 생성 사진을 저장할 엔티티를 생성한다..
STUDY/SQLD
식별자의 개념 식별자(Identifier) : 엔터티(Entity)의 각 인스턴스(Instance)를 개별적으로 식별하기 위해 사용 엔터티는 일종의 개념이며, 실제로 존재하는 것이 아니라 비슷한 특성을 가진 객체들의 집합이기 때문에 이런 객체들을 구별하기 위해서는 각 객체에 고유한 식별자가 필요하다. 식별자는 단순히 하나의 속성(Attribute)이 될 수도 있고, 여러 속성의 조합이 될 수도 있다. 식별자의 특징 유일성 주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분 최소성 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수 불변성 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 존재성 주식별자가 지정되면 반드시 데이터 값이 존재 (Null X) 식별자..
STUDY/SQLD
관계의 정의 엔터티 간의 논리적인 관련성, 동사형 사전적으로 정의하면 상호 연관성이 있는 상태이다 “엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태 로서나 행위로서 서로에게 연관성이 부여된 상태” 라고 할 수 있다. 관계의 페어링 페어링 : 인스턴스가 개별적으로 관계를 가지는 것 관계 : 페어링의 집합을 관계로 표현 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다. 관계 페어링(Relationship Paring) : 각 엔터티 인스턴스가 자신과 관련된 다른 엔터티 인스턴스와의 관계에 참여하는 것 * 인스턴스 각각은 자신의 연관성을 가지고 있을 수 있음 * 이것을 집합하여 “강의한다”라는 관계를 도출 관계의 분류 존재의 의한 관계 ..
STUDY/SQLD
속성의 개념 속성 : 엔터티가 가지는 최소 의미 단위, 인스턴스의 구성요소 업무에서 필요로 한다. 의미상 더 이상 분리되지 않는다. 엔터티를 설명하고 인스턴스의 구성요소가 된다 엔터티, 인스턴스, 속성, 속성값의 관계 한 개의 엔터티는 두 개 이상의 인스턴스의 집합 이어야 한다. 한 개의 엔터티는 두 개 이상의 속성을 갖는다. 한 개의 속성은 한 개의 속성값을 갖는다. 속성의 분류 특성에 따른 분류 기본속성(Basic Attribute) : 업무분석을 통해 바로 정의한 속성 설계속성(Designed Attribute) : 원래 업무상 존재하지는 않지만 설계하며 도출해내는 속성 파생속성(Derived Attribute) : 다른 속성으로부터 계산이나 변형되어 생성되는 속성 엔터티 구성방식에 따른 분류 PK..
STUDY/SQLD
엔터티의 개념 사람, 장소, 물건, 사건, 개념 등의 명사 업무상 관리가 필요한 관심사 저장이 되기 위한 어떤 것(Thing) 엔터티와 인스턴스 엔터티 특징 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.(예. 환자, 토익의 응시횟수, …) 유일한 식별자에 의해 식별이 가능해야 한다. 영속적으로 존재하는 인스턴스의 집합 이어야 한다.(두 개 이상) 엔터티는 업무 프로세스에 의해 이용되어야 한다. 엔터티는 반드시 속성이 있어야 한다. 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. 엔터티의 분류 유무형에 따른 분류 분류 예시 설명 유형 사원, 물품, 강사 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티 업무로부터 엔터티를 구분하기가 가장 용이하다 개념 조직, 보험..
STUDY/SQLD
모델링 모델링의 정의 현실세계를 단순화시켜 표현하는 것 사물 또는 사건에 관한 양상(Aspect)이나 관점(Perspective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것 현실 세계의 추상화된 반영 특징 추상화 (모형화, 가설적) : 현실세계를 일정한 형식에 맞추어 표현한다. 단순화 : 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현 명확화 : 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술 모델링의 세 가지 관점 데이터 관점 :업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지 모델링하는 방법 프로세스 관점 : 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야하는지 모델링하는 방법 상관 관점 : 업무가 처리하는 일의..
코딩테스트 연습/백준
문제 https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 더보기 문제 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있다. 각 풍선 안에는 종이가 하나 들어있고, 종이에는 -N보다 크거나 같고, N보다 작거나 같은 정수가 하나 적혀있다. 이 풍선들을 다음과 같은 규칙으..
코딩테스트 연습/백준
문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 더보기 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가..
TIP/Tistory
마음에 쏙 드는 스킨을 적용해도, 완벽하게 원하는 대로 사용하려면 커스텀이 필수인 것 같다. hELLO 스킨을 적용하고 난 후 상당히 만족하며 사용하고 있고, 사소한 부분들은(특히 디자인) 내가 원하는 대로 커스텀해서 사용하는 중이다. 카테고리 디자인부터 글 헤더(제목영역), 태그 위치 등등 커스텀한 대부분은 현재 내가 사용하는 옵시디언 테마를 참고했다. 물론 옵시디언 테마도 열심히 커스텀 해서 사용하는 것이지만... 기존 hELLO 테마의 글 페이지 상단에는 이렇게 프로그레스바와 함께 글의 제목만 표시된다. 그리고 내가 원했던 것은 이러한 형태로 카테고리까지 함께 표시되고, 이를 클릭하면 해당 카테고리 글 모아보기로 이동하는 것! 사이드바에 현재 보고있는 글의 카테고리만 펼치게 하는 코드에서 영감을 받..
코딩테스트 연습/백준
문제 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 더보기 문제 오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. BOJ를 운영하는 회사 답게 사람에게 번호를 1부터 N까지로 배정했고, 아래와 같은 능력치를 조사했다. 능력치 $S_{ij}$는 i번 사람과 j번..
STUDY/네트워크
1. DHCP 프로토콜 정적 할당 vs 동적 할당 정적 할당 : IP 정보를 직접 설정하는 것 일반적으로 데이터 센터에서 사용 동적 할당 : 자동으로 설정하는 것 사무실 네트워크에서 사용 DHCP(Dynamic Host Configuration Protocol) 프로토콜 IP를 동적으로 할당하는 데 사용되는 프로토콜 IP 주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당받을 수 있다. BOOTP DHCP는 BOOTP(Bootstrap Protocol)라는 프로토콜을 기반으로 한다. DHCP는 BOOTP와 유사하게 동작하지만 몇 가지 기능이 추가된 확장 프로토콜 BOOTP와 호환성이 있어 서로의 서비스 포트를 공유하고 정보를 수신할 수 있다. 2. DHCP 동작 방식 DHCP Discover..
STUDY/네트워크
DNS를 이용한 로드밸런싱은 동일한 레코드 이름에 다른 IP 주소를 할당함으로써 질의에 따른 응답 IP 주소를 분산시키는 방법하지만 DNS는 서비스의 상태를 체크하지 않음→ 문제가 발생한 서비스에 대한 질의에도 정상적인 응답이러한 문제를 해결하기 위해 등장한 것이 GSLB(Global Server Load Balancing)GSLB는 DNS의 기능인 도메인 질의 응답과 함께 서비스의 상태를 체크하는 역할이를 통해 정상적인 서비스만 사용자에게 연결만약 특정 서비스에 문제가 발생하면 GSLB는 그 서비스의 레코드를 잠시 사용하지 않으므로 사용자는 항상 정상적인 서비스에 접근할 수 있고, 이 때문에 GSLB는 '인텔리전스 DNS'라고도 불린다.이제부터 GSLB의 동작 방식, 분산 방식, 그리고 GSLB를 사용..
ChaeYami
'분류 전체보기' 카테고리의 글 목록 (2 Page)