코딩시에 필요한 것들..

1 000000 333333 666666 999999 CCCCCC FFFFFF
2 000033 333300 666600 999900 CCCC00 FFFF00
3 000066 333366 666633 999933 CCCC33 FFFF33
4 000099 333399 666699 999966 CCCC66 FFFF66
5 0000CC 3333CC 6666CC 9999CC CCCC99 FFFF99
6 0000FF 3333FF 6666FF 9999FF CCCCFF FFFFCC
7 003300 336633
669966 99CC99 CCFFCC FF00FF
8 006600 339933 66CC66 99FF99 CC00CC FF33FF
9 009900 33CC33 66FF66 990099 CC33CC FF66FF
10 00CC00 33FF33 660066 993399 CC66CC FF99FF
11 00FF00 330033 663366 996699 CC99CC FFCCFF
12 00FF33 330066 663399 9966CC CC99FF FFCC00
13 00FF66 330099 6633CC 9966FF CC9900 FFCC33
14 00FF99 3300CC 6633FF 996600 CC9933 FFCC66
15 00FFCC 3300FF 663300 996633 CC9966 FFCC99
16 00FFFF 330000 663333 996666 CC9999 FFCCCC
17 00CCCC 33FFFF 660000 993333 CC6666 FF9999
18 009999 33CCCC 66FFFF 990000 CC3333 FF6666
19 006666 339999 66CCCC 99FFFF CC0000 FF3333
20 003333 336666 669999 99CCCC CCFFFF FF0000
21 003366 336699 6699CC 99CCFF CCFF00 FF0033
22 003399 3366CC 6699FF 99CC00 CCFF33 FF0066
23 0033CC 3366FF 669900 99CC33 CCFF66 FF0099
24 0033FF 336600 669933 99CC66 CCFF99 FF00CC
25 0066FF 339900 66CC33 99FF66 CC0099 FF33CC
26 0099FF 33CC00 66FF33 990066 CC3399 FF66CC
27 00CCFF 33FF00 660033 993366 CC6699 FF99CC
28 00CC33 33FF66 660099 9933CC CC66FF FF9900
29 00CC66 33FF99 6600CC 9933FF CC6600 FF9933
30 00CC99 33FFCC 6600FF 993300 CC6633 FF9966
31 009933 33CC66 66FF99 9900CC CC33FF FF6600
32 006633 339966 66CC99 99FFCC CC00FF FF3300
33 009966 33CC99 66FFCC 9900FF CC3300 FF6633
34 0099CC 33CCFF 66FF00 990033 CC3366 FF6699
35 0066CC 3399FF 66CC00 99FF33 CC0066 FF3399
36 006699 3399CC 66CCFF 99FF00 CC0033 FF3366

RGB 색상표 (2)

000000  black
2f4f4f   darkslategray
708090  slategray
778899  lightslategray
696969  dimgray
808080  gray
a9a9a9  darkgray
c0c0c0  silver
d3d3d3  lightgrey
dcdcdc gainsboro
ffffff      white
fff5ee    seashell
fffafa     snow
f8f8ff     ghostwhite
fffaf0     floralwhite
f5f5f5    whitesmoke
f0f8ff     aliceblue
f0ffff     azure
fdf5e6   oldlace
f5fffa     mintcream
ffefd5    papayawhip
ffdab9   peachpuff
faf0e6   linen
eee8aa palegoldenrod
ffe4e1
ffe4b5  moccasin
ffdead  navajowhite
d2b48c tan
f5deb3  wheat
fafad2  lightgoldenrodyellow
ffffe0    lightyellow
fff8dc   cornsilk
faebd7 antiquewhite
f5f5dc   beige
fffacd   lemonchiffon
fffff0     ivory
f0e68c  khaki
e6e6fa  lavender
fff0f5    lavenderblush
ffe4c4 bisque
ffebcd  blanchedalmond
deb887 burlywood
cd853f  peru
00ced1 darkturquoise
00bfff   deepskyblue
7fffd4  aquamarine
1e90ff  dodgerblue
00ffff   cyan
f0fff0   honeydew
87cefa lightskyblue
afeeee paleturquoise
e0ffff    lightcyan
add8e6 lightblue
b0c4de lightsteelblue
40e0d0 turquoise
48d1cc mediumturquoise
00ffff    aqua
7b68ee  mediumslateblue
191970  midnightblue
6495ed cornflowerblue
0000cd mediumblue
6a5acd slateblue
4682b4 steelblue
0000ff   blue
483d8b darkslateblue
5f9ea0  cadetblue
87ceeb skyblue
4169e1 royalblue
b0e0e6 powderblue
000080 navy
00008b darkblue
8a2be2 blueviolet
8b008b darkmagenta
9932cc darkorchid
9400d3 darkviolet
ff00ff    magenta
ff00ff    fuchsia
c71585 mediumvioletred
ba55d3 mediumorchid
9370db mediumpurple
dc143c crimson
ff1493 deeppink
ffb6c1 lightpink
ff69b4 hotpink
ffc0cb pink
dda0dd plum
800080 purple
ee82ee violet
d8bfd8 thistle
da70d6 orchid
4b0082 indigo
a52a2a brown
e9967a darksalmon
f08080 lightcoral
cd5c5c indianred
ffa07a lightsalmon
db7093 palevioletred
f4a460 sandybrown
fa8072 salmon
ff6347 tomato
ff4500 ornagered
ff0000 red
800000 maroon
8b0000 darkred
b22222 firebrick
d2691e chocolate
8b4513 saddlebrown
a0522d sienna
bc8f8f rosybrown
ff7f50 coral
ff8c00 darkorange
ffa500 orange
b8860b darkgoldenrod
ffd700 gold
ffff00 yellow
7fff00 chartreuse
7cfc00 lawngreen
00ff00 lime
32cd32 limegreen
00ff7f springgreen
3cb371 mediumseagreen
adff2f greenyellow
8fbc8f darkseagreen
90ee90 lightgreen
98fb98 palegreen
9acd32 yellowgreen
2e8b57 seagreen
00fa9a mediumspringgreen
20b2aa lightseagreen
66cdaa mediumaquamarine
228b22 forestgreen
008b8b darkcyan
008080 teal
006400 darkgreen
556b2f darkolivegreen
008000 green
808000 olive
6b8e23 olivedrab
bdb76b darkkhaki
daa520 goldenrod

아래 내용을 진행해 주세요.

1. 컴퓨터를 안전모드로 부팅해 주세요.
안전모드 부팅은 컴퓨터를 껐다가 키면서 켜지자 마자 f8 키를 계속 탁탁탁 눌러주시면 메뉴가 나옵니다.
안전모드를 선택해서 엔터 쳐 주세요. 마우스는 되지 않고 키보드 위아래 키만 가능합니다.
운영체제는 기본으로 선택되는 것으로 엔터 한번 다시 쳐주세요.
부팅이 되면 로그인을 진행해서 바탕화면 나오도록 합니다.

2. 내컴퓨터를 두번 클릭해서 열어줍니다.

3. C:\Windows\SoftwareDistribution 을 찾아서 이름을 변경합니다.
ex)
SoftwareDistribution.old ...

4. 컴퓨터를 재부팅해서 업데이트를 다시 진행해 봅니다.

증상이 동일할 경우 다음을 진행해 주세요.

* 서비스 목록 확인 *
1.
제어판 - 관리도구 - 서비스 를 선택합니다.
2.
오른쪽 화면에서 automatic windows update 서비스와, Background Intelligent Transfer Service 가 상태가 시작으로 되어 있는지 확인하고 아무런 표시가 없으면 두번 클릭한뒤에 나오는 창에서 시작을 눌러줍니다.
3. PC
를 재부팅 해서 동일할 경우 다음 단계를 진행합니다.

* 업데이트 파일 복구 *
1.
시작 - 실행 창에서 아래를 한줄씩 입력해서 실행합니다.
1) regsvr32 msxml.dll
2) regsvr32 msxml2.dll
3) regsvr32 msxml3.dll
4) regsvr32 wuapi.dll
5) regsvr32 wuaueng.dll
6) regsvr32 wuaueng1.dll
7) regsvr32 wucltui.dll
8) regsvr32 wuweb.dll
9) regsvr32 wups.dll

2.
재부팅후 증상을 확인합니다.

동일증상이면 아래의 사항을 확인해주십시요.

1.서비스에서 해당 서비스 시작 후 확인
시작-제어판-관리도구-서비스 에서 Cryptographic서비스를 시작으로 설정합니다.
2.
동일할 경우 C:\windows\System32\Catroot2 폴더로 이동해서Catroot2 폴더를 제거하거나
다른 이름으로 변경 후 다시 윈도우즈 업데이트 설치하면 정상 설치되는지 확인합니다.

2006년 4월

요약: Dax Pandhi는 Windows 응용 프로그램을 위한 사용이 쉬운 사용자 인터페이스를 구현하는 방법과 사용자 환경 디자인 원칙에 대해 설명합니다.

목차

소개
적절한 UI를 만들기 위한 기본 원칙
   간격 조정 및 위치 지정
   크기
   그룹화
   사용 편이성
보다 효율적이고 편리한 사용자 환경 조성을 위한 20가지 팁
   1. 표준 준수
   2. 중요 단추에 주의 끌기
   3. 알아보기 쉽도록 아이콘 제공
   4. 알아보기 쉽도록 머리글 작성
   5. 사용자 지정 메시지 상자 사용
   6. 대체 명령 포함
   7. 중요 작업을 처리하는 방법
   8. 라디오 단추 또는 콤보 상자
   9. 사용자를 방해하지 마십시오
   10. 진행 상태 알리기
   11. 마법사로 복잡한 단계를 간단히 수행
   12. 텍스트의 어조를 정확히 전달
   13. 때로는 ListView가 더 효율적
   14. 이동 경로(Breadcrumb) 컨트롤과 세로 막대로 간단한 탐색 지원
   15. 멋진 그래픽 사용
   16. 가급적 크기 조정이 가능한 폼 제공
   17. 세로 막대/작업창으로 보다 다양한 기능 제공
   18. 알림 옵션 제공
   19. 도구 설명 제공
   20. 사소한 부분까지 배려
결론
참조 및 자료

소개

개발자들은 한 가지 시각만을 갖는 경우가 흔히 있습니다. 아마도 약간 무미건조할 수 있겠지만 코드에는 분명히 느낌이 있습니다. 그러나 그뿐입니다. 때로는 기술, 그 중에서도 특히 '새로운' 기술과 소프트웨어 기능에 자만하여 최종 사용자가 중요시하는 건 다를 수도 있다는 점을 간과할 수도 있습니다. 아마 지금도 개발자들은 "코드를 보여주세요. 설명은 필요 없습니다!"라고 말할 수도 있습니다. 개발자들은 사용자가 '기대하는 것처럼' 응용 프로그램이 작동하도록 최선을 다합니다. 그러나 사용자들은 단순히 작동하는 것 이상을 바라게 됩니다. 일반 판매용 소프트웨어를 개발하거나 비전문가들이 사용하는 제품을 개발할 경우에는 특히 그렇습니다. 처음에는 다소 불쾌하다고 느껴질 수도 있지만 사용자는 어디까지나 고객이므로 사용자 환경을 좀 더 개선할 수 있는 방법에 대해서 알아보도록 하겠습니다.

만약 사용자가 일주일에 수십 시간을 특정 소프트웨어 응용 프로그램을 보면서 작업하는 데 보낼 경우 최소한 이 소프트웨어가 눈에 편안하기를 바랄 것입니다. 또한 되도록 탐색과 사용이 편리하기도 바랄 것입니다. 문제는 소프트웨어가 대량으로 생산되는 상황에서 소프트웨어 응용 프로그램 중 40% 정도만이 최종 사용자들이 정말 마음에 들어 하고 즉시 편안하게 사용할 수 있는 매우 우수한 UI를 갖추고 있다는 것입니다.

수많은 기업 내부용 소프트웨어가 생산되고 있습니다. 그러나 자체적으로 개발하든 컨설턴트의 도움을 받아 개발하든 보다 나은 UI를 만들기 위한 시간, 노력 또는 비용은 거의 투자되지 않고 있는 실정입니다. 개발 과정에서 '디자이너'의 역할은 미미하며 특히 Windows 응용 프로그램의 경우에는 더욱 그렇습니다. 현재 개발 중인 UI가 형편 없다는 것이 아니며 개발자가 할 수 있는 일들이 아주 많다는 점을 말하고 싶습니다. 이젠 더 이상 "이 정도면 괜찮은 수준" 또는 "프로그램을 개발"하는 것만으로 충분하지 않습니다.

보다 외관이 멋지고 기능이 우수한 응용 프로그램용 UI를 만들려면 준수해야 하는 몇 가지 기본 규칙이 있습니다. 이 기본 규칙을 준수하는 데 있어 시간과 비용이 그다지 많이 드는 것은 아니나 투자수익(ROI)은 분명히 향상됩니다.

자세히 설명하기에 앞서 사용자 인터페이스와 사용자 환경을 구분해 보도록 하겠습니다. 사용자 인터페이스(UI)란 응용 프로그램의 시각적 측면과 컨트롤을 나타내는 반면, 사용자 환경(UX)은 UI 및 그 UI와 관련된 응용 프로그램의 동작뿐 아니라 이 응용 프로그램에서 사용자가 받게 되는 "느낌"까지 포괄합니다. 즉, 단순히 외관이 훌륭한 UI를 설계하는 것이 아니라 성능도 우수해야 한다는 것입니다.

여기서는 응용 프로그램 디자인 단계에서 쉽게 적용할 수 있는 UX 디자인을 위한 20가지 중요한 규칙에 대해서 설명하도록 하겠습니다. 그러면 보다 사용이 쉬운 기능, 즉 "휴먼 UX"를 갖춘 다양한 응용 프로그램을 개발할 수 있습니다. 모두 알다시피 Windows Vista용 응용 프로그램을 제작할 경우에는 다르게 보고 다르게 행동해야 합니다. 여기서 설명하는 내용이 현재 사용자에게는 미래의 프로그램을 미리 경험해 볼 수 있는 기회를 제공하면서 개발자에게는 미래의 응용 프로그램을 준비하는 데 도움이 되기를 바랍니다.

먼저 우수한 UI 디자인의 기본 사항에 대해서 간략하게 설명한 후에 이 주제에 대해서 자세히 살펴보도록 하겠습니다.

적절한 UI를 만들기 위한 기본 원칙

예전에 제 친구 중 하나가 자신이 수석 설계자로 참여했던 응용 프로그램을 자랑한 적이 있었습니다. 기능은 정말 우수하더군요. 그 개발 팀에서 소프트웨어의 핵심 부분을 개발하는 데만도 2년 정도가 걸렸지만 수천 달러의 가격으로 판매될 예정이었던 이 응용 프로그램의 UI는 테마별로 되어 있지 않은 일반 Windows 응용 프로그램보다도 더 단조로웠습니다. 저는 그 친구에게 왜 UI 개선에는 시간을 좀 더 들이지 않았는지 물었습니다. 그는 "Windows 응용 프로그램이기 때문이네. 웹 응용 프로그램이었다면 물론 시간을 더 들였겠지. 하지만 Windows XP라 하더라도 응용 프로그램의 외관을 치장하는 것 이외에 UI에 할 수 있는 일이 무엇이겠나?"라고 대답했습니다.

그의 말은 일리는 있었으나 만약 당신이 Windows Vista에서 가능한 작업을 염두에 둔다면 그의 말이 전적으로 옳지만은 않다는 것을 알 수 있을 것입니다. 창의 모양을 개선하려고 굳이 사용자 지정 스킨을 만들 필요는 없습니다. 진정으로 전문적으로 보이는 UX를 만드는 것은 다음 네 가지 요소에 달려 있습니다.

  • 간격 조정 및 위치 지정
  • 크기
  • 그룹화
  • 사용 편이성

Visual Studio 8.0의 이전 버전에서는 간격 조정과 크기 조정이 매우 어려웠습니다. 4x4 또는 8x8 표 형태가 항상 맞지는 않았기 때문입니다. 하지만 SnapLines가 포함되면서 이 프로세스는 한층 간단해졌습니다. 이 점에 있어서는 이 기능이 매우 만족스러웠으나 레이블 하나를 텍스트 상자에 맞추는 작업이나, 설상가상으로 여러 레이블을 각각 해당 텍스트 상자에 맞추는 작업을 할 때는 종종 광부와 같은 육체 노동 직종으로 바꾸고 싶다는 생각이 들기도 했습니다. 그러나 이제 그런 어려움은 모두 해소되었습니다. 저는 이 SnapLines를 사용해 볼 것을 권장합니다.

이제 위에서 말한 네 가지 측면에 대해서 잠시 살펴보도록 하겠습니다.

간격 조정 및 위치 지정

두 컨트롤 사이의 간격은 중요합니다. 그림 1에는 간단한 사용자 정보 입력 폼이 나와 있습니다. 이 폼에서 위의 두 입력란은 너무 가깝게 붙어있고 그 아래 목록은 너무 멀리 떨어져 있어서 사용되지 않은 공간이 많습니다.

그림 1. 잘못 설계된 폼

그림 2. 올바르게 설계된 폼

그림 2의 경우 대화 상자의 간격이 적절히 조정되어 보다 전문적으로 보입니다. 이 폼은 그림 1의 폼과 동일하지만 SnapLines에서 추천하는 간격을 사용하도록 수정되었습니다. 항상 실제 하단 가장자리가 아닌 입력란의 텍스트 기준선이나 그 옆의 컨트롤과 레이블을 맞출 것을 권장합니다. 원하는 대로 정렬되면 대개 하단 가장자리에서 몇 픽셀 위의 SnapLines 색상이 바뀝니다.

간격 조정에 대한 정확한 규칙은 없으나 가장 좋은 것은 SnapLines를 따르는 것입니다. 적절한 간격을 유지하기 위한 다른 훌륭한 도구로는 컨테이너 도구 상자 그룹 아래의 레이아웃 컨트롤을 들 수 있습니다. TableLayoutPanel은 입력 폼 스타일 대화 상자 생성에 매우 유용합니다.

크기

크기에도 같은 방식이 적용됩니다. 도구 상자에서 폼으로 단추를 끌어올 때 높이와 너비는 완벽한 균형을 이룹니다. 모든 중요한 이유는 배제하고 권장되는 최대 너비는 원래 너비의 두 배입니다. 그렇지 않으면 단추가 두드러져 나와서 팝업 광고와 같이 눈길을 끌게 될 것입니다. 그러면 안 되는데 말이죠!

