21.5. Procesar Art�culos por Lotes

Los lotes de noticias siguen un formato particular, el cual es el mismo para Bnews, C-News e INN. Cada art�culo est� precedido por una l�nea como esta:
    #! rnews count

donde count es el n�mero de bytes en el art�culo. Cuando se usa la compresi�n de lotes, el fichero resultante es comprimido como un todo, y precedido por otra l�nea, que indica el mensaje a ser usado por la compresi�n. la herramienta de compresi�n est�ndar es compress, la cual se indica con:
    #! cunbatch

Algunas veces, cuando hay que enviar los lotes usando un software de correo que elimina el octavo bit de todos los datos, se puede proteger un lote usando un m�todo de codificaci�n llamado codificaci�n c7(c7-encoding, en ingl�s); estos lotes ser�n marcados por c7unbatch.

Cuando se le suministra un lote rnews en el servidor remoto, �ste comprueba esas marcas y procesa el lote apropiadamente. Algunos servidores tambi�n usan otras herramientas de compresi�n tales como gzip, y en su lugar, preceden a sus ficheros comprimidos con zunbatch. C-News no reconoce cabeceras no est�ndares como esas; Ud. deber� modificar el c�digo fuente para darle soporte.

En C-News, el proceso por lotes de ficheros lo realiza /usr/lib/news/batch/sendbatches, el cual recoge la lista de art�culos del fichero site/togo y los pone en varios lotes de noticias. Deber�a ejecutarse una vez cada hora, o incluso m�s a menudo, dependiendo del volumen de tr�fico. Esta operaci�n es controlada por el fichero batchparms situado en /var/lib/news. Este fichero describe el m�ximo tama�o de lote permitido para cada servidor, el tipo de proceso por lotes y opcionalmente el programa de compresi�n usado, adem�s del m�todo de transporte para entregarlo al servidor remoto. Puede especificar los par�metros del proceso por lotes para cada servidor, adem�s de un conjunto de par�metros predeterminados para servidores no mencionados expl�citamente.

Cuando instale C-News, seguramente hallar� un fichero de nombre batchparms en su distribuci�n que contenga una entrada predeterminada, con valores razonables, as� que es muy probable que no tenga que tocar el fichero. No obstante, describimos su formato por si acaso. Cada l�nea consta de seis campos, separados por espacios o tabuladores:
    sitio tama�o max batcher muncher transporte

sitio

sitio es el nombre del servidor al que se aplica la entrada. El fichero togo para este servidor debe residir en out.going /togo bajo la cola de noticias. Un servidor llamado /default/ denota la entrada predeterminada y coincide con cualquier servidor que no sea especificado con una �nica entrada.

tama�o

tama�o es el tama�o m�ximo de los lotes creados (antes de la compresi�n). Para aquellos art�culos que son mayores que este valor, C-News hace una excepci�n y los pone en un lote a ellos solos.

max

max es el m�ximo n�mero de lotes creados y programados para la transferencia antes de que el proceso por lotes se interrumpa para este servidor en particular. Esto es �til en el caso de que el servidor remoto no est� disponible durante un largo per�odo de tiempo, porque previene que C-News ateste sus directorios de cola UUCP con millones de lotes de noticias.

C-News determina el n�mero de lotes que hay en cola usando el gui�n queuelen situado en /usr/lib/news/. Si ha instalado C-News desde paquetes, el gui�n no necesita retoques, pero si elige lugares diferentes para los directorios de cola, por ejemplo para Taylor UUCP, deber� crear su propia versi�n del gui�n. Si no le importa el n�mero de ficheros de cola (porque Ud. es la �nica persona usando el ordenador, y no escribe art�culos gigantes), puede reemplazar el contenido del gui�n por una simple sentencia exit 0.

batcher

