포토샵 ACT 파일의 구조

포토샵의 ACT 파일은 8비트 및 팔레트가 존재하는 이미지의 팔레트 테이블
입니다. BMP 파일의 팔레트 구조보다 더 원시적이며 간단한 구조입니다.

ACT 파일 구조
struct ACT
{
BYTE RED;
BYTE GREEN;
BYTE BLUE;
};

/************************/
// 이하 루틴

#include
#include

// Open
BYTE check;
int i;

ifstream fp(“d:Windows.act”);
show :
fp >> check;

ShowMessage(check);
goto show;

설명

1) Act 파일을 로드한다.
2) 변수에 넣는다.
3) 출력한다.
4) goto로 다시 파일 포인터를 이동한다.
5) BYTE * 3[RGB Table] * 256이 정식 사이즈입니다. 여기서는 무한 goto
로 오버합니다.

[참고] 어셈블리로 함수 호출하기

Lala라는 함수를 인라인 어셈블리로 호출하는 방법

void Lala(char *a)
{
ShowMessage(AnsiString(a));
}
//——————————————————–

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
char a[] = “^( -_-)~ 잇희~”;

asm {
LEA ECX, DWORD PTR a
PUSH ECX
CALL Lala
POP ECX
}
}
//—————————————————–

파이프(표준입출력)

>와 <가 표준 입출력의 방향을 바꾸는 것이라면, 파이프(|)는 하나의 명령을 실행한 표준 출력을 다른 명령의 표준 입력으로 “흘려보내는” 데 사용됩니다. 이것은 프로세스간의 데이터 통신 방법 중 하나이기도 합니다.

먼저 다음과 같은 경우를 살펴보겠습니다. 우리는 아까의 예에서 test.txt 안에 ‘은’이라는 글자가 들어가는 줄은 2줄이라는 것을 눈으로 확인해 보았습니다. 그렇다면 이런 방법은 어떨까요?

[heyjin@heyjin Work]$ grep 은 test.txt | wc -l 2 [heyjin@heyjin Work]$

wc는 입력 내용에 몇 개의 단어가 존재하는지 세어 주는(word count) 명령입니다. 여기에 line이라는 뜻으로 -l 옵션이 붙으면 몇 줄이 들어 있는지 세어 줄 수 있습니다. 우리가 아까 보았던 test.txt에서의 grep의 사용 예를 다시 보겠습니다.

[heyjin@heyjin Work]$ grep 은 test.txt 이것은 입력과 출력의 방향을 바꾸는 것입니다. 이 내용은 어디에 들어갈까요?

이 결과가 다시 wc -l의 표준 입력으로 들어가면 2라는 결과가 나올 것입니다.

그러면 ‘grep 은 test.txt | wc -l‘ 은 무엇이 다를까요? 먼저 test.txt에서 ’은‘이라는 글자가 들어간 줄이 화면에 보이지 않습니다. 대신 따로 입력도 하지 않은 wc -l의 결과인 2가 출력되었습니다. 파이프는, ’grep 은 test.txt‘의 실행 결과, 즉 표준 출력을 화면에 뿌리는 대신 ‘wc -l’의 표준 입력으로 들어가도록 방향을 바꿔 주었습니다.

우리는 원하는 결과를 얻기 위해 여러 단계를 거쳐야 할 때가 있습니다. 예를 들어, tar로 묶여 있는 파일이 다시 압축이 되어 있다면, 먼저 압축을 풀어 준 후 tar 묶음을 풀어 주어야 합니다. 그 외에도 앞서 실행한 명령의 결과를 새 명령에 입력하는 일이 연쇄적으로 일어나는 경우는 여러 가지가 있을 것입니다. 파이프는 이런 과정을 한 줄로 끝내도록 도와 줍니다.

만약에 우리에게 한 1000명 정도의 전화번호가 들어 있는 call.txt라는 파일이 있다고 합시다.

