블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

고메~ 빼때기죽~

Memories / 2012. 1. 25. 02:23
이미지 출처 :  http://blog.daum.net/sss6041/295 



고메(고구마) 빼때기(썰어서 말린 고구마..정도? 빼딱빼딱~할정도로 말렸다고 빼때기라고 함) 죽


요게 빼때기..


이미지에 보면 얇고 길게 썰었는데..다른 쪽은 이렇게 하는가보다..

내 고향에선 고구마 전 붙이듯이 둥글납작하게만 썰어서 말렸다.

끓일 땐 강낭콩도 같이 넣어서 끓여서 설탕 좀 넣고 맛있게 먹던 기억이..

어릴땐 참.. 많이 먹었는데 요근래 먹어본적이 없구나..

1박 2일 보다가 빼때기죽이 나오는거 보고 그리워서 찾아보고 적어 놓는다..

고향 내려가면 고메 빼때기죽 만들어 달라고 해야겠다.. 
반응형

'Memories' 카테고리의 다른 글

[MUD] 마계지문 재오픈  (11) 2012.06.09
노이즈 - 착각  (0) 2012.06.04
잘피(말잘피)  (1) 2012.01.08
부산역 앞  (0) 2011.06.11
시골갔다가 찍어온 인동  (0) 2011.06.11
Posted by blueasa
, |
   public class NumericUpDownTypeEditor : UITypeEditor
    {
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
        {
            if (context == null || context.Instance == null)
                return base.GetEditStyle(context);
            
            return UITypeEditorEditStyle.DropDown;
        }

        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            IWindowsFormsEditorService editorService;

            if (context == null || context.Instance == null || provider == null)
                return value;

            try
            {
                // get the editor service, just like in windows forms
                editorService = (IWindowsFormsEditorService)
                   provider.GetService(typeof(IWindowsFormsEditorService));

                NumericUpDown nmr = new NumericUpDown();
                nmr.Size = new Size(60, 120);
                nmr.Minimum = 0;
                nmr.Maximum = 200;
                nmr.Increment = 0.01M;         /// 업다운 증가 단위(float이 필요해서 0.01로 했음)
                nmr.DecimalPlaces = 6;        /// 소수 이하 표시할 자리 수.
                nmr.Value = new decimal((float)value);
                editorService.DropDownControl(nmr);

                return (float)nmr.Value;
            }
            finally
            {
                editorService = null;
            }
        }
    }
------------------------------------------------------------------------------------------------------

참조1 :  http://social.msdn.microsoft.com/Forums/da-DK/netfxbcl/thread/370ce9d3-fc44-4cdc-9c76-dd913c9b572f 

참조2 : http://social.msdn.microsoft.com/forums/en-US/winforms/thread/5441df96-5b72-4b99-8033-d467bd700c78
반응형

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

PropertyGrid catching mouse events  (1) 2012.02.01
A C# 2008 Advanced Customizable PropertyGrid Control  (0) 2012.01.26
Nullable 형식 사용  (0) 2012.01.19
MeasureString(문자열 길이 체크)  (0) 2012.01.17
Convert String To Enum Instance  (0) 2011.12.16
Posted by blueasa
, |

Nullable 형식 사용

Programming/C# / 2012. 1. 19. 11:33
Visual Studio 2005
1명 중 1명이 도움이 되는 것으로 평가 이 항목 평가

nullable 형식을 사용하면 내부 형식의 값을 모두 나타낼 수 있을 뿐만 아니라 null 값을 추가로 나타낼 수 있습니다. nullable 형식은 다음과 같은 두 가지 방법 중 하나로 선언됩니다.

System.Nullable<T> variable

- 또는 -

T? variable

T는 nullable 형식의 내부 형식입니다. T는 struct를 비롯한 임의의 값 형식이 될 수 있지만 참조 형식은 될 수 없습니다.

