profile
Desperate Developer

WebSocket 점수 동기화 이슈

소켓io로 온라인 핑퐁웹게임을 만들던 중 발생하였다.자바스크립트로 짜여진 오프라인 핑퐁코드에 소켓을 적용하던중게임을 프론트에서 돌리고 실시간으로 공의 움직임과 패들의 움직임을 서버에 채팅로직 처리하듯 보냈다. 양쪽 클라이언트에서 패들과 공은 동기화되나, 점수가 한방에

약 7시간 전
·
0개의 댓글
·
post-thumbnail

Nestjs jwt undefined 에러

분명 request 변수의 로그를 찍었을 때는 jwt토큰을 비롯한 쿠키 정보들이 담겨있는 것을 확인하였으나, request.cookies의 값이 undefined가 나오는 현상을 겪었다.스택오버 플로우에서 좀 돌아다녀보니 해결방법을 찾았다.main.ts에 cookieP

4일 전
·
0개의 댓글
·

NestJs pkg 설치 오류 해결

전 날 클러스터에서 검증하고 깃허브에 올렸던 코드가 오늘 갑자기 안 돌아갔다.노드모듈이 꼬인건가 싶어서 클론을 다시받아도 문제가 동일하였다.검증을 잘못한건가 싶어서 커밋도 2~3일 전으로 돌려보았다.똑같은 문제가 발생하였다. 심지어 nest명령어도 새로운 프로젝트생성시

2023년 1월 14일
·
1개의 댓글
·
post-thumbnail

CORS 문제

같은 웹사이트에서 주소가 a인 동일한 URL출처간 접근을 허용하는 정책이다.구글에 로그인을 하면 쿠키에 나의 인증정보가 저장되어 구글페이지를 이동 할 때마다 로그인을 하지 않아도 된다. 이 점을 해커가 악용해서 가짜 uri를 열도록 유도하고 악성코드로 무장된 자바스

2023년 1월 2일
·
0개의 댓글
·

nestjs api 만들기 2부

nest g mo 명령으로 모듈을 생성한다.생성된 모듈.ts파일의 controllers필드와 providers필드에 컨트롤러와 서비스 파일을 각각 지정해두면 nestjs는 providers의 서비스를 controller에 inject해준다. 원래 컨트롤러에서 필요한 s

2022년 12월 31일
·
0개의 댓글
·

nestjs api 만들기 1부

터미널에 "npm i -g @nestjs/cli" 를 입력하여 nestjs설치.터미널에 "nest new"를 입력하여 프로젝트 폴더를 생성.src폴더에 main.ts가보이는지 확인."npm run start:prod"을 터미널에 입력 후 브라우저에서 localhost:

2022년 12월 31일
·
0개의 댓글
·

ifndef를 사용하는 이유

같은 인자, 같은 이름을 사용하는 함수를 두번 선언하면 redefinition에러가 난다. 같은 파일 안에서 두번 중복선언을 한것이 아니라면 이 에러는 헤더를 중복선언 하였을 때 주로 발생한다.첫 번째 해결책으로 컴파일러에 강제하는 방법이 있다.헤더파일의 최상위 줄에

2022년 12월 14일
·
0개의 댓글
·

서버가 에러출력없이 꺼지는 이슈

제작한 서버의 스트레스 테스트를 위해 먼저 임의로 F5를 연타해보았다.결과적으로 15연타정도 매우빠르게 새로고침을 하니 서버프로그램이 종료되는 현상이 발견되었다.문제는 try catch로 디버깅을 시도해보아도 에러메시지를 출력하지 않았다.혹시나 하는 마음에 echo $

2022년 11월 27일
·
0개의 댓글
·

웹서버가 응답을 보낸 후 브라우저 무한로딩

이번에 웹서버를 만들면서 크롬환경과 사파리환경에서 서버가 데이터를 모두 보냈음에도 무한로딩이 걸리는 현상을 격었다.context-length가 실제 클라이언트가 받은 페이로드보다 부족하게되면 브라우저는 계속해서 수신을 시도한다.그러므로 웹서버는 응답의 페이로드를 정확하

2022년 11월 27일
·
0개의 댓글
·

