본문 바로가기

Study/개발일지

[백엔드온라인TIL] java 학습 30일차 S3 파일첨부 Aws 기능구현하기 프로젝트 시작하기 전에는 스프링부트 1도 몰랐고 어떻게 돌아가는지도 몰랐는데 이번에 이미지 s3로 업로드하는 api만들면서 조금 감이 온것 같다. 진짜 에러의 에러 연속을 만나면서 나 스프링부트랑 안맞나....? 생각하면서 진짜 던지고 싶었는데 지금 에러 다 해결해서 기분이 너무 좋아서 쓰는 글이다ㅎㅎㅎ 우선 aws에서 s3 생성부터 하자 AWS S3 Bucket 생성 위에 사진대로 생성해준다 IAM 사용자 권한 추가 S3에 접근하기 위해서는 IAM 사용자에게 S3 접근 권한을 주고, 그 사용자의 액세스 키, 비밀 엑세스 키를 사용해야 한다. 설정후에 사용자 추가를 하면 액세스 키, 비밀 엑세스 키가 보여지는데 이 키들은 현재 화면에서 밖에 볼 수 없다. 즉, .csv .. 더보기
[백엔드온라인TIL] java 학습 29일차 개발/Java & Spring [Spring] ResponseEntity는 왜 쓰는 것이며 어떻게 쓰는걸까? 오늘의 개발 2018. 10. 16. 기존 내 개인 프로젝트 코드의 RestController 반환값은 모두 Object 타입이었다. 하지만, 일반적인 API는 반환하는 리소스에 Value만 있지 않다는 것을 모두 알고 있을 것이다. 당장 생각나는 것으로는 상태코드, 응답 메시지 등이 포함될 수 있겠다. 그럴때 사용되는 것이 ResponseEntity Class 이다. ResponseEntity는 HttpEntity를 상속받음으로써 HttpHeader와 body를 가질 수 있다. Spring MVC 로 웹페이지 구축했을 때, 제가 작성한 API 반환 타입은 Object 뿐이었습니다 . Header.. 더보기
[백엔드온라인TIL] java 학습 28일차 Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)입니다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소입니다. * db-engines.com 에서 key, value 저장소 중 가장 순위가 높습니다. Redis에 대해서 더 자세하게 알아보기 전 캐시 서버(Cache Server)에 대해서, 데이터 베이스가 있는데도 Redis라는 인메모리 데이터 구조 저장소를 사용하는 이유는 무엇일까요? 데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않습니다. 하지만 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가.. 더보기
[백엔드온라인TIL] java 학습 27일차 📘 사전지식 통상적인 용어 개념 Authentication : 해당 사용자가 본인인지 확인하는 절차 (인증) Authorization : 특정 페이지나 자원에 접근 가능한지 결정할 수 있는 요소 (인가 혹은 권한) Principal : 인증 대상 (아이디 등..) Credential : 인증을 받기위해 필요한 정보 (비밀번호 등..) details : 인증 부가 정보 ContextLoaderListener vs DispatcherServlet ContextLoaderListener 루트 ApplicationContext를 생성하는 클래스 ContextLoaderListener의 ApplicationContext에는 서비스, 저장소, 인프라 빈 등과 같이 전역적으로 볼 수 있는 Bean이 포함되어 있다. .. 더보기
[백엔드스터디WIL]6주차 학습일지 AWS - EC2, RDS를 활용하여 배포하기 [목차] AWS 가입하기 (승인까지 최대 24시간이 걸리니, 미리 해주세요!) 가입: https://portal.aws.amazon.com/billing/signup#/start 해외결제가 가능한 유효한 결제 수단을 넣어야 가입이 정상적으로 이루어집니다. Visa 또는 Master 겸용의 신용카드를 추천드립니다. AWS는 개인에게 클라우드 환경의 가상서버를 제공합니다. 기본 사양의 서버(EC2)를 1년 동안 무료로 사용할 수 있습니다. 가입 시 결제된 금액은 다시 반환됩니다. (일종의 결제 테스트 목적) (←펼쳐보기!) 가입 후 아래와 같은 화면에 접속 하면 성공! https://ap-northeast-2.console.aws.amazon.com/ec2/v2.. 더보기
[Spring프로젝트] 9조 뉴스피드 Starting Assignments 9조(조이름 :npc) spring 프로젝트 진행 ◆ 프로젝트 제목 : OTT 추천 뉴스피드 - 설명 : Over The Top란, OTT는 인터넷을 통해 다양한 플랫폼으로 사용자가 원할 때 방송을 보여주는 VOD 서비스이다. 대표적으로 넷플릭스, 디즈니, 왓챠, 웨이브 등이 있다. 이번 뉴스피드의 목적은 OTT에서 제공하는 방송에 관하여 다양한 소식을 전달하는 것이다. 새롭고 다양한 OTT방송 프로그램들을 한눈에 보여주는 서비스를 구현할 것이다. ◆ 와이어 프레임 - 메인페이지 - 상세페이지 - 로그인 페이지 - 회원가입 - 프로필 페이지 - 비밀번호 변경 페이지 ◆ ERD 설계 ◆ 개발해야 하는 기능 - 필수 기능 1. 사용자 인증 기능 n 회원가입 기능 n 로그인 및 로그아웃 기능 2. 프로필 관리.. 더보기
[백엔드온라인TIL] java 학습 26일차 1. @Valid와 @Validated [ @Valid를 이용한 유효성 검증 ] @Valid의 개념 및 사용법 @Valid는 JSR-303 표준 스펙(자바 진영 스펙)으로써 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션이다. JSR 표준의 빈 검증 기술의 특징은 객체의 필드에 달린 어노테이션으로 편리하게 검증을 한다는 것이다. Spring에서는 일종의 어댑터인 LocalValidatorFactoryBean가 제약 조건 검증을 처리한다. 이를 이용하려면 LocalValidatorFactoryBean을 빈으로 등록해야 하는데, SpringBoot에서는 아래의 의존성만 추가해주면 해당 기능들이 자동 설정된다. // https://mvnrepository.co.. 더보기
[백엔드온라인TIL] java 학습 25일차 스프링을 공부하다 보면 꼭 나오는 이야기가 있다. 스프링은 IoC 컨테이너로 빈을 관리한다. 스프링은 DI를 사용한다. DI 방법에는 생성자 주입, setter 주입, 필드 주입 등이 있다. ... 아니 근데 대체 IoC는 뭐고 DI는 뭔데? 스프링을 공부하다 보면 IoC, DI 같은 개념이 계속해서 나오게 되고, 결국 이를 이해하지 않고서는 스프링을 이해할 수 없다. 결국 이 개념들을 한번 정리하고 이해하고 넘어가는 시간이 필요하다. Inversion of Control "Don't call us. We'll call you." - Hollywood Principle Inversion of Control. 우리 말로 번역하면 제어의 역전 정도로 번역할 수 있을 것 같다. 대체 무슨 제어가 역전된다는 것.. 더보기
[백엔드온라인TIL] java 학습 24일차 스프링 개념 복습 Spring : JAVA 기반의 서버 프레임워크, Spring 기반 WEB 동작 구조는 다음과 같다. IntelliJ : JAVA 코딩에 특화된 IDE (현업에서 많이 쓰인다고 함👍🏻) Project 생성 시 Dependendcies를 선택하는데, 이번 Spring boot 프로젝트에서는 다음의 것들을 선택&활용한다. Lombok - Developer Tools, Spring Web - Web, 웹 프로젝트이기에 Spring Web을 활용 Spring Data JPA - SQL, SQL query 등을 짜지 않고도 Data CRUD가 가능하도록 하는 번역기 역할 MySQL - SQL, H2 Database - SQL, Controller 테스트 등을 위해 서버가 동작 중일 때만 유효한 .. 더보기
[백엔드온라인TIL] java 학습 23일차 @Scheduled Spring Boot에서 @Scheduled 어노테이션을 사용하면 일정한 시간 간격으로, 혹은 특정 시간에 코드가 실행되도록 설정할 수 있다. 주기적으로 실행해야 하는 작업이 있을 때 적용해 쉽게 사용하자. @Scheduled 사용법 @Scheduled 어노테이션을 사용하기 위해 다음과 같이 Application Class에 @EnableScheduling을 추가한다. @EnableScheduling @SpringBootApplication public class SchedulerApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 그리고 실.. 더보기