'Dev Tools'에 해당되는 글 10건

  1. 2009.10.30 이벤트 코드 생성기 1.4 업데이트와 설치, 그리고 소스
  2. 2009.03.18 팝업 킬러와 MSTest(비주얼 스튜디오 단위 테스트)의 버그
  3. 2009.03.18 팝업 킬러와 DXperience 평가판을 편리하게 사용하는 팁 1
  4. 2009.03.12 이벤트 코드 생성기 1.3 업데이트
  5. 2009.03.11 한글 로마자 변환기 1
  6. 2008.11.21 변경 이벤트를 지원하는 WPF 종속성 속성 생성 코드 조각
  7. 2008.11.19 Event Stuff Generator의 비주얼 스튜디오 코드 조각 버전
  8. 2008.10.30 이벤트 코드 생성기 1.1 업데이트
  9. 2008.03.12 Code Formatter 소스 공개 2
  10. 2008.03.10 Code Formatter 2

이벤트 코드 생성기 1.4 업데이트와 설치, 그리고 소스

Dev Tools/이벤트 코드 생성기 2009. 10. 30. 00:14

이벤트 코드 생성기에 대한 설명은 아래 링크를 참조하십시오.

C# 코딩 연습 - 대리자와 이벤트

이벤트 코드 생성기 1.1 업데이트

이벤트 코드 생성기 1.3 업데이트

 

이벤트 코드 생성기가 1.4로 업데이트 되었습니다.

 

[설치]

이번 버전 부터는 클릭원스를 통해 배포가 되게 됩니다.

따라서 서버에 최신 버전이 게시되면 자동으로 업데이트가 일어나게 됩니다.

설치 URL은 다음과 같습니다.

http://ldev.homeip.net/publish/DevTools.EventStuffGenerator/publish.htm

 

[업데이트 내역]

이벤트 이름과 매개변수의 히스토리가 저장

프로그램을 다시 시작하더라도 최근 20개 까지의 목록이 유지되므로 동일한 이벤트 코드 생성을 편리하게 할 수 있습니다.

 

이벤트 매개변수 파싱 방법 향상

이전 버전에서는 매개변수를 파싱할 때, 타입명과 변수명은 스페이스, 또 각각의 매개변수는 개행문자로만 구분할 수 있었지만, 이제는 쉼표나 여러 개의 스페이스, 개행문자로도 구분할 수 있습니다.

즉,

int a1

int a2

라고 지정해야만 했던 포맷을 이제는

int a1, int a2

와 같이 지정할 수도 있습니다.

이 기능은 특히, 한번 생성한 이벤트 코드를 수정하는 경우에 유용하게 사용할 수 있습니다.

예를 들어 위 스크린샷과 같이 GenerateButtonClicked 라는 이벤트를 생성하여 사용한다고 합시다.

개발이 진행됨에 따라 이 이벤트의 매개 변수에 새로운 매개변수 (int dummmy)를 추가하여야 한다면, 이전에는 template 부터 argument 까지의 매개변수를 다시 입력하여야 했지만, 이제는 이전에 생성된 코드 중,

등 에서 Template template, string generatedCode, bool successed, string eventName, string argument 부분을 복사한 후, 여기에 int dummy 를 추가하는 식으로 좀 더 효율적인 작업이 가능합니다.

 

파일 저장소로 격리된 저장소 사용

이벤트 이름과 매개변수의 히스토리와 커스텀 템플릿을 일반 파일 시스템이 아닌 격리된 저장소에 저장합니다.

따라서 비스타 이상의 운영체제에서 발생하는 보안 문제 (퍼미션)가 해결되었습니다.

또한 클릭원스를 통해 매번 업데이트를 받더라도, 이전과 동일한 격리된 저장소를 사용하는 로직이 추가되어 있어, 사용자의 사용 환경이 그대로 유지됩니다. (소스를 참고하십시오)

 

[소스]

실제 개발을 진행하고 있는 상태의 소스를 공개용으로 일부 수정하여 첨부하였습니다.

다른 요구사항은 없지만, DevExpress 사의 .Net Winform Controls 라는 써드 파티 컨트롤 라이브러리를 사용하고 있으므로 이 제품은 설치되어 있어야 합니다.