시작 메뉴의 실행 창 또는 Windows 탐색기 개체의 속성 대화 상자를 살펴보면 단추 크기가 '꼭 맞음'을 알 수 있습니다. 최종 사용자에게 반드시 알리고 싶은 매우 중요한 기능이 있는 경우 큰 단추나 평범하지 않은 화려한 색상을 사용하지 않고도 여러 가지 방법을 사용할 수 있습니다. 이에 대해서는 나중에 설명합니다.

그림 3. 단추 크기 비교

그림 3에는 세 가지 크기의 단추가 나와 있습니다. 첫 번째 단추는 가장 권장되는 크기로 도구 상자에서 끌거나 두 번 클릭하면 기본적으로 생성되는 크기입니다. 텍스트를 추가로 입력하려면 단추를 더 크게 만들어야 합니다. 두 번째 단추는 약간 더 크지만 사용할 수 있는 크기입니다. 다른 컨트롤의 배치를 방해할 정도로 크지는 않기 때문이죠. 그러나 세 번째 단추는 사용하기 어려운 크기입니다. 이 크기의 단추를 사용하면 Windows에서 테마가 적용된 컨트롤을 그릴 때 사용하는 테마 비트맵까지 흐트러진다는 것을 알 수 있습니다. 또한 이 단추 주변에 다른 컨트롤을 맞추기도 매우 어렵습니다.

위에 나온 그림 1의 경우 대화 상자의 크기와 오른쪽의 여백을 감안할 때 두 개의 입력란이 너무 작다는 것을 알 수 있으며 이에 비해 그림 2는 좀 더 적절히 조정된 크기입니다. SnapLines는 크기 조정에도 도움이 됩니다. SnapLines는 특정 상황에서 가장 구체적인 크기 또는 위치를 제안하므로 따르는 것이 좋습니다.

그룹화

거의 모든 응용 프로그램에는 수많은 컨트롤이 있습니다. 적절하고 알아보기 쉽게 그룹화해야만 이러한 컨트롤을 사용하기 쉽게 만들 수 있습니다. 기능에 따른 그룹화 또는 범주별 그룹화를 가장 잘 수행하려면 탭 컨트롤을 사용합니다. 예를 들어 일반적인 비즈니스 응용 프로그램에서는 '계정', '보고서', '직원' 및 '프로젝트'를 탭으로 사용하는 것이 가장 좋습니다. 동일한 최종 결과를 가져오도록 제어하는 형제 그룹화를 가장 훌륭히 수행하려면 그룹 컨트롤을 사용합니다. 이러한 그룹화에 테두리가 있는 패널은 사용하지 않는 것이 좋습니다. 그룹 컨트롤을 사용하면 추가적인 레이블 컨트롤을 사용하지 않아도 됩니다. 특히 하위 컨트롤이 그 자체만으로도 알아보기 쉬운 경우에는 더 그렇습니다.

그룹 컨트롤 내에 그룹 컨트롤을 배치하는 것은 하나의 큰 그룹 컨트롤 안에 2~3개의 컨트롤만 있는 경우가 아니면 권장되지 않습니다. 그룹 컨트롤 안의 다른 그룹 컨트롤 내에 그룹 컨트롤을 배치하는 것은 더더욱 권장되지 않습니다. 이렇게 쓰는 것조차 이상합니다.

사용 편이성

사용 편이성은 훌륭한 사용자 환경에 있어 실제로 중요한 측면입니다. 이해가 쉬운 UX인 경우 설명할 필요가 줄어듭니다. 사용자들이 컨트롤의 기능을 곧바로 알기 때문입니다.

알아보기 쉬운 디자인에서 가장 중요한 것은 색 구분입니다. 가장 좋은 예는 Windows XP 출시 전에 Microsoft에서 발표한 Windows XP Design Guidelines (영문)에 나와 있습니다. Windows XP에서는 테마별 응용 프로그램, 로그오프, 시스템 종료 대화 상자 등에서 탐색과 같은 기능을 위해 모서리가 둥근 새로운 단추를 제공했습니다.

이러한 컨트롤의 색은 해당 단추를 눌렀을 때 나타나는 결과의 심각도에 따라 결정됩니다. 탐색은 '보행' 신호등과 같이 녹색이고 작업 손실이 야기될 수 있는 시스템 종료는 경고 신호와 같이 빨간색이며 로그오프나 최대 절전 모드와 같은 심각도가 덜한 단추는 노란색입니다. 도움말과 같이 사용자의 작업 프로세스에 심각한 영향을 미치지 않는 중립적인 단추는 옅은 파랑색입니다. 스킨이 적용된 UI를 만들 때 이러한 색 구분을 염두에 두어야 합니다.

색으로 콘텐츠를 구분할 수 있는 가장 좋은 예는 Microsoft Office OneNote입니다. 이 응용 프로그램의 탭은 전체 Windows XP 스타일 디자인에 무난하게 어울리도록 하면서도 다양한 색으로 설정할 수 있습니다.

또 하나의 중요한 측면은 응용 프로그램의 텍스트입니다. 최근 소프트웨어에 작성된 명령에서는 표현이 단순화되었습니다. 소프트웨어 내의 텍스트에 대해서는 나중에 설명하도록 하겠지만 사소하면서도 중요한 한 가지 세부 사항에 주목해 주시기 바랍니다. 예를 들어 살펴보겠습니다.

MSN Messenger에는 옵션 대화 상자에 "웹캠 기능 공유"라는 확인란이 있었습니다. 물론 개발자나 해박한 기술 지식이 있는 사람들은 이 기능이 무엇을 의미하는지 압니다. 그러나 초보 사용자는 대화 상대방과 자신의 웹캠을 함께 사용할 수 있는 기능이라 생각할 수 있을 것입니다. 혼동을 주는 설명이었죠. 그래서 최신 버전에서는 "웹캠: 내 웹캠을 통해 다른 사람이 나를 볼 수 있도록 허용"이라는 옵션으로 변경되었습니다. 이 메뉴 옵션은 기술적 지식이 없고 단순한 표현에 익숙한 사람들도 완벽하게 이해할 수 있습니다.

단순한 표현은 이해하기 쉬울 뿐 아니라 나중에 살펴보게 되겠지만 또 다른 이점이 있습니다. 과학적 연구에 따르면 무언가 새로운 것을 이해하려고 할 때 단순한 표현은 의미 파악이 더 쉬운 것으로 나타났습니다. 흔히 인간의 두뇌는 '그것', '~에 대한', '저것'과 같은 단어와 기타 일반적인 단어는 매우 빠르고 쉽게 이해하지만 위의 예에서 볼 수 있듯이 '웹캠' 또는 '다른 사람'과 같은 단어를 이해하는 데는 더 많은 사고 영역을 할당합니다.

메시지 상자 제목, 그룹 상자 캡션 및 기타 비슷한 종류의 텍스트 블록을 사용하면 몇 단어만으로 최종 사용자에게 많은 컨트롤의 기능을 쉽게 전달할 수 있습니다.

사용 편이성은 친숙함에서도 나옵니다. 예를 들어 확인/취소 단추를 함께 배치하는 것은 매우 일반적이므로 우리들의 머리 속에 이 순서대로 각인되어 있어서 만약 어떤 대화 상자에서 확인 다음에 취소가 있지 않고 반대 순서로 취소 다음에 확인이 있는 경우 취소를 누르게 될 수 있습니다. Windows 기반 응용 프로그램과 같이 어떤 작업에 대해 특정 표준을 1년 이상 사용해 온 결과 습관으로 자리잡게 되었습니다. 문서화되어 있지는 않지만 이러한 산업 표준을 따르면 소프트웨어를 사용하기 쉽게 만들 수 있습니다.

다른 예를 살펴보도록 하겠습니다. 초기 Windows Vista 시험판 빌드 중 하나에서는 창의 최소화, 최대화닫기 단추의 순서가 달랐습니다. 이전 버전의 Windows에서는 특히 단일 모니터를 사용하는 경우 화면의 오른쪽 상단 모서리에 커서를 "어림짐작으로 가져가서" 무의식적으로 클릭하는 습관이 생기게 되었습니다. 이렇게 하면 항상 창이 닫히게 되었죠. 그러나 위에서 말한 Windows Vista 빌드에서는 닫기 단추와 창의 가장 오른쪽 가장자리 사이에 8픽셀 정도 되는 여백이 있었기 때문에 오랫동안 자리잡은 "어림짐작으로 하는 클릭"으로는 창이 닫히지 않았습니다. 여분의 공간이 있어 외관상으로 좋아 보이는 것은 물론이며 아마도 이 단추를 누르면 시작되는 화려한 애니메이션에 이러한 공간이 필요할 수도 있었겠지만 창이 닫히지는 않으니 짜증나는 일이었습니다. 습관을 바꾸는 것은 어려운 일이었으니까요. 다행히도 이후 빌드에서는 이 문제가 해결되었습니다. 아마도 저와 같이 어림짐작으로 클릭했던 많은 사람들이 Microsoft에 의견을 보내지 않았을까 싶습니다. 이제 창의 가장자리와 닫기 단추 사이에 공백이 있기는 하지만 그 공백을 클릭해도 창이 닫힙니다. 문제가 해결된 것이죠.

알아보기 쉬운 디자인에서 매우 중요한 점은 '생각해야 하는 영역'이 얼마나 되느냐입니다. 즉, 머리 속에서 무언가를 이해하는 데 걸리는 시간이 어느 정도냐 하는 것이죠. 이 '사고 영역'이 적으면 적을수록 훌륭한 UX라고 할 수 있습니다.

소프트웨어 응용 프로그램 사용 "환경"에 기여하는 사소한 항목들도 있기는 하겠으나 이론만으로도 충분합니다. 심지어 저 조차도 "실용적인" 정보를 원하니까요. 그러므로 이제 이론적인 얘기는 접어 두고 실제로 응용 가능한 팁과 트릭을 사용하여 응용 프로그램을 향상시키는 방법에 대해서 알아보도록 하겠습니다.

보다 효율적이고 편리한 사용자 환경 조성을 위한 20가지 팁

보다 나은 UX를 구축하는 목적은 외관이 훌륭하면서도 간단하고 알아보기 쉬우며 기능이 뛰어난 UI를 얻기 위함입니다. 이제 소프트웨어 응용 프로그램을 사용해 본 경험이 별로 없고 기술적 지식이 그다지 많지 않은 사용자들의 일상 업무에 초점을 두고 살펴보도록 하겠습니다. 아마도 이런 '유형'의 소비자들이 대부분 소프트웨어 응용 프로그램을 사용하겠죠. 아래에 나오는 팁은 보다 효과적인 UI를 만드는 데 도움이 됩니다.

1. 표준 준수

운영 체제 수준, 브랜드 수준 또는 응용 프로그램 수준 등 어떤 수준에서 수립된 것이든 소프트웨어 환경에서 수립된 기준은 매우 중요합니다. 브랜드와 더불어 이러한 표준은 사용자에게는 일종의 신뢰할 만한 방식으로 여겨집니다. 어떤 소프트웨어 응용 프로그램을 사용하여 오랜 시간을 작업할 경우 해당 사용자는 소프트웨어와 점점 친숙해지면서 생산성이 자동으로 향상될 것입니다. 이것은 마치 집 근처의 도로를 운전하는 것과 같습니다. 권유하지는 않지만 아마 이런 경우 눈을 감고도 운전할 수 있을 것입니다.

표준에 대해서 더 설명하기 전에 먼저 이러한 표준이 정확하게 무엇을 의미하는지 알아보도록 하겠습니다. 앞에서 말했듯이 확인/취소의 순서로 단추를 배치하는 것처럼 표준에는 대화 상자의 컨트롤을 특정 방식으로 배치하는 것에서부터 Windows XP 대화 상자의 사용자 인터페이스 창 상단의 둥그런 모서리, 아이콘 스타일, 기타 그래픽 스타일, 응용 프로그램의 대화식 동작 등 모든 것이 포함됩니다.

올바른 표준 집합을 선택하려면 응용 프로그램을 간단히 검사해야 합니다. 새 응용 프로그램을 위한 가장 좋은 표준은 현재 Windows 디자인 지침으로, 당장 사용할 수 있는 최신 표준으로는 Windows XP 디자인 지침을 들 수 있습니다. 응용 프로그램을 디자인하는 중에 곧 다른 운영 체제 버전이 출시될 상황인 경우 이전 버전과의 호환성만 유지된다면 다음 버전용 디자인 지침을 사용하는 것도 무방합니다. 그러면 적어도 최종 사용자에게는 "좀 더 앞서간다"는 느낌을 줄 수 있습니다.

만약 응용 프로그램이 일반적인 응용 프로그램이 아닌 경우 다른 표준 집합을 따르는 것이 좋습니다. 일례로 개발 중인 응용 프로그램이 Microsoft Office OneNote 2003용 응용 프로그램이나 추가 기능을 지원할 경우 Microsoft Office의 UI 스타일과 대화형 작업 표준 및 OneNote 자체의 표준을 따르는 것이 현명합니다. 즉, 시각적, 기능적 면에서 표준 도구 모음이 아닌 Office 스타일 명령 모음을 사용하고 대부분 Office 스타일을 따르는 것을 뜻합니다. 개발 중인 응용 프로그램이 Microsoft Visual Studio .NET 범주에 속할 경우 별도의 표준 집합을 준수해야 합니다. 사실 이러한 추가 기능이나 지원 응용 프로그램을 위해 Microsoft에서는 문서화된 지침을 배포하고 있습니다. 또한 그래픽과 디자인 개념은 종종 보호되는 지적 재산이므로 이러한 디자인을 만들 수 있는 라이선스가 있는지 항상 해당 설명서를 확인해야 합니다.

표준의 세 번째 예는 Tablet PC 환경입니다. 이러한 표준은 운영 체제 지침과 응용 프로그램 지침 사이의 경계를 넘나듭니다. Tablet PC SDK documentation(영문)에는 "응용 프로그램 계획"에 관한 주제와 관련하여 매우 유용한 몇 가지 정보가 수록되어 있습니다. Office 2003 또는 Visual Studio 지침과는 달리 이러한 디자인 권장 사항은 사용자들이 응용 프로그램을 어떻게 사용하는지, 이에 따라 응용 프로그램이 어떻게 작동해야 하는지에 직접적으로 영향을 미칩니다. 예를 들어 응용 프로그램에 고정 창이 있는 경우 설명서에서는 화면 방향이 변경될 경우 감지할 수 있는지 확인하고 필요에 따라 가로, 세로 방향으로 고정 창이 적절히 재구성되도록 하라고 권장합니다. Tablet PC용으로 응용 프로그램을 설계하지 않는다 해도 이러한 지침을 준수하라고 다시 한번 당부 드리고 싶습니다. 개발자인 여러분과 여러분이 개발하는 응용 프로그램은 이러한 지침을 준수함으로 인해 보다 향상될 수 있을 것입니다.

스마트 클라이언트의 출현으로 일반 PC, Tablet PC, 모바일 또는 초소형 모바일 장치, 미디어 센터 PC 등 서로 다른 하드웨어의 경계를 넘어 응용 프로그램이 사용되고 있습니다. 각각의 상황에 맞추어 서로 다른 또는 추가적인 표준 집합을 준수해야 합니다.

응용 프로그램에서 운영 체제 수준 또는 응용 프로그램 수준 표준을 공유할 경우 사용자들은 배우기 쉽고 사용이 편리한 소프트웨어를 통해 편안함을 느낄 수 있으며, 이는 생산성 향상에 직접적으로 이어집니다. 더욱이 사용자들은 프로그램의 사용 방법을 배우기보다는 프로그램을 바로 사용하길 원합니다.

2. 중요 단추에 주의 끌기

때로는 주변에 다른 단추가 4~5개 있는 경우 가장 중요한 단추에 사용자들의 관심을 집중시켜야 하는 경우가 있습니다. 크기, 색상 또는 글꼴 때문에 혼동스럽다면 표준을 위반해도 되기는 합니다. 그러나 물론 권장되지는 않습니다. 대신 간단한 몇 가지 트릭을 사용할 수 있습니다.

그림 4. LinkLabel과 쌍을 이루어 사용하면 단추에 주의가 더 집중됩니다.

첫 번째 트릭은 중요하지 않은 단추를 LinkLable로 변환하는 것입니다. 이렇게 하면 사용자는 이러한 링크가 작업을 수행하게 된다는 것을 알게 되므로 표준 디자인 지침을 위반하지 않고도 먼저 눈에 띄는 단추로 주의를 돌리게 됩니다.

그림 5. 왼쪽에서 오른쪽으로 읽는 습관으로 인해 맨 왼쪽의 단추가 가장 먼저 눈에 띕니다.

두 번째 트릭은 단추를 줄의 가장 처음에 배치하는 것입니다. 즉, 가로로 배치된 경우에는 맨 왼쪽에 세로로 배치된 경우에는 맨 위에 배치합니다. 대상 사용자의 습관에 따라 이러한 배치에 변화가 있을 수 있다는 점을 염두에 두시기 바랍니다. 오른쪽에서 왼쪽으로 읽는 언어로 된 응용 프로그램의 경우 해당 단추를 가장 오른쪽에 두는 것이 좋습니다.

가장 분명하고 권할 만한 옵션은 기본적으로 관심이 집중되도록 설정하라는 것입니다. 예를 들어 삭제 확인 대화 상자에서는 사용자가 실수로 삭제하는 것을 방지하기 위해 아니오 옵션이 강조 표시되어야 합니다.

3. 알아보기 쉽도록 아이콘 제공

"백문이 불여일견"이라는 말이 있습니다. 아이콘, 그 중에서도 특히 XP 및 Office 2003 아이콘과 도구 모음 비트맵은 UI를 파악하고 사용자가 수행해야 하는 작업을 빨리 알아볼 수 있게 해 줍니다.

예를 들어 메시지 상자에서 흔히 볼 수 있는 느낌표 아이콘이 나타나면 이 아이콘 옆의 컨트롤과 관련된 위험 수준을 즉각 알아차릴 수 있습니다. 마찬가지로 응용 프로그램에 컨트롤이 많으면 비록 적절히 배열되어 있다고는 해도 원하는 컨트롤 집합을 찾는 것이 매우 힘들 수 있습니다.

