본문 바로가기

CS

(32)
URL, URI, URN Re 나는 기본적으로 도메인 전체를 URL이라고 퉁쳐서 말했는데 궁금해졌다. URI (Uniform resource Identifier)- 인터넷에 있는 자원을 나타내는 유일한 주소이다. URI는 인터넷에서 요구되는 기본 조건으로서 인터넷 프로토콜에  항상 붙어다닌다.- URI안에 하위 개념으로 URN, URI가 존재한다.URN(Uniformed Resource Name) - 프로토콜을 포함하지 않는다. - 해당 자원의 이름을 의미한다. - 독립적인 자원 지시자이다. URL(Uniform Resource Locator) - 흔히 웹 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의   서브넷이다. - 일반적으로 사이트 도메인을 자주 의미한다.
옵저버 패턴 - 행위(by GoF) 정의 : 주체가 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴이다. 또한 앞의 그림처럼 주체와 객체를 따로 두지 않고 상태가 변경되는 객체를 기반으로 구축하기도 한다.ex) X(이전 Twitter)  ① : new TopicSubscriber()로 객체화하고 Observer 객체로 만든다.      → 예전에 배운 것인데 까먹었다... 한참 헤맴.. 인터페이스 단독으로 인스턴스화 할 수 없지만           implements한 객체를 통해서 interface여도 객체화 할 수 있다.② : 생성자를 통해 메소드 호출③ : 생성한 객체가 없다면 등록하라는 의미이다.④ : postMessage 호출⑤ : 메세지를 출력..
전략 패턴 - 행위(by GoF) 정의 : 객체의 행위를 바꾸고 싶은 경우 '직접' 수령하지 않고 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다.  pay 라는 행위를 공통적으로 interface안에서 행위로 정의한 것을 확인할 수 있다.→ 다르게 볼 것이 아니라 다형성이랑 Overriding 그 자체가 아닌가?... 장점- 공통 로직이 부모 클래스에 있지 않고 Context 라는 별도의 클래스에 존재하기 때문에 구현체들에 대한 영향도가 적음- Context 가 Strategy 라는 인터페이스를 의존하고 있기 때문에 구현체를 갈아끼우기 쉬움단점- 로직이 늘어날 때마다 구현체 클래스가 늘어남- Context 와 Strategy 를 한번 조립하면 전략을 변경하기 힘듬
CORS(Cross-Origin-Resource-Sharing) 개요 : FrontEnd단에서 BackEnd에 데이터를 요청하게 되었다. 그러나 같은 서버단이 아니므로 CORS가 발생되었다. 브라우저는 기본적으로 SOP 정책을 따르고 있다. SOP는 2011년 RFC 6454에서 등장한 보안 정책으로 "같은 출처에서만 리소스를 공유할 수 있다"라는 규칙을 가진 정책이다. 다른 사이트에서 쿠키 정보를 가지고 사용자의 요청이 아닌데도 정보를 임의로 획득할 수 있기 때문에 생긴 제도이다. 예를 들면 악의를 가진 사용자가 소스 코드를 CSRF(Cross-Site Request Forgery) 나 XSS(Cross-Site Scripting)와 같은 방법을 사용하여 여러분의 어플리케이션에서 코드가 실행된 것처럼 꾸며서 사용자의 정보(토큰이나 쿠키 등)를 탈취하기가 너무나도 쉬..
팩토리 패턴 - 생성(by GoF) 정의 : 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.  위와 같이 Coffee로 상위 클래스가 중요한 뼈대를 구성하고, 하위 클래스에서 구체적인 내용을 결정하는 예시 코드이다. 장점- 내부적으로 인스턴스를 만드는 코드를 수정하지 않고 새로운 인스턴스를 다양한 방법으로 확장할 수 있음  → Java 자체의 장점인 추상화랑 맞물리는 건가.. 추상화, 다형성이라고 생각하면 되나?- 코드가 일관성있고 간결해진다.단점- 클래스가 많아진다. 또한 클래스 계층도 커질 수 있다. → 단점이라고는 하나 일일이 새로 설계하는 것보다 클래스가 과연 적어질까?....
싱글톤 패턴 - 생성(by GoF) 정의 : 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. → 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는 데 쓰인다. 위와 같이 Singleton b = Singleton.getInstance()의 객체는 Singleton객체를 인스턴스화 하지 않아도 접근할 수 있다. 이는 static으로 인해서 같은 객체의 값을 보장하게 된다. 장점- 매번 인스턴스를 생성하지 않아도 되므로 메모리 낭비가 적어진다.- 의존성 문제 : 모듈들을 쉽게 교체할 수 있는 구조가 되어 테스팅하기 쉽고 마이그레이션하기도 수월합니다.단점- 의존성 문제 : 모듈들이 더욱 더 분리되므로 클래스 수가 늘..
디자인 패턴의 정의와 종류 디자인 패턴- 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상화 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것을 의미한다.→ 반복적인 문제들을 해결할 것인지에 대한 해결 방안이다. 디자인 패턴의 장점1. 재사용성 : 반복적인 문제에 대한 일반적인 해결책을 제공한다.2. 가독성 : 규약이므로 일정한 구조로 작성해 개발자가 코드를 이해하고 유지보수하기 쉽게 만든다.3. 유지보수성 : 코드를 쉽게 모듈화 할 수 있으며, 해당 모듈만 수정하면 보수가 쉬워진다.4. 확장성 : 기능을 추가하거나 변경 시 기존 코드를 변경하지 않고도 새로운 기능을 통합할 수 있다. 패턴의 종류- 생성(Creational) : 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램..
라이브러리 vs 프레임워크 라이브러리와 프레임워크는 특정한 기능들을 모듈화한 것을 의미한다. 라이브러리- 개발자가 애플리케이션의 흐름을 제어하면 필요한 라이브러리의 함수나 메소드를 호출한다.즉, 개발자가 주도적으로 코드를 작성하며, 라이브러리는 그 과정을 보조한다고 볼 수 있다. 프레임워크- 애플리케이션의 구조 또는 틀을 제공한다. 개발을 위한 기본적인 형태와 필수 요소를 포함하고 있다.즉, 개발자는 프레임워크가 정한 규칙과 구조 내에서 개발을 진행해야 한다.