TIL 43

Tower Defense Online Project 트러블 슈팅 - 2

MySQL, Redis가 연결이 안된 경우 계속 시도하는 문제레디스의 경우 연결이 실패한 경우 계속해서 연결 시도를 반복함.이 과정에서 무의미하게 로그가 계속해서 쌓임.DB연결에 실패한 경우 서버가 종료되도록 수정함. 해결 코드import dbPool from '../../db/database.js';import { config } from '../../config/config.js';export const testConnection = async () => { try { const [rows] = await dbPool.query('SELECT 1 + 1 AS solution'); console.log(`${config.database.database} 테스트 쿼리 결과:`, rows[0]..

TIL 2024.11.12

Tower Defense Online Project 트러블 슈팅 - 1

이상한 페이로드 출력  id를 꺼낸 경우C2SRegisterRequest { id: '\n\x04asdf\x12\x04asdf\x1A\x04asdf' } 제대로 파싱을 하지 못하는 에러가 발생함. test codeconsole.log("패킷 타입 : "+packetType) console.log("페이로드 길이 : "+payloadLength) switch (packetType) { case PACKET_TYPE.REGISTER_REQUEST: { const protoMessages = getProtoMessages(); const Register = protoMessages.common.C2SRegisterRequest; ..

TIL 2024.11.12

데이터 중심 동기화 (Data-oriented Synchronization)에 대하여 (Node.js 중심)

데이터 중심 동기화(Data-oriented Synchronization)는 네트워크 환경에서 데이터의 일관성을 유지하기 위해, 클라이언트와 서버 간의 데이터 동기화 방식을 최적화하는 기법입니다. 특히 실시간 멀티 플레이 게임이나 분산 시스템에서 데이터의 상태를 효율적으로 동기화하는 데 사용됩니다. 이 방법은 주로 상태의 변화를 기준으로 동기화하거나, 데이터의 중요한 부분만 전송하여 네트워크 자원의 효율성을 높입니다. 개념 설명상태 기반(State-based): 클라이언트는 주기적으로 전체 상태를 전송하거나 동기화하고, 서버는 이를 바탕으로 상태를 업데이트합니다. 주기적인 스냅샷이 필요하므로, 자주 변경되는 상태에는 다소 비효율적일 수 있습니다.변화 기반(Changed-based): 상태가 변화할 때만 ..

TIL 2024.11.09

상태 동기화에 대하여

상태 동기화(State Synchronization)는 분산 시스템이나 네트워크 환경에서 여러 클라이언트와 서버간에 상태 정보를 일관되게 유지하기 위한 기술입니다. 게임 개발, 실시간 협업 애플리케이션, 분산 시스템 등에서 많이 사용됩니다. 상태 동기화는 주로 세 가지 방식으로 나뉩니다.1. 데이터 중심 동기화 (Data-oriented Synchronization) 설명: 데이터 중심 동기화는 서버에서 클라이언트로 데이터를 전송할 때 전체 상태를 주기적으로 업데이트하는 방식입니다.특징:모든 상태 정보가 전송되기 때문에 클라이언트는 항상 최신 상태를 유지합니다.주기적으로 전체 상태를 전송하기 때문에 구현이 비교적 간단하지만, 네트워크 대역폭을 많이 소모할 수 있습니다.예시: 실시간 전략 게임에서 주기적으..

TIL 2024.11.07

스파르타 코딩 클럽 모의 면접 깔끔한 답변 준비

1. 전송 계층 프로토콜에 대해 설명해주세요.전송 계층 프로토콜에 대해서 말씀 드리겠습니다.사실 아주 짧게 전송 계층 프로토콜로는 TCP와 UDP가 있습니다. 하면 질문 폭탄의 불안으로OSI 7 계층중 4계층으로 애플리케이션이 네트워크를 통해 데이터를 안전하고 효율적으로 송수신할 수 있도록 도와주는 역할을 하는 계층의 프로토콜로 TCP와 UDP가 있습니다. TCP는 연결 지향적 통신으로 3-way handshake 연결 설정을 통해 서버와 클라간의 데이터 송수신에 대한 신뢰성을 보장해 줍니다.TCP의 예시로는 데이터의 신뢰성과 정확성이 중요한 금융 애플리 케이션이나 온라인 쇼핑몰에서 TCP가 사용됩니다. UDP는 비연결 지향적 통신으로 데이터의 도착 여부나 순서를 보장하지 않고 손실된 데이터의 재전송또한..

TIL 2024.11.01

소켓 오류 난 너가 밉다!!!

1. 사건의 발단TCP 연결을 통해 서버와 지속적인 연결이 필요한 Unity 애플리케이션을 강제 종료하면 저 메시지가 뜬다.(사실 뜨는게 당연하다 하지만 소켓 오류라는 내용이 마음에 들지가 않아서 오류가 아닌 정상적인 종료로 만들고 싶었습니다. 2. 해결방법 -1아무튼 유니티 애플리케이션이 종료되거나 객체가 파괴될 때 네트워크 연결을 안전하게 종료하기 위한 코드를 클라에다가 넣으면 소켓 오류라는 보기 안좋은 메시지가 서버 콘솔쪽에 뜨지 않게 되지 않을까?! 열심히 검색을 해보니 Application.wantsToQuit 와 OnWantsToQuit를 찾게 되었다.내용을 보니 흠... NetworkManager에 추가하면 되겠구만! Application.wantsToQuit 이벤트는 Unity 애플리케이션..

TIL 2024.11.01

게임 프로그래밍과 삼각함수는 무슨연관이 있을까?

1. 서론: 삼각함수란 무엇일까?수학을 배우면서 한 번쯤은 들어본 단어, 바로 삼각함수입니다. 하지만 이름만 들어도 어려울 것 같고 실제로 어디에 쓰이는지 감이 오지 않는 것이 사실입니다. 그럼에도 불구하고 삼각함수는 우리 생활 곳곳에 숨어 있습니다. 예를 들어, 여러분이 매일 보는 스마트폰의 화면 움직임, 음악 소리의 파형, GPS로 현재 위치를 정확하게 찾는 기술 등 삼각함수는 보이지 않는 곳에서 큰 역할을 하고 있습니다.삼각함수는 직각삼각형을 통해 각도와 변의 비율을 분석하는 수학적 개념에서 출발합니다. 이를 통해 각도가 일정한 비율로 변할 때, 그 변화가 주기적인 패턴을 가지게 된다는 점을 수학적으로 설명할 수 있습니다. 이런 주기적 패턴이 바로 우리 일상과 과학기술에서 삼각함수가 필수적인 이유입..

TIL 2024.10.30

Load Balancing에 대하여

1. 로드밸런싱 (Load Balancing)로드밸런싱은 여러 서버에 트래픽을 분산시켜 서버의 부하를 효율적으로 관리하는 기술입니다.이를 통해 특정 서버에 과부하가 걸리는 것을 방지하고, 시스템의 가용성과 성능을 향상시킬 수 있습니다.예를 들어, 웹 서비스에서 수많은 사용자가 동시에 접속할 경우, 하나의 서버만으로는 처리할 수 없으므로 여러 대의 서버가 필요합니다.로드밸런서는 이 트래픽을 서버들 간에 고르게 분산시킴으로써 효율적인 자원 활용과 장애 대비를 가능하게 합니다. 예시:쇼핑몰 웹사이트에서 사용자가 많아지면 하나의 서버만으로는 사용자 요청을 모두 처리할 수 없습니다.로드 밸런서는 이러한 요청을 여러 서버로 나누어 처리합니다.A 서버, B 서버, C 서버가 있다고 가정하면, 로드밸런서는 각 요청을 ..

TIL 2024.10.21

대칭키, 비대칭키 암호화에 대하여

1. 대칭키 암호화와 비대칭키 암호화대칭키 암호화:개념: 송신자와 수신자가 동일한 키를 사용해 데이터를 암호화하고 복호화하는 방식입니다. 같은 키를 사용하기 때문에 암호화와 복호화 속도가 빠릅니다.장점:빠른 속도: 대칭키 암호화는 비대칭키보다 암호화, 복호화가 빠르기 때문에 대용량 데이터를 처리할 때 유리합니다.낮은 계산 복잡도: 대칭키 방식은 비대칭키 방식보다 계산 과정이 단순해 리소스가 적게 사용됩니다.단점:키 관리의 어려움: 키를 송신자와 수신자가 공유해야 하므로, 키가 외부로 노출되면 보안에 취약해질 수 있습니다. 특히, 여러 사람과 통신해야 하는 경우, 각각의 사람에게 키를 안전하게 전달하고 관리하는 데 어려움이 있습니다.예시: AES, DES, 3DES 등상황 설명: A는 B에게 비밀 파일을 ..

TIL 2024.10.17

전송 계층 프로토콜에 대하여

위의 글은 모의 면접을 대비하여 미리 공부를 하기 위하여 정송 계층 프로토콜에 대하여 그리고 IP의 한계, 오류 제어, 흐름 제어에 대한 내용을 학습한 내용입니다. 전송 계층 프로토콜전송 계층은 OSI 7 계층 중 4번째 계층으로, 애플리케이션 계층과 네트워크 계층 사이에서 데이터를 주고받는 역할을 담당합니다. 서버 개발자의 관점에서 이 계층은 애플리케이션이 네트워크를 통해 데이터를 안전하고 효율적으로 송수신할 수 있도록 도와주는 중요한 요소입니다. 대표적인 전송 계층 프로토콜에는 TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)가 있습니다. 다른 전송 계층 프로토콜로는 SCTP(Stream Control Transmission Prot..

TIL 2024.10.16