attachment_fu s3 uploads with backgroundjob

Publicado por jorge

Thanks to Jon Guymon for his article bj-makes-attachment_fu-happy that really help me solve a problem I was having with mongrel.

Attachment_fu + s3 sometimes do very weird things that makes mongrel to freeze. After a lot of googling I realize that the best solution to avoid problems was to do the uploads to S3 in a background proccess apart from mongrel.

I started with Jon Guymon approach and it worked well but i needed to create thumbnails and the local files to be deleted after the uploading to S3 was finished.

Just changing the part of attachment_fu that actually uploads the file to S3 do the trick.

Open vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/s3_backend.rb and change the method save_to_storage to background the uploads.

This is the original method:

def save_to_storage
   if save_attachment?
     S3Object.store(
     full_filename,
     (temp_path ? File.open(temp_path) : temp_data),
     bucket_name,
     :content_type => content_type,
     :access => attachment_options[:s3_access]
     )
     @old_filename = nil
     true
   end
end

In my version I copy the file to a temporary directory in tmp/s3uploads (just to make sure the file does not disappear) then I add the upload task to the background queue

def save_to_storage
   if save_attachment?
    my_temp_file = RAILS_ROOT+'/tmp/s3uploading/'+"#{rand Time.now.to_i}#{filename || 'attachment'}"

     if temp_path
     File.open(my_temp_file,"w+") do |tmp|
     tmp.close
     FileUtils.cp temp_path, tmp.path
     end
     else
     File.open(my_temp_file, "w+") do |tmp|
     tmp.binmode
     tmp.write temp_data
     tmp.close
     end
     fichero = RAILS_ROOT+'/tmp/s3uploading/' + "#{rand Time.now.to_i}#{filename || 'attachment'}"
     end
    
     Bj.submit("./script/runner ./jobs/s3_uploader.rb " +
     full_filename + " " +
     my_temp_file + " " +
     bucket_name + " " +
     content_type + " " +
     attachment_options[:s3_access].to_s
     )
     end

     @old_filename = nil
     true
  end
end

This way attachment_fu will spawn a task for every file it creates.

Now edit the file Jon Guymon created to handle the upload (jobs/s3_uploader.rb)

This is how my file looks like

Base.establish_connection!(:access_key_id => ACCESS_KEY,
:secret_access_key => SECRET_KEY)

S3Object.store(ARGV[0],
File.open(ARGV[1]),
ARGV[2],
:content_type => ARGV[3],
:access => ARGV[4]
)

File.delete(ARGV[1])

A simple upload to S3 and after finishing it I delete the temporary file created in tmp/s3uploads/

So far mongrel is doing its job with no more hangs and as a side effect users can uploads their files faster.

There are a lot of pages about backgrounding tasks and a good recipe in Rails recipes 2

Si la montaña no viene a Mahoma 2

Publicado por jorge

La función rand que incluye Firebird no funciona del todo bien y me devuelve resultados que distan mucho de ser aleatorios por lo que para ordenar los resultados de una consulta no me sirve:

select * from tabla order by rand()

Solución: dejar que la base de datos haga lo que mejor sabe hacer, devolver registros en el menor tiempo posible y emplear ruby para el orden.

resultados = find(:all, :limit => 10)
resultados.sort_by { rand }

ruby on rails firebird y problemas con insert

Publicado por jorge

He descargado la última versión del firebird-adapter desde gems.rubyonrails.org y cuando voy a insertar un registro me da un error diciendo que "insert is an abstract method".

Trasteando he visto que active-record-firebird-adapter-1.0.0 no tiene definido el método insert y lógicamente al heredar de abstract-record que si lo tiene pues se queja.

Realmente no se si es correcto que esto sea así pero yo lo he añadido de la siguiente forma:

def insert(sql, name = nil, pk = nil, id_value = nill, sequence_name = nill)
execute sql, name
end

Desde entonces los insert funcionan correctamente.

No estoy seguro al 100% de que esta forma sea la correcta y además me parece muy sospechoso que se hayan olvidado del método insert.. pero lo que es seguro es que haciendo esto todo funciona.

Si alguien tiene una explicación mejor que me la diga.

La usabilidad no solo está en la web

Publicado por jorge

Aunque, al menos en este blog, siempre que hablo de usabilidad la enmarco en el ámbito de la web, es evidente que existen muchas areas cotidianas donde una adecuada usabilidad de los objetos, productos, servicios, nos haría la vida mucho más fácil a todos.

Y si encima ese producto es potencialmente peligroso para la salud entonces la usabilidad adquiere una importacia enorme.

Tengo un hijo de 3 años que ha pillado un catarro, nada grave pero le han recetado un jarabe. Y leyendo el prospecto que incluye el jarabe veo que la posología dice textualmente:

De 2 a 6 años: 1mg. por kg. de peso corporal al día dividido en 4 tomas iguales
.

Y encima para complicar aun más la cosa, el vaso dosificador tiene sus medidas indicadas en mililitros mientras que la administración la indican en miligramos.

Es decir, que para saber la dosis correcta a administrar debemos:

  1. Dividir el peso entre cuatro para saber el número de miligramos por toma
  2. Seguir leyendo el resto de rangos de edades para saber que no se deben sobrepasar los 60mg al día y entre paréntesis 30ml.
  3. Ahora que ya tenemos una referencia 60mg = 30ml. podemos realizar los cálculos correspondientes y segun los miligramos obtenidos en el primer punto convertirlos a mililitros.

Evidentemente el proceso de cálculo de la dosis es innecesariamente complicado y puede llevar a errores con facilidad. Además la solución es tan simple como poner una tabla indicando la dosis adecuada en función del peso del paciente. Y sobre todo, si se indican las dosis en miligramos marcar el vaso dosificador en miligramos.

Al fin y al cabo una mala usabilidad en una web provoca usuarios descontentos pero una mala usabilidad en un medicamento puede provocar usuarios acudiendo a urgencias.

En el píe de página del prospecto pone: "Texto revisado: Junio 2001", aunque creo que ya le va haciendo falta una nueva revisión ¿no os parece?

Herramienta de colaboración

Publicado por jorge

Ya está terminado el desarrollo de la primera versión de nuestra herramienta de colaboración.

Por lo tanto ahora abrimos un periodo en el que aquellos interesados en probarla pueden enviarnos su email e iremos dando accesos a la aplicación.

El lanzamiento definitivo está previsto para el 1 de Diciembre de 2007 así que permaneced atentos a las novedades.

Para los que no la conocen os contamos que esta aplicación está pensada para aquellas empresas/personas que necesitan compartir información y/o ficheros con diversa gente dispersa geográficamente.

La aplicación se compone de cuatro herramientas:

  • Mensajería
  • Gestión de proyectos
  • Almacenamiento de ficheros
  • Envíos de emails con adjuntos voluminosos

Posicionamiento de webs inmobiliarias

Publicado por jorge

Voy a iniciar en el blog de oficinainmobiliaria.es una serie de artículos enfocados a mejorar el posicionamiento de webs inmobiliarias.
Nuestra base de trabajo será:

  • Sencilla.- Usted es experto en el sector inmobiliario, no el informático así que hablaremos en términos sencillos, buscaremos ideas asequibles y nada complicadas de llevar a la práctica.
  • Económica.- Promocionar una web (o cualquier otra cosa) con un presupuesto alto es muy sencillo. Nosotros nos vamos a centrar en formas que cuesten poco ó nada.
  • Legal.- Los métodos legales son aquellos que son aceptados y recomendados por Google (en España el 95% de las búsquedas se hacen empleando Google así que hablar de buscadores y hablar de Google es lo mismo). No todo vale a la hora de promocionar una web y Google lo tiene muy en cuenta. Si somos malos Google nos penalizará de la peor forma: eliminará nuestras páginas de sus resultados y, hagame caso, eso es muy malo.

Ya está disponible la primera entrega: introducción y objetivos

Estadísticas web

Publicado por jorge

Se habla últimamente bastante sobre el tema de las estadísticas web. Si las páginas vistas ya no es una medida fiable, si el tiempo de permanencia de los usuarios en nuestro sitio es mejor, y se discute sobre los pros y contras de cada uno.

Primero: ambas medidas, por si solas no son un indicativo fiable. Las páginas vistas no sirven si empleas ajax. El tiempo de permanencia es imposible de calcular ya que se sabe cuando entras a una web pero no cuando sales. Y mucho menos saber si a pesar de haber cargado una página realmente la has llegado a ver, que también ocurre.
Segundo: En mi opinión este tipo de medidas son perfectas para el departamento de marketing, pero poco más. Queda muy bonito decir que tienes 3 millones de usuarios únicos o que sirves 15 millones de páginas web. Muy chulo pero poco útil.

En mi opinión las preguntas que debemos hacernos sobre nuestra web son dos: ¿de donde vienen mis visitantes? ¿que hacen en mi web?.
Tenemos además la ventaja de que ambos datos son extremadamente fiables ya que es muy fácil conocer esa información.

¿De donde vienen mis visitantes?

Conocer esta información nos aportará multitud de pistas sobre nuestra web. Existen tres formas de acceder a una web: Escribiendo la dirección en nuestro navegador, a través de un enlace en otra página y desde un buscador. Dado el uso mayoritario de Google como buscador en España podemos afirmar que si la web de su empresa no recibe entre un 50-70% de las visitas desde Gooogle, su web necesita una revisión. Se está perdiendo visitantes (posibles clientes) y muchos.

Otra información a revisar constantemente son los términos de búsqueda. Cuando alguien llega a nuestra web desde un buscador podemos conocer que era lo que había consultado. No se trata de recibir muchas visitas sino de recibir visitas de calidad y sobre eso los términos de búsqueda tienen mucho que decir. Ejemplo: Imagine a la empresa de calcetines D. Beckham, puede decir que tiene 1 millón de visitantes mensuales, pero seguro que el 90% son adolescentes buscando noticias sobre su futbolista preferido y que nada más ver la web de calcetines se van a otro sitio.

Los términos de búsqueda son, además, empleados por empresa que garantizan primeras posiciones en Google en 30 días y barbaridades similares. Realmente las primeras posiciones las logran en términos secundarios y poco usados en los que es relativamente sencillo posicionarse aunque de escasa utilidad ya que nadie los emplea en sus búsquedas.

¿Que hacen los visitantes en mi web?

Otro dato absolutamente básico para conocer una web. ¿Qué páginas son las que más vén? ¿que rutas siguen los visitantes?. La mayoría de empresas suelen encargar remodelaciones de sus web sin conocer esta información por lo que es muy probable que estén mejorando secciones que no se ven o lo que es peor abandonando otras que reciben muchas visitas.

Un error muy común es pensar que los visitantes comienzan su navegación en nuestra página de inicio lo cual es totalmente erróneo. Recuerdo el caso de una inmobiliaria que nos encargo el rediseño de su web y que deseaba destacar unas viviendas que estaba construyendo para lo que había puesto un gran banner en su página de inicio. Tras tener acceso a sus estadísticas pudimos comprobar que la mayoría de visitas accedian directamente a las páginas de los inmuebles en lugar de a la página de inicio ya que estas aparecían muy bien situadas en los buscadores. Un pequeño cambio en la página de detalle de inmuebles aumentó las visitas a esa obra nueva en un 400% solo el primer mes.

Resumen

Debemos revisar las estadísticas de funcionamiento de nuestra web al menos una vez al mens. No hacerlo le supone perder clientes y dinero.

Oficinainmobiliaria: 50 días después

Publicado por jorge

Hace 50 días del lanzamiento de Oficinainmobiliaria: El servicio que permite a las agencias inmobiliarias crear su propia web y publicar sus propios inmuebles, todo gratis.

En estos 50 días nos hemos centrado en escuchar a los usuarios e intentar que el sistema les fuese útil. Es evidente que por mucho que planifiques algo siempre se quedan cosas en el tintero o das por sentado que algo se va a utilizar de una manera y luego no es así. Entre los cambios más importantes que hemos hecho destacaría dos:

  • Eliminación de la publicidad.

    En la versión inicial de oficinainmobiliaria.es existía una zona destinada a mostrar anuncios de texto y que aparecía debajo de los detalles de los inmuebles. A los usuarios esto no les gustó nada y recibimos unos cuantos mails donde nos decían que no les parecía bien que se mostrase esa publicidad. Lo escuchamos, lo analizamos y decidimos quitarla. De esta forma las webs que las inmobiliarias pueden crear son al 100% suyas y ellos deciden todo el contenido que aparece, tanto de textos como de inmuebles a publicar.

  • Uso de nuestro programa de gestión inmobiliaria.

    Otra vez recibimos emails en los que nos comentaban la doble labor que implica mantener actualizados los inmuebles en la web y en la propia oficina. Es evidente que cuando el número de inmuebles a publicar es elevado hay un doble trabajo bastante incomodo ya que todos los cambios y/o correciones que se hacen en la oficina se han de trasladar a la web. La solución para eso fue rápida y efectiva. A los usuarios registrados de oficinainmobiliaria.es les ofrecemos la posibilidad de descargar y utilizar nuestro programa de gestión inmobiliaria: Gestioninmuebles.es completamente gratis. Con el programa pueden gestionar su oficina, su cartera de inmuebles, clientes, demandas, obra nueva, informes, etc... y con un simple click de ratón actualizar la web.

De momento los inicios son prometedores ya hay más de 70 inmobiliarias y más de 12.000 inmuebles publicados. Si se mantiene este ritmo de 50/60 altas al mes podemos considerarnos más que satisfechos. Y eso que, como todo lanzamiento, la web todavía no posiciona muy bien en Google.

Mentalidad Google o mentalidad Microsoft

Publicado por jorge

En mi opinión existen hoy día dos grandes maneras de entender el negocio del software: la manera Google y la manera Microsoft.

Google entiende el software como un servicio. Crea productos útiles, que cubren las necesidades de la gente y les da acceso a ellos de forma gratuita. Una vez que la gente está usando estos productos y comprueba su utilidad puede acceder a versiones mejoradas de los mismos por una cantidad de dinero.

Google ha eliminado las dos mayores barreras de acceso que tiene un producto de software para llegar al consumidor: las licencias y las cuotas de alta.

Microsoft sigue un sistema más tradicional a la hora de distribuir sus productos: la venta de licencias.

Para emplear un producto de Microsoft debemos, primeramente, pagar una licencia de uso. Este hecho supone una gran barrera para muchos usuarios que deben pagar por algo que o bien todavía no tienen clara su utilidad o no piensan usar de forma asídua.

Si bien la venta de licencias era una buena forma de venta de software hace unos años creo que hoy día está injustificada. Gracias a Internet la distribución del software a los clientes tiene un coste muy cercano a cero. Ya no es necesario disponer de una gran red de distribución para que los usuarios tengan acceso a tus productos. El mundo entero puede tener acceso a tu software y a sus actualizaciones simplemente haciendo un click en tu web.

Es más, la mayoría de aplicaciones están siendo portadas a versiónes web que únicamente necesitan de un navegador para funcionar. El cliente no tiene que instalar ningún programa en su máquina.

Esta nueva forma de funcionar hace, a mi juicio, dificilmente justificables la venta de licencias y el cobro de cuotas de alta.

Lo que las empresas debemos hacer es procurar que el máximo número de personas empleen nuestros productos. Si los usuarios encuentran un software sencillo y útil, al que sacan rendimiento y que les ayuda en su trabajo diario, serán los primeros en solicitar servicios añadidos, aunque éstos tengan un coste.

Como estamos convencidos de que la manera Google es la correcta hemos decidido dar un cambio a nuestra política de distribución de nuestro programa de gestión inmobiliaria.

A partir de ahora los usuarios de nuestro servicio Oficinainmobiliaria.es podrán descargar el programa de forma gratuita. Rellenando nuestro formulario de registro cualquier agencia inmobiliaria o promotora dispondrá de un completo software de gestión inmobiliaria y una web personal gratis que podrá personalizar y donde publicar sus inmuebles.

Estamos seguros que aquellas que encuentren útil nuestro programa, que saquen partido a la web y que hayan podido comprobar la utilidad de lo que ofrecemos, no tendrán ningún problema en pagar por tener mayores servicios y prestaciones.

Cambios en el Buscador Inmobiliario

Publicado por jorge

Hace aproximadamente un año lanzamos la web buscador inmobiliario con una intención muy clara: evitar el uso de formularios para buscar viviendas.

La gran mayoría de webs inmobiliarias permiten consultar su oferta principalmente de dos formas: empleando un formulario donde seleccionar las características de nuestro interés o navegando sobre mapas. Todos estamos acostumbrados al manejo de formularios por lo que su uso no debe crear ninguna dificultad sin embargo muchos procesos de búsqueda de viviendas son largos, con muchos pasos y nos obligan a estár navegando constantemente adelante y atrás si queremos cambiar los parámetros de búsqueda que hemos introducido.

Pensando en que podría existir otra forma de buscar viviendas decidimos lanzar el buscador inmobiliario. Ahora un año después y habiendo comprobado el uso de la web y escuchando las críticas de los usuarios hemos rediseñado y actualizado el proceso de búsqueda.

Uno de los principales objetivos era la facilidad de uso por encima de la parte comercial del buscador. Nuestra prioridad no es lograr el mayor número de páginas vistas al mes ni lograr el mayor número de clicks en los anuncios sino hacer algo sencillo de usar. Esto nos ha permitido, por ejemplo, situar toda la publicidad de forma que no interfiera en el uso de la web y además sea claramente reconocible.
También ponemos enlaces a las webs de las inmobiliarias que publican sus viviendas ya que a pesar de que esto puede hacernos perder páginas vistas creemos que es un enlace muy cómodo y demandado por los visitantes.
Otro punto fuerte es que el usuario siempre ve resultados no se pueden seleccionar características que nos lleven a una consulta que devuelva cero resultados. Uno de los puntos más molestos para los visitantes de webs inmobiliarias es perder su tiempo rellenado un formulario para luego obtener como resultado un mensaje del tipo Lo sentimos, pero no hemos encontrado viviendas con esas características, repita la búsqueda. Esto queriamos evitarlo a toda costa.

Este es el resultado.

Objetivos

  1. Fácil de usar
  2. Diseño claro y efectivo
  3. Mínima necesidad de interacción (minimizar los clicks de ratón)
  4. Estándar y accesible

Paso 1: Selección de provincia

El visitante selecciona la provincia de la que desea ver inmuebles.
Entre paréntesis le indicamos cuantos inmuebles hay disponibles en esa provincia.
También resaltamos el punto en el que se encuentra: Paso 1 de los tres de que consta el proceso.

Paso 2: Selección de ciudad

Selección de ciudad. Forma de operar idéntica al paso 1.

Paso 3: Detalles del inmueble / Filtros adicionales

En este paso tiene lugar la mayor cantidad de acciones que puede realizar el visitante.

  • Para la ciudad seleccionada aparecen las viviendas agrupadas por tipo (pisos, chalets, apartamentos...) y entre paréntesis el número de ofertas disponibles. Pulsando sobre ellos acotaremos los resultados a ese tipo.
  • Lista de resultados: Aparecen un máximo de 15 resultados en pantalla con los datos más relevantes en columnas.
  • Pulsando en los títulos de las columnas ordenaremos los resultados por esa columna. Una nueva pulsación invierte el orden.
  • Pulsando en los valores de las columnas acotaremos también los resultados hasta ese valor. Ejemplo: Si pulsamos en un precio que tenga como valor 285.900 veremos resultados que tengan como tope ese precio. Este comportamiento es igual para zonas, habitaciones y metros.
  • Los filtros aparecen en la parte central de la pantalla y podemos desactivarlos pulsando sobre la palabra quitar.
  • Detalles del inmueble

    Mostramos aquí la información disponible del inmueble. Hemos intentado que los datos se muestren en un lenguaje cercano al empleado por la gente en lugar del típico etiqueta-valor Ejemplo: Tiene 4 habitaciones.
    Como apuntabamos antes enlazamos a la web de las inmobiliarias y a su formulario de contacto para facilitar a los visitantes el acceso a más información en caso de que ese inmueble sea de su interés.
    Proporcionamos también enlaces para volver a la consulta anterior y para solicitar más información, donde les mostramos un formulario cuyo contenido va a parar a la inmobiliaria que correspondal

    En definitiva hemos intentado crear un buscador inmobiliario distinto pero sencillo y fácil de usar. Es ahora cuando los usuarios pondrán las cosas en su sitio.

Más artículos: 1 2 3 ... 11