Publi

  • Un post para entrar en Technorati

    Siento las molestias que os pueda ocasionar el post, lo borraré en cuanto me validen el blog
    7DCHNYAB72FU

  • Representar imágenes a pantalla completa con GTK+ en C (y romperles la pantalla del portátil)

    crackedscreen1440x900

    Aunque muchos de mis proyectos con GTK+ son en C++, cuando es algo pequeño, es más corto hacerlo en C (aunque una vez que te acostumbras a los objetos, es poco intuitivo).

    Lo que vamos a hacer es crear una ventana, introducir una imagen dentro redimensionada para ocupar la pantalla y poner la ventana a pantalla completa (ojo, no en todos los window managers funciona, pero en casi todos). Al final, lo que conseguimos es poner de fondo la imagen que ilustra el post en cualquier pantalla de portátil para conseguir dar un susto al dueño.… Leer artículo completo

  • Reservar dinámicamente memoria para un array bidimensional en C

    led_array
    Uno de los grandes defectos de un array, es que en tiempo de codificación debemos definir el tamaño que tendrá en tiempo de ejecución. A veces, es lo más fácil y está bien, lo utilizamos, puede que malgastemos unos bytes, pero no pasa nada, otras veces es una variable de un tamaño justo y no nos excedemos. Pero muchas veces, el gran problema, es que no tenemos ni idea de cuánto tamaño darle; si le damos poco, porque nos quedamos cortos, si nos pasamos, porque malgastaremos varios Megabytes, y a veces sabemos que incluso aunque algunas veces se desperdicie gran cantidad de memoria habrá casos en los que nos quedamos cortos.… Leer artículo completo

  • Hallar información de un dispositivo de red en C

    Volviendo a un artículo anterior donde hallábamos la dirección IP de un dispositivo, he decidido extender un poco la funcionalidad para poder hallar más información acerca de un dispositivo de red.

    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
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/ioctl.h>
    #include <net/if.h>
    #include <string.h>

    #define get_addr(var) (*(struct in_addr *) &var.ifr_addr.sa_data[2])

    int getdevinfo(char * ifname) {
      int sock;
      struct ifreq ifr;

      sock=socket(AF_INET, SOCK_DGRAM, 0);
      if (sock<0)
        return -1;          /* No puedo crear el socket */

      ifr.
    Leer artículo completo