뭔가 오랜만에 자바스크립트를 공부하려니 많이 바뀐듯 하다. 2014년도엔(라떼는) 이렇지 않았는데,,, 다시 2020년부터 개발자로 돌아오게 되니 스프링도 스프링 부트로 개발이 주류를 이룬듯 하고,, 자바스크립트 문법도 많이 바뀌었다. 그중에서 babel이란 놈이 많이 쓰이는것 같은데 간단한 사용법을 알아본다. babel : 자바스크립트 컴파일러 최신 버전의 자바스크립트로 개발을 하고 이걸 배포할때 예전 방식의 자바스크립트 파일로 변환해서 배포하기 위해 사용. babel을 사용하기 위해서는 nodejs를 설치하여야 한다. nodejs.org/en/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs...
책에 있는 네티 예제를 그대로 사용하는데, 계속해서 버그가 나는 현상이 일어났다.. 확인해 보니 내가 윈도우를 사용하는데, home 디렉터리가 내 이름인 "주현태"로 되어있어서, 한글을 제대로 처리하지 못해 파일 경로상에 문제가 생기었다. 그외에도 문제가 산재해있었는데 그에대한 해결을 하고 github에 올린다. 예전부터 웹상에서 게임을 만들거나 채팅을 만드는 것에 대해 궁금했었는데, 아파치 주키퍼에 대한 이해도를 높일수 있을까 하고 공부한 네티에서 구현방법(?)을 익혀간다. 일단, 일반 http 연결이 connection less 한데에 비해 webSocket은 단일 tcp연결을 이용하여 전송 및 응답을 받는다. 그로인해 연결이 끊이지 않고 브라우저와 즉각적인 데이터 교환이 이루어질 수 있는 것이다. ..
네티의 경우 비동기 네트워크 프레임워크이므로, 이를 테스트 하기 위해선 Channel간 연결을 하여 테스트를 해야할 것이다. 그런데, 이러한 채널 연결 없이 embedded로 channel이 연결된 것처럼 사용할 수 있어 단위테스트에 유용한 클래스가 있는데, 이게 EmbeddedChannel이다. 이에대한 설명을 이 포스트에서 주저리 대는 것은 시간낭비로 사료되어 책에서 받아적고 테스트한 git주소를 여기다 적어놓겠다. github.com/jabel123/netty-study/tree/master jabel123/netty-study :octocat: netty공부중. Contribute to jabel123/netty-study development by creating an account on Git..
네트워크를 통해 전송되는 데이터는 모두 동일한 형식(바이트)이다. 바이트가 전송되는 구체적인 방법은 데이터 전송의 기본 메커니즘을 추상화하도록 도와주는 개념인 네트워크 전송에 의해 좌우된다. 사용자는 이러한 세부 사항에 신경 쓸 필요가 없고, 바이트를 안정적으로 전송 및 수신하는 방법만 알면 된다. 예제에 나온 기존 Socket 및 Selector를 이용한 응답 서버를 만드는 예제를 따라쳤었다. github.com/jabel123/netty-study/tree/master jabel123/netty-study :octocat: netty공부중. Contribute to jabel123/netty-study development by creating an account on GitHub. github.co..
솔직히, 3Chapter 밖에 공부를 하지 않았지만, 이번챕터에서 가장 넓은 Insight(통찰력)을 얻은듯 하다. 네티는 우리가 기술과 아키텍처라고 광범위하게 이야기하는 두 관심 영역의 문제를 모두 해결한다. 자바 NIO 기반의 비동기식 이벤트 기반 구현을 이용해 고부하 조건에서도 애플리케이션 성능과 확장성을 보장한다. 네티는 애플리케이션 논리를 네트워크 레이어로부터 분리하는 다양한 설계 패턴을 활용해 코드의 테스트 용이성, 모듈성, 재사용성을 극대화해 개발을 간소화 한다. 1. Channel, EventLoop, ChannelFuture Channel : 소켓 (왜 굳이 소켓을 Channel로 한번 감싼걸까..? 사용하기 편하게 하기 위해서인가.. 공부를 지속하다보면 알게되겠지..) EventLoop..
이번에 공부한 챕터에서는 Netty로 Echo서버를 만드는 예제를 실습하였다. 예제의 경우 메이븐 프로젝트로 다중모듈프로젝틀르 구현하였지만, 나는 gradle로 프로젝트를 구현하였다. 딱히, 블로그에 정리해서 올릴 만한 챕터는 아니었지만, 틈틈이 블로그에 올리는 습관을 들이지 않으니 요즘들어 도통 이런 정리글을 쓰지 않는듯 하여 이러한 뻘글(?) 이라도 계속 업로드 하고자 한다. 예제 애플리케이션의 기능 클라이언트가 메시지를 전송하면 서버가 이 메시지를 반향 출력하는 아주 간단한 예제이지만, 다음 두 가지 이유로 아주 중요한 연습 과정이다. 개발 툴과 환경을 설정하고 확인하는 시험대를 마련할 수 있다. 네티의 핵심 요소인 ChannelHandler를 이용해 애플리케이션의 논리를 구축하는 과정을 체험할 수..
음,, 카프카를 공부하려니 주키퍼에 대한 내용이 많이 나오고 주키퍼를 공부하니,,, 갖고있는 라이브러리에 네티를 사용하기에 네티를 공부하고, 주키퍼, 카프카를 다시공부하여 지식의 질을 높이기 위해 공부를 시작한다. 이번에 공부하는 책은 네티 인 액션이다. 네티 (netty.io) 네티는 유지 관리가 용이한 고성능 프로토콜 서버와 클라이언트를 신속하게 개발하기 위한 비동기식 이벤트 기반 네트워크 애플리케이션 프레임워크이다. 고성능 프로토콜 서버와 클라이언트라,, 감이 안잡히지만 일단 읽는다,, 나중에 코드를 작성하다 보면 언젠간 이해하게 되지 않을까? 고성능 시스템은 단순히 높은 수준의 코딩 기술 뿐만이 아니라 네트워킹, 멀티스레딩, 동시성을 비롯한 여러 복잡한 분야에 대한 전문 기술을 필요로 한다. 네티..
현재 Spring In Action 5판 Rest API를 공부중인데, HATEOAS(Hyper Media As The Engine Of Application State) 부분을 공부하고 있다. HATEOAS란, API로 부터 반환되는 리소스에 해당 리소스와 관련된 하이퍼 링크들이 포함되는 것이다. 따라서 클라이언트가 최소한의 API URL만 알면 반환되는 리소스와 관련하여 처리 가능한 다른 API URL들을 알아내어 사용할 수 있는것이다. 그런데, 책에 나온대로 실습을 진행중, 클래스가 나오지 않는 부분이 있다. 살펴보니 Hateoas의 버전이 업그레이드 되면서, 클래스명이 아래와 같이 바뀌었다고 하니 숙지하도록 하자. 아래의 것 외에도 많은데 대표적으로 변한게 아래와 같다고한다. 더 자세한 사항은 다..
위와같이 하면 다음의 에러가 뜬다. The content of element type "resultMap" must match "(constructor?,id*,result*,association*,collection*,discriminator?)". 그런데,, 아래와 같이하면 에러가 뜨지 않는다.. collection태그는 가장 나중에 붙이나보다.
스프링 시작하기 스프링은 스프링 애플리케이션 컨텍스트(ApplicationContext 이건 스프링에서 클래서로 제공된다) 라는 컨테이너를 제공하는데, 이것은 애플리케이션 컴포넌트(스프링에서 빈이라 불리는 객체들을 뜻하는 것으로 이해)들을 생성하고 관리한다. 그리고 애플리케이션 컴포넌트 또는 빈들은 스프링 애플리케이션 컨텍스트 내부에서 서로 연결되어 완전한 애플리케이션을 만든다. 빈의 상호 연결은 의존성 주입(Dependency Injection 즉 DI로 스프링을 사용하는 회사의 면접등에서 자주 묻는데, 사용할 객체들을 외부로 부터 전략패턴을 통해 주입받는것으로 이해) 이라고 알려진 패턴을 기반으로 수행된다. 즉, 애플리케이션 컴포넌트에서 의존(사용)하는 다른 빈의 생성과 관리를 자체적으로 하는 대신 ..