SimpleIsBest.NET

유경상의 닷넷 블로그

VS 유틸리티: Copy Source As HTML

by 블로그쥔장 | 작성일자: 12/26/2006 1:10:00 AM
이 글은 오래된 전에 작성된 글입니다. 따라서 최신 버전의 기술에 알맞지 않거나 오류를 유발할 수 있습니다. 저자는 이 글에 대한 질문을 받지 않을 것입니다. 하지만 이 글이 리뉴얼 되면 이 글에 대한 질문을 하거나 토론을 할 수도 있습니다.

아주 간만에 유틸리티를 하나 소개하는군요. 저같이 인터넷에 기술 문서를 게시하는 경우, 소스를 포함해야 하는 경우가 많습니다. 이렇게 웹 문서상에 소스가 올라가면 들여쓰기(indent)와 폰트 등을 고려해서 소스를 읽기 쉽도록 여러 가지 신경을 써야 하는데요... 소스에 syntax highlight 가 들어가 있으면 더욱 보기 좋습니다.

1년여 전에 Code Colorizer 라는 유틸리티를 이곳 블로그에서 소개한 적이 있었습니다. 이 유틸리티는 별도의 exe로 구동을 시켜야 하는 불편함이 있었을 뿐 더러 한글이 깨지는 치명적(?)인 문제가 있었습니다. 오늘 소개할 Copy Source As HTML 이란 유틸리티는 역시 소스에 Syntax Highlight를 넣어 주는 유틸리티로서 Code Colorizer에 비해 편리한 기능이 많습니다.

Showing Colored Source Code

어플리케이션의 UI는 매우 중요하다. SI 프로젝트를 할 때도 일단 화면이 이쁘장 하게 나오면 일부 기능이 제대로 작동하더라도 사용자는 너그러워지기 마련이다. 하지만 UI가 허접하게 보이면 아무리 기능이 좋아도 사용자의 평이 좋게 나오지 않는 법이다.

소스 코드를 웹 상에 게시할 때도 마찬가지이다. 들여쓰기도 안돼있고 폰트도 고정 폭 폰트가 아니면 가독성이 크게 떨어지곤 한다. 그래서 소스 코드를 게시할 때는 들여쓰기 및 폰트에 신경 쓰고, 소스에 Syntax Highlight를 집어 넣어 컬러풀 하게 만들면 읽는 이들을 므흣하게 만들 수 있는 것이다.

Old Utility

예전에 이곳에서 소개한 Code Colorizer는 독립 유틸리티로서 별도의 exe를 구동해야만 했다. 그리소 비주얼 스튜디오 같은 소스 편집도구에서 소스를 복사하여 이 유틸리티에 붙여 넣기 해야만 했고, 소스가 C# 인지 VB.NET 인지, SQL 쿼리 인지를 모두 지정해야만 하는 불편함이 있었다.

가장 나빴던 것은 한글이 모두 깨진다는 것이었다. 이 유틸리티처럼 텍스트에 색상을 입힐 때는 주로 RTF(Rich Text Format) 포맷을 사용하는데 RTF 포맷에서 한글과 같이 비 영어권 문자들은 신중히 처리하지 않으면 곧잘 문자들이 깨지곤 한다.

Introducing Copy Source As HTML

오늘 소개할 유틸리티인 Copy Source As HTML은 Visual Studio에 추가되는 애드인(add-in)으로서 가장 많은 코드 작업을 수행하는 Visual Studio 내에서 소스를 곧바로 복사하여 HTML 문서 내에 붙여 넣기 할 수 있다는 장점이 있다. 게다가 소스의 라인번호를 추가해 준다던가 Color를 표시하기 위해 CSS Style을 태그에 임베딩(embedding)하거나 별도의 스타일로 빼낼 수도 있는 등의 다양한 옵션을 가지고 있다. 귀차니즘으로 인해 상세한 설명은 하지 않겠다. 닭이 아닌 다음엔 아주 조금만 관심을 가지면 손쉽게 익힐 수 있으리라 생각한다.

