인기 포스트
-
강의 과제) Windows I/O Model, select, IOCP (수정 필요)
학습 키워드: I/O, Windows I/O Model, Select Model, file descriptor, IOCP Windows I/O Model1) What is I/O?: I/O(Input/Output)란, 장치 간 데이터 흐름에 관여하는 것, 즉 키보드와 마우스, 모니터, 프린터, 마이크, 스피커 등 흔히 사용되는 외부 입 출력 장치부터, 하드 디스크, 물리/논리적 네트워크 포트, 그에 관여하는 프로그램이나 운영체제의 I/O 모델 등을 통틀어 일컫습니다. 네트워크 통신 또한 I/O 작업에 포함되기 때문에 I/O를 올바르게 이해하고 다룰 수 있다면 서버를 효율적으로 설계할 수 있게 됩니다. 2) Windows I/O Model: 모든 운영체제는 주변 장치와의 데이터의 흐름을 제어하기 위한 I..
-
[면접 준비] NoSQL 설명 및 RDBMS 와의 차이점 설명하기
학습 키워드: NoSQL, RDBMS 2024-08-14 면접 카타 질문NoSQL이란 무엇인가요? 기존RDBMS와 다른점도 설명해주세요: NoSQL은 기존 테이블 기반의 관계형 DB 구조에서 벗어난 덜 제한적인 구조의 DBMS입니다. NoSQL에서 No는 원래 non-SQL이나 non-relational을 의미했지만, 현재는 SQL을 일부 지원하는 경우도 포함하여 Not-only SQL이라고 표현합니다. NoSQL과 RDBMS에는 다음과 같은 몇 가지 핵심 차이점이 있습니다. 1. 데이터 모델: RDBMS는 미리 작성된 schema를 통해 테이블 및 column을 정의하고, 그에 맞춰 row를 추가하는 방식입니다. Relational 이라는 이름에 걸맞게 foreign key(외래키)를 이용해 테이블끼..
-
스파르타) The Last Rollback (D-14, Node.js 게임 서버 최종 프로젝트)
학습 키워드: C#, DotNet, Protobuf, Recast & Detour, Pathfinding 1. 프로젝트 관련 사항1) C# 서버에 Protobuf 추가 및 예시 핸들러 구현: Add(Program.cs): DotNet TCP server program · donkim1212/PathfindingDediServer@e961c57Add(TCPClientHandler.cs): class that handles TCP client connection, read buffer and call mapped handlers Add: PacketHandler abstract class, TestReqHandler to test protobuf Add(Packet.cs): protobuf ...github..
-
[.NET] C# DotNet으로 TCP 소켓 서버 열어보기
> D-15 | Dedicated Server 구축을 위한 조사 및 테스트용 코드를 작성했다. 학습 키워드: C#, DotNet, Socket 프로젝트 진행 사항1) Pathfinding Dedicated Server 구축을 위한 사전 학습: 현재 진행중인 게임 서버 프로젝트(The Last Rollback)는 Unity 클라이언트 게임과 연결된다. 클라이언트에서는 Unity의 NavMesh로 pathfinding을 진행하고 있는데, 개발 초기에 서버에 이를 올려둘 마땅한 방법을 찾지 못해서 클라이언트 주도로만 이루어지고 있다. 이전에 이 문제를 해결하기 위해 토의해서 나온 결론은 pathfinding 만을 담당하는 dedicated 서버를 구축하는 것이었다. C#으로 서버를 개발해야 하다보니 MVP 기..
-
[면접 준비] sync vs async, blocking vs non-blocking, async vs non-blocking 차이 설명하기
학습 키워드: sync, async, blocking, non-blocking 2024-07-31 면접 카타 질문동기와 비동기의 차이, 블락킹과 논블락킹의 차이, 비동기와 논블락킹에 차이에 대해 설명해주세요: 동기는 모든 작업이 순차적으로 실행되며, 한 작업이 종료될 때 까지 다른 작업을 실행하지 않는 것을 말합니다. 비동기는 앞선 작업의 종료를 기다리지 않고 다음 작업이 동시에 실행되는 방식입니다. Node.js에서 비동기 함수는 Libuv를 통해 커널의 비동기 함수로 처리되어 이벤트 루프에 콜백으로 등록됩니다. 블로킹과 논블로킹의 핵심 차이는 코드의 실행 제어권을 다른 함수에 넘겨주느냐 아니냐로 갈리는데, 이름에서 알 수 있듯이 블로킹은 제어권을 넘겨줘서 다른 함수가 실행되는 동안 실행을 멈추게 됩니..
-
[TIL] 원격 프로시저 호출 (Remote Procedure Call, RPC)
> 원격 프로시저 호출의 개념에 대해 간단하게 정리해보았다. 추후에 더 자세히 알아보게 되면 내용을 보강해야겠다. 학습 키워드: RPC 1. Remote Procedure Call (RPC)1) What is it?: 원격 프로시저 호출(RPC)은 별도의 원격 제어 기술 구현 없이 원격 프로세스 (혹은 에 있는 함수를 마치 로컬 프로세스에 있는 함수처럼 사용할 수 있도록 설계하는 기술이다. 'RPC 프로토콜'이라고 자주 불리우곤 하지만 실제로 프로토콜인 것은 아니고, 분산 시스템을 구성할 때 쓰이는 메커니즘에 가깝다. 2) How does it work?: Figure 1은 클라이언트(왼쪽)가 원격 프로시저를 호출할 때의 상황을 나타낸다. 먼저 클라이언트가 클라이언트의 어느 함수가 local stub..