2015년 12월 28일 월요일

Dynamic singleton 패턴 예제

Write, Data, Read 역할을 수행하는 Class를 만들어서 Data Instance를 전역변수로 지정하여 사용할 경우, Dynamic Singleton 패턴을 통해 사용할 경우를 비교하고 Dynamic singleton 패턴을 사용할 때 얻을 수 있는 이점을 알아보자.

참고 블로그: http://vallista.tistory.com/entry/1-Singleton-Pattern-in-C


어차피 간단한 수준의 프로젝트를 수행하기 때문에 전부 다 읽고 구현할 필요는 없고, 
메모리 해제를 고려하지 않은 Dynamic singleton에 대해서만 소개한다.
전역변수 방법 또는 singleton 방법으로 예제를 돌릴 때 각각 uncomment해야 하는 코드가 다르므로 주의하여 돌려보자.

//main.cpp
#include <iostream>
#include "CWrite.h"
#include "CRead.h"

int main()
{   
    CWrite* pWrite = new CWrite();
    CRead* pRead = new CRead();

    pWrite->WriteToData("hello!");
    pRead->PrintFromData();

    system("pause");
    return 0;
}

//Data.h
#pragma once
#include<iostream>
#include<string>

class CData
{
public:
    //singleton 방법으로 할 경우 uncomment
    //static CData* pData;
    //static CData* GetSharedData();

    //전역변수 방법으로 할 경우 uncomment
    //static CData sData;
    
    std::string msg;
};

//Data.cpp
#include "Data.h"

CData* CData::pData = nullptr;

CData* CData::GetSharedData()
{
    if (pData == nullptr)
        pData = new CData();
    return pData;
}

//Write.h
#pragma once
class CWrite
{
public:
    void WriteToData(char* msg);
};

//Write.cpp
#include "Write.h"
#include "Data.h"

void CWrite::WriteToData(char* msg)
{
    //singleton 방법으로 할 경우 uncomment
    //CData* pData = CData::GetSharedData();
    //pData->msg.append(msg);

    //전역변수 방법으로 할 경우 uncomment
    //CData::sData.msg.append(msg);
}

//Read.h
#pragma once

class CRead
{
public:
    void PrintFromData();
};

//Read.cpp
#include "Read.h"
#include "Data.h"
#include<iostream>

//전역변수 방법으로 할 경우 uncomment
//CData CData::sData;

void CRead::PrintFromData()
{
    //singleton 방법으로 할 경우 uncomment
    //CData* pData = CData::GetSharedData();
    //std::cout >> pData->msg.c_str() << std::endl;
    
    //전역변수 방법으로 할 경우 uncomment
    //std::cout >> CData::sData.msg.c_str() << std::endl;
}

2015년 12월 3일 목요일

Blogger에 Syntax highlighter 사용하기

참고
http://ddmix.blogspot.kr/2015/11/syntax-highlighter-blogger.html
http://10khoc.blogspot.kr/2012/10/how-to-use-highlightjs-with-blogger.html



블로그에 나온 것처럼, highlight.js를 사용하였다.

link href에 들어가는 주소와 script src에 들어가는 주소는
https://highlightjs.org/download/
에 있는 것을 사용하도록 하자.

그리고 가이드에는 </link>가 없는데, 이걸 넣어주는 것도 잊지 말자.




&ltlink rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/styles/monokai-sublime.min.css"&gt&lt/link&gt
&ltscript src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/highlight.min.js"&gt&lt/script&gt
&ltscript&gthljs.initHighlightingOnLoad();&lt/script&gt

2015년 6월 8일 월요일

Use ASIO Device(OCTA-CAPTURE, STUDIO-CAPTURE) in Windows 8.x, Visual studio 2013

Maybe you can't recognize ASIO Device such as OCTA-CAPTURE, STUDIO-CAPTURE successfully in Windows 8, Visual studio 2013 environments.

Fortunately, I found the trick that can do it.

The trick is to use ASIO4ALL.

OCTA-CAPTURE and STUDIO-CAPTURE are ASIO Device, but they are also recognized as "Windows Sound Device"(I don't know what I call it).

The role of ASIO4ALL is converting "Windows Sound Device" to Virtual ASIO Device.

So, System can be expressed below.


You can install ASIO4ALL in

http://www.asio4all.com/

Good Luck!