다 좋지만 Copy Source As HTML 역시 한글 상황에서 몇 가지 문제를 가지고 있다. 외국 소프트웨어의 고질적인 문제점 중 하나인 한글이 깨진다는 것이 첫 번째 문제점이다. Visual Studio 2003 용은 그런 현상이 없었지만 2005 용 애드인은 한글이 깨지는 현상이 발생했다. 다행이도 이 유틸리티의 저자인 J.T. Leigh는 소스를 공개하고 있어서 소스에서 한글이 깨지 않도록 RTF 핸들러를 수정할 수 있었다. 뭐 별건 아니고 몇 줄의 소스에서 꽁수를 몇 개 부렸다. 물론 RTF 포맷을 필자가 잘 알고 있어서가 아니라 몇 회의 삽질 디버깅을 통해서 우연히 문제를 해결 할 수 있었으니 더 상세한 질문은 참아주길 바란다. 쪽팔리니깐... -_-;

두 번째 문제는 한글판 Viusal Studio 2005에서 애드인이 로드 되지 않는 문제인데, Visual Studio의 메뉴들(파일, 편집 등)의 이름이 일부 하드 코드 되어 있어서, 영문판에서는 애드인이 초기화(메뉴를 추가하는 등의 작업) 하는데 아무런 문제가 없지만 한글판에서는 찾고자 하는 메뉴를 찾지 못해 애드인의 로드가 취소 되는 현상이다. 이 역시 소스를 수정하여 한글판 Visual Studio 에서 문제가 없도록 수정할 수 있었다.

Setup & Usage

Leigh의 오리지널 Copy Source As HTML을 설치하고자 한다면 다음 URL에서 2003 용 혹은 2005용 애드인을 다운로드 받을 수 있다.

앞서 언급했듯이 오리지널 코드는 한글이 깨지는 문제와 한글판 Visual Studio 2005에서 문제를 유발한다. (적어도 필자의 PC에서는 그랬다. 혹시 그런 현상이 없는 독자는 잽싸게 꼰질러 주기 바란다) 그래서 필자가 수정한 Copy Source As HTML 은 다음 URL에서 다운로드 받을 수 있다.

압축 파일 내에는 3개의 파일이 있다. 이들을 죄다 My Documents(내 문서) 폴더의 하위에 존재하는 Visual Studio 2005\Addins 폴더에 복사만 하면 설치는 끝난다. 설치 프로그램을 작성할까도 생각해 봤지만 귀차니즘으로 인해서... -_-;

  • CopySourceAsHtml.dll - 애드인 바이너리
  • CopySourceAsHtml.dll.config - 설정 파일
  • CopySourceAsHtml.Addin - VS 2005 애드인 설정

물론 수정된 애드인에 대한 소스는 없다. 필자가 작성한 프로그램이 아니고 아주 약간(?)의 수정만 가해졌기 때문이다. 바이너리를 필자가 재배포 하는 것 역시 문제가 될 수 있지만... 한글 사용자를 위해 어쩔 수 없다. (거의 막가파 수준... -_-)

사용방법은 대단히 간단하다. 복사하고자 하는 소스를 선택하고 마우스 오른쪽 클릭을 하여 나타나는 컨텍스트 메뉴(context menu)에 나타나는 Copy As HTML... 메뉴를 선택하면 된다(화면1 참조)


화면1. Copy As HTML 컨텍스트 메뉴

Copy As HTML... 메뉴를 선택하면 화면2와 같은 대화상자가 나타나는데 이 대화 상자에서 소스의 라인 번호를 추가하거나 줄바꿈, 스타일 설정, 탭 크기 설정, 폰트 설정을 바꿀 수 있다. 물론 기본값은 Visual Studio에서 사용한 라인 번호, 탭 크기, 폰트 등이다.


화면2. Copy As HTML 대화상자

확인(OK)를 선택하면 소스는 HTML 형태로 클립보드에 복사하고 원하는 HTML 문서에 "붙여 넣기" 하기 하면 된다.

    1 using System.Web.UI.WebControls.WebParts;

    2 using System.Web.UI.HtmlControls;

    3 

    4 public partial class _Default : System.Web.UI.Page

    5 {

    6     protected void Page_Load(object sender, EventArgs e)

    7     {

    8         Page.Trace.Write("Page Load....");

    9     }

   10 }

붙여 넣기 결과는 위와 같이 Visual Studio 에서 사용한 컬러 및 폰트가 그대로 나타나게 된다.

ASP.NET을 개발할 때 .aspx 파일이나 .htm 파일에 대한 에디터는 컨텍스트 메뉴에 Copy As HTML... 메뉴가 나타나지 않는다. 정확한 이유는 필자도 확실하지 않다. 이럴 때는 메인 메뉴의 편집(Edit)에 Copy As HTML... 이 있으므로 이 메뉴를 사용하면 된다.

