Google Books

google-books

De cuando en cuando encuentro un fantástico texto en Google Books/Libros y siempre acabo con el mismo problema: una o varias de las páginas que quiero consultar están ocultas porque deciden defender los derechos de autor (por encima del valor que daría defender el acceso total a la cultura).

Entiendo que es un debate complejo pues está claro que el autor en este sistema capitalista (sin entrar ahora en otro debate adjunto o implícito) necesita dinero procedente de su trabajo y la cesión completa de su producción sin retribución asociada individual le resultaría poco estimulante. Yo mismo dedico menos tiempo del razonable a proporcionar información a Wikipedia, por ejemplo, pues no está retribuida y es mucho trabajo. Lo que no es óbice para que todo mi proyecto (el de la organización filogenética de las lenguas del mundo) redactado a partir de materiales encontrados pueda ser consultado (copiado, etc) sin mi consentimiento (o ya lo tiene de antemano cualquier persona que acceda a la URL correspondiente).

Pero hoy me preguntaba si no es también un modelo obsoleto este del pretender que quien consulta Google Books es como quien visita una librería y no como quien visita una biblioteca.

Biblioteca: Del lat. bibliothēca, y este del gr. βιβλιοθήκη bibliothḗkē.
1. f. Institución cuya finalidad consiste en la adquisición, conservación, estudio y exposición de libros y documentos. 2. f. Lugar donde se tiene considerable número de libros ordenados para la lectura. 3. f. Mueble, estantería, etc., donde se colocan libros. 4. f. Conjunto de libros de una biblioteca. 5. f. Obra en que se da cuenta de los escritores de una nación o de un ramo del saber y de las obras que han escrito. La biblioteca de don Nicolás Antonio. 6. f. Colección de libros o tratados análogos o semejantes entre sí, ya por las materias de que tratan, ya por la época y nación o autores a que pertenecen.

¿No debería ser más una biblioteca que una librería?

Librería: 1. f. Tienda donde se venden libros. 2. f. Ejercicio o profesión de librero. 3. f. Mueble con estantes para colocar libros. 4. f. biblioteca (? lugar en que se tienen libros). 5. f. biblioteca (? conjunto de libros). 6. f. Am. papelería (? tienda).

Personalmente, estaría dispuesto a tener «carnet» de esa enorme biblioteca (no de esa librería), incluso a un coste, ya que no se trata de una biblioteca municipal, ni dependiente de ninguna administración, sino privada, fruto del más agresivo neoliberalismo internacional…

¿No podría Google Books tener un modelo más parecido al de Spotify?

Obviamente, no puedo comprarme todos los libros que consulto, así que acabo por buscar la información, en muchas ocasiones de peor calidad, en otras fuentes. Es una pena.

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

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.

Que cada uno recapacite

lactancia o ropa

Recapacitando:

Se trata de defender la lactancia pública (en público) mediante la comparación con la natural lactancia de una vaca. Supongo que no lleva implícita la comparación de una madre con una vaca.

Pero el argumento de lo natural es un argumento vacuo en relación al ser humano, pues no hay humano sin lenguaje, sin constructo social…

Recapacitando, no me sobra, si se ha de mantener el paralelismo naturalista, el acto público de lactancia, pero entonces sí que me sobra la ropa de la mujer y el bebé, así como los tatuajes.

No veo ningún problema y sí muchas ventajas (me encanta verlo) en la lactancia en público, pero no admito el argumento que se pretende dar para defenderla. No es un tema de género, por supuesto, sino de lógica.

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.

Introduce el título aquí

comienza diciéndome el gestor
de contenido de mi diario
que muchos llamarían blog

y le hago caso
y escribo un título que tenga que ver con el texto
de aquello que tecleo
porque rara vez copio y pego
en un rectángulo blanquecino rodeado de infinidad
de estímulos que sirven para indicar
qué tipo de material
discursivo
estoy introduciendo en mi diario
que muchos llamarían blog

algunos rectangulitos superiores a este en el que ahora mismo
estoy escribiendo
contienen unas letras que sirven para indicar
para qué sirven
como si eso fuese suficiente para saberlo
como si este diario
que muchos llamarían blog
debiera tener o contener imágenes
listas
enlaces
letras con distintos efectos tipográficos
o alguna otra cosa que cautive los ojos de un potencial
lector
inapresable
de este diario
que muchos llamarían blog

tras unas 134 palabras y con un borrador guardado a las 11:43:12
considero que la sarta de inutilidades
que tenía que escribir hoy
está cubierta sobre este estúpido diario
que muchos llamarían blog

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.

Reutilizando un móvil viejo

