viernes, 30 de octubre de 2009

Probando NeoBux

Estoy probando el sistema NeoBux cualquiera que tenga ganas de ver si funciona (supuestamente te pagan por cada clic que realices), bueno les dejo el link por si les interesa

jueves, 23 de julio de 2009

Selenium ejemplo

Como instalar selenium en rails

ruby script/plugin install http://svn.openqa.org/svn/selenium-on-rails/selenium-on-rails

Una vez que esta instalado en nuestro proyecto debemos configurarlo, para eso debemos hacer lo siguiente copiamos el archivo que se encuentra en vendor/plugins/selenium-on-rails/ llamado config.yml.example a config/ y lo renombramos como selenium.yml. Luego lo editamos y para configurarlo seguimos los pasos que dice dentro del archivo.

Una vez que se termino de configurar, vamos a hacer un archivo de prueba, para ellos corremos el siguiente comando en la carpeta del proyecto ruby script/generate selenium login.rsel, esto nos genera una carpeta test/selenium en caso de que no exista y el archivo login.rsel, bien ahora que se puede hacer con el archivo

archivo login.rsel

setup

open "/" # => Abre el navegador en la url que se configuro en selenium.yml

assert_title "Titulo de la pagina" # => Hace el assert con respecto al titulo de la pagina

type "user_email", "usuario" # => Escribe en el input user_email el texto usuario
type "user_password", "pass" # => Escribe en el input user_password el texto pass
click "commit" # => Hace click en el commit
wait_for_page_to_load 20000 # => Espera a que se termine de cargar la pagina tiene un timeout de 20000ms

assert_title "Nuevo titulo de la pagina" # => Hace el assert con respecto al titulo de la pagina

miércoles, 22 de julio de 2009

Serializacion de elementos

Dentro de una pagina web nosotros podemos serializar algunos elementos (para hacer peticiones ajax o cualquier otra cosa que se nos ocurra).

Scriptaculus nos ofrece una manera sencilla de hacerlo, por ejemplo si queremos serializar un form Form.serialize('id_del_form'), tambien podemos serializar cualquier otro objeto que lo permita utilizando también Form.serialize('id_del_objeto') o directamente obteniendo el objeto por id y serializandolo $('id_del_objeto').serialize()

En rails esto nos sirve por ejemplo para utilizar el siguiente helper

observe_field("id_campo", :url => action_path, :update => "en caso de que quieras actualizar algo", :with => "$('objeto').serialize()")

jueves, 26 de marzo de 2009

Scroll con javascript y prototype

He escrito un script para hacer scroll con javascript, es muy sencillo de utilizar para ver ejemplos ir a la pagina http://www.assembla.com/wiki/show/dJVe6ogHur3Q7ceJe5aVNr, y para bajarlo o ver el codigo fuente ir a http://code.assembla.com/scroller/subversion/nodes

lunes, 9 de febrero de 2009

Ordenar array utilizando multiples elementos

Supongamos que tenemos un arreglo que tiene un objeto que tiene dos atributos llamados red_cards y yellow_cards (estos dos atributos son numericos), ahora lo que queremos hacer es ordenar el array primero por la cantidad de tarjetas rojas y luego por la cantidad de amarillas.

Lo podemos hacer de la siguiente manera:

array.sort! {|x, y| ((y.red_cards * 1000) + y.yellow_cards) <=> ((x.red_cards * 1000) + x.yellow_cards) }

Elegimos 1000 por que sabemos que nunca se va a tener ese numero de tarjetas.

viernes, 30 de enero de 2009

Codigo para generar un fixture de futbol (muy eficiente)

Aca les dejo un codigo que sirve para generar un fixture de futbol, de la manera mas eficiente que he visto hasta el momento.

Para genrar un fixture lo que debes hacer es DeportFixture.new(lista de cuadros).groups eso te debuelve el fixture.


class DeportFixture

def initialize(elements)
@elements = elements
@elements << nil if elements.length.odd?
@round_number = @elements.length - 1
@rounds = Array.new(@round_number, nil)
@last_element = @elements[-1]
end

def groups
fixture = Array.new(@round_number, nil)

@round_number.times do |time|
@rounds[time] ||= []

