달력

062018  이전 다음

  •  
  •  
  •  
  •  
  •  
  • 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


요즘 WOW를 하는데 예전보다 배경은 그래픽이 좋아졌다고 한다.

오염의 숲 물에서 수영하면서 찍은 스크린샷~ 감상~


정말 멋지네요~~

'게임이야기 > WOW' 카테고리의 다른 글

WOW 저주받은 땅: 오염의 숲 배경  (1) 2012.01.06
Posted by 알이씨
TAG wow


[오류메세지]
연결된 서버 "SMC_WMS_TEST"의 OLE DB 공급자 "SQLNCLI10"이(가) 분산 트랜잭션을 시작할 수 없으므로 요청한 작업을 수행할 수 없습니다.

[해결방법]
EXEC
sp_serveroption @server=N'LGWMS', @optname=N'remote proc transaction promotion', @optvalue=N'FALSE'
Posted by 알이씨

부산 가는 길

일상의꿈 2011.04.23 10:10




부산에 내려가는 기차 안에서....

iPhone 에서 작성된 글입니다.
Posted by 알이씨


Tera를 시작한지는 한달 보름 정도 된거 같네요.

오랜만에 결제까지 해서 하는 게임인데 전체적인 시스템은 괜찮으나 밸런스라던지

컨텐츠 부족등으로 사람이 좀 줄긴 했네요.

검투사 37레벨 까지 키우고 광전사 25렙까지 키웠는데

재미는 검투사가 더 있는것 같습니다. (제 주관이지만)

27렙까지 올리고 밤피르 저택 인던이나 열심히 돌아야겠어요.

아이템이 좀 구려서.. ㅜㅜ;;

'게임이야기 > Tera' 카테고리의 다른 글

Tera 광전사를 키우고 있습니다.  (0) 2011.03.23
Posted by 알이씨


첫 포스트.. 되도록이면 각 단계를 무시하지 않고 포스팅 하기로 했다.

프로젝트를 한번 만들어보자... 좀 쉬운 느낌(?)

Visual Studio 2008 - 파일 - 새로 만들기 - 프로젝트 - Visual C# - WPF


위의 그림대로 하면 프로젝트가 만들어진다.


프로젝트를 생성하면 좌측의 프로젝트에 필요한 파일들과 클래스를 보여주는 트리뷰

중간에 실시간으로 UI를 보여주는 곳, 그 바로 아래에 UI 구성의 소스를 보여주는 XAML 코드

우측에는 항목들의 속성값을 보여주는 뷰...

아래쪽에는 코드 정의, 출력, 검색 등에 관련된 뷰가 들어 있다.

여기까진 대부분의 Visual Studio와 비슷한 모양이므로.....  

Visual Studio의 코딩 방식을 Visual C++ 형태를 좋아해서 사용하는데 그래서 모양이 좀 다를 수도 있다.

이번 포스트는 끝~

'Programming > WPF' 카테고리의 다른 글

WPF 프로젝트 생성  (0) 2011.01.14
WPF 를 시작하며...  (0) 2011.01.14
Posted by 알이씨
TAG WPF


이 카테고리에는 WPF를 공부하며 필요한 내용들만 소스 위주로 간단한 설명과 함께 정리할 것이다.

후에 내가 살펴보며 기억을 더듬을 수 있을 것이고..

다른 분들이 보고 소스를 따라하면서 WPF를 공부할 수 있게 도움을 줄 수 있을 것이라 생각한다.



'Programming > WPF' 카테고리의 다른 글

WPF 프로젝트 생성  (0) 2011.01.14
WPF 를 시작하며...  (0) 2011.01.14
Posted by 알이씨
TAG WPF


처음 쓰는 글인데 잘 연동이 되나 테스트 해보자.

블로그가 이렇게 발전 하면야..... 굿

페북과 트위터 블로그 3가지를 따로 하려니 힘들었는데...

이제 티스토리 블로그만 관리하면 되겠군~~
Posted by 알이씨


통신 프로그램을 만들 때 프로토콜을 구조체로 잡고 바이트 배열로 쏘는 경우가 생기는데

아래와 같이 하면 된다.

// 구조체를 바이트 배열로 변환
public static int CvtStructToBin(object obj, out byte[] bin)
{
      bin = new byte[Marshal.SizeOf(obj)];

      unsafe
      {
          fixed (byte* fixed_buffer = bin)
          {
              Marshal.StructureToPtr(obj, (IntPtr)fixed_buffer, false);
          }
      }

      return bin.Length;

}

// 바이트 배열을 구조체로 변환

        public static int CvtBinToStruct(byte[] bin, object obj)
        {
            
            unsafe
            {
                fixed (byte* fixed_buffer = bin)
                {
                    Marshal.PtrToStructure((IntPtr)fixed_buffer, obj);
                }
            }

            return 0;
        }

'Programming > C#' 카테고리의 다른 글

구조체 -> 바이트 배열, 바이트 배열 -> 구조체  (0) 2010.03.16
C#에서 로그 함수 만들기  (0) 2010.03.05
Posted by 알이씨


