Publi

  • Cómo aplicar filtros de GIMP a un vídeo

    photo-1464602083226-de2c1675e946

    Estoy subiendo vídeos a mi canal personal de Youtube. Aunque sólo tengo algunos pequeños tutoriales, postales de navidad y cosas así. He decidido subir algunos vídeos y cortos antiguos. Aunque están grabados con una cámara analógica y en cinta magnética, lo que significa que el vídeo tiene mucha pérdida y poca calidad. En un intento por darle algo más de definición, o al menos que el visionado sea algo más agradable, pensé en un filtro de Gimp (Desenfocado Gaussiano Selectivo), y estaría muy bien poder aplicarlo a todos los fotogramas.… Leer artículo completo

  • Solucionar problema con “Timeout”s y “Broken pipe”s con ssh y scp

    fantasma

    En ocasiones, cuando la conexión SSH que tenemos establecida no es muy estable (a mi me surgía el problema con un dispositivo Wifi que en ocasiones se desconectaba y no podía transferir ficheros largos porque a mitad se desconectaba), puede que nos hayamos encontrado con este problema.

    Para solucionarlo, debemos editar /etc/ssh/sshd_config o /etc/sshd_config (dependiendo de nuestra distribución). Primero buscaremos la línea que comienza con ClientAliveInterval y pondremos su valor a 100 o menos (son los segundos para que el servidor envíe una señal al cliente para ver si está vivo).… Leer artículo completo

  • Listar archivos dentro de un directorio o carpeta en C

    Árbol de directoriosNuestro software debe buscar archivos dentro de un directorio determinado, ya sea un archivo especial, una recopilación de datos del disco duro, una búsqueda de plugins, etc…

    Hemos elegido lenguaje C para hacer esto, porque en bash podemos llamar a ls o find y apaga y vámonos.

    Estas funciones, nos recordarán al uso de archivos con fopen() y fclose().

    Para usar esta implementación, como veremos en el ejemplo, debemos incluir <sys/types.c> y <dirent.h> y, en principio, empezaremos con un ejemplo sencillo que lista los archivos del directorio actual (una vez tenemos el nombre y la ruta del archivo podemos hacer con él lo que queramos):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #include <stdlib.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>

    /* Función para devolver un error en caso de que ocurra */
    void error(const char *s);
    /* Función que hace algo con un archivo */
    void procesoArchivo(char *archivo);

    int main()
    {
      /* Con un puntero a DIR abriremos el directorio */
      DIR *dir;
      /* en *ent habrá información sobre el archivo que se está "sacando" a cada momento */
      struct dirent *ent;

      /* Empezaremos a leer en el directorio actual */
      dir = opendir (".");

      /* Miramos que no haya error */
      if (dir == NULL)
        error("No puedo abrir el directorio");
     
      /* Una vez nos aseguramos de que no hay error, ¡vamos a jugar!
    Leer artículo completo
  • Ejecutar una orden externa redirigiendo STDIN [C]

    Cuando lo hacemos desde la línea de comando, es muy fácil:

    echo -e “david\njose\nalfredo\nzacarias\npatrick\ngaspar” | sort

    Pero a la hora de querer hacer un programa que ejecute la orden sort, pasándole una serie de líneas no es tan intuitivo.

    Para ello, he construido una tubería, y para ello hacemos que el descriptor STDIN_FILENO sea input[0] es decir, el descriptor de lectura de la pipe (con dup2).
    Luego pasamos las líneas que necesitemos a la pipe a través del descriptor input[1] y lo cerramos para dar por finalizada la entrada de datos.… Leer artículo completo

  • Tuberías con nombre para comunicación entre procesos

    photo-1428585227457-326f25f9cee2
    Las tuberías con nombre son un método de comunicación FIFO entre procesos (también se les llama fifos). FIFO son las siglas de First In First Out, es decir, el primero que llega es que primero que se marcha, como en una cola, el primero que llega es el que antes termina.

    Normalmente las tuberías son anónimas, aunque el hecho de tenerlas con un nombre en nuestro sistema de ficheros puede sernos de gran utilidad.… Leer artículo completo