전체 글 97

Rust 입문 정리

본 게시글은 Udemy "Rust : 실제 애플리케이션 구축을 통한 Rust 완벽 정복" 강의 내용을 정리한 글입니다.변수 선언, 반복분, 등 프로그래밍 기초 관련 문법은 없으니 참고바랍니다.Rust는 안전성, 속도, 그리고 병행성을 강조하는 시스템 프로그래밍 언어입니다. 최근 C/C++의 대체언어로 유명해지면, 배우고 싶은 언어로 뽑히는 언어이기도 합니다.Rust에서의 메모리 관리Rust가 다른 언어와 유별나게 눈에 띄는 특징은 "컴파일만 되면 메모리 문제가 발생하지 않는 언어"라는 점입니다. 물론 그만큼 빡센 문법을 준수해야 하지만 그 안전성과 성능때문에 많은 IT기업에서 차차 사용되고 있습니다.수동 메모리 관리스택 메모리스택 메모리는 함수 호출 시 지역 변수와 매개 변수를 저장하는 임시 메모리 공간..

공부 학습 2024.09.22

Rust 개발 환경 설정 및 빌드 방법

셋팅환경 기준Window10, 11설치 필요 프로그램Visual Studio(링크) 또는 Microsoft C++ Build Tools(링크)Visual Studio Code(링크)rustup-init.exe (링크)설치 순서Visual Studio의 경우 "C++를 사용한 데스크톱 개발 모듈을 체크하여 설치한다.다운로드 받은 rustup-init.exe를 "관리자 권한으로 실행"한다.설치확인 문구에 'Y'를 눌러 설치를 진행한다.rustc --version 와 cargo --version을 cmd에 입력해보며 정상 설치되었는지 확인한다.Visual Studio Code를 설치한다.Visual Studio Code를 실행하고 다음과 같은 extension을 설치한다.rust-analyzer : rust언..

공부 학습 2024.09.22

게임 서버 공부_네트워크

정보 출처 : 게임 서버 프로그래밍 교과서 (배현직 - 길벗출판사) 스트림 형식 A에서 B로 전송되는 데이터 흐름 사용자의 의도와는 다른게 보낸 메세지수와 받은 메세지 수가 다를수 있다. 사용자의 의도대로 데이터를 구분하기 위해 다음과 같은 방식을 사용하나 첫바이트에 전송될 데이터의 크기를 붙히고 데이터를 넣어 전송한다. 데이터를 보내고 구분자를 뒤에 붙힌다. 이때 데이터 내에 구분자와 동일한 부분이 없도록 주의해야한다. 메세지 형식 자체적으로 데이터롸 시작과 끝을 구별하는 방식 약속된 필드를 규정하여 서로의 명령을 주고 받는다. 만약 IP 패킷의 최대 크기(1300byte)를 넘는 메세지를 보내야한다면 크기제한에 맞추어 나눈다.(fragmentation) 게임에서 사용하는 메세지 형식 텍스트 형식 HT..

공부 학습 2023.02.28

게임 서버 공부_멀티스레드 2

정보 출처 : 게임 서버 프로그래밍 교과서 (배현직 - 길벗출판사) 게임서버에서 멀티 스레드를 이용하는 경우 서버 프로세스 당 이용되는 게임 정보가 많을때 (MMO게임) 서버 한대의 프로세스가 여러 CPU의 연상량을 동원해야할때 별도의 비동기 함수를 사용할수 없으며 디바이스 타임이 발생할때 서로 다른 게임 단위가 같은 메모리 공간에 업근해야할때 게임서버에서 상황에 따른 CPU개수와 스레드 생성 개수의 관계 서버가 CPU 연산만을 수행한다면 스레드와 CPU개수가 동일해도 효율적 서버가 DB나 외부 장치 연산이 많으면 디바이스 타임으로 인해 놀동안 배정될 여유 스레드를 확보하는게 효율적 이벤트 쓰레드를 깨우는 장치 : Rest = 0 , Set = 1 window 기준 이벤트에는 자동 스레드와 수동 스레드가..

공부 학습 2023.02.28

게임 서버 공부_멀티스레드 프로그래밍 1