nullable 형식이 필요한 경우를 예로 들면, true와 false라는 두 가지 값만 갖는 일반적인 부울 변수를 생각해 볼 수 있습니다. 이런 변수에는 "정의되지 않은 상태"를 의미하는 값이 없습니다. 여러 프로그래밍 응용 프로그램에서 변수는 정의되지 않은 상태로 있을 수 있으며, 데이터베이스 상호 작용이 가장 대표적인 예입니다. 예를 들어, 데이터베이스의 필드는 true나 false 값을 포함할 수 있지만 값을 전혀 포함하지 않을 수 있습니다. 마찬가지로, 참조 형식이 초기화되지 않았음을 나타내기 위해 이를 null로 설정할 수 있습니다.

이러한 차이를 처리하기 위해서는 상태 정보를 저장하기 위한 추가 변수 사용, 특수 값 사용 등 별도의 프로그래밍 작업이 필요할 수 있습니다. C#에서 nullable 형식 한정자를 사용하면 정의되지 않은 값을 나타내는 값 형식 변수를 만들 수 있습니다.

nullable 형식의 기준으로는 모든 값 형식을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

int? i = 10;
double? d1 = 3.14;
bool? flag = null;
char? letter = 'a';
int?[] arr = new int?[10];

nullable 형식의 각 인스턴스에는 읽기 전용인 공용 속성이 두 개 있습니다.

  • HasValue

    HasValue는 bool 형식이며, 변수에 null이 아닌 값이 포함되어 있으면 true로 설정됩니다.

  • Value

    Value는 내부 형식과 동일한 형식입니다. HasValue가 true이면 Value에는 의미 있는 값이 포함됩니다. HasValue가 false인 경우에 Value에 액세스하려고 하면InvalidOperationException이 throw됩니다.

이 예제에서는 HasValue 멤버를 사용하여 변수의 값을 표시하려고 하기 전에 변수에 값이 포함되어 있는지 테스트합니다.

int? x = 10;
if (x.HasValue)
{
    System.Console.WriteLine(x.Value);
}
else
{
    System.Console.WriteLine("Undefined");
}

값은 다음과 같은 방법으로도 테스트할 수 있습니다.

int? y = 10;
if (y != null)
{
    System.Console.WriteLine(y.Value);
}
else
{
    System.Console.WriteLine("Undefined");
}

nullable 형식은 Value 속성을 사용하거나 명시적으로 캐스팅하여 일반 형식으로 캐스팅할 수 있습니다. 예를 들면 다음과 같습니다.

int? n = null;

//int m1 = n;      // Will not compile.
int m2 = (int)n;   // Compiles, but will create an exception if x is null.
int m3 = n.Value;  // Compiles, but will create an exception if x is null.

두 데이터 형식 사이에 사용자 정의 변환이 정의되어 있는 경우에는 이러한 데이터 형식의 null 허용 버전에 대해서도 동일한 변환을 사용할 수 있습니다.

nullable 형식의 변수는 다음과 같이 null 키워드를 사용하여 null로 설정할 수 있습니다.

int? n1 = null;

일반 형식에서 nullable 형식으로의 변환은 암시적입니다.

int? n2;
n2 = 10;  // Implicit conversion.

값 형식에 사용되는 미리 정의된 단항 및 이항 연산자와 모든 사용자 정의 연산자는 nullable 형식에도 사용할 수 있습니다. 피연산자가 null이면 이러한 연산자는 null 값을 생성합니다. 그렇지 않으면 연산자는 포함된 값을 사용하여 결과를 계산합니다. 예를 들면 다음과 같습니다.

int? a = 10;
int? b = null;

a++;         // Increment by 1, now a is 11.
a = a * 10;  // Multiply by 10, now a is 110.
a = a + b;   // Add b, now a is null.

nullable 형식과 비교를 수행하는 경우 nullable 형식 중 하나가 null이면 비교 결과는 항상 false입니다. 따라서 비교 결과가 false라고 해서 그 반대 경우가 true라고 단정할 수는 없습니다. 예를 들면 다음과 같습니다.

int? num1 = 10;
int? num2 = null;
if (num1 >= num2)
{
    System.Console.WriteLine("num1 is greater than or equal to num1");
}
else
{
    // num1 is NOT less than num2
}