평가판은 여기에서 다운로드 받을 수 있습니다.

:

팝업 킬러와 MSTest(비주얼 스튜디오 단위 테스트)의 버그

Dev Tools/팝업 킬러 2009. 3. 18. 02:02

WCF 프로젝트가 포함된 솔루션에서 MSTest 프로젝트를 디버깅하면 비주얼 스튜디오가 먹통이 되는 문제가 있습니다.

한참 코드삼매경에 빠져 있는데, 육중한 비주얼 스튜디오 프로세스를 강제로 죽이고 다시 실행시켜 작업하던 코드를 로딩해야 하면 짜증이 이만 저만이 아닙니다.

제가 사용하는 네 대의 컴에서 모두 같은 문제가 발생하는 걸로 봐서는 비주얼 스튜디오의 버그인 것으로 추정이 됩니다.

구글에서 찾아보니 저와 같은 문제가 포럼에 몇 번 올라온 적이 있습니다.

그 중 한 개발자에게서 얻은 정보인데, 이 버그로 비주얼 스튜디오가 뻗어다고 하더라도 비주얼 스튜디오를 다시 실행할 필요는 없다는 것을 알았습니다.

VSTestHost.exe 라는 프로세스만 종료하면 된다는군요.

image

비주얼 스튜디오의 버그가 근본적으로 해결된 것은 아니지만, 비주얼 스튜디오를 다시 껐다 켰다 하는 수고에 비하면 훨씬 편해졌습니다.

하지만 시간이 좀 지나자 Ctrl + Alt + Delete를 누르고 작업 관리자에서 프로세스를 찾고 종료시키는 이 짓도 귀찮아졌습니다.

그래서 이런 작업을 단축키 한 방으로 해결할 수 있는 기능을 팝업 킬러에 추가해보았습니다.

 

사용방법은 언제나처럼 간단합니다. (라고 일단 저는 말합니다.)

팝업 킬러에서 옵션 창을 열고, 죽일 프로세스들의 이름과 단축키를 설정해 두면 됩니다.

image

image

이후부터는 위에서 지정한 단축키가 눌러지면 해당 프로세스가 즉시 종료되게 됩니다.

(주의 : 프로세스 이름에 확장자가 포함되면 안됩니다. 예를 들어 notepad.exe 가 아니라 notepad 라고 입력하여야 합니다.)

물론 팝업 킬러가 활성화되어 있지 않더라도 동작합니다.

저수준 키보드 후킹에 관해서는 WPF, 저수준 키보드 후킹 예제을 참조하십시오.

:

팝업 킬러와 DXperience 평가판을 편리하게 사용하는 팁

Dev Tools/팝업 킬러 2009. 3. 18. 01:57

DXperience와 같은 써드 파티 라이브러리의 평가판을 사용하다 보면, 아래와 같이 평가판임을 알리는 팝업이 뜨는 경우가 있습니다.

image

일일히 창을 닫아 주는 것이 번거로와 툴을 하나 만들고 이름을 팝업 킬러라고 붙여 보았습니다.

image

팝업 킬러의 로직은 간단합니다. 일정 주기 마다 닫을 팝업이 있나 검사하고(폴링) 발견되면 팝업을 닫습니다.

팝업을 검사하는 로직은 몇 가지가 있을 수 있겠으나, 팝업 킬러는 단순히 팝업 윈도우의 캡션을 비교하여 팝업을 인식합니다.

(위의 첫번째 스샷의 윈도우 캡션이 Information 인데, 두번째 스샷을 보시면 이를 닫기 위해 팝업 캡션에 Information 을 지정하고 있음을 알 수 있습니다.)

두 개 이상의 팝업도 동시에 감시할 수 있는데, 아래 그림과 같이 감시할 팝업 윈도우의 캡션을 줄을 바꿔 주욱 적으면 됩니다.

image

설치는 秀作 론처의 론칭을 참조하십시오.

:

이벤트 코드 생성기 1.3 업데이트

Dev Tools/이벤트 코드 생성기 2009. 3. 12. 01:15

이벤트 코드 생성기의 버전이 1.3으로 올라갔습니다.