[heyjin@heyjin Work]$ cat call.txt Y 교수님 | 016-111-2222 홀맨 | 019-999-6666 혜진~ | 017-123-4567 K 교수님 | 011-1111-1111 수끼 | 019-444-4444 세이 | 017-234-5678 TG | 016-222-8888 하안사녀 | 011-987-6543 다엘 | 016-777-7777 웬수 | 011-9999-1111

이 중 특정 통신사의 번호(즉, 011이나 016, 019 등)만 골라내어 다른 파일로 저장하고 싶으면 이렇게 하면 될 것입니다.

[heyjin@heyjin Work]$ cat call.txt | grep 017 > call_017.txt

그러면 한번 살펴볼까요? 먼저 call.txt 파일을 불러들여 읽습니다. 이중 통신망의 식별 번호를 걸러내고요, 이것을 다시 새로운 파일로 저장합니다. 이해가 가시죠? 그러면 call_017.txt를 보도록 하겠습니다.

[heyjin@heyjin Work]$ cat call_017.txt 혜진~ | 017-123-4567 세이 | 017-234-5678

간단하죠? 다음에는 셸에 대해 본격적으로 살펴 보겠습니다. ^^

표준 입출력과 리디렉션

셸에 대해 본격적으로 공부하기에 앞서, 먼저 표준 입력과 표준 출력에 관해 알아보겠습니다. 우리는 보통, 어떤 명령을 사용할 때 파일 이름이라던가 아니면 필요한 다른 요소를 함께 적어주며, 이 명령의 결과는 화면에 뿌려집니다. 예를 들어 다음과 같은 경우를 살펴 보겠습니다.

[heyjin@heyjin Work]$ cat test.txt 이 파일은 표준 입력과 표준 출력을 설명하기 위한 것입니다. 언제나 즐리눅싱 되세요. ^_^ [heyjin@heyjin Work]$

여기에서, cat이라는 명령의 뒤에는 test.txt라는 파일 이름이 들어갔습니다. 이것은 test.txt의 내용을 받아 읽어 화면에 뿌리라는 명령입니다. 즉, test.txt는 원하는 작업을 하는 데 필요한 입력 요소입니다. 이 명령의 결과로는 text.txt의 내용인 두 줄의 문장이 화면에 출력됩니다.

여기에서 test.txt와 같이 명령을 실행하기 위해 필요한 입력을 표준 입력, 그리고 명령의 실행 결과를 표준 출력이라 합니다. 또한 표준 입력은 STDIN, 표준 출력은 STDOUT로 표시하기도 합니다. 이것은 표준 입력(Standard Input)과 표준 출력(Standard Output)의 약자로 미리 정의된 핸들러의 이름이기도 합니다. 어떤 프로그램을 실행하는 명령이 입력되어 이 프로그램이 메모리에 적재된 상태를 프로세스라고 부르는데, 이 두 개의 핸들은 각 프로세스가 열려 있는 상태에서 받습니다. 표준 입력을 받아 프로세스가 작업을 마치면, 화면에 출력하는 명령 행 프로그램이 이 내용을 표준 출력으로 내보냅니다.

표준 입력과 표준 출력의 방향은 기본적으로 정해져 있습니다. 대개의 경우 표준 입력은 키보드로 입력받은 내용이며 표준 출력은 화면에 출력됩니다. 그렇다면 표준 입력과 표준 출력의 방향을 바꿔 주면 어떨까요? 괄호 기호인 >와 <를 이용하면 이와 같은 입력과 출력의 방향을 바꿀 수 있습니다. 그러면 먼저 간단한 예를 들어 보겠습니다.

[heyjin@heyjin Work]$ cat test.txt 이 파일은 표준 입력과 표준 출력을 설명하기 위한 것입니다. 언제나 즐리눅싱 되세요. ^_^ [heyjin@heyjin Work]$ cat > test.txt 이것은 입력과 출력의 방향을 바꾸는 것입니다. 어디, 어떻게 변했을지 살펴볼까요? ^_^ Ctrl+d [heyjin@heyjin Work]$ cat test.txt 이것은 입력과 출력의 방향을 바꾸는 것입니다. 어디, 어떻게 변했을지 살펴볼까요? ^_^ [heyjin@heyjin Work]$

