분류 전체보기 153

[Summary] 게임 서버 프로그래밍 교과서 - Ch4

시작하기 전에본 글은 배현직 저자님의 게임 서버 프로그래밍 교과서를 읽고 썼습니다.본 글은 저자님의 요청으로 언제든지 지워질 수 있습니다. 목차게임 서버의 역사게임 서버가 하는 일논블로킹 소켓Overlapped I/O 혹은 비동기 I/OepollIOCP실습1. 게임 서버의 역사 게임 서버의 기원은 패키지 게임에서부터 살펴봐야 한다. 인터넷이 보급되기 전에는, 인터넷 연결이 안되는 컴퓨터가 많았고, 연결되더라도 속도가 매우 느렸으며, 요금이 비싸기 때문에 대부분의 패키지 게임은 네트워크를 사용하지 않았다. 설령, 사용하더라도 전화선을 통해 상대방 컴퓨터와 1:1로 플레이하는 방식이었다. 인터넷이 보급되기 시작하면서, 세 명 이상 인터넷을 통해 플레이하는 게임이 등장하였다. 이 때, 플레이어 한 명의 컴퓨터..

Outdated/Game 2019.08.28

[Summary] 게임 서버 프로그래밍 교과서 - Ch3

시작하기 전에본 글은 배현직 저자님의 게임 서버 프로그래밍 교과서를 읽고 썼습니다.본 글은 저자님의 요청으로 언제든지 지워질 수 있습니다. 목차게임 서버에서의 소켓 프로그래밍블로킹 소켓논블로킹 소켓Overlapped I/O 혹은 비동기 I/OepollIOCP실습1. 게임 서버에서의 소켓 프로그래밍 게임 서버는 다뤄야 하는 소켓 개수가 많다. TCP를 이용하는 경우 클라이언트 개수만큼 소켓이 있어야 한다. 그러면서도 파일 핸들을 하는 동안 스레드가 대기하는 일이 없어야 하기 때문에 보통 비동기 입출력 상태로 다루게 된다. 여기엔 논블로킹 소켓(non-blocking socket), Overlapped I/O, epoll, IOCP(I/O Completion Port)가 있다. 간단한 것부터 살펴본다.2. ..

Outdated/Game 2019.08.14

[Review] 강성태 영문법 필수편(강성태 저) 서평

본인은 항상 영어에 약했다. 외우는 걸 싫어해서 학창시절 때 영단어를 많이 외우지 않았고, 문법도 잘 몰랐다. 지금 생각하면 모의고사가 어떻게 2등급이 나왔나 싶다. 그 후로도 영어는 계속 나를 괴롭혔다. 정보를 얻기 위해서는 영문으로 된 자료를 읽었어야 했기 때문이다. 그 당시 유명한 폴리글랏(polyglot)들이 본인의 언어 노하우를 막 소개하던 시기로 기억한다. 요지는 언어를 배우려면 원어민처럼 많이 듣고 많이 말하고 따라하는 것이었다. 문법이 없어도 언어를 터득할 수 있다는 것이었다. 나는 그말에 껌뻑 넘어가 ‘나도 제 2 외국어를 잘 다뤄보리라’ 생각하며, 관련된 자료를 찾아보았다. 가장 많이 접해본 방법이 쉐도잉(shadowing)이었다. 쉐도잉은 미드나 영화를 계속 반복하며 거기에 나오는 대..

Outdated/Book 2019.08.02

[Summary] 게임 서버 프로그래밍 교과서 - Ch2

시작하기 전에본 글은 배현직 저자님의 게임 서버 프로그래밍 교과서를 읽고 썼습니다.본 글은 저자님의 요청으로 언제든지 지워질 수 있습니다. 목차컴퓨터 네트워크 데이터컴퓨터 네트워크의 품질과 특성컴퓨터 네트워크에서의 데이터 송수신게임에서 주로 사용하는 메시지 형식1. 컴퓨터 네트워크 데이터 컴퓨터 네트워크에서 데이터의 형식은 스트림(stream)과 메시지(message) 형식으로 나뉜다. 각각에 대해서 알아보자. 스트림이라는 것은 두 단말기를 연결한 후 그 연결을 끊기 전까지 한쪽에서 다른 한쪽으로 연결된 데이터의 흐름을 일컫는다. 스트림은 유저가 언제든지 끊을 수 있기 때문에, 스트림 자체는 데이터를 구별할 수 없으며, 보낸 데이터 개수와 받는 데이터 개수, 그리고 보낸 데이터와 받는 데이터의 시작과 끝..

Outdated/Game 2019.07.31

[Review] C# 7 and .NET Core 2.X Blueprints(더크 스트라우스 저) 서평

처음 책을 사려고 했던 계기는 ASP.NET Core에 대한 자료가 필요해서였다. 찾던 도중 이 책을 발견하였고, 원서에 대한 평가나 번역서에 대한 평가나 나쁘지 않아 보여 대학 도서관에서 빌려서 보았다. 좋았던 점은 이름에서 알 수 있듯 .NET Core의 청사진을 그리게 도와주는 데 충실했다는 것이다. .NET Core 위에서 할 수 있는 것들을 개략적으로 짚어준다. 또, 초보자들을 친절하게 배려하려고 노력한 흔적이 돋보인다. 예제도 잘 돌아간다. 아쉬웠던 건 MicrosoftDocs를 대체할 정도는 아니었다는 거다. 책에 나와있는 것은 대부분 MicrosoftDocs에서 습득할 수 있다. 심지어 SignalR을 가지고 활용하는 5장 부분은 매우 실망스럽다. 이건 MSDocs에 있는 걸 그대로 가져다..

