Archivo de la categoría: programación

App simple para esteganografía y marcas de agua en fotos e imágenes

La esteganografía es la aplicación de técnicas que nos permiten ocultar mensajes u objetos dentro de otros, llamados portadores, con el objetivo de que no se perciba su existencia. Uno de los usos que podemos darle es como «marca de agua» oculta pero que identifica al propietario de una imagen (aunque no ofrece garantías totales… Leer más »

Ejemplo de uso Oauth para publicar una imagen en Twitter

Este fin de semana he estado entretenido programando un back-end de ejemplo para publicar imágenes (con su correspondiente texto) en Twitter, usando la librería de PHP https://twitteroauth.com/ La idea era implementar en el servidor («server-side flow» de OAuth) las llamadas al API de Twitter para conseguir la autorización y publicación de una imagen con su… Leer más »

Clase decoradora para calcular el tiempo de ejecución de funciones

Una de las características de Python es el uso de funciones y clases decoradoras muy útiles cuando estamos evaluando rendimiento y lo que necesitamos es un cronómetro que nos mida cuánto tarda en ejecutarse una función (cualquiera de las que tenemos). Vamos a ver cómo calcular el tiempo de ejecución de funciones: class getTime:    … Leer más »

Añadir una «mosca» a un vídeo con ffmpeg

Con ffmpeg es muy sencillo ponerle una marca de agua (o 2) a un vídeo. Lo podemos hacer con una imagen transparente que contenga la marca que queramos añadir usando el filtro overlay de ffmpeg de la siguiente manera: ffmpeg -i «VÍDEO» -strict -2 -vf «movie=IMAGEN_CON_MARCA [watermark]; \ [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out]» \ -r 25 -b:a… Leer más »

Guión para cambiar un carácter (o varios) en el nombre de ficheros

Como podéis comprobar todos aquellos que tengáis instalado ownCloud, existe una serie de caracteres que os provocan el error : «Files contains invalid characters…» cuando sincronizáis con el cliente de escritorio. Si optáis por la solución cómoda como es cambiar el nombre, quitando el carácter problemático por otro (‘_’ es una buena opción), en GNU/Linux,… Leer más »

Reutilización del mismo puerto en el lado del cliente

La entrada anterior está escrita desde el punto de vista de los servidores, aunque en el lado del cliente, también podemos reutilizar puertos. ¿Cómo? Pues añadiendo, antes de la función connect de, por ejemplo, este código de cliente, las siguientes órdenes: sock.setsockopt(socket.SOL_SOCKET, SO_REUSEPORT, 1) sock.bind((«0.0.0.0»,3000)) la primera orden es la misma que hemos comentado ya… Leer más »

Reutilización de puertos en GNU/Linux

Para todos los sistemas operativos, una conexión (comunicación) entre dos equipos está definida por cualquier combinación de la tupla formada por la dirección IP origen y destino, el puerto de origen y destino y el protocolo de transporte (TCP o UDP).  Así, en cualquier nodo de nuestra red, podremos utilizar la función bind para «anclar»… Leer más »

Servidor con node.js

Así de fácil es, con node.js, lanzar un servidor que responda el famoso «Hola Mundo»: var net = require(‘net’); var server = net.createServer(function (socket) { socket.write(‘Hola Mundo\r\n’); socket.pipe(socket); }); server.listen(6666, ‘127.0.0.1’); Creo que es una buena opción para algunas de las prácticas de Sistemas Distribuidos de este próximo e inmediato cuatrimestre.  

¿Estamos bajo un ataque DoD o DDoS?

Esta tarde he estado leyendo esta entrada (y a la que le «he robado el título»). Como bien comenta el autor, una de las características que un ataque de denegación de servicio (DoS) presenta, ya sea distribuido o no, es el gran número de conexiones que recibirá nuestro sistema. En esta entrada, podéis consultar una serie… Leer más »

Mecanismos de comunicación entre procesos (y V)

En esta última entrada dedicada a los mecanismos IPC veremos las tuberías con nombre o FIFO (First in, First out). El mecanismo se basa en abrir y utilizar el fichero nombrado igual que haríamos con cualquier otro fichero ordinario, donde unos procesos lo abren en modo lectura y otros en modo escritura. Un ejemplo de proceso lector: #include <fcntl.h> #include <stdio.h>… Leer más »