if time == 0
(@elements.length / 2).times do |element_id|
@rounds[time] << @elements[element_id]
@rounds[time] << @elements[-(element_id+1)]
end
else
previous_round = @rounds[time-1].clone
first_element, second_element = previous_round[-1], @last_element
first_element, second_element = @last_element, previous_round[-1] if time.odd?

previous_round.delete(first_element)
previous_round.delete(second_element)
previous_round.compact!

@rounds[time] << first_element
@rounds[time] << second_element

new_round_elements = []

while not previous_round.empty?
elements = previous_round.slice!(-2,2)

elements.each {|element| new_round_elements << element}
end

new_round_elements.each {|element| @rounds[time] << element}
end
end

@rounds.each_with_index do |round, index|
fixture[index] = []

(round.length / 2).times do |team|
item_1 = round[(team * 2)]
item_2 = round[(team * 2) + 1]
fixture[index] << [item_1, item_2] unless item_1.nil? or item_2.nil?
end
end

fixture
end

end

martes, 16 de diciembre de 2008

Nuevo plugin

He creado un nuevo plugin que nos ayudara a escribir codigo javascript mas claro en las vistas es bastante sencillo en realidad pero queria subirlo para los que escriben algo de codigo javascript en las vistas, la idea es utilzar el mismo helper que se utiliza en los rjs, bueno les dejo la direccion 

Wiki:


Agile Web Development:


lunes, 15 de diciembre de 2008

Ajax

Cuando necesitamos hacer cosas con ajax, existe un helper que nos facilita ciertas cosas como por ejemplo si queremos actualizar el div de un elemento por ejemplo el div con id element_5 (siendo element el modelo) podemos utilizar el helper div_for o content_tag_for en el primero simplemente le pasamos el modelo y el nos genera automaticamente un div con el id y la clase asociados a nuestro modelo y el segundo ademas de ese parametro le tenemos que pasar el elemento que deseamos generar.

Ejemplo

@post = Post.find(3)

div_for @post do
  # Contenido del div
end

luego cuando llamamos a la accion ajax acutalizamos el elemento con el id post_3 (para este ejemplo) , ya que la linea de arriba nos genera un div que tiene como id post_3 y como clase post

miércoles, 12 de noviembre de 2008

Como saber todas las rutas de un proyecto

Para conocer todas las rutas que estan definidas en el archivo de rutas y a que controller se dirige cada una basta con hacer lo siguiente:

Lo primero que debemos hacer es ir a la ruta de la aplicción en una ventana de comandos, y en ella escribimos 

rake routes 

Esto nos envia las rutas por pantalla, si las deseamos almacenar en un archivo

rake routes > "archivo.txt"


viernes, 7 de noviembre de 2008

Funciones de Strings

En este post voy a poner algunas de las funciones interesantes de los string en ruby

Dado un string

cadena = " Hola "

Para retornar el largo de una cadena

cadena.length o cadena.length() # retorna 6

Para retornar la cantidad de una letra x

cadena.count('o') # retorna 1

Para sacarle los espacios en blanco de la izquierda y derecha

cadena.strip  # retorna la cadena sin los espacios en blanco en la
# izquierda y derecha

Para concatenarle elementos a un string

numero = 5
cadena_texto "hola"
"esta es la cadena #{cadena_texto} y este es el numero #{numero}" 

# retorna la cadena "esta es la cadena hola y este es el numero 5"

Para repetir un string x veces

cadena * 5  # " Hola  Hola  Hola  Hola  Hola "

Como obtener una parte de un string

cadena[0..2]  # " Ho"

Para dar vulta un string

cadena.reverse # " aloH "

Para hacer que un string quede todo en mayuscula

cadena.upcase # " HOLA "

Para hacer que quede todo en minuscula

cadena.downcase # " hola "

Para dejarlo en la forma camel

"hola_como_andas".camelize # "HolaComoAndas"

Para volver la cadena a como se encontraba antes

"HolaComoAndas".underscore # "hola_como_andas"

Para dejar una cadena con la forma de titulo

"hola esto es un titlo" # "Hola Esto Es Un Titulo"
"titlo-subtitulo" # "Titulo Subtitulo"

Para poner en plural una palabra (por defecto solo funciona en ingles, si queres que funcione en español hay que tocar el archivo inflections.rb)

"user".pluralize  # "users"

Para poner en singular una palabra (por defecto solo funciona en ingles, si queres que funcione en español hay que tocar el archivo inflections.rb)

"users".singularize # "user"