Publi

  • Comentarios en el código fuente

    Leo en Stack Overflow los mejores comentarios que se han encontrado muchos desarrolladores en el código fuente. Merece la pena leerlos, y echar un ratillo. Advertencia… está en inglés.

    Podemos encontrar muchísimas disculpas, y es cierto que muchas veces recurrimos a soluciones rápidas, ininteligibles para los demás humanos, no demasiado optimizadas y mucho menos elegantes, pero que nos hacen el apaño.

    También encontramos algunos como:

    1
      return 1; # returns 1
    1
    long long ago; /* in a galaxy far far away */
    1
    double penetration; // ouch
    1
    return 0; // Happy ending
    1
    2
    // Added because boss changed his mind : 20020111,20020501,20020820, ...
    Leer artículo completo
  • Vídeo digital: Secuencias de imágenes

    Esta vez voy a presentar algunos ejemplos de uso de ffmpeg con secuencias de imágenes. Para empezar a trabajar con vídeo digital desde GNU/Linux.

    Crear vídeo a partir de una secuencia de imágenes

    Es una buena técnica el hecho de trabajar con secuencias de imágenes para crear un vídeo. Podemos, por ejemplo utilizar la potencia de Imagemagick (I, II, III, IV) para modificar el color de la imagen, etiquetarlas o darle algún tratamiento.… Leer artículo completo

  • Jugando con ImageMagick (IV): Automatizando procesos, creando animaciones

    El cuarto post de la serie, anteriormente hablábamos de:

    1. Dimensiones, Captura, Color y Efectos
    2. Color (continuación) y Rotación
    3. Jugando con ImageMagick (III): Colecciones, texto, y unión de efectos

    Ya que estamos hartos de ver lo que es capaz de hacer ImageMagick, ahora mezclemos esto con la potencia de la consola, y tendremos una de las herramientas más potentes jamás inventadas en cuanto a imagen digital se refiere.

    Modificando imágenes en un directorio

    Aunque podremos hacer cualquier tipo de modificación, tal y como hemos visto anteriormente, haremos un ejemplo en el que redimensionaremos todos los archivos de un directorio al 50% (muy útil si preparamos en un directorio muchos archivos directamente de una cámara digital para subir a Internet):

    $ mogrify -resize 50% directorio/*

    Con mogrify podemos hacer lo mismo que con convert, sólo que el fichero de origen y de destino es el mismo.… Leer artículo completo

  • La pesadilla de cambiarse a Windows

    No suelo hacer un post sólo para enlazar un artículo, pero este me ha parecido interesante.

    Y es que muchos vez un cambio a Linux como algo oscuro y siniestro, pero hay personas que consideramos el cambio a Windows como algo tremendamente difícil.

    La pesadilla de cambiarse a Windows – Paraíso Linux

    Personalmente, ¿ por qué uso Linux ?

    • Me hace más productivo
    • Me da más sensación de seguridad
    • Me permite hacer más cosas
    • Me gusta aprender algo cada día

    Todo va mucho más allá de la filosofía del software libre.… Leer artículo completo

  • Compilando y linkando a mano con GCC

    GCC compila y linka automáticamente, nos devuelve un ejecutable directamente:

    $ gcc -o ejecutable fuente.c

    pero en realidad, aparte de pre-procesar y compilar, enlaza algunas bibliotecas del sistema para que nuestro ejecutable funcione bien. Sólo por jugar un poco, veamos, más o menos (depende del sistema) cómo obtener el ejecutable a mano, es decir, compilamos por un lado, y linkamos por otro.

    Primero, creamos un programa sencillo, un hello.c que contenga lo siguiente:

    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>

    int main(int argc, char *argv[])
    {
       printf("Hola mundo!!
    Leer artículo completo
  • Tecla rápida para compilar con Kate

    Aunque tenemos a nuestra disposición gran cantidad de IDEs para programación, a veces viene bien un programa muy rápido y que tenga capacidad para compilar y ejecutar pequeños programas.

    Aunque tenemos la posibilidad de cargar una consola integrada, pero no es suficiente.

    confkateNos dirigimos a la configuración del programa…

    captElegimos herramientas externas y escogemos Nuevo, para crear una nueva herramienta. Ahí encontraremos la siguiente ventana:

    capt1Rellenamos los campos y en script escribimos lo siguiente:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    xterm -name xt2 -e sh -c 'cd "%directory";
    fichero="%filename";
    ejecutable=${CF%.*};
    extension=${CF#*.};
    extension=`echo $extension | awk '
    \''{print tolower($0)}'\''`;

    rm $ejecutable 2&gt; /dev/null;
    case $extension in
    "c") gcc -o $ejecutable "%filename" 1&gt;&amp;2 2&gt;/tmp/ktc_err
    ;;
    "cpp") g++ -o $ejecutable "%filename" 1&gt;&amp;2 2&gt;/tmp/ktc_err
    ;;
    *) echo "Extensión no reconocida" ;;
    esac
    ./ejecutable
    echo -e "\n-----------------";
    echo "Compilación: ";
    cat /tmp/ktc_err;
    echo -e "--------------------\n";

    printf "%s" "Pulsa INTRO para continuar"; read intro'

    Este script básicamente compilará el programa actual ya sea en c o c++ dependiendo de la extensión y lo ejecutará, al mismo tiempo veremos un pequeño informe de la compilación al final de la ejecución.… Leer artículo completo

  • Jugando con ImageMagick (III): Colecciones, texto, y unión de efectos

    El tercer post de la serie, anteriormente hablábamos de:

    1. Dimensiones, Captura, Color y Efectos
    2. Color (continuación) y Rotación

    Juntando imágenes en una sola

    Ahora, la cosa se anima, veremos cómo recopilar varias imágenes en el mismo archivo de imagen; habréis visto algún ejemplo en la entrega II, en los que muestro varias imágenes juntas:

    variasPara ello usamos montage:

    $ montage -tile 4×2 -geometry 200×160+1+0 taza1.jpg taza2.jpg taza3.jpg taza4.jpg hamburgueson1.jpg hamburgueson2.jpg hamburgueson3.jpg hamburgueson4.jpg varias.jpg

    Donde, con el parámetro tile, especificamos la agrupación de las imágenes ancho x alto (4×2 en este caso) y con geometry, el tamaño de cada imagen 200×160 de máximo, con una separación de 1 pixel a los lados y ninguno verticalmente.… Leer artículo completo

  • Ordenación en PHP. Ordenar provincias, pero Madrid y Barcelona ponerlas primero.

    En el desarrollo del registro de una página web para España, es normal que la mayoría de las personas vengan de Madrid, Barcelona, Valencia o Sevilla (las provincias podemos cambiarlas).

    El algoritmo para ello, en PHP es el siguiente:

    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
    <?php
    $provincias = array ("Almería",   "Cádiz",       "Córdoba",  "Granada",     "Huelva",     "Jaén",           "Málaga",
    "Huesca",    "Teruel",      "Zaragoza", "Asturias",    "Cantabria",  "Sevilla",        "Zamora",
    "Ávila",     "Burgos",      "León",     "Palencia",    "Salamanca",  "Segovia",        "Soria",
    "Albacete",  "Ciudad Real", "Cuenca",   "Guadalajara", "Toledo",
    "Barcelona", "Girona",      "Lleida",   "Tarragona",   "Alicante",   "Castellón",      "Valencia",
    "Badajoz",   "Cáceres",     "A Coruña", "Lugo",        "Ourense",    "Pontevedra",     "La Rioja",
    "Murcia",    "Navarra",     "Álava",    "Guipúzcoa",   "Vizcaya",    "Islas Baleares", "Las Palmas",
    "Santa Cruz de Tenerife",   "Ceuta",    "Melilla",     "Valladolid", "Madrid");

    function ordena_provincias ($a, $b)
    {
    static $primeras = array ("Madrid", "Barcelona", "Valencia", "Sevilla");

    $iaa = in_array($a, $primeras);
    $iab = in_array($b, $primeras);

    /* Si las dos provincias están en el array $primeras miramos en qué posición están */
    if ( ($iaa) &amp;&amp; ($iab) )
    {
    $iaa = array_search($a, $primeras);
    $iab = array_search($b, $primeras);

    return ($iaa<$iab)?
    Leer artículo completo
  • Jugando con ImageMagick (II): Color y rotación

    Sigo con la serie de posts sobre ImageMagick, anteriormente estuvimos viendo cómo podemos redimensionar, añadir y quitar bordes a la imagen, cambiar y ecualizar el espacio de color, añadir efectos y capturar de la pantalla. Ahora veremos más cosas relacionadas con el color:

    Tocando los canales de color

    hamburgueson_33Imagina que queremos aplicar un efecto sólo en un canal, por ejemplo, un efecto radial-blur sólo en el canal rojo:

    $ convert -channel red -radial-blur 30 hamburgueson.jpg hamburgueson_rojo.jpg

    Donde 30 es el radio del emborronamiento (blur) radial.… Leer artículo completo