위의 else 문에서 내린 결론은 유효하지 않습니다. num2가 null이므로 값을 포함하지 않기 때문입니다.

모두 null인 두 nullable 형식을 비교할 경우 결과는 true입니다.

?? 연산자는 null이 허용되지 않는 형식에 nullable 형식을 대입할 때 반환되는 기본값을 정의합니다.

int? c = null;

// d = c, unless c is null, in which case d = -1.
int d = c ?? -1;

이 연산자는 여러 개의 nullable 형식과 함께 사용할 수도 있습니다. 예를 들면 다음과 같습니다.

int? e = null;
int? f = null;

// g = e or f, unless e and f are both null, in which case g = -1.
int g = e ?? f ?? -1;

bool? nullable 형식에는 truefalse 및 null의 세 가지 값이 포함될 수 있습니다. 따라서 iffor 또는 while 같은 조건문에서는 이를 사용할 수 없습니다. 예를 들어, 다음 코드는 컴파일되지 않고 컴파일러 오류 CS0266이 발생합니다.

bool? b = null;
if (b) // Error CS0266.
{
}

이 코드는 null이 조건문의 컨텍스트에서 무엇을 의미하는지 명확하지 않기 때문에 컴파일되지 않습니다. 조건문에 사용하기 위해 nullable 부울을 bool로 명시적으로 캐스팅할 수 있지만 개체의 값이 있고 이 값이 null이면 InvalidOperationException이 throw됩니다. 따라서 bool로 캐스팅하기 전에 HasValue 속성을 확인하는 것이 중요합니다.

nullable 부울은 SQL에 사용되는 부울 변수 형식과 비슷합니다. & 및 | 연산자로 생성되는 결과가 값이 세 개인 SQL 부울 형식과 일관성을 유지할 수 있도록 다음과 같은 미리 정의된 연산자가 제공됩니다.

bool? operator &(bool? x, bool? y)

bool? operator |(bool? x, bool? y)

다음 표에서는 이러한 연산자의 결과를 보여 줍니다.

Xyx&yx|y

True

true

True

true

True

false

False

true

True

null

Null

true

False

true

False

true

False

false

False

false

False

null

False

null

Null

true

Null

true

Null

false

False

null

Null

null

Null

null

반응형
Posted by blueasa
, |
1
2
3
4
5
6
7
8
9
10
11
#include<string>
#include<iostream>

int main()
{
const char* charString= "Eggs on toast.";
 std::string someString(charString);

 std::cout << someString;
 return 0;
}

1
2
char *cStr = "C++";
std::string Str = std::string(cStr);


출처 :  http://www.cplusplus.com/forum/general/41912/
반응형
Posted by blueasa
, |

access()은 파일의 존재 여부와 읽고 쓸 수 있는지에 대해 조사한다.

 

< 기본형 >

access( const char* filename, int amode )


 -amode 옵션 
00 파일이 존재
01 실행한다
02 쓸 수 있는지 검사
04 읽을 수 있는지 검사
06 읽고 쓸 수 있는지 검사

요청 -> 참 : 0, 거짓 : 1, 에러 : -1

errno -> ENOENT : 파일이나 디렉토리를 찾을수 없다
         -> EACCESS : 액세스 불가능

 

 

< 사용법 >

#include <io.h>   // 해더 파일을 불러준다

int velue= access("abc.txt",0);      // abc.txt 파일이 있는지 확인한다

 

파일이 있으면 0,

파일이 없으면 -1,

리턴한다


 
[출처] [C/C++]파일 존재 유무 및 속성 조사 access()|작성자 쥐돌

반응형
Posted by blueasa
, |

이번 메일진에는 BugTrap이라는 공개 에러 리포트 라이브러리에 대해서 간단히 소개하겠습니다.^^

최근에 제가 가입한 스터디카페를 통해 알아서현재 사용중에 있는데 상당히 편리하고 괜찮은 물건입니다.

