노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.

'분류 전체보기'에 해당되는 글 1005건

  1. 2009.05.16 FOR 명령 6
  2. 2009.05.16 아크로에디트 : 배치파일 주석 문법 강조 기능
  3. 2009.05.15 스프링노트 : 공개 및 비공개 설정에서 이상한 점
  4. 2009.05.14 스프링노트 : 일부 글자 속성이 제대로 지정되지 않는 벌레
  5. 2009.05.13 윈도7, VMWare에 설치하기 2
  6. 2009.05.13 윈도7 게스트OS에서 버추얼PC 가상머신 확장 설치하기
  7. 2009.05.12 버추얼PC 설정 및 윈도7 설치하기 1
  8. 2009.05.12 티스토리에서 치환자 출력하기 2
  9. 2009.05.11 내 시스템을 윈도7로 업그레이드할 수 있을까?
  10. 2009.05.10 윈도7, 버추얼박스에 설치하기 2
  11. 2009.05.10 윈도7을 설치하기 위한 버추얼박스 설정 4
  12. 2009.05.10 버추얼박스 v2.2.2 설치 오류 : 한글 경로명 문제 8
  13. 2009.05.09 Windows 7
  14. 2009.05.09 Windows Automated Installation Kit for Windows 7 2
  15. 2009.05.05 GOTO 명령 3
  16. 2009.05.03 환경 변수 2 9
  17. 2009.05.02 환경 변수 1
  18. 2009.05.01 블로그 둘째 달
  19. 2009.04.30 토탈커맨더로 꿀뷰 흉내내기 5
  20. 2009.04.28 V3 계열 백신의 폴더 경로명 표기 벌레
  21. 2009.04.27 스프링노트의 링크 편집 벌레 1
  22. 2009.04.26 스프링노트의 태그 표기 벌레
  23. 2009.04.25 버그리포팅이 무시되는 경우
  24. 2009.04.24 DOS에서 숨김 파일 보기
  25. 2009.04.24 티스토리 이미지 갤러리 문제
  26. 2009.04.23 HxD 2
  27. 2009.04.22 IF 명령 확장 1
  28. 2009.04.21 금칙어 피해가기
  29. 2009.04.18 IF 문자열 4
  30. 2009.04.16 링크와 권리 6


들어가며

FOR 명령은 IF 명령과 함께 배치파일에서 지원하는 제어 명령이다. 또한 윈도XP는 도스의 그것보다 훨씬 강력한 기능을 제공하고 있다.

말뜻

FOR 명령에 쓰이는 for가 어떤 뜻에서 나왔는지를 알 수 없었다.

FOR 기본 문법

명령줄에서 FOR 사용

if 명령과 마찬가지로 FOR 명령도 명령줄에서 바로 쓸 수 있다.

  1. FOR %I IN (CD PATH VER) DO %I

아주 짧지만 분명히 잘 동작하며, FOR 명령의 기본 사용법을 잘 나타내고 있다.

FOR 명령의 기본 사용법은 다음과 같다.

FOR %변수 IN (집합) DO 명령어 [명령어 매개변수]

그런데 앞서 보인 코드에서는 명령어 부분이 생략되어 있는 특이한 경우이다. 물론 변수를 명령어 대신 사용하고 있기 때문이다.

모든 형식을 갖추어 FOR 명령을 사용한다면 다음과 같은 방법도 가능하다.

  1. FOR %I IN (%PATH%) DO ECHO %I

위의 코드는 PATH를 한 줄에 하나씩 보여준다.

  1. FOR %I IN (CD PATH VER) DO ECHO %I

위의 코드는 집합에 있는 3개 인자(CD PATH VER)을 ECHO 명령으로 출력하는 구문이다.

기본 문법

명령줄에서 다음과 같이 입력하면 기본 사용법을 알 수 있다.

  1. FOR /?

명령줄에서 사용하는 것과 배치파일에서 사용하는 방법에서 조금 차이가 있다.

FOR %변수 IN (집합) DO 명령어 [명령어 매개변수]

위의 사용법은 명령줄에서 사용하는 방법이다. 그런데 배치파일에서는 아래와 같이 사용해야 한다.

FOR %%변수 IN (집합) DO 명령어 [명령어 매개변수]

% 기호가 하나이냐 둘이냐에 따라 사용하는 곳이 달라진다. 이때 %변수는 주로 %I (퍼센트-대문자 아이)로 나타내는 때가 많으며, %I의 경우 대문자와 소문자를 구별하므로 주의해야 한다. 또한 1문자로 된 변수라면 0부터 9까지를 제외하면 모든 영문자를 사용할 수 있다. 대문자와 소문자를 구분하므로 총 52개를 사용할 수 있습니다.

예제

FOR문은 단순한 구조로 반복되는 작업에 자주 쓰인다.
윈도XP 업데이트 파일(핫픽스 파일)을 윈도XP에 통합하려고 할 때에는 그 파일명이 WindowsXP-KB*.exe와 같은 꼴을 이루게 된다. 이럴 때 FOR 구문을 이용하면 쉽게 할 수 있다.

  1. @echo off
  2. SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
  3. ECHO 윈도XP 복사본의 I386이 있는 디렉터리는?
  4. SET /P WORK=
  5. FOR %%I IN (WindowsXP-KB*.exe) DO %%I /integrate:%WORK% /nobackup /overwriteoem

위의 내용대로라면 중간에 한 차례 사용자 입력이 필요하지만, 처음부터 다음과 같이 지정해도 된다.

  1. @echo off
  2. FOR %%I IN (WindowsXP-KB*.exe) DO %%I /integrate:C:\WXP\i386 /nobackup /overwriteoem

이렇게 해도 몇몇 파일은 여전히 통합되지 않고 있으나, 하나하나 작업할 때에 비한다면 작업량이 매우 줄어든다. 더구나 이 배치파일은 나중에 재활용할 수 있다.

만약에 설치본에 통합하는 것이 아니라, 윈도XP를 설치한 뒤에 핫픽스만 따로 설치한다고 가정하면 위의 배치파일을 다음과 같이 고치면 된다.

  1. @echo off
  2. FOR %%I IN (WindowsXP-KB*.exe) DO %%I /nobackup /overwriteoem /quite /norestart

다음 예고

FOR 명령을 대해 좀 더 자세히 알아보자.
FOR 명령은 도스의 경우와 판이하게 달라져서 알면 아주 유용할 수도 있기 때문에 자세히 알아볼 필요가 있다.

이 글은 스프링노트에서 작성되었습니다.


'스크립트 > 배치파일' 카테고리의 다른 글

FOR 명령 확장 2  (3) 2009.07.16
FOR 명령 확장 1  (2) 2009.06.17
GOTO 명령  (3) 2009.05.05
IF 명령 확장  (1) 2009.04.22
IF 문자열  (4) 2009.04.18
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

아크로에디트snoopy 님윈도우 7 언어팩 통합/삭제 가이드에 나타난 사항을 배치파일로 만들다가 벌레를 하나 발견하였다.

벌레의 유형

단순히 화면 출력을 잘못하는 벌레로 여겨졌다.

하지만 문법 강조에 관한 기능을 살펴본 끝에 대부분 아크로 에디트에 사는 벌레가 아니라, 처음에 문법 강조를 만들 때 해당 문법 강조 설정에 숨어 있던 벌레로 판명났다. 이 설정 파일은 내가 만든 것이 아니라 마소리스 님이 만든 것을 수정해서 쓰고 있었고, 거기에 숨어 있던 벌레였다. 물론 마지막에 가서 아크로에디트에 사는 벌레 하나를 찾을 수 있었다.

벌레 정보

  • 아크로에디트 버전 0.9 / 빌드 0.9.19.84 (2008년 12월 17일자)에서 발견하였고, 이전 버전 확인하지 못하였다.
  • 배치파일 구문 강조에서 나타났다.

벌레의 발견

배치 파일에서 "ECHO Do you want to remove other language package ? [Y/n]"라는 명령문을 입력했다가 다음과 같이 나타나서 벌레가 있음을 알게 되었다.

배치파일 문법 강조 오류

배치파일 문법 강조에서 rem이 나온 행에서 그 뒤로는 모두 주석으로 인식되는 벌레가 있다.

이때 배치파일 문법 강조 설정은 다음과 같다.

배치파일 문법 강조 설정

배치파일 문법 강조 설정.

위에서 보다시피 배치파일 문법 강조에서 행 주석으로 "rem"과 "REM"은 인식하도록 했다(파란색 네모 부분). 그런데 이 부분에서 무언가 잘못된 처리를 하고 있기 때문에 벌레가 나타난다고 여겨진다.

정말로 벌레인가? 1

아무튼 첫 번째 그림에서 129행 부분만을 떼어 내어 여러 가지 측면에서 살펴보았다.

예제 1-1. 맨 처음 발견한 벌레

예제 1-1. 맨 처음 발견한 벌레

예제 1-2. 대문자로 바꾸어도 마찬가지

예제 1-2. 대문자로 바꾸어도 마찬가지