Support

필자가 수정한 Copy Source As HTML 애드인은 전혀 지원되지 않는다. 심지어 버그가 있거나 기타 문제가 발생하더라도 필자에게 연락할 생각은 하지 않는 것이 좋다. 왜냐면... 필자가 해결을 해 줄 수 없기 때문이다. 약 8개월 동안 필자가 써본 경험으로는 별다른 문제가 없었고 어떤 문제가 생기더라도 해결하고 싶은 맘이 안 들기 때문에... 아... 난 왜 이리 게으른 걸까?



Comments (read-only)
#re: VS 유틸리티: Copy Source As HTML / 탱옹 / 12/26/2006 9:06:00 AM
우헹헹. 드뎌 올라왔네요. 잘 쓰겠습니다. 우헹헹
#re: VS 유틸리티: Copy Source As HTML / 컴맹 / 12/26/2006 2:53:00 PM
멋지군요!! ^^
한번 사용해 봤는데 정말로 신기합니다.ㅎㅎ
잘쓸께요~~^^
#re: VS 유틸리티: Copy Source As HTML / 어흥이 / 12/27/2006 9:47:00 AM
^^ 지난번 툴보다 훨씬 좋군요...
좋은정보 감사합니다~
#re: VS 유틸리티: Copy Source As HTML / 이방은 / 12/27/2006 6:09:00 PM
이거...사용한지 한 2주일 가량 됬는데요..
다 좋은데...
한가지..안타까운 점이..
aspx에서는 지원 하지 않는 다는 점입니다..ㅡ.ㅠ;
그래서..저는..aspx 파일을 xml 파일로 카피 해서...
사용합니다..ㅡ.ㅡ;;;
어느 정도...대충...되더군요..ㅋㅋㅋ

혹 aspx에서도 되게끔 될까요 히히~~
#re: VS 유틸리티: Copy Source As HTML / 블로그쥔장 / 12/27/2006 8:17:00 PM
이방은님... 본문에도 이야기 했지만...
aspx는 오른쪽 클릭에 메뉴가 나타나지 않습니다.
하지만 메인 메뉴의 Edit에 가시면 Copy As HTML... 메뉴를 보실 수 있습니다.
^^
#re: VS 유틸리티: Copy Source As HTML / 이방은 / 12/28/2006 9:27:00 AM
허..
제가 얼렁뚱땅..읽었군요..ㅡ.ㅠ;

죄송합니다..

인생이 이래요.. 대충대충..@.@
#re: VS 유틸리티: Copy Source As HTML / 어니스트 / 12/28/2006 10:24:00 AM
오~ 늘 여기 올때마다 소스 코드가 예쁘게 나오는게 부러웠는데, 이런 툴이 있었군요!!
유용히 잘 쓰겠습니다 ^^
#re: VS 유틸리티: Copy Source As HTML / 위시 / 12/28/2006 5:10:00 PM
아..좋은툴이네요..안그래도 소스코드 깔끔하게
붙이는 쥔장님의 노력이 궁금하긴 했었습니다;;
#re: VS 유틸리티: Copy Source As HTML / 앤시스 / 12/31/2006 9:49:00 AM
정말 유용하네요. ^^
#re: VS 유틸리티: Copy Source As HTML / 감사합니다. / 1/2/2007 12:46:00 AM
이런 프로그램 한참 찾았는데..여기에 이런것이 있었네요..감사합니다. 유용하게 쓰겠습니다.

