API en C para PDAL disponible en GitHub

Simverge desarrolló una interfaz de programación de aplicaciones (API por sus siglas en inglés) en el lenguaje de programación C para el Point Data Abstraction Library (librero de abstracción de datos puntuales), más conocido como PDAL por sus siglas en inglés. Este proyecto fue publicado bajo la licencia BSD de 3 cláusulas en GitHub. PDAL es un librero de procesamiento y análisis de nubes de puntos escrito en C++. La API en C expone la habilidad de PDAL para especificar una secuencia de procedimientos con un archivo en formato JSON, tal como permiten las interfaces en Python y Java previamente disponibles. Echa un vistazo a las pruebas unitarias para ver ejemplos de cómo usar la API. Esta API está disponible como el paquete pdal-c en vcpkg y un paquete para conda-forge está en camino. Espero que este librero sirva como una útil interfaz para usar PDAL en otros lenguajes de programación. Por favor abre una incidencia (issue)...
Read More

Cómo usar protobuf con compresión zlib en C++

Ha pasado mucho tiempo desde el artículo anterior donde expliqué cómo compilar protobuf con soporte de zlib. En este artículo explicaré cómo usar flujos (streams) de C++ basados en zlib para serializar y deserealizar mensajes Protobuf. Usaremos un pequeño bitmap de la Mona Lisa para este ejemplo, ya que su formato descomprimido compactará muy bien con el algoritmo Deflate usado por zlib. Echa un vistazo a Simverge/howto-protobuf-zlib en GitHub para una implementación más completa de este ejemplo. Define un esquema de mensaje Protobuf Primero, creemos un archivo llamado blob.proto que defina un simple mensaje Protobuf que almacene una collección arbitraria de datos además de una cadena de texto que identifique su origen: [crayon-68260400a55c6038077803/] Compila blob.proto con el compilador de Protobuf (protoc) usando las instrucciones del tutorial oficial de Protobuf en C++. Por ejemplo, el siguiente comando generaría el archivo fuente para C++ llamado blob.pb.cc y la cabecera para C++ llamada blob.pb.h en el mismo directorio dónde reside blob.proto: [crayon-68260400a55d5855889532/] Otra opción es usar el módulo FindProtobuf...
Read More
Cómo compilar protobuf con zlib

Cómo compilar protobuf con zlib

Recientemente estuve trabajando en enviar mensajes de Protocol Buffers (protobuf) a través de Keryx. Necesitaba almacenar estos mensajes en memoria y en disco y descubrí que los mensajes no estaban comprimidos. Me alegró descubrir que el API de protobuf para C++ brinda compresión basada en zlib, ya que esta es una forma aceptable de rápidamente reducir el tamaño de almacenamiento y tiempo de envío. Protobuf provee las clases GzipOutputStream y GzipInputStream en el espacio de nombre (namespace) google::protobuf::io. Estas clases están definidas en la cabecera google/protobuf/io/gzip_stream.h. Sin embargo, varios errores de enlace revelaron que mi compilación inicial de protobuf carecía soporte de zlib. Windows es la principal plataforma de desarrollo y ejecución para Keryx, por lo tanto esta guía explicará como habilitar compresión con zlib en protobuf 3.5.1 compilado desde código fuente con Visual Studio 2015. El proceso para compilar con Visual Studio 2017 debe ser similar. Un método aún más sencillo es instalar protobuf with zlib support using vcpkg: vcpkg install protobuf[zlib]...
Read More