URLarga: Feliz 2018

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()

Transitar

TRANSITAR

El verbo transitar viene del latín transitare, frecuentativo formado a partir del nombre de acción transitus (tránsito) del verbo transire (ir de un lado a otro, atravesar) compuesto por trans- (de un lado a otro) y el verbo ire (ir).

Otras palabras formadas con trans– incluyen transeúnte, transgénico, transgredir, transliteración, traspontín, tranvía. Este prefijo latino viene de la raíz indoeuropea *terə-2 (cruzar, pasar por), que nos dio avatar a través del sánscrito.

De ire tenemos: ambiente, andar, comicios, inicio, pretérito, sedición, etc. El verbo latino ire se asocia con la raíz indoeuropea *ei– (conducir), que estaría presente en el griego εἶμι (eimi = yo camino) y de ahí la palabra ion.

Me da bastante por saco cuando una web se empeña en impedir que se pueda usar el botón derecho para, por ejemplo, seleccionar texto de la misma. Como si pudieran poner verjas al campo. Y es que, si me dejan ver si página, puedo, sin ir más lejos, descargarme la misma e incluso modificar el código HTML que me impide hacerlo, o, más sencillamente, obtener directamente desde el código fuente la información que preciso.

Tan sólo lo ponen un poco más complicado, pero no es evitable. Salvo que lo conviertan todo en una imagen, por ejemplo, lo que acabaría siendo absurdo e insostenible. Alguna vez se tendrá que hablar con seriedad de la manera en la que compartir el conocimiento en algo tan inabarcable e ingobernable, aunque se empeñen, como es Internet.

Lo siento por quienes pretendan vivir como si nadie supiese nada… pero no es así.

Palimpsesto: ente

En otra de las manipulaciones del diccionario, esta vez provocada por la combinación de palabras que podríamos denominar haiku experimental o haiku concreto:

Impotente
potente
silente ente

Me vino a la «mente» el hacer una serie de poemas cuyas todas palabras terminasen en «ente», pero quizá resulta algo pesado. Ya veré si continúo el proyecto, aunque es poco probable.

De momento, me atrajo la idea de juguetear con el diccionario y buscar todas aquellas palabras que contuviesen la palabra ente al final de las mismas, sin contener (al final de las mismas) la palabra mente. Son, lo que podríamos denominar, entes sin mente.

Para ello, valiéndome del diccionario en modo texto sin repeticiones que tengo en formato texto plano, compuse el siguiente programa o pedacito de código que creaba el fichero entenomente.txt del que poder extraer la capa segunda del palimpsesto que presento en esta ocasión.

#
# ente.sh
#!/bin/bash
# Recogemos todas las palabras del diccionario sin repeticiones
# terminadas en "ENTE" que no terminen en "MENTE"
# para descartar todas esas formas adverbiales fáciles
# aunque queda excluida, por error, la palabra mente.
grep "ente$" ../diccionariosinrepes.txt|grep -v "mente$" > entenomente.txt
# Comando para sustituir el final de línea por ", "
# El siguiente sed modifica 'miento' por '<b>miento</b>'
sed ':a;N;$!ba;s/\n/\, /g' entenomente.txt > entenomentelinea.txt
sed 's/ente/<b>ente<\/b>/g' entenomentelinea.txt > entenomentehtml.txt

Generó la siguiente salida, con resaltados para aprovechar ese entenomentehtml.txt:

absente, absorbente, abstergente, abstinente, accidente, acescente, acidorresistente, acrescente, acudiente, adherente, adoleciente, adolescente, adquirente, adquiriente, adsorbente, adstringente, adyacente, aferente, afluente, afluyente, aguardiente, alburente, algente, aliciente, altilocuente, ambiente, ambivalente, antecedente, antepresente, antiadherente, anuente, aparente, apetente, aplaciente, aprendiente, aquiescente, arborescente, ardiente, argente, arguyente, armipotente, ascendente, ascendiente, astringente, atinente, atingente, atrayente, ausente, autocomplaciente, autosuficiente, balbuciente, barbiponiente, barbipungente, barbipuniente, batiente, benevolente, bidente, bienhaciente, bienoliente, bioluminiscente, birrefringente, bivalente, bullente, cadente, calamo currente, caliente, candente, capelardente, carente, caridoliente, casateniente, caulescente, causahabiente, cecuciente, cedente, ciente, circunferente, circunyacente, ciudente, clarividente, coagente, coalescente, cociente, codelincuente, coeficiente, coexistente, cognoscente, coherente, coincidente, combatiente, comburente, comitente, compaciente, compareciente, comparente, competente, complaciente, componente, concedente, concerniente, concluyente, concupiscente, concurrente, condecente, condescendiente, conducente, conficiente, confidente, confitente, confluente, confluyente, connivente, consciente, consecuente, consiguiente, consintiente, consistente, constituyente, constringente, contendiente, continente, contingente, contracorriente, contradurmiente, contrainsurgente, contrapariente, contraproducente, contrayente, contribuyente, contundente, convaleciente, conveniente, convergente, convincente, conviviente, correferente, corregente, correspondiente, corriente, corroyente, corrumpente, cortacorriente, cotangente, covalente, creciente, creyente, crujiente, cuentahabiente, curtiente, dasquicerente, decadente, decente, deciente, decreciente, decumbente, decurrente, deferente, deficiente, dehisciente, delicuescente, delincuente, demulcente, dente, Deo volente, dependente, deponente, derechohabiente, descendente, descendiente, desobediente, despediente, despidiente, desplaciente, detente, detergente, diapente, dicente, diciente, diente, diferente, difidente, difluente, difrangente, diligente, diluente, diluyente, dimitente, dirigente, discente, disidente, disolvente, displicente, divalente, divergente, docente, doliente, dormiente, drogodependiente, durmiente, eferente, efervescente, eficiente, eflorescente, efluente, electroluminiscente, elocuente, emergente, eminente, emoliente, empeciente, emulgente, encontinente, encreyente, enmiente, ente, –ente, entente, entrepuente, envolvente, equipolente, equipotente, equivalente, erubescente, escarbadiente, esciente, escribiente, eseyente, espinescente, esplendente, estridente, estupefaciente, evanescente, evidente, excedente, excelente, excipiente, excluyente, exconvatiente, exigente, existente, expediente, exponente, farmacodependiente, fehaciente, fendiente, ferviente, floreciente, fluente, fluorescente, fluyente, fosforescente, fotoresistente, frangente, frecuente, frente, frigente, fringalente, fuente, fulgente, fundente, furente, furiente, gallipuente, gente, gimiente, graciadiosente, gradiente, grandilocuente, gruñente, habiente, haciente, hendiente, hiriente, hocente, idempotente, -iente, ignipotente, impaciente, impediente, impelente, impenitente, impertinente, imponente, impotente, improcedente, impropiamiente, imprudente, impudente, inapetente, inasistente, incandescente, incidente, inciente, incipiente, incluyente, incoherente, incompetente, inconducente, inconfidente, incongruente, inconsciente, inconsecuente, inconsiguiente, inconsistente, incontinente, inconveniente, indecente, indeficiente, indehiscente, independente, independiente, indiferente, indigente, indolente, indulgente, ineficiente, inexistente, infidente, influente, influyente, infrecuente, ingente, ingrediente, inherente, inmanente, inminente, inmunodeficiente, innocente, inobediente, inocente, insipiente, insistente, insolente, insolvente, instridente, insubsistente, insuficiente, insulinodependiente, insurgente, inteligente, intercadente, intercurrente, interdependiente, intermitente, interviniente, interyacente, intransigente, intrascendente, intumescente, invidente, iridiscente, irreverente, jurisprudente, jusente, lactescente, latente, laurente, lente, levente, luciente, lugarteniente, luminiscente, magnificente, maldiciente, maledicente, malevolente, maloliente, malqueriente, malviviente, manteniente, mantiniente, marcescente, medioambiente, miente, minicomponente, moliciente, monovalente, mordente, mordiente, moviente, munificente, naciente, negligente, nepente, nesciente, nocente, nutriente, obediente, obsecuente, obsolescente, obstruyente, occidente, ocurrente, oferente, oliente, omnipotente, omnipresente, omnisapiente, omnisciente, opalescente, oponente, oriente, oyente, paciente, paradocente, parapente, parturiente, patente, pendiente, pentavalente, percipiente, percuciente, percutiente, perficiente, permanente, persistente, perteneciente, pertinente, pestilente, placiente, plurivalente, poderhabiente, polivalente, ponente, poniente, potente, precedente, predisponente, preeminente, preexistente, preferente, prefulgente, premoriente, prepotente, presciente, presente, prevaleciente, prevalente, previdente, procedente, procurrente, proficiente, prominente, promitente, propelente, proponente, providente, prudente, pubescente, pudiente, puente, pungente, putrescente, quiescente, radiofuente, radioluminiscente, radioyente, rayente, reciente, recipiente, reconstituyente, recurrente, redolente, redoliente, referente, refringente, refulgente, reincidente, relente, reluciente, remanente, reminiscente, remitente, renitente, renuente, repelente, repente, repitente, repitiente, requirente, residente, resiliente, resistente, resolvente, resolviente, resplandeciente, resplendente, restringente, reticente, retrayente, reverente, rigente, rompiente, rubefaciente, rubescente, rusiente, saliente, sapiente, sargente, sedente, sedicente, sediente, semideponente, semiinconsciente, semitransparente, semoviente, sempervirente, senescente, serpiente, siguiente, silente, simiente, sismorresistente, sobrediente, sobreviviente, solvente, sonriente, sorprendente, subafluente, subconsciente, subcontinente, subiente, subintendente, subsecuente, subseyente, subsiguiente, subsistente, subteniente, subyacente, suficiente, sugerente, supereminente, superviviente, suplente, suprayacente, talente, tangente, tarjetahabiente, televidente, tendiente, termorresistente, terrateniente, tetravalente, tomacorriente, torrente, totipotente, transferente, transigente, transmitente, transparente, trasluciente, trente, tridente, triente, trivalente, tumescente, tundente, turgente, unidocente, urente, urgente, -valente, valiente, vanilocuente, vertiente, vicegerente, Vicente, vidente, vigente, viniente, viripotente, viviente, yacente, yaciente, yente

