Método de la celosía

Hoy he aprendido a multiplicar. Por fin.

De la mano del fantástico libro IDEAS, pasando por el origen de la numeración hindú-arábiga, me he encontrado esta joya algorítmica útil para mis clases particulares y para mi insaciable curiosidad.

Ahora, a pensar en una manera de programarla en C, para pasar un divertido rato inútil.

Para multiplicar dos números, digamos, 1934 x 537, se trazan dos líneas perpendiculares que dejen hueco a la derecha y debajo de ellas. A continuación, se escribe horizontalmente el primero sobre la línea horizontal y verticalmente el segundo a la derecha de la línea vertical.

Completamos una cuadrícula con los 4 x 3 resultantes cuadraditos, los que dividiremos por la diagonal que une el ángulo inferior izquierdo con el ángulo superior derecho.

Rellenamos los triángulos que se han obtenido con la multiplicación expresada en dos dígitos de los números de cada fila y columna, así, por ejemplo, 1 x 5 = 0/5, 9 x 5 = 4/5, etc.

Una vez terminado este proceso, comenzamos con las sumas con las que obtendremos el resultado deseado.

Sumamos en dirección diagonal comenzando por el triángulo inferior derecho. Continuamos la siguiente suma diagonal teniendo en cuenta que si en la anterior superamos el 9, la cifra correspondiente a las decenas se añade a las que han de ser sumadas en la siguiente diagonal.

Finalmente, obtendremos el resultado deseado.

Cómo aprovechar un router livebox

En realidad, podría ser casi cualquier tipo de router, pero lo he hecho con un router LiveBox de los que «regala» Orange cuando te das de alta con esta compañía.

Es interesante lo que se puede hacer con estos pequeños chismes que van abundando en las viviendas a medida que cambiamos de tecnologías. En nuestro caso concreto, nos han cambiado un livebox por otro a consecuencia de un cambio de ADSL a Fibra óptica.

He querido probar si podía usarlo como servidor de ficheros de la red interna, sin tener que estar en la expuesta internet, como el caso del router principal. Una vez configurado así, puede ser usado como servidor NAS/FTP externo, configurando las debidas reglas NAT en el router principal.

Para no fastidiar nada (tenía una compañera que decía cuando teníamos que hacer modificaciones en los servidores que «las pruebas con gaseosa«), lo primero es encender el router que queremos convertir a otra cosa completamente desconectado de redes ethernet y, de paso, también desconectar con el botón lateral el wifi.

Conectar un PC por ethernet sin conexión wifi (para no confundirnos) al router viejuno. Entrar en la configuración con el navegador preferido: http://IP_DEL_ROUTER_VIEJO (192.168.1.1)

Ir a Configuración-Básica-LAN: Renombrarlo. En mi caso, a partir de ahora se llama liveboxold. Es importante para que, si decidimos volver a colocarlo en la red del router principal no se choquen los nombres. (Habrá que desactivar el DHCP, pero no hacerlo ahora o perderemos conexión desde el PC). Cambiar la IP del LiveBoxOld a 192.168.1.129 (cualquiera en el rango de las IPs de la red principal, pero que no esté ocupada).

Ir a Configuración-Básica-WiFi: Desactivar (si no lo estaba) la función WiFi.

Ir a Avanzado y desactivar: Firewall, NAT, Control Parental, UPnP y DLNA. (He deshabilitado incluso Telefonía/Servicio de Voz).

En este momento, ya sí, deshabilitamos el DHCP para que no asigne IPs.

Ahora se puede, sin miedo, conectar al router principal con un cable cruzado, pero ha de hacerse con un cable cruzado si queremos usar, posteriormente, los puertos ethernet del liveboxold (router antiguo) para expandir nuestra red ethernet.

A partir de ahí, está disponible en la red principal, puede servir ficheros (de hecho el modelo «obsoleto» que tengo tiene 2 puertos USB lo que lo hace especialmente «servicial») o convertirse en un servidor de impresión.

