martes, 29 de abril de 2008

A tiro hecho (II)

Hoy he tenido que trastear un poquito con active_scaffold después de algún tiempo y he comprobado lo volátil que se ha vuelto mi memoria. Así que he decidido dejarme aquí la url de los parámetros de configuración de los listados.

Hoy buscaba el parámetro para cambiar el número de registros mostrados en un listado:

config.list.per_page

Salud y rocanrol!

miércoles, 23 de abril de 2008

IE6 y sus pérdidas

Una de mis aplicaciones Rails va lenta. Pero no siempre; sólo cuando navegas un buen rato. Revisé los procesos y ví que los navegadores pierden memoria. En Firefox el problema es bastante conocido. En IE6 también, pero menos.

Sin embargo, mi amiga Ana ha encontrado un par de links interesantes en la web de Microsoft:

Esta segunda es la que mejor ha funcionado. IE6 es como es, pero así no pierde memoria.

Salud y rocanrol!

martes, 8 de abril de 2008

Formularios de registro? No, gracias.

En este artículo publicado en A list apart se comenta la estrategia de intentar atraer usuarios a un servicio web dejando que éstos utilicen plenamente su funcionalidad como primera experiencia de uso y dejando el registro como algo posterior e incluso opcional. Se muestran tres ejemplos, Jumpcut, Geni y Tripit. Finalmente, el autor del artículo da cuatro recomendaciones para acercarnos a esta solución de compromiso gradual.

Salud y rocanrol.

lunes, 7 de abril de 2008

Protección contra los gérmenes

Me preguntaba hoy un amigo qué trae Rails de serie que proteja las aplicaciones contra algún mamonazo que intente enviar código malintencionado, sobre todo sql injection y html injection. Es de estas preguntas que sabes que tiene respuesta fácil, que la usas y que te deja balbuceando, pidiendo tiempo muerto para contestarla.

Contra sql injection, acceder por Active Record, como mandan los cánones o si se trata de una de esas veces en que no se puede, tener cuidado con el manejo de los parámetros.

Contra html injection, escapar cualquier información que haya entrado a través de un formulario con la función h().

Y nada más. Y nada menos.

Salud y rocanrol. Por cierto, pedazo concierto dieron los barones.

miércoles, 2 de abril de 2008

Rails es perfecto para esto

Hace un mes, un amigo me pidió ayuda para montar una web lo más rápidamente posible para gestionar los vídeos de un certámen de videoclips y sacarlos a intenet para que pudieran ser votados. El resultado es éste.

Creo que en total hemos echado menos de 30 horas de desarrollo. Hemos tirado de lo conocido: Rails 1.2.3, acts_as_autheticated, simple_captcha, control_tabs y poco más.

Por detrás hay una pequeña gestión, muy simple y que asume que el que la usa sabe lo que hace.

Para esto Rails es perfecto: aplicación pequeña, sobre la marcha, con un horizonte temporal corto y pocos recursos. Y el resultado, bajo mi punto de vista, más que razonable.

Como siempre, salud y rocanrol.

PD: hablando de rocanrol, mañana toca Barón Rojo en un garito de Tres Cantos, y yo estaré allí.,

Rotar logs en Windows

En Windows, rotar los logs de una aplicación Rails que corre bajo mongrel y mongrel_service no es trivial. Mongrel bloquea el archivo por lo que una rotación por código, asignando a RAILS_DEFAULT_LOGGER una rotación por espacio o por tiempo desemboca en un error de sistema.

La mejor opción que he encontrado ha sido la fuerza bruta, el viejo método PRR: Parar, Rotar, Rearrancar. Para parar los servicios

En consola de sistema o un archivo batch, para parar un servicio

sc stop my_service_name

Si no se puede parar por cualquier razón, se pinta un código de error por pantalla, pero no lo devuelve en ninguna variable de entorno. Pero se puede comprobar de la siguiente manera:

sc query my_service_name | find "STOPPED"
if errorlevel 1 goto :non_stopped_service


y hacer lo sea necesario en la etiqueta :non_stopped_service

Para renombrar por batch el archivo de log y añadirle, por ejemplo, la fecha

set datestr=%DATE%
set timestr=%TIME%
set timestampstr=%datestr:~6,4%%datestr:~3,2%%datestr:~0,2%%timestr:~0,2%%timestr:~3,2%
ren e:\rails_apps\my_app\log\development.log development_%timestampstr%.log

Finalmente, para arrancar un servicio

sc start my_service_name

Para comprobar el estado en que quedan los servicios, sólo hay que jugar con el comando sc.

Salud y roncanrol¡