URL 웹페이지 주소를 표현할때 쓰는 URL은 몇개의 요소로 구성되는데 다음과 같다. 프로토콜 웹 브라우저가 내용을 주고받을 때 사용할 규칙명 서버이름 웹페이지를 요청할 서버 이름 - 도메인 이름이나 IP주소를 입력할 수 있다. 경로 웹페이지 상세주소에 해당한다. 쿼리 문자열 서버로 보내는 데이터에 해당한다. 인터넷상에서 IP주소를 사용하면 IP도용과 더불어 IP추적과 같은 위험한 상황에 놓일 수 있다. 따라서 DNS (Domain name Server)를 이용하는데, www.naver.com 과 같이 도메인 명으로 ip를 변환 시켜주는 서버이다. 클라이언트는 이 도메인이름으로 dns에서 ip주소를 요청하고 이 ip주소를 이용해서 웹서버에 요청을 보낸다. 이 과정이 URL을 통한 통신 작업이다. HTTP..
회사에서 근무 할때나 팀원들과 프로젝트 할때 패키지 경로에 대한 생각을 해본 적이 없었다. 그래서 이번 토이 프로젝트에서 @SpringBootApplication어노테이션이 붙어있는 패키지와 다른 패키지안에 @Configuration이나 @EnableWebSocket등을 다 해줬는데도 설정을 읽어오지 못 했다. 몇시간, 이틀내내 찾아보다가 패키지를 @SpringBootApplication이 붙여져있는 클래스 패키지 하위로 넣었더니 잘 작동 되었다.... 이유인 즉슨 Component Scan이 안된것 이다. 이 인터페이스는 많은 역할 을 하고있다. @EnableAutoConfiguration : 스프링의 설정이 자동 완료된다. @ComponentScan : 컴포넌트 자동 검색 및 구성이 가능하다. @Sp..
Stomp에 대해 공부하다가 WebSocket Handler 에서는 afterConnectionEstablished 와 afterConnectionClosed 와 같이 접속시, 접속끊길시 websocket event 리스너에대한 처리과정에 대한 메소드가 안 보였다. 그래서 구글링한 결과 2가지 방법이 있었는데. 하나는 ApplicationListener 인터페이스를 구현하여 받는 방법과 WebSocketMessageBrokerConfigurer인터페이스의 configureWebSocketTransport메소드를 통해 송수신 관련 설정을 하는 것이다. 구현은 이와같이 하며 설명을 하자면 ApplicationListener는 onApplicationEvent메소드를 가진 인터페이스인데, 이를 구현하면 제너릭..
STOMP 란 ? Simple (or Streaming) Text Orientated Messaging Protocol의 약자로 WebSocket위에 존재하는 프로토콜이다. Websocket과 비교해서 SpringMVC가 HTTP에 프로그래밍 모델을 제공하는 것처럼 Application수준의 사용을 위한 프로그래밍 모델을 제공한다. 이게 무슨 말이냐면 @MessageMapping 어노테이션을 통해 특정 요청에 대한 처리를 가능하게 한다는 것이다. 이것을 Spring MVC에 비유하자면 @RequestMapping을 통해 접속 URL에 따라클라이언트 요청을 처리하게 되는데, STOMP도 이것을 가능하게 한다는 것이다. STOMP의 구조를 한번 알아보자 CLIENT1이 /chatRoom/1을 가지고 SUBS..
프로토콜 부터 이해하기 프로토콜은 컴퓨터나 원거리 통신 장비에서 메시지를 주고 받는 양식과 규칙의 체계이다. 우리가 1,2,3,4 를 하나 둘 셋 넷으로 알고 외국에서도 one two three four로 아는 것처럼 통신 데이터도 일종의 공통 양식이 필요한 것이다. 물론 이렇게 간단하게 양식이 설계되지 않고, 신호 체계, 인증, 오류감지, 수정, 단방향, 반이중, 전이중, 재전송, 수신 완료 과 같이 OSI 계층을 지나면서 얻는 헤더 값들을 주고받게 된다. WebSocket 이란 웹 소켓은 하나의 TCP접속에 전이중 통신(양방향 통신) 채널을 제공하는 컴퓨터 통신 프로토콜이다. 브라우저혹은 애플리케이션이 이 프로토콜을 지원해야 된다는 것이 선제 조건이지만, 지금의 브라우저 대부분은 이 프로토콜을 지원한..
빌드란 ? 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 결과물이다. Java 코드, xml,jpg,jar,properties 파일을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 결과물 이라 할 수 있겠다. 빌드 도구란? 소스코드에서 어플리케이션 생성을 자동화 하기 위한 프로그램이다. 빌드는 코드를 사용 혹은 실행 가능한 형태로 컴파일 , 링킹, 패키징 하는 것을 포함한다. 기본적으로 빌드 자동화는 아래와 같은 정형화된 다양한 작업을 스크립팅하거나 자동화 하는 행위이다. 1 - 종속성 다운로드 2 - 소스코드를 바이너리 코드로 컴파일 3 - 바이너리 코드를 패키징 4 - 테스트 실행 5 - 프로덕션 시스템에 배포 Maven Apache Ant..
Garbage Collection 이란 자바에서는 새로 생성 되는 객체에 대한 메모리들이 Heap영역에 저장된다. 초기 C언어 같은 경우는 이런 참조 변수들에 대한 메모리 관리가 중요했다. 더이상 쓰지 않는 변수들에 대한 메모리 할당을 없애주어야 하는 것이다. 이를 해주지 않는다면, 프로그램에 규정된 메모리가 full되어 누수가 되거나 멈추게 되는 것이다. 그러나 자바에서는 GC라는 장치가 있어, 우리가 더이상 참조하지 않는 객체에 대해서 제거를 해주게 된다. 위 사진과 같이 unreachable (힙 영역 내에서 자신들끼리 참조하는 객체들)이 GC 대상이 된다. 이 때, GC에서 공통적으로 수행되는 단계를 1. Stop-The-World 2. Mark And Sweep 이라고 한다. Stop-The-W..