Publi

  • C.I. IX: KGPU, M$ Skype, NOSQL, Twitter VS frustración

    Os dejo algunos enlaces interesantes recopilados estos últimos días:

    • Speeding Up The Linux Kernel With Your GPU. Lo que leéis, hay un proyecto para acelerar el kernel con la ayuda de la GPU. Patrocinado por NVIDIA y la Universidad de Utah, puede hacer las lecturas/escrituras en sistemas de archivos cifrados 3 ó 4 veces más rápidos. En principio sólo vale para cifrado, pero bueno, sólo es cuestión de pensar qué tareas del kernel se podrán paralelizar y compensa hacer en GPU (vamos, que la transmisión de datos de y a la memoria gráfica no sea más lenta que procesar la tarea en CPU; y que la tarea sea paralelizable).
    Leer artículo completo
  • Exportar desde MySQL a CSV

    Este post está explicado de forma más extendida aquí.

    He eliminado el contenido de este post porque ya está contenido en el enlace.

    Exportar datos de MySQL a un fichero CSV o tabulado.

    Leer artículo completo
  • Restablecer contraseña de root en servidor MySQL

    En ocasiones, sobre todo en nuestro servidor de pruebas (que a lo mejor puede ser
    nuestro servidor de producción), podemos perder la contraseña de root de MySQL, y es un
    fastidio, porque se nos puede pasar por la cabeza reconfigurar el paquete y perderlo
    todo, pero son momentos en los que hay que tener paciencia y si tenemos información, no
    es plan de destruir gratuitamente los datos.

    Para ello, dejo unos sencillos pasos con los que restableceremos la contraseña de root
    de MySQL (es necesario tener privilegios en el ordenador en el que está instalado
    MySQL):

    1.… Leer artículo completo

  • [ OFFTOPIC ] Acuista y su obsesión con la transferencia de datos

    Veo en la web de Acuista buscando calefactores, que ahora en invierno se agradecen lo siguiente:
    acuista
    Y es que parece ser que en la web, cuando algo no saben cómo se mide, le ponen MB/s, y cuando algo tiene 2000MB/s de potencia… asusta.

    En fin, es sólo una broma… Leer artículo completo

  • Nos ponemos serios con PHP: Empezamos con un CRUD (la esencia no es exclusiva de PHP)

    crudHace años tuve entre manos un gran proyecto web, en el que invertí 8 meses de mi vida y funcionó bastante bien durante un tiempo. En su desarrollo recuerdo que tuve que desarrollar cerca 50 formularios diferentes, comprobar los valores de cada uno de los campos, hacer lecturas y escrituras en base de datos con los datos obtenidos, y opcionalmente realizar alguna tarea extra una vez enviado y validado el formulario.… Leer artículo completo

  • Por qué no debemos utilizar gets()

    getsA veces me sorprendo (como profesor de programación) de que en muchos sitios siguen enseñando la función gets() para la entrada de datos desde teclado sin explicar lo que puede pasar.

    gets() es una función peligrosa. Imaginemos que escribimos el siguiente programa:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>

    int main()
    {
      char cadena2[10];
      char cadena1[10];

      printf("c1: %x\nc2: %x\n", cadena1, cadena2);
      gets(cadena1);

      printf("Cadena 2: %s\n", cadena2);
    }

    Ahora la compilamos, ejecutamos e introducimos un texto de prueba:

    $ gcc -o test3 test3.c
    /tmp/ccK2P2ON.o: In function `main’:
    test3.c:(.text+0x32): warning: the `gets’ function is dangerous and should not be used.

    Leer artículo completo
  • Limpiar el buffer de teclado en Linux con ejemplos en C y C++

    reducida

    A veces, mientras se está desarrollando un pequeño programa en C en el que hay entradas del usuario por teclado, hay veces que parece que se pulsan teclas solas, esto es debido a una entrada de teclado anterior que no ha llegado a volcarse entera en nuestras variables.
    Un ejemplo en cuestión lo tenéis aquí:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <stdlib.h>
    #include <stdio.h>

    #define MAX_NOMBRE 128

    int main(int argc, char *argv[])
    {
      char nombre[MAX_NOMBRE];
      int dia, mes, year;

      printf ("Introduce fecha de finalización (dd/mm/YYYY): ");
      scanf("%d/%d/%d", &dia, &mes, &year);
      printf ("Nombre de la tarea: ");
      fgets(nombre, MAX_NOMBRE, stdin);

      printf("La tarea %s termina el: %d/%d/%d\n", nombre, dia, mes, year);
      return EXIT_SUCCESS;
    }

    En un primer momento, cuando introducimos la fecha, tenemos que introducir «12/12/2010» por ejemplo y luego pulsar enter para que scanf() pueda finalizar, aunque esa pulsación de enter se queda almacenada en el buffer de teclado, siendo lo único que hay en el buffer en este momento.… Leer artículo completo