Archivo "Diario" de código fuente de C-Kermit.

By Marglin Araujo | Created: January 04, 2024 | Last updated: December 17, 2024 | Read Time: 82 minutes

Por: Frank da Cruz
Artículo Original: https://www.kermitproject.org/ckdaily.html

[email protected] ← (enviar informes a)

A partir de C-Kermit 10.0, esta página sólo muestra las pruebas Alfa y Beta. Las actualizaciones "diarias" se encuentran ahora AQUÍ.

A partir de C-Kermit 10.0 Beta.10, 3 de julio de 2023

Última actualización de esta página: Wed Sep 27 13:22:35 2023 Eastern USA time

TODOS LOS ENLACES FTP CONVERTIDOS A HTTPS 7 May 2021

▶▶ Ver breve registro de cambios a continuación ▶▶ Ir al voluminoso historial de actualizaciones

Vea la tabla de compilaciones recientes de C-Kermit, con y sin éxito. Si descarga y compila esta versión, envíe los resultados al correo electrónico anterior para incluirlos en la tabla.

Entre las versiones formales de C-Kermit, e incluso entre las versiones Alpha y Beta durante los periodos de prueba de C-Kermit, las fuentes de trabajo actuales se suben al sitio web de Kermit siempre que haya algo nuevo que mostrar y las comprobaciones de consistencia razonables no fallen. Desde 2010, las nuevas construcciones no son tan frecuentes; "diario" es una ligera exageración debido a la cancelación del Proyecto Kermit como mi trabajo diario.

DESCARGAR

TARGET

Descripción

x.tar.gz

Unix

C-Kermit para código fuente Unix, archivo Tar, compresión Gzip (gunzip, 2,4 MB)

x.tar.Z

Unix

Ditto, compresión de Compress (descomprimir, 3,5MB).

x.tar

Unix

Ditto, sin comprimir (10 MB)

x.zip

VMS

Código fuente Unix y VMS, archivo ZIP (unzip*, 2,8 MB).

Test-Tar

Unix

Listado clicable de los archivos del directorio kermit/test/tar.

Test-Text

(both)

Listado clicable de los archivos del directorio kermit/test/text.

* Utilice "unzip x.zip" en Unix (Linux, OSX, BSD, etc), así como en (Open) VMS o DOS o Windows.

Nota: los archivos x.* son enlaces simbólicos al archivo más reciente, por ejemplo cku404-beta09.tar.gz. Cada vez que se instala una nueva versión de desarrollo, los enlaces simbólicos se actualizan automáticamente para apuntar a ella. También se puede hacer referencia a cualquier versión por su nombre real, por ejemplo: cku400-beta06.tar.gz o cku305-alpha07.tar.gz o cku304-dev20.zip.

No está garantizado que la subida "diaria" se construya con éxito en las muchas plataformas en las que se construye una verdadera versión o Beta, pero se construye en al menos 2 o 3 de las principales plataformas de desarrollo (hoy en día, prácticamente sólo Linux y NetBSD - los días de los IDs invitados por todo Internet han quedado atrás). Una historia detallada de la edición de C-Kermit que se remonta a la versión C-Kermit 8.0 en 2003 está AQUÍ.

Instrucciones para UNIX (por ejemplo, Linux, macOS, HP-UX, BSD, ...):

1- Descargue el archivo en un directorio nuevo.

2- Descomprima el archivo (por ejemplo, "gunzip x.tar.gz ; tar xvf x.tar.gz" o "unzip x.zip").

Nota: Los archivos van en el directorio actual; no se crea un nuevo directorio para ellos. Por eso el archivo debe colocarse en un directorio nuevo.

3- "make xxx (xxx = objetivo de la plataforma; véase la tabla más abajo).

4- Esto crea un ejecutable, "wermit" en tu directorio actual.

Si la construcción falla, mira el objetivo en el makefile para sugerencias sobre qué hacer. Por ejemplo, si no se puede encontrar un archivo de cabecera o una biblioteca de ejecución, a menudo hay maneras de evitarlo sin tener que cambiar el makefile o los archivos fuente. Si necesitas ayuda, envía un correo electrónico ([email protected])

5- Si vas a usarlo para marcar o para hacer conexiones por puerto serie, dale el mismo propietario, grupo y permisos que a cu, minicom, tip o lo que sea (esto no se aplica a Mac OS X).

6- Cuando esté satisfecho de que funciona satisfactoriamente renómbrelo a 'kermit' e instálelo en el lugar deseado con el propietario, grupo y permisos apropiados. NOTA: No utilice "make install" a menos que tenga permisos de root (administrador del sistema). Incluso entonces podría tener algunos problemas.

PULSE AQUÍ para obtener más información.

Commonly-used C-Kermit Makefile targets

Destino

Descripción

linux

Linux, todas las versiones

freebsd

FreeBSD 4.1 o posterior

openbsd

OpenBSD 2.3 o posterior

netbsd

NetBSD 1.41 o posterior

macosx

Apple Mac OS X

macos

Apple macOS (más reciente que Mac OS X)

hpux1000

Hewlett-Packard HP-UX 10

hpux1100

Hewlett-Packard HP-UX 11

aix IBM

AIX 4.2 o posterior

solaris9

Sun Solaris 9 o posterior

Hay más de 750 objetivos en el archivo makefile, incluyendo muchas variaciones de cada objetivo enumerado anteriormente que añaden características opcionales (por ejemplo, "make linux+ssl"), eliminan características no deseadas (por ejemplo, "make linux KFLAGS=-DNODEPRECATED"), soportan versiones antiguas del sistema operativo o plataformas basadas en Unix oscuras y olvidadas, etc.

Instrucciones para VMS (también conocido como OpenVMS):

El código fuente de C-Kermit para VMS viene en un archivo Zip en lugar de un archivo Tar. Si no tiene Unzip, puede descargarlo del proyecto Info-ZIP, que considera a Zip/Unzip como el "tercer programa más portable del mundo" (después de "Hello World" y C-Kermit; vea la nota al final de la página de descargas de Info-Zip). Los archivos Zip de C-Kermit 9.0.305 deberían descomprimirse sin problemas en todos los sistemas VMS.

Para compilar C-Kermit para VMS:

  1. Cree un nuevo directorio y SET DEFAULT en él.
  2. Descargue el archivo Zip en el nuevo directorio.
  3. Descomprima el archivo Zip ("unzip x.zip").
  4. Dé el comando "@ckvker.com" para ejecutar el archivo de comando DCL que construye C-Kermit.

Si la compilación se ha realizado correctamente, aparecerá un archivo WERMIT.EXE en el directorio. Si la compilación falló inmediatamente con "%DCL-W-USGOTO, target of GOTO not found - label \\SKIP_HELP" (esto ya no debería suceder), significa que debe volver a descomprimir el archivo Zip con "unzip -a x.zip" o "unzip -aa x.zip".

Para más detalles, PULSE AQUÍ para ver las instrucciones detalladas de construcción e instalación de C-Kermit. En particular la Sección 7: Construir VMS C-Kermit desde el Código Fuente y la Sección 5: Instalar VMS C-Kermit (después de construirlo).

Registro de cambios

Los cambios en C-Kermit desde que se publicó la versión 8.0.211 el 10 de abril de 2004 aparecen primero como más recientes.

Consulte el HISTORIAL DE ACTUALIZACIONES para obtener descripciones detalladas de cada cambio; se actualiza con mucha más frecuencia que esta página (hace 15-20 años era realmente casi a diario).

Además de las versiones de prueba Beta formales de C-Kermit 10.0 que se enumeran a continuación, de vez en cuando se publican versiones de preprueba de la próxima Beta, para que los interesados puedan probar nuevas adiciones o cambios antes del próximo anuncio. PULSE AQUÍ para ver las versiones de prueba disponibles; la más reciente aparece siempre en la parte superior. Cuando hay versiones de preprueba más recientes que la última Beta, los cambios se describen AQUÍ.

03 Jul 2023 10.0 Beta.10

Se han solucionado todos los problemas señalados en la entrada anterior; se compila con Clang 15 sin advertencias de prototipo; todas las funciones están prototipadas a satisfacción de Clang, aunque C-Kermit todavía se puede compilar con compiladores antiguos anteriores a ANSI.

09 May 2023 10.0 Beta.09

Cumple con el requisito de Clang de que todas las funciones deben tener prototipos (en el caso de C-Kermit, casi 700). Aunque los prototipos estaban (casi) todos presentes, algunos tenían problemas, y algunas de las funciones correspondientes carecían de declaración ANSI.

15 Dic 2022 10.0 Beta.08

Muy parecida a la Beta.07 pero viene acompañada de la primera nueva Beta para Windows (que se llama Beta.04 pero está basada en C-Kermit 10.0 Beta.08) desde el 15 de septiembre, PULSE AQUÍ para más detalles.

07 Dic 2022 10.0 Beta.07

No más evaluación recursiva de variables a menos que lo pidas. No más verrugas. Mejor soporte para las nuevas versiones de OpenSSL. Rehabilitadas las opciones de deseleccion de caracteristicas en tiempo de compilacion para ahorrar espacio. Numerosas correcciones y adaptaciones menores.

14 Oct 2022 10.0 Beta.06

Corregido un error que impedía la compilación de Beta.05 en HP-UX. Mejorada la interfaz de usuario para acceder a mayores velocidades de interfaz. Restaurada la capacidad del comando DIRECTORY para aceptar múltiples filepecs. Restablecido el funcionamiento correcto del comando TOUCH. Cientos de ajustes del código fuente para suprimir las advertencias de los compiladores modernos. Detalles AQUÍ

27 Sept 2022 10.0 Beta.05

Soporte para un montón de velocidades serie más altas (hasta 4000000 bps). Nueva opción /INTERPRET para la orden TYPE, que interpreta cualquier barra invertida de Kermit (referencias a variables, etc.) al mostrar el contenido del fichero. Nuevas opciones /TOSCREEN e /INTERPRET para la orden COPY. Se han corregido algunos errores antiguos por los que el protocolo de transferencia de archivos podía salirse de los límites de los parámetros negociados. Eliminado el soporte para arrow-key de la versión Unix porque la API correspondiente está "obsoleta". Numerosas mejoras menores e innumerables modernizaciones de la sintaxis para reducir las advertencias del compilador. Detalles AQUÍ

03 Jun 2022 10.0 Beta.04

Corrige uno o dos errores de sintaxis fatales para la compilación.

02 Jun 2022 10.0 Beta.03

Corrige algunas advertencias y añade nuevas opciones de compilación "no networks" y "no tcp/ip".

17 May 2022 10.0 Beta.02

Corrige dos errores fatales que sólo afectan a las compilaciones que no son ANSI-C (que no puedo probar yo mismo).

16 May 2022 10.0 Beta.01

Gran cambio de número de versión (explicado AQUÍ) y mucho pulido de detalles en preparación para un lanzamiento formal: más altas velocidades de puerto serie añadidas; eliminación de más advertencias del compilador; algunos errores menores corregidos.

24 Jan 2022 9.0.307 Alpha.07

Más cambios menores para eliminar las advertencias en tiempo de compilación.

15 Dic 2021 9.0.306 Alpha.06

En algún momento desde la última versión real de C-Kermit (9.0.302 en 2011) algunas construcciones ANSI C sin protección se colaron en el código, por lo que los compiladores C pre-ANSI (por ejemplo, K&R) ya no podían compilar C-Kermit. Esto se ha solucionado en Alpha.06, junto con numerosas advertencias de compiladores quisquillosos. Muchas gracias a Peter Eichhorn de Assyst GmbH, Aschheim-Dornach, Alemania, "Herr C-Kermit/HP-UX".

14 Nov 2021 9.0.305 Alpha.05

Nuevo soporte para 1.500.000bps de velocidad de puerto serie para las plataformas que lo ofrecen. Numerosos ajustes en las API, archivos de cabecera y compiladores de C que cambiaron de C-Kermit desde la última versión. Se ha corregido un error en la transferencia de archivos que provocaba el truncamiento del nombre del archivo cuando se utilizaban paquetes ultracortos. También se corrigió un problema que ocurría al transferir cualquier archivo que contuviera 0xff bytes a través de un protocolo Xmodem externo. Lo más destacable es que ahora se han realizado con éxito construcciones del sistema operativo VMS desde la 7.3 hasta la 8.4 en varias plataformas de hardware. Consulte las notas de actualizaciones para más detalles.

14 Sep 2021 9.0.304 Alpha.04

(Alpha.03 no se subió) Nada funcional, principalmente sólo adaptaciones a los cambios en las plataformas Unix subyacentes para eliminar o al menos reducir las advertencias y errores de compilación. Además de nuevas adaptaciones a VMS de David Hittner, así como una corrección a la forma en que se creó el archivo Zip VMS. Ahora debería descomprimirse sin problemas (sin "-aa"), pero todavía puede haber algunos problemas con la compilación VMS, pero se compila sin errores ni advertencias en NetBSD, Ubuntu y Red Hat.

19 Sep 2020 9.0.305 Alpha.02

Un par de ediciones de Debian producidas en el proceso de conseguir que C-Kermit vuelva a su distribución. Además de un montón de ediciones de "cumplimiento" para que C-Kermit se construya limpiamente con el último gcc (9.3.0). Todas las advertencias (la mayoría de ellas inofensivas) fueron eliminadas en Ubuntu 20.04.1, NetBSD 9.0, y Red Hat 6.1. Los informes de otras plataformas serían apreciados; envíelos a mi dirección de correo electrónico que aparece en la parte superior.

24 Jul 2020 9.0.305 Alpha.01

§ Versión de prueba de emergencia para hacer frente a un cambio retrocompatible en glibc 2.28, en el que el símbolo _IO_file_flags, del que depende C-Kermit para hacer peeking en el buffer stdin, desapareció. Vea las diferencias con la edición anterior (9.0.304 Dev.24) aquí; el mismo cambio debería ser aplicable a versiones anteriores de C-Kermit. Por favor, comprueba C-Kermit 9.0.305 Alpha.01 con Ubuntu, Debian y otras distribuciones de Linux recientes con glibc 2.28 o posterior para asegurarte de que compila y funciona. Hasta entonces apt-gets para C-Kermit en Ubuntu y Debian y quién sabe dónde más será respondido por "E: Package 'ckermit' has no installation candidate" Esta es una solución temporal, una mejor probablemente seguirá. § El registro detallado de cambios de C-Kermit ha sido reorganizado en orden "último-primero" en lugar del tradicional orden cronológico ("último-último") y ha sido reformateado para facilitar su lectura.

7 May 2020 9.0.304 Dev.24 Con fecha: 25 Abr 2020

§ Mejoras en el análisis de fecha y hora. § Se ha corregido un fallo en el comando CHANGE.

31 Ene 2020 9.0.304 Dev.23 Con fecha: 4 Sept 2018

