30 AprUn mes sin spam

Thursday, 30 April 2009 — 12:00

Llevo alrededor de un mes sin que se cuele nada de spam usando la técnica que comenté en un post anterior. La idea consiste en ocultar uno de los campos del formulario, un usuario al no verlo, no lo rellenará, un robot por su parte, no dudará ni un segundo en hacerlo.

<% form_for @comment do |f| %>
  <p>
    <%= f.label :name, t(".your_name") %>
    <%= f.text_field :name %>
  </p>
  <p>
    <%= f.label :email, t(".your_email") %>
    <%= f.text_field :email %>
  </p>
  <p>
    <%= f.label :url, t(".your_url") %>
    <%= f.text_field :url %>
  </p>
  <p>
    <%= f.label :body, t(".your_comment") %>
    <%= f.text_area :body, :rows => 5 %>
  </p>        
  <p>
    <%= submit_tag t("common.save_changes")  %>  
  </p>
<% end %>

Simplemente, hay que tener cuidado con no darle pistas, hay que evitar poner un style=“hidden”, ni nada parecido, mejor hacerlo por javascript:

$(function() {
  if ($("#new_comment").length) {  
    $("#comment_url").parent().hide();
  }
});

Efectivo y simple.

14 AprOrdenar alfabéticamente

Tuesday, 14 April 2009 — 08:00

Este es un hack que suelo usar muy a menudo en mis páginas multilenguaje, es decir que el usuario puede verlas en inglés o castellano. Imaginad que tenemos Categorías fijas en nuestra base de datos (o en un array), cuyos nombres están en inglés y queremos mostrarlas ordenadas, por ejemplo en un select de un formulario. Esto se podría hacer fácilmente con el order al hacer la consulta, pero estaríamos ordenando las palabras en inglés, no nos serviría para castellano.

Una solución sería:

Category.all.collect{|c| [I18n.t("categories.#{c.name}"), c.id] }.sort { |a,b| a[0] <=> b[0] }

Cuyo resultado será:

[["proyectos", 2], ["rails", 3], ["strands", 1]]

10 Aprvlog soporta twitter

Friday, 10 April 2009 — 16:45

He añadido una pequeña mejora en vlog, y es que cuando insertes un nuevo post, automáticamente se creará una entrada en tu Twitter, siempre y cuando tengas configurado este servicio.

04 Aprvase (very simple rails base application)

Saturday, 04 April 2009 — 19:01

Otra de las aplicaciones en las que estoy trabajando en mis ratos libre es vase. La idea es tener las funcionalidades básicas que cualquier red social pueda tener, como por ejemplo:

  • Users, registro, cambio de contraseña, envío de mails, avatar
  • Friends, sigues y te siguen, los usuarios pueden seguir la actividad de otros usuarios
  • Feeds, histórico de todo lo que hacen los usuarios (el usuario x ha cambio su avatar, el usuario x es ahora amigo de y etc.)