C나 C++에서 콘솔이나 UI의 디버깅창에 로그를 남기면서 파일로도 로그를 남기는 작업을 했었다.

주로 서버 개발이나 펌웨어 개발할 때 썼었는데 이번 프로젝트는 c#을 사용해야 하기에 맘먹고 만들어봤다.

소스코드는 아래에 있고 로그 발생지(eBlk)나 로깅 수준(eLevel)은 입맛대로 바꿔서 쓰면 될듯...

보통 릴리즈 후에는 어느정도 버그를 잡았다고 보기 때문에 ERROR, ABNORMAL, ESSENTIAL 정도만 남겨두고 나머지 로깅 수준은 꺼두는 것이 좋다.

이러한 로깅 수준 조정은 설정 파일을 따로 두어서 설정 내용에 따라 조정하면 되겠다. 아래 소스에서는 일단 모두 보이게 하는 것으로 해두었다.

public enum eBlk
    {
        BLK_GATE = 0,
        BLK_MNGR,
        BLK_MAIN,
        BLK_DB,
        MAX_BLK
    }

    public enum eLevel
    {
        D_ERROR = 0,
        D_ABNORMAL,
        D_ESSENTIAL,
        D_PRIMITIVE,
        D_NORMAL,
        D_TIMER,
        D_PERIODIC,
        D_HEXA,
        D_MAX_LEVEL
    }

    public static class MBzPrintf
    {
        static string[] S_BLK = new string[(int)eBlk.MAX_BLK];
        static string[] S_TYPE = new string[(int)eLevel.D_MAX_LEVEL];
        static byte[] BLK_OP = new byte[(int)eLevel.D_MAX_LEVEL];

        public static void MBzInitPrintf()
        {
            S_BLK[(int)eBlk.BLK_GATE] = "[G W]";
            S_BLK[(int)eBlk.BLK_MNGR] = "[MNG]";
            S_BLK[(int)eBlk.BLK_MAIN] = "[M N]";
            S_BLK[(int)eBlk.BLK_DB] = "[ DB]";

            S_TYPE[(int)eLevel.D_ERROR] = "[ERR]";
            S_TYPE[(int)eLevel.D_ABNORMAL] = "[ABN]";
            S_TYPE[(int)eLevel.D_ESSENTIAL] = "[ESS]";
            S_TYPE[(int)eLevel.D_PRIMITIVE] = "[PRI]";
            S_TYPE[(int)eLevel.D_NORMAL] = "[NOR]";
            S_TYPE[(int)eLevel.D_TIMER] = "[TMR]";
            S_TYPE[(int)eLevel.D_PERIODIC] = "[PRD]";
            S_TYPE[(int)eLevel.D_HEXA] = "[HEX]";

// 모든 로깅 수준을 다 풀었다.
            for(int i = 0; i < (int)eLevel.D_MAX_LEVEL; i++){
                BLK_OP[i] = 1;
            }           
        }

        public static int MBzWriteLine(eBlk blk, eLevel level, string format, params object[] args)
        {
            if((int)blk > (int)eBlk.MAX_BLK){
                return 0;
            }

            if (BLK_OP[(int)level] == 0)
            {
                return 0;
            }

            string log_str;
            log_str = String.Format(DateTime.Now.ToString("yyyy-MM-dd HH:mm") + " {0}{1} ", S_BLK[(int)blk], S_TYPE[(int)level]);
            log_str += String.Format(format, args);

            Console.WriteLine(log_str);

// Todo: 여기쯤에 파일에 기록하는 것도 넣으면 좋겠다.

            return log_str.Length;
        }
    }


사용하는 곳에서 아래와 같이 먼저 초기화 해주고.

MBzPrintf.MBzInitPrintf();

아래 처럼 로깅하면 된당...
MBzPrintf.MBzWriteLine(eBlk.BLK_MAIN, eLevel.D_NORMAL,
                    "=============== 서버를 시작합니다.==================");

MBzPrintf.MBzWriteLine(eBlk.BLK_MAIN, eLevel.D_NORMAL,
                    "=============== 서버를 끌께요.==================");

C#에 익숙치 않아서 시행착오가 참 많은데 아직까진 다 해결중...

enum 쓰는게 엄청 불편한데.. c처럼 되면 얼마나 좋아.. ㅜㅜ;

'Programming > C#' 카테고리의 다른 글

구조체 -> 바이트 배열, 바이트 배열 -> 구조체  (0) 2010.03.16
C#에서 로그 함수 만들기  (0) 2010.03.05
Posted by 알이씨
TAG C#, 로깅


유튜브에서 우연히 보게된 동영상입니다.

어린 친구가 대단하네요.

이 친구의 공식 홈페이지가 있습니다.

http://www.sunghajung.com

1996년생이니 앞으로 발전 가능성이 무궁무진하다고 볼 수 있겠어요.

감상해보시죠...

Posted by 알이씨

티스토리 툴바