rescue true

11 abril, 2011

Instalando una impresora Canon MG5150 en Ubuntu

Archivado en: Linux — xurdekio @ 9:32 pm
Tags: , , , , ,

Estos días de atrás se murio mi vieja HP así que tocó pasarse por MediaMarkt y hacerse con una Canon MG5150 por 89€. Es una multifuncional con copia sin necesidad de ordenador, impresión por doble cara automática, carga del papel por cartucho inferior.. lo único que se echa en falta en la conexión por WiFi.

Canon suele tener bastante en cuenta a los usuarios de Linux así que no ha sido complicado instalarla, de todas formas aquí os detallo el proceso:

  • Ir a la página de los drivers de Canon y descargarse los oportunos para Linux aquí
  • Descomprimir el archivo, y dentro del mismo descomprimir también el fichero cnijfilter-mg5100series-X.XX-1-deb.tar.gz
  • Navegar hasta cnijfilter-mg5100series-3.40-1-deb/packages e instalar los paquetes common y mg5100 series oportunos con tu sistema
  • Ahora nos vamos a Sistema -> Administracion -> Impresion y hacemos click en Añadir
  • Elegimos si la impresora esta conectada a nuestro pc o en red (en mi caso estaba compartida desde un equipo con Windows XP así que elegí impresora compartida por Samba)
  • En la siguiente pantalla elegimos usar el archivo PPD y navegamos a /usr/share/cups/model/canonmp5100.ppd
  • Hacemos click en siguiente y ya tenemos nuestra impresora lista para usar!

Espero que os sea de utilidad!

24 mayo, 2010

Ejecutar tareas no periodicas en segundo plano

Archivado en: Linux,Ruby on Rails,Tips&Tricks — xurdekio @ 7:51 am
Tags: , , , ,

En muchas ocasiones nuestras aplicaciones necesitaran hacer tareas que tarden bastante tiempo en dar respuesta y esto provocará que el servidor nos devuelva un timeout y veamos la página de error de la aplicación.
Una solución para ejecutar estas tareas es realizarlas en segundo plano, de forma que la aplicación se olvide del proceso y conteste al navegador rapidamente evitando así el dichoso timeout.
Para esto Ruby on Rails combinado con la potencia de Linux nos proporciona una magnífica herramienta que es el script/runner, que nos permite ejecutar una función cargando todo el entorno de la aplicación.

Vamos a suponer que tenemos una función Boletin.enviar, que envía boletines a todos los usuarios registrados en la web (y nuestra web es impresionante y tiene miles de usuarios). La función completa envia por lotes, tiene una cola, etcetera, con lo cual tarda bastante en ejecutarse, no podemos dejar al usuario que envía el boletín esperando respuesta.
Así pues nuestro action para enviar el boletín sera algo asi:

def enviar_boletin
  system("ruby script/runner \"Boletin.enviar\"&")
end

Con el & de unix le indicamos que se ejecute en segundo plano. Los lectores más avispados ya os habreis dado cuenta de que si el proceso padre, en este caso el hilo de ruby que está ejecutando el servidor, se muere pues tambien morirá su hijo y nunca llegaremos a terminar la tarea. Para ello otroa solucion de sistemas usando nohup

def enviar_boletin
  system("nohup ruby script/runner \"Boletin.enviar\"&")
end

Y por ultimo, ¿qué ocurre si queremos pasarle argumentos a la función? pues se los pasamos como si fuese una funcion normal:

def enviar_boletin
  from = "nuestro_email@nuestrodominio.es"
  system("nohup ruby script/runner \"Boletin.enviar('#{from}')\" &")
end

Espero que os sea tan util como me ha sido a mi en varios proyectos de gran envergadura.

Tema Rubric. Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.