image

  • UI를 Devexpress Winform Controls 기반으로 변경하였습니다.
  • C# 3.0 템플릿의 버그 (자동 속성 생성 부분)를 수정하였습니다.

업데이트와 실행방법은 秀作 론처의 론칭를 참조하시기 바랍니다.

:

한글 로마자 변환기

Dev Tools/한글 로마자 변환기 2009. 3. 11. 17:37

image

뭐하는 툴입니까?

한국 개발자를 위한, ‘국어의 로마자 표기법’에 따라 한글을 로마자로 변환하는 툴입니다.

 

‘한국 개발자를 위한’이라는 게 어떤 의미입니까?

법무용 솔루션을 개발하는 상황을 생각해봅시다. ‘조서’니 ‘불변기일’ 하는 전문용어들이 있는데, 이를 클래스나 필드로 표현하려면 이름을 어떻게 지어야 할까요?

대략 세 가지 방법이 있는 것 같습니다.

  1. ‘조서’나 ‘불변기일’에 해당하는 영문명을 사용한다.
  2. 한글명을 그대로 클래스나 필드의 이름(즉 identifier)로 사용한다.
  3. 한글명을 로마자 표기법에 로마자(영문)로 표기한다.

각 방법마다 장단이 있으며 개발자마다 선호하는 방법이 있을텐데, 저 같은 경우는 이때까지는 1번 방법을 사용해왔으나 요새는 3번 방법 쪽으로 마음이 많이 기울고 있습니다.

1번의 단점은, 영어에 아주 익숙하지 않은 이상 복잡한 전문용어를 영어로 옮기기 위해서는 상당한 비용이 소모된다는 것입니다. 한영사전을 뒤적여 서너 단어를 조합해서 하나의 식별자를 만들었다고 해도, 이를 다른 개발자가 이해하기는 쉬운 일이 아닙니다. 따라서 이 경우에는 프로젝트 전반에 걸쳐 표준적인 ‘한영 대조표’를 관리해야 할 필요가 있습니다.

2번의 경우에는 전문용어를 변환할 필요가 없으니 개발자 간의 의사 소통이 가장 명확하다는 장점은 있으나, A)C#이나 자바와 같이 유니코드를 지원하는 언어에서만 사용 가능하고, B)비주얼 스튜디오 같은 IDE에서 자동 완성 기능이 매우 불편합니다. 또한 C)습관의 문제일 수도 있지만, 메서드와 필드의 이름이 한글로 되어 있으면 코드에 대한 가독성이 저하될 수도 있습니다.

3번의 단점은, 뭐랄까, 너무 없어 보인다는 것입니다. 영어도 아니고 한글도 아니고 한글을 영어로 표기하는 게 우스꽝스럽긴 하지만, 실용적인 관점에서는 무난한 해결책이 아닐까 싶습니다. 또 한가지 국어의 로마자 표기에 대한 표준이 확립되어 있음에도 불구하고 잘 지켜지지 않아, 같은 한글 용어가 개발자에 따라 조금씩 다른게 영문으로 표기될 수가 있다는 점도 들 수 있습니다.

 

이 툴은 표준 국어의 로마자 표기법에 따라 한글용어를 로마자(영문)로 변환하는 일을 합니다. 따라서 프로젝트 전반에 걸쳐 통일된 로마자 표기법을 제공하는 것을 목표로 하고 있습니다.

 

이 툴이 정말 로마자 변환을 완벽하게 할 수 있습니까?

그렇지는 않습니다. 한글의 특성 상 한글은 로마자와 1:1로 매칭되지 않습니다. 그래서 국어의 로마자 표기법에도 자음동화, 구개음화, 경음화 등에 의한 많은 예외 상황들이 있습니다.

이 툴이 변환해 낸 로마자는 완벽하지 않으며 사람의 수정이 필요할 수도 있습니다.

 

사용방벙을 알려주세요.

간단합니다.

image

에서 변환할 한글을 입력한 후

image

버튼을 누르면

image

에 변환된 로마자가 표기됩니다.

 

최근 목록이란 무엇입니까?

image

최근에 변환한 용어를 다시 사용하고 싶을 때 유용하게 사용할 수 있는 기능입니다.

목록에서 용어를 선택한 후 복사 버튼을 누르면 변환된 로마자가 클립보드로 복사됩니다.

