Publi

  • Pasando argumentos a un TimerTask en Java

    Siguiendo con los posts sobre TimerTasks en Java, hoy toca hablar sobre cómo pasar argumentos a un TimerTask, para que éste utilice variables, atributos u objetos desde fuera. Ya vimos algo parecido cuando definíamos el TimerTask de forma implícita o anidada, pero hoy vamos simplemente a crear una clase derivada de TimerTask y pasarle datos a través del constructor.

    MyTimerTask.java

    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
    import java.util.TimerTask;

    class MyTimerTask extends TimerTask
    {
        private int times;
        private String result;
        private int tic=0;

        public MyTimerTask (int times, String arg2)
        {
        this.
    Leer artículo completo
  • Pinceladas de concurrencia y Hello world usando pthreads


    En la actualidad, es muy común ver CPUs es dual-core o quad-core (por lo menos), aunque también sigue habiendo sistemas con un sólo núcleo.

    Antes de nada, quiero decir que en este post sólo quiero dar algunas pinceladas, y un poco de código como introducción a este «mundo», por lo que las explicaciones serán algo rápidas, me refiero a que estaré simplificando mucho, en el fondo, todo es un poco más complicado… pero al menos daré datos suficientes para poder profundizar más en el tema.… Leer artículo completo

  • Algoritmos: Repartir el tiempo total de una tarea a lo largo de varios días en C

    Cuando tenemos una tarea que debemos llevar a cabo a largo medio/plazo, normalmente debemos dedicar un tiempo cada día a esa tarea pero, ¿cuánto tiempo necesitamos dedicar a esa tarea (como mínimo) para terminar en un plazo establecido?

    Gracias a Alejandro por la sugerencia de este programa.

    Primero el programa, y luego lo comentamos:

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    /**
    *************************************************************
    * @file calcula_horas.c
    *************************************************************/


    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    #include <string.h>

    typedef struct
    {
      int hours;
      int minutes;
      float raw;
    } Thm;

    time_t getTime(int day, int month, int year);
    int calculateDaysInRange(int daysInRange[7], time_t start, time_t end);
    int calculateTotalDays(int workDays[7], int daysInRange[7]);
    int calculateHoursADay(Thm *result, int totalDays, int hoursToWork, int totalHours);

    int main(int argc, char *argv[])
    {
      int error;
      int i ;
      int totalDays;
      time_t start = getTime(1, 6, 2013);
      time_t end = getTime(18, 6, 2013);
      /* Which days can we work in this task?
    Leer artículo completo
  • MySQL: Listar elementos evitando las repeticiones consecutivas

    Imaginémonos un programa que almacena periódicamente valores en una base de datos, dichos valores pueden ser temperatura, humedad, uso de CPU, voltaje, corriente, intensidad de luz, etc. En definitiva, parámetros que varían con el tiempo, con la característica de que, dos muestras seguidas pueden ser iguales, y no nos interesaría obtenerlas, pero tras una variación sí que nos interesaría volver a ver el mismo valor. Por ejemplo, en una tabla de uno de CPU vemos:

    IdDateCPU Use
    15-jun-2013 10:44:2056%25-jun-2013 10:45:5057%35-jun-2013 10:47:2057%45-jun-2013 10:48:5057%55-jun-2013 10:50:2058%65-jun-2013 10:51:5058%75-jun-2013 10:53:2056%85-jun-2013 10:54:5055%95-jun-2013 10:56:2056%105-jun-2013 10:57:5056%115-jun-2013 10:58:2059%125-jun-2013 11:00:5059%

    Cuando en realidad lo que nos interesaría ver es:

    IdDateCPU Use
    15-jun-2013 10:44:2056%25-jun-2013 10:45:5057%55-jun-2013 10:50:2058%75-jun-2013 10:53:2056%85-jun-2013 10:54:5055%95-jun-2013 10:56:2056%115-jun-2013 10:58:2059%

    Por tanto tenemos dos formas de abordar el tema:

    Evitando introducir valores repetidos

    Para ello, bastaría con introducir un trigger en la base de datos asociado a la introducción de los valores en dicha tabla.… Leer artículo completo

  • Monitorizar el sistema y obtener gráficas de uso

    Cuando tenemos un servidor bajo nuestro control, es muy importante saber cómo vamos de recursos. Si hemos contratado un VPS, por ejemplo, debemos saber cuándo es hora de ampliarlo, o de contratar algo más pequeño porque vamos sobrados de recursos… o incluso poder comprobar que una parada del servicio se debe a un pico de uso del sistema. Esto también nos puede ayudar para comprobar cuándo nuestro server se ha parado debido a un kernel panic o algo parecido.… Leer artículo completo

  • Automatizar efectos para crear vídeos en GIMP con script-fu

    Tal vez hayamos utilizado GIMP es más de una ocasión, es un gran programa para retoque fotográfico en Linux. Por otro lado, para Linux no existen demasiados programas para creación de vídeo y efectos especiales, y los que hay son muy limitados.

    Por eso, se puede dar el caso de que quisiéramos aplicar un efecto de GIMP dentro de un vídeo, pero no sólo en un fotograma estático (que importamos la imagen dentro del vídeo y listo), sino en una animación, modificando ligeramente el comportamiento del efecto fotograma a fotograma.… 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

  • Modificar brillo y contraste de cada componente de una imagen en C

    windmill

    Un poco do it yourself y friki a la vez es este articulo. En él, vamos a cargar una imagen jpg y vamos a cambiar el brillo y el contraste de la foto que hay en el encabezado de la página, todo desde nuestro programa, simplemente utilizando libjpeg ( $sudo apt-get install libjpeg8-dev ) para cargar y guardar de nuevo la foto. El efecto lo aplicaremos con una función que trabaje con los pixels de la imagen.… Leer artículo completo

  • Publicando mensajes en Facebook sin que el usuario esté ahora mismo en la web [ modo offline ]

    enchufe

    Una de las grandes utilidades que nos da Facebook por si creamos una aplicación de escritorio, o una aplicación web que publique posts de nuestro blog automáticamente en nuestro muro, son los mensajes Offline, con este modo, no es necesario que un usuario esté identificado realmente en Facebook, aunque, debemos tener cuidado a la hora de trabajar con la aplicación, los usuarios nos han dado permiso para publicar en su nombre contenidos que nosotros generamos, por lo que debemos evitar que se pueda acceder a la publicación de contenidos directamente.… Leer artículo completo

  • Conocer uptime del servidor con PHP

    En ocasiones, sobre todo en nuestros paneles de administración, a veces es necesario, o bonito, conocer cuánto tiempo lleva el servidor encendido, así vemos si nos han reseteado la máquina o incluso alardear de que nuestro servidor lleva encendido más tiempo que otro.

    Para ello, yo uso este código:

    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
      /**
     ******************************************************************
     * @brief Obtiene un array con la información del uptime
     *
     * @return array('days'=> , 'hours'=> , 'minutes'=> , 'seconds'=>
     *         o falso si no se puede leer /proc/uptime
     *
     ******************************************************************/

      function getUptime()
      {
        $info = @file_get_contents("/proc/uptime");
        if (!
    Leer artículo completo