푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 애플리케이션
C# 애플리케이션

다른 카테고리

색상 및 스타일 및 재사용성 - Spectre Console 시리즈

Tim Corey
9분 57초

Spectre Console은 개발자가 일반 콘솔 애플리케이션을 시각적으로 풍부한 환경으로 변환할 수 있도록 해주는 강력한 .NET 용 NuGet 패키지입니다. Spectre Console의 색상, 텍스트 장식 및 재사용 가능한 스타일을 조합하면 일반 콘솔 출력을 유익하고 세련된 형태로 향상시킬 수 있습니다.

Tim Corey는 자신의 비디오 " 색상, 스타일 및 재사용성 - Spectre 콘솔 시리즈 "에서 이 작업을 수행하는 방법을 자세히 설명합니다. 이 글에서는 팀이 언급한 내용을 하나씩 살펴보면서, 여러분이 함께 시청할 수 있도록 타임스탬프를 표시해 두겠습니다. 이는 색상, 스타일 클래스, 심지어 반복적으로 사용할 새 스타일을 만들고 사용자 지정하는 방법을 이해하는 데 매우 유용한 방법입니다.

Spectre 콘솔 서식 소개

0:00에 Tim은 Spectre Console이 "콘솔 앱을 시각적으로 매력적이고 유용한 애플리케이션으로 바꿔준다"고 설명합니다. 그는 이 시리즈가 라이브러리를 작은 단위로 나누어 개발자들이 한 번에 하나의 기능에 집중할 수 있도록 구성했다고 언급합니다.

그는 설명란에 소스 코드 링크를 알려주고 사용자들에게 자신의 채널을 구독해달라고 요청합니다. 이 강의에서는 콘솔 출력에 서식이 지정된 텍스트를 설정하고 반환하는 방법과 이러한 서식을 프로그램 전체에서 재사용하는 방법에 대해 알아봅니다.

인라인 마크업 및 마크업라인 사용

0:36부터 Tim은 AnsiConsole.MarkupLine과 AnsiConsole.Markup을 시연합니다. 이 메서드들을 사용하면 문자열 표현에 색상과 장식을 직접 삽입할 수 있습니다.

Tim이 0:51에서 설명했듯이, Markup은 자동으로 새 줄을 삽입하지 않지만 MarkupLine은 삽입합니다. "Console.Write와 WriteLine의 차이와 비슷하죠." 이 차이는 여러 항목이나 목록을 각 줄에 따로 표시하려는 경우에 중요합니다.

그는 [red]이것은 인라인 마크업입니다[/]를 입력하고 실행하여 빨간색 문자열을 표시합니다. 그리고 1분 38초에 그는 전경색과 배경색, 즉 "흰색 바탕에 빨간색"을 시연하여 사용자가 흰색 배경에 빨간색 텍스트를 볼 수 있도록 합니다. 2시 5분쯤에 그는 굵은 글씨를 장식처럼 덧붙입니다.

Tim은 2분 18초에 인라인 마크업이 간단한 작업에는 빠르고 쉽지만, 여러 기능에 걸쳐 구조화되거나 재사용 가능한 스타일을 적용하려는 경우에는 "그렇게 좋지 않다"고 지적합니다.

Spectre Console Colors Styles Reusability 1 related to 인라인 마크업 및 마크업라인 사용

프리셋 스타일 클래스 만들기

2분 32초에 Tim은 스타일 클래스의 새 인스턴스를 만들어 재사용하는 방법을 보여줍니다. 그는 이렇게 썼습니다.

var dangerStyle = new Style(
    foreground: Color.Red,
    background: Color.White,
    decoration: Decoration.Bold);
var dangerStyle = new Style(
    foreground: Color.Red,
    background: Color.White,
    decoration: Decoration.Bold);

여기서 Tim은 빨간색 전경, 흰색 배경, 굵은 장식이 포함된 새로운 스타일을 dangerStyle이라는 변수에 할당하고 있습니다. 그는 또한 3분 26초에 모든 인수를 채울 필요는 없으며 필요에 따라 전경이나 장식만 선택할 수 있다고 언급합니다.

이 클래스 기반 접근 방식을 사용하면 마크업 태그를 반복하는 대신 한 곳에서 스타일을 업데이트하고 텍스트를 렌더링하는 모든 곳에 일관되게 적용할 수 있습니다.

새 마크업을 사용하여 스타일 적용

3분 48초에 팀은 그 스타일을 적용하는 방법을 보여줍니다. AnsiConsole.WriteLine은 스타일을 직접 허용하지 않으므로 새 마크업 객체와 함께 AnsiConsole.Write를 사용해야 합니다.

AnsiConsole.Write(
    new Markup("Danger text from style", dangerStyle));
AnsiConsole.Write(
    new Markup("Danger text from style", dangerStyle));

4분 8초에 그는 WriteLine은 문자열이나 간단한 유형만 받지만, Write에는 IRenderable 객체를 받는 오버로드된 메서드가 있다고 설명합니다. 그래서 스타일을 새로운 마크업에 전달한 다음 코드를 작성하는 것입니다.

팀은 4분 45초에 이 구문이 "약간 더 복잡하다"고 언급하지만, 스타일이 적용된 텍스트를 표시하는 공식적인 방법이라고 말합니다. 그는 심지어 이런 작업을 자주 한다면 자신만의 간소화 방법을 만들어 보라고 제안하기도 합니다.

Spectre Console Colors Styles Reusability 2 related to 새 마크업을 사용하여 스타일 적용

줄 바꿈 및 커서 배치 처리