원래 내용이 있던 test.txt를 먼저 확인해 보고, cat > test.txt 명령을 이용하여 출력의 방향을 바꾸었습니다. cat > test.txt는 cat을 마치 DOS 시절의 copy con 명령과 같이 사용하는 방법입니다. DOS를 사용해 보신 분들은 기억하시리라 생각합니다. 이 명령은 파일을 읽는 명령인 동시에 라인 에디터의 역할을 할 수 있는 명령입니다. 입력을 마치실 때는 Ctrl+d 키를 눌러 주세요.

다시 읽어 본 test.txt 파일에는 원래의 파일 내용이 사라진 대신 새로이 입력한 내용이 저장되었습니다. 그렇다면 이렇게 해 보면 어떨까요?

[heyjin@heyjin Work]$ cat >> test.txt 이 내용은 어디에 들어갈까요? /)/) (-.-) (___)/ [heyjin@heyjin Work]$ cat test.txt 이것은 입력과 출력의 방향을 바꾸는 것입니다. 어디, 어떻게 변했을지 살펴볼까요? ^_^ 이 내용은 어디에 들어갈까요? /)/) (-.-) (___)/ [heyjin@heyjin Work]$

먼저 실행한 것과 무엇이 달라졌습니까? 그렇습니다. >> 와 같이 사용하면, 기존의 파일 내용을 보존한 채 기존 내용 뒷부분에 새로 입력하는 내용을 저장하겠다는 뜻입니다.

그러면 이번에는, 이런 식으로 실행해 보겠습니다. grep이라는 명령에 대해 먼저 간단히 설명하겠습니다. grep은 어떤 문자열과 일치하는 문자열이 들어 있는 줄을 찾아내는 명령입니다. 여기에서는 아까 만들어 보았던 text.txt에서 ‘은’이라는 글자가 들어 있는 줄만 뽑아서 보도록 하겠습니다.

[heyjin@heyjin Work]$ grep 은 test.txt 이것은 입력과 출력의 방향을 바꾸는 것입니다. 이 내용은 어디에 들어갈까요?

잘 출력되지요? 그렇다면, 이렇게 해 보면 어떨까요?

[heyjin@heyjin Work]$ grep test.txt 은 grep: 은: 그런 파일이나 디렉토리가 없음

역시 에러가 날 것입니다. 그렇다면 다음과 같은 방법은 어떨까요?

[heyjin@heyjin Work]$ grep <test.txt 은 이것은 입력과 출력의 방향을 바꾸는 것입니다. 이 내용은 어디에 들어갈까요?

예, ‘grep 은 test.txt’와 ‘grep <test.txt 은’은 같은 결과를 내고 있습니다. 앞서 설명한 > 이 출력의 방향을 화면이 아닌 다른 파일로 바꾸었듯이, < 는 입력의 방향을 바꾸는 데 사용됩니다. 물론 리눅스에서는 모든 주변 장치(디바이스)를 파일로 인식하고 있으므로, 지금 보고 있는 화면 외의 다른 화면으로 출력하는 등, 여러 가지로 응용할 수 있습니다. 혹은 장문의 편지 내용이 들어 있는 파일을 미리 작성해 maildata라는 이름의 텍스트 파일로 저장한 후 다음과 같은 방법으로 간단하게 메일을 날릴 수도 있고요.

[heyjin@heyjin Work]$ mail heyjin@hanbitbook.co.kr < maildata

이 외에도, 표준 입출력의 방향을 바꿔 편리하게 사용할 수 있는 일은 많을 것입니다.

임시 폴더 위치 변경하기

자기가 찾아보기 쉬운 경로로 임시 폴더의 위치를 변경하려면 먼저
시작->제어판->시스템으로 들어간다.
시스템 등록정보에서 고급을 선택한 뒤 환경변수 창을 띄운다.

사용자 이름에 대한 사용자 변수 창에서 TEMP를 선택하고
편집 버튼을 누른 다음 사용자 변수 편집 창의 변수 값에
원하는 경로를 입력한다.