해당 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 인간이 이름으로 구분하듯이, Internet host도 hostname 을 가지고 있다. www.facebook.com, www.google.com, 이 그런 예시이다. hostname은 host 정보를 거이 제공하지 않는다. hostname은 router에 의해 구별되기 위해 IP address 라는 일련의 문자열 가지고 있다. IP address는 계층적인 구조를 가지고 있는데, 예를들어 121,7,106,83에서 각각의 구간은 $0~255$ 값을 가지고 Internet 주소에 대한 의미를 가지고 있다. 2.4.1 Services Provided by DNS host를 식별하기 위해 hostname또는 IP ..
이글은 공부목적으로 작성된 블로그입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. e-mail(Electronic mail)은 가장 유명한 응용서비스중 하나이다. 메일은 비동기 방식 의사소통 매체이다.(사람들이 시간을 맞출 필요 없이 원할때 메세지를 보내고 받을 수 있다.) 기존 우편메일 보다 e-mail은 더 장점이 많은데 메세지에 하이퍼링크, HTML text, photo등을 넣을 수 있다. 이번 목차에 Internet e-amil의 application-layer protocols를 알아보고, Internet에 대한 이해를 해보자 위 사진은 Internet mail system에 대한 이해를 돕기 위한 사진이다. user agent, mail servers, SMTP(Simple Mail Tran..
공부 목적으로 작성된 글입니다 왜곡된 내용이 포함되어 있을 수 있습니다. Reactor reactor는 Spring Framework 주도하에 개발된 리액티브 스트림즈의 구현체로 Spring WebFlux 기발의 리액티브 애플리케이션을 제작하기 위한 핵심 역활을 담당한다. https://projectreactor.io/ Reactor는 다음과 같은 특징을 가지고 있다. Reactice Streams: 리액티브 스트림즈을 구현한 라이브러리이다. Non-Blocking: 비동기 방식을 지원한다. 가장 큰 특징중 하나이다. (공부 목적이기도 하다) Java's functional API: Publister와 Subscriber의 상호작을 JAVA의 함수형 프로그래밍을 통해 이루어진다. Flux[$N$]: Re..
개인 공부 목적을 작성된 글 입니다. 왜곡된 사실이 포함되어 있을 수 있습니다. 사람들은 먼거리에 위치한 host에게 파일을 보내거나 받을 수 있다. 이러한 application는 유용하지만 정작 Internet은 알려지지 않았다. Internet이 본격적으로 알려진 것은 World Wide Web이 등장하고 나서 부터이다. Web는 대중들에게 노출된 최초의 Internet Application이다. Web을 통해 Internet이 그저 많은 data network에서 필수적인 data network가 되었다. Web은 소요에 의해 움직인다. 즉 User가 본인이 원하는 것을 원하는 시점에 얻을 수 있다. 이방식은 전통적인 broadcast 방식(TV, radio)와 대비되었다. 또한 개인이 새로운 정보..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 39 명명 패턴보다 에너테이션을 사용해라 명명 패턴: 전통적으로 도구, 프레임워크에서 특별히 다뤄야하는 경우 특벙 이름으로 이를 구별하는 것 getter, setter과 같은 것들이 명명 패턴이라고 할 수 있겠다. 이러한 명명 태펀을 사용하는경우 몇가지 단점이 존재하는데, 오타가 나면 안된다. 올바른 프로그램 요소에만 사용되리라 보증 할 방법이 없다.(해당 이름을 쓴다고 무조건 사용되는 것이 아니기 때문에, 클래스에 test를 붙인다고 해서 자동으로 테스트가 되는 것이 아니다.) 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다.(명명 패턴을 이름으로 표현하는 것이기 떄문에) 이러한 명명 패턴이 문제가 되..
이 글은 공부목적으로 작성된 글 입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 문제상황 yml에 작성된 환경변수를 사용하기 위한 properties 클래스 생성중 해당 값을 바인딩할 수 없다는 에러가 발생하였다. 기존에 문제가 없는 것을 확인하고 푸시까지한 코드여서 상당히 당황스러웠다,.. @ConfigurationProperties(prefix = "google") @Getter @RequiredArgsConstructor public class GoogleOAuthProperties { private final String clientId; private final String clientSecret; } Properties클래스로 OAuth2 Client 정보를 가지고 있다. Client 정보는..
이글을 공부 목적으로 작성된 글입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 계기 처음 스프링 부트를 공부할떄, @Transactional에 대해서 아주 심플하게 이해했다. "db에 접근하기 위해서 @Transactional을 사용해야한다. 데이터에 변경이 @Transactional 써야한다. 만약 데이터를 단순히 조회하기 위해서는 readonly=true, 데이터를 변경하는 경우는 readonly=true를 써야한다," 특히나 repository에서는 사용하지 않고, service에서만 @Transactional를 사용하는 것을 보고 service에서만 사용하는 것이구나 라고, 경험적으로 생각했었다. 처음 스프링부트로 계발을 해보면 @Transactional를 깜박하는 실수를 많이 하곤 했다. 그..
단순한 증명 연습하기 좋은 문제가 있어서 포스팅한다 1. 문제 https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제를 요약하면 순열이 주어지는데, 주어진 순열보다 사전순으로 바로 앞선 순열을 출력해야한다. 2. 접근 일단 숫자들이 순열이라는 것에 대해서 중복된 숫자가 없고 $1$부터 $N$까지의 숫자임을 알 수 있다. 순열 사전순으로 제시하는 방법에 대해서 생각해보자. $k$번째 자리수가 낮아진다면 더 $k+1$ 번째 자리수들은 본인들이 가지고 있는 자리수들 중 가장 사전순으로 높은 부분순열조합을 가..
이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다. 실습환경: spring boot 3.xx 권한 부여 서버는 github의 OAuth app을 활용 클라이언트와 권한 부여 서버간의 연결 구현 https://docs.spring.io/spring-security/reference/servlet/oauth2/index.html OAuth2 :: Spring Security To get started, add the spring-security-oauth2-client dependency to your project. When using Spring Boot, add the following starter: OAuth2 Client with Spring Boot..
CSRF Spring Security에서는 기본적으로 POST 요청에 대해서 거부하도록 설정되어 있다. CSRF 공격으로 부터 예방하기 위해서 인데 POST 요청을 혀용하는 방법으로 GET 요청시 반환되는 토큰을 헤더에 넣어 보내면 POST 요청을 허용하는 방식이다. (기본적으로 데이터가 변경되기 전에 데이터를 조회 또는 view를 렌더링해야한다는 조건이 포함되는 것이다) public class CsrfTokenLogger implements Filter { private Logger logger= Logger.getLogger(CsrfToken.class.getName()); @Override public void doFilter(ServletRequest request, ServletResponse ..