martes, 26 de octubre de 2010

Ruby 1.8.6 y date (ArgumentError)

Intentando instalar en mi máquina local un entorno de desarrollo con ruby ree-1.8.6 (con rvm), he tenido problemas con la clase Date.

Al intentar hacer algo como:

Date.new(1900, 2, 28)


me saltaba una excepción ArgumentError.

Bien, pues la solución es instalar dicha versión de ruby con los siguientes flags:

CFLAGS='-g -DRUBY_EXPORT -D_GNU_SOURCE=1' rvm install ree-1.8.6


¡Gracias a mi compañero Álex por la solución!

El secreto de la felicidad es tener gustos sencillos y una mente compleja, el problema es que a menudo la mente es sencilla y los gustos son complejos. -- Fernando Savater

miércoles, 20 de octubre de 2010

Listas horizontales en IE7

Otra vez tengo que pegarme con HTML y CSS. Es una cosa que no me disgusta, pero que sería mucho más fácil si todos los navegadores implementeran el estándar... pero eso sería demasiado bonito.

El problema que me ha surgido hoy es el siguiente:

Necesito diseñar una barra de iniciales. Esta barra es un elemento ul, que contiene una serie de elementos li, que a su vez contienen un enlace. Esta barra tiene que ser horizontal.

Mi HTML es éste:

<ul id="az-index-bar">
  <li>
    <a>...</a>
  </li>

  ...
</ul>


Y la primera aproximación que hice con CSS fue ésta:

ul#az-index-bar li{
  width:30px;
  display:inline-block;
}

ul#az-index-bar li a{
  display: inline-block;
  width:100%;
}


En Firefox, Opera y Chrome se veía bien, pero nuestro bendito Internet Explorer decidía que esto se tenía que ver en vertical. Así pues, investigando llegué a esta solución:

ul#az-index-bar li{
  display:inline;
}

ul#az-index-bar li a{
  display: inline-block;
  width:30px;
}



Los cambios eran muy básicos: cambiar el display del elemento li a inline, y darle el ancho al elemento a, en lugar de hacerlo al li.


Si yo pinto a mi perro exactamente como es, naturalmente tendré dos perros, pero no una obra de arte. -- Johann Wolfgang Goethe

miércoles, 18 de agosto de 2010

Los cumpleaños de tus contactos en tu Android

Después de tiempo intentando averiguar cómo podía integrar los cumpleaños de mis contactos en mi calendario de google (y así tenerlos disponibles en mi teléfono Android), por fin he dado con ello. Y es muy sencillo.

Lo único que hay que hacer es acceder a tu calendar de google y acceder a:

Configuración > Configuración de calendar > Calendarios > Explorar calendarios interesantes > Más > Eventos y cumpleaños de contactos

Recomiendo echarle un vistazo a todos los calendarios que nos ofrece google, porque hay más de uno muy interesante.

Una vez nos hayamos suscrito, ya lo tendremos en el calendario de nuestro móvil Android en cuanto lo sincronicemos.

Fácil, ¿verdad?

Pues no me queda más que agradecerle a Francisco Santos y Javier Ramírez sus indicaciones para hacer esto :-D

Aunque ellos sean cien y yo sólo uno, no significa que tengan razón. -- Albert Einstein

miércoles, 11 de agosto de 2010

Cellpadding y cellspacing en CSS

Como casi todos los días, hoy me está tocando quitar estilos inline de una maqueta en HTML y pasarlos a una hoja de estilos. Manías que tiene uno, ya veis... Y hoy, otra vez más, me he encontrado un elemento table con unos maravillosos atributos cellpadding y cellspacing, que no son propiedades de CSS. ¿Y cómo se soluciona esto? Pues aquí va la receta que he utilizado, y que me he permitido el lujo de copiar de este post y de este otro.

Cellspacing

Utiliza la propiedad CSS border-spacing

table{
   border-spacing:10px;
}


Cellpadding

Aplica la propiedad padding al td de la tabla en cuestión

table td{
  padding:10px;
}


Fácil, ¿verdad? Pues una excusa menos para utilizar atributos de estilos en vuestro código HTML.
Si el gobernante se impone por sus cualidades y mantiene el orden en armonía con las buenas costumbres, el pueblo sentirá vergüenza de actuar mal y avanzará por el camino de la virtud. -- Confucio

