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

IT/Delphi

mssql 에서의 image필드를 파일로 만들기

MSSQL에 image type 필드에 이미지가 있는 경우 파일로 만드는 방법입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

var
  qryCust : TMSQuery;
  ms := TMemoryStream;
 begin
  qryCust := TMSQuery.Create(nil);
  qryCust.Connection := DBCONNECTION;
  ms := TMemoryStream.Create;
  try
    with qryCust do
    begin                   
      close;                
      sql.text := ' select imageField from TableName ';
      Open;
      TBlobField( FieldByName('Image')).SaveToStream(  ms );
      ms.Position := 0;
      ms.SaveToFile('C:\123.jpg');
    end;
  finally
    qryCust.Free;
    ms.free;
  end
cs


,
IT/프로젝트

[테트리스5] 테트리스 소스

안녕하세요. 컴퓨터 못하는 컴퓨터공학생입니다.


델파이를 사용하여 만든 테트리스 소스를 깃허브에 올리고 깃허브 주소를 공유하려 합니다.


사실 소스를 공유한다는것 자체가 뭔가 평가 받는 느낌이 들고 ,

점수매겨지는 느낌이 들고, 

쪽팔려서 공개를 안하고 싶지만..


공개를 함으로써 저나 보는 사람 둘다 도움이 됬으면 하는 바람으로 올립니다.


https://github.com/ljh3326/tetris.git


사실 원하는 기능을 다 구현하지 못하여서 조금더 수정을 할겁니다.



감사합니다.

,
IT/프로젝트

[테트리스4] 블럭 쌓기. 한줄 지우기

안녕하세요. 컴퓨터 못하는 컴퓨터공학생입니다.


이번에는 블럭 쌓기와 한줄 지우기에 대해서 알아보겠습니다.


초기에 board라는 배열을 다음과 같이 지정했습니다.


