Búsqueda de palabras en la RAE en línea de comandos

He fabricado un script (un lote de comandos) de bash shell en Linux para descargar y juguetear con búsquedas en la RAE, ya que resulta complicado pedir que tengan la deferencia de hacerla disponible para el público, como si la RAE fuese un organismo público pagado con dinero público.

Es el paso intermedio entre buscar una palabra y descargarme el diccionario completo palabra a palabra. Ahora toca hacer un pequeño programita que lo invoque para cada una de las palabras que tecleé para el proyecto de Isidoro Valcárcel Medina hace unos años y traiga sus definiciones.

Lo he llamado buscaenrae.sh.

Esta versión está modificada sobre la que publiqué hace unos días para subsanar errores relacionados con las palabras que contienen varias entradas/acepciones (no es lo mismo acepciones que entradas y soy consciente de ello, pero no es importante), así como para retirar las conjugaciones en los verbos.

#!/bin/bash

### FUNCIONES ÚTILES PARA EL PROGRAMA
# uso() Instrucciones del programa y salida en caso de error.
uso () {
  echo "Uso: $0 salida palabra"
  echo -e "\tsalida es un valor númerico que identifica:"
	echo -e "\t[0] para generar un archivo HTML con la respuesta"
	echo -e "\t[1] para generar un archivo TXT  con la respuesta"
	echo -e "\t[2] para generar una línea  TXT  con la respuesta"
  exit
}
f_verbos="00000_VERBOS.txt"
f_errores="00000_ERRORES.txt"

