jueves, 21 de febrero de 2008

CSS en Sitepoint

En Sitepoint acaban de sacar esta referencia que parece bastante completa. Hay un listado alfabético de propiedades para ir a tiro hecho y hasta una página de hacks que nostá mal como comienzo.

En otro orden de cosas y perdón por la expresión, me cago aquí y ahora en los puñeteros charsets. Luego mexplico.

Salud¡

jueves, 14 de febrero de 2008

Más SEO

En su newsletter para empresas, Microsoft también ofrece una serie de indicaciones para que tu site le guste más a los buscadores. Más de lo mismo, explicado en detalle: que si enlaces bien puestos, que si urls únicas, que nada de popups ni frames... en fin, un poquito de sentido común más una pizca de conocimiento.

Salud¡

miércoles, 13 de febrero de 2008

Mongrel service

Levantar un servidor mongrel como servicio de Windows es un dolor hasta que leyendo leyendo... llegamos aquí. Con mongrel_service es prácticamente trivial:
  • instalamos la gema (que por cierto depende de win32-service)
  • gem install mongrel_service
  • y creamos el servicio
  • mongrel_rails service::install -N app3000 -c c:\rails_apps\app -p 3000 -e production
En la URL original se indica cómo arrancarlo, cómo pararlo, cómo eliminarlo y cómo cambiar sus propiedades (dependencias, tipo de servicio...).

Si además instalamos algún servidor web que permita balancear carga, como Apache con mod_proxy, podemos levantar tantos servicios como deseemos y dejarlos enganchados al servidor web de manera sencilla. Pero eso, otro día.

Salud¡

SEO - resumen

Antier (que diría mi abuela) publicaron en este blog un resumen de cosillas a tener en cuenta para que tu web se posicione razonablemente en los buscadores más usados. Lo de siempre: sitemap.xml, herramientas propias de cada buscador para dar a conocer tus páginas y, sobre todo, sentido común.

Salud¡

sábado, 9 de febrero de 2008

Otro lapsus: Güindous Libre¡

Está disponible hace años pero desconocía WinLibre. Es una aplicación libre para descargar todo tipo de programas libres para güindous(que no es libre).

Vale, la mayor parte de las aplicaciones que ofrece son las que todos conocemos, pero está bien tenerlas todas a mano y que te puedas olvidar de estar pendiente de actualizaciones. Habrá que echarle un ojo, no?

Salud¡

jueves, 7 de febrero de 2008

Lapsus

No entiendo como en 12 años no he visto esto en ningún sitio. Primero picaba una css por cada navegador y por javascript cargábamos la que se ajustase mejor. Luego decidí que eso de ajustar al pixel las páginas para todos los navegadores es una idiotez y que basta con que su aspecto sea razonable (mi listón está bastante alto, aviso). Y ahora veo esto.

Con estos estilos

.ie .example {background-color: yellow}
.ie7 .example {background-color: orange}
.gecko .example {background-color: gray}
.win.gecko .example {background-color: red}
.linux.gecko .example {background-color: pink}
.opera .example {background-color: green}


conseguimos ajustar las propiedades para cada navegador.

La referencia completa está aquí.

Vivir para ver, Liborio¡ Vivir para ver¡

miércoles, 6 de febrero de 2008

Tócala otra vez, Sam

... y va Sam (songerize.com) y la toca.

Con un campo para meter cuatro palabras de la letra que te suenan de la canción que no te acuerdas, sería la booooooomba¡

lunes, 4 de febrero de 2008

GRUFF: una pega

Trasteando con GRUFF me he encontrado pintando 4 ó 5 gráficas y teniendo que acortar las leyendas de cada una de ellas para que no se me salieran de la imagen. Y es que no está muy bien resuelto este tema.

Como solución intermedia e inmediata, por una parte le he pasado las leyendas con saltos de línea '\n' y por otra he cambiado un par de líneas de la librería, para que se dé cuenta que a un string cuando le pones saltos pierde anchura.

base.rb versión 0.2.9

cambiamos

698 metrics = @d.get_type_metrics(@base_image, @legend_labels.join(''))

por

698 temp_legend_labels = @legend_labels.map{|l| l.split('\n').sort {|x,y| y.size <=> x.size }[0]}
699 metrics = @d.get_type_metrics(@base_image, temp_legend_labels.join(''))


y

738 metrics = @d.get_type_metrics(@base_image, temp_legend_labels[index].to_s)

por

738 metrics = @d.get_type_metrics(@base_image, legend_label.to_s)

Y listo para jugar.

viernes, 25 de enero de 2008

CURL

A un ventanero como yo, siempre le cuesta un poquito más terminar de instalar todo este tipo de aplicaciones, librerías y programas opensource. Claro que... igual soy yo¡

Hoy he tenido que instalarme CURL para poder probar una aplicación que ofrece servicios al estilo REST vía HTTP. Y, no es que haya sido difícil, pero sí que es cierto que no se hace en un paso, si no en dos.

Lo primero es instalar CURL de aquí. Eliges lo que más te convenga y listo. Pero con eso no basta. Hay que instalar también las librerías de OpenSSL, por ejemplo, de aquí o de aquí si prefieres tener los fuentes.

Y ya.

lunes, 7 de enero de 2008

De momento, GRUFF

He estado mirando por ahí con qué pintar las gráficas de una de mis aplicaciones y no he enconrado nada que mejore GRUFF.

  • Es fácil de instalar puesto que sólo necesita RMagick (también ImageMagick si eres ventanero como yo (sí, ventanero, que pasa?))
  • Es fácil de usar, como se ve en el ejemplo original

    require 'rubygems'
    require 'gruff'

    g = Gruff::Line.new
    g.title = "My Graph"
    g.data("Apples", [1, 2, 3, 4, 4, 3])
    g.data("Oranges", [4, 8, 7, 9, 8, 9])
    g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
    g.write('my_fruity_graph.png')


  • Y el fácil de tunear, por ejemplo

    #tamaño de gráfico
    g = Gruff::Line.new ('450x250')

    #colores y fuentes
    g.theme = {
      :colors => ['#638AA5', '#E9C904', '#000066', '#B4B4B4'],
      :font_color => '#000000',
      :font_size => 12,
      :marker_color => '#dddddd',
      :background_colors => ['#ffffff', '#ffffff'],
    }
    g.font = File.expand_path('artwork/fonts/VeraBd.ttf', RAILS_ROOT)
    g.legend_font_size = 13
    g.marker_font_size = 13
    g.legend_box_size = 13

    #qué se ve y qué no
    g.hide_title = true
    g.hide_legend = true

    #enviar el grafico online
    send_data(g.to_blob, :disposition => 'inline', :type => 'image/png', :filename => "gruff.png")
    ....
Sigo mirando en Rubyforge por si acaso...