최근에 변환된 로마자가 100개 까지 보관이 되며 100개가 넘으면 오래된 목록부터 하나씩 밀려납니다. 또한 프로그램을 종료하더라도 목록을 보존됩니다.

 

왼편에 있는 옵션에 대해서 설명해주세요.

image

케이싱은 로마자의 대소문자를 지정하는 옵션입니다.

현재는 다섯 가지의 케이싱 방법을 제공합니다.

괄호로 둘러쌓인 부분은 각 케이싱을 사용하여 ‘김과장’을 변환하는 경우의 예입니다.

 

image

패딩은 한글 음절 사이에 삽입하는 기호를 말합니다.

빈 칸(스페이스)을 지정할 수 있습니다.

 

image

변환 버튼을 누르면 변환된 로마자를 A)클립보드로 복사하거나, B)최근 목록에 추가하도록 설정하는 옵션입니다.

 

유니코드에 정의된 한글은 만 개가 넘는데 이 툴에서 그 모든 한글을 다 변환할 수 있나요?

그렇지는 않습니다. 이 툴에서 사용하는 기본 데이터는 http://taeyo.net/PDS/Content.aspx?SEQ=3092&TBL=UPLOAD를 기본으로 하고 있습니다.

데이터에 없는 한글을 변환하려고 하면  아래와 같이 한글에 해당하는 로마자를 추가할 수 있는 대화상자가 열립니다.

image

한번 추가된 한글은 파일로 저장되어 이후부터는 추가할 필요가 없습니다.

 

한 번에 한 단어씩만 변환이 되나요?

그렇지는 않습니다.

여러 단어를 한번에 변환하려면 아래 그림과 같이 줄바꿈 문자로 구분하여 입력하면 됩니다.

image

이때 케이싱은 줄 단위로 적용이 됩니다.

 

설치는 어떻게 합니까?

설치와 배포(자동 업데이트)는 수작 론처를 통해서 가능합니다.

 

비스타에서도 잘 됩니까?

비스타가 없어 테스트를 해보지는 않았지만, 파일의 퍼미션 때문에 문제가 될 수는 있을 것 같습니다.

만일 문제가 있으면 수작 론처가 실행된 디렉토리(예컨데 C:\Program Files\Sujak)의 퍼미션을 수정하면 되는데, 자세한 사항은 비스타에서 秀作 론처가 실행되지 않는 문제를 참조하시기 바랍니다.

혹시 소스도 제공하나요?

가치가 있는지는 모르겠지만 아래에서 받으실 수 있습니다.

 

소스를 받았는데 실행이 안되는데요.

비주얼 스튜디오 2008과 DevExpress Winform Contols의 무료 버전이 필요합니다.

 

사용 중 너무 짜증이 나서 개발자에게 저주를 하고 싶으면 어떻게 하면 됩니까?

반사!

:

변경 이벤트를 지원하는 WPF 종속성 속성 생성 코드 조각

Dev Tools/이벤트 코드 생성기 2008. 11. 21. 09:25


요즈음 WPF 공부를 성실하게 하다 보니 앞으로 종속성 속성을 빈번하게 만들 것 같다는 예감이 듭니다.

그래서 VS2005(2008)의 코드 조각 기능을 사용하여 반복적인 타이핑을 줄일 수 있는 코드 조각을 만들어 보았습니다.

사용 방법은 다음과 같습니다.

도구 -> 코드 조각 관리자를 실행합니다.

가져오기 버턴을 눌러 새로운 코드 조각을 가져옵니다.

첨부된 Dependency Property.snippet를 불러옵니다.

마침을 누르면 코드 조각이 추가됩니다.

추가된 코드 조각의 정보는 다음과 같습니다.

image

이 코드 조각을 사용하는 예를 볼까요?

종속성 속성을 가질 클래스를 추가합니다. 이름은 SecretButton으로 하겠습니다.

image

일반 버튼을 확장하여 비밀 텍스트를 추가로 가질 수 있는 버튼입니다.

비밀을 저장할 Secret 종속성 속성을 추가하겠습니다.

클래스 내부에서 dp라고 입력하고 탭키를 누릅니다.

image

