2011년 3월 27일 일요일

Ajax(Asynchronous JavaScript and XML)

- 대화식 웹 애플리케이션의 제작을 위해 다음과 같은 조합을 이용하는 웹 개발 방법
   1. 표현 정보를 위한 HTML(또는 XHTML)과 CSS
   2. 동적인 화면 출력 및 표시 정보와의 상호 작용을 위한 DOM, 자바스크립트
   3. 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRequest(Ajax 애플리케션은 XML/XSLT 대신 미리 정의된 HTML이나 일반 텍스트, JSON, JSON-RPC를 이용 가능).

- DHTML이나 LAMP와 같이 Ajax는 자체가 하나의 특정을 기술을 말하는 것이 아니며, 함께 사용하는 기술의 묶음을 지칭하는 용어이다.
   실제로 AFLAX와 같이 사실상 Ajax에 바탕을 두고 있는 유사/복합 기술들이 속속 나타나고 있다.

- 기존 기술과의 차이점
   : 기존의 웹 애플리케이션은 브라우저에서 폼을 채우고 이를 웹 서버로 submit(하나의 요청이 됨)하면, 웹 서버에서 요청된 내용에 따라 데이터를 가공하여 새로운 웹 페이지를 작성하고 응답으로 되돌려 주는 형태이다. 일반적으로, 최초에 폼을 가지고 있던 페이지와 사용자가 이 폼을 채워 결과물로서 되돌려 받은 페이지는 유사한 내용을 가지고 있는 경우가 많다. 결과적으로 중복되는 HTML 코드를 다시 한 번 전송 받게 됨으로써 많은 대역폭을 낭비하게 된다. 대역폭의 낭비는 금전적 손실을 야기할 수 있으며 사용자와 대화(상호 반응)하는 서비스를 만들기 어렵게도 한다.
     반면에, Ajax 애플리케이션은 필요한 데이터만을 웹 서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트쪽에서는 자바스크립트를 쓴다. 웹 서버에서 전적으로 처리되던 데이터 처리의 일부분이 클라이언트 쪽에서 처리되므로 웹 브라우저와 웹 서버 사이에 교환되는 데이터량과 웹 서버의 데이터 처리량도 줄어들기 때문에 애플리케이션의 응답성이 좋아진다. 또한, 웹 서버의 데이터 처리에 대한 부하를 줄여주는 일이 요청을 주는 수많은 컴퓨터에 대해서 일어나기 때문에 전체적인 웹 서버 처리량도 줄어들게 된다.


- 장점
   1. 페이지 이동없는 고속 화면 전환
   2. 서버 처리를 기다리지 않고, 비동기 요청 가능
   3. 수신하는 데이터량을 줄일 수 있고, 클라이언트에게 처리 위임 가능

- 단점
   1. Ajax를 쓸 수 없는 브라우저에 대한 문제
   2. Http 클라이언트의 한정된 기능
   3. 페이지 이동없는 통신에 따른 보안상 문제
   4. 지원하는 Charset이 한정됨
   5. 스크립트로 작성되므로 Debugging이 용이하지 않음
   6. 요청을 남발하면, 역으로 서버 부하가 늘 수 있음



** 참고: 위키백과

jQeury

- 새로운 종류의 자바스크립트 라이브러리

- 자바스크립트와 HTML 사이의 상호작용을 강조하는 경량화된 웹 애플리케이션 프레임워크로써, 존 레시그에 의해 2006년 뉴욕시 바캠프(Barcamp NYC)에서 릴리즈되었다.

- MIT 라이선스와 GNU 일반 공중 사용 허가서의 듀얼 라이선스하의 자유 오픈 소프트웨어이다.


- 기능
   1. DOM 엘리먼트 선택
   2. DOM 트래버설 및 수정(CSS 1-3 지원. 기본적인 XPath를 플러그인 형태로 지원)
   3. 이벤트
   4. CSS 조작
   5. 특수효과 및 애니메이션
   6. Ajax
   7. 확장성
   8. 유틸리티 - 브라우저 버전, "each 함수"
   9. 자바스크립트 플러그인

- jQuery는 한 개의 자바스크립트 파일로 존재한다. 공통의 DOM, 이벤트, 특수효과, Ajax 함수를 포함한다.





** 참고: jQuery 사이트(jquery.com)
            위키백과

2011년 3월 24일 목요일

JavaScript

- 객체지향 프로그래밍을 지원하는 인터프리터 방식의 프로그램 언어

- 변수의 타입을 명시할 필요가 없는 타입 제약이 약한 언어

- 자바스크립트가 가장 널리 사용되는 곳은 웹 브라우저!!

- 처리 시점(자바스크립트는 언제 실행될까?)
   : 일단, 가장 먼저 우선권을 얻는다고 보면 된다.
     그것이 즉시 시행하는 명령이면 실행을 바로 하고, 함수 부분이면 메모리에 기록하였다가 특정한 사용자 이벤트(mouse click, change, select 등)가 발생할 때 해당 함수를 호출하여 사용한다.
     따라서,  대부분의 함수는 HEAD 부분에 위치하여 호출되기 전에 메모리에 올라가게 만들고, 즉시 시행되는 부분은 BODY 부분에 위치하여 필요한 곳에 배치하게 된다.


<< 문법 >>

대소문자를 구분하는 언어다.
   (대소문자를 구분하지 않는 HTML과 혼동하지 말자!)
- 많은 수의 자바스크립트 객체와 프로퍼티가 HTML 태그나 어트리뷰트 이름과 동일하다.
- HTML에서는 태그나 어트리뷰트 이름을 대소문자의 구별 없이 입력해도 되지만, 자바스크립트에서는 모두 소문자로 입력해야 한다.

- C, C++, 자바와 마찬가지로 자바스크립트 또한 각 문장의 구분을 위해 세미콜론을 사용한다.
- 문장들이 서로 다른 줄에 있는 경우, 세미콜론의 생략이 가능하지만, 세미콜론을 생략하는 것은 좋은 프로그래밍 습관이 아니므로 항상 사용하는 것이 좋다.

- 식별자 사용 시, 숫자는 첫 번째 문자로 허용되지 않는다.
   (숫자와 식별자를 쉽게 구별할 수 있게 하기 위한 제약 조건)

- 예약어
   1. 예약되어 있는 자바스크립트 키워드들
       : break
       : case, catch, continue
       : default, delete, do
       : else
       : false, finally, for, function
       : if, in, instanceof
       : new, null
       : return
       : switch
       : this, throw, true, try, typeof
       : var, void
       : while, with
   2. ECMA 확장을 위해 예약되어 있는 단어들
       : abstract
       : boolean, byte
       : char, class, const
       : debugger, double
       : enum, export, extends
       : final, float
       : goto
       : implements, import, int, interface
       : long
       : native
       : package, private, protected, public
       : short, static, super, synchronized
       : throws, transient
       : volatile
   3. 사용하지 말아야 할 기타 식별자들
       : arguments, Array, as
       : Boolean
       : Date, decodeURI, decodeURIComponent
       : encodeURI, Error, escape, eval, EvalError
       : Function
       : Infinity, is, isFinite, isNaN
       : Math
       : namespace, NaN, Number
       : Object
       : parseFloat, parseInt
       : RangeError, ReferenceError, RegExp
       : String, SyntaxError
       : TypeError
       : undefined, unescape, URIError, use

CSS 스타일시트 정의 방식

1. 임베디드 방식
    : <style type="text/css"></style> 을 사용하여 스타일을 지정하는 방식
      (type="text/css"는 생략하고 <style>만 써도 됨)
    : <head></head> 태그 사이에 정의한다.
    : HTML 소스에 그대로 삽입된다.
    -> 일반적으로 공통된 스타일시트가 적용되는 웹페이지의 수가 적을 때 사용
    <html>
        <head>
             <style type="text/css">
               /* 이 곳에 스타일 정의!! */
           </style>
         </head>
         <body>
          ...
          </body>
      </html>

2. 링크 방식(추천!)
    : <style></style> 태그는 생략하고, 파일에 스타일 내용만 작성하여 확장자를 css로 저장한 후 <link>태그를 사용하여 불러들이는 방식
    : 외부파일(*.css)로 정의한다.
    -> 여러 페이지에 동일한 스타일을 적용할 때 사용
         (다른 HTML 문서에도 스타일을 링크만으로 일관성있게 만들 수 있음)
    <link rel="stylesheet" type="text/css" href="*.css" />

3. 인라인 방식
    : 태그 하나하나에 일일이 속성값으로 지정해주는 방식
    : 태그내에 스타일을 적용하는 것이다.
    ->권장하지 않는 형태이나 특정한 스타일만 써야 할 필요가 있다면 사용해도 무방하다.
    <font style="font-family: 궁서; font-size:9pt; color:#ff0000>...</font>
 

2011년 3월 23일 수요일

유용한 리눅스 명령어

- pstree
   : 프로세스의 트리 구조를 보여줌

   : -pl 옵션 사용
     -> process id까지 함께 표시
  

vi 에디터 명령어, autotools(by bhbaek)

<< vi 에디터 >>

- u: 이전 저장 상태로 복귀




* 항상 "저장"했던 상태가 기준이 된다.

- 3.3 매우 중요



<<autotools>>

1. configure.ac 파일 작성 및 autoconf 실행하기
- CPP: 전처리기
- LIB: libc, libm(lib가 빠진 것, 빼고 쓰면 됨)

- 탭으로 구분해줘야 함(커맨드 써줄 때)!!

- AC_INIT, AC_OUTPUT 반드시 써줘야 함

- configure 실행하면, config.log(실행 끝난 후, 만들어지는 파일. 에러 발생 시, 자세하게 로그가 나와 있음), config.status(Makefile을 생성하는 장본인, Makefile.in 읽어들여서 Makefile 만듦), Makefile 만든다.

- 사용자 입력을 받는 configuration 파일을 만드는 것은 좋지 않음. (p.17 예제에서 read가 있는 것은 권장하지 않는 형태. 무시하자)

2. autoheader
- .h.in 파일 자동으로 생성

3. automake
- Makefile.in을 자동으로 생성해주는 유틸리티
- 간단히, Makefile.am만 작성하기
- configuration 파일에 automake를 사용한다는 것을 기재하여 알려줘야 함
   : AM_INIT_AUTOMAKE(프로젝트 이름, 버전)
   : AM_INIT(...) 다음 행에 작성하면 됨


** Cross Compile시, --prefix=경로 옵션 사용하기도 함

2011년 3월 22일 화요일

분산 스트림 컴퓨팅 기술 동향

- 스마트폰, CCTV, RFID, 센서 등 새로운 IT 환경이 사람, 사물, 환경의 스마트화를 가속시키며, 데이터 생성 및 소비에 있어 많은 변화를 주고 있음
- 이는, 데이터의 폭증을 야기함

- 생성 데이터의 대부분은 영상, 음성 등의 비정형 데이터

- 데이터의 적재적소 활용이 기업의 경쟁력 확보에 주요한 요인
- 그러나, 데이터량의 증대는 유용한 정보를 얻는 데 필요한 처리 시간의 지연을 야기하고 있고, 이를 해결하기 위해 분산 병렬 컴퓨팅 기술의 활용이 커지고 있음
- 최신 데이터를 기반으로 전략 수립, 의사 결정 등을 수행하기 위해서 실시간으로 데이터를 처리하여 데이터 처리 지연 시간을 최소화하려는 노력들이 가속화됨. 이를 가능케 하는 기술로 데이터 스트림 연속 처리 기술이 중요해지고 있음

- 비정형 스트림 데이터 처리를 위해 분산 스트림 처리 기술이 연구되고 있음

- 분산 스트림 처리 시스템은 데이터 흐름에 따라 연속 처리, 분산 노드에 단위 업무의 분배 및 부하 분산, 데이터 스트림 분할 및 통합에 의한 병렬 처리, 분산된 업무간의 데이터 스트림 전달 방법, 분산 노드의 장애에 대처하여 연속 서비스 제공 기술 등 분산 컴퓨팅 기술을 기반으로 스트림 연속 처리 기술을 통합하여 제공
- IBM 등 기존 DBMS 업체에서도 스트림 데이터의 폭증에 대한 확장성 제공 및 응용 로직의 유연한 통합을 위해 InfoSphere Streams라는 분산 스트림 컴퓨팅 기술을 제공
(InfoSphere Streams: 분산 스트림 처리 인프라를 기반으로 데이터 모델 기반 데이터 스트림 처리 연산이 통합되어 제공되는 분산 스트림 컴퓨팅 시스템)

- 분산 연속 처리 시스템
   1. Sprout: 인텔에서 개발한 비디오 실시간 분석 시스템인 SlipStream의 하부 시스템으로 대량의 데이터에 대한 분산 연속 처리
   2. MapReduce Online: 버클리 대학에서 대용량 데이터에 대한 일괄 처리를 지원하는 MapReduce를 확장하여 개발한 시스템
   3. S4(Simple Scalable Streaming System): 야후에서 개발 후 오픈소스화한 분산 스트림 처리 시스템
   4. iFlow: 한국전자통신연구원에서 2010년부터 개발하고 있는 분산 스트림 처리 시스템
              : 클러스터 시스템을 기반으로 폭증하는 데이터 스트림을 실시간으로 처리하는 환경을 지원
              : 시스템의 확장성과 스트림 처리 로직의 유연한 통합을 제공

- 분산 스트림 처리 기술은 모니터링&대응 서비스를 위한 기반 기술로, 데이터 처리 지연 최소화, 데이터 폭증에 대한 확장성 및 응용의 유연한 통합 환경을 제공
- 이는, 데이터량의 증가, 이로 인한 처리 시간 지연 등으로 인해 새롭게 각광받고 있는 분산 병렬 처리 기술과 데이터 처리 지연 최소화를 위해 데이터 선처리 후저장 방식의 데이터 처리 모델인 스트림 처리 기술이 통합된 기술
- 컴퓨팅 오버헤드로 인해 실현되기 힘들었던 텍스트, 영상 등 대량의 비정형 데이터 기반의 실시간 서비스를 가능케 하는 기술


** 참고: ETRI 전자통신동향분석 제 26권 제 1호 2011년 2월

maverick(ubutu 10.10)에 gstreamer(v10.32)를 설치하며...

1. 설치하고 싶은 패키지가 있다면 내가 가 볼 사이트는?
    http://packages.ubuntu.com/
    (잊 지 말 자 !)

2. 압축 파일 풀 때!
    2.1. 확장자가 .gzip 일 땐?
           #tar -xvzf   
    2.2. 확장자가 .bz2 일 땐?
           #tar -xvf

3. gstreamer 설치하면서 추가로 설치한 패키지들
    3.1. bison
    3.2. flex
    3.3. libglib
    3.4. libxml2
    (** 설치하려는 패키지가 안 나온다면? prefix로 lib를 붙여보자!)
  
4. 설치하며 얻은 팁들...
    4.1. make를 통해 생성된 파일들(현재 디렉토리 내)을 깔끔하게 지우고 싶다면?
          #make distclean
          (주의>이 명령은, makefile까지 지워버리기 때문에 다시 configuration부터 해야 함!!)
  
    4.2. ubuntu 내 설치 디렉토리 기본 경로
          /usr/local
          4.2.1. 기본 경로를 변경하고 싶다면?
                   "-prefix=/변경 경로" 옵션 주기!
                   예) #./configure -prefix=/변경 경로
          4.2.2. 변경한 경로 추가시키기
                   "PATH=$PATH:/변경 경로" 추가!
                    #vi .bashrc (내 홈 디렉토리에서 ls -a 커맨드를 때려보면! 보임 ㅎㅎ)
                    -> 위 파일의 가장 마지막에 삽입 후 저장
                         (if~fi 구문 종료 후, PATH=$PATH:/변경 경로 삽입)
                    #source .bashrc
                      (이 커맨드를 거쳐야 모든 터미널에 적용됨.
                       그렇지 않으면 현 터미널에서만 적용됨)
    4.3. help 커맨드 사용할 때
           -h 옵션 사용 안 되면?
           --help 이용
  





** 복습!!
/bin(시스템 관련), /usr/bin(/bin에 없는 것): 루트 권한
/usr/local/bin(사용자가 설치한 것 관련): 일반 사용자 권한

2011년 3월 21일 월요일

쉘 스크립트 작성

- 스크립트의 가장 첫 줄은 항상 #!로 시작한다.
   : #!은, 스크립트가 어떤 쉘로 동작할 지를 지정하는 것이다.
   : 리눅스의 쉘 프로그래밍은,
     어느 쉘을 사용하더라도 기본적으로는 비슷하게 작성할 수 있지만,
     세부적인 부분에서 달라지는 점이 있기 때문에 정확하게 쉘을 지정해 주어야 한다.

- #! 다음에는 본 스크립트를 실행할 인터프리터와 실행 옵션을 지정한다.
   : 쉘 스크립트에서는,
     #!/bin/sh 대개의 경우 시스템 기본 쉘로 동작,
     #!/bin/csh C 쉘로 동작,
     #!/bin/bash 배시 쉘로 동작,
     #!/bin/ksh 콘 쉘로 동작,
     #!/bin/tcsh TC 쉘로 동작
     와 같이 쉘의 절대 경로를 써준다.
     (전통적인 관습에 의하면, #!만 써 줄 경우, #!/bin/sh로 인식하므로
      본 쉘 스크립트 작성 시에는, 첫 줄은 #!/bin/sh나 #!로 하면 된다.)


- 예) 쉘 스크립트를 찾는 명령을 쉘 스크립트로 작성해보면!
      
       $ vi findscript.sh

       -> #! /bin/sh
  
            cd /bin; file * | grep "shell script"
            cd /usr/bin; file * | grep "shell scipt"
       :wq

      $ chmod +x findscript.sh (파일의 실행이 가능하도록 퍼미션을 준다.)
      $ ./findscript.sh (실행!!)

   











쉘 문법

1. 변수, 연산
    : 변수는 환경 변수, 인자 변수, 일반 변수로 구분된다.
    : 변수 사용 시 C와 달리, 처음 선언하는 것이 아니라 변수를 처음 사용할 때 생성한다.
    : 변수는 기본적으로 문자열로 저장되며, 변수의 내용을 보려면 $를 앞에 붙인 후 echo 명령으로 호출한다.
    : 변수를 인용 처리 하려면, 작은 따옴표(')로 $변수를 묶거나 $앞에 \문자를 붙여 $의 특별한 의미를 없앨 수 있다.
    : 변수의 값에 공백이 포함되면 앞뒤에 따옴표로 묶어주어야 하며, 등호(=) 앞뒤에 공백을 넣지 말아야 한다.
    1.1. 환경 변수
           : 쉘을 기동하면 기본적으로 셋팅되는 변수들로써,
             일반적으로 사용자정의 변수와 구분하기 위해 대문자로 표현된다.
           : 핵심 변수
             $HOME 사용자 홈 디렉토리
             $PATH  명령어 찾기에 사용되는 콜론(:)으로 구분되는 디렉토리 목록
             $IFS  입력필드 구분자.
                      쉘 상에서 입력을 읽어들일 때 낱말을 구분하기 위한 목적으로 사용되는 문자 목록
                      보통은 스페이스, 탭, 개행 문자
             $0  쉘 스크립트의 이름
             $#  전달된 인자의 갯수
             $$  쉘 스크립트의 프로세스 ID
                   쉘 스크립트 내부에서 중복되지 않는 파일의 이름을 만들 때 자주 사용
    1.2. 인자 변수
           : 쉘 스크립트에 인자를 넘겨줄 때 해당 인자에 대한 정보를 갖고 있는 변수
           $1, $2..  스크립트로 전달된 인자
           $*  스크립트로 전달된 인자 전체
                 환경 변수의 첫 번째 문자로 구분
           $@  $*와 비슷하나 IFS 환경 변수를 사용하지 않음

    1.3. 일반 변수
           : 특별한 제약이 없으며 대소문자의 구분만 명확히 하면 된다.

    1.4. 스크립트 파일 작성 예
           #!/bin/sh
             echo "This Script Executable File : $0"
             echo "Argument Count : $#"
             echo "Process ID : $$"
             echo "Argument List \$* : $*"
             echo "Argument List \$@ : $@"
             echo "Argument 1 : $1"
             echo "Argument 2 : $2"

          -->실행
          $chmod 755 argument (or chmod a+x argument)
          $./test a1 a2
          (파일로 작성하지 않고, 쉘에서 한 줄씩 커맨드 날려보며 확인해도 됨!)


2. 조건문, 제어 구조
    2.1. test, []
          : 쉘 스크립트에서 참거짓 값을 판단할 수 있는 것은 test와 []로 보통 같은 의미를 지닌다.
          : []명령어는 쉘 스크립트를 다른 프로그래밍 언어와 비슷하게 보이는 역할을 하기도 한다.

    2.2. if
          2.2.1. 형식1(단일 if문)
                    if [조건]
                    then
                      문장
                    fi
          2.2.2. 형식2(if~else문)
                    if [조건]
                    then
                      문장
                    else
                      문장
                    fi
          2.2.3. 형식3(여러가지 조건 검사)
                    if [조건]
                    then
                      문장
                    elif [조건]
                    then
                       문장   
                    else
                      문장
                    fi

    2.3. for
          : 지정한 범위 안에서 루프를 돌리는 데 사용한다.
          : 범위에 사용되는 값은 어떠한 문자열의 집합이라도 가능하다.
          : 루프가 돌 때마다 값1, 값2가 차례로 들어간다.
           for 변수 in 값1, 값2 ...
           do
              문장
           done

    2.4. while
           : 어떤 명령을 지정한 횟수만큼 실행시키기에는 부적합한 for루프를 보완
           : 실행 횟수가 불확실할 때 편리하다.
            while 조건문
            do
               문장
            done
           
    2.5. until
          : while과 비슷하나 조건이 참일 동안 실행되는 것이 아니라 거짓일 동안 실행된다.
            until 조건문
            do
               문장
            done

    2.6. select
          : 원하는 리스트를 출력하고 그 중 선택된 것을 돌려준다.
          : select 루프 내에서 자동으로 벗어날 수 없으므로 반드시 break문을 사용해야 한다.
          : 스크립트 작성 예
             #!/bin/sh
             echo "What do you like?"
             select var in "Linux" "Windows9x" "Win2k" "Win31" "Exit"
             do
               if [ "$var" = "Linux" ]; then
                  echo "You are a Linuxer!!!"
                  exit 0
              elif [ "$var" = "Exit" ]; then
                  echo "The question ended"
                  exit 1
              else
                  echo "$var is not the best way!!!"
                  echo "What do you like?"
              fi
           done

           --> 결과 : What do you like?
                 1) Linux
                 2) Windows9x
                 3) Win2k
                 4) Win31
                 5) Exit
                 #?

    2.7. case
          : 여러 패턴을 검사하고 이에 적절한 구문을 실행시켜 주는 것으로 강력한 기능을 갖고 있으며 쉘 스크립트에 많이 등장한다.
            case 변수 in
               패턴 [|패턴]...) 문장;
               패턴 [|패턴]...) 문장;
               ...
            esac

3. 목록
    : 여러 명령어를 실행할 때 앞의 명령의 결과에 의해서 다음 행동이 결정되어야 할 경우 AND나 OR조건을 사용해서 한 번에 처리할 수 있다.
    : 쉘 스크립트 뿐 아니라 명령행에서도 사용 가능하다.


4. 함수

5. 명령어


6. 명령 실행


7. 쉘 스크립트 내부에서 입력 전달(Here Documents)













쉘 스크립트

- SHELL??
   : 명령어 해석기 또는 유틸리티와 커널 사이에 위치해서 상호 작용을 담당한다.
   : 사용자를 리눅스(유닉스) 시스템과 이어주는 인터페이스이다.
     (쉘에 명령어를 입력하면, 쉘이 해당 명령을 운영체제가 실행할 수 있도록 전달함)
   : 크게 두 가지 기능을 제공한다.
     1. 명령어 해석
     2. 쉘 스크립트를 위한 프로그래밍 언어 제공

- SHELL 종류
   1. Bourne shell(sh)
       : 최초의 쉘, Bell 연구소에서 개발
   2. C shell(csh)
       : C 언어와 유사한 점이 많음
   3. Korn shell(ksh)
       : Bourne shell 기능 확장 + C shell 기능도 제공
   4. Bourne Agine shell(bash)
       : Bourne shell 기능 발전 + C shell, Korn shell의 기능도 어느 정도 포함하고 있는 쉘
   5. TC shell(tcsh)
       : C shell 확장

   * 내가 사용하고 있는 쉘을 확인하고 싶다면?
      : echo $SHELL
        (SHELL은 반드시 대문자로!)


