Publi

  • Comprime o adapta tus vídeos con ffmpeg o avconv desde la línea de comando

    Me encanta la idea de poder automatizar tareas. Y de hecho, un ordenador está pensado especialmente para eso, para realizar tareas complejas, rápido y con la menor asistencia posible por nuestra parte. La tarea de la que vengo a hablar hoy es la conversión de vídeo. Es una tarea computacionalmente intensa y, si los vídeos a convertir son muy largos, podemos dejar nuestro ordenador inútil durante bastante tiempo.

    En este post vamos a ver algunas ideas de cómo automatizar la transcodificación de archivos de vídeo, es decir, cambiar el algoritmo con el que está codificado un vídeo (y casi siempre, comprimido también).… Leer artículo completo

  • Trasteando con juguetes nuevos. Primeros pasos con el ESP8266

    ESP8266
    Esta pequeña placa de apenas 24x14mm contiene un microcontrolador y chip WiFi a/b/g (esas de 2.4GHz) y una memoria. Además de algunos leds, una antena y un oscilador. Cuesta muy poco dinero (apenas unos 3€ comprándolo en algunas tiendas de España y mucho menos si se compra directamente a China). Y encima consume muy poco, alrededor de 0.5W a pleno rendimiento y muchísimo menos en alguno de sus modos de sueño y bajo consumo.… Leer artículo completo

  • Cómo cifrar archivos con OpenSSL y con par de claves pública y privada. Varios métodos, paso a paso

    photo-1458419948946-19fb2cc296af

    Si queremos aumentar la seguridad del cifrado de archivos con OpenSSL. En lugar de utilizar una contraseña plana como se indica en el post anterior podemos utilizar un par de claves pública y privada para este cifrado. De estar forma, por un lado podemos ahorrarnos (si queremos) el tener que recordar una contraseña segura, y por otro ganar en seguridad, ya que las contraseñas, al fin y al cabo terminan siendo poca cosa.… Leer artículo completo

  • Generando imágenes en C, sólo por diversión, empezando desde cero (Parte I)

    colores_y_formasHace tiempo que no pongo nada de imagen digital, y ya tenía ganas. No haremos nada complicado, pero muchas veces, cuando empezamos a programar, pensamos en representar el contenido de un array en una imagen, o para esas veces en que pensamos que un simple algoritmo nos puede ayudar a crear la imagen que queremos.

    Cómo generar las imágenes

    Para generar las imágenes, vamos a pensar en un buffer sencillo, lineal de tipo unsigned char, o uint8_t, para imágenes en blanco y negro… vamos a empezar con imágenes sencillas, ya meteremos color… y más cosas.… Leer artículo completo

  • Cifrar y descifrar un archivo fácilmente con openSSL

    photo-1419658776233-a6a982d3ebae_r

    Queremos cifrar (o como queráis, codificar, encriptar…) un documento rápidamente desde la consola, con la posibilidad de que pueda ser descifrado. Por ejemplo, nos puede servir para transmitir por e-mail (o un chat) un archivo confidencial, para almacenar elementos privados en la nube, o para que alguien no se entere del contenido de un archivo.

    Guía rápida

    Para codificar un archivo:

    1
    $ openssl aes-256-cbc -in mi_archivo -pass pass:passw0rd -out mi_archivo.enc

    y para decodificar:

    1
    $ openssl aes-256-cbc -d -in mi_archivo.enc -pass pass:passw0rd -out mi_archivo

    Explicación

    El primer argumento es el algoritmo de cifrado/descifrado, podéis encontrar algoritmos como aes, des, base64 y muchos más.… Leer artículo completo

  • Cómo extraer duración, fotogramas, bitrate y fps de un vídeo para nuestros scripts

    1200px-Film_strip

    Seguramente en nuestros scripts, si tratamos con archivos de vídeo, nos interese conocer información sobre el mismo. Tal vez podamos extraer más información de un archivo de vídeo con un software especializado como VLC; pero para hacer unos cálculos rápidos o una conversión de formato nos va a venir muy bien.

    Programas como avconv o ffmpeg son capaces de extraer información básica del vídeo. Es más, programas como identify (de imagemagick) entre otros, en realidad llaman por detrás a uno de los dos primeros para realizar la identificación del archivo.… Leer artículo completo

  • Cómo extraer la parte alta y la parte baja de un número con varios ejemplos en C

    photo-1414509902153-26bed16bc962_red

    En ocasiones, en C, sobre todo, una misma variable numérica (un entero, un short, o incluso un char) encierra en sus bits más valores que nos pueden resultar interesantes por separado. Sobre todo, por optimizar la memoria, en lugar de reservar dos variables de tipo entero de 32bits para almacenar valores pequeños, queramos empaquetar en el mismo valor entero los dos valores y luego extraerlos cuando los necesitemos. Esto lo podemos ver en sistemas empotrados en los que estamos muy limitados en memoria.… Leer artículo completo

  • Bailando con bits III. Mostrando el valor binario de un número [bash, C, C++, PHP, Java, Python, Ruby]

    photo-1425036458755-dc303a604201_red

    De todos es sabido que un ordenador, internamente trabaja con ceros y unos, simplemente eso, a partir de ese simple valor, verdadero o falso, abierto o cerrado, existe o no existe es capaz de formar sonidos, imágenes, textos y cualquier cosa que podamos imaginarnos.

    Aunque no vamos a hacer algo tan complicado, muchas veces puede que tengamos un valor entre manos y queramos saber qué bits hay a uno y qué bits hay a cero aunque sólo sea para verificar que una operación se está realizando como debe o porque estamos aprendiendo a utilizar este sistema de numeración y queremos verificar que todo nos sale bien.… Leer artículo completo

  • Flags en un enum en C


    Las flags, son opciones binarias que acompañan un dato o un sistema y valen para informar o definir su comportamiento o su estado entre otras cosas.

    En muchos casos, utilizaremos flags para ver el resultado de una operación, imaginémonos que estamos pasando una serie de tests a un dato de texto:

    1. El dato no está vacío
    2. El dato tiene más de 3 letras
    3. El dato tiene menos de 20 letras
    4. El dato tiene caracteres no numéricos
    5. El dato tiene caracteres no números/letras
    6. El dato tiene caracteres de control
    7. El dato tiene caracteres no válidos
    8. El dato tiene formato de fecha
    9. El dato tiene formato de hora
    10. El dato tiene formato de teléfono
    11. El dato tiene formato de coordenadas

    Bueno, así puedo poner muchas condiciones, lo importante es la forma de almacenarlo.… Leer artículo completo

  • Números grandes en C usando GMP. Resolución del primer reto de #tuentiContest (Super Hard Sum)

    Aquí llega mi primera aportación a las soluciones de los retos del I concurso de programación de Tuenti. La utilización de números grandes es algo que siempre me llamó la atención, y normalmente utilizo bc cuando necesito algún cálculo. Este reto se podía resolver con bash/sed/bc y, aunque varios lenguajes permiten la utilización de números de precisión arbitraria «de serie»  como python y Java, yo decidí hacerlo en C, utilizando la biblioteca GMP.… Leer artículo completo