Windows XP 서비스 팩 2에서는 업데이트된 탭이 "자동 업데이트"라는 시스템 속성 제어판 애플릿에 추가되었습니다. 자동으로 업데이트를 다운로드하는 옵션, 업데이트를 다운로드하기는 하지만 사용자가 설치 시기를 결정할 수 있도록 하는 옵션, 업데이트가 있는 경우 사용자에게 알리기는 하지만 다운로드를 시작하지는 않는 옵션 그리고 자동 업데이트를 완벽하게 비활성화하는 옵션 등 4가지 옵션이 있습니다.

초보 PC 사용자인 경우 이러한 업데이트가 무엇을 의미하는지 모르는 것은 물론이며 어떤 옵션을 선택해야 하는지도 모를 수 있습니다. 그렇기 때문에 Microsoft에서는 "안전한" 옵션을 나타내는 가장 권장되는 옵션 옆에는 커다란 확인 표시가 있는 녹색 방패 아이콘을 표시하고 사용자에게 위험을 초래할 수 있는 옵션 옆에는 커다랗게 "x" 표시를 한 빨간색 방패 아이콘을 표시하였습니다. 급박한 상황 특히, 사용자가 너무 많은 설명을 읽을 시간이 없는 경우에 이 아이콘은 매우 유용합니다.

해당 시스템 속성 애플릿의 각 탭에는 서로 다른 작업에 대한 다양한 컨트롤이 있는 그룹 상자가 여러 개 있습니다. 컨트롤 그룹의 작업을 쉽게 나타낼 수 있도록 각 그룹의 옆에는 관련이 있는 그래픽이 표시됩니다. 이 그래픽 코드 유형은 실제 파일이나 주차장의 색 구분선과 유사합니다. 잡지 기사에 독자의 관심을 끌 수 있도록 최소한의 그래픽을 넣는 것과 같은 원칙이 적용됩니다.

올바른 아이콘을 선택하는 것도 중요합니다. Microsoft는 Visual Studio 2005에서 많은 표준 그래픽을 기본으로 제공하므로 이 그래픽을 선택하는 것이 가장 좋습니다. 사용자 지정 아이콘을 만들 경우 위의 표준 준수 섹션에 나와 있는 그래픽에 대한 운영 체제 수준 또는 응용 프로그램 수준의 표준을 준수하는 것이 좋습니다.

Windows XP Design Guidelines (영문)에는 Windows XP 스타일 32비트 아이콘을 만드는 방법에 대한 유용한 지침이 나와 있습니다. Windows Vista 스타일 아이콘에 대한 새로운 지침은 곧 배포될 예정입니다. 자세한 내용은 이 기사 끝 부분에 있는 링크를 참조하십시오.

4. 알아보기 쉽도록 머리글 작성

머리글은 한 문장(필요에 따라 그래픽도 함께 사용할 수 있음)으로 전체 대화 상자를 설명하는 완벽한 방법입니다. 때로는 머리글 내에 탐색 및 명령을 포함할 수도 있습니다. 머리글은 대화 상자가 팝업될 때 가장 먼저 눈에 띄기 때문에 일반적인 설명 레이블보다 더욱 효과적입니다.

Windows Installer 마법사는 아마도 가장 인기 있는 머리글일 것입니다. 맨 오른쪽에 간단한 아이콘이 있고 대화 상자를 설명하는 제목 레이블(예: 설치 폴더 선택) 다음에 대화 상자의 목적을 설명하는 하위 머리글(예: 소프트웨어 파일을 설치할 폴더 선택)로 구성됩니다. 그러나 이러한 원칙은 마법사 이외의 항목에도 적용됩니다.

계정 섹션이 있는 일반적인 업무용 응용 프로그램이 있다고 가정해 봅시다. Windows Vista에서 많이 사용되는 디자인 방식을 따라(그림 6 참조) 머리글 자체(상황에 따라 바닥글)에 필수적인 업무 정보와 관련 명령을 제공할 수 있습니다. 사용자가 "Big Company"에 대한 계정 파일을 열면 그림 7과 같은 머리글이 나타날 것입니다.

그림 6. 상세한 바닥글이 있는 Windows Vista 탐색기

그림 7. Windows Forms 응용 프로그램의 종합적인 머리글

마찬가지로 몇 가지 명령만 있으면 세로 공간이 많이 낭비되는 Windows XP 스타일 작업창을 추가하지 않아도 되며, 이러한 명령을 머리글로 옮기면 번거로움이 많이 사라집니다.

머리글을 설계할 때는 다음과 같은 사항을 염두에 두어야 합니다.

  • 대화 상자의 배경색과 다르도록 배경색을 설정하십시오. 흔히 흰색 머리글을 기본 Windows 내부 컨트롤 표면 색 위에 놓으면 됩니다. 그러나 특수 테마나 사용자 지정 색상으로 인해 머리글이 흐려지지 않도록 하려면 ControlLightControlDark라는 색이 있는 Color.FromKnownColor를 사용하여 LinearGradient를 그리십시오.
  • 가능하면 머리글의 높이를 150픽셀 미만으로 유지하시기 바랍니다. 일반적으로 100 또는 120픽셀이 적당하며, 전체 폼 높이의 1/4을 넘지 않도록 하십시오.
  • 위에 나온 그림 7의 Customer Name과 같은 머리글 정보를 즉석에서 수정할 수 있도록 하려면 동적으로 LinkLabel을 입력란으로 바꾸고 수정이 완료되면 이를 다시 한 번 교체하면 됩니다.
  • 글꼴 크기가 10pt가 넘는 제목 레이블이 있는 경우 Arial이나 Franklin Gothic Medium을 사용하십시오. MS Sans Serif는 너무 들쭉날쭉해서 전문적이지 않게 보입니다. Franklin Gothic Medium은 Windows XP 디자인 지침 설명서에서 권장되는 글꼴입니다. Windows Vista에서 사용되는 응용 프로그램에는 시스템 기본 글꼴인 Segoe UI 글꼴을 사용하십시오.

5. 사용자 지정 메시지 상자 사용

기본 Windows 메시지 상자에서 사용 가능한 옵션은 매우 제한되어 있습니다. 단순한 예/아니오 또는 확인/취소로 답할 수 없는 질문을 해야 할 경우 문제가 복잡해 집니다. 결국 "~하려면 예를 클릭하십시오 또는 ~하려면 아니오를 클릭하십시오"와 같이 설명해야 할 것입니다.

Windows 응용 프로그램은 비전문적인 사용자들이 많이 사용함에 따라 점차 사용이 단순해지고 있습니다. 때로는 작업을 쉽게 수행할 수 있도록 하기 위해 친숙한 설명이 있는 단추나 심지어는 LinkLabel과 같은 추가 컨트롤을 제공하는 것이 보다 간단할 수 있습니다.

.NET Framework에서는 사용자 지정 대화 상자를 쉽게 구현할 수 있습니다. 사용자 지정 대화 상자 폼에 몇 가지 속성만 할당하거나 코드 한 줄만 할당하면 폼이 기본 메시지 상자와 동일하게 작동합니다. 단추를 클릭할 경우 대화 상자의 DialogResult 속성을 DialogResult.Ok 또는 DialogResult.Cancel로 설정하십시오. 상위 폼에서 ShowDialog([OwnerForm]) 메서드를 사용합니다. 그러면 ShowDialog 메서드가 DialogResult 값을 반환합니다.

모든 DialogResult 멤버를 사용할 수 있습니다. 이 동일한 옵션이 기본 MessageBox.Show 메서드에 사용됩니다.

또는 대화 상자의 AcceptButton 속성을 btnOK로 설정하고 CancelButton 속성을 btnCancel로 설정할 수도 있습니다. 그러면 EnterEsc 키가 btnOK 및 btnCancel 단추의 각 Click 이벤트에 자동으로 매핑됩니다.

다음은 사용자 지정 대화 상자를 꾸미는 데 필요한 몇 가지 팁입니다.

  • 복잡한 주제의 경우 적절한 텍스트 레이블 아래 "자세한 정보"라는 LinkLable을 사용하여 로컬 또는 온라인 도움말에 대한 링크를 제공합니다.
  • 예/아니오/취소 단추 대신 단추를 클릭할 경우의 결과를 분명히 나타내는 "파일 저장 후 종료", "저장하지 않고 종료" 및 "종료하지 않음"과 같은 텍스트를 사용합니다. 그러나 가능하면 표준인 예/아니오, 확인/취소 및 기타 표준 단추를 사용하도록 하십시오. 친숙한 단추일수록 작업 효율성이 높아집니다.
  • 왼쪽 또는 대상 문자 환경에 따라 오른쪽에 50픽셀 정도의 여백을 남겨두고 대화 상자를 사용하는 경우를 나타내는 아이콘을 추가합니다. 정보 대화 상자인 경우 표준 메시지 상자에서 사용되는 "i" 아이콘을 사용하고, 보안 대화 상자인 경우 자물쇠 아이콘이나 열쇠 아이콘을 사용할 수 있습니다. Visual Studio 2005에는 몇 가지 우수한 고품질 그래픽이 기본 제공됩니다.
  • 항상 단추 사이를 키보드에서 편리하게 이동할 수 있도록 하십시오. 사용자들은 메시지 상자에서 키보드 단축키를 많이 사용합니다(예: 확인(Ok)은 O, 예(Yes)는 Y, 취소(Cancel)는 C). 사용자 지정 대화 상자에서 단축키를 사용할 수 없으면 사용자들이 불편을 느낄 것입니다.

6. 대체 명령 포함

의욕 저하와 게으름이라는 두 가지 중요 요인으로 인해 대체 입력 방법이 필요하게 되었습니다. 의욕 저하는 컴퓨터 사용자들에게 자주 나타나는 일입니다. 의욕 저하에 빠졌을 때는 작업을 빨리 끝내고 싶어합니다. 스트레스를 받고 있는 사람의 경우 추가로 클릭해야 한다거나 몇 초 간 더 기다려야 한다면 정말로 화가 나겠죠. 어떤 기분인지 아실 겁니다. 우리는 모두 이런 일을 항상 겪고 있으니까요. 게으름으로 인해 사람들은 그 시점에 사용 중인 것이 키보드나 마우스 중 어느 것이든 사용하던 수단으로 작업을 끝내고 싶어합니다. 그러나 이 두 가지 요인 이외에도 대체 입력 방법이 있으면 사용자들은 보다 쉽게 작업을 수행할 수 있게 됩니다.

예를 들어 "추가" 및 "제거"라는 두 개의 단추가 있는 목록 상자의 경우 어느 쪽이든 이러한 단추와 유사한 메뉴 명령이 있는 상황에 맞는 메뉴를 그 목록 상자에 추가해야 합니다. 그러면 사용자에게는 자신들이 가장 적합하다고 생각하는 방식을 선택할 수 있는 기회가 제공됩니다. Windows Vista User Experience Guidelines (영문)에 나와 있듯이 초보 사용자는 상황에 맞는 메뉴를 많이 사용하고 마우스 오른쪽 단추로 클릭하면 항상 이러한 메뉴가 나타날 것이라 예상합니다.

이와 비슷하게 텍스트나 숫자 입력에 시각적 컨트롤이 사용됩니다. 대표적인 예로 슬라이더는 정수 지정에 사용되고 Calendar 컨트롤은 날짜 입력에 사용되는 것을 들 수 있습니다. 때로는 키보드를 사용하여 입력하는 것이 가장 편안합니다. 슬라이더에 연결된 숫자 Up-Down 컨트롤을 추가하거나 Calendar 컨트롤 대신 DateTimePicker를 사용할 경우 사용자는 그 차이를 느낄 수 있습니다.

7. 중요 작업을 처리하는 방법

사용자들은 항상 혼란스러워 합니다. 그렇기 때문에 기술 지원 엔지니어들이 생계를 유지할 수 있습니다. 이 친절한 사람들의 수입을 갉아먹지 않으면서도 개발자들은 몇 가지 방법을 통해 사용자들의 혼란을 덜어주거나 최소한 치명적 오류가 발생했을 때 스스로 복구할 수 있도록 도움을 줄 수 있습니다.

치명적인 복구 불가능한 기능을 수행할 때는 일반적으로 해당 작업을 정말로 수행할 것인지 확인하는 메시지 상자 팝업을 표시하는 것이 좋습니다. 이에 대해서 좀 더 자세히 살펴보도록 하겠습니다. 그림 8에 있는 사용자 지정 메시지 상자는 어디서나 볼 수 있는 것이지만 진행률 표시줄이 있는 타이머가 있다는 추가적인 이점이 있습니다.

그림 8. 기본적으로 가장 안전한 옵션이 선택되어 있는 중요 작업 대화 상자

몇 가지 경우에 따라 변형 메시지 상자를 사용해 볼 수 있습니다. 원자력 발전소의 과부하에서 파일의 영구 삭제에 이르기까지 수행할 작업이 매우 중요한 경우 타이머가 만료된 후의 기본 작업은 취소로 지정합니다. 대화 상자는 사라지면 안 되며 텍스트 레이블에 작업이 취소되었음이 표시됩니다. 사용자는 명령이나 취소를 확인하도록 선택할 수 있습니다.

중요 작업을 수행하는 단추는 항상 분명히 표시하도록 하고 해당 작업을 정확하게 설명하는 분명한 텍스트를 사용해야 합니다. 예를 들어 파일을 삭제하는 작업의 경우 "리포지토리에서 파일 제거"라고 쓰지 말고 "리포지토리에서 파일 삭제"라고 써야 합니다. 파일 목록을 사용하여 작업할 때 삭제 메뉴 명령이 파일 목록에서만 파일을 제거하는 것이 아니라 하드 디스크 자체에서 선택된 파일을 삭제할 경우 이 작업이 심각한 결과를 초래할 수 있다는 점을 적절히 강조하고 이 작업을 수행할 경우 영구적으로 파일이 삭제된다는 점을 분명히 알려야 합니다.

누군가가 "당신은 당신의 최악의 작품만큼의 값어치 밖에 없습니다"라고 말했다고 가정해 봅시다. 이 내용은 소프트웨어 응용 프로그램에도 적용됩니다. 여러분이 개발한 응용 프로그램 사용 시 경험한 단 한 번의 좋지 않은 기억이 그 사용자에게는 상당히 부정적인 인상을 줄 수 있습니다. 이러한 일이 발생하지 않도록 여러분이 취할 수 있는 조치는 응용 프로그램에 오류가 발생할 경우 점차적으로 여파를 줄이는 것입니다. 데이터 복구를 추가하거나 사용자가 해당 데이터의 사본을 저장할 수 있도록 하면 더 유리한 요인이 됩니다. 응용 프로그램에 오류가 발생할 경우 사용자에게 적절히 알려야 합니다. JIT-디버거 또는 중대한 오류 대화 상자는 그다지 좋은 방법이 아닙니다. 오류를 해결하는 방법에 대해 설명하는 것은 이 기사에서 다루는 범위를 벗어나기는 하지만 사용자에게 사과하고 상황에 대해 정확히 알리는 대화 상자를 표시하거나 자세한 정보를 볼 수 있는 링크 또는 이 오류를 복구할 수 있는 방법이 수록된 링크를 제공하면 사용자에게는 매우 큰 도움이 될 것입니다.

이보다 한 발 더 나아가려면 제가 가장 좋아하는 그래픽 디자인 응용 프로그램 중 하나에서 제공하는 기능을 제공하면 됩니다. 이 응용 프로그램은 오류가 발생할 경우 작업 중인 파일의 사본을 저장할 수 있도록 해 주는 복구 대화 상자를 표시한 다음, 물론 선택적 개인 정보이지만 오류에 대한 정보를 입력하여 개발자에게 보낼 수 있도록 해 주는 피드백 대화 상자도 표시합니다.

8. 라디오 단추 또는 콤보 상자

언뜻 보면 많은 항목 중 하나를 선택하도록 하는 방법은 그다지 어렵거나 중요해 보이지 않으나 시간에 민감한 작업에 사용되는 응용 프로그램인 경우에는 중요할 수 있습니다.

실제 예를 하나 살펴보도록 하겠습니다. Microsoft는 최근 그래픽 응용 프로그램인 Expression Graphics Designer(예전 코드명은 "Acrylic")의 시험판 버전을 출시했습니다. 저는 이 응용 프로그램에서 그래픽 개체 약 20개에 특정 속성을 각각 할당해야 했습니다. 정말로 지루한 과정이었죠. 이 작업을 위해서는 개체를 선택하고 설정 창을 표시하는 단추를 클릭한 다음, 옵션을 설정해야 했습니다. 그림 9에 나와 있듯이 한 옵션에서는 콤보 상자에서 두 가지 선택 항목 중 하나를 선택해야 합니다.

그림 9. Microsoft Expression Graphics Designer, Edge Glow 창

콤보 상자 목록을 드롭다운해서 단지 두 개만 있는 선택 항목 중 두 번째 항목을 선택해야 할 경우 정말 번거로울 수 있습니다. 우리가 일반적으로 인식하지 못하는 것은 드롭다운 목록이 나타나는 데 걸리는 시간입니다. 이는 시간 낭비이며 답답한 상황일 수 있습니다. 두 개의 라디오 단추가 있는 그룹 상자를 배치하면 이 문제를 간단히 해결할 수 있습니다. 특히 가용 공간이 많은 경우에 유용합니다. CorelDRAW, Microsoft Access 등의 응용 프로그램에서도 이와 비슷한 문제에 봉착했습니다.

드롭다운 애니메이션 때문에 시간이 낭비될 뿐 아니라 "생각해야 하는 영역"도 허비됩니다. "항상 보이는" 라디오 단추가 있으면 커서로 클릭할 위치를 잠재 의식적으로 알게 됩니다. 콤보 상자가 있는 경우에는 목록이 표시된 '이후'에만 처리됩니다. 이것은 별로 중요한 내용이 아닌 것처럼 보일 수도 있으나 사실상 매우 중요한 문제입니다.

때로는 선택 항목이 4개 이하인 경우에는 라디오 단추를 사용하는 것이 더 좋을 수 있습니다.

9. 사용자를 방해하지 마십시오

머리에 총구를 겨누는 것까지는 아니지만 이는 개발자가 사용자에게 행할 수 있는 가장 파괴적인 일입니다. 여러분의 응용 프로그램이 다른 응용 프로그램을 사용하고 있을 때 메시지 상자를 띄우거나 작업 표시줄을 깜빡이게 해서 불필요하게 방해가 될 경우 그 사용자로부터는 감점을 받게 됩니다.

