Error: read ECONNRESET at TCP.onStreamRead (node:internal/stream_base_commons:217:20) { errno: -54, code: 'ECONNRESET', syscall: 'read' } Socket이 Error을 보낼때 처리를 하지 않아서 생기는 에러이다. 클라이언트 소켓에서 갑자기 TCP 연결을 끊을때 소켓은 에러를 던진다. 이때 핸들링을 해주기 위해서는 리스너를 설정하여 에러를 핸들링 해야한다. server 측면에서 에러를 핸들링 해야하는 줄 알았지만 클라이언트 측면에서 에러를 잡아주어야 한다. 처음코드 let server = net.createServer(async function (socket) { socket.setEncoding('u..
Socket.IO 란 Socket.IO 작동방식 Socket.IO 란 Socket.IO는 클라이언트와 서버 간의 짧은 대기 시간, 양방향 및 이벤트 기반 통신을 가능하게 하는 라이브러리이다. WebSocket 프로토콜 위에 구축되었으며 HTTP Long Polling 또는 자동 재연결로의 Fallback과 같은 추가 보장을 제공한다. Socket.IO는 실제로 가능한 경우 전송을 위해 WebSocket을 사용하지만 각 패킷에 추가 메타데이터를 추가한다. 이것이 WebSocket 클라이언트가 Socket.IO 서버에 성공적으로 연결할 수 없고 Socket.IO 클라이언트도 일반 WebSocket 서버에 연결할 수 없는 이유이다. Socket.IO 작동방식 Socket.IO Server(Node.js)와 S..

Git에서 태그는 보통 릴리즈할 때 버전 정보로 사용함. 이번 포스팅에선 태그를 조회하고 생성하는 법과 사용법을 설명하려고 함. Tag 조회하기 Tag 붙이기 Tag 지우기 Tag 원격저장소에 올리기 1. Tag 조회하기 $ git tag options $ git tag -l $ git tag -l "1.0*" 1.0-up1 1.0-up2 1.0-fix 2. Tag 붙이기 Git의 태그는 Lightweight 태그와 Annotated 태그로 두 종류가 있음. Lightweight 태그는 브랜치와 비슷한데 브랜치처럼 가리키는 지점을 최신 커밋으로 이동시키지 않고, 단순히 특정 커밋에 대한 포인터일 뿐 Annotated 태그는 Git 데이터베이스에 태그를 만든 사람의 이름, 이메일과 태그를 만든 날짜, 그리..
출처 프로그래머스 코딩테스트 고득점 Kit 해시 - 위장 문제 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 1. clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 2. 스파이가 가진 의상의 수는 1개 이상 30개 이..

객체지향 프로그래밍의 주요 특징 4가지 캡슐화 상속 다형성 추상화 1. 캡슐화(Encapsulation) - 객체의 데이터(속성)와 메서드(데이터를 처리하는 행위)를 하나로 묶는다. - 실제 구현 내용 일부를 내부에 감추어 은닉한다. - 외부에서 알 필요가 없는 부분을 감춤으로써 대상을 단순화하는 추상화의 한 종류이다. 위의 사진처럼 데이터와 데이터를 처리하는 행위를 묶었다. 데이터를 처리하는 행위를 다른 클래스에서 하게 되면 어떻게 될까? 할인율을 0.9%에서 0.85%로 변경한다고 가정해보자. Product에 의존하고 있는 Store는 0.9 -> 0.85로 변경해야 한다. 예시에서는 하나의 Store 클래스이기 때문에 코드를 한 번만 바꾸면 되지만 많은 클래스들이 Product에 의존한다면, 바꿔야..