Publi

  • ¡El 2018 se escapa! Posts, estadísticas, cambios, retos, programas, amigos, y más

    2018 con bombilla.

    ¡Ya casi estamos en 2019! Y, como siempre, no he escrito ni la mitad de posts que quería escribir, ni he empezado ni la mitad de los proyectos que quería empezar. Aunque, estoy con ganas, fuerzas, e ilusión para llevarlo todo a cabo en 2019. Aunque, a primeros de año empecé con muchas ganas, las circunstancias han hecho que me tire unos tres meses sin escribir nada. Incluso aunque tengo un par de series de posts empezadas, no he podido continuarlas.… Leer artículo completo

  • El 2017 para Poesía Binaria. Posts, cambios, retos y lenguajes

    2017 blog resumen del añoComo todos los años, hago un resumen de mi año con el blog. Resumiendo cambios, hitos, agradeciendo mucho a mucha gente y contando alguna cosilla curiosa.

    Si el 2016 fue un buen año para el blog, 2017 ha sido un año más de mantenimiento. Aunque el año empezó fuerte, teniendo en marzo dos posts en Menéame. Uno en portada, Edición de Vídeo en GNU/Linux; y otro en portada de la categoría Linux, Aplicaciones Web Serverless.… Leer artículo completo

  • Cómo saber si existe una función en Bash, saber qué estamos ejecutando y más

    photo-1457317680121-ef12e98979e8

    En nuestra historia como programadores, hacemos infinidad de llamadas a funciones propias, de terceros, de biblioteca, a otros programas a un alias, etc Y si queremos que nuestros scripts sean lo más robustos posible, debemos tener claro antes de la ejecución que aquello que llamamos se puede ejecutar o dar opciones si algún comando o función no existe.

    Por ejemplo, nuestro script necesita hacer una llamada a wget de este tipo:

    wget -O salida http://totaki.com

    Pero queremos hacer que sea compatible con otros sistemas, por ejemplo, con cURL, y no podemos cambiar uno por otro, pues con curl sería con o minúscula:

    curl -o salida http://totaki.com

    Nuestro script podrá ser:

    1
    2
    3
    4
    5
    6
    7
    8
    if [ -n "$(which wget)" ]; then
        wget -O salida http://totaki.com
    elif [ -n "$(which curl)" ]; then
        curl -o salida http://totaki.com
    else
        echo "No puedo descargar el fichero"
        exit 1
    fi

    De modo que probamos la existencia de diferentes programas y utilizamos el que tengamos a disposición.… Leer artículo completo

  • Generando la salida de nuestros programas con plantillas en C++ con Silicon en pocas líneas

    photo-1456983887044-b5ecb1059660

    A medida que el hardware y el software van evolucionando, van cambiando las preferencias a la hora de desarrollar un producto. Hace unos años, el objetivo principal era que el producto final funcionara, intentar hacer el mínimo número de operaciones para que el software corriera en un ordenador de la mejor forma posible. Desde hace unos años, el hardware es capaz de hacer muchas cosas y muy rápido, los lenguajes han evolucionado y se han optimizado mucho; por lo tanto, podemos aprovechar y hacer que desde el punto de vista del mantenimiento, legibilidad del código, hacer que el código sea poesía y hacer que todas las piezas encajen perfectamente.… Leer artículo completo

  • 9 Trucos para manejar cadenas de caracteres en BASH y no morir en el intento

    156091_471903058359_4935894_n

    Aunque este tema lo he tratado alguna vez un poco más de pasada o con algún ejemplo concreto, vamos a ver ejemplos concretos de cosas que podemos hacer con una cadena de caracteres en Bash, para mejorar nuestros scripts, y sobre todo, para tener una pequeña documentación para mí, que siempre que necesito algo parecido me tiro un rato buscando…
    El caso es que en versiones más o menos nuevas de BASH (más o menos desde hace 6 años o así), podemos usar muchos de estos trucos y no tenemos necesidad de utilizar programas externos (como tr, awk, sed y otros) en muchos casos, por lo que la ejecución se realizará mucho más rápida.… Leer artículo completo

  • Magia en Bash 50 ejemplos en una sola linea (o dos)

    Bash es una de las herramientas más potentes que tenemos a nuestro alcance, aunque no sólo de bash trata el artículo, sino de trucos para consola, one-liner como dirían muchos (aunque habrá algunos two-liners) que podemos utilizar y pueden hacernos la vida un poco más fácil:

    Cadenas de texto

    Trim

    Es una herramienta que utilizaremos para recortar nuestra cadena basándonos en los a la ìzquierda y a la derecha, en este caso nos basaremos en los espacios, que es uno de sus usos más comunes (así podemos obtener la cadena limpia tanto por delante como por detrás.… Leer artículo completo

  • ¡ Siempre olvido la alineación de las variables ! GRR

    1GB DDR3 Memory Module

    Algo que pocas veces tenemos en cuenta es la alineación de las variables en la memoria RAM. Muchas veces, ni nos va, ni nos viene, aunque en ciertas ocasiones suele causar calentamientos de cabeza.

    Tiene que ver con la forma que tiene la CPU para dialogar con la RAM y la arquitectura de éstas. Partimos del hecho de que pedir un dato a la memoria es algo lento, sí se hace muchos millones de veces por segundo, pero mientras viene o no viene el dato, la CPU simplemente espera. … Leer artículo completo

  • Separar palabras de una cadena de caracteres en un array [ C ]

    Si conocéis PHP, habréis visto la función explode(). Tiene una utilidad curiosa, separa cadenas de caracteres en elementos de un array. Es como hacer un corte a la cadena cada vez que encontremos un carácter delimitador. Por ejemplo:

    «Bienvenido al blog Poesía Binaria», si usamos como delimitador » » (un espacio), los elementos del array quedarían así:

    [0] = «Bienvenido»
    [1] = «al»
    [2] =»blog»
    [3] =»Poesía»
    [4] = «Binaria»

    Pero en C, no encontramos ninguna función que haga esto, tenemos que currar un poco; aunque tenemos una función de string.h que hace algo que se parece en cierto modo: strtok(), esta función, va a separar una cadena en fragmentos modificando la propia cadena, es decir, introduciremos caracteres terminadores al final de cada palabra.… Leer artículo completo

  • Contar letras (caracteres) en EMACS

    letrasHay ocasiones en las que, cuando estamos escribiendo en nuestro editor de texto, necesitamos saber cuántas letras tiene un texto seleccionado.

    Podemos hacerlo a la antigua usanza (la mayoría de los editores nos dicen el número de línea y carácter donde está el cursor, pues miramos al final del texto y al comienzo y restamos. Aunque emacs tiene un comando específico que nos hará esa tarea más fácil.

    M-x count-lines-region

    Nos devolverá el número de líneas y caracteres que tiene un texto seleccionado, como carácter se cuenta también el retorno de carro.… Leer artículo completo

  • Separar palabras de una cadena en C [ método dinámico con puntero triple ]

    photo-1444228250525-3d441b642d12
    Hace un mes o así publiqué un método para extraer las palabras de una cadena en un Array, ahora traigo un nuevo fragmento de código cuya misión es no estar tan limitado, y no tener que decir con antelación y con ello no tener que reservar memoria precipitadamente.

    Dejo dos códigos fuente, en el primero, la reserva de memoria para almacenaje de información es palabra por palabra, es decir, me llega una palabra reservo memoria, me llega otra, amplio en 1 elemento la memoria reservada y así hasta recibir todas (incluyo el código para probar la función):

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

    /**
    ******************************************************************
    * @brief Extrae palabras de una cadena y las coloca en un puntero
    *        doble E/S (triple, por tanto).
    Leer artículo completo