CPP로 웹서버 만들기 - 2

7231기준으로 작성

2022년 11월 20일
·
0개의 댓글
·

Fiber - 동시성프로그래밍

IO작업이 빈번한 웹서버와 같은 프로그램에서 단순히 멀티스레드방식으로 구현하면 race condition이 발생 할 수 있다. Fiber를 이용하면 개발자가 소프트웨어적으로 block을 하고 제어권을 다른 준비된 Fiber에게 넘기는 방식으로 race condition

2022년 11월 17일
·
0개의 댓글
·
post-thumbnail

CPP로 웹서버만들기 - 1

작성중

2022년 11월 13일
·
0개의 댓글
·

Nginx와 Apache

1995년에 출시한 웹서버 소프트웨어. 기존의 httpd라는 웹서버의 버그를 수정 및 구조를 변경 하여 출시.클라이언트가 connection을 요청하면 "새로운 프로세스"를 생성한다. 여러개의 connection요청이오면 각 요청마다 새로운 프로세스를 생성한다. 이 방

2022년 11월 13일
·
0개의 댓글
·

HTTP 프로토콜

클라이언트는 서버에 접속하여 http규약으로 통신을 하게되는데, 핵심은 서버에게 "요청 양식"을 보내 서버가 "응답 양식을" 전송해 주길 기다린다.이 포스트에서는 "요청 양식" 즉, request에 대한 이야기다.먼저 첫번째 줄에 메소드(GET | POST | DELE

2022년 11월 10일
·
0개의 댓글
·

웹서버란 무엇인가 ? 그리고 CGI는?

클라이언트(브라우저)에서 www.test.com/index.html, www.test.com/example.html 처럼 www.test.com 사이트의 특정 페이지를 소켓을 통해 요청하면 웹서버는 가지고있는 html을 클라이언트에게 소켓을 통해 전송한다. 로그인 후

2022년 11월 10일
·
0개의 댓글
·

Multiplexing Kqueue

Kernel queue하나의 스레드에서 여러개의 io를 동시에 처리하는 기법이다.웹서버를 기준으로 여러개의 connect요청이 들어왔을 때, kqueue를 이용하면 여러개의 클라이언트를 관리 할 수 있다.request요청을 받고 파일을 서버에 write중일 때 다른 클

2022년 11월 10일
·
0개의 댓글
·

Non-blocking

프로세스는 기본적으로 시스템콜을 하면서 다른 read write같은 시스템콜작업을 할 수 없다. 반드시 진행중인 시스템콜이 종료되고 다음으로 넘어간다. 이를 blocking 블로킹상태라고 한다. 웹서버와 같은 소켓io작업이 빈번한 프로그램에서는 서비스운영이 불가능 할

2022년 11월 8일
·
0개의 댓글
·

소켓

내컴퓨터와 다른 컴퓨터와 데이터를 주고받는 방식은 여러가지있다. stdio를 이용해 집접타이핑해도 되고 usb나 하드를 이용해 물리적으로 전송 할 수 있다. 이 중 이더넷을 사용하여 다른컴퓨터와 통신하는 것이 소켓통신이다.소켓도 파일이다. 다른 컴퓨터와 송수신이 가능한

2022년 11월 8일
·
0개의 댓글
·

세션과 쿠키의 웹서버와의 흐름

웹페이지서 구매, 글작성, 게시글 삭제 등 사용자 정보가 필요한 행동을 수행 할 때, 매번 아이디와 로그인을 입력하면 불편할 것이다.그래서 로그인을 한번만하면 다음 요청에서는 서버가 로그인정보를 가지고 있게되어 클라이언트는 불필요한 작업을 줄일 수 있다.클라이언트에서

2022년 11월 8일
·
0개의 댓글
·

RESTful 확실히 알았다.

개발을 접하지 않는 일반인도 http는 많이 들어보지만 restful방식 get/post방식은 개발공부를 접하면서 처음 듣게된다. 이것은 CRUD(DB와 소통)와 연관되어있다. 먼저 REST는 Representational State Transfer의 약자로 데이터의

2022년 11월 8일
·
0개의 댓글
·