Por supuesto, si se ha tenido el cuidado de usar un cable cruzado en la conexión con el router principal, todos los puertos ethernet del liveboxold pasan a estar completamente disponibles y cualquier equipo conectado a ellos los usará como si de un HUB se tratasen para coger la IP del DHCP del router principal y las rutas, etc, así que tendrán internet como si estuviesen directamente conectados.

liveboxold

17

Hoy hace 17 años que a las 21:00 de la tarde Carmen y yo habíamos quedado para ver si lo que había entre nosotros era algo más de la amistad que ya sabíamos que había.

Y claro que lo había: de no ser así, no lo habríamos convertido en una quedada para aclararlo. Estaba claro que queríamos que fuese así. Y fue tan fácil, tan rematadamente fácil, que hoy me maravillo de que se haya pasado este tiempo como si nada, como si 17 años no es nada, que febril la mirada…

Y dado que el 16 fue una cifra curiosa, potencia de 2, potencia de 2, (sí, 2 veces 2 potenciado a 2), y base de un sistema numérico altamente usado, no podía hacer lo mismo para el 17, primo, primísimo.

Pero un primo sirve para descartar primos, como bien sabía Eratóstenes, así que puedo descartar unos cuantos con un sencillo script para la ocasión:


#!/bin/bash
# Escribe todos los múltiplos de un número dado (17, por ejemplo)
# hasta una cantidad dada (17, por ejemplo)

numero=17;
cantidad=17;

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

Una salida de este código sería:

17 x 1 = 17
17 x 2 = 34
17 x 3 = 51
17 x 4 = 68
17 x 5 = 85
17 x 6 = 102
17 x 7 = 119
17 x 8 = 136
17 x 9 = 153
17 x 10 = 170
17 x 11 = 187
17 x 12 = 204
17 x 13 = 221
17 x 14 = 238
17 x 15 = 255
17 x 16 = 272
17 x 17 = 289

¡¡¡Así que a por los 102!!!

Trabajo que no se ve

Esto forma parte del trabajo de un poeta y una bailarina de tango… ¿o no?

Toda profesión tiene sus pros y sus contras. No lo duda nadie, ya que, entre otras cosas, es un tópico.

Llevo toda la semana pegándome con código fuente HTMl y aprendiendo nuevas cosas sobre «webs responsive», para terminar de hacer pública la web de Clave 53.

Y quedan por arreglar pequeñeces (o no tanto) como la política de cookies que no resulta nada sencilla de implementar ni, mucho menos, satisfacer legalmente de manera estricta.

un día de trabajo

Y yo me preocupo

Cada vez que tengo que renovar una web de las que mantengo, con sumo cariño, me encuentro nervioso por si no va a funcionar en todos los dispositivos o si tiene enlaces rotos, o si alguna imagen tarda más de lo debido en cargarse por ser más grande de lo necesario o si el número de llamadas a archivos de hojas de estilo es excesivo o si el navegador tendrá o no activado javascript, si la versión de javascript será la misma con la que estoy programando, si el usuario o cliente aceptará cookies o no…

Y ya ni hablar si creo un formulario en PHP o un cgi en perl… y no funciona.

Pero luego está La Aisa: La peor compañía de autobuses que he conocido nunca, y cuya desafección para con los clientes es su seña de identidad. Ahora, también vía web, para no dejar la más mínima duda de que «se la sudan» los potenciales clientes que tengan por esta otra vía. Pero claro, es la única licenciada para cubrir la ruta Madrid-Ciudad Real, pasando por Daimiel (he ahí por lo que me afecta).

Al intentar comprar un billete de sus escasos horarios, el resultado ha sido el que ya debería haber previsto: Fatal Error!!!

aisa

Profesiones: App Almacenista

Iba en el metro.

Miré la ventanilla de enfrente.

Un cartel publicitario anunciaba que no tenías por qué preocuparte si te quedabas sin espacio para adquirir nuevas cosas aunque fuesen innecesarias (esto último no lo apuntaba), porque siempre podías aumentar tu espacio para guardarlas (puesto que son innecesarias habitualmente) en unos trasteros que la empresa bluespace ofrece.