Después del «trauma» de ayer de justificar una adquisición parcialmente innecesaria de un teléfono móvil nuevo, queda el gustillo de saber qué hacer con el anterior, sin desecharlo, utilizándolo para asuntos tan diversos como:

  1. VLC-Remote: Un estupendo mando a distancia para controlar la evolución de la reproducción en la televisión (previamente conectada vía HDMI al ordenador) de alguna película o capítulo serial.
  2. Palapa-Server: Sorprendente herramienta que convierte un smartphone android en un servidor web (php incluido, aunque yo no lo utilizo), así que tan sólo he tenido que copiar los archivos de los servidores web que gestiono (carmendelarosa.com, giusseppe.net y clave53.org) y de este modo, con un equipo casi dedicado, enchufado (el problema principal por el que hube de sustituirlo era la poca duración de la batería) pero con un consumo mucho menor que el de un ordenador, puedo tener un servidor en la red interna que sirva como servidor de desarrollo.
  3. Configurando el router para hacer un poco de «NAT» (traducción de direcciones IP y puertos TCP) y tener un deseado servidor web de pruebas visible en el mundo exterior.
  4. Hace tiempo, realicé un programita que ahora mismo dispongo en esta entrada para que pueda verse mi retorcida forma de pensar, altamente inútil:
    #!/bin/sh
    
    # DEFINICION de VARIABLES
    dirdestinos="/home/giusseppe/cloud/Dropbox/IP
     /home/giusseppe/cloud/Mega/IP"
    ficheroip="/tmp/ficheroip.txt"
    ficheroiphtml="/tmp/ficheroip.html"
    
    # Borramos posibles restos temporales de otras ocasiones
    rm -f /tmp/ficheroip.*
    
    # Crear fichero txt únicamente con la IP
    servidor_curl="icanhazip.com"
    curl -sS $servidor_curl -o $ficheroip
    
    # Crear un index.html con la IP para accesos sencillos:
    MIIP=`cat $ficheroip`
    # Servido ofrecido por PCTACENS
    PUERTOSSH=5622
    PUERTOFTP=5621
    PUERTOHTTP=5680
    # Servido ofrecido por MOVIL
    PUERTOFTP2=8021
    PUERTOHTTP2=8080
    
    cat > $ficheroiphtml << EOF
    <!DOCTYPE html>
    <html lang="es">
    <head>
    	<meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="description" content="Aplicaciones Inútiles, Giusseppe Domínguez">
      <meta name="keywords" content="aplicaciones,Giusseppe Domínguez,inútil,http,internet,desarrollo,web">
      <meta name="author" content="Giusseppe Domínguez">
    	<title>Servidores de Desarrollo de Giusseppe Domínguez</title>
      <link rel="shortcut icon" href="http://giusseppe.net/img/gsp.ico">
      <link rel="stylesheet" href="http://giusseppe.net/estilos/gsp.css" type="text/css">
    </head>
    <body>
    
    <h1>Mi IP es $MIIP</h1><hr>
    
    <ul>
    <li><a href="ftp://$MIIP">Conexi&oacute;n FTP a Router USB</a></li>
    <li><a href="ftp://$MIIP:$PUERTOFTP">Conexi&oacute;n FTP a PCTACENS</a></li>
    <li><a href="ftp://$MIIP:$PUERTOFTP2">Conexi&oacute;n FTP a MOVIL</a></li>
    <li><a href="ssh://$MIIP:$PUERTOSSH">Conexi&oacute;n SSH a PCTACENS</a></li>
    </ul>
    
    <h3>Servidores Web</h3>
    <ul>PCTACENS
    <li><a href="http://$MIIP:$PUERTOHTTP">carmendelarosa.com</a></li>
    <li><a href="http://$MIIP:$PUERTOHTTP/clave53.org/">clave53.org</a></li>
    <li><a href="http://$MIIP:$PUERTOHTTP/giusseppe.net/">giusseppe.net</a></li>
    <li><a href="http://$MIIP:$PUERTOHTTP/ivanaraujo.com/">ivanaraujo.com</a></li>
    <li><a href="http://$MIIP:$PUERTOHTTP/lilianflores.com/">lilianflores.com</a></li>
    </ul>
    
    <ul>MOVIL
    <li><a href="http://$MIIP:$PUERTOHTTP1">carmendelarosa.com</a></li>
    <li><a href="http://$MIIP:$PUERTOHTTP1/clave53.org/">clave53.org</a></li>
    <li><a href="http://$MIIP:$PUERTOHTTP1/giusseppe.net/">giusseppe.net</a></li>
    <li><a href="http://$MIIP:$PUERTOHTTP1/ivanaraujo.com/">ivanaraujo.com</a> (No disponible)</li>
    <li><a href="http://$MIIP:$PUERTOHTTP1/lilianflores.com/">lilianflores.com</a></li>
    </ul>
    
    <ul>Producci&oacute;n
    <li><a href="http://www.carmendelarosa.com">carmendelarosa.com</a></li>
    <li><a href="http://www.clave53.org">clave53.org</a></li>
    <li><a href="http://www.giusseppe.net">giusseppe.net</a></li>
    <li><a href="http://www.ivanaraujo.com">ivanaraujo.com</a></li>
    <li><a href="http://www.lilianflores.com">lilianflores.com</a></li>
    </ul>
    
    </body></html>
    EOF
    # Fin del ficheroip.html
    
    # Copiamos los ficheros con datos de IP a los destinos deseados
    # (Estarán disponibles en las respectivas "nubes" Dropbox/Mega)
    for dirdestino in $dirdestinos
    do
    	cp /tmp/ficheroip.* $dirdestino/.
    done
    
  5. Este programita es programado para que su ejecución ocurra cada hora, actualizando la IP externa del router que puede haber cambiado sin previo aviso por parte de mi operadora.

Y seguiré investigando en los posibles usos que se le puede dar a dispositivos aparentemente obsoletos de los que, a medida que pase el tiempo, tendremos más y más sin ningún otro sentido que el de estar a la última.

Ya que no reducimos (el consumo), al menos reutilicemos. Llegar a reciclar ha de ser el último recurso.

Esto no es una broma