새해 복 많이 받으세요.
#re: VS 유틸리티: Copy Source As HTML / 장진 / 1/5/2007 2:20:00 PM
오우~ 좋군요,
점점 치매끼가 생겨서, 팁들을 블로그에 정리중이였는데,...
잘쓰겠습니다. ^^ 감사~
#re: VS 유틸리티: Copy Source As HTML / 김동진 / 2/14/2007 4:27:00 AM
좋은 정보 감사합니다.^^
#re: VS 유틸리티: Copy Source As HTML / 공도 / 2/23/2007 9:10:00 PM
먼저 구글신께 감사를!
구글타고 들어왔습니다. 코드 컬러링 문제로 한참 헤맸는데 감동이네요.
그런데 제 환경에서는 경상님의 애드인은 VS2005 로드시 익셉션이 발생하는데 오리저널 애드인은 한글 깨지는 현상도 없이 잘 되는군요;;
익셉션 내용은 다음과 같습니다.
---------------------------------------------------------------------------------------------------------
CopySourceAsHtml caught the following exception: System.ArgumentException: 값이 예상 범위를 벗어났습니다.
위치: Microsoft.VisualStudio.CommandBars.CommandBarControls.get_Item(Object Index)
위치: JTLeigh.Tools.CopySourceAsHtml.Connect.AddControls()
위치: JTLeigh.Tools.CopySourceAsHtml.Connect.OnConnection(Object application, ext_ConnectMode connectMode, Object addIn, Array& custom)
---------------------------------------------------------------------------------------------------------
물론 오리지널 코드가 잘 된다면 상관 없겠지만 혹시 아직 제가 발견 못한 문제로 한글이 깨질 수도 있겠죠.
어쨌든, 좋은 포스팅에 감사합니다. :)
#re: VS 유틸리티: Copy Source As HTML / 블로그쥔장 / 2/24/2007 1:22:00 AM
그게... VS2005의 SP1 설치 여부에 따라서 다르게 나타나더라는...
원본이 잘된다면 그게 제일 좋겠지요...
전 영문판을 쓰기 때문에 가끔 한글이 깨지는 현상이 나타나서요...
#re: VS 유틸리티: Copy Source As HTML / 감사하는이가 / 3/15/2007 11:15:00 AM
좋은툴이네요 ...
유틸리티의 저자인 J.T. Leigh는 소스를 공개한다고 하셨는데 ... Copy Source As HTML 오리지널 배포 사이트가 열리지 않네요 ...
혹시 갖고 계시다면 Code Colorizer source 좀 올려주시면 안될까요?
Copy Source As HTML 오리지널도 있다면 같이 부탁드립니다.
#re: VS 유틸리티: Copy Source As HTML / 블로그쥔장 / 3/18/2007 10:44:00 PM
소스를 공개한다는 것은 저자가 공개한다는 것이지 제가 재배포할 권한이 있다는 것을 말하지는
않는 것 같습니다. 사이트에서 소스를 다운로드 하시는 것이 맞을 것 같습니다.
그리고 Code Colorizer source는 저도 가지고 있지 않습니다.
오리지널 사이트에서 소스를 구하실 수 없다면 저에게 메일을 주십시요.
소스를 제 사이트에 올릴 수는 없을 것 같습니다.
#re: VS 유틸리티: Copy Source As HTML / 하늘을사랑한신발 / 8/1/2007 10:40:00 AM
몇몇 버그를 살짝 수정할수 있는 방법제 홈피에 써 놨습니다.
1. 영문 OS + 한글 VS시 여전히 정삭작동하지 않음
2. 프로젝트 속성창등 몇몇창에 진입시 에러 발생
3. ASPX, HTML페이지에서 ContextMenu를 통한 실행 불가
제홈피 첫페이지의 "[07.07.31] "Copy Source As HTML" rev 0.2" 글을 참고하세요
#re: VS 유틸리티: Copy Source As HTML / 블로그쥔장 / 8/1/2007 11:34:00 AM
멋지십니다... ^^
한글OS + 영문 VS 혹은 영문OS + 한글 VS 상에서 문제가 발생하는 원인은 길선님 글의 내용대로
메뉴 이름이 다르다는 것인데... 이게 오리지널 VS 상에선 한글판이던 영문판이던 문제가 없는 것으로 알고 있습니다.
SQL 2005의 한글판 개발환경이 설치되면서 메뉴가 꼬이는 것 같더군요...
저는 귀차니즘에 그냥 대충 VS 영문판(제가 영문판을 쓰기 땀시)에서 작동하도록만 수정해 놓았는데...
수고스럽게 일반적인 해결방법을 제공하셨군요.

ASPX, HTML 문서에서 Context 메뉴에 Copy As HTML이 작동하진 않지만 상단 메인 'Edit' 메뉴에서
사용할 수 있으므로 굳이 Context 메뉴를 해결하지 않았다는... (이것도 귀차니즘)

아무튼 대단하십니다. ^^
#re: VS 유틸리티: Copy Source As HTML / jonathan.cho / 11/8/2007 4:44:00 PM
좋은 유틸리티 고맙습니다^^
#re: VS 유틸리티: Copy Source As HTML / paparochi / 4/25/2009 11:23:00 PM
혹시 비졀 스튜디오 2008로 갈아타실 생각은 없으신가요? ㅎㅎㅎ