Esa misma mañana había estado leyendo sobre uber, esa otra empresa o app-empresa que permite contactar a particulares que llevan a cabo un servicio de transporte con particulares que desean contratar ese servicio. Obviamente es polémico por la desregularización del servicio que supone, puesto que el equivalente ofrecido por los taxistas requieren una alta exigencia burocrática (que no voy a entrar a valorar).

Uniendo ambas, se me ocurrió la idea de realizar una app-empresa que hiciese lo que hace uber pero aplicada al mundo del almacenaje.

Luego, según se me ocurrió, pensé que sería rentable… y me dio una pereza enorme ponerme a trabajar en ello. Pero ahí lo dejo, por si alguien tiene ganas de patentarlo, estudiarlo, desarrollarlo, comercializarlo… ¡bufff! todas estas palabras me aburren tanto…

Pensando un poco más… una nube distribuida (almacenamiento en internet mediante el uso de diversos ordenadores-dispositivos/servidores) también sería una buena idea de negocio, pero debería estar basada en la premisa de buena conexión bidireccional de banda ancha.

Como está de moda poner nombres en inglés a las app, tengo propuestas para ambas app/empresas:

  • ourWarehouse
  • i-ourWarehouse

Jejejeje… ¡Hay que ver qué cosas! Cualquier día, estas propuestas, si no lo han hecho ya, verán la luz. Y yo seguiré sin ser rico.

¿Para cuándo volveremos a tener un Windows 95?

evolucion-bueno-malo

Pasé por usar windows 3
(3.0)
a usar un windows 3.1 que sin punto sería un 31
que en aquella época era un mero gestor de ventanas
sin pretensiones de sistema operativo.

Usé el célebre windows 95 que llegó aproximadamente
al mercado
alrededor del 1995
y que tenía pretensiones que no cumplieron
de ser un verdadero sistema operativo
porque no acababa de ser operativo.

Pasé por usar windows NT
que posiblemente se habría llamado 3.5 (e internamente 4.0)
y llegué a ser de los primeros seres humanos
en convencer a unos servicios informáticos de una entidad financiera
para instalar un servidor de internet en un equipo
con estas características.

NT era bonito. Habría podido ser windows 40.

Luego llegó y usé windows 98
pero nunca con propósitos profesionales
porque de nuevo fracasaba como algo operativo
y hube de esperar a la llegada del windows 2000
en el año 2000
siendo verdaderamente un windows 5.0 o 50
para volver a confiar mínimamente en la posibilidad de tener un sistema
operativo
que fuese digno de ser tomado por tal
pero su soporte para dispositivos era
cuando menos
molesto
como de un linux.

Había pasado ignorando
felizmente
un sistema en el que tan sólo se había cambiado el nombre
para ocultar números: windows Me
y que para lo único que sirvió es para hacer de antesala
a la llegada de un buen y robusto sistema
(por primera vez)
llamado windows XP
que aunaba la profesionalidad del 2000
con la pretendida orientación al usuario particular del 98-Me.

XP fue tan interesante que aún lo mantengo
en máquinas virtuales que viven en una reliquia temporal
de hace tres lustrosos lustros
además de silenciar los lanzamientos
para diferentes plataformas
que comenzaron a emerger de las tinieblas
e incluso eclipsaron
la venida al planeta de un desconocido windows 2003
que quería anunciar que también gates había cruzado el gate
hacia el nuevo milenio.

Todos ellos eran hijos ilegítimos
de un agonizante windows NT 4.0
que había generado 5.0, 6.0
que sin puntos serían 50 y sesenta.
llegando a un virulento
windows vista
que no tuvo mucha vista
cuya intención
como lo había sido en los tiempos del XP
era la de mezclar las bondades del XP
con las bondades del 2003
pero ambas bondades
como en un «menos por menos es más»
se convirtieron en un «más por más es menos… y peor»
hasta desatar una oleada de críticas justificadas.

Usé windows vista porque venía impuesto
en los ordenadores que ya por entonces
habían blindado la garantía al software
haciéndonos creer que lo más importante del aparatejo
era lo que no estábamos comprando.

Mi camino hacia linux era ya imparable.

No usé por ser orientado al ámbito empresarial
el windows 2008 que salió al mercado
como su propio nombre indica.