Respuestas o preguntas

Mi smartphone me pregunta si quiero respuestas antes de preguntar. Demasiado smart, pero me conoce poco: me apasionan las preguntas y no demasiado las respuestas.

Por supuesto, lo que ha hecho para ofrecerme ese «servicio» ha sido formular una pregunta ¿Quieres respuestas antes de que preguntes?, lo que no deja de resultar parcialmente paradójico e incluso contradictorio: ¿Por qué no ha respondido por mí y me ha dicho, así, directamente: ¡Quieres respuestas antes de preguntar!?

¿En qué momento nos sugerirá vivir por nosotros?

Ayer hice mi primer PING a IPv6

Parece mentira pero a estas alturas, después de décadas viviendo el desplegar del mundo IP aún me siento un inútil integral de cuando en cuando, un newbe de lo peorcito.

Ayer parece ser que actualizó mi router al protocolo IPv6 y el programa que tenía para acceder remotamente ya no me sirve y me tocará volver a programarlo. Curiosamente o por desgracia, ha sido justo cuando estuve a punto de programar un script que sincronizara carpetas del PC de casa, tras el nuevo router-IPv6 con el PC de mi estudio con un estupendo IPv4 (aunque también asigna direcciones IPv6).

Para hacer una mierdecilla de prueba, he hecho PING a mi propia interfaz y resulta que hay que especificarla. Bufff… cada día es más complejo. Buscando acá y allá encontré cómo hacerlo, pero la verdad es que menos mal que adquirí un plan Mega para solucionar mi ubicuidad, porque si lo hubiese hecho de otra forma, ahora no funcionaría.

wlx98ded0071b50 Link encap:Ethernet direcciónHW 98:de:d0:07:1b:50
Direc. inet:192.168.1.36 Difus.:192.168.1.255 Másc:255.255.255.0
Dirección inet6: fe80::c52d:5b6e:2f9d:c2d7/64 Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX:5271 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:7171 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:623168 (623.1 KB) TX bytes:873532 (873.5 KB)