물론 작업 표시줄의 깜빡임은 유용할 수 있으나 응용 프로그램의 프로세스를 원활하게 계속하기 위해서는 사용자의 입력이 필요한 경우나 사용자에게 전달할 중요한 내용이 있는 경우에만 사용해야 합니다. 사용자가 작업 표시줄을 자동 숨기기로 유지할 경우 작업 표시줄 단추가 깜박이면 작업 표시줄이 가장 위에 나타나서 사용자가 다시 깜빡이는 단추를 클릭할 때까지 숨겨지지 않으므로 상태 표시줄이나 다른 하단에 고정된 컨트롤에 액세스하는 데 방해가 될 수 있습니다.

그림 10. 그래픽과 컨트롤이 여러 개 있는 사용자 지정 팝업 알림 창

MSN Messenger와 같은 인스턴트 메시지 클라이언트에 의해 유명해진 "팝업 알림" 창(그림 10 참조)은 성가시거나 사용자의 작업 흐름을 방해하지 않고도 사용자에게 무언가를 알릴 때 훌륭한 솔루션입니다. 팝업 알림 창을 만드는 방법에 대해 Bill Wagner가 기고한 훌륭한 기사!href(http://msdn.microsoft.com/msdnmag/issues/05/09/WindowsForms/default.aspx)를 읽어보시기 바랍니다. 다른 응용 프로그램의 팝업 알림을 방해하지 않는 것이 좋으며 이것이 매너이기도 합니다. 이러한 창이 나타나서 가로막으면 성가실 뿐 아니라 효율성도 떨어집니다. 한 가지 해결책은 팝업 알림 충돌을 피할 수 있도록 운영 체제에서 제공하는 ToastSemaphore Mutex!href(/library/en-us/WinMessenger/winmessenger/overview/toast.asp)를 사용하는 것입니다.

때로는 팝업 알림별로 여러 항목을 표시해야 할 수 있습니다. 3개 이상의 팝업 알림을 사용하는 것은 권장되지 않습니다. 대신 한 팝업 알림이 사라진 다음에 다른 팝업 알림을 띄우는 것을 반복하는 것이 좋습니다. Microsoft Outlook에서 사용자에게 수신 전자 메일을 알릴 때 이와 비슷한 방법을 사용합니다.

10. 진행 상태 알리기

종종 사용자가 기다려야 하는 작업이 있습니다. 물론 이렇게 기다리는 것은 사용자들이 싫어하는 일 중에 하나입니다. 그러나 최악의 상황은 진행 상태를 모르는 상태에서 기다려야 할 경우입니다. 때로는 응용 프로그램을 웹 서비스나 원격 컴퓨터에 연결해야 할 수도 있고 어떤 이유에서건 대규모의 데이터 처리가 필요한 경우도 있습니다. 이때 사용자는 응용 프로그램에서 어떤 일이 일어나고 있는지를 알아야 합니다. 막연하게라도 말이죠. 상황에 따라 이렇게 사용자에게 작업 상황을 알리는 방식은 여러 가지가 있습니다.

웹 서비스와 같이 멀리 떨어진 개체나 네트워크 또는 인터넷 서버에 있는 항목에 연결해야 할 경우 간단한 진행률 대화 상자(그림 11 참조) 또는 상태 표시줄에서 움직이는 진행률 표시줄을 보여주는 것이 좋습니다. 이때 표시되는 레이블은 현재 진행 상태를 설명해야 합니다. 예를 들어 웹 서비스에 연결하여 어떤 데이터를 처리할 경우 "웹 서비스에 연결하고 있습니다... " 또는 "잠시만 기다려 주십시오. 처리 중입니다... "와 같은 메시지를 표시해야 합니다. 이 프로세스가 동기식으로 이루어질 경우 프로세스가 완료될 때까지 사용자들이 액세스할 수 있는 모든 컨트롤을 비활성화하거나 진행률을 모달 대화 상자에 표시하는 것이 좋습니다.

그림 11. 웹 서비스 연결 상태를 보여 주는 간단한 진행률 대화 상자

진행률 표시줄을 사용 중이고 처리 시간을 알 수 없거나 최대값이 없는 경우 진행률 표시줄 스타일을 움직이는 텍스트 모드로 설정하는 것이 좋습니다.

점점 많이 사용되고 있는 다른 방법으로는 진행률을 표시하는 고정 '팝업 알림' 창을 들 수 있습니다. Microsoft AntiSpyware 다운로더/업데이터 또는 Norton AntiVirus 전자 메일 검색 팝업 알림은 이러한 좋은 예라고 할 수 있습니다. 물론 팝업 알림은 비동기 프로세스에만 사용해야 합니다. 그렇지 않으면 사용자가 당황할 수 있습니다. 이러한 창은 업데이트를 다운로드하거나 예약된 작업을 수행하는 등 백그라운드 처리에 사용하는 것이 가장 좋으며 "항상 위"로 설정하면 안 됩니다.

11. 마법사로 복잡한 단계를 간단히 수행

한 폼에 컨트롤이 너무 많은 경우 일반적인 사용자는 매우 당황할 것이라고 가정해야 합니다. 중요한 컨트롤이 많이 있는 경우에는 그룹화, 크기 조정 또는 간격 지정이 도움이 되지 않을 수도 있습니다.

이러한 경우에 마법사는 가장 좋은 해결책입니다. 가능한 경우 컨트롤을 작업 또는 범주별로 나누고 이를 별도의 단계로 구분할 수 있습니다. 그러면 사용자의 주의를 흐트러트리지 않고 작업을 정상적으로 진행할 수 있습니다. 도움말 단추로 해당 단계별 또는 작업별 도움말을 제공할 수 있습니다. MSDN Library에서 마법사 만들기 지침을 볼 수 있습니다.

마법사는 응용 프로그램의 초기 구성을 설정하는 데 도움이 되는 좋은 방법이기도 합니다. 많은 응용 프로그램은 이러한 마법사를 사용하여 설치가 완료된 후 또는 처음 사용 시에 개별화된 구성을 설정합니다. 이러한 초기 마법사는 가능한 한 옵션으로 제공해야 합니다. 사용자가 언제든 마법사를 취소할 경우 지정되지 않은 설정은 기본값으로 지정됩니다. 마법사에 그래픽적 요소를 첨가할 수 있다면(멋진 그래픽 사용 섹션 참조) 구성 작업이 훨씬 더 쉬워질 것입니다.

12. 텍스트의 어조를 정확히 전달

최근 발표된 Microsoft Windows Vista User Experience Guidelines (영문)에서는 "텍스트 어조"에 대해서 매우 중요한 점을 시사했습니다. 텍스트 어조란 응용 프로그램에서 텍스트가 주는 인상 및 느낌을 말하며, 간단한 도구 설명에서 지침 레이블 컨트롤에 이르기까지 모든 내용이 여기에 해당됩니다.

앞 부분에서 MSN Messenger의 웹캠 옵션의 텍스트를 변경하는 예에 대해서 설명했습니다. 이를 적절한 텍스트 어조라고 합니다. 비전문가 또는 초보 사용자를 대상으로 할 때는 메시지를 전달하는 것이 다른 양상으로 흐를 수 있습니다.

자동 압축 풀기 응용 프로그램에서 입력란 위에 "대상 경로"라고 쓰면 기술적 지식이 있는 사용자는 "C:\Temp\MyPath"와 같은 경로를 입력해야 한다는 것을 알겠지만 초보 사용자는 당황해서 설명서를 참조하거나 기술 지원팀에 문의하거나 최악의 경우에는 아마 여기서 포기하고 말 것입니다. 이런 경우 훌륭한 대안은 "이러한 파일을 저장할 폴더를 선택하십시오."와 같이 사용자가 취하길 원하는 작업을 지정하는 것입니다. 또는 이 입력란 옆의 "찾아보기... " 단추의 이름을 "폴더 선택..."으로 변경할 수도 있습니다.

사용자가 무엇을 하길 원하는지 명확하게 설명하면 도움말 파일을 제공할 필요성도 줄어듭니다. 최소한 도움말 파일에 포함시켜야 하는 세부 정보는 줄일 수 있을 것입니다.

Windows Vista User Experience Guidelines에서 제공하는 매우 훌륭한 제안은 모든 소프트웨어에 적용됩니다. 이 제안에 따르면 개발자는 텍스트를 대화식으로 유지해야 합니다. 이 지침에서는 이를 "직접 대면해서 말하지 못할 내용은 피하라"는 것으로 정의합니다.

다음은 텍스트 작성에 대한 몇 가지 팁입니다.

  • 사용자를 지칭할 때 3인칭을 사용하지 않도록 합니다. "사용자" 대신 "여러분"을 사용해야 합니다.
  • 가능한 한 "이름:" 또는 "전자 메일:" 대신 "내 이름:" 또는 "내 전자 메일 주소:"를 분별해서 사용합니다.
  • 옵션을 여러 개 제공할 때는 사용자의 관점에서 텍스트를 작성합니다. 예를 들어 "이 네트워크에서 [Username]에게 허용할 사용 권한 선택"이라는 레이블 아래에 "허용" 및 "거부"라는 라디오 단추가 있는 경우 이 라디오 단추의 텍스트를 "[Username] 허용" 및 "[Username] 허용 안 함"으로 바꾸어야 합니다.
  • 링크로 사용될 경우에만 텍스트에 밑줄을 긋습니다. 밑줄이 있는 텍스트가 링크가 아니면 사용자에게 혼동을 줄 수 있습니다.
  • 굵은 글씨로 된 레이블로 중요 정보에 주의를 집중시킵니다. 그러나 굵은 글씨는 주의해서 사용해야 합니다. 굵은 글씨로 된 텍스트가 너무 많으면 혼란스럽고 전체적인 폼의 효과가 감소됩니다.
  • 확인란의 텍스트를 작성할 때는 확인란을 선택하거나 선택하지 않았을 때 또는 선택을 취소했을 때 어떻게 되는지 알기 쉽도록 작성해야 합니다. 확인란을 선택할 경우의 叿䉍/᠀젇㠁㠀︂.�პɀĀ＀�ÿ阀䁉需 "귀사의 협력업체로부터 유용한 정보를 수신하지 않음" 대신에 "귀사의 협력업체로부터 유용한 정보 수신"이라고 확인란을 작성하십시오. 많은 마케팅 업계 종사자들은 이 예가 적절치 않다고 목소리를 높일 것이라 생각되지만 여러분은 제가 무엇을 의미하고자 하는지 아실 것입니다.
  • 활성화/비활성화를 제어하는 단추 모양의 컨트롤이 있는 경우(대개 명령 단추가 표시되는 라디오 단추) 레이블을 적절하게 표시해야 합니다. 프로세스가 활성화되어 있으면 "활성화", "비활성화"라 하지 말고 "활성화됨"으로 표시합니다. 활성화됨이라고 작성하면 현재 상태를 나타냅니다. 단추가 클릭된 상태인 경우(활성화됨)에 "활성화"라고 표시되면 혼동할 수 있으며 이로 인해 문제가 될 수 있습니다. "활성화"라고 되어 있으면 사용자가 해당 프로세스가 활성 상태가 아닌 것으로 생각하고 클릭할 수 있기 때문입니다.

13. 때로는 ListView가 더 효율적

우리는 종종 선택 작업을 위해 데이터 표나 목록 상자 또는 콤보 상자를 사용하지만 Windows XP 및 이후 버전의 Windows에서는 ListView를 사용하면 보다 다양한 옵션을 제공할 수 있습니다.

ListView 컨트롤의 장점:

  • 아이콘과 비트맵으로 항목을 빠르게 인식할 수 있습니다.
  • 자세히 또는 바둑판식 보기로 추가 정보를 표시합니다.
  • Visual Studio 2005에는 추가 분류를 위한 그룹도 제공됩니다. 그룹은 모든 보기에 걸쳐 있으며 유연합니다. 그룹은 TreeView와 같이 부모 노드보다 자식 노드가 많은 계층 보기를 평면화하는 데도 사용할 수 있습니다. 이러한 좋은 예는 Windows XP의 네트워크 연결 대화 상자를 "그룹별로 표시"하여 나타내고 보기를 자세히로 설정한 상태입니다.
  • ListView 컨트롤을 사용자 지정하려면 OwnerDraw 속성을 설정하고 DrawItemDrawSubItem 이벤트를 사용하여 수동으로 구성합니다.
  • ListView 항목의 빠른 내부 수정을 지원합니다.
  • 수동 재배열을 손쉽게 지원합니다.
  • 사용자들이 가장 편안한 보기(큰 아이콘, 작은 아이콘, 목록 등)를 선택할 수 있도록 합니다.

14. 이동 경로(Breadcrumb) 컨트롤과 세로 막대로 간단한 탐색 지원

"하위 탐색"은 복잡한 UI에 있어 가장 중요합니다. 때때로 복잡한 UI를 사용해야만 하는 경우도 있습니다. 이런 상황에서 가장 좋은 방법은 가능한 사용자가 쉽게 사용할 수 있도록 지원하는 것입니다. 링크 레이블로 구성된 세로 막대나 계층별 탐색을 위한 TreeView에서는 현재 대화 상자의 작업과 동일한 수준의 탐색이 가능합니다. 이러한 보기에서는 사용자가 자신의 위치를 알면서 프로세스의 단계 간에 쉽게 이동할 수 있습니다.

TreeView에서 계층별 탐색을 하거나 다른 복잡한 탐색을 수행할 경우 이동 경로 컨트롤을 사용하는 것이 유용합니다. Visual Studio에는 아직까지 기본 제공 컨트롤이 없으나 사용자 지정 컨트롤을 만드는 방법에 대해 MSDN에 Duncan MacKenzie가 기고한 훌륭한 기사 (영문)가 있으므로 참조하시기 바랍니다. 이동 경로 컨트롤은 계층과 대비하여 현재 위치를 쉽게 파악할 수 있도록 해 줍니다.

이동 경로 탐색은 폼에 머리글이 있는 경우 이 머리글에 쉽게 병합될 수 있습니다. 앞에서 설명한 머리글에 관한 섹션을 참조하십시오. 그림 7은 머리글의 이동 경로 탐색 모음을 보여 줍니다.

15. 멋진 그래픽 사용

누구나 그래픽이 훌륭한 응용 프로그램을 좋아합니다. 아니 모두는 아니라도 대다수의 사용자가 그렇습니다. 당연히 모든 응용 프로그램의 UI 그래픽을 훌륭하게 만들어야 하는 것은 아니지만 그래픽이 우수하면 좋은 인상을 주고 즐겁게 작업할 수 있습니다. 물론 그래픽이 효율성을 저해해서는 안 되지만 적절히 사용할 경우 효율성이 향상됩니다.

그래픽이 많을 필요는 없으며 반드시 번거로운 작업이 필요한 것은 아닙니다. 전문적으로 설계된 화려한 시작 화면이나 앞에서 말한 것과 같은 머리글은 트릭에 불과합니다. 예산이 허용되는 한도 내에서 도구 모음, 마법사 등에 훌륭한 디자인의 그래픽을 사용할 수 있습니다. 그래픽을 넣으면 응용 프로그램이 외관상 훌륭해 보이며 보다 전문적으로 보입니다. 미묘한 효과이기는 하나 전문적인 외관을 갖추면 자신감과 안정감이 묻어납니다. 일반 판매용 응용 프로그램을 제작하는 상대적으로 규모가 작은 회사인 경우에는 이 점을 중요하게 고려해 봐야 합니다.

항상 전문적으로 설계된 그래픽을 사용하도록 합니다. 로열티가 없는 그래픽은 쉽게 사용할 수 있을 뿐만 아니라 가격도 저렴합니다. 디자이너를 고용할 수도 있습니다. 그러나 그래픽에 소질이 없다면 자체적으로 시도하지 마십시오. 전문적으로 설계된 그래픽을 얻거나 사용할 수 없는 경우 아예 사용하지 않는 편이 낫습니다.

작은 그래픽의 경우 언제나 Visual Studio 2005에서 기본 제공되는 아이콘과 비트맵을 사용할 수 있습니다. 이전 버전에서 기본 제공되는 그래픽은 권장되지 않습니다.

16. 가급적 크기 조정이 가능한 폼 제공

크기 조정이 가능한 창은 해상도와 상관없는 창과 어느 정도 비슷합니다. 해상도와 상관없는 창은 96DPI 화면을 사용하든 300DPI 화면을 사용하든 똑같아 보입니다. 응용 프로그램 UI의 해상도 여부와는 관계없이 크기를 조정할 수 있으면 좋습니다. 물론 많은 경우에 해당되는 내용은 아니지만 일반적으로 적용되는 좋은 규칙입니다.

창에 어떤 종류든 목록이 있는 경우 그 중에서도 특히 ListView는 더욱 중요합니다. 크기 조정을 통해 사용자는 동시에 더 많은 데이터를 볼 수 있습니다.

예를 들어 크기가 큰 컬렉션에서 이미지를 선택해야 하는 응용 프로그램이 있다고 가정해 봅시다. 이 열린 대화 상자에서는 미리 보기를 선택할 수 있으나 대화 상자의 크기가 고정되어 있으면 미리 보기 목록에 미리 보기가 한 번에 4개만 표시됩니다. 컬렉션에 이미지가 100개 있는 경우 이미지를 스크롤하는 반복되는 작업은 매우 지루하고 효율성을 떨어트릴 수 있습니다. 대화 상자의 크기가 조정 가능할 경우 사용자는 가능한 보기 편할 만큼, 아니면 화면에서 허용되는 만큼만이라도 대화 상자를 크게 키우고 작업을 빠르게 마칠 수 있습니다. 자세한 ListView나 DataGrid와 같이 목록에 가로 스크롤이 있는 경우 더욱 지루한 작업이 됩니다. 이러한 상황에서 창의 크기를 조정할 수 있는 기능은 매우 유용합니다.

17. 세로 막대/작업창으로 보다 다양한 기능 제공

앞에서 설명한 머리글과 마찬가지로 세로 막대와 작업창은 추가 기능과 유틸리티 명령을 제공할 수 있는 훌륭한 방법입니다. 예를 들어 Microsoft Office Word 2003의 작업창은 매우 편리하고 액세스가 용이하며 다른 작업에 방해가 되지 않습니다. 온라인 리소스에 연결하면 비동기식으로 작동하므로 사용자는 멀티 태스킹을 수행할 수도 있습니다.

맨 위에 제목 표시줄이 될 그래픽을 정면으로 넣는 옵션을 사용하면 고정 패널을 만드는 것만큼 쉽게 작업창이나 세로 막대를 만들 수 있습니다. 색상이 있는 레이블 컨트롤을 사용할 수도 있습니다. 작업창은 다양하게 활용할 수 있습니다.

추가 기능이 있고 방해하지 않는 방법으로 사용자에게 제공하려는 경우 작업창만큼 좋은 장소는 없습니다. 작업창을 "자동 숨기기"로 설정하거나 Visual Studio 도구 창과 같이 축소할 수도 있습니다. 간단하면서도 종합적인 작업창의 예는 Windows XP와 함께 제공되는 Microsoft Windows Movie Maker의 작업 세로 막대입니다.

18. 알림 옵션 제공

앞에서 사용자 지정 메시지 상자를 만드는 방법을 살펴봤습니다. 응용 프로그램의 메시지 상자가 사용자에게 종종 표시될 경우 앞으로 이 대화 상자가 표시되지 않도록 즉, 비활성화하도록 선택할 수 있는 확인란을 추가하면 세심한 배려가 될 수 있습니다. 이러한 옵션은 특히 보다 분명한 메시지에 유용합니다.

이에 대한 친숙한 예로는 Visual Studio의 찾기 대화 상자를 들 수 있습니다. 텍스트를 검색하거나 바꿀 때 Visual Studio에는 결과를 보여 주는 메시지가 나타납니다. 그러나 이 메시지 상자를 비활성화할 수 있는 옵션도 제공됩니다. 검색할 때마다 Enter 키를 누르거나 확인을 클릭해야 한다면 매우 번거로울 수 있습니다.

Visual Studio의 또 다른 훌륭한 점은 대화 상자를 비활성화하더라도 상태 표시줄에 작업 결과가 표시된다는 점입니다.

19. 도구 설명 제공

때로는 도구 설명이 있으면 많은 시간을 절약할 수 있습니다. 단추, 확인란 및 기타 컨트롤만으로는 확실하지 않아서 사용자가 어떻게 해야 할지 모르는 경우가 있습니다. 도구 설명은 상황에 맞는 도움말을 한 줄로 제공할 수 있는 가장 좋은 형태입니다. 도구 설명이 제공되면 사용자는 도움말 파일에서 항목을 검색하거나 다른 창을 열지 않고도 무엇을 해야 할지 빠르게 결정할 수 있습니다.

개발자들은 종종 응용 프로그램에서 도구 설명을 생략하기도 합니다. 모든 모호한 컨트롤 또는 가능한 경우 모든 컨트롤에 도구 설명을 추가하도록 하십시오. 옆에 나타나는 레이블의 텍스트나 컨트롤 자체에 표시된 텍스트를 반복해서 넣지 말고 해당 컨트롤에 대한 추가 정보를 제공하도록 합니다. 이 텍스트는 몇 단어만으로 컨트롤의 기능을 설명할 수 있어야 합니다.

20. 사소한 부분까지 배려

사소한 부분까지 신경을 쓰는 것이 다소 힘들게 느껴질 수 있으나 이렇게 사소한 부분을 무시하면 여러분에 대한 인상에 영향을 미칠 수 있습니다 저는 예전에 소프트웨어 업계의 저명한 개발자가 만든 응용 프로그램을 사용한 적이 있었습니다. 폼의 테두리 스타일은 조정 가능하도록 설정되어 있었으나 폼 오른쪽의 컨트롤은 고정되어 있지 않았습니다. 이 때문에 업계에서 명성이 있는 개발자가 만든 응용 프로그램이었음에도 그다지 전문적인 프로그램이라는 느낌을 받지 못했습니다.

이러한 "사소한 부분"은 전체적인 인상을 결정하는 중요한 요소입니다. 응용 프로그램의 UI와 UX는 사용자들이 여러분의 응용 프로그램을 판단하는 기준이 됩니다. 최소한 처음에는 말이죠. UI에서 명백한 버그를 발견할 경우 여러분의 응용 프로그램의 기능이나 효율성이 떨어진다고 생각할 수 있습니다. "표지로 책을 판단하지 말라"는 오래된 명언은 소프트웨어 응용 프로그램에는 해당되지 않습니다. 이 경우에는 책에도 해당되지 않습니다.

결론

지금까지 휴먼 사용자 환경을 만들기 위한 팁을 살펴봤습니다. 사용자 환경이 점차 단순하고 효과적이며 재미있고 보다 사용이 편리하게 되면서 사용자 환경을 구축하는 것도 점차 복잡해지고 있습니다. 그러나 어느 정도의 통찰력과 훌륭한 계획이 뒷받침된다면 훌륭한 사용자 환경을 만들 수 있을 것입니다.

완벽한 사용자 환경을 만들기 위한 가장 좋은 방법은 특수 테스트 그룹을 활용하든 자체적으로 하든 UI를 대상으로 유용성 테스트를 실행하는 것입니다. 응용 프로그램을 출시하기 전에 사용자 환경을 테스트하는 데 더 많은 시간을 들이면 들일수록 좋습니다. 이러한 테스트를 통해 추후 발생할 수 있는 많은 문제를 사전에 해결할 수 있습니다.

참조 및 자료

훌륭한 사용자 환경 설계를 위한 기타 다양한 측면에 대해서 알아보려면 아래 나온 자료를 읽어 보는 것이 좋습니다.

  • The Human Factor (영문) 약간 오래되기는 했으나 Scott Berkun이 MSDN에 기고한 이 컬럼은 소프트웨어 및 웹 디자인에 대해 매우 통찰력 있게 접근합니다.
  • Windows Vista User Experience Guidelines (영문) 준비 단계에 있는 경우라도 이 지침을 참조하면 Windows Vista는 물론 일반적인 응용 프로그램을 훌륭하게 설계하는 데 도움이 됩니다.
  • Windows XP Design Guidelines (영문) Windows Vista가 출시될 때까지는 일반적으로 이 지침을 따르는 것이 가장 좋습니다.
  • Tablet PC Documentation (영문) 이 문서 집합에는 훌륭한 Tablet PC 호환 문서를 계획하는 데 필요한 모든 내용이 수록되어 있습니다.

또한 사용자 인터페이스 디자인 및 사용자 환경 디자인에 대한 MSDN Library의 기사도 계속해서 확인하시기 바랍니다.


Dax Pandhi는 소프트웨어 및 기술 그래픽을 전문적으로 취급하며 수상 경력이 있는 기술 스튜디오인 Nukeation Studios (영문)의 주요 개발 책임자입니다. Pandhi는 시각적 기능이 강화된 Windows 및 웹 응용 프로그램뿐 아니라 Windows 프레젠테이션 파운데이션에 기반한 응용 프로그램을 개발하는 데 주력하고 있습니다. Pandhi에게 문의 사항이 있는 경우 그의 블로그 (영문)를 통해 연락할 수 있습니다.

60, Tip, xp

1. 여러 파일 이름을 한꺼번에 바꾸자
윈도우즈 XP는 여러 개의 파일 이름을 한꺼번에 바꾸는 재주가 있다. 파일 형식이 서로 달라도 같은 이름을 붙일 수 있다.
이름을 바꿀 파일을 모두 고르고 마우스 오른쪽 버튼을 누른 다음 ‘이름 바꾸기’를 고른다.
윈 도우즈 XP에서 여러 개의 파일 이름을 바꿀 때는 첫 번째 파일에 이름만 쓴다. 예를 들어 ‘PC사랑’이라고 하면 첫 번째 파일은 ‘PC사랑’이 되고 나머지 파일들은 ‘PC사랑 (1)’ ‘PC사랑 (2)’ 등으로 바뀐다. 만약 첫 번째 파일 이름을 ‘PC사랑 (10)’이라고 하면 그 다음부터는 ‘PC사랑 (11)’ ‘PC사랑 (12)’이 된다.


새 이름을 쓰고 엔터 키를 누른 다음 이름을 바꾼 파일 다음에 있는 것들은 새 이름 뒤에 1부터 숫자가 붙는다.

2. 갑자기 재 부팅 되는 윈도우즈 XP 때려잡기
윈 도우즈 XP는 너무 민감한(?) 나머지 프로그램에 조그만 오류가 생기면 저절로 재 부팅 된다. 물론 그 오류가 심각할 때도 있지만 별 문제가 되지 않는 데도 PC를 재 부팅해서 이용자를 귀찮게 한다. 프로그램에 오류가 있어도 시스템이 재 부팅 되지 않게 해보자.
바탕화면의 ‘내 컴퓨터’ 아이콘을 마우스 오른쪽 버튼으로 누르고 ‘속성’을 고른 다음 ‘시스템 등록정보’ 창의 ‘고급’ 탭에서 ‘시작 및 복구’ 칸의 ‘설정’ 버튼을 누른다.
‘시스템 오류’ 칸에 있는 ‘자동으로 다시 시작’의 체크 표시를 없애고 ‘확인’ 버튼을 누른다.

이제 윈도우즈 XP가 제멋대로 꺼지지 않는다.

3. 오류 보고 창 나타나지 않게 하기
윈도우즈 XP부터는 프로그램들이 에러를 일으켰을 때 그에 대한 자세한 사항을 마이크로소프트사로 보고한다. 이런 오류를 매번 보고하는 것도 지겹고, 보고해도 해결되지 않으므로 오류 보고 창이 뜨지 않게 해보자.
시 작 → 제어판 → 성능 및 유지 관리 → 시스템으로 간 뒤 시스템 등록정보 창이 뜨면 ‘고급’ 탭에서 아래에 있는 ‘오류 보고’ 단추를 누른다. 오류 보고 대화 상자에서 ‘오류 보고 사용 안 함’을 고르고 ‘확인’ 버튼을 누른다.

4. 성인광고 나가 있어~
성 인광고 사이트도 아닌데 자꾸 성인광고가 뜬다. 한두 개 정도야 바로 닫아버리면 그만이지만 여러 개의 창이 마구 쏟아져 나오면 윈도우즈 XP가 먹통이 되기도 한다. 성인광고를 막아주는 프로그램이 있지만, 괜히 하드디스크 용량만 차지하므로 윈도우즈 XP 자체에서 해결하자.
인터넷 익스플로러 메뉴에서 도구 → 인터넷 옵션을 고른 다음 ‘일반’ 탭의 임시 인터넷 파일 항목에 있는 ‘설정’ 단추를 누른다. ‘설정’ 창이 뜨면 ‘개체보기’를 누른다.
탐색기가 뜨면서 파일 이름이 나온다. 이 중에서 sender control이라는 파일을 찾아서 지우면 성인광고 사이트가 뜨지 않는다.

‘개체보기’를 누르면 내 PC에 깔려있는 개체들이 보인다.

5. 내 컴퓨터에서 ‘공유 문서’ 없애기
윈도우즈 XP에는 여러 이용자가 같이 쓸 수 있는 공유 문서가 있다. 공유 문서에는 공유 그림, 공유 음악이 있는데 집에서 혼자 쓰는 사람에게는 필요 없다. 용량만 차지하는 공유 문서를 지워보자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기를 띄운 다음,
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders에 있는
{59031a47-3f72-44a7-89c5-5595fe6b30ee}를 찾아 지운다.

이 레지스트리를 지우면 공유 문서가 보이지 않는다.

6. ‘시작’에서 문서메뉴 지우기
문서 메뉴가 있으면 작업 했던 문서를 쉽게 불러올 수 있지만, 길게 늘어져 있어 지저분하다. 문서 메뉴를 잘 쓰지 않는다면 깔끔하게 지우자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 오른쪽에 마우스를 놓고 새로 만들기 → DWORD 값을 고른 뒤,
‘새 값’의 이름을 NoRecentDocsMenu 라고 바꾼 뒤 마우스로 두 번 눌러 값 ‘1’을 넣는다.

문서 메뉴가 없어졌다. 메뉴가 한결 깔끔해 보인다.

7. 바탕화면에 내 컴퓨터 불러오기
윈 도우즈 XP를 깔고 나면 바탕화면에 휴지통만 보인다. 윈도우즈 98처럼 바탕화면에 기본 아이콘이 보이게 하려면 바탕화면에서 오른쪽 마우스 버튼을 누른 뒤 → 속성 → 바탕화면 → 바탕화면 사용자지정을 차례로 누르고 ‘내 바탕화면에 아이콘’에서 골라 누르면 된다.

8. 휴지통을 변기통으로 바꾸자
다른 아이콘들은 이름을 바꿀 수 있지만, 휴지통은 ‘이름 바꾸기’가 없다. 하지만 PC사랑 사전에 불가능이 있던가? 휴지통 변기통으로 변신시키자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_CLASSES_ROOT \CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder의 오른쪽 창에 있는 attributes 키를 마우스 오른쪽 단추로 누른 뒤 ‘수정’을 고른다. ‘바이너리 값 편집’ 창의 ‘값의 데이터’ 칸에서 40 01 00 20 대신 70 01 00 20을 집어넣는다. CallForAttributes=dword:00000040 의 값만 지우자.

재 부팅하고 휴지통 위에서 마우스 오른쪽 버튼을 누르면 ‘이름 바꾸기’가 생긴다.

9. 입력 도구 모음 없애기
윈 도우즈 XP ‘서비스 팩이 깔려 있다면 입력 도구 모음을 간단히 닫을 수 있지만 서비스 팩이 없다면 이것을 지울 수 없다. 입력 도구 모음은 한자를 입력할 때 편하지만 게임을 자주 하는 이들에겐 눈에 거슬릴 뿐 아무런 도움을 주지 않는다. 입력 도구를 쓰지 않는다면 이 방법으로 입력도구를 날려버리자.
제어판 → 국가 및 언어 옵션 → 언어 → 자세히 → 설치된 서비스에서 ‘추가’를 눌러 영어를 새로 넣는다. 그 다음 한글 입력기(IME2002)를 고르고 기본 설정 → 입력 도구모음에서 모든 체크를 끄면 도구가 사라진다.

10. 로그 온 할 때 예쁜 메시지 띄우기
회사, 학교 등 네트워크에 연결된 PC를 켜면 ‘로그온’ 화면이 뜬다. 이 곳에 톡톡 튀는 예쁜 메시지를 넣어보자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon을 찾는다.
오른쪽 창에서 마우스 오른쪽 버튼을 누르면 뜨는 ‘새로 만들기’ 메뉴에서 ‘문자열 값’을 고른 뒤, 문자열 이름을 LegalNoticeText 라고 써 넣고 엔터 키를 누른다. 이미 있는 파일이라면 새로 만들지 않아도 된다.
앞에서 만들어 놓은 문자열을 마우스로 두 번 누르면 ‘문자열 편집’ 대화 상자가 나타난다.
‘값 데이터’ 상자에 화면에 표시할 내용을 써 넣고 ‘확인’ 버튼을 누른다.
같은 방법으로 LegalNoticeCaption 이라는 문자열 값을 만들고 ‘값 데이터’에 메시지 상자의 제목을 적은 뒤 ‘확인’ 버튼을 누른다. PC를 껐다 켜면 메시지 상자가 표시된다.

11. URL 입력은 단축 키로 간단히!
PC사랑 홈페이지에서 지난달 기사를 찾아보고 싶을 때 주소 창에 www.ilovepc.co.kr을 모두 적지 않아도 된다. ilovepc만 쓰고 Ctrl+Enter 키를 누르면 http://www와 co.kr이 저절로 써진다.
.com로 끝나는지, co.kr이나 net으로 끝나는지 기억나지 않을 때 활용하면 편하다.

12. ‘드라이버가 맞지 않는다’는 메시지가 떠요!
윈 도우즈 XP의 기본 드라이버를 쓰다가 부품 회사에서 만든 드라이버를 깔려고 하는데 ‘호환성 테스트에 통과하지 못했다’는 메시지가 종종 뜬다. MS가 테스트하지 않아 성능을 믿을 수 없다는 내용이다. 많은 드라이버가 테스트를 거치지 않았지만 쓰는 데는 이상이 없다. 그렇다면 이 메시지를 굳이 띄울 필요가 없다.
‘내 컴퓨터’를 마우스 오른쪽 버튼으로 누르고 ‘속성’을 고른 다음, ‘하드웨어’ 탭에서 ‘드라이버 서명’을 누른다. 여기서 ‘무시’를 고르면 다시는 호환성 메시지가 뜨지 않는다.

‘무시’를 고르면 드라이버를 깔 때 호환성 여부를 묻지 않는다.

13. 시스템 복원이 컴퓨터를 느려지게 한다?
‘시 스템 복원’은 만일의 사고를 대비해 시스템 내용을 그대로 기억하는 것이다. 오류가 발생하면 사고가 나기 전 상태로 돌아가기 위해서다. 파일을 읽고, 쓰고, 지울 때마다 system volume information 폴더에 시스템 복원용 백업 파일이 저장된다. 이 때문에 PC 속도가 느려지는데, ‘시스템 복원’을 끄면 속도가 한결 빨라진다.
‘내 컴퓨터’ 아이콘을 마우스 오른쪽 버튼으로 누르고 ‘속성’을 고른다. 시스템 등록정보’ 창이 열리면 ‘시스템 복원’ 탭을 누른 다음 ‘시스템 복원 사용 안 함’을 고르고 ‘확인’ 버튼을 누르면 된다.

시스템 복원을 끄면 PC가 한결 빨라진다.

14. 하드가 이유 없이 데이터를 읽을 때는?
아 무런 작업도 하지 않는데 드르륵~ 거리며 하드디스크를 읽는 소리가 난다. 본체의 HDD LED도 깜박인다. 왜 아무런 명령을 내리지 않은 하드디스크가 작동을 할까? ‘인덱싱 서비스’ 때문일지 모르므로 이 명령을 끈다. 인덱싱 서비스는 하드에 있는 파일을 정리해 빨리 뜨게 해주지만 명령을 꺼도 PC를 쓰는 데 별 문제가 없다.
제어판 → 관리도구 → 서비스 → indexing service → 속성 → 사용안함을 누른 뒤 재 부팅하면 하드가 잠잠해진다.

15. 바탕화면 단축 아이콘에서 화살표를 지우자
프로그램 파일과 단축 아이콘을 구분하기 위해 단축 아이콘에는 ‘화살표’가 붙어 있다. 알아보긴 쉽지만, 왠지 지저분해 보인다. 화살표를 지우자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_CLASSES_ROOT\lnkfile를 고른 뒤 오른쪽 창에서 → isshortcut를 지우면 된다.


화살표가 없어 아이콘이 깔끔하게 보인다.

16. 폴더 창을 재 빨리 연다.
탐색기에서 폴더를 이동하다보면 폴더 안에 있는 파일을 읽어 들이는 속도가 느리다는 느낌을 지울 수 없을 때가 많다. 느린 속도 때문에 답답할 때는 다음과 같이 해보자.
시작 버튼 → 설정 → 제어판 → 폴더옵션을 차례로 고른다.
‘보 기’ 탭의 ‘고급설정’ 칸에서 ‘폴더 및 바탕화면 항목에 팝업 설명 표시’ ‘압축된 파일과 폴더를 다른 색으로 표시’ ‘독립된 프로세스로 폴더 창 실행’ ‘네트워크 폴더 및 프린터 자동 검색’ ‘폴더 팁에 파일 크기 정보 표시’의 체크 표시를 없앤다.

이렇게 해두면 폴더 창이 조금 더 빨리 열린다.

17. 윈도우즈 XP에서 도스 게임 하기
윈 도우즈 XP는 32비트 운영체제여서 16비트 도스 게임을 누르면 실행이 되지 않고 창이 꺼져 버린다. 도스 게임을 하고 싶다면 VDM(virtual DOS machine)이란 프로그램을 내려 받아 깐다. exe 실행파일을 골라 오른쪽 마우스 단추로 메뉴를 부른 뒤 run with VDMS를 누르면 된다. VDM은 PC사랑 홈페이지 ‘프로그램 타입 캡슐’에서 내려 받을 수 있다.

윈도우즈 XP에서 추억이 담긴 게임을 즐겨보자.
TR>
18. 메신저로 파일을 받을 수 없다고?
윈 도우즈 XP는 인터넷 연결 방화벽 설정 부분이 있어서 외부에서 내 PC로 접속하는 것을 막는다. 하지만 메신저나 P2P 프로그램을 쓸 때는 이 방화벽 때문에 서로 자료를 주고받지 못한다. MSN 메신저를 비롯해 메신저가 P2P 프로그램으로 자료를 주고받을 때 방화벽이 가로막으면 다음과 같이 해결한다.
바탕화면의 ‘네트워크 환경’의 ‘속성’을 연 다음 ‘로컬 영역 연결’을 한번 누른다.
마우스 오른쪽 단추를 눌러 ‘속성’을 연 뒤 고급 → 인터넷 연결 방화벽을 끈다.

인터넷 연결 방화벽을 끄면 메신저나, P2P 프로그램을 문제없이 쓸 수 있다.

19. 윈도우즈 XP에서 디스크 검사를 하자
윈도우즈는 문제가 있을 때 ‘디스크 검사’를 해 오류를 고친다. 하지만 윈도우즈 XP는 윈도우즈 98과 달리 ‘디스크 검사’ 메뉴가 따로 없다. 보조프로그램에 등록 되어 있지도 않다. 그렇다고 디스크 검사가 아예 없는 건 아니다.
내 컴퓨터 → 로컬 디스크(c:)를 오른쪽 마우스로 메뉴를 불러 ‘속성’을 누른다.
‘도구’ 탭에 가면 ‘디스크 검사’가 있다. 모든 창과 프로그램을 다 끄고 검사하도록 한다.

윈도우즈 98보다 메뉴가 간단하고 검사가 빠르다.

20. 지워도 보이는 프로그램 지우기
안 쓰는 프로그램을 제어판 → 프로그램 추가/제거에서 지우지 않고 탐색기로 폴더만 지우면 프로그램 목록에 남는다. 이것이 쌓이고 쌓이면 프로그램 설치가 안 되고, 윈도우즈까지 느려진다. 흔적이 남지 않게 깔끔하게 지워보자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall에 들어가 지울 프로그램을 골라 지우면 된다.

21. 시스템 종료 창 바꾸기
여 러 이용자가 하나의 PC를 쓸 때 시스템을 켜면 시작 화면이 뜬다. 여기에는 각 이용자가 등록되어있고 누가 어떤 프로그램을 쓰는지 간단히 나와 있다. 내가 무엇을 할지 다른 사람이 보는 게 싫다면 윈도우즈 98처럼 이름만 보이므로 보안이 더 낫다. 윈도우즈 98처럼 바꿔보자.
시작 버튼 → 설정 → 제어판 → 사용자 계정을 고른 다음 ‘사용자 로그온 또는 로그오프 방법변경’을 누른다.
‘새로운 시작 화면 사용’의 체크 표시를 없애고 ‘옵션 적용’ 버튼을 누르면 로그 창이 고전적인 형태로 바뀐다.

‘새로운 시작 화면 적용’을 누르면 윈도우 98처럼 시스템 종료 창이 바뀐다.

22. 꼭꼭 숨겨진 윈도우즈 XP 관리 프로그램들
윈도우즈 XP의 시작 버튼 → 실행을 누르면 ‘실행’ 창이 열린다. 여기에 명령을 써넣으면 작업이 바로 실행된다. ‘실행’ 창에 쓸 수 있는 명령어와 하는 일은 다음과 같다.

compmgmt.msc 컴퓨터 관리와 관련 시스템 도구 창을 연다.
diskmgmt.msc 디스크 관리 창을 띄운다.
eventvwr.msc 윈도우즈 메시지가 담긴 이벤트를 본다.
gpedit.msc 도메인 또는 액티브 디렉토리나 PC에 저장되어 있는 조직 단위에 연결된 그룹 정책 개체를 편집하는 ‘로컬 컴퓨터 정책’을 연다.
perfmon.msc 시스템 성능을 감시하고 로그와 경고를 기록한다.
secpol.msc ‘로컬 보안설정’을 열어 도메인의 PC 보안 정책을 정의하게 도와준다.
devmgmt.msc 하드웨어 장치 목록을 보고 각 장치에 대한 특성을 정하는 ‘장치관리자’ 창을 연다.
dfrg.msc ‘디스크 조각모음’ 창을 연다.
fsmgmt.msc 공유 폴더를 띄운다.
lusrmgr.msc 로컬 이용자를 확인한다.
rsop.msc ‘정책의 결과 집합’ 창을 연다.
services.msc ‘서비스’ 창을 띄운다.

23. 메뉴를 빨리 빨리
제원이 낮은 PC를 쓰고 있다면 창이 뜰 때 나타나는 갖가지 효과를 없애 창을 빨리 띄워보자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_CURRENT_USER\ControlPanel\desktop에서 MenuShowDelay을 살펴보면 400
으로 되어있다. 이 값을 0으로 고쳐주면 된다.

0으로 바꾸면 메뉴가 빨리 뜬다.

24. 하드디스크 파티션 하기
윈도우즈 98에서는 ‘fdisk’라는 프로그램으로 하드디스크를 나눠 썼다. 윈도우즈 XP는 이 fdisk프로그램이 없어진 대신 파티션을 쉽게 할 수 있는 메뉴가 생겼다.
시 작 → 설정 → 제어판 → 관리도구 → 컴퓨터 관리 → 디스크 관리에 들어가면 하드디스크의 갖가지 정보가 뜬다. 파티션 하려는 하드디스크에 오른쪽 마우스를 눌러 메뉴를 불러온다. 파티션 뿐 아니라 하드디스크를 매만질 수 있는 갖가지 메뉴가 있다.

윈도우즈 XP는 복잡한 하드디스크 파티션을 간단히 끝낸다.

25. 내 PC 시각이 맞지 않을 때
작업 표시 줄 오른쪽에 있는 시계를 1분 1초도 틀리지 않게 맞춰보자. 먼저 작업 표시 줄의 시계를 누르고 ‘인터넷 시간’이란 탭을 누른다. ‘인터넷 시간 서버와 자동으로 동기화’를 체크하고 ‘지금 업데이트’를 누르면 된다.

인터넷 서버에 있는 정확한 시계와 연결되어 제대로 된 시간을 보여준다.

26. 회사 이름과 이용자 이름 바꾸기
윈도우즈 XP를 처음 깔 때 넣었던 회사 이름과 이용자 이름을 바꾸고 싶다면, 레지스트리를 매만지자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 에 들어가면 RegisteredOrganization과 RegisteredOwner라는 값이 있다.
RegisteredOrganization은 회사 이름, RegisteredOwner는 사용자 이름이다.
입맛에 맞게 바꾼 뒤 재 부팅하면 바뀐다.

27. CD롬 자동 삽입 통지 막기
윈도우즈 XP는 윈도우즈 98처럼 ‘자동 삽입 통지’ 메뉴가 없다. CD롬을 넣으면 CD롬 내용이 알아서 뜨는데, 이 기능이 귀찮다면 레지스트리를 만져 끄면 된다.
시작 → 실행에서 regedit 라고 쓰고 엔터 키를 누르면 레지스트리 편집기가 뜬다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Services\Cdrom에서 Autorun값을 `0`으로 하면 CD를 넣어도 CD가 자동 실행되지 않는다.

28. 인터넷 화면이 제대로 안보일 때
인터넷 게임을 하려고 하는데 화면이 제대로 뜨지 않는다면 어떻게 할까? 인터넷을 띄우면 그 사이트에 맞는 개체가 깔리는데, 이 개체가 제대로 깔리지 않을 때 이런 일이 일어난다.
제어판 → 인터넷 옵션 → 일반 탭에서 임시 인터넷 파일의 ‘설정’ 메뉴를 찾는다.
‘개 체 보기’를 누르면 내 PC에 깔려 있는 갖가지 개체들이 보인다. <Ctrl + A> 키를 눌러 ‘전체 선택’을 한 뒤 Del 키를 눌러 지운다. ‘예’를 누르면 말끔히 지워진다. 다시 인터넷 사이트에 들어가면 개체가 깔리기 전에 ‘예’ ‘아니오’라는 창이 뜬다. ‘예’를 누르면 개체가 바로 깔려 인터넷 화면을 제대로 볼 수 있다.

'예‘를 눌러야 화면을 띄우는 데 필요한 개체가 깔린다.

29. ‘도움말 및 지원’ 메뉴 지우기
윈도우즈를 쓰다가 모르는 것이 있으면 ‘도움말’을 보지만 사실 별 도움이 되진 않는다. 차라리 이것을 없애면 프로그램이 띄울 때 조금 더 빨리 뜬다.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer에 간 뒤 ‘새로 만들기’ 에서 DWORD값을 만든다.
이름을 NoSMHelp으로 하자. 마우스를 두 번 눌러 데이터 값을 불러와 ‘1’이라고 넣자.
재 부팅 하면 ‘도움말 및 지원’ 메뉴가 뜨지 않는다.

30. 쓰지 않는 MSN 익스플로러 지우기
윈도우즈 XP를 처음 깔면 MSN 익스플로러가 깔려 있다. MSN 익스플로러는 MSN과 핫메일을 쓰는 사람에게 유용한 프로그램이지만 쓰지 않는다면 이 프로그램을 지워 하드디스크 용량을 늘이자.
시작 → 모든 프로그램 → MSN Explorer 아이콘에 마우스를 갖다 댄다. 오른쪽 마우스 버튼으로 메뉴를 불러와 속성을 누른다. 등록정보 창이 뜨면 ‘대상 찾기’를 누른다.
Setup 폴더를 열어 보면 msnunin이란 프로그램이 있는데, 이것이 MSN Explorer을 지우는 프로그램이다. 마우스로 두 번 눌러 시작 메뉴에 있는 내 PC에서 MSN 익스플로러를 지운다.

꼭꼭 숨어 있는 이 파일을 누르면 MSN 익스플로러가 지워진다.

31. 종료 로고만 뜨고 전원이 안 꺼질 때
‘시스템 종료’를 누르면 ‘이제 시스템 전원을 끄셔도 됩니다’라는 창만 뜨고 꺼지지 않는 일이 있다. 이럴 때 제어판 → 전원 옵션 → APM 탭으로 들어가 ‘최대 절전 모드 사용’을 체크하면 된다.

32. CD를 굽고 있는 도중 PC가 먹통이 될 때
주로 4배속 아래의 낡은 CD-RW 드라이브에서 이런 일이 생긴다.
제어판 → 시스템 → 하드웨어 탭의 ‘장치 관리자’로 들어간다.
IDE ATA, ATAPI 컨트롤러를 눌러 광학 드라이브가 꽂힌 보조 IDE 채널을 두 번 누른다. 전송모드가 DMA로 되어 있다면 PIO로 바꾼 뒤 적용을 누른다.

PIO 모드로 바꾸면 오래된 CD-RW라도 CD를 척척 구워낸다.

33. 640 × 480 해상도로 띄우기
윈도우즈 XP 제어판 → 디스플레이 등록정보를 보면 800 × 600이 가장 낮은 해상도로 되어 있지만, 640×480 해상도를 불러 올 수 있다.
제어판 → 디스플레이 → 설정의 ‘고급’ 단추를 누른다.
‘어댑터’ 탭에 들어가면 아래에 ‘모든 모드 표시’라고 되어있다. 이곳을 누르면 640×480 해상도에 256 컬러로 바꿀 수 있다.

256 컬러가 아니면 뜨지 않는 고전 게임을 즐길 때 좋다.

34. 바탕 화면 보기 아이콘 만들기
바탕화면 보기 아이콘은 모든 창을 최소화 시킬 때 편하다. 이 아이콘을 실수로 지웠다면 당황하지 말고 새로 만들어보자. 시작 → 보조프로그램 → 메모장을 열어 다음과 같이 쳐 넣는다.

[Shell]
Command = 2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

‘다른 이름으로 저장’을 고른 뒤 ‘바탕화면보기.scf'라고 저장하면 끝난다.

저장한 파일은 작업 표시 줄의 ‘빠른 실행’ 안에 끌어다 놓자.

35. 메신저 광고 메시지는 이제 그만!
인 터넷 사이트에 가입하지 않았는데도 MSN 메신저를 통해 스팸 쪽지가 계속 날아온다. 이것은 사실 MSN 메신저와 아무 상관이 없다. 메시지를 보내는 이들은 무작위로 IP 주소를 뽑아 윈도우즈 NT 계열의 기본 서비스인 내부 네트워크를 이용해 광고성 쪽지를 보내는 것이다. 이 쪽지를 받지 않으려면 다음과 같이 한다.
제어판 → 관리도구 → 서비스 → Messenger에서 시작 유형을 ‘시작 안함’으로, 서비스 상태를 ‘중지’로 하면 된다.

이제 지긋지긋한 스팸 메시지가 오지 않는다.

36. 윈도우즈 포맷하기 전, 즐겨찾기 백업은 필수
윈도우즈를 포맷하고 다시 깔고 나서 해야 할 일이 너무 많다. 즐겨찾기 사이트를 일일이 다시 등록하는 일도 장난이 아니다. 하지만 즐겨찾기가 저장되는 디렉터리만 알고 있으면 이런 노가다(?)를 하지 않아도 된다.
윈 도우즈를 포맷하기 전에 c:\doc-uments and settings\이용자 이름\favorites를 통째로 다른 드라이브에 복사해 놓자. 윈도우즈를 다시 깐 뒤 같은 디렉터리로 복사한다. 인터넷의 즐겨찾기를 열면 고스란히 사이트가 들어있다. 하지만 전에 저장했던 순서까지 그대로 열리는 것은 아니므로 약간 손봐야 한다.

37. 하위 폴더를 재 빨리 연다
하 위 폴더를 열려면 현재 폴더를 마우스로 두 번 누르거나 그 옆에 있는 +를 고른다. 따라서 디렉토리가 여러 단계로 되어 있으면 필요한 것을 열기위해 이일을 여러 번 반복해야 한다. 하지만 맨 아래에 있는 것을 단 한번에 여는 방법이 있다.
작업하려는 폴더를 고른 뒤 숫자 키보드에 있는 * 키를 함께 누르면 아래에 있는 모든 폴더가 열린다.

38. 지운 파일 되살리기
탐색기나 내 컴퓨터에서 실수로 중요한 파일을 지우기 십상이다. 하지만 걱정하지 않아도 된다. 도구 모음에 있는 ‘실행 취소’ 버튼을 누르면 사라졌던 것이 다시 나타나기 때문이다. 단축 키는 <Ctrl + Z>다.

‘실행취소’ 버튼을 누르면 방금 전 내린 명령이 무효가 된다.

39. 파일 이름이 안 바뀌네?
아 무 작업도 하지 않는데 파일 이름이 안 바뀔 때가 있다. 이럴 때 재 부팅하지 않고 이름을 바꾸는 법을 살짝 공개한다. 파일을 고른 뒤 오른 쪽 메뉴를 불러와 ‘속성’을 누른다. 이 곳에서 이름을 바꿔보자 안 바뀌던 파일 이름이 손쉽게 바뀐다.

파일 복사 중이면 이 방법을 써도 바뀌지 않는다.

페이지라는 부분을 지우면 된다.

10진수로 바꾼 뒤 캐시를 써 넣으면 된다.




40. 내가 원하는 시각에 PC 끄기
시작 → 실행에서 ‘tsshutdn 시간(초)’을 넣자.
PC를 1분 뒤에 끌 거라면 tsshutdn 60, 1시간 뒤에 끌 거라면 tsshutdn 3600이라고 넣으면 된다. 시간이 되면 바로 종료 되는 것이 아니라 만약을 위해 30초를 더 센다.

취소하려면 꺼지기 전에 <Ctrl +C> 키를 누르면 된다.

41. 한글 자판 먹통 됐을 때
인터넷 검색을 하다가 갑자기 한글 자판이 안 먹힐 때가 있다. 이럴 때 PC를 재 부팅 하지 말고 간단하게 해결하자.
대부분 왼쪽 Alt를 한번 누른 뒤 한/영 키를 누르면 한글로 바뀐다. 이 방법이 안 되면 왼쪽 <Shift + Alt> 키와 마우스 오른쪽 버튼을 누른 뒤 한/영 키를 누르면 된다.

42. 윈도우즈 XP의 숨겨진 복사 재주
파 일을 복사할 때 같은 파일이 있으면 겹쳐 쓸 것인지 물어보는 창이 뜬다. 모두 겹쳐 쓸 때 ‘모두 예’라는 항목은 편하지만, 겹쳐 쓰지 않고 이어서 복사하려면 ‘아니오’를 일일이 눌러야 된다. 이럴 때 중복된 것만 빼고 복사하는 ‘모두 아니오’가 있으면 얼마나 편할까?
윈도우즈 XP는 이런 재주가 숨겨져 있다. Shift 키를 누른 상태에서 ‘아니오’를 눌러보자. 똑같은 파일은 건너뛰고 복사 되지 않은 파일만 복사된다.

많은 파일을 복사할 때 편하다.

43. 인터넷 익스플로러 이름 바꾸기
인 터넷 창 타이틀 맨 윗부분을 보면 Microsoft Internet Explorer란 꼬리표가 달려있다. 이 꼬리표 이름을 내맘대로 바꿔보자. 시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다. HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main를 찾은 뒤 편집 → 새로 만들기 한 뒤 Window Title 이라고 써 넣는다. 만들었다면 왼쪽 마우스 단추를 두 번 눌러 이름을 써 넣는다. PC를 재 부팅하면 이름이 바뀐다.


인터넷 창 위에 있던 Microsoft Internet Explorer란 글자를 내 맘대로 바꾸었다.

44. 시작 페이지 고정하기
인터넷을 하다 보면 성인사이트가 첫 페이지로 뜨는 일이 종종 있다. 인터넷 옵션에서 홈페이지를 바꿔도 계속 뜨는 사이트가 정말 짜증난다. 레지스트리를 매만져 이런 문제를 말끔히 털어버리자.
시작 → 실행에서 regedit 라고 쓰고 엔터 키를 누르면 레지스트리 편집기가 뜬다.
HKEY_LOCAL_MACHINE \Software\Microsoft\InternetExplorer\Main, HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\Main으로 가서 둘 다 Start_Page 의 값을 처음에 띄우려는 페이지 주소로 바꾼다.
그 다음 왼쪽 창 Main 에서 오른쪽 클릭 ‘사용 권한’ 고른 뒤 쓰고 있는 계정을 고른 다음 밑에 고급 → 편집을 누른다. 값 설정에서 ‘거부’에 체크 하면 끝난다.

이 곳에서 사이트 이름을 바꾼다.

45. MSN 메신저 6의 숨겨진 이모티콘들
MSN 메신저에는 재미있는 이모티콘이 들어 있다.
메신저를 띄운 뒤 이 단어들을 채팅창에서 쳐 넣으면 재미있는 이모티콘이 뜬다.
(st) = 비
(%) = 수갑
(pl) = 접시
(ci) = 담배
(li) = 번개
(tu) = 거북이
(xx) = 엑스박스
(yn) = 검지와 중지

46. 윈도우즈의 보기 설정을 한결같이
파일 목록을 특정한 방식, 예를 들어 ‘큰 아이콘’으로 표시하거나 ‘자세한 정보’와 함께 표시할 때, 모든 폴더의 보기 옵션을 이와 같은 방식으로 두루 적용할 수가 있다.
윈도우즈 탐색기의 ‘도구’ 메뉴에서 ‘폴더 옵션’을 고른다.
‘보기’ 탭의 ‘폴더 보기’ 칸에서 ‘모든 폴더에 적용’ 버튼을 누른 다음 ‘폴더 보기’ 창이 열리고 모든 폴더에 적용할 것인지 물으면 ‘예’ 버튼을 누른다.

다른 폴더에서도 보기 옵션을 일일이 정하지 않아도 된다.

47. 드라이브 순서 바꾸기
윈도우즈 98 제어판에서 바꿀 수 있던 ‘드라이브 순서’가 윈도우즈 XP에는 없다. 하지만 꼭꼭 숨겨져 있을 뿐 바꾸지 못하는 것은 아니다.
시 작 → 실행 → diskmgmt.msc를 치면 ‘디스크 관리’가 뜬다. 바꿀 드라이브를 누르고 오른쪽 단추로 메뉴를 불러온 다음 ‘드라이브 문자 및 경로 변경’을 누르면 된다. 가상 드라이브와 CD롬이 뒤죽박죽일 때 이 곳에서 순서를 바꿔 정리할 수 있다.

운영체제가 깔린 드라이브는 바꿀 수 없다.

48. 윈도우즈 미디어 플레이어 9 지우기
윈도우즈 미디어 플레이어 9는 영화를 보기에 좋지만, 실시간 방송이 뜨지 않는 일이 종종 있다. 이것은 윈도우즈 미디어 플레이어 9가 실시간 서비스인 VOD를 제대로 알아채지 못해서다.
이 런 이유로 윈도우즈 미디어 플레이어 9를 지우고 종전 버전으로 돌리려면 시작 → 실행 → RunDll32 advpack.dll,LaunchINFSection %SystemRoot%INFwmp.inf,Uninstall이라고 치면 된다.

윈도우즈 미디어 플레이어 9를 깔기 전으로 돌릴 수 있다.

49. 누가 내 PC 만졌어!
내 PC가 언제 켜졌는지 남이 내 PC를 만졌는지 알 수 있는 방법이 있다.
시작 → 프로그램 → 보조프로그램의 메모장에서 다음과 같이 써 넣자.
@echo off
echo Windows 부팅 >>c:list.txt
echo %date% %time% >>c:list.txt
echo. >>c:list.txt
파일 이름을 list.bat라고 저장한 뒤 저장한 파일을 시작 프로그램에 놓는다.

c 드라이브에 들어가 list.tct 파일을 보면 PC를 켠 흔적이 남아있다.

50. 깔지마! 깔지 말란 말야!
사이트에 접속할 때마다 바탕 화면에 깔리는 아이콘을 일일이 지우는 것도 지겹다. 웹 사이트 아이콘을 바탕화면에 깔지 못하게 해보자.
제어판 → 인터넷 옵션 → 보안에서 ‘웹 컨텐트 영역’을 ‘인터넷’으로 고른다.
‘사용자 지정 수준’을 누른다. ‘바탕 화면 항목 설치’를 찾아 ‘설치 안함’을 고르면 된다.

이제 바탕화면에 웹 사이트 아이콘이 깔리지 않는다.

51. 머리글과 바닥글 없애기
인 터넷 화면을 문서로 뽑으려면 파일 메뉴의 ‘인쇄’를 누르면 된다. 하지만 프린터에 http://www.ilovepc.co.kr/record_detail_read.php?NO=15879같은 경로가 같이 찍혀 나와 지저분하다. 이것이 싫으면 파일 → 페이지 설정을 눌러 ‘머리글’과 ‘바닥글’에 있는 칸을 깨끗이 지운다음 인쇄하면 된다.

52. 키보드 없이 키보드를 친다?
윈 도우즈 XP는 키보드가 없이 PC를 쉽게 쓸 수 있도록 ‘화상 키보드’를 지녔다. 이것은 글자 그대로 키보드 모양을 화면에 띄워 마우스로 눌러 글자를 띄우거나 프로그램을 실행시킨다. 시작 → 프로그램 → 보조프로그램 → 내게 필요한 옵션 → 화상 키보드를 누르면 된다.

화상 키보드는 움직임이 불편한 장애자들을 위해 만든 프로그램이다.

53. 플로피디스크 읽지 마!
부 팅한 뒤나 탐색기를 띄웠을 때 윈도우즈는 무작정 A 드라이브인 플로피디스크를 읽는다. 이것은 하드웨어가 잘 달려 있는지를 윈도우즈가 알아보는 것이다. 이런 일을 없애도 윈도우즈를 쓰는 데 아무런 이상이 없으므로 윈도우즈가 하드웨어를 검색하는 명령을 고치자.
제어판을 띄워 ‘관리도구’를 열고 ‘서비스’ 아이콘을 골라 shell hardware detection 항목을 두 번 누른다. ‘시작 유형’을 ‘자동’으로 맞추고 ‘확인’ 버튼을 누른다.
‘서비스’ 창에서 shell hardware detection 항목을 골라 시작 유형을 ‘자동’으로 바꾼다. 이렇게 하면 플로피디스크를 읽지 않는다.

플로피 디스크를 자주 쓰지 않는다면 ‘자동’으로 바꾸자.

54. 최대 절전 모드 해제로 하드디스크 용량을 확보하자
제어판의 ‘전원 옵션’ 가운데 최대 절전 모드를 쓰면 윈도우즈는 얼마 뒤 메모리에 담긴 데이터를 하드디스크에 저장하고 적은 전기만 쓰면서 대기모드로 들어간다. 이 때 하드디스크 용량을 500MB 정도 차지한다.
대 기모드를 쓰지 않는 이에게 이 옵션은 하드디스크 용량만 잡아먹는 쓸데없는 것이다. 바탕화면에 대고 마우스 오른쪽 버튼을 눌러 ‘속성’을 눌러 ‘디스플레이 등록정보’ 창을 띄운다. 화면보호기 항목에서 ‘전원’ 버튼을 누르고 전원 옵션 등록정보를 보자. ‘최대 절전 모드’ 탭에서 체크 표시를 없앤다.

55. 응답이 없는 프로그램 빨리 닫기
윈도우 XP 응답이 없는 프로그램은 시간이 얼마 지나야 닫히게 된다. 기다린다고 응답 없는 프로그램이 다시 살아나는 것도 아니므로 이 시간을 무시하고 바로 끄자.
시작 → 실행에서 regedit 라고 쓰고 엔터키를 치면 레지스트리 편집기가 뜬다.
HKEY_CURRENT_USER\Control Panel\Desktop에서 HungAppTimeout를 왼쪽 마우스로 두 번 눌러 1000으로 고치면 된다.

56. 내가 쓰는 윈도우즈 XP가 정품일까?
윈 도우즈 XP는 불법 복제를 쓰지 못하게 인터넷으로 정품 등록을 한다. 이것을 흔히 ‘인증을 받는다’고 한다. 하지만 인증을 받지 않고도 정품처럼 쓰는 불법 OS가 널리 퍼져 있다. 정품인데도 인증을 받지 않으면 적어도 30일 동안 작동한다. 과연 내가 쓰는 윈도우즈 XP는 인증을 받은 것일까?
시작 → 실행 → oobe/msoobe /a라고 치면 인증 창이 뜬다.

정상적인 OS이면 그림처럼 인증을 받았다는 메시지가 보인다.

57. MSN 메신저를 지우자
프로그램 추가/제거에서는 MSN 메신저를 지울 수 없다. 지우고 싶다면 시작 → 프로그램 → 보조프로그램에 있는 메모장으로 c:\windows\servicepackfiles\sysoc.inf 파일을 연다.
msmsgs=msgrocm.dll,OcEntry,msmsgs.inf,hide,7이라고 되어 있는 줄을 찾은 뒤,
msmsgs =msgrocm.dll,OcEntry,msmsgs.inf,7로 바꿔주면 시작 → 제어판 → 프로그램 추가/제거 → windows 구성요소 추가/제거에 MSN 메신저 체크박스가 뜬다. 이 박스를 끄면 MSN 메신저를 지울 수 있다.

MSN 메신저를 쓰지 않는다면 이 곳에서 지우면 된다.

58. L2 캐시 매만져 PC를 재빨리 돌리자
윈 도우즈 XP는 CPU의 L2 캐시를 알아채 PC를 재빨리 돌린다. 하지만 데이터가 많아지거나 멀티태스킹을 할 때 캐시를 읽지 못해 순간적으로 느려질 때가 있다. 캐시를 고정시켜 운영체제가 일일이 캐시 메모리를 찾는 수고를 덜어주자.
시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management를 찾은 뒤 SecondLevelDataCache를 고른다.
그 다음 내 CPU에 맞는 캐시를 넣으면 된다. 바탕화면에 있는 ‘내 컴퓨터’를 누른 뒤 오른쪽 메뉴를 불러와 ‘속성’을 누르면 내 CPU 정보가 뜬다.

59. 다이렉트 X의 최신 버전 깔기
시 작 → 실행에서 dxdiag라 쳐 넣고 엔터를 치면 다이렉트 X 버전 뿐 아니라 갖가지 정보가 뜬다. 다이렉트 X가 8.1 이하가 깔려있다면 9.0을 새로 까는 것이 좋다. 게임속도가 재빨라지기 때문이다. 다이렉트 X 9.0을 내려받고 싶다면 시작 → windows update에서 인터넷 익스플로러 창이 뜨면 ‘업데이트 검색’을 누른 다음 중요 업데이트 및 서비스 → 업데이트 검토 및 설치를 눌러 ‘지금 설치’를 누르면 된다.

다이렉트 X 9.0이상이 깔려있는지 확인하자.

60. 인터넷 익스플로러를 전체 화면으로 보자
인터넷 익스플로러를 전체 화면으로 시원시원하게 보는 방법이 있다.
인터넷 창을 띄우고 F11 키를 눌러도 되지만 항상 전체 화면으로 띄우려면 레지스트리를 매만져야 한다. 시작 → 실행 → regedit 라고 누르면 레지스트리 편집기가 뜬다.
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main 으로 간 다음 오른쪽 창에서 FullScreen을 찾는다.
FullScreen을 두 번 눌러 no를 yes로 바꾸면 된다.

 

출처 : [기타] 인터넷 : http://tong.nate.com/cherry8301

4GB, xp
기술 자료 ID:291988
마지막 검토:2007년 12월 11일 화요일
수정:15.

요약

이 문서에서는 4GB RAM 조정 기능 및 PAE(실제 주소 확장) 스위치에 대해 설명합니다.

추가 정보

Boot.ini 파일의 /3GB/PAE 스위치는 다음 제품에 사용됩니다.
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Datacenter Edition
/3GB 스위치를 Windows 2000 Professional이나 Windows 2000 Server에서 사용할 경우 커널 구성 요소가 4GB RAM 조정 기능을 통해 Windows 2000 Advanced Server와 Windows 2000 Datacenter Server에 로드되는 것과 같은 방식으로 메모리 공간에 로드됩니다. 이 기능을 통해 장치 드라이버 개발자는 Windows 2000 Advanced Server나 Windows 2000 Datacenter Server를 설치할 필요 없이 이러한 구성에서 자신의 드라이버를 테스트할 수 있습니다. 사용자 모드 메모리 공간은 계속 2GB로 제한됩니다.

/3GB 스위치를 Windows XP Professional, Windows Server 2003 Datacenter Edition 또는 Windows Server 2003 Enterprise Edition에서 사용할 경우 /3GB 스위치는 모든 버전에서 동일하게 작동합니다. 이 기능을 통해 장치 드라이버 개발자는 방금 나열한 Windows Server 2003 제품 중 하나를 설치할 필요 없이 이러한 구성에서 자신의 드라이버를 테스트할 수 있습니다. 사용자 모드 메모리 공간은 3GB로 제한됩니다.

주의 Microsoft는 Active Directory에서 사용하도록 프로덕션 환경의 Windows Server 2003 Standard Edition에서 /3GB 스위치 사용을 지원합니다. 다른 응용 프로그램의 경우 Microsoft는 응용 프로그램 공급업체가 이 환경에서 테스트를 수행했고 공급업체가 이 기능을 사용하는 고객을 지원하는 경우의 프로덕션 환경에서만 Windows Server 2003 Standard Edition에서의 /3GB 스위치 사용을 지원합니다. Microsoft Exchange Server 2003 및 Microsoft SQL Server 2000에서는 이 기능을 사용하는 프로덕션에서 스위치 사용을 지원합니다. 해당 응용 프로그램에 관해서는 응용 프로그램 공급업체에 문의하십시오. /3GB 스위치는 일부 응용 프로그램에서 주소 종속성 또는 커널 공간 감소와 관련된 문제를 일으킬 수 있습니다. 여기에서 설명한 경우를 제외하고 Windows Server 2003 Standard Edition에서 /3GB 스위치는 개발과 테스트 목적으로만 사용됩니다.

참고 /3GB 스위치가 Exchange Server에서 설정되면 Active Directory의 리소스가 부족해질 수 있습니다.

/PAE 스위치를 사용하면 개발자가 64비트 주소를 커널 모드 구성 요소에 전달하여 유사하게 장치 드라이버를 테스트할 수 있습니다. 이 기능은 PAE(실제 주소 확장)라고 하며 일부 칩세트에서는 작동하지 않을 수 있습니다. 32비트 이상의 모든 주소는 Boot.ini 파일의 /nolowmem 스위치를 통해 작동되며 4GB보다 작은 메모리 부분은 무시됩니다.

중요 이러한 구성은 Windows 2000 Professional 및 Windows 2000 Server에서는 지원되지 않으며 테스트 목적으로만 사용할 수 있습니다. 이 절 맨 위의 글머리 기호 목록에 있는 제품 중 하나를 사용하지 않는 경우 프로덕션 환경에서는 이러한 스위치를 사용하지 마십시오.

이러한 제품에서 4GB RAM 조정 기능을 사용하면 프로그램에서 사용자 모드 메모리의 3GB 영역을 사용할 수 있습니다. 이 기능은 사용자 모드 메모리의 가상 주소 범위를 0x0000000에서 0xBFFFFFF까지 확장할 수 있습니다. 사용자 모드 주소 범위는 일반적으로 0x0000000에서 0x7FFFFFFF 사이입니다. 커널 모드 구성 요소에 사용할 수 있는 메모리 범위는 0x80000000-0xFFFFFFFF에서 0xC0000000-0xFFFFFFFF로 줄어듭니다. 프로덕션 환경의 Windows Server 2003 Standard Edition에서는 이 기능을 사용하지 않는 것이 좋습니다.

Windows 2000 Professional이나 Windows 2000 Server에서 Boot.ini 파일의 /3GB 스위치를 사용하면 3GB 범위의 사용자 모드 메모리 모양을 갖출 수 있습니다. 그러나 0x80000000에서 0xBFFFFFFF 사이의 메모리는 사용할 수 없습니다. 커널 모드 구성 요소가 0xC0000000에서 0xFFFFFFF 범위의 메모리만 사용하도록 제한되기 때문에 개발자는 커널 모드 구성 요소를 테스트할 수 있습니다.

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
815372 (http://support.microsoft.com/kb/815372/) Exchange Server 2003에서 메모리 사용을 최적화하는 방법

Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
Microsoft Windows Server 2003, Enterprise Edition
Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Professional Edition
Microsoft Windows XP Professional
Microsoft Windows Server 2003, Standard Edition (32-bit x86)

[출처] : http://support.microsoft.com/kb/291988/ko#appliesto

'S/W 개발 > ETC' 카테고리의 다른 글

XP의 숨겨진 60가지 기능  (0) 2007.12.19
[펌]4GB RAM 조정 기능 및 PAE(실제 주소 확장) 스위치에 대한 설명  (0) 2007.12.19
URL Helper  (0) 2007.12.06
D 언어 소개  (0) 2007.12.06
스트리밍 동영상 또는 음악의 주소를 알려주는 "URL Helper"입니다

주소가 숨겨진채 인터넷에서 실시간 플레이되는 스트리밍 파일의 주소를 알아내주어 다운로드 받을 수 있도록 해주는 프로그램입니다. 네트워크 속도가 느려 실시간으로 보고듣지 못하는 분들에겐 유용한 프로그램일것입니다.

http://www.streamingstar.com
http://simfile.chol.com/view.php?fnum=124289

'S/W 개발 > ETC' 카테고리의 다른 글

[펌]4GB RAM 조정 기능 및 PAE(실제 주소 확장) 스위치에 대한 설명  (0) 2007.12.19
URL Helper  (0) 2007.12.06
D 언어 소개  (0) 2007.12.06
Manifest 적용하기..  (0) 2007.12.06
원문 :   D 프로그래밍 언어 소개
D 프로그래밍 언어 소개


음.. 요즘 D언어에 관심을 가지고 있습니다. 이름에서 알수 있듯이... B다음에 C다음에 C++다음에 만들어진 D언어입니다. 1.0이 나온게 몇년전이고 지금은 상당히 완성도를 가지고 있다고 하더군요.

그리고 예상과는 달리 사용자층도 꽤 만고 해서, D언어를 함 사용해 보기로 마음 먹고 위키를 만들었습니다.
위키의 주소는 http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/D 이고 앞으로 계속 수정되어 나갈 겁니다.




C 언어가 B 언어로부터 나왔다는 얘기는 아마 언뜻 들어서 다들 알고 있을 것 같다. 언어의 역사가 궁금하다면 언어의 역사 문서를 한번 보기 바란다.

C 도 나왔고, 객체지향을 적용한 C++도 나왔으니 이제 D 언어도 나오지 않을까 ? 라는 생각이 들어봄직도 할 거 같은데, 정말 D 언어가 나왔다. 물론 나온지는 꽤 되었고, 예전 부터 써봐야지 써봐야지 하면서 차일피일 미루어왔는데, 이번참에 직접 사용해 보기로 했다. 이 위키는 D언어를 잘 배워서 한번 써먹어 보자라는 취지로 만들었다.

관련기사
지 금, 세계는 대화 언어보다 프로그램 언어를 더 많이 가지고 있으나 프로그램 언어들은 계속 만들어지고 있다. 금주에 Digital Mars는 C/C++의 문제점과 약점을 해결한 D 언어를 발표했다. D는 C++ 컴파일러, Zortech C++의 자손이다. D는 무료이며 윈도우와 리눅스를 위한 표준 라이브러리이며 오픈 소스이다.

C/C++의 개선으로 D는 C 코드와 호환되며 콜 인터페이스 없이 어떠한 C API와도 인터페이스 가능하다. 그러나 D는 C 코드와 완전하게 후향적 호환은 안되며 자바와 Microsoft C#의 많은 기능을 추가로 한다. D는 2001년 이후 개발되었으며 오픈 소스 공동체의 입력물을 많이 사용하였으며 http://dmoz.org/Computers/Programming/Languages/D/에 자료가 많이 있다.

브라이트는 “D는 C++ 프로그래머의 경험에 의해 개발되었으며 많은 새로운 언어처럼 어느 특정한 플랫폼을 목적으로 설계되지 않았다. D의 개념은 빠르게 배우고 코딩하고 빠르게 디버깅하며 유지 보수하는 것”이라고 말했다.

Forrester Research 분석가인 제프 함몬드는 “D가 기반을 얻기까지에는 약간의 시간이 걸릴 것이다. D 언어가 성공하려면 D 언어 기술이 좋은 것 이외에도 그에 맞는 비즈니스 모델이 있어야 될 것”이라고 말했다. 마치 리눅스가 성공한 이유가 그 당시 다른 OS 가격이 너무 고가이어서 고객들이 선택했기 때문인 것처럼 필요한 비즈니스 모델이 중요하다.

출처 : http://www.internetnews.com

D 언어 소개

http://www.digitalmars.com/

C와 C++은 시스템프로그래밍에 있어서 강력함을 발휘 한다. 특유의 단순함과 중급언어라고 분류할 만큼 시스템에 가깝다는게 그 이유인데, 이 단순함은 요즘 같은 시대에 단점이기도 하다.

암 튼 이 두언어는 최신언어의 유행에 한참이나 뒤 떨어져 있다. 절차지향적이고 그다지 깔끔하지도 않으며, C++은 객체지향 적이긴 하지만 업계표준이며 모태라고 할 수 있는 C언어와의 호환성유지등의 문제로 현대언어들의 유행을 쫓아가지 못하고 있다.

물 론 현대언어의 유행이란 것이 모든 면에 있어서 좋은 쪽으로 흘러간다고 할 수는 없다. 그렇다면 C와 C++이라는 언어자체가 필요 없어질 것 아닌가. C와 C++이 유행을 따르지 않음으로써 구식언어라는 멍에를 지기는 했지만 여전히 시스템/네트워크 프로그래밍에 있어서, 속도와 성능,신뢰도 측면에서 높은 점수를 받고 있으며 실제로 널리 사용되고 있다.
Position
Dec 2007
Position
Dec 2006
Delta in PositionProgramming LanguageRatings
Dec 2007
Delta
Dec 2006
Status
1 1 Java 20.049% +0.14%   A
2 2 C 13.173% -3.44%   A
3 4 (Visual) Basic 10.219% +1.31%   A
4 5 PHP 8.393% -0.14%   A
5 3 C++ 7.871% -2.54%   A
6 7 Python 4.697% +0.93%   A
7 6 Perl 4.383% -2.01%   A
8 8 C# 3.994% +0.82%   A
9 11 Ruby 3.089% +0.76%   A
10 10 JavaScript 2.733% +0.17%   A
11 9 Delphi 2.673% +0.10%   A
12 14 D 1.633% +0.66%   A
13 13 PL/SQL 1.394% +0.05%   A
14 12 SAS 1.393% -0.84%   A
15 18 COBOL 0.894% +0.29%   A-
16 15 ABAP 0.875% -0.03%   A-
17 17 Lisp/Scheme 0.841% +0.20%   A-
18 20 Transact-SQL 0.817% +0.35%   A--
19 19 Pascal 0.791% +0.23%   A--
20 46 Lua 0.771% +0.67%   A-
출처 : http://www.tiobe.com/tpci.htm

D언어는 즉 시스템 프로그래밍을 위한 C/C++의 강력함과 최근의 언어들이 가지고 있는 Object orinted, template metaprogramming style 등의 multiparadigm을 지원하는 언어다.

D언어는 statically type를 지원하며 native 코드로 컴파일 되어서 실행된다.

D 언어 설치

Windows, Linux 모두에 대한 버젼이 있는데, 환경이 Linux인 관계로 Linux를 기준으로 설명하도록 하겠다.

  • http://www.digitalmars.com/d/download.html 에서 d 언어 컴파일러를 다운로드 받을 수 있다.
  • D언어 전용컴파일인 dmd와 GCC를 위한 GDC두가지 버젼이 있다.
  • gcc의 프론트엔드인 GDC를 받아서 테스트를 하기로 했다.
  • 다운로드 받은 다음에 /usr/local/gdc 에 압축을 풀었다.
  • 다음과 같이 LD_LIBRARY_PATHPATH 환경변수를 수정했다.

    # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gdc/lib
    # export PATH=$PATH:/usr/local/gdc/bin

이제 wc의 d버젼을 가지고 테스트 해보았다.
import std.stdio;
import std.stream;
import std.date;

int main (char[][] args)
{
int w_total;
int l_total;
ulong c_total;
int[char[]] dictionary;

writefln(" lines words bytes file");
foreach (arg; args[1 .. args.length])
{
int w_cnt, l_cnt;
bool inword;

auto c_cnt = std.file.getSize(arg);
if (c_cnt < 10_000_000)
{
size_t wstart;
auto input = cast(char[])std.file.read(arg);

foreach (j, c; input)
{
if (c == '\n')
++l_cnt;
if (c >= '0' && c <= '9')
{
}
else if (c >= 'a' && c <= 'z' ||
c >= 'A' && c <= 'Z')
{
if (!inword)
{
wstart = j;
inword = true;
++w_cnt;
}
}
else if (inword)
{ auto word = input[wstart .. j];

dictionary[word]++;
inword = false;
}
}
if (inword)
{ auto w = input[wstart .. input.length];
dictionary[w]++;
}
}
else
{
auto f = new BufferedFile(arg);
char[] buf;

while (!f.eof())
{ char c;

f.read(c);
if (c == '\n')
++l_cnt;
if (c >= '0' && c <= '9')
{
if (inword)
buf ~= c;
}
else if (c >= 'a' && c <= 'z' ||
c >= 'A' && c <= 'Z')
{
if (!inword)
{
buf.length = 1;
buf[0] = c;
inword = 1;
++w_cnt;
}
else
buf ~= c;
}
else if (inword)
{
if (++dictionary[buf] == 1)
buf = null;
inword = 0;
}
}
if (inword)
{
dictionary[buf]++;
}
}
writefln("%8s%8s%8s %s\n", l_cnt, w_cnt, c_cnt, arg);
l_total += l_cnt;
w_total += w_cnt;
c_total += c_cnt;
}

if (args.length > 2)
{
writefln("--------------------------------------\n%8s%8s%8s total",
l_total, w_total, c_total);
}

writefln("--------------------------------------");

foreach (word1; dictionary.keys.sort)
{
writefln("%3s %s", dictionary[word1], word1);
}
writefln(toDateString(getUTCtime()));
return 0;
}

컴파일과 실행은 매우 간단했다.
# gdc -o wc wc.d
# ./wc wc.d
lines words bytes file
114 234 2922 wc.d

--------------------------------------
2 A
1 BufferedFile
2 Z
....
Mon Jan 29 2007

'S/W 개발 > ETC' 카테고리의 다른 글

URL Helper  (0) 2007.12.06
D 언어 소개  (0) 2007.12.06
Manifest 적용하기..  (0) 2007.12.06
두 점 사이의 각도 구하기  (0) 2007.12.06
아래 내용을 파일로 만들어 실행 파일에 있는곳에 집어 넣으면 간단히 해결된다...

VC에서 몇개 설정해야 되던걸 이렇게 간단히 해결할 수 있다니... ㅠㅠ...

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-     <assemblyxmlns="urn:schemas-microsoft-com:asm.v1"manifestVersion="1.0">
      <assemblyIdentity processorArchitecture="*"version="5.1.0.0"type="win32"name="Microsoft.Windows.Shell.shell32"/>
      <description>Windows Shell</description>
-     <dependency>
-     <dependentAssembly>
      <assemblyIdentity type="win32"name="Microsoft.Windows.Common-Controls"version="6.0.0.0"publicKeyToken="6595b64144ccf1df"language="*"processorArchitecture="*"/>
  </dependentAssembly>
   </dependency>
</assembly>

이 내용을 복사해서 "실행파일.exe.manifest"로 만들어 실행파일이 있는곳에 집어 넣으면 끝....
-------------------------------------------------------------------------------------
이런 소스가 귀찮다면... 볼랜드의 컴포넌트중.. XP Manifest 클래스를 떨어뜨려주기만해도.. 됨...
활성화만 시켜주면 바로 적용됨...

'S/W 개발 > ETC' 카테고리의 다른 글

D 언어 소개  (0) 2007.12.06
Manifest 적용하기..  (0) 2007.12.06
두 점 사이의 각도 구하기  (0) 2007.12.06
문자열 처리 함수  (0) 2007.12.06


60분법 : 일반적으로 각의 크기를 나타내는 방법

● 호도법 : 원의 크기와는 관계없이 호의 길이와 반지름의 길이의 비가 일정하다는 원리를 이용하여, 이 비로 각의 크기를 나타내는 방법

 


반지름의 길이가 r인 원에서 크기가 θ인 중심각에 대한 호의 길이를 l이라고 하면,
l과 r의 비 l/r은 원의 크기에 관계없이 항상 일정하므로, ∠AOB의 크기를

 

l/r 라디안(radian)

으로 나타낼 수 있다.

즉, 반지름의 길이와 호 길이가 같을 경우  중심각의 크기는 1 라디안이다

 

180°= πr /r 라디안 = π 라디안

 

atan2() 함수는 라디안 값을 반환한다.



 
 

 

#include

#include


void main()

{

        double dX = 10;

        double dY = -10;

 

        printf("%lf\n", atan2( dY, dX ) * 180 / 3.14159265);

}

'S/W 개발 > ETC' 카테고리의 다른 글

Manifest 적용하기..  (0) 2007.12.06
두 점 사이의 각도 구하기  (0) 2007.12.06
문자열 처리 함수  (0) 2007.12.06
윈도우 간단 메시지 보내기  (0) 2007.12.06
** 문자열 처리 함수 **

#include <string.h>


1) 문자열의 길이 측정(strlen)
    strlen(문자열)

2) 문자열 결합(strcat)
    char *ptr;
    ptr = strcat(문자열, 문자열2)

