NFS란?네트워크를 통해 원격 파일 시스템을 마치 로컬 디렉토리처럼 사용할 수 있도록 하는 프로토콜주로 리눅스/유닉스 시스템에서 많이 사용된다. 프론트엔드 설정 (서버)NFS 패키지 설치apt install nfs-kernel-server 이미지 파일을 업로드할 디렉토리를 만들고, 권한을 777로 설정해줘서 모두 접근할 수 있고 읽기 쓰기를 할 수 있게 설정해준다.mkdir imageschmod 777 /var/www/html/images 설정 파일에서 접근 권한 설정vi /etc/exports NFS 서버에서 공유할 디렉토리를 정의하는 설정이다.NFS를 통해 특정 네트워크(10.10.10.0/24)에 /var/www/html/images 디렉토리를 공유하는 설정/var/www/html/images [..
2.24 ~ 2.28 새해 복 많이 받으라고 인사를 나누던 게 엊그제 같은데 벌써 2월이 끝났다.... 시간이 진짜 빨리 간다고 느끼면서 한편으로는 최종 프로젝트가 다가온다는 사실이 조금 기대되는 것 같다. 14주까지 진행하면서 개발자로서 많이 성장한 것 같다. 리눅스, 네트워크 등 기초적인 개념부터 뷰에 대해서도 배우고, 스프링 수업을 들으면서 스프링 부트로 REST API를 구현해보고, 팀원들과 프로젝트 성능 개선에 대해 토론하면서 조금은 개발자다워졌다고 스스로 느끼고 있다!앞으로 다가올 최종 프로젝트에서도 지금까지 공부한 것들을 잘 활용해 완성도 높은 프로젝트를 구현해보고 싶다...!근데 최종 팀 언제 나와요....? 넘 궁금 🥺 이번 주에 배운 내용이번 주에는 드디어 Spring 수업이 끝났..
여러 개의 이미지를 한 번에 넘겨받아 저장해야 하는 경우 멀티파트(Multipart)로 처리해야 한다. 이미지 파일 업로드 기능 구현 상품에 대한 정보와 이미지들을 넘겨받아 DB에 저장하고, 로컬 경로로 이미지 파일을 업로드하는 예제 엔티티 생성Product 엔티티public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long idx; private String name; private int price; @OneToMany(mappedBy = "product") List productImageList = new ArrayList();} ProductImage 엔..
스프링 부트에서 소셜 로그인을 구현하기 OAuth 라이브러리 추가 build.gradle에 추가implementation 'org.springframework.security:spring-security-oauth2-client' 카카오 로그인 설정https://developers.kakao.com/docs/latest/ko/kakaologin/common Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com ✅ Redirect URI 설정카카오 어플리케이션에서 Redirect URI 설정해준다.http://localhost:8080/login/oau..
스프링에서 유효성 검사는 javax.vaildation 패키지의 어노테이션을 활용해서 간편하게 적용할 수 있다. 회원가입, 게시글 작성 등에서 입력값이 올바른지 확인하는 과정에서 Validation을 통해 유효성 검사를 한다. Validation 적용 방법@Valid 사용@Valid 어노테이션을 이용해 컨트롤러에서 DTO의 유효성을 검사한다. DTO에 선언된 검증 조건을 자동으로 확인한다.만약 유효성 검사에 실패하면 자동으로 400 Bad Request 에러가 발생한다.@RestController@RequestMapping("/user")public class UserController { @PostMapping("/signup") public void signup(@Valid @Request..
개발 도구(IntelliJ)에서 환경변수 설정하기Edit Configuration에서 환경변수를 설정하는 방법이다. 디버그 옆 더보기 -> Edit 클릭 Modify options 클릭 Environment variables 클릭 Environment variables 옆에 Edit 버튼 클릭 + 버튼을 누르고 설정할 환경변수의 이름과 value를 설정해주면 된다 ! 프로젝트에서 환경변수 사용하기 application.yml${환경변수 이름} 으로 사용하면 된다.spring: datasource: url: jdbc:mariadb://${DB_URL} driver-class-name: org.mariadb.jdbc.Driver username: ${DB_ID} ..
페이지네이션(Pagenation)이란?대량의 데이터를 일정한 크기(페이지)로 나누어 출력하는 방식이다.-> 이 방식은 성능 최적화와 사용자 경험 개선을 위해 필수적으로 사용된다.예를 들어, 데이터가 100개 있을 때 한 페이지당 10개씩 보여준다면 총 10페이지로 나누어 출력된다.Spring Data JPA에서 페이징 처리스프링 부트에서는 Spring Data JPA의 Page와 Pageable 인터페이스를 사용해서 간편하게 페이징을 구현할 수 있다. DTO페이징한 데이터를 담을 DTO 클래스를 생성한다.Course를 페이징할 것이기 때문에 Course 응답 시 사용하는 CourseResponse를 List로 변수를 만든다. page : 현재 페이지 번호size : 한 페이지당 데이터 개수totalEl..
2.17 ~ 2.21이번 주에 배운 내용월요일에는 웹 소켓과 카프카에 대해서 배웠다.개인적으로 웹 소켓 부분을 배우고 싶었는데 이번 수업을 통해 조금은 알게 된 것 같아서 좋았다. 백엔드에서 처리해줘야 할 부분이랑 프론트에서 처리해줘야 할 부분에 대해 배우고, 웹 소켓을 사용해 실시간으로 메시지를 주고 받는 실습을 진행했다.카프카에 대해서도 배웠고, 카프카와 주키퍼를 통해서 메시지 전송과 수신하는 실습을 진행했다. 프론트 서버 1대, 카프카-주키퍼 서버 1대, 나머지 백엔드 서버를 만들어서 팀원들과 실습을 진행했다.밑에가 그 내용인데.... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 넘 웃겨가지고 강의실에서 웃참하느라 힘들었다. 화요일에는 stomp와 spring cloud gateway, eureka에 대해서 배웠다.S..
DataSource로 DB 이중화를 해볼 것이다. DB를 Master, Slave 구조로 설계하여Master DB는 쓰기 (Innsert, Update, Delete) 작업을 수행하고, Slave DB는 읽기(Select) 작업을 수행해서 성능을 향상시키는 방법이다. build.gradle에 라이브러리 추가jpa를 추가해주고, mariadb를 사용할 것이기 때문에 mariadb client 라이브러리를 추가해준다.implementation 'org.springframework.boot:spring-boot-starter-data-jpa'implementation 'org.mariadb.jdbc:mariadb-java-client' application.yml에 설정 추가application에 dat..
Swagger란? Swagger는 RESTful API를 설계, 문서화, 그리고 테스트할 수 있도록 도와주는 오픈 소스 프레임워크API의 설계 및 관리에 널리 사용된다. 공식 사이트 : https://swagger.io/ API Documentation & Design Tools for Teams | SwaggerSwagger and OpenAPI go hand‑in‑hand. Swagger offers powerful and easy to use tools to take full advantage of the OpenAPI Specification. See how we do itswagger.io Swagger API 사용하기build.gradle에 추가implementation 'org.springd..