lunes, 9 de agosto de 2010

each_slice en ruby 1.8.6

Hoy me he encontrado con un problema al desplegar en producción con ruby 1.8.6. La aplicación cascaba porque no encontraba el método each_slice para la clase Array.

Esto en ruby 1.8.7 no da problemas, pero para que funcione en 1.8.6 hay que hacer un

require 'enumerator'

Gracias a este post, que me ha ilustrado antes de liarme a hacer cualquier burrada propia de un lunes de agosto.

Hacer preguntas es prueba de que se piensa. -- Rabindranath Tagore

lunes, 5 de julio de 2010

Instalar rvm

Estoy cambiando de equipo y, como siempre, me vuelve a tocar instalar cosas que ya había instalado anteriormente y no me acuerdo de cómo lo hice. Así que, para la próxima vez, aquí van los pasos necesarios para instalar rvm.

bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )


Puede ser que se muestre el siguiente mensaje tras la instalación:


WARNING:  you have a 'return' statement in your .bashrc, likely this will cause untold havoc.
   This means that if you see '[ -z $PS1 ] && return' then you must change this line to:
   if [[ -n $PS1 ]] ; then
     ... original content that was below the && return line ...
   fi # <= be sure to close the if.
   #EOF .bashrc
Even if you use zsh you should still adjust the .bashrc as above.
If you have any questions about this please visit #rvm on irc.freenode.net.

Installation of RVM to ~/.rvm/ is complete.


Así que se debería cambiar la línea

[ -z $PS1 ] && return



por


if [[ -n $PS1 ]] ; then


y hay que cerrar esta sentencia al final

fi



Añadir al final del .bashrc o .bashprofile la siguiente línea:

[[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm



En una nueva terminal, para que los cambios se apliquen, escribir:

type rvm | head -n1



Y se debería mostrar


rvm is a function


Con esto ya debería estar instalado rvm, y sólo quedaría instalar la versión de ruby que queramos

rvm install 1.8.7


Para seleccionar una versión de ruby con rvm

rvm 1.8.7


Para seleccionar una versión de ruby con rvm por defecto

rvm --default 1.8.7



"He notado últimamente que el miedo paranoico hacia ordenadores inteligentes tomando el control del mundo ha desaparecido totalmente. Todo lo que puedo contar es que este hecho coincide con la aparición de MS-DOS". -- Larry DeLuca

miércoles, 23 de junio de 2010

Un año de cambios

Hace algo más de un año decidí dar un cambio de aires a mi vida profesional, y creo que ha llegado el momento de hacer balance.

Todo comenzó con un twitter de un antiguo compañero de trabajo (¡gracias Félix!) avisándome de una oferta de trabajo en una empresa que trabajaba con Ruby on Rails llamada ASPgems. Y lo que en principio iba a ser un simple cambio de trabajo y tecnología (me metía de nuevas en el mundo rails) se ha acabado convirtiendo en un cambio de vida completo.

Recuerdo la entrevista que me hizo Agustín Cuenca y las cosas que me contaba acerca de la forma de trabajar en ASPgems: horario flexible, teletrabajo, confianza en el trabajador... Todo resumido en una frase tal que así
"queremos gente a la que le guste su trabajo, y entendemos que si te gusta tu trabajo, éste forma parte de tu vida diaria tanto como puede hacerlo tu ocio o tu familia. Si eres de los que quiere cumplir un horario y según sales de la puerta te desentiendes de tu vida profesional entonces éste no es tu sitio".
Desde luego, éste era un discurso que se salía de lo común, al menos en lo que respecta a las empresas en las que hasta entonces había tenido el ¿placer? de trabajar. Y en esta vida, si encuentras algo diferente, mi recomendación es cogerlo. Para hacer lo mismo que en el resto de los sitios siempre hay tiempo. Así que finalmente pasé a formar parte de la plantilla de ASPgems. No tenía ni idea de lo que esto iba a suponer.

A nivel técnico Rails me ha gustado mucho. Viniendo de java, con sus interminables ficheros de configuración y sus despliegues para probar cualquier mínimo cambio; o php, donde cada uno hacía lo que le venía en gana, Rails me enamoró desde el primer momento: convención, convención y más convención. No me considero un fanboy, pero hoy por hoy es una tecnología que me convence, y mucho. Ya veremos dentro de un tiempo. No quiero hablar aquí acerca de las virtudes o defectos de rails, que para eso hay gente que sabe mucho más, pero sí quiero destacar un gran valor añadido que le he visto en este tiempo: la comunidad que hay en este país. Con un nivel técnico altísimo y una intención pedagógica muy marcada en líneas generales, te facilitan mucho la transición desde otras tecnologías. Además, en contra del arquetipo de friki informático, esta gente se sabe divertir. Quedar con ellos implica por definición beber cerveza. Para qué voy a contar más :-D

Pero, como decía antes, este año no ha consistido únicamente en un cambio de tecnología sino en un cambio en mi forma de entender el trabajo. Y puesto que trabajamos muchas horas a lo largo de un año, este cambio se ha visto reflejado también en el resto de los aspectos de mi vida.

Mentiría si dijera que estaba totalmente confiado ante el cuadro que se pintaba ante mí. Total, estamos en España, y todos sabemos que en este país las empresas son malvadas, los trabajadores no quieren currar y si puedes escurrir el bulto (a.k.a marrón) a otro, mejor que mejor. Así que sospechaba que me podían estar vendiendo la moto. Después de un año parece ser que estaba afortunadamente equivocado.

Resulta que he ido a caer en una empresa donde las cosas se intentan hacer bien, donde al trabajador se le escucha y se le valora y donde uno tiene la sensación de que está remando en el mismo sentido que el resto de sus compañeros, y todo esto en una época no demasiado propicia para que se den estas condiciones. De una forma más o menos continua hacemos reflexiones acerca de la manera apropiada de trabajar, de detectar y corregir errores y, en definitiva, de establecer los mecanismos para hacer un buen trabajo. Y, en palabras de Javier Ramírez,
"un buen trabajo es aquél en el que la empresa está contenta, el desarrollador está contento y el cliente está contento".
Bonito, ¿verdad? ;-)

Todo esto englobado en un marco en el que prima el buen ambiente, con unos compañeros de los que siempre puedes aprender algo y de los que siempre te alegras de ver cuando entras por la puerta, o a los que echas de menos cuando un día no están. De hecho, hace tiempo que no miro el reloj para ver cuándo termina mi jornada, porque trabajar no supone un dolor ni un martirio. Ni siquiera los lunes son ya el día horroroso que solía ser anteriormente, entre otras cosas, porque los lunes y los viernes, si quieres, se trabaja desde casa. Esto me ha permitido empezar a hacer mis pinitos en la cocina, a tener la posibilidad de organizar más y mejor la casa (esto no siempre lo consigo, pero es parte de mi ser).

Y este es otro punto (puntazo) a favor. Quiénes no han tenido la sensación de que podían haberse quedado trabajando en casa en lugar de comerse un atasco, gastarse el dinero en un menú - que suele ser de todo menos saludable - para comer, volver a comerse un atasco de vuelta... Bueno, pues se puede hacer... si la empresa confía en ti. Y mi experiencia me dice que la confianza se suele devolver con confianza. Así que si estás trabajando en casa, puede que trabajes más horas que en oficina, pero la felicidad en que esto deriva hace que merezca, y mucho, la pena. Que resulta que te piden un esfuerzo, pues no te cuesta hacerlo, porque sabes que aquí sí que existe un quid pro quo.

Podría extenderme mucho más, pero creo que la idea está bastante clara. Aposté por un cambio laboral en un período un poco arriesgado y me ha salido bastante bien. Hay empresas en este país donde se intentan hacer las cosas razonablemente bien. Hay otras, en cambio, estancadas en modelos de los años 80, fruto de herencias jurásicas donde imperan figuras vampíricas intentado exprimir hasta la última gota de tus fluidos vitales, tratando así de compensar inseguridades y complejos, que seguro que Freud no dudaría en relacionar con un destete temprano. Si te sientes identificado como un trabajador de estas últimas, no lo dudes e inténtalo. Hay por ahí empresas que te están esperando.

Y ya para terminar, como diría mi mentor en ASPgems, Dani Mata, ¡salud y rock and roll!
Elige un trabajo que te guste y no tendrás que trabajar ni un día de tu vida -- Confucio