(위 이미지에 생성된 코드의 일부입니다.)

현재 커서는 속성 이름을 변경하는 곳에 위치하고 있습니다. 속성 이름인 Secret를 입력하고 탭 키를 누릅니다.

이제 커서는 속성의 형식을 변경하는 곳에 있게 됩니다. 이번에는 string 라고 입력하고 탭 키를 누릅니다.

이번에는 속성의 기본값을 입력합니다. 여기서는 ""라고 입력합니다.

값을 편집하는 중에 기존 값을 변경하지 않으려면 그냥 탭 키만 누릅니다. 또한 엔터 키를 누르면 편집이 끝납니다.

 

위 예에서 생성된 전체 코드는 다음과 같습니다.

#region Secret dependency property things
/// <summary>
/// Identifies the Secret dependency property.
/// </summary>
public static readonly DependencyProperty SecretProperty =
    DependencyProperty.Register(
        "Secret", typeof(string), typeof(SecretButton),
        new FrameworkPropertyMetadata("", OnSecretChanged, OnSecretCoerced));

/// <summary>
/// Gets or sets the Secret assigned to the control.
/// </summary>
[Description("Gets or sets the Secret assigned to the control.")]
[DefaultValue("")]
public string Secret
{
    get { return (string)GetValue(SecretProperty); }
    set { SetValue(SecretProperty, value); }
}

private static object OnSecretCoerced(DependencyObject element, object value)
{
    string newValue = (string)value;
    SecretButton control = (SecretButton)element;

    //TODO : 여기에 커스텀 로직을 입력.

    return newValue;
}

private static void OnSecretChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    SecretButton control = (SecretButton)obj;

    RoutedPropertyChangedEventArgs<string> e = new RoutedPropertyChangedEventArgs<string>(
        (string)args.OldValue, (string)args.NewValue, SecretChangedEvent);
    control.OnSecretChanged(e);
}

#region 라우팅된 SecretChanged 이벤트. UIElement를 상속하는 클래스만 유효
/// <summary>
/// Identifies the SecretChanged routed event.
/// </summary>
public static readonly RoutedEvent SecretChangedEvent = EventManager.RegisterRoutedEvent(
    "SecretChanged", RoutingStrategy.Bubble,
    typeof(RoutedPropertyChangedEventHandler<string>), typeof(SecretButton));

/// <summary>
/// Occurs when the Secret property changes.
/// </summary>
public event RoutedPropertyChangedEventHandler<string> SecretChanged
{
    add { AddHandler(SecretChangedEvent, value); }
    remove { RemoveHandler(SecretChangedEvent, value); }
}

/// <summary>
/// Raises the SecretChanged event.
/// </summary>
/// <param name="args">Arguments associated with the ValueChanged event.</param>
protected virtual void OnSecretChanged(RoutedPropertyChangedEventArgs<string> args)
{
    RaiseEvent(args);
}
#endregion
#endregion

:

Event Stuff Generator의 비주얼 스튜디오 코드 조각 버전

Dev Tools/이벤트 코드 생성기 2008. 11. 19. 13:33



Event Stuff Generator와 동일한 일을 하는 비주얼 스튜디오용 코드 조각을 만들어 보았습니다.

이제는 이벤트 코드 조각을 만들기 위해 따로 Event Stuff Generator 툴을 실행할 필요 없이 비주얼 스튜디오에서 바로 코드 조각을 생성할 수 있게 되었습니다.

(코드 조각을 설치하고 사용하는 방법은 이전 포스트인 변경 이벤트를 지원하는 WPF 종속성 속성 생성 코드 조각를 참고하시기 바랍니다.)


첨부파일에는 Event Stuff C# 2.0 (0).snippet 부터 Event Stuff C# 2.0 (5).snippet 까지 6개, 그리고 Event Stuff C# 3.0 (0).snippet 부터 Event Stuff C# 3.0 (5).snippet 까지 6개의 snippet 파일이 있습니다.

각각 C#의 버전과 생성할 이벤트 매개 변수 클래스의 필드 수에 대응합니다.

