본문 바로가기

전체 글133

프로세스와 스레드 개요 게임을 실행한다고 가정해보자! 우선 게임을 컴퓨터에 설치해놨을 것이다! 뭐 HDD든, SSD든 보조기억장치에 게임에 필요한 프로그램이 저장됐겄지! 우리가 이 게임 프로그램을 실행하기 전까진, 설치된 모든 코드와 데이터들은 디스크 용량을 차지할 뿐 아무 것도 하지 않는다!! 더블 클릭해서 딱 게임을 켠 시점, 즉 프로그램을 실행하는 순간부터 뭔가뭔가 일어나기 시작한다!프로세스 프로세스는 쉽게 생각하면 컴퓨터가 "지금 하고 있는 일"이다!! 어떤 프로그램을 실행하면, 컴퓨터는 이를 처리해주어야하니 뭔가뭔가 해야할 일이 생기는 것이다! 때문에 프로그램 실행은 사실 프로세스 생성과 같은 말이다!! 우리가 게임 프로그램을 더블 클릭하는 순간, 얘네의 몸에 생기가 돌면서 게임 프로세스가 생성되는 것이다!! 프.. 2025. 2. 2.
250123 TIL - Connection Pool 실습 개인 과제 회고) mysql2 라이브러리import pools from '../pools.js';import USER_SQL_QUERIES from './user.queries.js';const insertUserData = async (id, password, email) => { const connection = await pools.USER_DB.getConnection(); await connection.beginTransaction(); await connection.execute(USER_SQL_QUERIES.INSERT_USER, [id, password, email]); await connection.execute(USER_SQL_QUERIES.INSERT_DEFAULT_RANK, .. 2025. 1. 23.
250122 TIL - ECS Architecture ECS 구조 맛보기개요"Entity-Component-System"게임의 오브젝트를 엔티티, 컴포넌트, 시스템으로 분할해 다루는 기법!!Entity : 어떤 값도, 어떤 함수도 아닌 순수 식별자!!Component : 어떠한 조작도 가해지지 않는 순수 데이터!!System : 어떠한 데이터도 저장하지 않는 순수 처리 로직!!라고 하면 무슨 말인지 도통 와닿질 않으니, 그림을 하나 그려보자면?!게임 오브젝트들을 이런 느낌으로 분할해볼 수 있다!! Entity는 명찰 같은 거고, Component는 오브젝트들의 속성, System은 오브젝트들의 행위를 담는다고 생각해보자!! 조금 더 그려보자면?! 각각의 Entity에는 관련된 Component들이 존재하고, (속한다는 개념이 절대 아님!!) System도 .. 2025. 1. 22.
250120 TIL - 소수 관련 알고리즘 팁 알고리즘 회고 - 소수 관련 팁01) 개요최근 알고리즘 문제에 소수와 관련된 이슈들이 많아서, 한 번 정리해보기로 결심했다!!02) 소수 초급 판별법소수는 1과 자기 자신만을 약수로 갖는 자연수지요? 그렇기 때문에 그 수가 소수인지 알아보는 가장 직접적인 방법은 1부터 그 숫자까지 1씩 더한 수들을 전부 나누기 해보고, 나머지가 0이 나오는 경우가 1과 본인인지 보는 방법이다!!예시 코드const isPrime = (num) => { let isPrime = true; // 1이랑 본인은 빼고 확인 // 하나라도 자기 약수면 즉시 중단하고 false 반환 for (let i = 2; i 이리 하면 거의 num만큼의 수를 다 확인해야 할 수도 있어서 썩 좋지 않음!!!03) 소수 중급 판별법사실 약.. 2025. 1. 20.
250117 TIL - 알고리즘 풀이 회고 소소한 기록 며칠 전에 꼬리 재귀 이야기를 했는데, 알고보니 자바스크립트가 ES6부터 지원하는 게 맞긴 한데, 정작 브라우저들이 지원을 하지 않는 경우가 있다고.... 그 문제 때문인지는 몰라도, 오늘 풀이했던 문제에서 재귀를 사용하는 버전과 반복을 사용하는 버전의 차이가 심했다!! 미리 정리하자면 반복의 복잡도를 걱정해서 재귀를 쓰는 짓은, 구더기 잡으려고 초가삼간 다 태우는 일이다!!!재귀 버전function solution(n, m, section, answer = 0) { if (section.length wall > paintOnce); return solution(n, m, leftWalls, answer + 1);} 먼저 생각해냈던 로직!! 간만에 간결한 풀이가 나와서 싱글 벙글 했고,.. 2025. 1. 17.
250116 TIL - 개인과제 정리 멀티플레이 실습 프로젝트개요TCP 소켓 통신 기반의 서버를 구축해 멀티플레이 게임을 실습해보는 프로젝트입니다!!주요 학습 대상으론 소켓 통신, 직렬화-역직렬화 바탕의 바이트 배열 패킷 활용, 멀티 플레이 위치 동기화 등이 있으며,추가 도전으론 채팅 기능을 시도해보았습니다!!디렉토리 구조환경변수들을 일괄 관리하는 config, 프로토버프 정의를 위한 protobuf,DB 연동 및 조작을 위한 database는 추가 설명이 없으며,❌ 표시된 디렉토리 및 파일은 사용되지 않고 있습니다!!init서버가 listen 상태에 진입하는 시점에 실행되는 파일들을 관리하는 디렉토리입니다!!DB 연결 상태를 체크하고, 프로토버프 정의를 로드하고, 게임 세션(=룸)을 하나 생성하는 일 등을 수행합니다!!📦init ┣ 📜.. 2025. 1. 17.