목록분류 전체보기 (159)
개발자공부일기
export const spawnMonsterReqHandler = ({socket}) => { const {user,opponent}=findUserGameOpponentBySocket(socket); testLog(0,`spawnMonsterReqHandler에 user가 있을까? ${user}`,'blue'); testLog(0,`spawnMonsterReqHandler에 user.socket이 있을까? ${user.socket}`,'red'); const monster = spawnMonster(monsterid,monsterNum,user); addMonster(monster); const response = createS2CSpawnMonsterResponse(monster.mons..
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr function solution(numbers, target) { // 최종 결과를 저장할 변수, 초기값 0으로 설정 let answer = 0; // 깊이 우선 탐색(DFS) 재귀 함수 정의 const dfs = (index, sum) => { // 배열의 모든 원소를 탐색했을 때 if (index === numbers.length) { // 현재 합계가 target과 정확히 일치하면 if (sum ===..
oneof는 하나의 필드만 활성화되도록 하는 기능으로, 통신 패킷에서 여러 선택 가능한 데이터 중 하나만 보낼 때 사용됩니다. 예를 들어, 클라이언트와 서버가 서로 다른 메시지 타입(텍스트, 이미지, 상태 변경 등)을 주고받을 때 유용합니다.oneof 필드는 oneof 공유 메모리의 모든 필드를 제외하고 일반 필드와 같으며 최대 한 필드를 동시에 설정할 수 있습니다.oneof의 member를 설정하면 다른 모든 member는 자동으로 지워집니다.선택한 언어에 따라 특별한 case() 또는 WhatOneof() 메서드를 사용하여 oneof에 어떤 값이 세팅되는지 확인할 수 있습니다.Node.js 환경에서 TCP 통신을 할 때 Protocol Buffers의 oneof를 사용하는 예제1. Protobuf 파..
SPOF(Single Point of Failure, 단일 장애점)은 IT 시스템에서 중요한 개념으로, 특히 백엔드 시스템 설계, 네트워크 아키텍처, 물리적 하드웨어 구성 등에서 장애의 주요 원인이 될 수 있습니다. SPOF를 이해하고 이를 제거 또는 최소화하는 전략은 고가용성(High Availability, HA) 시스템 설계의 핵심입니다. 1. SPOF의 정의와 중요성정의: 시스템 구성 요소 중 단 하나라도 고장 나면 전체 시스템이나 서비스가 중단될 수 있는 단일 지점을 의미합니다.중요성: SPOF는 시스템의 안정성, 가용성, 확장성에 직접적인 영향을 미칩니다. 특히 비즈니스 크리티컬 시스템(금융 거래 시스템, 의료 정보 시스템 등)에서는 SPOF 제거가 필수입니다.2. SPOF의 주요 사례1) 하..
게임 서버 아키텍처게임 서버 아키텍처는 게임의 종류, 유저 수, 실시간성과 확장성 등 다양한 요구사항에 따라 설계 방식이 달라집니다. 이번 글에서는 대표적인 게임 서버 아키텍처와 각각의 특징, 그리고 실제 게임 예시를 살펴보겠습니다. 1. 클라이언트-서버 아키텍처구조:클라이언트는 사용자 인터페이스와 그래픽을 처리하며, 서버는 게임 로직, 데이터 동기화, 보안 등을 처리하는 중앙 시스템입니다.특징:클라이언트는 최소한의 게임 상태를 관리하며, 모든 중요한 데이터는 서버에서 처리됩니다.사용 예시:MMORPG: 월드 오브 워크래프트RTS: 스타크래프트장점:보안: 서버가 핵심 데이터를 관리하여 치트 방지에 유리.일관성: 서버가 모든 클라이언트를 동기화하여 데이터 불일치 문제를 방지.확장성: 서버를 증설하여 플레이..
지금 게임을 실행해 보면이렇게 내 캐릭터의 분신(?) 이 날 자꾸 밀치고 있다.하지만 다른플레이어의 시점에선 내 분신이 보이지 않는다. 왜 그럴까? 지금 내 코드에선 캐릭터를 랜더링할때 클라이언트에서 본인의 위치로 랜더링하고 세션에 존재하는 "모든" 유저들의 위치정보를 가져와서 한 번 더 랜더링 하기때문에 클라이언트 본인의 캐릭터는 2개가 랜더링 되는것이다! 그래서 단순하게 모든 유저들의 위치정보를 반환할때 클라 본인의것만 제외하고 반환하면 안될까..? 했고 // 모든 유저 위치 정보 가져오기 getAllLocation(userId) { const maxLatency = this.getMaxLatency(); // 최대 레이턴시 가져오기 const locationData = this.use..
버퍼객체를 주고받는 테스트를 하던 와중 이런 오류들이 클라이언트(unity)에서 발생했다. 뭐라는지 알아보자 Deserialize: Failed to deserialize data. Exception: System.IO.EndOfStreamException: Attempted to read past the end of the stream. at ProtoBuf.ProtoReader+State.ThrowEoF () [0x00000] in /_/src/protobuf-net.Core/ProtoReader.State.ReadMethods.cs:809 at ProtoBuf.ProtoReader+StreamProtoReader.Ensure (ProtoBuf.ProtoReader+State& state, Sy..
운영체제(OS)운영체제(OS, Operating System)는 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하는 역할을 한다. 운영체제의 목적은 사용자와 하드웨어 사이의 인터페이스를 제공해 효율적으로 응용 프로그램이 동작하도록 지원하고, 시스템 자원을 효율적으로 관리하여 응용 프로그램이 원활하게 동작할 수 있도록 한다. 운영체제의 코어(핵심) 부분을 커널(Kernel)이라고 하는데, 일반적으로는 커널에 여러가지 기능(라이브러리, 시스템 프로그램 등등)이 추가된 상태를 통칭해서 운영체제(OS)라고 한다.운영체제의 주요 역할프로세스 관리CPU와 같은 시스템 자원을 여러 프로세스가 효율적으로 사용할 수 있도록 관리합니다.프로세스 생성, 삭제, 상태 전환..