예를 들어 AgeChanged 이벤트가 AgeChangedEventArgs 이벤트 매개 변수 클래스와 연결되어 있고, AgeChangedEventArgs가 int oldAge, int newAge 라는 두 개의 필드를 가지고 있다면 Event Stuff C# 2.0 (2).snippet 혹은 Event Stuff C# 3.0 (0).snippet을 사용하면 됩니다.

(필드 수가 여섯 개 이상인 경우는 지원하지는 않지만 소스를 수정하여 직접 만들어 쓰는 방법이 있습니다.)


단축키는 C# 2.0용 코드일 경우에는 ev20 ~ ev25, C# 3.0의 경우에는 ev30 ~ ev35 까지 총 12개를 지정해두었습니다.


필드의 갯수에 따라 거의 동일한 코드 조각을 6개씩 만들어야 하는 것이 비효율적이긴 하지만, 비주얼 스큐디오의 코드 조각에는 필드의 갯수에 따라 반복하는 함수를 지원하지 않기 때문에 어쩔 수가 없는 것 같습니다. (C#의 경우 겨우 3개의 함수만 지원합니다.)

혹시 다른 방법을 아시면 알려 주시면 감사하겠습니다.


또 한 가지 툴을 사용할 때 보다 불편한 점은 매개 변수 클래스의 필드 수가 많아지면 입력이 다소 불편함 감이 있습니다.

예를 들어 코드 조각에서는 oldAge와 OldAge를 각각 입력하여야 하기 때문에 툴에 비해 타이핑 수가 거의 두 배 정도 많습니다.

그래도 각각 일장일단이 있으니 툴이나 코드 조각 중 편리한 것을 사용하시면 되겠습니다.

기술 지원은 양 쪽 다 지원하도록 하겠습니다.

:

이벤트 코드 생성기 1.1 업데이트

Dev Tools/이벤트 코드 생성기 2008. 10. 30. 11:08

이벤트 코드 생성기의 버전이 1.1로 업데이트 되었습니다.

이전 버전을 이미 설치하신 분들은 자동 업데이트가 될 것이며, 새로 설치하실 분들은 아래 링크를 클릭하시면 됩니다.

http://snssoft.net/devtools.eventstuffgenerator/publish.htm

 

사용방법은 다음과 같습니다.

image

1. 생성할 이벤트의 이름을 입력합니다.

 

2. 이벤트 매개변수 클래스의 필드의 형과 이름을 입력합니다.

필드가 여러 개 라면 엔터키를 눌러 줄을 구분합니다.

T data

와 같이 제네릭 필드도 사용할 수 있습니다.

 

3. 템플릿을 선택합니다.

기본적으로 C# 2.0과 C# 3.0용의 템플릿이 제공됩니다. (이 두 템플릿의 차이는 C# 3.0에서는 자동 구현 속성을 사용하는 것 밖에 없습니다.)

Custom 1 ~ Custom 5 템플릿은 사용자가 자유롭게 편집하여 사용할 용도로 제공되는 템플릿입니다.

 

4 ~ 5. 생성 버튼을 클릭하면 코드 텍스트 상자(5번 부분)에 생성된 코드가 표시됩니다.

 

6. 코드 복사 버튼을 누르면 생성된 코드가 클립보드로 복사됩니다.

 

추가로 만약 기본 제공되는 템플릿을 수정하여야 한다면 아래 방법처럼 하실 수 있습니다.

a. Custom 1 ~ Custom 5 템플릿 중 한 가지를 선택하고 템플릿을 적절히 구성합니다. 이때 사용되는 템플릿에서 사용되는 매크로에 대한 설명은 매크로 패널(8번 부분)을 참조합니다.

b. 템플릿 저장 버튼을 눌러 수정된 템플릿을 저장하면, 다음 실행 시 저장된 템플릿이 나타납니다.

:

Code Formatter 소스 공개

Dev Tools/코드 포맷터 2008. 3. 12. 23:45

워낙에 간단한 툴이라서 소스라고 할 것도 없지만, 소스 공개 문화가 장착되기를 바라는 마음에서 올려 봅니다.

  • 비주얼 스튜디오 2008이 설치되어 있어야 합니다.
  • Devexpress 사의 XtraEditors Library 컨트롤을 필요로 합니다. XtraEditors Library는 거대한 상용 제품의 일부이지만, 무료로, 그리고 독립적으로 사용할 수 있는 40여 개의 에디터 컨트롤의 모음입니다. 다운로드 링크

소스 다운로드

:

Code Formatter

Dev Tools/코드 포맷터 2008. 3. 10. 14:36

Code Formatter는 비주얼 스튜디오와 같은 IDE에서 코드를 MS 워드나 웹 페이지 등에 붙여 넣을 때 줄 번호를 추가하고 코드의 포맷을 맞추는 역할을 하는 툴입니다.

이론적으로는 비주얼 스튜디오 외의 다른 IDE에서도 사용이 가능하지만, 테스트는 비주얼 스튜디오와 MS 워드 환경에서만 수행하였습니다. 다른 환경에서는 의도하지 않은 결과가 나올 수 있습니다.

'C# 코딩 연습 시리즈' 라는 졸렬하나마 몇 줄 글을 써다 보니, 비주얼 스튜디오에서 워드로 코드를 복사하는 경우가 많았습니다. 그런데 이 복사가 제 욕심만큼 되지 않았습니다. 서식도 다소 이상해지지만, 특히 줄 번호를 추가되지 않아서 매번 수동으로 줄 번호를 매겨야 하는 어려움이 있었습니다.

워드의 매크로나 VSTO를 이용하는 것도 좋은 방법이겠으나, 저는 간단한 툴을 만들어 보았습니다.

바로 Code Formatter라는 유치한 이름의 툴입니다.

이 툴이 필요한 문제 상황을 살펴보겠습니다. 비주얼 스튜디오에 있는 아래 코드를 복사하여 워드나 블로그에 붙여 넣는다고 합시다.

이를 복사하여 워드에서 붙여 넣으면 이런 모양이 됩니다.

첫 줄의 띄어쓰기가 맞지 않으며, 줄 번호는 매 줄 마다 수동으로 추가를 하여야 합니다.

이에 반해 위 비주얼 스튜디오의 코드를 Code Formatter에서 포맷팅을 한 후 워드에 붙여 넣은 결과는 다음과 같습니다. (블로그 등에 붙여넣는 것도 동일합니다.)

(워드에서 붙여 넣기를 하면 기본 스타일인 표준 스타일이 적용되는데, 위 그림은 표준 스타일에서 단락 앞/뒤 간격을 줄이고 폰트를 조절한 상태입니다. 이 서식을 새로운 스타일로 등록해 두면 편리합니다.)

Code Formatter의 사용법은 간단합니다.

먼저 아래 URL에서 Code Formatter를 설치합니다.

http://kimgwajang.dnip.net/DevTools.CodeFormatter/publish.htm

옵션 패널에서 몇 가지 옵션을 설정한 후 Format 버튼을 클릭하면 코드 패널에 포맷팅된 결과가 나옵니다. 이를 복사하여 워드 등에서 붙여 넣으시면 됩니다.

각 옵션의 의미는 다음과 같습니다.

줄번호 자리수

줄 번호의 자리수를 지정합니다. 아래 두 그림은 각각 줄번호 자리수를 2와 3으로 지정한 결과입니다.

'없음'은 줄 번호를 추가하지 않는다는 의미이며, '자동'은 코드의 줄 수에 따라 자리수가 자동으로 정해진다는 의미입니다. 예를 들어 줄 수가 10 ~ 99 사이라면 줄번호 자리수는 2가 됩니다.

줄번호 구분자

줄 번호와 코드 사이를 스페이스로 채울지 탭으로 채울지를 설정합니다.

소스

포맷팅의 소스를 지정합니다. '텍스트박스'는 화면 우측 상단에 있는 소스 패널에 입력된 코드를 소스로 하여 포맷팅을 합니다. 반면에 '클립보드'는 현재 클립보드에 저장된 내용을 소스로 하여 포맷팅을 합니다. 따라서 '소스'일 경우에는 클립보드에 유효한 텍스트 데이터가 저장되어 있어야 합니다.

포맷팅 후 클립보드로 복사

포맷팅된 코드는 코드 패널에 보입니다. 이를 클립보드로도 자동 복사할 수도 있습니다.

기존 클립보드에 저장되어 있던 내용이 사라지므로, 주의 깊게 사용하시기 바랍니다.

: