30.11.16

¿Cómo usar una vieja impresora en un ordenador moderno?

Uno de los grandes problemas que tenemos en esto de la informática es cuando tenemos viejos aparatos, confiables, que funcionan maravillosamente y que por obra y gracia de la falta de drivers específicos para las nuevas versiones de Windows tenemos que sustituir por contrapartidas más modernas y mucho menos económicas.

En mi caso, por ejemplo, tengo una venerable HP Laserjet 1000 que estaba aparcada desde hacía varios años porque no necesitaba imprimir gran cosa y para el uso, una vez acabado el tóner, me resultaba más rentable ir a una copistería.

Pero un día me tropiezo con ella y decido volver a ponerla en marcha. No hay drivers para ella desde Windows XP y en los tiempos que corren es un poco peligroso seguir con esa versión.

¿Cómo hacer entonces?


La primera opción sería buscar drivers de terceros para esta máquina. No es algo frecuente, pero para ciertos hardwares populaers puede ocurrir. En este caso di con uno de solvusoft, pero su aire a teletienda y varias técnicas de publicidad agresivas en su web me dieron tan mala espina que decidí no seguir adelante. No sé si es una estafa o no, pero tampoco voy a correr el riesgo.


Otra opción sería probar suerte con un driver antiguo y esperar que sea compatible. A veces pasa, pero dado que el último driver para la Laserjet es para la version 32 bits de XP tampoco parece buena opción.


¿Qué nos queda?

La respuesta es sencilla: utilizar una máquina virtual.

Una buena opción es instalar Virtual Box y bajarse unas máquinas virtuales de Windows XP que Microsoft puso a disposición hace unos años y que aunque ya no están en su web sí que son relativamente sencillas de encontrar en otros sitios, como aquí.

Así que se trata de arrancar esa máquina virtual y configurarla. Para ello, una vez instalado VirtualBox bastará con hacer un doble click sobre el fichero de la máquina virtual, importarla y una vez arrancada ir a Dispositivos / Red / Conectado a / Adaptador puente / Tu tarjeta de red (en mi caso una Realtek). Eso te permite tener la máquina virtual como "otro" equipo de tu red local.


Lo ideal sería poder utilizar la impresora en red, pero desgraciadamente siempre te va a pedir los drivers para instalarla en tu equipo. Para el caso de Windows 10 no conseguí encontrar ningún driver que funcionase, probando con otras impresoras de la serie 1000 que sí están disponibles.

No he probado a poner una MV Linux, pero posiblemente sea necesario también instalar los drivers en local y no estoy muy seguro de que el driver de HP siga funcionando en versiones más modernas de ese sistema operativo. Opté por XP por la disponibilidad de máquinas virtuales "legales" sin demasiado trabajo de configuración por medio.

No es la solución perfecta, cómoda o ideal, pero hace el trabajo. Si algún día doy con una forma mejor de hacerlo actualizaré esta entrada

9.10.16

Laravel: configurando la máquina Homestead desde Windows

Una de las cosas que más me fastidian de los manuales es cuando dan por supuesto que todo el mundo sabe lo suficiente como para no necesitar manuales y omiten pasos.

Algo así es lo que me pasó a la hora de configurar el entorno Vagrant para trabajar con Laravel. Así que como nota personal y antes de que me olvide apunto esto por aquí y tal vez sirva a alguna gente más.

Partimos de la base del manual oficial y sobre ella os comento las dificultades que he ido encontrando y cómo las he solucionado.

En primer lugar, para instalar el entorno oficial de desarrollo llamado Homestead vamos a necesitar algunas cosillas.


Software necesario

Homestead es una máquina virtual que han compilado los responsables de Laravel y es, en teoría, la mejor forma de desarrollar. Se trata de máquinas fácilmente desechables y reconstruibles en un momento si algo fallase. Esta máquina virtual se configura a partir del entorno Vagrant.

Otro software que es necesario es la última versión de Virtualbox. Vagrant descargará despues un disco duro virtual desde los servidores de Laravel y a partir de él configurará la máquina virtual. No tenéis que crearla con Virtualbox. De hecho, para generar la máquina y utilizarla no es necesario arrancar Virtualbox en ningún momento. Vagrant se ocupa de todo.

Para poder conectarnos a esta MV vamos a requerir de la generación de claves SSH. Esto no va a ser posible desde la mayor parte de los sistemas Windows. Para ello vamos a descargar una herramienta llamada GitBash, que usaremos además para otras cosas. El manual en ningún momento te habla de ella, pero asume que la tienes y que sabes usarla.

Una vez instalados estos tres productos pasamos a la instalación propiamente dicha.


Bajando el entorno Homestead

Vamos a abrir una consola de windows pulsando inicio y escribiendo cmd. Debes asegurarte de estar posicionado en c:\users\tuusuario. Desde allí ejecutamos

vagrant box add laravel/homestead

Este comando hará que Vagrant se conecte a sus repositorios y comience a bajarse el disco duro virtual y algunos otros archivos necesarios. No hace falta que diga que es necesario tener conexión a internet. Con una conexión lenta va a tardar mucho ya que se baja algo más de un giga de datos. Aunque no es necesario que lo sepais la máquina se descarga en esta ruta: C:\Users\tuusuario\.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead\0.5.0\virtualbox.


Instalando Homestead

Una vez bajado hay que instalarlo.

Entramos en GitBash y nos vamos a nuestro directorio home (en windows C:\users\tusuario) y clonamos el repositorio Homestead

cd ~

git clone https://github.com/laravel/homestead.git Homestead

Nuevamente descargará datos, pero no será un proceso tan lento como el anterior. Una vez termina la descarga entramos en el directorio Homestead y lanzamos init.sh. Este script va a generar un fichero llamado VagrantFile que luego modificaremos y un homestead.yaml que necesitaremos configurar.

cd Homestead 
bash init.sh laravel/homestead

Con esto la instalación debería estar concluida


Configurando Homestead


Aunque normalmente el fichero yaml está bien configurado hay algunas cosillas que podemos comprobar. Abrimos el fichero con nuestro editor de texto favorito (recomiendo Notepad++) en la siguiente ruta: C:\Users\tuusuario\.homestead\Homestead.yaml

Lo único que tuve que modificar del fichero fueron las rutas, que en mi caso quedaron así:


folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

Teóricamente esto debe configurar carpetas compartidas, de forma que puedas trabajar en tu equipo y sin embargo se ejecute en Homestead. Recordad que ~/Code equivale a c:\users\tuusuario\Code.

Lo siguiente es generar las claves ssh. Esta parte no aparece en el manual pero es necesario para poder conectarnos. Desde GitBash hay que utilizar el siguiente comando

ssh-keygen -t rsa -C "your@email.com"

Esto va a generar las claves que necesitamos. En mi caso las generó en el directorio desde el que lancé el comando (podéis verlo con el comando pwd) y tuve que crearme una carpeta C:\Users\tuusuario\.ssh a la que desplazar los dos ficheros generados (id_rsa y id_rsa.pub). Esta es la carpeta que espera vagrant ya que está definida en el fichero yaml

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

Ya casi está. El siguiente paso es configurar una URL, que también aparece en el fichero yaml, dentro del etchosts de windows. Se trata de editar el siguiente fichero: C:\Windows\System32\drivers\etc\hosts y añadir la línea indicada por el manual

192.168.10.10  homestead.app

Esto permitirá que luego podamos acceder a nuestra aplicación homestead.app desde el navegador.

Arranquemos la máquina con el comando desde el directorio c:\users\tuusuario\Homestead

vagrant up

 

Si lo hice todo bien, ¿por qué no funciona?


Me pasó la primera vez y resultó que el clonado del Homestead bajó una versión del repositorio que no era correcta. Las siguientes líneas corrigen parte de los problemas pero no conseguí hacer funcionar nginx. De todas formas lo dejo por si alguien se atasca en algo parecido, para que pueda avanzar algo. Al fnal pongo un ejemplo de Vagrantfile correcto.


En mi caso siguiendo el manual me conectaba vía ssh a nuestra máquina (con Putty, por ejemplo) a la dirección y puertos especificados: 127.0.0.1, puerto 2222 y usuario vagrant/vagrant. Y todo va bien

Pero cuando al conectarme a MySQL (con HeidiSQL, por ejemplo) me daba un error 10061. ¿Qué puede fallar? Había probado a configurar la conexión con usuario vagrant y contraseña secret. Había  puesto el puerto 33060 y no había manera de que la cosa funcione desde la URL 127.0.0.1 que nos indica el manual claramente.

La pista está aquí:
 
 ... 
 default: Forwarding ports...
 default: 22 (guest) to 2222 (host) (adapter 1)
 default: Booting VM...
 default: Waiting for machine to boot. This may take a few minutes...
 ... 

Como podéis ver sólo se está redireccionando el puerto SSH del 22 (dentro de la MV) a 2222 (desde fuera). Por eso funciona la conexión desde Putty.

Así que hay que modificar el VagrantFile y añadir las redirecciones que faltan. Esta es la ruta al fichero: C:\Users\tuusuario\Homestead\Vagrantfile. Buscáis "forwarded" para posicionaros en el lugar correcto y añadimos estas dos líneas.

config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 33060

Y ya que estamos, podemos ver si hay problemas con las carpetas sincronizadas. Buscamos "synced" y añadimos si falta

config.vm.synced_folder "../Code", "/home/vagrant/Code"

Si queremos hacer un reboot (será necesario para tomar en cuenta cambios en la configuración) utilizaríamos

vagrant reload

Y ahora ya vemos que la traza es diferente

 default: Forwarding ports...
    default: 80 (guest) to 8080 (host) (adapter 1)
    default: 3306 (guest) to 33060 (host) (adapter 1)
    default: 22 (guest) to 2222 (host) (adapter 1)