예제 1-3. 큰따옴표(

예제 1-3. 큰따옴표(

예제 1-4. 작은따옴표(' ')로 묶어도 마찬가지

예제 1-4. 작은따옴표(' ')로 묶어도 마찬가지

예제 1-3과 1-4에서는 조금 뜻밖이었다. 보통 큰따옴표나 작은따옴표로 묶이면 문자열로 인식하고, 그럼으로써 행 주석 기호가 인식되지 않아야 하기 때문이다. 그래서 현재의 배치파일 문법 강조 설정에서 문자열 시작 문자(빨간색 네모 부분)에 "' (큰따옴표와 작은따옴표를 연속으로 입력)라고 지정함으로써 예제 1-3과 1-4를 해결하였다. 그 그림은 다음과 같다.

예제 2-1. 작은따옴표로 문자열 처리

예제 2-1. 작은따옴표로 문자열 처리

예제 2-1. 큰따옴표로 문자열 처리

예제 2-1. 큰따옴표로 문자열 처리

결국 예제 1-1과 1-2는 벌레로 여겨지지만, 예제 1-3과 1-4는 벌레가 아니었다.

정말로 벌레인가? 2

앞서 벌레로 여겨진 예제 1-1과 1-2를 다시 살펴보자.

예제 1-1. 맨 처음 발견한 벌레

예제 1-1. 맨 처음 발견한 벌레

여기에서 하나 짚고 넘어가야 할 문제가 있었다. 바로 배치파일에서 행 주석을 나타내는 지시어인 REM명령어라는 사실이다. 이게 왜 중요하냐고? 명령어 다음에 한 칸 이상의 공백이 있어야 하기 때문에 중요하다.

수정한 배치파일 문법 강조 설정

수정한 배치파일 문법 강조 설정.

위의 그림처럼 행 주석을 "rem"과 "REM"에서 "rem "과 "REM "(뒤에 공백 한 칸 있음)로 바꾸었다.

예제 3-1.

예제 3-1.

예제 3-2.

예제 3-2.

에제 3-2에서는 왜 주석으로 인식될까? 이는 당연하다. 명령어처럼 인식하도록 뒤에 공백을 넣었지만, 실제로 명령어 인식되지는 않았기 때문이다. 아크로에디트를 수정하지 않고 문법 강조 설정을 수정해서는 여기가 한계인 셈이다.

아무튼 예제 3-2에서 아크로에디트가 가진 벌레 하나를 찾을 수 있었다.

또 다른 상황

아크로에디트 구문 강조 오류 문서에서 살펴본 벌레를 상기하자. 그 글에서는 아크로에디트에서 rEm 등이 주석으로 처리되지 않는 벌레가 있음을 보였다. 여기에서도 그 벌레가 적용되는지를 살펴보았다.

예제 4-1.

예제 4-1.

예제 4-2.

예제 4-2.

벌레와 벌레가 만나자 한쪽은 작동하지 못하게 되었다.

파일

마소리스 님이 만든 배치파일 문법 강조 파일은 더 이상 유효하지 않다고 생각하여 이번에 수정한 파일을 첨부한다.

  • batch.stx (5174 바이트)
  • CRC32 : 857C74D9
  • MD5 : ac9cc62baa2f4d56330eef3449b45101
  • SHA : ab6d03405ff9c649f15ec5bb65745ad2006ff66b

제작자/제공자의 답변

2009년 5월 16일 현재 AcroEdit - 질문 및 답변에 글을 올린 상태이다.

관련 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

지난 5월 10일 스프링노트에서 글을 작성하다가 발견한 벌레이다. 스프링노트에서 일부 글자 속성이 제대로 지정되지 않는 벌레와 거의 비슷한 때에 발견하였고, 그 벌레와는 달리 재현이 가능했다. 그래서 몇 차례 더 확인하여 지금에야 올리게 되었다. 물론 윈도7 RC에 신경 쓰다가 늦은 감도 없지 않아 있다.

벌레의 유형

  • 주변 환경이 바뀌어도 꿋꿋하게 자기 본모습(?)을 지키는 벌레이다.
    공개/비공개 설정이 바뀌었음에도 이전 설정을 그대로 따르는 이상한 벌레이다.
    1. 공개/비공개 설정이 바뀌어도 네비게이션 아이콘은 그대로 유지하는 벌레
    2. 공개/비공개 설정이 바뀌어도 메뉴를 그대로 유지하는 벌레
  • 주변 환경에 상관없이 바꾸지 말라니까 바꾸는 벌레이다.
    1. [CC 라이센스 설정하기] 레이어에서 아무 작업 없이 [적용]을 클릭하면 CC 라이센스를 바꾸는 벌레

벌레의 발견 1 : 공개/비공개 상태

지난 5월 10일 스프링노트에서 글을 작성하다가 발견한 벌레이다.

나는 스프링노트에서 글을 작성할 때 먼저 비공개로 만든다. 그 뒤에 글 내용을 모두 입력하고 그래픽 이미지를 첨부한 뒤에 공개 상태로 바꾼다. 바로 그때 약간의 오류가 발생하고 있었다.

우선 비공개 상태인 글의 화면을 보자.

비공개 상태의 화면

비공개 상태의 화면

위 그림에서 눈여겨 보아야 할 것은 붉은 사각형() 표시가 된 부분이다.

위의 두 부분에서 벌레가 살고 있다.

공개/비공개 아이콘을 클릭했을 때

먼저 제목 표시 옆에 있는 파란 자물쇠(비공개 표시 아이콘)을 보자. 위 붉은 사각형 표시가 있는 그림 두 개 가운데 오른쪽 그림이다. 그 아이콘을 클릭하면 공개/비공개를 바꿀 수 있는 화면이 나타난다.

[이 페이지를 공개합니다.]라는 레이어가 나타난 화면

[이 페이지를 공개합니다.]라는 레이어가 나타난 화면

이 페이지를 공개합니다.라고 된 레이어만 따로 보면 다음과 같다.

[이 페이지를 공개합니다.] 레이어

[이 페이지를 공개합니다.] 레이어

위 화면에서 바로 [공개하기] 단추를 클릭해도 공개가 되며, 이때에도 이 글에서 소개하는 벌레를 만날 수 있다. 또한 옵션을 클릭해서 펼쳐 보면 다음과 같다.

옵션을 클릭했을 때

옵션을 클릭했을 때

라이선스에 대한 항목을 설정한 뒤

라이선스에 대한 항목을 설정한 뒤

왼쪽은 옵션을 클릭했을 때의 화면이고, 오른쪽은 라이선스에 대한 항목을 설정한 뒤의 화면이다. 설정을 마쳤으면 [공개하기] 단추를 클릭하자.

공개/비공개 아이콘을 선택하여 공개/비공개를 설정했을 때 나타나는 오류 화면

공개/비공개 아이콘을 선택하여 공개/비공개를 설정했을 때 나타나는 오류 화면

분명히 위 그림처럼 이 페이지가 공개되었습니다.라는 메시지를 보여준다. 하지만 조금 이상함을 알 수 있다. 바로 붉은 사각형() 표시가 된 부분이다.

앞에서는 이 두 부분의 아이콘이 비슷했다. 둘 다 비공개를 뜻하는 파란 자물쇠 모양이었지만, 이제 달라졌다. 네비게이션 부분(왼쪽 그림)에서는 여전히 파란 자물쇠(비공개 표시)인데, 편집 부분에서는 주황색 자물쇠(공개 표시)로 바뀌어 있다.

비공개에서 공개로 바뀌면 네비게이션에서도 바뀌어야 함에도 불구하고 본래 모습을 그대로 유지하고 있는 벌레이다.

이때 공개에서 비공개로 바뀌어도 결과적으로 이와 비슷한 벌레를 만날 수 있다.

메뉴에서 공개/비공개 설정하기를 선택했을 때

이 벌레는 메뉴에서 공개/비공개 설정하기를 선택했을 때에도 발견할 수 있다.

메뉴를 선택하여 공개/비공개를 설정하기 전의 화면

메뉴를 선택하여 공개/비공개를 설정하기 전의 화면

위와 같이 메뉴에서 공개/비공개를 설정할 수 있다.

그러면 위에서 보았던 이 페이지를 공개합니다.라는 레이어를 볼 수 있고, 그때 [공개하기]를 선택하면 앞서 보았던 벌레를 다시 발견할 수 있다.

메뉴를 선택하여 공개/비공개를 설정한 뒤에 오류가 나타난 화면

메뉴를 선택하여 공개/비공개를 설정한 뒤에 오류가 나타난 화면

벌레의 발견 2 : 공개/비공개 변경 시 메뉴

앞서 공개한 그림 메뉴를 선택하여 공개/비공개를 설정하기 전의 화면메뉴를 선택하여 공개/비공개를 설정한 뒤에 오류가 나타난 화면를 살펴보자

그 두 그림은 공개/비공개 아이콘을 제외하면 별다른 문제가 없어 보인다. 그런데 메뉴 부분에 벌레가 숨어 있었다.

벌레가 숨어 있는 비공개 상태의 메뉴 화면과 공개 상태의 메뉴 화면

왼쪽은 그림 메뉴를 선택하여 공개/비공개를 설정하기 전의 화면이고, 오른쪽은 그림 메뉴를 선택하여 공개/비공개를 설정한 뒤에 오류가 나타난 화면이다.

이 경우에 그림 메뉴를 선택하여 공개/비공개를 설정하기 전의 화면은 아직 비공개 상태이고 그림 메뉴를 선택하여 공개/비공개를 설정한 뒤에 오류가 나타난 화면공개 상태이다. 처음에는 비공개 상태와 공개 상태의 메뉴가 같다고 생각했으나, 다른 글을 쓰다 보니 두 경우의 메뉴가 서로 다름을 알게 되었다.

비공개 상태의 메뉴 화면

비공개 상태의 메뉴 화면

공개 상태의 메뉴 화면

공개 상태의 메뉴 화면

위 두 그림은 비공개 상태와 공개 상태의 메뉴이다. 공개 상태일 때 메뉴 항목이 하나(CC 라이센스 설정) 더 많다. 위에서 보여준 벌레가 숨어 있는 비공개 상태의 메뉴 화면과 공개 상태의 메뉴 화면과는 다른 상황이다.

이와 같이 비공개 상태에서 공개 상태로 바꾸면 당연히 그에 맞추어 CC 라이센스 설정이 나타나야 함에도 어찌된 영문인지 나타나지 않고 있다. 다시 말해 나타나야 할 CC 라이센스 설정을 보여주지 않는 벌레이다. 반대로 공개 상태에서 비공개 상태로 바꾸면 감추어야 할 CC 라이센스 설정을 감추지 않는 벌레이기도 하다.

벌레의 발견 3 : CC 라이센스 설정

일단 스프링노트의 글을 공개 상태로 바꾸었다. 메뉴에서 CC 라이센스 설정을 클릭하였다.

이때 오른쪽 아래 귀퉁이의 CCL 표시를 잘 살펴봐야 한다.

메뉴에서 CC 라이센스 설정을 클릭. 이때 오른쪽 아래 귀퉁이의 CCL 표시를 잘 살펴봐야 한다.

잘 보이지 않을 수 있으므로 따로 떼어내었다.

메뉴 부분만 나타내면 다음과 같다.

[CC 라이센스 설정하기] 레이어가 보이면 Set up a Creative Commons license ▼를 클릭하여 아래로 펼친다.

옵션을 펼치기 전 화면

옵션을 펼치기 전 화면

위 화면에서 [적용]을 클릭해도 벌레가 나타난다.

옵션을 펼친 뒤 화면

옵션을 펼친 뒤 화면

이때 그림 옵션을 펼친 뒤 화면에서 나타난 메시지가 조금 이상하다. 그 그림의 윗부분은 다음과 같다.

그런데 그 아랫부분은 다음과 같다. 이는 분명히 저작자표시 - Changes allowed under same conditions(BY-SA)와는 다르다.

또한 이러한 상세 옵션 화면에서 실수로 [적용] 단추를 클릭하게 되면, CC 라이센스가 바뀌게 된다. 이는 상세 옵션이 나타나지 않은 화면(옵션을 펼치기 전 화면)에서 [적용] 단추를 클릭해도 마찬가지 결과를 보여준다.

옵션을 펼치기 전 화면에서 [적용]을 클릭한 화면.

옵션을 펼치기 전 화면에서 [적용]을 클릭한 화면. 오른쪽 아래 귀퉁이으 CCL 표시가 바뀌어 있다.

CC 라이센스 표시만 따로 살펴보면 다음과 같다.

  • : 공개된 처음 상태의 CC 라이센스 (BY-SA)
  • : 옵션을 펼치기 전 화면에서 [적용]을 클릭한 뒤의 CC 라이센스 (BY-NC)

여기에서 옵션을 펼친 뒤 화면에서는 [적용]을 클릭했을 경우에 CC 라이센스가 바뀐다는 점을 알 수 있다. 하지만 옵션을 펼치기 전 화면에서는 [적용]을 클릭했을 때 CC 라이센스가 바뀐다는 사실을 알 수 없다. 그러므로 실수로 [적용]을 클릭하더라도 CC 라이센스가 바뀌지 않도록 옵션에서 현재의 CC 라이센스로 유지될 필요가 있다.

  • 참고 : 한글맞춤법에 따르면 라이센스가 아니라 라이이다.

제작자/제공자의 답변

2009년 5월 15일 오류를 보고한 상태이다.

관련 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

지난 5월 10일 스프링노트에서 글을 작성하다가 우연히 발견한 벌레이다. 그런데 이 벌레를 무릅쓰고 정상 작동한 것과 같은 결과를 보였더니 사라져 버렸다. 현재 재현은 불가능한 상태이며, 그 원인도 파악하지 못했다.

벌레의 유형

자기가 있어야 할 영역을 구분하지 못하는 벌레이다. 혹시 개념이 출장하지는 않았을까 염려스로운 벌레이기도 하다.

벌레의 발견

5월 10일 새벽에 윈도7을 버추얼박스에 설치하면서 그 설명문을 작성하였다. 그때 발견한 이 벌레를 보는 순간 내가 밤샘을 하느라 착각했다고 생각했다. 하지만 자꾸 반복되었기 때문에 스크린샷을 잡을 수 있었다.

위의 그림에서 Use recommended settings라는 부분을 잘 살펴보자.
그 부분이 가진 특징은 (1) 영문(로마자)이며, (2) 내용 중간에서 줄바꿈이 되어 있고, (3) 숫자 목록을 사용하여 나타내고 있다.

먼저 위와 같이 블럭 설정을 하였다.

<Ctrl+B>를 눌러 강한 강조를 하였으나, 위 그림처럼 윗줄(Use recommended)은 바뀌고 아랫줄(settings)은 바뀌지 않았다.
이 그림처럼 강한 강조 아이콘을 클릭했음에도 결과는 마찬가지였다.

결국 다음과 같이 줄바꿈이 아닌 문단 나누기를 하여 블럭 지정하기로 했다.

일단 문단을 나누고

일단 문단을 나누고

블록을 지정하여 강한 강조를 하였다.

블록을 지정하여 강한 강조를 하였다.

이번에는 내가 원하는 결과가 나타났다.

제작자/제공자의 답변

2009년 5월 14일 오류를 보고한 상태이다. 재현이 불가능하기 때문에 어찌 처리될는지는 알 수 없다. 역시나 재현이 불가능하기 때문에 오류 수정이 어렵다고 한다.

그때가 새벽이라 한창 잠이 올 때였다. 스크린샷을 잡은 것도 지금 생각해보면 비몽사몽간에 했던 일이다. 미처 HTML 코드를 확보하지 못했고, 위의 방법으로 강한 강조를 성공한 뒤에는 재현되지 않았다.

관련 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

VMWare Workstation v6.5.2에 윈도7 RC를 설치하는 과정은 역시 별다를 것이 없었다. 오히려 VMWare Workstation v6.5.2(이하 VMWare)의 설정이 이전 버전과 조금 달라서, 그것이 더 신경 쓰였다. 그러므로 윈도7 RC 설치에 대한 자세한 사항은 버추얼박스에 설치하기를 참조하기 바랍니다. 이 글에서는 VMWare 설정과 그에 따른 주의사항만을 다룹니다.

윈도7 RC는 2009년 5월 13일 현재 한국어 버전은 없으므로 영어 버전(또는 자신이 읽을 수 있는 언어 버전)을 구해서 설치하기 바랍니다.

  • 참고 : 이 문서는 그림이 많으므로 로딩이 늦더라도 참고 기다려 주십시오.

윈도7을 VMWare에 설치하기 위한 요구사항

기본적으로 윈도7의 최소 요구사항 가운데 다음 두 가지를 만족한다고 가정하고 설치하였다.

  • RAM 1G(32비트), RAM 2G(64비트)
  • HDD 16G(32비트), HDD 20G(64비트)

한편 VMWare 버전은 6.5.2(빌드 156735)을 사용하였습니다. 다만 이 버전은 공식적으로 윈도7을 게스트OS로서 지원하지는 않습니다. 자세한 사항은 VMware Workstation 6.5.2 Release Notes를 참조하십시오.

그런데 VMWare v6.5.2는 용량이 큰 편입니다. 다운로드 받았을 때 VMware_Workstation.part1.exe 파일부터 VMware_Workstation.part5.rar 파일까지 5개로 분할 압축되어 있었고, 481 MB (504,804,073 바이트)였습니다. VMware_Workstation.part1.exe 파일을 실행하면 압축을 풀어 VMware-workstation-6.5.2-156735.exe 파일을 생성합니다. 이 파일은 462MB (485,009,416 바이트)인데, 이것을 실행하면 프로그램이 설치됩니다. 설치된 뒤의 용량은 1.10 GB (1,184,983,538 바이트)입니다.

그리고 윈도7 RC 이미지 파일은 미리 구해 놓기 바랍니다. VMWare의 설정이 조금 특이하여 미리 구해놓는 편이 여러 모로 편합니다. 이 글을 읽는 지금 이 순간 윈도7의 이미지가 없다면, 아랫부분을 읽기에 앞서 윈도7의 이미지부터 먼저 구하기 바랍니다.

VMWare 첫 실행 및 가상 머신 만들기

VMWare에 대한 내용은 Workstation Zealot :: Windows 7 RC on VMware Workstation 6.5.2의 내용을 참조하였습니다.

  1. VMWare 첫 실행 화면

    버추얼박스의 화면과는 달리 무언가 있어 보인다. ^^a
  2. 위에서 New Virtual Machine을 클릭하면 New Virtual Machine Wizard(가상머신 마법사)가 실행된다.

    Typical(기본값)을 선택하고 Next를 클릭하면 조금 새로운 과정이 나타난다.
  3. Guest Operating System Installation (게스트OS 설치) 기능이 나타난다. 이번 버전에 추가된 듯한 기능이다. 내가 5.x만 쓰다가 6.x를 이번에 처음 쓰기 때문에 6.0 버전에서 추가되었을 수도 있다.
    아무튼 이 기능은 설정 과정이 끝난 뒤에 바로 운영체제를 설치할 수 있게 미리 지정하는 메뉴이다.

    맨 위의 Installer disc는 자신의 컴퓨터에 장착된 CD/DVD 드라이브를 가리킨다. 이때 시디스페이스 등의 가상CD도 검색해 준다. 그림에 보이는 H 드라이브가 시디스페이스로 만든 가상 드라이브이다.
    가운데 보이는 Installer disc image file (iso)은 CD/DVD 이미지 파일을 가리키며, ISO 이미지만 지원한다.
    맨 아래의 I will install the operating system later는 설정을 끝마친 다음에(나중에) 설치하겠다는 뜻이다.
  4. 우리는 위의 화면에서 여기에서 가운데 Installer disc image file (iso)을 선택한다. 이렇게 하면 설정 작업이 끝나면 이미지 파일을 불러와서 바로 설치해 준다. Installer disc image file (iso)을 선택하면 오른쪽의 Browse가 활성화되는데, 그것을 클릭하여 이미지 파일을 찾으면 된다.
  5. 위의 그림처럼 파일을 찾아서 선택하여 열기를 클릭한다.
  6. 이때 윈도7 RC 이미지를 윈도 비스타(Windows Vista)로 인식하고 있다. 윈도7과 비스타는 여러 모로 비슷하므로 일단 넘어가기로 하자. 어차피 v6.5.2 버전에서는 공식적으로 윈도7을 지원하지 않는다. 또한 이 경우 VMWare의 기능 가운데 하나는 Easy Install(쉬운 설치)를 이용할 수 있다.

    Easy Install(쉬운 설치)이 싫다면 맨 아래의 것을 선택하면 된다.
  7. Easy Install Information(쉬운 설치 정보) 화면이 나타난다. 이것은 Easy Install(쉬운 설치)에 이용할 정보를 미리 VMWare에 알려주는 과정이다. 윈도7 RC를 구하는 과정에서 얻은 제품번호(Product Key) 등을 입력한다. 이때 Full name에 들어있는 기본값은 현재 호스트OS에 로그인한 사용자 이름이다.
  8. 가상머신의 이름(Name the Virtual Machine)을 지정한다. 이때 Virtual machine name의 기본값은 Windows Vista인데, 앞서 윈도 비스타로 인식한 것을 이용하고 있기 때문이다. 이것을 Windows 7 (으)로 바꾸어 주었다. 그렇게 하면 그 아래에 있는 Location (위치)도 자동으로 바뀐다. 참고로 Location의 기본값은 %USERPROFILE%\My Documents\My Virtual Machines\<Virtual machine name> 입니다. %USERPROFILE% 환경변수와 <Virtual machine name>은 사용자에 따라 다릅니다.
  9. 디스크 공간을 할당합니다(Specify Disk Capacity). 이때 VMWare가 비스타의 쉬운 설치를 따르므로 비스타의 설치 크기인 16GB를 기본값을 정하고 있습니다. 이것을 넉넉히 40GB로 바꾸었습니다. 또한 (1) 파일 하나로 가상 디스크를 저장(Store virtual disk as a single file)과 (2) 가상 디스크 파일을 2GB 단위로 분할(Split virtual disk into 2 GB files)이 있습니다. (1)과 (2) 가운데 하나를 선택해야 하며, (1)은 가상 디스크를 파일 하나로 저장한다는 뜻이며, (2)는 파일을 2기가바이트 단위로 분할하여 저장한다는 뜻으로, 호스트OS에서 FAT32 기반의 파일시스템을 사용한다면 반드시 (2)번을 선택해야 합니다.
  10. 가상머신을 만들 준비를 완료했습니다(Ready to Create Virtual Machine). 이때 Finish를 클릭해 버리면 곧 바로 윈도7을 설치하기 시작합니다. 하지만 여기에서 하드웨어 설정 등이 좀 더 필요하므로 클릭하지 말기 바랍니다. 추가적인 하드웨어 설정은 Customize Hardware... 단추를 클릭하면 됩니다. 그 아래에 있는 Power on this virtual machine after creation은 가상머신을 만든 뒤에 곧바로 그 가상머신을 기동한다는 뜻입니다. 그런데 현재 설정에서는 첫 번째 기동에서 운영체제를 설치하게 해 놓았으므로 하드웨어 설정을 먼저 하는 편이 낫습니다.

VMWare 하드웨어 추가 설정

하드웨어 설정(Customize Hardware)이 꼭 필요한 이유는 현재 VMWare에서 인식하고 있는 게스트OS가 윈도 비스타인데, 우리가 설치하고자 하는 게스트OS는 윈도7이기 때문입니다. 다시 말해 VMWare에서 자동으로 설정해 둔 값은 윈도 비스타를 위한 값이지 윈도7을 위한 값이 아니기 때문에 약간의 조정이 필요하다는 뜻입니다.
하지만 막상 설정을 하고 보니 윈도 비스타에 맞춘 설정을 변경할 필요는 없어 보입니다. 이는 윈도 비스타와 윈도7의 하드웨어 요구사항이 거의 같기 때문에 일어난 일입니다. 그저 VMWare에서 지원하지 않는 운영체제를 설치하는 방법에는 이런 것도 있다는 정도로 이해해 주셨으면 합니다.

  1. 메모리 설정(Memory)은 1024 MB로 설정한다. 이때 1740 MB는 현재 사용할 수 있는 최대값이다.
  2. 혹시나 아까 CD/DVD 설정을 하지 않은 사람은 New CD/DVD (IDE)를 클릭하여 설정할 수 있습니다.

하드웨어 설정을 끝마치면 OK를 클릭하여 Ready to Create Virtual Machine 화면으로 되돌아가서, Fnish를 클릭하여 윈도7 설치를 시작합니다.

윈도7 RC 설치 시작

  1. 앞 장에서 설명한 바와 같이 CD 이미지를 설정하여 설치 과정을 시작합니다.
  2. 잠시 기다리면, 버추얼박스에서 설치할 때처럼 VMWare의 가상머신 창에 윈도7 RC를 설치하는 과정이 표시되면서 창의 크기가 두어 차례 바뀐다. 처음에서 1024×768 화면이고, 나중에는 800×600 화면이다. 버추얼박스 때와 마찬가지로 정상적인 과정입니다. 간혹 화면이 약간 깨지기도 한다.

    위의 그림은 1024×768 화면입니다.

    위 그림은 800×600 화면입니다. 그런데 VMWare에서는 위의 그림처럼 가끔 화면이 깨집니다. 하지만 별 문제 없이 설치는 됩니다. 원인이 무엇인지는 알 수 없었습니다.
  3. 또한 Easy Install(쉬운 설치) 기능을 이용하기 때문에 정보 수집(Collecting information) 단계까지는 건너뛰게 됩니다. 이 때문에 윈도7 설치에서 조금 더 짧은 시간이 걸립니다. 반면에 기본 정보에 대한 설정이 어떻게 되었는지를 설치 과정에서 알 수 없었습니다.
  4. 여기서부터는 내용이 버추얼박스의 예와 중복됩니다. 윈도7, 버추얼박스에 설치하기를 참고하기 바랍니다. 아래 화면(Set Network Location)이 나오면 마지막 과정만 남은 것입니다.

윈도7 RC 설치 완료

설치를 마치는 데까지 40분 정도 걸렸네요. Easy Install(쉬운 설치) 기능에서 시간이 절약된 만큼 짧게 걸렸다고 보면 됩니다. 버추얼박스 때처럼 상당히 가볍게 움직였습니다. 결국 버추얼PC 2007 SP1만 제대로 동작하지 못한 셈이라고 할까요? VMWare와 버추얼PC가 둘 다 윈도7을 지원하지 않지만, VMWare는 상당히 원활하게 움직여 주었지만, 버추얼PC는 윈도7의 이미지만 버려 놓기에 딱 알맞을 만큼 최악의 성능을 보였습니다.

Easy Install(쉬운 설치) 기능은 시간 단축 외에도 귀찮은 일을 자동으로 처리해 줍니다. 처음에 사용자 정보를 넣는 곳을 자동으로 처리해 주고, 설치를 마친 뒤에는 VMWare Tools를 자동으로 설치해 줍니다. 이것은 버추얼박스의 게스트 확장에 해당합니다. 운영체제를 설치한 뒤에 따로 설치하려면 조금은 번거롭기도 했는데, 그것을 자동으로 해 주는 셈이니 편하기는 합니다.

그러나 Easy Install(쉬운 설치) 기능은 한국어 사용자에게는 그다지 권장할 만하지 않습니다. 언어나 시간 설정이 모두 초기값인 영어와 미국을 기준으로 설치되기 때문에 나중에 다시 설정해야 합니다. Easy Install(쉬운 설치) 기능에서 호스트OS의 설정을 읽어올 수 있었다면 좋았겠지만, 아직까지 그러한 기능은 없어 보입니다. 시간이 촉박하지 않다면 Easy Install(쉬운 설치) 기능은 사용하지 않기를 권합니다.

일단 기본 설정을 최대한 유지한 채 가상머신에 설치하는 설치기는 여기에서 마치겠습니다. 나중에 여유가 생기면 또다른 가상머신 프로그램인 패럴럴스(Parallels)에도 윈도7을 설치해 보고자 합니다.

참고로 설치하는 도중에 도아의 세상사는 이야기에 들렀다가 한국어 언어팩이 유출되었다는 소식을 접했습니다. 그래서 냉큼 설치했죠. 여자의 변신은 무죄...가 아니라 윈도7 영어판의 변신은 무죄였습니다. ^_^b 부팅 메시지는 물론 익스플로러 등의 메뉴도 모두 한글로 나오고 있습니다.

그래서 AIK7(Windows Automated Installation Kit for Windows 7)를 이용한 언어팩 통합을 시도해 보기로 했습니다.

한국어 언어팩 적용 기념 사진 한 장!

한국어 언어팩 적용 기념 사진 한 장!

관련 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

버추얼PC 2007 SP1에 윈도7을 게스트OS로 설치한 뒤에 속도가 너무나 느렸다. 더구나 화면이 뚝뚝 끊겨서 사용은커녕 윈도 종료조차 힘들 지경이었다. 버추얼박스와는 너무나 다른 상황이 발생하여 설치를 마치고 당황했을 정도였다.

결국 가상머신 확장을 설치하기로 했다. 이 가상머신 확장(Virtual Machine Additions)은 버추얼박스의 게스트 확장에 해당한다.

가상머신 확장 설치

버추얼PC를 구동하여 윈도7을 실행한 상태에서 호스트키<오른쪽Alt>를 눌러 가상머신에서 마우스 포인터를 그 바깥으로 꺼낸 뒤에 메뉴를 클릭하여 다음 그림과 같이 선택하면 된다. 간단히 <오른쪽Alt+i>를 눌러도 된다.

잠시 후에 아래와 같은 자동실행(AutoPlay) 화면이 나타난다. Run Setup.exe를 클릭하면 설치 프로그램이 실행된다.

사용자 계정 컨트롤(User Account Control; UAC)에서 아래 그림처럼 물음표가 그려진 방패 옆의 영어 문장이 있다. 이것은 "해당 프로그램이 이 컴퓨터의 설정을 변경하려는데, 실행하겠는가?"라는 물음이다. 기본값은 No, 하지만 여기에서는 Yes를 클릭한다.

윈도 인스톨러(Windows Installer)가 실행된다.

그런데 영문 윈도7 RC인데도 한글 설치 프로그램이 실행되었다. 이는 전혀 예상하지 못한 상황이다. 아마도 윈도7에서 새롭게 추가된 기능으로 보인다. 이는 윈도7 RC를 설치할 때 시간 및 통화 형식(Time and currency format)을 한국어/한국(Korean (Korea))로 설정했기 때문으로 여겨진다.

아무튼 프로그램 설치를 계속하였다.

설치를 마치자 재부팅하겠느냐고 물어오자 를 클릭하였다.

얼마나 빨라졌나?

유감스럽게도 그다지 빨라졌다는 느낌을 받지 못했다. 이것을 설치하면 내심으로는 윈도XP를 버추얼PC에 설치한 뒤 가상머신 확장을 설치하면 상당히 빨라진 경험을 했기 때문에 이번에도 기대를 했었다. 하지만 프로그램 실행에서 빨라졌다고 보기는 힘들었다. 다만 시작 단추를 클릭했을 때 메뉴가 상당히 빨리 뜨고 또한 화면 끊김이 줄어들어서 보기는 좋았다.

그러나 이것을 사용하기에는 무리가 있어 보인다.

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

버추얼PC 2007 SP1에 윈도7 RC를 설치하는 과정에 대해서는 그다지 기술할 내용이 없으며, 자세한 사항은 버추얼박스에 설치하기를 참조하기 바랍니다. 이 글에서는 버추얼PC 설정과 그에 따른 설치 시의 주의사항만을 다룹니다.

윈도7 RC는 2009년 5월 12일 현재 한국어 버전은 없으므로 영어 버전(또는 자신이 읽을 수 있는 언어 버전)을 구해서 설치하기 바랍니다.

  • 참고 : 이 문서는 그림이 많으므로 로딩이 늦더라도 참고 기다려 주십시오.

윈도7을 버추얼PC에 설치하기 위한 요구사항

기본적으로 윈도7의 최소 요구사항 가운데 다음 두 가지를 만족한다고 가정하고 설치하였다.

  • RAM 1G(32비트), RAM 2G(64비트)
  • HDD 16G(32비트), HDD 20G(64비트)

버추얼PC 버전은 버추얼PC 2007 SP1을 사용하였습니다. 다만 이 버전은 공식적으로 윈도7을 게스트OS로서 지원하지 않습니다. 자세한 사항은 버추얼PC의 도움말에서 Evaluating requirements 항목을 보면 알 수 있습니다. 아래에는 윈도XP SP3만 나타나 있지만, 실제로는 윈도XP SP2도 지원합니다.

버추얼PC 첫 실행 및 가상 머신 만들기

  1. 버추얼PC 첫 실행 화면

    버추얼PC를 처음 실행하면, 곧바로 가상 머신을 만드는 애플릿이 화면에 나타난다. Next를 클릭하여 넘어가자.
  2. 버추얼PC를 처음 사용하는 사람은 두 번째 항목인 Use Default settings to create a virtual machine을 선택한다. 설정의 기본값을 그대로 따르기 때문에 쉽게 가상 머신을 만들 수 있다.
  3. 이름과 위치를 지정하는 화면이 나타난다. 이때 Name가상머신의 이름으로, 각자 자신이 입력하면 된다. 나는 Windows 7이라고 했다. 평소에는 대개 Win7 정도로 넣는 때가 많다. 위치를 지정하지 않으면 기본값이 그대로 적용되며, 지정하고 싶으면 를 클릭하여 지정하면 된다. 참고로 위치의 기본값은 %USERPROFILE%\My Documents\My Virtual Machines\Name (이때 Name은 앞서 지정한 가상머신의 이름이다.)이며, 가상머신의 파일명의 기본값은 %USERPROFILE%\My Documents\My Virtual Machines\Name\Name.vmc 이다.
  4. 위의 작업이 끝나면 아래와 같이 새로운 가상 머신 만들기가 완료되었다는 메시지가 나온다. 이 화면에서 Finish를 클릭하면 곧바로 설정 화면이 나타난다.

    참고로 이렇게 간단히 끝나는 이유는 기본값을 이용하겠다고 했기 때문이다.

버추얼PC 설정

  1. 메모리 설정(Memory)은 1024 MB로 설정한다. 이때 1847 MB는 현재 사용할 수 있는 최대값이다.

  2. 가상 하드디스크 설정에서는 먼저 가상 하드디스크를 만들어야 한다.
  3. 위의 그림에서 Virtual Disk Wizard를 클릭한다. 그러면 아래와 같이 가상 디스크 만들기 마법사가 실행된다.
  4. 현재 존재하는 가상 디스크가 없으므로 Create a new Virtual disk를 선택하여 새로운 디스크를 만들어야 한다.
  5. 가상 디스크 형식(Virtual Disk Type)은 하드디스크(A virtual hard disk)를 선택한다.
  6. 가상 하드디스크 위치를 지정한다. 이때 적당한 이름을 주면 되며, 위치까지 지정하려면 Browse를 선택하여 위치를 지정하면 된다. 참고로 위치의 기본값은 %USERPROFILE%\My Documents\ 이다. 아래의 경우는 %USERPROFILE%\My Documents\Windows 7.vhd 라는 파일이 만들어진다.
  7. 가상 하드디스크 옵션을 선택한다. 권장하는 값은 Dynamically expanding 이며, 기본값으로 선택되어 있다. 이것은 버추얼박스의 동적 확장 저장소와 같은 의미이다.

    • 맨 위에 보이는 Dynamically expanding 항목은 기본값으로 버추얼박스의 동적 확장 저장소와 같다. 처음 만들 경우 1메가바이트도 되지 않으며, 그 가상 디스크에 파일을 복사하거나 저장하게 되면 점차 늘어나다가, 사용자가 지정한 크기가 되면 디스크가 다 찼다는 메시지를 내보내게 된다.
    • 두 번째 Fixed size버추얼박스의 고정 크기 저장소와 같다.
    • 세 번째 Differencing은 설정은 이미 존재하는 가상 하드디스크의 설정대로 하지만, 새롭게 바뀐 내용만 저장하게 된다.
    • 마지막 Linked to a hard disk 항목은 이미 존재하는 실제 하드디스크를 가상 하드디스크로 연결하는 항목이다. 이 부분은 고급 옵션에 해당하므로 나중에 시간 날 때 해보기 바랍니다.
  8. 가상 하드디스크 크기(Virtual Hard Disk Size)를 설정한다. 여기에서는 윈도7 RC 32비트용을 설치할 목적으로 20000 MB(약 20기가바이트)로 설정하였다. 64비트로 설치하려면 조금 더 여유 있게 하기 바란다.

  9. 가상 디스크 만들기를 끝마쳤습니다.
  10. 위에서 Finish를 클릭하면 다음과 같이 방금 만든 가상 디스크가 저장되는 위치와 파일명을 알려준다. 이 위치와 파일명을 기억해야 한다.
  11. 가상머신 설정 화면으로 돌아오게 된다. 이때 Virtual hard disk file:을 선택하고, Browse를 클릭하여 앞서 알려준 파일을 선택한다.

  12. 위에서 가상 디스크를 정상적으로 읽어오면 다음과 같이 경로명이 나타난다.
  13. 위에서 OK를 클릭하여 종료한다. 참고로 가상 CD 이미지를 설정하는 메뉴는 이 설정에 없다. 설정이 정상적으로 끝나면 다음과 같은 화면이 나타난다.

버추얼PC 시작 및 CD/DVD 이미지 읽어오기

바이오스 셋업 들어가기

여기에서 잠깐 버추얼PC의 부팅하면 한 번쯤 바이오스 셋업에 들어가 보기 바란다. Start를 클릭하여 시작하면 곧바로 Del을 눌러 바이오스 셋업으로 들어가서 Boot 메뉴의 Boot Device Priority(부팅 순서)를 살펴보기 바란다. 그 다음에 Exit를 눌러 빠져 나오면 된다.

이 바이오스 셋업은 실제 PC의 셋업과 같으므로 참고하기에 좋다.

처음 Start 하기

  1. 버추얼PC 콘솔 화면에서 처음 Start를 클릭하면 시작할 수 있다. 컴퓨터로 말하면 부팅 과정이며, AMIBIOS를 사용하는 컴퓨터와 거의 같다. 실제로 Del 키를 누르면 바이오스 셋업 화면이 나타난다.
  2. 아무튼 현재 가상 디스크는 아무것도 기록되어 있지 않고, 가상 CD/DVD 설정도 하지 않았기 때문에 부팅 과정이 제대로 이루어질 수 없다. 마지막까지 그대로 두면 다음과 같은 화면이 나타난다.
  3. 위의 메시지는 부팅할 수 없으니 알맞은 부트 장치를 선택하고 재부팅하거나, 그게 아니면 선택한 부트 디바이스에 부트 미디어를 선택하여 재부팅하라는 메시지다.
    여기에서 CD 메뉴에서 Capture ISO Image 를 선택한다.
  4. CD 이미지 선택 화면에서 이미지를 선택한다.
  5. 위에서 열기를 클릭하면 곧바로 부팅 과정이 시작되어 윈도7을 설치하기 시작한다.

바로 설치하기

위의 경우는 처음 Start를 하여 아무것도 없기 때문에 부팅에 실패한 뒤에 CD 이미지를 불러와서 부팅하는 경우이다. 하지만 처음부터 부팅에 실패하지 않고 바로 설치할 수도 있다.

  1. 일단 Start를 클릭하여 가상 머신 화면이 나타나면 <오른쪽 Alt+P>를 눌러 잠시 멈춘다. 이때 <오른쪽 Alt>는 버추얼PC에서 사용하는 호스트키이다. <오른쪽 Alt+P>가 작동하지 않는다면 윈도XP 키보드와 버추얼박스 호스트 키 문제를 참고하기 바랍니다.
  2. 그런 다음 CD 메뉴에서 Capture ISO Image 를 선택합니다.
  3. <오른쪽 Alt+P>를 눌러 멈추었던 가상 머신을 재개합니다.
  4. CD 이미지가 정상적으로 적용되었다면 윈도7 이미지로 부팅을 하여 설치 과정을 시작합니다.

윈도7 RC 설치 시작

  1. 앞 장에서 설명한 바와 같이 CD 이미지를 설정하여 설치 과정을 시작합니다.
  2. 잠시 기다리면, 버추얼박스에서 설치할 때처럼 버추얼PC의 가상머신 창에 윈도7 RC를 설치하는 과정이 표시되면서 창의 크기가 두어 차례 바뀐다. 처음에서 1024×768 화면이고, 나중에는 800×600 화면이다. 버추얼박스 때와 마찬가지로 정상적인 과정입니다.


    위의 두 그림은 1024×768 화면입니다.

    위 그림은 800×600 화면입니다. 여기서부터는 창의 틀(프레임)을 제거하고 내용만 스크린샷으로 잡았습니다.
  3. 여기서부터는 내용이 버추얼박스의 예와 중복되므로 생략하겠으니 윈도7, 버추얼박스에 설치하기를 참고하기 바랍니다.
  4. 참고로 간혹 다음과 같은 가상머신 확장(Virtual Machine Additions)을 설치하겠느냐고 묻는 창이 나오면 OK 눌러서 창을 닫으면 됩니다.

윈도7 RC 설치 완료

드디어 설치 완료했습니다. 이번에도 대략 50분 정도 걸렸습니다. 그런데 버추얼박스 때와는 달리 상당히 무겁다는 느낌을 받았습니다. 무겁게 느껴지는 이유는 우선 버추얼PC 2007 SP1은 윈도7을 정식 지원하지 않기 때문이라고 생각합니다. 더구나 게스트 확장도 설치하지 않았지요. 그래서 일단 게스트 확장을 설치하여 속도 향상이 있는지를 확인해 보려고 합니다.

아무튼 버추얼PC 2007 SP1에 윈도7 RC를 설치한 사람들은 대부분 최악의 경험을 하게 되지 않을까 생각합니다. 누군가 익숙하다는 이유로 버추얼PC 2007 SP1에 설치하여 저와 같은 경험을 하게 되지 않을까 걱정입니다. 아무리 마이크로소프트에서 윈도7에서 작동하는 버추얼PC 기반의 XPM(윈도XP 모드)에 전력을 기울이고 있다지만, 기존 사용자에게도 관심을 기울여야 할 것 같습니다. 특히 가상머신 프로그램으로 OS를 설치할 경우 새로운 기능이나 속도 등의 테스트를 하는 경우가 많다는 점에서 더욱 그렇습니다.

그런 이유로 게스트 확장을 설치하여 속도 향상이 있는지를 살펴보았지만, 그다지 속도가 향상되지 않았습니다. 버추얼PC에 윈도7을 설치할 사람은 속도가 느리다는 점을 염두에 두기 바랍니다. 계산기(Calcurator) 프로그램을 클릭한 뒤에 15~16초 뒤에야 계산기가 모두 그려질 정도였습니다.

관련 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.



글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

티스토리에서 스킨 치환자 출력하기 팁은 금칙어 피해가기라는 팁을 응용하였다.

치환자어떤 낱말을 그에 해당하는 다른 글귀나 낱말(치환 대상)로 바뀌도록 미리 정해놓은 예약어를 가리킨다. 이때 그러한 예약어인 치환자를 설명할 때조차 치환 대상으로 바뀌는 일이 종종 있어서, 불편을 끼치기도 한다.

여기에서는 티스토리에서 쓰이는 스킨 치환자가 다른 낱말로 바뀌는 일이 있어서 그것을 설명하는 글 등에서조차 사용할 수 없어 불편을 사고 있고, 그것을 해결하는 팁을 마련하였다.

팁텍

먼저 필유 님의 티스토리에서 치환자 혹은 대괄호([]) 입력하기라는 글을 보자. 그 글은 치환자를 화면에 출력하는 팁을 소개하는 기사인데 몇몇 웹브라우저에서는 정상적으로 보이지 않는 부분이 있다.

모질라 파이어폭스 3 화면

모질라 파이어폭스 3 화면


마이크로소프트 인터넷 익스플로러 6 화면

마이크로소프트 인터넷 익스플로러 6 화면


모질라 파이어폭스의 선택한 부분의 소스 보기 화면

모질라 파이어폭스의 선택한 부분의 소스 보기 화면


문제가 된 부분

문제가 된 부분

위의 마지막 그림에서 티스토리에서 과 같은 형태라는 부분과 그 아랫줄의 로 태그를 닫지라는 부분에서 조금 이상하다.

필유 님의 해결 방법

이 부분에서 필유 님이 무엇인가를 설명하려고 했었음을 알겠으나, 정작 그 정확한 내용은 알 수 없었다. 필유 님은 치환자에 해당하는 글귀를 티스토리 편집기에서 입력하고 싶다는 글을 썼다. 아니 엄밀히 말해 티스토리 편집기에서 입력한 뒤 게시글에서 치환자에 해당하는 글귀가 나타나게 하고 싶다는 뜻이었다.

필유 님이 사용한 방법은 대괄호인 '['과 ']'에 해당하는 HTML 엔터티(HTML entity) 문자로 바꾸어 입력하는 방법이다. 그에 따라 []의 아스키값인 91과 93을 이용하여 각각 &#91;&#93;으로 나타낼 수 있다고 하였다.

그러나 필유 님은 쓰기가 완료된 글에서는 엔터티 문자를 이용한 이 방법에 오류가 발생할 수 있음을 예견하였다.

그래픽 이미지로 바꾸기

금칙어 피해가기 팁에서도 소개했듯이 해당 글귀를 그래픽으로 고치면 된다.

예제 그림

예제 그림

위 예제 그림에서 사용된 글귀를 잘 살펴보기 바랍니다.

HTML 코드 이용하기

금칙어 피해가기 팁에서도 썼지만, 그래픽 이미지를 만들어 올리는 것은 보여주고 싶은 내용을 그대로 그래도 보여줄 수 있다는 점에서 매우 유용하지만, 그래픽 이미지는 텍스트보다 그 크기가 크고, 화면 좌우 폭의 제한이 있는 경우에는 왼쪽이나 오른쪽이 잘리는 경우도 있는 단점이 존재한다. 또한 티스토리처럼 스킨의 변형이 화면 구성(레이아웃)에 영향을 주는 경우에는 의도하지 않은 결과를 보여줄 수도 있다.

이럴 경우 금칙어 피해가기 팁에서 사용한 더미 태그를 이용할 수 있다.

다만 더미 태그를 사용할 때 다음과 같은 목표를 세웠습니다.

  1. 우선 화면에는 예제 그림처럼 보여야 합니다.
  2. 복사했을 때 그 내용(텍스트)이 그대로 복사되어야 합니다. 다만 그 뒤에 숨어 있는 HTML 코드가 제대로 복사되었는지는 고려하지 않습니다.

위의 두 목표를 고려하여 다음과 같이 작업하였습니다.

  1. 일단 티스토리 편집기에서 글을 작성한 뒤에 임시 저장합니다. 위의 글귀는 두 개의 티스토리 스킨 치환자가 있으므로 제대로 나타내지 못합니다.

    티스토리 화면에서 위와 같이 입력하면 소스코드는 다음과 같습니다. 아래 그림에서 분홍빛 밑줄 부분에 치환자가 나타나 있습니다.
  2. 미리 보기를 하면 다음과 같습니다.

    흠, 치환자가 제대로 나타나지 않습니다.
  3. 티스토리 편집기의 HTML 편집 모드로 바꿉니다.
  4. 치환자 부분을 찾습니다. 치환자는 [##_로 시작하는 경우가 많습니다. 치환자를 찾으면 여는 대괄호 다음에 <b></b>라는 더미 태그를 넣습니다. 더미 태그를 삽입한 다음 소스 부분을 살피면 다음과 같습니다. 빨간 글자를 잘 살펴보세요.
    <p style="font-size: 1.5em;"><span style="font-weight: bold; color: blue;"><span style="color: white; background-color: red;">[<b></b>##_blog_link_##]</span>와 <span style="color: white; background-color: blue;">[<b></b>##_title_##]</span></span><span style="font-weight: bold; color: blue;">는 어떻게 보일까?</span></p>
  5. 미리 보기를 하여 정상적으로 보임을 확인한 뒤에 저장한다.
    파이어폭스 화면

    모질라 파이어폭스 v3.0.10 화면. 정상적으로 잘 보인다.

    익스플로러 화면

    인터넷 익스플로러 v6 sp2 화면. 정상적으로 잘 보인다.

참고로 여기에서 삽입하는 <b></b> 코드는 "글씨를 굵게" 만드는 코드입니다. 코드가 단순해서 써먹기 좋습니다.

문제점

이 방법도 완벽하지는 않습니다. 물론 위에서 제시한 두 목표를 모두 만족했습니다. 그러나 (1) 툴팁에는 적용할 수 없고, (2) 복사나 편집했을 때 <b></b>라는 더미 태그가 사라지는 경우가 있기 때문입니다. 다만 더미 태그가 사라지는 경우는 고치지 않으려 합니다. 복사했을 때 화면이 깨지게 되며, 그럴 경우 (복사 금지된) 원본을 복사했는지를 알 수 있는 한 방법이 되기 때문입니다. 편집할 때는 이 더미 태그 작업을 가장 마지막에 함으로써 해결할 수 있습니다. 더미 태그가 적용된 근처를 편집하면 더미 태그가 사라지므로(대부분의 HTML 편집기가 가지고 있는 HTML코드 최적화 기능 때문입니다.) 주의할 필요가 있습니다.
한편 툴팁에는 필유 님이 제안하신 엔티티 문자를 써도 제대로 나타낼 수 없습니다.
아래의 글자 1은 HTML 더미 코드로 나타낸 원본이고, 글자 2는 일단 글을 저장한 뒤에 마우스를 이용하여 복사한 부분입니다. 그림은 위에서 사용한 예제 그림을 옮겨 왔습니다. 글자 1과 그림은 서로 같게 보여야 하며, 글자 2와 그림은 서로 다르게 보여야 합니다.

글자 1 : [##_blog_link_##][##_title_##]는 어떻게 보일까?

글자 2 : https://salm.pe.kr/왕미친놈의 왕미친세상는 어떻게 보일까?

그림 : [ ##_blog_link_##]와 [ ##_title_##]는 어떻게 보일까?

위의 글자 1과 그림의 내용이 서로 다르게 보인다면, 자신이 사용하는 웹브라우저 이름, 버전 등을 적어 주시면 확인하여 해결책을 마련해 보겠습니다.

관련 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

내 시스템을 윈도7로 업그레이드하면 현재 설정이 유지될까요?

이것은 내가 QAOS 사이트에서 했던 질문이다. 회원제 사이트인 QAOS에서 내가 그런 질문을 했던 까닭은 내 시스템 설정이 조금 독특하기 때문이다.

내 시스템 설정은 다음과 같다.

ProgramFiles=D:\Bin
SystemRoot=C:\WINDOWS
USERPROFILE=D:\Usr\LCP

다른 시스템은 위 세 가지 환경변수가 모두 C 드라이브로 잡혀 있을 텐데, 내 경우는 C와 D로 나뉘어 있다. 더구나 ProgramFiles 환경변수와 USERPROFILE 환경변수의 값이 엉뚱하다. 유닉스 계열을 공부한 사람이 봤다면 NTFS 파티션에 유닉스를 설치했냐고 물을는지도 모른다.

참고로 윈도XP에서 환경변수의 기본값은 환경변수 2 문서에 밝히고 있습니다.

아무튼 QAOS에서 답변한 바에 따르면, 폴더 구조 등이 윈도XP와는 많이 다르므로 안 될 가능성이 많다고 하였다.

그래도 포기하지 못하고, 버추얼박스를 이용하여 여러 가지 설정을 시험하고 있다. 그런데 오늘 도아의 세상사는 이야기에 들렀다가 조금 색다른 글을 보게 되었다. 바로 Windows 7 Upgrade Advisor에 관한 내용이다. 자세한 사항은 도아의 세상사는 이야기에 들러서 보기 바란다.

Windows 7 Upgrade Advisor를 받아서 설치한 뒤에 내 시스템을 검사한 결과 예상했던(!) 결과가 나왔다.

음, 업그레이드(Upgrade)에 대해서 약간의 주의가 필요함을 나타내고 있다. 사용자 설정을 적용하여 설치(Custom installation)해야 하며, 윈도7을 설치한 뒤에 프로그램을 다시 설치해야 한다고 하였다. 또한 반드시 작업을 시작하기 전에 백업을 해야 한다고 하고 있다.

다른 사람의 시스템을 알지 못하므로 내 시스템을 기준으로 살펴보면, 앞서 말한 유체스러운 폴더 설정 때문에 저런 결과가 나오지 않았나 생각한다.

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

버추얼박스에 윈도7 RC를 설치하는 과정을 알아보자. 2009년 5월 10일 현재 한국어 버전은 없으므로 영어 버전(또는 자신이 읽을 수 있는 언어 버전)을 구해서 설치하기 바랍니다.

  • 참고 1 : 이 문서는 그림이 많으므로 로딩이 늦더라도 참고 기다려 주십시오.
  • 참고 2 : 이 문서의 내용은 버추얼박스(또는 가상머신)에 설치한다는 점을 제외하면 하드디스크에 직접 설치하는 것과 같은 느낌을 갖도록 구성하였습니다.

윈도7을 버추얼박스에 설치하기 위한 요구사항

기본적으로 윈도7의 최소 요구사항 가운데 다음 두 가지를 만족한다고 가정하고 설치하였다.

  • RAM 1G(32비트), RAM 2G(64비트)
  • HDD 16G(32비트), HDD 20G(64비트)

버추얼박스 버전은 2009년 5월 10일 현재 최신 버전인 2.2.2판을 사용하였다.

버추얼박스 설정

자세한 설정은 윈도7을 설치하기 위한 버추얼박스 설정을 살펴보고, 여기에서는 가장 중요한 설정만 살피겠다.

  1. 일반 페이지, 고급 탭에서 자주색으로 표시한 부분은 반드시 체크하는 것이 좋다.
  2. CD/DVD-ROM 페이지에서 ISO 이미지 파일 부분에 윈도7 RC 이미지가 있는지를 점검한다.
  3. 원격 디스플레이 기능을 사용해 보고 싶다면, 원격 디스플레이 페이지에서 VRDP 서버 사용하기를 체크하여 설정하면 된다.

윈도7 RC 설치 시작

  1. 시작 단추를 눌러 설치를 시작한다.
  2. 처음 실행할 때에는 호스트키 설정을 확인한다. 이때 체크를 해 주면 다음부터는 물어보지 않는다.
  3. 잠시 기다리면 버추얼박스의 창에 윈도7 RC를 설치하는 과정이 표시되면서 창의 크기가 두어 차례 바뀐다. 처음에서 1024×768 화면이고, 나중에는 800×600 화면이다. 정상적인 과정이므로 걱정할 필요는 없습니다. 하지만 창이 제멋대로 커지거나 작아지면 괜히 겁나죠. ^^a


    위의 두 그림은 1024×768 화면입니다.

    위 그림은 800×600 화면입니다. 여기서부터는 창의 틀(프레임)을 제거하고 내용만 스크린샷으로 잡았습니다.
  4. 위의 마지막 그림에서 기본 설정을 그대로 유지해도 되지만, 다음과 같이 바꾸는 것이 낫다. 설치할 언어(Language to install)는 영어(English), 시간 및 통화 형식(Time and currency format)은 한국어/한국(Korean (Korea)), 키보드 또는 입력 방식(Keyboard or input method)은 Microsoft IME, 키보드 종류(Keyboard Type)는 한국어 키보드 103/106키(Korean Keyboard (103/106 Key))로 하였다.
  5. 방금 지정한 내용을 바탕으로 윈도7을 설치할 준비를 한다. 이때 왼쪽 아래에 보이는 두 항목이 있다. (1) What to know before installing Windows 항목과 (2) Repair your computer 항목이다. (1)번은 윈도 설치에 대한 도움말을 보여주고, (2)번은 복구 모드인데, 복구 모드는 나중에 윈도7 RC 버전에 문제가 있을 때 사용하면 됩니다.
  6. 위의 그림에서 Install Now를 클릭하면 설치를 위한 설정을 시작한다.
  7. 이로써 설치를 위한 준비 과정이 모두 끝난다.

윈도7 RC 설치 : 작업 1

윈도7 RC 설치 작업의 첫 번째는 설치를 위한 정보 수집(Collecting information)이다. 이 작업 1은 대부분 800×600 화면에서 진행한다.

  1. 라이선스 화면(License terms). 체크한 뒤에 Next를 클릭한다.
  2. 설치 방법(Type of installation)을 선택한다. 이때 업그레이드(판올림, Upgrade)는 윈도XP나 비스타가 이미 설치된 컴퓨터에 윈도7을 설치할 때 사용한다. 지금 업그레이드를 선택하면 아무것도 없으므로 다시 이 화면으로 돌아오게 된다. 그러므로 여기에서는 그 아래 항목인 Custom (advanced)를 선택하여 설치한다. 그 아래 조그맣게 되어 있는 Help me decide는 위 두 가지 가운데 어느 것을 선택해야 할는지 모를 경우에 보는 도움말이다.
  3. 어디에 설치해야 하는지를 묻는 화면이다. 우선 디스크(Disk 0 Unallocated Space)가 하나 보인다. 그리고 그 아래에 세 가지 항목이 있다. 왼쪽에는 RefreshLoad Driver 항목, 오른쪽에는 Driver options (advanced) 항목이 있다. Refresh 항목은 그것을 클릭하면 위의 디스크 정보를 갱신해 주며, Load Driver 항목은 특수한 디스크 컨트롤러 등 윈도7에서 제공하지 않은 드라이버를 읽어들일 수 있게 해준다. 윈도XP 설치할 때 F6 키를 누르라는 메시지와 비슷하다. Driver options (advanced) 항목은 디스크 포맷 등의 작업을 사용자가 직접 할 수 있게 해 주는 항목이다. Driver options (advanced) 항목을 클릭하면 포맷 등의 항목이 나타난다.
  4. 위에서 Next를 클릭하면, 잠시 정보를 수집하다가 작업 2로 넘어가게 된다.

윈도7 RC 설치 : 작업 2

작업 1에서 수집한 정보를 바탕으로 윈도7을 설치(Installing Windows)한다. 이 작업 2는 중간에 재부팅하는 때를 제외하면 대부분 800×600 화면에서 진행한다.

  1. 윈도 파일 복사(Copying Windows files) 작업부터, 윈도 파일 압축 풀기(Expanding Widows files), 주요 부분 설치[각주:1](Installing features), 업데이트 설치(Installing updates) 작업까지 죽~ 이어진다. 사용자는 지켜보기만 하면 된다.
       
  2. 업데이트 설치(Installing updates) 작업이 끝나면 재시동을 한다. 이때 아무것도 건드리지 않고 그냥 지켜보면 되며, 재시동 과정에서 레지스트리 설정 작업 등을 하게 된다.
  3. 이 작업이 끝나고 조금 더 작업을 한 뒤 첫 번째 시동 화면이 나온다.

윈도7 RC 설치 : 작업 3

윈도7 설치는 작업 2까지 끝나고, 이 작업 3은 윈도7의 사용자 설정 작업으로 여겨진다. 이 작업 3는 대부분 1024×768 화면에서 진행한다. 이 작업 3은 윈도7 설치 프로그램에서 정의되어 있지 않다. 그저 내가 앞의 작업 2와 구분하기 위해 붙인 이름일 뿐이다.

  1. 첫 사용을 위한 준비(Setup is preparing your computer for first use)를 하는 화면
  2. 잠시 기다리면 사용자 계정(User Account)을 지정하는 화면이 나온다. 사용자 이름(User name)을 User의 꼴로 지정하면 아래 컴퓨터 이름(computer name)을 자동으로 User-PC의 꼴이 되게 만들어 준다. 화면 오른쪽 아래에는 MS IME가 나타나 있다.
  3. 그리고 화면 왼쪽 아래에 있는 내게 필요한 옵션 아이콘(i1-Ease-of-Access.png)을 클릭하면, 한글 윈도XP에 있는 내게 필요한 옵션에 해당하는 설정이 나타난다.
  4. 위의 그림에서 Next를 클릭하면 암호를 입력하는 화면이 나타난다.
  5. 제품 번호(Product Key)를 입력한다. 이때 줄표(-)는 입력하지 않아도 자동으로 추가해 준다. 또한 아래에 체크된 Automatically activate Windows when I'm online은 인터넷에 연결할 때 자동으로 윈도7의 액티베이션(Activation)을 실행한다는 뜻이다. 제품 키를 입력하고 Next를 클릭한다.

    이때 화면 아래에 보이는 What is activation? 항목은 액티베이션에 대한 도움말이고, Read our privacy statement 항목은 마이크로소프트의 사생활 보호 정책에 관한 글이다.
    이때 제품 번호를 넣지 않아도 설치가 된다는 점이다. 아마도 비스타처럼 액티베이션 기간이 있어서 그 안에 제품 번호를 넣으면 된다고 여겨진다. 나는 방금 저 화면에서 번호도 넣지 않고 Next를 클릭해 버렸다. ㅡ,ㅡ;; 그런데 아무런 경고도 없이 그냥 넘어가 버린…. 헉!!
  6. 방화벽 등의 보안 설정으로 여겨진다. 자세한 사항은 Learn more about each option을 클릭하면 도움말이 나온다. 초기값은 Use recommended settings이다.
  7. 날짜와 시간을 설정한다(Time and date settings). 참고로 글을 쓰면서 설치했더니 새벽 3시가 되기 전에 설치를 시작하여 여기까지 2시간 20분가량 걸렸다.
  8. 현재 윈도7을 설치하고 있는 컴퓨터의 네트워크 위치는 어디인가? 차례대로 집, 사무실, 공공장소이다. 대부분 (Home)이면 된다.
  9. 위에서 선택한 네트워크 위치를 적용한다. 이제 거의 마지막이다.
  10. 바탕화면을 준비(Preparing desktop)한다.
  11. 느긋하게 기다리면 드디어 윈도7 화면을 볼 수 있다.

윈도7 RC 설치 : 설치 완료

드디어 설치 완료했습니다. 이번에는 글을 쓰면서 해서 그런지 2시간 50분 정도 걸렸네요. 그런데 집에서 설치할 때는 설치 후 시작할 때 1024×768 화면이라서 난감했는데, 여기 PC방에서 설치하자 800×600 화면으로 시작하네요. 이게 뭔 일인지?! @,@

흠, 바탕화면을 보여주자마자 새로운 업데이트 설치(Windows installed new updates)를 하는군요. 이걸 좋게 봐야 하나, 아니면 나쁘게 봐야 하나? 난감하네요. ^^a

시작 버튼도 한 번 클릭해 보고. 흠, 역시 MS 제품답게 때깔은 곱군.

익스플로러 8도 실행했습니다. 뭔가 어쩌고저쩌고 하는데요. 해석하기 귀찮으니까 넘어간다! 그런데 아래에 있는 방패 아이콘은 보안과 관련된 사항이죠. 저것은 이번에 스크린샷을 못 떴습니다. 그래도 내용은 알고 있습니다. 어도비 플래시(Adobe Flash) 관련한 사항이더군요. MSN 사이트에 플래시로 된 것이 있어서 저 보안 경고가 생깁니다.

여기에서 재미 있는 점을 하나 더 발견했습니다. 위에 보면 추천 사이트다른 추가 기능 가져오기가 보입니다. 이게 처음에는 영어였습니다. 그런데 한 번 클릭하자 저렇게 한글로 바뀌더군요. ^.^b 신기해서 스샷 하나 찍었습니다!

관련 문서

내부 문서

외부 문서

지금까지 그림이 많아서 지겨운 것을 꾹 참고 읽어 주셔서 고맙습니다. (--)(__)(--)

이 글은 스프링노트에서 작성되었습니다.

  1. "겉모습 관련 부분 설치"로도 번역할 수 있다. 나중에 한글판이 나와야 정확히 알 수 있겠다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

내가 자주 가는 PC방에서 약간의 작업―키보드 드라이버 교체 등―을 한 뒤 버추얼박스를 설치하였다. 윈도7 RC를 설치하기 위해 버추얼박스를 설치한 것이다.
이 글은 버추얼박스를 처음 설치한 사람이 윈도7을 설치할 때 필요한 설정을 다루었다.

  • 참고 : 이 문서는 그림이 많으므로 로딩이 늦더라도 참고 기다려 주십시오.

윈도7을 위한 최소 요구사항 및 다운로드 링크

도아의 세상사는 이야기에서 참조하였다.

  • 1 GHz 프로세서(32 또는 64비트)
  • RAM 1G(32비트), RAM 2G(64비트)
  • HDD 16G(32비트), HDD 20G(64비트)
  • WDDM 1.0 이상을 지원하는 DirectX 9 그래픽 장치

작업에 필요한 윈도7 RC 이미지는 다음과 같은 문서를 참조하여 구할 수 있다.

직접 다운로드할 수 있는 링크는 다음과 같다.

버추얼박스 설정 과정

  1. 버추얼박스 초기 화면
    정말 썰렁하게 아무것도 없다.

    정말 썰렁하게 아무것도 없다.

  2. 새로 만들기를 클릭하면 아래와 같이 "새 가상 머신 만들기" 창이 나타난다. 다음을 클릭한다.
  3. 이름은 각자 자신이 넣으면 된다. 나는 Windows7이라고 했다. 평소에는 대개 Win7 정도로 넣는 때가 많다. 다만 버전반드시 Windows 7이라고 넣어야 한다. 작업을 마쳤으면 다음을 클릭한다.
  4. 메모리 설정에서 초기값이 512 MB이다. 다만 윈도7 최소 요구사항이 1 GB이므로 1024 MB라고 설정하자. 자신의 메모리가 모자라다면 초기값대로 놔두어도 된다. 다음을 클릭한다는 말이 없어도 알겠지요?
  5. 가상 하드디스크 설정이다. 버추얼박스를 처음 설치해서 아무것도 없으니 새 가상 디스크 만들기를 선택한다.
  6. 새 가상 머신 만들기새 가상 디스크 만들기로 바뀐다. 이 작업은 가상 미디어 관리자에서도 할 수 있다.
  7. 가상 디스크를 만들 저장소 종류를 선택한다. 그림에 나타난 설명대로라면 고정 크기 저장소는 처음 지정한 크기대로 고정되며, 만들 때 시간이 많이 걸린다. 대신 속도는 빠른 편이다. 동적 확장 저장소는 처음 지정한 크기만큼 하드 디스크 저장 공간을 조금씩 늘려가게 된다. 게스트 운영체제를 설치한 뒤에 게스트 운영체제 안에서 용량을 살펴보면 운영체제를 설치한 만큼을 제외한 용량이 남아 있음을 알 수 있다. 따라서 하드디스크 공간에 여유가 있다면 고정 크기 저장소를, 하드 디스크 공간에 여유가 없다면 동적 확장 저장소를 선택한다. 나는 동적 확장 저장소를 선택했다. 참고로 윈도7은 최소 16기가를 요구한다.
  8. 가상 디스크 위치와 크기는 말 그대로 위치와 크기를 정하는 단계이다. 위치 아래의 박스를 선택하여 Windows 7을 지우고 새로운 이름을 지정해도 되며, 그 옆의 아이콘(A0-Icon-Select.png)을 클릭하여 디스크 이미지가 저장될 경로를 바꿀 수도 있다. 그 아래 크기에서 바(A1-Spread-Bar.png)를 좌우로 움직여 크기를 지정할 수도 있고, 그 옆에 직접 입력할 수도 있다. 초기값은 20.00 GB이며, 넉넉하게 40.00 GB를 설정했다.
  9. 새 가상 디스크 만들기가 끝나고, 작업 내용을 요약하여 보여준다.
  10. 새 가상 머신 만들기로 넘어온다. 가상 디스크 이미지를 만들었으므로 작업은 다 끝났으며, 그에 따라 새 가상 머신 만들기요약을 보여준다.
  11. Windows 7을 위한 가상 머신이 만들어졌다.
    드디어 만들어진 가상 머신

    드디어 만들어진 가상 머신

  12. 윈도7을 설치하거나 원활한 작업을 위해서는 좀 더 환경 설정이 필요하다. 설정을 클릭하자.
  13. 설정 일반 페이지에서 기본 탭에서 설정을 수정한다. 이때 초기값은 비디오 메모리 크기가 12 MB이며, 3차원 가속 사용하기선택되지 않았다. 이러한 설정은 3차원 가속 기능을 사용할 수 없다. 이때 주의할 점은 여기에서 지정하는 비디오 메모리만큼 시스템 메모리를 사용하게 된다는 점이다. 다만 여기에서 128 MB를 설정한 것은 나중에 할 실험을 위해서이다. 보통은 32~64 MB 정도면 충분하다.
    또한 주황색 메시지를 보면 현재 컴퓨터의 메모리가 2.00 GB인데, 그 절반(50%) 이상을 가상 머신에 할당하면 호스트 운영체제의 메모리가 부족할 수도 있다는 경고이다. 윈도 계열은 최소 요구사항보다 메모리가 부족해도 실행할 수 있으므로 설치한 다음에 조정해도 된다. 다만 자신의 컴퓨터 메모리가 1기가라면 반드시 초기값인 512 MB를 유지하기 바란다.
    한편 맨 아래에 나타난 최적화되지 않은 설정 감지됨도 주황색 메시지와 관련이 있다. 가상 머신에 너무 많은 기본 메모리를 할당함으로써 나타나는 문제이다.
  14. 일반 페이지의 고급 탭의 설정이다. 이때 초기값에서 IO APIC 사용하기가 선택되어 있지 않다. 그러나 이 설정은 윈도7을 비롯한 윈도 계열 운영체제를 설치할 때 반드시 필요하다고 알려주고 있으므로 반드시 체크하자. 나머지는 자신의 컴퓨터 하드웨어에 맞추어 설정하면 된다. 또한 부팅 순서에서 반드시 CD/DVD-R… 부분을 체크해야 한다.

    스냅샷 폴더는 사용자가 직접 고를 수 있다. 기타를 클릭하면 사용자가 폴더를 고를 수 있는 선택창이 나타난다. 초기화를 선택하면 현재 지정된 경로명이 지워진다. 그때 직접 입력하거나 기타를 클릭하여 선택하면 된다.
  15. 설명은 현재 가상 머신에 대한 설명을 적는다.
  16. 기타마운트된 미디어 기억하기가 초기값으로 되어 있다. 이 설정은 가상 CD-ROM 드라이브에 CD-ROM이 삽입된 상태를 유지한다는 설정이다. 체크를 해제하면 가상 CD-ROM 드라이브에 CD-ROM을 넣지 않게 한다는 뜻이 된다.
  17. 설정의 하드디스크 페이지이다. 기본값은 추가 컨트롤러 사용하기가 선택되어 있지 않다. 이것을 SATA 하드디스크를 사용한다면 체크하여 선택하자. 지금 하는 작업은 실제 컴퓨터 하드디스크에 설치하기에 앞서 버추얼박스에 설치해 보는 작업이다. 그러므로 SATA 하드디스크를 사용한다면 추카 컨트롤러 사용하기를 선택하여 시험해 보는 편이 낫다고 생각한다.

    위 그림에서 연결의 왼쪽에 보이는 세 아이콘은 연결하기(A3-Add-Attachment.png), 연결 끊기(A3-Remove-Attachment.png), 하드디스크 선택(A3-Select-HardDisk.png)을 뜻한다.
  18. 설정의 CD/DVD-ROM 페이지이다. 기본값은 CD/DVD 드라이브 마운트가 선택되어 있지 않다. 이것을 선택한 뒤 ISO 이미지 파일 옆의 아이콘(A3-Select-HardDisk.png)을 클릭하자. 이때 잘못된 설정 감지됨 메시지는 현재 ISO 이미지 파일에 <미디어 없음>으로 되어 있기 때문에 나타나는 경고이다.
  19. 가상 미디어 관리자가 나타난다. 추가를 클릭하자.
  20. 추가를 클릭하면 디스크 이미지 파일 선택 창이 나타난다. 경로를 옮겨서 파일을 찾아 선택한 뒤 열기를 클릭!
  21. 방금 찾은 이미지 파일이 목록에 나타난다. 선택을 클릭!
  22. ISO 이미지 파일 부분에 <이미지 없음> 메시지 대신에 방금 선택한 이미지 파일이 나타난다. 아울러 맨 아래에 있던 잘못된 설정 감지됨 메시지가 사라진다.
  23. USB 페이지에서는 USB 컨트롤러 사용하기USB 2.0 EHCI 컨트롤러 사용하기를 모두 체크한다.
  24. 모든 설정이 완료되었다. 이때 나머지 설정은 초기값대로 놔두면 사용에 지장이 없다는 뜻이다.
    드디어 설정 끝!

    드디어 설정 끝!

버추얼박스 설정 완료

버추얼박스 설정이 완료되었다. 이 설정은 다른 가상머신 프로그램에서도 그다지 다르지 않다. 이 문서를 한 번쯤 읽어보기 바란다. 빨간색 글씨는 주의사항이므로 반드시 살펴보기 바란다.

관련 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

버추얼박스는 새 버전이 발표될 때마다 자잘한 벌레로 사람을 성가시게 하고 있다. 2.2.0판을 설치하면서 벌레가 많아서 사람을 성가시게 하고 있다. 이번에는 설치할 때 경로명에 한글이 포함되면 문제가 발생하는 벌레까지 발견했다.

벌레의 유형

설치 프로그램에 기생하면서 한글 경로명을 인식하지 못하게 막는 벌레이다.

벌레의 발견

낮에 집에서 윈도7을 설치한 뒤 PC방에서도 설치해 보고 싶었다. 물론 버추얼박스를 설치한 뒤에. 그런데 버추얼박스를 다운로드 받아서 설치하려고 했으나 오류가 나면서 설치가 되지 않았다.

다운로드한 버추얼박스 프로그램 파일

다운로드한 버추얼박스 프로그램 파일


오류

이 오류를 해결하기 위해 컴퓨터 설정을 살피다가 언어 설정과 관련하여 한 가지가 생각났다. 바로 "한글 경로"에서 문제가 발생하였다.

우선 프로그램이 있는 경로의 한글 경로가 문제가 된다고 생각하여 버추얼박스 프로그램을 C:\1 폴더로 옮겼다. 그러나 여전히 문제가 발생했다.

그렇다면 이것은 프로그램이 존재하는 곳의 경로와는 상관이 없다는 뜻이었고, 다른 가능성을 찾아야 했다. 그러다가 문득 시작 단추를 누르게 되었다.

"사매 로그오프"라는 부분, 곧 사용자 이름(사매)에 한글이 포함되어 있었다. 명령 프롬프트를 열어서 SET 명령을 입력했다.

SET 명령 실행 화면

명령 프롬프트에서 SET 명령 실행 화면

위와 같이 TEMP 환경 변수(핑크색 밑줄 부분)에도 한글이 포함되어 있음을 확인했다. 이 TEMP 환경변수는 프로그램이 실행될 때 임시파일을 만드는 경로인데, 한글이 포함될 경우 로마자 언어를 기준으로 작성된 프로그램에서는 가끔 오류가 생기기도 한다. 작게는 저장할 때 저장을 할 수 없는 문제가 있고, 이번처럼 아예 실행이 되지 않는 경우도 있다. 이것은 프로그램 제작자의 실수이지만, 해결할 방법은 있다. 바로 TEMP 환경변수의 경로를 바꾸면 된다.

벌레 잡기

이것을 해결하려면 시스템 환경변수를 다루어야 한다.

바탕화면에 내 컴퓨터 아이콘이 있다면 거기에서 마우스 오른쪽 단추를 클릭하여 속성을 선택하면 된다.

그게 아니라면 제어판(시작 단추 >> 설정 >> 제어판)을 열고, 거기에서 시스템을 두번클릭하면 된다. 그 뒤 고급 탭을 클릭한다.

시스템 등록 정보

시스템 등록 정보의 고급 탭을 클릭한

환경 변수를 클릭한다.

TEMP를 클릭하여 선택한 다음 편집 단추를 클릭한다.


위 그림처럼 보이게 되는데, 이때 아래처럼 바꾼다. 위의 그림은, 경로가 앞서 보여준 명령 프롬프트 화면의 C:\DOCUME~1\사매\LOCALS~1\Temp처럼 보이게 된다. 바로 한글 사매사용자 이름이고, %USERPROFILE% 환경변수는 사용자 이름을 참조하기 때문이다. 물론 근본적으로 사용자 이름을 한글이 아닌 로마자로만 지으면 되지만, 한글 이름을 쓰고 싶은 경우도 많으므로, 이렇게 고쳐 주면 해결할 수 있다.
아무튼 아래의 그림처럼 한글이 포함되지 않은 경로를 지정해 주면 된다. 이때 해당 경로가 존재하지 않는다면 그 폴더를 만들어 주면 된다. 마지막에는 반드시 확인을 클릭한다.

TMP 환경 변수TEMP 환경변수와 같게 만들어주면 된다.

확인을 눌러주면 편집한 환경 변수가 저장된다.

지금까지 작업을 마쳤으면 다시 버추얼박스 설치 프로그램을 클릭하여 실행한다.

제작자/제공자의 답변

2009년 5월 9일 오후 8시 20분 무렵(May 9th, 2009, 9:19 pm / 1시간의 오차는 일광시간절약제와 관련한 오류로 여겨진다.)에 버그리포팅을 하였다.

관련 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

방금 윈도7(Windows 7)을 처음 설치하였습니다.

물론 정식 설치가 아니라 가상머신인 버추얼박스에 설치하였지만, 설치시간은 고작 50분인 데다가 동작도 상당히 빨랐습니다. 마이크로소프트의 제품을 설치하면서 처음으로 놀라움이 아닌 또 다른 "감동"을 했다는 점에서 윈도7은 성공하리라 확신합니다.

이래저래 놀라움을 안겨줄 모양입니다.

심지어 아직 버추얼박스의 게스트 확장조차 설치하지 않은 상태인데 말입니다.

이번에는 스크린샷이 하나뿐입니다. 몇 번 더 설치한 뒤에 여러 가지 스크린샷을 첨부하겠습니다. ^^a

그렇게 시험 설치를 한 뒤에 제 컴퓨터를 업그레이드해야겠습니다. 현재 제 컴퓨터는 C 드라이브에 윈도 폴더가 있고, D 드라이브에 프로그램 폴더(흔히 Program Files)와 프로필 폴더(흔히 Documents and Settings)가 있어서 조금 작업이 필요합니다.

일단 첫 평가 및 첫인상은 매우 좋습니다.

설치 후 첫 화면

윈도7 설치 후 첫 화면. 아래 그림 참조.



 

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

Windows Automated Installation Kit for Windows 7(Windows 7용 윈도 자동 설치 도구)는 흔히 AIK로 불린다. 이것은 윈도 비스타부터 지원하기 시작한 새로운 배포 도구이다. 물론 윈도2000이나 윈도XP에도 자동 설치 도구가 있었으나, 그것은 윈도 설치 디스크(흔히 윈도CD)에 있는 DEPLOY.CAB 파일에 포함되어 있었다. 그것은 윈도CD의 <윈도CD>\SUPPORT\TOOLS 폴더에 들어 있다. 정확한 윈도 배포 도구의 파일명은 setupmgr.exe 이다.

아무튼 윈도 비스타부터는 자동 설치 도구의 크기도 매우 커졌으며, 설치 도구에서 이용하는 툴도 달라졌다. 무엇보다도 윈도 PE(Windows Preinstallation Environment)를 만들어 설치 디스크를 제작하도록 바뀌었다. 심지어 윈도 비스타 원본도 비스타PE(정확히는 윈도PE 2.0)를 이용하여 설치를 하고 있다. 윈도 설치 디스크에 있는 WIM 파일은 그것을 위해 마련되었습니다.

그리고 이번에 윈도7 베타 버전 발표와 함께 윈도7용 자동 설치 도구가 발표되었습니다.

프로그램 정보

  • 프로그램 이름 : Windows Automated Installation Kit for Windows 7(윈도 오토메이티드 인스톨레이션 킷 포 윈도 세븐; Windows 7용 윈도 자동 설치 도구)[각주:1]
  • 버전 : 베타 버전 (2009년 4월 23일자[각주:2])
  • 저작권자/제작자 : 마이크로소프트
  • 분류 : 설치 지원 도구
  • 지원 운영체제 : Windows® 7, Windows Server® 2008 R2, Windows Server® 2008, Windows Vista® with Service Pack 1 (SP1)
  • 홈페이지 : http://www.microsoft.com/downloads/details.aspx?FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34&DisplayLang=ko[각주:3]
  • 저작권 : 프리웨어
  • 평가 : @@@@@@@@@@ ( 8 / 10 )
  • 스크린 샷 :
    0aik
    1aik
    2aik-setup-wizard
    3aik-license-terms
    4aik-Installation-Folder
    5aik-Confirm-Installation
    6aik-Installing
    7aik-Installation-Complete
  • 설명 :
    이 프로그램은 자신만의 설치 환경을 만들 수 있게 해 준다. 따라서 윈도 7을 설치하는 과정에서 함께 설치하고 싶은 하드웨어나 소프트웨어를 함께 설치할 수 있도록 지원해 준다.
  • 기타 :

    1. 이전 버전의 자동 설치 도구, 예컨대 Windows Automated Installation Kit for Windows Vista 등이 설치되어 있다면 업그레이드를 지원하지 않는다. 먼저 이전 버전을 제거하고 나서 설치해야 한다.
    2. 설치 이미지의 이름은 KB3AIK_EN.iso 이다. 이 파일은 UDF-DVD 이미지라서 UDF-DVD 이미지를 읽을 수 있는 프로그램이 설치되지 않은 윈도XP에서는 읽을 수 없는 경우가 있다. 이 경우 7-Zip을 이용하여 이미지를 압축 해제할 수 있다.
    3. KB3AIK_EN.iso 파일의 크기는 1.40GB (1,505,271,808 바이트)이며, 압축 해제한 뒤의 크기는 1.40GB (1,503,667,351 바이트)이다. 거의 변화가 없다.
    4. 그밖에 윈도 사전 설치 환경(PE) 제작 및 배포 도구의 다운로드/설치도 지원하고 있다.

다운로드

  • 방법 1 : 위에 소개한 홈페이지에서 공지사항의 "New Deployment Tools Available"을 클릭하면 나타나는 "Windows Automated Installation Kit for Windows 7(파일명 : KB3AIK_EN.iso)"라는 부분을 클릭하면 다운로드할 수 있다.
  • 방법 2 : MSDN 아이디를 가지고 있다면 MSDN 다운로드 사이트에서 받을 수 있다. 언어 설정은 영어로 하기 바란다. Windows Automated Installation Kit for Windows 7 RC and Windows Server 2008 R2 RC (x86/x64/ia64) - DVD (English) 라는 제목이며, 파일명은 en_windows_automated_installation_kit_x86_x64_ia64_dvd_349519.iso 이다.
  • 위의 두 파일은 완전히 동일하며 다음과 같은 파일 검증 값을 가진다.
    • SHA1 : EBEB71554D75A5E423535CB68BF8DE23E0B2477F
    • CRC32 : 403C29A9

관련글

아직 없음.

이 글은 스프링노트에서 작성되었습니다.


  1. 정확한 명칭은 "Windows Automated Installation Kit for Windows 7 RC and Windows Server 2008 R2 RC"이다 [본문으로]
  2. 다만 이 날짜는 AIK 이미지 안에 있는 파일의 날짜이다. [본문으로]
  3. 마이크로소프트 홈페이지에서 검색한 결과 따로 홈페이지가 존재하지 않았다. 다만 이 주소는 다운로드 페이지의 주소이다. [본문으로]

'소프트웨어 > 소개' 카테고리의 다른 글

GSpot  (0) 2009.09.06
DOSBox  (0) 2009.08.25
HxD  (2) 2009.04.23
MultiArc  (0) 2009.04.02
Total Commander  (0) 2009.03.28
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

GOTO 명령은 여러 프로그래밍 언어에서 실행 순서를 바꾸어주는 역할을 한다. 그러나 구조적 프로그래밍과 관련하여 지탄을 받는 대상이기도 하다. 한편 도스용 배치파일에서는 배치파일에서 루프(loop) 구현 등 여러 가지 상황과 맞물려 반드시 필요한 기능 가운데 하나였다.

윈도XP의 배치파일에서는 GOTO 명령의 쓰임이 예전보다 줄었으나 아직까지도 여전히 자주 쓰이고 있다. 특히 하위 버전과의 호환성이라는 측면에서 매우 중요한 역할을 하고 있다.

말뜻

GOTO는 배치파일 내부에서 지정하는 대상(레이블)이 있는 곳으로 가라는 뜻을 가지고 있다. 그러므로 이 명령어를 발견하면 뒤따르는 레이블이 위치하는 곳으로 옮겨가면 된다.

GOTO 기본 문법

GOTO 명령의 기본 문법은 매우 간단하다.

GOTO Label

레이블은 여러 가지가 있으며, GOTO 명령과 함께 쓰이는 것을 GOTO레이블이라고 부른다.

GOTO 명령을 GOTO레이블과 함께 표현하면 아래와 같다.

Command_1
Goto :Label_1
Command_2
:Label_1
Command_3
Goto Label_2
Command_4
:Label_2
Command_5

이때 2행에 있는 Goto :Label_1 에서는 레이블 앞에 쌍점(콜론)이 붙었으나, 6행에 있는 Goto Label_2 에서는 레이블 앞에 쌍점이 붙지 않았다. 이처럼 GOTO Label의 형태에서 레이블 앞에는 쌍점을 붙여도 되고, 붙이지 않아도 된다. 명령어와 혼동되지 않도록 쌍점을 붙이는 편이 낫다고 생각한다. 그러나 일반적으로 위와 같이 쓰이는 일은 거의 없고, 대부분 IF 문과 함께 쓰이게 된다.

이때 GOTO 레이블은 8글자를 넘기면, 그 넘어가는 부분은 무시하게 된다. 다시 말해 아래의 레이블은 모두 같은 의미―:a1234567―를 갖게 된다.

  1. :a1234567
  2. :a12345678
  3. :a12345679
  4. :a1234567a
  5. :a1234567b

한편 GOTO문에서 지정한 레이블이 존재하지 않으면, 레이블을 찾을 수 없다는 메시지를 내보내고 배치파일을 종료하게 된다.

다만 윈도XP 명령확장에서 사용하는 :EOF 레이블은 배치파일 내부에서 정의하지 않아도 동작하며, 그 경우 곧바로 오류 메시지를 보이지 않고 배치파일을 종료한다. 이 :EOF 레이블을 사용하려면 반드시 goto :EOF라고 써야 하며, goto EOF라고 콜론을 빠뜨리고 쓰면 동작하지 않는다.

참고 자료

다음 예고

FOR 명령

이 글은 스프링노트에서 작성되었습니다.


'스크립트 > 배치파일' 카테고리의 다른 글

FOR 명령 확장 1  (2) 2009.06.17
FOR 명령  (6) 2009.05.16
IF 명령 확장  (1) 2009.04.22
IF 문자열  (4) 2009.04.18
IF EXIST  (0) 2009.04.15
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

알리는 말

11월 18일 수정

본문의 내용이 저작권을 침해할 우려가 있다는 모꼬모지 님의 의견이 있었습니다. 처음에는 본문에 해당하는 한국어 번역이 없다고 여겼으나, 모꼬모지 님이 이미 번역한 부분이 있었고, 저는 그것을 모르는 상태에서 본문을 작성하였습니다. 그에 따라 번역문이 낱말은 물론 토씨까지 일치하는 곳을 상당 부분 발견하였고, 그러한 부분을 대부분 삭제하였으며, 꼭 필요한 일부는 남겼습니다(예컨대 PROCESSOR_ 로 시작하는 환경변수).

그로 말미암아 설명이 삭제된 부분이 생겼는데, 일부는 영어 위키백과Environment variable에서 내용을 복사하여 붙였습니다. 제 블로그의 라이선스가 GFDL이고 위키백과도 GFDL이기 때문에 가능했습니다. 영문 그대로 둔 이유는 번역할 경우 그 결과물이 이미 번역된 다른 글과 같을 수 있다는 염려 때문입니다. 한국어 위키백과에 내용이 추가되기 전까지는 본문의 영어 부분을 한국어로 번역하지 않을 생각입니다.

그와 함께 변수 구분을 위해 하위 개요를 두어 표를 두 개로 분리하였습니다.

11월 19일 수정

모꼬모지 님께 먼저 죄송하다는 말을 드려야겠네요.

죄송합니다.

위키백과의 사랑방에서 과거에 있었던 여러 토론을 살펴본 결과 링크만 걸려 있으면 그다지 문제가 없다는 의견을 여럿 보게 되었습니다. 결국 제가 너무 까탈스럽게 굴었다는 말이네요.
너무 원칙만 고수하다 보니 본의 아니게 모꼬모지 님과 논쟁을 벌이게 되어습니다. 앞으로는 좀 더 시야를 넓혀 이번과 같은 일이 다시 일어나지 않도록 하겠습니다.

말뜻

환경 변수(環境 變數)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.[각주:1] 이때 변수들은 명령줄 위에서, .BAT 확장자를 가지는 일괄 처리 파일, 또는 스크립트 안에서 쓰일 수 있다. 변수 이름 주변이나 앞에 특별한 기호(예 : %)를 놓아서 참조하는 것이 보통이다.

윈도 테크넷의 정의에 따르면,[각주:2] Cmd.exe 명령 셸 환경은 명령 셸 및 운영 체제의 동작을 결정하는 변수에서 정의한다. 시스템과 로컬, 이 두 가지 환경 변수를 사용하여 명령 셸 환경 또는 전체 운영 체제 환경의 동작을 정의할 수 있다. 시스템 환경 변수는 전체 운영 체제 환경의 동작을 정의하며, 로컬 환경 변수는 현재 Cmd.exe 인스턴스의 환경 동작을 정의한다.

시스템 환경 변수는 운영 체제에 미리 설정되어 Windows XP의 모든 프로세스에서 사용할 수 있다. 관리 권한이 있는 사용자만 시스템 변수를 변경할 수 있으며, 이 변수는 로그온 스크립트에서 가장 많이 사용한다. 로컬 환경 변수는 그 변수를 사용하도록 만든 사용자가 컴퓨터에 로그온한 경우에만 사용할 수 있다. 로컬 변수는 HKEY_CURRENT_USER 하이브에서 설정하고 현재 사용자인 경우에만 유효하지만 전체 운영 체제 환경의 동작을 정의합니다.

윈도 환경에서 환경 변수의 유형은 다음과 같습니다.

  1. 기본 제공 시스템 변수
  2. HKEY_LOCAL_MACHINE 하이브에 있는 시스템 변수
  3. HKEY_CURRENT_USER 하이브에 있는 로컬 변수
  4. 모든 환경 변수 및 Autoexec.bat 파일에서 설정된 경로
  5. 모든 환경 변수 및 로그온 스크립트에서 설정된 경로
  6. 스크립트 또는 배치 파일과 상호 작용하는 변수

윈도의 환경 변수

윈도의 기본 환경 변수는 다음과 같다.[각주:3] 변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다.

시스템 변수

여기에서 말하는 시스템 변수는 기본 제공 시스템 변수와 레지스트리에 저장된 시스템 변수를 편의상 통틀어 이르는 명칭이다.

윈도의 기본 환경 변수는 다음과 같다.[각주:4]

변수 설명
%CMDEXTVERSION%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT4 - 1
  • 윈도2000 및 윈도XP - 2
%COMPUTERNAME% 컴퓨터 이름을 반환합니다. 정확하게는 현재 컴퓨터의 NetBOIS 이름을 반환한다.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도2000 이후 기본값 - 현재 컴퓨터의 컴퓨터 이름
%ComSpec% This variable contains the full path to the command processor; on Windows NT based operating systems this is cmd.exe, while on Windows 9x and ME it is the DOS command processor, COMMAND.COM.
  • 윈도9X 기본값 - C:\WINDOWS\COMMAND.COM
  • 윈도NT 기본값 - %SystemRoot%\system32\cmd.exe
  • 윈도NT 표시값 -
    • NT4 - C:\WINNT\system32\cmd.exe
    • 윈도2000 이후 - C:\WINDOWS\system32\cmd.exe
%DATE%

This variable expands to the current date. The date is displayed according to the current user's date format preferences.

The following is a way of reformatting the date and time for use in file copies. The example assumes UK format of day month year and the time is set for a 24 hour clock.

  • 기본값 - 시스템의 날짜. 한글 윈도에서는 YYYY-MM-DD(윈도ME/2000 이후) 또는 YY-MM-DD(윈도95/98)의 형태로 나타내 준다.
  • 표시값 - (한글 윈도XP) 2009-05-03
%ERRORLEVEL%

This variable points to the current error level. If there was an error in the previous command, this is what you need to check against to find out about that.
이 환경변수는 SET 명령으로는 볼 수 없습니다.

%HOMEDRIVE%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - C:
%HOMEPATH%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - \Documents and Settings\{USERNAME}
  • 비스타 기본값 - \Users\{USERNAME}
%HOMESHARE% 사용자 공유 홈 디렉터리의 네트워크 경로를 반환합니다. 홈 디렉터리의 값에 따라 설정합니다. 사용자 홈 디렉터리는 로컬 사용자와 그룹에서 지정하며, 홈 디렉터리가 로컬 경로에 위치하면, 이 환경변수의 값은 공백(NULL)을 반환합니다. 윈도XP에서만 정의하고 있습니다.
%NUMBER_OF_PROCESSORS% 컴퓨터에 설치된 프로세서의 수를 지정합니다. 이것은 컴퓨터 하드웨어인 CPU 모듈의 갯수 또는 CPU 모듈과 CPU 코어의 곱의 계산값으로 나타납니다. 예컨대 단일 코어의 CPU 모듈이 1개라면 1 x 1 = 1을 반환합니다. 그러나 듀얼 코어 CPU가 4개라면 2 x 4 = 8을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%OS%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - Windows_NT
%Os2LibPath% OS/2 라이브러리의 경로를 반환한다. 윈도NT4 및 윈도2000 에서만 정의되어 있다.
%PATH% This variable contains a semicolon-delimited (do not put spaces in between) list of directories in which the command interpreter will search for an executable file that matches the given command. Equivalent to the Unix $PATH variable.
  • 윈도9X 기본값 - C:\WINDOWS;C:\WINDOWS\COMMAND
  • 윈도NT 기본값 - %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
  • 윈도NT 표시값 - C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
%PATHEXT% 운영 체제에서 실행 가능하다고 간주되는 파일 확장명 목록을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도XP 기본값 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
  • 비스타 기본값 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH;.MSC
%PROCESSOR_ARCHITECTURE% 프로세서의 칩 아키텍처를 반환합니다. 값은 다음과 같습니다. x86, IA64 등.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_IDENTIFIER% 프로세서의 설명을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_LEVEL% 컴퓨터에 설치된 프로세서의 모델 번호를 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_REVISION% 프로세서의 수정 버전 번호를 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%Public%
  • 비스타 기본값 - C:\Users\Public
%RANDOM% This variable returns a random number between 0 and 32767. Cmd.exe에서 생성합니다.
  • 윈도9X 및 윈도NT4 기본값 - 정의되지 않음.
%SystemDrive% The %SystemDrive% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the drive upon which the system folder was placed. Also see next item.

The value of %SystemDrive% is in most cases C:.

  • 윈도9X 계열 - 정의되지 않음
  • 윈도NT 기본값 - C:
%SystemRoot%

The %SystemRoot% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the location of the system folder, including the drive and path.

The drive is the same as %SystemDrive% and the default path on a clean installation depends upon the version of the operating system. By default, on a clean installation:

  • 윈도9X 계열 - 정의되지 않음
  • 윈도NT 계열 기본값 -
    • Windows NT 5.1 (Windows XP) and newer versions use \WINDOWS
    • Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use \WINNT
    • Windows NT 3.5x uses \WINNT35
%TEMP%
%TMP%
시스템 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
  • 윈도9X 계열 기본값 - C:\WINDOWS\TEMP
  • 윈도NT 계열 시스템 기본값 - %SystemRoot%\TEMP
  • 윈도NT 계열 시스템 표시값 -
    • NT4 및 윈도2000 - C:\WINNT\TEMP
    • 윈도XP 이후 - C:\WINDOWS\TEMP
%TIME% This variable points to the current time. The time is displayed according to the current user's time format preferences.
  • 기본값 - 시스템의 날짜. 한글 윈도에서는 오전/오후 hh-mm의 형태로 나타내 준다.
  • 표시값 - (한글 윈도XP) 오후 03:36
%windir% This variable points to the Windows directory (on Windows NT-based operating systems it is identical to the %SystemRoot% variable, above). If the System is on drive C: then the default values are:
  • 윈도9X 계열 기본값 - C:\WINDOWS
  • 윈도NT 계열 기본값 - %SystemRoot%
  • 윈도NT 계열 표시값
    • NT4 및 윈도2000 - C:\WINNT
    • NT4 Terminal Server Edition - C:\WTSRV
    • 윈도XP 이후 - C:\WINDOWS
%winbootdir% 윈도9X 계열 운영체제가 설치된 위치를 반환합니다.
  • 윈도9X 및 윈도2000 기본값 - C:\WINDOWS

로컬 변수

변수 설명
%ALLUSERSPROFILE% The %AllUsersProfile% variable expands to the full path to the All Users profile directory. This profile contains resources and settings that are used by all system accounts. Shortcut links copied to the All Users' Start menu or Desktop folders will appear in every user's Start menu or Desktop, respectively.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도 2000 이후 기본값 - C:\Documents and Settings\All Users
  • 비스타 기본값 - C:\ProgramData
%APPDATA% Contains the full path to the Application Data folder of the logged-in user. Does not work on Windows NT 4.0 SP6 UK.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도 2000 이후 기본값 - %USERSPROFILE%\Application Data
  • 윈도 2000 이후 표시값 - C:\Documents and Settings\{USERNAME}\Application Data
  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Roaming
%CD% This variable points to the current directory. Equivalent to the output of the command cd when called without arguments.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
%CLIENTNAME% 로그인 환경이 로컬인지 원격인지에 따른 문자열을 반환합니다.
  • 윈도2000 이전 기본값 - 정의되지 않음
  • 윈도XP 이후 기본값 - 로컬이면 Console을 반환
%CMDCMDLINE% 현재 Cmd.exe를 시작하는 데 사용되는 정확한 명령줄을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - 일반적으로 %ComSpec% 환경변수의 값을 반환한다.
%LOCALAPPDATA%

로컬 사용자만을 위해 설치된 응용 프로그램이 기본적으로 데이터를 저장하는 위치를 반환합니다.

  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Local
%LOGONSERVER%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - \\%COMPUTERNAME%
  • 윈도NT 표시값 - \\{사용자가 쓰고 있는 컴퓨터 이름}
%ProgramData%
  • 비스타 기본값 - C:\ProgramData
%PROMPT%
  • 기본값 - $P$G
%TEMP%
%TMP%
현재 로그온한 사용자가 사용할 수 있는 응용 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
  • 윈도9X 계열 기본값 - C:\WINDOWS\TEMP
  • 윈도NT 계열 로컬 기본값 - %USERPROFILE%\Local Settings\Temp
  • 윈도NT 계열 로컬 표시값 - C:\DOCUME~1\{USERNAME}\LOCALS~1\Temp
  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Local\Temp (%LOCALAPPDATA%\Temp 라고 추정)
%USERDOMAIN%

사용자 계정을 포함한 도메인 이름을 반환합니다.

The variable holds the name of the Workgroup or Windows Domain to which the current user belongs. The related variable, %LOGONSERVER%, holds the hostname of the server that authenticated the current user's logon credentials (name and password). For Home PCs, and PCs in a Workgroup, the authenticating server is usually the PC itself. For PCs in a Windows Domain, the authenticating server is a domain controller (a primary domain controller, or PDC, in Windows NT 4-based domains).

  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - %COMPUTERNAME%
  • 윈도NT 계열 표시값 - 현재 사용하는 컴퓨터 이름을 나타내 준다.
%USERNAME% 현재 로그온한 사용자 이름을 반환합니다.
  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - {USERNAME} (로그인한 사용자 이름)
%USERPROFILE%

The %UserProfile% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the location of the current user's profile directory, in which is found that user's HKCU registry hive (NTUSER).

Users can also use the %USERNAME% variable to determine the active users login identification.

  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - C:\Documents and Settings\{USERNAME}
  • 비스타 기본값 - C:\Users\{USERNAME}
변수 설명

%ProgramFiles%

%ProgramFiles(x86)%

%ProgramW6432%

This variable points to Program Files directory, which stores all the installed program of Windows and others. The default on English-language systems is C:\Program Files. In 64-bit editions of Windows (XP, 2003, Vista), there are also %ProgramFiles(x86)% which defaults to C:\Program Files (x86) and %ProgramW6432% which defaults to C:\Program Files. The %ProgramFiles% itself depends on whether the process requesting the environment variable is itself 32-bit or 64-bit (this is caused by Windows-on-Windows 64-bit redirection).

  • 윈도9X 계열 - 정의되지 않음.
  • 윈도NT 계열 기본값 - C:\Program Files
%CommonProgramFiles%

This variable points to Common Files directory. The default is C:\Program Files\Common Files.

  • 윈도9X 계열 및 NT4 - 정의되지 않음.
  • 윈도2000 이후 기본값 - C:\Program Files\Common Files
%SessionName% 윈도2000 이후 버전에서 터미널 서비스 시스템 구성요소(Terminal Services system component)가 설치된 경우에만 정의된다. 로컬에서 로그인했을 때는 Console을 기본값으로 반환한다.

위의 표 세 가지를 읽을 때 다음과 같은 점에 주의하십시오.

  • 혹시라도 명령줄에서 set 명령으로 찾을 수 없는 환경 변수는 윈도 레지스트리 키(Windows Registry key)인 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 에서 찾을 수 있다. 몇몇 로컬 변수는 HKEY_CURRENT_USER\Environment 에서 찾을 수 있다.
  • 기본값과 표시값은 서로 같지 않다. 기본값은 레지스트리 등에서 정의하는 값이고, 표시값은 명령 프롬프트에서 SET 명령으로 확인할 수 있는 값이다. 윈도NT 계열(윈도NT/2000/XP 등)에서는 서로 다른 값을 가지므로 주의해야 한다(결과적으로 둘 다 같다). 위의 설명에서는 윈도XP를 기준으로 기본값과 표시값을 나누었으며, 두 값이 같다면 기본값만 표시했다.
  • 위의 환경변수 설명에서 {USERNAME}, {사용자가 쓰고 있는 컴퓨터 이름}이라는 부분은 시스템 환경에 따라 달라진다. 각자 자신의 컴퓨터에서 확인하기 바란다. 참고로 {USERNAME}의 값은 환경변수 %USERNAME%의 값에 따라 달라지며, {사용자가 쓰고 있는 컴퓨터 이름}%COMPUTERNAME%에 따라 달라진다.
  • 비스타 기본값은 표시값과 구분하지 않았다. 실제로 비스타를 설치하지 않은 이상 알 수 없기 때문이다.
  • Environment Variables 문서에서는 %SystemDirectory%라는 환경변수를 소개하고 있지만, 어디에서도 찾을 수 없었다.

도스의 환경 변수

MS-DOS v6.22를 설치했을 때의 환경 변수는 그다지 많지 않다. COMPSPEC, PROMPT, PATH, TEMP, 이렇게 네 개가 전부이다(참고 : 환경 변수 1).

참조 문서

내부 문서

외부 문서

다음 예고

GOTO 문과 레이블에 대해서 알아보기로 하자.

  1. 한국어 위키백과 : 환경 변수 [본문으로]
  2. 명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서를 참조하였다. [본문으로]
  3. 명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서, Environment Variables 문서, Windows Platform Comparison Environment Variable Reference 문서, Windows Vista- Environment variables 문서 등을 참조하였다. [본문으로]
  4. 변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다. [본문으로]

'스크립트' 카테고리의 다른 글

환경 변수 1  (0) 2009.05.02
이런저런 이야기  (6) 2009.03.30
스크립트란 무엇인가? 배치파일이란 무엇인가?  (8) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.
환경 변수가 무엇인지는 환경 변수 2에서 설명하기로 하고, 여기에서는 주의할 점을 몇 가지 설명하겠다.

도스와 윈도는 다르다.

환경 변수를 이용할 때 도스와 윈도가 다르며, 윈도9X 계열과 윈도XP의 경우가 다르다.

  • 도스에서 환경 변수의 이름은 항상 대문자이다. 윈도에서는 환경 변수의 이름에 소문자도 허용된다. 그러나 윈도에서 소문자 이름으로 된 환경변수를 대문자로 써도 똑같다. 반대로 대문자 이름으로 된 환경변수를 소문자로 써도 된다.
  • 도스에서 일부 환경변수의 값은 항상 대문자이다. 윈도에서는 모든 환경변수의 값에 소문자를 포함할 수 있다.
  • 정의되지 않은 환경 변수에 대한 처리 방법이 다르다. 도스와 윈도9X 계열에서는 정의되지 않은 환경변수는 공백으로 처리하지만, 윈도XP에서는 환경변수 이름을 돌려준다.
  • 도스에서는 환경변수가 숫자로만 이루어져도 문자열이지만, 윈도에서는 명령확장을 이용하여 수로 인식할 수 있다. 심지어 사칙연산도 가능하다.
  • 도스에서는 환경변수의 값에 ^(캐럿; 이스케이프 문자)와 &(앰프; 엔티티 부호) 등을 아무런 작업없이 바로 쓸 수 있다. 윈도XP에서는 따옴표(" ")를 사용하는 등 특별한 방법으로써 환경변수의 값에 쓸 수 있다. 다시 말해 윈도XP에서는 좀 더 복잡한 방법을 사용해야 한다. 도스에서는 환경변수의 값에 <(보다 작은; Less than), >(보다 큰; Greater than), |(bar; pipe)와 같은 세 가지 특수문자를 쓸 수 없다. 윈도XP에서는 앞서 말한 특별한 방법으로써 환경변수의 값에 쓸 수 있다.

도스의 환경변수

MS-DOS v6.22를 설치했을 때의 환경 변수는 그다지 많지 않다. COMPSPEC, PROMPT, PATH, TEMP, 이렇게 네 개가 전부이다.

COMPSPEC=C:\COMMAND.COM
PROMPT=$p$g
PATH=C:\DOS
TEMP=C:\DOS

참조 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


'스크립트' 카테고리의 다른 글

환경 변수 2  (9) 2009.05.03
이런저런 이야기  (6) 2009.03.30
스크립트란 무엇인가? 배치파일이란 무엇인가?  (8) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

블로그를 연 지 두 달이 되었다. 첫 달과 둘째 달이 또 다르더라.

스킨! 아, 스킨!

맘에 드는 스킨이 없다. 그렇다고 구조를 이해하여 수정할 수 있는 실력도 없다. 수정은 하겠지만 겨우 글자 크기나 고치는 수준이다. 그래서 단순해 보이는 스킨을 골랐건만, 그것도 상당히 복잡하다. 응? 공부하라고?! 그래야겠다. 조금씩 고쳐봐야겠다.

집중!

무언가 집중이 되지 않는다는 느낌이 온다. 하지만 그렇다고 멈추기에는 지금까지 써 온 글이 아깝다. 에이! 모르겠다. 그냥 지금처럼 가자!

그리고 정치나 시사 이야기는 안 쓰려고 했는데, 그럴수록 다른 사람 블로그에서 자꾸 쓰게 된다. 그냥 그런 내용도 올려 버려? 흠, 고민만 하고 만다. 어쩌면 블로그를 하나 더 만들 수도... ㅡㅡa

할일

여전히 나에게 맞는 간소한 스킨을 만드는 계획은 유효하다. 그저 '언젠가는 만들 수 있겠지.'라고 생각하며 참고 지낼 뿐일까?

이 글은 스프링노트에서 작성되었습니다.


'일기' 카테고리의 다른 글

다사다난 셋째 달  (5) 2009.05.30
그가 죽었습니다.  (1) 2009.05.23
아이디  (0) 2009.04.06
블로그, 첫 한 달  (0) 2009.03.28
나는 백수인가?  (0) 2009.03.24
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

팁텍

토탈커맨더 한국 사용자 포럼(Total Commander Korean Forum)에 압축 파일 내의 그림을 볼 때의 문제라는 게시글이 올라왔다. lhuntr 님이 작성한 글인데, 그는 꿀뷰이미지샘, 엔젤뷰 등의 방식으로 보기를 바랐던 모양이다.

팁의 구현

일단 토탈커맨더에서 그림 파일을 보려면 리스터 플러그인 Imagine(1.0.4 이상)이 설치되어 있어야 한다. Imagine이 설치되어 있다면, 토탈커맨더의 압축 파일 내 목록 화면에서 <F3>을 눌러 그림 파일을 볼 수 있다. 이때 토탈커맨더와 Imagine은 기본설정이라고 가정한다.

그림 파일이 있는 압축파일 sample.zip이 D:\Pictures 폴더에 있다고 하면 다음과 같다.

sample.zip 파일에서 <Enter>를 눌러 그 안으로 들어가면 다음과 같은 목록을 볼 수 있다.

토탈커맨더는 압축파일 안의 파일 목록을 \sample.zip\ 과 같은 (가상) 폴더로 바꾸어 보여준다. 이 방식은 대부분의 파일 관리자에서 채택하는 방식이며, 윈도 탐색기에서도 Zip 폴더 기능이 활성화되어 있다면 저와 비슷한 방식으로 보여준다.

윈도 탐색기의 Zip 폴더

윈도 탐색기의 Zip 폴더

파일 1개 보기

압축파일 안에서 보고 싶은 파일에 커서를 옮긴 뒤 <F3>을 누르면 그림 파일을 볼 수 있다.

위 화면에서 상태 표시줄에는 여러 정보가 나타나 있다. 특히 상태 표시줄의 첫번째에 보이는 1/1 부분은 Imagine이 보여줄 전체 파일은 1개이며, 그 가운데 1번째 파일이라는 뜻이다.

스페이스바를 눌러 다음 파일 보기를 한다. 그게 아니라면 메뉴바에 있는 아이콘을 클릭하면 된다.

그러면 다음과 같이 첫 번째 파일로 이동할는지를 묻는다.

이는 위에서 설명한 상태 표시줄에 나타난 바와 같이 보여줄 전체 파일이 1개이므로, 폴더에 더 이상 파일이 없다고 판단하여, 위와 같은 메시지를 보여주게 된다는 뜻이다.

꿀뷰처럼 보기

윈도 탐색기에서 꿀뷰로 압축파일을 보게 되면, 압축파일 안에 들어있는 그림 파일을 보여주게 된다.

꿀뷰3에서 그림 파일을 보여주는 화면

꿀뷰3에서 그림 파일을 보여주는 화면

위 그림에서 보면 [1/122]라는 부분에서 압축 파일 내부의 파일 갯수를 나타내 준다. 이때 파일 갯수는 꿀뷰에서 보여줄 수 있는 파일만 계산한다. 다시 말해 파일이 10개가 있더라도 꿀뷰가 보여줄 수 있는 그림 파일이 2개라면 갯수는 2로 나타난다.

토탈커맨더에서 꿀뷰처럼 보려면, 압축 파일 안에서 보고 싶은 파일을 여러 개 선택한 뒤 <F3>을 누르면 된다. 이때 꿀뷰처럼 보려면 압축 파일 안의 모든 파일을 본다는 뜻이므로 전체 선택을 한 뒤에 보는 것이 좋다. 선택 단축키는 <회색 +>이다. 이것은 키보드 오른쪽의 숫자키패드에 있는 +키를 가리킨다.

위 두 그림처럼 파일을 선택하고 <F3>을 누른다.

그러면 압축을 푸는 작업을 한다. 위에서 파일 1개를 볼 때도 이 작업을 했지만, 너무 빨라서 작업을 하지 않는 것처럼 여겨질 뿐이다.

그다지 달라 보이지 않지만 몇 가지 달라진 부분이 있다.
우선 Lister 프로그램(토탈커맨더 내장 뷰어)의 메뉴 바 오른쪽에 1/21 부분이 생겼다. 이것은 파일 1개만 볼 때는 나타나지 않다가 2개 이상을 Lister 프로그램에서 볼 때 나타난다. 이것은 압축 파일 안에서 총 21개의 파일을 선택했고, 그 가운데 1번째 파일이라는 뜻이다.
그 다음으로 상태 표시줄에서도 변화가 생겼다.

위 상태 표시줄을 잘 살펴보면 아까는 1/1 로 나타났지만, 지금은 1/19로 나타난다. 이것은 압축파일 내부에서 선택한 파일 가운데 19개 파일만 Imagine 플러그인이 지원하며, 그 가운데 1번째 파일임을 뜻한다.

위 파일 보기 화면에서 스페이스바 등을 눌러 다음 파일 보기를 하면 다음 파일을 잘 보여준다.

조금 복잡한 과정을 거치기는 했으나, 꿀뷰가 설치되어 있지 않을 때 그것을 흉내낼 수 있는 방법이다.

관련 문서

외부 사이트

이 글은 스프링노트에서 작성되었습니다.


'벌레와 팁 > ' 카테고리의 다른 글

ISO/UDF 이미지 파일 보기 및 풀기 1  (0) 2009.05.19
티스토리에서 치환자 출력하기  (2) 2009.05.12
버그리포팅이 무시되는 경우  (0) 2009.04.25
DOS에서 숨김 파일 보기  (0) 2009.04.24
금칙어 피해가기  (0) 2009.04.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

우연히 AhnLab V3 Internet Security 2007 Platinum 삼성생명 번들판을 사용하다가 & 문자(앰프(Amp) 문자)가 들어간 경로를 정확하게 표현하지 못하는 현상을 발견하게 되었다.

벌레의 유형

  • 경로명을 표시하라고 했더니 메뉴를 표시하는 것으로 착각하는 벌레이다.

벌레의 발견

폴더 경로명을 제대로 보여주는지를 알아보기에 앞서 다음과 같은 작업을 하였다.

  1. 프로그램을 인터넷을 통해 구하였다. 이때 백신의 바이러스 패턴은 수동 업데이트의 경우 4월 27일자를 사용했고, 자동 업데이트의 경우 4월 28일에 업데이트하여 사용했다.

    1. AhnLab V3 Internet Security 2007 Platinum(이하 'V3 IS') 안철수바이러스연구소 시험판
    2. V3 IS 삼성생명 번들판
    3. V3 365 클리닉
    4. V3 Lite
    5. V3+ Neo
    6. 그밖에 기업용 제품이나 서버용 제품은 시험하지 않았다.
  2. 바이러스가 포함된 파일을 인터넷을 통하여 구하였다.

    1. eMule 프로그램에서 크랙, 망가 등으로 검색한다.
    2. 검색 결과에서 무작위로 다운로드한다.
    3. 바이러스를 포함하는 파일을 찾아낸다.
  3. 가상머신 프로그램인 버추얼박스에 게스트OS로 윈도XP와 MS-DOS를 설치한 뒤 백신을 설치하고 경로를 어떻게 표시하는지를 조사하였다.

    1. 버추얼박스에 윈도XP와 MS-DOS를 각각 설치한다.
    2. 백신을 복사한다.
    3. 스냅샷을 설정한다.
    4. 백신을 설치한 뒤 바이러스 검사를 하면서 경로 표시를 조사한다.
    5. 작업이 끝나면 3번 작업으로 되돌려서, 다른 백신으로 작업한다.

또한 파일시스템에 따라 결과가 달라지지 않을까 염려하여 NTFS와 FAT에서 시험하였으나, 같은 결과가 나왔다. 그래서 FAT의 조사 결과는 생략하였다. 또한 V3+ Neo는 FAT를 검사할 때 윈도의 명령 프롬프트와 MS-DOS의 명령 프롬프트에서 서로 다른 결과가 나오지 않을까 걱정했으나 이 역시 같은 결과가 나왔으므로 MS-DOS의 명령 프롬프트의 결과는 생략하였다.

참고로 맨 처음 발견된 경로 표시 벌레는 다음과 같다.

빨갛게 표시한 부분에서 경로명이 잘못 표시되고 있다.

위 그림에서 빨갛게 표시한 부분은 v3-path-error-1.png 라고 나타나 있는데(연두색 사각형은 임의로 표시한 것이다), 이때 S자에 밑줄이 그어져 있다.

AhnLab V3 Internet Security 2007 Platinum 시험판

V3 IS 안철수바이러스연구소 시험판을 사용하였다. 시험판은 정품과 같으나 30일 동안 사용할 수 있는 버전으로, 정품이 가진 기능을 모두 가지고 있다. 심지어 벌레까지도. 그렇기 때문에 이번 시험에 사용하였다.

빨갛게 표시한 부분에서 경로명이 잘못 표시되고 있다.

검사 폴더라는 부분에서 소문자 o밑줄이 그어져 있다.

위의 목록에서 보면 밑줄이 그어진 글자는 표기가 잘못된 부분이다. 예컨대 D:\MSoft 경로명의 경우 실제로는 D:\M&Soft 라는 경로명을 가지고 있다. 앰프 문자(&)와 뒤따르는 로마자가 함께 해석되어 로마자+밑줄의 형태로 바뀌는 벌레이다.

AhnLab V3 Internet Security 2007 Platinum 삼성생명 번들판

삼성생명 보험 가입자 또는 삼성생명 웹사이트 회원에게 무료로 제공되는 V3 IS 삼성생명 번들판은 맨처음에 이 벌레를 발견한 제품이다. 확인을 위해 한 번 더 조사하였다.

위에서도 밑줄이 그어진 글자가 있다.위에서도 밑줄이 그어진 글자가 있다.

V3 365 클리닉

V3 365 클리닉은 토털 PC헬스 케어를 지향한다고 홈페이지에서 설명하고 있다. 이 제품은 안철수바이러스연구소에 가입한 사람만 설치할 수 있다. 설치 과정에서 아이디와 패스워드를 물어보므로 먼저 홈페이지에서 가입해야만 한다.

V3 365 클리닉에서는 경로명을 정확하게 표시해 준다.V3 365 클리닉에서는 경로명을 정확하게 표시해 준다.

위의 그림에서 보듯이 D:\MSS&oft 와 같은 경로명을 정확히 보여주고 있다.

V3 Lite

V3 Lite는 V3 365 클리닉의 축약 버전으로 여겨지며, 개인 사용자에게는 무료이며, 기업 사용자에게는 사용이 허가되어 있지 않다. 기업 사용자는 V3 Internet Security 7.0 Enterprise나 V3 Internet Security 7.0 Platinum Enterprise 제품을 사용하도록 권장하고 있다(참고 : V3 Lite 기업 라이선스 안내).

V3 Lite 제품도 경로명을 정확히 표시해 주고 있다.V3 Lite 제품도 경로명을 정확히 표시해 주고 있다.

V3+ Neo

도스용 버전인 V3+ Neo는 개인 및 등록 사용자에게 무료로 제공되고 있다. 다른 무료 제품처럼 관공서나 단체에서는 업무용으로 사용해서는 안 된다.

역시 정확하게 경로명을 표현해 주고 있다.

벌레의 원인

처음 경로명을 엉뚱하게 표기해 주는 벌레를 조사할 때에는 V3 제품군에서 공통적으로 나타날 것이라고 생각했다. 그러나 AhnLab V3 Internet Security 2007 Platinum에서만 나타나고, 다른 프로그램에서는 나타나지 않았다. 물론 여기에서 시험하지 않은 기업용이나 서버용에서도 나타날 수 있는 벌레이다.

오류가 나는 부분은 대부분 앰프 문자(&)와 관련이 있다. 이것은 HTML 등의 마크업 언어에서 엔티티 문자를 나타내는 지시자로서 쓰인다. 예컨대 &amp; 및 &copy; 등이 그에 해당하며, 이것들은 각각 & 및 ⓒ 기호를 나타낸다.

또한 윈도 프로그래밍에서는 메뉴 등에서 단축키를 표시하는 방법을 제공하기도 한다.

위 그림은 HxD의 메뉴이다. 그런데 밑줄이 그어진 문자가 보인다. 그것은 Alt+(밑줄 문자)의 형태로 메뉴를 호출할 수 있다는 뜻이다. 다시 말해 <Alt+F>키로는 File 메뉴를 호출할 수 있다.

이는 인터넷 익스플로러에서도 마찬가지로 나타난다. 위는 한글 인터넷 익스플로러 6 sp2의 메뉴이다. 여기에서도 위와 마찬가지로 <Alt+F>키로는 파일(F) 메뉴를 호출할 수 있다.

이렇게 메뉴에서 눌러야 할 문자를 표시하기 위해서는 &(문자)의 형태를 사용하게 된다. 다시 말해 &A라고 하면 메뉴에서는 A 라고 나타나게 되며, 이를 위해서 Alt+(문자)의 형태로 호출할 수 있게 된다.

그런데 이러한 앰프 문자와 뒤따르는 로마자 표기를 경로명에서도 적용해 버렸기 때문에 이번과 같은 벌레가 발생하게 되었다고 생각한다.

회사 측 답변

2009년 4월 28일 현재 오류를 보고한 상태이며, 4월 29일 수정을 요청했고, 5월 7일 소스 수정이 완료되었으며, 6월 말 업데이트 때 적용될 예정이라는 답변을 이메일을 통해 받았다.

관련 문서 및 페이지

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

스프링노트를 사용하면서 여러 벌레를 발견했지만, 재현에 성공한 것은 거의 없다. 그러다가 바로 어제(2009년 4월 24일) 2개나 재현에 성공했다. 바로 스프링노트의 태그 표기 벌레와 지금 소개하는 링크 편집 벌레이다.

벌레의 유형

  • 수작업으로 만든 링크와 외부에서 복사하여 붙인 링크를 차별하는 벌레이다. 복사하여 붙인 링크를 편집하면 그것의 주소를 마음대로 바꾸어 버리는 벌레이다.

직접 만든 링크와 복사해 붙여넣은 링크가 다르게 해석되는 이유를 알 수 없다. 또한 어떤 경우에는 직접 만든 링크와 동등하게 취급하고, 어떤 경우에는 다르게 취급한다. 직접 만든 링크와 동등하게 처리하는 경우는 스프링노트에서 내 블로그로 발행한 문서에 포함된 링크가 대부분이었다. 그밖에 다른 웹페이지의 링크를 붙여 넣은 경우에는 모두 링크 주소를 바꾸어 버렸다.

벌레의 발견

벌레의 발견이라고 할 수도 있고, 링크의 비교라고 할 수 있는 작업이다. 

스프링노트의 링크 만들기 기능을 이용하여 만든 링크

가장 먼저 스프링노트의 링크를 HTML 코드로 살펴보자. 모질라 파이어폭스에는 선택한 소스 보기라는 기능을 제공하고 있다. 그것을 이용하면 링크 부분의 HTML 소스만 떼어 살펴볼 수 있다.

마우스 오른쪽 단추를 눌러 팝업 메뉴를 부른 화면

마우스 오른쪽 단추를 눌러 팝업 메뉴를 부른 화면

위의 작업을 통해 보게된 선택한 영역의 HTML 소스

위의 작업을 통해 보게된 선택한 영역의 HTML 소스

  1. <a href="http://salm.pe.kr/entry/Springnote-Tag-Bug" class="external newWindow" title="http://salm.pe.kr/entry/Springnote-Tag-Bug">스프링노트의 태그 표기 벌레</a>

스프링노트의 링크 만들기 기능을 이용하여 링크를 만들게 되면 위와 같이 class="external newWindow" 라는 클래스 선택자를 추가하게 된다.

다음과 같이 링크를 수정하면 링크 대상이 현재 링크된 곳을 가리키게 된다.

 

링크 수정/삭제를 선택하는 팝업

링크 수정/삭제를 선택하는 팝업


링크 수정/삭제 팝업에서 수정을 선택한 화면

링크 수정/삭제 팝업에서 수정을 선택한 화면

스프링노트의 링크 만들기 기능을 이용해서 만든 링크는 링크를 고칠 때 위와 같이 원래 주소, 곧 링크 대상을 유지해 준다.

스프링노트의 링크 만들기 기능을 이용하지 않은 링크

스프링노트의 링크 만들기 기능을 이용하지 않은 링크는 class="external newWindow" 라는 클래스 선택자를 가지지 않은 링크를 말한다.

도아의 세상사는 이야기의 게시글에서 링크 하나를 복사했다. 그런데 그것이 블로그 기사 제목이라서 아래와 같이 나타났다.

좌우 폭이 좁은 까닭은 화면 크기가 800×600px이기 때문이다.

좌우 폭이 좁은 까닭은 화면 크기가 800×600px이기 때문이다.

아무튼 단락제목2(HTML 태그로는 <H2>)에 해당하며, 녹색 글씨에 녹색 밑줄이 생긴 이유는 링크가 걸려 있기 때문이다. 이것을 위의 링크 수정하는 법대로 링크를 수정하는 과정은 아래와 같다.

우선 단락을 본문으로 바꾸었다.

그 뒤 링크 편집창(편집 애플릿?)을 띄우면 뜬금없이 "PermaLink :: 옥션의 어이없는 판매자"라고 나타난다. 저 글귀는 어디에서 나타났을까? 왜 웹 주소(URL 등)가 아닌 저런 문장이 나타났을까?

선택한 영역의 HTML 소스를 살펴보면 답이 나온다. 그렇다. 링크(A 태그)의 title 속성을 따다가 나타내 주고 있다.

이것을 확인하기 위해 다른 태그도 복사했지만, 역시나 title 속성을 따서 나타내 주고 있었다. 그렇다면 굳이 class="external newWindow" 클래스 선택자를 넣을 필요도 없었다는 말인데 왜 굳이 그렇게 하는지 이해하기 힘들었다.

기술적인 해석

기술적인 측면으로 본다면 단순히 하이퍼링크(A 태그)의 title 속성을 따올 뿐이며, 벌레라고 보기는 힘들었다. 그러나 주소를 정상적으로 링크 대상에 나타내려면 링크 주소와 title 속성을 항상 같게 해야만 한다는 점에서는 문제가 있다고 하겠다. title 속성은 누구나 정할 수 있지만, 대부분 링크를 설명하는 문구를 넣게 된다. 위에서 예로 든 링크도 "PermaLink :: 옥션의 어이없는 판매자"와 같은 글귀가 그것이다. "옥션에서 본 어이없는 판매자에 대한 링크"임을 나타내기 위해 title 속성을 저렇게 주었음을 알 수 있다.

스프링노트 링크 대상을 표시하는 문제를 해결하기 위한 방법으로도 그다지 좋지 않다고 생각한다. 물론 title 속성을 참조함으로써 간단한 코드를 만들 수 있다는 점에서는 동의한다. 하지만 이번과 같은 상황에서는 너무 단순한 것을 찾다가 낭패가 생긴 경우이다. 외부 링크인지만 검사했더라도, 외부 링크이면 title 속성이 아닌 href 속성을 참조하게 만들었다면 이번 벌레는 애초에 생기지 않았으리라 생각한다.

회사 측 답변

2009년 4월 27일 현재 오류를 보고한 상태이며, 수정하겠다는 답변을 받았다.

관련 문서 및 페이지

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

스프링노트를 자주 사용한다. 아니, 아예 끼고 산다고 해야 옳겠다. 블로그를 시작하면서부터 도아 님이 알려준 스프링노트를 써서 글을 발행하고 있기 때문이다. 처음 글 몇 개를 제외하고는 모두 스프링노트에서 작성했다.

그런데 최근에 자잘한 오류가 눈에 띄기 시작했다. 오류보고를 하려고 해도 재현을 하지 못해서 참고 있었다. 그러나 이번에 황당하게 재현하게 되어서 소개하고자 한다.

벌레의 유형

  1. 이 벌레는 남의 영역을 침범하는 벌레이다.
  2. 특정 웹브라우저에서는 자기 자신을 감추어버리는 은신술의 달인이다.

보통 경로명 등이 길어지면 경로명 일부를 ... (마침표 3개) 등으로 대치하는데, 이 벌레는 아예 태그가 있던 영역을 지워버렸다. 물론 인터넷 익스플로러에서는 다른 것이 표시되어야 하는 영역을 침범할 뿐 자기 자신의 일부를 그대로 나타내 주었다.

벌레의 발견

스프링노트에서 글을 작성하다가 너무 많은 태그를 입력하자 갑자기 태그 전체가 사라져 버렸다. 태그 고치기 단추와 태그 표시 단추가 모두 사라진 셈이다.

오류 없이 태그를 보여주는 화면

오류 없이 태그를 보여주는 화면

정상적인 상태에서는 위와 같이 나타난다. 이때 현재 편집하는 글의 상태를 알 수 있는 상태 표시줄만 따로 떼어내면 다음과 같다.

상태 표시줄 화면

상태 표시줄 화면

글을 편집하다 보니 태그를 너무 많이 입력하게 되었다. 그러자 내 파이어폭스에서 태그 표시 아이콘, 태그, 태그 편집 아이콘이 사라졌고, 아울러 페이지 히스토리 아이콘과 CCL 표시도 사라져 버렸다.

모질라 파이어폭스에서는 너무 많은 태그를 입력하자 아예 사라져 버린 태그 목록과 태그 표시 및 태그 입력 아이콘. 그리고 그 오른쪽 구성물도 사라졌다.

모질라 파이어폭스에서는 너무 많은 태그를 입력하자 아예 사라져 버린 태그 목록과 태그 표시 및 태그 입력 아이콘. 그리고 그 오른쪽 구성물도 사라졌다.

왼쪽 내비게이션을 감추자 비로소 입력한 태그 목록과 태그 표시 및 태그 편집 아이콘이 나타났다.

왼쪽 내비게이션을 감추자 비로소 입력한 태그 목록과 태그 표시 및 태그 편집 아이콘이 나타났다.

인터넷 익스플로러에서는 태그 목록과 태그 표시 아이콘은 남았으나, 태그 편집 아이콘과 그 오른쪽 구성물이 사라졌다.

왼쪽 내비게이션을 감추자 태그 편집 아이콘과 페이지 히스토리는 나타났으나, CCL 표시는 다시 나타나지 않았다.

위와 같이 모질라 파이어폭스(3.0.9판)와 인터넷 익스플로러(v6 sp2)에서는 그 정도의 차이가 있지만 제대로 화면에 출력해 주지 못하는 상태였다. 구글 크롬이나 오페라 등의 웹브라우저에서도 그다지 다르지 않은 결과를 나타내리라 생각한다.

현재 이와 관련한 해결책은 태그를 많이 입력하지 않는 방법뿐이다. 응급책으로는 왼쪽 내비게이션과 오른쪽 책갈피를 모두 감추고 쓰는 것도 한 방법이 될 수 있다.

회사 측 답변

2009년 4월 26일 현재 오류를 보고한 상태이며, 태그 표시를 수정하겠다는 답변을 받았다.

관련 문서 및 페이지

이 글은 스프링노트에서 작성되었습니다.

글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

들어가며

사용자는 프로그램을 사용하다가 버그가 발생하면 그것을 제작자(혹은 제작사)에 알려주게 된다. 이러한 행위를 버그리포팅(bug reporting; 오류 보고)이라고 하며, 이는 프로그램 수정판(patch version)이나 향상판(upgrade version)에 도움을 주게 된다.

그런데 이러한 버그리포팅을 제작자가 무시하는 경우도 있는데, 이럴 경우 사용자는 불쾌감을 느끼게 된다. 하지만 왜 버그리포팅이 무시되는지는 깊게 생각하지 않는 사람이 많다. 

우선 버그리포팅이 너무 추상적이기 때문에 무시된다. 둘째 재현이 되지 않는 경우에는 무시된다. 셋째로 개발자 측의 정책적인 이유에서 무시되기도 한다. 심지어 답변하는 측의 무지 또는 무성의 때문에 무시되는 일도 있다.

버그리포팅이 무시되는 이유

추상적인 버그리포팅

버그리포팅이 너무 추상적이기 때문에 무시되는 일도 있다. 버그패치를 하려면 구체적인 상황이 제시되어야 한다.

버그는 모든 경우에 발생하는 예는 매우 드물며, 대부분 특정 상황에서 발생하게 된다. 그러므로 버그가 발생한 상황을 구체적으로 기술할 필요가 있으며, 그게 어렵다면 특별한 버그 발생 조건을 명시해야 한다. 그것이 나타나지 않은 버그리포팅은 추상적이라 여겨지고 그 버그리포팅은 무시된다.

개발자 입장에서는 추상적인 상황에 대해 대처할 방법이 없다. 또한 프로그램의 내부 오류가 아닌 이상 버그는 반드시 외부로 표출되어야 하며, 그것은 거의 대부분 특정 조건에 따라 발생하게 된다. 이것은 그 상황을 구체적으로 설명할 수 있음을 나타낸다. 그러므로 반드시 버그가 발견되면 그 상황을 기록해 두어야 자신이 전달한 버그리포팅이 무시되지 않게 된다.

재현 불가

버그리포팅을 하기 전에 자신이 발견한 버그를 재현해 보아야 한다. 자신이 생각하는 그 상황에서 버그가 발생하는지를 시험해 보아야 한다는 뜻이다.

버그가 재현되지 않는다면 주로 (1) 그것은 일시적인 현상이거나, (2) 그게 아니면 내부적인 오류가 있는데, 그것이 사용자가 알지 못하는 어떤 이유로 외부로 표출된 경우이다. (1)의 경우는 프로그램 오류이기보다는 시스템의 문제이거나 설치된 프로그램끼리 충돌하는 경우 등으로 재현이 어려운 경우도 있고, 아예 그 상황 자체가 다시 나타나지 않을 수도 있다. (2)의 경우는 일반 사용자는 알 수 있는 방법이 없고, 이 경우 버그의 재현은 거의 불가능에 가깝다.

버그가 재현되지 않는 또 다른 이유는 버그의 발생원인을 착각했기 때문이다. 이 경우 버그는 존재하지만 발생원인을 착각했기 때문에 자신이 생각하는 이유로는 재현되지 않게 된다.

마지막으로 사용자는 재현에 성공했지만 개발자 측에서는 재현에 실패하는 경우도 있다. 이것은 하드웨어적인 문제가 겹치거나 사용자의 시스템 환경과 개발자의 시스템 환경이 판이하게 다른 경우에 발생한다.

정책적인 이유

개발자나 회사의 정책적인 이유로 버그리포팅이 무시된다.

개발자 측의 정책에 따라 최신 버전이 나오게 되면 이전 버전에 대한 버그리포팅은 무시되기도 한다. 예컨대 인터넷 익스플로러 5 이전 버전은 현재 버그리포팅을 무시하고 있다.

버그 패치를 적용하면 속도 저하 등의 현상이 생기는 예도 있다. 그런데 그 속도 저하 등 성능 저하가 심하다면 버그리포팅은 일정 기간 무시되기도 한다. 물론 중대한 보안버그라면 반드시 적용되겠지만, 그렇지 않다면 일정기간 무시될 수 있다는 말이다.

마지막으로 경쟁사 제품과 관련한 버그는 무시하는 경우가 있다. 이런 경우 고의적으로 경쟁사 제품의 설치 및 사용을 막는다는 의심을 받기도 한다.

답변자의 무지 또는 무성의

답변자가 글을 제대로 읽지 않거나 버그리포팅 내용을 확인하지 않아서 무시되는 경우도 있다. 나와 네이버는 악연인지 버그리포팅이나 항의글이 무시되는 경우가 많았다. 특히 답변자가 해당 내용을 알지 못하거나, 버그리포팅 내용을 확인하지 않아서 엉뚱한 답변을 하는 경우도 있었다.

  • 네이버 결계 벌레 : 파일이 존재함에도 "삭제한 파일이기 때문에 접근할 수 없다."라고 답변이 왔다. 또한 그 게시글에서 분명히 "홈페이지 등록 갱신을 거부합니다."라고 했는데, 나중에는 네이버 측에서는 내가 "홈페이지 등록 요청"을 했다고 주장했다.
  • 네이버에 파이어폭스에 대해 물었는데 익스플로러에 해당하는 답변을 하는 경우가 있다. 초보적인 오류임에도 다른 사이트에서는 일어나지 않는 일이 네이버에서는 몇 차례나 일어난다.
  • 그밖에 자주 나타나는 무성의한 답변으로는, 프로그램이나 제작자를 가리지 않고, 버그리포팅에 나타난 내용을 해결책으로 제시하는 경우이다. 다시 말해 버그리포팅을 할 때 A라는 작업을 했음에도 결과가 나아지지 않았다고 버그리포팅을 했음에도 다시 A라는 작업을 하라고 답변하는 경우가 많다.

답변자의 무지 또는 무성의는 매우 심각한 결과를 가져온다. 왜냐하면 버그리포팅이 무시되는 경우 일반적으로 사용자는 그 사실을 알 수 없다. 그러나 이러한 답변자의 무지나 무성의는 답변자가 바로 알아차릴 수 있고, 그에 대해 허탈함이나 불쾌감을 가지게 된다. 이는 대답하는 사람이 가져야 할 기본적인 소양, 곧 "질문 내용이나 버그리포팅 내용을 제대로 읽기"를 하지 않았다는 말이 되기 때문이다.

대응

버그리포팅이 무시되면 대응할 방법이 거의 없다. 추상적인 버그리포팅의 경우는 "개발자에게 의견을 전달했다."라는 식으로 말할 뿐이며, "재현 불가"는 재현할 수 없다는 말을 되돌려준다. 정책적인 이유라면 그 역시 "회사 정책상 지원하지 않는다."라는 말을 하게 되며, 답변자의 무성의는 어쨌든 답변은 받은 셈이다.

이때 추상적인 버그리포팅이나 재현 불가는 당장 할 수 있는 일이 없다. 그저 다시 버그가 나타나기를 기다려야 한다. 버그가 다시 나타나면 다행이고 그게 아니라면 어쩔 수 없이 포기해야 한다. 물론 나중에 다시 버그가 발생하면 그때 다시 버그리포팅을 하면 된다. 한/글/ 2005에 나타난 구결 표기 오류를 참조하라.

회사 정책상의 이유라면, 그것이 중대한 버그인지를 먼저 생각해야 한다. 사소한 버그이거나 다른 기능과의 충돌 때문에 "구현하지 않은 기능"일 수도 있기 때문이다. 다시 말해 사용자 설명서 등에 "불가능한 기능" 또는 "제공하지 않는 기능"이라는 식으로 기술되어 있다면 일단 버그가 아니다. 물론 사용자 입장에서는 버그라고 여겨지겠지만, 회사의 입장에서는 버그가 아니므로 "회사 정책"상 버그 수정은 하지 않게 된다. 만약 중대한 버그라면 반드시 추가로 버그리포팅을 하는 편이 좋다.

관련 문서

이 글은 스프링노트에서 작성되었습니다.

글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

팁텍

나는 자주 내 티스토리 블로그에 들어오는 사람들이 어떤 유입경로를 통해 들어오는지를 살펴본다. 딱히 그 사람들을 감시한다는 생각은 없고, 팁이나 벌레 글을 쓸 때 이용하기 위해서이다. 그런데 오늘(4월 24일) 재미있는 것을 발견했다. "이런 것도 모를까?"라는 생각이 들 만한 문제가 나타났다.

"dos 에서 감춰진 파일 보기"라는 저 내용이 처음에는 무엇인지 알지 못했으나, 잠시 후에야 "숨김파일"을 보려고 함을 알 수 있었다.

팁의 발견

감춰진 파일(숨김파일)을 본다는 말은 그 파일의 내용을 본다는 말이 아니라 파일 목록에서 그것이 나타나게 한다는 뜻이다. 도스에서는 여러 가지 방법을 제공하고 있다. 물론 여기에서 설명하는 방법은 윈도의 명령 프롬프트에서도 적용할 수 있다.

DIR 명령

우선 디렉터리에 있는 파일과 하위 디렉터리 목록을 보여주는 명령어인 DIR을 이용해 보자.[각주:1]

버추얼박스에서 MS-DOS 6.22를 실행시켰다.

영문 버전이지만 한글 버전과 별로 다르지 않다. 어쨌든 디렉터리 목록을 보기만 하면 되니까 그게 중요한 게 아니다.

위에서 보면 "11 File(s)"라는 부분이 있다. C:\TEMP 디렉터리는 이번 팁을 작성하면서 새로 만든 디렉터리이다.

이때 이 폴더에는 숨김파일이 있다. 숨김파일만 보려면 /AH 선택자(옵션/선택사항)를 사용하면 된다.

위와 같이 6개의 숨김 파일이 있다고 보여준다.

위의 화면은 차례대로 읽기 전용 파일, 시스템 파일, 모든 속성의 파일의 목록을 보여주는 화면이다.

ATTRIB 명령

DIR 명령을 쓰지 않고도 파일 목록을 볼 수 있다. 바로 파일 속성을 보여주는 ATTRIB 명령을 이용하는 방법이다.

앞서 DIR 명령에서는 모두 19개 파일이 보였는데, ATTRIB 명령에서는 17개만 보인다. 이것은 [.]과 [..] 디렉터리는 현재 디렉터리와 부모 디렉터리를 나타내는 디렉터리로서 실제로 존재하지 않기 때문에 ATTRIB 명령에서는 보여주지 않는다. 위의 목록에서 H 표시가 있는 파일이 숨김 파일이다.

다만 ATTRIB 명령에는 숨김파일만 보는 방법은 존재하지 않는다. 만약 한 화면을 넘기게 된다면 MORE 명령을 함께 이용하면 된다.

  1. ATTRIB | MORE

다른 유틸리티 이용

M-Dir이나 NC(노턴 커맨더) 등의 유틸리티를 이용하여 숨김 파일을 볼 수 있다.

M-Dir에서 숨김 속성 파일을 보여주고 있다. 파일 목록을 보여주는 아래쪽에 디렉터리 정보를 보여주고 있다. 그 맨 왼쪽에 QH라고 된 부분이 숨김 파일을 보여주고 있다는 표시이다(정확하게는 H 부분이다.). 또한 목록에서 파일 크기 부분이 자주색으로 보이는 파일이 숨김 파일이다.

윈도 탐색기

윈도 탐색기는 도스가 아니지만, 그래도 알고 있으면 유용하게 써먹을 수 있다.

숨김 속성을 보여주기 전 화면

숨김 속성을 보여주기 전 화면 (아래 상태표시줄에 숨김 파일이 4개 있다고 알려주고 있다.)

폴더 옵션에서 숨김 파일 및 폴더를 표시하도록 설정

폴더 옵션에서 숨김 파일 및 폴더를 표시하도록 설정

폴더 옵션에서 설정한 뒤의 화면. 숨김 속성의 파일은 희미하게 보인다.

폴더 옵션에서 설정한 뒤의 화면. 숨김 속성의 파일은 희미하게 보인다.

관련 문서

이 글은 스프링노트에서 작성되었습니다.

  1. DIR의 사용법을 알고 싶다면 명령 프롬프트에서 dir /? 라고 입력하기 바란다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

티스토리에서 이미지 갤러리를 넣으려고 했는데, 뜻밖에도 본문에 삽입된 것은 슬라이드쇼였다. 의도하지 않은 일이 생겨서 기분이 좋지 않았는데, 삽입된 슬라이드쇼가 정상 동작하지 않았다. 첫째 이미지와 마지막 이미지를 보여주지 않았다. 다시 말해 7개의 이미지로 이미지 갤러리를 만들어서 본문에 넣게 했는데, 실제로 본문에 들어간 것은 5개의 이미지를 가진 슬라이드쇼였다.

벌레의 유형

  1. 맏이와 막내를 왕따시키는 별난 벌레이다. 아, 벌레는 원래 이상한 놈들이라고. 그 말도 맞다.
  2. 실제로는 저와 관련없이 업로드 실패 시에 나타나는 벌레이다.

한편 티스토리나 다른 블로그에서 등장했던 변신술을 익힌 벌레가 여기에서도 등장한다고 생각했다. 이미지 갤러리를 만들라고 하니까 왜 슬라이드쇼를 만들어 버렸기 때문이다. 그러나 검색 결과 티스토리 매뉴얼 블로그[확장 업로드 기능] 업로드된 파일을 다양한 형태로 이용해 봅시다[이미지] 슬라이드쇼의 사용법을 알고 싶어요라는 글이 있었다. 결국 이미지 갤러리를 만들게 되면 슬라이드쇼로서 그것을 구현한다는 사실을 알게 되었다. 그밖에 사항은 다음 고객센터에서 TISTORY > 글 관리 부분을 살펴보기 바란다.

벌레의 발견

[확장 업로드 기능] 업로드된 파일을 다양한 형태로 이용해 봅시다라는 블로그 기사에서 이미지 갤러리는 슬라이드 효과를 자바스크립트를 이용하여 갤러리로 생성한다고 설명하고 있다. 나는 그것을 몰랐지만, 아무튼 HxD 소개 기사를 쓰면서 이미지 갤러리 기능을 이용하여 슬라이드쇼를 만들었다.

위의 그림에서 빨갛게 표시한 부분(? (경)자처럼 보이는 부분)을 클릭하여 이미지 갤러리를 만들었다. 이때 파일을 7개 선택하였다.

그런데 실제로 만들어진 이미지 갤러리에서는 위와 같이 5개의 파일만 포함되어 있다고 나타나고 있었다. 참고로 저 저작권 화면은 2번째 파일이다. ▶▶ 아이콘을 클릭하여 다음 파일을 살펴보았다. 그럼으로써 알게 된 사실은 첫 파일과 마지막 파일이 나타나지 않는다는 점이었다.


위의 두 파일은 모질라 파이어폭스(v3.0.9)에서의 티스토리 편집창 화면이다. 두 화면 모두 오른쪽에 보면 파일이 7개임을 알 수 있다. 이미지 갤러리를 만들때 순서가 흩트러지기에 파일명 맨 앞에 숫자를 붙여두었다. 다시 말해 1번부터 7번까지 있다는 말이다. 첫 화면은 위지위그 편집기 모드이고, 두 번째 화면은 HTML 편집 모드이다.

첨부한 파일의 수를 세었다. 그러나 위와 같이 모두 7개였다. 결국 화면에 나타낼 때 오류가 생긴다는 사실을 알게 되었다.

혹시나 하는 마음에 인터넷 익스플로러(v6 sp2)에서도 시험해 보았다. 결과는 마찬가지였다.

결국 편집창 상단에 있는 슬라이드쇼 아이콘(Tistory-SlideShow-Icon)을 클릭하여 이미지 갤러리를 삽입하게 되었다. 그 과정에서 알게된 이 버그가 이미지 파일을 정확히 인식하지 못해서 발생하고 있다는 심증을 갖게 하였다.

위의 그림은 슬라이드쇼에서 업로드시킨 이미지 파일이다. 그런데 조금 이상한 점이 보이지 않는가? 바로 첫째와 둘째 파일은 이미지의 크기와 파일 크기가 나타나고 있으나, 셋째 파일은 파일 크기만 나타나고 있다.

황당한 점은 이미지 갤러리로 만든 슬라이드쇼에서는 정확히 인식하지 못한 파일은 최종 결과에서 빼버리고 슬라이드쇼를 만들지만, 슬라이드쇼 아이콘을 클릭하여 만든 슬라이드쇼에서는 제대로 인식하지 못하는 파일도 최종 결과에 포함시켜 슬라이드쇼를 만들어준다. 이렇게 제대로 인식되지 않는 원인으로는 업로드 실패일 가능성이 가장 높다고 생각한다.

벌레의 제거

이 벌레를 제거하는 방법은 단순하다.

아무리 해도 안 되는 일은 그냥 포기하고 다시 업로드 하면 된다. 이미 업로드 된 파일로 이미지 갤러리를 만들려고 해도 안 된다면 그냥 다시 업로드하는 쪽이 낫다는 말이다. 어차피 내 예상대로 업로드 오류였다면, 다시 업로드함으로써 그 벌레는 사라지게 된다. 실제로 HxD 소개 기사는 현재 이미지 갤러리가 제대로 보이고 있다.

또한 애초에 슬라이드쇼 아이콘을 클릭하여 슬라이드쇼를 만들어도 된다. 엎어치나 메치나 같은 결과를 보여주기 때문이다.

회사 측 답변

이 문제는 버그 리포팅을 하지 않았다.

관련 문서

이 글은 스프링노트에서 작성되었습니다.

글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

HxD(Freeware Hex Editor and Disk Editor)는 작지만 강력하고 유용한 프로그램이다. 특히 쓸 만한 헥스에디터나 디스크에디터를 구하는 사람에게는 매우 좋은 프로그램이라 할 수 있다. 공짜로 쓸 수 있어 더욱 좋은 프로그램이다.

ISO 파일의 내부 구조를 알게 되었는데, 그때 ISO-9660 파일과 ISO-UDF 파일을 구분하는 내부 문자열을 찾으려고 헥스에디터를 구하고 있었다. 물론 토털커맨더에 내장된 뷰어에도 헥스뷰어(16진수로 보기) 기능이 있었지만, 그 값을 복사하는 기능이 없었다. 그래서 여러 프로그램을 찾았는데, 대부분 상용(또는 셰어웨어)이거나 기능이 미흡했다. 그러다가 우연히 발견하게 된 프로그램이 바로 HxD였다. 처음에는 그저 그런 프로그램으로 여겼으나 자잘한 여러 기능과 사용자를 위한 내보내기 기능이 잘 갖추어진 프로그램임을 알게 된 뒤로 다른 프로그램은 전혀 쓰지 않고 있다.

프로그램 정보

  • 저작권자/제작자 : Mael Horz (마옐 회르츠)
  • 운영체제 : 윈도 95, 98, ME, NT 4, 2000, XP, 2003 및 Vista
  • 버전 :  1.7.7.0 (2009년 4월 3일자)
  • 홈페이지 : http://mh-nexus.de/en/hxd/
  • 다운로드 페이지 : http://mh-nexus.de/en/downloads.php?product=HxD (인스톨 버전과 포터블 버전이 있다. 주의하기 바란다.)
  • 저작권/라이선스 : 프리웨어.
  • 평가 : @@@@@@@@@@ ( 9 / 10 )
  • 설명 :
    • 헥스에디트의 기본 기능에 충실하여 읽기 전용 방식을 지원한다. 그래서 단순히 파일 내용을 16진수 방식으로 보기만 할 때도 유용하다.
    • 헥스에디트로 열어볼 수 있는 대상이 파일은 기본적으로 지원하고, 디스크도 지원한다. 특이하게 디스크이미지와 램(메모리)도 열어서 작업할 수 있다.
    • 4기가바이트 이상의 파일도 문제없이 열 수 있다. 최대 8엑사바이트를 지원한다.
    • 무한 되돌리기 기능.
    • 유니코드를 지원하며, 또한 여러 데이터타입을 지원한다. 이 데이터타입에는 정수형이나 부동소수형 등이 있어서 프로그래머에게도 유용하다.
    • 프로그래머를 위해 여러 프로그래밍 언어에서 쓰이는 데이터로 출력할 수 있다.
  • 기타 :

    • 취향에 따라 설치 버전과 휴대용 버전을 받아서 사용할 수 있다.

실행 화면

  • 설치 화면 : 설치버전에만 있다.
    0123456
  • 처음 실행화면
    처음 실행 화면 (포터블 버전)

    위의 화면에서 [확인]을 클릭해야 실행된다. 저 알림말을 요약하면 HxD 프로그램이 있는 디렉터리에 환경설정 파일을 만들겠느냐는 질문이다.

  • 실행화면
    실행 화면

    왼쪽에 파일 오프셋, 중앙에 헥스모드, 오른쪽에 텍스트 모드가 있다.

  • 읽기 전용 화면
    읽기 전용 화면

    아래 상태표시줄에 Readonly라고 나타나 있다. 그 옆의 Overwrite는 쓰기 가능하게 되면 덮어쓴다는 뜻이다.

기능소개

읽기 전용 모드로 실행하려면 명령 프롬프트에서 다음과 같이 하면 된다.

HxD.exe /readonly 불러올파일.확장자

그밖에 다른 기능은 다음 기회에 설명하겠다.

관련글

  • [유틸리티] - MultiArc
  • [유틸리티] - Total Commander

이 글은 스프링노트에서 작성되었습니다.

'소프트웨어 > 소개' 카테고리의 다른 글

DOSBox  (0) 2009.08.25
Windows Automated Installation Kit for Windows 7  (2) 2009.05.09
MultiArc  (0) 2009.04.02
Total Commander  (0) 2009.03.28
AcroEdit  (0) 2009.03.23
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

들어가며

IF 명령 확장은 IF 명령이 가진 기능을 추가하고 넓힌다는 뜻으로, IF 명령으로 여러 가지 다른 처리를 할 수 있도록 해 준다. 앞서 나온 IF 문자열에서도 일부 소개하였지만, 윈도XP의 IF 명령은 상당히 뛰어난 기능을 제공하고 있다. 대부분 IF 문자열 기능에 포함되어 있고, 여기에서는 IF 문자열에서 설명하지 않은 부분만을 설명하겠다.

말뜻

IF 명령 확장에는 세 문자로 이루어진 비교 연산자(연산자 확장)와 IF CmdExtVersion 구문 및 IF Defined 구문이 있다.

  • 세 문자로 이루어진 비교 연산자는 IF 문자열을 참조하세요.
  • IF CmdExtVersion 수 : 윈도XP의 도움말 및 지원 센터의 설명에 따르면, Cmd.exe의 명령 확장 기능과 관련된 내부 버전 번호가 '수'보다 크거나 같은 경우에만 참인 조건을 지정합니다. 첫째 버전은 '1'이며 의미있는 향상을 명령 확장에 추가할 때 하나씩 증가합니다. 명령 확장을 사용할 수 없게 설정하면 CmdExtVersion 조건은 항상 거짓입니다. 명령 확장이 사용 가능한지를 검사할 때도 사용할 수 있습니다. CmdExtVersion의 정확한 값을 알고 싶다면 명령행에서도 "echo %CmdExtVersion%"라고 입력해 보라.
  • IF Defined 환경변수 : 지정한 환경변수가 정의되어 있으면 참값을, 그렇지 않으면 거짓값을 돌려준다.

IF CmdExtVersion 구문

명령확장을 사용할 수 있는지를 사용할 수 있다. 또한 명령확장의 버전을 검사하여 배치파일 실행 여부를 판단할 때도 쓸 수 있다.

  1. if CmdExtVersion 2 (
  2. echo 윈도XP에서 명령확장을 사용할 수 있습니다.
  3. ) else echo 윈도XP가 아니거나 명령확장을 사용할 수 없습니다.

위와 같은 형식이 가장 기본적이다. echo 문은 예시일 뿐이니, 저 부분에 자신이 실행하기를 바라는 명령을 넣으면 된다.

또한 단순히 명령확장을 사용할 수 있는지를 알려면 다음과 같이 하면 된다.

  1. if CmdExtVersion 0 (
  2. echo 명령확장을 사용할 수 있습니다.
  3. ) else echo 윈도NT 계열이 아니거나 명령확장을 사용할 수 없습니다.

명령확장을 사용할 수 있다면 "if CmdExtVersion 0"은 무조건 참이 되어야 하므로 위의 예제는 명령확장을 사용할 수 있는지를 검증해 주는 코드가 된다.

IF Defined 구문

IF Defined 구문은 IF 문자열 구문의 확장으로 볼 수 있다.

  1. if not * == %var%* echo Variable %var% is defined.
  2. if not * == %var%* echo 환경변수 %var%이(가) 정의되어 있습니다.

위 두 문장은 출력문만 다를 뿐 완전히 같다. 환경변수가 정의되어 있다면 항상 문자열 값을 가지게 되므로 위의 구문에서 참값을 가지게 된다. 결국 "환경변수 %var%이(가) 정의되어 있습니다."라고 출력한다는 뜻이다. 이때 *(별표) 대신 다른 문자를 사용해도 결과는 같으나, %, ^, & 등은 사용하지 않는 것이 좋다. 특히 %와 ^는 배치파일에서 특별한 작용을 하므로 if문에 사용했을 경우 그 효과를 정확히 알고 사용해야 한다.

위의 예제를 Defined 를 이용하여 고치면 다음과 같다.

  1. if Defined %var% echo Variable %var% is defined.
  2. if Defined %var% echo 환경변수 %var%이(가) 정의되어 있습니다.

if Defined 환경변수 구문을 이용하게 되면 세 환경변수―%errorlevel%, %cmdcmdline% 및 %cmdextversion%―를 사용할 수 있게 됩니다. %errorlevel% 환경변수는 마지막으로 실행한 프로그램이 돌려주는 종료코드를 저장하고, %cmdcmdline% 환경변수는 마지막으로 실행한 명령줄을 저장합니다. 그리고 %cmdextversion% 환경변수는 앞서 설명했듯이 명령확장의 버전을 저장하고 있습니다.

과제

지난 번 과제는 다음 구문을 옳게 고치라는 문제였습니다.

  1. rem Compare.cmd
  2. IF /i NOT %1 EQU %2 ECHO %1 is equal %2 ELSE ECHO %1 is not equal %2 .

아래와 같이 하면 된다. 빨간 색 부분을 유심히 살펴보기 바란다.

  1. rem Compare.cmd
  2. IF /i %1 EQU %2 ( ECHO %1 is equal %2 ) ELSE ECHO %1 is not equal %2 .

다음 예고

GOTO문을 설명하기에 앞서 잠시 쉬어가는(?) 시간을 갖도록 하자. 다음에는 환경변수에 대해서 알아보겠다.

이 글은 스프링노트에서 작성되었습니다.

'스크립트 > 배치파일' 카테고리의 다른 글

FOR 명령  (6) 2009.05.16
GOTO 명령  (3) 2009.05.05
IF 문자열  (4) 2009.04.18
IF EXIST  (0) 2009.04.15
IF ERRORLEVEL에 쓰이는 종료코드  (12) 2009.04.14
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

읽기에 앞서

여러분, 이 방법을 악용하지 맙시다.

이 팁에 나타난 방법은 그 금칙어를 꼭 써야 하기 때문에 이런 방법이 필요한 것이지, 무분별하게 쓰라는 뜻이 아닙니다.

팁텍

게시판 등에서 사용할 수 없게 지정해 둔 낱말이 있다. 이것을 금칙어라고 하는데, 이것이 순기능을 가지고 있으나, 역시 컴퓨터 프로그램에서 미리 정한 대로 작동하기 때문에 벌레가 있기 마련이다.

참고로 금칙어처럼 금지되는 낱말을 통틀어 금지어라고 한다. 이와 비슷한 개념으로 꺼리는 말을 금기어라고 하며, 금기어를 피하기 위해 쓰이는 말을 완곡어라고 부른다. 예컨대 변소는 금기어이며, 화장실은 완곡어입니다. 금기어가 가장 넓은 개념이고, 금지어와 금칙어는 좁은 개념이다.

팁의 발견

자주 가는 USBOffice 사이트에서 글을 올리다가 금칙어 문제로 올릴 수 없었다. 혹시나 하는 마음에 전부터 알고 있던 방법을 사용하여 게시물을 등록하게 되었다.

이 팁은 HTML 등을 허용하지 않으면 사용할 수 없는 단점이 있다는 점을 기억하자.

이미지로 올리기

그래픽 이미지 파일로 만들어서 올리는 것도 한 방법이다(켈베로스 님 의견).

예컨대 "알지도 못하고 보지도 못한다."라는 내용을 USBOffice 에서는 등록할 수 없었다. 

그림 1 : 댓글 편집 화면

그림 1 : 게시글 편집 화면

위와 같이 입력하고 [댓글 등록]을 클릭하면 다음과 같은 오류 메시지를 보여 준다. 참고로 댓글이 아니라도 이 팁은 적용할 수 있다.

그림 2 : 경고 화면

그림 2 : 경고 화면

억울하지만 저 낱말을 사용할 수 없다는 뜻이다. 캘베로스 님 의견에 따라 다음과 같이 그래픽 이미지를 만들어서 처리할 수 있다.

그림 3 : 예제 그림

그림 3 : 예제 그림

<그림 1>에서 나타난 [피일 첨부]를 클릭하여 <그림 3>의 예제 그림을 첨부한다. 그것을 본문에 넣으면 된다([본문 삽입]을 클릭하면 자동으로 본문에 넣어 준다.)

이 방법은 USBOffice처럼 xeEditor를 사용하는 게시판에서는 어디서나 쓸 수 있다.

HTML 코드 등을 이용하기

그래픽 이미지를 만들어 올리는 것은 보여주고 싶은 내용을 그대로 그래도 보여줄 수 있다는 점에서 매우 유용하다. 심지어 화면 배치까지 그대로 보여줄 수 있다. 화면 자체를 그림으로 바꾸기 때문이다. 다만 그래픽 이미지는 텍스트보다 그 크기가 크고, 화면 좌우 폭의 제한이 있는 경우에는 왼쪽이나 오른쪽이 잘리는 경우도 있다. 주로 오른쪽이 잘리게 된다.

그럴 경우 게시판에서 HTML 코드 등을 지원한다면 그것을 이용하여 우회할 수 있습니다. 이른바 더미 태그라는 방법입니다. 더미 태그 방식은 실제로 쓰이지 않는 쓰레기 값을 태그로서 넣는 방법입니다. 실제로 쓰이는 태그라도 내용 없이 태그만 넣게 되면, 그것도 더미 태그가 됩니다.

  1. 일단 스타일 편집기 탭에서 글을 작성한 뒤에 저장합니다. <그림 1>에서 "듣지도 못하고 보지도 못한 잡것."으로 바꾸어도 역시 댓글이 등록되지 않는다.
  2. 아까와 마찬가지로 경고 메시지를 보여주는데, 대부분 금칙어를 알려줍니다. 그것을 수첩 등에 적어 놓습니다. 위의 <그림 2> 참조.
  3. 스타일 편집기 탭이 아닌 HTML 편집기 탭에서 금칙어를 찾습니다. 찾기 단축키는 Ctrl+F 입니다.
  4. 금칙어 부분을 찾으면 금칙어의 사이에 <b></b>라고 넣습니다. 위의 "보지 못한"에서는 "보<b></b>지 못한"이라고 하면 됩니다.
    그림 4 : HTML 편집기 화면

    그림 4 : HTML 편집기 화면

  5. 다시 저장한다. 다른 금칙어를 알려주면 1번에서 4번을 반복한다.

 참고로 이 방법은 HTML 코드를 지원하는 게시판에서만 가능합니다. BB코드를 지원하는 게시판에서는 <b></b> 코드를 [b][/b] 코드로 바꿀 수 있습니다. 여기에서 삽입하는 <b></b>와 [b][/b] 코드는 "글씨를 굵게" 만드는 코드입니다. 코드가 단순해서 써먹기 좋습니다.

관련 문서

이 글은 스프링노트에서 작성되었습니다.

글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

들어가며

IF 문자열 비교 구문은 말 그대로 문자열을 비교하는 구문이다. 이것은 윈도NT 계열에서 추가된 환경 변수 등을 이용하여 여러 가지 작업을 할 수 있도록 해준다. 문자열의 내용을 분석하여 정수(십진수, 팔진수, 십육진수)로 변환하여 계산해 주기도 한다.

말뜻

IF 문자열 비교 구문에서는 일반적으로 등호를 두 개 겹쳐서 쓰게 된다.

  1. if [not] 문자열1==문자열2 명령 [else 구문]

위와 같은 형식을 이루게 된다. 이때 큰괄호( [ ] )로 묶인 부분은 반드시 쓸 필요는 없고 필요할 때 쓰면 된다. 또한 문자열에 공백을 포함하지 않았다면 따옴표를 사용하지 않아도 된다.

문자열 비교 구문의 명령 확장

확장 1

명령 확장이라고 말하기는 했으나, 사실 /i 선택자는 cmd.exe에 포함된 if 명령에서는 기본 선택자이다. 다만 도스의 if 명령과 호환성이 없기 때문에 확장이라고 칭했을 뿐이다.

문자열 비교 구문에서 /i 선택자를 쓰게 되면 그 기능을 확장할 수 있다. 이것은 대문자와 소문자를 무시하고 문자열을 비교하게 됩니다.

  1. IF STRING==string ECHO STRING is string.

위의 문자열 비교 구문은 거짓을 돌려주므로 화면에 아무것도 보여주지 않는다. 그러나 아래 문자열 비교 구문은 참을 돌려주므로 화면에 "STRING is string."이라는 문자열을 출력해 준다.

  1. IF /i STRING==string ECHO STRING is string.

확장 2

문자열 비교 구문에서는 세 문자로 이루어진 비교 연산자를 사용할 수 있다. 이것은 /i 선택자를 사용하여 융통성을 가지는데, 예컨대 숫자로만 이루어진 문자열은 수로 변환하여 비교해 준다.

세 문자로 이루어진 비교 연산자에는 다음과 같은 것이 있다.

  • EQU (같음)
  • NEQ (같지 않음)
  • LSS (보다 작음)
  • LEQ (작거나 같음)
  • GTR (보다 큼)
  • GEQ (크거나 같음)

비교 연산자는 언뜻 보아서는 숫자로 이루어진 문자열에만 쓰일 듯이 보이지만 로마자 등으로 이루어진 문자열에도 쓰일 수 있다.

예제 1

  1. IF /i 22 EQU 026 ECHO 22 is 026.

위의 코드는 10진수 22와 8진수 026을 비교하는 구문이다. 당연히 두 값은 크기가 같으므로 화면에 문자열을 출력해 준다.

  1. IF /i 026 EQU 0X16 ECHO 026 is 0X16.

위의 코드는 8진수 026과 16진수 0x16을 비교하는 구문이다. 당연히 두 값은 크기가 같으므로 화면에 문자열을 출력해 준다. 

두 예제는 /i 선택자가 문자열을 확장하여 "일반적으로 해석"하는 예시이다. 다시 말해 문자열 22는 10진수 22로 해석해 주며, 026은 8진수로, 0x16은 16진수로 해석해 준다. 10진수는 0으로 시작할 수 없으며, 0으로 시작하는 수는 8진수이거나 16진수가 된다. 또한 0으로 시작하는 문자열 가운데 0x로 시작하는 문자열은 16진수로 여기게 된다.

하지만 089 등의 문자열은 올바르지 않으므로 오류가 발생하게 된다. 이는 8진수에 8과 9와 같은 숫자는 존재하지 않기 때문이다. 마찬가지로 0x9G 등의 문자열도 올바르지 않다고 여긴다. 이럴 경우 문자열을 수로 확장해 주지 않고, 문자열 자체(리터럴 문자열)로서 비교하게 된다. 참고로 순수한 문자열을 리터럴 문자열(literal string), 수치로서 변환되는 문자열을 숫자 문자열(number string / numeric string)이라고 부른다.

한편 다음에 오는 두 비교문은 서로 다른 결과를 가진다.

  1. IF /i 22 EQU 026 ECHO 22 is 026.

위의 비교문은 수치 비교문으로 참값을 돌려주므로 "22 is 026."을 출력한다.

  1. IF /i 22 == 026 ECHO 22 is 026.

위의 비교문은 리터럴 문자열 비교문으로 거짓값을 돌려주므로 아무것도 출력하지 않는다.

다시 말해 숫자로 이루어진 문자열을 숫자 문자열로서 비교하려면 반드시 문자로 이루어진 비교 연산자를 사용해야 한다.

또한 다음과 같이 사용할 수도 있다.

  1. IF /i abc EQU ABC ECHO abc is ABC.

또는

  1. IF /i NOT abc EQU ABC ( ECHO abd is ABC ) ELSE ECHO abd is not ABC .

앞서 말했듯이 세 문자로 이루어진 비교 연산자로 숫자 문자열뿐만 아니라 리터럴 문자열까지 비교할 수 있다.

  1. IF /i abc NEQ ABC ( ECHO abd is ABC ) ELSE ECHO abd is not ABC .

위의 비교문도 정상 작동한다.

예제 2

그렇다면 작거나 같음을 비교할 때는 어떻게 동작할까? LSS (보다 작음), LEQ (작거나 같음), GTR (보다 큼), GEQ (크거나 같음)과 같은 세 문자로 이루어진 비교 연산자를 이용하여 대문자와 소문자를 비교해 보자,

  1. IF /i 22 LSS 027 ECHO 22 is less than 027.

위 예제는 10진수 22가 8진수 027보다 작으면 뒤따르는 문자열을 출력하라는 문자열 비교문입니다.

그러면 다음과 같은 두 가지 예문은 어떻게 작동할까?

  1. IF /i abc LSS ABC ECHO abc is less than ABC.
  2. IF abc LSS ABC ECHO abc is less than ABC.

우선 1행은 아무런 출력이 없다. 왜냐하면 /i 선택자 때문에 대문자와 소문자를 무시하고 비교했기 때문이다. 그러나 2행은 소문자 abc가 대문자 ABC보다 더 작은 값으로 해석되어 문자열 "abc is less than ABC."을 출력해 준다.

  1. IF ABC GTR abc ECHO ABC is greater than abc.

마찬가지로 위의 코드는 대문자 ABC가 소문자 abc보다 더 큰 값으로 해석되어 "ABC is greater than abc."라는 문자열을 출력해 준다.

위와 같이 대문자와 소문자 비교에서 대문자가 소문자보다 더 크다고 판정함을 알 수 있다.

예제 3

그 다음으로 문자간 비교를 해볼 수 있다.

  1. IF d GTR a ECHO D is greater than A.

위의 예제는 문자여을 출력해 준다. 다시 말해 문자열 d가 문자열 a보다 더 큰 값을 가진다고 판단함을 알 수 있다. 반대로 아래와 같은 비교문도 성립한다.

  1. IF a LSS d ECHO a is less than d.

로마자 알파벳을 비교할 때 순서가 빠른 문자를 더 작다고 판단함을 알 수 있다.

  1. IF 가 LSS 나 ECHO 가 is less than 나.

한글 문자열을 비교할 때도 성립한다.

  1. IF 가 LSS d ECHO 가 is less than d.

한글을 로마자보다 더 작다고 판정하고 있다.

과제

아무도 검사하지 않는 과제가 또 나왔습니다. 헤헤 ^^a

  1. rem Compare.cmd
  2. IF /i NOT %1 EQU %2 ECHO %1 is equal %2 ELSE ECHO %1 is not equal %2 .

위의 배치 파일이 정상적으로 작동하도록 고쳐 보자.

다음 예고

IF 명령을 하나씩 짚어보자. (4) : IF 명령확장

이 글은 스프링노트에서 작성되었습니다.

'스크립트 > 배치파일' 카테고리의 다른 글

GOTO 명령  (3) 2009.05.05
IF 명령 확장  (1) 2009.04.22
IF EXIST  (0) 2009.04.15
IF ERRORLEVEL에 쓰이는 종료코드  (12) 2009.04.14
IF 기본 설명  (6) 2009.04.09
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

들어가며#

링크에 대해 많은 이들이 잘못된 상식을 가지고 있는 경우가 있어서 이 글을 쓰게 되었다.

우선 권리 관계만을 말한다면, 인터넷 HTML 및 XHTML 등에서 링크 자체는 링크 거는 사람의 권리이지만, 그에 앞서 게시물 게시자 및 저작권자의 허가를 얻어야 한다. 그러나 그 허가가 명시적일 필요는 없으며, 그러한 허가가 없더라도 금지하지 않으면 허가한 것으로 봅니다. 이것은 아주 중요합니다.

마크업 언어와 링크#

마크업 언어는 문서와 문서 사이의 연결을 링크로써 하고 있습니다. 다시 말해 링크가 없다면 마크업 언어로 작성된 문서끼리 연결할 수 있는 방법이 없습니다. HTML 등의 마크업 언어는 SGML로부터 나왔으며, 그 형제자매들은 모두 링크로써 서로와 연결되어 있습니다.[각주:1]

링크는 하이퍼텍스트로 이어진 관련 정보의 실체입니다. 이때 하이퍼텍스트는 사용자가 선택하는 쪽으로 접근할 수 있도록 조직화된 정보를 가리킵니다. 이때의 링크를 정확히 말하자면, 하이퍼링크가 됩니다.

하이퍼링크는 일반적으로 A 태그로서 나타냅니다. 그러나 링크는 하이퍼링크뿐만 아니라 IMG 태그나 EMBED 태그 등으로 외부 사이트에서 불러온 경우도 링크로 표현합니다. "의미의 확장"인 셈이죠.

링크 문제의 발생#

HTML이 생겨난 초기에는 이 링크가 문서 자체를 인용하는 것이 아니었기 때문에 거의 무제한으로 허용되었습니다. 여기에는 문서의 양이 많지 않은 것도 한 원인이 있었습니다.

그러다가 과도한 링크에 따른 웹서버의 과부하 등의 문제가 발생합니다. 또한 인터넷 광고를 통한 수익 모델에서 단순히 특정 사이트로의 링크만 제공하고 광고 수익을 올리는 웹페이지도 등장하죠. 인터넷 광고는 클릭을 해야 수익이 생기는 경우와 단순히 사용자에게 보여주기만 해도 수익을 얻는 경우가 있습니다. 이때 후자의 경우는 단순히 링크만 게시하고도 수익을 올린다는 점에서는 "무임승차"라는 비난을 받기도 합니다. 아무튼 이런 이유 등으로 하이퍼링크에 대한 법적 성격을 논의하게 됩니다.

또한 음원 등의 사용에서 다른 웹페이지의 음원이나 이미지(흔히 미디어)를 링크만으로 불러와서 사용했을 때에도 문제가 생깁니다. 자신이 그 음원이나 이미지에 대해 사용권을 가지고 있다면 문제가 없습니다만, 이렇게 불러오는 미디어의 경우 사용권을 가지고 있는 경우는 드뭅니다. 다시 말해 상대방 사이트의 음원을 허락 없이 쓰는 행위이며, 아울러 상대방 사이트의 전송량을 깎아먹는 행위입니다.

그렇게 차츰차츰 링크를 거는 쪽과 게시물을 게시한 사람(게시자) 사이에 불편한 문제가 하나씩 생겨나기 시작합니다.

링크와 권리#

과연 누구에게 권리가 있는지는 지금까지도 명확히 답하지 못하고 있습니다. 이는 어느 한쪽의 의견을 손들어줄 수 없는 아주 심각한 상황이 숨어있기 때문입니다.

링크하는 사람의 권리#

우선 링크하는 사람과 그의 권리에 대해서 생각해 봅시다. 링크하는 사람은 기본적으로 그 정보가 유용하다고 생각했기 때문에 링크를 하게 됩니다.

왜 함부러 링크하느냐?

그래서 링크하는 사람들은 저 질문에 대해 아주 화를 냅니다.

그 글을 널리 알려주었는데 무슨 소리냐?

링크하는 사람의 입장에서는 아주 당연한 답변입니다.

예! 그것을 부정할 수는 없습니다. 일단 웹페이지가 인터넷에 공개된 이상 (게시물이 게시된 이후에) 링크를 금지할 수는 없다는 것이 학계의 중론이기 때문입니다. 저 역시 그 의견에 찬성합니다. 따라서 링크하는 사람들의 말은 일반적으로 옳습니다.

하지만 상업적 목적으로 이용하려고 링크를 거는 것도 허용될까요? 앞서 말했듯이 단순히 광고 수익만을 목적으로 아무런 내용도 없이 링크만 게시했다면 그것은 정당할까요? 사람들이 인터넷에 공개하는 정보는 대부분 순수한 마음에서입니다. 그에 따라 자신의 글이 상업적 목적으로 쓰이기를 바라지는 않지요.[각주:2] 따라서 단순히 링크만 모은 뒤 광고 수익을 위해 광고를 게재하는 행위 등은 지양해야 하며[각주:3], 아예 상업적 사이트에서 해당 문서를 링크하는 행위는 금지한다고 보고 있습니다.[각주:4]

그런데 링크하려는 글에 링크 방법이나 링크 금지 등에서 적힌 내용이 있다면 링크하는 사람의 권리는 어떻게 될까요? 당연히 제한됩니다. 그러한 링크 방법 및 링크 금지 안내문에 따라야만 합니다. 설령 아무 이유 없이 링크를 금지했더라도 그에 대해 항의할 수 없습니다. 이 권리는 절대적입니다. 다만 이 경우에도 검색엔진의 봇(서치봇)의 접근까지 막았는지는 논의가 필요합니다. 왜냐하면 검색엔진의 봇을 막는 robots.txt 규약이 존재하기 때문입니다.

예컨대 이런 경우가 있습니다. 지난 달(2009년 3월)에 프로그램 하나를 공짜로 얻게 되었습니다. 그 사이트 제목은 "FREE IObit Advanced SystemCare PRO v3 License Key Codes Exclusive for Raymond.CC Readers"입니다. 그런데 그 문서 아래쪽에 이런 말이 있습니다.

저것을 해석하면 "당신의 사이트에서 이 게시글(article)을 복사하는 행위는 엄밀히 허용하지 않습니다. 그러나, 당신이 이 게시글을 좋아한다면, 당신은 아래에 있는 HTML 코드를 이용하여 이 게시글에 직접 링크할 수 있습니다."라는 뜻입니다. 다시 말해 링크하는 방법을 알려주고 있습니다. 이럴 경우에는 반드시 저 HTML 코드를 이용하여 링크해야 합니다.

마찬가지로 누군가가 자신의 웹페이지에 "링크를 금지합니다."라는 말을 했다면 그에 따라 링크를 하지 말아야 합니다.

아무튼 링크라는 행위, 곧 링크하기는 링크하는 사람의 권리입니다. 그러나 게시자가 그에 대해서 미리 공개적으로 제한할 수 있습니다. 그러나 그렇게 제한하는 내용이 공개되어 있지 않다면 게시자의 링크 금지의 의사는 무시되며, 링크하는 사람의 권리는 온전히 보존됩니다.

게시자 및 저작권자의 권리#

앞서 말했듯이 HTML이 처음 쓰이던 때에는 대부분 링크가 허용되었습니다. 그러나 이런저런 문제가 생기면서 링크를 제한해야 한다는 목소리가 조금씩 커지게 됩니다. 그런데 이미 공개된 웹에서 링크를 왜 금지해야 하는지 그 근거를 밝힐 필요가 생겨납니다.

흔히 링크하는 권리를 "읽을 권리"에 비유하고, 링크 허용의 권리를 "쓸 권리"에 비유합니다. 다시 말해 링크하는 행위는 일단 게시물이 있고 나서 존재한다는 뜻입니다. 이것은 읽은 권리는 누군가가 글로 쓴 것이 있어야 존재하는 것과 마찬가지이죠.

내가 쓴 글은 내가 지배한다.#

아주 단순하지만 명확한 사상입니다. 이것이 성립하지 않는다면 저작권은 존재 의의가 사라집니다. 또한 여기에서 링크 허용이 링크하기보다 우월한 권리라는 점이 두드러지게 됩니다. 다시 말해 저작자가 자신의 글을 지배, 곧 관리, 이용, 수익하고 싶다는데, 그것을 막을 수는 없습니다. 그것을 막게 되면, 앞서 말했듯이, 저작권의 존재 의의가 없거든요.

그런데 링크를 입소문으로 여기는 사람들은 그러한 저작자의 주장에 반발하게 됩니다.

우리가 링크라는 수단으로 당신 글을 소문내 주었잖아. 그런데 링크 좀 했다고 화내다니! 너무 하잖아.

그러나 링크와 입소문은 다릅니다. 입소문은 한 번으로 끝나지만, 링크는 웹페이지가 사라지지 않는 한 계속되거든요. 바로 이 점이 링크에 대한 법적인 관점을 복잡하게 만듭니다.

쓸 권리와 읽을 권리#

글을 쓸 권리는 누구나 가지고 있습니다. 읽을 권리도 누구나 가지고 있지만, 읽을 대상이 존재하지 않는데 읽을 권리가 있다고 말하기는 힘듭니다.

우리가 흔히 글 쓰는 사람에게 "그것도 글이냐?"라는 식으로 매도하는 데에는 글 쓸 권리가 읽을 권리보다 우월하다고 여기기 때문이라고 해석할 수도 있습니다. 더 많은 권리, 더 우월한 권리를 가졌기 때문에 그에 대해 더 많은 의무(여기에서는 "좋은 글을 쓸 의무")를 강요한다고 생각할 수 있다는 뜻입니다.

반면에 글쓴이의 입장에서도 읽는 사람을 무시할 수는 없습니다. 대부분의 글이 읽는 사람이 있기 때문에 쓰인다는 사실을 무시할 수는 없기 때문입니다. 

그런데 그 둘을 들여다보면 어느 쪽이 우월하냐, 어느 쪽이 더 많은 권리이냐 하는 점은 알기 힘듭니다. 다만 읽을 권리를 위해서는 읽을 대상이 필요하다는 점만이 두드러질 뿐이죠.

나는 내 사이트가 폭주하기를 바라지 않아요.#

게시자 및 사이트 관리자의 입장에서는 과도한 링크는 절대 반갑지 않습니다. 아무리 게시글이 인기가 좋아도 그것 때문에 사이트 자체가 멈춘다면 손해입니다. 특히나 설치형 블로그 등에서는 사이트 유지비 또는 회선 유지비 등은 공짜가 아니기 때문입니다. 심지어 과도한 링크는 DoS 공격 등으로 오인되기도 합니다.

정말로 링크하기가 링크하는 사람의 권리라면, 그들의 그 권리를 이용하여 "자신이 좋아하는 글"이 게시된 사이트에 "DoS 공격"을 해 버린 셈입니다. 그렇게 남의 사이트를 죽여 놓은 뒤에 그들은 당당히 말하겠죠.

내가 당신 게시글을 널리 광고해 줬어. 고마워 해야 돼.

링크하는 사람과 게시자의 입장은 완전히 엇갈리게 됩니다. 위와 같은 경우 게시자는 링크 해 줘서 고맙다는 생각은 전혀 가지지 않게 됩니다. 오히려 그러한 과도한 링크하기는 사이트에 대한 위해 행위이기 때문입니다.

아무튼 이런 경우에는 우리는 "권리의 남용"이라고 부른답니다.

이미 게시된 글의 링크를 막겠다고?#

아무리 게시자나 저작권자 등의 권리가 크다지만, 이미 게시한 글의 링크를 막을 수는 없습니다. 그러나 게시에 앞서 또는 게시와 동시에 링크 규칙 등을 명시할 수는 있습니다.

월드와이드웹(WWW)은 공개된 공간입니다. 물론 일부 단절된 공간도 있습니다만, 그것은 일부이며 대부분 공개되어 있습니다. 이때 공개된 게시글을 복사하는 행위가 아닌 단순 링크를 막을 수 있느냐에 대해 논란이 생길 수 있습니다. 과거에 DCMA(디지털 밀레니엄 저작권법) 초안에서는 문서에 대한 링크도 저작권 위반으로 보는 시각이 있었습니다. 현재는 링크는 저작권 위반이 아니라고 하고 있지요. 이렇듯이 링크까지 저작권 위반으로 보는 시각도 존재합니다. 지금은 대부분 단순 링크는 저작권 위반이 아니라고 여기고 있습니다.

또한 링크를 사후에 막을 수 없다고 하는 다른 이유는, 웹이 인류공동의 문화적 발전에 이바지하고 있다는 데에 있습니다. 다시 말해 웹이 그러한 공공의 이익을 위해 존재하고, 링크는 그 수단 가운데 하나로서 여겨집니다. 그러므로 더 큰 공공의 이익을 위해서 게시자 및 저작권자의 링크 허용의 권리는 제한될 수 있다고 여겨집니다. 다른 측면에서 이미 게시된 글조차 사후에 링크를 금지한다면 링크한 사람은 사후에 자기도 모르는 사이에 다른 사람의 권리를 침해하도록 만듭니다. 이는 웹이 공개되어 있다는 점과 배치되며, 차라리 웹이 단절된 공간인 것보다 못한 상황이 됩니다. 이런 점 때문에 사후에 링크를 제한하는 행위는 정당하지 못하다고 여기고 있습니다.

그러나 링크에 대한 제목이 바뀐다면 문제가 달라집니다. 일부 포털 사이트에서 기사 제목과는 달리 선정적인 제목으로 바꾸는 경우가 있습니다. 이는 엄밀히 말해 저작권 또는 저작인격권 위반입니다. 저작권자의 의사에 반하여 오로지 해당 기사로의 유인만을 위해서 기사 제목을 임의로 바꾸었기 때문이죠. 물론 이때에 고의성 등을 증명하기는 매우 어렵기 때문 법정 다툼 결과는 알 수 없으나, 적어도 도의적인 비난은 면키 어렵습니다. 이럴 경우 법적인 문제를 떠나서 사후에라도 링크를 제한할 수 있습니다. 저쪽에서 공정하지 않았는데, 이쪽에서 그것을 묵과해야 할 이유가 없기 때문입니다.

한편 사이트 정책에서 메인 페이지로만 링크를 허용하는 경우가 있습니다. 이럴 경우 대부분 사이트 관리자 및 게시자의 권리로서 인정됩니다. 여기에는 사이트 관리의 측면에서 메인 페이지를 반드시 방문케 하려는 의도가 있습니다. 또한 하위 페이지가 프레임 등으로 링크된 경우에는 하위 페이지로의 링크는 방문자에게 보이게 되는 웹페이지의 외양에도 영향을 줄 수 있습니다. 그밖에 여러 이유로 사이트 정책으로 링크하는 방법이나 링크하는 페이지 등을 제한할 수 있습니다.

하지만 그것이 너무 비합리적이어서는 안 됩니다. 예컨대 언론사 사이트를 메인 페이지로만 링크해야 한다면 링크가 링크로서 있을 가치가 현저히 떨어지게 됩니다. 앞서 말한 바와 같이 링크는 하이퍼텍스트로 이어진 관련 정보의 실체이며, 이때 하이퍼텍스트는 사용자가 선택하는 쪽으로 접근할 수 있도록 조직화된 정보입니다. 그런데 언론사의 경우 메인 페이지는 "오늘"의 뉴스가 나올지언정 특정일의 뉴스가 나오지는 않습니다. 이럴 경우 조직화된 정보로서의 하이퍼텍스트 및 그 실체인 링크는 그 가치가 크게 깎이게 됨은 두말할 나위가 없습니다.

더구나 언론사로의 링크는 글의 논거로서 쓰이는 때가 많은데, 메인 페이지로의 링크만 허용한다면 언론사 스스로가 자신들의 기사에 대한 쓰임을 제한하는 결과를 가져옵니다. 이는 또한 언론사는 공공성을 가진다고 하더라도 이익을 위해 운영되는 회사인데, 언론사의 이익은 기사가 얼마나 영향력을 끼치느냐에 따라 크게 좌우될 수 있습니다. 따라서 언론사 입장에서도 메인 페이지로의 링크만 허용하는 정책은 합리적이지 못하다고 하겠습니다.

내 사이트를 오인케 하지 말라!#

간혹 엉뚱한 제목으로 링크를 거는 경우가 있습니다. 보통은 조금 달라도 그냥 넘어갑니다. 하지만 아주 엉뚱한 경우는 문제가 될 수 있습니다. 앞서 말했듯이 명백히 고의를 입증하기 어렵기 때문에 소송으로까지 번지지 않을 뿐이지 이러한 행위는 불법입니다.

예전에 어떤 사람이 자신의 사이트에 폐쇄 공간을 만든 뒤 회원 가입을 받아 야한 동영상을 회원에게 보여주었습니다. 여기까지는 자신들만의 공간이니 문제가 없었는데, 링크 가운데 하나에서 문제가 생겼습니다. 그 사람은 장난이 심했는지, 방문자의 연령을 묻고 해당 연령보다 작으면 "어떤 사이트"로 이동하게 만들었습니다. 그런데 그렇게 이동해간 "어떤 사이트"를 방문자가 오인했다고 합니다. 그 방문자가 보게 된 "어떤 사이트"는 월트 디즈니 사의 웹사이트였고, 그 방문자는 "아동 포르노 사이트"로 오인했다고 합니다. 보통의 경우는 거의 일어나지 않을 일이지만, 일단 발생한 일이기 때문에 월트 디즈니 측에서는 그 링크의 제거를 요구했고, 그 장난 심한 사람은 그것을 거부했죠.

이것은 그저 장난이다.

하지만 회사 입장에서는 단순한 장난으로 받아들일 수 없는 상황입니다. 왜냐고요? 이미 오인한 사람이 생겼으니까요. 결국 법정에서 판결이 났고, 고의 여부에 관계없이 해당 링크는 제거해야 했습니다.

이처럼 링크를 이용하여 오인케 하는 링크 걸기는 명예훼손이나 사생활침해 등의 문제를 발생시킬 수 있고, 심지어 회사의 이미지에 영향을 줄 수도 있습니다. 그러므로 상대방에게 손해가 될 수 있는 링크는 자제해야 합니다.

링크와 검색엔진#

검색엔진도 링크를 이용하여 검색결과를 표현합니다. 이 경우에는 원천적으로 검색결과에서 자신의 사이트를 제거할 수 있습니다. 바로 robots.txt 규약을 이용하면 됩니다.

그리고 링크와 관련하여 유료 검색엔진과 무료 검색엔진은 다른 지위를 갖습니다. 유료 검색엔진은 처음부터 돈을 내고 검색결과 또는 검색 서비스를 사는 것입니다. 이럴 경우 유료 검색엔진은 상업용 사이트로서 지위를 갖게 되며, 대부분의 사람이 상업용 사이트로의 링크를 바라지 않는다는 점에서 문제가 됩니다. 반면에 구글이나 야후 등의 무료 검색엔진은 기본적으로 무료이기 때문에 상업용 사이트로서 지위를 갖지는 않습니다. 이것은 앞서 말한 웹의 기능과 관련이 있는데, 웹이 인류공동의 문화발전에 기여하고 있다는 공공이익의 측면을 중시하기 때문입니다. 달리 말하자면 유료 검색엔진은 자사의 이익을 위해 처음부터 돈을 받고 검색 결과를 판매 또는 서비스했다고 보지만, 무료 검색엔진은 원칙적으로 무료로 정보를 제공하고 웹페이지 일부에 광고 스폰서 링크를 제공할 뿐이라고 해석됩니다.

링크와 광고 및 대행사이트#

구글 애드센스나 다음 애드클릭스 등의 광고대행사이트에서 광고를 받아 자신의 사이트에 게재했다면, 자신의 사이트도 상업용 사이트이냐는 물음이 생길 수 있다. 하지만 이럴 경우 상업용 사이트로 분류되지는 않는다. 앞서 말한 무료 검색엔진의 경우와 마찬가지이기 때문이다.

물론 어느 경우에나 과도하면 안 됩니다. 예컨대 다른 사이트로의 링크 몇 개 걸고 나머지는 모조리 광고로 채웠다면 어떨까요? 그럴 경우에도 면책된다고 생각한다면 오산이다. 특히 거의 대부분의 페이지가 그런 식의 링크 몇 개 걸고 나머지 부분에 광고로 도배하다시피 했다면, 그러한 링크는 링크된 글의 게시자 또는 저작권자를 우롱하는 행위라고 보아야 합니다.

그러나 그런 경우에도 광고대행사이트인 구글 애드센스나 다음 애드클릭스 등이 책임을 지지는 않는다. 다만 구글의 경우 남의 글에 구글 애드센스 광고를 게시하는 행위를 금지하고 있고, 링크로만 이루어진 사이트 구성을 제한하고 있기는 합니다.

기타#

  • 링크걸기가 링크를 거는 사람의 권리이고, 게시자 및 저작권자가 그것에 관여할 수 없다면 어떻게 될까? 이것은 게시자와 저작권자의 권리가 없다고 본다는 견해이다. 이 견해는 보통 사람이 가지고 있는 일반적인 견해[각주:5]이지만, 중대한 오류가 있다. 이 견해가 옳다면 검색엔진의 데이터베이스에서 자신의 사이트를 제거해 달라는 요구를 할 수가 없게 된다. 왜냐하면, 이 견해에 따르면, 링크 걸기는 링크 거는 사람의 권리이고, 이것에 대해서 게시자나 저작권자는 아무런 권리도 권한도 없기 때문이다. 그러나 실제로는 그와 반대이다. 게시자는 언제든지 검색엔진 회사 측에 데이터베이스에서 자신의 사이트를 제거해 달라고 요청할 수 있다.
  • 링크를 이용해 예쁜 여성의 사진을 링크하여 순위를 매겼다면 그것은 적법할까? 그렇지는 않다. 이 경우 링크된 사진에 나타난 여성들의 사생활 침해 문제가 생긴다. 마찬가지로 남의 집 사진을 모아놓고 순위를 매기거나, 남의 튜닝카 사진을 모아놓고 순위를 매기는 등의 행위는 조심해야 한다. 실수로 실명 등을 거론할 경우 바로 사생활 침해 등의 문제로부터 자유로울 수 없게 된다.
  • 어떤 남성 우월주의자가 여권 운동가의 홈페이지를 링크하여 남성 우월주의자들이 몰려들어 악플을 달게 했다면? 이럴 경우 악의가 없더라도 여권 운동가가 요구하면 해당 링크를 제거해야 한다. 현재 한국에서는 악플도 범죄로 인식되고 있기 때문에 악플을 불러올 수 있는 링크의 제거 요청은 사이트 관리자 또는 홈페이지 운영자로서 기본적인 권리이다.[각주:6] 물론 단순히 그러한 "우려"만으로 요청할 수는 없고, 과거의 비슷한 사례를 제시해야 한다.
  • 어떤 개인 홈페이지의 글을 복사해서 자신의 홈페이지에 실었다. 하지만 그래픽 이미지나 동영상 등은 원본 사이트로 연결되도록 하였다. 이 경우 그러한 링크는 합법일까? 이럴 경우 절대 합법이 아닙니다. 애초에 복사 금지(불펌 금지)라면 당연히 위법이고[각주:7], 복사 허용이더라도 그러한 복사를 함으로써 원본 사이트에 손해를 끼치게 되면 불법입니다. 특히 복사한 글이 아주 인기가 좋은 글이었다면, 그와 동시에 원본이 있는 개인 홈페이지가 설치형이었다면, 위에서 말한 DoS 공격으로 오인될 수도 있습니다. 왜냐하면 그래픽 이미지나 동영상은 텍스트에 비해 매우 용량이 큰데, 이러한 미디어를 지속적으로 전송 요청하게 되면 상대방 서버에서는 일일전송량을 초과하는 사태가 벌어지고, 일시적으로 일일전송량 한계를 늘리더라도 과도한 요청이 발생하게 됩니다. 이럴 경우 대부분의 서버는 그러한 과도한 요청을 DoS 공격으로 보고 접속을 차단하게 됩니다. 이것은 프로그램 오류가 아니라, 사이트 보호를 위한 최소한의 장치이다.

결론#

링크 걸기는 링크를 거는 사람이 가진 권리입니다. 그러나 링크를 걸 때에는 반드시 링크 제한 및 금지에 대한 규정이 없는 사이트 또는 링크를 허용하는 사이트에 걸어야 합니다. 링크를 금지하는 사이트에 링크한 뒤에 발생하는 모든 분쟁 및 손해는 링크한 사람이 져야 합니다. 그에 대해 째째하다느니, 겨우 그것 가지고 심하게 군다느니 하는 투정은 부리지 말기 바랍니다.

아울러 자신의 사이트에 링크를 걸게 만들거나 막으려면 그러한 링크 규정을 페이지마다 게시하기 바랍니다. 아니면 사이트 정책 페이지로 통하는 링크를 마련해 두어야 합니다. 공개된 자신의 웹페이지에 링크한 뒤에야 링크를 막겠다고 하면 아무도 수긍하지 않습니다. 그럴 경우에 링크를 금지하거나 제한하려면 홈페이지를 전면 개편하여 다시 만드는 수밖에 없습니다.

요약하면 링크는 금지 또는 제한한다고 명시하지 않으면 기본적으로 허용합니다. 또한 사전에 미리 명시적으로 제한 또는 금지하는 않는 한 사후에 제한을 두는 일은 하지 말아야 합니다.

관련 문서#

이 글은 스프링노트에서 작성되었습니다.

  1. 마크업 언어는 SGML 계열과 TeX 계열로 나뉩니다. [본문으로]
  2. 물론 글쓴이가 자신의 글을 상업적으로 이용하는 것은 별개의 문제입니다. [본문으로]
  3. 이것을 위반하더라도 불법 여부를 가리기 힘듭니다. [본문으로]
  4. 이것을 위반하면 거의 확실하게 불법으로 보고 있습니다. [본문으로]
  5. 과거 네이버의 견해이기도 하다. 현재는 네이버에서는 이 견해를 따르지 않는다. [본문으로]
  6. 악의가 증명된다면, 그것은 범죄 행위로서 처벌을 받게 된다. [본문으로]
  7. "왜 복사 금지냐?"라는 항의는 의미가 없습니다. 앞서 말했듯이 "내가 쓴 글은 내가 지배한다."라는 대원칙에 따라 복사의 허용/금지는 저작권자가 가진 권리입니다. [본문으로]

'미쳐보자' 카테고리의 다른 글

50만 명과 16만 명  (3) 2009.05.30
아까운 사람이 죽었습니다.  (0) 2009.05.24
저작권 템플릿 (GFDL)  (0) 2009.03.28
식품 정보  (0) 2009.03.24
트랙백 연습용 문서  (0) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

글 보관함