목록분류 전체보기 (97)
개발자공부일기
프로세스와 스레드에 대한 정의▪프로세스: 운영체제로부터 자원을 할당받은 작업의 단위.▪스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.프로그램이 프로세스가 되려면먼저 프로세스와 스레드에 대해 본격적으로 설명하기 전에 프로그램에 대해서 설명하고 가야 한다. 프로그램이라는 단어의 정의는 다음과 같다.프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 를 말한다.메모리에 올라가 있지 않은: 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않았다는 뜻이다. 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다.정적인 상태: 정적(靜的)이라는 단어 그대로, 움직이지 않는 상태라는 뜻이다. 한 마디로 아직 실행되지 않..
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..