3) 문자열 비교(strcmp)

    int i;
    i = strcmp(문자열, 문자열2)
    i == 0 <--- 같다.
    i != 1 같지 않다.

4) 문자열 복사(strcpy)

    char *ptr;
    strcpy(문자열, 문자열2)|
    문자열2를 문자열로 복사

5) 문자열 변환(atoi, atol, atof)

    atoi -> 정수
    atol -> long
    atof -> 부동 소수점.    

    long b; float c;
    int a;
    a = atoi("1234");
    b = atol("-544334");
    c = atof("43.5456);

6) 문자열 교환 함수 (str_swap)

    void str_cpy(char *ptr1, char *ptr2)
    {
       while(*ptr2)
        *ptr1++ = *ptr2++;
        *ptr1 = NULL;
    }

    void str_swap(char *a, char *b)
    {
       char temp[255];
       str_cpy(temp, a);
       str_cpy(a, b);
       str_cpy(b, temp);
    }

7) 문자열 내에서 특정 문자의 개수를 카운트 하는 함수(char_cnt)

    int char_cnt(char *ptr, char ch)
    {
        int i = 0;
        while(*ptr)
         if(*ptr++ == ch)
            i++;
        return(i);
    } 

8) 문자열 내의 특정 문자를 다른 문자로 바꾸는 함수(str_chg)

    int str_chg(char *ptr, char ch1, char ch2)
    {
       while(*ptr)
       {
        if(*ptr == ch1)
           *ptr = ch2;
           ptr++;
       }
    }