Outdated/Book 2019.07.26

[Review] 게임 서버 프로그래밍 교과서(배현직 저) 서평

게임 서버에 대해 관심이 있으신 분들이라면 ‘ProudNet’을 한번쯤 들어보셨으리라 생각한다. 저자는 게임 서버 엔진 ‘ProudNet’을 개발하고 20년 동안 업계에 종사하시고 계시는 매우 노련한 장인이다. 이 책은 저자의 20년 간의 경험이 담겨 있어, 게임 서버 개발쪽에서는 가뭄의 단비와 같은 책이라고 해도 과언이 아니다. 이 책의 가장 좋은 점은 게임 서버 개발의 숲을 그려줬다는 것이다. ‘교과서’라는 이름처럼 게임 서버 개발을 위한 다양한 지식들을 엮어놓아 게임 서버 개발을 어디서부터 시작해야할지 모르는 사람들에게 가이드를 제공해준다. 하나도 모르는 사람이라고 할지라도 이 책을 읽고나면 게임 서버 개발을 시작할 수 있다. 또한, 저자의 풍부한 경험이 고스란히 책에서 드러난다. 특히 개인적으로 ..

Outdated/Book 2019.07.26

[BOJ] 1389번 케빈 베이컨의 6단계 법칙

문제케빈 베이컨의 6단계 법칙에 의하면 지구에 있는 모든 사람들은 최대 6단계 이내에서 서로 아는 사람으로 연결될 수 있다. 케빈 베이컨 게임은 임의의 두 사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다.예를 들면, 전혀 상관없을 것 같은 인하대학교의 이강호와 서강대학교의 민세희는 몇 단계만에 이어질 수 있을까?천민호는 이강호와 같은 학교에 다니는 사이이다. 천민호와 최백준은 Baekjoon Online Judge를 통해 알게 되었다. 최백준과 김선영은 같이 Startlink를 창업했다. 김선영과 김도현은 같은 학교 동아리 소속이다. 김도현과 민세희는 같은 학교에 다니는 사이로 서로 알고 있다. 즉, 이강호-천민호-최백준-김선영-김도현-민세희 와 같이 5단계만 거치면 된다.케빈 베이컨은 미..

[Infra] 컨테이너(Container)

관련된 글2019/07/01 - [Computer/Infrastructure] - [Infra] 가상화(Virtualization) 목차컨테이너(Container)란?컨테이너와 가상 머신의 비교컨테이너의 장점과 단점참고자료1. 컨테이너(Container)란? 컨테이너란 가상화의 한 종류(애플리케이션 가상화)로 애플리케이션을 실제 구동 환경으로부터 추상화할 수 있는 논리 패키징 메커니즘을 제공하는 기술이다. 다시 말해, 코드와 그것의 모든 의존성을 패키징하는 기술이다. 이렇게 패키징한 것을 이미지(image)라고 부른다. 컨테이너와 가상 머신은 매우 비슷해보인다. 컨테이너도 가상 머신과 비슷하게 소프트웨어 서비스 구동을 위한 격리 환경을 만들어 개발 단계에서 테스트, 프로덕션에 이르기까지 이식성과 일관성을..

[Infra] 가상화(Virtualization)

목차가상화(Virtualization)란?가상화의 작동 원리가상화를 통해 얻을 수 있는 이점가상화 적용 분야참고자료1. 가상화(Virtualizaiton)란? 가상화란 단일한 물리 하드웨어 시스템에서 여러 시뮬레이션 환경이나 전용 리소스를 생성할 수 있는 기술을 말한다. 그래서 물리적 머신의 기능을 여러 사용자 또는 환경에 배포해 물리적 머신을 최대한 활용할 수 있습니다. 즉, 효용률(utilization rate)을 올린다.2. 가상화의 작동 원리 가상화는 하이퍼바이저(hypervisor) 또는 가상 머신 모니터(VMM, virtual machine monitor)라고도 불리는 기술을 이용해 단일 물리 하드웨어 시스템을 가상 머신(virtual machine)이라는 별도의 고유하고 안전한 환경으로 분할..

[Computer Column] 위상정렬(topological sort)

위상정렬이란? DAG(Directed Acyclic Graph), 즉 사이클이 없는 유향 그래프에서 꼭짓점들(vertex)을 방향에 거스르지 않고 정렬하는 알고리듬이다. 대학의 선수과목 구조와 같이 순서가 있는 작업들을 나열할 때 이용한다. 위상정렬을 구현하는 방법에는 두 가지가 있는데 하나는 DFS를 이용하는 것이고 다른 하나는 진입차수(indegree)를 이용하는 것이다. 동작 방식 DFS를 이용하는 방식 그래프에서 방문하지 않은 노드면 DFS를 한다. DFS가 끝나면 해당 노드를 스택에 넣는다. 스택에서 하나씩 꺼내면 위상 정렬된 노드들을 얻을 수 있다. 진입차수를 이용하는 방식 진입차수가 0인 노드를 큐에 넣는다. 해당 노드의 자식 노드들의 진입차수를 1 줄인다. 그래프의 모든 노드가 큐에 넣어질..

Outdated/Column 2019.06.21