(...)
 default: Mounting shared folders...
    default: /vagrant to C:/Users/tuusuario/Homestead
    default: /home/vagrant/Code => C:/Users/tuusuario/Code


Si hacéis la prueba veréis que vuestras carpetas sincronizan y que HeidiSQL ya se conecta al MySQL de Homestead


Ejemplo de Vagrantfile correcto. Si algo falla hay que ver si tiene este formato. Si aparece con el formato un formato distinto probad a bajarlo de nuevo o a utilizar este como base para el vuestro.


# -*- mode: ruby -*-
# vi: set ft=ruby :

require 'json'
require 'yaml'

VAGRANTFILE_API_VERSION ||= "2"
confDir = $confDir ||= File.expand_path("~/.homestead")

homesteadYamlPath = confDir + "/Homestead.yaml"
homesteadJsonPath = confDir + "/Homestead.json"
afterScriptPath = confDir + "/after.sh"
aliasesPath = confDir + "/aliases"

require File.expand_path(File.dirname(__FILE__) + '/scripts/homestead.rb')

Vagrant.require_version '>= 1.8.4'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    if File.exist? aliasesPath then
        config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
    end

    if File.exist? homesteadYamlPath then
        settings = YAML::load(File.read(homesteadYamlPath))
    elsif File.exist? homesteadJsonPath then
        settings = JSON.parse(File.read(homesteadJsonPath))
    end

    Homestead.configure(config, settings)

    if File.exist? afterScriptPath then
        config.vm.provision "shell", path: afterScriptPath, privileged: false
    end

    if defined? VagrantPlugins::HostsUpdater
        config.hostsupdater.aliases = settings['sites'].map { |site| site['map'] }
    end
end

25.7.16

Pueblos de España con nombres raros

Después de haber atravesado España en los últimos años por carretera me he encontrado con un montón de pueblos y municipios con nombres raros.

Esta es una recopilación con algunos de ellos. Iré actualizándola porque la lista puede ser interminable

Días de la semana
  • Martes.- pueblo perteneciente al municipio del Canal de Berdún en Huesca, Aragón

Emisoras de radio
  • Cope.- Está en Murcia y pertenece al municipio de Cartagena. En Galicia hay otro, pero no recuerdo en que municipio
  • Ser.- En Galicia había una parroquia o barrio con este nombre. No recuerdo donde, pero juraría que está en el tramo de la N-550 entre Pontevedra y Padrón.

Vida social
  • Adiós.- Está en Navarra, a las afueras de Pamplona 
  • Carantoña.- Hay dos, una en Vimianzo y la otra en Lousame, ambas en Coruña
  • Cariño.- Municipio coruñés a los pies de la Serra da Capelada. Aquí se encuentran algunos de los acantilados más altos de la Europa continental, en Herbeira, y algunas de las piedras más antiguas del mundo, en Cabo Ortegal 
  • Consuegra.- Creo que hay dos, pero por internet sólo encuentro un municipio de Toledo
  • Peleas de Arriba y Peleas de Abajo.- Me encantaría saber como recibieron este nombre estos pequeños pueblos de Zamora
  • Tías.- Municipio canario de Lanzarote. Aquí pasó sus últimos años José Saramago.

Objetos
  • Avión.- Municipio ourensano famoso por el éxito de sus emigrantes a México 
  • Cenicero.- Municipio riojano de la comarca de Logroño
  • Melón.- También en Ourense, es famoso por las cascadas y pozas del río Tourón.
Oficios
  • Fiscal.- Es un municipio de Huesca, en el Sobrarbe 
  • Peón.- Está en Asturias, a orillas del Río España 
Animales
  • Jaca.- Bastante conocido ya que es la capital del Pirineo aragonés y trató de postularse como organizadora de unos Juegos Olímpicos de Invierno alguna vez. Si pasáis por allí no dejéis de visitar el Fuerte de San Pedro.
Nombres de Personas
  • Javier.- El nombre que conocemos procede de este municipio navarro, donde nació San Francisco Javier, el apóstol de las Indias. La reconstrucción del castillo merece una visita.
  • Yaiza.- Uno de los municipios más interesantes de Lanzarote, con viejos volcanes como Montaña Roja y parte de Timanfaya dentro de su territorio. También cuenta con alguno de los últimos pueblos de pescadores de la isla, como Playa Quemada
Otros
  • Ingenio.- Municipio de Gran Canaria. En su límite con Agüimes está el Barranco de Guayadeque, que merece la pena conocer 
  • Mal Nombre.- En la espectacular península de Jandía nos encontramos con este lugar, que tiene una playa muy bonita y poco conocida
  • Morro Jable.- Otro lugar de la península de Jandía, uno de sus núcleos turísticos más importantes
  • A Mezquita.- Municipio ourensano, en el límite con Zamora, en plena Serra do Xurés.
  • Sobrado dos Monxes.- En Coruña, famoso por el monasterio de Sobrado
  • Toques.- Está en A Coruña, cerquita de Melide y del monasterio de Sobrado