9) 문자열 내의 특정 문자를 탐색(str_fine)

    char *str_find(char *ptr, char ch)
    {
       while(*ptr)
       {
        if(*ptr == ch)
           return(ptr);
        ptr++;
       }
       return((char *)(-1));
    }

10) 문자열 내의 소문자를 대문자로 바꾸는 함수(str_upp)

    void str_upp(char *ptr)
    {
       while(*ptr)
       {
        if(islower(*ptr))
           *ptr = toupper(*ptr);
        ptr++;
        }
    }

11) 문자열 내의 대문자를 소문자로 바꾸는 함수(str_low)

    void str_low(char *ptr)
    {
       while(*ptr)
       {
        if(isupper(*ptr))
           *ptr = tolower(*ptr);
        ptr++;
       }
    }

12) 대문자와 소문자 상호 교환 함수(str_case)

    void str_case(char *ptr)
    {
       while(*ptr)
       {
        if(isupper(*ptr))
           *ptr = tolower(*ptr);
        else if(islower(*ptr)
           *ptr = toupper(*ptr);
        ptr++;
       }
    }

13) 각 문장의 첫 문자만 대문자로 교환하는 함수(str_fst)

    void str_fst(char *ptr)
    {
        if(islower(*ptr))
        *ptr = toupper(*ptr);
        while(*ptr)
        {
           if(*ptr == '.')
          {
           ptr++;
           while(*ptr == ' ')
            ptr++;
           if(islower(*ptr))
            *ptr = toupper(*ptr);
          }
        }
        ptr++;
    }

