전체 글 298

TCP 3/4 Way-handshake

3 way-handshake (TCP 접속) 1단계 SYNchronize : TCP 접속 요청 2단계 SYN, ACKnowledge : 응답 및 요청 3단계 ACK : 2단계 SYN에 대한 응답 4 way-handshake(TCP 연결 해제) 1단계 FIN : TCP 연결 해제 요청 2단계 ACK : 서버는 확인 메시지 보내고 통신이 끝날때 까지 3단계 FIN : 서버가 통신이 끝나면 연결이 종료되었다고 클라이언트에게 FIN 전송 4단계 ACK : 확인 메시지 전송 해제는 어느 쪽에서든 먼저 할 수 있습니다. client, server 상관 없이 동일합니다. 가장 중요히 알아야 할 것은 먼저 close한 쪽에 TIME_WAIT 상태가 오래 지속 된다는 것입니다. close를 먼저 요청한 쪽에 최종적으로 ..

Unreal Engine 5 설치

Unreal Engine 5 런처를 다운로드 받습니다. https://www.unrealengine.com/ko/download 언리얼 엔진 | 가장 강력한 리얼타임 3D 창작 플랫폼 언리얼 엔진은 게임, 시뮬레이션, 시각화의 디자인 및 개발에 사용되는 통합 크리에이터용 툴세트입니다. www.unrealengine.com 런처를 설치하고 실행하여 Unreal Engine 5를 다음과 같이 설치 합니다. 짜잔~ 설치 완료!!

주린이도 술술 읽는 친절한 경제학

오랜만에 경제 관련 서적을 읽었다. 평소에 경제에 관심을 갖고 관련 뉴스를 보고 들어 왔지만 나 자신이 생각보다는 정확하게 알고 있는 것이 많지 않다는 것을 느끼게 되었다. 이 책은 일상 생활을 하면서 평소에 궁금해할 만한 것들을 친절하고 이해하기 쉽게 설명했다. 이 책을 끝까지 정독하고 나니... 머리 속에서 흩어져서 알고 있는 지식들이 서로 유기적으로 좀 더 끈끈히 관계를 형성할 수 있게 되었다. 독자의 관심을 끄는 방법을 알고 책의 어느 내용하나 버릴 것이 없을 정도로 내용이 알 찼다. 주린이가 아니어도 경제는 자산을 늘리고 싶어 하는 사람이라면 그 지석을 넒혀나가야 한다. 경제적인 지식을 단시간에 끌어 올려주는 책으로서 추천하고 싶다.

독서 리뷰 2021.06.26

팀장 리더십 수업

일을 잘하는 사람이 팀장을 하는 것이 아닙니다. 일 잘하는 능력과 팀장으로서 필요한 능력은 다릅니다. 팀장은 가장 중요한 업무는 팀원을 파악하고 이해 하는 것입니다. X세대, M세대, Z세대가 공존하는 세상이며 각 세대를 이해하고 받아들이는 포용의 마음이 있어야 합니다. 팀이 잘 되려면... 팀의 목표를 확실히 정하고 이러한 목표를 어떤 사람들이 이룰 수 있는지를 정의하자. Goal(목적)과 Objective(목표)를 정의하자. 목적은 거시적으로 목표는 단계별로 촘촘히 설정하자. 목표는 팀원들이 쉽게 이해 할 수 있어야 합니다. 명확한 목표가 있어야 팀원들이 몰입할 수 있습니다. 개인의 목표와 팀의 목표 조직의 요구와 개인의 요구가 높아야만 이상적인 목표이며 팀이 몰입하고 뛰어난 성과를 낼 수 있습니다...

독서 리뷰 2021.05.31

[어셈블리] OllyDbg 소개

어셈블리를 디버깅 할 수 있는 OllyDbg를 소개합니다. 이 툴을 이용하여 어셈블리의 동작을 디버깅 및 확인을 할 수 있어서 어셈블리어를 학습하는데 도움이 됩니다. 그리고, 리버스 엔지니어링 툴로 사용되는 프로그램입니다. OllyDbg 설치 version 2.01을 받습니다. 받은 후 압축을 풀면 OllyDbg.exe 파일을 관리자 권한으로 실행합니다. 기본 기능 & 레이아웃 사용을 위해서는 먼저 실행 파일을 열어야 합니다. 실행 파일을 열면 다음과 같이 로딩되며, 이 화면은 코드뷰, 레지스터 뷰, 덤프 뷰, 스택뷰로 구성되어 있습니다. 코드 뷰에서는 기계어와 어셈블리어를 볼 수 있습니다. 어셈블리어 영역을 마우스 더블 클릭하여 어셈블리 명령어를 입력 할 수 있습니다. 디버그와 트레이스 기능들을 활용하..