Después del 2008 llegó el 7
windows 7
que retomaba la calidad de la mejor versión
disponible
introduciendo, para ello,
pocos o ningún cambio relevante
salvo el número.

Era windows 7 o 7.0 o 70
basado en NT 6.0.

Aún lo tengo en varios ordenadores
como alternativa a varias distribuciones
como mint o ubuntu
pero su elevado consumo de recursos
injustificadamente
me desalientan de usarlo
amén de su siempre creciente
lista de vulnerabilidades.

Después
inventaron el UEFI
para reventar las narices a los que queríamos
comprar clavos cuando
compramos clavos.

He conocido el windows 8.0 que
sin punto
sería 80
y que no nació en los 80
como el 95 había nacido en el 95.

Buscaban una interfaz diferente
con un cambio de filosofía
para intentar subsistir
en un mundo móvil y googleado
androitizado
en el 2012.

Sus windows phone
7.5
eran barridas del hardware
como antes w
había barrido a sus competidores.

Compraron Nokia para sobrevivir.

El windows 8 duró lo que duró vista
y llegó una pretendida revisión
llamada windows 8.1
que en realidad era un sistema nuevo
y que necesita un tanque para salir de casa.

Pero eso sí:
es mono.

Y cuando parecía que todo habría acabado
llegó windows 10 porque saben que no pueden parar
de producir versiones
después de haber ignorado la
que habría sido 9
por precipitación
o porque no les gustó el número.

Volvemos a estar en dos dígitos
sin necesidad de eliminar el punto
y acercándose a la fecha del lanzamiento
así que quizá al año que viene
caiga en el imaginario
el windows 17
hasta que año a año
nos acerquemos
peligrosamente
al windows 95
y volvamos a empezar.

Tengo pendiente hacer un backup de mi diario

El pasado martes tuve un pequeño infarto cuando me encontré con que no podía publicar nada en este diario, ni siquiera podía acceder a él para leerlo.

Cada cierto tiempo hago exportaciones de las entradas del mismo en un formato XML que se supone que almacena lo necesario, pero cuando intento subir ese archivo a un blog de wordpress me encuentro con que no funciona como era de esperar (como yo esperaba, en cualquier caso).

Por supuesto, también descargué, porque eso sí se podía, todo el directorio (que está en /blog de mi servidor) pero sé que sin la base de datos, tampoco es propiamente un blog, sino un montón de archivos más o menos estáticamente enlazados, que, por supuesto, no permiten su gestión habitual.

Así que estoy temblando ante el hecho de no haber realizado el backup que debe ser hecho, mediante exportación de la base de datos, ya sea con algún plugin o ya sea mediante comandos directos de SQL, junto a la exportación de las entradas. Después, para comprobar que está bien salvaguardado, tendré que hacer una instalación en un servidor dedicado a ello (por ejemplo el de mi teléfono móvil) y así quedarme razonablemente tranquilo.

laconsulta.giusseppe.net

laconsulta

Por fin he terminado (quedará algún fleco) el diseño y/o programación de la web del proyecto La Consulta: Caso 30.

He logrado que sea visible en todo tipo de dispositivos optimizando su visionado en todos ellos, así como en medios paginables (impresoras), haciendo incluso posible su impresión página a página sin separación de párrafos o bloques de preguntas y respuestas.

El color elegido para el menú superior de la versión móvil (para pantallas de menos de 750 píxeles) ha sido casual y no causal, dado que lo encontré en un ejemplo y me gustó. Lo mantuve porque creo que los móviles tienen cierta necesidad de color que, sin embargo, en las pantallas de ordenador resulta saturante.

En lugar de la utilización de una imagen para el famoso icono «hamburguesa«, preferí utilizar una letra griega (Xi) en mayúsculas, muy en consonancia con el resto del proyecto: Ξ.

Otro tema que me tuvo muy perturbado era el de usar un diseño que el posicionamiento de Google no viese mal (maldito SEO), lo que conllevaba dejar de utilizar, entre otras cosas, mis amados frames y framesets, óptimos para menús y pies de página o para ventanas laterales fijas, pero que dado el desarrollo del posicionamiento en pantalla mediante CSS parecen obsoletos, casi como yo.

