포트폴리오 동영상

기타 2024. 2. 13. 11:30
728x90

 

[Unreal] 공부용 프로토게임

 

[Unity] 크루세이더 퀘스트

 

[Unity] 허슬(가칭)

 

[Unity] WarChess

 

[Unity] OH MY CRYSTAL

 

[Unreal] 공부용 프로토게임

 

[Cocos2d] PushTrash

 

[Cocos2d] NumberPush

 

[Unity] Number Ping-Pong

 

[Android] KSU
728x90
Posted by 정망스
,
728x90

자료구조 시간 복잡도

정렬 시간복잡도

 

728x90
Posted by 정망스
,
728x90

원격데스크탑 자격 증명이 작동하지 않습니다.

내 피시의 아이피와 아이디/ 패스워드를 입력하였는데

접속이 안된다.

"자격 증명이 작동하지 않습니다."

우선 내 계정을 확인하기.

단축키 [Windows+R] 을 눌러 실행 창을 엽니다.

실행 창에 control userpasswords2 를 입력후 엔터 합니다.

확인을 누르면 아래 사용자 계정 창이 나온다.

 

728x90
Posted by 정망스
,
728x90

원격 데스크톱 설정 방법

 

 

1. 시스템 설정을 이용한 접근

시작버튼에서 오른쪽 마우스를 클릭하거나, [ 윈도우키 + X ] 를 선택하면 나오는 메뉴에서 시스템 메뉴를 선택합니다. 

 

 

설정 화면의 왼쪽에 원격 데스크톱 메뉴를 클릭합니다. 

 

원격 데스크톱 활성화를 끔 -> 켬 상태로 변경해주면, 아래화면 처럼 활성화 여부를 물어봅니다.

확인을 선택하면 됩니다.

 

 


2. 내 PC 속성을 이용한 접근

바탕화면에 내 PC 아이콘이 보이시는 분들은, 바로 오른쪽 마우스를 클릭해서 속성 메뉴로 접근하면 되지만, 

안보이시는 분들은 내 PC를 검색해서 접근하셔도 됩니다. 

시스템 창에 왼쪽 메뉴에 보면 원격 설정 메뉴가 보입니다.

해당 메뉴를 클릭합니다. 

상단에 원격 탭을 클릭하면, 원격 지원에 대해 설정할 수 있으며, 아래와 같이 선택해 줍니다.

 


3. 제어판을 통한 접근

제어판에 접속한뒤, 시스템 및 보안 메뉴를 클릭합니다. 

해당 메뉴에 접근하시면, 시스템 탭에 원격 액세스 허용 메뉴가 보입니다.

해당 메뉴 클릭시, 2번 절차가 보여집니다.


원격 데스크톱 사용 방법

키보드로 [ 윈도우키 + R ] 을 선택 하거나, 원격 데스크톱 연결을 검색하시면, 각각 아래의 화면이 보여집니다.

실행 메뉴에서는 원격 데스크톱 연결의 프로그램 이름인 mstsc 를 바로 입력하셔도 됩니다.

원격 데스크톱 연결 프로그램에서, 접속하려는 컴퓨터 이름 혹은 IP 주소를 입력하고 연결을 클릭합니다.

※ 간혹 아래와 같은 메뉴가 나오게 되면, 위에 연결 허용 관련해서 다시 한번 체크해주세요.

IP 주소를 입력하고 연결 버튼을 클릭하면, 아래와 같이 자격 증명을 입력하는 메뉴가 보여지며, 

아이디 및 암호를 입력하면 접속이 가능합니다. 

연결 시에는, 아래와 같이 인증서 오류 화면이 보이는데, 신경쓰지 말고 예(Y) 버튼을 클릭하면 연결됩니다.

728x90
Posted by 정망스
,
728x90
전 글의 심플 팩토리, 팩토리 메소드와 이번 글의 추상 팩토리를 모두 합쳐 구현한 예제 소스

AbstractFactory.cpp

 

추상 팩토리 패턴이란 공통 기능을 가지되, 약간식 다른 성격을 가지는 다양한 팩토리 인스턴스를 만든 후에 그 팩토리 인스턴스들을 사용하여 객체를 생성하는 방식이다.

팩토리 메소드 패턴은 클래스가 객체를 생성하는 패턴이라 하면, 추상 팩토리 패턴은 객체가 객체를 만드는 방식이다.

 

말이 좀 어려운대.. 소스 예제로 한번 보자.

 

class Dough
{
protected:
    char dough[256];
public:
    virtual ~Dough() {};
    inline char* getChar() { return dough; }
};

class ThinCrustDough : public Dough
{
public:
    ThinCrustDough() { strcpy_s( dough, "얇은 크러스트 " ); }
};

class ThickCrustDough : public Dough
{
public:
    ThickCrustDough() { strcpy_s( dough, "두꺼운 크러스트 " ); }
};

class Sauce
{
protected:
    char sauce[256];
public:
    virtual ~Sauce() {};
    inline char* getChar() { return sauce; }
};

class MarinaraSauce : public Sauce
{
public:
    MarinaraSauce() { strcpy_s( sauce, "마리나라 " ); }
};

class TomatoSauce : public Sauce
{
public:
    TomatoSauce() { strcpy_s( sauce, "토마토 " ); }
};

class HotSauce : public Sauce
{
public:
    HotSauce() { strcpy_s( sauce, "핫 " ); }
};

class IPizzaIngredientFactory /// ingredient : 재료
{
public:
    virtual ~IPizzaIngredientFactory() {};
    virtual Dough* createDough() = 0;
    virtual Sauce* createSauce() = 0;
};

class ChicagoPizzaIngredientFactory : public IPizzaIngredientFactory
{
public:
    Dough* createDough() override
    {
        return new ThickCrustDough();
    };
    Sauce* createSauce() override
    {
        return new MarinaraSauce();
    }
};

class NYPizzaIngredientFactory : public IPizzaIngredientFactory
{
public:
    Dough* createDough() override
    {
        return new ThinCrustDough();
    };
    Sauce* createSauce() override
    {
        return new HotSauce();
    }
};

 

 

ThinCrustDough, ThickCrustDough 클래스는 Dough를 상속 받고,

MarinaraSause, TomatoSause, HotSause 클래스는 Sause를 상속받아서 공통되게 한다.

IPizzaIngredientFactory에는 가상함수로 구성된 인터페이스 이다.

 

ChicagoPizzaIngredientFactory, NYPizzaIngredientFactory 클래스는 IPizzaIngredientFactory 인터페이스를 상속받아서 각각 createDough, createSause 메소드를 오버라이딩 하여 재정의 한다.

 

이렇게 되면 피자를 만든다는 것은 동일하지만 시카고 피자를 만들때 다뤄지는 재료들, 뉴욕 피자를 만들때 다줘지는 재료들을 조금씩 서로 달리 정의할수 있다는 것이다.

 

즉 각 팩토리마다 성격을 달리 구현 할수 있기 때문에 더 유연해 진다는 것이다.

 

*추상 팩토리 패턴은

생성하려고 하는 객체가 여러가지 형태는 비슷하지만 다른 팩토리 패턴으로 생성해야 할 경우,

객체들의 생성에 대한 구현이 아닌 인터페이스만을 노출시키고 싶을 때,

객체들 중에서 특정 객체를 선택해서 생성하고 싶을 때,

관련된 제품들이 함께 사용하도록 설계해서 이 부분에 대한 규약이 다른 외부에서 사용될 때도 지켜지게 하고 싶을 때 사용하면 유용하다.

 

728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침