14) 문자열 내의 지정한 위치에 다른 문자열을 삽입하는 함수(str_ins)

    char *str_ins(char ptr1[], char ptr2[],int t)
    {
       char temp[255];
       int i, j, k;
       if(t>=str_len(ptr1) return (-1);  
       for(k=0; i=0; i<t; i++; k++)
        temp[k] = ptr1[i];  

       for(j=0; ptr2[j] !=NULL; j++, k++)  
        temp[k] = ptr2[j];

       while(ptrl1[i])
        temp[k++] = ptr1[i++];

       temp[k] = NULL;
    }

15) 문자열 앞에 지정한 개수 만큼의 공백을 추가하는 함수(str_blk)

    void str_blk(char ptr[], int t)
    {
       static char temp[255];
       int i;
       for(i = 0; i<t; i++)
        temp[i] = BLANK;
       temp[i] = NULL;
       str_cat(temp ptr);
       str_cpy(ptr, temp);
    }

16) 문자열 내의 모든 공백을 삭제하는 함수(rmv_blk)

    void rmv_blk(char ptrp[])
    {
       char temp[255];
       int i, k;

       for(i=0, k=0; ptr[i] != NULL; i++)
        if(ptr[i] != BLANK)
           temp[k++] = ptr[i];
       temp[k] = NULL;
       str_cpy(ptr, temp);
    }

