본문 바로가기

전체 글

(146)
OAuth- OAuth란? OAuth 2.0 이는 인증을 위한 개방형 표준 프로토콜로, Third-party 프로그램에게 리소스 소유자를 대신해서 리소스 서버에서 제공하는 자원에 접근 권한을 위임하는 방식을 제공한다. Resource Owner는 Client를 인증하는 역할을 수행하고, 인증이 완료된 경우 동의를 통해 권한 획득 자격을 Client에게 부여한다. 권한을 얻은 Client는 해당 서비스에 접근이 가능하다. 이때 권한을 얻었다고 해당 서비스의 모든 리소스에 접근 가능한 것은 아니라 접근이 허용된 만큼만 리소스를 얻을 수 있다. 용어 정리 이름 설명 Resource Owner 리소스의 소유자로서 본인의 정보에 접근할 수 있는 자격을 승인하는 주체이다. 예를 들면 다른 써드 파티 어플리케이션에서 구글을 통해 로그인을 한다..
SpringMVC- HTTP 요청 데이터 HTTP 요청 메시지를 통해서 클라이언트에서 서버로 데이터 전송하는 법 GET: 쿼리 파라미터 POST: HTML FORM HTTP message body 1) GET- 쿼리 파라미터 url의 파라미터에 값을 직접 넣어서 이를 전송하는 방식이다. 이는 따로 메시지 바디가 존재하지 않고 URL의 쿼리 파라미터에 직접 데이터를 넣어서 전송하는 방식이다. 주로 검색, 필터, 페이징등에서 자주 사용한다. 참고로 content-type은 HTTP 메시지 바디의 데이터 형식을 지정한다. 이때 GET URL 쿼리 파라미터 형식은 별도의 HTTP 메시지 바디가 존재하지 않으므로 content-type이 없다. 2) POST- HTML Form 메시지 바디에 데이터를 넣어서 이를 전송하는 방식이다. 주로 회원 가입과 상..
HTTP- 서블릿 개념, 동시 요청, 멀티 쓰레드 서블릿 우리가 웹서버를 만들려면 위의 왼쪽 박스에 있는 모든 기능을 싹 다 구현해야한다. 하지만 우리가 정작 중요한 것은 초록색 박스의 비즈니스 로직을 수행하는 것 뿐이다. 따라서 나머지들은 구현이 매우 귀찮을 것이다. 나머지를 우리가 하지 않고 자동적으로 구현해주는 것이 바로 서블릿의 역할이다. 위의 코드의 경우 urlPatterns(/hello)의 url이 호출되는 경우 helloServelet이 실행된다. http Request 정보는 전부 HttpServletRequest 객체 request에 주입되어 편리하게 사용이 가능하고, response 또한 HttpServeltResponse 객체 response를 통해서 관리된다. request와 response 객체는 http 메시지를 기반으로 해서 ..
Spring -Dto, Vo 개념 정리 DTO(Data Transfer Object, 데이터 전송 객체) Database에서 데이터를 얻어 service나 controller 계층으로 전달할 때 사용하는 객체를 의미한다. 데이터를 전송하기 위해 사용하는 객체라서 그 안에 비즈니스 로직 같은 복잡한 코드는 없고 순수하게 전달하고 싶은 데이터만 담겨있다. DTO와 Entity의 분리 (Request DTO) 근데 왜 굳이 Entity 그자체를 넘기지 않고 Dto라는 별도의 데이터 전송만을 위한 객체를 만들어서 전달을 하는 것일까? 엔티티 자체를 넘기지 않고 꼭 필요한 특정 데이터만을 포함하는 Dto를 전달함으로 불필요한 데이터의 전달을 막고, 이는 통신과정에서의 불필요한 오버헤드의 감소로 이어진다 만일 엔티티 자체를 넘기는 경우, 데이터 베이스에..
Java- 사용자 지정 예외와 예외처리 사용자 지정 예외 생성 일반 예외 생성 public class xxxException extends Exception{ // Exception을 상속받는 경우 public xxxException(){} public xxxException(String msg){ super(msg); } } 일반 예외의 경우 Exception를 상속받는다. 런타임 예외 생성 public class xxxException extends RuntimeException{ // RuntimeException을 상속받는 경우 public xxxException(){} public xxxException(String msg){ super(msg); } } 실행 예외의 경우 RuntimeException를 상속받는다. 예외 처리 try..
Python- numpy 랜덤함수 import numpy as np # randint() > np.random.randint(10) # 0~10의 임의의 정수를 출력 3 > np.random.randint(1,10) # 1~9의 임의의 정수를 출력 7 # rand() > np.random.rand(8) # 0~1 사이의 정규표준분포 난수를 행렬로 (1x8) 출력 [0.83722546 0.22799448 0.48264564 0.66430248 0.07799858 0.92584172 0.99854853 0.60672018] > np.random.rand(4,2) # 0~1 사이의 정규표준분포 난수를 행렬로 (4x2) 출력 [[0.76379732 0.84937148] [0.81031107 0.76820334] [0.21213202 0.0186..
Docker- 기본 개념 정리 docker hub: 프로그램들을 다운 받는 app store와 같은 곳. 이곳에서 image를 다운받을 수 있다. image: 어플리케이션 실행에 필요한 독립적인 환경을 포함하며, 소스코드, 라이브러리, 종속성, 도구 및 응용 프로그램을 실행하는데 필요한 기타파일을 포함하는 불변 파일. 클래스와 비슷한 개념이다. container: 이미지에 종속적인 계층으로 컨테이너를 생성하는 경우, 쓰기 가능한 레이어가 이미지 위에 추가된다. 각각의 컨테이너는 격리되어 서로에게 영향을 주지 않는다. 이미지가 클래스라면 컨테이너는 인스턴스에 해당한다. 하이퍼바이저 가상화 기술 각 하드웨어의 코어마다 가상의 게스트 os를 구동하는 방식. 기존 방식인 하나의 하드웨어에서 하나의 호스트 OS만으로 서버를 돌리면 안정적이긴 ..
홍익 병원 예약 시스템 개발 후기 -2 버그 수정 과정 예약을 취소,완료한 경우 새로운 Doctor가 생성되는 문제가 존재했다. 그래서 그냥 새로운 DoctorData라는 필드를 Reserve 엔티티에 추가하여 데이터만 유지하도록 하겠다고 지난 포스트에서 말했다. 근데 아무리 생각해도 그럴거면 엔티티를 사용하는 이유가 없다는 생각이 들었다. 그래서 좀 고민을 해봤는데 애초에 이러한 문제가 발생하는 근본적인 이유를 찾았다. 컨트롤러에서는 DTO를 사용하는데 DTO는 엔티티와의 연결되어 있으면 안된다.(애초에 엔티티를 사용하지 않기위해서 필요한 정보만을 담아두는 곳이 DTO이기 때문). 아래는 예약 취소를 위해 내가 기존에 구현 로직이다. @GetMapping("/reserve/history") public String getReserveHist..