이번 글에서는 Spring Boot 환경에서 CORS 이슈를 경험하고 해결한 과정을 정리했다. 혹시 CORS를 모르거나 관련된 배경지식에 대해 궁금하다면 아래 포스팅을 참고하면 좋을 것 같다. SOP와 CORS 최근 프로젝트를 진행하면서 CORS 이슈를 경험했다. 과거에도 여러 번 겪었던 문제이지만 계속 미뤄오다가 이번 기회에 공부도 할 겸 자료를 정리해보았다. 이 글에서는 SOP와 CORS, 그리고 CORS의 bool-flower.tistory.com 기본적으로 Access-Control-Allow-Origin 헤더 값을 통해 CORS 설정을 해줄 수 있다. Spring Boot 환경에서는 일반적으로 Filter를 구현해서 헤더 값을 설정한다. CORSFilter를 직접 구현하여 헤더 값 설정 Cors..
오늘은 이리저리 미적대다 보니 공부를 그리 많이 하지는 못했다. 오브젝트 8장에 대해서 정리를 했다. 왜인지 집중이 잘 안 돼서 생각보다 시간이 좀 걸렸다. 책을 읽으면 읽을수록 객체지향을 몰라도 너무 몰랐다는 생각이 든다. 알고리즘 드디어 백준 온라인 저지에서 총 100문제를 풀었다. 브론즈 문제가 대부분이긴 하지만... ㅋㅋㅋ 아무래도 단계별 문제를 따라 풀다보니까 자신감이 좀 생기는 것 같다. 이번 주 안에 목표로 한 단계별 문제는 다 풀고, 실제 코딩 테스트에 나올만한 괜찮은 문제들만 골라서 풀어봐야겠다. 300문제까지 가자.
이번 주 스터디는 8, 9장에 대해 나눈다. 7장은 쉬어가는 파트라고 해서 건너뛰었다. 8장에서는 의존성을 잘 관리하기 위해 의존성을 이해하고 의존성을 관리하는 원칙과 기법에 관해 학습한다. 의존성 이해하기 변경과 의존성 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때, 두 객체 사이에서는 의존성이 존재하게 된다. 의존성은 실행 시점과 구현 시점에 따라 다른 의미를 가진다. 실행 시점 : 의존하는 객체가 정상적으로 동작하기 위해서는 실행 시에 의존 대상 객체가 반드시 존재해야 한다. 구현 시점 : 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경된다. public class PeriodCondition impolements DiscountCondition { public boolean isS..
웹 서비스 모델 웹 브라우저와 웹 서버 HTTP는 TCP 연결을 설정하고 이 연결을 사용해서 HTTP 메시지를 교환한다. 웹 서버(Web Server) 웹 페이지들의 저장소와 요청 처리 소프트웨어 웹 페이지 기본 객체(base object)와 참조 객체(object)들로 구성 기본 객체 : HTML file, 페이지 내의 다른 객체를 URL로 참조 참조 객체 : HTML file, JPEG image 등등 웹 객체 주소 : URL(Uniform Resource Locator) URL은 두 부분으로 구성된다. host name : 웹 서버 호스트의 이름 및 도메인 이름 path name : 내가 지정하고자 하는 웹페이지 파일의 경로 즉, URL은 host name과 path name이 결합된 형태이다. 웹..
이번 장에서는 협력과 메시지에 관련한 용어를 정리하고, 인터페이스 설계를 위한 원칙, 기법들에 대해서 소개한다. 도움 되는 내용들이 많이 있었다. 협력과 메시지 협력은 어떤 객체가 다른 객체에게 무언가를 요청할 때 시작된다. 메시지는 협력을 가능하게 하는 매개체이다. 객체는 메시지를 전송하고, 메시지를 수신한 객체는 이를 처리하고 응답한다. 클라이언트 - 서버 모델 두 객체 사이의 협력관계는 클라이언트 - 서버 모델로 자주 비유한다. 클라이언트 : 메시지를 전송하는 객체 서버 : 메시지를 수신하는 객체 그러나 실제로 객체는 협력의 관점에서 두 가지 종류의 메시지 집합으로 구성된다. 객체가 수신하는 메시지의 집합과 외부의 객체에게 전송하는 메시지의 집합이다. 메시지와 메시지 전송 한 객체가 다른 객체에게 ..
이번 글은 같이 스터디를 진행한 친구의 글을 옮긴 것이다. 원글은 여기에서 볼 수 있다. 올바른 책임 할당을 위한 GRASP패턴 GRASP패턴은 “General Responsibility Assignment Softwarre Pattern(일반적인 책임 할당을 위한 소프트웨어 패턴)”의 약자로 객체에게 책임을 할당할 때 지침으로 삼을 수 있는 원칙들의 집합을 패턴 형식으로 정리한 것이다. 1. 도메인 개념에서 출발하기 설계를 시작하기 전에 도메인에 대한 개략적인 모습을 그려 보는 것이 유용 도메인 개념이란 책임 할당의 대상으로 사용하는 거대한 틀 설계를 시작하는 단계에서는 개념들의 의미와 관계가 정확하거나 완벽할 필요가 없다. 중요한 것은 완벽한 설계가 아닌 설계를 시작하는 것! 2. 정보 전문가(INF..
이번 글은 같이 스터디를 진행한 친구의 글을 옮긴 것이다. 원글은 여기에서 볼 수 있다. 객체 지향 설계 객체 지향 설계의 핵심은 역할, 책임, 협력이다. 협력은 애플리케이션의 기능을 구현하기 위해 메시지를 주고받는 객체들 사이의 상호작용이다. 책임은 객체가 다른 객체와 협력하기 위해 수행하는 행동이고, 역할은 대체 가능한 책임의 집합이다. 객체 지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다. 설계 품질 척도 캡슐화란? 객체 내부 구현을 외부로부터 감추는 것, 이렇게 하면 한 곳에서 일어난 변경이 전체 시스템에 영향을 끼치지 않는다. 이것은 객체 지향이 강력한 이유 중 하나 이기도 하다. 변경될 가능성이 높은 부분을 구현, 상대적으로 안정..