El campo batcher contiene la orden usada para producir un lote a partir de la lista de art�culos del fichero togo. Para las fuentes habituales, �ste es generalmente batcher. Puede que se proporcionen otros empaquetadores para otros prop�sitos. Por ejemplo, el protocolo ihave/sendme requiere que la lista de art�culos sea convertida en mensajes de control ihave o sendme, los cuales se env�an al grupo to.site. Esto lo realizan las instrucciones batchih y batchsm respectivamente.

muncher

El campo compresi�n especifica la orden a usar para la compresi�n de los lotes. Generalmente, se usa compcun, un gui�n que produce lotes comprimidos[1]. Alternativamente, puede proporcionar un muncher que use gzip, para comprimir, digamos gzipcun (para ser claros: tiene que escribirlo usted mismo ). Debe asegurarse de que uncompress en el servidor remoto est� parcheado para reconocer ficheros comprimidos con gzip.

Si el servidor remoto no tiene una orden uncompress, debe especificar nocomp, lo que implica que no se realice compresi�n alguna.

transporte

El �ltimo campo, transporte, describe el transporte a ser utilizado. Hay disponibles varias �rdenes est�ndar para diferentes transportes cuyos nombres empiezan con via. sendbatches les pasa el nombre del servidor de destino en la l�nea de �rdenes. Si la entrada batchparms no era /default/, sendbatches deriva el nombre del servidor del campo sitio suprimiendo cualquier cosa despu�s e incluyendo el primer punto o barra inclinada. Si la entrada batchparms es /default/, se usa el nombre del directorio introducido en out.going.

Para llevar a cabo el proceso por lotes para un servidor espec�fico, se invoca como:
    # su news -c "/usr/lib/news/batch/sendbatches site"

Cuando se invoca sin argumentos, sendbatches maneja todas las colas de lotes. La interpretaci�n de “todas” depende de una entrada predeterminada en batchparms. Si se encuentra una, se comprueban todos los directorios de /var/spool/news/out.going; si no, sendbatches recorre todas las entradas de batchparms, procesando solamente los lugares encontrados. Note que sendbatches, cuando explora el directorio out.going toma s�lo aquellos directorios que no contienen ning�n punto o s�mbolo arroba (@)como nombre de servidor.

Hay dos �rdenes que usan uux para ejecutar rnews en el servidor remoto: viauux y viauuxz. El �ltimo establece el par�metro –z para uux, el cual, previene que versiones m�s antiguas de uux devuelvan mensajes de �xito por cada art�culo entregado. Otra orden, viamail, env�a los lotes de art�culos al usuario rnews en el servidor remoto v�a correo. Por supuesto, esto requiere que el sistema remoto administre de alguna manera todo el correo para rnews a su sistema local de noticias. Para obtener una lista completa de estos transportes, refi�rase a las p�ginas del manual de newsbatch.

Todas las �rdenes de los tres �ltimos campos deben estar situados, bien en out.going/site o en /usr/lib/news/batch. La mayor�a de ellos son guiones, de tal forma que pueda confeccionar f�cilmente nuevas herramientas para sus necesidades personales y son invocadas a trav�s de tuber�as (pipes). La lista de art�culos se suministra al batches por su entrada est�ndar, la cual produce el lote en su salida est�ndar. Esto a su vez, se vuelve a entubar en el muncher, y as� sucesivamente.

Aqu� hay un ejemplo:

    # fichero batchparms para la cervecera
    # site        | size   |max    |batcher  |muncher    |transport
    #-------------+--------+-------+---------+-----------+-----------
    /default/       100000  22      batcher   compcun     viauux
    swim             10000  10      batcher   nocomp      viauux

Notas

[1]

Tal como se distribuye con C-News, compcun usa compress con la opci�n 12-bit , ya que �ste es el m�nimo com�n denominador de la mayor�a de los servidores. Puede hacer una copia del gui�n, digamos compcun16, y usar el m�todo de compresi�n 16-bit. De todas formas, la mejora en rendimiento no es muy impresionante.