giusseppe@estudioclave53 ~ $ ping6 fe80::c52d:5b6e:2f9d:c2d7%wlx98ded0071b50
PING fe80::c52d:5b6e:2f9d:c2d7%wlx98ded0071b50(fe80::c52d:5b6e:2f9d:c2d7) 56 data bytes
64 bytes from fe80::c52d:5b6e:2f9d:c2d7: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from fe80::c52d:5b6e:2f9d:c2d7: icmp_seq=2 ttl=64 time=0.029 ms
64 bytes from fe80::c52d:5b6e:2f9d:c2d7: icmp_seq=3 ttl=64 time=0.050 ms
64 bytes from fe80::c52d:5b6e:2f9d:c2d7: icmp_seq=4 ttl=64 time=0.043 ms
^C
--- fe80::c52d:5b6e:2f9d:c2d7%wlx98ded0071b50 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.025/0.036/0.050/0.012 ms

Una foto «estilizada» que ha decidido regalarme Google

A partir de las fotografías de nuestras vacaciones AsturGalaicas subidas a un álbum de Google (lo que antes fueron los de Picasa), resulta que Google ha tenido a bien proponerme esta pequeña edición automática (no creo que haya una persona detrás de cada foto que cada humano sube a la famosa plataforma) de una imagen más bien anodina. Y oye, reconozco que queda mejor en blanco y negro.

Y aquí se puede ver el original del que procede:

https://photos.app.goo.gl/Y0j6alFiCXSD6bgd2

Una curiosa aplicación para viajar en el FEVE

Hemos estado realizando un viaje de vacaciones en el maravilloso e inolvidable FEVE (Ferrocarril Español de Vía Estrecha) desde Gijón a Ferrol, haciendo una serie de paradas en diversos pueblos de la costa occidental asturiana y en las Rías Altas gallegas, en concreto, en O’Barqueiro, pueblo más oriental de la provincia de Coruña.

Durante ese recorrido, nos ha sido muy útil la sencilla app creada para el FEVE que nos ofrecía los recorridos, los horarios, las próximas llegadas a una estación determinada. En resumen, pocas cosas, pero las suficientes para lo que requeríamos.

Por lo demás, esta forma de viaje, pausada, lenta, ineficaz, es más que probable que termine sus días más pronto que tarde, pues resulta demasiado costosa de mantener cuando el uso del vehículo privado (coche) está tan extendido, además de haber una red importante paralela de autobuses, sobre todo en torno a Luarca (fue ahí donde descubrí el significado de ALSA: Autobuses de LUARCA Sociedad Anónima).

La autopista A8 paralela al litoral cantábrico ha reducido sustancialmente los tiempos de desplazamiento entre las provincias nórdicas, haciendo del FEVE un medio de transporte destinado, en el mejor de los casos, a turistas sin prisas, de los que cada vez hay menos en esta vorágine de viajes plusmarquistas.

Hasta Pravia (desde Gijón/Oviedo) el tráfico de trenes es fluido y hace las veces de tren de cercanías en torno al triángulo urbano asturiano (Gijón-Avilés-Oviedo) conectando muy cómodamente la zona central del principado, sin embargo, a partir de Cudillero, especialmente, la frecuencia de los mismos se reduce hasta el mínimo de 2 trenes diarios, lo que además de la lentitud lo convierte en un medio de transporte poco práctico.

Una vez en Galicia, los trenes aumentan su frecuencia hasta 4 diarios, lo que no es mucho mejor, pero sirve para turistas y algún viajero ocasional carente de coche (si es que queda alguien así).

En nuestro caso, esta aplicación y nuestra enorme disponibilidad nos han sido de enorme ayuda y agradezco a los creadores de la misma su trabajo. ¿Es de RENFE?

Nos gusta andar

Un paseo por Gijón, sin salir de una ruta minúscula, nos llevó unas dos horas y ni más ni menos que una decena de kilómetros.

¿Cuántos kilómetros se pueden hacer en una celda de 3×4?

Qué curiosa locura esta del dejar que la tecnología nos dé tanta información al dar tanta información de manera completamente gratuita a una empresa como G. Inc. que luego sabrá de nosotros más que nosotros mismos.

Esto no es una broma