martes, 30 de abril de 2013

coneccion a mysql con ruby

Usando ruby-1.9.3 y jruby-1.7.3 respectivamente
Con esta configuración se acepta utf-8, tildes, 'ñ', etc.
# encoding: utf-8
require "rubygems"
require "mysql"
begin
#con = Mysql.new 'localhost', 'user', 'password', 'library'
con = Mysql.init
con.options(Mysql::SET_CHARSET_NAME, 'utf8')
con.real_connect('localhost', 'user', 'password', 'library')
con.query("SET NAMES utf8")
rs = con.query("SELECT * FROM Books")
n_rows = rs.num_rows
puts "There are #{n_rows} rows in the result set"
n_rows.times do
puts rs.fetch_row.join("\s")
end
# prepare statement
pst = con.prepare "INSERT INTO Books (title, isbn, desc) VALUES (?, ?, ?, ?)"
pst.execute("A Song of Ice and Fire", "0-553-10663-5", "Lorem ipsum est laborum")
rescue Mysql::Error => e
puts e.errno
puts e.error
ensure
con.close if con
end
view raw mysql.rb hosted with ❤ by GitHub
# encoding: utf-8
require 'jdbc/mysql'
require 'java'
Jdbc::MySQL.load_driver(:require) if Jdbc::MySQL.respond_to?(:load_driver)
mydb = "library"
userurl = "jdbc:mysql://localhost/#{mydb}?characterSetResults=UTF-8&characterEncoding=UTF-8&useUnicode=yes"
con = java.sql.DriverManager.get_connection(userurl, 'user', 'password')
stmt = con.create_statement
stmt.execute_query("SET NAMES 'utf8'")
stmt.execute_query("SET CHARACTER SET 'utf8'")
# same as java
rs = stmt.execute_query("SELECT * FROM Books WHERE id=1")
rs.next
p rs.getString "title"
p rs.getString 3
stmt.execute("INSERT INTO Books (title, isbn, desc)
VALUES ('A Storm of Swords', '0-553-10663-4', 'Lorem ipsum dolor sit')"
view raw mysql_jruby.rb hosted with ❤ by GitHub


Caracteres especiales deben ser escapados

jueves, 29 de noviembre de 2012

Llenando una encuesta en google docs

Este es un script en ruby para llenar encuestas de opcion unica o multiple, usando la gema mechanize.
require 'mechanize'
def rand_array tam # array random de 0 y 1
num = Proc.new{ rand(100)%2 }
ans = Array.new(tam, &num)
end
100.times do # submit 100 encuestas
agent = Mechanize.new
page = agent.get "http://goo.gl/pJjx6" # Encuesta en google docs
############## Checkboxes y Radiobuttons ########
check_names = page.form.checkboxes.collect{ |c| c.name}.uniq
check_names.each do |name|
boxes = page.form.checkboxes_with(name) # opciones de una preg
numbers = rand_array boxes.length
numbers.each_with_index{|i, index| boxes[index].check if i==1 }# marcando, opcion multiple
end
radio_names = page.form.radiobuttons.collect{ |r| r.name}.uniq
radio_names.each do |name|
radios = page.form.radiobuttons_with(name) # opciones de una preg
number = rand radios.length
page.form.radiobuttons_with(name)[number].check # marcando, opcion unica
end
#################################################
page.form.click_button # submit encuesta
agent = nil
end
view raw filling_poll.rb hosted with ❤ by GitHub

lunes, 5 de marzo de 2012

Kata String Calculator

Tdd kata usando ruby y rspec

Specs en osherove.com/tdd-kata-1

require "sum"
require "spec_helper.rb" # rspec -i
describe 'suma' do
before(:each) do
@sum = Sum.new # Para no hacer sum = Sum.new en cada spec
end
it 'Sumar cadena vacia' do
@sum.add("").should eq(0)
end
it 'Sumar un numero' do
@sum.add("2").should eq(2)
end
it 'Sumar dos numeros' do
@sum.add("2,3").should eq(5)
end
it 'Sumar varios numeros caso 1' do
@sum.add("2,3,5").should == 10
end
it 'Sumar varios numeros caso 1' do
@sum.add("0,3,5,8,1").should == 17
end
it 'Sumar varios numeros caso 3 con delimitador "\n" ' do
@sum.add('1,3\n4,1').should == 9
end
it 'Sumar varios numeros con un diferente delimitador' do
@sum.add('//;\n2;3;5').should == 10
end
it 'Sumar numeros negativos' do
@sum.add('//;\n2;1;-3;-5').should == "negatives not allowed -3 -5"
end
it 'Ignorar numeros > 1000' do
@sum.add('//;\n2;1000;1;2').should == 1005
end
it 'Ignorar numeros > 1000' do
@sum.add('//;\n2;1001;1;2').should == 5
end
it 'Un delimitador con varios caracteres' do
@sum.add('//[***]\n1***2***3').should == 6
end
it 'Muchos delimitadores de un caracter' do
@sum.add('//[*][^]\n1*2^3').should == 6
end
it 'Muchos delimitadores con varios caracteres' do
@sum.add('//[*(*][^)^]\n1*(*2^)^3').should == 6
end
end
view raw add_spec.rb hosted with ❤ by GitHub
class Sum
def add x
del = getDelimitador (x)
suma = 0
#num = x.gsub('\n',del).split(del)
num = mySplit( del, x)
msj = error_message(num)
if (msj != "")
return msj
end
num.each do |n|
suma += n.to_i unless n.to_i > 1000
puts n
end
suma
end
def mySplit( del, x)
temp = ','
#x.gsub!('\n', temp)
del << '\n'
del.each do |d|
x.gsub!(d, temp)
end
x.split(temp)
end
def getDelimitador cadena
del = [',']
if cadena.size > 2 && ( cadena[0..1] == "//")
del << cadena[2]
abierto, cerrado = cadena.index('['), cadena.index(']')
while abierto != nil && cerrado != nil
del << cadena[(abierto + 1)..(cerrado - 1)]
cadena[abierto..cerrado] = ""
abierto, cerrado = cadena.index('['), cadena.index(']')
end
end
del
end
def error_message num
message1 , message2 = "negatives not allowed", ""
num.each do |n|
if n.to_i < 0
message2 = message2 + " " + n
end
end
if message2 != ""
return message1 + message2
end
""
end
end
view raw sum.rb hosted with ❤ by GitHub

lunes, 31 de octubre de 2011

Listando amigos en Fb/apps con php

<?php
require 'facebook.php'
$friends = $facebook->api('/me/friends');
echo "<ul>";
foreach ($friends['data'] as $friend)
{
echo "<li><a target = '_blank' href= http://www.facebook.com/profile.php?id=" . $friend['id'] . //f' url
"><img src='http://graph.facebook.com/" . $friend['id'] . "/picture'/></a>". $friend['name'] . // pic&name
"<br/></li>";
}
echo "</ul>";
?>
view raw index.php hosted with ❤ by GitHub

Black Pearl

sábado, 2 de julio de 2011

Rake Tutorial

directory "tmp"
file "tmp/hello.tmp" => "tmp" do
sh "echo 'Hello' > 'tmp/hello.tmp'"
end
task :default => 'morning:turn_off_alarm'
namespace :morning do
desc "Turn off alarm."
task :turn_off_alarm do
puts "Turned off alarm. Would have liked 5 more minutes, though."
end
desc "Take care of normal hygeine tasks."
task :groom_myself do
puts "Brushed teeth."
puts "Showered."
puts "Shaved."
end
desc "Make coffee"
task :make_coffee do
cups = ENV["COFFEE_CUPS"] || 2
puts "Made #{cups} cups of coffee. Shakes are gone."
end
desc "Walk the dog"
task :walk_dog do
puts "Dog walked."
end
desc "Get ready for the day"
task :ready_for_the_day => [:turn_off_alarm, :groom_myself, :make_coffee, :walk_dog] do
puts "Ready for the day!"
end
end
namespace :morning do
task :groom_myself do
puts "Styled hair."
end
end
namespace :afternoon do
desc "Make afternoon coffee"
task :make_coffee do
Rake::Task['morning:make_coffee'].invoke
puts "Ready for the rest of the day!"
end
end
view raw Rakefile hosted with ❤ by GitHub

Fuente

sábado, 7 de marzo de 2009

deviantART mucho mas que fondos de escritorio

deviantART no es el tipico lugar al que uno sube sus imagenes para la descarga, es mucho mas , esta es una comunidad en la que artistas publican sus trabajos y se someten a los comentarios de cualquier usuario registrado y tambien el de otros artistas.



deviantART está abierto para todos. Para entrar es necesario crearse una cuenta de “deviante” o identidad artística, y empezar a enviar trabajos “deviaciones” o deviations. Cada usuario tendra su propia pagina en donde podra mostrar sus trabajos, que van desde fotografias, arte digital, literatura, flashes, etc, cada usuario ademas de contar con su galeria personal tiene otra de favoritos en la cual puede coleccionar obras de otros artistas.

Algo que se debe tener en cuenta, si se quiere participar en esta comunidad es:

Esta web no es photobucket, flickr ni nada parecido.

Un screenshot NO debe ir aqui.

Abstenerse de subir material al que no corresponde vuestra autoria.

Es decir simplemente respetemos el trabajo de los que hacen arte, comentemos y apoyemos sus trabajos, quien no quisiera tener la mitad de la creatividad que poseen estos artistas. Tambien deviantART cuenta con un blog en español donde se comentan los trabajos de artistas latinos: noticiasda

jueves, 5 de febrero de 2009

Spanglish

Para todos los extranjeros que alguna vez intentaron aprender el español, pero se les hace muy dificil pronunciar correctamente, pues he aqui la solucion.

Boy as n r = voy a cenar = I’m gonna have a dinner
N L C John = en el sillón = on the armchair
Be a hope and son = viejo panzón = fat old man
S toy tree stone = estoy triston = I’m kind a sad.
Lost trap eat toss = los trapitos = the little rags
Desk can saw = descanso = rest.
As say toon as = aceitunas = olives.
The head the star mall less stan dough = deje de estar molestando = stop bugging me.
See eye = si hay = yes we have
T n s free o? = ¿tienes frío? = are you cold?
10 go free o = tengo frío = I’m cold
Tell o boy ah the sir = Te lo voy a decir = I’m going to tell you
Who and see to = Juancito = Little John

Gracias a atormentado