정보 출처 : 게임 서버 프로그래밍 교과서 (배현직 - 길벗출판사) 프로그램 & 프로세스 프로그램 : 코드와 데이터의 덩어리 프로세스 : 프로그램의 명령어가 실행되는 상태 힙+스택스레드 스레드 : 프로게스 내에서 여러개 존재할수 있으며 명령어를 실행하는 단뒤 같은 메모리 공간을 사용할 수 있음 스레드마다 스택을 가짐스레드의 필요성 오래걸리는 일을 여럿이 해야할때 긴처리를 진행할 동한 작은 단위의 일을 해야할때 CPU를 모두 활용해야할 때스레드 운용 훈령 Context Switch : CPU가 A스레드에서 B스레드로 작업을 변경하는 과정 스레드 실행 시간보다 컨텍스트 스위치 시간이 길다면 작업이 비효율적임 모든 스레드의 수가 CPU 코어 개수보다 많으면 상관없다 Runnable 스레드 구가 CPU 코어 개..

공부 학습 2023.02.28

Docker 명령어 정리

1. Docker 설치 방법 (Cent OS) $sudo yum install -y yum-utils $sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo ---------------Docker에 repo 공간 확보 $sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin $yum list docker-ce --showduplicates | sort -r //도커 프로그램을 이루는 버전들을 내림차순으로 정렬했을때 가장 상위의 버전 확인 ex) docker-ce.x86_64 3:20.10.9-3.el7 doc..

공부 학습 2022.12.17

NestJS(Mongoose) - Please make sure that the argument DatabaseConnection at index [0] is available in the MongooseModule context. 오류..

Nest JS와 MongoDB를 연결하는 Mongoose 모듈을 이용해 최대한 기본 예제의 구조를 따르며 2개의 DB를 연결하고 다중 구조를 저장하는 백앤드 개발을 하고 있는 와중에 다음과 같은 오류가 발생했다 더보기 Nest can't resolve dependencies of the (모델이름)(?). Please make sure that the argument DatabaseConnection at index [0] is available in the MongooseModule context. Potential solutions: - If DatabaseConnection is a provider, is it part of the current MongooseModule? - If Database..

디버깅 일지 2022.12.12

Unity - Azure Kinect 연동하기

Unity 3D에서 Azure Kinect 디바이스를 활용해 바디트래킹을 해보겠다. 해당 글에서는 기본적인 Azure Kinect 펌웨어 셋팅과 연결, 등 기본적으로 수행되어야하는 과정을 건머뛰었음을 알린다. 관련 안내는 다음과 같다 Azure Kinect DK 펌웨어 업데이트 | Microsoft Learn Azure Kinect의 유니티 SDK를 받아오려면 Nuget이라는 패키지 관리 툴을 설치해야한다. 아래 링크에서Nuget Unity를 최신버전으로 받아와 유니티에 임포트해준다. Release Release 3.0.5 · GlitchEnzo/NuGetForUnity · GitHub Nuget을 임포트 하고 나면 유니티 에디터 상단 바에 "NuGet" 항목이 추가로 생겼을 것이다. 해당항목에서 "Ma..

프로젝트 2022.11.22

Unity3D - Leapmotion 연동하기

Unity3D와 Leapmotion을 연동해보자 UltraLeap SDK를 다운로드 받아 설치한다. 설치 주소 : Download Ultraleap's Hand Tracking Software — Ultraleap for Developers Unity에서 사용하기 위해 Unity용 package file을 다운로드 받아 설치한다. 연결되는 Github 패키지의 최신버전을 받는다. 설치주소 : Ultraleap Plugin for Unity — Ultraleap for Developers 다운로드 받은 package file에서 Tracking.unitypackage 파일을 unity에 custom package file로 임포트 한다. 만약 해당 패키지 파일을 처음으로 다루어 본다면 Tracking Ex..

프로젝트 2022.11.21

백준 10971번 - 외판원 순회2

문제 외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급되는 문제 중 하나이다. 여러 가지 변종 문제가 있으나, 여기서는 가장 일반적인 형태의 문제를 살펴보자. 1번부터 N번까지 번호가 매겨져 있는 도시들이 있고, 도시들 사이에는 길이 있다. (길이 없을 수도 있다) 이제 한 외판원이 어느 한 도시에서 출발해 N개의 도시를 모두 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획하려고 한다. 단, 한 번 갔던 도시로는 다시 갈 수 없다. (맨 마지막에 여행을 출발했던 도시로 돌아오는 것은 예외) 이런 여행 경로는 여러 가지가 있을 수 있는데, 가장 적은 비용을 들이는 여행 계획을 세우고자..