17) 문자열 내에서 원하는 개수 만큼 문자를 삭제하는 함수(str_rmv)

    void str_rmv(char *ptr, int loc, int count)
    {
       int len, i, j;
       len = str_len(ptr);
       if(loc >= len)
        return (-1);

       if(loc + count <= len)
       {
        j = loc + count;
        for(i=loc; ptr[j] != 0; i++)
        {
           ptr[i] = ptr[j];
           j++;
        }
            ptr[i] = NULL;
       }
       else
        ptr[loc] = NULL;
    }

18) 특정한 문자열이 기억된 위치를 계산하는 함수(str_loc)

    int str_loc(char ptr1[], char ptr2[])
    {
       int i, j, k;
       for(i=0; ptr1[i] != NULL; i++)
        for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
           return (i);
       return (-1);
    }


19) 특정한 문자열이 나온 개수를 카운트 하는 함수(str_cnt)

    int str_cnt(char ptr1[], char ptr2[])
    {
       int i, j, k;
       int count = 0;
       for(i=0; ptr1[i] != NULL; i++)
        for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
           if(ptr2[k+1] == NULL)
           {
            count++;
            break;
           }
        return ((count == 0) ? -1 : count);
    }

'S/W 개발 > ETC' 카테고리의 다른 글

두 점 사이의 각도 구하기  (0) 2007.12.06
문자열 처리 함수  (0) 2007.12.06
윈도우 간단 메시지 보내기  (0) 2007.12.06
문자 추출 및 형변환시 사용하는 함수들..  (0) 2007.12.06

+ Recent posts

티스토리 툴바