they do not belong into cvs ad they are autogenerated
authoroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Sun, 25 Feb 2001 23:18:40 +0000 (23:18 +0000)
committeroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Sun, 25 Feb 2001 23:18:40 +0000 (23:18 +0000)
git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@16 a5681a0c-68f1-0310-ab6d-d61299d08faa

config/config.h [deleted file]
configure [deleted file]
doc/test1.ps [deleted file]
doc/test2.ps [deleted file]

diff --git a/config/config.h b/config/config.h
deleted file mode 100644 (file)
index ae0be44..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/* config/config.h.  Generated automatically by configure.  */
-/* config/config.h.in.  Generated automatically from configure.in by autoheader.  */
-#ifndef CONFIG_H
-#define CONFIG_H
-
-
-/* Define to empty if the keyword does not work.  */
-/* #undef const */
-
-/* Define if you don't have vprintf but do have _doprnt.  */
-/* #undef HAVE_DOPRNT */
-
-/* Define if you have the strftime function.  */
-#define HAVE_STRFTIME 1
-
-/* Define if you have the vprintf function.  */
-#define HAVE_VPRINTF 1
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define if your <sys/time.h> declares struct tm.  */
-/* #undef TM_IN_SYS_TIME */
-
-/* IEEE can be prevented from raising signals with fpsetmask(0) */
-/* #undef MUST_DISABLE_FPMASK */
-
-/* #undef MUST_DISABLE_SIGFPE */
-
-/* realloc does not support NULL as argument */
-/* #undef NO_NULL_REALLOC */
-
-/* Define if you have the class function.  */
-/* #undef HAVE_CLASS */
-
-/* Define if you have the finite function.  */
-#define HAVE_FINITE 1
-
-/* Define if you have the fp_class function.  */
-/* #undef HAVE_FP_CLASS */
-
-/* Define if you have the fpclass function.  */
-#define HAVE_FPCLASS 1
-
-/* Define if you have the fpclassify function.  */
-/* #undef HAVE_FPCLASSIFY */
-
-/* Define if you have the getrusage function.  */
-#define HAVE_GETRUSAGE 1
-
-/* Define if you have the gettimeofday function.  */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define if you have the isinf function.  */
-/* #undef HAVE_ISINF */
-
-/* Define if you have the isnan function.  */
-#define HAVE_ISNAN 1
-
-/* Define if you have the memmove function.  */
-#define HAVE_MEMMOVE 1
-
-/* Define if you have the mktime function.  */
-#define HAVE_MKTIME 1
-
-/* Define if you have the snprintf function.  */
-#define HAVE_SNPRINTF 1
-
-/* Define if you have the strchr function.  */
-#define HAVE_STRCHR 1
-
-/* Define if you have the strerror function.  */
-#define HAVE_STRERROR 1
-
-/* Define if you have the vsnprintf function.  */
-#define HAVE_VSNPRINTF 1
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the <float.h> header file.  */
-#define HAVE_FLOAT_H 1
-
-/* Define if you have the <fp_class.h> header file.  */
-/* #undef HAVE_FP_CLASS_H */
-
-/* Define if you have the <ieeefp.h> header file.  */
-#define HAVE_IEEEFP_H 1
-
-/* Define if you have the <malloc.h> header file.  */
-#define HAVE_MALLOC_H 1
-
-/* Define if you have the <math.h> header file.  */
-#define HAVE_MATH_H 1
-
-/* Define if you have the <sys/param.h> header file.  */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define if you have the <sys/resource.h> header file.  */
-#define HAVE_SYS_RESOURCE_H 1
-
-/* Define if you have the <sys/time.h> header file.  */
-#define HAVE_SYS_TIME_H 1
-
-/* Define if you have the <sys/times.h> header file.  */
-#define HAVE_SYS_TIMES_H 1
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the m library (-lm).  */
-#define HAVE_LIBM 1
-
-/* Name of package */
-#define PACKAGE "rrdtool"
-
-/* Version number of package */
-#define VERSION "1.0.33"
-
-
-/* define strrchr, strchr and memcpy, memmove in terms of bsd funcs
-   make sure you are NOT using bcopy, index or rindex in the code */
-      
-#if STDC_HEADERS
-# include <string.h>
-#else
-# ifndef HAVE_STRCHR
-#  define strchr index
-#  define strrchr rindex
-# endif
-char *strchr (), *strrchr ();
-# ifndef HAVE_MEMMOVE
-#  define memcpy(d, s, n) bcopy ((s), (d), (n))
-#  define memmove(d, s, n) bcopy ((s), (d), (n))
-# endif
-#endif
-
-
-#if NO_NULL_REALLOC
-# define rrd_realloc(a,b) ( (a) == NULL ? malloc( (b) ) : realloc( (a) , (b) ))
-#else
-# define rrd_realloc(a,b) realloc((a), (b))
-#endif      
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* for Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* for OSF1 Digital Unix */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-/* for AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined (HAVE_FINITE) && defined (HAVE_ISFINITE))
-#  define HAVE_FINITE 1
-#  define finite(a) isfinite(a)
-#endif
-
-#if (! defined(HAVE_FINITE) && defined(HAVE_ISNAN) && defined(HAVE_ISINF))
-#  define HAVE_FINITE 1
-#  define finite(a) (! isnan(a) && ! isinf(a))
-#endif
-
-#ifndef HAVE_FINITE
-#error "Can't compile without finite function"
-#endif
-
-#ifndef HAVE_ISINF
-#error "Can't compile without isinf function"
-#endif
-
-#endif /* CONFIG_H */
-
diff --git a/configure b/configure
deleted file mode 100755 (executable)
index bb5b3b6..0000000
--- a/configure
+++ /dev/null
@@ -1,4209 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_default_prefix=/usr/local/rrdtool-1.0.33 
-ac_help="$ac_help
-  --with-tcllib=DIR       location of the tclConfig.sh"
-ac_help="$ac_help
-  --with-perl-options=[OPTIONS]  options to pass on command-line when
-                          generating Makefile from Makefile.PL"
-ac_help="$ac_help
-  --enable-shared[=PKGS]  build shared libraries [default=no]"
-ac_help="$ac_help
-  --enable-static[=PKGS]  build static libraries [default=yes]"
-ac_help="$ac_help
-  --enable-fast-install[=PKGS]  optimize for fast installation [default=yes]"
-ac_help="$ac_help
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]"
-ac_help="$ac_help
-  --disable-libtool-lock  avoid locking (might break parallel builds)"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=src/rrd_tool.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-ac_aux_dir=
-for ac_dir in config $srcdir/config; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in config $srcdir/config" 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-
-
-# Do some error checking and defaulting for the host and target type.
-# The inputs are:
-#    configure --host=HOST --target=TARGET --build=BUILD NONOPT
-#
-# The rules are:
-# 1. You are not allowed to specify --host, --target, and nonopt at the
-#    same time.
-# 2. Host defaults to nonopt.
-# 3. If nonopt is not specified, then host defaults to the current host,
-#    as determined by config.guess.
-# 4. Target and build default to nonopt.
-# 5. If nonopt is not specified, then target and build default to host.
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-case $host---$target---$nonopt in
-NONE---*---* | *---NONE---* | *---*---NONE) ;;
-*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
-esac
-
-
-# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
-else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:590: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
-  case $nonopt in
-  NONE)
-    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
-    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
-    fi ;;
-  *) host_alias=$nonopt ;;
-  esac ;;
-esac
-
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$host" 1>&6
-
-echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:611: checking target system type" >&5
-
-target_alias=$target
-case "$target_alias" in
-NONE)
-  case $nonopt in
-  NONE) target_alias=$host_alias ;;
-  *) target_alias=$nonopt ;;
-  esac ;;
-esac
-
-target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
-target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$target" 1>&6
-
-echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:629: checking build system type" >&5
-
-build_alias=$build
-case "$build_alias" in
-NONE)
-  case $nonopt in
-  NONE) build_alias=$host_alias ;;
-  *) build_alias=$nonopt ;;
-  esac ;;
-esac
-
-build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
-build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$build" 1>&6
-
-test "$host_alias" != "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:664: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_IFS"
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
-echo "configure:717: checking whether build environment is sane" >&5
-# Just in case
-sleep 1
-echo timestamp > conftestfile
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t $srcdir/configure conftestfile`
-   fi
-   if test "$*" != "X $srcdir/configure conftestfile" \
-      && test "$*" != "X conftestfile $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      { echo "configure: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" 1>&2; exit 1; }
-   fi
-
-   test "$2" = conftestfile
-   )
-then
-   # Ok.
-   :
-else
-   { echo "configure: error: newly created file is older than distributed files!
-Check your system clock" 1>&2; exit 1; }
-fi
-rm -f conftest*
-echo "$ac_t""yes" 1>&6
-if test "$program_transform_name" = s,x,x,; then
-  program_transform_name=
-else
-  # Double any \ or $.  echo might interpret backslashes.
-  cat <<\EOF_SED > conftestsed
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
-  program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
-  rm -f conftestsed
-fi
-test "$program_prefix" != NONE &&
-  program_transform_name="s,^,${program_prefix},; $program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
-
-# sed with no file args requires a program.
-test "$program_transform_name" = "" && program_transform_name="s,x,x,"
-
-echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:774: checking whether ${MAKE-make} sets \${MAKE}" >&5
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftestmake <<\EOF
-all:
-       @echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftestmake
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  SET_MAKE=
-else
-  echo "$ac_t""no" 1>&6
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-
-PACKAGE=rrdtool
-
-VERSION=1.0.33
-
-if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-  { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
-fi
-cat >> confdefs.h <<EOF
-#define PACKAGE "$PACKAGE"
-EOF
-
-cat >> confdefs.h <<EOF
-#define VERSION "$VERSION"
-EOF
-
-
-
-missing_dir=`cd $ac_aux_dir && pwd`
-echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:820: checking for working aclocal" >&5
-# Run test in a subshell; some versions of sh will print an error if
-# an executable is not found, even if stderr is redirected.
-# Redirect stdin to placate older versions of autoconf.  Sigh.
-if (aclocal --version) < /dev/null > /dev/null 2>&1; then
-   ACLOCAL=aclocal
-   echo "$ac_t""found" 1>&6
-else
-   ACLOCAL="$missing_dir/missing aclocal"
-   echo "$ac_t""missing" 1>&6
-fi
-
-echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:833: checking for working autoconf" >&5
-# Run test in a subshell; some versions of sh will print an error if
-# an executable is not found, even if stderr is redirected.
-# Redirect stdin to placate older versions of autoconf.  Sigh.
-if (autoconf --version) < /dev/null > /dev/null 2>&1; then
-   AUTOCONF=autoconf
-   echo "$ac_t""found" 1>&6
-else
-   AUTOCONF="$missing_dir/missing autoconf"
-   echo "$ac_t""missing" 1>&6
-fi
-
-echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:846: checking for working automake" >&5
-# Run test in a subshell; some versions of sh will print an error if
-# an executable is not found, even if stderr is redirected.
-# Redirect stdin to placate older versions of autoconf.  Sigh.
-if (automake --version) < /dev/null > /dev/null 2>&1; then
-   AUTOMAKE=automake
-   echo "$ac_t""found" 1>&6
-else
-   AUTOMAKE="$missing_dir/missing automake"
-   echo "$ac_t""missing" 1>&6
-fi
-
-echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:859: checking for working autoheader" >&5
-# Run test in a subshell; some versions of sh will print an error if
-# an executable is not found, even if stderr is redirected.
-# Redirect stdin to placate older versions of autoconf.  Sigh.
-if (autoheader --version) < /dev/null > /dev/null 2>&1; then
-   AUTOHEADER=autoheader
-   echo "$ac_t""found" 1>&6
-else
-   AUTOHEADER="$missing_dir/missing autoheader"
-   echo "$ac_t""missing" 1>&6
-fi
-
-echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:872: checking for working makeinfo" >&5
-# Run test in a subshell; some versions of sh will print an error if
-# an executable is not found, even if stderr is redirected.
-# Redirect stdin to placate older versions of autoconf.  Sigh.
-if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
-   MAKEINFO=makeinfo
-   echo "$ac_t""found" 1>&6
-else
-   MAKEINFO="$missing_dir/missing makeinfo"
-   echo "$ac_t""missing" 1>&6
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-CGI_LIB_DIR=libraries/cgilib-0.4
-GD_LIB_DIR=libraries/gd1.3
-PNG_LIB_DIR=libraries/libpng-1.0.9
-ZLIB_LIB_DIR=libraries/zlib-1.1.3
-
-
-
-
-
-
-
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:909: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$PERL" in
-  /*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_PERL="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
-  ;;
-esac
-fi
-PERL="$ac_cv_path_PERL"
-if test -n "$PERL"; then
-  echo "$ac_t""$PERL" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test "x$PERL" = "xno"; then
-       COMP_PERL=
-else
-       COMP_PERL="perl_piped perl_shared"
-       echo $ac_n "checking for shared library extension""... $ac_c" 1>&6
-echo "configure:947: checking for shared library extension" >&5
-       SO_EXT=`$PERL -e 'use Config; if (defined $Config{so} and $Config{so} ne 'a') {print "$Config{so}\n"} else {print "so\n"};'`
-       echo "$ac_t""$SO_EXT" 1>&6
-fi
-
-
-
-withval=""
-# Check whether --with-tcllib or --without-tcllib was given.
-if test "${with_tcllib+set}" = set; then
-  withval="$with_tcllib"
-  :
-fi
-
-found=0
-echo $ac_n "checking for tclConfig.sh in $withval""... $ac_c" 1>&6
-echo "configure:963: checking for tclConfig.sh in $withval" >&5
-if test -f "$withval/tclConfig.sh" ; then
-       tcl_config=$withval/tclConfig.sh
-        found=1
-        echo "$ac_t""yes" 1>&6
-        break
-else
-        echo "$ac_t""no" 1>&6
-fi
-
-if test $found -eq 0 ; then
-        echo "configure: warning: tclConfig.sh not found - Tcl interface won't be built" 1>&2
-else
-       . $tcl_config
-fi
-
-# Options to pass when configuring perl module
-# Check whether --with-perl-options or --without-perl-options was given.
-if test "${with_perl_options+set}" = set; then
-  withval="$with_perl_options"
-  PERL_MAKE_OPTIONS=$withval
-fi
-
-
-
-
-
-if test x$found = x1 ; then
-  COMP_TCL_TRUE=
-  COMP_TCL_FALSE='#'
-else
-  COMP_TCL_TRUE='#'
-  COMP_TCL_FALSE=
-fi
-
-
-
-
-
-
-
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1008: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1038: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_prog_rejected=no
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  if test -z "$CC"; then
-    case "`uname -s`" in
-    *win32* | *WIN32*)
-      # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1089: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="cl"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
- ;;
-    esac
-  fi
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1121: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 1132 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:1137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  ac_cv_prog_cc_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cc_cross=no
-  else
-    ac_cv_prog_cc_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
-  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1163: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1168: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
-else
-  ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1196: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_cc_g=yes
-else
-  ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1228: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    # This must be in double quotes, not single quotes, because CPP may get
-  # substituted into the Makefile and "${CC-cc}" will confuse make.
-  CPP="${CC-cc} -E"
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 1243 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 1260 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -nologo -E"
-  cat > conftest.$ac_ext <<EOF
-#line 1277 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
-fi
-  CPP="$ac_cv_prog_CPP"
-else
-  ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
-  enableval="$enable_shared"
-  p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_shared=yes ;;
-no) enable_shared=no ;;
-*)
-  enable_shared=no
-  # Look at the argument we got.  We use all the common list separators.
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_shared=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_shared=no
-fi
-
-
-# Check whether --enable-static or --disable-static was given.
-if test "${enable_static+set}" = set; then
-  enableval="$enable_static"
-  p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_static=yes ;;
-no) enable_static=no ;;
-*)
-  enable_static=no
-  # Look at the argument we got.  We use all the common list separators.
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_static=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_static=yes
-fi
-
-# Check whether --enable-fast-install or --disable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
-  enableval="$enable_fast_install"
-  p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_fast_install=yes ;;
-no) enable_fast_install=no ;;
-*)
-  enable_fast_install=no
-  # Look at the argument we got.  We use all the common list separators.
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_fast_install=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_fast_install=yes
-fi
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1381: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Check whether --with-gnu-ld or --without-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
-  withval="$with_gnu_ld"
-  test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:1420: checking for ld used by GCC" >&5
-  ac_prog=`($CC -print-prog-name=ld) 2>&5`
-  case "$ac_prog" in
-    # Accept absolute paths.
-    [\\/]* | [A-Za-z]:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the path of ld
-      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1444: checking for GNU ld" >&5
-else
-  echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1447: checking for non-GNU ld" >&5
-fi
-if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -z "$LD"; then
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      ac_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-       test "$with_gnu_ld" != no && break
-      else
-       test "$with_gnu_ld" != yes && break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-else
-  ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
-  echo "$ac_t""$LD" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
-echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1482: checking if the linker ($LD) is GNU ld" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-  ac_cv_prog_gnu_ld=yes
-else
-  ac_cv_prog_gnu_ld=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
-
-
-echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1498: checking for BSD-compatible nm" >&5
-if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  ac_cv_path_NM="$NM"
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
-      # Check to see if the nm accepts a BSD-compat flag.
-      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-      #   nm: unknown option "B" ignored
-      if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-       ac_cv_path_NM="$ac_dir/nm -B"
-       break
-      elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-       ac_cv_path_NM="$ac_dir/nm -p"
-       break
-      else
-       ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
-       continue # so that we can try to find one that supports BSD flags
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi
-fi
-
-NM="$ac_cv_path_NM"
-echo "$ac_t""$NM" 1>&6
-
-echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1534: checking whether ln -s works" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  rm -f conftestdata
-if ln -s X conftestdata 2>/dev/null
-then
-  rm -f conftestdata
-  ac_cv_prog_LN_S="ln -s"
-else
-  ac_cv_prog_LN_S=ln
-fi
-fi
-LN_S="$ac_cv_prog_LN_S"
-if test "$ac_cv_prog_LN_S" = "ln -s"; then
-  echo "$ac_t""yes" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# Check for any special flags to pass to ltconfig.
-libtool_flags="--cache-file=$cache_file"
-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
-test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
-test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-
-
-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
-  enableval="$enable_libtool_lock"
-  :
-fi
-
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line 1583 "configure"' > conftest.$ac_ext
-  if { (eval echo configure:1584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-    case "`/usr/bin/file conftest.o`" in
-    *32-bit*)
-      LD="${LD-ld} -32"
-      ;;
-    *N32*)
-      LD="${LD-ld} -n32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -64"
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1605: checking whether the C compiler needs -belf" >&5
-if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1610 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:1617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  lt_cv_cc_needs_belf=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  lt_cv_cc_needs_belf=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-
-
-esac
-
-
-# Save cache, so that ltconfig can load it
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-
-# Actually configure libtool.  ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; }
-
-# Reload cache, that may have been modified by ltconfig
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1720: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1725 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  ac_cv_header_stdc=yes
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 1750 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "memchr" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 1768 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "free" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1789 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:1800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  :
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
-  cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-for ac_hdr in fcntl.h fp_class.h malloc.h unistd.h ieeefp.h math.h sys/time.h sys/times.h sys/param.h sys/resource.h float.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1827: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1832 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1837: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1865: checking for working const" >&5
-if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1870 "configure"
-#include "confdefs.h"
-
-int main() {
-
-/* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this.  */
-char const *const *ccp;
-char **p;
-/* NEC SVR4.0.2 mips cc rejects this.  */
-struct point {int x, y;};
-static struct point const zero = {0,0};
-/* AIX XL C 1.02.0.0 rejects this.
-   It does not let you subtract one const X* pointer from another in an arm
-   of an if-expression whose if-part is not a constant expression */
-const char *g = "string";
-ccp = &g + (g ? g-g : 0);
-/* HPUX 7.0 cc rejects these. */
-++ccp;
-p = (char**) ccp;
-ccp = (char const *const *) p;
-{ /* SCO 3.2v4 cc rejects this.  */
-  char *t;
-  char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-  *t++ = 0;
-}
-{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-  int x[] = {25, 17};
-  const int *foo = &x[0];
-  ++foo;
-}
-{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-  typedef const int *iptr;
-  iptr p = 0;
-  ++p;
-}
-{ /* AIX XL C 1.02.0.0 rejects this saying
-     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-  struct s { int j; const int *ap[3]; };
-  struct s *b; b->j = 5;
-}
-{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-  const int foo = 10;
-}
-
-; return 0; }
-EOF
-if { (eval echo configure:1919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_const=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_c_const=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_const" 1>&6
-if test $ac_cv_c_const = no; then
-  cat >> confdefs.h <<\EOF
-#define const 
-EOF
-
-fi
-
-echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:1940: checking whether time.h and sys/time.h may both be included" >&5
-if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1945 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-int main() {
-struct tm *tp;
-; return 0; }
-EOF
-if { (eval echo configure:1954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_header_time=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_time=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_header_time" 1>&6
-if test $ac_cv_header_time = yes; then
-  cat >> confdefs.h <<\EOF
-#define TIME_WITH_SYS_TIME 1
-EOF
-
-fi
-
-echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:1975: checking whether struct tm is in sys/time.h or time.h" >&5
-if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1980 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <time.h>
-int main() {
-struct tm *tp; tp->tm_sec;
-; return 0; }
-EOF
-if { (eval echo configure:1988: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_struct_tm=time.h
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_struct_tm=sys/time.h
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_struct_tm" 1>&6
-if test $ac_cv_struct_tm = sys/time.h; then
-  cat >> confdefs.h <<\EOF
-#define TM_IN_SYS_TIME 1
-EOF
-
-fi
-
-
-echo $ac_n "checking for acos""... $ac_c" 1>&6
-echo "configure:2010: checking for acos" >&5
-if eval "test \"`echo '$''{'ac_cv_func_acos'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2015 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char acos(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char acos();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_acos) || defined (__stub___acos)
-choke me
-#else
-acos();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_acos=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_acos=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'acos`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for acos in -lm""... $ac_c" 1>&6
-echo "configure:2056: checking for acos in -lm" >&5
-ac_lib_var=`echo m'_'acos | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lm  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2064 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char acos();
-
-int main() {
-acos()
-; return 0; }
-EOF
-if { (eval echo configure:2075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo m | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lm $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-
-for ac_prog in gnroff nroff
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_NROFF'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$NROFF" in
-  /*)
-  ac_cv_path_NROFF="$NROFF" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_NROFF="$NROFF" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_NROFF="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-NROFF="$ac_cv_path_NROFF"
-if test -n "$NROFF"; then
-  echo "$ac_t""$NROFF" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$NROFF" && break
-done
-
-for ac_prog in groff troff
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_TROFF'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$TROFF" in
-  /*)
-  ac_cv_path_TROFF="$TROFF" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_TROFF="$TROFF" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_TROFF="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-fi
-TROFF="$ac_cv_path_TROFF"
-if test -n "$TROFF"; then
-  echo "$ac_t""$TROFF" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$TROFF" && break
-done
-
-
-if test "x$GCC" = "xyes"; then
-  oCFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline"
-  echo $ac_n "checking if we can use GCC-specific compiler options""... $ac_c" 1>&6
-echo "configure:2190: checking if we can use GCC-specific compiler options" >&5
-if eval "test \"`echo '$''{'rd_cv_gcc_opt'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2195 "configure"
-#include "confdefs.h"
-
-int main() {
-return 0 
-; return 0; }
-EOF
-if { (eval echo configure:2202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  rd_cv_gcc_opt=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  rd_cv_gcc_opt=no 
-fi
-rm -f conftest*
-               
-        
-fi
-
-echo "$ac_t""$rd_cv_gcc_opt" 1>&6
-  if test $rd_cv_gcc_opt = no; then
-         CFLAGS=$oCFLAGS
-  fi
-fi
-
-CFLAGS="$CFLAGS "`grep pic_flag= libtool | sed -e 's/.*pic_flag=//' -e 's/"//g'`
-
-case $target_os in
-*hpux*)
-       CLFAGS=`echo $CFLAGS|sed -e 's/-fPIC/-fpic/g'`
-;;
-esac
-
-echo $ac_n "checking for strftime""... $ac_c" 1>&6
-echo "configure:2231: checking for strftime" >&5
-if eval "test \"`echo '$''{'ac_cv_func_strftime'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2236 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char strftime(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char strftime();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_strftime) || defined (__stub___strftime)
-choke me
-#else
-strftime();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_strftime=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_strftime=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'strftime`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_STRFTIME 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-# strftime is in -lintl on SCO UNIX.
-echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6
-echo "configure:2281: checking for strftime in -lintl" >&5
-ac_lib_var=`echo intl'_'strftime | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lintl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2289 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char strftime();
-
-int main() {
-strftime()
-; return 0; }
-EOF
-if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_STRFTIME 1
-EOF
-
-LIBS="-lintl $LIBS"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2327: checking for vprintf" >&5
-if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2332 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char vprintf(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char vprintf();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_vprintf) || defined (__stub___vprintf)
-choke me
-#else
-vprintf();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_vprintf=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_vprintf=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_VPRINTF 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test "$ac_cv_func_vprintf" != yes; then
-echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2379: checking for _doprnt" >&5
-if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2384 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char _doprnt();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub__doprnt) || defined (__stub____doprnt)
-choke me
-#else
-_doprnt();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func__doprnt=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func__doprnt=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_DOPRNT 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-
-
-for ac_func in strerror snprintf vsnprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2436: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2441 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-for ac_func in fpclassify
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2492: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2497 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for fpclassify with <math.h>""... $ac_c" 1>&6
-echo "configure:2542: checking for fpclassify with <math.h>" >&5
-    cat > conftest.$ac_ext <<EOF
-#line 2544 "configure"
-#include "confdefs.h"
-#include <math.h>
-int main() {
-float f = 0.0; fpclassify(f)
-; return 0; }
-EOF
-if { (eval echo configure:2551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  echo "$ac_t""yes" 1>&6
-      cat >> confdefs.h <<\EOF
-#define HAVE_FPCLASSIFY 1
-EOF
-
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  echo "$ac_t""no" 1>&6
-fi
-rm -f conftest*
-fi
-done
-
-for ac_func in finite
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2571: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2576 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-for ac_func in isfinite
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2623: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for isfinite with <math.h>""... $ac_c" 1>&6
-echo "configure:2673: checking for isfinite with <math.h>" >&5
-    cat > conftest.$ac_ext <<EOF
-#line 2675 "configure"
-#include "confdefs.h"
-#include <math.h>
-int main() {
-float f = 0.0; isfinite(f)
-; return 0; }
-EOF
-if { (eval echo configure:2682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  echo "$ac_t""yes" 1>&6
-      cat >> confdefs.h <<\EOF
-#define HAVE_ISFINITE 1
-EOF
-
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  echo "$ac_t""no" 1>&6
-fi
-rm -f conftest*
-fi
-done
-
-fi
-done
-
-for ac_func in isinf
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2705: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2710 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for isinf with <math.h>""... $ac_c" 1>&6
-echo "configure:2755: checking for isinf with <math.h>" >&5
-    cat > conftest.$ac_ext <<EOF
-#line 2757 "configure"
-#include "confdefs.h"
-#include <math.h>
-int main() {
-float f = 0.0; isinf(f)
-; return 0; }
-EOF
-if { (eval echo configure:2764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  echo "$ac_t""yes" 1>&6
-      cat >> confdefs.h <<\EOF
-#define HAVE_ISINF 1
-EOF
-
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  echo "$ac_t""no" 1>&6
-fi
-rm -f conftest*
-fi
-done
-
-
-
-echo $ac_n "checking if realloc can deal with NULL""... $ac_c" 1>&6
-echo "configure:2784: checking if realloc can deal with NULL" >&5
-if eval "test \"`echo '$''{'rd_cv_null_realloc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2792 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-             int main(void){
-              char *x = NULL;
-             x = realloc (x,10);
-             if (x==NULL) return 1;
-             return 0;
-             }
-EOF
-if { (eval echo configure:2802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_null_realloc=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_null_realloc=nope
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$rd_cv_null_realloc" 1>&6
-
-if test x"$rd_cv_null_realloc" = xnope; then
-cat >> confdefs.h <<\EOF
-#define NO_NULL_REALLOC 1
-EOF
-
-fi
-
-
-
-
-_cflags=${CFLAGS}
-echo $ac_n "checking if IEEE math works out of the box""... $ac_c" 1>&6
-echo "configure:2830: checking if IEEE math works out of the box" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_works'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2838 "configure"
-#include "confdefs.h"
-
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    ;
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:2906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_works=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_works=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_works} = "xyes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
- CFLAGS="$_cflags -ieee"
-  echo $ac_n "checking if IEEE math works with the -ieee switch""... $ac_c" 1>&6
-echo "configure:2927: checking if IEEE math works with the -ieee switch" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_switch'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2935 "configure"
-#include "confdefs.h"
-
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    ;
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_switch=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_switch=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_switch} = "xyes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
- CFLAGS="$_cflags -qfloat=nofold"
-    echo $ac_n "checking if IEEE math works with the -qfloat=nofold switch""... $ac_c" 1>&6
-echo "configure:3024: checking if IEEE math works with the -qfloat=nofold switch" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_nofold'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3032 "configure"
-#include "confdefs.h"
-
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    ;
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_nofold=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_nofold=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_nofold} = "xyes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
- CFLAGS="$_cflags -w -qflttrap=enable:zerodivide"
-      echo $ac_n "checking if IEEE math works with the -w -qflttrap=enable:zerodivide""... $ac_c" 1>&6
-echo "configure:3121: checking if IEEE math works with the -w -qflttrap=enable:zerodivide" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_flttrap'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3129 "configure"
-#include "confdefs.h"
-
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    ;
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_flttrap=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_flttrap=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_flttrap} = "xyes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
- CFLAGS="$_cflags -mieee"
-       echo $ac_n "checking if IEEE math works with the -mieee switch""... $ac_c" 1>&6
-echo "configure:3218: checking if IEEE math works with the -mieee switch" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_mswitch'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3226 "configure"
-#include "confdefs.h"
-
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    ;
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_mswitch=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_mswitch=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_mswitch} = "xyes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
- CFLAGS="$_cflags -q float=rndsngl"
-         echo $ac_n "checking if IEEE math works with the -q float=rndsngl switch""... $ac_c" 1>&6
-echo "configure:3315: checking if IEEE math works with the -q float=rndsngl switch" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_qswitch'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3323 "configure"
-#include "confdefs.h"
-
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    ;
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_qswitch=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_qswitch=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_qswitch} = "xyes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
- CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
-           echo $ac_n "checking if IEEE math works with the -OPT:IEEE_comparisons=ON switch""... $ac_c" 1>&6
-echo "configure:3412: checking if IEEE math works with the -OPT:IEEE_comparisons=ON switch" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_ieeecmpswitch'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3420 "configure"
-#include "confdefs.h"
-
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    ;
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_ieeecmpswitch=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_ieeecmpswitch=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_ieeecmpswitch} = "xyes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
- CFLAGS=$_cflags
-             echo $ac_n "checking if IEEE math works with fpsetmask(0)""... $ac_c" 1>&6
-echo "configure:3509: checking if IEEE math works with fpsetmask(0)" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_mask'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3517 "configure"
-#include "confdefs.h"
-#include <floatingpoint.h>
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    fpsetmask(0);
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_mask=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_mask=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_mask} = "xyes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define MUST_DISABLE_FPMASK 1
-EOF
-
-              PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"
-else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking if IEEE math works with signal(SIGFPE,SIG_IGN)""... $ac_c" 1>&6
-echo "configure:3609: checking if IEEE math works with signal(SIGFPE,SIG_IGN)" >&5
-if eval "test \"`echo '$''{'rd_cv_ieee_sigfpe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3617 "configure"
-#include "confdefs.h"
-#include <signal.h>
-
-#if HAVE_MATH_H
-#  include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-#  include <float.h>  
-#endif
-
-#if HAVE_IEEEFP_H
-#  include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-#  include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif 
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-#  define HAVE_ISINF 1
-#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-#  define HAVE_ISINF 1
-#  define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
-    double nan,inf,c,zero;
-    signal(SIGFPE,SIG_IGN);
-    /* some math to see if we get a floating point exception */
-    zero=sin(0.0); /* don't let the compiler optimize us away */
-    nan=0.0/zero; /* especially here */
-    inf=1.0/zero; /* and here. I want to know if it can do the magic */
-                 /* at run time without sig fpe */
-    c = inf + nan;
-    c = inf / nan;
-    if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
-    if (nan == nan) {printf ("nan == nan ... "); return 1;}
-    if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
-    if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
-    if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
-    if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
-    return 0;
- }
-EOF
-if { (eval echo configure:3685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  rd_cv_ieee_sigfpe=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  rd_cv_ieee_sigfpe=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-if test x${rd_cv_ieee_sigfpe} = "xyes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define MUST_DISABLE_SIGFPE 1
-EOF
-
-                 PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"
-else
- echo "$ac_t""no" 1>&6
- { echo "configure: error: 
-Your Compiler does not do propper IEEE math ... Please find out how to
-make IEEE math work with your compiler and let me know (oetiker@ee.ethz.ch).
-Check config.log to see what went wrong ...
-" 1>&2; exit 1; }
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "examples/shared-demo.pl                    \
-          examples/piped-demo.pl                       \
-          examples/stripes.pl                          \
-          examples/bigtops.pl                          \
-          examples/minmax.pl                           \
-          examples/cgi-demo.cgi                                \
-          examples/Makefile                            \
-          doc/Makefile                                 \
-          libraries/Makefile                            \
-          libraries/cgilib-0.4/Makefile                 \
-          libraries/gd1.3/Makefile                     \
-          libraries/libpng-1.0.9/Makefile              \
-          libraries/zlib-1.1.3/Makefile                        \
-          src/Makefile                                 \
-          bindings/Makefile                             \
-          bindings/tcl/Makefile                                \
-          Makefile config/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@host@%$host%g
-s%@host_alias@%$host_alias%g
-s%@host_cpu@%$host_cpu%g
-s%@host_vendor@%$host_vendor%g
-s%@host_os@%$host_os%g
-s%@target@%$target%g
-s%@target_alias@%$target_alias%g
-s%@target_cpu@%$target_cpu%g
-s%@target_vendor@%$target_vendor%g
-s%@target_os@%$target_os%g
-s%@build@%$build%g
-s%@build_alias@%$build_alias%g
-s%@build_cpu@%$build_cpu%g
-s%@build_vendor@%$build_vendor%g
-s%@build_os@%$build_os%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@PACKAGE@%$PACKAGE%g
-s%@VERSION@%$VERSION%g
-s%@ACLOCAL@%$ACLOCAL%g
-s%@AUTOCONF@%$AUTOCONF%g
-s%@AUTOMAKE@%$AUTOMAKE%g
-s%@AUTOHEADER@%$AUTOHEADER%g
-s%@MAKEINFO@%$MAKEINFO%g
-s%@SET_MAKE@%$SET_MAKE%g
-s%@CGI_LIB_DIR@%$CGI_LIB_DIR%g
-s%@GD_LIB_DIR@%$GD_LIB_DIR%g
-s%@PNG_LIB_DIR@%$PNG_LIB_DIR%g
-s%@ZLIB_LIB_DIR@%$ZLIB_LIB_DIR%g
-s%@PERLFLAGS@%$PERLFLAGS%g
-s%@PERL@%$PERL%g
-s%@COMP_PERL@%$COMP_PERL%g
-s%@SO_EXT@%$SO_EXT%g
-s%@PERL_MAKE_OPTIONS@%$PERL_MAKE_OPTIONS%g
-s%@COMP_TCL_TRUE@%$COMP_TCL_TRUE%g
-s%@COMP_TCL_FALSE@%$COMP_TCL_FALSE%g
-s%@TCL_PREFIX@%$TCL_PREFIX%g
-s%@TCL_SHLIB_CFLAGS@%$TCL_SHLIB_CFLAGS%g
-s%@TCL_SHLIB_LD@%$TCL_SHLIB_LD%g
-s%@TCL_SHLIB_SUFFIX@%$TCL_SHLIB_SUFFIX%g
-s%@TCL_PACKAGE_PATH@%$TCL_PACKAGE_PATH%g
-s%@TCL_LD_SEARCH_FLAGS@%$TCL_LD_SEARCH_FLAGS%g
-s%@CC@%$CC%g
-s%@CPP@%$CPP%g
-s%@RANLIB@%$RANLIB%g
-s%@LN_S@%$LN_S%g
-s%@LIBTOOL@%$LIBTOOL%g
-s%@NROFF@%$NROFF%g
-s%@TROFF@%$TROFF%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"examples/shared-demo.pl                  \
-          examples/piped-demo.pl                       \
-          examples/stripes.pl                          \
-          examples/bigtops.pl                          \
-          examples/minmax.pl                           \
-          examples/cgi-demo.cgi                                \
-          examples/Makefile                            \
-          doc/Makefile                                 \
-          libraries/Makefile                            \
-          libraries/cgilib-0.4/Makefile                 \
-          libraries/gd1.3/Makefile                     \
-          libraries/libpng-1.0.9/Makefile              \
-          libraries/zlib-1.1.3/Makefile                        \
-          src/Makefile                                 \
-          bindings/Makefile                             \
-          bindings/tcl/Makefile                                \
-          Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_uB='\([     ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="config/config.h"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  echo creating $ac_file
-
-  rm -f conftest.frag conftest.in conftest.out
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h.  And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
-  ac_lines=`grep -c . conftest.vals`
-  # grep -c gives empty output for an empty file on some AIX systems.
-  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-  # Write a limited-size here document to conftest.frag.
-  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-  echo 'CEOF
-  sed -f conftest.frag conftest.in > conftest.out
-  rm -f conftest.in
-  mv conftest.out conftest.in
-' >> $CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-  rm -f conftest.vals
-  mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
-  rm -f conftest.frag conftest.h
-  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
-  cat conftest.in >> conftest.h
-  rm -f conftest.in
-  if cmp -s $ac_file conftest.h 2>/dev/null; then
-    echo "$ac_file is unchanged"
-    rm -f conftest.h
-  else
-    # Remove last slash and all that follows it.  Not all systems have dirname.
-      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-      # The file is in a subdirectory.
-      test ! -d "$ac_dir" && mkdir "$ac_dir"
-    fi
-    rm -f $ac_file
-    mv conftest.h $ac_file
-  fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-test -z "$CONFIG_HEADERS" || echo timestamp > config/stamp-h
-\
-          chmod +x examples/*.cgi examples/*.pl
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-
-echo $ac_n "checking in""... $ac_c" 1>&6
-echo "configure:4181: checking in" >&5
-echo "$ac_t""and out again" 1>&6
-
-echo $ac_n "ordering CD from http://ee-staff.ethz.ch/~oetiker/wish $ac_c" 1>&6
-sleep 1
-echo $ac_n ".$ac_c" 1>&6
-sleep 1
-echo $ac_n ".$ac_c" 1>&6
-sleep 1
-echo $ac_n ".$ac_c" 1>&6
-sleep 1
-echo $ac_n ".$ac_c" 1>&6
-sleep 1
-echo "$ac_t"" just kidding ;-)" 1>&6
-echo
-echo "----------------------------------------------------------------"
-echo "Config is DONE!"
-echo
-echo "Type 'make' to compile the software and use 'make install' to "
-echo "install everything to: $prefix."
-echo
-echo "If you want to install the perl"
-echo "modules in site-perl, try 'make site-perl-install'."
-echo 
-echo "       ... that wishlist is NO JOKE. If you find RRDtool useful"
-echo "make me happy. Go to http://ee-staff.ethz.ch/~oetiker/wish and"
-echo "place an order."
-echo 
-echo "                               -- Tobi Oetiker <tobi@oetiker.ch>"
-echo "----------------------------------------------------------------"
diff --git a/doc/test1.ps b/doc/test1.ps
deleted file mode 100644 (file)
index c2299fd..0000000
+++ /dev/null
@@ -1,1642 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.15
-%%CreationDate: Sun Feb 11 13:09:15 2001
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier
-%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.15 0
-%%Pages: 17
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.15 0
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Courier
-%%IncludeResource: font Symbol
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
-/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Courier@0 ENC0/Courier RE/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0
-ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 9/Times-Bold@0 SF 10.562 -6.496(NN AA)72 96
-T -8.494(MM)6.496 G 12.002 -6.001(EE /)8.494 H 2.25(/N)3.501 G(NO)-8.746
-E(OM)-7 E(MB)-8.494 E(BR)-6.001 E(RE)-6.496 E(E)-6.001 E F0 .715
-(rrdtutorial \255 T)108 108 R .715(utorial sobre RRDtool por Ale)-.45 F
-3.215(xv)-.15 G .715(an den Bog)-3.465 F .715(aerdt \(T)-.05 F .714
-(raducido al castellano por Jes\372s Couto)-.35 F -.15(Fa)108 120 S
-(ndi\361o\)).15 E F1 -6.496(DD)72 136.8 S -6.001(EE)6.496 G -5.002(SS)
-6.001 G -6.496(CC)5.002 G -6.496(RR)6.496 G -3.499(II)6.496 G -5.497(PP)
-3.499 G -6.001(TT)5.497 G -3.499(II)6.001 G -7(OO)3.499 G 12.992 -6.496
-(NN /)7 H 2.25(/D)3.996 G(DE)-8.746 E(ES)-6.001 E(SC)-5.002 E(CR)-6.496
-E(RI)-6.496 E(IP)-3.499 E(PC)-5.497 E(CI)-6.496 E<49d3>-3.499 E<d34e>-7
-E(N)-6.496 E F0 1.022(RRDtool es un programa escrito por T)108 148.8 R
-1.022(obias Oetik)-.8 F 1.022
-(er con la colaboraci\363n de muchas personas en di)-.1 F -.15(ve)-.25 G
-(rsas).15 E .003(partes del mundo. Ale)108 160.8 R 2.503(xv)-.15 G .003
-(an den Bog)-2.753 F .002(aerdt escribi\363 este documento para ayudart\
-e a entender que es RRDtool)-.05 F 2.5(yq)108 172.8 S
-(ue es lo que puede hacer por ti.)-2.5 E .854(La documentaci\363n que v\
-iene con RRDtool puede ser demasiado t\351cnica para algunos. Este tuto\
-rial e)108 189.6 R(xiste)-.15 E .429(para ayudarte a entender las funci\
-ones b\341sicas de RRdtool. Debe servirte de preparaci\363n para leer l\
-a docu-)108 201.6 R .518(mentaci\363n, y adem\341s e)108 213.6 R .519(x\
-plica algunas ideas generales sobre estad\355stica, con un enfoque part\
-icular hacia las)-.15 F(redes.)108 225.6 Q F1 -6.001(TT)72 242.4 S
--6.496(UU)6.001 G 9.59 -6.001(TT O)6.496 H(OR)-.999 E(RI)-6.496 E(IA)
--3.499 E(AL)-6.496 E(L)-6.001 E/F2 10/Times-Bold@0 SF -3.888(II)108
-254.4 S -8.328(mm)3.888 G -5.558(pp)8.328 G -4.998(oo)5.558 G -4.438(rr)
-4.998 G -3.328(tt)4.438 G -4.998(aa)3.328 G -5.558(nn)4.998 G -3.328(tt)
-5.558 G -4.438(ee)3.328 G F0 1.291(\241Por f)108 271.2 R -.2(avo)-.1 G
-2.091 -.4(r, n).2 H 3.791(ot).4 G 3.791(ea)-3.791 G 1.291
-(delantes en la lectura de este documento! Esta primera parte e)-3.791 F
-1.29(xplica los fundamentos)-.15 F .077(b\341sicos. Puede ser ab)108
-283.2 R .078
-(urrida, pero si te saltas los fundamentos, los ejemplos no te v)-.2 F
-.078(an a tener mucho sentido.)-.25 F F2 -4.998<bfbf>108 306 S -7.778
-(QQ)4.998 G -5.558(uu)7.778 G 8.876 -4.438<e9e9206565>5.558 H 7.776
--3.888(ss R)4.438 H(RR)-3.33 E(RD)-7.218 E(Dt)-7.218 E(to)-3.328 E(oo)
--4.998 E(ol)-4.998 E(l?)-2.778 E(?)-4.998 E F0 1.281
-(RRDtool signi\214ca `)108 322.8 R 1.281
-(`herramienta de bases de datos en round robin')-.74 F 3.781('. `)-.74 F
-1.28(`Round robin')-.74 F 3.78('e)-.74 G 3.78(su)-3.78 G 1.28
-(na t\351cnica que)-3.78 F .793(implica un n\372mero \214jo de datos, y\
- un apuntador al elemento m\341s reciente. Piensa en un circulo con uno\
-s)108 334.8 R 1.21(cuantos puntos dib)108 346.8 R 1.209
-(ujados alrededor del borde; estos puntos son los lug)-.2 F 1.209
-(ares donde se pueden guardar los)-.05 F .09(datos. Dib)108 358.8 R .091
-(uja ahora una \215echa desde el centro del c\355rculo a uno de los pun\
-tos; este es el apuntador)-.2 F 5.091(.C)-.55 G(uando)-5.091 E .718
-(se lee o escribe el dato actualmente apuntado, la \215echa se mue)108
-370.8 R 1.017 -.15(ve a)-.25 H 3.217(lp).15 G .717
-(r\363ximo elemento. Como estamos en)-3.217 F 1.456
-(un c\355rculo, no hay ni principio ni \214n; siempre puedes se)108
-382.8 R(guir)-.15 E 3.957(,e)-.4 G 1.457
-(ternamente. Al cabo de un tiempo ya se)-3.957 F .234(habr\341n usado t\
-odas las posiciones disponibles y el proceso empieza a reutilizar las a\
-ntiguas. De esta forma,)108 394.8 R .862
-(la base de datos no crece en tama\361o y)108 406.8 R 3.362(,p)-.65 G
-.863(or lo tanto, no requiere ning\372n mantenimiento.)-3.362 F .863
-(RRDtool trabaja)5.863 F(con estas bases de datos en `)108 418.8 Q
-(`round-robin')-.74 E(', guardando y recuperando datos de ellas.)-.74 E
-F2 -4.998<bfbf>108 441.6 S -7.778(QQ)4.998 G -5.558(uu)7.778 G 8.876
--4.438<e9e92064>5.558 H(da)-1.12 E(at)-4.998 E(to)-3.328 E(os)-4.998 E
-2.5(sp)-3.888 G(pu)-8.058 E(ue)-5.558 E(ed)-4.438 E(de)-5.558 E(en)
--4.438 E 2.5(ng)-5.558 G(gu)-7.498 E(ua)-5.558 E(ar)-4.998 E(rd)-4.438 E
-(da)-5.558 E(ar)-4.998 E(rs)-4.438 E(se)-3.888 E 2.5(ee)-4.438 G(en)
--6.938 E 2.5(nu)-5.558 G(un)-8.058 E(na)-5.558 E(a)-4.998 E F1 -6.496
-(RR)2.5 G -6.496(RR)6.496 G -6.496(DD)6.496 G F2 -4.998(??)6.496 G F0
-.694(Lo que se te ocurra. Debes poder medir alg\372n v)108 458.4 R .693
-(alor dado en distintos momentos en el tiempo y pro)-.25 F -.15(ve)-.15
-G .693(er a).15 F .663(RRDtool de estos v)108 470.4 R .663
-(alores. Si puedes hacer esto, RRDtool puede guardar los datos. Los v)
--.25 F .664(alores tienen que)-.25 F
-(ser num\351ricos, pero no necesariamente enteros, como en)108 482.4 Q
-/F3 9/Times-Roman@0 SF(MR)2.5 E(TG)-.54 E F0(.)A .105
-(Muchos ejemplos mencionan)108 499.2 R F3(SNMP)2.605 E F0 2.605(,q)C
-.105(ue es el acr\363nimo de `)-2.605 F .105(`Simple Netw)-.74 F .105
-(ork Management Protocol')-.1 F 2.604('\()-.74 G(Pro-)-2.604 E .239
-(tocolo Simple de Administraci\363n de Redes\). Lo de `)108 511.2 R
-(`simple')-.74 E 2.739('s)-.74 G 2.739(er)-2.739 G .239
-(e\214ere al protocolo \255 no se supone que sea)-2.739 F .083(f\341cil\
- administrar o monitorizar una red. Cuando hayas terminado con este doc\
-umento, deber\341s saber lo su\214-)108 523.2 R .931
-(ciente para entender cuando oig)108 535.2 R .931
-(as a otros hablar sobre)-.05 F F3(SNMP)3.431 E F0 3.431(.P)C .931
-(or ahora, simplemente considera a)-3.431 F F3(SNMP)3.432 E F0 .374
-(como una forma de pre)108 547.2 R .373(guntarle a los dispositi)-.15 F
--.2(vo)-.25 G 2.873(sp).2 G .373(or los v)-2.873 F .373
-(alores de ciertos contadores que mantienen. Son)-.25 F(estos v)108
-559.2 Q(alores de estos contadores los que v)-.25 E
-(amos a almacenar en la)-.25 E F3(RRD)2.5 E F0(.)A F2 -4.998<bfbf>108
-582 S -7.778(QQ)4.998 G -5.558(uu)7.778 G 8.876 -4.438<e9e92070>5.558 H
-(pu)-1.12 E(ue)-5.558 E(ed)-4.438 E(do)-5.558 E 2.5(oh)-4.998 G(ha)
--8.058 E(ac)-4.998 E(ce)-4.438 E(er)-4.438 E 2.5(rc)-4.438 G(co)-6.938 E
-(on)-4.998 E 2.5(ne)-5.558 G(es)-6.938 E(st)-3.888 E(ta)-3.328 E 2.5(ah)
--4.998 G(he)-8.058 E(er)-4.438 E(rr)-4.438 E(ra)-4.438 E(am)-4.998 E(mi)
--8.328 E(ie)-2.778 E(en)-4.438 E(nt)-5.558 E(ta)-3.328 E(a?)-4.998 E(?)
--4.998 E F0 1.299(RRDtool se deri)108 598.8 R 1.799 -.25(va d)-.25 H(e)
-.25 E F3(MR)3.799 E(TG)-.54 E F0 1.299(\(Multi Router T)3.799 F(raf)-.35
-E 1.299(\214c Grapher)-.25 F 3.799(,G)-.4 G 1.299(ra\214cador De T)
--3.799 F 1.3(r\341\214co de M\372ltiples Enruta-)-.35 F(dores\).)108
-610.8 Q F3(MR)6.021 E(TG)-.54 E F0 1.021(empez\363 como un peque\361o s\
-cript para poder gra\214car el uso de una cone)3.521 F 1.02
-(xi\363n a la Internet.)-.15 F(Lue)108 622.8 Q .461(go e)-.15 F -.2(vo)
--.25 G .462(lucion\363, permitiendo gra\214car otras fuentes de datos, \
-como temperatura, v).2 F .462(elocidad, v)-.15 F .462(oltajes, can-)-.2
-F .369(tidad de p\341ginas impresas, etc... Lo m\341s probable es que e\
-mpieces a usar RRDtool para guardar y procesar)108 634.8 R .533
-(datos conse)108 646.8 R .533(guidos a tra)-.15 F .533(v\351s de)-.2 F
-F3(SNMP)3.033 E F0 3.033(,yq)C .533(ue los datos sean el n\372mero de b\
-ytes \(o bits\) transferidos desde y)-3.033 F .299
-(hacia una red u ordenador)108 658.8 R 2.799(.R)-.55 G .298(RDtool te p\
-ermite crear una base de datos, guardar los datos en ellas, recuper)
--2.799 F(-)-.2 E .604(arlos y crear gr\341\214cos en formato)108 670.8 R
-F3(GIF)3.105 E F0(o)3.105 E F3(PNG)3.105 E F0 3.105(,p)C .605
-(ara mostrarlos en un na)-3.105 F -2.25 -.15(veg a)-.2 H .605(dor web)
-.15 F 3.105(.E)-.4 G .605(sas im\341genes depen-)-3.105 F .34(den de lo\
-s datos que hayas guardado y pueden, por ejemplo, ser un sumario del pr\
-omedio de uso de la red,)108 682.8 R 4.333(ol)108 694.8 S 1.834
-(os picos de tr\341\214co que ocurrieron.)-4.333 F -.8(Ta)6.834 G 1.834
-(mbi\351n lo puedes usar para mostrar el ni).8 F -.15(ve)-.25 G 4.334
-(ld).15 G 4.334(el)-4.334 G 1.834(as mareas, la)-4.334 F .008
-(radiaci\363n solar)108 706.8 R 2.508(,e)-.4 G 2.508(lc)-2.508 G .008
-(onsumo de electricidad, el n\372mero de visitantes en una e)-2.508 F
-.007(xposici\363n en un momento dado,)-.15 F .05(los ni)108 718.8 R -.15
-(ve)-.25 G .05
-(les de ruido cerca del aeropuerto, la temperatura en tu lug).15 F .05
-(ar de v)-.05 F .05(acaciones f)-.25 F -.2(avo)-.1 G .05
-(rito, o en la ne).2 F -.15(ve)-.25 G .05(ra, o).15 F .311
-(cualquier otra cosa que te puedas imaginar)108 730.8 R 2.811(,m)-.4 G
-.311(ientras teng)-2.811 F .31
-(as alg\372n sensor con el cual medir los datos y seas)-.05 F 145.68
-(2001-02-11 Last)72 778.8 R(change: 1.0.28)2.5 E(1)189.84 E EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F(capaz de pasarle los n\372meros a RRDtool.)108
-96 Q/F1 10/Times-Bold@0 SF -4.998<bfbf>108 118.8 S 14.436 -7.218(YY s)
-4.998 H(si)3.33 E 2.5(ia)-2.778 G<61fa>-7.498 E<fa6e>-5.558 E 2.5(nt)
--5.558 G(te)-5.828 E(en)-4.438 E(ng)-5.558 E(go)-4.998 E 2.5(op)-4.998 G
-(pr)-8.058 E -.18(ro)-4.438 G(ob)-4.818 E(bl)-5.558 E(le)-2.778 E(em)
--4.438 E(ma)-8.328 E(as)-4.998 E 2.5(sd)-3.888 G(de)-8.058 E(es)-4.438 E
-(sp)-3.888 E(pu)-5.558 E<75e9>-5.558 E<e973>-4.438 E 2.5(sd)-3.888 G(de)
--8.058 E 2.5(el)-4.438 G(le)-5.278 E(ee)-4.438 E(er)-4.438 E 2.5(re)
--4.438 G(es)-6.938 E(st)-3.888 E(te)-3.328 E 2.5(ed)-4.438 G(do)-8.058 E
-(oc)-4.998 E(cu)-4.438 E(um)-5.558 E(me)-8.328 E(en)-4.438 E(nt)-5.558 E
-(to)-3.328 E(o?)-4.998 E(?)-4.998 E F0 .22
-(Lo primero, \241l\351elo otra v)108 135.6 R .22
-(ez!. Puede que te hayas perdido de algo.)-.15 F .22
-(Si no puedes compilar el c\363digo fuente y)5.22 F .184
-(usas un sistema operati)108 147.6 R .584 -.2(vo b)-.25 H .184
-(astante com\372n, casi se).2 F .184
-(guro que no es la culpa de RRDtool.)-.15 F .183(Probablemente con-)
-5.183 F(sig)108 159.6 Q 1.18(as v)-.05 F 1.18
-(ersiones pre-compiladas por la Internet. Si pro)-.15 F 1.18
-(vienen de una fuente con\214able, \372salas. Si, por otro)-.15 F 1.058
-(lado, el programa funciona, pero no te da los resultados que tu espera\
-bas, puede ser un problema con la)108 171.6 R(con\214guraci\363n; re)108
-183.6 Q(v\355sala y comp\341rala con los ejemplos.)-.25 E .207
-(Hay una lista de correo electr\363nico y una archi)108 200.4 R .607 -.2
-(vo d)-.25 H 2.707(el).2 G 2.707(am)-2.707 G .208
-(isma. Lee la lista durante unas cuantas semanas, y)-2.707 F -.2(bu)108
-212.4 S .344(sca en el archi).2 F -.2(vo)-.25 G 2.844(.E).2 G 2.844(sd)
--2.844 G .344(escort\351s hacer una pre)-2.844 F .343
-(gunta sin haber re)-.15 F .343(visado el archi)-.25 F -.2(vo)-.25 G
-2.843<3ba1>.2 G .343(puede que tu problema)-2.843 F .424(ya haya sido r\
-esuelto antes! Normalmente ocurre as\355 en todas las listas de correo,\
- no s\363lo esta. Examina la)108 224.4 R
-(documentaci\363n que vino con RRDtool para v)108 236.4 Q
-(er donde est\341 el archi)-.15 E .4 -.2(vo y c)-.25 H(omo usarlo.).2 E
-2.415 -.7(Te s)108 253.2 T 1.014(ugiero que te tomes un momento y te su\
-bscribas a la lista ahora mismo, en).7 F 1.014(viando un mensaje a rrd-)
--.4 F .271(users-request@list.ee.ethz.ch con t\355tulo)108 265.2 R/F2 10
-/Courier@0 SF(subscribe)2.771 E F0 2.771(.S)C 2.772(ie)-2.771 G -.15(ve)
--3.022 G .272(ntualmente deseas salirte de la lista, en).15 F .272
-(v\355a otro)-.4 F(correo a la misma direcci\363n, con t\355tulo)108
-277.2 Q F2(unsubscribe)2.5 E F0(.)A F1 -4.998<bfbf>108 300 S -7.218(CC)
-4.998 G -4.998<f3f3>7.218 G -8.328(mm)4.998 G 9.996 -4.998(oo m)8.328 H
-(me)-3.33 E 2.5(ev)-4.438 G -.1(va)-7.498 G(as)-4.898 E 2.5(sa)-3.888 G
-2.5(aa)-7.498 G(ay)-7.498 E(yu)-4.998 E(ud)-5.558 E(da)-5.558 E(ar)
--4.998 E(r?)-4.438 E(?)-4.998 E F0 .37
-(D\341ndote descripciones y ejemplos detallados. Asumimos que el se)108
-316.8 R .37(guir las instrucciones en el orden en que)-.15 F .574
-(se presentan aqu\355 te dar\341 su\214ciente conocimiento)108 328.8 R
-.575(de RRDtool como para que e)5.575 F .575(xperimentes por tu cuenta.)
--.15 F 1.265(Si no funciona a la primera, puede que te hallas saltado a\
-lgo; siguiendo los ejemplos obtendr\341s algo de)108 340.8 R -.15(ex)108
-352.8 S .025(periencia pr\341ctica y).15 F 2.525(,l)-.65 G 2.525(oq)
--2.525 G .025(ue es m\341s importante, un poco de informaci\363n sobre \
-como funciona el programa.)-2.525 F .16
-(Necesitar\341s saber algo sobre n\372meros he)108 369.6 R .16
-(xadecimales. Si no, empieza por leer `)-.15 F(`bin_dec_he)-.74 E(x')
--.15 E 2.66('a)-.74 G .16(ntes de con-)-2.66 F(tinuar)108 381.6 Q(.)-.55
-E F1 9.916 -6.668(TT u)108 404.4 T 2.5(up)1.11 G(pr)-8.058 E(ri)-4.438 E
-(im)-2.778 E(me)-8.328 E(er)-4.438 E(ra)-4.438 E 2.5(ab)-4.998 G(ba)
--8.058 E(as)-4.998 E(se)-3.888 E 2.5(ed)-4.438 G(de)-8.058 E 2.5(ed)
--4.438 G(da)-8.058 E(at)-4.998 E(to)-3.328 E(os)-4.998 E 2.5(se)-3.888 G
-(en)-6.938 E 2.5(nr)-5.558 G -.18(ro)-6.938 G(ou)-4.818 E(un)-5.558 E
-(nd)-5.558 E(d-)-5.558 E(-r)-3.328 E -.18(ro)-4.438 G(ob)-4.818 E(bi)
--5.558 E(in)-2.778 E(n)-5.558 E F0 .333(En mi opini\363n, la mejor form\
-a de aprender algo es haci\351ndolo. \277Por qu\351 no empezamos ya? V)
-108 421.2 R .333(amos a crear)-1.11 F .235
-(una base de datos, poner unos cuantos v)108 433.2 R .234
-(alores en ella y e)-.25 F .234
-(xtraerlos despu\351s. La salida que obteng)-.15 F .234(as debe ser)-.05
-F(igual a la que aparece en este documento.)108 445.2 Q .036
-(Empezaremos con algo f\341cil, comparando un coche con un enrutador)108
-462 R 2.536(,op)-.4 G .037(or decirlo de otra forma, compara-)-2.536 F
-.106(ndo kil\363metros con bits y bytes. A nosotros nos da lo mismo; so\
-n unos n\372meros obtenidos en un espacio de)108 474 R(tiempo.)108 486 Q
-.381(Asumamos que tenemos un dispositi)108 502.8 R .781 -.2(vo q)-.25 H
-.381(ue trans\214ere bytes desde y hacia la Internet. Este dispositi).2
-F .782 -.2(vo t)-.25 H(iene).2 E .321(un contador que empieza en 0 al e\
-ncenderse y se incrementa con cada byte transferido. Este contador tien\
-e)108 514.8 R .166(un v)108 526.8 R .166(alor m\341ximo; si ese v)-.25 F
-.166(alor se alcanza y se cuenta un byte m\341s, el contador vuelv)-.25
-F 2.666(eae)-.15 G .166(mpezar desde cero.)-2.666 F .834(Esto es e)108
-538.8 R .833(xactamente lo mismo que pasa con muchos contadores, como e\
-l cuentakil\363metros del coche. En)-.15 F .782
-(muchas de las disertaciones sobre redes se habla de bits por se)108
-550.8 R .783(gundo, as\355 que empezaremos por acostum-)-.15 F .117(bra\
-rnos a esto. Asumamos que un byte son 8 bits y empecemos a pensar en bi\
-ts y no en bytes. \241El contador)108 562.8 R(,)-.4 E .503(sin embar)108
-574.8 R .503(go, sigue contando en bytes! En el mundo)-.18 F/F3 9
-/Times-Roman@0 SF(SNMP)3.004 E F0 3.004(,l)C 3.004(am)-3.004 G .504
-(ayor\355a de los contadores tienen una longi-)-3.004 F .577(tud de 32 \
-bits. Esto signi\214ca que pueden contar desde 0 hasta 4294967295. Usar\
-emos estos v)108 586.8 R .576(alores en los)-.25 F 1.317
-(ejemplos. El dispositi)108 598.8 R -.2(vo)-.25 G 3.818(,c).2 G 1.318
-(uando le pre)-3.818 F 1.318(guntamos, retorna el v)-.15 F 1.318
-(alor actual del contador)-.25 F 3.818(.C)-.55 G 1.318(omo sabemos el)
--3.818 F 1.697(tiempo transcurrido desde la \372ltima v)108 610.8 R
-1.697(ez que le pre)-.15 F 1.697
-(guntamos, sabemos cuantos bytes se han transferido)-.15 F/F4 10/Symbol
-SF(***)108 622.8 Q F2 1.46(en promedio)B F4(***)A F0 1.46(por se)3.96 F
-1.461
-(gundo. Esto no es muy dif\355cil de calcular; primero en palabras, lue)
--.15 F 1.461(go en)-.15 F(operaciones:)108 634.8 Q(1. T)108 651.6 Q
-(oma el v)-.8 E(alor actual del contador y r\351stale el v)-.25 E
-(alor anterior)-.25 E(2. Haz lo mismo con la fecha)108 668.4 Q
-(lo multiplicas por ocho obtienes la cantidad de bits por se)72 685.2 Q
-(gundo)-.15 E .348(3. Di)108 697.2 R .347(vide el resultado del paso \(\
-1\) por el resultado del paso \(2\). El resultado es la cantidad de byt\
-es por)-.25 F(se)128 709.2 Q .347(gundo. Si)-.15 F 145.68
-(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(2)189.84 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF(bps = \(contador_actual - c\
-ontador_anterior\) / \(fecha_actual - fecha_anterior\))120 96 Q/F2 10
-/Symbol SF(*)6 E F1(8)6 E F0 -.15(Pa)108 120 S 1.677
-(ra algunos ser\341 de ayuda traducir esto a un ejemplo automotor).15 F
-6.677(.N)-.55 G 4.177(op)-6.677 G 1.677(rueben estas v)-4.177 F 1.676
-(elocidades en la)-.15 F
-(pr\341ctica, y si lo hacen, no me echen la culpa por los resultados.)
-108 132 Q(Usaremos las siguientes abre)108 148.8 Q(viaturas:)-.25 E F1
-18(M: metros)114 165.6 R 12(KM: kil\363metros)114 177.6 R
-(\(= 1000 metros\).)6 E 18(H: horas)114 189.6 R 18(S: segundos)114 201.6
-R(KM/H: kil\363metros por hora)114 213.6 Q 6(M/S: metros)114 225.6 R
-(por segundo)6 E F0 -1.11(Va)108 249.6 S 2.692(sc)1.11 G .192(onduciend\
-o un coche. A las 12:05, miras el contador en el salpicadero y v)-2.692
-F .192(es que el coche ha recorrido)-.15 F(12345)108 261.6 Q/F3 9
-/Times-Roman@0 SF(KM)2.937 E F0 2.937(.Al)C .437(as 12:10 vuelv)-2.937 F
-.437(es a mirar otra v)-.15 F .437(ez, y dice 12357)-.15 F F3(KM)2.937 E
-F0 2.936(.Q)C .436(uiere decir)-2.936 F 2.936(,q)-.4 G .436
-(ue has recorrido 12)-2.936 F F3(KM)2.936 E F0 .468
-(en cinco minutos. Un cient\355\214co con)108 273.6 R -.15(ve)-.4 G .468
-(rtir\355a esto en metros por se).15 F .468
-(gundos; esto es bastante parecido al prob-)-.15 F
-(lema de pasar de bytes transferidos en 5 minutos a bits por se)108
-285.6 Q(gundo.)-.15 E -.6(Vi)108 302.4 S .564
-(ajamos 12 kil\363metros, que son 12000 metros. T).6 F .564
-(ardamos 5 minutos, o sea 300 se)-.8 F .564(gundos. Nuestra v)-.15 F
-(eloci-)-.15 E(dad es 12000M / 300S igual a 40 M/S.)108 314.4 Q -.8(Ta)
-108 331.2 S .028(mbi\351n podemos calcular la v).8 F .029(elocidad en)
--.15 F F3(KM/H:)2.529 E F0 .029(12 v)2.529 F .029
-(eces 5 minutos es una hora, as\355 que multiplicando los)-.15 F(12)108
-343.2 Q F3(KM)2.5 E F0(por 12 obtenemos 144)2.5 E F3(KM/H)2.5 E F0 2.5
-(.N)C 2.5(oi)-2.5 G(ntentes esto en casa, o por donde vi)-2.5 E .4 -.2
-(vo :)-.25 H<ad29>.2 E .243(Recuerda que estos n\372meros son tan s\363\
-lo promedios. No hay forma de deducir)108 360 R 2.742(,v)-.4 G .242
-(iendo s\363lo los n\372meros, si)-2.742 F(fuiste a una v)108 372 Q
-(elocidad constante.)-.15 E
-(Hay un ejemplo m\341s adelante en el tutorial que e)5 E(xplica esto.)
--.15 E .425
-(Espero que entiendas que no hay diferencia entre calcular la v)108
-388.8 R .426(elocidad en M/S o bps; s\363lo la forma en que)-.15 F 1.016
-(recogemos los datos es distinta. Inclusi)108 400.8 R -.15(ve)-.25 G
-3.515(,l).15 G 3.515(aKd)-3.515 G 3.515(ek)-3.515 G 1.015
-(ilo en este caso es e)-3.515 F 1.015(xactamente la misma, ya que en)
--.15 F(redes k es 1000)108 412.8 Q .254(Ahora v)108 429.6 R .254(amos a\
- crear una base de datos en la que guardar todos estos interesantes v)
--.25 F .255(alores. El m\351todo a usar)-.25 F .924
-(para arrancar el programa puede v)108 441.6 R .924(ariar de un sistema\
- de operaci\363n a otro, pero asumamos que lo puedes)-.25 F(resolv)108
-453.6 Q .843
-(er tu mismo en caso que se diferente en el sistema que usas.)-.15 F
-(Ase)5.843 E .843(g\372rate de no sobreescribir ning\372n)-.15 F(archi)
-108 465.6 Q .565 -.2(vo e)-.25 H 2.665(nt).2 G 2.665(us)-2.665 G .165
-(istema al ejecutarlo y escribe todo como una sola l\355nea \(tuv)-2.665
-F 2.665(eq)-.15 G .164(ue partirlo para que fuera le)-2.665 F(gi-)-.15 E
-(ble\), salt\341ndote todos los caracteres '\\')108 477.6 Q F1
-(rrdtool create test.rrd)126 494.4 Q(\\)78 E(--start 920804400)180 506.4
-Q(\\)60 E 12(DS:speed:COUNTER:600:U:U \\)180 518.4 R 36
-(RRA:AVERAGE:0.5:1:24 \\)180 530.4 R(RRA:AVERAGE:0.5:6:10)180 542.4 Q F0
-(\(o sea, escribe:)108 566.4 Q F1
-(rrdtool create test.rrd \255\255start 920804400 DS ...)2.5 E F0(\))A/F4
-10/Times-Bold@0 SF -4.998<bfbf>108 589.2 S -7.778(QQ)4.998 G -5.558(uu)
-7.778 G 8.876 -4.438<e9e92068>5.558 H(he)-1.12 E(em)-4.438 E(mo)-8.328 E
-(os)-4.998 E 2.5(sc)-3.888 G(cr)-6.938 E -.18(re)-4.438 G(ea)-4.258 E
-(ad)-4.998 E(do)-5.558 E(o?)-4.998 E(?)-4.998 E F0 .466(Hemos creado un\
-a base de datos en round robin llamada test \(test.rrd\), que empieza d\
-esde el mediod\355a del)108 606 R .592(d\355a en que empec\351 a escrib\
-ir este documento \(7 de marzo de 1999\). En ella se guarda una fuente \
-de datos)108 618 R(\()108 630 Q F3(DS)A F0 .717(\), llamada `)B(`speed')
--.74 E .718(', que se lee de un contador)-.74 F 3.218(.E)-.55 G 3.218
-(nl)-3.218 G 3.218(am)-3.218 G .718
-(isma base de datos se guardan dos archi)-3.218 F -.2(vo)-.25 G 3.218
-(se).2 G(n)-3.218 E .849
-(round robin \(RRAs\), uno promedia los datos cada v)108 642 R .849
-(ez que se leen \(o sea, no hay nada que promediar\), y)-.15 F .172(man\
-tiene 24 muestras \(24 por 5 minutos = 2 horas de muestras\). El otro p\
-romedia 6 muestras \(media hora\),)108 654 R 2.5(yg)108 666 S(uarda 10 \
-de estos promedios \(o sea, 5 horas\). Las opciones restantes las v)-2.5
-E(eremos m\341s adelante.)-.15 E .151(RRDtool usa un formato de `)108
-682.8 R(`fecha')-.74 E 2.651('e)-.74 G .151
-(special que viene del mundo de)-2.651 F F3(UNIX)2.651 E F0 2.651(.E)C
-.151(stas `)-2.651 F(`fechas')-.74 E 2.651('s)-.74 G .151
-(on el n\372mero)-2.651 F .922(de se)108 694.8 R .923
-(gundos que han pasado desde el primero de enero de 1970, zona)-.15 F F3
-(UTC)3.423 E F0 3.423(.E)C .923(ste n\372mero de se)-3.423 F .923
-(gundos se)-.15 F(con)108 706.8 Q(vierte lue)-.4 E
-(go en la fecha local, por lo que v)-.15 E(aria se)-.25 E
-(g\372n la franja horaria.)-.15 E 145.68(2001-02-11 Last)72 768 R
-(change: 1.0.28)2.5 E(3)189.84 E EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F .559(Lo m\341s probable es que tu no vi)108 96
-R -.25(va)-.25 G 3.059(se).25 G 3.059(nl)-3.059 G 3.059(am)-3.059 G .559
-(isma parte del mundo que yo, por lo que tu franja horaria ser\341)
--3.059 F .874(diferente. En los ejemplos, cuando mencione horas, puede \
-que no sean las mismas para ti; esto no afecta)108 108 R .718
-(mucho los resultados, s\363lo tienes que corre)108 120 R .717
-(gir las horas mientras lees. Por ejemplo, las 12:05 para m\355 son)-.15
-F(las 11:05 para los amigos en la Gran Breta\361a.)108 132 Q
-(Ahora tenemos que llenar nuestra base de datos con v)108 148.8 Q
-(alores. V)-.25 E(amos a suponer que le\355mos estos datos:)-1.11 E/F1
-10/Courier@0 SF 6(12:05 12345)114 165.6 R(KM)6 E 6(12:10 12357)114 177.6
-R(KM)6 E 6(12:15 12363)114 189.6 R(KM)6 E 6(12:20 12363)114 201.6 R(KM)6
-E 6(12:25 12363)114 213.6 R(KM)6 E 6(12:30 12373)114 225.6 R(KM)6 E 6
-(12:35 12383)114 237.6 R(KM)6 E 6(12:40 12393)114 249.6 R(KM)6 E 6
-(12:45 12399)114 261.6 R(KM)6 E 6(12:50 12405)114 273.6 R(KM)6 E 6
-(12:55 12411)114 285.6 R(KM)6 E 6(13:00 12415)114 297.6 R(KM)6 E 6
-(13:05 12420)114 309.6 R(KM)6 E 6(13:10 12422)114 321.6 R(KM)6 E 6
-(13:15 12423)114 333.6 R(KM)6 E F0(Llenaremos la base de datos as\355:)
-108 357.6 Q F1(rrdtool update test.rrd 920804700:12345 920805000:12357 \
-920805300:12363)114 374.4 Q(rrdtool update test.rrd 920805600:12363 920\
-805900:12363 920806200:12373)114 386.4 Q(rrdtool update test.rrd 920806\
-500:12383 920806800:12393 920807100:12399)114 398.4 Q(rrdtool update te\
-st.rrd 920807400:12405 920807700:12411 920808000:12415)114 410.4 Q(rrdt\
-ool update test.rrd 920808300:12420 920808600:12422 920808900:12423)114
-422.4 Q F0(Lo que signi\214ca: actualiza nuestra base de datos test con\
- los siguientes v)108 446.4 Q(alores:)-.25 E F1
-(fecha 920804700, valor 12345)114 463.2 Q(fecha 920805000, valor 12357)
-114 475.2 Q(etc\351tera.)114 499.2 Q F0 1.309(Como v)108 523.2 R 1.309
-(es, pueden introducirse m\341s de un v)-.15 F 1.31
-(alor en la base de datos por ejecuci\363n del comando. Y)-.25 F 3.81
-(ol)-1.1 G(os)-3.81 E(agrupo de tres en tres para hacerlo le)108 535.2 Q
-(gible, pero en realidad el m\341ximo depende del sistema de operaci\
-\363n.)-.15 E(Ahora podemos recuperar los datos usando `)108 552 Q
-(`rrdtool fetch')-.74 E(':)-.74 E F1
-(rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200)114
-568.8 Q F0(Debes obtener esto como salida:)108 592.8 Q F1(speed)228
-609.6 Q F0 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(4)189.84
-E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF 42(920804400: NaN)114 96 R
-42(920804700: NaN)114 108 R(920805000: 4.0000000000e-02)114 120 Q
-(920805300: 2.0000000000e-02)114 132 Q(920805600: 0.0000000000e+00)114
-144 Q(920805900: 0.0000000000e+00)114 156 Q(920806200: 3.3333333333e-02)
-114 168 Q(920806500: 3.3333333333e-02)114 180 Q
-(920806800: 3.3333333333e-02)114 192 Q(920807100: 2.0000000000e-02)114
-204 Q(920807400: 2.0000000000e-02)114 216 Q(920807700: 2.0000000000e-02)
-114 228 Q(920808000: 1.3333333333e-02)114 240 Q
-(920808300: 1.6666666667e-02)114 252 Q(920808600: 6.6666666667e-03)114
-264 Q(920808900: 3.3333333333e-03)114 276 Q 42(920809200: NaN)114 288 R
-F0 1.516(Si no, hay algo mal. Probablemente tu sistema de operaci\363n \
-muestre `)108 312 R(`NaN')-.74 E 4.016('d)-.74 G 4.016(eo)-4.016 G 1.516
-(tra forma; representa)-4.016 F -.74(``)108 324 S .407(Not a Number').74
-F .407(', o sea `)-.74 F .407(`No es un n\372mero')-.74 F .407
-('. Si aparece `)-.74 F(`U')-.74 E -5.406 2.907('o `)-.74 H(`)-3.647 E
-/F2 9/Times-Roman@0 SF(UNKN)A F0 1.888 -.74('' o a)D .408
-(lgo parecido, es lo mismo. Si).74 F 1.29
-(hay alguna otra diferencia, probablemente te equi)108 336 R -.2(vo)-.25
-G 1.29(caste al introducir alg\372n P v).2 F 1.29
-(alor \(asumiendo que mi)-.25 F(tutorial est\341 bien, por supuesto :\
-\255\). En ese caso, borra la base de datos y prueba de nue)108 348 Q
--.2(vo)-.25 G(.).2 E(Lo que representa e)108 364.8 Q
-(xactamente esta salida lo v)-.15 E
-(amos m\341s adelante en el tutorial.)-.25 E/F3 10/Times-Bold@0 SF
--7.778(HH)108 387.6 S -4.998(oo)7.778 G -4.438(rr)4.998 G 9.996 -4.998
-(aa d)4.438 H(de)-.56 E 2.5(eh)-4.438 G(ha)-8.058 E(ac)-4.998 E(ce)
--4.438 E(er)-4.438 E 2.5(ra)-4.438 G(al)-7.498 E(lg)-2.778 E(gu)-4.998 E
-(un)-5.558 E(no)-5.558 E(os)-4.998 E 2.5(sg)-3.888 G(gr)-7.498 E<72e1>
--4.438 E<e18c>-4.998 E<8c63>-5.558 E(co)-4.438 E(os)-4.998 E(s)-3.888 E
-F0(Prueba este comando:)108 404.4 Q F1(rrdtool graph speed.gif)114 421.2
-Q(\\)198 E(--start 920804400 --end 920808000)162 433.2 Q(\\)90 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)162 445.2 R(LINE2:myspeed#FF0000)
-162 457.2 Q F0 2.403(Este comando crea speed.gif, un gr\341\214co de lo\
-s datos desde las 12:00 hasta las 13:00. Contiene una)108 481.2 R .572
-(de\214nici\363n de la v)108 493.2 R .572(ariable myspeed y de\214ne el\
- color como rojo. Notar\341s que el gr\341\214co no comienza e)-.25 F
-(xacta-)-.15 E .489(mente a las 12:00 sino a las 12:05, y es porque no \
-tenemos datos su\214cientes como para calcular el prome-)108 505.2 R
-.396(dio de v)108 517.2 R .395(elocidad antes de ese momento. Esto s\
-\363lo ocurre en caso de que se pierdan alg\372n muestreo, lo que)-.15 F
-(esperamos que no debe ocurrir muy a menudo.)108 529.2 Q
-(Si ha funcionado, \241felicitaciones!. Si no, re)108 546 Q
-(visa qu\351 puede estar mal.)-.25 E .074
-(La de\214nici\363n de colores se construye a partir del rojo, v)108
-562.8 R .075(erde y azul. Especi\214cas cuanto de cada uno de estos)-.15
-F 1.438(componentes v)108 574.8 R 1.438(as a usar en he)-.25 F 1.437
-(xadecimal: 00 signi\214ca `)-.15 F 1.437(`nada de este color')-.74 F
-3.937('y)-.74 G F2(FF)A F0 1.437(signi\214ca `)3.937 F 1.437
-(`este color a)-.74 F .93(m\341xima intensidad')108 586.8 R .93('. El `)
--.74 F(`color')-.74 E 3.43('b)-.74 G .93(lanco es la mezcla del rojo, v)
--3.43 F .931(erde y azul a toda intensidad:)-.15 F F2(FFFFFF)3.431 E F0
-3.431(;e)C(l)-3.431 E(ne)108 598.8 Q
-(gro es la ausencia de todos los colores: 000000.)-.15 E F1 18
-(rojo #FF0000)126 615.6 R 12(verde #00FF00)126 627.6 R 18(azul #0000FF)
-126 639.6 R(violeta #FF00FF)126 651.6 Q(\(mezcla de rojo y azul\))30 E
-18(gris #555555)126 663.6 R(\(un tercio de cada uno de los colores\))30
-E F0 2.859(El archi)108 687.6 R -.2(vo)-.25 G F2(GIF)5.559 E F0 2.859
-(que acabas de crear puede v)5.359 F 2.859(erse con tu visor de archi)
--.15 F -.2(vo)-.25 G 5.359(sd).2 G 5.359(ei)-5.359 G 2.858(magen f)
--5.359 F -.2(avo)-.1 G 2.858(rito. Los).2 F(na)108 699.6 Q -2.25 -.15
-(veg a)-.2 H(dores lo mostrar\341n usando la).15 E F2(URL)2.5 E F0 -.74
-(``)2.5 G -1.95(\214le://el/camino/de/directorios/hasta/speed.gif ').74
-F(')-.74 E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(5)189.84
-E EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Times-Bold@0 SF -7.778(GG)108 96 S -4.438
-(rr)7.778 G -4.998<e1e1>4.438 G -5.558<8c8c>4.998 G -4.438(cc)5.558 G
--4.998(oo)4.438 G 7.776 -3.888(ss c)4.998 H(co)-.55 E(on)-4.998 E 2.5
-(nu)-5.558 G(un)-8.058 E 2.5(np)-5.558 G(po)-8.058 E(oc)-4.998 E(co)
--4.438 E 2.5(od)-4.998 G(de)-8.058 E 2.5(em)-4.438 G(ma)-10.828 E(at)
--4.998 E(te)-3.328 E(em)-4.438 E<6de1>-8.328 E<e174>-4.998 E(ti)-3.328 E
-(ic)-2.778 E(ca)-4.438 E(a)-4.998 E F0 .103(Cuando v)108 112.8 R .104(e\
-as la imagen, notar\341s que el eje horizontal tiene unas etiquetas mar\
-cando las 12:10, 12:20, 12:30,)-.15 F .712(12:40 y 12:50. Los otros dos\
- momentos \(12:00 y 13:00\) no se pueden mostrar bien por f)108 124.8 R
-.711(alta de datos, as\355)-.1 F .415
-(que el programa se los salta. El eje v)108 136.8 R .415
-(ertical muestra el rango de los v)-.15 F .415
-(alores que entramos. Introdujimos los)-.25 F 1.218(kil\363metros y lue)
-108 148.8 R 1.218(go di)-.15 F 1.218(vidimos entre 300 se)-.25 F 1.217
-(gundos, por lo que obtuvimos v)-.15 F 1.217(alores bastante bajos. P)
--.25 F 1.217(ara ser)-.15 F -.15(ex)108 160.8 S 1.422
-(actos, el primer v).15 F(alor)-.25 E 3.922(,1)-.4 G 3.922(2\()-3.922 G
-1.423(12357\25512345\), di)-3.922 F 1.423
-(vidido entre 300 da 0.04, lo que RRDtool muestra como)-.25 F -.74(``)
-108 172.8 S(40m').74 E .237(', o sea `)-.74 F(`40/1000')-.74 E .237
-('. \241La `)-.74 F(`m')-.74 E 1.717 -.74('' n)-.74 H 2.737(ot).74 G
-.237(iene nada que v)-2.737 F .237
-(er con metros, kil\363metros o mil\355metros!.)-.15 F(RRDtool)5.236 E(\
-no sabe nada de unidades, el s\363lo trabaja con n\372meros, no con met\
-ros.)108 184.8 Q 3.665(Donde nos equi)108 201.6 R -.2(vo)-.25 G 3.666(c\
-amos fue en que debimos medir en metros. As\355, \(12357000\25512345000\
-\)/300 =).2 F(12000/300 = 40.)108 213.6 Q -1.11(Va)108 230.4 S 1.755
-(mos a corre)1.11 F 1.754
-(girlo. Podr\355amos recrear la base de datos con los v)-.15 F 1.754
-(alores correctos, pero hay una forma)-.25 F
-(mejor: \241haciendo los c\341lculos mientras creamos el archi)108 242.4
-Q .4 -.2(vo g)-.25 H(if!).2 E/F2 10/Courier@0 SF
-(rrdtool graph speed2.gif)126 259.2 Q(\\)162 E
-(--start 920804400 --end 920808000)144 271.2 Q(\\)90 E
-(--vertical-label m/s)144 283.2 Q(\\)168 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 295.2 R
-(CDEF:realspeed=myspeed,1000,)144 307.2 Q/F3 10/Symbol SF(*)A F2(\\)114
-E(LINE2:realspeed#FF0000)144 319.2 Q F0 1.471(Cuando v)108 343.2 R 1.471
-(eas esta imagen, notar\341s que la `)-.15 F(`m')-.74 E 3.971('h)-.74 G
-3.971(ad)-3.971 G 1.472
-(esaparecido, y ahora tienes los resultados correctos.)-3.971 F(Adem\
-\341s hemos a\361adido una etiqueta a la imagen. Apartando esto, el arc\
-hi)108 355.2 Q -.2(vo)-.25 G/F4 9/Times-Roman@0 SF(GIF)2.7 E F0
-(es el mismo.)2.5 E .628(Las operaciones est\341n en la secci\363n del)
-108 372 R F4(CDEF)3.128 E F0 3.128(ye)3.128 G .628
-(st\341n escritas en Notaci\363n Polaca In)-3.128 F -.15(ve)-.4 G .627
-(rsa \(Re).15 F -.15(ve)-.25 G .627(rse Polish).15 F 2.033(Notation o `)
-108 384 R(`)-.74 E F4(RPN)A F0 -.74('')C 2.033(\). En palabras, dice: `)
-.74 F 2.033(`toma la fuente de datos myspeed y el numero 1000, y mul-)
--.74 F(tipl\355calos')108 396 Q .25('. No te molestes en meterte con)
--.74 F F4(RPN)2.75 E F0(toda)2.75 E .25(v\355a, la v)-.2 F .249
-(eremos con m\341s detalle m\341s adelante. Adem\341s,)-.15 F .289
-(puede que quieras leer mi tutorial sobre los)108 408 R F4(CDEF)2.789 E
-F0 2.79(ye)2.789 G 2.79(lt)-2.79 G .29(utorial de Ste)-2.79 F .59 -.15
-(ve R)-.25 H .29(ader sobre).15 F F4(RPN)2.79 E F0 2.79(,p)C .29
-(ero primero ter)-2.79 F(-)-.2 E(minemos con este.)108 420 Q 2.307
-(\241Un momento! Si podemos multiplicar los v)108 436.8 R 2.306
-(alores por mil, entonces, \241tambi\351n deber\355a ser posible el)-.25
-F(mostrar la v)108 448.8 Q
-(elocidad en kil\363metros por hora usando los mismos datos!)-.15 E -.15
-(Pa)108 465.6 S .051(ra cambiar el v).15 F .051
-(alor que medimos en metros por se)-.25 F .052
-(gundo, calculamos los metros por hora \(v)-.15 F(alor)-.25 E F3(*)2.552
-E F0 .052(3600\) y)2.552 F(di)108 477.6 Q .791
-(vidimos entre 1000 para sacar los kil\363metros por hora. T)-.25 F .79
-(odo junto hace v)-.8 F(alor)-.25 E F3(*)3.29 E F0 .79
-(\(3600/1000\) == v)3.29 F(alor)-.25 E F3(*)3.29 E F0(3.6.)108 489.6 Q
-.155(Como en nuestra base de datos cometimos un error guardando los v)
-108 506.4 R .155(alores en kil\363metros, debemos compen-)-.25 F(sar po\
-r ello, multiplicando por 100, por lo que al aplicar esta correcci\363n\
- nos queda v)108 518.4 Q(alor)-.25 E F3(*)2.5 E F0(3600.)2.5 E(Ahora v)
-108 535.2 Q
-(amos a crear este gif, agre\341ndole un poco m\341s de magia...)-.25 E
-F2(rrdtool graph speed3.gif)126 552 Q(\\)162 E
-(--start 920804400 --end 920808000)144 564 Q(\\)90 E
-(--vertical-label km/h)144 576 Q(\\)162 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 588 R
-("CDEF:kmh=myspeed,3600,)144 600 Q F3(*)A F2 138("\\)C 108
-(CDEF:fast=kmh,100,GT,kmh,0,IF \\)144 612 R 108
-(CDEF:good=kmh,100,GT,0,kmh,IF \\)144 624 R
-(HRULE:100#0000FF:"Maximum allowed")144 636 Q(\\)84 E
-(AREA:good#00FF00:"Good speed")144 648 Q(\\)114 E
-(AREA:fast#FF0000:"Too fast")144 660 Q F0 .634(Esto luce mucho mejor)108
-684 R 3.133(.L)-.55 G 3.133(av)-3.133 G .633(elocidad en)-3.283 F F4
-(KM/H)3.133 E F0 3.133(,ya)C .633(dem\341s tenemos una l\355nea e)-3.133
-F .633(xtra mostrando la v)-.15 F(elocidad)-.15 E .988
-(m\341xima permitida \(en el camino por donde conduzco\). T)108 696 R
-.988(ambi\351n le cambie los colores de la v)-.8 F .989(elocidad, y)-.15
-F(ahora paso de ser una l\355nea a un \341rea.)108 708 Q 145.68
-(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(6)189.84 E EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F(Los c\341lculos son m\341s complejos ahora. P)
-108 96 Q(ara calcular la v)-.15 E(elocidad `)-.15 E(`aceptable')-.74 E
-(':)-.74 E/F1 10/Courier@0 SF
-(Verifica si la velocidad en kmh es mayor que 100)126 112.8 Q 6(\(k)30 G
-(mh,100 \) GT)-6 E(Si es as\355, retorna 0, si no, retorna la velocidad)
-126 124.8 Q(\(\(\( kmh,100 \) GT \), 0, kmh\) IF)24 E F0 -.15(Pa)108
-148.8 S(ra calcular la parte de v).15 E(elocidad `)-.15 E(`e)-.74 E
-(xcesi)-.15 E -.25(va)-.25 G -.74('').25 G(:).74 E F1
-(Verifica si la velocidad en kmh es mayor que 100)126 165.6 Q 6(\(k)30 G
-(mh,100 \) GT)-6 E(Si es as\355, retorna la velocidad, si no, retorna 0)
-126 177.6 Q(\(\(\( kmh,100\) GT \), kmh, 0\) IF)24 E/F2 10/Times-Bold@0
-SF -9.438(MM)108 212.4 S -4.998(aa)9.438 G -4.998(gg)4.998 G -2.778(ii)
-4.998 G 9.996 -4.998(aa gg)2.778 H -4.438(rr)4.998 G -4.998<e1e1>4.438 G
--5.558<8c8c>4.998 G -4.438(cc)5.558 G -4.998(aa)4.438 G F0 .593(Me gust\
-a creer que virtualmente no hay limites para lo que RRDtool puede hacer\
- con los datos. No v)108 229.2 R .792 -.1(oy a)-.2 H -.15(ex)108 241.2 S
-(plicarlo en detalle, pero mira este).15 E/F3 9/Times-Roman@0 SF(GIF:)
-2.5 E F1(rrdtool graph speed4.gif)126 258 Q(\\)162 E
-(--start 920804400 --end 920808000)144 270 Q(\\)90 E
-(--vertical-label km/h)144 282 Q(\\)162 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 294 R
-("CDEF:kmh=myspeed,3600,)144 306 Q/F4 10/Symbol SF(*)A F1 138("\\)C 108
-(CDEF:fast=kmh,100,GT,100,0,IF \\)144 318 R 72
-(CDEF:over=kmh,100,GT,kmh,100,-,0,IF \\)144 330 R 108
-(CDEF:good=kmh,100,GT,0,kmh,IF \\)144 342 R
-(HRULE:100#0000FF:"Maximum allowed")144 354 Q(\\)84 E
-(AREA:good#00FF00:"Good speed")144 366 Q(\\)114 E
-(AREA:fast#550000:"Too fast")144 378 Q(\\)126 E
-(STACK:over#FF0000:"Over speed")144 390 Q F0 -1.11(Va)108 414 S
-(mos a crear una p\341gina)1.11 E F3(HTML)2.5 E F0(simple para v)2.5 E
-(er los tres archi)-.15 E -.2(vo)-.25 G(s).2 E F3(GIF:)2.5 E F1
-(<HTML><HEAD><TITLE>Velocidad</TITLE></HEAD><BODY>)126 430.8 Q
-(<IMG src="speed2.gif" alt="Speed in meters per second">)126 442.8 Q
-(<BR>)126 454.8 Q
-(<IMG src="speed3.gif" alt="Speed in kilometers per hour">)126 466.8 Q
-(<BR>)126 478.8 Q(<IMG src="speed4.gif" alt="Traveled too fast?">)126
-490.8 Q(</BODY></HTML>)126 502.8 Q F0(Gu\341rdalo como `)108 526.8 Q
-(`speed.html')-.74 E 2.5('oa)-.74 G(lgo parecido, y e)-2.5 E
-(xam\355nalo con un na)-.15 E -2.25 -.15(veg a)-.2 H(dor).15 E(.)-.55 E
-.556(Ahora, todo lo que tienes que hacer es medir los datos re)108 543.6
-R .557(gularmente y actualizar la base de datos. Cuando)-.15 F .37
-(quieras v)108 555.6 R .37(erlos, vuelv)-.15 F 2.87(eac)-.15 G .37
-(rear los archi)-2.87 F -.2(vo)-.25 G(s).2 E F3(GIF)2.87 E F0 2.87(ya)
-2.87 G(se)-2.87 E .369(g\372rate que se car)-.15 F .369(guen de nue)-.18
-F .769 -.2(vo e)-.25 H 2.869(nt).2 G 2.869(un)-2.869 G -2.25 -.2(av e g)
--2.869 H .369(ador \(Nota:).15 F 1.563(presionar el bot\363n de `)108
-567.6 R(`refrescar')-.74 E 4.063('p)-.74 G 1.563
-(uede no ser su\214ciente; en particular)-4.063 F 4.064(,N)-.4 G 1.564
-(etscape tiene un problema al)-4.064 F(respecto, por lo que necesitaras\
- darle al bot\363n mientras presionas la tecla de may\372sculas.)108
-579.6 Q F2 -7.218(AA)108 602.4 S -4.438(cc)7.218 G -3.328(tt)4.438 G
--5.558(uu)3.328 G -4.998(aa)5.558 G -2.778(ll)4.998 G -2.778(ii)2.778 G
--4.438(zz)2.778 G -4.998(aa)4.438 G -4.438(cc)4.998 G -2.778(ii)4.438 G
--4.998(oo)2.778 G -5.558(nn)4.998 G -4.438(ee)5.558 G 7.776 -3.888(ss d)
-4.438 H(de)-1.67 E 2.5(ev)-4.438 G -.1(ve)-7.498 G(er)-4.338 E(rd)-4.438
-E(da)-5.558 E(ad)-4.998 E(d)-5.558 E F0 5.434 -1(Ya h)108 619.2 T 3.434
-(emos usado el comando `)1 F(`update')-.74 E 3.433
-('; vimos que recibia uno o m\341s par\341metros en el formato:)-.74 F
--.74(``)108 631.2 S(<fecha>:<v).74 E(alor>')-.25 E .912('. P)-.74 F .912
-(ara f)-.15 F .913
-(acilitarte las cosas, puedes obtener la fecha actual colocando `)-.1 F
-(`N')-.74 E 3.413('e)-.74 G 3.413(nl)-3.413 G 3.413(af)-3.413 G(echa.)
--3.413 E -.8(Ta)108 643.2 S(mbi\351n podr\355as usar la funci\363n `).8
-E(`time')-.74 E 2.5('d)-.74 G 2.5(eP)-2.5 G
-(erl para obtenerla. El ejemplo m\341s corto de todo el tutorial :\))
--2.5 E F1(perl -e 'print time, "\\n" ')126 660 Q F0 1.161
-(Ahora, la forma de poner a correr un programa a interv)108 684 R 1.161
-(alos re)-.25 F 1.161(gulares de tiempo depende del sistema de)-.15 F
-(operaci\363n. La actualizaci\363n, en pseudo-c\363digo, ser\355a:)108
-696 Q 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(7)189.84 E EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF
-(Toma el valor, col\363calo en la variable "$speed")126 96 Q
-(rrdtool update speed.rrd N:$speed)126 108 Q F0(\(Pero no lo hag)108 132
-Q(as sobre nuestra base de datos de pruebas, que a\372n la v)-.05 E
-(amos a usar en otros ejemplos.)-.25 E 1.42(Eso es todo. Ejecutando est\
-e script cada 5 minutos, lo \372nico que tienes que hacer para v)108
-148.8 R 1.42(er los gr\341\214cos)-.15 F .436(actuales es correr los ej\
-emplos anteriores, que tambi\351n puedes poner en un script. Lue)108
-160.8 R .436(go de correrlo, basta)-.15 F(con car)108 172.8 Q -.05(ga)
--.18 G 2.5(ri).05 G(nde)-2.5 E(x.html)-.15 E/F2 10/Times-Bold@0 SF
--7.218(UU)108 195.6 S -5.558(nn)7.218 G -4.998(aa)5.558 G 7.776 -3.888
-(ss p)4.998 H(pa)-1.67 E(al)-4.998 E(la)-2.778 E(ab)-4.998 E(br)-5.558 E
-(ra)-4.438 E(as)-4.998 E 2.5(ss)-3.888 G(so)-6.388 E(ob)-4.998 E(br)
--5.558 E -.18(re)-4.438 G(e)-4.258 E/F3 9/Times-Bold@0 SF -5.002(SS)2.5
-G -6.496(NN)5.002 G -8.494(MM)6.496 G -5.497(PP)8.494 G F0 .991(Me imag\
-ino que muy pocas personas ser\341n capaces de obtener en su ordenador \
-datos reales de su coche)108 212.4 R 1.248(cada 5 minutos; los dem\341s\
- nos tendremos que conformar con alg\372n otro contador)108 224.4 R
-3.748(.P)-.55 G 1.248(uedes, por ejemplo,)-3.748 F .057(medir la cantid\
-ad de p\341ginas que ha hecho una impresora, cuanto caf\351 has hecho c\
-on la cafetera, el medidor)108 236.4 R .695(del consumo de electricidad\
-, o cualquier otra cosa. Cualquier contador incremental puede monitoriz\
-arse y)108 248.4 R .056
-(gra\214carse con lo que has aprendido hasta ahora. M\341s adelante, v)
-108 260.4 R .057(eremos tambi\351n como monitorizar otro tipo)-.15 F
-.254(de v)108 272.4 R .254
-(alores, como la temperatura. La mayor\355a usaremos alguna v)-.25 F
-.253(ez un contador que lle)-.15 F .553 -.15(ve l)-.25 H 2.753(ac).15 G
-.253(uenta de cuan-)-2.753 F .483
-(tos octetos \(bytes\) a transferido un dispositi)108 284.4 R .883 -.2
-(vo d)-.25 H 2.983(er).2 G .483(ed, as\355 que v)-2.983 F .483(amos a v)
--.25 F .483(er como hacer esto. Empezaremos)-.15 F .437(describiendo co\
-mo recoger los datos. Hay quien dir\341 que hay herramientas que pueden\
- recoger estos datos)108 296.4 R .811(por ti. \241Es cierto! Pero, creo\
- que es importante darse cuenta de que no son necesarias. Cuando tienes\
- que)108 308.4 R(determinar porqu\351 algo no funciona, necesitas saber\
- c\363mo funciona en primer lug)108 320.4 Q(ar)-.05 E(.)-.55 E .704
-(Una herramienta que mencionamos bre)108 337.2 R -.15(ve)-.25 G .704
-(mente al principio del documento es).15 F/F4 9/Times-Roman@0 SF(SNMP)
-3.204 E F0(.)A F4(SNMP)3.204 E F0 .704(es una forma)3.204 F 3.03
-(de comunicarse con tus equipos.)108 349.2 R 3.03
-(La herramienta particular que v)8.03 F 3.23 -.1(oy a u)-.2 H 3.03
-(sar m\341s adelante se llama).1 F -.74(``)108 361.2 S(snmpget').74 E
-(', y funciona as\355:)-.74 E F1(snmpget dispositivo clave OID)126 378 Q
-F0 .619(En `)108 402 R(`dispositi)-.74 E -.2(vo)-.25 G 2.098 -.74('' c)
-.2 H .618(olocas el nombre o direcci\363n).74 F F4(IP)3.118 E F0 .618
-(del equipo a monitorizar)3.118 F 3.118(.E)-.55 G 3.118(nc)-3.118 G(la)
--3.118 E -.15(ve)-.2 G 3.118(,c).15 G .618(olocas la `)-3.118 F(`cadena)
--.74 E .814(de caracteres de la comunidad de lectura')108 414 R .815
-(', como se le denomina en el mundillo)-.74 F F4(SNMP)3.315 E F0 5.815
-(.M)C .815(uchos disposi-)-5.815 F(ti)108 426 Q -.2(vo)-.25 G 3.32(sa).2
-G .82(ceptar\341n `)-3.32 F(`public')-.74 E 3.32('c)-.74 G .819
-(omo cadena por defecto, pero por razones de pri)-3.32 F -.25(va)-.25 G
-.819(cidad y se).25 F .819(guridad esta cla)-.15 F -.15(ve)-.2 G(puede \
-estar deshabilitada. Consulta la documentaci\363n correspondiente al di\
-spositi)108 438 Q .4 -.2(vo o p)-.25 H(rograma.).2 E(Lue)108 454.8 Q
-(go esta el tercer par\341metro, llamado)-.15 E F4(OID)2.5 E F0
-(\(Object IDenti\214er)2.5 E 2.5(,i)-.4 G(denti\214cador de objeto\).)
--2.5 E 1.672(Al principio, cuando empiezas a aprender sobre)108 471.6 R
-F4(SNMP)4.172 E F0 4.172(,p)C 1.672
-(arece muy confuso. No lo es tanto cuando le)-4.172 F .306
-(hechas una ojeada a los `)108 483.6 R(`)-.74 E F4(MIB)A F0 1.785 -.74
-('' \()D .305
-(Manager Information Base, o Base de Informaci\363n Administrati).74 F
--.25(va)-.25 G .305(\). Es un).25 F .464(\341rbol in)108 495.6 R -.15
-(ve)-.4 G .465(rtido que describe los datos, empezando en un nodo ra\
-\355z desde el que parten v).15 F .465(arias ramas.)-.25 F(Cada)5.465 E
-1.64(rama termina en otro nodo y puede abrir nue)108 507.6 R -.25(va)
--.25 G 4.139(ss).25 G 1.639
-(ub-ramas. Cada rama tiene un nombre, y forman un)-4.139 F .238
-(camino que nos lle)108 519.6 R .738 -.25(va h)-.25 H .238
-(asta el fondo del \341rbol. En este ejemplo, las ramas que v).25 F .238
-(amos a tomar se llaman iso,)-.25 F(or)108 531.6 Q 1.105
-(g, dod, internet, mgmt y mib-2. T)-.18 F 1.104
-(ambi\351n pueden accederse por su n\372mero relati)-.8 F -.2(vo)-.25 G
-3.604(;e).2 G 3.604(ne)-3.604 G 1.104(ste caso, estos)-3.604 F
-(n\372meros son 1, 3, 6, 1, 2 y 1:)108 543.6 Q F1
-(iso.org.dod.internet.mgmt.mib-2 \(1.3.6.1.2.1\))126 560.4 Q F0 .552
-(En algunos programas se usa un punto al iniciar el)108 584.4 R F4(OID)
-3.052 E F0 3.053(.E)C .553
-(sto puede ser confuso; no hay ning\372n punto ini-)-3.053 F .791
-(cial en la especi\214caci\363n de los)108 596.4 R F4(OID)3.291 E F0
-.791(... sin embar)B .79
-(go, algunos programas usan por defecto un pre\214jo inicial.)-.18 F
--.15(Pa)108 608.4 S 1.144(ra indicar la diferencia entre los).15 F F4
-(OID)3.644 E F0(abre)3.644 E 1.145
-(viados \(o sea, a los que se le pondr\341 el pre\214jo inicial\) y los)
--.25 F 1.239(completos, estos programas necesitan que los)108 620.4 R F4
-(OID)3.738 E F0 1.238(completos empiecen por un punto. P)3.738 F 1.238
-(ara empeorar las)-.15 F(cosas, se usan v)108 632.4 Q
-(arios pre\214jos distintos...)-.25 E .056(De acuerdo, sig)108 649.2 R
-.057(amos con el inicio de nuestro)-.05 F F4(OID:)2.557 E F0 .057
-(ten\355amos 1.3.6.1.2.1 . Ahora, nos interesa la rama `)2.557 F(`inter)
--.74 E(-)-.2 E -.1(fa)108 661.2 S(ces').1 E(', que tiene el n\372mero d\
-os \(o sea, 1.3.6.1.2.1.2, o 1.3.6.1.2.1.interf)-.74 E(aces\).)-.1 E
-.303(Lo primero es hacernos con un programa)108 678 R F4(SNMP)2.802 E F0
-2.802(.B)C .302
-(usca alg\372n paquete pre-compilado para tu plataforma, si)-2.802 F
-1.531(no, puedes b)108 690 R 1.531(uscar el c\363digo fuente y compilar\
-lo tu mismo. En Internet encontrar\341s muchos programas,)-.2 F 1.521
-(b\372scalos con un motor de b\372squeda o como pre\214eras.)108 702 R
-1.521(Mi sugerencia es que b)6.521 F 1.52(usques el paquete)-.2 F F4
-(CMU-)4.02 E(SNMP)108 714 Q F0 2.5(,q)C(ue esta bastante difundido.)-2.5
-E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(8)189.84 E EP
-%%Page: 9 9
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F 1.582(Asumamos que ya tienes el programa. Empe\
-cemos por tomar ciertos datos que est\341n disponibles en la)108 96 R
-(mayor\355a de los sistemas. Recuerda: hay un nombre abre)108 108 Q
-(viado para la parte del \341rbol que m\341s nos interesa.)-.25 E -.02
--1.29(Vo y)108 124.8 T 3.816(au)5.106 G 1.316(sar la v)-3.816 F 1.316
-(ersi\363n corta, ya que creo que este documento ya es lo bastante lar)
--.15 F 1.315(go. Si no te funciona,)-.18 F 1.301
-(a\361\341dele el pre\214jo .1.3.6.1.2.1 y prueba de nue)108 136.8 R -.2
-(vo)-.25 G 3.802(.Op).2 G 1.302(rueba le)-3.802 F 1.302
-(yendo el manual; s\341ltate las partes que no)-.15 F
-(entiendas a\372n, y b)108 148.8 Q
-(usca las secciones que hablan de como arrancar y usar el programa.)-.2
-E/F1 10/Courier@0 SF(snmpget myrouter public system.sysdescr.0)126 165.6
-Q F0 .773(El dispositi)108 189.6 R 1.173 -.2(vo d)-.25 H .772
-(eber\341 contestarte con una descripci\363n, probablemente v).2 F .772
-(ac\355a, de s\355 mismo. Si no consigues)-.25 F .785
-(una respuesta v\341lida, prueba con otra `)108 201.6 R(`cla)-.74 E -.15
-(ve)-.2 G 2.266 -.74('' u o).15 H .786(tro dispositi).74 F -.2(vo)-.25 G
-3.286(;n).2 G 3.286(op)-3.286 G .786(odemos se)-3.286 F .786
-(guir hasta tener un resul-)-.15 F(tado.)108 213.6 Q F1
-(snmpget myrouter public interfaces.ifnumber.0)126 230.4 Q F0 .182(Con \
-suerte, usando este comando obtendr\341s un n\372mero como resultado: e\
-l n\372mero de interf)108 254.4 R .182(aces del dispos-)-.1 F(iti)108
-266.4 Q -.2(vo)-.25 G 2.5(.S).2 G 2.5(ie)-2.5 G 2.5(sa)-2.5 G(s\355, se)
--2.5 E(guiremos adelante con otro programa, llamado `)-.15 E(`snmpw)-.74
-E(alk')-.1 E(')-.74 E F1
-(snmpwalk myrouter public interfaces.iftable.ifentry.ifdescr)126 283.2 Q
-F0(Si obtienes una lista de interf)108 307.2 Q(aces, ya casi hemos lle)
--.1 E -.05(ga)-.15 G(do. Aqu\355 tienes un ejemplo del resultado:).05 E
-F1([user@host /home/alex]$ snmpwalk cisco public 2.2.1.2)126 324 Q
-(interfaces.ifTable.ifEntry.ifDescr.1 = "BRI0: B-Channel 1")126 336 Q
-(interfaces.ifTable.ifEntry.ifDescr.2 = "BRI0: B-Channel 2")126 348 Q
-(interfaces.ifTable.ifEntry.ifDescr.3 = "BRI0" Hex: 42 52 49 30)126 360
-Q(interfaces.ifTable.ifEntry.ifDescr.4 = "Ethernet0")126 372 Q
-(interfaces.ifTable.ifEntry.ifDescr.5 = "Loopback0")126 384 Q F0
-(En este equipo)108 408 Q/F2 9/Times-Roman@0 SF(CISCO)2.5 E F0 2.5(,q)C
-(uiero monitorizar la interf)-2.5 E(az `)-.1 E(`Ethernet0')-.74 E 2.5
-('. V)-.74 F(iendo que es la cuarta, pruebo con:)-.6 E F1
-([user@host /home/alex]$ snmpget cisco public 2.2.1.10.4 2.2.1.16.4)126
-424.8 Q(interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126)126 448.8 Q
-(interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519)126 460.8 Q F0
-(Entonces, tengo 2 OIDs que monitorizar)108 484.8 Q 2.5(,ys)-.4 G
-(on \(en el formato lar)-2.5 E(go, ahora\):)-.18 E F1
-(1.3.6.1.2.1.2.2.1.10)126 501.6 Q(y)156 525.6 Q(1.3.6.1.2.1.2.2.1.16)126
-549.6 Q F0 2.5(,a)108 573.6 S(mbas con el n\372mero de interf)-2.5 E
-(az de 4)-.1 E .183(No te eng)108 590.4 R .183(a\361es, esto no lo logr\
-e yo al primer intento. Me tom\363 un tiempo entender lo que signi\214c\
-aban todos)-.05 F .9
-(estos n\372meros; ayuda cuando se traducen en un te)108 602.4 R .899
-(xto descripti)-.15 F -.2(vo)-.25 G .899(... por lo menos, cuando oig).2
-F .899(as hablar de)-.05 F .527(MIBs y OIDs, ahora sabr\341s de qu\351 \
-se trata. No te olvides del n\372mero de interf)108 614.4 R .527
-(az \(0 si el v)-.1 F .527(alor no depende)-.25 F(de una interf)108
-626.4 Q(az\), y prueba con snmpw)-.1 E
-(alk si no obtienes una respuesta clara con snmpget.)-.1 E .468
-(Si entendiste todo esto, y obtienes resultados del dispositi)108 643.2
-R .868 -.2(vo c)-.25 H .468
-(on el que est\341s probando, sigue adelante con).2 F
-(el tutorial. Si no, vuelv)108 655.2 Q 2.5(eal)-.15 G
-(eer esta secci\363n; es importante)-2.5 E 145.68(2001-02-11 Last)72 768
-R(change: 1.0.28)2.5 E(9)189.84 E EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Times-Bold@0 SF -7.218(UU)108 96 S 11.116
--5.558(nn e)7.218 H(ej)1.12 E(je)-3.328 E(em)-4.438 E(mp)-8.328 E(pl)
--5.558 E(lo)-2.778 E 2.5(or)-4.998 G -.18(re)-6.938 G(ea)-4.258 E(al)
--4.998 E(l)-2.778 E F0 .445(Ok, empecemos con la di)108 112.8 R -.15(ve)
--.25 G .445(rsi\363n. Primero, crea una base de datos nue).15 F -.25(va)
--.25 G 2.945(.V).25 G .445(amos a guardar en ella 2 conta-)-4.055 F .029
-(dores, `)108 124.8 R(`input')-.74 E 2.529('y`)-.74 G(`ouput')-3.269 E
-.029('. Los datos los v)-.74 F .029(amos a guardar en archi)-.25 F -.2
-(vo)-.25 G 2.529(sq).2 G .028(ue los promediar\341n, tomando grupos)
--2.529 F .652(de 1, 6, 24 o 288 muestras. T)108 136.8 R .652
-(ambi\351n archi)-.8 F -.25(va)-.25 G .652(remos los v).25 F .652
-(alores m\341ximos. Lo e)-.25 F .652(xplicaremos con m\341s detalle)-.15
-F(despu\351s. El interv)108 148.8 Q
-(alo de tiempo entre las muestras ser\341 de 300 se)-.25 E
-(gundos \(5 minutos\).)-.15 E/F2 10/Courier@0 SF 6(1m)114 165.6 S
-(uestra "promediada" sigue siendo 1 muestra cada 5 minutos)-6 E 6(6m)114
-177.6 S(uestras promediadas son un promedio de cada 30 minutos)-6 E
-(24 muestras promediadas son un promedio de cada 2 horas)114 189.6 Q
-(288 muestras promediadas son un promedio de cada d\355a)114 201.6 Q F0
--1.11(Va)108 225.6 S(mos a tratar de ser compatibles con)1.11 E/F3 9
-/Times-Roman@0 SF(MR)2.5 E(TG)-.54 E F0 2.5(,q)C
-(ue guarda m\341s o menos esta cantidad de datos:)-2.5 E F2
-(600 muestras de 5 minutos:)114 242.4 Q 6(2d)60 G(\355as y 2 horas)-6 E
-(600 promedios de 30 minutos:)114 254.4 Q(12.5 d\355as)48 E
-(600 promedios de 2 horas:)114 266.4 Q(50 d\355as)66 E
-(600 promedios de 1 d\355a:)114 278.4 Q(732 d\355as)78 E F0 .769(Uniend\
-o todos estos rangos tenemos que en total guardamos datos de unos 797 d\
-\355as. RRDtool guarda los)108 302.4 R .624
-(datos de una forma distinta a)108 314.4 R F3(MR)3.124 E(TG)-.54 E F0
-3.124(;n)C 3.124(oe)-3.124 G .624(mpieza el archi)-3.124 F 1.024 -.2
-(vo `)-.25 H(`semanal')-.54 E 3.124('d)-.74 G .624(onde acaba el `)
--3.124 F(`diario')-.74 E .624(', sino que)-.74 F .202(ambos archi)108
-326.4 R -.2(vo)-.25 G 2.702(sc).2 G .201(ontienen la informaci\363n m\
-\341s reciente, \241por lo que con RRDtool archi)-2.702 F -.25(va)-.25 G
-.201(mos m\341s datos que).25 F(con)108 338.4 Q F3(MR)2.5 E(TG)-.54 E F0
-(!)A(Necesitaremos:)108 355.2 Q F2(600 muestras de 5 minutos)114 372 Q
-(\(2 d\355as y 2 horas\))24 E(700 entradas de 30 minutos)114 384 Q
-(\(2 d\355as y 2 horas, m\341s 12.5 d\355as\))18 E
-(775 entradas de 2 horas)114 396 Q(\(lo anterior + 50 d\355as\))36 E
-(797 entradas de 1 d\355a)114 408 Q
-(\(lo anterior + 732 d\355as, redondeando\))48 E
-(rrdtool create myrouter.rrd)126 432 Q(\\)54 E 12
-(DS:input:COUNTER:600:U:U \\)180 444 R 6(DS:output:COUNTER:600:U:U \\)
-180 456 R 30(RRA:AVERAGE:0.5:1:600 \\)180 468 R 30
-(RRA:AVERAGE:0.5:6:700 \\)180 480 R 24(RRA:AVERAGE:0.5:24:775 \\)180 492
-R 18(RRA:AVERAGE:0.5:288:797 \\)180 504 R 54(RRA:MAX:0.5:1:600 \\)180
-516 R 54(RRA:MAX:0.5:6:700 \\)180 528 R 48(RRA:MAX:0.5:24:775 \\)180 540
-R(RRA:MAX:0.5:288:797)180 552 Q F0 .269(Lo siguiente es recoger los dat\
-os y guardarlos, como en el ejemplo siguiente. Esta parcialmente en pse\
-udo-)108 576 R(c\363digo, por lo que tendr\341s que b)108 588 Q(uscar e)
--.2 E(xactamente como hacerlo funcionar en tu sistema operati)-.15 E -.2
-(vo)-.25 G(.).2 E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E
-(10)184.84 E EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF
-(mientras no sea el fin del universo)126 96 Q(hacer)126 108 Q
-(tomar el resultado de)144 120 Q(snmpget router community 2.2.1.10.4)168
-132 Q(en la variable $in)144 144 Q(tomar el resultado de)144 156 Q
-(snmpget router community 2.2.1.16.4)168 168 Q(en la variable $out)144
-180 Q(rrdtool update myrouter.rrd N:$in:$out)144 192 Q
-(esperar 5 minutos)144 204 Q(hecho)126 216 Q F0(Lue)108 240 Q
-(go, tras recoger datos por un d\355a, crea una imagen, usando:)-.15 E
-F1(rrdtool graph myrouter-day.gif --start -86400 \\)126 256.8 Q
-(DEF:inoctets=myrouter.rrd:input:AVERAGE \\)180 268.8 Q
-(DEF:outoctets=myrouter.rrd:output:AVERAGE \\)180 280.8 Q
-(AREA:inoctets#00FF00:"In traffic" \\)180 292.8 Q
-(LINE1:outoctets#0000FF:"Out traffic")180 304.8 Q F0 .014(Este comando \
-debe producir un gr\341\214co del tr\341\214co del d\355a. Un d\355a so\
-n 24 horas, de 60 minutos, de 60 se)108 328.8 R(gun-)-.15 E .098
-(dos: 24)108 340.8 R/F2 10/Symbol SF(*)A F0(60)A F2(*)A F0 .098
-(60=86400, o sea que empezamos a `)B(`ahora')-.74 E 2.599('m)-.74 G .099
-(enos 86400 se)-2.599 F .099(gundos. De\214nimos \(con los DEFs\))-.15 F
--.74(``)108 352.8 S(inoctets').74 E 3.404('y`)-.74 G(`outoctets')-4.144
-E 3.404('c)-.74 G .904(omo los v)-3.404 F .903
-(alores promedio de la base da datos myrouter)-.25 F .903(.rrd, dib)-.55
-F .903(ujando un \341rea)-.2 F(para el tr\341\214co de entrada y una l\
-\355nea para el tr\341\214co de salida.)108 364.8 Q .3(Mira la imagen y\
- sigue recogiendo datos por unos cuantos d\355as. Si lo deseas, puedes \
-probar con los ejemp-)108 381.6 R
-(los de la base de datos de pruebas y v)108 393.6 Q
-(er si puedes hacer trabajar las di)-.15 E -.15(ve)-.25 G
-(rsas opciones y operaciones.).15 E(Sugerencia:)108 410.4 Q .399
-(Haz un gr\341\214co que muestre el tr\341\214co en bytes por se)108
-427.2 R .399(gundo y en bits por se)-.15 F .399
-(gundo. Colorea el tr\341\214co Ether)-.15 F(-)-.2 E
-(net rojo si sobrepasa los cuatro me)108 439.2 Q -.05(ga)-.15 G
-(bits por se).05 E(gundo.)-.15 E/F3 10/Times-Bold@0 SF -6.108(FF)108 462
-S -5.558(uu)6.108 G -5.558(nn)5.558 G -4.438(cc)5.558 G -2.778(ii)4.438
-G -4.998(oo)2.778 G -5.558(nn)4.998 G -4.438(ee)5.558 G 7.776 -3.888
-(ss d)4.438 H(de)-1.67 E 2.5(ec)-4.438 G(co)-6.938 E(on)-4.998 E(ns)
--5.558 E(so)-3.888 E(ol)-4.998 E(li)-2.778 E(id)-2.778 E(da)-5.558 E(ac)
--4.998 E(ci)-4.438 E<69f3>-2.778 E<f36e>-4.998 E(n)-5.558 E F0 .19(Unos\
- cuantos p\341rrafos atr\341s habl\341bamos sobre la posibilidad de gua\
-rdar el v)108 478.8 R .191(alor m\341ximo en v)-.25 F .191
-(ez del prome-)-.15 F(dio. Profundicemos un poco en este tema.)108 490.8
-Q .307(Recordemos lo que habl\341bamos sobre la v)108 507.6 R .307
-(elocidad de un coche.)-.15 F(Supong)5.307 E .306
-(amos que manejamos a 144)-.05 F/F4 9/Times-Roman@0 SF(KM/H)2.806 E F0
-.483(durante 5 minutos y lue)108 519.6 R .484(go nos detiene la polic\
-\355a durante unos 25 minutos. Al \214nalizar el re)-.15 F -.05(ga)-.15
-G .484(\361o, tomamos).05 F .979(nuestro port\341til y creamos una imag\
-en desde nuestra base de datos. Si visualizamos la se)108 531.6 R(gunda)
--.15 E F4(RRA)3.478 E F0(que)3.478 E .372
-(creamos, tendremos el promedio de 6 muestreos. Las v)108 543.6 R .372
-(elocidades re)-.15 F .372(gistradas serian 144+0+0+0+0+0=144,)-.15 F
-.56(lo que en promedio nos da una v)108 555.6 R .56(elocidad de 24)-.15
-F F4(KM/H)3.06 E F0 .559
-(., con lo que nos igual nos pondr\355an una multa, s\363lo)B
-(que no por e)108 567.6 Q(xceso de v)-.15 E(elocidad.)-.15 E(Ob)108
-584.4 Q .571(viamente, en este caso, no deber\355amos tomar en cuenta l\
-os promedios. Estos son \372tiles en v)-.15 F .571(arios casos.)-.25 F
-.552(Por ejemplo, si queremos v)108 596.4 R .552(er cuantos)-.15 F F4
-(KM)3.052 E F0 .552(hemos viajado, este ser\355a el gr\341\214co m\341s\
- indicado. Pero por otro)3.052 F(lado, para v)108 608.4 Q(er la v)-.15 E
-(elocidad ha la que hemos viajado, los v)-.15 E
-(alores m\341ximos son m\341s adecuados.)-.25 E .159(Es lo mismo con lo\
-s datos que recogemos. Si quieres saber la cantidad total, mira los pro\
-medios. Si quieres)108 625.2 R -.15(ve)108 637.2 S 4.087(rl).15 G 4.087
-(av)-4.087 G 1.587(elocidad, mira los m\341ximos. Con el tiempo, ambas \
-cantidades se separan cada v)-4.237 F 1.586(ez m\341s.)-.15 F 1.586
-(En la)6.586 F .536
-(\372ltima base de datos que creamos, hab\355a dos archi)108 649.2 R -.2
-(vo)-.25 G 3.037(sq).2 G .537
-(ue guardaban los datos de cada d\355a. El archi)-3.037 F .937 -.2(vo q)
--.25 H(ue).2 E .348(guarda los promedios mostrar\341 v)108 661.2 R .348
-(alores bajos, mientras que el de m\341ximos mostrar\341 v)-.25 F .348
-(alores m\341s altos. P)-.25 F(ara)-.15 E .44(mi coche, mostrar\355a v)
-108 673.2 R .44(alores promedio de 96/24=4)-.25 F F4(KM/H)2.94 E F0 .44
-(\(viajo unos 96 kil\363metros por d\355a\), y m\341ximos de)2.94 F
-(1220)108 685.2 Q F4(KM/H)2.5 E F0(\(la v)2.5 E
-(elocidad m\341xima que alcanzo cada d\355a\))-.15 E 1.285(Como v)108
-702 R 1.285(es, una gran diferencia. No mires el se)-.15 F 1.284
-(gundo gr\341\214co para estimar la distancia que recorro, ni al)-.15 F
-.64(primero para estimar la v)108 714 R .64(elocidad a la que v)-.15 F
--.1(oy)-.2 G 3.14(.E)-.55 G .64
-(sto s\363lo funciona con muestras muy cercanas, pero no si)-3.14 F
-(sacas promedios.)108 726 Q 145.68(2001-02-11 Last)72 774 R
-(change: 1.0.28)2.5 E(11)184.84 E EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F .976(Algunas v)108 96 R .976
-(eces, hago un viaje lar)-.15 F .975
-(go. Si hago un recorrido por Europa, conduciendo por unas 12 horas, el)
--.18 F .159(primer gr\341\214co subir\341 a unos 60)108 108 R/F1 9
-/Times-Roman@0 SF(KM/H)2.659 E F0 2.659(.E)C 2.659(ls)-2.659 G -.15(eg)
--2.659 G .159(undo mostrar\341 unos 180).15 F F1(KM/H)2.659 E F0 2.659
-(.E)C .159(sto signi\214ca que recorr\355 unos)-2.659 F(60)108 120 Q F1
-(KM/H)2.805 E F0 .304(por 24 horas = 1440)2.805 F F1(KM)2.804 E F0 2.804
-(.M)C .304(uestra adem\341s que fui a una v)-2.804 F .304
-(elocidad promedio mayor a la normal y)-.15 F 2.8(au)108 132 S 2.8(nm)
--2.8 G .3(\341ximo de 180)-2.8 F F1(KM/H)2.8 E F0 2.8<2ca1>C .3
-(no que fui 8 horas a una v)-2.8 F .3(elocidad \214ja de 180)-.15 F F1
-(KM/H)2.8 E F0 2.8(!E)C .3(ste es un ejemplo real:)-2.8 F 1.877
-(tengo que se)108 144 R 1.877
-(guir la corriente en las autopistas de Alemania, detenerme por g)-.15 F
-1.876(asolina y caf\351 de v)-.05 F 1.876(ez en)-.15 F .84(cuando, mane\
-jar m\341s lentamente por Austria y Holanda, e ir con cuidado en las mo\
-nta\361as y las villas. Si)108 156 R 2.666(vi\351ramos los gr\341\214co\
-s de los promedios de cada 5 minutos, la imagen ser\355a completamente \
-distinta;)108 168 R -.15(ve)108 180 S .682(r\355amos los mismos v).15 F
-.683(alores de promedio y de m\341xima. \(suponiendo que las mediciones\
- fueran cada 300)-.25 F(se)108 192 Q .403(gundos\). Se podr\355a v)-.15
-F .403(er cuando par\351, cuando iba en primera, cuando iba por las aut\
-opistas, etc. La granu-)-.15 F .595(laridad de los datos es m\341s alta\
-, por lo que se tiene m\341s informaci\363n. Sin embar)108 204 R .595
-(go, esto nos lle)-.18 F 1.095 -.25(va u)-.25 H .595(nas 12).25 F .121(\
-muestras por hora, o 288 al d\355a, lo cual es mucho para guardar por u\
-n periodo de tiempo lar)108 216 R .12(go. Por lo tanto,)-.18 F .798
-(sacamos el promedio, guardando e)108 228 R -.15(ve)-.25 G .798
-(ntualmente un solo v).15 F .798(alor por d\355a.)-.25 F .798
-(Con este \372nico v)5.798 F(alor)-.25 E 3.298(,n)-.4 G 3.298(op)-3.298
-G(odemos)-3.298 E -.15(ve)108 240 S 2.5(rm).15 G(ucho.)-2.5 E 1.145
-(Es importante comprender lo que e)108 256.8 R 1.145
-(xpuesto en estos \372ltimos p\341rrafos.)-.15 F 1.145
-(Unos ejes y unas l\355neas no tienen)6.145 F 2.962(ning\372n v)108
-268.8 R 2.963(alor por si mismos; hay que saber que representan e inter\
-pretar correctamente los v)-.25 F(alores)-.25 E
-(obtenidos. Sean cuales sean los datos, esto siempre ser\341 cierto.)108
-280.8 Q .002(El mayor error que puedes cometer es usar los datos recogi\
-dos para algo para lo cual no sirv)108 297.6 R .002(en. En ese caso,)
--.15 F(seria hasta mejor no tener gr\341\214co alguno.)108 309.6 Q/F2 10
-/Times-Bold@0 SF -7.218(RR)108 332.4 S -4.438(ee)7.218 G -5.558(pp)4.438
-G -4.998(aa)5.558 G -3.888(ss)4.998 G -4.438(ee)3.888 G -8.328(mm)4.438
-G -4.998(oo)8.328 G 7.776 -3.888(ss l)4.998 H(lo)1.11 E 2.5(oq)-4.998 G
-(qu)-8.058 E(ue)-5.558 E 2.5(es)-4.438 G(sa)-6.388 E(ab)-4.998 E(be)
--5.558 E(em)-4.438 E(mo)-8.328 E(os)-4.998 E(s)-3.888 E F0 .051
-(Ahora ya sabes como crear una base de datos. Puedes guardar v)108 349.2
-R .051(alores en ella, e)-.25 F .052(xtraerlos creando un gr\341\214co,)
--.15 F .606(hacer operaciones matem\341ticas con ellos desde la base de\
- datos y visualizar los resultados de estas en v)108 361.2 R(ez)-.15 E
-.025(de los datos originales. V)108 373.2 R .026(imos la diferencia ent\
-re los promedios y los m\341ximos y cuando debemos usar cada)-.6 F
-(uno \(o al menos una idea de ello\))108 385.2 Q .718(RRDtool puede hac\
-er m\341s de lo que hemos visto hasta ahora. Pero antes de continuar)108
-402 R 3.217(,t)-.4 G 3.217(er)-3.217 G .717(ecomiendo que)-3.217 F .496
-(releas el te)108 414 R .497(xto desde el principio y pruebes a hacerle\
- algunas modi\214caciones a los ejemplos.)-.15 F(Ase)5.497 E .497
-(g\372rate de)-.15 F .117(entenderlo todo. El esfuerzo v)108 426 R .117
-(aldr\341 la pena, y te ayudar\341, no s\363lo con el resto del documen\
-to, sino en tu tra-)-.25 F(bajo diario de monitorizaci\363n, mucho desp\
-u\351s de terminar con esta introducci\363n.)108 438 Q F2 10.656 -6.668
-(TT i)108 460.8 T(ip)3.89 E(po)-5.558 E(os)-4.998 E 2.5(sd)-3.888 G(de)
--8.058 E 2.5(ef)-4.438 G(fu)-5.828 E(ue)-5.558 E(en)-4.438 E(nt)-5.558 E
-(te)-3.328 E(es)-4.438 E 2.5(sd)-3.888 G(de)-8.058 E 2.5(ed)-4.438 G(da)
--8.058 E(at)-4.998 E(to)-3.328 E(os)-4.998 E(s)-3.888 E F0 .172
-(De acuerdo, quieres continuar)108 477.6 R 2.672(.B)-.55 G(ien)-2.672 E
--.15(ve)-.4 G .172(nido de vuelta otra v).15 F .172
-(ez y prep\341rate; v)-.15 F .372 -.1(oy a i)-.2 H 2.672(rm).1 G .173
-(\341s r\341pido con los ejem-)-2.672 F(plos y e)108 489.6 Q
-(xplicaciones.)-.15 E 2.476 -1(Ya v)108 506.4 T .476(imos que, para v)1
-F .476(er el cambio de un contador a lo lar)-.15 F .475
-(go del tiempo, tenemos que tomar dos n\372meros y)-.18 F(di)108 518.4 Q
-.137(vidir la diferencia entre el tiempo transcurrido entre las medicio\
-nes. P)-.25 F .137(ara los ejemplos que hemos visto es)-.15 F .946(lo l\
-\363gico, pero hay otras posibilidades. Por ejemplo, mi enrutador me pu\
-ede dar la temperatura actual en)108 530.4 R .069
-(tres puntos distintos, la entrada de aire, el llamado `)108 542.4 R
-.069(`punto caliente')-.74 F 2.569('yl)-.74 G 2.569(as)-2.569 G .069
-(alida de v)-2.569 F .069(entilaci\363n. Estos v)-.15 F(alores)-.25 E
-.073(no son contadores; si tomo los v)108 554.4 R .072
-(alores de dos muestreos y lo di)-.25 F .072(vido entre 300 se)-.25 F
-.072(gundos, obtendr\351 el cambio)-.15 F 1.599(de temperatura por se)
-108 566.4 R 1.599(gundo. \241Esperemos que sea cero, o tendr\355amos un\
- incendio en el cuarto de orde-)-.15 F(nadores! :\))108 578.4 Q .71
-(Entonces, \277que hacemos? Podemos decirle a RRDtool que guarde los v)
-108 595.2 R .709(alores tal como los medimos \(esto)-.25 F 1.407
-(no es e)108 607.2 R 1.407
-(xactamente as\355, pero se aproxima bastante a la v)-.15 F 1.408
-(erdad\). As\355, los gr\341\214cos se v)-.15 F 1.408
-(er\341n mucho mejor)-.15 F(.)-.55 E .577(Puedo v)108 619.2 R .577(er c\
-uando el enrutador est\341 trabajando m\341s \(en serio, funciona; como\
- usa m\341s electricidad, genera)-.15 F .381(m\341s calor y sube la tem\
-peratura\), puedo saber cuando me he dejado las puertas abiertas \(el c\
-uarto de orde-)108 631.2 R .108(nadores tiene aire acondicionado; con l\
-as puertas abiertas el aire caliente del resto del edi\214cion entra y \
-sube)108 643.2 R .031(la temperatura en la entrada de aire del enrutado\
-r\), etc. Antes usamos un tipo de datos de `)108 655.2 R(`contador')-.74
-E .031(', ahora)-.74 F
-(usaremos un tipo de datos diferente, con un nombre diferente,)108 667.2
-Q F1(GA)2.5 E(UGE)-.495 E F0 5(.T)C(enemos otros tipos:)-5.7 E/F3 10
-/Courier@0 SF 6(-C)114 684 S(OUNTER este ya lo conocemos)-6 E 6(-G)114
-696 S 12(AUGE este)-6 F(acabamos de verlo)6 E 6(-D)114 708 S(ERIVE)-6 E
-6(-A)114 720 S(BSOLUTE)-6 E F0 145.68(2001-02-11 Last)72 768 R
-(change: 1.0.28)2.5 E(12)184.84 E EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F 1.373(Los otros dos tipos son)108 96 R/F1 9
-/Times-Roman@0 SF(DERIVE)3.873 E F0(y)3.873 E F1(ABSOLUTE)3.873 E F0(.)A
-F1(ABSOLUTE)3.873 E F0 1.373(puede usarse igual que)3.873 F F1(COUNTER)
-3.872 E F0 3.872(,c)C 1.372(on una)-3.872 F 1.098
-(diferencia; RRDtool asume que el contador se reinicia cada v)108 108 R
-1.098(ez que se lee. O en otras palabras; el delta)-.15 F .53
-(entre los v)108 120 R .53
-(alores no hay que calcularlo, mientras que con)-.25 F F1(COUNTER)3.029
-E F0 .529(RRDtool tiene que sacar \351l la cuenta.)3.029 F .797(Por eje\
-mplo, nuestro primer ejemplo, \(12345, 12357, 12363, 12363\), ser\355a \
-\(unkno)108 132 R .798(wn, 12, 6, 0\) en)-.25 F F1(ABSO-)3.298 E(LUTE)
-108 144 Q F0 5.152(.E)C 2.652(lo)-5.152 G .152(tro tipo,)-2.652 F F1
-(DERIVE)2.652 E F0 2.652(,e)C 2.652(sc)-2.652 G(omo)-2.652 E F1(COUNTER)
-2.652 E F0 2.652(,p)C .151(ero al contrario de)-2.652 F F1(COUNTER)2.651
-E F0 2.651(,e)C .151(ste v)-2.651 F .151(alor tambi\351n puede)-.25 F
-(decrecer)108 156 Q 2.5(,p)-.4 G(or lo que puede tenerse un delta ne)
--2.5 E -.05(ga)-.15 G(ti).05 E -.2(vo)-.25 G(.).2 E -1.11(Va)108 172.8 S
-(mos a probarlos todos:)1.11 E/F2 10/Courier@0 SF
-(rrdtool create all.rrd --start 978300900 \\)126 189.6 Q
-(DS:a:COUNTER:600:U:U \\)180 201.6 Q(DS:b:GAUGE:600:U:U \\)180 213.6 Q
-(DS:c:DERIVE:600:U:U \\)180 225.6 Q(DS:d:ABSOLUTE:600:U:U \\)180 237.6 Q
-(RRA:AVERAGE:0.5:1:10)180 249.6 Q(rrdtool update all.rrd \\)126 261.6 Q
-18(978301200:300:1:600:300 \\)180 273.6 R 12
-(978301500:600:3:1200:600 \\)180 285.6 R 12(978301800:900:5:1800:900 \\)
-180 297.6 R(978302100:1200:3:2400:1200 \\)180 309.6 Q
-(978302400:1500:1:2400:1500 \\)180 321.6 Q
-(978302700:1800:2:1800:1800 \\)180 333.6 Q 18
-(978303000:2100:4:0:2100 \\)180 345.6 R 6(978303300:2400:6:600:2400 \\)
-180 357.6 R 6(978303600:2700:4:600:2700 \\)180 369.6 R
-(978303900:3000:2:1200:3000)180 381.6 Q
-(rrdtool graph all1.gif -s 978300600 -e 978304200 -h 400 \\)126 393.6 Q
-(DEF:linea=all.rrd:a:AVERAGE LINE3:linea#FF0000:"Line A" \\)180 405.6 Q
-(DEF:lineb=all.rrd:b:AVERAGE LINE3:lineb#00FF00:"Line B" \\)180 417.6 Q
-(DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:"Line C" \\)180 429.6 Q
-(DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:"Line D")180 441.6 Q/F3
-10/Times-Bold@0 SF -7.218(RR)108 476.4 S -7.218(RR)7.218 G -7.218(DD)
-7.218 G -3.328(tt)7.218 G -4.998(oo)3.328 G -4.998(oo)4.998 G 5.556
--2.778(ll b)4.998 H(ba)-2.78 E(aj)-4.998 E(jo)-3.328 E 2.5(oe)-4.998 G
-(el)-6.938 E 2.5(lm)-2.778 G(mi)-10.828 E(ic)-2.778 E(cr)-4.438 E -.18
-(ro)-4.438 G(os)-4.818 E(sc)-3.888 E(co)-4.438 E(op)-4.998 E(pi)-5.558 E
-(io)-2.778 E(o)-4.998 E F0 16.5<834c>108 493.2 S 2.707(al)-16.5 G .207
-(\355nea A es un contador)-2.707 F 2.707(,p)-.4 G .208(or lo que debe i\
-ncrementarse continuamente y RRDtool tiene que calcular)-2.707 F 1.696
-(las diferencias. Adem\341s RRDtool tiene que di)128 505.2 R 1.695
-(vidir la diferencia entre el tiempo transcurrido. Esto)-.25 F(deber\
-\355a terminar con una l\355nea recta en 1 \(los deltas son 300, y los \
-interv)128 517.2 Q(alos son de 300\))-.25 E 16.5<834c>108 534 S 2.632
-(al)-16.5 G .132(\355nea B es de tipo)-2.632 F F1(GA)2.632 E(UGE)-.495 E
-F0 2.632(.E)C .132(stos son los v)-2.632 F .132(alores `)-.25 F
-(`reales')-.74 E .133
-(', as\355 que el gr\341\214co debe mostrar lo mismo)-.74 F(que los v)
-128 546 Q(alores que introducimos: una especie de onda)-.25 E 16.5<834c>
-108 562.8 S 3.362(al)-16.5 G .862(\355nea C es de tipo)-3.362 F F1
-(DERIVE)3.362 E F0 3.362(.E)C 3.362(su)-3.362 G 3.362(nc)-3.362 G
-(ontador)-3.362 E 3.362(,yp)-.4 G .862(uede decrecer)-3.362 F 3.362(.V)
--.55 G 3.362(ae)-4.472 G .861(ntre 2400 y 0, con 1800 en el)-3.362 F
-(medio.)128 574.8 Q 16.5<834c>108 591.6 S 2.592(al)-16.5 G .092
-(\355nea D es de tipo)-2.592 F F1(ABSOLUTE)2.592 E F0 2.592(.E)C .092
-(sto es, es un contador pero no hay que calcular las diferencias. Los)
--2.592 F(n\372meros son iguales a la l\355nea A, y espero que puedas v)
-128 603.6 Q(er la diferencia en los gr\341\214cos.)-.15 E 1.048
-(Esto equi)108 620.4 R -.25(va)-.25 G 1.047(le a los v).25 F 1.047(alor\
-es siguientes, empezando a las 23:10 y terminando a las 00:10 \(las U s\
-igni\214can)-.25 F(desconocido\).)108 632.4 Q F2 6(-L)114 649.2 S 6
-(\355nea A: u u 1 1 1 1 1 1 1 1 1 u)-6 F 6(-L)114 661.2 S 6
-(\355nea B: u 1 3 5 3 1 2 4 6 4 2 u)-6 F 6(-L)114 673.2 S 6
-(\355nea C: u u 2 2 2 0)-6 F(-2 -6)6 E 12(202u)12 G 6(-L)114 685.2 S 6
-(\355nea D: u 1 2 3 4 5 6 7 8 9)-6 F 6(10 u)6 F F0 .118(Si tu archi)108
-709.2 R -.2(vo)-.25 G F1(GIF)2.818 E F0 .119(muestra todo esto, has ent\
-rado los datos correctamente, tu programa RRDtool est\341 funcio-)2.619
-F .259(nando bien, el visor de gr\341\214cos no te eng)108 721.2 R .259
-(a\361a y hemos entrado en el 2000 sin problemas :\) Puedes probar el)
--.05 F 145.68(2001-02-11 Last)72 769.2 R(change: 1.0.28)2.5 E(13)184.84
-E EP
-%%Page: 14 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F(mismo ejemplo cuatro v)108 96 Q
-(eces, una por cada l\355nea.)-.15 E(Re)108 112.8 Q
-(visemos los datos otra v)-.25 E(ez:)-.15 E 16.5<834c>108 129.6 S 1.302
-(\355nea A: 300, 600, 900 , etc.)-16.5 F 1.302
-(La diferencia del contador es siempre 300, igual que el interv)6.302 F
-1.303(alo de)-.25 F .233(tiempo transcurrido entre mediciones. Por lo t\
-anto, el promedio siempre es 1. Pero, \277por qu\351 el primer)128 141.6
-R .811(punto tiene un v)128 153.6 R .811(alor de `)-.25 F(`desconocido')
--.74 E .812('? \277Acaso no era conocido el v)-.74 F .812
-(alor que pusimos en la base de)-.25 F .694
-(datos? \241Si! Pero no ten\355amos un v)128 165.6 R .693(alor inicial \
-para calcular la diferencia. Ser\355a un error asumir que el)-.25 F
-(contador empezaba en 0, as\355 que no conocemos el v)128 177.6 Q
-(alor de la diferencia)-.25 E 16.5<834c>108 194.4 S .099
-(\355nea B: No hay nada que calcular)-16.5 F 2.599(,l)-.4 G .099(os v)
--2.599 F .099
-(alores son los mismos que se introdujeron en la base de datos.)-.25 F
-16.5<834c>108 211.2 S .895(\355nea C: De nue)-16.5 F -.2(vo)-.25 G 3.395
-(,n).2 G 3.395(oc)-3.395 G .895(onocemos el v)-3.395 F .895
-(alor inicial antes de la primera medici\363n, as\355 que se aplica el)
--.25 F 1.152(mismo razonamiento que para la l\355nea A. En este caso la\
-s diferencias no son constantes, as\355 que la)128 223.2 R .033
-(l\355nea no es recta. Si hubi\351semos puesto los mismos v)128 235.2 R
-.033(alores que en la l\355nea A, el gr\341\214co ser\355a el mismo.)
--.25 F .391(Al contrario que)128 247.2 R/F1 9/Times-Roman@0 SF(COUNTER)
-2.891 E F0 2.891(,e)C 2.891(lv)-2.891 G .391(alor puede decrecer)-3.141
-F 2.891(,ye)-.4 G .392(spero mostrarte m\341s adelante el por que de la)
--2.891 F(diferencia entre ambos tipos.)128 259.2 Q 16.5<834c>108 276 S
-.679(\355nea D: En este caso, el dispositi)-16.5 F 1.078 -.2(vo n)-.25 H
-.678(os da las diferencias por s\355 mismo. Por lo tanto, conocemos la)
-.2 F .032(diferencia inicial, y podemos gra\214carla. T)128 288 R .032
-(enemos los mismos v)-.7 F .032
-(alores que en la l\355nea A, pero su signi\214-)-.25 F .933(cado es di\
-stinto, por lo que el gr\341\214co tambi\351n lo es. En este caso, las \
-diferencias se incrementan en)128 300 R .204(300 cada v)128 312 R .204
-(ez, mientras que el interv)-.15 F .204
-(alo de tiempo permanece constante en 300 se)-.25 F .204
-(gundos, por lo que la)-.15 F(di)128 324 Q
-(visi\363n nos da resultados cada v)-.25 E(ez mayores.)-.15 E/F2 10
-/Times-Bold@0 SF -7.218(RR)108 346.8 S -4.438(ee)7.218 G -2.778(ii)4.438
-G -5.558(nn)2.778 G -2.778(ii)5.558 G -4.438(cc)2.778 G -2.778(ii)4.438
-G -4.998(aa)2.778 G -2.778(ll)4.998 G -2.778(ii)2.778 G -4.438(zz)2.778
-G -4.998(aa)4.438 G -4.438(cc)4.998 G -2.778(ii)4.438 G -4.998<f3f3>
-2.778 G 11.116 -5.558(nn dd)4.998 H 8.876 -4.438(ee l)5.558 H(lo)1.66 E
-(os)-4.998 E 2.5(sc)-3.888 G(co)-6.938 E(on)-4.998 E(nt)-5.558 E(ta)
--3.328 E(ad)-4.998 E(do)-5.558 E(or)-4.998 E -.18(re)-4.438 G(es)-4.258
-E(s)-3.888 E F0 -.8(To)108 363.6 S(da).8 E .643
-(v\355a nos quedan algunas cosas por v)-.2 F(er)-.15 E 3.143(.N)-.55 G
-.643(os quedan algunas opciones importantes por cubrir)-3.143 F 3.143
-(,ya)-.4 G .643(un no)-3.143 F .279(hemos hablado de la reinicializaci\
-\363n de contadores. Empecemos por ah\355: Estamos en nuestro coche, v)
-108 375.6 R(emos)-.15 E .152
-(el contador y muestra 999987. Andamos unos 20)108 387.6 R F1(KM)2.651 E
-F0 2.651(,a)C .151
-(s\355 que el contador debe subir a 1000007. Desafortu-)-2.651 F 1.951(\
-nadamente, el contador s\363lo tiene 6 d\355gitos, as\355 que en realid\
-ad nos muestra 000007. Si estuvi\351ramos)108 399.6 R .093
-(guardando los v)108 411.6 R .093(alores en un tipo)-.25 F F1(DERIVE)
-2.592 E F0 2.592(,e)C .092
-(sto signi\214car\355a que el contador retrocedi\363 unos 999980)-2.592
-F F1(KM)2.592 E F0 2.592(.P)C(or)-2.592 E 1.194(supuesto esto no es cie\
-rto, por lo que necesitamos alguna protecci\363n contra estos casos. Es\
-ta protecci\363n)108 423.6 R .68(s\363lo la tenemos para el tipo)108
-435.6 R F1(COUNTER)3.18 E F0 3.18(,e)C 3.18(lc)-3.18 G .68
-(ual de todas formas era el que ten\355amos que haber usado para)-3.18 F
-.718(este tipo de contador)108 447.6 R 3.219<2ebf>-.55 G .719
-(C\363mo funciona? Los v)-3.219 F .719(alores tipo)-.25 F F1(COUNTER)
-3.219 E F0 .719(no deben decrecer nunca, \241por lo que)3.219 F .48(RRD\
-tool asume en ese caso que el contador se ha reinicializado! Si la dife\
-rencia es ne)108 459.6 R -.05(ga)-.15 G(ti).05 E -.25(va)-.25 G 2.979
-(,e).25 G .479(sto se com-)-2.979 F(pensa sumando el v)108 471.6 Q
-(alor m\341ximo del contador + 1. P)-.25 E
-(ara nuestro coche, tendr\355amos:)-.15 E/F3 10/Courier@0 SF
-(Delta = 7 - 999987 = -999980)114 488.4 Q
-(\(en vez de 1000007-999987=20\))24 E
-(Delta real= -999980 + 999999 + 1 = 20)114 512.4 Q F0 .104(Al momento d\
-e escribir este documento, RRDtool maneja contadores de 32 o 64 bits de\
- tama\361o. Estos con-)108 536.4 R
-(tadores pueden manejar los siguientes v)108 548.4 Q(alores:)-.25 E F3 6
-(-3)114 565.2 S 6(2b)-6 G(its: 0 ..)-6 E(4294967295)66 E 6(-6)114 577.2
-S 6(4b)-6 G(its: 0 .. 18446744073709551615)-6 E F0(Si estos v)108 601.2
-Q(alores te parecen raros, podemos v)-.25 E(erlos en formato he)-.15 E
-(xadecimal:)-.15 E F3 6(-3)114 618 S 6(2b)-6 G(its: 0 ..)-6 E(FFFFFFFF)
-54 E 6(-6)114 630 S 6(4b)-6 G(its: 0 .. FFFFFFFFFFFFFFFF)-6 E F0 1.101(\
-RRDtool maneja ambos contadores de la misma manera. Si ocurre un desbor\
-damiento y la diferencia es)108 654 R(ne)108 666 Q -.05(ga)-.15 G(ti).05
-E -.25(va)-.25 G 3.163(,R).25 G .663
-(RDtool le suma primero el m\341ximo del contador `)-3.163 F(`menor')
--.74 E 3.163('\()-.74 G .664(32 bits\) + 1 a la diferencia. Si a\372n)
--3.163 F .527(as\355 la diferencia es ne)108 678 R -.05(ga)-.15 G(ti).05
-E -.25(va)-.25 G 3.026(,e).25 G .526(ntonces el contador reinicializado\
- era mayor \(64 bits\), por lo que se le suma)-3.026 F .67(el v)108 690
-R .67(alor m\341ximo del contador `)-.25 F(`lar)-.74 E(go')-.18 E 3.17
-('+1ys)-.74 G 3.17(el)-3.17 G 3.17(er)-3.17 G .67
-(esta el m\341ximo del contador `)-3.17 F(`peque\361o')-.74 E 3.17('q)
--.74 G .67(ue sumamos)-3.17 F 2.368
-(err\363neamente. Hay un problema con esto: supong)108 702 R 2.368
-(amos que un contador lar)-.05 F 2.368(go se ha reinicializado al)-.18 F
-1.73(sum\341rsele una diferencia muy grande; entonces es posible que al\
- a\361adir el v)108 714 R 1.73(alor m\341ximo del contador)-.25 F 2.5
-(peque\361o la diferencia nos d\351 positi)108 726 R -.2(vo)-.25 G 5(.E)
-.2 G 5(ne)-5 G 2.5(ste caso poco probable, los v)-5 F 2.5
-(alores resultantes no serian)-.25 F 145.68(2001-02-11 Last)72 774 R
-(change: 1.0.28)2.5 E(14)184.84 E EP
-%%Page: 15 15
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F .355(correctos. P)108 96 R .355(ara que ocurra\
- esto, el incremento tiene que ser casi tan grande como el v)-.15 F .356
-(alor m\341ximo del con-)-.25 F(tador)108 108 Q 4.087(,p)-.4 G 1.587
-(or lo que de ocurrir es muy probable que halla v)-4.087 F 1.586
-(arios problemas m\341s en la con\214guraci\363n y no)-.25 F .184(merez\
-ca la pena preocuparse s\363lo por este. A\372n as\355, he incluido un \
-ejemplo de este caso para que lo puedas)108 120 R(juzg)108 132 Q
-(ar por ti mismo.)-.05 E 3.694(Ac)108 148.8 S 1.194(ontinuaci\363n, uno\
-s ejemplos de reinicializaci\363n de los contadores. Prueba de hacer lo\
-s c\341lculos por ti)-3.694 F(mismo, o acepta mis resultados si tu calc\
-uladora no puede con los n\372meros :\))108 160.8 Q
-(N\372meros de correcci\363n:)108 177.6 Q/F1 10/Courier@0 SF 6(-3)114
-194.4 S 6(2b)-6 G(its: \(4294967295+1\) =)-6 E(4294967296)198 E 6(-6)114
-206.4 S 6(4b)-6 G
-(its: \(18446744073709551615+1\)-correction1 = 18446744069414584320)-6 E
-54(Antes: 4294967200)114 230.4 R 66(Incremento: 100)114 242.4 R
-(Deber\355a ser:)114 254.4 Q(4294967300)24 E(Pero es:)114 266.4 Q(4)102
-E 18(Diferencia: -4294967196)114 278.4 R
-(Correcci\363n #1: -4294967196 + 4294967296 = 100)114 290.4 Q 54
-(Antes: 18446744073709551000)114 314.4 R 126(Incremento: 800)114 326.4 R
-(Deber\355a ser:)114 338.4 Q(18446744073709551800)24 E(Pero es:)114
-350.4 Q(184)150 E 18(Diferencia: -18446744073709550816)114 362.4 R(Corr\
-ecci\363n #1: -18446744073709550816 +4294967296 = -18446744069414583520)
-114 374.4 Q
-(Correcci\363n #2: -18446744069414583520 +18446744069414584320 = 800)114
-386.4 Q 54(Antes: 18446744073709551615)114 410.4 R 6(\(v)6 G
-(alor m\341ximo \))-6 E 24(Incremento: 18446744069414584320)114 422.4 R
-6(\(i)6 G(ncremento absurdo,)-6 E(Deber\355a ser:)114 434.4 Q 12
-(36893488143124135935 m\355nimo)24 F(para que)6 E(Pero es:)114 446.4 Q
-12(18446744069414584319 funcione)48 F(el ejemplo\))6 E 78
-(Diferencia: -4294967296)114 458.4 R(Correcci\363n #1:)114 470.4 Q
-(-4294967296 + 4294967296 = 0 \(positivo,)12 E(por tanto no se hace)390
-482.4 Q(la segunda correcci\363n\))390 494.4 Q 54
-(Antes: 18446744073709551615)114 518.4 R 6(\(v)6 G(alor m\341ximo \))-6
-E 24(Incremento: 18446744069414584319)114 530.4 R(Deber\355a ser:)114
-542.4 Q(36893488143124135934)24 E(Pero es:)114 554.4 Q
-(18446744069414584318)48 E 78(Diferencia: -4294967297)114 566.4 R
-(Correcci\363n #1:)114 578.4 Q(-4294967297 +4294967296 = -1)12 E
-(Correcci\363n #2:)114 590.4 Q
-(-1 +18446744069414584320 = 18446744069414584319)12 E F0 .545
-(Como puede v)108 614.4 R .545
-(erse en los \372ltimos ejemplos, necesitas unos v)-.15 F .545
-(alores bastante e)-.25 F .546(xtra\361os para hacer que RRD-)-.15 F .23
-(tool f)108 626.4 R .23(alle \(asumiendo que no teng)-.1 F 2.73(an)-.05
-G .229(ing\372n error el programa, por supuesto\), as\355 que esto no d\
-eber\355a ocurrir)-2.73 F(.)-.55 E .779(Sin embar)108 638.4 R(go,)-.18 E
-/F2 9/Times-Roman@0 SF(SNMP)3.279 E F0 3.279(oc)3.279 G .78(ualquier ot\
-ro m\351todo que uses de recogida de datos puede tambi\351n reportar al\
-g\372n)-3.279 F -.25(va)108 650.4 S .616
-(lor err\363neo ocasionalmente. No podemos pre).25 F -.15(ve)-.25 G .616
-(nir todos los errores, pero podemos tomar algunas medi-).15 F .718
-(das. El comando `)108 662.4 R(`create')-.74 E 3.218('d)-.74 G 3.218(eR)
--3.218 G .718(RDtool tiene dos par\341metros especialmente para esto, q\
-ue de\214nen los v)-3.218 F(al-)-.25 E .02
-(ores m\355nimo y m\341ximo permitidos. Hasta ahora hemos usado `)108
-674.4 R(`U')-.74 E .019(', `)-.74 F(`desconocido')-.74 E .019
-('. Si le pasas v)-.74 F .019(alores para)-.25 F .259
-(uno o ambos par\341metros y RRDtool recibe un v)108 686.4 R .26
-(alor fuera de esos l\355mites, los ignorar\341. P)-.25 F .26
-(ara un term\363metro)-.15 F .213
-(en grados Celsius, el m\355nimo absoluto es \255273. P)108 698.4 R .212
-(ara mi enrutador)-.15 F 2.712(,p)-.4 G .212
-(uedo asumir que ese m\355nimo es mucho)-2.712 F(mayor)108 710.4 Q 3.457
-(,d)-.4 G(ig)-3.457 E .957(amos que 10.)-.05 F .958(La temperatura m\
-\341xima la pondr\355a en unos 80 grados; m\341s alto y el aparato no)
-5.957 F .05(funcionar\355a. P)108 722.4 R .05
-(ara mi coche, nunca esperar\355a obtener v)-.15 F .05(alores ne)-.25 F
--.05(ga)-.15 G(ti).05 E -.2(vo)-.25 G .05(s, y tampoco esperar\355a v).2
-F .05(alores mayores)-.25 F 145.68(2001-02-11 Last)72 770.4 R
-(change: 1.0.28)2.5 E(15)184.84 E EP
-%%Page: 16 16
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F 2.96(a2)108 96 S 2.96(30. Cualquier)-2.96 F .46
-(otra cosa ser\355a un error)2.96 F 2.96(.P)-.55 G .46
-(ero recuerda, lo contrario no es cierto: si los v)-2.96 F .46
-(alores pasan este)-.25 F -.15(ex)108 108 S 1.607
-(amen no quiere decir que sean los correctos. Siempre e).15 F 1.607
-(xamina bien el gr\341\214co si los v)-.15 F 1.606(alores parecen)-.25 F
--.15(ex)108 120 S(tra\361os.).15 E/F1 10/Times-Bold@0 SF -7.218(RR)108
-142.8 S -4.438(ee)7.218 G -8.328(mm)4.438 G -5.558(uu)8.328 G -4.438(ee)
-5.558 G -3.888(ss)4.438 G -3.328(tt)3.888 G 6.196 -4.438(rr ee)3.328 H
-9.996 -4.998(oo d)4.438 H(de)-.56 E 2.5(el)-4.438 G(lo)-5.278 E(os)
--4.998 E 2.5(sd)-3.888 G(da)-8.058 E(at)-4.998 E(to)-3.328 E(os)-4.998 E
-(s)-3.888 E F0 .376
-(Hay una funcionalidad importante de RRDtool que no hemos e)108 159.6 R
-.376(xplicado toda)-.15 F .377(v\355a: es virtualmente imposible)-.2 F
-.604(recoger los datos y pasarselos a RRDtool a interv)108 171.6 R .604
-(alos e)-.25 F .603(xactos de tiempo. Por tanto, RRDtool interpola los)
--.15 F .068(datos a los interv)108 183.6 R .068(alos e)-.25 F .068(xact\
-os. Si no sabes que signi\214ca esto o como se hace, he aqu\355 la ayud\
-a que necesitas:)-.15 F(Supong)108 200.4 Q 1.833
-(amos un contador se incremente e)-.05 F 1.833(xactamente en 1 cada se)
--.15 F 4.333(gundo. Queremos)-.15 F 1.833(medirlo cada 300)4.333 F(se)
-108 212.4 Q .478(gundos, por lo que deber\355amos tener v)-.15 F .478
-(alores separados e)-.25 F .478(xactamente en 300. Sin embar)-.15 F .478
-(go, por v)-.18 F .478(arias cir)-.25 F(-)-.2 E .976(cunstancias lle)108
-224.4 R -.05(ga)-.15 G .976(mos unos se).05 F .976
-(gundos tarde y el interv)-.15 F .975
-(alo es 303. La diferencia ser\341 por tanto 303. Ob)-.25 F(via-)-.15 E
-.205(mente, RRDtool no debe colocar 303 en la base de datos y dar as\
-\355 la impresi\363n de que el contador se incre-)108 236.4 R .907
-(ment\363 303 en 300 se)108 248.4 R .906
-(gundos. Aqu\355 es donde RRDtool interpola: alter\341 el v)-.15 F .906
-(alor 303 al v)-.25 F .906(alor que tendr\355a 3)-.25 F(se)108 260.4 Q
-.717(gundos antes y guarda 300 en 300 se)-.15 F .717(gundos. Dig)-.15 F
-.717(amos que la pr\363xima v)-.05 F .717(ez lle)-.15 F -.05(ga)-.15 G
-.717(mos justo a tiempo; por).05 F .132(tanto, el interv)108 272.4 R
-.132(alo actual es 297 se)-.25 F .132
-(gundos, por lo que el contador deber\355a ser 297. De nue)-.15 F -.2
-(vo)-.25 G 2.631(,R).2 G .131(RDtool altera)-2.631 F(el v)108 284.4 Q
-(alor y guarda 300, como debe ser)-.25 E(.)-.55 E/F2 10/Courier@0 SF
-(en RRD)162 301.2 Q(en realidad)126 E 12(tiempo+000: 0)114 313.2 R 18
-(delta="U" tiempo+000:)6 F 6(0d)18 G(elta="U")-6 E
-(tiempo+300: 300 delta=300)114 325.2 Q(tiempo+300: 300 delta=300)24 E
-(tiempo+600: 600 delta=300)114 337.2 Q(tiempo+603: 603 delta=303)24 E
-(tiempo+900: 900 delta=300)114 349.2 Q(tiempo+900: 900 delta=297)24 E F0
-(Creemos dos bases de datos id\351nticas. He escogido el rango de tiemp\
-o entre 920805000 y 920805900.)108 373.2 Q F2
-(rrdtool create seconds1.rrd)126 390 Q(\\)18 E(--start 920804700)144 402
-Q(\\)60 E(DS:seconds:COUNTER:600:U:U \\)144 414 Q(RRA:AVERAGE:0.5:1:24)
-144 426 Q(para Unix: cp seconds1.rrd seconds2.rrd)126 450 Q
-(para DOS: copy seconds1.rrd seconds2.rrd)126 462 Q(para VMS:)126 474 Q
-6(yy)12 G 6(oq)-6 G(ue s\351 :\))-6 E(rrdtool update seconds1.rrd \\)126
-498 Q(920805000:000 920805300:300 920805600:600 920805900:900)144 510 Q
-(rrdtool update seconds2.rrd \\)126 522 Q
-(920805000:000 920805300:300 920805603:603 920805900:900)144 534 Q F0
-145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(16)184.84 E EP
-%%Page: 17 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF(rrdtool graph seconds1.gif)
-126 96 Q(\\)138 E(--start 920804700 --end 920806200)144 108 Q(\\)78 E
-(--height 200)144 120 Q(\\)204 E
-(--upper-limit 1.05 --lower-limit 0.95 --rigid \\)144 132 Q 30
-(DEF:seconds=seconds1.rrd:seconds:AVERAGE \\)144 144 R 132
-(CDEF:unknown=seconds,UN \\)144 156 R 150(LINE2:seconds#0000FF \\)144
-168 R(AREA:unknown#FF0000)144 180 Q(rrdtool graph seconds2.gif)126 192 Q
-(\\)138 E(--start 920804700 --end 920806200)144 204 Q(\\)78 E
-(--height 200)144 216 Q(\\)204 E
-(--upper-limit 1.05 --lower-limit 0.95 --rigid \\)144 228 Q 30
-(DEF:seconds=seconds2.rrd:seconds:AVERAGE \\)144 240 R 132
-(CDEF:unknown=seconds,UN \\)144 252 R 150(LINE2:seconds#0000FF \\)144
-264 R(AREA:unknown#FF0000)144 276 Q F0
-(Los dos gr\341\214cos debe ser iguales.)108 300 Q/F2 9/Times-Bold@0 SF
--6.496(RR)72 316.8 S -6.001(EE)6.496 G -5.002(SS)6.001 G -6.496(UU)5.002
-G -8.494(MM)6.496 G -6.001(EE)8.494 G -6.496(NN)6.001 G F0 .222(Es hora\
- de concluir este documento. Ahora debes conocer lo b\341sico como para\
- trabajar con RRDtool y leer)108 328.8 R .204(la documentaci\363n. A\
-\372n hay mucho m\341s por descubrir acerca de RRDtool, y le encontrar\
-\341s; m\341s y m\341s usos)108 340.8 R .725(para la herramienta. Con l\
-os ejemplos y la herramienta puedes crear f\341cilmente muchos gr\341\
-\214cos; tambi\351n)108 352.8 R(puedes usar las interf)108 364.8 Q
-(aces disponibles.)-.1 E F2 -6.001(LL)72 381.6 S -3.499(II)6.001 G
--5.002(SS)3.499 G 8.942 -6.001(TT A)5.002 H 2.25(AD)-.495 G(DE)-8.746 E
-2.25(EC)-6.001 G(CO)-8.746 E(OR)-7 E(RR)-6.496 E(RE)-6.496 E(EO)-6.001 E
-(O)-7 E F0 .534(Recuerda subscribirte a la lista de correo. Aunque no c\
-ontestes los correos que aparecen en ella, te servir\341)108 393.6 R
-.514(de ayuda a ti y a los dem\341s.)108 405.6 R .514
-(Mucho de lo que se sobre)5.514 F/F3 9/Times-Roman@0 SF(MR)3.015 E(TG)
--.54 E F0 .515(\(y por tanto sobre RRDtool\), lo aprend\355 tan)3.015 F
-.009(s\363lo con leer la lista, sin escribir)108 417.6 R 2.509(.N)-.55 G
-2.509(oh)-2.509 G .008(ay por que pre)-2.509 F .008(guntar las pre)-.15
-F .008(guntas b\341sicas, que ya tienen su respuesta)-.15 F 1.543(en la)
-108 429.6 R F3 -1.413 -.666(FA Q)4.043 H F0 1.543
-(\(\241l\351ela!\). Con miles de usuarios a lo lar)4.709 F 1.544
-(go del mundo, siempre hay pre)-.18 F 1.544(guntas que tu puedes)-.15 F
-(responder con lo aprendido en este y otros documentos.)108 441.6 Q F2
--6.496(VV)72 458.4 S -6.001(EE)6.496 G 12.992 -6.496(RR T)6.001 H -.81
-(TA).495 G(AM)-5.686 E(MB)-8.494 E(BI)-6.001 E<49c9>-3.499 E<c94e>-6.001
-E(N)-6.496 E F0(Las p\341ginas del manual de RRDtool)108 470.4 Q F2
-10.292 -6.496(AA UU)72 487.2 T 9.59 -6.001(TT O)6.496 H(OR)-.999 E(R)
--6.496 E F0 .743
-(Espero que hayas disfrutado con los ejemplos y las descripciones.)108
-499.2 R .742(Si es as\355, ayuda a otros re\214ri\351ndolos a)5.742 F
-1.116(este documento cuando te hag)108 511.2 R 1.116(an pre)-.05 F 1.117
-(guntas b\341sicas. No s\363lo obtendr\341n la respuesta, sino que apre\
-nder\341n)-.15 F(muchas otras cosas.)108 523.2 Q(Ale)108 540 Q 2.5(xv)
--.15 G(an den Bog)-2.75 E(aerdt <ale)-.05 E(x@er)-.15 E
-(gens.op.het.net>)-.18 E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)
-2.5 E(17)184.84 E EP
-%%Trailer
-end
-%%EOF
diff --git a/doc/test2.ps b/doc/test2.ps
deleted file mode 100644 (file)
index 1533f69..0000000
+++ /dev/null
@@ -1,1637 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.15
-%%CreationDate: Sun Feb 11 13:10:21 2001
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier
-%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.15 0
-%%Pages: 17
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.15 0
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/FL{
-currentgray exch setgray fill setgray
-}bind def
-/BL/fill load def
-/LW/setlinewidth load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Courier
-%%IncludeResource: font Symbol
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
-/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Courier@0 ENC0/Courier RE/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0
-ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 9/Times-Bold@0 SF 10.562 -6.496(NN AA)72 96
-T -8.494(MM)6.496 G 12.002 -6.001(EE /)8.494 H 2.25(/N)3.501 G(NO)-8.746
-E(OM)-7 E(MB)-8.494 E(BR)-6.001 E(RE)-6.496 E(E)-6.001 E F0 .715
-(rrdtutorial \255 T)108 108 R .715(utorial sobre RRDtool por Ale)-.45 F
-3.215(xv)-.15 G .715(an den Bog)-3.465 F .715(aerdt \(T)-.05 F .714
-(raducido al castellano por Jes\372s Couto)-.35 F -.15(Fa)108 120 S
-(ndi\361o\)).15 E F1 -6.496(DD)72 136.8 S -6.001(EE)6.496 G -5.002(SS)
-6.001 G -6.496(CC)5.002 G -6.496(RR)6.496 G -3.499(II)6.496 G -5.497(PP)
-3.499 G -6.001(TT)5.497 G -3.499(II)6.001 G -7(OO)3.499 G 12.992 -6.496
-(NN /)7 H 2.25(/D)3.996 G(DE)-8.746 E(ES)-6.001 E(SC)-5.002 E(CR)-6.496
-E(RI)-6.496 E(IP)-3.499 E(PC)-5.497 E(CI)-6.496 E<49d3>-3.499 E<d34e>-7
-E(N)-6.496 E F0 1.022(RRDtool es un programa escrito por T)108 148.8 R
-1.022(obias Oetik)-.8 F 1.022
-(er con la colaboraci\363n de muchas personas en di)-.1 F -.15(ve)-.25 G
-(rsas).15 E .003(partes del mundo. Ale)108 160.8 R 2.503(xv)-.15 G .003
-(an den Bog)-2.753 F .002(aerdt escribi\363 este documento para ayudart\
-e a entender que es RRDtool)-.05 F 2.5(yq)108 172.8 S
-(ue es lo que puede hacer por ti.)-2.5 E .854(La documentaci\363n que v\
-iene con RRDtool puede ser demasiado t\351cnica para algunos. Este tuto\
-rial e)108 189.6 R(xiste)-.15 E 2.142(para ayudarte a entender las func\
-iones b\341sicas de RRdtool. Debe servirte de preparaci\363n para leer \
-la)108 201.6 R .11(documentaci\363n, y adem\341s e)108 213.6 R .11(xpli\
-ca algunas ideas generales sobre estad\355stica, con un enfoque particu\
-lar hacia)-.15 F(las redes.)108 225.6 Q F1 -6.001(TT)72 242.4 S -6.496
-(UU)6.001 G 9.59 -6.001(TT O)6.496 H(OR)-.999 E(RI)-6.496 E(IA)-3.499 E
-(AL)-6.496 E(L)-6.001 E/F2 10/Times-Bold@0 SF -3.888(II)108 254.4 S
--8.328(mm)3.888 G -5.558(pp)8.328 G -4.998(oo)5.558 G -4.438(rr)4.998 G
--3.328(tt)4.438 G -4.998(aa)3.328 G -5.558(nn)4.998 G -3.328(tt)5.558 G
--4.438(ee)3.328 G F0 1.291(\241Por f)108 271.2 R -.2(avo)-.1 G 2.091 -.4
-(r, n).2 H 3.791(ot).4 G 3.791(ea)-3.791 G 1.291
-(delantes en la lectura de este documento! Esta primera parte e)-3.791 F
-1.29(xplica los fundamentos)-.15 F .077(b\341sicos. Puede ser ab)108
-283.2 R .078
-(urrida, pero si te saltas los fundamentos, los ejemplos no te v)-.2 F
-.078(an a tener mucho sentido.)-.25 F F2 -4.998<bfbf>108 306 S -7.778
-(QQ)4.998 G -5.558(uu)7.778 G 8.876 -4.438<e9e9206565>5.558 H 7.776
--3.888(ss R)4.438 H(RR)-3.33 E(RD)-7.218 E(Dt)-7.218 E(to)-3.328 E(oo)
--4.998 E(ol)-4.998 E(l?)-2.778 E(?)-4.998 E F0 1.281
-(RRDtool signi\214ca `)108 322.8 R 1.281
-(`herramienta de bases de datos en round robin')-.74 F 3.781('. `)-.74 F
-1.28(`Round robin')-.74 F 3.78('e)-.74 G 3.78(su)-3.78 G 1.28
-(na t\351cnica que)-3.78 F .793(implica un n\372mero \214jo de datos, y\
- un apuntador al elemento m\341s reciente. Piensa en un circulo con uno\
-s)108 334.8 R 1.21(cuantos puntos dib)108 346.8 R 1.209
-(ujados alrededor del borde; estos puntos son los lug)-.2 F 1.209
-(ares donde se pueden guardar los)-.05 F .09(datos. Dib)108 358.8 R .091
-(uja ahora una \215echa desde el centro del c\355rculo a uno de los pun\
-tos; este es el apuntador)-.2 F 5.091(.C)-.55 G(uando)-5.091 E .718
-(se lee o escribe el dato actualmente apuntado, la \215echa se mue)108
-370.8 R 1.017 -.15(ve a)-.25 H 3.217(lp).15 G .717
-(r\363ximo elemento. Como estamos en)-3.217 F 1.456
-(un c\355rculo, no hay ni principio ni \214n; siempre puedes se)108
-382.8 R(guir)-.15 E 3.957(,e)-.4 G 1.457
-(ternamente. Al cabo de un tiempo ya se)-3.957 F .234(habr\341n usado t\
-odas las posiciones disponibles y el proceso empieza a reutilizar las a\
-ntiguas. De esta forma,)108 394.8 R .862
-(la base de datos no crece en tama\361o y)108 406.8 R 3.362(,p)-.65 G
-.863(or lo tanto, no requiere ning\372n mantenimiento.)-3.362 F .863
-(RRDtool trabaja)5.863 F(con estas bases de datos en `)108 418.8 Q
-(`round-robin')-.74 E(', guardando y recuperando datos de ellas.)-.74 E
-F2 -4.998<bfbf>108 441.6 S -7.778(QQ)4.998 G -5.558(uu)7.778 G 8.876
--4.438<e9e92064>5.558 H(da)-1.12 E(at)-4.998 E(to)-3.328 E(os)-4.998 E
-2.5(sp)-3.888 G(pu)-8.058 E(ue)-5.558 E(ed)-4.438 E(de)-5.558 E(en)
--4.438 E 2.5(ng)-5.558 G(gu)-7.498 E(ua)-5.558 E(ar)-4.998 E(rd)-4.438 E
-(da)-5.558 E(ar)-4.998 E(rs)-4.438 E(se)-3.888 E 2.5(ee)-4.438 G(en)
--6.938 E 2.5(nu)-5.558 G(un)-8.058 E(na)-5.558 E(a)-4.998 E F1 -6.496
-(RR)2.5 G -6.496(RR)6.496 G -6.496(DD)6.496 G F2 -4.998(??)6.496 G F0
-.694(Lo que se te ocurra. Debes poder medir alg\372n v)108 458.4 R .693
-(alor dado en distintos momentos en el tiempo y pro)-.25 F -.15(ve)-.15
-G .693(er a).15 F .663(RRDtool de estos v)108 470.4 R .663
-(alores. Si puedes hacer esto, RRDtool puede guardar los datos. Los v)
--.25 F .664(alores tienen que)-.25 F
-(ser num\351ricos, pero no necesariamente enteros, como en)108 482.4 Q
-/F3 9/Times-Roman@0 SF(MR)2.5 E(TG)-.54 E F0(.)A 2.035
-(Muchos ejemplos mencionan)108 499.2 R F3(SNMP)4.535 E F0 4.535(,q)C
-2.034(ue es el acr\363nimo de `)-4.535 F 2.034(`Simple Netw)-.74 F 2.034
-(ork Management Protocol')-.1 F(')-.74 E .138
-(\(Protocolo Simple de Administraci\363n de Redes\). Lo de `)108 511.2 R
-(`simple')-.74 E 2.638('s)-.74 G 2.638(er)-2.638 G .139
-(e\214ere al protocolo \255 no se supone que)-2.638 F .417(sea f\341cil\
- administrar o monitorizar una red. Cuando hayas terminado con este doc\
-umento, deber\341s saber lo)108 523.2 R 1.894
-(su\214ciente para entender cuando oig)108 535.2 R 1.894
-(as a otros hablar sobre)-.05 F F3(SNMP)4.395 E F0 4.395(.P)C 1.895
-(or ahora, simplemente considera a)-4.395 F F3(SNMP)108 547.2 Q F0 2.913
-(como una forma de pre)5.413 F 2.912(guntarle a los dispositi)-.15 F -.2
-(vo)-.25 G 5.412(sp).2 G 2.912(or los v)-5.412 F 2.912
-(alores de ciertos contadores que)-.25 F(mantienen. Son estos v)108
-559.2 Q(alores de estos contadores los que v)-.25 E
-(amos a almacenar en la)-.25 E F3(RRD)2.5 E F0(.)A F2 -4.998<bfbf>108
-582 S -7.778(QQ)4.998 G -5.558(uu)7.778 G 8.876 -4.438<e9e92070>5.558 H
-(pu)-1.12 E(ue)-5.558 E(ed)-4.438 E(do)-5.558 E 2.5(oh)-4.998 G(ha)
--8.058 E(ac)-4.998 E(ce)-4.438 E(er)-4.438 E 2.5(rc)-4.438 G(co)-6.938 E
-(on)-4.998 E 2.5(ne)-5.558 G(es)-6.938 E(st)-3.888 E(ta)-3.328 E 2.5(ah)
--4.998 G(he)-8.058 E(er)-4.438 E(rr)-4.438 E(ra)-4.438 E(am)-4.998 E(mi)
--8.328 E(ie)-2.778 E(en)-4.438 E(nt)-5.558 E(ta)-3.328 E(a?)-4.998 E(?)
--4.998 E F0 3.898(RRDtool se deri)108 598.8 R 4.398 -.25(va d)-.25 H(e)
-.25 E F3(MR)6.398 E(TG)-.54 E F0 3.898(\(Multi Router T)6.398 F(raf)-.35
-E 3.898(\214c Grapher)-.25 F 6.399(,G)-.4 G 3.899(ra\214cador De T)
--6.399 F 3.899(r\341\214co de M\372ltiples)-.35 F(Enrutadores\).)108
-610.8 Q F3(MR)6.675 E(TG)-.54 E F0 1.674(empez\363 como un peque\361o s\
-cript para poder gra\214car el uso de una cone)4.175 F 1.674
-(xi\363n a la)-.15 F 2.278(Internet. Lue)108 622.8 R 2.278(go e)-.15 F
--.2(vo)-.25 G 2.278(lucion\363, permitiendo gra\214car otras fuentes de\
- datos, como temperatura, v).2 F(elocidad,)-.15 E -.2(vo)108 634.8 S
-.022(ltajes, cantidad de p\341ginas impresas, etc... Lo m\341s probable\
- es que empieces a usar RRDtool para guardar).2 F 5.207(yp)108 646.8 S
-2.708(rocesar datos conse)-5.207 F 2.708(guidos a tra)-.15 F 2.708
-(v\351s de)-.2 F F3(SNMP)5.208 E F0 5.208(,yq)C 2.708
-(ue los datos sean el n\372mero de bytes \(o bits\))-5.208 F 1.023
-(transferidos desde y hacia una red u ordenador)108 658.8 R 3.522(.R)
--.55 G 1.022(RDtool te permite crear una base de datos, guardar los)
--3.522 F .719
-(datos en ellas, recuperarlos y crear gr\341\214cos en formato)108 670.8
-R F3(GIF)3.219 E F0(o)3.22 E F3(PNG)3.22 E F0 3.22(,p)C .72
-(ara mostrarlos en un na)-3.22 F -2.25 -.15(veg a)-.2 H .72(dor web).15
-F(.)-.4 E 1.901(Esas im\341genes dependen de los datos que hayas guarda\
-do y pueden, por ejemplo, ser un sumario del)108 682.8 R .795
-(promedio de uso de la red, o los picos de tr\341\214co que ocurrieron.)
-108 694.8 R -.8(Ta)5.795 G .796(mbi\351n lo puedes usar para mostrar el)
-.8 F(ni)108 706.8 Q -.15(ve)-.25 G 5.267(ld).15 G 5.267(el)-5.267 G
-2.767(as mareas, la radiaci\363n solar)-5.267 F 5.267(,e)-.4 G 5.267(lc)
--5.267 G 2.767
-(onsumo de electricidad, el n\372mero de visitantes en una)-5.267 F -.15
-(ex)108 718.8 S .958(posici\363n en un momento dado, los ni).15 F -.15
-(ve)-.25 G .959
-(les de ruido cerca del aeropuerto, la temperatura en tu lug).15 F .959
-(ar de)-.05 F -.25(va)108 730.8 S 1.222(caciones f).25 F -.2(avo)-.1 G
-1.222(rito, o en la ne).2 F -.15(ve)-.25 G 1.221
-(ra, o cualquier otra cosa que te puedas imaginar).15 F 3.721(,m)-.4 G
-1.221(ientras teng)-3.721 F 1.221(as alg\372n)-.05 F 145.68
-(2001-02-11 Last)72 778.8 R(change: 1.0.28)2.5 E(1)189.84 E EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F(sensor con el cual medir los datos y seas capa\
-z de pasarle los n\372meros a RRDtool.)108 96 Q/F1 10/Times-Bold@0 SF
--4.998<bfbf>108 118.8 S 14.436 -7.218(YY s)4.998 H(si)3.33 E 2.5(ia)
--2.778 G<61fa>-7.498 E<fa6e>-5.558 E 2.5(nt)-5.558 G(te)-5.828 E(en)
--4.438 E(ng)-5.558 E(go)-4.998 E 2.5(op)-4.998 G(pr)-8.058 E -.18(ro)
--4.438 G(ob)-4.818 E(bl)-5.558 E(le)-2.778 E(em)-4.438 E(ma)-8.328 E(as)
--4.998 E 2.5(sd)-3.888 G(de)-8.058 E(es)-4.438 E(sp)-3.888 E(pu)-5.558 E
-<75e9>-5.558 E<e973>-4.438 E 2.5(sd)-3.888 G(de)-8.058 E 2.5(el)-4.438 G
-(le)-5.278 E(ee)-4.438 E(er)-4.438 E 2.5(re)-4.438 G(es)-6.938 E(st)
--3.888 E(te)-3.328 E 2.5(ed)-4.438 G(do)-8.058 E(oc)-4.998 E(cu)-4.438 E
-(um)-5.558 E(me)-8.328 E(en)-4.438 E(nt)-5.558 E(to)-3.328 E(o?)-4.998 E
-(?)-4.998 E F0 .22(Lo primero, \241l\351elo otra v)108 135.6 R .22
-(ez!. Puede que te hayas perdido de algo.)-.15 F .22
-(Si no puedes compilar el c\363digo fuente y)5.22 F 1.548
-(usas un sistema operati)108 147.6 R 1.948 -.2(vo b)-.25 H 1.547
-(astante com\372n, casi se).2 F 1.547
-(guro que no es la culpa de RRDtool.)-.15 F(Probablemente)6.547 E
-(consig)108 159.6 Q .217(as v)-.05 F .217
-(ersiones pre-compiladas por la Internet. Si pro)-.15 F .218
-(vienen de una fuente con\214able, \372salas. Si, por otro)-.15 F 1.058
-(lado, el programa funciona, pero no te da los resultados que tu espera\
-bas, puede ser un problema con la)108 171.6 R(con\214guraci\363n; re)108
-183.6 Q(v\355sala y comp\341rala con los ejemplos.)-.25 E .207
-(Hay una lista de correo electr\363nico y una archi)108 200.4 R .607 -.2
-(vo d)-.25 H 2.707(el).2 G 2.707(am)-2.707 G .208
-(isma. Lee la lista durante unas cuantas semanas, y)-2.707 F -.2(bu)108
-212.4 S .344(sca en el archi).2 F -.2(vo)-.25 G 2.844(.E).2 G 2.844(sd)
--2.844 G .344(escort\351s hacer una pre)-2.844 F .343
-(gunta sin haber re)-.15 F .343(visado el archi)-.25 F -.2(vo)-.25 G
-2.843<3ba1>.2 G .343(puede que tu problema)-2.843 F .424(ya haya sido r\
-esuelto antes! Normalmente ocurre as\355 en todas las listas de correo,\
- no s\363lo esta. Examina la)108 224.4 R
-(documentaci\363n que vino con RRDtool para v)108 236.4 Q
-(er donde est\341 el archi)-.15 E .4 -.2(vo y c)-.25 H(omo usarlo.).2 E
-2.415 -.7(Te s)108 253.2 T 1.014(ugiero que te tomes un momento y te su\
-bscribas a la lista ahora mismo, en).7 F 1.014(viando un mensaje a rrd-)
--.4 F .271(users-request@list.ee.ethz.ch con t\355tulo)108 265.2 R/F2 10
-/Courier@0 SF(subscribe)2.771 E F0 2.771(.S)C 2.772(ie)-2.771 G -.15(ve)
--3.022 G .272(ntualmente deseas salirte de la lista, en).15 F .272
-(v\355a otro)-.4 F(correo a la misma direcci\363n, con t\355tulo)108
-277.2 Q F2(unsubscribe)2.5 E F0(.)A F1 -4.998<bfbf>108 300 S -7.218(CC)
-4.998 G -4.998<f3f3>7.218 G -8.328(mm)4.998 G 9.996 -4.998(oo m)8.328 H
-(me)-3.33 E 2.5(ev)-4.438 G -.1(va)-7.498 G(as)-4.898 E 2.5(sa)-3.888 G
-2.5(aa)-7.498 G(ay)-7.498 E(yu)-4.998 E(ud)-5.558 E(da)-5.558 E(ar)
--4.998 E(r?)-4.438 E(?)-4.998 E F0 .37
-(D\341ndote descripciones y ejemplos detallados. Asumimos que el se)108
-316.8 R .37(guir las instrucciones en el orden en que)-.15 F .574
-(se presentan aqu\355 te dar\341 su\214ciente conocimiento)108 328.8 R
-.575(de RRDtool como para que e)5.575 F .575(xperimentes por tu cuenta.)
--.15 F 1.265(Si no funciona a la primera, puede que te hallas saltado a\
-lgo; siguiendo los ejemplos obtendr\341s algo de)108 340.8 R -.15(ex)108
-352.8 S .025(periencia pr\341ctica y).15 F 2.525(,l)-.65 G 2.525(oq)
--2.525 G .025(ue es m\341s importante, un poco de informaci\363n sobre \
-como funciona el programa.)-2.525 F 1.732
-(Necesitar\341s saber algo sobre n\372meros he)108 369.6 R 1.731
-(xadecimales. Si no, empieza por leer `)-.15 F(`bin_dec_he)-.74 E(x')
--.15 E 4.231('a)-.74 G 1.731(ntes de)-4.231 F(continuar)108 381.6 Q(.)
--.55 E F1 9.916 -6.668(TT u)108 404.4 T 2.5(up)1.11 G(pr)-8.058 E(ri)
--4.438 E(im)-2.778 E(me)-8.328 E(er)-4.438 E(ra)-4.438 E 2.5(ab)-4.998 G
-(ba)-8.058 E(as)-4.998 E(se)-3.888 E 2.5(ed)-4.438 G(de)-8.058 E 2.5(ed)
--4.438 G(da)-8.058 E(at)-4.998 E(to)-3.328 E(os)-4.998 E 2.5(se)-3.888 G
-(en)-6.938 E 2.5(nr)-5.558 G -.18(ro)-6.938 G(ou)-4.818 E(un)-5.558 E
-(nd)-5.558 E(d-)-5.558 E(-r)-3.328 E -.18(ro)-4.438 G(ob)-4.818 E(bi)
--5.558 E(in)-2.778 E(n)-5.558 E F0 .333(En mi opini\363n, la mejor form\
-a de aprender algo es haci\351ndolo. \277Por qu\351 no empezamos ya? V)
-108 421.2 R .333(amos a crear)-1.11 F .235
-(una base de datos, poner unos cuantos v)108 433.2 R .234
-(alores en ella y e)-.25 F .234
-(xtraerlos despu\351s. La salida que obteng)-.15 F .234(as debe ser)-.05
-F(igual a la que aparece en este documento.)108 445.2 Q 2.722
-(Empezaremos con algo f\341cil, comparando un coche con un enrutador)108
-462 R 5.223(,op)-.4 G 2.723(or decirlo de otra forma,)-5.223 F .706(com\
-parando kil\363metros con bits y bytes. A nosotros nos da lo mismo; son\
- unos n\372meros obtenidos en un)108 474 R(espacio de tiempo.)108 486 Q
-.381(Asumamos que tenemos un dispositi)108 502.8 R .781 -.2(vo q)-.25 H
-.381(ue trans\214ere bytes desde y hacia la Internet. Este dispositi).2
-F .782 -.2(vo t)-.25 H(iene).2 E .321(un contador que empieza en 0 al e\
-ncenderse y se incrementa con cada byte transferido. Este contador tien\
-e)108 514.8 R .166(un v)108 526.8 R .166(alor m\341ximo; si ese v)-.25 F
-.166(alor se alcanza y se cuenta un byte m\341s, el contador vuelv)-.25
-F 2.666(eae)-.15 G .166(mpezar desde cero.)-2.666 F .834(Esto es e)108
-538.8 R .833(xactamente lo mismo que pasa con muchos contadores, como e\
-l cuentakil\363metros del coche. En)-.15 F 3.445
-(muchas de las disertaciones sobre redes se habla de bits por se)108
-550.8 R 3.446(gundo, as\355 que empezaremos por)-.15 F .436(acostumbrar\
-nos a esto. Asumamos que un byte son 8 bits y empecemos a pensar en bit\
-s y no en bytes. \241El)108 562.8 R(contador)108 574.8 Q 3.268(,s)-.4 G
-.769(in embar)-3.268 F .769(go, sigue contando en bytes! En el mundo)
--.18 F/F3 9/Times-Roman@0 SF(SNMP)3.269 E F0 3.269(,l)C 3.269(am)-3.269
-G .769(ayor\355a de los contadores tienen)-3.269 F 1.969(una longitud d\
-e 32 bits. Esto signi\214ca que pueden contar desde 0 hasta 4294967295.\
- Usaremos estos)108 586.8 R -.25(va)108 598.8 S .524
-(lores en los ejemplos. El dispositi).25 F -.2(vo)-.25 G 3.025(,c).2 G
-.525(uando le pre)-3.025 F .525(guntamos, retorna el v)-.15 F .525
-(alor actual del contador)-.25 F 3.025(.C)-.55 G(omo)-3.025 E 1.528
-(sabemos el tiempo transcurrido desde la \372ltima v)108 610.8 R 1.528
-(ez que le pre)-.15 F 1.528(guntamos, sabemos cuantos bytes se han)-.15
-F(transferido)108 622.8 Q/F4 10/Symbol SF(***)3.4 E F2 .9(en promedio)B
-F4(***)A F0 .9(por se)3.4 F .9
-(gundo. Esto no es muy dif\355cil de calcular; primero en palabras,)-.15
-F(lue)108 634.8 Q(go en operaciones:)-.15 E(1. T)108 651.6 Q(oma el v)
--.8 E(alor actual del contador y r\351stale el v)-.25 E(alor anterior)
--.25 E(2. Haz lo mismo con la fecha)108 668.4 Q
-(lo multiplicas por ocho obtienes la cantidad de bits por se)72 685.2 Q
-(gundo)-.15 E .348(3. Di)108 697.2 R .347(vide el resultado del paso \(\
-1\) por el resultado del paso \(2\). El resultado es la cantidad de byt\
-es por)-.25 F(se)128 709.2 Q .347(gundo. Si)-.15 F 145.68
-(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(2)189.84 E EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF(bps = \(contador_actual - c\
-ontador_anterior\) / \(fecha_actual - fecha_anterior\))120 96 Q/F2 10
-/Symbol SF(*)6 E F1(8)6 E F0 -.15(Pa)108 120 S 1.677
-(ra algunos ser\341 de ayuda traducir esto a un ejemplo automotor).15 F
-6.677(.N)-.55 G 4.177(op)-6.677 G 1.677(rueben estas v)-4.177 F 1.676
-(elocidades en la)-.15 F
-(pr\341ctica, y si lo hacen, no me echen la culpa por los resultados.)
-108 132 Q(Usaremos las siguientes abre)108 148.8 Q(viaturas:)-.25 E F1
-18(M: metros)114 165.6 R 12(KM: kil\363metros)114 177.6 R
-(\(= 1000 metros\).)6 E 18(H: horas)114 189.6 R 18(S: segundos)114 201.6
-R(KM/H: kil\363metros por hora)114 213.6 Q 6(M/S: metros)114 225.6 R
-(por segundo)6 E F0 -1.11(Va)108 249.6 S 2.692(sc)1.11 G .192(onduciend\
-o un coche. A las 12:05, miras el contador en el salpicadero y v)-2.692
-F .192(es que el coche ha recorrido)-.15 F(12345)108 261.6 Q/F3 9
-/Times-Roman@0 SF(KM)2.937 E F0 2.937(.Al)C .437(as 12:10 vuelv)-2.937 F
-.437(es a mirar otra v)-.15 F .437(ez, y dice 12357)-.15 F F3(KM)2.937 E
-F0 2.936(.Q)C .436(uiere decir)-2.936 F 2.936(,q)-.4 G .436
-(ue has recorrido 12)-2.936 F F3(KM)2.936 E F0 2.11
-(en cinco minutos. Un cient\355\214co con)108 273.6 R -.15(ve)-.4 G 2.11
-(rtir\355a esto en metros por se).15 F 2.11
-(gundos; esto es bastante parecido al)-.15 F
-(problema de pasar de bytes transferidos en 5 minutos a bits por se)108
-285.6 Q(gundo.)-.15 E -.6(Vi)108 302.4 S 2.756
-(ajamos 12 kil\363metros, que son 12000 metros. T).6 F 2.756
-(ardamos 5 minutos, o sea 300 se)-.8 F 2.755(gundos. Nuestra)-.15 F -.15
-(ve)108 314.4 S(locidad es 12000M / 300S igual a 40 M/S.).15 E -.8(Ta)
-108 331.2 S .028(mbi\351n podemos calcular la v).8 F .029(elocidad en)
--.15 F F3(KM/H:)2.529 E F0 .029(12 v)2.529 F .029
-(eces 5 minutos es una hora, as\355 que multiplicando los)-.15 F(12)108
-343.2 Q F3(KM)2.5 E F0(por 12 obtenemos 144)2.5 E F3(KM/H)2.5 E F0 2.5
-(.N)C 2.5(oi)-2.5 G(ntentes esto en casa, o por donde vi)-2.5 E .4 -.2
-(vo :)-.25 H<ad29>.2 E .243(Recuerda que estos n\372meros son tan s\363\
-lo promedios. No hay forma de deducir)108 360 R 2.742(,v)-.4 G .242
-(iendo s\363lo los n\372meros, si)-2.742 F(fuiste a una v)108 372 Q
-(elocidad constante.)-.15 E
-(Hay un ejemplo m\341s adelante en el tutorial que e)5 E(xplica esto.)
--.15 E .425
-(Espero que entiendas que no hay diferencia entre calcular la v)108
-388.8 R .426(elocidad en M/S o bps; s\363lo la forma en que)-.15 F 1.016
-(recogemos los datos es distinta. Inclusi)108 400.8 R -.15(ve)-.25 G
-3.515(,l).15 G 3.515(aKd)-3.515 G 3.515(ek)-3.515 G 1.015
-(ilo en este caso es e)-3.515 F 1.015(xactamente la misma, ya que en)
--.15 F(redes k es 1000)108 412.8 Q .254(Ahora v)108 429.6 R .254(amos a\
- crear una base de datos en la que guardar todos estos interesantes v)
--.25 F .255(alores. El m\351todo a usar)-.25 F .924
-(para arrancar el programa puede v)108 441.6 R .924(ariar de un sistema\
- de operaci\363n a otro, pero asumamos que lo puedes)-.25 F(resolv)108
-453.6 Q .843
-(er tu mismo en caso que se diferente en el sistema que usas.)-.15 F
-(Ase)5.843 E .843(g\372rate de no sobreescribir ning\372n)-.15 F(archi)
-108 465.6 Q 1.723 -.2(vo e)-.25 H 3.823(nt).2 G 3.823(us)-3.823 G 1.323
-(istema al ejecutarlo y escribe todo como una sola l\355nea \(tuv)-3.823
-F 3.823(eq)-.15 G 1.322(ue partirlo para que fuera)-3.823 F(le)108 477.6
-Q(gible\), salt\341ndote todos los caracteres '\\')-.15 E F1
-(rrdtool create test.rrd)126 494.4 Q(\\)78 E(--start 920804400)180 506.4
-Q(\\)60 E 12(DS:speed:COUNTER:600:U:U \\)180 518.4 R 36
-(RRA:AVERAGE:0.5:1:24 \\)180 530.4 R(RRA:AVERAGE:0.5:6:10)180 542.4 Q F0
-(\(o sea, escribe:)108 566.4 Q F1
-(rrdtool create test.rrd \255\255start 920804400 DS ...)2.5 E F0(\))A/F4
-10/Times-Bold@0 SF -4.998<bfbf>108 589.2 S -7.778(QQ)4.998 G -5.558(uu)
-7.778 G 8.876 -4.438<e9e92068>5.558 H(he)-1.12 E(em)-4.438 E(mo)-8.328 E
-(os)-4.998 E 2.5(sc)-3.888 G(cr)-6.938 E -.18(re)-4.438 G(ea)-4.258 E
-(ad)-4.998 E(do)-5.558 E(o?)-4.998 E(?)-4.998 E F0 .466(Hemos creado un\
-a base de datos en round robin llamada test \(test.rrd\), que empieza d\
-esde el mediod\355a del)108 606 R .592(d\355a en que empec\351 a escrib\
-ir este documento \(7 de marzo de 1999\). En ella se guarda una fuente \
-de datos)108 618 R(\()108 630 Q F3(DS)A F0 .717(\), llamada `)B(`speed')
--.74 E .718(', que se lee de un contador)-.74 F 3.218(.E)-.55 G 3.218
-(nl)-3.218 G 3.218(am)-3.218 G .718
-(isma base de datos se guardan dos archi)-3.218 F -.2(vo)-.25 G 3.218
-(se).2 G(n)-3.218 E .849
-(round robin \(RRAs\), uno promedia los datos cada v)108 642 R .849
-(ez que se leen \(o sea, no hay nada que promediar\), y)-.15 F .172(man\
-tiene 24 muestras \(24 por 5 minutos = 2 horas de muestras\). El otro p\
-romedia 6 muestras \(media hora\),)108 654 R 2.5(yg)108 666 S(uarda 10 \
-de estos promedios \(o sea, 5 horas\). Las opciones restantes las v)-2.5
-E(eremos m\341s adelante.)-.15 E .151(RRDtool usa un formato de `)108
-682.8 R(`fecha')-.74 E 2.651('e)-.74 G .151
-(special que viene del mundo de)-2.651 F F3(UNIX)2.651 E F0 2.651(.E)C
-.151(stas `)-2.651 F(`fechas')-.74 E 2.651('s)-.74 G .151
-(on el n\372mero)-2.651 F .922(de se)108 694.8 R .923
-(gundos que han pasado desde el primero de enero de 1970, zona)-.15 F F3
-(UTC)3.423 E F0 3.423(.E)C .923(ste n\372mero de se)-3.423 F .923
-(gundos se)-.15 F(con)108 706.8 Q(vierte lue)-.4 E
-(go en la fecha local, por lo que v)-.15 E(aria se)-.25 E
-(g\372n la franja horaria.)-.15 E 145.68(2001-02-11 Last)72 768 R
-(change: 1.0.28)2.5 E(3)189.84 E EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F .559(Lo m\341s probable es que tu no vi)108 96
-R -.25(va)-.25 G 3.059(se).25 G 3.059(nl)-3.059 G 3.059(am)-3.059 G .559
-(isma parte del mundo que yo, por lo que tu franja horaria ser\341)
--3.059 F .874(diferente. En los ejemplos, cuando mencione horas, puede \
-que no sean las mismas para ti; esto no afecta)108 108 R .718
-(mucho los resultados, s\363lo tienes que corre)108 120 R .717
-(gir las horas mientras lees. Por ejemplo, las 12:05 para m\355 son)-.15
-F(las 11:05 para los amigos en la Gran Breta\361a.)108 132 Q
-(Ahora tenemos que llenar nuestra base de datos con v)108 148.8 Q
-(alores. V)-.25 E(amos a suponer que le\355mos estos datos:)-1.11 E/F1
-10/Courier@0 SF 6(12:05 12345)114 165.6 R(KM)6 E 6(12:10 12357)114 177.6
-R(KM)6 E 6(12:15 12363)114 189.6 R(KM)6 E 6(12:20 12363)114 201.6 R(KM)6
-E 6(12:25 12363)114 213.6 R(KM)6 E 6(12:30 12373)114 225.6 R(KM)6 E 6
-(12:35 12383)114 237.6 R(KM)6 E 6(12:40 12393)114 249.6 R(KM)6 E 6
-(12:45 12399)114 261.6 R(KM)6 E 6(12:50 12405)114 273.6 R(KM)6 E 6
-(12:55 12411)114 285.6 R(KM)6 E 6(13:00 12415)114 297.6 R(KM)6 E 6
-(13:05 12420)114 309.6 R(KM)6 E 6(13:10 12422)114 321.6 R(KM)6 E 6
-(13:15 12423)114 333.6 R(KM)6 E F0(Llenaremos la base de datos as\355:)
-108 357.6 Q F1(rrdtool update test.rrd 920804700:12345 920805000:12357 \
-920805300:12363)114 374.4 Q(rrdtool update test.rrd 920805600:12363 920\
-805900:12363 920806200:12373)114 386.4 Q(rrdtool update test.rrd 920806\
-500:12383 920806800:12393 920807100:12399)114 398.4 Q(rrdtool update te\
-st.rrd 920807400:12405 920807700:12411 920808000:12415)114 410.4 Q(rrdt\
-ool update test.rrd 920808300:12420 920808600:12422 920808900:12423)114
-422.4 Q F0(Lo que signi\214ca: actualiza nuestra base de datos test con\
- los siguientes v)108 446.4 Q(alores:)-.25 E F1
-(fecha 920804700, valor 12345)114 463.2 Q(fecha 920805000, valor 12357)
-114 475.2 Q(etc\351tera.)114 499.2 Q F0 1.309(Como v)108 523.2 R 1.309
-(es, pueden introducirse m\341s de un v)-.15 F 1.31
-(alor en la base de datos por ejecuci\363n del comando. Y)-.25 F 3.81
-(ol)-1.1 G(os)-3.81 E(agrupo de tres en tres para hacerlo le)108 535.2 Q
-(gible, pero en realidad el m\341ximo depende del sistema de operaci\
-\363n.)-.15 E(Ahora podemos recuperar los datos usando `)108 552 Q
-(`rrdtool fetch')-.74 E(':)-.74 E F1
-(rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200)114
-568.8 Q F0(Debes obtener esto como salida:)108 592.8 Q F1(speed)228
-609.6 Q F0 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(4)189.84
-E EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF 42(920804400: NaN)114 96 R
-42(920804700: NaN)114 108 R(920805000: 4.0000000000e-02)114 120 Q
-(920805300: 2.0000000000e-02)114 132 Q(920805600: 0.0000000000e+00)114
-144 Q(920805900: 0.0000000000e+00)114 156 Q(920806200: 3.3333333333e-02)
-114 168 Q(920806500: 3.3333333333e-02)114 180 Q
-(920806800: 3.3333333333e-02)114 192 Q(920807100: 2.0000000000e-02)114
-204 Q(920807400: 2.0000000000e-02)114 216 Q(920807700: 2.0000000000e-02)
-114 228 Q(920808000: 1.3333333333e-02)114 240 Q
-(920808300: 1.6666666667e-02)114 252 Q(920808600: 6.6666666667e-03)114
-264 Q(920808900: 3.3333333333e-03)114 276 Q 42(920809200: NaN)114 288 R
-F0 1.516(Si no, hay algo mal. Probablemente tu sistema de operaci\363n \
-muestre `)108 312 R(`NaN')-.74 E 4.016('d)-.74 G 4.016(eo)-4.016 G 1.516
-(tra forma; representa)-4.016 F -.74(``)108 324 S .407(Not a Number').74
-F .407(', o sea `)-.74 F .407(`No es un n\372mero')-.74 F .407
-('. Si aparece `)-.74 F(`U')-.74 E -5.406 2.907('o `)-.74 H(`)-3.647 E
-/F2 9/Times-Roman@0 SF(UNKN)A F0 1.888 -.74('' o a)D .408
-(lgo parecido, es lo mismo. Si).74 F 1.29
-(hay alguna otra diferencia, probablemente te equi)108 336 R -.2(vo)-.25
-G 1.29(caste al introducir alg\372n P v).2 F 1.29
-(alor \(asumiendo que mi)-.25 F(tutorial est\341 bien, por supuesto :\
-\255\). En ese caso, borra la base de datos y prueba de nue)108 348 Q
--.2(vo)-.25 G(.).2 E(Lo que representa e)108 364.8 Q
-(xactamente esta salida lo v)-.15 E
-(amos m\341s adelante en el tutorial.)-.25 E/F3 10/Times-Bold@0 SF
--7.778(HH)108 387.6 S -4.998(oo)7.778 G -4.438(rr)4.998 G 9.996 -4.998
-(aa d)4.438 H(de)-.56 E 2.5(eh)-4.438 G(ha)-8.058 E(ac)-4.998 E(ce)
--4.438 E(er)-4.438 E 2.5(ra)-4.438 G(al)-7.498 E(lg)-2.778 E(gu)-4.998 E
-(un)-5.558 E(no)-5.558 E(os)-4.998 E 2.5(sg)-3.888 G(gr)-7.498 E<72e1>
--4.438 E<e18c>-4.998 E<8c63>-5.558 E(co)-4.438 E(os)-4.998 E(s)-3.888 E
-F0(Prueba este comando:)108 404.4 Q F1(rrdtool graph speed.gif)114 421.2
-Q(\\)198 E(--start 920804400 --end 920808000)162 433.2 Q(\\)90 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)162 445.2 R(LINE2:myspeed#FF0000)
-162 457.2 Q F0 2.403(Este comando crea speed.gif, un gr\341\214co de lo\
-s datos desde las 12:00 hasta las 13:00. Contiene una)108 481.2 R 2.559
-(de\214nici\363n de la v)108 493.2 R 2.559(ariable myspeed y de\214ne e\
-l color como rojo. Notar\341s que el gr\341\214co no comienza)-.25 F
--.15(ex)108 505.2 S .849(actamente a las 12:00 sino a las 12:05, y es p\
-orque no tenemos datos su\214cientes como para calcular el).15 F .54
-(promedio de v)108 517.2 R .54(elocidad antes de ese momento. Esto s\
-\363lo ocurre en caso de que se pierdan alg\372n muestreo,)-.15 F
-(lo que esperamos que no debe ocurrir muy a menudo.)108 529.2 Q
-(Si ha funcionado, \241felicitaciones!. Si no, re)108 546 Q
-(visa qu\351 puede estar mal.)-.25 E .074
-(La de\214nici\363n de colores se construye a partir del rojo, v)108
-562.8 R .075(erde y azul. Especi\214cas cuanto de cada uno de estos)-.15
-F 1.438(componentes v)108 574.8 R 1.438(as a usar en he)-.25 F 1.437
-(xadecimal: 00 signi\214ca `)-.15 F 1.437(`nada de este color')-.74 F
-3.937('y)-.74 G F2(FF)A F0 1.437(signi\214ca `)3.937 F 1.437
-(`este color a)-.74 F .93(m\341xima intensidad')108 586.8 R .93('. El `)
--.74 F(`color')-.74 E 3.43('b)-.74 G .93(lanco es la mezcla del rojo, v)
--3.43 F .931(erde y azul a toda intensidad:)-.15 F F2(FFFFFF)3.431 E F0
-3.431(;e)C(l)-3.431 E(ne)108 598.8 Q
-(gro es la ausencia de todos los colores: 000000.)-.15 E F1 18
-(rojo #FF0000)126 615.6 R 12(verde #00FF00)126 627.6 R 18(azul #0000FF)
-126 639.6 R(violeta #FF00FF)126 651.6 Q(\(mezcla de rojo y azul\))30 E
-18(gris #555555)126 663.6 R(\(un tercio de cada uno de los colores\))30
-E F0 2.859(El archi)108 687.6 R -.2(vo)-.25 G F2(GIF)5.559 E F0 2.859
-(que acabas de crear puede v)5.359 F 2.859(erse con tu visor de archi)
--.15 F -.2(vo)-.25 G 5.359(sd).2 G 5.359(ei)-5.359 G 2.858(magen f)
--5.359 F -.2(avo)-.1 G 2.858(rito. Los).2 F(na)108 699.6 Q -2.25 -.15
-(veg a)-.2 H(dores lo mostrar\341n usando la).15 E F2(URL)2.5 E F0 -.74
-(``)2.5 G -1.95(\214le://el/camino/de/directorios/hasta/speed.gif ').74
-F(')-.74 E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(5)189.84
-E EP
-%%Page: 6 6
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Times-Bold@0 SF -7.778(GG)108 96 S -4.438
-(rr)7.778 G -4.998<e1e1>4.438 G -5.558<8c8c>4.998 G -4.438(cc)5.558 G
--4.998(oo)4.438 G 7.776 -3.888(ss c)4.998 H(co)-.55 E(on)-4.998 E 2.5
-(nu)-5.558 G(un)-8.058 E 2.5(np)-5.558 G(po)-8.058 E(oc)-4.998 E(co)
--4.438 E 2.5(od)-4.998 G(de)-8.058 E 2.5(em)-4.438 G(ma)-10.828 E(at)
--4.998 E(te)-3.328 E(em)-4.438 E<6de1>-8.328 E<e174>-4.998 E(ti)-3.328 E
-(ic)-2.778 E(ca)-4.438 E(a)-4.998 E F0 .103(Cuando v)108 112.8 R .104(e\
-as la imagen, notar\341s que el eje horizontal tiene unas etiquetas mar\
-cando las 12:10, 12:20, 12:30,)-.15 F .712(12:40 y 12:50. Los otros dos\
- momentos \(12:00 y 13:00\) no se pueden mostrar bien por f)108 124.8 R
-.711(alta de datos, as\355)-.1 F .415
-(que el programa se los salta. El eje v)108 136.8 R .415
-(ertical muestra el rango de los v)-.15 F .415
-(alores que entramos. Introdujimos los)-.25 F 1.218(kil\363metros y lue)
-108 148.8 R 1.218(go di)-.15 F 1.218(vidimos entre 300 se)-.25 F 1.217
-(gundos, por lo que obtuvimos v)-.15 F 1.217(alores bastante bajos. P)
--.25 F 1.217(ara ser)-.15 F -.15(ex)108 160.8 S 1.422
-(actos, el primer v).15 F(alor)-.25 E 3.922(,1)-.4 G 3.922(2\()-3.922 G
-1.423(12357\25512345\), di)-3.922 F 1.423
-(vidido entre 300 da 0.04, lo que RRDtool muestra como)-.25 F -.74(``)
-108 172.8 S(40m').74 E .237(', o sea `)-.74 F(`40/1000')-.74 E .237
-('. \241La `)-.74 F(`m')-.74 E 1.717 -.74('' n)-.74 H 2.737(ot).74 G
-.237(iene nada que v)-2.737 F .237
-(er con metros, kil\363metros o mil\355metros!.)-.15 F(RRDtool)5.236 E(\
-no sabe nada de unidades, el s\363lo trabaja con n\372meros, no con met\
-ros.)108 184.8 Q 3.665(Donde nos equi)108 201.6 R -.2(vo)-.25 G 3.666(c\
-amos fue en que debimos medir en metros. As\355, \(12357000\25512345000\
-\)/300 =).2 F(12000/300 = 40.)108 213.6 Q -1.11(Va)108 230.4 S 1.755
-(mos a corre)1.11 F 1.754
-(girlo. Podr\355amos recrear la base de datos con los v)-.15 F 1.754
-(alores correctos, pero hay una forma)-.25 F
-(mejor: \241haciendo los c\341lculos mientras creamos el archi)108 242.4
-Q .4 -.2(vo g)-.25 H(if!).2 E/F2 10/Courier@0 SF
-(rrdtool graph speed2.gif)126 259.2 Q(\\)162 E
-(--start 920804400 --end 920808000)144 271.2 Q(\\)90 E
-(--vertical-label m/s)144 283.2 Q(\\)168 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 295.2 R
-(CDEF:realspeed=myspeed,1000,)144 307.2 Q/F3 10/Symbol SF(*)A F2(\\)114
-E(LINE2:realspeed#FF0000)144 319.2 Q F0 1.471(Cuando v)108 343.2 R 1.471
-(eas esta imagen, notar\341s que la `)-.15 F(`m')-.74 E 3.971('h)-.74 G
-3.971(ad)-3.971 G 1.472
-(esaparecido, y ahora tienes los resultados correctos.)-3.971 F(Adem\
-\341s hemos a\361adido una etiqueta a la imagen. Apartando esto, el arc\
-hi)108 355.2 Q -.2(vo)-.25 G/F4 9/Times-Roman@0 SF(GIF)2.7 E F0
-(es el mismo.)2.5 E .628(Las operaciones est\341n en la secci\363n del)
-108 372 R F4(CDEF)3.128 E F0 3.128(ye)3.128 G .628
-(st\341n escritas en Notaci\363n Polaca In)-3.128 F -.15(ve)-.4 G .627
-(rsa \(Re).15 F -.15(ve)-.25 G .627(rse Polish).15 F 3.497(Notation o `)
-108 384 R(`)-.74 E F4(RPN)A F0 -.74('')C 3.497(\). En palabras, dice: `)
-.74 F 3.497(`toma la fuente de datos myspeed y el numero 1000, y)-.74 F
-(multipl\355calos')108 396 Q 1.747('. No te molestes en meterte con)-.74
-F F4(RPN)4.247 E F0(toda)4.247 E 1.747(v\355a, la v)-.2 F 1.747
-(eremos con m\341s detalle m\341s adelante.)-.15 F 1.004
-(Adem\341s, puede que quieras leer mi tutorial sobre los)108 408 R F4
-(CDEF)3.504 E F0 3.504(ye)3.504 G 3.504(lt)-3.504 G 1.004
-(utorial de Ste)-3.504 F 1.304 -.15(ve R)-.25 H 1.004(ader sobre).15 F
-F4(RPN)3.504 E F0 3.504(,p)C(ero)-3.504 E(primero terminemos con este.)
-108 420 Q 2.307(\241Un momento! Si podemos multiplicar los v)108 436.8 R
-2.306
-(alores por mil, entonces, \241tambi\351n deber\355a ser posible el)-.25
-F(mostrar la v)108 448.8 Q
-(elocidad en kil\363metros por hora usando los mismos datos!)-.15 E -.15
-(Pa)108 465.6 S .051(ra cambiar el v).15 F .051
-(alor que medimos en metros por se)-.25 F .052
-(gundo, calculamos los metros por hora \(v)-.15 F(alor)-.25 E F3(*)2.552
-E F0 .052(3600\) y)2.552 F(di)108 477.6 Q .791
-(vidimos entre 1000 para sacar los kil\363metros por hora. T)-.25 F .79
-(odo junto hace v)-.8 F(alor)-.25 E F3(*)3.29 E F0 .79
-(\(3600/1000\) == v)3.29 F(alor)-.25 E F3(*)3.29 E F0(3.6.)108 489.6 Q
-2.843(Como en nuestra base de datos cometimos un error guardando los v)
-108 506.4 R 2.844(alores en kil\363metros, debemos)-.25 F(compensar por\
- ello, multiplicando por 100, por lo que al aplicar esta correcci\363n \
-nos queda v)108 518.4 Q(alor)-.25 E F3(*)2.5 E F0(3600.)2.5 E(Ahora v)
-108 535.2 Q
-(amos a crear este gif, agre\341ndole un poco m\341s de magia...)-.25 E
-F2(rrdtool graph speed3.gif)126 552 Q(\\)162 E
-(--start 920804400 --end 920808000)144 564 Q(\\)90 E
-(--vertical-label km/h)144 576 Q(\\)162 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 588 R
-("CDEF:kmh=myspeed,3600,)144 600 Q F3(*)A F2 138("\\)C 108
-(CDEF:fast=kmh,100,GT,kmh,0,IF \\)144 612 R 108
-(CDEF:good=kmh,100,GT,0,kmh,IF \\)144 624 R
-(HRULE:100#0000FF:"Maximum allowed")144 636 Q(\\)84 E
-(AREA:good#00FF00:"Good speed")144 648 Q(\\)114 E
-(AREA:fast#FF0000:"Too fast")144 660 Q F0 .634(Esto luce mucho mejor)108
-684 R 3.133(.L)-.55 G 3.133(av)-3.133 G .633(elocidad en)-3.283 F F4
-(KM/H)3.133 E F0 3.133(,ya)C .633(dem\341s tenemos una l\355nea e)-3.133
-F .633(xtra mostrando la v)-.15 F(elocidad)-.15 E .988
-(m\341xima permitida \(en el camino por donde conduzco\). T)108 696 R
-.988(ambi\351n le cambie los colores de la v)-.8 F .989(elocidad, y)-.15
-F(ahora paso de ser una l\355nea a un \341rea.)108 708 Q 145.68
-(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(6)189.84 E EP
-%%Page: 7 7
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F(Los c\341lculos son m\341s complejos ahora. P)
-108 96 Q(ara calcular la v)-.15 E(elocidad `)-.15 E(`aceptable')-.74 E
-(':)-.74 E/F1 10/Courier@0 SF
-(Verifica si la velocidad en kmh es mayor que 100)126 112.8 Q 6(\(k)30 G
-(mh,100 \) GT)-6 E(Si es as\355, retorna 0, si no, retorna la velocidad)
-126 124.8 Q(\(\(\( kmh,100 \) GT \), 0, kmh\) IF)24 E F0 -.15(Pa)108
-148.8 S(ra calcular la parte de v).15 E(elocidad `)-.15 E(`e)-.74 E
-(xcesi)-.15 E -.25(va)-.25 G -.74('').25 G(:).74 E F1
-(Verifica si la velocidad en kmh es mayor que 100)126 165.6 Q 6(\(k)30 G
-(mh,100 \) GT)-6 E(Si es as\355, retorna la velocidad, si no, retorna 0)
-126 177.6 Q(\(\(\( kmh,100\) GT \), kmh, 0\) IF)24 E/F2 10/Times-Bold@0
-SF -9.438(MM)108 212.4 S -4.998(aa)9.438 G -4.998(gg)4.998 G -2.778(ii)
-4.998 G 9.996 -4.998(aa gg)2.778 H -4.438(rr)4.998 G -4.998<e1e1>4.438 G
--5.558<8c8c>4.998 G -4.438(cc)5.558 G -4.998(aa)4.438 G F0 .593(Me gust\
-a creer que virtualmente no hay limites para lo que RRDtool puede hacer\
- con los datos. No v)108 229.2 R .792 -.1(oy a)-.2 H -.15(ex)108 241.2 S
-(plicarlo en detalle, pero mira este).15 E/F3 9/Times-Roman@0 SF(GIF:)
-2.5 E F1(rrdtool graph speed4.gif)126 258 Q(\\)162 E
-(--start 920804400 --end 920808000)144 270 Q(\\)90 E
-(--vertical-label km/h)144 282 Q(\\)162 E 78
-(DEF:myspeed=test.rrd:speed:AVERAGE \\)144 294 R
-("CDEF:kmh=myspeed,3600,)144 306 Q/F4 10/Symbol SF(*)A F1 138("\\)C 108
-(CDEF:fast=kmh,100,GT,100,0,IF \\)144 318 R 72
-(CDEF:over=kmh,100,GT,kmh,100,-,0,IF \\)144 330 R 108
-(CDEF:good=kmh,100,GT,0,kmh,IF \\)144 342 R
-(HRULE:100#0000FF:"Maximum allowed")144 354 Q(\\)84 E
-(AREA:good#00FF00:"Good speed")144 366 Q(\\)114 E
-(AREA:fast#550000:"Too fast")144 378 Q(\\)126 E
-(STACK:over#FF0000:"Over speed")144 390 Q F0 -1.11(Va)108 414 S
-(mos a crear una p\341gina)1.11 E F3(HTML)2.5 E F0(simple para v)2.5 E
-(er los tres archi)-.15 E -.2(vo)-.25 G(s).2 E F3(GIF:)2.5 E F1
-(<HTML><HEAD><TITLE>Velocidad</TITLE></HEAD><BODY>)126 430.8 Q
-(<IMG src="speed2.gif" alt="Speed in meters per second">)126 442.8 Q
-(<BR>)126 454.8 Q
-(<IMG src="speed3.gif" alt="Speed in kilometers per hour">)126 466.8 Q
-(<BR>)126 478.8 Q(<IMG src="speed4.gif" alt="Traveled too fast?">)126
-490.8 Q(</BODY></HTML>)126 502.8 Q F0(Gu\341rdalo como `)108 526.8 Q
-(`speed.html')-.74 E 2.5('oa)-.74 G(lgo parecido, y e)-2.5 E
-(xam\355nalo con un na)-.15 E -2.25 -.15(veg a)-.2 H(dor).15 E(.)-.55 E
-.556(Ahora, todo lo que tienes que hacer es medir los datos re)108 543.6
-R .557(gularmente y actualizar la base de datos. Cuando)-.15 F .37
-(quieras v)108 555.6 R .37(erlos, vuelv)-.15 F 2.87(eac)-.15 G .37
-(rear los archi)-2.87 F -.2(vo)-.25 G(s).2 E F3(GIF)2.87 E F0 2.87(ya)
-2.87 G(se)-2.87 E .369(g\372rate que se car)-.15 F .369(guen de nue)-.18
-F .769 -.2(vo e)-.25 H 2.869(nt).2 G 2.869(un)-2.869 G -2.25 -.2(av e g)
--2.869 H .369(ador \(Nota:).15 F 1.563(presionar el bot\363n de `)108
-567.6 R(`refrescar')-.74 E 4.063('p)-.74 G 1.563
-(uede no ser su\214ciente; en particular)-4.063 F 4.064(,N)-.4 G 1.564
-(etscape tiene un problema al)-4.064 F(respecto, por lo que necesitaras\
- darle al bot\363n mientras presionas la tecla de may\372sculas.)108
-579.6 Q F2 -7.218(AA)108 602.4 S -4.438(cc)7.218 G -3.328(tt)4.438 G
--5.558(uu)3.328 G -4.998(aa)5.558 G -2.778(ll)4.998 G -2.778(ii)2.778 G
--4.438(zz)2.778 G -4.998(aa)4.438 G -4.438(cc)4.998 G -2.778(ii)4.438 G
--4.998(oo)2.778 G -5.558(nn)4.998 G -4.438(ee)5.558 G 7.776 -3.888(ss d)
-4.438 H(de)-1.67 E 2.5(ev)-4.438 G -.1(ve)-7.498 G(er)-4.338 E(rd)-4.438
-E(da)-5.558 E(ad)-4.998 E(d)-5.558 E F0 5.434 -1(Ya h)108 619.2 T 3.434
-(emos usado el comando `)1 F(`update')-.74 E 3.433
-('; vimos que recibia uno o m\341s par\341metros en el formato:)-.74 F
--.74(``)108 631.2 S(<fecha>:<v).74 E(alor>')-.25 E .912('. P)-.74 F .912
-(ara f)-.15 F .913
-(acilitarte las cosas, puedes obtener la fecha actual colocando `)-.1 F
-(`N')-.74 E 3.413('e)-.74 G 3.413(nl)-3.413 G 3.413(af)-3.413 G(echa.)
--3.413 E -.8(Ta)108 643.2 S(mbi\351n podr\355as usar la funci\363n `).8
-E(`time')-.74 E 2.5('d)-.74 G 2.5(eP)-2.5 G
-(erl para obtenerla. El ejemplo m\341s corto de todo el tutorial :\))
--2.5 E F1(perl -e 'print time, "\\n" ')126 660 Q F0 1.161
-(Ahora, la forma de poner a correr un programa a interv)108 684 R 1.161
-(alos re)-.25 F 1.161(gulares de tiempo depende del sistema de)-.15 F
-(operaci\363n. La actualizaci\363n, en pseudo-c\363digo, ser\355a:)108
-696 Q 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(7)189.84 E EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF
-(Toma el valor, col\363calo en la variable "$speed")126 96 Q
-(rrdtool update speed.rrd N:$speed)126 108 Q F0(\(Pero no lo hag)108 132
-Q(as sobre nuestra base de datos de pruebas, que a\372n la v)-.05 E
-(amos a usar en otros ejemplos.)-.25 E 1.42(Eso es todo. Ejecutando est\
-e script cada 5 minutos, lo \372nico que tienes que hacer para v)108
-148.8 R 1.42(er los gr\341\214cos)-.15 F .436(actuales es correr los ej\
-emplos anteriores, que tambi\351n puedes poner en un script. Lue)108
-160.8 R .436(go de correrlo, basta)-.15 F(con car)108 172.8 Q -.05(ga)
--.18 G 2.5(ri).05 G(nde)-2.5 E(x.html)-.15 E/F2 10/Times-Bold@0 SF
--7.218(UU)108 195.6 S -5.558(nn)7.218 G -4.998(aa)5.558 G 7.776 -3.888
-(ss p)4.998 H(pa)-1.67 E(al)-4.998 E(la)-2.778 E(ab)-4.998 E(br)-5.558 E
-(ra)-4.438 E(as)-4.998 E 2.5(ss)-3.888 G(so)-6.388 E(ob)-4.998 E(br)
--5.558 E -.18(re)-4.438 G(e)-4.258 E/F3 9/Times-Bold@0 SF -5.002(SS)2.5
-G -6.496(NN)5.002 G -8.494(MM)6.496 G -5.497(PP)8.494 G F0 .991(Me imag\
-ino que muy pocas personas ser\341n capaces de obtener en su ordenador \
-datos reales de su coche)108 212.4 R 1.248(cada 5 minutos; los dem\341s\
- nos tendremos que conformar con alg\372n otro contador)108 224.4 R
-3.748(.P)-.55 G 1.248(uedes, por ejemplo,)-3.748 F .057(medir la cantid\
-ad de p\341ginas que ha hecho una impresora, cuanto caf\351 has hecho c\
-on la cafetera, el medidor)108 236.4 R .695(del consumo de electricidad\
-, o cualquier otra cosa. Cualquier contador incremental puede monitoriz\
-arse y)108 248.4 R .056
-(gra\214carse con lo que has aprendido hasta ahora. M\341s adelante, v)
-108 260.4 R .057(eremos tambi\351n como monitorizar otro tipo)-.15 F
-1.814(de v)108 272.4 R 1.814
-(alores, como la temperatura. La mayor\355a usaremos alguna v)-.25 F
-1.814(ez un contador que lle)-.15 F 2.113 -.15(ve l)-.25 H 4.313(ac).15
-G 1.813(uenta de)-4.313 F 3.03
-(cuantos octetos \(bytes\) a transferido un dispositi)108 284.4 R 3.43
--.2(vo d)-.25 H 5.53(er).2 G 3.03(ed, as\355 que v)-5.53 F 3.03
-(amos a v)-.25 F 3.03(er como hacer esto.)-.15 F 1.999(Empezaremos desc\
-ribiendo como recoger los datos. Hay quien dir\341 que hay herramientas\
- que pueden)108 296.4 R .688(recoger estos datos por ti. \241Es cierto!\
- Pero, creo que es importante darse cuenta de que no son necesarias.)108
-308.4 R(Cuando tienes que determinar porqu\351 algo no funciona, necesi\
-tas saber c\363mo funciona en primer lug)108 320.4 Q(ar)-.05 E(.)-.55 E
-.704(Una herramienta que mencionamos bre)108 337.2 R -.15(ve)-.25 G .704
-(mente al principio del documento es).15 F/F4 9/Times-Roman@0 SF(SNMP)
-3.204 E F0(.)A F4(SNMP)3.204 E F0 .704(es una forma)3.204 F 3.03
-(de comunicarse con tus equipos.)108 349.2 R 3.03
-(La herramienta particular que v)8.03 F 3.23 -.1(oy a u)-.2 H 3.03
-(sar m\341s adelante se llama).1 F -.74(``)108 361.2 S(snmpget').74 E
-(', y funciona as\355:)-.74 E F1(snmpget dispositivo clave OID)126 378 Q
-F0 .619(En `)108 402 R(`dispositi)-.74 E -.2(vo)-.25 G 2.098 -.74('' c)
-.2 H .618(olocas el nombre o direcci\363n).74 F F4(IP)3.118 E F0 .618
-(del equipo a monitorizar)3.118 F 3.118(.E)-.55 G 3.118(nc)-3.118 G(la)
--3.118 E -.15(ve)-.2 G 3.118(,c).15 G .618(olocas la `)-3.118 F(`cadena)
--.74 E 3.147(de caracteres de la comunidad de lectura')108 414 R 3.147
-(', como se le denomina en el mundillo)-.74 F F4(SNMP)5.647 E F0 8.147
-(.M)C(uchos)-8.147 E(dispositi)108 426 Q -.2(vo)-.25 G 3.015(sa).2 G
-.515(ceptar\341n `)-3.015 F(`public')-.74 E 3.015('c)-.74 G .514
-(omo cadena por defecto, pero por razones de pri)-3.015 F -.25(va)-.25 G
-.514(cidad y se).25 F .514(guridad esta)-.15 F(cla)108 438 Q .3 -.15
-(ve p)-.2 H(uede estar deshabilitada. Consulta la documentaci\363n corr\
-espondiente al dispositi).15 E .4 -.2(vo o p)-.25 H(rograma.).2 E(Lue)
-108 454.8 Q(go esta el tercer par\341metro, llamado)-.15 E F4(OID)2.5 E
-F0(\(Object IDenti\214er)2.5 E 2.5(,i)-.4 G(denti\214cador de objeto\).)
--2.5 E 1.672(Al principio, cuando empiezas a aprender sobre)108 471.6 R
-F4(SNMP)4.172 E F0 4.172(,p)C 1.672
-(arece muy confuso. No lo es tanto cuando le)-4.172 F .306
-(hechas una ojeada a los `)108 483.6 R(`)-.74 E F4(MIB)A F0 1.785 -.74
-('' \()D .305
-(Manager Information Base, o Base de Informaci\363n Administrati).74 F
--.25(va)-.25 G .305(\). Es un).25 F .464(\341rbol in)108 495.6 R -.15
-(ve)-.4 G .465(rtido que describe los datos, empezando en un nodo ra\
-\355z desde el que parten v).15 F .465(arias ramas.)-.25 F(Cada)5.465 E
-1.64(rama termina en otro nodo y puede abrir nue)108 507.6 R -.25(va)
--.25 G 4.139(ss).25 G 1.639
-(ub-ramas. Cada rama tiene un nombre, y forman un)-4.139 F .238
-(camino que nos lle)108 519.6 R .738 -.25(va h)-.25 H .238
-(asta el fondo del \341rbol. En este ejemplo, las ramas que v).25 F .238
-(amos a tomar se llaman iso,)-.25 F(or)108 531.6 Q 1.105
-(g, dod, internet, mgmt y mib-2. T)-.18 F 1.104
-(ambi\351n pueden accederse por su n\372mero relati)-.8 F -.2(vo)-.25 G
-3.604(;e).2 G 3.604(ne)-3.604 G 1.104(ste caso, estos)-3.604 F
-(n\372meros son 1, 3, 6, 1, 2 y 1:)108 543.6 Q F1
-(iso.org.dod.internet.mgmt.mib-2 \(1.3.6.1.2.1\))126 560.4 Q F0 1.493
-(En algunos programas se usa un punto al iniciar el)108 584.4 R F4(OID)
-3.994 E F0 3.994(.E)C 1.494
-(sto puede ser confuso; no hay ning\372n punto)-3.994 F .131
-(inicial en la especi\214caci\363n de los)108 596.4 R F4(OID)2.631 E F0
-.131(... sin embar)B .13
-(go, algunos programas usan por defecto un pre\214jo inicial.)-.18 F
--.15(Pa)108 608.4 S 1.144(ra indicar la diferencia entre los).15 F F4
-(OID)3.644 E F0(abre)3.644 E 1.145
-(viados \(o sea, a los que se le pondr\341 el pre\214jo inicial\) y los)
--.25 F 1.239(completos, estos programas necesitan que los)108 620.4 R F4
-(OID)3.738 E F0 1.238(completos empiecen por un punto. P)3.738 F 1.238
-(ara empeorar las)-.15 F(cosas, se usan v)108 632.4 Q
-(arios pre\214jos distintos...)-.25 E 1.927(De acuerdo, sig)108 649.2 R
-1.928(amos con el inicio de nuestro)-.05 F F4(OID:)4.428 E F0 1.928
-(ten\355amos 1.3.6.1.2.1 . Ahora, nos interesa la rama)4.428 F -.74(``)
-108 661.2 S(interf).74 E(aces')-.1 E(', que tiene el n\372mero dos \(o \
-sea, 1.3.6.1.2.1.2, o 1.3.6.1.2.1.interf)-.74 E(aces\).)-.1 E .303
-(Lo primero es hacernos con un programa)108 678 R F4(SNMP)2.802 E F0
-2.802(.B)C .302
-(usca alg\372n paquete pre-compilado para tu plataforma, si)-2.802 F
-1.531(no, puedes b)108 690 R 1.531(uscar el c\363digo fuente y compilar\
-lo tu mismo. En Internet encontrar\341s muchos programas,)-.2 F 1.521
-(b\372scalos con un motor de b\372squeda o como pre\214eras.)108 702 R
-1.521(Mi sugerencia es que b)6.521 F 1.52(usques el paquete)-.2 F F4
-(CMU-)4.02 E(SNMP)108 714 Q F0 2.5(,q)C(ue esta bastante difundido.)-2.5
-E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(8)189.84 E EP
-%%Page: 9 9
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F 1.582(Asumamos que ya tienes el programa. Empe\
-cemos por tomar ciertos datos que est\341n disponibles en la)108 96 R
-(mayor\355a de los sistemas. Recuerda: hay un nombre abre)108 108 Q
-(viado para la parte del \341rbol que m\341s nos interesa.)-.25 E -.02
--1.29(Vo y)108 124.8 T 3.816(au)5.106 G 1.316(sar la v)-3.816 F 1.316
-(ersi\363n corta, ya que creo que este documento ya es lo bastante lar)
--.15 F 1.315(go. Si no te funciona,)-.18 F 1.301
-(a\361\341dele el pre\214jo .1.3.6.1.2.1 y prueba de nue)108 136.8 R -.2
-(vo)-.25 G 3.802(.Op).2 G 1.302(rueba le)-3.802 F 1.302
-(yendo el manual; s\341ltate las partes que no)-.15 F
-(entiendas a\372n, y b)108 148.8 Q
-(usca las secciones que hablan de como arrancar y usar el programa.)-.2
-E/F1 10/Courier@0 SF(snmpget myrouter public system.sysdescr.0)126 165.6
-Q F0 .773(El dispositi)108 189.6 R 1.173 -.2(vo d)-.25 H .772
-(eber\341 contestarte con una descripci\363n, probablemente v).2 F .772
-(ac\355a, de s\355 mismo. Si no consigues)-.25 F 2.522
-(una respuesta v\341lida, prueba con otra `)108 201.6 R(`cla)-.74 E -.15
-(ve)-.2 G 4.003 -.74('' u o).15 H 2.523(tro dispositi).74 F -.2(vo)-.25
-G 5.023(;n).2 G 5.023(op)-5.023 G 2.523(odemos se)-5.023 F 2.523
-(guir hasta tener un)-.15 F(resultado.)108 213.6 Q F1
-(snmpget myrouter public interfaces.ifnumber.0)126 230.4 Q F0 2.437(Con\
- suerte, usando este comando obtendr\341s un n\372mero como resultado: \
-el n\372mero de interf)108 254.4 R 2.437(aces del)-.1 F(dispositi)108
-266.4 Q -.2(vo)-.25 G 2.5(.S).2 G 2.5(ie)-2.5 G 2.5(sa)-2.5 G(s\355, se)
--2.5 E(guiremos adelante con otro programa, llamado `)-.15 E(`snmpw)-.74
-E(alk')-.1 E(')-.74 E F1
-(snmpwalk myrouter public interfaces.iftable.ifentry.ifdescr)126 283.2 Q
-F0(Si obtienes una lista de interf)108 307.2 Q(aces, ya casi hemos lle)
--.1 E -.05(ga)-.15 G(do. Aqu\355 tienes un ejemplo del resultado:).05 E
-F1([user@host /home/alex]$ snmpwalk cisco public 2.2.1.2)126 324 Q
-(interfaces.ifTable.ifEntry.ifDescr.1 = "BRI0: B-Channel 1")126 336 Q
-(interfaces.ifTable.ifEntry.ifDescr.2 = "BRI0: B-Channel 2")126 348 Q
-(interfaces.ifTable.ifEntry.ifDescr.3 = "BRI0" Hex: 42 52 49 30)126 360
-Q(interfaces.ifTable.ifEntry.ifDescr.4 = "Ethernet0")126 372 Q
-(interfaces.ifTable.ifEntry.ifDescr.5 = "Loopback0")126 384 Q F0
-(En este equipo)108 408 Q/F2 9/Times-Roman@0 SF(CISCO)2.5 E F0 2.5(,q)C
-(uiero monitorizar la interf)-2.5 E(az `)-.1 E(`Ethernet0')-.74 E 2.5
-('. V)-.74 F(iendo que es la cuarta, pruebo con:)-.6 E F1
-([user@host /home/alex]$ snmpget cisco public 2.2.1.10.4 2.2.1.16.4)126
-424.8 Q(interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126)126 448.8 Q
-(interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519)126 460.8 Q F0
-(Entonces, tengo 2 OIDs que monitorizar)108 484.8 Q 2.5(,ys)-.4 G
-(on \(en el formato lar)-2.5 E(go, ahora\):)-.18 E F1
-(1.3.6.1.2.1.2.2.1.10)126 501.6 Q(y)156 525.6 Q(1.3.6.1.2.1.2.2.1.16)126
-549.6 Q F0 2.5(,a)108 573.6 S(mbas con el n\372mero de interf)-2.5 E
-(az de 4)-.1 E .183(No te eng)108 590.4 R .183(a\361es, esto no lo logr\
-e yo al primer intento. Me tom\363 un tiempo entender lo que signi\214c\
-aban todos)-.05 F .9
-(estos n\372meros; ayuda cuando se traducen en un te)108 602.4 R .899
-(xto descripti)-.15 F -.2(vo)-.25 G .899(... por lo menos, cuando oig).2
-F .899(as hablar de)-.05 F .527(MIBs y OIDs, ahora sabr\341s de qu\351 \
-se trata. No te olvides del n\372mero de interf)108 614.4 R .527
-(az \(0 si el v)-.1 F .527(alor no depende)-.25 F(de una interf)108
-626.4 Q(az\), y prueba con snmpw)-.1 E
-(alk si no obtienes una respuesta clara con snmpget.)-.1 E .468
-(Si entendiste todo esto, y obtienes resultados del dispositi)108 643.2
-R .868 -.2(vo c)-.25 H .468
-(on el que est\341s probando, sigue adelante con).2 F
-(el tutorial. Si no, vuelv)108 655.2 Q 2.5(eal)-.15 G
-(eer esta secci\363n; es importante)-2.5 E 145.68(2001-02-11 Last)72 768
-R(change: 1.0.28)2.5 E(9)189.84 E EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Times-Bold@0 SF -7.218(UU)108 96 S 11.116
--5.558(nn e)7.218 H(ej)1.12 E(je)-3.328 E(em)-4.438 E(mp)-8.328 E(pl)
--5.558 E(lo)-2.778 E 2.5(or)-4.998 G -.18(re)-6.938 G(ea)-4.258 E(al)
--4.998 E(l)-2.778 E F0 2.088(Ok, empecemos con la di)108 112.8 R -.15
-(ve)-.25 G 2.088(rsi\363n. Primero, crea una base de datos nue).15 F
--.25(va)-.25 G 4.588(.V).25 G 2.089(amos a guardar en ella 2)-5.698 F
-.568(contadores, `)108 124.8 R(`input')-.74 E 3.068('y`)-.74 G(`ouput')
--3.808 E .568('. Los datos los v)-.74 F .568(amos a guardar en archi)
--.25 F -.2(vo)-.25 G 3.068(sq).2 G .568(ue los promediar\341n, tomando)
--3.068 F .617(grupos de 1, 6, 24 o 288 muestras. T)108 136.8 R .617
-(ambi\351n archi)-.8 F -.25(va)-.25 G .617(remos los v).25 F .617
-(alores m\341ximos. Lo e)-.25 F .617(xplicaremos con m\341s)-.15 F
-(detalle despu\351s. El interv)108 148.8 Q
-(alo de tiempo entre las muestras ser\341 de 300 se)-.25 E
-(gundos \(5 minutos\).)-.15 E/F2 10/Courier@0 SF 6(1m)114 165.6 S
-(uestra "promediada" sigue siendo 1 muestra cada 5 minutos)-6 E 6(6m)114
-177.6 S(uestras promediadas son un promedio de cada 30 minutos)-6 E
-(24 muestras promediadas son un promedio de cada 2 horas)114 189.6 Q
-(288 muestras promediadas son un promedio de cada d\355a)114 201.6 Q F0
--1.11(Va)108 225.6 S(mos a tratar de ser compatibles con)1.11 E/F3 9
-/Times-Roman@0 SF(MR)2.5 E(TG)-.54 E F0 2.5(,q)C
-(ue guarda m\341s o menos esta cantidad de datos:)-2.5 E F2
-(600 muestras de 5 minutos:)114 242.4 Q 6(2d)60 G(\355as y 2 horas)-6 E
-(600 promedios de 30 minutos:)114 254.4 Q(12.5 d\355as)48 E
-(600 promedios de 2 horas:)114 266.4 Q(50 d\355as)66 E
-(600 promedios de 1 d\355a:)114 278.4 Q(732 d\355as)78 E F0 .769(Uniend\
-o todos estos rangos tenemos que en total guardamos datos de unos 797 d\
-\355as. RRDtool guarda los)108 302.4 R .624
-(datos de una forma distinta a)108 314.4 R F3(MR)3.124 E(TG)-.54 E F0
-3.124(;n)C 3.124(oe)-3.124 G .624(mpieza el archi)-3.124 F 1.024 -.2
-(vo `)-.25 H(`semanal')-.54 E 3.124('d)-.74 G .624(onde acaba el `)
--3.124 F(`diario')-.74 E .624(', sino que)-.74 F .202(ambos archi)108
-326.4 R -.2(vo)-.25 G 2.702(sc).2 G .201(ontienen la informaci\363n m\
-\341s reciente, \241por lo que con RRDtool archi)-2.702 F -.25(va)-.25 G
-.201(mos m\341s datos que).25 F(con)108 338.4 Q F3(MR)2.5 E(TG)-.54 E F0
-(!)A(Necesitaremos:)108 355.2 Q F2(600 muestras de 5 minutos)114 372 Q
-(\(2 d\355as y 2 horas\))24 E(700 entradas de 30 minutos)114 384 Q
-(\(2 d\355as y 2 horas, m\341s 12.5 d\355as\))18 E
-(775 entradas de 2 horas)114 396 Q(\(lo anterior + 50 d\355as\))36 E
-(797 entradas de 1 d\355a)114 408 Q
-(\(lo anterior + 732 d\355as, redondeando\))48 E
-(rrdtool create myrouter.rrd)126 432 Q(\\)54 E 12
-(DS:input:COUNTER:600:U:U \\)180 444 R 6(DS:output:COUNTER:600:U:U \\)
-180 456 R 30(RRA:AVERAGE:0.5:1:600 \\)180 468 R 30
-(RRA:AVERAGE:0.5:6:700 \\)180 480 R 24(RRA:AVERAGE:0.5:24:775 \\)180 492
-R 18(RRA:AVERAGE:0.5:288:797 \\)180 504 R 54(RRA:MAX:0.5:1:600 \\)180
-516 R 54(RRA:MAX:0.5:6:700 \\)180 528 R 48(RRA:MAX:0.5:24:775 \\)180 540
-R(RRA:MAX:0.5:288:797)180 552 Q F0 .269(Lo siguiente es recoger los dat\
-os y guardarlos, como en el ejemplo siguiente. Esta parcialmente en pse\
-udo-)108 576 R(c\363digo, por lo que tendr\341s que b)108 588 Q(uscar e)
--.2 E(xactamente como hacerlo funcionar en tu sistema operati)-.15 E -.2
-(vo)-.25 G(.).2 E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E
-(10)184.84 E EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF
-(mientras no sea el fin del universo)126 96 Q(hacer)126 108 Q
-(tomar el resultado de)144 120 Q(snmpget router community 2.2.1.10.4)168
-132 Q(en la variable $in)144 144 Q(tomar el resultado de)144 156 Q
-(snmpget router community 2.2.1.16.4)168 168 Q(en la variable $out)144
-180 Q(rrdtool update myrouter.rrd N:$in:$out)144 192 Q
-(esperar 5 minutos)144 204 Q(hecho)126 216 Q F0(Lue)108 240 Q
-(go, tras recoger datos por un d\355a, crea una imagen, usando:)-.15 E
-F1(rrdtool graph myrouter-day.gif --start -86400 \\)126 256.8 Q
-(DEF:inoctets=myrouter.rrd:input:AVERAGE \\)180 268.8 Q
-(DEF:outoctets=myrouter.rrd:output:AVERAGE \\)180 280.8 Q
-(AREA:inoctets#00FF00:"In traffic" \\)180 292.8 Q
-(LINE1:outoctets#0000FF:"Out traffic")180 304.8 Q F0 1.541(Este comando\
- debe producir un gr\341\214co del tr\341\214co del d\355a. Un d\355a s\
-on 24 horas, de 60 minutos, de 60)108 328.8 R(se)108 340.8 Q .523
-(gundos: 24)-.15 F/F2 10/Symbol SF(*)A F0(60)A F2(*)A F0 .524
-(60=86400, o sea que empezamos a `)B(`ahora')-.74 E 3.024('m)-.74 G .524
-(enos 86400 se)-3.024 F .524(gundos. De\214nimos \(con los)-.15 F .273
-(DEFs\) `)108 352.8 R(`inoctets')-.74 E 2.773('y`)-.74 G(`outoctets')
--3.513 E 2.773('c)-.74 G .273(omo los v)-2.773 F .273
-(alores promedio de la base da datos myrouter)-.25 F .272(.rrd, dib)-.55
-F .272(ujando un)-.2 F(\341rea para el tr\341\214co de entrada y una l\
-\355nea para el tr\341\214co de salida.)108 364.8 Q 2.098(Mira la image\
-n y sigue recogiendo datos por unos cuantos d\355as. Si lo deseas, pued\
-es probar con los)108 381.6 R
-(ejemplos de la base de datos de pruebas y v)108 393.6 Q
-(er si puedes hacer trabajar las di)-.15 E -.15(ve)-.25 G
-(rsas opciones y operaciones.).15 E(Sugerencia:)108 410.4 Q 1.937
-(Haz un gr\341\214co que muestre el tr\341\214co en bytes por se)108
-427.2 R 1.937(gundo y en bits por se)-.15 F 1.937
-(gundo. Colorea el tr\341\214co)-.15 F
-(Ethernet rojo si sobrepasa los cuatro me)108 439.2 Q -.05(ga)-.15 G
-(bits por se).05 E(gundo.)-.15 E/F3 10/Times-Bold@0 SF -6.108(FF)108 462
-S -5.558(uu)6.108 G -5.558(nn)5.558 G -4.438(cc)5.558 G -2.778(ii)4.438
-G -4.998(oo)2.778 G -5.558(nn)4.998 G -4.438(ee)5.558 G 7.776 -3.888
-(ss d)4.438 H(de)-1.67 E 2.5(ec)-4.438 G(co)-6.938 E(on)-4.998 E(ns)
--5.558 E(so)-3.888 E(ol)-4.998 E(li)-2.778 E(id)-2.778 E(da)-5.558 E(ac)
--4.998 E(ci)-4.438 E<69f3>-2.778 E<f36e>-4.998 E(n)-5.558 E F0 2.295(Un\
-os cuantos p\341rrafos atr\341s habl\341bamos sobre la posibilidad de g\
-uardar el v)108 478.8 R 2.296(alor m\341ximo en v)-.25 F 2.296(ez del)
--.15 F(promedio. Profundicemos un poco en este tema.)108 490.8 Q .307
-(Recordemos lo que habl\341bamos sobre la v)108 507.6 R .307
-(elocidad de un coche.)-.15 F(Supong)5.307 E .306
-(amos que manejamos a 144)-.05 F/F4 9/Times-Roman@0 SF(KM/H)2.806 E F0
-.483(durante 5 minutos y lue)108 519.6 R .484(go nos detiene la polic\
-\355a durante unos 25 minutos. Al \214nalizar el re)-.15 F -.05(ga)-.15
-G .484(\361o, tomamos).05 F .979(nuestro port\341til y creamos una imag\
-en desde nuestra base de datos. Si visualizamos la se)108 531.6 R(gunda)
--.15 E F4(RRA)3.478 E F0(que)3.478 E .372
-(creamos, tendremos el promedio de 6 muestreos. Las v)108 543.6 R .372
-(elocidades re)-.15 F .372(gistradas serian 144+0+0+0+0+0=144,)-.15 F
-.56(lo que en promedio nos da una v)108 555.6 R .56(elocidad de 24)-.15
-F F4(KM/H)3.06 E F0 .559
-(., con lo que nos igual nos pondr\355an una multa, s\363lo)B
-(que no por e)108 567.6 Q(xceso de v)-.15 E(elocidad.)-.15 E(Ob)108
-584.4 Q .571(viamente, en este caso, no deber\355amos tomar en cuenta l\
-os promedios. Estos son \372tiles en v)-.15 F .571(arios casos.)-.25 F
-.552(Por ejemplo, si queremos v)108 596.4 R .552(er cuantos)-.15 F F4
-(KM)3.052 E F0 .552(hemos viajado, este ser\355a el gr\341\214co m\341s\
- indicado. Pero por otro)3.052 F(lado, para v)108 608.4 Q(er la v)-.15 E
-(elocidad ha la que hemos viajado, los v)-.15 E
-(alores m\341ximos son m\341s adecuados.)-.25 E .159(Es lo mismo con lo\
-s datos que recogemos. Si quieres saber la cantidad total, mira los pro\
-medios. Si quieres)108 625.2 R -.15(ve)108 637.2 S 4.087(rl).15 G 4.087
-(av)-4.087 G 1.587(elocidad, mira los m\341ximos. Con el tiempo, ambas \
-cantidades se separan cada v)-4.237 F 1.586(ez m\341s.)-.15 F 1.586
-(En la)6.586 F .536
-(\372ltima base de datos que creamos, hab\355a dos archi)108 649.2 R -.2
-(vo)-.25 G 3.037(sq).2 G .537
-(ue guardaban los datos de cada d\355a. El archi)-3.037 F .937 -.2(vo q)
--.25 H(ue).2 E .348(guarda los promedios mostrar\341 v)108 661.2 R .348
-(alores bajos, mientras que el de m\341ximos mostrar\341 v)-.25 F .348
-(alores m\341s altos. P)-.25 F(ara)-.15 E .44(mi coche, mostrar\355a v)
-108 673.2 R .44(alores promedio de 96/24=4)-.25 F F4(KM/H)2.94 E F0 .44
-(\(viajo unos 96 kil\363metros por d\355a\), y m\341ximos de)2.94 F
-(1220)108 685.2 Q F4(KM/H)2.5 E F0(\(la v)2.5 E
-(elocidad m\341xima que alcanzo cada d\355a\))-.15 E 1.285(Como v)108
-702 R 1.285(es, una gran diferencia. No mires el se)-.15 F 1.284
-(gundo gr\341\214co para estimar la distancia que recorro, ni al)-.15 F
-.64(primero para estimar la v)108 714 R .64(elocidad a la que v)-.15 F
--.1(oy)-.2 G 3.14(.E)-.55 G .64
-(sto s\363lo funciona con muestras muy cercanas, pero no si)-3.14 F
-(sacas promedios.)108 726 Q 145.68(2001-02-11 Last)72 774 R
-(change: 1.0.28)2.5 E(11)184.84 E EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F .976(Algunas v)108 96 R .976
-(eces, hago un viaje lar)-.15 F .975
-(go. Si hago un recorrido por Europa, conduciendo por unas 12 horas, el)
--.18 F .159(primer gr\341\214co subir\341 a unos 60)108 108 R/F1 9
-/Times-Roman@0 SF(KM/H)2.659 E F0 2.659(.E)C 2.659(ls)-2.659 G -.15(eg)
--2.659 G .159(undo mostrar\341 unos 180).15 F F1(KM/H)2.659 E F0 2.659
-(.E)C .159(sto signi\214ca que recorr\355 unos)-2.659 F(60)108 120 Q F1
-(KM/H)2.805 E F0 .304(por 24 horas = 1440)2.805 F F1(KM)2.804 E F0 2.804
-(.M)C .304(uestra adem\341s que fui a una v)-2.804 F .304
-(elocidad promedio mayor a la normal y)-.15 F 2.8(au)108 132 S 2.8(nm)
--2.8 G .3(\341ximo de 180)-2.8 F F1(KM/H)2.8 E F0 2.8<2ca1>C .3
-(no que fui 8 horas a una v)-2.8 F .3(elocidad \214ja de 180)-.15 F F1
-(KM/H)2.8 E F0 2.8(!E)C .3(ste es un ejemplo real:)-2.8 F 1.877
-(tengo que se)108 144 R 1.877
-(guir la corriente en las autopistas de Alemania, detenerme por g)-.15 F
-1.876(asolina y caf\351 de v)-.05 F 1.876(ez en)-.15 F .84(cuando, mane\
-jar m\341s lentamente por Austria y Holanda, e ir con cuidado en las mo\
-nta\361as y las villas. Si)108 156 R 2.666(vi\351ramos los gr\341\214co\
-s de los promedios de cada 5 minutos, la imagen ser\355a completamente \
-distinta;)108 168 R -.15(ve)108 180 S .682(r\355amos los mismos v).15 F
-.683(alores de promedio y de m\341xima. \(suponiendo que las mediciones\
- fueran cada 300)-.25 F(se)108 192 Q 2.216(gundos\). Se podr\355a v)-.15
-F 2.216(er cuando par\351, cuando iba en primera, cuando iba por las au\
-topistas, etc. La)-.15 F .086(granularidad de los datos es m\341s alta,\
- por lo que se tiene m\341s informaci\363n. Sin embar)108 204 R .086
-(go, esto nos lle)-.18 F .586 -.25(va u)-.25 H(nas).25 E .716(12 muestr\
-as por hora, o 288 al d\355a, lo cual es mucho para guardar por un peri\
-odo de tiempo lar)108 216 R .715(go. Por lo)-.18 F 1.705
-(tanto, sacamos el promedio, guardando e)108 228 R -.15(ve)-.25 G 1.705
-(ntualmente un solo v).15 F 1.705(alor por d\355a.)-.25 F 1.706
-(Con este \372nico v)6.706 F(alor)-.25 E 4.206(,n)-.4 G(o)-4.206 E
-(podemos v)108 240 Q(er mucho.)-.15 E 1.145
-(Es importante comprender lo que e)108 256.8 R 1.145
-(xpuesto en estos \372ltimos p\341rrafos.)-.15 F 1.145
-(Unos ejes y unas l\355neas no tienen)6.145 F 2.962(ning\372n v)108
-268.8 R 2.963(alor por si mismos; hay que saber que representan e inter\
-pretar correctamente los v)-.25 F(alores)-.25 E
-(obtenidos. Sean cuales sean los datos, esto siempre ser\341 cierto.)108
-280.8 Q .002(El mayor error que puedes cometer es usar los datos recogi\
-dos para algo para lo cual no sirv)108 297.6 R .002(en. En ese caso,)
--.15 F(seria hasta mejor no tener gr\341\214co alguno.)108 309.6 Q/F2 10
-/Times-Bold@0 SF -7.218(RR)108 332.4 S -4.438(ee)7.218 G -5.558(pp)4.438
-G -4.998(aa)5.558 G -3.888(ss)4.998 G -4.438(ee)3.888 G -8.328(mm)4.438
-G -4.998(oo)8.328 G 7.776 -3.888(ss l)4.998 H(lo)1.11 E 2.5(oq)-4.998 G
-(qu)-8.058 E(ue)-5.558 E 2.5(es)-4.438 G(sa)-6.388 E(ab)-4.998 E(be)
--5.558 E(em)-4.438 E(mo)-8.328 E(os)-4.998 E(s)-3.888 E F0 .051
-(Ahora ya sabes como crear una base de datos. Puedes guardar v)108 349.2
-R .051(alores en ella, e)-.25 F .052(xtraerlos creando un gr\341\214co,)
--.15 F .606(hacer operaciones matem\341ticas con ellos desde la base de\
- datos y visualizar los resultados de estas en v)108 361.2 R(ez)-.15 E
-.025(de los datos originales. V)108 373.2 R .026(imos la diferencia ent\
-re los promedios y los m\341ximos y cuando debemos usar cada)-.6 F
-(uno \(o al menos una idea de ello\))108 385.2 Q .718(RRDtool puede hac\
-er m\341s de lo que hemos visto hasta ahora. Pero antes de continuar)108
-402 R 3.217(,t)-.4 G 3.217(er)-3.217 G .717(ecomiendo que)-3.217 F .496
-(releas el te)108 414 R .497(xto desde el principio y pruebes a hacerle\
- algunas modi\214caciones a los ejemplos.)-.15 F(Ase)5.497 E .497
-(g\372rate de)-.15 F .986(entenderlo todo. El esfuerzo v)108 426 R .985
-(aldr\341 la pena, y te ayudar\341, no s\363lo con el resto del documen\
-to, sino en tu)-.25 F(trabajo diario de monitorizaci\363n, mucho despu\
-\351s de terminar con esta introducci\363n.)108 438 Q F2 10.656 -6.668
-(TT i)108 460.8 T(ip)3.89 E(po)-5.558 E(os)-4.998 E 2.5(sd)-3.888 G(de)
--8.058 E 2.5(ef)-4.438 G(fu)-5.828 E(ue)-5.558 E(en)-4.438 E(nt)-5.558 E
-(te)-3.328 E(es)-4.438 E 2.5(sd)-3.888 G(de)-8.058 E 2.5(ed)-4.438 G(da)
--8.058 E(at)-4.998 E(to)-3.328 E(os)-4.998 E(s)-3.888 E F0 1.668
-(De acuerdo, quieres continuar)108 477.6 R 4.169(.B)-.55 G(ien)-4.169 E
--.15(ve)-.4 G 1.669(nido de vuelta otra v).15 F 1.669
-(ez y prep\341rate; v)-.15 F 1.869 -.1(oy a i)-.2 H 4.169(rm).1 G 1.669
-(\341s r\341pido con los)-4.169 F(ejemplos y e)108 489.6 Q
-(xplicaciones.)-.15 E 2.476 -1(Ya v)108 506.4 T .476(imos que, para v)1
-F .476(er el cambio de un contador a lo lar)-.15 F .475
-(go del tiempo, tenemos que tomar dos n\372meros y)-.18 F(di)108 518.4 Q
-.137(vidir la diferencia entre el tiempo transcurrido entre las medicio\
-nes. P)-.25 F .137(ara los ejemplos que hemos visto es)-.15 F .946(lo l\
-\363gico, pero hay otras posibilidades. Por ejemplo, mi enrutador me pu\
-ede dar la temperatura actual en)108 530.4 R .069
-(tres puntos distintos, la entrada de aire, el llamado `)108 542.4 R
-.069(`punto caliente')-.74 F 2.569('yl)-.74 G 2.569(as)-2.569 G .069
-(alida de v)-2.569 F .069(entilaci\363n. Estos v)-.15 F(alores)-.25 E
-.073(no son contadores; si tomo los v)108 554.4 R .072
-(alores de dos muestreos y lo di)-.25 F .072(vido entre 300 se)-.25 F
-.072(gundos, obtendr\351 el cambio)-.15 F 3.279(de temperatura por se)
-108 566.4 R 3.279(gundo. \241Esperemos que sea cero, o tendr\355amos un\
- incendio en el cuarto de)-.15 F(ordenadores! :\))108 578.4 Q .71
-(Entonces, \277que hacemos? Podemos decirle a RRDtool que guarde los v)
-108 595.2 R .709(alores tal como los medimos \(esto)-.25 F 1.407
-(no es e)108 607.2 R 1.407
-(xactamente as\355, pero se aproxima bastante a la v)-.15 F 1.408
-(erdad\). As\355, los gr\341\214cos se v)-.15 F 1.408
-(er\341n mucho mejor)-.15 F(.)-.55 E .577(Puedo v)108 619.2 R .577(er c\
-uando el enrutador est\341 trabajando m\341s \(en serio, funciona; como\
- usa m\341s electricidad, genera)-.15 F 1.791(m\341s calor y sube la te\
-mperatura\), puedo saber cuando me he dejado las puertas abiertas \(el \
-cuarto de)108 631.2 R .306(ordenadores tiene aire acondicionado; con la\
-s puertas abiertas el aire caliente del resto del edi\214cion entra y)
-108 643.2 R .246(sube la temperatura en la entrada de aire del enrutado\
-r\), etc. Antes usamos un tipo de datos de `)108 655.2 R(`contador')-.74
-E(',)-.74 E
-(ahora usaremos un tipo de datos diferente, con un nombre diferente,)108
-667.2 Q F1(GA)2.5 E(UGE)-.495 E F0 5(.T)C(enemos otros tipos:)-5.7 E/F3
-10/Courier@0 SF 6(-C)114 684 S(OUNTER este ya lo conocemos)-6 E 6(-G)114
-696 S 12(AUGE este)-6 F(acabamos de verlo)6 E 6(-D)114 708 S(ERIVE)-6 E
-6(-A)114 720 S(BSOLUTE)-6 E F0 145.68(2001-02-11 Last)72 768 R
-(change: 1.0.28)2.5 E(12)184.84 E EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F 1.373(Los otros dos tipos son)108 96 R/F1 9
-/Times-Roman@0 SF(DERIVE)3.873 E F0(y)3.873 E F1(ABSOLUTE)3.873 E F0(.)A
-F1(ABSOLUTE)3.873 E F0 1.373(puede usarse igual que)3.873 F F1(COUNTER)
-3.872 E F0 3.872(,c)C 1.372(on una)-3.872 F 1.098
-(diferencia; RRDtool asume que el contador se reinicia cada v)108 108 R
-1.098(ez que se lee. O en otras palabras; el delta)-.15 F .53
-(entre los v)108 120 R .53
-(alores no hay que calcularlo, mientras que con)-.25 F F1(COUNTER)3.029
-E F0 .529(RRDtool tiene que sacar \351l la cuenta.)3.029 F 2.961(Por ej\
-emplo, nuestro primer ejemplo, \(12345, 12357, 12363, 12363\), ser\355a\
- \(unkno)108 132 R 2.962(wn, 12, 6, 0\) en)-.25 F F1(ABSOLUTE)108 144 Q
-F0 5.321(.E)C 2.821(lo)-5.321 G .32(tro tipo,)-2.821 F F1(DERIVE)2.82 E
-F0 2.82(,e)C 2.82(sc)-2.82 G(omo)-2.82 E F1(COUNTER)2.82 E F0 2.82(,p)C
-.32(ero al contrario de)-2.82 F F1(COUNTER)2.82 E F0 2.82(,e)C .32
-(ste v)-2.82 F .32(alor tambi\351n)-.25 F(puede decrecer)108 156 Q 2.5
-(,p)-.4 G(or lo que puede tenerse un delta ne)-2.5 E -.05(ga)-.15 G(ti)
-.05 E -.2(vo)-.25 G(.).2 E -1.11(Va)108 172.8 S(mos a probarlos todos:)
-1.11 E/F2 10/Courier@0 SF(rrdtool create all.rrd --start 978300900 \\)
-126 189.6 Q(DS:a:COUNTER:600:U:U \\)180 201.6 Q(DS:b:GAUGE:600:U:U \\)
-180 213.6 Q(DS:c:DERIVE:600:U:U \\)180 225.6 Q(DS:d:ABSOLUTE:600:U:U \\)
-180 237.6 Q(RRA:AVERAGE:0.5:1:10)180 249.6 Q(rrdtool update all.rrd \\)
-126 261.6 Q 18(978301200:300:1:600:300 \\)180 273.6 R 12
-(978301500:600:3:1200:600 \\)180 285.6 R 12(978301800:900:5:1800:900 \\)
-180 297.6 R(978302100:1200:3:2400:1200 \\)180 309.6 Q
-(978302400:1500:1:2400:1500 \\)180 321.6 Q
-(978302700:1800:2:1800:1800 \\)180 333.6 Q 18
-(978303000:2100:4:0:2100 \\)180 345.6 R 6(978303300:2400:6:600:2400 \\)
-180 357.6 R 6(978303600:2700:4:600:2700 \\)180 369.6 R
-(978303900:3000:2:1200:3000)180 381.6 Q
-(rrdtool graph all1.gif -s 978300600 -e 978304200 -h 400 \\)126 393.6 Q
-(DEF:linea=all.rrd:a:AVERAGE LINE3:linea#FF0000:"Line A" \\)180 405.6 Q
-(DEF:lineb=all.rrd:b:AVERAGE LINE3:lineb#00FF00:"Line B" \\)180 417.6 Q
-(DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:"Line C" \\)180 429.6 Q
-(DEF:lined=all.rrd:d:AVERAGE LINE3:lined#000000:"Line D")180 441.6 Q/F3
-10/Times-Bold@0 SF -7.218(RR)108 476.4 S -7.218(RR)7.218 G -7.218(DD)
-7.218 G -3.328(tt)7.218 G -4.998(oo)3.328 G -4.998(oo)4.998 G 5.556
--2.778(ll b)4.998 H(ba)-2.78 E(aj)-4.998 E(jo)-3.328 E 2.5(oe)-4.998 G
-(el)-6.938 E 2.5(lm)-2.778 G(mi)-10.828 E(ic)-2.778 E(cr)-4.438 E -.18
-(ro)-4.438 G(os)-4.818 E(sc)-3.888 E(co)-4.438 E(op)-4.998 E(pi)-5.558 E
-(io)-2.778 E(o)-4.998 E F0 16.5<834c>108 493.2 S 2.707(al)-16.5 G .207
-(\355nea A es un contador)-2.707 F 2.707(,p)-.4 G .208(or lo que debe i\
-ncrementarse continuamente y RRDtool tiene que calcular)-2.707 F 1.696
-(las diferencias. Adem\341s RRDtool tiene que di)128 505.2 R 1.695
-(vidir la diferencia entre el tiempo transcurrido. Esto)-.25 F(deber\
-\355a terminar con una l\355nea recta en 1 \(los deltas son 300, y los \
-interv)128 517.2 Q(alos son de 300\))-.25 E 16.5<834c>108 534 S 2.632
-(al)-16.5 G .132(\355nea B es de tipo)-2.632 F F1(GA)2.632 E(UGE)-.495 E
-F0 2.632(.E)C .132(stos son los v)-2.632 F .132(alores `)-.25 F
-(`reales')-.74 E .133
-(', as\355 que el gr\341\214co debe mostrar lo mismo)-.74 F(que los v)
-128 546 Q(alores que introducimos: una especie de onda)-.25 E 16.5<834c>
-108 562.8 S 3.362(al)-16.5 G .862(\355nea C es de tipo)-3.362 F F1
-(DERIVE)3.362 E F0 3.362(.E)C 3.362(su)-3.362 G 3.362(nc)-3.362 G
-(ontador)-3.362 E 3.362(,yp)-.4 G .862(uede decrecer)-3.362 F 3.362(.V)
--.55 G 3.362(ae)-4.472 G .861(ntre 2400 y 0, con 1800 en el)-3.362 F
-(medio.)128 574.8 Q 16.5<834c>108 591.6 S 2.592(al)-16.5 G .092
-(\355nea D es de tipo)-2.592 F F1(ABSOLUTE)2.592 E F0 2.592(.E)C .092
-(sto es, es un contador pero no hay que calcular las diferencias. Los)
--2.592 F(n\372meros son iguales a la l\355nea A, y espero que puedas v)
-128 603.6 Q(er la diferencia en los gr\341\214cos.)-.15 E 1.048
-(Esto equi)108 620.4 R -.25(va)-.25 G 1.047(le a los v).25 F 1.047(alor\
-es siguientes, empezando a las 23:10 y terminando a las 00:10 \(las U s\
-igni\214can)-.25 F(desconocido\).)108 632.4 Q F2 6(-L)114 649.2 S 6
-(\355nea A: u u 1 1 1 1 1 1 1 1 1 u)-6 F 6(-L)114 661.2 S 6
-(\355nea B: u 1 3 5 3 1 2 4 6 4 2 u)-6 F 6(-L)114 673.2 S 6
-(\355nea C: u u 2 2 2 0)-6 F(-2 -6)6 E 12(202u)12 G 6(-L)114 685.2 S 6
-(\355nea D: u 1 2 3 4 5 6 7 8 9)-6 F 6(10 u)6 F F0 2.218(Si tu archi)108
-709.2 R -.2(vo)-.25 G F1(GIF)4.918 E F0 2.219(muestra todo esto, has en\
-trado los datos correctamente, tu programa RRDtool est\341)4.718 F .998
-(funcionando bien, el visor de gr\341\214cos no te eng)108 721.2 R .997
-(a\361a y hemos entrado en el 2000 sin problemas :\) Puedes)-.05 F
-145.68(2001-02-11 Last)72 769.2 R(change: 1.0.28)2.5 E(13)184.84 E EP
-%%Page: 14 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F(probar el mismo ejemplo cuatro v)108 96 Q
-(eces, una por cada l\355nea.)-.15 E(Re)108 112.8 Q
-(visemos los datos otra v)-.25 E(ez:)-.15 E 16.5<834c>108 129.6 S 1.302
-(\355nea A: 300, 600, 900 , etc.)-16.5 F 1.302
-(La diferencia del contador es siempre 300, igual que el interv)6.302 F
-1.303(alo de)-.25 F .233(tiempo transcurrido entre mediciones. Por lo t\
-anto, el promedio siempre es 1. Pero, \277por qu\351 el primer)128 141.6
-R .811(punto tiene un v)128 153.6 R .811(alor de `)-.25 F(`desconocido')
--.74 E .812('? \277Acaso no era conocido el v)-.74 F .812
-(alor que pusimos en la base de)-.25 F .694
-(datos? \241Si! Pero no ten\355amos un v)128 165.6 R .693(alor inicial \
-para calcular la diferencia. Ser\355a un error asumir que el)-.25 F
-(contador empezaba en 0, as\355 que no conocemos el v)128 177.6 Q
-(alor de la diferencia)-.25 E 16.5<834c>108 194.4 S .099
-(\355nea B: No hay nada que calcular)-16.5 F 2.599(,l)-.4 G .099(os v)
--2.599 F .099
-(alores son los mismos que se introdujeron en la base de datos.)-.25 F
-16.5<834c>108 211.2 S .895(\355nea C: De nue)-16.5 F -.2(vo)-.25 G 3.395
-(,n).2 G 3.395(oc)-3.395 G .895(onocemos el v)-3.395 F .895
-(alor inicial antes de la primera medici\363n, as\355 que se aplica el)
--.25 F 1.152(mismo razonamiento que para la l\355nea A. En este caso la\
-s diferencias no son constantes, as\355 que la)128 223.2 R .033
-(l\355nea no es recta. Si hubi\351semos puesto los mismos v)128 235.2 R
-.033(alores que en la l\355nea A, el gr\341\214co ser\355a el mismo.)
--.25 F .391(Al contrario que)128 247.2 R/F1 9/Times-Roman@0 SF(COUNTER)
-2.891 E F0 2.891(,e)C 2.891(lv)-2.891 G .391(alor puede decrecer)-3.141
-F 2.891(,ye)-.4 G .392(spero mostrarte m\341s adelante el por que de la)
--2.891 F(diferencia entre ambos tipos.)128 259.2 Q 16.5<834c>108 276 S
-.679(\355nea D: En este caso, el dispositi)-16.5 F 1.078 -.2(vo n)-.25 H
-.678(os da las diferencias por s\355 mismo. Por lo tanto, conocemos la)
-.2 F 2.09(diferencia inicial, y podemos gra\214carla. T)128 288 R 2.09
-(enemos los mismos v)-.7 F 2.09(alores que en la l\355nea A, pero su)
--.25 F .219(signi\214cado es distinto, por lo que el gr\341\214co tambi\
-\351n lo es. En este caso, las diferencias se incrementan)128 300 R .073
-(en 300 cada v)128 312 R .073(ez, mientras que el interv)-.15 F .074
-(alo de tiempo permanece constante en 300 se)-.25 F .074
-(gundos, por lo que)-.15 F(la di)128 324 Q
-(visi\363n nos da resultados cada v)-.25 E(ez mayores.)-.15 E/F2 10
-/Times-Bold@0 SF -7.218(RR)108 346.8 S -4.438(ee)7.218 G -2.778(ii)4.438
-G -5.558(nn)2.778 G -2.778(ii)5.558 G -4.438(cc)2.778 G -2.778(ii)4.438
-G -4.998(aa)2.778 G -2.778(ll)4.998 G -2.778(ii)2.778 G -4.438(zz)2.778
-G -4.998(aa)4.438 G -4.438(cc)4.998 G -2.778(ii)4.438 G -4.998<f3f3>
-2.778 G 11.116 -5.558(nn dd)4.998 H 8.876 -4.438(ee l)5.558 H(lo)1.66 E
-(os)-4.998 E 2.5(sc)-3.888 G(co)-6.938 E(on)-4.998 E(nt)-5.558 E(ta)
--3.328 E(ad)-4.998 E(do)-5.558 E(or)-4.998 E -.18(re)-4.438 G(es)-4.258
-E(s)-3.888 E F0 -.8(To)108 363.6 S(da).8 E .643
-(v\355a nos quedan algunas cosas por v)-.2 F(er)-.15 E 3.143(.N)-.55 G
-.643(os quedan algunas opciones importantes por cubrir)-3.143 F 3.143
-(,ya)-.4 G .643(un no)-3.143 F .279(hemos hablado de la reinicializaci\
-\363n de contadores. Empecemos por ah\355: Estamos en nuestro coche, v)
-108 375.6 R(emos)-.15 E 2.99
-(el contador y muestra 999987. Andamos unos 20)108 387.6 R F1(KM)5.489 E
-F0 5.489(,a)C 2.989(s\355 que el contador debe subir a 1000007.)-5.489 F
-3.222(Desafortunadamente, el contador s\363lo tiene 6 d\355gitos, as\
-\355 que en realidad nos muestra 000007. Si)108 399.6 R 1.043
-(estuvi\351ramos guardando los v)108 411.6 R 1.043(alores en un tipo)
--.25 F F1(DERIVE)3.543 E F0 3.543(,e)C 1.042
-(sto signi\214car\355a que el contador retrocedi\363 unos)-3.543 F
-(999980)108 423.6 Q F1(KM)3.371 E F0 3.372(.P)C .872(or supuesto esto n\
-o es cierto, por lo que necesitamos alguna protecci\363n contra estos c\
-asos.)-3.372 F 1.042(Esta protecci\363n s\363lo la tenemos para el tipo)
-108 435.6 R F1(COUNTER)3.541 E F0 3.541(,e)C 3.541(lc)-3.541 G 1.041
-(ual de todas formas era el que ten\355amos que)-3.541 F 1.1
-(haber usado para este tipo de contador)108 447.6 R 3.601<2ebf>-.55 G
-1.101(C\363mo funciona? Los v)-3.601 F 1.101(alores tipo)-.25 F F1
-(COUNTER)3.601 E F0 1.101(no deben decrecer)3.601 F 1.336(nunca, \241po\
-r lo que RRDtool asume en ese caso que el contador se ha reinicializado\
-! Si la diferencia es)108 459.6 R(ne)108 471.6 Q -.05(ga)-.15 G(ti).05 E
--.25(va)-.25 G 2.5(,e).25 G(sto se compensa sumando el v)-2.5 E
-(alor m\341ximo del contador + 1. P)-.25 E
-(ara nuestro coche, tendr\355amos:)-.15 E/F3 10/Courier@0 SF
-(Delta = 7 - 999987 = -999980)114 488.4 Q
-(\(en vez de 1000007-999987=20\))24 E
-(Delta real= -999980 + 999999 + 1 = 20)114 512.4 Q F0 1.377(Al momento \
-de escribir este documento, RRDtool maneja contadores de 32 o 64 bits d\
-e tama\361o. Estos)108 536.4 R
-(contadores pueden manejar los siguientes v)108 548.4 Q(alores:)-.25 E
-F3 6(-3)114 565.2 S 6(2b)-6 G(its: 0 ..)-6 E(4294967295)66 E 6(-6)114
-577.2 S 6(4b)-6 G(its: 0 .. 18446744073709551615)-6 E F0(Si estos v)108
-601.2 Q(alores te parecen raros, podemos v)-.25 E(erlos en formato he)
--.15 E(xadecimal:)-.15 E F3 6(-3)114 618 S 6(2b)-6 G(its: 0 ..)-6 E
-(FFFFFFFF)54 E 6(-6)114 630 S 6(4b)-6 G(its: 0 .. FFFFFFFFFFFFFFFF)-6 E
-F0 1.101(RRDtool maneja ambos contadores de la misma manera. Si ocurre \
-un desbordamiento y la diferencia es)108 654 R(ne)108 666 Q -.05(ga)-.15
-G(ti).05 E -.25(va)-.25 G 3.163(,R).25 G .663
-(RDtool le suma primero el m\341ximo del contador `)-3.163 F(`menor')
--.74 E 3.163('\()-.74 G .664(32 bits\) + 1 a la diferencia. Si a\372n)
--3.163 F .527(as\355 la diferencia es ne)108 678 R -.05(ga)-.15 G(ti).05
-E -.25(va)-.25 G 3.026(,e).25 G .526(ntonces el contador reinicializado\
- era mayor \(64 bits\), por lo que se le suma)-3.026 F .67(el v)108 690
-R .67(alor m\341ximo del contador `)-.25 F(`lar)-.74 E(go')-.18 E 3.17
-('+1ys)-.74 G 3.17(el)-3.17 G 3.17(er)-3.17 G .67
-(esta el m\341ximo del contador `)-3.17 F(`peque\361o')-.74 E 3.17('q)
--.74 G .67(ue sumamos)-3.17 F 2.368
-(err\363neamente. Hay un problema con esto: supong)108 702 R 2.368
-(amos que un contador lar)-.05 F 2.368(go se ha reinicializado al)-.18 F
-1.73(sum\341rsele una diferencia muy grande; entonces es posible que al\
- a\361adir el v)108 714 R 1.73(alor m\341ximo del contador)-.25 F 2.5
-(peque\361o la diferencia nos d\351 positi)108 726 R -.2(vo)-.25 G 5(.E)
-.2 G 5(ne)-5 G 2.5(ste caso poco probable, los v)-5 F 2.5
-(alores resultantes no serian)-.25 F 145.68(2001-02-11 Last)72 774 R
-(change: 1.0.28)2.5 E(14)184.84 E EP
-%%Page: 15 15
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F 1.568(correctos. P)108 96 R 1.569(ara que ocur\
-ra esto, el incremento tiene que ser casi tan grande como el v)-.15 F
-1.569(alor m\341ximo del)-.25 F(contador)108 108 Q 3.285(,p)-.4 G .785
-(or lo que de ocurrir es muy probable que halla v)-3.285 F .784
-(arios problemas m\341s en la con\214guraci\363n y no)-.25 F .184(merez\
-ca la pena preocuparse s\363lo por este. A\372n as\355, he incluido un \
-ejemplo de este caso para que lo puedas)108 120 R(juzg)108 132 Q
-(ar por ti mismo.)-.05 E 3.694(Ac)108 148.8 S 1.194(ontinuaci\363n, uno\
-s ejemplos de reinicializaci\363n de los contadores. Prueba de hacer lo\
-s c\341lculos por ti)-3.694 F(mismo, o acepta mis resultados si tu calc\
-uladora no puede con los n\372meros :\))108 160.8 Q
-(N\372meros de correcci\363n:)108 177.6 Q/F1 10/Courier@0 SF 6(-3)114
-194.4 S 6(2b)-6 G(its: \(4294967295+1\) =)-6 E(4294967296)198 E 6(-6)114
-206.4 S 6(4b)-6 G
-(its: \(18446744073709551615+1\)-correction1 = 18446744069414584320)-6 E
-54(Antes: 4294967200)114 230.4 R 66(Incremento: 100)114 242.4 R
-(Deber\355a ser:)114 254.4 Q(4294967300)24 E(Pero es:)114 266.4 Q(4)102
-E 18(Diferencia: -4294967196)114 278.4 R
-(Correcci\363n #1: -4294967196 + 4294967296 = 100)114 290.4 Q 54
-(Antes: 18446744073709551000)114 314.4 R 126(Incremento: 800)114 326.4 R
-(Deber\355a ser:)114 338.4 Q(18446744073709551800)24 E(Pero es:)114
-350.4 Q(184)150 E 18(Diferencia: -18446744073709550816)114 362.4 R(Corr\
-ecci\363n #1: -18446744073709550816 +4294967296 = -18446744069414583520)
-114 374.4 Q
-(Correcci\363n #2: -18446744069414583520 +18446744069414584320 = 800)114
-386.4 Q 54(Antes: 18446744073709551615)114 410.4 R 6(\(v)6 G
-(alor m\341ximo \))-6 E 24(Incremento: 18446744069414584320)114 422.4 R
-6(\(i)6 G(ncremento absurdo,)-6 E(Deber\355a ser:)114 434.4 Q 12
-(36893488143124135935 m\355nimo)24 F(para que)6 E(Pero es:)114 446.4 Q
-12(18446744069414584319 funcione)48 F(el ejemplo\))6 E 78
-(Diferencia: -4294967296)114 458.4 R(Correcci\363n #1:)114 470.4 Q
-(-4294967296 + 4294967296 = 0 \(positivo,)12 E(por tanto no se hace)390
-482.4 Q(la segunda correcci\363n\))390 494.4 Q 54
-(Antes: 18446744073709551615)114 518.4 R 6(\(v)6 G(alor m\341ximo \))-6
-E 24(Incremento: 18446744069414584319)114 530.4 R(Deber\355a ser:)114
-542.4 Q(36893488143124135934)24 E(Pero es:)114 554.4 Q
-(18446744069414584318)48 E 78(Diferencia: -4294967297)114 566.4 R
-(Correcci\363n #1:)114 578.4 Q(-4294967297 +4294967296 = -1)12 E
-(Correcci\363n #2:)114 590.4 Q
-(-1 +18446744069414584320 = 18446744069414584319)12 E F0 2.469
-(Como puede v)108 614.4 R 2.469
-(erse en los \372ltimos ejemplos, necesitas unos v)-.15 F 2.469
-(alores bastante e)-.25 F 2.47(xtra\361os para hacer que)-.15 F .938
-(RRDtool f)108 626.4 R .938(alle \(asumiendo que no teng)-.1 F 3.438(an)
--.05 G .937(ing\372n error el programa, por supuesto\), as\355 que esto\
- no deber\355a)-3.438 F(ocurrir)108 638.4 Q 2.845(.S)-.55 G .345
-(in embar)-2.845 F(go,)-.18 E/F2 9/Times-Roman@0 SF(SNMP)2.845 E F0
-2.846(oc)2.846 G .346(ualquier otro m\351todo que uses de recogida de d\
-atos puede tambi\351n reportar)-2.846 F .702(alg\372n v)108 650.4 R .702
-(alor err\363neo ocasionalmente. No podemos pre)-.25 F -.15(ve)-.25 G
-.701(nir todos los errores, pero podemos tomar algunas).15 F .612
-(medidas. El comando `)108 662.4 R(`create')-.74 E 3.112('d)-.74 G 3.112
-(eR)-3.112 G .612(RDtool tiene dos par\341metros especialmente para est\
-o, que de\214nen los)-3.112 F -.25(va)108 674.4 S .574
-(lores m\355nimo y m\341ximo permitidos. Hasta ahora hemos usado `).25 F
-(`U')-.74 E .573(', `)-.74 F(`desconocido')-.74 E .573('. Si le pasas v)
--.74 F(alores)-.25 E 1.992
-(para uno o ambos par\341metros y RRDtool recibe un v)108 686.4 R 1.992
-(alor fuera de esos l\355mites, los ignorar\341. P)-.25 F 1.992(ara un)
--.15 F 1.908
-(term\363metro en grados Celsius, el m\355nimo absoluto es \255273. P)
-108 698.4 R 1.908(ara mi enrutador)-.15 F 4.408(,p)-.4 G 1.908
-(uedo asumir que ese)-4.408 F .277(m\355nimo es mucho mayor)108 710.4 R
-2.777(,d)-.4 G(ig)-2.777 E .277(amos que 10.)-.05 F .278
-(La temperatura m\341xima la pondr\355a en unos 80 grados; m\341s alto)
-5.278 F 2.934(ye)108 722.4 S 2.934(la)-2.934 G .434
-(parato no funcionar\355a. P)-2.934 F .434
-(ara mi coche, nunca esperar\355a obtener v)-.15 F .434(alores ne)-.25 F
--.05(ga)-.15 G(ti).05 E -.2(vo)-.25 G .434(s, y tampoco esperar\355a).2
-F 145.68(2001-02-11 Last)72 770.4 R(change: 1.0.28)2.5 E(15)184.84 E EP
-%%Page: 16 16
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F -.25(va)108 96 S .871(lores mayores a 230.).25
-F .871(Cualquier otra cosa ser\355a un error)5.871 F 3.371(.P)-.55 G
-.871(ero recuerda, lo contrario no es cierto: si los)-3.371 F -.25(va)
-108 108 S .94(lores pasan este e).25 F .94
-(xamen no quiere decir que sean los correctos. Siempre e)-.15 F .94
-(xamina bien el gr\341\214co si los)-.15 F -.25(va)108 120 S
-(lores parecen e).25 E(xtra\361os.)-.15 E/F1 10/Times-Bold@0 SF -7.218
-(RR)108 142.8 S -4.438(ee)7.218 G -8.328(mm)4.438 G -5.558(uu)8.328 G
--4.438(ee)5.558 G -3.888(ss)4.438 G -3.328(tt)3.888 G 6.196 -4.438
-(rr ee)3.328 H 9.996 -4.998(oo d)4.438 H(de)-.56 E 2.5(el)-4.438 G(lo)
--5.278 E(os)-4.998 E 2.5(sd)-3.888 G(da)-8.058 E(at)-4.998 E(to)-3.328 E
-(os)-4.998 E(s)-3.888 E F0 .376
-(Hay una funcionalidad importante de RRDtool que no hemos e)108 159.6 R
-.376(xplicado toda)-.15 F .377(v\355a: es virtualmente imposible)-.2 F
-.604(recoger los datos y pasarselos a RRDtool a interv)108 171.6 R .604
-(alos e)-.25 F .603(xactos de tiempo. Por tanto, RRDtool interpola los)
--.15 F .068(datos a los interv)108 183.6 R .068(alos e)-.25 F .068(xact\
-os. Si no sabes que signi\214ca esto o como se hace, he aqu\355 la ayud\
-a que necesitas:)-.15 F(Supong)108 200.4 Q 1.833
-(amos un contador se incremente e)-.05 F 1.833(xactamente en 1 cada se)
--.15 F 4.333(gundo. Queremos)-.15 F 1.833(medirlo cada 300)4.333 F(se)
-108 212.4 Q 1.668(gundos, por lo que deber\355amos tener v)-.15 F 1.668
-(alores separados e)-.25 F 1.668(xactamente en 300. Sin embar)-.15 F
-1.668(go, por v)-.18 F(arias)-.25 E 2.346(circunstancias lle)108 224.4 R
--.05(ga)-.15 G 2.346(mos unos se).05 F 2.346(gundos tarde y el interv)
--.15 F 2.345(alo es 303. La diferencia ser\341 por tanto 303.)-.25 F(Ob)
-108 236.4 Q .292(viamente, RRDtool no debe colocar 303 en la base de da\
-tos y dar as\355 la impresi\363n de que el contador se)-.15 F .225
-(increment\363 303 en 300 se)108 248.4 R .225
-(gundos. Aqu\355 es donde RRDtool interpola: alter\341 el v)-.15 F .224
-(alor 303 al v)-.25 F .224(alor que tendr\355a)-.25 F 2.76(3s)108 260.4
-S -.15(eg)-2.76 G .26(undos antes y guarda 300 en 300 se).15 F .261
-(gundos. Dig)-.15 F .261(amos que la pr\363xima v)-.05 F .261(ez lle)
--.15 F -.05(ga)-.15 G .261(mos justo a tiempo; por).05 F .132
-(tanto, el interv)108 272.4 R .132(alo actual es 297 se)-.25 F .132
-(gundos, por lo que el contador deber\355a ser 297. De nue)-.15 F -.2
-(vo)-.25 G 2.631(,R).2 G .131(RDtool altera)-2.631 F(el v)108 284.4 Q
-(alor y guarda 300, como debe ser)-.25 E(.)-.55 E/F2 10/Courier@0 SF
-(en RRD)162 301.2 Q(en realidad)126 E 12(tiempo+000: 0)114 313.2 R 18
-(delta="U" tiempo+000:)6 F 6(0d)18 G(elta="U")-6 E
-(tiempo+300: 300 delta=300)114 325.2 Q(tiempo+300: 300 delta=300)24 E
-(tiempo+600: 600 delta=300)114 337.2 Q(tiempo+603: 603 delta=303)24 E
-(tiempo+900: 900 delta=300)114 349.2 Q(tiempo+900: 900 delta=297)24 E F0
-(Creemos dos bases de datos id\351nticas. He escogido el rango de tiemp\
-o entre 920805000 y 920805900.)108 373.2 Q F2
-(rrdtool create seconds1.rrd)126 390 Q(\\)18 E(--start 920804700)144 402
-Q(\\)60 E(DS:seconds:COUNTER:600:U:U \\)144 414 Q(RRA:AVERAGE:0.5:1:24)
-144 426 Q(para Unix: cp seconds1.rrd seconds2.rrd)126 450 Q
-(para DOS: copy seconds1.rrd seconds2.rrd)126 462 Q(para VMS:)126 474 Q
-6(yy)12 G 6(oq)-6 G(ue s\351 :\))-6 E(rrdtool update seconds1.rrd \\)126
-498 Q(920805000:000 920805300:300 920805600:600 920805900:900)144 510 Q
-(rrdtool update seconds2.rrd \\)126 522 Q
-(920805000:000 920805300:300 920805603:603 920805900:900)144 534 Q F0
-145.68(2001-02-11 Last)72 768 R(change: 1.0.28)2.5 E(16)184.84 E EP
-%%Page: 17 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 337.082(rrdtool RRDTUT)72 48 R -.834
-(ORIAL.ES \( 1 \))-.18 F/F1 10/Courier@0 SF(rrdtool graph seconds1.gif)
-126 96 Q(\\)138 E(--start 920804700 --end 920806200)144 108 Q(\\)78 E
-(--height 200)144 120 Q(\\)204 E
-(--upper-limit 1.05 --lower-limit 0.95 --rigid \\)144 132 Q 30
-(DEF:seconds=seconds1.rrd:seconds:AVERAGE \\)144 144 R 132
-(CDEF:unknown=seconds,UN \\)144 156 R 150(LINE2:seconds#0000FF \\)144
-168 R(AREA:unknown#FF0000)144 180 Q(rrdtool graph seconds2.gif)126 192 Q
-(\\)138 E(--start 920804700 --end 920806200)144 204 Q(\\)78 E
-(--height 200)144 216 Q(\\)204 E
-(--upper-limit 1.05 --lower-limit 0.95 --rigid \\)144 228 Q 30
-(DEF:seconds=seconds2.rrd:seconds:AVERAGE \\)144 240 R 132
-(CDEF:unknown=seconds,UN \\)144 252 R 150(LINE2:seconds#0000FF \\)144
-264 R(AREA:unknown#FF0000)144 276 Q F0
-(Los dos gr\341\214cos debe ser iguales.)108 300 Q/F2 9/Times-Bold@0 SF
--6.496(RR)72 316.8 S -6.001(EE)6.496 G -5.002(SS)6.001 G -6.496(UU)5.002
-G -8.494(MM)6.496 G -6.001(EE)8.494 G -6.496(NN)6.001 G F0 .222(Es hora\
- de concluir este documento. Ahora debes conocer lo b\341sico como para\
- trabajar con RRDtool y leer)108 328.8 R .204(la documentaci\363n. A\
-\372n hay mucho m\341s por descubrir acerca de RRDtool, y le encontrar\
-\341s; m\341s y m\341s usos)108 340.8 R .725(para la herramienta. Con l\
-os ejemplos y la herramienta puedes crear f\341cilmente muchos gr\341\
-\214cos; tambi\351n)108 352.8 R(puedes usar las interf)108 364.8 Q
-(aces disponibles.)-.1 E F2 -6.001(LL)72 381.6 S -3.499(II)6.001 G
--5.002(SS)3.499 G 8.942 -6.001(TT A)5.002 H 2.25(AD)-.495 G(DE)-8.746 E
-2.25(EC)-6.001 G(CO)-8.746 E(OR)-7 E(RR)-6.496 E(RE)-6.496 E(EO)-6.001 E
-(O)-7 E F0 .534(Recuerda subscribirte a la lista de correo. Aunque no c\
-ontestes los correos que aparecen en ella, te servir\341)108 393.6 R
-.514(de ayuda a ti y a los dem\341s.)108 405.6 R .514
-(Mucho de lo que se sobre)5.514 F/F3 9/Times-Roman@0 SF(MR)3.015 E(TG)
--.54 E F0 .515(\(y por tanto sobre RRDtool\), lo aprend\355 tan)3.015 F
-.009(s\363lo con leer la lista, sin escribir)108 417.6 R 2.509(.N)-.55 G
-2.509(oh)-2.509 G .008(ay por que pre)-2.509 F .008(guntar las pre)-.15
-F .008(guntas b\341sicas, que ya tienen su respuesta)-.15 F 1.543(en la)
-108 429.6 R F3 -1.413 -.666(FA Q)4.043 H F0 1.543
-(\(\241l\351ela!\). Con miles de usuarios a lo lar)4.709 F 1.544
-(go del mundo, siempre hay pre)-.18 F 1.544(guntas que tu puedes)-.15 F
-(responder con lo aprendido en este y otros documentos.)108 441.6 Q F2
--6.496(VV)72 458.4 S -6.001(EE)6.496 G 12.992 -6.496(RR T)6.001 H -.81
-(TA).495 G(AM)-5.686 E(MB)-8.494 E(BI)-6.001 E<49c9>-3.499 E<c94e>-6.001
-E(N)-6.496 E F0(Las p\341ginas del manual de RRDtool)108 470.4 Q F2
-10.292 -6.496(AA UU)72 487.2 T 9.59 -6.001(TT O)6.496 H(OR)-.999 E(R)
--6.496 E F0 .743
-(Espero que hayas disfrutado con los ejemplos y las descripciones.)108
-499.2 R .742(Si es as\355, ayuda a otros re\214ri\351ndolos a)5.742 F
-1.116(este documento cuando te hag)108 511.2 R 1.116(an pre)-.05 F 1.117
-(guntas b\341sicas. No s\363lo obtendr\341n la respuesta, sino que apre\
-nder\341n)-.15 F(muchas otras cosas.)108 523.2 Q(Ale)108 540 Q 2.5(xv)
--.15 G(an den Bog)-2.75 E(aerdt <ale)-.05 E(x@er)-.15 E
-(gens.op.het.net>)-.18 E 145.68(2001-02-11 Last)72 768 R(change: 1.0.28)
-2.5 E(17)184.84 E EP
-%%Trailer
-end
-%%EOF