Así que prescindí de ellos, pero había algo que no me gustaba de esta nueva forma y era el tener que repetir «código» HTML en cada uno de los ficheros o páginas estáticas de las que está compuesta la web en cuestión.

No quería pasar por la utilización de JavaScript (por dar soporte a los usuarios más paranoicos posibles) y barajé la opción de usar PHP o, incluso, algún tipo de aplicación en el servidor, pero me parecía realmente matar moscas a cañonazos. Terminé optando por una solución de compromiso que, no obstante, me resulta interesante:

<!-- Menú superior -->	
<noscript>
  <iframe id="cabecera" src="topmenu.html"></iframe>
</noscript>
<script type="text/javascript">
  creaheader(); // Crea menú - top (logo-header y nav)
</script>

Naturalmente, la sección correspondiente al footer, está resuelta de la misma manera.

La función creaheader() está definida en un archivo llamado laconsulta.js en el siguiente fragmento:

// Funciones para crear menú navegador de la página web

// Función que crea un menú de cabecera
function creanav() {
  var text= '<nav>' +
    '<ul>' +
      '<li class="submenu"><a href="genesis.html">Génesis</a>' +
      '<ul class="children">' +
        '<li><a href="genesis.html">a</a></li>' +
        '<li><a href="laconsulta.html">b</a></li>' +
        '<li><a href="origen.html">c</a></li>' +
      '</ul></li>' +
      '<li class="submenu"><a href="exodo.html">Éxodo</a>' +
      '<ul class="children">' +
        '<li><a href="exodo.html">x</a></li>' +
        '<li><a href="exodoexit.html">&omega;</a></li>' +
      '</ul></li>' +
      '<li class="submenu"><a href="levitico.html">Levítico</a>' +
      '<ul class="children">' +
        '<li><a href="levitico.html">&alpha;</a></li>' +
        '<li><a href="leviticodetalle.html">&beta;</a></li>' +
        '<li><a href="leviticopeaton.html">&gamma;</a></li>' +
        '<li><a href="leviticoinversion.html">&delta;</a></li>' +
      '</ul></li>' +
      '<li class="submenu"><a href="numeros.html">Números</a>' +
	'<ul class="children">' +
        '<li><a href="numeros.html">1</a></li>' +
        '<li><a href="numerosh.html">e</a></li>' +
        '<li><a href="numeroslibro.html">&pi;</a></li>' +
        '<li><a href="numerosapp.html">i</a></li>' +
      '</ul></li>' +
      '<li class="submenu"><a href="deuteronomio.html">Deuteronomio</a>' +
      '<ul class="children">' +
        '<li><a href="deuteronomio.html">&#1488;</a></li>' +
        '<li><a href="garbanzosfoto.html">&#1489;</a></li>' +
        '<li><a href="garbanzosvideo.html">&#1490;</a></li>' +
        '<li><a href="garbanzospresupuesto.html">&#1491;</a></li>' +
      '</ul></li>' +
      '</ul>' +
    '</nav>';
  document.write(text);
}

// Función que crea un logo-header lateral superior
function crealogoheader() {
  var text='<a id="logo-header" href="index.html">' +
	'<span class="site-name">La Consulta Caso 30</span>' +
	'<span class="site-desc">Giusseppe Domínguez</span>' +
  '</a> ';
  document.write(text);
}
// Función que crea un menú superior para móviles
function creamenubar() {
  var text='<div class="menu_bar">' +
	'<a href="#" class="bt-menu"><span>&Xi;</span>La Consulta Caso 30</a>' +
  '</div>';
  document.write(text);
}
// Función que crea el header superior (menú top)
function creaheader() {
  document.write('<header>');
  crealogoheader();
  creamenubar();
  creanav();
  document.write('</header>');
}

Y ya que estoy emocionándome con esto de mostrar códigos, mostraré también el que uso para organizar los diferentes bloques de reglas de estilo CSS3, un genérico consulta.css que incluye cuando procede los distintos archivos css (para pantallas de PC, para móviles, para impresoras):