# CONTROL DE ENTRADA DE VARIABLES y ASIGNACIÓN
if [ $# -lt 2 ]
then
  # Reportar uso inapropiado
  uso
else
  salida=$1
  if [ $# -eq 2 ]; then
    palabra="$2"
  elif [ $# -eq 3 ]; then 
    palabra="$2 $3"
  elif [ $# -eq 4 ]; then 
    palabra="$2 $3 $4"
  elif [ $# -eq 5 ]; then 
    palabra="$2 $3 $4 $5"
  fi
  # echo "Palabra es #$palabra#"
fi

# CONSULTA DEL SERVIDOR de la RAE simulando ser uno de los diversos navegadores posibles
navegador=(
  "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
  "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:77.0) Gecko/20100101 Firefox/77.0"
  "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
)
rnd=`echo $(($RANDOM%${#navegador[@]}))` # Elegimos un navegador al azar
# Hacemos la petición a la web de la RAE
curl -s --user-agent "${navegador[$rnd]}" https://dle.rae.es/"$palabra" > ./"$palabra.html"

# PROCESAMOS EL ARCHIVO OBTENIDO (Cortamos, retiramos lo innecesario, etc)
# Si se trata de un verbo, quitar las conjugaciones
id_conjugacion="
" esunverbo=`grep -c "$id_conjugacion" ./"$palabra.html"` if [ $esunverbo -gt 0 ] then echo "$palabra es un verbo" >> $f_verbos # ELIMINAMOS la(s) CONJUGACIÓN(ES) sed -i "/${id_conjugacion}/d" ./"$palabra.html" fi # Si tiene más de una acepción (Calcular cuántas después de saber si es un verbo) id_acepcion="
" num_acepciones=`grep -c "$id_acepcion" ./"$palabra.html"` # Si no tiene acepciones, la palabra no existe. No continuamos. if [ $num_acepciones -eq 0 ] then echo "$palabra no se ha encontrado en la RAE" >> $f_errores rm "./$palabra.html" exit fi # PARTIR en $num_acepciones EL FICHERO $palabra.html" # acepciones y acepciones_fin son 2 arrays de líneas PRECISO CONVERTIRLOS a cortes[] acepciones=`grep -n "$id_acepcion" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones do let cortes[$c]=$(($i)) let c=$(($c+1)) done acepciones_fin=`grep -n "$id_acepcion_fin" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones_fin do let cortes_fin[$c]=$(($i)) let c=$(($c+1)) done # GENERA FICHEROS palabra.X.html por cada ACEPCIÓN for (( i=0; i<$num_acepciones; i++ )) do # echo "El comienzo del corte está en ${cortes[$((i))]}" # echo "El fin del corte está en ${cortes_fin[$((i))]}" sed "${cortes[$((i))]},${cortes_fin[$((i))]} !d" "./$palabra.html" > "./$palabra.$i.html" # Distintas salidas del programa, en función de la variable "salida" if [ $salida -gt 0 ] # Salida a modo TXT then w3m "./$palabra.$i.html" > "./$palabra.$i.txt" if [ $salida -gt 1 ] # En una sóla línea then sed ':a;N;$!ba;s/\n/ /g' "./$palabra.$i.txt"|sed 's/ / /g' > "./$palabra.$i.1linea" fi fi done # BORRAR indica si dejar o no los archivos que no se deseen como salida BORRAR=1 if [[ $BORRAR -eq 1 ]] && [[ $salida -gt 0 ]] then rm "./$palabra."*html if [ $salida -eq 2 ] then rm "./$palabra."*txt fi fi # SALIDA FORZADA exit

Las primeras pruebas las he realizado con la palabra palabra, como debe ser.

buscaenrae.sh 2 palabra

IDA de OLLA

Que no nos engañen: lo que está pasando en el Madrid de Ayuso no es un desastre impredecible; es que están aprovechando un desastre para erosionar aún más los servicios públicos y conquistar espacios para las privatizaciones sanitaria y educativa. Un shock para «invitar» a los madrileños y madrileñas a que llevemos nuestros hijos a la escuela privada y nos hagamos seguros médicos con la Quirón.

Germán Cano

No me gusta que se menosprecie a políticos sean del signo que sea, porque, además de parecerme una pérdida de tiempo y una falta de respeto, se pierde el verdadero foco del problema: ¿Qué modelo de estado/sociedad queremos?

Nunca me he engañado al respecto de la competencia/incompetencia | bondad/maldad de la dirigente de la Comunidad de Madrid. No veo ahí el problema.

Si embargo, gran parte (la mayoría de los votos) de la gente de la comunidad defiende un modelo neoliberal (aunque luego no les importa intervenir en lo que consideran adecuado para salvar empresas privadas mal gestionadas con dinero público, sin criticar por ello la gestión privada) y conservador (aunque se vistan de un progresismo tecnológico) carente de escrúpulos ni moral que no sea la pautada por el rendimiento económico a corto plazo.

Que esos votos sean apoyados en partidos homófobos, machistas y racistas no es casualidad. Es compartición de ideario. Pensar de otra manera es ingenuo, igual que algo de ideario (poco, pero algo) comparten PSOE con lo que sea que tenga en la fracturada izquierda (MÁS-MADRID/Más-País/Menos-País/Ganemos/PCE/IU/UnidasDesunidasPodemos…)

Donde sí veo un problema es en que no seamos capaces quienes deseamos un modelo de sociedad/estado de resultar atractivos para una población sin insultarla, sin decir que no saben lo que quieren, que son ignorantes, incapaces de elegir la mejor opción política/económica. Porque con esto lo que veo es que no creemos en la capacidad de la democracia para alcanzar una mejora social.

Donde sí veo un problema es en que el modelo que se propone desde una «alternativa» socialdemócrata (ya no desde un comunismo algo trasnochado en sus discursos) no resulte atractivo, no sea capaz de convencer de sus bondades sociales y también económicas, aunque sea a largo plazo.

¿Por qué? ¿Por qué no hay autocrítica en los políticos de izquierda? No sobre sus objetivos, que pueden tener más o menos claros y que han de modificar a medida que las circunstancias lo requieran para satisfacer las exigencias de los poderes fácticos del estado en el sistema capitalista en el que estamos inmersos. Pero sí requerirían ser capaces de atraer a un electorado que sigue creyéndose que lo privado es mejor, que los funcionarios viven muy bien, que la gestión pública siempre es corrupta, que los políticos nos engañan…

No. IDA no nos engaña. (Como mucho disimula sus intenciones). Quiere una comunidad en la que toda gestión, toda iniciativa, sea privada, aunque con la debida sumisión de todo lo público si es necesario (Por cierto, ¿para cuando privatizar los bienes de la iglesia católica?). Lo sabemos. Sabemos qué modelo quieren: véase EEUU. ¿Creemos que sería mejor? Yo no, pero conozco mucha gente que sí lo cree. ¿Cómo puedo convencerles? A mí me cansa ya la discusión política. Estoy agotado. Tiro la toalla. Me avergüenza reconocerlo, pero así es.

A partir de ya, pongo un cubo para reciclar y tiro la basura, aumento el consumo, aumento la basura que tiro, pero muy organizado, tiro lo «orgánico» donde hay que tirarlo y ya está. Ya no lucho contra el sistema en este campo. ¡Que vengan nuevas generaciones a luchar por un futuro que puede que no me pille! Vergüenza. Sí. Vergüenza. Pero ni por esa impotencia que siento voy a dedicarme a insultar ni a banalizar el debate.

Potencias

Adoro las potencias del 3. Seguro que ya lo sabes si has leído algo de mi trabajo… sin ir más lejos el que está dedicado completamente a juegos con ello, como es el proyecto !ç~ñ¿.#.

Pero estaba jugueteando con darle una respuesta automática a un amigo sobre cuáles eran las potencias de 3 y no tenía ningún programita que las calculase. ¡¿Habrase visto?!

Así que tenía que hacerlo. Decidí hacerlo a partir de una modificación del 17 amores, que le regalé a Carmen en nuestro decimoséptimo aniversario. Aunque me precipité y lo escribí mal un par de veces (siendo algo trivial) por exceso de confianza. Aquí está la versión definitiva (muy muy mejorable), que me dan ganas de escribir también en Python o en BASIC.

#!/bin/bash
# Escribe todas las potencias de un número dado (3, por ejemplo)
# hasta una cantidad dada (17, por ejemplo)

razon=3;
producto=3;
cantidad=17;

for ((i=1; i<=$cantidad; i++)); do
  producto=$(($producto*$razon));
  echo -e $(($producto/$razon)) " x " $razon " = " $producto
done

Por supuesto, el resultado de esta ejecución es sencillo y casi diría tonto:

3 x 3 = 9
9 x 3 = 27
27 x 3 = 81
81 x 3 = 243
243 x 3 = 729
729 x 3 = 2187
2187 x 3 = 6561
6561 x 3 = 19683
19683 x 3 = 59049
59049 x 3 = 177147
177147 x 3 = 531441
531441 x 3 = 1594323
1594323 x 3 = 4782969
4782969 x 3 = 14348907
14348907 x 3 = 43046721
43046721 x 3 = 129140163
129140163 x 3 = 387420489

Supongamos un niño o una niña adimensional

Supongamos un niño o una niña adimensional (que ocupa menos espacio, obviamente, que su equivalente real) que ha de mantener una distancia de seguridad de radio 1,5 metros.

Eso supondría un área de aproximadamente pi por r al cuadrado cada niño/a. Comparando eso con el área de una clase promedio podemos saber si cabrían 20 alumnos en el espacio destinado para ellos/as (suponiendo ninguna pérdida de espacio entre niños/as, no entre niñas/os y paredes)

π×(1,5)2×20=141,371669411541 m2.

¿Cuál es el área promedio de un aula de instituto público de Madrid?

Dobles negaciones

He perdido otro valioso rato de mi vida leyendo un texto de un médico jubilado que escribía una carta abierta en una red social a algún ministro o cargo sanitario que según él está gestionando muy mal este periodo pandémico o plandémico o como quieran llamarlo. No entro a valorar este tema del que me considero un total ignorante ni quiero perder mi tiempo con estadísticas que no sé contextualizar, ni con informes médicos que no quiero conocer (no tengo el nivel suficiente para comprender).

Pero cuando leo estas frases, pierdo el respeto a quien las firma:

Yo no soy ningún negacionista, al contrario; “Afirmo la falta de evidencias científicas en muchas de las medidas que ustedes llaman sencillas y esenciales”, y niego la existencia de datos irrefutables que las justifiquen”.

He marcado en negritas (o blanquitas) las palabras que me han llamado la atención:

«no soy ningún negacionista»: no puede tener más palabras «negativas». Veamos: «no» y «ningún», ¿Esta doble negación tan característica del idioma español significa en realidad SÍ? En caso de que no sea el caso (jejeje) lo que está diciendo (sin el ningún se entiende mejor) «no soy negacionista».

Y aquí llega lo mejor, «al contrario»: es decir, negando lo anterior…

«afirmo la falta»: lo que vuelve a ser negacionista, aunque use la palabra «afirmo». Afirmar una negación es negar. Menos mal que termina reconociendo que «niega la existencia».

Este señor, aparte de negacionista, es un compendio de malas praxis en la redacción a la búsqueda de ampulosidad que dote a su carta abierta de cierta «credibilidad».

Por supuesto, aparte de negacionista, es casi nihilista… y eso hasta cabría decir que me ha hecho gracia.

Intrusismos diseñando…

Aunque en realidad ni siquiera son actividades intrusistas, pues me he dedicado a copiar una plantilla que Carmen había utilizado para hacer sus carteles promocionales de las temáticas diferenciadoras de sus Clases de Tango Argentino, que luego he incluido en su página web www.carmendelarosa.com

Ella utiliza unas cuantas apps del móvil y suele quedar «resultón», pero si quieres tenerlas juntas las imágenes o usarlas en una web… acaba siendo más fácil hacerlas con herramientas, digamos, serias, como las que utilizo para diseñar las cubiertas de los libros (Inkscape sobre Linux, en resumen).

Inkscape es un programa que tiene todo lo que yo pueda necesitar en los próximos años. Se le supone capacidad (o pretensión) de emular al poderoso Ilustrator, aunque no tiene ese «flow» que tienen los productos Adobe. Es parco, algo simplón y algo inestable… pero cumple sobradamente su función. De momento, no echo nada en falta, pero quizá es que sé demasiado poco.

De momento, me sirvió para hacer en un par de horas los siguientes cartelitos para Carmen de la Rosa y su web, amén de promociones en Instagram, etc…

Racista

No puedo ni empezar.
Si afirmo ser no racista es que no comprendo que el racismo es inevitable.
Si afirmo ser no racista es que aún no me he encontrado en una situación que me lo ponga de manifiesto.
Si afirmo ser no racista es que no sé bien el significado de la palabra racismo.
Si afirmo ser no racista es que he pensado poco o nada en si la palabra raza tiene sentido.
Si afirmo ser no racista es que quiero venderme como impoluto como si pudiera estarlo.
Si afirmo ser no racista…

Por supuesto (sobra decirlo) ponerle peros a no ser racista es ser racista.

La única buena forma de comenzar a cambiar es afirmando ser racista.
Reconocer que vivimos en un mundo que hemos ayudado a construir basado en el racismo.
Reconocer mi parte de responsabilidad en ello.
Reconocer mis limitaciones para cambiarlo.
Reconocer mi suciedad como ser humano… para poder limpiarla.

(Limpiar… tiene tantas connotaciones racistas que prefiero no ahondar en ello)

Haiku Generator

Hoy una amiga (que durante años ha sido una de las más dadaístas asistentes a los talleres de poesía que coordino) ha publicado en una red social, riéndose de ello como corresponde, que hay en internet un generador de haikus.

Es una cosa tan graciosa o tan patética (y no en un buen sentido) como el generador de ideas para blog del que hablé hace no mucho en este mismo blog.

Algo tremendo está pasando cuando alguien quiere recurrir a una máquina para realizar lo más humano posible, que es expresarse.

¿Son las máquinas las que están tratando de decirnos algo? ¿Está la amenaza de Skynet más cerca de cumplirse de lo que nos creemos?

Unos cuantos haikus generados casi aleatoriamente por esta vía:

Evil october.
A tropical, large sun flip
above the dollar

Nippy summertime
A domestic, grand pig soars
before the giraffe

Tearless christmastide
A gray, grand squirrel frightens
because of the net

Cabe preguntarse si a la palabra poesía, a la palabra arte, a la palabra creación, no habría que añadirles (implícitamente) la palabra sujeto humano, pues no es sólo una cuestión de forma, ni de contenido, sino de riesgo, de intención, de fracaso… las máquinas (y quienes deciden usarlas para generar ideas para un blog, para escribir «haikus» o similar) lo que buscan es el éxito, carente de riesgo y con una intención que no es la de explorar sino la de fabricar.

La escritura creativa (creación como actitud ante la vida, no como eslogan), la poesía, es una fábrica de errores, de insensateces, de locura, de interrogantes en última instancia, y no una máquina de exclamaciones, afirmaciones, verdades, corduras ni, nunca, éxito asegurado.

Towi, alias Frankenstein

Parece mentira, pero la obsolescencia programada no parece ser tan certera como afirman quienes dicen que los PC duran 5 años o las impresoras 2.

Towi es el nombre en clave (hostname) de nuestro querido ordenador de torre que usa Carmen todos los días como equipo de trabajo, completamente funcional.

Este fin de semana pasado hemos empezado a dar por perdidos algunos equipos que no dejan de funcionar, a pesar de que las necesidades de este «mundo moderno», de redes sociales, teléfonos inteligentes y esas cosas, nos hagan sentir que las velocidades de los mismos no son admisibles o son indicio de fallo, cuando sencillamente no queremos quedarnos en la fila de los «pobretones» que navegan despacio.

Esta placa de hace ya más de 10 años sigue funcionando sin problemas. Es un Pentium (de antes de la época de la serie i-3,5,7), con un sólo núcleo, con 4Gb de RAM ocupando las dos ranuritas como se ve en la imagen, en sendas tarjetas de 2Gb.

El disco duro que traía montado tenía 640Gb (sigue teniéndolos) y poco a poco se le fueron añadiendo amigos dentro, como un SSD de 120Gb en el que instalar el sistema operativo Linux (UbuntuStudio) que ha permitido seguir funcionando con mayor rapidez de la que sería posible con el Windows 7 preinstalado en el HD convencional. Por si eso fuera poco, un disco duro muy muy viejo (IDE, de hecho PATA) que no tiene las conexiones apropiadas fue adaptado (adoptado), mediante un «chismito» que permite conectar 2 discos IDE y/o uno SATA a una conexión USB. Por supuesto, los discos necesitan alimentación directa, pues el aparatejo tan sólo se limita a transferencia de datos, que no es poco. (También había probado previamente una adaptación mediante otro dispositivo de IDE a SATA, pero no funcionó bien).

Ese disco duro IDE de 3,5″, que se ve «colgando» en la fotografía anterior, estaba en una carcasa interna que dejó de funcionar, tiene 300Gb y le denominamos LACIE que era el nombre de fábrica de ese primer disco externo que compramos, hará más de 15 años.

Para poder usar la conexión USB del adaptador, adquirí por un módico precio una tarjeta PCI que proporcionaba 4 enchufes USB fuera de la caja y uno hacia el interior de la misma, que es el que se ve en la imagen siguiente:

Esta es la caja de la tarjeta en cuesión:

Algo después, adquirimos un par de nuevas tarjetas PCI-E para aumentar el número de puertos USB (en este caso 3.0) tanto por la parte trasera de la torre como por la parte frontal, a medida que Carmen necesitaba más espacio de almacenamiento, pero la verdad es que ha llegado el momento de pasar a otro equipo, pues este pequeño Frankenstein que ha llegado a tener (internamente) su Intel NH-8280-1GB, 4Gb RAM, SSD 120Gb, HDD 640Gb SATA, HDD 300Gb IDE/USB, 4+5 USB 2.0 traseros, 2 USB 2.0 delanteros, 6 USB 3.0 vía PCI-e.

A punto estuve de conectarle un cuarto disco SATA de 500 Gb de un HP Pavillion que me salió muy malo y que ha terminado por romperse a los 12 años de su compra… (quizá no tan malo, después de todo), pero era bastante engorroso seguir haciendo ampliaciones mediocres para un PC saturado.

Ha llegado el momento de comprar un nuevo equipo, que empezará siendo directamente de segunda mano, para poder sumarle el SSD de 120Gb, quizá también el HDD 640Gb SATA y, por supuesto, las tarjetas PCI-e para extender el número de puertos USB 3.0, desnudando a un santo para vestir a otro, pero es que a veces hay que dejar morir a los santos ancianos.

Y no creo que lo haga del todo pues usaré cualquier cosita para poder arrancar el equipo y que siga sirviendo con sus 4Gb de RAM como un veterano de guerra.

¿Obsolescencia programada o consumismo irresponsable?

Esto no es una broma