Hace casi tres semanas que Gemma lanzó su nueva web. En ella ofrece sus servicios como consultora y analista web.
Puedo decir tantas cosas buenas de ella, que no sé por dónde empezar, y aunque no sé si es la mejor puedo asegurar que le pone toda su energía a lo que hace, que es una apasionada de su trabajo y que una vez que has trabajado con ella, no te deja indiferente: o la quieres o la adoras.
Por todo ello y por todo lo demás, tanto si tenéis la certeza de que necesitáis contar con los servicios de un analista web como si tenéis una mínima duda de que vuestra web podría hacerlo mejor, visitad su página (que, por cierto, la he hecho yo :o) y dadle un toque. Seguro que no os arrepentís.
¡Salud y rocanrol!
She's sun and rain, she's fire and ice,
a little crazy but it's nice,
and when she gets mad, you best leave her alone.
Because she'll rage just like a river,
then she'll beg you to forgive her.
She's every woman that I've ever known.
She's so New York and then L.A.
and every town along the way.
She's every place that I've never been.
She's makin love on rainy nights,
she's a stroll through Christmas lights
aAnd she's everything I want to do again.
She's anything but typical,
she's so unpredictable.
Oh but even at her worst it ain't that bad.
She's as real as real can be
and she's every fantasy.
Lord she's every lover that I've ever had!
And she's every lover that I've never had.
lunes, 17 de enero de 2011
jueves, 30 de diciembre de 2010
Reinventar la rueda
Esta última parte del año estoy muy poco rails y, sin embargo, muy javascript. Y, como no podía ser de otra forma, mi último post del año es de javascript. Corto, sencillo, conciso y útil, como debe ser nuestro javascript.
El caso es que andaba parseando fechas y viendo cómo podía sacarlas en una página en castellano viejo y me he encontrado el método toLocaleDateString() del objeto Date. Básicamente, a partir de una fecha genera un string en base a la configuración local del navegador. La referencia completa, donde siempre, en w3schools.
Y nada más, y nada menos. ¡Salud y rocanrol!
Entre la intensa bruma del castillo
se ve su figura aparecer.
Puente, jinete y la luna
con ojos atentos de mujer.
Es el héroe de paz triste y solitario,
que llega al atardecer.
Castiga brujas, duendes y villanos
que pagan con sangre su traición.
Las trompetas suenan la llegada.
La corte le recibe con honor.
La princesa le clava los ojos en el alma,
si a él no le asusta el amor.
No se inclina ante el rey ni baja la mirada.
Arrogancia avalada por valor.
Envidia y traición se esfuman con miedo.
Su mirada inspira terror.
No hay ningún loco sólo es leyenda,
todo lo cuentan en la taberna.
No hay ningún loco sólo es leyenda,
tú también tienes tu princesa
El caso es que andaba parseando fechas y viendo cómo podía sacarlas en una página en castellano viejo y me he encontrado el método toLocaleDateString() del objeto Date. Básicamente, a partir de una fecha genera un string en base a la configuración local del navegador. La referencia completa, donde siempre, en w3schools.
Y nada más, y nada menos. ¡Salud y rocanrol!
Entre la intensa bruma del castillo
se ve su figura aparecer.
Puente, jinete y la luna
con ojos atentos de mujer.
Es el héroe de paz triste y solitario,
que llega al atardecer.
Castiga brujas, duendes y villanos
que pagan con sangre su traición.
Las trompetas suenan la llegada.
La corte le recibe con honor.
La princesa le clava los ojos en el alma,
si a él no le asusta el amor.
No se inclina ante el rey ni baja la mirada.
Arrogancia avalada por valor.
Envidia y traición se esfuman con miedo.
Su mirada inspira terror.
No hay ningún loco sólo es leyenda,
todo lo cuentan en la taberna.
No hay ningún loco sólo es leyenda,
tú también tienes tu princesa
miércoles, 15 de diciembre de 2010
Alinear imágenes y textos
Lo típico que tienes una imagen en medio de una frase y no eres capaz de alinearla ni a la de trés. Pues bien, en el sitio de siempre está la solución: la propiedad vertical-align, que entre otros, puede tener los siguientes valores...
...
Una tarde en el rellano, mi vecina me gritó.
Su marido ya a empujarme. La madera apareció.
Que soy un borracho, estruendoso y peleón,
les dijeron,
y una mano de hostias allí mismo me dieron.
¡Ay! ¡Ay! ¡Ay! ¡Qué dolor!
Todas las noches canto esta triste canción.
¡Ay! ¡Ay! ¡Ay! ¡Qué dolor!
Las hostias ya me las dieron, pero tú no duermes, cabrón.
Malditos vecinos.
- top
- alineada por arriba con el elemento más alto de la línea
- text-top
- alineada por arriba con el top de la fuente la línea
- middle
- alineada al centro
- bottom
- alineada por abajo con el elemento más bajo de la línea
- text-bottom
- alineada por abajocon el bottom de la fuente la línea
...
Una tarde en el rellano, mi vecina me gritó.
Su marido ya a empujarme. La madera apareció.
Que soy un borracho, estruendoso y peleón,
les dijeron,
y una mano de hostias allí mismo me dieron.
¡Ay! ¡Ay! ¡Ay! ¡Qué dolor!
Todas las noches canto esta triste canción.
¡Ay! ¡Ay! ¡Ay! ¡Qué dolor!
Las hostias ya me las dieron, pero tú no duermes, cabrón.
Malditos vecinos.
sábado, 4 de diciembre de 2010
Deploy error I
Pasando una aplicación a producción me he encontrado con que el siguiente código me casca:
1.upto(10).map{|i| [i, i]}
Como ya nos las hemos visto con estas, con aquellas e incluso con otras más feas, lo primero es ver qué versiones tenemos de las cositas básicas, y ha cantado la gallina a la primera. En desarrollo ruby 1.8.7; en producción ruby 1.8.6 enterprise edition.
Resulta que en esa versión upto necesita un bloque por narices. Po' fueno, po' fale, po' malegro... Lo cambiamos por...
(1..10).map{|i| [i, i]}
...y a correr.
¡Salud y rocanrol!
Deja ya de joder
yo no me llamo Javier
suéltame mujer
Yo no me llamo Javier
Yo no me llamo Javier
Yo no me llamo, Javier...
¿Hola como estás?
Qué niño tan bonito
¿Cómo? ¿Que es mío?
¿Que yo soy el padre?
¿Pero esto como va a ser
si yo soy impotente?
Yo no me llamo Javier
No te quiero volver a ver
1.upto(10).map{|i| [i, i]}
Como ya nos las hemos visto con estas, con aquellas e incluso con otras más feas, lo primero es ver qué versiones tenemos de las cositas básicas, y ha cantado la gallina a la primera. En desarrollo ruby 1.8.7; en producción ruby 1.8.6 enterprise edition.
Resulta que en esa versión upto necesita un bloque por narices. Po' fueno, po' fale, po' malegro... Lo cambiamos por...
(1..10).map{|i| [i, i]}
...y a correr.
¡Salud y rocanrol!
Deja ya de joder
yo no me llamo Javier
suéltame mujer
Yo no me llamo Javier
Yo no me llamo Javier
Yo no me llamo, Javier...
¿Hola como estás?
Qué niño tan bonito
¿Cómo? ¿Que es mío?
¿Que yo soy el padre?
¿Pero esto como va a ser
si yo soy impotente?
Yo no me llamo Javier
No te quiero volver a ver
miércoles, 1 de diciembre de 2010
Bordes, que sois unos bordes
Hoy, nuevamente, me he caído de un guindo. Esta vez, trasteando con html, su hoja de estilo, una tabla y su borde.
El problema a resolver era el siguiente: dada una tabla, con su thead, su tbody, sus tr's, sus th's y sus td's, poner con css un borde de 1px a todas sus celdas.
Inmediatamente piensas en algo como
table, th, td{border: 1px solid black;}
Y claro, no cuentas con que unos bordes se suman a otros y acabas con bordes de 1px y bordes de 2px. Entonces empiezas a darle vueltas a ver cuántas clases necesitas y cómo las vas a organizar. Que si la tabla con borde, los tr's con borde arriba menos el primero, los td's y th's con borde a la derecha menos el último... ¡Madre del amor! Así que le preguntas a Google y te lleva a donde todo lo saben y te enteras que todo se resuelve con una de esas propiedades que siempre has visto y nunca has usado:
table{border-collapse:collapse;}
¡Salud y rocanrol!
Joder con el chepa, el que no bebía
y lleva en la espalda, un barril de sangría.
Por allí va el mudo, que lleva en la cabeza
un tatuaje que dice "dame otra cerveza".
Este es el baile, el baile de los sordos,
todo el mundo iba para empinar el codo.
Este es el baile de los mutilados,
aquí no bebe nadie que diga que está sano.
El manco cortaba el jamón en tacos
y con la otra mano se bebe el vino blanco.
Mirar a la sorda, la que no se entera,
gritaron "calimocho" y allí está la primera.
Al tonto llevaban a hombros por la calle
por haberse tirado a la mujer del alcalde.
Este es el baile, el baile de los sordos,
todo el mundo iba para empinar el codo.
Este es el baile de los mutilados,
aquí no bebe nadie que diga que está sano.
miércoles, 17 de noviembre de 2010
Facebook es tu amigo
Después de renegar de la integración de Facebook en mis aplicaciones por el hecho de que te obligaba a utilizar su código, he redescubierto su nuevo api REST (o cuasi-REST) y me mola.
Por ejemplo, he podido enlazar a mis amigos en Facebook desde una página cualquiera. Para ello hay que seguir los siguientes pasos:
Well the kids are all hopped up and ready to go
They're ready to go now they got their surfboards
And they're going to the discotheque Au Go Go
But she just couldn't stay she had to break away
Well New York City really has is all oh yeah, oh yeah
Sheena is a punk rocker
Sheena is a punk rocker
Sheena is a punk rocker now
Por ejemplo, he podido enlazar a mis amigos en Facebook desde una página cualquiera. Para ello hay que seguir los siguientes pasos:
- Dar de alta una aplicación en Facebook: se hace aquí. Se obtiene un CLIENT_ID, un API KEY y un API SECRET, que se pueden utilizar para muchas cositas. De hecho hay todo un sistema de autorización OAUTH disponible.
- Obtener un AccessToken: vía curl, por ejemplo, con el siguiente código...
curl -F grant_type=client_credentials -F client_id=XXXXX -F client_secret=YYYYYY https://graph.facebook.com/oauth/access_token -k
- Acceder a los datos: con las urls que te ofrece el API y que están descritas aquí. Por ejemplo, para ver mis amigos en...
https://graph.facebook.com/100000135407379/friends?access_token=XXMYACCESSTOKENYYY
- Utilizarlos convenientemente: porque el API devuelve JSON. Utilizando JQuery...
jQuery.ajax({
url: 'https://graph.facebook.com/XXMYFACEBOOKIDYYY/friends',
data: {access_token: 'XXMYACCESSTOKENYYY'},
success: function(data){...},
error: function(){},
dataType: 'jsonp'
})
Importantísimo este último parámetro. Si no se utiliza, el same origin policy hará que no se reciban datos.
Well the kids are all hopped up and ready to go
They're ready to go now they got their surfboards
And they're going to the discotheque Au Go Go
But she just couldn't stay she had to break away
Well New York City really has is all oh yeah, oh yeah
Sheena is a punk rocker
Sheena is a punk rocker
Sheena is a punk rocker now
viernes, 24 de septiembre de 2010
El detalle es el detalle
De esto que pruebas tu aplicación sobre Internet Explorer 7 y, ¡oh, tristeza!, ¡oh, dolor! se te ha escojonao el menú.
Primero juras en arameo. Luego te cagas en todo lo cagable. Mencionas a todas las deidades y santidades que se pasan por la cabeza, a la familia Gates, y a todos sus antepasados. Y terminas por echarte un cubata y ponerte a ver qué pasa.
Y te das cuenta de que donde debería haber un <br/>, ¡hay dos! Pero en mi código sólo se genera uno. ¿Quién lo pone? ¡Pero si en Firefox no sale!
El error tipico: Internet Explorer es una puta mierda y me duplica los saltos de línea. O... seguro que la última actualización de Windows lo ha roto. O incluso... seguro que esto tiene una parámetro de configuración que se pone a no y se arregla.
Y al final, la dura realidad te cae en la cabeza y te la parte en cuatro trozos. Te das cuenta que generas el salto con content_tag(:br) y un <br/> es un tag sin contenido. Y lo que se genera es <br></br> y eso es lo que el maldito Internet Explorer interpreta como dos saltos.
Y lo cambias a tag(:br) y adiós sufrimiento.
¡Salud y rocanrol!
Doctor doctor, please
Oh, the mess I'm in
Doctor doctor, please
Oh, the mess I'm in
She walked up to me
and really stole my heart
And then she started
to take my body apart
Living! Loving! I'm on the run
So far away from you
Living! Loving! I'm on the run
So far away from you
Primero juras en arameo. Luego te cagas en todo lo cagable. Mencionas a todas las deidades y santidades que se pasan por la cabeza, a la familia Gates, y a todos sus antepasados. Y terminas por echarte un cubata y ponerte a ver qué pasa.
Y te das cuenta de que donde debería haber un <br/>, ¡hay dos! Pero en mi código sólo se genera uno. ¿Quién lo pone? ¡Pero si en Firefox no sale!
El error tipico: Internet Explorer es una puta mierda y me duplica los saltos de línea. O... seguro que la última actualización de Windows lo ha roto. O incluso... seguro que esto tiene una parámetro de configuración que se pone a no y se arregla.
Y al final, la dura realidad te cae en la cabeza y te la parte en cuatro trozos. Te das cuenta que generas el salto con content_tag(:br) y un <br/> es un tag sin contenido. Y lo que se genera es <br></br> y eso es lo que el maldito Internet Explorer interpreta como dos saltos.
Y lo cambias a tag(:br) y adiós sufrimiento.
¡Salud y rocanrol!
Doctor doctor, please
Oh, the mess I'm in
Doctor doctor, please
Oh, the mess I'm in
She walked up to me
and really stole my heart
And then she started
to take my body apart
Living! Loving! I'm on the run
So far away from you
Living! Loving! I'm on the run
So far away from you
domingo, 19 de septiembre de 2010
Cómo utilizar Putty en Windows para acceder por OpenSSH
Después de dar mil vueltas, por fin he conseguido configurar mi acceso a servidores Lynux con mi clave pública. Y todo lo he encontrado aquí.
En resumen:
- generar un par de claves (pública y privada)
- poner la clave pública entre las claves aceptadas en el servidor
- generar una clave privada manejable por putty a través de puttyGen
- configurar un acceso seguro
If you're feeling down depressed and lonely
I know a place where we can go
22 Acacia Avenue meet a lady that I know
So if you're looking for a good time
And you're prepared to pay the price
Fifteen quid is all she asks for
Everybody's got their vice
jueves, 5 de agosto de 2010
Subversión, TortoiseSVN y Windows Vista
Una recomendación de última hora antes de irnos de vacaciones. Si tienes que actualizar Tortoise para Subversión en Windows Vista, OJITO con la versión 1.6.10. Al instalarla desaparecen los menús contextuales. Con la versión 1.6.9 se arregla el estropicio.
Y ¡ya! Salud y rocanrol.
Entre mis recuerdos no puedo encontrarte
Y ando perdido en mi soledad
Y voy por las calles contando los días
Y se van pasando sólo y sin ti
Yo le pido al tiempo que me diga algo
Y que en el silencio escuche tu voz
Y pasan las horas y no escucho nada
Tan sólo me queda un poco de amor
Sigo caminando entre multitudes
Como lo hacen tantos en la soledad
No pretendo nada, nada pueden darme
Solo tu mirada me haría feliz
miércoles, 7 de julio de 2010
Rails 3: rutas
En ASPgems hemos hecho una presentación conjunta sobre Rails 3 para, entre todos, conocer un poco mejor todos los cambios que trae. Mi trocito habla de rutas. Toda la información se puede encontrar en las Rails Guides.
Mi presentación:
Salud y rocanrol
Cogieron a la Jacinta, la moza de mejor pinta,
y en la misma plazoleta la pusieron en porretas
y la echaron al pilón sin mayor vacilación.
Luego fue una comitiva a Villatripas de arriba
a decirles que bajaran, miraran y compararan.
Comparando las dos Venus, cual es más y cual es menos...
Excepto algún poetastro que alabó a la de alabastro
y el pelma de don Simón que de un vuelo fue al pilón,
se oyó gritar al compás: - ¡La Jacinta mucho más! ¡La Jacinta mucho más! -
Y con grandiosa vehemencia añadió la concurrencia,
sobre todo los varones, que en lo tocante a erecciones,
la Jacinta en el pilón matarile, rile, ron.
Suscribirse a:
Entradas (Atom)