인터넷은 프로그램과 프로그램이 서로 연결되어 이루는 네트워크다.socket 계층네트워크 프로그램 개발을 위한 TCP/IP 4계층에서 더 추상화 해서 만들어진 계층이다. 프로그래머를 위해 만들어진 계층으로 소켓 계층은 소켓 함수 라이브러리를 말하며, 소켓 프로그래밍이란, 이 라이브러리를 사용해서 프로그래밍 하는 것을 말한다. 버클리 소켓(BSD 소켓)1989년에 버클리 대학에서 만들어져서 이름이 버클리 소켓이다. BSD 소켓 이라고도 부른다. C언어로 만들어졌으며 자유롭게 사용할 수 있어서 네트워크 프로그램에서 가장 범용적으로 사용되고 있다. 일반적으로 socket이라고 하면 BSD 소켓을 말한다.소켓은 프로그램과 프로그램을 연결하는 도구로, 현실 세계에서 가전제품이 소켓으로 연결되어있는 것과 비슷하여 소..
여러 객체가 서로 정보를 교환하는 것을 네트워크(Network) 라고 한다. 네트워크를 컴퓨터와 컴퓨터로 구성한 것을 인터넷(Internet) 이라고 한다.IP(Internet Protocol)전 세계 수억대의 컴퓨터가 인터넷을 하기 위해서는 서로의 정체를 알 수 있도록 특별한 주소를 부여했는데 이 주소를 IP주소라고 한다.Internet Protocol의 줄임말로, 인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위해 지켜야 할 규약이다. IP는 4개의 숫자로 구성되며 숫자의 크기에 따라 IPv4(32비트, 각 숫자는 1바이트), IPv6(128비트, 각 숫자는 4바이트)로 나뉜다.일반적으로 IPv4는 10진수로 표현하며 각 자리는 .으로 구분하고, IPv6는 각 자리를 4자리 16진수로 표현하며 ..
개요sscanf는 c언어 레퍼런스 함수로, 제공된 버퍼에서 형식화된 자료형을 읽어오는 함수이다.함수의 원형은 다음과 같다. #include int sscanf(const char* str, const char* format, ...); 매개변수로 넘겨진 str문자열에서 format형식으로 데이터를 읽어서 가변인자들이 가리키는 메모리에 각각 저장한다. 가변인자로 전달하는 값은 읽은 데이터를 저장할 변수의 주소이다.// scanf를 사용할 때 scanf("%d %d", &i, &j); 처럼 쓰는 것과 같은 원리.사용하려면 다음 헤더를 추가해야 한다. C : C++ : Formatsscanf의 format으로 정할 수 있는 문자열은 다음과 같다. %[*][길이][한정자][데이터 타입] *읽기만 하고 무시. 길..
요청을 처리하는 수신측과 송신측의 결합도를 줄여주는 패턴요정을 보내는 송신특은 자신이 알고있는 객체에게 요청을 보낸다. 수신측은 자신이 그 요청을 처리할 수 있으면 서비스를 제공하고, 아니라면 자신이 알고있는 다음 객체에게 요청을 전달한다.이런 연쇄를 구현하기 위해 수신 객체들은 하나의 부모 클래스를 두어 인터페이스를 통일시켜야 한다. * 구조를 그리고 싶다. 결과객체간의 행동 결합도를 줄인다.송신측과 수신측이 서로를 몰라도 메세지 전달이 가능하다.수신측은 자신과 연결된 하나의 객체만 알고 있으면 된다.객체에 책임을 할당하는데 유연성을 높인다. 런타임 중에 연결고리를 변경하거나 추가하여 확장시킬 수 있다.메세지의 처리가 보장되지 않는다.연결고리가 잘 정의되어 있지 않다면 메세지가 전달만 되다가 버려질 수..
3 match 게임에는 변수가 하나 있는데, 바로 다음에 나올 jewel의 종류가 불규칙적이고 새로 생성되는 jewel로 인해 어떤 연쇄작용이 일어날지 예상할 수 없다는 것이다.* 애니팡의 경우에는 적절한 계산을 통해 진행 불가능한 board가 나오지 않게 새로운 동물이 생성된다고 한다. 그래도 새로운 동물로 인한 연쇄작용은 예측하기 힘들다. 새로 생성되는 jewel이 일으키는 연쇄작용은 생성되는 jewel과 기존 jewel이 match를 이루는 경우이다.새로운 jewel이 바닥( 자신 index번호에 맞는 위치 )에 도달할 때 마다 그 jewel을 기준으로 match3검출을 수행하는 것은 별로 좋지 않은 방법인 것 같다. 4x2 범위에 있는 jewel이 모두 새로 생성되어 아래와 같은 board가 되었..
3 match 게임의 가장 핵심인 match알고리즘을 구현해보자. 이 글에서 구현하려고 하는 Match3 알고리즘은 Swap한 2개의 jewel을 대상으로 이루어지는 검사이며, 주의해야할 점은 다음과 같다.* match가 되어 jewel이 사라지더라도 실제로 화면에 사라지는 모션이 보여지기 전에는 죽는( 어휘력이 떨어져서 죽는다는 표현밖에 생각 못하겠다. )jewel 위에 있는 jewel이 아래로 떨어지지 않는다. ( 즉, 데이터의 변경이 모션이 끝난 후에 일어난다. )* 3개가 맞으면 재자리에서 죽는 모션이 보여지지만, Bejeweled를 기준으로 4개 이상 match가 되었을 때는 Swap했던 mainJewel을 기준으로 나머지 jewel들이 모이고 mainJewel은 승격된다.( 승격된 jewel은..
비주얼드, 애니팡 등으로 알려진 3 match 퍼즐게임을 만들기 위한 알고리즘을 만들어보자. 3 match 게임의 유일한 입력인 Swap을 먼저 구현보자. Swap은 터치 또는 마우스 입력을 받고 드래그를 감지하여 터치한 jewel과 드래그 한 방향의 jewel과 swap 되면서 이루어진다. Swap을 구현해야할 때 주의해야 할 특징은 다음과 같다.*입력을 한 즉시가 아닌 Swap Action( jewel이 실제로 화면에서 움직이는 행위 )이 이루어 지고 난 후 다음 동작( match 또는 rollback )이 이루어져야한다. *아래 코드들은 윈도우 애플리케이션 기준으로 작성한 코드이며, cocos2d-X엔진을 모티브로 작성한 엔진을 사용하여 실제 cocos2d-X 코드와 비슷하지만 내부적인 동작도 같은..
개요assert는 버그의 발생을 빠르고 쉽게 파악하기 위해 사용하는 매크로다. 이름에서 알 수 있듯 어떤 것을 단언하고 디버깅 중 참 거짓 검사를 통해 단언한 조건문이 거짓이 되면 에러 메세지를 띄우며 프로그램을 종료한다.assert 매크로는 릴리즈모드에서는 컴파일이 되지 않기 때문에 많이 써도 성능에 크게 영향을 주지 않는다. 현명하게 사용하면 버그없는(굉장히 적은) 프로그램을 만들 수 있겠다. 사용 방법assert를 사용하려면 다음 헤더를 추가해 주어야 한다. C : C++ : assert를 사용할 때 주의해야 할 점은 단언할 조건을 작성해야 한다는 것이다. 일반적인 논리에 따르면 참 일때 동작하는 코드들이 많지만 assert는 거짓일 때 동작하기 때문에 일어나면 안되는 조건이 아니라 꼭 일어나야 하..
- Total
- Today
- Yesterday
- rxswift
- 국내여행
- 드라마
- ios
- ue4
- Spring
- 수학
- database
- winsock
- SOCKET
- 데이터베이스
- game
- C
- DesignPattern
- OS
- 자료구조
- JSP
- mongoDB
- Git
- C/C++
- Cocos2d-x
- 알고리즘
- swift
- machine learing
- 운영체제
- SHADER
- SwiftUI
- C++
- scala
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |