· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Bzip2

<!doctype linuxdoc system>
<article>
<title>
Bzip2 mini-HOWTO
   <author>David Fetter, <url url="mailto:david@fetter.org" name="david@fetter.org">
  <date>v2.00, 22 August 1999
<trans>역자 : 이호연 <<url url="mailto:guru2k@kldp.org" name="guru2k@kldp.org" >>
<abstract>
이 문서는 새로운 압축 프로그램인 bzip2를 어떻게 사용하는지 이야기한다.
  sgml의 로컬카피는 현재의 사이트 <Bzip2-HOWTO.sgml> 에 있고, "권위가 있는"
  sgml은 <<url url="http://fetter.org/Bzip2-HOWTO/" name="fetter.org/Bzip2-HOWTO">> 에 있다.
 </abstract>
<toc>
<sect> 소개<p>
Bzip2는 자료를 압축하기 위한 좋은 새로운 알고리즘이다. 일반적으로
  gzip으로 한 것 보다 60-70%의 크기로 만든다.

이 문서는 당신을 bzip2를 통하여 일반 애플리케이션을 이용하게 만들 것이다.

이 문서의 미래의 버전은 bzip2를 만든 Julian Seward
  <<url url="mailto:Julian_Seward@muraroa.demon.co.uk" name="Julian_Seward@muraroa.demon.co.uk">> 가 친절히 쓴 bzip2
  C 라이브러리인 libbzip2가 있을 것이다. 라이브러리에 관한 낮은 레벨의
  bzip2 메뉴얼이 <<url url="http://www.bzip2.org/bzip2/docs/manual_toc.html" name="www.bzip2.org/bzip2/docs/manual_toc.html" >> 에 있다.

이 문서의 미래의 버전들은 아마 또한 bzip2를 리눅스 커널에서 써야하는지
  (그리고 어떻게)에 관한 해설에 대한 요약을 포함할 것이다.
</p>

<sect1>개정판 역사
<sect2> v2.00<p>
``Bzip2를 less와 같이 사용하기'' 부분이 변경되었다 그래서 .tar.bzip2 
  파일을 실제로 읽을수 있다. 정정한 것에 대해 Nicola Fabiano
  <<url url="mailto:mc864mclink.it" name="mc864mclink.it" >> 에게 감사한다.
buzzit 유틸리티가 갱신되었다.
tar 정보가 갱신되었다.
</p>

<sect2> v1.92<p>
``Bzip2 바이너리 얻기'' 부문이 변경되었고, S.u.S.E.에 추가한 것을 포함
  한다.
</p>

<sect2> v1.91<p>
오타가 교정되었고 ``Bzip2를 tar과 같이 쓰는 부문''의 셸 표현형식의 일
  부를 깨끗하게 했다. 이 것들에 대해 Alessandro Rubini에게 감사한다.

최초의 bzip2 데이터를 짓밟지 않기 위해 buzzit 툴을 갱신했다.

Zgrep같은 툴인 bgrep가 추가되었다.
</p>

<sect2> v1.9<p>
Gcc 2.7.* 문제를 깨끗하게 했다. 이것을 지적한 Ulrik Dickow에게 감사한다.

Leonard Jean-Marc의 훌륭한 tar과 같이 사용하는 방법이 추가되었다.

Linux Akerlund의 스웨덴 번역이 추가되었다.
Arnaud Launay의 제안으로 wu-ftpd 부문을 고쳤다.

번역들이 그들 자신의 부문으로 옮겨졌다.
</p>

<sect2> v1.8<p>
Buzzit과 그것들이 속한곳의 sgml의 tar.diff를 넣었다. 구두점과 형식을
  수정했다.  Arnaud Launay에게 나의 복사를 정정한 그의 도움에 대해 감사
  한다. :-)

대중의 관심 부족으로 새로운 적당한 xv 프로젝트를 했다.

이 문서의 미래의 버전을 위한 문제를 추가했다.
</p>

<sect2> v1.7<p>
Buzzit 유틸리티가 추가되었다. Gnu tar에 대한 패치를 고쳤다.
</p>

<sect2> v1.6<p>
TenThumbs의 Netscape enabler가 추가되었다.

또한 그의 제안으로 lesspipe.sh를 변경했다. 지금보다 훌륭하게 작동할
  것이다.</p>

<sect2> v1.5<p>
Arnaud Launay의 프랑스어 번역, 그리고 그의 wu-ftpd 파일이 추가되었다.
</p>

<sect2> v1.4<p>
Tetsu Isaji의 일본 번역이 추가되었다.
</p>

<sect2> v1.3<p>
Ulrik Dickow의 19.30와 더 높은 수준의 .emacs가 추가되었다.

(또한 그의 제안으로 emacs의 jka-compr.el패치가 정정되었다.
  이런! Bzip2의 플래그가 아직(?) 없군.)
</p>

<sect2>  v1.2<p>
Emacs의 패치가 변경되어서 자동적으로 .bz2 파일들을 인식한다.
</p>

<sect2> v1.1<p>
Emacs의 패치가 추가되었다.
</p>

<sect2> v1.0<p>
라운드 1.</p>

<sect>  Bzip2 얻기<p>
Bzip2의 홈페이지는 영국 홈 사이트인 <<url url="http://www.bzip2.org/" name="www.bzip2.org">>에 있고.
  미국 미러사이트는 <<url url="http://www.digistar.com/bzip2/index.html" name="www.digistar.com/bzip2/index.html">> 에 있다.
</p>

<sect1>  당신의 언어의 bzip2-HOWTO<p>
프랑스인들은 아마 Arnaud Launay의 프랑스어 문서를 참고하기를 바랄 것이다.
  웹 버전은 <<url url="http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html" name="www.freenix.fr/linux/HOWTO/mini/Bzip2.html" >> 에 있고,
  ftp는 <url url="ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz" name="ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz" > 여기 있다.
  Arnaud와 전자메일로 연락할 수 있다. 메일 주소는 <<url url="mailto:zoro@mygale.org" name="zoro@mygale.org" >> 이다.

일본인들은 아마 Tetsu Isaji의 일본어 문서를 참조하기를 바랄 것이다.
  문서는 <<url url="http://jf.gee.kyoto-u.ac.jp/JF/JF.html" name="jf.gee.kyoto-u.ac.jp/JF/JF.html" >> 에 있다. Isaji의 
  홈페이지 <<url url="http://www2s.biglobe.ne.jp/~kaien/" name="www2s.biglobe.ne.jp/~kaien/" >>에서 연락할수 있고, 혹은
  전자메일로 할 수 있다. 메일 주소는 <<url url="mailto:isaji@mxu.meshnet.or.jp" name="isaji@mxu.meshnet.or.jp">> 이다.

스웨덴인들은 아마 Linus Akerlund의 스웨덴어 문서를 참조하기를 바랄 것이
  다. 문서는 <<url url="http://user.tninet.se/~uxm165t/linux_doc.html" name="user.tninet.se/~uxm165t/linux_doc.html" >> 에 있다.
  Linus와 전자메일로 연락할수 있다. 메일 주소는 <<url url="mailto:uxm165t@tninet.se" name="uxm165t@tninet.se">> 이다.
</p>

<sect1> 컴파일된 bzip2 바이너리 얻기<p>
홈 사이트를 봐라.</p>

<sect1> Bzip2 소스 얻기<p>
공식적인 사이트에 있다 (``Bzip2 얻기'' 를 봐라.</p>

<sect1> 당신의 컴퓨터로 bzip2 컴파일하기<p>
만약 당신이 gcc 2.7.*을 가지고 있으면, 다음 라인을 바꿔라

     CFLAGS = -O3 -fomit-frame-pointer -funroll-loops
으로

     CFLAGS = -O2 -fomit-frame-pointer
-O3 과 -O2를 바꾸고 -funroll-loops를 넣는다. 커널 컴파일할때 당신은 아
  마 어떠한 -m* 플래그를(예를들어, -m486) 추가하길 원할 것이다.
-funroll-loops를 피하는 것은 제일 중요한 부분이고, gcc 2.7의 잘못된 코
  드를 생성하는 많은 원인이 되고, gcc 2.7의 코드가 더 느리고 더 커지기
  때문이다.  다른 컴파일러들 (lcc, egcs, gcc 2.8.x)을 위해 디폴트 CFLAGS
  가 좋다.
그 후, README대로 바로 그것을 만들고 설치해라.
</p>

<sect> Bzip2를 단독으로 쓰기	<p>
좋은 메뉴얼 페이지를 읽어봐라 :)</p>

<sect>  Bzip2를 tar과 같이 쓰기<p>
바꾸어 말하면 bzip2를 tar과 같이 쓰는 세가지 방법이 밑에 리스트 된다.
</p>

<sect1> 가장 쉬운 설치:<p>
이 방법은 전혀 설치가 필요하지 않다. 현재 디렉토리의 foo.tar.bz2처럼
  tar과 bzip2로 압축된 것을 풀려면

     /path/to/bzip2 -cd foo.tar.bz2 | tar xf -
또는

     tar --use-compress-prog=bzip2 xf foo.tar.bz2
이 작업은 종종 PITA 가 될 수도 있다.
</p>

<sect1>  root 특권 없이 쉽게 설치하고 사용하기:<p>
팁에 대해 Leonard Jean-Marc <<url url="mailto:leonard@sct1.is.belgacom.be" name="leonard@sct1.is.belgacom.be" >>에게
  감사한다. csh와 bash 구별이 생기는 것에 대해 Alessandro Rubini
  <<url url="mailto:rubini@morgana.systemy.it" name="rubini@morgana.systemy.it" >> 에게 역시 감사한다.

당신의 .bashrc, 이것과 같은 라인을 넣어라:

     alias btar='tar --use-compress-program /usr/local/bin/bzip2 '
당신의 .tcshrc, 또는 .cshrc, 이것과 유사하게 보이는 라인:

     alias btar 'tar --use-compress-program /usr/local/bin/bzip2'
</p>

<sect1> 루트의 접근이 필요하지만 쉽게 사용하기.<p>
당신의 tar을 GNU의 가장 새로운 버전으로 갱신해라, 현재는 1.13.10이다.
  그것은 GNU의 ftp 사이트 <url url="ftp://alpha.gnu.org/gnu/tar/" name=" alpha.gnu.org/gnu/tar/" >에서 찾을 수 있고
  혹은 어떤 미러.
</p>

<sect>  Bzip2를 less와 같이 쓰기<p>
bzip2으로 압축된 파일을 bunzip2 없이 less를 이용하려면 lesspipr.sh
  (man less) 파일을 다음과 같이 만들어라:
<code>
#!/bin/sh
  # This is a preprocessor for 'less'.  It is used when this environment
  # variable is set:   LESSOPEN="|lesspipe.sh %s"
  case "$1" in
    *.tar) tar tvvf $1 2>/dev/null ;; # View contents of various tar'd files
    *.tgz) tar tzvvf $1 2>/dev/null ;;
  # This one work for the unmodified version of tar:
    *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tvvf - ;;
  #This one works with the patched version of tar:
  # *.tar.bz2) tyvvf $1 2>/dev/null ;;
    *.tar.gz) tar tzvvf $1 2>/dev/null ;;
    *.tar.Z) tar tzvvf $1 2>/dev/null ;;
    *.tar.z) tar tzvvf $1 2>/dev/null ;;
    *.bz2) bzip2 -dc $1  2>/dev/null ;; # View compressed files correctly
    *.Z) gzip -dc $1  2>/dev/null ;;
    *.z) gzip -dc $1  2>/dev/null ;;
    *.gz) gzip -dc $1  2>/dev/null ;;
    *.zip) unzip -l $1 2>/dev/null ;;
    *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` ; # groff src
      FILE=`echo $FILE | cut -d ' ' -f 2`
      if [ "$FILE" = "troff" ]; then
        groff -s -p -t -e -Tascii -mandoc $1
      fi ;;
    *) cat $1 2>/dev/null ;;
  #  *) FILE=`file -L $1` ; # Check to see if binary, if so -- view with 'strings'
  #    FILE1=`echo $FILE | cut -d ' ' -f 2`
  #    FILE2=`echo $FILE | cut -d ' ' -f 3`
  #    if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
  #         -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
  #      strings $1
  #    fi ;;
    esac
    </code>
</p>

<sect> Bzip2를 emacs와 같이 쓰기

<sect1> 모두를 위해 emacs 바꾸기:
<p>
나는 자동압축모드를 추가한 jka-compr.el 패치에 따라 썼다.
부인서: 나는 emacs-20.0에서만 테스트를 해봤다, 그러나 다른 버전에 비슷
  하게 접근하지 못한다고 믿을 이유가 없다.
이 것을 써라,
<enum>
<item> emacs-20.2/lisp 소스 디렉토리에 가라 (당신이 tar을 푼 곳)
<item> jka-compr.el.diff 부르는 파일의 아래에 패치를 놓아라  (그 것은 저 파일
  에 단독으로 있어야한다 ;).
<item> 해라
 patch < jka-compr.el.diff
<item> Emacs를 시작해라, 그리고 해라

      M-x byte-compile-file jka-compr.el
<item> Emacs를 종료해라.
<item> 당신의 최초의 jka-compr.elc를 버그의 케이스안의 안전한 곳으로 옮겨라.
<item> 새로운 jka-compr.elc와 그 것을 바꿔라.
<item> 즐겨라!
</enum>

<code>
   --- jka-compr.el        Sat Jul 26 17:02:39 1997
     +++ jka-compr.el.new    Thu Feb  5 17:44:35 1998
     @@ -44,7 +44,7 @@
      ;; The variable, jka-compr-compression-info-list can be used to
      ;; customize jka-compr to work with other compression programs.
      ;; The default value of this variable allows jka-compr to work with
     -;; Unix compress and gzip.
     +;; Unix compress and gzip.  David Fetter added bzip2 support :)
      ;;
      ;; If you are concerned about the stderr output of gzip and other
      ;; compression/decompression programs showing up in your buffers, you
     @@ -121,7 +121,9 @@

    ;;; I have this defined so that .Z files are assumed to be in unix
     -;;; compress format; and .gz files, in gzip format.
     +;;; compress format; and .gz files, in gzip format, and .bz2 files,
     +;;; in the snappy new bzip2 format from <url url="http://www.muraroa.demon.co.uk" name="www.muraroa.demon.co.uk" >.
     +;;; Keep up the good work, people!
      (defcustom jka-compr-compression-info-list
        ;;[regexp
        ;; compr-message  compr-prog  compr-args
     @@ -131,6 +133,10 @@
           "compressing"    "compress"     ("-c")
           "uncompressing"  "uncompress"   ("-c")
           nil t]
     +    ["\\.bz2\\'"
     +     "bzip2ing"        "bzip2"         ("")
     +     "bunzip2ing"      "bzip2"         ("-d")
     +     nil t]
          ["\\.tgz\\'"
           "zipping"        "gzip"         ("-c" "-q")
           "unzipping"      "gzip"         ("-c" "-q" "-d")
</code>
</p>

<sect1>  한 사람을 위해 emacs 바꾸기:<p>
Kampsax Technology에 있는 시스템 프로그래머인 Ulrik Dickow, <url url="mailto:ukd@kampsax.dk" name="ukd@kampsax.dk" >
  <mailto:ukdATkampsax.dk> 에게 이것에 관해 감사한다:
당신이 시스템관리자가 아닐때 그것을 만들면 bzip2를 자동적으로 쓸 수 있다.
  당신의 .emacs 파일다음에 지금 추가해라.
<code>
  ;; Automatic (un)compression on loading/saving files (gzip(1) and similar)
  ;; We start it in the off state, so that bzip2(1) support can be added.
  ;; Code thrown together by Ulrik Dickow for ~/.emacs with Emacs 19.34.
  ;; Should work with many older and newer Emacsen too.  No warranty though.
  ;;
  (if (fboundp 'auto-compression-mode) ; Emacs 19.30+
      (auto-compression-mode 0)
    (require 'jka-compr)
    (toggle-auto-compression 0))
  ;; Now add bzip2 support and turn auto compression back on.
  (add-to-list 'jka-compr-compression-info-list
               ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
                "zipping"        "bzip2"         ()
                "unzipping"      "bzip2"         ("-d")
                nil t])
  (toggle-auto-compression 1 t)
</code>
</p>

<sect>  Bzip2를 wu-ftpd와 같이 쓰기<p>
Arnaud Launay에게 이 bandwidth 세이버에 대해 감사한다. 이것은 bzip2
  압축과 압축해제를 /etc/ftpconversions 에 한다. 경로를 정확히 해야 할
  것을 명심하라.
<code>
 :.Z:  :  :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
   :   : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
   :.gz: :  :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
   :   : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
   :.bz2: :  :/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:BUNZIP2
   :   : :.bz2:/bin/bzip2 -9 -c %s:T_REG:O_COMPRESS:BZIP2
   :   : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
   :   : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
   :   : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
   :   : :.tar.bz2:/bin/tar -c -y -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+BZIP2
</code>
</p>

<sect>  Bzip2를 grep와 같이 쓰기<p>
내가 bgrep을 실행할 때에는 linux 와 같이 오는 zgrep에 사소한 수정이
  가해진다. 당신은 bunzip2 명령의 사용 없이도 일단은 grep을 사용할 수 있을
  것이다.
<code>
#!/bin/sh
# bgrep -- a wrapper around a grep program that decompresses files as needed
  PATH="/usr/bin:$PATH"; export PATH
prog=`echo $0 | sed 's|.*/||'`
  case "$prog" in
          *egrep) grep=${EGREP-egrep}     ;;
          *fgrep) grep=${FGREP-fgrep}     ;;
          *)      grep=${GREP-grep}       ;;
  esac
  pat=""
  while test $# -ne 0; do
    case "$1" in
    -e | -f) opt="$opt $1"; shift; pat="$1"
             if test "$grep" = grep; then  # grep is buggy with -e on SVR4
               grep=egrep
             fi;;
    -*)      opt="$opt $1";;
     *)      if test -z "$pat"; then
               pat="$1"
             else
               break;
             fi;;
    esac
    shift
  done
if test -z "$pat"; then
    echo "grep through bzip2 files"
    echo "usage: $prog [grep_options] pattern [files]"
    exit 1
  fi
list=0
  silent=0
  op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
  case "$op" in
    *l*) list=1
  esac
  case "$op" in
    *h*) silent=1
  esac
if test $# -eq 0; then
    bzip2 -cd | $grep $opt "$pat"
    exit $?
  fi
res=0
  for i do
    if test $list -eq 1; then
      bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
      r=$?
    elif test $# -eq 1 -o $silent -eq 1; then
      bzip2 -cd "$i" | $grep $opt "$pat"
      r=$?
    else
      bzip2 -cd "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
      r=$?
    fi
    test "$r" -ne 0 && res="$r"
  done
  exit $res
</code>
</p>


<sect>  Bzip2를 X의 넷스케이프과 같이 쓰기.<p>
<url url="mailto:tenthumbs@cybernex.net " name="tenthumbs@cybernex.net >says:

     나는 gzip이 사용되던 리눅스용 넷스케이프에서의 문서의 인코딩을 bzip2를
       이용하여 할 수 있는 방법도 찾아내었다. 다음을 $HOME/.Xdefaults 이나
       $HOME/.Xresources 에 추가해라.
     나는 -s 옵션을 사용했는데 그것은 램의 사용상 어떤 경우에는 압축 해제
       속도가 더 빨랐기 때문이다. 당신은 원한다면 이 옵션은 빼도 좋을 것이다.
<code>
Netscape*encodingFilters:      \
          x-compress :  : .Z     : uncompress -c  \n\
          compress   :  : .Z     : uncompress -c  \n\
          x-gzip     :  : .z,.gz : gzip -cdq      \n\
          gzip       :  : .z,.gz : gzip -cdq      \n\
          x-bzip2    :  : .bz2   : bzip2 -ds \n
</code>
</p>

<sect>  Bzip2로 다른 압축 형식으로 압축된걸 다시 압축하기<p>
펄 프로그램을 이용하여 한 번 압축된 (.tar.gz, .tgz, .tar.Z, .Z,
  혹은 기타) 파일을 더 나은 압축파일로 다시 압축할 수 있다. 이 펄
  소스는 무엇을 할 것인가와 무엇을 어떻게 할 것인가에 대한 모든
  종류의 간결한 문서를 포함하고 있다. 이것의 최종 버전은 명령행에
  파일 이름을 입력하게 한다. 명령행에서 따로이 지정된 것이 없으면
  그것은 작업 디렉토리 안의 모든 것을 다시압축한다.
<code>
#!/usr/bin/perl -w
#######################################################
  #                                                     #
  # This program takes compressed and gzipped programs  #
  # in the current directory and turns them into bzip2  #
  # format.  It handles the .tgz extension in a         #
  # reasonable way, producing a .tar.bz2 file.          #
  #                                                     #
  #######################################################
  $counter = 0;
  $saved_bytes = 0;
  $totals_file = '/tmp/machine_bzip2_total';
  $machine_bzip2_total = 0;
@raw = (defined @ARGV)?@ARGV:<*>;
foreach(@raw) {
      next if /^bzip/;
      next unless /\.(tgz|gz|Z)$/;
      push @files, $_;
  }
  $total = scalar(@files);
foreach (@files) {
      if (/tgz$/) {
          ($new=$_) =~ s/tgz$/tar.bz2/;
      } else {
          ($new=$_) =~ s/\.g?z$/.bz2/i;
      }
      $orig_size = (stat $_)[7];
      ++$counter;
      print "Repacking $_ ($counter/$total)...\n";
      if ((system "gzip -cd $_ |bzip2 >$new") == 0) {
          $new_size = (stat $new)[7];
          $factor = int(100*$new_size/$orig_size+.5);
          $saved_bytes += $orig_size-$new_size;
          print "$new is about $factor% of the size of $_. :",($factor<100)?')':'(',"\n";
          unlink $_;
      } else {
          print "Arrgghh!  Something happened to $_: $!\n";
      }
  }
  print "You've "
      , ($saved_bytes>=0)?"saved ":"lost "
      , abs($saved_bytes)
      , " bytes of storage space :"
      , ($saved_bytes>=0)?")":"("
      , "\n"
      ;
unless (-e '/tmp/machine_bzip2_total') {
      system ('echo "0" >/tmp/machine_bzip2_total');
      system ('chmod', '0666', '/tmp/machine_bzip2_total');
  }

chomp($machine_bzip2_total = `cat $totals_file`);
  open TOTAL, ">$totals_file"
       or die "Can't open system-wide total: $!";
  $machine_bzip2_total += $saved_bytes;
  print TOTAL $machine_bzip2_total;
  close TOTAL;
print "That's a machine-wide total of ",`cat $totals_file`," bytes saved.\n";
</code>
</p>
</article>


ID
Password
Join
He who spends a storm beneath a tree, takes life with a grain of TNT.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0017 sec