1
board : array[0..cWIDTH + 10..cHEIGTH + 10..1of integer;
cs


마지막 0..1은 0은 색깔 인덱스, 1은 쌓여있는지의 여부입니다.


블럭을 내리기전 CheckBrick 함수로 체크를 한다고 하였습니다. 블럭이 내려 갈수 없는 상황, 곧 다른 블럭이 쌓여있다면 


1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TFrmMain.CheckLines;
var
  i,j,k : integer;
begin
  for i := 0 to 3 do
  begin
    board[ c_Start_Default_Center  + (iXY div 15) + shape[iBrickIndex][iBrickRotation][i]._iX ]
         [ c_Start_Default_Heigth  + (iDown div 15) + shape[iBrickIndex][iBrickRotation][i]._iY][0] := iBrickIndex;
    board[ c_Start_Default_Center  + (iXY div 15) + shape[iBrickIndex][iBrickRotation][i]._iX ]
         [ c_Start_Default_Heigth  + (iDown div 5) + shape[iBrickIndex][iBrickRotation][i]._iY][1] := 1;
  end;
  ShowStackBrick;
end;
cs



CheckLines 함수로 board배열의 세번째 인덱스의 0값에는 현재 블럭의 모양인덱스 값을, 1 값에는 1이라는 값을 넣습니다.

현재 블럭 모양의 인덱스 순서대로 색깔이 정해져 있기 때문에 블럭 모양 인덱스 값을 넣으면 됩니다.

그리고 1의 값은 블럭이 쌓여 있다는 의미의 값이고, 0은 배경, 2는 가장자리의 벽돌 이라는 뜻입니다.



그리고 ShowStackBrick 함수를 이용하여 쌓여있는 블럭을 그립니다.


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
procedure TFrmMain.ShowStackBrick;
var
  i, j : Integer;
begin
  for i := 0 to cWIDTH + 1 do
  begin
    for j := 0 to cHEIGTH + 1 do
    begin
      if board[i][j][1= 1 then
      begin
        MCanvas.brush.Color := BlockColor[    board[i][j][0]   ] ;
        MCanvas.Pen.Style := psClear;
        MCanvas.Rectangle(i * 15, j * 15,
                        (i+1* 15, (j+1* 15);
      end
      else if board[i][j][1= 0 then
      begin
        MCanvas.brush.Color := clSilver;
        MCanvas.Pen.Style := psClear;
        MCanvas.Rectangle(i * 15, j * 15,
                        (i+1* 15, (j+1* 5);
      end;
    end;
  end;
end;
cs



board배열의 세번째 값이 1이면 블럭이 쌓여있다는 의미이기 때문에 그 블럭을 그립니다. 

board[i][j][0]값에는 블럭 모양의 인덱스 값이 있고, 그 인덱스 값이 색깔의 인덱스 이기 때문에 색을 지정합니다.


board배열의 세번째 값이 0이면 배경이기 때문에 회색으로 그립니다.


간단하게 정리하면 블럭을 쌓아야 한다면 블럭을 쌓는 의미의 값인 board[][][0]에 색깔, board[][][1]에 쌓여있다 라는 값을 넣고

다시 전체 화면을 리플레쉬 합니다.


알고 있는 내용인데도 설명을 하려니 잘 되지 않네요.. 점점 좋아질거라 믿고, 계속 진행하겠습니다.



이제는 한줄 지우기에 대해서 알아보겠습니다.


블럭이 한칸 내려왔을때 벽이거나 블럭이 있다면 DeleteLine 함수를 호출합니다.


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
procedure TFrmMain.DeleteLine;
var
  i, j, k, p : Integer;
begin
  for j := 1 to cHEIGTH + 1 do
  begin
    for k := 1 to cWIDTH + 1 do
    begin
      if board[k][j][1<> 1 then
      Break;
    end;
    if (k = cWIDTH + 1then
    begin
      p := j;
      repeat
        for k := 1 to cWIDTH do
        begin
          board[k][p] := board[k][p-1];
        end;
        p := p - 1;
      until p = 1;
      Sleep(50);
      ShowStackBrick;
    end;
  end;
end;
cs


위에서 한줄씩 체크하면서 아래로 내려옵니다.

만약 한줄씩 체크하는데 벽돌이 아닌 부분if board[k][j][1] <> 1 then이 있다면 한줄을 건너뜁니다.

만약 한줄이 전부다 블럭이 채워져 있다면, 그러니까 for k := 1 to cWIDTH + 1 do 루프를 끝까지 돌았는데 

Break가 안걸려 있다면 (if (k = cWIDTH + 1) then) 이 성립하게 되고

왼쪽부터 오른쪽으로 차례대로 위의 블럭을 아래로 내립니다.




Sleep(50)의 이유는 블럭이 지워지는것이 눈에 보이도록 추가하였습니다.

그리고 ShowStackBrick 함수를 호출하여 지워진 상태로 출력을 합니다.


하나하나 보다보면 이해가 될거라 생각됩니다.


궁금한점 있으시면 댓글로..


감사합니다.




  

,
IT/프로젝트

[테트리스3] 블럭 변경하기

안녕하세요. 컴퓨터 못하는 컴퓨터공학생 입니다.


이번에는 블럭 변경하는 법을 보도록 하겠습니다.


사실 블럭 변경하는 법은 간단합니다. 

1. 블럭을 변경할 수 있는 공간이 있는지 체크를 하고 

2. 블럭을 지운 뒤

3. 블럭모양의 인덱스 값을 바꾼 뒤 다시 블럭을 그려주면 됩니다.


BrickChange 함수를 선언해서 사용하겠습니다.



1
2
3
4
5
6
7
8
9
10
11
12
procedure TFrmMain.BrickChange;
begin
  if CheckBrick(iXY, iDown) then
  begin
    PrintBrick(false);
    if iBrickRotation = 3 then
      iBrickRotation := 0
    else
      inc(iBrickRotation);
    PrintBrick(True);
  end;
end;
cs



함수안에는 CheckBrick 함수를 사용합니다.

CheckBrick(iXY, iDown) 와 같이 호출 하여서 변경이 가능한지 유무를 확인합니다.

iXY는 현재 가로위치이고, iDown은 현재 세로위치입니다.


주위에 블록이나 벽인지 체크를 한 뒤 가능하면 블럭을 없애고, 블럭모양의 index인 iBrickRotation를 증가하고,

iBrickRotation에 맞는 블럭을 그립니다.


printBrick함수는 다음과 같습니다.


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
32
33
34
35
36
37
procedure TFrmMain.PrintBrick(bShow : Boolean);
var
  i : integer;
begin
   if (bShow) then
   begin
     for i := 0 to 3 do
     begin
       MCanvas.brush.Color := BlockColor[iBrickIndex];
       MCanvas.Pen.Style := psClear;
       MCanvas.Rectangle( (shape[iBrickIndex][iBrickRotation][i]._iX * 15) + iXY + ( 15* 5 ),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15) + iDown + 15,
                         (shape[iBrickIndex][iBrickRotation][i]._iX * 15) + 15+ iXY + ( 15* 5),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15) + iDown + 15+ 5
                       );
     end;
   end
   else
   begin
     for i := 0 to 3 do
     begin
       MCanvas.brush.Color := clSilver;
       MCanvas.Pen.Style := psClear;
       MCanvas.Rectangle( (shape[iBrickIndex][iBrickRotation][i]._iX * 15) + iXY + ( 15* 5),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15) + iDown + 15,
                         (shape[iBrickIndex][iBrickRotation][i]._iX * 15) + 15 + iXY + ( 15* 5),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15) + iDown + 15+ cBrickSize
                       );
     end;
   end;
end;
cs



저번시간에 사용했던 함수를 하나로 묶은 것입니다.


다음 시간에는 블럭쌓기와 블럭 한줄 없애기에 대해서 살펴보겠습니다.


감사합니다.

,
IT/프로젝트

[테트리스2] 블럭 그리기, 블럭 내리기

안녕하세요. 컴퓨터못하는 컴퓨터공학생입니다.

이번 시간에는 배경에 블록을 그리고 블록이 내려오는 기능에 대해 살펴보려 합니다.


블록은 총 7가지 종류가 있습니다.


위의 그림처럼 블럭 모양 및 색을 사용하겠습니다.


위의 블록을 배열에 미리 저장하여 사용합니다. 저는 TPoint 3차원 배열을 선언해서 사용하였습니다.

TPoint는 다음과 같이

1
2
3
4
5
6
type
  TPoint = record
    _iX : integer;
    _iY : integer;
  end;
cs

정의 하였습니다.


_iX _iY는 각각 x,y좌표를 나타냅니다.

 

각각의 블록은 미리 배열에 저장해 두겠습니다.


1
2
3
4
5
6
7
8
9
10
11
shape : array[0..6, 0..3, 0..3] of TPoint =
  (
     (
         ( (_iX : 0; _iY : 0), (_iX : 0; _iY : 1), (_iX : 0; _iY : 2), (_iX : 1; _iY : 2) ), // L
         ( (_iX : 2; _iY : 0), (_iX : 2; _iY : 1), (_iX : 1; _iY : 1), (_iX : 0; _iY : 1) ),
         ( (_iX : 0; _iY : 0), (_iX : 1; _iY : 0), (_iX : 1; _iY : 1), (_iX : 1; _iY : 2) ),
         ( (_iX : 0; _iY : 0), (_iX : 0; _iY : 1), (_iX : 1; _iY : 0), (_iX : 2; _iY : 0) )
     ),
     //생략
  );
cs



위는 L자 모양의 블록을 정의한 내용입니다.

변경했을 때의 블록 모양도 정의하여 총 4개로 정의하였습니다.


블록을 그리기 위해 블록 색깔을 정해둡니다.


1
2
  BlockColor : array [0..8of TColor = ($00A5FF, $E96AE9, $09D9D9, $D9D909, 
                                       $FF5900, $09D909, $4949EE, clBlack, clSilver );
cs


델파이는 RGB가 아닌 BGR로 하기 때문에 $00A5FF는 L자 블록 모양의 색인 주황색 입니다.


블록을 그릴때는 다음과 같이 함수를 사용합니다.


1
2
3
4
5
6
7
8
9
10
11
     for i := 0 to 3 do
     begin
      MCanvas.brush.Color := BlockColor[iBrickIndex];
      MCanvas.Pen.Style := psClear;
      MCanvas.Rectangle( (shape[iBrickIndex][iBrickRotation][i]._iX * 15+ iXY + ( 15 * 5 ),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15+ iDown + 15,
                         (shape[iBrickIndex][iBrickRotation][i]._iX * 15+ 15 + iXY + ( 15 * 5 ),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15+ iDown + 15 + 15
                       );
     end;
cs


iBrickIndex 값은 이 함수 실행전 어떤 블록을 선택할건지의 인덱스 값입니다.

iBrickRotation 변수는 초기에 어떤모양의 블록을 내릴건지의 인덱스 값입니다

15는 블록한칸의 가로, 세로 길이입니다.

 

iXY 변수는 현재 블록의 가로 좌표 위치를 나타냅니다. 초기값은 0입니다.

(15*5)15는 블록의 한변의 길이이고, 5는 총 가로길이의 중간을 나타냅니다.

초기 시작시에 블록이 중간에서 내려오기 위해서입니다.

 

iDown 변수는 세로 좌표 위치를 나타냅니다. 초기값은 0입니다.

 

정리하자면 중간에 블록 4개 그리는 함수입니다.

 

글이 많아서 설명이 어려울 수 있는데 댓글로 남겨주세요.

 

블록을 한칸 내리기 위해서는 블록 바로 아래에 벽이 있는지, 다른 블록이 쌓여있는지 확인을 해봐야 합니다.

확인하는 함수는 다음과 같이 사용합니다.

CheckBrick(iXY, iDown+15)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function TFrmMain.CheckBrick(x,y : integer) : Boolean;
var
  i, j : integer;
begin
  j := 0;
  for i := 0 to 3 do
  begin
    j := max( j,
            board[ 5 + (x div 15+ shape[iBrickIndex][iBrickRotation][i]._iX ]
                 [ 1 + (y div 15+ shape[iBrickIndex][iBrickRotation][i]._iY ]
                 [ 1 ]
            );
  end;
  // 벽돌이나 가장자리이면
  if (j = 1) or (j = 2then
    result := False
  else
    result := True;
end;
cs

여기서 x의 값은 가로에서 어느 위치인지를 나타냅니다.

y는 세로에서 어느 위치인지를 나타냅니다.

 

board배열 첫 번째에 5를 더하는 이유는 블록의 시작이 왼쪽 위가 아닌 중간에서 시작하기 때문입니다.

중간의 위치는 총 10의 길이에서 반인 5입니다.

board배열 첫 번째에 1을 더하는 이유는 제일 위에 블록이 벽이기 때문에 한칸 밑부터 시작하려고 1을 더합니다.

나누기 15를 하는 이유는 x의 값은 블록의 가로/세로 길이이기 때문에 15로 나누어서 상대적인 위치를 가져옵니다.


CheckBrick(iXY, iDown+15) 다음과 같이 함수를 실행합니다. iXY, iDown는 현재 가로세로의 위치를 나타냅니다.


이제 블럭을 한칸씩 내려보겠습니다.

블럭을 내리기 위해서는 기존의 블럭을 지우고, 바로 한칸 아래에 블럭을 그려야 합니다.

1
2
3
4
5
6
7
8
9
10
     for i := 0 to 3 do
     begin
       MCanvas.brush.Color := clSilver;
       MCanvas.Pen.Style := psClear;
       MCanvas.Rectangle( (shape[iBrickIndex][iBrickRotation][i]._iX * 15) + iXY + ( 15* 5 ),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15) + iDown + 15,
                         (shape[iBrickIndex][iBrickRotation][i]._iX * 15) + 15+ iXY + ( 5* 5),
                         (shape[iBrickIndex][iBrickRotation][i]._iY * 15) + iDown + 5+ 15
                       );
     end;
cs



지우는 방식은 현재 블럭의 위치를 벽색깔인 회색으로 덮어 씌웁니다. Color만 다르고 위의 함수와 동일하기 때문에 설명은 생략하겠습니다.


그리고 iDown의 변수를 +15(블록 크기) 한 뒤 다시 위의 함수를 호출하면 한칸 아래로 내려온것 처럼 보입니다.


간단하게 정리하자면 초기에는 블록을 그리기 전에 바로 밑에 블록인지 체크 한 뒤 블록을 그립니다.

그릴수 있다면 블록을 그리고 그릴수 없다면 블록이 초기상태까지 쌓였기 때문에 게임 종료입니다.


초기가 아니라면 블록을 그리고 블록을 한칸 내리기 위해 다시한번더 밑에 블록이 있는지 체크를 합니다.

없다면 블록을 내리고 있다면 블록을 쌓습니다.


정리하거나 표현하는게 서툴러 이해가 되지 않을 수도 있지만, 일단 저는 알고 보니 이해가 되서..


다음에는 블록 변경하는거에 대해서 살펴보겠습니다.


감사합니다.

,
IT/프로젝트

[테트리스1] 개요, 설계, 화면구성

안녕하세요. 컴퓨터 못하는 컴퓨터공학생입니다.

델파이를 사용하여 테트리스 게임을 만들어보려 합니다.

 

첫 번째로 화면 구성 및 설계를 하려 합니다.

아래 플로우차트와 같이 테트리스의 전체적인 흐름이 흘러갑니다.

미리 설계를 해놓고 코드를 짜게되면 수월하게 코드를 짤 수 있습니다.




두 번째로 화면을 구성해보려 합니다

아래 그림과 같이 게임 진행화면, 다음블럭표시 화면, 점수 표시화면으로 크게 3가지로 나누려 합니다.



세 번째로 테트리스 진행 화면에서 배경을 그려보려 합니다

배경의 크기는 벽을 포함해서 가로 12, 세로 22인 직사각형으로 합니다

그리고 벽의 색은 하늘색으로 설정합니다




이 벽돌을 board라는 3차원 배열로 선언하겠습니다.


1
board : array[0..110..210..1of integer;      // 0..2 0은 색 index, 1은 쌓여있는지 여부
cs


여기서 0..11은 총 12길이의 가로길이,

0..21은 총 22길이의 세로길이,

0..1은 첫 번째 [0]은 색깔 index, [1]은 블록 쌓여있는지 아닌지 여부를 나타냅니다.



board 3차원 배열을 다음과 같이 초기화 합니다

끝 벽쪽은 2라는 임의값을 넣고 나머지는 0이라는 임의의 값을 넣습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
begin
  // 벽부분 board배열에 2넣기.
  for i := 0 to 11 do
  begin
    for j := 0 to 21 do            
    begin
      if (j = 0) or (j = 21) or (i = 0) or (i = 11then
        board[i][j][1] := 2
      else
      begin
        board[i][j][0] := 0;
        board[i][j][1] := 0;
      end;
    end;
  end;
end;
cs



그리고 canvas를 이용하여 네모를 그립니다



1
2
3
4
5
6
7
8
9
10
11
12
13
14
  for i := 0 to 11 do
  begin         
    for j := 0 to 21 do
    begin
      if board[i][j][1= 2 then
        BackColor := $E7D2A5 // 하늘색(BGR)
      else
        BackColor := clSilver; // 회색
      MCanvas.brush.Color :=  BackColor;
      MCanvas.Pen.Style := psClear;
      MCanvas.Rectangle(i * cBrickSize, j * cBrickSize,
                      (i+1* cBrickSize, (j+1* cBrickSize);
    end;
  end;
cs



여기서 cBrickSize15입니다. 한변이 15인 정사각형을 그립니다.

왼쪽 위부터 오른쪽으로 가면서 정사각형을 그리고 다음줄로 내려와 다시 왼쪽부터 차례대로 정사각형을 그립니다.

다 그리면 다음 그림과 같이 테트리스 배경이 완성됩니다.





오늘은 여기까지 하겠습니다.

다음엔 블럭을 그리고 내려오는 기능에 대해 구현해보도록 하겠습니다.


감사합니다.





,
IT/MSSQL

SELECT, INSERT, UPDATE, DELETE

안녕하세요 컴퓨터 못하는 컴퓨터공학생입니다.


이번시간에는 MSSQL 기본 쿼리중 하나인 DQL과 DML에 대해서 알아보려 합니다.


DQL이란 Data Query Language의 약자로, 질의어로서 SELECT 가 DQL입니다.

DML이란 Data Manipulation Language의 약자로, 데이터 조작어 입니다. 

INSERT, UPDATE, DELETE가 DML입니다.




1. SELECT

(1) SELECT * FROM [테이블명]    -- [테이블명]의 모든 필드, 모든 데이터를 조회합니다.

(2) SELECT * FROM [테이블명]    -- [테이블명]의 모든 필드, [필드명]이 [필드값]인 데이터를 조회합니다.

    WHERE [필드명] = [필드값]     


(3) SELECT * FROM [테이블명]    --  [테이블명]의 모든 필드, [필드명1]이 [필드값1]이고

    WHERE [필드명1] = [필드값1]   --  [필드명2]이 [필드값2]이고 데이터를 조회합니다.

    AND [필드명2] = [필드값2]


(4) SELECT [필드명3], [필드명2] FROM [테이블명]    -- [테이블명]의 [필드명3],[필드명2] 필드를 출력, 

    WHERE [필드명1] = [필드값1]                         -- [필드명1]이 [필드값1]이고 

    AND [필드명2] = [필드값2]                             -- [필드명2]이 [필드값2]이고 데이터를 조회합니다.



위와 같이 SELECT 문법은 단순히 데이터베이스의 데이터를 일정 조건으로 조회할때 사용합니다.

직접 쿼리를 실행하면서 눈으로 보면서 하시면 이해가 가장 잘 됩니다.


2. INSERT

(1) INSERT INTO[테이블명] (필드명1, 필드명2, ... ) VALUES(필드값1, 필드값2, ... )

-- [테이블명]에 필드값1을 필드명1에, 필드값2를 필드명2에 삽입합니다.

-- INSERT문을 실행하면 결과에 따라 레코드의 수가 추가됩니다.


(2) INSERT INTO[테이블명] VALUES(필드값1, 필드값2, ... )

-- [테이블명]에 필드의 순서대로 필드값1, 필드값2를 삽입합니다.

-- 테이블 필드에 갯수에 맞게 필드값1, 필드값2, ... 가 설정 되어야 합니다.


위와 같이 INSERT 문법은 데이터베이스에 원하는 값을 삽입하는 쿼리입니다.



3. UPDATE

(1) UPDATE [테이블명] SET [필드명1] = [수정할값]

-- [테이블명]의 필드명1의 모든 필드를 [수정할값]으로 수정합니다.


(2) UPDATE [테이블명] SET [필드명1] = [수정할값] WHERE [필드명2] = [필드값2]

-- [테이블명]의 필드명2가 필드값2인 필드명1의 필드를 [수정할값]으로 수정합니다.

-- SELECT 절과 동일하게 WHERE 절을 사용하여 수정할 값의 조건을 설정할 수 있습니다.


(2) UPDATE [테이블명] 

    SET [필드명1] = [수정할값1], 

         [필드명2] = [수정할값2] 

    WHERE [필드명2] = [필드값2] AND [필드명3] = [필드값3]]

-- [테이블명]의 필드명2가 필드값2이고 필드명3이 필드값3인 필드명1과 필드명2를 

   각각 수정할값1, 수정할값2로 수정합니다.


UPDATE문법은 원하는 조건에 맞는 필드의 값을 수정할 수 있습니다.




4. DELETE

(1) DELETE FROM [테이블명]

-- [테이블명]의 모든 데이터를 삭제합니다.


(2) DELETE FROM [테이블명] 

    WHERE [필드명2] = [필드값2] 

    AND [필드명3] = [필드값3]]

-- 필드명2가 필드값2이고, 필드명3이 필드값3인 [테이블명]의 데이터를 삭제합니다.





INSERT - SELECT, 서브쿼리, DCL 등 다양한 쿼리가 있는데, 그건 다음에 자세히 설명해드리겠습니다.


이상한점 있거나 궁금한점 있으시면 언제든지 댓글 남겨주세요















,
IT/나머지

배치파일 만들기

안녕하세요. 

이번 시간은 배치파일을 만들어 보려 합니다.

배치파일이란, 일괄작업파일로서 컴퓨터 운영체계에서 수행되는 명령어들로 구성된 텍스트파일입니다. 키보드로 한 번에 하나씩 입력해야 하는 일련의 명령어들을 하나의 파일로 작성하기 때문에 배치파일이라고 부르며, 공통적으로 필요한 배치파일들은 운영체계의 일부분으로 지정됩니다. (출처 네이버 지식 백과)


어떤 배치파일을 만들어볼까요.. 간단하게 크롬을 실행시키는 배치파일을 만들어 보도록 하겠습니다.

제 PC에서 크롬의 경로는 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" 입니다.

일단은 cmd를 실행시킵니다. 

시키는 방법은..



윈도우키 + R 키를 누르면 실행창이 뜨게 됩니다.

여기서 cmd를 입력 후 확인을 누릅니다.

cmd 창이 나타나게 되는데 여기에 

[cd C:\Program Files (x86)\Google\Chrome\Application\]를 입력후 엔터를 누릅니다. 

cd(Change Directory) 명령어는 cd뒤의 경로로 이동하라는 명령어 입니다.

그러니까 위의 명령어는 '크롬의 실행파일이 있는 경로로 이동하라'라는 뜻입니다.

그리고 [Chrome.exe]를 입력 후 엔터를 누르면 크롬이 실행이 됩니다.

이 내용을 배치파일로 만들어 보겠습니다.


먼저 메모장을 실행시킵니다.

그리고 위에서 입력한 명령어들을 메모장에 입력 후 저장을 합니다.

저장할 때에는 파일 형식을 [모든 파일(*.*)]로 설정한 후, 파일 이름의 확장자를 .bat로 합니다.

그리고 저장..

저장한 배치파일을 실행하면 크롬페이지가 나타납니다 !

지금의 예제는 명령어 두줄로 크롬실행을 하여 배치파일이 왜 필요하나 싶으신데, 

두줄이 아니라 여러줄의 명령어를 이용해야 할때 배치파일을 만들어서 사용하면 편리합니다


혹시 이상있으시거나 궁금한 점이 있으시면 언제든지 댓글 달아주세요










'IT > 나머지' 카테고리의 다른 글

소스 코드를 예쁘게 블로그에 올리기  (0) 2017.01.19
윈도우 서버 2008 R2에 IIS 설치  (1) 2015.08.19
,
IT/나머지

윈도우 서버 2008 R2에 IIS 설치

안녕하세요.

이번에 게시할 글은 Windows Server 2008 R2 Datacenter에 IIS(Internet Information Service) 설정입니다.

현재 저는 asp와 jsp를 이용해서 안드로이드 앱 개발하는 것을 공부 하고 있습니다.

asp를 이용해서 웹을 사용하시려면 웹서버인 IIS을 설정 해야 합니다.

그리고 jsp를 이용해서 웹을 사용하시려면 Tomcat을 설정 해야 합니다.

오늘은 IIS 세팅을 해보겠습니다.

※ IIS란 HTTP/HTTPS 프로토콜을 서비스 해주는 서비스입니다. 물론 추가적으로 FTP, SMTP 프로토콜도 지원합니다. 한마디로 웹 서비스를 하기 위한 웹서버입니다.


1. [시작] - [관리도구] - [서버관리자]를 클릭합니다. 다음과 같은 화면이 나타납니다.


2. 왼쪽에 역할을 선택하고 오른쪽에 역할 추가를 클릭합니다.


3. 역할 추가 마법사 창이 뜨는데 다음을 선택합니다.


4. 웹 서버(IIS) 를 체크 하시고 다음을 선택합니다.


5. 그리고 다시 한번더 다음을 선택합니다.


6. IIS 설치시 부가적인 기능을 설치 할건지 물어보는데 추후에 설치가 가능하므로 지금은 다음을 선택합니다.

7. 설치 버튼을 선택하시면 IIS가 설치가 됩니다. 다음은 설치 결과 화면입니다. 닫기를 선택하시면 IIS 설치가 완료 됩니다.


8. IIS가 정상적으로 설치되었는지 확인하기 위해서는 인터넷 주소창에 http://localhost 또는 http://127.0.0.1 을 검색합니다.

다음과 같이 IIS 화면이 나타나게 되면 정상적으로 설치가 된 것입니다.


결론 IIS는 MS에서 지원하고 있기 때문에 설정이 아주 간단합니다. 상세하게 IIS를 설정하기 위해서는 [IIS(인터넷 정보 서비스) 관리자]에서 가능합니다.


게시된 글에서 잘못된 점이 있거나 이상한 점이 있다면 댓글로 남겨주세요


'IT > 나머지' 카테고리의 다른 글

소스 코드를 예쁘게 블로그에 올리기  (0) 2017.01.19
배치파일 만들기  (0) 2016.01.13
,
 [ 1 ]  [ 2 ] 

최근 댓글

최근 트랙백

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

링크

카운터

Today :
Yesterday :
Total :