코드를 실행한 후, 팀은 5분 44초에 커서가 스타일이 적용된 텍스트와 같은 줄에 있다고 지적합니다. Write 함수는 줄 바꿈을 추가하지 않기 때문입니다. 6분 7초에 그는 문자열 안에 \n을 추가하여 커서를 아래로 이동시키는 방법으로 이 문제를 해결하는 것을 보여줍니다.

이 작은 팁은 출력 결과가 예상과 일치하는지 확인하는 데 중요합니다. 특히 스타일이 적용된 프롬프트 이후에 사용자 입력이나 데이터가 나오는 대규모 콘솔 애플리케이션을 개발할 때 유용합니다.

여러 장식 추가하기

다음으로 팀은 장식을 조합하는 방법을 보여줍니다. 6시 27분에 그는 "장식을 두 개 이상 적용하고 싶다면 어떻게 해야 할까요?"라고 말합니다. 예를 들어, 이탤릭체도 적용하고 싶습니다. 이렇게 하려면 파이프(|) 문자를 사용하여 장식 요소를 구분하면 됩니다.

그는 굵게, 기울임, 취소선, 밑줄, 흐리게, 반전, 깜빡임 등 다양한 장식 옵션을 선택할 수 있음을 보여주고, 7분 5초에는 Windows PowerShell과 Windows Terminal 지원에 대해서도 언급합니다. 현재 Windows Terminal에서는 느린 깜빡임과 빠른 깜빡임이 동일하게 보입니다.

7시 29분에 그는 코드를 다시 실행하고 굵은 글씨체 외에도 이탤릭체 스타일이 적용된 것을 보여줍니다. "원하는 대로 이것들을 조합해서 여러 번 적용할 수 있는 스타일을 만들 수 있어요."라고 팀이 7분 49초에 말합니다.

이 기능은 오류를 빨간색으로, 성공 메시지를 녹색으로, 경고를 노란색으로 강조하거나 파란색, 보라색, 연보라색 또는 적갈색과 같은 사용자 지정 레이블을 사용하려는 경우에 매우 유용합니다. Spectre Console은 전체 RGB 색상 세트를 지원합니다.

인라인 스타일과 사전 설정 스타일 혼합

8분 2초에 팀은 다양한 스타일의 글쓰기를 결합하는 방법을 보여줍니다. AnsiConsole.Write 함수를 여러 번 호출할 수 있습니다. 먼저 스타일이 적용된 텍스트를 입력하고, 그 다음에는 스타일이 적용되지 않은 텍스트나 다른 스타일의 텍스트를 입력하여 줄의 일부만 강조 표시할 수 있습니다. 다음 예시를 참고하세요.

AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");
AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");

Tim이 8분 37초에 설명하는 것처럼, WriteLine 대신 Write를 사용하는 이유는 일반 스타일로 돌아가기 전에 텍스트의 일부만 강조 표시하고 싶을 수 있기 때문입니다.

Spectre Console Colors Styles Reusability 3 related to 인라인 스타일과 사전 설정 스타일 혼합

이 기능을 사용하면 데이터 테이블, 장기 작업용 진행률 표시줄 또는 여러 열이 있는 패널과 같은 복합 출력을 유연하게 구성하고 특정 항목이나 레이블에만 스타일을 적용할 수 있습니다.

마무리하며 – 선택 가능한 옵션

9시 1분, 팀은 선택 사항들을 요약합니다.

  • 빠른 서식 지정을 위해 [color]text[/] 및 Markup 또는 MarkupLine을 사용하여 인라인 스타일을 적용하세요.

  • 또는 newStyle()을 사용하여 새 스타일을 만들고 AnsiConsole.Write를 호출할 때 Markup 객체에 적용합니다.

팀은 9분 26초에 시청자들에게 "다양한 색상, 배경, 장식 등을 적용해 보세요"라고 권합니다. 여기에는 스타일이 적용된 헤더가 있는 새 테이블을 만들거나, 파일이나 항목 배열을 처리함에 따라 업데이트되는 진행률 표시줄을 추가하거나, JSON 데이터를 스타일이 적용된 형태로 변환하는 것 등이 포함됩니다.

그는 9시 33분에 시청자들에게 감사를 표하고 자신이 팀 코리임을 다시 한번 언급하며 방송을 마무리합니다. 이 시리즈는 Patrik Svensson이 Phil Scott과 같은 개발자들의 기여를 받아 제작한 Spectre Console 라이브러리를 기반으로 하며, Tim의 비디오를 통해 해당 라이브러리의 기능을 빠르게 익힐 수 있습니다.

결론

팀 코리의 영상은 스펙터 콘솔이 일반 콘솔 앱을 어떻게 시각적으로 매력적인 앱으로 바꾸는지 명확하게 보여줍니다. 인라인 마크업부터 완벽하게 재사용 가능한 스타일 클래스에 이르기까지, 그는 전경색과 배경색, 텍스트 장식, 커서 위치를 제어하는 ​​방법을 단계별로 설명합니다.

위 영상의 타임스탬프에 표시된 팀의 예시를 따라하면, 구문을 추측할 필요 없이 순식간에 자신만의 콘솔 앱에 전문가 수준의 스타일을 추가할 수 있습니다. 변수를 할당하고, 장식을 추가하고, 스타일이 적용된 텍스트를 렌더링하는 방법을 알게 되면, 이러한 기술을 확장하여 Spectre Console에서 제공하는 테이블, 패널, 진행률 표시줄 및 기타 기능을 쉽게 만들 수 있습니다.

팀이 말했듯이, "직접 사용해보고 마음에 드는 걸 찾아보세요."

Hero Worlddot related to 색상 및 스타일 및 재사용성 - Spectre Console 시리즈
Hero Affiliate related to 색상 및 스타일 및 재사용성 - Spectre Console 시리즈

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해