§ Las llamadas a funciones como \findex(a b c,\m(line)) arrojaban mensajes de error falsos ?<ERROR:MISSING_ARG:\findex()> en determinados contextos debido a los espacios incrustados en el primer argumento. Arreglar esto requería un rediseño fundamental del analizador sintáctico de comandos. Esto se hizo y he estado usando el resultado bastante intensamente durante 16 meses y parece ser sólido. Lo estoy lanzando ahora (31 Ene 2020) junto con una nueva versión del script Photogallery, que desencadena muchos de los mensajes espurios antes mencionados en Dev.22 y anteriores. La nueva galería de fotos funciona en C-Kermits hasta la versión 9.0.301, pero con diferentes cantidades de mensajes de error espurios. § Nuevo "modo palabra" para \freplace() ("help func replace"). § Lisp ROUND corregido para no perder el signo. § Algunas mejoras estéticas en el comando CHANGE.

1 May 2017 9.0.304 Dev.22

§ Rediseño fundamental del método de C-Kermit para pasar argumentos a las macros, necesario debido a un antiguo error por el que un único argumento pasado por el emisor de la llamada podía parecer varios argumentos al receptor de la llamada si contenía determinados caracteres. Fue necesario modificar 25 módulos. Con estos cambios pude finalmente escribir un script de conversión de texto a html utilizable, que está AQUÍ, y luego lo usé para convertir mi archivo de notas de actualización de C-Kermit de 9294 líneas a HTML, (Nota: la versión actual del registro de cambios tiene las entradas más recientes en la parte superior y está muy mejorada estéticamente). También en esta versión: § FOPEN /STDOUT y FOPEN /STDERR para completar el soporte para el uso de scripts C-Kermit en pipelines Unix; § Algunas mejoras en los mensajes de error que se emiten durante la ejecución del script; § varias correcciones de errores (ver notas).

21 Abr 2017 9.0.304 Dev.21

§ El nuevo comando FOPEN /STDIN permite al comando FREAD leer tanto de la entrada estándar como de un fichero. § Nuevo comando ECHO para expresiones S. Antes no había forma de imprimir cosas en código Lisp. § HELP SEXP muestra ahora el segundo argumento (decimales) de ROUND. § Nuevas opciones para GETC (comando para leer un carácter del terminal): /TIMEOUT:segundos, /QUIET (para suprimir cualquier mensaje de error), /CHECK (para ver si hay algún carácter disponible para ser leído). § \fcvtdate(cadena,códigofunción) acepta ahora el nombre de macro desnudo como código de función, siempre que el valor de la macro sea numérico (descuido corregido; se suponía que debía hacer esto en primer lugar). QUERIDA COMUNIDAD: Me gustaría hacer una nueva versión formal de C-Kermit pero necesito la cooperación de los empaquetadores para las muchas distribuciones de Linux y *BSD y Mac OS X, especialmente con respecto a OpenSSL.

16 Feb 2016 9.0.304 Dev.20

§ Se ha corregido un problema con la creación de archivos en versiones recientes de Mac OS X.

05 Feb 2016 9.0.304 Dev.19

§ Puse nuevos tamaños de cosas con ayuda de Mark Sapiro, quien las probó en algunas plataformas a las que no tengo acceso. § Ampliado el soporte de Locale a la función \fcvtdate(), por lo que ahora puedes emitir fechas adaptadas a la localización en tus scripts. Además, la función \fcvtdate() acepta un nuevo código de formato (6) para mostrar fechas con sus nombres de mes deletreados completos. Se ha actualizado la documentación sobre la configuración regional.

04 Feb 2016 9.0.304 Dev.18

§ Los cambios en el "tamaño de las cosas" se han cancelado porque provocan fallos de seguridad en algunas plataformas a las que no tengo acceso; los revisaré más adelante.

03 Feb 2016 9.0.304 Dev.17

§ Los tamaños máximos de todo tipo de búferes se han incrementado para las versiones de 64 bits, por lo que las definiciones de macros pueden ser casi infinitamente largas, los búferes de paquetes pueden contener la mayor carga posible, etc. § El comando CHANGE está ahora documentado AQUÍ. § Se agregaron nuevas características al comando CHANGE, incluyendo dos formas diferentes de preservar los archivos originales. § Se corrigieron algunos errores en el comando CHANGE (por ejemplo, no funcionaba en absoluto en Linux). § Se corrigieron errores en el comando SET TEMP-DIRECTORY. § Se corrigió un error en el comando IF WRITEABLE cuando se aplicaba a un directorio. § Se han corregido algunos problemas de robustez y defensividad con algunas de las API internas de C-Kermit. § Se ha corregido el operador ROUND de S-Expression (LISP) para que no se bloquee (como ocurría en algunas plataformas, pero no en otras). § Se ha corregido que las matrices locales se desasignan cuando desaparece el contexto en el que se declaran, incluso cuando no hacen sombra a otra matriz del mismo nombre situada más arriba.

18 Ene 2016 9.0.304 Dev.16

§ Un nuevo objetivo 'linux' en el makefile que debería corregir numerosos problemas en la selección de características y la localización de bibliotecas y archivos de cabecera. § Copyright actualizado a 2016.

25 Dic 2015 9.0.304 Dev.15

§ Cambios en makefile para la compilación en Red Hat Linux EL6 en x86_64, y en particular para detectar el caso en el que la librería ncurses está instalada pero ncurses.h no lo está (en cuyo caso C-Kermit se compila sin soporte para curses). § Parches de Bernard Spil: "Kermit falla al construir cuando se usan librerías OpenSSL construidas sin SSLv3 (configure --no-ssl2 --nossl3). Esto ha surgido cuando se construye con la última LibreSSL 2.3. Además, hay problemas con LibreSSL ya que no soporta compresión SSL ni Perl EGD como fuente de entropía".

10 Oct 2015 9.0.304 Dev.14

§ Faltaban dos llaves de cierre en ck_ssl.c en la línea 2207, lo que impedía que Dev.13 se compilara con soporte para OpenSSL.

05 Feb 2015 9.0.304 Dev.13

§ Conexiones SSL/TLS FTP, HTTP, y Telnet por defecto a TSL 1.0 en lugar de SSL 3.0 o 2.3 (gracias a Jake Thompson). § Arreglar declaraciones inconsistentes de la variable vmode que estaba causando que K95 se bloqueara cuando se construía con Open Watcom (gracias a David Berner). § Arreglado SET LOGIN USER para permitir dar una variable como nombre de usuario. § Añadido el comando SHOW FUNCTION string para mostrar los nombres de todas las funciones incorporadas cuyo nombre contenga la cadena dada. Ejemplo: "show function hex" para mostrar los nombres de las funciones incorporadas que tratan con cadenas hexadecimales; entonces puedes escribir "help function decodehex" (o lo que sea) para obtener los detalles sobre la función.

11 Ene 2015 9.0.304 Dev.12

§ Las descargas (RECEIVE o GET) bloquearían Kermit en cualquier plataforma de la familia Unix que no tenga UCCP, o cualquier otra compilación de la familia Unix realizada con -DNOUUCP. Esto ocurriría en descargas de protocolo Kermit y con FTP GET. Quizás también con SSH. Esto debería solucionarse en Dev.12. Gracias a Glenn Sherman por reportar el problema. § El año de copyright se actualizó a 2015.

03 Nov 2014 9.0.304 Dev.11

(Dev.10 omitido)

§ Arreglado el interruptor DIRECTORY /EXCEPT: para que funcione cuando también se da el interruptor /BRIEF. § Arreglado el extremo cliente de muchos comandos REMOTE, como REMOTE PWD, que había estado obteniendo errores de análisis espurios, aparentemente durante muchos años. Gracias a Alan Jones y a Harold Baldwin por informar del problema. § Se ha mejorado el texto de AYUDA para SET FILE para mencionar que SET FILE COLLISION OVERWRITE no funciona para un servidor a menos que también se le haya dicho que HABILITE DELETE. § Arreglos en \fsplit(text,array,TSV) para cuando el texto contenía caracteres de agrupación. § Actualizaciones en el soporte de Debian Linux MULTIARCH de Ian Beckwith. § Algunas correcciones de problemas de "conformidad" y declaraciones inconsistentes de Mark Wooding.

20 Ene 2014 9.0.304 Dev.09

§ Una corrección de Jeff para SET AUTH TLS VERIFY NO para permitir que los scripts se ejecuten sin interacción del usuario cuando el servidor no proporciona un certificado. § Arreglado un volcado del núcleo que podía ocurrir en el comando TOUCH. § Nueva cadena más breve para el directorio actual en C-Kermit prompt en Unix. § Adaptaciones adicionales para Windows.

06 Dec 2013 9.0.304 Dev.08

§ Algunas correcciones y cambios más para una versión Windows de C-Kermit. § Mejora de los mensajes de error de los scripts. § Supresión de errores de análisis espurios en ciertos comandos IF. § Soporte de configuración regional habilitado para ciertas operaciones de ordenación, por ejemplo, de listados de directorios.

24 Nov 2013 9.0.304 Dev.07

Correcciones para el nuevo comando CHANGE. Correcciones para NetBSD 6.1 (cambio time_t). Correcciones para \fpictureinfo() y un nuevo código de retorno, 3, para imágenes cuadradas. Correcciones para algunas de las nuevas funciones de fecha/hora con reconocimiento local. Correcciones para el último SDK de Android de Jake Thompson. Cambios para hacer que C-Kermit 9.0 se integre con los módulos de código abierto para Windows, como primer paso para lanzar una continuación de código abierto de Kermit 95, que se anunciará más adelante.

25 Jul 2013 9.0.304 Dev.06

§ SOPORTE DE LOCALES para plataformas que tienen locales (funciones de internacionalización para idiomas, juegos de caracteres, fechas, etc). Esto empieza con nuevas funciones (siguiente punto) para obtener nombres de día y mes en el idioma y juego de caracteres especificados en la configuración regional, pero también tiene otras ramificaciones que pueden no gustar a todo el mundo; por ejemplo, que puede cambiar el comportamiento de ciertas funciones como \fupper() \flower(), y \fcapitalize(), haciendo que funcionen como se espera por primera vez para idiomas distintos del inglés (al menos mientras estén codificados en un juego de caracteres de un byte como ISO-8859-1). Quizás lo más notable: cualquier mensaje generado por el sistema operativo o las APIs en lenguaje C (si están internacionalizadas) pueden salir en el idioma y conjunto de caracteres especificados en la configuración regional; por ejemplo "Archivo o directorio inexistente" en lugar de "No such file or directory". Sin embargo, dado que la interfaz de usuario de C-Kermit no está internacionalizada, sus propios comandos y mensajes siguen estando en inglés.

§ Nombres de día y mes internacionalizados: Nuevas funciones \fdayname() y \fmonthname() para proporcionar el nombre del día de la semana o mes del año que corresponde a una fecha dada, un número de día o mes, o la fecha actual, en el idioma y juego de caracteres de la configuración regional actual. Para más detalles, consulte HELP FUNCTION DAYNAME y HELP FUNCTION MONTHNAME.

§ Deshabilitar las características de localización. Para devolver a Kermit su comportamiento anglocéntrico anterior, puede (a) iniciarlo con una opción especial de la línea de órdenes, (b) definir una determinada variable de entorno, o (c) dar una orden SET LOCALE en el indicador C-Kermit> (consulte la documentación).

§ Nuevo comando CHANGE, para cambiar cadenas en archivos de texto. Por ejemplo, supongamos que gestionas un sitio web con miles de archivos en un árbol de directorios, muchos de los cuales enlazan con una página externa cuya URL acaba de cambiar. Ahora puede corregirlos todos con un solo comando de C-Kermit:

change /recursive ~/web/*.html www.oldname.com www.newname.com

El comando CAMBIAR tiene muchas opciones:

/after: /dotfiles /modtime: /not-before:

/before: /except: /nodotfiles /recursive

/case: /larger-than: /norecursive /simulate

/count: /list /not-after: /smaller-than:

...para la selección de archivos (tamaño, fecha, listas de excepciones, archivos de puntos), recorrido de directorios (plano o recursivo), tiempo de modificación de los archivos modificados (actualizados o conservados) e informe de resultados. HELP CHANGE para más detalles y opciones.

§ Added GREP /ARRAY:&a to get the names of all the files that contain text that matches a given pattern into an array, which can be looped through later to take any desired actions with the files: moving them, renaming them, transferring them, etc. The GREP command has lots of options, too, like CHANGE and TOUCH do, for file selection, recursion, what to do with results, etc.

§ Se ha añadido un nuevo código de formato \fcvtdate(), 5, que produce un resultado en formato numérico completamente delimitado: aaaa:mm:dd:hh:mm:ss, de modo que los campos individuales se pueden seleccionar fácilmente; por ejemplo, con \fword(), por ejemplo:

\fword(\fcvtdate(today,5),3) (tercera palabra de la fecha de hoy, día del mes)

Además, sólo por simetría con \v(day) y \v(nday) (que han estado en C-Kermit desde siempre), he añadido \v(nmonth), \v(month), y \v(year), que evalúan el mes actual (numérico), el mes actual (abreviatura inglesa de 3 letras), y el año, respectivamente.

§ Se ha añadido una forma de que un script de Kermit compruebe si un archivo es de texto o binario: IF BINARY filename, IF TEXT filename. Además, la nueva función \ffileinfo() devuelve ahora un resultado más detallado, que da algunos detalles más sobre la codificación si se trata de un fichero de texto: 7-bit, 8-bit, UTF-8, UCS-2.

§ Nuevas condiciones IF para comparaciones léxicas: NEQ, LLE, LGE. Antes sólo podían hacerse con IF NOT EQU, IF NOT LGT, IF NOT LLT.

15 Abr 2013 9.0.304 Dev.05

§ Se ha corregido un problema por el que SET TELNET WAIT OFF era anulado por negociaciones defectuosas del protocolo Telnet y se ha solucionado un punto muerto al negociar parámetros Telnet con la BBS Synchronet. § Añadida la función IF FUNCTION para comprobar la disponibilidad de una determinada función incorporada. § Ampliación de la función \fpictureinfo() para extraer la "fecha de toma" interna (si existe) de una foto JPG o escaneada. § Se ha añadido una nueva función \ffilecompare() para comprobar si dos archivos son idénticos. § Algunas correcciones de errores y cambios estéticos que se indican al final del registro de cambios. Las dos nuevas funciones incorporadas se utilizan en un nuevo script, renamejpgs, que renombra los JPG generados por la cámara digital y el escáner según la fecha en que se tomaron o escanearon.

22 Mar 2013 9.0.304 Dev.04

(1) Se ha añadido SET EXIT MESSAGE { ON, OFF, STDOUT, STDERR }, para que el texto (si existe) de un comando EXIT, p.ej:

EXIT 1 "Archivo no encontrado"

puede suprimirse, imprimirse normalmente o enviarse a stderr. Se ha añadido el estado EXIT MESSAGE a SHOW EXIT y se ha actualizado HELP SET EXIT.

(2) Hecha una nueva función \ffileinfo(name,&a) que rellena el array especificado con 7 u 8 (o 9) elementos:

1. el nombre del archivo;

2. la ruta completa del directorio donde se encuentra el archivo;

3. la fecha-hora de modificación del archivo aaaammdd hh:mm:ss;

4. cadena de permisos específica de la plataforma, por ejemplo "drwxrwxr-x" o "RWED,RWE,RE,E";

5. código de permisos específico de la plataforma, por ejemplo, un número octal como 40775;

6. el tamaño del archivo en bytes;

7. tipo de fichero: 1=archivo normal; 2=ejecutable; 3=directorio; 4=enlace; 0=desconocido.

8. (si el nombre del archivo es enlace) nombre del archivo enlazado.

9. (en Dev.06) "binary" o "text:xxx", donde xxx es 8bit, 7bit, utf8, etc.

12 Mar 2013 9.0.304 Dev.03

§ El comando TOCAR se ha actualizado para permitir que se aplique una fecha-hora de modificación arbitraria a los archivos tocados, en lugar de la fecha-hora actual. El comando TOUCH de Kermit es bastante potente en sus capacidades de selección de ficheros, incluyendo tamaño, fecha, tipo, patrones, listas de excepciones, recursión, etc. Escriba HELP TOUCH en el prompt de C-Kermit para más detalles. § C-Kermit ahora acorta los nombres de ruta tanto como sea posible para la visualización de transferencia de archivos, necesario porque las rutas Unix son cada vez más largas y el nombre del archivo tiende cada vez más a desaparecer del final. Esto se ha hecho sustituyendo la ruta del usuario por "~/" y/o eliminando completamente la ruta cuando el fichero está en el directorio actual de C-Kermit.

11 Mar 2013 9.0.304 Dev.02

Se trata de una versión de desarrollo, no probada ampliamente y, por tanto, no lista para su publicación. Desde que el Proyecto Kermit de la Universidad de Columbia fue cancelado, ya no tengo acceso a una amplia variedad de plataformas para desarrollo y pruebas. Novedades en 9.0.304: § Soporte para Android a través de la ruta "make linux" (Tim Sneddon). § Anotado en makefile que "make linux" funciona para Raspberry Pi. § Arreglos para OpenSSL 1.0.0 y posteriores; C-Kermit construido con OpenSSL a veces se negaba a ejecutarse cuando se detectaba una nueva versión de SSL (Adam Friedlander y Jeff Altman). § Soporte para librerías multiarquitectura en Linux (curses, resolv, etc) (Ian Beckwith). § Arreglo de un volcado del núcleo al transferir un fichero en OpenBSD sobre Sparc64 debido a algunas inconsistencias en las declaraciones entre módulos (la edición con sólo este arreglo fue marcada como 9.0.303 y puede haber llegado a algunas distribuciones de OpenBSD). § Varias correcciones menores descritas en el registro de cambios. Gracias también a Bruce Skelly por la verificación en la Raspberry Pi.

20 Ago 2011

La versión 9.0.302 de C-Kermit contiene correcciones que sólo se aplican a FreeBSD 8 y 9.

11 Jul 2011

La versión 9.0.301 de C-Kermit contiene una corrección que sólo se aplica a Solaris 10 y 11.

06 Jul 2011 Beta.01

C-Kermit 9.0.301 Beta.01. Corrige la búsqueda DNS en Solaris 10 y 11 (que aparentemente nunca ha funcionado); suprime un par de advertencias del compilador en el módulo SSL. Hasta ahora no hay necesidad de 9.0.301 en ninguna plataforma excepto Solaris 10 y 11.

30 Jun 2011

La versión C-Kermit 9.0.300 (publicada el 28 de junio, pero fechada el 30 de junio).

21 Jun 2011 Beta.02

Construye correctamente en más y más plataformas con y sin MIT Kerberos 5 y/o OpenSSL.

16 Jun 2011 Beta.01

Primera versión de código abierto. Comprobación de errores FORCE-3. Evaluación simple de variables. Consulte las notas de la versión de prueba beta de C-Kermit 9.0.

21 Sep 2010 Alpha.09

Actualizaciones de la detección de funciones SSL en Solaris y Linux; actualización de la compatibilidad con pseudoterminales en Solaris.

23 Ago 2010 Alpha.08

Soporte CSV para \fjoin(), actualización del archivo de bloqueo UUCP de Suse Linux.

05 Ago 2010

Alfa.07

Varias correcciones de errores, nueva función \fstrcmp().

07 Abr 2010

Alfa.06

Archivos de valores separados por comas, documentados AQUÍ.

05 Abr 2010

Alfa.05

Nuevas funciones: \fcvtcsets() (convierte una cadena de un juego de caracteres a otro); \fdecodehex() (decodifica escapes hexadecimales en una cadena); \fstringtype() (dice si una cadena es de 7 bits, 8 bits o UTF-8). Documentado AQUÍ.

29 Mar 2010

Alpha.04

No se podían realizar conexiones FTP desde plataformas Unix de 64 bits como Mac OS X o RHEL5 en x86_64, o cualquier sistema operativo Unix en hardware Alpha. Esto ya debería estar solucionado. También se han corregido varias advertencias de compilación no relacionadas.

19 Mar 2010

Alpha.03

Consulte las notas para más detalles. Generalidades: § Eliminación de la secuencia de escape del registro de sesión tanto por INPUT como por CONNECT. § Nuevos comandos para emitir selectivamente mensajes de progreso o depuración desde scripts. § Corrección para evitar que el intervalo fijo de espera de paquetes alcance un valor inesperado. Unix: § Ahora es posible relanzar una conexión SSH cerrada con el comando CONNECT. § A diferencia de Alpha.02, Alpha.03 puede construirse en FreeBSD 8.0 y SunOS 4.1. § Nuevo objetivo aixg para construir en AIX con gcc. § Nuevo objetivo aix+ibmssl para construir en AIX con IBM SSL. VMS: § El cliente FTP interno de Kermit ahora se incluye por defecto en cualquier compilación que también incluya red TCP/IP. § Las compilaciones en red que solicitan soporte para OpenSSL son más autoconfigurables. § Soporte preliminar limitado para el sistema de archivos ODS-5 en VMS 7.2 y posteriores. § Soporte para versiones VMS antiguas y más antiguas.

01 Feb 2010

Alpha.02

§ Corrección de #ifdefs desequilibrados en ckuusy.c de SMS, que sólo afectaba a VMS. § Corrección de INPUT /COUNT:n de Gerry Belanger. § Nueva función \fsqueeze() para comprimir cada instancia de múltiples espacios en blanco en una cadena en un único espacio en blanco (y eliminar los espacios en blanco iniciales y finales). § Para construcciones Kerberos NO_KRB5_INIT_ETS está ahora definido por defecto, ya que krb5_init_ets() ya no se usa y puede faltar en las librerías Kerberos. § Mejoras en FSEEK /FIND:pattern. § Mejoras en \fword() y \fsplit() para que funcionen correctamente con cadenas codificadas en conjuntos de caracteres de 8 bits. § Arreglo del manejo del puerto serie por John Dunlap cuando se intenta deshabilitar el control de flujo RTS/CTS en un cable de 3 hilos. § El heraldo del programa C-Kermit ahora anuncia si se incluye soporte para SSL, Kerberos 4, o Kerberos 5. § Adaptación a MINIX 3.1.5, excepto para el cliente FTP. § ckuker.nr (fuente de la página man de Nroff) se incluye ahora en el tarball para que "make install" funcione.

20 Nov 2009

Alpha.01

Primera versión de prueba alfa de C-Kermit 9.0.299, descrita aquí.

20 Dic 2006

Dev.27

Muy menor, corregidas algunas advertencias del compilador en la versión VMS.

20 Dic 2006

Dev.26

Corregidos los tiempos de espera de FTP para que funcionen tanto en el canal de comandos como en el de datos, por ejemplo para listados de directorios, y añadido código para que los tiempos de espera funcionen tanto para subidas como para descargas, pero de momento esto no se ha probado. Corregidas algunas advertencias del compilador de HP-UX 9 y anteriores sobre el nuevo código de tiempo de espera. § Se ha corregido un error en la versión VMS de C-Kermit por el que la descarga de un fichero con SET DESTINATION NOWHERE (o /CALIBRATE) podía fallar si no había suficiente espacio en el disco para guardar el fichero, aunque el fichero no se fuera a almacenar en el disco. § Cambiada \fkeywordvalue() (que analiza pares nombre=valor) para permitir que se especifiquen separadores alternativos; por ejemplo, en scripts CGI donde el separador puede ser = o &.

13 Dic 2006

Dev.25

Corregido un error en INPUT /COUNT:. Eliminada una sentencia debug() innecesaria en ckufio.c que provocaba algunas advertencias del compilador.

11 Dic 2006

Dev.24

A petición popular (especialmente esta semana con el mal funcionamiento del servidor del sitio FTP de Kermit), he añadido una función SET FTP TIMEOUT. Por ahora, sólo funciona en descargas, sólo en la conexión de datos (así que, por ejemplo, no ayuda con comandos DIRECTORY atascados). Funciona como se esperaba en conjunción con SET FTP ERROR-ACTION cuando se descargan múltiples archivos con MGET. Necesita muchas pruebas en sesiones FTP de texto claro y FTPS (SSL/TLS). Lo desarrollaré más adelante.

Otros cambios... § Se ha corregido un error en las rutinas de lectura de fechas, que ha existido durante años: si una cadena de fecha incluye una zona horaria, por ejemplo "Sat, 9 Dec 2006 19:26:23 EST", y al convertirla a GMT se cambia la fecha, las variables separadas para día, mes y año (que se utilizan más tarde) no se actualizaban, y el resultado final era un día menos. § Para protocolos de comunicación: INPUT /COUNT:n para leer exactamente n caracteres sin ninguna coincidencia. Puede usarse, por ejemplo, con $CONTENT_LENGTH en scripts CGI; los caracteres NUL se cuentan pero no se recogen. § Se ha añadido un cuarto argumento opcional a \findex(), \frindex(), \fsearch() y \frsearch(): el número de aparición deseado de la cadena buscada. § Se ha añadido \fcount(s1,s2) para indicar el número de apariciones de s1 en s2. § Se ha añadido \ffunction(s1) para saber si existe una determinada función incorporada. § Se ha cambiado RENAME /COLLISION:PROCEED por /COLLISION:SKIP, que es más claro (pero se ha mantenido PROCEED como sinónimo invisible). § Convertir "help locus" en sinónimo de "help set locus". § Se han corregido varios casos en los que una variable de cadena se comparaba mediante "==" con un literal de cadena, según Pavol Rusnak.

01 Dic 2006

Dev.23

Añadido COPY /PRESERVE (como "cp -p" en Unix) y COPY /OVERWRITE:opción. DIRECTORIO /BREVE arreglado para prestar atención a otros switches. SHOW CONNECTION corregido para mostrar el número de puerto TCP (servicio, socket) en las conexiones TCP; lo mismo para el registro de conexiones. Comando DECLARE corregido para permitir inicializadores de elementos de array vacíos (por ejemplo, variables no definidas). Corregido DIRECTORIO /ARRAY:&a para que se comporte de forma sensata cuando no se encuentran ficheros, es decir, para crear un array de dimensión 0. Corregido el tratamiento general de las matrices de dimensión 0 para que sea coherente. Corregido DIR /ARRAY:&a para producir una matriz de dimensión correcta cuando se incluyen conmutadores de selección de ficheros. Añadida la posibilidad de componer el nombre de una función, por ejemplo "define \%a superior, \f\%a(abc)". Corregidos algunos oscuros programas de análisis sintáctico en el subsistema Lisp, por ejemplo (=) se colgaba. Cambiados los operadores de predicado para que funcionen incluso si sólo hay un operando, igual que en Franz Lisp.

12 Oct 2006

Dev.22

Nuevo comando TOUCH, como UNIX pero que acepta los mismos modificadores de selección de ficheros que el comando DIRECTORY de Kermit. Nuevo objetivo netbsd+openssl makefile. Corregido el nuevo comando RENAME para que funcione en el caso de que los nombres de los ficheros origen y destino incluyan rutas. Corregidos los comandos FOPEN y FCLOSE para asegurarse de borrar y reinicializar toda la información del archivo (anteriormente era posible que parte de la información antigua, por ejemplo el número de línea actual, pudiera ser heredada de un archivo previamente cerrado). Se ha corregido una referencia variable no protegida en \fdialmessage() que rompía la compilación cuando se definía NODIAL.

05 Oct 2006

Dev.21

Un cambio bastante importante: se añadió code para no perder DTR en una conexión serie al cerrar la conexión y/o SALIR si SET EXIT HANGUP está en OFF. No tengo una buena manera de probar esto ahora, pero al menos parece compilar bien en un buen número de plataformas. Y luego algunas cosas menores... Añadido DIRECTORY /COUNT:x para contar el número de ficheros que coinciden con el criterio dado y almacenar el resultado en la variable dada. Corregido DIRECTORIO /TOP para que funcione si se omite el número de líneas, mostrando las 10 primeras. Añadido HDIRECTORY como sinónimo invisible de DIR /SORT:SIZE /REVERSE, es decir, mostrar primero los ficheros más grandes ("H "ugest); puede usarse con otros modificadores, por ejemplo HDIR /TOP para mostrar los 10 ficheros más grandes. Corregidos DIRECTORIO /FOLLOWLINKS y /NOFOLLOWLINKS, que aparentemente siempre se comportaban igual. Añadido \v(dialmessage) que es la cadena de texto correspondiente a \v(dialstatus) (p.e. 2 = "Dispositivo de comunicación no especificado"). Añadida una definición de nombre de directorio de bloqueo UUCP que faltaba para Linux (usada sólo para visualización). Aún más menor: Mensajes de error mejorados para el nuevo comando RENAME. Hecho IF KERBANG más fiable. Corregido \fkeywordval(xxx) para no definir xxx (por ejemplo, cuando un parámetro de palabra clave xxx se define sin valor). Se han truncado los mensajes de error de sintaxis superverbosos para que sólo ocupen una línea.

09 Jul 2006

Dev.20

Nueva función \fpictureinfo() para obtener información sobre imágenes JPG y GIF; PULSE AQUÍ para ver un script de demostración que crea un sitio web a partir de una colección de JPGs. Además: Verificado que el cliente FTP de Kermit transfiere archivos grandes correctamente en ambas direcciones con el servidor FTP Tru64 de 64 bits, y también maneja la recuperación correctamente en ambas direcciones (aparentemente los resultados son mixtos con otros servidores FTP que supuestamente manejan archivos grandes). He añadido FTP REPUT y FTP RESEND como sinónimos específicos de FTP para RESEND, igual que FTP REGET ya estaba disponible como sinónimo específico de FTP para REGET. He corregido el comando IF para que utilice números enteros grandes en todas las comparaciones numéricas, por ejemplo

if > \%a 3000000001 ...

(antes no funcionaba).

He corregido \fkeywordvalue() para permitir valores compuestos por más de una palabra, y he añadido \v(lastkeywordvalue) para representar la palabra clave procesada más recientemente por \fkeywordvalue(). He cambiado \f_status(\%c), cuando el argumento no estaba definido, para que se comporte igual que si contuviera un número de canal de un fichero que no estuviera abierto. Esto hace posible escribir líneas de comandos como esta:

if \f_status(\%c) fwrite /line \%c blah blah blah...

sin tener que preocuparnos de si ya hemos abierto el archivo. Qué más... He arreglado \fstripb() para que no vuelque el núcleo si se llama sin el segundo argumento opcional. Añadido \fgetpidinfo(n) para obtener información sobre el ID de proceso n; actualmente sólo para Unix, devuelve 1 si el proceso está vivo; 0 si el proceso no existe.

Además: Nuevo comando WDIRECTORY invisible = DIR /SORT:DATE /REVERSE. Y el nuevo comando /TOP:n DIRECTORY dice que sólo se muestren las n primeras líneas del listado.

12 Jun 2006

Dev.19

Soporte de ficheros grandes añadido para IRIX 6.5 por Scott Kasten. Arreglada la visualización de transferencia de archivos para RESEND/REGET de archivos grandes. Arreglado el objetivo tru64-51b+openssl makefile, las versiones SSL/TLS ahora se compilan correctamente en Tru64 Unix.

14 May 2006

Dev.18

Nueva función: SET SEXPRESSION TRUNCATE-ALL-RESULTS permite forzar a las S-Expressions a realizar sólo aritmética de enteros (véanse los dos scripts de cálculo de fechas de Pascua). Gran novedad: Un nuevo conjunto de interruptores para el comando RENAME, que permite renombrar grupos de archivos a la vez, cambiar mayúsculas y minúsculas o cambiar el juego de caracteres, eliminar espacios o cambiarlos por otra cosa, y hacer reemplazos de cadenas anclados o flotantes o basados en ocurrencias, descritos AQUÍ. Otros cambios: los comandos FILE (FOPEN, FREAD, FWRITE, FCLOSE, etc) han sido modificados para consumir mucha menos memoria. Varios #ifdefs corregidos para diferentes combinaciones de selección de características.

27 Mar 2006

Dev.17

Nuevas compilaciones seguras para Linux: linux+ssl (OpenSSL 0.9.7 o posterior); linux+krb5 (Kerberos 5); linux+krb5+ssl (ambos), probados en Red Hat AS4.3 (los objetivos antiguos ya no parecen funcionar). Corregidas las advertencias sobre getsockopt() y getsockname() en Mac OS X. Objetivos mejorados para HP-UX con OpenSSL, con y sin Zlib.

13 Mar 2006

Dev.16

Corregido FTP [M]GET /DELETE /MOVE-TO:xxx. Esta combinación nunca funcionaba. Creado un nuevo objetivo para HP-UX 10 y 11 con OpenSSL pero no Zlib, para sistemas donde Zlib no está instalado. Añadido el número de versión de OpenSSL a MOSTRAR CARACTERÍSTICAS. Verificada esta edición con AIX 5.3.

04 Mar 2006

Dev.15

Añadido soporte de ficheros grandes para AIX 4.2 y posteriores. Añadida opción SSL para AIX 5.1 y posteriores. Correcciones para IRIX 6.4 y 6.5 (el comando DIRECTORY hacía un bucle eterno). Se ha corregido el comando HELP para que funcione tanto para tokens como para palabras clave. Gracias a J. Scott Kasten por las correcciones para IRIX.

23 Feb 2006

Dev.14

Se ha intentado silenciar algunos mensajes SSL más cuando SET QUIET ON. Ajustes al objetivo makefile de HP-UX 7.00. Nuevos objetivos makefile para NetBSD e IRIX 6.5 con SSL/TLS, SRP y ZLIB. Nuevo objetivo NetBSD omitiendo curses. Nuevo objetivo IRIX 6.5 para construir con GCC. Actualizados los objetivos Linux-sin-curses (linuxnc), Linux-con-curses-más-que-ncurses (linuxc). Antiguos objetivos NetBSD retirados ya que los nuevos deberían funcionar con cualquier versión de NetBSD.

09 Feb 2006

Dev.13

Corregidos un par de errores tipográficos que causaban advertencias o fallos de compilación en algunas plataformas. Finalmente se determinó que el soporte de archivos grandes (LFS) puede ser el predeterminado en todas las versiones de Solaris (Sparc y PC), Solaris 9 y posteriores. Tal vez las versiones anteriores también, pero no tengo acceso a ellos más para comprobar. Así que todos los objetivos regulares "solarisxxx" fueron cambiados para seleccionar LFS, y los objetivos anteriores "solarisxxxlfs" son ahora sólo sinónimos.

08 Feb 2006

Dev.12

Corregidos los errores de compilación "valor demasiado grande para switch case" en el analizador sintáctico de S-Expression. Corregido el ajuste de la velocidad serie a 921600bps en las plataformas que lo soportan. Restaurada la capacidad de usar expresiones aritméticas en notación de subcadena compacta, que rompí en agosto, y esto requirió un pequeño cambio en la sintaxis en la forma [startpos-endpos] (cambiando el separador de "-" a "_" pero eso no debería molestar a nadie porque es una característica nueva y aún no documentada. Correcciones para los archivos makefile de HP-UX 6 y 7. Una nueva compilación para SCO OSR6, que requirió una buena cantidad de cambios en el código fuente además de un nuevo makefile. Corregido un error que ha estado en C-Kermit desde que se añadieron los conmutadores de comandos en la versión 7.0: las variables no se expandían en el comando RECEIVE as-name. La lista actual de compilaciones 32-32/64-64 bit está ahora en una tabla AQUÍ.

09 de enero de 2006

Dev.11

Acceso a ficheros grandes y aritmética de enteros grandes en FreeBSD, NetBSD, OpenBSD, HP-UX y UnixWare. Este es el estado actual de las versiones de 32 bits que admiten longitudes de archivo de 63 bits y aritmética de enteros. Todas las compilaciones puras de 64 bits conocidas (Tru64 Unix, Solaris con -xarch=generic64, Linux en X86_64, etc.) gestionan automáticamente archivos y números grandes. Todas las versiones normales de 32 bits (QNX 4.25, versiones antiguas de HP-UX, etc.) parecen funcionar correctamente.


Linux → OK en todas las versiones que he probado hasta Red Hat 6.1.

Solaris → OK en Solaris 9 en Sparc. No probado en Intel o en otras versiones de Solaris.

HP-UX → Probado OK en HP-UX 11.11 PA-RISC y 11i v2 IA64.

FreeBSD → Probado correctamente en Intel hasta FreeBSD 3.3.

NetBSD → OK en Intel en NetBSD 2.0.3. LFS aparentemente no está listo en NetBSD 1.x.

OpenBSD → Probado OK en Intel hasta OpenBSD 2.5

Mac OS X → Probado correctamente en Mac OS X 10.3.9 y posteriores.

UnixWare → Probado correctamente en SCO UnixWare 7.1.4.

AIX LFS → debería funcionar pero no lo he probado, no tengo acceso.

IRIX 6.5 → LFS requiere cambiar todas las APIs a blah64().

Otros cambios en Dev.11:

→ Nuevo comando FSEEK /FIND:pattern, busca la primera línea en un archivo FOPEN'd que contenga la cadena dada o que coincida con el patrón dado.

→ FSTATUS ahora se puede dar sin un número de canal si sólo un archivo es FOPEN'd.

→ Otra corrección al comparador de patrones que involucra clists; si coincide index.html [a-hj-z]* tuvo éxito cuando debería haber fallado.

→ Nos deshicimos de la prueba de función LONGLONG, no la necesitamos.

→ Los mensajes de error de comandos son menos detallados: ya no se vuelca la pila de comandos a menos que se solicite.

→ Arreglado WRITE SESSION para informar de éxito cuando tiene éxito.

→ Derechos de autor actualizados a 2006.

29 Dic 2005

Dev.10

Se ha implementado la especificación X/Open Single UNIX Versión 2 (UNIX 98) Large File Support (LFS), que permite a las plataformas de 32 bits acceder, gestionar y transferir archivos de más de 2 GB en plataformas compatibles con LFS. Estas incluyen Linux en hardware Intel PC, Mac OS X 10.3.9 o 10.4.x, y Solaris 9 y 10 (Solaris en Sparc, por supuesto, también soporta construcciones puras de 64 bits, pero la versión LFS tiene una huella mucho menor). Esto debería funcionar tanto para transferencias con protocolo Kermit como FTP, aunque todavía no he encontrado la forma de probarlo en el cliente FTP. También tiene el beneficio secundario de que el nuevo tipo de datos entero con signo de 64 bits también se puede utilizar en otros lugares, por ejemplo, en aritmética, por lo que los evaluadores de expresiones aritméticas regulares y S-Expression se actualizaron para utilizarlo cuando estuviera disponible. Esto se aplica tanto a las plataformas LFS de 32 bits como a las plataformas 100% de 64 bits. Todo esto implicó cambios masivos en el código, tocando prácticamente todos los módulos, y es seguro que hay puntos que me perdí, por lo que las pruebas a fondo está garantizada. He construido y probado hasta cierto punto en versiones de 32 y 64 bits de Linux desde 1999, además de OpenVMS, SCO Unixware 7.1, FreeBSD 4.11, Tru64 Unix 4.0F, y Mac OS X 10.3.9 y 10.4.2. Áreas a tener en cuenta:

→ ¿Funciona el comando ENVIAR tanto para ficheros normales como para ficheros largos?

→ ¿Se pueden recibir tanto ficheros normales como largos?

→ ¿Las versiones que no soportan correctamente los ficheros largos se niegan a recibirlos?

→ ¿Se ven bien todos los números en la pantalla de transferencia de ficheros?

→ ¿Se ven bien los números en los registros de depuración y de transacciones?

→ ¿Muestra el comando DIRECTORY el tamaño correcto de todos los ficheros?

→ ¿Puede utilizar FOPEN y FSEEK tanto en ficheros normales como en ficheros largos?

→ ¿Cuáles son los resultados de las siguientes expresiones S?

(^ 2 30) (^ 2 31) (^ 2 32) (^ 2 62) (^ 2 63) (^ 2 64) (^ 2 99)

→ ¿Siguen funcionando todos tus scripts?

→ etc. etc.

Al compilar, utilice "make linux" para compilar cualquier versión de Linux. Esto debería incluir automáticamente el soporte para LFS en los Linux que lo incluyan. No he sido capaz de encontrar ninguna plataforma Linux que no lo haga, pero en caso de que cause problemas, utilice "make linuxnolfs". Para Solaris, usa "make solaris9lfs" o "make solaris10lfs". No he hecho esto por defecto para Solaris todavía porque parece que ya no tengo acceso a la versión i386 de Solaris para asegurarme de que funciona allí también (Sun cc o gcc). Para Mac OS X 10.3.9 o posterior, utilice "make macosx10.4".

Añadir LFS a otras compilaciones en otras plataformas que lo soporten debería ser fácil: simplemente haga esto:

hacer limpieza

make xxx "KFLAGS=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"

donde xxx es cualquier objetivo makefile. Si haces esto, hazme saber los resultados. Otros cambios en esta edición son:

→ Corregidas las S-Expressions en la versión Mac OS X.

→ Añadido soporte HTTP a las versiones FreeBSD y OpenBSD.

→ Añadido un nuevo modificador, /EXCEPT:pattern, al comando GREP.

15 Dic 2005

Dev.09

Añadido código de almacenamiento en búfer para acelerar HTTP GET y todas las demás entradas de un servidor HTTP; el resultado es aproximadamente 20 × más rápido en una conexión de red rápida (sólo conexiones de texto claro, no SSL). Cambiados los comandos DIRECTORY y DELETE para no mostrar los nombres de archivo entre llaves al imprimir mensajes de error. Se ha actualizado el objetivo makefile de HP-UX 9.xx para evitar los volcados del núcleo por agotamiento de la pila. Corregido un error tipográfico en la definición noANSIC de ckfstoa().

04 Dic 2005

Dev.08

Descubierto que en una conexión SET PORT /SSL, Kermit trata los bytes de datos 0xff entrantes (por ejemplo, enviados desde el servidor POP) como IACs y entra en negociaciones Telnet. Esto hace imposible recuperar correo electrónico de un servidor POP SSL o TLS si el correo contiene algún byte 0xff, porque el servidor POP no hace protocolo Telnet. Los métodos SSL y TLS actuales de Kermit permitían que las negociaciones Telnet fueran iniciadas por una u otra parte. Se han añadido dos nuevos: /SSL-RAW y /TLS-RAW, que no responden a los IAC de Telnet, sino que los aceptan como datos. Además: Actualizado el texto de ayuda de INPUT y MINPUT; cambiado "make netbsd" para que sea sinónimo de "make netbsd2" porque el objetivo netbsd original era antiguo y obtenía advertencias del compilador.

03 Dic 2005

Dev.07

En el comando DATE y funciones relacionadas, se ha corregido el análisis sintáctico de fechas como "Wed, 13 Feb 2002 17:43:02 -0800 (PST)", de uso común en el correo electrónico. Se ha añadido un nuevo código de formato 4 a \fcvtdate() para emitir el formato asctime(), utilizado en los sobres de mensajes de correo electrónico con formato BSD. Añadida una nueva función \femailaddress() que, dada una línea de cabecera From: o Sender: de una dirección de correo electrónico con formato RFC2822, extrae y devuelve la dirección de correo electrónico real. Se ha añadido INPUT /CLEAR para que INPUT pueda iniciarse con un búfer limpio sin necesidad de un comando CLEAR INPUT separado. Añadido INPUT /NOWRAP que se explica AQUÍ. Corregidos algunos mensajes SSL/TLS que no eran suprimidos si SET QUIET ON. Corregido FOPEN /APPEND para que funcionara correctamente incluso si el fichero no existía. Corregido IF KERBANG para que no tenga éxito espuriamente si se usa en un script Kerbang que fue invocado por otro script Kerbang; debería tener éxito sólo para el script de nivel superior. Se han cambiado las funciones \flop() y flopx() para que tomen un tercer argumento, un número que indica en qué ocurrencia del carácter de ruptura se debe soltar, así:

\flopx(sesame.cc.columbia.edu) = edu

\flopx(sesame.cc.columbia.edu,,2) = columbia.edu

Se han sentado algunas bases más para las compilaciones híbridas de 32/64 bits (para permitir la transferencia de archivos "largos" en plataformas de 32 bits que proporcionen una API adecuada).

14 Nov 2005

Dev.06

Estrictamente para depurar un problema aislado de FTP/SSL; se ha añadido una sentencia de depuración.

11 Nov 2005

Dev.05

Más pruebas de tipo de datos en SHOW FEATURES. •• Se ha corregido un error tipográfico en el objetivo Makefile de HP-UX 7.00. •• Incluso después de los cambios anteriores, todavía era posible que SWITCH produjera resultados incorrectos si el valor de una variable case-label era demasiado largo. Ahora cualquier error de este tipo es fatal para el script en el que se produce. •• Se me ocurrió una idea después de haber escrito demasiados comandos como "dir ck[cuw]*.[cwh]" para comprobar la lista de archivos coincidentes y tener que volver a escribir la misma especificación de archivo en un comando SEND: ¿Por qué no liberar algún carácter de control no utilizado, como Ctrl-K, para escupir la última especificación de archivo introducida? Así lo hice, y también añadí una nueva variable \v(lastfilespec) que se expande a la misma última especificación de archivo, para su uso en scripts. •• La versión Unix de C-Kermit no ponía nada en el registro de sesión si SET TERMINAL DEBUG ON. Lo cambié para registrar el formato de depuración, ya que eso es lo que el usuario que notó esto quería. La alternativa sería simplemente registrar el flujo entrante sin procesar como siempre, o añadir otro comando SET a elegir.

26 Oct 2005

Dev.04

Ajuste de compilaciones para varias plataformas antiguas para evitar el fallo de compilación "long long not defined" (versiones antiguas de HP-UX, etc). Por favor, notifíqueme cualquier otro fallo. Adaptación a OpenSSL 0.9.8. Más pruebas de características de tipo datos para SHOW FEATURES (recuerde, esto es para sacudir las diferencias de plataformas antes de intentar el soporte de archivos largos para arquitecturas de 32 bits). Correcciones importantes en la sentencia SWITCH; no permitía etiquetas case largas (incluyendo variables que se expanden en cadenas largas) y bajo ciertas circunstancias podía ejecutar el case incorrecto, por ejemplo, si dos etiquetas case no eran únicas en sus primeros 50 caracteres. El límite de longitud de las etiquetas se ha elevado a 8K, ahora se detectan los desbordamientos y se han corregido algunos otros fallos difíciles de explicar.

23 Oct 2005

Dev.03

Nada importante. Sin orden especial: Evitar que HTTP POST añada un CRLF al final. Corregidas advertencias en red y FTP para funciones relacionadas con sockets en HP-UX 11i V2, y conseguidas transferencias de ficheros largos funcionando en HP-UX 11i. Añadidas pruebas a SHOW FEATURES para macros como INT_MAX, LONG_MAX, LLONG_MAX, así como sizeof(long long) para averiguar dónde vamos a tener problemas cuando empecemos a implementar el soporte híbrido de ficheros largos. Se han corregido algunos prototipos antiguos de funciones de tipo get/setuid. Se ha seguido trabajando en el comparador de patrones: patrones como "*[abc]" podían hacer que Kermit creara un bucle o volcara el núcleo; esto se ha corregido. Se ha corregido FREAD para que falle y dé un mensaje si intenta leer un registro que es demasiado grande para su búfer. FREAD /SIZE:n se ha corregido para asegurarse de que lee n bytes o falla. \Flen() y algunas otras funciones incorporadas fallaban en argumentos de cadena mayores de 8K, esto se ha corregido. ASKQ fue cambiado para no hacer eco de nada a menos que se le pida, añadiendo un nuevo modificador /ECHO:c, permitiendo especificar un caracter (como asterisco) para hacer eco. No hacer eco hace que ASKQ sea muy conveniente para su uso en scripts CGI. FTP GET /COMMAND (usado por ejemplo para canalizar un archivo entrante en más o menos) siempre volcaba el núcleo, arreglado ahora. Varias correcciones y limpiezas menores de código. Y, con esta edición, ¡C-Kermit está preparado para MINIX3!

27 Ago de 2005

Dev.02

Más trabajo de 64 bits. Cuando a una versión de 32 bits de Kermit se le envía un archivo largo, el resultado no es agradable. Primero trunca el tamaño del archivo anunciado en el paquete de atributos del remitente, de modo que las estadísticas de transferencia de archivos son erróneas, y luego, en la mayoría de los casos, cuando se alcanza el límite de 2^31 (o 2^32) bytes, se produce una trampa que provoca la salida inmediata de Kermit. Como primer paso para adaptar las versiones de 32 bits de C-Kermit a los archivos largos, arreglé estos problemas. Y descubrí que en algunas plataformas, (como en las versiones de 32 bits de C-Kermit en Mac OS X 10.3.9) el archivo se recibía con éxito de todos modos -- no me preguntes cómo. Comencé a añadir cierta conciencia de los 64 bits en tiempo de compilación (nueva macro CK_64BIT) y en tiempo de ejecución (nueva variable \v(bits)). Las compilaciones de 64 bits ahora se anuncian como tales en el banner de inicio. Se han eliminado numerosas advertencias del compilador para llamadas relacionadas con sockets en las versiones de 64 bits y espero que también en la mayoría de las de 32 bits. En otras áreas: arreglado el ASKQ asterisk-echoing en VMS; arreglada la recepción de ficheros que tenían especificaciones de dispositivo pero ningún campo de directorio en VMS; arreglados los listados REMOTE DIRECTORY para terminar las líneas correctamente (con CRLF, no sólo LF); reemplazados todos los estúpidos objetivos makefile de FreeBSD por uno consolidado ("make freebsd"); añadido un nuevo objetivo makefile ("macosx10. 4_64") para compilaciones de 64 bits en Mac OS 10.4, y a partir de ahora aumentaré el número "Dev.xx" cada vez que haya una nueva subida; esta es Dev.02.

17 Ago 2005

Algunos funcionan en versiones de 64 bits de C-Kermit. Nuevos objetivos 'solaris10_64' y 'solaris9_64' que realmente funcionan (sólo Sun CC, sigo teniendo problemas con gcc). Habiéndolos construido, encontré algunos problemas de ejecución: algunas versiones (notablemente Solaris) no hacían conexiones Telnet; otras versiones (como Linux en ia64 o x86_64) no hacían conexiones ssh. Estos problemas ya se han solucionado. La gran novedad es que las versiones de 64 bits transfieren archivos grandes correctamente entre ellas. Hasta ahora se incluyen Solaris 9 y 10, Linux en AMD x86_64, Linux en ia64 y Tru64 Unix en Alpha. Estas versiones también manejan archivos largos en todas las otras formas en que Kermit trata con archivos -- el comando DIRECTORY, las funciones relacionadas con archivos, la interfaz de archivos locales (FOPEN / FREAD / FWRITE / FCLOSE). Creo que el cliente FTP también funciona, pero es difícil de probar. El siguiente paso -- y mucho más difícil -- es manejar archivos largos en aquellas plataformas de 32 bits que los soporten, a través de cualquiera de varias "APIs de transición". También en esta edición, he cambiado la versión en texto plano de ASKQ para que haga eco de los asteriscos.

14 Ago 2005

Nuevo objetivo de compilación para Mac OS X 10.x que recoge automáticamente la versión de Mac OS, por ejemplo 10.4.2, para el programa herald. Actualizado el objetivo UnixWare 7 (uw7) para recoger también la versión UnixWare automáticamente. Corregido FOPEN para establecer la variable channel a -1 si falla en lugar de posiblemente dejarla indefinida. Añadidos dos valores especiales de canal, -8 y -9, que convierten todos los comandos FILE i/o (FREAD, FWRITE, FSEEK, etc) en noops que tienen éxito (-8) o fallan (-9). Corregido IF DIRECTORY para que funcione con nombres de ruta Unix que empiecen por tilde. Corregida la directiva de compilación NONOSETBUF (que ordena a Kermit hacer stdout sin búfer) así como la correspondiente opción de línea de comandos --unbuffered en tiempo de ejecución. Se han eliminado algunas advertencias del compilador.

11 Ago 2005

Notación de subcadena compacta ampliada para permitir especificar la posición final en lugar de la longitud; así \s(foo[12:18]) significa la subcadena de foo que empieza en la posición 12 de longitud 18, y la nueva \s(foo[12_18]) significa la subcadena de foo que empieza en la posición 12 y termina en la posición 18. // Se ha corregido un error de hace seis años relacionado con las partes ELSE compuestas desconectadas. Ahora los que prefieran poner el ELSE en la línea después de la llave de cierre de la cláusula IF pueden hacerlo de nuevo. // Añadido soporte HTTP en Mac OS X 10.3 y posteriores, y en BSDI 4.x. // Construido en Mac OS X 10.3.9 y 10.4.2, Solaris 9 y 10, RH Linux AS4, Tru64 Unix 4.0F, y SCO Unixware 7.1.4.

18 Jul 2005

Añadido soporte OpenSSL para Tru64 Unix. Añadido soporte HTTP para NetBSD. Corregido el funcionamiento del comando HTTP GET con URLs que contienen metacaracteres. Corregida la corrección del 16 de junio en el comparador de patrones. Añadido un texto de AYUDA que faltaba.

27 Jun 2005

Nuevos objetivos makefile para Solaris 10.

16 Jun 2005

Se han corregido algunos problemas de coincidencia de patrones que utilizan la construcción [a-z].

15 Jun 2005

Nuevo objetivo de compilación para Mac OS X 10.3 con Kerberos 5 y OpenSSL. Corregido error en la generación de herald para NetBSD 1.5, 1.6. Corregido SET TERMINAL IDLE-ACTION OUTPUT para que funcione como está documentado, es decir, que envíe un carácter NUL si la cadena OUTPUT está vacía. El nuevo comando SET WILDCARD-EXPANSION { ON, OFF } permite el procesamiento directo de nombres de archivo obtenidos mediante programación si contienen metacaracteres literales, o si desea escribirlos interactivamente sin todas las comillas.

12 Jun 2005

Nuevo comando IF LINK (sólo Unix) para comprobar la existencia de enlaces simbólicos. Nuevo comando SET TERMINAL LF-DISPLAY. Nueva opción de línea de comandos --unbuffered para Unix, para forzar la entrada/salida de consola sin búfer. La nueva función \flopx() devuelve el campo más a la derecha de la cadena (como la extensión del archivo). Mejorada la interpretación de IDLE-ACTION OUTPUT en la pantalla SHOW TERMINAL. Generación automática del número de versión para herald en NetBSD 2.0 y posteriores. Actualizaciones de seguridad. Corregido \fdirectory() cuando se usa con un nombre de directorio no salvaje. Corregida la diferencia de fecha/hora a través del límite del año. Corregida la AYUDA FTP para anular la configuración de verbosidad. Corregidos algunos prototipos incorrectos. Corregido un error de sintaxis en CKVKER.COM.

23 May 2004

Corrección de la rellamada automática de números que contienen espacios cuando se define MACRO DE MARCACIÓN. Añadido el lado cliente y servidor de REMOTE MESSAGE. Corregido el CD FTP para eliminar las comillas o llaves de los argumentos.

10 May 2004

Permitir el acceso a puertos FTP superiores a 16383. Corregir la salida FTP de texto Unicode a pantalla. Relajar el análisis sintáctico de FTP FEAT para permitir diferentes tipos de espacios en blanco. Corrección de la propiedad de cortocircuito de expresiones S como (AND X Y). Inhibir el cambio automático de paridad ESPACIO a NINGUNO en la descarga automática. Arreglar la MACRO DIAL para que funcione con números de teléfono de varias palabras. Arreglar la advertencia de compilación en ciertos sistemas Red Hat con respecto a <baudboy.h>.

17 Abr 2004

El archivo de bloqueo UUCP para Mac OS X era /var/spool/uucp, que no existe. Lo he corregido a /var/spool/lock, que sí existe, y he vuelto a cargar la versión 8.0.211. Puedes notar la diferencia porque SHOW VERSIONS tiene un 17 Abr 2004 para el módulo Communications I/O. También el ejecutable 10.3 tiene ahora un banner de diseño: "Mac OS X 10.3".

InicioC-KermitE-KermitKermit 95ScriptsNoticiasAcerca deFAQ

C-Kermit 10.0 / The Kermit Project / [email protected]


Author profile
Marglin Araujo

Meet Marglin Araujo, a seasoned translator with a keen ability to wield linguistic finesse in bridging cultures and capturing nuanced meanings. With a discerning eye for detail and a profound understanding of language intricacies, Marglin ensures that the essence of each text is vividly conveyed across languages, immersing readers in the richness of diverse cultures and ideas.


Related Articles
logo
El debate sobre el calentamiento global El debate sobre el calentamiento global CSR

Articulo Original: https://web.mst.edu/~cottrell/Issues/The%20global%20warming%20debate.htm
Por: Mitchell S. Cottrell

Como con cualquier teoría científica, se propone una hipótesis, se adquieren datos científicos y luego la hipótesis se demuestra o se refuta. En teoría, así es como funciona la ciencia. ¿Qué sucede cuando la política se encuentra con la ciencia? En el entorno actual, la necesidad de financiación continua para la investigación tiende a orientar los hallazgos hacia aquellos que permiten obtener aún más financiación. En el debate sobre el calentamiento global, la situación se complica por varios hechos.

La Tierra no es estática. Los modelos creados para comprender cómo responde la Tierra deben ser, necesariamente, complejos.

En la comunidad científica actual, la especialización es la regla. Cada científico es un experto en su propio campo, pero no en el de los demás que lo rodean, y tienden a creer que el suyo es el más importante.

Las presiones e influencias políticas no solo son significativas, sino que es difícil determinar quién está alimentando la agenda de quién.

Estos hechos han generado mucha especulación y teorías conspirativas. A pesar de esto, la película "Una verdad incómoda" ha sido aclamada como una obra innovadora para presentar al público los riesgos del calentamiento global, así como un llamado a la acción. La película ha circulado ampliamente y ha sido vista por millones de personas. El problema es que la película se presenta a sí misma como una obra basada en hechos científicos, cuando en realidad es poco más que una declaración política que exagera la ciencia. De hecho, muchos de los científicos que fueron citados en la película han declarado públicamente, algunos de ellos de manera bastante vocal, que el ex vicepresidente Al Gore tergiversó sus opiniones y declaraciones. Como ejemplo, un punto particular de la película afirma que un aumento de 20 pies en los niveles del mar es un efecto a corto plazo realista que podemos esperar. Afirma que toda la capa de hielo de Groenlandia y la Antártida podría derretirse rápidamente, causando inundaciones en todas las costas del mundo. El científico que proporcionó este peor escenario había declarado claramente que era una perspectiva muy improbable, con aumentos en el nivel del mar de dos o tres pulgadas en el próximo siglo como escenario más probable. Esta subida de dos o tres pulgadas también es la opinión mantenida por la mayoría de los climatólogos convencionales. Entonces, ¿a quién crees? Veamos la ciencia involucrada.


En un estudio financiado por el Programa de Procesos Criosféricos de la NASA y el Programa de Glaciología Antártica de la Fundación Nacional de Ciencias, de 1992 a 2003, Curt Davis, profesor de ingeniería eléctrica e informática de la MU, y su equipo de investigadores observaron 7.1 millones de kilómetros de la capa de hielo, utilizando satélites para medir los cambios en la elevación. Descubrieron que el interior de la capa de hielo estaba ganando masa en aproximadamente 45 mil millones de toneladas por año, lo que fue suficiente para reducir el aumento del nivel del mar en 0,12 milímetros por año.

Además, según los datos de la NOAA presentados en el sitio web de Bill Chapman del Grupo de Investigación Polar de la Universidad de Illinois (Urbana-Champaign), el nivel global de hielo marino ha alcanzado aproximadamente el mismo nivel que en 2003. El cambio actual en la cobertura global de hielo marino es de un millón de kilómetros cuadrados positivo, es decir, una ganancia de 1.8 millones de kilómetros cuadrados en el Hemisferio Sur compensada por una pérdida de 800,000 kilómetros cuadrados en el Hemisferio Norte.

¿Se está derritiendo el hielo polar y glacial? Ciertamente que sí. Pero también debemos recordar que todavía estamos (desde el punto de vista ecológico) saliendo de la última mini-edad de hielo, que terminó en 1880 (oficialmente). También debemos recordar que nuestro período interglacial actual ya tiene 10,000 años de antigüedad. Ningún período interglacial durante el último medio millón de años ha persistido por más de 12,000 años. La mayoría ha tenido una duración de solo 10,000 años o menos. Estadísticamente, por lo tanto, estamos a punto de deslizarnos hacia el próximo período glacial.

Así que volvamos a la política. Se ha hecho mucho ruido sobre el informe histórico del IPCC (Grupo Intergubernamental de Expertos sobre el Cambio Climático), que afirma claramente que el hombre y su quema de combustibles fósiles son los culpables del aumento de los niveles de CO2 y que esos niveles son responsables del cambio global de temperatura. Eso es obviamente una simplificación de lo que dice el informe, pero si realmente lo reduces, esa es la esencia. El IPCC está compuesto por cientos de científicos que combinaron sus conocimientos para producir esta obra histórica, aclamada como un hito de la colaboración científica y el consenso.

John R. Christy, miembro del IPCC, co-receptor del premio Nobel de la paz en 2007, y uno de los muchos científicos que forman parte de este consenso, hace esta declaración:

Estoy seguro de que la mayoría (pero no todos) de mis colegas del IPCC se estremecen cuando digo esto, pero no veo ni la catástrofe en desarrollo ni la prueba irrefutable que demuestre que la actividad humana sea la culpable de la mayor parte del calentamiento que vemos. Más bien, veo una dependencia de los modelos climáticos (útiles pero nunca una "prueba") y la coincidencia de que los cambios en el dióxido de carbono y las temperaturas globales tienen una similitud temporal imprecisa. Algunos de nosotros seguimos siendo tan humildes ante la tarea de medir y comprender el sistema climático extraordinariamente complejo que somos escépticos de nuestra capacidad para saber qué está haciendo y por qué. Sin embargo, a medida que construimos conjuntos de datos climáticos desde cero y observamos el interior del sistema climático, no encontramos que la teoría alarmista coincida con las observaciones. (Los datos satelitales de la Administración Nacional Oceánica y Atmosférica que analizamos en la Universidad de Alabama en Huntsville muestran un calentamiento modesto: alrededor de 2.5 grados Fahrenheit por siglo, si las tendencias actuales de calentamiento de 0.25 grados por década continúan).

Dada esta declaración de uno de los científicos que escribió el informe que se utiliza hoy en día como la biblia del calentamiento global, uno tendría que preguntarse, ¿exactamente qué tipo de consenso hubo para este informe innovador? La respuesta es que cuando se les preguntó, de los 345 científicos estadounidenses que estaban en el comité, solo el 14% estuvo de acuerdo en que el clima ideal era más frío que el clima actual. (http://prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/11-08-2007/0004701174&EDATE=). Si un total del 14% representa un consenso sobre este punto más importante del debate, entonces, ¿qué tipo de consenso tuvo el resto de los puntos del informe?

Dejando de lado el consenso, veamos el tema principal que el informe reclama. "El CO2 generado por el hombre, principalmente a través de la quema de combustibles fósiles, es responsable de un aumento de la temperatura global sin precedentes en la historia conocida". De nuevo, esto es una generalización, pero resumir cientos de páginas aburridas a algo legible requiere un poco de simplificación. Ahora echemos un vistazo a la afirmación.

La generación de CO2 por la quema de combustibles fósiles está causando un aumento de la temperatura global. Para que esto sea cierto, tendría que haber un aumento promedio de la temperatura global. El siguiente gráfico muestra el cambio de temperatura para el año 2007 frente a la temperatura promedio de 1880 a 1980. Tenga en cuenta que los colores rojos son temperaturas más altas y los azules son más frías.

Observando este gráfico, queda claro que el aumento general de la temperatura no es global. De hecho, hay zonas significativamente más frías. La teoría sostiene que la agitación del aire y las corrientes de las tormentas generalmente mezclan suficiente aire como para que un cambio de temperatura global equivalga a una tendencia general al alza en todo el planeta, con algunas anomalías de temperatura más alta que aparecen localmente de manera intermitente. El gráfico, generado a partir de datos proporcionados por NASA GISS (http://data.giss.nasa.gov/gistemp/maps/), muestra claramente que hay áreas significativas de temperaturas más altas y muchas de temperaturas más bajas. Tenga en cuenta también que las áreas de temperaturas más altas NO coinciden con las áreas que se dice que son las principales productoras de CO2. Mirando el mapa de EE. UU., puede ver claramente que grandes secciones del país tienen temperaturas más bajas. ¿No sería la conclusión natural que, si los grandes productores de CO2 tuvieran más CO2 sobre ellos, y si el CO2 fuera la causa real, entonces la temperatura en estas áreas no sería más alta? Lo que vemos es que las temperaturas más altas NO coinciden de ninguna manera con localidades que producen grandes volúmenes de CO2. Ahora bien, los expertos argumentarían que al CO2 le lleva más tiempo llegar a la atmósfera superior. Una vez allí, se propaga por todo el globo. Si esto es cierto, ¿por qué solo hay pequeños puntos de aumento de temperatura?

El gráfico anterior, generado a partir de la Administración de Información Energética, muestra que las áreas que corresponden a las zonas de mayor aumento de temperatura son en realidad los productores más bajos de CO2.

La teoría también sostiene que el CO2 en la atmósfera refleja la radiación infrarroja hacia el suelo, calentando la Tierra. ¿De dónde proviene esta radiación? En pocas palabras, proviene del sol. Ahora bien, si el CO2 refleja la radiación infrarroja del sol, ¿cómo puede pasar en primer lugar? ¿No crees que nos enfriaríamos, en lugar de calentarnos, con toda esa radiación infrarroja reflejada hacia el espacio debido a los altos niveles de CO2? Ah, sí, eso es correcto. Solo refleja la radiación DESPUÉS de que pasa por primera vez. Intenta este argumento en un trabajo de ciencias de la tierra de secundaria y seguramente encontrarás que está adornado con una calificación reprobatoria. ¿Por qué entonces este argumento tendría validez en cualquier otro lugar?
Otro problema grave con el argumento de que el CO2 causa temperaturas más altas son las temperaturas oceánicas. Un estudio reciente de las temperaturas oceánicas frente a las temperaturas del aire muestra que las temperaturas oceánicas son más altas que la temperatura del aire correspondiente. Hmmmm, pensemos en eso por un segundo. ¿El aire más frío calienta el agua del océano? Algo no cuadra. Bueno, el hecho es que no cuadra. El agua del océano no se calienta por el aire. Sin embargo, se calienta por la radiación infrarroja. Ah, sí, ahí está esa radiación infrarroja de nuevo. Solo que esta vez, es exactamente correcta. El agua absorbe grandes cantidades de radiación infrarroja. Cualquiera que haya pasado tiempo en un clima árido sabe que los cambios de temperatura son enormes, en comparación con un clima más húmedo, como una selva tropical, donde los cambios diarios son de solo unas pocas decenas de grados como máximo. En un desierto, puedes ver una temperatura baja en la noche de casi congelación y una alta por encima de los cien grados Fahrenheit. ¿Por qué es esto? Cualquier buen meteorólogo o profesor de ciencias de secundaria puede responder eso sin siquiera abrir un libro. Una tierra árida no tiene agua para absorber la radiación infrarroja del sol y luego emitir el calor almacenado durante las áreas oscuras. Este almacenamiento de energía funciona en el agua de la tierra, el aire y las plantas. Así que volvamos a nuestro océano. ¿De qué está hecho un océano? ¡Agua! Eso es correcto. Los océanos se calientan por el sol. Ahora, lo siguiente se vuelve un poco técnico, pero intentaré simplificarlo. Los océanos contienen altas cantidades de CO2. La mayor parte de esto está en el agua en lo que se conoce como solución. La cantidad de CO2 que el agua puede contener está directamente relacionada con la temperatura del agua. Cuanto más caliente esté el agua, menos CO2 puede contener debido a algo conocido como presión parcial. Ahora bien, si el agua se está calentando, ¿crees que está liberando más CO2? Por supuesto que sí. Y la evidencia muestra que los océanos están liberando su CO2 a ritmos tremendos. El siguiente gráfico muestra un ejemplo de lo que se conoce como el ciclo del carbono.

Tenga en cuenta que la quema de combustibles fósiles libera 5.3 mil millones de toneladas de carbono por año. Los océanos liberan y reabsorben entre 100 y 115 mil millones de toneladas por año. Mirando esto como un problema de concentración, los niveles de CO2 en la atmósfera aumentaron en 5 partes por millón entre 2001 y 2003. Según el Dr. Jarl Ahlbeck de la Universidad Abo Akademi, Finlandia, un aumento de temperatura de un grado en el océano puede aumentar los niveles atmosféricos de CO2 entre 10 y 20 partes por millón. (http://www.john-daly.com/oceanco2/oceanco2.htm)

Ahora bien, puede que solo sea un simple ingeniero, pero si los océanos se están calentando y los océanos cálidos crean varias veces más CO2 que el aumento observado entre 2001 y 2002, ¿no tendría sentido que esto sea un factor significativo en el aumento global de CO2? De hecho, un aumento de la temperatura promedio del océano de solo un cuarto de grado explicaría TODO el aumento de CO2 que observamos el año pasado. Este mismo punto ha sido señalado por el Dr. Ahlbeck. Los estudios de núcleos de hielo que cubren el clima de los últimos 60,000 años muestran que primero llega el calentamiento, luego el CO2. Esto se ha conocido y establecido en una serie de estudios científicos desde 1989. (http://www.co2science.org/scripts/CO2ScienceB2C/articles/V6/N26/EDIT.jsp)

Entonces, si el calentamiento viene antes del CO2 (de acuerdo con la ciencia real, no la política), ¿cuál es el factor determinante? Veamos. El infrarrojo calienta el agua del océano y el agua del océano emite CO2. Y sabemos que el agua en la mayoría de los climas absorbe infrarrojos moderándolos. Entonces, ¿es posible que el vapor de agua sea un factor? ¿Hay más vapor de agua en las zonas más cálidas de la atmósfera? Según la NOAA, las temperaturas más altas y el mayor contenido de vapor de agua están claramente relacionados, el uno alimenta al otro. La pregunta es, qué viene primero y qué alteró el ciclo de retroalimentación que mantiene las cosas bajo control.

En pocas palabras, sin el efecto invernadero, no habría vida en la Tierra. Es lo que nos impide convertirnos en poco más que un trozo de roca flotando en el espacio como la Luna. El siguiente diagrama muestra una versión muy simplificada de cómo funciona el efecto invernadero (tomado de Junkscience.com).

Puede ver que hay muchos factores que reflejan los infrarrojos tanto lejos de la Tierra como hacia ella. El equilibrio de estas energías es lo que permite que nuestro planeta se mantenga a sus cómodas temperaturas de vida. Cuando este equilibrio cambia, la Tierra cambia. Algunos de estos cambios son a largo plazo y otros a corto plazo. Como ejemplo, la década de 1880 fue el final de lo que se conoce como la pequeña edad de hielo, un período de la historia de nuestro planeta que comenzó en el siglo XVII, donde la temperatura promedio global bajó alrededor de medio grado. Este período siguió a un período de temperatura relativamente más alta conocido como el período cálido medieval, un aumento que alcanzó su punto máximo alrededor de dos décimas de grado en el año 1100. ¿Qué causó estos períodos más cálidos y más fríos? ¿Qué alteró el equilibrio y permitió que el equilibrio global cambiara? Científicamente, ya hemos eliminado el CO2 como causa, los datos de núcleos de hielo muestran claramente que los niveles de CO2 aumentaron después del calentamiento.
La respuesta es que simplemente no lo sabemos. Los modelos climáticos que se utilizan para determinar lo que está haciendo el clima global son simplemente inadecuados. Ninguno de los dieciséis modelos que existen actualmente predice correctamente nuestra situación actual sin "ajustes". Este ajuste es una recalibración manual a una temperatura arbitraria de 14 grados Celsius. ¿Por qué se hace esto? Porque si no lo haces, ninguno de los modelos predice con precisión dónde estamos hoy. Ahora bien, si vas a una tienda de comestibles, querrás que la caja registradora sume exactamente lo que gastas. ¿Cuántos de ustedes irían a una tienda que cobrara la mayor parte de su pedido y luego calculara cuánto debería ser su total y le cobrara por eso? Sé que yo no lo haría, pero eso es exactamente lo que quiere que hagas el IPCC. Tienen modelos que toman datos históricos y suman esos datos. En teoría, si el modelo es correcto, debería ser capaz de predecir un corto período en el futuro. Desafortunadamente, los modelos no funcionan, por lo que para reforzar su argumento de que el CO2 es el problema, ajustan el modelo para obtener el resultado que quieren. La realidad es que la temperatura media absoluta del aire superficial de la Tierra no se conoce y no hay una especificación de exactamente lo que estamos tratando de medir o cómo hacerlo. Nadie sabe cuál sería la temperatura óptima de la Tierra o cómo podría ajustarse de manera consciente y predecible, incluso si se pudiera acordar un óptimo.

¿Existe el calentamiento global? Ciertamente que sí. Si no fuera así, seríamos una bola de hielo flotando en el espacio. El verdadero problema es cuánto cambio climático global es bueno y cuánto es natural. ¿Somos realmente tan vanidosos como para pensar que realmente podemos afectar nuestra atmósfera en tal grado en un período de tiempo tan corto? La realidad nos muestra que una sola erupción volcánica masiva puede causar un cambio climático masivo. El año sin verano, 1816, fue causado por la erupción del Monte Tambora en abril del año anterior. El invierno volcánico causó un enfriamiento grave y aberraciones de temperatura en todo el mundo durante el próximo año. Pero incluso esto fue de corta duración. El sistema de corrección activo de la Tierra se ajustó y las cosas volvieron a la normalidad. Otro ejemplo son todas las pruebas científicas que erróneamente culparon a nuestra producción de clorofluorocarbonos por crear el agujero de ozono sobre el polo sur. Toda esa buena evidencia científica fue proporcionada por los científicos de Dupont, que casualmente estaban en posesión de las patentes de los productos basados en Freón que supuestamente causaban ese agujero. Las mismas patentes que estaban a punto de expirar y fueron rápidamente reemplazadas por patentes de los nuevos Freones. Pero ¿qué pasa con el agujero? En un artículo titulado "Forty Years' Research on Atmospheric Ozone at Oxford: A History" (Applied Optics, marzo de 1968), Dobson describió un programa de monitoreo de ozono que comenzó en Halley Bay en 1956. En este programa de monitoreo, describió lecturas en 1956, veinte años antes del uso de CFC, indicando que había una caída estacional en los niveles de ozono justo donde se "descubrió" el agujero en los años 90. ¿Fue este un descubrimiento motivado científicamente por los científicos de Dupont? Aparentemente no. Parece haber sido poco más que un descubrimiento motivado financieramente que usted está pagando actualmente todos los días. ¿Es el CO2 una causa válida de "calentamiento global"? Una vez más, aparentemente no, pero si la máquina política se sale con la suya, usted pagará por este descubrimiento con costos paralizantes para intentar controlar las emisiones que no tienen ninguna prueba científica de ser más que un indicador de un fenómeno natural. ¿Esto significa que no deberíamos preocuparnos? Claramente hay espacio para la preocupación, sin embargo, es preocupación por entender lo que está sucediendo, no por actos precipitados que podrían no tener otro efecto que destruir las economías enteras de los países.


logo
La guía de referencia de Hoffman La guía de referencia de Hoffman CSR

Articulo original : https://www.freesoft.org/software/hoffman/13Sep2018/reference.pdf
Por : Brent Baccala


Septiembre 13, 2018

Hoffman es un programa para resolver finales de ajedrez usando análisis retrógrado, que es muy diferente de los programas convencionales de ajedrez por computadora. El análisis retrógrado solo es útil en el final, funciona muy lentamente y produce enormes cantidades de datos. Su gran ventaja radica en su capacidad para resolver completamente el final. En un sentido muy real, un motor retrógrado no tiene un "horizonte de movimiento" como un motor de ajedrez convencional. Lo ve todo. Para aquellos que no estén al tanto de la cultura estadounidense, el programa lleva el nombre de Trevor Hoffman, un lanzador de béisbol All Star que se especializa en "cerrar" juegos. Fue escrito específicamente para el juego The World vs. Arno Nickel.

Hoffman usa XML extensivamente tanto para configurar su operación como para etiquetar las bases de datos resultantes. De hecho, una base de datos Hoffman completa (típicamente en un archivo .htb) es solo un archivo comprimido con gzip que contiene un prefijo XML seguido de datos binarios de la base de datos (en un formato especificado por el XML). Básicamente, para operar Hoffman, se escribe un archivo XML que especifica el análisis que se quiere hacer, y luego se lo alimenta al programa. Como salida, produce una versión modificada del XML de entrada que incluye datos binarios de la base de datos añadidos al final.

1 Procesamiento Paralelo con Hoffman
Un análisis de Hoffman puede ser bastante intensivo en computación. El programa se puede compilar para usar hilos POSIX (si están disponibles), con el número de hilos especificado en tiempo de ejecución usando la opción -t. El programa también está diseñado para usar múltiples computadoras en paralelo, todas trabajando simultáneamente en un análisis. Esto se logra dividiendo el análisis en piezas más pequeñas, cada una con su propio archivo de configuración XML.

2 Tablas de propagación

Un análisis de Hoffman también puede ser bastante intensivo en espacio. Dado que su patrón de utilización de memoria es básicamente aleatorio, Hoffman comenzará a intercambiar dramáticamente y sufrirá una caída desastrosa en el rendimiento una vez que el tamaño de su conjunto de trabajo exceda la memoria disponible de la máquina. Para aliviar esto, el programa se puede operar en un modo en el que llena una serie de tablas de propagación, escribiendo cada una en disco cuando está llena, y luego las lee secuencialmente durante la siguiente pasada. Aunque menos eficiente que cuando el conjunto de trabajo puede contenerse en la memoria, las tablas de propagación permiten al programa construir bases de datos de tamaño esencialmente ilimitado sin intercambio y con una utilización razonable de la CPU. Este modo se activa en tiempo de ejecución especificando el tamaño de las tablas de propagación (en MB) con el interruptor -P. Los archivos temporales se escribirán en el directorio actual.

Por ejemplo, el comando hoffman -g -t 2 -P 1024 kqqkqq.xml activará una ejecución de generación de Hoffman con dos hilos, utilizando un gigabyte (1024 megabytes) de memoria.
3 Sintaxis XML

El elemento XML raíz en una base de datos Hoffman es siempre <tablebase>. Su único atributo (offset) es añadido por el programa, no debe ser suministrado por el usuario, e indica un desplazamiento de bytes hexadecimal en el archivo donde comienzan los datos binarios de la base de datos.

Dentro de un <tablebase> pueden ocurrir los siguientes elementos en el orden listado (los elementos y atributos obsoletos no están documentados):

3.1 <prune-enable color="white|black" type="concede|discard"/>
Especifica qué tipos de elementos de poda se permitirán en esta base de datos y en sus futuras bases. Ambos atributos son requeridos. concede significa que se pueden conceder victorias al color nombrado; discard significa que los movimientos del color nombrado pueden ser descartados. Se puede especificar como máximo un prune-enable para cada color. Sin embargo, no se requiere ningún elemento prune-enable, pero no se permiten elementos prune sin uno y las futuras bases no pueden tener elementos prune-enable adicionales más allá de los especificados para la base de datos actual.
3.2 <variant name="normal|suicide"/>
El elemento opcional <variant> especifica qué versión de las reglas de ajedrez se aplica a esta base de datos.

Predeterminado: normal
3.3 <index type="naive|naive2|simple|compact|no-en-passant|combinadic|combinadic2|combinadic3|combinadic4|pawngen" symmetry="1|2|4|8"/>
El elemento <index> especifica el algoritmo que se utilizará para calcular los números de índice en la base de datos; es decir, el algoritmo que convertirá las posiciones del tablero en desplazamientos de la base de datos y viceversa. Normalmente no es especificado por el usuario (pero puede serlo).

naive utiliza 26n+1 índices para almacenar posiciones para n piezas. Asigna un solo bit para la bandera de turno de juego, luego asigna 6 bits a cada pieza, que se usa para codificar un número de 0 a 63, indicando la posición de la pieza en el tablero.

naive2 Difiere de naive en su manejo de múltiples piezas idénticas, que almacena como una base y un desplazamiento, ahorrando así un solo bit. Actualmente, solo se manejan pares de piezas idénticas; se producirá un error fatal si hay más de dos piezas idénticas.

simple Como naive, pero solo asigna números a los cuadrados que son legales para una pieza en particular. Más lento de calcular que naive, pero más compacto para las bases de datos con muchas restricciones de movimiento en las piezas.

compact Una combinación de la codificación delta utilizada para piezas idénticas en naive2, la codificación de piezas restringidas utilizada en simple, más una codificación emparejada de los reyes para que nunca puedan ser adyacentes.

no-en-passant Una mejora de compact que utiliza el esquema de codificación emparejado para peones restringidos al mismo archivo. Como nunca pueden pasarse entre sí, podemos codificarlos como si fueran un par idéntico, y luego asignar sus colores en el mismo orden en que fueron especificados originalmente. En passant complica esto significativamente y no puede ser manejado con este esquema.

combinadic
Una mejora de naive2 que puede codificar más de dos piezas idénticas y superpuestas utilizando un esquema de codificación combinatoria (ver la página de wikipedia "Sistema de números combinatorios").

combinadic2 Como combinadic, pero las piezas posteriores completamente contenidas en el rango semilegal de las piezas anteriores se codifican utilizando menos posiciones. El orden de las piezas es significativo. No se realiza ningún intento de reducir la codificación de los peones.

combinadic3 Como combinadic2, pero las codificaciones de peones también se reducen, reduciendo su valor de codificación (con en-passant incluido), mientras que se usa su posición en el tablero para reducir otras piezas.

combinadic4 Como combinadic3, pero las bases de datos simétricas de color, aquellas invariantes al intercambiar colores, se optimizan eliminando la bandera de turno de juego, reduciendo el tamaño de la base de datos a la mitad. (por ejemplo, kqkq es simétrico de color, pero kqkr no lo es)

pawngen Como combinadic4, pero los peones se manejan por separado construyendo una tabla de todas las posibles posiciones de peones que pueden resultar de una configuración inicial de peones dada.


El atributo opcional symmetry se puede usar para codificar múltiples posiciones usando una sola entrada, pero su utilidad depende del análisis exacto que se esté realizando. Una base de datos sin peones y sin restricciones de movimiento se puede codificar con simetría de 8 vías, ya que el tablero se puede rotar alrededor de un eje horizontal, vertical o diagonal sin afectar el comportamiento de las piezas. Una base de datos con peones puede utilizar una simetría de 2 vías como máximo, ya que solo un reflejo sobre un eje vertical preserva el comportamiento de las piezas. Una base de datos con restricciones en las posiciones de las piezas (por ejemplo, peones congelados) no puede usar ninguna simetría en absoluto. No todas las simetrías son compatibles con todos los tipos de índice; por ejemplo, la simetría de 8 vías no se puede utilizar con los tipos de índice naive o naive2.

Predeterminado: combinadic4 con simetría seleccionada automáticamente, a menos que haya un elemento pawngen presente en el XML, lo que activa pawngen.
3.4 Formato de base de datos
Los siguientes tres elementos especifican el formato de las entradas de la base de datos. Como máximo se puede especificar uno de ellos.

<dtm bits=integer/> especifica una métrica de distancia al mate. Se utiliza cero para los empates, -1 para las posiciones en las que el lado en movimiento está en jaque mate, y 1 para las posiciones en las que el lado en movimiento puede capturar al rey contrario, por lo que un campo dtm de ocho bits puede registrar distancias al mate de hasta 126. Si no se especifica un tamaño de campo, se selecciona automáticamente.

<dtc bits=integer/> especifica una métrica de distancia a la conversión, que es el número de movimientos necesarios antes de alcanzar una base de datos diferente. Se utiliza cero para los empates, -1 para las posiciones en las que el lado en movimiento está en jaque mate, y 1 para las posiciones en las que el lado en movimiento puede capturar al rey contrario, por lo que un campo dtm de ocho bits puede registrar distancias de hasta 126. Si no se especifica un tamaño de campo, se selecciona automáticamente.
<basic/> especifica una bitbase donde se utilizan dos bits para cada posición, y no se almacena información de distancia, solo una indicación del resultado final (ganar, perder o empatar). Tal formato es más compacto y requiere menos tiempo para generar, pero requiere más esfuerzo de usar, ya que se debe tener cuidado de evitar bucles al seguir líneas ganadoras.

<flag type="white-wins|white-draws"/> especifica una bitbase donde solo se usa un bit para cada posición. white-draws incluye tanto las posiciones ganadoras como las de empate para las blancas, por lo que esencialmente se da la situacion: NOT Black-wins.

Predeterminado: DTM con tamaño de campo seleccionado automáticamente.

3.5 <piece color="white|black" type="king|queen|rook|bishop|knight|pawn"location="string"/>

Los elementos piece se utilizan para especificar las piezas de ajedrez presentes en la base de datos. El color y el tipo son requeridos y deben ser obvios. El orden de los elementos de piece es significativo ya que afecta directamente al algoritmo de indexación, pero no hay ningún efecto visible para el usuario en el orden.

El atributo opcional location restringe las posiciones del tablero disponibles para esta pieza. Debe ser una lista de cuadrados, en notación algebraica, en los que se permite que esté la pieza. Un solo cuadrado resulta en una pieza completamente congelada. Además, los peones pueden usar una sintaxis adicional que consiste en un solo cuadrado inicial seguido de un signo más, lo que indica que el peón puede moverse hacia adelante lo más lejos posible. Esto se puede usar, por ejemplo, para ubicar un peón negro en "a7+" y un peón blanco en "a2+", indicando que ambos pueden moverse hacia adelante, pero no pueden "pasarse" el uno al otro.

3.6 <pawngen white-pawn-locations="string" black-pawn-locations="string"

white-pawns-required="number" black-pawns-required="number"

white-queens-required="number" black-queens-required="number"

white-captures-allowed="number" black-captures-allowed="number"/>


Las configuraciones de peones se pueden especificar utilizando un elemento pawngen en lugar del elemento piece. Se especifica un conjunto de ubicaciones iniciales de peones para cada color utilizando los atributos *-pawn-locations, y se calculan todos los posibles movimientos de peones desde esa configuración inicial. Dado que el número y los tipos de piezas son fijos para cada ejecución del programa, los atributos *-pawns-required deben especificarse para indicar cuántos peones de cada color están permitidos. Opcionalmente, los atributos *-queens-required pueden especificarse para forzar la consideración de posiciones donde cierto número de peones se han convertido en reinas, y los atributos *-captures-allowed incluyen la consideración de posiciones donde cierto número de piezas que no son peones han sido capturadas (las capturas de peones ya se consideran).

El script Perl auxiliar pawngen puede aceptar archivos de control sin atributos *-pawns-required, y genera nuevos archivos de control interconectados con los atributos requeridos añadidos.
3.7 <futurebase filename="string" colors="invert"/>
Se puede especificar una o más futuras bases con este elemento. Se debe especificar un comando filename para localizar una futura base, que debe ser otra base de datos, ya sea en formato Hoffman, Nalimov o Syzygy. La ruta a una base de datos Nalimov se ignora; debe estar en el directorio especificado en la línea de comandos usando la opción -N.


La futura base debe estar relacionada con la base de datos actual de una de las siguientes maneras:

Tiene exactamente la misma configuración de piezas que la base de datos actual, y corresponde al movimiento de una de las piezas restringidas, es decir, la base de datos actual tiene un peón blanco congelado en e4 y la futura base tiene un peón blanco congelado en e5.

Tiene exactamente la misma configuración de piezas que la base de datos actual excepto que falta una sola pieza, es decir, ocurrió una captura.

Tiene exactamente la misma configuración de piezas que la base de datos actual excepto que un solo peón ha sido reemplazado por un caballo, alfil, torre o reina, es decir, un peón promovido.

Tiene exactamente la misma configuración de piezas que la base de datos actual excepto que un solo peón ha sido reemplazado por un caballo, alfil, torre o reina, y se ha eliminado una sola pieza no peón del color opuesto, es decir, un peón capturado y promovido en el mismo movimiento.
El atributo opcional colors="invert" puede especificarse para indicar que los colores de las piezas de la futura base deben invertirse a medida que se procesa. Esto evita la necesidad de calcular, por ejemplo, una base de datos con una reina blanca y una torre negra, así como una base de datos con una reina negra y una torre blanca. La primera puede ser utilizada (con esta opción) como una futura base para calcular una base de datos con dos torres blancas y una reina negra.

Nota: Cualquier elemento prune-enable de la futura base debe ser un subconjunto de los elementos prune-enable de la base de datos actual.
3.8 <prune color="white|black" move="string" type="concede|discard"/>
Los movimientos futuros no manejados especificando futuras bases deben ser podados usando uno o más de estos elementos, o se producirá un error. La accion move se especifica usando sintaxis de expresión regular para hacer coincidir un movimiento en un subconjunto de notación algebraica estándar. Todas las siguientes cadenas son ejemplos de cadenas de movimientos legales en un elemento prune: Pe5, P=Q, RxQ, PxR=Q. Las siguientes expresiones regulares coincidirían con Kd4: Kd?, K?4, K[a-d]4, K*. El atributo type especifica qué se debe hacer con los movimientos coincidentes: tratarlos como victorias para el lado en movimiento en este caso; (concede), o ignorarlos completamente con(discard). Si múltiples elementos prune coinciden con un movimiento particular, es una advertencia avisara si son del mismo type, o un error fatal saltara si sus types difieren.

Se puede especificar un solo elemento prune con move="stalemate" y type="concede". En este caso, el atributo color indica a qué lado se deben conceder los empates como victorias.
Nota: los elementos prune no afectan los movimientos dentro de una base de datos. Especificar un elemento prune que solo coincida con movimientos dentro de una base de datos no hará nada.

Nota: Si se especifica un elemento prune para un futuro movimiento manejado por una futura base, entonces la futura base tiene prioridad. Sin embargo, este caso se maneja rastreando cada futuro movimiento en cada posición, por lo que es posible especificar futuras bases que manejen un subconjunto de los posibles movimientos futuros, y luego usar elementos prune para manejar el resto por defecto.

Nota: los elementos prune solo están permitidos si coinciden con un elemento prune-enable. Si no se especificaron elementos prune-enable, entonces no se permitirán elementos prune.

Nota: Las versiones anteriores de Hoffman permitían un atributo pawngen-condition que ya no es compatible.
3.9 Controles de generación

Estos elementos son todos opcionales, pero siempre que output no sea especificada, se debe especificar un nombre de archivo de salida output en la línea de comandos usando el interruptor -o.
3.9.1 <output filename="string"/>
Como máximo debe utilizarse un único elemento de output para especificar dónde debe escribirse la base de datos terminada.
3.10 <tablebase-statistics> ... </tablebase-statistics>
Este elemento es añadido por el programa y no debe ser especificado en la entrada. Contiene estadísticas relacionadas con la base de datos terminada.


Elementos

Interpretacion

indices

Número total de entradas en la base de datos no comprimida

PNTM-mated-positions

Número total de posiciones en las que el jugador que no se mueve está en jaque mate; es decir, posiciones ilegales en las que un rey puede ser capturado inmediatamente

legal-positions

Número total de posiciones legales; es decir, número total de entradas, menos entradas ilegales donde dos piezas ocupan el mismo espacio, menos posiciones de jaque mate PNTM

stalemate-positions

Posiciones de tablas (no empate por repetición)

white-wins-positions

Posiciones desde las que las Blancas pueden forzar una victoria

black-wins-positions

Posiciones desde las que las Negras pueden forzar una victoria

forward-moves

Número total de movimientos hacia adelante desde posiciones en esta base de datos (incluyendo movimientos futuros)

futuremoves

Número total de movimientos hacia adelante desde posiciones en esta base de datos hacia futuras bases o podados

max-dtm

Mayor distancia al mate de todas las posiciones en esta base de datos

min-dtm

Menor distancia al mate de todas las posiciones en esta base de datos, es decir, un número negativo que indica la pérdida forzada más larga

3.11 <generation-statistics> ... </generation-statistics>

Este elemento es añadido por el programa y no debe ser especificado en la entrada. Contiene estadísticas relacionadas con la ejecución del programa que generó la base de datos.


Elementos

Interpretacion

host

Nombre de host del sistema que generó la base de datos


program

Nombre y versión del programa que generó la base de datos

args

Línea de comandos utilizada para la ejecución de generación

start-time

Tiempo en que se inició inicialmente la ejecución del programa

completion-time

Tiempo en que finalizó la ejecución del programa

user-time

Tiempo de CPU utilizado por la ejecución en el espacio de usuario

system-time

Tiempo de CPU utilizado por la ejecución en las llamadas al sistema

real-time

Tiempo de reloj de pared utilizado por la ejecución

page-faults

Número de veces que el programa tuvo que esperar a que se intercambiara una página de memoria desde el disco

page-reclaims

Número de veces que el programa recuperó una página de la lista libre; esto típicamente serán páginas de instrucciones del programa

proptable-writes

Si las tablas de propagación están en uso, el número de tablas de propagación escritas en disco

proptable-write-time

Si las tablas de propagación están en uso, el tiempo real total requerido para todas las escrituras de tablas de propagación

pass

Estadísticas por pasada, incluyendo tiempo real y tiempo de usuario


4 Algunos mensajes de error confusos


4.1 Las futuras bases no pueden ser menos simétricas que la base de datos en construcción


Las bases de datos simétricas colapsan múltiples posiciones en una, por lo que las futuras bases deben tener la misma simetría (al menos), o la futura base podría manejar de manera diferente dos posiciones que la base de datos más simétrica trata como una.


4.2 Los peones doblados deben (actualmente) aparecer en orden de tablero en la lista de piezas


Actualmente, los peones doblados que usan ubicaciones "más" (por ejemplo, location="a2+") en el mismo archivo deben tener los elementos de piece listados en el XML en el orden en que los peones aparecen en el tablero, contando en notación algebraica de la fila 1 a la fila 8. Quiero decir, de la fila 2 a la fila 7.


4.3 Restricciones de piezas no permitidas con índices simétricos (todavía)


No se puede especificar un atributo de caracter index symetry sin también especificar atributos piece location, incluso si las restricciones en las ubicaciones de las piezas pudieran ser compatibles con la simetría solicitada.


4.4 Restricciones de piezas superpuestas no idénticas no permitidas con este tipo de índice


Para los tipos de índice naive, naive2 y simple, no se pueden especificar dos piezas idénticas con diferentes restricciones del tipo location a menos que esas restricciones sean completamente distintas. Por ejemplo, no puedes tener una torre blanca libre y otra torre blanca restringida al archivo a. Si lo piensas bien, esta situación permitiría que las torres "cambiaran de lugar": ambas podrían moverse al archivo a y luego cualquiera de las dos podría moverse. Los tipos de índice más simples no pueden manejar esta situación. Sin embargo, podrías tener una torre blanca restringida al archivo a y otra restringida al archivo d (o usar un tipo de índice más sofisticado, como compact).


4.5 La futura base no coincide con los prune-enables!


Recuerde que los elementos prune-enable de la futura base deben ser un subconjunto de los prune-enables de la base de datos actual.


4.6 No hay futura base o poda para ...

Movimientos futuros no manejados ...


Si uno o más movimientos futuros no se manejan especificando una futura base o una declaración de poda, se producirá un error fatal inmediatamente o después de la pasada de inicialización. Para ayudar en el diagnóstico, el mensaje de error incluye el FEN de la posición infractora.


4.7 pawngen no admite elementos de salida en los controles de generación


El script pawngen genera automáticamente todos sus nombres de archivo. Elimine el elemento de salida. Después de la generación, todos los archivos htb resultantes se pueden cargar juntos en el modo de sonda de Hoffman.

logo
Una Meditación de Acción de Gracias Una Meditación de Acción de Gracias CSR

Artículo Original: https://pages.ucsd.edu/~dkjordan/diversions/ThanksgivingMeditation.html

Por:David K. Jordan
Meditación de Acción de Gracias
El Día de Acción de Gracias, simbolizado en América del Norte por un festín alegre en compañía de amigos y familiares, es un momento para reflexionar sobre el hecho de que, a pesar de las frustraciones de la vida, uno se encuentra sin embargo, en muchos sentidos, en una buena posición.

Para una persona que contempla la amplia gama de variaciones humanas y considera cómo las sociedades de nuestro mundo evolucionaron hasta lo que son hoy, hay varias características del orden mundial moderno, tanto en las regiones ricas como en las pobres, por las cuales me parece que dar gracias puede ser especialmente apropiado.

A riesgo de ser un poco sentimental, sugiero algunas de ellas aquí por si te gustaría pensar en ellas durante las fiestas.

Política y Derecho

  1. Creemos que el gobierno debe servir a los gobernados. (Los estados del pasado a menudo argumentaban lo contrario.)
  2. Apoyamos las cortes y los parlamentos, y condenamos a los tiranos. (La mayoría de los estados desde la Edad del Bronce fueron dirigidos por tiranos y nunca oyeron hablar de parlamentos. Hoy en día, incluso los peores tiranos afirman ser elegidos por los gobernados.)
  3. Experimentamos indignación ante la corrupción, la explotación y el racismo. (La mayoría de las sociedades han asumido que estos son inevitables. Mucha gente todavía lo cree.)
  4. Rara vez glorificamos la guerra por el simple hecho de la guerra. (Los estados modernos buscan evitar la guerra o emprenderla con justificaciones públicas de su necesidad.)
  5. Condenamos el uso de la tortura para extraer confesiones.
  6. Condenamos el castigo desorbitado de los crímenes. (Casi todas las sociedades a lo largo de la historia han tratado mal a los sospechosos y a los criminales, o los han ejecutado sumariamente.)
  7. No otorgamos estatus legal al delito de brujería. (Ha sido una sociedad rara la que no ha castigado o ejecutado a brujos.)
  8. No practicamos el sacrificio humano ritual.

Relaciones Sociales y Derechos Humanos

1. Apoyamos la libertad personal como una idea general, y distinguimos algunas libertades específicas como las libertades de:

  • Informar noticias
  • Estudiar y obtener educación
  • Reunirse
  • Poseer propiedad
  • Elegir a su propio cónyuge
  • Crear, exhibir y realizar obras de arte
  • Perseguir objetivos políticos o económicos
  • Tanto para mantener como para compartir opiniones, incluidas las opiniones disidentes

(La libertad política era una idea rara hasta los tiempos modernos. La tolerancia religiosa era casi desconocida, ni mucho menos fomentada. En pocas sociedades se elegía a la propia pareja. En muchas sociedades, la educación, incluso la simple alfabetización, se desalentó activamente, especialmente para las mujeres. Informar noticias sigue estando restringido en gran parte del mundo incluso hoy en día.)

2. Ya no toleramos la esclavitud, a pesar de su persistencia. (La mayoría de las sociedades desde el Neolítico la han exhibido.)

3.Apoyamos la monogamia y condenamos los harenes y el concubinato. (Esto no ha sido así en la mayoría de las sociedades.)

4.Respaldamos la protección estatal de los individuos frente a los ataques de otros. (Los ladrones, piratas, matones, pandillas y señores de la guerra pueden ser un riesgo inevitable en todas las sociedades, pero todos los estados modernos intentan brindar al menos cierta protección contra ellos.)
Salud

  1. Nuestro enfoque de la enfermedad suele ser a través de la ciencia y solo en raras ocasiones a través de la magia. (La mayoría de las sociedades desde el comienzo de la humanidad han intentado curar enfermedades principalmente a través de la magia.)
  2. Buscamos aliviar la escasez y la hambruna en todas partes del mundo, por distantes que estén.(En siglos pasados, las hambrunas extranjeras eran objeto de curiosidad más que de preocupación.)
  3. Buscamos asegurar la salud y el bienestar físico de todos.(Pocas sociedades han tenido los medios o la voluntad para hacerlo.)
  4. Nos hemos dado cuenta del papel del ser humano en la ecología de nuestro planeta, y existe una preocupación generalizada por cambiar ese papel de destructivo a protector. (Hasta hace muy pocos años, el deterioro ecológico se ignoraba ampliamente en las políticas públicas, e incluso hoy en día los "negacionistas del clima" siguen siendo influyentes en algunos países.)

Conocimiento

  1. Valoramos la alfabetización y buscamos extenderla a todos. (A lo largo de la historia, casi todos los humanos han sido analfabetos; los alfabetizados a menudo han tratado de confinar la alfabetización a clases limitadas de personas.)
  2. Apoyamos la curiosidad por otras sociedades y sus culturas, y condenamos a quienes tratan a otras sociedades con desprecio instintivo.
  3. Aprobamos la curiosidad sobre cómo funciona el mundo en lugar de reprimirla. (La mayoría de las sociedades han preferido una línea del partido a una mente abierta. Algunas personas todavía lo hacen.)
  4. Apoyamos a los museos, universidades y centros de investigación para mejorar y aplicar nuestro conocimiento sobre el mundo y para transmitir ese conocimiento de manera amplia en la sociedad.
  5. Tenemos café espresso, teléfonos inteligentes, envoltura plástica, mayonesa, Wikipedia y plomería interior.
  6. Dedicamos un día festivo a reflexionar sobre todas las razones por las que deberíamos estar agradecidos.
    Meditación de Acción de Gracias

Una versión anterior de esta página se creó por primera vez en 1997 y se revisó ligeramente a lo largo de los años siguientes. La redacté para estudiantes de una clase grande de Civilización Mundial que se dirigían a casa para las vacaciones de Acción de Gracias, y quería situar el mundo moderno en el contexto de todo lo que había sucedido anteriormente. Al observar el mundo moderno de esta manera, la página sugiere que incluso las personas que viven bajo regímenes opresivos en la actualidad tienen motivos para ser optimistas, ya que la historia, en última instancia, está de su lado.

logo
20 Preguntas 20 Preguntas CSR

Artículo Original: https://theworld.com/~swmcd/steven/stories/questions.html

Por: Steven W. McDougall

¿Cuántos nombres hay en tu mundo?

En el juego de las 20 preguntas, una persona piensa en algo y la otra persona debe adivinarlo haciendo no más de 20 preguntas de sí o no.

El hecho de que este juego sea interesante —en oposición a trivial o imposible— sugiere que los humanos tienen nombres para 2^20, o un millón, de cosas en su mundo. Si los humanos solo tuvieran nombres para mil cosas, entonces diez preguntas serían suficientes para especificar cualquiera de ellas; si los humanos tuvieran nombres para mil millones de cosas, entonces serían necesarias 30 preguntas.


¿Cómo divides tu mundo?

Al observar cómo las personas juegan 20 preguntas, podemos descubrir no solo el tamaño de su mundo, sino también cómo lo estructuran.

Por tradición, un juego de 20 preguntas comienza con la pregunta ternaria fija

  • ¿Es animal, vegetal o mineral?

Las tradiciones como esta comienzan porque los jugadores experimentados encuentran que siempre comienzan el juego con la misma pregunta o dos, reflejando las dos o tres categorías conceptuales más amplias en su modelo del mundo. El hecho de que la gente comience el juego preguntando "¿animal, vegetal o mineral?" sugiere que organizan su mundo así


Divisiones del siglo XXI


El juego de las 20 preguntas se remonta a siglos atrás, y la pregunta "¿animal, vegetal o mineral?" tiene más de 100 años. Como tal, refleja la visión del mundo que solía tener la gente.

Cuando juego a las 20 preguntas, no encuentro la clasificación "animal, vegetal o mineral" tan útil. En cambio, comienzo preguntando:


  • ¿Está hecho por el hombre?
  • ¿Está vivo?


Lo que sugiere que organizo mi mundo como


Esto probablemente refleja el ascenso de la tecnología en nuestras vidas durante los últimos 100 años.


Notas

siglos

concebiblemente, al origen del lenguaje hablado