- SHELL programming?
   : 빠르고 간편하게 작성할 수 있는 인터프리터 언어
   : 한 줄씩 실행시킬 수 있는 장점이 있지만, 정밀한 처리나 빠른 처리 요구에는 부적합
   : 프로그래밍 방법은 두 가지
     1. 실행할 명령을 순서대로 입력하여 대화식으로 실행
     2. 실행할 명령을 파일로 저장 후, 해당 파일을 실행


- SHELL Script??
   : 인터프리터로 쉘을 사용하는 스크립트
     (어떠한 쉘을 사용하는 가에 따라, 본 쉘 스크립트, C 쉘 스크립트, 콘 쉘 스크립트, TC 쉘 스크립트 등으로 나뉜다.)

   : 쉘 문법을 이용하여 프로그램을 작성하는 것
   : 쉘에서 사용할 수 있는 명령어들의 조합을 모아서 반든 배치(batch) 파일!
 
   : 쉘 자체는 다른 명령을 받아들이고 해당 명령을 수행하는 것이 주업무이나,
     제어문(if), 반복문(for, while)과 같은 문법을 제공한다.
   : 위 문법을 이용하여 프로그램을 작성하는 것을 쉘 스크립트 작성이라고 한다.

   : 리눅스에서는, 여러 명령어들을 파이프(pide), 리다이렉션(redirection), 필터(filter) 등으로 연결하여 원하는 결과를 얻어낼 수 있는데, 이런 방식으로 묶여진 명령어 조합이 반복적으로 사용된다면 이를 쉘 스크립트로, 즉 단일 명령으로 만들어 쉽게 사용할 수 있다.

   : unix/linux의 부팅 과정 중에 사용하는 대부분의 프로그램들이 쉘 스크립트이다.
     예) /etc/init.d 디렉토의 내의 파일들(ubutu 10.10 기준)!!

   * 내 시스템상의 쉘 스크립트를 확인하고 싶다면??
     : file과 grep 명령을 사용해서 찾아보자!
     -> 예) $cd /bin
               $file * | grep "shell script"
            
               $cd /usr/bin
               $file * | grep "shell script"






** 참고: http://mybox.happycampus.com/woaini123/136680
            http://yesyo.com/mintbbs/bbs/board.php?bo_table=linux&wr_id=244&page=5
            http://k.daum.net/qna/view.html?qid=00UEP
            http://www.lug.or.kr/docs/LINUX/others/10-4.htm

스크립트 언어

- 스크립트??
   : 인터프리터에 의해 해석/실행되는 프로그램을 의미한다.

- 스크립트 언어

   : 컴퓨터 프로그래밍 언어다.

   : 스크립트 프로그래밍 언어라고도 한다.

   : 다른 프로그램에 의해 번역되거나 수행되는 프로그램 혹은 명령어들의 나열을 말한다.

   : 응용 소프트웨어를 제어한다.

   : 응용 프로그램과 독립하여 사용되며, 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다.

   : 일반적으로 스크립트 언어들은, 보다 구조적이며 컴파일이 필요한 C나 C++과 같은 언어들에 비해 쉬우며 빠르게 작성할 수 있어서, 매우 제한된 능력을 가진 프로그램이나 컴파일된 기존 프로그램과 연결하여 재사용될 수 있는 프로그램을 만드는 데 가장 적당하다.

   : 어떤 종류의 인터프리터를 사용하는 가에 따라서 어떤 스크립트인가에 대한 이름이 정해진다.
     (쉘 스크립트, 펄 스크립트, Tcl/TK 스크립트 등의 이름에서 사용하는 인터프리터를 알 수 있다.)

- 대표적인 스크립트 언어
   : 액션스크립트 / 애플스크립트 / CFML / 그루비(Groovy) / HSP / 하이퍼토크 / 자바스크립트 / JCL / 로터스스크립트 / 펄(Perl) / PHP / 파이썬(Python) / REXX / Ringo / 루비(Ruby) / Scheme / 슈퍼토크 / Tcl / VBScript / 루아(LUA)



** 참고: http://www.terms.co.kr/script.htm
            http://ko.wikipedia.org/wiki/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8_%EC%96%B8%EC%96%B4