/************************************************
Archivo consulta.css para aplicar estilos de manera particular
en los distintos medios de la web http://laconsulta.giusseppe.net
************************************************/
@viewport {
    zoom: 1.0;
    width: device-width;
}
@import url("consultamovil.css") only screen and (max-width: 750px);
@import url("consultascr.css") only screen and (min-width: 750px);
@import url("consultaprint.css") only print;

Estoy especialmente orgulloso de haber sido tan detallista como para que la impresión de algo tan complejo como esos «acordeones» de preguntas y respuestas pueda ser realizada sin la ruptura de los bloques en páginas separadas, mediante la inclusión en el fichero acordeon.css de las siguientes líneas que evitan esa medida que habría ocurrido de manera automática:

@media print {
  .acordeon input { display: none; }
  .acordeon label {
    display: block;
    color: white;
    background: #666;
  }
  .pregunta-respuesta {
    page-break-inside: avoid;
  }
}

Ahora sé que será una web poco visitada y que la obsesión por el posicionamiento SEO es absurda y ni hablar de las manías que vengo habiendo demostrado y mostrado durante este desarrollo, pero he aprendido bastante en el proceso y alguna de esas cosas será reutilizada en un futuro no muy lejano cuando tenga que remodelar la web de la Asociación Cultural Clave 53.

Hoy me cambié el procesador

Resulta que mi DNI incluye un 386 entre sus dígitos, cifra que me sirve para recordarlo pues es uno de los procesadores de uno de los innumerables ordenadores que he tenido a lo largo de mi vida.

Hoy, al intentar acceder a los servicios telemáticos de uno de los bancos en cuyos servidores consta la información sobre la cantidad de dinero que se supone que tengo (la propiedad de algo tan abstracto es sumamente difusa), fallé en la autenticación o proceso por el cual informo de algo que se supone que sólo yo sé para proceder a garantizarme el acceso a sus servicios: Introduje repetidamente un 286 donde debía ir el 386.

Ese sí que había sido mi primer PC, técnicamente hablando, pues anteriormente sólo había contado con «chismes» del tipo spectrum (con y sin plus(+)).

Había adquirido (mis padres lo hicieron posible (gracias)) un Intel 802861 (llamado oficialmente iAPX 286, también conocido como i286 o 286) que era un microprocesador de 16 bits de la familia x86, que puse a trabajar desde el primer día para realizar cálculos de mecánica cuántica.

Anteriormente, en las aulas de informática de uno de los módulos de la facultad de ciencias de la UAM había utilizado los obsoletos 8086 y 8088, amén de mis amados UNIX en arquitectura RISC, siendo ya entonces multitarea y multiusuario de manera nativa.

IMG_4936

Al 4004 lo sucedieron el 8008 en 1972 y en 1974 el 8080, cada vez logrando mayor capacidad. En 1978, Intel comenzó a comercializar el procesador 8086, un ambicioso chip de 16 bits potencialmente capaz de ser el corazón de computadoras de propósito múltiple. El 8086 se comercializó en versiones desde 4,77 y hasta 10 MHz.

IBM adoptó al hermano menor del 8086 (el 8088, un procesador con un bus de datos interno de 16 bits, pero con el bus externo de 8 bits, lo que permitía aprovechar diseños y circuitos para sistemas de 8 bits) para basarse en él y lanzar la línea de computadoras más exitosa de la historia: el IBM PC (1981) y el IBM XT (eXtended Technology) (1983)

[Extraído de Wikipedia sobre x86]

Aquellos no contenían disco duro propio en los ordenadores disponibles y había de ir dependiendo de un MS-DOS (o IBM-DOS o DR-DOS…) que se insertaba, con suerte, en una de las dos disqueteras de cinco pulgadas y cuarto.

Por supuesto, nos olvidábamos felizmente de que en otros ordenadores había entornos gráficos amigables (X) que hacían más sencilla su utilización.

De ahí a hoy no hay más que una evolución divertida, en la que el RISC ha pasado a formar parte del ARM (esa R) y estos a ser la base de los dispositivos móviles más utilizados, entre otras cosas.

Pero esto ya es otra historia y aquella parece estar siendo contada en la preciosa serie de Halt and Catch Fire.

news-140506-halt-and-catch-fire_full

Esto no es una broma