VS가 설치되지 않은 PC에서(즉 개발자가 아닌 사용자의 PC에서게임이나 툴들이 에러가 났을 때(소위 뻑났을 때원인을 분석하는 방법중에 가장 유용한 방법이 미니덤프파일(*.dmp)파일을 남겨서 덤프파일을 분석 하는 방법입니다.

버전만 맞는 소스코드와 PDB파일만 있다면에러가 났을때의 상황을 거의 100%재현이 가능하고 분석도 용이하게 해주는 방법입니다.

에러가 난 코드와 뻑이 났을때의 변수값이나 콜스택등을 바로 분석할 수 있죠.

 

에러난 PC에서 dmp파일을 남긴 후이것을 개발자 PC로 전송받는 방법은 여러 가지가 있습니다일반적으로 FTP서버나, HTTP서버로 전송을 받는데이러한 기능을 자동으로 해주는 공개 라이브러리가 지금 소개할 “BugTrap”입니다.

장점은 라이브러리만 제공하는 게 아니라. TCP서버나 HTTP서버(Web) 설치 버전도 제공이 되며에러 리포트에 덤프 파일뿐만 아니라에러가 발생한 PC의 사양 등이 포함된 에러 로그 파일과 에러날  당시의 스크린샷파일도 같이 보내준다는 것입니다.

내부에 Zip라이브러리까지 포함하고 있어서 이러한 에러 리포트 파일들은 zip으로 압축되어 전송되기 때문에용량에 대한 부담도 자동으로 해결해 줍니다.

 

아래 내용은 제가 회사에서 사용하기 위해서 간단한 Overview로 작성한 내용입니다더욱 자세한 내용을 원하시면 BugTrap링크 페이지에 가시면 자세한 소개를 보실수 있으며무료로 다운받으실 수 있습니다.

 

1. BugTrap 소개  분석

1.1. BugTrap (http://www.codeproject.com/tools/BugTrap.asp)

 

l         Code Project에 존재하는 공개 에러 리포트 라이브러리

l         BugTrap 라이브러리를 사용한 프로그램이 에러가 발생하게 되면미니덤프 파일(.dmp), 에러 로그(.xml), 스크린샷(.bmp)등을 생성한 후 zip파일로 생성 파일들을 압축하여로컬 컴퓨터에 저장하거나 BugTrap 서버로 전송할 수 있다.

l         BugTrap Server 프로그램을 이용하면자동으로 HTTP서버(Web), TCP서버를 설치할수 있으며간단한 설정만으로 에러 리포트를 서버로 전송 받을 수 있다.

l         에러가 난 경우 GUI 윈도우 창이 표시되어서 다양한 정보를 알 수 있으며원클릭으로 BugTrap Server에 에러 리포트를 전송할 수 있다.

l         크게 BugTrap Server 프로그램과  BugTrap 라이브러리로 구성되어 있으며서버 없이 라이브러리만으로도 사용이 가능하다.

l         로컬 컴퓨터에 덤프파일 저장 및, TCP HTTP을 이용하여 BugTrap Server에 에러 리포트를 전송할 수 있으며, BugTrap Server는 설치 프로그램이 포함되어 있다.

l         서버 프로그램과 헤더파일들과 Lib, DLL 파일들로 구성되어있다.

l         인스톨 버전과 잘 정리된 Document를 제공한다.

l         사용은 자유지만소스는 공개되어 있지 않다.

1.2. BugTrap Overview

 

< Dump파일은 Mail Server를 통해 개발자에게 전송되거나, BugTrap Server로 전송된다 >


 

1.3. BugTrap 사용 화면

l         프로그램 실행중 에러가 발생하면 아래와 같은 창이 뜬다.

 

l         위 창에서 ‘Submit Bug’ 버튼을 클릭하면 설정된 BugTrap Server로 덤프파일이 전송되고mail to…’를 클릭하면 설정된 mail주소로 덤프파일이 첨부된 메일이 발송된다.

l         More…’버튼을 클릭하면 아래와 같은 확장된 창이 뜬다.

 

1.4. BugTrap Server

l         BugTrap을 이용하여덤프파일을 전송하는 방법은 아래 3가지가 있다.

 

1.4.1. E-Mail 첨부 파일로 전송하는 방법

l         프로그램에서 에러가 발생했을때등록된 E-Mail에 덤프파일을 첨부하여 개발자에게 메일로 발송한다.

l         장점

n        추가로 BugTrap Server를 설치할 필요가 없다.

n        방화벽을 통과하여 전송할수 있다.

n        OutLook같은 일반 메일 클라이언트를 이용하여 메일을 작성하여 전송할수도 있다아니면 BugTrap에 내장된 간단한 메일 작성 프로그램을 이용하여 작성하여 전송한다.

l         단점

n        여러 프로그램으로부터 날라오는 에러 리포트를 필터링하여 관리할 수 없다.

n        첨부파일(덤프파일)이 너무 큰 경우 메일로 전송할 수 없을 수도 있다.

1.4.2. TCP 기반 프로토콜을 이용하여 전송하는 방법

l         BugTrap Server 프로그램을 특정 서버 컴퓨터에 설치하여클라이언트 프로그램에서 에러가 발생한 경우, TCP기반 프로토콜을 이용하여 서버로 덤프파일등을 전송한다.

l         .NET 플래폼 기반의 서버 프로그램과플래폼 독립적으로 사용할 수 있는 Java기반의 서버 프로그램의 두 종류가 있다.

l         장점

n        에러 리포트는 서버에서 설정한 저장소(폴더)에 프로그램별버전별로 폴더가 생성되어 구별되어 저장된다설정파일에서 설정한 프로그램의 에러리포트만 저장할 수 있도록 필터링이 가능하다.

n        사이즈의 제한이 없으며, TCP를 사용하기 때문에 전송속도가 빠르다.

n        BugTrap Server 프로그램이 가볍고 효율적이다.

n        Web Server가 필요 없어 어떤 컴퓨터에서 서버를 설치할 수 있다.

l         단점

n        TCP를 사용하기 때문에서버의 방화벽을 뚫지 못할수도 있다.

1.4.3. Http 기반 프로토콜을 이용하여 전송하는 방법 (WEB)

l         IIS가 설치된 Web Server Web Server Bug Trap Server를 설치하여, HTTP 기반 프로토콜을 이용하여서버로 덤프파일등을 전송한다.

l         장점

n        에러 리포트는 서버에서 설정한 저장소(폴더)에 프로그램별버전별로 폴더가 생성되어 구별되어 저장된다설정파일에서 설정한 프로그램의 에러리포트만 저장할 수 있도록 필터링이 가능하다.

n        HTTP기반이기 때문에 방화벽을 통과한다.

n        사이즈의 제한이 없다.

l         단점

n        BugTrap Server가 설치될 서버 컴퓨터에 Web Server이어야만 한다.

n        HTTP 프로토콜은 TCP 프로토콜에 비해서 속도면에서 비효율 적이다.



반응형
Posted by blueasa
, |

BugTrap

Tip & Tech / 2012. 1. 17. 10:24
이번 2차 클베의 숨어있는 공신..
BugTrap을 소개한다.

BugTrap은 프로그램이 크래쉬났을때 크래쉬정보를 분석하고, 
분석된 정보를 메일서버 또는 TCP서버로 전송해주는 역할을 한다.
사용법이 매우 간단하며, 오픈소스라 적당히 커스터마이징 하기에도 무리가 없다.

일단 기본적인 BugTrap사용법에 대해 알아보고,
카르카스 온라인에서는 사용한 통계툴에 대해 소개한다.
참고로 카르카스 온라인에서는 메일서버가 아닌 TCP서버를 사용한다.

## 프로그램구동시 lib파일을 적재한다.

#pragma comment(lib, "BugTrap.lib")

## 진입점에서 초기화한다.
void SetupBugTrap()
{
        BT_InstallSehFilter();

        // 애플리케이션의 버전을 남긴다.
        // TCP서버로 전송할 경우 버전에 따라 크래쉬정보를 모아주므로 상당히 유용한 기능이다.
        BT_SetAppVersion( cTime.Format(L"%Y-%m-%d").GetString() );

        // 애플리케이션 이름을 설정한다.
        BT_SetAppName(_T("Karcass Client"));

        // 메일서버로 전송할 경우 전송할 메일주소이다. ( 카르카스온라인에선 사용하지 않는다. )
        BT_SetSupportEMail(_T("loveru0@jcrsoft.co.kr"));

        // BugTrap의 속성을 정의한다.
        BT_SetFlags( dwFlag );

        // 대표적인 속성들은 다음과 같다.
        // BTF_DETAILEDMODE : 미니덤프나 로그파일등을 압축해서 모두 전송해준다. 
                                              정의하지 않을 경우 기본적인 정보만 전송해준다.
        // BTF_SCREENCAPTURE : 스크린샷을 첨부한다.

        // 미니덤프에 참조변수까지 남긴다.
        BT_SetDumpType( MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory );

        // 전송할 TCP서버를 세팅한다.
        BT_SetSupportServer(_T("000.00.000.000"), 9999);

        // Log생성
        g_jBT_LogSound = BT_OpenLogFile( L"SoundLog.txt", BTLF_TEXT );
        BT_SetLogSizeInEntries( g_jBT_LogSound, 1024 );
        BT_SetLogFlags( g_jBT_LogSound, BTLF_SHOWLOGLEVEL | BTLF_SHOWTIMESTAMP );
        BT_SetLogLevel( g_jBT_LogSound, BTLL_INFO );
        BT_AddLogFile( BT_GetLogFileName( g_jBT_LogSound ) );
}

## 생성한 로그사용
HRESULT JSound::LoadSoundFromMemory( const char* cFileName )
{
        ...

        BT_InsLogEntryF( 
                g_jBT_LogSound, BTLL_INFO, _T("LoadSoundFromMemory : %s"), JUtil::ToWideString(cFileName).c_str() );

        ...
}

TCP서버를 사용하므로 서버머신에 BugTrap서버프로그램을 실행시켜두는 것으로 기본적인 세팅은 끝이다.

다음은 크래쉬가 났을때의 BugTrap의 모습이다.












보시다시피 뭐가뭔지 영어의 압박이 밀려온다.
과연 유저가 저화면을 만났을때 제대로 전송버튼을 눌려줄까?

여기서 오픈소스의 장점이 나타난다.
다음과 같이 알아보기 쉽게 변형해서 사용하자.















이제 통계툴을 소개한다.
위에서 메일서버가 아닌 TCP서버를 사용한 이유가 여기서 나타난다.
메일서버는 속도가 느리며, 저장방식이 툴만들기에 적합하지 않기 때문이다.

앞서얘기했듯이 TCP서버로 전송되어져온 크래쉬 정보는 Version별로 생성된 폴더에 저장된다.
Version으로 클라이언트가 실행될때의 날짜를 세팅하고 있으므로 날짜별로 같은폴더에 모이는 효과를 가진다.

툴은 특정폴더내의 크래쉬정보들을 대상으로 통계작업을 수행하면 된다.














개별적인 크래쉬정보는 ZIP파일로 압축되어 있으며
압축파일내의 크래쉬정보파일, 미니덤프파일, 로그파일등을 적절히 이용하면 된다.

카르카스온라인에서 사용하고 있는 분석툴이다.
보안상 부분적으로만 공개한다.

폴더를 열면 폴더내의 크래쉬정보들을 
파일명과 함수명을 기준으로 통계작업을 수행한다.
























종류별로 모아진 데이터를 기반으로 개별적인 정보들을 보여준다.





































서비스를 하다보면 수많은 크래쉬에 프로그래머들은 지쳐간다.
BugTrap같은 잘만들어진 라이브러리를 위와같은 툴로서 활용하면 보다 
빠르고 편하게 크래쉬에 대처할 수 있고, 화기애애한 개발분위기가 조성되지 않을까.


출처 : 
http://loveru0.egloos.com/1351931  

 

BugTrap 설정시 문제점들...

클라이언트에 버그트랩설치시에는 별로 어렵지 않다 나오는데로 하기만 하면된다

ANSI mutibyte 일 경우는 BugTrap.lib를 사용하고 
UNICODE일 때는 BugTrapU.lib를 사용해야한다는 것 정도만 조심하면 될듯
(똑같이 사용했는데 서버와 연결이 안되면 의심해 봐야할듯)


하지만 문제는 서버를 설치할 때이다.

버그트랩을 설치하면 해당 폴더에 Server라는 폴더가 생기고 그안에 FTP용 서버인 BugTrapServer가 존재한다

가이드를 보면 

서비스 등록
BugTrapServer.exe /install

서비스 해제
BugTrapServer.exe /uninstall


이라고 나와있다.

하지만 서비스 등록을 하려고 위와 같이 실행해보면



System.ArgumentNullException : 값은 null일 수 없습니다



라는 글이 나오는 것을 확인 할 수 있다.

해결법은 간단하다
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 폴더에 존재하는 InstallUtil.exe로 서비스에 등록하면 된다

InstallUitl.exe (절대경로)\BugTrapServer.exe

위와 같이 실행하면 된다  

반응형
Posted by blueasa
, |
반응형

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

Add NumericUpDown in PropertyGrid  (0) 2012.01.20
Nullable 형식 사용  (0) 2012.01.19
Convert String To Enum Instance  (0) 2011.12.16
문자열이 숫자 값을 나타내는지 확인  (0) 2011.12.16
Operator Overloading in C#  (2) 2011.12.05
Posted by blueasa
, |
회사에서 가끔 오늘이 무슨 요일인지 헛갈릴 때가 있습니다. 야근을 밥먹듯이 하고 주말에도 출근하는 경우가 많은 IT 직군의 비애라 할 수 있죠. 항상 바라보는 노트북 화면에 요일이 표시되어 있다면 참 좋겠는데, 기본 설정에선 일단 마우스를 올려봐야 요일을 알 수 있습니다.


마우스를 올리지 않아도 요일이 표시된다면 참 좋겠죠? 그리고 2011년인거 굳이 표시를 안 해도 다 아는 사실이니, 날짜 표시 형식을 수정해봅시다.

제어판에서 직접 국가별 옵션으로 들어가도 되고, 아니면 intl.cpl을 바로 실행합니다.


형식 탭에서 추가 설정 누르시고


날짜 탭에서 간단한 날짜 부분에 각자 표시하고 싶은 형식을 적어주시면 됩니다.


저는 자세한 날짜에 나오는 M'월' d'일' dddd 형식을 그대로 가져다 썼습니다.


요일이 표시되니 참 좋죠?



[추가]

[입력내용]  yyyy-MM-dd'('ddd')'


반응형
Posted by blueasa
, |
32비트 정수형인 int 는 "unsigned int"라 하더라도

4294967295 (사십이억 구천사백구십육만 칠천이백구십오)

밖에는 표현하지 못하기에, 64비트 정수가 필요합니다.

비주얼C++ 에서는 버전 4.0부터 __int64 라는 이름으로 지원되고 있습니다.


__int64, unsigned __int64 선언, printf() 출력 예제


#include <stdio.h>


void main(void) {

  // signed long long
  // -9223372036854775808 ~ 9223372036854775807
           __int64  x = 9223372036854775807i64;

  // unsigned long long
  // 0 ~ 18446744073709551615
  unsigned __int64 ux = 0xFFFFFFFFFFFFFFFFui64;




  // signed
  printf("%I64d\n", x); // 출력 결과: 9223372036854775807

  // unsigned
  printf("%I64u\n", ux); // 출력 결과: 18446744073709551615

}


출처 :  http://mwultong.blogspot.com/2006/10/c-64-int64-printf.html
반응형
Posted by blueasa
, |