전체 글 (17) 썸네일형 리스트형 [Server] Docker와 컨테이너, 이미지 Docker 컨테이너 기반의 오픈소스 가상화 컨테이너 격리된 공간에서 프로세스가 동작하는 기술 하나의 서버에 여러 개의 컨테이너를 실행할 경우 서로 영향을 미치지 않고 독립적으로 실행 가벼운 Virtual Machaine을 사용하는 느낌 apt-get이나 yum을 통해 패키지 설치 가능 이미지를 실행한 상태 이미지 컨테이너 실행에 필요한 파일과 설정 값을 포함하고 있는 것 컨테이너 실행에 필요한 모든 정보를 가지고 있기 때문에 의존성 파일을 컴파일하고 다른 것들을 설치할 필요가 없음 변하지 않음 컨테이너가 삭제되더라고 변하지 않고 그대로 남아있음 추가되거나 수정되는 값은 컨테이너에 저장 Linux에 Docker 설치하기 curl -fsSL https://get.docker.com/ | sudo sh Do.. [Server] GCP VM 인스턴스 생성 및 putty를 통한 ssh 접속 GCP VM 인스턴스 생성 및 putty를 통한 ssh 접속(ssh 외부 접속) 1. VM 인스턴스 생성 Computer Engine - 가상 머신 - VM 인스턴스 설정은 각자 상황에 맞게 변경하기 2. 고정 IP 설정 VPC 네트워크 - 외부 IP 주소 예약 버튼을 클릭하여 고정 ip 설정하기 3. PuTTYgen을 통해 public key와 private key 생성하기 Generate 버튼을 클릭해서 key 생성 Key comment: GCP에서 사용하는 이메일 Key passphrase: password Confirm passphrase: password 한번 더 입력 Public key for pasting into OpenSSh authorized_keys file에 있는 텍스트는 GCP 설.. [Spring Boot] Spring Security를 이용한 로그인, 로그아웃, 회원가입 구현과 thymeleaf 연동하기 Spring Security Spring 어플리케이션의 보안(인증, 권한, 인가)을 담당하는 Spring 하위 프레임워크 보안과 관련하여 체계적으로 다양한 옵션을 제공함 Filter를 기반으로 동작 -> MVC와 분리 인증(Authentication): 해당 사용자가 본인이 맞는지 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지 접근 주체(Principal): 보안 시스템이 작동하고 있는 어플리케이션에 접근하는 주체(유저) Credential(비밀번호): 보안 시스템이 작동하고 있는 어플리케이션에 접근하는 주체(유저)의 비밀번호 권한: 인증된 주체가 어플리케이션의 동작을 수행할 수 있도록 허락되었는지 Spring Security 동작 순서 1. 사용자가 아이디와 비밀번호로 .. [JavaScript] Fetch API Fetch API javascript에서 비동기 HTTP 요청을 보내는 방법 jQuery를 사용하지 않는 추세라 fetch를 많이 사용함 형식: fetch(url, [options/method, headers, ...]) Fetch API를 사용해서 비동기 HTTP 요청 보내기 1. GET 요청 function addBookmark(movie_id) { fetch("/movie/addBookmark?movie_id=" + movie_id) .then(response => response.text()) .then(response => { if(response == "success") { location.reload(); } else { alert("My List 추가에 실패하였습니다."); } }); } .. [Spring] RestTemplate RestTemplate Spring해서 제공하는 http 통신에 유용하게 사용할 수 있는 템플릿 REST 방식으로 api를 호출할 수 있는 Spring 내장 클래스 (= RESTFul 원칙을 지킬 수 있음) json, xml 응답을 모두 받을 수 있음 Connect Pool을 사용하지 않음으로 객체를 생성할 때 인자로 ClientHttpRequestFactory의 구현체를 사용해야 함 Spring 3.0부터 지원 가능 RestTemplate Method HTTP Method 설명 excute Any exchange Any 헤더를 세팅해서 HTTP Method로 요청 보낸 후 ResponseEntity로 반환 받음 getForObject GET get 요청을 보내고 java Object로 반환 받음 get.. [Spring Boot] thymeleaf-layout-dialect 적용하기 thymeleaf view template engine 서버상에서 동작하지 않아도 됨 (Natural Template) 순수 HTML 구조를 유지 Spring에서도 공식적으로 thymeleaf 사용을 권장하고 있음 thymeleaf-layout-dialect thymleaf에서 제공하는 layout 라이브러리 spring boot에 thymeleaf-layout-dialect 적용하기 1. gradle dependency 추가 - build.gradle dependencies { implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' implementation 'org.springframework.boot:spring-boot-sta.. [Spring] Spring Data JPA ORM(Object-Relational Mapping) ORM 프레임워크가 중간에서 객체와 DB 데이터(테이블)를 자동으로 매핑 sql 자동 생성 프로그램 복잡도를 줄일 수 있다 복잡한 query가 필요한 경우 직접 query를 입력해야 한다 JPA (Java Persistence API) ORM 기술 표준 JAVA에서 제공하는 API Spring Data JPA Spring에서 JPA를 쉽게 사용할 수 있게 만들어놓은 프레임워크CRUD 처리를 위한 공통 인터페이스 제공 JpaRepository Spring Data JPA에서 CRUD 처리를 위한 공통 인터페이스 find(), findAll(), save(), delete(), ... @Service Repository와 Dto를 통해 DB에 접근하여 .. [Spring] @Controller와 @RestController의 차이 @Controller 주로 MVC에서 View를 반환할 때 사용한다. ResponseBody 어노테이션을 통해 HTTP Response Body에 데이터를 담아 사용할 수도 있다. (이렇게 사용할 경우 View를 리턴하지 않고 Controller에서 직접 데이터 리턴이 가능하다) Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client @ResponseBody 자바 객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트에게 전송할 때 사용한다. Client -> Request -> Dispatcher Servlet -> Handler Map.. 이전 1 2 3 다음