Publi

  • Curioso e interesante III: Licencias libres, sistemas de productividad, diseño web, Linux 5%

    En los últimos días me he encontrado con información interesante, ¡echadle un vistazo!

    Leer artículo completo
  • Pequeña reflexión sobre el uso de Linux

    Esto está basado en una conversación real. Hace un tiempo, encontré a una de esas personas, que yo llamo cariñosamente, un gafe informático, tras comprarse el primer ordenador, tuvo mala suerte instalando Windows (Millenium, sé que todos tenemos un amigo de un amigo al que le ha funcionado bien esta versión, pero no fue el caso de esta persona), cada poco tiempo le fallaba casi sin hacer nada, de estas veces que instalas cuatro programas locos que has instalado varias veces en varios ordenadores y en el ordenador de esa persona no entran.… Leer artículo completo

  • Tras un descanso o algo que se le parece

    dinamita
    Vuelvo después de unos días sin escribir, tras un descanso o algo que se le parece, he estado trabajando en varios proyectos, y en un curso avanzado de GPUs, del que ya traeré algunos contenidos fresquitos a medida que vaya haciendo alguna cosilla.

    Tengo muchos nuevos posts en mente y muy poco tiempo para escribirlos, pero lo intentaré, que el verano es muy largo y siempre hay muchos proyectos en mente, de los que no se cumplen al final ni la mitad.… Leer artículo completo

  • Actualizado stermp.h (getch(), getche() y kbhit() en Linux)

    Hace más de un año publiqué algunas funciones para manejar colores en la terminal de forma fácil. (Ver link). El objetivo era aprender un poco cómo funciona la terminal, y de paso ayudarme con mis alumnos de clases particulares (casi todos utilizan conio.h), yo quería una alternativa; por otra parte, facilitar el uso en proyectos pequeños, ya que si queremos algo más, para eso está ncurses.

    Me he decidido sacar una segunda versión, ya que la primera no disponía de sustituto para getch() ni kbhit(), recordemos que estas funciones son para pedir un carácter desde teclado sin echo y sin necesidad de pulsar ENTER, y detectar la pulsación de una tecla sin parar la ejecución del programa respectivamente.… Leer artículo completo

  • Sed… de venganza (1): Sustituyendo cadenas en múltiples archivos

    3846929292_60721fb24e

    Es uno de los grandes desconocidos y tan temidos comandos de que disponemos. Y es cierto que a veces da pereza mirarse el manual cuando queremos hacer algo que sed podría hacer rápidamente.

    Lo que cuento hoy es su uso más popular (porque sed se puede usar para muuuuuchas cosas) y es muy simple, sustituir en un stream un texto por otro (Donde dije digo, digo Diego).

    Imaginemos un fichero de texto, para ser originales llamémosle README, y en el texto queremos cambiar la palabra «Ireland» por «Spain».… Leer artículo completo

  • Sorteo: Camisetas geek gratis

    Al principio hice un post copy-paste de la web, pero mira, ahora me lo voy a currar un poco más.

    Desde Nosolounix nos presentan un curioso sorteo de camisetas geek. No hay que currar mucho, y podemos aprovechar para ver qué tal es el servicio de Ropageek.com.

    Sólo tenemos que entrar aquí y seguir las instrucciones. Básicamente hay que vivir en España, escribir un comentario en ese mismo blog y enviar un mail diciendo tu nombre y qué camiseta quieres (habrá que entrar en la web para ver el catálogo).… Leer artículo completo

  • Bailando con bits: Trabajando a nivel de bit II

    binarios

    Hace unos días empecé con la serie Bailando con Bits (aunque llevaba escrito varios meses) trata de formas para trabajar a nivel de bit desde C.

    Hoy voy a proponer otra forma, quizás menos intuitiva que la anterior, pero diferente. Esta vez no utilizaremos un registro enorme ni nada parecido, utilizaremos un mismo número entero para hacer el ejemplo:

    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
    #include <stdio.h>

    #define PESOBIT(bpos) 1<<bpos
    #define COGEBIT(var,bpos) (var & PESOBIT(bpos))?1:0
    #define PONE_1(var,bpos) var | PESOBIT(bpos)
    #define PONE_0(var,bpos) var & ~(PESOBIT(bpos))
    #define CAMBIA(var,bpos) var ^ PESOBIT(bpos)

    int main()
    {
      int numero;
      int i;

      numero=63;
      printf ("Numero: %d\n", numero);


      for (i=31; i>=0; i--)
        printf("%4d", i);

      printf("\n");

      for (i=31; i>=0; i--)
        printf("%4d",COGEBIT(numero,i));

      printf("\n");

      numero=PONE_1(numero, 17);
      numero=PONE_0(numero, 3);
      numero=CAMBIA(numero, 20);
      numero=CAMBIA(numero, 5);

      for (i=31; i>=0; i--)
        printf("%4d",COGEBIT(numero,i));

      printf("\nNúmero: %d\n", numero);

    }

    Ahora usamos varias macros que harán operaciones de bit con la variable a analizar (están definidas en la parte de arriba), tenemos PESOBIT, COGEBIT, PONE_1, PONE_0 y CAMBIA:

    • PESOBIT: Nos dice cuánto vale un bit con valor 1 en la posición especificada, por ejemplo en la posición 0 (LSB) vale 1, en la posición 1, vale 2, en la posición 3, vale 4, en la posición 4, vale 8…
    • COGEBIT: Nos dice si el bit en la posición bpos de la variable var vale 0 ó 1
    • PONE_1: Pone un 1 en el bit bpos de la variable var
    • PONE_0: Pone un 0 en el bit bpos de la variable var
    • CAMBIA: Cambia el valor (de 0 a 1 y viceversa) del bit en la posición bpos de la variable var

    Como vemos en el ejemplo si queremos poner a 1 el bit 5 de numero, tendremos que hacer numero=PONE_1(numero,5), aunque en el siguiente ejemplo veremos cómo simplificar todo eso.… Leer artículo completo

  • Fibonacci recursivo en C [ intentemos no repetir operaciones! ]

    fibo
    Es un ejercicio muy típico cuando se está aprendiendo con funciones recursivas es la sucesión de Fibonacci, aquella en la que F(n)=F(n-1)+F(n-2).
    Aunque esta técnica podemos (y deberíamos) utilizarla para una gran cantidad de algoritmos. A veces es necesario sacrificar un poco la memoria del sistema (sin pasarnos) para agilizar y hacer más rápido el programa. Debemos adoptar una solución que beneficie al usuario, no es plan de dejarlo sin memoria, pero tampoco es plan de que la solución se eternice.… Leer artículo completo

  • Reproducir vídeos de youtube desde Firefox con mplayer

    flvideoreplacer-logoHace unas horas descubrí esta fantástica extensión para Firefox. Su misión es cambiar los reproductores flash de Vimeo y Youtube entre otros por un reproductor de medios compatible (en mi caso, yo uso el plugin de mplayer). Los vídeos por fin se reproducen de forma fluida y la búsqueda dentro de los mismos es mucho más rápida que desde flash.

    Ahora por fin, no se pone el ventilador de mi ordenador a gritar (al menos el ventilador de la CPU) cuando intento reproducir algo a pantalla completa.… Leer artículo completo

  • Descargar álbumes Picasa sin Picasa, sin Java y sin ningún programa extra

    fotofotoUn buen sistema para compartir fotos es Picasa, de Google; aunque puede que no seamos usuarios de Google, ni tengamos el programa instalado en nuestro equipo, pero queramos descargar un álbum de fotos por completo.

    Presento otro de mis scripts rápidos (no está optimizado, tal vez sea lento, pero hace el apaño) para descargar las fotos de un álbum Picasa. Lo que necesitamos es el RSS del álbum, lo descargamos en algún directorio y ejecutamos el siguiente script:

    1
    2
    3
    4
    for i in `sed -e 's/\/>/\/>\n/g' archivo.rss | sed -n -e 's/.*<media:content url='"'"'\(.*\)'"'"' height=.*/\1/p'`
    do
      wget $i;
    done

    Donde archivo.rss es el archivo que acabamos de descargarnos.… Leer artículo completo