Este año, trabajando con las URLs, he decidido realizar 27 felicitaciones navideñas con este motivo, derivando a quien le dé por buscar si esas urls tienen algún sentido otro que el azaroso, al menos a esta entrada del diario que dedicaré a semejantes especímenes.
Programé un pedacito de código C (con VI, por supuesto, y «from scratch», como a mí me gusta) que ha generado 27 URLs únicas. Las he acomodado con GIMP/Linux sobre papel fotográfico que me regalaron con la impresora y al que no sabía qué uso dar.
Me gusta la unicidad del (pseudo)azar programable, que dota de cierto engañoso aura a cada una de las pequeñas piezas que, por momentos, pensé en personalizar, pero intervenía en el azaroso gestar de las mismas… Ya es suficiente con que las URLs comiencen con mi SLD (Second Level Domain), en lugar de un dominio generado al azar.
/*****************************************
urlarga.c
Programa crear URLs que no tengan ningún sentido
más que el azaroso.
Añado la dirección del servidor para que si alguien
quiere ir, al menos aparezca una mínima explicación
de en qué consiste el proyecto.
Derivo a una URL que contiene una búsqueda en mi blog
incluyendo la palabra "urlarga" que remitirá
a una entrada específica creada para tal fin.
*****************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <wchar.h>
#include <locale.h>
// Longitud de la URL formada, incluyendo el protocolo y el servidor
#define LONGITUD_MAX 729
// Para realizar 27 URLs arbitrarias
#define NUM_URLS 27
int main()
{
setlocale(LC_CTYPE, ""); // Necesario para que funcionen las ñ
int i, j, letra, l_alfa, l_prot, l_serv, l_base;
// Un alfabeto incluyendo algunos signos de puntuación
wchar_t alfabeto[] = L"0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz!!$%&/()=?¿¡,;:-_+ç";
wchar_t URL[LONGITUD_MAX];
wchar_t protocolo[] = L"http://";
wchar_t servidor[] = L"giusseppe.net/blog/?s=feliz&2018&urlarga&";
l_alfa = wcslen(alfabeto);
l_prot = wcslen(protocolo);
l_serv = wcslen(servidor);
l_base = l_prot + l_serv;
srand (time(NULL));
for (j = 0; j < NUM_URLS; j++)
{
wmemset(URL, L'\0', LONGITUD_MAX);
wcscpy(URL, protocolo);
wcscat(URL, servidor);
for (i = l_base; i < (LONGITUD_MAX-1); i++)
{
letra = rand() % l_alfa; // Obtenemos una letra (índice) al azar del alfabeto
// Aleatoriamente, si el anterior no era un punto ni una /, ni estamos al final de la URL, ponemos un punto.
if ((!(rand()%5)) && (URL[i-1] != L'.') && (URL[i-1]!=L'/') && (i != (LONGITUD_MAX-1))) URL[i]=L'.';
else URL[i]=alfabeto[letra];
};
wprintf(L"|%ls|\n", URL);
};
} // main()