Websocket은 단순한 통신구조를 갖고 있기 때문에, 순수 Websocket만으로는 해당 메시지가 어떤 요청인지, 어떻게 처리해야하는지를 처리하는데 있어 까다로움을 가지고있다.What is Stomp?STOMP(Simple Text Oriented Messaging Protocol)은 메세징 전송을 효율적을 하기 위해 탄생한 웹 소켓 프로토콜 중 하나이다.웹 브라우저에서 발행 구독 패턴(Pub-Sub Pattern)을 기반으로 실시간 메시징을 지원할 수 있기 때문에 이점이 있어 이번 프로젝트에서도 테트리스들의 블록에 대한 Canvas의 위치값을 전송하기 위해 사용하게 되었다.또한, STOMP를 사용하여 메세지의 헤더에 값을 줄 수 있어 헤더 값을 기반으로 통신 시 인증처리에 대한 이슈를 해결할 수 있..
도입최근 Prometheus로 운영서버의 JVM 관련 Metric을 수집하는 기능을 만들었다. 이때 GC가 메모리를 얼마나 회수해가는지에 대한 지표를 확인할 수 있었는데 "GC가 어떻게 버려진 객체들을 회수하지?" 라는 의문점이 들어 본격적인 Posting을 하게되었다. 그럼 우선적으로 JVM이 무슨 일을 하는가? JVM이 해주는 작업중 Core 한 기능들은 여러가지가있다.클래스 파일 실행JIT 컴파일러 사용GC(Garbage Collector)를 통한 메모리 관리우리는 이 중 GC에 대해서 Deep Dive 해보자 💡What is GC(Garbage Collector)?GC(Garbage Collector)는 우리가 인풋으로 준 클래스파일을 실행하는 도중에 실행되며, Heap 메모리에서 동작하고 JV..
🤔 그핸뭐?(그래서 HandTris가 뭔가요?)😀 웹에서 즐기는 핸드모션 기반 테트리스 대결 게임입니다!사용자 접근성이 좋은 웹에서 조이스틱으로 즐기던 테트리스 게임을 컨트롤러없이 내 손이 조이스틱이 되어 게임을 즐길 수 있다는 점에서 차별점이 존재하는 웹 게임 서비스입니다. 😙 어디서 영감을 받았냐면요제가 평소에 감명깊게 플레이하던 게임 중 '뿌요뿌요테트리스'라는 게임과 'Tetris 99'라는 게임이 있습니다. 두 게임의 공통점은 모두 테트리스의 기존 틀을 깨트렸다는 점에 있었습니다.테트리스는 직관적으로 봤을 때는 그저 블록을 효율적으로 잘쌓으면서 오랫동안 버티는 수동적인 게임이었습니다. 하지만, 두 게임 모두 다른 유저들과의 대결이라는 키워드를 가지고 인터랙티브한 요소들을 추가하여 테트리스..
덕타이핑객체의 본질을 갖게 본다 = 메서드의 동작이 같아도된다실행 시간 (런타임)에 객체의 속성과 메서드를 검사하여 타입을 결정한다.interface People { talk(): void; whoAmI: string;}class Human implements People { whoAmI = "human" talk = () => { console.log(`say ${this.whoAmI} : 말할 수 있어요`); }}class Robot { whoAmI = "robot" talk = () => { console.log(`say ${this.whoAmI} : 말할 수 있어요`); }}const humanInstance = new Huma..
엔드 포인트 간의 실시간 스트리밍을 가능하게 해주는 통신 프로토콜이다.초기 시그널링 서버에서 두 엔드 포인트의 정보가 교환되고, 교환된 정보를 바탕으로 P2P 연결을 맺게 된다.엔드 포인트 간의 실시간 스트리밍을 가능하게 해주는 통신 프로토콜이다.초기 시그널링 서버에서 두 엔드 포인트의 정보가 교환되고, 교환된 정보를 바탕으로 P2P 연결을 맺게 된다.WebRTC에는 어떤 통신 종류가 있는가?P2P(Peer-to-Peer)SFU(Selective Forwarding Unit)MCU(Multipoint Control Unit)P2PICE(Interactive Connectivity Establishment)두 peer간 데이터 송수신시 최적의 경로를 찾아주는 프레임워크두 Peer간 연결 테스트를 위해 SD..