¡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 2018 se escapa! Posts, estadísticas, cambios, retos, programas, amigos, y más
El 2017 para Poesía Binaria. Posts, cambios, retos y lenguajes
Como 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
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
8if [ -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
fiDe 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
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
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¡ Siempre olvido la alineación de las variables ! GRR
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
Hay 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 ]
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):
… Leer artículo completo1
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).
Últimos comentarios