Visual Studio 인라인 어셈블리 x86 예제

power #include int power2( int num, int power ); int main( void ) { printf_s( "3 times 2 to the power of 5 is %d\n", \ power2( 3, 5) ); } int power2( int num, int power ) { __asm { mov eax, num ; Get first argument mov ecx, power ; Get second argument shl eax, cl ; EAX = EAX * ( 2 to the power of CL ) } // Return with result in EAX } docs.microsoft.com/ko-kr/cpp/assembler/inline/writing-function..

Visual Studio 2019에서 어셈블리 64bit 프로젝트 생성

어셈블리를 위한 프로젝트 생성 새 빈 콘솔 프로젝트를 만듭니다. 64Bit로 변경합니다. 빌드 종속성에서 masm을 체크합니다. .asm 파일과 .cpp 파일을 하나씩 추가 합니다. asm 파일의 속성을 선택합니다. asm 파일의 항목 형식이 Microsoft Macro Assemply로 선택된 것을 확인 합니다. 어셈블리에서 표준 함수들 사용 할 수 있도록 하자 printf, scanf와 같은 표준 함수들을 어셈블리에서 사용할 수 있게 하려면 다음과 같이 두 개의 라이브러리를 추가해주어야 합니다. 프로젝트 속성의 링커 -> 일반 -> 추가 속성에서 다음과 같이 두 라이브러리를 추가 합니다. legacy_stdio_definitions.lib legacy_stdio_wide_specifiers.lib 예..

CPU 레지스터

레지스터는 CPU 내부에 존재하는 다목적 메모리(저장 공간)입니다. CPU와 함께 있는 메모리 이므로 고속으로 데이터를 처리할 수 있습니다. 간단히 레지스터는 CPU가 사용하는 변수로 생각면 좋습니다. IA-32(Intel Architecture, 32bit) 레지스터의 구성은 아래 그림과 같습니다. 범용 레지스터(General-Purpose Registers)EAX (Extended Accumulator Register)산술연산 명령에서 상수/변수 값을 저장하거나 함수의 리턴 값이 저장되는 용도로도 사용됩니다. EDX(Extended Data Register)EAX와 함께 복잡한 연산을 위한 추가적인 데이터를 저장할 때 사용됩니다. 리턴 값 용도록는 사용되지 않습니다. EDX는 EAX의 확장 개념으로 ..

[C++] std::function

C++11표준 라이브러리의 한 템플릿으로, 함수 포인터 개념을 일반화한 것입니다. 함수 포인터는 함수만 가리킬 수 있지만 std::function은 호출 가능한 객체이면 그 어느 것도 가리킬 수 있습니다. 즉, 함수 처럼 호출 할 수 있는 것이면 그 무엇이라도 std::function으로 가리킬 수 있습니다. 예를 들면 함수, operator(), 람다 함수들이 있으며 다음은 그 예시입니다. int sum(int a, int b) { return a + b; } struct Sum { int operator()(int a, int b) { return a + b; } }; int main() { std::function s1 = sum; std::function s2 = Sum(); std::functi..

대용량 데이터베이스 솔루션 with MSSQL

대용량 데이터베이스 솔루션 1, 2권은 제가 20년 전에 데이터베이스 공부를 위해 읽었던 책입니다. 이 책들은 제가 데이터베이스를 대하는 임하는 자세를 바꾸게 해 준 책입니다. DBA에게는 바이블과 같은 책이기도 합니다. 이 책들의 내용들 중에 서버 개발 프로그래머들이 꼭 필요한 내용들을 정리하였습니다. 이 책은 오라클로 설명하고 있으며 오라클은 게임 개발에서 거의 사용되지 않고 있고 주로 많이 사용하는 MS-SQL에 맞추어 내용을 정리 하였습니다. 여러분에게 관계형 데이터베이스 즉 RDB 개발은 어려웠나요? 제 생각에는 대부분의 서버 개발 프로그래머는 DB 개발을 쉬워 해요. SQL 문법을 익히기만 하면 원하는 결과를 쉽게 얻을 수 있기 때문이죠. SQL 문법 자체는 쉽기 때문에 이렇게 생각합니다. 이..

독서 리뷰 2020.09.09