Publi

  • Acabo de borrar un archivo por accidente ! ¡ Voy a morir ! ¡ No aún no !

    El título está basado en un hecho real, aunque casi casi el truco que pondré a continuación está limitado a archivos de texto, ya que podemos identificar fácilmente su contenido. Si me apuráis, valdría con cualquier tipo de archivo, pero los archivos binarios, raramente podemos saber con exactitud qué contienen.

    Me encontraba yo preparando una entrada de datos para base de datos, fue un archivo que me llevó un tiempo donde hacía numerosas consultas, y llega la hora de hacer la consulta, de estas veces que puede que por el cansancio, por tener un día un poco tonto, por no pulsar bien una tecla, o un lapsus, en lugar de:

    $ mysql -uroot -pMICLAVE < consultas.sql

    se me ocurre escribir:

    $ mysql -uroot -pMICLAVE > consultas.sql

    vamos, que el archivo con el que llevaba ya un rato se borró por completo, y yo me encontraba como la foto de portada.… Leer artículo completo

  • Generando fotogramas de vídeo en C con frei0r (y MLT) [Parte II – Generando filtros]

    Ahora le toca el turno a la creación de filtros, y de paso presento algunas utilidades más para frei0r de mi cosecha (con alguna que otra función copiada de algún lado).

    Esta vez, entre otras cosas, aunque habrá mucho código sin documentar por aquí, vamos a ver cómo podemos dar para cada canal de la imagen, la porción de rojo, verde y azul que queramos, sólo para practicar la creación de un filtro sencillo.… Leer artículo completo

  • Leer y procesar imágenes en C gracias a ImageMagick y su API MagickCore


    El mundo de la imagen por ordenador me encanta, y llega el momento de aplicar ciertos efectos desde código, y evitarnos tener que ejecutar un programa externo, gastando así más memoria y tiempo. Pero por otro lado, en ocasiones algunos algoritmos sobre las imágenes son demasiado complejos y no tenemos tiempo para investigar cómo hacer el algoritmo, buscar especificaciones de efectos que suelen traer todos los programas de edición de imágenes, pero que nos pueden hacer perder varios días de trabajo de investigación.… Leer artículo completo

  • Backup de usuarios en MySQL

    4859841581_d254d4892b_o
    Cuando hacemos un dump de una base de datos MySQL, se suelen ignorar las bases de datos test, mysql e information schema, es una buena práctica, entre otras cosas porque si sobreescribimos la tabla mysql, podemos tener problemas en el futuro sobre todo si hay algún cambio menor (o mayor) de versión.

    Al final, la única información que nos interesa salvar de la base de datos mysql son los usuarios del sistema, con sus respectivas claves y permisos, que normalmente si tenemos varias aplicaciones corriendo sobre el mismo sistema de bases de datos, tendremos varios usuarios y no querremos perderlos.… Leer artículo completo

  • Recibir notificaciones de Amazon SNS y procesarlas automáticamente

    Una gran herramienta que nos brinda Amazon, y que podemos combinar con otros servicios, es SNS (Simple Notification Service), básicamente este servicio se encarga de enviarnos una notificación cuando ocurre un evento dentro de los servicios contratados.
    Un ejemplo muy sencillo para manejar esto, es la gestión de quejas y rebotes de los envíos de correo de Amazon SES (Simple Email Service). Cuando se envía un e-mail con este servicio de correo, es posible monitorizar los mensajes que no han llegado (y por tanto se ha recibido un e-mail de notificación), o por ejemplo, los e-mails cuyos destinatarios han establecido como correo basura y han notificado al servidor de origen.… Leer artículo completo

  • Logging en MySQL

    Muchas veces, cuando se desarrollan procedimientos almacenados (stored procedures) más o menos complejos, podemos dar con errores que nos pueden hacer perder mucho tiempo, y a veces la solución es visualizar el valor de una variable en un punto determinado del código.

    Aquí va una pequeña ayuda, es un código muy sencillo que podemos insertar en nuestra base de datos y nos permitirá escribir en una tabla lo que va pasando.… Leer artículo completo

  • Exportar datos de MySQL a un fichero CSV o tabulado


    En múltiples ocasiones, si sueles manejar bases de datos MySQL, te interesará exportar esa información para que sea interpretada por otro programa o una persona, y no queramos que dicha persona tenga acceso completo a nuestra base de datos, o que le queramos facilitar el trabajo de alguna forma.

    Este post, puede acompañar perfectamente a Introduciendo datos al servidor MySQL desde CSV con ejemplos.

    Es importante decir, que el archivo se generará en el equipo servidor, y no en el equipo desde el que accedemos, por lo que para recuperar los datos, es conveniente tener acceso al servidor, puede que por estar en el mismo ordenador (localhost) o porque tengamos acceso por SSH, FTP, etc.… Leer artículo completo

  • Enlazado dinámico en C++ (dynamic linking) IV: Permitir plug-ins en nuestra aplicación

    Un ejemplo práctico de uso del enlazado dinámico es la posibilidad de crear plug-ins para nuestros programas. Estos plug-ins nos permitirán aumentar las funcionalidades de nuestro programa sin necesidad de recompilarlo, utilizando el código de añadidos binarios. Para poder «hablar» con los demás binarios, es necesario haber establecido antes unas normas para ese diálogo.

    Intentaré poner un ejemplo más o menos completo, pero sencillo, y se podrá descargar el código fuente al final del artículo (serán bastantes archivos).… Leer artículo completo

  • Enlazado dinámico en C++ (dynamic linking) III: Carga dinámica de objetos

    Hasta ahora, en varios artículos referentes a este tema: Introducción a dynamic linking, Carga dinámica de bibliotecas, hemos visto como, en lenguaje C, podemos escribir bibliotecas de funciones y, sin necesidad de conocer su código fuente, ejecutar funciones encerradas dentro de esas bibliotecas en nuestros proyectos, así como cargar dicho código al vuelo.

    Pero todo se complica un poco cuando queremos hacer lo mismo con C++, y en concreto, cuando estamos exportando clases completas, ya que de primeras necesitamos una forma de traernos algo parecido a un tipo, el nombre de la clase, y con dlopen() y dlsym(), nos podemos traer sólo una referencia de memoria, por lo que junto con la clase que programemos en C++ tendremos que incluir una función que llame al constructor.… Leer artículo completo

  • Enlazado dinámico en C (dynamic linking) II: Carga dinámica de shared objects

    La semana pasada vimos una introducción y cómo podíamos hacer una carga estática de bibliotecas dinámicas o shared objects.

    Hoy dedicaré el post a la carga dinámica, esto es, no hace falta que el objeto exista para poder compilar el programa principal, y el programa principal, no tiene por qué saber que lo va a utilizar hasta el último momento en que lo esté utilizando. Pueden utilizarse para extender la funcionalidad de nuestra aplicación una vez esté construida, puede que por nosotros, o por otra persona.… Leer artículo completo